7个不稳定版本 (3个破坏性版本)
使用旧的Rust 2015
0.4.2 | 2018年3月25日 |
---|---|
0.4.1 | 2018年3月12日 |
0.4.0 | 2017年9月17日 |
0.3.0 | 2017年9月14日 |
0.1.1 | 2017年9月13日 |
#485 in 身份验证
46KB
845 行
无保险库:超简单且安全的密码管理
注意:从版本0.4.0开始,预计不会对此工具进行破坏性更改。我现在正在使用novault作为我的主要密码管理器。
无保险库是一个类似于Master Password的简单且安全的密码管理器,但它为开发者提供了更简单、更可审计的体验。
正如其名所示,无保险库不需要将您的密码存储在任何类型的文件或数据库中。相反,您只需要记住一个密码,该密码使用Argon2进行加密散列,并使用base64url转换为字符串。您只需(半安全地)共享一个在初始化时生成的微小的novault.secret
文件,并在您的设备之间共享。
无保险库将您的配置和站点存储在人类可读的toml文件中,您可以在谷歌驱动、Dropbox等网站上保存,甚至可以在GitHub上公开。
无保险库相对于其他密码管理器的优势
- 简单:完全开源,约1000行代码
- 使用Argon2进行散列,它是2015年密码散列竞赛的获胜者
- 除了您之外,没有人知道您的密码。它不会存储在任何数据库中,并且不能由应用程序泄露。
- 无保险库永远不会访问互联网,因此消除了整个世界的安全漏洞。
- 每个网站都有自己的单独的盐化密码。因此,即使该密码被泄露,它也不会危及您的主密码。
- 您的密码永远不会以纯文本、html或粘贴缓冲区存在 -- 无保险库会控制您的键盘来输入密码。
- 在任意位置存储您的配置为纯文本是安全的,因此很容易在您的计算机之间同步。即使您丢失了
novault.sites
文件,您通常只需要记住网站名称即可恢复密码。 - 使用类型安全的语言(Rust)编写
(当前)缺点
- 只能在GNU/Linux上使用
- 在一个周末的空闲时间由一个完全的业余爱好者编写
- 没有任何加密知识的任何人都没有对其进行审计
- 一旦您编写了一个密码管理器,您就再也不能信任任何人。
- 黑客可能会抢走你的饭碗,我无法保证该软件的保修或安全性,因此你不能起诉我(抱歉)。说到这个...
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者都不应对任何索赔、损害或其他责任负责,无论该责任产生于合同行为、侵权行为或其他行为,无论该行为是否与软件有关,或与软件的使用或其他处置有关。
指南
安装
(目前)安装的唯一方式是通过 cargo
cargo install novault
基本使用
初始化你的 NoVault 配置文件
$ novault init
这会要求你输入主密码,选择一个好的。最好选择一个你能够记住的较长的密码,而不是一个有很多符号的短密码。“correct horse battery staple”熵值高,但很容易记住。
这将在一个随机生成的秘密文件中创建一个文件,位于 ~/.local/novault.secret
。请相对安全地保管此文件(见下文“你需要保存/记住的内容”部分)。无论如何,不要丢失此文件!它的目的是让攻击者需要你的主密码和此文件才能破解你的密码。如果你不小心将主密码复制/粘贴到 Facebook 上,那么这是不好的...但你不必完全惊慌。请参阅下文“我丢失了我的主密码...”部分。
一旦选择了密码,添加一个网站
$ novault loop
>> set [email protected] --notes "open source email"
在你添加了第一个网站后,将在 ~/.config/novault.sites
创建一个文件。此文件不包含任何可用于推导出你的主密码的信息,因此可以安全地存储在公共位置(如 GitHub)。
例如,设置银行密码和 4 位 PIN 码可以使用
>> set vitiral@bank
>> set pin.vitiral@bank --pin --fmt '{p:.4}'
{...}
语法与 rust/pthon 的字符串 fmt 语法 相同。p
是密码的名称,之后所有内容都说明了如何格式化p
。:.4
表示使用“精度 4”,对于字符串(p
是字符串)意味着字符串长度为 4。如果你的网站需要特殊字符,你可以像这样添加它们--fmt '{p:.32}!@#'
。显然,字符并不提供额外的安全性...但你使用的是一个 32 位随机哈希,这几乎是最安全的。
现在你可以获取网站的密码。NoVault 将自动验证你的密码是否与你在 novault init
中使用的密码相同。
$ novault loop
>> get [email protected]
# ... Run `echo "ok" >> ~/.confg/novault.lock` through a key binding.
# ... NoVault will control your keyboard to type in your password securely
你添加的网站默认存储在 ~/.config/novault.sites
。建议你备份此文件并在您的计算机之间分发。我更喜欢将其存储在 公共 GitHub 存储库 中的版本控制中。
你需要保存/记住的内容
永远不要忘记你的密码或丢失你的 ~/.local/novault.secret
文件。如果你丢失了其中任何一个,则你的密码将完全无法恢复。
提示
- 选择一个容易记住但难以猜测的密码(见上文)
- 将你的
novault.secret
文件存储在几根 USB 随身携带。我把一根放在我的钥匙扣上,一根放在我的办公室。我还把它放在我的笔记本电脑上常驻的 SD 卡上。 - 在其他你信任的计算机上放置
novault.secret
。
如果可能的话,请不要在互联网上共享您的 novault.secret
文件。如果您确实将其上传到网上,越不公开越好。电子邮件/dropbox/google-drive 可能没问题,但您永远不知道那些网站有多安全。
如果您认为您的秘密被泄露,您可能暂时没问题...直到您不小心泄露了主密码。这就是 novault.secret
文件的作用,它保护您免受自己伤害--在安全问题上,您总是自己最危险的敌人。
注意:更改您的秘密文件等同于更改主密码,所有网站密码都会更改。
我泄露了我的主密码或秘密文件,我该怎么办?
您需要更改它,但您可以先喝完咖啡。
事实上,只要攻击者没有同时获得您的主密码和 novault.secret
文件,他们实际上就没有办法做任何事情。秘密文件包含一个256个字符的随机生成的ASCII字符串,这是生成您的网站密码所必需的。这意味着,只要您的秘密文件是安全的,地球上的所有计算能力需要一亿年才能破解您的网站密码。
如果黑客设法同时获得了这两个,那么您就完蛋了。也许最好同时生成一个新的主密码和秘密文件以防万一。
因此,您必须更改主密码,但不必着急。您该如何操作?
步骤1:备份您现有的密码
运行以下命令
novault InSeCuRe --export > ~/backup.txt
这将把所有您的网站密码以纯文本形式显示出来。显然,您只有在即将更改这些密码的情况下才应该这样做。
步骤2:删除/移动您的秘密文件并创建一个新的文件
将 ~/.local/novault.secret
移动到 ~/.local/novault.secret.bk
,然后使用您的新密码重新运行 novault init
。您的 ~/.config/novault.sites
可以保持不变。
步骤3:更改 ~/.config/novault.sites
中每个网站的密码
您应该访问每个网站,并将密码从 backup.txt
中的密码更改为一个新生成的密码,该密码是通过 novault get <site>
获得的。
当您完成时,您可以删除 backup.txt
和 novault.secret.bk
,或者保留它们,这并不重要。我建议保留它们以防您不小心忘记更改某个网站的密码。不过,最好不要把它们发给您的前任黑客爱人...
贡献
设计文档主要托管在 design/
。您可以使用 art serve
通过 artifact 查看它们。它们也被 渲染在这里。
我欢迎贡献者,尤其是安全审查。然而,我将在接受大的更改或新功能方面非常谨慎,因为我不想破坏应用程序的安全性。
许可证
本存储库中的源代码受以下任一许可证的许可:
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任您选择。
除非您明确表示,否则您有意提交给作品并由您定义的Apache-2.0许可证包含的任何贡献,均应按上述方式双重许可,而无需任何额外的条款或条件。
依赖项
~19–30MB
~506K SLoC