KR100498736B1 - 블록 암호용 다항식 곱셈장치 및 방법 - Google Patents

블록 암호용 다항식 곱셈장치 및 방법 Download PDF

Info

Publication number
KR100498736B1
KR100498736B1 KR10-2002-0075193A KR20020075193A KR100498736B1 KR 100498736 B1 KR100498736 B1 KR 100498736B1 KR 20020075193 A KR20020075193 A KR 20020075193A KR 100498736 B1 KR100498736 B1 KR 100498736B1
Authority
KR
South Korea
Prior art keywords
value
bit
multiplier
multiplexer
mask
Prior art date
Application number
KR10-2002-0075193A
Other languages
English (en)
Other versions
KR20040047105A (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-0075193A priority Critical patent/KR100498736B1/ko
Publication of KR20040047105A publication Critical patent/KR20040047105A/ko
Application granted granted Critical
Publication of KR100498736B1 publication Critical patent/KR100498736B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 AES 블록 암호의 라운드 연산을 하드웨어로 구현할 때, 많은 게이트 수를 필요로 하는 믹스 칼럼 변환의 게이트 수를 줄여 빠른 시간에 다항식 곱셈을 수행하기 위한 것으로, 이를 위한 구성은 입력 데이터 값에 대하여 한 바이트씩 연산을 수행한 후, 수행된 한 바이트 단위의 데이터 값을 클럭(clock)이 들어올 때마다 쉬프트시켜 제공하는 저장부와, 저장부로부터 제공되는 바이트 단위의 데이터 값이 암호화 모드인지, 아니면 복호화 모드인지를 결정하고, 결정된 모드 각각에 맞게 바이트 단위의 데이터 값을 제공하는 제1,2,3,4 다중화기와, 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {02}를 곱하여 제공하는 제1 곱셈기와, 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {0e}를 곱하여 제공하는 제2 곱셈기와, 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {03}을 곱하여 제공하는 제3 곱셈기와, 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값{0b}를 곱하여 제공하는 제4 곱셈기와, 제3다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값{0d}를 곱하여 제공하는 제5 곱셈기와, 제4다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수의 값{09}를 곱하여 제공하는 제6 곱셈기와, 제1,3 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값과, 제3,4 다중화기에 의해 결정된 암호화 모드에 따라 제공되는 바이트 단위의 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 출력하는 제1 XOR 연산기와, 제2,4,5,6 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 출력하는 제2 XOR 연산기와, 제1,2 XOR 연산기 각각으로부터 제공되는 8비트 출력 중 암호화 모드인지, 아니면 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0)을 수행하는 제5 다중화기를 포함한다. 따라서, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈 기의 면적을 작게 차지할 뿐만 아니라 입력에서 출력에 이르기까지 데이터가 거쳐야 할 게이트 수를 최소화하여 다항식 곱셈 장치의 동작 가능 주파수를 높일 수 있다. 그리고, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈기를 소프트웨어로 구현하는 것보다 훨씬 빠르게 동작한다. 또한, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈기를 AES 알고리즘의 암/복호화 장치에 적용하여 빠른 시간 내에 안전하게 데이터를 암호화 및 복호화 하는데 적용할 수 있다. 마지막으로, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈 장치가 AES 알고리즘에만 국한되지 않고 다른 다항식 곱셈이 필요한 장치에도 쉽게 적용할 수 있다는 효과가 있다.

Description

블록 암호용 다항식 곱셈장치 및 방법{APPARATUS AND METHOD FOR POLYNOMIAL MULTIPLY OF BLOCK CIPHER}
본 발명은 블록 암호용 다항식 곱셈장치 및 방법에 관한 것으로, 특히 믹스 칼럼(Mix Column) 이라 불리는 라운드 함수의 변환에 있어서, 에이이에스(Advanced Encryption Standard : AES) 블록 암호의 라운드 연산을 하드웨어로 구현할 때, 많은 게이트 수를 필요로 하는 믹스 칼럼 변환의 게이트 수를 줄일 수 있도록 하는 장치 및 방법에 관한 것이다.
통상적으로, AES 알고리즘은 데이터 및 키 처리의 기본 단위로서 바이트(Byte : 이하, 8비트라 칭함)를 사용하고, 이는 0 또는 1의 값을 갖는 이진수 8개의 배열로 볼 수 있다.
즉, 입출력 데이터와 키는 8비트의 배열로 처리되는데, 이는 128 비트 값을 8비트 단위로 그룹 지은 것이라 할 수 있다. 또한, 8비트들을 차례대로 4행 4열의 배열로 나타내고 이 배열을 기준으로 라운드의 각 변환을 수행한다.
그리고, AES의 라운드 함수는 Substitution, Shift_Row, 믹스 칼럼(Mix Column), Add_Round_Key의 네 가지 변환으로 구성된다. 이들 변환 중 믹스 칼럼 변환은 배열의 열 단위 연산으로써, 암호화 연산의 경우 각 열에 16진수 값, 즉 {02}, {03}, {01}, {01}을 곱하고, 복호화 연산의 경우 {0e}, {0b}, {0d}, {09}를 곱한 결과 값들을 이용하여 연산하는 변환이다.
또한, AES 알고리즘은 4 등급(degree)의 모듈라 곱셈 연산을 적용하는데 사용하는 모듈라는 x4+1이다. 그리고, AES 알고리듬에서 다항식 곱셈의 기본 동작은 Xtime()함수를 따르며, 8비트 데이터 a와 b를 고려할 때 Xtime()함수는 수학식 1, 즉 b = xtime(a) 연산 방법으로, a7이 1이면 a를 왼쪽으로 한 비트씩 쉬프트 한 후 16진수 1b를 XOR 한 결과와, 또한 a7이 0이면 a를 왼쪽으로 한 비트씩 쉬프트 한 결과가 xtime(a)의 결과가 된다.
이때 a와 b는 유한체(finite field) GF(28)의 원소로써 8비트 다항식으로 나타난다.
a = a7x7 + a6x6 + a5x5 + a4x 4 + a3x3 + a2x2 + a1x + a0
상술한 바와 같이, 수학식 1을 이용하여 믹스 칼럼 연산에 필요한 이진 다항식 곱셈기를 하드웨어로 구현하여 라운드 연산에 적용함으로써 다항식 곱셈을 할 수 있으며, 이러한 라운드 연산은 입력 키 길이에 따라 10회, 12회, 14회 반복하여 연산하는 기능을 갖는다.
이와 같이, 블록 암호용 다항식 곱셈기에 대한 기술로는 1992. 05. 29일 1992-9319로 출원된 "갈로아 필드 곱셈기"와, 1993. 11. 20일 1993-24860으로 출원된 "갈로아 필드 곱셈 방법 및 회로" 등에 개시되어 있다.
상술한 바와 같이, 개시된 선행기술을 상세하게 설명하면, 갈로아 필드 곱셈기는 갈로이스 필드(Galois Field)에서 임의의 두 원소를 곱하는 회로에 관한 것으로, GF(2)의 원소를 GF(2) 상의 다항식으로 표시하며, 앤드게이트를 규칙적으로 배열하고, 원시원 α와 α2, α3,...αm-1을 곱하는 회로를 XOR 게이트로 구현하여 이를 AND 게이트 배열에 연결함으로써 최종 결과를 GF(2)상의 다항식으로 출력하여 설계가 간단해지고, 신호의 흐름이 명확해 지는 기술이다.
다음으로, 갈로아 필드 곱셈 방법 및 회로는 덧셈, 뺄셈, 곱셈, 나눗셈의 사칙연산이 가능하고 그 사칙연산에 대해 닫혀있는 집합 중 원소의 수가 유한한 집합 즉, 갈로아 필드에 대한 곱셈기를 구현하는 기술에 관한 것으로, 갈로아 필드상의 두 원소인 피승수와 승수의 각 항을 서로 곱한 후 승수의 최고차항과 곱한 결과를 승수의 최고차항 -1항과 곱한 결과와 더할 때, 승수의 최고차항과 곱한 결과에서 피승수의 최고차항과 곱한 값은 최저차 항으로, 피승수의 최고차항 -1항은 최고차항으로, 최고차항 -2항은 최고차항 -1항으로, 최고차항 -3항은 최고차항 -2항으로 시프트-로테이트시켜 승수의 최고차항 -1항과 곱한 결과와 더하고, 이 결과에 대하여 해당 갈로아 필드의 생성 다항식에서 최고차항과 최저차항을 제거하고 남은 항들에 승수의 최고차항과 피승수의 최고차항을 곱한 결과를 더하는 과정을 반복수행 하도록 하는 기술이다.
이와 같이, 선행 특허에 개시된 기술을 살펴보았을 때, 본원 발명에서의 문제점인 입력 키 길이에 따라 10회, 12회, 14회 반복하여 라운드 연산하기 때문에 다항식 곱셈기를 하드웨어로 구현한 후, 매 라운드마다 반복해서 활용해야만 빠른 시간에 다항식 곱셈을 수행할 수 있다 라는 점은 선행 기술에서도 여전히 갖고 있다.
따라서, 본 발명은 상술한 단점을 해결하기 위해 안출된 것으로서, 그 목적은 AES 블록 암호의 라운드 연산을 하드웨어로 구현할 때, 많은 게이트 수를 필요로 하는 믹스 칼럼 변환의 게이트 수를 줄여 빠른 시간에 다항식 곱셈을 수행할 수 있도록 하는 블록 암호용 다항식 곱셈장치 및 방법을 제공함에 있다.
상술한 목적을 달성하기 위한 본 발명에서 블록 암호용 다항식 곱셈장치는 입력 데이터 값에 대하여 한 바이트씩 연산을 수행한 후, 수행된 한 바이트 단위의 데이터 값을 클럭(clock)이 들어올 때마다 쉬프트시켜 제공하는 저장부와, 저장부로부터 제공되는 바이트 단위의 데이터 값이 암호화 모드인지, 아니면 복호화 모드인지를 결정하고, 결정된 모드 각각에 맞게 바이트 단위의 데이터 값을 제공하는 제1,2,3,4 다중화기와, 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {02}를 곱하여 제공하는 제1 곱셈기와, 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {0e}를 곱하여 제공하는 제2 곱셈기와, 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {03}을 곱하여 제공하는 제3 곱셈기와, 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값{0b}를 곱하여 제공하는 제4 곱셈기와, 제3다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값{0d}를 곱하여 제공하는 제5 곱셈기와, 제4다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수의 값{09}를 곱하여 제공하는 제6 곱셈기와, 제1,3 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값과, 제3,4 다중화기에 의해 결정된 암호화 모드에 따라 제공되는 바이트 단위의 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 출력하는 제1 XOR 연산기와, 제2,4,5,6 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 출력하는 제2 XOR 연산기와, 제1,2 XOR 연산기 각각으로부터 제공되는 8비트 출력 중 암호화 모드인지, 아니면 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0)을 수행하는 제5 다중화기를 포함하는 것을 특징으로 한다.
또한, 상술한 목적을 달성하기 위한 본 발명에서 블록 암호용 다항식 곱셈방법은 저장부에서 입력 데이터 값에 대하여 한 바이트씩 연산을 수행한 후, 수행된 한 바이트 단위의 데이터 값을 클럭(clock)이 들어올 때마다 쉬프트시켜 제1,2,3,4 다중화기 각각으로 제공하는 단계와, 제1,2,3,4 다중화기에서 저장부로부터 제공되는 바이트 단위의 데이터 값이 암호화 모드인지, 아니면 복호화 모드인지를 결정하고, 결정된 모드 각각에 맞게 바이트 단위의 데이터 값을 제1,2,3,4,5,6 곱셈기와 제1,2 XOR 연산기에 선택적으로 제공하는 단계와, 제1 곱셈기에서 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {02}를 곱하여 제1 XOR 연산기에 제공하는 단계와, 제2 곱셈기에서 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {0e}를 곱하여 제2 XOR 연산기에 제공하는 단계와, 제3 곱셈기에서 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값 {03}을 곱하여 제1 XOR 연산기에 제공하는 단계와, 제4 곱셈기에서 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값{0b}를 곱하여 제2 XOR 연산기에 제공하는 단계와, 제5 곱셈기에서 제3다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수 값{0d}를 곱하여 제2 XOR 연산기에 제공하는 단계와, 제6 곱셈기에서 제4다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 할당된 마스크의 값에 따라 16진수의 값{09}를 곱하여 제2 XOR 연산기에 제공하는 단계와, 제1 XOR 연산기에서 제1,3 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값과, 제3,4 다중화기에 의해 결정된 암호화 모드에 따라 제공되는 바이트 단위의 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 제5 다중화기에 출력하는 단계와, 제2 XOR 연산기에서 제2,4,5,6 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 제5 다중화기에 출력하는 단계와, 제5 다중화기에서 제1,2 XOR 연산기 각각으로부터 제공되는 8비트 출력 중 암호화 모드인지, 아니면 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0)을 수행하는 단계를 포함하는 것을 특징으로 한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 실시 예를 상세하게 설명하기로 한다.
도 1은 본 발명에 따른 블록 암호용 다항식 곱셈 장치에 대한 블록 구성도로서, 저장부(10)와, 제1,2,3,4,5 다중화기(20-1,2,3,4,5)와, 제1,2,3,4,5,6 곱셈기(30-1,2,3,4,5,6)와, 제1,2 XOR 연산기(40-1,2)를 포함한다.
저장부(10)는 32 비트 입력 데이터를 저장하며, 클럭(clock)이 들어 올 때마다 한 바이트(byte : 이하, 8비트라 칭함)씩 쉬프트 연산을 수행하는 블록으로서, 32 비트 입력 데이터 값 중 가장 상위 8비트 값을 제1 다중화기(20-1)에 제공하고, 이어서, 다음 상위 8비트 값을 제2 다중화기(20-2)에 제공하며, 이어서, 다음 상위 8비트 값을 제3 다중화기(20-3)에 제공하며, 마지막 8비트 값을 제4 다중화기(20-4)에 제공한다.
제1,2,3,4 다중화기(20-1,2,3,4)는 암호화 모드인지 복호화 모드인지에 따라 각각 곱셈기로의 입력 값을 제어하는 블록으로서, 제1 다중화기(20-1)는 암호화 모드인지, 아니면 복호화 모드인지에 따라 저장부(10)로부터 제공된 가장 상위 8비트 값(32:24)을 어떤 곱셈기의 입력으로 보낼지를 결정하는데, 암호화 모드일 경우 제1 곱셈기(30-1)로 제공하고, 복호화 모드일 경우 제2 곱셈기(30-2)로 제공한다.
제2 다중화기(20-2)는 암호화 모드인지, 아니면 복호화 모드인지에 따라 저장부(10)로부터 제공된 다음 상위 8비트 값(23:16)을 어떤 곱셈기의 입력으로 보낼지를 결정하는데, 암호화 모드일 경우 제3 곱셈기(30-3)로 제공하고, 복호화 모드일 경우 제4 곱셈기(30-4)로 제공한다.
제3 다중화기(20-3)는 암호화 모드인지, 아니면 복호화 모드인지에 따라 저장부(10)로부터 제공된 다음 상위 8비트 값(15:8)을 어떤 곱셈기의 입력으로 보낼지를 결정하는데, 암호화 모드일 경우 저장부(10)로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기(40-1)로 제공하며, 복호화 모드일 경우 세 번째 상위 8비트 값을 제5 곱셈기(30-5)로 제공한다.
제4 다중화기(20-4)는 암호화 모드인지, 아니면 복호화 모드인지에 따라 저장부(10)로부터 제공된 마지막 8비트 값(7:0)을 어떤 곱셈기의 입력으로 보낼지를 결정하는데, 암호화 모드일 경우 저장부(10)로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기(40-1)로 제공하며, 복호화 모드일 경우 마지막 8비트 값을 제6 곱셈기(30-6)로 제공한다.
여기서, 저장부(10)에 "1"의 값을 갖는 클럭이 제공되면 저장부(10)의 값들은 8비트 씩 왼쪽으로 회전 쉬프트하고, 그 다음 "1"의 값을 갖는 클럭이 다시 제공되면 저장부(10)의 값들은 8비트 씩 왼쪽으로 회전 쉬프트를 하면서 동일한 과정을 반복함에 따라 4클럭 동안 상술한 연산을 통해 8비트씩 4개의 믹스 칼럼 변환 결과가 나오고 이들을 상위 8비트로부터 차례대로 배열하여 32비트의 변환 결과를 얻을 수 있다. 즉, 믹스 칼럼 변환기 4개를 동시에 사용함으로써 128 비트의 믹스 칼럼 변환 결과를 얻을 수도 있다.
다음으로, 제1 곱셈기(30-1)는 제1 다중화기(20-1)로부터 제공되는 8 비트 값에 16진수 값 {02}를 곱하여 제1 XOR 연산기(40-1)에 제공하는 블록으로서, 도 2는 8비트 값에 {02}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.
즉, 제1 곱셈기(30-1)는 제1 다중화기(20-1)로부터 8비트 값(32:24에 대응하는 7:0)이 제공되면(단계 200), 제공된 입력 값 중 최상위 비트 값(In(7))이 마스크(mask)의 값으로 할당되며(단계 201), 할당된 마스크의 값이 "0"인지, 아니면, "1"인지를 판단한다(단계 202).
상기 판단 단계(202)에서 마스크의 값이 "0"이면, 입력 값의 하위 7비트 값(In(6:0))이 출력 값의 상위 7비트 값(out(7:1))이 되고, 출력 값의 최하위 비트 값(out(0))은 "0"의 값을 갖는다(단계 203).
반면에, 상기 판단 단계(202)에서 마스크의 값이 "1"이면, 출력의 상위 세 비트 값 중 최상위 비트 값(out(7:5))에는 In(6:4)의 값이 들어가고, 출력의 다음 비트 값(Out(4))은 In(3)의 값을 반전한 값이 들어가고, 출력의 그 다음 비트 값(Out(3))에는 In(2)의 값을 반전한 값이 들어가며, 출력의 그 다음 비트 값(Out(2))에는 In(1)의 값이 들어가며, 출력의 그 다음 비트 값(Out(1))에는 In(0)을 반전한 값이 들어가며, 마지막으로 출력의 최하위 비트 값(Out(0))에는 1의 값이 들어간다(단계 204).
다음으로, 제2 곱셈기(30-2)는 제1 다중화기(20-1)로부터 제공되는 8 비트 값에 16진수 값 {0e}를 곱하여 제2 XOR 연산기(40-2)에 제공하는 블록으로서, 도 4는 8비트 값에 {0e}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.
즉, 제2 곱셈기(30-2)는 제1 다중화기(20-1)로부터 8비트 값(32:24에 대응하는 7:0)이 제공되면(단계 400), 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된다(단계 401).
이후, 제2 곱셈기(30-2)는 temp의 최상위 비트인 temp(5)에 In(6)과 In(5), In(4)의 XOR 연산 결과 비트가 들어가고, temp(4)에는 In(5)과 In(4), In(3)의 XOR 연산 결과 비트가 들어가며, temp(3)에는 In(4)와 In(3), In(2)의 XOR 연산 결과 비트가 들어가며, temp(2)에는 In(3)와 In(2), In(1)의 XOR 연산 결과 비트가 들어가며, temp(1)에는 In(2)와 In(1), In(0)의 XOR 연산 결과 비트가 들어가며, temp(0)에는 In(1)과 In(0)의 XOR 연산 결과 비트가 들어간다(단계 402).
다음으로, 제2 곱셈기(30-2)는 할당된 마스크(mask)가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단한다(단계 403).
상기 판단 단계(403)에서 할당된 마스크(mask)의 값이 000의 값을 갖는다면, temp 값의 최상위 비트인 temp(5)가 출력 값의 최상위 비트 Out(7)이 되고, 다음 출력 값 Out(6)은 temp(4)가 되며, 출력 값 Out(5)는 temp(3)이 되며, 출력 값 Out(4)는 temp(2)가 되며, 출력 값 Out(3)은 temp(1)이 되며, 출력 값 Out(2)는 temp(0)이 되며, 출력 값 Out(1)은 In(0)가 되며, 출력 값 Out(0)은 0의 값이 할당된다(404).
상기 판단 단계(403)에서 할당된 마스크의 값이 001의 값을 갖는다면, 출력의 상위 세 비트 Out(7), Out(6), Out(5)에는 temp(5), temp(4), temp(3)의 값이 차례대로 들어가고, Out(4)와 Out(3)는 temp(2)와 temp(1)의 값이 각각 반전되어 들어가며, 다음으로, Out(2)에는 temp(0)의 값이 들어가며, Out(1)에는 In(0)의 값이 반전되어 들어가며, 마지막으로 Out(0)에는 1의 값이 들어간다(405).
상기 판단 단계(403)에서 할당된 마스크의 값이 010의 값을 갖는다면, 출력의 상위 두 비트 Out(7), Out(6)에는 temp(5), temp(4)의 값이 차례로 들어가고, Out(5)에는 temp(3)의 값이 반전되어 들어가며, Out(4)에는 temp(2)의 값이 들어가며, Out(3)와 Out(2)에는 temp(1)과 temp(0)의 값이 각각 반전되어 들어가며, Out(1)에는 In(0)의 값이 들어가며, 마지막으로 Out(0)에는 1이 들어간다(406).
상기 판단 단계(403)에서 할당된 마스크의 값이 011의 값을 갖는다면, 출력의 상위 두 비트 Out(7), Out(6)에는 temp(5), temp(4)의 값이 차례대로 들어가고, Out(5)와 Out(4)에는 temp(3)과 temp(2)의 값이 반전되어 들어가며, Out(3)에는 temp(1)의 값이 들어가며, Out(2)에는 temp(1)이 값이 반전되어 들어가며, Out(1)에는 In(0)의 값이 반전되어 들어가며, 마지막으로 Out(0)에는 0의 값이 들어간다(407).
상기 판단 단계(403)에서 할당된 마스크의 값이 100의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(5)의 값이 들어가고, Out(6)에는 temp(4)가 반전되어 들어가며, Out(5)와 Out(4), Out(3), Out(2)에는 temp(3)과 temp(2), temp(1), temp(0)의 값이 들어가며, Out(1)에는 In(0)의 값이 들어가며, Out(0)에는 1의 값이 들어간다(408).
상기 판단 단계(403)에서 할당된 마스크의 값이 101의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(5)의 값이 들어가고, Out(6)에는 temp(4)가 반전되어 들어가며, Out(5)에는 temp(3)의 값이 들어가며, Out(4)와 Out(3)에는 temp(2)와 temp(1)의 값이 반전되어 들어가며, Out(1)에는 In(0)의 값이 반전되어 들어가며, Out(0)에는 0의 값이 들어간다(409).
상기 판단 단계(403)에서 할당된 마스크의 값이 110의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(5)의 값이 들어가고, Out(6)와 Out(5)에는 temp(4)와 temp(3)가 각각 반전되어 들어가며, Out(4)에는 temp(2)가 들어가며, Out(3)와 Out(2)에는 temp(1)과 temp(0)의 값이 반전되어 들어가며, Out(1)에는 In(0)의 값이 들어가며, Out(0)에는 0의 값이 들어간다(410).
상기 판단 단계(403)에서 할당된 마스크의 값이 111의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(5)의 값이 들어가고, Out(6)와 Out(5), Out(4)에는 temp(4)와 temp(3), temp(2)가 각각 차례대로 반전되어 들어가며, Out(3)에는 temp(1)이 들어가며, Out(2)에는 temp(0)의 값이 반전되어 들어가며, Out(1)에는 In(0)의 값이 반전되어 들어가며, 마지막으로 Out(0)에는 0의 값이 들어간다(411).
다음으로, 제3 곱셈기(30-3)는 제2 다중화기(20-2)로부터 제공되는 8 비트 값에 16진수 값 {03}을 곱하여 제1 XOR 연산기(40-1)에 제공하는 블록으로서, 도 3은 8비트 값에 {03}을 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.
즉, 제3 곱셈기(30-3)는 제2 다중화기(20-2)로부터 8비트 값(23:16에 대응하는 7:0)이 제공되면(단계 300), 제공된 입력 값 중 최상위 비트 값(In(7))이 마스크(mask)의 값으로 할당된다(단계 301).
이후, 제3 곱셈기(30-3)는 temp의 최상위 비트인 temp(6)에 In(7)과 In(6)의 XOR 연산 결과 비트가 들어가고, temp(5)에는 In(6)과 In(5)의 XOR 연산 결과 비트가 들어가며, temp(4)에는 In(5)와 In(4)의 XOR 연산 결과 비트가 들어가며, temp(3)에는 In(4)와 In(3)의 XOR 연산 결과 비트가 들어가며, temp(2)에는 In(3)과 In(2)의 XOR 연산 결과 비트가 들어가며, temp(1)에는 In(2)와 In(1)의 XOR 연산 결과 비트가 들어가며, temp(0)에는 In(1)과 In(0)의 XOR 연산 결과 비트가 들어간다(단계 302).
이어서, 할당된 마스크가 "0"의 값인지, 아니면, "1"의 값인지를 판단한다(단계 303).
상기 판단 단계(303)에서 마스크의 값이 "0"이면, temp 값의 최상위 비트 temp(6)이 출력 값의 최상위비트 Out(7)이 되고, 다음 출력 값 Out(6)은 temp(5)가 되며, 그 다음 출력 값 Out(5)은 temp(4)가 되며, 그 다음 출력 값 Out(4)는 temp(3)이 되며, 그 다음 출력 값 Out(3)은 temp(2)가 되며, 그 다음 출력 값 Out(2)는 temp(1)이 되며, 그 다음 출력 값 Out(1)은 temp(0)가 되며, 마지막 출력 값 Out(0)은 In(0)의 값이 할당된다(단계 304).
반면에, 상기 판단 단계(303)에서 마스크의 값이 "1"이면, 출력의 상위 세 비트 중 최상위 비트 Out(7), Out(6), Out(5)에는 temp(6), temp(5), temp(4)의 값이 차례로 들어가고, 그 다음 Out(4)와 Out(3)에는 temp(3)과 temp(2)의 값이 각각 반전되어 들어가며, Out(2)에는 temp(1)의 값이 들어가며, Out(1)에는 temp(0)의 값이 반전되어 들어가며, 마지막으로 Out(0)에는 In(0)의 반전된 값이 들어간다(단계 305).
제4 곱셈기(30-4)는 제2 다중화기(20-2)로부터 제공되는 8 비트 값에 16진수 값 {0b}를 곱하여 제2 XOR 연산기(40-2)에 제공하는 블록으로서, 도 5는 8비트 값에 {0b}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.
즉, 제4 곱셈기(30-4)는 제2 다중화기(20-2)로부터 8비트 값(23:16에 대응하는 7:0)이 제공되면(단계 500), 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된다(단계 501).
이후, 제4 곱셈기(30-4)는 temp의 최상위 비트인 temp(6)에 In(7)과 In(6), In(4)의 XOR 연산 결과 비트가 들어가고, temp(5)에는 In(6)과 In(5), In(3)의 XOR 연산 결과 비트가 들어가며, temp(4)에는 In(5)와 In(4), In(2)의 XOR 연산 결과 비트가 들어가며, temp(3)에는 In(4)와 In(3), In(1)의 XOR 연산 결과 비트가 들어가며, temp(2)에는 In(3)과 In(2), In(0)의 XOR 연산 결과 비트가 들어가며, temp(1)에는 In(2)와 In(1)의 XOR 연산 결과 비트가 들어가며, temp(0)에는 In(1)과 In(0)의 XOR 연산 결과 비트가 들어간다(단계 502).
다음으로, 제4 곱셈기(304)는 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단한다(단계 503).
상기 판단 단계(503)에서 할당된 마스크가 000의 값을 갖는다면, temp 값의 최상위 비트인 temp(6)가 출력 값의 최상위비트 Out(7)이 되고, 다음 출력 값 Out(6)은 temp(5)가 되며, 출력 값 Out(5)는 temp(4)가 되며, 출력 값 Out(4)는 temp(3)이 되며, 출력 값 Out(3)은 temp(2)가 되며, 출력 값 Out(2)는 temp(1)이 되며, 출력 값 Out(1)은 temp(0)가 되며, 출력 값 Out(0)은 In(0)의 값이 할당된다(단계 504).
상기 판단 단계(503)에서 할당된 마스크가 001의 값을 갖는다면, 출력의 상위 세 비트 Out(7), Out(6), Out(5)에는 temp(6), temp(5), temp(4)의 값이 차례대로 들어가고, Out(4)와 Out(3)에는 temp(3)과 temp(2)의 값이 각각 반전되어 들어가며, Out(2)에는 temp(1)의 값이 들어가며, Out(1)에는 temp(0) 값이 반전되어 들어가며, 마지막으로 Out(0)에는 In(0)이 반전되어 들어간다(505).
상기 판단 단계(503)에서 할당된 마스크가 010의 값을 갖는다면, 출력의 상위 두 비트 Out(7), Out(6)에는 temp(6), temp(5)의 값이 차례대로 들어가고, Out(5)와 Out(4)에는 temp(4)와 temp(3)의 값이 각각 반전되어 들어가며, Out(3)에는 temp(2)의 값이 들어가며, Out(2)와 Out(1)에는 temp(1)과 temp(0)의 값이 각각 반전되어 들어가며, Out(0)에는 In(0)의 값이 들어간다(단계 506).
상기 판단 단계(503)에서 할당된 마스크가 011의 값을 갖는다면, 출력의 상위 두 비트 Out(7), Out(6)에는 temp(6), temp(5)의 값이 차례대로 들어가고, Out(5)에는 temp(4)의 값이 반전되어 들어가며, Out(4)에는 temp(3)의 값이 들어가며, Out(3)과 Out(2)에는 temp(2)와 temp(1)의 값이 반전되어 들어가며, Out(1)에는 temp(0)의 값이 들어가며, Out(0)에는 In(0)의 값이 반전되어 들어간다(단계 507).
상기 판단 단계(503)에서 할당된 마스크가 100의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6), Out(5), Out(4)에는 temp(5), temp(4), temp(3)이 각각 반전되어 들어가며, Out(3)에는 temp(2)가 들어가며, Out(2)와 Out(1)에는 temp(1)과 temp(0)의 값이 반전되어 들어가며, Out(0)에는 In(0)의 값이 반전되어 들어간다(단계 508).
상기 판단 단계(503)에서 할당된 마스크가 101의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6)과 Out(5)에는 temp(5)와 temp(4)의 값이 각각 반전되어 들어가며, Out(4)에는 temp(3)의 값이 들어가며, Out(3)과 Out(2)에는 temp(2)와 temp(1)의 값이 반전되어 들어가며, Out(1)에는 temp(0)의 값이 들어가며, Out(0)에는 in(0)의 값이 들어간다(단계 509).
상기 판단 단계(503)에서 할당된 마스크가 110의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6)에는 temp(5)가 반전되어 들어가며, Out(5:1)의 다섯 비트에는 temp(4:0)의 다섯 비트가 차례대로 들어가며, Out(0)에는 In(0)의 값이 들어간다(단계 510).
상기 판단 단계(503)에서 할당된 마스크가 111의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6)에는 temp(5)의 값이 반전되어 들어가며, Out(5)에는 temp(4)가 들어가며, Out(4)와 Out(3)에는 temp(3)와 temp(2)가 각각 반전되어 들어가며, Out(2)에는 temp(1)이 들어가며, Out(1)에는 temp(0)의 값이 반전되어 들어가며, Out(0)에는 In(0)의 값이 들어간다(단계 511).
제5 곱셈기(30-5)는 제3 다중화기(20-3)로부터 제공되는 8 비트 값에 16진수 값 {0d}를 곱하여 제1,2 XOR 연산기(40-1,2)에 제공하는 블록으로서, 도 6은 8비트 값에 {0d}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.
즉, 제5 곱셈기(30-5)는 제3 다중화기(20-3)로부터 8비트 값(15:8에 대응하는 7:0)이 제공되면(단계 600), 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된다(단계 601).
이후, 제5 곱셈기(30-5)는 temp의 최상위 비트인 temp(5)에 In(7)과 In(5), In(4)의 XOR 연산 결과 비트가 들어가고, temp(4)에는 In(6)과 In(4), In(3)의 XOR 연산 결과 비트가 들어가며, temp(3)에는 In(5)와 In(3), In(2)의 XOR 연산 결과 비트가 들어가며, temp(2)에는 In(4)와 In(2), In(1)의 XOR 연산 결과 비트가 들어가며, temp(1)에는 In(3)와 In(1), In(0)의 XOR 연산 결과 비트가 들어가며, temp(0)에는 In(2)와 In(0)의 XOR 연산 결과 비트가 들어간다(단계 602).
다음으로, 제5 곱셈기(30-5)는 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단한다(단계 603).
상기 판단 단계(603)에서 할당된 마스크가 000의 값을 갖는다면, temp 값의 최상위 비트인 temp(5)가 출력 값의 최상위 비트 Out(7)이 되고, 다음 출력 값 Out(6)은 temp(4)가 되며, 출력 값 Out(5)는 temp(3)이 되며, 출력 값 Out(4)는 temp(2)가 되며, 출력 값 Out(3)은 temp(1)이 되며, 출력 값 Out(2)는 temp(0)이 되며, 출력 값 Out(1)은 In(1)이 되며, 출력 값 Out(0)에는 In(0)의 값이 할당된다(단계 604).
상기 판단 단계(603)에서 할당된 마스크가 001의 값을 갖는다면, 출력의 상위 세 비트 Out(7), Out(6), Out(5)에는 temp(5), temp(4), temp(3)의 값이 차례대로 들어가고, Out(4)와 Out(3)에는 temp(2)와 temp(1)의 값이 각각 반전되어 들어가며, Out(2)에는 temp(0)의 값이 들어가며, Out(1)에는 In(1)의 값이 반전되어 들어가며, 마지막으로 Out(0)에는 In(0)의 값이 반전되어 들어간다(단계 605).
상기 판단 단계(603)에서 할당된 마스크가 010의 값을 갖는다면, 출력의 상위 두 비트 Out(7), Out(6)에는 temp(5), temp(4)의 값이 차례대로 들어가고, Out(5)에는 temp(3)의 값이 반전되어 들어가며, Out(4)에는 temp(2)의 값이 들어가며, Out(3)와 Out(2)에는 temp(1)과 temp(0)의 값이 각각 반전되어 들어가며, Out(1)에는 In(1)의 값이 들어가며, 마지막으로 Out(0)에는 In(0)의 값이 반전되어 들어간다(단계 606).
상기 판단 단계(603)에서 할당된 마스크가 011의 값을 갖는다면, 출력의 상위 두 비트 Out(7), Out(6)에는 temp(5), temp(4)의 값이 차례대로 들어가고, Out(5)와 Out(4)에는 temp(3)과 temp(2)의 값이 반전되어 들어가며, Out(3)에는 temp(1)의 값이 들어가며, Out(2)에는 temp(1)이 반전되어 들어가며, Out(1)에는 In(1)의 값이 반전되어 들어가며, 마지막으로 Out(0)에는 In(0)의 값이 들어간다(단계 607).
상기 판단 단계(603)에서 할당된 마스크가 100의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(5)의 값이 들어가고, Out(6)에는 temp(4)가 반전되어 들어가며, Out(5)에는 temp(3)의 값이 들어가며, Out(4), Out(3)에는 temp(3)와 temp(1)의 값이 반전되어 들어가며, Out(2)에는 temp(0)의 값이 들어가며, Out(1)에는 In(1)의 값이 반전되어 들어가며, Out(0)에는 In(0)의 값이 들어간다(단계 608).
상기 판단 단계(603)에서 할당된 마스크가 101의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(5)의 값이 들어가고, Out(6)에는 temp(4)가 반전되어 들어가며, Out(5:2)의 4 비트에는 temp(3:0)의 4 비트가 각각 차례로 들어가며, Out(1)에는 In(1)의 값이 반전되어 들어가며, 마지막으로 Out(0)에는 In(0)의 값이 들어간다(단계 609).
상기 판단 단계(603)에서 할당된 마스크가 110의 값을 갖는다면, 출력의 최상위 비트, Out(7)에는 temp(5)의 값이 들어가고, Out(6)와 Out(5), Out(4)에는 temp(4)와 temp(3), temp(2)가 각각 반전되어 들어가며, Out(3)에는 temp(1)이 들어가며, Out(2)에는 temp(0)의 값이 반전되어 들어가며, Out(1)과 Out(0)에는 In(1)과 In(0)의 값이 반전되어 들어간다(단계 610).
상기 판단 단계(603)에서 할당된 마스크가 111의 값을 갖는다면, 출력의 최상위 비트, Out(7)에는 temp(5)의 값이 들어가고, Out(6)와 Out(5)에는 temp(4)와 temp(3)가 각각 반전되어 들어가며, Out(4)에는 temp(2)가 들어가며, Out(3), Out(2)에는 temp(1), temp(0)이 반전되어 들어가며, Out(1)과 Out(0)에는 In(1)과 In(0)의 값이 들어간다(단계 611).
제6 곱셈기(30-6)는 제4 다중화기(20-4)로부터 제공되는 8 비트 값에 16진수 값 {09}를 곱하여 제1,2 XOR 연산기(40-1,2)에 제공하는 블록으로서, 도 7은 8비트 값에 {09}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.
즉, 제6 곱셈기(30-6)는 제4 다중화기(20-4)로부터 8비트 값(7:0)이 제공되면(단계 700), 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된다(단계 701).
이후, 제6 곱셈기(30-6)는 temp의 최상위 비트인 temp(4)에 In(7)과 In(4)의 XOR 연산 결과 비트가 들어가고, temp(3)에는 In(6)과 In(3)의 XOR 연산 결과 비트가 들어가며, temp(2)에는 In(5)와 In(2)의 XOR 연산 결과 비트가 들어가며, temp(1)에는 In(4)와 In(1)의 XOR 연산 결과 비트가 들어가며, temp(0)에는 In(3)과 In(0)의 XOR 연산 결과 비트가 들어간다(단계 702).
다음으로, 제6 곱셈기(30-6)는 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단한다(단계 703).
상기 판단 단계(703)에서 할당된 마스크가 000의 값을 갖는다면, temp 값의 최상위 비트인 temp(4)가 출력 값의 최상위 비트 Out(7)이 되고, 다음 출력 값 Out(6)은 temp(3)가 되며, 출력 값 Out(5)는 temp(2)가 되며, 출력 값 Out(4)는 temp(1)이 되며, 출력 값 Out(3)은 temp(0)가 되며, 출력 값 Out(2)는 In(2)가 되며, 출력 값 Out(1)은 In(1)이 되며, 출력 값 Out(0)은 In(0)의 값이 할당된다(단계 704).
상기 판단 단계(703)에서 할당된 마스크가 001의 값을 갖는다면, 출력의 상위 세 비트 Out(7), Out(6), Out(5)에는 temp(4), temp(3), temp(2)의 값이 차례대로 들어가고, Out(4)와 Out(3)에는 temp(1)과 temp(0)의 값이 각각 반전되어 들어가며, Out(2)에는 In(2)의 값이 들어가며, Out(1)과 Out(0)에는 In(1)과 In(0)의 값이 반전되어 들어간다(단계 705).
상기 판단 단계(703)에서 할당된 마스크가 010의 값을 갖는다면, 출력의 상위 두 비트 Out(7), Out(6)에는 temp(4), temp(3)의 값이 차례대로 들어가고, Out(5)와 Out(4)에는 temp(2)와 temp(1)의 값이 각각 반전되어 들어가며, Out(3)에는 temp(0)의 값이 들어가며, Out(2)와 Out(1)에는 In(2)와 In(1)의 값이 각각 반전되어 들어가며, 마지막으로 Out(0)에는 In(0)의 값이 들어간다(단계 706).
상기 판단 단계(703)에서 할당된 마스크가 011의 값을 갖는다면, 출력의 상위 두 비트 Out(7), Out(6)에는 temp(4), temp(3)의 값이 차례대로 들어가고, Out(5)에는 temp(2)의 값이 반전되어 들어가며, Out(4)에는 temp(1)이 들어가며, Out(3)와 Out(2)에는 temp(0)과 In(2)의 값이 각각 반전되어 들어가며, Out(1)에는 In(1)이 들어가며, Out(0)에는 In(0)의 값이 반전되어 들어간다(단계 707).
상기 판단 단계(703)에서 할당된 마스크가 100의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6)와 Out(5)에는 temp(3)과 temp(2)가 각각 반전되어 들어가며, Out(4)에는 temp(1)이 들어가며, Out(3)과 Out(2)에는 temp(0)과 In(2)의 값이 각각 반전되어 들어가며, Out(1)과 Out(0)에는 In(1)과 In(0)의 값이 들어간다(단계 708).
상기 판단 단계(703)에서 할당된 마스크가 101의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(4)의 값이 들어가고, Out(6)과 Out(5), Out(4)에는 temp(3)와 temp(2), temp(1)의 값이 각각 반전되어 들어가며, Out(3)에는 temp(0)가 들어가며, Out(2)와 Out(1), Out(0)에는 In(2)와 In(1), In(0)의 값이 반전되어 들어간다(단계 709).
상기 판단 단계(703)에서 할당된 마스크가 110의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(4)의 값이 들어가고, Out(6)에는 temp(3)가 반전되어 들어가며, Out(5)에는 temp(2)가 들어가며, Out(4)와 Out(3)에는 temp(1)과 temp(0)의 반전된 값이 들어가며, Out(2)에는 In(2)가 들어가며, Out(1)에는 In(1)이 반전되어 들어가며, 마지막으로 Out(0)에는 In(0)가 들어간다(단계 710).
상기 판단 단계(703)에서 할당된 마스크가 111의 값을 갖는다면 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6)에는 temp(3)의 값이 반전되어 들어가며, Out(5:1)의 5 비트에는 temp(2:0)와 In(2), In(1)이 차례로 들어가며, 마지막으로 Out(0)에는 In(0)의 값이 반전되어 들어간다(단계 711).
제1,2,3,4,5,6 곱셈기(30-1,2,3,4,5,6)의 다항식 곱셈을 맞춘 후, 제1 XOR 연산기(40-1)는 제1,3,5,6 곱셈기(30-1,3,5,6) 각각의 다항식 곱셈 연산 결과인 8비트 값 4개를 각각 비트 단위로 XOR 연산을 수행한 8비트 출력을 제5 다중화기(20-5)에 내보낸다.
그리고, 제2 XOR 연산기(40-2)는 제2,4,5,6 곱셈기(30-2,4,5,6) 각각의 다항식 곱셈 연산 결과인 8비트 값 4개를 각각 비트 단위로 XOR 연산을 수행한 8비트 출력을 제5 다중화기(20-5)에 내보낸다.
제5 다중화기(20-5)는 제1,2 XOR 연산기(40-1,2) 각각으로부터 제공되는 8비트 출력 중 암호화 모드인지 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0)을 수행한다.
상기와 같이 설명한 본 발명은 AES 블록 암호의 라운드 연산을 하드웨어로 구현할 때, 많은 게이트 수를 필요로 하는 믹스 칼럼 변환의 게이트 수를 줄이고, 빠른 시간에 다항식 곱셈 수행이 가능하도록 함으로써, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈 기의 면적을 작게 차지할 뿐만 아니라 입력에서 출력에 이르기까지 데이터가 거쳐야 할 게이트 수를 최소화하여 다항식 곱셈 장치의 동작 가능 주파수를 높일 수 있다. 그리고, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈기를 소프트웨어로 구현하는 것보다 훨씬 빠르게 동작한다. 또한, AES 블록 암호용 믹스 카럼 변환을 위한 다항식 곱셈기를 AES 알고리즘의 암/복호화 장치에 적용하여 빠른 시간 내에 안전하게 데이터를 암호화 및 복호화 하는데 적용할 수 있다. 마지막으로, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈 장치가 AES 알고리즘에만 국한되지 않고 다른 다항식 곱셈이 필요한 장치에도 쉽게 적용할 수 있다는 효과가 있다.
도 1은 본 발명에 따른 블록 암호용 다항식 곱셈 장치에 대한 블록 구성도이고,
도 2는 본 발명에 따른 8비트 입력 데이터에 {02}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,
도 3은 본 발명에 따른 8비트 입력 데이터에 {03}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,
도 4는 본 발명에 따른 8비트 입력 데이터에 {0e}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,
도 5는 본 발명에 따른 8비트 입력 데이터에 {0b}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,
도 6은 본 발명에 따른 8비트 입력 데이터에 {0d}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,
도 7은 본 발명에 따른 8비트 입력 데이터에 {09}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이다.
<도면의 주요부분에 대한 부호의 설명>
10 : 저장부 20-1,2,3,4,5 : 제1,2,3,4,5 다중화기
30-1,2,3,4,5,6 : 제1,2,3,4,5,6 곱셈기
40-1,2 : 제1,2 XOR 연산기

Claims (18)

  1. 블록 암호용 다항식 곱셈장치에 있어서,
    입력 데이터 값에 대하여 한 바이트씩 연산을 수행한 후, 수행된 한 바이트 단위의 데이터 값을 클럭(clock)이 들어올 때마다 쉬프트시켜 제공하는 저장부와,
    상기 저장부로부터 제공되는 바이트 단위의 데이터 값이 암호화 모드인지, 아니면 복호화 모드인지를 결정하고, 상기 결정된 모드 각각에 맞게 상기 바이트 단위의 데이터 값을 제공하는 제1,2,3,4 다중화기와,
    상기 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값 {02}를 곱하여 제공하는 제1 곱셈기와,
    상기 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값 {0e}를 곱하여 제공하는 제2 곱셈기와,
    상기 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값 {03}을 곱하여 제공하는 제3 곱셈기와,
    상기 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값{0b}를 곱하여 제공하는 제4 곱셈기와,
    상기 제3다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값{0d}를 곱하여 제공하는 제5 곱셈기와,
    상기 제4다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수의 값{09}를 곱하여 제공하는 제6 곱셈기와,
    상기 제1,3 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값과, 제3,4 다중화기에 의해 결정된 암호화 모드에 따라 제공되는 바이트 단위의 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 출력하는 제1 XOR 연산기와,
    상기 제2,4,5,6 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 출력하는 제2 XOR 연산기와,
    상기 제1,2 XOR 연산기 각각으로부터 제공되는 8비트 출력 중 암호화 모드인지, 아니면 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0)을 수행하는 제5 다중화기
    를 포함하는 블록 암호용 다항식 곱셈장치.
  2. 제 1 항에 있어서,
    상기 저장부는, 상기 임의의 비트 입력 데이터 값 중 가장 최상위 8비트 값을 상기 제1 다중화기에 제공하고, 다음 상위 8비트 값을 상기 제2 다중화기에 제공하며, 다음 상위 8비트 값을 상기 제3 다중화기에 제공하며, 마지막 8비트 값을 상기 제4 다중화기에 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.
  3. 제 2 항에 있어서,
    상기 저장부는, 외부로부터 클럭이 제공될 때마다 저장된 값들은 8비트 씩 회전 쉬프트하며, 다음 값을 갖는 클럭이 제공될 때 상기 저장부에 저장된 값들은 8비트 씩 회전 쉬프트를 하면서 상기 과정을 반복함에 따라 4클럭 동안 연산을 통해 8비트씩 4개의 믹스 칼럼 변환 결과를 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.
  4. 제 1 항에 있어서,
    상기 제1 다중화기는, 저장부로부터 제공된 가장 상위 8비트 값(32:24)을 암호화 모드일 경우 상기 제1 곱셈기로 제공하고, 복호화 모드일 경우 상기 제2 곱셈기로 제공하며,
    상기 제2 다중화기는, 저장부로부터 제공된 다음 상위 8비트 값(23:16)을 암호화 모드일 경우 상기 제3 곱셈기로 제공하고, 복호화 모드일 경우 상기 제4 곱셈기로 제공하며,
    상기 제3 다중화기는, 저장부로부터 제공된 다음 상위 8비트 값(15:8)을 암호화 모드일 경우 상기 저장부로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기로 제공하며, 복호화 모드일 경우 상기 상위 8비트 값(15:8)을 상기 제5 곱셈기로 제공하며,
    상기 제4 다중화기는, 저장부로부터 제공된 마지막 8비트 값(7:0)을 암호화 모드일 경우 상기 저장부로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기로 제공하며, 복호화 모드일 경우 마지막 8비트 값을 상기 제6 곱셈기로 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.
  5. 제 1 항에 있어서,
    상기 제1,2,3,4,5,6 곱셈기는, 상기 최상위 입력 비트, 혹은 상위 입력 3비트를 마스크의 값으로 설정하여 다항식 곱셈을 수행하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.
  6. 제 5 항에 있어서,
    상기 설정된 마스크의 값에 따라 상기 제1,2,3,4,5,6 곱셈기의 출력 값을 결정하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.
  7. 제 6 항에 있어서,
    상기 설정된 마스크의 값에 따라 입력 값과 다수개의 인버터만을 이용하여 출력 값을 계산하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.
  8. 제 7 항에 있어서,
    상기 입력 값을 이용하여 temp 값을 설정하며, 상기 설정된 temp 값을 이용하여 상기 제1,2,3,4,5,6 곱셈기의 연산 속도를 증가하도록 하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.
  9. 제1,2,3,4,5 다중화기, 제1,2,3,4,5,6 곱셈기, 제1,2 XOR 연산기, 저장부를 구비하는 시스템에서의 블록 암호화 다항식 곱셈 방법에 있어서,
    상기 저장부에서 입력 데이터 값에 대하여 한 바이트씩 연산을 수행한 후, 수행된 한 바이트 단위의 데이터 값을 클럭(clock)이 들어올 때마다 쉬프트시켜 제1,2,3,4 다중화기 각각으로 제공하는 단계와,
    상기 제1,2,3,4 다중화기에서 상기 저장부로부터 제공되는 바이트 단위의 데이터 값이 암호화 모드인지, 아니면 복호화 모드인지를 결정하고, 상기 결정된 모드 각각에 맞게 상기 바이트 단위의 데이터 값을 상기 제1,2,3,4,5,6 곱셈기와 제1,2 XOR 연산기에 선택적으로 제공하는 단계와,
    상기 제1 곱셈기에서 상기 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값 {02}를 곱하여 제1 XOR 연산기에 제공하는 단계와,
    상기 제2 곱셈기에서 상기 제1다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값 {0e}를 곱하여 제2 XOR 연산기에 제공하는 단계와,
    상기 제3 곱셈기에서 상기 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 최상위 비트 값(In(7))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값 {03}을 곱하여 제1 XOR 연산기에 제공하는 단계와,
    상기 제4 곱셈기에서 상기 제2다중화기에 의해 결정된 각각의 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값{0b}를 곱하여 제2 XOR 연산기에 제공하는 단계와,
    상기 제5 곱셈기에서 상기 제3다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수 값{0d}를 곱하여 제2 XOR 연산기에 제공하는 단계와,
    상기 제6 곱셈기에서 상기 제4다중화기에 의해 결정된 복호화 모드에 따라 제공되는 바이트 단위의 데이터 값 중 상위 3비트 값(In(7:5))이 마스크의 값으로 할당되며, 상기 할당된 마스크의 값에 따라 16진수의 값{09}를 곱하여 제2 XOR 연산기에 제공하는 단계와,
    상기 제1 XOR 연산기에서 상기 제1,3 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값과, 상기 제3,4 다중화기에 의해 결정된 암호화 모드에 따라 제공되는 바이트 단위의 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 제5 다중화기에 출력하는 단계와,
    상기 제2 XOR 연산기에서 제2,4,5,6 곱셈기 각각의 다항식 곱셈 연산 결과인 데이터 값을 각각 비트 단위로 XOR 연산을 수행하여 제5 다중화기에 출력하는 단계와,
    상기 제5 다중화기에서 상기 제1,2 XOR 연산기 각각으로부터 제공되는 8비트 출력 중 암호화 모드인지, 아니면 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0)을 수행하는 단계
    를 포함하는 블록 암호용 다항식 곱셈방법.
  10. 제 9 항에 있어서,
    상기 저장부는, 상기 임의의 비트 입력 데이터 값 중 가장 최상위 8비트 값을 상기 제1 다중화기에 제공하고, 다음 상위 8비트 값을 상기 제2 다중화기에 제공하며, 다음 상위 8비트 값을 상기 제3 다중화기에 제공하며, 마지막 8비트 값을 상기 제4 다중화기에 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.
  11. 제 10 항에 있어서,
    상기 저장부는, 외부로부터 클럭이 제공될 때마다 저장된 값들은 8비트 씩 회전 쉬프트하며, 다음 값을 갖는 클럭이 제공될 때 상기 저장부에 저장된 값들은 8비트 씩 회전 쉬프트를 하면서 상기 과정을 반복함에 따라 4클럭 동안 연산을 통해 8비트씩 4개의 믹스 칼럼 변환 결과를 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.
  12. 제 9 항에 있어서,
    상기 제1 다중화기는 저장부로부터 제공된 가장 상위 8비트 값(32:24)을 암호화 모드일 경우 상기 제1 곱셈기로 제공하고, 복호화 모드일 경우 상기 제2 곱셈기로 제공하며,
    상기 제2 다중화기는 저장부로부터 제공된 다음 상위 8비트 값(23:16)을 암호화 모드일 경우 상기 제3 곱셈기로 제공하고, 복호화 모드일 경우 상기 제4 곱셈기로 제공하며,
    상기 제3 다중화기는 저장부로부터 제공된 다음 상위 8비트 값(15:8)을 암호화 모드일 경우 상기 저장부로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기로 제공하며, 복호화 모드일 경우 상기 상위 8비트 값(15:8)을 상기 제5 곱셈기로 제공하며,
    상기 제4 다중화기는 저장부로부터 제공된 마지막 8비트 값(7:0)을 암호화 모드일 경우 상기 저장부로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기로 제공하며, 복호화 모드일 경우 마지막 8비트 값을 상기 제6 곱셈기로 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.
  13. 제 9 항에 있어서,
    상기 제1,2,3,4,5,6 곱셈기는, 상기 최상위 입력 비트 또는 상위 입력 3비트를 마스크의 값으로 설정하여 다항식 곱셈을 수행하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.
  14. 제 13 항에 있어서,
    상기 마스크의 값에 따라 상기 제1,2,3,4,5,6 곱셈기의 출력 값을 결정하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.
  15. 제 14 항에 있어서,
    상기 마스크의 값에 따라 입력 값과 다수개의 인버터만을 이용하여 출력 값을 계산하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.
  16. 제 15 항에 있어서,
    상기 입력 값을 이용하여 temp 값을 설정하며, 상기 설정된 temp 값에 따라 상기 제1,2,3,4,5,6 곱셈기의 연산 속도를 증가하도록 하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.
  17. 삭제
  18. 삭제
KR10-2002-0075193A 2002-11-29 2002-11-29 블록 암호용 다항식 곱셈장치 및 방법 KR100498736B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0075193A KR100498736B1 (ko) 2002-11-29 2002-11-29 블록 암호용 다항식 곱셈장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0075193A KR100498736B1 (ko) 2002-11-29 2002-11-29 블록 암호용 다항식 곱셈장치 및 방법

Publications (2)

Publication Number Publication Date
KR20040047105A KR20040047105A (ko) 2004-06-05
KR100498736B1 true KR100498736B1 (ko) 2005-07-01

Family

ID=37342550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0075193A KR100498736B1 (ko) 2002-11-29 2002-11-29 블록 암호용 다항식 곱셈장치 및 방법

Country Status (1)

Country Link
KR (1) KR100498736B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100788902B1 (ko) * 2006-12-06 2007-12-27 한국전자통신연구원 믹스컬럼블록 장치 및 이를 이용한 곱셈연산방법

Also Published As

Publication number Publication date
KR20040047105A (ko) 2004-06-05

Similar Documents

Publication Publication Date Title
US7079651B2 (en) Cryptographic method and apparatus for non-linearly merging a data block and a key
KR100610367B1 (ko) 정보 누출 공격을 방지하기 위한 갈로아 필드 상의 곱셈방법 및 장치, 역변환 장치 그리고 aes 바이트 치환연산장치
US5365588A (en) High speed encryption system and method
JP5242642B2 (ja) データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体
US8411853B2 (en) Alternate galois field advanced encryption standard round
KR20050053379A (ko) AES Rijndael(라인달) 알고리즘을 빠르게구현하는 암호/복호 장치 및 그 방법
KR100377176B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR100377172B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
JP2950485B2 (ja) ストリーム暗号処理装置
JP2005513541A (ja) Aesアルゴリズム用のプログラマブルデータ暗号化エンジン
KR100498736B1 (ko) 블록 암호용 다항식 곱셈장치 및 방법
JP3547474B2 (ja) 暗号演算回路
US10341089B2 (en) High-speed AES with transformed keys
KR20020087331A (ko) 부분 라운드간 파이프라인 기법을 이용한 AES Rijndael암호 및 복호 회로
KR100350207B1 (ko) 디지털 데이터의 엘-비트 입력 블록들을 엘-비트 출력비트들로 암호 변환하는 방법
JPH0916379A (ja) 通信方法とその装置
KR20020007113A (ko) 라운드 키의 온라인 사전 계산 방식을 사용한 seed암호 및 복호 회로
US20040071287A1 (en) Encryption circuit arrangement and method therefor
JPH1152850A (ja) 暗号変換方法および装置
JPH0629969A (ja) 非線形回路を用いた乱数発生回路
US7464130B2 (en) Logic circuit and method for performing AES MixColumn transform
KR100316025B1 (ko) 데이터 암호 표준 알고리즘을 이용한 암호 및 복호 장치
KR100377173B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
JPS5843743B2 (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: 20110609

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee