KeePass搭建一个私人密码库

2023-11-14

文章作者: GoodBoyboy
文章链接: https://blog.goodboyboy.top/posts/2546190081.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GoodBoyboy 's Blog|惬意小屋-点滴记忆!

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

不知道在哪部电影里看到过这样一句话:根据社会工程学,正常人人脑是不会记住超过 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,可以规避很多风险

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

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

文章作者: GoodBoyboy
文章链接: https://blog.goodboyboy.top/posts/2546190081.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GoodBoyboy 's Blog|惬意小屋-点滴记忆!


作者: GoodBoyboy
链接: https://blog.goodboyboy.top/posts/2546190081.html
来源: GoodBoyboy 's Blog|惬意小屋-点滴记忆
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KeePass搭建一个私人密码库 的相关文章

  • 如何从网页启动 Windows 应用程序?

    我们有一个公司内部网 并且权力机构认为拥有一组代表大多数代表使用的应用程序 Outlook Excel 少数其他应用程序 的图标 链接会很好 这个想法是 如果安装了应用程序 单击链接 图标将在客户端计算机上启动该应用程序 有人曾经有过这样的
  • Sigar API for JAVA(需要指南)

    我已经下载了 Sigar API http support hyperic com display SIGAR Home http support hyperic com display SIGAR Home 并希望在项目中使用它来获取有关
  • 如何用if条件编写ini文件

    我想编写一个带有 if else 条件的 ini 文件 我用 python 中的 ConfigParser 解析它 如何在ini文件中使用if和else语句 如果我明白你在问什么 您可能想要做的是这样的 在 INI 文件中设置条件值 sec
  • Node.js 客户端中的 Windows 集成身份验证

    当使用node js作为客户端时 是否可以使用Windows集成身份验证连接到服务器 例如连接到IIS时 我对此的搜索仅出现使用 node js 作为服务器的结果 2015 年更新 现在有一些模块实现了 Windows 集成身份验证 节点
  • 可以禁用“应用程序错误”对话框吗?

    我使用 Hudson 作为持续集成服务器来测试 C C 代码 不幸的是 我在某个地方有一个错误导致内存损坏 因此在某些 Windows 计算机上我有时会收到一个 应用程序错误 对话框 解释一条指令引用了无法读取的内存 弹出此对话框并基本上挂
  • WinError6 句柄无效 Python 3+ 多处理

    我正在运行一个 Python 3 7 Flask 应用程序 它使用flask socketio设置一个socketio用于浏览器客户端的服务器 另一个连接到单独远程的Python进程socketio服务器和交换消息 以及另一个从 PIR 传
  • Windows:列出并启动与扩展关联的应用程序

    如何确定与特定扩展名 例如 JPG 关联的应用程序 然后确定该应用程序的可执行文件所在的位置 以便可以通过调用 System Diagnostics Process Start 来启动它 我已经知道如何读取和写入注册表 注册表的布局使得以标
  • 怎样才能使 Windows 成为一个开箱即用的 POSIX 兼容操作系统?

    这个问题的动机是我的一个牵强的梦想 即 nix 平台上可用的许多优秀软件可以轻松移植到 Windows 微软最近对开源和开放性采取了不同的方法 所以我真的很想知道如果微软有这样的倾向 这样的事情会有多可行 我很好奇的一些更具体的事情是 是否
  • 用于在 Windows 中自动执行桌面活动的 Python 代码

    我想使用 Python 在 Windows 环境中自动化桌面活动 怎样才能做到呢 一些例子也会有帮助 我所说的桌面活动是指控制鼠标和键盘 访问活动窗口属性 双击桌面上的图标 最小化和最大化窗口 通过键盘向输入弹出窗口输入数据等操作 看一下S
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 批量设置命令的输出和错误以分隔变量

    在Windows 7批处理 cmd exe命令行 中 我试图将命令的标准输出 stdout 和标准错误 stderr 重定向到单独的变量 因此第一个变量设置为输出 第二个变量设置为输出 变量设置为错误 如果有 而不使用任何临时文件 我已经尝
  • 已安装全局 NPM 包但未找到命令

    我已经全局安装了两个 npm 包 下载 https www npmjs com package download and 谜虚拟盒 https www npmjs com package enigmavirtualbox通过命令行 npm
  • Unix 命令“host” - Windows 中有等效命令吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在一台 Windows 7 机器上 按照本文指示我使用 Unix 命令 host https devcenter heroku com
  • Windows 版 GitKraken 中的文件名太长

    正如建议的Q22575737 https stackoverflow com a 22575737 6623589 我已经更新了我的注册表并设置了git config system core longpaths true在处理长路径时 问题
  • 如何使用 Python 与窗口的 GUI 交互?

    假设您想打开myapp exe 打开第三个菜单 然后选择第二个菜单项 即像用户使用键盘或鼠标一样 然后在对话框窗口中选择第二个按钮 pyahk https pyahk readthedocs io en latest and pyautog
  • Jekyll for GitHub Pages 在 Windows 上找不到 rouge

    我刚刚在 Windows 上安装了 Jekyll 我正在尝试使语法突出显示与 rouge 一起使用 我已经设定highlighter rouge在 config yml 上 在文件 posts 2015 08 13 my first pos
  • 我如何移动粘性/捕捉 wpf 窗口

    当我移动 主 窗口时 我想移动两个或更多粘性窗口 我想做这样的事情 private void MainWindow PreviewMouseMove object sender MouseEventArgs e if e LeftButto
  • 在 WSL Ubuntu 20.04 上安装 npm 后,我收到消息“/usr/bin/env: ‘bash\r’: No such file or directory”

    运行时我看到以下消息npm install or npm来自终端的命令 执行中node按预期工作 gt npm install usr bin env bash r No such file or directory 2023 年 7 月更
  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序,同时使用 CTypes 在 python 中读取自定义 DLL

    我正在尝试编写用 python 封装 C 库的代码 我计划使用 CTypes 来完成此操作 并使用 Visual Studio 来编译我的 DLL 我从一个简单的函数开始 在 Visual Studio 内的标头中添加了以下内容 然后将其构
  • subprocess.Popen('start') 失败

    在 python 中运行此命令将导致 WindowsError 指出找不到指定的文件 FAILS import subprocess subprocess Popen start notepad exe 在命令窗口中 它可以工作 start

