桌面上的保险库:Argon2id 与抵御密码猜测的档案
在 AirGap 模式下,AirNox 的桌面端不保存任何签名密钥,但它仍然保存着值得保护的东西:你有哪些钱包,哪些地址属于你,你的地址簿,你的设置。这一切都存放在一个加密档案(profile)里。

本页内容
一个档案
桌面端知道的关于你的一切,都在一个加密文件里:钱包及其地址和标签、地址簿、网络设置、与手机的配对信息,以及非气隙(air-gapped)钱包所用的助记词(seed)。它只能在创建它的那台机器上、用你的密码打开,写入时也像对待钱包文件那样谨慎。
Argon2id,以及内存困难型为什么重要
单靠一个密码,是很弱的秘密。人们爱用短密码,而面对计算成本低的哈希,一台快速的计算机每秒可以尝试数十亿次猜测。防御之道是让每一次猜测都很昂贵,而且贵得让专用硬件也走不了捷径。
AirNox Wallet 用 Argon2id 对你的密码进行拉伸。Argon2id 是密码哈希竞赛(Password Hashing Competition)的获胜者,也是目前专门推荐用于这项任务的算法。Argon2id 是内存困难型(memory-hard)的:计算它不仅需要处理器时间,整个过程中还要一直占用一大块内存。显卡有成千上万个核心,却没有成千上万块大内存,所以在 GPU 上并行跑猜测的惯用手段几乎占不到便宜。专门定制的硬件也好不到哪里去。

按你的机器校准
这个成本不是一个固定数字。创建档案时,钱包会测量你的电脑,调整 Argon2id 的参数,让一次计算在这台机器上耗时约一秒,并占用一大块内存。在高速工作站上,这意味着每次猜测要做更多的计算;在小小的单板计算机上,这意味着参数会贴合硬件的条件,同时依然耗时约一秒。

这种不对称正是关键所在。你每次解锁付一次代价,一秒钟算不了什么。猜密码的人却要为每一次猜测付出代价。一百万次猜测,就是一台机器全力运转一百万秒,每次还要占用一大块内存,而且没法把这些计算分摊到一整排显卡上来降低成本。
与机器绑定
档案与创建它的电脑绑定;在配有 TPM 2.0 安全芯片的机器上,这种绑定锚定在芯片中。复制到另一台机器上,单凭密码打不开这个文件。这让一个被盗的文件,比通常情况下难对付得多。
保险库的其他部分
递增延迟:输错之后,下一次尝试前的等待时间会越来越长。本就昂贵的猜测,变得既昂贵又缓慢。
闲置自动锁定:你一离开,档案就会自动锁定。回来时只需输入一次密码。
锁定内存:档案打开期间,其中的机密数据存放在操作系统被要求不得交换到磁盘的内存中。助记词只在需要时才留在那里,用完立即清除;钱包关闭或锁定时,所有内容都会被清除。
防截屏录屏:钱包让自己的窗口不出现在截屏和录屏中,所以同一台电脑上的截屏工具看不到你看到的内容。
安全写入:每次保存都是原子操作。新文件先完整写好,再替换到位,所以写入中途崩溃时,你留下的是上一个完好的版本,绝不会是写了一半的文件。损坏的文件会被移到一旁并在文件名上做标记,绝不会被悄悄使用。
仅限所有者的权限:档案只有你的用户账户能读取,这台机器上的其他人都不能。
它能保护什么,不能保护什么
对于气隙钱包,桌面端档案保存的是地址和设置,密钥留在手机上,保险库保护的是你的隐私和配置。对于助记词存放在桌面端的钱包,保险库就是挡在拿到你文件的攻击者与你的资金之间的那道屏障,这也是它被设计成这样的原因。也正因如此,单独使用 AirNox Wallet、把助记词放在这个保险库里,对日常操作来说是稳妥的选择;而对最重要的资产,AirGap 依然是终极的一层。无论哪种情况,设一个强密码都是你自己的事。保险库能让每一次猜测都付出代价,却没法把短密码变长。