1 个不稳定版本
0.1.0 | 2023年11月10日 |
---|
#1153 在 密码学
135KB
517 行
Rust CLI密码生成器
概述
本项目是一个用Rust编写的安全CLI密码生成器。
它通过包括随机
、易记词
和PIN号码
在内的三种不同策略生成安全密码,同时提供香农熵和直观的密码强度。
许多其他配置可以通过传递来使其更难以破解。下面提供更多信息。
构建和运行说明
构建
- 首先,请确保您已使用rustup安装了Rust工具链。
- 您可以通过运行以下命令构建二进制文件:
cargo build --release
来构建项目。 - 您可以通过运行输出二进制文件
./target/release/spg
来运行项目。 - 可选:如果您在基于UNIX的环境下,可以将
./target/release/spg
复制并粘贴到您的/usr/local/bin/
中。然后只需运行spg
。
使用说明
Usage: spg [OPTIONS]
Options:
-l, --length <LENGTH>
Password length to be generated [default: 8]
-g, --gen-type <GEN_TYPE>
Password generation mechanism to be used [default: random] [possible values: random, pin, memorable]
-n, --use-numbers
Whether to use numbers in password
-s, --use-symbols
Whether to use special symbols in password
-c, --use-capitals
Whether to use capitalized letters in password
-k, --capitalize-memorable-words
Whether to capitalize generated words by chance
-t, --capitalize-memorable-first-letter
Whether to capitalize the first letter of generated words by chance
-w, --words-count <WORDS_COUNT>
The number of words included in memorable password [default: 5]
--insecure-mode
Run in insecure mode. The output can be redirected or piped to files or non terminal environments
-h, --help
Print help
-V, --version
Print version
以下是一个示例输出,适用于 spg -n -s -c -l 19
提示符
Shannon entropy: 118.35
Strength: 100.00
z67r81kNk*v~&ud5gjT
Hit Enter to exit
或者我们可以通过运行 spg -g memorable -w 4
提示符来有一个包含4个单词的易记密码
Shannon entropy: 51.70
Strength: 66.67
unwired-hungrily-spirited-encrypt
Hit Enter to exit
安全视角
数据保护
- 已使用Secrecy crate的
Zeroise
功能来清除内存。此crate保证内存将被释放。 - 已确保Secret类型不会意外地记录在任何地方,因为它们受到Secret类型的保护。
- 禁止在
non-tty
环境下运行此程序,以防止意外记录或让恶意软件嗅探生成的密码。 - 输出将在超时或接收到OS的任何SIG后丢弃并覆盖。
密码生成
- 在随机策略中使用了从均匀分布中任意采样的方法,以减轻时间攻击。
- 在二进制文件中嵌入EFF diceware单词列表以保持完整性。
开发视角
项目结构
本项目包含三个部分,包括 main
、cli
和 password_generator
。在 password_generator
中使用了策略模式,用于生成 Random
、Memorable
和 Pin
密码。存在一个 assets
目录,其中包含用于diceware生成的EFF单词列表。
测试
- 通过运行
cargo test
来运行测试用例。
漏洞及缓解措施
此代码不使用 mlock
和/或 mprotect
来防止操作系统在多种场景下将数据写入磁盘。
待办事项
- 编写更多测试,增加覆盖率。
- 未来应实现更多测试,包括安全测试。
- 使用Bolero和模糊引擎来生成密码生成器的任意配置。
- 实现
mlock
和/或mprotect
以保护内存。
许可证
MIT许可证。
贡献
欢迎通过分叉本项目并创建PR来增强此项目。
如果您觉得它有用,请给它留下一个星号。
依赖项
约6-15MB
约175K SLoC