基于代码的密码系统的快速安全根查找
1. 引言
基于代码的密码系统,如McEliece和Niederreiter方案,近年来受到了研究人员的广泛关注,人们对其在各种平台上的效率进行了分析,同时也对其侧信道安全进行了研究。本文聚焦于这两种密码系统解密操作中出现的一个算法任务——根查找算法。该算法值得关注有两个原因:一是它通常是解码算法中最耗时的部分;二是其侧信道安全问题此前研究较少。
本文指出了根查找过程中可能出现的两种时序侧信道漏洞,一种旨在恢复给定密文的消息,另一种旨在找到作为基于代码私钥一部分的支持集。基于这些考虑,我们选择了多种不同的根查找算法进行分析,并对它们进行了时序侧信道分析和性能评估。
2. 预备知识
基于代码的密码系统建立在纠错码之上,目前已知适用于此的安全代码是Goppa码。这种代码的参数包括:
- 长度n:码字的长度,n ⩽ 2m。
- 维度k:消息字的长度,k < n。
- 纠错能力t:所有长度均指二进制表示。
对于这样的代码,当消息字被编码为码字时,通过相应的纠错算法可以纠正码字中最多t位的翻转错误,从而恢复消息字。在McEliece和Niederreiter方案中,加密过程都涉及创建一个汉明重量wt(e)等于所用代码纠错能力t的错误向量e。
McEliece和Niederreiter密码系统中的 syndrome 解码通过Patterson算法起着关键作用。该算法以 syndrome 向量s为输入,输出添加到码字中的错误向量e。本文主要关注Patterson算法中的一个部分,即找到错误定位多项式σ(Y)的根。当w = wt(e) ⩽ t时,σ(Y)的形式为