4 个版本 (2 个破坏性更改)

0.3.0 2023 年 7 月 25 日
0.2.0 2023 年 3 月 16 日
0.1.1 2023 年 3 月 8 日
0.1.0 2023 年 3 月 8 日

#1717 in 密码学

BSD-2-Clause

410KB
16K SLoC

sppg

Rust codecov License

使用 diceware 方法实现的密码生成器。

长期以来,apg 命令行程序允许用户创建随机、易发音且难以猜测的密码。此程序尝试为密码短语做同样的事情。

它使用 diceware 方法生成随机密码短语,并采取一些预防措施,以确保显示的短语在用户请求的范围内尽可能安全。默认情况下,它输出一个普通的 5 词密码短语,除非您指定质量选项 (-q | --quality),否则不会输出少于 4 个词的内容。然而,即使有了质量选项,它也不会显示少于 8 个字符(包括空格)的短语。

关于安全性的说明

  • 对于普通计算机用户来说,四个词的密码短语就足够了。对于在组织中的位置可能使他们成为攻击目标的用户,五个或六个词的密码短语就足够了。如果您的威胁模型包括可以投入大量资金和资源的对手,那么密码长度只是您需要担心的一小部分。

  • 此程序将单词之间的空格包含在内以确定密码短语长度。您在输入密码短语时也应包括它们。理论上,对手可以通过监听空格键的声音来猜测您密码短语中单词的数量和长度,但如果这是您威胁模型中一个现实的组成部分,那么您为什么还在阅读这篇文章? 现在可以使用 -S 选项来提供您自己的分隔符字符。

  • 此程序默认使用 Arnold Reinhold 的原始单词列表。但是,您可以选择使用 EFF 的修订列表。这两个列表在安全性方面完全相同。区别在于列表中包含的单词。EFF 的列表包含更长的单词,删除了一些美式英语,并删除了更广泛的潜在冒犯性单词。我的个人偏好是原始列表,因为它平均来说更容易输入。

  • 如果您想要更短的密码短语,可以使用 --quality 选项插入一个特殊字符,并随机将一个字母转换为大写。

    sppg--单词-计数2 --质量

  • 最终,您密码的安全程度取决于存储它的系统。如果您访问的web服务在其数据库中以明文形式存储密码,并且遭到黑客攻击,拥有一个12个单词的密码短语也无济于事。您绝对不应该重复使用密码短语。更好的做法是使用密码管理器。

  • “这固然很好,”您可能说。“但你的密码卫生状况如何?”您可能还会问。我只是在互联网上玩软件开发的人。我使用密码管理器,并且为其主密码使用原始列表中生成的简单、无装饰的4个单词密码短语。

    sppg-(此处为空行,未提供具体内容)4

  • 以下资源提供关于密码短语安全主题的更多信息(链接1)(链接2)

先决条件

  1. Git源代码版本控制系统

https://git-scm.cn/book/en/v2/Getting-Started-Installing-Git

  1. Rust编程语言官方安装指南

curl --proto '=https' --tlsv1.2 -sSfhttps://sh.rustup.rs | sh

为了确保正确安装,请输入以下命令并确保得到成功输出

rustc --version
cargo --version

构建

从终端

  1. 克隆此存储库

git clone https://github.com/mtelahun/sppg.git

  1. 切换到克隆的目录并输入

cargorun --release

安装

要安装此软件包,请切换到存储库目录的根目录,并输入

cargoinstall --path .

使用

Usage: sppg [OPTIONS]

Options:
  -e, --eff                        Use EFF wordlist
  -n, --num-of-pass <NUM_OF_PASS>  Number of phrases to output [default: 6]
  -w, --word-count <WORD_COUNT>    Number of words in a phrase [default: 5]
  -c, --use-capital-char           Convert one letter at random to uppercase
  -s, --use-special-char           Insert one special character at random
  -q, --quality                    Implies -c and -s
  -S, --separator <SEPARATOR>      Use SEPARATOR (instead of ' ') to separate words
  -h, --help                       Print help
  -V, --version                    Print version

依赖项

~1.9–2.6MB
~48K SLoC