KR100806468B1 - 데이터 변환 장치, 데이터 변환 방법 및 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 - Google Patents

데이터 변환 장치, 데이터 변환 방법 및 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR100806468B1
KR100806468B1 KR1020047018842A KR20047018842A KR100806468B1 KR 100806468 B1 KR100806468 B1 KR 100806468B1 KR 1020047018842 A KR1020047018842 A KR 1020047018842A KR 20047018842 A KR20047018842 A KR 20047018842A KR 100806468 B1 KR100806468 B1 KR 100806468B1
Authority
KR
South Korea
Prior art keywords
key
data
input
selector
conversion
Prior art date
Application number
KR1020047018842A
Other languages
English (en)
Other versions
KR20050004187A (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 KR20050004187A publication Critical patent/KR20050004187A/ko
Application granted granted Critical
Publication of KR100806468B1 publication Critical patent/KR100806468B1/ko

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Holo Graphy (AREA)
  • Document Processing Apparatus (AREA)

Abstract

데이터의 암호화/복호를 행하는 데이터 변환 장치중에 존재하는 부 변환부(330)는, 데이터 변환 기능과 함께 데이터 전송 기능 또는 키 전송 기능을 갖고, 데이터 변환 기능과 데이터 또는 키 전송 기능을 전환하여, 데이터의 변환과 함께 주 변환부(320)에서 비선형 변환된 데이터의 전송, 또는, 키 KL 레지스터(240)로부터 출력된 키의 전송을 행한다.

Description

데이터 변환 장치, 데이터 변환 방법 및 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체{DATA CONVERSION DEVICE AND DATA CONVERSION METHOD}
본 발명은 데이터의 암호화 또는 데이터의 복호를 하는 데이터 변환 장치 및 그 방법에 관한 것이다.
관련된 기술에 대하여 설명한다.
도 56은 관련된 데이터 변환 장치의 구성 및 동작도이다.
도 56에 도시하는 바와 같이, 블럭 암호 처리를 하는 데이터 변환 장치는 키 생성부(20)와 데이터 교반부(30)로 구성된다.
키 생성부(20)는 데이터의 암호화/복호를 하기 위한 키를 생성하는 키 생성부이다.
데이터 교반부(30)는 입력된 데이터를 암호화 또는 복호하는 부이다.
키 생성부(20)는 중간키 생성부(40)와 키 스케줄부(210)로 구성된다. 중간키 생성부(40)는, 비밀키를 입력하고, 입력한 비밀키로부터 중간키(키 KL)와 출력키(키 KA)를 생성하는 부이다. 키 스케줄부(210)는 중간키 생성부(40)에 의해 생 성된 중간키(키 KL)와 출력키(키 KA)를 입력하고(키 KLL, 키 KLH, 키 KAL, 키 KAH), 입력한 각각의 키로부터 데이터 교반부(30)로 공급해야 할 키를 스케줄링한다. 이와 같이, 키 생성부(20)에서는, 중간키 생성부(40)와 키 스케줄부(210)에 의해 키의 생성과 키의 스케줄링을 하고 있다.
데이터 교반부(30)에서는, P(평문)를 입력한 경우에는, 데이터를 암호화하는 데이터 변환을 행하고, 변환된 데이터를 C(암호문)로서 출력한다. 또한, 데이터 교반부(30)는, P(암호문)를 입력한 경우에는, 데이터 복호하는 데이터 변환을 행하고, 변환된 데이터를 C(복호문)로서 출력한다. 이와 같이, 데이터 교반부(30)는 데이터의 암호화 처리와 복호 처리를 실행한다.
데이터 교반부(30)에서는, 주 변환부(320)와 부 변환부(330)가 직렬로 접속되어 있다.
주 변환부(320)는 데이터의 비선형 변환을 행하는 부이다. 즉, 주 변환부(320)는, 데이터의 비선형 변환을 행하는 F 함수를 1단 또는 복수단 갖거나, 또는, F 함수의 일부를 갖고, F 함수 또는 F 함수의 일부를 이용하여 데이터의 비선형 변환을 한다. 도 57에서는, 주 변환부(320)는 F 함수를 1단 이상 갖고 있다.
부 변환부(330)는, 데이터의 선형에 의한 변환을 행하는 데이터 정 변환부(FL)와 데이터 정 변환부(FL)와는 역의 변환을 행하는 데이터 역 변환부(FL-1) 중 적어도 어느 하나를 갖고, 데이터 정 변환부(FL) 또는 데이터 역 변환부(FL-1)를 이용하여 입력된 데이터를 입력된 키에 의해 선형 변환하는 부이다.
선택기(310)는, 주 변환부(320)와 부 변환부(330)와 P(평문 또는 암호문)와 키를 입력 신호로 하여 입력 신호 중에서 하나의 신호를 선택하는 선택기이다. 도 56에 나타내는 선택기(310)는, 4개의 입력 신호 중에서 하나의 출력 신호를 선택하는 선택기를 두 개의 입력 신호로부터 하나의 출력 신호를 출력하는 2-1 선택기 환산으로 3개 가지고 있다.
연산 레지스터(350)는 주 변환부(320) 및 부 변환부(330) 및 C(암호문 또는 복호문)로서 출력하는 데이터를 소정 기간 유지하는 메모리이다.
이와 같이, 데이터 교반부(30)에서는, 입력 데이터인 P(평문 또는 암호문)를 주 변환부(320)에 의해 비선형 변환하고, 부 변환부(330)에 의해 선형 변환하는 것을 복수회 교대로 반복하는 것에 의해 데이터의 암호화/복호 처리하여, C(암호문 또는 복호문)로서 출력한다.
주 변환부(320)의 내부 구성에 대하여 설명한다.
도 57은 주 변환부(320)의 내부 구성의 일례이다. 도 57에서는, 주 변환부(320)는 6개의 F 함수부로 구성되어 있다. 여기서는, F 함수부가 1단의 F 함수 처리를 하는 회로로 구성되어 있는 것으로 가정하면, 도 57에 나타내는 주 변환부(320)에서는 6단의 F 함수에 의한 비선형 데이터 변환 처리를 하는 것으로 된다.
6단의 F 함수 처리 회로에 대하여, 주 변환부(320)는 6개의 F 함수 처리 회로를 가지고 있더라도 좋고, 하나의 F 함수 처리 회로를 가져, 6회 F 함수에 의한 처리를 반복하는 것에 따라, 6단의 F 함수에 의한 데이터 처리를 하더라도 좋다.
주 변환부(320)에서는, 우선, 입력 데이터중 분할된 상위 데이터가 F 함수부 (321a)에 입력된다. 또한, 키 스케줄부(210)에 의해 스케줄링된 키 1도 입력된다. F 함수부(321a)에서는, 상술한 대로, 키를 이용하여 상위 입력 데이터를 비선형 변환한다. EXOR 회로(322a)에서는, 비선형 변환된 데이터와 하위 입력 데이터의 배타적 논리합이 취해진다. EXOR 회로(322a)로부터 출력된 데이터는 F 함수부(321b)의 입력 데이터로 된다. F 함수부(321b)는, F 함수부(321a)와 마찬가지로, 비선형 변환 처리를 하고, EXOR 회로(322b)에 의해 변환된 데이터와 상위 입력 데이터의 배타적 논리합이 취해진다. EXOR 회로(322b)로부터 출력된 데이터는 F 함수부(321c)의 입력 데이터로 된다. 이와 같이, F 함수부(321a), EXOR 회로(322a)에 의한 처리와 동일한 처리가 F 함수부(321b)와 EXOR 회로(322b), F 함수부(321c)와 EXOR 회로(322c), F 함수부(321d)와 EXOR 회로(322d), F 함수부(321e)와 EXOR 회로(322e), F 함수부(321f)와 EXOR 회로(322f)에 의해 행해진다. 이렇게 하여, F 함수부에 의한 데이터의 비선형 변환을 6단(또는 6회 반복) 행한 후, 변환된 데이터를 출력한다.
이와 같이, 상위 데이터와 하위 데이터로 분할된 데이터중 어느 한쪽을 입력하고, 입력한 데이터를 비선형에 의해 데이터 변환하고, 데이터 변환한 상위 데이터와 하위 데이터중 어느 한쪽을 출력하고, 출력한 상위 데이터와 하위 데이터중 어느 한쪽과 상위 데이터와 하위 데이터중 다른 쪽을 배타적 논리합 연산하며, 배타적 논리합 연산한 데이터와, 상기 F 함수부에 입력되지 않은 상위 데이터와 하위 데이터의 다른 쪽을 교체하여 출력함으로써 상위 데이터와 하위 데이터를 교체하여 출력하는 것을 특징으로 하는 비선형 변환 처리 구조를 FEISTEL 구조라고 부른다.
데이터를 랜덤화하는 대표적인 구조로서는, 상기 FEISTEL 구조와 SPN(Substitution Permutation Network) 구조가 존재한다. SPN 구조를 갖는 주 변환부(320)는 병렬 처리에 우수하다고 한다. 한편, FEISTEL 구조를 갖는 주 변환부(320)는 하드웨어의 규모를 소형화하는 것에 우수하다고 한다.
또, SPN 구조는, FEISTEL 구조와 같이, 입력 데이터를 분할하지는 않고, S층(비선형층)과 P층(선형층)으로 구성되는 F 함수를 반복하는 구조를 가진다.
부 변환부(330)의 내부 구성에 대하여 설명한다.
도 58은 부 변환부(330)를 구성하는 회로를 나타내는 도면이다.
도 58의 부 변환부(330)는 데이터 정 변환부(50)와 데이터 역 변환부(70)를 갖고 있다.
데이터 정 변환부(50)에서는, AND 회로(54)에 의해 입력된 64 비트 데이터중 상위 32 비트 데이터와 키 1의 논리곱이 취해지고, 1 비트 왼쪽으로 순회 시프트되어, EXOR 회로(55)에 의해 입력 데이터의 하위 32 비트와의 배타적 논리합이 취해지고, 그 결과가 하위 32 비트의 출력 신호로서 출력되고, 또한, OR 회로(57)에 입력된다. OR 회로(57)에서는 키 2와의 논리합이 취해지고, EXOR 회로(56)에 의해 입력 데이터의 상위 32 비트 데이터와의 배타적 논리합이 취해지고, 그 결과가 상위 32 비트의 출력 신호로서 출력된다. 이렇게 하여, 64 비트의 입력 데이터가 선형 변환되어, 64 비트의 출력 신호로서 출력된다.
데이터 역 변환부(70)에서는, OR 회로(74)에 의해 입력된 64 비트 데이터중 하위 32 비트 데이터와 키 3의 논리합이 취해지고, EXOR 회로(75)에 의해 입력 데 이터의 상위 32 비트와의 배타적 논리합이 취해지고, 그 결과가 상위 32 비트의 출력 신호로서 출력되고, 또한, AND 회로(77)에 입력된다. AND 회로(77)에서는 키 4와의 논리곱이 취해지고, 1 비트 왼쪽으로 순회 시프트되어, EXOR 회로(76)에 의해 입력 데이터의 하위 32 비트 데이터와의 배타적 논리합이 취해지고, 그 결과가 하위 32 비트의 출력 신호로서 출력된다. 이렇게 하여, 64 비트의 입력 데이터가 데이터 정 변환부(50)와 데이터 역 변환부(70)에 의해 선형 변환되어, 64 비트의 출력 신호로서 출력된다. 또, 키 1∼키 4는 키 스케줄부(210)로부터 공급된다.
도 59는, 부 변환부(330)의 다른 일례로서, 데이터 정 변환부(50)와 데이터 역 변환부(70)를 공용한 회로를 나타내는 도면이다.
도 59에서는, 데이터 정 변환부(50)와 데이터 역 변환부(70)를 전환하는 전환 신호를 입력함으로써, 데이터 정 변환부(50)와 데이터 역 변환부(70)가 전환된다. 즉, 도 59에 나타내는 공용 회로에서는, 전환 신호를 입력함으로써 2-1 선택기(99a)가 입력 신호 A와 입력 신호 E를 전환하고, 2-1 선택기(99b)가 입력 신호 C와 입력 신호 F를 전환한다.
우선, 공용 회로가 데이터 정 변환부(50)로서 동작하는 경우를 설명한다.
2-1 선택기(99a)가 입력 신호 E와 입력 신호 A 중에서 입력 신호 A를 선택하여, 출력 신호 B로서 출력하며, AND 회로(101)에 의해 키 1과의 논리곱을 취해, 1 비트 왼쪽으로 순회 시프트한 후, EXOR 회로(91)에 의해 입력 데이터의 하위 32 비트와의 배타적 논리합이 취해지고, 하위 32 비트의 출력 신호로서 출력되고, 또한, 입력 신호 C로서 2-1 선택기(99b)에 입력된다. 2-1 선택기(99b)에서는, 입력 신호 C와 입력 신호 F 중에서 입력 신호 C를 선택하고, 출력 신호 D로서 출력한다. OR 회로(92)에서는, 출력 신호 D와 키 2의 논리합이 취해지고, EXOR 회로(93)에 의해 입력 데이터의 상위 32 비트 데이터와의 배타적 논리합이 취해지고, 상위 32 비트의 출력 신호로서 출력된다.
다음에, 공용 회로가 데이터 역 변환부(70)로서 동작하는 경우를 설명한다.
2-1 선택기(99b)에서는 입력 신호 C와 입력 신호 F 중에서 입력 신호 F를 선택하여, 출력 신호 D로서 출력하며, OR 회로(92)에 의해 키 2와의 논리합이 취해지고, EXOR 회로(93)에 의해 입력 데이터의 상위 32 비트와의 배타적 논리합이 취해지며, 상위 32 비트의 출력 신호로서 출력되고, 또한, 입력 신호 E로서 2-1 선택기(99a)에 입력된다. 2-1 선택기(99a)에서는, 입력 신호 A와 입력 신호 E 중에서 입력 신호 E를 선택하여, 출력 신호 B로서 출력한다. AND 회로(101)에서는, 출력 신호 B와 키 1의 논리합이 취해지고, 1 비트 왼쪽으로 순회 시프트한 후, EXOR 회로(91)에 의해 입력 데이터의 하위 32 비트와의 배타적 논리합이 취해지고, 하위 32 비트의 출력 신호로서 출력된다.
도 60은, 도 56이 나타내는 데이터 변환 장치에 대하여, 주 변환부(320)가 1단 미만의 F 함수를 처리하는 1/2x(x≥1)F 함수를 갖고 있는 경우의 데이터 변환 장치를 나타내는 도면이다.
주 변환부(320)는, 예컨대, 1/2F 함수를 갖고 있는 경우, 주 변환부(320)로부터 부 변환부(330)와 선택기(310)와 연산 레지스터(350)를 거쳐 주 변환부(320) 에 이르는 패스에 의해 2 사이클의 처리를 하는 것에 의해, 데이터를 F 함수에 의해 비선형 변환하는 처리가 1회 가능해진다. 이러한 처리를 하기 위해, 도 60에 나타내는 데이터 변환 장치에서는, 도 56에 나타내는 데이터 변환 장치와 비교하여, 연산 레지스터(350)로부터 선택기(310)에의 패스가 부가되어 있다.
연산 레지스터(350)로부터 선택기(310)에의 패스를 이용한 주 변환부(320)의 동작에 대하여 설명한다.
도 61은 주 변환부(320)의 내부 구성에 대하여 설명한다.
도 61에 도시하는 바와 같이, 주 변환부(320)는 1단 미만의 F 함수를 처리하는 일례로서 1/2의 F 함수 처리를 하는 12단의 F 함수부(1/2F 함수)로 구성되어 있다. 도 61의 주 변환부(320)에서는, 도 57의 주 변환부(320)의 F 함수부(321a)와 EXOR 회로(322a)를 이용한 데이터 변환을 F 함수부(1321a)와 F 함수부(1321b)와 EXOR 회로(1322a)와 EXOR 회로(1322b)를 이용하여 실행한다.
도 61의 주 변환부(320)에서는, 우선, 1단째의 처리를 설명한다. 상위 입력 데이터중 분할된 상위 데이터는 F 함수부(1321a)에 입력된다. 또한, 키 스케줄부(210)에 의해 스케줄링된 키 1의 상위 비트로 이루어지는 키 1H도 입력된다. F 함수부(1321a)는, 키 1H를 이용한 상기 상위 데이터의 비선형 변환을 한다. 변환된 데이터는 EXOR 회로(1322a)에 입력되고, 하위 입력 데이터중 분할된 상위 데이터와의 배타적 논리합이 취해진다.
EXOR 회로(1322a)로부터 출력된 데이터는, EXOR 회로(1322b)에서의 데이터 처리가 이루어질 때까지, 연산 레지스터(350)에 중간 데이터로서 유지해 놓는다.
다음에, 2단째의 처리를 설명한다. 상위 입력 데이터중 분할된 하위 데이터가 F 함수부(1321b)에 입력된다. 또한, 키 스케줄부(210)에 의해 스케줄링된 키 1의 하위 비트로 이루어지는 키 1L도 입력된다. F 함수부(1321b)는 키 1L을 이용한 상기 하위 데이터의 비선형 변환을 한다. 변환된 데이터는 EXOR 회로(1322b)에 입력된다.
여기서, 먼저 연산 레지스터(350)에 유지한 EXOR 회로(1322a)로부터의 출력 데이터인 중간 데이터를 EXOR 회로(1322b)에 입력할 필요가 발생한다. 그래서, 연산 레지스터(350)로부터 선택기(310)에의 패스가 필요하게 된다. 즉, 연산 레지스터(350)로부터 선택기(310)에의 패스를 이용하는 것에 따라 연산 레지스터(350)에 유지된 중간 데이터를 선택기(310)에 입력하는 것이 가능해진다. 선택기(310)는 입력된 중간 데이터를 선택한다. 중간 데이터는 연산 레지스터(350)를 거쳐 주 변환부(320)에 입력되고, EXOR 회로(1322b)에 의해, F 함수부(1321b)의 출력 데이터와의 배타적 논리합이 취해진다. EXOR 회로(1322b)로부터 출력된 데이터는 F 함수부(1321c)의 입력 데이터로 된다.
이와 같이, F 함수부(1321a), EXOR 회로(1322a), F 함수부(1321b), EXOR 회로(1322b)에 의한 처리와 동일한 처리가 F 함수부(1321c), EXOR 회로(1322c), F 함수부(1321d), EXOR 회로(1322d)에 의한 처리, F 함수부(1321e), EXOR 회로(1322e), F 함수부(1321f), EXOR 회로(1322f)에 의한 처리, F 함수부(1321g), EXOR 회로(1322g), F 함수부(1321h), EXOR 회로(1322h)에 의한 처리, F 함수부(1321i), EXOR 회로(1322i), F 함수부(1321j), EXOR 회로(1322j)에 의한 처리, F 함수부(1321k), EXOR 회로(1322k), F 함수부(1321l), EXOR 회로(1322l)에 의한 처리로서 행해진다. 이렇게 하여, F 함수부에 의한 데이터의 비선형 변환을 12단(또는 12회 반복) 행한 후, 변환된 데이터를 출력한다.
(과제 1)
도 56 및 도 60에 나타내는 데이터 변환 장치에서는, 키 생성부(20)가 데이터의 암호화/복호에 사용하는 키를 생성하기 위해 주 변환부(320)의 일부와 부 변환부(330)의 일부를 사용한다. 키 생성에 주 변환부(320)의 일부와 부 변환부(330)의 일부를 사용하는 것은 데이터 변환 장치 전체의 소형화를 도모하기 위해서이다.
이 키 생성 동작의 상세는 후술하지만, 이와 같이 주 변환부(320)의 일부와 부 변환부(330)의 일부를 사용하여 키를 생성하기 위해, 도 56에 도시하는 바와 같이, 키 KL 레지스터(240)로부터 출력한 중간키(키 KL)를 선택기(310)에 입력시키는 패스가 필요하게 된다. 따라서, 키 KL 레지스터(240)로부터 선택기(310)에의 패스가 증가하는 것에 의해, 데이터 변환 장치의 소형화가 저해되고 있었다.
또한, 키 KL 레지스터(240)로부터 선택기(310)에의 패스를 이용한 선택기(310)에의 입력 신호수가 증가하여, 선택기(310)를 구성하는 선택기 수를 증가시키는 요인으로 되고 있었다. 이 때문에, 그 점에서도 데이터 변환 장치의 소형화를 저해하고 있었다.
또한, 상술한 바와 같이 복수 사이클로 F 함수에 의한 1회의 데이터 변환을 행하는 경우에는, 일정 기간 유지한 중간 데이터를 주 변환부(320)에 입력할 필요가 있다. 따라서, 중간 데이터를 연산 레지스터(350)로부터 선택기(310)로 보내는 패스가 증가하는 것에 의해 데이터 변환 장치의 소형화가 저해되고 있었다.
또한, 연산 레지스터(350)로부터 선택기(310)에의 패스를 이용한 선택기(310)에의 입력 신호수가 증가하기 때문에, 선택기(310)를 구성하는 선택기 수를 증가시키는 요인으로 되어 있었다. 따라서, 그 점에서도 데이터 변환 장치의 소형화를 저해하고 있었다.
(과제 2)
도 56과 도 60에 나타내는 데이터 변환 장치의 데이터 교반부(30)에서는, 주 변환부(320)와 부 변환부(330)가 직렬로 접속되어 있었다. 따라서, 주 변환부(320)로부터 부 변환부(330)를 거친 후에 선택기(310)를 거쳐 연산 레지스터(350)를 통해 주 변환부(320)로 되돌아가는 패스에 의해, 동작 주파수가 일의적으로 결정되어, 동작 주파수의 향상을 저해하고 있었다. 그 때문에, 데이터 교반부(30)중에서의 데이터 처리를 위한 최대 패스를 짧게 함으로써 동작 주파수를 올려, 처리 속도를 비약적으로 향상시키는 것이 요망되고 있었다.
또한, 주 변환부(320)를 통과하지 않고 선택기(310) 및 연산 레지스터(350)로부터 출력한 데이터를 부 변환부(330)에 입력시키는 패스가 존재하지 않기 때문에, 데이터 변환 장치의 내부 구성 변경에 유연하게 대응할 수 없고, 전체가 실행할 수 있는 동작에 유연함이 결여되는 결과로 되어 있었다.
또한, 상술한 바와 같이 복수 사이클로 F 함수에 의한 1회의 데이터 변환을 행하는 경우에는, 1 사이클로 변환 대상으로 되는 데이터는 입력 데이터의 일부이다(1/2F 함수에서는, 입력 데이터의 1/2). 이 때문에, 입력 데이터의 일부의 변환 데이터를 연산 레지스터(350)에 유지하여, 일정 기간후에 부 변환부(330)에 보내기 위한 패스를 데이터 교반부(30)중에 마련하거나, 또는, 일정 기간후에 주 변환부(320)를 전송하여 부 변환부(330)에 보내기 위한 전송 패스를 주 변환부(320)중에 마련해야 했다.
또한, 도 59에 나타내는 데이터 정 변환부(50)와 데이터 역 변환부(70)의 공용 회로를 이용한 경우에는, A→B→C→D→E→B→C…의 패스가 루프 회로에 상당한다. 이 때문에, 실제의 회로로 할 때에, 전환 신호의 전파 지연의 차에 의한 신호의 레이싱, 노이즈 등의 영향에 의해, 발신 회로로 되지 않는 고안이 필요하게 된다. 또한, 이러한 상기 루프 회로(FEEDBACK-LOOP 회로)를 가진 회로에는, 논리 합성 툴이 대응할 수 없어, 효율적으로 논리 합성이 행해지지 않는다는 문제가 발생하고 있었다.
본 발명은 데이터 변환 장치의 소형화를 목적으로 한다.
또한, 본 발명은 데이터 변환 장치의 동작 주파수의 향상을 목적으로 한다.
본 발명에 따른 데이터 변환 장치는, 키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터의 암호화와 데이터의 복호 중 적어도 어느 하나의 데이터 변환을 행하는 데이터 변환 장치로서,
상기 데이터 변환 장치는, 데이터를 변환하는 데이터 교반부와 입력한 키와 입력한 데이터 중 어느 하나를 전송할 것을 지시하고 있는 전송 신호를 제어하는 제어부를 구비하되,
상기 제어부는, 키와 데이터 중 어느 하나를 전송하는 경우에, 전송 신호를 출력하고,
상기 데이터 교반부는, 입력한 키를 사용하여 데이터를 변환함으로써 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하고, 또한, 상기 제어부에 의해 출력된 전송 신호를 입력한 경우에는 입력한 키와 입력한 데이터 중 적어도 어느 하나를 데이터 변환하지 않고 전송하는 부 변환부를 구비하는 것을 특징으로 한다.
상기 데이터 교반부는,
데이터를 입력하고, 입력한 데이터를 비선형으로 데이터 변환하는 주 변환부를 더 구비하고,
상기 제어부는, 데이터를 전송하는 경우에는 전송 신호로서 데이터 전송 신호를 출력하고,
상기 부 변환부는, 상기 제어부에 의해 출력된 데이터 전송 신호와 상기 주 변환부에 의해 데이터 변환된 데이터를 입력하고, 입력한 데이터 전송 신호에 따라 입력한 데이터를 전송하는 것을 특징으로 한다.
상기 데이터 변환 장치는,
키를 생성하는 키 생성부를 더 구비하고,
상기 제어부는, 키를 전송하는 경우에는 전송 신호로서 키 전송 신호를 출력하며,
상기 부 변환부는, 상기 제어부에 의해 출력된 키 전송 신호와 상기 키 생성부에 의해 생성된 키를 입력하고, 입력한 키 전송 신호에 따라 입력한 키를 전송하는 것을 특징으로 한다.
상기 키 생성부는,
비밀키를 입력하고, 입력한 비밀키로부터 중간키를 생성하는 중간키 생성부를 더 구비하고,
상기 부 변환부는, 상기 제어부에 의해 출력된 키 전송 신호를 입력한 경우에는, 입력한 키 전송 신호에 따라 상기 중간키 생성부가 생성한 중간키를 상기 주 변환부에 전송하며,
상기 주 변환부는 상기 부 변환부에 의해 전송된 중간키를 변환하여 출력하는 것을 1 이상 반복하고,
상기 부 변환부는 상기 주 변환부에 의해 출력되는 중간키를 변환하여 출력하는 것을 1 이상 반복하며,
상기 주 변환부와 상기 부 변환부의 적어도 어느 하나는 상기 중간키를 변환하여 출력하는 것을 1 이상 반복하고,
상기 주 변환부는, 상기 주 변환부와 상기 부 변환부의 적어도 어느 하나에 따라 출력된 중간키를 출력키로서 출력하며,
상기 중간키 생성부는, 상기 주 변환부에 의해 출력된 출력키를 입력함으로써, 중간키와 출력키로 이루어지는 확대키를 생성하는 것을 특징으로 한다.
상기 중간키 생성부는, 입력된 6개의 키 중에서 하나의 키를 선택하는 6-1 KL 선택기와 6-1 KL 선택기로부터 선택된 하나의 키를 중간키로서 유지하는 키 KL 레지스터를 갖고,
상기 6-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와, 상기 키 KL 레지스터에 의해 유지된 중간키와, 상기 키 KL 레지스터에 의해 유지된 중간키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키로 이루어지는 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하며,
상기 키 KL 레지스터는 상기 6-1 KL 선택기에 의해 선택된 키를 유지하고,
상기 부 변환부는, 상기 제어부로부터 출력된 키 전송 신호를 입력한 경우에는 상기 키 KL 레지스터에 유지된 키를 중간키로서 입력하고, 입력한 중간키를 전송하는 것을 특징으로 한다.
상기 중간키 생성부는, 입력된 4개의 키 중에서 하나의 키를 선택하는 4-1 선택기와 입력된 3개의 키 중에서 하나의 키를 선택하는 3-1 KL 선택기와 3-1 KL 선택기로부터 선택된 하나의 키를 중간키로서 유지하는 키 KL 레지스터를 갖고,
상기 4-1 선택기는, 상기 키 KL 레지스터에 의해 유지된 중간키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키를 입력하고, 입력한 4개의 키 중에서 하나의 키를 선택하고,
상기 3-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와 상기 4-1 선택 기에 의해 선택된 하나의 키와 상기 키 KL 레지스터에 유지된 중간키로 이루어지는 3개의 키를 입력하고, 입력한 3개의 키 중에서 하나의 키를 선택하며,
상기 키 KL 레지스터는 상기 3-1 KL 선택기에 의해 선택된 키를 유지하고,
상기 부 변환부는, 상기 제어부로부터 출력된 키 전송 신호를 입력한 경우에는, 상기 키 KL 레지스터에 유지된 키를 중간키로서 입력하고, 입력한 중간키를 전송하는 것을 특징으로 한다.
상기 키 생성부는,
상기 중간키 생성부에 의해 생성된 확대키와 소정의 정수를 입력하여, 소정의 조건에 따라 입력한 확대키와 소정의 정수 중 어느 하나를 상기 주 변환부와 상기 부 변환부의 적어도 어느 하나로 출력하는 키를 스케줄링하는 키 스케줄부를 더 구비하는 것을 특징으로 한다.
상기 부 변환부는, 데이터의 선형에 의한 데이터 변환을 행하는 데이터 정 변환부(FL)와 상기 데이터 정 변환부(FL)와 역의 데이터 변환을 행하는 데이터 역 변환부(FL-1) 중 적어도 어느 하나를 갖고,
상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1) 중 적어도 어느 하나는 데이터 변환을 행하고, 또한, 상기 제어부가 전송 신호를 출력한 경우에는, 상기 제어부가 출력한 전송 신호를 입력하고, 입력한 전송 신호에 따라 데이터와 키의 적어도 어느 하나를 데이터 변환하지 않고 전송하는 것을 특징으로 한다.
상기 제어부는 입력된 키를 전송하는 전송 신호로서 키 전송 신호인 키 트랜 스퍼 신호와 마스크 신호를 출력하고,
상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1) 중 적어도 어느 하나는, 상기 제어부에 의해 출력된 키 트랜스퍼 신호와 마스크 신호를 입력한 경우에는, 입력한 키 트랜스퍼 신호에 의해 입력된 데이터를 무효로 하고, 또한, 입력된 마스크 신호에 의해 입력된 키를 통과시키는 것으로 키를 전송하는 것을 특징으로 한다.
상기 제어부는 입력된 데이터를 전송하는 전송 신호로서 데이터 전송 신호인 데이터 트랜스퍼 신호를 출력하고,
상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1) 중 적어도 어느 하나는, 상기 제어부에 의해 출력된 데이터 트랜스퍼 신호를 입력한 경우에는, 입력한 데이터 트랜스퍼 신호에 의해 입력된 키를 무효로 하고, 또한, 입력된 데이터를 통과시키는 것으로 데이터를 전송하는 것을 특징으로 한다.
상기 부 변환부는, 데이터의 선형에 의한 데이터 변환을 행하는 데이터 정 변환과 상기 데이터 정 변환과는 반대의 데이터 변환을 행하는 데이터 역 변환을 동일한 회로를 공용하여 실행하는 1/2 부 변환부를 갖고, 1/2 부 변환부에 의해 데이터를 데이터 변환하고, 또한, 상기 제어부가 전송 신호를 출력한 경우에는, 상기 제어부가 출력한 전송 신호를 입력하고, 입력한 전송 신호에 따라 키와 데이터 중 적어도 어느 하나를 전송하는 것을 특징으로 한다.
상기 부 변환부는, 데이터의 선형에 의한 데이터 변환을 행하는 데이터 정 변환부(FL)와 상기 데이터 정 변환부(FL)와 역의 데이터 변환을 행하는 데이터 역 변환부(FL-1)를 갖고, 상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1)를 직렬로 배치하고,
상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1)의 어느 한쪽은, 상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1)의 다른 쪽에 의해 데이터 변환된 데이터와, 전송된 키와, 전송된 데이터 중 어느 하나를 입력하고, 입력한 데이터 변환된 데이터와, 전송된 키와, 전송된 데이터 중 어느 하나를 사용하여 데이터 변환이나 키의 전송과 데이터의 전송 중 어느 하나를 하는 것을 특징으로 한다.
상기 데이터 변환 장치는, 128 비트와 192 비트와 256 비트 중 어느 하나의 키를 입력하고, 입력한 키를 사용하여 입력한 데이터를 데이터 변환하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 키와 데이터를 입력하고, 입력한 키를 사용하여 적어도 입력한 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하는 데이터 변환 방법으로서,
상기 데이터 변환 방법은, 키와 데이터 중 어느 하나를 전송하는 경우에, 입력한 키와 입력한 데이터 중 어느 하나를 전송할 것을 지시하고 있는 전송 신호를 출력하고,
입력한 키를 사용하여 데이터를 변환함으로써 적어도 데이터의 암호화와 데 이터의 복호 중 어느 하나의 데이터 변환을 행하고, 또한, 상기 출력된 전송 신호를 입력한 경우에는 입력한 키와 입력한 데이터 중 적어도 어느 하나를 데이터 변환하지 않고 전송하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 프로그램은, 키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터의 암호화와 데이터의 복호 중 적어도 어느 하나의 데이터 변환을 행하는 데이터 변환 프로그램으로서,
상기 데이터 변환 프로그램은, 키와 데이터 중 어느 하나를 전송하는 경우에, 입력한 키와 입력한 데이터 중 어느 하나를 전송할 것을 지시하고 있는 전송 신호를 출력하는 처리와,
입력한 키를 사용하여 데이터를 변환함으로써 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하고, 또한, 상기 출력된 전송 신호를 입력한 경우에는 입력한 키와 입력한 데이터 중 적어도 어느 하나를 데이터 변환하지 않고 전송하는 처리를 컴퓨터에 실행하게 하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체는, 키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터의 암호화와 데이터의 복호 중 적어도 어느 하나의 데이터 변환을 행하는 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체로서,
상기 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체는, 키와 데이터 중 어느 하나를 전송하는 경우에, 입력한 키와 입력한 데이터 중 어느 하나를 전송할 것을 지시하고 있는 전송 신호를 출력하는 처리와,
입력한 키를 사용하여 데이터를 변환함으로써 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하고, 또한, 상기 출력된 전송 신호를 입력한 경우에는 입력한 키와 입력한 데이터 중 적어도 어느 하나를 데이터 변환하지 않고 전송하는 처리를 컴퓨터에 실행하게 하기 위한 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체인 것을 특징으로 한다.
상기 데이터 변환 장치는,
키를 생성하는 키 생성부를 더 구비하고,
상기 키 생성부는,
비밀키를 입력하고, 입력한 비밀키로부터 중간키를 생성하고, 생성한 중간키로부터 상기 주 변환부와 상기 부 변환부를 이용하여 출력키를 생성하는 중간키 생성부를 더 구비하는 것을 특징으로 한다.
상기 중간키 생성부는, 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하는 6-1 KL 선택기와, 상기 6-1 KL 선택기로부터 선택된 하나의 키를 중간키로서 유지하는 키 KL 레지스터와, 6개의 키 중에서 하나의 키를 선택하는 6-1 KA 선택기와, 6-1 KA 선택기로부터 선택된 하나의 키를 출력키로서 유지하는 키 KA 레지스터를 갖고,
상기 6-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와, 상기 키 KL 레지스터에 유지된 중간키와, 상기 키 KL 레지스터에 유지된 중간키 중에서 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키로 이루어지는 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하며,
상기 키 KL 레지스터는, 상기 6-1 KL 선택기에 의해 선택된 키를 중간키로서 유지하고,
상기 6-1 KA 선택기는, 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와, 상기 키 KA 레지스터에 유지된 출력키와, 상기 키 KA 레지스터에 유지된 출력키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키로 이루어지는 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하며,
상기 키 KA 레지스터는, 상기 6-1 KA 선택기에 의해 선택된 키를 출력키로서 유지하는 것을 특징으로 한다.
상기 중간키 생성부는, 두 개의 키 중에서 하나의 키를 선택하는 2-1 선택기와, 4개의 키 중에서 하나의 키를 선택하는 4-1 선택기와, 3개의 키 중에서 하나의 키를 선택하는 3-1 KL 선택기와, 3-1 KL 선택기로부터 선택된 키를 중간키로서 유지하는 키 KL 레지스터와, 3개의 키 중에서 하나의 키를 선택하는 3-1 KA 선택기와, 3-1 KA 선택기로부터 선택된 키를 출력키로서 유지하는 키 KA 레지스터를 갖고,
상기 2-1 선택기는, 상기 키 KL 레지스터에 유지된 중간키와, 상기 키 KA 레지스터에 유지된 출력키 중에서 하나의 키를 선택하며,
상기 4-1 선택기는, 상기 2-1 선택기에 의해 선택된 키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키를 입력하고, 입력한 4개의 키 중에서 하나의 키를 선택하며,
상기 3-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와, 상기 4-1 선택기에 의해 선택된 키와, 상기 키 KL 레지스터에 유지된 중간키로 이루어지는 3개의 키를 입력하고, 입력한 3개의 키 중에서 하나의 키를 선택하고,
상기 키 KL 레지스터는 상기 3-1 KL 선택기에 의해 선택된 키를 중간키로서 유지하며,
상기 3-1 KA 선택기는, 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와, 상기 4-1 선택기에 의해 선택된 키와, 상기 키 KA 레지스터에 유지된 출력키로 이루어지는 3개의 키를 입력하고, 입력한 3개의 키 중에서 하나의 키를 선택하고,
상기 키 KA 레지스터는 상기 3-1 KA 선택기에 의해 선택된 키를 출력키로서 유지하는 것을 특징으로 한다.
상기 중간키 생성부는, 두 개의 키 중에서 하나의 키를 선택하는 2-1 KL 선택기와, 2-1 KL 선택기로부터 선택된 키를 유지하는 키 KL 레지스터와, 두 개의 키 중에서 하나의 키를 선택하는 2-1 KA 선택기와, 2-1 KA 선택기로부터 선택된 키를 유지하는 키 KA 레지스터와, 두 개의 키 중에서 하나의 키를 선택하는 2-1 선택기와, 8개의 키 중에서 하나의 키를 선택하는 8-1 선택기를 갖고,
상기 2-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와 상기 키 KL 레지스터에 유지된 키 중에서 하나의 키를 선택하며,
상기 2-1 KA 선택기는, 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와 상기 키 KA 레지스터에 유지된 키 중에서 하 나의 키를 선택하고,
상기 2-1 선택기는, 상기 2-1 KL 선택기와 상기 2-1 KA 선택기에 의해 선택된 두 개의 키 중에서 하나의 키를 선택하고,
상기 8-1 선택기는, 상기 2-1 선택기에 의해 선택된 키로부터 8개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 8개의 키를 입력하고, 입력한 8개 키로부터 하나의 키를 선택하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 장치는, 데이터를 데이터 변환하는 데이터 교반부를 구비하는 데이터 변환 장치로서,
상기 데이터 교반부는, 데이터를 입력하고, 입력한 데이터를 비선형으로 데이터 변환하는 주 변환부와 입력한 데이터를 선형으로 데이터 변환하는 부 변환부를 병렬로 구비하되,
상기 주 변환부는, 키와 데이터를 입력하고, 입력한 키를 사용하여 비선형으로 데이터 변환을 행하기 위한 함수인 F 함수에 근거하여 입력한 데이터를 비선형으로 데이터 변환하고, 비선형 변환한 데이터를 출력하고,
상기 부 변환부는, 키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터를 선형 변환하고, 선형 변환한 데이터를 출력하며,
상기 주 변환부와 상기 부 변환부는, 상기 주 변환부에 의한 데이터 변환과 상기 부 변환부에 의한 데이터 변환을 반복하여 실행하는 것에 의해 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하는 것을 특징으로 한다.
상기 주 변환부는, 입력한 키를 사용하여 입력한 데이터를 F 함수에 근거하여 비선형으로 데이터 변환하고, 데이터 변환한 데이터를 출력하는 것을 복수회 반복하는 F 함수부를 구비하는 것을 특징으로 한다.
상기 F 함수부는, 입력한 키를 사용하여 입력한 데이터를 1/2XF 함수(X≥0)에 근거하여 비선형으로 데이터 변환하고, 데이터 변환한 데이터를 출력하는 것을 2X회 반복하는 것에 의해 F 함수에 근거한 비선형 데이터 변환을 1회분 완료하고, 완료한 데이터를 출력하는 것을 복수회 반복하는 것에 의해 F 함수에 근거한 비선형 데이터 변환을 복수회 실행하는 것을 특징으로 한다.
상기 F 함수부는, 상위 데이터와 하위 데이터로 분할된 데이터중 어느 한쪽을 입력하고, 입력한 데이터를 비선형으로 데이터 변환하며, 데이터 변환한 상위 데이터와 하위 데이터중 어느 한쪽을 출력하고, 출력한 상위 데이터와 하위 데이터중 어느 한쪽과 상위 데이터와 하위 데이터중 다른 쪽을 배타적 논리합 연산하며, 배타적 논리합 연산한 데이터와, 상기 F 함수부에 입력되지 않은 상위 데이터와 하위 데이터의 다른 쪽을 교체하여 출력하는 것을 특징으로 한다.
상기 데이터 변환 장치는,
키를 생성하는 키 생성부를 더 구비하되,
상기 키 생성부는,
비밀키를 입력하고, 입력한 비밀키로부터 중간키를 생성하고, 생성한 중간키로부터 상기 주 변환부와 상기 부 변환부를 이용하여 출력키를 생성하는 중간키 생 성부를 더 구비하는 것을 특징으로 한다.
상기 키 생성부는,
상기 중간키 생성부에 의해 생성된 중간키와 출력키와 소정의 정수를 입력하고, 입력한 중간키와 출력키와 소정의 정수 중에서 소정의 조건에 따라 상기 주 변환부와 상기 부 변환부가 실행하는 데이터 변환에 이용하는 키를 스케줄링하는 키 스케줄부를 더 구비하고,
상기 부 변환부와 상기 주 변환부는, 상기 키 스케줄부에 의해 스케줄링된 키를 각각 입력하고, 각각 입력한 키에 근거하여 각각에 입력된 데이터의 데이터 변환을 행하는 것을 특징으로 한다.
상기 중간키 생성부는, 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하는 6-1 KL 선택기와, 상기 6-1 KL 선택기로부터 선택된 하나의 키를 중간키로서 유지하는 키 KL 레지스터와, 6개의 키 중에서 하나의 키를 선택하는 6-1 KA 선택기와, 6-1 KA 선택기로부터 선택된 하나의 키를 출력키로서 유지하는 키 KA 레지스터를 갖고,
상기 6-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와, 상기 키 KL 레지스터에 유지된 중간키와, 상기 키 KL 레지스터에 유지된 중간키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키로 이루어지는 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하며,
상기 키 KL 레지스터는 상기 6-1 KL 선택기에 의해 선택된 키를 중간키로서 유지하고,
상기 6-1 KA 선택기는, 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와, 상기 키 KA 레지스터에 유지된 출력키와, 상기 키 KA 레지스터에 유지된 출력키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키로 이루어지는 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하며,
상기 키 KA 레지스터는 상기 6-1 KA 선택기에 의해 선택된 키를 출력키로서 유지하는 것을 특징으로 한다.
상기 중간키 생성부는, 두 개의 키 중에서 하나의 키를 선택하는 2-1 선택기와, 4개의 키 중에서 하나의 키를 선택하는 4-1 선택기와, 3개의 키 중에서 하나의 키를 선택하는 3-1 KL 선택기와, 3-1 KL 선택기로부터 선택된 키를 중간키로서 유지하는 키 KL 레지스터와, 3개의 키 중에서 하나의 키를 선택하는 3-1 KA 선택기와, 3-1 KA 선택기로부터 선택된 키를 출력키로서 유지하는 키 KA 레지스터를 갖고,
상기 2-1 선택기는, 상기 키 KL 레지스터에 유지된 중간키와, 상기 키 KA 레지스터에 유지된 출력키 중에서 하나의 키를 선택하며,
상기 4-1 선택기는, 상기 2-1 선택기에 의해 선택된 키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키를 입력하고, 입력한 4개의 키 중에서 하나의 키를 선택하고,
상기 3-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와, 상기 4-1 선택기에 의해 선택된 키와, 상기 키 KL 레지스터에 유지된 중간키로 이루어지는 3개의 키를 입력하고, 입력한 3개의 키 중에서 하나의 키를 선택하며,
상기 키 KL 레지스터는 상기 3-1 KL 선택기에 의해 선택된 키를 중간키로서 유지하고,
상기 3-1 KA 선택기는, 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와, 상기 4-1 선택기에 의해 선택된 키와, 상기 키 KA 레지스터에 유지된 출력키로 이루어지는 3개의 키를 입력하고, 입력한 3개의 키 중에서 하나의 키를 선택하고,
상기 키 KA 레지스터는 상기 3-1 KA 선택기에 의해 선택된 키를 출력키로서 유지하는 것을 특징으로 한다.
상기 중간키 생성부는, 두 개의 키 중에서 하나의 키를 선택하는 2-1 KL 선택기와, 2-1 KL 선택기로부터 선택된 키를 유지하는 키 KL 레지스터와, 두 개의 키 중에서 하나의 키를 선택하는 2-1 KA 선택기와, 2-1 KA 선택기로부터 선택된 키를 유지하는 키 KA 레지스터와, 두 개의 키 중에서 하나의 키를 선택하는 2-1 선택기와, 8개의 키 중에서 하나의 키를 선택하는 8-1 선택기를 갖고,
상기 2-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와 상기 키 KL 레지스터에 유지된 키 중에서 하나의 키를 선택하며,
상기 2-1 KA 선택기는, 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와 상기 키 KA 레지스터에 유지된 키 중에서 하나의 키를 선택하며,
상기 2-1 선택기는, 상기 2-1 KL 선택기와 상기 2-1 KA 선택기에 의해 선택 된 두 개의 키 중에서 하나의 키를 선택하고,
상기 8-1 선택기는, 상기 2-1 선택기에 의해 선택된 키로부터 8개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 8개의 키를 입력하고, 입력한 8개 키로부터 하나의 키를 선택하는 것을 특징으로 한다.
상기 부 변환부는, 데이터를 선형 변환하는 데이터 정 변환부(FL)와 상기 데이터 정 변환부(FL)의 변환과는 반대의 변환을 행하는 데이터 역 변환부(FL-1) 중 적어도 어느 하나를 갖고, 상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1) 중 적어도 어느 하나에 따라 데이터를 데이터 변환하는 것을 특징으로 한다.
상기 부 변환부는, 데이터를 선형 변환하는 데이터 정 변환과 상기 데이터 정 변환과는 반대의 변환을 행하는 데이터 역 변환을 동일한 회로를 공용하여 실행하는 1/2 부 변환부를 갖고, 1/2 부 변환부에 의해 데이터를 데이터 변환하는 것을 특징으로 한다.
상기 데이터 변환 장치는, 128 비트와 192 비트와 256 비트 중 어느 하나의 키를 입력하고, 입력한 키를 사용하여 입력한 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 방법은, 데이터를 선형 변환으로 데이터 변환하는 부 변환부에 병렬로 배치되어, 키와 데이터를 입력하고, 입력한 키를 사용하여 비선형으로 데이터 변환을 행하기 위한 함수인 F 함수에 근거하여, 비선형 데이터 변환하는 주 변환부에 의해, 입력한 데이터를 비선형으로 데이터 변환하고, 비선형 변환한 데이터를 출력하는 것과,
키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터를 상기 주 변환부에 병렬로 배치된 상기 부 변환부에 의해 선형 변환하고, 선형 변환한 데이터를 출력하는 것을, 반복하여 실행하는 것에 의해 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 프로그램은, 데이터를 선형 변환으로 데이터 변환하는 부 변환부에 병렬로 배치되어, 키와 데이터를 입력하고, 입력한 키를 사용하여 비선형으로 데이터 변환을 행하기 위한 함수인 F 함수에 근거하여, 비선형 변환으로 데이터 변환하는 주 변환부에 의해, 입력한 데이터를 비선형으로 데이터 변환하고, 비선형 변환한 데이터를 출력하는 처리와,
키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터를 상기 주 변환부에 병렬로 배치된 상기 부 변환부에 의해 선형 변환하고, 선형 변환한 데이터를 출력하는 처리를, 반복하여 실행하는 것에 의해 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하는 처리를 컴퓨터에 실행하게 하는 것을 특징으로 한다.
본 발명에 따른 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체는, 데이터를 선형 변환으로 데이터 변환하는 부 변환부에 병렬로 배치되어, 키와 데이터를 입력하고, 입력한 키를 사용하여 비선형으로 데이터 변환을 행하기 위한 함수인 F 함수에 근거하여, 비선형으로 데이터 변환하는 주 변환부에 의해, 입력한 데이터를 비선형으로 데이터 변환하고, 비선형 변환한 데이터를 출력하는 처 리와,
키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터를 상기 주 변환부에 병렬로 배치된 상기 부 변환부에 의해 선형 변환하고, 선형 변환한 데이터를 출력하는 처리를, 반복하여 실행하는 것에 의해 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하는 처리를 컴퓨터에 실행하게 하기 위한 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체인 것을 특징으로 한다.
도 1은 실시예 1의 데이터 변환 장치의 구성도,
도 2는 128 비트키의 경우, 중간키 생성부(40)가 중간키로부터 출력키를 생성하는 동작을 나타내는 도면,
도 3은 키 스케줄부(210)의 내부 구성과 그 동작을 나타내는 도면,
도 4는 데이터 교반부(30)의 데이터 암호화/복호 처리의 동작을 나타내는 도면,
도 5는 F 함수부(321)의 내부 구성 및 동작을 나타내는 도면,
도 6은 도 1의 주 변환부(320)와 부 변환부(330)를 반대로 배치한 데이터 변환 장치의 구성도,
도 7은 주 변환부(320)와 부 변환부(330)가 병렬로 배치된 데이터 변환 장치의 구성도,
도 8은 중간키 생성부(40)의 6-1 KL 선택기(220) 및 6-1 KA 선택기(230)의 내부 구성을 나타내는 도면,
도 9는 중간키 생성부(40)의 다른 구성예를 나타내는 도면,
도 10은 데이터 정 변환부(50)가 키 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 11은 데이터 역 변환부(70)가 키 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 12는 데이터 정 변환부(50)와 데이터 역 변환부(70)가 키 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 13은 실시예 2에 있어서의 데이터 정 변환부(50)가 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 14는 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 15는 데이터 정 변환부(50)와 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 16은 실시예 3에 있어서의 데이터 정 변환부(50)가 키 전송 기능과 데이터 전송 기능, 데이터 역 변환부(70)가 키 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 17은 데이터 역 변환부(70)가 키 전송 기능과 데이터 전송 기능, 데이터 정 변환부(50)가 키 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 18은 데이터 정 변환부(50)와 데이터 역 변환부(70)가 키 전송 기능과 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 19는 데이터 정 변환부(50)가 키 전송 기능과 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 20은 데이터 역 변환부(70)가 키 전송 기능과 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도,
도 21은 데이터 정 변환부(50)가 키 전송 기능과 데이터 전송 기능, 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 구성도,
도 22는 데이터 역 변환부(70)가 키 전송 기능과 데이터 전송 기능, 데이터 정 변환부(50)가 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 구성도,
도 23은 데이터 정 변환부(50)가 데이터 전송 기능, 데이터 역 변환부(70)가 키 전송 기능을 갖는 경우의 부 변환부(330)의 구성도,
도 24는 데이터 정 변환부(50)가 키 전송 기능, 데이터 역 변환부(70) 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 구성도,
도 25는 데이터 역 변환부(70)와 데이터 정 변환부(50)를 직렬로 접속하여, 데이터 정 변환부(50)와 데이터 역 변환부(70)가 각각 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 구성도,
도 26은 도 25의 데이터 정 변환부(50)와 데이터 역 변환부(70)가 상하 교체되어 있는 경우의 부 변환부(330)의 구성도,
도 27은 데이터 정 변환부(50)와 데이터 역 변환부(70)를 직렬로 접속하여, 데이터 정 변환부(50)가 키 전송 기능 및 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 구성도,
도 28은 도 27의 데이터 정 변환부(50)와 데이터 역 변환부(70)가 상하 교체되어 있는 경우의 부 변환부(330)의 구성도,
도 29는 데이터 정 변환부(50)와 데이터 역 변환부(70)를 직렬로 접속하고, 데이터 정 변환부(50)가 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 구성도,
도 30은 도 29의 데이터 정 변환부(50)와 데이터 역 변환부(70)가 상하 교체되어 있는 경우의 부 변환부(330)의 구성도,
도 31은 실시예 4에 있어서의 1/2 부 변환부(90)에 키 전송 기능 및 데이터 전송 기능을 부가한 경우의 부 변환부(330)의 구성도,
도 32는 1/2 부 변환부(90)에 데이터 전송 기능을 부가한 경우의 부 변환부(330)의 구성도,
도 33은 1/2 부 변환부(90)에 키 전송 기능을 부가한 경우의 부 변환부(330)의 구성도,
도 34는 128 비트키를 이용한 CAMELLIA의 데이터 변환 장치에 있어서의 데이터 암호화 처리를 나타내는 도면,
도 35는 128 비트키를 이용한 CAMELLIA의 데이터 변환 장치에 있어서의 데이터 복호 처리를 나타내는 도면,
도 36은 CAMELLIA의 데이터 변환 장치에 있어서의 F 함수의 내부 구성도,
도 37은 실시예 5의 전체 구성 및 동작을 나타내는 도면,
도 38은 실시예 6의 전체 구성 및 동작을 나타내는 도면,
도 39는 실시예 11의 전체 구성 및 동작을 나타내는 도면,
도 40은 실시예 12의 전체 구성 및 동작을 나타내는 도면,
도 41은 실시예 13의 전체 구성 및 동작을 나타내는 도면,
도 42는 실시예 14의 전체 구성 및 동작을 나타내는 도면,
도 43은 실시예 15의 전체 구성 및 동작을 나타내는 도면,
도 44는 실시예 16의 전체 구성 및 동작을 나타내는 도면,
도 45는 실시예 17의 전체 구성 및 동작을 나타내는 도면,
도 46은 실시예 18의 전체 구성 및 동작을 나타내는 도면,
도 47은 실시예 7의 전체 구성 및 동작을 나타내는 도면,
도 48은 실시예 8의 전체 구성 및 동작을 나타내는 도면,
도 49는 실시예 9의 전체 구성 및 동작을 나타내는 도면,
도 50은 실시예 10의 전체 구성 및 동작을 나타내는 도면,
도 51은 실시예 19의 전체 구성 및 동작을 나타내는 도면,
도 52는 실시예 20의 전체 구성 및 동작을 나타내는 도면,
도 53은 192, 256 비트키의 경우, 중간키 생성부(40)가 중간키로부터 출력키를 생성하는 동작을 나타내는 도면,
도 54는 192, 256 비트키를 이용한 CAMELLIA의 데이터 변환 장치에 있어서의 데이터 암호화 처리를 나타내는 도면,
도 55는 192, 256 비트키를 이용한 CAMELLIA의 데이터 변환 장치에 있어서의 데이터 복호 처리를 나타내는 도면,
도 56은 관련된 데이터 변환 장치의 구성 및 동작도의 일례,
도 57은 주 변환부(320)의 내부 구성의 일례,
도 58은 부 변환부(330)를 구성하는 회로를 나타내는 도면,
도 59는 부 변환부(330)를 구성하는 데이터 정 변환부(50)와 데이터 역 변환부(70)를 공용한 회로를 나타내는 도면,
도 60은 관련된 데이터 변환 장치의 구성 및 동작도의 다른 일례,
도 61은 주 변환부(320)의 내부 구성의 다른 일례,
도 62는 데이터 정 변환부(50)와 데이터 역 변환부(70)를 직렬로 접속하고, 데이터 정 변환부(50)와 데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 구성도,
도 63은 도 62의 데이터 정 변환부(50)와 데이터 역 변환부(70)가 상하 교체되어 있는 경우의 부 변환부(330)의 구성도,
도 64는 CAMELLIA의 주 변환부(320)의 내부 구성의 일례이다.
(실시예 1)
본 실시예에 기재하는 데이터 변환 장치에 대하여 설명한다.
(데이터 변환 장치)
도 1은 본 실시예의 데이터 변환 장치의 구성 및 동작도이다.
본 실시예에서는, 도 56 및 도 60에서 나타낸 「키 KL 레지스터(240)로부터 출력한 중간키(키 KL)를 선택기(310)에 입력시키는 패스」, 「주 변환부(320)로부터 출력한 데이터를 선택기(310)에 입력시키는 패스」가 존재하지 않는다. 본 실시예의 부 변환부(330)에는, 본래 갖는 데이터 변환기 능력에 가하여, 키 및 데이터를 전송하는 기능이 추가되어 있기 때문이다.
이하, 부 변환부(330)가 갖는 키 및 데이터를 전송하는 기능을 이용한 키 생성 및 데이터의 암호화/복호에 대하여 설명한다. 다른 구성 및 동작은 도 56 및 도 60을 이용하여 설명한 것과 마찬가지이기 때문에, 설명을 생략한다.
본 실시예에서는, 키 KL 레지스터(240)로부터 출력된 중간키(키 KL)는, 직접 선택기(310)에 입력되지 않고, 키 KL 레지스터(240)로부터 키 스케줄부(210)에의 종래의 패스를 이용하여, 키 스케줄부(210)를 경유하여 부 변환부(330)에 입력된다. 부 변환부(330)는 「데이터를 변환하는 모드」와 「키 또는 데이터를 전송하는 모드」를 가지고 있기 때문에, 키를 입력하면 「키 또는 데이터를 전송하는 모드」로 모드를 전환하여, 입력된 키를 선택기(310)에 전송한다.
또한, 본 실시예에서는, 주 변환부(320)에 의해 비선형 변환된 데이터는 직접 선택기(310)에 입력되지 않고, 부 변환부(330)에 입력된다. 부 변환부(330)는, 주 변환부(320)에 의해 비선형 변환된 데이터를 입력하면 「키 또는 데이터를 전송하는 모드」로 모드를 전환하고, 입력된 데이터를 선택기(310)에 전송한다.
이러한 전송 동작을 부 변환부(330)에 하게 함으로써, 도 56 및 도 60에 나타낸 상기 두 개의 패스를 불필요하게 할 수 있다.
또, 상술한 바와 같이, 주 변환부(320)가 복수 사이클로 F 함수에 의한 1회의 데이터 변환을 행하는 경우에는, 일정 기간 유지한 중간 데이터를 주 변환부(320)에 입력할 필요가 있기 때문에, 도 1에서는 점선으로 나타내는 「중간 데이터를 연산 레지스터(350)로부터 선택기(310)로 보내는 패스」가 존재하지만, 주 변환부(320)가 1 사이클로 F 함수에 의한 1회의 데이터 변환을 행하는 경우에는, 점선으로 나타낸 「연산 레지스터(350)로부터 선택기(310)에의 패스」는 필요없다. 후술하는 도 6의 점선으로 나타낸 패스에 대해서도 마찬가지이다.
(키 생성 방법)
다음에, 중간키 생성부(40)에 의해 행해지는 중간키 및 출력키의 생성 방법에 대하여 설명한다.
도 2에, 중간키 생성부(40)가 중간키로부터 출력키를 생성하는 동작을 나타낸다.
우선, 중간키 생성부(40)에 비밀키가 입력되고, 6-1 KL 선택기(220)를 거쳐 키 KL 레지스터(240)에 중간키(키 KL)로서 유지된다. 키 KL 레지스터(240)에 유지된 비밀키는 중간키(키 KL)로서, 키 스케줄부(210)를 경유하여 주 변환부(320)에 입력된다. 주 변환부(320)의 1단째의 F 함수부(321a)에서는, 입력된 중간키(키 KL)의 상위 비트가 키 스케줄부(210)로부터 출력된 정수 Σ1을 이용하여 비선형 변환되어, EXOR 회로(322a)에 의해 중간키(키 KL)의 하위 비트와의 배타적 논리합이 취해지고, F 함수부(321b)에 입력된다. F 함수부(321b)에서도 마찬가지로, EXOR 회로(322a)로부터 출력된 키가 키 스케줄부(210)로부터 출력된 정수 Σ2를 이용하여 비선형 변환되어, EXOR 회로(322b)에 의해 중간키(키 KL)의 하위 비트와의 배타적 논리합이 취해진다. 그 결과, 출력된 키를 키의 상위 비트로 하고, EXOR 회로(322a)로부터 출력된 키를 키의 하위 비트로 하여 부 변환부(330)로 출력한다.
부 변환부(330)는, 이들 데이터를 입력하고, 부 변환부(330)의 데이터 정 변환부(50)에 포함되는 두 개의 배타적 논리합 연산기(EXOR)와 부 변환부(330)의 데이터 역 변환부(70)에 포함되는 두 개의 배타적 논리합 연산기(EXOR)를 이용하여 키의 상위 비트와 키의 하위 비트를 각각 배타적 논리합 연산을 취하고, 그 결과, 출력된 데이터를 다시 주 변환부(320)에 입력한다.
주 변환부(320)는, 상술한 주 변환부(320)의 일부를 사용한 처리와 마찬가지로, 주 변환부(320)가 갖는 F 함수부(321a)와 EXOR 회로(322a), F 함수부(321b)와 EXOR 회로(322b)를 포함한 2단의 변환 처리를 하고, 변환된 키의 상위 비트와 하위 비트를 교체하여 출력한다.
출력된 데이터는, 중간키 생성부(40)의 6-1 KA 선택기(230)에 입력되어, 키 KA 레지스터(250)에 출력키(키 KA)로서 유지된다. 이렇게 하여, 중간키 생성부(40)는, 데이터의 암호화/복호 처리를 하는 구성 부분인 주 변환부(320)의 일부와 부 변환부(330)의 일부를 이용하여 중간키(키 KL)로부터 출력키(키 KA)를 생성한다. 생성된 중간키(키 KL)의 상위 비트로 이루어지는 키 KLH와 하위 비트로 이루어지는 키 KLL과, 출력키(키 KA)의 상위 비트로 이루어지는 키 KAH와 하위 비트로 이루어지는 키 KAL의 4개의 키는 키 스케줄부(210)에 입력되어, 데이터의 암호화 및 복호를 위한 키(확대키라고 함)로서 사용된다. 또한, 이렇게 하여 생성된 출력키(키 KA)와 중간키(키 KL)를 이용하여 동일한 처리에 의해, 소정 기간마다 새로운 중간키 및 출력키가 생성된다.
(키 스케줄)
키 스케줄부(210)의 내부 구성과 그 동작에 대하여 설명한다.
도 3은 키 스케줄부(210)의 내부 구성 및 동작을 나타낸 도면이다.
중간키 생성부(40)로부터 출력된 중간키(키 KL)는 상위 비트의 키 KLH와 하위 비트의 키 KLL로 분할되어, 4-1 선택기(216)와 4-1 선택기(217)에 입력된다. 중간키 생성부(40)로부터 출력된 출력키(키 KA)도 마찬가지로, 키 KAH와 키 KAL로 분할되어, 4-1 선택기(216)와 4-1 선택기(217)에 입력된다. 4-1 선택기(216)와 4-1 선택기(217)는 이들 4개의 키 중에서 하나의 키를 선택한다. 4-1 선택기(216)와 4-1 선택기(217)에 의해 선택된 신호를 1 비트 오른쪽으로 순회 시프트시킨 신호를 2-1 선택기(214)와 2-1 선택기(215)에 입력한다. 신호를 1 비트 오른쪽으로 순회 시프트시키는 것은, 중간키 생성부(40)에 의한 출력키(키 KA) 생성시, 부 변환부(330)를 사용하는 것은 상술했지만, 이 때, 부 변환부(330)에 포함되는 순회 시프트기에 의해 신호가 1 비트 왼쪽으로 순회 시프트되기 때문에, 미리 1 비트 왼쪽으로 순회 시프트될 것을 예상하고, 결과로 순회 시프트의 영향이 못 미치도록 1 비트 오른쪽으로 순회 시프트시킨 것이다. 따라서, 키 스케줄부(210)는 반드시 1 비트 오른쪽으로 순회 시프트하는 처리를 실시하는 것은 아니고, 부 변환부(330)의 순회 시프트기가 신호를 순회 시프트하는 수와 방향을 고려하여, 그 방향과 역의 방향으로 부 변환부(330)의 순회 시프트기가 순회 시프트하는 수만큼 미리 입력키를 순회 시프트시켜 놓으면 좋다. 따라서, 2-1 선택기(214)와 2-1 선택기(215)는, 이들 두 개의 신호로부터 하나의 키에 관한 신호를 선택하지만, 출력키(키 KA) 생성시에 부 변환부(330)로 키를 출력하는 경우에는, 반드시 미리 정해진 비트를 순회 시프트시킨 키를 선택하여, 부 변환부(330)로 출력한다.
2-1 선택기(214)와 2-1 선택기(215)로부터 출력된 키는, 출력키(키 KA) 생성시에 부 변환부(330)를 이용하는 경우에 부 변환부(330)에 입력되고, 또한, 출력키(키 KA) 생성시에 주 변환부(320)를 이용하는 경우와 데이터의 암호화/복호 처리시에 2-1 선택기(212)에 입력되고, 또한, 1 바이트 오른쪽 또는 왼쪽으로 순회 시프트시킨 키를 2-1 선택기(212)에 입력한다. 1 바이트 오른쪽 또는 왼쪽으로 순회 시프트시킨 키를 2-1 선택기(212)에 입력하는 것은, 데이터의 암호화/복호 처리시에 F 함수부가 1/2나 1/4나 1/8 등, 1 미만의 F 함수를 처리하는 부분으로 구성되어 있는 경우에, 필요하게 되기 때문이지만, 상세한 것은 후술한다.
2-1 선택기(212)는 이들 두 개의 키 중에서 하나의 키를 선택하고, 선택한 키를 2-1 선택기(211)에 입력한다. 8-1 선택기(213)는 정수인 Σ1로부터 Σ4를 상위 데이터와 하위 데이터로 분할한 것을 입력하고, 이들 8개의 입력 신호로부터 하나의 신호를 선택하여, 2-1 선택기(211)에 입력한다. 2-1 선택기(211)는, 입력된 두 개의 신호 중에서 하나의 신호를 선택하고, 선택한 신호를 키로서 주 변환부(320)로 출력한다.
(데이터의 암호화 처리/복호 처리)
다음에, 데이터 교반부(30)에 의해 행해지는 데이터의 암호화/복호 처리에 대하여 설명한다.
도 4는 데이터 교반부(30)의 암호화/복호 처리의 동작을 나타내는 도면이다.
우선, P(평문 또는 암호문)가 입력된다. 여기서는, P(평문 또는 암호문)를 128 비트 길이라고 가정한다. 입력 데이터 P는 EXOR 회로(31a)에 입력되고, 키 생성부(20)에 입력되며, 중간키 생성부(40)와 키 스케줄부(210)를 경유하여 출력된 비밀키(128 비트 길이)와 배타적 논리합이 취해진다. 또, 비밀키는 중간키 생성부(40)에 우선 입력되고, 6-1 KL 선택기(220)에 의해 선택되어, 키 KL 레지스터(240)에 중간키(키 KL)로서 유지된 후에, 중간키(키 KL)로서 키 스케줄부(210)에 입력된다.
공통키 블럭 암호 처리를 하는 CAMELLIA(카멜리아)에서는, EXOR 회로(31a)와 EXOR 회로(31b)는, 부 변환부(330)가 갖는 배타적 논리 연산기를 이용하고 있다. 즉, 도 58에 도시하는 바와 같이, 입력 데이터를 상위 비트의 상위 데이터와 하위 비트의 하위 데이터로 분할하고, 분할된 각각의 데이터와 입력된 키를 데이터 정 변환부(50)의 EXOR 회로(55) 및 EXOR 회로(56) 또는 데이터 역 변환부(70)의 EXOR 회로(75) 및 EXOR 회로(76)에 의해 배타적 논리합을 취해 출력한다.
출력된 데이터는, 키 스케줄부(210)로부터 출력된 확대키중 어느 하나를 이용하여 주 변환부(320)와 부 변환부(330)에 의해 데이터 변환된다. 도 4에서는, 주 변환부(320a), 부 변환부(330a), 주 변환부(320b), 부 변환부(330b), 주 변환부 (320c)와 같이 교대로 데이터 변환되어 있다.
이렇게 하여 변환된 데이터는, 부 변환부(330)의 EXOR 회로(31b)에 의해 키 스케줄부(210)로부터 출력된 키와의 배타적 논리합을 취해, C(암호문 또는 복호문)로서 출력한다.
CAMELLIA에서의 데이터 교반부(30)에서 행해지는, 주 변환부(320)와 부 변환부(330)에 의한 데이터 변환 처리의 동작의 상세에 대하여 도 1과 도 4를 이용하여 설명한다.
EXOR 회로(31a)로부터 출력된 데이터는 상위 데이터와 하위 데이터로 분할되고, 각각 주 변환부(320a)에 입력된다. 주 변환부(320a)에서는, 입력된 각각의 데이터를 비선형 변환하고, 변환후의 하위 데이터를 상위 데이터로 하고, 또한, 변환후의 상위 데이터를 하위 데이터로 하여, 즉, 도 4에 도시하는 바와 같이, 상위 데이터와 하위 데이터를 교체하고 나서 부 변환부(330a)에 입력한다.
부 변환부(330a)에서는, 입력 데이터를 선형 변환한다. 변환한 데이터는, 도 1에 도시하는 바와 같이, 선택기(310)에 입력되어, 연산 레지스터(350)에 유지되고, 주 변환부(320)(도 4에서는 주 변환부(320b)로 표시되어 있음)에 입력된다.
주 변환부(320b)와 부 변환부(330b)에서는, 주 변환부(320a), 부 변환부(330a)의 처리를 반복하고, 주 변환부(320c)에서 다시 주 변환부(320a)와 동일한 처리를 반복한다. 주 변환부(320c)로부터의 출력 데이터는, EXOR 회로(31b)에 의해 반복한 후의 출력 데이터와 키 스케줄부(210)로부터 출력된 키 데이터의 배타적 논리합을 취해, C로서 출력한다. CAMELLIA에서는, EXOR 회로(31b)는 EXOR 회로(31a)와 마찬가지로, 부 변환부(330)에 포함되는 배타적 논리 연산기를 사용한다. 또한, CAMELLIA에서는, 주 변환부(320a), 주 변환부(320b, 320c)는 동일한 주 변환부(320)를 이용하여 처리를 반복하는 것에 의해 데이터 변환을 한다. 단지, 동일한 내부 구성을 가지는 주 변환부(320a)와 주 변환부(320b)와 주 변환부(320c)를 따로따로 가지는 구성으로 할 수도 있다. 부 변환부(330a)와 부 변환부(330b)도 마찬가지이다.
여기서, 주 변환부(320)가 1단의 F 함수 처리 부분을 갖는 경우로서, 도 57에 도시하는 바와 같이, 6단의 F 함수에 의한 데이터 변환 처리를 하는 경우, 주 변환부(320)에 의한 처리를 6회 반복하는 것으로 6단의 F 함수에 의한 데이터 변환 처리를 완료할 수 있다. 이것은, 도 1에서는, 주 변환부(320)로부터 선택기(310)와 연산 레지스터(350)를 통과하여 주 변환부(320)에 되돌아가는 패스를 6회 반복하여 이용하여 주 변환부(320)가 6단의 F 함수에 의한 데이터 변환 처리를 완료하는 것을 의미한다. 따라서, 도 56이나 도 60에 나타내는 관련기술에서는, 「주 변환부(320)로부터의 출력 데이터를 선택기(310)로 입력시키기 위한 패스」가 필요했다.
그러나, 본 실시예에서는, 부 변환부(330)가 후술하는 전송 기능을 갖기 때문에, 주 변환부(320)로부터의 출력 데이터는 부 변환부(330)를 전송시켜 선택기(310)에 입력시키는 것이 가능해진다. 따라서, 본 실시예의 데이터 변환 장치에서는, 「주 변환부(320)로부터의 출력 데이터를 부 변환부(330)에 의해 전송시켜 선택기(310)에 입력시키는 패스」를 이용하는 것에 의해, 「주 변환부(320)로부터의 출력 데이터를 선택기(310)에 입력시키기 위한 패스」가 불필요하게 된다.
(주 변환 처리-주 변환부(320))
주 변환부(320)의 내부 구성 및 동작에 대해서는 도 57, 도 61을 이용하여 상술했다.
상술한 바와 같이, 주 변환부(320)가 가지는 구조, 즉, 입력 데이터를 상위 비트의 상위 데이터와 하위 비트의 하위 데이터로 분할하고, 분할한 상위 데이터와 하위 데이터중 어느 한쪽을 F 함수에 의해 비선형 변환하고, 비선형 변환한 상위 데이터와 하위 데이터중 어느 한쪽과, 상위 데이터와 하위 데이터중 다른 쪽으로부터 F 함수에 입력하는 데이터를 생성하고, 생성한 데이터를 상기 입력 데이터로서 상위 데이터와 하위 데이터로 분할하며, F 함수를 이용하여 다시 변환하는 것을 반복하는 것을 특징으로 하는 비선형 변환 처리 구조를 FEISTEL 구조라고 부르고 있다.
(주 변환 처리-주 변환부(320)-F 함수부(321))
다음에, 주 변환부(320)에 포함되는 F 함수부(321)의 내부 구성 및 동작에 대하여 설명한다.
도 5는 F 함수부(321)의 내부 구성 및 동작을 나타낸 도면이다.
우선, 입력 데이터는 EXOR 회로(323)에 의해 확대키와의 배타적 논리합이 취해지고, 8분할되어 S 함수(324)에 입력된다. 확대키란, 비밀키로부터 중간키 생성부(40)에 의해 생성되는 출력키(키 KA)와 중간키(키 KL)를 합친 키를 말한다. 비밀키가 128 비트 길이의 CAMELLIA인 경우에는 확대키는 256 비트로 된다. 중간키( 키 KL)를 상위 비트의 키 KLH와 하위 비트의 키 KLL로 분할하고, 마찬가지로, 출력키(키 KA)를 상위 비트의 키 KAH와 하위 비트의 키 KAL로 분할하며, 그들 4개의 키로부터 키 스케줄부(210)에 의해 스케줄링된 하나의 키가 EXOR 회로(323)에 입력된다. S 함수(324)는 GF(28)의 역원 연산과 아핀 변환(affine transform)을 합성한 함수(S1로부터 S4)이며, 바이트 단위의 비선형 변환이 행해진다. 변환되어 출력된 데이터는 P 함수(325)에 입력되고, 선형 변환을 행하는 P 함수(325)에 의해 데이터의 교반이 행해진 후에 출력된다.
다음에, F 함수부가 F 함수의 1/2를 처리하는 부분(1/2F 함수)으로 구성되어 있는 경우에 대하여 그 동작을 설명한다.
F 함수부가 F 함수의 1/2를 처리하는 부분은 EXOR 회로(323)와 S4(324e)로부터 S1(324h)의 4개의 S 박스와 도 5의 대략 절반의 P 함수부로 구성된다. 이들 구성으로부터, 우선, 상기 F 함수 1단분의 데이터 변환 처리의 1/2의 처리를 한다. 다음에, 또 한번 동일한 처리를 하여, F 함수 1단분의 처리를 완료한다. 1번째의 처리에서는, 키 스케줄부(210)에서 상술한 바와 같이, 1 바이트 오른쪽 또는 왼쪽으로 순회 시프트시킨 키와 데이터를 이용한다. 키와 데이터를 1 바이트 오른쪽 또는 왼쪽으로 순회 시프트시킴으로써 S1로부터 S4에 배치된 S 박스의 배치를 변경하지 않고 S 박스를 1 바이트분 비키어 놓은 것과 동일한 효과를 연주할 수 있다. 즉, 도 5에 도시하는 바와 같이, S4(324e)로부터 S1(324h)로 나타내는 S1, S2, S3, S4 에 배치된 S 박스의 배치를 바꾸지 않고, 1 바이트 순회 시프트시켜 놓은 키와 데이터를 입력하는 것으로, S1(324a)로부터 S4(324d)로 나타내는 S2, S3 , S4, S1에 S 박스를 배치한 것과 동일한 처리가 가능해진다.
이러한 조작에 의해, 2 사이클로 F 함수 1단분의 처리가 완료한다.
(주 변환부(320)와 부 변환부(330)를 반대로 배치한 데이터 변환 장치)
도 6은 도 1의 주 변환부(320)와 부 변환부(330)를 반대로 배치한 데이터 변환 장치의 구성 및 동작도이다.
주 변환부(320)와 부 변환부(330)를 반대로 배치한 데이터 변환 장치의 경우도 도 1에 나타내는 데이터 변환 장치의 경우와 마찬가지로, 부 변환부(330)는 전송 기능을 이용하여 데이터를 전송함으로써 주 변환부(320)에 출력한다. 이러한 패스를 이용하여 주 변환부(320)는 6단의 F 함수에 의한 데이터 변환 처리를 완료하는 것이 가능해진다. 따라서, 도 56이나 도 60에 나타내는 「부 변환부(330)로부터의 출력 데이터를 선택기(310)에 입력시키기 위한 패스」가 불필요하게 된다.
또한, 키 KL 레지스터(240)로부터 출력된 중간키(키 KL)는 직접 선택기(310)에 입력되지 않고, 키 KL 레지스터(240)로부터 키 스케줄부(210)에의 패스를 이용하여, 키 스케줄부(210)를 경유하여 부 변환부(330)에 입력된다. 부 변환부(330)는, 키를 입력하면 전송 기능을 이용하여 입력된 키를 주 변환부(320)에 전송한다.
이러한 전송 동작을 부 변환부(330)에 하게 함으로써, 도 56 및 도 60에 나타낸 「키 KL 레지스터(240)로부터 출력한 중간키(키 KL)를 선택기(310)에 입력시 키는 패스」와, 「주 변환부(320)로부터 출력한 데이터를 선택기(310)에 입력시키는 패스」또는 「부 변환부(330)로부터 출력한 데이터를 선택기(310)에 입력시키는 패스」의 두 개의 패스를 불필요하게 할 수 있다.
(주 변환부(320)와 부 변환부(330)를 병렬로 배치한 데이터 변환 장치)
도 7은, 도 1, 도 6과 비교하면 주 변환부(320)와 부 변환부(330)가 병렬로 배치되어 있는 점과 두 개의 입력 신호로부터 하나의 출력 신호를 선택하는 선택기(340)가 존재하는 점에서 다른 데이터 변환 장치를 나타내는 도면이다.
그 밖의 구성은 도 1, 도 6과 마찬가지다.
이러한 구성을 갖는 데이터 변환 장치에서는, 주 변환부(320)와 부 변환부(330)가 병렬로 배치되어 있기 때문에, 주 변환부(320)와 부 변환부(330)로부터 출력된 신호중 어느 하나를 선택하는 선택기(340)가 필요하게 된다. 그리고, 선택기(340)가 선택하고, 연산 레지스터(350)를 경유한 신호와 P(평문 또는 암호문) 중에서 선택기(310)가 선택한 신호가 주 변환부(320)와 부 변환부(330)에 입력된다.
그러나, 출력키(키 KA) 생성시, 키 KL 레지스터(240)로부터 출력된 중간키(키 KL)는 직접 선택기(310)에 입력되지 않고, 키 KL 레지스터(240)로부터 키 스케줄부(210)에의 패스를 이용하여, 키 스케줄부(210)를 경유해서 부 변환부(330)에 입력된다. 부 변환부(330)는, 키를 입력하면 전송 기능을 이용하여 입력된 키를 주 변환부(320)에 전송한다. 이 때문에, 도 56 및 도 60에 나타낸 「키 KL 레지스터(240)로부터 출력한 중간키(키 KL)를 선택기(310)에 입력시키는 패스」를 불필요하게 할 수 있다.
또한, 「주 변환부(320)로부터 출력한 데이터를 선택기(310)에 입력시키는 패스」 또는 「부 변환부(330)로부터 출력한 데이터를 선택기(310)에 입력시키는 패스」의 두 개의 패스를 불필요하게 할 수 있다.
(중간키 생성부(40)의 내부 구성)
다음에, 중간키 생성부(40)의 6-1 KL 선택기(220) 및 6-1 KA 선택기(230)의 내부 구성에 대하여 설명한다.
도 8은 중간키 생성부(40)의 6-1 KL 선택기(220) 및 6-1 KA 선택기(230)의 내부 구성을 나타낸 도면이다.
중간키 생성부(40)에 있어서 키 KL 레지스터(240)에 유지된 중간키(키 KL)는 키 스케줄부(210)에 출력되고, 또한, 다시 6-1 KL 선택기(220)에 입력된다. 6-1 KL 선택기(220)는 내부에 6-1 선택기(221)를 가지고 있다.
6-1 KL 선택기(220)에서는, 입력된 중간키(키 KL)를 6-1 선택기(221)에 입력하고, 또한, 중간키(키 KL)를 임의의 다른 4개의 시프트수로 순회 시프트시킨 4개의 신호를 6-1 선택기(221)에 입력한다. 예컨대, 도시하지 않지만, 중간키를 왼쪽으로 17 비트, 왼쪽으로 15 비트, 오른쪽으로 17 비트, 오른쪽으로 15 비트, 각각 순회 시프트시킨 4개의 신호를 입력하는 경우가 생각된다. 이들 중간키(키 KL)와 순회 시프트시킨 4개의 신호와 비밀키를 6개의 입력 신호로 하여, 6-1 선택기(221)는 6개의 입력 신호로부터 하나의 출력 신호를 선택하고, 선택한 출력 신호를 키 KL 레지스터(240)에 새로운 중간키(키 KL)로서 유지시킨다.
출력키(키 KA)로부터 새로운 출력키(키 KA)를 생성하는 방법도 중간키(키 KL)로부터 새로운 중간키(키 KL)를 생성하는 방법과 완전히 마찬가지이다.
도 9는 중간키 생성부(40)의 다른 구성예를 나타내는 도면이다.
도 9에서는, 도 8과 비교하여, 4-1 선택기(223)로 나타내는 선택기의 공유화가 도모되고 있다. 즉, 키 KL 레지스터(240)로부터 출력된 중간키(키 KL)와 키 KA 레지스터(250)로부터 출력된 출력키(키 KA)를 2-1 선택기(224)에 입력하며, 2-1 선택기(224)가 두 개의 키 중에서 하나의 키를 선택하고, 선택된 하나의 키를 4개의 서로 다른 시프트수로 순회 시프트시켜 4개의 신호를 생성하며, 그것 4개의 신호를 4-1 선택기(223)에 입력한다. 4-1 선택기(223)는 4개의 신호 중에서 하나의 신호를 선택하여, 3-1 KL 선택기(222) 또는 3-1 KA 선택기(232)에 출력한다.
3-1 KL 선택기(222)는 4-1 선택기(223)에 의해 선택된 키와 비밀키와 키 KL 레지스터(240)에 유지된 중간키(키 KL) 중에서 하나의 키를 선택하고, 새로운 중간키로서 키 KL 레지스터(240)에 유지한다.
3-1 KA 선택기(232)도 마찬가지로, 4-1 선택기(223)에 의해 선택된 키와 생성된 출력키(키 KA)와 키 KA 레지스터(250)에 유지된 출력키(키 KA) 중에서 하나의 키를 선택하고, 새로운 출력키(키 KA)로서 키 KL 레지스터(240)에 유지한다.
도 8에 나타내는 구성에서는 2-1 선택기로 환산하면 10개 필요한 데 비하여, 도 9에 나타내는 구성에서는, 2-1 선택기가 8개만 필요하기 때문에, 도 8에 나타내는 구성의 중간키 생성부(40)에 비하여, 2-1 선택기를 두 개 삭감할 수 있다. 이렇게 하여, 회로 규모의 삭감을 도모하는 것이 가능하다.
또, 도 8에 나타내는 중간키 생성부(40)의 구성은 모든 실시예의 데이터 변 환 장치에 적용할 수 있다. 또한, 도 9에 나타내는 중간키 생성부(40)의 구성도 모든 실시예의 데이터 변환 장치에 적용하는 것이 가능하다.
또한, 후술하는 도 51에 나타내는 중간키 생성부(40)의 구성도 모든 실시예의 데이터 변환 장치에 적용하는 것이 가능하다.
(부 변환 처리-부 변환부(330))
다음에, 부 변환부(330)의 내부 구성 및 동작에 대하여 설명한다.
본 실시예에서는, 데이터 정 변환부(50) 또는 데이터 역 변환부(70)의 적어도 어느 하나가 키 전송 기능을 갖는 경우를 설명한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)가 키 전송 기능을 갖는 경우)
도 10은 부 변환부(330)의 내부 구성 및 동작을 나타낸 도면이다.
본 실시예에서는, 도 58을 이용하여 설명한 관련기술에 관한 데이터 정 변환부(50)와 데이터 역 변환부(70)의 구성 도면에 비하여, 키 또는 데이터를 전송하는 전송 신호와 이들 전송 신호에 따른 회로가 부가되어 있다.
도 10에서는, 데이터 정 변환부(50)가 입력키를 전송시키는 기능을 갖고 있다.
즉, 데이터 정 변환부(50)에 키를 전송시키는 전송 신호를 입력하고, 전송 신호가 입력된 데이터 정 변환부(50)는 전송 신호에 따라 입력된 키를 전송한다.
구체적으로는, 제어부(5)에 의해 전송 신호가 제어되고, 키를 전송시키는 경우에는, FL 키 트랜스퍼 신호와 FL 마스크 신호를 출력한다. 데이터 정 변환부 (50)는 제어부(5)에 의해 출력된 FL 키 트랜스퍼 신호와 FL 마스크 신호를 입력한다.
이들 전송 신호를 이용한 데이터 정 변환부(50)에 의한 키의 전송 처리에 대하여, 구체적으로 설명한다.
키를 전송하는 경우, FL 키 트랜스퍼 신호는 0으로 세트되어, AND 회로(51)에 입력된다. AND 회로(51)에는, 암호화/복호의 대상으로 되는 데이터도 입력된다.
FL 키 트랜스퍼 신호가 0이기 때문에, 입력된 데이터는 AND 회로(51)의 AND 회로에 의해 억지(抑止)되어 무효로 된다. 즉, 입력된 데이터가 어떤 값을 갖고 있더라도, AND 회로(51)의 출력 데이터는 0으로 된다.
0의 값을 가지는 AND 회로(51)의 출력 데이터의 상위 비트는 OR 회로(53)에 입력되고, 하위 비트는 EXOR 회로(55)에 입력된다.
한편, FL 마스크 신호는 NOT 회로(52)에 입력된다. 키를 전송시키는 경우, 제어부(5)는, FL 마스크 신호를 0으로 세트하기 때문에, NOT 회로(52)의 출력 신호는 1로 되고, OR 회로(53)의 출력 신호는 입력 신호를 0과 1로 하기 때문에, 1을 출력한다.
AND 회로(54)는 OR 회로(53)에 의해 출력된 값인 1과 키 1의 정보를 입력하기 때문에, AND 회로(54)의 출력 데이터는 반드시 키 1 그 자체가 된다.
AND 회로(54)에 의해 출력된 키 1은 왼쪽으로 1 비트 순회 시프트되어, EXOR 회로(55)에 입력된다. 키 1 자신은, 도 3에 나타내는 키 스케줄부(210)에 있어서 미리 1 비트 오른쪽으로 순회 시프트되어 있기 때문에, AND 회로(54)에 의해 출력된 키 1이 왼쪽으로 1 비트 순회 시프트됨으로써 전송해야 할 본래의 키 1의 값으로 된다.
EXOR 회로(55)에는, AND 회로(51)로부터 출력된 0의 값을 가지는 하위 비트가 입력되기 때문에, EXOR 회로(55)의 연산에 의해 출력되는 것은 키 1 그 자체이다. 이것이 출력 신호의 하위 비트로 된다.
따라서, 데이터 정 변환부(50)는 FL 키 트랜스퍼 신호와 FL 마스크 신호에 의해 키 1을 그대로 출력 신호로서 출력할 수 있다.
키 2에 대해서도 마찬가지로, FL 키 트랜스퍼 신호와 FL 마스크 신호에 따라, 그대로 출력 신호로서 전송된다. 이 동작에 대하여, 다음에 설명한다.
FL 마스크 신호는 상술한 대로 0이다. 따라서, AND 회로(58)에는 0과 EXOR 회로(55)에 의해 출력된 키 1이 입력되어, 반드시 0이 출력된다.
OR 회로(57)는 키 2와 0을 입력하기 때문에, 그 출력값은 반드시 키 2로 된다.
키 2는 EXOR 회로(56)에 입력되어, AND 회로(51)가 출력한 상위 데이터인 0과의 배타적 논리합이 취해지기 때문에, 출력은 반드시 키 2로 된다. 이것이 출력 신호의 상위 비트로 된다.
이상과 같이 하여, FL 키 트랜스퍼 신호와 FL 마스크 신호를 입력하여, 키 1과 키 2를 그대로 전송하는 것이 가능해진다. 전송 신호인 FL 키 트랜스퍼 신호와 FL 키 마스크 신호를 제어하는 제어부(5)는 도 11, 도 12, 도 14∼도 33에는 도시 되어 있지 않지만, 도 10과 마찬가지로, 제어부(5)에 의해 제어되어 있는 것이다.
(부 변환 처리-부 변환부(330)-데이터 역 변환부(70)가 키 전송 기능을 갖는 경우)
다음에, 데이터 역 변환부(70)가 입력키를 전송하는 기능을 가지고 있는 경우를 설명한다.
도 11은 데이터 역 변환부(70)가 키 전송 기능을 갖고 있는 경우를 나타낸 도면이다.
AND 회로(71)에는, FL-1 키 트랜스퍼 신호와 데이터가 입력된다.
상술한 FL 키 트랜스퍼 신호와 같이, FL-1 키 트랜스퍼 신호는 0을 유지하고 있기 때문에, AND 회로(71)에 입력되는 데이터는 억지되어 무효로 되어, AND 회로(71)의 출력 데이터는 0으로 고정된다.
상술한 FL 마스크 신호와 마찬가지로, FL-1 마스크 신호는 0이기 때문에, AND 회로(73)에 입력되는 신호는 양쪽 모두 0으로 되고, AND 회로(73)의 출력 데이터는 0으로 고정된다.
OR 회로(74)는 AND 회로(73)의 출력 데이터인 0과 키 3을 입력 신호로 하기 때문에, 키 3을 출력한다.
EXOR 회로(75)는 AND 회로(71)로부터의 출력 데이터 0의 상위 비트 0과 키 3을 입력하기 때문에, 키 3을 출력한다. 이것이 출력 신호의 상위 비트로 된다.
또한, OR 회로(78)에서는, NOT 회로(72)에 의해 FL-1 마스크 신호 0이 반전된 값1과 키 3이 입력되기 때문에, OR 회로(78)는 1을 출력한다. AND 회로(77)는, OR 회로(78)로부터의 출력 데이터 1과 키 4를 입력하기 때문에, AND 회로(77)의 출력은 키 4로 된다. 키 4는 1 비트 왼쪽으로 순회 시프트되어, EXOR 회로(76)에 입력된다. 여기서도, 키 4는 키 스케줄부(210)에 의해 미리 1 비트 오른쪽으로 순회 시프트되어 데이터 역 변환부(70)에 입력되기 때문에, 여기서 1 비트 왼쪽으로 순회 시프트함으로써 본래의 키 4의 값으로 된다.
EXOR 회로(76)에는, AND 회로(71)의 출력 데이터의 하위 비트인 0과 키 4가 입력되기 때문에, EXOR 회로(76)는 키 4를 출력한다. 이것이 출력 신호의 하위 비트로 된다.
이렇게 하여, 데이터 역 변환부(70)는, FL-1 키 트랜스퍼 신호와 FL-1 마스크 신호를 전송 신호로 하여, 전송 신호를 입력한 경우에는, 입력한 키(키 3, 키 4)를 그대로 출력하는 것이 가능해진다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)와 데이터 역 변환부(70)가 키 전송 기능을 갖는 경우)
다음에, 데이터 정 변환부(50)와 데이터 역 변환부(70)가 입력키를 전송하는 기능을 가지고 있는 경우를 설명한다.
도 12는, 데이터 정 변환부(50)와 데이터 역 변환부(70)가 키를 전송하는 기능을 갖는 경우의 부 변환부(330)의 내부 구성도이다.
데이터 정 변환부(50)는 도 10의 데이터 정 변환부(50)와, 또한, 데이터 역 변환부(70)는 도 11의 데이터 역 변환부(70)와 동일 구성 및 동일 동작이기 때문에, 내부의 구성 및 동작에 대해서는 생략한다.
이와 같이, 데이터 정 변환부(50) 및 데이터 역 변환부(70)의 적어도 어느 하나에 키를 전송시키는 기능을 구비하는 것에 의해, 도 56 및 도 60에서 나타낸 키 KL 레지스터(240)로부터 선택기(310)에의 키의 패스를 불필요하게 하여, 키 KL 레지스터(240)로부터 키 스케줄부(210)를 거쳐 키를 부 변환부(330)에 입력하고, 또한, 키를 전송시키는 전송 신호를 부 변환부(330)로 입력하여, 부 변환부(330)에 의해 키를 선택기(310)에 전송시키는 것이 가능해진다.
이러한 패스에 의한 키의 전송을 가능하게 함으로써 데이터 변환 장치는, 전체로서, 선택기의 수를 삭감할 수 있다. 즉, 본 실시예의 데이터 변환 장치는, 소형화를 실현하기 위해, 중간키 생성부(40)에 의해 확대키를 생성하기 위한 함수와 주 변환부(320) 및 부 변환부(330)에 의한 데이터 변환을 행하는 함수를 도 2에 도시하는 바와 같이, 공용하고 있지만, 이 때, 도 56 및 도 60에 나타내는, 「키 KL 레지스터(240)로부터 선택기(310)에 입력되고, 연산 레지스터(350)를 거쳐 주 변환부(320)에 입력되는 중간키(키 KL)의 패스」를, 본 실시예에서는, 「키 KL 레지스터(240)로부터 키 스케줄부(210)를 거쳐 부 변환부(330)에 의해 선택기(310)에 전송하고, 연산 레지스터(350)를 거쳐 주 변환부(320)에 입력되는 중간키(키 KL)의 패스」를 이용함으로써, 선택기의 증가를 억지할 수 있다.
이렇게 하여, 블럭 암호 처리를 하는 데이터 변환 장치의 데이터 교반부가 갖는 선택기의 증가를 억지하여, 회로 전체의 게이트수를 감소시킴으로써, 회로 칩 전체의 소형화 및 소비 전력의 저감을 도모할 수 있다. 이 때문에, 소형화와 저소비 전력이 강하게 요망되는 휴대전화 등의 모바일기기에도 본 실시예에 따른 블럭 암호 처리를 하는 데이터 변환 장치를 유효히 실장하는 것이 가능해진다.
또, 도 10 내지 도 33에서 입력되는 입력키는, 각각 다른 키라도, 동일키라도 좋다. 또한, FL 키 트랜스퍼 신호와 FL-1 키 트랜스퍼 신호는 동일 신호라도 좋다. 또한, FL 마스크 신호와 FL-1 마스크 신호는 동일 신호라도 좋다.
(실시예 2)
본 실시예에서는, 데이터 정 변환부(50) 또는 데이터 역 변환부(70)의 적어도 어느 하나가 데이터 전송 기능을 갖는 경우를 설명한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)가 데이터 전송 기능을 갖는 경우)
본 실시예에서는, 부 변환부(330)가 데이터를 전송하는 기능을 구비한 경우의 데이터 변환 장치에 대하여 설명한다.
도 13은, 데이터 정 변환부(50)가 데이터를 전송하는 기능을 갖는 경우의 부 변환부(330)의 내부 구성도이다.
제어부(5)는 데이터를 전송하는 신호로서 FL 데이터 트랜스퍼 신호를 데이터 정 변환부(50)에 입력한다. 데이터 정 변환부(50)에 입력되는 FL 데이터 트랜스퍼 신호는 0의 값을 가지고 있다. 이 신호는 AND 회로(59)와 AND 회로(60)에 입력된다.
AND 회로(54)에서는, 입력 데이터의 상위 비트와 키 1이 AND 회로(54)에 입력된다. AND 회로(54)의 출력 데이터는, 입력 데이터의 값에 의해 불특정이지만, 출력 데이터를 왼쪽으로 1 비트 순회시킨 데이터를 AND 회로(60)로 입력하더라도, 또 한 쪽의 신호인 FL 데이터 트랜스퍼 신호는 0의 값을 가지고 있기 때문에, AND 회로(60)의 출력 신호는 AND 회로(54)의 출력 신호의 값에 관계없이 0으로 된다. AND 회로(60)의 출력 데이터 0은 EXOR 회로(55)에 입력되고, 입력 데이터와 하위 비트의 배타적 논리합이 취해진다. AND 회로(60)의 출력이 0이기 때문에, EXOR 회로(55)에서는 입력된 데이터의 하위 비트가 출력되고, 출력 신호의 하위 데이터로서 출력된다.
한편, EXOR 회로(55)의 출력 데이터는, 키와 함께 OR 회로(57)의 입력 신호로 된다. 여기서, OR 회로(57)의 출력 신호는 불특정이지만, FL 데이터 트랜스퍼 신호가 0으로 고정되어 있기 때문에, AND 회로(59)의 출력 데이터는 0으로 되고, EXOR 회로(56)에서는 입력된 데이터의 상위 비트와 AND 회로(59)의 출력 데이터인 0의 배타적 논리합이 취해지기 때문에, 입력된 데이터의 상위 비트가 출력되고, 출력 신호의 상위 데이터로서 출력된다.
이와 같이, 데이터 정 변환부(50)는, FL 데이터 트랜스퍼 신호를 전송 신호로서 입력함으로써, 입력된 데이터를 키의 입력에 상관없이, 그대로 출력하는 것이 가능해진다.
또, 도 13의 데이터 역 변환부(70)는, 도 57에서 나타내는 데이터 역 변환부(70)와 동일 구성을 가지고 있기 때문에, 설명을 생략한다.
(부 변환 처리-부 변환부(330)-데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우)
도 14는, 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도를 나타낸다.
데이터 역 변환부(70)는, 데이터를 전송하는 FL-1 데이터 트랜스퍼 신호를 입력한다. 데이터를 전송하는 경우, FL-1 데이터 트랜스퍼 신호는 0을 갖기 때문에, OR 회로(74)의 출력 신호의 값에 관계없이, AND 회로(79)는 0을 출력한다. 이 때문에, EXOR 회로(75)에서는, 입력된 데이터의 상위 비트가 그대로 출력되고, 출력 신호의 상위 데이터로 된다.
또한, FL-1 데이터 트랜스퍼 신호는 AND 회로(80)에 입력되기 때문에, AND 회로(77)의 출력 신호가 어떠한 값을 취하더라도, AND 회로(80)의 출력 신호는 0으로 된다. 이 때문에, 입력된 데이터의 하위 비트는 EXOR 회로(76)로 그대로 출력되고, 출력 신호의 하위 데이터로 된다.
이렇게 하여, 데이터 역 변환부(70)는 데이터를 그대로 출력 신호로 하여 전송할 수 있다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)와 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우)
도 15는, 데이터 정 변환부(50)와 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 내부 구성도이다.
데이터 정 변환부(50)의 구성은 도 13의 데이터 정 변환부(50)와 동일 구성이며, 데이터 역 변환부(70)의 구성은 도 14의 데이터 역 변환부(70)와 동일 구성이다. 따라서, 도 15에 나타내는 데이터 정 변환부(50)와 데이터 역 변환부(70)는 각각에 입력되는 데이터를 각각 그대로 출력하는 것이 가능하다.
이와 같이, 부 변환부(330)가 입력 데이터를 그대로 전송하여 선택기(310)로 입력시키는 기능을 갖는 것에 의해, 도 56에 나타내는 주 변환부(320)의 출력 데이터를 선택기(310)로 전송하는 패스가 불필요하게 된다.
또한, 도 60에 나타내는 바와 같이, 주 변환부(320)가 1단분 이하의 F 함수를 갖는 경우의 데이터 암호화/복호 처리에서는, 주 변환부(320)에 의해 1단분의 F 함수의 비선형 변환을 행하기 위해, 연산 레지스터(350)가 일정 기간 동안 데이터를 유지해야 하는 것은 상술했다. 이것은, 주 변환부(320)가 자기자신의 루프 패스를 필요로 하는 것을 의미한다. 도 60에서는, 주 변환부(320)로부터 출력된 중간 데이터가 선택기(310)를 거쳐 연산 레지스터(350)로 출력되는 루프 패스가 이것에 해당한다.
그러나, 본 실시예와 같이, 부 변환부(330)의 데이터를 전송시키는 기능을 이용하면, 상기 루프 패스가 불필요하게 된다. 즉, 주 변환부(320)로부터 출력된 중간 데이터는 부 변환부(330)에 의해 전송되고, 선택기(310)에 입력되며, 선택기(310)가 입력된 중간 데이터를 선택함으로써 주 변환부(320)에 전송된다.
이 데이터 패스를 이용하는 것에 의해, 도 56이나 도 60에 나타내는 선택기(310)에의 입력 신호수와 비교하여, 선택기(310)에의 입력 신호수를 감소시킬 수 있기 때문에, 선택기의 증가를 억지, 감소시키는 것이 가능해진다.
도 6, 도 7에 나타내는 데이터 변환 장치에서도 마찬가지로, 주 변환부(320)로부터 선택기(310)에의 패스가 불필요해져, 장치의 소형화가 도모되고, 또한, 선택기 수의 감소에 따른 저소비 전력화를 도모하는 것이 가능해진다.
또, FL 데이터 트랜스퍼 신호와 FL-1 데이터 트랜스퍼 신호는 동일 신호라도 좋다.
(실시예 3)
본 실시예에서는, 데이터 정 변환부(50) 또는 데이터 역 변환부(70)의 적어도 어느 하나가 키 전송 기능 및 데이터 전송 기능을 갖는 경우를 설명한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)가 키 전송 기능 및 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 키 전송 기능을 갖는 경우)
도 16은, 데이터 정 변환부(50)가 키 전송 기능과 데이터 전송 기능을 구비하고, 데이터 역 변환부(70)가 키 전송 기능을 구비한 경우의 부 변환부(330)의 내부 구성도이다.
데이터 역 변환부(70)의 구성 및 동작은 도 11에서 나타낸 키 전송 기능을 구비한 데이터 역 변환부(70)와 마찬가지기 때문에, 여기서는 설명을 생략한다.
데이터 정 변환부(50)의 구성 및 동작은 도 10에서 나타낸 키 전송 기능을 구비한 데이터 정 변환부(50)와, 도 13에서 나타낸 데이터 전송 기능을 구비한 데이터 정 변환부(50)를 조합한 구성이다.
데이터 정 변환부(50)에서는, FL 키 트랜스퍼 신호는 입력된 데이터를 억지하여, 무효로 하는 기능을 갖고, FL 마스크 신호는 입력키를 통과시키는 기능을 갖는다.
또한, FL 데이터 트랜스퍼 신호는 입력키를 무효로 하여, 데이터를 통과시키는 기능을 갖는다.
따라서, FL 키 트랜스퍼 신호와 FL 마스크 신호가 키를 전송시키는 전송 신호로서 0을 유지하고 있는 경우에는, 데이터를 전송할 수는 없기 때문에, FL 데이터 트랜스퍼 신호는 데이터를 전송시키는 전송 신호로서 0을 유지할 수 없다. 마찬가지로, FL 데이터 트랜스퍼 신호가 데이터를 전송시키는 전송 신호로서 0을 유지하고 있는 경우에는, 키를 전송할 수 없기 때문에, FL 키 트랜스퍼 신호와 FL 마스크 신호는 키를 전송시키는 전송 신호로서 0을 유지할 수 없다.
또한, FL 키 트랜스퍼 신호와 FL 마스크 신호와 FL 데이터 트랜스퍼 신호와 FL-1 키 트랜스퍼 신호와 FL-1 마스크 신호가 전부 전송 신호로서 0을 유지하지 않는 경우에는, 데이터 정 변환부(50)와 데이터 역 변환부(70)는 본래적으로 실행해야 할 입력 데이터의 선형 변환 처리를 한다.
우선, 데이터 정 변환부(50)가 키를 전송하는 동작에 대하여 설명한다.
데이터 정 변환부(50)는, FL 키 트랜스퍼 신호로서 0, FL 마스크 신호로서 0을 입력한다. 데이터는 전송하지 않기 때문에, FL 데이터 트랜스퍼 신호는 1 그대로 있다.
우선, AND 회로(51)는 FL 키 트랜스퍼 신호에 의해 데이터를 억지하여, 무효로 한다. 키 1은 AND 회로(54)를 그대로 통과하고, 1 비트 왼쪽으로 순회 시프트된 후, AND 회로(60)에 입력된다. FL 데이터 트랜스퍼 신호는 1이기 때문에, 키 1은 AND 회로(60)를 그대로 통과하고, EXOR 회로(55)에서는, 키 1과 AND 회로(51)로부터 출력된 출력 데이터 0의 하위 비트의 배타적 논리합을 취하기 때문에, 키 1이 출력 신호의 하위 데이터로서 출력된다.
키 2는, AND 회로(58)로부터 출력된 0에 의해 OR 회로(57)를 통과하고, FL 데이터 트랜스퍼 신호에 의해 AND 회로(59)를 통과하며, EXOR 회로(56)에서 AND 회로(51)로부터 출력된 출력 데이터 0의 상위 비트와의 배타적 논리합을 취하기 때문에, EXOR 회로(56)도 통과하여, 출력 신호의 상위 데이터로 된다. 이렇게 하여, 데이터 정 변환부(50)는 키(키 1, 키 2)를 그대로 전송시킬 수 있다.
다음에, 데이터 정 변환부(50)가 데이터를 전송하는 경우의 동작을 설명한다.
FL 데이터 트랜스퍼 신호는 입력 신호를 0으로 한다. FL 키 트랜스퍼 신호와 FL 마스크 신호는 1을 유지한 채이다.
AND 회로(51)는 데이터를 통과시키고, 통과한 데이터의 하위 비트는 EXOR 회로(55)에 입력된다. AND 회로(60)에서는, 입력되는 FL 데이터 트랜스퍼 신호가 0 이기 때문에, AND 회로(60)의 출력은 0으로 되고, EXOR 회로(55)에 입력된 데이터의 하위 비트는 EXOR 회로(55)를 통과하여, 출력 신호의 하위 데이터로서 출력된다.
마찬가지로, AND 회로(59)의 출력은 FL 데이터 트랜스퍼 신호가 0이기 때문에 0으로 되고, EXOR 회로(56)에 입력된 데이터의 상위 비트는 EXOR 회로(56)를 통과하여 출력 신호의 상위 데이터로서 출력된다.
이렇게 하여, 데이터 정 변환부(50)는 데이터를 그대로 전송시킬 수 있다.
이와 같이, FL 키 트랜스퍼 신호나 FL-1 키 트랜스퍼 신호인 키 트랜스퍼 신호와, FL 마스크 신호와 FL-1 마스크 신호로 이루어지는 마스크 신호는 키를 전송하고, FL 데이터 트랜스퍼 신호는 데이터를 전송한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)가 키 전송 기능을 갖고, 데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 17은, 데이터 정 변환부(50)가 키 전송 기능을 구비하고, 데이터 역 변환부(70)가 키 전송 기능과 데이터 전송 기능을 구비한 경우의 부 변환부(330)의 내부 구성도이다.
데이터 정 변환부(50)의 구성 및 동작은 도 10에서 나타낸 키 전송 기능을 구비한 데이터 정 변환부(50)와 마찬가지기 때문에, 여기서는 설명을 생략한다.
데이터 역 변환부(70)의 동작은 도 16에서 나타낸 데이터 정 변환부(50)와 동일한 동작을 하기 때문에, 동작의 상세에 대해서는 이미 설명했기 때문에 생략한 다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)와 데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 18은, 데이터 정 변환부(50)와 데이터 역 변환부(70)가 각각 키 전송 기능과 데이터 전송 기능을 갖는 경우의 부 변환부(330)의 구성도이다.
데이터 정 변환부(50)와 데이터 역 변환부(70)가 실행하는 전송의 동작에 대해서는, 이미 설명했기 때문에 생략한다. 여기서는, 키 전송 기능과 데이터 전송 기능을 데이터 정 변환부(50)와 데이터 역 변환부(70)가 모두 갖기 때문에, 데이터 변환 장치는 고도의 키 및 데이터 전송 처리를 할 수 있다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 19에서는, 데이터 정 변환부(50)가 키 전송 기능과 데이터 전송 기능을 구비하고, 데이터 역 변환부(70)는 이들 전송 기능의 모두 구비하고 있지 않은 경우의 부 변환부(330)의 구성도이다.
데이터 정 변환부(50) 및 데이터 역 변환부(70)의 동작에 대해서는, 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 20에서는, 데이터 역 변환부(70)가 키 전송 기능과 데이터 전송 기능을 구비하고, 데이터 정 변환부(50)가 이들 전송 기능의 모두 구비하고 있지 않은 경 우의 부 변환부(330)의 구성도이다.
데이터 정 변환부(50)와 데이터 역 변환부(70)의 구체적 동작에 대해서는, 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)가 키 전송 기능 및 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우)
도 21에서는, 데이터 정 변환부(50)는 키 전송 기능과 데이터 전송 기능 모두 갖고, 데이터 역 변환부(70)가 데이터 전송 기능만을 갖는 경우의 부 변환부(330)의 구성도이다.
데이터 정 변환부(50)와 데이터 역 변환부(70)의 각각의 동작에 대해서는, 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖고, 데이터 정 변환부(50)가 데이터 전송 기능을 갖는 경우)
도 22는, 데이터 정 변환부(50)가 데이터 전송 기능을 구비하고, 데이터 역 변환부(70)가 키 전송 기능과 데이터 전송 기능을 구비하는 경우의 부 변환부(330)의 구성도이다.
데이터 정 변환부(50)와 데이터 역 변환부(70)의 각각의 동작에 대해서는, 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)가 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 키 전송 기능을 갖는 경우)
도 23은, 데이터 정 변환부(50)가 데이터 전송 기능을 구비하고, 데이터 역 변환부(70)가 키 전송 기능을 구비한 경우의 부 변환부(330)의 구성도이다.
각 동작에 대해서는, 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)가 키 전송 기능을 갖고, 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우)
도 24는, 데이터 정 변환부(50)가 키 전송 기능을 구비하고, 데이터 역 변환부(70)가 데이터 전송 기능을 구비한 경우의 부 변환부(330)의 구성도이다.
각 동작에 대해서는, 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 역 변환부(70)와 데이터 정 변환부(50)를 직렬로 접속-데이터 정 변환부(50)와 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우)
도 25는, 데이터 역 변환부(70)와 데이터 정 변환부(50)를 직렬로 접속하여, 데이터 역 변환부(70)가 데이터 전송 기능을 구비하고, 데이터 정 변환부(50)도 데이터 전송 기능을 구비한 경우의 구성도이다.
각각의 내부 동작은 상술했기 때문에 생략한다.
도 25에 나타내는 구성에서는, 데이터 역 변환부(70)에 의해 전송된 데이터가 데이터 정 변환부(50)에 입력되고, 데이터 정 변환부(50)에 의해 더 전송되는 출력 신호로서 출력된다.
이와 같이, 데이터 역 변환부(70)와 데이터 정 변환부(50)를 직렬로 배치하여 접속함으로써, 데이터 정 변환부(50)와 데이터 역 변환부(70)에 의한 데이터의 선형 변환뿐만 아니라, 데이터 역 변환부(70)만 또는 데이터 정 변환부(50)만에 의 한 데이터의 선형 변환이 가능하다. 즉, 데이터 역 변환부(70)에 의해 데이터를 선형 변환한 데이터를 데이터 정 변환부(50)에 입력하고, 데이터 정 변환부(50)에서는, 입력한 데이터를 선형 변환하는 일 없이 전송하는 것이 가능하다. 또한, 데이터 역 변환부(70)에서, 입력한 데이터를 데이터 정 변환부(50)에 전송하고, 데이터 정 변환부(50)에서만 데이터를 선형 변환하는 것이 가능하다.
따라서, 데이터 정 변환부(50)만 또는 데이터 역 변환부(70)만으로 데이터의 변환을 행하고 싶은 경우에 유효한 구성이다. 이러한 효과는 후술하는 도 26∼도 30에 나타내는 부 변환부(330)라도 마찬가지로 연주할 수 있다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)와 데이터 역 변환부(70)를 직렬로 접속-데이터 정 변환부(50)와 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우)
도 26은, 도 25의 데이터 정 변환부(50)와 데이터 역 변환부(70)가 상하 교체되어 있는 경우의 부 변환부(330)의 구성을 나타낸다.
동작 및 효과는 도 25에 나타내는 부 변환부(330)와 마찬가지기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)와 데이터 역 변환부(70)를 직렬로 접속-데이터 정 변환부(50)가 키 전송 기능 및 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우)
도 27은, 도 26의 데이터 정 변환부(50)에 더 키 전송 기능을 부가한 부 변환부(330)의 구성도이다.
데이터 정 변환부(50)와 데이터 역 변환부(70)의 내부 구성 및 동작은 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 역 변환부(70)와 데이터 정 변환부(50)를 직렬로 접속-데이터 정 변환부(50)가 키 전송 기능 및 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 데이터 전송 기능을 갖는 경우)
도 28은, 도 27의 데이터 정 변환부(50)와 데이터 역 변환부(70)가 상하 교체되어 있는 경우의 부 변환부(330)의 구성을 나타낸다.
데이터 정 변환부(50)와 데이터 역 변환부(70)의 내부 구성 및 동작은 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)와 데이터 역 변환부(70)를 직렬로 접속-데이터 정 변환부(50)가 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 29는 도 26에 나타내는 구성에 데이터 역 변환부(70)의 키 전송 기능을 추가한 구성도이다.
데이터 정 변환부(50)와 데이터 역 변환부(70)의 구성 및 동작은 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 역 변환부(70)와 데이터 정 변환부(50)를 직렬로 접속-데이터 정 변환부(50)가 데이터 전송 기능을 갖고, 데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 30은, 도 29의 데이터 정 변환부(50)와 데이터 역 변환부(70)가 상하 교 체되어 있는 경우의 부 변환부(330)의 구성을 나타낸다.
내부 구성 및 동작은 상술했기 때문에 생략한다.
이와 같이, FL 키 트랜스퍼 신호 및 FL-1 키 트랜스퍼 신호는 입력된 데이터를 억지하여, 무효로 하는 기능을 갖고, FL 마스크 신호 및 FL-1 마스크 신호는 입력키를 통과시키는 기능을 갖는다.
또한, FL 데이터 트랜스퍼 신호와 FL-1 데이터 트랜스퍼 신호는 입력키를 무효로 하여, 데이터를 통과시키는 기능을 갖는다.
이상의 6개의 신호는 모두 전송 신호이며, 이들 전송 신호가 입력되지 않는 경우에는, 관련기술에 나타내는 바와 같이, 데이터 정 변환부(50)와 데이터 역 변환부(70)는 본래적으로 실행하는 데이터의 선형 변환을 한다.
(부 변환 처리-부 변환부(330)-데이터 정 변환부(50)와 데이터 역 변환부(70)를 직렬로 접속-데이터 정 변환부(50)와 데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 62는, 도 27에 나타내는 데이터 정 변환부(50)의 구성과, 도 29에 나타내는 데이터 역 변환부(70)의 구성으로 이루어진다. 즉, 직렬로 접속된 데이터 정 변환부(50)와 데이터 역 변환부(70)는, 양쪽 모두, 키 전송 기능 및 데이터 전송 기능을 갖고 있다.
데이터 정 변환부(50)와 데이터 역 변환부(70)의 구성 및 동작은 상술했기 때문에 생략한다.
(부 변환 처리-부 변환부(330)-데이터 역 변환부(70)와 데이터 정 변환부(50)를 직렬로 접속-데이터 정 변환부(50)와, 데이터 역 변환부(70)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 63은 도 62의 데이터 정 변환부(50)와 데이터 역 변환부(70)가 상하 교체되어 있는 경우의 부 변환부(330)의 구성을 나타낸다.
내부 구성 및 동작은 상술했기 때문에 생략한다.
(실시예 4)
본 실시예에서는, 데이터 정 변환부(50)와 데이터 역 변환부(70)를 공용의 회로로 한 1/2 부 변환부(90)에 키 및 데이터의 전송 기능을 부가한 구성 및 그 동작에 대하여 설명한다.
(부 변환 처리-부 변환부(330)-1/2 부 변환부(90)가 키 전송 기능 및 데이터 전송 기능을 갖는 경우)
도 31은, 1/2 부 변환부(90)에 키 전송 기능 및 데이터 전송 기능을 부가한 경우의 부 변환부(330)의 구성도이다.
관련기술로 나타낸 도 59에 대하여, 키 트랜스퍼 신호, 마스크 신호, 데이터 트랜스퍼 신호가 부가되어 있다. 또한, 이들 전송 신호의 입력에 따라, 키와 데이터를 전송하기 위한 회로가 부가되어 있다.
우선, 전환 신호는 데이터 정 변환부(50)와 데이터 역 변환부(70)를 전환하는 신호이다. 2-1 선택기(99a)에 입력된 A 신호와 E 신호로부터 전환 신호에 의해 A 신호가 선택되고, 출력 신호 B로서 출력되며, 2-1 선택기(99b)에 입력된 C 신호와 F 신호로부터 전환 신호에 의해 C 신호가 선택되고, 출력 신호 D로서 출력된 경우에는, 1/2 부 변환부(90)는 데이터 정 변환부(50)와 동일한 데이터 변환을 한다.
한편, 2-1 선택기(99a)가 전환 신호에 의해 출력 신호 B로서 E 신호를 선택하고, 2-1 선택기(99b)가 출력 신호 B로서 전환 신호에 의해 F 신호를 선택한 경우에는, 1/2 부 변환부(90)는 데이터 역 변환부(70)와 동일한 데이터 변환을 한다.
전환 신호에 의해 1/2 부 변환부(90)가 데이터 정 변환부(50)로서 기능하는 경우, 도 31에 도시된 동작은 도 18에 도시된 데이터 정 변환부(50)의 동작과 마찬가지로 된다. 즉, 키 트랜스퍼 신호는 도 18의 FL 키 트랜스퍼 신호에 대응하고, 마스크 신호는 도 18의 FL 마스크 신호에 대응하며, 데이터 트랜스퍼 신호는 도 18의 FL 데이터 트랜스퍼 신호에 대응한다.
또한, 각 회로의 대응으로서는, 참조부호 98은 AND 회로(51)(도 18)에 대응하고, 참조부호 91은 EXOR 회로(55)(도 18), 참조부호 95는 AND 회로(60)(도 18), 참조부호 101은 AND 회로(54)(도 18), 참조부호 94는 OR 회로(53)(도 18), 참조부호 100은 NOT 회로(52)(도 18), 참조부호 96은 AND 회로(58)(도 18), 참조부호 92는 OR 회로(57)(도 18), 참조부호 97은 AND 회로(59)(도 18), 참조부호 93은 EXOR 회로(56)(도 18)에 대응한다.
이와 같이 대응하는 것으로, 1/2 부 변환부(90)는 도 18의 데이터 정 변환부(50)의 기능을 발휘할 수 있다. 즉, 데이터의 정 변환을 행하고, 또한, 키 전송 신호를 입력한 경우에는, 입력한 키를 출력 신호로 하는 것에 따라, 키(키 1, 키 2)를 전송하는 것이 가능해진다. 또, 이들 동작에 대해서는, 도 18의 데이터 정 변환부(50)와 마찬가지기 때문에 설명을 생략한다.
1/2 부 변환부(90)가 전환 신호에 의해 데이터 역 변환부(70)로서 기능하는 경우에는, 도 31에 표시된 동작은 도 18에 표시된 데이터 역 변환부(70)의 동작과 마찬가지로 된다. 즉, 키 트랜스퍼 신호는 도 18의 FL-1 키 트랜스퍼 신호에 대응하고, 마스크 신호는 도 18의 FL-1 마스크 신호, 데이터 트랜스퍼 신호는 도 18의 FL-1 데이터 트랜스퍼 신호에 대응한다.
또한, 각 회로의 대응으로서는, 참조부호 98은 AND 회로(71)(도 18)에 대응하고, 참조부호 91은 EXOR 회로(76)(도 18), 참조부호 95는 AND 회로(80)(도 18), 참조부호 101은 AND 회로(77)(도 18), 참조부호 94는 OR 회로(78)(도 18), 참조부호 96은 AND 회로(73)(도 18), 참조부호 92는 OR 회로(74)(도 18), 참조부호 97은 AND 회로(79)(도 18), 참조부호 93은 EXOR 회로(75)(도 18)에 대응한다.
이와 같이 대응함으로써, 1/2 부 변환부(90)는 도 18의 데이터 역 변환부(70)의 기능을 발휘할 수 있다. 즉, 데이터의 역 변환을 행하고, 또한, 키 전송 신호를 입력한 경우에는, 입력한 키를 출력 신호로 하는 것에 의해, 키(키 3, 키 4)를 전송하는 것이 가능해진다. 또, 이들 동작에 대해서는, 도 18의 데이터 역 변환부(70)와 마찬가지기 때문에 설명을 생략한다.
(부 변환 처리-부 변환부(330)-1/2 부 변환부(90)가 데이터 전송 기능을 갖는 경우)
도 32는 1/2 부 변환부(90)에 데이터 전송 기능을 부가한 경우의 부 변환부(330)의 구성도이다.
도 31과 마찬가지로, 2-1 선택기(99a)에 의해 A 신호가 선택되고, 2-1 선택기(99b)에 의해 C 신호가 선택된 경우에는, 1/2 부 변환부(90)는 도 13의 데이터 정 변환부(50)와 동일한 기능을 갖는다. 이 경우, 데이터 트랜스퍼 신호는 FL 데이터 트랜스퍼 신호에 대응한다.
또한, 전환 신호에 의해 2-1 선택기(99a)에서는 E 신호가 선택되고, 2-1 선택기(99b)에서는 F 신호가 선택된 경우에는, 1/2 부 변환부(90)는, 도 14의 데이터 역 변환부(70)와 동일한 기능을 갖는다. 이 경우, 데이터 트랜스퍼 신호는 FL-1 데이터 트랜스퍼 신호에 대응한다.
이러한 1/2 부 변환부(90)의 구성에 의해, 1/2 부 변환부(90)는 데이터를 변환하고, 또한, 데이터를 전송하는 전송 신호를 입력한 경우에는, 데이터를 변환하지 않고 출력함으로써, 전송 처리를 하는 것이 가능해진다.
또, 이들 동작에 대해서는, 상술했기 때문에 설명을 생략한다.
(부 변환 처리-부 변환부(330)-1/2 부 변환부(90)가 키 전송 기능을 갖는 경우)
도 33은, 1/2 부 변환부(90)에 키 전송 기능을 부가한 경우의 부 변환부(330)의 구성도이다.
도 31과 마찬가지로, 2-1 선택기(99a)에 의해 A 신호가 선택되고, 2-1 선택 기(99b)에 의해 C 신호가 선택된 경우에는, 1/2 부 변환부(90)는 도 10의 데이터 정 변환부(50)와 동일한 기능을 갖는다. 이 경우, 키 트랜스퍼 신호 및 마스크 신호는 FL 키 트랜스퍼 신호 및 FL 마스크 신호에 대응한다.
또한, 전환 신호에 의해 2-1 선택기(99a)에서는 E 신호가 선택되고, 2-1 선택기(99b)에서는 F 신호가 선택된 경우에는, 1/2 부 변환부(90)는 도 11의 데이터 역 변환부(70)와 동일한 기능을 갖는다. 이 경우, 키 트랜스퍼 신호 및 마스크 신호는 FL-1 키 트랜스퍼 신호 및 FL-1 마스크 신호에 대응한다.
이러한 1/2 부 변환부(90)의 구성에 의해, 1/2 부 변환부(90)는 데이터를 변환하고, 또한, 키를 전송하는 전송 신호를 입력한 경우에는, 키를 변환하지 않고 출력함으로써, 전송 처리를 하는 것이 가능해진다.
또, 이들 동작에 대해서는, 상술했기 때문에 설명을 생략한다.
본 실시예에서 도시하는 바와 같이, 데이터 정 변환부(50)와 데이터 역 변환부(70)를 공용의 회로로서 구성하는 1/2 부 변환부(90)가 키를 전송하는 기능과 데이터를 전송하는 기능을 구비하는 것에 의해, 부 변환부(330)의 소형화와 상술한 바와 같은 키의 패스 및 데이터 패스를 불필요하게 하는 것에 의한 선택기의 증가방지에 의해, 데이터 변환 장치 전체를 소형화할 수 있다.
이상, 실시예 1 내지 실시예 4에 개시한 블럭 암호를 행하는 데이터 변환 장치는 CAMELLIA의 구성을 중심으로 설명했다. 그러나, 상기에서 설명한 전송 기능을 갖는 부 변환부(330)는, CAMELLIA나 MISTY(미스티)나 KASUMI(가스미) 등, 블럭 암호를 행하는 데이터 변환 장치에 적용할 수 있다.
이상에 설명한 도 1 또는 도 6 또는 도 7에 나타내는 데이터 변환 장치에서는, 선택기(310)를 구성하는 2-1 선택기를 하나 또는 두 개로 하는 것이 가능하다.
이것과 비교하여, 상술한 관련기술을 나타내는 데이터 변환 장치에서는, 도 56에 도시하는 바와 같이, 4개의 신호 중에서 하나의 출력 신호를 선택하기 위해, 2-1 선택기가 3개 필요하게 된다.
또한, 도 60에 의해 도시되는 1/2F 함수를 이용한 데이터 변환 장치에서는, 310은, 5개의 입력 신호 중에서 하나의 출력 신호를 선택하기 위해, 4개의 2-1 선택기가 필요하게 된다.
따라서, 도 1 또는 도 6 또는 도 7에 나타내는 데이터 변환 장치에 의하면, 관련된 기술에 의한 데이터 변환 장치에 비하여, 데이터 교반부(30)를 구성하는 선택기의 수를 감소시키는 것이 가능해진다.
또한, 도 7에 나타내는 데이터 변환 장치에서는, 주 변환부(320)와 부 변환부(330)를 병렬로 배치했기 때문에, 선택기(340)가 하나 필요하게 된다. 선택기(340)는, 주 변환부(320)와 부 변환부(330)로부터 출력된 두 개의 출력 신호를 입력 신호로서 입력하고, 두 개의 입력 신호로부터 하나의 입력 신호를 선택하는 2-1 선택기 하나로 구성되어 있다. 따라서, 도 7에서는, 선택기(310)와 선택기(340)에 필요한 2-1 선택기는 두 개로 된다.
따라서, 도 7에 나타내는 데이터 변환 장치에 있어서도, 관련된 기술에 의한 데이터 변환 장치에 비하여, 데이터 교반부(30)를 구성하는 선택기의 수를 감소시 키는 것이 가능해진다.
(실시예 5)
본 실시예에서는, 블럭 암호 처리를 하는 CAMELLIA에서, 주 변환부(320)와 부 변환부(330)를 병렬로 실장한 CAMELLIA에 대하여 설명한다.
CAMELLIA는, 블럭 길이가 128 비트이며, 키 길이는 128 비트, 192 비트, 256 비트를 이용할 수 있다.
알고리즘의 구성은 상술한 특징을 가지는 FEISTEL 구조이며, 기본적으로 암호화 및 복호 처리는 동일한 하드웨어 또는 소프트웨어로 실현 가능하다.
F 함수는 키 길이에 의존하여, 128 비트키의 경우는 18단(도 34의 주 변환부(320)의 6단×3), 192 비트 및 256 비트의 경우는, 도 54 및 도 55에 도시하는 바와 같이 24단으로 된다. 도 54 및 도 55에 대해서는 후술한다.
도 34는 128 비트키의 CAMELLIA의 경우의 암호화 처리를 나타내는 도면이다. 즉, 도 34에서는, P(평문)에 대하여 주 변환부(320)와 부 변환부(330)에 의한 데이터 변환(데이터의 암호화)을 하여 C(암호문)를 출력한다. 도 34에서는, F 함수 6단마다 FL(데이터 정 변환 함수)과 FL-1(데이터 역 변환 함수)이 삽입된다.
도 34의 좌측은 도 4의 데이터 교반부(30)에 의한 동작으로서 기재되어 있는 것과 마찬가지이다. 즉, 도 4의 EXOR 회로(31a) 및 EXOR 회로(31b)는, 도 34의 EXOR 회로(600)와 EXOR 회로(601)에 대응하고, 실제로는, 부 변환부(330)에 포함되 는 EXOR에 의해 처리된다. 또한, 도 34에 표시되는 모든 키는, 도 4에서 도시하는 바와 같이, 키 스케줄부(210)에 의해 스케줄링되어, 출력된 키를 입력하는 것이다.
또한, 도 34의 우측은 도 57에서 도시한 도면과 마찬가지다.
도 35는 128 비트키의 CAMELLIA의 경우의 복호 처리를 나타내는 도면이다.
도 35에서는, C(암호문)에 대하여 주 변환부(320)와 부 변환부(330)에 의한 데이터 변환(데이터의 복호)을 행하여, P(복호문)를 출력한다.
또, 도 34와 도 35에 나타내는 동작은 상술했기 때문에 생략한다.
CAMELLIA의 F 함수의 내부에 관하여 상세를 설명한다.
도 36은 CAMELLIA의 F 함수의 내부 구성도이다.
CAMELLIA의 F 함수의 내부는 SPN 구조로 되어 있고, 그 데이터 처리는 기본적으로 입력 데이터(1)로부터 입력 데이터(8)의 8 비트 단위로 행하여져, S 박스로 이루어지는 S 함수(324)와 P 함수(325)라고 불리는 배타적 논리합(EXOR)에 의한 선형 변환에 의해 구성된다.
F 함수부(321)에서는, 우선, 8 비트씩의 입력 데이터(1)∼입력 데이터(8)를 입력하고, 입력한 64 비트의 입력 데이터에 키(1)로부터 키(8)까지 8 비트씩의 합계 64 비트의 키와의 배타적 논리를 각각 취해 출력된다. 출력된 데이터는 S 함수(324)에 입력되고, GF(28)의 역원 연산과 아핀 변환을 합성한 S 함수(324)에 의해 바이트 단위로 비선형 변환된다.
다음에, P 함수(325)에 의해 데이터를 배타적 논리합에 의한 선형 변환하고, 이러한 동작을 통하여 데이터를 교반한 후, 출력 데이터(1)∼출력 데이터(8)로서 출력한다.
CAMELLIA의 F 함수의 데이터폭은 64 비트이다. 도 36에서는, S 함수(324)에 S1∼S4의 S 박스를 2조(도 36의 밑에서부터 S1, S2, S3 , S4의 1조와 그 위의 S2, S3, S4, S1의 1조) 준비하고 있다.
따라서, 도 36에 도시하는 바와 같이, 우선, 입력 데이터(1)로부터 입력 데이터(4)에 대한 데이터 변환을 행하고, 다음에, 나머지의 입력 데이터인 입력 데이터(5)로부터 입력 데이터(8)의 데이터 변환을 행하는 것으로 처리하는 것도 가능하다. 이 경우, 상술한 바와 같이, 2회째의 데이터 변환에서는, S1로부터 S4로 순서대로 배치된 S 박스를 구성하는 회로를 그대로 활용하기 위해, 데이터를 1 바이트 미리 순회 시프트시켜 놓아, 순회 시프트시킨 입력 데이터(5)로부터 입력 데이터(8)를 입력함으로써, S 함수(324)의 구성을 바꾸지 않고, 데이터와 S1로부터 S4의 S 박스를 대응시킬 수 있다.
이와 같이, F 함수는 키와 입력 데이터의 EXOR(배타적 논리합), 4종류의 S 함수(S1로부터 S4)의 2회, 및, P 함수(325)에 의한 연산에 의해 데이터의 비선형 변환을 실현하고 있다.
CAMELLIA의 대표적인 연산은, SBOX(GF(28) 상의 역원 회로+아핀 변환) S1로부터 S4의 S 함수(324)와, P 함수(325) 및 데이터 정 변환(FL) 및 데이터 역 변환 (FL-1) 함수이기 때문에, 간단한 불 대수의 조합으로 실현할 수 있다.
다음에, CAMELLIA의 전체 구성 및 동작을 자세히 설명한다.
도 37은 CAMELLIA의 전체 구성 및 동작을 나타낸 도면이다.
CAMELLIA는, 입력되는 비밀키가 128 비트키인 경우는, 내부에서 256 비트로 확대하고, 확대된 확대키를 이용하여 데이터의 암호화/복호 처리를 한다.
입력되는 비밀키가 192 비트 및 256 비트키인 경우는, 내부에서 512 비트로 확대하여 데이터의 암호화/복호에 이용하지만, 192 비트 및 256 비트키인 경우에 대해서는 후술한다.
우선, CAMELLIA의 구조적인 특징을 말한다.
CAMELLIA의 알고리즘 전체는, 주 변환부(320)에 의해 동일한 F 함수를 반복하여 연산하는 것으로 실현하고 있다. 또한, F 함수는 도 36에 나타내는 구성을 갖는다.
또한, 데이터 교반부(30)에서는, 도 4의 EXOR 회로(31a)와 EXOR 회로(31b)에 도시하는 바와 같이, 입력 데이터 및 출력 데이터와 키의 배타적 논리합 연산(EXOR)을 한다. 이것을 화이트닝(whitening)이라고 부른다.
또한, 데이터 교반부(30)에서는, F 함수 6단을 갖는 주 변환부(320)마다 데이터 정 변환(FL)과 데이터 역 변환(FL-1)을 갖는 부 변환부(330)가 삽입되어 있다. 이것은 도 34 및 도 35에 도시되어 있다.
또한, 상술한 대로, 확대키(중간키+출력키)는 도 2에 도시하는 바와 같이 생 성된다.
이상으로부터, 데이터 정 변환(FL)과 데이터 역 변환(FL-1)을 갖는 부 변환부(330), P 함수(325), 4종류의 S 박스로부터 CAMELLIA의 알고리즘을 실현하는 데이터 변환 장치를 구축할 수 있는 것을 알 수 있다.
또한, P 함수(325)는, 「128비트 블록 암호 Camellia 알고리즘 사양서」에 표시되는 표현 방법에 따라 표현함으로써 소형화가 가능하다.
구체적으로는, 상기 사양서에 의해, P 함수는 아래와 같이 표현할 수 있다.
z1’=z1+z3+z4+z6+z7+z8
z2’=z1+z2+z4+z5+z7+z8
z3’=z1+z2+z3+z5+z6+z8
z4’=z2+z3+z4+z5+z6+z7
z5’=z1+z2 +z6+z7+z8
z6’=z2+z3 +z5+z7+z8
z7’=z3+z4 +z5+z6+z8
z8’=z1+z4 +z5+z6+z7
상기의 z1’∼z8’를 구하는 식의 「+」는 배타적 논리합 연산을 나타낸다.
z1로부터 z8은, 각각 S1, S2, S3, S4, S5(=S2), S6(=S3), S7(=S4), S8(=S1)로부터의 출력이다. 여기서, z5로부터 z8을 zz2, zz3, zz4, zz1로 기술 변환하면, 아래와 같이 된다.
z1’=z1+z3+z4+zz1+zz3+zz4
z2’=z1+z2+z4+zz1+zz2+zz4
z3’=z1+z2+z3+zz1+zz2+zz3
z4’=z2+z3+z4+zz2+zz3+zz4
z5’=z1+z2 +zz1+zz3+zz4
z6’=z2+z3 +zz1+zz2+zz4
z7’=z3+z4 +zz1+zz2+zz3
z8’=z1+z4 +zz2+zz3+zz4
이에 따라, S1로부터 S4를 z1로부터 z4를 출력시키는 연산 및 zz1로부터 zz4를 출력시키는 연산과 같이, 2 클럭 걸어 연산하는 것으로, P 함수도 대략 절반의 회로로 구성하는 것이 가능하다.
CAMELLIA에 의한 데이터 변환 장치를 도 37에 근거하여 설명한다.
도 37에 나타내는 CAMELLIA의 데이터 변환 장치에서는, 주 변환부(320)와 부 변환부(330)가 병렬로 배치되어 있다.
부 변환부(330)는 데이터 정 변환부(50)와 데이터 역 변환부(70)를 갖고 있다.
주 변환부(320)는, 1/2의 F 함수로 구성되는 F 함수부를 갖고 있다. 주 변환부(320)가 F 함수 미만의 F 함수, 즉, 1/2x(x≥1)F 함수로 구성된 경우는, 도 61의 1/2F 함수를 예로 들어 설명한 바와 같이, 1단의 F 함수를 F 함수부(1321a)에 의한 처리와 F 함수부(1321b)에 의한 처리의 중간 결과인 EXOR 회로(1322a)의 출력 결과를 유지해야 한다.
일반적으로, 실장하는 F 함수의 개수를 삭감하고, 1단의 F 함수에 의한 데이터 변환 처리를 복수회의 루프구조로 실현하는 방법을 채용하면, F 함수분의 회로 규모는 감소하지만, 루프를 제어하는 제어 회로나 각 F 함수에 키를 입력시키기 위한 선택기 등의 회로는 증가한다. 이와 같이, F 함수분의 회로 규모와 루프를 제어하기 위한 회로 규모는 트레이드오프(tradeoff)의 관계에 있다.
따라서, CAMELLIA의 데이터 변환 장치의 소형화를 생각한 경우, 실장하는 F 함수의 개수 및 반복 회수를 검토해야 한다. 즉, F 함수를 주 변환부(320)에 하나 실장한 CAMELLIA의 데이터 변환 장치를 실현할지, 또는, F 함수내의 SBOX의 실장하는 수를 삭감하여, 1단분의 F 함수에 의한 데이터 변환을 수 사이클로 연산시킬지 등을 충분히 검토할 필요가 있다. 이것은, 1단 미만의 F 함수로 F 함수부를 구성함으로써 삭감되는 회로 규모와 루프를 구성하기 위한 선택기 등의 증가에 의한 회로 규모 증가의 트레이드오프의 검토를 의미한다.
또한, CAMELLIA의 경우, 상술한 바와 같이, 출력키(키 KA)를 생성하기 위해 이용하는 함수는 데이터 교반부(30)의 주 변환부(320)의 일부를 이용한다. 따라서, 이 경우에도, 데이터 교반부(30)의 F 함수를 이용하기 위해 추가되는 선택기 등의 영향을 충분히 검토할 필요가 있다.
도 36을 이용하여 설명한 바와 같이, CAMELLIA의 F 함수는 8 비트 입출력을 하는 4종류(S1, S2, S3, S4)의 S 박스를 2회씩 사용하고 있다. 여기서는, SBOX를 8개 실장할지, 또는, 4개 실장하여 2회 반복할지 등의 검토가 필요하다.
2001년 암호와 정보 안전 심포지엄 예비원고집에 기재된 「128 비트 블럭 암호의 하드웨어 실장에 대하여(III)」로부터, S 박스 하나의 회로 규모는, 대략 200 게이트이며, S 박스를 8개로부터 4개로 4개 삭감하면, 대략 800 게이트의 삭감이 된다.
한편, 이것과 트레이드오프의 관계에 있는 반복을 하기 위한 2-1 선택기가 적어도 32개(대략 NAND 회로 100 게이트) 필요하게 된다.
이에 따라, S 박스를 8개 실장하는 것보다, 4개 실장하여 2회 반복하는 것에 의해 회로가 작아질 것이 예상된다.
따라서, CAMELLIA의 데이터 변환 장치의 F 함수부(321)는, S 박스를 8개 실장하여 1회의 데이터 변환을 행하는 것이 가능하지만, S 박스를 4개 실장하여 2회의 데이터 변환을 반복하는 것에 의해, 데이터 변환을 행하는 것도 가능하고, 어느 것을 이용하여도 좋다. 단, 회로 규모를 고려하면, 2회의 데이터 변환을 반복하는 쪽이 바람직하다.
도 37에 나타내는 CAMELLIA의 알고리즘을 이용한 경우, 이 순차에 의해, 중간키 생성부(40) 사이클로 데이터의 암호화/복호를 실현할 수 있다.
이하에, 중간키 생성부(40) 사이클의 처리과정을 나타낸다.
우선, 단계 1에서는, 부 변환부(330)를 이용하여 화이트닝을 연산한다.
다음에, 단계 2에서, 주 변환부(320)를 이용하여 F 함수의 1/2의 처리(1/2F 함수)를 연산한다.
마찬가지로 단계 3에서, 주 변환부(320)를 이용하여 나머지의 F 함수의 1/2의 처리(1/2F 함수)를 연산한다.
단계 4∼단계 13에서는, 단계 2∼단계 3을 5회 실행한다.
단계 14에서는, 부 변환부(330)의 데이터 정 변환(FL)과 데이터 역 변환(FL-1) 함수를 연산함으로써 데이터의 변환을 한다.
또한, 단계 15∼단계 27에서, 단계 2∼단계 14를 반복한다.
또한, 단계 28∼단계 39에서, 단계 2∼단계 13을 반복한다.
최후에 단계 40에서, 단계 S1과 동일한 화이트닝을 연산한다.
여기서, 단계 1은 도 4의 EXOR 회로(31a)에 의한 연산을 나타내고, 단계 40은 도 4의 EXOR 회로(31b)에 의한 연산을 나타내고 있다. 즉, EXOR 회로(31a)와 EXOR 회로(31b)는, 부 변환부(330)에 구비된 데이터 정 변환부(50)와 데이터 역 변환부(70)가 갖는 EXOR를 사용하여 연산을 한다.
또, 키 생성부(20)의 구성 및 동작은 상술한 바와 마찬가지기 때문에 설명을 생략한다.
상술한 단계 2 및 단계 3에서는, 주 변환부(320)에 의해 2 사이클로 하나의 F 함수에 의한 데이터 변환을 한다. 이 데이터 처리에 대하여, 도 37과 도 64를 이용하여, 구체적인 동작을 설명한다.
도 64는, 도 61과 비교하면, 입력키로서 하위의 키가 최초에 입력되고, 상위의 키가 다음에 입력되어 처리가 실현되는 점에서 다르다.
우선, 단계 1의 구체적 동작에 대하여 설명한다. 입력 데이터인 P(평문 또는 복호문)는, 2-1 선택기(311)에 의해 선택되어, 상위 데이터와 하위 데이터로 분할되고, 상위 데이터는 부 변환부(330)의 데이터 정 변환부(50)에 의해 화이트닝되며, 하위 데이터는 부 변환부(330)의 데이터 역 변환부(70)에 입력되어, 마찬가지로 화이트닝된다. 화이트닝된 상위 데이터와 하위 데이터는 2-1 선택기(340)의 2-1 선택기 H341과 3-1 선택기 L342에 입력된다. 각각 입력된 데이터는 2-1 선택기 H341과 3-1 선택기 L342에 의해 선택되고, 연산 레지스터 H351과 연산 레지스터 L352에 유지된다.
다음에, 단계 2의 동작에 대하여 설명한다.
연산 레지스터 H351에 유지된 상위 데이터의 상위 비트가, 2-1 선택기(312)에 입력되고, 또한, 상위 데이터의 하위 비트가 1 바이트 로테이트 시프트되어, 2-1 선택기(312)에 입력된다. 2-1 선택기(312)는 두 개의 입력 데이터로부터 로테이트 시프트되어 있는 하위 비트를 선택하여, 주 변환부(320)로 출력한다. 선택된 하위 비트를 1 바이트 로테이트 시프트함으로써, 도 36에 도시하는 바와 같이, 각 입력 데이터(5)부터 (8)를 각 S 박스에 적용시켜 입력시킬 수 있다. 주 변환부(320)에서는, 1/2F 함수를 가지는 F 함수부(321)에 의해, 도 64에 나타내는 1단째의 상반부의 데이터 변환이 행해진다. 여기서, 도 37의 F 함수부(321)와 도 64의 1/2F 함수로 이루어지는 F 함수부(1321a)∼F 함수부(1321l)는 동일 구성을 취한다. 도 64에 나타내는 F 함수부(1321a)에 의한 데이터 변환은, 키 1L을 이용하여 입력된 상위 데이터중, 하위 반수 비트를 데이터 변환하고, 변환후의 데이터를 EXOR 회로(1322a)에 출력한다. EXOR 회로(1322a)는, F 함수부(1321a)에 의해 출력된 변환후의 데이터를 입력하고, 또한, 입력된 하위 데이터와의 배타적 논리합을 취한다. 즉, 출력된 데이터(중간 데이터)는, 주 변환부(320)로부터 3-1 선택기 L342에 입력되어, 연산 레지스터 L352에 유지된다. 이것과 동시에, 연산 레지스터 H351에 유지되어 있던 P의 상위 데이터가 2-1 선택기(311)를 통해, 부 변환부(330)의, 예컨대, 데이터 정 변환부(50)의 데이터 전송을 이용하여 데이터 전송을 하고, 2-1 선택기 H341을 경유하여, 연산 레지스터 H351로부터, 다시 연산 레지스터 H351에 유지된다.
다음에, 단계 3의 동작에 대하여 설명한다.
도 64의 F 함수부(1321b)에 의한 데이터 처리는 도 37의 주 변환부(320)에 의한 2 사이클째의 처리로 실현된다. 즉, 1 바이트 로테이트 시프트시키지 않고, 2-1 선택기(312)에 입력한 상위 데이터의 상위 비트를 2-1 선택기(312)가 선택하여, 주 변환부(320)에 출력한다. 이러한 적용에 의해, 상위 데이터의 상위 반수 비트의 데이터가 F 함수부(1321b)에 의해 비선형 변환되어 EXOR 회로(1322b)로 출력된다. EXOR 회로(1322b)에서는, 또 한 쪽의 입력 신호로서, 1 사이클째에 주 변환부(320)가 출력하여, 연산 레지스터 L352에 유지된 중간 데이터를 주 변환부(320)에 입력함으로써, EXOR 회로(1322b)에 입력한다. EXOR 회로(1322b)에서 배타적 논리합이 취해진 후의 출력 데이터는 2-1 선택기 H341에 선택되어 연산 레지스 터 H351에 유지된다. 이 시점에서, P의 상위 데이터는 3-1 선택기 L342를 경유하고 연산 레지스터 L352에 유지되어 있다. 따라서, 도 64의 주 변환부(320)에서 행해지는 2단째의 데이터 변환 처리에 이용되는 상위 데이터와 하위 데이터가 연산 레지스터 H351과 연산 레지스터 L352에 유지되어 있는 것으로 된다.
단계 4∼단계 13에서는, 단계 2∼단계 3을 5회 실행한다.
즉, 2단째의 데이터 변환을 F 함수부(1321c)와 EXOR 회로(1322c)에서 1 사이클, F 함수부(1321d)와 EXOR 회로(1322d)에서 1 사이클, 합쳐서 2 사이클로 실행하는 처리가 단계 4, 단계 5의 처리에 상당한다. 3단째로부터 6단째의 처리도 마찬가지로 실행하지만, 이것이 단계 6∼단계 13의 처리에 상당한다.
또, 상술한 바와 같이, 도 64의 F 함수부(1321a)로부터 F 함수부(1321l)의 함수는 도 37의 F 함수부(321)의 함수와 동일한 함수이다.
다음에, 단계 14의 처리에 대하여 설명한다.
이것은 도 37의 부 변환부(330)에 의한 처리를 나타내는 것이다.
우선, 연산 레지스터 H351과 연산 레지스터 L352에 유지된 단계 13의 처리후의 상위 데이터와 하위 데이터는 2-1 선택기(311)에 입력되어 선택되고, 상위 데이터를 데이터 정 변환부(50)에 입력하고, 하위 데이터를 데이터 역 변환부(70)에 입력한다.
데이터 정 변환부(50)와 데이터 역 변환부(70)에서는 입력된 각각의 데이터를 선형 변환하며, 데이터 정 변환부(50)에 의한 변환 데이터는 2-1 선택기 H341에 입력되고, 데이터 역 변환부(70)에 의한 변환 데이터는 3-1 선택기 L342에 입력되 며, 각각 선택되어, 각각 연산 레지스터 H351, 연산 레지스터 L352에 유지된다.
단계 15로부터 단계 27의 처리는 도 37의 주 변환부(320)의 처리와 부 변환부(330)의 처리에 해당한다.
단계 28로부터 단계 39의 처리는 도 37의 주 변환부(320)의 처리에 해당한다.
단계 40에서는, 단계 1과 마찬가지로, 부 변환부(330)의 EXOR을 이용하여 화이트닝을 한다.
이들 중간키 생성부(40) 단계를 거쳐, 입력 데이터 P가 평문인 경우에는, 암호화 처리에 의해 암호문 C가 출력되고, 입력 데이터 P가 암호문인 경우에는, 암호화 처리와 동일 회로에 의해 복호 처리가 행하여져, 복호문 C를 출력하는 것이 가능해진다.
이와 같이, 도 37에 나타내는 CAMELLIA를 이용한 데이터 변환 장치에서는, 주 변환부(320)와 부 변환부(330)를 병렬하여 배치한 것에 의해, 직렬로 배치한 경우에 비해, 1 사이클의 사이클 시간을 단축 가능하여, 동작 주파수의 향상을 도모할 수 있다.
또한, 주 변환부(320)와 부 변환부(330)를 병렬하여 배치한 것에 의해, 주 변환부(320)를 통과하지 않고 부 변환부(330)에 신호를 입력할 수 있는 패스와, 부 변환부(330)를 통과하지 않고 주 변환부(320)에 신호를 입력할 수 있는 패스가 존재하는 것으로 되었기 때문에, 장래적으로 행해지는 다른 구성이나 다른 동작의 부가, 삭제 등의 변경에 대하여 유연하게 대응할 수 있다.
또한, 주 변환부(320)와 부 변환부(330)를 직렬로 배치한 CAMELLIA를 사용한 데이터 변환 장치에서는, 상술한 바와 같이 복수 사이클로 F 함수에 의한 1회의 데이터 변환을 행하는 경우에는, 1 사이클로 변환 대상으로 되는 데이터는, 입력 데이터의 일부이기 때문에, 입력 데이터의 일부의 변환 데이터를 연산 레지스터(350)에 유지하여, 일정 기간후에 부 변환부(330)에 보내기 위한 패스를 데이터 교반부(30)중에 마련하거나, 또는, 일정 기간후에 주 변환부(320)를 전송하여 부 변환부(330)에 보내기 위한 전송 패스를 주 변환부(320)중에 마련해야 했다.
그러나, 본 실시예에서는, 주 변환부(320)와 부 변환부(330)를 병렬로 배치했기 때문에, 상기 패스의 부가나 주 변환부(320)의 전송 패스 기능의 추가를 불필요하게 하여, 장치의 회로 규모의 증가를 억지하는 것이 가능해진다.
또한, 도 59에 나타내는 데이터 정 변환부(50)와 데이터 역 변환부(70)의 공용 회로를 이용한 경우에는, A→B→C→D→E→B→C…의 패스가 루프 회로로 된다. 이 때문에, 실제의 LSI로 할 때에, 전환 신호의 전파 지연의 차에 의한 신호의 레이싱, 노이즈 등의 영향에 의해, 발신 회로가 되지 않는 고안이 필요하게 된다. 또한, 이러한 상기 루프 회로(FEEDBACK-LOOP 회로)를 가진 회로에는, 논리 합성 툴이 대응할 수 없고, 효율적으로 논리 합성이 행해지지 않는다는 문제가 발생하고 있었다.
그래서, 도 37에서는, 부 변환부(330)의 데이터 정 변환부(50)와 데이터 역 변환부(70)를 따로따로 마련하는 구성으로 했다. 이 때문에, 상기 레이싱 등의 문제를 발생시키지 않는 데이터 변환 장치의 구축이 가능해졌다.
또한, 상술한 바와 같이, 도 37에서는, 부 변환부(330)의 키 및 데이터의 전송 기능을 이용함으로써 키 KL 레지스터(240)로부터의 키의 패스와 주 변환부(320)로부터의 데이터 패스를 불필요하게 할 수 있다. 이 때문에, CAMELLIA의 블럭 처리를 하는 데이터 변환 장치의 가일층의 소형화와 저소비 전력화를 도모할 수 있다.
(실시예 6)
다음에, 실시예 6에 대하여 설명한다.
도 38은 실시예 6의 CAMELLIA의 데이터 변환 장치의 구성도이다.
도 37에 비해, 부 변환부(330)가, 데이터 정 변환부(50)와 데이터 역 변환부(70)를 공용 회로로 하는 1/2 부 변환부(90)에 의해 구성되어 있는 점이 다르다. 이 때문에, 도 37의 2-1 선택기(215), 4-1 선택기(217)가 불필요하게 된다.
이와 같이, 본 실시예의 데이터 변환 장치에서는, 2-1 선택기(215), 4-1 선택기(217)에 필요한 4개의 선택기와 2-1 선택기(215)에 의해 출력된 키를 부 변환부(330)에 입력하는 패스가 불필요하게 된다. 이 때문에, 키 스케줄부(210)의 구성을 간략화할 수 있어, 데이터 변환 장치의 가일층의 소형화를 도모할 수 있다.
(실시예 7)
도 47은 실시예 7을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
본 실시예는, 도 37의 구성도와 비교하여, 주 변환부(320)의 F 함수부(321) 가 1/8의 F 함수로 구성되는 부분이 다르다. 즉, 본 실시예에서는, 주 변환부(320)는 8 사이클로 F 함수 하나의 데이터 변환을 행하는 것으로 된다. 따라서, 도 37과 비교하여, 도 37의 2-1 선택기(312)가 8-1 선택기(315)로 변경되어 있다. 다른 구성은 도 37과 마찬가지다.
(실시예 8)
도 48은 실시예 8을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
본 실시예에서는, 도 47에서 나타내는 실시예와 비교하여, 참조부호 330은 1/2 부 변환부(90)를 구비하는 점에서 다르다. 따라서, 도 47에 나타내는 2-1 선택기(215)와 4-1 선택기(217)가 불필요하게 된다.
(실시예 9)
본 실시예를 도 49에 나타낸다.
도 49는 실시예 9를 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
본 실시예에서는, 도 37과 비교하여, 주 변환부(320)의 F 함수부(321)가 1/4의 F 함수로 구성되는 점에서 다르다. 따라서, 도 37의 2-1 선택기(312)가 도 49에서는, 4-1 선택기(316)로 되어 있다. 4-1 선택기(316)에 의해 선택된 16 비트의 입력 데이터를 사용하여, F 함수부(321)에 의해 주 변환부(320)는 4 사이클의 데이터 변환을 행하는 것으로 하나의 F 함수에 대한 데이터 변환을 한다. 다른 구성은 도 37과 마찬가지다.
(실시예 10)
도 50은 실시예 10을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
도 49에 나타내는 실시예와 비교하여, 부 변환부(330)가 1/2 부 변환부(90)를 구비하는 점에서 다르다. 따라서, 도 49와 비교하여, 2-1 선택기(215)와 4-1 선택기(217)가 불필요하게 된다. 다른 구성은 도 49와 마찬가지다.
(실시예 11)
다음에, 실시예 11에 대하여 설명한다.
도 39는 실시예 11을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
도 37과 다른 점은, 주 변환부(320)가 F 함수를 하나 가지는 F 함수부(321)에 의해 구성되어 있는 점이다. 따라서, 주 변환부(320)는, F 함수 1단의 처리를 1 사이클로 실행할 수 있기 때문에, 도 37에 존재하고 있었던 2-1 선택기(312)는 불필요하게 된다. 또한, 도 37의 2-1 선택기(212)가 불필요해져, 8-1 선택기(213)가 4개의 정수로부터 하나의 정수를 선택하는 4-1 선택기(218)로 변경되어 있다.
(실시예 12)
다음에, 실시예 12에 대하여 설명한다.
도 40은 실시예 12를 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
도 40에서는, 2-1 선택기(313)가 부가되어 있다. 이것은, 부 변환부(330)가 1/2 부 변환부(90)에 의해 구성되기 때문에, 2-1 선택기(311)에 의해 선택된 데이 터로부터, 그 상위 데이터나 하위 데이터중 어느 하나를 선택하기 때문이다. 본 실시예에서는, 주 변환부(320)에 의한 처리를 1 사이클로 실행하기 때문에, 도 39와 마찬가지로 2-1 선택기(312)는 불필요하게 된다. 또한, 도 39의 2-1 선택기(215)와 4-1 선택기(217)가 불필요하게 된다.
(실시예 13)
다음에, 실시예 13에 대하여 설명한다.
도 41은 실시예 13을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
도 39와 비교하면, 주 변환부(320)가 F 함수부(321)를 6회 반복하는 것은 아니고, 주 변환부(320)가 F 함수부(321)를 6단 직렬로 갖고, 데이터의 변환을 행하는 점에서 다르다. 따라서, 본 실시예에서는, 주 변환부(320)의 출력 신호가 하나 증가하고 있다. 이것은, 주 변환부(320)의 2단째의 F 함수의 출력 데이터를 3-1 선택기 H343과 4-1 선택기 L344에 입력하고, 연산 레지스터 H351과 연산 레지스터 L352에 의해 유지시키기 때문이다. 이 때문에, 3-1 선택기 H343은 입력 신호가 3개로 되고, 4-1 선택기 L344는 입력 신호가 4개로 되어 있다.
또한, 4-1 선택기(500)와 4-1 선택기(501)를 4조 구비하고, 그것들로부터 선택된 4개의 키를 주 변환부(320)에 입력하는 선택기가 증가하고 있다. 또한, 키 스케줄부(210)의 다른 선택기인 4-1 선택기(502)와 4-1 선택기(503)로부터도 부 변환부(330)와 주 변환부(320)에 키가 공급되는 구성으로 되어 있다.
(실시예 14)
다음에, 실시예 14에 대하여 설명한다.
도 42는 실시예 14를 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
도 42는, 도 41과 마찬가지로, 6단의 F 함수를 직렬로 구비한 F 함수부를 주 변환부(320)가 구비하는 점에서 도 40과 다르다. 이 때문에, 도 41의 경우와 마찬가지로, 도 40과 비교하여, 3-1 선택기 H343과 4-1 선택기 L344의 입력 신호가 하나씩 증가하고, 또한, 4-1 선택기(500)와 4-1 선택기(501)를 4조 구비하는 것이 필요하게 된다. 또한, 키 스케줄부(210)의 다른 선택기인 4-1 선택기(502)와 3-1 선택기(504)로부터도 부 변환부(330)와 주 변환부(320)에 키가 공급되는 구성으로 되어 있다. 또, 3-1 선택기(504)에는, 3개의 입력 신호가 입력된다.
(실시예 15)
본 실시예를 도 43에 나타낸다.
도 43은 실시예 15를 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
본 실시예에서는, 도 41과 비교하여, 주 변환부(320)가 F 함수를 2단 구비한 F 함수부(321)를 갖는 점에서 다르다. 따라서, 도 41과 비교하여, 3-1 선택기 H343과 4-1 선택기 L344가 2-1 선택기 H341과 3-1 선택기 L342로 치환되고, 또한, 4-1 선택기(500)와 4-1 선택기(501)를 구비한 4조의 선택기가 불필요하게 되어 있다.
(실시예 16)
본 실시예를 도 44에 나타낸다.
도 44는 실시예 16을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
본 실시예에서는, 도 42의 실시예와 비교하여, 주 변환부(320)가 구비하는 F 함수부(321)가 2단의 F 함수로 이루어져 있는 점에서 다르다. 따라서, 도 42의 3-1 선택기 H343과 4-1 선택기 L344가 2-1 선택기 H341과 3-1 선택기 L342로 치환되고, 또한, 4-1 선택기(500)와 4-1 선택기(501)로 이루어지는 4조의 선택기가 불필요하게 된다.
(실시예 17)
도 45는 실시예 17을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
본 실시예에서는, 주 변환부(320)의 F 함수부(321)가 3단의 F 함수를 갖고 있다. 따라서, 도 41과 비교하면, 4-1 선택기(500)와 4-1 선택기(501)로 이루어지는 4조의 선택기가 불필요하게 되고, 그 대신에, 4-1 선택기(505)가 부가되어 있다. 4-1 선택기(505)에 의해 선택된 신호가 주 변환부(320)에 입력된다.
(실시예 18)
도 46은 실시예 18을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
도 45에 나타내는 실시예와 마찬가지로, 주 변환부(320)의 F 함수부(321)는 3단의 F 함수를 갖고 있다. 도 45와 비교하여 다른 부분은, 본 실시예에서는 부 변환부(330)가 1/2 부 변환부(90)를 구비고 있는 것이다. 다른 구성은 마찬가지이다.
(실시예 19)
도 51은 실시예 19를 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
본 실시예에서는, 우선, 중간키 생성부(40)의 구성이 도 37 등과 비교해서 다르다. 본 실시예에서 나타내는 중간키 생성부(40)의 구성과 도 37 등에서 나타내는 중간키 생성부(40)의 구성은 등가이기 때문에, 도 37 등의 중간키 생성부(40)는 도 51에서 나타내는 중간키 생성부(40)로 치환하는 것이 가능하다.
도 51의 중간키 생성부(40)의 구성에 대하여 설명한다.
우선, 2-1 KL 선택기(291)는, 입력된 비밀키와 키 KL 레지스터(240)에 유지된 중간키(키 KL)를 입력하고, 이 두 개의 입력 신호 중에서 하나의 신호를 선택하여 키 KL 레지스터(240)에 유지한다. 또한, 2-1 KA 선택기(292)는, 중간키 생성부(40)가 생성하는 출력키와 키 KA 레지스터(250)에 유지된 출력키(키 KA)를 입력한다. 입력된 두 개의 입력 신호로부터 2-1 KA 선택기(292)는 하나의 신호를 선택하고, 선택된 신호를 키 KA 레지스터(250)가 유지한다.
2-1 선택기(227)는, 키 KL 레지스터(240)와 키 KA 레지스터(250)에 유지된 중간키(키 KL)와 출력키(키 KA) 중에서 하나의 키를 선택하여, 8-1 선택기(228)에 출력한다. 8-1 선택기(228)는 2-1 선택기(227)에 의해 선택된 키를, 도 51에 도시하는 바와 같이, 0, 15, 30, 45, 60, 77, 94, 111의 8개의 비트수로 오른쪽 또는 왼쪽으로 순회 시프트시킨다. 즉, 순회 시프트 비트수가 0인 경우에는, 데이터를 시프트하지 않는다. 순회 시프트 비트수가 15인 경우에는, 오른쪽 또는 왼쪽으로 15 비트 데이터를 순회 시프트시킨다. 다른 것도 마찬가지이다. 이와 같이, 데이터를 순회 시프트시킴으로써 8개의 신호를 생성하고, 8개의 신호 중에서 8-1 선택기(228)는 하나의 신호를 선택하여 출력한다.
이러한 동작에 의해, 도 37의 중간키 생성부(40)의 기능과 동일한 기능을, 본 실시예의 구성을 가지는 중간키 생성부(40)가 행하는 것이 가능해진다. 이렇게 하여, 중간키 생성부(40)로부터 출력된 데이터중, 상위 반수 비트를 KLH, 하위 반수 비트를 KLL로 하여, 키 스케줄부(210)의 2-1 선택기(510)와 2-1 선택기(511)에 입력한다. 이와 같이, 도 37의 4-1 선택기(216)와 4-1 선택기(217)는, 본 실시예에서는, 2-1 선택기(510)와 2-1 선택기(511)로 치환할 수 있다.
따라서, 도 52에 나타내는 중간키 생성부(40)에서는, 2-1 선택기가 도 37에 나타내는 중간키 생성부(40)와 마찬가지로 10개 필요하지만, 2-1 선택기(510)와 2-1 선택기(511)에 필요한 2-1 선택기는 두 개만 필요하기 때문에, 중간키 생성부(40)와 2-1 선택기(510)와 2-1 선택기(511)에서 필요한 2-1 선택기는 전체로 12개로 된다.
도 37에 나타내는 중간키 생성부(40)에서는, 10개의 2-1 선택기가 필요하고, 또한, 4-1 선택기(216)와 4-1 선택기(217)에 6개의 2-1 선택기가 필요하기 때문에, 중간키 생성부(40)와 4-1 선택기(216)와 4-1 선택기(217)가 구비할 필요가 있는 2-1 선택기는 합계로 16개로 된다.
따라서, 도 37에 나타내는 데이터 변환 장치와 비교하여, 본 실시예의 데이터 변환 장치는 전체로서 4개의 2-1 선택기를 삭감할 수 있다.
따라서, 본 실시예에서는, 선택기의 삭감에 의한 소형화와 선택기의 삭감에 의한 게이트수의 감소에 따르는 저소비 전력화를 도모할 수 있다.
또, 본 실시예에서 나타낸 중간키 생성부(40)의 구성은 다른 모든 실시예에 있어서의 중간키 생성부(40)의 구성으로서 이용하는 것이 가능하다.
(실시예 20)
도 52는 실시예 20을 나타내는 CAMELLIA의 데이터 변환 장치의 구성도이다.
도 51과 비교하여, 본 실시예에서는, 부 변환부(330)가 1/2 부 변환부(90)를 구비하는 점에서 다르다. 따라서, 도 51에 나타내는 2-1 선택기(215)와 2-1 선택기(511)가 본 실시예에서는 불필요하게 된다. 다른 구성은 도 51과 마찬가지다.
또, 도 51과 도 52에서 도시되는 로테이트 시프트수는 순회 시프트 비트수와 마찬가지다.
(실시예 21)
실시예 4의 설명 중에 나타낸 도 34와 도 35는, 128 비트 길이의 키를 이용한 CAMELLIA에 의한 암호화 처리 및 복호 처리를 하는 처리를 나타내고 있었다.
그러나, 모든 실시예에 대한 데이터 변환 장치의 구성도는, 128 비트 길이의 키뿐만 아니라, 192 비트 길이의 키 및 256 비트키의 모두에 근거한 암호화/복호 처리를 하는 CAMELLIA의 데이터 변환 장치에도 적용할 수 있다.
도 53은 192 비트키의 생성 과정을 나타낸 도면이다.
상술한 128 비트키의 경우에는, 확대키로서 256 비트 길이의 키를 생성했지만, 입력하는 비밀키가 192 비트인 경우 및 256 비트인 경우에는, 확대키는 512 비트 길이로 된다.
도 53에서는, 키 KL과 키 KR가 중간키이며, 키 KA와 키 KB가 출력키이다. 또한, 키 KL, 키 KR, 키 KA, 키 KB는, 모두 128 비트이기 때문에, 이들을 합계하여 확대키 512 비트가 생성되는 것으로 된다.
입력되는 비밀키가 256 비트인 경우에는, 키 KL은 입력된 비밀키의 상위 절반 비트의 128 비트로 되고, 키 KR는 하위 128 비트로 된다.
키 KL과 키 KR는 배타적 논리합을 취하고, 도 53에 도시하는 바와 같이, 주 변환부(320)의 일부에 입력된다.
도 53은, 비밀키가 128 비트 길이인 경우의 확대키의 생성 방법을 나타낸 도 2의 우측의 부분에 대응하고 있다.
도 53의 좌측의 입력키로부터 출력키 KA를 생성하는 방법은, 키 KL과 키 KR의 배타적 논리합이 입력키로 되는 점을 제외하고, 도 2에 나타내는 출력키 KA의 생성 방법과 마찬가지다. 도 53의 우측의 키 KR로부터 출력키 KB를 생성하는 과정은 도 2에 존재하지 않는다. 따라서, 출력키(키 KB)의 생성 방법에 대하여 설명한다.
입력된 키가 256 비트인 경우에는, 하위 128 비트를 입력키(키 KR)로 하여, 주 변환부(320)에 입력한다. 하위 128 비트 중의 상위 비트가 주 변환부(320)의 1단째에 위치하는 F 함수부(321a)를 이용하여 정수 Σ5에 의해 비선형 변환되어, 출력된다. 출력된 데이터는 입력키(키 KR)의 하위 비트와의 사이에서 EXOR 회로(322a)에 의해 배타적 논리합이 취해지고, F 함수부(321b)에 입력된다. F 함수부(321b)에서는, 정수 Σ6에 의해 다시 데이터가 비선형 변환되고, 변환후의 데이터와 입력키(키 KR)의 상위 비트 사이에서 EXOR 회로(322b)에 의해 배타적 논리합이 취해진다. EXOR 회로(322b)에 의한 연산후의 변환 데이터가 출력키(키 KB)의 상위 64 비트 데이터로서 출력되고, EXOR 회로(322a)에 의한 연산 결과의 데이터가 출력키(키 KB)의 하위 64 비트 데이터로서 출력된다.
이렇게 하여, 생성된 출력키(키 KA 및 키 KB)와 입력키(키 KL 및 키 KR)는 512 비트의 확대키로서 중간키 생성부(40)로부터 키 스케줄부(210)로 전송되고, 키 스케줄부(210)에 의해 키의 스케줄이 행하여져, 데이터의 암호화/복호에 이용된다.
비밀키가 192 비트인 경우에는, 입력된 비밀키의 상위 128 비트가 키 KL로 된다. 또한, 입력된 비밀키의 하위 64 비트가 키 KR의 상위 64 비트로 된다. 키 KR의 하위 64 비트는 키 KR의 상위 64 비트, 즉, 입력된 비밀키의 하위 64 비트를 반전시킨 것이다. 그 밖의 키 생성 방법에 대해서는, 비밀키가 256 비트인 경우와 마찬가지기 때문에 설명을 생략한다.
도 54는 192 비트키 및 256 비트키 CAMELLIA의 암호 처리를 나타내는 도면이다.
128 비트키 CAMELLIA의 암호화 처리를 도시한 도면 34와 비교한 경우, 주 변 환부(320)가 3개에서 4개로 증가하고, 부 변환부(330)가 두 개에서 3개로 증가하고 있다. 따라서, 192 비트키 및 256 비트키의 암호화 처리에서는, 전체로 24단의 F 함수에 의한 암호 처리가 행해진다. 다른 구성은 도 34에 나타내는 128 비트키의 경우와 마찬가지기 때문에 설명을 생략한다.
도 55는 192 비트키 및 256 비트키의 CAMELLIA의 복호 처리를 나타내는 도면이다.
128 비트키의 CAMELLIA의 복호 처리에 대해서는 도 35에 나타냈지만, 도 35와 비교하면, 주 변환부(320)가 4개, 부 변환부(330)가 3개로 증가하고 있어, 암호화 처리의 경우와 마찬가지로 F 함수가 24단으로 되어 있다. 그 밖의 구성은 128 비트키의 CAMELLIA의 복호 처리와 마찬가지기 때문에 설명을 생략한다.
또, 128 비트키 및 192 비트키 및 156 비트키의 블럭 암호 CAMELLIA 알고리즘의 상세는 「128 비트 블럭 암호 CAMELLIA 알고리즘 사양서」에 기재한다.
이상에 기재한 모든 실시예는 128 비트키의 데이터 변환 장치, 192 비트키의 데이터 변환 장치, 256 비트키의 데이터 변환 장치에 채용할 수 있다.
또한, 모든 실시예에서, 부 변환부(330)가 구비하는 키 전송 및 데이터 전송 기능을 이용하는 것이 가능하다.
모든 실시예에서는, 각 구성요소의 각 동작은 서로 관련되어 있고, 각 구성요소의 동작은 상기에 표시된 동작의 관련을 고려하면서, 일련의 동작으로서 치환할 수 있다. 그리고, 이와 같이 치환하는 것에 의해, 방법의 실시예로 할 수 있다.
또한, 상기 각 구성요소의 동작을, 각 구성요소의 처리로 치환하는 것에 의해, 프로그램의 실시예로 할 수 있다.
또한, 프로그램을, 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체에 기억시킴으로써 프로그램에 기록한 컴퓨터 판독 가능한 기록 매체의 실시예로 할 수 있다.
프로그램의 실시예 및 프로그램에 기록한 컴퓨터 판독 가능한 기록 매체의 실시예는, 전부 컴퓨터로 동작 가능한 프로그램에 의해 구성할 수 있다.
프로그램의 실시예 및 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체의 실시예에 있어서의 각 처리는 프로그램으로 실행되지만, 이 프로그램은 기록 장치에 기록되어 있고, 기록 장치로부터 중앙 처리 장치(CPU)에 기록되고, 중앙 처리 장치에 의해 각 흐름도가 실행되는 것으로 된다. 또, 기록 장치, 중앙 처리 장치는 도시하지 않는다.
또한, 각 실시예의 소프트웨어나 프로그램은 ROM(READ ONLY MEMORY)에 기억된 펌웨어로 실현되어 있더라도 상관없다. 또는, 소프트웨어와 펌웨어와 하드웨어의 조합으로 상술한 프로그램의 각 기능을 실현하더라도 상관없다.
선택기의 증가를 억지하여, 삭감함으로써, 장치의 소형화를 도모할 수 있다.
또한, 회로 전체의 게이트수를 감소시킴으로써, 저소비 전력화를 도모할 수 있다.
또한, 동작 주파수를 향상시킬 수 있다.
부 변환부는 입력 데이터 또는 입력키를 전송할 수 있다.
장치의 구성 변경에 유연하게 대응할 수 있다.
데이터 정 변환부(50)나 데이터 역 변환부(70)의 한쪽에서 데이터의 데이터 변환을 행하여, 데이터 정 변환부(50)나 데이터 역 변환부(70)의 다른 쪽에 입력된 데이터 또는 키를 전송할 수 있다.
주 변환부로부터 선택기로의 패스가 불필요해져, 장치의 소형화가 도모되고, 또한, 선택기 수의 감소에 따른 저소비 전력화를 도모하는 것이 가능해진다.

Claims (35)

  1. 키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터의 암호화와 데이터의 복호 중 적어도 어느 하나의 데이터 변환을 행하는 데이터 변환 장치로서,
    상기 데이터 변환 장치는, 데이터를 변환하는 데이터 교반부와 입력한 키와 입력한 데이터 중 어느 하나를 전송할 것을 지시하고 있는 전송 신호를 제어하는 제어부를 구비하되,
    상기 제어부는 키와 데이터 중 어느 하나를 전송하는 경우에, 전송 신호를 출력하고,
    상기 데이터 교반부는, 입력한 키를 사용하여 데이터를 변환함으로써 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하고, 또한, 상기 제어부에 의해 출력된 전송 신호를 입력한 경우에는 입력한 키와 입력한 데이터 중 적어도 어느 하나를 데이터 변환하지 않고 전송하는 부 변환부를 구비하는
    것을 특징으로 하는 데이터 변환 장치.
  2. 제 1 항에 있어서,
    상기 데이터 교반부는,
    데이터를 입력하고, 입력한 데이터를 비선형으로 데이터 변환하는 주 변환부 를 더 구비하고,
    상기 제어부는, 데이터를 전송하는 경우에는 전송 신호로서 데이터 전송 신호를 출력하며,
    상기 부 변환부는, 상기 제어부에 의해 출력된 데이터 전송 신호와 상기 주 변환부에 의해 데이터 변환된 데이터를 입력하고, 입력한 데이터 전송 신호에 따라 입력한 데이터를 전송하는
    것을 특징으로 하는 데이터 변환 장치.
  3. 제 1 항에 있어서,
    상기 데이터 변환 장치는,
    키를 생성하는 키 생성부를 더 구비하고,
    상기 제어부는, 키를 전송하는 경우에는 전송 신호로서 키 전송 신호를 출력하며,
    상기 부 변환부는, 상기 제어부에 의해 출력된 키 전송 신호와 상기 키 생성부에 의해 생성된 키를 입력하고, 입력한 키 전송 신호에 따라 입력한 키를 전송하는
    것을 특징으로 하는 데이터 변환 장치.
  4. 제 3 항에 있어서,
    상기 키 생성부는,
    비밀키를 입력하고, 입력한 비밀키로부터 중간키를 생성하는 중간키 생성부를 더 구비하고,
    상기 부 변환부는, 상기 제어부에 의해 출력된 키 전송 신호를 입력한 경우에는, 입력한 키 전송 신호에 따라 상기 중간키 생성부가 생성한 중간키를 상기 주 변환부에 전송하며,
    상기 주 변환부는 상기 부 변환부에 의해 전송된 중간키를 변환하여 출력하는 것을 1 이상 반복하고,
    상기 부 변환부는 상기 주 변환부에 의해 출력된 중간키를 변환하여 출력하는 것을 1 이상 반복하며,
    상기 주 변환부와 상기 부 변환부의 적어도 어느 하나는 상기 중간키를 변환하여 출력하는 것을 1 이상 반복하고,
    상기 주 변환부는 상기 주 변환부와 상기 부 변환부의 적어도 어느 하나에 따라 출력된 중간키를 출력키로서 출력하며,
    상기 중간키 생성부는, 상기 주 변환부에 의해 출력된 출력키를 입력함으로써, 중간키와 출력키로 이루어지는 확대키를 생성하는
    것을 특징으로 하는 데이터 변환 장치.
  5. 제 4 항에 있어서,
    상기 중간키 생성부는, 입력된 6개의 키 중에서 하나의 키를 선택하는 6-1 KL 선택기와 6-1 KL 선택기로부터 선택된 하나의 키를 중간키로서 유지하는 키 KL 레지스터를 갖고,
    상기 6-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와, 상기 키 KL 레지스터에 의해 유지된 중간키와, 상기 키 KL 레지스터에 의해 유지된 중간키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키로 이루어지는 6개의 키를 입력하며, 입력한 6개의 키 중에서 하나의 키를 선택하고,
    상기 키 KL 레지스터는 상기 6-1 KL 선택기에 의해 선택된 키를 유지하며,
    상기 부 변환부는, 상기 제어부로부터 출력된 키 전송 신호를 입력한 경우에는 상기 키 KL 레지스터에 유지된 키를 중간키로서 입력하고, 입력한 중간키를 전송하는
    것을 특징으로 하는 데이터 변환 장치.
  6. 제 4 항에 있어서,
    상기 중간키 생성부는, 입력된 4개의 키 중에서 하나의 키를 선택하는 4-1 선택기와, 입력된 3개의 키 중에서 하나의 키를 선택하는 3-1 KL 선택기와, 3-1 KL 선택기로부터 선택된 하나의 키를 중간키로서 유지하는 키 KL 레지스터를 갖고,
    상기 4-1 선택기는, 상기 키 KL 레지스터에 의해 유지된 중간키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키를 입력하고, 입력한 4개의 키 중에서 하나의 키를 선택하고,
    상기 3-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와 상기 4-1 선택기에 의해 선택된 하나의 키와 상기 키 KL 레지스터에 유지된 중간키로 이루어지는 3개의 키를 입력하고, 입력한 3개의 키 중에서 하나의 키를 선택하며,
    상기 키 KL 레지스터는 상기 3-1 KL 선택기에 의해 선택된 키를 유지하고,
    상기 부 변환부는, 상기 제어부로부터 출력된 키 전송 신호를 입력한 경우에는, 상기 키 KL 레지스터에 유지된 키를 중간키로서 입력하고, 입력한 중간키를 전송하는
    것을 특징으로 하는 데이터 변환 장치.
  7. 제 4 항에 있어서,
    상기 키 생성부는,
    상기 중간키 생성부에 의해 생성된 확대키와 소정의 정수를 입력하고, 소정의 조건에 따라 입력한 확대키와 소정의 정수 중 어느 하나를 상기 주 변환부와 상기 부 변환부의 적어도 어느 하나로 출력하는 키를 스케줄링하는 키 스케줄부를 더 구비하는 것을 특징으로 하는 데이터 변환 장치.
  8. 제 1 항에 있어서,
    상기 부 변환부는, 데이터의 선형에 의한 데이터 변환을 행하는 데이터 정 변환부(FL)와 상기 데이터 정 변환부(FL)와 역의 데이터 변환을 행하는 데이터 역 변환부(FL-1) 중 적어도 어느 하나를 갖고,
    상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1) 중 적어도 어느 하나는 데이터 변환을 행하고, 또한, 상기 제어부가 전송 신호를 출력한 경우에는, 상기 제어부가 출력한 전송 신호를 입력하고, 입력한 전송 신호에 따라 데이터와 키의 적어도 어느 하나를 데이터 변환하지 않고 전송하는
    것을 특징으로 하는 데이터 변환 장치.
  9. 제 8 항에 있어서,
    상기 제어부는, 입력된 키를 전송하는 전송 신호로서 키 전송 신호인 키 트랜스퍼 신호와 마스크 신호를 출력하고,
    상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1) 중 적어도 어느 하나는, 상기 제어부에 의해 출력된 키 트랜스퍼 신호와 마스크 신호를 입력한 경우에는, 입력한 키 트랜스퍼 신호에 의해 입력된 데이터를 무효로 하고, 또한, 입력된 마스크 신호에 의해 입력된 키를 통과시키는 것으로 키를 전송하는
    것을 특징으로 하는 데이터 변환 장치.
  10. 제 8 항에 있어서,
    상기 제어부는, 입력된 데이터를 전송하는 전송 신호로서 데이터 전송 신호인 데이터 트랜스퍼 신호를 출력하고,
    상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1) 중 적어도 어느 하나는, 상기 제어부에 의해 출력된 데이터 트랜스퍼 신호를 입력한 경우에는, 입력한 데이터 트랜스퍼 신호에 의해 입력된 키를 무효로 하고, 또한, 입력된 데이터를 통과시키는 것으로 데이터를 전송하는
    것을 특징으로 하는 데이터 변환 장치.
  11. 제 1 항에 있어서,
    상기 부 변환부는, 데이터의 선형에 의한 데이터 변환을 행하는 데이터 정 변환과 상기 데이터 정 변환과는 반대의 데이터 변환을 행하는 데이터 역 변환을 동일한 회로를 공용하여 실행하는 1/2 부 변환부를 갖고, 1/2 부 변환부에 의해 데이터를 데이터 변환하고, 또한, 상기 제어부가 전송 신호를 출력한 경우에는, 상기 제어부가 출력한 전송 신호를 입력하고, 입력한 전송 신호에 따라 키와 데이터 중 적어도 어느 하나를 전송하는 것을 특징으로 하는 데이터 변환 장치.
  12. 제 1 항에 있어서,
    상기 부 변환부는, 데이터의 선형에 의한 데이터 변환을 행하는 데이터 정 변환부(FL)와, 상기 데이터 정 변환부(FL)와 역의 데이터 변환을 행하는 데이터 역 변환부(FL-1)를 갖고, 상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1)를 직렬로 배치하며,
    상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1)의 어느 한쪽은, 상기 데이터 정 변환부(FL)와 상기 데이터 역 변환부(FL-1)의 다른 쪽에 의해 데이터 변환된 데이터와, 전송된 키와, 전송된 데이터 중 어느 하나를 입력하고, 입력한 데이터 변환된 데이터와, 전송된 키와, 전송된 데이터 중 어느 하나를 사용하여 데이터 변환과 키의 전송과 데이터의 전송 중 어느 하나를 행하는
    것을 특징으로 하는 데이터 변환 장치.
  13. 제 1 항에 있어서,
    상기 데이터 변환 장치는, 128 비트와 192 비트와 256 비트 중 어느 하나의 키를 입력하고, 입력한 키를 사용하여 입력한 데이터를 데이터 변환하는 것을 특징 으로 하는 데이터 변환 장치.
  14. 키와 데이터를 입력하고, 입력한 키를 사용하여 적어도 입력한 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하는 데이터 변환 방법으로서,
    상기 데이터 변환 방법은, 키와 데이터 중 어느 하나를 전송하는 경우에, 입력한 키와 입력한 데이터 중 어느 하나를 전송할 것을 지시하고 있는 전송 신호를 출력하고,
    입력한 키를 사용하여 데이터를 변환함으로써 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하고, 또한, 상기 출력된 전송 신호를 입력한 경우에는 입력한 키와 입력한 데이터 중 적어도 어느 하나를 데이터 변환하지 않고 전송하는
    것을 특징으로 하는 데이터 변환 방법.
  15. 삭제
  16. 키와 데이터를 입력하고, 입력한 키를 사용하여 입력한 데이터의 암호화와 데이터의 복호 중 적어도 어느 하나의 데이터 변환을 행하는 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체로서,
    상기 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체는, 키와 데이터 중 어느 하나를 전송하는 경우에, 입력한 키와 입력한 데이터 중 어느 하나를 전송할 것을 지시하고 있는 전송 신호를 출력하는 처리와,
    입력한 키를 사용하여 데이터를 변환함으로써 적어도 데이터의 암호화와 데이터의 복호 중 어느 하나의 데이터 변환을 행하고, 또한, 상기 출력된 전송 신호를 입력한 경우에는 입력한 키와 입력한 데이터 중 적어도 어느 하나를 데이터 변환하지 않고 전송하는 처리를 컴퓨터에 실행하게 하기 위한
    데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  17. 제 1 항에 있어서,
    상기 데이터 변환 장치는,
    키를 생성하는 키 생성부를 더 구비하고,
    상기 키 생성부는,
    비밀키를 입력하고, 입력한 비밀키로부터 중간키를 생성하며, 생성한 중간키로부터 상기 주 변환부와 상기 부 변환부를 이용하여 출력키를 생성하는 중간키 생성부를 더 구비하는 것을 특징으로 하는 데이터 변환 장치.
  18. 제 17 항에 있어서,
    상기 중간키 생성부는, 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하는 6-1 KL 선택기와, 상기 6-1 KL 선택기로부터 선택된 하나의 키를 중간키로서 유지하는 키 KL 레지스터와, 6개의 키 중에서 하나의 키를 선택하는 6-1 KA 선택기와, 6-1 KA 선택기로부터 선택된 하나의 키를 출력키로서 유지하는 키 KA 레지스터를 갖고,
    상기 6-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와, 상기 키 KL 레지스터에 유지된 중간키와, 상기 키 KL 레지스터에 유지된 중간키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키로 이루어지는 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하며,
    상기 키 KL 레지스터는 상기 6-1 KL 선택기에 의해 선택된 키를 중간키로서 유지하고,
    상기 6-1 KA 선택기는, 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와, 상기 키 KA 레지스터에 유지된 출력키와, 상기 키 KA 레지스터에 유지된 출력키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키로 이루어지는 6개의 키를 입력하고, 입력한 6개의 키 중에서 하나의 키를 선택하며,
    상기 키 KA 레지스터는 상기 6-1 KA 선택기에 의해 선택된 키를 출력키로서 유지하는
    것을 특징으로 하는 데이터 변환 장치.
  19. 제 17 항에 있어서,
    상기 중간키 생성부는, 두 개의 키 중에서 하나의 키를 선택하는 2-1 선택기와, 4개의 키 중에서 하나의 키를 선택하는 4-1 선택기와, 3개의 키 중에서 하나의 키를 선택하는 3-1 KL 선택기와, 3-1 KL 선택기로부터 선택된 키를 중간키로서 유지하는 키 KL 레지스터와, 3개의 키 중에서 하나의 키를 선택하는 3-1 KA 선택기와, 3-1 KA 선택기로부터 선택된 키를 출력키로서 유지하는 키 KA 레지스터를 갖고,
    상기 2-1 선택기는, 상기 키 KL 레지스터에 유지된 중간키와, 상기 키 KA 레 지스터에 유지된 출력키 중에서 하나의 키를 선택하며,
    상기 4-1 선택기는, 상기 2-1 선택기에 의해 선택된 키로부터 4개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 4개의 키를 입력하고, 입력한 4개의 키 중에서 하나의 키를 선택하고,
    상기 3-1 KL 선택기는, 비밀키를 입력하고, 입력된 비밀키와, 상기 4-1 선택기에 의해 선택된 키와, 상기 키 KL 레지스터에 유지된 중간키로 이루어지는 3개의 키를 입력하고, 입력한 3개의 키 중에서 하나의 키를 선택하며,
    상기 키 KL 레지스터는 상기 3-1 KL 선택기에 의해 선택된 키를 중간키로서 유지하고,
    상기 3-1 KA 선택기는 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와, 상기 4-1 선택기에 의해 선택된 키와, 상기 키 KA 레지스터에 유지된 출력키로 이루어지는 3개의 키를 입력하고, 입력한 3개의 키 중에서 하나의 키를 선택하고,
    상기 키 KA 레지스터는, 상기 3-1 KA 선택기에 의해 선택된 키를 출력키로서 유지하는
    것을 특징으로 하는 데이터 변환 장치.
  20. 제 17 항에 있어서,
    상기 중간키 생성부는, 두 개의 키 중에서 하나의 키를 선택하는 2-1 KL 선 택기와, 2-1 KL 선택기로부터 선택된 키를 유지하는 키 KL 레지스터와, 두 개의 키 중에서 하나의 키를 선택하는 2-1 KA 선택기와, 2-1 KA 선택기로부터 선택된 키를 유지하는 키 KA 레지스터와, 두 개의 키 중에서 하나의 키를 선택하는 2-1 선택기와, 8개의 키 중에서 하나의 키를 선택하는 8-1 선택기를 갖고,
    상기 2-1 KL 선택기는, 비밀키를 입력하고, 입력한 비밀키와 상기 키 KL 레지스터에 유지된 키 중에서 하나의 키를 선택하며,
    상기 2-1 KA 선택기는, 상기 주 변환부와 상기 부 변환부를 이용하여 생성된 출력키를 입력하고, 입력한 출력키와 상기 키 KA 레지스터에 유지된 키 중에서 하나의 키를 선택하고,
    상기 2-1 선택기는, 상기 2-1 KL 선택기와 상기 2-1 KA 선택기에 의해 선택된 두 개의 키 중에서 하나의 키를 선택하며,
    상기 8-1 선택기는, 상기 2-1 선택기에 의해 선택된 키로부터 8개의 서로 다른 시프트수로 각각 순회 비트 시프트시킨 8개의 키를 입력하고, 입력한 8개 키로부터 하나의 키를 선택하는
    것을 특징으로 하는 데이터 변환 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
