Skip to content

Instantly share code, notes, and snippets.

@sveitser
Last active September 7, 2018 08:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sveitser/21ca33a3801b654a7d91bb28cbec1a63 to your computer and use it in GitHub Desktop.
Save sveitser/21ca33a3801b654a7d91bb28cbec1a63 to your computer and use it in GitHub Desktop.
Was wondering about entropy of pass phrases.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Passphrase Entropy\n",
"\n",
"When picking $n$ words at random from a list of $l$ words the entropy of the resulting string is\n",
"$$S=\\log_2(l^n)=n\\log_2l\\,.$$\n",
"The entropy increases linearly with the number of chosen words $n$ but only logarithmically with the number of words in the word list $l$.\n",
"\n",
"Some numbers below.\n",
"\n",
"In practice, probably be best to use something like\n",
"\n",
"- https://github.com/ulif/diceware\n",
"- https://github.com/redacted/XKCD-password-generator\n",
"\n",
"both seem to use EFF wordlists https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases which are also \"convenient\" to use with a real dice.\n",
"\n",
"Nice table from https://www.reddit.com/r/dataisbeautiful/comments/322lbk/time_required_to_bruteforce_crack_a_password/\n",
"![hi](https://i.imgur.com/AVbdGGs.jpg)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"fatal: destination path 'english-words' already exists and is not an empty directory.\n",
"fatal: destination path 'german-wordlist' already exists and is not an empty directory.\n"
]
}
],
"source": [
"!git clone https://github.com/dwyl/english-words\n",
"!git clone https://github.com/enz/german-wordlist"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from collections import Counter\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.rcParams['lines.linewidth'] = 0\n",
"plt.rcParams['lines.marker'] = 'o'\n",
"plt.rcParams['axes.grid'] = True\n",
"\n",
"%matplotlib inline\n",
"\n",
"fnames = [\n",
" ('german', 'german-wordlist/words'),\n",
" ('english', 'english-words/words.txt'),\n",
"]\n",
"wordlists = {}\n",
"\n",
"for lang, fname in fnames:\n",
" with open(fname) as f:\n",
" wordlists[lang] = [word.strip() for word in f if len(word) <= 20]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Cumulative Word Counts\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nUzIREZGI/X+OTBrVZh3ZKAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"counts = {\n",
" lang: pd.Series(Counter(len(word) for word in words)).sort_index().cumsum()\n",
" for lang, words in wordlists.items()\n",
"}\n",
" \n",
"counts = pd.DataFrame(counts)\n",
"counts.index.name = 'word length'\n",
"counts['total'] = counts.sum(axis=1)\n",
"counts.plot();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"English has more shorter words, German more longer ones. So we should get more entropy per keystroke with english than with german."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Entropy from wordlist"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\noYQuIhIS/x8eohyGa+IPSwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"np.log2(counts).plot();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Due to the logarithm it's probably not worth it to include any words with more than 7 or so characters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Required words"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nPX3ZmAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"target_entropy = 100\n",
"\n",
"bits = np.log2(counts)\n",
"words_required = target_entropy / bits\n",
"words_required = words_required[2:15]\n",
"words_required.plot()\n",
"plt.ylabel('required words');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Can get 100 bits entropy by for instance using 6 words with up to 7 letters for English."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment