前言

既然有人想看那我就不咕了嘻嘻

不知道在哪部电影里看到过这样一句话:根据社会工程学,正常人人脑是不会记住超过3种以上完全不同的复杂密码
所以你只要泄露一个密码,就能基于这个密码推导从而破解大部分你其他的密码,更何况大部分人不同账号密码都是相同的(说的就是我哈哈哈)

之前我看到这里的时候大为震惊但是却又无可奈何,因为使用完全不同的复杂密码成本太大了,直到我知道了密码管理器

但其实之前也一直用的lastpass,但是感觉托管在第三方平台不怎么放心,特别是俄乌战争之后某些科技企业做出的某些事情更加加重了我的忧虑

所以在我知道了KeePass这个东西之后果断选择它

优点

这个我都不用多说,完全免费、开源、自托管、安全性高

光光这几点就足以让我沦陷,其他的优点自己百度Google就知道了

导入

网上的KeePass在电脑端有主流的Keepass和KeePassXC,手机端有KeePass2Android,各有各的特色

目标

实现多端密码同步,浏览器自动填充。

准备

软件和插件

  • KeePass(可能需要打中文补丁?)
  • KeePassXC
  • KeePass2Android(可以去Google商店下载)
  • KeePassXC-Browser

电脑端

首先我们在电脑端安装KeePass和KeePassXC

这两个软件有什么不同呢?

KeePass功能强大,拓展性极高,管理数据库能力很强,但是使用过程中较为麻烦且对接浏览器有bug,适配性不好

KeePassXC便捷,使用方便,功能虽然没KeePass多但是日常使用已经够了,且与浏览器对接很好,适用于自动填充

所以这里我们将两个软件搭配使用,这样扬长避短,完美~

手机端

在Google Play上下载即可,或者也可以去github上下载

开始

创建数据库

焯,发现在主机上截不了图,只能在虚拟机里演示了

下面这两个应用的截图

KeePassXC:

KeePass:

创建数据库我选择用KeePass,我感觉它可选功能更多

文件 里点击新建 ,然后勾选显示高级选项

这时候我们是在Windows安全桌面里进行操作,一般病毒是无法截获安全桌面的内容的

然后输入你的管理密码(一定要自己记住并且要足够复杂,这个数据库可是关系着你的大部分账户安全的哦)

接着我们勾选密钥文件/提供器 ,选一个文件,可以是任何文件,因为最后管理器应该是取文件Hash,所以啥都可以

不过最好不要太大,不然肯定会影响解锁数据库的时间,而且这个大小也对数据库安全没有什么实质性影响,毕竟就是一个文件hash,固定的长度

注:千万不要勾选Windows用户账号!!!不然一旦系统崩了你就会失去访问权限,即使你创建一个一模一样的用户!!!而且你无法在其他平台使用这个数据库了

下面是图片

我这里就只是做一个测试,所以密码很简单,大家设置的时候千万不要设置过于简单的密码

注:数据库和密钥文件请分开保存,不然毫无意义

数据库配置

常规那一栏怎么配置都可以,数据库叫啥自己定,这应该没有什么疑问吧

重点戏是安全那一栏

我们打开安全选项卡,可以看到各种加密方式和密钥转换

加密

我这里选择的是AES,当然你也可以选择ChaCha20,你甚至可以通过添加插件来支持Twofish等加密算法

注:你要确保你加的加密算法其他平台也支持,不然就无法多端同步了

密钥转换

密钥导出函数

密钥导出函数我选择的是Argon2d,当然你也可以选择AES,根据官方文档https://keepass.info/help/base/security.htmlArgon2系列和AES不相上下

