使用passwordstore的FOSS密码管理

关于密码重用危险的来源很多。 即使不重新使用,脆弱且令人难忘的密码也会威胁帐户安全。 我也曾屈从于懒惰的密码选择,但仅此而已! 看完密码存储后 在最近的HackerNews上,我终于停止了发布,并研究了安全,随机,托管密码的解决方案。

这将是一个小型的教程,因为在设置pass时 ,我遇到了一些问题,但结果却很少,因此也许我的演练将对配置类似计算机的人员有所帮助。

创建密钥对

使用passwordstore(或简称为pass )的第一步是安装其依赖项gpg并使用它来创建密钥对。

使用通用安装脚本/收藏夹管理器安装gpg。 然后运行以下命令。

  $ gpg --gen-key 

您会看到一个提示:

  gpg(GnuPG)1.4.19; 版权所有(C)2015自由软件基金会,Inc. 
这是免费软件:您可以自由更改和重新分发它。
在法律允许的范围内,没有任何担保。
 请选择您想要哪种钥匙: 
(1)RSA和RSA(默认)
(2)DSA和Elgamal
(3)DSA(仅签名)
(4)RSA(仅签名)
您的选择?

默认值为1 。 然后下一个提示:

  RSA密钥的长度可能在1024到4096位之间。 
您想要什么密钥大小? (2048)

我选择4096,因为从我的角度来看,增加的安全性值得用于生成和编码/解码的额外计算时间。

 请求的密钥大小为4096位 
请指定密钥应有效的时间。
0 =密钥没有过期
=密钥在n天后过期
w =密钥在n周内过期
m =密钥在n个月内到期
y =密钥在n年后过期

延长密钥的有效期限很简单,因此再次出于安全性考虑,我在这里选择了1y

 密钥对有效吗?  (0)1年 
密钥将于2017年4月29日星期六15:33:48过期
它是否正确? (y / N)y

接下来输入您的识别信息。 以后,它用于引用密钥。 如果您有多个具有相同电子邮件地址的密钥,则可以使用密钥的唯一指纹,但是键入起来较不方便。

 您需要一个用户ID来标识您的密钥。 该软件构造用户ID 
从真实姓名,评论和电子邮件地址中以这种形式发送:
“海因里希·海涅(Der Dichter)”
 真实姓名:卡洛斯 
电子邮件地址:carlos@example.com
评论:
您选择了此USER-ID:
“卡洛斯”
 更改(N)ame,(C)项,(E)mail或(O)kay /(Q)uit?  Ø 

很简单。

 您需要密码来保护您的密钥。 

为密钥选择一个强密码短语。 密钥的密码短语类似于1Password或KeePass之类的解决方案中的“主密码”。 您将需要它来解密密钥并解密密码文件。 关键密码短语是您的最后一道防线。 选择长而易记的东西,最好是真正随机的东西。

 我们需要生成很多随机字节。 在准备生成期间,执行一些其他操作(在键盘上键入,移动鼠标,利用磁盘)是个好主意。 这为随机数生成器提供了获得足够熵的更好机会。 

gpg:密钥DEADB33F标记为最终信任
公钥和私钥已创建并签名。
  gpg:检查trustdb 
gpg:需要3个边际,需要1个完整,PGP信任模型
gpg:深度:0有效:6签名:0信任:0-,0q,0n,0m,0f,6u
gpg:下一个trustdb支票到期日为2017-04-28
pub 4096R / DEADB33F 2016-04-29 [过期:2017-04-29]
密钥指纹= 2233 4444 5677 7788 8999 AAAA ABBB CCCD DDEE EEFF
uid卡洛斯
sub 4096R / B33FF00D 2016-04-29 [过期:2017-04-29]

您是新钥匙对的骄傲拥有者!

使用更少的按键

为了防止腕管穿刺,请允许您的计算机记住您的密码一段可自定义的时间:安装gpg-agent并进行配置。 您将希望您的gpg-agent.conf看起来像这样。

  #〜/ .gnupg / gpg-agent.conf 
#pinentry-program / usr / local / bin / pinentry-mac#如果您使用的是OSX
pinentry程序/ usr / local / bin / pinentry-curses

并且您需要在终端会话启动时启动gpg-agent ,因此请编辑〜/ .bash_profile并将其来源

  #〜/ .bash_profile 
