[go: up one dir, main page]

KR20050053379A - AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법 - Google Patents

AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법 Download PDF

Info

Publication number
KR20050053379A
KR20050053379A KR1020030086560A KR20030086560A KR20050053379A KR 20050053379 A KR20050053379 A KR 20050053379A KR 1020030086560 A KR1020030086560 A KR 1020030086560A KR 20030086560 A KR20030086560 A KR 20030086560A KR 20050053379 A KR20050053379 A KR 20050053379A
Authority
KR
South Korea
Prior art keywords
data
round key
unit
round
input
Prior art date
Legal status (The legal status 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 status listed.)
Ceased
Application number
KR1020030086560A
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 삼성전자주식회사
Priority to KR1020030086560A priority Critical patent/KR20050053379A/ko
Priority to US11/000,496 priority patent/US7639797B2/en
Publication of KR20050053379A publication Critical patent/KR20050053379A/ko
Ceased legal-status Critical Current

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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or 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/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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명에 따른 암호/복호 장치는 입력된 키를 이용하여 암호/복호를 위해 반복되는 복수의 라운드 각각에서의 연산을 위한 적어도 하나의 라운드키를 생성하는 라운드키생성부, 복수개로 분리된 입력데이터를 순서대로 입력받고, 분리된 입력데이터의 크기에 대응하는 라운드키의 일부를 순서대로 입력받아 가산하는 초기라운드키가산부, 초기라운드키가산부에서 출력된 제1데이터 및 라운드키생성부에서 출력된 라운드키의 일부를 입력받아 암호/복호를 위한 연산을 수행하는 제1연산부, 초기라운드키가산부에서 출력된 제2데이터 및 라운드키생성부에서 출력된 라운드키의 또다른 일부를 입력받아 암호/복호를 위한 연산을 수행하는 제2연산부 및 제1연산부에서 출력된 데이터 및 제2연산부에서 출력된 데이터를 임시 저장한 후, 다음번 라운드에서의 연산을 수행하도록 제1연산부 및 제2연산부에 각각 입력하고, 복수의 라운드가 모두 종료하면 암호화/복호화된 데이터를 출력하는 레지스터부를 포함한다. 따라서, 데이터의 로딩과 입력, 라운드 연산 수행이 동시에 이루어지며, 두 개의 서로 다른 경로를 따라 라운드 연산이 병렬 수행되어 라인달 알고리즘을 빠르게 구현할 수 있다.

Description

