KR100406724B1 - A multiplicative inverse operator for modulo n and data encryption apparatus including the same operator - Google Patents

A multiplicative inverse operator for modulo n and data encryption apparatus including the same operator Download PDF

Info

Publication number
KR100406724B1
KR100406724B1 KR10-2001-0025595A KR20010025595A KR100406724B1 KR 100406724 B1 KR100406724 B1 KR 100406724B1 KR 20010025595 A KR20010025595 A KR 20010025595A KR 100406724 B1 KR100406724 B1 KR 100406724B1
Authority
KR
South Korea
Prior art keywords
modular
output
outputting
multipliers
bit
Prior art date
Application number
KR10-2001-0025595A
Other languages
Korean (ko)
Other versions
KR20020086006A (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-2001-0025595A priority Critical patent/KR100406724B1/en
Publication of KR20020086006A publication Critical patent/KR20020086006A/en
Application granted granted Critical
Publication of KR100406724B1 publication Critical patent/KR100406724B1/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/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI

Abstract

본 발명은 모듈러에 대한 곱셈의 역원 연산기에 관한 것으로, n비트 2진 데이터 A를 최초 입력으로 하는 3개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 모듈러로 나눈 나머지를 출력하는 제1군의 모듈러 승산기들과; 상기 A와 상기 제1군의 모듈러 승산기들중 첫번째 승산기의 출력을 승산한후 이를 모듈러로 나눈 나머지를 출력하는 제1모듈러 승산기와; 제1모듈러 승산기의 출력과 제1군의 모듈러 승산기들중 두번째 승산기의 출력을 승산한후 이를 모듈러로 나눈 나머지를 출력하는 제2모듈러 승산기와; 제1군의 모듈러 승산기들의 최종 출력과 제2모듈러 승산기의 출력을 승산한후 이를 모듈러로 나눈 나머지를 출력하는 제3모듈러 승산기와; 제3모듈러 승산기의 출력을 최초 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 모듈러로 나눈 나머지를 출력하는 제2군의 모듈러 승산기들과; 제2군의 모듈러 승산기들의 최종 출력을 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 모듈러로 나눈 나머지를 출력하는 제3군의 모듈러 승산기들과; 제3군의 모듈러 승산기들의 최종 출력을 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 모듈러로 나눈 나머지를 출력하는 제4군의 모듈러 승산기들과; 제3모듈러 승산기의 출력과 제2군의 모듈러 승산기들 최종 출력을 승산한후 이를 모듈러로 나눈 나머지를 출력하는 제4모듈러 승산기와; 제3군 및 제4군의 모듈러 승산기들 최종 출력을 승산한후 이를 모듈러로 나눈 나머지를 출력하는 제5모듈러 승산기와; 제4 및 제5모듈러 승산기의 출력을 승산한후 이를 모듈러로 나눈 나머지를 모듈러에 대한 곱셈의 역원으로서 출력하는 제6모듈러 승산기로 구성함을 특징으로 한다.The present invention is modular An inverse operator for multiplying by three modular multipliers with n-bit binary data A as the first input, each connected in series to perform a square of the input value A first group of modular multipliers for outputting the remainder divided by; Multiplies the output of the first multiplier among the A and the first group of modular multipliers and then modulates it A first modular multiplier for outputting the remainder divided by; Multiply the output of the first modular multiplier by the output of the second multiplier of the first group of modular multipliers, and then A second modular multiplier for outputting the remainder divided by; Multiply the final output of the first group of modular multipliers by the output of the second modular multiplier A third modular multiplier for outputting the remainder divided by; Four modular multipliers with the output of the third modular multiplier as the first input are connected in series to perform squares of the input values, respectively. A second group of modular multipliers for outputting the remainder divided by; Four modular multipliers that take the final outputs of the second group of modular multipliers as inputs are connected in series to perform squares of the input values, respectively, and then modular A third group of modular multipliers for outputting the remainder divided by; Four modular multipliers that take the final output of the third group of modular multipliers as inputs are connected in series to perform squares of the input values, respectively. A fourth group of modular multipliers for outputting the remainder divided by; After multiplying the output of the third modular multiplier and the final output of the second group of modular multipliers, it is modular. A fourth modular multiplier for outputting the remainder divided by; Modular multipliers of Groups 3 and 4 multiply the final output and then modular A fifth modular multiplier for outputting a remainder divided by; Multiply the outputs of the fourth and fifth modular multipliers and then modularize them Divide the remainder by And a sixth modular multiplier for outputting the inverse of the multiplication.

Description

모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는 데이터 암호화 장치{A MULTIPLICATIVE INVERSE OPERATOR FOR MODULO N AND DATA ENCRYPTION APPARATUS INCLUDING THE SAME OPERATOR}A MULTIPLICATIVE INVERSE OPERATOR FOR MODULO N AND DATA ENCRYPTION APPARATUS INCLUDING THE SAME OPERATOR}

본 발명은 데이터 암호화 시스템에 관한 것으로, 특히 IDEA(International Data Encryption Algorithm)에서 가장 많은 계산량을 요구하는 모듈러에 대한 곱셈의 역원 연산기와 그를 포함하는 데이터 암호화 장치에 관한 것이다.TECHNICAL FIELD The present invention relates to a data encryption system, and in particular, a modular that requires the largest amount of computation in the International Data Encryption Algorithm (IDEA). And a data encryption device comprising the inverse operator of the multiplication.

정보통신 기술의 급속한 발전과 웹을 기반으로 하는 인터넷의 급성장으로 인해 정보화 시대가 도래하고 있다. 이는 앞으로 정보가 재화의 가치로 인정받고 국가 경제의 성쇠를 좌우할 중요한 요소가 됨을 의미한다. 즉 21세기에는 국가나 기업 그리고 개인에게 있어서 정보가 가장 중요한 요소로 인식될 것이다. 그러나 최근에는 비 허가된 침입자에 의한 정보의 불법적인 사용과 복제 사례나 기업의 중요한 정보의 유출과 변경 그리고 훼손하는 사례나 통신망의 불법적인 침입, 바이러스를 유포하는 등과 같은 정보화의 역기능 현상들이 자주 보고 되고 있으며, 실제로 그에 따른 피해 규모도 심각한 수준에 있는 실정이다. 이러한 역기능을 해결하기 위해 정보보안에 관한 연구가 많이 되어 왔고 현재도 진행중인데, 비 허가된 침입자로부터 기업이나 개인의 중요한 자료를 보호하고 컴퓨터 통신망을 통해 전송되는 자료의 불법적인 도청이나 내용 변조를 방지하기 위해 암호 기술이 부각되고 있다. 암호 기술은 허가된 사람만이 정보를 이용할 수 있도록 하고, 비 허가된 사람에게는 아무런 정보도 노출시키지 않도록 하는 기술이다.The information age is coming due to the rapid development of information and communication technology and the rapid growth of the Internet based on the web. This means that in the future, information will be recognized as the value of the goods and become an important factor in the economic economy. In other words, in the 21st century, information will be recognized as the most important factor for the state, corporation and individual. Recently, however, there have been frequent reports of information dysfunctions such as illegal use and duplication of information by unauthorized intruders, leakage and alteration and damage of important information of corporations, illegal invasion of communication networks, and distribution of viruses. In fact, the damages are also serious. In order to solve these dysfunctions, many researches have been conducted on information security and are currently in progress. It protects important data of corporations and individuals from unauthorized intruders and prevents illegal eavesdropping or alteration of contents transmitted through computer communication network. Cryptography technology is emerging to do this. Cryptography is a technique that makes information available only to authorized persons and does not expose any information to unauthorized persons.

암호 기술을 위해서 암호 알고리즘이 사용되는데, 암호 알고리즘은 평문을 암호문으로 바꾸어 주는 암호화 과정과, 암호문을 평문으로 바꾸어 주는 복호화 과정으로 이루어져 있다. 암호 방법에는 키의 형태에 따라 암호화/복호화 키가 같은 대칭형 암호 방식과, 암호화/복호화 키가 서로 다른 비대칭형 암호 방식으로 크게 구분된다. 한편 대칭형 암호 방식은 수행속도가 빠르나 인증성이 결여되며, 비대칭형 암호 방식은 인증성은 있으나 수행속도가 느린 단점이 있다. 대칭형 암호화 방식의 알고리즘으로는 DES(Data Encryption Standard), IDEA(International Data Encryption Algorithm) 등이 있고, 비대칭형 암호화 방식으로는 RSA(Rivest-Shamir-Adleman), ECC(Elliptic Curve Cryptosystem) 등이 있다.An encryption algorithm is used for the encryption technique, which consists of an encryption process for converting a plain text into a cipher text and a decryption process for converting a cipher text into plain text. Encryption methods are largely classified into symmetric encryption methods having the same encryption / decryption key and asymmetric encryption methods having different encryption / decryption keys according to the type of key. On the other hand, symmetric cryptography is fast, but lacks authentication, while asymmetric cryptography is authentic but slow. Symmetric cryptographic algorithms include Data Encryption Standard (DES), International Data Encryption Algorithm (IDEA), and asymmetric cryptographic methods include Rist-Shamir-Adleman (RSA) and Elliptic Curve Cryptosystem (ECC).

DES는 안전한 정보의 전송 및 보관을 위해 IBM의 Water Tuchman과 Carl Meyer에 의해 제안되었고, 1977년 1월 표준화되어 현재까지 널리 사용되고 있다. 그러나 내부 구조가 치환과 전치로 이루어져 있어 brute-force 공격에 대한 잠재적인 취약성으로 인하여 새로운 암호 알고리즘이 요구되었다. 1990년 이후에는 DES를 대체하기 위해 여러 대칭적 암호 알고리즘이 제안되었다. 그 중 Xuejia Lai와 James Massey에 의해 제안되었고 대수적 구조가 서로 다른 세 가지 연산을 사용하여 암호학적 강도를 증가시킨 IDEA가 가장 안전하다고 평가되고 있으며, 실제로 전자우편보안 프로그램 등에 사용되고 있다.DES was proposed by IBM's Water Tuchman and Carl Meyer for the safe transfer and storage of information, standardized in January 1977, and is still widely used. However, because the internal structure consists of substitutions and transpositions, a new cryptographic algorithm is required due to the potential vulnerability to brute-force attacks. Since 1990 several symmetric cryptographic algorithms have been proposed to replace DES. Among them, IDEA, which was proposed by Xuejia Lai and James Massey and increases the cryptographic strength by using three operations with different algebraic structures, is considered to be the safest, and is actually used for e-mail security programs.

기존에는 암호 알고리즘을 소프트웨어 방법으로 구현하였다. 그런데 특정 프로세서 상에서 구동되는 소프트웨어 방식은 복잡한 암호 알고리즘을 암호화/복호화하는데 필요한 시간이 상대적으로 길게 소요되고, 그로 인해 처리속도가 느려진다는 단점이 있다. 실제 암호 알고리즘은 컴퓨터 시스템이나 통신 시스템에 부가적으로 필요한 장치이므로 느린 처리속도는 결과적으로 시스템의 속도 지연을 발생시킬수 있다.In the past, cryptographic algorithms were implemented by software. However, the software method running on a specific processor has a relatively long time required for encrypting / decrypting a complex encryption algorithm, and thus, a processing speed is slowed. Since the actual encryption algorithm is additionally necessary for computer systems or communication systems, slower processing speeds may result in system delays.

