KR20040047105A - Apparatus and method for polynomial multiply of block cipher - Google Patents

Apparatus and method for polynomial multiply of block cipher Download PDF

Info

Publication number
KR20040047105A
KR20040047105A KR1020020075193A KR20020075193A KR20040047105A KR 20040047105 A KR20040047105 A KR 20040047105A KR 1020020075193 A KR1020020075193 A KR 1020020075193A KR 20020075193 A KR20020075193 A KR 20020075193A KR 20040047105 A KR20040047105 A KR 20040047105A
Authority
KR
South Korea
Prior art keywords
temp
value
bit
inverted
output
Prior art date
Application number
KR1020020075193A
Other languages
Korean (ko)
Other versions
KR100498736B1 (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 KR10-2002-0075193A priority Critical patent/KR100498736B1/en
Publication of KR20040047105A publication Critical patent/KR20040047105A/en
Application granted granted Critical
Publication of KR100498736B1 publication Critical patent/KR100498736B1/en

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

PURPOSE: A polynomial multiplication device for block encryption and a multiplying method thereof are provided to perform a polynomial multiplication operation within a short period time by reducing the number of gates in a mix column conversion process. CONSTITUTION: A polynomial multiplication device for block encryption includes a storage, a first to a fourth multiplexer, a first to a sixth multiplier, a first and a second XOR operator, and a fifth multiplexer. The storage(10) stores arbitrary bit input data and performs a shift operation by one byte each clock. The first to the fourth multiplexers(20-1 to 20-4) are used for providing values of 8bits according to an encryption mode and a decryption mode. The first to the sixth multipliers(30-1 to 30-6) are used for multiplying hexadecimal values by the values of 8bits. The first and the second XOR operators(40-1,40-2) are used for performing the XOR operation for the values of 8bits in bit units and providing the outputs of 8bits. The fifth multiplexer(20-5) is used for deciding a result of a mix column conversion process according to the encryption mode and the decryption mode.

Description

블록 암호용 다항식 곱셈장치 및 방법{APPARATUS AND METHOD FOR POLYNOMIAL MULTIPLY OF BLOCK CIPHER}Polynomial multiplier and method for block cryptography {APPARATUS AND METHOD FOR POLYNOMIAL MULTIPLY OF BLOCK CIPHER}

본 발명은 블록 암호용 다항식 곱셈장치 및 방법에 관한 것으로, 특히 믹스 칼럼(Mix Column) 이라 불리는 라운드 함수의 변환에 있어서, 에이이에스(Advanced Encryption Standard : AES) 블록 암호의 라운드 연산을 하드웨어로 구현할 때, 많은 게이트 수를 필요로 하는 믹스 칼럼 변환의 게이트 수를 줄일 수 있도록 하는 장치 및 방법에 관한 것이다.The present invention relates to a polynomial multiplier and method for block ciphers, and more particularly, to hardware-based round operations of Advanced Encryption Standard (AES) block ciphers in the conversion of round functions called Mix Columns. The present invention relates to an apparatus and a method for reducing the number of gates of a mixed column conversion requiring a large number of gates.

통상적으로, AES 알고리즘은 데이터 및 키 처리의 기본 단위로서 바이트(Byte : 이하, 8비트라 칭함)를 사용하고, 이는 0 또는 1의 값을 갖는 이진수 8개의 배열로 볼 수 있다.Typically, the AES algorithm uses bytes (hereinafter, referred to as 8 bits) as the basic unit of data and key processing, which can be viewed as an array of eight binary digits having a value of zero or one.

즉, 입출력 데이터와 키는 8비트의 배열로 처리되는데, 이는 128 비트 값을 8비트 단위로 그룹 지은 것이라 할 수 있다. 또한, 8비트들을 차례대로 4행 4열의 배열로 나타내고 이 배열을 기준으로 라운드의 각 변환을 수행한다.In other words, I / O data and keys are treated as an 8-bit array, which is a grouping of 128-bit values into 8-bit units. In addition, the 8 bits are represented in an array of 4 rows and 4 columns in order, and each conversion of the round is performed based on the array.

그리고, AES의 라운드 함수는 Substitution, Shift_Row, 믹스 칼럼(Mix Column), Add_Round_Key의 네 가지 변환으로 구성된다. 이들 변환 중 믹스 칼럼 변환은 배열의 열 단위 연산으로써, 암호화 연산의 경우 각 열에 16진수 값, 즉{02}, {03}, {01}, {01}을 곱하고, 복호화 연산의 경우 {0e}, {0b}, {0d}, {09}를 곱한 결과 값들을 이용하여 연산하는 변환이다.The round function of AES consists of four transformations: Substitution, Shift_Row, Mix Column, and Add_Round_Key. Of these transformations, the mix column transformation is a column-wise operation of the array, in the case of cryptographic operations, each column is multiplied by a hexadecimal value: {02}, {03}, {01}, {01}, and {0e} Calculates the result of multiplying {0b}, {0d}, and {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)의 결과가 된다.In addition, the AES algorithm is modular x 4 +1, which is used to apply four degree modular multiplication operations. Then, the basic operation of a polynomial multiplication on the AES algorithm follows a Xtime () function, a given 8-bit data a and b Xtime () function expression (1), that is b = xtime (a) computing method, a 7 The result of xtime (a) is a result of shifting a one bit to the left, and then XORing the hexadecimal 1b if a value of 1, and shifting a one bit to the left if a 7 is 0.

이때 a와 b는 유한체(finite field) GF(28)의 원소로써 8비트 다항식으로 나타난다.Where a and b are elements of the finite field GF (2 8 ) and are represented by 8-bit polynomials.

a = a7x7+ a6x6+ a5x5+ a4x4+ a3x3+ a2x2+ a1x + a0 a = a 7 x 7 + a 6 x 6 + a 5 x 5 + a 4 x 4 + a 3 x 3 + a 2 x 2 + a 1 x + a 0

상술한 바와 같이, 수학식 1을 이용하여 믹스 칼럼 연산에 필요한 이진 다항식 곱셈기를 하드웨어로 구현하여 라운드 연산에 적용함으로써 다항식 곱셈을 할 수 있으며, 이러한 라운드 연산은 입력 키 길이에 따라 10회, 12회, 14회 반복하여 연산하는 기능을 갖는다.As described above, polynomial multiplication can be performed by implementing a binary polynomial multiplier for a mixed column operation in hardware using Equation 1 and applying it to a round operation, which is performed 10 times or 12 times according to the input key length. It has the function to repeat operation 14 times.

이와 같이, 블록 암호용 다항식 곱셈기에 대한 기술로는 1992. 05. 29일 1992-9319로 출원된 "갈로아 필드 곱셈기"와, 1993. 11. 20일 1993-24860으로 출원된 "갈로아 필드 곱셈 방법 및 회로" 등에 개시되어 있다.As such, a description of a polynomial multiplier for block ciphers includes "Galoa Field Multiplier," filed 1992-9319, May 29, 1992, and "Galoa Field Multiplication, filed, 1993-24860, November 20, 1993. Methods and circuits ", and the like.

상술한 바와 같이, 개시된 선행기술을 상세하게 설명하면, 갈로아 필드 곱셈기는 갈로이스 필드(Galois Field)에서 임의의 두 원소를 곱하는 회로에 관한 것으로, GF(2)의 원소를 GF(2) 상의 다항식으로 표시하며, 앤드게이트를 규칙적으로 배열하고, 원시원 α와 α2, α3,...αm-1을 곱하는 회로를 XOR 게이트로 구현하여 이를 AND 게이트 배열에 연결함으로써 최종 결과를 GF(2)상의 다항식으로 출력하여 설계가 간단해지고, 신호의 흐름이 명확해 지는 기술이다.As described above, the disclosed prior art will be described in detail, and a Galoa field multiplier relates to a circuit for multiplying any two elements in a Galois field, wherein the elements of GF (2) are transformed onto GF (2). Display the polynomial, arrange the end gates regularly, implement a circuit that multiplies the primitive sources α with α 2 , α 3 , ... α m-1 as XOR gates, and connect them to the AND gate array to GF the final result. It is a technology that the design is simplified and the signal flow becomes clear by outputting by the polynomial in (2).

다음으로, 갈로아 필드 곱셈 방법 및 회로는 덧셈, 뺄셈, 곱셈, 나눗셈의 사칙연산이 가능하고 그 사칙연산에 대해 닫혀있는 집합 중 원소의 수가 유한한 집합 즉, 갈로아 필드에 대한 곱셈기를 구현하는 기술에 관한 것으로, 갈로아 필드상의 두 원소인 피승수와 승수의 각 항을 서로 곱한 후 승수의 최고차항과 곱한 결과를 승수의 최고차항 -1항과 곱한 결과와 더할 때, 승수의 최고차항과 곱한 결과에서 피승수의 최고차항과 곱한 값은 최저차 항으로, 피승수의 최고차항 -1항은 최고차항으로, 최고차항 -2항은 최고차항 -1항으로, 최고차항 -3항은 최고차항 -2항으로 시프트-로테이트시켜 승수의 최고차항 -1항과 곱한 결과와 더하고, 이 결과에 대하여 해당 갈로아 필드의 생성 다항식에서 최고차항과 최저차항을 제거하고 남은 항들에 승수의 최고차항과 피승수의 최고차항을 곱한 결과를 더하는 과정을 반복수행 하도록 하는 기술이다.Next, Galoa field multiplication methods and circuits are capable of adding, subtracting, multiplying, and dividing, and implement a multiplier for a Galoa field with a finite set of elements in the set that is closed for the arithmetic. Technology, multiplying two terms on the Galoa field, each of the multiplicands by the multiplier, then multiplying by the highest order term of the multiplier and the result of multiplying by the highest term of the multiplier term -1, and multiplying by the highest order term of the multiplier In the result, the product of the highest order term of the multiplicand is the lowest order term, the highest order term of the multiplicand -1 term is the highest term term, the highest term term -2 term is the highest term term -1 term, and the highest term term -3 term is the highest term term -2 Shift-rotate the term and multiply it by the highest order term -1 in the multiplier, and remove the highest and lowest terms from the generated polynomial of the corresponding Galoa field and add the highest order term of the multiplier to the remaining terms. It is a technique to repeat the process of adding the result of multiplying the highest order term of the multiplicand.

이와 같이, 선행 특허에 개시된 기술을 살펴보았을 때, 본원 발명에서의 문제점인 입력 키 길이에 따라 10회, 12회, 14회 반복하여 라운드 연산하기 때문에 다항식 곱셈기를 하드웨어로 구현한 후, 매 라운드마다 반복해서 활용해야만 빠른 시간에 다항식 곱셈을 수행할 수 있다 라는 점은 선행 기술에서도 여전히 갖고 있다.As described above, when looking at the technology disclosed in the prior patent, since the round operation is repeated 10, 12, and 14 times according to the input key length, which is a problem in the present invention, the polynomial multiplier is implemented in hardware, and then every round. The prior art still holds that polynomial multiplication can be performed quickly in a timely manner.

따라서, 본 발명은 상술한 단점을 해결하기 위해 안출된 것으로서, 그 목적은 AES 블록 암호의 라운드 연산을 하드웨어로 구현할 때, 많은 게이트 수를 필요로 하는 믹스 칼럼 변환의 게이트 수를 줄여 빠른 시간에 다항식 곱셈을 수행할 수 있도록 하는 블록 암호용 다항식 곱셈장치 및 방법을 제공함에 있다.Accordingly, the present invention has been made to solve the above-mentioned shortcomings, and an object thereof is to reduce the number of gates of a mixed column transformation that requires a large number of gates when implementing a round operation of an AES block cipher in hardware. The present invention provides a polynomial multiplication apparatus and method for block cipher that enables multiplication.

상술한 목적을 달성하기 위한 본 발명에서 블록 암호용 다항식 곱셈장치는 임의의 비트 입력 데이터를 저장하며, 클럭(clock)이 제공될 때마다 한 바이트(이하, 8비트라 칭함)씩 쉬프트 연산을 수행하면서 8비트 값을 제공하는 저장부; 저장부로부터 제공되는 8비트 값을 암호화 모드인지 복호화 모드인지에 따라 각각의 곱셈기로 8비트 값을 제공하는 제1,2,3,4 다중화기; 제1,2,3,4 다중화기로부터 제공되는 각각의 8비트 값에 16진수 값 {02},{0e},{03},{0b},{0d},{09}를 각각 다항식 곱셈을 수행하여 제공하는 제1,2,3,4,5,6 곱셈기; 제1,2,3,4,5,6 곱셈기의 다항식 곱셈을 맞춘 후, 제1,2,3,4,5,6 곱셈기 각각의 다항식 곱셈 연산 결과인 8비트 값 4개를 각각 비트 단위로 XOR 연산을 수행한 8비트 출력을 제공하는 제1,2 XOR 연산기; 제1,2 XOR 연산기 각각으로부터 제공되는 8 비트 출력 중 암호화 모드인지 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0))을수행하는 제5 다중화기를 포함하는 것을 특징으로 한다.In the present invention for achieving the above object, the block cipher polynomial multiplier stores arbitrary bit input data, and performs a shift operation by one byte (hereinafter referred to as 8 bits) whenever a clock is provided. A storage unit for providing an 8-bit value A first, second, third, and fourth multiplexers for providing an 8-bit value to each multiplier according to whether the 8-bit value provided from the storage is an encryption mode or a decryption mode; Polynomial multiplication of hexadecimal values {02}, {0e}, {03}, {0b}, {0d}, {09} to each 8-bit value provided by the first, second, third, and fourth multiplexers Performing, providing first, second, third, fourth, fifth, and sixth multipliers; After multiplying the polynomials of the first, second, third, fourth, fifth, and sixth multipliers, each of the eight 8-bit values, which are the result of the polynomial multiplication operation of each of the first, second, third, fourth, fifth, and sixth multipliers, is bit-wise. First and second XOR operators for providing an 8-bit output that has performed an XOR operation; Among the 8-bit output provided from each of the first and second XOR operators, including a fifth multiplexer for performing the output (Out (7: 0)) while determining the result value of the mix column transformation according to the encryption mode or the decryption mode. It features.

