关于密码管理及软件

需要密码的地方太多了. 记这么多密码是件困难的事, 且有好记性不如烂笔头之说.

如是, 有两种解决方案, 一是所有密码用同一个, 二是将密码记下来.

用同一个密码最大的问题是安全性, 一个密码泄露, 则所有帐户都十分危险. 这个方法的一个折中是弄个简单的生成的规则. 但问题是, 这个规则或者太简单, 别人可以从你的一个密码知道其它的所有密码. 或者太复杂, 至于你也记不住或得不到.

一个简单的例子的是对所有网站, 使用相应的一个字符串, 如 "private_key_such_as_name+URL" 的映射, 如md5, sha. 这样, 一个密码的泄露, 不会太影响其它密码的安全性. 你所有密码的安全性, 依赖于你所选用的私密字符串及HASH函数的逆向困难性.

以上方案对不需要改动密码的地方很好. 但实际情况上是, 你应该周期性的改动密码. 以上方案无法适应这种情况. 如果记录每个网站对应的私密字符串, 不如记录密码.

这样, 另一个方案是, 明文记录所有密码, 将记录文件整个加密. 不少 PasswordManager是这样做的, 他们大多使用AES和Blowfish. 但我想使用 GnuPG.
而且我希望这个文件的明文是可阅读的, 这样在密码管理软件不可运行时, 依然可以查看密码. 或者说, 我希望加密功能与管理功能分开, 并且这个文件的明文可以手动管理.

我没有找到这样的软件. 有人提议直接用GnuPG+编辑器的方式, 这是个好主意. 但设想在你后面有人时, 你如何调出密码登录网站? 所以一个简单的查询界面还是要的.

将密码放在文件里, 这样, 你不需要记密码因而可以使用随机密码. 这样, 密码是你有的, 而不是知道的, 从而极大的提高了密码与个人信息的无关性.

这样做法, 最大的不足是, 查询密码有时不方便. 设想你在网吧, 想查看一下邮件, 却不知道自己邮箱的密码. 想查看一下加密文件, 却没有相应的运行程序.

这是为什么需要将加密与密码明文管理分开的原因之一. 加密软件如 GnuPG是有跨平台的, 明文格式有最小的平台问题.

这些思考的结果, 是练习Python写了一个密码管理脚本, 方便添加, 查看, 编辑, 及密码到Clipboard的应用, 基于 pyme 扩展.

将每个密码项用空行分隔, 每项定义为:

ID:
Username:
Password:
Url:
Notes:
Tags:

这些密码项存储在GPG文件里

No comments: