嵌入式设备中的McEliece密码系统实现
1. 密钥大小优化
在McEliece密码系统中,为了减少密钥大小,采用了一些有效的策略。对于稀疏置换矩阵P,由于其每行每列仅有一个1,仅存储1的位置更为高效,最终得到一个包含n · m位的数组。
另一个减少公钥大小的技巧是将矩阵ˆG转换为系统形式{Ik | Q},其中Ik是k × k的单位矩阵。这样,只需发布(k × (n - k))的矩阵Q。
在代码解码的最后一步,需要从n个(已纠正的)密文比特中提取k个消息比特。通常,这通过一个映射矩阵iG来完成,满足G × iG = Ik。但如果G是系统形式,此步骤可以省略,因为已纠正密文的前k位对应消息比特。不过,G和ˆG不能同时为系统形式,否则ˆG = {Ik | ˆQ} = S × {Ik | Q} × P,S将成为单位矩阵,不适合用作秘密密钥。
为了减少秘密密钥的大小,使用密码学伪随机数生成器(CPRNG)和种子来即时生成大型置乱矩阵S−1。在密钥生成过程中,必须确保种子不会生成奇异矩阵S−1。根据目标平台和可用的密码学加速器,在嵌入式平台上实现CPRNG有不同的选择,例如计数器模式下的AES或基于哈希的PRNG。需要注意的是,隐藏秘密多项式G(z)并不需要S−1的保密性。
2. AVR微处理器上的实现
选择8位AVR微控制器来实现McEliece密码系统,这类微控制器是嵌入式系统中常用的8位RISC微控制器家族。以ATxMega192A1 μC为例,它具有16 kBytes的SRAM和集成的DES和AES加密加速器,该加速器对于快速实现用于即时生成置乱矩阵S−1的CPRNG非常有用。
在底层域GF(21
超级会员免费看
订阅专栏 解锁全文
18

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



