Computer Programming
Wednesday, July 19, 2023
我最后还是放弃了使用纯文本记录密码
我原本对把密码库存放在云端嗤之以鼻,但是在了解BitWarden后,我改变了
站在渋谷スカイ上看到的日落的景色

在大学我第一次制作一个论坛系统的时候,我第一次接触到注册用户中存储用户密码的逻辑。在那时我明白了,一般在数据库中都是不明文存放用户的密码的,而只是存放用户密码的指纹而已。不过也就是在那时,我意识到即便设计者偷懒或别有用心直接存储用户的明文密码,用户也是无法知道的。在之后,我就开始着手将我所有的密码修改成不同的字符串。

我在很长的一段时间里,我都是先使用随机数生成器来生成随机字符串作为密码,随后将用户名密码域名等信息记录在记事本上。我这一习惯持续了几年之久,中间虽然我的使用方式有所变更——从无序的记事本变为有缩进的结构,再到使用toml,yaml等格式,加上了git进行版本管理,准备了额外的磁盘进行备份——但都不改变一个事实,密码只能在本地使用。

我把密码存放在我的笔记本中,只有我的笔记本在我身边时,我才能保证我能登录上所有注册过的网站。这样做显然是最安全的,但是相应的缺点也是很明显的,比如说每次使用密码时都需要打开文本编辑器,编辑时也需要直接使用文本编辑器操作,这容易误操作(尽管有git版本工具)。此外在你每次进行屏幕共享,或是直接将电脑上的内容向身边的人展示的时候,都可能会因为忘记关闭正在编辑的密码本显示在屏幕的正中央而导致密码泄漏(尽管是身边的人)。

在忍受着这种原始的密码管理方式的同时,我也在寻找其他的解决方案。我尝试过使用知名的1Passoword产品,我上大学时使用它记录过我的一些账户密码,但是考虑到其是一个付费软件外加我对内部安全风险的担忧,我最后还是放弃了。我做不到把重要的密码也存放上去。

我也尝试过使用Safari和Chrome自带的密码填充/保存工具,非常好用。但是他们公司从未承诺过有采用Zero-Knowledge-Encryption,以及他们也从未公布过加密部分的代码。考虑到他们公司本身的规模,已经大到肯定不可能让用户密码泄漏这种事情的程度。但是我还是难以放心。

最后我发现了BitWarden。这是一个开源的软件,利用简单且安全,(使用rust版的话)还很节省服务器资源。我昨天火速在自己的服务器上部署了一个。经过使用后,发现它还支持浏览器插件,自动保存浏览器中填写的登录密码,使用Touch ID解锁等等功能。

接下来我只需要随着时间,慢慢把已经记录到本地密码本中的密码慢慢迁移到BitWarden上就好了。