KR20220028132A - 암호화 순열을 위한 암호화 아키텍처 - Google Patents

암호화 순열을 위한 암호화 아키텍처 Download PDF

Info

Publication number
KR20220028132A
KR20220028132A KR1020227004305A KR20227004305A KR20220028132A KR 20220028132 A KR20220028132 A KR 20220028132A KR 1020227004305 A KR1020227004305 A KR 1020227004305A KR 20227004305 A KR20227004305 A KR 20227004305A KR 20220028132 A KR20220028132 A KR 20220028132A
Authority
KR
South Korea
Prior art keywords
permutation
cryptographic
register
processing unit
input
Prior art date
Application number
KR1020227004305A
Other languages
English (en)
Inventor
마르쿠-주하니 올라비 사아리넨
Original Assignee
피큐쉴드 엘티디
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 피큐쉴드 엘티디 filed Critical 피큐쉴드 엘티디
Publication of KR20220028132A publication Critical patent/KR20220028132A/ko

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 큐비트를 갖는 양자 컴퓨터가 이용 가능하고, 더 높은 큐비트 기계에 대해 활발히 연구하는 연구그룹이 많이 있다. 양자 컴퓨팅의 가능한 미래 현실을 감안할 때, 최근 연구는 많은 널리 알려진 공개 키 암호화 시스템이 충분히 강력한 양자 컴퓨터에 의해 파괴될 수 있음을 보여주었다.
암호화 함수를 구현할 때, 특히 "포스트 양자(post quantum)" 보안, 많은 함수들이 자원(resource) 집약적이라는 문제가 있다. 예를 들어, 많은 암호화 함수는 긴 비트 길이를 가진 값을 이용한 복잡한 수학 함수를 수반한다. 이들은 일반적으로 많은 수의 프로세서 사이클을 소비하고 저-자원(low-resource) 임베디드 디바이스 내에서 구현된다는 어려움이 있다. 또한, 데이터와 통신의 종단 간(end-to-end) 암호화가 보편화됨에 따라, 암호화 함수도 고속으로 반복적으로 수행되어야 한다. 안전하다는 것은 느리다는 것이다.
US 9,772,845 B2는 KECCAK 보안 해싱 알고리즘을 처리하는 장치를 기재한다. US 9,772,845 B2의 장치에서, 명령어 디코더(decoder)는 KECCAK 해시 알고리즘의 KECCAK 상태를 나타내는 데이터의 KECCAK 상태 큐브를 처리하기위한 명령어를 수신한다. 명령어는 KECCAK 상태 큐브를 복수의 서브 큐브로 분할하고 서브 큐브를 복수의 레지스터에 각각 저장하도록 명령한다. 명령어 디코더에 결합된 실행 유닛은 복수의 레지스터에 각각 저장된 복수의 서브큐브에 대해 벡터 방식으로 KECCAK 해시 알고리즘을 수행한다. US 9,772,845 B2의 장치는 CISC(Complex Instruction Set Computing) 또는 RISC(Reduced Instruction Set Computing) 프로세서와 같은 프로세서이다. US 9,772,845 B2에 기재된 방법은 프로세서에 의해 구현된다. 이 방법은 KECCAK 알고리즘의 라운드당 8개의 명령어로 구현될 수 있으며, 각 라운드는 전체 데이터의 조각(서브큐브)에서 수행된다.
암호화 연산의 효율적인 구현을 제공하는 것이 바람직하다. 예를 들어, 저-자원 임베디드 시스템 내 및/또는 고속 데이터 프로세싱 연산에서 사용될 수 있는 구현을 제공하는 동시에 포스트 양자 환경에서의 공격에 대한 저항을 제공하는 것이 바람직하다.
본 발명의 양태는 첨부된 독립항에 기재되어 있다. 발명의 특정 변형은 첨부된 종속항에 기재되어 있다.
본 발명의 예는, 단지 예로서, 첨부된 도면을 참조하여 기재될 것이다.
도 1는 일 예에 따른 암호화 아키텍처를 도시하는 개략도이다.
도 2는 일 예에 따른 프로세서 인터페이스의 레지스터를 도시하는 개략도이다.
도 3는 일 예에 따른 프로세서 인터페이스에 대한 암호화 레지스터의 제1 세트를 도시하는 개략도이다.
도 4는 일 예에 따른 프로세서 인터페이스에 대한 암호화 레지스터의 제2 세트를 도시하는 개략도이다.
도 5는 일 예에 따른 암호화 순열 유닛을 도시하는 개략도이다.
도 6은 일 예에 따른 프로세서 인터페이스에 대한 제어 레지스터 세트를 도시하는 개략도이다.
도 7는 일 예에 따른 암호 연산을 수행하는 방법을 도시하는 흐름도이다.
도 8a 및 8b는 일 예에 따른 암호화 아키텍처 및 프로세싱 유닛에 의해 수행되는 제1 및 제2 연산 시퀀스를 각각 도시하는 흐름도이다.
본 명세서에 기재된 특정 예는 프로세싱 유닛이 암호화 순열을 효율적으로 수행할 수 있게 하는 암호화 아키텍처를 제공한다. 암호화 아키텍처는 프로세싱 유닛이 암호화 순열 유닛과 효과적으로 통신하여 암호화 순열을 수행할 수 있게 하는 프로세서 인터페이스를 제공한다. 이와 같이, 프로세싱 유닛은 순열의 계산을 전용 모듈로 효과적으로 오프로드(off-load)할 수 있고, 그후 프로세서 인터페이스를 통해 순열의 결과에 액세스할 수 있다. 암호화 아키텍처는 "포스트 양자" 보안을 포함한 많은 고급 암호화 함수를 신속하게 계산하게 하는 원자적 저-레벨 연산을 제공할 수 있다. 암호화 아키텍처는 프로세서 또는 마이크로프로세서를 대신하여 빠른 암호화 베이스 함수를 수행할 수 있고, 이에 따라 저-전력 임베디드 디바이스와 고-쓰루풋(high-throughput) 서버 디바이스 모두에 이점을 제공한다.
도 1은 암호화 아키텍처(110)의 예(100)를 도시한다. 도 1에서, 암호화 아키텍처(110)는 암호화 아키텍처(110)가 프로세싱 유닛(130)과 통신할 수 있게 하는 프로세서 인터페이스(120)를 포함한다. 프로세싱 유닛(130)은 암호화 아키텍처(110)의 일부를 형성하지 않을 수 있기 때문에 점선 윤곽으로 도시된다. 암호화 아키텍처(110)는 또한 암호화 순열 유닛(140)을 포함한다. 암호화 순열 유닛(140)은 암호화 순열을 수행하는 회로부를 포함한다. 도 1에 도시된 바와 같이, 사용시에, 프로세싱 유닛(130)은 프로세서 인터페이스(120)를 이용하여 암호화 순열을 지시하고 암호화 순열의 결과에 액세스한다.
일 예에서, 프로세서 인터페이스(120)는 암호화 레지스터 세트를 포함한다. 암호화 레지스터는 프로세싱 유닛(130)에 액세스될 수 있는데, 예를 들어 특정 암호화 레지스터는 프로세싱 유닛(130)에 의해 판독 및/또는 기록될 수 있다. 사용시에, 프로세싱 유닛(130)은 암호화 레지스터 세트를 통해, 즉 암호화 레지스터 세트 내에 저장된 데이터를 이용하여, 암호화 순열 유닛(140)에 의해 수행된 암호화 순열의 결과에 액세스할 수 있다. 암호화 레지스터 세트는 암호화 순열 유닛(140)과 프로세싱 유닛(130) 사이에서 데이터 및 제어 정보를 교환하기 위해 사용될 수 있다. 암호화 레지스터는 하나 이상의 메모리 매핑 레지스터에 액세스될 수 있고 프로세싱 유닛(130)의 소위 SIMD(Single Instruction Multiple Data) 또는 벡터 레지스터 세트의 일부로서 액세스될 수 있다.
특정 예에서, 프로세싱 유닛(130)은 하나 이상의 프로세싱 코어를 갖는 마이크로프로세서를 포함하는데, 예를 들어 프로세싱 유닛(130)은 임베디드 디바이스에 대한 프로세싱 유닛일 수 있다. 다른 예에서, 프로세싱 유닛은 하나 이상의 프로세싱 코어를 갖는 컴퓨팅 디바이스의 중앙 프로세싱 유닛을 포함할 수도 있는데, 예를 들어 프로세싱 유닛(130)은 모바일 컴퓨팅 디바이스, 데스크탑 컴퓨터 및/또는 서버 컴퓨팅 디바이스에 대한 프로세싱 유닛일 수 있다.
암호화 아키텍처(110)는 다수의 다른 방식으로 구현될 수 있다 (그리고 접근 방식의 조합이 가능하다). 일 경우에, 암호화 아키텍처(110)는 하나 이상의 ASIC(Application Specific Integrated Circuits)를 이용하여 구현될 수 있다. 다른 예에서, 암호화 아키텍처(110)는 하나 이상의 FPGA(Field Programmable Gate Array)를 이용하여 구현될 수 있다. 또 다른 경우에, 암호화 아키텍처(110)는 프로세싱 유닛(130)의 펌웨어를 이용하여 구현될 수 있다. 특정 경우에, 암호화 아키텍처(110)의 상이한 컴포넌트(component)는 ASIC, FPGA 및 펌웨어 명령어 중 둘 이상의 조합을 이용하여 구현될 수 있다. 일 경우에, 암호화 아키텍처(110)의 기능은 마이크로코드 및 펌웨어 업데이트 중 하나 이상을 통해 제공될 수 있다. 이 경우, 보안을 위해 코드 인증이 필요할 수 있다. 암호화 순열 유닛(140)도 유사한 방식으로 구현될 수 있다.
일 예에서, 암호화 아키텍처(110) 및 암호화 순열 유닛(140) 중 하나 이상은 개별 유닛으로서 제공(예를 들어, 패키징)될 수 있다. 예를 들어, 개별 유닛은 독립형 보안 마이크로제어기(예를 들어, 스마트 카드, 범용 직렬 버스 - USB - 디바이스 및/또는 무선 주파수 식별 - RFID - 디바이스로 제공), 암호화 보조 프로세서 또는 가속기, 암호화 TPM(Trusted Platform Module) 또는 HSM(Hardware Security Module)일 수 있다. 개별 유닛은 하나 이상의 통신 버스 또는 인터페이스를 통해 프로세싱 유닛(130)에 결합될 수 있고 및/또는 회로 기판 상에 함께 위치할 수 있다. 이에, 암호화 아키텍처(110)는 다양한 컴퓨팅 디바이스의 컴퓨팅 보드에 쉽게 부착되는 단일 칩으로 제공될 수 있다.
도 2는 암호화 레지스터가 제1 세트의 데이터 레지스터(210) 및 제2 세트의 제어 레지스터(220)를 포함하는 프로세서 인터페이스(120)를 도시한다. 암호화 순열 유닛(140)은 레지스터(210, 220)의 양 세트에 데이터를 판독 및/또는 기록할 수 있다. 유사하게, 프로세싱 유닛(130) 또한 암호화 레지스터에 통신 가능하게 결합되고 제1 및 제2 세트(210, 220) 내의 레지스터에 데이터를 판독 및/또는 기록할 수 있다. 따라서, 레지스터의 제1 및 제2 세트(210, 220)는 프로세싱 유닛(130)과 암호화 순열 유닛(140) 사이의 인터페이스를 제공한다.
일 경우에, 프로세서 인터페이스(120)의 암호화 레지스터는 프로세싱 유닛(130)의 주소 공간에 매핑된 메모리일 수 있다. 이것은 직접적으로, 예를 들어 프로세싱 유닛(130)의 버스를 통해, 및/또는 MMU(Memory Management Unit)을 통해 획득할 수 있다. 원한다면 다른 방식으로 다른 암호화 레지스터에 액세스할 수 있다. 주어진 암호화 레지스터가 메모리 매핑된 경우, 프로세싱 유닛(130)에 의한 메모리의 특정 주소 판독 및 기록은 주어진 암호화 레지스터(또는 상기 레지스터의 일부)에 판독 또는 기록하도록 매핑될 수 있다. RISC-V와 같은 RISC(Reduced Instruction Set Computing) ISA(Instruction Set Architecture)에서, 프로세서 인터페이스(120)의 암호화 레지스터는 하나 이상의 CSR(Control and Status Registers) 및/또는 하나 이상의 벡터 익스텐션으로 구현될 수 있는데, 예를 들어 후자의 경우 암호화 레지스터는 하나 이상의 벡터 레지스터로 볼 수 있다.
특정 예에서, 프로세서 인터페이스(120)는 프로세서 인터럽트, DMA(Direct Memory Access), 및 ISA 익스텐션과 같은 보조 프로세서 인터페이스 메커니즘을 하나 이상 이용하여 구현될 수 있다. 예를 들어, 프로세서 인터페이스(120)는 암호화 순열 유닛(140)이 프로세싱 유닛(130)에 인터럽트를 호출하고 및/또는 프로세싱 유닛(130)과 연관된 버스(예를 들어, 프로세싱 유닛(130)의 버스 또는 프로세싱 유닛(130)이 결합된 버스)에 DMA 연산의 수행을 할 수 있게 한다. 대신, 또는 추가적으로, 프로세서 인터페이스(120)를 거쳐 수행된 제어 상호작용은 ISA 익스텐션으로서 구현될 수 있다.
특정 예에서, 특정 암호화 순열 연산을 수행하는 명령은 단일 기계 코드 명령어로서 인코딩될 수 있는데, 예를 들어 프로세싱 유닛(130)에 의해 실행된 단일 명령어는 암호화 순열을 수행하도록 작용한다. 예를 들어, 단일 기계 코드 명령어는 프로세서 인터페이스(120)를 거쳐 암호화 순열 유닛(140)을 활성화시키고, 이 순열 유닛은 순열을 수행하고 프로세서 인터페이스(120)를 거쳐 프로세싱 유닛(130)에 결과를 반환한다. 일 경우에, 암호화 순열 유닛(140)은 제2 세트의 제어 레지스터(220)내에 제어 플래그를 설정할 수 있으며, 이는 암호화 순열이 완료되는 시점을 결정하도록 프로세싱 유닛(130)에 의해 체크될 수 있고, 이 지점에서 암호화 순열의 결과는 제1 세트의 데이터 레지스터(210)로부터 프로세싱 유닛(130)에 의해 판독될 수 있다. 일 경우에, 암호화 순열 유닛(140)은, 프로세서 인터페이스(120)를 통해, 암호화 순열이 완료되었음을 나타내기 위해 프로세싱 유닛(130)에 의해 수신된 인터럽트를 트리거할 수 있다. 인터럽트를 수신하면, 프로세싱 유닛(130)은 제1 세트의 데이터 레지스터(210)로부터 암호화 순열의 결과에 다시 액세스할 수 있다. ISA 익스텐션을 이용한 프로세서 인터페이스(120)의 제어 상호작용을 구현하는 것은 암호화 순열이 프로세싱 유닛(130)에 대한 단일 기계 코드 명령어로서 인코딩 되도록 하는 한 방법을 제공할 수 있다.
특정 예에서, 암호화 순열 유닛(140)은 암호화 레지스터 중 적어도 하나, 예를 들어 제1세트의 데이터 레지스터(210) 중 하나, 내에 저장된 데이터에 암호화 순열을 수행한다. 일 경우에, 암호화 순열 유닛(140)은 제2 세트의 제어 레지스터 세트(220) 내에 저장된 제어 데이터에 따라 암호화 순열을 수행한다. 암호화 순열은 암호화 상태에 수행된 하나 이상의 연산을 수반할 수 있다. 이 암호화 상태는 비트 모음, 예를 들어 256, 512 또는 1600 이진 값의 시퀀스를 포함할 수 있다. 암호화 순열은 암호화 상태를 업데이트하는데 사용될 수 있다. 암호화 상태의 업데이트는 해시, 암호화 및 복호화 함수 및 숫자 발생기와 같은 다양한 암호화 함수에 대한 프레임워크를 제공할 수 있다. 암호화 순열이 b 크기(예를 들어, 300, 512 또는 1600)의 비트 세트에 수행되는 경우, 프로세서 인터페이스(120)는 길이가 b 비트인 복수의 암호화 레지스터를 포함할 수 있다. 특정 경우에, 데이터는 길이 w 의 단어(예를 들어, w < b)의 암호화 레지스터 안팎으로 로딩될 수 있으며, w는 프로세싱 유닛(130)의 단어 크기에 대응할 수 있다.
일 경우에, 암호화 순열 유닛(140)은 데이터 블록에 "랜덤 유사 함수"을 제공하는 암호화 순열을 구현한다. 암호화 순열은 복수의 "라운드"에 수행될 수 있으며, 각 라운드 또는 라운드 세트는 또한 암호화 순열을 구성한다. 암호화 순열은 키리스 순열일 수 있으며, 예를 들어 암호 키를 수반하지 않는다. 예를 들어, 암호화 순열은 명시적 비밀 암호화 키에 의해 제어되지 않는다는 점에서 블록 암호와 구별될 수 있다 (순열 상태의 일부가 비밀 "커패시티"로 지정될 수 있을 지라도). 또한 블록 암호와 달리 순열의 역 계산은 거의 필요 없다. 각 라운드는 다른 라운드와 유사할 수 있다. 특정 경우에, 라운드는 라운드 상수 및/또는 도메인 분리 파라미터의 이용을 통해 구별될 수 있다. 라운드 상수는 복수의 라운드에 걸쳐 값이 변하는 복수의 비트일 수 있다. 가변 라운드 상수의 사용은 암호화 방식으로 라운드를 "분리"하는 데 도움이 될 수 있다. 도메인 분리 파라미터는 또한 복수의 비트를 포함할 수 있고 다른 사용 도메인(예를 들어, 암호화 대 복호화 또는 해싱 대 난수 생성)을 분리하기 위해 라운드 상수와 유사한 방식으로 사용될 수 있다. 라운드 상수는 분리 파라미터와 함께 또는 별도로 사용될 수 있다. 암호화 순열 예시의 추가 세부사항은 본 명세서에 참조로 포함되는 영국 특허 출원 1903674.8에 기재되어 있다.
암호화 순열 유닛(140)은 많은 다른 암호화 순열을 수행하도록 구성될 수 있다. 예를 들어, FPGA 세트는 특정 사용 사례에 프로그래밍될 수 있고 및/또는 암호화 순열은 업데이트 가능한 펌웨어 내에서 정의될 수 있다. 일 예로서, 암호화 순열 유닛(140)은 KECCAK-p 순열을 수행하도록 구성될 수 있는데, 예를 들어 FIPS(Federal Information Processing Standards) 202 (또는 보안 해시 알고리즘 3 - "SHA-3" -표준) - "본 명세서에 참조로 포함되는 SHA-3 표준: 순열기반 해시 및 확장가능한 출력 함수”, FIPS PUB 202, NIST(National Institute of Standards and Technology), 2015년 8월 - 에 기재된 바와 같이. FIPS 202 표준의 섹션 3에 기재된 대로, 암호화 순열의 각 라운드는 5가지 개별(순열) 단계의 요소를 포함할 수 있다.
Figure pct00001
마지막 단계는 라운드 상수 파라미터 ir를 취한다. 따라서 이 표준의 합성 라운드 함수는 다음과 같이 정의될 수 있다:
Figure pct00002
이 예에서, 암호화 순열 유닛(140)은, 예를 들어 하나의 라운드 또는 복수의 라운드에 이 복합 라운드 함수 - Rnd를 수행하도록 구성될 수 있다. 순열 입력 A의 크기가 1600 비트일 때, 이러한 라운드 함수의 24개의 요소(특정 라운드 상수 ir 포함)는 KECCAK-p[1600, 24]를 구성한다. 그런 다음 FIPS 202 표준에 기재된 대로 SHA-3 / SHAKE 해시 함수의 기본 빌딩 블록(basic building block)을 제공한다. 이는 또한 다른 많은 파생 프리미티브(primitive)에 대한 기본 빌딩 블록을 제공한다. KECCAK-p 외에도 암호화 순열의 다른 예는 본 발명에 참조로 포함되는 ASCON의 320 비트 순열, described by Christoph Dobraunig, Maria Eichlseder, Florian Mendel and Martin Schlδffer, in "Ascon v1.2" Proposal to NIST LWC Standardization effort, March 2019 및 512-비트 SNEIK 순열, described by Markku-Juhani O. Saarinen in "SNEIKEN and SNEIKHA: The SNEIK Family of Lightweight Cryptographic Algorithms", Proposal to NIST LWC Standardization effort, March 2019을 포함한다.
도 3은 프로세서 인터페이스(120)의 일부를 형성하는 암호화 레지스터(300) 세트의 일 예를 도시한다. 이 예에서, 암호화 레지스터(300) 세트는 도 2에 도시된 제1세트의 데이터 레지스터(210)의 일부를 형성하지만, 다른 경우에는 데이터 및 제어 레지스터의 단일 공통 세트의 일부를 형성한다. 도 3에서, 암호화 레지스터(300) 세트는 순열 상태(S)를 저장하는 순열 상태 레지스터(310); 순열 입력 데이터(X)를 저장하는 순열 입력 레지스터(320); 및 출력 데이터(O)를 저장하는 순열 출력 레지스터(330)를 포함한다. 레지스터는 모두 길이가 b비트일 수 있다 (또는 b비트를 저장할 수 있음). 본 예에서, 순열 입력 레지스터(320)는 프로세싱 유닛(130)에 의해 기록 가능하고 순열 출력 레지스터(330)는 프로세싱 유닛(130)에 의해 판독 가능하다. 따라서 프로세싱 유닛(130)은 암호화 순열을 위한 데이터를 순열 입력 레지스터(320)에 로딩하도록 명령할 수 있고 또한 순열 출력 레지스터(330)의 암호화 순열 결과 데이터를 로딩하도록 명령할 수 있다.
도 3에서, 암호화 순열 유닛(140)은 순열 상태 레지스터(310)의 데이터를 판독하고 순열 상태 레지스터(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, XO)를 포함한다. 이들은 도 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)은 순열 상태 레지스터에 기록될 업데이트된 순열 상태를 출력할 수 있고, 이는 입력으로서 액세스되는 이전 순열 상태를 효과적으로 덮어쓰기(overwriting)할 수 있다. 다른 경우에, 다른 레지스터 또는 공통 레지스터의 다른 부분은 입력 및 출력 순열 상태를 저장하기 위해 대안적으로 사용될 수 있다.
암호화 순열 유닛(140)은 제1 XOR 회로부(510), AND 회로부(520), 제2 XOR 회로부(530) 및 순열 회로부(540)를 포함한다. 제1 XOR 회로부(510)는 위에서 기재된 바와 같이 입력 XOR 연산을 적용하는 회로부의 한 경우를 구현할 수 있고; AND 회로부(520)는 위에서 기재된 바와 같이 순열 마스킹 회로부를 구현할 수 있고; 및 제2 XOR 회로부(530)는 위에서 기재된 바와 같이 입력 어플리케이션 회로부(또는 입력 XOR 연산을 적용하는 회로부의 다른 경우)를 구현할 수 있다. 도 5에서, 검은색 원은 통신 결합을 예시하고; 검은색 원 없이 교차된 연결은 통신적으로 결합되지 않는다. 도 5에서, 제1 XOR 회로부(510)는 순열 상태 레지스터(310-A) 및 순열 입력 레지스터(320)에 통신 가능하게 결합된다. 제1 XOR 회로부(510)는 논리 XOR 연산을 적용하고 출력을 조합 출력 레지스터(420)에 제공한다. AND 회로부(520)는 마스크 입력 레지스터(410)의 판독된 데이터(즉, 마스크) 및 순열 상태 레지스터(310-A)의 판독된 데이터(즉, 순열 상태)에 논리 AND 연산을 적용한다. AND 회로부(520)는 제2 XOR 회로부(530)에 통신 가능하게 결합된다. 제2 XOR 회로부(530)는 순열 입력 레지스터(320)의 판독된 데이터(예를 들어, XOR 입력) 및 AND 회로부(520)의 출력(예를 들어, 수정되거나 마스킹된 순열 상태)에 논리 XOR 연산을 적용한다. 제2 XOR 회로부(530)는 순열 회로부(540)에 통신 가능하게 결합된다. 순열 회로부(540)는 암호화 순열을 제2 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 비트의 벡터(예를 들어, 순열 상태의 전체 폭과 동일한 폭을 가짐)에서 작동할 수 있다. 이는 상태가 암호화 순열 수행을 위해 서브벡터(sub-vector)로 분해될 필요가 없기 때문에 빠른 계산을 가능하게 할 수 있다. 각 레지스터의 크기(예를 들어, 사용 가능한 메모리)가 b 보다 크면(예를 들어, 암호화 연산의 대 패밀리 (large family)을 커버하는 값으로 선택됨), b 비트의 서브세트(예를 들어, 첫 번째 또는 마지막 b 비트)는 하나의 특정 연산에 액세스될 수 있다. 각 b 비트의 벡터는 각각 0 또는 값 1을 갖는 비트의 시퀀스일 수 있다.
위에서 기재된 표기법을 고려하여, 도 5의 암호화 순열 유닛(140)의 연산은 다음과 같이 요약될 수 있다:
Y = S XOR X
O = S’' = Perm((S AND M) XOR X)
따라서, 업데이트 연산에서 S = S’이다. 즉, 순열 상태 S는 먼저 입력 X와 XOR되고 출력은 Y에 기록된다. 이 예에서, 순열 상태 S 또한 M과 마스킹되고, 그 결과 또한 입력 X와 XOR되고 암호화 순열 Perm()의 대상이 된다. 그 결과 새로운 순열 상태 S’가 순열 출력 O에 기록된다. 다음 연산을 위해, 순열 상태 S S = S’로 설정된다.
특정 예에서, 순열 상태는 내부적으로 복수의 부분으로 분할될 수 있다. 이러한 부분들은 미리 정의된 비트 수를 포함할 수 있다. 일 경우에, 순열 상태는 "커패시티(capacity)"로 알려진 c-비트의 "비밀(secret)" 세트와 "레이트(rate)"로 알려진 r-비트의 "공개" 세트로 분할된다, 여기서 b = r + c. 암호화 연산 동안, 프로세싱 유닛(130)은 "레이트" 비트에만 액세스(예를 들어, 상호작용)할 수 있다. 예를 들어, "레이트" 비트만 판독 및/또는 기록되어 커패시티 비트를 건드리지 않은 상태로 둘 수 있다. b, rc의 값은 암호화 및 복호화 연산 중에 마스크 선택에 영향을 미칠 수 있으며, 사양의 구현에 따라 구성될 수 있다. "커패시티" 비트는 스킴(scheme) 보안과 연관될 수 있는 반면 "레이트" 비트는 프로세싱 속도와 연관될 수 있다. 예를 들어, c를 크게 만들면 스킴 보안이 향상될 수 있는 반면 r을 작게 만들면 프로세싱 속도가 빨라질 수 있다.
프로세싱 유닛(130)은 다수의 다른 방식으로 암호화 아키텍처(110)를 사용할 수 있다. 일 경우에, 프로세싱 유닛(130)은 암호화 아키텍처(110)를 이용하여 다음의 암호화 연산들 중 하나 이상을 수행할 수 있다: 입력 데이터를 순열 상태와 혼합하는 "흡수(absorb)" 암호 연산; 순열 상태를 이용하여 출력을 획득하는 "스퀴즈(squeeze)" 암호 연산; 순열 상태를 이용하여 입력 데이터를 암호화하는 "암호화" 암호 연산; 및 순열 상태를 이용하여 입력 데이터를 복호화하는 "복호화" 암호 연산을 포함한다. "흡수" 및 "스퀴즈" 연산은, 예를 들어, 암호화 해싱에 이용될 수 있다. "암호화" 및 "복호화" 연산은, 예를 들어, 인증된 암호화 및 복호화 모드의 설계에 이용될 수 있다. 이러한 암호화 연산의 예와 이들이 암호화 아키텍처(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은 0, 즉 M = 0 b ("b" 제로 비트의 벡터)로 설정될 수 있으며, 이는 다음 연산을 초래한다:
S’ = Perm (X)
이것은 다른 함수 중 시스템을 초기화하거나 비밀키를 설정하는 데 이용될 수 있다. 다른 연산의 경우, 마스크 입력 M은 1, 즉 M = 1 b ("b" 1비트의 벡터)로 설정될 수 있으며, 이는 "스펀지" 흡수 연산을 초래한다:
S’ = Perm(S XOR X)
마스크 입력 M의 비트를 구성함으로써, 다른 덮어쓰기 조합이 실행될 수 있다. 이것은 보안 해시를 설계하는 데에도 이용될 수 있다.
"스퀴즈" 연산에서, 출력은 순열 상태에서 스퀴즈될 수 있다. 예를 들어, 입력 순열 상태가 S이고 출력 순열 상태가 S’인 경우:
O = S’ = Perm (S)
S = S’
"스퀴즈" 연산에서, 순열 상태 S는 곧장 암호화 순열의 대상이 되고 그 결과는 이제 새로운 값 S’를 갖는 순열 상태 레지스터(310)에 다시 기록된다. 출력은 또한 프로세싱 유닛(130)에 의해 판독될 수 있는 O에 기록될 수 있다. 해싱 연산에서, r "레이트" 비트를 포함하는 출력 O의 일부는 해시 연산 출력으로서 프로세싱 유닛(130)에 의해 사용될 수 있다. 또한 "스퀴즈" 연산이 어떻게 M = 1 b X = 0 b 인 "흡수"와 동등한지 알 수 있다.
"암호화" 연산은 "흡수"로 볼 수 있으며, X는 프로세싱 유닛(130)에 의해 순열 입력 레지스터(320)에 기록된 암호화할 데이터(즉, 평문 데이터)를 나타내고 출력 상태 O는 연산후에 순열 출력 레지스터(330)에 복사되며, "암호문"은 프로세싱 유닛(130)에 의해 순열 출력 레지스터(330)로부터 판독된다:
O = S’ = Perm ((S AND M) XOR X)
S = S’
이 연산에서, M M = 1 b 로 설정될 수 있으며, X는 평문 역할을 하고 O는 암호문을 나타낸다. 다시, XO의 일부, 예를 들어 r "레이트" 비트만이 프로세싱 유닛(130)에 의해 판독 및/또는 이용될 수 있다. c "커패시티"는 프로세싱 유닛(130)에 의해 무시될 수 있다.
"복호화" 연산은 "암호화" 연산의 역(inverse)으로 볼 수 있다. 이 경우, X(예를 들어, 순열 입력 레지스터(320)의 컨텐츠)는 암호문으로 볼 수 있고 Y는 복호화된 평문(예를 들어, 조합 출력 레지스터(420)로부터 판독됨)을 형성한다. 이 경우:
Y = S XOR X
O = S’ = Perm ((S AND M) XOR X)
S = S’
예를 들어, r "레이트" 비트가 순열 상태 S의 좌변으로 간주되고 c "커패시티" 비트가 순열 상태 S의 우변 간주되는 경우, M M=1 r 0 c 로 설정될 수 있다. 이 경우, X의 왼쪽 r비트가 0으로 가정되므로, 암호문 X는 순열 상태 S를 이용하여 덮어쓰기된다. 대응하는 평문은 Y의 오른쪽 r비트를 취함으로써 프로세싱 유닛(130)에 의해 판독될 수 있다.
본 명세서에 기재된 예에서, 암호화 레지스터는 w-비트 워드로 배열될 수 있으며, w의 크기는 프로세싱 유닛(130)의 아키텍처에 의해 결정된다. 예를 들어, w는 32비트 데이터경로를 갖는 시스템의 32 혹은 64비트 데이터경로를 갖는 시스템의 w=64일 수 있다. 암호화 순열의 입력 및 출력이 b 비트(예를 들어, KECCAK-p 및 SHA-3, b=1600)이면, 프로세싱 유닛(130)은 n=b/w 워드의 세트로서 레지스터에 액세스할 수 있다. 예를 들어, 순열 출력 레지스터(330)에 복사된 순열 상태 S’는 32비트 시스템에서 50워드로 액세스될 수 있다. 그러나, 암호화 아키텍처(110)는 전체 레지스터의 컨텐츠가 암호화 순열 유닛(140)에 의한 단일 사이클에 액세스될 수 있도록 구성된다. 이 배열은 데이터 프로세싱 속도를 크게 높일 수 있다. 예를 들어, 도 3 및 4에 도시된 것을 포함하는 데이터 레지스터(210)는 각각 크기가 b 비트일 수 있다(또는 b 비트를 저장할 수 있음).
도 6은 암호화 레지스터(600) 세트의 다른 예를 도시한다. 이 예에서, 제어 레지스터(220) 세트가 도시되어 있다. 이들은 도 3 또는 도 4 중 하나에 도시된 데이터 레지스터(210)와 더불어 제공될 수 있다. 도 6은 7개의 제어 레지스터(220)를 갖는 예를 도시하며; 다른 예와 구현은 조건에 따라 다른 수의 제어 레지스터 또는 부분으로 분할된 단일 레지스터를 이용할 수 있다. 도 6에서, 제어 레지스터(220)는 식별자(ID) 레지스터(610); 시작(GO) 레지스터(620); 준비(RDY) 레지스터(630); 라운드 레지스터 세트(640, 650, 660); 및 인터럽트(IRQ) 제어 레지스터(670)를 포함한다.
식별자 레지스터(610)는 프로세싱 유닛(130)에 의해 기록 가능하고 수행될 암호화 연산의 식별자를 저장한다. 예를 들어, 식별자 레지스터(610)는 위에서 기재된 바와 같이 하나 이상의 도메인 구분자 파라미터(domain separator parameter)를 저장할 수 있다. 예를 들어 식별자 레지스터(610)에 기록된 다른 값은 예를 들어, 순열 출력 레지스터(330)으로부터 판독된 것으로, 상이한 출력을 생성하는 것을 보장함으로써 식별자 값은 특정 암호화 연산에 따라 암호화 연산을 구성하는데 사용될 수 있다.
시작 레지스터(620)는 프로세싱 유닛(130)에 의해 기록 가능하고 암호화 연산의 시작(또는 재시작) 플래그를 저장한다. 예를 들어, 시작 레지스터(620)는 0 및 값 1을 갖는 이진(binary) 플래그를 저장할 수 있으며, 값 1 은 암호화 순열 유닛(140)이 암호화 연산을 시작해야 함을 나타낸다 (예를 들어, 위에서 기재된 바와 같은 암호화 순열을 수행함으로써). 시작 레지스터(620)는 디폴트로 0일 수 있고, 프로세싱 유닛(130) (예를 들어, 1로 설정)에 의해 기록될 수 있어서 프로세싱 유닛(130)을 대신하여 암호화 연산을 실행하도록 암호화 아키텍처(110) (및/또는 암호화 순열 유닛(140))에 지시한다.
준비 레지스터(630)는 프로세싱 유닛(130)에 의해 판독 가능하고 암호화 아키텍처(110)(및/또는 암호화 순열 유닛(140))가 다른 암호화 연산을 시작할 준비되었음 및/또는 암호화 순열의 결과가 프로세싱 유닛(130)에 의해 판독될 준비되었음을 나타내는 준비 플래그를 저장한다. 이것은 시작 플래그와 마찬가지로 이진 플래그일 수 있으며, 0은 암호화 아키텍처(110)가 준비되지 않았음을 나타내고(예를 들어, 사용 중이거나 바쁘거나) 1은 암호화 아키텍처(110)가 암호화 연산을 시작할 준비가 되었음을 나타낸다. 준비 레지스터(630)는 다중 프로세싱 유닛(예를 들어, 멀티코어 프로세서 또는 마이크로프로세서)을 갖는 컴퓨팅 디바이스에서 유용할 수 있으며, 각각의 다중 프로세싱 유닛은 암호화 아키텍처(110)에 액세스할 수 있는데, 예를 들어 이들 각각은 프로세서 인터페이스(120)에 통신 가능하게 결합된다. 이것은 프로세서 인터페이스(120)가 다중 프로세싱 유닛과 결합하는 시스템 버스에 결합된 경우일 수 있다. 암호화 연산의 결과가 데이터 레지스터(210) 판독을 위한 준비가 되었음을 나타내는데 준비 레지스터(630)가 사용되는 경우, 값 1은 프로세싱 유닛(130)에 순열 출력 레지스터(330)의 암호화 순열 결과가 이용 가능함을 나타내고 값 0은 연산이 여전히 진행 중임을 나타낸다.
라운드 레지스터(640, 650, 660)의 세트는 프로세싱 유닛(130)에 의해 기록 가능하고 암호화 순열의 라운드와 관련된 하나 이상의 플래그를 저장한다. 도 6에는 3개의 라운드 레지스터가 있다; 시작(BEG) 라운드 레지스터(640), 종료(END) 라운드 레지스터(650) 및 라운드 데이터(RND) 레지스터(660). 시작 라운드 레지스터(640) 및 종료 라운드 레지스터(650)는 시작 라운드(처리될 첫 번째 라운드) 및 종료 라운드(처리될 마지막 라운드)에 각각 저장하도록 프로세싱 유닛(130)에 의해 기록 가능하다. 시작 및 종료 라운드는 정수 값으로 나타낼 수 있다. 라운드 데이터 레지스터(660)는 프로세싱 유닛(130)에 의해 기록 또는 액세스 가능할 수도 가능하지 않을 수도 있다. 라운드 데이터 레지스터(660)가 현재 라운드를 추적하기 위해 (예를 들어, 정수 값으로) 라운드 카운트를 저장하는 경우, 라운드 데이터 레지스터(660)는 프로세싱 유닛(130)에 의해 액세스 가능하지 않을 수 있다. 다른 경우에, 라운드 데이터 레지스터(660)는 수행할 라운드의 수를 나타내는 라운드 상수를 저장할 수 있다. 조건에 따라 다른 구현이 가능한다.
인터럽트 제어 레지스터(670)는 프로세싱 유닛(130)에 의해 기록 가능하고 인터럽트가 활성화인지 또는 불활성화인지를 나타내는 플래그를 저장한다. 예를 들어, 인터럽트 제어 레지스터(670)는 이진 플래그를 저장할 수 있으며, 0은 인터럽트가 불활성화임을 나타내고 1은 인터럽트가 활성화임을 나타낸다. 이 예에서, 인터럽트는 프로세싱 유닛(130)에 의해 실행되고 있는 일련의 명령어를 인터럽트하는 프로세싱 유닛(130)에 대한 인터럽트를 지칭한다. 인터럽트가 활성화되면, 암호화 연산(암호화 순열을 포함)이 완료 및/또는 암호화 아키텍처(110)가 입력을 처리할 준비가 되었음을 나타내기 위해 사용될 수 있다(예를 들어, 그것이 다른 프로세싱 유닛에 의해 사용 중이었다면). 프로세싱 유닛(130)은 인터럽트가 현재 디바이스 구성에 기초하여 및/또는 특정 암호화 연산에 대해 사용되는지 여부를 설정할 수 있다. 인터럽트가 사용되지 않으면(예를 들어, 플래그가 0으로 설정됨), 프로세싱 유닛(130)은 이벤트가 발생했는지 여부를 결정하기 위해 준비 레지스터(630)를 대신 폴(poll)할 수 있다.
따라서, 도 6의 암호화 레지스터(600) 세트 예는 프로세싱 유닛(또는 다중 프로세싱 유닛)이 암호화 아키텍처(110) 및 암호화 순열 유닛(140)의 연산을 제어할 수 있게 한다. 제어 및 데이터를 위한 통일되고 공통된 프로세서 인터페이스(120)를 갖는 것은 암호화 아키텍처(110)의 통합을 단순화하는 데 도움이 될 수 있다. 그것은 또한 더 큰 컴퓨팅 장치에 단일 결합을 가능하게 하는데, 예를 들어 암호화 아키텍처(110)가 더 큰 컴퓨팅 장치의 마더 보드 또는 제어 보드에 쉽게 추가될 수 있다. 암호화 레지스터(600) 세트가 도 6에서 개별 레지스터로 도시되어 있지만, 레지스터 컨텐츠 중 일부 또는 전부는 대안적으로 하나 이상의 제어 레지스터의 필드로 그룹화될 수 있다(예를 들어, 위에 기재된 이진 플래그는 8비트 레지스터의 다른 비트를 포함할 수 있음).
도 7, 8a 및 8b는 도 1 내지 6에 도시된 것과 같은 암호화 아키텍처 제어의 특정 방법을 예시한다. 암호화 아키텍처는 암호화 연산을 수행하도록 제어될 수 있으며, 예를 들어 적어도 하나의 프로세싱 유닛은 프로세서 인터페이스를 통해 암호화 아키텍처를 제어할 수 있다. 특정 경우에, 암호화 아키텍처는 입력 준비를 용이하게 하고 출력 언로딩(unloading)이 순열 계산과 동시에 발생하도록 하는 방식으로 사용될 수 있다.
도 7은 일 예에 따른 암호화 연산을 수행하는 방법(700)을 도시한다. 방법(700)은 도 1의 암호화 아키텍처(110)와 같은 암호화 아키텍처에 의해 수행될 수 있다. 일 경우에, 방법(700)은 도 1 내지 도 6에 도시된 암호화 순열 유닛(140)과 같은 암호화 아키텍처 내의 암호화 순열 유닛에 의해 수행될 수 있다.
방법은 암호화 연산을 수행하라는 명령어를 프로세싱 유닛으로부터 수신하는 단계를 포함하는 블록(710)에서 시작한다. 이는 도 1의 프로세서 인터페이스(120)를 통해 프로세싱 유닛(130)으로부터 신호를 수신하는 것을 포함할 수 있다. 일 경우에, 암호화 순열 유닛(140)은 도 6의 시작 레지스터(620)를 모니터링할 수 있고, 블록(710)은 시작 레지스터(620)의 값을 로딩하고 그것이 양(positive)의 시작 신호(예를 들어, 값 1)를 나타내는지 여부를 결정하는 단계를 포함할 수 있다.
블록(720)에서, 순열 상태는 암호화 레지스터 세트 중 하나로부터 로딩되어진다. 이것은 도 3 내지 도 5에 도시된 순열 상태 레지스터(310)의 데이터를 로딩하는 암호화 순열 유닛(140)을 포함할 수 있다. 순열 상태는 처리 유닛에 의해 액세스될 수 없을 수 있다.
블록(730)에서, 암호화 순열은 순열 상태로부터 도출된 데이터에 수행된다. 데이터는 순열 상태 자체를 포함할 수 있고, 도 5에 도시된 바와 같이, 암호화 순열을 수행하기 전에 많은 논리 연산이 순열 상태에 적용될 수 있다. 블록(730)은 프로세서 인터페이스(120)의 암호화 레지스터에 저장된 데이터를 이용하여 도 1 내지 6의 암호화 순열 유닛(140)에 의해 수행될 수 있다. 블록(730)은, 도 5에 도시된 바와 같이, 프로세서 인터페이스(120) 내의 다수의 데이터 레지스터(210)의 데이터를 판독하는 단계를 포함할 수 있다.
블록(740)에서, 방법(700)은 암호화 레지스터의 세트 중 하나에 암호화 순열의 출력을 저장하는 단계를 포함한다. 예를 들어, 이것은 암호화 순열의 출력을 순열 출력 레지스터(330)에 복사하는 것을 포함할 수 있다. 그것은 또한 순열 상태 레지스터(310)에 동일한 출력을 저장하는 것을 포함할 수 있다. 데이터 레지스터(210)에 대한 판독/기록 연산은 암호화 순열 유닛(140)에 의해 수행될 수 있다.
블록(750)에서, 방법(700)은 순열이 완료되었음을 프로세싱 유닛에 나타낸다. 그런 다음, 프로세싱 유닛은, 예를 들어 도 1의 프로세서 인터페이스(120)를 통해, 암호화 레지스터 세트의 암호화 순열의 출력에 액세스할 수 있다. 일 경우에, 블록(750)은 인터럽트를 프로세싱 유닛에 전송하는 암호화 순열 유닛(140)을 포함할 수 있다 (예를 들어, 인터럽트가 더 많이 가능한 경우). 대안적으로, 또는 추가적으로, 블록(750)은 준비 레지스터(630)에 플래그 값(예를 들어, 값 1)을 기록하는 것을 포함할 수 있다. 프로세싱 유닛은 암호화 레지스터의 세트의, 예를 들어 순열 출력 레지스터(420)의, 암호화 순열의 출력을 판독할 수 있다.
일 경우에, 방법은 제어 레지스터 세트 중 하나를 통해 암호화 순열 유닛이 프로세싱을 시작할 준비가 되었음을 표시하는 단계를 포함할 수 있다. 예를 들어, 이것은 도 6에 도시된 바와 같이 준비 레지스터(630)에 의해 나타낼 수 있다. 예에서, 프로세싱 유닛 및 암호화 순열 유닛(140)의 연산은 인터럽트 및 제어 레지스터 세트 중 하나의 상태 중 하나 이상에 기초하여 동기화될 수 있으며, 예를 들어 프로세스 흐름의 시작은 이들 중 하나 이상에 기초하여 동기화될 수 있다.
일 경우에, 방법은 암호화 순열 유닛에 의해, 라운드 데이터 레지스터(660)와 같은, 라운드 제어 레지스터의 라운드 카운트를 로딩하는 단계를 포함할 수 있다. 라운드 카운트는 암호화 순열에서, 예를 들어 라운드 상수 입력으로, 사용될 수 있다. 암호화 순열 후에, 라운드 제어 레지스터의 라운드 카운트가 증분될 수 있다. 로딩, 사용 및 증분 연산은, 도 6의 종료 라운드 레지스터(650)와 같은, 라운드 제어 레지스터와 종료 제어 레지스터의 비교에 기초하여 반복될 수 있다.
일 경우에, 방법은, 순열 입력 레지스터(320)와 같은, 순열 입력 레지스터의 순열 입력 데이터를 로딩하는 단계를 포함할 수 있다. 그 후, 마스크 입력 데이터는, 마스크 입력 레지스터(410)와 같은, 마스크 입력 레지스터로부터 로딩될 수 있다. 이 경우에, 블록(730)에서 암호화 순열을 수행하는 것은, 암호화 순열 유닛에 의해, 순열 상태 및 마스크 입력 데이터에 수행된 AND 연산의 결과와 순열 입력 데이터의 함수로 XOR 연산을 수행함으로써 순열 레지스터의 순열 상태를 업데이트하는 것을 포함한다. 이 경우에, 블록(640)은 업데이트된 순열 상태를 순열 상태 레지스터, 예를 들어 도 3 및 4의 순열 상태 레지스터(310)에 로딩하는 것을 포함할 수 있다. 예를 들어, 이것은 도 5에 도시된 바와 같은 배열에 의해 수행되는 연산을 포함할 수 있다.
도 8a 및 도 8b는, 도 1의 암호화 아키텍처(110)(예를 들어, 암호화 순열 유닛(140)에 의해 구현됨)와 같은, 암호화 모듈의 2가지 연산 모드(800)의 예를 도시한다. 도 8a 및 도 8b의 좌측(805)은, 도 1 내지 도 6의 암호화 순열 유닛(140)과 같은, 암호화 모듈에 의해 수행되는 연산을 도시한다. 도 8a 및 도 8b의 우측(810)은, 도 1의 프로세싱 유닛(130)과 같은, 프로세싱 유닛에서 제어 프로그램을 실행할 때 수행될 수 있는 대응 연산을 도시한다. 도 8a 및 8b의 양측은 암호화 모듈 및 프로세싱 유닛의 연산이 어떻게 동기화될 수 있는지를 도시한다.
좌측 연산(805)은 암호화 모듈이 암호화 연산을 수행할 준비가 되었음을 나타내기 위해 블록(815)에서 준비(RDY) 플래그가 설정될 때 시작된다. 이것은 인터럽트를 통해 및/또는 특정 값(예를 들어, 1)을 갖도록 준비 레지스터(예를 들어, 준비 레지스터(630))를 설정하는 암호화 모듈을 통해 수행될 수 있다. 특정 경우에, 준비 플래그를 1로 설정하면 암호화 모듈이 준비되었음을 프로세싱 유닛에 알리는 프로세싱 유닛 인터럽트를 트리거할 수도 있다. 다른 경우에, 프로세싱 유닛은 특정 값(예를 들어, 1) 또는 값의 변화(예를 들어, 0에서 1로)를 찾기 위해 준비 레지스터를 주기적으로 판독할 수 있다. 준비 플래그 값에 기초한 동기화는, 예를 들어 프로세서 인터페이스(120)에 의해 제공되고 845로 도시된, 인터페이싱 레지스터와 함께 화살표(840)를 통해 도시된다. 도 8a의 블록 855에서, 프로세싱 유닛은 준비 플래그 값에 기초하여 인터럽트를 수신한다(예를 들어, 준비 플래그가 암호화 모듈이 프로세싱할 준비가 되었음을 나타내는 값 1을 가짐을 나타냄). 도 8a는 인터럽트가 활성화된 경우를 보여준다. 도 8b는 인터럽트가 활성화되지 않은 대안적인 경우를 보여주고; 도 8b의 블록 890에서, 프로세싱 유닛은 준비 플래그의 값을 모니터링하고 (예를 들어, 준비 레지스터를 주기적으로 폴링함으로써) 이 값이 1로 설정될 때 연산을 시작한다.
준비 플래그가 1로 설정되면, 암호화 모듈은 블록 815에서 프로세싱을 수행할 준비가 되고, 암호화 모듈은 블록 820으로 나아가 시작 플래그가 새로운 암호화 연산이 수행되어야 함을 나타내도록 설정되기를 대기한다(예를 들어, 1로 설정된 시작 플래그를 나타내어). 블록(820)은 도 6에 도시된 시작 레지스터(620)에 저장된 값을 모니터링하는 암호화 순열 유닛(140)을 포함할 수 있다.
암호화 모듈이 시작 신호를 대기하는 동안, 프로세싱 유닛은, 도 8a의 블록 855(예를 들어, 준비 =1을 나타내는 인터럽트) 또는 도 8b의 블록 890(예를 들어, 프로세싱 유닛이 준비 레지스터(630)의 값을 판독하고 1로 결정함) 중 하나에 이어, 블록 860에서 암호화 모듈의 이전 출력의 프로세싱을 시작한다. 예를 들어, 준비 플래그가 1로 보이는 경우, 프로세싱 유닛은 새로운 연산을 시작하고 순열 출력 및 조합 출력 중 하나 이상의 컨텐츠를 판독할 수 있다. 후자의 연산은 순열 출력 레지스터(330) 및 조합 출력 레지스터(420)에 각각 저장된 값을 판독하는 것을 포함할 수 있다.
블록(860)에 이어, 프로세싱 유닛은 처리할 데이터가 더 있는지 결정하기 위해 블록(865)에서 체크를 수행한다. 아래에서 더 자세히 기재된 바와 같이, 새로운 암호화 연산을 위해 블록(860)에서 판독된 값은 무시될 수 있고 처리할 데이터가 더 있을 것이다. 프로세싱 유닛이 이전에 명령된 암호화 연산을 후속 조치하는 경우, 예를 들어 결과가 준비되었을 때, 처리할 추가 데이터가 없을 수 있다. 처리할 데이터가 더 있다면, 방법은 블록 870으로 나아가고, 새로운 입력 값은 프로세싱 유닛에 의해 준비된다. 이것은 순열 입력(X) 및/또는 마스크 입력(M)의 새로운 값을 순열 입력 레지스터(320) 및 마스크 입력 레지스터(410)에 각각 기록하는 것을 포함할 수 있다. 새 값이 기록되면, 시작 플래그가 1로 설정되어 새 암호화 순열을 시작한다. 다시, 시작 레지스터(620)에 새로운 값 및 값 1을 기록하는 것은, 예를 들어 하나의 기록 사이클의 일부로서, 동시에 수행될 수 있다. 프로세서 인터페이스(120)의 설계는 이러한 연산을 용이하게 한다.
프로세싱 유닛이, 예를 들어 초기에 블록(870)에서, 시작 플래그를 설정하면, 암호화 모듈은 블록(820)에서 블록(825)으로 나아간다. 이것은 프로세싱 유닛 프로그램 흐름 내의 블록(860, 865, 870) 중 하나 이상과 병렬로 수행될 수 있다. 블록(825)에서, 암호화 모듈은 초기화 연산을 수행한다. 이것은 원자적 연산을 포함할 수 있으며, 예를 들어 적어도 하나의 암호화 모듈의 클럭 사이클(clock cycle)에서 단일 연산으로서 다수의 상이한 이벤트가 동시에 발생할 수 있다. 블록(825)은 다음 연산들 중 하나 이상을 포함할 수 있다: 시작 플래그를 0으로 설정(프로세싱이 시작되었음을 나타냄); 준비 플래그를 0으로 설정(현재 암호화 모듈이 추가 암호화 요청을 처리할 수 없음을 나타냄); 순열 출력(O)을 현재 순열 상태(S)로 설정; 순열 입력(X)과 순열 상태(S)에 대해 XOR 연산을 수행하여 조합 출력(Y)의 값을 설정; 순열 상태(S)를 S = ((S AND M) XOR X)로 로딩; 및 라운드 카운트 플래그를 라운드 시작 플래그로 설정을 포함한다. 따라서, 블록(825)은 시작 레지스터(620) 및 준비 레지스터(630)에 값 0을 저장하는 단계; 순열 상태 레지스터(310)의 컨텐츠를 순열 출력 레지스터(330)에 복사하는 단계; 제1 XOR 회로부(510)의 출력을 조합 출력 레지스터(420)에 저장하는 단계; 순열 상태의 값을 제2 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)에서 마지막 증분 후의 종료 라운드 값과 동일함), 암호화 순열이 완료된다. 이 방법은 준비 플래그를 1로 하여 순열의 결과가 준비되었고 암호화 모듈이 추가 암호화 연산을 수행할 준비가 되었음을 나타내는 블록 815로 나아간다. 그후 방법은 블록(820)으로 다시 나아가는데, 암호화 모듈은 시작 플래그가 프로세싱 유닛에 의해 1로 설정될 때까지 대기한다.
도 8a에서, 블록(870)에서의 입력 처리 후에, 프로세싱 유닛의 프로세스 흐름은 블록(875)에서 종료된다. 따라서 프로세싱 유닛은 암호화 연산의 결과가 준비되었음을 나타내는 인터럽트가 도착하기를 대기하는 동안 다른(예를 들어, 관련되지 않은) 명령어를 실행할 수 있다. 이러한 방식으로, 프로세싱 유닛은 효율적으로 사용될 수 있다. 암호화 모듈이 블록(815)을 수행할 때, 예를 들어 준비 레지스터(630)에 1을 저장하는 암호화 순열 유닛(140)을 통해, 암호화 연산의 결과가 준비되었음을 표시하고, 프로세싱 유닛은 블록(855)에서 다른 프로세스 흐름을 시작한다. 따라서 프로세싱 유닛은 블록(860)에서 출력을 처리하는데, 순열 출력 레지스터(330) 및 조합 출력 레지스터(420)에 저장된 값의 판독을 수반할 수 있다. 조합 출력 레지스터(420)의 결과는 블록(825)의 이전 실행에 의해 설정되었을 수 있고 순열 출력 레지스터(330)의 결과는 블록(830)의 반복의 일부로 저장될 수 있다(예를 들어, O = S’ = Perm((S AND M) XOR X)). 블록(860)에서 프로세싱 유닛에 의해 출력이 판독되면, 블록(865)에서 검사가 수행된다. 암호화 연산이 완료되면(예를 들어, 순열 출력 레지스터(330)의 결과가 필요한 전부이면), 프로세싱 유닛은 블록(875)에서 처리를 종료한다. 수행할 추가 암호화 연산이 있는 경우, 블록(870)이 다시 수행되고 프로세스가 반복된다. 일 경우에, 이전 반복이 블록(830)에서 여전히 수행되는 동안, 새로운 값이 순열 입력 레지스터(320) 및 마스크 입력 레지스터(410)에 기록될 수 있다.
도 8b는 인터럽트가 활성화 또는 구성되지 않은 경우와 유사한 프로세스를 도시한다. 이 경우, 블록(870) 이후에, 프로세싱 유닛은 블록(890)으로 돌아가고 암호화 연산의 결과가 준비되었음을 나타내는 준비 플래그의 상태 변화를 대기한다. 프로세싱 유닛은 블록(890)을 단독으로 수행할 필요는 없지만 모니터링 또는 폴링 프로세스의 일부로 이 블록을 간헐적으로 수행할 수 있다.
본 명세서에 기재된 특정 예는 암호화 순열 유닛을 마이크로프로세서와 같은 프로세싱 유닛과 효율적으로 인터페이스하는 암호화 아키텍처, 및 그러한 아키텍처를 작동하는 방법을 제공한다. 본 명세서에 기재된 특정 예는 저-자원 마이크로제어기 및 임베디드 디바이스의 구현과 더불어 고속 보안 데이터 프로세싱의 구현에 적합할 수 있는 암호화 방법을 제공한다. 기재된 암호화 아키텍처는 사용되는 프로세싱 유닛 타입에 무관하며, 프로세서 인터페이스는 다른 프로세싱 유닛이 암호화 순열 유닛에 결합되도록 하며, 다른 제어 절차의 옵션은 제어 레지스터의 공통 세트를 통해 이용 가능하다. 암호화 아키텍처는 메모리 매핑 및/또는 다른 접근 방식을 이용하여 구현될 수 있으므로, 다양한 타입의 프로세싱 유닛에 대한 쉽고 투명한 데이터 액세스를 제공한다. 기재된 접근 방식은 메모리 매핑 레지스터 또는 벡터 레지스터 및 명령어를 통해 프로세서 코어와 키리스 암호화 순열의 긴밀한 결합을 제공할 수 있으며, 프로세서 인터페이스는 전력 소비 및 유휴 사이클을 줄이기 위한 버퍼 아키텍처를 제공한다.
본 명세서에 기재된 특정 예는 ISA 익스텐션으로서, 예를 들어 다양한 프로세싱 유닛으로, 구현될 수 있다. 이 예는 양자-저항 대칭 및 비대칭 암호법의 안전한 구현을 직접 및/또는 간접적으로 지원할 수 있다. 본 명세서에 기재된 프로세서 인터페이스는 프로세싱 유닛의 버스 아키텍처를 통해 또는 다른 입력/출력 메커니즘을 통해 제어될 수 있다. 특정 예는 일정한 시간 및 방출 방지 이진 산술을 제공하도록 구성될 수 있다.
본 명세서에 기재된 특정 예는 암호화 순열을 "빌딩 블록" 상위 레벨 알고리즘으로 사용하는 상위 레벨 알고리즘의 효율적인 하드웨어 및/또는 소프트웨어 구현을 가능하게 하는 데 사용될 수 있다. 이러한 효율적인 하드웨어-소프트웨어 공동 설계로부터 이점을 획득할 수 있는 알고리즘의 예는 다음을 포함한다: 암호화 해시 함수 및 메시지 다이제스트 (예를 들어, 앞서 논의된 SHA3 및 SHAKE 표준, 앞서 기재된 SNEIK 방식의 일부를 형성하는 SNEIKHA 및 앞서 기재된 ASCON 방식의 Ascon-해시); MAC(Message Authentication Code)와 같은 SHA3-파생 함수(예를 들어, 본 명세서에 참조로 포함된 "SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash." NIST Special Publication 800-185, National Institute of Standards and Technology - NIST, 2016년 12월에서 John Kelsey, Shu-Jen Chang and Ray Perlner에 의해 기재된); 암호화 순열을 기초로 하는 AEAD(authenticated encryption with associated data) (예를 들어, 본 명세서에 참조로 포함된, “CAESAR submission: Keyak v2.” Keccak Team, 2016년 9월에 Guido Bertoni, Joan Daemen, Seth Hoffert, Micha
Figure pct00003
l Peeters, Gilles Van Assche, and Ronny Van Keer에 의해 기재된 이전 참조 SNEIK 및 ASCON 방식 및 KEYAK 방식에 기재된 SNEIKEN 및 Ascon-AEAD); 암호화 순열을 기초로 하는 PRNG(PseudoRandom Number Generation) 및 KDF(Key Derivation Function) 구조; 암호화 프리미티브를 기초로하는 암호화 모드 예를 들어 본 명세서에 참조로 포함된 Guido Bertoni, Joan Daemen, Seth Hoffert, Micha
Figure pct00004
l Peeters, Gilles Van Assche, and Ronny Van Keer, “Farfalle: parallel permutation-based cryptography.” IACR Cryptology ePrint Archive: Report 2016/1188, 2016년 12월 및 Guido Bertoni, Joan Daemen, Micha
Figure pct00005
l Peeters, Gilles Van Assche, Ronny Van Keer, and Beno
Figure pct00006
t, “KangarooTwelve: fast hashing based on Keccak-p.” Proc. ACNS 2018, LNCS 10892, pp. 400-418, Springer, 2018에 기재된; 순열 기반 프리미티브를 빌딩 블록으로 사용하는 RSA(Rivest-Shamir-Adleman) 및 ECDSA(Elliptic Curve Digital Signature Algorithm)과 같은 전통적인 공개키 암호화 알고리즘 (예를 들어, the FIPS standard 186-4에 기재된); 및 암호화 순열을 빌딩 블록으로 사용하는 수많은 포스트-양자 공개키 암호화 알고리즘 (예를 들어, 본 명세서에 참조로 포함된, the NIST Information Technology Laboratory, 2019년 3월에 공개된 “Post-Quantum Cryptography: Round 2 Submissions”에 기재된 BIKE, “Classic McEliece”, Dilithium, Falcon, FrodoKEM, GeMMS, Kyber, Luov, MQDSS, NewHope, NTRU, NTS-KEM, Picnic, qTESLA, Round5, Saber, Sphincs+, and ThreeBears).
특정 예는 특정 레지스터 내의 데이터에 액세스하고 이러한 레지스터의 데이터를 판독 및/또는 기록되는 것을 지칭하지만, 실제로 중간 데이터 저장소 및/또는 데이터 구조가 특정 구현에서 사용될 수 있으며 "의 데이터(data in)"의 언급은 "로부터 도출된 데이터(data derived from)"로 적용될 수 있음이 이해될 것이다, 예를 들어 기재된 것 외에 하나 이상의 중간 프로세스에서 기인한 데이터. XOR 및 AND에 대한 언급은 각각 논리적인 "배타적-or" 및 논리적인 "and" 연산을 수행하는 논리 연산을 지칭한다. 또한, 특정 컴포넌트에 결합된 회로부에 대한 언급은, 예를 들어 실행된 펌웨어 코드 및/또는 전용 하드웨어 회로부를 통해서인지, 해당 컴포넌트 내의 기능으로서 대안적으로 구현될 수 있음이 이해되어야 한다. 본 명세서에 기재된 "회로부"는, 예를 들어 FPGA의 디지털 논리 게이트 또는 프로그램 가능한 게이트를 사용하는, 하드웨어에서 및/또는 메모리로부터 로딩되고 마이크로프로세서와 같은 프로세서에 의해 실행되는 컴퓨터 프로그램 코드로 구현될 수 있다. 본 명세서에 기재된 특정 시스템 컴포넌트 및 방법은 읽기 전용 업데이트 가능한 펌웨어 메모리와 같은 비일시적 저장 매체에 저장 가능한 펌웨어 또는 명령어 세트와 같은 컴퓨터 프로그램 코드를 거쳐 구현될 수 있다.
위의 예는 도시적인 것으로 이해되어야 한다. 추가 예가 예상될 수 있다. 예를 들어, 본 명세서에서 논의된 특정 값은 테스트 예를 기초로 하며 구현에 따라 다를 수 있다(예를 들어, 마이크로제어기 사양 및 타입, 보안 요소 및 기타 요인에 따라). 각 예의 특정 컴포넌트는 별도로 기재되었지만, 하나의 예를 언급하여 기재된 기능은 다른 예에서 적절하게 구현될 수 있으며, 구현에 따라 특정 컴포넌트는 생략될 수 있음이 이해되어야 한다. 임의의 하나의 예와 관련하여 기재된 임의의 특징은 단독으로, 또는 기재된 다른 특징과 조합하여 사용될 수 있으며, 또한 하나 이상의 임의의 다른 예시의 특징과의 조합, 또는 임의의 다른 예시의 임의의 조합에 사용될 수 있다. 예를 들어, 시스템 컴포넌트와 관련하여 기재된 특징은 기재된 방법의 일부로 수행되도록 적용될 수도 있다. 더욱이, 위에서 기재되지 않은 균등물 및 수정예가 또한 첨부된 청구항에 정의된 본 발명의 범위를 벗어남 없이 채용될 수 있다.

Claims (20)

  1. 암호화 아키텍처에 있어서,
    암호화 레지스터 세트를 포함하는 프로세서 인터페이스 - 상기 프로세서 인터페이스는 적어도 하나의 프로세싱 유닛에 의해 액세스 가능함 -; 및
    상기 암호화 레지스터 세트 내에 저장된 데이터를 이용하여 암호화 순열(cryptographic permutation)을 수행하는 회로부를 포함하는 암호화 순열 유닛을 포함하고,
    상기 적어도 하나의 프로세싱 유닛은 상기 암호화 순열을 지시하고 상기 프로세서 인터페이스를 이용하여 상기 암호화 순열의 결과에 액세스하는, 암호화 아키텍처.
  2. 제1항에 있어서, 상기 암호화 아키텍처는 상기 적어도 하나의 프로세싱 유닛에 의해 실행되는 단일 기계 코드 명령어에 기초하여 암호화 순열을 수행하도록 구성되는, 암호화 아키텍처.
  3. 제2항에 있어서, 상기 단일 기계 코드 명령어는 ISA(Instruction Set Architecture) 익스텐션(extension)으로 구현되는, 암호화 아키텍처.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 프로세서 인터페이스는 적어도 b-비트를 저장하도록 구성된 복수의 레지스터를 포함하고, b는 순열 입력의 비트 크기인, 암호화 아키텍처.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 암호화 순열 유닛은 KECCAK-p 순열을 수행하도록 구성되는, 암호화 아키텍처.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 암호화 순열 유닛은 복수의 라운드(round)를 포함하는 키리스(keyless) 순열을 수행하도록 구성되는, 암호화 아키텍처.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 적어도 하나의 프로세싱 유닛은,
    입력 데이터를 순열 상태와 혼합하기 위한 흡수 암호 연산;
    상기 순열 상태를 이용하여 출력을 획득하는 스퀴즈(squeeze) 암호 연산;
    상기 순열 상태를 이용하여 입력 데이터를 암호화하는 암호화 암호 연산; 및
    상기 순열 상태를 이용하여 입력 데이터를 복호화하는 복호화 암호 연산 중 하나 이상을 수행하기 위해 상기 암호화 아키텍처를 사용할 수 있는, 암호화 아키텍처.
  8. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 레지스터 세트는,
    순열 상태를 저장하는 순열 상태 레지스터;
    순열 입력 데이터를 저장하는 순열 입력 레지스터 - 상기 순열 입력 레지스터는 상기 적어도 하나의 프로세싱 유닛에 의해 기록 가능함 -; 및
    출력 데이터를 저장하는 순열 출력 레지스터 - 상기 순열 출력 레지스터는 적어도 하나의 프로세싱 유닛에 의해 판독 가능함 - 를 포함하는, 암호화 아키텍처.
  9. 제8항에 있어서,
    입력 XOR 연산을 적용하는 회로부 - 상기 입력 XOR 연산은 상기 순열 입력 레지스터의 상기 순열 입력 데이터로부터 도출된 데이터 및 상기 순열 상태 레지스터의 상기 순열 상태로부터 도출된 데이터에 적용됨 - 를 포함하고,
    입력 XOR 연산을 적용하는 상기 회로부는 상기 암호화 순열의 수행을 위해 데이터를 상기 암호화 순열 유닛에 공급하도록 통신 가능하게 결합되는, 암호화 아키텍처.
  10. 제9항에 있어서,
    입력 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 연산을 수행함으로써 상기 순열 레지스터의 상기 순열 상태를 업데이트하는 것을 포함하고,
    상기 암호화 레지스터 세트 중 하나에 상기 암호화 순열의 출력을 저장하는 것은 상기 업데이트된 순열 상태를 상기 순열 상태 레지스터에 로딩하는 것을 포함하는, 암호화 연산 수행 방법.
