CN108206735A - 通过比特混合器生成密码轮密钥的方法和系统 - Google Patents
通过比特混合器生成密码轮密钥的方法和系统 Download PDFInfo
- Publication number
- CN108206735A CN108206735A CN201711026999.7A CN201711026999A CN108206735A CN 108206735 A CN108206735 A CN 108206735A CN 201711026999 A CN201711026999 A CN 201711026999A CN 108206735 A CN108206735 A CN 108206735A
- Authority
- CN
- China
- Prior art keywords
- key
- input
- bit
- data
- xor
- 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.)
- Granted
Links
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
- 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
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Power Engineering (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Studio Circuits (AREA)
- Communication Control (AREA)
Abstract
通过比特混合器生成密码轮密钥的方法和系统。公开了生成用于加密操作的轮密钥的系统和方法。所述系统和方法可使用逻辑电路,所述逻辑电路可操作用于:获得第一输入和第二输入;对第一输入和第二输入中的每一个执行比特混合器操作;以及基于所述执行生成轮密钥。第一输入包括密钥材料的多个相等大小的子密钥、密码密钥,所述密钥材料被分成多个相等大小的密钥材料子块,第二输入包括随机输入、一个或更多个先前轮密钥或轮数。加密操作包括密码、散列函数或流生成器。比特混合器操作包括异或(XOR)树、替换‑置换网络、或双混合Feistel网络、或旋转‑加‑XOR(RAX)构造。
Description
技术领域
本公开总体上涉及计算机系统中的数据的保护。特别是,涉及信息保障的三个应用领域中的任一个:保护所传送的消息的保密性、保护存档数据的保密性、以及保护存储在计算机系统中的存储器中的数据(所述数据经常在其中的一条或更多条总线上传送)。
背景技术
为了提供金融、军事、医疗或者需要高度保护的其它数据的安全通信和保护,基于计算机和微处理器的系统如今实现了各种安全措施。这些措施通常旨在预防对手非法访问在通信信道上传送的数据、存储在诸如盘驱动器或光学介质的非易失性存储部中的数据、或者存储在由微处理器访问的存储器中的数据(例如,因为存储器和微处理器在同一电路板上和/或通过总线联接)。
示例性应用领域是保护存储在安全计算系统的存储器中的数据,但是其它类型的应用同样常见和重要。对这样的处理器的常见类型的攻击可被归类为主动或被动攻击。在被动攻击中,对手读取存储器的内容,希望发现类似口令、版权材料等的秘密。被动攻击者还可为秘密而监测处理器与存储器(或一些外设)之间的数据业务。
主动攻击尝试修改存储器的内容、或者存储器与处理器之间的数据业务。主动攻击包括尝试在不同位置之间复制并粘贴存储器块、或者回放相同位置或另一位置的较早的内容。这样的攻击会例如通过创建无限循环,或者影响在安全微处理器上运行的程序,以及使用来自受保护的存储器的数据,而造成危害。在已知的数据识别攻击中,对手可能尝试通过观察已知数据向相同地址的写入来知道加密密钥。
存储、处理或发送的敏感数据的保密性和完整性可通过加密(cryptographic)手段来保证。最重要的加密工具是块密码。其使用秘密密钥,秘密密钥确定其在给定加密算法处的行为。最常用的密码执行变换步骤的多次迭代(称为轮(round))。这些变换步骤受到从密码密钥获得的秘密轮密钥的影响。密码的安全性和速度取决于这些轮密钥如何生成。许多当前使用的密码很慢并且消耗大量的功率和能量,部分是因为生成高度不相关的轮密钥的复杂性。其密钥生成也泄露了关于边信道(side channel)的可利用信息。其它当前使用的密码采用生成低质量(相关的、偏置的)密钥的轮密钥生成器。
用于块密码的轮密钥必须高度不相关,即使它们是从相同的密码密钥获得的。生成轮密钥的算法也称为密钥编排(key-schedule)。许多密码使用类似LFSR(线性反馈移位寄存器)的简单密钥编排。这些密钥编排容易计算且快速,但是所得轮密钥高度相关。例如,在LFSR的情况下,有一半时间轮密钥仅是前一轮密钥的1比特旋转版本,而在另一半时间在旋转的前一轮密钥中仅少数比特改变。
如果密钥编排不够复杂不足以生成不相关的轮密钥,则密码需要许多轮以实现高安全性。通常使用的密码通过重复简单的步骤(包括旋转、XOR和比特重排)来完成其密钥编排。其面临艰难的权衡:这样的步骤很少生成相关的轮密钥,因此密码需要许多轮;而执行许多密钥编排步骤在每一轮都消耗很多时间。无论哪种方式,密码都需要相当长的时间。
当前使用的密钥编排算法从早前的轮密钥生成轮密钥,因此其必须生成所有轮密钥以得到最后一个密钥,利用它可开始解密。在通用微处理器上的单密码操作中,操作总数针对任何顺序的轮密钥生成是相同的,因此该迭代密钥编排不会减慢在软件中实现的密码。另一方面,在电子硬件中实现的系统中,顺序轮密钥生成在解密时引起初始延迟。例外是当利用相同的密钥执行许多解密操作时,可缓存对应轮密钥。然而,大型高速缓冲存储器是物理攻击的目标,一次又一次地使用相同的密钥将安全系统暴露给边信道攻击。密钥滚动改进了大多数应用的安全性,但它阻止缓存轮密钥,并且可能导致解密变慢。(密钥滚动意指在每使用一次之后或在每使用几次之后改变加密密钥。)
因此,行业中存在迄今未解决的需求,以解决上述缺陷和不足。
发明内容
根据本教导的示例,提供了一种生成用于加密操作的一个或更多个轮密钥的方法。该方法包括:获得一个或更多个第一输入和一个或更多个第二输入;通过至少一个电子电路对所述一个或更多个第一输入和所述一个或更多个第二输入中的每一个执行比特混合器操作;以及通过至少一个电子电路基于所述执行的步骤生成一个或更多个轮密钥。
在一些示例中,所述一个或更多个第一输入包括密钥材料的多个相等大小的子密钥、或密码密钥,所述密钥材料被分成多个相等大小的密钥材料子块。所述一个或更多个第二输入包括随机生成的固定输入、一个或更多个先前轮密钥或轮数。在一些示例中,该方法还包括:通过应用加密操作、具有硬编码密钥材料的比特混合器、计数器输入或其组合来从较短密钥生成所述一个或更多个第一输入。加密操作包括密码、散列函数或流生成器。在一些示例中,密钥材料是秘密的,在通信方之间共享。在一些示例中,密钥材料是硬编码的。在一些示例中,密钥材料是随机生成的。
在一些示例中,通过密码密钥的部分与密钥材料的部分的异或(XOR)运算将密码密钥与硬编码密钥材料组合。在一些示例中,比特混合器操作包括异或(XOR)树、替换-置换网络或双混合Feistel网络、或旋转-加-XOR(RAX)构造。在一些示例中,XOR树包括多个与非(NAND)门或多个复用器。如本文所用,NAND是指与非逻辑运算。在一些示例中,生成步骤还包括对执行步骤的输出执行加扰操作。在一些示例中,该方法还包括利用所述一个或更多个轮密钥来生成数据块。在一些示例中,该方法还包括以下步骤:针对加密密码重复执行步骤和生成一个或更多个轮密钥的步骤。在一些示例中,该方法还包括选择比特混合器,其中,比特混合器操作具有包括以下项的性质:每一个输入比特影响每一个输出比特,输入比特的变化平均导致一半的输出比特改变;输入比特的变化产生不与输入比特或输入的变化模式相关的输出值,采用密钥使其行为对不知道密钥的观察者而言是不可预测的,并且可独立地和任意地选择输入比特和输出值的固定长度。在一些示例中,XOR树还包括执行所述一个或更多个第一输入中的各个第一输入与所述一个或更多个第二输入中的各个第二输入的与非(AND)逻辑运算以选择多个第一输入中的哪一个被输入到XOR逻辑运算中,其中,XOR树的输出相对于用作输入的所述多个第一输入生成输出。
在一些示例中,该方法还包括对XOR树的输出执行加扰操作,以使比特混合器函数为非线性。
在一些示例中,替换-置换网络还包括:对所述多个第一输入中的每一个执行非线性替换操作;对替换操作的各个输出执行置换操作;执行置换操作的各个输出与一个第一输入或一个第二输入的XOR运算。
在一些示例中,其中,在双混合Feistel网络中,所述一个或更多个第一输入中的每一个被分成初始左半部和初始右半部,该方法还包括:针对多轮中的每一轮计算更新的左半部和更新的右半部,其中,计算更新的左半部包括将第一函数应用于输入的左半部以生成第一结果并且将第一结果与输入的右半部混合,其中,计算更新的右半部包括将第二函数应用于输入的左半部以生成第二结果并且将第二结果与轮密钥混合,并且其中,对于多轮中的第一轮,输入的左半部和输入的右半部是初始左半部和初始右半部,对于之后的每一轮,是紧接在前的一轮的更新的左半部和更新的右半部。
根据本公开的示例,提供了一种生成用于加密操作的一个或更多个轮密钥的系统。该系统包括一个或更多个逻辑电路,其可操作用于:获得一个或更多个第一输入和一个或更多个第二输入;通过至少一个电子电路对所述一个或更多个第一输入和所述一个或更多个第二输入中的每一个执行比特混合器操作;并且通过至少一个电子电路基于所述执行生成一个或更多个轮密钥。在一些示例中,所述一个或更多个第一输入包括密钥材料的多个相等大小的子密钥、或密码密钥,所述密钥材料被分成多个相等大小的密钥材料子块,所述一个或更多个第二输入包括随机输入、一个或更多个先前轮密钥、轮数。在一些示例中,加密操作包括密码、散列函数或流生成器。在一些示例中,比特混合器操作包括异或(XOR)树、替换-置换网络或双混合Feistel网络、或旋转-加-XOR(RAX)构造。
应当理解,以上一般描述和以下详细描述二者仅仅是示例性和说明性的,而非所要求保护的公开的限制。
附图说明
附图被并入本说明书中并构成本说明书的一部分,附图示出本公开并与说明书一起用于说明本公开的原理。
图1是根据本公开的示例实现的系统的例示;
图2是在一些示例中可对应于图1的系统的系统的例示;
图3是根据示例实现的安全存储器事务单元的例示;
图4示出根据示例实现的存储在存储器位置中的信息的数据结构;
图5示出根据各种示例实现的双混合Feistel网络(DMFN)的“半密钥”变型的一轮;
图6示出根据各种示例实现的具有“全尺寸密钥”的另一DMFN变型的一轮;
图7示出根据各种示例实现的替换-置换网络的一轮;
图8A至图8C示出可用在图7中的相应S盒的三个组件;
图9示出可用在图7中的另一S盒的一个组件;
图10示出根据各种示例实现的异或(XOR)运算的二叉树与“子密钥”选择层;以及
图11示出包括根据示例实现的方法中的各种操作的流程图。
具体实施方式
现在将详细参考本公开的示例性实现,其示例示出于附图中。只要可能,贯穿附图将使用相同的标号来指代相同或相似的部件。在以下描述中,参照形成其一部分的附图,其中作为例示示出了可实践本公开的特定示例性实现。对这些实现充分详细地描述以使得本领域技术人员能够实践本公开,并且应当理解,在不脱离本公开的范围的情况下,可利用其它实施方式并且可进行改变。因此,以下描述仅是示例性的。
在许多信息安全应用中,期望有彻底地混合其输入值的高性能、固定大小的输入和输出函数。这些称为比特混合器的函数生成与其输入没有统计相关性的输出值,例如,输入的任何简单变化都会导致平均一半的输出比特发生变化。此外,比特混合器利用密钥来更改其行为。当密钥为秘密的时,比特混合器的行为对观察者是不可预测的。
尽管性能和功耗是嵌入式应用中的考虑因素,但是先进的超大规模集成(VLSI)技术向设计者提供一些能力以用电路尺寸交换改进的安全性。尽管其它用途也是可能的,下面讨论输入和输出接口中的一者或两者针对设计是内部的并因此相对于观察者被隐藏的应用。在这些情况下,超出广义严格雪崩标准的加密要求被最小化(如果未被消除的话)。具体地,主要剩余攻击面变为通过电路的边信道流溢所暴露的数据相关信息,包括响应时间的变化、电磁辐射和功耗的波动。
使用秘密密钥的块密码通过执行变换步骤的迭代(称为轮)来将数据块(称为明文)加密为密文块。从密码密钥获得的轮密钥影响变换。密码的安全性和速度取决于这些轮密钥如何生成。
如下所述,提供了通过采用受大型密钥材料影响的比特混合器(非线性复杂函数)来生成不相关的轮密钥的方法和系统。当在电子产品中实现时,这些轮密钥生成器比当前的算法更快,可利用的边信道泄漏很少或没有,从而改进了安全性。这些得到了更快更安全的新密码,并且降低了功耗。
通过采用高度非线性的非常复杂的算法,比特混合器(最好在电子硬件中实现),所公开的方法改进所生成的用于块密码的轮密钥的质量。其改进了密码的生成速度、功率使用和安全性。将其用在嵌入式系统中(例如在飞机的单板计算机中采用)具有低成本。其不会显著增加电路尺寸,而是降低了总功率使用率。所部署的系统可使用较慢的电子组件,从而进一步降低成本以及计算系统的能量和功率消耗。操作速度和安全性也得到改进。受影响的系统包括飞行计算机、军事和空间计划、企业网络、个人和膝上型计算机、智能移动装置、甚至安全通信网络的安全子系统。高性能计算机、安全微处理器、安全电子产品或安全软件的制造商总是想要改进其产品的质量、速度、安全性和功率使用。所公开的方法和系统改进了计算系统的功率使用、性能和安全性:飞行计算机、军事和空间计划、企业网络、个人和膝上型计算机、智能移动装置、甚至安全通信网络。
根据本公开的示例,轮密钥(密钥编排)“在”任何迭代安全密码“内”均是内部的(由其修改)并且从用于不变的密码的主密钥获得。比特混合器的部分输入是秘密的(原始密钥或先前轮密钥),但输入也可包含公共信息,如当前轮数。比特混合器使用附加密钥材料(可为秘密的或公共的),如传统密钥生成器中一样。公共密钥材料也可被硬编码或者以其它方式被固定,如传统密钥生成器中一样。利用所公开的方法和系统,可在任何迭代密码内使用用于轮密钥生成的基于比特混合器的算法,其可提供更快的操作(并行电子硬件)、更低的功率和能量要求、中等电路大小、通过消除轮密钥之间的统计相关性改进安全性、并且通过减少电子硬件实现的边信道泄漏改进安全性。比特混合器所使用的密钥材料被分为相同大小的区块(chuck)(称为“子密钥”)。比特混合器生成任意长度的高度不相关的轮密钥,这使得密钥编排算法可扩展,即,适用于任何块大小的密码。
在轮密钥生成中使用的比特混合器的输入包括密码的秘密密钥,并且可包括轮计数器和早期轮密钥中的至少一个。该轮计数器较短(4...7比特),因为实际密码不会使用超过128轮。计数器可通过混排(shuffling)和重复其比特(其中一些可能反转)被扩展至与密钥相同的长度。作为一个示例,密钥编排算法可使用扩展计数器作为比特混合器的输入,并且密码密钥是比特混合器的密钥材料(的部分)。最简单的情况是密码密钥是比特混合器的第一子密钥。其它子密钥可(a)保持恒定或者(b)通过简单算法从密码密钥获得。另一示例包括密码的秘密密钥作为比特混合器的输入,并且扩展计数器是比特混合器的第一子密钥。其它子密钥(a)保持恒定或者(b)通过简单算法从密码密钥获得。密钥编排算法的另一示例包括扩展计数器和密码密钥,其被按比特异或以提供比特混合器的输入。使用上述示例的另选变型和组合可具有相似的安全性和速度益处。当扩展计数器和密码密钥被异或时(上述第三示例),不需要在扩展处理中反转任何计数器比特:与密码密钥的1比特异或实际上反转了对应计数器比特。
比特混合器使用大量的密钥材料。当存储在数字存储器或寄存器中时,该密钥材料允许密码的个性化(根据该密钥材料,定义不同的密码)。其它另选方案是对比特混合器的子密钥进行硬编码。它使密钥编排更快,但是所得密码也是固定的,它们无法被个性化。这是实践中最常见的情况:当加密的数据被发送到未知实体或者从未知实体接收到加密的数据时,密码无法被个性化。
所公开的任何密钥编排机制可直接替代任何现有块密码的密钥编排。结果,可定义多个新密码,其在硬件实现方面比其原始版本更快、更安全。可利用所公开的密钥编排改进的一些密码包括(但不限于)Twofish、Serpent、AES(Rijndael)、Blowfish、CAST5、RC4、3DES、Skipjack、Safer+/++、IDEA、SIMON、SPECK、Present、PRINT等。
通常可想到通过具有任意块大小的缩减轮密码来执行比特混合,其中经由XOR函数、或k至1的S盒(提供扩展或压缩所需),输入可被填充或者输出被折叠在一起。尽管确实存在其它构造,根据本公开的示例的比特混合器的性质包括:每一个输入比特影响每一个输出比特;输入的简单变化导致平均一半的输出比特发生变化;输入的简单变化产生与输入或输入的变化模式没有明显相关性的输出值,即,标准统计测试接受对应输出序列为随机;采用密钥以使观察者在不访问密钥的情况下不可预测其行为;可独立地和任意地选择输入和输出值的固定长度。术语“简单变化”可以是少于一半的比特同时变化、或者甚至是由使用少于十几个指令的基于软件的变换产生的。值得注意的是,上述第二性质是“严格雪崩标准”的概括。对于迭代比特混合器,可确定生成满足严格雪崩标准的输出值所需的轮数,即,在改变单个输入比特之后无法与随机区分开。
现在参照图1,根据本公开的示例性实现示出了系统100。该系统可包括许多组件、单元等(统称为“组件”)中的每个中的一个或更多个,其中至少一些可由诸如复用器、寄存器、算术逻辑单元、存储器、微处理器等的逻辑电路组成。该系统可被设计用于许多不同应用中的任一个,并且可在包括或联接到易受攻击的存储器的系统(例如,飞行计算机、军事和空间计划、企业网络、个人和膝上型计算机、智能移动装置)中具有特定的适用性。如所示,例如,该系统可包括本文中称为请求端102的一个或更多个组件,其可操作用于(例如,被配置为)发起或以其它方式请求与一个或更多个存储器104的读取和/或写入事务(有时称为操作),在一些示例中这可发生在它们之间的一个或更多个总线上。
根据示例实现,系统100还可包括本文中称为安全存储器事务单元(SMTU)106的一个或更多个组件,其被配置为或可操作用于对请求端102与存储器104之间的数据传送进行加密和解密,并且可用于(至少有一些即使不是全部)与存储器的读取或写入事务。并且如下所述,在一些但可能并非所有示例中,SMTU也可被配置为或可操作用于对存储器的内容进行认证。在各种示例中,SMTU设计可为存储器不可知的,因为存储器的类型和位置(内部或外部)对SMTU可能“未知”。
在一些示例中,SMTU 106可以以非常高的概率为存储器104中的每一个位置提供不同的加密。SMTU可使用可并行化密码构造来进行存储器的内容的加密和/或认证。在SMTU将可并行化密码构造用于加密和认证中的一个但不用于另一个的一些示例中,SMTU可将许多其它密码中的任一个用于另一个,例如利用本文所提供的比特混合器轮密钥生成修改的高级加密标准(AES)密码的标准操作模式的组合。将要存储在至少存储器位置的窗口内的相应存储器位置处的各个量(例如,16字节)的明文数据(有时简称为明文或数据)可利用独特加密来加密并利用数据版本值和数据认证标签来标记,其可随加密的数据(有时称为密文)存储在存储器位置处。
在一些示例中,数据版本值可从指示例如在当前计算会话中已发生的加密写入操作的数量的全局写入计数器(GWC)(例如,48比特值)获得。在其它示例中,数据版本值可利用在多个计算会话上的写入操作的数量、时间戳等来获得。或者,在其它示例中,数据版本值可从时钟获得。
在一些示例中,GWC可在安全操作的每一个会话开始时重置。GWC值可用明码存储或者随用户数据加密,并且在作为密钥生成的一部分使用之前通过秘密掩码值修改或以其它方式使加密或数据认证多样化。GWC值可在任何写入操作之前按增量值递增,增量值的大小可与GWC类似(例如,48比特值)。该增量值可以是在其二进制表示中不具有许多连续1或0的大的奇数值。合适的增量值的示例是pi、e、sqrt(2)、sqrt(3)、黄金比率等的比特序列的片段。诸如这些值的使用可确保连续的GWC值平均有约一半的比特不同。使用奇数GWC增量值可确保GWC在连续操作超过十年的典型应用中不会回绕。
存储器位置处的数据认证标签可取决于该存储器位置处的密文,并且在某种程度上在加密上是安全的,因为对手无法创建有效的数据认证标签,对手也无法从数据认证标签推断出关于密文的任何信息。在一些示例中,数据认证标签可用作用于认证密文以及检测数据篡改和伪造的消息认证码和短信息。标签可通过允许检测对其的任何改变来保护密文的完整性及其真实性二者。在一些示例中,标签可通过块密码,即,对密文进行操作以执行密钥所指定的变换的算法来实现。
可至少基于存储器位置的数据版本值和地址利用密钥来生成存储器位置处的密文和数据认证标签。数据版本值可利用存储器位置处的每次写入操作来更新,并且密钥(利用该秘钥生成密文)可由此随每次写入操作以及从存储器位置到存储器位置而改变。数据认证标签可利用与生成密文块的密钥不同的第二密钥来生成;但是类似该密钥,第二密钥可随每次写入操作以及从存储器位置到存储器位置而改变。在一些示例中,可并入秘密随机数和其它值(例如,安全模式值)以进一步使加密和认证多样化。如本文所述,术语随机可广义地用于指随机或伪随机(例如,从真随机种子开始通过确定性算法迭代地生成数)。
在请求端102已向存储器请求数据的读取事务期间,SMTU可从存储器读取预先加密的数据(密文)。加密的数据可由SMTU解密和认证,以防篡改的迹象;并且在数据被视为有效的情况下,SMTU可将解密的数据(明文)返给请求端。在写入事务中,SMTU可读取目标位置处的数据,然后如读取访问一样对该数据进行解密和认证。一旦这完成,SMTU就可使得待写入的数据与从该位置读取的数据合并,加密,然后写回到存储器。如这里所用,合并意指替换读回的数据中的改变的部分。如果需要,在要写入完整密文块时可使用不同的方法。在这些情况下,合并操作可变为替换,并且初始读取操作可被省略,以安全性交换速度。
在各种示例中,用于为在系统100中的单元之间或内部传送的读取数据提供安全性的方法可包括将存储器104分成一系列可寻址位置(存储器由此为可寻址存储器),各个位置具有地址并各自存储加密的数据、数据版本值(有时称为版本信息,或简称为版本值)和数据认证标签。如本文所述,存储器的可寻址位置有时可变化,但同样被称为地址、位置或可寻址位置。用于加密的数据的唯一加密密钥、以及用于数据认证标签的不同的唯一认证密钥可用于各个地址。这些密钥可能对对手是不可预测的,并且在使用之前、期间和之后保密。
在各个读取操作中,可在具有相应地址的存储器位置处读取数据版本值、数据认证标签和密文块。生成密文和数据认证标签的相应密钥可利用数据版本值和相应地址来重新生成。密文可利用其密钥解密以生成其对应明文。并且将第二密钥用于数据认证标签,可将密文与数据认证标签进行比较以验证其完整性和真实性。
在各个写入操作中,新的明文数据可被写入存储器104中的存储器位置。在一些示例中,在各个写入操作之前可由SMTU 106在该位置处读取数据并验证该数据有效。将数据写入存储器位置的处理可包括SMTU更新数据版本值,例如以反映新的所进行的存储器写入操作的数量。然后,SMTU可使用更新的数据版本值和存储器位置的相应地址(以及可能的随机数和/或一些其它值)来对新数据进行另一加密,并且SMTU可生成取决于加密的新数据的新数据认证标签。
在本公开的示例实现的另一方面,SMTU 106可被配置为或可操作用于实现可并行化密码构造。该密码可以是不可逆块密码,并且包括多个并行的不同混合功能和组合功能。如下面更详细说明的,这些混合功能可包括诸如Feistel网络、双混合Feistel网络(DMFN)、替换-置换网络、按比特异或(XOR)运算的二叉树(这些树有时简称为XOR树)、以缩减轮数运算的一些标准密码等的不同类型的功能的相同或不同的组合。示例实现的密码可用于加密或认证,并且可在一个或更多个逻辑电路中在相应电路的至多一个时钟循环中实现。当不可逆比特混合器用作密码时,尽管流密码模式是可能的,在诸如电子码本(ECB)或密码块链接(CBC)的特定加密模式下无法进行解密。
根据示例实现的此另一方面,SMTU 106可被配置为或可操作用于接收n比特输入数据块,并且通过密码从输入数据块生成m比特输出数据块。块大小n可为任意的,并且在各种示例中,n可为64、128或256比特;m和n可为相等或不等的数。输出数据块的生成可包括SMTU被配置为或可操作用于将多个并行的不同混合功能应用于输入数据块以生成多个更新的数据块,各个混合功能被配置为或可操作用于将输入数据块映射到多个更新的数据块中的相应一个。然后,SMTU可在组合功能中将多个更新的数据块组合,以生成输出数据块。
在一些示例中,混合功能可以是可逆的。如上所述,混合功能可以是不同的,并且可以是许多不同类型的混合功能中的任一个或更多个。例如,至少一些混合功能可由包括相应不同轮函数的相应Feistel网络实现。另外地或另选地,例如,至少一些混合功能可由包括相应不同的第一或第二轮函数的相应DMFN实现。另外地或另选地,例如,至少一些混合功能可通过包括相应不同替换层或变换层的相应替换-置换网络实现。此外,另外地或另选地,例如,至少一些混合功能可由可从输入数据块生成多个子密钥并使用相应二叉树混合的相应XOR树实现。
在一些示例中,在组合功能中,输出数据块的各个比特可取决于输入数据块的一个或更多个比特,并且数据块的每一个比特可影响输出数据块的一个或更多个比特。在更具体的示例中,组合功能可通过按比特XOR运算或另一适当(或许更复杂)的运算来实现。
在一些示例中,对于比特混合器功能,m比特输出数据块中的m可以是与n比特输入数据块中的n相同的数。在其它示例中,m可不同于n。该比特混合器功能可从具有相等长度的输入和输出(称为块长度)的这些比特混合器功能构造而成。例如,如果m>n,则比特混合器的块大小可为m,更新的数据块(比特混合器的输出)可被分割成片,然后可将其组合以生成输出数据块。在另一示例中,如果m<n,则比特混合器的块大小可为n。在这种情况下,通过重复特定比特(所述特定比特中的一个或更多个可被反转)并将这些重复的比特分散在相应输入数据块(对于各个混合功能可能不同)中,输入数据块的长度可增加到n。然后,比特混合器可对这些扩展长度的输入数据块进行操作。
在密码用于认证的一些示例中,输出数据块可以是数据认证标签,并且SMTU106可被配置为或可操作用于生成取决于存储器104中的存储器位置的相应地址的数据认证标签。在m=208并且n=80的一个示例中,密码的输入数据块可以是与32比特地址和48比特数据版本值级联的128比特密文,并且可从所得80比特形成数据认证标签。然后,SMTU可被进一步配置为或可操作用于执行写入操作以在具有相应地址的存储器位置处写入密文块和数据认证标签。在这些示例中,受保护的存储器可包括包含数据记录的存储器位置的多个窗口,其各自存储加密的明文块以及从存储器位置到存储器位置改变的相应数据认证标签。
在密码用于加密的一些示例中,输出数据块可以是多比特填充值,并且SMTU106可被配置为或可操作用于基于存储器104中的存储器位置的相应地址生成填充值。在n=m=128的一个示例中,可从由与48比特数据版本值和配置数据级联的32比特地址组成的输入数据块计算填充。然后,SMTU可通过XOR运算将填充值与明文块组合以生成密文块。类似于先前的示例,SMTU可被进一步配置为或可操作用于执行写入操作以在具有相应地址的存储器位置处写入密文块。并且存储器可包括各自存储从存储器位置到存储器位置改变的多个相应密文块的存储器位置的窗口。
图2示出在一些示例中可对应于图1的系统100的系统200的一个示例。该系统可根据许多不同的方法中的任一种来构造。在一些示例中,该系统可根据系统芯片(SoC)方法来构造,其中系统的组件被集成到单个集成电路(IC)(有时称为“芯片”)中。在更具体的示例中,该系统可根据来自IBM公司的CoreConnect微处理器总线架构来构造。如本文所描述的,系统的各种组件或系统的组件的功能可在诸如SoC或甚至CoreConnect的特定技术的命名法中描述。应当理解,本文所使用的任何特定命名法仅是为了例示,不应被用于限制本公开的示例实现的范围。
类似于图1的系统100,图2的系统200可包括许多组件,其中至少一些可由逻辑电路组成。如所示,例如,系统可包括微处理器核心202、存储器204和SMTU 206(在一些示例中可用作或对应于图1的请求端102、存储器104和SMTU 106)。尽管未示出,应当理解,系统可包括有时可被配置为或可操作用于用作请求端的其它组件,其同样可以是被配置为或可操作用于发起或以其它方式请求与存储器的读取和/或写入事务的组件。
如图2所示,微处理器核心202可连同存储器204、SMTU 206和其它组件一起直接或间接地联接到第一总线208,并且第一总线的使用可由仲裁电路210分配。在一个示例中,微处理器核心可以是可从IBM公司商购的PowerPC核心,并且第一总线可以是处理器本地总线(PLB)。合适的存储器的示例包括嵌入式动态存取存储器(eDRAM)212、双倍数据速率同步(或其它)动态随机存取存储器(DDR DRAM)214等,其中一些可通过相应存储器控件或接口216、218联接到第一总线。在系统被构造为各种组件被集成到单个集成电路220中的SoC的一些示例中,存储器可相对于系统的其它组件在芯片外(外部),并且可通过芯片上(内部)存储器控件联接到第一总线。这例如由图2中的DDR DRAM例示。
联接到第一总线208的组件还可包括在第一总线与诸如事务总线的另一第二总线224之间的总线桥222,诸如安全处理器226以及可能有时可用作请求端的组件的附加组件可联接到第二总线224。在一些示例中,第一总线可以是联接有高性能组件的高速总线,第二总线可以是低速总线。在这些示例中,总线桥可用于将高性能组件与低性能组件分离,这可继而改进系统性能。
SMTU 206可被配置为或可操作用于对诸如微处理器核心202的请求端与eDRAM212或DDR DRAM 214中的一者或两者之间的数据传送进行加密和解密。SMTU可充当为微处理器核心或另一请求端所发起的读取和写入请求服务的从单元,其中SMTU可根据请求从特定存储器地址发起读取或写入。由此,SMTU可为这些事务提供高级别的安全性。
SMTU 206可按照许多不同方式中的任何方式联接在系统200中。如所示,例如,SMTU可通过三个双向外部数据接口联接到总线桥222,并且可通过另一双向外部数据接口联接到安全处理器226。即,SMTU可通过微处理器核心接口228、第二总线接口230和存储器接口232联接到总线桥,并且通过命令和控制接口234联接到安全处理器。
微处理器核心接口228可经由第一总线208联接到微处理器核心202,以接收诸如从存储器204读取数据和/或向存储器204写入数据的请求的控制信息。第二总线接口230可联接到第二总线224,并且存储器接口232可经由第一总线联接到存储器。总线桥222可允许微处理器核心接口和存储器接口上的事务仅被路由到第一总线和从第一总线路由,并且第二总线接口上的事务仅被路由到第二总线和从第二总线路由。然后,命令和控制接口234可使得安全处理器226能够通过单独的接口向SMTU提供命令和控制信息。
图3是示出图2的SMTU 206的各种组件的图,其中至少一些同样可由逻辑电路组成。如所示,SMTU可包括并且命令和控制接口234可联接到具有控制寄存器304和状态寄存器306的命令控制单元302。SMTU可包括事务仲裁器308,其联接到并且被配置为或可操作用于分配微处理器核心接口228、第二总线接口230和存储器接口232的使用。微处理器核心接口上的先入先出(FIFO)存储器310可被配置为或可操作用于将事务缓冲到仲裁器。
仲裁器308还可联接到事务控制单元312和地址转换单元314,并且事务控制单元可继而联接到提供密钥生成器318、加密单元320和数据散列单元的密码单元316。密码单元可联接到密钥材料仓库(KMS)324,KMS 324被配置为或可操作用于向密钥生成器提供随机数以生成用于加密单元和数据散列单元的密钥。加密单元可被配置为或可操作用于响应于调用SMTU 206的读取或写入请求对与适当存储器204的所有读取和写入操作的数据进行加密和解密。并且数据散列单元可被配置为或可操作用于生成用于从存储器读取和写入到存储器的加密的数据(密文)的数据认证标签。在一些示例中,加密单元或数据散列单元中的一者或二者可采用如本文所述的可并行化密码构造。并且在仅一个使用可并行化密码构造而另一个未使用的一些示例中,另一个可使用许多其它构造中的任一个。例如,加密单元可被配置为或可操作用于采用AES密码进行加密和解密操作,或者数据散列单元可被配置为或可操作用于采用利用如本文所提供的比特混合器轮密钥生成修改的密钥散列函数。
在一些示例中,KMS 324可包括被配置为或可操作用于提供随机数的一个或更多个寄存器阵列326(有时称为KMS存储器)。因为SMTU依赖于KMS所提供的随机数,所以使用高质量的随机数常常是可取的。在一些示例中,然后,KMS可包括提供16K比特随机数的四个64x64寄存器阵列。在操作之前,KMS单元可利用16K比特随机数来初始化,在一些示例中可在SMTU的外部生成所述16K比特随机数。
作为使用真随机数的另选方案,在一些示例中,KMS 324可从一个或更多个板载配置/熵只读存储器块(ROM)328(例如,512×16个ROM)初始化,所述512×16个ROM中的三个被示出为ROM1、ROM2和ROM3。这些ROM可包含在系统设计期间生成的随机数。使用配置ROM作为随机数的来源可能使所生成的密钥不太随机,因此使防篡改机制的强度下降。然而,存在使用ROM作为随机数来源可能可取的应用。一个应用是与随机数的生成关联的长初始化延迟不可接受的时间关键应用。另一类型是需要生成可在系统重置之后恢复的加密的数据图像或者可在不同的系统上恢复的图像的应用。
关于根据示例实现的系统200和SMTU 206的各种特征的进一步的信息可在下面以及上述相关并且并入的'871申请中找到。
图4示出根据本公开的一些示例实现的存储在存储器104、204中的加密的记录的数据结构。如所示,可使用32字节块来存储加密的数据,所述32字节块中的各个块可包括16字节的加密的有效载荷(密文)和16字节的安全数据。安全数据可包括6字节的数据版本值(在所示示例中,写入计数器值)和10字节的认证标签。6字节写入计数器是每一次存储器位置被写入时可递增的字段,而不管地址如何。结果,递增的值对各个地址是唯一的。存储器位置的加密操作和认证密钥可从其地址、写入计数器值和随机数获得。在其它示例中,可在加密中使用更多或更少的字段。因为每16字节的加密的数据需要附加16字节以用于认证标签和写入计数器值,所以存储器位置的各个窗口的有效数据存储容量可为其物理大小的一半。但是同样,在其它示例中,也可实现更大或更小的存储器以及不同的数据和标签大小。
图5示出根据本公开的示例实现的DMFN 500的一轮。在DMFN中,通过根据需要重复输入比特或折叠输出比特以用于压缩或扩展比特混合器,块大小可以是输入大小和输出大小中的较大者。具体地,数据按照两半L和R处理。在每一轮Roundi中,两个函数F和G从Li和Ri计算Li+1、Ri+1。第一个输入L0和R0被设定为比特混合器的输入,而最后的值Lr、Rr构成输出。尽管利用F和Ri的输出的按比特XOR运算来生成Li+1,但是利用与G的输出的按比特XOR运算来混入轮密钥ki以生成Ri+1如下。对于DMFN,可针对每轮i=0、1、…、r-1计算更新的左半部(Li+1)和更新的右半部(Ri+1):
在前面,第一个输入L0和R0被设定为比特混合器的输入,而最后的值Lr、Rr构成输出,F和G表示第一和第二轮函数,并且ki表示轮密钥。轮r-1的输出可以是更新的数据块(Lr,Rr)。
在示例实现的Feistel网络和/或DMFN的情况下,轮函数(F)可以是非线性函数。该函数可为可逆的或不可逆的,但是在第一函数为可逆的情况下,应该(但不需要)很难计算逆(单向函数)。该方案的安全性可依赖于轮密钥ki的保密性,并且依赖于对F的要求,因为它是非线性并且没有逆或者很难计算逆。在一些示例中,该函数可取决于轮(例如,Fi),但是在其它示例中,第一函数可独立于轮。
合适的轮函数(F)的一个示例包括各自对输入左半部的相应一对移位版本的多个逻辑NAND运算以及对NAND运算的相应输出的逻辑XOR。在三个NAND运算的情况下,第一函数可包括:对Li的第一对移位版本的第一NAND运算;对Li的第二对移位版本的第二NAND运算;对Li的第三对移位版本的第三NAND运算;以及对第一、第二和第三NAND运算的相应输出的XOR运算。在硬件实现中,这些移位或旋转可能不消耗时间,因为它们可简单地利用布线实现。因此,第一函数可能仅需要两个XOR门延迟加上两个输入NAND门(尽管AND或NOR门也同样好使)的延迟的时间,该时间利用优化的单元库可以是等同于四个NAND2门延迟的时间。如本文所用,NOR门是实现非或逻辑函数的门。
在DMFN的情况下,第二轮函数(G)可为可逆的,但是其逆不需要被容易地计算出。与第一函数(F)类似,在一些示例中,第二函数可取决于轮(例如,Gi),但是在其它示例中,第二函数可独立于轮。
在一些示例中,非线性替换盒(s盒)的层可用于第二函数(G),这可使其映射非线性。在其它示例中,第二函数可执行左半部的循环移位或旋转,然后可将其与轮密钥混合在一起以计算更新的右半部。在更具体的示例中,第二函数可生成左半部的三个循环移位版本,其相同位置处的每三个比特可与轮密钥在该位置中的比特一起异或,以生成所得的更新的右半部的比特。在这方面,可示出在块长度=2n(其中n是正整数),数据的任三个循环移位版本的异或定义了可逆函数。与第一函数类似,在硬件实现中,这些移位或旋转可能不消耗时间,因为它们可利用适当的布线简单地实现。因此,第二函数和混合操作可能仅需要两个XOR门延迟的时间,所述两个XOR门延迟中的每一个利用优化的单元库可具有等同于1.5至3个NAND2(2输入NAND)门延迟的时间。
如果需要可逆的比特混合器,则G(或每一个Gi)必须是可逆函数。除非还需要比特混合器的逆,否则不需要容易地计算G的逆。因此,其可比典型的非线性的可逆S盒层更快。这种函数G的示例是将G的各个输入比特与来自给定循环距离(d1,d2)的两个输入比特异或。在2的幂的块长度下,当输出比特被计算为来自给定循环距离的3个输入比特的异或时,获得可逆函数。对于硬件实现,如果d1和d2不大,使得必要路由不会过长,则计算函数G并对轮密钥进行异或花费最少时间。
如果需要非线性比特混合器,则F必须是非线性函数。F不必为可逆的,因为在相反方向上,即使对于比特混合器的逆也不需要其逆。在一个示例实现中,使用如下在二进制多项式的Galois域中为非线性的快速、足够复杂的构造:
1.对来自循环距离d3和d4的Li的两个移位版本进行NAND
2.对循环距离d5和d6处的Li的另两个移位版本进行NOR
3.对循环距离d7和d8处的Li的另两个移位版本进行NAND
4.将上述三个比特块与Li进行XOR
在硬件实现中,移位基本上消耗很少的时间。因此,F和G在路径长度上几乎相等,仅需要适量的人力来平衡临界定时路径,以用于减少边信道泄漏。F和G可在特定(如果不是全部)轮中是不同的,或者在我们的实现中我们可将它们在所有轮中保持相同。
应当注意,具有可逆函数G,DMFN为可逆的:Li可从底部向上计算,即,在知道轮密钥ki和G的逆的情况下,可从Ri+1计算Li。具有Li,可计算F(Li),其与Li+1异或以得到Ri。可逆性常常是有用的性质。它确保所有可能的输出值出现,并且任两个不同的输入值不会给出相同的输出。
如先前所述以及图5所示,半长度子密钥ki在每轮与G混合。利用全块长度的子密钥(例如,如果另一半长度子密钥与Ri混合),我们没有发现明显的混合改进,如图6所示。然而,构造是不同的,适合于不同的应用。
现在参照图6,其示出了根据这些其它示例实现的DMFN 600的一轮。在DMFN中,通过应用轮密钥ki以改变Ri+1而非Li+1,可平衡计算这两半的工作。即,这两半可同时变为可用的。但是在应用第一函数(F)的同时,Ri可能未使用。因此,如图6所示,在不打乱平衡的情况下,Ri可与另一轮密钥hi混合。并且Ri+1和Li+1二者可受密钥材料影响。当对于第一函数(F)和第二函数(G)选择复杂度相似的函数时,图6所示的DMFN可实现更好的总体混合性质。在其它示例中,例如在与第一函数相比第二函数计算较慢的情况下,可省略ki的混合,这可得到在混合性质方面与图5所示的DMFN相似但稍快的方案。对于DMFN,可针对每轮I=0、1、…、r-1计算更新的左半部(Li+1)和更新的右半部(Ri+1):
在前面,第一个输入L0和R0被设定为比特混合器的输入,而最后的值Lr、Rr构成输出,F和G表示第一和第二轮函数,并且ki和hi表示轮密钥。轮r-1的输出可以是比特混合器的输出,更新的数据块(Lr,Rr)。
也可使用基于公知的替换-置换网络的比特混合器的可逆版本。类似于Feistel网络和DMFN,示例实现的替换-置换网络可按照迭代(或轮)执行。例如,对于轮(i),输入数据块(Di)可与轮密钥(ki)混合(例如,异或),并且结果可通过包括多个S盒(Si)的替换层和包括置换(Pi)的线性变换层来混合,以生成更新的数据块(Di+1)。在另一示例中,输入数据块可首先通过替换层和线性变换层来混合,以生成更新的数据块,然后可将其与轮密钥(ki)混合。在任一示例中,S盒和置换中的任一者或两者可取决于或独立于该轮。并且在一些示例中,用于至少一轮的至少两个S盒可为不同的。在一个示例实现中,初始数据块(D0)可仅是还包括至少一个其它子集(B0)的较大数据块的子集。轮密钥(ki)可与所述另一子集(B0)混合(例如,异或)以生成混合的轮密钥,并且它可与该轮的输入数据块(Di)混合。或者在另一示例中,轮密钥可与另一子集混合,并且所得混合的轮密钥可在替换层和线性变换层之后与更新的数据块(Di+1)混合。
图7示出根据本公开的示例实现的替换-置换网络700的三轮。可使用基于公知的替换-置换网络的比特混合器的可逆版本。对于压缩或扩展变型,块大小被选择为期望的输入和输出块大小中的较大者。如果输入大小较小,则未使用的输入比特可保持恒定或者重复所使用的输入比特直至其与输出大小匹配。如果所需的输出大小较小,则我们可丢弃输出比特或者经由XOR或其它适当函数将特定比特折叠在一起,以生成最终输出。替换-置换(SP)网络通常根据图7利用以下3步的多次迭代构建:
1.通过一系列非线性函数S盒对输入进行变换
2.结果的比特被重新路由/置换
3.置换的数据与轮密钥/子密钥异或
注意:第一轮和最后一轮常常被简化,省略一步或两步
如果S盒为可逆的,则SP网络为可逆的。如果S盒为非线性的,则SP网络为非线性的。SP网络可任意宽,其中彻底混合所需的轮数取决于其宽度。在硬件实现中,小S盒往往会产生更快的比特混合器。在PRINTcipher中实现了最小的实际S盒,一个具有3个输入比特和3个输出比特,如Lars Knudsen、Gregor Leander、Axel Poschmann、Matthew J.B.Robshaw所述(PRINTcipher:A Block Cipher for IC-Printing.Cryptographic Hardware andEmbedded Systems,计算机科学系列讲义CHES 2010第6225卷,第16-32页)。该3×3 S盒的三个输出比特定义如下:
F0=AB'C'+A'(C+B)
F1=A'BC+B'(C'+A)
F2=ABC'+C(B'+A')
图8A至图8C示出可用于实现该S盒的各个小且快的电路,其中800示出用于计算F0的电路,820示出用于计算F1的电路,840示出用于计算F2的电路。对于各个输出比特,它们仅需要少量的门。
类似地,如A.Bogdanov、R.R.Nnunsen、G.Leander、C.Paar、A.Poschmann、M.J.Bobshaw、Y.Shein、C.Vikkelsoe所述(PRESENT:An Ultra-Lightweight BlockCipher.Cryptographic Hardware and Embedded Systems,计算机科学系列讲义CHES2007第4727卷第450-466页),PRESENT cipher实现4×4S盒如下:
F0=A'BC'+ACD+A'BD'+AB'C'+AC'D';
F1=A'B'C+BC'D+AB'C'D'+ABC+BCD';
F2=ABC'+AC'D+A'B'D'+A'BC+A'BD;
F3=A'BD+A'C'D+ABD'+AC'D'+AB'CD+A'B'CD';
图9示出可用于实现四个输出信号中的一个的示例性电路设计900。该S盒对于各个输出需要略多的门。可使用实现相似的性能和混合性质的其它4×4 S盒设计。也可实现更简单、更快速的S盒,但是它们需要附加的轮来实现相同的彻底混合性质,这有效降低了比特混合器的总体性能。
可使用诸如PRINTcipher、PRESENT和AES的密码以及诸如SHA3的散列函数中所使用的合适置换。上面所列的前两个密码所使用的简单置换在前几轮中实现其输入比特的完美分散;受单个输入比特变化影响的比特被馈送到不同的S盒中。在要混合的输入块大小为b并且S盒的宽度为s的情况下,该置换被定义如下:
对于0≤i≤b-2,P(i)=s·i mod b-1;并且P(b-1)=b-1
m×m完美S盒将单个输入比特变化分配给下一轮的m比特。通过适当置换,这些比特被路由到下一轮的不同S盒,从而将变化分配给m2比特。在r轮之后,输入中的单个比特变化影响mr输出比特,直到所有比特均被影响。我们希望mr≥n,即,r≥log(n)/log(m),使得单个输入比特变化影响所有输出比特。自然,更多轮将实现更彻底的混合。
在使用PRINTcipher S盒的SP网络的示例实现中,输入和输出宽度被设定为255比特。为了实现完美混合,所需的理论最小轮数为r=log(255)/log(3)≈5。对1000个随机密钥集合的试验的统计测试表明需要更多轮。九轮总是足以达到统计上完美的混合。如最坏的情况下所需的在单个时钟循环中执行9轮使时钟频率高达450MHz。在使用PRESENT密码S盒的SP网络的另一示例实现中,输入和输出宽度被设定为256比特。为了实现完美混合,所需的最小轮数为r=log(256)/log(4)=4。对1000个随机密钥集合的试验的统计测试表明6轮足以实现统计上完美的混合。即使在最坏的情况下,使用PRESENT密码S盒的6轮SP网络与使用PRINTcipher S盒相比所需少三轮,并且在各轮中混合更彻底,更远离任何线性函数。轮的差异使得性能提高,在单个时钟循环中执行所有6轮使时钟频率高达500MHz。
图10示出根据各种示例实现的XOR树1000。根据使用XOR树的示例,混合功能可基于秘密随机数(例如,KMS 324)和输入数据块。在这方面,子密钥可以是块序列中与输入数据块中的特定比特(例如,二进制值为一(或另选地,零)的那些比特)对应的位置处的秘密随机数的块。然后可使用XOR树将子密钥混合在一起。
如图10所示,XOR树1000可包括可被实现为执行数据合并操作的多个XOR逻辑门。在图10中,各个逻辑门表示一系列门,它们所操作的子密钥的每一比特一个门。
在基于XOR树的比特混合器中,输入被分割成多个任意长度的连续比特的非空集合,从而形成比特组。来自各个组的比特利用复用器从密钥材料选择子密钥,其输出被一起按比特异或以生成最终比特混合器输出。尽管通常利用ASIC中的2输入XOR门的树来实现XOR运算,但是根据目标技术(例如,在提供广查找表的FPGA中),可使用多输入门或奇偶校验生成电路。该构造的比特混合器不仅实现简单,而且提供高性能、低功耗、改进的安全性和最小的边信道攻击面。
由于基于XOR树的比特混合器的输入宽度和输出宽度可独立地选择,所以通过分别选择较长的输出宽度或更长的输入宽度来创建扩展和压缩功能。以随机密钥材料,任何单个输入比特变化将通过随机子密钥导致输出变化。因此,每一个输出比特均受到任何输入比特变化影响。此外,给定比特混合器构造,多个输入比特变化将使得输出因随机子密钥(本身是随机的)的异或聚合而变化。总之,基于XOR树的比特混合器满足上述各个期望的性质,并且确保理论上完美的混合。
在一个示例实现中,在ASIC中评估电路,ASIC利用用于子密钥选择的2对1复用器和2输入XOR门从80比特输入扩展为256比特输出以实现七级XOR树。即使在电路内的门的有限扇出(fanout)/负载下,比特混合器电路也可在时钟频率超过1.2GHz的系统中按照单个时钟循环操作。
XOR树构造在二值Galois域中为线性的,因为它仅使用比特选择和XOR运算。在这些构造中,在从简单相关的输入值计算的特定输出值之间存在一些4向相关性。在这种情况下,相关性如下出现。假设至少2输入比特组,从一个输入比特组B选择比特b,从不同的输入比特组C选择比特c。将组B中的除b之外的所有比特保持恒定,使K0表示当b为逻辑0时选择的子密钥,K1表示在b为逻辑1的情况下选择的子密钥。类似地,使L0和L1表示基于c的逻辑值选择的子密钥,而组C的其它比特保持恒定。最后,使M表示在其输入保持恒定的情况下通过其它输入比特组选择的所有子密钥的异或(如果没有更多比特组,则为0)。从b和c的所有可能的2×2值得到的输出值的异或将得到0(我们称为“4向相关”)。
(M⊕K0⊕L0)⊕(M⊕K1⊕L0)⊕(M⊕K0⊕L1)⊕(M⊕K1⊕L1)=0
在无法观察输出值的应用中,这种类型的相关不会给电路的安全性造成问题。对于这种相关成问题的应用,可通过非线性函数进一步处理输出,例如:诸如S盒的并行收集非线性函数;与原始输出异或的诸如S盒的非线性函数集合的输出;旋转-加-XOR(RAX)构造(适合于微处理器实现)。使构造非线性的另一方式是用类似于图9所示的k对1非线性S盒取代XOR树的一个或更多个级别中的XOR运算。尽管实现简单,但是附加不均匀电路延迟针对低边信道泄漏可能需要手动信号传播平衡。通过适度的努力,用S盒取代XOR树的一级在超过1.0GHz的时钟速率下实现单时钟循环操作。
现在返回图2和图3,在根据示例实现的存储器204中的存储器位置窗口中的存储器位置处的写入操作可包括微处理器核心202生成对具有相应地址的存储器位置处的数据的请求,并且在第一总线208上将该地址提供给存储器204。当然,可从诸如直接存储器访问(DMA)控制器的一些其它请求端提供地址,而不是从微处理器核心接收地址。
所接收的地址也可被提供给SMTU 206。在一些示例中,地址可以是逻辑地址,并且可由地址转换单元314转换为物理地址。地址可通过事务控制单元312提供给密钥生成器318,密钥生成器318可在功能上包括被配置为或可操作用于生成相应密钥W、C和D的三个密钥生成器(本文中有时称为密钥生成器W、C和D)。三个密钥生成器中的每一个也可接收先前在KMS324中存储或生成的随机数。存储在存储器位置处的是写入计数器值(例如,数据版本值)、数据认证标签和密文块,并且该信息可被提供给事务控制单元。在一些示例中,写入计数器值可被加密,并且该加密可以非常简单,并且其密钥可以是预定义的常数,而不会显著损失安全性。
加密单元320或SMTU 206的另一组件可使用密钥W对写入计数器值进行解密。加密单元可使用密钥C对密文进行解密,而事务控制单元可采用数据散列单元322基于密文、密钥D和数据认证标签并且在一些示例中验证密文的完整性。假设验证了密文的完整性,则解密的密文(现在为明文)可被重写到存储器位置。另一方面,未验证密文真实性的情况可用信号通知错误。
在发生错误的情况下,可指示发生了随机错误或可能的数据篡改,并且事务控制单元312可作为响应执行许多不同的动作中的任一个。例如,事务控制单元可使得系统200(i)停止处理所有的读取和写入请求,(ii)删除当前会话中用于加密的随机数,(iii)刷新参与密钥生成活动的所有寄存器,(iv)触发存储器刷新以利用全零覆写存储器窗口的内容,或者(v)采取其它动作。在另一示例中,事务控制单元可维修故障计数器(该故障计数器可响应于错误而递增)。在此方法中,如果达到错误数量的阈值,则事务控制单元可引起上述动作中的任一个或更多个。此方法在偶尔发生随机存储器读取错误的嘈杂环境中可能是有用的。
在一些示例中,在存储器204中的存储器位置处的写入操作之前可以有存储器位置处的读取操作(例如上面所描述的),以验证存储在存储器地址处的数据是真实的。如果执行了事先读取,则只有读取操作确立数据的真实性,才会发生写入操作。那么,在一些示例中,写入操作可包括被配置为或可操作用于将要写入的新数据与解密的密文(明文)合并的事务控制单元312。
被配置为或可操作用于使GWC递增的事务控制单元312向密钥生成器318的密钥生成器C和D中的每一个提供更新的值。利用递增的写入计数器值和存储器位置的地址,密钥生成器C和D可生成新的密钥C和D,并且将所述密钥分别提供给加密单元320和数据散列单元322。加密单元可使用新密钥C来对合并的明文进行加密以生成新的密文,并且数据散列单元可使用再现的密文和密钥D来生成新的数据认证标签。密钥W和递增的GWC值的组合可用于提供加密的写入计数器值。然后,可将所得的写入计数器值、数据认证标签和密文返回并写入到存储器位置。
图11示出根据本公开的示例实现的在计算机系统中提供安全性的方法1100中的各种操作。可通过为执行加密操作的密码生成一个或更多个轮密钥来提供安全性。如本文所用,加密操作包括一个或更多个加密函数。在1105,该方法开始于获得一个或更多个第一输入和一个或更多个第二输入。在一些示例中,一个或更多个第一输入可包括密钥材料的多个相等大小的子密钥、或密码密钥,所述密钥材料被分成多个相等大小的密钥材料子块,一个或更多个第二输入可包括随机生成的固定输入、一个或更多个先前轮密钥或轮数。在一些示例中,可通过应用加密函数、具有硬编码密钥材料的比特混合器、计数器输入或其组合来从较短密钥生成所述一个或更多个第一输入。在一些示例中,加密函数可包括密码、散列函数或流生成器。在一些示例中,材料是秘密的并且在通信方之间共享。密钥材料可为硬编码的。其可随机生成并存储。在一些示例中,通过密码密钥的部分与密钥材料的部分的异或(XOR)运算来将密码密钥与硬编码密钥材料组合。
在1110,该方法继续,至少一个电子电路对所述一个或更多个第一输入和所述一个或更多个第二输入中的每一个执行比特混合器操作。在一些示例中,比特混合器操作包括异或(XOR)树、替换-置换网络或双混合Feistel网络、或旋转-加-XOR(RAX)构造。在一些示例中,XOR树包括多个与非(NAND)门或多个复用器作为XOR树的第一层。比特混合器操作被选择以具有这样的性质,包括:每一个输入比特影响每一个输出比特,输入比特的变化平均导致一半的输出比特变化;输入比特的变化产生不与输入比特或输入的变化模式相关的输出值,采用密钥以使其行为对不知道密钥的观察者而言不可预测,并且可独立地和任意地选择输入和输出值的固定长度。
在比特混合器操作包括XOR树的示例中,该方法还包括:对所述一个或更多个第一输入中的各个第一输入和所述一个或更多个第二输入中的各个第二输入执行与非(AND)逻辑运算以选择多个第一输入中的哪一个被输入到XOR逻辑运算中,其中,XOR树的输出相对于用作输入的所述多个第一输入生成输出。
在比特混合器操作包括替换-置换网络的示例中,该方法还包括:对多个第一输入中的每一个执行非线性替换操作;对非线性替换操作的各个输出执行置换操作;对置换操作的各个输出与一个第一输入或一个第二输入执行按比特XOR运算。
在比特混合器操作包括双混合Feistel网络的示例中,所述一个或更多个第一输入中的每一个被分成初始左半部和初始右半部,该方法还包括:针对多轮中的每轮计算更新的左半部和更新的右半部,其中,计算更新的左半部包括将第一函数应用于输入的左半部以生成第一结果并且将第一结果与输入的右半部混合,其中,计算更新的右半部包括将第二函数应用于输入的左半部以生成第二结果并且将第二结果与轮密钥混合,并且其中,对于多轮中的第一轮,输入的左半部和输入的右半部是初始左半部和初始右半部,对于之后的每轮,是紧接在前的一轮的更新的左半部和更新的右半部。
在1115,该方法继续,至少一个电子电路基于所述执行步骤生成一个或更多个轮密钥。在一些示例中,所述生成的步骤还包括对所述执行步骤的输出执行加扰操作。在一些示例中,该方法还包括:利用所述一个或更多个轮密钥生成数据块。在一些示例中,该方法还包括:针对加密密码重复执行步骤和生成一个或更多个轮密钥的步骤。
在一些示例中,可利用多个子密钥来生成密文块。可通过修改现有密码C,使其成为更快、更安全的密码D来生成密文。在此示例中,选择迭代密码C(用于“轮”)。迭代密码C可以是(但不限于)DES、TDES、AES等。选择比特混合器B,其输出大小与C的轮密钥的大小相同。如上所述,比特混合器B可以是(但不限于)XOR树、SP网络、DMF网络。为比特混合器B选择固定的密钥材料M,其中M可任意选择,避免简单的非随机模式。M可随机生成,并在将使用D的所有通信方之间分配。C具有轮密钥生成函数F,其一些输入是先前的轮密钥(密码密钥是第一个输入)。F被B取代以将C变换为D。B的输入大小可大于其输出大小(压缩函数)。在这种情况下,额外的比特可利用轮计数器的值填充,并且可能利用多个先前的轮密钥填充,并且可能利用密码密钥填充。
即使加密函数在数学上可能是安全的,其物理实现会经由边信道泄漏关于数据和/或密钥的信息。边信道包括响应时间变化、电磁辐射、功耗波动、甚至装置引脚上的变化的电压电平。由于上述功能可仅利用简单的组合逻辑门在硬件中实现,所以边信道泄漏被最小化。更明确地,由于电路不需要通常是边信道泄漏的主要来源的结构(例如,触发器、锁存器以及其它类型的存储装置),所以电路较不易受边信道分析影响。
还可使用手动布局技术来掩蔽仍可能存在的泄漏,以平衡已经高度对称的内部信号路径,从而确保许多并发切换事件几乎完全同时发生。此平衡步骤可能不是必需的,因为发明人针对32nm SOI靶(target)技术的ASIC进行的测试中的切换瞬态为皮秒。因此,为了安装模板攻击而记录/分析从这些瞬态泄漏的信息将需要具有THz范围内的采样率的数据采集系统,比可预见的未来可用的快一个数量级。利用DPA边信道分析工作站,没有测量到可利用的边信道泄漏(例如,给定变化的输入比特的情况下,功率轨迹与输出比特之间的相关性)。
尽管取自密钥材料的不同子密钥可共享比特,但是存在几个限制。对XOR树比特混合器的一个这种限制在于,相同的密钥材料比特不能出现在由不同输入比特组选择的多个子密钥的相同位置中,因为XOR运算可有效地消去该比特。考虑到这一点,简单的比特重用方法是通过对另一子密钥进行比特旋转来生成多个子密钥。此方法以及更复杂的密钥材料映射可用于减小密钥存储部的大小或者使分配密钥所需的带宽最小化。
给定有限带宽的情况下的有效密钥分配的另一解决方案采用具有硬编码密钥材料的第二比特混合器。从较短的密钥,第二比特混合器可迭代地生成第一比特混合器的子密钥。密码和加密散列函数也可迭代地用于在使用之前填充密钥材料存储部。
尽管针对硬件实现优化上面所列的比特混合器,但是存在当在软件中实现时好用的构造。即使单时钟循环操作是不可能的,上述示例比特混合器在软件方面仍可比类似输入和输出大小的密码或散列函数快几个数量级。当没有高安全性时,仅需要一些生成的数据的统计独立性,即使用软件比特混合器也可节省大量的计算时间。
作为一个示例,非常适合于软件实现的一系列比特混合器可基于旋转、加、XOR(RAX)构造。下面是C中的64比特示例。常数是硬编码的子密钥,将由密钥存储部中的子密钥取代。在下面的示例中,函数ROL为左旋转,L和R是小常数(例如,4和9),内部变量k被初始化为0:
x=(k+=0x3779884922721DEB);
x=(x^ROL(x,L)^ROL(x,R))+0x49A8D5B36969F969;
x=(x^ROL(x,L)^ROL(x,R))+0x6969F96949A8D5B3;
x=(x^ROL(x,L)^ROL(x,R));
存在许多其它信息安全应用,其中比特混合器可为有益的。如果不仅其密钥,而且比特混合器的输入和/或输出也相对于观察者保持隐藏,则不存在特殊的安全性要求,或者安全性要求不如在可见的输入和输出下为高安全性设计的密码或其它加密函数严格。硬件比特混合器非常快,并且以低边信道泄漏从相关的输入生成统计上不相关的输出。当在加密函数中使用比特混合器时,这些性质改进其安全性。
此外,本公开包括根据以下条款的实施方式:
条款1:一种生成用于加密操作的一个或更多个轮密钥的方法,该方法包括以下步骤:获得一个或更多个第一输入(1105)和一个或更多个第二输入(1105);通过至少一个电子电路对所述一个或更多个第一输入和所述一个或更多个第二输入中的每一个执行(1110)比特混合器操作(500,600,700,1000);以及通过至少一个电子电路基于所述执行的步骤生成(1115)一个或更多个轮密钥。
条款2:根据条款1所述的方法,其中,所述一个或更多个第二输入(1105)包括随机生成的固定数据、一个或更多个先前轮密钥或轮数。
条款3:根据条款1所述的方法,其中,所述一个或更多个第一输入(1105)包括密钥材料的多个相等大小的子密钥、或密码密钥,所述密钥材料被分成多个相等大小的密钥材料子块。
条款4:根据条款3所述的方法,该方法还包括以下步骤:通过应用加密函数、具有硬编码密钥材料的比特混合器、计数器输入或其组合来从较短密钥生成所述一个或更多个第一输入。
条款5:根据条款4所述的方法,其中,所述加密函数包括密码、散列函数或流生成器。
条款6:根据条款2所述的方法,其中,所述密钥材料是秘密的并且在通信方之间共享,被硬编码,或者随机生成。
条款7:根据条款2所述的方法,其中,通过所述密码密钥的部分与所述密钥材料的部分的异或“XOR”运算来将所述密码密钥与硬编码密钥材料组合。
条款8:根据条款1所述的方法,该方法还包括以下步骤:选择所述比特混合器,其中,所述比特混合器操作具有包括以下项的性质:每一个输入比特影响每一个输出比特,输入比特的变化平均导致一半的输出比特变化;输入比特的变化产生不与输入比特或输入的变化模式相关的输出值,采用密钥以使其行为对不知道所述密钥的观察者而言是不可预测的,并且可独立地和任意地选择输入比特和输出值的固定长度。
条款9:根据条款1所述的方法,其中,通过XOR树(1000)的所述生成的步骤还包括:对所述执行的步骤的输出执行加扰操作。
条款10:根据条款1所述的方法,该方法还包括以下步骤:利用一个或更多个先前生成的轮密钥来生成数据块。
条款11:根据条款1所述的方法,该方法还包括以下步骤:针对加密密码重复所述执行的步骤和生成一个或更多个轮密钥的步骤。
条款12:根据条款1所述的方法,其中,所述比特混合器操作包括异或“XOR”树(1000)、替换-置换网络(700)、或双混合Feistel网络(500,600)、或旋转-加-XOR“RAX”构造,所述XOR树(1000)包括多个与非“NAND”门或者用于选择要合并的数据的多个复用器。
条款13:根据条款12所述的方法,其中,所述XOR树(1000)还包括:对所述一个或更多个第一输入中的各个第一输入与所述一个或更多个第二输入中的各个第二输入执行与非“NAND”逻辑运算,以选择所述多个第一输入中的哪一个被输入到XOR逻辑运算中,其中,所述XOR树的输出相对于用作输入的所述多个第一输入生成输出。
条款14:根据条款13所述的方法,该方法还包括以下步骤:对所述XOR树的输出执行加扰操作以使所述比特混合器函数非线性。
条款15:根据条款12所述的方法,其中,所述替换-置换网络(700)还包括:对所述多个第一输入中的每一个执行非线性替换操作;对所述替换操作的各个输出执行置换操作;以及执行所述置换操作的各个输出与一个所述第一输入或一个所述第二输入的XOR运算。
条款16:根据条款12所述的方法,其中,在所述双混合Feistel网络(500,600)中,所述一个或更多个第一输入中的每一个被分成初始左半部和初始右半部,所述方法还包括以下步骤:针对多轮中的每一轮计算更新的左半部和更新的右半部,其中,计算更新的左半部的步骤包括:将第一函数应用于输入的左半部以生成第一结果,并且将所述第一结果与输入的右半部混合,其中,计算更新的右半部的步骤包括:将第二函数应用于输入的左半部以生成第二结果,并且将所述第二结果与轮密钥混合,并且其中,对于所述多轮中的第一轮,输入的左半部和输入的右半部是所述初始左半部和所述初始右半部,对于之后的每一轮,是紧接在前的一轮的更新的左半部和更新的右半部。
条款17:一种生成用于加密操作的一个或更多个轮密钥的系统,所述系统包括一个或更多个逻辑电路,所述一个或更多个逻辑电路可操作用于:获得一个或更多个第一输入和一个或更多个第二输入(1105);通过至少一个电子电路对所述一个或更多个第一输入和所述一个或更多个第二输入中的每一个执行比特混合器操作(1110);以及通过至少一个电子电路基于所述执行生成一个或更多个轮密钥(1115)。
条款18:根据条款17所述的系统,其中,所述一个或更多个第一输入(1105)包括密钥材料的多个相等大小的子密钥、密码密钥,所述密钥材料被分成多个相等大小的密钥材料子块,并且所述一个或更多个第二输入(1105)包括随机输入、一个或更多个先前轮密钥、轮数。
条款19:根据条款17所述的系统,其中,所述加密操作包括密码、散列函数或流生成器。
条款20:根据条款17所述的系统,其中,所述比特混合器操作包括异或“XOR”树(1000)、替换-置换网络(700)、或双混合Feistel网络(500,600)、或旋转-加-XOR“RAX”构造。
为了简单和例示的目的,本教导的原理主要通过参考其示例实现来描述。然而,本领域普通技术人员将容易地认识到,相同的原理同样适用于所有类型的信息和系统并可在其中实现,并且任何这样的变化不脱离本教导的真实精神和范围。此外,在上述详细描述中,参照示出了具体示例实现的附图。在不脱离本教导的精神和范围的情况下,可对示例实现进行电气、机械、逻辑和结构改变。因此,上述详细描述不应被认为是限制性的,本教导的范围由所附权利要求书及其等同物限定。
本文所使用的术语和描述仅作为例示阐述,并不意指限制。例如,尽管按照从上至下的方式描述了方法,但是方法的步骤可按照与图示不同的次序执行或同时执行。另外,在术语“包括”、“具有”或其变型用在具体实施方式或权利要求书中的范围内,这些术语旨在按照与术语“包含”相似的方式为包含性的。如本文所用,关于诸如A和B的项的列表的术语“…中的一个或更多个”是指单独的A、单独的B、或者A和B。本领域技术人员将认识到,这些和其它变化是可能的。
对于本领域技术人员而言通过考虑本文所公开的说明书和公开的实践,与本教导一致的其它实现将是显而易见的。说明书和示例旨在仅被认为是示例性的,本公开的真实范围和精神由所附权利要求书指示。
Claims (10)
1.一种生成用于加密操作的一个或更多个轮密钥的方法,该方法包括以下步骤:
获得一个或更多个第一输入(1105)和一个或更多个第二输入(1105);
通过至少一个电子电路对所述一个或更多个第一输入和所述一个或更多个第二输入中的每一个执行(1110)比特混合器操作(500,600,700,1000);以及
通过至少一个电子电路基于所述执行的步骤生成(1115)一个或更多个轮密钥。
2.根据权利要求1所述的方法,其中,所述一个或更多个第二输入(1105)包括随机生成的固定数据、一个或更多个先前轮密钥或轮数。
3.根据权利要求1所述的方法,其中,所述一个或更多个第一输入(1105)包括密钥材料的多个相等大小的子密钥、或密码密钥,所述密钥材料被分成多个相等大小的密钥材料子块。
4.根据权利要求1所述的方法,其中,通过XOR树(1000)的所述生成的步骤还包括:对所述执行的步骤的输出执行加扰操作。
5.根据权利要求1所述的方法,该方法还包括以下步骤:利用一个或更多个先前生成的轮密钥生成数据块。
6.根据权利要求1所述的方法,该方法还包括以下步骤:针对加密密码重复所述执行的步骤和生成一个或更多个轮密钥的步骤。
7.根据权利要求1所述的方法,其中,所述比特混合器操作包括异或“XOR”树(1000)、替换-置换网络(700)、或双混合Feistel网络(500,600)、或旋转-加-XOR“RAX”构造,所述XOR树(1000)包括多个与非“NAND”门或者用于选择要合并的数据的多个复用器。
8.一种生成用于加密操作的一个或更多个轮密钥的系统,该系统包括一个或更多个逻辑电路,所述一个或更多个逻辑电路操作用于:
获得一个或更多个第一输入和一个或更多个第二输入(1105);
通过至少一个电子电路对所述一个或更多个第一输入和所述一个或更多个第二输入中的每一个执行比特混合器操作(1110);以及
通过至少一个电子电路基于所述执行生成一个或更多个轮密钥(1115)。
9.根据权利要求8所述的系统,其中,所述一个或更多个第一输入(1105)包括密钥材料的多个相等大小的子密钥、密码密钥,所述密钥材料被分成多个相等大小的密钥材料子块,并且所述一个或更多个第二输入(1105)包括随机输入、一个或更多个先前轮密钥、轮数。
10.根据权利要求8所述的系统,其中,所述加密操作包括密码、散列函数或流生成器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/381,540 US10742405B2 (en) | 2016-12-16 | 2016-12-16 | Method and system for generation of cipher round keys by bit-mixers |
US15/381,540 | 2016-12-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108206735A true CN108206735A (zh) | 2018-06-26 |
CN108206735B CN108206735B (zh) | 2023-04-14 |
Family
ID=60043054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711026999.7A Active CN108206735B (zh) | 2016-12-16 | 2017-10-27 | 通过比特混合器生成密码轮密钥的方法和系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10742405B2 (zh) |
EP (1) | EP3337082B1 (zh) |
JP (1) | JP7107670B2 (zh) |
KR (1) | KR102447709B1 (zh) |
CN (1) | CN108206735B (zh) |
SG (1) | SG10201710088QA (zh) |
TW (1) | TWI744388B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109302280A (zh) * | 2018-08-02 | 2019-02-01 | 哈尔滨工程大学 | 一种aes密钥扩展方法 |
CN109408029A (zh) * | 2018-10-17 | 2019-03-01 | 南京汽车集团有限公司 | 车联网下传感器生成随机数的方法 |
CN109766705A (zh) * | 2018-12-10 | 2019-05-17 | 杭州隐知科技有限公司 | 一种基于电路的数据验证方法、装置及电子设备 |
CN110855431A (zh) * | 2019-09-12 | 2020-02-28 | 南方电网数字电网研究院有限公司 | 一种密码算法加解密系统 |
CN111478766A (zh) * | 2020-01-21 | 2020-07-31 | 衡阳师范学院 | 一种分组密码meg实现方法、装置及存储介质 |
CN112751663A (zh) * | 2020-12-31 | 2021-05-04 | 南方电网科学研究院有限责任公司 | 一种数据加密方法和装置 |
CN114128210A (zh) * | 2019-07-16 | 2022-03-01 | 赛灵思公司 | 切片聚合密码系统和方法 |
CN115118527A (zh) * | 2022-08-26 | 2022-09-27 | 深圳市成为信息股份有限公司 | 超高频模组与pda的双向认证方法及相关设备 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11070354B2 (en) * | 2018-09-24 | 2021-07-20 | Lovely Professional University | System and method for generating a symmetrically balanced output |
CN109450618B (zh) * | 2019-01-11 | 2021-12-31 | 无锡华大国奇科技有限公司 | 一种基于md5的加密方法及系统 |
US11956367B2 (en) * | 2019-02-19 | 2024-04-09 | Bruno SANGLE-FERRIERE | Cryptographic method for verifying data |
FR3092923B1 (fr) * | 2019-02-19 | 2021-05-21 | Sangle Ferriere Bruno | Méthode cryptographique de vérification des données |
WO2020186125A1 (en) * | 2019-03-13 | 2020-09-17 | The Research Foundation For The State University Of New York | Ultra low power core for lightweight encryption |
CN110263503B (zh) * | 2019-05-17 | 2023-09-12 | 创新先进技术有限公司 | 一种基于区块链的版权保护方法、装置及电子设备 |
US11283619B2 (en) * | 2019-06-20 | 2022-03-22 | The Boeing Company | Bit mixer based parallel MAC and hash functions |
TWI793429B (zh) * | 2019-07-25 | 2023-02-21 | 熵碼科技股份有限公司 | 加密金鑰生成器及傳輸系統 |
US20210091928A1 (en) * | 2019-09-23 | 2021-03-25 | Qualcomm Incorporated | Iterative cipher key-schedule cache for caching round keys used in an iterative encryption/decryption system and related methods |
TWI735208B (zh) * | 2020-04-20 | 2021-08-01 | 宜鼎國際股份有限公司 | 資料防護系統及方法 |
WO2021247766A1 (en) * | 2020-06-05 | 2021-12-09 | William David Schwaderer | Shapeshift data encryption methods and systems |
US11861020B2 (en) * | 2020-06-26 | 2024-01-02 | Intel Corporation | Generating keys for persistent memory |
TWI766497B (zh) * | 2020-12-23 | 2022-06-01 | 鴻海精密工業股份有限公司 | 資料存取方法及系統 |
CN115314187B (zh) * | 2022-10-08 | 2023-04-07 | 湖南密码工程研究中心有限公司 | 一种轻量级分组密码算法RainSP的实现方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192129B1 (en) * | 1998-02-04 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for advanced byte-oriented symmetric key block cipher with variable length key and block |
US20040247116A1 (en) * | 2002-11-20 | 2004-12-09 | Boren Stephen Laurence | Method of generating a stream cipher using multiple keys |
CN101371480A (zh) * | 2005-11-21 | 2009-02-18 | 爱特梅尔公司 | 加密保护方法 |
CN102484581A (zh) * | 2009-06-19 | 2012-05-30 | 耶德托公司 | 使用中间数据更改的具有可配置密钥的白盒密码系统 |
US20160065368A1 (en) * | 2014-08-29 | 2016-03-03 | The Boeing Company | Address-dependent key generator by xor tree |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100389902B1 (ko) * | 1997-06-23 | 2003-09-22 | 삼성전자주식회사 | 차분해독법과선형해독법에대하여안전성을보장하는고속블럭암호화방법 |
WO1999038143A1 (fr) * | 1998-01-27 | 1999-07-29 | Nippon Telegraph And Telephone Corporation | Convertisseur de donnees et support d'enregistrement sur lequel est enregistre un programme d'execution de conversion de donnees |
US20030198345A1 (en) * | 2002-04-15 | 2003-10-23 | Van Buer Darrel J. | Method and apparatus for high speed implementation of data encryption and decryption utilizing, e.g. Rijndael or its subset AES, or other encryption/decryption algorithms having similar key expansion data flow |
JP4117157B2 (ja) * | 2002-07-08 | 2008-07-16 | 富士通株式会社 | 暗号回路 |
US7925013B1 (en) * | 2003-06-30 | 2011-04-12 | Conexant Systems, Inc. | System for data encryption and decryption of digital data entering and leaving memory |
JP4961909B2 (ja) * | 2006-09-01 | 2012-06-27 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
US8094816B2 (en) * | 2008-10-21 | 2012-01-10 | Apple Inc. | System and method for stream/block cipher with internal random states |
US8751822B2 (en) * | 2010-12-20 | 2014-06-10 | Motorola Mobility Llc | Cryptography using quasigroups |
US8855302B2 (en) * | 2011-06-21 | 2014-10-07 | Intel Corporation | Apparatus and method for Skein hashing |
JP2013182148A (ja) * | 2012-03-02 | 2013-09-12 | Sony Corp | 情報処理装置、および情報処理方法、並びにプログラム |
US9361106B2 (en) * | 2013-12-27 | 2016-06-07 | Intel Corporation | SMS4 acceleration processors, methods, systems, and instructions |
KR101583285B1 (ko) | 2014-07-04 | 2016-01-07 | 고려대학교 산학협력단 | 확장 키를 이용한 블록 암호화 방법 및 그 방법에 따른 장치 |
US9946662B2 (en) | 2014-08-29 | 2018-04-17 | The Boeing Company | Double-mix Feistel network for key generation or encryption |
US10146701B2 (en) | 2014-08-29 | 2018-12-04 | The Boeing Company | Address-dependent key generation with a substitution-permutation network |
GB2551849B (en) * | 2016-06-28 | 2019-10-09 | Mips Tech Llc | AES hardware implementation |
-
2016
- 2016-12-16 US US15/381,540 patent/US10742405B2/en active Active
-
2017
- 2017-10-02 TW TW106134055A patent/TWI744388B/zh active
- 2017-10-09 EP EP17195362.3A patent/EP3337082B1/en active Active
- 2017-10-27 CN CN201711026999.7A patent/CN108206735B/zh active Active
- 2017-11-09 KR KR1020170148649A patent/KR102447709B1/ko active IP Right Grant
- 2017-12-05 JP JP2017233425A patent/JP7107670B2/ja active Active
- 2017-12-05 SG SG10201710088QA patent/SG10201710088QA/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6192129B1 (en) * | 1998-02-04 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for advanced byte-oriented symmetric key block cipher with variable length key and block |
US20040247116A1 (en) * | 2002-11-20 | 2004-12-09 | Boren Stephen Laurence | Method of generating a stream cipher using multiple keys |
CN101371480A (zh) * | 2005-11-21 | 2009-02-18 | 爱特梅尔公司 | 加密保护方法 |
CN102484581A (zh) * | 2009-06-19 | 2012-05-30 | 耶德托公司 | 使用中间数据更改的具有可配置密钥的白盒密码系统 |
US20160065368A1 (en) * | 2014-08-29 | 2016-03-03 | The Boeing Company | Address-dependent key generator by xor tree |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109302280A (zh) * | 2018-08-02 | 2019-02-01 | 哈尔滨工程大学 | 一种aes密钥扩展方法 |
CN109302280B (zh) * | 2018-08-02 | 2021-11-23 | 哈尔滨工程大学 | 一种aes密钥扩展方法 |
CN109408029A (zh) * | 2018-10-17 | 2019-03-01 | 南京汽车集团有限公司 | 车联网下传感器生成随机数的方法 |
CN109766705A (zh) * | 2018-12-10 | 2019-05-17 | 杭州隐知科技有限公司 | 一种基于电路的数据验证方法、装置及电子设备 |
CN109766705B (zh) * | 2018-12-10 | 2021-03-19 | 北京链化未来科技有限公司 | 一种基于电路的数据验证方法、装置及电子设备 |
CN114128210A (zh) * | 2019-07-16 | 2022-03-01 | 赛灵思公司 | 切片聚合密码系统和方法 |
CN110855431A (zh) * | 2019-09-12 | 2020-02-28 | 南方电网数字电网研究院有限公司 | 一种密码算法加解密系统 |
CN111478766A (zh) * | 2020-01-21 | 2020-07-31 | 衡阳师范学院 | 一种分组密码meg实现方法、装置及存储介质 |
CN112751663A (zh) * | 2020-12-31 | 2021-05-04 | 南方电网科学研究院有限责任公司 | 一种数据加密方法和装置 |
CN112751663B (zh) * | 2020-12-31 | 2022-12-23 | 南方电网科学研究院有限责任公司 | 一种数据加密方法和装置 |
CN115118527A (zh) * | 2022-08-26 | 2022-09-27 | 深圳市成为信息股份有限公司 | 超高频模组与pda的双向认证方法及相关设备 |
CN115118527B (zh) * | 2022-08-26 | 2022-11-25 | 深圳市成为信息股份有限公司 | 超高频模组与pda的双向认证方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
US20180176011A1 (en) | 2018-06-21 |
CN108206735B (zh) | 2023-04-14 |
EP3337082B1 (en) | 2020-04-15 |
TWI744388B (zh) | 2021-11-01 |
SG10201710088QA (en) | 2018-07-30 |
TW201826162A (zh) | 2018-07-16 |
US10742405B2 (en) | 2020-08-11 |
KR102447709B1 (ko) | 2022-09-26 |
EP3337082A1 (en) | 2018-06-20 |
KR20180070459A (ko) | 2018-06-26 |
JP2018109750A (ja) | 2018-07-12 |
JP7107670B2 (ja) | 2022-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108206735A (zh) | 通过比特混合器生成密码轮密钥的方法和系统 | |
US10313128B2 (en) | Address-dependent key generator by XOR tree | |
Hu et al. | Cryptanalysis of a chaotic image cipher using Latin square-based confusion and diffusion | |
Abdo et al. | A cryptosystem based on elementary cellular automata | |
WO2018046008A1 (zh) | 一种区块链加密射频芯片存储设计方法 | |
US10146701B2 (en) | Address-dependent key generation with a substitution-permutation network | |
US9325494B2 (en) | Method for generating a bit vector | |
CN102138300A (zh) | 消息认证码预计算在安全存储器中的应用 | |
CN101739889A (zh) | 密码处理装置 | |
Azar et al. | {COMA}: Communication and Obfuscation Management Architecture | |
US9602281B2 (en) | Parallelizable cipher construction | |
EP3499788A1 (en) | Dynamic masking | |
WO2020168629A1 (zh) | 基于位置换和位变换的加密解密方法和装置 | |
AU2301401A (en) | Method for making data processing resistant to extraction of data by analysis of unintended side-channel signals | |
US7003109B2 (en) | Compact crypto-engine for random number and stream cipher generation | |
Kumari et al. | Lightweight image encryption algorithm using NLFSR and CBC mode | |
US9946662B2 (en) | Double-mix Feistel network for key generation or encryption | |
Chhabra et al. | Towards the enhancement of AES IP security using hardware obfuscation technique: A practical approach for secure data transmission in IoT | |
Jhawar et al. | Modeling, hardware architecture, and performance analyses of an AEAD-based lightweight cipher | |
Wang et al. | A hybrid encryption transmission scheme for industrial control systems | |
Kotangale et al. | An Analytical Survey of Image Encryption Techniques Used in Various Application Domains | |
Swayamprakash et al. | Design of Advanced Encryption Standard using Verilog HDL | |
Hafsa et al. | A lightweight and robust block cipher algorithm for real-time applications | |
CHEN et al. | A cryptography system and its parameterized VLSI generator for real-time multimedia | |
Sharma et al. | Analysis and Implementation of DES Using FPGA |
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 |