AES Rijndael(라인달) 알고리즘을 빠르게 구현하는 암호/복호 장치 및 그 방법{Apparatus and method for performing AES Rijndael Algorithm}
본 발명은 AES(Advanced Encryption Standard) 라인달(Rijndael) 알고리즘을 구현하는 장치 및 그 방법에 관한 것으로, 더욱 상세하게는 라인달 알고리즘을 하드웨어로 구현함에 있어서 데이터를 블럭으로 나누어 연산 과정을 병렬 처리하여 빠르게 암호화할 수 있는 라인달 알고리즘을 구현하는 장치 및 그 방법에 관한 것이다.
라인달 알고리즘은 네트워크를 통해 전송되거나 스마트 카드 및 컴퓨터의 저장장치에 저장되는 문서 및 데이터 정보의 암호화를 위한 AES 표준으로 제정된 바 있다. AES 표준에 따르면 라인달 알고리즘은 128 비트, 192 비트 및 256 비트의 암호키를 이용하여 128 비트의 데이터 블록을 처리하여 대칭형 블록 암호화를 수행하고 128 비트의 암호화된 데이터를 출력한다. 128 비트 이외의 데이터 블록 비트수도 가능하나 AES 표준에서는 128 비트가 채택되었다.
도 1은 일반적인 AES 라인달 알고리즘에서 입력 데이터, 입력데이터가 변환된 상태데이터(state array) 및 암호화 또는 복호화가 수행된 출력데이터의 구조를 나타낸 도면이다.
도 1을 참조하면, 입력데이터(101), 상태데이터(102) 및 출력데이터(103) 128 비트 블록을 각각 4개의 32비트 행으로 구성된 행렬 구조로 나타낸다. 입력데이터(101)는 암호화 또는 복호화 과정이 수행되어 출력데이터(103)가 생성된다. 입력데이터(101)에 대해 암호화 또는 복호화 과정의 각 연산이 수행되어 생성된 데이터가 상태데이터(102)이다.
일반적으로 AES 라인달 알고리즘은 라운드라 칭하는 하나의 일련의 과정을 복수회 반복 수행한다. 도 2a 및 2b는 일반적인 라인달 알고리즘의 하나의 라운드를 나타낸 흐름도이다.
도 2a를 참조하면, 입력된 상태데이터에 대해 복수의 연산 단계가 수행되며 이와같이 수행된 일련의 과정을 AES 라운드라 칭한다. 입력된 상태데이터는 라인달 바이트치환(Byte Substitution) 연산 단계(S201), 시프트 로우(Shift row) 연산 단계(S203), 믹스 컬럼(Mixed column) 단계(S205) 및 라운드키 가산(Round Key Addition) 단계(S207)를 거쳐 하나의 AES 라운드가 수행된다.
바이트치환 연산 단계(S201)에서는 "S-box" 라 칭하는 치환표를 이용하여 데이터의 각 바이트에 대해 독립적으로 비선형 바이트 치환 연산을 수행한다. "S-box"는 유한체인 GF(28) 상에서 곱셈의 역원 연산과 GF(28) 상에서의 어파인(affine) 변환을 수행하여 구성된다.
시프트 로우 연산 단계(S203)에서는 상태데이터(102)의 첫번째 행을 제외한 나머지 세 개의 행에 대해 각 바이트 값은 변화하지 않고 그 위치만을 변경한다. 믹스 컬럼 연산 단계(S205)에서는 상태데이터(102)의 각 열을 GF(28) 상에서 4개의 항을 가진 다항식의 각 항의 계수로 취급하고, 이 다항식을 기설정된 다항식 "a(x)={03}x3+{01}x2+{01}x +{02}"와 곱하고 "x4+1"으로 나눈 나머지에 해당하는 다항식의 4개의 항의 계수로 변환한다.
라운드키 가산 단계(S207)에서는 상태데이터(102)에 라운드키를 비트 단위의 XOR 연산을 수행하여 가산한다. AES 라인달 알고리즘의 라운드의 각 단계의 보다 구체적인 연산 과정은 공지된 기술로서 그 상세한 설명은 여기서는 생략한다.
한편, 도 2b에는 또다른 AES 라운드가 도시되어 있다. 도 2b를 참조하면, 또다른 AES 라운드는 시프트 로우 연산 단계(S211), 바이트 치환 연산 단계(S213), 믹스 컬럼 연산 단계(S215) 및 라운드키 가산 단계(S217)를 포함한다.
도 2b의 또다른 AES 라운드는 도 2a의 AES 라운드에 대해 시프트로우 단계(S211)와 바이트서브스티튜션 단계(S213)의 순서가 바뀌어 있는 외에는 동일하다. 시프트로우 단계(S211)와 바이트서브스티튜션 단계(S213)는 순서를 바꾸어 수행해도 동일한 결과를 얻을 수 있으므로, 도 2b에 따른 또다른 AES 라운드를 수행하여 도 2a에 다른 AES 라운드와 동일한 결과를 얻을 수 있다.
AES 알고리즘에 따르면 이러한 AES 라운드를 소정의 회수 반복 수행하여 데이터를 암호화한다. AES 라운드 반복 회수(Nr)는 암호키의 길이에 따라 결정되며, 128 비트의 암호키에 대해 "Nr=10"이고, 192 비트의 암호키에 대해서는 "Nr=12"이며, 256 비트의 암호키에 대해 "Nr=14"이다.
소정의 회수의 AES 라운드가 반복 수행된 후 마지막 AES 라운드에서는 시프트로우 단계와 바이트서브스티튜션 단계(상기한 바와같이 그 역순도 무방하다.)가 수행되고나서, 믹스컬럼 단계의 수행없이 라운드키 가산 단계가 수행되어 도 1의 출력데이터(103)가 생성된다.
한편, AES 라인달 알고리즘에 따른 복호화 과정은 상기한 AES 라인달 알고리즘에 따른 암호화 과정의 역에 해당한다. 따라서, 입력된 데이터는 라인달 역 바이트치환 연산 단계, 역 시프트 로우 연산 단계, 역 믹스 컬럼 연산 단계 및 라운드키 가산 단계(S207)를 거쳐 복호화된다. 또다른 AES 연산에 대한 복호화 과정도 유사하며, 그 상세한 설명은 생략한다.
현재까지 상기한 AES 라인달 알고리즘을 구현하기 위한 다수의 장치가 고안된 바 있다. 종래의 AES 라인달 알고리즘을 구현한 장치로 하나의 데이터 프로세싱 모듈로 모든 AES 라운드를 반복 수행하는 구조를 가진 장치가 있다. 따라서, "Nr" 번의 라운드를 수행하는 동안 하나의 데이터에 대해 "Nr" 번 만큼 데이터 프로세싱 모듈을 통해 연산이 수행되므로, 결국 전체 라운드를 모두 수행하는데 소요되는 시간은 하나의 라운드를 수행하는데 소요되는 시간의 "Nr"배가 된다.
또한, AES 라인달 알고리즘은 최초 라운드에서 부가적인 라운드키연산 단계를 필요로 하므로, 종래의 AES 라운드 반복 수행 구조의 라인달 알고리즘 구현 장치에 따르면, 최초 라운드를 수행하기 이전에 부가적인 라운드키 가산 단계를 수행하기 위해 데이터 프로세싱 모듈을 동작시키는 부가적인 별도의 과정이 요구되어 라인달 알고리즘 구현 장치의 스루풋(Throughput)을 저하시키는 문제점이 있다.
또한, 종래의 라인달 알고리즘 구현 장치는 하나의 상태데이터에 대해 전체로서 연산을 수행하므로, 전체 128비트의 데이터 모두에 대해 연산이 수행되도록 데이터 프로세싱 모듈이 구성되어야 하므로 자원 요구량이 많아지는 문제점이 있다.
특히, AES 라인달 알고리즘 구현 장치가 스마트 카드와 같은 한정된 자원을가진 환경하에서 동작하는 경우에는 장치의 크기를 작게 유지하면서 소정의 처리 속도를 구현하여야 하므로, AES 라인달 장치로의 데이터 입력과 데이터의 처리가 동시에 이루어지지 못하고, 데이터가 입력되는 동안 데이터 프로세싱 모듈은 데이터의 입력을 위해 대기상태에 있어야 하므로 데이터 처리 속도가 저하되는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 복수개의 입력데이터 처리경로를 통해 AES 라운드를 병렬처리함으로써 데이터 입력과 데이터 처리를 동시에 수행하여 한정된 자원을 갖는 환경하에서 AES 라인달 알고리즘을 빠르게 구현하는 장치 및 그 구현방법을 제공하는 것이다.
본 발명의 목적을 달성하기 위해 본 발명에 따른 암호/복호 장치는 입력된 키를 이용하여 암호/복호를 위해 반복되는 복수의 라운드 각각에서의 연산을 위한 적어도 하나의 라운드키를 생성하는 라운드키생성부, 복수개로 분리된 입력데이터를 순서대로 입력받고, 상기 분리된 입력데이터의 크기에 대응하는 상기 라운드키의 일부를 순서대로 입력받아 가산하는 초기라운드키가산부, 상기 초기라운드키가산부에서 출력된 제1데이터 및 상기 라운드키생성부에서 출력된 상기 라운드키의 일부를 입력받아 암호/복호를 위한 연산을 수행하는 제1연산부, 상기 초기라운드키가산부에서 출력된 제2데이터 및 상기 라운드키생성부에서 출력된 상기 라운드키의 또다른 일부를 입력받아 암호/복호를 위한 연산을 수행하는 제2연산부 및 상기 제1연산부에서 출력된 데이터 및 상기 제2연산부에서 출력된 데이터를 임시 저장한 후, 복수의 상기 라운드 중 다음번 라운드에서의 연산을 수행하도록 상기 제1연산부 및 상기 제2연산부에 각각 입력하고, 복수의 상기 라운드가 모두 종료하면 암호화/복호화된 데이터를 출력하는 레지스터부를 포함하는 것을 특징으로 한다.
또한, 상기 제1연산부 및 상기 제2연산부는 라인달(Rijndael) 암호/복호 알고리즘에 따른 연산을 수행하는 것이 바람직하다. 바람직하게는 상기 초기라운드키가산부 및 상기 레지스터부의 출력데이터 중 어느 하나를 입력받아 암호/복호를 위한 라인달 바이트치환 연산/라인달 역 바이트치환 연산을 수행하는 제1바이트치환부, 상기 제1바이트치환부의 출력데이터를 입력받아 암호/복호를 위한 라인달 컬럼믹스 연산/라인달 역 컬럼믹스 연산을 수행하는 제1컬럼믹서부 및 상기 제1컬럼믹서부 및 상기 제1바이트치환부 중 어느 하나의 출력데이터를 입력받고 상기 라운드키생성부로부터 라운드키의 일부를 입력받아 라운드키 가산 연산을 수행하는 제1라운드키가산부를 포함한다.
바람직하게는 상기 제1연산부는, 상기 초기라운드키가산부 및 상기 레지스터부의 출력데이터를 입력받아 선택적으로 어느 하나를 상기 제1바이트치환부로 입력하는 제1선택기를 더 포함한다. 또한, 상기 제1연산부는, 상기 제1컬럼믹서부 및 상기 제1바이트치환부의 출력 데이터를 입력받아 선택적으로 상기 제1라운드키가산부에 입력하는 제3선택기를 더 포함하는 것이 바람직하다.
또한, 복수의 상기 라운드 중 마지막 라운드에서는, 상기 제3선택기는 상기 제1바이트치환부의 출력 데이터를 선택하여 상기 제1라운드키가산부에 입력하는 것이 바람직하다. 바람직하게는, 제2연산부는 상기 레지스터부의 출력 데이터를 입력받아 암호/복호를 위한 라인달 바이트 치환 연산/라인달 역 바이트치환 연산을 수행하는 제2바이트치환부, 상기 초기라운드키가산부의 출력 데이터를 입력받아 암호/복호를 위한 라인달 컬럼 믹스 연산/라인달 역 컬럼 믹스 연산을 수행하는 제2컬럼믹서부 및 상기 제1연산부 및 상기 제2컬럼믹서부의 출력데이터중 어느 하나를 입력받고 상기 라운드키생성부로부터 라운드키의 일부를 입력받아 라운드키 가산 연산을 수행하는 제2라운드키가산부를 포함한다.
바람직하게는 상기 제2연산부는, 상기 제2컬럼믹서부 및 상기 제2바이트연산부의 출력데이터를 입력받아 선택적으로 어느 하나를 상기 제2라운드키연산부로 입력하는 제2선택기를 더 포함한다. 또한, 복수의 상기 라운드 중 마지막 라운드에서는, 상기 제2선택기는 상기 제2바이트치환부의 출력 데이터를 선택하여 상기 제2라운드키연산부에 입력하는 것이 바람직하다.
또한, 상기 레지스터부는, 입력된 데이터를 저장하기 위한 적어도 하나의 레지스터 및 상기 레지스터로부터 데이터를 입력받아 선택적으로 출력하는 선택기;를 포함하는 것이 바람직하다. 상기 레지스터부는 제1레지스터 내지 제16레지스터를 포함하는 것이 바람직하다.
바람직하게는, 상기 제1레지스터 내지 제4레지스터는 상기 제1연산부의 출력 데이터를 입력받고, 상기 제5레지스터 내지 제5레지스터는 상기 제2연산부의 출력데이터를 입력받는다. 또한, 상기 제1레지스터 내지 제8레지스터에 저장된 데이터는 상기 제9레지스터 내지 제16레지스터에 입력되는 것이 바람직하다.
또한, 상기 제9 내지 제16레지스터에 저장된 데이터는 상기 선택기에 의해 라인달 시프트 연산이 수행되고, 상기 선택기의 출력 데이터는 상기 제1연산부 및 상기 제2연산부에 입력되는 것이 바람직하다. 바람직하게는, 상기 입력데이터의 크기는 128 비트이고, 상기 입력데이터는 4개의 32 비트 열로 분리되어 순서대로 상기 초기라운드가산부에 입력된다.
도 3은 본 발명의 일 실시예에 따른 라인달 알고리즘 구현 장치를 나타낸 도면이며, 이를 참조하여 본 발명의 바람직한 실시예를 상세하게 설명한다.
도 3을 참조하면, 라인달 알고리즘 구현 장치는 라운드키생성부(310), 초기라운드키가산부(320), 제1연산부(330), 제2연산부(340) 및 레지스터부(400)를 포함한다.
라운드키생성부(310)는 외부로부터 키를 입력받아 초기 라운드에서는 입력된 키를 예를 들면 32 바이트씩 초기라운드키가산부(320)로 출력하고, 제1 라운드부터는 입력된 키를 처리하여 각 라운드에 해당하는 라운드키를 생성하고 예를 들면 32 비트의 라운드키(RKey A)를 제1연산부(330)로 출력하고 32 비트의 라운드키(RKey B)를 제2연산부(340)로 출력한다.
초기라운드키가산부(320)는 암호 또는 복호 처리를 위한 데이터의 일부와 라운드키생성부(310)의 출력인 라운드키의 일부를 입력받아 비트 단위의 XOR 연산을 수행하여 가산한다. 입력데이터가 128 비트인 경우, 초기라운드키가산부(320)의 입력인 데이터의 일부는 예를 들어 32 비트가 될 수 있다. 따라서, 도 1에 도시된 바와같은 입력데이터(101)는 각 열 또는 행의 단위로 순서대로 초기라운드키가산부(320)에 입력될 수 있다.
이하, 한번에 입력되는 암호 또는 복호 처리를 위한 데이터의 일부가 32 비트인 경우를 예를 들어 설명한다. 입력되는 데이터가 32 비트이면 라운드키생성부(310)에서 한번에 출력되는 라운드키 또한 입력된 데이터의 크기와 동일하게 32 비트에 해당한다.
제1연산부(330) 및 제2연산부(340)는 암호 또는 복호를 위한 연산을 수행한다. 이를 위해, 제1연산부(330)는 제1선택기(331), 제1바이트치환부(333), 제1컬럼믹서부(335), 제3선택기(337) 및 제1라운드키가산부(339)를 포함한다. 또한, 제2연산부(340)는 제2바이트치환부(343), 제2컬럼믹서부(345), 제3선택기(337) 및 제2라운드키가산부(349)를 포함한다.
제1선택기(331)는 초기라운드키가산부(320)의 출력 데이터와 레지스터부(400)의 출력 데이터 중 어느 하나를 선택적으로 제1바이트치환부(333)에 입력한다. 따라서, 데이터의 새로운 입력과 입력데이터의 라운드 연산이 제1연산부(330)에서 함께 수행될 수 있다.
제1바이트치환부(333)는 제1선택기(331)로부터 출력된 데이터를 입력받아 암호화를 위한 라인달 바이트 치환 또는 복호화를 위한 라인달 역 바이트 치환 연산을 수행한다. 제1바이트치환부(333)에서 출력된 데이터는 제1컬럼믹서부(335) 또는 제3선택기(337)로 입력된다.
제1컬럼믹서부(335)는 제1바이트치환부(333)로부터 입력된 데이터의 각 열에 대해 라인달 알고리즘의 믹스컬럼 연산 또는 역 믹스컬럼 연산을 수행한다. 제1컬럼믹서부(335)의 출력 데이터는 제3선택기(337)로 입력된다.
제3선택기(337)는 제1컬럼믹서부(335)와 제1바이트치환부(333)의 출력 데이터를 입력받고 그 중 하나를 선택하여 제1라운드키가산부(339) 또는 제2연산부(340)에 선택적으로 입력한다. 제1라운드키가산부(339)는 제3선택기(337)로부터 입력된 데이터와 라운드키생성부(310)로부터 입력된 라운드키를 비트 단위의 XOR 연산을 수행하여 가산한다. 제1라운드키가산부(339)에서 출력된 데이터는 레지스터부(400)에 입력된다. 레지스터부(400)에 소정의 시간동안 저장된 데이터는 라인달 알고리즘의 시프트 연산이 수행되고 제1선택기(331)로 입력되어 제2 라운드 연산이 수행된다.
한편, 제2연산부(340)의 제2선택기(347)는 제1연산부(330)의 제3선택기(337)의 출력 데이터를 입력 받고, 제2바이트치환부(343) 및 제2컬럼믹서부(345)로부터 데이터를 입력받아 선택적으로 제2라운드키가산부(349)로 입력한다.
제2라운드키가산부(349)는 제2선택기(347)에서 출력된 데이터 및 라운드키생성부(310)에서 출력된 라운드키를 입력받아 비트 단위의 XOR 연산을 수행하여 가산한다. 제2라운드키가산부(349)에서 출력된 데이터는 레지스터부(400)로 입력되어 라운드 연산이 종료된다. 레지스터부(400)에 소정의 시간동안 저장된 데이터는 라인달 시프트 연산이 수행되고 제2바이트치환부(343)에 입력되어 다음번 라운드 연산이 수행된다.
제2바이트치환부(343)는 레지스터부(400)로부터 출력된 데이터를 입력받아 암호화를 위한 바이트 치환 또는 복호화를 위한 역 바이트 치환 연산을 수행한다. 제2바이트치환부(343)에서 출력된 데이터는 제2컬럼믹서부(345) 또는 제2선택기(347)로 입력된다.
제2컬럼믹서부(345)는 제2바이트치환부(343)로부터 입력된 데이터의 각 열에 대해 라인달 알고리즘의 믹스컬럼 연산 또는 역 믹스컬럼 연산을 수행한다. 제2컬럼믹서부(345)의 출력 데이터는 제2선택기(347)로 입력된다.
도 4는 도 3의 레지스터부를 상세히 나타낸 도면이다. 도면을 참조하면, 레지스터부(400)는 제1레지스터 내지 제8레지스터(401 내지 408), 제9레지스터 내지 제16레지스터(409 내지 416) 및 선택기(417)를 포함한다.
제1레지스터 내지 제16레지스터(401 내지 416)는 입력데이터에 대해 하나의 라운드의 모든 연산이 수행된 후 출력된 상태데이터를 저장한다. 제1레지스터 내지 제4레지스터(401 내지 404)에는 제1라운드키가산부(339)에서 출력된 데이터가 입력된다. 또한, 제5레지스터 내지 제8레지스터(405 내지 408)에는 제2라운드키가산부(349)에서 출력된 데이터가 입력된다.
즉, 제1레지스터 내지 제4레지스터(401 내지 404)에는 상태데이터의 제1열이 입력되며, 제5레지스터 내지 제8레지스터(405 내지 408)에는 상태데이터 제2열이 입력된다. 이후, 상태데이터 제3열이 입력되면, 제1레지스터 내지 제4레지스터(401 내지 404)에 저장된 상태데이터의 제1열은 제9레지스터 내지 제12레지스터(409 내지 412)로 출력되어 저장되고, 제1레지스터 내지 제4레지스터(401 내지 404)에는 상태데이터 제3열이 저장된다.
또한, 상태데이터 제4열이 입력되면, 제5레지스터 내지 제8레지스터(405 내지 408)에 저장된 상태데이터의 제2열은 제13레지스터 내지 제16레지스터(413 내지 416)로 출력되어 저장되고, 제5레지스터 내지 제8레지스터(405 내지 408)에는 상태데이터 제4열이 저장된다.
선택기(417)는 제9레지스터 내지 제16레지스터(409 내지 416)에서 출력된 데이터, 제2레지스터 내지 제4레지스터(402 내지 404) 및 제6레지스터 내지 제8레지스터(406 내지 408)에 저장된 데이터를 입력받는다.
또한, 라인달 암호 또는 복호를 위한 라인달 연산의 모든 라운드가 종료하면 암호화 또는 복호화된 데이터는 제1레지스터 내지 제16레지스터(401 내지 416)로부터 선택기(417)를 거치지 않고 직접 출력된다(도 4에 "E"로 표시됨).
도 5는 본 발명의 일 실시예에 따른 라인달 알고리즘 구현 장치의 동작을 나타내는 흐름도이다. 이하 도 5를 참조하여 본 발명의 일 실시예에 따른 라인달 알고리즘 구현 장치의 동작을 설명한다.
먼저, 라인달 알고리즘에 따른 초기 라운드가 시작되면 암호화 또는 복호화할 데이터가 로딩되어 초기라운드키가산부(320)로 입력된다(S501). 입력되는 데이터의 단위는 128 비트의 데이터의 일부분, 예를 들면 32 비트에 해당하는 데이터 열이다. 즉, 도 1의 입력데이터(101)의 하나의 열 또는 행에 해당하는 데이터가 입력된다.
또한, 라운드키생성부(310)는 외부로부터 키값을 입력받고, 초기 라운드를 위한 초기 라운드키를 초기라운드키가산부(320)에 입력한다(S503). 초기라운드키가산부(320)에 입력되는 초기 라운드키(IKey)는 초기라운드키가산부(320)에 입력되는 데이터의 크기에 대응하며 전체 초기 라운드키의 일부분으로서, 상기 예에서는 32 비트에 해당하는 부분이다.
초기라운드키가산부(320)는 입력된 데이터와 초기 라운드키를 가산한다(S505). 암호화 또는 복호화할 데이터는 예를 들면 도 1에 도시된 입력데이터(101)와 같은 구조를 가진다. 따라서, 입력데이터(101)의 제1열이 입력되어 초기라운드키가산부(320)에 의한 가산이 수행되고 나면, 입력데이터의 마지막열이 입력되어 가산이 수행되어 입력데이터 전체에 대한 입력이 종료할 때까지(S507) 데이터가 초기라운드키가산부(320)에 연이어 입력되고 가산 연산이 수행된다.
한편, 초기라운드키가산부(320)에서 출력된 데이터는 암호화 또는 복호화할 전체 데이터에서 차지하는 순서, 즉 입력데이터(101)의 몇 번째 열에 해당하는 데이터인가의 여부(S513)에 따라 라인달 알고리즘 구현장치에서 다른 경로를 따라 라인달 알고리즘의 각 라운드 연산이 수행된다. 다시 말해, 입력데이터(101)는 복수의 부분으로 나뉘어 순서대로 입력되며, 데이터가 입력되는 순서에 따라 두 개의 다는 경로로 나뉘어 각 라운드의 연산이 수행된다.
본 발명의 일 실시예에 따른 라인달 알고리즘을 구현하는 암호/복호 장치는 제1연산부(330) 및 제2연산부(340)가 각각 동작하는 두 개의 다른 연산 경로를 가지고 있으며 각 연산 경로를 구성하는 구성요소는 독립적으로 동작하므로 두 개의 다른 경로에 따라 라인달 알고리즘의 각 라운드 연산이 동시에 병렬적으로 수행된다. 여기서는, 예를 들면 홀수 번째 데이터는 제1연산부(330)에 의해 라운드가 수행되며(S515), 짝수 번째 데이터는 제2연산부에 의해 라운드가 수행된다(S519). 두 개의 다른 경로에 따라 제1연산부(330) 및 제2연산부(340)에서 라인달 알고리즘의 모든 라운드의 연산 수행이 종료하면 암호화 또는 복호화된 데이터가 출력된다(S523). 다음의 표 1은 본 발명의 일 실시예에 따른 라인달 알고리즘을 구현하는 암호/복호 장치의 동작이 이루어지는 라인달 연산의 각 라운드 및 사이클에 따라 동작하는 구성요소를 나타낸다.
라운드 사이클 동작하는 구성요소
1(초기) 0 초기라운드키가산부(320)제1바이트치환부(333)제1컬럼믹서부(335)제1라운드키가산부(339)레지스터부(400)
1 초기라운드키가산부(320)제1바이트치환부(333)제1컬럼믹서부(335)제2라운드키가산부(349)레지스터부(400)
2 초기라운드키가산부(320)제1바이트치환부(333)제1컬럼믹서부(335)제1라운드키가산부(339)레지스터부(400)
3 초기라운드키가산부(320)제1바이트치환부(333)제1컬럼믹서부(335)제2라운드키가산부(349)레지스터부(400)
2 4 제1바이트치환부(333)제1컬럼믹서부(335)제1라운드키가산부(339)제2바이트치환부(343)제2컬럼믹서부(345)제2라운드키가산부(349)레지스터부(400)
5 제1바이트치환부(333)제1컬럼믹서부(335)제1라운드키가산부(339)제2바이트치환부(343)제2컬럼믹서부(345)제2라운드키가산부(349)레지스터부(400)
...
Nr-1 (Nr-1)*2 제1바이트치환부(333)제1컬럼믹서부(335)제1라운드키가산부(339)제2바이트치환부(343)제2컬럼믹서부(345)제2라운드키가산부(349)레지스터부(400)
(Nr-1)*2+1 제1바이트치환부(333)제1컬럼믹서부(335)제1라운드키가산부(339)제2바이트치환부(343)제2컬럼믹서부(345)제2라운드키가산부(349)레지스터부(400)
Nr (Nr-1)*2+2 제1바이트치환부(333)제1라운드키가산부(339)제2바이트치환부(343)제2라운드키가산부(349)레지스터부(400)
(Nr-1)*2+3 제1바이트치환부(333)제1라운드키가산부(339)제2바이트치환부(343)제2라운드키가산부(349)레지스터부(400)
초기 라운드에서는 데이터의 로딩과 입력, 및 초기 라운드 연산이 동시에 수행된다. 입력데이터(101) 제1열은 초기라운드키가산부(320)를 거쳐 제1바이트치환부(333)에서 암호를 위한 라인달 알고리즘의 바이트 치환연산 또는 복호를 위한 역 바이트 치환 연산이 수행되고, 제1컬럼믹서부(335) 및 제1라운드키가산부(339)를 거쳐 레지스터부(400)의 제1레지스터 내지 제4레지스터(401 내지 404)에 저장된다.
입력데이터(101) 제1열에 대한 라운드 연산이 수행되는 동안, 입력데이터(101) 제2열이 입력되어 초기라운드키가산부(320)를 거쳐 제1바이트치환부(333)에서 암호화를 위한 라인달 바이트 치환연산 또는 복호를 위한 라인달 역 바이트 연산이 수행되고, 제1컬럼믹서부(335)에서 컬럼 믹스 연산이 수행된 후 제3선택기(337)에서 제2선택기(347)로 출력되어 제2라운드키가산부(349)에서 라운드키가 가산되고 레지스터부(400)의 제5레지스터 내지 제8레지스터(405 내지 408)에 저장된다.
또한, 입력데이터(101) 제3열은 입력데이터(101) 제2열에 대한 라운드 연산이 수행되는 동안, 상기한 입력데이터(101) 제1열의 라운드 연산 수행과 동일한 경로를 거쳐 레지스터부(400)의 제1레지스터 내지 제4레지스터(401 내지 404)에 저장된다. 한편, 제1레지스터 내지 제4레지스터(401 내지 404)에 저장되어 있던 입력데이터 제1열은 제9레지스터 내지 제12레지스터(409 내지 412)에 저장된다.
이어서, 입력데이터(101) 제4열은 입력데이터(101) 제3열에 대한 라운드 연산이 수행되는 동안, 상기한 입력데이터(101) 제2열의 라운드 연산 수행과 동일한 경로를 거쳐 레지스터부(400)의 제5레지스터 내지 제8레지스터(405 내지 408)에 저장된다. 한편, 제5레지스터 내지 제8레지스터(405 내지 408)에 저장되어 있던 입력데이터 제2열은 제13레지스터 내지 제16레지스터(413 내지 416)에 저장된다.
다음의 표 2는 레지스터부(400)의 동작이 이루어지는 라인달 연산 및 사이클에 따른 레지스터부(400)의 출력을 나타낸다.
라인달 연산 사이클 선택기의 출력
1 2 3 4 5 6 7 8
암호화 1 b00 b05 b10 b15 b04 b09 b14 b03
2 b02 b07 b01 b06
목호화 1 b13 b10 b14
2 b05 b02 b06 b11
제1사이클에서는 레지스터부(400)에 의해 라인달 시프트 로우 연산 또는 라인달 역 시프트 로우 연산이 수행되며 상기 표에 따라 레지스터부(400)의 제1 내지 제4 출력으로서 상태데이터 제1열이 출력되고, 레지스터부(400)의 제5 내지 제8 출력으로서 상태데이터 제2열이 출력된다. 출력된 상태데이터 제1열은 제1연산부(330)에 의해 라인달 암호화 또는 복호화 연산이 수행되며, 출력된 상태데이터 제2열은 제2연산부(340)에 의해 라인달 암호화 또는 복호화 연산이 수행된다.
제2사이클에서는, 암호화의 경우 레지스터부(400)의 제1레지스터 내지 제8레지스터(401 내지 408)에 저장되어 있던 데이터 제3열 및 제4열은 제9레지스터 내지 제16레지스터(409 내지 416)에 저장된다. 즉, 제1레지스터, 제4레지스터 내지 제6레지스터(401, 404 내지 406)에 저장된 값은 제9레지스터, 제12레지스터 내지 제14레지스터(409, 412 내지 414)에 각각 저장된다. 그리고, 제10레지스터, 제11레지스터, 제15레지스터 및 제16레지스터(410, 411, 415, 416)는 종전 값을 유지한다.
따라서, 제2사이클에서는 암호화의 경우 라인달 시프트 로우 연산이 수행되고 레지스터부(400)의 제1 내지 제4 출력으로서 상태데이터 제3열이 출력되고, 레지스터부(400)의 제5 내지 제8 출력으로서 상태데이터 제4열이 출력된다. 따라서, 상태데이터 제3열은 제1연산부(330)에 의해 라인달 암호화 연산이 수행되며, 상태데이터 제4열은 제2연산부(340)에 의해 라인달 암호화 연산이 수행된다.
또한, 제2사이클에서는, 복호화의 경우 레지스터부(400)의 제1레지스터 내지 제8레지스터(401 내지 408)에 저장되어 있던 데이터 제3열 및 제4열은 제9레지스터 내지 제16레지스터(409 내지 416)에 저장된다. 즉, 제1레지스터, 제2레지스터, 제5레지스터 및 제8레지스터(401, 402, 405, 408)에 저장된 값은 제9레지스터, 제10레지스터, 제13레지스터 및 제14레지스터(409, 410, 413, 416)에 각각 저장된다. 그리고, 제11레지스터, 제12레지스터, 제14레지스터 및 제15레지스터(411, 412, 414, 415)는 종전 값을 유지한다. 따라서, 상태데이터 제3열은 제1연산부(330)에 의해 라인달 복호화 연산이 수행되며, 상태데이터 제4열은 제2연산부(340)에 의해 라인달 복호화 연산이 수행된다.
따라서, 제2사이클에서는 복호화의 경우 라인달 역 시프트 로우 연산이 수행되고 레지스터부(400)의 제1 내지 제4 출력으로서 상태데이터 제3열이 출력되고, 레지스터부(400)의 제5 내지 제8 출력으로서 상태데이터 제4열이 출력된다. 상태데이터 제3열은 제1연산부(330)에 의해 라인달 복호화 연산이 수행되며, 상태데이터 제4열은 제2연산부(340)에 의해 라인달 복호화 연산이 수행된다.
따라서, 레지스터부(400)는 라인달 암호화 또는 복호화 연산 수행이 가능하도록 데이터를 저장하고 제1사이클 및 제2사이클을 통해 시프트 로우 연산 또는 역 시프트 로우 연산을 수행하여, 라인달 연산 초기 라운드에서 데이터 로딩과 입력, 및 라인달 연산이 동시에 수행되도록 한다.
한편, 라인달 알고리즘의 최종 라운드에서는 제1연산부(330) 및 제2연산부(340)에서 데이터는 제1컬럼믹서부(335) 및 제2컬럼믹서부(345)는 동작하지 않는다. 따라서, 제1바이트치환부(333)에서 출력된 데이터는 제3선택기(337)에 입력되며, 제2바이트치환부(343)에서 출력된 데이터는 제2선택기(347)에 입력된다.
상기한 바와같은 라운드 연산은 소정의 라운드 회수(Nr) 만큼 반복 수행되며, 최종적으로 암호화 또는 복호화된 출력데이터(103)가 레지스터부(400)로부터 출력된다.
본 발명에 따른 라인달 암호화 및 복호화를 위한 라인달 알고리즘을 구현하는 암호/복호 장치는 라인달 알고리즘의 각 라운드 연산을 수행하기 위한 2개의 다른 경로가 마련되어, 입력되는 데이터의 로딩과 입력, 라운드 연산의 수행이 동시에 이루어지며, 두 개의 서로 다른 경로를 따라 라운드 연산이 병렬 수행되어 라인달 알고리즘을 빠르게 구현할 수 있다.
또한, 최초 라운드를 수행하기 위한 부가적인 초기라운드키가산부가 별도로 장착되어 라인달 알고리즘 구현을 위한 암호/복호 장치의 스루풋(Throughput)이 향상된다. 또한, 데이터가 분리되어 병렬적으로 연산이 수행되므로 데이터 프로세싱 모듈의 자원 요구량이 적어 특히 스마트 카드와 같은 한정된 자원을 가진 환경하에서 동작하는 경우에도 데이터 처리 속도가 빠르다.
이상에서는 본 발명의 바람직한 실시예에 대해서 도시하고 설명하였으나, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.
도 1은 일반적인 라인달 알고리즘에서 입력 데이터, 입력데이터가 변환된 상태데이터(state array) 및 암호화 또는 복호화가 수행된 출력데이터의 구조를 나타낸 도면,
도 2a 및 2b는 일반적인 라인달 알고리즘이 수행되는 과정을 나타낸 흐름도,
도 3은 본 발명의 일 실시예에 따른 라인달 알고리즘을 구현하는 암호/복호 장치를 나타낸 도면,
도 4는 도 3의 레지스터부를 상세히 나타낸 도면, 그리고
도 5는 본 발명의 일 실시예에 따른 라인달 알고리즘을 구현하는 암호/복호 장치의 동작을 나타내는 흐름도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
310: 라운드키생성부 320: 초기라운드키가산부
330: 제1연산부 331: 제1선택기
333: 제1바이트치환부 335: 제1컬럼믹서부
337: 제3선택기 339: 제1라운드키가산부
340: 제2연산부 343: 제2바이트치환부
345: 제2컬럼믹서부 347: 제2선택기
349: 제2라운드키가산부 400: 레지스터부
401 내지 416: 제1 내지 제16레지스터 417: 선택기

