保持离线比特币钱包的最安全方法
一种保护在线存储的方法
对保护任何感兴趣的数据文件不被访问非常有帮助的一件事是使用强制访问控制(在本例中为 SELinux)和第二台机器,可能是气隙。你需要一个在钱包机器上运行的小程序(我将banker
在这篇文章中称它为),它的工作是生成挑战并仅向经过正确身份验证的请求释放硬币。
我们依靠 SELinux 来执行以下操作:阻止对比特币和身份验证种子文件的读取、写入和权限更改访问,除非banker
它产生任何应用程序。我们还依靠 SELinux 来防止自己在未重新启动系统的情况下退出强制模式。
通过banker
打印随机种子值和通过将种子值与您的身份验证种子组合生成的相应 HMAC 输出来验证任何提款。此身份验证种子保存在其他地方,可能在您的手机上。您可以使用任何您喜欢的方法来交换已签名的请求,例如电子邮件、scp、Web 界面,或拍摄 QR 码的照片并通过手机上您自己的应用程序运行它,然后使用你电脑的摄像头。去野外!你也可以使用一个递增计数器,它永远不会让一个相同或更低编号的请求成功,以进行单向身份验证,或者如果你觉得很花哨,你可以使用 GnuPG 和OpenPGP智能卡来进行身份验证密码键盘。
在一段时间后过期任何请求:五分钟到一个小时,具体取决于您的感觉有多快。使任何立即生效的请求失效,以免它们被重放。并不是我推荐它(纵深防御总是明智的),但理论上这应该允许你允许某人以 root 身份登录到你的机器,但仍然无法窃取你的硬币。
离线存储的安全性
我意识到我实际上并没有回答你最初的问题,所以接下来是:你试图通过以下两种方式之一来保护你的钱:
- 有人偷了你的钱包
- 你丢了你的钱包
在离线存储的这两种情况下,如果您在数据被打印出来并从计算机内存中删除之前没有受到损害,您就会受到保护。第二部分是一个很大的警告:如果您正在打印文件,它们可能会作为临时文件留在磁盘上的某个位置。
两种系统的损失风险大致相等。您的密码应该非常长且复杂。如果您忘记或丢失了写有密码的纸张,您的钱包就会丢失,本质上会着火。如果您丢失了打印个人值的纸张,也会发生同样的情况。