eval $ {gpg-agent --daemon)#设置一些环境变量

然后编辑〜/ gpg.conf以使用代理守护程序。 可能已经有注释掉的行,因此您只需取消注释该行即可。

  #〜/ .gnupg / gpg.conf 
使用代理

安装和配置通行证

现在好了:使用密码并生成一些密码。 首先,我们将安装通行证,然后使用密钥对的ID对其进行初始化。

 在OS X上的$ brew install pass#,在passwordstore.org上有更多详细信息 
$源/usr/local/etc/bash_completion.d/password-store
$通过初始化carlos@example.com
mkdir:创建目录“ /home/carlos/.password-store”
密码存储已初始化为carlos@example.com。

如果要在多个设备上使用pass,则需要使用其git功能。 我创建了一个git存储库以传递给Bitbucket,因为您可以创建私有存储库来增加隐私。 无论使用哪个git存储库,都将ssh公钥(来自〜/ .ssh / id_rsa.pub)添加到您的帐户中,这样就不需要密码即可使用密码存储库。

  $通过git init 
在/home/carlos/.password-store/.git/中初始化了空的Git存储库
$ pass git remote add origin git@bitbucket.com:user / pass.git
$通过git push
计数对象:1,完成。
增量压缩最多使用8个线程。
压缩对象:100%(1/1),已完成。
书写对象:100%(1/1),8.55 KiB | 0字节/秒,完成。
总计1(增量1),重用0(增量0)
到git@user/pass.git
d3adb33..b4df00d主->主

信息披露

Pass允许您创建密码文件夹。 文件夹可以按帐户组织密码,以使内容保持整洁,但是您选择的任何组织方法都可以使用。 可以直接在服务后命名文件夹或文件。 或者,如果您不想透露自己拥有哪些服务,则可以生成随机键映射到服务名称,也可以通过pass存储该映射。

  $ pass生成-c $(pwgen 8 1)/密码20 
已将aidei2OY /密码复制到剪贴板。 将在45秒内清除。
$ pass插入映射--multiline#将来使用“ pass edit”
输入测试内容,完成后按Ctrl + D:
  aidei2OY:example.com 

移动

您仍然需要从智能手机的sans命令行登录各种帐户。 在Android上,您可以将Android密码存储应用与OpenKeychain配合使用。 在iOS上,有一个可用的应用程序,但锁定的功能要多一些,因此您需要拥有一个植根设备并从源代码编译该应用程序。 由于我的主要移动设备运行Android,因此我仅介绍Android功能。

由于我是非对称密钥和gpg的新手,因此在Android上对我来说棘手的部分是将我的私钥从计算机转移到手机上。 您可以使用以下命令导出受密码保护的加密密钥,该密钥可以在设备之间安全传输。

  #来自https://www.openkeychain.org/faq 
  #生成强随机密码 
$ gpg-装甲--gen-random 1 20
  #加密密钥,在询问时使用上面的密码 
$ gpg --armor --export-secret-keys carlos@example.com | \
gpg --armor --symmetric-输出mykey.sec.asc

将此密钥传输到您的设备(最好不要通过Internet),然后在OpenKeyChain中解密,然后将其导入。 然后,您可以在Android密码存储区中选择密钥,下载git存储库,然后输入主密码来检索数据。 完成操作后,请删除加密的传输文件,以提高安全性。

技巧和窍门

在整个网站上更新密码时,您会发现很多有关不同组织如何设置密码要求的信息。 如果输入的密码太长,某些密码会悄悄地截断密码。 有些允许使用特殊字符混合而成。 有些原因莫名其妙地强制使用最多8个或更多字符(这意味着它们以明文形式存储密码)。 给定行业标准的密码惯例(即哈希和盐),密码长度几乎没有理由受到限制。

考虑到这些限制,最好在设置密码后测试一下密码,以防下次需要登录时出现任何意外。 鉴于某些站点的密码存储方案的不安全性质,请尽可能启用两因素身份验证。

为了增加便利,还提供了可与pass集成的浏览器扩展。 请查看passwordstore.org以获取有关各种客户端的信息。

进一步阅读

我创建了一个Kifi库,其中包含上面的有用资源以及在研究通过过程中发现的其他资源。 您可以在kifi.com/carlos/gpg上找到它。 希望随着您使用passwordstore的更多而有用。