Claims (15)

  1. 입력된 키를 이용하여 암호/복호를 위해 반복되는 복수의 라운드 각각에서의 연산을 위한 적어도 하나의 라운드키를 생성하는 라운드키생성부;
    복수개로 분리된 입력데이터를 순서대로 입력받고 복수의 상기 라운드 중 초기 라운드를 위해 상기 라운드키생성부에서 출력된, 분리된 상기 입력데이터의 크기에 대응하는 초기 라운드키의 일부를 순서대로 입력받아 가산하는 초기라운드키가산부;
    상기 초기라운드키가산부에서 출력된 제1데이터 및 상기 라운드키생성부에서 출력된 상기 라운드키의 일부를 입력받아 암호/복호를 위한 연산을 수행하는 제1연산부;
    상기 초기라운드키가산부에서 출력된 제2데이터 및 상기 라운드키생성부에서 출력된 상기 라운드키의 또다른 일부를 입력받아 암호/복호를 위한 연산을 수행하는 제2연산부; 및
    상기 제1연산부에서 출력된 제1데이터 및 상기 제2연산부에서 출력된 제2데이터를 임시 저장한 후, 복수의 상기 라운드 중 다음번 라운드에서의 연산을 수행하도록 상기 제1연산부 및 상기 제2연산부에 각각 입력하고, 복수의 상기 라운드가 모두 종료하면 암호화/복호화된 데이터를 출력하는 레지스터부;를 포함하는 것을 특징으로 하는 암호/복호 장치.
  2. 제 1항에 있어서,
    상기 제1연산부 및 상기 제2연산부는 라인달(Rijndael) 암호/복호 알고리즘에 따른 연산을 수행하는 것을 특징으로 하는 암호/복호 장치.
  3. 제 1항에 있어서,
    상기 제1연산부는.
    상기 초기라운드키가산부 및 상기 레지스터부에서 출력된 데이터 중 어느 하나를 입력받아 암호/복호를 위한 라인달 바이트치환 연산/라인달 역 바이트치환 연산을 수행하는 제1바이트치환부;
    상기 제1바이트치환부에서 출력된 데이터를 입력받아 암호/복호를 위한 라인달 컬럼믹스 연산/라인달 역 컬럼믹스 연산을 수행하는 제1컬럼믹서부; 및
    상기 제1컬럼믹서부 및 상기 제1바이트치환부 중 어느 하나의 출력 데이터를 입력받고 상기 라운드키생성부로부터 상기 라운드키의 일부를 입력받아 라운드키 가산 연산을 수행하는 제1라운드키가산부;를 포함하는 것을 특징으로 하는 암호/복호 장치.
  4. 제 2항에 있어서.
    상기 제1연산부는, 상기 초기라운드키가산부 및 상기 레지스터부의 출력데이터를 입력받아 선택적으로 어느 하나를 상기 제1바이트치환부로 입력하는 제1선택기;를 더 포함하는 것을 특징으로 하는 암호/복호 장치.
  5. 제 2항에 있어서,
    상기 제1연산부는, 상기 제1컬럼믹서부 및 상기 제1바이트치환부의 출력 데이터를 입력받아 선택적으로 상기 제1라운드키가산부에 입력하는 제3선택기;를 더 포함하는 것을 특징으로 하는 암호/복호 장치.
  6. 제 5항에 있어서,
    복수의 상기 라운드 중 마지막 라운드에서는, 상기 제3선택기는 상기 제1바이트치환부의 출력 데이터를 선택하여 상기 제1라운드키가산부에 입력하는 것을 특징으로 하는 암호/복호 장치.
  7. 제 1항에 있어서,
    상기 제2연산부는,
    상기 레지스터부의 출력 데이터를 입력받아 암호/복호를 위한 라인달 바이트 치환 연산/라인달 역 바이트치환 연산을 수행하는 제2바이트치환부;
    상기 초기라운드키가산부의 출력 데이터를 입력받아 암호/복호를 위한 라인달 컬럼 믹스 연산/라인달 역 컬럼 믹스 연산을 수행하는 제2컬럼믹서부; 및
    상기 제1연산부 및 상기 제2컬럼믹서부의 출력데이터중 어느 하나를 입력받고 상기 라운드키생성부로부터 라운드키의 일부를 입력받아 라운드키 가산 연산을 수행하는 제2라운드키가산부;를 포함하는 것을 특징으로 하는 암호/복호 장치.
  8. 제 7항에 있어서.
    상기 제2연산부는, 상기 제2컬럼믹서부 및 상기 제2바이트연산부의 출력데이터를 입력받아 선택적으로 어느 하나를 상기 제2라운드키연산부로 입력하는 제2선택기;를 더 포함하는 것을 특징으로 하는 암호/복호 장치.
  9. 제 8항에 있어서,
    복수의 상기 라운드 중 마지막 라운드에서는, 상기 제2선택기는 상기 제2바이트치환부의 출력 데이터를 선택하여 상기 제2라운드키연산부에 입력하는 것을 특징으로 하는 암호/복호 장치.
  10. 제 1항에 있어서,
    상기 레지스터부는,
    입력된 데이터를 저장하기 위한 적어도 하나의 레지스터; 및
    상기 레지스터로부터 데이터를 입력받아 선택적으로 출력하는 선택기;를 포함하는 것을 특징으로 하는 암호/복호 장치.
  11. 제 10항에 있어서,
    상기 레지스터부는 제1레지스터 내지 제16레지스터를 포함하는 것을 특징으로 하는 암호/복호 장치.
  12. 제 11항에 있어서,
    상기 제1레지스터 내지 제4레지스터는 상기 제1연산부의 출력 데이터를 입력받고, 상기 제5레지스터 내지 제5레지스터는 상기 제2연산부의 출력데이터를 입력받는 것을 특징으로 하는 암호/복호 장치.
  13. 제 11항에 있어서,
    상기 제1레지스터 내지 제8레지스터에 저장된 데이터는 상기 제9레지스터 내지 제16레지스터에 입력되는 것을 특징으로 하는 암호/복호 장치.
  14. 제 11항에 있어서,
    상기 제9 내지 제16레지스터에 저장된 데이터는 상기 선택기에 의해 라인달 시프트 연산이 수행되고, 상기 선택기의 출력 데이터는 상기 제1연산부 및 상기 제2연산부에 입력되는 것을 특징으로 하는 암호/복호 장치.
  15. 제 1항에 있어서,
    상기 입력데이터의 크기는 128 비트이고, 상기 입력데이터는 4개의 32 비트 열로 분리되어 순서대로 상기 초기라운드가산부에 입력되는 것을 특징으로 하는 암호/복호 장치.