따라서 고속의 컴퓨팅이나 고속 통신을 위해서는 고속 암호화가 필수적으로 해결되어야 한다. 즉, 소프트웨어 방식으로 구현되어 오던 기존의 암호 알고리즘을 전용 칩으로 제작하여 처리 속도를 향상시킬 필요가 있으며, 특히 IDEA에서 계산량이 가장 높은 연산인 모듈러에 대한 곱셈의 역원 연산이 고속으로 수행될 수 있도록 연산기를 설계하는 것이 가장 중요한 문제가 아닐 수 없다.Therefore, high speed encryption must be solved for high speed computing or high speed communication. In other words, it is necessary to improve the processing speed by making the existing cryptographic algorithm, which has been implemented by software method, into a dedicated chip. The most important problem is to design the operator so that the inverse operation of the multiplication for can be performed at high speed.

따라서 본 발명의 목적은 IDEA에서 계산량이 가장 높은 연산인 모듈러에 대한 곱셈의 역원 연산을 고속으로 수행할 수 있는 역원 역산기 및 그를 포함하는 데이터 암호화 장치를 제공함에 있다.Therefore, an object of the present invention is a modular operation that is the highest computational amount in IDEA An inverse inverter capable of performing inverse computation of multiplication for a fast and a data encryption apparatus including the same.

본 발명의 또 다른 목적은 기존의 암호 알고리즘을 고속으로 처리하여 결과적으로 정보보안 시스템의 성능을 향상시킬 수 있는 원칩화된 데이터 암호화 장치를 제공함에 있다.It is still another object of the present invention to provide a one-chip data encryption apparatus capable of processing an existing encryption algorithm at high speed and consequently improving the performance of an information security system.

본 발명의 또 다른 목적은 고속의 컴퓨팅이나 고속 통신을 위한 메인 프로세서와 연동할 수 있는 데이터 암호화 장치를 제공함에 있다.Still another object of the present invention is to provide a data encryption device capable of interworking with a main processor for high speed computing or high speed communication.

도 1은 IDEA 암호 알고리즘의 이론적 배경을 설명하기 위한 곱셈/덧셈 구조 예시도.1 is an exemplary multiplication / addition structure for explaining a theoretical background of an IDEA encryption algorithm.

도 2는 전체 IDEA 블록 다이어그램도.2 is a complete IDEA block diagram.

도 3은 IDEA의 반복 구조도.3 is a repeating structure diagram of IDEA.

도 4는 IDEA의 출력 변환 구조도.4 is an output conversion structure diagram of IDEA.

도 5는 IDEA 서브키 생성 예시도.5 illustrates an example of generating IDEA subkeys.

도 6은 IDEA의 암호화와 복호화를 설명하기 위한 예시도.6 is an exemplary diagram for explaining encryption and decryption of IDEA.

도 7은 본 발명의 바람직한 실시예에 따른 데이터 암호화 장치의 전체 스펙 예시도.7 is an exemplary view of the entire specification of a data encryption device according to a preferred embodiment of the present invention.

도 8은 본 발명의 바람직한 실시예에 따른 데이터 암호화 장치의 상세 구성도.8 is a detailed configuration diagram of a data encryption device according to a preferred embodiment of the present invention.

도 9는 본 발명의 바람직한 실시예에 따른 모듈러에 대한 곱셈의 역원 연산기 구성도.9 is modular in accordance with a preferred embodiment of the present invention. Inverse operator schematic for multiplication.

상기 목적을 달성하기 위한 본 발명의 일 양상에 따르면, 본 발명의 모듈러에 대한 곱셈의 역원 연산기는;According to an aspect of the present invention for achieving the above object, the modular of the present invention The inverse operator of multiplication for;

n비트 2진 데이터 A를 최초 입력으로 하는 3개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 모듈러로 나눈 나머지를 출력하는 제1군의 모듈러 승산기들과;Three modular multipliers with n-bit binary data A as the first input are connected in series to perform squares of the input values A first group of modular multipliers for outputting the remainder divided by;

n비트 2진 데이터 A와 상기 제1군의 모듈러 승산기들중 첫번째 승산기의 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제1모듈러 승산기와;multiplies the output of the first multiplier of the first group of modular multipliers by the n-bit binary data A and then modulates the output; A first modular multiplier for outputting the remainder divided by;

상기 제1모듈러 승산기의 출력과 상기 제1군의 모듈러 승산기들중 두번째 승산기의 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제2모듈러 승산기와;Multiplying the output of the first modular multiplier by the output of the second multiplier of the first group of modular multipliers, and A second modular multiplier for outputting the remainder divided by;

상기 제1군의 모듈러 승산기들의 최종 출력과 상기 제2모듈러 승산기의 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제3모듈러 승산기와;Multiplying the final output of the first group of modular multipliers and the output of the second modular multiplier by the modular A third modular multiplier for outputting the remainder divided by;

상기 제3모듈러 승산기의 출력을 최초 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 상기 모듈러로 나눈 나머지를 출력하는 제2군의 모듈러 승산기들과;Four modular multipliers having the output of the third modular multiplier as the first input are connected in series to perform squares of input values, respectively, and then the modular multipliers are respectively used. A second group of modular multipliers for outputting the remainder divided by;

상기 제2군의 모듈러 승산기들의 최종 출력을 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 상기 모듈러로 나눈 나머지를 출력하는 제3군의 모듈러 승산기들과;Four modular multipliers having the final outputs of the second group of modular multipliers as inputs are connected in series to perform squares of input values, respectively, and then the modular multipliers are respectively used. A third group of modular multipliers for outputting the remainder divided by;

상기 제3군의 모듈러 승산기들의 최종 출력을 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 상기 모듈러로 나눈 나머지를 출력하는 제4군의 모듈러 승산기들과;Four modular multipliers that take the final output of the third group of modular multipliers as inputs are connected in series to perform squares of input values, respectively, and then the modular multipliers A fourth group of modular multipliers for outputting the remainder divided by;

상기 제3모듈러 승산기의 출력과 제2군의 모듈러 승산기들 최종 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제4모듈러 승산기와;Multiplying the output of the third modular multiplier by the final output of the second group of modular multipliers and then modulating the modular output; A fourth modular multiplier for outputting the remainder divided by;

상기 제3군 및 제4군의 모듈러 승산기들 최종 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제5모듈러 승산기와;Multiply the final output of the modular multipliers of the third and fourth groups and then multiply the modular output; A fifth modular multiplier for outputting a remainder divided by;

상기 제4 및 제5모듈러 승산기의 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 모듈러에 대한 곱셈의 역원으로서 출력하는 제6모듈러 승산기로 구성함을 특징으로 한다.Multiply the outputs of the fourth and fifth modular multipliers and then multiply them; Divide the remainder by And a sixth modular multiplier for outputting the inverse of the multiplication.

또한 본 발명의 일 양상에 따른 데이터 암호화 장치는;In addition, the data encryption apparatus according to an aspect of the present invention;

n비트의 평문을 m 비트 단위로 입력받기 위한 데이터 입력부와;a data input unit for receiving n-bit plain text in m-bit units;

k비트의 키(key) 비트를 m 비트 단위로 나누어 입력받기 위한 키 입력부와;a key input unit configured to receive a k-bit key bit by m-bit unit;

상기 k비트의 키 비트로부터 매 라운드마다 필요한 서브키를 생성하기 위해 필요한 제어신호와, n비트의 평문을 암호문으로 변환하기 위해 필요한 제어신호를 발생하여 출력하는 제어부와;A control unit for generating and outputting a control signal necessary for generating a subkey required for each round from the k-bit key bit and a control signal for converting n-bit plain text into a cipher text;

상기 데이터 입력부로부터 출력되는 n비트의 평문과 각 라운드의 출력값중 하나를 선택하여 l비트의 서브키를 이용하여 암호문으로 암호화하여 출력하는 암호화 처리부와;An encryption processing unit for selecting one of n-bit plain text output from the data input unit and an output value of each round, and encrypting the encrypted text using an l-bit subkey to output the encrypted text;

청구항 1에 기재된 모듈러에 대한 곱셈의 역원 연산기를 적어도 포함하며 상기 키 입력부로부터 출력되는 k비트의 키 데이터로부터 매 라운드마다 필요한 서브키를 생성하여 출력하는 서브키 생성부와;Modular according to claim 1 A subkey generator for generating a subkey necessary for each round from k-bit key data output from the key input unit, the subkey generator including at least a multiplication inverse operator

상기 암호화 처리부의 출력 데이터인 암호문을 출력하기 위한 데이터 출력부;를 포함함을 특징으로 한다.And a data output unit for outputting an encrypted text which is output data of the encryption processing unit.

이하에서는 첨부된 도면을 참조하여 기술되는 바람직한 실시예를 통하여 본 발명을 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 기술하기로 한다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art can easily understand and reproduce.

본 발명의 구성 및 동작을 설명하기에 앞서 참고적으로 IDEA 암호 알고리즘의 이론적 배경을 설명하기로 한다.Before describing the configuration and operation of the present invention, a theoretical background of the IDEA encryption algorithm will be described.

우선 IDEA는 64 비트 블록에서 데이터를 암호화하기 위해 128비트 키를 사용하는 블록암호이다. IDEA의 다음 특성들은 암호학적 강도와 관계된다.First, IDEA is a block cipher that uses a 128-bit key to encrypt data in a 64-bit block. The following characteristics of IDEA relate to cryptographic strength.

→ 블록 길이:→ block length:

블록 길이는 통계적 분석을 막을 수 있을 만큼 길어야 하는데, 그 이유는 어떤 블록들이 다른 블록들에 비해 더 자주 나오는 그런 유리함을 방지하기 위해서이다. 반면에 효율적 암호 함수를 구현할 때의 복잡도는 블록 크기가 누승으로 증가되는 것으로 알려져 있다. 일반적으로 64비트로 블록 크기를 사용하는 것은 충분히 강력하다고 인식된다.The block length should be long enough to prevent statistical analysis, to prevent such an advantage that some blocks appear more frequently than others. On the other hand, the complexity of implementing efficient cryptographic functions is known to increase block size by power. In general, using a block size of 64 bits is considered powerful enough.

→ 키의 길이:→ length of key:

키는 방대한 키 검색을 효율적으로 막을 만큼 충분히 길어야 한다. 128비트 길이라면, IDEA는 이 영역에서 향후에도 안전할 것으로 여겨진다.The key should be long enough to effectively prevent massive key retrieval. If it is 128 bits long, IDEA is considered safe in the future.

→ 혼돈(Confusion):→ Confusion:

암호문은 평문과 복잡하고 난해한 방법의 키에 의존해야 한다. 혼돈의 목적은 어떻게 암호문의 통계적 성질이 평문의 통계적 성질에 의존하는지에 대한 결정을 복잡하게 하는 것이다. IDEA는 후술되는 세 가지 서로 다른 연산(,▣)을 사용함으로서 이 목적을 달성한다. 이것은 기본적으로 XOR 연산과 작은 비선형 S박스에 의존하는 DES 방식과 대조적이다.Ciphertext must rely on plaintext and keys in complex and difficult ways. The purpose of chaos is to complicate decisions about how the statistical properties of ciphertext depend on the statistical properties of plaintext. IDEA provides three different operations (described below). ) To achieve this purpose. This is in contrast to the DES approach, which basically relies on XOR operations and small nonlinear Sboxes.

