// glossary / hkdf
HKDF.
介于“链接里的随机字节”和“打开纸条的密钥”之间的那一步。
// definition
HKDF(基于 HMAC 的密钥派生函数)从输入材料派生出加密密钥。BurnPony 向它喂入 32 字节的片段密钥——可选地与经 PBKDF2 拉伸的口令短语相结合——再加上一个随机的 16 字节盐值和一个固定的上下文字符串,从中得出 AES-256-GCM 密钥。
这是什么
派生带来纪律。你链接里的字节从不直接用作加密密钥;它们是输入材料,受盐值和特定版本的上下文约束,使得某一用途或某一格式版本的密钥不会与另一种混淆。
为何重要
它也是口令短语功能干净的衔接点:没有口令时,HKDF 只处理片段密钥;有口令时,被拉伸的口令会被混入——一条派生路径、两个强度等级,格式中没有任何特例。
// in BurnPony
上下文字符串针对 v1 信封做了版本化,同一套派生在应用的 Swift 和查看器的 WebCrypto 中以完全相同的方式运行——并对照共享测试向量做过验证,因为一端封存、另一端打开,唯有两者完全一致才行得通。
相关术语
常见问题。
为什么不直接使用片段密钥?
直接使用会把链接格式永远绑死在这套密码上,也没有地方去绑定盐值、口令短语或版本号。HKDF 为每张纸条提供一把妥善派生的密钥,也给格式留出了演进的余地。
盐值是做什么的?
它是公开存放在信封中的 16 个新鲜随机字节,确保即便在运气不佳的情形下,派生出的密钥也逐条唯一——一项不费分毫的标准双保险措施。
获取 BurnPony
面向 iPhone 和 Android 的免费自毁加密纸条。收件人只需一个浏览器。无账户、无追踪。