密码算法实现的FIA防护

描述

安全控制器中的密码算法实现模块同样能有效抵御各种故障注入攻击(FIA),目前主要的防护手段包括检错技术和容错技术。

先以 ECC 算法为例,针对 ECC 的故障注入攻击可以分为三类:安全故障攻击、弱曲线攻击和差分故障分析 (Differential Fault Analysis, DFA)。安全故障攻击基于那些不改变输出结果的故障进行分析。弱曲线攻击试图将点乘运算从强椭圆曲线迁移到弱椭圆曲线上,以利于通过求解椭圆曲线离散对数问题获得作为点乘倍数的私钥或随机数。

DEA 通过分析正确输出和错误输出之间的差异,逐位地导出点乘的倍数。这些攻击的相应防御方法包括采用检错技术检测椭圆曲线参数是否正确、点乘基点是否在椭圆曲线上、点乘运算中的数据是否被插入故障,一旦故障被检测到,即中止执行点乘运算,并拒绝输出任何结果;采用容错技术,选择一条椭圆曲线使得即使将故障引入到点乘运算中,攻击者也不能从错误结果中导出点乘的倍数,譬如强扭曲线 (Twist-Strong Curves)在扭曲线攻击 (Twist- Curve Attack)下是容错的。

另外 ECC 的一些侧信道攻击防御方法也具有防御某些故障注入攻击的能力,如 Montgomery 阶梯、随机化点乘倍数都使得安全故障攻击更难以实施;点乘的基点育化方法可以防御弱曲线攻击。

对于 RSA 算法而言,根据错误的签名结果和正确的签名结果可以分析出签名所使用的私钥,故需要在私钥运算过程中进行故障检测或对签名结果进行验证,一旦发现故障或签名结果错误则拒绝输出签名结果。

对于达到 IND- CCA2 安全级别的公钥加密算法,其算法机制本身内置了错误检测技术,天然具备一定的故障注入攻击防御能力。

在对称密码算法中,密钥运算主要是添加轮密钥和S 盒,因此这也成为故障注入攻击者选择的主要攻击点。故障注入攻击可以分为暂时性故障注入攻击和永久性故障注入攻击。在暂时性故障注入攻击中,攻击者可以利用不规则时钟脉冲、辐射、瞬间高电压等技术改变缓存器或存储器内的某位。

而在永久性故障注入攻击中,攻击者可以利用紫外线等清除 EEPROM 内的某位,或使用微探针设定或清除 EEPROM 内的某位。比特故障是指在加密的中间结果中仅引入1位的故障,而保证其他位不变,是一种有效的故障注入攻击。这种方法应用于对称密码算法,如果攻击者反复地向即将进入最后一轮加密的中间加密结果中引入比特故障,即每次加密引入的故障使得中间结果的某位改变,而保证其他位不变,则有可能得到最后一轮的轮密钥。

DFA 是一种有效的密码分析技术,它的基木思想是在选择明文后,对加密过程进行故障诱导,分别获得该明文对应的正确密文和错误密文,然后对两种密文进行数据对比分析,从而获得密钥。

对称密码算法实现中防御故障注入攻击的主要原则是采用错误检测技术。错误检测技术可检测到对称密码运算中插入的故障,一旦故障被检测到,即中止执行密码运算,并拒绝输出任何结果。适用于对称密码算法的错误检测技术包括基于冗余的错误检测技术、基于错误检测码的技术,以及两者混合使用的技术。

基于冗余的错误检测技术分为硬件冗余和时间冗余两类。

基于硬件冗余的错误检测技术直接复制密码算法硬件作为自检方法,将复制电路的输出与原始电路的结果相比较,如果不匹配则说明有错误。

基于时间冗余的错误检测技术对同样的数据做第二次加密/解密运算,与第一次加密/解密的运算结果比较,该方法增加 100%的额外时间开销,仅对单次故障注入有防御能力。

可以将硬件冗余和时间冗余技术相结合,从而在硬件和时间开销中寻找平衡,设计适合对称密码算法在安全控制器中安全实现的错误检测方案。

最简单的错误检测码是奇偶校验码,奇偶校验码可以根据需要设置一个到多个校验位,但奇偶校验码的错误检测覆盖率不够高,在对称密码算法实现中使用奇偶校验码时,应分析其错误检测覆盖率是否足够应对安全控制器可能面临的故障注入攻击情形。

为提高错误检测覆盖率,人们提出了分组密码算法的并发错误检测(Concurrent Error Detection, CED)方法,CED 检测安全控制器的对称密码运算过程中的操作以保证输出的正确性。如果CED检测到错误计算的发生,安全控制器将在输出前丢弃错误的结果,因此芯片能够抵御FIA的威胁。CED 的错误检测覆盖率通常远高于奇偶校验码,但也依赖于所采用的编码机制以及硬件实现细节。







审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分