内容提要
作者分享了个人数据安全经验和改进措施,包括重新生成SSH密钥、使用硬件密钥、加密存储重要数据、全盘加密、使用密码管理工具等。他还讨论了SSH密钥管理、密码管理、数据备份与同步、个人电脑数据安全等问题,并提出了改进方向。
延伸解读
SSH密钥保护:passphrase并非绝对安全
文章指出,OpenSSH的passphrase保护依赖KDF算法,而旧版RSA密钥长期使用基于MD5的弱KDF,即使添加passphrase也易被破解。ED25519密钥从OpenSSH 6.5起使用bcrypt KDF,但默认16 rounds安全性仍不足。作者建议使用`ssh-keygen -t ed25519 -a 256`增加KDF轮数,并强调在性能允许下提高轮数可显著提升暴力破解成本。
密码管理:从浏览器到password-store的迁移
作者放弃浏览器内置密码管理,转向开源工具password-store,利用GPG加密每个密码文件,并通过Git私有仓库同步。文章提醒,GPG默认参数使用AES-128和SHA-1,安全性不足,需显式指定`--s2k-digest-algo SHA512 --s2k-cipher-algo AES256`并提高迭代次数。此外,为不同用途生成独立子密钥可限制单点泄漏的影响。
跨平台加密备份:rclone与restic的取舍
对于多端加密备份,作者对比了rclone和restic:restic支持增量快照和灵活保留策略,适合需要历史版本回滚的场景(如PVE虚拟机备份);rclone则更通用,支持多种云存储。两者均使用现代密码学算法(如scrypt KDF、Poly1305-AES),且活跃度高。作者最终选择age、rclone和restic组合,分别应对文件加密、云同步和快照备份需求。
灾难恢复设计:避免循环依赖与密钥管理
作者强调灾难恢复数据应离线加密存储,并采用双副本策略。其secrets私有仓库包含所有关键解密密钥,通过所有桌面电脑的SSH主机公钥加密,并添加灾难恢复公钥作为后备。为避免循环依赖,secrets和password-store仓库的备份直接使用age对称加密,而非rclone。最终只需记忆3-5个密码即可解密整个链路,兼顾安全与可恢复性。
Q&A
如何生成更安全的SSH密钥?
推荐使用ED25519算法,并通过-a参数增加bcrypt KDF的rounds数,例如:ssh-keygen -t ed25519 -a 256 -C "xxx@xxx"。rounds值可根据CPU性能调整,在M2 MacBook Pro上256 rounds约需2秒。
为什么需要给SSH密钥添加passphrase?
添加passphrase可以在密钥泄漏时减少损失。但需注意,旧版OpenSSH对非ED25519密钥使用不安全的MD5 KDF,即使有passphrase也易被破解。ED25519密钥使用bcrypt KDF,但默认rounds数较低,建议手动增加。
password-store如何管理密码?
password-store使用GPG加密每个密码文件,通过文件树组织账号密码。数据可存储在Git私有仓库中,支持多端同步。在Android和浏览器中分别使用Android-Password-Store和browserpass扩展读写。
如何安全备份灾难恢复数据?
使用rclone加密存储到两个U盘(双副本),放在不同地方,每半年到一年检查一次。rclone配置本身设置强passphrase保护,并通过secrets私有Git仓库多端加密同步。
NixOS全盘加密如何配置?
使用LUKS2全盘加密,命令示例:cryptsetup --type luks2 --cipher aes-xts-plain64 --hash sha512 --iter-time 5000 --key-size 256 --pbkdf argon2id --use-urandom --verify-passphrase luksFormat device。同时启用Secure Boot,passphrase使用长随机字符串。
跨平台加密备份工具有哪些推荐?
推荐age、rclone和restic。age使用ChaCha20-Poly1305 AEAD和scrypt KDF;rclone使用XSalsa20-Poly1305 AEAD和scrypt KDF;restic使用AES-256-CTR和Poly1305-AES,支持增量快照。