CN114258660A - 用于密码置换的密码架构 - Google Patents

用于密码置换的密码架构 Download PDF

Info

Publication number
CN114258660A
CN114258660A CN202080058341.8A CN202080058341A CN114258660A CN 114258660 A CN114258660 A CN 114258660A CN 202080058341 A CN202080058341 A CN 202080058341A CN 114258660 A CN114258660 A CN 114258660A
Authority
CN
China
Prior art keywords
cryptographic
permutation
register
processing unit
architecture
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.)
Pending
Application number
CN202080058341.8A
Other languages
English (en)
Inventor
马尔库-尤哈尼·奥拉维·萨里宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pq Shield Co ltd
Original Assignee
Pq Shield Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Pq Shield Co ltd filed Critical Pq Shield Co ltd
Publication of CN114258660A publication Critical patent/CN114258660A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/768Data position reversal, e.g. bit reversal, byte swapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Power Engineering (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明描述了密码方法和系统。某些示例涉及执行涉及密码置换的密码操作。所述方法和系统可以用于提供密码函数,诸如散列、加密、解密和随机数生成。在一个示例中,提供了一种密码架构。所述密码架构具有处理器接口,所述处理器接口包括一组密码寄存器,其中所述处理器接口可被至少一个处理单元访问。所述密码架构还具有密码置换单元,所述密码置换单元包括用于使用存储在该组密码寄存器组内的数据执行密码置换的电路。在示例中,所述至少一个处理单元指示所述密码置换并使用所述处理器接口来访问所述密码置换的结果。

Description

用于密码置换的密码架构
技术领域
本发明涉及一种密码架构和执行密码操作的方法。具体地,本发明涉及关于密码置换的密码操作。本文描述的某些示例可以在计算装置内使用以执行密码操作。
背景技术
最近,连接到计算机网络的装置数量激增。例如,互联网连接正在从诸如台式计算机和膝上型计算机等计算装置扩展到诸如机动车辆、灯泡、冰箱、医疗装置、恒温器和监控系统等日常物品内的嵌入式系统。电信链路允许许多低成本计算装置报告传感器数据,和/或在世界各地加以控制。这些连接装置面临的一个问题是它们通常容易受到攻击和恶意控制。例如,成百上千的嵌入式装置可能会受到恶意方的攻击并用于执行分布式拒绝服务攻击。在许多情况下,由于密码协议的实施不佳或受限,易于获得对这些装置的控制。随着这些连接装置的数量和流行度不断增长,如何保证它们的安全成为悬而未决的问题。
保证连接计算装置的安全的另一个考虑因素是未来有可能使用量子计算进行攻击。多年来,量子计算机主要是理论性的。然而,对量子计算机的研究实施正在迅速发展。目前已有50和72个量子位的量子计算机可用,并且有许多研究小组正在积极研究更高量子位的机器。考虑到量子计算的可能未来现实,最近的工作表明,许多公知的公钥密码系统都可以被足够强大的量子计算机破解。
在实施密码函数时,尤其是那些“后量子”安全的密码函数时,所面临的挑战是这些函数中的许多函数都是资源密集型的。例如,许多密码函数涉及使用具有长位长度的值的复杂数学函数。这些通常会消耗大量处理器周期,并且难以在低资源嵌入式装置中实施。另外,随着数据和通信两者的端到端加密变得普遍,必须高速重复执行这些密码函数。要安全就是要慢
US 9,772,845 B2描述了一种用于处理KECCAK安全散列算法的设备。在US 9,772,845 B2的设备中,指令解码器接收用于处理表示KECCAK散列算法的KECCAK状态的数据的KECCAK状态立方体的指令。所述指令指示将KECCAK状态立方体分区为多个子立方体,并将子立方体分别存储在多个寄存器中。与指令解码器耦合的执行单元对分别存储在多个寄存器中的多个子立方体以向量方式执行KECCAK散列算法。US 9,772,845 B2的设备是诸如复杂指令集计算(CISC)或精简指令集计算(RISC)处理器等处理器。在US 9,772,845 B2中描述的方法由处理器实施。所述方法可以用每轮KECCAK算法的八个指令来实施,其中每一轮都在总数据的切片(子立方体)上执行。
期望提供密码操作的有效实施。例如,期望提供可以在低资源嵌入式系统内和/或在高速数据处理操作中使用同时在后量子环境中提供抵抗攻击的能力的实施。
发明内容
在所附独立权利要求中陈述本发明的各方面。然后在所附从属权利要求中陈述本发明的某些变化。
附图说明
现在只通过示例的方式参考附图来描述本发明的示例,在附图中:
图1是示出根据示例的密码架构的示意图;
图2是示出根据示例的处理器接口的寄存器的示意图;
图3是示出根据示例的用于处理器接口的第一组密码寄存器的示意图;
图4是示出根据示例的用于处理器接口的第二组密码寄存器的示意图;
图5是示出根据示例的密码置换单元的示意图;
图6是示出根据示例的用于处理器接口的一组控制寄存器的示意图;
图7是示出根据示例的执行密码操作的方法的流程图;以及
图8A和图8B是分别示出根据示例的由密码架构和处理单元执行的第一操作序列和第二操作序列的流程图。
具体实施方式
本文描述的某些示例提供了一种密码架构,所述密码架构允许处理单元有效地执行密码置换。密码架构提供处理器接口,所述处理器接口使得处理单元能够有效地与密码置换单元通信以执行密码置换。因而,处理单元可以有效地将对置换的计算卸载到专用模块,然后经由处理器接口访问置换的结果。密码架构可以提供原子低级操作,所述原子低级操作允许快速计算许多高级密码函数,包括那些“后量子”安全的函数。密码架构可以代表处理器或微处理器执行快速密码基本函数,因而为低功率嵌入式装置和高吞吐量服务器装置两者提供益处。
图1示出了密码架构110的示例100。在图1中,密码架构110包括处理器接口120,所述处理器接口使得密码架构110能够与处理单元130通信。处理单元130以点划线轮廓示出,因为它可能不形成密码架构110的一部分。密码架构110还包括密码置换单元140。密码置换单元140包括用于执行密码置换的电路。如图1所示,在使用中,处理单元130指示密码置换并使用处理器接口120访问密码置换的结果。
在一个示例中,处理器接口120包括一组密码寄存器。处理单元130可访问密码寄存器,例如,某些密码寄存器可以由处理单元130读取和/或写入。在使用中,处理单元130可以经由该组密码寄存器(即,使用存储在该组密码寄存器内的数据)访问如由密码置换单元140执行的密码置换的结果。该组密码寄存器可以用于在密码置换单元140与处理单元130之间交换数据和控制信息。密码寄存器可以被访问一个或多个经存储器映射的寄存器,并且作为处理单元130的命名的单指令多数据(SIMD)或向量寄存器组的一部分。
在某些示例中,处理单元130包括具有一个或多个处理内核的微处理器,例如,处理单元130可以是用于嵌入式装置的处理单元。在其他示例中,处理单元可以包括具有一个或多个处理内核的计算装置的中央处理单元,例如,处理单元130可以是用于移动计算装置、台式计算机和/或服务器计算装置的处理单元。
密码架构110可以通过多种不同方式来实施(并且方法的组合是可能的)。在一种情况下,可以使用一个或多个专用集成电路(ASIC)来实施密码架构110。在另一种情况下,可以使用一个或多个现场可编程门阵列(FPGA)来实施密码架构110。在又一种情况下,可以使用用于处理单元130的固件来实施密码架构110。在某些情况下,可以使用ASIC、FPGA和固件指令中的两者或更多者的组合来实施密码架构110的不同部件。在一种情况下,可以经由微代码和固件更新中的一者或多者来提供密码架构110的功能性。在这种情况下,可能需要对代码进行认证以确保安全性。密码置换单元140可以通过类似方式来实施。
在一个示例中,密码架构110和密码置换单元140中的一者或多者可以被提供(例如,封装)为离散单元。例如,离散单元可以是独立的安全微控制器(例如,被提供作为智能卡、通用串行总线-USB-装置和/或射频识别–RFID–装置)、密码协处理器或加速器、密码可信平台模块(TPM)或硬件安全模块(HSM)。离散单元可以经由一个或多个通信总线或接口耦合到处理单元130和/或共同位于电路板上。因此,密码架构110可以被提供作为单个芯片,所述芯片易于添加到用于多种计算装置的计算板。
图2示出了处理器接口120,其中密码寄存器包括第一组数据寄存器210和第二组控制寄存器220。密码置换单元140能够读取数据和/或将数据写入两组寄存器210、220。同样地,处理单元130也通信地耦合到密码寄存器并且能够读取数据和/或将数据写入第一组210和第二组220内的寄存器。第一组寄存器210和第二组寄存器220因此在处理单元130与密码置换单元140之间提供接口。
在一种情况下,处理器接口120的密码寄存器可以是映射到处理单元130的地址空间的存储器。这可以直接实现,例如经由处理单元130的总线和/或经由存储器管理单元(MMU)实现。如果需要,可以通过不同方式访问不同的密码寄存器。如果给定的密码寄存器是经存储器映射的,则处理单元130对存储器中的特定地址的读取或写入可以被映射为对给定密码寄存器(或所述寄存器的一部分)的读取或写入。在精简指令集计算(RISC)指令集架构(ISA)中,诸如在RISC-V中,处理器接口120的密码寄存器可以被实施为一个或多个控制和状态寄存器(CSR)和/或一个或多个向量扩展,例如在后一种情况下,密码寄存器可以被视为一个或多个向量寄存器。
在某些示例中,处理器接口120可以使用诸如处理器中断、直接存储器访问(DMA)和ISA扩展等一种或多种辅助处理器接口机制来实施。例如,处理器接口120可以使得密码置换单元140能够调用处理单元130上的中断和/或对与处理单元130相关联的总线(例如,处理单元130的总线或处理单元130所耦合的总线)执行DMA操作。替代地或另外,通过处理器接口120执行的控制交互可以被实施为指令集架构扩展。
在某些示例中,用于执行特定密码置换操作的命令可以被编码为单个机器代码指令,例如,由处理单元130执行的单个指令用于执行密码置换。例如,单个机器代码指令可以通过处理器接口120激活密码置换单元140,所述密码置换单元执行置换并将结果通过处理器接口120返回到处理单元130。在一种情况下,密码置换单元140可以在第二组控制寄存器220内设置控制标志,处理单元130可以检查所述控制标志以确定密码置换何时完成,此时密码置换的结果可以由处理单元130从第一组数据寄存器210读取。在一种情况下,密码置换单元140可以经由处理器接口120触发由处理单元130接收的中断以指示密码置换已完成。在接收到中断时,处理单元130可以再次从第一组数据寄存器210访问密码置换的结果。使用ISA扩展来实施处理器接口120的控制交互可以提供一种允许密码置换被编码为处理单元130的单个机器代码指令的方式。
在某些示例中,密码置换单元140对存储在密码寄存器中的至少一者(例如,第一组数据寄存器210中的一者)内的数据执行密码置换。在一种情况下,密码置换单元140根据存储在第二组控制寄存器220内的控制数据执行密码置换。密码置换可以涉及对密码状态执行的一个或多个操作。该密码状态可以包括位的集合,例如,256、512或1600个二进制值的序列。密码置换可以用于更新密码状态。密码状态的更新然后可以为诸如散列、加密和解密函数以及数字生成器等各种密码函数提供框架。在其中对大小为b的一组位(例如,300、512或1600位)执行密码置换的情况下,处理器接口120可以包括长度为b位的多个密码寄存器。在某些情况下,数据可能以长度为w(例如,其中w<b)的字加载进出密码寄存器,其中w可以对应于处理单元130的字长。
在一种情况下,密码置换单元140实施密码置换,所述密码置换在数据块上提供“类随机函数”。可以对密码置换执行多“轮”,其中每一轮或一组轮也构成密码置换。密码置换可以是无密钥置换,例如,可以不涉及密码密钥。例如,密码置换可能不同于分组密码(block cipher),因为它不受显式机密加密密钥的控制(尽管置换状态的一部分可以被指定为机密“容量”)。而且,与分组密码不同,很少需要计算置换的逆。每一轮可能与其他轮类似。在某些情况下,可以经由使用轮常数和/或域分隔符参数来区分轮。轮常数可以是值在多轮中变化的多个位。使用不同的轮常数可以有助于通过密码方式“分离”轮。域分隔参数还可以包括多个位并且可以通过与轮常数类似的方式使用以分离不同的使用域(例如,加密对解密或散列对随机数生成)。轮常数可以与分隔参数一起使用或独立于其使用。在英国专利申请1903674.8中描述了示例性密码置换的更多细节,该申请通过引用并入本文。
密码置换单元140可以被配置为执行许多不同的密码置换。例如,可以针对特定用例对一组FPGA进行编程,和/或密码置换可以在可更新固件中定义。作为一个示例,密码置换单元140可以被配置为执行KECCAK-p置换,例如,如联邦信息处理标准(FIPS)202(或安全散列算法3-“SHA-3”-标准)-国家标准技术局(NIST)在2015年8月发表在FIPS PUB 202的“SHA-3Standard:Permutation-Based Hash and Extendable-Output Functions(SHA-3标准:基于置换的散列和可扩展输出函数)”中所述,其通过引用并入本文。如FIPS 202标准的第3节所述,每一轮密码置换可以包括五个单独(置换)步骤的组合:theta:θ(A)、rho:ρ(A)、pi:π(A)、chi:χ(A)和iotaι(A,ir)。最后的步骤采用轮常数参数ir。因此,该标准中的复合轮函数可以被定义为:
Rnd(A,ir)=ι(χ(π(ρ(θ(A)))),ir)
在该示例中,密码置换单元140可以被配置为执行该复合轮函数-Rnd,例如执行一轮或执行多轮。当置换输入A的大小为1600位时,这些轮函数(具有特定轮常数ir)中的24个轮函数的组成构成KECCAK-p[1600,24]。然后这提供了如在FIPS 202标准中描述的SHA-3/SHAKE散列函数的基本构建块。它还为许多其他派生原语提供了基本构建块。除了KECCAK-p之外,密码置换的其他示例包括由Christoph Dobraunig、Maria Eichlseder、FlorianMendel和Martin
Figure BDA0003509314970000071
于2019年3月发表在Proposal to NIST LWCstandardizationeffort中的“Ascon v1.2”中描述的ASCON的320位置换以及由Markku-Juhani O.Saarinen于2019年3月发表在Proposal to NIST LWC standardization effort中的“SNEIKEN和SNEIKHA:轻量级密码算法的SNEIK系列”中描述的512位SNEIK置换,这两种置换通过引用并入本文。
图3示出了可以形成处理器接口120的一部分的一组密码寄存器300的一个示例。在该示例中,该组密码寄存器300形成图2所示的第一组数据寄存器210的一部分,但是在其他情况下可以形成单组共同的数据和控制寄存器的一部分。在图3中,该组密码寄存器300包括用于存储置换状态(S)的置换状态寄存器310;用于存储置换输入数据(X)的置换输入寄存器320;以及用于存储输出数据(O)的置换输出寄存器330。这些寄存器的长度可以都是b位(或者能够存储b位)。在该示例中,置换输入寄存器320可由处理单元130写入,而置换输出寄存器330可由处理单元130读取。处理单元130因此可以指示将用于密码置换的数据加载到置换输入寄存器320中并且还指示从置换输出寄存器330加载由密码置换产生的数据。
在图3中,密码置换单元140能够从置换状态寄存器310读取数据和向置换状态寄存器写入数据。例如,密码置换单元140可以在密码置换之前从置换状态寄存器310读取(例如,具有b位的)当前置换状态值,然后将更新后的置换状态值(例如,在状态的密码置换之后)写回到置换状态寄存器310。在其他情况下,输入状态值和输出状态值可以从不同的寄存器读取和写入不同的寄存器。置换状态寄存器310可能对处理单元130不可见(例如,不可读或不可写)。如果置换状态寄存器310不可见,则这可以提高安全性(因为状态不能由处理单元130直接操纵)并且以简化密码置换的应用的方式(例如,处理单元130的制造商不需要知道如何对状态执行置换)封装功能性。
在图3中,密码置换单元140能够从置换输入寄存器320读取数据。从置换输入寄存器320读取的数据可以与从置换状态寄存器310读取的置换状态组合。在一种情况下,来自置换输入寄存器320的数据可以使用XOR运算与从置换状态寄存器310读取的置换状态组合。密码置换单元140可以对组合的结果执行密码置换。在图3中,密码置换单元140能够将数据写入置换输出寄存器330。该数据可以包括密码置换的输出,例如,如上所述执行的。
图4示出了一组密码寄存器400的另一示例。图4的示例扩展了图3的示例,例如,可以在需要更多功能性的情况下提供。该组密码寄存器400包括置换状态寄存器310、置换输入寄存器320和置换输出寄存器330(分别为S、X和O)。这些可以通过类似于图3的示例的方式操作。
在图4中,该组密码寄存器400还包括用于存储输入掩码(M)的掩码输入寄存器410和用于存储组合置换状态寄存器310中的数据和置换输入寄存器320中的数据的结果(Y)的组合输出寄存器420。在一种情况下,组合输出寄存器420包括XOR输出寄存器,例如其中组合是XOR运算。在图4中,掩码输入寄存器410可由处理单元130写入,而组合输出寄存器420可由处理单元130读取。密码置换单元140能够从掩码输入寄存器410读取数据并使用该数据来例如作为密码置换的一部分或在密码置换之前执行掩蔽运算。密码置换单元140还能够将组合的输出写入组合输出寄存器420;处理单元130然后可以从组合输出寄存器420读取组合的输出,例如,处理单元130可以在更高级别的密码操作中使用组合的输出以及置换输出寄存器330。
在一个示例中,例如具有如图3或图4中的一者或多者中陈述的部件的密码架构110进一步包括用于应用输入XOR运算的电路。例如,该电路可以从置换输入寄存器320接收从置换输入数据导出的数据并从置换状态寄存器310接收从置换状态导出的数据,并且将输入XOR运算应用于该数据。
在一种情况下,所述电路可以将输入XOR运算应用于置换输入数据和置换状态,并且可以将输入XOR运算的结果写入组合输出寄存器420。在另一种情况下,所述电路可以将输入XOR运算应用于置换输入数据和修改版本的置换状态;在这种情况下,用于应用输入XOR运算的电路可以通信地耦合到密码置换单元140或形成密码置换单元的一部分。在后一种情况下,所述电路可以将输入XOR运算的结果提供给密码置换单元140,使得可以对该结果执行密码置换。在某些示例中,可以使用两组电路来提供每个用例。
在一个示例中,例如具有如图3或图4中的一者或多者中陈述的部件的密码架构110进一步包括置换掩蔽电路以将掩蔽运算应用于例如如从置换状态寄存器310读取的置换状态。这可以是用于应用XOR运算的上述电路的一种实施方式。置换掩蔽电路可以通信地耦合到掩码输入寄存器410和置换状态寄存器310。掩蔽运算可以将来自掩码输入寄存器410的掩码应用于置换状态。在一种情况下,可以使用AND运算来应用掩码。
图5示出了上述电路的示例性实施方式500。在图5的示例中,所述电路被实施为密码置换单元140的一部分;在其他示例中,所述电路可以在密码置换单元140之外实施,例如,在数据寄存器210与密码置换单元140之间实施。类似的功能性和连接适用于这两种情况。图5示出了作为输入通信地耦合到密码置换单元140的置换状态寄存器310-A、置换输入寄存器320和掩码输入寄存器410。在该示例中,密码置换单元140还向置换状态寄存器310-B、置换输出寄存器330和组合输出寄存器420输出数据。置换状态寄存器用虚线示为部件310-B,因为它可以是与310-A相同的部件,然而,通过单独地表示这些部件,更容易理解密码置换单元140的操作。例如,在一种情况下,密码置换单元140可以输出可以写入置换状态寄存器的更新后的置换状态,从而作为输入有效地覆盖被访问的先前置换状态。在其他情况下,不同的寄存器或共同寄存器的不同部分可以替代地用于存储输入置换状态和输出置换状态。
密码置换单元140包括第一XOR电路510、AND电路520、第二XOR电路530和置换电路540。第一XOR电路510可以实施电路的一种情况以应用如上所述的输入XOR运算;AND电路520可以实施如上所述的置换掩蔽电路;并且第二XOR电路530可以实施如上所述的输入应用电路(或所述电路的其他情况以应用输入XOR运算)。在图5中,黑色圆圈示出了通信耦合;没有黑色圆圈的连接交叉未通信地耦合。在图5中,第一XOR电路510通信地耦合到置换状态寄存器310-A和置换输入寄存器320。第一XOR电路510应用逻辑XOR运算并将输出提供给组合输出寄存器420。AND电路520将逻辑AND运算应用于从掩码输入寄存器410读取的数据(即,掩码)和从置换状态寄存器310-A读取的数据(即,置换状态)。AND电路520通信地耦合到第二XOR电路530。第二XOR电路530将逻辑XOR运算应用于从置换输入寄存器320读取的数据(例如,XOR输入)和AND电路520的输出(例如,修改的或掩蔽的置换状态)。第二XOR电路530通信地耦合到置换电路540。置换电路540被配置为将密码置换应用于第二XOR电路530的输出并将密码置换的结果提供给置换状态寄存器310-B和置换输出寄存器330。处理单元130可以从置换输出寄存器330读取密码置换的结果。最初存储在置换状态寄存器310-A中的置换状态可能被结果覆盖(例如,置换状态寄存器310-B可以是在不同时间点存储不同值S’的相同寄存器)。在一种情况下,可以将密码置换的结果复制到置换状态寄存器310-A和置换输出寄存器330中的每一者。
图5的示例性实施方式500执行可以使用向量符号描述的多个操作。例如,在密码置换开始时置换状态寄存器310内的数据可以被称为向量S-起始状态。在密码置换之后置换状态寄存器310内的数据可以被称为向量S′-更新后的状态。所述状态可以具有如上所述的b位。置换输入寄存器320内的数据可以被称为向量X,而掩码输入寄存器410内的数据可以被称为向量M。逻辑AND和XOR运算可以对具有b位的向量(例如,宽度等于置换状态的整个宽度的向量)进行操作。这可以允许进行快速计算,因为不需要将状态分解成子向量来执行密码置换。如果每个寄存器的大小(例如,可用存储器)大于b(例如,被选择为涵盖一大类密码操作的值),则b位的子集(例如,前或后b位)可能在任何一个特定的操作中被访问。每个具有b位的向量可以是位序列,每个位的值为0或1。
考虑到上述符号,图5中的密码置换单元140的操作可以被概括为:
Y=S XOR X
O=S’=Perm((S ANDM)XOR X)
因此,在更新操作中,S=S′。换句话说,置换状态S首先与输入X进行XOR运算,然后将输出写入Y。在该示例中,置换状态S也被M掩蔽,并且结果也与输入X进行XOR运算并进行密码置换Perm()。将所得新置换状态S′写入置换输出O。对于下一操作,将置换状态S设置为S=S′。
在某些示例中,置换状态可以在内部被划分为多个部分。这些部分可以包括预定义数量的位。在一种情况下,置换状态被划分为称为“容量”的一组“机密”c位和称为“速率”的一组“共同”r位,其中b=r+c。在密码操作期间,处理单元130可以仅访问“速率”位(例如,与其交互)。例如,可以仅读取“速率”位和/或仅将其写入以保持容量位不变。b、r和c的值可能会影响加密和解密操作期间的掩码选择,并且可以根据实施规范进行配置。“容量”位可以与方案安全性相关联,而“速率”位可与处理速度相关联。例如,使c更大可以提高方案的安全性,而使r更小可以提高处理的速度。
处理单元130可以通过多种不同的方式使用密码架构110。在一种情况下,处理单元130可以使用密码架构110来执行以下一个或多个密码操作:“吸收”密码操作,其用于将输入数据与置换状态混合;“挤压”密码操作,其用于使用置换状态来获得输出;“加密”密码操作,其用于使用置换状态来对输入数据进行加密;以及“解密”密码操作,其用于使用置换状态来对输入数据进行解密。“吸收”和“挤压”操作可以用于例如密码散列。例如,“加密”和“解密”操作可以用于构建认证后的加密和解密模式。下文陈述这些密码操作以及它们可以如何使用密码架构110的示例。
在“吸收”操作中,将输入数据与置换状态混合。输入数据可以包括来自置换输入寄存器320的数据。吸收操作可以用于对置换状态进行初始化或直接操作置换。吸收操作可以遵循上文参考图5描述的密码置换单元140的操作:
S’=Perm((S AND M)XOR X)
S=S’
在该示例性操作中,置换状态S首先被掩码输入M(例如,掩码输入寄存器410的内容)掩蔽。然后在结果与置换输入X(例如,置换输入寄存器320的内容)之间执行XOR运算。这形成了密码置换的输入。将输出写回置换状态寄存器310。在一种情况下,Perm()函数可以包括作为原子操作执行的KECCAK-p Rnd操作。在这种情况下,KECCAK-p Rnd操作的多次迭代可以作为密码置换的一部分来执行,其中置换由密码置换单元140作为离散单操作来执行。
在一种操作情况下,可以将掩码输入M设置为零,即,M=0b(“b”个零位的向量),这在操作中产生:
S’=Perm(X)
这可以用于对系统进行初始化或设置机密密钥以及进行其他功能。在另一种操作情况下,可以将掩码输入M设置为1,即,M=1b(“b”个1位的向量),这在“海绵”吸收操作中产生:
S’=Perm(SXOR X)
通过配置掩码输入M的位,可以执行不同的覆盖组合。这也可以用于构建安全散列。
在“挤压”操作中,可以从置换状态中提取输出。例如,如果输入置换状态是S并且输出置换状态是S′,则:
O=S’=Perm(S)
S=S’
在“挤压”操作中,将置换状态S直接进行密码置换并且将结果写回置换状态寄存器310,所述置换状态寄存器现在具有新值S′。也可以将输出写入O,处理单元130可以从中读取所述输出。在散列运算中,包括r个“速率”位的输出O的一部分可以由处理单元130用作散列运算输出。也可以看出“挤压”操作如何等效于“吸收”,其中M=1b并且X=0b
“加密”操作可以被认为是“吸收”,其中X表示由处理单元130写入置换输入寄存器320的要加密的数据(即,明文数据),并且在所述操作之后将输出状态O复制到置换输出寄存器330,其中处理单元130从置换输出寄存器330中读取“密文”:
O=S’=Perm((S AND M)XOR X)
S=S’
在该操作中,可以将M设置为M=1b,X具有明文的作用,而O表示密文。同样,处理单元130可以仅读取和/或使用X和O的部分,例如,r个“速率”位。c“容量”可以被处理单元130忽略。
“解密”操作可以被认为是“加密”操作的逆。在这种情况下,X(例如,置换输入寄存器320的内容)可以被认为是密文并且Y形成解密后的明文(例如,从组合输出寄存器420读取)。在这种情况下:
Y=S XOR X
O=S’=Perm((S AND M)XOR X)
S=S’
例如,如果将r个“速率”位视为置换状态S的左侧部分,将c个“容量”位视为置换状态S的右侧部分,则可以将M设置为M=1r0c。在这种情况下,使用置换状态S覆盖密文X,因为X的左侧r位被假定为零。处理单元130可以通过取Y的右侧r位来读取对应的明文。
在本文描述的示例中,密码寄存器可以以w位字布置,其中w的大小由处理单元130的架构确定。例如,对于具有32位数据路径的系统,w可以是32,或者对于具有64位数据路径的系统,w=64。如果密码置换的输入和输出是b位(例如,对于KECCAK-p和SHA-3,b=1600),则处理单元130可以将寄存器作为一组n=b/w字来访问。例如,(例如复制到置换输出寄存器330的)置换状态S’在32位系统上可以作为50字来访问。然而,密码架构110被配置为使得密码置换单元140可以在单个循环内访问完整寄存器的内容。这种布置可以大幅加快数据处理速度。例如,数据寄存器210(包括图3和图4中所示的那些寄存器)的大小可以各自为b位(或者能够存储b位)。
图6示出了一组密码寄存器600的另一示例。在该示例中,示出了一组控制寄存器220。可以提供这些寄存器以及图3或图4中的一者中所示的数据寄存器210。图6示出了具有七个控制寄存器220的示例;取决于要求,不同的示例和实施方式可以使用不同数量的控制寄存器或者将单个寄存器划分为多个部分。在图6中,控制寄存器220包括:标识符(ID)寄存器610;起始(GO)寄存器620;就绪(RDY)寄存器630;一组轮寄存器640、650、660;以及中断(IRQ)控制寄存器670。
标识符寄存器610可由处理单元130写入,并存储要执行的密码操作的标识符。例如,标识符寄存器610可以存储如上所述的一个或多个域分隔符参数。标识符的值可以用于根据特定的密码操作(例如,通过确保写入标识符寄存器610的不同值产生例如从置换输出寄存器330读取的不同输出)来配置密码置换。
起始寄存器620可由处理单元130写入并存储用于密码操作的起始(或重启)标志。例如,起始寄存器620可以存储具有值0和1的二进制标志,其中值1指示密码置换单元140将开始密码操作(例如,通过执行如上所述的密码置换)。起始寄存器620可以默认为0并且可以由处理单元130写入(例如,设置为1)以指示密码架构110(和/或密码置换单元140)代表处理单元130执行密码操作。
就绪寄存器630可由处理单元130读取并存储就绪标志,所述就绪标志指示密码架构110(和/或密码置换单元140)准备开始另一密码操作和/或密码置换的结果准备好由处理单元130读取。与起始标志一样,所述就绪标志可以是二进制标志,其中0指示密码架构110未准备好(例如,正在使用中或繁忙)并且其中1指示密码架构110已准备好开始密码操作。就绪寄存器630可以用于具有多个处理单元(例如,多核处理器或微处理器)的计算装置中,其中所述多个处理单元中的每一者可以访问密码架构110,例如其中它们各自通信地耦合到处理器接口120。这可能是其中处理器接口120耦合到也耦合多个处理单元的系统总线的情况。在其中就绪寄存器630用于指示密码操作的结果已准备好从数据寄存器210读取的情况下,值1可以向处理单元130指示密码置换的结果可获自置换输出寄存器330,而0值可以指示操作仍在进行中。
该组轮寄存器640、650、660可由处理单元130写入并存储与密码置换轮相关的一个或多个标志。在图6中,存在三个轮寄存器:开始(BEG)轮寄存器640、结束(END)轮寄存器650和轮数据(RND)寄存器660。开始轮寄存器640和结束轮寄存器650可由处理单元130写入以分别存储起始轮(要处理的第一轮)和结束轮(要处理的最后一轮)。起始轮和结束轮可以用整数值指示。处理单元130可以或不可以对轮数据寄存器660进行写入或访问。在其中轮数据寄存器660存储轮计数以跟踪当前轮(例如,作为整数值)的情况下,处理单元130不可以对轮数据寄存器660进行访问。在另一种情况下,轮数据寄存器660可以存储指示要执行的轮数轮常数。取决于要求,不同的实施方式是可能的。
中断控制寄存器670可由处理单元130写入并存储指示中断是被启用还是被禁用的标志。例如,中断控制寄存器670可以存储二进制标志,其中0指示中断被禁用,而1指示中断被启用。在该示例中,中断是指用于处理单元130的中断处理单元130正在执行的一系列指令的中断。如果中断被启用,则它们可以用于指示密码操作(包括密码置换)已完成和/或密码架构110准备好处理输入(例如,如果所述密码架构已被另一处理单元使用)。处理单元130可以基于当前装置配置和/或针对特定的密码操作而设置是否使用中断。如果没有使用中断(例如,标志被设置为0),则处理单元130可以替代地轮询就绪寄存器630以确定事件是否已经发生。
图6中的该组示例性密码寄存器600因此使得处理单元(或多个处理单元)能够控制密码架构110和密码置换单元140的操作。将统一且共同的处理器接口120用于控制和数据可以帮助简化密码架构110的集成。它还能够实现与更大计算装置的单一耦合,例如,密码架构110可以易于添加到更大型的计算装置的母板或控制板。尽管该组密码寄存器600在图6中被示为单独的寄存器,但是这些寄存器的一些或全部内容可以替代地被分组为一个或多个控制寄存器中的字段(例如,上述二进制标志可以包括8位寄存器的不同位)。
图7、图8A和图8B示出了控制密码架构的某些方法,诸如图1至图6中所示的方法。可以控制密码架构以执行密码操作,例如,至少一个处理单元可以经由处理器接口控制密码架构。在某些情况下,可以通过促进输入准备并允许输出卸载与置换计算同时发生的方式使用密码架构。
图7示出了根据示例的执行密码操作的方法700。方法700可以由诸如图1的密码架构110等密码架构来执行。在一种情况下,方法700可以由密码架构内的密码置换单元(诸如图1至图6中所示的密码置换单元140)来执行。
所述方法开始于框710,其包括从处理单元接收用于执行密码操作的指令。这可以包括经由图1的处理器接口120从处理单元130接收信号。在一种情况下,密码置换单元140可以监测图6中的起始寄存器620,并且框710可以包括从起始寄存器620加载值并确定所述值是否指示正的开始信号(例如,值1)。
在框720处,从一组密码寄存器中的一者加载置换状态。这可以包括密码置换单元140从置换状态寄存器310加载数据,如图3至图5中所示。处理单元不可以对置换状态进行访问。
在框730处,对从置换状态导出的数据执行密码置换。所述数据可以包括置换状态本身,或者如图5中所示,在执行密码置换之前,可以对置换状态应用多个逻辑运算。框730可以由图1至图6的密码置换单元140使用存储在处理器接口120的密码寄存器中的数据来执行。框730可以包括从处理器接口120内的多个数据寄存器210读取数据,诸如图5中所示。
在框740处,方法700包括将密码置换的输出存储在该组密码寄存器中的一者中。例如,这可以包括将密码置换的输出复制到置换输出寄存器330。它还可以包括将相同的输出存储在置换状态寄存器310中。密码置换单元140可以对数据寄存器210执行读取/写入操作。
在框750处,方法700包括向处理单元指示置换完成。处理单元然后能够例如经由图1的处理器接口120访问来自该组密码寄存器的密码置换的输出。在一种情况下,框750可以包括密码置换单元140向处理单元发送中断(例如,如果中断更多被启用)。替代地或另外,框750可以包括将标志值(例如,值1)写入就绪寄存器630。处理单元可以从该组密码寄存器(例如,从置换输出寄存器420)读取密码置换的结果。
在一种情况下,所述方法可以包括经由该组控制寄存器中的一者指示密码置换单元已准备好开始处理。例如,这可以由如图6中所示的就绪寄存器630指示。在示例中,处理单元和密码置换单元140的操作可以基于该组控制寄存器中的一者的中断和状态中的一者或多者来同步,例如,过程流的开始可以基于这些中的一者或多者来同步。
在一种情况下,所述方法可以包括由密码置换单元从诸如轮数据寄存器660等轮控制寄存器加载轮计数。轮计数可以在密码置换中使用,例如用作轮常数输入。在密码置换之后,轮控制寄存器中的轮计数可以递增。加载、使用和递增操作可以基于轮控制寄存器与结束控制寄存器(诸如图6中的结束轮寄存器650)的比较而进行重复。
在一种情况下,所述方法可以包括从诸如置换输入寄存器320等置换输入寄存器加载置换输入。然后可以从诸如掩码输入寄存器410等掩码输入寄存器加载掩码输入数据。在这种情况下,在框730处执行密码置换可以包括通过根据置换输入数据和对掩码输入数据和置换状态执行的AND运算的结果执行XOR运算来由密码置换单元更新置换寄存器中的置换状态。在这种情况下,框640可以包括将更新后的置换状态加载到置换状态寄存器(例如,图3和图4中的置换状态寄存器310)中。例如,这可以包括由如图5中所示的布置执行的操作。
图8A和图8B示出了诸如图1的密码架构110(例如,由密码置换单元140实施)等密码模块的两个示例性操作模式800。图8A和图8B的左侧805示出了由诸如图1至图6的密码置换单元140等密码模块执行的操作。图8A和图8B的右侧810示出了可以在对诸如图1的处理单元130等处理单元执行控制程序时执行的对应操作。图8A和图8B的两侧示出了密码模块和处理单元的操作可以如何同步。
当在框815处设置就绪(RDY)标志以指示密码模块准备好执行密码操作时,左侧操作805开始。这可以经由中断和/或经由密码模块将就绪寄存器(诸如就绪寄存器630)设置成具有特定值(例如,1)来执行。在某些情况下,将就绪标志设置为1还可以触发处理单元中断,从而向处理单元通知密码模块已就绪。在其他情况下,处理单元可以周期性地读取就绪寄存器以寻找特定值(例如,1)或值变化(例如,从0至1)。基于就绪标志值的同步经由箭头840示出,其中例如由处理器接口120提供的接口寄存器被示为845。在图8A中的框855处,处理单元基于就绪标志值(例如,指示就绪标志具有值1,其指示密码模块准备好进行处理)接收中断。图8A示出了启用中断的情况。图8B示出了其中未启用中断的替代情况;在图8B中,在框890处,处理单元(例如,通过周期性地轮询就绪寄存器)监测就绪标志的值并在该值被设置为1时开始操作。
一旦就绪标志被设置为1并且密码模块准备好在框815处执行处理,密码模块就进行到框820,其中密码模块等待起始标志被设置为指示将执行新的密码操作(例如,由设置为1的起始标志指示)。框820可以包括密码置换单元140监测存储在起始寄存器620中的值,如图6所示。
当密码模块正在等待起始信号时,处理单元在图8A中的框855(例如,指示就绪=1的中断)或图8B中的框890(例如,处理单元读取就绪寄存器630的值并确定其为1)中的一者之后,在框860处开始处理密码模块的旧输出。例如,当就绪标志被认为是1时,处理单元可以开始新的操作并读取置换输出和组合输出中的一者或多者的内容。该后一操作可以包括读取分别存储在置换输出寄存器330和组合输出寄存器420中的值。
在框860之后,处理单元在框865处执行检查以确定是否有更多数据要处理。如下文更详细地描述,对于新的密码操作,在框860处读取的值可以被忽略并且将有更多数据要处理。如果处理单元正在跟进先前指示的密码操作,例如其中结果是现在已就绪,则可能没有进一步的数据要处理。如果有更多数据要处理,则所述方法进行到框870,其中处理单元准备新的输入值。这可以包括分别将用于置换输入(X)和/或掩码输入(M)的新值写入置换输入寄存器320和掩码输入寄存器410。一旦写入新值,就将起始标志设置为1以发起新的密码置换。同样,例如作为一个写入循环的一部分,可以同时执行将新值和值1写入起始寄存器620。处理器接口120的设计促进这种操作。
如果处理单元例如最初在框870处设置了起始标志,则密码模块从框820进行到框825。这可以与处理单元程序流内的框860、865和870中的一者或多者并行执行。在框825处,密码模块执行初始化操作。这可以包括原子操作,例如,多个不同的事件可以作为密码模块的至少一个时钟循环上的单个操作同时发生。框825可以包括以下一个或多个操作:将起始标志设置为0(以指示处理已经开始);将就绪标志设置为0(以指示密码模块此时无法处理进一步的密码请求);将置换输出(O)设置为当前置换状态(S);对置换输入(X)和置换状态(S)执行XOR运算以设置组合输出(Y)的值;将置换状态(S)加载作为S=((S AND M)XOR X);以及将轮计数标志设置为轮开始标志。因此,框825可以包括将值0存储在起始寄存器620和就绪寄存器630中;将置换状态寄存器310的内容复制到置换输出寄存器330;将第一XOR电路510的输出存储在组合输出寄存器420中;将置换状态的值作为第二XOR电路530的输出加载到临时存储器中;以及将开始轮寄存器640的值复制到轮数据寄存器660中。密码架构的这些部件被配置为使得框825的操作可以并行执行。这使得它们能够作为原子操作执行并大幅提高密码操作的速度。
在框825处初始化之后,密码模块在框830处对密码置换执行迭代(即,轮)。这可以包括在框825处使用加载到(临时存储器)中的初始化的置换状态(S)的值来激活置换电路540。置换电路540还可以访问利用轮数据寄存器660存储的轮计数或常数(例如,S=Round(S,RND),正如上面讨论KECCAK-p实施时所引用的)。在某些情况下,置换电路540还可以访问存储在标识符寄存器610中的域分隔参数。初始化的置换状态(S)、轮计数或常数以及域分隔参数可以作为输入提供给置换轮(例如,S=Round(S,RND,ID))。作为框830的一部分,轮计数的值可以在轮数据寄存器660内递增(例如,RND=RND+1)。
在框835处,在左侧处理流805中,进行检查以确定轮计数是否小于结束轮值(例如,RND<END?)。这可以包括将轮数据寄存器660和结束轮寄存器650中的整数值进行比较。如果轮计数小于结束轮值,则可以重复框830。如果轮计数不小于结束轮值(例如,现在等于在框830处的最后一次递增之后的结束轮值),则密码置换完成。所述方法进行到框815,其中就绪标志被设置为1,其指示置换的结果已就绪,并且密码模块已准备好执行进一步的密码操作。所述方法然后再次进行到框820,其中密码模块等待处理单元将起始标志设置为1。
在图8A中,在框870处对输入进行处理之后,处理单元的过程流在框875处结束。处理单元因此可以在等待指示密码操作的结果已就绪的中断到达的同时执行不同的(例如,不相关的)指令。通过这种方式,可以高效地利用处理单元。当密码模块例如经由密码置换单元140将1存储在就绪寄存器630中执行框815时,则其指示密码操作的结果已就绪,并且处理单元在框855处开始另一过程流。处理单元因此在框860处对输出进行处理,其可以涉及读取存储在置换输出寄存器330和组合输出寄存器420中的值。组合输出寄存器420中的结果可能已经由框825的先前执行设置并且置换输出寄存器330中的结果可以被存储作为框830处的迭代的一部分(例如,O=S’=Perm((SAND M)XOR X))。一旦处理单元在框860处读取了输出,就在框865处执行检查。如果密码操作已完成(例如,置换输出寄存器330中的结果就是所需要的结果),则处理单元在框875处结束其处理。如果有附加的密码操作要执行,则再次执行框870并重复所述过程。在一种情况下,可以将新值写入置换输入寄存器320和掩码输入寄存器410,同时在框830处仍执行先前的迭代。
图8B示出了未启用或未配置中断时的类似过程。在这种情况下,在框870之后,处理单元返回到框890并等待就绪标志的状态改变以指示密码操作的结果已就绪。处理单元不仅需要执行框890,而且可以作为监测或轮询过程的一部分间歇性地执行该框。
本文描述的某些示例提供了一种密码架构和操作这种架构的方法,它们高效地将密码置换单元与诸如微处理器等处理单元对接。本文描述的某些示例提供了可以适合在低资源微控制器和嵌入式装置上实施并适合实施高速安全数据处理的密码方法。所描述的密码架构与所使用的处理单元的类型无关,并且处理器接口允许不同的处理单元耦合到密码置换单元,其中不同的控制程序的选项可通过一组共同的控制寄存器获得。密码架构可以使用存储器映射和/或其他方法来实施,因此为不同类型的处理单元提供简单或透明的数据访问。所描述的方法可以经由经存储器映射的寄存器或向量寄存器和指令提供无密钥密码置换与处理器内核的紧密耦合,其中处理器接口提供缓冲器架构以减少功耗和空闲循环。
本文描述的某些示例可以被实施为ISA扩展,例如扩展到各种各样的处理单元。所述示例可以直接和/或间接支持抗量子对称和非对称密码学的安全实施。本文描述的处理器接口可以经由处理单元的总线架构或经由其他输入/输出机制来控制。某些示例可以被配置为提供恒定时间和发射受保护的二进制算法。
本文描述的某些示例可以用于实现使用密码置换作为“构建块”高级算法的高级算法的高效硬件和/或软件实施。可以从这种高效的软件-硬件协同设计中受益的算法示例包括:密码散列函数和消息摘要(例如,先前讨论的SHA3和SHAKE标准、形成先前描述的SNEIK方法的一部分的SNEIKHA,以及来自先前描述的ASCON方法的Ascon散列);SHA3派生函数,诸如消息认证码(MAC)(例如,如由John Kelsey、Shu-Jen Chang和Ray Perlner于2016年12月在国家标准技术局(NIST)在NIST特别出版物800-185上发表的“SHA-3DerivedFunctions:cSHAKE,KMAC,TupleHash and ParallelHash(SHA-3派生函数:cSHAKE、KMAC、TupleHash和ParallelHash)”中所述,其通过引用并入本文);基于密码置换的相关联数据的认证加密(AEAD)(例如,SNEIKEN和Ascon-AEAD,如先前的参考文献SNEIK和ASCON方法以及由Guido Bertoni、Joan Daemen、Seth Hoffert、
Figure BDA0003509314970000221
Peeters、Gilles Van Assche和Ronny Van Keer于2016年9月在Keccak Team发表的“CAESAR submission:Keyak v2(CAESAR提交:Keyak v2)”中描述的KEYAK方法中描述的,其通过引用并入本文);基于密码置换的伪随机数生成(PRNG)和密钥派生函数(KDF)结构;基于密码原语的密码模式,诸如在Guido Bertoni、Joan Daemen、Seth Hoffert、
Figure BDA0003509314970000224
Peeters、Gilles Van Assche和Ronny Van Keer于2016年12月发表在IACR Cryptology ePrint Archive:Report 2016/1188上的“Farfalle:parallel permutation-based cryptography(Farfalle:基于并行置换的密码学)”以及Guido Bertoni、Joan Daemen、
Figure BDA0003509314970000223
Peeters、Gilles Van Assche、Ronny Van Keer和
Figure BDA0003509314970000225
Viguier于2018年在施普林格出版社发表的Proc.ACNS 2018,LNCS 10892,第400页至第418页“KangarooTwelve:fast hashing based on Keccak-p(KangarooTwelve:基于Keccak-p的快速散列)”中描述的那些密码模式,这两者均以引用方式并入本文;传统的公钥密码算法,诸如Rivest–Shamir–Adleman(RSA)和椭圆曲线数字签名算法(ECDSA),它们使用基于置换的原语作为构建块(例如,如FIPS标准186-4中所述);以及使用密码置换作为构建块的许多后量子公钥密码算法(例如,BIKE、“ClassicMcEliece”、Dilithium、Falcon、FrodoKEM、GeMMS、Kyber、Luov、MQDSS、NewHope、NTRU、NTS-KEM、Picnic、qTESLA、Round5、Saber、Sphincs+和ThreeBears,如NIST信息技术实验室于2019年3月出版的“Post-Quantum Cryptography:Round 2Submissions(后量子密码学:第2轮提交)”中所述,其也以引用方式并入本文。
尽管某些示例是指访问某个寄存器内的数据并从这种寄存器读取和/或写入数据,但是可以理解,实际上可以在某些实施方式中使用中间数据存储装置和/或数据结构,并且对“……中的数据”的引用也可以适用于“从……中导出的数据”,例如除了从所描述的那些过程之外还从一个或多个中间过程产生的数据。对XOR和AND的引用是指分别执行逻辑“异或”运算和逻辑“与”运算的逻辑运算。还可以理解,对耦合到某些部件的电路的引用可以替代地被实施为所述部件内的功能性,例如是否经由执行的固件代码和/或专用硬件电路实施。如本文所述的“电路”可以在硬件中例如使用FPGA的数字逻辑门或可编程门实施,和/或被实施为从存储器加载并由诸如微处理器等处理器执行的计算机程序代码。本文描述的某些系统部件和方法可以通过可存储在诸如只读可更新固件存储器等非暂时性存储介质上的计算机程序代码(诸如固件或指令集)来实施。
上述示例应被理解为说明性的。设想了进一步的示例。例如,本文讨论的特定值是基于测试示例并且可以取决于实施方式(例如,取决于微控制器规范和类型、安全要求和其他因素)而改变。尽管已经单独描述了每个示例的某些部件,但是应当理解,参考一个示例描述的功能性可以适合在另一示例中实施,并且可以取决于实施方式省略某些部件。应当理解,关于任一示例描述的任何特征都可以单独使用,或者与所描述的其他特征结合使用,并且还可以与任何其他示例的一个或多个特征结合使用,或者与任何其他示例的任何组合结合使用。例如,关于系统部件描述的特征也可以适于作为所描述的方法的一部分来执行。此外,在不脱离在所附权利要求中限定的本发明的范围的情况下,还可以采用上面未描述的等效物和修改。

Claims (20)

1.一种密码架构,其包括:
处理器接口,所述处理器接口包括一组密码寄存器,所述处理器接口可由至少一个处理单元访问;以及
密码置换单元,所述密码置换单元包括用于使用存储在该组密码寄存器内的数据执行密码置换的电路,
其中所述至少一个处理单元指示所述密码置换并使用所述处理器接口访问所述密码置换的结果。
2.根据任一权利要求1所述的密码架构,其中所述密码架构被配置为基于由所述至少一个处理单元执行的单个机器代码指令来执行密码置换。
3.根据权利要求2所述的密码架构,其中所述单个机器代码指令被实施为指令集架构(ISA)扩展。
4.根据权利要求1至3中任一项所述的密码架构,其中所述处理器接口包括被配置为存储至少b位的多个寄存器,其中b是置换输入的位的大小。
5.根据权利要求1至4中任一项所述的密码架构,其中所述密码置换单元被配置为执行KECCAK-p置换。
6.根据权利要求1至5中任一项所述的密码架构,其中所述密码置换单元被配置为执行包括多轮的无密钥置换。
7.根据权利要求1至6中任一项所述的密码架构,其中所述至少一个处理单元能够使用所述密码架构来执行以下各者中的一者或多者:
吸收密码操作,其用于将输入数据与置换状态混合;
挤压密码操作,其用于使用所述置换状态来获得输出;
加密密码操作,其用于使用所述置换状态对输入数据进行加密;以及
解密密码操作,其用于使用所述置换状态对输入数据进行解密。
8.根据权利要求1至6中任一项所述的密码架构,其中该组寄存器包括:
用于存储置换状态的置换状态寄存器;
用于存储置换输入数据的置换输入寄存器,所述置换输入寄存器可由所述至少一个处理单元写入;以及
用于存储输出数据的置换输出寄存器,所述置换输出寄存器可由所述至少一个处理单元读取。
9.根据权利要求8所述的密码架构,其包括:
用于应用输入XOR运算的电路,所述输入XOR运算应用于从所述置换输入寄存器中的所述置换输入数据导出的数据和从所述置换状态寄存器中的所述置换状态导出的数据,
其中用于应用输入XOR运算的所述电路通信地耦合以将数据提供给所述密码置换单元以用于所述密码置换的执行。
10.根据权利要求9所述的密码架构,其包括:
XOR输出寄存器,所述XOR输出寄存器用于存储所述电路的输出以应用输入XOR运算。
11.根据权利要求8至10中任一项所述的密码架构,其中该组寄存器进一步包括:
用于存储输入掩码的掩码输入寄存器,所述掩码输入寄存器可由所述至少一个处理单元写入;
置换掩码电路,所述置换掩码电路通信地耦合到所述掩码输入寄存器和所述置换状态寄存器,以将AND运算应用于从所述输入掩码导出的数据和从所述置换数据导出的数据;
输入应用电路,所述输入应用电路通信地耦合到所述置换掩蔽电路和所述置换输入寄存器,以将XOR运算应用于从所述置换掩码电路导出的数据和从所述置换输入数据导出的数据,所述输入应用电路被配置为将输出数据提供给所述密码置换单元。
12.根据权利要求8至11中任一项所述的密码架构,其中在密码置换之后,将所述密码置换单元的输出复制到所述置换状态寄存器。
13.根据权利要求1至12中任一项所述的密码架构,其中该组密码寄存器包括所述至少一个处理单元可访问的一个或多个控制寄存器。
14.根据权利要求13所述的密码架构,其中所述一个或多个控制寄存器包括以下各者中的一者或多者:
标识符寄存器,所述至少一个处理单元可对所述标识符寄存器进行写入以存储要执行的密码操作的标识符;
起始寄存器,所述至少一个处理单元可对所述起始寄存器进行写入以存储所述密码操作的起始标志;
就绪寄存器,所述至少一个处理单元可对所述就绪寄存器进行读取以存储就绪标志,所述就绪标志指示所述密码架构已准备好开始另一密码操作;
一个或多个轮寄存器,所述至少一个处理单元可对所述一个或多个轮寄存器进行写入以存储与密码置换的轮相关的一个或多个标志;以及
中断控制寄存器,所述至少一个处理单元对所述中断控制寄存器进行写入以控制对所述至少一个处理单元的中断。
15.根据权利要求1至11中任一项所述的密码架构,其中所述密码架构可由所述至少一个处理单元使用以对SHA-3函数执行密码置换。
16.一种执行密码操作的方法,其包括:
在密码置换单元处从处理单元接收用于执行所述密码操作的指令;
由所述密码置换单元从一组密码寄存器中的一者加载置换状态;
使用所述密码置换单元对从所述置换状态导出的数据执行密码置换;
由所述密码置换单元将所述密码置换的输出存储在该组密码寄存器中的一者中;以及
由所述密码置换单元向所述处理单元指示所述置换已完成,其中所述处理单元从该组密码寄存器访问所述密码置换的所述输出。
17.根据权利要求16所述的方法,其包括:
经由一组控制寄存器中的一者指示所述密码置换单元已准备好开始处理,
其中所述处理单元和所述密码置换单元的所述操作基于该组控制寄存器中的一者的中断和状态中的一者或多者而同步。
18.根据权利要求16或17所述的方法,其包括:
由所述处理单元从该组密码寄存器读取所述密码置换的所述输出。
19.根据权利要求16至18中任一项所述的方法,其包括:
由所述密码置换单元从轮控制寄存器加载轮计数;
由所述密码置换单元在所述密码置换中使用所述轮计数;以及
将所述轮控制寄存器中的所述轮计数递增,
其中所述加载、使用和递增操作基于所述轮控制寄存器与结束控制寄存器的比较而进行重复。
20.根据权利要求16至19中任一项所述的方法,其中执行所述密码置换包括:
由所述密码置换单元从置换输入寄存器加载置换输入数据;
由所述密码置换单元从掩码输入寄存器加载掩码输入数据;
其中执行所述密码置换单元包括通过根据所述置换输入数据和对所述掩码输入数据和所述置换状态执行的AND运算的结果执行XOR运算来由所述密码置换单元更新所述置换寄存器中的所述置换状态,
其中将所述密码置换的所述输出存储在该组密码寄存器中的一者中包括将所述更新后的置换状态加载到所述置换状态寄存器中。
CN202080058341.8A 2019-03-18 2020-07-15 用于密码置换的密码架构 Pending CN114258660A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB1903674.8A GB2582900A (en) 2019-03-18 2019-03-18 Cryptography using a cryptographic state
GB1910372.0 2019-07-19
GB1910372.0A GB2585885A (en) 2019-03-18 2019-07-19 Cryptographic architecture for cryptographic permutation
PCT/GB2020/051699 WO2021014125A1 (en) 2019-03-18 2020-07-15 Cryptographic architecture for cryptographic permutation

Publications (1)

Publication Number Publication Date
CN114258660A true CN114258660A (zh) 2022-03-29

Family

ID=66381181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080058341.8A Pending CN114258660A (zh) 2019-03-18 2020-07-15 用于密码置换的密码架构

Country Status (7)

Country Link
US (2) US11822901B2 (zh)
EP (1) EP4000214A1 (zh)
JP (1) JP2022541057A (zh)
KR (1) KR20220028132A (zh)
CN (1) CN114258660A (zh)
GB (5) GB2582900A (zh)
WO (2) WO2020188269A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112217643B (zh) * 2019-07-09 2021-12-10 华为技术有限公司 运算方法、装置及设备
FR3118218B1 (fr) * 2020-12-21 2024-02-16 St Microelectronics Rousset Procédé pour valider un module logiciel externe en vue de son utilisation par un système sur une puce
US11985226B2 (en) * 2020-12-23 2024-05-14 Intel Corporation Efficient quantum-attack resistant functional-safe building block for key encapsulation and digital signature
WO2022146436A1 (en) * 2020-12-30 2022-07-07 Pqsecure Technologies, Llc A low footprint hardware architecture for kyber-kem
US20210297243A1 (en) * 2021-06-08 2021-09-23 Intel Corporation Permutation cipher encryption for processor-accelerator memory mapped input/output communication
US11522678B2 (en) 2021-06-08 2022-12-06 Intel Corporation Block cipher encryption for processor-accelerator memory mapped input/output communication
US20220416998A1 (en) * 2021-06-23 2022-12-29 Intel Corporation Side channel protection for sha3 cryptographic functions
CN113472525B (zh) * 2021-06-24 2022-07-26 南京航空航天大学 基于后量子密码Saber算法的低内存占用密钥生成方法和加解密方法及其系统
GB2608999A (en) 2021-07-15 2023-01-25 Pqshield Ltd Cryptographic system for post-quantum cryptographic operations
US20220006645A1 (en) * 2021-09-21 2022-01-06 Intel Corporation Post-quantum secure lighteight integrity and replay protection for multi-die connections
WO2023091936A1 (en) * 2021-11-17 2023-05-25 D-Wave Systems Inc. Systems and methods for superconducting flux qubit readout
US11765604B2 (en) 2021-12-16 2023-09-19 T-Mobile Usa, Inc. Providing configuration updates to wireless telecommunication networks
WO2023119893A1 (ja) * 2021-12-23 2023-06-29 ソニーセミコンダクタソリューションズ株式会社 データ処理装置
KR20240018910A (ko) 2022-08-03 2024-02-14 경희대학교 산학협력단 양자 단대단 암호화 시스템 및 그 동작 방법
CN115118527B (zh) * 2022-08-26 2022-11-25 深圳市成为信息股份有限公司 超高频模组与pda的双向认证方法及相关设备

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3911330A (en) * 1974-08-27 1975-10-07 Nasa Nonlinear nonsingular feedback shift registers
US4589120A (en) * 1983-12-13 1986-05-13 Honeywell Inc. Unique start bit for data transmissions
JPH03251890A (ja) * 1990-03-01 1991-11-11 Kokusai Denshin Denwa Co Ltd <Kdd> 非線形フィードバック・シフトレジスタ装置
JP3012732B2 (ja) 1992-02-20 2000-02-28 富士通エフ・アイ・ピー株式会社 ブロック暗号処理装置
US5740249A (en) * 1996-04-09 1998-04-14 Kabushiki Kaisha Toshiba Encryption apparatus and method capable of controlling encryption process in accordance with an internal state
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
IL128007A (en) 1999-01-11 2003-02-12 Milsys Ltd Enhancements on compact logic devices and also for accelerating and securing computations in modular arithmetic especially for use in public key cryptographic co-processors designed for elliptic curve and rsa type computations
AU5297201A (en) * 2000-03-31 2001-10-15 General Dynamics Decision Systems, Inc. Scalable cryptographic engine
AU2002331784A1 (en) * 2001-08-31 2003-03-18 John W. Hamilton A non-algebraic cryptographic architecture
US8194855B2 (en) 2003-06-30 2012-06-05 Oracle America, Inc. Method and apparatus for implementing processor instructions for accelerating public-key cryptography
US8509427B2 (en) * 2005-08-01 2013-08-13 Eric Myron Smith Hybrid mode cryptographic method and system with message authentication
US20080019524A1 (en) * 2006-06-29 2008-01-24 Kim Moo S Apparatus and method for low power aes cryptographic circuit for embedded system
JP4960044B2 (ja) * 2006-09-01 2012-06-27 株式会社東芝 暗号処理回路及びicカード
US8538012B2 (en) 2007-03-14 2013-09-17 Intel Corporation Performing AES encryption or decryption in multiple modes with a single instruction
US20080298583A1 (en) * 2007-05-31 2008-12-04 Lucent Technologies Inc. System and method of quantum encryption
US8151031B2 (en) * 2007-10-31 2012-04-03 Texas Instruments Incorporated Local memories with permutation functionality for digital signal processors
US8205066B2 (en) 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8208633B2 (en) * 2008-11-24 2012-06-26 Pitney Bowes Inc. Method and system for securing communications in a metering device
KR101210607B1 (ko) * 2008-12-08 2012-12-11 한국전자통신연구원 해시 암호 장치 및 방법
US8280040B2 (en) * 2009-02-04 2012-10-02 Globalfoundries Inc. Processor instructions for improved AES encryption and decryption
KR101566408B1 (ko) 2009-03-13 2015-11-05 삼성전자주식회사 불 마스크와 산술 마스크의 변환 회로 및 변환 방법
US8515059B2 (en) * 2010-03-30 2013-08-20 Daniel W. Engels Cryptographic processor with dynamic update of encryption state
US9772845B2 (en) * 2011-12-13 2017-09-26 Intel Corporation Method and apparatus to process KECCAK secure hashing algorithm
US8572410B1 (en) * 2012-07-18 2013-10-29 Freescale Semiconductor, Inc. Virtualized protected storage
US9128698B2 (en) 2012-09-28 2015-09-08 Intel Corporation Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US8983068B2 (en) * 2013-03-06 2015-03-17 Infineon Technologies Ag Masked nonlinear feedback shift register
JP6113091B2 (ja) * 2013-03-07 2017-04-12 キヤノン株式会社 ハッシュ値生成装置
US10331451B2 (en) * 2013-06-26 2019-06-25 Intel Corporation Method and apparatus to process SHA-2 secure hashing algorithm
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US9274979B2 (en) * 2013-11-27 2016-03-01 Nvidia Corporation System, method, and computer program product for optimizing data encryption and decryption by implementing asymmetric AES-CBC channels
CN103812643A (zh) 2014-01-26 2014-05-21 厦门密安信息技术有限责任公司 基于arm的axi接口的sha3 ip核设计
US9515818B2 (en) * 2014-09-16 2016-12-06 Apple Inc. Multi-block cryptographic operation
US10313129B2 (en) * 2015-06-26 2019-06-04 Intel Corporation Keyed-hash message authentication code processors, methods, systems, and instructions
US10511581B2 (en) * 2015-11-17 2019-12-17 International Business Machines Corporation Parallelizable encryption using keyless random permutations and authentication using same
US20180212761A1 (en) 2017-01-23 2018-07-26 Cryptography Research, Inc. Hardware circuit to perform round computations of arx-based stream ciphers
KR102033351B1 (ko) 2017-08-22 2019-10-17 국민대학교산학협력단 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
GB201802582D0 (en) * 2018-02-16 2018-04-04 Nordic Semiconductor Asa Protecting cryptographic key data

Also Published As

Publication number Publication date
JP2022541057A (ja) 2022-09-21
US20220138349A1 (en) 2022-05-05
US20220066741A1 (en) 2022-03-03
GB201910372D0 (en) 2019-09-04
GB201903674D0 (en) 2019-05-01
KR20220028132A (ko) 2022-03-08
WO2021014125A1 (en) 2021-01-28
GB2596763B (en) 2023-02-15
WO2020188269A1 (en) 2020-09-24
GB202202103D0 (en) 2022-04-06
GB202114869D0 (en) 2021-12-01
GB2596763A (en) 2022-01-05
GB201911804D0 (en) 2019-10-02
GB2601928B (en) 2023-10-04
EP4000214A1 (en) 2022-05-25
US11822901B2 (en) 2023-11-21
GB2601928A (en) 2022-06-15
GB2585885A (en) 2021-01-27
GB2582900A (en) 2020-10-14

Similar Documents

Publication Publication Date Title
CN114258660A (zh) 用于密码置换的密码架构
CN108206735B (zh) 通过比特混合器生成密码轮密钥的方法和系统
US6789147B1 (en) Interface for a security coprocessor
US8503670B2 (en) Parallelizable integrity-aware encryption technique
KR100899469B1 (ko) 혼성 암호화 가속기 및 이 가속기의 동작 방법
KR101143041B1 (ko) 리볼빙 버퍼들을 이용한 스트림 암호 설계 방법
US8036379B2 (en) Cryptographic processing
US7240203B2 (en) Method and apparatus for establishing secure sessions
KR20110129932A (ko) 암호 시스템을 위한 키 복구 메커니즘
US11429751B2 (en) Method and apparatus for encrypting and decrypting data on an integrated circuit
GB2532836A (en) Address-dependent key generation with substitution-permutation network
CN113452527A (zh) 用于有状态的基于散列的签名的鲁棒状态同步
CN113839770A (zh) 用于tls分组加密和解密的高吞吐量后量子aes-gcm引擎
Hori et al. Bitstream protection in dynamic partial reconfiguration systems using authenticated encryption
Sepúlveda Secure Cryptography Integration: NoC-Based Microarchitectural Attacks and Countermeasures
US20240160752A1 (en) Apparatus for Cryptographic Operations on Information and Associated Methods
US20240163077A1 (en) Apparatus for Cryptographic Operations on Information and Associated Methods
Vollala et al. Cryptographic Techniques
EP4371023A1 (en) Cryptographic system for post-quantum cryptographic operations
CN112487448A (zh) 一种加密信息处理装置、方法及计算机设备
Pornin Transparent harddisk encryption
Dettbarn Using cryptography as copyright protection for embedded devices
Chaves et al. Polymorphic aes encryption implementation
Hu et al. Memory Integrity Protection

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