14 个不稳定版本 (6 个破坏性更新)
0.7.2 | 2023年2月14日 |
---|---|
0.7.0 | 2022年12月14日 |
0.5.1 | 2022年11月30日 |
0.4.0 | 2021年3月14日 |
0.1.0 | 2019年12月23日 |
#2364 in 加密学
54 每月下载量
在 cellar 中使用
26KB
417 行
Cellar
Cellar 是一个简单的密码生成/检索工具,灵感来源于 安全价值恢复技术预览。主要算法是对原始算法的一点点修改。
salt = Secure-Random(output_length=32)
stretched_key = Argon2(passphrase=user_passphrase, salt=salt)
auth_key = HMAC-BLAKE2s(key=stretched_key, "Auth Key")
c1 = HMAC-BLAKE2s(key=stretched_key, "Master Key")
c2 = Secure-Random(output_length=32)
encrypted_c2 = ChaCha20(c2, key=auth_key, nonce=salt[0..CHACHA20_NONCE_LENGTH])
master_key = HMAC-BLAKE2s(key=c1, c2)
application_key = HMAC-BLAKE2s(key=master_key, "app info, e.g. [email protected]")
Cellar 的主要目的是让人们只需记住一个密码,并通过使用上述算法,可以创建出大量具有强加密性的应用程序密码。用户只需在本地磁盘和云端存储随机生成的盐和加密_c2,当她想要生成或检索应用程序密码时,可以使用她的口令,加上盐和加密_c2来恢复主密钥,然后推导出应用程序密码。只要用户将口令保密于心中,所有应用程序密码都是安全的。即使盐和加密_c2 泄露,黑客仍需暴力破解主密钥。
使用 Cellar,您无需信任云服务提供商来存储您的密码,也不必为不同站点/应用程序的大量密码而烦恼。
Cellar 目前是一个最小可行产品。一些未来项目
- 支持分层密钥
- 出于安全目的销毁密钥
- 根据一组规则(最小/最大/字符集)生成密码
- 在加密文件中记录 app_info 和使用的规则
- 提供一个 WebUI 以方便使用
用法
cellar init
初始化 Cellar(默认:$HOME/.cellar/default.toml
)
$ cellar init
Creating cellar "$HOME/.cellar/default.toml"
Password: [hidden]
Your cellar "$HOME/.cellar/default.toml" is created! Feel free to use `cellar generate` to create or display your application password.
初始化后,会生成一个 ~/.cellar/default.toml
文件。该文件存储随机盐和加密随机种子,如下所示
$ cat ~/.cellar/default.toml
salt = "C6TQW8joYp2XoIkvaCNfo0ihJ3OacxlTbx68_oW8pF4"
encrypted_seed = "bHn5Lu3yX0g68rRJ4lTOwAvx_uMDFaBnZ_WMkJSU8TM"
请注意,即使您使用相同的密码重新生成 Cellar,也会得到非常不同的主密钥和导出的应用程序密钥。因此,请确保将此文件备份到您的私有云中。
cellar generate
生成应用程序密码
$ cellar generate --app-info "[email protected]"
Password: [hidden]
Password for [email protected]: FLugCDPDQ5NP_Nb0whUMwY2YD3wMWqoGcoywqqZ_JSU
生成分层密钥
# generate parent key
$ cellar generate -i "apps"
Password: [hidden]
Key for apps: 6CAakhEv_L2purgTfUasrvA9qgRZrQGdETDohSbBvNI
# generate app key by using parent key
$ cellar generate -i "my/awesome/app" --use-parent-key
Parent Key: [hidden]
Key for my/awesome/app: ZFqgQZK4Sx4GgwLn9D-qmhYE5gw0QbUSl4I8HaTseZs
# it would be the same as generate the whole hierarchical key with master password
$ cellar generate -i "apps/my/awesome/app"
Password: [hidden]
Key for apps/my/awesome/app: ZFqgQZK4Sx4GgwLn9D-qmhYE5gw0QbUSl4I8HaTseZs
基准测试
如果您想为cellar运行基准测试,请使用以下命令:make bench_cellar
。Argon2会故意使拉伸密钥的生成变慢,默认样本大小会使基准测试非常慢。在我的2017年mbp上,应用程序密码生成大约需要18毫秒。
$ make bench_cellar
cargo bench --bench bench_cellar -- --sample-size 10
Compiling cellar-core v0.1.0 (/Users/tchen/projects/mycode/cellar/cellar-core)
Finished bench [optimized] target(s) in 3.92s
Running /Users/tchen/.target/release/deps/bench_cellar-f87c142f98bb458c
app key time: [17.812 ms 17.970 ms 18.161 ms]
change: [-1.8875% -0.3966% +1.2260%] (p = 0.65 > 0.05)
No change in performance detected.
依赖项
~14MB
~365K SLoC