KR100840944B1 - 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법 - Google Patents

역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법 Download PDF

Info

Publication number
KR100840944B1
KR100840944B1 KR1020060122860A KR20060122860A KR100840944B1 KR 100840944 B1 KR100840944 B1 KR 100840944B1 KR 1020060122860 A KR1020060122860 A KR 1020060122860A KR 20060122860 A KR20060122860 A KR 20060122860A KR 100840944 B1 KR100840944 B1 KR 100840944B1
Authority
KR
South Korea
Prior art keywords
multiplication
block
result
byte
input
Prior art date
Application number
KR1020060122860A
Other languages
English (en)
Other versions
KR20080051537A (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 KR1020060122860A priority Critical patent/KR100840944B1/ko
Priority to PCT/KR2007/003054 priority patent/WO2008069388A2/en
Publication of KR20080051537A publication Critical patent/KR20080051537A/ko
Application granted granted Critical
Publication of KR100840944B1 publication Critical patent/KR100840944B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Error Detection And Correction (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법에 관한 것이다.
본 발명에 따르면, 역믹스컬럼블록 장치는 비트 단위의 입력 데이터를 바이트 단위로 저장하여 출력하는 저장부, 저장부로부터 입력받은 입력 바이트에 대한 16진수 값인 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하여 출력하는 제1 곱셈연산 블록부, 제1 곱셈연산 블록부로부터 입력받은 {01}, {02}, {04} 및 {08} 곱셈연산 결과를 이용하여 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행하여 출력하는 제2 곱셈연산 블록부 및 제2 곱셈연산 블록부로부터 입력받은 {09}, {0b}, {0d} 및 {0e} 곱셈연산 결과에 대한 배타적 논리합 연산을 수행하여 출력 바이트를 출력하는 배타적 논리합 연산부를 포함한다.
이와 같이, 곱셈기로 구성된 역믹스컬럼블록 장치를 간단한 하드웨어로 구현함으로써 암호화 성능을 향상시켜, 소형, 저전력 휴대기기에 쉽게 적용할 수 있다.
AES, 복호화, 역믹스컬럼블록,

Description

역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법{MixColum block device and method of multiplication calculation thereof}
도 1은 종래 사용되는 AES 암호화 알고리즘을 설명하기 위한 하드웨어 구성도이다.
도 2는 본 발명에 사용되는 AES 암호화 알고리즘의 하드웨어 구성에서 역믹스컬럼블록의 연산 과정을 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 하드웨어 구성도이다.
도 4는 본 발명의 실시예에 따른 제1 곱셈연산 블록부의 {01}, {02}, {04} 및 {08} 곱셈연산을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 {02} 곱셈연산 블록의 구성을 상세하게 보인 도면이다.
도 6은 본 발명의 실시예에 따른 제2 곱셈연산 블록부의 {09}, {0b}, {0d}, {0e} 곱셈 연산을 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 배타적 논리합 연산부의 구성을 상세하게 보인 도면이다.
도 8은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 곱셈연산 과정을 설 명하기 위한 도면이다.
도 9는 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {02} 곱셈연산 과정을 세부적으로 설명하기 위한 도면이다.
도 10은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {09} 곱셈연산 과정을 설명하기 위한 도면이다.
도 11은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {0b} 곱셈연산 과정을 설명하기 위한 도면이다.
도 12는 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {0d} 곱셈연산 과정을 설명하기 위한 도면이다.
도 13은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {0e} 곱셈연산 과정을 설명하기 위한 도면이다.
도 14 내지 도 17은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 출력 바이트 연산과정을 설명하기 위한 도면이다.
본 발명은 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법에 관한 것이다. 더욱 상세하게는, AES(Advanced Encryption Standard) 블록 알고리즘을 구성하는 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법에 관한 것이다.
도 1은 종래 사용되는 AES 암호화 알고리즘을 설명하기 위한 하드웨어 구성 도이다.
도 1에 따르면, AES 암호화 알고리즘은 초기 라운드 처리부(110), 반복 라운드 처리부(120) 및 마지막 라운드 처리부(130)로 구성된다.
여기서, 초기 라운드 처리부(110)는 복호화를 위한 라운드키 처리를 수행하는 라운드키처리(AddRoundKey)블록(123)으로 구성된다.
반복 라운드 처리부(120)는 대치 연산이 수행된 암호문을 복귀시키기 위한 쉬프트된 행을 다시 원래대로 복귀시키기 위한 역쉬프트로우(InvShiftRows)블록(121), 역서브바이트(InvSubBytes)블록(122), 라운드키처리(AddRoundKey)블록(123) 및 추가 선형 변환을 역수행하기 위한 역믹스컬럼(InvMixColums)블록(124)으로 구성된다.
그리고, 마지막 라운드 처리부(130)는 역쉬프트로우(InvShiftRows)블록(121), 역서브바이트(InvSubBytes)블록(122) 및 라운드키처리(AddRoundKey)블록(123)으로 구성된다.
여기서, 역쉬프트로우(InvShiftRows)블록(121)이나 라운드키처리(AddRoundKey)블록(123)은 바이트(8 비트)단위의 자리 이동으로 쉽게 하드웨어로 구현할 수 있다.
그러나 역서브바이트(InvSubBytes)블록(122)과 역믹스컬럼(InvMixColums)블록(124)을 하드웨어로 구현할 경우, 곱셈연산에 따른 전체적인 처리 속도가 늦어지고, 곱셈기 사용은 하드웨어 자원을 많이 사용하기에 휴대기기 적용에 적합하지 않은 문제점이 있다.
한편, 종래 기술로서 대한민국 특허출원번호 제2003-0051111호 "AES Rijndael(라인달) 암호 알고리즘의 하드웨어 구현을 위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로"와, 대한민국 특허출원번호 제2005-0092576호 "매스팅 방법이 적용된 데이터 암호처리장치, AES 암호시스템 및 AES 암호방법"이 개시되어 있다.
상술한 종래기술들은, 하드웨어 자원을 공유하거나 또는 서브바이트를 간략화하는 방법으로 하드웨어 자원을 줄이는 방안을 제시하고 있으나, 역믹스컬럼블록의 곱셈기에 대한 언급은 없다.
또한, 다른 종래 기술로서 대한민국 특허출원번호 제2004-0047105호 "블록 암호용 다항식 곱셈장치 및 방법"에서 역믹스컬럼블록의 곱셈장치에 대하여 언급하고 있으나, 연산시 다수의 클럭 사용과 곱셈인자를 만들 때 하드웨어 사용에 있어 중복이 많은 문제점이 있다.
따라서, 본 발명이 이루고자 하는 기술적 과제는 복호화 성능을 향상시키면서 소형, 저전력 휴대기기에 쉽게 적용될 수 있는 간단한 하드웨어로 구성된 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법을 제공하는 것이다.
상기 기술한 바와 같은 과제를 이루기 위하여 본 발명의 특징에 따른 역믹스컬럼블록 장치는,
AES(Advanced Encryption Standard) 블록 복호의 라운드 연산을 수행하는 역믹스컬럼(MixColums)블록 장치에 있어서, 비트 단위의 입력 데이터를 바이트 단위로 저장하고 저장된 입력 바이트를 출력하는 저장부; 상기 저장부로부터 입력받은 상기 입력 바이트에 대한 16진수 값인 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하여 출력하는 제1 곱셈연산 블록부; 상기 제1 곱셈연산 블록부로부터 입력받은 상 기 {01}, {02}, {04} 및 {08} 곱셈연산을 수행한 결과를 이용하여 16진수 값인 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행하여 출력하는 제2 곱셈연산 블록부; 및 상기 제2 곱셈연산 블록부로부터 입력받은 상기 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행한 결과에 대한 배타적 논리합 연산을 수행하여 상기 입력 바이트에 대한 출력 바이트를 출력하는 배타적 논리합 연산부를 포함한다.
본 발명의 특징에 따른 곱셈연산방법은,
AES 블록 암호의 라운드 연산을 수행하는 역믹스컬럼블록의 곱셈연산방법에 있어서, 입력 바이트에 대한 16진수 값인 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하는 단계; 상기 {01}, {02}, {04} 및 {08} 곱셈연산을 수행한 결과를 이용하여 16진수 값인 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행하는 단계; 상기 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행한 결과에 대한 배타적 논리합 연산을 수행하는 단계; 및 상기 배타적 논리합 연산을 수행한 결과를 상기 입력 바이트에 대한 출력 바이트를 출력하는 단계를 포함한다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대 되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 본 명세서에서 기재한 모듈(module)이란 용어는 특정한 기능이나 동작을 처리하는 하나의 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현할 수 있다.
우선, 이해의 편의를 위해 도 2를 참조하여 본 발명에 의한 역믹스컬럼블록 연산 과정을 간략히 제시하고자 한다.
도 2는 본 발명에 사용되는 AES 암호화 알고리즘의 하드웨어 구성에서 역믹스컬럼블록의 연산 과정을 설명하기 위한 도면이다.
128 비트 암호문 입력이 역서브바이트 블록을 거쳐 역믹스컬럼블록으로 전달되면 도 2에 보인 바와 같이 바이트 단위의 4×4 행렬 형태로 정렬하고, 행렬의 열 단위(32 비트)가 역믹스컬럼블록의 입력이 된다.
열의 전환 방식은 유한체 GF(28)과 4 등급(degree) 모듈라 x 4 + 1을 사용한 아래 수학식 1에 보인 다항식을 이용하여 수학식 2에 보인 역다항식을 구한다.
Figure 112006090359523-pat00001
Figure 112006090359523-pat00002
수학식 2에 보인 역다항식을 이용하여 역믹스컬럼 전환을 계산하면 아래 수 학식 3에서 수학식 4의 행렬식이 주어진다.
Figure 112006090359523-pat00003
여기서,
Figure 112006090359523-pat00004
는 입력 바이트를 의미하고
Figure 112006090359523-pat00005
는 출력 바이트를 의미한다.
Figure 112006090359523-pat00006
위의 수학식 4를 연산하면 다음과 같은 수학식 5를 얻을 수 있다.
Figure 112006090359523-pat00007
위의 수학식 5에서 각각의 입력 바이트(
Figure 112006090359523-pat00008
)에 대하여 {09} 곱셈연산, {0b} 곱셈연산, {0d} 곱셈연산 및 {0e} 곱셈연산을 한 다음 배타적 논리합(XOR) 연산을 하면 역믹스컬럼블록의 출력 바이트(
Figure 112006090359523-pat00009
)를 만들 수 있다. 여기서, {09}, {0b}, {0d} 및 {0e}는 16진수 값을 의미한다.
한편, 16진수 값 {02} 곱셈연산을 살펴보면, '2'를 단순히 산술곱셈하는 것이 아니라 2를 곱한 값에 아래 수학식 6의 다항식을 이용하여 모듈로(modulo) 연산을 수행한다.
Figure 112006090359523-pat00010
하나의 실시예로서
Figure 112006090359523-pat00011
연산에 대해서 살펴보면, 먼저 아래 수학식 7과 같이 연산된다.
Figure 112006090359523-pat00012
Figure 112006090359523-pat00013
Figure 112006090359523-pat00014
Figure 112006090359523-pat00015
Figure 112006090359523-pat00016
Figure 112006090359523-pat00017
Figure 112006090359523-pat00018
이때, 수학식 7의 결과에 수학식 6의 다항식을 이용한 모듈로 연산에 대해 살펴보면, 아래 수학식 8과 같다.
Figure 112006090359523-pat00019
Figure 112006090359523-pat00020
modulo
Figure 112006090359523-pat00021
Figure 112006090359523-pat00022
수학식 8에 보인 바와 같이, 모듈로 연산을 하면 {02} 곱셈연산이 완료된다.
이때, 상술한 바와 같이 {02} 곱셈연산을 하기 보다 {02} 곱셈연산은 입력 바이트를 좌측으로 1 비트 쉬프트 시켜 2 곱셈 값을 구하고 모듈로 연산은 2 곱셈 값에 {11D}값을 배타적 논리합(XOR) 연산을 함으로써 수행될 수 있다.
여기서, 수학식 5의 모듈로 연산을 위한 다항식은 8차 다항식이므로 입력 바이트의 최상위 비트가 '0'이면 모듈로 연산을 수행할 필요가 없다. 그리고 최상위 비트가 '1'일 때만 배타적 논리합(XOR) 연산을 수행한다.
최상위 비트가 '1'일 때, {11D} XOR 연산의 최상위 비트는 항상 '0'이 되므로 9비트 연산 필요없이 좌측 1비트 쉬프트 결과에 {1D} 배타적 논리합(XOR) 연산만 하면 된다.
즉, 쉬프트레지스터, 한번의 8비트 배타적 논리합(XOR) 연산 및 입력 바이트의 최상위 비트에 따른 출력 값을 선택하기 위한 먹스로 {02} 곱셈연산을 수행할 수 있다.
이때, {04} 곱셈연산은 {02} 곱셈연산의 결과를 이용하여 {02} 곱셈연산과 동일한 방법으로 한다.
{08} 곱셈연산은 {04} 곱셈연산의 결과를 이용하여 {02} 곱셈연산과 동일한 방법으로 한다.
즉 {04}, {08} 곱셈연산은 {02} 곱셈연산 하드웨어의 구성과 동일하다.
여기서, 위의 수학식 5에서 {09} 곱셈연산은 {01}
Figure 112006090359523-pat00023
{08} 연산과 동일하고 {01} 곱셈연산은 입력 바이트와 동일하다. 즉 {09} 곱셈연산은 입력 바이트와 {08} 곱셈연산을 배타적 논리합(XOR) 연산하면 된다.
또한, 수학식 5에서 {0b} 곱셈연산은 {01}
Figure 112006090359523-pat00024
{02}
Figure 112006090359523-pat00025
{08}의 연산과 동일하므로, 입력 바이트, {02} 곱셈연산 결과 및 {08} 곱셈연산 결과를 배타적 논리합(XOR) 연산하면 된다.
또한, 수학식 5에서 {0d} 곱셈연산은 {01}
Figure 112006090359523-pat00026
{04}
Figure 112006090359523-pat00027
{08}의 연산과 동일하므로, 입력 바이트, {04} 곱셈연산 결과 및 {08} 곱셈연산 결과를 배타적 논리합(XOR) 연산하면 된다.
또한, 수학식 5에서 {0e} 곱셈연산은 {02}
Figure 112006090359523-pat00028
{04}
Figure 112006090359523-pat00029
{08}의 연산과 동일하고, {02} 곱셈연산 결과, {04} 곱셈연산 결과 및 {08} 곱셈연산 결과를 배타적 논리합(XOR) 연산하면 된다.
즉, {09}, {0b}, {0d}, {0e} 곱셈연산을 하기 위하여 {01}, {02}, {04} 및 {08} 곱셈연산 결과를 이용하여 배타적 논리합(XOR) 연산만 하면 된다.
그러면, 이제 이러한 내용을 적용한 본 발명의 실시예에 따른 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법에 대하여 도면을 참고로 하여 상세하게 설명한다.
먼저, 역믹스컬럼블록 장치의 구성에 대해 살펴보면 다음과 같다.
도 3은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 하드웨어 구성도이다.
도 3에 따르면, 역믹스컬럼블록 장치는 저장부(210), 제1 곱셈연산 블록부(220), 제2 곱셈연산 블록부(230) 및 배타적 논리합 연산부(240)를 포함한다.
저장부(210)는 32비트의 입력 데이터를 8비트 단위로 구분하여 4개의 입력 바이트를 저장하는 제1 저장 모듈(212), 제2 저장 모듈(214), 제3 저장 모듈(216) 및 제4 저장 모듈(218)을 포함한다.
여기서, 제1 저장 모듈(212)은 첫번째 입력 바이트(
Figure 112006090359523-pat00030
)를 저장하고, 제2 저장 모듈(214)은 두번째 입력 바이트(
Figure 112006090359523-pat00031
)를 저장하고, 제3 저장 모듈(216)은 세번째 입력 바이트(
Figure 112006090359523-pat00032
)를 저장하고, 제4 저장 모듈(218)은 네번째 입력 바이트(
Figure 112006090359523-pat00033
)를 저장한다.
제1 곱셈연산 블록부(220)는 저장부(210)로부터 출력된 각각의 입력 바이트에 대한 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하는 제1 곱셈연산 모듈(222), 제2 곱셈연산 모듈(224), 제3 곱셈연산 모듈(226) 및 제4 곱셈연산 모듈(228)을 포함한다.
여기서, 제1 곱셈연산 모듈(222)은 제1 저장 모듈(212)로부터 입력받은 첫번째 입력 바이트(
Figure 112006090359523-pat00034
)에 대한 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하는 각각의 블록을 포함한다.
이때, {01} 곱셈연산 블록은 도 3에 표시된 xt0_0 블록과 동일하고, {02} 곱셈연산 블록은 xt2_0 블록과 동일하고, {04} 곱셈연산 블록은 xt4_0 블록과 동일하고, {08} 곱셈연산 블록은 xt8_0 블록과 동일하다.
제2 곱셈연산 모듈(224)은 제2 저장 모듈(214)로부터 입력받은 두번째 입력 바이트(
Figure 112006090359523-pat00035
)에 대한 {01} 곱셈연산을 수행하는 {01} 곱셈연산 블록(또는 xt0_1 블 록), {02} 곱셈연산을 수행하는 {02} 곱셈연산 블록(또는 xt2_1 블록), {04} 곱셈연산을 수행하는 {04} 곱셈연산 블록(또는 xt4_1 블록) 및 {08} 곱셈연산을 수행하는 {08} 곱셈연산 블록(또는 xt8_1 블록)을 포함한다.
제3 곱셈연산 모듈(226)은 제3 저장 모듈(216)로부터 입력받은 세번째 입력 바이트(
Figure 112006090359523-pat00036
)에 대한 {01} 곱셈연산을 수행하는 {01} 곱셈연산 블록(또는 xt0_2 블록), {02} 곱셈연산을 수행하는 {02} 곱셈연산 블록(또는 xt2_2 블록), {04} 곱셈연산을 수행하는 {04} 곱셈연산 블록(또는 xt4_2 블록) 및 {08} 곱셈연산을 수행하는 {08} 곱셈연산 블록(또는 xt8_2 블록)을 포함한다.
제4 곱셈연산 모듈(228)은 제4 저장 모듈(218)로부터 입력받은 네번째 입력 바이트(
Figure 112006090359523-pat00037
)에 대한 {01} 곱셈연산을 수행하는 {01} 곱셈연산 블록(또는 xt0_3 블록), {02} 곱셈연산을 수행하는 {02} 곱셈연산 블록(또는 xt2_3 블록), {04} 곱셈연산을 수행하는 {04} 곱셈연산 블록(또는 xt4_3 블록) 및 {08} 곱셈연산을 수행하는 {08} 곱셈연산 블록(또는 xt8_3 블록)을 포함한다.
제2 곱셈연산 블록부(230)는 제1 곱셈연산 블록부(220)로부터 출력된 각각의 {01}, {02}, {04} 및 {08} 곱셈연산 결과를 이용하여 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행하는 제5 곱셈연산 모듈(232), 제6 곱셈연산 모듈(234), 제7 곱셈연산 모듈(236) 및 제8 곱셈연산 모듈(238)을 포함한다.
제5 곱셈연산 모듈(232)은 제1 곱셈연산 모듈(222)로부터 입력받은 {01} 곱셈연산 결과, {02} 곱셈연산 결과, {04} 곱셈연산 결과 및 {08} 곱셈연산 결과를 이용하여 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 각각 수행하는 곱셈연산 블록(또는 각각 xt9_0 블록, xtb_0 블록, xtd_0 블록 및 xte_0 블록)을 포함한다.
제6 곱셈연산 모듈(234)은 제2 곱셈연산 모듈(224)로부터 입력받은 {01} 곱셈연산 결과, {02} 곱셈연산 결과, {04} 곱셈연산 결과 및 {08} 곱셈연산 결과를 이용하여 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 각각 수행하는 곱셈연산 블록(또는 각각 xt9_1 블록, xtb_1 블록, xtd_1 블록 및 xte_0 블록)을 포함한다.
제7 곱셈연산 모듈(236)은 제3 곱셈연산 모듈(226)로부터 입력받은 {01} 곱셈연산 결과, {02} 곱셈연산 결과, {04} 곱셈연산 결과 및 {08} 곱셈연산 결과를 이용하여 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 각각 수행하는 곱셈연산 블록(또는 각각 xt9_2 블록, xtb_2 블록, xtd_2 블록 및 xte_2 블록)을 포함한다.
제8 곱셈연산 모듈(238)은 제4 곱셈연산 모듈(228)로부터 입력받은 {01} 곱셈연산 결과, {02} 곱셈연산 결과, {04} 곱셈연산 결과 및 {08} 곱셈연산 결과를 이용하여 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 각각 수행하는 곱셈연산 블록(또는 각각 xt9_3 블록, xtb_3 블록, xtd_3 블록 및 xte_3 블록)을 포함한다.
배타적 논리합 연산부(240)는 제2 곱셈연산 블록부(230)로부터 입력받은 각각의 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행한 결과에 대한 배타적 논리합 연산을 수행하여 각각의 출력 바이트(
Figure 112006090359523-pat00038
)(242, 244, 246, 248)를 출력한다.
도 4는 본 발명의 실시예에 따른 제1 곱셈연산 블록부(220)의 {01}, {02}, {04} 및 {08} 곱셈연산을 설명하기 위한 도면으로서, 특히 제1 곱셈연산 모듈(222) 을 상세하게 보인 도면이다.
도 4에 따르면, xt0_0 블록(222a)은 제1 저장 모듈(212)로부터 첫번째 입력 바이트(
Figure 112008003006438-pat00039
)를 입력받아 xt2_0 블록(222b) 및 제5 곱셈연산 모듈(232)의 xt9_0 블록(232a)에게 출력한다.
그리고 xt2_0 블록(222b)은 xt0_0 블록(222a)으로부터 입력받은 값을 xt4_0 블록(222c) 및 제5 곱셈연산 모듈(232)의 xtb_0 블록(232b)에게 출력한다.
그리고 xt4_0 블록(222c)은 xt2_0 블록(222b)으로부터 입력받은 값을 xt8_0 블록(222d) 및 제5 곱셈연산 모듈(232)의 xtd_0 블록(232c)에게 출력한다.
그리고 xt8_0 블록(222d)은 xt4_0 블록(222c)으로부터 입력받은 값을 제5 곱셈연산 모듈(232)의 xte_0 블록(232d)에게 출력한다.
도 5는 본 발명의 실시예에 따른 {02} 곱셈연산 블록의 구성을 상세하게 보인 도면으로서, 도 3의 xt2_0 블록, xt2_1 블록, xt2_2 블록 및 xt2_3 블록의 구성이 이에 해당한다.
도 5에 따르면, {02} 곱셈연산 블록은 제1 저장 레지스터(310), 쉬프트 레지스터(320), 제2 저장 레지스터(330), 배타적 논리합 연산기(340) 및 먹스(350)를 포함한다.
제1 저장 레지스터(310)는 바이트 단위의 입력 값을 저장하여 쉬프트 레지스터로 전달하는 수단이다. 이때, 바이트 단위의 입력 값은 도 3에 보인 바에 따르면, {01} 곱셈연산 블록으로부터 전달되는 입력 바이트이다.
쉬프트 레지스터(320)는 제1 저장 레지스터(310)로부터 전달받은 입력 바이트를 좌측으로 1 비트 쉬프트시켜 출력한다. 이렇게 하면, 입력 바이트에 대한 2 곱셈 값을 연산할 수 있다.
제2 저장 레지스터(330)는 모듈로(modulo) 연산을 위한 16진수 값{1D}를 저장하고 이를 배타적 논리합 연산기(340)로 출력한다.
배타적 논리합 연산기(340)는 쉬프트 레지스터(320)로부터 쉬프트시킨 입력 바이트 및 제2 저장 레지스터(330)로부터 16진수 값{1D}를 입력받아 배타적 논리합 연산을 수행한다.
먹스(350)는 제1 저장 레지스터(310)에 저장된 입력 바이트의 최상위 비트를 제어 비트로 입력받고 쉬프트 레지스터(320) 및 배타적 논리합 연산기(340)로부터 각각 출력되는 값을 입력받는다. 그리고 입력 바이트의 최상위 비트가 '0'이면 쉬프트 레지스터(320)로부터 출력되는 값을 출력하고 최상위 비트가 '1'이면 배타적 논리합 연산기(340)로부터 출력되는 값을 출력한다.
도 6은 본 발명의 실시예에 따른 제2 곱셈연산 블록부(230)의 {09}, {0b}, {0d}, {0e} 곱셈연산을 설명하기 위한 도면이다.
도 6에 따르면, xt9_0 블록(232a)은 {01}
Figure 112006090359523-pat00040
{08} 연산을 위해서 첫번째 입력 바이트(
Figure 112006090359523-pat00041
)와 {08} 곱셈연산 결과인 xt8_0 블록(222d)의 출력값을 입력받아 이들에 대한 배타적 논리합 연산(XOR)을 수행한 결과를 {09} 곱셈연산 결과로서 출력한다.
xtb_0 블록(232b)은 {01}
Figure 112008003006438-pat00042
{02}
Figure 112008003006438-pat00043
{08} 연산을 위해서 첫번째 입력 바이트(
Figure 112008003006438-pat00044
), {02} 곱셈연산 결과인 xt2_0 블록(222b)의 출력값, {08} 곱셈연산 결과인 xt8_0 블록(222d)의 출력값을 입력받아 이들에 대한 배타적 논리합 연산(XOR)을 수행한 결과를 {0b} 곱셈연산 결과로서 출력한다.
xtd_0 블록(232c)은 {01}
Figure 112008003006438-pat00045
{04}
Figure 112008003006438-pat00046
{08} 연산을 위해서 첫번째 입력 바이트(
Figure 112008003006438-pat00047
), {04} 곱셈연산 결과인 xt4_0 블록(222c)의 출력값, {08} 곱셈연산 결과인 xt8_0 블록(222d)의 출력값을 입력받아 이들에 대한 배타적 논리합 연산(XOR)을 수행한 결과를 {0d} 곱셈연산 결과로서 출력한다.
xte_0 블록(232d)은 {02}
Figure 112008003006438-pat00048
{04}
Figure 112008003006438-pat00049
{08} 연산을 위해서 첫번째 입력 바이트(
Figure 112008003006438-pat00050
), {02} 곱셈연산 결과인 xt2_0 블록(222b)의 출력값, {04} 곱셈연산 결과인 xt4_0 블록(222c) 및 {08} 곱셈연산 결과인 xt8_0 블록(222d)의 출력값을 입력받아 이들에 대한 배타적 논리합 연산(XOR)을 수행한 결과를 {0e} 곱셈연산 결과로서 출력한다.
도 7은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 배타적 논리합 연산부의 구성을 상세하게 보인 도면이다.
도 7에 따르면, 배타적 논리합 연산부(240)의 {09}, {0b}, {0d} 및 {0e} 곱셈연산 결과들에 대한 배타적 논리합 연산을 수행하여 출력 바이트를 출력한다.
제1 입력 바이트(
Figure 112008003006438-pat00051
)에 대한 역믹스컬럼전환한 값을 의미하는 제1 출력 바이트(
Figure 112008003006438-pat00052
)를 출력하는 제1 출력부(242)는 제2 곱셈연산 블록부(230)의 xt9_3 블록, xtb_1 블록, xtd_2 블록 및 xte_0 블록의 출력 값들에 대한 배타적 논리합 연산을 수행한 결과 값이다.
제2 입력 바이트(
Figure 112008003006438-pat00053
)에 대한 역믹스컬럼전환한 값을 의미하는 제2 출력 바이트(
Figure 112008003006438-pat00054
)를 출력하는 제2 출력부(244)는 제2 곱셈연산 블록부(230)의 xt9_0 블록, xtb_2 블록, xtd_3 블록 및 xte_1 블록의 출력 값들에 대한 배타적 논리합 연산을 수행한 결과 값이다.
제3 입력 바이트(
Figure 112008003006438-pat00055
)에 대한 역믹스컬럼전환한 값을 의미하는 제3 출력 바이트(
Figure 112008003006438-pat00056
)를 출력하는 제3 출력부(246)는 제2 곱셈연산 블록부(230)의 xt9_1 블록, xtb_3 블록, xtd_0 블록 및 xte_2 블록의 출력 값들에 대한 배타적 논리합 연산을 수행한 결과 값이다.
제4 입력 바이트(
Figure 112008003006438-pat00057
)에 대한 역믹스컬럼전환한 값을 의미하는 제4 출력 바이트(
Figure 112008003006438-pat00058
)를 출력하는 제4 출력부(248)는 제2 곱셈연산 블록부(230)의 xt9_2 블록, xtb_0 블록, xtd_1 블록 및 xte_3 블록의 출력 값들에 대한 배타적 논리합 연산을 수행한 결과 값이다.
이제, 상술한 역믹스컬럼블록 장치를 이용한 곱셈연산 과정에 대해 살펴보기로 한다.
도 8은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 곱셈연산 과정을 설 명하기 위한 도면이다.
도 8에 따르면, 역믹스컬럼블록 장치는 비트 단위로 입력된 데이터를 바이트 단위로 저장한다(S101).
다음, 상기 단계(S101)에서 저장한 바이트 단위의 입력 데이터에 대한 16진수 값{01}, {02}, {04} 및 {08} 곱셈연산을 수행한다(S103).
다음, 상기 단계(S103)에서 수행한 {01}, {02}, {04} 및 {08} 곱셈연산 값을 이용하여 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행한다(S105).
다음, 상기 단계(S105)에서 수행한 {09}, {0b}, {0d} 및 {0e} 곱셈연산 값에 대한 배타적 논리합 연산을 수행한다(S107).
다음, 상기 단계(S107)에서 수행한 배타적 논리합 연산값을 바이트 단위의 입력 데이터 즉 입력 바이트에 대한 출력 바이트로 출력한다(S109).
도 9는 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {02} 곱셈연산 과정을 세부적으로 설명하기 위한 도면이다.
도 9에 따르면, {02} 곱셈연산 블록은 바이트 단위의 데이터가 입력(S201)되면 이를 좌측으로 1 비트 쉬프트 시킨다(S203).
다음, 상기 단계(S203)에서 쉬프트 시킨 입력 데이터와 기저장된 16진수 값{1D}에 대한 배타적 논리합 연산을 수행한다(S205).
다음, 상기 단계(S201)에서 입력된 입력 바이트의 최상위 비트를 이용하여 상기 단계(S203)에서 쉬프트시킨 입력 데이터와 상기 단계(S205)에서 수행한 배타적 논리합 연산 값 중에서 출력할 값을 선별한다(S207).
다음, 상기 단계(S207)에서 선별한 값을 출력한다(S209).
도 10은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {09} 곱셈연산 과정을 설명하기 위한 도면이다.
도 10에 따르면, {09} 곱셈연산 블록은 {01} 곱셈연산한 값 및 {08} 곱셈연산한 값을 입력(S301, S303)받아 이들에 대한 배타적 논리합 연산을 수행한다(S305).
그리고 상기 단계(S305)에서 배타적 논리합 연산을 수행한 결과를 {09} 곱셈연산 결과로서 출력한다(S307).
도 11은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {0b} 곱셈연산 과정을 설명하기 위한 도면이다.
도 11에 따르면, {0b} 곱셈연산 블록은 {01} 곱셈연산한 값, {02} 곱셈연산한 값 및 {08} 곱셈연산한 값을 입력(S401, S403, S405)받아 이들에 대한 배타적 논리합 연산을 수행한다(S407).
그리고 상기 단계(S407)에서 배타적 논리합 연산을 수행한 결과를 {0b} 곱셈연산 결과로서 출력한다(S409).
도 12는 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {0d} 곱셈연산 과정을 설명하기 위한 도면이다.
도 12에 따르면, {0d} 곱셈연산 블록은 {01} 곱셈연산한 값, {04} 곱셈연산한 값 및 {08} 곱셈연산한 값을 입력(S501, S503, S505)받아 이들에 대한 배타적 논리합 연산을 수행한다(S507).
그리고 상기 단계(S507)에서 배타적 논리합 연산을 수행한 결과를 {0d} 곱셈연산 결과로서 출력한다(S509).
도 13은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 {0e} 곱셈연산 과정을 설명하기 위한 도면이다.
도 13에 따르면, {0e} 곱셈연산 블록은 {02} 곱셈연산한 값, {04} 곱셈연산한 값 및 {08} 곱셈연산한 값을 입력(S601, S603, S605)받아 이들에 대한 배타적 논리합 연산을 수행한다(S607).
그리고 상기 단계(S607)에서 배타적 논리합 연산을 수행한 결과를 {0e} 곱셈연산 결과로서 출력한다(S609).
도 14 내지 도 17은 본 발명의 실시예에 따른 역믹스컬럼블록 장치의 출력 바이트 연산 과정을 설명하기 위한 도면이다.
먼저, 도 14는 첫번째 입력 바이트에 대한 역믹스컬럼블록 전환된 출력 바이트를 연산하는 과정을 보인 도면이다.
도 14에 따르면, 배타적 논리합 연산부(240)는 제2 곱셈연산 블록부(230)로부터 네번째 입력 바이트에 대한 {09} 곱셈연산 결과, 두번째 입력 바이트에 대한 {0b} 곱셈연산 결과, 세번째 입력 바이트에 대한 {0d} 곱셈연산 결과 및 첫번째 입력 바이트에 대한 {0e} 곱셈연산 결과를 입력(S701, S703, S705, S707)받아 이들에 대한 배타적 논리합 연산을 수행한다(S709).
그리고 상기 단계(S709)에서 배타적 논리합 연산을 수행한 결과를 첫번째 입력 바이트(
Figure 112006090359523-pat00059
)에 대한 출력 바이트(
Figure 112006090359523-pat00060
)로서 출력한다(S711).
다음, 도 15는 두번째 입력 바이트에 대한 역믹스컬럼블록 전환된 출력 바이트를 연산하는 과정을 보인 도면이다.
도 15에 따르면, 배타적 논리합 연산부(240)는 제2 곱셈연산 블록부(230)로부터 첫번째 입력 바이트에 대한 {09} 곱셈연산 결과, 세번째 입력 바이트에 대한 {0b} 곱셈연산 결과, 네번째 입력 바이트에 대한 {0d} 곱셈연산 결과 및 두번째 입력 바이트에 대한 {0e} 곱셈연산 결과를 입력(S801, S803, S805, S807)받아 이들에 대한 배타적 논리합 연산을 수행한다(S809).
그리고 상기 단계(S809)에서 배타적 논리합 연산을 수행한 결과를 첫번째 입력 바이트(
Figure 112008003006438-pat00061
)에 대한 출력 바이트(
Figure 112008003006438-pat00062
)로서 출력한다(S811).
다음, 도 16은 세번째 입력 바이트에 대한 역믹스컬럼블록 전환된 출력 바이트를 연산하는 과정을 보인 도면이다.
도 16에 따르면, 배타적 논리합 연산부(240)는 제2 곱셈연산 블록부(230)로부터 두번째 입력 바이트에 대한 {09} 곱셈연산 결과, 네번째 입력 바이트에 대한 {0b} 곱셈연산 결과, 첫번째 입력 바이트에 대한 {0d} 곱셈연산 결과 및 세번째 입력 바이트에 대한 {0e} 곱셈연산 결과를 입력(S901, S903, S905, S907)받아 이들에 대한 배타적 논리합 연산을 수행한다(S909).
그리고 상기 단계(S909)에서 배타적 논리합 연산을 수행한 결과를 첫번째 입력 바이트(
Figure 112008003006438-pat00063
)에 대한 출력 바이트(
Figure 112008003006438-pat00064
)로서 출력한다(S911).
다음, 도 17은 네번째 입력 바이트에 대한 역믹스컬럼블록 전환된 출력 바이 트를 연산하는 과정을 보인 도면이다.
도 17에 따르면, 배타적 논리합 연산부(240)는 제2 곱셈연산 블록부(230)로부터 세번째 입력 바이트에 대한 {09} 곱셈연산 결과, 첫번째 입력 바이트에 대한 {0b} 곱셈연산 결과, 두번째 입력 바이트에 대한 {0d} 곱셈연산 결과 및 네번째 입력 바이트에 대한 {0e} 곱셈연산 결과를 입력(S1001, S1003, S1005, S1007)받아 이들에 대한 배타적 논리합 연산을 수행한다(S1009).
그리고 상기 단계(S1009)에서 배타적 논리합 연산을 수행한 결과를 첫번째 입력 바이트(
Figure 112008003006438-pat00065
)에 대한 출력 바이트(
Figure 112008003006438-pat00066
)로서 출력한다(S1011).
상기한 바와 같이, 도 14 내지 도 18에 기술된 내용에 따르면 출력 바이트의 연산 과정은 아래 수학식 9와 같이 정리할 수 있다.
Figure 112006090359523-pat00067
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
그리고 본 발명의 권리범위는 상술한 실시예에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
이와 같이 본 발명의 실시예에 의하면, 종래의 곱셈기로 구현 했을 경우 보다 하드웨어 자원을 적게 사용할 수 있어, 소형 휴대용 기기에 적용 가능하다.

Claims (12)

  1. AES(Advanced Encryption Standard) 블록 복호의 라운드 연산을 수행하는 역믹스컬럼(MixColums)블록 장치에 있어서,
    비트 단위의 입력 데이터를 바이트 단위로 저장하고 저장된 입력 바이트를 출력하는 저장부;
    상기 저장부로부터 입력받은 상기 입력 바이트에 대한 16진수 값인 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하여 출력하는 제1 곱셈연산 블록부;
    상기 제1 곱셈연산 블록부로부터 입력받은 상기 {01}, {02}, {04} 및 {08} 곱셈연산을 수행한 결과를 이용하여 16진수 값인 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행하여 출력하는 제2 곱셈연산 블록부; 및
    상기 제2 곱셈연산 블록부로부터 입력받은 상기 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행한 결과에 대한 배타적 논리합 연산을 수행하여 상기 입력 바이트에 대한 출력 바이트를 출력하는 배타적 논리합 연산부
    를 포함하는 역믹스컬럼블록 장치.
  2. 제1항에 있어서,
    상기 제1 곱셈연산 블록부는,
    상기 저장부로부터 상기 입력 바이트를 입력받아 출력하는 {01} 곱셈연산 블록;
    상기 {01} 곱셈연산 블록이 출력한 값을 입력받아 {02} 곱셈연산을 수행한 결과를 출력하는 {02} 곱셈연산 블록;
    상기 {02} 곱셈연산 블록이 출력한 값을 입력받아 {04} 곱셈연산을 수행한 결과를 출력하는 {04} 곱셈연산 블록; 및
    상기 {04} 곱셈연산 블록이 출력한 값을 입력받아 {08} 곱셈연산을 수행한 결과를 출력하는 {08} 곱셈연산 블록
    을 포함하는 것을 특징으로 하는 역믹스컬럼블록 장치.
  3. 제2항에 있어서,
    상기 {02} 곱셈연산 블록 또는 상기 {04} 곱셈연산 블록 또는 상기 {08} 곱셈연산 블록은,
    바이트 단위의 입력 값을 저장하는 제1 저장 레지스터;
    상기 제1 저장 레지스터로부터 입력 바이트를 입력받아 이를 좌측으로 1 비트 쉬프트시켜 출력하는 쉬프트 레지스터;
    16진수 값 {1D}를 저장하는 제2 저장 레지스터;
    상기 쉬프트 레지스터로부터 출력된 값과 상기 제2 저장 레지스터에 저장된 값을 입력받고, 입력받은 값들에 대한 배타적 논리합 연산을 수행하여 출력하는 배타적 논리합 연산기; 및
    상기 제1 저장 레지스터로부터 입력받은 상기 입력 바이트의 최상위 비트를 제어 비트로 하고 상기 쉬프트 레지스터로부터 출력된 값 및 상기 배타적 논리합 연산기로부터 출력된 값을 입력받아 상기 입력받은 값들 중에서 출력할 값을 선별하는 먹스
    를 포함하는 것을 특징으로 하는 역믹스컬럼블록 장치.
  4. 제3항에 있어서,
    상기 제1 곱셈연산 블록부는,
    상기 {01} 곱셈연산 블록, {02} 곱셈연산 블록, {04} 곱셈연산 블록 및 {08} 곱셈연산 블록으로 구성되고, 상기 저장부로부터 입력된 복수개의 입력 바이트에 대한 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하는 곱셈연산 모듈을 복수개 포함하는 것을 특징으로 하는 역믹스컬럼블록 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제2 곱셈연산 블록부는,
    상기 {01} 곱셈연산 블록 및 상기 {08} 곱셈연산 블록으로부터 출력된 값을 입력받아 이들에 대한 배타적 논리합 연산을 수행하여 {09} 곱셈연산 결과를 출력하는 {09} 곱셈연산 블록;
    상기 {01} 곱셈연산 블록, {02} 곱셈연산 블록 및 상기 {08} 곱셈연산 블록으로부터 출력된 값을 입력받아 이들에 대한 배타적 논리합 연산을 수행하여 {0b} 곱셈연산 결과를 출력하는 {0b} 곱셈연산 블록;
    상기 {01} 곱셈연산 블록, {04} 곱셈연산 블록 및 상기 {08} 곱셈연산 블록 으로부터 출력된 값을 입력받아 이들에 대한 배타적 논리합 연산을 수행하여 {0d} 곱셈연산 결과를 출력하는 {0d} 곱셈연산 블록;
    {02} 곱셈연산 블록, {04} 곱셈연산 블록 및 {08} 곱셈연산 블록으로부터 출력된 값을 입력받아 이들에 대한 배타적 논리합 연산을 수행하여 {0e} 곱셈연산 결과를 출력하는 {0e} 곱셈연산 블록
    을 포함하는 것을 특징으로 하는 역믹스컬럼블록 장치.
  6. 제3항에 있어서,
    상기 제2 곱셈연산 블록부는,
    상기 {09} 곱셈연산 블록, {0b} 곱셈연산 블록, {0d} 곱셈연산 블록 및 {0e} 곱셈연산 블록으로 구성되고, 상기 저장부로부터 입력된 복수개의 입력 바이트에 대한 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행하는 곱셈연산 모듈을 복수개 포함하는 것을 특징으로 하는 역믹스컬럼블록 장치.
  7. 제6항에 있어서,
    상기 배타적 논리합 연산부는,
    32 비트 단위로 입력된 데이터를 바이트 단위로 구분한 입력 바이트에 대한 출력 바이트를 연산하고,
    첫번째 입력 바이트에 대한 {0e} 곱셈연산 결과, 두번째 입력 바이트에 대한 {0b} 곱셈연산 결과, 세번째 입력 바이트에 대한 {0d} 곱셈연산 결과 및 네번째 입 력 바이트에 대한 {09} 곱셈연산 결과를 입력받아 이들에 대한 배타적 논리합 연산을 수행한 결과를 상기 첫번째 입력 바이트에 대한 출력 바이트로 연산하는 제1 출력부;
    첫번째 입력 바이트에 대한 {09} 곱셈연산 결과, 두번째 입력 바이트에 대한{0e} 곱셈연산 결과, 세번째 입력 바이트에 대한 {0b} 곱셈연산 결과 및 네번째 입력 바이트에 대한 {0d} 곱셉연산 결과를 입력받아 이들에 대한 배타적 논리합 연산을 수행한 결과를 상기 두번째 입력 바이트에 대한 출력 바이트로 연산하는 제2 출력부;
    첫번째 입력 바이트에 대한 {0d} 곱셈연산 결과, 두번째 입력 바이트에 대한 {09} 곱셈연산 결과, 세번째 입력 바이트에 대한 {0e} 곱셈연산 결과 및 네번째 입력 바이트에 대한 {0b} 곱셈연산 결과를 입력받아 이들에 대한 배타적 논리합 연산을 수행한 결과를 상기 세번째 입력 바이트에 대한 출력 바이트로 연산하는 제3 출력부; 및
    첫번째 입력 바이트에 대한 {0b} 곱셈연산 결과, 두번째 입력 바이트에 대한 {0d} 곱셈연산 결과, 세번째 입력 바이트에 대한 {09} 곱셈연산 결과 및 네번째 입력 바이트에 대한 {0e} 곱셈연산 결과를 입력받이 이들에 대한 배타적 논리합 연산을 수행한 결과를 상기 네번째 입력 바이트에 대한 출력 바이트로 연산하는 제4 출력부
    를 포함하는 것을 특징으로 하는 역믹스컬럼블록 장치.
  8. AES 블록 암호의 라운드 연산을 수행하는 역믹스컬럼블록의 곱셈연산방법에 있어서,
    입력 바이트에 대한 16진수 값인 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하는 단계;
    상기 {01}, {02}, {04} 및 {08} 곱셈연산을 수행한 결과를 이용하여 16진수 값인 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행하는 단계;
    상기 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행한 결과에 대한 배타적 논리합 연산을 수행하는 단계; 및
    상기 배타적 논리합 연산을 수행한 결과를 상기 입력 바이트에 대한 출력 바이트를 출력하는 단계
    를 포함하는 역믹스컬럼블록의 곱셈연산방법.
  9. 제8항에 있어서,
    상기 {01}, {02}, {04} 및 {08} 곱셈연산을 수행하는 단계는,
    상기 입력 바이트를 입력받아 출력하는 {01} 곱셈연산 단계;
    상기 {01} 곱셈연산 결과를 이용하여 {02} 곱셈연산을 수행하는 {02} 곱셈연산 단계;
    상기 {02} 곱셈연산 결과를 이용하여 {04} 곱셈연산을 수행하는 {04} 곱셈연산 단계; 및
    상기 {04} 곱셈연산 결과를 이용하여 {08} 곱셈연산을 수행하는 {08} 곱셈연 산 단계
    를 포함하는 것을 특징으로 하는 역믹스컬럼블록의 곱셈연산방법.
  10. 제9항에 있어서,
    상기 {02} 곱셈연산 단계 또는 상기 {04} 곱셈연산 단계 또는 상기 {08} 곱셈연산 단계는,
    상기 입력 바이트를 좌측으로 1 비트 쉬프트시켜 출력하는 단계;
    상기 쉬프트시켜 출력한 값과 16진수 값 {1D}에 대한 배타적 논리합 연산을 수행하여 출력하는 단계; 및
    상기 입력 바이트의 최상위 비트를 이용하여 상기 쉬프트시켜 출력한 값과 상기 배타적 논리합 연산을 수행하여 출력한 값 중에서 출력할 값을 선별하는 단계
    를 포함하는 것을 특징으로 하는 역믹스컬럼블록의 곱셈연산방법.
  11. 제10항에 있어서,
    상기 {09}, {0b}, {0d} 및 {0e} 곱셈연산을 수행하는 단계는,
    상기 {01} 곱셈연산 결과 및 상기 {08} 곱셈연산 결과들을 이용한 배타적 논리합 연산을 수행하는 {09} 곱셈연산 단계;
    상기 {01} 곱셈연산 결과, {02} 곱셈연산 결과 및 상기 {08} 곱셈연산 결과들을 이용한 배타적 논리합 연산을 수행하는 {0b} 곱셈연산 단계;
    상기 {01} 곱셈연산 결과, {04} 곱셈연산 결과 및 상기 {08} 곱셈연산 결과 들을 이용한 배타적 논리합 연산을 수행하는 {0d} 곱셈연산 단계; 및
    상기 {02} 곱셈연산 결과, {04} 곱셈연산 결과 및 {08} 곱셈연산 결과들을 이용한 배타적 논리합 연산을 수행하는 {0e} 곱셈연산 단계
    를 포함하는 것을 특징으로 하는 역믹스컬럼블록의 곱셈연산방법.
  12. 제11항에 있어서,
    상기 배타적 논리합 연산을 수행하는 단계는,
    32 비트 단위로 입력된 데이터를 바이트 단위로 구분한 입력 바이트에 대한 출력 바이트를 연산하고,
    첫번째 입력 바이트에 대한 {0e} 곱셈연산 결과, 두번째 입력 바이트에 대한 {0b} 곱셈연산 결과, 세번째 입력 바이트에 대한 {0d} 곱셈연산 결과 및 네번째 입력 바이트에 대한 {09} 곱셈연산 결과를 입력받아 이들에 대한 배타적 논리합 연산을 수행한 결과를 상기 첫번째 입력 바이트에 대한 출력 바이트로 연산하는 단계;
    첫번째 입력 바이트에 대한 {09} 곱셈연산 결과, 두번째 입력 바이트에 대한{0e} 곱셈연산 결과, 세번째 입력 바이트에 대한 {0b} 곱셈연산 결과 및 네번째 입력 바이트에 대한 {0d} 곱셉연산 결과를 입력받아 이들에 대한 배타적 논리합 연산을 수행한 결과를 상기 두번째 입력 바이트에 대한 출력 바이트로 연산하는 단계;
    첫번째 입력 바이트에 대한 {0d} 곱셈연산 결과, 두번째 입력 바이트에 대한 {09} 곱셈연산 결과, 세번째 입력 바이트에 대한 {0e} 곱셈연산 결과 및 네번째 입 력 바이트에 대한 {0b} 곱셈연산 결과를 입력받아 이들에 대한 배타적 논리합 연산을 수행한 결과를 상기 세번째 입력 바이트에 대한 출력 바이트로 연산하는 단계; 및
    첫번째 입력 바이트에 대한 {0b} 곱셈연산 결과, 두번째 입력 바이트에 대한 {0d} 곱셈연산 결과, 세번째 입력 바이트에 대한 {09} 곱셈연산 결과 및 네번째 입력 바이트에 대한 {0e} 곱셈연산 결과를 입력받이 이들에 대한 배타적 논리합 연산을 수행한 결과를 상기 네번째 입력 바이트에 대한 출력 바이트로 연산하는 단계
    를 포함하는 역믹스컬럼블록의 곱셈연산방법.
KR1020060122860A 2006-12-06 2006-12-06 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법 KR100840944B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060122860A KR100840944B1 (ko) 2006-12-06 2006-12-06 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법
PCT/KR2007/003054 WO2008069388A2 (en) 2006-12-06 2007-06-25 Inverse mixcolumn block device and method of performing multiplication calculation using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060122860A KR100840944B1 (ko) 2006-12-06 2006-12-06 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법

Publications (2)

Publication Number Publication Date
KR20080051537A KR20080051537A (ko) 2008-06-11
KR100840944B1 true KR100840944B1 (ko) 2008-06-24

Family

ID=39492740

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060122860A KR100840944B1 (ko) 2006-12-06 2006-12-06 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법

Country Status (2)

Country Link
KR (1) KR100840944B1 (ko)
WO (1) WO2008069388A2 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060198524A1 (en) 2003-05-14 2006-09-07 Sexton Bonnie C Hardware implementation of the mixcolumn/invmiscolumn functions

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW527783B (en) * 2001-10-04 2003-04-11 Ind Tech Res Inst Encryption/deciphering device capable of supporting advanced encryption standard

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060198524A1 (en) 2003-05-14 2006-09-07 Sexton Bonnie C Hardware implementation of the mixcolumn/invmiscolumn functions

Also Published As

Publication number Publication date
WO2008069388A2 (en) 2008-06-12
WO2008069388A3 (en) 2009-07-30
KR20080051537A (ko) 2008-06-11

Similar Documents

Publication Publication Date Title
US8340280B2 (en) Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
Hutter et al. NaCl on 8-bit AVR microcontrollers
US7991152B2 (en) Speeding up Galois Counter Mode (GCM) computations
US9503256B2 (en) SMS4 acceleration hardware
Hutter et al. NaCl’s crypto_box in hardware
JP6044738B2 (ja) 情報処理装置、プログラム及び記憶媒体
JP2002040933A (ja) データ暗号化標準アルゴリズムを利用した暗号化装置
KR20050078271A (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
JP2002229445A (ja) べき乗剰余演算器
KR100922728B1 (ko) Aes 암복호화 장치 및 암복호화 방법
Kaur et al. Efficient implementation of AES algorithm in FPGA device
KR100840944B1 (ko) 역믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법
Hammad Efficient hardware implementations for the advanced encryption standard algorithm
CN110071927B (zh) 一种信息加密方法、系统及相关组件
KR100788902B1 (ko) 믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법
Babu et al. Aes algorithm implementation using arm processor
Sireesha et al. A novel approach of area optimized and pipelined FPGA implementation of AES encryption and decryption
KR20020087331A (ko) 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
JP5605197B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
KR100498754B1 (ko) 소수체를 기반으로 하는 공개키 암호장치
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP5822757B2 (ja) ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
JP4990843B2 (ja) 暗号演算装置、その方法、及びプログラム
JP2006502437A (ja) 暗号化回路装置及び方法

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: 20130530

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150528

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160530

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170529

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180530

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 12