KR100494560B1 - Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법 - Google Patents

Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법 Download PDF

Info

Publication number
KR100494560B1
KR100494560B1 KR10-2002-0073321A KR20020073321A KR100494560B1 KR 100494560 B1 KR100494560 B1 KR 100494560B1 KR 20020073321 A KR20020073321 A KR 20020073321A KR 100494560 B1 KR100494560 B1 KR 100494560B1
Authority
KR
South Korea
Prior art keywords
round
encryption
decryption
key
data
Prior art date
Application number
KR10-2002-0073321A
Other languages
English (en)
Other versions
KR20040045517A (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 한국전자통신연구원
Priority to KR10-2002-0073321A priority Critical patent/KR100494560B1/ko
Publication of KR20040045517A publication Critical patent/KR20040045517A/ko
Application granted granted Critical
Publication of KR100494560B1 publication Critical patent/KR100494560B1/ko

Links

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
    • 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
    • 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

Rijndael 암호를 이용한 블록 데이터 실시간 암호복호화 장치 및 방법이 개시된다. 본 발명에 의한 블록 데이터 암호복호화 장치는, 블록 데이터와 입력 암호 키의 배타적 논리합 연산을 수행하는 입력키가산부; 상기 배타적 논리합 연산의 결과 및 상기 입력 암호 키를 이용하여 암호복호화 연산을 수행하는 라운드연산부; 및 라운드 수를 카운트하여 라운드연산부가 소정의 라운드 수만큼 상기 암호복호화 연산을 반복하게 하는 라운드제어부를 포함한다. 라운드 연산에 있어서 암호화 모듈과 복호화 모듈을 공유하고, 다중화기를 이용하여 쉬프트 연산을 구현하며, 쉬프트 연산과 대치 연산을 하나의 모듈로 구현하고, 믹스컬럼 연산에서의 곱셈을 XOR 게이트를 이용하여 구현함으로써, 전체 장치의 면적을 감소하고 소자 수를 감소하며 암호복호화에 걸리는 시간을 감소할 수 있다.

Description

Rijndael 암호를 이용한 블록 데이터 실시간 암호복호화 장치 및 방법{Real time block data encryption/decryption processor using Rijndael block cipher and method therefor}
본 발명은 데이터의 암호화 및 복호화에 관한 것으로, 특히 Rijndael 암호를 이용한 블록 데이터의 암호복호화 장치에 관한 것이다.
대표적인 비밀키 암호 시스템으로 DES(Data Encryption Standard)가 있는데 DES 암호의 안전성에 대한 문제 제기로 1997년 NIST(National Institute of Standards and Technology)에서 AES(Advanced Encryption Standard)를 공모하였고 평가 과정을 거쳐 2000년 10월 Rijndael 알고리듬이 최종 선택되었다.
Rijndael 암호는 DES 같은 암호 알고리듬이 Feistel 구조를 적용하는 것과는 달리 SPN(Substitution-Permutation Network) 구조를 적용하였기 때문에 암호화용 라운드 함수와 복호화용 라운드 함수가 다르므로 암호화 모듈과 복호화 모듈을 분리하여 설계하여야 한다. 또한 라운드 함수의 네 가지 연산 중 대치(Substitution) 연산에서 필요한 S-box는 많은 하드웨어 리소스를 차지하고, 믹스컬럼(MixColumn) 연산은 다항식 곱셈 연산을 포함하고 있으므로 많은 하드웨어 리소스를 차지하는 것은 물론이고, 연산 시간도 많이 걸리는 문제점이 있었다.
본 발명이 이루고자 하는 기술적 과제는 적은 면적을 가지고 빠른 속도를 가지는 블록 데이터 암호복호화 장치 및 방법을 제공하는 것이다.
본 발명이 이루고자 하는 다른 기술적 과제는 상기의 암호복호화 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다.
상기 기술적 과제를 이루기 위한 본 발명에 의한 블록 데이터 암호복호화 장치는, 블록 데이터와 입력 암호 키의 배타적 논리합 연산을 수행하는 입력키가산부; 상기 배타적 논리합 연산의 결과 및 상기 입력 암호 키를 이용하여 암호복호화 연산을 수행하는 라운드연산부; 및 라운드 수를 카운트하여 상기 라운드연산부가 소정의 라운드 수만큼 상기 암호복호화 연산을 반복하게 하는 라운드제어부를 포함하는 것이 바람직하다.
상기 기술적 과제를 이루기 위한 본 발명에 의한 블록 데이터 암호복호화 방법은, (a) 블록 데이터와 입력 암호 키의 배타적 논리합 연산을 수행하는 단계; (b) 상기 배타적 논리합 연산의 결과, 상기 입력 암호 키, 및 이전 라운드의 계산 값을 이용하여 하나의 라운드에 해당하는 암호복호화 연산을 수행하는 단계; 및 (c) 소정의 라운드 수만큼 상기 (b) 단계를 반복하는 단계를 포함하는 것이 바람직하다.
이하, 첨부된 도면들을 참조하여 본 발명에 따른 블록 데이터 암호복호화 장치 및 방법에 대해 상세히 설명한다.
도 1은 본 발명에 의한 Rijndael 암호를 이용한 블록 데이터 암호복호화 시스템의 일 실시예를 나타낸 블록도이다.
암호 시스템은 비밀키 암호 시스템과 공개키 암호 시스템으로 구분할 수 있다. 비밀키 암호 시스템은 비밀 채널을 통해 공유된 비밀키를 사용하여 상호간의 암호 통신을 하는 방식으로, 송신자와 수신자가 동일한 키로 암호화 및 복호화 과정을 수행해야 하므로 키를 안전하게 전송하고 보관하는데 어려움이 있다. 반면 공개키 암호 시스템은 암호화하는 키와 복호화하는 키가 서로 다른 암호 시스템으로, 상대의 공개키를 받아서 암호화하여 전송하면 수신측은 자신의 개인 키로 암호문을 복호화할 수 있다. 그러나 공개키 알고리듬은 암호화 및 복호화의 연산량이 매우 큰 단점이 있으므로 데이터의 암호화 및 복호화에는 비밀키 암호 시스템을 사용한다.
2000년 10월 NIST에 의해 채택된 비밀키 암호 시스템인 Rijndael 알고리듬은 128 bits 이상의 키를 사용해야 한다는 NIST의 요구에 따라 128bits, 192 bits, 256 bits의 세 가지 키 길이를 지원하고 입력 데이터 처리 단위는 128 bits, 192 bits, 256 bits를 지원한다.
도 1을 참조하면, 본 발명에 따른 Rijndael 암호복호화 시스템은 입출력 시스템 버스(100), 암호복호화의 시작과 Rijndael 블록 암호의 동작 모드 및 암호복호화의 종료를 알리는 상태 레지스터(101), 암호복호화할 입력 데이터와 입력 키, 초기 벡터(Initialization Vector, IV), 암호복호화된 출력 데이터를 저장하는 데이터 레지스터(102), Rijndael 암호 알고리듬을 수행하는 암호복호화 코어 장치(103)를 포함한다.
도 1을 참조하여 Rijndael 암호화 시스템의 동작을 살펴보면, 상태 레지스터(101)에 입력 값이 시스템 버스(100)를 통해 들어가고, 입력 데이터와 입력 키, 그리고 초기 벡터 값이 시스템 버스(100)를 통해 데이터 레지스터(102)에 저장되면, 이 값들이 Rijndael 암호복호화 코어(103)에 들어간다. 상태 레지스터(101)에서 시작 신호가 들어오면 Rijndael 암호복호화 코어(103)는 Rijndael 블록 암호의 모드를 상태 레지스터(101)를 통해 확인하고 모드에 따른 암호복호화 동작을 한다. 암호복호화가 끝나면 이를 알리는 done 신호를 상태 레지스터(101)에 저장하고 암호복호화된 결과 데이터를 데이터 레지스터(102)에 저장한다.
도 2는 본 발명에 의한 Rijndael 암호 코어의 일 실시예를 나타낸 블록도이다.
도 2를 참조하면, 본 발명에 따른 Rijndael 암호복호화 코어(103)는 Rijndael 블록 암호의 다섯 가지 모드 중 선택된 하나를 나타내는 값이 저장된 상태 레지스터(101)값을 통해서 모드를 선택하는 부분(200), 선택된 모드에 따라 암/복호화에 필요한 입력 데이터들을 초기화하는 부분(201), 그리고 데이터 암/복호화를 수행하는 부분(202)을 포함한다.
도 2를 참조하여 Rijndael 암호복호화 코어(103)의 동작 예를 살펴보면, 상태 레지스터(101)에서 시작 신호가 들어오면 상태 레지스터(101)에 저장된 값을 보고 블록 암호의 동작 모드를 결정한다. 블록 암호의 동작 모드가 결정되면 동작 모드에 따라 초기 벡터 값의 입력과 암호복호화 모듈(202)에 들어갈 입력 값을 결정하는 초기화 과정(201)을 거친다.
초기화 과정에서 ECB 암호화 모드라면 암호복호화 모듈(202)의 입력 값은 데이터 레지스터(102)에 저장된 데이터 중 입력 데이터(초기 벡터 값이 아닌)가 되고, 암호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다. ECB 복호화 모드라면 암호복호화 모듈(202)의 입력 값은 데이터 레지스터(102)에 저장된 데이터 중 입력 데이터가 되고, 복호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다.
CBC 암호화 모드라면 암호복호화 모듈(202)의 입력 값은 데이터 레지스터(102)에 저장된 데이터, 초기 벡터 값과 입력 데이터를 배타적 논리합(exclusive OR, XOR) 연산하여 그 결과값이 되고, 암호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다. CBC 복호화 모드라면 암호복호화 모듈(202)의 입력 값은 데이터 레지스터(102)에 저장된 데이터들 중 입력 데이터가 되고, 복호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다.
CFB 암호화 모드인 경우 암호복호화 모듈(202)의 입력 값은 데이터 레지스터(102)에 저장된 데이터들 중 초기 벡터 값이 되고, 암호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다. CFB 복호화 모드일 경우 암호복호화 모듈(202)의 입력 값은 암호화 모드와 마찬가지로 초기 벡터 값이 되고, 암호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다.
OFB 암호화 모드일 경우 암호복호화 모듈(202)의 입력 값은 데이터 레지스터(102)에 저장된 데이터들 중 초기 벡터 값이 되고, 암호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다. OFB 복호화 모드일 경우 암호복호화 모듈(202)의 입력 값은 암호화 모드와 마찬가지로 초기 벡터 값이 되고, 암호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다.
CTR 암호화 모드와 복호화 모드의 경우 암호복호화 모듈(202)의 입력 값은 데이터 레지스터(102)에 저장된 데이터들 중 초기 벡터 값이 되고, 암호화 과정을 수행하라는 신호를 암호복호화 모듈(202)로 보낸다.
CFB, OFB, CTR 모드의 경우 데이터의 복호화 과정에서도 Rijndael 암호화 과정을 사용하기 때문에 앞서 설명한 것처럼 암호화 과정을 수행할 지 복호화 과정을 수행할 지를 암호복호화 모듈(202)에 알려주는 신호가 필요하다.
이와 같은 초기화 과정이 끝나면 Rijndael 암호복호화 모듈(202)에 암호화 또는 복호화될 데이터와 입력 키가 들어가고 데이터의 암호복호화가 진행된다.
상기 언급한 블록 암호의 동작 모드를 나타내기 위해서 상태 레지스터(101)에 저장하는 값은 다음 표 1과 같다.
모드
ECB 암호화 모드 0000
CBC 암호화 모드 0001
CFB 암호화 모드 0010
OFB 암호화 모드 0100
CTR 암호화 모드 0101
ECB 복호화 모드 1000
CBC 복호화 모드 1001
CFB 복호화 모드 1010
OFB 복호화 모드 1100
CTR 복호화 모드 1101
예를 들어, 상태 레지스터(101)에서 블록 암호의 모드를 나타내는 부분의 비트 값이 0001이면 CBC 모드로 데이터를 암호화할 것임을 의미한다.
도 3은 본 발명에 의한 Rijndael 암호복호화 장치(202)의 일 실시예를 나타낸 블록도로서, 라운드 함수와 라운드 제어와의 상관 관계를 나타내고 있다.
도 3을 참조하면, 본 발명에 의한 블록 데이터 암호복호화 장치(202)는 데이터를 암호화 또는 복호화하는 부분으로서, 입력키가산부(300), 라운드연산부(302), 및 라운드제어부(301)를 포함하는 것이 바람직하다.
입력키가산부(300)는 블록 데이터와 입력 암호 키의 배타적 논리합 연산을 수행한다.
라운드연산부(302)는 입력키가산부(300)의 출력과 입력 암호 키, 그리고 자신의 출력 값을 이용하여 하나의 라운드에 해당하는 암호복호화 연산을 수행한다.
라운드제어부(301)는 라운드 수를 카운트하면서 라운드연산부(302)의 입력과 출력 제어를 통해 소정의 라운드 수만큼 암호복호화 연산을 반복하게 한다.
도 3을 참조하여 Rijndael 암호복호화 모듈(202)의 동작 예를 살펴보면, 먼저 입력키가산부(300)에서는 128 비트의 입력 데이터(In_data)와 128 비트의 입력 키(Key) 값을 XOR 연산하여, 제 1 라운드의 입력 데이터 값(Rnd0Out)을 라운드제어부(301)로 넘겨준다.
라운드제어부(301)에서는 1 라운드의 입력 데이터 값과 초기 입력 키 값, 라운드 연산 시작 신호(RndStart)와 암호화 또는 복호화를 나타내는 mode 신호를 라운드연산부(302)로 보낸다. 또한 제 1 라운드임을 알리기 위해서 0001의 4비트 값을 가지는 roundNbr 신호를 라운드연산부(302)로 넘겨준다.
라운드 시작 신호(RndStart)를 받은 라운드연산부(302)는 입력 키(preKey) 값을 이용하여 라운드 키(RK) 값을 생성하고, 생성된 라운드 키(RK) 값과 입력 데이터(RndIn)를 이용하여 라운드 연산을 수행한다. 라운드 연산이 끝나면 라운드 연산이 끝났음을 알리는 신호(RndDone)를 라운드제어부(301)에 보내고, 라운드 연산의 출력 데이터(Out_data)를 128 비트의 데이터 레지스터(303)에 저장하고, 라운드 키(RK)는 128 비트의 키 레지스터(304)에 저장한다.
라운드 연산이 끝났음을 알리는 신호(RndDone)를 받은 라운드제어부(301)는 데이터 레지스터(303)에 저장된 값을 라운드 연산의 입력 데이터(RndIn)로, 키 레지스터(304)에 저장된 값을 라운드 연산의 입력 키(preKey) 값으로 라운드연산부(302)에 전해 준다. 또한 현재 라운드 번호에 1을 증가하여 이를 roundNbr 신호로 라운드연산부(302)에 알리고, 암호화 과정인지 복호화 과정인지를 알리는 mode 신호도 함께 라운드 연산부(302)에 넘겨준 다음, 라운드 연산을 시작하라는 신호(RndStart)를 라운드 연산부(302)에 전달한다.
이와 같은 과정이 소정의 라운드 수만큼 반복되고 나면 라운드제어부(301)는 데이터의 암호화 또는 복호화가 끝났음을 알리는 신호(done)를 상태 레지스터(101)에 저장한다. 128 비트의 데이터와 암호 키의 경우 라운드 수는 10회가 된다.
도 4는 본 발명에 의한 블록 데이터 라운드 연산 장치(302)의 일 실시예를 나타낸 블록도이다.
도 4를 참조하면, 본 발명에 의한 블록 데이터 라운드 연산 장치(302)는 라운드키생성부(400), 바이트연산부(401), 믹스컬럼부(403), 및 라운드키가산부(404)를 포함하는 것이 바람직하다.
라운드키생성부(400)는 입력 암호 키로부터 각 라운드에 사용할 라운드 키를 생성한다.
바이트연산부(401)는 라운드 수에 따른 소정의 데이터의 각 바이트를 암호화 모드인지 복호화 모드인지에 따른 소정의 수만큼 그 위치를 쉬프트하고 각 바이트를 치환 연산한다. 바이트연산부(401)의 입력 데이터는, 제 1 라운드에서는 상기 입력키가산부(300)의 출력이고, 이후의 라운드에서는 이전 라운드의 라운드연산부(302)의 출력이 된다.
믹스컬럼부(403)는 암호화 모드인지 복호화 모드인지에 따른 소정의 데이터를 각 바이트별로 소정의 상수와 곱하는 연산을 수행하며, 라운드키가산부(404)는 암호화 모드인지 복호화 모드인지에 따른 소정의 데이터와 상기 라운드 키와의 배타적 논리합 연산을 수행한다.
데이터를 암호화하는 경우, 바이트연산부(401)의 출력은 믹스컬럼부(403)의 입력이 되고, 믹스컬럼부(403)의 출력은 라운드키가산부(404)의 입력이 되며, 라운드키가산부(404)의 출력이 전체 라운드 연산 장치의 한 라운드 연산의 출력(10)이 된다.
데이터를 복호화하는 경우, 바이트연산부(401)의 출력은 라운드키가산부(404)의 입력이 되고, 라운드키가산부(404)의 출력은 믹스컬럼부(403)의 입력이 되며, 믹스컬럼부(403)의 출력이 전체 라운드 연산 장치의 한 라운드 연산의 출력(20)이 된다.
도 4를 참조하여 라운드 연산부(302)의 동작 예를 살펴보면, 암호화 연산일 경우, 라운드 입력 데이터는 바이트연산부(401), 믹스컬럼부(403), 라운드키가산부(404)를 차례로 거치며 처리된다.
바이트연산부(401)에서는 라운드 입력 데이터에 대해 바이트 쉬프트 연산을 수행한 후 각 바이트별로 16개의 S-box에 8 비트씩 들어가서 새로운 값으로 변환되는 치환 연산이 수행된다.
도 5는 본 발명에 의한 블록 데이터 암호복호화 장치에서의 바이트연산부(401)의 일 실시예를 나타낸 블록도이다.
도 5를 참조하면, 본 발명에 따른 바이트연산부(401)의 바람직한 실시예는, 입력 데이터를 저장하는 레지스터(500), 암호화 과정인지 복호화 과정인지에 따라서 입력 데이터의 바이트 쉬프트 위치를 정해주는 다중화기(501), 바이트별 치환 연산을 수행하는 부분(502), 바이트별 치환 연산의 수행 결과를 다음 변환의 입력으로 보내는 부분(503)으로 구성되어 있다.
도 5를 참조하여 바이트 쉬프트 연산과 치환 연산의 동작 예를 살펴보면, 128 비트 입력 데이터는 레지스터(500)에 저장되고, 최상위 비트부터 고려했을 때, 첫 번째 바이트는 그대로 대치 연산 수행부분(502)의 입력으로 들어가고, 두 번째 바이트는 암호화 과정일 경우 5번째 대치 연산 수행 부분(502)의 입력으로, 복호화 과정일 경우 13번째 대치 연산 수행 부분(502)으로 들어간다. 그리고 암호화 과정과 복호화 과정에 따라 다른 쉬프트 연산은 다중화기(501)가 해결한다.
도 5에 도시한 바와 같이 다중화기를 이용하여 쉬프트 연산을 구현하고, 쉬프트 연산과 대치 연산을 하나의 모듈로 구현함으로써 Rijndael 암호복호화 장치의 총 게이트수의 감소 효과를 얻을 수 있고, 아울러 암호복호화에 걸리는 시간의 감소 효과도 얻을 수 있다. 즉, 한 클럭 내에 쉬프트 연산과 대치연산을 수행함으로써 쉬프트 연산과 대치 연산을 각각 다른 클럭 내에 수행하도록 설계했을 때 필요로 하는 쉬프트 연산 결과를 저장하기 위한 128 비트 저장수단을 사용하지 않기 때문에 Rijndael 암호복호화기의 총 게이트수의 감소 효과를 얻을 수 있을 뿐만 아니라 클럭 수의 감소로 암호복호화에 걸리는 총 시간의 감소 효과도 얻을 수 있다.
바이트 쉬프트 연산과 치환 연산의 결과, 데이터는 4개의 바이트씩 4개의 그룹으로 나뉘어져 믹스컬럼부(403)에 입력된다.
도 6은 본 발명에 의한 블록 데이터 암호복호화 장치에서의 믹스컬럼부(403)의 일 실시예를 나타낸 블록도이다.
도 6을 참조하면, 본 발명에 따른 믹스컬럼부(403)의 바람직한 실시예는 입력 데이터의 바이트 단위 다항식 곱셈을 수행하며, 4개의 32 비트 다항식 곱셈 부분(600), 암호화 과정인지 복호화 과정인지에 따라 입력 데이터를 암호화용 곱셈기에 넣을 것인지 복호화용 곱셈기에 넣을 것인지를 결정하는 다중화기(601), 32 비트 입력 데이터에 소정의 암호화용 곱셈 연산을 수행하여 32 비트 데이터를 출력하는 암호화용 곱셈기(602), 32 비트 입력 데이터에 소정의 복호화용 곱셈 연산을 수행하여 32 비트 데이터를 출력하는 복호화용 곱셈기(603), 및 암호화 과정인지 복호화 과정인지에 따라 출력 데이터를 암호화용 곱셈기의 결과로 할 것인지 복호화용 곱셈기의 곱셈 결과로 할 것인지를 결정하는 다중화기(604)로 구성되어 있다.
도 6을 참조하여 입력 데이터의 바이트 단위 다항식 곱셈 연산을 하는 믹스컬럼연산부(403)의 동작 예를 살펴보면, 128 비트 입력이 들어가서 32 비트씩 네 개의 곱셈기(600)로 나뉘어 들어가고, 암호화 과정인지 복호화 과정인지에 따라서 입력 데이터를 구분하는 다중화기(601)를 통과하여 암호화 과정이면 암호화용 곱셈기(602)에서 암호화용 곱셈 연산을 하고, 복호화 과정이면 복호화용 곱셈기(603)에서 복호화용 곱셈 연산을 수행한 후 암호화 과정이면 암호화 곱셈기의 출력 결과를 믹스컬럼연산부(403)의 출력으로 내보내고 복호화 과정이면 복호화 곱셈기의 출력 결과를 믹스컬럼연산부(403)의 출력으로 내보내는 과정을 수행하는 다중화기(604)를 통과함으로써 믹스컬럼연산부(403)의 연산은 종료된다. 암호화용 곱셈기(602) 및 복호화용 곱셈기(603)는 한 클럭에 32 비트 연산을 모두 마치는 구조로 되어 있다.
믹스컬럼부(403)에서의 믹스컬럼 연산은 각 바이트에 소정의 상수를 곱하는 연산인데, 이에 사용되는 다항식 곱셈 연산의 기본 동작(operation)인, 16진수 2를 곱하는 연산 xtime은 다음 식 1과 같이 정의된다.
(식 1)
b = xtime(a) = 2 * a (modulo 1B)
식 1에 의하면 b의 값은, a의 최상위 비트가 1이면 a를 한 비트씩 레프트 쉬프트한 뒤 16진수 "1B"를 XOR한 값이 되고, a의 최상위 비트가 0이면, a를 한 비트씩 레프트 쉬프트한 값이 된다.
이때 a와 b는 유한 필드(finite field)인 GF(28)의 원소이며, 식 2와 같이 8비트 다항식으로 표현할 수 있다.
(식 2)
구체적으로 믹스컬럼부(403)에서는 각 바이트에 [02, 03, 01, 01]을 곱하는 다항식 곱셈을 수행한다. 8비트 데이터인 in_data에 2를 곱하는 xtime(in_data)의 결과 r_2는 다음 식 3과 같이 구현된다.
(식 3)
또한 in_data에 3을 곱하는 연산의 결과인 r_3은 xtime(in_data)와 in_data를 XOR한 것으로서 다음 식 4와 같이 구현된다.
(식 4)
식 3을 살펴보면, r_2를 구하기 위해서는 단지 3개의 2입력 XOR 게이트가 필요함을 알 수 있다. 또한 식 4를 살펴보면, r_3을 구하기 위해서는 8개의 2입력 XOR 게이트만이 필요하다. 이와 같이 식 3과 식 4의 8비트 다항식 곱셈식 4개를 동시에 사용하여 32 비트 입력의 암호화용 곱셈기(602)에 적용함으로써, 연산 장치의 면적 감소 효과를 얻을 수 있고, 통상 4 사이클이 걸리는 믹스컬럼 연산을 1 사이클에 수행할 수 있으므로 4배의 속도 향상 효과를 얻을 수 있다.
한 그룹의 다항식 곱셈 결과는 4개의 바이트를 XOR 연산해서 한 개의 바이트로 만든 후 그 값을 레지스터에 저장하고, 동일한 4 개의 바이트에 [01, 02, 03, 01]을 곱한 후 결과 4개의 바이트를 XOR 연산을 하여 한 개의 바이트로 만들어 또다른 레지스터에 저장한다. 또 동일한 4 개의 바이트에 [01, 01, 02, 03]을 곱한 후 결과 4개의 바이트를 XOR 연산을 하여 한 개의 바이트로 만들어 또다른 레지스터에 저장한다. 또한 4 개의 바이트에 [03, 01, 01, 02]를 곱한 후 결과 4개의 바이트를 XOR 연산을 하여 한 개의 바이트로 만들어 또다른 레지스터에 저장한다. 이들 과정을 순차적으로 행하지 않고 동시에 수행함으로써 한 사이클에 믹스컬럼(MixColumn) 연산을 수행할 수 있는 이점을 얻을 수 있다. 그리고 이렇게 만들어진 4개의 그룹 각각에 4개의 바이트씩 총 16 바이트가 믹스컬럼부(403)의 결과 데이터가 된다.
믹스컬럼부(403)의 결과 데이터와 라운드키생성부(400)에서 생성된 라운드키는 라운드키가산부(404)에 전달되어 XOR 연산을 거쳐 하나의 라운드에 해당하는 암호화 결과가 된다.
복호화 연산의 경우, 암호화 연산과 라운드 함수 수행의 순서와 각 연산들에 차이가 있다. 우선, 라운드 입력 데이터를 처리하는 순서는 바이트연산부(401), 라운드키가산부(404), 믹스컬럼부(403)의 순서를 거친다.
바이트연산부(401)에 관하여 도 5를 참조하면, 바이트 쉬프트 연산 부분(501)에 있어서 라운드 입력 데이터가 암호화 연산과는 다른 방향으로 쉬프트된다. 쉬프트 연산을 수행한 후의 데이터들은 16개의 SI-box에 8 비트씩 들어가서 새로운 값으로 변환되는 치환 연산이 수행된다.
복호화 연산에 있어서는, 라운드키가산부(404)에서 바이트연산부(401)의 결과 데이터들과 라운드키생성부(400)에서 만들어진 라운드 키와의 XOR 연산이 먼저 수행되고, 그 결과값이 믹스컬럼부(403)의 입력이 된다. 복호화 연산의 믹스컬럼(MixColumn) 연산은 암호화 연산과 동일한 과정을 거치는데, 다만 각 바이트에 곱해지는 수들이 암호화의 경우와는 달리 각각 16진수 [0e, 0b, 0d, 09], [0b, 0d, 00, 0e], [0d, 09, 0e, 0b], 및 [09, 0e, 0b, 0d]이다.
8비트 데이터인 in_data에 8을 곱하는 연산의 결과인 r_8은 in_data에 xtime 연산을 3번 적용한 것으로서 다음 식 5와 같이 구현된다.
(식 5)
믹스컬럼 연산에 필요한 in_data에 9를 곱하는 연산의 결과인 r_9는 다음 식 6과 같이 r_8과 in_data의 배타적 논리합으로 구현된다.
(식 6)
또한, in_data에 16진수 B를 곱하는 연산의 결과인 r_b는 다음 식 7과 같이 r_8과 r_2 및 in_data의 배타적 논리합으로 구현된다.
(식 7)
그리고, in_data에 16진수 C를 곱하는 연산의 결과인 r_8_4는 다음 식 8과 같이 r_2에 xtime을 적용한 값과 r_8의 배타적 논리합으로 구현된다.
(식 8)
마지막으로, in_data에 16진수 D를 곱하는 연산의 결과인 r_d와 in_data에 16진수 E를 곱하는 연산의 결과인 r_e는 각각 다음 식 9와 식 10과 같이 구현된다.
(식 9)
(식 10)
복호화용 곱셈기(603)의 구현에 상기 식 6, 7, 9, 10과 같이 XOR 게이트를 이용한다면, 수십 개 정도의 2 입력 XOR 게이트만이 필요하므로 게이트 수의 감소 효과를 얻을 수 있고, 암호화용 곱셈기(602)에서와 같이 통상 4 사이클에 끝나는 믹스컬럼 연산을 1 사이클에 수행할 수 있으므로 시간의 단축을 얻을 수 있다.
복호화 라운드 연산에서는 믹스컬럼부(403)의 결과 데이터가 라운드 연산의 출력 데이터가 된다.
라운드연산부(302)를 구현할 때 암호화 과정과 복호화 과정을 완전히 분리하여 구현하지 않고 일부 모듈을 공유하도록 구현함으로써 Rijndael 암호복호화 장치의 총 게이트수의 감소효과를 얻을 수 있다.
도 7은 본 발명에 의한 블록 데이터 암호복호화 장치에서의 상태 레지스터의 구성도이다.
도 7에 도시된 바와 같이, 본 발명에 따른 입력 및 출력 컨트롤 데이터의 저장 공간인 상태 레지스터(101)는 8비트의 저장 공간이다. 가장 상위 비트(701)는 다음의 필요를 위해서 예약된 상태이고, 다음 1 비트(702)는 출력 비트로 Rijndael 암호를 이용한 데이터의 암호화 또는 복호화 연산이 끝났을 때 1의 값을 갖게 되는 done 비트이다.
다음 1 비트(703)는 입력 비트로써 모드 신호의 일부인데, 데이터를 암호화할 때 0의 값을 갖게 되고, 복호화할 때 1의 값을 갖는다. 다음 3 비트(704)는 mode 비트로서 Rijndael 블록 암호의 다섯 가지 모드 중 어떤 모드를 선택할 것인지를 나타낸다. 000은 ECB 모드, 001은 CBC 모드, 010은 CFB 모드, 100은 OFB 모드, 101은 CTR 모드를 나타낸다. 그리고, 다음 1 비트(705)는 리셋 신호가 들어 왔는지 여부를 나타내고, 마지막 1비트(706)는 암호화 또는 복호화를 시작할지 여부를 알려주는 신호가 저장되어 있다.
Rijndael 암호복호화에 있어서는 128 비트, 192 비트, 256 비트의 크기를 가지는 데이터와 암호 키를 지원한다. 본 발명의 상세한 설명은 128 비트의 데이터와 키를 중심으로 설명하였지만, 이는 128 비트의 경우에만 한정되지 않고 192 비트 및 256 비트의 데이터 및 키에 대해서도 적용 가능하다.
본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터(정보 처리 기능을 갖는 장치를 모두 포함한다)가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명에 의한 Rijndael 암호를 이용한 블록 데이터 실시간 암호복호화 장치는, 라운드 연산에 있어서 암호화 모듈과 복호화 모듈을 공유하고, 다중화기를 이용하여 쉬프트 연산을 구현하며, 쉬프트 연산과 대치 연산을 하나의 모듈로 구현하고, 믹스컬럼 연산에서의 곱셈을 XOR 게이트를 이용하여 구현함으로써, 전체 장치의 면적을 감소하고 소자 수를 감소하며 암호복호화에 걸리는 시간을 감소할 수 있다.
또한, 기존의 블록 암호인 DES를 이용한 데이터 암호화 및 복호화 장치보다 더 높은 안전성을 제공하며, 휴대폰이나 PDA같은 모바일 시스템에 탑재하거나 스마트 카드에 탑재함으로써 보안이 필요한 중요한 데이터를 빠른 시간 안에 암호화 및 복호화할 수 있고, 안전성 향상을 위해 192 비트 및 256 비트 키에 대해서도 적용이 용이하며, 128 비트뿐만 아니라 192비트, 256 비트 블록 데이터의 암호화 및 복호화에 쉽게 적용 할 수 있다.
도 1은 본 발명에 의한 Rijndael 암호를 이용한 블록 데이터 암호복호화 시스템의 일 실시예를 나타낸 블록도이다.
도 2는 본 발명에 의한 Rijndael 암호 코어의 일 실시예를 나타낸 블록도이다.
도 3은 본 발명에 의한 Rijndael 암호복호화 장치의 일 실시예를 나타낸 블록도이다.
도 4는 본 발명에 의한 블록 데이터 라운드 연산 장치의 일 실시예를 나타낸 블록도이다.
도 5는 본 발명에 의한 블록 데이터 암호복호화 장치에서의 바이트연산부를 나타낸 블록도이다.
도 6은 본 발명에 의한 블록 데이터 암호복호화 장치에서의 믹스컬럼부를 나타낸 블록도이다.
도 7은 본 발명에 의한 블록 데이터 암호복호화 장치에서의 상태 레지스터의 구성도이다.

Claims (16)

  1. 블록 데이터와 입력 암호 키의 배타적 논리합 연산을 수행하는 입력키가산부;
    상기 배타적 논리합 연산의 결과 및 상기 입력 암호 키를 이용하여 암호복호화 연산을 수행하는 라운드연산부; 및
    라운드 수를 카운트하여 상기 라운드연산부가 소정의 라운드 수만큼 상기 암호복호화 연산을 반복하게 하는 라운드제어부를 포함하는 것을 특징으로 하는 블록 데이터 암호복호화 장치.
  2. 제 1 항에 있어서, 상기 라운드연산부는 암호화에 필요한 부분과 복호화에 필요한 부분 중 공통되는 부분을 다중화기를 사용하여 공유하는 것을 특징으로 하는 블록 데이터 암호복호화 장치.
  3. 제 1 항에서 있어서, 상기 라운드연산부는,
    상기 입력 암호 키로부터 각 라운드에 사용할 라운드 키를 생성하는 라운드키생성부;
    제1라운드에서는 상기 배타적 논리합 연산의 결과를 암호화 모드 또는 복호화 모드에 따른 소정의 양만큼 그 위치를 쉬프트하고 각 바이트를 치환 연산하며, 이후의 라운드에서는 상기 라운드연산부의 이전 라운드의 출력을 암호화 모드 또는 복호화 모드에 따른 소정의 양만큼 그 위치를 쉬프트하고 각 바이트를 치환 연산하는 바이트연산부; 및
    데이터를 암호화하는 경우, 상기 치환 연산된 바이트 각각에 소정의 상수와의 바이트별 곱셈 연산을 수행한 후 상기 라운드 키와의 배타적 논리합 연산을 수행하며, 데이터를 복호화하는 경우, 상기 치환 연산된 바이트 각각에 상기 라운드 키와의 배타적 논리합 연산을 수행한 후 상기 상수와의 바이트 별 곱셈 연산을 수행하는 믹스컬럼연산및라운드키가산부를 포함하는 것을 특징으로 하는 블록 데이터 암호복호화 장치.
  4. 제 3 항에 있어서, 상기 바이트연산부는 쉬프트 연산한 데이터를 저장하지 않고 바로 치환 연산하는 것을 특징으로 하는 블록 데이터 암호복호화 장치.
  5. 제 3 항에 있어서, 상기 믹스컬럼연산및라운드키가산부는 상기 바이트별 곱셈 연산을 배타적 논리합 게이트의 조합으로 구현한 것을 특징으로 하는 블록 데이터 암호복호화 장치.
  6. 제 1 항에 있어서,
    동작 모드가 ECB 암호화 모드, ECB 복호화 모드, 또는 CBC 복호화 모드인 경우, 상기 블록 데이터를 상기 입력키가산부에 그대로 전달하며,
    동작 모드가 CBC 암호화 모드인 경우, 상기 블록 데이터와 초기화 벡터 값의 배타적 논리합 연산을 수행하여 그 결과값을 상기 입력키가산부에 전달하며,
    동작 모드가 CFB 암호화 모드, CFB 복호화 모드, OFB 암호화 모드, OFB 복호화 모드, CTR 암호화 모드, 또는 CTR 복호화 모드인 경우, 초기화 벡터 값을 상기 입력키가산부에 전달하는 초기화부를 더 포함하는 것을 특징으로 하는 블록 데이터 암호복호화 장치.
  7. 삭제
  8. 삭제
  9. 제 1 항에 있어서, 상기 블록 데이터 및 상기 입력 암호 키는 각각 128 비트의 크기를 가지며, 상기 라운드 연산의 수는 10회인 것을 특징으로 하는 블록 데이터 암호복호화 장치.
  10. 제 1 항에 있어서, 암호화를 수행할 것인지 복호화를 수행할 것인지에 대한 정보, 모드에 대한 정보, 및 제어에 관한 정보를 저장하고 이를 상기 라운드연산부 및 상기 라운드제어부에 전달하는 상태레지스터를 더 포함하는 것을 특징으로 하는 블록 데이터 암호복호화 장치.
  11. 입력 암호 키로부터 각 라운드에 사용할 라운드 키를 생성하는 라운드키생성부;
    데이터의 각 바이트를 암호화 모드인지 복호화 모드인지에 따른 소정의 수만큼 그 위치를 쉬프트하고 각 바이트를 치환 연산하는 바이트연산부; 및
    데이터를 암호화하는 경우, 상기 치환 연산된 바이트 각각에 소정의 상수와의 바이트별 곱셈 연산을 수행한 후 상기 라운드 키와의 배타적 논리합 연산을 수행하며, 데이터를 복호화하는 경우, 상기 치환 연산된 바이트 각각에 상기 라운드 키와의 배타적 논리합 연산을 수행한 후 상기 상수와의 바이트 별 곱셈 연산을 수행하는 믹스컬럼연산및라운드키가산부를 포함하는 것을 특징으로 하는 블록 데이터 라운드 연산 장치.
  12. (a) 블록 데이터와 입력 암호 키의 배타적 논리합 연산을 수행하는 단계;
    (b) 상기 배타적 논리합 연산의 결과, 상기 입력 암호 키, 및 이전 라운드의 계산 값을 이용하여 하나의 라운드에 해당하는 암호복호화 연산을 수행하는 단계; 및
    (c) 소정의 라운드 수만큼 상기 (b) 단계를 반복하는 단계를 포함하는 것을 특징으로 하는 블록 데이터 암호복호화 방법.
  13. 제 12 항에 있어서, 상기 (b) 단계는,
    (b1) 상기 입력 암호 키로부터 라운드 키를 생성하는 단계;
    (b2) 라운드 수에 따른 소정의 데이터의 각 바이트를 암호화 모드인지 복호화 모드인지에 따른 소정의 수만큼 그 위치를 쉬프트하고 각 바이트를 치환 연산하는 단계;
    (b3) 상기 데이터의 각 바이트별로 소정의 상수를 곱하는 연산을 수행하는 단계; 및
    (b4) 상기 데이터와 상기 라운드 키와의 배타적 논리합 연산을 수행하는 단계를 포함하며,
    상기 (b2) 단계의 데이터는, 제 1 라운드에서는 상기 (a) 단계에서의 배타적 논리합 결과를 이용하며, 이후의 라운드에서는 이전 라운드의 (b4) 단계에서의 배타적 논리합 결과를 이용하는 것을 특징으로 하는 블록 데이터 암호복호화 방법.
  14. 제 13 항에 있어서, 상기 (b1) 단계는 상기 (b2) 및 (b3) 단계와 병행하여 수행되는 것을 특징으로 하는 블록 데이터 암호복호화 방법.
  15. 제 12 항에 있어서, 상기 블록 데이터 및 상기 입력 암호 키는 각각 128 비트의 크기를 가지며, 상기 라운드 연산의 수는 10회인 것을 특징으로 하는 블록 데이터 암호복호화 방법.
  16. (a) 블록 데이터와 입력 암호 키의 배타적 논리합 연산을 수행하는 단계;
    (b) 상기 배타적 논리합 연산의 결과, 상기 입력 암호 키, 및 이전 라운드의 계산 값을 이용하여 하나의 라운드에 해당하는 암호복호화 연산을 수행하는 단계; 및
    (c) 소정의 라운드 수만큼 상기 (b) 단계를 반복하는 단계를 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR10-2002-0073321A 2002-11-23 2002-11-23 Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법 KR100494560B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0073321A KR100494560B1 (ko) 2002-11-23 2002-11-23 Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0073321A KR100494560B1 (ko) 2002-11-23 2002-11-23 Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20040045517A KR20040045517A (ko) 2004-06-02
KR100494560B1 true KR100494560B1 (ko) 2005-06-13

Family

ID=37341310

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0073321A KR100494560B1 (ko) 2002-11-23 2002-11-23 Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법

Country Status (1)

Country Link
KR (1) KR100494560B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100584604B1 (ko) * 2004-08-14 2006-05-30 삼성전자주식회사 디바이스를 인증하기 위한 키 생성 방법/장치 및 디바이스인증 방법/장치
KR100754585B1 (ko) * 2005-01-11 2007-09-05 삼성전자주식회사 통신 시스템에서 신호 암호화/해독 장치 및 방법
KR100668664B1 (ko) * 2005-11-22 2007-01-12 한국전자통신연구원 Aes 라인달 블록 알고리즘을 이용하는 암호화/복호화장치 및 방법
KR100788902B1 (ko) * 2006-12-06 2007-12-27 한국전자통신연구원 믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863097A (ja) * 1994-08-04 1996-03-08 Northern Telecom Ltd データを暗号化するための対称暗号化方法およびシステム
KR19990027040A (ko) * 1997-09-27 1999-04-15 서정일 암호화 방법 및 장치
KR20000021130A (ko) * 1998-09-25 2000-04-15 김용만 대칭키 블록 암호 알고리즘
KR100296958B1 (ko) * 1998-05-06 2001-09-22 이석우 블록 데이터 암호화 장치
KR20030000720A (ko) * 2001-06-26 2003-01-06 박승배 키와 평문 사이에 연산이 이루어지지 않는 대칭키 블록암호 알고리즘 설계방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863097A (ja) * 1994-08-04 1996-03-08 Northern Telecom Ltd データを暗号化するための対称暗号化方法およびシステム
KR19990027040A (ko) * 1997-09-27 1999-04-15 서정일 암호화 방법 및 장치
KR100296958B1 (ko) * 1998-05-06 2001-09-22 이석우 블록 데이터 암호화 장치
KR20000021130A (ko) * 1998-09-25 2000-04-15 김용만 대칭키 블록 암호 알고리즘
KR20030000720A (ko) * 2001-06-26 2003-01-06 박승배 키와 평문 사이에 연산이 이루어지지 않는 대칭키 블록암호 알고리즘 설계방법

Also Published As

Publication number Publication date
KR20040045517A (ko) 2004-06-02

Similar Documents

Publication Publication Date Title
US8416947B2 (en) Block cipher using multiplication over a finite field of even characteristic
EP1440535B1 (en) Memory encrytion system and method
US9209967B2 (en) Precalculated encryption key
US6504930B2 (en) Encryption and decryption method and apparatus using a work key which is generated by executing a decryption algorithm
US8290148B2 (en) Encryption processing apparatus, encryption processing method, and computer program
US8301905B2 (en) System and method for encrypting data
Karthigaikumar et al. Simulation of image encryption using AES algorithm
US7894608B2 (en) Secure approach to send data from one system to another
US6732271B1 (en) Method of deciphering ciphered data and apparatus for same
US7212633B2 (en) Expansion key generating device, encryption device and encryption system
US7257229B1 (en) Apparatus and method for key scheduling
KR100494560B1 (ko) Rijndael암호를 이용한 블록 데이터 실시간암호복호화 장치 및 방법
CN114826558B (zh) 一种海量数据快速加密方法及系统
Bajaj et al. AES algorithm for encryption
Mohan et al. Revised aes and its modes of operation
JP4395527B2 (ja) 情報処理装置
EP1629626B1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
Landge et al. VHDL based Blowfish implementation for secured embedded system design
EP1043863B1 (en) Method for the cryptographic conversion of L-bit input blocks of digital data info into L-bit output blocks
JP2001016197A (ja) 自己同期型ストリーム暗号システム及びこれを用いたmac生成方法
Sharma et al. Comparative analysis of block key encryption algorithms
RU2186467C2 (ru) Способ блочного итеративного шифрования
KR100546777B1 (ko) Seed 암/복호화 장치, 암/복호화 방법, 라운드 처리 방법, 이에 적합한 f함수 처리기
RU2204212C2 (ru) Итеративный способ блочного шифрования

Legal Events

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

Payment date: 20130527

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160503

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170321

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180822

Year of fee payment: 14