Encode-then-Encipher(缩写 EtE,可译为先编码后加密)是一种对称加密构造范式:加密时先用与密钥无关的编码函数把消息变换成更长的串,再用以共享密钥为参数的置换(密码)对其作用;解密时顺序相反,先做逆置换,再解码并校验编码是否成立。[1][2] 该范式由 Mihir Bellare 与 Phillip Rogaway 在 2000 年提出,其意义在于当消息本身已带 nonce 或冗余时,不必增加密文长度、也不必附加单独的认证标签,就能同时获得机密性与真实性,并因此成为构造鲁棒认证加密的一条通用路线。[2][3]
定义
Encode-then-Encipher 指一类对称加密的构造方式:加密分为编码与置换两步,编码是不依赖密钥的变换,把消息映射为更长的字符串;随后用一个以共享密钥为参数的置换作用在该字符串上,得到密文。[1][2] 解密时顺序相反,先做逆置换,再调用解码函数,并根据解码是否成功判断密文是否合法。[2] 由于完整性依靠编码所含的冗余提供,这类方案不需要另加认证标签。[4]
该范式由 Mihir Bellare 与 Phillip Rogaway 在 2000 年发表于密码学会议 ASIACRYPT,论文收录于《Lecture Notes in Computer Science》第 1976 卷,页码为 317 至 330。[1][5] 论文给出两个核心结论:编码只要以任何方式引入 nonce(如计数器或随机值),所得方案即满足语义安全;编码只要以任何方式引入冗余,且接收方在解码时校验冗余,所得方案即达到消息真实性。[2] 这组结论把“对带冗余的消息做密码变换即可获得真实性”这一长期经验说法形式化,前提是把“加密”理解为“置换”。[1][2]
原理
形式化地看,编码方案由 encode 与 decode 两个函数构成,对任意消息 M 都满足 decode(encode(M))=M;对于不属于任何合法编码的字符串,解码应给出无效判定。[2][4] 于是加密可写为 $C=F_K(\mathrm{encode}(M))$,解密写为 $M=\mathrm{decode}(F_K^{-1}(C))$。其中 F 以密钥 K 为参数,是可作用于任意长度串的长度保持置换,文献通常要求它接近随机长度保持置换,即所谓可变输入长度密码。[2]
加密与解密的基本流程可用下图表示:
flowchart LR
A[消息 M] --> B[编码 encode]
B --> C[编码后消息]
C --> D[密钥置换 F_K]
D --> E[密文 C]
E --> F[逆置换]
F --> G[解码并校验]
安全性有两个来源。编码中若含 nonce,只需保证两条编码结果相同的概率足够小,加密后即达语义安全;编码中若含冗余,则随机字符串中只有极小比例能通过解码校验,伪造成本因此与伪造标签相当,方案获得消息真实性。[2] 证明这一结论时,底层置换必须是强 伪随机置换,仅具普通伪随机置换性质不足以支撑真实性。[2]
现代实现通常把 EtE 建立在 可调分组密码 之上:以可调的宽分组密码作为底层置换,用调柄承载 nonce 与关联数据,并在消息之前或之后附加若干比特的零作为编码,解密时校验这些零位是否完整。[4][3] 这样得到的方案属于 鲁棒认证加密(RAE),可以容忍 nonce 重用,也能在被要求输出未验证明文时维持安全。[3][6]
发展历程
该工作的早期投稿版本可追溯到 1998 年 12 月,正式发表于 2000 年 12 月 3 日的 ASIACRYPT 2000。[2][5] 作者在论文中即指出,这种加密方式在当时并不流行,尽管它相当自然。[2]
此后十余年间,EtE 主要作为理论框架存在;直到 CAESAR 竞赛开展,它才重新获得关注,因为以宽分组密码为基础、通过附加零位来编码的做法,能以较低代价实现具备强鲁棒性的认证加密。 AEZ 是这一路线的代表:它由 Hoang、Krovetz 与 Rogaway 在 2015 年的 EUROCRYPT 上提出,提交至 CAESAR 竞赛并进入第三轮,是首个专门用 EtE 实现鲁棒认证加密的方案。[7]
2018 年,Crowley 与 Biggers 提出面向低端处理器的长度保持加密方案 Adiantum;2021 年,Crowley、Huckleberry 与 Biggers 提出 HCTR2。[8] 两者作为宽分组密码被用于文件级加密,其中 HCTR2 还进入了 Linux 内核。[9][8]
2023 年起,美国国家标准与技术研究院开始就分组密码工作模式(文献中称为 accordion)展开标准化讨论,用 EtE 把宽分组密码转换为鲁棒认证加密成为议题之一,EtE-HCTR2 等具体实例的安全性随之受到分析。[9][3]
应用
磁盘与文件加密是相关方案最主要的落地场景。Adiantum 被广泛用于移动设备的磁盘扇区加密与文件系统级加密,HCTR2 同样用于文件级加密并在 Linux 内核中提供实现;这些方案的共同目标是在缺少 AES 硬件指令的低端处理器上也能高效运行。[7][9]
在认证加密方面,把 宽分组密码 按 EtE 组合即可得到鲁棒认证加密方案,实例包括 AEZ、EtE-Adiantum 与 EtE-HCTR2;其中 AEZ 已被 Tor 等开源项目采用,并有多种语言的实现。[3][7]
另一类应用是既有协议的安全加固。当报文格式本身已包含序号或冗余、却没有为初始向量或认证标签预留字段时,直接对整条报文做编码与置换,可以在不改变报文长度和解析方式的前提下加入机密性与真实性,加密模块也不需要知道序号与冗余的所在位置。[2] 这种特性被认为能为遗留协议的升级提供较平滑的迁移路径。[2]
局限
EtE 要求底层提供长度保持的宽分组密码,也就是作用在任意长度串上的置换,这类原语本身不易构造。[2] 其真实性结论还要求底层是强伪随机置换,仅具普通伪随机置换性质并不成立。[2]
当底层 分组密码 的分组长度为 128 比特时,Adiantum 与 HCTR 一类结构的安全强度受生日界限制,上限约为 64 比特;同时它们需要调用分组密码的逆运算,在多数实现中会带来额外开销。[10]
承诺安全是这类方案的另一个弱点。分析表明,EtE 方案的密钥承诺强度被限制在底层分组密码分组长度的一半,使用 128 比特分组密码时最多达到 64 比特,低于文献建议的 80 比特下限;在更强的 CMT-4 定义下,AEZ、EtE-Adiantum 与 EtE-HCTR2 都能在常数时间内被攻破。[6][3] 针对 AEZ 完整规范的密钥承诺攻击复杂度为 $2^{27}$;对 EtE-HCTR2,把零附加在消息之前或之后的两种编码都低于生日界,只有在特定填充位置下才能获得紧致的安全界。[7][9]
效率方面,EtE 在加密前必须扩展消息,本身存在额外开销;有研究为在标签可截断等场景中兼顾私密性与真实性,提出推广形式 gEtE,但代价仍然是效率。[11] 因此在实际系统中,是否采用 EtE 往往需要在鲁棒性与开销之间权衡。[11]
参见
参考资料
- encode . ucdavis.edu [引用日期2026-09-29]
- ucsd.edu 上的 PDF 文件 . ucsd.edu [引用日期2026-09-29]
- sess-8-naito-acm-workshop-2024(PDF) . nist.gov [引用日期2026-09-29]
- where \(\mathcal{DV}\) is a verified decryption function . iacr.org [引用日期2026-09-29]
- acm.org 上的网页 . acm.org [引用日期2026-09-29]
- iacr.org 上的 PDF 文件 . iacr.org [引用日期2026-09-29]
- Key Committing Security of AEZ and More . iacr.org [引用日期2026-09-29]
- HCTR2 . nist.rip [引用日期2026-09-29]
- Key Committing Security of HCTR2, Revisited . iacr.org [引用日期2026-09-29]
- Deck-Based Wide Block Cipher Modes . nist.gov [引用日期2026-09-29]
- iacr.org 上的文件 . iacr.org [引用日期2026-09-29]
浏览次数:0 次
阅读量:0 次 · 阅读完成量:0 次
最近更新:2026-09-29T12:52:48Z
完成率 = 阅读完成量 ÷ 阅读量,分母是阅读量不是浏览次数 —— 关了 JS 的、秒退的都在浏览次数里、不在阅读量里。 详细口径在后台的「数据统计」页。