KR1020030086560A 2003-12-01 2003-12-01 AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법 Ceased KR20050053379A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020030086560A KR20050053379A (ko) 2003-12-01 2003-12-01 AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법
US11/000,496 US7639797B2 (en) 2003-12-01 2004-12-01 Apparatus and method of performing AES Rijndael algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030086560A KR20050053379A (ko) 2003-12-01 2003-12-01 AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR20050053379A true KR20050053379A (ko) 2005-06-08

Family

ID=34675698

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030086560A Ceased KR20050053379A (ko) 2003-12-01 2003-12-01 AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법

Country Status (2)

Country Link
US (1) US7639797B2 (ko)
KR (1) KR20050053379A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100931193B1 (ko) * 2007-11-09 2009-12-10 한국전자통신연구원 수동형 rfid 태그의 암호화 연산 장치
KR100949538B1 (ko) * 2008-09-09 2010-03-25 한국전자통신연구원 Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0000735D0 (en) 2000-01-13 2000-03-08 Eyretel Ltd System and method for analysing communication streams
US8015042B2 (en) 2001-04-02 2011-09-06 Verint Americas Inc. Methods for long-range contact center staff planning utilizing discrete event simulation
JP2006526227A (ja) 2003-05-23 2006-11-16 ワシントン ユニヴァーシティー Fpgaデバイスを使用するインテリジェントデータ記憶および処理
US7885405B1 (en) * 2004-06-04 2011-02-08 GlobalFoundries, Inc. Multi-gigabit per second concurrent encryption in block cipher modes
DE102004062825B4 (de) * 2004-12-27 2006-11-23 Infineon Technologies Ag Kryptographische Einheit und Verfahren zum Betreiben einer kryptographischen Einheit
JP4596256B2 (ja) * 2005-08-02 2010-12-08 ソニー株式会社 送受信システムおよび方法、送信装置および方法、受信装置および方法、並びにプログラム
US8108237B2 (en) 2006-02-22 2012-01-31 Verint Americas, Inc. Systems for integrating contact center monitoring, training and scheduling
US8379841B2 (en) * 2006-03-23 2013-02-19 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US7680264B2 (en) 2006-03-31 2010-03-16 Verint Americas Inc. Systems and methods for endpoint recording using a conference bridge
IL174784A0 (en) * 2006-04-04 2006-12-31 Nds Ltd Robust cipher design
US7660406B2 (en) 2006-06-27 2010-02-09 Verint Americas Inc. Systems and methods for integrating outsourcers
US7660407B2 (en) 2006-06-27 2010-02-09 Verint Americas Inc. Systems and methods for scheduling contact center agents
US8131578B2 (en) * 2006-06-30 2012-03-06 Verint Americas Inc. Systems and methods for automatic scheduling of a workforce
US7930314B2 (en) 2006-09-28 2011-04-19 Verint Americas Inc. Systems and methods for storing and searching data in a customer center environment
US7570755B2 (en) 2006-09-29 2009-08-04 Verint Americas Inc. Routine communication sessions for recording
US8837697B2 (en) * 2006-09-29 2014-09-16 Verint Americas Inc. Call control presence and recording
US8422668B1 (en) 2006-12-15 2013-04-16 Spansion Llc Table lookup operation on masked data
EP2186250B1 (en) 2007-08-31 2019-03-27 IP Reservoir, LLC Method and apparatus for hardware-accelerated encryption/decryption
US20100246828A1 (en) * 2009-03-30 2010-09-30 David Johnston Method and system of parallelized data decryption and key generation
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
CN101782956B (zh) * 2010-02-09 2012-06-13 杭州晟元芯片技术有限公司 一种基于aes实时加密的数据保护方法及装置
US8958550B2 (en) * 2011-09-13 2015-02-17 Combined Conditional Access Development & Support. LLC (CCAD) Encryption operation with real data rounds, dummy data rounds, and delay periods
US20130067212A1 (en) * 2011-09-14 2013-03-14 Augustin J. Farrugia Securing implementation of cryptographic algorithms using additional rounds
US9014370B2 (en) * 2012-12-09 2015-04-21 Sandisk Technologies Inc. High performance hardware-based execution unit for performing C2 block cipher encryption/decryption
US9397830B2 (en) 2012-12-30 2016-07-19 Raymond Richard Feliciano Method and apparatus for encrypting and decrypting data
US10554399B2 (en) 2012-12-30 2020-02-04 Audacious Designs, Llc Method and apparatus for encrypting and decrypting data
EP2874342A1 (en) * 2013-11-15 2015-05-20 Gemalto SA Method to encrypt a sensitive data secure against template attacks
WO2018066951A1 (en) * 2016-10-09 2018-04-12 Lg Electronics Inc. Improved lightweight block cipher
KR102602696B1 (ko) * 2017-10-13 2023-11-16 삼성전자주식회사 암호화 장치 및 복호화 장치, 이들의 동작방법
US11210664B2 (en) * 2018-10-02 2021-12-28 Capital One Services, Llc Systems and methods for amplifying the strength of cryptographic algorithms

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR200279546Y1 (ko) * 2002-02-28 2002-06-24 주식회사 소프트커널 문서 암/복호화장치
KR20020087331A (ko) * 2001-05-14 2002-11-22 최병윤 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
KR20030051111A (ko) * 2001-12-18 2003-06-25 신경욱 AES Rijndael(라인달) 암호 알고리듬의 하드웨어 구현을위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로
KR20030087893A (ko) * 2002-05-09 2003-11-15 최병윤 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030198345A1 (en) * 2002-04-15 2003-10-23 Van Buer Darrel J. Method and apparatus for high speed implementation of data encryption and decryption utilizing, e.g. Rijndael or its subset AES, or other encryption/decryption algorithms having similar key expansion data flow
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
KR20050092698A (ko) * 2002-12-13 2005-09-22 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 라인달 블록 암호의 서브바이트 함수를 실행하는 장치 및방법과 데이터 암호화 및 해독 장치
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020087331A (ko) * 2001-05-14 2002-11-22 최병윤 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
KR20030051111A (ko) * 2001-12-18 2003-06-25 신경욱 AES Rijndael(라인달) 암호 알고리듬의 하드웨어 구현을위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로
KR200279546Y1 (ko) * 2002-02-28 2002-06-24 주식회사 소프트커널 문서 암/복호화장치
KR20030087893A (ko) * 2002-05-09 2003-11-15 최병윤 라운드 키의 온라인 계산 기능을 갖는 모듈화 구조의 AESRijndael 라운드 키 생성 회로

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100931193B1 (ko) * 2007-11-09 2009-12-10 한국전자통신연구원 수동형 rfid 태그의 암호화 연산 장치
KR100949538B1 (ko) * 2008-09-09 2010-03-25 한국전자통신연구원 Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법
US8774402B2 (en) 2008-09-09 2014-07-08 Electronics And Telecommunications Research Institute Encryption/decryption apparatus and method using AES rijndael algorithm