또한, 상술한 목적을 달성하기 위한 본 발명에서 블록 암호용 다항식 곱셈방법은 저장부에서 임의의 비트 입력 데이터를 저장하고, 클럭(clock)이 제공될 때마다 한 바이트(이하, 8비트라 칭함)씩 쉬프트 연산을 수행하면서 8비트 값을 제1,2,3,4 다중화기 각각에 제공하는 단계; 1,2,3,4 다중화기에서 저장부로부터 제공되는 8비트 값을 암호화 모드인지 복호화 모드인지에 따라 제1,2,3,4,5,6 곱셈기 각각으로 8비트 값을 제공하는 단계; 제1,2,3,4,5,6 곱셈기에서 제1,2,3,4 다중화기로부터 제공되는 각각의 8비트 값에 16진수 값 {02},{0e},{03},{0b},{0d},{09}를 각각 다항식 곱셈을 수행하여 제1,2 XOR 연산기로 제공하는 단계; 제1,2 XOR 연산기에서 제1,2,3,4,5,6 곱셈기 각각에 의해 계산된 다항식 곱셈 연산 결과인 8비트 값 4개를 각각 비트 단위로 XOR 연산을 수행한 8비트 출력을 제5 다중화기에 제공하는 단계; 제5 다중화기에서 제1,2 XOR 연산기 각각으로부터 제공되는 8 비트 출력 중 암호화 모드인지 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0))을 수행하는 단계를 포함하는 것을 특징으로 한다.Further, in the present invention for achieving the above object, the block cipher polynomial multiplication method stores arbitrary bit input data in a storage unit, and one byte (hereinafter referred to as 8 bits) whenever a clock is provided. Providing an 8-bit value to each of the first, second, third, and fourth multiplexers while performing a shift operation each time; Providing an 8-bit value to each of the first, second, third, fourth, fifth, and sixth multipliers according to whether the 8-bit value provided from the storage unit is an encryption mode or a decryption mode in the 1,2,3,4 multiplexer; Hexadecimal values {02}, {0e}, {03}, {0b for each 8-bit value provided by the first, 2,3,4 multiplexer in the first, 2,3,4,5,6 multipliers }, {0d}, and {09} to each of the first and second XOR operators by performing polynomial multiplication; In the first and second XOR operators, the eight-bit output obtained by performing the XOR operation in bit units on four 8-bit values, which are the result of the polynomial multiplication operation calculated by each of the first, second, third, fourth, fifth, and sixth multipliers, is output. Providing to the multiplexer; Performing an output (Out (7: 0)) while determining a result value of the mix column transformation according to whether the encryption mode or the decryption mode among the 8-bit outputs provided from each of the first and second XOR operators is performed in the fifth multiplexer. It is characterized by including.

도 1은 본 발명에 따른 블록 암호용 다항식 곱셈 장치에 대한 블록 구성도이고,1 is a block diagram of a block cipher polynomial multiplication apparatus according to the present invention,

도 2는 본 발명에 따른 8비트 입력 데이터에 {02}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,2 is a diagram illustrating a polynomial multiplication method of multiplying 8-bit input data by {02} according to the present invention.

도 3은 본 발명에 따른 8비트 입력 데이터에 {03}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,3 is a diagram illustrating a polynomial multiplication method of multiplying {03} by 8-bit input data according to the present invention.

도 4는 본 발명에 따른 8비트 입력 데이터에 {0e}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,4 is a diagram illustrating a polynomial multiplication method of multiplying {0e} by 8-bit input data according to the present invention.

도 5는 본 발명에 따른 8비트 입력 데이터에 {0b}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,5 is a diagram illustrating a polynomial multiplication method of multiplying {0b} by 8-bit input data according to the present invention.

도 6은 본 발명에 따른 8비트 입력 데이터에 {0d}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이며,6 is a diagram illustrating a polynomial multiplication method of multiplying 8-bit input data by {0d} according to the present invention.

도 7은 본 발명에 따른 8비트 입력 데이터에 {09}를 곱하는 다항식 곱셈 방법에 대하여 설명한 도면이다.7 is a diagram illustrating a polynomial multiplication method of multiplying {09} by 8-bit input data according to the present invention.

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

10 : 저장부 20-1,2,3,4,5 : 제1,2,3,4,5 다중화기10: storage unit 20-1,2,3,4,5: first, 2,3,4,5 multiplexer

30-1,2,3,4,5,6 : 제1,2,3,4,5,6 곱셈기30-1,2,3,4,5,6: 1st, 2,3,4,5,6 multipliers

40-1,2 : 제1,2 XOR 연산기40-1,2: 1,2 XOR operator

이하, 첨부된 도면을 참조하여 본 발명에 따른 실시 예를 상세하게 설명하기로 한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 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)를 포함한다.1 is a block diagram of a polynomial multiplication apparatus for a block cipher according to an embodiment of the present invention. The storage unit 10 and the first, second, third, fourth, and fifth multiplexers 20-1, 2, 3, 4, 5) and first, second, third, fourth, fifth, and sixth multipliers 30-1,2,3,4,5,6, and first and second XOR operators 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)에 제공한다.The storage unit 10 stores 32-bit input data and performs a shift operation by one byte (byte: 8 bits) every time a clock is input. Provide the highest 8-bit value to the first multiplexer 20-1, then provide the next higher 8-bit value to the second multiplexer 20-2, and then supply the next higher 8-bit value to the third Provided to the multiplexer 20-3, and provides the last 8-bit value to the fourth multiplexer 20-4.

제1,2,3,4 다중화기(20-1,2,3,4)는 암호화 모드인지 복호화 모드인지에 따라 각각 곱셈기로의 입력 값을 제어하는 블록으로서, 제1 다중화기(20-1)는 암호화 모드인지, 아니면 복호화 모드인지에 따라 저장부(10)로부터 제공된 가장 상위 8비트 값(32:24)을 어떤 곱셈기의 입력으로 보낼지를 결정하는데, 암호화 모드일 경우 제1 곱셈기(30-1)로 제공하고, 복호화 모드일 경우 제2 곱셈기(30-2)로 제공한다.The first, second, third, and fourth multiplexers 20-1, 2, 3, and 4 are blocks for controlling input values to the multipliers according to whether they are in an encryption mode or a decryption mode, respectively. ) Determines which multiplier inputs the highest 8-bit value (32:24) provided from the storage unit 10 according to the encryption mode or the decryption mode. 1) and, in the decoding mode, the second multiplier 30-2.

제2 다중화기(20-2)는 암호화 모드인지, 아니면 복호화 모드인지에 따라 저장부(10)로부터 제공된 다음 상위 8비트 값(23:16)을 어떤 곱셈기의 입력으로 보낼지를 결정하는데, 암호화 모드일 경우 제3 곱셈기(30-3)로 제공하고, 복호화 모드일 경우 제4 곱셈기(30-4)로 제공한다.The second multiplexer 20-2 determines which multiplier's input the next higher 8-bit value (23:16) provided from the storage unit 10 is sent to according to the encryption mode or the decryption mode. In this case, the first multiplier 30-3 is provided, and in the decoding mode, the third multiplier 30-4 is provided.

제3 다중화기(20-3)는 암호화 모드인지, 아니면 복호화 모드인지에 따라 저장부(10)로부터 제공된 다음 상위 8비트 값(15:8)을 어떤 곱셈기의 입력으로 보낼지를 결정하는데, 암호화 모드일 경우 저장부(10)로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기(40-1)로 제공하며, 복호화 모드일 경우 세 번째 상위 8비트 값을 제5 곱셈기(30-5)로 제공한다.The third multiplexer 20-3 determines which multiplier inputs the next higher 8-bit value (15: 8) provided from the storage unit 10 according to the encryption mode or the decryption mode. In this case, the 8-bit value provided from the storage unit 10 becomes “00000000” and is directly provided to the first XOR operator 40-1, and in the decoding mode, the third upper 8-bit value is supplied to the fifth multiplier 30-5. To provide.

제4 다중화기(20-4)는 암호화 모드인지, 아니면 복호화 모드인지에 따라 저장부(10)로부터 제공된 마지막 8비트 값(7:0)을 어떤 곱셈기의 입력으로 보낼지를 결정하는데, 암호화 모드일 경우 저장부(10)로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기(40-1)로 제공하며, 복호화 모드일 경우 마지막 8비트 값을 제6 곱셈기(30-6)로 제공한다.The fourth multiplexer 20-4 determines which multiplier inputs the last 8-bit value (7: 0) provided from the storage unit 10 according to the encryption mode or the decryption mode. In this case, the 8-bit value provided from the storage unit 10 becomes "00000000" and is directly provided to the first XOR operator 40-1. In the decoding mode, the last 8-bit value is provided to the sixth multiplier 30-6. do.

여기서, 저장부(10)에 "1"의 값을 갖는 클럭이 제공되면 저장부(10)의 값들은 8비트 씩 왼쪽으로 회전 쉬프트하고, 그 다음 "1"의 값을 갖는 클럭이 다시 제공되면 저장부(10)의 값들은 8비트 씩 왼쪽으로 회전 쉬프트를 하면서 동일한 과정을 반복함에 따라 4클럭 동안 상술한 연산을 통해 8비트씩 4개의 믹스 칼럼 변환 결과가 나오고 이들을 상위 8비트로부터 차례대로 배열하여 32비트의 변환 결과를 얻을 수 있다. 즉, 믹스 칼럼 변환기 4개를 동시에 사용함으로써 128 비트의 믹스 칼럼 변환 결과를 얻을 수도 있다.Here, when the clock having a value of "1" is provided to the storage unit 10, the values of the storage unit 10 are shifted to the left by 8 bits, and then, when the clock having a value of "1" is provided again. The values of the storage unit 10 are shifted to the left by 8 bits, and the same process is repeated. As a result, four mixed column transformation results are output by 8 bits through the above-described operation for 4 clocks, and these are arranged in order from the upper 8 bits. 32-bit conversion results can be obtained. In other words, by using four mix column converters simultaneously, a 128-bit mix column conversion result can be obtained.

다음으로, 제1 곱셈기(30-1)는 제1 다중화기(20-1)로부터 제공되는 8 비트 값에 16진수 값 {02}를 곱하여 제1 XOR 연산기(40-1)에 제공하는 블록으로서, 도 2는 8비트 값에 {02}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.Next, the first multiplier 30-1 is a block for multiplying the 8-bit value provided from the first multiplexer 20-1 by the hexadecimal value {02} and providing it to the first XOR operator 40-1. 2 is a flowchart of a polynomial multiplier that multiplies an 8-bit value by {02}.

즉, 제1 곱셈기(30-1)는 제1 다중화기(20-1)로부터 8비트 값(32:24에 대응하는 7:0)이 제공되면(단계 200), 제공된 입력 값 중 최상위 비트 값(In(7))이 마스크(mask)의 값으로 할당되며(단계 201), 할당된 마스크의 값이 "0"인지, 아니면, "1"인지를 판단한다(단계 202).That is, if the first multiplier 30-1 is provided with an 8-bit value (7: 0 corresponding to 32:24) from the first multiplexer 20-1 (step 200), the first multiplier 30-1 receives the most significant bit value among the provided input values. (In (7)) is assigned a value of a mask (step 201), and it is determined whether the value of the assigned mask is "0" or "1" (step 202).

상기 판단 단계(202)에서 마스크의 값이 "0"이면, 입력 값의 하위 7비트값(In(6:0))이 출력 값의 상위 7비트 값(out(7:1))이 되고, 출력 값의 최하위 비트 값(out(0))은 "0"의 값을 갖는다(단계 203).If the value of the mask in the determination step 202 is "0", the lower 7-bit value (In (6: 0)) of the input value becomes the upper 7-bit value (out (7: 1)) of the output value, The least significant bit value out (0) of the output value has a value of "0" (step 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).On the other hand, if the mask value is "1" in the determination step 202, the value of In (6: 4) is included in the most significant bit value (out (7: 5)) of the upper three bit values of the output, and the output The next bit value of Out (4) is the value of In (3). The next bit value of the output (Out (3)) is the value of In (2). The next bit value (Out (2)) of the output contains the value of In (1), and the next bit value (Out (1)) of the output contains the value of In (0) inverted. The least significant bit value Out (0) contains a value of 1 (step 204).

다음으로, 제2 곱셈기(30-2)는 제1 다중화기(20-1)로부터 제공되는 8 비트 값에 16진수 값 {0e}를 곱하여 제2 XOR 연산기(40-2)에 제공하는 블록으로서, 도 4는 8비트 값에 {0e}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.Next, the second multiplier 30-2 is a block which multiplies the 8-bit value provided from the first multiplexer 20-1 by the hexadecimal value {0e} and provides it to the second XOR operator 40-2. 4 is a flowchart of a polynomial multiplier that multiplies an 8-bit value by {0e}.

즉, 제2 곱셈기(30-2)는 제1 다중화기(20-1)로부터 8비트 값(32:24에 대응하는 7:0)이 제공되면(단계 400), 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된다(단계 401).That is, if the second multiplier 30-2 is provided with an 8-bit value (7: 0 corresponding to 32:24) from the first multiplexer 20-1 (step 400), the upper 3 bits of the provided input values are provided. The value In (7: 5) is assigned to the value of the mask (step 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).Subsequently, the second multiplier 30-2 includes XOR operation bits of In (6), In (5), and In (4) in temp (5), which is the most significant bit of temp, and In ( 5) and In (4), In (3) contains XOR operation result bits, and temp (3) contains In (4), In (3) and In (2) XOR operation result bits, and temp (2). ) Contains XOR operation result bits of In (3), In (2) and In (1), and temp (1) contains XOR operation result bits of In (2), In (1) and In (0). temp (0) contains the result of the XOR operation of In (1) and In (0) (step 402).

다음으로, 제2 곱셈기(30-2)는 할당된 마스크(mask)가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단한다(단계 403).Next, the second multiplier 30-2 determines which of the eight values of the assigned mask has 000, 001, 010, 011, 100, 101, 110, and 111 (step 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).If the mask value assigned in the determination step 403 has a value of 000, temp (5), which is the most significant bit of the temp value, becomes the most significant bit Out (7) of the output value, and the next output value Out (6) becomes temp (4), output value Out (5) becomes temp (3), output value Out (4) becomes temp (2), and output value Out (3) is temp (1) The output value Out (2) becomes temp (0), the output value Out (1) becomes In (0), and the output value Out (0) is assigned a value of 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).If the value of the mask allocated in the determination step 403 has a value of 001, the upper three bits of the output Out (7), Out (6), Out (5) is temp (5), temp (4), The value of temp (3) enters in sequence, and the values of temp (2) and temp (1) are inverted into Out (4) and Out (3), respectively. Next, temp (0) into Out (2). The value of In is entered, the value of In (0) is inverted into Out (1), and finally the value of 1 is entered into Out (0) (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).If the value of the mask allocated in the determination step 403 has a value of 010, the values of temp (5) and temp (4) are sequentially entered into the upper two bits Out (7), Out (6) of the output, The value of temp (3) is inverted into Out (5), the value of temp (2) is entered into Out (4), and the value of temp (1) and temp (0) is contained in Out (3) and Out (2). The values are inverted, respectively, Out (1) contains In (0), and finally 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).If the value of the mask allocated in the determination step 403 has a value of 011, the values of temp (5) and temp (4) are sequentially entered into the upper two bits Out (7) and Out (6) of the output. In Out (5) and Out (4), the values of temp (3) and temp (2) are inverted.In Out (3), temp (1) is entered, and Out (2) is temp (1). This value is inverted, the value of In (0) is inverted into Out (1), and finally the value of 0 is entered into Out (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).If the value of the mask assigned in the determination step 403 has a value of 100, the value of temp (5) is entered in the most significant bit Out (7) of the output, and temp (4) is inverted at Out (6). Out (5), Out (4), Out (3), and Out (2) contain the values of temp (3), temp (2), temp (1), and temp (0). A value of In (0) is entered and a value of 1 is entered in Out (0) (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).If the value of the mask assigned in the determination step 403 has a value of 101, the value of temp (5) is entered in the most significant bit Out (7) of the output, and temp (4) is inverted at Out (6). In Out (5), the value of temp (3) enters, Out (4) and Out (3) inverts the values of temp (2) and temp (1), and in Out (1) In (0). The value of) is inverted, and the value of 0 is entered in Out (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).If the value of the mask allocated in the determination step 403 has a value of 110, the value of temp (5) is included in the most significant bit Out (7) of the output, and temp () is contained in Out (6) and Out (5). 4) and temp (3) are inverted, respectively, and temp (2) is entered in Out (4), and the values of temp (1) and temp (0) are inverted in Out (3) and Out (2). In Out (1), a value of In (0) is entered, and in Out (0), a value of 0 is entered (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).If the value of the mask allocated in the determination step 403 has a value of 111, the value of temp (5) enters the most significant bit Out (7) of the output, and Out (6), Out (5), and Out ( 4) temp (4), temp (3) and temp (2) are inverted in turn, Out (3) enters temp (1), and Out (2) inverts the value of temp (0). The value of In (0) is inverted into Out (1), and finally the value of 0 is entered into Out (0) (411).

다음으로, 제3 곱셈기(30-3)는 제2 다중화기(20-2)로부터 제공되는 8 비트 값에 16진수 값 {03}을 곱하여 제1 XOR 연산기(40-1)에 제공하는 블록으로서, 도 3은 8비트 값에 {03}을 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.Next, the third multiplier 30-3 is a block which multiplies the 8-bit value provided from the second multiplexer 20-2 by the hexadecimal value {03} and provides it to the first XOR operator 40-1. 3 is a flowchart of a polynomial multiplier that multiplies an 8-bit value by {03}.

즉, 제3 곱셈기(30-3)는 제2 다중화기(20-2)로부터 8비트 값(23:16에 대응하는 7:0)이 제공되면(단계 300), 제공된 입력 값 중 최상위 비트 값(In(7))이 마스크(mask)의 값으로 할당된다(단계 301).That is, when the third multiplier 30-3 is provided with an 8-bit value (7: 0 corresponding to 23:16) from the second multiplexer 20-2 (step 300), the third multiplier 30-3 receives the most significant bit value among the provided input values. (In (7)) is assigned to the value of the mask (step 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).Thereafter, the third multiplier 30-3 includes the XOR result bits of In (7) and In (6) in temp (6), which is the most significant bit of temp, and In (6) and In ( 5) XOR operation result bit, temp (4) contains XOR operation result bit of In (5) and In (4), and temp (3) XOR operation result of In (4) and In (3). Bits are included, and temp (2) contains the XOR result bits of In (3) and In (2), and temp (1) contains the XOR result bits of In (2) and In (1). 0) contains XOR operation result bits of In (1) and In (0) (step 302).

이어서, 할당된 마스크가 "0"의 값인지, 아니면, "1"의 값인지를 판단한다(단계 303).Then, it is determined whether the assigned mask is a value of "0" or a value of "1" (step 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).If the value of the mask in the determination step 303 is "0", the most significant bit temp (6) of the temp value becomes the most significant bit Out (7) of the output value, and the next output value Out (6) is temp (5). Then the output value Out (5) becomes temp (4), then the output value Out (4) becomes temp (3), then the output value Out (3) becomes temp (2) Then, the output value Out (2) becomes temp (1), then the output value Out (1) becomes temp (0), and the last output value Out (0) is assigned the value of In (0). (Step 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).On the other hand, if the value of the mask is "1" in the determination step 303, the most significant bits Out (7), Out (6), and Out (5) of the upper three bits of the output are temp (6) and temp (5). ), then the value of temp (4) enters in sequence, and then the values of temp (3) and temp (2) are inverted into Out (4) and Out (3), and temp (1) into Out (2). The value of temp (0) is inverted into Out (1), and finally the value of In (0) is input into Out (0) (step 305).

제4 곱셈기(30-4)는 제2 다중화기(20-2)로부터 제공되는 8 비트 값에 16진수 값 {0b}를 곱하여 제2 XOR 연산기(40-2)에 제공하는 블록으로서, 도 5는 8비트 값에 {0b}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.The fourth multiplier 30-4 is a block for multiplying the 8-bit value provided from the second multiplexer 20-2 by the hexadecimal value {0b} and providing it to the second XOR operator 40-2. Is a flowchart of a polynomial multiplier that multiplies an 8-bit value by {0b}.

