KR100362458B1 - 암호화 처리장치, 암호화 처리방법 및 보안성을 손상시키지 않고 고속으로 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체 - Google Patents

암호화 처리장치, 암호화 처리방법 및 보안성을 손상시키지 않고 고속으로 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체 Download PDF

Info

Publication number
KR100362458B1
KR100362458B1 KR1019990014941A KR19990014941A KR100362458B1 KR 100362458 B1 KR100362458 B1 KR 100362458B1 KR 1019990014941 A KR1019990014941 A KR 1019990014941A KR 19990014941 A KR19990014941 A KR 19990014941A KR 100362458 B1 KR100362458 B1 KR 100362458B1
Authority
KR
South Korea
Prior art keywords
data
bit
output
sets
sub
Prior art date
Application number
KR1019990014941A
Other languages
English (en)
Other versions
KR19990083489A (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 마츠시타 덴끼 산교 가부시키가이샤
Publication of KR19990083489A publication Critical patent/KR19990083489A/ko
Application granted granted Critical
Publication of KR100362458B1 publication Critical patent/KR100362458B1/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/002Countermeasures against attacks on cryptographic mechanisms
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Abstract

본 발명은 복수의 치환 데이터 세트를 사용하여 입력 데이터를 암호화 처리하여 출력 데이터를 생성시키는 암호화 처리장치를 제공하기 위한 것이다. 저장수단은 소정수의 비트를 갖는 치환 데이터 (2^N)(N은 2 이상의 정수)세트를 저장한다. 서브데이터 생성수단은 (N×M)(M은 2 이상의 정수) 비트의 길이를 갖는 입력 데이터로부터 적어도 1세트의 N비트 서브데이터를 생성한다. 치환수단은 상기 서브데이터 생성수단에 의해 생성된 적어도 1세트의 서브데이터를 수신하고, 상기 적어도 1세트의 서브데이터 각각에 대하여 상기 저장수단 내의 치환 데이터 (2^N)세트 중의 하나를 특정하며, 상기 적어도 1세트의 서브데이터에 대하여 각각 특정된 적어도 1세트의 치환 데이터를 출력한다. 고정 변환 실행수단은 상기 치환수단으로부터 출력된 적어도 1세트의 치환 데이터에 대하여 복수의 상이한 고정 변환을 실행하여 소정수의 비트를 갖는 변환된 데이터 M 세트를 생성한다. 출력 데이터 생성수단은 상기 고정 변환 실행수단에 의해 생성된 변환된 데이터의 M세트에 기초하여 (N×M) 비트길이의 출력 데이터를 생성한다.

Description

암호화 처리장치, 암호화 처리방법 및 보안성을 손상시키지 않고 고속으로 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체{CRYPTOGRAPHIC PROCESSING APPARATUS, CRYPTOGRAPHIC PROCESSING METHOD, AND RECORDING MEDIUM RECORDING CRYPTOGRAPHIC PROCESSING PROGRAM FOR REALIZING HIGH-SPEED CRYPOGRAPHIC PROCESSING WITHOUT IMPAIRING SECURITY}
본 발명은 비밀키에 기초하여 블록단위로 데이터를 암호화/암호해독화하는 암호화 처리장치와, 이 암호화 처리장치에 사용되는 암호화 처리방법 및 이 암호화 처리방법에 대한 암호화 처리 프로그램을 기록하는 기록매체에 관한 것이다. 본 발명은 특히 보안성의 상실없이 치환표 데이터의 양과 치환표 데이터의 생성빈도를 감축시킴으로써 고속의 암호화 처리를 실현하는 암호화 처리기술에 관한 것이다.
디지털 통신에 의한 송금 등과 같은 다양한 종류의 정보통신이 최근 널리 퍼지게됨에 따라 인증되지 않은 제 3자에 의한 도청과 정보의 부정변경에 대항하여 중요한 메시지를 보호하는 기술에 대한 필요성이 대두되고 있다. 보안성을 향상시키는데 효과적인 이러한 기술의 대표적인 것으로 암호화라 불리는 기술이 있다.
암호화를 이용하는 통신 시스템에서, 원래의 메시지는 "평문(plaintext)"이라 하고, 그 평문을 제 3 자가 읽을 수 없도록 변환한 결과를 암호문(ciphertext)" 이라 하며, 평문에 대한 변환을 "암호화(encryption)"라 하고, 암호문을 원래의 평문으로 복구시키기 위한 암호문에 대한 역변환을 "암호해독(decryption)"이라 한다.
암호화와 암호해독의 패턴은 알고리즘과 그 알고리즘에 대한 파라미터로서 사용되는 키(key)에 의해 결정된다. 알고리즘은 변환의 계열(family)을 특정하나, 키는 계열의 변환중 하나를 특정한다. 일반적으로 암호화 처리장치에서 알고리즘은 변경되지 않으나 키는 때때로 변경된다.
암호문은 도청에 약점이 있는 것으로 추정된다. 알고리즘과 키에 대한 지식없이 공격자(attacker)에 의해 원래의 메시지를 얻을 수 있도록 포착된 암호문을 디코딩하는 행위를 "암호분석(cryptoanalysis)"이라 한다.
여기에서 이러한 공격자(이하, 암호분석가(cryptoanalyst)"라 함)는 암호문이 알려져 있다는 가정하에 암호분석을 실행한다.
암호문으로부터 비밀 평문 또는 키만을 유도하는 암호분석을 "암호문만 공격(ciphertest-only attack)"이라 하고, 암호문과 평문의 임의의 쌍으로부터 비밀키를 결정하고 주어진 암호문에 대응하는 평문을 특정하는 암호분석은 "기지의 평문공격(known-plaintext attack)"이라 한다.
<종래의 기술의 제 1 예>
종래의 암호체계의 일례로 의사난수 부가형 암호화(pseudo-random-number-add-type cryptography)가 있다.
이 기술에서 송신자와 수신자는 각각 비밀의 동일한 비밀키를 유지하고, 동일한 알고리즘을 포함하는 난수 생성기에서 시드(seed)로서 비밀키를 사용하여 소정 비트길이(이하, "블록"이라 함)의 난수를 생성시킨다. 암호화중에 송신자는 암호문을 생성시키기 위해 평문의 각 블록과 난수의 대응비트에 대한 배타적 논리합(Exclusive-OR) 연산을 수행한다. 암호해독중에 수신자는 원래의 평문을 얻기 위해 암호문의 각 블록과 난수의 대응비트에 대한 배타적 논리합 연산을 수행한다.
평문의 각 블록을 "M"이라 하고, 암호문의 각 블록을 "C"라 하며, 난수를 "R"이라 하고, (+)를 대응비트에 대한 배타적 논리합이라 한다. 암호화와 암호해독은 각각 다음의 수학식으로 나타낼 수 있다.
이 암호화의 결점은 기지의 평문공격에 약점이 있다는 점이다.
한쌍의 평문블록과 암호문 블록이 알려져 있는 것으로 가정하자. 난수 R은 다음의 수학식 3을 이용하여 유도할 수 있으며, 결과로서 다른 평문블록을 얻을 수 있다.
따라서 암호분석가는 기지의 평문 공격에 의해 의사난수 부가형 암호문을 용이하게 디코드할 수 있다.
<종래의 기술의 제 2 예>
한편 데이터 암호화 표준(Data Encryption Standard: DES)과 고속 데이터 암호화 알고리즘(Fast Data Encipherment Algorithm: FEAL)과 같은 암호체계는 기지의 평문공격에 대해 비교적 안정되어 있다. 이들 방법에 대한 상세한 사항은 교리쓰(Kyoritsu) 출판의 에이지 오카모토(Eiji Okamoto)의 암호화 이론에 대한 소개(Introduction to Encryption Theory)에 나타나 있다.
이들 암호체계에서 데이터는 64비트의 블록으로 분할되며 블록단위로 심하게 셔플링(shuffing)된다(뒤섞인다). DES 알고리즘의 경우에는 교차와 치환을 결합한 데이터 셔플링 처리가 각각의 블록에 대해 16단계 반복된다.
DES와 FEAL로 나타낸 블록암호의 일례로는 블로우피쉬 암호(Blowfish cipher)(이 암호에 대한 상세한 사항에 대해서는 Bruce Schneier의 "Description of a New Variable-Length Key, 64-Bit Block Cipher (Blowfish)" in Ross Anderson (ed.) Fast Software Encryption, Lecture Notes in Computer Science, vol.809, pp.191-204, published by Springer-Verlag 참고)가 있다.
다음의 설명은 블로우피쉬 암호에 대한 설명이다.
도 1은 블로우피쉬 암호를 이용하는 데이터 암호화장치의 구성도이다.
도 1에서, 데이터 암호화장치(3010)는 대략 데이터 셔플링부(3011)와, 스테이지수 제어부(3012)와, 서브키 생성부(3013)와, 치환표 데이터 생성부(3014)를 포함한다.
치환표 데이터 생성부(3014)는 치환표 데이터 생성 알고리즘에 따라 64비트 입력키 데이터로부터 32K 비트 치환표(1024 표값은 각각 32비트 길이임)를 생성시킨다. 치환표 데이터 생성 알고리즘은 본 발명의 주된 특징이 아니므로 그에 대한 설명은 생략한다.
서브키 생성부(3013)는 서브키 생성 알고리즘에 따라 64비트 입력키 데이터로부터 256비트 데이터를 생성시키고, 이 256비트 데이터를 32비트 서브키 데이터 SK0∼SK7의 8세트로 분할한다. 이 서브키 생성 알고리즘은 본 발명의 주된 특징이 아니기 때문에 그에 대한 설명은 생략한다.
데이터 셔플링부(3011)는 치환표 데이터 생성부(3014)에 의해 생성된 32K 비트 치환표 데이터와 서브키 생성부(3013)에 의해 생성된 32비트 서브키 데이터를 사용하여 64비트 입력 평문 데이터(이하, "평문블록"이라 함)에 대한 데이터 셔플링을 수행하여 획득된 64비트 데이터를 출력한다. 일반적으로 데이터 셔플링은 64비트 암호문 데이터(이하, "암호문 블록"이라 함)를 생성시키도록 16회 반복된다.
스테이지수 제어부(3012)는 평문블록으로부터 암호문 블록을 생성시키도록 데이터 셔플링부(3011)에 의해 수행되는 데이터 셔플링의 횟수를 제어한다. 스테이지수 제어부(3012)는 각각의 평문블록에 대하여 데이터 셔플링이 행해지는 횟수를 카운트한다. 카운트된 수가 소정의 수보다 작으면 스테이지수 제어부(3012)는 데이터 셔플링부(3011)의 출력 데이터를 입력한다. 카운트된 수가 소정의 수에 도달하면 스테이지수 제어부(3012)는 암호문 블록으로서 출력 데이터를 출력한다.
여기에서, 서브키 SK0이 먼저 평문블록에 대해 데이터 셔플링을 수행하기 위해 사용되며, 서브키 SK1∼SK7을 하나씩 이용하여 데이터 셔플링이 반복된다. 서브키 SK7 다음에 서브키 SK0이 다시 사용된다.
도 2는 블로우피쉬 암호를 사용하는 데이터 암호해독장치의 구성도이다.
도 2에서, 데이터 암호해독장치(4010)는 대략 데이터 셔플링부(4011)와, 스테이지수 제어부(4012)와, 서브키 생성부(4013)와, 치환표 데이터 생성부(4014)로 구성된다.
데이터 셔플링부(4011), 서브키 생성부(4013) 및 치환표 데이터 생성부(4014)는 도 1에 도시된 데이터 셔플링부(3011), 서브키 생성부(3013) 및 치환표 데이터 생성부(3014)와 동일하다.
스테이지수 제어부(4012)는 암호문 블록으로부터 평문 블록을 생성시키도록 데이터 셔플링부(4011)에 의해 수행되는 데이터 셔플링의 횟수를 제어한다. 스테이지수 제어부(4012)는 각각의 암호문 블록에 대하여 데이터 셔플링이 행해지는 횟수를 카운트한다. 카운트된 수가 소정의 수보다 작으면 스테이지수 제어부(4012)는 데이터 셔플링부(4011)의 출력 데이터를 입력한다. 카운트된 수가 소정의 수에 도달하면 스테이지수 제어부(4012)는 평문 블록으로서 출력 데이터를 출력한다.
여기에서, 서브키 SK7이 먼저 암호문 블록에 대해 데이터 셔플링을 수행하기 위해 사용되며, 서브키 SK6∼SK0을 하나씩 이용하여 데이터 셔플링이 반복된다. 서브키 SK0 다음에 서브키 SK7이 다시 사용된다.
도 3은 도 1에 도시된 데이터 셔플링부(3011)의 상세한 구성을 나타낸 도면이다.
이 데이터 셔플링부(3011)는 제 1 배타적 논리합 연산부(3111), 제 2 배타적 논리합 연산부(3112) 및 데이터 변환부(3113)를 포함한다.
제 1 배타적 논리합 연산부(3111)는 64비트 입력 데이터의 상위의 32비트(도 3의 "X1")와 32비트 서브키 데이터의 대응하는 비트에 대한 배타적 논리합 연산을 취하여 결과의 32비트 데이터 S0을 출력한다. 이 S0은 데이터 변환부(3113)에 입력되는 동시에 64비트 출력 데이터의 하위 32비트(도 3의 "Y0")로 된다.
데이터 변환부(3113)는 소위 f 함수라 한다. 데이터 변환부(3113)는 32K 비트 치환표 데이터를 이용하여 32비트 데이터 S0을 변환하고 32비트 변환된 데이터 S1을 출력한다.
제 2 배타적 논리합 연산부(3112)는 64비트 입력 데이터의 하위의 32비트(도 3의 "X0")와 32비트 데이터 S1의 대응하는 비트에 대한 배타적 논리합 연산을 취하여 그 결과의 32비트 데이터 Y1을 출력한다. 이 Y1은 64비트 출력 데이터의 상위 32비트로 된다.
보다 구체적으로 데이터 셔플링부(3011)는 다음과 같이 동작한다.
(1) 우선 64비트 입력 데이터는 상위의 32비트 X1과 하위의 32비트 X0으로 분할된다.
(2) 제 1 배타적 논리합 연산부(3111)는 32비트 데이터 X1과 32비트 서브키 데이터의 대응하는 비트에 대한 배타적 논리합을 구한다. 결국 32비트 데이터 S0이 생성되어 64비트 출력 데이터의 하위 32비트로서 설정된다.
(3) 데이터 변환부(3113)는 32비트 데이터 S0을 변환하여 32비트 변환된 데이터 S1을 출력한다.
(4) 제 2 배타적 논리합 연산부(3112)는 32비트 데이터 S1과 32비트 데이터 X0의 대응하는 비트에 대한 배타적 논리합을 구한다. 결국 32비트 데이터 S0이 생성되어 64비트 출력 데이터의 상위 32비트로서 설정된다.
Y1과 Y0으로 구성되는 64비트 출력 데이터는 클록(도시생략)과 동기하여 데이터 셔플링부(3011)로부터 출력된다.
도 4는 도 2에 도시된 데이터 셔플링부(4011)의 상세 구성도이다.
이 데이터 셔플링부(4011)는 제 1 배타적 논리합 연산부(4111), 제 2 배타적 논리합 연산부(4112) 및 데이터 변환부(4113)를 포함한다.
제 1 배타적 논리합 연산부(4111)는 64비트 입력 데이터의 하위의 32비트(도 4의 "Z0")와 32비트 서브키 데이터의 대응하는 비트에 대한 배타적 논리합 연산을 실행하고 그 결과의 32비트 데이터 W1을 출력한다. 이 W1은 64비트 출력 데이터의 상위 32비트로 된다. 한편 Z0은 32비트 데이터 T0으로서 데이터 변환부(4113)에 입력된다.
데이터 변환부(4113)는 데이터 변환부(3113)와 마찬가지로 소위 f 함수라 한다. 데이터 변환부(4113)는 32K 비트 치환표 데이터를 이용하여 32비트 데이터 T0을 변환하고 32비트 변환된 데이터 T1을 출력한다.
제 2 배타적 논리합 연산부(4112)는 64비트 입력 데이터의 상위의 32비트(도 4의 "Z1")와 32비트 데이터 T1의 대응하는 비트에 대한 배타적 논리합 연산을 실행하여 그 결과의 32비트 데이터 W0을 출력한다. 이 W0은 64비트 출력 데이터의 하위 32비트로 된다.
데이터 셔플링부(4011)의 특정 동작은 데이터 셔플링부(3011)와 유사하므로 그에 대한 설명은 생략한다.
도 5는 도 3에 도시된 데이터 변환부(3113)의 상세 구성도이다.
이 데이터 변환부(3113)는 제 1 치환표 데이터 저장부(3201), 제 2 치환표 데이터 저장부(3202), 제 3 치환표 데이터 저장부(3203), 제 4 치환표 데이터 저장부(3204), 제 1 가산부(3205), 제 2 가산부(3206) 및 배타적 논리합 연산부(3207)을 포함한다.
32K 비트 치환표 데이터는 상위비트로부터 4개 세트의 8K 비트 치환표 데이터 R3, R2, R1 및 R0으로 분할된다.
32비트 입력 데이터 S0은 상위비트로부터 4개 세트의 8비트 데이터 V3, V2, V1 및 V0으로 분할된다.
제 1 ∼제 4 치환표 데이터 저장부(3201∼3204)는 각각 4개 세트의 8K 비트 치환표 데이터 R3, R2, R1 및 R0을 각각 저장하며, 이 각각의 8K 비트 치환표 데이터 세트는 상위비트로부터 32비트 길이를 갖는 256 표값으로 분할된다. 4개 세트의 8비트 데이터 V3, V2, V1 및 V0은 각각 제 1∼제 4 치환표 데이터 저장부 (3201∼3204)에 입력되며, 제 1∼제 4 치환표 데이터 저장부(3201∼3204)는 V3∼V1에 기초하여 256개의 저장된 표값중의 하나를 특정하여 출력한다. 이 예에서 제 1 치환표 데이터 저장부(3201)에 저장된 256개의 32비트 표값은 비트가 감소하는 순서로 Tab1[0], Tab1[1], …, Tab1[255]로서 설정된다. 이와 유사하게 제 2 치환표 데이터 저장부(3202)에 저장된 256개의 32비트 표값은 Tab2[0], Tab2[1], …, Tab2[255]로서 설정되고, 제 3 치환표 데이터 저장부(3203)에 저장된 256개의 32비트 표값은 Tab3[0], Tab3[1], …, Tab3[255]로서 설정되며, 제 4 치환표 데이터 저장부(3204)에 저장된 256개의 32비트 표값은 Tab4[0], Tab4[1], …, Tab4[255]로서 설정된다.
제 1 가산부(3205)는 제 1 치환표 데이터 저장부(3201)로부터 출력된 32비트 표값과 제 2 치환표 데이터 저장부(3202)로부터 출력된 32비트 표값에 대한 산술가산을 행하여 32번째 비트 이상의 자리올림은 무시하고 하위 32비트 데이터를 출력한다.
제 1 치환표 데이터 저장부(3201)로부터 출력된 32비트 표값이 "J3"로서 설정되면 제 2 치환표 데이터 저장부(3202)로부터 출력된 32비트 표값은 "J2"로서 설정되며, 제 1 가산부(3205)로부터 출력된 32비트 데이터는 "Q0"로서 설정되고, 상술한 가산은 다음의 식으로 나타낸다.
Q0=(J3+J2) mod (2^32)
여기에서 "a^b"는 a의 b승을 나타내고, "α mod β"는 α를 β로 나누었을 때의 나머지를 나타낸다. 이들 관계는 이하의 식에도 적용된다.
배타적 논리합 연산부(3207)는 제 3 치환표 데이터 저장부(3203)로부터 출력된 32비트 표값과 32비트 데이터 Q0의 대응하는 비트에 대한 배타적 논리합 연산을 실행하여 그 결과의 32비트 데이터를 출력한다.
제 3 치환표 데이터 저장부(3203)로부터 출력된 32비트 표값이 "J1"로서 설정되고 배타적 논리합 연산부(3207)로부터 출력된 32비트 데이터가 "Q1"로서 설정되면 배타적 논리합 연산부(3207)의 연산은 다음의 식으로 나타낸다.
Q1=Q0(+)J1
여기에서 "α+β"는 α와 β의 비트를 대응시키는 배타적 논리합 연산을 나타낸다.
제 2 가산부(3206)는 제 4 치환표 데이터 저장부(3204)로부터 출력된 32비트 표값과 32비트 데이터 Q1을 산술가산하여 그 결과의 32번째 비트 이상의 자리올림은 무시하고 하위 32비트 데이터를 출력한다.
제 4 치환표 데이터 저장부(3204)로부터 출력된 32비트 표값이 "J0"으로서 설정되고 제 2 가산부(3206)로부터 출력된 32비트 데이터가 "Q2"로서 설정되면, 제 2 가산부(3206)의 연산은 다음의 식으로 나타낸다.
Q2=(Q1+J0) mod (2^32)
여기에서 Q2는 데이터 변환부(3113)의 32비트 출력 데이터 S1이다.
이 데이터 변환부(3113)의 동작은 다음과 같다.
(1) 32K 비트 입력 치환표 데이터는 최상위 비트로부터 4개 세트의 치환표 데이터 R3, R2, R1, R0으로 분할되며, 이들 각각은 256개의 32비트 표값으로 구성된다. R3∼R0은 제 1∼제 4 치환표 데이터 저장부(3201∼3204)에 각각 저장된다.
(2) 32 비트 입력 치환표 데이터 S0은 최상위 비트로부터 4개 세트의 8비트 데이터 V3, V2, V1, V0으로 분할되며, 이들 각각은 제 1∼제 4 치환표 데이터 저장부(3201∼3204)에 각각 입력된다.
(3) 제 1∼제 4 치환표 데이터 저장부(3201∼3204)는 각각 V3∼V0에 기초하여 256개의 기억된 표값중의 하나를 각각 특정하여 출력한다. 결국, 4개의 32비트 표값 J3∼J0은 제 1∼제 4 치환표 데이터 저장부(3201∼3204)로부터 각각 출력된다.
(4) 제 1 가산부(3205)는 J3와 J2에 대한 산술가산을 실행하여 32번째 비트 이상의 자리올림을 무시하고 그 결과의 하위 32비트 데이터 Q0을 출력한다.
(5) 배타적 논리합 연산부(3207)는 Q0과 J1의 비트를 대응시키는 배타적 논리합 연산을 실행하고 그 결과의 하위 32비트 데이터 Q1을 출력한다.
(6) 제 2 가산부(3206)는 Q1과 J0에 대한 산술가산을 실행하여 32번째 비트 이상의 자리올림을 무시하고 그 결과의 하위 32비트 데이터 Q2(=S1)을 출력한다.
상술한 데이터 셔플링부(3011)를 사용하는 데이터 암호체계의 보안성은 데이터 변환부(3113)에서 실행되는 변환동작의 데이터 셔플링 기능에 상당히 좌우된다. 데이터 변환부(3113)는 서로 분리되어 동작하는 4개의 치환표 데이터 저장부(3201∼3204)를 구비하고 있기 때문에 이 암호체계는 암호분석과 다른 비인증 공격에 대해 상당히 안전하다.
도 4에 도시된 데이터 변환부(4113)는 데이터 변환부(3113)와 동일한 구성을 갖기 때문에 그에 대한 설명은 생략한다.
<종래기술의 제 3 예>
블록 암호에 대하여 사용된 대표적인 암호분석 기술은 미분 암호분석과 선형 암호분석이다. 제 3 예의 암호체계는 이러한 암호분석 기술에 대한 내성을 향상시키도록 설계되어 있다. 미분 암호분석과 선형 암호분석은 E. Bihan Shamir의 Differential Cryptanalysis of the Data Encrypto Standard(Springer-Verlag 출판)와, M. Matsui의 "Linear Cryptanalysis Method for DES Cipher (I)"(1993 Symposium on Cryptography and Information Security(SCIS '93), Lecture Notes SCIS93-3C)에 상세히 기술되어 있다.
미분 암호분석과 선형 암호분석은 복수의 평문과 암호문의 쌍을 분석함으로써 키 데이터를 특정하는 기지의 평문 공격에 속한다. 이들 암호분석 기술은 디코드될 암호문의 모든 암호문 블록이 동일한 키 데이터를 사용하여 생성된다는 전제하에 세워진 것이다.
따라서 각 평문 블록을 암호화하기 위해 상이한 키 데이터를 사용함으로써 이들 암호화 분석기술에 대한 암호화의 보안성을 강화시킬 수 있다.
여기에서 보다 많은 평문 블록을 위해 보다 많은 세트의 키 데이터가 작성되어야 하기 때문에 평문 블록의 수와 같은 수의 키데이터 세트를 준비하는 것은 실용적이지 않다. 이를 피하기 위해 키 데이터를 갱신하도록 가변 정보로서 바로 선행하는 암호문을 사용하는 방법이 미국특허 제4,074,066호에 발표되어 있다(블록 연쇄에 의한 메시지 검사 및 전송 에러 검출(일본특허 제1,250,077호)). 이 방법에 따르면 평문 블록과 동일한 수의 키 데이터 세트를 준비하지 않고도 평문 블록이암호화될 때마다 키 데이터가 갱신된다. 새로운 키 데이터가 원래의 키 데이터로부터 매번 생성되기 때문에 미분 암호분석 및 선형 암호분석에 대한 보호가 키 데이터의 양을 증가시키지 않고도 향상될 수 있다.
그러나 제 2 예에서 데이터 셔플링부(3011)는 많은 양의 치환 키 데이터(32K 비트)를 저장하여야 하므로 하드웨어의 소형화와 소프트웨어 실행의 관점에서 문제가 있다. 또한 이러한 방대한 양의 치환키 데이터를 생성시키기 위해서는 상당한 처리시간이 필요하다. 그럼에도 불구하고 치환표 데이터의 양을 감축시키는 것은 암호화 보안성을 손상시키기 때문에 바람직하지 않다.
제 3 예에서 키연쇄 방법이 제 2 예의 블로우피쉬 암호에 적용되면 다음의 문제가 발생한다.
상술한 바와 같이, 제 2 예의 블로우피쉬 암호는 입력 키 데이터로부터 32K 비트 치환표 데이터를 생성시키나, 제 3 예의 키연쇄 방법은 평문 블록이 암호화될 때마다 입력키 데이터를 갱신한다. 따라서 키연쇄 방법이 블로우피쉬 암호에 사용되면 새로운 치환표 데이터는 평문 블록이 암호화될 때마다 생성된다. 치환표 데이터의 양이 방대(32K 비트)하기 때문에 이러한 치환표 데이터의 빈번한 생성은 프로세서에 상당한 부담을 일으켜 암호화를 위한 처리속도를 심각하게 감소시킨다. 그러나 치환표 데이터가 생성되는 횟수를 감축시키는 것은 암호화의 보안성을 저하시키기 때문에 바람직하지 못하다.
상술한 문제점은 블로우피쉬 암호 뿐아니라 입력키 데이터로부터 생성되는치환표 데이터를 사용하여 암호화 처리를 실행하는 다른 블록 암호에서도 존재한다.
본 발명은 상술한 문제점을 감안하여 이루어진 것으로, 본 발명의 목적은 암호화 처리장치와, 암호화 처리방법과, 암호화 처리의 사용을 위한 입력키 데이터에 기초하여 치환표 데이터를 생성하는 블로우피쉬 암호와 같은 블록 암호로 보안성의 상실없이 치환표 데이터의 양과 치환표 데이터의 생성빈도를 감축시킴으로써 고속의 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체를 제공하기 위한 것이다.
도 1은 블로우피쉬 암호를 사용하는 데이터 암호화장치(3010)의 구성도.
도 2는 블로우피쉬 암호를 사용하는 데이터 암호해독장치(4010)의 구성도.
도 3은 도 1에 도시된 데이터 셔플링부(3011)의 상세 구성도.
도 4는 도 2에 도시된 데이터 셔플링부(4011)의 상세 구성도.
도 5는 도 3에 도시된 데이터 변환부(3113)의 상세 구성도.
도 6은 본 발명의 제 1 실시예의 암호화 통신시스템의 구성도.
도 7은 도 6에 도시된 데이터 암호화장치(10)의 상세 구성도.
도 8은 도 6에 도시된 데이터 암호해독장치(20)의 상세 구성도.
도 9는 도 7에 도시된 데이터 셔플링부(101)의 상세 구성도.
도 10은 도 8에 도시된 데이터 셔플링부(201)의 상세 구성도.
도 11은 도 9에 도시된 데이터 변환부(300)의 상세 구성도.
도 12는 본 발명의 제 2 실시예의 데이터 변환부의 상세 구성도.
도 13은 본 발명의 제 3 실시예의 암호화 통신 시스템의 구성도.
도 14는 도 13에 도시된 데이터 암호화장치(60)의 상세 구성도.
도 15는 도 13에 도시된 데이터 암호해독장치(70)의 상세 구성도.
도 16은 도 14에 도시된 데이터 암호화부(601)의 상세 구성도.
도 17은 도 15에 도시된 데이터 암호해독부(701)의 상세 구성도.
도 18은 블록번호 t, 실제키 데이터, 입력키 데이터, 치환표 데이터의 대응을 나타낸 도면.
상술한 목적은 복수의 치환 데이터 세트를 사용하여 입력 데이터를 암호화 처리하여 출력 데이터를 생성시키는 암호화 처리장치에 의해 달성될 수 있으며, 상기 암호화 처리장치는 소정수의 비트를 갖는 치환 데이터 (2^N)(N은 2 이상의 정수)세트를 저장하는 저장수단과; (N×M)(M은 2 이상의 정수) 비트의 길이를 갖는 입력 데이터로부터 적어도 1세트의 N비트 서브데이터를 생성하는 서브데이터 생성수단과; 상기 서브데이터 생성수단에 의해 생성된 적어도 1세트의 서브데이터를 수신하고, 상기 적어도 1세트의 서브데이터 각각에 대하여 상기 저장수단 내의 치환 데이터 (2^N)세트 중의 하나를 특정하며, 상기 적어도 1세트의 서브데이터에 대하여 각각 특정된 적어도 1세트의 치환 데이터를 출력하는 치환수단과; 상기 치환수단으로부터 출력된 적어도 1세트의 치환 데이터에 대하여 복수의 상이한 고정 변환을 실행하여 소정수의 비트를 갖는 변환된 데이터 M 세트를 생성시키는 고정 변환 실행수단과; 상기 고정 변환 실행수단에 의해 생성된 변환된 데이터의 M세트에 기초하여 (N×M) 비트길이의 출력 데이터를 생성시키는 출력 데이터 생성수단을 포함한다.
이러한 구성에 따라 소량의 치환표 데이터로 높은 암호화 보안성이 얻어지므로 하드웨어의 소형화/소프트웨어 실행에서 바람직한 암호화 처리장치가 실현될 수 있다.
여기에서 상기 소정의 수는 (N×M)이며, 상기 서브데이터 생성수단은 (N×M)비트 입력데이터를 N비트의 서브데이터 M세트로 분할하는 분할수단을 포함하고, 상기 치환수단은 상기 분할수단에 의해 생성된 서브데이터 M세트에 대해 상기 저장수단 내의 치환 데이터의 (2^N) 세트중에서 (N×M)비트 치환 데이터 M세트를 특정하고, 각각의 길이가 (N×M)비트인 특정된 치환 데이터 M세트를 출력하며, 상기 고정 변환 실행수단은 상기 치환수단으로부터 출력된 치환 데이터 M세트에 대하여 M회의 상이한 고정 변환을 실행하여 (N×M) 비트 변환된 데이터 M세트를 생성시키며, 상기 출력 데이터 생성수단은 생성된 변환 데이터 M세트에 대해 병합처리를 실행하여 (N×M) 비트 길이인 출력 데이터를 생성한다.
이러한 구성으로 치환표 데이터의 크기가 보안성을 손상시키지 않고도 종래기술의 치환표 데이터의 크기의 1/M로 감축되므로 하드웨어의 소형화/소프트웨어 실행에서 바람직한 암호화 처리장치를 실현할 수 있다.
여기에서 상기 소정의 수는 N이며, 상기 서브데이터 생성수단은 (N×M)비트 입력 데이터를 N비트 부분데이터 M세트로 분할하는 분할수단과, 상기 M세트의 부분데이터에 대하여 글로벌 병합처리를 실행하여 N비트 서브데이터 세트를 생성하는 입력병합수단을 포함하고, 상기 치환수단은 상기 입력 병합수단에 의해 생성된 서브데이터 세트에 대하여 상기 저장수단 내의 N비트 치환 데이터 (2^N)세트 중의 하나를 특정하며, 그 특정된 세트의 치환 데이터를 출력하고, 상기 고정 변환 실행수단은 상기 치환수단으로부터 출력된 치환 데이터의 세트에 대해 각각 M회 상이한 고정변환을 별도로 실행하여 N비트 변환된 데이터 M세트를 생성하며, 상기 출력 데이터 생성수단은 부분데이터 M세트의 각각과 그 부분데이터의 세트에 대응하는 변환된 데이터의 M세트중의 상이한 하나에 대하여 개개의 병합처리를 실행하여 N비트 출력 병합 데이터 M세트를 생성하는 출력 병합수단과, 상기 출력 병합수단에 의해 생성된 출력 병합 데이터 M세트를 결합하여 (N×M)비트 출력 데이터를 생성하는 결합수단을 포함한다.
이러한 구성으로 치환표 데이터의 크기가 보안성을 손상시키지 않고도 종래기술의 치환표 데이터의 크기의 1/M로 감축되므로 하드웨어의 소형화/소프트웨어 실행에서 바람직한 암호화 처리장치를 실현할 수 있다.
상술한 목적은 또한 치환표 데이터 세트를 생성시키고 그 치환 데이터 세트를 사용하여 입력 데이터를 암호화 처리하여 출력 데이터를 생성시키는 암호화 처리장치에 의해 달성될 수 있으며, 상기 암호화 처리장치는 키데이터 세트를 저장하는 키데이터 저장부와; 치환표 데이터 세트를 저장하는 치환표 데이터 저장부와; 입력 데이터를 소정 수의 비트를 갖는 입력 블록으로 분할하고 그 입력 블록을 하나씩 출력하는 블록 생성부와; 특정수의 입력블록이 암호화처리된 직후에 입력블록이 암호화 처리되면 치환표 데이터 세트를 생성하고 치환표 데이터 저장부의 치환표 데이터 세트를 생성된 치환표 데이터 세트로 교체하는 치환표 데이터 생성부와; 입력블록에 바로 선행하는 입력블록이 암호화 처리된 후 입력블록이 암호화 처리될 때 바로 선행하는 입력블록이 암호화처리되는 결과로서 생성되는 출력블록을 이용하여 키데이터 세트에 대한 비트변환을 실행함으로써 키데이터 저장부내의 키데이터 세트를 변환하는 키데이터 변환부와; 키데이터 변환부에 의해 생성된 변환된 키데이터의 세트와 키데이터 저장부에 저장된 키데이터 세트 중의 하나와 치환표 데이터 저장부내의 치환표 데이터 세트를 사용하여 블록 생성부로부터 출력된 입력블록을 암호화처리하여 출력블록을 생성시키는 암호화 처리부를 포함한다.
상술한 목적은 또한 치환표 데이터 세트를 생성시키고 그 치환 데이터 세트를 사용하여 입력 데이터를 암호화 처리하여 출력 데이터를 생성시키는 암호화 처리장치에 의해 달성될 수 있으며, 상기 암호화 처리장치는 키데이터 세트를 저장하는 키데이터 저장부와; 치환표 데이터 세트를 저장하는 치환표 데이터 저장부와; 입력 데이터를 소정 수의 비트를 갖는 입력 블록으로 분할하고 그 입력 블록을 하나씩 출력하는 블록 생성부와; 특정수의 입력블록이 암호화처리된 직후에 입력블록이 암호화 처리되면 치환표 데이터 세트를 생성하고 치환표 데이터 저장부의 치환표 데이터 세트를 생성된 치환표 데이터 세트로 교체하는 치환표 데이터 생성부와; 입력블록에 바로 선행하는 입력블록이 암호화 처리된 후 입력블록이 암호화 처리될 때 바로 선행하는 입력블록을 사용하여 키데이터 세트에 관한 비트변환을 실행함으로써 키데이터 저장부내의 키데이터 세트를 변환하는 키데이터 변환부와; 키데이터 변환부에 의해 생성된 변환된 키데이터 세트와 키데이터 저장부에 저장된 키데이터 세트 중의 하나와 치환표 데이터 저장부내의 치환표 데이터 세트를 사용하여 블록 생성부로부터 출력된 입력블록을 암호화처리하여 출력블록을 생성시키는 암호화 처리부를 포함한다.
상술한 목적은 또한 치환표 데이터 세트를 생성시키고 그 치환 데이터 세트를 사용하여 입력 데이터를 암호화 처리하여 출력 데이터를 생성시키는 암호화 처리장치에 의해 달성될 수 있으며, 상기 암호화 처리장치는 키데이터 세트를 저장하는 키데이터 저장부와; 치환표 데이터 세트를 저장하는 치환표 데이터 저장부와; 입력 데이터를 소정 수의 비트를 갖는 입력 블록으로 분할하고 그 입력 블록을 하나씩 출력하는 블록 생성부와; 특정수의 입력블록이 암호화처리된 직후에 입력블록이 암호화 처리되면 치환표 데이터 세트를 생성하고 치환표 데이터 저장부의 치환표 데이터 세트를 생성된 치환표 데이터 세트로 교체하는 치환표 데이터 생성부와; 입력블록에 바로 선행하는 입력블록이 암호화 처리된 후 입력블록이 암호화 처리될 때 바로 선행하는 입력블록을 암호화 처리하는 동안 생성된 중간블록을 사용하여 키데이터 세트에 관한 비트변환을 실행함으로써 키데이터 저장부내의 키데이터 세트를 변환하는 키데이터 변환부와; 키데이터 변환부에 의해 생성된 변환된 키데이터 세트와 키데이터 저장부에 저장된 키데이터 세트 중의 하나와 치환표 데이터 저장부내의 치환표 데이터 세트를 사용하여 블록 생성부로부터 출력된 입력블록을 암호화처리하여 입력블록에 대한 암호화처리중에 중간블록을 생성하고 입력블록에 대한 암호화 처리의 결과로서 출력블록을 생성시키는 암호화 처리부를 포함한다.
이러한 구성으로 입력블록이 암호화 처리될 때마다 키데이터가 갱신되는 동안 키데이터로부터 유도된 치환표 데이터가 키데이터의 갱신마다 응답하여 갱신되지는 않으나 특정수의 입력블록이 암호화처리되는 경우에만 갱신된다. 따라서 보안성의 손실없이 고속의 암호화 처리를 실현할 수 있다.
상술한 본 발명의 목적과 기타의 목적 및 이점과 특징은 본 발명의 특정 실시예를 나타낸 첨부도면과 관련한 다음의 상세한 설명을 통해 보다 명백해질 것이다.
(실시예)
(제 1 실시예)
도 5에 도시된 제 1 내지 제 4 치환표 데이터 저장부(3201∼3204)는 치환표 데이터 세트를 공유하며, 데이터 변환부(3113)에 저장된 치환표 데이터의 양은 비록 다음의 보안성 문제를 발생시키기는 하지만 원래의 양의 1/4로 감축된다.
예컨대 도 5에서 V2=V3이면, 제 1 치환표 데이터 저장부(3201)와 제 2 치환표 데이터 저장부(3202)가 치환표 데이터 세트를 공유하여 J2=J3이기 때문에 제 1 가산부(3205)는 2개의 등가치에 대해 산술 가산을 실행한다. 이러한 암호체계는 낮은 데이터 셔플링 기능을 가질뿐이므로 비인증 공격에 대한 보증이 불확실하다.
본 발명의 제 1 실시예의 암호화 처리장치는 치환표 데이터 세트로부터 복수의 표값을 검색하고 그 복수의 표값에 대해 상이한 시프트 비트길이에 의한 회전과 같은 상이한 고정변환과 상이한 상수의 가산을 실행한다. 그렇게함으로써 암호화 처리장치는 치환표 데이터의 양이 보안성의 상실없이 감축되는 경우의 암호화와 암호해독(이하, 통칭하여 "암호화처리"라 함)을 실현한다.
도 6은 본 발명의 제 1 실시예의 암호화된 통신시스템의 구성도이다.
도 6과 이 명세서에서 사용된 다른 도면에서, 2중 박스로 나타낸 각 구성요소(예를들면, 도 6의 데이터 암호화장치(10)와 데이터 암호해독장치(20))는 다른 도면에 상세히 도시되어 있다.
도 6에서 암호화 통신 시스템은 송신기(1)와 수신기(2)를 포함한다.
송신기(1)와 수신기(2)는 예컨대 디지털 이미지 정보의 송수신을 위한 비디오 서버 시스템내의 서버와 터미널이다.
송신기(1)는 데이터 암호화장치(10)와 송신부(11)를 구비한다.
데이터 암호화장치(10)는 256비트 키데이터와 8K 비트 치환표 데이터(각각 32비트 길이를 갖는 256개의 표값)를 사용하여 64비트의 단위로 평문 데이터를 암호화하여 암호문 데이터를 생성시킨다. 여기에서 평문 데이터는 예를들면 디지털 부호화된 오디오 또는 이미지 정보이다. 또한 동일한 키데이터와 치환표 데이터가 송신기(1)와 수신기(2)에 의해 비밀로 유지된다.
송신부(11)는 데이터 암호화장치(10)에 의해 생성된 암호문 데이터에 대해 병렬직렬 변환, 변조 및 증폭을 실행하여 얻어진 송신신호를 송신선(3)에 출력한다.
수신기(2)는 데이터 암호해독장치(20)와 수신부(21)를 구비한다.
수신부(21)는 송신선(3)을 통해 송신부(11)로부터 송신신호를 수신하여 송신신호에 대한 송신부(11)의 역처리를 실행하여 암호문 데이터를 복구한다.
데이터 암호해독장치(20)는 암호해독된 텍스트 데이터(원래의 평문 데이터)를 얻을 수 있도록 256비트 키데이터와 8K 비트 치환표 데이터(각각 32비트 길이를 갖는 256개의 표값)를 사용하여 64비트의 단위로 암호문 데이터를 암호해독한다.
여기에서 얻어지는 암호해독된 텍스트 데이터는 예를들면 디지털 부호화된 오디오 또는 이미지 정보이다. 이러한 정보는 전용 디코더(도시생략)에 의해 디코드되고 스피커 또는 디스플레이를 통해 재생된다.
도 7은 도 6에 도시된 데이터 암호화장치(10)의 상세 구성도이다.
이 데이터 암호화장치(10)는 대략 데이터 셔플링부(101), 스테이지수 제어부(102) 및 키제어부(103)로 구성된다.
키제어부(103)는 256비트의 키데이터를 최상위 비트로부터 8개 세트의 32비트 서브키 데이터 K0∼K7로 분할한다. 64비트 데이터는 매번 데이터 셔플링부(101)부에 입력되고, 키제어부(103)는 한번에 하나씩 서브키 데이터 K0∼K7을 데이터 셔플링부(101)에 출력한다. 서브키 데이터 K7 다음에 서브키 데이터 K0이 다시 출력된다.
데이터 셔플링부(101)는 8K 비트 치환표 데이터와 32비트 서브키 데이터를 사용하여 64비트 입력 데이터에 대한 데이터 셔플링을 실행하여 획득된 64비트 데이터를 출력한다.
스테이지수 제어부(102)는 평문블록으로부터 암호문 블록을 생성시키기 위해 데이터 셔플링부(101)에 의해 데이터 셔플링이 실행되는 횟수를 제어한다. 스테이지수 제어부(102)는 각각의 평문블록에 대해 데이터 셔플링이 실행되는 횟수를 카운트한다. 카운트된 수가 소정의 수보다 작으면 데이터 셔플링부(101)로부터 출력된 64비트 데이터는 리셔플링을 위해 데이터 셔플링부(101)에 입력된다. 카운트된 수가 소정의 수와 같으면 스테이지수 제어부(102)는 암호문 블록으로서 데이터 셔플링부(101)의 64비트 출력 데이터를 출력한다. 본 실시예에서 소정의 수는 8로 설정된다.
도 8은 도 6에 도시된 데이터 암호해독장치(20)의 상세 구성도이다.
이 데이터 암호해독장치(20)는 대략 데이터 셔플링부(201), 스테이지수 제어부(202) 및 키제어부(203)로 구성된다.
키제어부(203)는 256비트 키데이터를 최상위비트로부터 8개 세트의 32비트 서브키 데이터 K0∼K7로 분할한다. 64비트 데이터는 매번 데이터 셔플링부(201)부에 입력되고, 키제어부(203)는 한번에 하나씩 서브키 데이터 K7∼K0을 데이터 셔플링부(201)에 출력한다. 서브키 데이터 K0 다음에 서브키 데이터 K7이 다시 출력된다.
데이터 셔플링부(201)는 도 7의 데이터 셔플링부(101)와 동일하다.
스테이지수 제어부(202)는 암호문블록으로부터 64비트의 암호해독된 텍스트 데이터(이하, "암호해독된 텍스트 블록"이라 함)를 생성시키기 위해 데이터 셔플링부(201)에 의해 데이터 셔플링이 실행되는 횟수를 제어한다. 스테이지수 제어부(202)는 각각의 암호문 블록에 대해 데이터 셔플링이 실행되는 횟수를 카운트한다. 카운트된 수가 소정의 수보다 작으면 데이터 셔플링부(201)로부터 출력된 64비트 데이터는 리셔플링을 위해 데이터 셔플링부(201)에 입력된다. 카운트된 수가 소정의 수에 달하면 스테이지수 제어부(202)는 암호해독된 텍스트 블록으로서 데이터 셔플링부(201)의 64비트 출력 데이터를 출력한다. 여기에서 소정의 수는 8로 설정된다.
도 9는 도 7에 도시된 데이터 셔플링부(101)의 상세 구성도이다.
데이터 셔플링부(101)는 제 1 배타적 논리합 연산부(1011), 제 2 배타적 논리합 연산부(1012) 및 데이터 변환부(300)를 포함한다.
이 데이터 셔플링부(101)는 도 3에 도시된 데이터 셔플링부(3011)와 거의 유사하다.
제 1 배타적 논리합 연산부(1011)는 도 3에 도시된 제 1 배타적 논리합 연산부(3111)와 동일하다.
제 2 배타적 논리합 연산부(1012)는 도 3에 도시된 제 2 배타적 논리합 연산부(3112)와 동일하다.
데이터 변환부(300)는 8K 비트 치환표 데이터를 사용하여 32비트 데이터 S0을 변환하여 32비트 변환된 데이터 S1을 출력한다.
도 10은 도 8에 도시된 데이터 셔플링부(201)의 상세 구성도이다.
데이터 셔플링부(201)는 제 1 배타적 논리합 연산부(2011), 제 2 배타적 논리합 연산부(2012) 및 데이터 변환부(301)를 포함한다.
이 데이터 셔플링부(201)는 도 4에 도시된 데이터 셔플링부(4011)와 거의 유사하다.
제 1 배타적 논리합 연산부(2011)는 도 4에 도시된 제 1 배타적 논리합 연산부(4111)와 동일하다.
제 2 배타적 논리합 연산부(2012)는 도 4에 도시된 제 2 배타적 논리합 연산부(4112)와 동일하다.
데이터 변환부(301)는 도 9에 도시된 데이터 변환부(300)와 동일하다.
도 11은 도 9에 도시된 데이터 변환부(300)의 상세 구성도이다.
이 데이터 변환부(300)는 치환표 데이터 저장부(3001), 제 1 표값 변환부(3002), 제 2 표값 변환부(3003), 제 3 표값 변환부(3004), 제 1 가산부(3005), 제 2 가산부(3006) 및 배타적 논리합 연산부(3007)를 포함한다.
32비트 입력 데이터 S0은 최상위 비트로부터 4개 세트의 8비트 데이터 A3, A2, A1 및 A0으로 분할된다.
치환표 데이터 저장부(3001)는 8K 비트 입력 치환표 데이터를 최상위 비트로부터 256개의 32비트 표값으로 분할하여 256개의 표값을 저장한다.이 치환표 데이터 저장부(3001)에는 4개 세트의 8비트 데이터 A3∼A0이 입력된다. 치환표 데이터 저장부(3001)는 A3∼A0에 기초하여 256개의 저장된 표값중에서 4개의 표값을 특정하여 A3∼A0에 대해 특정된 4개의 표값을 각각 B3, B2, B1, B0으로서 출력한다. 본 명세서에서 치환표 데이터 저장부(3001)에 저장된 256개의 32비트 표값은 감소하는 비트의 순으로 Tab[0], Tab[1], …, Tab[255]로 설정된다.
제 1 표값 변환부(3002)는 상위비트에 대한 32비트 입력표값 B2에 대하여 주기적인 1비트 시프트 변환을 실행하여 32비트 변환된 데이터 C2를 출력한다.
제 2 표값 변환부(3003)는 상위비트에 대한 32비트 입력표값 B1에 대하여 주기적인 2비트 시프트 변환을 실행하여 32비트 변환된 데이터 C1을 출력한다.
제 3 표값 변환부(3004)는 상위비트에 대한 32비트 입력표값 B0에 대하여 주기적인 3비트 시프트 변환을 실행하여 32비트 변환된 데이터 C0을 출력한다.
제 1 가산부(3005)는 치환표 데이터 저장부(3001)로부터 출력된 32비트 표값 B3과 제 1 표값 변환부(3002)로부터 출력된 32비트 데이터 C2에 대한 산술가산을 실행하여 32번째 비트를 초과하는 자리올림은 무시하고 그 결과의 하위 32비트 데이터 D0을 출력한다.
이 계산은 다음과 같이 나타낸다.
D0=(B3+C2) mod (2^32)
배타적 논리합 연산부(3007)는 제 2 표값 변환부(3003)로부터 출력된 32비트 데이터 C1과 32비트 데이터 D0의 대응하는 비트에 대한 배타적 논리합 연산을 실행하여 그 결과의 32비트 데이터 D1을 출력한다.
이 계산은 다음과 나타낸다.
D1=D0(+)C1
제 2 가산부(3006)는 32비트 데이터 D1과 제 3 표값 변환부(3004)로부터 출력된 32비트 데이터 C0에 대한 산술가산을 실행하여 32번째 비트를 초과하는 자리올림은 무시하고 그 결과의 하위 32비트 데이터 D2를 출력한다.
이 계산은 다음과 같이 나타낸다.
D2=(D1+C0) mod (2^32)
제 2 가산부(3006)로부터 출력된 32비트 데이터 D2는 데이터 변환부(300)의 32비트 출력 데이터 S1이 된다.
이하. 데이터 변환부(300)의 동작을 설명하기로 한다.
(1) 8K 비트 입력 치환표 데이터(256개의 32비트 표값)는 치환표 데이터 저장부(3001)에 저장된다.
(2) 32비트 입력 데이터 S0은 최상위 비트로부터 4개 세트의 8비트 데이터 A3∼A0으로 분할된다.
(3) 치환표 데이터 저장부(3001)는 4개 세트의 8비트 입력 데이터 A3∼A0에 기초하여 256개의 기억된 표값중의 4개의 표값을 특정하고, A3∼A0에 대하여 각각 특정된 4개의 32비트 표값을 표값 B3∼B0으로서 출력한다.
(4) 제 1 표값 변환부(3002)는 표값 B2에 대하여 상위비트를 향해 주기적인 1비트 시프트 변환을 실행하고 변환된 데이터 C2를 출력한다. 제 2 표값 변환부(3003)는 표값 B1에 대하여 상위비트를 향해 주기적인 2비트 시프트 변환을 실행하고 변환된 데이터 C1을 출력한다. 제 3 표값 변환부(3004)는 표값 B0에 대하여 상위비트를 향해 주기적인 3비트 시프트 변환을 실행하고 변환된 데이터 C0을 출력한다.
(5) 제 1 가산부(3005)는 32비트 표값 B3과 32비트 변환된 데이터 C2에 대한 산술가산을 실행하여 32번째 비트 이상의 자리올림을 무시하고 그 결과의 하위 32비트 데이터 D0을 출력한다.
(6) 배타적 논리합 연산부(3007)는 32비트 데이터 D0의 비트와 32비트 변환된 데이터 C1을 대응시키는 배타적 논리합 연산을 실행하여 그 결과의 32비트 데이터 D1을 출력한다.
(7) 제 2 가산부(3006)는 32비트 데이터 D1과 32비트 변환된 데이터 C0에 관한 산술 가산을 실행하여, 32번째 이상의 자리올림을 무시하고 결과의 하위 32비트 데이터 D2(=S1)를 출력한다.
상술한 데이터 셔플링부(101)를 사용하는 데이터 암호체계의 보안성은 데이터 변환부(300)에서 실행된 변환동작의 데이터 셔플링 기능에 상당히 영향을 받는다. 데이터 변환부(300)는 치환표 데이터 저장부(3001)내의 치환표 데이터 세트로부터 4개의 표값을 검색하고, 제 1 내지 제 3 표값 변환부(3002∼3004)의 4개의 표값중 3개에 대해 상이한 비트길이에 의한 주기적인 비트 시프트 변환을 실행한다. 따라서 4개 세트의 치환표 데이터를 사용하는 암호체계와 유사한 높은 레벨의 보안성을 치환표 데이터의 세트로만으로도 달성할 수 있다.
따라서 제 1 실시예의 암호화된 통신 시스템은 암호분석 및 다른 비인증 공격에 대해 상당히 안정하다.
도 10의 데이터 변환부(301)의 구성은 데이터 변환부(300)와 유사하므로 그에 대한 설명은 생략한다.
다음으로 도 9의 데이터 셔플링부(101)에 의한 평문 데이터의 암호화와 도 10의 데이터 셔플링부(201)에 의한 평문 데이터의 복구에 관한 이면의 원리를 설명하기로 한다.
상술한 바와 같이 도 9의 데이터 셔플링부(101)에서 X1, X0, Y1, Y0, S0 및 S1은 다음의 관계를 갖는다.
여기에서 "Ki"는 32비트 서브키 데이터를 나타내고, "R" 은 8K 비트 치환표 데이터를 나타내며, "(+)"는 배타적 논리합 연산을 나타낸다. 또한 "F(R, α)"는 R이 표값이고, α가 입력 데이터인 경우의 데이터 변환부(300)의 출력 데이터를 나타낸다.
한편, 도 10에서 데이터 셔플링부(201)의 Z1, Z0, W1, W0 및 T1은 다음의 관계를 갖는다.
데이터 셔플링부(101)의 출력 데이터가 데이터 셔플링부(201)에 입력되는 것으로 가정하자. 즉 다음의 식을 가정하자.
(1) 수학식 7과 수학식 12로부터 다음의 식이 얻어진다.
수학식 13에 따라 수학식 9를 다음과 같이 나타낼 수 있다.
(3) 여기에서 배타적 논리합은 다음의 특성을 갖는다.
수학식 4를 수학식 14에 대입하면 수학식 15를 이용하여 그 결과를 다음의 식으로 나타낼 수 있다.
(4) 수학식 8과 수학식 13에 따라 다음의 식을 얻을 수 있다.
(5) 수학식 5와 수학식 17에 따라 다음의 식을 얻을 수 있다.
(6) 수학식 10은 수학식 11과 수학식 18을 이용하여 다음과 같이 나타낼 수 있다.
(7) 수학식 6를 수학식 19에 대입하고 수학식 15를 이용하여 그 결과를 다음의 식으로 나타낼 수 있다.
수학식 16과 수학식 20으로부터 데이터 셔플링부(101)에 의해 암호화된 평문 데이터는 데이터 셔플링부(201)에 의해 복구된다.
다음으로 도 7의 데이터 암호화장치(10)에 의한 평문 데이터의 암호화와 도 8의 데이터 암호해독장치(20)에 의한 평문 데이터의 복구에 관한 이면의 원리를 설명하기로 한다.
먼저, 데이터 암호화장치(10)는 256비트 키데이터 K와 8K 비트 치환표 데이터 R을 이용하여 암호문 블록 A를 발생시키도록 다음과 같이 평문 블록 A를 암호화한다.
키제어부(103)는 데이터 셔플링부(101) 내의 32비트 서브키 데이터 K0∼K7를 하나씩 입력한다. 한편 치환표 데이터 R은 평문블록 A의 암호화중에 반복적으로 사용된다.
데이터 셔플링부(101)는 중간 블록 A1을 생성시키도록 서브키 데이터 K0과 치환표 데이터 R을 사용하여 평문 블록 A에 관한 데이터 셔플링을 실행한다. 데이터 셔플링부(101)는 중간블록 A2를 생성하도록 서브키 데이터 K1과 치환표 데이터 R을 이용하여 중간블록 A1에 대한 데이터 셔플링을 실행한다.
동일한 방식으로 데이터 셔플링부(101)는 치환표 데이터 R의 사용을 통해 서브키 데이터 K2∼K7을 각각 사용하여 중간블록 A2∼A6에 대한 데이터 셔플링을 실행한다. 결과로서 암호문 블록 A가 생성된다.
한편, 데이터 암호해독장치(20)는 데이터 암호화장치(10)와 마찬가지로 256비트 키데이터 K와 치환표 데이터 R을 이용하여 암호해독된 텍스트 블록 A(평문 블록 A)를 발생시키도록 다음과 같이 암호문 블록 A를 암호해독한다.
키제어부(203)는 데이터 셔플링부(201) 내의 32비트 서브키 데이터 K7∼K0을 하나씩 입력한다. 한편 치환표 데이터 R은 암호문 블록 A의 암호해독중에 반복적으로 사용된다.
데이터 셔플링부(201)는 중간 블록 A6을 생성시키도록 서브키 데이터 K7과치환표 데이터 R을 사용하여 암호문 블록 A에 관한 데이터 셔플링을 실행한다. 데이터 셔플링부(201)는 중간블록 A5를 생성하도록 서브키 데이터 K6과 치환표 데이터 R을 이용하여 중간블록 A6에 대한 데이터 셔플링을 실행한다.
동일한 방식으로 데이터 셔플링부(201)는 치환표 데이터 R의 사용을 통해 서브키 데이터 K5∼K0을 각각 사용하여 중간블록 A5∼A1에 대한 데이터 셔플링을 실행한다. 결과로서 암호해독된 텍스트 블록 A가 생성된다.
따라서 데이터 암호화장치(10)에 의해 암호화된 평문 데이터는 데이터 암호해독장치(20)에 의해 복구된다.
이하, 데이터 암호화장치(10)의 보안성에 대해 설명하기로 한다.
도 5의 종래의 데이터 변환부(3113)와 비교하여 도 11의 데이터 변환부(300)는 제 1 내지 제 3 표값 변환부(3002∼3004)를 포함한다. 이러한 구성으로 치환표 데이터의 세트만을 저장함에도 불구하고 데이터 변환부(300)는 실질적으로 4개 세트의 치환표 데이터를 저장하는 데이터 변환부(3113)와 동일한 효과를 달성한다. 예컨대 도 11에서 A2=A3이면 동일한 치환표 데이터가 A2 및 A3에 대해 사용되기 때문에 B2=B3이다. 그러나, B2는 제 1 표값 변환부(3002)에 의해 C2로 변환되므로 제 1 가산부(3005)는 2개의 동일한 값에 대하여 산술가산을 실행하지 않는다. 이러한 암호체계는 높은 데이터 셔플링 기능을 유지할 수 있으므로 비인증 공격에 대해 안전하다.
따라서 상술한 데이터 변환부(300)를 갖는 암호화 처리장치는 암호화 보안성을 손상시키지 않고도 데이터 변환부(3113)를 갖는 종래의 암호화 처리장치에 비해 치환표 데이터의 양을 1/4로 감축시킬 수 있다.
그러므로, 본 발명은 높은 암호화의 보안성을 유지하면서 저장된 데이터의 크기를 실질상 감축시킴으로써 치환표 데이터를 사용하는 블로우피쉬 암호와 같은 블록암호로 하드웨어와 소프트웨어의 실행을 단순화한다.
(제 2 실시예)
본 발명의 제 2 실시예의 암호화 처리장치는 치환표 데이터 세트로부터 하나의 표값을 검색하고 검색된 표값에 대해 상이한 비트길이에 의한 회전과 같은 상이한 고정변환과 상이한 상수의 가산을 실행하여 복수의 출력값을 생성시킨다. 그렇게함으로써 암호화 처리장치는 치환표 데이터의 양이 보안성의 상실없이 감축되는 경우의 암호화처리를 달성한다.
제 2 실시예에서 도 9와 도 10에 도시된 제 1 실시예의 데이터 변환부(300)와 데이터 변환부(301)는 데이터 변환부(500)와 데이터 변환부(501)로 대체된다. 또한 제 1 실시예에서 사용된 치환표 데이터의 양은 제 2 실시예에서 1/4(2K 비트)로 감축된다.
도 12는 제 2 실시예의 데이터 변환부(500)의 상세 구성도이다.
데이터 변환부(500)는 치환표 데이터 저장부(5001), 제 1 입력 변환부(5002), 제 2 입력 변환부(5003), 제 3 입력 변환부(5004), 제 4 입력 변환부(5005), 제 1 배타적 논리합 연산부(5006), 제 2 배타적 논리합 연산부(5007),제 3 배타적 논리합 연산부(5008), 제 1 표값 변환부(5009), 제 2 표값 변환부(5010), 제 3 표값 변환부(5011), 제 1 표값 가산부(5012), 제 2 표값 가산부(5013), 제 3 표값 가산부(5014) 및 제 4 표값 가산부(5015)를 포함한다.
데이터 변환부(500)에 입력된 32비트 데이터 S0은 최상위 비트로부터 4개 세트의 8비트 데이터 E3, E2, E1 및 E0으로 분할된다.
제 1 입력 변환부(5002)는 상위비트를 향해 8비트 데이터 E3에 대하여 주기적인 1비트 시프트 변환을 실행하여 8비트 변환된 데이터 F3를 출력한다.
제 2 입력 변환부(5003)는 상위비트를 향해 8비트 데이터 E2에 대하여 주기적인 2비트 시프트 변환을 실행하여 8비트 변환된 데이터 F2를 출력한다.
제 3 입력 변환부(5004)는 상위비트를 향해 8비트 데이터 E1에 대하여 주기적인 3비트 시프트 변환을 실행하여 8비트 변환된 데이터 F1을 출력한다.
제 1 배타적 논리합 연산부(5006)는 제 2 입력 변환부(5003)로부터 출력된 변환 데이터 F2와 제 1 입력 변환부(5002)로부터 출력된 변환된 데이터 F3의 대응하는 비트에 대한 배타적 논리합을 구하여 결과의 8비트 데이터 G2를 출력한다.
제 2 배타적 논리합 연산부(5007)는 제 3 입력 변환부(5004)로부터 출력된 변환 데이터 F1과 제 1 배타적 논리합 연산부(5006)로부터 출력된 변환된 데이터 G2의 대응하는 비트에 대한 배타적 논리합을 구하여 결과의 8비트 데이터 G1을 출력한다.
제 4 입력 변환부(5005)는 제 2 배타적 논리합 연산부(5007)로부터 출력된 데이터 G1에 대해 상위의 비트를 향해 주기적인 5비트 시프트 변환을 실행하여 8비트 변환된 데이터 F0을 출력한다.
제 3 배타적 논리합 연산부(5008)는 제 4 입력 변환부(5005)로부터 출력된 8비트 변환 데이터 F0과 8비트 데이터 E0의 대응하는 비트에 대한 배타적 논리합을구하여 결과의 8비트 데이터 G0을 출력한다.
치환표 데이터 저장부(5001)는 최상위 비트로부터의 2K 비트 입력 치환표 데이터를 각각 8비트 길이인 256개의 표값으로 분할하고 그 256개의 표값을 저장한다.제 3 배타적 논리합 연산부(5008)로부터 출력된 데이터 G0에 기초하여 치환표 데이터 저장부(5001)는 256개의 저장된 표값중의 하나를 특정하고 그 특정된 표값을 H0으로서 출력한다.
제 1 표값 변환부(5009)는 치환표 데이터 저장부(5001)로부터 출력된 8비트 표값 H0에 대해 상위비트를 향해 주기적으로 1비트 시프트 변환을 실행하고 8비트 변환 데이터 I2를 출력한다.
제 2 표값 변환부(5010)는 8비트 표값 H0에 대해 상위비트를 향해 주기적으로 2비트 시프트 변환을 실행하고 8비트 변환 데이터 I1을 출력한다.
제 3 표값 변환부(5011)는 8비트 표값 H0에 대해 상위비트를 향해 주기적으로 3비트 시프트 변환을 실행하고 8비트 변환 데이터 I0을 출력한다.
제 1 가산부(5012)는 제 1 입력 변환부(5002)로부터 출력된 8비트 변환 데이터 F3와 치환표 데이터 저장부(5001)로부터 출력된 8비트 표값 H0에 대하여 산술가산을 실행하여 8번째 비트의 자리올림을 무시하고 결과의 하위 8비트 데이터 J0을 출력한다.
이 계산은 다음과 같이 나타낸다.
J0=(F3+H0) mod (2^8)
제 2 가산부(5013)는 제 2 입력 변환부(5003)로부터 출력된 8비트 변환 데이터 F2와 제 1 표값 변환부(5009)로부터 출력된 8비트 변환 데이터 I2에 대하여 산술가산을 실행하여 8번째 비트의 자리올림을 무시하고 결과의 하위 8비트 데이터 J3을 출력한다.
이 계산은 다음과 같이 나타낸다.
J3=(F2+I2) mod (2^8)
제 3 가산부(5014)는 제 3 입력 변환부(5004)로부터 출력된 8비트 변환 데이터 F1과 제 2 표값 변환부(5010)로부터 출력된 8비트 변환 데이터 I1에 대하여 산술가산을 실행하여 8번째 비트의 자리올림을 무시하고 결과의 하위 8비트 데이터 J2를 출력한다.
이 계산은 다음과 같이 나타낸다.
J2=(F1+I1) mod (2^8)
제 4 가산부(5015)는 8비트 데이터 E0과 제 3 표값 변환부(5011)로부터 출력된 8비트 변환 데이터 I0에 대하여 산술가산을 실행하여 8번째 비트의 자리올림을 무시하고 결과의 하위 8비트 데이터 J1을 출력한다.
이 계산은 다음과 같이 나타낸다.
J1=(E0+I0) mod (2^8)
제 2 가산부(5013)의 출력 데이터 J3, 제 3 가산부(5014)의 출력 데이터 J2, 제 4 가산부(5015)의 출력 데이터 J1 및 제 1 가산부(5012)의 출력 데이터 J0은 데이터 변환부(500)의 32비트 출력 데이터 S1을 형성하기 위해 이 순서로 결합된다.
상술한 구성을 갖는 데이터 변환부(500)는 다음과 같이 동작한다.
(1) 2K 비트 입력 치환표 데이터(256개의 8비트 표값)는 치환표 데이터 저장부(5001)에 저장된다.
(2) 32비트 입력데이터 S0은 최상위 비트로부터 4개 세트의 8비트 데이터 E3∼E0으로 분할된다.
(3) 제 1 입력 변환부(5002), 제 2 입력 변환부(5003), 제 3 입력 변환부(5004), 제 4 입력 변환부(5005), 제 1 배타적 논리합 연산부(5006), 제 2 배타적 논리합 연산부(5007) 및 제 3 배타적 논리합 연산부(5008)는 E3∼E0에 대해 각 비트의 연산을 실행한다. 결국, 8비트 데이터 G0이 생성된다.
(4) 치환표 데이터 저장부(5001)는 데이터 G0에 기초하여 256개 표값 중의 하나를 특정하고 특정된 표값을 H0으로서 출력한다.
(5) 제 1 표값 변환부(5009)는 상위비트를 향해 표값 H0에 대하여 주기적인 1비트 시프트 변환을 실행하고 변환된 데이터 I2를 출력한다. 제 2 표값 변환부(5010)는 상위 비트를 향해 표값 H0에 대하여 주기적인 2비트 시프트 변환을 실행하고 변환된 데이터 I1을 출력한다. 제 3 표값 변환부(5011)는 상위 비트를 향해 표값 H0에 대하여 주기적인 3비트 시프트 변환을 실행하고 변환된 데이터 I0을 출력한다.
(6) 제 2 가산부(5013)는 변환된 데이터 I2와 제 2 입력 변환부(5003)로부터 출력된 변환 데이터 F2에 대한 산술가산을 실행하여 8번째 비트를 초과하는 자리올림은 무시하고 그 결과의 하위 8비트 데이터 J3을 출력한다. 제 3 가산부(5014)는 변환된 데이터 I1과 제 3 입력 변환부(5004)로부터 출력된 변환 데이터 F1에 대한산술가산을 실행하여 8번째 비트를 초과하는 자리올림은 무시하고 그 결과의 하위 8비트 데이터 J2를 출력한다. 제 4 가산부(5015)는 변환된 데이터 I0과 8비트 데이터 E0에 대한 산술가산을 실행하여 8번째 비트를 초과하는 자리올림은 무시하고 그 결과의 하위 8비트 데이터 J1을 출력한다. 제 1 가산부(5012)는 표값 H0과 제 1 입력 변환부(5002)로부터 출력된 변환 데이터 F3에 대한 산술가산을 실행하여 8번째 비트를 초과하는 자리올림은 무시하고 그 결과의 하위 8비트 데이터 J0을 출력한다.
(7) 8비트 데이터 J3, J2, J1 및 J0은 데이터 변환부(500)의 32비트 출력 데이터를 형성하도록 이 순서로 결합된다.
제 2 실시예의 상술한 데이터 셔플링부(101)를 사용하는 데이터 암호체계의보안성은 데이터 변환부(500)에서 실행되는 변환동작의 데이터 셔플링 기능에 크게 좌우된다. 데이터 변환부(500)는 치환표 데이터 저장부(5001)에 저장된 치환표 데이터 세트로부터 하나의 표값을 검색하고 제 1 내지 제 3 표값 변환부(5009∼5011)의 표값에 대하여 주기적인 비트 시프트 변환을 실행함으로써 검색된 표값으로부터 3개의 변환된 값을 생성시키며, 표값과 3개의 변환된 값을 이용하여 출력 데이터를 생성시킨다. 따라서 치환표 데이터 세트만을 사용하여도 상술한 암호체계는 4개 세트의 치환표 데이터를 사용하는 암호체계와 유사한 레벨의 보안성을 유지할 수 있다.
따라서 제 2 실시예의 암호화된 통신 시스템은 암호화 분석과 비인증 공격에 대해 상당히 안전하다.
제 2 실시예의 데이터 변환부(501)의 구성은 데이터 변환부(500)와 유사하므로 그에 대한 설명은 생략한다.
제 1 및 제 2 실시예의 데이터 암호화장치(10)와 데이터 암호해독장치(20)의 각 구성요소는 배타적 논리합과 같은 논리회로를 갖는 전용 하드웨어에 의해서 뿐만 아니라 범용 프로세서, 제어 프로그램, 치환표 데이터를 저장하는 ROM, 작업영역으로서의 RAM으로 구성되는 컴퓨터 시스템의 소프트웨어에 의해 실행될 수 있다.
제 1 및 제 2 실시예에서 배타적 논리합 연산부(1011, 1012, 2011, 2012)는 32비트 서브키 데이터와 32비트 입력 데이터를 병합하고 32비트 데이터와 32비트 데이터를 병합하기 위해 사용된다. 그러나 가역연산이 가능한 올림자리를 갖는 전가산기와 같은 다른 장치가 배타적 논리합 연산부 대신에 사용될 수 있다. 상술한 실시예에서는 제 1 배타적 논리합 연산부(2011)와 제 2 배타적 논리합 연산부(2012)에 의한 연산이 제 1 배타적 논리합 연산부(1011)와 제 2 배타적 논리합 연산부(1012)에 의한 가역연산일 필요가 있다. 또한 처리속도의 감소를 피하기 위해 단순한 연산을 사용하는 것이 바람직하다.
상술한 실시예의 데이터 암호화장치(10)와 데이터 암호해독장치(20)에서는 하나의 입력 데이터 블록에 대하여 데이터 셔플링부(101 또는 201)에 의해 실행되는 데이터 셔플링의 횟수가 8로 설정되어 있다. 그러나 본 발명이 이에 한정되는 것은 아니다. 하나의 입력 데이터 블록에 대한 데이터 셔플링의 빈도가 8미만으로 설정되면 256비트 미만의 키데이터가 데이터 암호화장치(10)와 데이터 암호해독장치(20)에 입력될 것이다. 한편 하나의 입력 데이터 블록에 대한 데이터 셔플링의빈도가 8보다 크면 256비트 보다 큰 키데이터가 데이터 암호화장치(10)와 데이터 암호해독장치(20)에 입력될 것이다. 256비트 키데이터와 동일한 서브키 데이터를 반복적으로 사용함으로써 입력 키데이터의 크기를 증가시키지 않고도 데이터 셔플링의 빈도를 증가시킬 수 있다. 256비트 미만의 키데이터에 대해 서브키 데이터는 예컨대 DES 또는 FEAL의 서브키 생성수단을 이용하여 생성될 수 있다.
데이터 변환부(300, 301)의 제 1 내지 제 3 표값 변환부(3002∼3004), 데이터 변환부(500, 501)의 제 1 내지 제 4 입력 변환부(5002∼5005) 및 데이터 변환부(500, 501)의 제 1 내지 제 3 표값 변환부(5009∼5011)에서는 동일한 데이터를 처리하는 변환부가 시프트 비트길이가 다른 한 상위 비트를 향하여 시프트될 비트의 길이가 상술한 실시예에서 사용된 것들로 제한되는 것은 아니다. 또한 시프트 비트길이가 서브키 데이터에 기초하여 결정되면 보다 효과적인 데이터 셔플링 기능이 얻어질 수 있다. 예컨대 32비트 서브키 데이터의 0∼4번째 비트로 나타낸 값 0∼31 중의 하나는 제 1 표값 변환부(3002)의 시프트 비트 길이로서 설정될 수 있으며, 32비트 서브키 데이터의 8∼12번째 비트로 나타낸 값 0∼31 중의 하나는 제 2 표값 변환부(3003)의 시프트 비트 길이로서 설정될 수 있고, 32비트 서브키 데이터의 16∼20번째 비트로 나타낸 값 0∼31 중의 하나는 제 3 표값 변환부(3004)의 시프트 비트 길이로서 설정될 수 있다.
또한 데이터 변환부(300, 301)의 제 1 내지 제 3 값 변환부(3002∼3004)와 데이터 변환부(500, 501)의 제 1 내지 제 3 값 변환부(5009∼5011)에서 하나의 출력값이 하나의 입력값으로부터 특정되는 한 제 1 및 제 2 실시예에 사용된 것들과다른 변환이 사용될 수 있다. 말하자면 미리 변환된 입력값이 출력변환된 값으로부터 복구될 수 없는 경우의 일방변환이 사용될 수 있다. 하나의 데이터 변환부에 포함된 표값 변환부에 의해 각각 실행되는 변환은 서로 다르다. 또한 처리속도의 감소를 피하기 위해 간단한 연산을 사용하는 것이 바람직하다.
제 1 및 제 2 실시예에서 각각의 배타적 논리합 연산부와 데이터 변환부가 8비트 또는 32비트 단위로 데이터 변환을 실행하는 동안 상이한 비트 길이가 대신 사용될 수 있다. 예컨대 범용 64비트 CPU에 의해 본 발명이 실행되면 데이터 변환은 64비트의 단위로 실행될 수 있다. 또한 입력 데이터의 1/2(예를들면 32비트 입력 데이터중 하위 16비트)만을 변환할 수 있으며 그와 함께 처리시간의 단축이 가능해진다.
제 1 및 제 2 실시예에서 제 3 표값 변환부에 의한 상이한 고정변환의 결과로서 얻어진 3개의 변환값과 하나의 비변환값은 4개의 치환표 데이터 저장부를 사용하여 얻어진 4개의 표값에 대한 대용으로 사용된다. 대신에 4개의 표값 변환부가 각각 4개의 상이한 고정 변환을 실행하여 4개의 변환된 값을 4개의 표값에 대한 대용으로 사용될 수 있다. 여기에서 4개의 표값 변환부에 의해 실행되는 4개의 상이한 고정변환은 비변환을 포함할 수 있다. 4개의 상이한 고정 변환중의 하나가 비변환이면 전체결과는 3개의 표값 변환부가 사용되는 경우와 같을 것이다. 여기에서 언급되는 비변환은 예를들면 4개의 표값 변환부가 상이한 비트길이에 의해 주기적인 비트 시프트 변환을 실행할 때의 주기적인 0비트 시프트 변환 또는 4개의 표값 변환부가 상이한 상수의 가산을 실행할 때의 0의 가산이다. 즉 4개의 상이한 값이하나의 표값 또는 필연적으로 서로 다를 수 없는 4개의 표값으로부터 얻어지는한 표값 변환부에 관한 수정이 가능하다.
또한 4개의 치환표 데이터 저장부를 사용하여 얻어진 4개의 표값에 대한 대용으로서 상술한 실시예에서는 3개 또는 4개의 표값 변환부를 사용하여 4개의 표값이 생성되며 본 발명에서 이 수에 제한이 있는 것은 아니다.
(제 3 실시예)
본 발명의 제 3 실시예의 암호화 처리장치는 치환표 데이터를 갱신하지 않고도 바로 선행하는 암호문 블록을 이용하여 실제의 키데이터를 변환시킴으로써 입력 키데이터를 갱신한다. 그렇게 함으로써 입력키 데이터가 각 입력블록의 암호화처리에 대해 갱신되는 동안 치환표 데이터의 생성빈도가 감축되기 때문에 보안성의 손실없이 고속처리를 달성할 수 있다.
도 13은 본 발명의 제 3 실시예의 암호화된 통신 시스템의 구성도이다.
이 암호화된 통신 시스템은 송신기(6)와 수신기(7)를 포함한다.
송신기(6)는 데이터 암호화장치(60)와 송신부(61)를 구비한다.
데이터 암호화장치(60)는 640비트 암호화 키데이터를 사용하여 64비트의 단위로 평문 데이터를 암호화하여 암호문 데이터를 생성시킨다. 여기에서 평문 데이터는 예를들면 디지털 부호화된 오디오 또는 이미지 정보이며, 또한 동일한 640비트의 암호화 키데이터는 미리 송신기(6)와 수신기(7)에 의해 비밀로 유지된다.
송신부(61)는 데이터 암호화장치(60)에 의해 생성된 암호문 데이터에 대해 병렬직렬 변환, 변조 및 증폭을 실행하여 얻어진 송신신호를 송신선(8)에 출력한다.
수신기(7)는 데이터 암호해독장치(70)와 수신부(71)를 구비한다.
수신부(71)는 송신선(8)을 통해 송신부(61)로부터 송신신호를 수신하여 송신신호에 대한 송신부(61)의 역처리를 실행하여 암호문 데이터를 복구한다.
데이터 암호해독장치(70)는 암호해독된 텍스트 데이터(원래의 평문 데이터)를 얻을 수 있도록 640비트 암호화 키데이터를 사용하여 64비트의 단위로 암호문 데이터를 암호해독한다.
이 암호해독된 텍스트 데이터는 예를들면 디지털 부호화된 오디오 또는 이미지 정보이며, 이러한 정보는 전용 디코더(도시생략)에 의해 디코드되고 스피커 또는 디스플레이를 통해 재생된다.
도 14는 도 13에 도시된 데이터 암호화장치(60)의 상세 구성도이다.
이 데이터 암호화장치(60)는 암호화부(601), 치환표 데이터 생성부(602), 입력키 발생부(603) 및 키제어부(604)를 포함한다.
키제어부(604)는 최상위 비트로부터 640비트 암호화키를 10세트의 64비트 실제의 키데이터 K[0]∼K[9]으로 분할한다. 1024 평문블록이 암호화될 때마다 키제어부(604)가 치환표 데이터 생성부(602)와 입력키 생성부(603)에 한번에 하나씩 K[0]∼K[9]를 출력한다. 실제의 키데이터 K[9] 다음에는 실제의 키데이터 K[0]이 다시 출력된다.
치환표 데이터 생성부(602)는 키제어부(604)로부터 64비트 실제의 키데이터를 수신할 때 블로우피쉬 암호에 사용된 치환표 데이터 생성 알고리즘에 기초하여32K 비트 치환표 데이터(각각 32비트 길이인 1024 표값)를 생성시킨다. 치환표 데이터 생성부(602)는 생성된 치환표 데이터를 데이터 암호화부(601)에 출력한다.
입력키 생성부(603)는 키제어부(604)로부터 수신된 64비트 실제의 키데이터를 저장한다. 암호문 블록은 매번 데이터 암호화부(601)에 의해 생성되며, 입력키 생성부(603)는 저장된 64비트 실제의 키데이터와 암호문 블록의 대응하는 비트에 대한 배타적 논리합 연산을 실행하여 그 결과를 다음 평문블록의 암호화를 위한 입력키 데이터로서 데이터 암호화부(601)에 출력한다. 제 1 평문블록이 암호화될 때 암호문 블록이 없기 때문에 입력키 생성부(603)는 실제의 키데이터와 64비트 초기값 Ⅳ(이하, "초기블록 Ⅳ"라 함)의 대응하는 비트에 대한 배타적 논리합을 구하여 그 계산결과를 제 1 평문블록을 암호화하기 위한 입력키 데이터로서 데이터 암호화부(601)에 출력한다. 이 64비트 초기블록 Ⅳ는 미리 입력키 생성부(603)에 저장된다.
여기에서 일단 32 암호화 블록이 생성되면 입력키 생성부(603)는 예를들면 가장 최근에 생성된 암호화 블록 대신에 저장된 실제의 키데이터와 초기블록 Ⅳ의 대응하는 비트에 대한 배타적 논리합 연산을 실행한다. 이 경우에 실제의 키데이터와 함께 배타적 논리합이 계산되는 객체가 초기화되며 32 평문 블록이 매번 암호화된다.
데이터 암호화부(601)는 64비트 입력키 데이터와 32K 비트 치환표 데이터를 사용하여 64비트의 단위로 평문 데이터를 암호화하여 암호문 데이터를 생성한다. 또한 데이터 암호화부(601)는 치환표 데이터 생성부(602)로부터 새로운 32K 비트치환표 데이터를 수신할 때 치환표 데이터를 갱신한다.
도 15는 도 13에 도시된 데이터 암호해독장치(70)의 상세 구성도이다.
이 데이터 암호해독장치(70)는 데이터 암호해독부(701), 치환표 데이터 생성부(702), 입력키 생성부(703) 및 키제어부(704)를 포함한다.
키제어부(704)는 최상위 비트로부터 640비트 암호화 키데이터를 10세트의 64비트 실제의 키데이터 K[0]∼K[9]로 분할한다. 1024 암호문 블록이 암호해독될 때마다 키제어부(704)는 K[0]∼K[9]를 한번에 하나씩 치환표 데이터 생성부(702)와 입력키 생성부(703)에 출력한다. 실제의 키데이터 K[9] 다음에 실제의 키데이터 K[0]이 다시 출력된다.
치환표 데이터 생성부(702)는 키제어부(704)로부터 64비트 실제의 키데이터를 수신할 때 블로우피쉬 암호에 사용된 치환표 데이터 생성 알고리즘을 사용하여 32K 비트 치환표 데이터를 생성시킨다. 치환표 데이터 생성부(702)는 생성된 치환표 데이터를 데이터 암호해독부(701)에 출력한다.
입력키 생성부(703)는 키제어부(704)로부터 수신된 64비트 실제의 키데이터를 저장한다. 평문 블록은 매번 데이터 암호해독부(701)에 의해 생성되며, 입력키 생성부(703)는 평문 블록에 대응하는 암호문 블록과 저장된 64비트 실제의 키데이터의 대응하는 비트에 대한 배타적 논리합 연산을 실행하여 그 결과를 다음 암호문 블록의 암호해독을 위한 입력키 데이터로서 데이터 암호해독부(701)에 출력한다. 여기에서 제 1 암호문 블록이 암호해독될 때 암호문 블록이 없기 때문에 입력키 생성부(703)는 초기블록 Ⅳ와 실제의 키데이터의 비트를 대응시키는 배타적 논리합을 구하여 그 계산결과를 제 1 암호문 블록을 암호해독하기 위한 입력키 데이터로서 데이터 암호해독부(701)에 출력한다. 이 64비트 초기블록 Ⅳ는 미리 입력키 생성부(703)에 저장된다.
여기에서 일단 32 평문 블록이 생성되면 입력키 생성부(703)는 예를들면 가장 최근에 처리된 암호문 블록 대신에 저장된 실제의 키데이터와 초기블록 Ⅳ의 대응하는 비트에 대한 배타적 논리합 연산을 실행한다. 이 경우에 실제의 키데이터와 함께 배타적 논리합이 계산되는 객체가 초기화되며 32 암호문 블록이 매번 암호해독된다.
데이터 암호해독부(701)는 64비트 입력키 데이터와 32K 비트 치환표 데이터를 사용하여 64비트의 단위로 암호문 데이터를 암호해독하여 평문 데이터를 생성한다. 또한 데이터 암호해독부(701)는 치환표 데이터 생성부(702)로부터 새로운 32K 비트 치환표 데이터를 수신할 때 치환표 데이터를 갱신한다.
도 16은 도 14에 도시된 데이터 암호화부(601)의 상세 구성도이다.
이 데이터 암호화부(601)는 대략적으로 데이터 셔플링부(6011), 스테이지수 제어부(6012) 및 서브키 생성부(6013)으로 구성된다.
서브키 생성부(6013)는 블로우피쉬 암호에 사용된 서브키 생성 알고리즘에 따라 64비트 입력키 데이터로부터 256비트 데이터를 생성시키며, 이 256비트 데이터를 32비트 서브키 데이터 8세트의 SK0∼SK7로 분할하여 SK0∼SK7을 저장한다.
데이터 셔플링부(6011)는 32K 비트 치환표 데이터와 서브키 생성부(6013)에 의해 생성된 32비트 서브키 데이터를 사용하여 64비트 입력 평문 데이터에 대한 데이터 셔플링을 수행하여 획득된 64비트 데이터를 출력한다.
스테이지수 제어부(6012)는 평문블록으로부터 암호문 블록을 생성시키도록 데이터 셔플링부(6011)에 의해 수행되는 데이터 셔플링의 횟수를 제어한다. 스테이지수 제어부(6012)는 각각의 평문블록에 대하여 데이터 셔플링이 행해지는 횟수를 카운트한다. 카운트된 수가 소정의 수보다 작으면 데이터 셔플링부(6011)로부터 출력된 64비트 데이터가 리셔플링을 위해 데이터 셔플링부에 입력된다. 카운트된 수가 소정의 수에 도달하면 스테이지수 제어부(6012)는 암호문 블록으로서 데이터 셔플링부(6011)의 64비트 출력 데이터를 출력한다. 이 실시예에서 소정의 수는 8로 설정된다.
여기에서, 서브키 데이터 SK0이 먼저 평문블록에 대해 데이터 셔플링을 수행하기 위해 사용되며, 서브키 데이터 SK1∼SK7을 차례로 이용하여 데이터 셔플링이 반복된다. 서브키 데이터 SK7 다음에 서브키 데이터 SK0이 다시 사용된다.
도 17은 도 15에 도시된 데이터 암호해독부(701)의 상세 구성도이다.
데이터 암호해독부(701)는 대략적으로 데이터 셔플링부(7011), 스테이지수 제어부(7012) 및 서브키 생성부(7013)로 구성된다.
서브키 생성부(7013)와 데이터 셔플링부(7011)는 도 16에 도시된 서브키 생성부(6013) 및 데이터 셔플링부(6011)와 동일하다.
스테이지수 제어부(7012)는 암호문 블록으로부터 평문 블록을 생성시키도록 데이터 셔플링부(7011)에 의해 실행되는 데이터 셔플링의 횟수를 제어한다. 스테이지수 제어부(7012)는 각각의 암호문 블록에 대하여 데이터 셔플링이 행해지는 횟수를 카운트한다. 카운트된 수가 소정의 수보다 작으면 데이터 셔플링부(7011)로부터 출력된 64비트 데이터가 리셔플링을 위해 데이터 셔플링부(7011)에 입력된다. 카운트된 수가 소정의 수에 도달하면 스테이지수 제어부(7012)는 평문 블록으로서 데이터 셔플링부(7011)의 64비트 출력 데이터를 출력한다. 이 실시예에서 소정의 수는 8로 설정된다.
여기에서 서브키 데이터 SK7은 암호문 블록에 대한 제 1 데이터 셔플링을 실행하기 위해 사용되며, 데이터 셔플링은 서브키 데이터 SK6∼SK0을 차례로 이용하여 반복된다. 서브키 데이터 SK0 다음에 서브키 데이터 SK7이 다시 사용된다.
도 16 및 도 17에 도시된 데이터 셔플링부(6011)와 데이터 셔플링부(7011)의 구성은 도 3 및 도 4에 도시된 데이터 셔플링부(3011) 및 데이터 셔플링부(4011)와 동일하다.
도 18은 블록번호 t, 실제키 데이터, 입력키 데이터, 치환표 데이터의 대응을 나타낸 도면이다. 여기에서 블록번호 t는 최상위 비트로부터 평문 데이터를 64비트로 분할함으로써 생성된 각각의 평문 블록에 할당된 0으로부터 시작하는 번호를 나타낸다. 도면에서 실제의 키데이터 "-"는 키제어부(604)로부터 출력이 없다는 것을 나타내고, "(+)"는 배타적 논리합 연산을 나타내며, "Ⅳ"는 초기블록 Ⅳ를 나타내고, "Ct"는 "t"번째 평문블록을 암호화함으로써 얻어지는 암호문 블록을 나타내며, "TG(K[i])"는 실제의 키데이터 K[i](i=0, 1, …, 9)로부터 생성된 치환표 데이터를 나타낸다.
도 18에 도시된 바와 같이 입력키 데이터는 모든 32 평문 블록에 대하여K[i](+)Ⅳ(i=0, 1, …, 9)에서 리셋된다. 또한 실제의 키데이터는 모든 1024 평문블록에 대하여 키제어부(604)로부터 출력되며, 그 결과로서 치환표 데이터와 입력키 데이터가 갱신된다.
제 3 실시예의 암호화된 통신시스템의 일반적인 동작의 일례를 이하에 설명한다.
도 13의 송신기(6)는 미리 기억된 암호화 키데이터를 사용하여 64비트의 단위로 입력 평문 데이터를 암호화한다. 다음으로 최상위 비트로부터 평문 데이터를 분할함으로써 얻어진 각각의 64비트 평문블록은 평문블록 Pt(t=0, 1, …)이라 한다.
(1) 우선, 평문블록 P0은 다음과 같이 암호화된다.
도 14에서 키제어부(604)는 평문블록 P0을 암호화하기 위해 암호화 키데이터로부터 생성된 실제의 키데이터 K[0]을 출력한다.
도 14에서 치환표 데이터 생성부(602)는 키제어부(604)로부터 수신된 실제의 키데이터 K[0]으로부터 치환표 데이터 TG(K[0])를 생성하여 TG(K[0])를 데이터 암호화부(601)에 출력한다.
도 14의 입력키 생성부(603)는 실제의 키데이터 K[0]와 초기블록 Ⅳ의 대응하는 비트에 대한 배타적 논리합을 실행하여 그 결과의 입력키 데이터 K[0](+)Ⅳ를 데이터 암호화부(601)에 출력한다.
데이터 암호화부(601)는 치환표 데이터 TG(K[0])과 입력키 데이터 K[0](+)Ⅳ를 사용하여 평문블록 P0을 암호화하여 암호문 블록 C0을 출력한다.
(2) 다음으로 평문블록 P1이 다음과 같이 암호화된다.
키제어부(604)는 새로운 실제의 키데이터를 출력하지 않기 때문에 치환표 데이터 생성부(602)는 새로운 치환표 데이터를 생성하지 못한다.
입력키 생성부(603)는 실제의 키데이터 K[0]과 암호문 블록 C0의 대응하는 비트에 대한 배타적 논리합을 실행하여 그 결과의 입력키 데이터 K[0](+)C0을 데이터 암호화부(601)에 출력한다.
데이터 암호화부(601)는 치환표 데이터 TG(K[0])과 입력키 데이터 K[0](+)C0을 사용하여 평문블록 P1을 암호화하여 암호문 블록 C1을 생성한다.
(3) 평문블록 P2∼P31은 평문블록 P1과 동일한 방식으로 암호화된다.
(4) 평문블록 P32는 다음과 같이 암호화된다.
키제어부(604)는 새로운 실제의 키데이터를 출력하지 않기 때문에 치환표 데이터 생성부(602)는 새로운 치환표 데이터를 생성하지 못한다.
입력키 생성부(603)는 실제의 키데이터 K[0]와 초기 블록 Ⅳ의 대응하는 비트에 대한 배타적 논리합 연산을 실행하여 그 결과의 입력키 데이터 K[0](+)Ⅳ를 데이터 암호화부(601)에 출력한다.
데이터 암호화부(601)는 치환표 데이터 TG(K[0])과 입력키 데이터 K[0](+)Ⅳ를 사용하여 평문 블록 P32를 암호화하여 암호문 블록 C32를 생성한다.
(5) 평문블록 P33∼P63은 평문블록 P1과 동일한 방식으로 암호화된다.
(6) 평문블록 P32∼P63과 동일한 암호화 처리가 평문블록 P1023까지 반복된다.
(7) 평문블록 P1024는 다음과 같이 암호화된다.
키제어부(604)는 평문블록 P1024을 암호화하기 위해 암호화 키데이터로부터 생성된 실제의 키데이터 K[1]을 출력한다.
치환표 데이터 생성부(602)는 키제어부(604)로부터 수신된 실제의 키데이터 K[1]로부터 치환표 데이터 TG(K[1])을 생성하여 TG(K[1])을 데이터 암호화부(601)에 출력한다.
입력키 생성부(603)는 실제의 키데이터 K[1]과 초기블록 Ⅳ의 대응하는 비트에 대한 배타적 논리합 연산을 실행하여 그 결과의 입력키 데이터 K[1](+)Ⅳ를 데이터 암호화부(601)에 출력한다.
데이터 암호화부(601)는 치환표 데이터 TG(K[1])과 입력키 데이터 K[1](+)Ⅳ를 사용하여 평문블록 P1024를 암호화하여 암호문 블록 C1024를 생성한다.
(8) 평문블록 P1025는 다음과 같이 암호화된다.
키제어부(604)는 새로운 실제의 키데이터를 출력하지 않기 때문에 치환표 데이터 생성부(602)는 새로운 치환표 데이터를 생성하지 못한다.
입력키 생성부(603)는 실제의 키데이터 K[1]과 암호문 블록 C1024의 대응하는 비트에 대한 배타적 논리합 연산을 실행하여 그 결과의 입력키 데이터 K[1](+)C1024를 데이터 암호화부(601)에 출력한다.
데이터 암호화부(601)는 치환표 데이터 TG(K[1])과 입력키 데이터 K[1](+)C1024를 사용하여 평문블록 P1025를 암호화하여 암호문 블록 C1025를 생성한다.
(9) 평문블록 P0∼P1023과 동일한 암호화처리가 최종 평문 블록까지 반복된다.
(10) 암호문 블록에 대한 암호해독 처리는 상술한 암호화 처리 (1)∼(9)의 역변환이며, 실제의 키데이터와 함께 배타적 논리합이 계산된 객체가 데이터 암호화부(601)에 의해 생성된 암호문 블록이 아니라 데이터 암호해독부(701)에 의해 암호해독된 암호문 블록에 바로 선행하는 암호문 블록인 점에서 다르다.
데이터 암호화 장치(60)에 의한 평문 데이터의 암호화와 데이터 암호해독장치(70)에 의한 평문 데이터의 복구에 대한 이면의 원리를 이하의 식을 이용하여 설명한다.
설명에서 "암호화(encryption)"의 처음 문자 "e"는 암호화 처리에 관한 각각의 기호(legend)에 부가되며, "암호해독(decryption)"의 처음 문자 "d"는 암호해독 처리에 관한 각 기호에 부가된다.
키제어부(604)는 평문 블록 Pe(1024×k)(k=0, 1, …)가 암호화되면 실제의 키데이터 Ke[k mod 10]을 출력한다. 그렇지 않으면 키제어부(604)는 실제의 키데이터를 출력하지 않는다.
치환표 데이터 생성부(602)는 평문 블록 Pe(1024×k)가 암호화되면 키제어부(604)로부터 수신된 실제의 키데이터 Ke[k mod 10]으로부터 치환표 데이터 를 생성하여 치환표 데이터를 출력한다. 그렇지 않으면 치환표 데이터 생성부(602)는 치환표 데이터를 생성하지 않는다.
입력키 생성부(603)는 평문 블록 Pe(32×j)(j=0, 1, …)가 암호화될 때 초기블록 Ⅳe와 실제의 키데이터 Ke[((32×j)-((32×j) mod 1024))/1024) mod 10]의 대응하는 비트에 대한 배타적 논리합을 구하여 그 계산결과를 입력키 데이터로서 출력한다. 평문블록 Pe(32×j)를 제외한 평문블록 Pet가 암호화되면 입력키 생성부(603)는 암호문 블록 Ce(t-1)과 실제의 키데이터 Ke[((t-(t mod 1024))/1024) mod 10]의 대응하는 비트에 대한 배타적 논리합을 구하여 그 계산결과를 입력 키데이터로서 출력한다.
즉 t=(32×j)(j=0, 1, …)이면 평문블록 Pet를 암호화하기 위해 사용된 입력키 데이터 IKet 다음의 식과 같이 된다.
한편 t(32×j)(j=0, 1, …)이면 평문블록 Pet를 암호화하기 위해 사용되는 입력키 데이터 IKet는 다음의 식과 같이 된다.
i=((t-(t mod 1024))/1024) mod 10 이면 치환표 데이터는 TGe(Ke[i])이고 평문블록 Pet(t=0, 1, …)를 암호화함으로써 얻어지는 64비트 암호문 블록 Cet는 다음의 식과 같이 된다.
여기에서 "Enc"는 데이터 암호화부(601)에서 실행되는 암호화처리를 나타낸다.
따라서 데이터 암호화부(601)는 입력키 데이터 IKet와 치환표 데이터 TGe(Ke[i])를 이용하여 각각의 평문 블록 Pet를 암호화하여 암호문 블록 Cet=Enc(Pet, TGe(Ke[i]), IKet)를 생성한다.
키제어부(704)는 암호문 블록 Cd(1024×k)(k=0, 1, …)가 암호해독될 때 실제의 키데이터 Kd[k mod 10]을 출력한다. 그렇지 않으면 키제어부(704)는 실제의 키데이터를 출력하지 않는다.
치환표 데이터 생성부(702)는 암호문 블록 Cd(1024×k)가 암호해독되면 키제어부(704)로부터 수신된 실제의 키데이터 Kd[k mod 10]로부터 치환표 데이터를 생성하여 치환표 데이터를 출력한다. 그렇지 않으면 치환표 데이터 생성부(702)는 치환표 데이터를 생성하지 않는다.
입력키 생성부(703)는 암호문 블록 Cd(32×j)(j=0, 1, …)가 암호해독될 때 초기블록 Ⅳd와 실제의 키데이터 Kd[((32×j)-((32×j) mod 1024))/1024) mod 10]의 대응하는 비트에 대한 배타적 논리합을 구하여 그 계산결과를 입력키 데이터로서 출력한다. 암호문 블록 Cd(32×j)를 제외한 암호문 블록 Cdt가 암호해독되면 입력키 생성부(703)는 암호문 블록 Cd(t-1)과 실제의 키데이터 Kd[((t-(t mod 1024))/1024) mod 10]의 대응하는 비트에 대한 배타적 논리합을 구하여 그 계산결과를 입력 키데이터로서 출력한다.
즉 t=(32×j)(j=0, 1, …)이면 암호문 블록 Cdt를 암호해독하기 위해 사용된 입력키 데이터 IKdt는 다음의 식과 같이 된다.
한편 t(32×j)(j=0, 1, …)이면 암호문 블록 Cdt를 암호화하기 위해 사용되는 입력키 데이터 IKdt는 다음의 식과 같이 된다.
i=((t-(t mod 1024))/1024) mod 10 이면 치환표 데이터는 TGd(Kd[i])이고 암호문 블록 Cdt(t=0, 1, …)를 암호해독함으로써 얻어지는 64비트 암호해독된 텍스트 블록 Ddt는 다음의 식과 같이 된다.
여기에서 "Dec"는 데이터 암호해독부(701)에서 실행되는 암호해독처리를 나타낸다.
따라서 데이터 암호해독부(701)는 입력키 데이터 IKdt와 치환표 데이터 TGd(Kd[i])를 이용하여 각각의 암호문 블록 Cdt를 암호해독하여 암호해독된 텍스트 블록 Ddt=Dec(Cdt, TGd(Kd[i]), IKdt)를 생성한다.
주어진 한쌍의 실제의 키데이터를 이용하여 평문블록열(Pe0, Pe1, …)을 암호화하는 데이터 암호화장치(60)에 의해 얻어진 암호문 블록열과, 초기블록이 동일한 실제의 키데이터와 초기블록을 사용하는 데이터 암호해독장치(70)에 의해 암호해독되면 구해지는 암호해독된 텍스트 블록열(Dd0, Dd1, …)은 원래의 평문 블록열과 동일하다. 이것은 이하에서 입증된다. 여기에서는 치환표 데이터 생성부(602)와 치환표 데이터 생성부(702)가 동일한 기능을 갖기 때문에 실제의 키데이터를 사용하는 치환표 데이터 생성부(602)에 의해 생성된 치환표 데이터는 동일한 실제의 키데이터를 사용하는 치환표 데이터 생성부(702)에 의해 생성된 치환표 데이터와 동일할 것이다.
(1) 데이터 암호화장치(60)와 데이터 암호해독장치(70)는 동일한 실제의 키데이터를 사용하기 때문에 Ke=Kd이다.
이하, Ke와 Kd를 모두 실제의 키데이터 Ks라 한다.
(2) 데이터 암호화장치(60)와 데이터 암호해독장치(70)는 동일한 초기블록을 사용하기 때문에 IVe=IVd이다.
이하, IVe와 IVd를 모두 실제의 초기블록 IVs라 한다.
(3) 데이터 암호화장치(60)에 의해 생성된 암호문 블록열은 데이터 암호해독장치(70)에 의해 암호해독되기 때문에 Cet=Cdt이다.
이하, Cet와 Cdt를 모두 암호문 블록 Cst라 한다.
(4) (1), (2) 및 수학식 21에 따라 t=(32×j)(j=0, 1, …)이면, 평문블록Pet를 암호화하기 위해 사용된 입력키 데이터 IKet는 다음의 식으로 된다.
(5) (1), (2) 및 수학식 24에 따라 t=(32×j)(j=0, 1, …)이면, 암호문 블록 Cst를 암호해독하기 위해 사용된 입력키 데이터 IKdt는 다음의 식으로 된다.
(6) 수학식 27의 우변과 수학식 28의 우변이 같으므로 t=(32×j)(j=0, 1, …)이면 IKet=IKdt이다.
(7) (1), (3) 및 수학식 22에 따라 t(32×j)(j=0, 1, …)이면, 평문블록 Pet를 암호화하기 위해 사용된 입력키 데이터 IKet는 다음의 식으로 된다.
(8) (1), (3) 및 수학식 25에 따라 t(32×j)(j=0, 1, …)이면, 암호문 블록 Cdt를 암호해독하기 위해 사용된 입력키 데이터 IKdt는 다음의 식으로 된다.
(9) 수학식 29의 우변과 수학식 30의 우변이 같으므로 t(32×j)(j=0, 1,…)이면 IKet=IKdt이다.
(10) (6)과 (9)로부터 t=(32×j)(j=0, 1, …)일 때와, t(32×j)(j=0, 1, …)일 때 모두 IKet=IKdt이다.
따라서 이하에서는 IKet와 IKdt는 모두 입력키 데이터 IKst라 한다.
(11) 치환표 데이터 생성부(602)와 치환표 데이터 생성부(702)가 동일한 기능을 갖기 때문에 TGe(Ks[i])=TGd(Ks[i])이다.
따라서 TGe(Ks[i])와 TGd(Ks[i])는 이하 모두 치환표 데이터 TGs(Ks[i])이다.
(12) (10), (11) 및 수학식 23에 따라 평문블록 Pet(t=0, 1, …)를 암호화함으로써 구해지는 64비트 암호문 블록 Cst는 다음의 식으로 된다.
(13) (10), (11) 및 수학식 26에 따라 암호문 블록 Cst(t=0, 1, …)를 암호해독함으로써 구해지는 64비트 암호해독된 텍스트 블록 Ddt는 다음의 식으로 된다.
(14) 수학식 31이 수학식 32에 대입되면 다음의 식으로 된다.
Ddt=Dec(Enc(Pet, TGs(Ks[i], IKst), TGs(Ks[i], IKst)
(15) 제 1 실시예에서는 데이터 셔플링부(101)에 의한 평문 데이터의 암호화와 데이터 셔플링부(201)에 의한 평문 데이터의 복구에 대한 이면의 원리와 마찬가지로, 데이터 암호화부(601)가 암호문 블록을 생성하도록 32K 비트 치환표 데이터 β와 64비트 입력키 데이터 γ를 이용하여 평문블록 α를 암호화하고, 데이터 암호해독부(701)가 동일한 치환표 데이터 β와 64비트 입력키 데이터 γ를 이용하여 암호문 블록을 암호해독할 때, 데이터 암호해독부(701)에 의해 구해진 암호해독된 텍스트 블록은 원래의 평문블록 α와 동일하다. 즉 다음의 식과 같다.
(16) 수학식 33과 34로부터 다음의 식이 증명된다.
이하, 데이터 암호화장치(60)의 보안성을 설명하기로 한다. 이 데이터 암호화장치(60)의 보안성은 데이터 암호화부(601)의 보안성에 좌우된다. 본 실시예에서 실제의 키데이터가 CKt로 표시되면 데이터 암호화부(601)에 입력된 입력키 데이터 IKt는 다음 식으로 된다.
여기에서 k=0, 1, …이다.
수학식 36에서, 비록 암호문 블록 C(t-1)이 암호분석가에게 알려져 있더라도 초기블록 IV과 키제어부(604)로부터 출력된 실제의 키데이터 CKt는 암호분석가에게 알려지지 않으므로 입력키 데이터 IKt는 암호분석가에 알려지지 않는다. 따라서 비록 암호분석가가 기지의 평문공격에 의해 컴퓨터의 데이터 암호화부(601)를 시뮬레이트하더라도 암호화 키데이터를 구할 수 없다.
또한 본 실시예에서는 새로운 평문블록이 암호화될 때마다 입력키 데이터가 갱신되기 때문에 모든 평문블록에 대해 동일한 입력키 데이터가 사용되는 경우에 비해 암호화의 보안성이 더욱 보증된다.
또한 본 실시예에서는 1024 평문블록이 암호화될 때마다 치환표 데이터가 갱신되기 때문에 모든 평문블록에 대해 동일한 치환표 데이터가 사용되는 경우에 비해 암호화의 보안성이 더욱 보증된다.
게다가 본 실시예에서는 암호화가 1024회 실행되는 경우에만 32K 비트 치환표 데이터의 생성이 실행된다. 32K 비트 치환표 데이터는 데이터 암호화부(601)에서 실행되는 8개 세트의 32비트 서브키 데이터의 생성보다 훨씬 많은 횟수를 취하기 때문에 데이터 암호화장치(60)는 제 3 종래 예의 경우와 마찬가지로 처리속도의 손실없이 암호화의 보안성을 유지한다.
제 3 실시예에서는 입력키 생성부(603, 703)가 2개 세트의 64비트 데이터에 관한 배타적 논리합 연산을 실행하는 동안 다른 데이터 병합방법으로 동일한 효과가 달성될 수 있다.
제 3 실시예에서는 64비트 실제의 키데이터가 키제어부(604, 704)에 의해 생성되는 동안 실제의 키데이터 길이가 64비트로 제한되지 않는다. 40비트 실제의 키데이터처럼 64비트보다 작은 실제의 키데이터는 입력키 생성부(603, 703)에서 데이터 병합연산을 수정함으로써 사용될 수 있으므로 출력 데이터는 64비트 길이이다.
제 3 실시예에서는 바로 선행하는 암호화처리에서 생성되는 암호문 블록이 입력키 생성부(603)에 입력된다. 그러나 바로 선행하는 암호화처리 동안 구해진 64비트 데이터가 암호문 블록 대신에 사용될 수 있다. 또한 이 데이터는 반드시 64비트 길이를 가질 필요는 없다. 40비트 데이터처럼 64비트보다 작은 데이터가 입력키 생성부(603)에서 데이터 병합연산을 수정함으로써 사용될 수 있으므로 출력데이터는 64비트 길이이다. 이것은 데이터 암호해독장치(70)에도 동일하게 적용된다.
제 3 실시예에서 데이터 암호화부(601)와 데이터 암호해독부(701)가 블로우피쉬 암호를 사용하는 동안 키데이터에 기초하여 치환표 데이터를 생성하는 임의의 블록 암호가 대신 사용될 수 있다.
제 3 실시예에서 10개 세트의 64비트 실제 키데이터로 구성된 암호화 키데이터는 각각의 송신기(6)와 수신기(7)에 저장된다. 이와 달리 암호화처리를 위해 먼저 사용될 64비트 실제의 키데이터 세트가 각각의 송신기(6)와 수신기(7)에 저장될 수 있으며, 64비트 실제 키데이터의 제 1 세트 다음의 다른 세트의 64비트 실제 키데이터가 평문 데이터와 함께 송신기(6)에 암호화되어 수신기(7)로 송신될 수 있다. 이와 달리 암호화 키데이터가 디피-헬만 구조(Diffie-Hellman scheme)와 같은 공용키 암호체계를 이용하여 배포될 수 있다.
제 1 내지 제 3 실시예에서, 데이터 암호화장치는 암호문 데이터를 생성하도록 입력 평문 데이터를 암호화하고, 데이터 암호해독장치는 암호문 데이터를 암호해독한다. 그러나 데이터 암호화장치와 데이터 암호해독장치는 데이터 암호해독 장치에 의한 암호해독이 데이터 암호화장치에 의한 암호화의 가역변환이기 때문에 암호화와 암호해독에 각각 사용될 수 있다. 따라서 데이터 암호해독장치는 암호문 데이터를 생성시키도록 입력 평문 데이터를 암호화할 수 있고 데이터 암호화 장치는 암호문 데이터를 암호해독할 수 있다.
상술한 각 실시예는 본 명세서에서는 논리 IC와 같은 하드웨어로서 설명되어 있으나 본 발명은 소프트웨어에 의해서도 실행가능하다. CD-ROM과 같은 컴퓨터 판독가능한 기록매체에 소프트웨어를 기록함으로써 본 발명과 관련한 생산, 이용, 양도, 대여, 수입 및 양도/대여를 위한 전시 등이 하드웨어의 경우에서와 마찬가지로 가능하다.
상술한 본 발명의 구성에 의하면 치환표 데이터 세트로부터 복수의 표값을 검색하고 그 복수의 표값에 대해 상이한 시프트 비트길이에 의한 회전과 같은 상이한 고정변환과 상이한 상수의 가산을 실행함으로써 보안성의 손실없이 치환표 데이터의 양이 감축되는 암호화와 암호해독을 실현할 수 있게 된다.
또한 치환표 데이터 세트로부터 하나의 표값을 검색하고 검색된 표값에 대해 상이한 비트길이에 의한 회전과 같은 상이한 고정변환과 상이한 상수의 가산을 실행하여 복수의 출력값을 생성시킴으로써 치환표 보안성의 상실없이 데이터의 양이 감축되는 경우의 암호화처리를 달성한다.
또한 치환표 데이터를 갱신하지 않고도 바로 선행하는 암호문 블록을 이용하여 실제의 키데이터를 변환시켜 입력 키데이터를 갱신함으로써 입력키 데이터가 각 입력블록의 암호화처리에 대해 갱신되는 동안 치환표 데이터의 생성빈도가 감축되기 때문에 보안성의 손실없이 고속처리를 달성할 수 있다.
비록 본 발명이 첨부도면을 참고로 한 실시예에 의해 설명되었지만 당업자라면 다양한 변경과 수정이 가능함이 명백하다. 따라서 이러한 변경과 수정은 본 발명의 범위로부터 벗어나지 않는 것이며 본 명세서에 포함되는 것으로서 생각될 수 있다.

Claims (39)

  1. 복수의 치환 데이터 세트를 사용하여 입력 데이터를 암호화 처리하여 출력 데이터를 생성시키는 암호화 처리장치에 있어서,
    소정수의 비트를 갖는 치환 데이터 (2^N)(N은 2 이상의 정수)세트를 저장하는 저장수단과;
    (N×M)(M은 2 이상의 정수) 비트의 길이를 갖는 입력 데이터로부터 적어도 1세트의 N비트 서브데이터를 생성하는 서브데이터 생성수단과;
    상기 서브데이터 생성수단에 의해 생성된 적어도 1세트의 서브데이터를 수신하고, 상기 적어도 1세트의 서브데이터 각각에 대하여 상기 저장수단 내의 치환 데이터 (2^N)세트 중의 하나를 특정하며, 상기 적어도 1세트의 서브데이터에 대하여 각각 특정된 적어도 1세트의 치환 데이터를 출력하는 치환수단과;
    상기 치환수단으로부터 출력된 적어도 1세트의 치환 데이터에 대하여 복수의 상이한 고정 변환을 실행하여 소정수의 비트를 갖는 변환된 데이터 M 세트를 생성시키는 고정 변환 실행수단과;
    상기 고정 변환 실행수단에 의해 생성된 변환된 데이터의 M세트에 기초하여 (N×M) 비트길이의 출력 데이터를 생성시키는 출력 데이터 생성수단을 포함하는 것을 특징으로 하는 암호화처리장치.
  2. 제 1 항에 있어서,
    상기 고정 변환 실행수단에 의해 실행된 복수의 상이한 고정변환은 상이한 비트 시프트 길이에 의한 회전인 것을 특징으로 하는 암호화처리장치.
  3. 제 2 항에 있어서,
    키데이터의 세트를 획득하는 키 획득수단과,
    상기 키 획득수단에 의해 획득된 키데이터의 세트에 기초하여 상기 고정변환 실행수단에 의해 실행되는 회전의 비트 시프트길이를 각각의 복수의 상이한 고정변환으로서 결정하는 회전결정수단을 추가로 포함하는 것을 특징으로 하는 암호화처리장치.
  4. 제 1 항에 있어서,
    상기 소정의 수는 (N×M)이며,
    상기 서브데이터 생성수단은 (N×M)비트 입력데이터를 N비트의 서브데이터 M세트로 분할하는 분할수단을 포함하고,
    상기 치환수단은 상기 분할수단에 의해 생성된 서브데이터 M세트에 대해 상기 저장수단 내의 치환 데이터의 (2^N) 세트중에서 (N×M)비트 치환 데이터 M세트를 특정하고, 각각의 길이가 (N×M)비트인 특정된 치환 데이터 M세트를 출력하며,
    상기 고정 변환 실행수단은 상기 치환수단으로부터 출력된 치환 데이터 M세트에 대하여 M회의 상이한 고정 변환을 실행하여 (N×M) 비트 변환된 데이터 M세트를 생성시키며,
    상기 출력 데이터 생성수단은 생성된 변환 데이터 M세트에 대해 병합처리를 실행하여 (N×M) 비트 길이인 출력 데이터를 생성하는 것을 특징으로 하는 암호화처리장치.
  5. 제 4 항에 있어서,
    상기 출력 데이터 생성수단에 의한 병합처리는 산술 가산연산과, 대응하는 비트에 대한 배타적 논리합 연산중의 적어도 하나의 연산으로 구성되는 것을 특징으로 하는 암호화처리장치.
  6. 제 1 항에 있어서,
    상기 소정의 수는 N이며,
    상기 서브데이터 생성수단은 (N×M)비트 입력 데이터를 N비트 부분데이터 M세트로 분할하는 분할수단과, 상기 M세트의 부분데이터에 대하여 글로벌 병합처리를 실행하여 N비트 서브데이터 세트를 생성하는 입력병합수단을 포함하고,
    상기 치환수단은 상기 입력 병합수단에 의해 생성된 서브데이터 세트에 대하여 상기 저장수단 내의 N비트 치환 데이터 (2^N)세트 중의 하나를 특정하며, 그 특정된 세트의 치환 데이터를 출력하고,
    상기 고정 변환 실행수단은 상기 치환수단으로부터 출력된 치환 데이터의 세트에 대해 각각 M회 상이한 고정변환을 별도로 실행하여 N비트 변환된 데이터 M세트를 생성하며,
    상기 출력 데이터 생성수단은 부분데이터 M세트의 각각과 그 부분데이터의 세트에 대응하는 변환된 데이터의 M세트중의 상이한 하나에 대하여 개개의 병합처리를 실행하여 N비트 출력 병합 데이터 M세트를 생성하는 출력 병합수단과, 상기 출력 병합수단에 의해 생성된 출력 병합 데이터 M세트를 결합하여 (N×M)비트 출력 데이터를 생성하는 결합수단을 포함하는 것을 특징으로 하는 암호화처리장치.
  7. 제 6 항에 있어서,
    상기 입력 병합수단에 의한 글로벌 병합처리는 산술 가산연산과, 대응하는 비트에 대한 배타적 논리합 연산중의 적어도 하나의 연산으로 구성되는 것을 특징으로 하는 암호화처리장치.
  8. 제 6 항에 있어서,
    상기 입력 병합수단에 의한 글로벌 병합처리는 복수의 상이한 고정변환이 상기 분할수단에 의해 생성된 M세트의 부분데이터에 대해 실행된 후, 산술 가산연산과, 대응하는 비트에 대한 배타적 논리합 연산중의 적어도 하나의 연산을 실행하는 것을 특징으로 하는 암호화처리장치.
  9. 제 6 항에 있어서,
    상기 출력 병합수단에 의해 실행된 상기 개별 병합처리는 산술 가산연산과, 대응하는 비트에 대한 배타적 논리합 연산중의 적어도 하나의 연산인 것을 특징으로 하는 암호화처리장치.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 소정수의 비트를 갖는 치환 데이터 (2^N)(N은 2이상의 정수)세트를 저장하는 저장부를 구비한 암호화처리장치에서 상기 (2^N)의 치환 데이터 세트를 사용하여 입력 데이터를 암호화 처리하여 출력 데이터를 생성시키는 암호화 처리방법에 있어서,
    (N×M)(M은 2 이상의 정수) 비트의 길이를 갖는 입력 데이터로부터 적어도 1세트의 N비트 서브데이터를 생성하는 서브데이터 생성단계와;
    상기 서브데이터 생성단계에서 생성된 적어도 1세트의 서브데이터를 수신하고, 상기 적어도 1세트의 서브데이터 각각에 대하여 상기 저장부 내의 치환 데이터 (2^N)세트 중의 하나를 특정하며, 상기 적어도 1세트의 서브데이터에 대하여 각각 특정된 적어도 1세트의 치환 데이터를 출력하는 치환단계와;
    상기 치환단계에서 출력되는 적어도 1세트의 치환 데이터에 대하여 복수의 상이한 고정 변환을 실행하여 소정수의 비트를 갖는 변환된 데이터 M 세트를 생성시키는 고정 변환 실행단계와;
    상기 고정 변환 실행단계에 의해 생성된 변환 데이터의 M세트에 기초하여 (N×M) 비트길이의 출력 데이터를 생성시키는 출력 데이터 생성단계를 포함하는 것을 특징으로 하는 암호화처리방법.
  26. 제 25 항에 있어서,
    상기 소정의 수는 (N×M)이며,
    상기 서브데이터 생성단계는 (N×M)비트 입력데이터를 N비트 서브데이터 M세트로 분할하는 분할 부단계를 포함하며,
    상기 치환단계는 상기 분할 부단계에서 생성된 서브데이터 M세트에 대해 상기 저장부 내의 치환 데이터의 (2^N) 세트중에서 (N×M)비트 치환 데이터 M세트를 특정하고, 특정된 치환 데이터 M세트를 출력하며,
    상기 고정 변환 실행단계는 상기 치환단계에 의해 출력된 치환 데이터 M세트에 대하여 M회의 상이한 고정 변환을 실행하여 (N×M) 비트 변환된 데이터 M세트를 생성시키며,
    상기 출력 데이터 생성단계는 상기 고정변환 실행단계에서 생성된 변환 데이터 M세트에 대해 병합처리를 실행하여 (N×M) 비트 출력 데이터를 생성하는 것을 특징으로 하는 암호화처리방법.
  27. 제 25 항에 있어서,
    상기 소정의 수는 N이며,
    상기 서브데이터 생성단계는 (N×M)비트 입력데이터를 N비트 부분데이터 M세트로 분할하는 분할 부단계와, 상기 M세트의 부분데이터에 대하여 글로벌 병합처리를 실행하여 N비트 서브데이터 세트를 생성하는 입력병합 부단계를 포함하고,
    상기 치환단계는 상기 입력병합 부단계에서 생성된 서브데이터 세트에 대해 상기 저장부 내의 N비트 치환 데이터 (2^N) 세트중에서 하나를 특정하고, 그 특정된 세트의 치환 데이터를 출력하며,
    상기 고정 변환 실행단계는 상기 치환단계에 의해 출력된 치환 데이터 세트에 대하여 M회의 상이한 고정 변환을 별도로 실행하여 N비트 변환된 데이터 M세트를 생성시키며,
    상기 출력 데이터 생성단계는,
    부분데이터 M세트의 각각과, 부분데이터 세트에 대응하는 변환된 데이터 M세트의 상이한 하나에 대해 개개의 병합처리를 실행하여 N비트 출력 병합데이터 M세트를 생성하는 출력병합 부단계와,
    상기 출력병합 부단계에 의해 생성된 출력 병합된 데이터 M세트를 결합하여 (N×M) 비트 출력 데이터를 생성하는 결합 부단계를 포함하는 것을 특징으로 하는 암호화처리방법.
  28. 삭제
  29. 삭제
  30. 삭제
  31. 소정수의 비트를 갖는 치환 데이터 (2^N)(N은 2이상의 정수)세트를 저장하는 저장부를 구비한 암호화처리장치에서, 상기 (2^N)의 치환 데이터 세트를 사용하여 입력 데이터를 암호화 처리하여 출력 데이터를 생성시키는 암호화 처리프로그램을 기록하는 컴퓨터 판독가능한 기록매체에 있어서,
    상기 암호화 처리프로그램은,
    (N×M)(M은 2 이상의 정수) 비트의 길이를 갖는 입력 데이터로부터 적어도 1세트의 N비트 서브데이터를 생성하는 서브데이터 생성단계와;
    상기 서브데이터 생성단계에서 생성된 적어도 1세트의 서브데이터를 수신하고, 상기 적어도 1세트의 서브데이터 각각에 대하여 상기 저장부 내의 치환 데이터 (2^N)세트 중의 하나를 특정하며, 상기 적어도 1세트의 서브데이터에 대하여 각각 특정된 적어도 1세트의 치환 데이터 세트를 출력하는 치환단계와;
    상기 치환단계에서 출력되는 적어도 1 세트의 치환 데이터에 대하여 복수의 상이한 고정 변환을 실행하여 소정수의 비트를 갖는 변환된 데이터 M 세트를 생성시키는 고정 변환 실행단계와;
    상기 고정 변환 실행단계에 의해 생성된 변환 데이터의 M세트에 기초하여 (N×M) 비트길이의 출력 데이터를 생성시키는 출력 데이터 생성단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  32. 제 31 항에 있어서,
    상기 소정의 수는 (N×M)이며,
    상기 서브데이터 생성단계는 (N×M)비트 입력데이터를 N비트 서브데이터 M세트로 분할하는 분할 부단계를 포함하며,
    상기 치환단계는 상기 분할 부단계에서 생성된 서브데이터 M세트에 대해 상기 저장부 내의 치환 데이터의 (2^N) 세트중에서 (N×M)비트 치환 데이터 M세트를 특정하고, 특정된 치환 데이터 M세트를 출력하며,
    상기 고정 변환 실행단계는 상기 치환단계에 의해 출력된 치환 데이터 M세트에 대하여 M회의 상이한 고정 변환을 실행하여 (N×M) 비트 변환된 데이터 M세트를 생성시키며,
    상기 출력 데이터 생성단계는 상기 고정변환 실행단계에서 생성된 변환 데이터 M세트에 대해 병합처리를 실행하여 (N×M) 비트 출력 데이터를 생성하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  33. 제 31 항에 있어서,
    상기 소정의 수는 N이며,
    상기 서브데이터 생성단계는 (N×M)비트 입력데이터를 N비트 부분데이터 M세트로 분할하는 분할 부단계와, 상기 M세트의 부분데이터에 대하여 글로벌 병합처리를 실행하여 N비트 서브데이터 세트를 생성하는 입력병합 부단계를 포함하고,
    상기 치환단계는 상기 입력병합 부단계에서 생성된 서브데이터 세트에 대해 상기 저장부 내의 N비트 치환 데이터 (2^N) 세트중에서 하나를 특정하고, 그 특정된 세트의 치환 데이터를 출력하며,
    상기 고정 변환 실행단계는 상기 치환단계에 의해 출력된 치환 데이터 세트에 대하여 M회의 상이한 고정 변환을 별도로 실행하여 N비트 변환된 데이터 M세트를 생성시키며,
    상기 출력 데이터 생성단계는,
    부분데이터 M세트의 각각과, 부분데이터 세트에 대응하는 변환된 데이터 M세트의 상이한 하나에 대해 개개의 병합처리를 실행하여 N비트 출력 병합데이터 M세트를 생성하는 출력병합 부단계와,
    상기 출력병합 부단계에 의해 생성된 출력 병합된 데이터 M세트를 결합하여 (N×M) 비트 출력 데이터를 생성하는 결합 부단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
  34. 삭제
  35. 삭제
  36. 삭제
  37. 복수의 치환 데이터 세트를 사용하여 암호문 데이터를 해독하여 평문 데이터를 생성시키는 암호해독장치에 있어서,
    소정수의 비트를 갖는 치환 데이터 (2^N)(N은 2 이상의 정수)세트를 저장하는 저장수단과;
    (N×M)(M은 2 이상의 정수) 비트의 길이를 갖는 암호문 데이터로부터 적어도 1세트의 N비트 서브데이터를 생성하는 서브데이터 생성수단과;
    상기 서브데이터 생성수단에 의해 생성된 적어도 1세트의 서브데이터를 수신하고, 상기 적어도 1세트의 서브데이터 각각에 대하여 상기 저장수단내의 치환 데이터 (2^N)세트 중의 하나를 특정하며, 상기 적어도 1세트의 서브데이터에 대하여 각각 특정된 적어도 1세트의 치환 데이터를 출력하는 치환수단과;
    상기 치환수단으로부터 출력된 적어도 1세트의 치환 데이터에 대하여 복수의 상이한 고정 변환을 실행하여 소정수의 비트를 갖는 변환된 데이터 M 세트를 생성시키는 고정 변환 실행수단과;
    상기 고정 변환 실행수단에 의해 생성된 변환된 데이터의 M세트에 기초하여 (N×M) 비트길이의 평문 데이터를 생성시키는 평문 데이터 생성수단을 포함하는 것을 특징으로 하는 암호해독장치.
  38. 소정수의 비트를 갖는 치환 데이터 (2^N)(N은 2이상의 정수)세트를 저장하는 저장부를 구비한 암호해독장치에서 상기 (2^N)의 치환 데이터 세트를 사용하여 암호문 데이터를 해독하여 평문 데이터를 생성시키는 암호해독방법에 있어서,
    (N×M)(M은 2 이상의 정수) 비트의 길이를 갖는 암호문 데이터로부터 적어도 1세트의 N비트 서브데이터를 생성하는 서브데이터 생성단계와;
    상기 서브데이터 생성단계에서 생성된 적어도 1세트의 서브데이터를 수신하고, 상기 적어도 1세트의 서브데이터 각각에 대하여 상기 저장부 내의 치환 데이터 (2^N)세트 중의 하나를 특정하며, 상기 적어도 1세트의 서브데이터에 대하여 각각 특정된 적어도 1세트의 치환 데이터를 출력하는 치환단계와;
    상기 치환단계에서 출력되는 적어도 1세트의 치환 데이터에 대하여 복수의 상이한 고정 변환을 실행하여 소정수의 비트를 갖는 변환된 데이터 M 세트를 생성시키는 고정 변환 실행단계와;
    상기 고정 변환 실행단계에서 생성된 변환 데이터의 M세트에 기초하여 (N×M) 비트길이의 평문 데이터를 생성시키는 평문 데이터 생성단계를 포함하는 것을 특징으로 하는 암호해독방법.
  39. 소정수의 비트를 갖는 치환 데이터 (2^N)(N은 2이상의 정수)세트를 저장하는 저장부를 구비한 암호해독장치에서, 상기 (2^N)의 치환 데이터 세트를 사용하여 암호문 데이터를 해독하여 평문 데이터를 생성시키는 암호해독 프로그램을 기록하는 컴퓨터 판독가능한 기록매체에 있어서,
    상기 암호해독 프로그램은,
    (N×M)(M은 2 이상의 정수) 비트의 길이를 갖는 암호문 데이터로부터 적어도 1세트의 N비트 서브데이터를 생성하는 서브데이터 생성단계와;
    상기 서브데이터 생성단계에서 생성된 적어도 1세트의 서브데이터를 수신하고, 상기 적어도 1세트의 서브데이터 각각에 대하여 상기 저장부 내의 치환 데이터 (2^N)세트 중의 하나를 특정하며, 상기 적어도 1세트의 서브데이터에 대하여 각각 특정된 적어도 1세트의 치환 데이터 세트를 출력하는 치환단계와;
    상기 치환단계에서 출력되는 적어도 1세트의 치환 데이터에 대하여 복수의 상이한 고정 변환을 실행하여 소정수의 비트를 갖는 변환된 데이터 M 세트를 생성시키는 고정 변환 실행단계와;
    상기 고정 변환 실행단계에서 생성된 변환 데이터의 M세트에 기초하여 (N×M) 비트길이의 평문 데이터를 생성시키는 평문 데이터 생성단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 기록매체.
KR1019990014941A 1998-04-27 1999-04-27 암호화 처리장치, 암호화 처리방법 및 보안성을 손상시키지 않고 고속으로 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체 KR100362458B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP???10-116758 1998-04-27
JP11675998 1998-04-27
JP???10-116759 1998-04-27
JP11675898 1998-04-27

Publications (2)

Publication Number Publication Date
KR19990083489A KR19990083489A (ko) 1999-11-25
KR100362458B1 true KR100362458B1 (ko) 2002-11-23

Family

ID=26455022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990014941A KR100362458B1 (ko) 1998-04-27 1999-04-27 암호화 처리장치, 암호화 처리방법 및 보안성을 손상시키지 않고 고속으로 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체

Country Status (5)

Country Link
US (1) US6570989B1 (ko)
EP (1) EP0954135B1 (ko)
KR (1) KR100362458B1 (ko)
CN (1) CN1124545C (ko)
DE (1) DE69916160T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101312374B1 (ko) * 2011-07-25 2013-09-27 소프트포럼 주식회사 데이터 크기 조정 장치 및 방법

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3097655B2 (ja) * 1998-05-11 2000-10-10 日本電気株式会社 データ伝送方式
JP3679936B2 (ja) * 1998-11-27 2005-08-03 東芝ソリューション株式会社 暗復号装置及び記憶媒体
TW556111B (en) * 1999-08-31 2003-10-01 Toshiba Corp Extended key generator, encryption/decryption unit, extended key generation method, and storage medium
US6956951B2 (en) * 2000-07-13 2005-10-18 Fujitsu Limited Extended key preparing apparatus, extended key preparing method, recording medium and computer program
US7006634B1 (en) * 2000-09-28 2006-02-28 Cisco Technology, Inc. Hardware-based encryption/decryption employing dual ported key storage
AU2008200824B2 (en) * 2001-02-13 2010-06-03 Nec Corporation An anonymous decryption system, an anonymous decryption method, and program
JP3788246B2 (ja) * 2001-02-13 2006-06-21 日本電気株式会社 匿名復号システム及び匿名復号方法
US20020116624A1 (en) * 2001-02-16 2002-08-22 International Business Machines Corporation Embedded cryptographic system
JP4235453B2 (ja) * 2001-03-24 2009-03-11 ヴォートヒア インコーポレイテッド 検証可能な秘密のシャッフルおよびそれらの電子投票への応用
US6980649B1 (en) * 2001-12-10 2005-12-27 Cisco Technology, Inc. Hardware-based encryption/decryption employing dual ported memory and fast table initialization
JP3730926B2 (ja) * 2002-03-14 2006-01-05 京セラ株式会社 ヘリカル型アンテナの設計方法
US20040131181A1 (en) * 2002-04-03 2004-07-08 Rhoads Steven Charles Method and apparatus for encrypting content
JP2003323761A (ja) * 2002-05-02 2003-11-14 Sony Corp デジタルデータの記録媒体、記録方法、記録装置、再生方法、再生装置、送信方法および送信装置
JP2004245988A (ja) * 2003-02-13 2004-09-02 Sony Corp データ処理装置、その方法およびそのプログラムと線形変換回路および暗号化回路
US7257225B2 (en) * 2003-12-29 2007-08-14 American Express Travel Related Services Company, Inc. System and method for high speed reversible data encryption
US7752453B2 (en) * 2004-01-08 2010-07-06 Encryption Solutions, Inc. Method of encrypting and transmitting data and system for transmitting encrypted data
US7526643B2 (en) * 2004-01-08 2009-04-28 Encryption Solutions, Inc. System for transmitting encrypted data
US8031865B2 (en) * 2004-01-08 2011-10-04 Encryption Solutions, Inc. Multiple level security system and method for encrypting data within documents
US7162647B2 (en) * 2004-03-11 2007-01-09 Hitachi, Ltd. Method and apparatus for cryptographic conversion in a data storage system
US20060126827A1 (en) * 2004-12-14 2006-06-15 Dan P. Milleville Encryption methods and apparatus
US20080024332A1 (en) * 2006-07-27 2008-01-31 George Simonson Method and Apparatus for Protecting Data
WO2014105834A1 (en) * 2012-12-30 2014-07-03 Feliciano Raymond Richard Method and apparatus for encrypting and decrypting data
CN104618092A (zh) * 2015-01-05 2015-05-13 浪潮(北京)电子信息产业有限公司 一种信息加密方法及系统
JP6735926B2 (ja) * 2017-09-01 2020-08-05 三菱電機株式会社 暗号化装置、復号装置、暗号化方法、復号方法、暗号化プログラム及び復号プログラム
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US20200145187A1 (en) * 2019-12-20 2020-05-07 Intel Corporation Bit-length parameterizable cipher
US10637837B1 (en) 2019-11-27 2020-04-28 Marpex, Inc. Method and system to secure human and also internet of things communications through automation of symmetric encryption key management
CN111711519A (zh) * 2020-08-19 2020-09-25 杭州海康威视数字技术股份有限公司 一种基于动态白盒的数据处理方法、装置及设备
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2658065A1 (de) 1976-12-22 1978-07-06 Ibm Deutschland Maschinelles chiffrieren und dechiffrieren
FR2582174B1 (fr) 1985-05-15 1990-03-09 Thomson Csf Dispositif de chiffrement par substitutions-permutations
US5214704A (en) * 1989-10-04 1993-05-25 Teledyne Industries, Inc. Nonlinear dynamic substitution devices and methods for block substitutions
US5235423A (en) * 1991-08-16 1993-08-10 The Grass Valley Group, Inc. Controllable pseudo random noise pattern generator for use in video special effects
JPH0812537B2 (ja) 1993-03-11 1996-02-07 日本電気株式会社 暗号化装置
SG42847A1 (en) * 1993-05-05 1997-10-17 Zunquan Liu Device and method for data encryption

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101312374B1 (ko) * 2011-07-25 2013-09-27 소프트포럼 주식회사 데이터 크기 조정 장치 및 방법

Also Published As

Publication number Publication date
EP0954135A2 (en) 1999-11-03
US6570989B1 (en) 2003-05-27
CN1241751A (zh) 2000-01-19
DE69916160D1 (de) 2004-05-13
EP0954135B1 (en) 2004-04-07
DE69916160T2 (de) 2004-08-26
CN1124545C (zh) 2003-10-15
EP0954135A3 (en) 2000-06-07
KR19990083489A (ko) 1999-11-25

Similar Documents

Publication Publication Date Title
KR100362458B1 (ko) 암호화 처리장치, 암호화 처리방법 및 보안성을 손상시키지 않고 고속으로 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체
JP4828068B2 (ja) コンピュータで効率的な線形フィードバック・シフト・レジスタ
KR100349332B1 (ko) 데이터 암호화장치 및 방법
US7613297B2 (en) Method and apparatus for data encryption
US8213607B2 (en) Method for securely extending key stream to encrypt high-entropy data
US6917684B1 (en) Method of encryption and decryption with block number dependant key sets, each set having a different number of keys
KR100296958B1 (ko) 블록 데이터 암호화 장치
KR20030078453A (ko) 무선 랜에서의 데이터 암호화/복호화 방법 및 장치
CN109981249B (zh) 基于拉链式动态散列和nlfsr的加密解密方法及装置
JP3769804B2 (ja) 解読化方法および電子機器
JP2003516659A (ja) 1の補数暗号コンバイナ
RU2141729C1 (ru) Способ криптографического преобразования блоков двоичных данных
Kareem et al. New modification on feistel DES algorithm based on multi-level keys
CN114826558A (zh) 一种海量数据快速加密方法及系统
JPH1117673A (ja) 共通鍵暗号通信方法及びその通信ネットワーク
JP3154991B2 (ja) 暗号処理装置、暗号処理方法、及び、暗号処理プログラムを記憶した記憶媒体
RU2738321C1 (ru) Способ криптографического преобразования и устройство для его осуществления
JP2001016197A (ja) 自己同期型ストリーム暗号システム及びこれを用いたmac生成方法
JP3473171B2 (ja) 逐次暗号方式
JP2001142395A (ja) 拡大鍵生成装置、暗復号装置、拡大鍵生成方法、及び記憶媒体
US20230216659A1 (en) Method for processing encrypted data
Tun et al. Message Security using One Time Pad and AES Hybrid Cryptography
KR100262384B1 (ko) 암호화 방법 및 장치(Encryption Method and Apparatus)
Hattab et al. Developing the Complexity and Security of the Twofish Algorithm Through a New Key Scheduling Design
JP3371981B2 (ja) ブロック暗号作成装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121019

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20131018

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20141022

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20161020

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20181022

Year of fee payment: 17

EXPY Expiration of term