KR20110129932A - 암호 시스템을 위한 키 복구 메커니즘 - Google Patents

암호 시스템을 위한 키 복구 메커니즘 Download PDF

Info

Publication number
KR20110129932A
KR20110129932A KR1020117022719A KR20117022719A KR20110129932A KR 20110129932 A KR20110129932 A KR 20110129932A KR 1020117022719 A KR1020117022719 A KR 1020117022719A KR 20117022719 A KR20117022719 A KR 20117022719A KR 20110129932 A KR20110129932 A KR 20110129932A
Authority
KR
South Korea
Prior art keywords
key
aes
data
block
bit
Prior art date
Application number
KR1020117022719A
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 KR20110129932A publication Critical patent/KR20110129932A/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
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/122Hardware reduction or efficient architectures
    • 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

Abstract

암호 시스템은 키를 포함하는 레지스터 및 상기 레지스터에 연결된 프로세서를 포함한다. 상기 프로세서는, 상기 레지스터를 작업 공간으로 이용하여 키 스케줄을 계산하는 것을 포함하는 제1 암호화 연산을 수행한다. 상기 제1 암호화 연산의 끝에, 상기 키는 제2 암호화 연산에서의 사용을 위해 상기 레지스터로부터 복구된다.

Description

암호 시스템을 위한 키 복구 메커니즘{KEY RECOVERY MECHANISM FOR CRYPTOGRAPHIC SYSTEMS}
이 출원의 내용은 일반적으로 암호 시스템에 관한 것이다.
고급 암호화 표준(AES, Advanced Encryption Standard)은 대칭 키 암호에서 사용되는 전자 데이터를 보호할 수 있는 암호 알고리즘을 위한 미국 국립 표준 기술원(NIST, National Institute of Standards and Technology) 명세이다. AES 알고리즘은 전자 데이터의 형태로 된 정보를 암호화(encrypt, encipher) 및 해독(decrypt, decipher)할 수 있다. 암호화는 전자 데이터를 암호문(ciphertext)이라 불리는 난해한 형태로 변환하고; 암호문을 해독하는 것은 전자 데이터를 평문(plaintext)이라 불리는 그것의 최초의 형태로 다시 변환한다. AES 알고리즘은 128 비트의 블록들로 전자 데이터를 암호화 및 해독하기 위해 128, 192, 및 256 비트의 암호 키들을 이용할 수 있는 인터랙티브형, 대칭 키 블록 암호(interactive, symmetric-key block cipher)이다.
공개 키 암호들(public-key ciphers)은 한 쌍의 암호 키들을 이용할 수 있다. 그러나, AES 알고리즘은 전자 데이터를 암호화 및 해독하기 위해 동일한 암호 키를 이용한다. AES 알고리즘은 블록 암호이다. 블록 암호들에 의해 반환된 암호화된 데이터는 입력 데이터와 동일한 수의 비트를 가질 수 있다. AES 알고리즘은 데이터의 블록들에 대해 그것의 암호를 수행하여, 그것을 인터랙티브형 암호로 만든다. 인터랙티브형 암호들은 입력 데이터의 순열(permutations) 및 치환(substitutions)을 반복하여 수행하는 루프 구조를 이용할 수 있다.
암호화된 데이터의 각각의 블록은 데이터를 암호화 또는 해독하기 위해 동일한 암호 키를 이용한다. AES 알고리즘은 128 비트 블록들로 데이터를 암호화 및 해독한다. AES 알고리즘에 의한 128 비트 블록의 데이터의 각각의 암호화 및 해독은 복수의 AES 연산들을 이용할 수 있다. 계속적인 연산들의 그룹이 반복하여 수행되는 복수의 AES 연산들을 이용한 128 비트 블록의 데이터의 암호화 및 해독은 라운드(round)라고 칭해질 수 있다. AES 알고리즘은 또한 암호 키를 획득하고 키 확장(key expansion)을 수행하여 AES 암호화 알고리즘에서 이용하기 위한 키 스케줄을 생성한다. 대안적으로, 128 비트 블록의 데이터의 해독에서, AES 알고리즘은 스케줄된 키로부터 시작하고 역 키 스케줄 연산(inverse key schedule operation)을 수행하여 128 비트 블록으로 데이터를 해독하기 위하여 암호화에서 사용되는 암호 키를 생성한다.
128 비트 블록의 데이터의 각각의 암호화는 128 비트 블록의 입력 데이터와 함께 입력으로서 암호 키를 필요로 한다. 128 비트보다 큰 암호화를 위한 입력 전자 데이터는 복수의 128 비트 블록들로 분할될 수 있다. 각각의 128 비트 블록은 AES 알고리즘을 이용하여 암호화될 수 있다. AES 알고리즘은 암호 키를 획득하고 키 확장 루틴을 수행하여 키 스케줄을 생성하여, 최초의 암호 키를 변환한다.
128 비트 블록의 데이터의 각각의 해독은 128 비트 블록의 입력 데이터와 함께 입력으로서 스케줄된 키를 필요로 한다. 128 비트보다 큰 해독을 위한 입력 전자 데이터는 복수의 128 비트 블록들로 분할될 수 있다. 각각의 128 비트 블록은 AES 알고리즘을 이용하여 해독될 수 있다. AES 알고리즘은 암호화를 위해 사용된 AES 연산들을 인버트(invert)하고 역순으로 수행할 수 있다. AES 알고리즘은 스케줄된 키를 획득하고 역 키 스케줄 연산을 수행하여 암호화를 위해 사용된 최초의 암호 키를 결정한다.
종래의 암호 시스템들은 암호화를 위해 필요한 키 또는 해독을 위해 필요한 키 스케줄을 암호화 또는 해독 연산 동안에 AES 알고리즘에 의해 사용되는 작업 공간 버퍼(workspace buffer)로부터 분리된 버퍼에 저장한다. 각각의 128 비트 블록 암호화 또는 해독에 앞서, 시스템은 분리된 버퍼로부터 키 또는 스케줄된 키를 각각 복구한다. 대안적으로, 일부 종래의 암호 시스템들은 암호화 또는 해독되는 각각의 128 비트 블록의 데이터에 대하여 암호화 또는 해독을 각각 수행하는 암호 엔진에 키 또는 스케줄된 키를 제공한다. 이것은 암호 키 또는 키 스케줄의 추가적인 핸들링 및 조작으로 귀결될 수 있다. 이 추가적인 핸들링 및 조작은 키 및 그것의 스케줄의 비밀을 위태롭게 할 수 있다.
일부 구현들에서, 암호 시스템은 키 복구 연산을 수행할 수 있다. 암호화의 경우에는, 128 비트 블록의 데이터를 암호화하는 것의 끝에, 시스템은 암호화를 위해 사용된 스케줄된 키에 대해 역 키 스케줄 연산을 수행하여 최초의 암호 키를 복구할 수 있다. 이 키는 다음 암호화 프로세스에서 사용하기 위해 키 버퍼에 배치될 수 있다. 해독의 경우에는, 128 비트 블록의 데이터를 해독하는 것의 끝에, 시스템은 해독을 위해 사용된 암호 키에 대해 키 스케줄 연산을 수행하여 키 스케줄을 복구할 수 있다.
암호 연산 동안에 키 복구 연산을 수행하는 것은 암호 엔진이 암호화 또는 해독을 위해 각각 키 또는 키 스케줄의 사본을 유지할 필요를 제거할 수 있다. 또한, 그것은 키 및 키 스케줄의 불필요한 핸들링 및 조작을 제거할 수 있다. 암호화의 경우에는, 암호 시스템은 암호화를 위한 각각의 128 비트 블록의 데이터에 대하여 암호 엔진에 키를 리로드(reload)할 필요가 없다. 해독의 경우에는, 암호 시스템은 해독을 위한 각각의 128 비트 블록의 데이터에 대하여 암호 엔진에 키 스케줄을 리로드할 필요가 없다.
도 1은 고급 암호화 표준(AES) 암호 엔진의 예시 구현의 블록도이다.
도 2는 고급 암호화 표준(AES) 블록에 포함되는 AES 시스템의 예시 구현의 블록도이다.
도 3a는 고급 암호화 표준(AES) 연산 레지스터 내의 비트들 및 그 비트 값들과 관련된 연산들을 보여주는 표이다.
도 3b는 고급 암호화 표준(AES) 연산 레지스터를 이용하여 선택된 AES 연산들을 위한 실행 시간들을 보여주는 표이다.
도 4는 고급 암호화 표준(AES) 블록에서의 예시 AES 키 상태들을 보여주는 상태도이다.
도 5는 암호 시스템에서의 암호화 프로세스의 예시 구현의 흐름도이다.
도 6은 암호 시스템에서의 해독 프로세스의 예시 구현의 흐름도이다.
도 7은 암호 시스템을 포함할 수 있는 시스템의 예시 구현의 블록도이다.
AES 암호 엔진의 구현
도 1은 고급 암호화 표준(AES) 암호 엔진(100)의 예시 구현의 블록도이다. 엔진(100)은 암호문 및 평문을 각각 생성하는 전자 데이터의 블록들에 대한 AES 암호화 및 해독 연산들을 포함할 수 있는 AES 계산을 수행할 수 있다. 엔진(100)은 암호 시스템에 포함될 수 있다.
도 1에 도시된 바와 같이, 엔진(100)은 AES 블록(102)에 의해 수행되는 AES 암호화 및 해독 연산들을 인에이블(enable) 및 제어할 수 있는 AES 블록(102)에의 입력을 제공할 수 있는 레지스터들을 포함한다. 레지스터들은 AES 연산들을 위한 데이터(예를 들면, 암호문 또는 평문)를 제공할 수 있다. 레지스터들은 AES 암호화 및 해독 연산들에서 사용하기 위한 암호 키 데이터를 제공할 수 있다. 또한, 레지스터들은 AES 블록(102)에 의해 수행되는 AES 연산들에 관련된 결과 및 상태 정보를 제공할 수 있다. 레지스터들은 AES 연산들의 결과 데이터(예를 들면, 암호문 또는 평문)를 제공할 수 있다. 다르게 지시되지 않는 한, 레지스터들은 8 비트(1 바이트) 값들을 포함한다. 구체적인 레지스터들, 그들의 값들 및 기능들은 아래에 더 상세히 설명될 것이다.
암호 시스템에 포함된 전력 관리 제어 레지스터 내의 AES ON 비트는 AES 암호 엔진(100)의 인에이블을 제어할 수 있다. AES ON 비트가 0으로 설정되면, 암호 시스템은 엔진(100)을 셧 다운(shut down)하여 엔진의 전류 소비를 최소화하고 엔진(100)을 파워다운 모드(power-down mode)에 둘 수 있다. 파워다운 모드 동안에, 엔진(100)의 레지스터들에 포함된 값들은 판독 또는 기입을 위해 이용 가능하지 않다. 이에 대한 예외는 AES 마스크 레지스터(116)이다. 암호 시스템은, AES 암호 엔진(100)의 버전 넘버를 포함할 수 있는, AES 마스크 레지스터(116)를 판독할 수 있다. 또한, 엔진(100)에 포함된 대다수의 레지스터들의 콘텐츠는 파워다운 모드 동안에 유지될 수 있다. AES ON 비트를 1로 설정하는 것은 엔진(100)의 전원을 켜고(powers up) 인에이블하여 그것을 계산 모드에 둔다. 엔진(100)의 전원을 켜는 것은 그것의 전류 소비를 증가시킨다. 엔진(100)은 AES 연산들을 이용하여 AES 계산들을 수행할 수 있다. AES ON 비트의 사용은 엔진(100)이 사용되지 않을 때 그것의 전원을 끄는 것에 의해 AES 암호 엔진(100)을 포함하는 암호 시스템에서의 전력 소비를 최소화할 수 있다.
AES 연산 레지스터(AESOP)는 AES 블록(102)에 입력될 수 있는 6개 비트(104a-f)를 포함할 수 있다. 이 6개 비트(104a-f)는 암호 유형(암호화 또는 해독), 키 스케줄, 및 AES 연산들에서 사용된 암호 키에 포함되는 비트의 수를 선택할 수 있다. AES 스타트 비트(104b)(AESOP.START)는, 1로 설정될 때, AES 블록(102)에서 요청된 암호 연산들(암호화 또는 해독)을 시작할 수 있다. AES 블록(102)이 요청된 암호(암호화 또는 해독)를 완료하면 AES 스타트 비트(104b)는 클리어된다(0으로 설정된다). AES 암호 비트(104a)(AESOP.CIPHER)는 암호화 방향(또는 암호 유형 선택) 비트일 수 있다. AES 암호 비트(104a)를 1로 설정하는 것은 AES 블록(102)에게 그것이 AES 암호화를 수행해야 할 것임을 알린다. AES 암호 비트(104a)를 0으로 설정하는 것은 AES 블록(102)에게 그것이 AES 해독을 수행해야 할 것임을 알린다.
AES 키 선택 비트들(104e, 104f)(각각, AESOP.KEYSEL0 및 AESOP.KEYSEL1)은 입력 암호 키에 대한 3개의 가능한 입력 사이즈들: 128, 192, 또는 256 비트 중 하나를 선택할 수 있다. AES 블록(102)은 AES 연산을 위해 암호 키를 사용할 수 있다. AES 키 선택 비트들(104e, 104f)은 AES 스타트 비트(104b)를, AES 연산을 시작하는, 1로 설정하기에 앞서 설정된다. AES 스타트 비트(104b)가 1인 동안에 AES 키 선택 비트들(104e, 104f)에 행해진 변화들은 AES 블록(102)에서 고장 상태(fault condition)가 발생하게 한다. AES 블록(102)은 AES 스타트 비트(104b)를 클리어하고(0으로 설정하고) AES 상태 레지스터 고장 검출 비트(108a)를 1로 설정하는 것에 의해 발생된 고장을 나타낸다. AES 입력 데이터 레지스터들(106)(AESDI[0...F]), AES 출력 데이터 레지스터들(114)(AESDO[0...F]) 및 AES 키 레지스터들(112)(AESK[0...31])은 변하지 않는다. 이들 레지스터들은 아래에 더 상세히 설명될 것이다.
AES 연산 비트들(104c, 104d)(각각, AESOP.AESOP0 및 AESOP.AESOP1)은 AES 스타트 비트(104b)가 1로 설정될 때 시작할 가능한 4개의 AES 연산들 중 하나를 선택할 수 있다. AES 연산 비트들(104c, 104d) 양쪽 모두를 클리어하는 것(0으로 설정하는 것)은 암호 비트(104a)의 값에 의해 결정된 선택된 암호 연산을 위한 어떤 키 복구도 선택하지 않는다. AES 연산 비트들(104c, 104d) 양쪽 모두를 1로 설정하는 것은 입력 암호 키의 무결성을 검증하기 위한 순환 중복 검사(CRC) 키 계산을 선택한다. AES 연산 비트(104c)를 클리어하는 것(0으로 설정하는 것) 및 AES 연산 비트(104d)를 1로 설정하는 것은 암호 비트(104a)의 값에 의해 결정된 선택된 암호 연산을 위한 키 복구를 선택한다. AES 연산 비트(104c)를 1로 설정하는 것 및 AES 연산 비트(104d)를 클리어하는 것(0으로 설정하는 것)은 AES 키 스케줄 연산을 선택한다. AES 연산들을 셋업하고 시작하기 위한 AES 연산 레지스터의 사용은 도 3을 참조하여 더 상세히 설명될 것이다.
암호 시스템은 AES 블록(102)에서 수행되는 AES 연산들의 양태들을 제어하기 위해, 4개의 비트(110a-110d)를 포함할 수 있는 AES 제어 레지스터(AESCR)의 비트들을 설정하거나 또는 클리어할 수 있다. XOR 키 데이터 입력 비트(110a)(AESCR.XKDI)를 1로 설정하는 것은 선택된 입력 데이터 레지스터(예를 들면, AES 입력 데이터 레지스터들(106)(AESDI[0...15]))에 기입된 입력 데이터와, 레지스터에 이미 포함된 데이터의 배타적-OR 연산(XOR 연산)을 허용한다. XOR 키 데이터 입력 비트(110a)를 클리어하는 것(0으로 설정하는 것)은 AES 암호 엔진(100)이 선택된 입력 데이터 레지스터(예를 들면, AES 입력 데이터 레지스터들(106))에 직접 데이터를 기입하여 그 데이터 레지스터에 포함된 임의의 이전의 데이터 위에 겹쳐 쓰는(overwrite) 것을 허용한다.
XOR 키 데이터 입력 비트(110a)를 1로 설정하는 것은 또한 선택된 키 레지스터(예를 들면, 키 레지스터들(112)(AESK[0...31]))에 기입된 입력 데이터와, 그 키 레지스터에 이미 포함된 데이터의 배타적-OR 연산(XOR 연산)을 허용할 수 있다. XOR 키 데이터 입력 비트(110a)를 클리어하는 것(0으로 설정하는 것)은 AES 암호 엔진(100)이 선택된 키 레지스터(예를 들면, 키 레지스터들(112))에 직접 데이터를 기입하여 그 키 레지스터에 포함된 임의의 이전의 데이터 위에 겹쳐 쓰는 것을 허용한다.
일부 구현들에서, 암호 시스템은 AES 기반 암호 블록 연쇄 메시지 인증 코드(CBC-MAC, Cipher Block Chaining Message Authentication Code) 알고리즘들을 구현할 때 XOR 키 데이터 입력 비트(110a)를 1로 설정할 수 있다.
XOR 키 데이터 입력 비트(110a)를 설정하거나 또는 클리어하는 것은, 암호 연산을 시작하는, AES 스타트 비트(104b)를 1로 설정하기 전에 또는 그와 동시에 일어날 수 있다. XOR 키 데이터 입력 비트(110a)는 AES 계산 동안에(AES 스타트 비트(104b)를 1로 설정한 후부터 시작하여 AES 계산의 끝까지) 기입될 수 있다.
리절트 투 키 데이터 레지스터 비트들(result to key data register bits)(110b 및 110c)(각각, AESCR.RTKDR0 및 AESCR.RTKDR1)은 AES 블록 연산의 결과가 어디에 저장되는지를 결정할 수 있다. 도 1에 도시된 구현에서, 리절트 투 키 데이터 레지스터 비트(110b)는 클리어(0으로 설정)된다. 리절트 투 키 데이터 레지스터 비트(110b)가 클리어(0으로 설정)될 때 리절트 투 키 데이터 레지스터 비트(110c)를 1로 설정하는 것은 AES 블록(102)에서 수행된 AES 블록 연산의 결과를 출력 데이터 레지스터들(114)(AESDO[0...15]) 및 입력 데이터 레지스터들(106)에 저장한다. 리절트 투 키 데이터 레지스터 비트(110b)를 클리어된 상태로 유지하면서 리절트 투 키 데이터 레지스터 비트(110c)를 클리어하는 것(0으로 설정하는 것)은 AES 블록(102)에서 수행된 AES 블록 연산의 결과를 출력 데이터 레지스터들(114)에 저장한다.
리절트 투 키 데이터 레지스터 비트들(110b 및 110c)을 설정하거나 또는 클리어하는 것은 AES 스타트 비트(104b)를 1로 설정하는 것과 동시에 일어날 수 있다. AES 스타트 비트(104b)가 이미 1로 설정되어 있을 때 리절트 투 키 데이터 레지스터 비트들(110b 및 110c)을 설정하거나 또는 클리어하는 것은 AES 블록(102)에서 고장 상태가 발생하게 할 수 있다. AES 블록(102)은 AES 스타트 비트(104b)를 클리어하는 것(0으로 설정하는 것) 및 AES 상태 레지스터 고장 검출 비트(108a)를 1로 설정하는 것에 의해 발생된 고장을 나타낸다. AES 입력 데이터 레지스터들(106)(AESDI[0...F]), AES 출력 데이터 레지스터들(114)(AESDO[0...F]) 및 AES 키 레지스터들(112)(AESK[0...31])은 변하지 않는다.
AES 데이터 마스크 인에이블 비트(110d)(AESCR.DATAMSK)는 AES 암호 엔진(100)에서의 데이터 마스킹 특징을 제어한다. AES 데이터 마스크 인에이블 비트(110d)를 1로 설정하는 것은 데이터 마스크 특징을 인에이블한다. AES 데이터 마스크 인에이블 비트(110d)를 클리어하는 것(0으로 설정하는 것)은 데이터 마스크 특징을 디스에이블(disable)한다. 인에이블될 때, 데이터 마스크 특징은 AES 입력 데이터 레지스터들(106)에 포함된 암호화 또는 해독을 위한 입력 데이터를 AES 마스크 레지스터(116)(AESMSK)의 콘텐츠로 마스킹할 수 있다. 이것은 아래에 더 상세히 설명될 것이다.
AES 암호 엔진(100)은 AES CRC 레지스터들(118)(AESCRC0 및 ARSCRC1)을 포함할 수 있고, 이것들은, 조합될 때, AES 연산을 위해 사용되는 입력 암호 키에 대해 수행된 순환 중복 검사(CRC)의 16 비트 결과를 포함한다. 엔진(100)은 128, 192, 및 256 비트의 입력 암호 키들에 대해 CRC 검사를 수행할 수 있다. AES 블록(102)은 임의의 AES 연산들에서 키를 사용하기 전에 키의 임의의 데이터 손상(data corruption)을 검출하기 위해 키에 대해 수행된 CRC의 결과를 이용할 수 있다.
AES 암호 엔진(100)은 1 바이트(8 비트) 마스크 값을 포함할 수 있는 AES 마스크 레지스터(116)(AESMSK)를 포함할 수 있다. 암호 시스템은 마스크 레지스터(116)에 1 바이트 마스크 값을 로딩한다. AES 연산들의 시작에 앞서, 엔진(100)은 입력 암호 키 데이터를 한 바이트씩 마스크 레지스터(116)로 마스킹할 수 있다. AES 연산들의 시작과 동시에, 엔진(100)은 또한 암호화 또는 해독을 위한 입력 데이터를 한 바이트씩 마스크 레지스터로 마스킹할 수 있다.
AES 암호 엔진(100)은 마스크 레지스터(116) 내의 값과 키의 각 바이트를 배타적-OR 연산(XOR 연산)하는 것에 의해 입력 암호 키의 값으로 한 바이트씩 마스크 레지스터(116)의 콘텐츠를 마스킹할 수 있다. 엔진(100)은 결과적으로 마스킹된 키를 키 레지스터들(112)에 기입할 수 있다. 키 마스킹은 임의의 AES 연산의 시작 전에 일어날 수 있다. 방금 설명된 방식으로 입력 암호 키를 마스킹하는 것은 XOR 키 데이터 입력 비트(110a)가 클리어(0으로 설정)되는 경우에 발생할 수 있다. XOR 키 데이터 입력 비트(110a)를 1로 설정하는 것은 키 레지스터들(112)에 기입된 입력 키 데이터와, 키 레지스터들(112)에 이미 포함된 데이터의 배타적-OR 연산(XOR 연산)을 허용한다.
일부 구현들에서, AES 암호 엔진(100)은 암호 키 CRC 계산을 수행할 수 있다. 입력 암호 키 데이터는 마스크 레지스터(116)의 콘텐츠와 한 바이트씩 배타적-OR 연산(XOR 연산)될 수 있다. 엔진(100)은 결과적으로 XOR 연산된 키 바이트들을 키 레지스터들(112)에 기입할 수 있다. 키 레지스터들(112)은 (예를 들면, AES 블록(102)에 포함된) AES CRC 계산 엔진에 입력될 수 있다. CRC 계산 엔진은 CRC 계산에서 사용되는 최초 값으로서 AES CRC 레지스터들(118)에 포함된 값을 이용하여 CRC 계산을 수행할 수 있다.
만일 AES 연산의 처음에 AES 마스크 레지스터(116) 내의 AES 데이터 마스크 인에이블 비트(110d)가 1로 설정되면, AES 암호 엔진(100)은 입력 데이터 레지스터들(106) 각각으로 마스크 레지스터(116)를 마스킹할 수 있다. AES 암호 엔진(100)은 마스크 레지스터(116) 내의 값과 입력 데이터 레지스터 내의 값을 배타적-OR 연산(XOR 연산)하는 것에 의해 마스킹을 수행할 수 있다. AES 블록(102)은 결과적으로 마스킹된 입력 데이터 레지스터들을 수신할 수 있다.
AES ON 비트가 0으로 설정될 때, AES 암호 엔진(100)은 셧 다운 모드에 놓일 수 있다. 이 모드에서, 암호 시스템은 엔진(100)의 버전 넘버를 포함할 수 있는 AES 마스크 레지스터(116)를 판독할 수 있다. 암호 시스템은 마스크 레지스터(116)를 판독하고 시스템에 포함된 엔진(100)의 버전 넘버를 결정할 수 있다.
AES 출력 데이터 레지스터들(114)(AESDO[0...F])은 AES 암호 엔진(100) 내의 AES 블록(102)에 의해 수행되는 AES 계산의 결과를 포함하는 16개의 8 비트(1 바이트) 레지스터들일 수 있다. AES 입력 데이터 레지스터들(114)(AESDI[0...F])은 AES 암호 엔진(100) 내의 AES 블록(102)에 의해 수행되는 AES 계산에서 사용되는 암호화 또는 해독을 위한 입력 데이터를 포함하는 16개의 8 비트(1 바이트) 레지스터들일 수 있다. 암호 시스템은 엔진(100)에서 AES 연산들의 시작을 개시하기에 앞서 암호화 또는 해독을 위한 입력 데이터를 데이터 버스(120)부터 입력 데이터 레지스터들(114)에 로딩한다. 전술한 바와 같이, AES 연산들의 시작을 개시하기에 앞서 입력 데이터 레지스터들(114)에 포함된 입력 데이터에 대해 마스킹 연산들이 조건부로 수행될 수도 있다.
AES 키 레지스터들(112)(AESK[0...31])은 AES 암호 엔진(100) 내의 AES 블록(102)에 의해 수행되는 AES 계산에서 사용되는 암호 키 값을 포함하는 32개의 8 비트(1 바이트) 레지스터들일 수 있다. 암호 시스템은, 데이터 버스(120)에 대하여, 키 레지스터들(112)에 128, 192, 또는 256 비트(각각, 16 바이트, 24 바이트 또는 32 바이트)일 수 있는 암호 키를 로딩한다. 전술한 바와 같이, 키 레지스터들(112)에 대해 마스킹 연산들이 선택적으로 수행될 수도 있다.
암호 시스템은 AES 암호 엔진(100)에 관련된 상태 정보 및 AES 블록(102)에 의해 수행되는 AES 연산들에 관련된 상태 정보를 결정하기 위해 AES 상태 레지스터(AESSR)의 비트들을 판독할 수 있다. AES 인터럽트 플래그 비트(108b)(AESSR.AESIRQ)는 AES 블록(102)이 AES 계산을 완료했을 때 1로 설정될 수 있다. 만일 암호 시스템에 포함된 추가적인 레지스터 비트들이 적절히 설정되면, 인터럽트 플래그 비트(108b)를 설정하는 것은 암호 시스템에서 인터럽트의 발생을 초래할 수 있다.
고장 검출 비트(108a)(AESSR.FAULT)는, 1로 설정될 때, AES 블록(102)이 AES 연산을 수행하고 있던 동안에 발생된 문제를 나타낸다. 일부 구현들에서, AES 블록(102)은 그것의 내부 상태들을 요청된 연산과 비교하는 것에 의해 그 문제를 검출할 수 있다.
예를 들면, AES 블록(102)은 AES 블록(102)이 무효 요청을 수신할 때 고장 검출 비트(108a)를 1로 설정할 수 있다. 다른 예로, AES 블록(102)은 내부적으로 그것의 연산들의 일관성을 검사할 수 있고 모순이 발생할 때 고장 검출 비트(108a)를 1로 설정할 수 있다. 다른 예로, AES 블록(102)은 입력 데이터의 블록에 대해 그것이 수행하는 AES 라운드의 수를 카운트할 수 있다. 라운드의 수는 AES 연산들에서 사용되는 키의 사이즈에 기초하기 때문에(예를 들면, 128 비트 키를 사용하는 AES 암호는 128 비트 블록의 데이터에 대해 10 라운드를 수행한다) AES 블록(102)은 128 비트 블록의 데이터에 대해 AES 블록이 수행해야 하는 라운드의 수를 결정할 수 있다. 만일 실제 라운드의 수가 계산된 라운드의 수와 다르다면, AES 블록(102)은 고장 검출 비트(108a)를 1로 설정할 수 있다.
만일 AES 블록(102)에 의한 AES 계산 동안에 고장이 발생하면, 인터럽트 플래그 비트(108b)를 1로 설정하는 것과 동시에 AES 계산의 끝에 AES 블록(102)에 의해 고장 검출 비트(108a)가 1로 설정된다. 일부 경우에, AES 계산 동안에 고장을 검출하는 AES 블록(102)은 잘못된 AES 계산을 계속하는 AES 블록(102)으로 귀결될 수 있다. 예를 들면, AES 블록(102)은 손상된 키를 이용할 수 있거나 또는 AES 계산의 결과로 생기는 AES 블록(102)의 출력 데이터는 손상될 수 있다. 일부 경우에, AES 블록(102)은 고장 검출 비트(108a)의 설정을 준비하고 잘못된 출력 데이터로 귀결되는 종료 전에 AES 계산을 중지할 수 있다.
기초 AES 알고리즘
AES 알고리즘은 행렬의 각 원소가 1 바이트(8 비트)의 데이터인 스테이트(state)라고 불리는 4x4 행렬에 대해 AES 연산들을 수행할 수 있다. 스테이트는 총 16 바이트 또는 128 비트의 데이터를 포함한다. AES 알고리즘을 위한 암호화 또는 해독을 위한 바이트들의 입력 어레이는 또한 4x4 행렬로 조직된 128 비트의 데이터이다. 출력 데이터를 생성하기 위해 스테이트를 이용하여 입력 데이터에 대해 AES 연산들이 수행되고, 출력 데이터도 행렬의 각 원소가 1 바이트(8 비트)인 4x4 행렬의 형태이다. AES 알고리즘은 각각의 128 비트 블록의 데이터에 대해 AES 연산들의 다수의 라운드를 수행한다. 라운드의 수는 암호 키의 사이즈에 기초하여 결정될 수 있다. 암호 시스템은 128 비트보다 큰 입력 데이터를 다수의 128 비트의 데이터로 분할할 수 있다. 이들 데이터 블록들은 도 1에 도시된 바와 같이 AES 블록(102)에 연속적으로 입력될 수 있다.
라운드 내의 모든 AES 연산들은 인버트 가능하다(invertible). AES 블록(102)은 입력 데이터의 해독을 수행하기 위해 입력 데이터의 암호화를 수행하기 위해 사용되는 연산들을 인버트하고 역순으로 수행할 수 있다.
입력 데이터의 암호화에서, AES 블록(102)은 암호 키를 키 스케줄로 확장할 수 있다. AES 알고리즘은 키를 획득하고 키 확장 루틴을 수행하여 키 스케줄을 생성할 수 있다. 키 스케줄은 키를 다수의 개별 키들(서브 키들)로 확장할 수 있고 AES 블록(102)은 AES 알고리즘의 각 라운드에 대하여 그 서브 키들을 이용할 수 있다. 서브 키들은 또한 라운드 키들이라고 불릴 수 있다. 키 확장 루틴은 AES 연산들을 이용하여 키를 확장할 수 있고 확장된 키의 길이는, 블록 사이즈*라운드의 수+1일 수 있다(예를 들면, 128 비트 키는 176 바이트 키로 확장하고, 192 비트 키는 208 바이트 키로 확장하고, 256 비트 키는 240 바이트 키로 확장한다). AES 블록(102)은 AES 알고리즘의 각 라운드에 대하여 확장된 키의 상이한 부분을 이용할 수 있다. 입력 데이터의 해독에서, AES 블록(102)은 키 스케줄을 이용하여 입력 데이터를 해독할 수 있다. AES 블록(102)은 역 키 스케줄 연산을 수행하여 입력 데이터를 암호화하기 위해 사용되는 암호 키를 생성할 수 있다.
키 복구를 이용한 AES 블록의 구현
도 2는 도 1의 고급 암호화 표준(AES) 블록(102)에 포함되는 AES 시스템(200)의 구현의 블록도이다. 시스템(200)은 키 복구를 이용하여 입력 데이터의 128 비트 블록의 암호화 또는 해독을 위한 AES 연산들을 수행할 수 있다. 일단 128 비트 블록의 입력 데이터의 암호화 또는 해독이 완료되면, 그 결과는 AES 암호 엔진(100)에 출력되고 시스템(200)은 암호화 또는 해독할 다음 128 비트 블록의 데이터에 대한 입력 데이터를 수신할 수 있다.
도 2에 도시된 바와 같이, 시스템(200)은 입력/출력 데이터 블록(202)을 포함한다. 입력/출력 데이터 블록(202)은 암호화 또는 해독을 위한 128 비트 입력 데이터 블록을 AES 데이터 처리 암호화/해독 블록(204)에 제공할 수 있다. 입력/출력 데이터 블록(202)은 또한 결과적으로 암호화된 또는 해독된 128 비트 출력 데이터 블록을 AES 데이터 처리 암호화/해독 블록(204)으로부터 수신할 수 있다. 데이터 처리 암호화/해독 블록(204)은 입력/출력 데이터 블록(202)에 의해 수신된 각각의 128 비트 블록의 데이터에 대해 AES 연산들을 수행할 수 있다.
AES 암호 엔진(100)을 이용한 데이터 암호화 또는 해독의 시작에 앞서, 암호 시스템은 도 1에 도시된 바와 같이 키 레지스터들(112)에 암호 키를 로딩할 수 있다. 제1 128 비트 입력 데이터 블록의 암호화 또는 해독의 시작에 앞서, 키 레지스터들(112)은 키 레지스터 블록(208)에 로딩될 수 있다.
데이터 암호화 또는 해독을 수행할 때, AES 키 처리 암호화/해독 블록(206)은 암호 키를 이용하여 키 확장 루틴을 수행하여 키 스케줄을 생성할 수 있다. 키 레지스터 블록(208)은 처음에 임의의 AES 암호화 연산들의 시작에 앞서 암호 키를 저장할 수 있다. 키 레지스터 블록(208)은 전체 키(예를 들면, 256 비트 또는 32 바이트(예를 들면, 키 레지스터들(112)))를 버퍼링하기에 충분할 만큼 클 수 있고 키는 128, 192, 또는 최대 256 비트일 수 있다.
시스템(200)에서 제1 128 비트 입력 데이터 블록에 대한 암호화 또는 해독 연산들 동안에, 키 레지스터들(112)로부터 키 레지스터 블록(208)에 로딩된 최초 암호 키는 겹쳐 쓰일 수 있다. 키 값을 포함하는 레지스터들은 암호 연산들을 수행할 때 작업 공간으로서 사용될 수 있다. 다음 128 비트 입력 데이터 블록에 대해 후속의 암호화 또는 해독 연산들을 수행하기 전에, 시스템(200)은 암호 키를 키 레지스터 블록(208)에 복구할 수 있다.
상이한 키 레지스터 블록들 및 키 스케줄 연산들의 구현
일부 구현들에서, 각각의 128 비트 입력 데이터 블록 암호화 또는 해독 연산 전에, AES 암호 시스템(100)은 키 레지스터들(112)을 레지스터 블록(208)으로 로딩할 수 있다. 이 구현은 처리되는 데이터의 모든 128 비트 블록마다 한 번 암호 키를 핸들링하는 것을 요구할 수 있다. 이것은 큰 블록의 데이터에 대하여 암호 키의 다수의 조작들로 귀결될 수 있다. 또한, 일부 구현들에서, 시스템(200)은 키 레지스터들(112)로부터 레지스터 블록(208)으로 암호 키가 로딩될 때마다 암호 키의 무결성을 검사할 수 있다. 이것은 AES 암호 엔진(100)의 계산 처리량을 증가시킬 수 있다.
일부 구현들에서, 시스템(100)은 암호 키의 2개의 사본을 키 레지스터 블록(208)에 저장할 수 있다. 키의 한 사본은 보존될 수 있고 암호화 또는 해독 연산들을 수행하면서 작업 공간 계산 동안에 겹쳐 쓰일 수 있는 키의 다른 사본을 복구하기 위해 이용될 수 있다. 이 구현은 암호 키를 저장하기 위해 키 레지스터 블록(208)에 추가적인 레지스터들을 요구할 수 있고, 이것은 키 레지스터 블록(208)의 게이트 카운트를 증가시킨다. 이것은 AES 암호 엔진(100)을 포함하는 통합 프로세서의 게이트 카운트를 증가시킨다. 증가된 게이트 카운트는 통합 프로세서의 풋프린트(footprint)를 증가시킬 뿐만 아니라 그것의 에너지 소비를 증가시킬 수 있다.
일부 구현들에서, 시스템(200)은 제1 128 비트 입력 데이터 블록의 암호화를 수행한 후에 키 레지스터 블록(208)에 암호 키를 복구할 수 있다. 시스템(200)은 다음 128 비트 입력 데이터 블록을 암호화하기 위해 필요한 암호 키를 복구하기 위해 제1 128 비트 입력 데이터 블록을 암호화하기 위해 사용된 키 스케줄에 대해 역 키 스케줄을 이용하는 키 복구 연산을 수행할 수 있다. 키 스케줄의 생성 및 128 비트 입력 데이터 블록을 암호화하는 데 그것을 사용하는 것은 최초 암호 키 값이 더 이상 시스템(200)에 이용 가능하지 않도록 키 데이터를 변경하는 것으로 귀결된다. 시스템(200)은 제1 128 비트 입력 데이터 블록이 암호화된 후에 및 다음 128 비트 입력 데이터 블록을 암호화하기 전에 키 복구 연산을 수행할 수 있다. 시스템(200)은 키 레지스터 블록(208)에서 복구된 키를 키 레지스터들(112)로부터 수신된 최초 암호 키를 유지한 동일한 레지스터들에 저장할 수 있다. 제1 128 비트 입력 데이터 블록은 이미 암호화되어 출력 데이터 블록(202)에 출력되었기 때문에, 시스템(200)은 암호화 연산들을 위한 작업 공간으로서 사용되었을 수 있는 이들 레지스터들에 포함된 임의의 데이터를 겹쳐 쓸 수 있다.
일부 구현들에서, 시스템(200)은 제1 128 비트 입력 데이터 블록의 해독을 수행한 후에 키 레지스터 블록(208)에 키 스케줄을 복구할 수 있다. 해독은 암호화가 이용하는 것과 동일한 AES 연산들을 이용할 수 있다. 그러나, 그 연산들은 인버트되고 그 후 역순으로 구현된다. 제1 128 비트 입력 데이터 블록의 해독은 최초 키 스케줄로 시작된다. 역 키 스케줄 연산은 최초의 데이터를 암호화하기 위해 사용된 최초의 암호 키를 결정할 수 있다. 역 키 스케줄 연산 및 128 비트 입력 데이터 블록을 해독하는 데 그것을 사용하는 것은 최초 키 스케줄이 더 이상 시스템(200)에 이용 가능하지 않도록 키 스케줄 데이터를 변경하는 것으로 귀결될 수 있다. 시스템(200)은 제1 128 비트 입력 데이터 블록이 해독된 후에 및 다음 128 비트 입력 데이터 블록을 해독하기 전에 키 복구 연산을 수행할 수 있다. 키 복구 연산은 결과적인 암호 키에 대해 키 확장 연산을 실행하여 키 스케줄을 생성하고 복구하는 것에 의해 키 스케줄 연산을 수행한다. 시스템(200)은 키 레지스터 블록(208)에서 복구된 키 스케줄을 최초 키 스케줄을 유지한 동일한 레지스터들에 저장할 수 있다. 제1 128 비트 입력 데이터 블록은 이미 해독되어 출력 데이터 블록(202)에 출력되었기 때문에, 시스템(200)은 해독을 위한 작업 공간으로서 사용되었을 수 있는 이들 레지스터들에 포함된 임의의 데이터를 겹쳐 쓸 수 있다.
키 복구 연산은 AES 암호 엔진(100)의 계산 처리량을 증가시킬 수 있다. 그러나, 시스템(200)은 키 값이 시스템(200)에 로딩될 때마다 키 값의 무결성을 검사할 수 있기 때문에, AES 블록(102)은 엔진(100)에게 암호 키를 복구하기 위하여 키 레지스터 블록(208)에 키 레지스터들(112)을 로딩할 것을 요구하지 않아 보다 적은 수의 키 조작 및 계산으로 귀결된다. 또한, 암호화 키가 또한 키 레지스터 블록(208)에 보존되지 않기 때문에 보다 적은 수의 레지스터들이 사용되므로 키 레지스터 블록(208)에서 보다 적은 수의 게이트가 요구될 수 있다.
일부 구현들에서, 도 1의 AES 암호 엔진(100)은 암호 시스템에서 특정한 연산들을 수행하기 위한 추가적인 통합 프로세서들을 포함할 수 있는 암호 시스템에 포함된 통합 프로세서일 수 있다. 암호 시스템의 풋프린트를 최소화하는 것을 돕기 위해 엔진(100)의 풋프린트를 최소화하는 것이 바람직할 수 있다. 엔진(100) 내의 AES 블록(102)에 포함된 시스템(200) 내의 키 저장을 위해 요구되는 레지스터들의 수를 감소시키는 것은 통합 프로세서의 사이즈 및 전체로서 암호 시스템의 사이즈를 감소시키는 데 도움이 될 수 있다.
AES 연산 레지스터
도 3a는 고급 암호화 표준(AES) 연산 레지스터 내의 비트들 및 그 비트 값들과 관련된 연산들을 보여주는 표(300)이다. 도 1을 참조하면, AES 연산 레지스터(AESOP)는 AES 연산 비트들(104c, 104d)(각각, AESOP0 및 AESOP1), AES 키 선택 비트들(104e, 104f)(각각, KEYSEL0 및 KEYSEL1) 및 AES 암호 비트(104a)(CIPHER)를 포함한다.
AES 연산 비트들(104c, 104d)은 AES 스타트 비트(104b)가 1로 설정될 때 시작할 가능한 4개의 AES 연산들, 즉, 키 복구를 갖는 암호 연산, 키 복구 없는 암호 연산, 키 스케줄 연산, 또는 CRC 계산 중 하나를 선택할 수 있다. AES 암호 비트(104a)는 암호화 연산과 해독 연산 사이에 선택할 수 있다. AES 키 선택 비트들(104e, 104f)은 입력 암호 키를 위한 3개의 가능한 입력 사이즈들, 즉, 128, 192, 또는 256 비트 중 하나를 선택할 수 있다.
AES 연산 비트들(104c, 104d) 양쪽 모두를 클리어하는 것(0으로 설정하는 것)은 키 복구 없는 연산을 선택한다. 또한, AES 키 선택 비트들(104e, 104f) 양쪽 모두를 클리어하는 것(0으로 설정하는 것)은 128 비트 키를 사용하는 키 복구 없는 AES 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 연산이 각각 해독일지 또는 암호화일지를 결정한다.
AES 연산 비트들(104c, 104d) 양쪽 모두를 클리어하는 것(0으로 설정하는 것)은 키 복구 없는 연산을 선택한다. 또한, AES 키 선택 비트(104e)를 1로 설정하는 것 및 AES 키 선택 비트(104f)를 클리어하는 것(0으로 설정하는 것)은 192 비트 키를 사용하는 키 복구 없는 AES 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 연산이 각각 해독일지 또는 암호화일지를 결정한다.
AES 연산 비트들(104c, 104d) 양쪽 모두를 클리어하는 것(0으로 설정하는 것)은 키 복구 없는 연산을 선택한다. 또한, AES 키 선택 비트(104e)를 클리어하는 것(0으로 설정하는 것) 및 AES 키 선택 비트(104f)를 1로 설정하는 것은 256 비트 키를 사용하는 키 복구 없는 AES 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 연산이 각각 해독일지 또는 암호화일지를 결정한다.
AES 연산 비트(104d)를 클리어하는 것(0으로 설정하는 것) 및 AES 연산 비트(104c)를 1로 설정하는 것은 키 스케줄 연산을 선택한다. 또한, AES 키 선택 비트들(104e, 104f) 양쪽 모두를 클리어하는 것(0으로 설정하는 것)은 128 비트 키를 사용하는 키 스케줄 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 키 스케줄 연산이 각각 키 스케줄일지 또는 역 키 스케줄 연산일지를 결정한다.
AES 연산 비트(104d)를 클리어하는 것(0으로 설정하는 것) 및 AES 연산 비트(104c)를 1로 설정하는 것은 키 스케줄 연산을 선택한다. 또한, AES 키 선택 비트(104e)를 1로 설정하는 것 및 AES 키 선택 비트(104f)를 클리어하는 것(0으로 설정하는 것)은 192 비트 키를 사용하는 키 스케줄 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 키 스케줄 연산이 각각 키 스케줄일지 또는 역 키 스케줄 연산일지를 결정한다.
AES 연산 비트(104d)를 클리어하는 것(0으로 설정하는 것) 및 AES 연산 비트(104c)를 1로 설정하는 것은 키 스케줄 연산을 선택한다. 또한, AES 키 선택 비트(104e)를 클리어하는 것(0으로 설정하는 것) 및 AES 키 선택 비트(104f)를 1로 설정하는 것은 256 비트 키를 사용하는 키 스케줄 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 키 스케줄 연산이 각각 키 스케줄일지 또는 역 키 스케줄 연산일지를 결정한다.
AES 연산 비트(104c)를 클리어하는 것(0으로 설정하는 것) 및 AES 연산 비트(104d)를 1로 설정하는 것은 키 복구를 갖는 연산을 선택한다. 또한, AES 키 선택 비트들(104e, 104f) 양쪽 모두를 클리어하는 것(0으로 설정하는 것)은 128 비트 키를 사용하는 키 복구를 갖는 AES 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 연산이 각각 해독일지 또는 암호화일지를 결정한다.
AES 연산 비트(104c)를 클리어하는 것(0으로 설정하는 것) 및 AES 연산 비트(104d)를 1로 설정하는 것은 키 복구를 갖는 연산을 선택한다. 또한, AES 키 선택 비트(104e)를 1로 설정하는 것 및 AES 키 선택 비트(104f)를 클리어하는 것(0으로 설정하는 것)은 192 비트 키를 사용하는 키 복구를 갖는 AES 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 연산이 각각 해독일지 또는 암호화일지를 결정한다.
AES 연산 비트(104c)를 클리어하는 것(0으로 설정하는 것) 및 AES 연산 비트(104d)를 1로 설정하는 것은 키 복구를 갖는 연산을 선택한다. 또한, AES 키 선택 비트(104e)를 클리어하는 것(0으로 설정하는 것) 및 AES 키 선택 비트(104f)를 1로 설정하는 것은 256 비트 키를 사용하는 키 복구를 갖는 AES 연산을 선택한다. AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것) 또는 1로 설정하는 것은 연산이 각각 해독일지 또는 암호화일지를 결정한다.
AES 연산 비트들(104c, 104d) 양쪽 모두를 1로 설정하는 것은 키 CRC 계산을 선택한다. 또한, AES 키 선택 비트들(104e, 104f) 양쪽 모두를 클리어하는 것(0으로 설정하는 것) 및 AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것)은 AES-128 키 CRC 연산을 선택한다.
AES 연산 비트들(104c, 104d) 양쪽 모두를 1로 설정하는 것은 키 CRC 계산을 선택한다. 또한, AES 키 선택 비트(104e)를 1로 설정하는 것, AES 키 선택 비트(104f)를 클리어하는 것(0으로 설정하는 것) 및 AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것)은 AES-192 키 CRC 연산을 선택한다.
AES 연산 비트들(104c, 104d) 양쪽 모두를 1로 설정하는 것은 키 CRC 계산을 선택한다. 또한, AES 키 선택 비트(104e)를 클리어하는 것(0으로 설정하는 것), AES 키 선택 비트(104f)를 1로 설정하는 것 및 AES 암호 비트(104a)를 클리어하는 것(0으로 설정하는 것)은 AES-256 키 CRC 연산을 선택한다.
AES 계산 타이밍
도 3b는 AES 연산 레지스터를 이용하여 선택된 AES 연산들(354)을 위한 (중앙 처리 장치(CPU) 사이클에서의) 실행 시간들(352)을 보여주는 표(350)이다. 도 3a의 표(300)는 AES 연산들(354)을 선택하기 위해 이용되는 AES 연산 레지스터의 비트들에 대한 값들을 보여준다.
일반적으로, 보다 큰 암호 키들을 사용하는 AES 연산들은 완료하기 위해 더 많은 CPU 사이클을 요구한다. 키 복구를 사용하는 AES 연산들도 더 많은 CPU 사이클을 이용한다. 그러나, CPU 사이클의 증가는 통합 프로세서의 사이즈를 감소시키는 암호 키를 저장하기 위해 필요한 키 레지스터들의 수의 감소에 의해 상쇄될 수 있다. 또한, 키 복구는 암호 키의 불필요한 조작의 양을 감소시켜 암호 시스템에서 보안 문제들을 감소시킨다.
AES 키 상태도
도 4는 고급 암호화 표준(AES) 블록(예를 들면, 도 1의 AES 블록(102))에서의 예시 AES 키 상태들을 보여주는 상태도(400)이다. 상태도(400)는 암호화 및 해독에서 사용되는 AES 암호 키에 대한 가능한 키 상태들 및 키 값들을 보여준다. 상태도(400)는 키가 진화할 수 있는 방법들과 AES 블록에 의해 실행되는 연산들 사이의 연결을 보여준다. 도 4에 도시된 AES 연산들은, 도 3에 도시된 고급 암호화 표준(AES) 연산 레지스터 내의 비트들에 의해 선택되고 AES 블록(102)에 포함된 도 2의 AES 시스템(200)에 의해 실행되는 AES 연산들일 수 있다.
상호 연결선들은 AES 연산들을 보여준다. 실선들은 FIPS-197 AES 표준에 순응하는 연산들을 보여준다. 점선들은 AES 연산들의 비통상적인 사용(unusual usage)을 수반할 수 있는 FIPS-197 AES 표준에 순응하지 않는(non-compliant) 연산들을 보여준다.
AES 블록이 키 상태(402)에 있을 때, 키 복구를 갖는 AES 암호화 연산(404)을 수행하는 것은 AES 블록을 키 상태(402)로 되돌려 놓을 수 있다. AES 블록이 키 스케줄 상태(406)에 있을 때, 키 복구를 갖는 AES 해독 연산(408)을 수행하는 것은 AES 블록을 키 스케줄 상태(404)로 되돌려 놓을 수 있다.
AES 블록이 키 상태(402)에 있을 때, 키 복구 없는 AES 암호화 연산(410)을 수행하는 것은 AES 블록을 키 스케줄 상태(406)에 놓을 수 있다. AES 블록이 키 스케줄 상태(406)에 있을 때, 키 복구 없는 AES 해독 연산(412)을 수행하는 것은 AES 블록을 키 상태(402)로 놓을 수 있다.
AES 블록이 키 상태(402)에 있을 때, 키 스케줄 연산(414)을 수행하는 것은 AES 블록을 키 스케줄 상태(406)에 놓을 수 있다. AES 블록이 키 스케줄 상태(406)에 있을 때, 역 키 스케줄 연산(416)을 수행하는 것은 AES 블록을 키 상태(402)로 놓을 수 있다.
순응하지 않는 연산들은 AES 블록이 예기치 않은 상태들로 이행하는 것으로 귀결될 수 있다. AES 블록이 키 상태(402)에 있을 때, 키 복구 없는 AES 해독 연산(418)을 수행하는 것은 AES 블록을 예기치 않은 키 상태(420)에 놓을 수 있다. AES 블록이 키 상태(402)에 있을 때, 역 키 스케줄 연산(420)을 수행하는 것은 AES 블록을 예기치 않은 키 상태(422)에 놓을 수 있다. AES 블록이 키 상태(402)에 있을 때, 키 복구를 갖는 AES 해독 연산(432)을 수행하는 것은 AES 블록을 키 상태(402)에 놓을 수 있다. 그러나, AES 해독 연산은 키 스케줄을 그의 입력 키로서 이용하므로, AES 블록은 아마 이 연산을 수행하지 않을 것이다.
키 스케줄 상태(406)에 있을 때, 키 복구 없는 AES 암호 연산(424)은 AES 블록을 예기치 않은 키 상태(426)에 놓을 수 있다. 키 스케줄 상태(406)에 있을 때, 키 스케줄 연산(428)을 수행하는 것은 AES 블록을 예기치 않은 키 상태(430)에 놓을 수 있다. AES 블록이 키 스케줄 상태(406)에 있을 때, 키 복구를 갖는 AES 암호화 연산(434)을 수행하는 것은 AES 블록을 키 스케줄 상태(406)에 놓을 수 있다. 그러나, AES 암호화 연산을 키를 그의 입력 키로서 이용하므로, AES 블록은 아미 이 연산을 수행하지 않을 것이다.
암호화 프로세스의 구현
도 5는 암호 시스템에서의 암호화 프로세스(500)의 구현의 흐름도이다. 암호 시스템은 도 1에 도시된 AES 암호 엔진(100)을 포함할 수 있다. 암호화 프로세스는 도 1-4에서 설명된 AES 알고리즘을 이용할 수 있다.
프로세스(500)는 암호 시스템이 암호화를 위한 데이터의 블록을 수신하는 것으로 시작된다(단계 502). 암호 시스템은 데이터의 서브블록에 포함된 비트의 수를 결정하고, 데이터의 서브블록의 사이즈는 수신된 데이터의 블록의 사이즈보다 작다(단계 504). 예를 들면, 도 1에 관하여 설명된 바와 같이, AES 알고리즘에서 사용되는 데이터의 서브블록은 128 비트일 수 있다. 입력된 데이터의 블록은 데이터의 다수의 서브블록들로 분할될 수 있고 데이터의 각각의 서브블록은 128 비트이다. 암호 시스템은 입력된 데이터의 블록에 포함된 데이터의 128 비트 블록들의 수 n을 결정한다(단계 506). 다음으로, 암호 시스템은 암호 키를 획득한다(단계 508). 암호 시스템은 AES 알고리즘 및 암호 키를 이용하여 데이터의 n번째 128 비트 서브블록을 암호화한다(단계 510). 예를 들면, 암호 시스템에 포함된 AES 암호 엔진(100)은 데이터의 n번째 128 비트 서브블록을 암호화할 수 있다.
암호 시스템은 키 복구 연산을 사용하여 암호 키를 복구한다(단계 512). 예를 들면, 암호 시스템의 AES 암호 엔진(100) 내의 AES 블록(102)은 다음 서브블록 암호화에서 사용되는 키를 복구하는 키 복구 연산을 포함할 수 있다. 암호 시스템은 데이터의 서브블록들의 수를 감소시킬 수 있다(단계 514). 만일 암호화할 데이터의 서브블록이 남아 있다면(단계 516에서 n이 0이 아니라면), 프로세스(500)는 단계 510으로 계속된다. 그 후 암호 엔진은 단계 512에서 복구된 키를 이용하여 데이터의 다른 서브블록을 암호화한다. 만약 암호화할 데이터의 서브블록이 남아 있지 않다면(단계 516에서 n이 0이라면), 암호 시스템은 수신된 데이터의 암호화된 블록을 출력할 수 있다(단계 518). 프로세스(500)는 종료된다.
일부 구현들에서, 프로세스(500)는 입력된 데이터의 블록이 n개의 서브블록들을 포함하는 경우 제1 서브블록에서 시작하여 n번째 서브블록에서 끝나는 데이터의 서브블록들을 암호화할 수 있다.
해독 프로세스의 구현
도 6은 암호 시스템에서의 해독 프로세스(600)의 구현의 흐름도이다. 암호 시스템은 도 1에 도시된 AES 암호 엔진(100)을 포함할 수 있다. 해독 프로세스는 도 1-4에서 설명된 AES 알고리즘을 이용할 수 있다.
프로세스(600)는 암호 시스템이 해독을 위한 데이터의 블록을 수신하는 것으로 시작된다(단계 602). 암호 시스템은 데이터의 서브블록에 포함된 비트의 수를 결정하고, 데이터의 서브블록의 사이즈는 수신된 데이터의 블록의 사이즈보다 작다(단계 604). 예를 들면, 도 1에 관하여 설명된 바와 같이, AES 알고리즘에서 사용되는 데이터의 서브블록은 128 비트일 수 있다. 입력된 데이터의 블록은 데이터의 다수의 서브블록들로 분할될 수 있고 데이터의 각각의 서브블록은 128 비트이다. 암호 시스템은 입력된 데이터의 블록에 포함된 데이터의 128 비트 블록들의 수 n을 결정한다(단계 606). 다음으로, 암호 시스템은 키 스케줄을 획득한다(단계 608). 암호 시스템은 AES 알고리즘 및 키 스케줄을 이용하여 데이터의 n번째 128 비트 서브블록을 해독한다(단계 610). 예를 들면, 암호 시스템에 포함된 AES 암호 엔진(100)은 데이터의 n번째 128 비트 서브블록을 해독할 수 있다.
암호 시스템은 역 키 복구 연산을 이용하여 키 스케줄을 복구한다(단계 612). 예를 들면, 암호 시스템의 AES 암호 엔진(100) 내의 AES 블록(102)은 다음 서브블록 연산에서 사용되는 키 스케줄을 복구하는 역 키 복구 연산을 포함할 수 있다. 암호 시스템은 데이터의 서브블록들의 수를 감소시킬 수 있다(단계 614). 만일 해독할 데이터의 서브블록이 남아 있다면(단계 616에서 n이 0이 아니라면), 프로세스(600)는 단계 610으로 계속된다. 그 후 암호 엔진은 단계 612에서 복구된 키를 이용하여 데이터의 다른 서브블록을 해독한다. 만약 해독할 데이터의 서브블록이 남아 있지 않다면(단계 616에서 n이 0이라면), 암호 시스템은 수신된 데이터의 해독된 블록을 출력할 수 있다(단계 618). 프로세스(600)는 종료된다.
일부 구현들에서, 프로세스(600)는 입력된 데이터의 블록이 n개의 서브블록들을 포함하는 경우 제1 서브블록에서 시작하여 n번째 서브블록에서 끝나는 데이터의 서브블록들을 해독할 수 있다.
시스템 아키텍처
도 7은 도 1에서 설명된 고급 암호화 표준(AES) 암호 엔진을 포함할 수 있는 암호 시스템을 포함할 수 있는 시스템의 구현의 블록도이다. 시스템(700)은 프로세서(710), 메모리(720), 저장 장치(730), 및 입력/출력 장치(740)를 포함한다. 이 컴포넌트들(710, 720, 730, 및 740) 각각은 시스템 버스(750)를 이용하여 상호 연결된다. 프로세서(710)는 시스템(700) 내의 실행을 위한 명령어들을 처리할 수 있다. 일부 구현들에서, 프로세서(710)는 싱글 스레드 프로세서(single-threaded processor)이다. 다른 구현에서, 프로세서(710)는 멀티 스레드 프로세서(multi-threaded processor)이다. 프로세서(710)는 입력/출력 장치(740) 상에 사용자 인터페이스를 위한 그래픽 정보를 표시하기 위해 메모리(720)에 또는 저장 장치(730)에 저장된 명령어들을 처리할 수 있다.
메모리(720)는 시스템(700) 내의 정보를 저장한다. 일부 구현들에서, 메모리(720)는 컴퓨터 판독가능한 매체이다. 다른 구현들에서, 메모리(720)는 휘발성 메모리 유닛이다. 또 다른 구현들에서, 메모리(720)는 비휘발성 메모리 유닛이다.
저장 장치(730)는 시스템(700)을 위한 대용량 저장을 제공할 수 있다. 일부 구현들에서, 저장 장치(730)는 컴퓨터 판독가능한 매체이다. 다양한 상이한 구현들에서, 저장 장치(730)는 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 또는 테이프 장치일 수 있다.
입력/출력 장치(740)는 시스템(700)을 위한 입력/출력 동작들을 제공한다. 일부 구현들에서, 입력/출력 장치(740)는 키보드 및/또는 포인팅 장치를 포함한다. 다른 구현들에서, 입력/출력 장치(740)는 그래픽 사용자 인터페이스를 표시하기 위한 디스플레이 유닛을 포함한다.
설명된 특징들은 디지털 전자 회로에서, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어에서, 또는 그것들의 조합들에서 구현될 수 있다. 그 특징들은 프로그램 가능한 프로세서에 의한 실행을 위해, 정보 캐리어에, 예를 들면, 기계 판독가능 저장 장치에 또는 전파 신호에 실체적으로 구현된 컴퓨터 프로그램 제품에서 구현될 수 있고; 방법 단계들은 입력 데이터에 작용하여 출력을 생성하는 것에 의해 설명된 구현들의 기능들을 수행하는 명령어들의 프로그램을 실행하는 프로그램 가능한 프로세서에 의해 수행될 수 있다. 설명된 특징들은 데이터 저장 시스템, 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치로부터 데이터 및 명령어들을 수신하고 그것들에 데이터 및 명령어들을 송신하도록 연결된 적어도 하나의 프로그램 가능한 프로세서를 포함하는 프로그램 가능한 시스템 상에서 실행 가능한 하나 이상의 컴퓨터 프로그램들에서 유리하게 구현될 수 있다. 컴퓨터 프로그램은 특정 동작을 수행하거나 특정 결과를 초래하기 위해 컴퓨터에서 직접 또는 간접적으로 이용될 수 있는 명령어들의 세트이다. 컴퓨터 프로그램은 컴파일된 또는 인터프리트된 언어들을 포함하는, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 그것은 임의의 형태로, 예를 들면, 독립형 프로그램으로서 또는 컴퓨팅 환경에서 사용하기에 적합한 모듈, 컴포넌트, 서브루틴, 또는 다른 유닛으로서 전개될 수 있다.
명령어들의 프로그램의 실행을 위한 적합한 프로세서들은, 예로서, 범용 및 특수 목적 마이크로프로세서 양쪽 모두, 및 단독 프로세서 또는 임의의 종류의 컴퓨터의 다수의 프로세서들 중 하나를 포함한다. 일반적으로, 프로세서는 ROM(read-only memory) 또는 RAM(random access memory) 또는 양쪽 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수적인 엘리먼트들은 명령어들을 실행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리들이다. 일반적으로, 컴퓨터는 또한 데이터 파일들을 저장하기 위한 하나 이상의 대용량 저장 장치들을 포함하거나, 그러한 장치들과 통신하도록 동작 가능하게 연결될 것이고; 그러한 장치들은 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 광자기 디스크; 및 광 디스크를 포함한다. 컴퓨터 프로그램 명령어들 및 데이터를 실체적으로 구현하기에 적합한 저장 장치들은, 예로서 EPROM, EEPROM, 및 플래시 메모리 장치와 같은 반도체 메모리 장치; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 광자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함하는, 모든 형태의 비휘발성 메모리를 포함한다. 프로세서 및 메모리는 ASIC(application-specific integrated circuit)들에 의해 보충되거나, ASIC들에 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 특징들은 사용자에게 정보를 표시하기 위한 CRT(cathode ray tube) 또는 LCD(liquid crystal display)와 같은 디스플레이 장치 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 마우스 또는 트랙볼과 같은 포인팅 장치를 갖는 컴퓨터에서 구현될 수 있다.
특징들은 데이터 서버와 같은 백엔드 컴포넌트를 포함하는, 또는 애플리케이션 서버 또는 인터넷 서버와 같은 미들웨어 컴포넌트를 포함하는, 또는 그래픽 사용자 인터페이스 또는 인터넷 브라우저를 갖는 클라이언트 컴포넌트와 같은 프런트엔드 컴포넌트를 포함하는, 또는 그것들의 임의의 조합을 포함하는 컴퓨터 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 통신 네트워크와 같은 디지털 데이터 통신의 임의의 형태 또는 매체에 의해 연결될 수 있다. 통신 네트워크들의 예들은, 예를 들면, LAN, WAN, 및 인터넷을 형성하는 컴퓨터들 및 네트워크들을 포함한다.
컴퓨터 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 멀리 떨어져 있고 전형적으로 네트워크를 통하여 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터들에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들의 덕분으로 발생한다.
다수의 구현들이 설명되었다. 그럼에도 불구하고, 다양한 변경들이 이루어질 수 있다는 것이 이해될 것이다. 예를 들면, 하나 이상의 구현들의 엘리먼트들이 조합, 삭제, 변경, 또는 보충되어 추가적인 구현들을 형성할 수 있다. 도면들에서 도시된 논리 흐름들은 바람직한 결과들을 달성하기 위해, 도시된 특정한 순서, 또는 순차적인 순서를 요구하지 않는다. 또한, 다른 단계들이 제공될 수 있고, 또는 설명된 흐름들로부터 단계들이 제거될 수 있고, 다른 컴포넌트들이 설명된 시스템들에 추가되거나, 설명된 시스템들로부터 제거될 수 있다. 따라서, 다른 구현들은 다음의 청구항들의 범위 내에 있다.