즉, 제4 곱셈기(30-4)는 제2 다중화기(20-2)로부터 8비트 값(23:16에 대응하는 7:0)이 제공되면(단계 500), 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된다(단계 501).That is, if the fourth multiplier 30-4 is provided with an 8-bit value (7: 0 corresponding to 23:16) from the second multiplexer 20-2 (step 500), the upper 3 bits of the provided input value are provided. The value In (7: 5) is assigned to the value of the mask (step 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).Subsequently, the fourth multiplier 30-4 includes the XOR result bits of In (7), In (6), and In (4) in temp (6), which is the most significant bit of temp, and In ( 6) and In (5), In (3) contains XOR operation result bit, and temp (4) contains In (5), In (4) and In (2) XOR operation result bit, and temp (3) ) Contains XOR result bits of In (4), In (3) and In (1), and temp (2) contains XOR result bits of In (3), In (2) and In (0). temp (1) contains the XOR operation result bits of In (2) and In (1), and temp (0) contains the XOR operation result bits of In (1) and In (0) (step 502).

다음으로, 제4 곱셈기(304)는 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단한다(단계 503).Next, the fourth multiplier 304 determines which of the eight values of the assigned mask has 000, 001, 010, 011, 100, 101, 110, and 111 (step 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).If the mask allocated in the determination step 503 has a value of 000, temp (6), which is the most significant bit of the temp value, becomes the most significant bit Out (7) of the output value, and the next output value Out (6) is temp. (5), output value Out (5) becomes temp (4), output value Out (4) becomes temp (3), output value Out (3) becomes temp (2), and output value Out (2) becomes temp (1), output value Out (1) becomes temp (0), and output value Out (0) is assigned a value of In (0) (step 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).If the mask allocated in the determination step 503 has a value of 001, the upper three bits of the output Out (7), Out (6), and Out (5) include temp (6), temp (5), and temp ( The value of 4) enters in sequence, the values of temp (3) and temp (2) are inverted into Out (4) and Out (3), respectively, and the value of temp (1) is entered into Out (2). Temp (0) is inverted into Out (1), and In (0) is inverted into Out (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).If the mask allocated in the determination step 503 has a value of 010, the values of temp (6) and temp (5) are sequentially entered into the upper two bits Out (7) and Out (6) of the output. The values of temp (4) and temp (3) are inverted into (5) and Out (4), respectively, and the values of temp (2) are entered into Out (3), and Out (2) and Out (1) The values of temp (1) and temp (0) are inverted, respectively, and the value of In (0) enters Out (0) (step 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).If the mask allocated in the determination step 503 has a value of 011, the values of temp (6) and temp (5) are sequentially entered into the upper two bits Out (7) and Out (6) of the output. The value of temp (4) is inverted in (5), the value of temp (3) is entered in Out (4), and the values of temp (2) and temp (1) in Out (3) and Out (2). The value of temp (0) is entered into Out (1), and the value of In (0) is inverted into Out (0) (Step 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).If the mask assigned in the determination step 503 has a value of 100, the value of temp (6) is included in the most significant bit Out (7) of the output, and Out (6), Out (5), and Out (4) are included. Temp (5), temp (4), and temp (3) are inverted, respectively, temp (2) is entered in Out (3), and temp (1) and temp (in Out (2) and Out (1). The value of 0 is inverted and the value of In (0) is inverted into Out (0) (step 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).If the mask assigned in the determination step 503 has a value of 101, the value of temp (6) is included in the most significant bit Out (7) of the output, and temp (5) is contained in Out (6) and Out (5). The values of and temp (4) are inverted, respectively, and the values of temp (3) are entered in Out (4), and the values of temp (2) and temp (1) are inverted in Out (3) and Out (2). Out (1) contains the value of temp (0), and Out (0) contains the value of in (0) (step 509).

상기 판단 단계(503)에서 할당된 마스크가 110의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6)에는 temp(5)가 반전되어 들어가며, Out(5:1)의 다섯 비트에는 temp(4:0)의 다섯 비트가 차례대로 들어가며, Out(0)에는 In(0)의 값이 들어간다(단계 510).If the mask assigned in the determination step 503 has a value of 110, the value of temp (6) is entered in the most significant bit Out (7) of the output, and temp (5) is inverted in Out (6), Five bits of Out (5: 1) contain five bits of temp (4: 0) in turn, and Out (0) contains a value of In (0) (step 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).If the mask assigned in the determination step 503 has a value of 111, the value of temp (6) is included in the most significant bit Out (7) of the output, and the value of temp (5) is inverted at Out (6). In Out (5), temp (4) enters, Out (4) and Out (3) enters temp (3) and temp (2) inverted, and Out (2) enters temp (1). , Out (1) inverts the value of temp (0), and Out (0) enters the value of In (0) (step 511).

제5 곱셈기(30-5)는 제3 다중화기(20-3)로부터 제공되는 8 비트 값에 16진수 값 {0d}를 곱하여 제1,2 XOR 연산기(40-1,2)에 제공하는 블록으로서, 도 6은 8비트 값에 {0d}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.The fifth multiplier 30-5 multiplies the 8-bit value provided from the third multiplexer 20-3 by the hexadecimal value {0d} and provides the block to the first and second XOR operators 40-1 and 2. 6 is a flowchart of a polynomial multiplier that multiplies an 8-bit value by {0d}.

즉, 제5 곱셈기(30-5)는 제3 다중화기(20-3)로부터 8비트 값(15:8에 대응하는 7:0)이 제공되면(단계 600), 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된다(단계 601).That is, if the fifth multiplier 30-5 is provided with an 8-bit value (7: 0 corresponding to 15: 8) from the third multiplexer 20-3 (step 600), the upper 3 bits of the provided input value are provided. The value In (7: 5) is assigned to the value of the mask (step 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).Subsequently, the fifth multiplier 30-5 enters the XOR operation bit of In (7), In (5), and In (4) into temp (5), which is the most significant bit of temp, and In (4). 6) and In (4), In (3) contains XOR operation result bits, and temp (3) contains In (5), In (3), In (2) XOR operation result bits, and temp (2). ) Contains XOR result bits of In (4), In (2) and In (1), and temp (1) contains XOR result bits of In (3), In (1) and In (0). temp (0) contains the result of the XOR operation of In (2) and In (0) (step 602).

다음으로, 제5 곱셈기(30-5)는 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단한다(단계 603).Next, the fifth multiplier 30-5 determines which of the eight values of the assigned mask has 000, 001, 010, 011, 100, 101, 110, and 111 (step 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).If the mask assigned in the determination step 603 has a value of 000, temp (5), which is the most significant bit of the temp value, becomes the most significant bit Out (7) of the output value, and the next output value Out (6) is temp. (4), output value Out (5) becomes temp (3), output value Out (4) becomes temp (2), output value Out (3) becomes temp (1), and output value Out (2) becomes temp (0), output value Out (1) becomes In (1), and output value Out (0) is assigned a value of In (0) (step 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).If the mask allocated in the determination step 603 has a value of 001, the upper three bits of the output Out (7), Out (6), and Out (5) include temp (5), temp (4), temp ( The value of 3) enters in sequence, the values of temp (2) and temp (1) are inverted into Out (4) and Out (3), respectively, and the value of temp (0) is entered into Out (2). The value of In (1) is inverted into Out (1), and finally, the value of In (0) is inverted into Out (0) (step 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).If the mask allocated in the determination step 603 has a value of 010, the values of temp (5) and temp (4) are sequentially entered into the upper two bits Out (7) and Out (6) of the output. The value of temp (3) is inverted in (5), the value of temp (2) is entered in Out (4), and the values of temp (1) and temp (0) in Out (3) and Out (2). These are inverted into each other, the value of In (1) enters Out (1), and finally, the value of In (0) is inverted into Out (0) (step 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).If the mask allocated in the determination step 603 has a value of 011, the values of temp (5) and temp (4) are sequentially entered into the upper two bits Out (7) and Out (6) of the output. The values of temp (3) and temp (2) are inverted into (5) and Out (4), the value of temp (1) is entered into Out (3), and temp (1) is inverted into Out (2). The value of In (1) is inverted into Out (1), and finally, the value of In (0) is entered into Out (0) (step 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).If the mask assigned in the determination step 603 has a value of 100, the value of temp (5) is entered in the most significant bit Out (7) of the output, and temp (4) is inverted in Out (6), Out (5) enters the value of temp (3), Out (4) and Out (3) enter the values of temp (3) and temp (1) inverted, and Out (2) enters the value of temp (0). A value is entered, the value of In (1) is inverted into Out (1), and the value of In (0) is entered into Out (0) (step 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).If the mask assigned in the determination step 603 has a value of 101, the value of temp (5) is entered in the most significant bit Out (7) of the output, and temp (4) is inverted in Out (6), Four bits of temp (3: 0) are entered into each of the four bits of Out (5: 2), and In (1) is inverted into Out (1), and finally In (0) into In (0). ) Is entered (step 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).If the mask allocated in the determination step 603 has a value of 110, the most significant bit of the output, the value of temp (5) is included in Out (7), and the value of Out (6), Out (5), and Out (4). ), Temp (4), temp (3), and temp (2) are inverted, respectively, temp (1) is entered in Out (3), and temp (0) is inverted in Out (2). The values of In (1) and In (0) are inverted into Out (1) and Out (0) (step 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).If the mask assigned in the determination step 603 has a value of 111, the most significant bit of the output, the value of temp (5) enters in Out (7), and the temp (4) in Out (6) and Out (5). ) And temp (3) are inverted, respectively, and temp (2) enters Out (4), and temp (1) and temp (0) are inverted into Out (3) and Out (2). 1) and Out (0) contain values of In (1) and In (0) (step 611).

제6 곱셈기(30-6)는 제4 다중화기(20-4)로부터 제공되는 8 비트 값에 16진수 값 {09}를 곱하여 제1,2 XOR 연산기(40-1,2)에 제공하는 블록으로서, 도 7은 8비트 값에 {09}를 곱하는 다항식 곱셈기의 흐름도를 도시한 도면이다.The sixth multiplier 30-6 multiplies the 8-bit value provided from the fourth multiplexer 20-4 by the hexadecimal value {09} and provides the block to the first and second XOR operators 40-1 and 2. 7 is a flowchart illustrating a polynomial multiplier that multiplies an 8-bit value by {09}.

즉, 제6 곱셈기(30-6)는 제4 다중화기(20-4)로부터 8비트 값(7:0)이 제공되면(단계 700), 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된다(단계 701).That is, when the eighth multiplier 30-6 is provided with an 8-bit value (7: 0) from the fourth multiplexer 20-4 (step 700), the sixth multiplier 30-6 is the upper 3 bit value (In (7: 5)) is assigned a value of a mask (step 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).Thereafter, the sixth multiplier 30-6 includes the XOR operation result bits of In (7) and In (4) in temp (4), which is the most significant bit of temp, and In (6) and In ( XOR operation result bit of 3) is entered, and XOR operation result bit of In (5) and In (2) is entered in temp (2), and XOR operation result of In (4) and In (1) in temp (1). Bit, and temp (0) contains the result of XOR operation of In (3) and In (0) (step 702).

