保护密码设备对抗实现攻击的制作方法

文档序号:9648864阅读:918来源:国知局
保护密码设备对抗实现攻击的制作方法
【技术领域】
[0001]本公开描述了用于保护密码设备的方法和集成电路,并且具体地,描述了用于保护密码设备对抗实现攻击的方法。
【背景技术】
[0002]智能设备,尤其是具有低功率要求的智能设备(通常被称作无源智能设备)被广泛用于认证和访问控制。这样的设备的示例包括作为射频识别(RFID)标签的子集的非接触智能卡。这样的无源智能设备通常使用专用集成电路(ASIC)。
[0003]考虑到无源智能设备在安全关键应用中的应用,使用密码术来认证正在使用的无源智能设备。相反地,由于对无源智能设备可以保存或允许访问的信息的渴求,它们也是恶意的试图使用的兴趣所在。
[0004]大量的时间和努力花费在了对安全集成电路(1C,例如智能卡)中的边信道对策的实现和分析。边信道攻击是以根据密码系统的物理信息获得的信息为基础的任何攻击。这样的攻击不同于软件强力攻击或者加密算法中的开发或弱点。边信道攻击通常检查系统的内部操作(例如系统汲取的功率、电磁(EM)辐射或其它‘边信道’)来确定模式和实现步骤。一种这样的已知边信道攻击是差分功耗分析(DPA)。这可以包括恶意用户研究设备使用期间功率使用的痕迹,并且利用统计分析来确定加密算法的特征。
[0005]随着当前可用的标准化算法和协议的使用(像是在银行业务或电子政务中使用的算法和协议),针对差分功耗分析(DPA)(以及差分故障攻击)的攻击情形是存在的,导致设备实现受这样的边信道攻击威胁的协议(例如,由于始终以相同的(主)密钥来加密变化的输入,系统的功率签名中的变化仅取决于或一般取决于加密算法的变化)。
[0006]对这种攻击的一种解决方案是使用密钥更新(re-keying)方法。在这样的方法中,会话密钥从主密钥导出,随后将该会话密钥用于实际操作。该会话密钥有规律地变化,以减少针对具体的(主)密钥可以从设备获取的功率痕迹的量。
[0007]该密钥更新的特殊实例已经应用在CIPURSE协议中。在该方法中,通过使用随机输入以及更容易进行保护以对抗实现攻击的函数(称作NLM(非线性映射)),使用主密钥导出中间会话密钥。然后,该中间会话密钥与主密钥一起使用,以得到所使用的会话密钥(参见参考US2010316217A1)。上述对这样的DPA攻击的解决方案依靠双方之间的随机数协定。这样的方法防止验证先前交易。具体地,在没有随机数的情况下不可能重复会话。
[0008]相对新的研究领域是泄露弹性密码术。在泄露弹性(LR)中寻求避免典型的DPA情形,在典型的DPA情形中,可以以针对每个执行的改变的输入,逐组块地(即以组块为单位,例如逐字节地)攻击分组密码的密钥。在LR方法中,多次执行分组密码,其中仅逐组块地(例如,每次1个比特)来使用完整的输入向量并且将其复制到分组密码的整个输入状态。在每个迭代中,下一个输入组块被用作输入(再次地,复制到整个状态)。这限制了数据复杂性,即可以用于攻击的痕迹的数量,并且在不同密钥组块的边信道信息之间创建依从性。然而,由于针对每个密钥有N > 1个痕迹,对手仍然可以应用DPA攻击。
[0009]总的来说,在没有实现重大对策且不需要详细的边信道调查的低成本1C上执行对称密码安全服务时仍然存在问题。以下公开旨在处理这些问题。

【发明内容】

[0010]根据本发明的第一方案,提供了用于保护密码设备对抗边信道攻击的方法,该方法包括:
[0011]从密码设备的存储器获得密钥;
[0012]向加密模块提供密钥和恒定的数据比特输入;
[0013]使用加密模块导出加密数据比特的输出;
[0014]向密钥更新模块提供输出、密钥和输入向量;以及
[0015]使用所述密钥更新模块基于输入向量的至少一部分来修改密钥以导出更新的密钥。
[0016]以这种方式使用密钥减少或去除了下层加密模块中对攻击对策的需求,并且还防止了详细的边信道调查。因为使用了密钥更新技术,不能使用已更新密钥来通过边信道攻击来导出原始的主密钥。密钥更新模块所应用的变换需要知道原始主密钥,因为它们使用根据输入向量和密钥导出的加密模块输出。此外,因为向加密模块的(明文)输入是恒定的,仅可获得单个功率痕迹。这提供了对抗边信道攻击(例如DPA,其试图将统计分析应用到密码过程和算法的功率管理痕迹)的安全性。
[0017]在本公开的实施例中,方法还包括以下步骤:向加密模块提供已更新密钥和恒定输入;以及使用加密模块导出已更新输出。
[0018]这样的实施例通过提供已根据已更新密钥和所提供的输入向量导出的已更新输出来提高已更新密钥的安全性。因为已更新输出使用已更新密钥而不是原始的主密钥来进行加密,保护了原始的主密钥的安全性。
[0019]此外,该方法还可以包括以下步骤:向密钥更新模块提供已更新输出、已更新密钥和输入向量;以及使用所述密钥更新模块基于输入向量的至少第二部分来修改已更新密钥。通过进一步修改已更新密钥,该步骤从主密钥中发展出进一步更新的密钥。
[0020]输入向量可以包括两个或两个以上部分。因此,这样的方法步骤可以针对输入向量的每个部分进行重复。具体地,以下步骤可以迭代多次,其次数等于输入向量的部分的数量:向加密模块提供已更新密钥和恒定输入;以及使用加密模块导出已更新输出,并且向密钥更新模块提供已更新输出、已更新密钥和输入向量;以及使用密钥更新模块来更新已更新密钥。
[0021]换言之,可逐组块地(即以组块为单位,例如以字节或比特为单位)提供输入向量。例如,针对长度为128比特的输入向量,该输入向量可被看做包括64个部分或组块,每个部分长2比特。然后可以借助伪随机函数来导出伪随机输出。因此,密钥更新模块可被看做是担当伪随机函数步骤,基于输入向量的至少部分的值来处理输入向量和密钥以导出伪随机输出(例如已更新密钥)。在该考虑中,输入向量和密钥是伪随机函数的输入。
[0022]在实施例中,可以提供一个或多个附加输入向量。然后可以针对每个附加输入向量,使用伪随机函数来导出伪随机输出。然后可以将每个伪随机输出级联以形成更大的伪随机输出。
[0023]输入向量的部分可以包括至少比特串的值。此外或备选地,输入向量的部分可以是输入向量的至少1个比特的值。因此,密钥更新模块可以基于输入向量的比特值来导出已更新密钥。密钥更新模块可以进行动作,以应用所限定的密钥更新协议来根据输入向量的比特的值来修改密钥或已更新密钥。例如,针对比特0的0比特值可以指示密钥更新函数将密钥的所选择的比特向右循环1个比特位置。相反地,针对比特0的比特值1可以指示密钥更新函数将密钥的同一比特或其它比特向右循环2个比特位置。根据可用于更新函数的算法,可以有其它排列。
[0024]如上所述,基于输入向量的比特的值,密钥更新模块可以使用压缩、展开或排列操作中的一个或多个来变换或修改密钥或先前更新的密钥。
[0025]利用迭代增加了原始获得的密钥(称作主密钥)与已更新密钥之间依从性的复杂性,因此使得更难以导出密钥树中较高的密钥。这进而借助差分故障分析阻碍了密钥恢复,特别是针对原始获得的主密钥而言。此外,因为每个密钥只使用相同的输入(即,向每个加密模块提供的输入是恒定的),每个密钥迭代的功率痕迹是相同的,并且因此每个密钥的功率测量对于上述差分功耗分析攻击是有弹性的。
[0026]在一些示例中,密钥更新模块可以将输出的值或者已更新输出循环多个比特。例如,比特的数量可以取决于输入向量的至少一部分的值。
[0027]备选地或附加地,已更新密钥可以是密钥或先前已更新密钥的至少一部分与已更新输出的至少一部分的
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1