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

文档序号:9648864阅读:来源:国知局
卡接口相一致,例如个人电脑存储卡接口适配器(PCMCIA)标准或非接触通信接口(如ISO14443)。
[0068]在如图2中示出的本公开示例性实施例中,卡140用于生成密钥流。然后,在主机120上操作的处理向卡提供加密数据输入以用来解密。然后卡140使用密钥流执行解密。这允许卡140被实现为具有相对有限的计算功率和低输入/输出带宽的设备。在该示例中,假设卡140将作为无状态设备来操作,使得当前的输出仅取决于当前的输入,而不取决于任何先前的输入。针对给定的输入n,卡140将因此输出具有由输入n、存储在存储器146中的密钥K以及在卡140中产生或者通过主机120向卡140提供的随机或伪随机比特序列所确定的值的函数。该假设认识到很多当前可用的智能卡包括有限的存储、处理和输入/输出能力。
[0069]本公开使用单个常数(密钥),其与已知输入组合以生成伪随机输出。如指出的,为了防止使用边信道攻击(如差分功耗分析攻击)的攻击,一项技术是频繁地改变密钥,或者建立硬件来防止攻击。
[0070]图3描绘了保护密码处理对抗实现攻击(例如边信道攻击)的过程。通过与图1中示出的类似的方法,加密模块(例如分组密码器240)被配置为基于恒定的输入210和密钥230来产生输出250。在所示出的示例中,输入210长η个比特,密钥230长m个比特,以及对应的输出长η个比特。在示出的示例中,输入210具有0值(即全部η个比特的值是0)。应当设想到输入和输出可以是任意长度。通常,密钥长128个比特。
[0071]向密钥更新模块260馈送输出250连同密钥230的值。还向密钥更新模块260提供输入向量270。逐组块地(即以组块为单位,例如逐字节地)向密钥更新模块馈送输入向量。在图3中,输入向量270长k*j个比特,并且以j个比特的组块为单位向密钥更新模块260馈送。第一次迭代按比特[0…j-Ι]、第二 [j…2j-l]比特、直至最后一个组块[(k-1)j…kj-1]来进行馈送。这将输入向量270分为多个部分270°、270a-270k。密钥更新模块260包含(在第一次迭代中)提供已更新密钥2303的密钥更新函数(参见图4)。还可向密钥更新模块260提供输入向量270的一部分270°(即逐比特地提供输入向量,每次单个比特)。由输入向量270°向密钥更新模块260提供的单个比特或组块的值来确定如何更新密钥230。基于输入向量270°(或270~"270k)提供的单个比特或组块的值、输出250°(或250a-250k)、密钥230° (或230?..230k)的值和密钥更新模块260中的密钥更新函数,密钥更新模块260提供已更新密钥230a (或230、" 230k)。
[0072]针对输入向量270的每个部分或比特重复上述过程。因此,如图4所示,将已更新密钥2303连同输入210 —起向分组密码器240提供(同样,在示出的实施例中,输入210具有0值)。假设密钥230a的值已经改变,输出值250 3也与第一次迭代的输出250不同。同样,将输出250a和已更新密钥230 a连同输入向量270 a的下一个比特一起向密钥更新模块260提供。基于输入向量270a的下一个比特的值、已更新输出250 a和已更新密钥230 a,密钥更新模块260的密钥更新函数提供第二已更新密钥230b。
[0073]针对输入向量270的所有比特迭代重复上述过程,直到提供(最后一次迭代)已更新密钥230k。然后,该已更新密钥230k可以与输入210 k组合,并且向分组密码器240提供,以提供输出值250k。输出250k可以用作密钥流。输出250 k还可以用于馈送密钥流生成函数。输出250k可以用作针对输入的消息认证码。输出250 k还可以用于馈送消息认证码生成函数。
[0074]图4详细描述了密码术基本要素,且具体地,图3所示的密钥更新模块260中的密钥更新函数。在图4中,密钥230包括左半边232°和右半边234 °。密钥230的每个半边包含密钥比特的一半,所以针对128个比特的密钥,左半边包含比特127:64,并且右半边包含比特63:0。将密钥230连同输入210 —起向加密模块240 (例如分组密码器)提供。输出250°是由加密模块240输出的的密文(C0)252。除了密钥、加密模块和输入以外,提供被逐比特地分析的输入向量270°,使得可确定输入向量270°的每个比特272的值274。取决于输入向量270°的每个比特272的值274,使用密文输出252与原始密钥230的级联来导出密钥230a。在示出的示例中,输入向量的两个值都规定输出252与原始密钥230的右手侧234°级联。丢弃原始密钥的左右侧232 °。取决于所选择的输入向量270°的比特272的值274,可以对原始密钥的右手侧234°执行操作。例如,如图4所示,比特272的0值274导致密钥234°的右手侧以1比特的值进行第一循环(即输出252相对于密钥234 °的右手侧的位置C0)。相反地,比特272的1值274导致密钥的不同循环(在示出的示例中是2比特的循环),以及密钥234°的右手侧相对于输出252的不同位置。在两种情况下,这形成了已更新密钥230al或230a2。
[0075]可以看出,如果将128比特的原始密钥与64比特的输入一起使用,则输出的值可以长64比特。将该输出值与原始密钥的一半级联提供128比特的已更新密钥。级联的形式可以取决于输入向量270的比特272的值274。级联的形式还可以采取备选的形式,例如使用盐、常数、计数器、随机数或其它密码结构。
[0076]可以设想到的是,除了级联以外或作为级联的备选,还可以对密钥执行其它函数。例如,密钥的右手侧234可以循环若干个比特。图4中示出的示例使用原始密钥的简单压缩来提供已更新密钥。也可使用展开和其它排列。
[0077]还可以设想到的是,对密钥执行的函数可以取决于输入向量270的一个以上的比特。图5中示出了一个这样的示例。图5示出了图4中示出的基本要素的单个迭代的备选结构。在该变体中考虑输入向量270的两个比特的值。可以设想到的是,可以应用输入向量270的任何部分(即1或更多的比特)。
[0078]例如,输入向量提供备选树形路径270al、270a2、270a3、270a4来更新密钥。选择路径270al、270a2、270a3、270a4取决于输入向量的比特ab的值。在示出的示例中,针对比特ab的值00的是路径270al,其导致密钥234a右手侧与输出252 a的级联,并伴随密钥向右循环1比特。路径270a2(比特值01)导致密钥2343的右手侧与输出252 a之间的备选级联,2比特的循环被应用到密钥。比特值10导致路径270a3以及密钥2343的右手侧与输出252 3之间的级联并伴随3比特的循环,并且最后,值11导致路径270a4与路径270a3的备选级联并伴随4比特的循环.
[0079]取决于所确定的输入向量比特的值,基于原始密钥的值和输出导出已更新密钥230bo然后,可通过分析输入向量270b的下一个组块的比特cd的比特值来进一步修改已更新密钥,导致已更新密钥2301勺左手侧232 #卩右手侧234 b (图5中只示出了右手侧234b)与已更新输出值252b的级联(同样伴随根据比特cd的值而应用的循环)。针对第二次迭代,取决于输入向量270的比特cd的值,备选路径270bl、270b2、270b3、270b4是可能的。
[0080]输入向量270的该部分的大小可以允许密钥更大数量的可能变换或更新,该变换或更新取决于输入向量的该部分的值。例如,使用输入向量的8比特部分为密钥更新函数提供众多路径。将更大的比特值用于输入向量的该部分还允许更短的处理。
[
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1