Claims (16)

  1. 암호 시스템(cryptographic system)으로서,
    키를 포함하는 레지스터; 및
    상기 레지스터에 연결된 프로세서
    를 포함하고,
    상기 프로세서는,
    상기 레지스터를 작업 공간으로 이용하여 키 스케줄(key schedule)을 계산하는 것을 포함하는 제1 암호화 연산(encrypting operation)을 수행하고,
    상기 제1 암호화 연산의 끝에, 제2 암호화 연산에서의 사용을 위해 상기 레지스터로부터 상기 키를 복구(recover)하도록 동작 가능한 암호 시스템.
  2. 제1항에 있어서,
    상기 키를 복구하는 것은 역 키 스케줄 연산(inverse key schedule operation)을 실행하는 것을 포함하는 암호 시스템.
  3. 암호 시스템으로서,
    키를 포함하는 레지스터; 및
    상기 레지스터에 연결된 프로세서
    를 포함하고,
    상기 프로세서는,
    상기 레지스터를 작업 공간으로 이용하여 역 키 스케줄(inverse key schedule)을 계산하는 것을 포함하는 제1 해독 연산(decrypting operation)을 수행하고,
    상기 제1 해독 연산의 끝에, 제2 해독 연산에서의 사용을 위해 상기 레지스터로부터 상기 키를 복구하도록 동작 가능한 암호 시스템.
  4. 제3항에 있어서,
    상기 키를 복구하는 것은 키 스케줄 연산을 실행하는 것을 포함하는 암호 시스템.
  5. 암호 시스템에서 데이터를 암호화하기 위한 방법으로서,
    암호화를 위한 데이터의 블록을 수신하는 단계;
    데이터의 서브블록 내의 비트들의 수를 결정하는 단계 - 데이터의 서브블록 내의 비트들의 수는 상기 데이터의 블록 내의 비트들의 수 이하임 -;
    상기 데이터의 블록을 포함하는 데이터의 복수의 서브블록들을 결정하는 단계;
    키를 획득하는 단계;
    데이터의 제1 서브블록에 대해 암호화 연산을 수행하는 단계 - 상기 암호화 연산은, 상기 키를 이용하여 상기 데이터의 제1 서브블록을 암호화하는 단계; 및 상기 키를 복구하는 단계를 포함함 -; 및
    상기 복구된 키를 이용하여 데이터의 제2 서브블록에 대해 상기 암호화 연산을 수행하는 단계
    를 포함하는 방법.
  6. 제5항에 있어서,
    상기 키를 복구하는 단계는 역 키 스케줄 연산을 실행하는 단계를 포함하는 방법.
  7. 제5항에 있어서,
    상기 비트들의 수는 128인 방법.
  8. 암호 시스템에서 데이터를 해독하기 위한 방법으로서,
    해독을 위한 데이터의 블록을 수신하는 단계;
    데이터의 서브블록 내의 비트들의 수를 결정하는 단계 - 데이터의 서브블록 내의 비트들의 수는 상기 데이터의 블록 내의 비트들의 수 이하임 -;
    상기 데이터의 블록을 포함하는 데이터의 복수의 서브블록들을 결정하는 단계;
    키 스케줄을 획득하는 단계;
    데이터의 제1 서브블록에 대해 해독 연산을 수행하는 단계 - 상기 해독 연산은, 상기 키 스케줄을 이용하여 상기 데이터의 제1 서브블록을 해독하는 단계; 및 상기 키 스케줄을 복구하는 단계를 포함함 -; 및
    상기 복구된 키 스케줄을 이용하여 데이터의 제2 서브블록에 대해 상기 해독 연산을 수행하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 키 스케줄을 복구하는 단계는 키 스케줄 연산을 실행하는 단계를 포함하는 방법.
  10. 제8항에 있어서,
    상기 비트들의 수는 128인 방법.
  11. 암호 시스템에서 데이터를 암호화하기 위한 시스템으로서,
    암호화를 위한 데이터의 블록을 수신하도록 동작 가능한 인터페이스; 및
    상기 인터페이스에 연결된 프로세서
    를 포함하고,
    상기 프로세서는,
    데이터의 서브블록 내의 비트들의 수를 결정하고 - 데이터의 서브블록 내의 비트들의 수는 상기 데이터의 블록 내의 비트들의 수 이하임 -,
    상기 데이터의 블록을 포함하는 데이터의 복수의 서브블록들을 결정하고,
    키를 획득하고,
    데이터의 제1 서브블록에 대해 암호화 연산을 수행하고 - 상기 암호화 연산은, 상기 키를 이용하여 상기 데이터의 제1 서브블록을 암호화하는 것 및 상기 키를 복구하는 것을 포함함 -,
    상기 복구된 키를 이용하여 데이터의 제2 서브블록에 대해 상기 암호화 연산을 수행하도록 동작 가능한 시스템.
  12. 제11항에 있어서,
    상기 키를 복구하는 것은 역 키 스케줄 연산을 실행하는 것을 포함하는 시스템.
  13. 제11항에 있어서,
    상기 비트들의 수는 128인 시스템.
  14. 암호 시스템에서 데이터를 해독하기 위한 시스템으로서,
    해독을 위한 데이터의 블록을 수신하도록 동작 가능한 인터페이스; 및
    상기 인터페이스에 연결된 프로세서
    를 포함하고,
    상기 프로세서는,
    데이터의 서브블록 내의 비트들의 수를 결정하고 - 데이터의 서브블록 내의 비트들의 수는 상기 데이터의 블록 내의 비트들의 수 이하임 -,
    상기 데이터의 블록을 포함하는 데이터의 복수의 서브블록들을 결정하고,
    키 스케줄을 획득하고,
    데이터의 제1 서브블록에 대해 해독 연산을 수행하고 - 상기 해독 연산은, 상기 키 스케줄을 이용하여 상기 데이터의 제1 서브블록을 해독하는 것 및 상기 키 스케줄을 복구하는 것을 포함함 -,
    상기 복구된 키 스케줄을 이용하여 데이터의 제2 서브블록에 대해 상기 해독 연산을 수행하도록 동작 가능한 시스템.
  15. 제14항에 있어서,
    상기 키 스케줄을 복구하는 것은 키 스케줄 연산을 실행하는 것을 포함하는 시스템.
  16. 제14항에 있어서,
    상기 비트들의 수는 128인 시스템.
