KR20020016624A - 보조 변환을 이용한 블럭 암호 장치 - Google Patents

보조 변환을 이용한 블럭 암호 장치 Download PDF

Info

Publication number
KR20020016624A
KR20020016624A KR1020017014247A KR20017014247A KR20020016624A KR 20020016624 A KR20020016624 A KR 20020016624A KR 1020017014247 A KR1020017014247 A KR 1020017014247A KR 20017014247 A KR20017014247 A KR 20017014247A KR 20020016624 A KR20020016624 A KR 20020016624A
Authority
KR
South Korea
Prior art keywords
data
key
conversion
unit
bit
Prior art date
Application number
KR1020017014247A
Other languages
English (en)
Other versions
KR100449594B1 (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 KR20020016624A publication Critical patent/KR20020016624A/ko
Application granted granted Critical
Publication of KR100449594B1 publication Critical patent/KR100449594B1/ko

Links

Classifications

    • 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
    • H04L2209/122Hardware reduction or efficient architectures
    • 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
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • 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

암호화부(200)와 복호화부(500)를 동일한 회로에서 겸용하여 사용하도록 한다. 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(273)를 비선형 데이터 변환부(220)를 중심으로 점대칭 위치에 배치하고, 데이터 정변환부(FL)(253)와 데이터 역변환부(FL-1)(271)를 비선형 데이터 변환부(220)를 중심으로 점대칭 위치에 배치함으로써 암호화부(200)와 복호화부(500)를 동일한 회로로 구성할 수 있다.

Description

보조 변환을 이용한 블럭 암호 장치{BLOCK ENCRYPTION DEVICE USING AUXILIARY CONVERSION}
도 25는, 「현대 암호이론」(사단법인 전자정보 통신학회, 평성 9년11월15일 발행, 46페이지)에 기재된 종래의 DES암호에 이용되는 암호함수를 도시한 도면이다.
도 25에 도시한 바와 같이, 8개의 S박스가 제공되어 있다. 이들 8개의 S박스는 각각 서로 다른 테이블이다. 각 테이블은, 6비트의 입력 데이터로부터 4비트의 출력 데이터를 출력하는 것이다.
도 26은 「Specification of E2-a 128-bit Block Cipher」(Nippon Telegraph and Telephone Corporation, June 14, 1998, 10페이지)에 기재된 비선형 변환 함수를 나타내는 도면이다.
도 26에 도시한 바와 같이, 각 S 함수부에는 8개의 S박스가 제공되어 있다.
종래의 암호 장치에는 복수의 S 박스가 제공되어 있다. 임의의 암호에서는 각각 서로 다른 테이블이 준비되어 있으므로, 기억 용량이 하나의 S 박스를 사용할 경우에 비해 증대되고, 또한 다른 암호에서는, 하나의 S 박스 밖에 사용하지 않기 때문에 안전성이 저하된다는 문제가 있다.
또한, 도 7에 도시한 바와 같이, 암호화부에 데이터 정변환부(FL)(250)가 마련된 경우에, 복호화부에 데이터 역변환부(FL-1)(270)를 마련하지 않으면 복호화가 불가능하다. 데이터 정변환부(FL)(250)와 데이터 역변환부(FL-1)(270)는 일반적으로는 서로 다른 회로이기 때문에, 암호화부와 복호화부를 동일한 구성으로 할 수 없다는 과제가 있었다.
또한, 확대 키를 생성하는 경우, 보다 안전성이 높은 확대 키를 생성하기 위하여 복잡한 연산이 필요하였다. 또한, 확대 키를 생성하는 경우, 초기 값으로서 입력되는 키 데이터의 비트 수가 일정한 값이어야 한다는 과제가 있었다.
본 발명은, 정보 통신 등에 있어서, 디지털 정보를 보호하는 암호화와 복호 및 데이터 확산 등을 위한 데이터 변환 장치와 데이터 변환 방법, 및 데이터 변환 방법을 기록한 기록 매체에 관한 것이다.
도 1은 암호화용 데이터 변환 장치(100)와 복호화용 데이터 변환 장치(400)를 도시한 도면.
도 2는 부호 및 기호의 설명도.
도 3은 암호화부(200) 또는 복호화부(500)의 구성도.
도 4는 암호화부(200) 또는 복호화부(500)의 다른 구성도.
도 5는 데이터 정변환부(FL)(251)의 구성도.
도 6은 데이터 역변환부(FL-1)(27l)의 구성도.
도 7은 종래의 암호화부와 복호화부의 일부를 도시한 도면.
도 8은 암호화부(200)와 복호화부(500)의 일부를 도시한 도면.
도 9는 점대칭으로 배치된 데이터 정변환부(FL)(25l)와 데이터 역변환부(FL-1)(271)를 도시한 도면.
도 10은 점대칭으로 배치된 데이터 정변환부(FL)와 데이터 역변환부(FL-1)의 관계를 도시한 도면.
도 11은 비선형 함수부 F를 도시한 도면.
도 l2는 S 박스 제1 변환부(13)와 S 박스 제2 변환부(14)의 구성도.
도 13은 S 박스 변환부(21)의 구성도.
도 14는 선형 변환부(85)의 구성도.
도 15는 선형 변환부(87)의 구성도.
도 16은 키 생성부(300) 또는 키 생성부(600)의 구성도.
도 17은 비트 길이 변환부(310)의 동작 설명도.
도 18은 시프트 레지스터A(341)의 구성도.
도 19는 시프트 제어부(345)의 제어 테이블의 구성도.
도 20은 시프트 레지스터A(341)와 시프트 레지스터B(342)의 동작 설명도.
도 21은 시프트 레지스터A(341)와 시프트 레지스터B(342)의 확대 키의 대응도.
도 22는 시프트 레지스터A(341)∼시프트 레지스터D(344)의 동작 설명도.
도 23은 시프트 레지스터A(341)∼시프트 레지스터D(344)의 확대 키의 대응도.
도 24는 암호화용 데이터 변환 장치(100)와 복호화용 데이터 변환 장치(400)가 실장된 컴퓨터를 도시한 도면.
도 25는 종래의 DES의 암호 함수의 구성도.
도 26은 종래의 128 비트 블럭 암호 E2의 비선형 함수를 도시한 도면.
도 27은 S 박스 변환부의 다른 예를 도시한 도면.
도 28은 S 박스 제1∼제4 변환부를 이용한 비선형 함수부 F를 도시한 도면.
도 29는 키 함수부(25)의 배치를 변경한 도면.
도 30은 키 함수부(25)의 배치를 변경한 다른 도면.
도 31은 P 함수부(30)의 다른 구성도.
도 32는 P 함수부(30)의 다른 구성도.
도 33은 도 31의 S1∼S4의 구성과 동작을 설명하는 도면.
도 34는 등가 키의 비존재 증명의 설명도.
도 35는 등가 키의 비존재 증명의 설명도.
도 36은 암호화부(200) 또는 복호화부(500)의 다른 구성도.
도 37은 암호화부(200) 또는 복호화부(500)의 다른 구성도.
도 38은 암호화부(200) 또는 복호화부(500)의 다른 구성도.
도 39는 암호화부(200) 또는 복호화부(500)의 다른 구성도.
도 40은 암호화부(200) 또는 복호화부(500)의 다른 구성도.
도 41은 암호화부(200) 또는 복호화부(500)의 다른 구성도.
도 42는 도 39와 도 40을 병합한 경우를 도시한 도면.
도 43은 도 3에 나타낸 암호화부(200) 또는 복호화부(500)에 대하여 도 28에 나타낸 비선형 함수부 F를 이용한 경우의 구성도.
도 44는 도 43에 나타낸 비선형 함수부 F 중에서 키 함수부(25)를 삭제한 비선형 함수부 F'를 이용한 경우를 도시한 도면.
도 45는 도 44의 구성에 대하여 백색화 확대 키의 연산을 확대 키와 함께 더 행하는 경우를 도시한 도면.
도 46은 비선형 함수부 F가 도 29에 도시한 바와 같은 구성을 취하는 경우에, 비선형 함수부 F로부터 키 함수부(25)를 삭제하고, 그 대신에 확대 키 K를 XOR 회로(298)에 공급하는 경우를 도시한 도면.
도 47은 비선형 함수부 F가 도 30에 도시한 바와 같은 구성을 취하는 경우, 비선형 함수부 F로부터 키 함수부(25)를 삭제하고, 그 대신에 비선형 변환된 확대 키 K'를 XOR 회로(298)에 공급하는 경우를 도시한 도면.
본 발명은, 암호화용과 복호화용의 회로를 동일하게 구성함과 동시에, 비선형 함수 계산을 위해 이용되는 회로 규모, 프로그램 사이즈, 메모리 용량을 삭감하여, 확대 키를 생성하는 경우에 간단한 구성으로 생성할 수 있는 시스템을 제공하는 것을 목적으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비한 데이터 변환 장치에 있어서, 상기 데이터 처리부는, 데이터 변환을 행하는 데이터를 제1 데이터(L)와 제2 데이터(R)로 분할하여 데이터 변환함과 함께, 상기 데이터 처리부는, 제1 데이터(L)를 변환하는 데이터 정변환부(FL)와, 제2 데이터(R)를 상기 데이터 정변환부(FL)의 변환과는 반대의 변환을 행하는 데이터 역변환부(FL-1)를 구비한 것을 특징으로 한다.
상기 데이터 처리부는 제1 입력 및 제2 입력과, 제1 출력 및 제2 출력을 구비하며, 상기 데이터 정변환부(FL)는 변환된 데이터를 데이터 처리부의 제1 입력으로 출력하고, 상기 데이터 역변환부(FL-1)는 상기 데이터 처리부의 제2 출력으로부터 출력된 데이터를 변환하여 출력하는 것을 특징으로 한다.
상기 데이터 처리부는 제1 입력 및 제2 입력과, 제1 출력 및 제2 출력을 구비하며, 상기 데이터 정변환부(FL)는 변환된 데이터를 데이터 처리부의 제2 입력으로 출력하고, 상기 데이터 역변환부(FL-1)는 상기 데이터 처리부의 제1 출력으로부터 출력된 데이터를 변환하여 출력하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비하는 데이터 변환 장치에 있어서, 상기 데이터 처리부는 데이터를 비선형 변환하는 비선형 변환부를 구비하고, 상기 비선형 변환부는, 변환할 데이터의일부분의 데이터를 제1 부분 데이터로서 입력하고, 입력한 데이터의 값을 다른 값으로 변환하여 출력하는 변환 테이블 T를 이용하여 제1 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제1 변환부(s1)와, 변환할 데이터의 적어도 다른 일부분의 데이터를 제2 부분 데이터로서 입력하고, 상기 변환 테이블 T을 이용한 변환과 제2 부분용 연산을 이용하여 제2 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제2 변환부(s2)를 구비한 것을 특징으로 한다.
상기 제1 변환부(s1)는, 상기 변환 테이블 T에 데이터 y1을 입력하여 데이터 s1(y1)을 출력시켜, 상기 데이터를 데이터 z1=s1(y1)으로서 출력하고, 상기 제2 변환부(s2)는, 상기 변환 테이블 T에 데이터 y2를 입력하여 데이터 s1(y2)을 출력시켜, 데이터 s1(y2)를 순회 시프트 처리한 데이터 (rot(s1(y2)))을 데이터 z2=rot(s1(y2))로서 출력하는 것을 특징으로 한다.
상기 데이터 처리부는, 변환할 데이터의 제1 부분 데이터와 제2 부분 데이터와는 서로 다른 일부분 데이터를 제3 부분 데이터로서 입력하고, 상기 제1 부분 데이터와 상기 제2 부분 데이터와 상기 제3 부분 데이터와는 상이한 일부분의 데이터를 제4 부분 데이터로서 각각 입력하고, 상기 변환 테이블(T)을 이용한 변환과, 상기 제2 변환부(s1)의 제2 부분용 연산과는 각각 상이한 제3 부분용 연산과 제4 부분용 연산에 의해, 상기 제3 부분 데이터와 상기 제4 부분 데이터를 각각 변환하고, 변환한 데이터를 출력하는 제3 변환부(s3) 및 제4 변환부(s4)를 더 구비한 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비한 데이터 변환 장치에 있어서, 상기 데이터 처리부는, 변환할 데이터를 입력으로 하여, 입력된 데이터를 임의의 필드의 원소로 간주하고, 그 부분 필드를 이용한 역원(inverse element) 회로를 이용하여 변환하고, 변환한 데이터를 출력하는 부분 필드 변환부와, 상기 부분 필드 변환부의 전단과 후단의 적어도 어느 한 쪽에서 변환하는 갈로아 필드(GF)(2n) 상의 데이터를 자연히 대응하는 GF(2)n의 원소로 간주하고, GF(2) 상의 벡터 공간 GF(2)n의 준선형(affine) 변환부를 구비한 것을 특징으로 한다.
상기 부분 필드 변환부는, N(N은 우수)비트의 데이터 X를 X=X0+βX1(X0, X1:부분 필드의 원소, β:원래의 필드의 원소)이 되는 상위의 N/2비트의 데이터 X1과 하위의 N/2 비트의 데이터 X0으로 등분하고, Y=Y0+βY1=1/(X0+βX1)(단, X=0일 때 Y=0)이 되는 상위의 데이터 Y1과 하위의 N/2 비트의 데이터 Y0를 각각 N/2비트 단위로 연산하여 데이터 y를 구하는 복수의 N/2 비트 연산기만을 구비하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터처리부와, 상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부를 구비한 데이터 변환 장치에 있어서, 상기 데이터 처리부는, 각 단마다 확대 키를 입력으로 하여 비선형 변환을 행하는 다단으로 접속된 복수단의 비선형 데이터 변환부를 구비하고, 상기 키 생성부는, 상기 복수단의 비선형 데이터 변환부의 각 단에 대하여 공급하는 확대 키를 생성하는 경우, 키 데이터와 키 데이터로부터 생성된 키 데이터에 의존하는 데이터 중의 적어도 어느 하나를 입력으로 하여 사전에 정해진 비트 수 Z1, Z2,···, Zm(여기서, i, j, k는 1∼m의 어느 하나의 값으로서, Zk-Zj= I×(Zi+1-Z1)= I× B(I는 정수, B= Zi+1-Zi))만큼 순회 시프트하고, 이 순회 시프트한 키 데이터로부터 각 단의 비선형 데이터 변환부의 확대 키를 생성하는 키 시프트부를 구비함과 함께, 상기 키 시프트부는, 한 번의 동작으로 (Zi+1-Zi) 비트(B 비트)의 순회 시프트를 행하는 순회 시프트 레지스터와, Zi비트 순회 시프트된 키 데이터에 대하여 순회 시프트 레지스터를 한 번 동작시켜 (Zi+1-Zi) 비트(B 비트)의 순회 시프트를 실행시킴으로써, 순회 시프트 레지스터에 Zi+1비트 순회 시프트된 키 데이터를 생성시키고, Zi+1비트 순회 시프트된 키 데이터에 대하여 순회 시프트 레지스터를 I 회 동작시켜 I×(Zi+1-Zi) 비트(I× B 비트)의 순회 시프트를 실행시킴으로써, 순회 시프트 레지스터에 Zi+2비트 순회 시프트된 키 데이터를 생성시키는 제어부를 구비하는 것을 특징으로 한다.
상기 순회 시프트 레지스터는, 순회 시프트 레지스터를 동작시키기 위해서공급되고 있는 동작 클럭의 1 클럭 사이클에서 Zi+1-Zi비트(B 비트)의 순회 시프트를 행하는 회로인 것을 특징으로 한다.
상기 순회 시프트 회로는, (Zi+1-Zi) 비트(B 비트)의 값으로서, B1= 8×J1+ 1 (J1= O 이상의 정수) 비트와, B2= 8×J2-1(J2= 1이상의 정수, J1과 J2는 무관계, 즉, J1≠J2또는 J1=J2) 비트 중 어느 하나의 값을 선택하는 선택기를 구비한 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와, 상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부를 구비한 데이터 변환 장치에 있어서, 상기 데이터 처리부는, 각 단마다 확대 키를 입력으로 하여 비선형 변환을 행하는 다단으로 접속된 복수단의 비선형 데이터 변환부를 구비하며, 상기 키 생성부는, 상기 복수단의 비선형 데이터 변환부의 각 단에 대하여 공급하는 확대 키를 생성하는 경우, 임의의 키 데이터를 사전에 정해진 비트 수(B 비트)만큼 순차로 순회 시프트하여, 이 순회 시프트한 키 데이터로부터 각 단의 비선형 데이터 변환부의 확대키를 생성하는 키 시프트부를 가짐과 함께, 상기 키 시프트부는, B 비트만큼 순차로 순회 시프트한 데이터 중에서 일부의 데이터를 무시하여 확대 키를 생성하지 않고, 나머지의 다른 데이터로부터 확대 키를 생성하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와, 상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부를 구비한 데이터 변환 장치에 있어서, 상기 키 생성부는, G 비트의 G 비트 키 데이터를 입력으로 하여 변환하고, G 비트의 제1 G 비트 변환 키 데이터를 출력하는 제1 G 비트 키 변환부와, 상기 제1 G 비트 키 변환부로부터 출력된 제1 G 비트 변환 키 데이터를 입력으로 하고, 이를 다시 변환하여 G 비트의 제2 G 비트 변환 키 데이터를 출력하는 제2 G 비트 변환부를 구비하며, 상기 키 생성부가 G 비트 키 데이터 K를 입력으로 한 경우는, G 비트 키 데이터 K를 상기 제1 G 비트 키 변환부에 입력하여 변환하고, 상기 제1 G 비트 키 변환부에 의해 출력된 제l G 비트 변환 키 데이터 K1를 변환된 G 비트 키 데이터로서 출력하며, 상기 키 생성부가 2G 비트 키 데이터 K를 입력으로 한 경우는, 2G 비트 키 데이터 K로부터 G비트 키 데이터를 생성하여 생성한 G 비트 키 데이터를 상기 제1 G 비트 키 변환부에 입력하여 변환하고 제1 G 비트 변환 키 데이터 K1를 출력하고, 제 l G 비트 변환 키 데이터 K1를 제2 G 비트 변환부에 입력하여 변환하고 제2 G 비트 변환 키 데이터 K2를 출력하며, 상기 제 l G 비트 키 변환부에 의해 출력된 제1 G 비트 변환 키 데이터 K1와, 상기 제2 G 비트 변환부에 의해 출력된 제2 G 비트 변환 키 데이터 K2를 연결하여, 변환된 2G 비트 키 데이터(K1, K2)로서 출력하는 것을 특징으로 한다.
상기 제1 G 비트 키 변환부는, G 비트 키 데이터를 비선형 변환하는 2단의 비선형 데이터 변환부와, 2단째의 비선형 데이터 변환부로부터 출력된 변환 도중의 G 비트 키 데이터와, 상기 제1 G 비트 키 변환부에 입력된 G 비트 키 데이터와의 논리 연산을 행하는 논리 연산부를 구비한 것을 특징으로 한다.
상기 키 생성부는, Q 비트(G<Q<2G)의 키 데이터를 입력으로 한 경우, Q 비트의 키 데이터를 2G 비트의 키 데이터로 변환하는 비트 길이 변환부를 더 포함한 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와, 상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부를 구비한 데이터 변환 장치에 있어서, 데이터 변환을 행하는 데이터와 키 데이터를 논리 연산하는 키 함수부와, 데이터 변환을 행하는 데이터를 다른 데이터로 치환 변환하는 S 함수부와, 데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수부를 구비하는 비선형 함수부(F)를 구비하고, 상기 비선형 함수부(F)는, 상기 키 함수부를 상기 S 함수부와 상기 P 함수부의 사이에 배치한 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와, 상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부를 구비한 데이터 변환 장치에 있어서, 데이터 변환을 행하는 데이터와 키 데이터를 논리 연산하는 키 함수부와, 데이터 변환을 행하는 데이터를 다른 데이터로 치환 변환하는 S 함수부와, 데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수부를 갖는 비선형 함수부(F)를 구비하며, 상기 비선형 함수부(F)는 상기 키 함수부를 상기 S 함수부와 상기 P 함수부 모두의 앞과 뒤의 어느 한 쪽에 배치한 것을 특징으로 한다.
상기 S 함수부는, 변환할 데이터의 일부분의 데이터를 제1 부분 데이터로서 입력하고, 입력한 데이터 값을 다른 값으로 변환하여 출력하는 변환 테이블 T를 이용하여 상기 제1 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제1 변환부(s1)와, 변환할 데이터의 적어도 다른 일부분의 데이터를 제2 부분 데이터로서 입력하고, 상기 변환 테이블 T를 이용한 변환과 제2 부분용 연산을 이용하여 상기 제2 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제2 변환부(S2)를 구비한 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비한 데이터 변환 장치에 있어서, 데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수부를 포함하는 비선형 함수부(F)를 구비하고, 상기 P 함수부는, z1, z2,···, z8의 8개의 4n(n은 1이상의 정수) 비트 데이터를 입력으로 하고, 상기 z1, z2, z3, z4의 4개의 데이터 중에서 적어도 2개 이상의 데이터에 대하여 배타적 논리합 연산을 행하여4n 비트의 결과 U1를 구하는 회로와, 상기 z5, z6, z7, z8의 4개의 데이터 중에서 적어도 2개 이상의 데이터에 대하여 배타적 논리합 연산을 행하여 4n 비트의 결과 U2를 구하는 회로와, 상기 U1와 U2의 배타적 논리합 연산을 행하여 4n 비트의 결과 U3를 구하는 회로와, 상기 U1에 대하여 순회 시프트하는 순회 회로와, 상기 순회 회로의 출력과 상기 U3와의 배타적 논리합 연산을 행하여 4n 비트의 결과 U4를 구하는 회로를 구비하며, 상기 U3, U4를 각각 4개로 분할하여 z1', z2', …, z8'의 8개의 n 비트 데이터로서 출력하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리를 실행하는 데이터 변환 방법에 있어서, 상기 데이터 처리는, 데이터 변환을 행하는 데이터를 제 l 데이터(L)와 제2 데이터(R)로 분할함과 함께, 상기 데이터 처리는, 제1 데이터(L)를 변환하는 데이터 정변환 처리(FL)와, 제2 데이터(R)를 상기 데이터 정변환 처리(FL)의 변환과는 반대의 변환을 행하는 데이터 역변환 처리(FL-1)를 구비한 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리를 실행하는 데이터 변환 방법에 있어서, 상기 데이터 처리는, 데이터를 비선형 변환하는 비선형 변환 처리를 구비하고, 상기 비선형 변환 처리는, 변환할 데이터의 일부분의 데이터를 제1 부분 데이터로서 입력하고, 입력한 데이터의 값을 다른 값으로 변환하여 출력하는 변환 테이블 T를 이용하여 상기 제1 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제1 변환 처리(s1)와, 변환할 데이터의 적어도 다른 일부분의 데이터를 제2 부분 데이터로서 입력하고, 상기 변환 테이블 T를 이용한 변환과 제2 부분용 연산을 이용하여 상기 제2 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제2 변환 처리(s2)를 구비한 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리를 실행하는 데이터 변환 방법에 있어서, 상기 데이터 처리는, 변환할 데이터를 입력으로 하여, 입력된 데이터를 임의의 필드의 원소로 간주하고, 그 부분 필드를 이용한 역원 회로를 이용하여 변환하고, 변환한 데이터를 출력하는 부분 필드 변환 처리와, 상기 부분 필드 변환 처리의 전단 처리와 후단 처리의 적어도 어느 한 쪽에서 변환하는 GF(2n) 상의 데이터를 자연히 대응하는 GF(2)n의 원소로 간주하여, GF (2) 상의 벡터 공간 GF(2)n의 준선형 변환을 행하는 처리를 구비한 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와, 상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리를 실행하는 데이터 변환 방법에 있어서, 상기 데이터 처리는, 각 단마다 확대 키를 입력으로 하여 비선형 변환을 행하는 다단으로 접속된 복수단의 비선형 데이터 변환 처리를 가지며, 상기 키 생성 처리는, 상기 복수단의 비선형 데이터 변환 처리의 각 단에 대하여 공급하는 확대 키를 생성하는 경우, 키 데이터와 상기 키 데이터로부터 생성된 키 데이터에 의존하는 데이터 중의 적어도 어느 하나를 입력으로 하여 사전에 정해진 비트 수 Z1, Z2,···, Zm(여기서, i, j, k는, 1∼m의 어느 하나의 값으로서, Zk-Zj= I×(Zi+1-Zi)(I는 정수, B=Zi+1-Z1))만큼 순회 시프트하여, 이 순회 시프트한 키 데이터로부터 각 단의 비선형 데이터 변환 처리로 공급하는 확대 키를 생성하는 키 시프트 처리를 가짐과 함께, 상기 키 시프트 처리는, 한 번의 동작으로 (Zi+1-Zi) 비트(B 비트)의 순회 시프트를 행하는 순회 시프트 처리와, Zi비트 순회 시프트된 키 데이터에 대하여 상기 순회 시프트 처리를 한 번 동작시켜 (Zi+1-Zi) 비트(B 비트)의 순회 시프트를 실행시킴으로써, 순회 시프트 처리에 의해 Zi+1비트 순회 시프트된 키 데이터를 생성시키고, Zi+1비트 순회 시프트된 키 데이터에 대하여 순회 시프트 처리를 I 회 동작시켜 I×(Zi+1-Zi) 비트 (I× B 비트)의 순회 시프트를 실행시킴으로써, 순회 시프트 처리에 의해 Zi+2비트 순회 시프트된 키 데이터를 생성시키는 제어 처리를 구비하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와, 상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리를 실행하는 데이터 변환 방법에 있어서, 상기 데이터 처리는, 각 단마다 확대 키를 입력으로 하여 비선형 변환을 행하는 다단으로 접속된 복수단의 비선형 데이터 변환 처리를 가지며, 상기 키 생성 처리는, 상기 복수단의 비선형 데이터 변환 처리의 각 단에 대하여 공급하는 확대 키를 생성하는 경우, 임의의 키 데이터를 사전에 정해진 비트 수(B 비트)만큼 순차로 순회 시프트하여, 이 순회 시프트한 키 데이터로부터 각 단의 비선형 데이터 변환 처리에 공급하는 확대 키를 생성하는 키 시프트 처리를 가짐과 함께, 상기 키 시프트 처리는, B 비트만큼 순차로 순회 시프트한 데이터 중에서 일부의 데이터를 무시하여 확대 키를 생성하지 않고, 나머지의 다른 데이터로부터 확대 키를 생성하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와, 상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리를 실행하는 데이터 변환 방법에 있어서, 상기 키 생성 처리는, G 비트의 G 비트 키 데이터를 입력으로 하여 변환하고, G 비트의 제1 G 비트 변환 키 데이터를 출력하는 제1 G 비트 키 변환 처리와, 상기 제1 G 비트 키 변환 처리로부터 출력된 상기 제1 G 비트 변환 키 데이터를 입력으로 하고, 이를 다시 변환하여 G 비트의 제2 G 비트 변환 키 데이터를 출력하는 제2 G 비트 변환 처리를 구비하고, 상기 키 생성부가 G 비트 키 데이터 K를 입력으로 한 경우는, G 비트 키데이터 K를 상기 제1 G 비트 키 변환부에 입력하여 변환하고, 상기 제1 G 비트 키 변환 처리에 의해 출력된 제1 G 비트 변환 키 데이터 K1를 변환된 G 비트 키 데이터로서 출력하고, 상기 키 생성부가 2G 비트 키 데이터 K를 입력으로 한 경우는, 2G 비트 키 데이터 K로부터 G 비트 키 데이터를 생성하여 생성한 G 비트 키 데이터를 상기 제1 G 비트 키 변환부에 입력하여 변환하고 제1 G 비트 변환 키 데이터 K1를 출력하고, 상기 제1 G 비트 변환 키 데이터 K1를 상기 제2 G 비트 변환부에 입력하여 변환하여 제2 G 비트 변환 키 데이터 K2를 출력하고, 상기 제1 G 비트 키 변환 처리에 의해 출력된 상기 제1 G 비트 변환 키 데이터 K1와, 상기 제2 G 비트 변환 처리에 의해 출력된 상기 제2 G 비트 변환 키 데이터 K2를 연결하여, 변환된 2G 비트 키 데이터(K1, K2)로서 출력하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와, 상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리를 실행하는 데이터 변환 방법에 있어서, 데이터 변환을 행하는 데이터와 키 데이터를 논리 연산하는 키 함수 처리와, 데이터 변환을 행하는 데이터를 다른 데이터로 치환 변환하는 S 함수 처리와, 데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수 처리를 갖는 비선형 함수 처리(F)를 구비하고, 상기 비선형 함수 처리(F)는, 상기 키 함수 처리를 상기 S 함수 처리와 상기 P 함수 처리의 사이에서 동작시키는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와, 상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리를 실행하는 데이터 변환 방법에 있어서, 데이터 변환을 행하는 데이터와 키 데이터를 논리 연산하는 키 함수 처리와, 데이터 변환을 행하는 데이터를 다른 데이터로 치환 변환하는 S 함수 처리와, 데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수 처리를 갖는 비선형 함수 처리(F)를 구비하고, 비선형 함수 처리(F)는, 상기 키 함수 처리를 상기 S 함수 처리와 상기 P 함수 처리 모두의 앞과 뒤의 어느 하나에서 동작시키는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비한 데이터 변환 장치에 있어서, 상기 데이터 처리부는, 제1 입력부와, 제2 입력부와, 제1 출력부와, 제2 출력부와, 데이터의 암호화와 데이터의 복호화를 동일한 알고리즘에서 행하는 비선형 변환부와, 상기 제1 입력부에 입력되는 데이터를 변환하는 제 l 입력 데이터 정변환부와, 상기 제2 출력부로부터 출력되는 데이터를 입력으로 하여 상기 제1 입력 데이터 정변환부의 변환과는 반대의 변환을 행하는 제2 출력 데이터 역변환부를 구비한 것을 특징으로 한다.
상기 비선형 변환부는, 상기 제1 입력 데이터를 상기 제1 입력부로부터 입력하고, 제2 입력 데이터를 상기 제2 입력부로부터 입력하며, 상기 제1 입력 데이터와 상기 제2 입력 데이터를 암호화용 키 데이터를 이용하여 비선형 변환하여, 제 l 변환 데이터와 제2 변환 데이터를 생성하고, 상기 제1 변환 데이터를 상기 제1 출력부로부터 출력하며, 상기 제2 변환 데이터를 상기 제2 출력부로부터 출력하고, 상기 제1 변환 데이터를 상기 제2 입력부로부터 입력하며, 상기 제2 변환 데이터를 상기 제1 입력부로부터 입력하고, 상기 제 l 변환 데이터와 상기 제2 변환 데이터를 복호화용 키 데이터를 이용하여 비선형 변환하여, 제1 출력 데이터와 제2 출력 데이터를 생성하고, 상기 제1 출력 데이터를 상기 제2 출력부로부터 출력하며, 상기 제2 출력 데이터를 상기 제1 출력부로부터 출력한 경우에, 상기 제1 입력 데이터와 상기 제2 출력 데이터가 동일하게 되고, 상기 제2 입력 데이터와 상기 제1 출력 데이터가 동일하게 되는 알고리즘을 구비한 것을 특징으로 한다.
상기 데이터 처리부는, 상기 제2 입력부에 입력되는 데이터를 변환하는 제2 입력 데이터 정변환부와, 상기 제1 출력부로부터 출력되는 데이터를 입력으로 하여, 상기 제2 입력 데이터 정변환부의 변환과는 반대의 변환을 행하는 제1 출력 데이터 역변환부를 더 포함하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와, 상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부를 구비한 데이터 변환 장치에 있어서, 상기 데이터 처리부는, 데이터 변환을 행하는 데이터를 비선형 변환하는 비선형 함수부(F)를 구비하며, 상기 키 생성부는, 상기 비선형 함수부(F)에 공급하는 키 데이터를 가공하고,가공한 키 데이터를 상기 데이터 처리부의 상기 비선형 함수부(F) 이외의 부분에 공급하여 데이터와 연산시키는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와, 상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리를 실행하는 데이터 변환 방법에 있어서, 상기 데이터 처리는, 데이터 변환을 행하는 데이터를 비선형 변환하는 비선형 함수 처리(F)를 구비하며, 상기 키 생성 처리는, 상기 비선형 함수 처리(F)에 공급하는 키 데이터를 가공하고, 가공한 키 데이터를 데이터 처리의 비선형 함수 처리(F) 이외의 처리에 공급하여 데이터와 연산시키는 것을 특징으로 한다.
또한, 본 발명은 상기 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체인 것을 특징으로 한다.
또한, 본 발명은 상기 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램인 것을 특징으로 한다.
<실시예l>
도 1은, 본 실시예의 암호화용 데이터 변환 장치(l00)와 복호화용 데이터 변환 장치(400)를 나타내는 도면이다.
암호화용 데이터 변환 장치(100)는 예를 들면, l28 비트의 평문을 입력으로 하여 128 비트의 암호문을 출력하는 암호 장치이다. 복호화용 데이터 변환 장치(400)는 128 비트의 암호문을 입력으로 하여 128 비트의 평문을 출력하는 복호 장치이다. 암호화용 데이터 변환 장치(100)는 암호화부(200)와 키 생성부(300)로 구성되어 있다. 암호화부(200)는 평문을 암호화하는 암호화용 데이터 처리부이다. 키 생성부(300)는 128 비트, l92 비트 또는 256 비트의 키 데이터를 입력으로 하여, 상수 Vi를 이용하여 복수(n개)의 64 비트 또는 l28 비트의 확대 키를 생성하여 암호화부(200)에 공급한다. 복호화용 데이터 변환 장치(400)는 복호화부(500)와 키 생성부(600)를 구비하고 있다. 복호화부(500)는 암호문을 입력으로 하여, 암호문을 복호하는 복호화용 데이터 처리부이다. 키 생성부(600)는 전술한 키 생성부(300)와 동일한 것이거나 그에 상당하는 것이다. 또한, 암호화부(200)와 복호화부(500)는 동일한 것을 이용할 수 있고, 도 1에서는, 암호화부(200)와 복호화부(500)로 분할하여 도시하고 있지만, 하나의 회로 또는 하나의 프로그램으로 겸용할 수 있다. 마찬가지로, 키 생성부(30O)와 키 생성부(600)도 하나의 회로 또는 하나의 프로그램으로 겸용할 수 있다. 즉, 암호화용 데이터 변환 장치(100)와 복호화용 데이터 변환 장치(400) 는 동일한 회로 또는 동일한 프로그램으로 겸용할수 있다.
도 2는, 이하의 도면 및 설명에서 사용하는 기호의 의미를 나타내고 있다.
이하, 도 3 이후의 각 도면에 있어서, 좌측의 데이터를 좌측 데이터 L이라 칭하고, 우측의 데이터를 우측 데이터 R이라 칭한다. 또한, 비선형 데이터 변환부(2l0, 220, 230, 240)로 입력되는 데이터를 입력 데이터라 칭하고, 비선형 데이터 변환부(210, 220, 230, 240)의 내부 데이터를 중간 데이터라 칭하며, 비선형 데이터 변환부(210, 220, 230, 240)로부터 출력되는 데이터를 출력 데이터라 칭한다.
도 3은, 암호화부(200) 또는 복호화부(500)의 일 예를 도시한 도면이다.
도 3은, 6단의 비선형 데이터 변환부(210), 6단의 비선형 데이터 변환부(220) 및 6단의 비선형 데이터 변환부(230)가 종속 접속되어 있는 경우를 나타내고 있다. 6단의 비선형 데이터 변환부(210)와 6단의 비선형 데이터 변환부(220)의 사이에는 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(271)가 마련되어 있다. 또한, 6단의 비선형 데이터 변환부(220)와 6단의 비선형 데이터 변환부(230)의 사이에는 데이터 정변환부(FL)(253)와 데이터 역변환부(FL-1)(273)가 마련되어 있다. 6단의 비선형 데이터 변환부(210) 내에는 6단의 비선형 데이터 변환부가 제공되어 있다. 예를 들면, 하나의 비선형 데이터 변환부(280)는 비선형 함수부 F와 XOR(배타적 논리합) 회로(290)로 구성되어 있다. 이렇게 하여, 도 3에서는, 모두 18단의 비선형 데이터 변환부가 제공되어 있다.
비선형 데이터 변환부(2l0)는, 임의의 2개의 우측 입력 데이터 R0와 좌측 입력 데이터 L0에 대하여, 상기 좌측 입력 데이터 L0를 제1 확대키 K1를 이용하여 제1 비선형 변환하고, 제 1 비선형 변환된 출력 데이터와 상기 우측 입력 데이터 R0와의 배타적 논리합을 제1 좌측 중간 데이터 L1로서 출력하며, 상기 좌측 입력 데이터 L0를 제1 우측 중간 데이터 R1로서 출력하는 제1 비선형 데이터 변환부(280)와, 상기 제1 좌측 중간 데이터 R1을 제2 확대 키 K2를 이용하여 제2 비선형 변환하고, 그 제 2 비선형 변환된 출력 데이터와 상기 제1 우측 중간 데이터 R1와의 배타적 논리합을 제2 좌측 중간 데이터 L2로서 출력하고, 상기 제1 좌측 중간 데이터 L1을 제2 우측 중간 데이터 R2로서 출력하는 제2 비선형 데이터 변환부(281)를 구비하며, 제1 비선형 데이터 변환부(280)로부터 제6 비선형 데이터 변환부(285)를 종속 접속하여, 최종의 우측 중간 데이터 R6와 좌측 중간 데이터 L6을 변환 후의 출력 데이터로 하는 것이다.
도 4는, 도 3의 암호화부(200)에 대하여 데이터 정변환부(FL)(255), 데이터 역변환부(FL-1)(275) 및 6단의 비선형 데이터 변환부(240)를 더 추가하여, 모두 24단의 비선형 데이터 변환부에 의해 변환을 행하는 경우를 나타내고 있다.
도 5는, 데이터 정변환부(FL)(251)를 나타내는 도면이다.
도 5에 있어서는, 데이터 정변환부(FL)(251)의 입력 데이터를 좌측 입력 데이터(51)와 우측 입력 데이터(52)로 나누어, 논리 연산을 행한 뒤, 좌측 출력 데이터(60)와 우측 출력 데이터(61)에 의해 출력 데이터를 작성하고 있는 경우를 나타내고 있다. 좌측 입력 데이터(51)는 AND 회로(54)에 의해 확대 키(53)와의 논리곱이 취해지고, 그 후, 1 비트 순회 좌측 시프트부(55)에서 좌측 방향으로의 1 비트의 순회 시프트(순환 시프트라고도 한다)가 행해진다. 시프트 이후는, XOR회로(56)에 의해 우측 입력 데이터(52)와의 배타적 논리합이 연산된다. XOR 회로(56)의 출력은 우측 출력 데이터(61)로 됨과 동시에, OR 회로(58)에서 확대 키(57)와의 논리합이 취해지고, 그 결과는, 다시 XOR 회로(59)에서 좌측 입력 데이터(5l)와 배타적 논리합 연산되어, 좌측 출력 데이터(60)가 된다.
도 6은, 데이터 역변환부(FL-1)(271)를 나타내는 도면이다.
도 6에 있어서는, 입력 데이터를 좌측 입력 데이터(71)와 우측 입력 데이터(72)로 나누어, 논리 연산을 행한 후, 좌측 출력 데이터(80)와 우측 출력 데이터(81)로서 출력 데이터를 작성하고 있는 경우를 나타내고 있다.
우측 입력 데이터(72)는 OR 회로(74)에 의해 확대 키(73)와의 논리합이 취해진 후, XOR 회로(75)에 의해 좌측 입력 데이터(7l)와의 배타적 논리합이 취해진다. 그 결과, XOR 회로(75)로부터의 출력은 좌측 출력 데이터(80)로 됨과 동시에, AND 회로(77)에 의해 확대 키(76)와의 논리곱이 취해지고, 1 비트 순회 좌측 시프트부(78)에 의해 좌측 방향으로의 1 비트의 순회 좌측 시프트가 행해지며, 그 결과는, 다시, XOR 회로(79)에 의해 우측 입력 데이터(72)와 배타적 논리합이 취해짐으로써 우측 출력 데이터(81)로 된다.
도 5에 도시한 데이터 정변환부(FL)(251)와 도 6에 나타낸 데이터 역변환부(FL-1)(271)는 정역 반대의 연산을 행하는 것이다. 따라서, 동일한 확대 키를 기초로 도 5의 출력 데이터 y를 도 6의 입력 데이터 y로 함으로써, 도 6의 출력 데이터 X로서 도 5의 입력 데이터 X를 얻을 수 있다.
이와 같이, 한 쪽의 출력 데이터를 다른 쪽의 입력 데이터로 함으로써, 한 쪽의 입력 데이터를 다른 쪽의 출력 데이터로서 얻을 수 있는 관계를 정변환과 역변환 관계에 있다고 한다. 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(271)는 이와 같은 정변환과 역변환을 행하는 회로이다.
또, 도 5의 1 비트 순회 좌측 시프트부(55)와 도 6의 1 비트 순회 좌측 시프트부(78)는 모두 좌측 시프트를 행하지만, 이들 모두는 우측 시프트를 행하도록 하여도 무방하다. 또한, 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(271)는 정변환과 역변환을 행하는 것이면, 다른 구성이어도 무방하다. 예를 들면, 순회의 시프트 수를 바꾸어도 무방하다. 또한, 부정(not)을 포함한 AND 회로, 부정을 포함한 OR 회로, 부정을 포함한 XOR 회로를 더 부가하여도 무방하다. 즉, 부정을 포함한 AND 회로, 부정을 포함한 OR 회로, 부정을 포함한 XOR 회로를 각각 andn, orn, xorn으로 표시한 경우, 이하와 같이 정의된다.
x andn y : (not x) and y
x orn y:(not x) or y
x xorn y : (not x) and y
최근의 몇개의 CPU에서는, 부정(not)도 포함한 논리곱(and), 논리합(or), 배타적 논리합(xor) 명령을 갖추고 있는 것이 있다. 이들 명령은, 논리곱, 논리합, 배타적 논리합 명령과 동일한 코스트로 실행 가능하다.
도 7은, 종래의 암호화부(20l)와 종래의 복호화부(501)를 나타내고 있다.
종래의 암호화부(201)에서는, 2개의 데이터 정변환부(FL)가 제공되어 있다. 이 때문에, 그 반대의 연산을 행하기 위해서는, 복호화부에 2개의 데이터 역변환부(FL-1)를 마련되어야만 한다. 따라서, 암호화부와 복호화부의 구성이 일반적으로는 다르게 되어, 암호화부와 복호화부를 동일한 회로로 구현할 수 없다.
한편, 도 8에 도시한 바와 같이, 본 실시예에서는, 암호화부(200)에 대하여, 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(271)를 서로 이웃되게 배치하고 있기 때문에, 복호화부(500)에 있어서도 완전히 동일한 구성으로 복호화를 행할 수 있다. 예를 들면, 우측 데이터 R를 데이터 정변환부(FL)(251)에서 변환하여 좌측 데이터 L'를 얻고, 좌측 데이터 L을 데이터 역변환부(FL-1)(271)에서 변환하여 우측 데이터 R'를 얻은 경우, 좌측 데이터 L'를 데이터 역변환부(FL-1)(271)에 입력시킴으로써 우측 데이터 R를 얻을 수 있고, 우측 데이터 R'를 데이터 정변환부(FL)(251)에 입력시킴으로써 좌측 데이터 L을 얻을 수 있다.
이렇게 하여, 암호화부(200)와 복호화부(500)는 완전히 동일한 구성으로 실현할 수 있어, 암호화부(200)와 복호화부(500)를 겸용하여 쓸 수 있다.
도 9는, 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(271)를 비선형 데이터 변환부(280)를 중심으로 점대칭되는 위치에 마련한 경우를 나타내고 있다.
이와 같이, 비선형 데이터 변환부(280)를 중심으로 하여 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(271)를 점대칭되는 위치에 마련한 경우에, 동일한 구성으로 암호화와 복호화를 행할 수 있다.
도 10은, 점대칭 위치에 배치된 데이터 정변환부(FL)와 데이터 역변환부(FL-1)와의 대응을 나타내고 있다.
도 10에 도시한 바와 같이, 도 3에 있어서는 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(273)가 6단의 비선형 데이터 변환부(220)를 중심으로 한 점대칭 위치에 배치되어 있는 것을 나타내고 있다.
또한, 도 3, 도 4, 도 8 및 도 9에 있어서, 데이터 정변환부(FL)와 데이터 역변환부(FL-1)의 위치는 반대이어도 무방하다. 또한, 도 3, 도 4, 도 8 및 도 9에 있어서, 우측 데이터 R와 좌측 데이터 L은 반대이어도 무방하다.
도 36은, 6단의 비선형 데이터 변환부(2l0), 6단의 비선형 데이터 변환부(220) 및 6단의 비선형 데이터 변환부(230)를 이용하여 암호화부(200)를 구성한 경우를 나타내고 있다.
6단의 비선형 데이터 변환부(2l0), 6단의 비선형 데이터 변환부(220) 및 6단의 비선형 데이터 변환부(230)는 암호화 및 복호화의 어느 것에도 이용할 수 있는 회로이다.
여기서, 정역 데이터 변환부(211)는 6단의 비선형 데이터 변환부(21O), 데이터 정변환부(FL)(25O) 및 데이터 역변환부(FL-1)(27l)로 구성되어 있다. 여기서, 정역 데이터 변환부란 암호화 및 복호화의 어느 것에도 이용할 수 있는 회로를 의미한다. 즉, 정역 데이터 변환부는, 한 쪽의 출력 데이터를 다른 쪽의 입력 데이터로 함으로써, 한 쪽의 입력 데이터를 다른 쪽의 출력 데이터로서 얻을 수 있는 정변환과 역변환을 행하는 하나의 회로이다.
또한, 정역 데이터 변환부(221)는 6단의 비선형 데이터 변환부(220), 데이터 정변환부(FL)(251) 및 데이터 역변환부(FL-1)(273)로 구성되어 있다.
또한, 정역 데이터 변환부(23l)는 6단의 비선형 데이터 변환부(230), 데이터 정변환부(FL)(253) 및 데이터 역변환부(FL-1)(275)로 구성되어 있다.
이들 정역 데이터 변환부(211), 정역 데이터 변환부(221) 및 정역 데이터 변환부(231)를 직렬로 접속하여 암호화부(200)가 구성되어 있다. 그리고, 이 암호화부(200)는 복호화부(500)로서도 이용할 수 있다.
또한, 6단의 비선형 데이터 변환부(210), 6단의 비선형 데이터 변환부(220),데이터 정변환부(FL)(251) 및 데이터 역변환부(FL-1)(271)를 비선형 데이터 변환부(l210)라고 간주하면, 비선형 데이터 변환부(1210)는 암호화와 복호화의 어느 것에도 사용할 수 있는 회로이다. 여기서, 비선형 데이터 변환부(1210), 데이터 정변환부(FL)(250) 및 데이터 역변환부(FL-1)(273)에 의해 정역 데이터 변환부(1211)를 구성하고 있다.
또한, 6단의 비선형 데이터 변환부(220), 6단의 비선형 데이터 변환부(230), 데이터 정변환부(FL)(253) 및 데이터 역변환부(FL-1)(273)를 비선형 데이터 변환부(1220)라고 간주하면, 비선형 데이터 변환부(1220), 데이터 정변환부(FL)(251) 및 데이터 역변환부(FL-1)(275)에 의해 정역 데이터 변환부(l221)를 구성하고 있다.
정역 데이터 변환부(1211)와 정역 데이터 변환부(1221)는 복호화부(500)에도 이용할 수 있다.
또한, 6단의 비선형 데이터 변환부(210)로부터 6단의 비선형 데이터 변환부(230)까지를 비선형 데이터 변환부(22l0)라고 간주하면, 비선형 데이터 변환부(2210)는 암호화와 복호화의 어느 것에도 사용할 수 있는 회로이다.
여기서, 비선형 데이터 변환부(2210), 데이터 정변환부(FL)(25O) 및 데이터 역변환부(FL-1)(275)에 의해 정역 데이터 변환부(2211)를 구성하고 있다.
정역 데이터 변환부(2211)는 복호화부(500)에도 이용할 수 있다.
이상과 같이, 암호화부(200) 또는 복호화부(500)는 정역 데이터 변환부를 복수개 종속 접속하므로써 구성할 수 있다.
또한, 암호화부(200) 또는 복호화부(500)는 정역 데이터 변환부 내에 정역 데이터 변환부를 포함시킴으로써, 정역 데이터 변환부를 계층화하여 구성할 수 있다.
도 37은, 6단의 비선형 데이터 변환부(210)를 구비한 암호화부(200)와 복호화부(500)가 동일한 구성으로 되는 예를 나타내고 있다.
도 37의 6단의 비선형 데이터 변환부(210)는 도 3 및 도 4에 나타낸 바와 같이, 짝수단의 비선형 데이터 변환부(280)를 포함하고 있다. 데이터 A는, 제1 입력 데이터 정변환부(256)에 의해 변환되어 데이터 A'로 되어, 제1 입력부(261)에 입력되며, 제1 입력부(261)로부터 입력된 데이터 A'는 제 l 출력부(263)로부터 데이터 A1'으로서 출력된다. 또한, 제2 입력부(262)로부터 입력된 데이터 B는 제2 출력부(264)로부터 데이터 B1로서 출력된다. 제2 출력부(264)로부터 출력된 데이터 B1은 제2 출력 데이터 역변환부(279)에 의해 변환되어 데이터 B1' 로서 출력된다.
암호화부(200)의 제1 출력부(263)로부터 출력된 데이터 A1'은 복호화부(500)의 제2 입력부(262)에 데이터 A1'로서 입력된다. 암호화부(200)의 제2 출력 데이터 역변환부(279)로부터 출력된 데이터 B1'은 복호화부(500)의 제1 입력 데이터 정변환부(256)에 데이터 B1'로서 입력되어 데이터 B1로서 출력된다.
비선형 데이터 변환부(21O)는 데이터 B1를 입력으로 하여 데이터 B를 출력한다. 또한, 비선형 데이터 변환부(210)는 데이터 A1'를 입력으로 하여 데이터 A'를 출력한다. 제2 출력 데이터 역변환부(279)는 데이터 A'를 입력으로 하여 데이터 A를 출력한다.
도 38에서는, 홀수단의 비선형 데이터 변환부(219)가 홀수단의 비선형 데이터 변환부(280)를 포함하고 있다. 따라서, 제 l 입력부(261)로부터 입력된 데이터 A'는 제2 출력부(264)로부터 데이터 A1'로서 출력되고, 제2 출력 데이터 역변환부(279)에 의해 변환되어 데이터 A1"로서 출력된다. 또한, 제2 입력부(262)로부터 입력된 데이터 B는 제1 출력부(263)로부터 데이터 B1로서 출력된다.
암호화부(200)의 제1 출력부(263)로부터 출력된 데이터 B1은 복호화부(500)의 제2 입력부(262)에 데이터 B1로서 입력된다. 암호화부(200)의 제2 출력 데이터 역변환부(279)로부터 출력된 데이터 A1"는 복호화부(500)의 데이터 A1"로서 입력되어, 제1 입력 데이터 정변환부(256)에 입력된다.
도 37 및 도 38의 경우는 모두 암호화부(200)와 복호화부(500)가 동일한 구성으로, 암호화 및 복호화가 가능하다.
도 39는, 제2 입력부(262)에 제2 입력 데이터 정변환부(257)를 배치하고, 제1 출력부(263)에 제1 출력 데이터 역변환부(278)를 배치한 경우를 나타내고 있다.
도 40은, 제1 입력부(261)에 제1 입력 데이터 역변환부(276)를 배치하고, 제2 출력부(264)에 제2 출력 데이터 정변환부(259)를 배치한 경우를 나타내고 있다.
도 41은, 좌측의 입출력부(261, 263)에 데이터 정변환부(256,258)를 배치하고, 우측의 입출력부(262, 264)에 데이터 역변환부(277, 279)를 배치한 경우를 나타내고 있다.
도 42는 도 39 및 도 40을 병합한 경우를 나타내고 있다.
도시하지 않았으나, 도 37과 도 39를 병합하여도 무방하다. 또한, 도 38과 도 39를 병합하여도 무방하다. 도시하지 않았으나, 도 37 및도 39에서 도 42의 6단(짝수단)의 비선형 데이터 변환부(210)를 홀수단의 비선형 데이터 변환부(219)로 하여도 무방하다. 도 39 내지 도 42의 경우도, 암호화부(200)와 복호화부(500)가 동일한 구성으로 실현할 수 있다.
<실시예 2>
도 11은 비선형 데이터 변환부(280)의 비선형 함수부 F의 구성도이다.
비선형 함수부 F는 F함수 입력 데이터(l0)를 입력으로 하여, 비선형 변환을 행하여 F 함수 출력 데이터(40)을 출력한다. 64 비트의 F 함수 입력 데이터(10)는 8개의 데이터로 나누어져, 8 비트의 데이터로서 처리된다. 8 비트의 각 데이터는 키 함수부(25)의 8개의 XOR 회로(12)에 입력되어 확대 키(11)와의 배타적 논리합이 취해지고, S 함수부(20)에 의해, 치환을 이용한 비선형 변환이 행해진다. 그 후, P 함수부(30)에 있어서, 8 비트의 데이터끼리 도 11에 도시한 바와 같은 16개의XOR 회로(815)에 의해 연산이 행하여져, 64 비트의 F 함수 출력 데이터(40)가 출력된다. S 함수부(20)에는 4개의 S 박스 제1 변환부(13)와 4개의 S 박스 제2 변환부(14)가 제공되어 있다.
도 12는, S 박스 제1 변환부(13)와 S 박스 제2 변환부(14)의 실현예를 나타내는 도면이다.
S 박스 제1 변환부(13)의 내부에는 상기 변환 테이블 T가 제공되어 있다. 변환 테이블 T는 0∼255의 값에 대하여 임의로(랜덤하게) 대응시킨 0∼255의 값을 사전에 기억해 둔 것으로, 0∼255의 값을 입력으로 하여, 각 값에 대응한 값(0∼255의 값)을 출력하는 테이블이다. 예를 들면, 1이 입력된 경우에는, 상기 변환 테이블 T로부터 7이 출력된다. 변환 테이블 T는 전단사(bijective mapping) 여부, 최대 차분 확률이 충분히 작은가 등의 안전성이 고려된 비선형 변환을 행하는 것이다.
S 박스 제2 변환부(14)는 S 박스 제1 변환부(13)를 포함함과 함께, 1 비트 순회 좌측 시프트부(22)(도면에서 「<<< 1」의 「<<< 」는 순회 좌측 시프트를 나타내며, 「1」은 1비트를 나타낸다)를 포함하고 있다. l 비트 순회 좌측 시프트부(22)는 S 박스 제1 변환부(13)의 출력에 대하여 1 비트의 순회 좌측 시프트를 행한다. 예를 들면, 1이 입력된 경우에는, S 박스 제1 변환부(l3)로부터 7이 출력되고, 1 비트 순회 좌측 시프트부(22)로부터 14가 출력된다.
S 박스 제1 변환부(13)와 S 박스 제2 변환부(14)를 도 12와 같이 구성하면, 변환 테이블 T를 2종류나 구비하지 않아도, 2종류의 변환 테이블 T를 마련한 경우와 동일한 효과를 얻을 수 있다. 변환 테이블 T를 l개밖에 구비하지 않기 때문에, 변환 테이블 T를 기억하는 메모리 용량을 적게 하여, 회로 전체를 작게 할 수 있다.
또한, 도 27에 도시한 바와 같이, 1 비트 순회 좌측 시프트부(22) 대신에, 혹은, 1 비트 순회 좌측 시프트부(22) 외에 1 비트 순회 우측 시프트부(도 27의 S 박스 제3 변환부(l5)의 「>>> 1」)를 제공함으로써, 또다른 변환 테이블 T를 제공한 경우와 동일한 효과를 얻을 수 있다. 또한, 입력된 데이터 y에 대하여 1 비트 순회 좌측 시프트부(도 27의 S 박스 제4 변환부(16)의 「<<<1」)를 제공하여, 입력된 데이터 y를 먼저 시프트하고 나서 변환 테이블 T에 의해 변환하여도 무방하다. 도 27에 있어서는, s(y), s(y) <<<1, s(y) >>>1, s(y<<<1)의 경우를 나타내었으나, s(y>>> 1)이어도 무방하며, s(y<<<l) <<<1, s(y<<<l) >>>1, s(y>>>1)<<<1, s(y>>> 1)>>>1의 경우이어도 무방하다. 시프트 량을 1 비트로 함으로써, 예를 들면, 1 비트 시프트 명령만을 갖는 CPU 등에 있어서는, 3 비트나 5 비트 시프트하는 것보다, 고속 처리를 행할 수 있는 경우가 있다. 또한, 이러한 시프트 처리를 1 비트 시프트밖에 할 수 없는 하드웨어를 이용하여 행할 경우에도, 마찬가지로, 고속 처리를 적용할 수 있는 경우가 있다. 또한, l 비트 시프트가 아닌, 2 비트, 3 비트 등의 임의 비트의 시프트이어도 무방하고, 임의의 비트의 시프트를 행함으로써, 또는, 상이한 종류의 테이블을 부가한 것과 동일한 효과를 얻을 수 있는 경우가 있다.
도 28은, 도 27에 도시한 4개의 S 박스 제1∼제4 변환부(13,14,15,16)를 이용한 S 함수부(20)를 나타낸 도면이다.
또한, P 함수부(30)의 다른 구성을 도 31에 나타낸다.
8 비트의 입력 데이터 y1, y2, y3, y4로부터 각각 S1, S2, S3, S4를 참조하여 32 비트의 데이터 Z1, Z2, Z3, Z4를 구하고, 이들의 배타적 논리합을 회로(913)에서 구하며, 또한, 8 비트의 입력 데이터 y5, y6, y7, y8로부터 각각 S2, S3, S4, S1 를 참조하여 32 비트 데이터 Z5, Z6, Z7, Z8를 구하고, 이들의 배타적 논리합을 회로(916)에서 구하여, 이들의 배타적 논리합 연산 결과 U2와 상기 배타적 논리합 연산 결과 U1와의 배타적 논리합이 회로(917)에서 취해져 z1', z2', z3', z4' 로서 출력되고, 또한, 회로(913)로부터의 배타적 논리합 연산 결과 U1에 대하여 좌측으로 1 바이트 순회 시프트(도 31에서는, 「<<<1」는 1 비트가 아니라, 1 바이트의 순회 시프트를 나타낸다)가 회로(918)에서 행해져, 회로(919)에 의해 회로(917)의 출력과의 배타적 논리합 연산이 행해져 z5', z6', z7', z8'가 얻어진다.
여기서, 도 33의 (a)∼(d)에 도시한 바와 같이, S1은 S 박스 제1 변환부(l3)를, S2는 S 박스 제2 변환부(14)를, S3은 S 박스 제3 변환부(15)를, S4는 S 박스 제4 변환부(16)를 이용하여 구성되어 있으며, 각각의 변환부로부터의 8 비트 출력 데이터를 4개 카피하여 32 비트 데이터로 하고, 또, 그 중 3개의 데이터(24 비트 만큼)만을 출력하도록, 마스크를 적용하여 32비트 데이터를 출력한다.
또한, 상기 회로(918)에서의 1 바이트의 순회 시프트는, S 박스가 처리하는 비트 길이(8 비트= 1 바이트)단위로 시프트하는 것이다.
도 32는 도 31과 등가인 구성이지만, 실장 방법이 상이한 P 함수부(3O)를 나타내고 있다.
8 비트의 입력 데이터 y1, y2, y3, y4로부터 각각 S5, S6, S7, S8를 각각 참조하여 32 비트의 데이터 Z1, Z2, Z3, Z4가 출력되고, 이들은 회로(933)에 의해 배타적 논리합 연산이 행해져, 그 연산 결과 A가 회로(933)로부터 출력된다. 또한, 8비트의 입력 데이터 y5, y6, y7, y8로부터 각각 S9, SA, SB, SC를 참조하여 32 비트의 데이터 Z5, Z6, Z7, Z8가 출력되고, 이들이 회로(936)에 의해 배타적 논리합 연산이 행하여져, 그 연산 결과 B가 회로(936)로부터 출력된다. 연산 결과 B는, 회로(937)에 의해 우측으로 1 바이트 순회 시프트(도 32에서는, 도 31과 동일하게, 1 비트 단위가 아니라, S 박스가 처리하는 비트 길이 단위(1 바이트 단위)의 시프트를 한다)됨과 함께, 회로(938)에서 연산 결과 A와 배타적 논리합 연산된다. 이 연산 결과 C는, 회로(939)에 의해 위(좌측)로 1 바이트 순회됨과 함께, 회로(937)의 출력과의 배타적 논리합 연산이 회로(940)에서 행해진다. 그 연산 결과 D는, 회로(94l)에 의해 위(좌측)으로 2바이트 순회됨과 함께, 회로(939)의 출력과 배타적 논리합 연산이 회로(942)에서 행해진다. 그 연산 결과 E는, 회로(943)에 의해 (우측)으로 1바이트 순회됨과 함께, 회로(941)의 출력과 배타적 논리합 연산이 회로(944)에서 행해진다. 회로(944)의 출력 F가 z1', z2', z3', z4' 로서, 회로(943)의 출력이 z5', z6', z7', z8'로서 출력된다.
여기서, S5, SC는 S 박스 제1 변환부(13)와 논리 시프트를, S6, S9는 S 박스 제2 변환부(14)와 논리 시프트를, S7, SA는 S박스 제3 변환부(15)와 논리 시프트를, S8, SB는 S 박스 제4 변환부(16)와 논리 시프트를 이용하여 구성되어 있다. 논리 시프트는, 각 변환부로부터의 8 비트의 출력 데이터를 32 비트의 출력 데이터 내의 소정의 위치로 출력하기 위해서 이용되고, S5, SA에서는 0, S6, SB에서는 1바이트, S7, SC에서는 2바이트, S8, S9에서는 3 바이트 좌측 시프트하도록 설정되어 있다. 즉, 변환부에 있어서의 8 비트의 출력을 z라고 하면, 32 비트의 출력은, S5, SA에서는[0, 0, 0, z](0은 8개의 각 비트가 0인 것을 나타낸다), S6, SB에서는[0, 0, z, 0], S7, SC에서는 [0, z, 0, 0], S8, S9에서는 [z, 0, 0, 0]이 된다.
또, 실장 측면에서는, 직접 소정의 출력을 발생하도록 계산된 8 비트 입력, 32 비트 출력의 치환표를 준비하여도 무방하다.
도 31, 도 32의 경우는, 도 26에 도시한 종래의 E2 암호에서 사용되고 있던 치환 처리보다도 고속이고, 또한, 유연한 실장이 가능해지는 장치를 제공할 수 있다.
도 11에 있어서, S 함수부(20)에 있는 S 박스를 모두 상이한 종류의 S 박스로 개별로 구성한 경우, 8개의 변환 테이블 T가 필요해지는 것에 대하여, 도 12와 같은 구성으로 함으로써, 변환 테이블 T을 기억하는 전체의 기억 용량을 적어도 1/2로 할 수 있다.
또한, 도 12에 도시한 S 박스 제1 변환부(13), S 박스 제2 변환부(14)에 대하여, 8개의 8 비트 데이터를 시분할로 입력시킴으로써, 종래의 개별적인 8개의 S 박스를 도 12에 도시한 S 박스 제1 변환부(13)와 S 박스 제2 변환부(14)만으로 대체할 수 있다.
도 13은, S 함수부(20)의 S 박스의 다른 예를 나타내는 도면이다.
구체적인 구성에 관해서는, 마쓰이(松井), 사쿠라이(櫻井)「갈로아 필드 제산 회로 및 승제산 공용 회로」(일본국 특허등록번호 제2641285호[H9. 5. 2])에 상세히 기재되어 있다.
S 박스 변환부(21)에는, 8 비트의 데이터가 입력되어, 8 비트의 데이터가 출력된다. S 박스 변환부(21)는, N(여기서는, N= 8) 비트 선형 변환부(17)와 부분 필드 변환부(18)와 N 비트 선형 변환부(19)로 구성되어 있다. N 비트 선형 변환부(17)는 8 비트의 연산을 행한다. 부분 필드 변환부(18)는 갈로아 필드(GF)(24)의 원소인 4 비트만의 연산을 행한다. N 비트 선형 변환부(19)는 8 비트의 연산을 한다. N 비트선형 변환부(17)의 선형 변환부(85)는 도 14에 도시한 바와 같은 선형 변환을 행하는 회로이다. 또한, 선형 변환부(87)는 도 15에 도시한 바와 같은 선형 변환을 행하는 회로이다.
또, 선형 변환부(85) 대신에, 준선형 변환(또, 선형 변환은 준선형 변환의 일 예로 고려될 수 있다)을 행하는 회로를 이용하여도 무방하다. 혹은, 선형 변환부(87) 대신에, 준선형 변환을 행하는 회로를 이용하여도 무방하다. 선형 변환부(85)는 8 비트의 데이터(X)에 변환을 행하여 얻어진 8 비트의 데이터(X')를갈로아 필드 GF(28)의 원소로 간주하고, X'로부터 상위 4 비트와 하위 4비트의 데이터(X1와 X0)를 각각 부분 필드 GF (24)의 원소로 간주하여, 부분 필드 변환부(18)로 출력한다. 여기서, 예를 들면, GF(28)의 원소 β을 기약 다항식 X8+ X6+ X5+ X3+ 1= O의 원소로 하고, α=β238이라고 하면, 부분 필드 GF(24)의 베이스는 [l, α, α2, α3]로 표현되며, 이것을 이용하여 GF(24)의 원소 X0, X1로 나타내면, X'= X0+βX1이라는 관계가 된다(상세한 것은, 「갈로아 체 제산 회로 및 승제산 공용 회로」(일본국 특허등록번호 제264l285호[H9.5.2] 참조). 부분 필드 변환부(18)는 4 비트의 연산을 행하는 연산기만으로 구성되어 있다.
여기서, 「부분 필드」를 구하는 방법으로서는, GF(2n)에 대하여 n=2m이 되는 부분 필드GF(2m)가 고려되고, 본 예서는, n=8, m= 4가 된다.
부분 필드 변환부(18)는, 「갈로아 체 제산 회로 및 승제산 공용 회로」(일본국 특허등록번호 제2641285호[H9.5.2]에서 나타낸 n=8, m= 4일 때의 회로를 기초로 구성되는 부분 필드를 이용한 역원 회로이다. 이 역원(inverse element) 회로의 연산 결과로서, 각각 GF(24)의 원소로 간주할 수 있는 상위 4 비트의 데이터와 하위 4 비트의 데이터(Y1와 Y0)가 GF(28) 상의 원소로 간주할 수 있는 8 비트의 데이터 Y로서 선형 변환부(87)에 출력된다. 여기서, Y= Y0+βY1이다. 이상으로부터, 이 역원 회로는 Y= Y0+βY1= 1/ (X0+βX1)을 연산하는 회로이다. 또한, 이 역원 회로의「유한 필드」의 원소 표시 방법(베이스를 구하는 방법)에는「다항식 베이스」나「정규 베이스」와 같이, 「베이스」를 구하는 방법으로 몇가지가 고려될 수 있다.
도 13의 S 박스 변환부(21)에 있어서 특징이 되는 점은, 비선형 변환을 행하기 위해서 입력된 데이터의 비트폭(8 비트)의 절반인 비트폭(4 비트)으로 연산을 행하는 점이다. 즉, 역원 회로에서는, 4비트의 연산만이 행해지고 있는 점이 특징이다.
이와 같이, 4 비트만 연산을 행함으로써 연산 속도는 늦어질 수 있지만, 회로 전체의 규모는 8 비트의 연산 소자를 이용하는 것보다도 상당히 작게할 수 있다는 이점이 있다.
그리고, S 박스 변환부(21)의 다른 특징은, 전술한 부분 필드 변환부(18)의 양측에 N= 8 비트의 N 비트 선형 변환부(17)와 N비트 선형 변환부(19)를 제공하고 있는 점이다. S 박스 변환부(21)를 부분 필드 변환부(18)를 이용하여 실현하면, 랜덤한 값을 기억한 변환 테이블 T을 이용하는 경우에 비하여, 회로 전체의 규모가 작아지거나, 구조가 간단해 진다는 이점이 있지만, 반대로, 안전성이 저하될 가능성이 있다. 그래서,부분 필드 변환부(18)의 양측에서 선형 변환 또는 준선형 변환을 행하여, 부분 필드 변환부(18)를 채용함에 따른 안전성이 저하를 제거하도록 하고 있다.
또, 도 13에 있어서, 부분 필드 변환부(18)의 양측에서 선형 변환을 행하고 있지만, 한 쪽에서만 행하여도 상관없다. 혹은, 한 쪽에서 선형 변환하고, 다른 쪽에서 준선형 변환을 행하여도 상관없다.
도 29는, 도 11에 나타낸 키 함수부(25)를, 즉 S 함수부(2O)와 P 함수부(3O) 의 앞에 있는 키 함수부(25)를, S 함수부(2O)와 P 함수부(3O)의 뒤에 배치한 것이다.
또한, 도 3O는 키 함수부(25)를 S 함수부(20)와 P 함수부(30)의 사이에 배치한 것이다.
도 29 또는 도 30과 같은 구성으로 함으로써, 도 11에 도시한 구성에 비하여, 실장 측면에서 고속으로 되는 경우가 많다는 효과를 얻을 수 있다. 또한, 확대 키의 생성을 보정함으로써, 도 29 또는 도 30의 구성으로, 동일한 입력으로부터 도 11의 구성과 동일한 출력을 얻을 수 있다. 도 26에 도시한 종래의 F 함수에 있어서는, 2개의 S 함수가 있고, 각각 처음에 확대 키와의 연산을 행하고, 다음에, S 함수에 의한 연산을 행하고 있다. 그것에 대하여, 도 29에 도시하는 경우는, 한 개의 키 함수부(25)를 F 함수의 최후에 배치하고 있다. 또한, 도 30의 경우는, 하나의 키 함수부(25)를 S 함수부(20)와 P 함수부(30)의 사이에 배치하고 있다.
도 43은, 도 3에 도시한 암호화부(200) 또는 복호화부(50O)에 대하여 도 28에 도시한 비선형 함수부 F를 이용한 경우의 구성도이다.
좌측 데이터가 F 함수 입력 데이터(10)로서 비선형 함수부 F에 입력되어, F함수 출력 데이터(40)가 출력된다. F 함수 출력 데이터(40)는 우측 데이터와 배타적 논리합 연산이 행하여져, 그 결과가 다음 단의 좌측 데이터로 된다. 또한, 좌측 데이터는 F 함수 입력 데이터(10)로서 비선형 함수부 F에 입력됨과 함께, 다음 단의 우측 데이터로서 이용된다. 도 43에 도시하는 구성에서는, 비선형 함수부 F 내에서 키 함수부(25)와 S 함수부(20)와 P 함수부(30)와의 연산이 행해지기 때문에, 비선형 함수부 F 에서의 연산의 부하가 커진다. 이 비선형 함수부 F 에서의 연산의 부하를 분산시켜 실행함으로써, 처리의 고속화를 도모하는 예에 대하여, 이하에 도면을 이용하여 설명한다.
도 44는, 도 43에 도시한 비선형 함수부 F 내에서 키 함수부(25)를 삭제한 비선형 함수부 F'를 이용하는 경우를 나타내고 있다. 확대 키 K1은 XOR 회로(891)에 있어서 좌측 데이터 L0와 배타적 논리합 연산이 행해진다. 또한, 확대키 k2는 XOR 회로(297)에 있어서 우측 데이터 R0와 배타적 논리합 연산이 행하여진다. 좌측 데이터는 F 함수 입력 데이터(10)로서 비선형 함수부 F'에 입력되어, S 함수부(20)와 P 함수부(30)에 의해 변환된다. XOR 회로(297)의 출력과 F 함수 출력 데이터(40)는 XOR 회로(290)에 있어서 배타적 논리합 연산이 행해져, 좌측 데이터 L1을 출력한다.
한편, 키 생성부(300, 600)는 확대 키 K1과 k3와의 배타적 논리합 연산을 행하여, 가공된 확대 키 k1+ k3를 출력한다. XOR 회로(891)의 출력 R1과 확대키 k1+k3가 XOR 회로(298)에 있어서 배타적 논리합 연산되어, 우측 데이터를 출력한다. 키 생성부(300,6OO)는 확대 키를 가공하여, k1+ k3, k2+ k4, k3+ k5,…, k16+ k18를 생성하여 출력한다. 키 생성부(300, 600)는 가공된 확대 키를 비선형 함수 처리(F) 이외의 처리에 공급하여 데이터와 연산시킨다. 그 결과, 좌측 데이터 L18과 우측 데이터 R18는 도 43의 경우와 동일한 것이 얻어진다.
가공된 확대 키를 비선형 함수 처리(F) 이외의 처리에 공급하여 데이터와 연산시킴으로써, 비선형 함수부 F'에 있어서, S 함수부(20)와 P 함수부(30)의 계산을 하고 있는 동안에, 비선형 함수부 F'의 외부, 즉 XOR 회로(297, 298)에서 키 데이터와의 계산을 할 수 있어, 키 함수부(25)의 계산이 비선형 함수부 F로부터 없어지게 되므로, 비선형 함수부 F의 부하가 분산되어 고속 실장이 가능해진다.
도 45는, 도 44의 구성에 대하여 다시 백색화(whitening) 확대 키 Kw1의 연산을 확대 키와 함께 행하는 경우를 나타내고 있다. 도 45에 있어서는, 키 생성부가 백색화 확대 키의 일부 kw1high와 제1 확대 키 K1와의 배타적 논리합 연산을 사전에 행하여(즉, 키 생성부가 확대 키를 가공하여), XOR 회로(891)에 공급하고 있는 경우를 나타내고 있다.
또한, 키 생성부가 백색화 확대 키의 일부 kw1low와 제2 확대키 K2와의 배타적 논리합 연산을 사전에 행하여(즉, 키 생성부가 확대 키를 가공하여), XOR 회로(297)에 공급하고 있는 경우를 나타내고 있다.
이렇게 하여, 도 44에 도시한 XOR 회로(293)의 연산을 없앨 수 있다. 또한, 도 45의 경우는, 키 생성부가 백색화 확대 키 kw2의 일부 kw2low와 확대 키 k17와의 배타적 논리합 연산을 행하여(즉, 키 생성부가 확대 키를 가공하여), XOR 회로(299)에 공급하고 있다. 또한, 키 생성부가 백색화 확대 키의 다른 부분 kw2high와 확대 키 k18와의 배타적 논리합 연산을 행하여(즉, 키 생성부가 확대 키를 가공하여), XOR 회로(892)에 공급하고 있다.
이렇게 하여, 도 44에 도시한 XOR 회로(296)의 연산을 없애고 있다.
도 46은, 비선형 함수부 F가 도 29에 도시한 바와 같은 구성을 취하는 경우, 비선형 함수부 F에서 키 함수부(25)를 삭제하고, 그 대신에 키 생성부가 확대 키 k를 XOR 회로(298)에 공급하는 경우를 나타내고 있다.
또한, 도 47은, 비선형 함수부 F가 도 30에 도시한 바와 같은 구성을 취하는 경우, 비선형 함수부 F로부터 키 함수부(25)를 삭제하고, 그 대신에 키 생성부가 비선형 변환된 확대 키 k'= P(k)를 XOR 회로(298)에 공급하는 경우를 나타내고 있다. 도 47의 경우는, P 함수 처리에 의한 연산과 동일한 연산을 키 데이터에 대하여 실시하여 비선형 변환된 키 데이터를 생성하고, 비선형 변환된 키 데이터를 상기 데이터 처리가 이용하는 키 데이터로서, 데이터 처리의 비선형 함수 처리(F) 이외의 처리에 공급하여 데이터와 연산시키는 경우를 나타내고 있다. 도 46 및 도 47의 어느 경우나, 키 함수부(25)를 비선형 함수부 F에서 삭제하고 있기 때문에, 비선형 함수부 F의 연산 부하가 감소하여, 비선형 함수부 F의 연산과 평행하게 비선형 함수부 F의 밖에 있는 XOR 회로(298)의 연산을 행할 수 있기 때문에, 고속 처리를 행할 수 있게 된다.
<실시예 3>
도 16은 도 1에 도시한 키 생성부(300)(또는 키 생성부(600))의 구성도이다.
키 생성부(300)는 비트 길이 변환부(310), 제 l G 비트 키 변환부(320), 제2 G 비트 키 변환부(330) 및 키 시프트부(340)로 구성되어 있다. 키 생성부(300)에는 128 비트 또는 192 비트 또는 256 비트의 키 데이터가 입력되고, 128 비트의 키 데이터 K1와 128 비트의 키 데이터 K2가 생성되어, 복수의 64 비트의 확대 키가 출력된다. 비트 길이 변환부(310)에 있어서, 비트 수가 다른 키 데이터가 입력되더라도, 출력되는 키 데이터의 비트 길이가 일정해지도록 변환하고 있다. 즉, 비트 길이 변환부(310)는, 내부에서 상위 128 비트의 키 데이터 SKhigh와 하위 l28 비트의 키 데이터 SKlow를 생성하고, 상위 128 비트의 키 데이터 SKhigh를 제 l G 비트 키 변환부(320)와 키 시프트부(340)에 출력한다. 또한, 하위 l28 비트의 키 데이터 SKlow를 제2 G 비트 키 변환부(330)와 키 시프트부(340)에 출력한다. 또한, 이들에 대하여 배타적 논리합을 취한 결과인 128 비트의 키 데이터를 제1 G 비트 키 변환부(320)에 출력한다.
도 17은, 비트 길이 변환부(310)의 내부 동작을 나타내는 도면이다.
비트 길이 변환부(310)에 128 비트의 키 데이터가 입력된 경우에는, 입력된키 데이터가 그대로 상위 128 비트의 키 데이터 sKhigh로서 출력된다. 또한, 하위 128 비트의 키 데이터 SKlow는 0으로 설정되어 출력된다.
다음에, 비트 길이 변환부(310)에 192 비트의 키 데이터가 입력된 경우에는, 입력된 키 데이터의 상위 128 비트의 데이터가 그대로 상위 128 비트의 키 데이터 SKhigh로서 출력된다. 또한, 입력된 l92 비트의 키 데이터의 하위 64 비트의 데이터와, 그 하위 64 비트의 데이터가 반전된 64 비트의 반전 데이터가 연결되어, 하위 128 비트의 키 데이터 SKlow가 생성되어 출력된다.
다음에, 256 비트의 키 데이터가 입력된 경우에는, 입력된 키 데이터의 상위 128 비트가 SKhigh로서, 하위 128 비트가 SKlow로서 출력된다.
제1 G 비트 키 변환부(320)에는, 비트 길이 변환부(310)로부터 128 비트의 키 데이터 SKhigh와 SKlow의 배타적 논리합이 입력되고, 2단의 비선형 변환을 받은 후, 상위 128 비트의 키 데이터 SKhigh와 배타적 논리합이 취해지고, 다시 2단의 비선형 변환을 받아, 128 비트의 키 데이터 K1가 출력된다.
비트 길이 변환부(310)에 입력된 키 데이터의 길이가 128비트인 경우에는, 제1 G 비트 키 변환부(320)로부터 출력된 l28비트의 키 데이터와 입력된 원래의 키 데이터를 이용하여 키 시프트부(340)가 확대 키를 생성한다. 비트 길이 변환부(310)에 입력된 키 데이터의 길이가 192 비트 또는 256 비트인 경우에는, 제1 G 비트 키 변환부(320)로부터 출력된 128 비트의 키 데이터를 다시 제2 G 비트키 변환부(330)에 입력하고, 하위 128 비트의 키 데이터 SKlow와 배타적 논리합을 취하고, 2단의 비선형 변환을 행한 후, 128 비트의 키 데이터 K2를 출력한다. 키 시프트부(340)는 제l G 비트 키 변환부(320)와 제2 G 비트 키 변환부(330)의 양쪽에서 출력된 2개의 128비트의 키 데이터를 입력으로 하여, 이들과 입력된 원래의 키 데이터를 이용하여 확대 키를 생성한다.
키 시프트부(340)는 시프트 레지스터A(341), 시프트 레지스터B(342), 시프트 레지스터C(343), 시프트 레지스터D(344) 및 시프트 제어부(345)를 구비하고 있다. 시프트 제어부(345)로부터는, 선택 신호(346)가 각 시프트 레지스터에 출력되어, 시프트 레지스터의 동작을 제어하고 있다.
도 18은, 시프트 레지스터A(34l)의 구성을 나타내는 도면이다.
시프트 레지스터A(341)는, 128 비트분의 스위치 그룹을 가진 선택기A(347)와, 128 비트의 레지스터A(348)를 구비하고 있다. 선택 신호(346)는 선택기A(347)의 각 스위치를 A 측 또는 B 측의 어느 하나에 모두 동시에 접속하는 것을 지시하는 스위치 신호를 포함하고 있다. 도 18에서는, 선택 신호(346)에 의해 선택기A(347)의 스위치 그룹이 A를 선택한 경우를 나타내고 있으며, 이 경우에는, 레지스터 A(348)가 17 비트 좌측으로 순회 시프트하는 경우를 나타내고 있다. 또한, 스위치 그룹이 B에 접속된 경우에는, 레지스터 A가 좌측으로 15 비트 순회 시프트하는 것을 나타내고 있다. 이 15 비트 시프트, 혹은, 17 비트 시프트는, 1 클럭 사이클에서 행해진다.
또, 순회 시프트의 시프트 수(15, 17)은 일 예로서, 그 밖의 시프트 수이어도 무방하다.
도 19는, 시프트 제어부(345)에 기억되어 있는 제어 테이블의 일부분을 나타내는 도면이다.
이 제어 테이블은, 각 클럭마다 레지스터를 몇 비트 시프트시킬지를 기억하고 있는 테이블이다. 예를 들면, 레지스터A 제어 테이블에 있어서는, 1 클럭째에 15 비트 시프트시키는 것을 나타내고 있다. 또한, 2 클럭째에 다시 15 비트 시프트시키는 것을 나타내고 있다. 마찬가지로 3 클럭째, 4 클럭째도 15 비트 시프트시키는 것을 나타내고 있다. 5 클럭째∼8 클럭째는, 각각 17비트 시프트시키는 것을 나타내고 있다.
도 20은, 128 비트의 키 데이터로부터 확대 키를 생성하는 경우에, 시프트 제어부(345)가 도 19에 도시하는 테이블을 이용하여 각 시프트 레지스터를 제어한 결과를 나타내는 도면이다.
시프트 레지스터 A(341)에는, 비트 길이 변환부(310)로부터 입력된 상위 128 비트의 키 데이터 SKhigh가 설정된다. 시프트 레지스터 B(342)에는, 제1 G 비트 키 변환부(320)로부터 출력된 128 비트의 키 데이터 K1이 설정된다. 이러한 상태에서, 도 19에 나타내는 제어 테이블에 따라서, 시프트 레지스터A(341)와 시프트 레지스터 B(342)가 동작한다. 도 20에 있어서, 사선을 그은 부분은 무시되어, 출력되지 않은 것을 나타내고 있다. 그 이외의 사선이 그어져 있지 않은 부분은, 도 21에도시하는 바와 같이, 확대 키로서 출력되는 것이다.
도 2l은, 레지스터의 값과 확대 키의 대응을 나타내는 도면이다.
도 20에 있어서는, 1 클럭마다 15 비트씩 4회 시프트하고, 1 클럭째부터는 1 클럭마다 17 비트 시프트하는 경우를 나타내고 있다. 시프트 레지스터A(341)와 시프트 레지스터B(342)로부터 상위 64비트 및 하위 64 비트를 확대 키로서 출력할지 의 여부를 판단, 혹은, 그 출력의 순서는 도시하지 않은 제어 테이블에 기재되어 있는 것으로 하고, 그 제어 테이블에 기초하여 선택 신호(346)로 출력 지시 신호를 포함시켜 시프트 레지스터에 출력함으로써, 각 시프트 레지스터로부터 확대 키가 64 비트씩 출력되게 된다.
도 22는, 192 비트 또는 256 비트의 키 데이터로부터 확대 키를 생성하는 경우를 나타내고 있다.
즉, 시프트 레지스터A(341)에 비트 길이 변환부(310)로부터 입력된 상위 128 비트의 키 데이터 SKhigh를 세트하고, 시프트 레지스터 B(342)에 하위 128 비트의 키 데이터 SKlow를 세트하며, 시프트 레지스터 C(343)에 제1 G 비트 키 변환부(320)로부터 출력된 128 비트의 키 데이터 K1를 세트하고, 시프트 레지스터 D(344)에 제2 G 비트 키 변환부(330)로부터 출력된 l28 비트의 키 데이터 K2를 세트하는 경우를 나타내고 있다.
사선 부분은, 확대 키로 사용하지 않는 키를 나타내고 있다.
도 23은, 레지스터의 값과 확대키의 대응을 나타내는 도면이다.
확대 키로서 사용하지 않는 키나 도 23에 나타내는 레지스터의 값과 확대 키와의 대응도 전술한 제어부에 있는 제어 테이블이 기억하고 있는 것으로 한다.
도 19에 도시한 바와 같이, 시프트 제어부(345)는, 시프트 레지스터 A(341)에 설정된 키 데이터를 시프트하는 비트 수를 기억하고 있다. 즉, 시프트 레지스터 A의 제어 테이블에 도시한 바와 같이, 시프트 레지스터 A(341)에 설정된 키 데이터를 Z0= O 비트, Z1= 15 비트, Z2= 45 비트, Z3= 60 비트, Z4= 77 비트, Z5= 94 비트, Z6= 111 비트, Z7= 128 비트 이동시킴으로써, 확대 키를 차례로 생성하게 된다.
각 시프트 수의 합은, 15+15+15+15+17+17+17+17= 128이 되고, 128 비트의 레지스터를 128 비트 순회 시프트함으로써, 레지스터는 초기 상태에 복귀하게 된다.
이와 같이, 시프트 수의 총합을 l28 비트(레지스터의 비트 수)로 하여 초기 상태로 복귀시키는 이유는, 초기 상태의 레지스터에 대하여 후속 처리가 있는 경우에, 그대로 후속 처리를 개시할 수 있기 때문이다. 또한, 역변환 처리(복호)를 행하는 경우에도, 확대 키를 생성하기 위한 처리가 초기 상태로부터 개시되므로, 초기 상태를 세트함으로써, 변환 처리(암호화)와 역변환 처리(복호)를 모두 행할수 있다. 또한, 시프트 수의 총합을 128 비트(레지스터의 비트 수)보다 크게 하지 않는 것은, 예를 들면, 128 비트(레지스터의 비트 수) 이하의 2 비트 순회 시프트와 128 비트(레지스터의 비트 수)보다 큰 130 비트 순회 시프트는 동일 값으로 되어 버려, 1 순회 이상의 시프트(128 비트 이상의 시프트 수)를 행함으로써 기인하는시프트 레지스터 내의 상태로서, 동일한 값이 발생되는 것을 방지하기 위함이다. 레지스터A의 제어 테이블은, 레지스터를 1순회 시킬 때에, 그 도중에서 가능한 한 불규칙한 시프트 수가 되는 값을 설정하는 것이 바람직하다. 그러나, 시프트 레지스터의 구성을 간단하게 하기 위해서는, 가능한 한 한정된 시프트 수로 시프트하도록 하는 것이 바람직하다. 그래서, 레지스터를 1개(1 클럭)로 15 비트와 17 비트와의 2 종류의 시프트를 할 수 있도록 구성하여, 이 2 종류의 시프트를 이용하여, 이하와 같이 하여 상이한 수의 시프트를 더 실현하고 있다.
Z1-Z0=15(여기서, Z1-Z0=B1로 한다) 및 Z2-Z1=30(즉, Z2-Z1=2B1)로서, Z2-Z1=2(Z1-Z0)라는 관계가 설정된다. 또한, 시프트 레지스터 B의 제어 테이블에 도시한 바와 같이, Z5-Z4=34(여기서, Z6-Z4=2B2로 한다) 및 Z6-Z5=17(즉, Z6-Z5=B2)로서, Z5-Z4=2(Z6-Z5)라는 관계가 설정된다. 즉, 시프트 수의 차분을 15비트와 30비트 또는 17 비트와 34 비트로 하여, 한 번의 시프트 수(15 비트와 17 비트)의 정수배(2배=I배)가 되는 시프트 수(30 비트 또는 34 비트)로 한다.
이와 같이, 시프트 수의 차분을 한 번의 시프트 수 또는 한 번의 시프트 수의 2배 이상의 정수배(I배, I는 2이상의 정수) 중의 어느 것으로 함으로써, 시프트 레지스터 A(341)를 1회 또는 2회(I회) 동작시킴으로써, 제어 테이블에 기억된 시프트 수의 연산을 용이하게 실현할 수 있다. 2회(I회) 동작시킨다는 것은, 시프트 레지스터 A(341)를 동작시키기 위해 공급되고 있는 동작 클럭의 2 클럭(I 클럭) 사이클에서 시프트 동작이 종료됨을 의미하고 있다.
여기서, I회(2회) 시프트시키는 경우, I-1회(2-l= 1회)째까지의 시프트된 데이터는 상위의 데이터도 하위의 데이터도 모두 무시하여, 확대 키로서 사용하지 않는다. 예를 들면, 도 19의 Z1=15 로부터 Z2=45 로 시프트하는 경우는, I=(Z2-Z1)/(1회의 시프트 수)=(45-15)/15=2가 되어, I-1회째(2-1=l회째)의 시프트 후의 데이터는 상위의 데이터도 하위의 데이터도 모두 무시하여, 확대 키로서 사용하지 않는다. 이것은, 도 20에서는, key [8]와 key [9]에 사선이 그어져 있는 것처럼, 확대 키로서 사용하지 않음을 나타내고 있다. 그리고, I회째(2회째)의 시프트 후의 데이터의 상위의 데이터와 하위의 데이터 중의 어느 하나 또는 모두를 확대 키로서 이용한다. 이것은, 도 20에서는, key [l2]와 key [13]이 확대 키로서 출력되는 것을 도시되어 있다.
이와 같이, 2이상의 정수배의 시프트를 행하는 것은, 15 비트 또는 17 비트만의 시프트뿐만 아니라, 30(=15×2) 비트 또는 34(=17×2) 비트(또는, 45(=15×3) 비트 또는 51(=17×3) 비트 등)의 시프트도 행할 수 있도록 하고, 시프트 수를 변화시켜, 안전성을 보다 높이기 위함이다. 또한, 전술한 확대 키로서 사용하지 않는 경우를 두는 것도, 마찬가지로, 보다 안전성을 높이기 위함이다.
확대 키로서 사용하지 않는 데이터(도 20과 도 22에 있어서, 사선을 그은 확대 키로서 사용하지 않는 키)는 예를 들면, 하드웨어의 처리, 혹은 프로그램의 처리가 일련으로 연속하여 행해지지 않을 경우에 발생시키는 것이 바람직하다. 예를 들면, 도 3에 있어서, 데이터 정변환부(FL)와 데이터 역변환부(FL-1)의 연산을 행할때, 혹은, 그 전 후, 혹은, 프로그램에 있어서 함수 호출, 혹은, 서브루틴 콜, 혹은, 인터럽트 처리를 행할 경우 등의 처리의 단절, 혹은, 처리의 변화시에 행하도록 하는 것이 바람직하다.
또한, 도 19에 도시한 제어 테이블의 특징은, B1=8×2-1=15(B1=8×J1-1, 여기서 J1은 1이상의 정수) 비트의 시프트 수와, B2=8×2+1=17 (B2=8×J2+1, 여기서 J2은 O 이상의 정수, J1=J2또는 J1≠J2) 비트의 시프트 수를 지정하고 있는 것이다. 시프트의 량을 8의 배수에 ±1로 함으로써, 홀수 비트의 시프트를 행하게 되어, 확대 키의 데이터 처리부에 대한 작용이 8 비트 단위, 즉, 짝수 단위이기 때문에, 짝수 비트만큼 시프트하는 것보다도 안전성이 높아진다. 또한, 시프트 량으로서 8의 배수에 1비트의 ±를 행할 뿐이기 때문에, 예를 들면, 1 비트 시프트 명령만을 갖는 CPU 등에 있어서는, 3 비트나 5 비트의 시프트를 행하는 것보다도, 고속 처리를 행할 수 있는 경우가 있다. 또한, 이 시프트 처리를 1비트 시프트밖에 할 수 없는 하드웨어를 이용하여 행할 경우에도, 마찬가지로, 고속 처리를 적용할 수 있는 경우가 있다.
전술한 비트 길이 변환부(31O)의 설명에서는, 3종류의 비트 폭의 키 데이터를 입력하는 경우를 나타내었으나, 128 비트(G 비트)와 256 비트(2G 비트)의 사이의 비트 길이 Q(G<Q<2G)를 갖는 키 데이터가 입력된 경우도, 어떠한 알고리즘를 이용하여 256비트의 키 데이터가 입력된 경우와 마찬가지지의 사이즈로 키 데이터를 신장시킬 수 있다. 즉, G 비트와 2G 비트의 사이의 길이 Q를 갖는 키 데이터가 입력된 경우, 비트 길이 변환부(310)에 의해 Q 비트의 키 데이터를 2G 비트의 키 데이터로 변환할 수 있다.
다음에, 도 34을 이용하여 등가 키의 비존재 증명에 대하여 설명한다.
이하의 도 34의 설명에 있어서, 「+」는 배타적 논리합 연산을 의미하는 것으로 한다.
여기서, 2개의 128 비트의 키 데이터 SKl과 SK2(SKl≠SK2)를 입력하는 것으로 하고, 비트 길이 변환부(3l0)가 SK1로부터 SK1high= SK1=(SKHl|SKLl)을, 또한, SK2 로부터 SK2high=SK2=(SKH2|SKL2)를 출력하는 것으로 한다. 여기서, SKHi(i=1, 2)는 SKi의 상위 64 비트의 데이터이며, SKLi(i=1, 2)는 SKi의 하위 64 비트의 데이터이다.
SKH1와 SKH2와의 배타적 논리합을 △A로 하고, SKL1와 SKL2와의 배타적 논리합을 △B라고 하면, SKl≠SK2이므로, 「적어도 △A≠0 또는 △B≠0」가 성립한다.
도 34에 도시한 바와 같이, 이 △A와 △B에 대하여 2단의 비선형 변환이 행해짐으로써, △A+△D, △B+△C로 변화된다. 이것은, SK1high와 SK2high과의 배타적 논리합(△A|△B)이 SK1high로부터 2단의 비선형 변환을 받은 데이터와 SK2high로부터 2단의 비선형 변환을 받은 데이터와의 배타적 논리합(△A+△D|△B+△C)으로 변화한 것을 의미한다. 따라서, 이 2단의 비선형 변환을 받은 데이터가, 배타적 논리합 회로(999)에서 각각 SK1high, SK2high와 배타적 논리합 연산되면, 이들 2개의 데이터의 배타적 논리합은 (△D|△C)가 된다. 여기서, 비선형 변환이 전단사 함수이면, △X≠0인 입력에 대하여 △Y≠0을 출력함으로, 「적어도, △A≠0 또는 △B≠0」이라면,「적어도, △C≠0 또는 △D≠0」가 된다. 그러므로, 2단의 비선형 변환에 의해 SK1high와 SK2high로부터 동일한 데이터를 출력할 수는 없음을 의미하여, 등가 키의 비존재 증명이 된다.
한편, 도 35에 도시한 바와 같이, 2단의 비선형 변환이 아니라, 3단의 비선형 변환을 행할 경우에 대하여 고려한다. 「적어도, △A≠0 또는 △B≠0」가 성립하므로, △A 또는 △B의 어느 하나가 0인 경우가 있을 수 있다. 만일, △A=0 이라고 하면 △C=0이 되어, 또한, 상기와 동일한 논지에서, SK1high와 SK2high와의 배타적 논리합(0|△B)이 SK1high로부터 3단의 비선형 변환을 받은 데이터와, SK2high로부터 3단의 비선형 변환을 받은 데이터와의 배타적 논리합(△B+△E|△D)으로 변화한다. 따라서, 이 3단의 비선형 변환을 받은 데이터가 배타적 논리합 회로(999)에서 각각 SK1high, SK2high와 배타적 논리합 연산되면, 이들 2개의 데이터의 배타적 논리합은 (△B+△E|△B+△D)가 된다. 여기서, △B=△D=△E≠0이 성립한다고 가정하면, (△B+△E|△B+△D)=(0|0)이 된다. 결국, 이 3단의 비선형 변환을 받은 데이터가 각각 SK1high, SK2high와 배타적 논리합 연산되면, 그 연산 결과가 일치함을 의미한다. 즉, SK1high, SK2high로부터 동일한 데이터를 출력함을 의미하며, 암호의 안전성 측면에서 문제가 많은 등가 키가 존재하게 된다.
이상 설명한 3단의 비선형 변환뿐만 아니라, 일반적인 비선형 변환에서는 서로 다른 SK1, SK2로부터 등가인 K1을 출력하는, 즉, 등가 키가 존재할 가능성이 있지만, 본 실시예에서 설명하는 2단의 비선형 변환이라면 등가 키가 존재하지 않음을 증명할수있다.
또한, 등가 키의 비존재 증명이 가능한 것은, 이 2단의 비선형 변환 이외에도 있다고 생각할 수 있지만, 2단의 비선형 변환을 행할 경우는, 등가 키의 비존재를 증명할 수 있을 뿐만 아니라 간단한 구성이기 때문에, 2단의 비선형 변환을 행하는 것이 바람직한 구성이다.
도 24는, 암호화용 데이터 변환 장치(100) 또는 복호화용 데이터 변환 장치(400)가 실장되는 컴퓨터를 나타낸 도면이다.
암호화용 데이터 변환 장치(100) 또는/및 복호화용 데이터 변환 장치(400)는 인쇄 회로 기판(PCB)로서 버스에 접속된다. 이 인쇄 회로 기판에는, CPU나 메모리나 논리 회로 소자가 구비되어 있으며, 전술한 동작을 행함으로써 CPU로부터 공급되는 평문을 암호문으로 하여 CPU로 반송한다. 혹은, CPU로부터 전송된 암호문을 평문으로 복호하여 CPU로 반송한다.
이와 같이, 암호화용 데이터 변환 장치(100) 또는 복호화용 데이터 변환 장치(400)는 모두 하드웨어를 이용하여 실현 가능하다. 또한, 암호화용 데이터 변환 장치(100) 또는 복호화용 데이터 변환 장치(400)는 모두 하드웨어를 이용하여 데이터 변환 방법으로서도 실현하는 것도 가능하다. 즉, 자기 디스크 장치나 가요성디스크 장치에 기억된 프로그램을 이용하여 전술한 동작을 실행시킬 수 있다. 혹은, 도시하지 않았으나, 하드웨어와 소프트웨어를 조합하여 전술한 동작을 실현시키도록 하여도 무방하다. 또한, 도시하지 않았으나, 1대의 컴퓨터로 전술한 동작을 모두 실현할 필요는 없으며, 서버와 클라이언트, 혹은 호스트 컴퓨터와 단말 컴퓨터와 같이, 분산된 시스템에서 전술한 동작을 달성하도록 하여도 무방하다.
전술한 도 1 내지 도 47에서 화살표가 기재되어 있는 도면은 화살표의 방향이 동작의 흐름을 나타내고 있으며, 전술한 도 1 내지 도 47에서 화살표가 기재되어 있는 도면은 데이터 변환 장치의 블럭도에도 있고, 또한 흐름도에도 있다. 그리고, 전술한 블럭도에 있어서의 「… 부」라고 기재되어 있는 부분은, 「… 공정」또는 「… 처리」라고 변경함으로써, 데이터 변환 방법을 나타내는 동작 흐름도 또는 프로그램 흐름도가 된다.
또한, 전술한 실시예에서는, 128비트의 평문과 암호문의 경우를 나타내었으나, 256비트의 평문과 암호문이나 그 밖의 비트 수의 평문과 암호문의 경우이어도 무방하다.
또한, 전술한 실시예에서는 128, 192, 256비트의 키 데이터와 64비트의 확대키의 경우를 나타내었으나, 그 밖의 비트 수의 경우이어도 무방하다.
평문과 암호문과 키 데이터와 확대 키의 비트 길이가 달라진 경우에는, 물론, 그 비트 길이에 대응하여 각 부나 각 공정이나 각 프로세스가 처리하는 비트 길이도 변한다.
본 발명의 실시예에 따르면 암호화와 복호가 동일한 알고리즘으로 행할 수 있도록, 데이터 정변환부(FL)(251)와 데이터 역변환부(FL-1)(271)를 구비하고 있으므로, 암호화부(200)와 복호화부(500)를 겸용하여 이용할 수 있다.
또한, 본 발명의 실시예에 따르면, 변환 테이블 T을 겸용하여 S 박스 제1 변환부(13)와 S 박스 제2 변환부(14)를 구성하고 있으므로, 구성이 간단해진다는 효과가 있다.
또한, 본 발명의 실시예에 따르면, 부분 필드 변환부(18)를 이용하고 있으므로, 구성이 간단해짐과 함께, 선형 변환부(85)와 선형 변환부(87)를 제공하고 있으므로, 부분 필드 변환부(18)를 이용한 경우에도 안전성이 향상된다.
또한, 본 발명의 실시예에 따르면, 시프트 제어부(345)가 시프트 레지스터를 정수회 동작시킴으로써 15비트나 17비트만의 일정값이 아닌 시프트 수(예를 들면, 30비트나 34비트)를 이용한 키 데이터의 시프트를 행할 수 있어, 안전성을 향상시킬 수 있다.
또한, 본 발명의 실시예에 따르면, 시프트 레지스터에 있어서 시프트된 데이터로부터 확대 키로서 사용하지 않은 경우를 제공하고 있으므로, 안전성을 더욱 향상시킬 수 있다.
또한, 본 발명의 실시예에 따르면, 비트 수가 상이한 키 데이터가 입력된 경우에도, 비트 길이 변환부(310)에 의해 일정 길이의 키 데이터로 변환하므로, 유연성이 있는 키 생성 연산을 행할 수 있다.
또한, 본 발명의 실시예에 따르면, 제1 G 비트 키 변환부(320) 내에서 2단의 비선형 변환을 이용함으로써, K1에 대하여 등가 키가 존재하지 않음을 증명할 수 있어, 안전성을 향상시킬 수 있다.
또한, 본 발명의 실시예에 따르면, 키 함수부(25)의 배치 위치를 변경하였으므로, 고속 처리가 가능해진다.

Claims (41)

  1. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비한 데이터 변환 장치에 있어서,
    상기 데이터 처리부는, 데이터 변환을 행하는 데이터를 제1 데이터(L)와 제2 데이터(R)로 분할하여 데이터 변환함과 함께,
    상기 데이터 처리부는,
    상기 제1 데이터(L)를 변환하는 데이터 정변환부(FL)와,
    상기 제2 데이터(R)를 상기 데이터 정변환부(FL)의 변환과는 반대의 변환을 행하는 데이터 역변환부(FL-1)
    를 구비한 것을 특징으로 하는 데이터 변환 장치.
  2. 제1항에 있어서,
    상기 데이터 처리부는 제1 입력 및 제2 입력과, 제1 출력 및 제2 출력을 가지며,
    상기 데이터 정변환부(FL)는 변환된 데이터를 상기 데이터 처리부의 제1 입력으로 출력하고,
    상기 데이터 역변환부(FL-1)는 상기 데이터 처리부의 제2 출력으로부터 출력된 데이터를 변환하여 출력하는 것을 특징으로 하는 데이터 변환 장치.
  3. 제1항에 있어서,
    상기 데이터 처리부는 제1 입력 및 제2 입력과, 제1 출력 및 제2 출력을 가지며,
    상기 데이터 정변환부(FL)는 변환된 데이터를 상기 데이터 처리부의 제2 입력으로 출력하고,
    상기 데이터 역변환부(FL-1)는 상기 데이터 처리부의 제1 출력으로부터 출력된 데이터를 변환하여 출력하는 것을 특징으로 하는 데이터 변환 장치.
  4. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비하는 데이터 변환 장치에 있어서,
    상기 데이터 처리부는, 데이터를 비선형 변환하는 비선형 변환부를 구비하고,
    상기 비선형 변환부는,
    변환할 데이터의 일부분의 데이터를 제1 부분 데이터로서 입력하고, 입력한 데이터의 값을 다른 값으로 변환하여 출력하는 변환 테이블 T를 이용하여 제1 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제1 변환부(s1)와,
    변환할 데이터의 적어도 다른 일부분의 데이터를 제2 부분 데이터로서 입력하고, 상기 변환 테이블 T을 이용한 변환과 제2 부분용 연산을 이용하여 제2 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제2 변환부(s2)
    를 구비한 것을 특징으로 하는 데이터 변환 장치.
  5. 제4항에 있어서,
    상기 제1 변환부(s1)는, 상기 변환 테이블 T에 데이터 y1을 입력하여 데이터 s1(y1)을 출력시켜, 상기 데이터를 데이터 z1=s1(y1)로서 출력하고,
    상기 제2 변환부(s2)는, 상기 변환 테이블 T에 데이터 y2를 입력하여 데이터 s1(y2)을 출력시켜, 데이터 s1(y2)를 순회 시프트 처리한 데이터 (rot(s1(y2)))를 데이터 z2=rot(s1(y2))로서 출력하는 것을 특징으로 하는 데이터 변환 장치.
  6. 제4항에 있어서,
    상기 데이터 처리부는,
    변환할 데이터의 제1 부분 데이터와 제2 부분 데이터와는 상이한 일부분의 데이터를 제3 부분 데이터로서 입력하고, 상기 제1 부분 데이터와 상기 제2 부분 데이터와 상기 제3 부분 데이터와는 상이한 일부분의 데이터를 제4 부분 데이터로서 각각 입력하고, 상기 변환 테이블(T)을 이용한 변환과, 상기 제2 변환부(s1)의제2 부분용 연산과는 각각 상이한 제3 부분용 연산과 제4 부분용 연산에 의해, 상기 제3 부분 데이터와 상기 제4 부분 데이터를 각각 변환하고, 변환한 데이터를 출력하는 제3 변환부(s3) 및 제4 변환부(s4)를 더 구비한 것을 특징으로 하는 데이터 변환 장치.
  7. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비한 데이터 변환 장치에 있어서,
    상기 데이터 처리부는, 변환할 데이터를 입력으로 하여, 입력된 데이터를 임의의 필드의 원소로 간주하고, 그 부분 필드를 이용한 역원 회로를 이용하여 변환하고, 변환한 데이터를 출력하는 부분 필드 변환부와,
    상기 부분 필드 변환부의 전단과 후단의 적어도 어느 한 쪽에서 변환하는 갈로아 필드(Glois Field)(GF)(2n) 상의 데이터를 자연히 대응하는 GF(2)n의 원소로 간주하고, GF(2) 상의 벡터 공간 GF(2)n의 준선형 변환을 행하는 준선형 변환부를 구비한 것을 특징으로 하는 데이터 변환 장치.
  8. 제7항에 있어서,
    상기 부분 필드 변환부는, N(N은 우수)비트의 데이터 X를 X=X0+βX1(X0, X1:부분 필드의 원소, β:원래 필드의 원소)이 되는 상위의 N/2비트의 데이터 X1과 하위의 N/2 비트의 데이터 X0로 등분하고, Y=Y0+βY1=1/(X0+βX1)(단, X=0일 때 Y=0)이 되는 상위의 데이터 Y1과 하위의 N/2 비트의 데이터 Y0를 각각 N/2비트 단위로 연산하여 데이터 y를 구하는 복수의 N/2 비트 연산기만을 구비하는 것을 특징으로 하는 데이터 변환 장치.
  9. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와,
    상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부
    를 구비한 데이터 변환 장치에 있어서,
    상기 데이터 처리부는, 각 단마다 확대 키를 입력으로 하여 비선형 변환을 행하는 다단으로 접속된 복수단의 비선형 데이터 변환부를 구비하고,
    상기 키 생성부는, 상기 복수단의 비선형 데이터 변환부의 각 단에 대하여 공급하는 확대 키를 생성하는 경우, 키 데이터와 상기 키 데이터로부터 생성된 키 데이터에 의존하는 데이터 중의 적어도 어느 하나를 입력으로 하여 사전에 정해진 비트 수 Z1, Z2,···, Zm(여기서, i, j, k는 1∼m의 어느 하나의 값으로서, Zk-Zj= I×(Zi+1-Z1)= I× B(I는 정수, B= Zi+1-Zi))만큼 순회 시프트하고, 이 순회 시프트한 키 데이터로부터 각 단의 비선형 데이터 변환부의 확대 키를 생성하는 키 시프트부를 구비함과 함께,
    상기 키 시프트부는,
    한 번의 동작으로 (Zi+1-Zi) 비트(B 비트)의 순회 시프트를 행하는 순회 시프트 레지스터와,
    Zi비트 순회 시프트된 키 데이터에 대하여 순회 시프트 레지스터를 한 번 동작시켜 (Zi+1-Zi) 비트(B 비트)의 순회 시프트를 실행시킴으로써, 순회 시프트 레지스터에 Zi+1비트 순회 시프트된 키 데이터를 생성시키고, Zi+1비트 순회 시프트된 키 데이터에 대하여 순회 시프트 레지스터를 I 회 동작시켜 I×(Zi+1-Zi) 비트(I× B 비트)의 순회 시프트를 실행시킴으로써, 순회 시프트 레지스터에 Zi+2비트 순회 시프트된 키 데이터를 생성시키는 제어부
    를 구비하는 것을 특징으로 하는 데이터 변환 장치.
  10. 제9항에 있어서,
    상기 순회 시프트 레지스터는, 순회 시프트 레지스터를 동작시키기 위해서 공급되고 있는 동작 클럭의 1 클럭 사이클에서 Zi+1-Zi비트(B 비트)의 순회 시프트를 행하는 회로인 것을 특징으로 하는 데이터 변환 장치.
  11. 제9항에 있어서,
    상기 순회 시프트 회로는, (Zi+1-Zi) 비트(B 비트)의 값으로서, B1= 8×J1+ 1 (J1= O 이상의 정수) 비트와, B2= 8×J2-1(J2= 1이상의 정수, J1과 J2는 무관계, 즉, J1≠J2또는 J1=J2) 비트 중 어느 하나의 값을 선택하는 선택기를 구비한 것을 특징으로 하는 데이터 변환 장치.
  12. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와,
    상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부
    를 구비한 데이터 변환 장치에 있어서,
    상기 데이터 처리부는, 각 단마다 확대 키를 입력으로 하여 비선형 변환을 행하는 다단으로 접속된 복수단의 비선형 데이터 변환부를 구비하며,
    상기 키 생성부는, 상기 복수단의 비선형 데이터 변환부의 각 단에 대하여 공급하는 확대 키를 생성하는 경우, 임의의 키 데이터를 사전에 정해진 비트 수(B 비트)만큼 순차로 순회 시프트하여, 이 순회 시프트한 키 데이터로부터 각 단의 비선형 데이터 변환부의 확대키를 생성하는 키 시프트부를 가짐과 함께,
    상기 키 시프트부는, B 비트만큼 순차로 순회 시프트한 데이터 중에서 일부의 데이터를 무시하여 확대 키를 생성하지 않고, 나머지의 다른 데이터로부터 확대키를 생성하는 것을 특징으로 하는 데이터 변환 장치.
  13. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와,
    상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부
    를 구비한 데이터 변환 장치에 있어서,
    상기 키 생성부는,
    G 비트의 G 비트 키 데이터를 입력으로 하여 변환하고, G 비트의 제1 G 비트 변환 키 데이터를 출력하는 제1 G 비트 키 변환부와,
    상기 제1 G 비트 키 변환부로부터 출력된 제1 G 비트 변환 키 데이터를 입력으로 하고, 이를 다시 변환하여 G 비트의 제2 G 비트 변환 키 데이터를 출력하는 제2 G 비트 변환부를 구비하며,
    상기 키 생성부가 G 비트 키 데이터 K를 입력으로 한 경우는, G 비트 키 데이터 K를 상기 제1 G키 변환부에 입력하여 변환하고, 상기 제1 G키 변환부에 의해 출력된 제l G 비트 변환 키 데이터 K1를 변환된 G 비트 키 데이터로서 출력하며,
    상기 키 생성부가 2G 비트 키 데이터 K를 입력으로 한 경우는, 2G 비트 키 데이터 K로부터 G비트 키 데이터를 생성하여 생성한 G 비트 키 데이터를 상기 제1 G 비트 키 변환부에 입력하여 변환하고 제1 G 비트 변환 키 데이터 K1를 출력하고,제 l G 비트 변환 키 데이터 K1를 제2 G 비트 변환부에 입력하여 변환하고 제2 G 비트 변환 키 데이터 K2를 출력하며, 상기 제l G 비트 키 변환부에 의해 출력된 제1 G 비트 변환 키 데이터 K1와, 상기 제2 G 비트 변환부에 의해 출력된 제2 G 비트 변환 키 데이터 K2를 연결하여, 변환된 2G 비트 키 데이터(K1, K2)로서 출력하는 것을 특징으로 하는 데이터 변환 장치.
  14. 제13항에 있어서,
    상기 제1 G 비트 키 변환부는,
    G 비트 키 데이터를 비선형 변환하는 2단의 비선형 데이터 변환부와,
    2단째의 비선형 데이터 변환부로부터 출력된 변환 도중의 G 비트 키 데이터와,
    상기 제1 G 비트 키 변환부에 입력된 G 비트 키 데이터와의 논리 연산을 행하는 논리 연산부를 구비한 것을 특징으로 하는 데이터 변환 장치.
  15. 제13항에 있어서,
    상기 키 생성부는, Q 비트(G<Q<2G)의 키 데이터를 입력으로 한 경우, Q 비트의 키 데이터를 2G 비트의 키 데이터로 변환하는 비트 길이 변환부를 더 포함한 것을 특징으로 하는 데이터 변환 장치.
  16. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와,
    상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부
    를 구비한 데이터 변환 장치에 있어서,
    데이터 변환을 행하는 데이터와 키 데이터를 논리 연산하는 키 함수부와,
    데이터 변환을 행하는 데이터를 다른 데이터로 치환 변환하는 S 함수부와,
    데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수부를 구비하는 비선형 함수부(F)를 구비하고,
    상기 비선형 함수부(F)는, 상기 키 함수부를 상기 S 함수부와 상기 P 함수부의 사이에 배치한 것을 특징으로 하는 데이터 변환 장치.
  17. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와,
    상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부
    를 구비한 데이터 변환 장치에 있어서,
    데이터 변환을 행하는 데이터와 키 데이터를 논리 연산하는 키 함수부와,
    데이터 변환을 행하는 데이터를 다른 데이터로 치환 변환하는 S 함수부와,
    데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수부를 갖는 비선형 함수부(F)를 구비하여,
    상기 비선형 함수부(F)는, 상기 키 함수부를 상기 S 함수부와 상기 P 함수부 모두의 앞과 뒤의 어느 한 쪽에 배치한 것을 특징으로 하는 데이터 변환 장치.
  18. 제16항에 있어서,
    상기 S 함수부는,
    변환할 데이터의 일부분의 데이터를 제1 부분 데이터로서 입력하고, 입력한 데이터 값을 다른 값으로 변환하여 출력하는 변환 테이블 T를 이용하여 상기 제1 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제1 변환부(s1)와,
    변환할 데이터의 적어도 다른 일부분의 데이터를 제2 부분 데이터로서 입력하고, 상기 변환 테이블 T를 이용한 변환과 제2 부분용 연산을 이용하여 상기 제2 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제2 변환부(S2)를 구비한 것을 특징으로 하는 데이터 변환 장치.
  19. 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비한 데이터 변환 장치에 있어서,
    데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수부를 포함하는 비선형 함수부(F)를 구비하고,
    상기 P 함수부는, z1, z2,···, z8의 8개의 4n(n은 1이상의 정수) 비트 데이터를 입력으로 하고,
    상기 z1, z2, z3, z4의 4개의 데이터 중에서 적어도 2개 이상의 데이터에 대하여 배타적 논리합 연산을 행하여 4n 비트의 결과 U1를 구하는 회로와,
    상기 z5, z6, z7, z8의 4개의 데이터 중에서 적어도 2개 이상의 데이터에 대하여 배타적 논리합 연산을 행하여 4n 비트의 결과 U2를 구하는 회로와,
    상기 U1와 U2의 배타적 논리합 연산을 행하여 4n 비트의 결과 U3를 구하는 회로와,
    상기 U1에 대하여 순회 시프트하는 순회 회로와,
    상기 순회 회로의 출력과 상기 U3와의 배타적 논리합 연산을 행하여 4n 비트의 결과 U4를 구하는 회로를 구비하며,
    상기 U3, U4를 각각 4개로 분할하여 z1', z2', …, z8'의 8개의 n비트 데이터로서 출력하는 것을 특징으로 하는 데이터 변환 장치.
  20. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리를 실행하는 데이터 변환 방법에 있어서,
    상기 데이터 처리는, 데이터 변환을 행하는 데이터를 제 l 데이터(L)와 제2데이터(R)로 분할함과 함께,
    상기 데이터 처리는, 제1 데이터(L)를 변환하는 데이터 정변환 처리(FL)와,
    제2 데이터(R)를 상기 데이터 정변환 처리(FL)의 변환과는 반대의 변환을 행하는 데이터 역변환 처리(FL-1)를 구비한 것을 특징으로 하는 데이터 변환 방법.
  21. 키 데이터를 입력으로 하여 적어도 데이터의 암호화와 데이터의 복호화 중의 어느 하나의 데이터 변환을 행하는 데이터 처리를 실행하는 데이터 변환 방법에 있어서,
    상기 데이터 처리는, 데이터를 비선형 변환하는 비선형 변환 처리를 구비하고,
    상기 비선형 변환 처리는,
    변환할 데이터의 일부분의 데이터를 제1 부분 데이터로서 입력하고, 입력한 데이터의 값을 다른 값으로 변환하여 출력하는 변환 테이블 T를 이용하여 상기 제1 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제1 변환 처리 (s1)와,
    변환할 데이터의 적어도 다른 일부분의 데이터를 제2 부분 데이터로서 입력하고, 상기 변환 테이블 T를 이용한 변환과 제2 부분용 연산을 이용하여 상기 제2 부분 데이터를 변환하고, 변환한 데이터를 출력하는 제2 변환 처리(s2)
    를 구비한 것을 특징으로 하는 데이터 변환 방법.
  22. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리를 실행하는 데이터 변환 방법에 있어서,
    상기 데이터 처리는, 변환할 데이터를 입력으로 하여, 입력된 데이터를 임의의 필드(field)의 원소로 간주하고, 그 부분 필드를 이용한 역원 회로를 이용하여 변환하고, 변환한 데이터를 출력하는 부분 필드 변환 처리와,
    상기 부분 필드 변환 처리의 전단 처리와 후단 처리의 적어도 어느 한 쪽에서 변환하는 GF(2n) 상의 데이터를 자연히 대응하는 GF(2)n의 원소로 간주하고, GF (2) 상의 벡터 공간 GF(2)n의 준선형 변환을 행하는 처리를 구비한 것을 특징으로 하는 데이터 변환 방법.
  23. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와,
    상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리
    를 실행하는 데이터 변환 방법에 있어서,
    상기 데이터 처리는, 각 단마다 확대 키를 입력으로 하여 비선형 변환을 행하는 다단으로 접속된 복수단의 비선형 데이터 변환 처리를 가지며,
    상기 키 생성 처리는, 상기 복수단의 비선형 데이터 변환 처리의 각 단에 대하여 공급하는 확대 키를 생성하는 경우, 키 데이터와 상기 키 데이터로부터 생성된 키 데이터에 의존하는 데이터 중의 적어도 어느 하나를 입력으로 하여 사전에 정해진 비트 수 Z1, Z2,···, Zm(여기서, i, j, k는, 1∼m의 어느 하나의 값으로서, Zk-Zj= I×(Zi+1-Zi)(I는 정수, B=Zi+1-Z1))만큼 순회 시프트하여, 이 순회 시프트한 키 데이터로부터 각 단의 비선형 데이터 변환 처리로 공급하는 확대 키를 생성하는 키 시프트 처리를 가짐과 함께,
    상기 키 시프트 처리는,
    한 번의 동작으로 (Zi+1-Zi) 비트(B 비트)의 순회 시프트를 행하는 순회 시프트 처리와,
    Zi비트 순회 시프트된 키 데이터에 대하여 상기 순회 시프트 처리를 한 번 동작시켜 (Zi+1-Zi) 비트(B 비트)의 순회 시프트를 실행시킴으로써, 순회 시프트 처리에 의해 Zi+1비트 순회 시프트된 키 데이터를 생성시키고, Zi+1비트 순회 시프트된 키 데이터에 대하여 순회 시프트 처리를 I 회 동작시켜 I×(Zi+1-Zi) 비트 (I× B 비트)의 순회 시프트를 실행시킴으로써, 순회 시프트 처리에 의해 Zi+2비트 순회 시프트된 키 데이터를 생성시키는 제어 처리
    를 구비하는 것을 특징으로 하는 데이터 변환 방법.
  24. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도어느 하나의 데이터 변환을 행하는 데이터 처리와,
    상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리
    를 실행하는 데이터 변환 방법에 있어서,
    상기 데이터 처리는, 각 단마다 확대 키를 입력으로 하여 비선형 변환을 행하는 다단으로 접속된 복수단의 비선형 데이터 변환 처리를 가지며,
    상기 키 생성 처리는, 상기 복수단의 비선형 데이터 변환 처리의 각 단에 대하여 공급하는 확대 키를 생성하는 경우, 임의의 키 데이터를 사전에 정해진 비트 수(B 비트)만큼 순차로 순회 시프트하고, 이 순회 시프트한 키 데이터로부터 각 단의 비선형 데이터 변환 처리에 공급하는 확대 키를 생성하는 키 시프트 처리를 가짐과 함께,
    상기 키 시프트 처리는, B 비트만큼 순차로 순회 시프트한 데이터 중에서 일부의 데이터를 무시하여 확대 키를 생성하지 않고, 나머지의 다른 데이터로부터 확대 키를 생성하는 것을 특징으로 하는 데이터 변환 방법.
  25. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와,
    상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리
    를 실행하는 데이터 변환 방법에 있어서,
    상기 키 생성 처리는,
    G 비트의 G 비트 키 데이터를 입력으로 하여 변환하고, G 비트의 제1 G 비트 변환 키 데이터를 출력하는 제1 G 비트 키 변환 처리와,
    상기 제1 G 비트 키 변환 처리로부터 출력된 상기 제1 G 비트 변환 키 데이터를 입력으로 하고, 이를 다시 변환하여 G 비트의 제2 G 비트 변환 키 데이터를 출력하는 제2 G 비트 변환 처리를 구비하고,
    상기 키 생성부가 G 비트 키 데이터 K를 입력으로 한 경우는, G 비트 키 데이터 K를 상기 제1 G 비트 키 변환부에 입력하여 변환하고, 상기 제1 G 비트 키 변환 처리에 의해 출력된 제1 G 비트 변환 키 데이터 K1를 변환된 G 비트 키 데이터로서 출력하고,
    상기 키 생성부가 2G 비트 키 데이터 K를 입력으로 한 경우는, 2G 비트 키 데이터 K로부터 G 비트 키 데이터를 생성하여 생성한 G 비트 키 데이터를 상기 제1 G 비트 키 변환부에 입력하여 변환하고 제1 G 비트 변환 키 데이터 K1를 출력하고, 상기 제1 G 비트 변환 키 데이터 K1를 상기 제2 G 비트 변환부에 입력하여 변환하고 제2 G 비트 변환 키 데이터 K2를 출력하고, 상기 제1 G 비트 키 변환 처리에 의해 출력된 상기 제1 G 비트 변환 키 데이터 K1와, 상기 제2 G 비트 변환 처리에 의해 출력된 상기 제2 G 비트 변환 키 데이터 K2를 연결하여, 변환된 2G 비트 키 데이터(K1, K2)로서 출력하는 것을 특징으로 하는 데이터 변환 방법.
  26. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와,
    상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리
    를 실행하는 데이터 변환 방법에 있어서,
    데이터 변환을 행하는 데이터와 키 데이터를 논리 연산하는 키 함수 처리와,
    데이터 변환을 행하는 데이터를 다른 데이터로 치환 변환하는 S 함수 처리와,
    데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수 처리를 갖는 비선형 함수 처리(F)를 구비하고,
    상기 비선형 함수 처리(F)는, 상기 키 함수 처리를 상기 S 함수 처리와 상기 P 함수 처리의 사이에서 동작시키는 것을 특징으로 하는 데이터 변환 방법.
  27. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와,
    상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리
    를 실행하는 데이터 변환 방법에 있어서,
    데이터 변환을 행하는 데이터와 키 데이터를 논리 연산하는 키 함수 처리와,
    데이터 변환을 행하는 데이터를 다른 데이터로 치환 변환하는 S 함수 처리와,
    데이터 변환을 행하는 데이터끼리 논리 연산하는 P 함수 처리를 갖는 비선형 함수 처리(F)를 구비하고,
    상기 비선형 함수 처리(F)는, 상기 키 함수 처리를 상기 S 함수 처리와 상기 P 함수 처리 모두의 앞과 뒤의 어느 하나에서 동작시키는 것을 특징으로 하는 데이터 변환 방법.
  28. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부를 구비한 데이터 변환 장치에 있어서,
    상기 데이터 처리부는,
    제1 입력부와,
    제2 입력부와,
    제1 출력부와,
    제2 출력부와
    데이터의 암호화와 데이터의 복호화를 동일한 알고리즘에서 행하는 비선형 변환부와,
    상기 제1 입력부에 입력되는 데이터를 변환하는 제 l 입력 데이터 정변환부와,
    상기 제2 출력부로부터 출력되는 데이터를 입력으로 하여 상기 제1 입력 데이터 정변환부의 변환과는 반대의 변환을 행하는 제2 출력 데이터 역변환부
    를 구비한 것을 특징으로 하는 데이터 변환 장치.
  29. 제28항에 있어서,
    상기 비선형 변환부는,
    제1 입력 데이터를 상기 제1 입력부로부터 입력하고,
    제2 입력 데이터를 상기 제2 입력부로부터 입력하며,
    상기 제1 입력 데이터와 상기 제2 입력 데이터를 암호화용 키 데이터를 이용하여 비선형 변환하여, 제 l 변환 데이터와 제2 변환 데이터를 생성하고,
    상기 제1 변환 데이터를 상기 제1 출력부로부터 출력하며,
    상기 제2 변환 데이터를 상기 제2 출력부로부터 출력하고,
    상기 제1 변환 데이터를 상기 제2 입력부로부터 입력하며,
    상기 제2 변환 데이터를 상기 제1 입력부로부터 입력하고, 상기 제 l 변환 데이터와 상기 제2 변환 데이터를 복호화용 키 데이터를 이용하여 비선형 변환하여, 제1 출력 데이터와 제2 출력 데이터를 생성하고,
    상기 제1 출력 데이터를 상기 제2 출력부로부터 출력하고,
    상기 제2 출력 데이터를 상기 제1 출력부로부터 출력한 경우에,
    상기 제1 입력 데이터와 상기 제2 출력 데이터가 동일하게 되고, 상기 제2 입력 데이터와 상기 제1 출력 데이터가 동일하게 되는 알고리즘을 구비한 것을 특징으로 하는 데이터 변환 장치.
  30. 제28항에 있어서,
    상기 데이터 처리부는,
    상기 제2 입력부에 입력되는 데이터를 변환하는 제2 입력 데이터 정변환부와,
    상기 제1 출력부로부터 출력되는 데이터를 입력으로 하여, 상기 제2 입력 데이터 정변환부의 변환과는 반대의 변환을 행하는 제1 출력 데이터 역변환부를 더 포함하는 것을 특징으로 하는 데이터 변환 장치.
  31. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리부와,
    상기 데이터 처리부가 이용할 키 데이터를 생성하여 상기 데이터 처리부에 공급하는 키 생성부
    를 구비한 데이터 변환 장치에 있어서,
    상기 데이터 처리부는, 데이터 변환을 행하는 데이터를 비선형 변환하는 비선형 함수부(F)를 구비하며,
    상기 키 생성부는, 상기 비선형 함수부(F)에 공급하는 키 데이터를 가공하여, 가공한 키 데이터를 상기 데이터 처리부의 상기 비선형 함수부(F) 이외의 부분에 공급하여 데이터와 연산시키는 것을 특징으로 하는 데이터 변환 장치.
  32. 키 데이터를 입력으로 하여 데이터의 암호화와 데이터의 복호화 중의 적어도 어느 하나의 데이터 변환을 행하는 데이터 처리와,
    상기 데이터 처리가 이용할 키 데이터를 생성하여 상기 데이터 처리에 공급하는 키 생성 처리
    를 실행하는 데이터 변환 방법에 있어서,
    상기 데이터 처리는, 데이터 변환을 행하는 데이터를 비선형 변환하는 비선형 함수 처리(F)를 구비하며,
    상기 키 생성 처리는, 상기 비선형 함수 처리(F)에 공급하는 키 데이터를 가공하여, 가공한 키 데이터를 상기 데이터 처리의 비선형 함수 처리(F) 이외의 처리에 공급하여 데이터와 연산시키는 것을 특징으로 하는 데이터 변환 방법.
  33. 상기 제20항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  34. 상기 제21항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  35. 상기 제22항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  36. 상기 제23항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  37. 상기 제24항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  38. 상기 제25항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  39. 상기 제26항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  40. 상기 제27항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  41. 상기 제32항에 기재된 데이터 변환 방법을 컴퓨터로 실행시키는 프로그램 또는 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR10-2001-7014247A 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치 KR100449594B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2000064614 2000-03-09
JPJP-P-2000-00064614 2000-03-09

Related Child Applications (7)

Application Number Title Priority Date Filing Date
KR10-2004-7008595A Division KR100465070B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008605A Division KR100465073B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008606A Division KR100465074B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008607A Division KR100465075B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008598A Division KR100468338B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008602A Division KR100465072B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008596A Division KR100465071B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치

Publications (2)

Publication Number Publication Date
KR20020016624A true KR20020016624A (ko) 2002-03-04
KR100449594B1 KR100449594B1 (ko) 2004-09-22

Family

ID=18584290

Family Applications (8)

Application Number Title Priority Date Filing Date
KR10-2004-7008606A KR100465074B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008607A KR100465075B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008602A KR100465072B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008598A KR100468338B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008605A KR100465073B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008596A KR100465071B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2001-7014247A KR100449594B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008595A KR100465070B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치

Family Applications Before (6)

Application Number Title Priority Date Filing Date
KR10-2004-7008606A KR100465074B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008607A KR100465075B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008602A KR100465072B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008598A KR100468338B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008605A KR100465073B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치
KR10-2004-7008596A KR100465071B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR10-2004-7008595A KR100465070B1 (ko) 2000-03-09 2001-03-08 보조 변환을 이용한 블럭 암호 장치

Country Status (16)

Country Link
US (5) US7864950B2 (ko)
EP (7) EP1686722B1 (ko)
JP (3) JP4127472B2 (ko)
KR (8) KR100465074B1 (ko)
CN (5) CN100557663C (ko)
AT (3) ATE419692T1 (ko)
AU (5) AU767323B2 (ko)
CA (5) CA2449669C (ko)
DE (3) DE60137269D1 (ko)
DK (7) DK1193665T3 (ko)
ES (7) ES2329819T3 (ko)
MX (1) MXPA01011323A (ko)
NO (1) NO333209B1 (ko)
SG (4) SG124293A1 (ko)
TW (1) TWI275049B (ko)
WO (1) WO2001067425A1 (ko)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK1193665T3 (da) * 2000-03-09 2012-04-02 Mitsubishi Electric Corp Blokkrypteringsindretning, som anvender hjælpekonvertering
JP3724399B2 (ja) * 2001-01-23 2005-12-07 株式会社日立製作所 疑似乱数生成装置またはそれを用いた暗号復号処理装置
US7269615B2 (en) 2001-12-18 2007-09-11 Analog Devices, Inc. Reconfigurable input Galois field linear transformer system
US7283628B2 (en) * 2001-11-30 2007-10-16 Analog Devices, Inc. Programmable data encryption engine
US7508937B2 (en) * 2001-12-18 2009-03-24 Analog Devices, Inc. Programmable data encryption engine for advanced encryption standard algorithm
JP4128395B2 (ja) * 2002-05-23 2008-07-30 三菱電機株式会社 データ変換装置
JP3503638B1 (ja) * 2002-09-26 2004-03-08 日本電気株式会社 暗号装置及び暗号プログラム
DE10345457A1 (de) * 2003-09-30 2005-04-28 Infineon Technologies Ag Verfahren und Vorrichtung zur Ver- und Entschlüsselung
US7545928B1 (en) * 2003-12-08 2009-06-09 Advanced Micro Devices, Inc. Triple DES critical timing path improvement
US7580519B1 (en) 2003-12-08 2009-08-25 Advanced Micro Devices, Inc. Triple DES gigabit/s performance using single DES engine
US7257225B2 (en) * 2003-12-29 2007-08-14 American Express Travel Related Services Company, Inc. System and method for high speed reversible data encryption
JP3933647B2 (ja) * 2004-05-10 2007-06-20 シャープ株式会社 消費電力解析防止機能つき半導体装置
US7885405B1 (en) 2004-06-04 2011-02-08 GlobalFoundries, Inc. Multi-gigabit per second concurrent encryption in block cipher modes
US7526085B1 (en) 2004-07-13 2009-04-28 Advanced Micro Devices, Inc. Throughput and latency of inbound and outbound IPsec processing
US7461108B2 (en) * 2004-09-14 2008-12-02 Panasonic Corporation Barrel shift device
US7783037B1 (en) 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
JP4859536B2 (ja) * 2006-05-30 2012-01-25 三菱電機株式会社 データ変換装置
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) * 2006-09-01 2008-03-13 Sony Corp データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5050454B2 (ja) * 2006-09-01 2012-10-17 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
CN100436555C (zh) * 2006-09-06 2008-11-26 深圳市永仁包装印刷材料有限公司 一种水溶性金银墨及其制备方法
JP5055993B2 (ja) 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8036377B1 (en) * 2006-12-12 2011-10-11 Marvell International Ltd. Method and apparatus of high speed encryption and decryption
JP4857230B2 (ja) * 2007-03-30 2012-01-18 株式会社日立製作所 疑似乱数生成装置及びそれを用いた暗号化処理装置
US7890565B2 (en) * 2007-04-30 2011-02-15 Lsi Corporation Efficient hardware implementation of tweakable block cipher
CN100495961C (zh) 2007-11-19 2009-06-03 西安西电捷通无线网络通信有限公司 一种基于分组密码算法的加密处理方法
CN100581101C (zh) 2007-11-19 2010-01-13 西安西电捷通无线网络通信有限公司 一种基于分组密码算法的加密处理设备
JP5272417B2 (ja) * 2008-01-21 2013-08-28 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
US20090186966A1 (en) * 2008-01-22 2009-07-23 Sabic Innovative Plastics Ip B.V. Thermoplastic polyestercarbonate composition
JP5200949B2 (ja) * 2009-01-16 2013-06-05 富士通株式会社 暗号処理装置
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
WO2011036745A1 (ja) * 2009-09-24 2011-03-31 株式会社東芝 鍵スケジュール装置および方法
JP2011130340A (ja) * 2009-12-21 2011-06-30 Kddi Corp ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
KR101334040B1 (ko) * 2010-01-20 2013-11-28 한국전자통신연구원 대칭키 암호화 시스템의 마스킹 연산 방법 및 장치
JP5539024B2 (ja) * 2010-05-27 2014-07-02 キヤノン株式会社 データ暗号化装置およびその制御方法
US8611540B2 (en) * 2010-06-23 2013-12-17 Damaka, Inc. System and method for secure messaging in a hybrid peer-to-peer network
US20120079462A1 (en) * 2010-09-24 2012-03-29 SoftKrypt LLC Systems and methods of source software code obfuscation
FR2966953B1 (fr) * 2010-11-02 2015-08-28 St Microelectronics Rousset Procede de contremesure cryptographique par derivation d'une donnee secrete
US8958550B2 (en) * 2011-09-13 2015-02-17 Combined Conditional Access Development & Support. LLC (CCAD) Encryption operation with real data rounds, dummy data rounds, and delay periods
JP5481455B2 (ja) * 2011-09-27 2014-04-23 株式会社東芝 暗号処理装置
JP5338945B2 (ja) * 2012-05-22 2013-11-13 ソニー株式会社 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5772934B2 (ja) * 2013-12-02 2015-09-02 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
CN105215593A (zh) * 2014-07-01 2016-01-06 长治市澳瑞特欣鑫健身器材有限公司 一种篮圈焊接模具
CN104917610B (zh) * 2015-06-15 2018-03-06 上海交通大学 基于量子真随机数的通信中继服务器安全系统及方法
KR20170002836A (ko) 2015-06-30 2017-01-09 주식회사 피엔아이티 Nfc를 이용한 미아방지용 캐릭터 목걸이.
US11070358B2 (en) 2015-12-15 2021-07-20 Koninklijke Philips N.V. Computation device and method
US10157289B2 (en) * 2016-09-26 2018-12-18 Bank Of America Corporation Progressive key rotation for format preserving encryption (FPE)
US20220060318A1 (en) * 2018-10-10 2022-02-24 Nippon Telegraph And Telephone Corporation Secure right shift computation system, secure division system, methods therefor, secure computation apparatus, and program
CN109756231B (zh) * 2018-12-27 2023-01-31 北京思朗科技有限责任公司 循环移位处理装置及方法
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
KR20230110668A (ko) 2022-01-16 2023-07-25 주식회사 네이처라인즈 반려동물용 휠 운동장치

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2641285B2 (ja) * 1988-05-23 1997-08-13 三菱電機株式会社 ガロア体除算回路及び乗除算共用回路
JPH0651698A (ja) * 1992-06-03 1994-02-25 Nippon Telegr & Teleph Corp <Ntt> データ攪拌装置およびデータ攪拌方法
US5351299A (en) * 1992-06-05 1994-09-27 Matsushita Electric Industrial Co., Ltd. Apparatus and method for data encryption with block selection keys and data encryption keys
US5623549A (en) * 1995-01-30 1997-04-22 Ritter; Terry F. Cipher mechanisms with fencing and balanced block mixing
US5673319A (en) * 1995-02-06 1997-09-30 International Business Machines Corporation Block cipher mode of operation for secure, length-preserving encryption
US5594797A (en) * 1995-02-22 1997-01-14 Nokia Mobile Phones Variable security level encryption
JP2772937B2 (ja) * 1995-07-11 1998-07-09 太陽誘電株式会社 チップ型電子部品の製造方法
US6201869B1 (en) * 1995-09-05 2001-03-13 Mitsubishi Denki Kabushiki Kaisha Data transformation apparatus and data transformation method
JPH0990870A (ja) * 1995-09-27 1997-04-04 Nec Corp 基本変換方法、暗号化方法、基本変換回路および暗号装置
JPH09269727A (ja) * 1996-03-29 1997-10-14 Toshiba Corp 暗号化方法および暗号化装置
US6058476A (en) * 1996-05-22 2000-05-02 Matsushita Electric Industrial Co., Inc. Encryption apparatus for ensuring security in communication between devices
US6028939A (en) 1997-01-03 2000-02-22 Redcreek Communications, Inc. Data security system and method
JP3515306B2 (ja) * 1997-01-29 2004-04-05 日本電信電話株式会社 逆元演算装置
US6459792B2 (en) * 1997-04-23 2002-10-01 Matsushita Electric Industrial Co., Ltd. Block cipher using key data merged with an intermediate block generated from a previous block
JP3351305B2 (ja) * 1997-08-07 2002-11-25 日本電気株式会社 暗号装置及び暗号装置を実現するプログラムを記録したコンピューターが読みとり可能な記録媒体
US6510228B2 (en) 1997-09-22 2003-01-21 Qualcomm, Incorporated Method and apparatus for generating encryption stream ciphers
KR100296958B1 (ko) * 1998-05-06 2001-09-22 이석우 블록 데이터 암호화 장치
US6269163B1 (en) 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
JP3600454B2 (ja) * 1998-08-20 2004-12-15 株式会社東芝 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
JP2000066586A (ja) 1998-08-24 2000-03-03 Toshiba Corp データ処理装置及び通信システム並びに記録媒体
TW556111B (en) 1999-08-31 2003-10-01 Toshiba Corp Extended key generator, encryption/decryption unit, extended key generation method, and storage medium
DK1193665T3 (da) * 2000-03-09 2012-04-02 Mitsubishi Electric Corp Blokkrypteringsindretning, som anvender hjælpekonvertering

Also Published As

Publication number Publication date
ATE419692T1 (de) 2009-01-15
DK1689114T3 (da) 2009-09-07
US7760870B2 (en) 2010-07-20
EP1686722B1 (en) 2016-12-07
EP1193665A1 (en) 2002-04-03
KR100449594B1 (ko) 2004-09-22
KR100465073B1 (ko) 2005-01-13
WO2001067425A1 (fr) 2001-09-13
ATE431983T1 (de) 2009-06-15
NO20015461L (no) 2002-01-07
AU2003213315A1 (en) 2003-08-14
DK1686721T3 (da) 2013-03-25
NO333209B1 (no) 2013-04-08
TWI275049B (en) 2007-03-01
DK1689113T3 (da) 2013-03-25
CN1734527A (zh) 2006-02-15
CA2373432C (en) 2005-02-08
CN1734527B (zh) 2011-04-06
AU2003213318B2 (en) 2004-07-15
EP1689114A3 (en) 2006-09-06
JP2007041620A (ja) 2007-02-15
EP1689113A2 (en) 2006-08-09
CN1734526B (zh) 2013-09-18
EP1689114A2 (en) 2006-08-09
AU2003213315B2 (en) 2004-04-01
US7822196B2 (en) 2010-10-26
AU2003213317A1 (en) 2003-08-14
EP1686719A1 (en) 2006-08-02
DE60139280D1 (de) 2009-08-27
DK1193665T3 (da) 2012-04-02
ES2327263T3 (es) 2009-10-27
AU2003213312C1 (en) 2004-11-25
EP1193665A4 (en) 2006-06-14
AU2003213312A1 (en) 2003-08-14
SG124292A1 (en) 2006-08-30
EP1686721B1 (en) 2013-03-06
CN100392688C (zh) 2008-06-04
SG124294A1 (en) 2006-08-30
EP1689113B1 (en) 2013-03-06
ES2616544T3 (es) 2017-06-13
KR100465074B1 (ko) 2005-01-13
AU2003213317B2 (en) 2004-04-01
KR20040066874A (ko) 2004-07-27
KR100465070B1 (ko) 2005-01-13
DK1686720T3 (da) 2009-07-20
CA2449665C (en) 2005-06-21
AU2003213312B2 (en) 2004-03-25
KR20040066870A (ko) 2004-07-27
KR100465071B1 (ko) 2005-01-13
CA2449662C (en) 2004-08-17
CN100583192C (zh) 2010-01-20
DE60138773D1 (de) 2009-07-02
KR20040066875A (ko) 2004-07-27
EP1686722A1 (en) 2006-08-02
CN1734526A (zh) 2006-02-15
CN1737880A (zh) 2006-02-22
US20060045265A1 (en) 2006-03-02
JP4598744B2 (ja) 2010-12-15
SG124291A1 (en) 2006-08-30
DE60137269D1 (de) 2009-02-12
EP1686721A1 (en) 2006-08-02
CA2449672C (en) 2005-05-17
ES2382454T3 (es) 2012-06-08
MXPA01011323A (es) 2003-08-01
ES2319560T3 (es) 2009-05-08
KR20040066872A (ko) 2004-07-27
ES2405942T3 (es) 2013-06-04
KR20040066877A (ko) 2004-07-27
SG124293A1 (en) 2006-08-30
EP1193665B8 (en) 2012-07-11
EP1689114B1 (en) 2009-07-15
AU4105801A (en) 2001-09-17
EP1686720A1 (en) 2006-08-02
CA2449669A1 (en) 2001-09-13
US20060050873A1 (en) 2006-03-09
CA2449672A1 (en) 2001-09-13
US20060050874A1 (en) 2006-03-09
CA2449669C (en) 2005-02-15
KR100468338B1 (ko) 2005-01-28
EP1686719B1 (en) 2008-12-31
CA2449665A1 (en) 2001-09-13
EP1193665B1 (en) 2012-02-15
AU2003213318A1 (en) 2003-08-14
ATE545991T1 (de) 2012-03-15
CA2449662A1 (en) 2001-09-13
KR100465072B1 (ko) 2005-01-13
US7697684B2 (en) 2010-04-13
DK1686719T3 (da) 2009-03-30
AU767323B2 (en) 2003-11-06
ES2329819T3 (es) 2009-12-01
KR100465075B1 (ko) 2005-01-13
JP4127472B2 (ja) 2008-07-30
ES2407463T3 (es) 2013-06-12
DK1686722T3 (en) 2017-02-20
JP5242642B2 (ja) 2013-07-24
EP1689113A3 (en) 2006-08-30
NO20015461D0 (no) 2001-11-08
EP1686720B1 (en) 2009-05-20
JP2011018065A (ja) 2011-01-27
US7760871B2 (en) 2010-07-20
US7864950B2 (en) 2011-01-04
CN100557663C (zh) 2009-11-04
CN1364284A (zh) 2002-08-14
CN1808526A (zh) 2006-07-26
US20020159599A1 (en) 2002-10-31
US20060050872A1 (en) 2006-03-09
CA2373432A1 (en) 2001-09-13
KR20040066871A (ko) 2004-07-27
KR20040066876A (ko) 2004-07-27

Similar Documents

Publication Publication Date Title
KR20020016624A (ko) 보조 변환을 이용한 블럭 암호 장치
JP2007041620A5 (ko)

Legal Events

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

Payment date: 20120821

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130822

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170822

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20190903

Year of fee payment: 16