我之前也选择的AES,迭代次数一亿次(doge 。。。然后我就看到了我PC处理器(I7-12700H)和手机处理器(火龙果888)的差别(笑哭),尽管我觉得这很正常,毕竟这俩东西价格差了不止一点半点。。。

在KeePass选项内Argon2系列里面可选的有Argon2d和Argon2id,这两个区别官方的说法大概是Argon2d更能抵抗 GPU/ASIC 攻击

应该也就是GPU暴力破解吧,毕竟我也不是学密码学的(doge

Argon2id的话则是可以更好的抵御侧信道攻击(可以自己去百度了解)

我觉得这玩意对于我们绝大多数人来说完全没必要(知道侧信道攻击的就知道我说这话的意思)

既然你数据库都被用来侧信道攻击了,你还会用KeePass来保护你的账户吗???真就高安算法保护两位数存款是吧(doge

所以我选择Argon2d

内存大小

内存大小官方有相关说明,但是我表示他说了和没说一样,而且按照他那种设置方法感觉好难计算到底要设置多少,于是我选择摆烂(doge

看心情设置个64MB扔那里(理直气壮)

迭代次数我设置的100,你可以在设置完成后点击下方的测试 按钮来看解锁数据库需要多久时间

也可以选择1秒延迟 来让程序自动设置,然后自己稍加改动,最后调到一个你认为心情比较好的数字(滑稽

并行数

我用的默认,同样是看心情,怎么爽怎么来

下面是图(我在虚拟机里运行的1秒延迟,所以性能会差很多,不要按照虚拟机里面来填迭代次数,除非你电脑性能和我虚拟机一样拉胯哈哈哈)

其他

看心情,还是那句话,怎么爽怎么来

应急表单打不打印看心情(滑稽)

弄完就长这样了

导入数据库

你可以从lastpass和其他密码管理器导入数据到KeePass,或者把手写的密码手动导入(666狠人)

配置KeePass软件

KeePass

点击工具->选项 进入软件设置

这里面你可以对软件的安全相关方面进行设置,这里就不详细介绍了,都是中文,根据自己的喜好来就行

KeePassXC

这才是我们今天的主角

首先打开KeePassXC,是不是顿时有种跨越了世纪的感觉,UI设计风格终于跟上来了。。。

这不比KeePass好看???

功能上和KeePass都差不多,没啥可以介绍的,自己多玩一会就知道了

注:我不推荐将TOTP存在KeePass里,同样的道理,存了那TOTP就没任何意义了

我TOHP采用的是Authy+CanoKey的组合,Authy用于多端同步,CanoKey用于在非信任的电脑上操作(同时也可以起到备份的作用)

KeePassXC-Browser

Chrome浏览器插件,用于自动填充,当然Edge也能装

在扩展商店搜索即可

emmmm我虚拟机edge没更新,用不了拓展。。。要不不会的自己去查查???没多大难度,真的

KeePass2Android

我是直接Google Play 上下载的(不要问我为什么可以下,问就是我会魔法嘻嘻嘻)

同样,这软件不给截屏,而且我没Android的虚拟机。。。只能文字描述了

注:最好不要在手机里更改数据库密钥派生函数和加密算法,会和KeePassXC出现兼容性问题,KeePass倒没这个问题

自动填充

应用->密码输入接口->自动填充服务 里,这个根据不同Android版本会有不同的使用体验

我感觉还行,一般般,很多需要自己手动指定(第一次指定后就不用了),我是Android13,较低版本的Android可能使用体验不是那么美好

快速解锁

用于你第一次解锁打开数据库后退出KeePass2Android(没关闭后台程序)或者锁屏之后(具体看自己设置的安全策略) 不用再次输入天长的主密码,只需输入密码后三位(具体根据你的安全策略),高版本Android或者兼容的Android甚至可以搭配生物指纹实现飞一般的感觉解锁

具体设置在应用->快速解锁

数据库->生物识别解锁

注:在生物识别解锁我推荐对快速解锁启用指纹解锁

因为启用完整的指纹解锁会将主密钥保存在你的手机里,虽然会使用Android的密钥库加密

但在原则上我们是不允许这种情况发生的,主密钥应该仅储存于我们自己的大脑中,这才是最安全的方法(迫害妄想症。。。)

虽然说自己的两位数存款根本不值一提,但是既然要搞那就要搞全套的是吧,不能搞得哪里都是漏洞(doge

多端同步

本文最核心也是最简单的地方来了(当然也是最重要的地方)

我们主要采用WebDav协议进行多端同步

所以我们需要一个支持WebDav的服务商

  • OneDrive
  • 坚果云
  • 自建

网上很多人采用的是坚果云,我不喜欢,我就是喜欢自建,喜欢自己搞自己折腾(闲得慌

我用的Alist挂服务器创建服务器本地储存然后开WebDav进行多端同步,网上教程多多

坚果云和onedrive网上也有很多很多很多的教程,我这里就不造轮子了,没意义

最后账号WebDav一连,数据库一同步,诶多端同步就完成了~

注:最好采用HTTPS连接WebDav,可以规避很多风险

后记

注:要定期备份数据库文件,不然哪天数据库文件寄了那就真寄了
涉及到数据库重大更改(更改算法、密钥之类的)的时候尽量先备份,免得出现概率性问题导致数据库损坏,寄

参考

使用离写这篇文章太久了,参考找不到了。。。