用于加密操作的密钥序列生成制造技术

技术编号:18826317 阅读:34 留言:0更新日期:2018-09-01 14:29
提供了从主密钥生成用于加密操作的子密钥序列的方法、系统和设备。用包括一个或多个单向函数的变换仅操作主密钥一次以生成该序列的子密钥。使用一个或多个单向函数的相应位值来设置该序列的子密钥的相应位值。有利的,从一个或多个单向函数的相应的输出位中得出子密钥位去除或至少减少了主密钥和子密钥之间的关联、以及子密钥之间的关联,使从单个子密钥恢复主密钥或其他子密钥(如所发现的使用边信道攻击的例子)更困难或甚至是不可能的。同时,通过仅使用一次主密钥(而不是在每次生成子密钥时使用主密钥),减少了主密钥对边信道攻击的脆弱性,因为减少了用于恢复物理信息(可能导致发现主密钥)的机会。具体实施例使用子函数的并行或链式执行以生成相应的子密钥。其他具体实施例从单个单向函数中一次性生成所有子密钥。

【技术实现步骤摘要】
【国外来华专利技术】用于加密操作的密钥序列生成本公开涉及从主密钥生成用于加密操作(cryptographicoperation)的子密钥序列。更具体地,尽管不是唯一地,本公开涉及具有依照序列的密钥调度的分组密码和利用分组密码用于消息的加密和解密。背景加密分组密码,例如DES或AES,无论是以硬件还是软件实现,都可成为物理攻击的目标。在这样的攻击中,攻击者在分组密码的操作中收集各种类型的信息。此类攻击中使用的信息的类型包括:·由于分组密码的执行而泄露的边信道信息,例如功耗、时序信息或磁辐射;·来自差分故障分析或碰撞故障分析的信息·以上两者攻击者可利用这些信息来发现在分组密码的执行中使用的秘密密钥。分组密码作用在回合密钥(roundkey)上,回合密钥是通过通常被称为密钥调度的算法、根据密钥调度从秘密密钥或者主密钥得出的子密钥。通常来说,边信道攻击或故障攻击导致回合密钥的恢复。由于在分组密码(比如AES或DES)的密钥调度中固有的主密钥和回合密钥之间的关联,从被恢复的回合密钥中得出秘密密钥是相对容易的。攻击者可把密钥调度的执行(在这种情况下,攻击很可能是模拟从边信道获得的信号及其噪声的模板攻击)、分组密码在加密或解密中的应用、或密钥调度和分组密码执行两者作为目标。在现有技术中,主密钥可以通过使用单边信道攻击的操作或对单个子密钥的其他攻击而恢复。可能的攻击的例子包括加密/解密操作的边信道分析(CPA-相关功耗分析,DPA-差分功耗分析)、或DFA-差分故障分析。对于密钥调度算法,模板边信道攻击是可行攻击的一个例子。在文献(P.朱诺和S.沃德尼,FOX:一个新的分组密码家族。密码学的选定领域2004:滑铁卢,加拿大,8月9-10日,2004.计算机科学讲义,施普林格出版社)中提出的一种方法中,密钥调度已被设计为使得通过对秘密主密钥应用加密、抗碰撞和单向函数来生成每个回合密钥。这样,回合密钥之间的关联和回合密钥与秘密密钥之间的关联被减少或消除了,从而使得基于使用边信道或故障分析信息来恢复单个回合密钥的攻击不太可能成功。尽管这种使用单向函数以减少密钥间的关联是向前迈进的一步,会期望进一步改进对于攻击、尤其是边信道或其他物理攻击的抵抗。
技术实现思路
本公开的一些方面在所附独立权利要求中阐述。特定实施例的一些可选特征在其从属权利要求中阐述。在一些实施例中,用于加密操作的子密钥序列从主密钥生成,其中每个子密钥都由相应位值限定。使用变换,例如包括一个或多个单向函数的一系列的操作,对主密钥仅操作一次以生成序列的子密钥。使用一个或多个单向函数的相应位值来设定序列的子密钥的相应位值。例如,在一些实施例中,一个或多个单向函数的输出的每一位仅被使用一次以设置子密钥的所有位值的对应位值。因此,在一个或多个单向函数的输出的位值和其子密钥的对应位值之间存在一对一关系。有利地,从一个或多个单向函数的相应的输出位得出子密钥位去除或至少减少了主密钥与子密钥之间的关联,以及子密钥之间的关联,使从单个子密钥恢复主密钥或其他子密钥(如所发现的使用边信道攻击的例子)更困难或甚至是不可能的。同时,通过仅使用一次主密钥(而非每次生成子密钥时使用主密钥),减少了主密钥对边信道攻击的脆弱性,因为减少了用于恢复物理信息(可能导致发现主密钥)的机会。在加密操作的环境中,单向函数将被理解为易于计算从输入生成输出的函数(例如因为计算复杂度在时间和空间中,或者更实际地,在一定数量的机器运算或时间单位-秒或毫秒中是多项式)并且其实际上是不可逆的,这意味着从输出去发现或重建输入是不现实的(因为计算复杂度可能涉及试图使用超多项式,其超出了可用资源)。这经常被称为抗原像性。另外,在这种情况下,单向函数的输出位将会彼此独立,因为在一位的状态中没有关于输出的其他位的状态的信息。通常还优选的,但不是强制的,是在这种情况下单向函数也具有抗第二原像性和抗碰撞特性。具体而言,根据各种实施例,可以使用以下单向函数中的一个或多个(单向函数的组合)。这包括,但不限于:·加密哈希,例如SHA-1、SHA-256、RIPEMD-160、SHA-3等等;·具有较大输出的特殊用途单向函数,例如罗宾函数x^2modN,其中N是两个大素数的乘积,或该函数的较高阶版本;·轻量级伪哈希函数,以减少计算资源要求,例如xxhash或SipHash;·基于优选轻量级排列的Davis-Meyer架构(轻量级排列能够在计算能力非常低的设备上运行)·不可逆矩阵的积;·使用离散对数问题:axmodp,其中p是素数,a是Zp*的生成器,并且x是单向函数的输入在需要多于一个单向计算的实施例中,所使用的相应单向函数可以是相同的,或可以是彼此不同的。在一些实施例中,根据预先确定的关系,按照一个单向函数的相应位值来设置至少两个子密钥的相应位值。通过这种方式,可以通过计算单个单向函数来生成两个或更多子密钥。在一个特定情况下,按照一个单向函数的相应位值来设置序列的所有子密钥的相应位值。在这种情况下,所有的子密钥都由单个单向函数生成,仅需要单次使用主密钥并确保主密钥受到单向函数的单向特性的保护,并且确保由于单向函数输出位的独立性,子密钥的位和从而子密钥是彼此独立的。在一些实施例中,使用相应的子函数对主密钥进行操作生成多个中间输出。应用于每个中间输出的单向函数然后生成相应的单向输出并且从每个单向输出生成一个或多个子密钥。通过仅使用一次主密钥生成多个中间输出,并且然后使用相应的单向函数来生成子密钥,产生比生成所有子密钥所需要的更少的位的单向函数可被用来生成子密钥同时仍然仅使用主密钥一次。在一些实施例中,通过以下方式生成中间输出:首先将第一子函数应用到主密钥,以生成第一中间输出,然后重复将下一子函数应用到前一个中间输出来生成下一个中间输出。将相应的单向函数应用到每个中间输出来生成序列的对应的一个或多个子密钥。以这种方式可以生成序列的子密钥。从子函数到对应的一个或多个子密钥的处理可以被同步完成(计算子函数和对应的一个或多个子密钥,然后计算下一个子函数和对应的一个或多个子密钥,以此类推)。可替代地,可以首先处理所有子函数,存储(子函数和/或单向函数的)输出,并且随后可从存储的值生成子密钥。不是通过相应的单向函数传递中间输出,在一些实施例中所有中间输出都通过单个单向函数(或甚至同一单向函数的单个实例)传递,即第一个和下一个单向函数是相同的函数。独立地,子函数可以是互相不同的或可都是相同的,举例来说,诸如移位或旋转运算符的位运算符。由于子函数的每个应用在序列中是积累的,对一个或多个单向函数的输入将随着相同函数重复应用的顺序而变化,并且从而产生了不同的子密钥序列。由于通过单向函数传递中间输入来生成序列的子密钥,甚至对于简单的和可能甚至重复的操作来生成中间输出,从一个被恢复的子密钥中推断主密钥或其他子密钥至少和难于反转一个或多个单向函数一样困难。同时,由于仅使用一次主密钥来生成第一中间输出,因此其不易在边信道攻击或其他物理攻击中被发现。另外,在一些实施例中,通过使主密钥通过单向函数传递并将结果传至第一子函数,主密钥可以被进一步与生成的子密钥分离,从而增加了从使用边信道信息发现的子密钥开始通过密码分析恢复主密钥的难度。在一些实施例中,因为可以在单个复合函数中捕获对应的本文档来自技高网
...