→ 확산(Diffusion):→ Diffusion:

각 평문 비트는 모든 암호문 비트에 영향을 끼쳐야 하고, 각 키 비트는 모든 암호문 비트에 영향을 주어야 한다. 하나의 평문 비트의 다수 암호문 비트로의 확산은 평문의 통계적 구조를 숨긴다. IDEA는 이런 관점에서 매우 효율적이라 할 수 있다.Each plaintext bit must affect all ciphertext bits, and each key bit must affect all ciphertext bits. The spread of one plaintext bit into multiple ciphertext bits hides the statistical structure of the plaintext. IDEA is very efficient in this respect.

IDEA에서 혼돈은 세 가지 다른 연산을 혼합함으로써 가능하다. 각 연산은 두 개의 16비트 입력에서 하나의 16비트 결과를 생성하기 위해 수행된다. 연산은 다음과 같다.In IDEA, chaos can be achieved by mixing three different operations. Each operation is performed to produce one 16-bit result from two 16-bit inputs. The operation is as follows.

→ 비트 대 비트로 XOR 시키고,으로 나타낸다.→ XOR bit by bit, Represented by

→ 16 비트 비 부호 정수로써 취급되는 입력과 출력에 대한 정수 모듈러(mod 65536)의 덧셈, 이 연산은 ▣로 나타낸다.→ integer modularity for inputs and outputs treated as 16-bit unsigned integers (mod 65536) Addition, this operation is represented by ▣.

→ 비 부호 16 비트 정수로 취급되는 입력과 출력에 대한 정수 모듈러(mod 65537)의 곱셈, 단 블록 비트가 모두 '0'일 때는으로 나타낸다. 이 연산은로 나타낸다.→ integer modularity for inputs and outputs treated as unsigned 16-bit integers multiplication of (mod 65537), except when the block bits are all '0' Represented by This operation Represented by

예를 들면, 00000000000000001000000000000000 = 1000000000000001 이다. 왜냐하면이기 때문이다. 하기 표 1(IDEA에서 사용된 함수)은 16비트를 사용하기 보다는 2비트에 대한 예로서, 세 가지 연산 동작에 대한 결과 값을 보인 것이다.For example, 0000000000000000 1000000000000000 = 1000000000000001 because Because it is. Table 1 (functions used in IDEA) is an example of two bits rather than using 16 bits, and shows the result values of three operation operations.

XX YY X▣YX▣ Y XYX Y XYX Y 0 000 00 0 000 00 0 000 00 1 011 01 0 000 00 0 000 00 1 011 01 1 011 01 0 000 00 1 011 01 0 000 00 2 102 10 2 102 10 3 113 11 2 102 10 0 000 00 3 113 11 3 113 11 2 102 10 3 113 11 1 011 01 0 000 00 1 011 01 0 000 00 1 011 01 1 011 01 1 011 01 2 102 10 1 011 01 0 000 00 1 011 01 2 102 10 3 113 11 2 102 10 3 113 11 1 011 01 3 113 11 0 000 00 3 113 11 2 102 10 2 102 10 0 000 00 2 102 10 3 113 11 2 102 10 2 102 10 1 011 01 3 113 11 2 102 10 3 113 11 2 102 10 2 102 10 0 000 00 0 000 00 0 000 00 2 102 10 3 113 11 1 011 01 1 011 01 1 011 01 3 113 11 0 000 00 3 113 11 2 102 10 3 113 11 3 113 11 1 011 01 0 000 00 3 113 11 2 102 10 3 113 11 2 102 10 1 011 01 0 000 00 1 011 01 3 113 11 3 113 11 2 102 10 0 000 00 0 000 00

그리고 이들 세 가지 연산의 조합에 있어서 결합법칙 및 분배법칙은 성립하지 않는다.And the combination law and the distribution law do not hold in the combination of these three operations.

조합에서 이와 같은 세 가지의 분리된 연산의 사용은 입력의 복잡한 변환을 위해 제공된다. 유일하게 XOR 함수에만 의존하는 DES와 같은 알고리즘을 사용하는 것보다 암호 해독을 더 어렵게 하기 위해서라 할 수 있다.The use of these three separate operations in combination provides for complex conversion of input. It's the only way to make decryption more difficult than using an algorithm like DES that only relies on XOR functions.

IDEA에서 확산은 도 1에 도시한 바와 같이 곱셈/덧셈(MA) 구조로 알려진 알고리즘의 기본적 빌딩 블록에 의해 제공된다. 이 구조는 입력으로서 평문으로부터 유추된 16비트 값과 키로부터 유추된 두 개의 6비트 서브키를 취하고, 두 개의 16비트 결과 값을 제공한다. 방대한 컴퓨터 검사는 첫 라운드의 각 결과가 서브키의모든 비트와 평문에서 유도된 입력의 모든 비트에 의존하는지를 결정한다. 이 특별한 구조는 매우 효율적인 확산을 제공하기 때문에 알고리즘에서 8번 반복된다. 또한 이 구조는 완전한 확산을 달성하기 위해서 요구되는 최소 수의 동작(4번)을 사용한다.[Lai, X., and Messay, J. "A Proposal for a New Block Encryption Standard." Proceedings, EUROCRYPT'90, 1990; published by Springer-Verlag.]Spread in IDEA is provided by the basic building blocks of an algorithm known as a multiply / add (MA) structure, as shown in FIG. This structure takes as input, a 16-bit value inferred from plain text and two 6-bit subkeys inferred from a key, and provides two 16-bit result values. Extensive computer inspection determines whether each result of the first round depends on every bit of the subkey and every bit of input derived from plaintext. This particular structure is repeated eight times in the algorithm because it provides very efficient spreading. The structure also uses the minimum number of operations (number 4) required to achieve full spreading. [Lai, X., and Messay, J. "A Proposal for a New Block Encryption Standard." Proceedings, EUROCRYPT '90, 1990; published by Springer-Verlag.]

한편 IDEA 암호 알고리즘을 하드웨어로 구현하기 위해서는 암호화와 복호화의 유사성이 있어야 하며 정규구조를 가져야 한다. 암호화와 복호화는 키를 사용하는 방법에서만 달라야 한다. 즉, 같은 장치가 암호화와 복호화 모두에 사용될 수 있어야 한다. IDEA는 이 요구사항을 만족하는 구조를 갖는다. 그리고 암호는 VLSI 구현을 용이하게 하기 위해서 정규적인 모듈 구조를 가져야만 한다. IDEA는 여러 시간에 걸쳐 반복되는 두 가지의 기본 모듈 빌딩 블록으로 구성되어 있기 때문이다.On the other hand, in order to implement IDEA cryptographic algorithm in hardware, there must be similarity between encryption and decryption, and it must have regular structure. Encryption and decryption should differ only in the way that keys are used. That is, the same device must be able to be used for both encryption and decryption. IDEA has a structure that meets this requirement. And the cipher must have a regular module structure to facilitate VLSI implementation. This is because IDEA consists of two basic module building blocks that repeat over time.

이하 IDEA 암호화에 대하여 설명하면, 우선 일반적인 IDEA의 전체 블록도가 도 2에 도시되어 있다. 다른 암호화 방식과 마찬가지로 암호화 함수에 암호화하고자 하는 두 개의 입력(평문과 키)이 들어간다. 이러한 경우에 평문은 64 비트이고, 키는 128비트이다. 도 2에서 좌측에 도시된 부분을 보면 IDEA 암호 알고리즘은 마지막 변환 함수까지 8개의 라운드 혹은 반복들로 구성되어 있다. 이 알고리즘은 입력으로 4개의 16비트 서브 블록들을 입력으로 받고 4개의 16비트 결과 블록을 생성한다. 최종 변환은 또한 4개의 16비트 블록들을 생성하는데, 이것들은 다시 64비트 암호문을 형성하기 위해 연결된다. 각 반복들은 전체 52개의 서브키에 대하여 6개의 16비트 서브키를 이용하는 반면, 최종 변환은 4개의 서브키를 사용한다. 도 2에서 우측에 도시된 부분은 이러한 52개의 서브키가 모두 초기 128비트 키로부터 생성됨을 보여 주고 있다.Hereinafter, IDEA encryption will be described. First, an entire block diagram of a general IDEA is shown in FIG. 2. As with other encryption methods, the encryption function has two inputs (plain and key) that you want to encrypt. In this case the plain text is 64 bits and the key is 128 bits. 2, the IDEA cryptographic algorithm consists of eight rounds or iterations to the last transform function. The algorithm takes four 16-bit subblocks as inputs and generates four 16-bit result blocks. The final transform also produces four 16-bit blocks, which in turn are concatenated to form a 64-bit ciphertext. Each iteration uses six 16-bit subkeys for a total of 52 subkeys, while the final transformation uses four subkeys. The part shown on the right in FIG. 2 shows that all of these 52 subkeys are generated from the initial 128-bit key.

도 3은 IDEA의 반복구조를 도시한 것으로, 도 2에 도시된 반복에 대한 알고리즘을 보다 자세히 설명하기 위해 도시한 것이다. 도 3은 도 2에서 첫 번째 반복을 나타낸 것이다. 결과로서 나타난 반복들은 같은 구조를 가지지만, 서브키와 평문에 유도된 입력들은 다르다. 반복은 덧셈과 곱셈 연산을 사용하여 네 개의 서브키를 가진 4개의 입력 서브 블록을 조합하는 변환부터 시작한다. 변환은 참조번호 10으로 표시된 직사각형내에서 집중된다. 이러한 변환에서 네 개의 출력 블록은 MA구조(20)에 입력되는 2개의 16비트 블록을 형성하기 위해 XOR 연산을 결합하여 사용하는데, 이는 참조번호 10으로 표시된 직사각형에서 보여진다. MA구조(20)는 또한 두 서브키를 입력으로 받고 두 개의 16비트 출력을 만들어 내기 위해 이러한 입력들과 결합한다.FIG. 3 illustrates a repetition structure of IDEA, and is illustrated to explain in more detail the algorithm for repetition illustrated in FIG. 2. 3 shows the first iteration in FIG. 2. The resulting iterations have the same structure, but the subkeys and inputs derived from the plain text are different. Iteration begins with a transformation that combines four input subblocks with four subkeys using addition and multiplication operations. The transformation is concentrated within the rectangle indicated by reference number 10. In this transformation four output blocks are used in combination with the XOR operation to form two 16-bit blocks input to the MA structure 20, which is shown in the rectangle indicated by reference numeral 10. The MA structure 20 also accepts two subkeys as inputs and combines these inputs to produce two 16-bit outputs.

