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 身份验证

MIT 许可证

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

基本使用

choosing a good password

初始化你的 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.txtnovault.secret.bk,或者保留它们,这并不重要。我建议保留它们以防您不小心忘记更改某个网站的密码。不过,最好不要把它们发给您的前任黑客爱人...

贡献

设计文档主要托管在 design/。您可以使用 art serve 通过 artifact 查看它们。它们也被 渲染在这里

我欢迎贡献者,尤其是安全审查。然而,我将在接受大的更改或新功能方面非常谨慎,因为我不想破坏应用程序的安全性。

许可证

本存储库中的源代码受以下任一许可证的许可:

任您选择。

除非您明确表示,否则您有意提交给作品并由您定义的Apache-2.0许可证包含的任何贡献,均应按上述方式双重许可,而无需任何额外的条款或条件。

依赖项

~19–30MB
~506K SLoC