CN108476132B - 用于加密操作的密钥序列生成的方法、设备和计算机可读介质 - Google Patents
用于加密操作的密钥序列生成的方法、设备和计算机可读介质 Download PDFInfo
- Publication number
- CN108476132B CN108476132B CN201680077921.5A CN201680077921A CN108476132B CN 108476132 B CN108476132 B CN 108476132B CN 201680077921 A CN201680077921 A CN 201680077921A CN 108476132 B CN108476132 B CN 108476132B
- Authority
- CN
- China
- Prior art keywords
- sub
- sequence
- function
- key
- master key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
Abstract
提供了从主密钥生成用于加密操作的子密钥序列的方法、系统和设备。用包括一个或多个单向函数的变换仅操作主密钥一次以生成该序列的子密钥。使用一个或多个单向函数的相应位值来设置该序列的子密钥的相应位值。有利的,从一个或多个单向函数的相应的输出位中得出子密钥位去除或至少减少了主密钥和子密钥之间的关联、以及子密钥之间的关联,使从单个子密钥恢复主密钥或其他子密钥(如所发现的使用边信道攻击的例子)更困难或甚至是不可能的。同时,通过仅使用一次主密钥(而不是在每次生成子密钥时使用主密钥),减少了主密钥对边信道攻击的脆弱性,因为减少了用于恢复物理信息(可能导致发现主密钥)的机会。具体实施例使用子函数的并行或链式执行以生成相应的子密钥。其他具体实施例从单个单向函数中一次性生成所有子密钥。
Description
技术领域
本公开涉及从主密钥生成用于加密操作(cryptographic operation)的子密钥序列。更具体地,尽管不是唯一地,本公开涉及具有依照序列的密钥调度的分组密码和利用分组密码用于消息的加密和解密。
背景技术
加密分组密码,例如DES或AES,无论是以硬件还是软件实现,都可成为物理攻击的目标。在这样的攻击中,攻击者在分组密码的操作中收集各种类型的信息。此类攻击中使用的信息的类型包括:
·由于分组密码的执行而泄露的边信道信息,例如功耗、时序信息或磁辐射;
·来自差分故障分析或碰撞故障分析的信息
·以上两者
攻击者可利用这些信息来发现在分组密码的执行中使用的秘密密钥。
分组密码作用在回合密钥(round key)上,回合密钥是通过通常被称为密钥调度的算法、根据密钥调度从秘密密钥或者主密钥得出的子密钥。通常来说,边信道攻击或故障攻击导致回合密钥的恢复。由于在分组密码(比如AES或DES)的密钥调度中固有的主密钥和回合密钥之间的关联,从被恢复的回合密钥中得出秘密密钥是相对容易的。
攻击者可把密钥调度的执行(在这种情况下,攻击很可能是模拟从边信道获得的信号及其噪声的模板攻击)、分组密码在加密或解密中的应用、或密钥调度和分组密码执行两者作为目标。在现有技术中,主密钥可以通过使用单边信道攻击的操作或对单个子密钥的其他攻击而恢复。可能的攻击的例子包括加密/解密操作的边信道分析(CPA-相关功耗分析,DPA-差分功耗分析)、或DFA-差分故障分析。对于密钥调度算法,模板边信道攻击是可行攻击的一个例子。
在文献(P.朱诺和S.沃德尼,FOX:一个新的分组密码家族。密码学的选定领域2004:滑铁卢,加拿大,8月9-10日,2004.计算机科学讲义,施普林格出版社)中提出的一种方法中,密钥调度已被设计为使得通过对秘密主密钥应用加密、抗碰撞和单向函数来生成每个回合密钥。这样,回合密钥之间的关联和回合密钥与秘密密钥之间的关联被减少或消除了,从而使得基于使用边信道或故障分析信息来恢复单个回合密钥的攻击不太可能成功。尽管这种使用单向函数以减少密钥间的关联是向前迈进的一步,会期望进一步改进对于攻击、尤其是边信道或其他物理攻击的抵抗。
发明内容
本公开的一些方面在所附独立权利要求中阐述。特定实施例的一些可选特征在其从属权利要求中阐述。
在一些实施例中,用于加密操作的子密钥序列从主密钥生成,其中每个子密钥都由相应位值限定。使用变换,例如包括一个或多个单向函数的一系列的操作,对主密钥仅操作一次以生成序列的子密钥。使用一个或多个单向函数的相应位值来设定序列的子密钥的相应位值。例如,在一些实施例中,一个或多个单向函数的输出的每一位仅被使用一次以设置子密钥的所有位值的对应位值。因此,在一个或多个单向函数的输出的位值和其子密钥的对应位值之间存在一对一关系。
有利地,从一个或多个单向函数的相应的输出位得出子密钥位去除或至少减少了主密钥与子密钥之间的关联,以及子密钥之间的关联,使从单个子密钥恢复主密钥或其他子密钥(如所发现的使用边信道攻击的例子)更困难或甚至是不可能的。同时,通过仅使用一次主密钥(而非每次生成子密钥时使用主密钥),减少了主密钥对边信道攻击的脆弱性,因为减少了用于恢复物理信息(可能导致发现主密钥)的机会。
在加密操作的环境中,单向函数将被理解为易于计算从输入生成输出的函数(例如因为计算复杂度在时间和空间中,或者更实际地,在一定数量的机器运算或时间单位-秒或毫秒中是多项式)并且其实际上是不可逆的,这意味着从输出去发现或重建输入是不现实的(因为计算复杂度可能涉及试图使用超多项式,其超出了可用资源)。这经常被称为抗原像性。另外,在这种情况下,单向函数的输出位将会彼此独立,因为在一位的状态中没有关于输出的其他位的状态的信息。
通常还优选的,但不是强制的,是在这种情况下单向函数也具有抗第二原像性和抗碰撞特性。
具体而言,根据各种实施例,可以使用以下单向函数中的一个或多个(单向函数的组合)。这包括,但不限于:
·加密哈希,例如SHA-1、SHA-256、RIPEMD-160、SHA-3等等;
·具有较大输出的特殊用途单向函数,例如罗宾函数x^2mod N,其中N是两个大素数的乘积,或该函数的较高阶版本;
·轻量级伪哈希函数,以减少计算资源要求,例如xxhash或SipHash;
·基于优选轻量级排列的Davis-Meyer架构(轻量级排列能够在计算能力非常低的设备上运行)
·不可逆矩阵的积;
·使用离散对数问题:ax mod p,其中p是素数,a是Zp*的生成器,并且x是单向函数的输入
在需要多于一个单向计算的实施例中,所使用的相应单向函数可以是相同的,或可以是彼此不同的。
在一些实施例中,根据预先确定的关系,按照一个单向函数的相应位值来设置至少两个子密钥的相应位值。通过这种方式,可以通过计算单个单向函数来生成两个或更多子密钥。在一个特定情况下,按照一个单向函数的相应位值来设置序列的所有子密钥的相应位值。在这种情况下,所有的子密钥都由单个单向函数生成,仅需要单次使用主密钥并确保主密钥受到单向函数的单向特性的保护,并且确保由于单向函数输出位的独立性,子密钥的位和从而子密钥是彼此独立的。
在一些实施例中,使用相应的子函数对主密钥进行操作生成多个中间输出。应用于每个中间输出的单向函数然后生成相应的单向输出并且从每个单向输出生成一个或多个子密钥。通过仅使用一次主密钥生成多个中间输出,并且然后使用相应的单向函数来生成子密钥,产生比生成所有子密钥所需要的更少的位的单向函数可被用来生成子密钥同时仍然仅使用主密钥一次。
在一些实施例中,通过以下方式生成中间输出:首先将第一子函数应用到主密钥,以生成第一中间输出,然后重复将下一子函数应用到前一个中间输出来生成下一个中间输出。将相应的单向函数应用到每个中间输出来生成序列的对应的一个或多个子密钥。以这种方式可以生成序列的子密钥。从子函数到对应的一个或多个子密钥的处理可以被同步完成(计算子函数和对应的一个或多个子密钥,然后计算下一个子函数和对应的一个或多个子密钥,以此类推)。可替代地,可以首先处理所有子函数,存储(子函数和/或单向函数的)输出,并且随后可从存储的值生成子密钥。
不是通过相应的单向函数传递中间输出,在一些实施例中所有中间输出都通过单个单向函数(或甚至同一单向函数的单个实例)传递,即第一个和下一个单向函数是相同的函数。独立地,子函数可以是互相不同的或可都是相同的,举例来说,诸如移位或旋转运算符的位运算符。由于子函数的每个应用在序列中是积累的,对一个或多个单向函数的输入将随着相同函数重复应用的顺序而变化,并且从而产生了不同的子密钥序列。由于通过单向函数传递中间输入来生成序列的子密钥,甚至对于简单的和可能甚至重复的操作来生成中间输出,从一个被恢复的子密钥中推断主密钥或其他子密钥至少和难于反转一个或多个单向函数一样困难。同时,由于仅使用一次主密钥来生成第一中间输出,因此其不易在边信道攻击或其他物理攻击中被发现。另外,在一些实施例中,通过使主密钥通过单向函数传递并将结果传至第一子函数,主密钥可以被进一步与生成的子密钥分离,从而增加了从使用边信道信息发现的子密钥开始通过密码分析恢复主密钥的难度。
在一些实施例中,因为可以在单个复合函数中捕获对应的操作链并且其也是可逆的,子函数是累积的,这可被利用来生成子密钥的反向序列。例如,反向序列可被用作与子密钥的加密序列相反的子密钥的解密序列,以解密用分组密码加密的消息,该分组密码具有生成子密钥的加密序列的密钥调度。为了避免疑惑,未加密的消息字符串在本文被称为明文或明文消息,并没有任何暗示指该消息的内容是文本,而是“文本”指任何符号、字母数字或其他字符串。同样,术语密文或密文消息相应地被理解为消息的加密版本。
在用于生成使用子函数序列生成的子密钥序列的反向序列的一些实施例中,其中该子函数序列是可逆的并且具有在子函数的正向序列的生成中提供最后的中间输出作为输出的复合函数,按照以上相同的过程,按照相反的顺序,第一个子函数是复合函数并且下一个子函数是正向序列的下一个子函数的相应的反函数。尽管上文已经将正向序列作为加密序列描述并且将反向序列作为解密序列描述,应当理解角色可以被互换并且子密钥的对应正向和反向序列的高效生成可以获得更广泛的应用。
在一些实施例中,在子密钥的生成中使用的子函数不以如上所述的链式序列执行,即每个后续的子函数将前一个子函数的输出作为输入,而是子函数被独立地执行,例如异步地或并行地。这意味着每个子函数需要被独立提供其输入。为了避免在这些实施例中超过一次地使用主密钥,主密钥通过另外的单向函数(例如上面讨论的单向函数)被传递一次,并且然后将结果提供给每个子函数,从而避免多次读取主密钥。然后如上所述经由相应的单向函数或共享的单向函数从子函数的输出生成子密钥。
按照各种实施例,可以使用一个或多个下述子函数(子函数的组合),包括但不限于:
·仿射函数(按照定义可逆的)
·可逆的布尔函数
·可逆的位或字节操作符,例如具有常数的XOR/ADD,移位/旋转,状态的不同位的XOR/ADD,位排列。
·可逆表格查找函数
·可逆求幂函数
·Feistel架构
·以上的组合
子函数可包括一个或多个以上类别的函数。具体而言,子函数可包括以上类别的同一个的函数,或者其参数不同的相同函数。如上所述,在一些实施例中,子函数可以是被重复使用的相同的和/或单一的子函数。根据各种实施例,以上子函数中的任何一个可以与以上单向函数中的任何一个组合。在一些实施例中,一个或多个子函数是可逆表格查找函数并且一个或多个单向函数是基于轻量级排列的Davis-Meyer架构。尽管期望子函数是可逆的以实现需要反转子函数的某些上述实施例,但在所有实施例中这不是必需的。
如上所述,单向函数可以是相同的,或单向函数中的部分或全部可以是相互不同的。例如可以在单个实例中在硬件中执行同一个单向函数,并且可以从子函数依次获得输入以产生对应的子密钥序列。因此,应理解的是以复数提及单向函数包括单数,在该单数的情况下所有的单向函数可以是相同的单一单向函数并且可被实现为该单一单向函数的单一逻辑或物理实例。
本公开的一些方面包括具有由如上所述的子密钥序列(生成子密钥的序列)限定的密钥调度的分组密码,以及使用这样的分组密码用于消息的加密和解密。
本公开的其他方面包括具有装置的系统,所述装置用于实现如上所述的处理步骤以生成子密钥序列和/或处理(加密/解密)消息;包括以物理形式编码的指令进行编码的计算机程序产品和信号,当所述指令在处理器上被执行时,实施如上所述的处理步骤;以及包括存储着编码指令的一个或多个有形可记录介质或存储设备,例如光盘或磁盘或固态设备,当所述编码的指令在处理器上执行时实施如上所述的处理步骤。此外,这些方面延伸到这样的计算机程序产品和信号、有形可记录介质和存储设备与用于执行这些指令的处理器的组合,例如在通用计算机中。
本公开的另一方面还包括一种设备,该设备包括存储器和处理器,所述存储器用于存储主密钥和至少一个子密钥的存储器;所述处理器被配置以执行如上所述的处理步骤来生成如上所述的子密钥序列和/或处理(加密/解密)消息。这种设备的实施例包括专用集成电路,现场可编程门阵列,片上系统和集成电路设备,或它们的组合。应当理解的是在其中处理包含加密和解密两者的方面中,加密和解密可在同一设备中完成或者每个可以在分开的设备中通过在分开的设备之间传递的消息来完成。
附图说明
现在将通过举例的方式描述具体实施例,以说明本公开的各方面并且参考附图,其中:
图1至图4示出了具有回合密钥生成器的分组密码的不同模式;
图5示出了能够并行执行子函数以生成回合密钥的回合密钥生成器的实施方式;
图6示出了图5的实施方式的递归版本;
图7示出了顺序执行子函数的回合密钥生成器的实施方式;
图8示出了顺序执行子函数以生成回合密钥的反向序列的回合密钥生成器的实施方式;
图9示出了图7和图8的实施方式的递归版本;以及
图10示出了使用单个单向函数来生成回合密钥序列的回合密钥生成器的实施方式。
具体实施方式
参照图1至图4,分组密码10包括回合密钥生成器200,它把存储在寄存器100中的主密钥K作为输入。回合密钥生成器200生成回合密钥K0,K1,K2,…,KN-1的序列120。加密模块300将回合密钥120的序列和来自寄存器的明文(plaintext)400作为输入。加密模块300用序列中的第一密钥加密明文400,然后用序列中的第二密钥加密结果,并且以此类推至序列中的所有密钥,并且输出密文500至寄存器作为结果。参照图2,在分组密码10的解密模式中,加密模块300被解密模块302代替,该解密模块302将来自寄存器的密文500和与回合密钥142的加密序列140相反的解密序列作为输入。解密模块302通过以下方式来解密密文500:将序列140的第一密钥(序列120的最后密钥)应用于密文500,然后将序列140的第二密钥应用于该操作的结果,然后以此类推,直到序列140的最后密钥被用来产生明文400。将被理解的是,根据该实施例,分组密码10的加密和解密模块在同一设备或电路中(在一些实施例中共享计算模块)或在不同的设备或电路中实现。
在一些实施例中,如图1和图2示意性示出的那样,独立地生成回合密钥,即每个回合密钥被分别地存储以存储回合密钥的整个序列120、140,使得该序列的回合密钥能够以任何顺序或并行地被生成(并且解密序列通过以相反顺序读取加密序列而不需要进一步计算而生成)。在其他实施例中,如图3和4中示意性示出的那样,回合密钥按次序依次生成。尽管这在需要较少的存储器来存储回合密钥并且一次仅暴露一个回合密钥方面是有利的,它要求再次计算回合密钥的相反序列,而在图1和图2所描述的实施例中,所存储的回合密钥可以简单地以相反的顺序遍历。
参照图5,现在描述回合密钥生成器200的具体实施例。主密钥K通过单向函数220(也被称为x)传递,然后结果通过子函数242的集合240(也被称为F0,F1,F2,…,FN-1)传递。然后每个子函数242的结果通过子函数262(也被称为H)传递。每个子函数242的结果可被馈送到对所有子函数通用的公共单向函数262,或每个子函数242可具有对应的单向函数262以形成单向函数260的实例的集合,其可全部实施相同的单向函数H,或不同的单向函数,例如对于每个子函数242不同的单向函数262。这些操作导致一组回合密钥122在子密钥122的序列120(也被称为K0,K-1,K2,…,KN-1)中作为一个或多个单向函数262的输出。
以序列120作为加密序列,在其中回合密钥122全部被存储的实施例中,可以简单地通过以相反顺序读取序列120来获得解密序列。在其他实施例中,例如其中只有一个回合密钥被存储并且被实时生成,可以通过以与序列240相反的顺序运行子函数242来生成回合密钥的反向序列来获得解密序列。
在一些实施例中,无论是一次性或实时计算回合密钥122,对x、F和H使用以下函数,其中p、q、p*、q*、pi和qi是大素数:
·x:=K2 mod N*,其中N*=p*·q*
·Fi(x):=x2 mod Ni,其中Ni=pi·qi
·H(y):=y8 mod N,其中N=p·q;y:=Fi(x)
为p*和q*选择素数,使得实际上不可能计算平方根。例如,在一些实施例中log2(|N*|)至少为2048位。其他的素数pi和qi被类似地选择,例如使得log2(|Ni|)是x的输出的位数的一半(log2(|N*|)的一半)并且选择p和q使得log2(|N|)大于或等于回合密钥122中所需的位数。为保护主密钥K免受边信道分析,可以在读出时向K添加N*的随机倍数,或者K可以以这样添加的常数来存储,如使用mod N*操作作为第一阶段的实施例中,这不会影响x的输出。
参照图6,现在描述一些实施例,其中只有单个回合密钥Ki被存储在寄存器640中并且被实时生成以生成序列120。这样的实施例特别适合于在专用电路中实施,在专用电路中可以在硬件中快速地完成执行并且存储容量可能受限。保持主密钥K的值的寄存器100被执行x的模块220读取。模块220计算x(K)并且将它存储在内部寄存器中。被配置成计算用于密钥生成的每次迭代的子函数Fi的子函数模块610与保持参数序列的寄存器620通信,每个参数定义用于每次迭代的特定实例:F0,F1,…FN-2,FN-1。子函数模块610将它的输出传递到执行单向函数H的单向模块630以生成输出Ki并且将它存储在寄存器640中。子函数模块610被配置为使得它在触发连接器652上将触发发送到模块220以再次接收x(K)的值(可替代地,该值可以被存储在子函数模块610中的寄存器内中或其他地方)。在接收x(K)的值时,从寄存器620读取限定Fi+1的下一个参数,并且经由单向模块630计算用于Ki+1的值。
到目前为止描述的实施例通过将主密钥通过第一单向函数x传递来保护主密钥,并且从该值计算回合密钥122作为对相应的子函数242的独立输入。现在参照图7至图9来描述可替代实施例,其中子函数240的序列的第一子函数242将主密钥K作为输入,并且接下来的子函数F1,F2,…,FN-1 244至248(F1,F2,…,FN-1)的每一个都把前一子函数的输出作为输入,例如子函数244将子函数242的输出作为输入,然后以此类推。序列240中的每个子函数242至248的输出再次通过单向函数262被传递,如以上参照图5所讨论的,以依次产生回合密钥122至128的序列120作为输出,再次如以上参照图5所述。
在一些具体实施例中,Fi是从以上描述的函数的类别中选择的,具体在一些实施例中,Fi:是表格查找函数,并且单向函数H(y)从上述的函数的类别中选择,具体在一些实施例中,H(y)是基于轻量级排列的Davis-Meyer架构。在一些实施例中,可如上选择单向函数,即H(y):=y8 mod N。在一些实施例中,单向函数x,如上所述,可被插入在K和序列240的第一子函数242(F0)之间。
将回合密钥120的序列作为加密序列,在其中单独的回合密钥122至128保持被存储的实施例中,通过简单地反向读取序列120可以得出解密序列。在回合密钥122至128不可用的情况下,它们当然可以通过子函数240的序列来计算,如上所述,一旦计算出结果则以相反的顺序读取。然而,可能期望以解密序列的第一回合密钥开始计算解密序列,该第一回合密钥是加密序列的最后回合密钥。这意味着要使用的第一回合密钥是最先可用的,并且能够实现其中实时计算回合密钥并且不存储回合密钥的实施例。现在参照图8来描述能够实现回合密钥序列的顺序颠倒来得出回合密钥122至128的解密序列130的实施例。这些实施例适于计算使用子函数242至248得出的正向或解密序列120的反向或解密序列,这些子函数242至248是可逆的并且从中可以将直接计算子函数240的序列的结果的复合函数构建为子函数242至248的复合函数,如下所示:
参照图8,反向序列250的第一子函数252计算正向序列240的子函数的复合函数F{0→N-1}并且通过单向函数262传递输出,以生成在反向回合密钥序列130中的第一回合密钥128,其对应于正向序列120的最后回合密钥128,即KN-1。子函数252的输出也被传递至反向序列250的下一个子函数254,其对应于正向序列240的最后函数248的反函数,即FN-1 -1。子函数254的输出再次通过单向函数262被传递以生成在反向序列130中的下一个回合密钥,即KN-2,正向序列120中的倒数第二个回合密钥。在反向序列250中的下一个子函数256对应于正向序列240中的倒数第二个子函数的反函数,即FN-2 -1,并且被用来生成反向序列130中的下一个回合密钥,然后以此类推,直到最后对应于正向函数240的第二子函数的反函数的反向序列250中的最后子函数258被用来生成反向序列130中的最后回合密钥122,该最后回合密钥122是正向序列120中的第一回合密钥。
如上所述,在这些实施例中,子函数被要求是可逆的并且可组合成复合函数。在一些实施例中,子函数是可逆表格查找函数或移位或旋转位操作符。只要子函数是可逆的并且是可组合的,序列240的子函数可以是全部相同的、单一的子函数、重复使用的、或可以是各不相同的、或两者的组合。
参照图9,现在描述一些实施例,其中只有单个回合密钥Ki被存储在寄存器640中,并且回合密钥被实时生成以使用子函数240的序列来生成序列120。应当被理解的是,这些实施例同样适用于使用对应的子函数的序列250产生上述的序列130。此外,这样的实施例特别地适合于在专用电路中的实施方式,在专用电路中可以在硬件中快速地完成执行并且存储容量可能受限。
保持用于主密钥K的值的寄存器100被子函数模块610读取。如上所述,子函数模块610也读取一个或多个参数以定义用于相关的迭代的函数Fi并且评估Fi,提供结果至单向模块630作为输出,该单向模块630计算其输入的单向函数并将结果作为回合密钥Ki存储在寄存器640中。模块610也再次将它自己的输入通过线660提供给它的输入,经由单向函数模块630触发下一个子函数Fi+1以及从而Ki+1的计算。
已经在从对应的子函数Fi生成单个回合密钥Ki的方面来描述所有上述实施例。在这些实施例中,单向函数(们)H的输出中的位数必须等于或大于回合密钥Ki的位数。当然,应当理解的是,在一些实施例中,单向函数的输出可具有比子密钥所要求的更少的位。在这样的实施例中,例如,在单向函数的输出的位数是所要求的位数的1/2(或者更一般地1/m)的情况下,以上过程可被运行两次或m次以生成所需位。类似地,在一些实施例中,两个(m个)单向函数的输出一个接一个地运行可被组合以依次生成子密钥,实际上将相邻的回合密钥(如图所示)分组在一起以形成具有足够位的回合密钥。
另一方面,在一些实施例中,H的输出中的位数至少是单个回合密钥Ki的m倍并且从被应用到对应的子函数Fi的单向函数H的输出中生成m个回合密钥。换言之,在这些实施例中,m个回合密钥Ki·m+j,j=1,2,…,m从每个子函数Fi中生成。例如,如果H的输出具有2048位,16个128位的回合密钥Ki可以从该函数的输出中生成。
在一些实施例中,H的输出位通过预先确定的关系被映射到Ki的位。例如,如果Ki的位数是n,H的输出的前n位被用来设置K0的位,H的输出的接下来的n位被用来设置K1的位,然后以此类推。当然其他关系也是同样可能的,例如,使用H的输出的前m位来设置所有Ki的第一位,使用H的输出的次m位来设置Ki的第二位、然后以此类推、或者其他任何预先确定的映射。
在现在参照图10描述的一些实施例中,单个单向函数280产生具有足够位数的输出以生成在序列120中所需数量的回合密钥Ki,即根据上述讨论,序列中有m个回合密钥。由于全部的回合密钥是从单个单向函数的输出生成的,因此不需要子函数Fi,或者可替代地,单向函数280可被看做单个子函数Fi和单向函数H的组合。如图10所示以及以上所述,在一些实施例中,单向函数280的输出的连续块的位被用来限定对应的Ki回合密钥,尽管如上所述向回合密钥位分配单向函数的输出位的其他方案是同样可能的。
尽管前面的具体描述参考了用以实现x,H和Fi的一些特定函数,但是在适用的情况下,在各种实施例中,受到上面解释的约束的许多其他合适的函数是可能的,并且是本领域技术人员容易想到的。特别地,以上已经讨论了一些适合的函数并且可与描述的具体实施例组合使用。
还公开了以下实施例:
1.一种用于从主密钥生成用于加密操作的子密钥序列的设备,其中每个子密钥由相应的位值限定,该设备包括处理器以及用于存储所述主密钥和至少一个子密钥的存储器,所述处理器被配置以:
利用变换对所述主密钥进行操作,其中所述变换包括一个或多个单向函数并且所述主密钥仅被操作一次以生成所述序列的所述子密钥;和
使用所述一个或多个单向函数的相应的位值来设置所述序列的所述子密钥的相应的位值。
2.根据条目1所述的设备,其中设置相应的位值包括根据预先确定的关系、按照所述一个或多个单向函数中的一个的相应的位值来设置所述子密钥中的至少两个的相应的位值。
3.根据条目1所述的设备,其中设置相应的位值包括根据预先确定的关系、按照所述一个或多个单向函数中的一个的相应的位值来设置所述序列的所有所述子密钥的相应的位值。
4.根据条目1或条目2所述的设备,其中对所述主密钥进行操作包括生成多个中间输出并且将单向函数应用到每个中间输出以生成相应的单向输出,并且其中所述处理器被配置以从每个单向输出生成一个或多个所述子密钥。
5.根据条目1,2或4所述的设备,其中所述处理器被配置以
将第一子函数应用到所述主密钥以生成第一中间输出;
将第一单向函数应用到所述第一中间输出;和
从所述第一单向函数的输出中生成所述序列的第一一个或多个所述子密钥;并且
重复地:
将下一个子函数应用到前一个中间输出以生成下一个中间输出;
将下一个单向函数应用到所述下一个中间输出;和
从所述下一个单向函数的输出生成所述序列的下一个一个或多个所述子密钥。
6.根据条目1,2或4所述的设备,其中所述处理器被配置为:
将输入单向函数应用到所述主密钥以生成工作密钥;
将多个子函数应用到所述工作密钥以生成相应的中间输出;
将输出单向函数应用到每个中间输出以生成相应的变换输出;和
从所述变换输出生成所述序列的所述子密钥。
7.根据条目1至6中任一项所述的设备,其中所述处理器被配置以执行具有由所述序列限定的密钥调度的分组密码,并且使用所述序列的所述子密钥作为分组密码中的回合密钥。
8.一种用于从主密钥生成用于加密操作中的相关的子密钥的正向和反向序列的设备,所述设备包括存储器和处理器,所述存储器用于存储所述主密钥和至少一个子密钥,所述处理器根据条目5被配置以生成所述正向序列的子密钥,
其中所述下一个子函数被应用在正向下一个子函数序列,和
其中跟随有所述正向下一个子函数序列的所述子函数的所述第一子函数限定正向子函数序列;
并且其中所述处理器根据条目5被配置以从所述主密钥生成子密钥的反向序列,
其中所述第一子函数是所述正向子函数序列的所述子函数的所述复合函数,和
其中所述下一个子函数被应用在反向下一个子函数序列中,并且所述反向下一个子函数序列的所述子函数对应于以相反顺序的所述正向下一个子函数序列的所述子函数的相应的反函数。
9.一种用于解密用分组密码加密的消息的设备,所述分组密码具有密钥调度,所述密钥调度包括应用在解密序列中的回合密钥,所述回合密钥的加密序列能够由根据条目5配置的处理器从主密钥获得,其中所述下一个子函数被应用到加密下一个子函数序列中,并且跟随有所述加密下一个子函数序列的所述子函数的所述第一子函数限定加密子函数序列,所述设备包括存储器和处理器,所述存储器用于存储主密钥和至少一个子密钥,所述处理器根据条目5被配置以从所述主密钥生成子密钥的解密序列,
其中所述第一子函数是所述加密子函数序列的所述子函数的所述复合函数,和
其中所述下一个子函数被应用在解密下一个子函数序列中,并且所述解密下一个子函数序列的所述子函数对应于以相反顺序的所述加密下一个子函数序列的所述子函数的相应的反函数;和
被配置以按照所述解密序列的顺序应用所述子密钥来解密所述消息。
10.一种利用具有密钥调度的分组密码处理消息的设备,所述设备包括存储器和处理器,所述存储器用于存储主密钥和至少一个子密钥,所述处理器被配置为:
用分组密码加密所述消息的明文以生成密文,其中所述处理器根据条目5被配置以从主密钥生成加密序列中的所述密钥调度的回合密钥,其中所述子函数被应用在加密下一个子函数序列中,并且跟随有所述加密下一个子函数序列的所述子函数的所述第一子函数限定加密子函数序列,并且其中所述处理器被配置以
用所述加密序列中的所述回合密钥中的第一个回合密钥来加密所述明文以生成第一回合文本;和
对于所述加密序列中的其余回合密钥,用所述加密序列中的下一个回合密钥加密前一个回合密钥文本以生成下一个回合文本,其中最后的回合文本是所述密文;并且其中所述处理器进一步被配置以
解密所述密文以生成所述明文,其中所述处理器根据条目5被配置以从所述主密钥生成子密钥的解密序列,其中所述第一子函数是所述加密子函数序列的所述子函数的所述复合函数,并且其中所述下一个子函数被应用在解密下一个子函数序列中,并且所述解密下一个子函数序列的所述子函数对应于以相反顺序的所述加密下一个子函数序列的所述子函数的所述相应的反函数;并且其中所述处理器被配置以
用所述解密序列中的所述回合密钥中的第一个回合密钥来解密所述密文以生成第一回合文本;和
对于所述解密序列中的所述其余的回合密钥,用所述解密序列中的下一个回合密钥来解密前一个回合文本以生成下一个回合文本,其中最后的回合文本是所述明文。
尽管已经根据具有密钥调度并且由特定回合密钥生成器限定的分组密码对一些实施例进行了以上具体描述,但是应当理解,已经描述的生成加密密钥的序列的实施例可以在分组密码和回合密钥的环境中获得更广泛的应用。因此,本公开不限于分组密码的情况,而是包括根据所公开的回合密钥生成器(因此可更一般地将其描述为子密钥生成器)的实施例从主密钥生成子密钥序列的其他用途。
更一般地,通过示例的方式对特定实施例进行了上述描述,以说明本公开的各方面不应被理解为限制随后所附权利要求中所主张的主题。
Claims (7)
1.一种从主密钥生成用于加密操作的子密钥序列的子密钥的方法,其中每个子密钥由相应位值限定,所述方法包括:
利用一个或多个单向函数对所述主密钥进行操作,以生成多个中间输出;
将第二组单向函数应用到所述多个中间输出以生成相应单向输出;和
使用所述相应单向输出的相应位值来设定所述子密钥序列的所述子密钥的相应位值,
其中,所述多个中间输出仅从所述主密钥生成一次。
2.根据权利要求1所述的方法,还包括:使用使用所述相应单向输出的相应位值的所述子密钥序列的子密钥的相应位值,生成加密的消息。
3.根据权利要求2所述的方法,还包括:使用使用所述相应单向输出的相应位值的所述子密钥序列的子密钥的相应位值,解密所述加密的消息。
4.一种用于从主密钥生成用于加密操作的子密钥序列的设备,其中每个子密钥由相应位值限定,所述设备包括:
存储器,用于存储所述主密钥和至少一个子密钥:和
处理器,配置为:
利用一个或多个单向函数对所述主密钥进行操作,以生成多个中间输出;
将第二组单向函数应用到所述多个中间输出以生成相应单向输出;和
使用所述相应单向输出的相应位值来设定所述子密钥序列的所述子密钥的相应位值,
其中,所述多个中间输出仅从所述主密钥生成一次。
5.根据权利要求4所述的设备,其中所述处理器还配置为:
使用使用所述相应单向输出的相应位值的所述子密钥序列的子密钥的相应位值,生成加密的消息。
6.一种用于存储指令的非暂时性计算机可读介质,当所述指令由处理设备执行时,使所述处理设备从主密钥生成用于加密操作的子密钥序列的子密钥,其中每个子密钥由相应位值限定,所述指令配置为:
利用一个或多个单向函数对所述主密钥进行操作,以生成多个中间输出;
将第二组单向函数应用到所述多个中间输出以生成相应单向输出;和
使用所述相应单向输出的相应位值来设定所述子密钥序列的所述子密钥的相应位值;
其中,所述多个中间输出仅从所述主密钥生成一次。
7.根据权利要求6所述的非暂时性计算机可读介质,其中所述指令进一步配置为:
使用使用所述相应单向输出的相应位值的所述子密钥序列的子密钥的相应位值,生成加密的消息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1519612.4A GB201519612D0 (en) | 2015-11-06 | 2015-11-06 | Key sequence generation for cryptographic operations |
GB1519612.4 | 2015-11-06 | ||
PCT/EP2016/076436 WO2017076911A1 (en) | 2015-11-06 | 2016-11-02 | Key sequence generation for cryptographic operations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108476132A CN108476132A (zh) | 2018-08-31 |
CN108476132B true CN108476132B (zh) | 2021-11-19 |
Family
ID=55132394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680077921.5A Active CN108476132B (zh) | 2015-11-06 | 2016-11-02 | 用于加密操作的密钥序列生成的方法、设备和计算机可读介质 |
Country Status (10)
Country | Link |
---|---|
US (2) | US10742394B2 (zh) |
EP (1) | EP3371928B8 (zh) |
KR (1) | KR102620649B1 (zh) |
CN (1) | CN108476132B (zh) |
BR (1) | BR112018009137B1 (zh) |
ES (1) | ES2911889T3 (zh) |
GB (1) | GB201519612D0 (zh) |
MX (1) | MX2018005700A (zh) |
SG (1) | SG11201803741PA (zh) |
WO (1) | WO2017076911A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109347625B (zh) * | 2018-08-31 | 2020-04-24 | 阿里巴巴集团控股有限公司 | 密码运算、创建工作密钥的方法、密码服务平台及设备 |
CN111654367B (zh) | 2018-08-31 | 2023-05-12 | 创新先进技术有限公司 | 密码运算、创建工作密钥的方法、密码服务平台及设备 |
CN110572251B (zh) * | 2019-08-13 | 2020-09-22 | 武汉大学 | 一种模板攻击方法以及设备抗模板攻击的评估方法 |
CN110704856B (zh) * | 2019-10-09 | 2021-08-20 | 成都安恒信息技术有限公司 | 一种基于运维审计系统的秘密共享方法 |
CN111162907B (zh) * | 2019-12-28 | 2023-05-23 | 飞天诚信科技股份有限公司 | 一种协商密钥的生成方法及智能卡设备 |
CN111342951B (zh) * | 2020-02-09 | 2023-03-14 | 深圳大学 | 流密码系统的生成方法、装置及终端设备 |
CN112311527A (zh) * | 2020-09-17 | 2021-02-02 | 裴文耀 | 一种主密钥变换为多项式表格子密钥查表的加密方法 |
EP4117221A1 (en) * | 2021-07-09 | 2023-01-11 | STMicroelectronics S.r.l. | Method for performing cryptographic operations in a processing device, corresponding processing device and computer program product |
CN115022000B (zh) * | 2022-05-27 | 2023-12-01 | 北京交大微联科技有限公司 | 铁路信号系统的通信方法、装置及电子设备 |
CN115017530B (zh) * | 2022-08-08 | 2022-12-16 | 创云融达信息技术(天津)股份有限公司 | 一种数据安全存储设备及方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998031122A1 (en) * | 1997-01-08 | 1998-07-16 | Bell Communications Research, Inc. | A method and apparatus for generating secure hash functions |
US6185679B1 (en) | 1998-02-23 | 2001-02-06 | International Business Machines Corporation | Method and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks |
US6185673B1 (en) | 1998-06-30 | 2001-02-06 | Sun Microsystems, Inc. | Apparatus and method for array bounds checking with a shadow register file |
US8479016B2 (en) * | 2006-03-10 | 2013-07-02 | Irdeto B.V. | Method and system for obfuscating a cryptographic function |
CN1878059A (zh) * | 2006-07-07 | 2006-12-13 | 北京财富投资有限公司 | 一种分组加密及解密算法 |
US8130946B2 (en) * | 2007-03-20 | 2012-03-06 | Michael De Mare | Iterative symmetric key ciphers with keyed S-boxes using modular exponentiation |
US20080304664A1 (en) * | 2007-06-07 | 2008-12-11 | Shanmugathasan Suthaharan | System and a method for securing information |
US20090245510A1 (en) * | 2008-03-25 | 2009-10-01 | Mathieu Ciet | Block cipher with security intrinsic aspects |
EP2197144A1 (en) * | 2008-12-15 | 2010-06-16 | Thomson Licensing | Methods and devices for a chained encryption mode |
JP5552541B2 (ja) * | 2009-12-04 | 2014-07-16 | クリプトグラフィ リサーチ, インコーポレイテッド | 検証可能な耐漏洩性暗号化および復号化 |
CN101895389B (zh) * | 2010-07-16 | 2012-06-06 | 黑龙江大学 | 采用比例计算的基于组合编码的文件加密和解密的方法 |
-
2015
- 2015-11-06 GB GBGB1519612.4A patent/GB201519612D0/en not_active Ceased
-
2016
- 2016-11-02 SG SG11201803741PA patent/SG11201803741PA/en unknown
- 2016-11-02 WO PCT/EP2016/076436 patent/WO2017076911A1/en active Application Filing
- 2016-11-02 US US15/772,933 patent/US10742394B2/en active Active
- 2016-11-02 MX MX2018005700A patent/MX2018005700A/es unknown
- 2016-11-02 BR BR112018009137-5A patent/BR112018009137B1/pt active IP Right Grant
- 2016-11-02 KR KR1020187016055A patent/KR102620649B1/ko active IP Right Grant
- 2016-11-02 EP EP16788725.6A patent/EP3371928B8/en active Active
- 2016-11-02 ES ES16788725T patent/ES2911889T3/es active Active
- 2016-11-02 CN CN201680077921.5A patent/CN108476132B/zh active Active
-
2020
- 2020-07-01 US US16/918,426 patent/US11546135B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
MX2018005700A (es) | 2018-12-11 |
EP3371928B1 (en) | 2022-04-06 |
EP3371928B8 (en) | 2022-05-18 |
CN108476132A (zh) | 2018-08-31 |
US11546135B2 (en) | 2023-01-03 |
ES2911889T3 (es) | 2022-05-23 |
SG11201803741PA (en) | 2018-06-28 |
KR102620649B1 (ko) | 2024-01-03 |
KR20180081559A (ko) | 2018-07-16 |
EP3371928A1 (en) | 2018-09-12 |
US20210021405A1 (en) | 2021-01-21 |
US10742394B2 (en) | 2020-08-11 |
WO2017076911A1 (en) | 2017-05-11 |
US20180316490A1 (en) | 2018-11-01 |
BR112018009137A8 (pt) | 2019-02-26 |
BR112018009137B1 (pt) | 2023-12-26 |
BR112018009137A2 (pt) | 2018-11-06 |
GB201519612D0 (en) | 2015-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108476132B (zh) | 用于加密操作的密钥序列生成的方法、设备和计算机可读介质 | |
US20200244434A1 (en) | Differential power analysis resistant encryption and decryption functions | |
US8942371B2 (en) | Method and system for a symmetric block cipher using a plurality of symmetric algorithms | |
US20070237327A1 (en) | Method and System for High Throughput Blockwise Independent Encryption/Decryption | |
US8577023B2 (en) | Encryption processing method, apparatus, and computer program utilizing different types of S-boxes | |
US11153068B2 (en) | Encryption device, encryption method, decryption device and decryption method | |
US10305689B2 (en) | Encryption apparatus, decryption apparatus, cryptography processing system, encryption method, decryption method, encryption program, and decryption program | |
Aldaya et al. | AES T-Box tampering attack | |
Nara et al. | A scan-based attack based on discriminators for AES cryptosystems | |
Huang et al. | A novel structure with dynamic operation mode for symmetric-key block ciphers | |
Wu et al. | Resynchronization Attacks on WG and LEX | |
Patel et al. | Hybrid security algorithms for data transmission using AES-DES | |
Murtaza et al. | Fortification of aes with dynamic mix-column transformation | |
Bajaj et al. | AES algorithm for encryption | |
Fujishiro et al. | Scan-based attack against trivium stream cipher using scan signatures | |
Dalakoti et al. | Hardware efficient AES for image processing with high throughput | |
CN111740818A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
Landge et al. | VHDL based Blowfish implementation for secured embedded system design | |
Landge et al. | Iterative architecture AES for secure VLSI based system design | |
Lanjewar et al. | Implementation of AES-256 Bit: A Review | |
WO2017036251A1 (zh) | 高级加密标准加解密方法和装置、存储介质 | |
WO2023227894A1 (en) | Secure processing system and method | |
Putra et al. | Performance Analysis Of The Combination Of Advanced Encryption Standard Cryptography Algorithms With Luc For Text Security | |
Wu et al. | Attacking the IV Setup of Stream Cipher LEX | |
Khan et al. | Efficient Implementation of Grand Cru with TI C6x+ Processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |