对于安全控制器而言,密码算法的实现与安全性紧密相关,密码算法实现
模块应能有效抵御各种侧信道攻击(SCA)。密钥参与的运算所泄露的侧信道信息(如功耗曲线、电磁辐射曲线、时间等)与包括密钥在内的输入数据是相关的,密码算法的安全实现应掩盖或消除这种相关性。
无论对称密码算法还是非对称密码算法,其在安全控制器中的实现均以消除以下关系作为防御侧信道攻击的指导原则。
(1) 密钥运算的数据与所泄露的侧信道信息的关系;
(2)密钥运算所使用的实际数据和输入数据之间的关系。
以非对称密码算法的功耗分析防护为例,可采用如下办法来消除上述关系:进行功耗补偿,使得私钥位为0 或1产生相同的功耗;统一操作,使得私钥位为0或1执行相同的操作;对私钥运算的输入数据或中间值进行随机化,即用随机数掩盖真实数据之后再进行计算。
为防御针对对称密码算法实现的功耗分析,进行功耗补偿、对密钥运算中所使用的中间数据随机化(也称随机掩码 Masking),同样也是主要手段。掩码方法的核心思想是将对称密码运算的中间数据随机化,使功耗不依赖于真实的中间值,这破坏了差分功耗分析(DPA)实施的基本条件,攻击者无法根据中间值将大量明文正确地分组,也无法根据中间值计算预期的假设功耗。用随机数掩盖中间值的操作主要包括异或、加法和乘法三种,相应的掩码方法分别称为布尔掩码、加法掩码和乘法掩码。
人们最初应对侧信道攻击的方法是在芯片输出信号中施加各种噪声,但这些方法的效果并不好,尤其是 DPA 之类的分析方法具有很强的噪声过滤能力。
在电路层面,可以使用双轨逻辑来防御侧信道攻击。双轨逻辑的另一个优势是所有状态有相同的功耗权重,从而使得功耗分析难以实施。但双轨逻辑的实施成本较高,在芯片内设置随机数发生器,使用随机数对密码运算进行保护,是目前抵抗侧信道攻击的最有效、最经济的方式。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !