KR20090092735A - 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치 - Google Patents

병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치

Info

Publication number
KR20090092735A
KR20090092735A KR1020090017289A KR20090017289A KR20090092735A KR 20090092735 A KR20090092735 A KR 20090092735A KR 1020090017289 A KR1020090017289 A KR 1020090017289A KR 20090017289 A KR20090017289 A KR 20090017289A KR 20090092735 A KR20090092735 A KR 20090092735A
Authority
KR
South Korea
Prior art keywords
aes
blocks
round
aes round
instruction
Prior art date
Application number
KR1020090017289A
Other languages
English (en)
Other versions
KR101068367B1 (ko
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 KR20090092735A publication Critical patent/KR20090092735A/ko
Application granted granted Critical
Publication of KR101068367B1 publication Critical patent/KR101068367B1/ko

Links

Classifications

    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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
    • 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
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

파이프라인 구조의 실행 유닛을 갖는 시스템에서는 암호화/암호 해독 연산의 처리량이 증가한다. AES 라운드 명령어를 디스패치함으로써 상이한 데이터 블록들의 상이한 독립 암호화들(암호 해독들)을 매 사이클마다 병렬로 수행할 수 있다.

Description

병렬 연산 모드에서 AES 암호화 및 암호 해독을 최적화하는 방법 및 장치{METHOD AND APPARATUS FOR OPTIMIZING ADVANCED ENCRYPTION STANDARD (AES) ENCRYPTION AND DECRYPTION IN PARALLEL MODES OF OPERATION}
본 발명은 AES(Advanced Encryption Standard)에 관한 것이며, 구체적으로는 AES 암호화/암호 해독을 최적화하는 것에 관한 것이다.
암호 작성술(cryptology)은 정보를 보호하기 위해 알고리즘 및 키에 의존하는 도구이다. 알고리즘은 복잡한 수학적 알고리즘이며, 키는 비트열이다. 두가지 기본적인 종류의 암호 작성 방식으로는 비밀 키 방식과 공개 키 방식이 있다. 대칭 방식이라고도 하는 비밀 키는 둘 이상의 상대방이 공유하는 단일 키("비밀 키")를 갖는다. 단일 키는 정보를 암호화 및 암호 해독하는데 이용된다.
FIPS(Federal Information Processing Standard) 197로서 NIST(National Institute of Standards and Technology)에서 발표한 AES(Advanced Encryption Standard)는 비밀 키 방식이다. AES는 정보를 암호화하고 암호 해독할 수 있는 대칭 블록 암호이다.
암호화(암호)에서는 비밀 키(암호 키)를 이용하여 "평문(plaintext)"이라고 하는 알기 쉬운 데이터를 "암호문(cipher text)"이라고 하는 알기 어려운 형태로 변환하는 일련의 변환을 행한다. 암호에서의 변환은, (1) XOR(Exclusive OR) 연산을 이용하여 스테이트(2차원 바이트 어레이)에 라운드 키(암호 키로부터 도출된 값)를 부가하는 것, (2) 비선형 바이트 대체표(S-Box)를 이용하여 스테이트를 처리하는 것, (3) 오프셋을 달리하여 스테이트의 최후 3행을 주기적으로 시프트하는 것, (4) 스테이트의 모든 열을 취하고 (서로 무관하게) 그 데이터를 혼합하여 새로운 열을 생성하는 것을 포함한다.
암호 해독(역 암호)에서는 암호 키를 이용하여 "암호문" 블록을 동일한 크기의 "평문" 블록으로 변환하는 일련의 변환을 수행한다. 역 암호에서의 변환은 암호에서의 변환의 역이다.
Rijindael 알고리즘은, AES 표준에서, 길이가 128, 192, 256 비트인 암호 키를 이용하여 128 비트의 데이터 블록을 처리하도록 지정되어 있다. 이러한 상이한 키 길이는 통상적으로 AES-128, AES-192 및 AES-256이라고 한다.
AES 알고리즘은, 라운드 수가 키 길이에 의존하는 10, 12 또는 14개의 연속하는 라운드에서, 평문을 암호문으로 변환하거나, 암호문을 평문으로 변환한다.
동일한 부분은 동일한 번호를 부여한 첨부 도면을 참조하고 이하의 상세한 설명을 진행할수록 청구 대상의 실시예의 특징을 명확히 알게 될 것이다.
청구 대상의 예시적인 실시예를 참조하여 다음의 상세한 설명을 진행할 것이지만, 그의 다양한 대안, 변경 및 변형이 본 기술분야의 숙련자에게 명백할 것이다. 따라서, 청구 대상은 광의로 해석되어야 하며, 첨부한 청구범위에 기재한 대로만 규정되어야 한다.
AES(Advanced Encryption Standard) 알고리즘은 소프트웨어나 전용 프로세서에서 통상적으로 수행되는 계산 집약 알고리즘(compute intensive algorithm)이다. AES 알고리즘은 소프트웨어에서 메모리에 저장된 CPU(Central Processing Unit) 명령어를 로딩/저장/증분하는 시퀀스를 실행하여 행해진다. AES 알고리즘은 평문 또는 암호문의 각 바이트를 변환하는데 많은 CPU 사이클을 소비하기 때문에 변환이 느리다. 따라서, 통상적으로는 컴퓨터에 저장된 정보의 서브세트, 예컨대 "일급 비밀"로서 분류될 수 있는 정보를 암호화하는 데에만 암호화를 이용한다. 그러나, 컴퓨터에 저장되어 있는 정보의 더 많은 것을 암호화할 필요가 있다. 예컨대, 모바일 컴퓨터에 저장된 모든 정보가 암호화되었다면, 모바일 컴퓨터를 도난당한 경우에 그 정보는 보호될 것이다.
AES는 128, 192 또는 256 비트의 키 크기로 128 비트 블록을 연산하는 블록 암호이다. AES 알고리즘은, 라운드 수가 키 크기(128, 192 또는 256 비트)에 의존하는 10, 12 또는 14의 연속하는 라운드에서, 128 비트의 평문 블록을 128 비트의 암호문 블록으로 변환(암호화)하거나, 128 비트의 암호문 블록을 128 비트의 평문 블록으로 변환(암호 해독)한다. 매 라운드(10, 12 또는 14)마다 연산의 시퀀스를 반복한다. 암호화 라운드의 연산의 시퀀스는, (1) XOR(Exclusive OR) 연산을 이용하여 스테이트(2차원 128 비트 바이트 어레이)에 라운드 키(암호 키로부터 도출된 값)를 부가하는 것, (2) 비선형 바이트 대체표(S-Box)를 이용하여 스테이트를 처리하는 것, (3) 오프셋을 달리하여 스테이트의 최후 3행을 주기적으로 시프트하는 것, (4) 스테이트의 모든 열을 취하고 (서로 무관하게) 그 데이터를 혼합하여 새로운 열을 생성하는 것을 포함한다.
블록 암호는 복수의 연산 모드 중 하나를 이용할 수 있다. 연산 모드는 임의 길이의 메시지에 대한 비밀성을 제공하는 ECB(Electronic Code Book), CBC(Cipher-Block Chaining), OFB(Output Feedback) 및 CFB(Counter and Cipher-Feedback)를 포함한다. CCM(Counter with Cipher Block Chaining-Message Authentication Code), GCM(Galois Counter Mode), OCB(Offset Codebook Mode) 등의 다른 연산 모드는 비밀성과 메시지 무결성을 모두 제공한다.
ECB 모드에서는, 암호화 대상의 평문을 n-비트 블록으로 분할하고, 각 블록을 개별적으로 암호화한다 - 즉, 블록들을 다른 블록들과는 독립적으로 암호화한다. CBC 모드에서는, 평문을 n 비트를 한번에 처리하고 체이닝 메카니즘(chaining mechanism)을 이용하여 평문 블록을 암호화하는데, 이 평문 블록의 암호화는 이전 블록의 암호화에 의존한다. 예컨대, 암호화 연산의 CBC 연산 모드는 이하의 표 1에 나타낸 바와 같이 기술할 수 있다.
CBC 연산 모드에서는, Cj-1을 계산하기 전에는 Cj를 계산할 수 없으며, 따라서 CBC 연산 모드는 직렬 모드이다.
병렬 연산 모드는 하나의 블록의 암호화/암호 해독이 다른 블록의 암호화/암호 해독 결과와는 무관한 연산 모드이다. 예컨대, ECB 및 카운터 연산 모드는 병렬 연산 모드이다. ECB 모드를 이용한 AES 암호화 연산에 대한 의사코드(pseudocode)의 일례를 표 2에 나타내며, 카운터 연산 모드를 이용한 AES 암호화 연산에 대한 의사코드의 일례를 이하의 표 3에 나타낸다.
표 2 및 표 3의 암호화 연산들(AES_ENCRYPT_PROCEDURE)은 범용 퍼로세서에서의 AES 암호화 및 암호 해독을 수행하기 위한 명령어 세트 확장시에 수행될 수 있다. 단일 AES 암호화 연산은 연산의 직렬 시퀀스를 포함하는데, 이는 AES 명령어들의 직렬 시퀀스를 통해 실행될 수 있다. 복수의 128-비트 데이터 블록들의 암호화를 수행하기 위한 명령어들의 시퀀스의 일례를 아래의 표 4에 나타내었다.
표 4에 나타낸 AES 명령어들(AESENC, AESENCLAST)은 AES 명세서(FIPS 간행물 197)에 의해 정의된 바와 같이, 128-비트 변수(temp)(스테이트라고도 함)에 저장된 데이터를 직렬로 처리한다. 상기 데이터를 처리하기 위한 연산들의 직렬 시퀀스의 일례를 아래의 표 5에 나타내었다.
암호화될 N_Block들 각각에 대하여, 데이터 블록은 레지스터에 저장되는데, 예를 들어, 128-비트를 갖는 Xmm 레지스터(Xmm1)는 128-비트 블록을 저장하는 데 이용될 수 있다. 10개의 암호화 라운드가 데이터 블록에서 직렬로 행해진다. 10개의 라운드 AES 연산 중 라운드 1-9에 대하여, 라운드 키 및 이전의 라운드 또는 초기 블록 데이터(라운드 1인 경우)의 결과를 이용하여 라운드 연산들을 수행하도록 AESENC 명령어가 호출된다. AESENCLAST 명령어는 마지막 라운드(본 예에서 라운드 10)를 처리하기 위해 호출된다.
AES 라운드 명령어(AESENC, AESENCLAST)의 레이턴시는 L 프로세서 사이클로 표시된다고 가정한다. 로딩, 저장 및 기타 오버헤드에 대한 사이클을 무시하면, 표 5의 예에 나타낸 10개의 AES 라운드에 대한 N_BLOCKS의 처리는, 표 5에 나타낸 순서로 처리될 경우, 약 N_BLOCKS*10*L 사이클을 소비한다. 명백히, N_Blocks의 암호화/암호 해독을 수행하는 전체 레이턴시는 개별 AES 명령어들(AESENC, AESENCLAST)의 레이턴시에 의존한다.
도 1은 범용 프로세서에서 AES 암호화 및 암호 해독을 행하는 명령어들을 포함하는 시스템의 블록도.
도 2는 도 1에 도시된 프로세서의 일 실시예의 블록도.
도 3은 본 발명의 원리에 따라 상이한 데이터 블록에 대해서는 독립적인 연산을 병렬로 수행하여 AES 암호화/암호 해독 연산의 처리량을 개선하는 방법의 일 실시예를 예시한 흐름도.
도 4는 사이클 당 하나의 AES 라운드 명령어를 디스패치하는 일례를 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
100: 시스템
101: 프로세서
102: MCH
104: 입출력(I/O) 컨트롤러 허브(ICH)
108: 메모리
106: 메모리 컨트롤러
116: 시스템 버스
본 발명의 일 실시예에서, AES 라운드 명령어의 레이턴시(L)의 효과는 감소되고, 그 결과 본 발명의 원리들에 따라, 복수의 데이터 블록을 병렬로 암호화(암호 해독)함으로써, AES 암호화/암호 해독 연산을 수행하는데 필요한 전체 레이턴시의 감소를 가져온다. 병렬 연산 모드에서, 완료될 이전 명령어를 대기하지 않고, 매 사이클마다 AES 라운드 명령어를 디스패치함으로써 상이한 블록들의 상이한 독립 암호화(암호 해독)가 병렬로 행해질 수 있다.
도 1은 범용 프로세서에서 AES 암호화 및 암호 해독을 수행하기 위한 명령어들을 포함하는 시스템(100)의 블록도이다. 시스템(100)은 프로세서(101), MCH(Memory Controller Hub) 또는 (GMCH(Graphics Memory Controller Hub))(102) 및 입출력(I/O) 컨트롤러 허브(ICH)(104)를 포함한다. MCH(102)는 프로세서(101)와 메모리(108) 사이의 통신을 제어하는 메모리 컨트롤러(106)를 포함한다. 프로세서(101) 및 MCH(102)는 시스템 버스(116)를 통해 통신한다.
프로세서(101)는 싱글 코어 Intel® 펜티엄 IV® 프로세서, 싱글 코어 Intel Celeron 프로세서, Intel® XScale 프로세서 등의 복수의 프로세서 또는 Intel® 펜티엄 D, Intel® Xeon® 프로세서, Intel® Core® 듀오 프로세서 등의 멀티-코어 프로세서 또는 임의의 다른 종류의 프로세서 중 임의의 하나일 수 있다.
메모리(108)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(Synchronized Dynamic Random Access Memory), DDR2(Double Data Rate 2) RAM 또는 RDRAM(Rambus Dynamic Random Access Memory) 또는 임의의 다른 종류의 메모리일 수 있다.
ICH(104)는 DMI(Direct Media Interface) 등의 고속 칩-투-칩 인터커넥트(114)를 이용하여 MCH(102)에 연결될 수 있다. DMI는 2개의 단일 방향성 레인(lane)을 통해 2 기가비트/초의 동시 전송 속도를 지원한다.
ICH(104)는 ICH(104)에 연결된 적어도 하나의 저장 디바이스(112)와의 통신을 제어하는 저장 I/O 컨트롤러(110)를 포함할 수 있다. 저장 디바이스는, 예컨대 디스크 드라이브, DVD(Digital Video Disk) 드라이브, 컴팩트 디스크(CD) 드라이브, RAID(Redundant Array of Independent Disk), 테이프 드라이브 또는 기타 저장 디바이스일 수 있다. ICH(104)는 SAS(Serial Attached Small Computer System Interface) 또는 SATA(Serial Advanced Technology Attachment) 등의 직렬 저장 프로토콜을 이용하여 저장 프로토콜 인터커넥트(118)를 통해 저장 디바이스(112)와 통신할 수 있다.
프로세서(101)는 AES 암호화 및 암호 해독 연산을 수행하기 위해 AES 기능(103)을 포함한다. AES 기능(103)은 메모리(108) 및/또는 저장 디바이스(112)에 저장될 수 있는 정보를 암호화 또는 암호 해독을 하는데 이용될 수 있다.
도 2는 도 1에 도시된 프로세서(101)의 일 실시예에 대한 블록도이다. 프로세서(101)는 Level 1(L1) 명령어 캐시(202)로부터 수신되는 프로세서 명령어들을 디코딩하기 위해 페치 및 디코드 유닛(206)을 포함한다. 레지스터 파일(208)에는, 프로세서 명령어들을 실행하는데 사용될 데이터가 저장될 수 있다. 일 실시예에서, 레지스터 파일(208)은 AES 라운드 명령어에 의한 사용을 위한 데이터를 저장하는 복수의 128-비트 레지스터를 포함하는데, 이는 AES 라운드 명령어에 의해 사용된다.
일 실시예에서, 레지스터 파일(208)은 스트리밍(SIMD(Single Instruction Multiple Data)) 확장(SSE) 명령어 세트를 갖는 인텔 펜티엄 MMX 프로세서에 제공되는 128-비트 MMX 레지스터와 유사한 128-비트 레지스터의 그룹이다. SIMD 프로세서에서, 데이터는 128-비트 블록에서 처리되며 하나의 128-비트 블록이 한번에 로딩된다.
페치 및 디코드 유닛(206)은 L1 명령어 캐시(202)로부터의 매크로 명령어를 페치하고, 매크로 명령어를 디코딩하고, 이들을 마이크로코드 ROM(Read Only Memory)(214)에 저장될 수 있는 마이크로 연산(μops)이라 하는 단순한 연산들로 분해한다. 파이프라인 구조의 실행 유닛(210)은 마이크로 연산들을 스케줄링하고 실행한다. 나타낸 실시예에서는, 실행 유닛(210)에서의 AES 기능(103)은 AES 라운드 명령어들의 세트에 대한 마이크로 연산을 포함한다. AES 명령어들은, 처리 준비가 된 데이터가 존재한다면, 프로세서(CPU)가 매 사이클마다 명령어를 디스패치할 수 있도록 전체적으로 파이프라인 구조로 되어 있다. 방출 유닛(212)은 실행된 명령어들의 결과를 레지스터 또는 메모리에 기입한다. AES 라운드 명령어에 의해 사용되는 라운드 키(216)는 L1 데이터 캐시(204)에 저장되고 마이크로 연산에 의한 사용을 위해 실행 유닛(210)에 로딩되어, AES 라운드 명령어들 중 어느 하나를 실행할 수 있다. 라운드 키(216)를 L1 데이터 캐시(204)에 저장하는 것은, 부채널 공격들, 예를 들어, 시스템(100)에 저장된 암호화 정보를 액세스하기 위해 라운드 키를 얻으려는 시도들로부터 라운드 키(216)를 보호한다.
페치 및 디코드 유닛(206)으로 AES 라운드 명령어를 디코딩한 후에, 실행 유닛(210)에 의한 AES 라운드 명령어의 실행은, 마이크로코드 ROM(214)에 저장될 수 있는 AES 라운드 명령어와 연관된 마이크로 연산들을 수행하는 것을 포함한다.
일 실시예에서는, 암호화 라운드, 암호 해독 라운드, 암호화 최종 라운드 및 암호 해독 최종 라운드를 수행하기 위한 개별 AES 라운드 명령어들을 포함하는 AES 명령어 세트를 제공한다. 일 실시예에서, 각각의 AES 라운드 명령어는 고유한 연산 코드(opcode)를 갖는다. 고정된 폭의 라운드 키(예를 들어, 128-비트)의 일 실시예에 대한 AES 명령어 세트의 AES 라운드 명령어들을 이하의 표 6에 나타낸다.
AES 명령어 세트는 4개의 AES 라운드 명령어들(암호화, 암호 해독, 암호화 최종 라운드, 암호 해독 최종 라운드)을 포함한다. AES 명령어 세트의 AES 라운드 명령어들은, 최종 라운드를 제외한 모든 라운드들에 사용되는 암호화 및 암호 해독 라운드 연산을 수행하기 위해 단일 라운드 연산들을 포함한다. 예를 들어, 표 6의 AESENC 단일 라운드 명령어에서, 입력 데이터는 128-비트 레지스터(xmmsrcdst)에 저장되고 라운드 키는 다른 128-비트 레지스터(Xmm)에 저장된다. 이 명령어는 128-비트 xmmsrcdst 레지스터에 저장된 입력 데이터(소스)에 대해 AES 라운드 연산을 수행하고, 라운드 연산의 실행 결과를 이용하여 128-비트 xmmsrcdst 레지스터에 저장된 입력 데이터를 덮어쓴다. 따라서, xmmsrcdst는 먼저 입력 데이터를 저장한 후에 AES 라운드 연산 결과를 저장한다.
키의 크기는 128-비트, 192-비트 또는 256-비트일 수 있다. 각각의 라운드 키가 고정된 크기(128-비트)이면, 수행될 라운드들의 수(n)는 키의 크기에 따라 1, 10, 12 또는 14일 수 있다. 10, 12, 14의 다수의 라운드 값의 수에 따라서, AES 마이크로 연산들은, 128-비트, 192-비트 또는 256-비트의 키 크기들에 대해 표준 AES 암호화 및 암호 해독를 수행할 수 있다.
다수의 블록에 동일한 키를 사용하는 경우, 각각의 라운드(키 스케줄)에 대한 라운드 키를 미리 계산하여 메모리에 저장할 수 있다(예를 들어, 라운드 키(216)를 레벨 1 데이터 캐시(204)에 저장함). 라운드 키(216)는 키에 대한 키 스케줄을 저장하기 위해 10개의 요소들을 갖는 어레이(RK)를 포함할 수 있다. AES-128 암호화를 위한 입력 키는 RK[0]에 저장되고 9개의 라운드 키들 RK[0]-RK[1]은 미리 계산된다.
또한, AES 명령어 세트는 최종 암호 해독 라운드를 위한 AES 암호 해독 명령어와 최종 암호화 라운드를 위한 AES 암호화 명령어를 포함한다. 예를 들어, 표 1의 AESENCLAST 단일 라운드 명령어에서, 입력 데이터는 128-비트 레지스터(xmmsrcdst)에 저장되고, 라운드 키는 다른 128-비트 레지스터(Xmm)에 저장된다. 이 명령어는 xmmsrcdst 레지스터에 저장된 입력 데이터(소스)에 대해 AES 라운드 연산을 수행하고, 라운드 연산의 실행 결과를 이용하여 xmmsrcdst 레지스터에 저장된 입력 데이터를 덮어쓴다. 따라서, xmmsrcdst는 먼저 입력 데이터를 저장하고, 그 후에 라운드 연산 결과를 저장한다. Xmm 레지스터는 라운드 연산을 위해 라운드 키를 저장한다.
일 실시예에서, 레지스터 파일(304)은 AES 명령어들로 사용될 수 있는 복수의 128-비트 레지스터를 갖는다. 128-비트 레지스터들은 소스 연산자(들), 라운드 키들 및 AES 명령어의 결과를 저장할 수 있다. 제1 라운드에서, AES 명령어는 암호화될 128-비트의 플레인 텍스트(plaintext) 또는 암호 해독될 128-비트의 사이퍼 텍스트(cypher text)일 수 있는 소스 연산자를 수신한다.
도 3은 본 발명의 원리들에 따라 상이한 데이터 블록들에 독립 연산들을 병렬로 수행함으로써 AES 암호화/암호 해독 연산의 처리량을 향상시키기 위한 방법의 일 실시예를 도시하는 흐름도이다.
AES 연산의 처리량은, 데이터 블록의 암호화/암호 해독 플로우를 다른 데이터 블록의 암호화/암호 해독 플로우와 병렬로 실행할 수 있게 하여 매 사이클마다 처리할 데이터를 제공하고 AES 라운드 명령어를 디스패치될 수 있게 함으로써 향상된다. 데이터 블록들은, (1) 복수의 데이터 블록에 대해 동일한 사이퍼 키를 사용하고 - 즉, 키 스케줄을 한번 생성하고, 동일한 키 스케줄을 사용하여 복수의 데이터 블록을 처리하고, (2) 전체가 파이프라인 구조인 단일 AES 라운드 명령어를 사용하여 AES 라운드를 수행하는 경우, 병렬로 처리될 수 있다. AES 라운드 명령어를 매 사이클마다 한번 디스패치하는 것은, 각각의 AES 라운드 명령어의 레이턴시가 1 사이클보다 큰 경우에도 AES 암호화/암호 해독 연산의 처리량을 증가시킨다.
일 실시예는 AES-128 암호화 연산, 즉, 10개의 AES 라운드들이 128-비트 데이터 블록과 128-비트 키를 사용하는 AES 암호화 연산을 설명한다.
이하의 표 7은 상이한 데이터 블록들에 개별 연산들을 병렬로 수행함으로써 AES 암호화의 처리량을 최대화하는데 사용될 수 있는 소프트웨어 명령어들의 일례를 나타낸다.
표 7을 참조하면, 각각의 Xmm 레지스터를 사용하는 연산들은 그 밖의 Xmm 레지스터들을 사용하는 연산들과 무관하기 때문에, AES 라운드 명령어 "AESENC"는 매 사이클마다 디스패치된다. 전술된 바와 같이, 이것은 병렬 모드 연산의 특성으로 인한 것이다. 예를 들어, ECB 모드에서, 암호화될 플레인 텍스트는 n-비트 블록들로 분할되고, 각각의 블록은 개별적으로 암호화된다 - 즉, 블록들이 다른 블록들과는 독립적으로 암호화된다. 사용된 Xmm 레지스터들의 수(본 예에서는, 8)를 명령어 레이턴시(L), 즉, 명령어를 완료하기 위한 사이클 수보다 크거나 같도록 선택하면, AES 라운드들 전체에 대해서도 매 사이클마다 AES 라운드 명령어를 디스패치할 수 있다.
블록(300)에서, 암호화/암호 해독될 복수의 데이터 블록이 복수의 레지스터(예를 들어, 복수의 128-비트 Xmm 레지스터)에 저장된다. AES의 데이터 블록 크기가 128-비트인 128-비트 레지스터들을 갖는 실시예에서, 상이한 데이터 블록이 k개의 128-비트 레지스터들 각각에 저장된다. 성능을 최대화하기 위해, 상이한 데이터 블록들을 저장하는데 사용된 레지스터들의 수는 AES 라운드 명령어의 레이턴시에 의존한다. 이는, 복수의 상이한 데이터 블록이 병렬로 처리될 수 있도록 하나의 AES 라운드 명령어가 매 사이클마다 디스패치되게 할 수 있다. 처리는 블록(302)으로 진행한다.
블록(302)에서, AES 암호화/암호 해독 연산들의 라운드 0에서 수행된 연산은 그외의 라운드들에서 수행된 연산과 상이하다. 따라서, 라운드 0에서의 연산은 k개의 128-비트 레지스터들에 저장된 k개의 상이한 데이터 블록들 각각에 대하여 순차적으로 수행된다. 처리는 블록(304)으로 진행한다.
블록(304)에서, 그 밖의 모든 라운드들(예를 들어, AES-128의 라운드 1에서 10)에 대하여 동일한 AES 라운드 명령어가 디스패치된다. 라운드와 연관된 라운드 키[RK]를 이용하여 현재의 라운드 동안 k개의 레지스터들에 저장된 k개의 상이한 데이터 블록들 각각에 대하여 사이클 당 하나의 AES 명령어가 디스패치된다. AES 라운드 명령어가 k개의 레지스터들에 저장된 k개의 상이한 데이터 블록들 각각에 대하여 디스패치된 후에, 처리는 블록(306)으로 진행한다.
블록(306)에서, AES 연산에 대한 다른 라운드가 있으면, 처리는 블록(304)으로 진행하여 다음 라운드를 처리한다. 다른 라운드가 없으면, 처리는 블록(308)으로 진행한다.
블록(308)에서, AES 연산에 대해 처리될 다른 데이터 블록들이 있으면, 처리는 블록(300)으로 진행하여 k개의 레지스터들에 다음 데이터 블록(들)을 로딩한다. 다른 데이터 블록들이 없으면, 처리는 블록(310)으로 진행하여 AES 연산의 결과를 리턴한다.
도 4는 사이클 당 하나의 AES 라운드 명령어를 디스패치하는 예를 도시한다. 도 4에 도시된 예에서, 레지스터들의 수(k)와 AES 라운드 명령어 레이턴시(L)는 모두 6이다. 도 4는 표 7에 나타내고 도 3의 블록(304)과 연관하여 논의된 "for" 루프들 중 하나에 대한 AES 명령어들의 디스패치를 도시한다. k=L=6일 때 라운드 2 동안 "for" 루프에 대해 디스패치된 명령어들은 이하의 표 8에 도시된 바와 같이 명시적으로 쓰여질 수 있다.
본 예에서, 레지스터들은 Xmm 레지스터 파일 내의 Xmm 레지스터들이고, 6개의 Xmm 레지스터들(Xmm1 내지 Xmm6으로 라벨링됨)는 6개의 상이한 데이터 블록들을 저장하는데 사용된다. 그러나, 본 발명은 Xmm 레지스터들에 한정되는 것이 아니며, AES 라운드 동안 128 비트 데이터 블록을 저장할 수 있으며 AES 라운드 명령어에 의해 엑세스가능한 임의의 레지스터가 사용될 수 있다. Xmm1을 이용하는 연산들이 그 밖의 Xmm 레지스터들(Xmm2, ..., Xmm6) 각각을 이용하는 연산들에 무관하기 때문에, AESENC 명령어가 매 사이클마다 디스패치될 수 있다. 이상적인 스케줄링 조건 하에서, 이러한 "for" 루프는 완료하는데 k+L-1(6+6-1=11)의 사이클이 걸린다.
도 3을 참조하면, L 및 k가 모두 6인 시스템에서 AESENC 명령어가 매 사이클마다 디스패치된다. (라운드 0을 제외한) 각각의 라운드 동안, 처음 6개의 명령어들은 동일한 라운드 키 RK를 이용하여 6개의 상이한 Xmm 레지스터들(Xmm1 내지 Xmm6)에 대해 연산한다. 예를 들어, AESENC 명령어가 사이클 1에서 Xmm1 및 RK[1]을 이용하여 디스패치되고 AESENC 명령어가 사이클 2에서 Xmm2 및 RK[2]를 이용하여 디스패치된다. 사이클 1에서 디스패치된 AESENC 명령어는 6 사이클 레이턴시를 갖고, 따라서 사이클 6의 종료시에 완료된다.
사이클 7에서 디스패치되는 7번째 AESENC 명령어는, 라운드 키 RK[2]와 함께 Xmm1 레지스터에 저장된 7번째 데이터 블록을 이용할 수 있는데, 이 때까지는, 사이클 1에서 라운드 키 RK[1] 및 Xmm1 레지스터에 저장된 제1 데이터 블록을 이용하여 디스패치된 AESENC 명령어가 (6 사이클 레이턴시에 기초하여) 이미 완료되었기 때문이다. 따라서, 6개의 AESENC 명령어들은, 6개의 Xmm 레지스터들 중 하나에 저장된 상이한 데이터 블록을 이용하여, 서로 병렬로 무관하게 연산할 수 있다. 따라서, 복수의 레지스터에 저장된 데이터 블록들을 사용하는 제2 AES 라운드는, 표 5에 도시된 예와 함께 이전에 논의된 바와 같이, 2개의 AES 라운드들 동안 데이터 블록들이 직렬로 처리되는 경우에서처럼, 12 사이클 후가 아니라 총 11 사이클 후에 완료된다. AESENC 명령어(또는 AESENCLAST 명령어)는 AES-128 연산에 대한 모두 10개의 AES 라운드들이 완료될 때까지 매 사이클마다 디스패치된다.
논의된 바와 같이, k개의 데이터 블록들은 병렬로 암호화될 수 있고, 여기서 k는 데이터 블록들을 저장하기 위해 이용가능한 레지스터들의 수에 따라서 선택된다. 레지스터들의 수(k)≥AES 명령어 레이턴시(L)이면, AES 명령어는 매 사이클마다 심지어 "AES 라운드들 전체에 걸쳐서" 디스패치될 수 있다 - 즉, 특정 AES 라운드 동안의 AES 라운드 명령어들 모두가, 다음의 AES 라운드 동안 AES 라운드 명령어를 디스패치하기 전에 완료될 필요는 없다.
예를 들어, 제1 레지스터가 라운드 키 RK[1]를 이용하여 AES 라운드 1을 처리하는데 사용되면, k개의 사이클이 경과할 때까지 상기 제1 레지스터는 라운드 키 RK[2]를 이용하여 AES 라운드 2를 처리하는데 사용될 수 없다. 따라서, k≥L이면, AES 명령어들이 AES 라운드 1 동안 디스패치되는 k개의 사이클이 있고, k+1 사이클에서 제1 레지스터는, AES 라운드 2 동안 라운드 키 RK[2]와 함께 처리될 데이터 블록을 저장하기 위해 이용될 수 있다.
k개의 상이한 데이터 블록들을 병렬로 처리하는 것은, XOR(Exclusive OR) 연산을 수행하는 AES 라운드 0에 대해 약 k개의 사이클들을 필요로 하고, 이에 더하여 그 밖의 NR AES 라운드들을 처리하기 위해 다른 NR*k+L-1 사이클들이 필요하다. 따라서, 처리량은 k개의 데이터 블록들 당 (NR*k+L-1) 사이클인 데이터 블록당 약 NR+(L-1)/k 사이클로 추정될 수 있다.
성능은 이용가능한 레지스터들의 수 및 AES 라운드 명령어 레이턴시만큼 제한된다. 라운드 키들(RK)은 메모리로부터 판독(레지스터-메모리 모드)되거나 또는 다른 레지스터에 로딩(레지스터-레지스터 모드)될 수 있다. 레지스터-메모리 모드는, 라운드 키가 처음 판독된 후에 제1 레벨 캐쉬에 저장된다면, 보다 높은 성능을 제공할 수 있다.
AES 라운드 명령어를 사용하지 않는 AES-128의 구현은 바이트당 약 12 사이클을 소비한다. 저장/로딩/증분 및 기타 오버헤드의 레이턴시를 무시하고, k=L=8이라고 가정하면, 직렬 연산 모드에서, AES 라운드 명령어를 사용하는 AES-128(10 라운드들) 암호화는 128 비트(16 바이트) 당 약 10*L 사이클들, 즉, 5 사이클/바이트를 소비한다. 복수의 상이한 데이터 블록을 병렬로 처리함으로써, 이전에 논의된 바와 같이, 8개의 블록들의 암호화는 NR*k+L-1을 소비한다 - 즉, 8개의 블록 당 약 72 사이클을 소비한다(0.56 주기/바이트). 따라서, 상이한 데이터 블록들에 대해 독립적인 연산들을 수행하면, 표 5와 관련하여 논의된 바와 같이, 데이터를 처리하기 위해 직렬 시퀀스의 연산들을 이용하는 경우에 비해 거의 9배 큰 성능 증가가 달성된다.
연산들을 병렬로 수행함으로써, AES 라운드 명령어의 레이턴시(L)는, 레지스터들의 수(k)가 L보다 크거나 같은 한은 "숨겨져 있다". 이는, 블록 상에서 다른 블록들과는 독립적으로 연산하는 연산 모드, 예를 들어, ECB, CCM, GCM 및 카운터를 포함하는 연산 모드를 사용하는 AES 연산들에 대한 암호화/암호 해독을 위한 AES 라운드 명령어들을 효율적으로 이용할 수 있게 한다.
본 발명의 실시예들에 수반된 방법들이 컴퓨터 이용가능 매체를 포함하는 컴퓨터 프로그램 제품으로 구현될 수도 있다는 것이 본 기술분야의 숙련자에게 명백할 것이다. 예를 들어, 이러한 컴퓨터 이용가능 매체는, CD ROM(Compact Disk Read Only Memory) 디스크 또는 종래의 ROM 디바이스들을 포함하는 리드 온리 메모리 디바이스, 또는 컴퓨터 판독가능 프로그램 코드가 저장된 컴퓨터 디스켓으로 구성될 수 있다.
본 발명의 실시예들이 구체적으로 도시되고, 그 실시예들을 참조하여 설명되었지만, 본 기술분야에서 숙련자라면, 각종 형태 변경 및 그 세부사항들이 첨부 청구범위들에 포함된 본 발명의 실시예들의 범주로부터 벗어나지 않고, 행해질 수 있음을 이해할 것이다.

Claims (18)

  1. 블록 상에서 다른 블록들과는 독립적으로 연산하는 연산 모드를 이용하여 복수의 고정 크기의 블록들 상에서 AES(Advanced Encryption Standard) 연산을 수행하는 단계
    를 포함하며,
    상기 복수의 고정 크기의 블록들 중 k개의 연속하는 블록들의 세트를 k개의 레지스터들에 저장하는 단계 - k는 AES 라운드 명령어의 레이턴시(L)보다 크거나 같으며, 상기 AES 라운드 명령어는 상기 블록에 대해 AES 라운드를 위한 AES 라운드 연산들의 시퀀스를 수행함 -; 및
    상기 k개의 블록들 각각에 대하여 사이클당 하나의 AES 라운드 명령어를 디스패치함으로써 상기 k개의 연속하는 블록들의 세트에 대해 병렬로 상기 AES 라운드 연산들의 시퀀스를 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 k개의 블록들 각각에 대한 상기 AES 라운드 명령어의 결과를 상기 k개의 레지스터들 중 하나에 저장하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    각각의 블록은 128비트를 갖는 방법.
  4. 제1항에 있어서,
    상기 레지스터는 Xmm 레지스터인 방법.
  5. 제1항에 있어서,
    상기 AES 라운드 명령어는 파이프라인 구조인(pipelined) 방법.
  6. 제1항에 있어서,
    상기 연산 모드는 ECB(Electronic Code Book), 카운터, CCM(Cipher Block Chaining Message Authentication Code) 또는 GCM(Galois Counter Mode)인 방법.
  7. 복수의 고정 크기의 블록들 중 k개의 연속하는 블록들의 세트를 k개의 레지스터들에 저장하는 레지스터 파일 - k는 AES 라운드 명령어의 레이턴시(L)보다 크거나 같으며, 상기 AES 라운드 명령어는 상기 블록에 대해 라운드를 위한 AES 라운드 연산들의 시퀀스를 수행함 -; 및
    블록 상에서 다른 블록들과는 독립적으로 연산하는 연산 모드를 이용하여 복수의 고정 크기의 블록들 상에서 AES(Advanced Encryption Standard) 연산을 수행하는 실행 유닛 - 상기 실행 유닛은 상기 k개의 블록들 각각에 대하여 사이클당 하나의 AES 라운드 명령어를 디스패치함으로써 상기 k개의 연속하는 블록들의 세트에 대해 상기 AES 라운드 연산들의 시퀀스를 병렬로 수행함 -
    을 포함하는 장치.
  8. 제7항에 있어서,
    상기 실행 유닛은 상기 k개의 블록들 각각에 대한 상기 AES 라운드 명령어의 결과를 상기 k개의 레지스터들 중 하나에 저장하는 장치.
  9. 제7항에 있어서,
    각각의 블록은 128비트를 갖는 장치.
  10. 제7항에 있어서,
    상기 레지스터는 Xmm 레지스터인 장치.
  11. 제7항에 있어서,
    상기 AES 라운드 명령어는 파이프라인 구조인(pipelined) 장치.
  12. 제7항에 있어서,
    상기 연산 모드는 ECB(Electronic Code Book), 카운터, CCM(Cipher Block Chaining Message Authentication Code) 또는 GCM(Galois Counter Mode)인 장치.
  13. 연관된 정보를 갖는 머신-액세스 가능 매체(machine-accessible medium)를 포함하는 물품으로서,
    상기 정보는, 액세스될 경우, 머신이, 블록 상에서 다른 블록들과는 독립적으로 연산하는 연산 모드를 이용하여 복수의 고정 크기의 블록들 상에서 AES(Advanced Encryption Standard) 연산을 수행하게 하며,
    상기 정보는,
    상기 복수의 고정 크기의 블록들 중 k개의 연속하는 블록들의 세트를 k개의 레지스터들에 저장하는 것 - k는 AES 라운드 명령어의 레이턴시(L)보다 크거나 같으며, 상기 AES 라운드 명령어는 상기 블록에 대해 AES 라운드를 위한 AES 라운드 연산들의 시퀀스를 수행함 -; 및
    상기 k개의 블록들 각각에 대하여 사이클당 하나의 AES 라운드 명령어를 디스패치함으로써 상기 k개의 연속하는 블록들의 세트에 대해 병렬로 상기 AES 라운드 연산들의 시퀀스를 수행하는 것
    을 포함하는 물품.
  14. 제13항에 있어서,
    상기 k개의 블록들 각각에 대한 상기 AES 라운드 명령어의 결과를 상기 k개의 레지스터들 중 하나에 저장하는 것을 더 포함하는 물품.
  15. 제13항에 있어서,
    각각의 블록은 128비트를 갖는 물품.
  16. 제13항에 있어서,
    상기 레지스터는 Xmm 레지스터인 물품.
  17. 제13항에 있어서,
    상기 AES 라운드 명령어는 파이프라인 구조인 물품.
  18. 제13항에 있어서,
    상기 연산 모드는 ECB(Electronic Code Book), 카운터, CCM(Cipher Block Chaining Message Authentication Code) 또는 GCM(Galois Counter Mode)인 물품.
KR1020090017289A 2008-02-27 2009-02-27 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치 KR101068367B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/038,071 US8194854B2 (en) 2008-02-27 2008-02-27 Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation
US12/038,071 2008-02-27

Publications (2)

Publication Number Publication Date
KR20090092735A true KR20090092735A (ko) 2009-09-01
KR101068367B1 KR101068367B1 (ko) 2011-09-28

Family

ID=40765607

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090017289A KR101068367B1 (ko) 2008-02-27 2009-02-27 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치

Country Status (5)

Country Link
US (2) US8194854B2 (ko)
EP (1) EP2096787B1 (ko)
JP (1) JP5020987B2 (ko)
KR (1) KR101068367B1 (ko)
CN (1) CN101520966B (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9916581B2 (en) * 2002-02-05 2018-03-13 Square, Inc. Back end of payment system associated with financial transactions using card readers coupled to mobile devices
US9582795B2 (en) 2002-02-05 2017-02-28 Square, Inc. Methods of transmitting information from efficient encryption card readers to mobile devices
US8467527B2 (en) * 2008-12-03 2013-06-18 Intel Corporation Efficient key derivation for end-to-end network security with traffic visibility
US8194854B2 (en) 2008-02-27 2012-06-05 Intel Corporation Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation
US8879725B2 (en) 2008-02-29 2014-11-04 Intel Corporation Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation
US8634549B2 (en) * 2008-05-07 2014-01-21 Red Hat, Inc. Ciphertext key chaining
US8396209B2 (en) 2008-05-23 2013-03-12 Red Hat, Inc. Mechanism for chained output feedback encryption
JP5500923B2 (ja) * 2008-11-27 2014-05-21 キヤノン株式会社 情報処理装置
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US8850204B2 (en) * 2009-12-23 2014-09-30 Intel Corporation Multi-band/multi-link secure key generation and delivery protocol
CN102111263A (zh) * 2011-02-21 2011-06-29 山东中孚信息产业股份有限公司 一种数据流加密的方法
CN102411683B (zh) * 2011-08-15 2014-04-02 复旦大学 一种适用于嵌入式系统的基于高速缓存的aes加速器
WO2013080976A1 (ja) 2011-11-28 2013-06-06 日本電気株式会社 暗号化処理回路及び復号処理回路、その方法並びにそのプログラム
CN102664729B (zh) * 2012-04-28 2014-12-31 中山大学 一种基于fpga的aes加解密网络通讯装置及其实现方法
US9158499B2 (en) * 2012-04-30 2015-10-13 Freescale Semiconductor, Inc Cryptographic processing with random number generator checking
US9176838B2 (en) 2012-10-19 2015-11-03 Intel Corporation Encrypted data inspection in a network environment
US9264222B2 (en) * 2013-02-28 2016-02-16 Apple Inc. Precomputing internal AES states in counter mode to protect keys used in AES computations
US9361106B2 (en) * 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US9513913B2 (en) 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9515818B2 (en) 2014-09-16 2016-12-06 Apple Inc. Multi-block cryptographic operation
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
CN104284208B (zh) * 2014-10-23 2017-11-10 航天数字传媒有限公司 通过aes‑cbc算法进行并行加密的方法及系统
CN105743636A (zh) * 2014-12-11 2016-07-06 上海华虹集成电路有限责任公司 实现密码算法的方法
US10341089B2 (en) * 2015-04-20 2019-07-02 Microsemi Corp. - Security Solutions High-speed AES with transformed keys
US9779262B2 (en) * 2015-04-20 2017-10-03 Qualcomm Incorporated Apparatus and method to decrypt file segments in parallel
US9773432B2 (en) 2015-06-27 2017-09-26 Intel Corporation Lightweight cryptographic engine
US10061941B2 (en) 2015-08-19 2018-08-28 Altera Corporation Systems and methods for multiport to multiport cryptography
CN105356996B (zh) * 2015-12-14 2018-11-09 联想(北京)有限公司 一种密文处理方法、电子设备及密文处理装置
CN107679409B (zh) * 2017-09-29 2021-02-23 深圳大学 一种数据加密的加速方法和系统
CN108616351B (zh) * 2018-03-26 2020-09-18 山东大学 一种全动态加密解密方法及加密解密装置
CN109687954B (zh) * 2018-12-25 2022-05-13 贵州华芯通半导体技术有限公司 用于算法加速的方法和装置
CN109600217A (zh) * 2019-01-18 2019-04-09 江苏实达迪美数据处理有限公司 在并行操作模式中优化sm4加密和解密的方法及处理器
CN110336658B (zh) * 2019-07-01 2023-03-21 武汉能钠智能装备技术股份有限公司 基于aes算法的加密方法、用户设备、存储介质及装置
KR20210007068A (ko) 2019-07-09 2021-01-20 삼성디스플레이 주식회사 표시 장치 및 그 구동 방법
US10972256B2 (en) * 2019-07-18 2021-04-06 Ante Deng Architectural secure system for digital file in cyberspace
CN111324383B (zh) * 2020-02-28 2022-05-10 西安微电子技术研究所 一种基于risc-v指令扩展的安全协处理器结构
KR20210116834A (ko) 2020-03-17 2021-09-28 삼성디스플레이 주식회사 표시 장치 및 그 구동 방법
US11296876B1 (en) 2020-09-11 2022-04-05 Rockwell Collins, Inc. Parallel cross-domain guard engines with sequential cryptographic controls
IT202100016910A1 (it) * 2021-06-28 2022-12-28 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
CN113282947A (zh) * 2021-07-21 2021-08-20 杭州安恒信息技术股份有限公司 一种基于sm4算法的数据加密方法、装置及计算机平台
CN114495474B (zh) * 2022-02-16 2022-11-22 青岛克莱玛物联技术有限公司 一种无线遥控装置
CN116186747A (zh) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 自适应哈希加密方法、非易失性可读存储介质及电子设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3864675B2 (ja) * 2000-03-09 2007-01-10 株式会社日立製作所 共通鍵暗号装置
KR20020087331A (ko) * 2001-05-14 2002-11-22 최병윤 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
US7289524B2 (en) 2001-10-04 2007-10-30 Bbn Technologies Corp. Execution unit for a network processor
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
WO2004112309A1 (en) * 2003-06-16 2004-12-23 Electronics And Telecommunications Research Institue Rijndael block cipher apparatus and encryption/decryption method thereof
US7697681B2 (en) * 2004-02-06 2010-04-13 Nortel Networks Limited Parallelizable integrity-aware encryption technique
US20060023875A1 (en) * 2004-07-30 2006-02-02 Graunke Gary L Enhanced stream cipher combining function
CN101147182B (zh) 2005-03-31 2010-09-01 松下电器产业株式会社 数据加密装置及数据加密方法
JP4890976B2 (ja) * 2005-08-31 2012-03-07 キヤノン株式会社 暗号処理装置
EP1955473A1 (en) 2005-11-23 2008-08-13 Koninklijke Philips Electronics N.V. Mutli-lane high-speed encryption and decryption
US8036379B2 (en) * 2006-03-15 2011-10-11 Microsoft Corporation Cryptographic processing
US7428306B2 (en) * 2006-04-18 2008-09-23 International Business Machines Corporation Encryption apparatus and method for providing an encrypted file system
KR100922728B1 (ko) * 2006-12-05 2009-10-22 한국전자통신연구원 Aes 암복호화 장치 및 암복호화 방법
US8036377B1 (en) * 2006-12-12 2011-10-11 Marvell International Ltd. Method and apparatus of high speed encryption and decryption
CN101114903B (zh) * 2007-03-05 2011-10-26 中兴通讯股份有限公司 一种吉比特无源光网络系统中高级加密标准加密装置及其实现方法
US7752592B2 (en) * 2007-10-10 2010-07-06 International Business Machines Corporation Scheduler design to optimize system performance using configurable acceleration engines
US8194854B2 (en) 2008-02-27 2012-06-05 Intel Corporation Method and apparatus for optimizing advanced encryption standard (AES) encryption and decryption in parallel modes of operation

Also Published As

Publication number Publication date
EP2096787A3 (en) 2010-12-01
US20090214026A1 (en) 2009-08-27
JP5020987B2 (ja) 2012-09-05
EP2096787B1 (en) 2015-09-23
EP2096787A2 (en) 2009-09-02
KR101068367B1 (ko) 2011-09-28
CN101520966B (zh) 2013-06-12
US20120224687A1 (en) 2012-09-06
JP2009205161A (ja) 2009-09-10
US8600049B2 (en) 2013-12-03
US8194854B2 (en) 2012-06-05
CN101520966A (zh) 2009-09-02

Similar Documents

Publication Publication Date Title
KR101068367B1 (ko) 병렬 연산 모드에서 aes 암호화 및 암호 해독을 최적화하는 방법 및 장치
JP6592804B2 (ja) 新暗号規格(aes)向けの柔軟なアーキテクチャおよび命令
EP2096786B1 (en) Combining instructions including an instruction that performs a sequence of transformations to isolate one transformation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140829

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150827

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160831

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 9