你会记住的密码。
diceware的Python项目详细描述
骰子软件
要记住的密码短语…
diceware 是遵循以下建议的密码短语生成器 Arnold G.Reinhold打开http://diceware.com。它生成密码短语 通过连接从单词列表中随机选取的单词。例如:
$ diceware MyraPend93rdSixthEagleAid
默认情况下,密码短语包含六个单词(第一个字符 大写)没有任何分隔符。你可以选择让 Diceware 在密码短语中插入特殊字符。
Diceware 支持多种随机性来源(包括现实生活 骰子)和不同的单词表(包括加密签名的 有的)
内容
- 0.9.6(2018-12-19)
- 0.9.5(2018-04-07)
- 0.9.4(2018-02-27)
- 0.9.3(2017-09-14)
- 0.9.2(2017-09-14)
- 0.9.1(2016-12-24)
- 0.9(2016-09-14)
- 0.8(2016-05-07)
- 0.7.1(2016-04-21)
- 0.7(2016-04-17)
- 0.6.1(2015-12-15)
- 0.6(2015-12-15)
- 0.5(2015-08-05)
- 0.4(2015-03-30)
- 0.3.1(2015-03-29)
- 0.3(2015-03-28)
- 0.2(2015-03-27)
- 0.1(2015-02-18)
安装
这个python包可以通过pip安装
$ pip install diceware
具体的方法取决于你您的操作系统。
用法
安装后,使用 --help 列出所有可用选项:
$ diceware --help Create a passphrase positional arguments: INFILE Input wordlist. `-' will read from stdin. optional arguments: -h, --help show this help message and exit -n NUM, --num NUM number of words to concatenate. Default: 6 -c, --caps Capitalize words. This is the default. --no-caps Turn off capitalization. -s NUM, --specials NUM Insert NUM special chars into generated word. -d DELIMITER, --delimiter DELIMITER Separate words by DELIMITER. Empty string by default. -r SOURCE, --randomsource SOURCE Get randomness from this source. Possible values: `realdice', `system'. Default: system -w NAME, --wordlist NAME Use words from this wordlist. Possible values: `en', `en_eff', `en_orig', `en_securedrop'. Wordlists are stored in the folder displayed below. Default: en_eff -v, --verbose Be verbose. Use several times for increased verbosity. --version output version information and exit. Arguments related to `realdice' randomsource: --dice-sides N Number of sides of dice. Default: 6 Wordlists are stored in <WORDLISTS-DIR>
使用 -n 您可以知道应该挑选多少单词 您的新密码短语:
$ diceware -n 1 Thud $ diceware -n 2 KnitMargo
您还可以使用diceware生成特殊字符来替换 "普通"密码短语中的字符。特殊字符数 可以使用 -s 选项( 默认值为0 )来确定生成:
$ diceware -s 2 Heroic%unkLon#DmLewJohns
这里的 "%" 和 "" 是特殊字符。
特殊字符取自以下列表:
~!#$%^&*()-=+[]\{}:;\"'<>?/0123456789
请注意,几个特殊字符可能会替换同一个原始字符 字符,导致密码短语的特殊字符数少于请求的字符数。
使用 -d 可以建议 diceware 放置分隔符字符串 在生成的单词之间:
$ diceware -d "_" Wavy_Baden_400_Whelp_Quest_Macon
默认情况下,我们使用空字符串作为分隔符,这对于 通过双击Linux系统进行复制。但其他分隔符可能 使您的密码更可读(和更安全,请参阅 安全陷阱 如下。
默认情况下,单短语单词大写,即第一个 每个字的字符都是大写的。这不一定给 更好的熵(但可防止因前缀非前缀而导致的熵损失 代码,请参见下面的安全陷阱 提高短语的可读性。
不过,您仍然可以使用 --no caps选项禁用caps
$ diceware --no-caps oceanblendbaronferrylistenvalet
这将使输入字保持不变(大写保持大写, 小写保持小写)。它并不意味着,所有输出的单词 小写(除非单词列表中的所有单词都是小写)。
由于默认的diceware列表只包含小写的术语,这里 --没有大写 实际上意味着只输出小写,这可能更容易 在智能手机和类似设备上输入。
Diceware 还支持不同的随机性来源,这些随机性来源可以是 用 -r <;sourcename>; 或 --随机源选择 选择权。使用 --help选项列出此项的所有有效值 选项. < /P>
默认情况下,我们使用标准python的类 但你也可以带上自己的骰子来创建随机性:
$ diceware -r realdice --dice-sides 6 Please roll 5 dice (or a single dice 5 times). What number shows dice number 1? 2 What number shows dice number 2? 3 ... DogmaAnyShrikeSageSableHoar
通常骰子有六个面。这也是 如果不使用骰子边,则使用骰子软件。但如果你这样做了,你可以 告诉你的骰子有多少边。更多的边会导致更少的 需要卷纸。
我们甚至支持来自其他包的随机性源。见 文档 了解更多详细信息。
Diceware 附带了由eff提供的英文单词列表,它将是 默认使用,包含7776(=6^5)个不同的单词。这个列表是 注册为 en_eff
此外,Diceware还提供了一个英文单词表,由 @heartsucker ,其中包含8192个不同的单词。这个名单是根据 arnold g.reinhold编写的原始骰子清单。
提供了Reinhold先生的原始和8K Diceware单词表。 您可以使用 -w 选项启用特定(已安装的)字表:
$ diceware MyraPend93rdSixthEagleAid0
有关所有已安装单词列表的列表,请参见Diceware --help 。
如果您不喜欢提供的单词表,可以使用自己的 一。提供的任何填充都将逐行分析 考虑了一个可能的词。例如:
$ diceware MyraPend93rdSixthEagleAid1
使用破折号( - )作为文件名,您可以在单词列表中插入管道:
$ diceware MyraPend93rdSixthEagleAid2
在自定义单词表中,我们将每一行作为一个有效单词并忽略 空行(即仅包含空白字符的行)。哦, 我们甚至处理PGP签名的单词列表。
可以在配置文件中设置自定义默认值 .diceware.ini(注意前导点)放在家中 目录。此文件可能如下所示:
$ diceware MyraPend93rdSixthEagleAid3
选项名必须与长参数名匹配,输出方式为 --帮助 。设置的值必须满足 命令行用法。必须在节中设置所有选项 [骰子软件]
有什么好处?
通常, diceware 密码比短密码更容易记住 密码的构造或多或少有些怪异。但同时 time diceware 密码短语提供了更多的熵,因为xkcd可以显示 用著名的"936"证明:
这个diceware实现的标准英文单词表包含7776= 6^5个不同的英语单词。它是官方的effwordlist。编译通过 约瑟夫·邦neau 。因此,从这个列表中随机选择一个单词可以得到 熵接近12.9位。选择六个单词意味着6 x 12.9的熵= 77.54位。
替换最初创建的密码短语的特殊字符 赋予更多的熵(你拥有的越多,附加的越多 熵),但不多。例如,一个十六个字符的短语 有16种可能性放置36个特殊字符之一。那 使36 x 16的可能性或熵约为9.17,你可以添加。 若要使熵增加至少10位,必须将 短语中至少有29个字符的特殊字符(同时 一个额外的单词会给你额外的13位 熵)。因此,您可能会再次考虑在 您的密码。
是否安全?
Diceware提供的安全级别在很大程度上取决于 随机的来源。如果传递的随机性是好的,那么 密码短语将非常强。如果有人能预见 由随机数生成器生成的数字,您的密码短语将 非常虚弱。
这个python实现(默认情况下)使用 python提供的源代码。在UN*X系统上 访问 /dev/urandom 。你可能想关注关于 在操作系统中密切操作随机数生成器。
这个包的python api允许使用 生成密码短语时的随机性。这包括真骰子。见 -r 选项。
有些问题可能会降低密码短语的熵 生成。其中之一是前缀代码问题:
前缀代码
例如,如果单词列表包含以下单词:
$ diceware MyraPend93rdSixthEagleAid4
我们关闭了caps 和分隔符,然后diceware 可能 生成包含以下内容的密码短语:
$ diceware MyraPend93rdSixthEagleAid5
这可能来自便携式飞机或机场专用飞机。我们不能 tell和攻击者可以猜测的组合较少。
为了避免出现这种情况,您可以将caps保留为启用状态(默认设置),使用任何单词 分隔符(空字符串除外)或使用 en_eff wordlist, 已检查为前缀代码(即不包含 以列表中其他单词开头的单词)。
这些措施足以保护你免受 前缀代码 问题。
减少的熵
总的来说,diceware是一种映射输入值,dice抛出 实例,在wordlist条目上。我们通常希望 以相同的概率为密码短语选择单词列表。
但是,如果wordlist条目的数量不是 骰子边的力量。在这种情况下,我们从单词表中删去一些单词并通知 关于这件事的用户。通过这种方法减少单词的数量 攻击者更容易猜到所选短语。
您可以使用更长的单词表来解决这个问题。
开发人员安装
开发人员希望在github上使用fork me
$ diceware MyraPend93rdSixthEagleAid6
我们建议首先创建并激活a virtualenv :
$ diceware MyraPend93rdSixthEagleAid7
我们支持python版本2.6、2.7、3.3到3.7以及pypy。
现在您可以创建devel环境:
$ diceware MyraPend93rdSixthEagleAid8
这将获取测试包( py.test )。你应该能跑 立即测试:
$ diceware MyraPend93rdSixthEagleAid9
如果您还安装了不同的python版本,则可以使用tox 全部用于测试:
$ pip install diceware0
应该在所有受支持的python版本中运行测试。
文档安装
可以使用sphinx生成文档。需要的包裹是 安装方式:
$ pip install diceware1
要创建html,您必须转到 docs/ 目录并使用 准备好生成文件
$ pip install diceware2
这将在 docs/\u build/html/ 中生成文档
创建手册页
我们提供了一个模板来创建手册页。当 安装了文档引擎(sphinx,请参见上文),然后可以创建 手册页正在执行:
$ pip install diceware3
提供这个模板主要是为了简化debian维护人员的工作。 目前,它不会自动更新。日期、作者、概要等 手动更新。因此,手册页中的信息可能是错误的, 过时,或只是误导。
积分
阿诺德雷因霍尔德应该为 骰子软件 。非工作部件肯定我的错。
帮助发现错误、提供解决方案等的人员:
< Buff行情>- conor schaefer(conorsch)
- Rodolfo Gouveia建议激活"分隔符"选项。
- @drebs 为不同来源的 随机性。 @drebs 也启动并执行了 Diceware 用于 Debian 平台。这项工作真是太好了! @drebs 同时也是Diceware软件包的官方Debian维护者。
- @heartsucker 手工编译并添加了一个新的英文单词列表。
- dwcoder 发现并修复了错误 #19岁,21岁,23岁。还表现出良好的(理论)知识 熵。很高兴与您合作。
- george v.reilly 指向new eff单词列表。
- lieryan 提出了前缀 代码问题。
- logosofj 已发现并修复 严重的随机性问题来源。
- bhavin gandhi修正了混淆错误 给出无效输入文件名时的消息。
- simon fondrie teitler 贡献了 机器可读的版权文件,改进来自 @anarcat
- doug muth 文档中的固定格式。
非常感谢他们!
链接
- Diceware主页。绝对推荐阅读!
- 在github上用叉子叉我
字表:
- Diceware标准列表 作者:Arnold G.reinhold。
- diceware8k列表 作者:arnold g.reinhold。
- Diceware安全下拉列表 作者 @heartsucker
- eff大列表由eff提供。
许可证
Diceware的python实现(c)2015-2018 uli fouquet,是 根据GPLv3+授权。有关详细信息,请参阅文件许可证。
"Diceware"是Arnold G Reinhold的商标,经允许使用。
diceware8k列表的版权归arnold g reinhold所有。 diceware securedrop列表的版权归 @heartsucker 。约瑟夫·邦尼奥和 eff 。有关详细信息,请参阅文件版权。