22个版本 (14个稳定版)

2.0.0 2024年4月6日
1.3.0 2023年11月9日
1.2.0 2023年10月25日
1.1.4 2023年2月17日
0.4.0 2018年1月18日

密码学 类别中排名 #53

Download history • Rust 包仓库 6/week @ 2024-04-13 • Rust 包仓库 1/week @ 2024-04-27 • Rust 包仓库 4/week @ 2024-05-18 • Rust 包仓库 1/week @ 2024-05-25 • Rust 包仓库 4/week @ 2024-06-01 • Rust 包仓库 9/week @ 2024-06-08 • Rust 包仓库 2/week @ 2024-06-15 • Rust 包仓库 29/week @ 2024-07-20 • Rust 包仓库 137/week @ 2024-07-27 • Rust 包仓库

每月下载量 166

ISC 许可证

84KB
174

pgen(1) – 密码生成器

Crates.io Crates.io License GitHub stars

使用以下任何单词列表生成密码短语

EFF的单词列表包含易于输入和记忆的单词。

默认情况下,pgen 生成的密码短语由从自动完成优化的单词列表中随机选择的十二个单词组成。请务必 阅读文章 了解EFF提供的不同单词列表之间的区别。

以下是生成密码短语的示例

  • gimmick saffron nirvana superstore voicemail dedicate guacamole oftentimes dwindling kingdom shuttle upright
  • bobcat pulley yearbook nectar krypton pesticide relic sauna detergent amnesty dishcloth tapestry
  • porcupine identical occupation oxidize avalanche celery vaporizer dastardly vicinity enlarged hatchling urethane

目录

用法

pgen [-d] [-w <USE_WLIST>] [-n <n>] [-k <k>] [-e]
pgen -h | --help
pgen -V | --version

选项和参数

-w 指定要使用的单词列表。

  • eff-autocomplete (默认): 使用 EFF的短单词列表 #2

    功能

    • 每个单词都有一个独特的三字符前缀。这意味着软件可以在用户输入前三个字符后自动完成密码短语中的单词。
    • 所有单词之间的编辑距离至少为3。这意味着软件可以纠正用户密码短语(以及在许多情况下超过一个)中的任何单个错误。

    详细信息

  • eff-long: 使用 EFF的长单词列表

    推荐用于创建易于记忆的密码短语,因为单词数量增加以及有效单词长度的增加,与例如自动完成优化的短单词列表相比,可以使用更少的单词获得良好的熵。

    功能

    • 包含易于输入和记忆的单词。
    • 从优先考虑最知名单词的单词列表开始构建,然后是最具体的单词。
    • 由EFF手动检查并尽可能多地删除了粗俗、侮辱性、敏感或情绪化的词汇,同时还基于几个公共的不雅英语词汇列表进行了过滤。

    详细信息

  • eff-short:使用EFF的简略词汇表#1

    功能

    • 设计用于包含1,296个最难忘且独特的词汇。

    详细信息

  • bip39:使用BIP39词汇表

    详细信息

-n指定要使用的词汇数量n。默认值

  • 如果使用任何简略词汇表,则为十二(12)个词汇。
  • 如果使用大型词汇表,则为十个(10)个词汇。

-k指定要生成的密码短语数量k。默认值:1。

-e计算并打印使用给定设置生成的密码短语的熵。什么是密码熵?熵是密码可能性的度量,因此它与选择过程相关

--dice使用物理六面骰子而不是让计算机选择词汇。如果在您怀疑计算机生成“足够随机”数字的能力或意愿时,这很有用。

-h--help显示帮助并退出。

-V--version打印版本信息并退出。

您的密码短语需要多少比特熵?

您的密码短语应该包含多少位的熵?

查看维基百科上的密码强度文章,您将找到以下内容

密码所需的最小熵位数取决于给定应用程序的威胁模型。如果没有使用密钥拉伸,则需要具有更多熵的密码。 RFC 4086,“安全性随机性要求”介绍了某些示例威胁模型以及如何为每个模型计算所需的熵。它们的答案在仅预期在线攻击时需要的29位熵和用于加密等应用程序的重要加密密钥所需的上至128位熵之间。

在像网络邮件、社交网络等网络服务的情况下,鉴于历史上我们看到了密码数据库泄露,其中使用了像MD5这样的弱哈希算法,作者认为128位熵附近实际上是一种合适的默认值。

在计算密码或密码短语的熵时,必须假设密码生成过程为攻击者所知。因此,使用来自简略词汇表的12个词汇(每个词汇由1296个词汇组成),我们得到密码熵为log2(1296^12) ~= 124.08位。同样,使用来自长词汇表(7776个词汇)的10个词汇,我们得到密码熵为log2(7776^10) ~= 129.25位。

这里真的需要CSPRNG吗?

使用CSPRNG确保概率分布均匀。这反过来又确保了密码熵计算的准确性。因此,使用CSPRNG是有意义的。

另请参阅

安装

  1. 安装Rust.
  2. 运行 cargo install -f pgen

依赖项

~1.4–2MB
~38K SLoC