Also Published As

Publication number Publication date
US7639797B2 (en) 2009-12-29
US20050135607A1 (en) 2005-06-23

Similar Documents

Publication Publication Date Title
KR20050053379A (ko) AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법
US7221763B2 (en) High throughput AES architecture
McLoone et al. High performance single-chip FPGA Rijndael algorithm implementations
AU767323B2 (en) Block encryption device using auxiliary conversion
US8411853B2 (en) Alternate galois field advanced encryption standard round
US20230261853A1 (en) Method and apparatus for improving the speed of advanced encryption standard (aes) decryption algorithm
CN1672352A (zh) 基于先进加密标准(aes)的硬件密码机
CN110784307B (zh) 轻量级密码算法scenery实现方法、装置及存储介质
WO2011123575A1 (en) Cryptographic processor with dynamic update of encryption state
KR20050078271A (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
US10237066B1 (en) Multi-channel encryption and authentication
JP4098719B2 (ja) Aesアルゴリズム用のプログラマブルデータ暗号化エンジン
Li Efficient and flexible architecture for AES
Pyrgas et al. A very compact architecture of CLEFIA block cipher for secure IoT systems
JP2005513541A6 (ja) Aesアルゴリズム用のプログラマブルデータ暗号化エンジン
US20060198524A1 (en) Hardware implementation of the mixcolumn/invmiscolumn functions
US20250038952A1 (en) Methods, unit and device for successively executing first and next block cryptographic computations
EP1629626B1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
TWI776474B (zh) 單回合高階加密標準電路模組
Abdulwahed Chaos-Based Advanced Encryption Standard
Canright et al. A more compact AES
US12401495B1 (en) Universal circuit device for selective block cipher cryptographic processing with space efficient configurational agility
JP2003500681A (ja) 暗号テキストの分散性を高めるためにデータアレイに基数変換、論理演算及び疑似乱数ジェネレータを用いる暗号化エンジン
KR100498736B1 (ko) 블록 암호용 다항식 곱셈장치 및 방법
Manteena A VHDL Implemetation of the Advanced Encryption Standard-Rijndael Algorithm

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20031201

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20080502

Comment text: Request for Examination of Application

Patent event code: PA02011R01I

Patent event date: 20031201

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20091120

Patent event code: PE09021S01D

E601 Decision to refuse application
PE0601 Decision on rejection of patent

Patent event date: 20100217

Comment text: Decision to Refuse Application

Patent event code: PE06012S01D

Patent event date: 20091120

Comment text: Notification of reason for refusal

Patent event code: PE06011S01I