怎么设计及保存密码
个人密码的设计思路与几种存储方案
目录
保存密码的目的只有一个:保证账号安全。下面我们分阶段来分析。
问题分析
- 首先要注意,不能给所有账号设置相同的密码,否则一旦某家网站泄露,就会面临撞库攻击的风险,因此需要给不同账号设置不同的密码。我之前就被盗过几次号,原因就是我的密码几乎都是统一的,除非有些网站强制要求包含大写字母和符号。可随之而来的问题是:密码太多,难以记忆。
- 这时可以准备一个笔记本,把自己不同账户的密码都记下来。用笔记本记录密码也有两个问题:其一,笔记本丢失或忘带;其二,笔记本被他人偷看。
- 为了解决上述问题,可以做好备份——随身携带一本,家里放置一本,这样可以解决遗失问题。但如何解决忘带问题呢?出门不小心忘带笔记本了,这时要在室外输入一个密码怎么办?最好的解决办法是网络备份。
- 网络备份的方案有很多,比如可以用网盘、网络笔记软件,或者 GitHub 来存储密码文件。
- 这时又会面临新的问题:存储在网络上的文件如何保证安全?即不被人发现,或者即便被人发现,也无法窥探到真实的密码内容。
所以这里最关键的问题,就是如何解决密码在网络上的存储问题。
当然,我们可以选择第三方商业化或开源的密码管理软件,但它们都存在一些问题:
- 商业化软件最大的问题是不放心,比如密码可能被泄露,或者不知道该商业公司什么时候运营不下去、直接跑路。
- 而开源软件往往需要自己搭建服务器,这又是非常麻烦的事情。
下面我提供几个解决方案。
解决方案
方案 1:文本加密
比如可以选择 Vim 的 -x 选项对文本进行加密,只需一个主密码即可管理所有密码:
vim -x passwords.txt提示:
vim -x默认的加密算法(cryptmethod)在不同版本中并不一致,老版本可能是较弱的zip。建议在~/.vimrc中加上set cryptmethod=blowfish2,或在打开后执行:setlocal cm=blowfish2再保存,以使用更强的 Blowfish2 加密。对极高敏感度的数据,更推荐使用gpg或age等 dedicated 工具。
加密后的文本文件可以存储在 GitHub 私有仓库或云盘中。
方案 2:文本明文 + 暗号
即文本存储用明文,但要带上只有自己知道的暗号。将文本存储在自己的 GitHub 私有仓库或私有笔记中。
由于使用了暗号,所以即使被泄露,别人也不知道你真实的密码是多少。
下面列举一些暗号方法:
单词 + 数字 + 符号转换:把密码设置为一个单词 + 一个数字 + 符号的形式,但我们要先做一层转换。比如:
- 在明文中记录为
papanameπ24amazing,实际密码为weiguo4159!(假设父亲叫卫国,π 从小数点后第二位开始数四位即4159,amazing 表示惊叹对应!)。 motherbirthe14what就是May5th7182?(假设母亲的生日是五月五日,自然常数 e 从小数点后数四位即7182,what 表示疑问对应?)。motherbirthe15star就是May5th71828*(假设母亲的生日是五月五日,自然常数 e 从小数点后数五位即71828,star 表示*)。
- 在明文中记录为
ASCII 码映射法:将 ASCII 码 与数字对应起来,可用于纯数字密码。比如:
AAA表示656565(大写字母A的 ASCII 十进制值为 65)。键盘协同记忆法:比如明文是
ZZ,实际密码是qweszxc7895123,就是键盘最左边的九宫格和数字小键盘的九宫格,按照Z的笔顺依次输入的结果。