KR20020086006A - 모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치 - Google Patents

모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치 Download PDF

Info

Publication number
KR20020086006A
KR20020086006A KR1020010025595A KR20010025595A KR20020086006A KR 20020086006 A KR20020086006 A KR 20020086006A KR 1020010025595 A KR1020010025595 A KR 1020010025595A KR 20010025595 A KR20010025595 A KR 20010025595A KR 20020086006 A KR20020086006 A KR 20020086006A
Authority
KR
South Korea
Prior art keywords
modular
output
bit
outputting
data
Prior art date
Application number
KR1020010025595A
Other languages
English (en)
Other versions
KR100406724B1 (ko
Inventor
권용진
최영민
Original Assignee
학교법인 정석학원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 학교법인 정석학원 filed Critical 학교법인 정석학원
Priority to KR10-2001-0025595A priority Critical patent/KR100406724B1/ko
Publication of KR20020086006A publication Critical patent/KR20020086006A/ko
Application granted granted Critical
Publication of KR100406724B1 publication Critical patent/KR100406724B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/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

Landscapes

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

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모듈러 승산기의 출력을 승산한후 이를 모듈러로 나눈 나머지를 모듈러

Description

모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는 데이터 암호화 장치{A MULTIPLICATIVE INVERSE OPERATOR FOR MODULO N AND DATA ENCRYPTION APPARATUS INCLUDING THE SAME OPERATOR}
본 발명은 데이터 암호화 시스템에 관한 것으로, 특히 IDEA(International Data Encryption Algorithm)에서 가장 많은 계산량을 요구하는 모듈러에 대한 곱셈의 역원 연산기와 그를 포함하는 데이터 암호화 장치에 관한 것이다.
정보통신 기술의 급속한 발전과 웹을 기반으로 하는 인터넷의 급성장으로 인해 정보화 시대가 도래하고 있다. 이는 앞으로 정보가 재화의 가치로 인정받고 국가 경제의 성쇠를 좌우할 중요한 요소가 됨을 의미한다. 즉 21세기에는 국가나 기업 그리고 개인에게 있어서 정보가 가장 중요한 요소로 인식될 것이다. 그러나 최근에는 비 허가된 침입자에 의한 정보의 불법적인 사용과 복제 사례나 기업의 중요한 정보의 유출과 변경 그리고 훼손하는 사례나 통신망의 불법적인 침입, 바이러스를 유포하는 등과 같은 정보화의 역기능 현상들이 자주 보고 되고 있으며, 실제로 그에 따른 피해 규모도 심각한 수준에 있는 실정이다. 이러한 역기능을 해결하기 위해 정보보안에 관한 연구가 많이 되어 왔고 현재도 진행중인데, 비 허가된 침입자로부터 기업이나 개인의 중요한 자료를 보호하고 컴퓨터 통신망을 통해 전송되는 자료의 불법적인 도청이나 내용 변조를 방지하기 위해 암호 기술이 부각되고 있다. 암호 기술은 허가된 사람만이 정보를 이용할 수 있도록 하고, 비 허가된 사람에게는 아무런 정보도 노출시키지 않도록 하는 기술이다.
암호 기술을 위해서 암호 알고리즘이 사용되는데, 암호 알고리즘은 평문을 암호문으로 바꾸어 주는 암호화 과정과, 암호문을 평문으로 바꾸어 주는 복호화 과정으로 이루어져 있다. 암호 방법에는 키의 형태에 따라 암호화/복호화 키가 같은 대칭형 암호 방식과, 암호화/복호화 키가 서로 다른 비대칭형 암호 방식으로 크게 구분된다. 한편 대칭형 암호 방식은 수행속도가 빠르나 인증성이 결여되며, 비대칭형 암호 방식은 인증성은 있으나 수행속도가 느린 단점이 있다. 대칭형 암호화 방식의 알고리즘으로는 DES(Data Encryption Standard), IDEA(International Data Encryption Algorithm) 등이 있고, 비대칭형 암호화 방식으로는 RSA(Rivest-Shamir-Adleman), ECC(Elliptic Curve Cryptosystem) 등이 있다.
DES는 안전한 정보의 전송 및 보관을 위해 IBM의 Water Tuchman과 Carl Meyer에 의해 제안되었고, 1977년 1월 표준화되어 현재까지 널리 사용되고 있다. 그러나 내부 구조가 치환과 전치로 이루어져 있어 brute-force 공격에 대한 잠재적인 취약성으로 인하여 새로운 암호 알고리즘이 요구되었다. 1990년 이후에는 DES를 대체하기 위해 여러 대칭적 암호 알고리즘이 제안되었다. 그 중 Xuejia Lai와 James Massey에 의해 제안되었고 대수적 구조가 서로 다른 세 가지 연산을 사용하여 암호학적 강도를 증가시킨 IDEA가 가장 안전하다고 평가되고 있으며, 실제로 전자우편보안 프로그램 등에 사용되고 있다.
기존에는 암호 알고리즘을 소프트웨어 방법으로 구현하였다. 그런데 특정 프로세서 상에서 구동되는 소프트웨어 방식은 복잡한 암호 알고리즘을 암호화/복호화하는데 필요한 시간이 상대적으로 길게 소요되고, 그로 인해 처리속도가 느려진다는 단점이 있다. 실제 암호 알고리즘은 컴퓨터 시스템이나 통신 시스템에 부가적으로 필요한 장치이므로 느린 처리속도는 결과적으로 시스템의 속도 지연을 발생시킬수 있다.
따라서 고속의 컴퓨팅이나 고속 통신을 위해서는 고속 암호화가 필수적으로 해결되어야 한다. 즉, 소프트웨어 방식으로 구현되어 오던 기존의 암호 알고리즘을 전용 칩으로 제작하여 처리 속도를 향상시킬 필요가 있으며, 특히 IDEA에서 계산량이 가장 높은 연산인 모듈러에 대한 곱셈의 역원 연산이 고속으로 수행될 수 있도록 연산기를 설계하는 것이 가장 중요한 문제가 아닐 수 없다.
따라서 본 발명의 목적은 IDEA에서 계산량이 가장 높은 연산인 모듈러에 대한 곱셈의 역원 연산을 고속으로 수행할 수 있는 역원 역산기 및 그를 포함하는 데이터 암호화 장치를 제공함에 있다.
본 발명의 또 다른 목적은 기존의 암호 알고리즘을 고속으로 처리하여 결과적으로 정보보안 시스템의 성능을 향상시킬 수 있는 원칩화된 데이터 암호화 장치를 제공함에 있다.
본 발명의 또 다른 목적은 고속의 컴퓨팅이나 고속 통신을 위한 메인 프로세서와 연동할 수 있는 데이터 암호화 장치를 제공함에 있다.
도 1은 IDEA 암호 알고리즘의 이론적 배경을 설명하기 위한 곱셈/덧셈 구조 예시도.
도 2는 전체 IDEA 블록 다이어그램도.
도 3은 IDEA의 반복 구조도.
도 4는 IDEA의 출력 변환 구조도.
도 5는 IDEA 서브키 생성 예시도.
도 6은 IDEA의 암호화와 복호화를 설명하기 위한 예시도.
도 7은 본 발명의 바람직한 실시예에 따른 데이터 암호화 장치의 전체 스펙 예시도.
도 8은 본 발명의 바람직한 실시예에 따른 데이터 암호화 장치의 상세 구성도.
도 9는 본 발명의 바람직한 실시예에 따른 모듈러에 대한 곱셈의 역원 연산기 구성도.
상기 목적을 달성하기 위한 본 발명의 일 양상에 따르면, 본 발명의 모듈러에 대한 곱셈의 역원 연산기는;
n비트 2진 데이터 A를 최초 입력으로 하는 3개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 모듈러로 나눈 나머지를 출력하는 제1군의 모듈러 승산기들과;
n비트 2진 데이터 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모듈러 승산기로 구성함을 특징으로 한다.
또한 본 발명의 일 양상에 따른 데이터 암호화 장치는;
n비트의 평문을 m 비트 단위로 입력받기 위한 데이터 입력부와;
k비트의 키(key) 비트를 m 비트 단위로 나누어 입력받기 위한 키 입력부와;
상기 k비트의 키 비트로부터 매 라운드마다 필요한 서브키를 생성하기 위해 필요한 제어신호와, n비트의 평문을 암호문으로 변환하기 위해 필요한 제어신호를 발생하여 출력하는 제어부와;
상기 데이터 입력부로부터 출력되는 n비트의 평문과 각 라운드의 출력값중 하나를 선택하여 l비트의 서브키를 이용하여 암호문으로 암호화하여 출력하는 암호화 처리부와;
청구항 1에 기재된 모듈러에 대한 곱셈의 역원 연산기를 적어도 포함하며 상기 키 입력부로부터 출력되는 k비트의 키 데이터로부터 매 라운드마다 필요한 서브키를 생성하여 출력하는 서브키 생성부와;
상기 암호화 처리부의 출력 데이터인 암호문을 출력하기 위한 데이터 출력부;를 포함함을 특징으로 한다.
이하에서는 첨부된 도면을 참조하여 기술되는 바람직한 실시예를 통하여 본 발명을 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 기술하기로 한다.
본 발명의 구성 및 동작을 설명하기에 앞서 참고적으로 IDEA 암호 알고리즘의 이론적 배경을 설명하기로 한다.
우선 IDEA는 64 비트 블록에서 데이터를 암호화하기 위해 128비트 키를 사용하는 블록암호이다. IDEA의 다음 특성들은 암호학적 강도와 관계된다.
→ 블록 길이:
블록 길이는 통계적 분석을 막을 수 있을 만큼 길어야 하는데, 그 이유는 어떤 블록들이 다른 블록들에 비해 더 자주 나오는 그런 유리함을 방지하기 위해서이다. 반면에 효율적 암호 함수를 구현할 때의 복잡도는 블록 크기가 누승으로 증가되는 것으로 알려져 있다. 일반적으로 64비트로 블록 크기를 사용하는 것은 충분히 강력하다고 인식된다.
→ 키의 길이:
키는 방대한 키 검색을 효율적으로 막을 만큼 충분히 길어야 한다. 128비트 길이라면, IDEA는 이 영역에서 향후에도 안전할 것으로 여겨진다.
→ 혼돈(Confusion):
암호문은 평문과 복잡하고 난해한 방법의 키에 의존해야 한다. 혼돈의 목적은 어떻게 암호문의 통계적 성질이 평문의 통계적 성질에 의존하는지에 대한 결정을 복잡하게 하는 것이다. IDEA는 후술되는 세 가지 서로 다른 연산(,▣)을 사용함으로서 이 목적을 달성한다. 이것은 기본적으로 XOR 연산과 작은 비선형 S박스에 의존하는 DES 방식과 대조적이다.
→ 확산(Diffusion):
각 평문 비트는 모든 암호문 비트에 영향을 끼쳐야 하고, 각 키 비트는 모든 암호문 비트에 영향을 주어야 한다. 하나의 평문 비트의 다수 암호문 비트로의 확산은 평문의 통계적 구조를 숨긴다. IDEA는 이런 관점에서 매우 효율적이라 할 수 있다.
IDEA에서 혼돈은 세 가지 다른 연산을 혼합함으로써 가능하다. 각 연산은 두 개의 16비트 입력에서 하나의 16비트 결과를 생성하기 위해 수행된다. 연산은 다음과 같다.
→ 비트 대 비트로 XOR 시키고,으로 나타낸다.
→ 16 비트 비 부호 정수로써 취급되는 입력과 출력에 대한 정수 모듈러(mod 65536)의 덧셈, 이 연산은 ▣로 나타낸다.
→ 비 부호 16 비트 정수로 취급되는 입력과 출력에 대한 정수 모듈러(mod 65537)의 곱셈, 단 블록 비트가 모두 '0'일 때는으로 나타낸다. 이 연산은로 나타낸다.
예를 들면, 00000000000000001000000000000000 = 1000000000000001 이다. 왜냐하면이기 때문이다. 하기 표 1(IDEA에서 사용된 함수)은 16비트를 사용하기 보다는 2비트에 대한 예로서, 세 가지 연산 동작에 대한 결과 값을 보인 것이다.
X Y X▣Y XY XY
0 00 0 00 0 00 1 01 0 00
0 00 1 01 1 01 0 00 1 01
0 00 2 10 2 10 3 11 2 10
0 00 3 11 3 11 2 10 3 11
1 01 0 00 1 01 0 00 1 01
1 01 1 01 2 10 1 01 0 00
1 01 2 10 3 11 2 10 3 11
1 01 3 11 0 00 3 11 2 10
2 10 0 00 2 10 3 11 2 10
2 10 1 01 3 11 2 10 3 11
2 10 2 10 0 00 0 00 0 00
2 10 3 11 1 01 1 01 1 01
3 11 0 00 3 11 2 10 3 11
3 11 1 01 0 00 3 11 2 10
3 11 2 10 1 01 0 00 1 01
3 11 3 11 2 10 0 00 0 00
그리고 이들 세 가지 연산의 조합에 있어서 결합법칙 및 분배법칙은 성립하지 않는다.
조합에서 이와 같은 세 가지의 분리된 연산의 사용은 입력의 복잡한 변환을 위해 제공된다. 유일하게 XOR 함수에만 의존하는 DES와 같은 알고리즘을 사용하는 것보다 암호 해독을 더 어렵게 하기 위해서라 할 수 있다.
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.]
한편 IDEA 암호 알고리즘을 하드웨어로 구현하기 위해서는 암호화와 복호화의 유사성이 있어야 하며 정규구조를 가져야 한다. 암호화와 복호화는 키를 사용하는 방법에서만 달라야 한다. 즉, 같은 장치가 암호화와 복호화 모두에 사용될 수 있어야 한다. IDEA는 이 요구사항을 만족하는 구조를 갖는다. 그리고 암호는 VLSI 구현을 용이하게 하기 위해서 정규적인 모듈 구조를 가져야만 한다. IDEA는 여러 시간에 걸쳐 반복되는 두 가지의 기본 모듈 빌딩 블록으로 구성되어 있기 때문이다.
이하 IDEA 암호화에 대하여 설명하면, 우선 일반적인 IDEA의 전체 블록도가 도 2에 도시되어 있다. 다른 암호화 방식과 마찬가지로 암호화 함수에 암호화하고자 하는 두 개의 입력(평문과 키)이 들어간다. 이러한 경우에 평문은 64 비트이고, 키는 128비트이다. 도 2에서 좌측에 도시된 부분을 보면 IDEA 암호 알고리즘은 마지막 변환 함수까지 8개의 라운드 혹은 반복들로 구성되어 있다. 이 알고리즘은 입력으로 4개의 16비트 서브 블록들을 입력으로 받고 4개의 16비트 결과 블록을 생성한다. 최종 변환은 또한 4개의 16비트 블록들을 생성하는데, 이것들은 다시 64비트 암호문을 형성하기 위해 연결된다. 각 반복들은 전체 52개의 서브키에 대하여 6개의 16비트 서브키를 이용하는 반면, 최종 변환은 4개의 서브키를 사용한다. 도 2에서 우측에 도시된 부분은 이러한 52개의 서브키가 모두 초기 128비트 키로부터 생성됨을 보여 주고 있다.
도 3은 IDEA의 반복구조를 도시한 것으로, 도 2에 도시된 반복에 대한 알고리즘을 보다 자세히 설명하기 위해 도시한 것이다. 도 3은 도 2에서 첫 번째 반복을 나타낸 것이다. 결과로서 나타난 반복들은 같은 구조를 가지지만, 서브키와 평문에 유도된 입력들은 다르다. 반복은 덧셈과 곱셈 연산을 사용하여 네 개의 서브키를 가진 4개의 입력 서브 블록을 조합하는 변환부터 시작한다. 변환은 참조번호 10으로 표시된 직사각형내에서 집중된다. 이러한 변환에서 네 개의 출력 블록은 MA구조(20)에 입력되는 2개의 16비트 블록을 형성하기 위해 XOR 연산을 결합하여 사용하는데, 이는 참조번호 10으로 표시된 직사각형에서 보여진다. MA구조(20)는 또한 두 서브키를 입력으로 받고 두 개의 16비트 출력을 만들어 내기 위해 이러한 입력들과 결합한다.
최종적으로, 상위 변환으로부터의 4개의 출력 블록은 이 반복에 대한 4개의 출력 블록을 만들기 위해 XOR 연산을 사용한 MA구조(20)의 두 출력 블록과 결합된다. 두 번째와 세 번째 입력()에 의해 부분적으로 형성된 두 결과는 두 번째와 세 번째()의 출력을 위해 서로 교환되고 있음을 주의해야 한다. 이는 처리될 비트의 혼합을 증가시키고 알고리즘을 차분 암호 해독에 잘 견디도록 한다.
도 4는 도 2에 도시된 IDEA의 출력 변환 구조를 도시한 것으로 도 3에 도시된 IDEA의 반복 구조에 도시된 참조번호 10과 같은 구조를 가지며, 차이점은 두 번째, 세 번째 입력이 연산 장치들에 입력되어 처리되기 전에 교환된다는 것이다. 사실상 이것은 8번째 반복의 끝에서 교환을 하지 않는 결과이다. 이 추가적인 교환을 하는 이유는 복호화가 암호화와 같은 구조를 가지도록 하기 때문이다. 또한 각각의 처음 8개 단의 각각에 대한 6개의 서브키 입력과 비교해 볼 때, 이 9번째 단은 4개의 입력만을 요구한다.
이하 서브키 생성에 대하여 부연 설명하면, 우선 도 2에 도시한 바와 같이 52개의 16비트 서브키들이 128비트의 암호키로부터 생성된다. 생성방식은 다음과 같다.
로 레이블되는 처음 8개의 서브키들은의 최상위 16비트와 같고,는 그 다음 16비트와 대응되고 나머지도 그렇게 차례대로 직접 키로부터 받아 들인다. 그리고 나서 25비트 순환 왼쪽 쉬프트로 키에 적용시키면 다음 8개의 서브키들이 얻어진다. 이 절차는 모든 52개의 서브키들이 추출될때 까지 반복된다. 도 5는 초기 키에 대응되는 모든 서브키에 대한 비트 지정을 나타낸 것이다. 이 방식은 8개의 반복에서 서브키를 위해 사용되는 키 비트를 다양화하기 위한 효율적 기술을 제공한다. 각 라운드에서 사용된 첫 번째 서브키는 키에서의 비트들의 다른 집합을 사용하고 있음을 주의해야 한다. 전체로서 키가 Z[1,...., 128]로 레이블 된다면 8개의 반복의 첫 번째 키는 다음과 같은 비트 지정을 가진다.
= Z[1....16]
= Z[97.....112]
= Z[90....105]
= Z[83.....98]
= Z[76.....91]
= Z[44.....59]
= Z[37.....52]
= Z[30.....45]
또한, 반복을 위해 사용되는 96개의 서브키 비트들은 처음과 8번째 반복을 제외하고 인접해 있지 않고, 그래서 심지어는 한 라운드의 서브키와 다른 라운드의 서브키 사이의 간단한 이동 관계조차 없다. 이런 현상이 나타나는 이유는 각 반복에서 6개의 서브 키들이 사용되어지는 반면, 8개의 서브키는 키와 각 로테이션으로 추출되기 때문이다.
이하 IDEA 복호화에 대하여 설명하면,
우선 복호화 처리는 암호화 처리와 본질적으로 같은 작업이다. 복호화는 도 2에 도시한 것과 같은 IDEA 구조로 암호문을 입력으로 사용함으로써 얻어진다. 그러나 서브키의 선택에 있어서는 다르다. 복호 서브키는 다음 조건에서 암호 서브키로부터 유추된다.
① 복호 반복 i에서 처음 네 개의 서브키는 암호 반복 (10-i)에서의 처음 4개의 서브키로부터 유도된다. 변환 단계는 반복 9로서 카운트된다. 처음과 네 번째 복호 서브키는 첫 번째와 네 번째 암호 서브키에 대응하는 모듈러에서의 곱셈의 역원과 같다. 반복 2를 거쳐 8까지에 대해서, 두 번째와 세 번째 복호 서브키들은 세 번째와 두 번째 암호 서브키에 대응하는 모듈러에서의 덧셈의 역원과 같다. 반복 1과 9에 대해서 두 번째 세 번째 복호 서브키는 두 번째 세 번째 암호 서브키의 모듈러에서의 덧셈과 같다.
② 처음 8개의 반복에 대해서 복호 반복 i의 마지막 두 개의 서브키는 암호 반복 (9-i)의 두 마지막 서브키와 같다. 하기 표 2에 이러한 관계를 요약하였다.
암호화(Z)와 복호화(U)
상태 선정 같은 값
반복 1
반복 2
반복 3
반복 4
반복 5
반복 6
반복 7
반복 8
변환
곱셈의 역원은 기호로 나타낸다. 이러한 경우이다. 왜냐하면은 소수이기 때문에, 각 영이 아닌 정수은 모듈러에서 유일한 곱셈의 역원을 가진다. 모듈러에서 덧셈의 역원은 기호로 나타낸다. 이러한 경우= 0이다.
복호 서브키를 갖는 같은 알고리즘은 정확한 결과를 생성한다는 것을 확인하기 위해 IDEA의 암호화와 복호화 과정를 도시한 도 6을 참조하면, 도 6의 좌측에서 암호화가 아래로 내려가면서 행해지는 것을 볼 수 있고, 복호 작업은 우측에서 위쪽으로 올라가면서 행해지는 것을 볼 수 있다. 각 8개의 반복은 서브암호와 변환의두 서브 단계로 분해되는 것을 나타낸다. 변환 서브 단계는 도 3에 도시된 참조번호 10의 직사각형과 대응되고, 서브 암호화 단계는 그 반복 처리의 나머지를 나타낸다.
상기 표 2에서 하단에 있는 박스를 대상으로 하여 암호화 과정의 시각에서 보면 관계들은 다음과 같은 출력 변환을 유지한다.
복호 처리에서의 처음 반복의 첫 서브 단계는 다음 관계를 가진다.
따라서 대치시키면 다음과 같다.
그러므로 복호 처리의 처음 서브 단계의 결과는 두 번째와 세 번째 블록의 교환을 제외하고는 암호화에서의 마지막 단계와 같다.
이하 도 3에서 유도될 수 있는 다음 관계를 고려해 보자
여기서 입력 X와 Y를 갖는는 도 1의 MA구조의 오른쪽 출력이고, 입력 X와 Y를 갖는는 MA구조의 왼쪽 출력이다. 따라서은 아래와 같이이다.
유사한 방법으로은 다음과 같으며,
복호 처리의 두 번째 서브 단계의 출력은 두 번째와 세 번째 블록의 교환을 제외한 암호화 작업의 다음에서 마지막 서브 단계의 입력과 같다. 같은 유도 과정을 사용하여, 이 관계는 다음 식을 가질 때까지 도 6에서의 각 대응점에서 유지함을 보여질 수 있다.
마지막으로 복호 처리의 출력 변환은 두 번째와 세 번째 블록을 교환한다는 것을 제외하고는 암호화 처리의 처음 서브 단계와 같기 때문에, 암호화 처리의 입력과 같은 전체 암호화 처리의 출력을 가진다.
이하에서는 상술한 바와 같은 IDEA 암호 알고리즘의 이론적 배경에 기초하여설계된 데이터 암호화 장치에 대하여 설명하기로 한다.
우선 본 발명의 실시예에 따른 IDEA에 기반한 데이터 암호화 장치는 크게 4개의 서브블록, 즉 암/복호화 처리부, 서브키 생성부, 제어부, 입/출력부로 분할되어 탑-다운(Top-down)방식으로 설계할 수 있다. 암/복호화 처리부는 64비트의 평문을 96 비트의 서브키로 무의미한 암호문으로 만드는 기능을 수행한다. 서브키 생성부는 128비트의 키 비트를 확장하여 각 라운드에서 필요한 서브 키 96비트를 생성하는 기능을 수행하며, 제어부는 데이터(평문, 키)의 입/출력과 암/복호화 처리부와 서브키 생성부를 제어하는 기능을 수행한다. 입력부는 데이터(평문, 키)를 16비트 단위로 입력 받고, 출력부는 64비트의 암호문 혹은 평문을 출력하는데 이용된다.
입력부를 16비트 단위로 설계하는 이유는 두가지가 있다. 첫째는 칩 제작후, 칩 테스트 수행할때 16비트 마이크로컨트롤러를 이용하여 효율적으로 칩 테스트를 수행하기 위해서이다. 두 번째는 PC에 장착하여 데이터를 송/수신할때 암호화 복호화 과정을 가시화하기 위해서이다.
도 7은 본 발명의 실시예에 따른 데이터 암호화 장치의 전체 스펙을 도시한 것이며, 하기 표 3은 입출력 포트에 대한 기능표를 나타낸 것이다. 이러한 데이터 암호화 장치는 정보보안용 디지털 시스템에 내장되는 메인 프로세서(도시하지 않았음)와 연동하여 사용될 수 있다.
Signal Signal Direction Description
Plain_text(15:0) Input 평문
Plain_address(3:0) Input 평문 입력 어드레스
Key(15:0) Input
Key_address(7:0) Input 키 입력 어드레스
Reset Input 리셋 신호
Clock Input 클럭 신호
Start Input 암/복호화 시작 신호
Mode Input 암/복호 선택신호
Crypto_text(63:0) Output 암/복호문 출력
Finish Output 암/복호화 종료신호
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는 암호화의 종료를 나타내는 출력포트이다.
도 8은 도 7에 도시된 데이터 암호화 장치의 상세 구성도를 도시한 것으로, 상기 데이터 암호화 장치는 입력블록인 데이터 입력부(30)와 키 입력부(40), 출력블록인 출력 레지스터(50), 제어부(60), 암호화 및 복호화 처리부(70), 그리고 서브키 생성부(80)로 구성된다.
우선 입력블록인 데이터 입력부(30)는 64비트의 평문(Plain_text) 혹은 암호문(crypto_text)을 16비트 단위로 입력받기 위한 버퍼로서, 디지털 정보보안 시스템내의 메인 프로세서로부터 평문 혹은 암호문을 16비트 단위로 입력받아 이를 제어논리회로(66)에서 출력되는 제어신호에 의해 저장한다.
그리고 또 하나의 입력 블록인 키 입력부(40)는 128비트의 키(key) 비트를 16비트 단위로 나누어 입력받기 위한 버퍼로서, 이 역시 제어논리회로(66)에 의해 제어된다.
출력 블록인 출력 레지스터(50)는 64비트의 암호문 혹은 평문을 출력하는 기능블록으로서 암호화 및 복호화 처리부(70)의 최종 출력을 저장한다.
한편 제어 블록인 제어부(60)는 IDEA의 암호화/복호화 수행시간이 최소가 되도록 암호화 및 복호화 처리부(70), 서브키 생성부(80)에 필요한 제어신호를 발생한다. 이를 좀 더 구체적으로 설명하면, 제어부(60)는 128비트의 키 비트로부터 매 라운드마다 필요한 서브키를 생성하기 위한 제어신호와, 64비트의 평문(혹은 암호문)을 암호문(혹은 평문)으로 변환하는데 필요한 제어신호를 발생한다. 이러한 제어부(60)는 카운터(62), 디코더(64) 및 제어논리회로(66)로 구성되는데, 카운터(62)는 시스템 클럭(Clock)을 카운팅하여 5비트 데이터의 타이밍값으로 출력하며, 상기 디코더(64)는 카운팅된 타이밍값을 디코딩하여 데이터 암호화 장치의 각 부를 제어하기 위해 필요한 29비트의 타이밍 신호를 발생하여 출력한다. 이러한 타이밍 신호의 입력에 따라 제어논리회로(66)는 암호화 및 복호화 처리부(70), 그리고 서브키 생성부(80) 동작에 필요한 제어신호를 발생한다. 이러한 제어부(60)는 클럭 입력에 따라 암호화 및 복호화 알고리즘의 동작을 제어하기 위한 신호가 발생되도록 마이크로 오퍼레이션 레벨로 설계되어 있다. 하기 표 4는 타이밍에 따라 수행해야 할 마이크로 오퍼레이션 레벨을 나타내었다.
클럭 마이크로오퍼레이션 레벨
t1 쉬프트 레지스터 ← Key메모리 ← 쉬프트 레지스터
t2 쉬프트 레지스터 왼쪽 순환 실행메모리 ← 쉬프트 레지스터
t3 레지스터 ← 라운드(메모리, 메세지)쉬프트 레지스터 왼쪽 순환 실행메모리 ← 쉬프트 레지스터
t4
일반적으로 블록 암호 알고리즘의 암호화 및 복호화 처리 부분은 동일한 동작을 수행하는 여러 개의 라운드로 구성되어 있다. 이러한 암호화 및 복호화 처리 부분을 하드웨어로 설계할 때의 설계 방식으로는 라운드 전체를 직렬로 연결하는 전 라운드 구현형 방식과, 하나의 단일 라운드로 여러 번 반복 수행하는 단일 라운드 구현형 방식이 있다. 본 발명에서는 8회의 라운드 동작으로 구성되는 IDEA의 암호화 및 복호화 처리 부분을 하나의 단일 라운드 프로세서(74)로 구현하고, 이를 8회 반복 수행하도록 하는 단일 라운드 반복형 설계 방식을 채택하여 설계하였다. 이러한 방법은 전 라운드 구현형 보다 회로의 크기를 줄일 수 있는 장점이 있다.
한편 IDEA를 단일 라운드 방식으로 설계하기 위해서는 도 8에 도시한 바와 같이 멀티플렉서(72), 단일 라운드 프로세스(74), 레지스터(76) 및 출력변환부(78)가 요구된다. 상기 레지스터(76)는 매 라운드의 결과값을 저장하기 위해 필요하며, 데이터 길이는 64비트이다. 멀티플렉서(72)는 데이터 입력부(32)로부터 출력되는 64비트의 평문(Plain_text) 혹은 암호문(Crypto_text)과 각 라운드의 출력값을 선택하기 위해 필요하다. 상기 64비트의 평문(Plain_text) 혹은 암호문(Crypto_text)과 각 라운드의 출력값을 선택하기 위한 선택신호(Select)는 제어부(60)의 제어논리회로(66)로부터 출력된다.
단일 라운드 프로세스(74)와 출력변환부(78)는 대수학적으로 다른 세 가지의 연산으로 구성되어 있다. 단일 라운드 프로세스(34)는 6개의 16 비트 대 비트 XOR 연산, 4개의 모듈러에 대한 덧셈, 4개의 모듈러에 대한 곱셈으로 정의되어 있다. 그리고 출력변환부(78)는 2개의 모듈러에 대한 덧셈, 2개의 모듈러에 대한 곱셈으로 정의되어 있다.
① 비트 대 비트로 XOR 연산
② 16비트 비 부호 정수로써 취급되는 입력과 출력에 대한 정수 모듈러 ()(mod 65536)의 덧셈 연산
③ 비 부호 16비트 정수로 취급되는 입력과 출력에 대한 정수 모듈러 ()(mod 65537)의 곱셈 연산, 단 블록 비트가 모두 '0'일때는 ()으로 나타낸다.
①과 ② 연산은 일반적으로 많이 사용되는 연산인 반면, ③ 연산은 residue number system, 신호처리, IDEA와 같은 암호 분야에 사용되는 특별한 연산이다. ①과 ②는 하드웨어 설계에 있어서 라이브러리를 사용하면 되므로 설계가 용이하지만, ③은 두 개의 16비트 입력 데이터를 곱하고, 그 결과를 ()로 나누었을때 나머지를 출력하는 연산으로, 손으로 직접 계산하기도 힘들뿐만 아니라, 라이브러리가 지원하지 않는다. 따라서 이 연산을 어떻게 하드웨어로 설계하느냐에 따라 회로의 성능이 많이 좌우된다 할 수 있다. 본 발명에서는 기존의 연구중 가장 우수하다고 평가되는 로우(low)-하이(high) 알고리즘을 사용하여 하드웨어 설계를 하였다.에 대한 로우-하이 알고리즘을 보이면 다음과 같다.
1. D = X × Y
D.lower = D(15 down to 0)
D.higher = D(31 down to 16)
2. If (D.lower≥D.higher)then
Z = D.lower - D.higher
else
Z = D.higher - D.lower +
한편 서브키 생성부(80)는 128비트의 키 데이터로부터 매 라운드마다 필요한 서브키를 생성한다. 서브키 생성 방식은 상술한 표 2에 나타나 있다. 즉, 암호 서브키는 128비트의 암호키로부터 차례로 대응함으로써 처음 암호키가 생성되고, 다음에 사용될 암호키는 현재의 암호키를 왼쪽으로 25비트 순환 시프트하여 생성하면 된다. 그리고 복호 서브키는 암호 서브키 생성 규칙에 의해 만들어진 키에 모듈러에 대한 덧셈의 역원과 모듈러에 대한 곱셈의 역원을 적용하여 생성한다. 서브키 생성부(80)를 하드웨어로 구현하기 위해서는 쉬프트 레지스터(82), 역원 모듈(inverse module)(86), 메모리(84), 멀티플렉서(88)가 필요하다.
쉬프트 레지스터(82)는 키 입력부(40)로부터 출력되는 128비트의 키데이터를입력받아 저장하고 제어논리회로(66)로부터 입력되는 쉬프트명령(Sh25_sh2)에 따라 입력받은 128비트의 키를 왼쪽으로 25비트 순환 시프트시킨다. 메모리(84)는 암호화 및 복호화 처리부(70)의 각 라운드에서 필요한 서브키를 저장하기 위해서 필요하다. 메모리(84)에 인가되는 라이트 어드레스(Waddress), 리드 어드레스(Raddress)신호와 메모리 라이트 제어신호(W) 및 메모리 리드 제어신호(R)는 제어부(60)의 제어논리회로(66)로부터 출력된다. 멀티플렉서(88)는 출력될 서브키가 암호화 키인지 복호화 키인지를 선택하여 출력하는데, 이러한 경우 상기 제어논리회로(66)로부터 출력되는 선택신호(Sel_mux2)에 따라 하나의 서브키를 출력한다.
한편 역원 모듈(86)은 모듈러에 대한 덧셈의 역원 연산기와 모듈러에 대한 곱셈의 역원 연산기로 구성된다. 참고적으로 역원 모듈(86)로 인가되는 인버스(inverse)신호는 96비트의 데이터를 16비트씩 나누고, 각각을 모듈러에 대한 곱셈의 역원 연산과 모듈러에 대한 덧셈의 역원으로 생성하도록 제어하는 신호로서, 이 신호 역시 제어논리회로에서 출력된다.이러한 역원 모듈(86)은;
= 0; 입력된와 모듈러에 대한 덧셈 연산을 수행했을 때 나머지가 0인를 구하는 것이다.
= 1; 입력된와 모듈러에 대한 곱셈 연산을 수행했을 때 나머지가 1인을 구하는 것이다.
①은 설계 라이브러리를 사용하면 설계가 용이하지만, ②는 IDEA에서 가장 복잡도가 높은 연산으로 실제 구현된 칩의 면적, 동작속도에 큰 영향을 주므로 고성능으로 동작하도록 설계가 요구된다.
IDEA에서 암호화 및 복호화 처리부분과 서브키 생성부분에서 사용되는 연산은 아래와 같으며 복잡도순으로 나타내었다.
모듈러 ()에 대한 곱셈의 역원 연산 ≫ 모듈러 ()에 대한 곱셈 연산 ≫ 모듈러 ()에 대한 덧셈의 역원 연산 ≫ 모듈러 ()에 대한 덧셈 연산 ≫ 비트 별 비트 XOR 연산
본 발명에서는 IDEA에서 복잡도가 가장 높은 모듈러 ()에 대한 곱셈의 역원 연산을 페르마(Fermat)의 소정리식을 이용하여 최적의 하드웨어 구조로 설계하였다.
우선 기존의 모듈러 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]의 곱셈의 역원이 된다.
여기서, Y[1]=, X[1]:0∼임의의 수,
:X[1]의 모듈러에 대한 곱셈에 대한 역원
Y[i] = Y[i-1]%X[i-1],=Y[i]/X[i],;
X[i] = X[i-1]%Y[i],=X[i-1]/Y[i],
상술한 확장 유클리드 알고리즘과 본 발명에서 제안한 방식을 비교하기 위해서, 유클리드 알고리즘에서 사용되는 곱셈, 나눗셈, 잉여 연산의 동일 계산량으로 평가한다. 확장 유클리드 알고리즘은 2개의 잉여 연산과 2개의 나눗셈 연산과 2개의 곱셈연산이 9회 반복 수행되므로, 총 52개의 곱셈 회로가 필요하다고 말할 수 있다.
본 발명에서는 정수론의 페르마 소정리식을 응용하여 모듈러에 관한 곱셈의 역원을 구하고 있다. 먼저 페르마 수와 페르마 소수에 대해 살펴보면, 다음과 같은 꼴의 정수를 페르마 수(Fermat number)라고 한다.
특히이 소수일때, 이 소수를 페르마 소스(Fermat prime)라고 한다. 현재 페르마 수 중에서 소수로 알려진 것은;
등이 있다.
는 페르마 수 중 소수로 알려진 최대의 수로써,와 관련된 연산은 계산의 복잡성으로 인해 잉여 수 체계분야, 시그널 프로세싱 분야, 암호 분야에 많이 사용되고 있다.
본 발명에서는 ()이 페르마 소수라는 점에 착안하여 정수론의 페르마 소정식을 응용하여 모듈러에 대한 곱셈의 역원을 최적의 하드웨어 구조로 구할 수 있도록 하였다.
이를 좀 더 구체적으로 설명하면, 우선 페르마의 소정리에 의해서,가 성립하고 또 다음과 같이 변환 가능하다.
따라서 구하는은 mod()에 대해 A를번 만큼 곱셈한 결과임을알 수 있다.
한편은 아래와 같이 변환된다.
이고,이며,이므로
A·B mod N = A mod N·B mod N 이므로,를 최종적으로 정리하면 다음과 같다.
최종적으로 정리된은 도 9에 도시된 바와 같이 입력 및 출력 래치회로(90,120)와 다수개의 모듈러 승산기(Modular Multiplier)로 표현할 수 있다. 입력 래치회로(90)는 16비트 2진수를 입력받아 저장하는 역할을 수행하며, 각각의 모듈러 승산기는 입력받은 16비트 2진수를 제곱하고 그 결과를로 나누었을때의 나머지 값을 출력한다. 그리고 출력 래치회로(120)는 출력될 데이터를 일시 저장하는 역할을 수행한다.
이하 도 9에 도시된 모듈러에 대한 곱셈의 역원 연산기 동작을 상세히 설명하면,
우선 입력 래치회로(90)에 16비트 2진수 A가 입력되면, 상기 입력 래치회로(90)의 출력값을 입력으로 하는 모듈러 승산기(100)는을 수행한후()로 나눈후 그 나머지를 출력한다. 그리고의 출력값을 입력으로 하는 모듈러 승산기(101)는를 수행한후로 나눈후 그 나머지를 출력한다. 한편의 출력값과 입력 래치회로(90)의 출력값을 입력으로 하는 모듈러 승산기(102)는를 수행한후로 나눈 나머지를 출력한다. 이러한 경우 모듈러 승산기(101,102)는 패러럴하게 동시 동작한다. 그리고의 출력값을 입력으로 하는 모듈러 승산기(103)는을 수행한후로 나눈 나머지를 출력하며,의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(104)는을 수행한후로 나눈 나머지를 출력한다. 이 역시 패러럴하게 동시 동작한다.
한편의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(105)는을 수행한후로 나눈 나머지를 출력하고,의 출력값을 입력으로 하는 모듈러 승산기(106)는을 수행한후로 나눈 나머지를 출력한다.의 출력값을 입력으로 하는 모듈러 승산기(107)는을 수행한후로 나눈 나머지를 출력하며,의 출력값을 입력으로 하는 모듈러승산기(108)는을 수행한후로 나눈 나머지를 출력한다.의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(109)는를 수행한후로 나눈 나머지를 출력한다. 그리고의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(110)는을 수행한후로 나눈 나머지를 출력한다. 또한의 출력값과의 출력값을 입력으로 하는 모듈러 승산기(111)는을 수행한후로 나눈 나머지를 출력하면, 출력 래치 회로(120)는을 수행한후로 나눈 나머지를 저장하게 된다.
상술한 바와 같은 모듈러에 대한 곱셈의 역원 연산기에서 승산기의 개수는 21개이며, 승산기 트리의 단수는 18단이다. 이것은 페르마 소정리를 이론적으로 적용했을 때 보다 승산기가 9개 적게 소요됨(즉, 곱셈 횟수가 줄어듬)을 나타낸다.
따라서 본 발명은 IDEA에서 계산량이 가장 높은 연산인 모듈러에 대한 곱셈의 역원 연산을 상술한 바와 같은 구성의 역원 연산기를 통해 구현함으로서, H.Bonnenberg에 의한 기존의 연구보다 고속으로 역원 연산을 수행할 수 있게 되는 것이다.
또한 IDEA에서 가장 많은 계산량을 요구하는 모듈러에 대한 곱셈의 역원을 고속 연산하기 때문에, 결과적으로는 데이터 암호화 장치의 암호화 처리속도 역시 고속화됨은 물론, 데이터 암호화 장치를 포함하는 컴퓨팅 시스템의 데이터 처리 성능향상을 기할 수 있게 되는 것이다.
상술한 바와 같이 본 발명은 페르마의 소정리를 응용하여, IDEA에서 가장 복잡하고 계산하기 어려운 연산인 모듈러에 대한 곱셈의 역원 연산을 효율적으로 수행하기 위한 하드웨어 구조를 설계함으로써, 모듈러에 대한 곱셈의 역원 연산은 물론 데이터 암호화 처리를 고속으로 수행할 수 있는 장점이 있다.
또한 본 발명은 모듈러에 대한 곱셈의 역원 연산기를 포함하는 데이터 암호화 장치를 원칩 IC로 구현함은 물론, 16비트 단위로 데이터를 입력받도록 입력 인터페이스를 재 정의함으로써, PC나 마이크로콘트롤러와 연동시킬 수 있는 장점이 있다.

Claims (7)

  1. 모듈러에 대한 곱셈의 역원 연산기에 있어서,
    n비트 2진 데이터 A를 최초 입력으로 하는 3개의 모듈러 승산기가 직렬접속되어 각각 입력값의 제곱을 수행한후 이를 각각 상기 모듈러로 나눈 나머지를 출력하는 제1군의 모듈러 승산기들과;
    n비트 2진 데이터 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모듈러 승산기로 구성함을 특징으로 하는 모듈러에 대한 곱셈의 역원 연산기.
  2. 청구항 1에 있어서, 상기 역원 연산기의 입력단과 출력단에 각각 상기 n비트 2진 데이터 A와 모듈러에 대한 곱셈의 역원을 저장하기 위한 래치회로를 더 포함함을 특징으로 하는 모듈러에 대한 곱셈의 역원 연산기.
  3. IDEA에 기반한 데이터 암호화 장치에 있어서,
    n비트의 평문을 m 비트 단위로 입력받기 위한 데이터 입력부와;
    k비트의 키(key) 비트를 m 비트 단위로 나누어 입력받기 위한 키 입력부와;
    상기 k비트의 키 비트로부터 매 라운드마다 필요한 서브키를 생성하기 위해 필요한 제어신호와, n비트의 평문을 암호문으로 변환하기 위해 필요한 제어신호를 발생하여 출력하는 제어부와;
    상기 데이터 입력부로부터 출력되는 n비트의 평문과 각 라운드의 출력값중 하나를 선택하여 l비트의 서브키를 이용하여 암호문으로 암호화하여 출력하는 암호화 처리부와;
    청구항 1에 기재된 모듈러에 대한 곱셈의 역원 연산기를 적어도 포함하며 상기 키 입력부로부터 출력되는 k비트의 키 데이터로부터 매 라운드마다 필요한 서브키를 생성하여 출력하는 서브키 생성부와;
    상기 암호화 처리부의 출력 데이터인 암호문을 출력하기 위한 데이터 출력부;를 포함함을 특징으로 하는 데이터 암호화 장치.
  4. 청구항 3에 있어서, 상기 서브키 생성부는;
    상기 키 입력부로부터 키데이터를 입력받아 저장하고 상기 제어부로부터 출력되는 쉬프트명령에 따라 입력받은 키데이터를 왼쪽으로 순환 시프트시키는 쉬프트 레지스터와;
    상기 쉬프트 레지스터의 출력을 저장하기 위한 메모리와;
    상기 메모리로부터 키데이터를 입력받아 모듈러에 대한 덧셈의 역원 연산과 모듈러에 대한 곱셈의 역원 연산을 수행하여 발생된 암호 서브키를 출력하는 역원 모듈과;
    상기 제어부로부터 출력되는 선택신호에 따라 상기 메모리로부터 출력되는 키데이터와 역원 모듈의 출력 데이터중 하나를 선택출력하는 멀티플렉서로 구성됨을 특징으로 하는 데이터 암호화 장치.
  5. 청구항 4에 있어서, 상기 제어부는;
    시스템 클럭을 카운팅하여 출력하는 카운터와;
    상기 카운팅된 타이밍값을 디코딩하여 타이밍 신호로 출력하는 디코더와;
    상기 타이밍 신호 입력에 따라 매 라운드마다 필요한 서브키를 생성하기 위해 필요한 제어신호와, 평문을 암호문으로 변환하기 위해 필요한 제어신호를 발생하여 출력하는 제어논리회로로 구성됨을 특징으로 하는 데이터 암호화 장치.
  6. 청구항 5에 있어서, 상기 암호화 처리부는 단일 라운드 구현 방식으로 설계됨을 특징으로 하는 데이터 암호화 장치.
  7. 청구항 3에 있어서, 상기 데이터 암호화 장치는 원칩 IC로 제작되어 고속 컴퓨팅을 위한 메인 프로세서와 연동함을 특징으로 하는 데이터 암호화 장치.
