Aegis 中文文档 下载 App

加密设计速览:AES-256-GCM 与 scrypt 是怎么用的

官方文档说了什么

这部分内容全部转述自官方仓库的安全设计文档(docs/vault.md),它详细公开了保险库的加密方式与文件格式。敢于把设计细节写进公开文档,本身建立在对方案的信心之上。下面用尽量平实的语言过一遍要点。

两个密码学构件

AES-256-GCM(加密本体):保险库内容用它加密。AES-256 是当前主流的对称加密标准,GCM 模式在加密的同时生成完整性校验标签——文件被篡改过一个字节,解密时就会报错而不是解出一堆乱码。这类「加密 + 防篡改」一体的方案是现代加密的标配。

scrypt(密码派生):你的密码不能直接当密钥用,要先经 scrypt 反复运算派生出真正的密钥。scrypt 的特点是刻意消耗大量内存,让暴力逐个试密码的成本急剧上升。参数为 N=32768、r=8、p=1——与 Android 系统自身全盘加密使用的参数一致,是移动设备内存条件下相当扎实的选择。

密钥的层级与槽位

设计上分三层:

  1. 创建保险库时随机生成一把 256 位主密钥,真正加密数据的是它;
  2. 你的密码经 scrypt 派生出另一把密钥,用来「包裹」主密钥;
  3. 如果开启了生物识别,Android 系统安全芯片(Keystore)里会再生成一把受生物识别门禁保护的密钥,同样包裹一份主密钥——每个包裹副本称为一个槽位(slot),设计与磁盘加密领域的 LUKS 槽位机制同源。

这样多把钥匙都能开同一把锁:日常用指纹秒开,密码则作为永远有效的备用钥匙。代价也明确——安全性取决于最弱的那个凭证,密码太弱,生物识别再强也白搭。

对使用者的实际含义