KR1020047018842A 2002-05-23 2003-03-07 데이터 변환 장치, 데이터 변환 방법 및 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 KR100806468B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2002148786A JP4128395B2 (ja) 2002-05-23 2002-05-23 データ変換装置
JPJP-P-2002-00148786 2002-05-23
PCT/JP2003/002689 WO2003100751A1 (fr) 2002-05-23 2003-03-07 Dispositif et procede de conversion de donnees

Publications (2)

Publication Number Publication Date
KR20050004187A KR20050004187A (ko) 2005-01-12
KR100806468B1 true KR100806468B1 (ko) 2008-02-21

Family

ID=29561194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047018842A KR100806468B1 (ko) 2002-05-23 2003-03-07 데이터 변환 장치, 데이터 변환 방법 및 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체

Country Status (12)

Country Link
US (1) US7639800B2 (ko)
EP (1) EP1507247B1 (ko)
JP (1) JP4128395B2 (ko)
KR (1) KR100806468B1 (ko)
CN (1) CN1647139B (ko)
AU (1) AU2003211779A1 (ko)
CA (1) CA2485943C (ko)
DK (1) DK1507247T3 (ko)
ES (1) ES2565816T3 (ko)
NO (1) NO337611B1 (ko)
TW (1) TWI229299B (ko)
WO (1) WO2003100751A1 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7760874B2 (en) 2004-07-14 2010-07-20 Broadcom Corporation Method and system for implementing FI function in KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
US7623658B2 (en) * 2004-08-23 2009-11-24 Broadcom Corporation Method and system for implementing the A5/3 encryption algorithm for GSM and EDGE compliant handsets
US7627115B2 (en) * 2004-08-23 2009-12-01 Broadcom Corporation Method and system for implementing the GEA3 encryption algorithm for GPRS compliant handsets
US7627113B2 (en) * 2005-02-08 2009-12-01 Broadcom Corporation Method and system for hardware accelerator for implementing f8 confidentiality algorithm in WCDMA compliant handsets
JP4700051B2 (ja) 2005-03-16 2011-06-15 三菱電機株式会社 暗号装置及び暗号方法
JP2007199156A (ja) * 2006-01-24 2007-08-09 Sony Corp 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
JP4790541B2 (ja) * 2006-08-25 2011-10-12 日本電信電話株式会社 ハッシュ関数回路及びその演算方法
JP4961909B2 (ja) 2006-09-01 2012-06-27 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5223245B2 (ja) * 2007-06-25 2013-06-26 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
CN101335985B (zh) * 2007-06-29 2011-05-11 华为技术有限公司 安全快速切换的方法及系统
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8619976B2 (en) 2007-12-13 2013-12-31 Nec Corporation Encryption method, decryption method, device, and program
JP5272417B2 (ja) * 2008-01-21 2013-08-28 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
US9729316B2 (en) 2008-02-27 2017-08-08 International Business Machines Corporation Unified broadcast encryption system
JP5200949B2 (ja) * 2009-01-16 2013-06-05 富士通株式会社 暗号処理装置
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
JP5605197B2 (ja) 2010-12-09 2014-10-15 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP5652363B2 (ja) * 2011-03-28 2015-01-14 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
JP6052166B2 (ja) * 2011-04-11 2016-12-27 日本電気株式会社 暗号化方法、暗号化装置および暗号化プログラム
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9858084B2 (en) 2013-03-15 2018-01-02 Bitmicro Networks, Inc. Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US10148430B1 (en) 2013-04-17 2018-12-04 Amazon Technologies, Inc Revocable stream ciphers for upgrading encryption in a shared resource environment
US9684580B2 (en) * 2013-11-05 2017-06-20 Ixia Methods, systems, and computer readable media for efficient scrambling of data for line rate transmission in high speed communications networks
JP2015130580A (ja) * 2014-01-07 2015-07-16 富士通株式会社 データスクランブル装置、セキュリティ装置、セキュリティシステム及びデータスクランブル方法
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
JP6187624B1 (ja) * 2016-03-17 2017-08-30 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
US10404459B2 (en) * 2017-02-09 2019-09-03 Intel Corporation Technologies for elliptic curve cryptography hardware acceleration
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10698839B2 (en) * 2017-12-12 2020-06-30 Western Digital Technologies, Inc. Seed scrambling
US10635400B2 (en) 2017-12-12 2020-04-28 Western Digital Technologies, Inc. Seed generation
US20220006614A1 (en) * 2018-10-04 2022-01-06 Nippon Telegraph And Telephone Corporation Secret sigmoid function calculation system, secret logistic regression calculation system, secret sigmoid function calculation apparatus, secret logistic regression calculation apparatus, secret sigmoid function calculation method, secret logistic regression calculation method, and program
WO2020186125A1 (en) 2019-03-13 2020-09-17 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption
US11240022B1 (en) * 2019-04-11 2022-02-01 Wells Fargo Bank, N.A. Passive encryption rotation keys
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10172298A (ja) * 1996-12-05 1998-06-26 Mitsubishi Electric Corp 半導体記憶装置
GB2321728B (en) * 1997-01-30 2001-12-19 Motorola Inc Apparatus and method for accessing secured data stored in a portable data carrier
JP3600454B2 (ja) * 1998-08-20 2004-12-15 株式会社東芝 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
US7184549B2 (en) * 2000-01-14 2007-02-27 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for encryption, method and apparatus for decryption, and computer-readable medium storing program
ES2327263T3 (es) 2000-03-09 2009-10-27 Mitsubishi Denki Kabushiki Kaisha Aparato de cifrado de bloques y procedimiento de cifrado de bloques que incluye la programacion de una clave de longitud variable.
JP4457474B2 (ja) * 2000-04-04 2010-04-28 ソニー株式会社 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
WO2002082715A1 (en) * 2001-04-03 2002-10-17 Mitsubishi Denki Kabushiki Kaisha Encrypting device
JP2003067340A (ja) 2001-08-28 2003-03-07 Mitsubishi Electric Corp 認証の選択システム、認証システム
US7986820B2 (en) 2001-10-19 2011-07-26 Mitsubishi Electric Research Laboratories, Inc. Method for comparing features extracted from images of fingerprints

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
[논문] "Camellia : A 128-bit block cipher suitable for multiple platform - design and analysis", SAC 2000, LNCS 2012.

Also Published As

Publication number Publication date
ES2565816T3 (es) 2016-04-07
US20050226407A1 (en) 2005-10-13
NO20045596L (no) 2005-02-18
US7639800B2 (en) 2009-12-29
KR20050004187A (ko) 2005-01-12
TWI229299B (en) 2005-03-11
CN1647139A (zh) 2005-07-27
CA2485943C (en) 2011-04-19
DK1507247T3 (en) 2016-03-29
JP4128395B2 (ja) 2008-07-30
EP1507247B1 (en) 2016-02-24
TW200307226A (en) 2003-12-01
CN1647139B (zh) 2011-09-14
WO2003100751A1 (fr) 2003-12-04
JP2003345244A (ja) 2003-12-03
AU2003211779A1 (en) 2003-12-12
EP1507247A1 (en) 2005-02-16
CA2485943A1 (en) 2003-12-04
NO337611B1 (no) 2016-05-09
EP1507247A4 (en) 2011-01-19

Similar Documents

Publication Publication Date Title
KR100806468B1 (ko) 데이터 변환 장치, 데이터 변환 방법 및 데이터 변환 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
JP4127472B2 (ja) データ変換装置及びデータ変換装置のデータ変換方法及びプログラム及びコンピュータ読み取り可能な記録媒体
US6304657B1 (en) Data encryption apparatus using odd number of shift-rotations and method
JP6406350B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
AU2007232123B2 (en) Robust cipher design
JP4025722B2 (ja) データ暗号化のための方法および装置
JP2000162965A (ja) 暗復号装置及び記憶媒体
KR20020006475A (ko) 암호화장치, 복호장치 및 확대키 생성장치, 확대키생성방법 및 기록매체
JP2002032018A (ja) データ暗号化標準アルゴリズムを利用した暗号化装置
JP2015191106A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
KR20010111784A (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
KR20050087271A (ko) 가변 키 길이를 가지는 초기 라운드 키에 대응하는 암호라운드 키와 복호 라운드 키를 선택적으로 발생하는 키스케쥴 장치
JP2015191107A (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP5617845B2 (ja) 暗号化装置、暗号化方法及びプログラム
JP6052166B2 (ja) 暗号化方法、暗号化装置および暗号化プログラム
Blaze et al. The MacGuffin block cipher algorithm
Islam et al. Data encryption standard
JP3473171B2 (ja) 逐次暗号方式
KR20130126924A (ko) 암호 처리 장치 및 암호 처리 방법, 및 프로그램
Hassan New Approach for Modifying DES Algorithm Using 4-States Multi-keys
JP3748184B2 (ja) 秘話通信装置
RU2199826C2 (ru) Способ итеративного шифрования блоков цифровых данных
RU2127024C1 (ru) Блок шифрования
JP2008107656A (ja) 暗号化装置及び認証装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130118

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140117

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150119

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180202

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190201

Year of fee payment: 12