다음으로, 제6 곱셈기(30-6)는 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단한다(단계 703).Next, the sixth multiplier 30-6 determines which of the eight values of the assigned mask has 000, 001, 010, 011, 100, 101, 110, and 111 (step 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).If the mask allocated in the determination step 703 has a value of 000, temp (4), which is the most significant bit of the temp value, becomes the most significant bit Out (7) of the output value, and the next output value Out (6) is temp. (3), output value Out (5) becomes temp (2), output value Out (4) becomes temp (1), output value Out (3) becomes temp (0), and output value Out (2) becomes In (2), output value Out (1) becomes In (1), and output value Out (0) is assigned a value of In (0) (step 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).If the mask allocated in the determination step 703 has a value of 001, the upper three bits of the output, Out (7), Out (6), and Out (5), include temp (4), temp (3), and temp ( The value of 2) enters in sequence, the values of temp (1) and temp (0) are inverted into Out (4) and Out (3), respectively, and the value of In (2) is entered into Out (2). The values of In (1) and In (0) are inverted into Out (1) and Out (0) (step 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).If the mask allocated in the determination step 703 has a value of 010, the values of temp (4) and temp (3) are sequentially entered into the upper two bits Out (7) and Out (6) of the output. The values of temp (2) and temp (1) are inverted in (5) and Out (4), respectively, and the values of temp (0) are entered in Out (3), and in Out (2) and Out (1). The values of In (2) and In (1) are inverted, respectively, and finally, the value of In (0) is entered into Out (0) (step 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).If the mask allocated in the determination step 703 has a value of 011, the values of temp (4) and temp (3) are sequentially entered into the upper two bits Out (7) and Out (6) of the output. The value of temp (2) is inverted in (5), temp (1) is entered in Out (4), and the values of temp (0) and In (2) are set in Out (3) and Out (2), respectively. In (1) enters In (1) and In (0) inverts the value of In (0) into Out (1) (step 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).If the mask assigned in the determination step 703 has a value of 100, the value of temp (6) is included in the most significant bit Out (7) of the output, and temp (3) is contained in Out (6) and Out (5). And temp (2) are inverted, respectively, temp (1) enters Out (4), and temp (0) and In (2) inverts in Out (3) and Out (2), respectively. Out (1) and Out (0) contain the values of In (1) and In (0) (step 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).If the mask assigned in the determination step 703 has a value of 101, the value of temp (4) is entered in the most significant bit Out (7) of the output, and Out (6), Out (5), and Out (4) are included. The values of temp (3), temp (2) and temp (1) are inverted, respectively, and temp (0) enters Out (3), and Out (2), Out (1) and Out (0) The values of In (2), In (1) and In (0) are inverted (step 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).If the mask assigned in the determination step 703 has a value of 110, the value of temp (4) is entered in the most significant bit Out (7) of the output, and temp (3) is inverted in Out (6), Out (5) contains temp (2), Out (4) and Out (3) contain inverted values of temp (1) and temp (0), In (2) contains In (2), In (1) is inverted into Out (1), and In (0) is finally entered into Out (0) (step 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).If the mask assigned in the determination step 703 has a value of 111, the value of temp (6) is entered in the most significant bit Out (7) of the output, and the value of temp (3) is inverted in the Out (6). , 5 bits of Out (5: 1) enter temp (2: 0), In (2), In (1) in turn, and finally Out (0) inverts the value of 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)에 내보낸다.After the polynomial multiplication of the first, second, third, fourth, fifth, and sixth multipliers 30-1,2,3,4,5,6 is made, the first XOR operator 40-1 receives the first, third, The fifth multiplexer 20-5 outputs an 8-bit output obtained by performing an XOR operation on four 8-bit values, which are the result of each polynomial multiplication operation of each of the 5, 6 multipliers (30-1, 3, 5, 6). Export to

그리고, 제2 XOR 연산기(40-2)는 제2,4,5,6 곱셈기(30-2,4,5,6) 각각의 다항식 곱셈 연산 결과인 8비트 값 4개를 각각 비트 단위로 XOR 연산을 수행한 8비트 출력을 제5 다중화기(20-5)에 내보낸다.The second XOR operator 40-2 XORs four 8-bit values, which are the result of the polynomial multiplication of each of the second, fourth, fifth, and sixth multipliers 30-2, 4, 5, and 6, respectively, in bit units. The 8-bit output of the operation is sent to the fifth multiplexer 20-5.