최종적으로, 상위 변환으로부터의 4개의 출력 블록은 이 반복에 대한 4개의 출력 블록을 만들기 위해 XOR 연산을 사용한 MA구조(20)의 두 출력 블록과 결합된다. 두 번째와 세 번째 입력()에 의해 부분적으로 형성된 두 결과는 두 번째와 세 번째()의 출력을 위해 서로 교환되고 있음을 주의해야 한다. 이는 처리될 비트의 혼합을 증가시키고 알고리즘을 차분 암호 해독에 잘 견디도록 한다.Finally, the four output blocks from the higher transform are combined with the two output blocks of the MA structure 20 using the XOR operation to produce four output blocks for this iteration. Second and third inputs ( Wow The two results partially formed by) are the second and third ( Wow Note that they are interchanged with each other for output. This increases the mixing of bits to be processed and makes the algorithm well tolerant of differential decryption.

도 4는 도 2에 도시된 IDEA의 출력 변환 구조를 도시한 것으로 도 3에 도시된 IDEA의 반복 구조에 도시된 참조번호 10과 같은 구조를 가지며, 차이점은 두 번째, 세 번째 입력이 연산 장치들에 입력되어 처리되기 전에 교환된다는 것이다. 사실상 이것은 8번째 반복의 끝에서 교환을 하지 않는 결과이다. 이 추가적인 교환을 하는 이유는 복호화가 암호화와 같은 구조를 가지도록 하기 때문이다. 또한 각각의 처음 8개 단의 각각에 대한 6개의 서브키 입력과 비교해 볼 때, 이 9번째 단은 4개의 입력만을 요구한다.FIG. 4 shows the output conversion structure of IDEA shown in FIG. 2 and has the same structure as reference numeral 10 shown in the repetition structure of IDEA shown in FIG. 3, the difference being that the second and third inputs are the computing devices. Is exchanged before it is entered and processed. In effect, this is the result of no exchange at the end of the eighth iteration. The reason for this additional exchange is that the decryption has a structure like encryption. Also, compared to the six subkey inputs for each of the first eight stages, this ninth stage requires only four inputs.

이하 서브키 생성에 대하여 부연 설명하면, 우선 도 2에 도시한 바와 같이 52개의 16비트 서브키들이 128비트의 암호키로부터 생성된다. 생성방식은 다음과 같다.Subsequently, subkey generation will be described in detail. First, as shown in FIG. 2, 52 16-bit subkeys are generated from a 128-bit encryption key. The generation method is as follows.

로 레이블되는 처음 8개의 서브키들은의 최상위 16비트와 같고,는 그 다음 16비트와 대응되고 나머지도 그렇게 차례대로 직접 키로부터 받아 들인다. 그리고 나서 25비트 순환 왼쪽 쉬프트로 키에 적용시키면 다음 8개의 서브키들이 얻어진다. 이 절차는 모든 52개의 서브키들이 추출될때 까지 반복된다. 도 5는 초기 키에 대응되는 모든 서브키에 대한 비트 지정을 나타낸 것이다. 이 방식은 8개의 반복에서 서브키를 위해 사용되는 키 비트를 다양화하기 위한 효율적 기술을 제공한다. 각 라운드에서 사용된 첫 번째 서브키는 키에서의 비트들의 다른 집합을 사용하고 있음을 주의해야 한다. 전체로서 키가 Z[1,...., 128]로 레이블 된다면 8개의 반복의 첫 번째 키는 다음과 같은 비트 지정을 가진다. The first eight subkeys labeled with Equal to the most significant 16 bits of, Then corresponds to the 16 bits and so on in order to accept directly from the key. Then apply it to the key with a 25-bit cyclic left shift to get the next eight subkeys. This procedure is repeated until all 52 subkeys have been extracted. 5 shows bit designations for all subkeys corresponding to the initial key. This approach provides an efficient technique for diversifying the key bits used for the subkey in eight iterations. Note that the first subkey used in each round uses a different set of bits in the key. If the key as a whole is labeled Z [1, ..., 128], the first key of the eight iterations has the following bit designation:

= Z[1....16] = Z [1 .... 16]

= Z[97.....112] = Z [97 ..... 112]

= Z[90....105] = Z [90 .... 105]

= Z[83.....98] = Z [83 ..... 98]

= Z[76.....91] = Z [76 ..... 91]

= Z[44.....59] = Z [44 ..... 59]

= Z[37.....52] = Z [37 ..... 52]

= Z[30.....45] = Z [30 ..... 45]

또한, 반복을 위해 사용되는 96개의 서브키 비트들은 처음과 8번째 반복을 제외하고 인접해 있지 않고, 그래서 심지어는 한 라운드의 서브키와 다른 라운드의 서브키 사이의 간단한 이동 관계조차 없다. 이런 현상이 나타나는 이유는 각 반복에서 6개의 서브 키들이 사용되어지는 반면, 8개의 서브키는 키와 각 로테이션으로 추출되기 때문이다.Also, the 96 subkey bits used for repetition are not contiguous except for the first and eighth repetitions, so there is even no simple shifting relationship between one round of subkeys and another round of subkeys. This happens because six subkeys are used in each iteration, while eight subkeys are extracted with the key and each rotation.

이하 IDEA 복호화에 대하여 설명하면,Hereinafter, IDEA decoding will be described.

우선 복호화 처리는 암호화 처리와 본질적으로 같은 작업이다. 복호화는 도 2에 도시한 것과 같은 IDEA 구조로 암호문을 입력으로 사용함으로써 얻어진다. 그러나 서브키의 선택에 있어서는 다르다. 복호 서브키는 다음 조건에서 암호 서브키로부터 유추된다.First, decryption processing is essentially the same operation as encryption processing. Decryption is obtained by using a cipher text as input with an IDEA structure as shown in FIG. However, the choice of subkeys is different. Decryption subkey Is inferred from the cryptographic subkey under the following conditions:

① 복호 반복 i에서 처음 네 개의 서브키는 암호 반복 (10-i)에서의 처음 4개의 서브키로부터 유도된다. 변환 단계는 반복 9로서 카운트된다. 처음과 네 번째 복호 서브키는 첫 번째와 네 번째 암호 서브키에 대응하는 모듈러에서의 곱셈의 역원과 같다. 반복 2를 거쳐 8까지에 대해서, 두 번째와 세 번째 복호 서브키들은 세 번째와 두 번째 암호 서브키에 대응하는 모듈러에서의 덧셈의 역원과 같다. 반복 1과 9에 대해서 두 번째 세 번째 복호 서브키는 두 번째 세 번째 암호 서브키의 모듈러에서의 덧셈과 같다.In decryption iteration i the first four subkeys are derived from the first four subkeys in cipher iteration (10-i). The conversion step is counted as iteration nine. The first and fourth decryption subkeys are modular corresponding to the first and fourth cryptographic subkeys. Equivalent to the inverse of multiplication at. For iterations 2 through 8, the second and third decryption subkeys are modular corresponding to the third and second cryptographic subkeys. Equivalent to the inverse of Esau's addition. For iterations 1 and 9, the second and third decryption subkeys are modular in the second and third cryptographic subkeys. Same as addition in.

② 처음 8개의 반복에 대해서 복호 반복 i의 마지막 두 개의 서브키는 암호 반복 (9-i)의 두 마지막 서브키와 같다. 하기 표 2에 이러한 관계를 요약하였다.For the first eight iterations, the last two subkeys of decryption iteration i are the same as the two last subkeys of cipher iteration (9-i). Table 2 below summarizes this relationship.

암호화(Z)와 복호화(U)Encryption (Z) and Decryption (U) 상태condition 선정selection 같은 값Same value 반복 1Repeat 1 반복 2Repeat 2 반복 3Repeat 3 반복 4Repeat 4 반복 5Repeat 5 반복 6Repeat 6 반복 7Repeat 7 반복 8Repeat 8 변환conversion

곱셈의 역원은 기호로 나타낸다. 이러한 경우이다. 왜냐하면은 소수이기 때문에, 각 영이 아닌 정수은 모듈러에서 유일한 곱셈의 역원을 가진다. 모듈러에서 덧셈의 역원은 기호로 나타낸다. 이러한 경우= 0이다.Inverse of multiplication symbol Represented by In such a case to be. because Since is a prime number, each nonzero integer Silver modular Has the inverse of the only multiplication. Modular Inverse of addition symbol Represented by In such a case = 0.

복호 서브키를 갖는 같은 알고리즘은 정확한 결과를 생성한다는 것을 확인하기 위해 IDEA의 암호화와 복호화 과정를 도시한 도 6을 참조하면, 도 6의 좌측에서 암호화가 아래로 내려가면서 행해지는 것을 볼 수 있고, 복호 작업은 우측에서 위쪽으로 올라가면서 행해지는 것을 볼 수 있다. 각 8개의 반복은 서브암호와 변환의두 서브 단계로 분해되는 것을 나타낸다. 변환 서브 단계는 도 3에 도시된 참조번호 10의 직사각형과 대응되고, 서브 암호화 단계는 그 반복 처리의 나머지를 나타낸다.Referring to FIG. 6, which shows the encryption and decryption process of IDEA to confirm that the same algorithm with the decryption subkey produces the correct result, it can be seen that encryption is performed downwards on the left side of FIG. You can see the work going up from the right side up. Each of eight iterations is broken down into two sub-steps: sub-coding and transforming. The converting sub-step corresponds to the rectangle of reference numeral 10 shown in Fig. 3, and the sub-encrypting step represents the rest of the iterative processing.

상기 표 2에서 하단에 있는 박스를 대상으로 하여 암호화 과정의 시각에서 보면 관계들은 다음과 같은 출력 변환을 유지한다.From the perspective of the encryption process for the box at the bottom of Table 2, the relationships maintain the following output transformations.

복호 처리에서의 처음 반복의 첫 서브 단계는 다음 관계를 가진다.The first substep of the first iteration in the decoding process has the following relationship.

따라서 대치시키면 다음과 같다.Therefore, if you replace:

그러므로 복호 처리의 처음 서브 단계의 결과는 두 번째와 세 번째 블록의 교환을 제외하고는 암호화에서의 마지막 단계와 같다.Therefore, the result of the first substep of the decryption process is the same as the last step in encryption, except for the exchange of the second and third blocks.

이하 도 3에서 유도될 수 있는 다음 관계를 고려해 보자Consider the following relationship that can be derived from FIG.

여기서 입력 X와 Y를 갖는는 도 1의 MA구조의 오른쪽 출력이고, 입력 X와 Y를 갖는는 MA구조의 왼쪽 출력이다. 따라서은 아래와 같이이다.Where we have inputs X and Y Is the right output of the MA structure of FIG. 1 and has inputs X and Y Is the left output of the MA structure. therefore Is as below to be.

유사한 방법으로은 다음과 같으며,In a similar way Is

복호 처리의 두 번째 서브 단계의 출력은 두 번째와 세 번째 블록의 교환을 제외한 암호화 작업의 다음에서 마지막 서브 단계의 입력과 같다. 같은 유도 과정을 사용하여, 이 관계는 다음 식을 가질 때까지 도 6에서의 각 대응점에서 유지함을 보여질 수 있다.The output of the second substep of the decryption process is the same as the input of the next to the last substep of the encryption operation except for the exchange of the second and third blocks. Using the same derivation process, this relationship can be seen to hold at each corresponding point in FIG. 6 until the following equation is obtained.

마지막으로 복호 처리의 출력 변환은 두 번째와 세 번째 블록을 교환한다는 것을 제외하고는 암호화 처리의 처음 서브 단계와 같기 때문에, 암호화 처리의 입력과 같은 전체 암호화 처리의 출력을 가진다.Finally, since the output conversion of the decryption process is the same as the first sub-step of the encryption process except that the second and third blocks are exchanged, it has the output of the entire encryption process as the input of the encryption process.

이하에서는 상술한 바와 같은 IDEA 암호 알고리즘의 이론적 배경에 기초하여설계된 데이터 암호화 장치에 대하여 설명하기로 한다.Hereinafter, a data encryption apparatus designed based on the theoretical background of the IDEA encryption algorithm described above will be described.

우선 본 발명의 실시예에 따른 IDEA에 기반한 데이터 암호화 장치는 크게 4개의 서브블록, 즉 암/복호화 처리부, 서브키 생성부, 제어부, 입/출력부로 분할되어 탑-다운(Top-down)방식으로 설계할 수 있다. 암/복호화 처리부는 64비트의 평문을 96 비트의 서브키로 무의미한 암호문으로 만드는 기능을 수행한다. 서브키 생성부는 128비트의 키 비트를 확장하여 각 라운드에서 필요한 서브 키 96비트를 생성하는 기능을 수행하며, 제어부는 데이터(평문, 키)의 입/출력과 암/복호화 처리부와 서브키 생성부를 제어하는 기능을 수행한다. 입력부는 데이터(평문, 키)를 16비트 단위로 입력 받고, 출력부는 64비트의 암호문 혹은 평문을 출력하는데 이용된다.First, an IDEA-based data encryption apparatus according to an embodiment of the present invention is divided into four subblocks, namely, an encryption / decryption processing unit, a subkey generation unit, a control unit, and an input / output unit, in a top-down manner. Can be designed. The encryption / decryption processing unit converts the 64-bit plain text into a meaningless cipher text with a 96-bit subkey. The subkey generator expands the 128-bit key bit to generate 96 bits of the subkey required in each round, and the controller controls the input / output and encryption / decryption processing unit and the subkey generator of data (plain text and keys). Function to control. The input unit receives data (plain text, key) in 16-bit units, and the output unit is used to output 64-bit cipher text or plain text.

입력부를 16비트 단위로 설계하는 이유는 두가지가 있다. 첫째는 칩 제작후, 칩 테스트 수행할때 16비트 마이크로컨트롤러를 이용하여 효율적으로 칩 테스트를 수행하기 위해서이다. 두 번째는 PC에 장착하여 데이터를 송/수신할때 암호화 복호화 과정을 가시화하기 위해서이다.There are two reasons for designing the input in units of 16 bits. The first is to perform chip test efficiently using 16-bit microcontroller when chip test after chip manufacturing. The second is to visualize the encryption and decryption process when sending and receiving data on the PC.

도 7은 본 발명의 실시예에 따른 데이터 암호화 장치의 전체 스펙을 도시한 것이며, 하기 표 3은 입출력 포트에 대한 기능표를 나타낸 것이다. 이러한 데이터 암호화 장치는 정보보안용 디지털 시스템에 내장되는 메인 프로세서(도시하지 않았음)와 연동하여 사용될 수 있다.7 is a view showing the overall specifications of the data encryption apparatus according to an embodiment of the present invention, Table 3 shows a function table for the input and output ports. Such a data encryption device may be used in conjunction with a main processor (not shown) embedded in a digital system for information security.

SignalSignal Signal DirectionSignal direction DescriptionDescription Plain_text(15:0)Plain_text (15: 0) InputInput 평문Plain text Plain_address(3:0)Plain_address (3: 0) InputInput 평문 입력 어드레스Plain text input address Key(15:0)Key (15: 0) InputInput key Key_address(7:0)Key_address (7: 0) InputInput 키 입력 어드레스Key input address ResetReset InputInput 리셋 신호Reset signal ClockClock InputInput 클럭 신호Clock signal StartStart InputInput 암/복호화 시작 신호Encrypt / Decrypt Start Signal ModeMode InputInput 암/복호 선택신호Encryption / Decoding Select Signal Crypto_text(63:0)Crypto_text (63: 0) OutputOutput 암/복호문 출력Cancer / Decryption Text Output FinishFinish OutputOutput 암/복호화 종료신호Encryption / decryption end signal

64비트의 평문과 128비트의 키를 16비트로 나누어 입력받기 위해 데이터용 어드레스 입력포트의 정의가 필요하다. 64비트의 평문을 16비트 단위로 입력받는 것을 예를 들어 설명하면, 우선 plain_address가 "00"이면 입력된 16비트 평문은 0에서 16번째 비트까지의 평문 입력을 나타내고, plain_address가 "01"이면 17에서 31번째 비트까지의 평문 입력을 나타내며, plain_address가 "10"이면 입력된 16비트 평문은 32에서 47번째 비트까지의 평문 입력을 나타내고, plain_address가 "11"이면 48에서 63번째 비트까지의 평문 입력을 나타낸다. 모드(mode)는 암호화와 복호화를 선택할 수 있는 입력 포트이며, finish는 암호화의 종료를 나타내는 출력포트이다.In order to receive 64-bit plain text and 128-bit key divided into 16 bits, it is necessary to define an address input port for data. For example, when a 64-bit plain text is input in 16-bit units, first, if plain_address is "00", the input 16-bit plain text represents 0 to 16th plain text input, and if plain_address is "01", 17 Represents plain text input from the 31st bit to, and if plain_address is "10", the input 16-bit plain text represents the 32 to 47th plain text input, and if plain_address is "11", the plain text input to 48th to 63rd bits Indicates. The mode is an input port to select encryption and decryption, and finish is an output port indicating the end of encryption.

도 8은 도 7에 도시된 데이터 암호화 장치의 상세 구성도를 도시한 것으로, 상기 데이터 암호화 장치는 입력블록인 데이터 입력부(30)와 키 입력부(40), 출력블록인 출력 레지스터(50), 제어부(60), 암호화 및 복호화 처리부(70), 그리고 서브키 생성부(80)로 구성된다.FIG. 8 illustrates a detailed configuration diagram of the data encryption device shown in FIG. 7, wherein the data encryption device includes a data input unit 30, a key input unit 40, an output block 50, an output block, and a controller. 60, the encryption and decryption processing unit 70, and the subkey generation unit 80.

우선 입력블록인 데이터 입력부(30)는 64비트의 평문(Plain_text) 혹은 암호문(crypto_text)을 16비트 단위로 입력받기 위한 버퍼로서, 디지털 정보보안 시스템내의 메인 프로세서로부터 평문 혹은 암호문을 16비트 단위로 입력받아 이를 제어논리회로(66)에서 출력되는 제어신호에 의해 저장한다.First, the data input unit 30, which is an input block, is a buffer for receiving 64-bit plain text or crypto text in 16-bit units, and inputs plain text or encrypted text in 16-bit units from a main processor in a digital information security system. This is stored by the control signal output from the control logic circuit 66.

그리고 또 하나의 입력 블록인 키 입력부(40)는 128비트의 키(key) 비트를 16비트 단위로 나누어 입력받기 위한 버퍼로서, 이 역시 제어논리회로(66)에 의해 제어된다.The key input unit 40, which is another input block, is a buffer for receiving input by dividing a 128-bit key bit into 16-bit units, which is also controlled by the control logic circuit 66.

출력 블록인 출력 레지스터(50)는 64비트의 암호문 혹은 평문을 출력하는 기능블록으로서 암호화 및 복호화 처리부(70)의 최종 출력을 저장한다.The output register 50, which is an output block, is a functional block that outputs a 64-bit ciphertext or plaintext, and stores the final output of the encryption and decryption processing unit 70.

한편 제어 블록인 제어부(60)는 IDEA의 암호화/복호화 수행시간이 최소가 되도록 암호화 및 복호화 처리부(70), 서브키 생성부(80)에 필요한 제어신호를 발생한다. 이를 좀 더 구체적으로 설명하면, 제어부(60)는 128비트의 키 비트로부터 매 라운드마다 필요한 서브키를 생성하기 위한 제어신호와, 64비트의 평문(혹은 암호문)을 암호문(혹은 평문)으로 변환하는데 필요한 제어신호를 발생한다. 이러한 제어부(60)는 카운터(62), 디코더(64) 및 제어논리회로(66)로 구성되는데, 카운터(62)는 시스템 클럭(Clock)을 카운팅하여 5비트 데이터의 타이밍값으로 출력하며, 상기 디코더(64)는 카운팅된 타이밍값을 디코딩하여 데이터 암호화 장치의 각 부를 제어하기 위해 필요한 29비트의 타이밍 신호를 발생하여 출력한다. 이러한 타이밍 신호의 입력에 따라 제어논리회로(66)는 암호화 및 복호화 처리부(70), 그리고 서브키 생성부(80) 동작에 필요한 제어신호를 발생한다. 이러한 제어부(60)는 클럭 입력에 따라 암호화 및 복호화 알고리즘의 동작을 제어하기 위한 신호가 발생되도록 마이크로 오퍼레이션 레벨로 설계되어 있다. 하기 표 4는 타이밍에 따라 수행해야 할 마이크로 오퍼레이션 레벨을 나타내었다.On the other hand, the control block 60, which is a control block, generates control signals necessary for the encryption and decryption processing unit 70 and the sub key generation unit 80 such that the IDEA encryption / decryption execution time is minimized. In more detail, the control unit 60 converts a control signal for generating a subkey necessary for each round from a 128-bit key bit, and converts a 64-bit plain text (or cipher text) into a cipher text (or plain text). Generate the necessary control signal. The control unit 60 is composed of a counter 62, a decoder 64 and a control logic circuit 66. The counter 62 counts a system clock and outputs a timing value of 5-bit data. The decoder 64 decodes the counted timing value and generates and outputs a 29-bit timing signal necessary for controlling each part of the data encryption apparatus. In response to the input of the timing signal, the control logic circuit 66 generates a control signal necessary for the operation of the encryption and decryption processing unit 70 and the subkey generation unit 80. The controller 60 is designed at the microoperation level so that a signal for controlling the operation of the encryption and decryption algorithm is generated according to the clock input. Table 4 below shows microoperation levels to be performed according to timing.

클럭Clock 마이크로오퍼레이션 레벨Microoperation Level t1t1 쉬프트 레지스터 ← Key메모리 ← 쉬프트 레지스터Shift register ← Key memory ← Shift register t2t2 쉬프트 레지스터 왼쪽 순환 실행메모리 ← 쉬프트 레지스터Shift register Left circular execution memory ← Shift register t3t3 레지스터 ← 라운드(메모리, 메세지)쉬프트 레지스터 왼쪽 순환 실행메모리 ← 쉬프트 레지스터Register ← Round (Memory, Message) Shift Register Left Circular Execution Memory ← Shift Register t4t4

일반적으로 블록 암호 알고리즘의 암호화 및 복호화 처리 부분은 동일한 동작을 수행하는 여러 개의 라운드로 구성되어 있다. 이러한 암호화 및 복호화 처리 부분을 하드웨어로 설계할 때의 설계 방식으로는 라운드 전체를 직렬로 연결하는 전 라운드 구현형 방식과, 하나의 단일 라운드로 여러 번 반복 수행하는 단일 라운드 구현형 방식이 있다. 본 발명에서는 8회의 라운드 동작으로 구성되는 IDEA의 암호화 및 복호화 처리 부분을 하나의 단일 라운드 프로세서(74)로 구현하고, 이를 8회 반복 수행하도록 하는 단일 라운드 반복형 설계 방식을 채택하여 설계하였다. 이러한 방법은 전 라운드 구현형 보다 회로의 크기를 줄일 수 있는 장점이 있다.In general, the encryption and decryption processing portion of the block cipher algorithm is composed of several rounds that perform the same operation. When designing the encryption and decryption processing parts in hardware, there are two round-type implementations in which the entire round is connected in series, and a single-round implementation in which a single round is repeatedly executed several times. In the present invention, a single round processor 74 implements the encryption and decryption processing part of IDEA consisting of eight round operations, and adopts a single round iterative design scheme to perform eight iterations. This method has the advantage of reducing the size of the circuit than the all-round implementation.

한편 IDEA를 단일 라운드 방식으로 설계하기 위해서는 도 8에 도시한 바와 같이 멀티플렉서(72), 단일 라운드 프로세스(74), 레지스터(76) 및 출력변환부(78)가 요구된다. 상기 레지스터(76)는 매 라운드의 결과값을 저장하기 위해 필요하며, 데이터 길이는 64비트이다. 멀티플렉서(72)는 데이터 입력부(32)로부터 출력되는 64비트의 평문(Plain_text) 혹은 암호문(Crypto_text)과 각 라운드의 출력값을 선택하기 위해 필요하다. 상기 64비트의 평문(Plain_text) 혹은 암호문(Crypto_text)과 각 라운드의 출력값을 선택하기 위한 선택신호(Select)는 제어부(60)의 제어논리회로(66)로부터 출력된다.Meanwhile, in order to design the IDEA in a single round method, a multiplexer 72, a single round process 74, a register 76, and an output converter 78 are required as shown in FIG. The register 76 is needed to store the result of every round and the data length is 64 bits. The multiplexer 72 is required to select the 64-bit plain text or ciphertext Crypto_text output from the data input unit 32 and the output value of each round. The 64-bit plain text or crypto text and the selection signal Select for selecting the output value of each round are output from the control logic circuit 66 of the controller 60.

단일 라운드 프로세스(74)와 출력변환부(78)는 대수학적으로 다른 세 가지의 연산으로 구성되어 있다. 단일 라운드 프로세스(34)는 6개의 16 비트 대 비트 XOR 연산, 4개의 모듈러에 대한 덧셈, 4개의 모듈러에 대한 곱셈으로 정의되어 있다. 그리고 출력변환부(78)는 2개의 모듈러에 대한 덧셈, 2개의 모듈러에 대한 곱셈으로 정의되어 있다.The single round process 74 and the output converter 78 are composed of three operations that are algebraically different. The single round process 34 consists of six 16-bit to bit XOR operations, four modular Addition to, four modular It is defined as a multiplication for. And the output converter 78 is two modular Addition to, 2 modular It is defined as a multiplication for.

① 비트 대 비트로 XOR 연산① XOR operation bit to bit

② 16비트 비 부호 정수로써 취급되는 입력과 출력에 대한 정수 모듈러 ()(mod 65536)의 덧셈 연산Integer integers for inputs and outputs treated as 16-bit unsigned integers ( operation of mod) (mod 65536)

③ 비 부호 16비트 정수로 취급되는 입력과 출력에 대한 정수 모듈러 ()(mod 65537)의 곱셈 연산, 단 블록 비트가 모두 '0'일때는 ()으로 나타낸다.(3) integer modularity for inputs and outputs treated as unsigned 16-bit integers. multiplication operation of (mod 65537), except when the block bits are all '0' ( ).

①과 ② 연산은 일반적으로 많이 사용되는 연산인 반면, ③ 연산은 residue number system, 신호처리, IDEA와 같은 암호 분야에 사용되는 특별한 연산이다. ①과 ②는 하드웨어 설계에 있어서 라이브러리를 사용하면 되므로 설계가 용이하지만, ③은 두 개의 16비트 입력 데이터를 곱하고, 그 결과를 ()로 나누었을때 나머지를 출력하는 연산으로, 손으로 직접 계산하기도 힘들뿐만 아니라, 라이브러리가 지원하지 않는다. 따라서 이 연산을 어떻게 하드웨어로 설계하느냐에 따라 회로의 성능이 많이 좌우된다 할 수 있다. 본 발명에서는 기존의 연구중 가장 우수하다고 평가되는 로우(low)-하이(high) 알고리즘을 사용하여 하드웨어 설계를 하였다.에 대한 로우-하이 알고리즘을 보이면 다음과 같다.① and ② operations are commonly used operations, while ③ operations are special operations used in cryptography such as residue number system, signal processing, and IDEA. ① and ② are easy to design because the library can be used in hardware design, but ③ multiplies two 16-bit input data and returns the result ( It's hard to calculate by hand, and it's not supported by the library. Therefore, the performance of the circuit depends a lot on how the hardware is designed. In the present invention, a hardware design is performed using a low-high algorithm that is considered to be the best among the existing studies. The low-high algorithm for is shown below.

1. D = X × Y1.D = X × Y

D.lower = D(15 down to 0)D.lower = D (15 down to 0)

D.higher = D(31 down to 16)D.higher = D (31 down to 16)

2. If (D.lower≥D.higher)then2.If (D.lower≥D.higher) then

Z = D.lower - D.higherZ = D.lower-D.higher

elseelse

Z = D.higher - D.lower + Z = D.higher-D.lower +

한편 서브키 생성부(80)는 128비트의 키 데이터로부터 매 라운드마다 필요한 서브키를 생성한다. 서브키 생성 방식은 상술한 표 2에 나타나 있다. 즉, 암호 서브키는 128비트의 암호키로부터 차례로 대응함으로써 처음 암호키가 생성되고, 다음에 사용될 암호키는 현재의 암호키를 왼쪽으로 25비트 순환 시프트하여 생성하면 된다. 그리고 복호 서브키는 암호 서브키 생성 규칙에 의해 만들어진 키에 모듈러에 대한 덧셈의 역원과 모듈러에 대한 곱셈의 역원을 적용하여 생성한다. 서브키 생성부(80)를 하드웨어로 구현하기 위해서는 쉬프트 레지스터(82), 역원 모듈(inverse module)(86), 메모리(84), 멀티플렉서(88)가 필요하다.On the other hand, the subkey generation unit 80 generates the necessary subkey every round from the 128-bit key data. The subkey generation method is shown in Table 2 above. In other words, the encryption subkeys are generated first by sequentially matching 128-bit encryption keys, and the next encryption key may be generated by 25-bit cyclic shift to the left of the current encryption key. And the decryption subkey is modular to the key generated by the encryption subkey generation rule. Inverse and Modular for Additions Generate by applying the inverse of the multiplication to. In order to implement the subkey generator 80 in hardware, a shift register 82, an inverse module 86, a memory 84, and a multiplexer 88 are required.

쉬프트 레지스터(82)는 키 입력부(40)로부터 출력되는 128비트의 키데이터를입력받아 저장하고 제어논리회로(66)로부터 입력되는 쉬프트명령(Sh25_sh2)에 따라 입력받은 128비트의 키를 왼쪽으로 25비트 순환 시프트시킨다. 메모리(84)는 암호화 및 복호화 처리부(70)의 각 라운드에서 필요한 서브키를 저장하기 위해서 필요하다. 메모리(84)에 인가되는 라이트 어드레스(Waddress), 리드 어드레스(Raddress)신호와 메모리 라이트 제어신호(W) 및 메모리 리드 제어신호(R)는 제어부(60)의 제어논리회로(66)로부터 출력된다. 멀티플렉서(88)는 출력될 서브키가 암호화 키인지 복호화 키인지를 선택하여 출력하는데, 이러한 경우 상기 제어논리회로(66)로부터 출력되는 선택신호(Sel_mux2)에 따라 하나의 서브키를 출력한다.The shift register 82 receives and stores the 128-bit key data output from the key input unit 40, and shifts the 128-bit key received according to the shift instruction Sh25_sh2 input from the control logic circuit 25 to the left. Bit cyclic shift. The memory 84 is required to store the subkeys required for each round of the encryption and decryption processing unit 70. The write address Waddress, read address Raddress, memory write control signal W, and memory read control signal R applied to the memory 84 are output from the control logic circuit 66 of the controller 60. . The multiplexer 88 selects and outputs whether the subkey to be output is an encryption key or a decryption key. In this case, the multiplexer 88 outputs one subkey according to the selection signal Sel_mux2 output from the control logic circuit 66.

한편 역원 모듈(86)은 모듈러에 대한 덧셈의 역원 연산기와 모듈러에 대한 곱셈의 역원 연산기로 구성된다. 참고적으로 역원 모듈(86)로 인가되는 인버스(inverse)신호는 96비트의 데이터를 16비트씩 나누고, 각각을 모듈러에 대한 곱셈의 역원 연산과 모듈러에 대한 덧셈의 역원으로 생성하도록 제어하는 신호로서, 이 신호 역시 제어논리회로에서 출력된다.이러한 역원 모듈(86)은;Meanwhile, the inverse module 86 is modular Inverse operator and modular in addition to It consists of an inverse operator of multiplication for. For reference, the inverse signal applied to the inverse module 86 divides 96 bits of data into 16 bits and modulates each of them. Inverse Arithmetic and Modularity of Multiplication for A signal that controls generation to the inverse of the addition to the signal, which is also output from the control logic circuit. This inverse module 86 includes: a;

= 0; 입력된와 모듈러에 대한 덧셈 연산을 수행했을 때 나머지가 0인를 구하는 것이다. = 0; Input And modular When you perform an addition operation on a, the remainder is zero. To obtain.

= 1; 입력된와 모듈러에 대한 곱셈 연산을 수행했을 때 나머지가 1인을 구하는 것이다. = 1; Input And modular Multiplication operation on results in a remainder of 1. To save.

①은 설계 라이브러리를 사용하면 설계가 용이하지만, ②는 IDEA에서 가장 복잡도가 높은 연산으로 실제 구현된 칩의 면적, 동작속도에 큰 영향을 주므로 고성능으로 동작하도록 설계가 요구된다.① is easy to design by using design library, but ② is the most complicated operation in IDEA. Therefore, design is required to operate with high performance because it greatly affects the area and operating speed of the actual chip.

IDEA에서 암호화 및 복호화 처리부분과 서브키 생성부분에서 사용되는 연산은 아래와 같으며 복잡도순으로 나타내었다.The operations used in the encryption and decryption processing part and subkey generation part in IDEA are as follows and are shown in the order of complexity.

모듈러 ()에 대한 곱셈의 역원 연산 ≫ 모듈러 ()에 대한 곱셈 연산 ≫ 모듈러 ()에 대한 덧셈의 역원 연산 ≫ 모듈러 ()에 대한 덧셈 연산 ≫ 비트 별 비트 XOR 연산Modular ( Inverse Arithmetic of Multiplication for Multiply » Multiplication Operations for) »Modular ( Inverse Arithmetic of Additions to '' Modular ( Addition operation for bits »bitwise bitwise XOR operation

본 발명에서는 IDEA에서 복잡도가 가장 높은 모듈러 ()에 대한 곱셈의 역원 연산을 페르마(Fermat)의 소정리식을 이용하여 최적의 하드웨어 구조로 설계하였다.In the present invention, the highest complexity in IDEA ( The inverse operation of the multiplication for) is designed to the optimal hardware structure using Fermat's predetermined equation.

우선 기존의 모듈러 p에 관한 곱셈의 역원 설계방법인 확장 유클리드 알고리즘에 대하여 설명하면, 확장 유클리드 알고리즘은 두 양의 정수의 최대 공약수와 만일 그 수들이 서로 소이면 다른 수에 대한 곱셈의 역원을 결정하는 알고리즘이다. 즉 만일 gcd(d,f)=1이면(d와 f의 최대공약수가 1이면) d는 모듈러 f에 대한 곱셈 역원을 가진다. 이것은 양의 정수 d<f에 대하여mod f와 같은<f가 존재함을 의미한다. 정리하면, 확장 유클리드 알고리즘은 최대 공약수를 결정하는 알고리즘으로 유명한 유클리드 알고리즘에 gcd(d,f) = 1 이면 d의 곱셈 역원을 찾는 방법이다. 아래에 확장 유클리드 알고리즘을 나타내었다. 여기서 Y[1]은로, X[1]은 0에서 () 사이의 입력 데이터로 설정되면, 유클리드 알고리즘으로 X[1]과 Y[1]의 최대 공약수가 1이 될때 까지 반복한다. X[1]의 모듈러에 대한 곱셈의 역원을 구하기 위해,를 계산해야 한다. 최종적으로 구해진가 모듈러 ()에 대해서 X[1]의 곱셈의 역원이 된다.First, the extended Euclidean algorithm, which is the inverse design method of multiplication for the modular p, is explained. to be. That is, if gcd (d, f) = 1 (the greatest common divisor of d and f is 1), d has a multiplication inverse for modular f. This is for positive integer d <f like mod f <F is present. In summary, the extended Euclidean algorithm finds the multiplication inverse of d if gcd (d, f) = 1 in the Euclidean algorithm, which is known for determining the greatest common divisor. The extended Euclidean algorithm is shown below. Where Y [1] is Where X [1] is equal to 0 When set to input data between), the Euclidean algorithm repeats until the greatest common divisor of X [1] and Y [1] is 1. Modularity of X [1] To find the inverse of the multiplication for Must be calculated. Finally obtained Modular ( ) Is the inverse of the product of X [1].

여기서, Y[1]=, X[1]:0∼임의의 수,Where Y [1] = , X [1]: 0 to Any number,

:X[1]의 모듈러에 대한 곱셈에 대한 역원 Modularity of: X [1] Inverse for multiplication for

Y[i] = Y[i-1]%X[i-1],=Y[i]/X[i],;Y [i] = Y [i-1]% X [i-1], = Y [i] / X [i], ;

X[i] = X[i-1]%Y[i],=X[i-1]/Y[i], X [i] = X [i-1]% Y [i], = X [i-1] / Y [i],

상술한 확장 유클리드 알고리즘과 본 발명에서 제안한 방식을 비교하기 위해서, 유클리드 알고리즘에서 사용되는 곱셈, 나눗셈, 잉여 연산의 동일 계산량으로 평가한다. 확장 유클리드 알고리즘은 2개의 잉여 연산과 2개의 나눗셈 연산과 2개의 곱셈연산이 9회 반복 수행되므로, 총 52개의 곱셈 회로가 필요하다고 말할 수 있다.In order to compare the above-described extended Euclidean algorithm and the scheme proposed by the present invention, the same calculation amount of multiplication, division, and surplus operations used in the Euclidean algorithm is evaluated. Since the extended Euclidean algorithm performs two iterations, two divisions, and two multiplications nine times, it can be said that a total of 52 multiplication circuits are required.

본 발명에서는 정수론의 페르마 소정리식을 응용하여 모듈러에 관한 곱셈의 역원을 구하고 있다. 먼저 페르마 수와 페르마 소수에 대해 살펴보면, 다음과 같은 꼴의 정수를 페르마 수(Fermat number)라고 한다.In the present invention, by applying the Fermat predetermined formula of the number theory Find the inverse of the multiplication for. First, we will look at the Fermat number and the Perma prime number.The following integer is called Fermat number.

특히이 소수일때, 이 소수를 페르마 소스(Fermat prime)라고 한다. 현재 페르마 수 중에서 소수로 알려진 것은;Especially When this prime is called, it is called Fermat prime. What is currently known to be a minority among the Fermat numbers;

등이 있다.Etc.

는 페르마 수 중 소수로 알려진 최대의 수로써,와 관련된 연산은 계산의 복잡성으로 인해 잉여 수 체계분야, 시그널 프로세싱 분야, 암호 분야에 많이 사용되고 있다. Is the largest known number of Ferma numbers, Due to the complexity of the calculation, the related operations are used in the surplus number system field, signal processing field, and cryptography field.

본 발명에서는 ()이 페르마 소수라는 점에 착안하여 정수론의 페르마 소정식을 응용하여 모듈러에 대한 곱셈의 역원을 최적의 하드웨어 구조로 구할 수 있도록 하였다.In the present invention ( In view of the fact that The inverse of the multiplication for is found to be the optimal hardware structure.

이를 좀 더 구체적으로 설명하면, 우선 페르마의 소정리에 의해서,가 성립하고 또 다음과 같이 변환 가능하다.In more detail, first by Ferma's predetermined logic, Is established and can be converted as follows.

따라서 구하는은 mod()에 대해 A를번 만큼 곱셈한 결과임을알 수 있다.Thus obtained Is mod ( A for) You can see that it is the result of multiplying times.

한편은 아래와 같이 변환된다.Meanwhile Is converted to

이고,이며,이므로 ego, Is, Because of

A·B mod N = A mod N·B mod N 이므로,를 최종적으로 정리하면 다음과 같다.Since A B mod N = A mod N B mod N, Finally, the following is summarized.

최종적으로 정리된은 도 9에 도시된 바와 같이 입력 및 출력 래치회로(90,120)와 다수개의 모듈러 승산기(Modular Multiplier)로 표현할 수 있다. 입력 래치회로(90)는 16비트 2진수를 입력받아 저장하는 역할을 수행하며, 각각의 모듈러 승산기는 입력받은 16비트 2진수를 제곱하고 그 결과를로 나누었을때의 나머지 값을 출력한다. 그리고 출력 래치회로(120)는 출력될 데이터를 일시 저장하는 역할을 수행한다.Finally 9 may be represented by the input and output latch circuits 90 and 120 and a plurality of modular multipliers. The input latch circuit 90 receives and stores 16-bit binary numbers, and each modular multiplier squares the input 16-bit binary number and outputs the result. In other words Outputs the rest of the values divided by. The output latch circuit 120 temporarily stores data to be output.

이하 도 9에 도시된 모듈러에 대한 곱셈의 역원 연산기 동작을 상세히 설명하면,Modular shown in Figure 9 below In more detail, the inverse operator behavior of multiplication with respect to

우선 입력 래치회로(90)에 16비트 2진수 A가 입력되면, 상기 입력 래치회로(90)의 출력값을 입력으로 하는 모듈러 승산기(100)는을 수행한후()로 나눈후 그 나머지를 출력한다. 그리고의 출력값을 입력으로 하는 모듈러 승산기(101)는를 수행한후로 나눈후 그 나머지를 출력한다. 한편의 출력값과 입력 래치회로(90)의 출력값을 입력으로 하는 모듈러 승산기(102)는를 수행한후로 나눈 나머지를 출력한다. 이러한 경우 모듈러 승산기(101,102)는 패러럴하게 동시 동작한다. 그리고의 출력값을 입력으로 하는 모듈러 승산기(103)는을 수행한후로 나눈 나머지를 출력하며,의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(104)는을 수행한후로 나눈 나머지를 출력한다. 이 역시 패러럴하게 동시 동작한다.First, when a 16-bit binary number A is input to the input latch circuit 90, the modular multiplier 100 that takes the output value of the input latch circuit 90 as an input. After performing ( Divide by) and print the rest. And The modular multiplier 101 that takes an output value of After Divide by and print the rest. Meanwhile The modular multiplier 102 which inputs the output value of and the output value of the input latch circuit 90 After Output the remainder divided by. In this case, the modular multipliers 101 and 102 operate in parallel in parallel. And The modular multiplier 103 that takes an output value of After performing Output the remainder divided by And the output of The modular multiplier 104 that takes an output value of After performing Output the remainder divided by. This is also parallel in parallel.

한편의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(105)는을 수행한후로 나눈 나머지를 출력하고,의 출력값을 입력으로 하는 모듈러 승산기(106)는을 수행한후로 나눈 나머지를 출력한다.의 출력값을 입력으로 하는 모듈러 승산기(107)는을 수행한후로 나눈 나머지를 출력하며,의 출력값을 입력으로 하는 모듈러승산기(108)는을 수행한후로 나눈 나머지를 출력한다.의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(109)는를 수행한후로 나눈 나머지를 출력한다. 그리고의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(110)는을 수행한후로 나눈 나머지를 출력한다. 또한의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(111)는을 수행한후로 나눈 나머지를 출력하면, 출력 래치 회로(120)는을 수행한후로 나눈 나머지를 저장하게 된다.Meanwhile And the output of The modular multiplier 105 for inputting the output value of After performing Output the remainder divided by The modular multiplier 106 that takes the output value of After performing Output the remainder divided by. The modular multiplier 107 that takes an output value of After performing Output the remainder divided by Modular multiplier 108 that takes the output value of After performing Output the remainder divided by. And the output of The modular multiplier 109 that takes an output value of After Output the remainder divided by. And And the output of Modular multiplier 110 that takes the output value of After performing Output the remainder divided by. Also And the output of The modular multiplier 111 that takes an output value of After performing Outputting the remainder divided by, the output latch circuit 120 After performing The remainder divided by.

상술한 바와 같은 모듈러에 대한 곱셈의 역원 연산기에서 승산기의 개수는 21개이며, 승산기 트리의 단수는 18단이다. 이것은 페르마 소정리를 이론적으로 적용했을 때 보다 승산기가 9개 적게 소요됨(즉, 곱셈 횟수가 줄어듬)을 나타낸다.Modular as described above In the inverse operator of the multiplication for, the number of multipliers is 21, and the number of multiplier trees is 18. This represents 9 fewer multipliers (ie, fewer multiplications) than when the Fermat predetermined theory is applied theoretically.

따라서 본 발명은 IDEA에서 계산량이 가장 높은 연산인 모듈러에 대한 곱셈의 역원 연산을 상술한 바와 같은 구성의 역원 연산기를 통해 구현함으로서, H.Bonnenberg에 의한 기존의 연구보다 고속으로 역원 연산을 수행할 수 있게 되는 것이다.Therefore, the present invention is a modular operation that is the highest computational amount in IDEA By implementing the inverse operation of the multiplication with the inverse operator of the configuration described above, it is possible to perform the inverse operation faster than the conventional research by H. Bonnenberg.

또한 IDEA에서 가장 많은 계산량을 요구하는 모듈러에 대한 곱셈의 역원을 고속 연산하기 때문에, 결과적으로는 데이터 암호화 장치의 암호화 처리속도 역시 고속화됨은 물론, 데이터 암호화 장치를 포함하는 컴퓨팅 시스템의 데이터 처리 성능향상을 기할 수 있게 되는 것이다.In addition, the most demanding modularity in IDEA Since the inverse of the multiplication for the high speed operation, as a result, the encryption processing speed of the data encryption apparatus is also increased, and the data processing performance of the computing system including the data encryption apparatus can be improved.

상술한 바와 같이 본 발명은 페르마의 소정리를 응용하여, IDEA에서 가장 복잡하고 계산하기 어려운 연산인 모듈러에 대한 곱셈의 역원 연산을 효율적으로 수행하기 위한 하드웨어 구조를 설계함으로써, 모듈러에 대한 곱셈의 역원 연산은 물론 데이터 암호화 처리를 고속으로 수행할 수 있는 장점이 있다.As described above, the present invention is the modular, which is the most complex and difficult to calculate in IDEA by applying Ferma's predetermined logic. By designing a hardware structure to efficiently perform inverse operations of multiplication on In addition to the inverse operation of the multiplication for, there is an advantage that the data encryption process can be performed at high speed.

또한 본 발명은 모듈러에 대한 곱셈의 역원 연산기를 포함하는 데이터 암호화 장치를 원칩 IC로 구현함은 물론, 16비트 단위로 데이터를 입력받도록 입력 인터페이스를 재 정의함으로써, PC나 마이크로콘트롤러와 연동시킬 수 있는 장점이 있다.In addition, the present invention is modular In addition to implementing a data encryption device including an inverse operator of multiplication for a one-chip IC, and redefining the input interface to receive data in units of 16 bits, it can be linked with a PC or a microcontroller.

Claims (7)

삭제delete 모듈러에 대한 곱셈의 역원 연산기에 있어서,Modular In the inverse operator of multiplication for, n비트 2진 데이터 A를 저장하기 위한 래치회로와;a latch circuit for storing n-bit binary data A; 상기 래치회로로부터 출력되는 n비트 2진 데이터 A를 입력으로 하는 3개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 상기 모듈러로 나눈 나머지를 출력하는 제1군의 모듈러 승산기들과;Three modular multipliers having n-bit binary data A output from the latch circuit as inputs are connected in series to perform squares of input values, respectively, and then the modular A first group of modular multipliers for outputting the remainder divided by; n비트 2진 데이터 A와 상기 제1군의 모듈러 승산기들중 첫번째 승산기의 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제1모듈러 승산기와;multiplies the output of the first multiplier of the first group of modular multipliers by the n-bit binary data A and then modulates the output; A first modular multiplier for outputting the remainder divided by; 상기 제1모듈러 승산기의 출력과 상기 제1군의 모듈러 승산기들중 두번째 승산기의 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제2모듈러 승산기와;Multiplying the output of the first modular multiplier by the output of the second multiplier of the first group of modular multipliers, and A second modular multiplier for outputting the remainder divided by; 상기 제1군의 모듈러 승산기들의 최종 출력과 상기 제2모듈러 승산기의 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제3모듈러 승산기와;Multiplying the final output of the first group of modular multipliers and the output of the second modular multiplier by the modular A third modular multiplier for outputting the remainder divided by; 상기 제3모듈러 승산기의 출력을 최초 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 상기 모듈러로 나눈 나머지를 출력하는 제2군의 모듈러 승산기들과;Four modular multipliers having the output of the third modular multiplier as the first input are connected in series to perform squares of input values, respectively, and then the modular multipliers are respectively used. A second group of modular multipliers for outputting the remainder divided by; 상기 제2군의 모듈러 승산기들의 최종 출력을 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 상기 모듈러로 나눈 나머지를 출력하는 제3군의 모듈러 승산기들과;Four modular multipliers having the final outputs of the second group of modular multipliers as inputs are connected in series to perform squares of input values, respectively, and then the modular multipliers are respectively used. A third group of modular multipliers for outputting the remainder divided by; 상기 제3군의 모듈러 승산기들의 최종 출력을 입력으로 하는 4개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 상기 모듈러로 나눈 나머지를 출력하는 제4군의 모듈러 승산기들과;Four modular multipliers that take the final output of the third group of modular multipliers as inputs are connected in series to perform squares of input values, respectively, and then the modular multipliers A fourth group of modular multipliers for outputting the remainder divided by; 상기 제3모듈러 승산기의 출력과 제2군의 모듈러 승산기들 최종 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제4모듈러 승산기와;Multiplying the output of the third modular multiplier by the final output of the second group of modular multipliers and then modulating the modular output; A fourth modular multiplier for outputting the remainder divided by; 상기 제3군 및 제4군의 모듈러 승산기들 최종 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 출력하는 제5모듈러 승산기와;Multiply the final output of the modular multipliers of the third and fourth groups and then multiply the modular output; A fifth modular multiplier for outputting a remainder divided by; 상기 제4 및 제5모듈러 승산기의 출력을 승산한후 이를 상기 모듈러로 나눈 나머지를 모듈러에 대한 곱셈의 역원으로서 출력하는 제6모듈러 승산기와;Multiply the outputs of the fourth and fifth modular multipliers and then multiply them; Divide the remainder by A sixth modular multiplier for outputting as the inverse of the multiplication for; 상기 모듈러에 대한 곱셈의 역원을 저장하기 위한 래치회로로 구성함을 특징으로 하는 모듈러에 대한 곱셈의 역원 연산기.The modular Modular circuit comprising a latch circuit for storing the inverse of the multiplication for Inverse operator for multiplication. IDEA에 기반한 데이터 암호화 장치에 있어서,In the data encryption device based on IDEA, n비트의 평문을 m 비트 단위로 입력받기 위한 데이터 입력부와;a data input unit for receiving n-bit plain text in m-bit units; k비트의 키(key) 비트를 m 비트 단위로 나누어 입력받기 위한 키 입력부와;a key input unit configured to receive a k-bit key bit by m-bit unit; 상기 k비트의 키 비트로부터 매 라운드마다 필요한 서브키를 생성하기 위해 필요한 제어신호와, n비트의 평문을 암호문으로 변환하기 위해 필요한 제어신호를 발생하여 출력하는 제어부와;A control unit for generating and outputting a control signal necessary for generating a subkey required for each round from the k-bit key bit and a control signal for converting n-bit plain text into a cipher text; 상기 데이터 입력부로부터 출력되는 n비트의 평문과 각 라운드의 출력값중 하나를 선택하여 l비트의 서브키를 이용하여 암호문으로 암호화하여 출력하는 암호화 처리부와;An encryption processing unit for selecting one of n-bit plain text output from the data input unit and an output value of each round, and encrypting the encrypted text using an l-bit subkey to output the encrypted text; 상기 키 입력부로부터 키데이터를 입력받아 저장하고 상기 제어부로부터 출력되는 쉬프트명령에 따라 입력받은 키데이터를 왼쪽으로 순환 시프트시키는 쉬프트 레지스터와, 상기 쉬프트 레지스터의 출력을 저장하기 위한 메모리와, 상기 메모리로부터 키데이터를 입력받아 모듈러에 대한 덧셈의 역원 연산과 모듈러에 대한 곱셈의 역원 연산을 수행하여 발생된 암호 서브키를 출력하는 역원 모듈과, 상기 제어부로부터 출력되는 선택신호에 따라 상기 메모리로부터 출력되는 키데이터와 역원 모듈의 출력 데이터중 하나를 서브키로 선택출력하는 멀티플렉서를 포함하는 서브키 생성부와;A shift register for receiving and storing key data from the key input unit and cyclically shifting the input key data to the left according to a shift command output from the controller, a memory for storing an output of the shift register, and a key from the memory Modular data input Inverse Arithmetic and Modularity of Additions to An inverse module for outputting a cipher subkey generated by performing an inverse operation of the multiplication with respect to the sub-key, and outputting one of key data output from the memory and output data of the inverse module according to a selection signal output from the controller A subkey generation unit including a multiplexer; 상기 암호화 처리부의 출력 데이터인 암호문을 출력하기 위한 데이터 출력부;를 포함함을 특징으로 하는 데이터 암호화 장치.And a data output unit for outputting an encrypted text which is output data of the encryption processing unit. 삭제delete 청구항 3에 있어서, 상기 제어부는;The method of claim 3, wherein the control unit; 시스템 클럭을 카운팅하여 출력하는 카운터와;A counter for counting and outputting a system clock; 상기 카운팅된 타이밍값을 디코딩하여 타이밍 신호로 출력하는 디코더와;A decoder for decoding the counted timing value and outputting the counted timing value; 상기 타이밍 신호 입력에 따라 매 라운드마다 필요한 서브키를 생성하기 위해 필요한 제어신호와, 평문을 암호문으로 변환하기 위해 필요한 제어신호를 발생하여 출력하는 제어논리회로로 구성됨을 특징으로 하는 데이터 암호화 장치.And a control logic circuit for generating and outputting a control signal necessary for generating a subkey required for each round according to the timing signal input and a control signal for converting a plain text into a cipher text. 청구항 5에 있어서, 상기 암호화 처리부는 단일 라운드 구현 방식으로 설계됨을 특징으로 하는 데이터 암호화 장치.The data encryption apparatus of claim 5, wherein the encryption processing unit is designed in a single round implementation. 삭제delete
KR10-2001-0025595A 2001-05-10 2001-05-10 A multiplicative inverse operator for modulo n and data encryption apparatus including the same operator KR100406724B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0025595A KR100406724B1 (en) 2001-05-10 2001-05-10 A multiplicative inverse operator for modulo n and data encryption apparatus including the same operator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0025595A KR100406724B1 (en) 2001-05-10 2001-05-10 A multiplicative inverse operator for modulo n and data encryption apparatus including the same operator

Publications (2)

Publication Number Publication Date
KR20020086006A KR20020086006A (en) 2002-11-18
KR100406724B1 true KR100406724B1 (en) 2003-11-20

Family

ID=27704465

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0025595A KR100406724B1 (en) 2001-05-10 2001-05-10 A multiplicative inverse operator for modulo n and data encryption apparatus including the same operator

Country Status (1)

Country Link
KR (1) KR100406724B1 (en)

Also Published As

Publication number Publication date
KR20020086006A (en) 2002-11-18

Similar Documents

Publication Publication Date Title
US6088800A (en) Encryption processor with shared memory interconnect
KR100435052B1 (en) Encryption device
US5751811A (en) 32N +D bit key encryption-decryption system using chaos
CN109039640B (en) Encryption and decryption hardware system and method based on RSA cryptographic algorithm
CN107147487B (en) Symmetric key random block cipher
US20070214361A1 (en) Device, System and Method for Fast Secure Message Encryption Without Key Distribution
JP2008252299A (en) Encryption processing system and encryption processing method
KR100800468B1 (en) Hardware cryptographic engine and method improving power consumption and operation speed
US20070297614A1 (en) Device, System and Method for Fast Secure Message Encryption Without Key Distribution
US20170257212A1 (en) Cryptographic Apparatuses And Methods For Encrypting And Decrypting Data Using Automata
EP1326363A1 (en) Chaos-based block encryption
KR100457177B1 (en) Serial-Parallel Multiplier to Multiply Two Elements in the Finite Field
KR100406724B1 (en) A multiplicative inverse operator for modulo n and data encryption apparatus including the same operator
CN114124359A (en) Method and device for preserving format encrypted data, electronic equipment and storage medium
RU2188513C2 (en) Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks
KR100350207B1 (en) Method for cryptographic conversion of l-bit input blocks of digital data into l-bit output blocks
Patro et al. Text-to-Image Encryption and Decryption Using Piece Wise Linear Chaotic Maps
Harshitha et al. High Performance Advanced Encryption Standard system using Secure Double Rate Registers
Hafsa et al. Performance trade-offs of hybrid cryptosystem for medical images encryption-decryption
CA2617389C (en) Encryption processor with shared memory interconnect
RU2140709C1 (en) Process of cryptographic conversion of blocks of digital data
Swayamprakash et al. Design of Advanced Encryption Standard using Verilog HDL
KR100380638B1 (en) A data encryption standard system equipped parallel feistel structure
Lakshmi et al. Enhance Speed Low Area FPGA Design Using S-Box GF and Pipeline Approach on Logic for AES.
Thomas 16 Very-Large-Scale

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

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20131112

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee