#password #security #generate-keys #password-generator #encryption

cellar-core

一个密码工具,用户可以根据口令确定性推导出大量应用程序密码。具有强加密性。

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 加密学

Download history 2/week @ 2024-03-10 28/week @ 2024-03-31 1/week @ 2024-04-07

54 每月下载量
cellar 中使用

MIT 许可证

26KB
417

Cellar

Build Action Release Action Docs crates.io

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