KR10-2001-0025595A 2001-05-10 2001-05-10 모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치 KR100406724B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0025595A KR100406724B1 (ko) 2001-05-10 2001-05-10 모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0025595A KR100406724B1 (ko) 2001-05-10 2001-05-10 모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치

Publications (2)

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

Family

ID=27704465

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0025595A KR100406724B1 (ko) 2001-05-10 2001-05-10 모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치

Country Status (1)

Country Link
KR (1) KR100406724B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115879555A (zh) * 2021-09-28 2023-03-31 合肥本源量子计算科技有限责任公司 量子模数快速乘法运算方法、装置及模数算术组件

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115879555A (zh) * 2021-09-28 2023-03-31 合肥本源量子计算科技有限责任公司 量子模数快速乘法运算方法、装置及模数算术组件

Also Published As

Publication number Publication date
KR100406724B1 (ko) 2003-11-20

Similar Documents

Publication Publication Date Title
US6088800A (en) Encryption processor with shared memory interconnect
Trichina et al. Simplified adaptive multiplicative masking for AES
KR100435052B1 (ko) 암호화장치
US5751811A (en) 32N +D bit key encryption-decryption system using chaos
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
US7907723B2 (en) Device, system and method for fast secure message encryption without key distribution
US20100208885A1 (en) Cryptographic processing and processors
US7912213B2 (en) Device, system and method for fast secure message encryption without key distribution
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
AU773982B2 (en) Method for making data processing resistant to extraction of data by analysis of unintended side-channel signals
WO2009031883A1 (en) Encryption processor
US10419207B2 (en) Cryptographic apparatuses and methods for encrypting and decrypting data using automata
Lee et al. On permutation operations in cipher design
CN114124359A (zh) 保留格式加密数据的方法、装置、电子设备及存储介质
KR100457177B1 (ko) 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기
Kotorowicz et al. On the implementation of cryptoalgorithms based on algebraic graphs over some commutative rings
Sadkhan A proposed genetic algorithm attack for public key cryptosystem
KR100406724B1 (ko) 모듈러 엔에 대한 곱셈의 역원 연산기 및 그를 포함하는데이터 암호화 장치
AbuJoodeh Exploring and Adapting AES Algorithm for Optimal Use as a Lightweight IoT Crypto Algorithm
Patro et al. Text-to-Image Encryption and Decryption Using Piece Wise Linear Chaotic Maps
KR100350207B1 (ko) 디지털 데이터의 엘-비트 입력 블록들을 엘-비트 출력비트들로 암호 변환하는 방법
Hafsa et al. Performance trade-offs of hybrid cryptosystem for medical images encryption-decryption
CA2617389C (en) Encryption processor with shared memory interconnect
RU2140709C1 (ru) Способ криптографического преобразования блоков цифровых данных
KR100380638B1 (ko) 병렬 Feistel 구조를 가진 데이터 암호 표준화시스템

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