随机推荐

  • emc re 整改 超标_CE认证EMC测试不合格,如何整改 ;

    首先我们来从EMC测试项目构成说起 EMC主要包含两大项 EMI 干扰 和EMS 产品抗干扰和敏感度 当然这两大项中又包括许多小项目 EMI主要测试项 RE 产品辐射 发射 CE 产品传导干扰 Harmonic 谐波 Ficker 闪烁 E
  • Java--垃圾回收机制

    垃圾回收算法思想 引用计数 标记清除 先标记 然后再整理 会存在效率低下的问题 存在内存碎片 进而提前触发GC 复制拷贝 将内存区域分为两块 一块存储对象 如果对象满了 那么将存活的对象移动到另外的一块区域中 新生代中 空间利用率底 标记整
  • win11系统之安装MySQL8.0版本

    win11系统之安装MySQL8 0版本 一 本次实践介绍 1 1 MySQL简介 1 2MySQL8 0特点 1 2 环境介绍 二 下载MySQL软件包 2 1 MySQL官网 2 2 下载MySQL安装包 三 环境配置工作 3 1 解压
  • en结尾的单词_en后缀形容词——动词

    形容词 动词 名词 直接加en Bright brighten brightness Broad broaden broadness Dark darken darkness Deaf deafen deafness Deep deepen
  • 【正点原子STM32连载】第五十七章 USB读卡器(Slave)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1 实验平台 正点原子MiniPro H750开发板 2 平台购买地址 https detail tmall com item htm id 677017430560 3 全套实验源码 手册 视频下载地址 http www openedv
  • java文档注释

    1 3注释 1 为什么会有注释 如果一个工程的代码量较大 代码过于繁杂 可能会在编写的过程中忘记了某行或者某段的用途 可以通过注释帮助编写者回忆起代码的用处 也可以让后来者理解明白编写者写代码的用途 方法或者其他用途 2 注释的特点 不参与
  • 微服务负载均衡器Ribbon实战

    1 什么是Ribbon 目前主流的负载均衡方式有两种 集中式负载均衡 在客户端和服务端中间建立一个独立的代理来做负载均衡 硬件比如F5 软件比如Nginx 根据客户自己的情况做负载均衡 Ribbon 就属于这一种 Spring Cloud
  • 互联网行业潜规则:宁花11k招新人,不花9k留老人

    最近一位互联网从业者发出这样的感慨 有些互联网公司 宁愿花11k招新人 也不愿意花9k留住老员工 为什么 对此 许多网友给出了答案 有的网友说 因为老员工的能量已经耗尽 再也不能为公司创造更高的价值 有的网友说 因为只要给一个老员工涨工资
  • Vmware Workstation Pro16安装

    Vmware Workstation Pro16安装 一 右击打开安装包 二 下一步 三 勾选 我接收许可协议中的条款 点击 下一步 四 修改安装路径 五 两个复选框都取消勾选 六 下一步 七 安装 八 许可证 九 完成
  • 线性表的查找算法-C语言

    文章目录 一 实验目的 二 实验内容 三 实验工具 四 实验代码 五 实验结果 六 总结与思考 一 实验目的 了解查找的基本概念 理解顺序查找 折半查找和分块查找的思想 掌握折半查找过程的判定树构造方法 实现线性表的查找算法 二 实验内容
  • mybatis中的if-else语句的使用解答

    1 mybatis中if else语句的语法 使用模板样例
  • 什么是沙箱技术?与容器有什么区别

    沙箱和容器的 隔离 机制 首先 什么是沙箱 它本身就是一种线下生活现象的虚拟化 现实世界里 小孩子们在沙地 沙滩上用木板隔离出一个方盒子 在盒子里堆砌 创造各种东西 城堡 房屋 山丘 这就是一个沙箱 它有两个根本特点 一 它有边界 通过木板
  • aix oracle 11 补丁包,oracle 11g for aix6.1安装基本步骤(含升级11.1.0.7)

    oracle 11g for aix6 1安装基本步骤 含升级11 1 0 7 1 检查物理内存 swap空间以及tmp空间 usr sbin lsattr E l sys0 a realmem 检查内存至少1G usr sbin lsps
  • anaconda创建python环境

    1 前提 系统中安装了anaconda沙箱环境 下载地址 anaconda官网 conda V 检验是否安装以及当前conda的版本 2 conda常用的命令 1 conda list 查看安装了哪些包 2 conda env list 或
  • bcd码和十进制码之间的转换

    BCD码转十进制 static u8 BCDToInt u8 value unsigned char temp 0 temp value gt gt 4 10 temp value 0x0F return temp 十进制转BCD码 sta
  • java awt linux_解决在linux下awt调用错误的问题

    在java中使用awt在服务器上处理图片的时候发现有错 第一遍执行 500 Servlet Exception java lang InternalError Can t connect to X11 window server using
  • MyBatis自动生成实体类

    MyBatis MySQL生成实体类 需要的工具jar包 mybatis generator core 1 3 2 jar mysql connector java 5 0 4 jar 第一步 编写一个MybatisGeneratorUti
  • android 之 如何让app没有图标

    我们有时候需要让我们的app没有图标 不要问我没有图标要干啥 我只是说的一个需求 单讲技术不说别的 首先我们要获得 PackageManager 的对象 PackageManager packageManager getPackageMan
  • Caffeine缓存的使用

    1 springboot集成Caffeine
  • KeePass搭建一个私人密码库

    文章作者 GoodBoyboy 文章链接 https blog goodboyboy top posts 2546190081 html 版权声明 本博客所有文章除特别声明外 均采用 CC BY NC SA 4 0 许可协议 转载请注明来自