제5 다중화기(20-5)는 제1,2 XOR 연산기(40-1,2) 각각으로부터 제공되는 8비트 출력 중 암호화 모드인지 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0)을 수행한다.The fifth multiplexer 20-5 determines the result of the mixed column transformation according to whether the encryption mode or the decryption mode among the 8-bit outputs provided from each of the first and second XOR operators 40-1 and 2 is output ( Execute Out (7: 0).

상기와 같이 설명한 본 발명은 AES 블록 암호의 라운드 연산을 하드웨어로 구현할 때, 많은 게이트 수를 필요로 하는 믹스 칼럼 변환의 게이트 수를 줄이고, 빠른 시간에 다항식 곱셈 수행이 가능하도록 함으로써, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈 기의 면적을 작게 차지할 뿐만 아니라 입력에서 출력에 이르기까지 데이터가 거쳐야 할 게이트 수를 최소화하여 다항식 곱셈 장치의 동작 가능 주파수를 높일 수 있다. 그리고, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈기를 소프트웨어로 구현하는 것보다 훨씬 빠르게 동작한다. 또한, AES 블록 암호용 믹스 카럼 변환을 위한 다항식 곱셈기를 AES 알고리즘의 암/복호화 장치에 적용하여 빠른 시간 내에 안전하게 데이터를 암호화 및 복호화 하는데 적용할 수 있다. 마지막으로, AES 블록 암호용 믹스 칼럼 변환을 위한 다항식 곱셈 장치가AES 알고리즘에만 국한되지 않고 다른 다항식 곱셈이 필요한 장치에도 쉽게 적용할 수 있다는 효과가 있다.When the round operation of the AES block cipher is implemented in hardware as described above, the present invention reduces the number of gates of a mixed column transformation that requires a large number of gates, and enables the polynomial multiplication to be performed at a fast time. Not only does it occupy a small area of the polynomial multiplier for transform column conversion, but it also increases the operating frequency of the polynomial multiplier by minimizing the number of gates that the data passes through from input to output. And it works much faster than implementing a polynomial multiplier for the mix column transformation for AES block ciphers. In addition, it is possible to apply a polynomial multiplier for converting a mix column for AES block ciphers to an encryption / decryption apparatus of the AES algorithm to safely encrypt and decrypt data in a short time. Finally, the polynomial multiplication device for the AES block cipher mix column transformation is not limited to the AES algorithm but can be easily applied to devices that require other polynomial multiplication.

Claims (18)

블록 암호용 다항식 곱셈장치에 있어서,In the block cipher polynomial multiplier, 임의의 비트 입력 데이터를 저장하며, 클럭(clock)이 제공될 때마다 한 바이트(이하, 8비트라 칭함)씩 쉬프트 연산을 수행하면서 상기 8비트 값을 제공하는 저장부;A storage unit which stores arbitrary bit input data and provides the 8-bit value while performing a shift operation by one byte (hereinafter, referred to as 8 bits) whenever a clock is provided; 상기 저장부로부터 제공되는 8비트 값을 암호화 모드인지 복호화 모드인지에 따라 각각의 곱셈기로 8비트 값을 제공하는 제1,2,3,4 다중화기;First, second, third, and fourth multiplexers for providing an 8-bit value to each multiplier depending on whether the 8-bit value provided from the storage is an encryption mode or a decryption mode; 상기 제1,2,3,4 다중화기로부터 제공되는 각각의 8비트 값에 16진수 값 {02},{0e},{03},{0b},{0d},{09}를 각각 다항식 곱셈을 수행하여 제공하는 제1,2,3,4,5,6 곱셈기;Polynomial multiplication of hexadecimal values {02}, {0e}, {03}, {0b}, {0d}, {09} to respective 8-bit values provided from the first, second, third, and fourth multiplexers Providing a first, two, three, four, five, six multipliers; 상기 제1,2,3,4,5,6 곱셈기의 다항식 곱셈을 맞춘 후, 상기 제1,2,3,4,5,6 곱셈기 각각의 다항식 곱셈 연산 결과인 8비트 값 4개를 각각 비트 단위로 XOR 연산을 수행한 8비트 출력을 제공하는 제1,2 XOR 연산기;After multiplying the polynomial multiplication of the first, second, third, fourth, fifth, and sixth multipliers, each of the eight 8-bit values that are the result of the polynomial multiplication of each of the first, second, third, fourth, fifth, and sixth multipliers First and second XOR operators that provide an 8-bit output on which XOR operations are performed in units; 상기 제1,2 XOR 연산기 각각으로부터 제공되는 8 비트 출력 중 암호화 모드인지 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0))을 수행하는 제5 다중화기를 포함하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.A fifth multiplexer configured to perform an output (Out (7: 0)) while determining a result of the mix column transformation according to an encryption mode or a decryption mode among the 8-bit outputs provided from each of the first and second XOR operators. A block cipher polynomial multiplier. 제 1 항에 있어서, 상기 저장부는,The method of claim 1, wherein the storage unit, 상기 임의의 비트 입력 데이터 값 중 가장 최상위 8비트 값을 상기 제1 다중화기에 제공하고, 다음 상위 8비트 값을 상기 제2 다중화기에 제공하며, 다음 상위 8비트 값을 상기 제3 다중화기에 제공하며, 마지막 8비트 값을 상기 제4 다중화기에 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.Provide the first multiplexer with the highest 8-bit value of the arbitrary bit input data value, provide a next higher 8-bit value to the second multiplexer, provide a next higher 8-bit value to the third multiplexer, And providing a last 8-bit value to the fourth multiplexer. 제 2 항에 있어서,The method of claim 2, 상기 저장부는 외부로부터 클럭이 제공될 때마다 저장된 값들은 8비트 씩 회전 쉬프트하며, 다음 값을 갖는 클럭이 제공될 때 상기 저장부에 저장된 값들은 8비트 씩 회전 쉬프트를 하면서 상기 과정을 반복함에 따라 4클럭 동안 연산을 통해 8비트씩 4개의 믹스 칼럼 변환 결과를 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.When the clock is provided from the outside, the stored values are shifted by 8 bits, and when the clock having the next value is provided, the values stored in the storage are rotated by 8 bits and the process is repeated. A polynomial multiplication multiplier for block ciphers, characterized by providing four mix column transform results by eight bits through four clock operations. 제 1 항에 있어서,The method of claim 1, 상기 제1 다중화기는 저장부로부터 제공된 가장 상위 8비트 값(32:24)을 암호화 모드일 경우 상기 제1 곱셈기로 제공하고, 복호화 모드일 경우 상기 제2 곱셈기로 제공하며,The first multiplexer provides the highest 8-bit value (32:24) provided from a storage unit to the first multiplier in an encryption mode, and to the second multiplier in a decryption mode. 상기 제2 다중화기는 저장부로부터 제공된 다음 상위 8비트 값(23:16)을 암호화 모드일 경우 상기 제3 곱셈기로 제공하고, 복호화 모드일 경우 상기 제4 곱셈기로 제공하며,The second multiplexer provides a next higher 8-bit value (23:16) provided from a storage unit to the third multiplier in an encryption mode, and to the fourth multiplier in a decryption mode, 상기 제3 다중화기는 저장부로부터 제공된 다음 상위 8비트 값(15:8)을 암호화 모드일 경우 상기 저장부로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기로 제공하며, 복호화 모드일 경우 상기 상위 8비트 값(15:8)을 상기 제5 곱셈기로 제공하며,When the third multiplexer provides the next higher 8-bit value (15: 8) provided from the storage unit in the encryption mode, the 8-bit value provided from the storage unit becomes “00000000” and directly provides the first XOR operator to the decryption mode. If the upper 8-bit value (15: 8) is provided to the fifth multiplier, 상기 제4 다중화기는 저장부로부터 제공된 마지막 8비트 값(7:0)을 암호화 모드일 경우 상기 저장부로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기로 제공하며, 복호화 모드일 경우 마지막 8비트 값을 상기 제6 곱셈기로 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.The fourth multiplexer directly provides the first 8-bit value (7: 0) provided from the storage unit to the first XOR operator when the 8-bit value provided from the storage unit becomes "00000000" in the encryption mode and in the decryption mode. And a last 8-bit value to the sixth multiplier. 제 1 항에 있어서,The method of claim 1, 상기 제1,2,3,4,5,6 곱셈기는 상기 최상위 입력 비트 또는 상위 입력 3비트를 마스크의 값으로 설정하여 다항식 곱셈을 수행하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.And wherein the first, second, third, fourth, fifth, and sixth multipliers perform polynomial multiplication by setting the most significant input bit or the most significant input three bits to a mask value. 제 5 항에 있어서,The method of claim 5, wherein 상기 마스크의 값에 따라 상기 제1,2,3,4,5,6 곱셈기의 출력 값을 결정하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.And determining an output value of the first, second, third, fourth, fifth, and sixth multipliers according to the mask value. 제 6 항에 있어서,The method of claim 6, 상기 마스크의 값에 따라 입력 값과 다수개의 인버터만을 이용하여 출력 값을 계산하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.And an output value using only an input value and a plurality of inverters according to the mask value. 제 7 항에 있어서,The method of claim 7, wherein 상기 입력 값을 이용하여 temp 값을 설정하며, 상기 설정된 temp 값에 따라 상기 제1,2,3,4,5,6 곱셈기의 연산 속도를 증가하도록 하는 것을 특징으로 하는 블록 암호용 다항식 곱셈장치.And a temp value is set using the input value, and the operation speed of the first, second, third, fourth, fifth, and sixth multipliers is increased according to the set temp value. 제1,2,3,4,5 다중화기, 제1,2,3,4,5,6 곱셈기, 제1,2 XOR 연산기, 저장부를 구비하는 시스템에서의 블록 암호화 다항식 곱셈 방법에 있어서,In the block encryption polynomial multiplication method in a system having a first, two, three, four, five multiplexers, first, two, three, four, five, six multipliers, the first, second XOR operators, and a storage unit, 상기 저장부에서 임의의 비트 입력 데이터를 저장하고, 클럭(clock)이 제공될 때마다 한 바이트(이하, 8비트라 칭함)씩 쉬프트 연산을 수행하면서 8비트 값을 상기 제1,2,3,4 다중화기 각각에 제공하는 단계;The storage unit stores arbitrary bit input data and shifts one bit (hereinafter referred to as 8 bits) by one byte (hereinafter, referred to as 8 bits) every time a clock is provided, and converts 8-bit values into the first, second, third, and the like. Providing each of the four multiplexers; 상기 1,2,3,4 다중화기에서 상기 저장부로부터 제공되는 8비트 값을 암호화 모드인지 복호화 모드인지에 따라 상기 제1,2,3,4,5,6 곱셈기 각각으로 8비트 값을 제공하는 단계;The 1, 2, 3, 4 multiplexer provides an 8 bit value to each of the first, 2, 3, 4, 5, and 6 multipliers according to whether the 8 bit value provided from the storage unit is an encryption mode or a decryption mode. Doing; 상기 제1,2,3,4,5,6 곱셈기에서 상기 제1,2,3,4 다중화기로부터 제공되는 각각의 8비트 값에 16진수 값 {02},{0e},{03},{0b},{0d},{09}를 각각 다항식 곱셈을 수행하여 상기 제1,2 XOR 연산기로 제공하는 단계;Hexadecimal values {02}, {0e}, {03}, in each 8-bit value provided by the first, 2,3,4 multiplexer in the first, 2,3,4,5,6 multiplier Performing polynomial multiplication on {0b}, {0d}, and {09}, respectively, and providing them to the first and second XOR operators; 상기 제1,2 XOR 연산기에서 상기 제1,2,3,4,5,6 곱셈기 각각에 의해 계산된 다항식 곱셈 연산 결과인 8비트 값 4개를 각각 비트 단위로 XOR 연산을 수행한 8비트 출력을 상기 제5 다중화기에 제공하는 단계;An eight-bit output of performing four-bit XOR operations on the first and second XOR operators, each of which is a result of polynomial multiplication operation calculated by each of the first, second, third, fourth, fifth, and sixth multipliers, in units of bits. Providing to the fifth multiplexer; 상기 제5 다중화기에서 제1,2 XOR 연산기 각각으로부터 제공되는 8 비트 출력 중 암호화 모드인지 복호화 모드인지에 따라 믹스 칼럼 변환의 결과 값을 결정하면서 출력(Out(7:0))을 수행하는 단계를 포함하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.Performing an output (Out (7: 0)) while determining a result value of the mix column transformation according to an encryption mode or a decryption mode among the 8-bit outputs provided from each of the first and second XOR operators in the fifth multiplexer. Polynomial multiplication method for block cipher characterized in that it comprises a. 제 9 항에 있어서,The method of claim 9, 상기 저장부는 임의의 비트 입력 데이터 값 중 가장 상위 8비트 값을 상기 제1 다중화기에 제공하는 단계와, 다음 상위 8비트 값을 상기 제2 다중화기에 제공하는 단계와, 다음 상위 8비트 값을 상기 제3 다중화기에 제공하는 단계와, 마지막 8비트 값을 상기 제4 다중화기에 제공하는 단계를 더 포함하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.The storage unit providing the first multiplexer with the highest 8-bit value of any bit input data value, providing a next higher 8-bit value to the second multiplexer, and providing the next higher 8-bit value with the first multiplexer. 3. The method of claim 4, further comprising providing a multiplexer and providing a final 8-bit value to the fourth multiplexer. 제 9 항에 있어서,The method of claim 9, 상기 제1 다중화기는 암호화 모드일 경우 상기 저장부로부터 제공된 가장 상위 8비트 값(32:24)을 상기 제1 곱셈기로 제공하며, 복호화 모드일 경우 상기 저장부로부터 제공된 가장 상위 8비트 값(32:24)을 상기 제2 곱셈기로 제공하며,The first multiplexer provides the first multiplier with the highest eight-bit value (32:24) provided from the storage unit in the encryption mode, and the highest eight-bit value (32 :) provided from the storage unit in the decryption mode. 24) to the second multiplier, 상기 제2 다중화기는 암호화 모드일 경우 상기 저장부로부터 제공된 다음 상위 8비트 값(23:16)을 상기 제3 곱셈기로 제공하고, 복호화 모드일 경우 상기 저장부로부터 제공된 다음 상위 8비트 값(23:16)을 상기 제4 곱셈기로 제공하며,The second multiplexer provides the next higher 8 bit value (23:16) provided from the storage unit in the encryption mode to the third multiplier, and in the decryption mode, the next upper 8 bit value (23: 16) to the fourth multiplier, 상기 제3 다중화기는 암호화 모드일 경우 상기 저장부로부터 제공된 8비트값이 "00000000"이 되어 직접 제1 XOR 연산기로 제공하며, 복호화 모드일 경우 상기 저장부로부터 제공된 다음 상위 8비트 값(15:8)을 상기 제5 곱셈기로 제공하며,When the third multiplexer is in the encryption mode, the 8-bit value provided from the storage becomes "00000000" and is directly provided to the first XOR operator, and in the decryption mode, the next higher 8-bit value provided from the storage (15: 8). ) Is provided by the fifth multiplier, 상기 제4 다중화기는 암호화 모드일 경우 상기 저장부로부터 제공된 8비트 값이 "00000000"이 되어 직접 제1 XOR 연산기로 제공하며, 복호화 모드일 경우 상기 저장부로부터 제공된 마지막 8비트 값(7:0)을 상기 제6 곱셈기로 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.The fourth multiplexer directly provides the first XOR operator when the 8-bit value provided from the storage unit is “00000000” in the encryption mode, and the last 8-bit value (7: 0) provided from the storage unit in the decryption mode. The polynomial multiplication method for block cipher characterized in that it provides the sixth multiplier. 제 9 항에 있어서,The method of claim 9, 상기 저장부에 클럭이 제공될 경우, 상기 저장부에 저장된 값들은 8비트 씩 회전 쉬프트하며, 다음 값을 갖는 클럭이 다시 제공되면 상기 저장부의 값들은 8비트 씩 회전 쉬프트를 하면서 상기 과정을 반복함에 따라 4클럭 동안 연산을 통해 8비트씩 4개의 믹스 칼럼 변환 결과를 제공하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.When the clock is provided to the storage unit, the values stored in the storage unit are rotated by 8 bits. When the clock having the next value is provided again, the values of the storage unit are rotated by 8 bits and the process is repeated. According to the present invention, the four-column multi-column transformation result is provided by eight bits through four operations. 제 9 항에 있어서,The method of claim 9, 상기 제1 곱셈기는 제1 다중화기(20-1)로부터 8비트 값(32:24에 대응하는 7:0)이 제공될 경우, 상기 제공된 입력 값 중 최상위 비트 값(In(7))을 마스크(mask)의 값으로 할당하며, 상기 할당된 마스크의 값을 판단하며,The first multiplier masks the most significant bit value In (7) among the provided input values when an 8-bit value (7: 0 corresponding to 32:24) is provided from the first multiplexer 20-1. assign a value of (mask), determine a value of the assigned mask, 상기 판단 단계에서 마스크의 값이 하이(high)와 로우(low) 중 임의의 값이면, 입력 값의 하위 7비트 값(In(6:0))이 출력 값의 상위 7비트 값(out(7:1))이 되고, 상기 출력 값의 최하위 비트 값(out(0))은 "0"의 값을 갖도록 하며,In the determining step, if the value of the mask is any one of high and low, the lower 7-bit value In (6: 0) of the input value is the upper 7-bit value of the output value (out (7). (1)), and the least significant bit value (out (0)) of the output value has a value of "0". 상기 판단 단계에서 마스크의 값이 상기 하이와 로우 중 다른 임의의 값이면, 출력의 상위 세 비트 값 중 최상위 비트 값(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의 값이 들어가도록 하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.In the determining step, if the mask value is any other value between the high and low values, the value of In (6: 4) is entered in the most significant bit value (out (7: 5)) of the upper three bit values of the output. The next bit value (Out (4)) of the output is the value inverting the value of In (3), and the next bit value (Out (3)) of the output is the value inverting the value of In (2). The next bit value (Out (2)) of the output contains the value of In (1), the next bit value (Out (1)) of the output contains the value of In (0) inverted, And a value of 1 is included in the least significant bit value (Out (0)) of the output. 제 9 항에 있어서,The method of claim 9, 상기 제2 곱셈기는 제1 다중화기로부터 8비트 값(32:24에 대응하는 7:0)이 제공될 경우, 상기 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당한 후, 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 연산 결과 비트가 들어가게 한 다음에, 상기 할당된 마스크(mask)가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을갖는지를 판단하며,When the second multiplier is provided with an 8-bit value (7: 0 corresponding to 32:24) from the first multiplexer, the upper 3 bit values In (7: 5) of the provided input values are masked. After assigning to the value of), In (6), In (5), and In (4) result bits are entered in temp (5), the most significant bit of temp, and In (5) and In (5) in temp (4). XOR operation result bits of In (4) and In (3) are entered, and XOR operation result bits of In (4) and In (3) and In (2) are entered into temp (3), and In XOR operation bit of (3), In (2), In (1) is entered, and temp (1) contains XOR operation bit of In (2), In (1), In (0), and temp ( 0) contains the result bits of the XOR operation of In (1) and In (0), and then the assigned mask has eight values of 000, 001, 010, 011, 100, 101, 110, and 111. To determine the value of 상기 판단 단계에서 할당된 마스크(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의 값이 할당되도록 하며,If the mask value assigned in the determination step has a value of 000, temp (5), which is the most significant bit of the temp value, becomes the most significant bit Out (7) of the output value, and the next output value Out (6). Becomes temp (4), output value Out (5) becomes temp (3), output value Out (4) becomes temp (2), output value Out (3) becomes temp (1), The output value Out (2) becomes temp (0), the output value Out (1) becomes In (0), and the output value Out (0) allows a value of 0 to be assigned. 상기 판단 단계에서 할당된 마스크의 값이 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의 값이 들어가도록 하며,If the value of the mask allocated in the determining step has a value of 001, the upper three bits of the output Out (7), Out (6), Out (5), the temp (5), temp (4), temp (3) ) Values are entered in turn, and Out (4) and Out (3) enter temp (2) and temp (1) inverted respectively. Next, Out (2) has the value of temp (0). In Out (1), the value of In (0) is inverted, and finally Out (0) has a value of 1, 상기 판단 단계에서 할당된 마스크의 값이 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이 들어가도록 하며,If the value of the mask allocated in the determination step has a value of 010, the values of temp (5) and temp (4) are sequentially entered into the upper two bits Out (7), Out (6) of the output, and Out (5). ), The value of temp (3) is inverted, the value of temp (2) is entered into Out (4), and the values of temp (1) and temp (0) are respectively contained in Out (3) and Out (2). Inverted, In (1) contains In (0), Finally Out (0) contains 1, 상기 판단 단계에서 할당된 마스크의 값이 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의 값이 들어가도록 하며,If the value of the mask allocated in the determining step has a value of 011, the values of temp (5) and temp (4) are sequentially entered into the upper two bits Out (7) and Out (6) of the output, and Out ( 5) and Out (4) invert the values of temp (3) and temp (2), Out (3) contains the value of temp (1), and Out (2) contains the value of temp (1). In (1) is inverted, Out (1) is inverted, and finally Out (0) is set to 0, 상기 판단 단계에서 할당된 마스크의 값이 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의 값이 들어가도록 하며,If the value of the mask allocated in the determining step has a value of 100, the value of temp (5) is entered in the most significant bit Out (7) of the output, and temp (4) is inverted in Out (6), and Out (5), Out (4), Out (3), and Out (2) contain the values of temp (3), temp (2), temp (1), and temp (0), and In (1) contains In ( The value of 0) is entered, and the value of 1 is entered in Out (0). 상기 판단 단계에서 할당된 마스크의 값이 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의 값이 들어가도록 하며,If the value of the mask allocated in the determining step has a value of 101, the value of temp (5) is entered in the most significant bit Out (7) of the output, and temp (4) is inverted in Out (6), and Out The value of temp (3) is entered in (5), the values of temp (2) and temp (1) are inverted in Out (4) and Out (3), and the value of In (0) in Out (1). Is inverted and Out (0) is set to 0. 상기 판단 단계에서 할당된 마스크의 값이 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의 값이 들어가도록 하며,If the value of the mask allocated in the determination step has a value of 110, the value of temp (5) is entered in the most significant bit Out (7) of the output, and temp (4) and in Out (6) and Out (5). temp (3) is inverted into each other, temp (2) enters into Out (4), and values of temp (1) and temp (0) are inverted into Out (3) and Out (2), and Out ( 1) contains In (0) and Out (0) contains 0. 상기 판단 단계에서 할당된 마스크의 값이 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의 값이 들어가도록 하는 것을 특징으로 블록 암호용 다항식 곱셈방법.If the value of the mask allocated in the determining step has a value of 111, the value of temp (5) is entered in the most significant bit Out (7) of the output, and in Out (6), Out (5), and Out (4). temp (4), temp (3) and temp (2) are inverted in turn, Out (3) enters temp (1), and Out (2) inverts the value of temp (0), A polynomial multiplication method for block cipher, characterized in that the value of In (0) is inverted into Out (1), and finally the value of 0 is entered into Out (0). 제 9 항에 있어서,The method of claim 9, 상기 제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 연산 결과 비트가 들어간 다음에 할당된 마스크의 값을 판단하며,The third multiplier includes XOR operation result bits of In (7) and In (6) in temp (6), which is the most significant bit of temp, and XOR operation result of In (6) and In (5) in temp (5). Bits are entered, and temp (4) contains the XOR result bits of In (5) and In (4), and temp (3) contains the XOR result bits of In (4) and In (3). 2) contains XOR result bits of In (3) and In (2), temp (1) contains XOR result bits of In (2) and In (1), and temp (0) contains In (1) bits. ) And the value of the mask assigned after the XOR operation bit of In (0) is entered. 상기 판단 단계에서 마스크의 값이 하이와 로우 중 임의의 값이면, 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)의 값이 할당되도록 하며,In the determining step, if the value of the mask is any of high and low, the most significant bit temp (6) of the temp value becomes the most significant bit Out (7) of the output value, and the next output value Out (6) is temp (5). Output value Out (5) becomes temp (4), then output value Out (4) becomes temp (3), and then output value Out (3) becomes temp (2). Then the output value Out (2) becomes temp (1), then the output value Out (1) becomes temp (0), and the last output value Out (0) is assigned the value of In (0). To ensure that 상기 판단 단계에서 마스크의 값이 하이와 로우 중 다른 임의의 값이면, 출력의 상위 세 비트 중 최상위 비트 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)의 반전된 값이 들어가도록 하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.If the mask value is any other value between high and low in the determining step, temp (6) and temp (5) are included in the most significant bits Out (7), Out (6) and Out (5) of the upper three bits of the output. , the value of temp (4) is entered in turn, and then the values of temp (3) and temp (2) are inverted into Out (4) and Out (3), respectively. A value is entered, the value of temp (0) is inverted into Out (1), and finally the inverted value of In (0) is entered into Out (0). 제 9 항에 있어서,The method of claim 9, 상기 제4 곱셈기는 제2 다중화기로부터 8비트 값(23:16에 대응하는 7:0)이 제공될 경우, 상기 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된 후, 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 연산 결과 비트가 들어간 다음에 상기 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단하며,When the fourth multiplier is provided with an 8-bit value (7: 0 corresponding to 23:16) from the second multiplexer, the upper 3 bit values (In (7: 5)) of the provided input values are masked. After being assigned a value of), the result bits of the XOR operation of In (7), In (6), and In (4) are entered into temp (6), which is the most significant bit of temp, and In (6) and XOR operation result bit of In (5), In (3) is entered, temp (4) contains XOR operation result bit of In (5), In (4), In (2), and temp (3) contains In XOR operation result bits of (4), In (3), In (1) are entered, and temp (2) contains XOR operation result bits of In (3), In (2), In (0), and temp ( 1) contains the XOR operation result bits of In (2) and In (1), and temp (0) contains the XOR operation result bits of In (1) and In (0), and then the assigned mask is 000, Determining which of the eight values of 001, 010, 011, 100, 101, 110, and 111, 상기 판단 단계에서 할당된 마스크가 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)의 값이 할당되도록 하며,If the mask allocated in the determining step has a value of 000, temp (6), which is the most significant bit of the temp value, becomes the most significant bit Out (7) of the output value, and the next output value Out (6) is temp (5). Output value Out (5) becomes temp (4), output value Out (4) becomes temp (3), output value Out (3) becomes temp (2), and output value Out (2) ) Becomes temp (1), the output value Out (1) becomes temp (0), and the output value Out (0) assigns the value of In (0), 상기 판단 단계에서 할당된 마스크가 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)이 반전되어 들어가도록 하며,If the mask allocated in the determining step has a value of 001, the upper three bits of the output Out (7), Out (6), and Out (5) include temp (6), temp (5), and temp (4). The values are entered in order, the values of temp (3) and temp (2) are inverted into Out (4) and Out (3), respectively, and the values of temp (1) are entered into Out (2), and Out (1). ), Temp (0) is inverted, and finally Out (0) is In (0) inverted. 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하며,If the mask allocated in the determination step has a value of 010, the values of temp (6) and temp (5) are sequentially entered into the upper two bits Out (7), Out (6) of the output, and Out (5). In and Out (4), the values of temp (4) and temp (3) are inverted, respectively, Out (3) contains the value of temp (2), and in Out (2) and Out (1), temp (1). ) And temp (0) are inverted respectively, and In (0) is set to In (0). 상기 판단 단계에서 할당된 마스크가 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)의 값이 반전되어 들어가도록 하며,If the mask allocated in the determination step has a value of 011, the values of temp (6) and temp (5) are sequentially entered into the upper two bits Out (7), Out (6) of the output, and Out (5). In temp (4), the value of temp (4) is inverted. In Out (4), temp (3) is entered. In Out (3) and Out (2), the values of temp (2) and temp (1) are inverted. In Out (1), the value of temp (0) enters, and Out (0) enters the value of In (0) inverted. 상기 판단 단계에서 할당된 마스크가 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)의 값이 반전되어 들어가도록 하며,If the mask allocated in the determining step has a value of 100, the value of temp (6) is included in the most significant bit Out (7) of the output, and temp () is contained in Out (6), Out (5), and Out (4). 5), temp (4) and temp (3) are inverted, respectively, temp (2) enters Out (3), and temp (1) and temp (0) of Out (2) and Out (1). The value is inverted and in Out (0), the value of In (0) is inverted. 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하며,If the mask assigned in the determining step has a value of 101, the value of temp (6) is included in the most significant bit Out (7) of the output, and temp (5) and temp (are contained in Out (6) and Out (5). The value of 4) is inverted, and the value of temp (3) is entered in Out (4), and the value of temp (2) and temp (1) is inverted in Out (3) and Out (2), Out (1) contains the value of temp (0), and Out (0) contains the value of in (0). 상기 판단 단계에서 할당된 마스크가 110의 값을 갖는다면, 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6)에는 temp(5)가 반전되어 들어가며, Out(5:1)의 다섯 비트에는 temp(4:0)의 다섯 비트가 차례대로 들어가며, Out(0)에는 In(0)의 값이 들어가도록 하며,If the mask assigned in the determination step has a value of 110, the value of temp (6) is entered in the most significant bit Out (7) of the output, and temp (5) is inverted in Out (6), and Out (5) is entered. The five bits of: 1) contain the five bits of temp (4: 0) in turn, and the Out (0) contains the value of In (0). 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.If the mask allocated in the determination step has a value of 111, the value of temp (6) is entered in the most significant bit Out (7) of the output, and the value of temp (5) is inverted in Out (6), and Out (5) enters temp (4), and in Out (4) and Out (3), temp (3) and temp (2) are inverted, respectively, and Out (2) enters temp (1). 1) The value of temp (0) is inverted and the value of In (0) is entered in Out (0). 제 9 항에 있어서,The method of claim 9, 상기 제5 곱셈기는 제3 다중화기로부터 8비트 값(15:8에 대응하는 7:0)이 제공될 경우, 상기 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된 후, 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 연산 결과 비트가 들어간 다음에 상기 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단하며,When the fifth multiplier is provided with an 8-bit value (7: 0 corresponding to 15: 8) from the third multiplexer, the upper 3 bit values In (7: 5) of the provided input values are masked. After being assigned a value of), the result bits of the XOR operation of In (7), In (5), and In (4) enter temp (5), the most significant bit of temp, and In (6) and XOR operation result bit of In (4), In (3) is entered, temp (3) contains XOR operation result bit of In (5), In (3), In (2), and temp (2) contains In XOR operation result bits of (4), In (2), In (1) are entered, and temp (1) contains XOR operation result bits of In (3), In (1), In (0), and temp ( 0) is the result of the XOR operation bit of In (2) and In (0), and then the assigned mask has any of eight values of 000, 001, 010, 011, 100, 101, 110, and 111. Judging 상기 판단 단계에서 할당된 마스크가 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)의 값이 할당되는 것을 특징으로 하며,If the mask assigned in the judging step has a value of 000, temp (5), which is the most significant bit of the temp value, becomes the most significant bit Out (7) of the output value, and the next output value Out (6) is temp (4). Output value Out (5) becomes temp (3), output value Out (4) becomes temp (2), output value Out (3) becomes temp (1), and output value Out (2) ) Becomes temp (0), the output value Out (1) becomes In (1), and the output value Out (0) is assigned a value of In (0), 상기 판단 단계에서 할당된 마스크가 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)의 값이 반전되어 들어가도록 하며,If the mask allocated in the determining step has a value of 001, the upper three bits of the output Out (7), Out (6), and Out (5) include temp (5), temp (4), and temp (3). The values are entered in order, the values of temp (2) and temp (1) are inverted into Out (4) and Out (3), respectively, and the values of temp (0) are entered into Out (2) and Out (1). ), In (1) is inverted and finally Out (0) is In (0) inverted. 상기 판단 단계에서 할당된 마스크가 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)의 값이 반전되어 들어가도록 하며,If the mask assigned in the determination step has a value of 010, the values of temp (5) and temp (4) are sequentially entered into the upper two bits Out (7), Out (6) of the output, and Out (5). In temp (3), the value of temp (3) is inverted. In Out (4), temp (2) is entered. In Out (3) and Out (2), the values of temp (1) and temp (0) are inverted, respectively. Out (1) contains In (1), and finally Out (0) has In (0) inverted. 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하며,If the mask assigned in the determination step has a value of 011, the values of temp (5) and temp (4) are sequentially entered into the upper two bits Out (7), Out (6) of the output, and Out (5). In and Out (4), the values of temp (3) and temp (2) are inverted, Out (3) contains the value of temp (1), and Out (2) inverts temp (1), In Out (1), In (1) is inverted.In Out (0), In (0) is inverted. 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하며,If the mask assigned in the determining step has a value of 100, the value of temp (5) is entered in the most significant bit Out (7) of the output, and temp (4) is inverted in Out (6), and Out (5) is entered. ) Contains the value of temp (3), the values of temp (3) and temp (1) are inverted into Out (4) and Out (3), and the value of temp (0) into Out (2). In Out (1), In (1) is inverted and Out (0) is In (0). 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하며,If the mask assigned in the determining step has a value of 101, the value of temp (5) is entered in the most significant bit Out (7) of the output, temp (4) is inverted in Out (6), and Out (5) is entered. Four bits of temp (3: 0) are entered into each of the four bits of: 2, In (1) is inverted into Out (1), and finally In (0) into In (0). Is going to go in, 상기 판단 단계에서 할당된 마스크가 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)의 값이 반전되어 들어가도록 하며,If the mask allocated in the determination step has a value of 110, the most significant bit of the output, the value of temp (5) is included in Out (7), and the value of temp (5) is contained in Out (6), Out (5), and Out (4). (4), temp (3), and temp (2) are inverted, respectively, temp (1) is entered in Out (3), and temp (0) is inverted in Out (2), and Out (1) is inverted. ) And Out (0) are inverted into In (1) and In (0). 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.If the mask allocated in the determination step has a value of 111, the most significant bit of the output, the value of temp (5) is entered in Out (7), and the temp (4) and temp in Out (6) and Out (5). (3) is inverted, respectively, and temp (2) enters Out (4), temp (1) and temp (0) inverts in Out (3) and Out (2), A polynomial multiplication method for block ciphers, wherein Out (0) contains In and In. 제 9 항에 있어서,The method of claim 9, 상기 제6 곱셈기는 제4 다중화기로부터 8비트 값(7:0)이 제공될 경우, 상기 제공된 입력 값 중 상위 3비트 값(In(7:5))이 마스크(mask)의 값으로 할당된 후, 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 연산 결과 비트가 들어간 다음에 상기 할당된 마스크가 000, 001, 010, 011, 100, 101, 110, 111의 8개 값 중 어떤 값을 갖는지를 판단하며,When the sixth multiplier is provided with an 8-bit value (7: 0) from the fourth multiplexer, an upper three-bit value (In (7: 5)) of the provided input values is assigned as a mask value. After that, the XOR operation result bits of In (7) and In (4) enter temp (4), the most significant bit of temp, and the XOR operation result bits of In (6) and In (3) enter temp (3). , temp (2) contains XOR result bits of In (5) and In (2), temp (1) contains XOR result bits of In (4) and In (1), and temp (0) contains After the XOR operation bit of In (3) and In (0) is entered, it is determined whether the assigned mask has eight values of 000, 001, 010, 011, 100, 101, 110, and 111. , 상기 판단 단계에서 할당된 마스크가 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)의 값이 할당되도록 하며,If the mask assigned in the determining step has a value of 000, temp (4), which is the most significant bit of the temp value, becomes the most significant bit Out (7) of the output value, and the next output value Out (6) is temp (3). Output value Out (5) becomes temp (2), output value Out (4) becomes temp (1), output value Out (3) becomes temp (0), and output value Out (2) ) Becomes In (2), the output value Out (1) becomes In (1), and the output value Out (0) assigns the value of In (0), 상기 판단 단계에서 할당된 마스크가 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)의 값이 반전되어 들어가도록 하며,If the mask allocated in the determination step has a value of 001, the upper three bits of the output Out (7), Out (6), and Out (5) include temp (4), temp (3), and temp (2). The values are entered in order, and the values of temp (1) and temp (0) are inverted into Out (4) and Out (3), respectively, and the value of In (2) is entered into Out (2) and Out (1). ) And Out (0) are inverted into In (1) and In (0). 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하며,If the mask allocated in the determination step has a value of 010, the values of temp (4) and temp (3) are sequentially entered into the upper two bits Out (7) and Out (6) of the output, and Out (5). In and Out (4), the values of temp (2) and temp (1) are inverted, respectively, Out (3) contains the value of temp (0), and Out (2) and Out (1) contain In (2). ) And In (1) are inverted respectively. Finally, Out (0) has In (0). 상기 판단 단계에서 할당된 마스크가 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)의 값이 반전되어 들어가도록 하며,If the mask allocated in the determining step has a value of 011, the values of temp (4) and temp (3) are sequentially entered into the upper two bits Out (7), Out (6) of the output, and Out (5). In temp (2), the value of temp (2) is inverted. In Out (4), temp (1) is inverted. In Out (3) and Out (2), the values of temp (0) and In (2) are inverted. , In (1) enters In (1), and Out (0) enters In (0) inverted. 상기 판단 단계에서 할당된 마스크가 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)의 값이 들어가도록 하며,If the mask assigned in the determining step has a value of 100, the value of temp (6) is entered in the most significant bit Out (7) of the output, and temp (3) and temp (are included in Out (6) and Out (5). 2) is inverted respectively, and temp (1) enters Out (4), and temp (0) and In (2) values inverted into Out (3) and Out (2), respectively. ) And Out (0) contain In (1) and In (0). 상기 판단 단계에서 할당된 마스크가 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)의 값이 반전되어 들어가도록 하며,If the mask assigned in the determination step has a value of 101, the value of temp (4) is included in the most significant bit Out (7) of the output, and temp () is contained in Out (6), Out (5), and Out (4). 3), temp (2), and temp (1) are inverted, respectively, temp (0) enters Out (3), In (2) in Out (2), Out (1), and Out (0). ), In (1) and In (0) are reversed. 상기 판단 단계에서 할당된 마스크가 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)가 들어가도록 하며,If the mask allocated in the determining step has a value of 110, the value of temp (4) is entered in the most significant bit Out (7) of the output, and temp (3) is inverted in Out (6), and Out (5) is entered. ) Contains temp (2), Out (4) and Out (3) contain the inverted values of temp (1) and temp (0), In (2) contains In (2), and Out (1). In (1) is inverted into), and finally In (0) is entered into In (0). 상기 판단 단계에서 할당된 마스크가 111의 값을 갖는다면 출력의 최상위 비트 Out(7)에는 temp(6)의 값이 들어가고, Out(6)에는 temp(3)의 값이 반전되어 들어가며, Out(5:1)의 5 비트에는 temp(2:0)와 In(2), In(1)이 차례로 들어가며, 마지막으로 Out(0)에는 In(0)의 값이 반전되어 들어가도록 하는 것을 특징으로 하는 블록 암호용 다항식 곱셈방법.If the mask assigned in the determination step has a value of 111, the value of temp (6) is entered in the most significant bit Out (7) of the output, and the value of temp (3) is inverted in Out (6), and Out ( In the 5 bits of 5: 1), temp (2: 0), In (2), and In (1) are sequentially entered, and finally, Out (0) is inverted into In (0). Polynomial multiplication method for block ciphers.
KR10-2002-0075193A 2002-11-29 2002-11-29 Apparatus and method for polynomial multiply of block cipher KR100498736B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0075193A KR100498736B1 (en) 2002-11-29 2002-11-29 Apparatus and method for polynomial multiply of block cipher

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0075193A KR100498736B1 (en) 2002-11-29 2002-11-29 Apparatus and method for polynomial multiply of block cipher

Publications (2)

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

Family

ID=37342550

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0075193A KR100498736B1 (en) 2002-11-29 2002-11-29 Apparatus and method for polynomial multiply of block cipher

Country Status (1)

Country Link
KR (1) KR100498736B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100788902B1 (en) * 2006-12-06 2007-12-27 한국전자통신연구원 Mixcolum block device and method of multiplication calculation thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100788902B1 (en) * 2006-12-06 2007-12-27 한국전자통신연구원 Mixcolum block device and method of multiplication calculation thereof

Also Published As

Publication number Publication date
KR100498736B1 (en) 2005-07-01

Similar Documents

Publication Publication Date Title
KR100610367B1 (en) The multiplication method and apparatus for preventing in Galois field, the apparatus for inversion in Galois field and the apparatus for AES byte substitution operation
US8411853B2 (en) Alternate galois field advanced encryption standard round
KR100377176B1 (en) Encryption device using data encryption standard algorithm
KR20050053379A (en) Apparatus and method for performing AES Rijndael Algorithm
CN112422272B (en) AES encryption method and circuit for preventing power consumption attack
JPH0222693A (en) Dynamic feedback scramble art keystream generator
US20160170711A1 (en) Input-dependent random number generation using memory arrays
JP2950485B2 (en) Stream cipher processor
JP2005513541A (en) Programmable data encryption engine for AES algorithm
KR100498736B1 (en) Apparatus and method for polynomial multiply of block cipher
JP3547474B2 (en) Cryptographic operation circuit
EP3286869B1 (en) High-speed aes with transformed keys
KR20020087331A (en) AES Rijndael Encryption and Decryption Circuit with Subround-Level Pipeline Scheme
KR100350207B1 (en) Method for cryptographic conversion of l-bit input blocks of digital data into l-bit output blocks
JPH0916379A (en) Communication method and equipment therefor
KR20030004925A (en) RSA cipher device using modular exponentiation algorithm
RU2246129C2 (en) Random numbers generation method
KR20020007113A (en) A circuit of seed code &amp; multiple code using a on-line dictionary calculating system for the round key
JPH1152850A (en) Device and method for cipher conversion
KR100316025B1 (en) Encryption and decryption device using data encryption standard algorithm
KR100377173B1 (en) Encryption device using data encryption standard algorithm
RU2024209C1 (en) Binary information coding device
JPS5843743B2 (en) Encryption method
JPH0629969A (en) Random number generating circuit using nonlinear circuit
JP2006502437A (en) Encryption circuit apparatus and method

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