KR1020117022719A 2009-02-27 2010-02-25 암호 시스템을 위한 키 복구 메커니즘 KR20110129932A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/395,504 US8233620B2 (en) 2009-02-27 2009-02-27 Key recovery mechanism for cryptographic systems
US12/395,504 2009-02-27

Publications (1)

Publication Number Publication Date
KR20110129932A true KR20110129932A (ko) 2011-12-02

Family

ID=42667096

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117022719A KR20110129932A (ko) 2009-02-27 2010-02-25 암호 시스템을 위한 키 복구 메커니즘

Country Status (7)

Country Link
US (1) US8233620B2 (ko)
EP (1) EP2401837A2 (ko)
KR (1) KR20110129932A (ko)
CN (1) CN102334307B (ko)
CA (1) CA2751623A1 (ko)
TW (1) TWI469609B (ko)
WO (1) WO2010126647A2 (ko)

Families Citing this family (147)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US9106694B2 (en) 2004-04-01 2015-08-11 Fireeye, Inc. Electronic message analysis for malware detection
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US8793787B2 (en) 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US8997219B2 (en) 2008-11-03 2015-03-31 Fireeye, Inc. Systems and methods for detecting malicious PDF network content
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
CA2838203C (en) 2011-06-06 2021-04-06 Certicom Corp. Squaring binary finite field elements
US20130067212A1 (en) * 2011-09-14 2013-03-14 Augustin J. Farrugia Securing implementation of cryptographic algorithms using additional rounds
US9577826B2 (en) * 2011-12-15 2017-02-21 Inside Secure Method of generating proven prime numbers suitable for being implemented in a smart card
US9135450B2 (en) 2011-12-21 2015-09-15 Intel Corporation Systems and methods for protecting symmetric encryption keys
KR101330664B1 (ko) * 2012-06-15 2013-11-15 한국전자통신연구원 저전력 암호화 장치 및 방법
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US8990944B1 (en) 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors
US9009823B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications installed on mobile devices
US9176843B1 (en) 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
US9367681B1 (en) 2013-02-23 2016-06-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9195829B1 (en) 2013-02-23 2015-11-24 Fireeye, Inc. User interface with real-time visual playback along with synchronous textual analysis log display and event/time index for anomalous behavior detection in applications
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9626509B1 (en) 2013-03-13 2017-04-18 Fireeye, Inc. Malicious content analysis with multi-version application support within single operating environment
US9104867B1 (en) 2013-03-13 2015-08-11 Fireeye, Inc. Malicious content analysis using simulated user interaction without user involvement
US9311479B1 (en) 2013-03-14 2016-04-12 Fireeye, Inc. Correlation and consolidation of analytic data for holistic view of a malware attack
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
WO2014145805A1 (en) 2013-03-15 2014-09-18 Mandiant, Llc System and method employing structured intelligence to verify and contain threats at endpoints
US10713358B2 (en) 2013-03-15 2020-07-14 Fireeye, Inc. System and method to extract and utilize disassembly features to classify software intent
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9635039B1 (en) 2013-05-13 2017-04-25 Fireeye, Inc. Classifying sets of malicious indicators for detecting command and control communications associated with malware
US10133863B2 (en) 2013-06-24 2018-11-20 Fireeye, Inc. Zero-day discovery system
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
US10515214B1 (en) 2013-09-30 2019-12-24 Fireeye, Inc. System and method for classifying malware within content created during analysis of a specimen
US9690936B1 (en) 2013-09-30 2017-06-27 Fireeye, Inc. Multistage system and method for analyzing obfuscated content for malware
US9628507B2 (en) 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US9736179B2 (en) 2013-09-30 2017-08-15 Fireeye, Inc. System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US9921978B1 (en) 2013-11-08 2018-03-20 Fireeye, Inc. System and method for enhanced security of storage devices
US9189627B1 (en) 2013-11-21 2015-11-17 Fireeye, Inc. System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection
US9747446B1 (en) 2013-12-26 2017-08-29 Fireeye, Inc. System and method for run-time object classification
US9756074B2 (en) 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US9292686B2 (en) 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US9241010B1 (en) 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9223972B1 (en) 2014-03-31 2015-12-29 Fireeye, Inc. Dynamically remote tuning of a malware content detection system
US9432389B1 (en) 2014-03-31 2016-08-30 Fireeye, Inc. System, apparatus and method for detecting a malicious attack based on static analysis of a multi-flow object
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US9973531B1 (en) 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US9438623B1 (en) 2014-06-06 2016-09-06 Fireeye, Inc. Computer exploit detection using heap spray pattern matching
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US9398028B1 (en) 2014-06-26 2016-07-19 Fireeye, Inc. System, device and method for detecting a malicious attack based on communcations between remotely hosted virtual machines and malicious web servers
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
US9363280B1 (en) 2014-08-22 2016-06-07 Fireeye, Inc. System and method of detecting delivery of malware using cross-customer data
US10671726B1 (en) 2014-09-22 2020-06-02 Fireeye Inc. System and method for malware analysis using thread-level event monitoring
US10027689B1 (en) 2014-09-29 2018-07-17 Fireeye, Inc. Interactive infection visualization for improved exploit detection and signature generation for malware and malware families
US9773112B1 (en) 2014-09-29 2017-09-26 Fireeye, Inc. Exploit detection of malware and malware families
US9485088B2 (en) * 2014-10-31 2016-11-01 Combined Conditional Access Development And Support, Llc Systems and methods for dynamic data masking
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US10075455B2 (en) 2014-12-26 2018-09-11 Fireeye, Inc. Zero-day rotating guest image profile
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US9690606B1 (en) 2015-03-25 2017-06-27 Fireeye, Inc. Selective system call monitoring
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9438613B1 (en) 2015-03-30 2016-09-06 Fireeye, Inc. Dynamic content activation for automated analysis of embedded objects
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US10417031B2 (en) 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US9654485B1 (en) 2015-04-13 2017-05-16 Fireeye, Inc. Analytics-based security monitoring system and method
EP3086585B1 (en) * 2015-04-23 2019-12-11 Nxp B.V. Method and system for securing data communicated in a network
US9594904B1 (en) 2015-04-23 2017-03-14 Fireeye, Inc. Detecting malware based on reflection
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10715542B1 (en) 2015-08-14 2020-07-14 Fireeye, Inc. Mobile application risk analysis
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
US10204532B2 (en) * 2015-09-25 2019-02-12 Intel Corporation Multiple input cryptographic engine
US10033747B1 (en) 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US10210329B1 (en) 2015-09-30 2019-02-19 Fireeye, Inc. Method to detect application execution hijacking using memory protection
US10706149B1 (en) 2015-09-30 2020-07-07 Fireeye, Inc. Detecting delayed activation malware using a primary controller and plural time controllers
US10601865B1 (en) 2015-09-30 2020-03-24 Fireeye, Inc. Detection of credential spearphishing attacks using email analysis
US10817606B1 (en) 2015-09-30 2020-10-27 Fireeye, Inc. Detecting delayed activation malware using a run-time monitoring agent and time-dilation logic
US9825976B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Detection and classification of exploit kits
US9825989B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Cyber attack early warning system
US10284575B2 (en) 2015-11-10 2019-05-07 Fireeye, Inc. Launcher for setting analysis environment variations for malware detection
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US10565378B1 (en) 2015-12-30 2020-02-18 Fireeye, Inc. Exploit of privilege detection framework
US10621338B1 (en) 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
US10050998B1 (en) 2015-12-30 2018-08-14 Fireeye, Inc. Malicious message analysis system
US10581874B1 (en) 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
US11552986B1 (en) 2015-12-31 2023-01-10 Fireeye Security Holdings Us Llc Cyber-security framework for application of virtual features
US9824216B1 (en) 2015-12-31 2017-11-21 Fireeye, Inc. Susceptible environment detection system
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10616266B1 (en) 2016-03-25 2020-04-07 Fireeye, Inc. Distributed malware detection system and submission workflow thereof
US10893059B1 (en) 2016-03-31 2021-01-12 Fireeye, Inc. Verification and enhancement using detection systems located at the network periphery and endpoint devices
US10169585B1 (en) 2016-06-22 2019-01-01 Fireeye, Inc. System and methods for advanced malware detection through placement of transition events
US10462173B1 (en) 2016-06-30 2019-10-29 Fireeye, Inc. Malware detection verification and enhancement by coordinating endpoint and malware detection systems
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10491627B1 (en) 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
US10795991B1 (en) 2016-11-08 2020-10-06 Fireeye, Inc. Enterprise search
US10587647B1 (en) 2016-11-22 2020-03-10 Fireeye, Inc. Technique for malware detection capability comparison of network security devices
US10581879B1 (en) 2016-12-22 2020-03-03 Fireeye, Inc. Enhanced malware detection for generated objects
US10552610B1 (en) 2016-12-22 2020-02-04 Fireeye, Inc. Adaptive virtual machine snapshot update framework for malware behavioral analysis
US10523609B1 (en) 2016-12-27 2019-12-31 Fireeye, Inc. Multi-vector malware detection and analysis
US10904286B1 (en) 2017-03-24 2021-01-26 Fireeye, Inc. Detection of phishing attacks using similarity analysis
US10554507B1 (en) 2017-03-30 2020-02-04 Fireeye, Inc. Multi-level control for enhanced resource and object evaluation management of malware detection system
US10902119B1 (en) 2017-03-30 2021-01-26 Fireeye, Inc. Data extraction system for malware analysis
US10798112B2 (en) 2017-03-30 2020-10-06 Fireeye, Inc. Attribute-controlled malware detection
US10791138B1 (en) 2017-03-30 2020-09-29 Fireeye, Inc. Subscription-based malware detection
US10855700B1 (en) 2017-06-29 2020-12-01 Fireeye, Inc. Post-intrusion detection of cyber-attacks during lateral movement within networks
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10601848B1 (en) 2017-06-29 2020-03-24 Fireeye, Inc. Cyber-security system and method for weak indicator detection and correlation to generate strong indicators
US10893068B1 (en) 2017-06-30 2021-01-12 Fireeye, Inc. Ransomware file modification prevention technique
US10747872B1 (en) 2017-09-27 2020-08-18 Fireeye, Inc. System and method for preventing malware evasion
US10805346B2 (en) 2017-10-01 2020-10-13 Fireeye, Inc. Phishing attack detection
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
US11005860B1 (en) 2017-12-28 2021-05-11 Fireeye, Inc. Method and system for efficient cybersecurity analysis of endpoint events
US11240275B1 (en) 2017-12-28 2022-02-01 Fireeye Security Holdings Us Llc Platform and method for performing cybersecurity analyses employing an intelligence hub with a modular architecture
US11271955B2 (en) 2017-12-28 2022-03-08 Fireeye Security Holdings Us Llc Platform and method for retroactive reclassification employing a cybersecurity-based global data store
US10826931B1 (en) 2018-03-29 2020-11-03 Fireeye, Inc. System and method for predicting and mitigating cybersecurity system misconfigurations
US10956477B1 (en) 2018-03-30 2021-03-23 Fireeye, Inc. System and method for detecting malicious scripts through natural language processing modeling
US11003773B1 (en) 2018-03-30 2021-05-11 Fireeye, Inc. System and method for automatically generating malware detection rule recommendations
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US11075930B1 (en) 2018-06-27 2021-07-27 Fireeye, Inc. System and method for detecting repetitive cybersecurity attacks constituting an email campaign
US11314859B1 (en) 2018-06-27 2022-04-26 FireEye Security Holdings, Inc. Cyber-security system and method for detecting escalation of privileges within an access token
US11228491B1 (en) 2018-06-28 2022-01-18 Fireeye Security Holdings Us Llc System and method for distributed cluster configuration monitoring and management
US11316900B1 (en) 2018-06-29 2022-04-26 FireEye Security Holdings Inc. System and method for automatically prioritizing rules for cyber-threat detection and mitigation
US11182473B1 (en) 2018-09-13 2021-11-23 Fireeye Security Holdings Us Llc System and method for mitigating cyberattacks against processor operability by a guest process
US11763004B1 (en) 2018-09-27 2023-09-19 Fireeye Security Holdings Us Llc System and method for bootkit detection
US11456891B2 (en) 2018-12-20 2022-09-27 Rolls-Royce North American Technologies Inc. Apparatus and methods for authenticating cyber secure control system configurations using distributed ledgers
US11368475B1 (en) 2018-12-21 2022-06-21 Fireeye Security Holdings Us Llc System and method for scanning remote services to locate stored objects with malware
US11258806B1 (en) 2019-06-24 2022-02-22 Mandiant, Inc. System and method for automatically associating cybersecurity intelligence to cyberthreat actors
US11556640B1 (en) 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
US11392700B1 (en) 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
US11886585B1 (en) 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution
US11637862B1 (en) 2019-09-30 2023-04-25 Mandiant, Inc. System and method for surfacing cyber-security threats with a self-learning recommendation engine

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH088897A (ja) 1994-06-15 1996-01-12 Nippon Telegr & Teleph Corp <Ntt> データの暗号化・復号処理方法及び暗号装置
US20080192928A1 (en) 2000-01-06 2008-08-14 Super Talent Electronics, Inc. Portable Electronic Storage Devices with Hardware Security Based on Advanced Encryption Standard
KR100525389B1 (ko) * 2001-01-17 2005-11-02 엘지전자 주식회사 실시간 입력 스트림의 암호화/복호화 장치
US7280657B2 (en) 2001-06-13 2007-10-09 Itt Manufacturing Enterprises, Inc. Data encryption and decryption system and method using merged ciphers
US7221763B2 (en) 2002-04-24 2007-05-22 Silicon Storage Technology, Inc. High throughput AES architecture
CA2486713A1 (en) * 2002-05-23 2003-12-04 Atmel Corporation Advanced encryption standard (aes) hardware cryptographic engine
US7257229B1 (en) * 2002-06-07 2007-08-14 Winbond Electronics Corporation Apparatus and method for key scheduling
US20040047466A1 (en) 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
JP2004133087A (ja) * 2002-10-09 2004-04-30 Sony Corp ブロック暗号方法およびブロック暗号回路
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
US20080019524A1 (en) 2006-06-29 2008-01-24 Kim Moo S Apparatus and method for low power aes cryptographic circuit for embedded system
JP4905000B2 (ja) 2006-09-01 2012-03-28 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7822206B2 (en) * 2006-10-26 2010-10-26 International Business Machines Corporation Systems and methods for management and auto-generation of encryption keys
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)

Also Published As

Publication number Publication date
TWI469609B (zh) 2015-01-11
CA2751623A1 (en) 2010-11-04
EP2401837A2 (en) 2012-01-04
WO2010126647A2 (en) 2010-11-04
TW201121279A (en) 2011-06-16
CN102334307B (zh) 2015-04-01
US20100220863A1 (en) 2010-09-02
WO2010126647A3 (en) 2010-12-29
CN102334307A (zh) 2012-01-25
US8233620B2 (en) 2012-07-31

Similar Documents

Publication Publication Date Title
US8233620B2 (en) Key recovery mechanism for cryptographic systems
US10158478B2 (en) Flexible architecture and instruction for advanced encryption standard (AES)
US8737606B2 (en) Method and system for high throughput blockwise independent encryption/decryption
US8301905B2 (en) System and method for encrypting data

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application