KR20130076834A - 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는 암호 해독 수행 - Google Patents

단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는 암호 해독 수행 Download PDF

Info

Publication number
KR20130076834A
KR20130076834A KR1020130056494A KR20130056494A KR20130076834A KR 20130076834 A KR20130076834 A KR 20130076834A KR 1020130056494 A KR1020130056494 A KR 1020130056494A KR 20130056494 A KR20130056494 A KR 20130056494A KR 20130076834 A KR20130076834 A KR 20130076834A
Authority
KR
South Korea
Prior art keywords
value
operand
result
instruction
encrypted
Prior art date
Application number
KR1020130056494A
Other languages
English (en)
Other versions
KR101394710B1 (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 KR20130076834A publication Critical patent/KR20130076834A/ko
Application granted granted Critical
Publication of KR101394710B1 publication Critical patent/KR101394710B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

머신 판독 가능 매체(machine-readable medium)는 머신에 의해 실행되었을 때 머신이 방법을 수행하도록 하는 명령어를 저장할 수 있다. 방법은 결과를 생성하기 위해 명령어의 제1 피연산자와 명령어의 제2 피연산자를 결합하는 단계를 포함할 수 있다. 암호화된 결과를 생성하기 위해 결과는 AES(Advanced Encryption Standard) 알고리즘에 따라 키를 이용하여 암호화될 수 있다. 방법은 암호화된 결과를 명령어의 제1 피연산자의 위치에 놓는 단계를 포함할 수도 있다.

Description

단일 명령어를 이용한 다수 모드에서의 AES 암호화 또는 암호 해독 수행{PERFORMING AES ENCRYPTION OR DECRYPTION IN MULTIPLE MODES WITH A SINGLE INSTRUCTION}
본 발명의 구현은 일반적으로 프로세서들에 관한 것으로, 특히 프로세서들이 AES(Advanced Encryption Standard) 암호화 또는 암호 해독을 수행하게 하기 위한 명령어들에 관한 것이다.
AES는 NIST(National Institute of Standards and Technology)로부터의 개선된 암호화 표준으로서, FIPS 공보 197에 정의되어 있다. AES는 가변 키 사이즈를 가질 수 있다. 3개의 허용가능한 키 사이즈: 128 비트, 192 비트 및 256 비트가 존재한다. AES 암호화는 128 비트 평문 입력 및 키를 취하고 나서, 128 비트의 암호문(예를 들어, AES 암호화된 평문) 출력을 생성한다. 마찬가지로, AES 암호 해독은 128 비트 암호문 및 키를 취하여 128 비트의 평문을 생성하는 반대 동작을 수행한다.
AES는 다수의 동작 모드에서 사용될 수 있다. 더욱 일반적인 모드들 중 하나는 소위 CBC(Cipher-Block Chaining) 모드이다. 약간 덜 일반적인 모드는 소위 ECB(Electronic Codebook) 모드이다. ECB와 개념적으로 유사한, 새로 생긴 소위 카운터 모드(Counter mode; CTR) 등의 다른 모드들도 가능하다.
컴퓨팅 시스템들에서, AES 암호화 및/또는 암호 해독에 전용인 프로세서를 위한 명령어 또는 명령어들을 가지는 것이 바람직할 수 있다.
본 발명의 목적은 프로세서들이 AES 암호화 또는 암호 해독을 수행하게 하기 위한 명령어들을 제공하는 것이다.
본 발명의 머신 판독 가능 매체에 따르면, 명령어가 저장된 머신 판독 가능 매체(machine-readable medium)로서, 명령어는 머신에 의해 실행되었을 때, 머신이,
결과를 생성하기 위해 명령어의 제1 피연산자와 명령어의 제2 피연산자를 결합하는 단계;
암호화된 결과를 생성하기 위해 AES(Advanced Encryption Standard) 알고리즘에 따라 키를 이용하여 결과를 암호화하는 단계; 및
암호화된 결과를 명령어의 제1 피연산자의 위치에 놓는 단계
를 포함하는 방법을 수행하도록 하는 머신 판독 가능 매체가 제공된다.
본 발명의 프로세서에 따르면, 암호화를 수행하는 프로세서로서,
결합된 결과를 생성하기 위해, 평문값(plaintext value)을 제2의 값과 논리적으로 결합하고, 암호화된 결과를 생성하기 위해 AES 알고리즘과 키를 사용하여 결합된 결과를 암호화하는 제1 로직을 포함하는 암호화 수행 프로세서가 제공된다.
본 발명의 데이터 암호화 시스템에 따르면, 데이터를 암호화하기 위한 시스템으로서,
적어도 두 개의 모드에서 데이터를 암호화할 수 있는 두 개의 피연산자를 갖는 AES 암호화 명령어를 저장하기 위한 메모리; 및
AES 암호화 명령어를 실행하는 프로세서
를 포함하는 데이터 암호화 시스템이 제공된다.
본 발명의 데이터 암호 해독 시스템에 따르면, 데이터를 암호 해독하기 위한 시스템으로서,
적어도 두 개의 모드에서 데이터를 암호 해독할 수 있는 두 개의 피연산자를 갖는 AES 암호 해독 명령어를 저장하는 메모리; 및
AES 암호 해독 명령어를 실행하기 위한 프로세서
를 포함하는 데이터 암호 해독 시스템이 제공된다.
본 발명에 따르면, AES 암호화 또는 암호 해독을 수행하게 하기 위한 명령어들이 제공된다.
도 1은 몇몇 구현들에 따른 컴퓨터 시스템의 예를 도시하는 도면.
도 2는 몇몇 구현들에 따른 프로세서의 레지스터 파일들을 도시하는 도면.
도 3은 ECB 모드에서 사용되는 AES 암호화 명령어를 개념적으로 도시하는 도면.
도 4는 ECB 모드에서 AES 암호화 명령어를 사용하기 위한 코드예를 도시하는 도면.
도 5는 CBC 모드에서 사용되는 AES 암호화 명령어를 개념적으로 도시하는 도면.
도 6은 CBC 모드에서 사용되는 2개의 연쇄된 AES 암호화 명령어들을 개념적으로 도시하는 도면.
도 7은 CBC 모드에서 AES 암호화 명령어를 사용하기 위한 코드예를 도시하는 도면.
도 8은 CTR 모드에서 사용되는 AES 암호화 명령어를 개념적으로 도시하는 도면.
도 9는 CTR 모드에서 AES 암호화 명령어를 사용하기 위한 코드예를 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
121: 디스플레이 디바이스
122: 입력 디바이스
123: 커서 제어
124: 하드 카피 디바이스
190: 통신 디바이스
본 명세서의 일부에 포함되고 그것을 구성하는 첨부 도면은 발명의 원리와 일치하는 하나 이상의 구현들을 도시하고, 기술과 함께 그러한 구현들을 설명할 것이다. 도면들은 반드시 치수에 맞게 그려질 필요는 없고, 대신 발명의 원리를 도시할 때 강조된다.
이하의 상세한 설명은 첨부 도면을 참고한다. 상이한 도면에서 동일하거나 유사한 요소들을 확인하기 위해 동일한 참조 부호들을 사용할 수 있다. 이하의 설명에서, 본 발명의 각종 양태의 완전한 이해를 제공하기 위해, 제한이 아니라 설명을 목적으로, 특별한 구조, 아키텍쳐, 인터페이스, 기술 등과 같은 특정 상세들이 개시된다. 그러나, 본 개시물의 이점을 갖는 본 기술 분야의 당업자들에게 본 발명의 다양한 양태들이 이런 특정 상세들로부터 벗어나는 다른 예들로 실현될 수 있음이 명확하다. 특정 예에서, 불필요한 상세에 의해 본 발명의 설명이 모호해지지 않도록, 잘 알려진 디바이스들, 회로들, 및 방법들의 설명은 생략된다.
개관
본 출원은 AES 암호화 및/또는 암호 해독을 수행하기 위한 프로세서 명령어들에 포함하는 방법, 장치 및 시스템의 실시예들을 기술한다.
Figure pat00001
xmmsource/memory는 암호화의 경우에 사용되는 평문을 공급하고 xmmdestination은 암호문이 될 것이다. 암호 해독의 경우 역할이 반대로 되고, 소스는 암호문이고 목적지는 평문이다. 몇몇 구현들에서, 양 피연산자(operand)는 더 후술되는 바와 같이, 암호화 또는 암호 해독을 하기 위해 사용될 수 있다. 양자의 경우에, 하나 이상의 128 비트 잠재 레지스터들(이하에 더 상세히 설명되는 바와 같이 XMM0 & XMM1)의 사용을 통해 AESENCRYPT 및/또는 AESDECRYPT 명령어에 암호화 키가 공급된다.
이후의 많은 설명은 암호화 명령어, AESENCRYPT에 초점을 맞출 것이지만, 암호화 분야의 당업자들은 암호 해독 명령어, AESDECRYPT도 암호화와 유사한 방식으로 대체되거나 및/또는 사용될 수 있음을 이해할 것이다. 순전히 설명의 명확화와 용이화를 위해 주로 AESENCRYPT가 설명되지만, 이는 명령어들 중 하나가 다른 것보다 더 중요함을 의미하는 것은 아니다.
컴퓨터 시스템
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템(100)의 예를 도시한다. 컴퓨터 시스템(100)은 정보를 전달하기 위한 상호접속(101)을 포함한다. 상호접속(101)은 멀티 드롭 버스, 하나 이상의 지점간 상호접속, 또는 그 둘의 임의의 조합뿐만 아니라, 임의의 다른 통신 하드웨어 및/또는 소프트웨어를 포함할 수 있다.
도 1은 상호접속(101)과 연결되어 정보를 처리하기 위한 프로세서(109)를 도시한다. 프로세서(109)는 CISC 또는 RISC 타입 아키텍쳐를 포함하는 임의의 아키텍쳐 타입의 중앙 처리 유닛을 나타낸다.
컴퓨터 시스템(100)은 상호접속(101)과 연결되어 프로세서(109)에 의해 실행되는 명령어들 및 정보를 저장하는 RAM 또는 다른 다이나믹 저장 디바이스(메인 메모리(104)라 칭해짐)를 더 포함한다. 메인 메모리(104)는 또한 프로세서(109)에 의한 명령어들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하기 위해 사용될 수 있다.
컴퓨터 시스템(100)은 또한 상호접속(101)에 연결되어 프로세서(109)를 위한 스태틱 정보 및 명령어들을 저장하는 ROM(106) 및/또는 다른 스태틱 저장 디바이스를 포함할 수 있다. 데이터 저장 디바이스(107)는 상호접속(101)에 연결되어 정보 및 명령어들을 저장한다.
도 1은 또한 실행 유닛(130), 레지스터 파일(150), 캐시(160), 디코더(165) 및 내부 상호접속(170)을 포함하는 프로세서(109)를 도시한다. 물론, 프로세서(109)는 본 발명을 이해하는데 필요하지 않은 부가적인 회로를 포함한다.
디코더(165)는 프로세서(109)에 의해 수신되는 명령어들을 디코딩하기 위한 것이고, 실행 유닛(130)은 프로세서(109)에 의해 수신되는 명령어들을 실행하기 위한 것이다. 범용의 프로세서들에서 일반적으로 구현되는 명령어들을 인식하는 것 외에, 디코더(165) 및 실행 유닛(130)은 본원에 기재된 바와 같이, AES 암호화 또는 암호 해독(AESENCRYPT 또는 AESDECRYPT) 동작들을 수행하기 위한 명령어들을 인식한다. 디코더(165) 및 실행 유닛(130)은 패킹되거나(packed) 패킹되지 않은(unpacked) 데이터 양자에 대해 AESENCRYPT 또는 AESDECRYPT 동작들을 수행하기 위한 명령어들을 인식한다.
실행 유닛(130)은 내부 상호접속(170)에 의해 레지스터 파일(150)에 연결된다. 다시, 내부 상호접속(170)은 반드시 멀티 드롭 버스일 필요는 없고, 대안의 실시예들에서, 지점간 상호접속 또는 다른 타입의 통신 경로일 수 있다.
레지스터 파일(들)(150)은 데이터를 포함하는 정보를 저장하는 프로세서(109)의 저장 영역을 나타낸다. 본 발명의 일 양태는 패킹되거나 패킹되지 않은 데이터에 대해 AESENCRYPT 또는 AESDECRYPT 동작들을 수행하기 위한 기술된 명령어 실시예들이라는 것으로 이해된다. 본 발명의 이러한 양태에 따르면, 데이터 저장을 위해 사용되는 저장 영역은 중요하지 않다. 그러나, 레지스터 파일(150)의 실시예들이 도 2를 참조하여 후술된다.
실행 유닛(130)은 캐시(160) 및 디코더(165)에 연결된다. 캐시(160)는 예를 들어 메인 메모리(104)로부터의 데이터 및/또는 제어 신호들을 캐싱하기 위해 이용된다. 디코더(165)는 프로세서(109)에 의해 수신되는 명령어들을 제어 신호들 및/또는 마이크로코드 엔트리 포인트(microcode entry point)들로 디코딩하기 위해 사용된다. 이러한 제어 신호들 및/또는 마이크로코드 엔트리 포인트들은 디코더(165)로부터 실행 유닛(130)으로 전달될 수 있다.
이러한 제어 신호들 및/또는 마이크로코드 엔트리 포인트들에 응답하여, 실행 유닛(130)은 적절한 동작들을 수행한다. 예를 들어, AESENCRYPT 또는 AESDECRYPT 명령어가 수신되면, 디코더(165)는 실행 유닛(130)이 요구되는 비트 암호화 또는 암호 해독을 수행하게 한다. 적어도 몇몇 실시예들에 대해, 실행 유닛(130)은 하나 이상의 키를 이용하여 128 비트의 평문 또는 암호문을 암호화 또는 암호 해독할 수 있다(예를 들어 암호 회로(145)를 참고).
디코더(165)는 임의 수의 상이한 메카니즘(예를 들어, 룩업 테이블, 하드웨어 구현, PLA 등)을 이용하여 구현될 수 있다. 따라서, 디코더(165) 및 실행 유닛(130)에 의한 각종 명령어들의 실행이 본원에서는 일련의 if/then 문(statement)으로 표현될 수 있지만, 명령어의 실행은 이러한 if/then 문들의 연속적인 처리를 요구하지 않는 것으로 이해된다. 오히려, 이러한 if/then 처리를 논리적으로 수행하기 위한 임의의 메카니즘이 본 발명의 범위 내에 있는 것으로 여겨진다.
도 1은 컴퓨터 시스템(100)에 연결될 수 있는 데이터 저장 디바이스(107)(예를 들어, 자기 디스크, 광 디스크, 및/또는 기타 머신 판독가능 매체)를 부가적으로 도시한다. 또한, 데이터 저장 디바이스(107)는 프로세서(109)가 실행하기 위한 코드(195)를 포함하도록 도시된다. 코드(195)는 AESENCRYPT 또는 AESDECRYPT 명령어(142)에 대한 하나 이상의 실시예들을 포함할 수 있고, 임의의 수의 보안-관련 목적들을 위해 프로세서(109)가 AESENCRYPT 또는 AESDECRYPT 명령어(들)(142)을 이용하여 비트 AES 암호화 또는 암호 해독을 수행하도록 기입될 수 있다.
컴퓨터 시스템(100)은 컴퓨터 사용자에 정보를 디스플레이하기 위한 디스플레이 디바이스(121)에 상호접속(101)을 통하여 연결될 수도 있다. 디스플레이 디바이스(121)는 프레임 버퍼, 특화된 그래픽 렌더링 디바이스들, 액정 디스플레이(liquid crystal display; LCD), 및/또는 평면 디스플레이를 포함할 수 있다.
문자 숫자식(alphanumeric) 및 다른 키들을 포함하는 입력 디바이스(122)는, 프로세서(109)에 정보 및 커맨드 선택들을 전달하기 위해 상호접속(101)에 연결될 수 있다. 사용자 입력 디바이스의 다른 타입은, 프로세서(109)에 방향 정보 및 커맨드 선택들을 전달하고, 디스플레이 디바이스(121) 상에서 커서 움직임을 제어하기 위해, 마우스, 트랙볼, 펜, 터치 스크린 또는 커서 방향 키들과 같은 커서 제어(123)이다. 이러한 입력 디바이스는 전형적으로 두 개의 축들, 제1 축(예를 들어, x) 및 제2 축(예를 들어, y)에서 두 개의 자유도들을 갖고, 그것은 디바이스가 평면에서의 위치들을 구체화하도록 한다. 그러나, 이러한 발명은 단지 두 개의 자유도만을 갖는 입력 디바이스들로 한정되지 않아야 한다.
상호접속(101)에 연결될 수 있는 다른 디바이스는 인쇄 명령어들, 데이터, 또는, 종이, 필름, 또는 유사한 매체 타입들과 같은 매체 상의 다른 정보를 위해 이용될 수 있는 하드 카피 디바이스(hard copy device)(124)이다. 부가적으로, 컴퓨터 시스템(100)은 정보를 기록하기 위해 마이크로폰에 연결된 오디오 디지털화 장치와 같은, 음향 기록 및/또는 재생(125)을 위한 디바이스에 연결될 수 있다. 또한, 디바이스(125)는 디지털화된 음향들을 재생하기 위해, D/A(digital to analog) 변환기에 연결된 스피커를 포함할 수 있다.
컴퓨터 시스템(100)은 컴퓨터 네트워크(예를 들어, LAN)의 단말기일 수 있다. 컴퓨터 시스템(100)은 그 때 컴퓨터 네트워크의 컴퓨터 서브시스템일 것이다. 컴퓨터 시스템(100)은 영상 디지털화 디바이스(video digitizing device)(126) 및/또는 통신 디바이스(190)(예를 들어, 외부 디바이스 또는 네트워크와의 통신들을 제공하는, 직렬 통신 칩, 무선 인터페이스, 이더넷 칩 또는 모뎀)를 선택적으로 포함한다. 영상 디지털화 디바이스(126)는 컴퓨터 네트워크 상의 다른 디바이스들에 전송될 수 있는 영상 이미지들을 캡쳐하기 위해 이용될 수 있다.
적어도 하나의 실시예에서, 프로세서(109)는 캘리포니아주, 산타클라라의 인텔사에 의해 제조된 기존의 프로세서들(예를 들어, 인텔® 펜티엄® 프로세서, 인텔® 펜티엄® 프로 프로세서, 인텔® 펜티엄® Ⅱ 프로세서, 인텔® 펜티엄® Ⅲ 프로세서, 인텔® 펜티엄® 4 프로세서, 인텔® 이테늄® 프로세서, 인텔® 이테늄® 2 프로세서, 또는 인텔® 코어TM 듀오 프로세서)에 의해 이용된 명령어 집합과 호환성이 있는 명령어 집합을 지원한다. 결과로서, 프로세서(109)는 본 발명의 동작들에 부가적으로 기존의 프로세서 동작들을 지원할 수 있다. 프로세서(109)는 하나 이상의 프로세서 기술들로 제조하기에 적당할 수 있고, 충분히 상세하게 머신 판독가능한 매체로 대표될 수 있음으로써, 상기 제조를 용이하게 하기에 적당할 수도 있다. 본 발명은 x86 기반의 명령어 집합에 포함되는 것으로서 하기에 설명되지만, 대안적인 실시예들은 다른 명령어 집합들에 본 발명을 포함할 수 있다. 예로서, 본 발명은 x86 기반의 명령어 집합 이외의 명령어 집합을 이용하여 64-비트 프로세서에 내장될 수 있다.
도 2는 본 발명의 하나의 대안적인 실시예에 따른 프로세서의 레지스터 파일을 도시한다. 레지스터 파일(150)은 제어/상태 정보, 정수 데이터, 부동 소수점 데이터(floating point data) 및 패킹된 데이터를 포함하는 정보를 저장하기 위해 이용될 수 있다. 도 2에 나타낸 실시예에서, 레지스터 파일(150)은 정수 레지스터들(201), 레지스터들(209), 상태 레지스터들(208), 확장 레지스터들(210), 및 명령어 포인터 레지스터(211)를 포함한다. 상태 레지스터들(208), 명령어 포인터 레지스터(211), 정수 레지스터들(201), 레지스터들(209)은 모두 내부 상호접속(170)에 연결된다. 부가적으로, 확장 레지스터들(210)도 내부 상호접속(170)에 연결된다. 내부 상호접속(170)은 멀티-드롭 버스일 수 있지만, 반드시 그러할 필요는 없다. 내부 상호접속(170)은 대신에 지점간 상호접속을 포함하는 통신 경로의 임의의 다른 타입일 수 있다.
적어도 하나의 실시예로서, 확장 레지스터들(210)은 패킹된 정수 데이터 및 패킹된 부동 소수점 데이터 둘 다에 이용된다. 대안적인 실시예들로서, 확장 레지스터들(210)은 스칼라 데이터, 패킹된 불린(Boolean) 데이터, 패킹된 정수 데이터 및/또는 패킹된 부동 소수점 데이터에 이용될 수 있다. 물론, 대안적인 실시예들은 본 발명의 광범위한 범위에서 벗어남 없이, 소정의 레지스터들의 집합들, 각각의 집합에서의 소정의 레지스터들 또는 각각의 레지스터에서의 소정의 데이터 저장 비트들을 포함하도록 구현될 수 있다.
적어도 하나의 실시예로서, 정수 레지스터들(201)은 32 비트들을 저장하도록 구현되고, 레지스터들(209)은 80 비트들(80 비트들 모두는 부동 소수점 데이터를 저장하는데 이용되고, 단지 64 비트들만이 패킹된 데이터에 이용된다)을 저장하도록 구현되고, 확장 레지스터들(210)은 128 비트들을 저장하도록 구현된다. 부가적으로, 확장 레지스터들(210)은 8개의 레지스터들, XR0(213a)에서 XR7(213h)을 포함할 수 있다. XR0(213a), XR1(213b) 및 XR2(213c)는 레지스터들(210)내의 개별적인 레지스터들의 예들이다. 예로서, 128-비트의 확장 레지스터들(210)은 AESENCRYPT 명령어에 대한 피연산자(operand)들 중 하나 또는 둘 다를 제공하는데 이용될 수 있고, AESENCRYPT 명령어에 의해 이용된 암시적(implicit) 레지스터들(예들 들어, XMM0 및 XMM1) 중 하나 또는 둘 다를 제공하는데 이용될 수 있다.
다른 실시예로서, 정수 레지스터들(201) 각각은 64 비트들을 포함하고, 확장 레지스터들(210) 각각은 64 비트들을 포함하고 확장 레지스터들(210)은 16개의 레지스터들을 포함한다. 하나의 실시예로서, 확장 레지스터들(210) 중 2개의 레지스터들은 한 쌍으로서 동작될 수 있다. 또 다른 대안적인 실시예로서, 확장 레지스터들(210)은 32개의 레지스터들을 포함한다.
< AES 암호화 및/또는 암호 해독 동작(들) >
도 3은 ECB 모드에 이용되는 AES 암호화 명령어(AESENCRYPT Arg1, Arg2)(310)를 개념적으로 도시한다. 나타낸 바와 같이, AESENCRYPT(310)는 2개의 피연산자들을 갖고, 그들 중 하나인 Arg2는 암호화될 평문(plaintext)을 공급한다. 암호화된 암호문(ciphertext)은 AESENCRYPT(310)의 Arg1에 기입된다. 암호화 키는 하나 이상의 암시적 128 비트 레지스터들 XMM0 및 XMM1으로부터 공급된다. 예로서, 암호화 키가 128 비트의 길이라면, 그것은 레지스터들 중 하나인, XMM0에 의해 공급될 수 있다. 그러한 경우에, 다른 레지스터 XMM1은 도 4와 관련하여 설명될 것과 같이, 다른 용량(capacity)에서 이용될 수 있다.
도 3에서 알 수 있는 바와 같이, AESENCRYPT(310)는 키를 이용하여 Arg2로부터 평문을 암호화함으로써 ECB 모드에서 이용된다. AESENCRYPT(310)가 어떤 모드(예를 들면, ECB, CBC 등)에서 동작하는지를 결정하는 하나의 스킴은 모드를 결정하기 위해 피연산자들을 사용하는 것이다. 하나의 구현에서, AESENCRYPT(310)는 키를 이용하여 결과를 암호화하기 전에, 그의 피연산자들인, Arg1 및 Arg2를 배타적 논리합(exclusive OR; XOR)한다. 그러한 스킴은 도 4와 관련하여 추후 상세히 설명될 것이고, AESENCRYPT(310)에 대한 하나 또는 두 개의 입력들을 인에이블한다. 도 3에 나타낸 바와 같은 ECB 모드의 Arg2와 같이, 하나의 입력만을 원한다면, 다른 피연산자 Arg1은 0으로 설정되어 AESENCRYPT(310)에 의한 XOR 연산은 키를 이용한 암호화에 대해, 제1 피연산자인, Arg2만을 산출한다. 이러한 XOR 스킴이 어떻게 CBC 및 CTR 모드에 이용될 수 있는지가 도 5 내지 도 9와 관련하여 추후 설명될 것이다.
AESENCRYPT(310)가 어떤 모드에서 동작하는지를 결정하기 위한 (나타내지 않은) 다른 스킴은, 두 개의 피연산자들, Arg1 및 Arg2에 부가적으로, AESENCRYPT(310) 명령어에 인접 바이트(immediate byte)를 적용하는 것일 수 있다. 이러한 제2 스킴은, 피연산자들이 XOR된 제1의 경우와는 대조적으로, 인접 바이트의 컨텐츠에 기초하여 AESENCRYPT(310)의 피연산자 중 하나 또는 둘 다를 이용하는 방법 및/또는 이용 여부를 구체화할 수 있다. 다수의 상이한 모드(예를 들어, ECB, CBC, CTR 등)에서 이용될 AESENCRYPT(310)(또는 AESDECRYPT)와 같은, 단일의 2 피연산자 명령어를 인에이블하기 위해, 이 2가지 외에 다른 스킴들이 가능하고 또한 고려된다.
도 4는 ECB 모드에서 AESENCRYPT(310)를 사용하기 위한 코드예(예를 들어, 프로세서(190)에 의해 실행될 때 메소드를 구성하는 코드)(410)를 도시하고 있다. 먼저 암호화 키가 암시적 레지스터들 중 하나인 XMM0 내로 (MOV 명령어 또는 이와 유사한 명령어를 통해) 로드된다. 그 다음, AES 암호화하는 평문의 128-비트 블록들의 수를 설정하기 위해 다른 레지스터 ECX 내로 (MOV 명령어 또는 이와 유사한 명령어를 통해) 값(예를 들어, 16)이 로드될 수 있다. 128 비트에 의해 증배된 이 값은 코드(410)에 의해 암호화될 평문의 총 길이를 구체화할 수 있다. 이러한 초기화 후에, AESENCRYPT(310)를 포함하는 루프가 ECX 횟수(ECX times)로 실행될 수 있다.
그 루프 내에서, 제2 암시적 레지스터 XMM1이 0의 값을 로드함으로써 ECB 모드를 위해 클리어된다. 전술한 바와 같이, 제2 피연산자와 AESENCRYPT(310)에 의해 XOR될 때 이 0의 값은 ECB 모드에서 동작하는 원하는 결과인 제2 피연산자를 생성한다. 다음 명령어로 가면, AESENCRYPT(310)는 Plainmemory[ECX] 내의 평문을 취하고, 그 평문을 XMMO 내의 키로 암호화하고, 그 결과를 제2 암시적 레지스터 XMM1 내로 기입한다. 그 다음, XMM1 내의 암호문은 Ciphermemory[ECX]에 저장되고, ECX 내의 루프값은 루프의 시작부로 이동하기 전에 감소된다.
다음 루프에서, XMM1은 이전의 128 비트에 대한 암호화된 결과가 다시 클리어된다. 이러한 방식으로, AESENCRYPT(310)는 XMMO 내의 키에 의해 암호화될 ECX 내의 감소된 값에 대한 Plainmemory[ECX]의 단일 입력을 갖는다. 코드(410)의 루프 실행은, ECX 내로 로드된 초기값에 의해 특정된 평문의 모든 블록이 ECB 모드에서 AES 암호화될 때까지 계속할 수 있다.
도 5는 CBC 모드에서 사용되는 AES 암호화 명령어(AESENCRYPT Arg1,Arg2)(310)를 개념적으로 도시하고 있다. 도시된 바와 같이, AESENCRYPT(310)는 2개의 피연산자를 가지며, 이들 중 하나인 Arg2는 암호화될 평문을 공급한다. CBC 모드에서, 다른 피연산자인 Arg1은 먼저 암호화된 블록으로부터의 소위 "오래된(old)" 암호문을 제공하고, 이것은 암호화 전에 AESENCRYPT(310)에 의해 평문과 XOR된다. 암호화 키는 암시적 128-비트 레지스터들 XMMO 및 XMM1 중 하나 이상의 레지스터로부터 공급된다. 현재 블록에 대한 암호화된 암호문은 AESENCRYPT(310)의 Arg1 위에 겹쳐쓰기된다.
도 6은 CBC 모드에서 이용되는 연쇄된 2개의 AES 암호화 명령어들(600)을 개념적으로 도시하고 있다. 이것은 시각적으로 CBC 모드의 시간 특성(도면의 좌측에 나타나는 시간적으로 먼저인(first-in-time) 동작)을 도시하고, 여기서 이전의 암호화 블록의 결과는 새로운 평문과 XOR된다. 이것은 ECB 모드보다 더 랜덤한 암호문을 생성한다(예를 들어, ECB 모드에서, 동일한 평문 블록은 동일한 암호문 블록 내로 주어진 동일한 키를 암호화할 것이다). 도 6에 도시된 바와 같은 CBC 모드에서, 평문의 주어진 블록에 대한 암호문은 이전의 라운드(round)의 암호문 결과에 의존한다.
도 7은 CBC 모드에서 AES 암호화 명령어를 이용하기 위한 코드예(예를 들어, 프로세서(190)에 의해 실행될 때 메소드를 구성하는 코드)(710)를 도시하고 있다. 먼저 암호화 키가 암시적 레지스터들 중 하나인 XMM0 내로 (MOV 명령어 또는 이와 유사한 명령어를 통해) 로드된다. 그 다음, AES 암호화하는 평문의 128-비트 블록들의 수를 설정하기 위해 다른 레지스터 ECX 내로 (MOV 명령어 또는 이와 유사한 명령어를 통해) 값(예를 들어, 16이 있지만, 이 수는 더 높을 수도 있고 더 낮을 수도 있음)이 로드될 수 있다. 128 비트에 의해 증배된 이 값은 코드(710)에 의해 암호화될 평문의 총 길이를 구체화할 수 있다. 또한, 루프를 통해 처음에, XMM1은 0을 로드함으로써 클리어될 수 있는데, 그 이유는, 평문의 제1 블록과 결합할 이전 블록으로부터의 암호문이 없기 때문이다. 이러한 초기화 후에, AESENCRYPT(310)를 포함하는 루프가 ECX 횟수로 실행될 수 있다.
그 루프 내에서, AESENCRYPT(310)는 Plainmemory[ECX] 내의 평문을 취하고, 그 평문을 XMM1 내의 값(예를 들어, 루프를 통하는 처음에는 0)과 XOR하고, XOR된 결과를 XMM0 내의 키로 암호화하고, 그 결과를 제2 암시적 레지스터 XMM1 내에 이미 있었던 값 위로 기입한다. 그 다음, XMM1 내의 암호문은 Ciphermemory[ECX]에 저장되고, ECX 내의 루프값은 루프의 시작부로 이동하기 전에 감소된다.
다음 루프에서, 그리고 ECB 모드와 상이하게, XMM1 내의 이전의 128 비트에 대한 0이 아닌 암호문 결과는 클리어되지 않는다. 오히려, 그것은 CBC 모드에 따라 키와 암호화하기 전에 AESENCRYPT(310)에 의해 평문의 다음 블록과 XOR된다. 이러한 방식으로, AESENCRYPT(310)는 ECX 내의 감소된 값 및 이전 루프로부터의 XMM1 내의 암호문 값을 위해 Plainmemory[ECX]의 이중 입력들을 갖는다. AESENCRYPT(310) 명령어는 2개의 입력을 XOR하고 그 결과를 XMMO 내의 키와 암호화한다. 코드(710)의 루프 실행은, ECX 내로 로드된 초기값에 의해 특정된 평문의 모든 블록이 CBC 모드에서 AES 암호화될 때까지 계속할 수 있다.
전술한 스킴 및 시스템은 단일의 2 피연산자 명령어를 이용하여 CBC 모드 및 ECB 모드 암호화를 유리하게 수행할 수 있다. 이 명령어는 그의 가장 일반적인 2가지 모드에서 AES에 대한 더 타이트한 루프들을 허용한다. 이 명령어는 제한된 수의 피연산자로 작용하고, 두번째로 가장 빈번한 사용을 여전히 지원하는 단일 명령어 내로 AES의 가장 일반적인 사용을 이동시킨다.
도 8은 CTR 모드에서 사용되는 AES 암호화 명령어(AESENCRYPT Arg1,Arg2)(810)를 개념적으로 도시하고 있다. 도시된 바와 같이, AESENCRYPT(810)는 2개의 피연산자를 가지며, 이들 중 하나인 Arg2는 암호화될 카운터 값을 공급한다. CTR 모드에서, 다른 피연산자인 Arg1은 암호화될 평문을 제공하고, 이것은 암호화 후에 AESENCRYPT(810)에 의해 평문과 XOR된다. 암호화 키는 암시적 128-비트 레지스터들 XMMO 및 XMM1 중 하나 이상의 레지스터로부터 공급된다. 현재 블록에 대한 암호화된 암호문은 AESENCRYPT(810)의 Arg1 위에 겹쳐쓰기된다.
도 9는 CTR 모드에서 AES 암호화 명령어를 이용하기 위한 코드예(예를 들어, 프로세서(190)에 의해 실행될 때 메소드를 구성하는 코드)(910)를 도시하고 있다. 먼저 암호화 키가 암시적 레지스터들 중 하나인 XMM0 내로 (MOV 명령어 또는 이와 유사한 명령어를 통해) 로드된다. 그 다음, AES 암호화하는 평문의 128-비트 블록들의 수를 설정하기 위해 다른 레지스터 ECX 내로 (MOV 명령어 또는 이와 유사한 명령어를 통해) 값(예를 들어, 16이 있지만, 이 수는 더 높을 수도 있고 더 낮을 수도 있음)이 로드될 수 있다. 128 비트에 의해 증배된 이 값은 코드(910)에 의해 암호화될 평문의 총 길이를 구체화할 수 있다. 그 다음, 카운터 값이 다른 XMM 레지스터(예를 들어, XMM4) 내로 (MOV 명령어 또는 이와 유사한 명령어를 통해) 로드된다. 이러한 초기화 후에, AESENCRYPT(810)를 포함하는 루프가 ECX 횟수로 실행될 수 있다.
그 루프 내에서, 카운터 값을 취하는 AESENCRYPT(810)는 실제로 카운터 값(counter value)을 암호화할 것이고, 그 후 평문 데이터와 XOR을 수행하여 암호문을 생성한다. 그 다음, XMM3 내의 암호문은 Ciphermemory[ECX]에 저장되고, ECX 내의 루프값은 루프의 시작부로 이동하기 전에 감소된다. 그 후에, 카운터는 (ADD, MUL 또는 다른 명령어를 통해) 적절하게 조정된다. 루프는 그렇지 않으면 ECB 모드와 동일하게 진행한다.
하나 이상의 구현에 대한 전술한 기재는 도시 및 설명을 제공하지만, 모든 것을 망라하고자 하는 것이 아니며, 본 발명의 범위를 개시된 정확한 형태로 한정하고자 하는 것이 아니다. 수정들 및 변형들은 전술한 교시에 비추어 가능하거나, 또는 본 발명의 다양한 구현들의 실행으로부터 취득될 수 있다.
예를 들어, AES 암호화 및 암호 해독은 128-비트 키에 대해 설명하였지만, FIPS Publication 197의 NIST 표준은 192-비트 및 256-비트 키들을 허용한다. 이러한 경우, XMM1은 192-비트 또는 256-비트 키에서 다른 64 비트 또는 128 비트에 이용될 수 있다. 이러한 경우, 일부 다른 128 비트 레지스터(예를 들어, XMM2, XMM3 등)가 코드(410) 또는 코드(710) 또는 코드(910)(또는 AESENCRYPT 또는 AESDECRYPT가 상주하는 코드는 무엇이든지)의 XMM1 대신에 이용될 수 있으며, 그 이유는 키의 일부가 XMM1 내에 상주하기 때문이다.
AESENCRYPT가 전술되었지만, AESDECRYPT Arg1,Arg2가 ECB 모드, CTR 모드 및 CBC 모드에서 AES 암호 해독을 지원하기 위해 유사한 방식으로 이용될 수 있다. 이 기술분야의 당업자이면, ECB 모드에서 AESDECRYPT를 이용하는 것은 비교적 수월하며, CBC 모드는 암호화 동안 AESENCRYPT에 의해 수행되는 XOR 연산의 역(inverse) 또는 반대(opposite)와 같은 추가적인 계산을 수반할 수 있다는 것을 인식할 것이다.
또한, AESENCRYPT 및 AESDECRYPT가 AES 알고리즘을 정확하게 어떻게 수행하는지에 관한 상세는 제공되지 않았지만, 이것은 암호화 기술 분야의 당업자의 능력 내에 있는 것임을 인식해야 한다. 특정 구현은 AESENCRYPT 및 AESDECRYPT가 실행되는 특정 프로세서(190)에 대해 최적화되는 경향이 있을 수 있다. 일부 구현들에서, 이 명령어들은 가능한 가장 신속한 실행을 위해 기계어로 최적화될 수 있다. 이러한 최적화의 상세는 청구된 발명과 특별히 밀접한 관계가 있는 것이 아니며, 설명의 명확성을 위해 생략되었다.
본 출원의 설명에 이용된 어떠한 요소, 작용, 또는 명령어도 명시적으로 설명되지 않는 한 본 발명에 대해 결정적이거나 필수적인 것으로서 해석되어서는 안된다. 또한, 본원에서 이용되는 바와 같이, 관사 "a"는 하나 이상의 항목을 포함하는 것으로 의도된다. 본 발명의 사상 및 원리들로부터 실질적으로 벗어나지 않고 청구된 발명의 전술한 구현(들)에 대하여 변형들 및 수정들이 행해질 수 있다. 모든 이러한 수정들 및 변형들은 본 명세서에서 본 개시의 범위 내에 포함되고 다음의 특허청구범위에 의해 보호되는 것으로 의도된다.

Claims (16)

  1. 명령어가 저장된 머신 판독 가능 매체(machine-readable medium)로서, 상기 명령어는 머신에 의해 실행되는 경우, 상기 머신이,
    결과를 생성하기 위해 상기 명령어의 제1 피연산자와 상기 명령어의 제2 피연산자를 결합하는 단계 - 상기 명령어는 명령어 집합의 명령어이고 AES(Advanced Encryption Standard) 연산의 복수의 모드에서 이용됨 - ;
    상기 명령어에 의해 이용되는 암시적(implicit) 레지스터에 의해 제공되는 키를 이용하여 암호화된 결과를 생성하기 위해 AES 알고리즘에 따라 상기 결과를 암호화하는 단계; 및
    상기 암호화된 결과를 상기 명령어의 상기 제1 피연산자의 위치에 위치시키는 단계를 포함하는 방법을 수행하도록 하는, 머신 판독 가능 매체.
  2. 제1항에 있어서, 상기 결합하는 단계는,
    상기 결과를 생성하기 위해 상기 명령어의 상기 제1 피연산자와 상기 명령어의 상기 제2 피연산자를 배타적 논리합(exclusive OR)하는 단계를 포함하는, 머신 판독 가능 매체.
  3. 제1항에 있어서, 상기 암호화하는 단계는,
    하나 이상의 미리 정해진 레지스터로부터 상기 키를 획득하는 단계를 포함하는, 머신 판독 가능 매체.
  4. 제3항에 있어서, 상기 키는 길이가 128비트, 192비트 또는 256비트인, 머신 판독 가능 매체.
  5. 제1항에 있어서, 상기 제2 피연산자는 길이가 128비트인 암호화될 평문(plaintext)인, 머신 판독 가능 매체.
  6. 제5항에 있어서, 상기 제1 피연산자는 제로인, 머신 판독 가능 매체.
  7. 제5항에 있어서, 상기 제1 피연산자는 이전 암호화 연산으로부터의 이전 암호화된 결과(prior encrypted result)인, 머신 판독 가능 매체.
  8. 제1항에 있어서, 상기 방법은 상기 제1 피연산자를 클리어하기 위한 제1루프를 실행하는 단계; 결합된 결과를 얻기 위해 카운터 값에 의해 지시된 제1 메모리의 위치로부터 얻어진 상기 제2 피연산자에 의해 제공된 평문값과 상기 제1 피연산자에 의해 제공된 제2 값을 논리적으로 결합하는 단계; 상기 암호화된 결과를 생산하기 위해 상기 AES 알고리즘과 상기 키를 사용하여 상기 결합된 결과를 암호화하는 단계; 상기 카운터 값에 의해 지시된 제2 메모리의 위치에 상기 암호화된 결과를 저장하는 단계; 상기 카운터 값을 증가시키는 단계; 및 상기 카운터 값이 미리 결정된 값에 도달할때까지 상기 제1 루프를 반복하는 단계를 더 포함하는, 머신 판독 가능 매체.
  9. 제8항에 있어서, 상기 방법은 상기 제1 피연산자를 클리어하는 단계; 그 이후 상기 결합된 결과를 생성하기 위해 상기 평문과 상기 제2 값을 논리적으로 결합하기 위한 제2 루프를 실행하는 단계; 상기 암호화된 결과를 생성하기 위해 상기 AES 알고리즘과 상기 키를 사용하여 상기 결합된 결과를 암호화하는 단계; 상기 카운터 값에 의해 지시된 상기 제2 메모리의 위치에 상기 결합된 결과를 저장하는 단계; 상기 카운터 값을 감소시키는 단계; 및 상기 카운터 값이 상기 미리 결정된 값에 도달할때까지 상기 제2 루프를 반복하는 단계를 더 포함하는, 머신 판독 가능 매체.
  10. 암호화 회로를 구비하는 실행 유닛과 레지스터 파일을 포함하는 프로세서 - 상기 암호화 회로는 제1 피연산자를 클리어하는 제1 루프를 실행하고, 결합된 결과를 생성하기 위해 카운터 값에 의해 지시된 제1 메모리의 위치로부터 얻어진 제2 연산자에 의해 공급된 평문값과 상기 제1 피연산자에 의해 공급된 제2 값을 논리적으로 결합하고, 암호화된 결과를 생성하기 위해 AES 알고리즘을 사용하여 상기 결합된 결과를 암호화하고, 상기 카운터 값에 의해 지시된 제2 메모리의 위치에 상기 암호화된 결과를 저장하고, 상기 카운터 값을 감소시키고, 상기 카운터 값이 미리 결정된 값에 도달할때까지 상기 제1 루프를 반복하고, 상기 제1 피연산자를 클리어하고, 이후에 상기 결합된 결과를 생성하기 위해 상기 평문 값과 상기 제2 값을 논리적으로 결합하기 위한 제2 루프를 실행하고, 상기 암호화된 결과를 생성하기 위해 상기 AES 알고리즘과 상기 키를 사용하여 상기 결합된 결과를 암호화하고, 상기 카운터 값에 의해 지시된 상기 제2메모리 위치에 상기 암호화된 결과를 저장하고, 상기 카운터 값을 감소시키고, 상기 카운터 값이 상기 미리 결정된 값에 도달할때까지 상기 제2 루프를 반복하기 위한 것임 - 및
    상기 프로세서에 결합된 메인 메모리를 포함하는 시스템.
  11. 제10항에 있어서, 상기 시스템은 상기 프로세서에 결합된 데이터 저장 장치를 더 포함하고, 상기 데이터 저장 장치는 상기 암호화 회로에 의해 실행될 암호화 명령어를 구비한 코드를 포함하는, 시스템.
  12. 제10항에 있어서, 상기 암호화 회로는, 명령어에 대응하여, 상기 결합된 결과를 생성하기 위해 상기 제2 피연산자에 의해 제공된 상기 평문 값과 상기 제1 피연한자에 의해 제공된 상기 제2 값을 논리적으로 결합하고, 상기 암호화된 결과를 생성하기 위해 상기 명령어에 의해 사용되는 상기 AES 알고리즘과 묵시적 레지스터에 의해 제공된 상기 키를 사용하여 상기 결합된 결과를 암호화하기 위한 것이며, 상기 제1 피연산자는 복수의 AES 모드들 중 하나의 모드를 결정하기 위해 사용되는, 시스템.
  13. 제12항에 있어서, 상기 프로세서는 상기 결합된 결과를 생성하기 위해 상기 평문 값과 상기 제2 값을 배타적 OR하기 위한 것이고, 상기 제2 값은 이전에 암호화된 값이거나 제로이며, 상기 평문 값과 상기 암호화된 결과는 각각 128비트 길이인, 시스템.
  14. 제2 값을 저장하기 위한 제1 레지스터 및 키를 저장하기 위한 제2 레지스터를 포함하는 프로세서로서,
    제1 로직이 상기 제1 레지스터에 암호화된 결과를 저장하도록 구성되고, 단일 명령어에 대응하여 제1 모드에서 상기 프로세서는,
    제1 피연산자를 클리어하는 제1 루프를 실행하고, 결합된 결과를 생성하기 위해 카운터 값에 의해 지시된 제1 메모리의 위치로부터 얻어진 제2 연산자에 의해 공급된 평문값과 상기 제1 피연산자에 의해 공급된 제2 값을 논리적으로 결합하고, 암호화된 결과를 생성하기 위해 AES 알고리즘과 상기 키를 사용하여 상기 결합된 결과를 암호화하고, 상기 카운터 값에 의해 지시된 제2 메모리의 위치에 상기 암호화된 결과를 저장하고, 상기 카운터 값을 감소시키고, 상기 카운터 값이 미리 결정된 값에 도달할때까지 상기 제1 루프를 반복하기 위한 것이고,
    상기 단일 명령어에 대응하여 제2 모드에서 상기 프로세서는, 상기 제1 피연산자를 클리어하고, 이후에 상기 결합된 결과를 생성하기 위해 상기 평문 값과 상기 제2 값을 논리적으로 결합하기 위한 제2 루프를 실행하고, 상기 암호화된 결과를 생성하기 위해 상기 AES 알고리즘과 상기 키를 사용하여 상기 결합된 결과를 암호화하고, 상기 카운터 값에 의해 지시된 상기 제2메모리 위치에 상기 암호화된 결과를 저장하고, 상기 카운터 값을 감소시키고, 상기 카운터 값이 상기 미리 결정된 값에 도달할때까지 상기 제2 루프를 반복하기 위한 것인, 프로세서.
  15. 제14항에 있어서, 상기 제1 로직은 상기 결합된 결과를 생성하기 위해 상기 평문 값과 상기 제2 값을 배타적 OR(XOR)하도록 구성되며, 상기 제2 값은 이전에 암호화된 결과 또는 제로이며, 상기 평문 값과 상기 암호화된 값은 각각 128비트 길이인, 프로세서.
  16. 제14항에 있어서, 상기 프로세서는 명령어 세트의 단일 명령어에 대응하는 제1 로직을 포함하여 - 상기 명령어 세트는 제1 피연산자와 제2 피연산자를 포함하고 복수의 AES 모드에서 사용가능함 -, 결합된 결과를 생성하기 위해 상기 제2 연산자에 의해 제공된 평문 값과 상기 제1 피연산자에 의해 제공된 제2 값을 논리적으로 결합하고, 암호화된 결과를 생성하기 위해 상기 단일 명령어에 의해 사용되는 묵시적 레지스터에 의해 제공된 키와 AES 알고리즘을 사용하여 상기 결합된 결과를 암호화하기 위한 것이고, 상기 제1 피연산자는 복수의 AES모드들 중 하나의 모드를 결정하기 위해 사용되는, 프로세서.
KR1020130056494A 2007-03-14 2013-05-20 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는 암호 해독 수행 KR101394710B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/724,005 2007-03-14
US11/724,005 US8538012B2 (en) 2007-03-14 2007-03-14 Performing AES encryption or decryption in multiple modes with a single instruction

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020100059386A Division KR101302799B1 (ko) 2007-03-14 2010-06-23 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는 암호 해독 수행

Publications (2)

Publication Number Publication Date
KR20130076834A true KR20130076834A (ko) 2013-07-08
KR101394710B1 KR101394710B1 (ko) 2014-05-15

Family

ID=39328229

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020080024067A KR20080084752A (ko) 2007-03-14 2008-03-14 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는암호 해독 수행
KR1020100059386A KR101302799B1 (ko) 2007-03-14 2010-06-23 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는 암호 해독 수행
KR1020130056494A KR101394710B1 (ko) 2007-03-14 2013-05-20 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는 암호 해독 수행

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020080024067A KR20080084752A (ko) 2007-03-14 2008-03-14 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는암호 해독 수행
KR1020100059386A KR101302799B1 (ko) 2007-03-14 2010-06-23 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는 암호 해독 수행

Country Status (7)

Country Link
US (3) US8538012B2 (ko)
JP (1) JP4767985B2 (ko)
KR (3) KR20080084752A (ko)
CN (2) CN103957100B (ko)
DE (1) DE102008014359B4 (ko)
GB (1) GB2447563B (ko)
TW (1) TWI390401B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US8447796B2 (en) * 2008-11-25 2013-05-21 Intel Corporation Apparatus with a vector generation unit and encoder for receiving first and second inputs to generate at least significant zero (LSZ)
EP2196937A1 (en) * 2008-12-15 2010-06-16 Thomson Licensing Methods and devices for instruction level software encryption
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US8549264B2 (en) 2009-12-22 2013-10-01 Intel Corporation Add instructions to add three source operands
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US9990201B2 (en) * 2009-12-22 2018-06-05 Intel Corporation Multiplication instruction for which execution completes without writing a carry flag
EP2717511A1 (en) * 2012-10-05 2014-04-09 Nagravision S.A. Method and device for digital data blocks encryption and decryption
DE102013205166A1 (de) * 2013-03-22 2014-09-25 Robert Bosch Gmbh Verfahren zum Erzeugen einer Einwegfunktion
US9513913B2 (en) * 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US9467279B2 (en) 2014-09-26 2016-10-11 Intel Corporation Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality
US10110566B2 (en) * 2015-07-21 2018-10-23 Baffle, Inc. Systems and processes for executing private programs on untrusted computers
US11463236B2 (en) 2016-12-09 2022-10-04 Cryptography Research, Inc. Programmable block cipher with masked inputs
CN108777611B (zh) * 2018-05-11 2021-06-18 吉林大学 基于双密钥流密码的双向链表顺序加密解密方法
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
KR20210018130A (ko) * 2019-08-06 2021-02-17 주식회사 아이씨티케이 홀딩스 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치
GB2601666B (en) * 2019-08-06 2023-04-26 Ictk Holdings Co Ltd Processor, processor operation method and electronic device comprising same

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3547474B2 (ja) 1994-03-22 2004-07-28 富士通株式会社 暗号演算回路
AU728942B2 (en) * 1995-06-30 2001-01-18 Canon Kabushiki Kaisha A communication apparatus and a communication system
US6118870A (en) * 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
US6324288B1 (en) * 1999-05-17 2001-11-27 Intel Corporation Cipher core in a content protection system
WO2001056221A2 (en) * 2000-01-31 2001-08-02 Vdg Inc. Block encryption method and schemes for data confidentiality and integrity protection
US7106860B1 (en) * 2001-02-06 2006-09-12 Conexant, Inc. System and method for executing Advanced Encryption Standard (AES) algorithm
US6937727B2 (en) * 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
US7280657B2 (en) * 2001-06-13 2007-10-09 Itt Manufacturing Enterprises, Inc. Data encryption and decryption system and method using merged ciphers
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US7289524B2 (en) * 2001-10-04 2007-10-30 Bbn Technologies Corp. Execution unit for a network processor
GB2374260B (en) * 2001-10-12 2003-08-13 F Secure Oyj Data encryption
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
DE10201449C1 (de) * 2002-01-16 2003-08-14 Infineon Technologies Ag Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor
US7221763B2 (en) * 2002-04-24 2007-05-22 Silicon Storage Technology, Inc. High throughput AES architecture
JP2005527853A (ja) * 2002-05-23 2005-09-15 アトメル・コーポレイション 高度暗号化規格(aes)のハードウェア暗号法エンジン
US20030223581A1 (en) * 2002-05-30 2003-12-04 Bedros Hanounik Cipher block chaining unit for use with multiple encryption cores
US6950517B2 (en) * 2002-07-24 2005-09-27 Qualcomm, Inc. Efficient encryption and authentication for data processing systems
US7532726B2 (en) 2002-08-08 2009-05-12 Panasonic Corporation Encryption/decryption device and method, encryption device and method, decryption device and method, and transmission/reception apparatus
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
KR100583635B1 (ko) 2003-01-24 2006-05-26 삼성전자주식회사 다수의 동작 모드들을 지원하는 암호화 장치
US7336783B2 (en) * 2003-01-24 2008-02-26 Samsung Electronics, C., Ltd. Cryptographic systems and methods supporting multiple modes
JP3818263B2 (ja) 2003-01-28 2006-09-06 日本電気株式会社 Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
US7337314B2 (en) * 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US8060755B2 (en) 2003-04-18 2011-11-15 Via Technologies, Inc Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7925891B2 (en) 2003-04-18 2011-04-12 Via Technologies, Inc. Apparatus and method for employing cryptographic functions to generate a message digest
US7542566B2 (en) 2003-04-18 2009-06-02 Ip-First, Llc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7392399B2 (en) * 2003-05-05 2008-06-24 Sun Microsystems, Inc. Methods and systems for efficiently integrating a cryptographic co-processor
WO2004112309A1 (en) * 2003-06-16 2004-12-23 Electronics And Telecommunications Research Institue Rijndael block cipher apparatus and encryption/decryption method thereof
US8055910B2 (en) * 2003-07-07 2011-11-08 Rovi Solutions Corporation Reprogrammable security for controlling piracy and enabling interactive content
US7421076B2 (en) * 2003-09-17 2008-09-02 Analog Devices, Inc. Advanced encryption standard (AES) engine with real time S-box generation
US7921300B2 (en) * 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
TWI244299B (en) 2004-01-07 2005-11-21 Admtek Inc Method for implementing advanced encryption standards by a very long instruction word architecture processor
ATE435538T1 (de) * 2004-02-05 2009-07-15 Research In Motion Ltd Speicherung auf einem chip,erzeugung und handhabung eines geheimschlüssels
CN1677921A (zh) 2004-03-31 2005-10-05 华为技术有限公司 通过可编程器件实现数据加密的方法
TWI268686B (en) * 2004-04-16 2006-12-11 Via Tech Inc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7496196B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Method apparatus and system of performing one or more encryption and/or decryption operations
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US7783037B1 (en) * 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
JP4734906B2 (ja) * 2004-12-07 2011-07-27 ソニー株式会社 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
US8094811B2 (en) * 2005-03-31 2012-01-10 Panasonic Corporation Data encryption device and data encryption method
US7606363B1 (en) * 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
JP4890976B2 (ja) * 2005-08-31 2012-03-07 キヤノン株式会社 暗号処理装置
ATE472212T1 (de) * 2005-11-08 2010-07-15 Irdeto Access Bv Verfahren zur verschlüsselung und entschlüsselung von dateneinheiten
US8189774B2 (en) * 2006-01-06 2012-05-29 Fujitsu Semiconductor Limited Processors for network communications
US7831039B2 (en) * 2006-06-07 2010-11-09 Stmicroelectronics S.R.L. AES encryption circuitry with CCM
US7769166B2 (en) * 2006-08-24 2010-08-03 Lsi Corporation Dual mode AES implementation to support single and multiple AES operations

Also Published As

Publication number Publication date
GB2447563A (en) 2008-09-17
TWI390401B (zh) 2013-03-21
CN103957100A (zh) 2014-07-30
JP4767985B2 (ja) 2011-09-07
DE102008014359A1 (de) 2008-10-16
JP2008283672A (ja) 2008-11-20
US20130202106A1 (en) 2013-08-08
KR20080084752A (ko) 2008-09-19
KR101302799B1 (ko) 2013-09-03
KR101394710B1 (ko) 2014-05-15
CN103957100B (zh) 2018-10-16
US20080229116A1 (en) 2008-09-18
US20160261406A1 (en) 2016-09-08
GB0804870D0 (en) 2008-04-16
US9325498B2 (en) 2016-04-26
DE102008014359B4 (de) 2011-08-25
US8538012B2 (en) 2013-09-17
CN101272238B (zh) 2014-06-04
CN101272238A (zh) 2008-09-24
TW200903254A (en) 2009-01-16
GB2447563B (en) 2009-09-30
KR20100082748A (ko) 2010-07-19

Similar Documents

Publication Publication Date Title
KR101394710B1 (ko) 단일 명령어를 이용한 다수 모드에서의 aes 암호화 또는 암호 해독 수행
US11563556B2 (en) Architecture and instruction set for implementing advanced encryption standard (AES)
JP4684550B2 (ja) 多数の動作モードを支援する暗号化装置
JP2004226969A (ja) 暗号システム及び多様なモードを支援する方法
JP2011007962A (ja) プログラムコード暗号化装置及びプログラム

Legal Events

Date Code Title Description
A107 Divisional application of patent
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: 20170504

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 6