白盒 DES 实现及其密码分析
1. 白盒 DES 实现概述
数据加密标准(DES)是一种块密码,对 64 位块进行操作,密钥长度为 56 位,是一个具有 16 轮的 Feistel 密码,在第一轮之前有一个初始置换 IP,最后一轮之后有其逆置换 IP⁻¹。
白盒 DES 实现将 DES 表示为一系列混淆查找表的功能等效序列。DES 的置换、异或和扩展操作被实现为一个 96 到 96 位的仿射函数 Dr,它可以用矩阵表示。通过矩阵分解技术,Dr 被转换为一系列查找表,为避免稀疏子矩阵,可通过引入混合双射将 Dr 拆分为非稀疏矩阵。
每一轮白盒 DES 实现的核心是 12 个 T 盒,用于实现 Cr 函数。这些 T 盒包含 S 盒和轮密钥加法,前 8 个 T 盒包含非线性 S 盒,称为非线性 T 盒,另外 4 个称为旁路 T 盒。这些 T 盒是 8 到 8 位的双射,具有 8 位熵属性,可防止孤立 T 盒泄露信息。T 盒的顺序可以置换,此时仿射操作 Dr - 1 和 Dr 必须相应调整。
为保护查找表中的密钥信息,对其应用输入和输出编码。编码后的查找表定义为 g◦Λ◦f⁻¹,其中 Λ 是查找表,f 和 g 是随机双射。所有查找表都进行编码,使得一个查找表的输出编码被下一个查找表的输入解码抵消。编码后的 T 盒表示为 gi ◦T r π(i) ◦f⁻¹ i ,内部状态表示为 12 字节向量 f1||f2||…||f12(Φr(Lr - 1||Xr - 1||Rr - 1))。
为避免对无编码白盒 DES 实现的攻击,建议在 DES 前后添加仿射混合双射,实现的是编码变体 G ◦DESk ◦F,F 和 G 称为外部编码。
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