KR1020227004305A 2019-03-18 2020-07-15 암호화 순열을 위한 암호화 아키텍처 KR20220028132A (ko)

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
KR20220028132A true KR20220028132A (ko) 2022-03-08

Family

ID=66381181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227004305A KR20220028132A (ko) 2019-03-18 2020-07-15 암호화 순열을 위한 암호화 아키텍처

Country Status (7)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240018910A (ko) 2022-08-03 2024-02-14 경희대학교 산학협력단 양자 단대단 암호화 시스템 및 그 동작 방법

Families Citing this family (14)

* 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 ソニーセミコンダクタソリューションズ株式会社 データ処理装置
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240018910A (ko) 2022-08-03 2024-02-14 경희대학교 산학협력단 양자 단대단 암호화 시스템 및 그 동작 방법

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
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
CN114258660A (zh) 2022-03-29
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
US20220138349A1 (en) Cryptographic architecture for cryptographic permutation
KR102447709B1 (ko) 비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템
Krovetz et al. The software performance of authenticated-encryption modes
US8737606B2 (en) Method and system for high throughput blockwise independent encryption/decryption
US20190319782A1 (en) Combined sha2 and sha3 based xmss hardware accelerator
EP3468147B1 (en) Method for constructing secure hash functions from bit-mixers
KR101143041B1 (ko) 리볼빙 버퍼들을 이용한 스트림 암호 설계 방법
Ting et al. An FPGA based SHA-256 processor
KR20110129932A (ko) 암호 시스템을 위한 키 복구 메커니즘
US20170163416A1 (en) Hardware assisted fast pseudorandom number generation
EP3758275B1 (en) Post quantum public key signature operation for reconfigurable circuit devices
Samir et al. ASIC and FPGA comparative study for IoT lightweight hardware security algorithms
CN112152783A (zh) 用于快速安全启动的低时延后量子签名验证
US11429751B2 (en) Method and apparatus for encrypting and decrypting data on an integrated circuit
US10536264B2 (en) Efficient cryptographically secure control flow integrity protection
Paul et al. Partitioned security processor architecture on FPGA platform
Nabil et al. Design and implementation of pipelined and parallel AES encryption systems using FPGA
Hu et al. Taming energy cost of disk encryption software on data-intensive mobile devices
Conti et al. Design exploration of aes accelerators on fpgas and gpus
Ege et al. Memory encryption for smart cards
CN114205104A (zh) 针对功率和电磁侧信道攻击的对认证标签计算的保护
Abbas et al. Dictionary Attack on TRUECRYPT with RIVYERA S3-5000
US20240007267A1 (en) Side-channel resistant bulk aes encryption
US20240031127A1 (en) Lightweight side-channel protection for polynomial multiplication in post-quantum signatures
CN112487448B (zh) 一种加密信息处理装置、方法及计算机设备