【技术保护点】
1.一种从主密钥生成用于加密操作的子密钥的方法,其中每个子密钥由相应位值限定,所述方法包括:使用变换对所述主密钥进行操作,其中所述变换包括一个或多个单向函数并且所述主密钥仅被操作一次以生成所述序列的所述子密钥;和使用所述一个或多个单向函数的相应位值来设置所述序列的所述子密钥的所述相应位值。

【技术特征摘要】
【国外来华专利技术】2015.11.06 GB 1519612.41.一种从主密钥生成用于加密操作的子密钥的方法,其中每个子密钥由相应位值限定,所述方法包括:使用变换对所述主密钥进行操作,其中所述变换包括一个或多个单向函数并且所述主密钥仅被操作一次以生成所述序列的所述子密钥;和使用所述一个或多个单向函数的相应位值来设置所述序列的所述子密钥的所述相应位值。2.根据权利要求1所述的方法,其中设置所述相应位值包括根据预先确定的关系、按照所述一个或多个单向函数中的一个的相应位值来设置至少两个所述子密钥的所述相应位值。3.根据权利要求1所述的方法,其中,设置所述相应位值包括根据预先确定的关系、按照所述一个或多个单向函数中的所述一个的相应位值来设置所述序列的全部所述子密钥的所述相应位值。4.根据权利要求1或2所述的方法,其中对所述主密钥进行操作包括生成多个中间输出并且将单向函数应用到每个中间输出以生成相应的单向输出,并且其中所述方法包括从每个单向输出生成一个或多个所述子密钥。5.根据权利要求1,2或4所述的方法,包括将第一子函数应用到所述主密钥以生成第一中间输出;将第一单向函数应用到所述第一中间输出;和从所述第一单向函数的输出生成所述序列的所述第一一个或多个所述子密钥,和重复地:将下一个子函数应用到所述前一个中间输出以生成下一个中间输出;将下一个单向函数应用到所述下一个中间输出;和从所述下一个单向函数的输出生成所述序列的下一个一个或多个所述子函数。6.根据权利要求1,2或4所述的方法,包括将输入单向函数应用到所述主密钥以生成工作密钥;将多个子函数应用到所述工作密钥以生成相应的中间输出;将输出单向函数应用到每个中间输出以生成相应的变换输出;和从所述变换输出生成所述序列的所述子密钥。7.根据任一项前述权利要求所述的方法,所述方法还包括使用所述序列的所述子密钥作为分组密码中的回合密钥,所述分组密码具有由所述序列限定的密钥调度。8.一种从主密钥生成用于加密操作的相关的子密钥的正向和反向序列的方法,所述方法包括:通过根据权利要求5所述的方法生成所述正向序列的子密钥;其中所述下一个子函数被应用在正向下一个子函数序列中,和其中跟随有所述正向下一个子函数序列的所述第一子函数限定正向子函数序列;按照根据权利要求5所述的方法从所述主密钥生成子密钥的反向序列,其中所述第一子函数是所述正向子函数序列的所述子函数的所述复合函数,和其中所述下一个子函数被应用在反向下一个子函数序列中并且所述反向下一个子函数序列的所述子函数对应于以相反顺序的所述正向下一个子函数序列的所述子函数的所述相应的反函数。9.一种解密用分组密码加密的消息的方法,所述分组密码具有密钥调度,所述密钥调度包括被应用在加密序列中的回合密钥,所述回合密钥的加密序列能够通过根据权利要求5所述的方法从主密钥中获得,其中所述下一个子函数被应用在加密下一个子函数序列中,并且跟随有所述加密下一个子函数序列的子函数的所述第一子函数限定加密子函数序列,所述方法包括:按照根据权利要求5所述的方法从所述主密钥生成子密钥的解密序列,其中所述第一子函数是所述加密子函数序列的所述子函数的所述复合函数,和其中所述下一个子函数被应用在解密下一个子函数序列中并且所述解密下一个子函数序列的所述子函数对应于以相反顺序的所述加密下一个子函数序列的所述子函数的所述相应的反函数;和按照所述解密序列的顺序应用所述子密钥来解密所述消息。10.一种用具有密钥调度的分组密码处理消息的方法,所述方法包括:...

【专利技术属性】
技术研发人员:卡琳·维利加斯布莱希特·怀瑟
申请(专利权)人:纳格拉维森公司
类型:发明
国别省市:瑞士,CH

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1