KR20010067121A - 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및기억 매체 - Google Patents

확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및기억 매체 Download PDF

Info

Publication number
KR20010067121A
KR20010067121A KR1020000050093A KR20000050093A KR20010067121A KR 20010067121 A KR20010067121 A KR 20010067121A KR 1020000050093 A KR1020000050093 A KR 1020000050093A KR 20000050093 A KR20000050093 A KR 20000050093A KR 20010067121 A KR20010067121 A KR 20010067121A
Authority
KR
South Korea
Prior art keywords
key
conversion
enlarged
input
round
Prior art date
Application number
KR1020000050093A
Other languages
English (en)
Other versions
KR100402811B1 (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 KR20010067121A publication Critical patent/KR20010067121A/ko
Application granted granted Critical
Publication of KR100402811B1 publication Critical patent/KR100402811B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본 발명은 확대키 생성기, 암호/복호 장치 및 기억 매체에 관한 것으로, 각각의 키 변환 함수로서, 입력된 키로부터 얻은 제1키에 의거하여 S 박스(치환 테이블)에 의해 변환 처리가 이루어지고, 가산기는 S 박스의 치환 결과를 좌측으로 시프트하여 얻어진 값과 입력된 키로부터 얻은 제2키에 의거하여 확대키 중에 해당하는 것을 산출한다.

Description

확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및 기억 매체{EXTENDED KEY GENERATOR, ENCRYPTION/DECRYPTION UNIT, EXTENDED KEY GENERATION METHOD, AND STORAGE MEDIUM}
본 발명은 비밀키 블록 암호에 적용되는 확대키 생성기, 암호/복호 장치 및 기억 매체에 관한 것이다.
근년의 컴퓨터 및 통신 기술의 분야에서는 송신 데이터를 암호화하여 송신하고, 수신 데이터를 복호하여 수신 내용을 얻는 암호 기술이 널리 알려져 있다. 이 종류의 암호 기술에서는 암호화와 복호에 동일한 비밀키(이하 공통키라고 함)를 이용하는 암호화 알고리즘이 공통키 암호라고 불리고 있다. 공통키 암호에서는 일반적으로, 입력 메세지가 소정 길이의 입력 블록으로 분할되고, 각 분할된 블록이 키에 의거해 랜덤화되어 암호문이 생성되고 있다. 이러한 공통키 암호로서는, 예를들면 DES(데이터 암호화 규격:data encryption standard)라고 불리는 방식이 널리 이용되고 있다.
DES에 의한 암호화에서는 도1a에 나타내는 바와 같이, 평문에 초기 전치(轉置)(IP)를 실시한 데이터에 대해서, 라운드 함수에 의한 처리를 16회 실시한다. 또한 라운드 함수 처리된 데이터에 초기 전치의 역전치(IP-1)를 실시함으로써 암호문을 얻고 있다. 한편 각 라운드 함수에 원래 키로부터 생성되는 확대키를 줌으로써 라운드 함수의 처리가 실행된다.
즉 DES에 의한 암호화 장치는 다수의 라운드 함수에 의해 암호화될 데이터를 랜덤화하는 데이터 랜덤화부와, 데이터 랜덤화부의 각 라운드 함수에 확대키를 주는 키 생성부를 그 주요 구성으로 하고 있다. 종래의 키생성기는 테이블 또는 배선을 사용하여 비트를 재구성하거나 데이터 암호기와 동일한 키를 사용하거나 또는 키비트로부터 랜덤하게 추출하여 키를 생성하는 것에 유념하기 바란다.
한편, DES에 의한 복호는 도1b에 나타내는 바와 같이, 암호화시와는 반대 순서로 복호될 데이터에 라운드 함수의 처리를 실시한다. 따라서 키 생성기도 암호화시의 마지막 라운드 함수로 사용된 것으로부터 차례로 확대키를 생성한다.
이 DES의 제1 이점은 암호화 회로와 복호 회로의 대부분을 공통화할 수 있는 구성에 있다. 도1a, 도1b에 나타내는 바와 같이, 데이터 랜덤화부의 라운드 함수는 암호화시와 복호시에서는 확대키의 입력 순서는 반대로 되지만, 동일한 회로가 사용된다.
DES의 제2 이점은 1개의 공통키를 이용해 암호화와 복호를 하기 때문에, 관리될 키가 적은 것이다. 또한 DES에서는 유일의 공통키에 의거해 확대키를 정순과 역순으로 생성하기 위해서, 키 생성기에서는 다음의 처리를 하고 있다.
즉 암호화시에는 공통키를 좌측 순회 시프트(좌회전)하여 각 확대키를 생성한다. 또한 순회 시프트량의 합계치를 공통키의 비트수로 정하고, 최종적으로 중간키가 초기 상태(공통키)로 복귀한다. 이에 따라 암호화시의 마지막 확대키와 복호시의 최초의 확대키를 동일한 값으로 생성할 수 있다. 복호시에는 공통키를 반대로 우측 순회 시프트(우회전)해 역순으로 각 확대키를 생성하면 좋다.
그러나DES에서는 키 생성기의 처리가 전치 처리만으로 수행되기 때문에, 일반적으로 허약키(Weak key)라고 불리는 안전성이 낮은 키가 존재하는 문제가 있다. 또한 허약키는, 동일한 값의 확대키를 의미하고 있고, 모든 확대키(K1~K16)가 서로 동일한 경우(K1=K2= …K16)와, 반의 확대키(K1~K8, K9~K16)가 서로 동일한 경우(K1=K16, K2=K15, …, K8=K9)를 포함하고 있다.
그러나 이러한 허약키의 생성은 위협적인 것이 아니고, 허약키를 생성하는 패턴을 갖는 공통키의 입력을 제거하는 장치, 또는 생성된 확대키가 허약키인지의 여부를 판별하여, 만일 허약키일 때에는 제거하는 장치를 암호 생성기에 부가함으로써, 충분하게 저지할 수 있다고 생각된다.
그러나 이러한 허약키의 생성을 저지하는 장치를 부가한 경우, 확대키 생성기 및 암호/복호 장치의 가격을 상승시켜 버리고, 또한 그 회로 규모를 증대시킨다.
또 DES에 부가하여 허약키의 생성을 저지함으로써, 각 라운드 함수의 장치마다 다른 확대키를 이용하는 경우의 암호 강도를 실현시키고, 또한 그 암호 강도를 향상할 수 있는 암호 방식이 요망되고 있다.
이상 설명한 바와 같이 종래의 확대키 생성기 및 암호/복호 장치에서는 안전성의 저하를 피하기 위해서, 허약키의 생성을 저지하는 장치를 부가하면, 확대키 생성기 및 암호/복호 장치의 가격을 상승시켜 버리고, 또한 그 회로 규모를 증대시킬 가능성이 있다.
또 허약키의 생성을 저지하더라도 키 생성기의 처리가 암호 강도의 향상에 너무 기여하지 않게 하면서, 암호 강도를 향상할 것이 요망되고 있다.
본 발명은 상기 실정을 고려해 된 것으로, 장치 가격과 회로 규모를 억제하고, 허약키의 생성을 저지하면서 확대키의 무작위성을 향상시킬 수 있고, 또한 암호 강도의 향상을 도모할 수 있는 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및 기억 매체를 제공하는 것을 목적으로 한다.
도1a 및 도1b는 종래의 키암호의 일례로서DES를 설명하기 위한 블록도.
도2는 본 발명의 제1 실시예에 의한 암호/복호 장치의 구성을 나타내는 블록도.
도3은 제1 실시예의 암호/복호 장치의 확대키 생성기의 구성을 나타내는 블록도.
도4a 및 도4b는 제1 실시예의 상수 레지스터의 설정치를 설명하는 도면.
도5는 제1 실시예의 S 박스의 특징을 설명하는 도면.
도6은 제1 실시예의 순회 시프터의 설정치를 설명하는 도면.
도7은 제1 실시예의 라운드 함수의 구조를 나타내는 블록도.
도8은 암호/복호 장치의 작동을 나타내는 순서도.
도9는 제1 실시예의 작동을 나타내는 도면.
도10은 본 발명의 제2 실시예에 의한 확대키 생성기에 사용되는 키변환 함수의 구성을 나타내는 블록도.
도11은 본 발명의 제3 실시예에 의한 확대키 생성기의 구성을 나타내는 블록도.
도12는 제3 실시예의 치환부의 설정을 설명하는 도면.
도13은 도11에 나타낸 실시예의 작동을 설명하는 순서도.
도14는 본 발명의 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및 기억 매체를 구현하는 스마트 카드의 구성을 나타내는 블록도.
도15는 본 발명의 제4 실시예에 의한 암호/복호 장치를 설명하는 도면.
도16은 제4 실시예의 변형례를 설명하는 도면.
도17은 제4 실시예의 다른 변형례를 설명하는 도면.
도18a 및 도18b는 제4 실시예의 변형례를 설명하는 도면.
본 발명의 제1 태양에 의하면, 각 라운드의 장치마다 다른 키가 입력되고, 키에 의거해 확대키를 생성하는 복수의 키 변환 함수부가 캐스케이드로 연결된 확대키 생성기로서, 각 키 변환 함수부는 입력된 키로부터 얻은 제1키에 의거해 소정의 치환 테이블을 사용하여 변환 처리를 하는 제1키 변환 수단과, 이 제1키 변환 수단에 의한 변환 결과와 입력된 키로부터 얻은 제2키에 의거해 확대키를 산출하는확대키 산출 수단을 구비한 확대키 생성기가 제공된다.
본 발명의 다른 태양에 의하면, 키 변환 함수부에 의해 생성된 확대키에 의거하여 입력된 평문을 암호하여 암호문을 출력하고 또한 입력된 암호문을 복호하여 평문을 출력하는 데이터 랜덤화부를 구비한 확대키 생성기를 구비하는 암호/복호 장치가 제공된다.
본 발명의 또 다른 태양에 의하면, 라운드 장치마다 다른 키(Kc, Kc1, …, Kcn-1)를 입력하고; 입력된 키로부터 제1키를 생성하고; 소정의 치환 테이블을 사용하여 생성된 제1키를 변환하고; 변환 결과와 입력된 키로부터 얻은 제2키에 의거하여 확대키를 계산하는 단계를 구비하는 확대키 생성 방법이 제공된다.
본 발명의 또 다른 태양에 의하면, 라운드 장치마다 다른 키(Kc, Kc1, …, Kcn-1)를 입력하고; 입력된 키로부터 제1키를 생성하고; 소정의 치환 테이블을 사용하여 생성된 제1키를 변환하고; 변환 결과와 입력된 키로부터 얻은 제2키에 의거하여 확대키를 계산하는 컴퓨터 제조용 프로그램을 저장하는 컴퓨터가 읽을 수 있는 기록 매체가 제공된다.
본 발명에 의하면, 각 키변환 함수부에서, 제1키 변환 수단은 입력된 키로부터 얻은 제1키에 의거하여 소정의 치환 테이블을 사용하는 변환 처리를 수행하고, 확대키 계산 수단은 제1키 변환 수단과 입력된 키로부터 얻은 제2키의 변환 결과에 의거하여 확대키를 계산한다.
이와 같이 함으로써, 어떤 외부 장치도 추가하지 않은 단순한 구성이 사용되고, 치환 테이블을 사용한 비선형 변환 처리가 각 확대키 생성시에 이루어지므로,장치의 가격과 규모를 억제하고 허약키의 생성을 저지하면서 확대키의 무작위성을 향상시킴에 따라 암호 강도를 향상시킬 수 있다.
또한 데이터 랜덤화부는 복수의 암호화 및 복호를 위한 치환 테이블을 갖고, 데이터 랜덤화부의 치환 테이블은 제1키 변환 수단에 공통이므로 장치의 회로 규모를 줄일 수 있다.
본 발명에 의하면, 장치 비용과 회로 규모의 증가를 억제하면서 허약키의 생성을 저지하면서도 무작위성을 향상시키고 암호 강도를 향상시킬 수 있는 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및 기억 매체가 제공된다.
본 발명의 부가의 목적 및 이점을 이하의 상세한 설명에 제시하며, 일부가 상세한 설명으로부터 자명해지거나 발명의 실시로부터 이해될 수 있을 것이다. 본 발명의 목적 및 장점은 이하에 특별히 지적하지 않는 구현들과 조합들에 의해 실현될 수 있다.
(실시예)
명세서에 포함되어 그 일부를 이루는 첨부 도면들은 본 발명의 바람직한 실시예를 설명하며, 상술의 일반적인 설명과 이하의 바람직한 실시예에 대한 상세한 설명과 함께 발명의 원리를 설명하기 위한 것이다.
(제1 실시예)
본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 이하에 상세히 설명한다.
도2는 본 발명의 제1 실시예에 관한 암호/복호 장치의 구성을 나타내는 블럭도이고, 도3은 도2에 나타낸 암호/복호 장치 내의 확대키 생성기의 구성을 나타내는 블록도이다.
이 암호/복호 장치는 퍼스널 컴퓨터나 워크스테이션 등의 컴퓨터의 암호/복호 처리기로서 구성되어 있고, 하드웨어 또는 소프트웨어에 의해 암호화 및 복호 처리를 한다. 보다 구체적으로는 암호/복호 장치는 공통키로부터 n단의 확대키(K1~Kn)를 생성하는 확대키 생성기(10)와, 확대키 생성기(10)에 의해 생성된 확대키(K1~Kn)를 차례로 각 라운드(R1~Rn)에 이용해 암호화 또는 복호를 하는 데이터 랜덤화부(20)를 구비하고 있다. 즉 확대키 생성기(10) 및 데이터 랜덤화부(20)는 암호화와 복호에 공통되게 이용되고 있고, 소프트 웨어에 의해 암호/복호 장치를 실현하는 경우에는 양자의 작동을 나타내는 프로그램이 미리 기억 매체로부터 인스톨되고 있다. 또한 확대키 생성기(10) 및 데이터 랜덤화부(20) 간에는 전치 처리 등을 삽입해도 좋다.
확대키 생성기(10)는 각 라운드(R1~Rn)에 대응하고, 차례로 캐스케이드로 연결된 키 변환 함수fk1~fkn(단순히 키 변환 함수fk라고도 함)가 설치되어 있다. 키 변환 함수fk1~fkn은 공통키(KC) 또는 중간키 변환 결과kc1~kcn-1이 입력되면, 이들 입력을 변환해 얻어진 확대키(K1~Kn)를 데이터 랜덤화부(20)의 라운드 함수fr1~frn에 출력하고, 또 별도로 얻어진 중간키 변환 함수kc1~kcn-1을 다음단의 키 변환 함수fk2~fkn에 입력하는 기능을 갖고 있다.
여기서 키 변환 함수fk1~ fkn는 도3에 나타내는 바와 같이, 일시키레지스터(111~11n), 상수 레지스터(121~12n, XOR 소자(131~13n), S 박스(141~14n), 확대 변환기(151~15n), 가산기(161~16n) 및 순회 시프터(171~17n-1)를 구비하고 있다. 또한 최종단의 순회 시프터(17n)는 다음단에 키 변환 함수fk(n+1)가 없으므로, 생략되어 있다.
일시키 레지스터(11i)(단, 1≤i≤n, 이하도 마찬가지)는 확대키 생성기(10)에 입력된 공통키 또는 전단의 키 변환 함수fk(i-1)로부터 입력된 중간키 변환 결과를 유지하는 것으로, 여기서는 56비트의 레지스터가 사용되고 있다.
상수 레지스터(12i)는 키 변환 함수fki가 속하는 라운드수에 대응해 상수가 설정되고, 이 상수를 XOR소자(13i)에 공급할 수 있다. 구체적으로는 상수 레지스터(12i)는, 도4a에 라운드수n=16의 예를 나타내는 바와 같이, 확대키(K1~K16)를 역순(K16~Kl)으로도 생성 가능하므로, 유지할 상수의 라운드수의 중앙값(n=8, 9)을 중심으로 해서, 대칭으로(전반, 후반이 대칭 상수를 갖도록) 설정되어 있다. 그러나 본 발명은 이런 특정의 설정에 한정하지 않고, 상수 레지스터(12i)는 확대키(K1~K16)을 역순(K16~K1)으로도 생성 가능하면, 유지할 상수는 임의이다. 예를 들면 도4b에 나타내는 바와 같이, 암호화와 복호 시에 상수를 치환해도 좋다. 또한 상수 레지스터(12i)는 도4a에 나타낸 바와 같이, 유지할 상수중, 적어도 어느 1개의 값을 다른 레지스터와는 다르게 설정하면 된다. 예를 들어 상수는 CONST12i=i로 설정되어도 좋다.
XOR소자(13i)는 일시키 레지스터(11i) 내의 8비트 데이터로 되는 제1키(KA)와, 상수 레지스터 내의 상수와의 XOR(배타적 논리합)를 산출하고, 얻어진 8비트의 산출 결과를 S박스에 입력하는 것이다.
S(치환:substitution) 박스(14i)는 허약키(모든 단에서 동일한 확대키)의 생성을 저지하기 위한 것이다. 보다 구체적으로는 XOR소자(13i) 로부터 입력된 8비트의 값을 비선형 변환하고, 얻어진 8비트의 변환 결과를 확대 변환기(15i)에 입력하는 기능을 갖고, 예를 들면 도5에 나타내는 바와 같이 입력 비트와 출력 비트를 치환하기 위한 치환 테이블이 사용될 수 있다. 예를 들면, 입력 비트가(00000001)인 경우, S박스(14i)는 그 (00000001)라는 정보를 2진 표현으로 보고, 그 2진 표현을 10진 표현한 값 "1"로 변환한다.
그리고 S박스(14i)는 도5의 치환 테이블을 참조해 "1번째"의 요소 "54"을 결정하고, 그 2진 표현인 (01010100)을 출력 비트로서 출력한다.
이와 같이 하여 입력 비트(00000001)를 출력 비트(01010100)로 치환할 수 있다.
도5의 치환 테이블은 0번~255번째까지의 256개의 입력에 대응한 요소를 유지하고 있고, 0~255 범위의 값이 입력된 경우에 대응하는 0~255 범위의 값을 결정하는 경우에 이용되는 것이다.
또 S박스(14i)는 장치 규모의 축소화를 위해 후술하는 라운드 함수fk 내의 어느 S박스와 공유하는 것이 바람직하다.
확대 변환기(15i)는 S박스(14i)로부터 입력된 8비트의 변환 결과를 보다 큰 값으로 변환하는 것이다. 본 실시예에서는 8비트의 변환 결과를 4비트 좌측으로 시프트하도록 확대 변환하고, 얻어진 12비트의 확대 변환 결과를 가산기(16i)에 입력하는 기능을 갖고 있다.
또한 확대 변환기(15i)의 시프트량은 S박스(14i)의 출력 비트를 데이터 랜덤화부(20)의 2개의 S박스(S3, S4)에 반영시키므로, 등가적으로 S박스(14i)의 출력 비트수(=8)의 반(=4비트)으로 하는 것이 바람직하다. 여기서 "등가적으로"란 말은 4비트 시프트 대신에, 예를 들면 12(=4+8×1)비트 시프트 또는 20(=4+8×2)비트 시프트와 같이, 출력 비트수의 정수배를 더한 변형(환언하면, 출력 비트수(=8)로 나누면, 나머지가 나누기 수의 반(=4)의 비트수에 상당하는 시프트량을 갖는 변형)을 포함하는 것을 의미하고 있다. 또 S박스(14i)의 출력 비트가 12비트 시프트된 경우에는 S박스(S3, S4) 대신에 S박스(S2, S3)에 반영되고, 20비트 시프트된 경우에는 S박스(S1, S2)에 반영된다. S박스(14i)의 출력 비트를 2개의 S박스(S3, S4)(S2, S3 또는 S1, S2를 포함함)에 반영시키는 경우, 비트의 조합은 4비트씩에 한정하지 않고, 어떤 순서로든 1비트와 7비트, 2비트와 6비트 혹은 3비트와 5비트의 조합으로 하여도 좋다. 즉 등가적인 4비트 시프트 대신에, 등가적인 1~3, 5~7의 임의의 비트시프트로 하여도 좋다.
가산기(16i)는 확대 변환기(15i)로부터 입력된 12비트의 확대 변환 결과와, 일시키 레지스터(11i) 내의 32비트의 데이터로 되는 제2키(KB)를 가산(자리 올림을 수반하는 통상의 가산)하고, 얻어진 가산 결과를 라운드(Ri)의 확대키(Ki)로서 데이터 랜덤화부(20)의 라운드 함수fri에 입력하는 기능을 갖고 있다.
제1키(KA) 및 제2키(KB)는 각각 연속하는 영역에서 일시키 레지스터(11i)로부터 개별로 추출되었다. 그러나 본 발명은 이에 한정하지 않고, 불연속인 영역으로부터 추출하여도 좋다. 즉 제1키(KA)는 일시키 레지스터(11i) 내의 임의의 합계 8비트의 데이터이면 좋고, 제2키(KB)는 일시키 레지스터(11i) 내의 임의의 합계 32비트의 데이터이면 좋다. 또 제1키(KA)와 제2키(KB)는 서로 중첩하고 있어도 좋다. 또한 제1키(KA)의 비트 길이는 데이터 랜덤화부(20)의 S박스의 입력 비트 길이와 동일하게 하는 것이 S박스의 공유를 위해 바람직하다. 제2키(KB)의 비트 길이는 확대키(Ki)의 비트 길이와 동일하게 하는 것이 설계의 간이화의 관점에서 바람직하다(단, 소망에 따라 제2키(KB)와 확대키(Ki)의 비트 길이를 서로 다르게 해도 좋고, 이 경우 예를 들면 축약 전치나 확대 전치 등을 이용하여, 최종적으로 확대키(Ki)의 비트 길이를 조정할 수 있다).
순회 시프터(17i)는 일시키 레지스터(11i)의 값을 소정의 시프트량만큼 순회 시프트시켜 다음단의 일시키 레지스터(11i+1)에 입력하는 것이다. 여기서는 도6에 나타내는 바와 같이, 키 변환 함수fk1~fkn 각 단마다, 시프트량이 설정되어 있다. 순회 시프터(17i)의 시프트량은 키의 무작위성을 높이기 위해, 적어도 공통키(KC)의 비트수 또는 S박스(14i)의 출력 비트수 중의 어느 하나와 서로소(素) 인 것이 바람직하고, 이들 세 값이 서로소인 것이 가장 바람직하다. 또 이 시프트량은 확대키(K1~K16)를 역순(K16~Kl)으로도 생성 가능하므로, 최종단을 뺀 키 변환 함수fk1~fkn+1)의 중앙값(n=8)을 중심으로 해서 대칭으로(전반, 후반이 대칭 상수를 갖도록) 설정되어 있다. 그러나 본 발명은 이러한 특정한 설정에 한정하지 않고, 순회 시프터(17i)는 확대키(K1~K16)를 역순(K16~K1)으로도 생성할 수 있으면, 시프트량 및 순회 방향을 임의로 설정할 수 있다.
한편, 데이터 랜덤화부(20)는 각기 라운드(R1)로부터 라운드(Rn)까지의 n라운드에 있어서, 확대키 생성기(10)로부터 차례로 확대키(K1~K16)가 주어질 때, 입력된 평문을 암호화해 암호문을 출력하는 암호화 기능을 갖고, 또 확대키 생성기(10)로부터 암호화와는 역순으로 확대키(K16~K1)가 주어질 때, 입력된 암호문을 복호하여 평문을 출력하는 복호 기능을 갖고 있다. 데이터 랜덤화부(20)에는 각 라운드(R1~Rn)에 대응하여, 차례로 캐스케이드로 연결된 라운드 함수fr1~frn이 설치되어 있다.
라운드 함수fri는 암호화시, 평문 또는 중간적인 암호화 결과를 확대키 생성기(10)로부터 입력된 확대키(Ki)에 의거해 변환하여, 중간적인 암호화 결과 또는 암호문을 출력하는 함수이고, 복호 처리시에 암호문 또는 중간적인 복호 결과를 확대키 생성기(10)로부터 역순으로 입력된 확대키K(n+1-i)에 의거해 변환하여, 중간적인 복호 결과 또는 평문을 출력하는 함수이다. 여기서는 일례로서 도7에 나타내는 Feistel 구조가 사용되고 있다.
도7중의 Feistel구조는 주어진 2개의 서브블록Li, Ri로 되는 데이터 블록중, 한쪽의 서브블록Ri를 확대키(Ki)에 의거해 F함수로 비선형 변환하고, 이 변환 결과와 다른 쪽의 서브블록Li와의 XOR를 XOR소자(21)에서 산출하고, 이 산출 결과Ri+1과 한쪽의 서브블록Li+1(=Ri)와의 위치를 교체해 다음단에 공급하는 구성을 구비하고 있다.
여기서F함수는 도7중에 있어서, 확대키K와 서브블록Ri(또는 Li)와의 XOR를 산출하는 XOR소자(22)와, XOR소자(22)의 출력을 4분할해 각기 비선형 변환하는 4개의 S박스(S1~S4)로 구성된다. S박스(S1~S4)는, 예를 들어 도5에 나타낸 치환 테이블을 갖고, 각각의 S박스는 공통의 치환 테이블을 갖지만, 서로 다르게 가져도 좋다.
각 라운드 함수fr에 의한 변환은 동일한 변환을 2회 반복하면, 원래 데이터가 복원되는 인볼루션(involution)라는 성질을 갖고 있다. 이 때문에, 데이터 랜덤화부(20)에서는 평문을 확대키(K1~K16)의 순서로 변환해 암호문을 생성했을 때, 이 암호문을 확대키(K16~K1)의 순서로 재차 변환하면, 평문이 생성될 수 있다.
다음에 도8에 나타낸 순서도를 참조하여 이상과 같이 구성된 암호/복호 장치의 작동을 설명한다.
암호화 시에는 도2에 나타내는 바와 같이, 입력된 공통키(KC) 또는 중간키변환 결과(kci)는 키 변환 함수fki를 사용하여 1라운드마다 확대키(Ki)로 변환된다.
자세하게는 도9에 나타내는 바와 같이, 키 변환 함수fki에서는 일시키 레지스터(11i)로부터 꺼낸 8비트의 제1키(KA)와 상수 레지스터(12i) 내의 상수와의 XOR을 XOR소자(13i)가 산출하고, 이 산출 결과를 S박스(14i)이 비선형 변환한다. 비선형 변환으로서는 예를 들면 도5에 나타낸 관계를 갖도록 입력과 출력을 각 비트마다 치환한다. 이 치환 결과는 확대 변환기(15i)에 의해 4비트 좌측 시프트(=16배)되어 12비트의 데이터를 얻는다. 또한 치환 결과는 20비트의 선두 "0." 을 가산함으로써 32비트로 확대된다. 그 다음에 32비트 치환 결과가 가산기(16i)에 입력된다(도8의 스텝(S5)).
가산기(16i)는 입력된 시프트 결과에 일시키 레지스터(11i)로부터 꺼낸 32비트의 제2키(KB)를 가산하고, 가산 결과를 32비트의 확대키(Ki)로서 데이터 랜덤화부(20)에 출력한다(도8의 스텝(S7)).
이 확대키(Ki)에서는 S박스(14i)에 의해 변환된 8비트의 제1키(KA)가, 우측(최하위비트)로부터 5비트째~12비트째에 위치한다. 이 비트 위치는 제3 및 제4 S박스(S3, S4)에로의 입력에 대응한다. 따라서 확대키 생성기(10)의 S박스(14i)에 의한 랜덤화 효과를 데이터 랜덤화부(20)의 2개의 S박스(S3, S4)에 반영할 수 있어, 확대키의 무작위성이 향상된다.
또 데이터 랜덤화부(20)에서는 평문이 각 라운드 함수fr1~frn마다 각 확대키(K1~Kn)에 의거해 변환되고, 중간적인 암호화 결과를 거쳐 최종적으로 암호문으로 변환된다.
한편, 복호시에는 확대키 생성기(10)에서는 전술의 경우와 마찬가지로 공통키(KC)가 입력되고, 암호화시와는 역순으로 키 변환 처리가 행하여지고, 확대키(Kn~K1)가 차례로 데이터 랜덤화부(20)에 출력된다.
랜덤화부(20)에서는 입력된 암호문이 암호화시와는 역순의 확대키(Kn~K1)에 의거해 변환되고, 중간적인 복호 결과를 거쳐서 최종적으로 평문으로 변환된다.
상술한 바와 같이 본 실시예에 의하면, 각 키 변환 함수fk1~fkn에서는 입력된 키로부터 얻은 제1키(KA)에 의거해 S박스(14i)(치환 테이블)에 의해 변환 처리를 하고, 가산기(16i)가 이 S박스(14i)에 의한 변환 결과를 좌측 시프트시킨 값과, 입력된 키로부터 얻은 제2키(KB)에 의거해 확대키(K1~K16)를 산출한다.
이와 같이 외부 장치를 부가하지 않는 간이한 구성을 이용하고 있고, 확대키(Ki)를 생성할 때에, 치환 테이블(S박스(14i))에 의한 비선형 변환 처리를 한다. 따라서 장치 가격과 장치 규모를 억제하고, 허약키의 생성을 저지하면서 확대키의 무작위성을 향상할 수 있어, 암호 강도를 향상시킬 수 있다.
또 각 키 변환 함수fki에서는 순회 시프터(17i)가 입력된 키를 좌측(또는 우측)으로 순회 시프트시키고, 순회 시프트된 키를 다음 라운드의 키 변환 함수fk(i+1)에 입력하므로, 용이하고 확실하게, 각 라운드에 입력되는 키를 서로다르게 할 수 있다.
또한 순회 시프터(17i)의 시프트량을, 예를 들면 S박스(14i)의 출력 비트수와 서로소인 값으로 한 경우, 각 라운드(R1~Rn)의 거의 모든 제1키(KA)를 서로 다르게 할 수 있고, 전술한 효과를 가일층 용이하고 확실하게 얻을 수 있다.
또한 각 키 변환 함수fki에서는 확대 변환기(15i)가 S박스(14i)에 의한 변환 결과를 확대 변환시켜 가산기(16i)에 입력하므로, 전술한 효과에 더해서, 제1키(KA)의 랜덤화 효과를 확대키(Ki)의 임의의 영역에 반영시킬 수 있다.
또 확대 변환기(15i)에 의한 확대 변환이 소정 비트수의 시프트로 수행되므로, 전술한 효과를 용이하고 확실하게 얻을 수 있다.
또한 데이터 랜덤화부(20)가 암호화 및 복호를 위한 복수의 S박스(S1~S4)를 갖고, 데이터 랜덤화부(20)중 어느 S박스가 키 변환 함수fk1~fkn의 S박스(14i)와 공유되고 있으므로, 장치 규모가 축소될 수 있다.
또 각 키 변환 함수fk1~fkn에서는 확대 변환기(15i)가 S박스(14i)에 의한 변환 결과를 받았을 때, 이 변환 결과의 비트수의 반의 비트수, 또는 반의 비트수에 변환 결과의 비트수의 상수배를 더한 값의 비트수만큼 상기 변환 결과를 좌측 시프트시켜 가산기(16i)에 입력하므로, 제1키(KA)의 랜덤화 작용을 확대키(Ki)로 좌측 시프트시킨 영역에 반영시킬 수 있고, 이 경우 데이터 랜덤화부(20)의 복수의 S박스(S3, S4)에 입력되는 영역에 반영시킬 수 있으므로, 가일층 암호 강도의 향상을도모할 수 있다.
(제2 실시예)
도10은 본 발명의 제2 실시예에 관한 확대키 생성기에 적용되는 키 변환 함수의 구성을 나타내는 블록도이다. 도3과 동일 부분에는 동일 부호를 붙여 그 자세한 설명을 생략하고, 여기서는 다른 부분에 대해서만 설명한다. 또한 이하의 각 실시예도 마찬가지로 하여 중복한 설명을 생략한다.
즉 본 실시예는 제1 실시예의 변형례로서, 확대키의 무작위성의 가일층의 향상을 도모하는 것이다. 보다 구체적으로는 도10에 나타내는 바와 같이, 각 키 변환 함수에 있어서, 전술한 상수 레지스터(12i), XOR소자(13i), S박스(14i) 및 확대 변환기(15i)로 되는 변환 요소가 서로 병렬로 일시키 레지스터(11i)와 가산기(16i) 간에 접속되어 있다.
여기서2개의 S박스(14i)는 1종류로 설치해도 좋고, 또는 복수의 종류로 설치해도 좋지만, 복수의 종류를 이용하는 경우, 공통키(KC)에 의거해 확대키(Ki)를 정순 및 역순의 양쪽으로 생성할 수 있게 해야 하므로, 전반의 키 변환 함수fk1~fk8과 후반의 키 변환 함수fk9~fk16에서는 중앙fk8, fk9으로부터 상하 대칭이 되도록 이들 종류가 설치되는 것이 바람직하다.
또 2개의 확대 변환기(15i)는 서로 동일한 시프트량을 가질수도 있다. 2개의 S박스(14i)에 의한 랜덤화 효과를 보다 광범위하게 반영시켜야 하므로, 서로 다른시프트량으로 S박스(14i)의 출력을 좌측 시프트시키는 것이 바람직하다. 이 경우 예를 들면 한쪽의 확대 변환기(15i)를 4비트의 좌측 시프트로, 다른 쪽의 확대 변환기(15i)를 20비트의 좌측 시프트로 하면, 제1키(KA)의 랜덤화 효과를 데이터 랜덤화부(20)의 모든 S박스(S1~S4)에 반영할 수 있는 점에서 바람직하다.
이상과 같은 구성에 의하면, 제1키(KA)에 의한 무작위성을 더욱 향상할 수 있으므로, 제1 실시예의 효과에 더해서, 확대키(Ki)의 무작위성을 가일층 향상시킬 수 있다.
( 제3 실시예)
도11은 본 발명의 제3 실시예에 관한 확대키 생성기의 구성을 나타내는 블록도이다.
본 실시예는 제1또는 제2 실시예의 변형례이고, 일시키 레지스터(11i) 및 순회 시프터(17i) 대신에, 입력되는 공통키(KC) 또는 중간키kc1~kcn-1의 각 비트를 서로 비선형적으로 치환하고, 얻어진 중간키의 일부 비트를 XOR소자(13i)와 가산기(16i)에 입력함과 동시에, 전체 중간키를 다음단의 치환 처리부(18i+1)에 입력하는 치환 처리부(18i)를 구비하고 있다.
각 치환 처리부(18i)는 공통키(KC)에 의거해 확대키(Ki)를 정순 및 역순의 양쪽으로 생성할 수 있으므로, 공통키(KC)를 정순으로 n회 치환한 결과가 원래 공통키(KC)와 동일하게 되도록 각각 설정된다. 또한 라운드수n=16의 경우의 예인 도12에 나타내는 바와 같이, 암호화시에는 올림차순으로 변환을 하고, 복호시에는 내림차순으로 역변환을 하도록 설정되어 있다. 예를 들어 각 치환부(18i)의 처리는 공통기(KC)를 좌측으로 임의 비트수만큼 순회 시프트시킴으로써 수행된다.
도11에 나타낸 실시예에서는 각 치환부(18i)는 도13에 나타낸 스텝(S21)에서 공통키(KC)를 비선형 변환하는 처리를 수행한다. 스텝(S23)에서 XOR 소자(13i)는 치환부(18i)로부터 얻은 제1키(KA)와 상수 레지스터(12i)에 유지된 상수를 XOR한다. 스텝(S25)에서 S박스(14i)는 치환 테이블로 XOR 소자(13i)로부터의 XOR 출력을 비선형 변환한다. 스텝(S27)에서 확대 변환기(15i)는 비선형 변환치를 좌측으로 4비트만큼 시프트하여 12비트의 확대 변환 결과를 얻는다. 또한 12비트의 변환 결과는 20비트의 선두 "0."을 가산하여 32비트로 확대된다. 스텝(S29)에서는 32비트 확대 변환 결과가 치환부(18i)로부터 얻은 제2키(KB)에 가산되어 확대키를 생성한다.
이상과 같은 구성으로서도, 제1 또는 제2 실시예와 마찬가지의 효과를 얻을 수 있다. 게다가 용이하고 확실하게 각 키 변환 함수fk1~fkn에 입력되는 키(KC, kc1~kcn-1)를 서로 다르게 할 수 있다.
또한 상기 각 실시예에서는 상수를 XOR하는 XOR소자(13i)를 S박스(14i)의 입력측에 설치한 경우에 대해서 설명했지만, 이에 한정하지 않고, 예를 들어 XOR소자(13i)를 생략하고, S박스(14i) 대신에 상수의 XOR를 산출한 후의 S박스(14xi)를 설치한 구성으로 해도, 본 발명을 마찬가지로 실시하여 마찬가지의 효과를 얻을 수 있다. 보다 구체적으로는 값(KA)과 상수의 XOR는 미리 계산되어 테이블 형태로 유지될 수 있고, S박스(14xi)는 값(KA)를 입력 파라미터로 하여 테이블을 찾아서 주어진 XOR를 얻을 수도 있다.
도14는 상기한 확대키 생성기, 암호/복호 장치 및 본 발명의 기억 매체를 구현한 스마트 카드의 구성을 나타내는 블록도이다. 도14에 나타낸 바와 같이, 스마트 카드(51)는 CPU(53), RAM(55), ROM(57), EEPROM(59), 컨택터(61)를 갖는다. RAM(55)은 다양한 데이터를 저장하는 데에 사용되며 작업 영역 등으로서 사용된다. ROM(57)은 다양한 데이터, 프로그램 등을 저장하는 데에 사용된다. EEPROM(59)는 도8 및 도13의 순서도에 나타낸 프로그램 등을 저장한다. 컨택터(61)는 도시하지 않은 스마트 카드 리더/라이터와 전기적 접촉을 이룬다. 도8 및 도13에 나타낸 프로그램은 EEPROM(59) 대신에 RAM(55) 또는 ROM(57)에 저장되어도 좋다.
(제4 실시예)
다음에 본 발명의 제4 실시예에 관한 암호/복호 장치에 대해서 도15를 이용해 설명한다. 이 암호/복호 장치(30)는 제1~ 제3 실시예의 어느 하나에서 설명한 구성을 갖고, 예를 들면 화상 데이터나 음악 데이터 등의 디지탈 정보(이하 로(raw) 데이터라고 함)를 보호하기 위한 것이다.
암호/복호 장치(30)는, 예를 들면 도15에 나타내는 바와 같이 기억 매체로부터 프로그램이 인스톨됨으로써, 퍼스널 컴퓨터(이하 컴퓨터라고 함)(PC)에 실현되어 있는 것으로 한다. 여기서 암호/복호 장치(30)는, 예를 들면 유저ID를 공통키로 하고, 컴퓨터(PC)에 입력된 로데이터를 암호화하고, 얻어진 암호화 데이터(전술한 암호문에 상당)를 휴대 가능한 기억 소자(31)에 기억시킨다. 이 종류의 기억 소자(31)로서는 IC카드, 스마트 미디어 또는 메모리 카드 등이 있다.
이 기억 소자(31)가 유저의 집으로 배포되고, 유저의 집 내의 도시하지 않는 암호/복호 장치는 자기의 유저ID에 의거해 기억 소자(31) 내의 암호화 데이터를 복호하고, 얻어진 화상 데이터나 음악 데이터를 스피커 등으로 재생시킨다. 이에 따라 미리 계약한 유저에게만 로데이터(콘텐츠)를 배포할 수 있다.
본 실시예는 이하 같이 여러가지 변형이 가능하다. 예를 들면 도16에 나타내는 바와 같이, 컴퓨터(PC) 대신에, 예를 들면 하드웨어 회로로 되는 암호/복호 장치(30)를 구비한 기록 장치(32)를 설치한 구성이다. 이 구성에 의하면, 내용을 기억 소자(31)에 기입할 때에, 암호/복호 장치(30)가 유저ID 등에 의해 로데이터를 암호화해 기억 소자(31)에 기억시킨다. 택배로부터 복호에 도달하는 과정은 전술했던 대로이다. 이와 같이 퍼스널 컴퓨터(PC) 등의 범용의 컴퓨터 대신에, 전용의 기록 장치(32)에 암호/복호 장치(30)를 설치한 구성으로 하여도 좋다.
또 도17에 나타내는 바와 같이, 암호/복호 장치(30)를 설치한 호스트 컴퓨터(33)가 네트워크(NW)를 통해서 컴퓨터(PC)에 접속된 구성으로 하여도 좋다. 이 경우 호스트 컴퓨터(33)로부터 다운로드된 암호화 데이터가 컴퓨터(PC)를 통해서 암호화된 상태로 기억 소자(32)에 기억된다. 택배로부터 복호에 도달하는 과정은 전술했던 대로이다. 이 변형례에 의하면, 전술한 효과에 더해서, 네트워크(NW) 상에서의 콘텐츠(로데이터)의 도청 등을 방지할 수 있다.
또한 도18a, 도18b에 나타내는 바와 같이 기억 소자로서, 예를 들면 DVD(digital versatile disc)가 사용되어도 좋다. 도18a에 나타내는 경우, 미리 암호화 데이터가 저장된 DVD(34)가 유저에게 반포된다.
유저의 집의 암호/복호 장치(30)는 DVD(34) 내의 암호화 데이터를 복호하고, 얻어진 화상 데이터나 음악 데이터를 스피커 등으로부터 재생시킨다.
또 도18b에 나타내는 바와 같이, 화상이나 음악 등의 로데이터가 유저의 집의 암호/복호 장치(30)에 의해 소정의 공통키를 이용해 암호화되고, 얻어진 암호화 데이터가 DVD-RAM(35)에 저장된다.
이 암호화 데이터는 유저에 의해 설정된 소정의 공통키에 의해 복호되지만, 공통키가 알려지지 않는 한, 타인에게는 복호되지 않는다. 따라서 개인적인 화상 데이터나 음악 데이터 등을 타인으로부터 보호하면서 보존할 수 있다.
(기타 실시예)
본 발명의 확대키 생성기 및 암호/복호 장치의 처리를 실현하기 위한 프로그램이 기억된 기억 매체로서는 자기 디스크, 플로피 디스크, 하드 디스크, 광디스크(CD-ROM, CD-R, DVD 등), 광자기 디스크(M0 등), 반도체 메모리 등이 적용가능하다. 실제에는 프로그램을 기억할 수 있고, 또한 컴퓨터가 판독할 수 있는 기억 매체이면, 그 기억 형식은 특별히 한정되지 않는다.
또 기억 매체로부터 컴퓨터에 인스톨된 프로그램의 지시에 의거하여 컴퓨터상에서 가동되고 있는 OS(오퍼레이팅 시스템)이나, 데이터 베이스관리 소프트웨어, 네트워크 소프트웨어 등의 MW(미들웨어) 등이 본 실시예를 실현하기 위한 각 처리의 일부를 실행하여도 좋다.
또한 본 발명의 기억 매체는 컴퓨터로부터 독립한 매체에 한정하지 않고, LAN이나 인터넷 등에 의해 전송된 프로그램을 다운로드하여 기억하거나 또는 일시 기억한 기억 매체도 포함된다.
또 기억 매체의 수는 1개에 한정하지 않고, 복수의 매체로부터 상기 실시예의 처리가 실행되는 경우도 본 발명의 기억 매체에 포함되고, 매체 구성은 어떠한 구성이어도 좋다.
본 발명의 컴퓨터는 기억 매체에 기억된 프로그램에 의거하여, 상기 실시예의 처리를 실행하고, 퍼스널 컴퓨터 등의 1개로 되는 장치나, 복수의 장치가 네트워크 접속된 시스템 등의 어떠한 구성이어도 좋다.
또 본 발명의 컴퓨터는 퍼스널 컴퓨터에 한정하지 않고, 정보 처리 기기에 포함되는 산출 처리 장치, 마이크로 컴퓨터 등도 포함하고, 프로그램을 통해서 본 발명의 기능을 실현할 수 있는 모든 기기, 장치를 약칭하고 있다.
또 본 발명은 DES 암호계에 한정하지 않고, 라운드 함수를 이용하는 블록 암호계이면 적용할 수 있고, 예를 들면, Lucifer, LOKI, MISTY1, MISTY2 및 SAFER(Secure And Fast Encryption Routine) 등의 암호계에 적용해도 좋다.
상기 실시예에서, S박스는 치환 테이블을 사용하여 비선형 변환을 하지만, 대신에 S 박스가 배선 패턴을 사용하여 비선형 변환을 하여도 좋다.
도10에 나타낸 실시예에서, 상수 레지스터(12i), XOR 소자(13i), S 박스(14i) 및 확대 변환기(15i)를 포함하는 2조의 변환 소자가
병렬 구성되는 대신에, 3개 이상의 확대 변환기 소자가 병렬 구성되어도 좋다.
다양한 본 발명의 다른 변형례가 발명의 범주 내에서 이루어질 수도 있다.
부가의 장점 및 변경은 당업자에게 용이할 것이다. 따라서 본 발명의 보다 광범위한 태양은 상술한 구체적인 세부 사항과 각각의 실시예에 한정되지 않는다. 따라서 첨부의 청구항과 이에 상당하는 바에 의해 규정된 총체적인 발명 개념의 정신이나 범주로부터 벗어나지 않고서도 다양한 변경이 이루어질 수 있다.
이상 설명한 바와 같이 본 발명에 의하면, 장치 가격이나 장치 규모를 억제하고, 허약키의 생성을 저지하면서 확대키의 무작위성을 향상할 수 있고, 또한 암호 강도를 향상할 수 있는 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및 기억 매체를 제공할 수 있다.

Claims (26)

  1. 확대키 생성기에 있어서,
    각 라운드마다 다른 키를 입력받고, 입력된 키에 의거해 확대키를 생성하기 위해 복수의 캐스케이드로 연결된 키 변환 함수부를 구비하고,
    상기 각각의 키 변환 함수부는
    상기 입력된 키로부터 얻은 제1키에 의거해 소정의 치환 테이블에 의해 변환 처리를 하는 제1키 변환 수단과,
    상기 제1키 변환 수단에 의한 변환 결과와 입력된 키로부터 얻은 제2키에 의거해 확대키를 산출하는 확대키 산출 수단을 구비한 것을 특징으로 하는 확대키 생성기.
  2. 제1항에 있어서,
    상기 각각의 키 변환 함수부는
    입력된 키를 좌측 또는 우측으로 순회 시프트시키고, 순회 시프트된 키를 다음 라운드의 키 변환 함수부에 입력하는 순회 시프트 수단을 구비한 것을 특징으로 하는 확대키 생성기.
  3. 제2항에 있어서,
    상기 순회 시프트 수단의 시프트량은 상기 제1키 변환 수단의 출력 비트수와서로소인 것을 특징으로 하는 확대키 생성기.
  4. 제1항에 있어서,
    상기 각각의 키 변환 함수부는
    입력된 키를 치환 테이블에 의해 변환하고, 이 변환된 키를 다음 라운드의 키 변환 함수부에 입력하는 입력된 키 변환 수단을 구비한 것을 특징으로 하는 확대키 생성기.
  5. 제1항에 있어서,
    상기 각각의 키 변환 함수부는
    상기 제1키 변환 수단에 의한 변환 결과를 확대 변환시키고, 확대 변환 결과를 상기 확대키 산출 수단에 입력하는 확대 변환 수단을 구비한 것을 특징으로 하는 확대키 생성기.
  6. 제5항에 있어서,
    상기 확대 변환 수단의 확대 변환은 소정 비트수를 시프트함으로써 수행되는 것을 특징으로 하는 확대키 생성기.
  7. 제6항에 있어서,
    소정 비트수의 시프트는 상기 제1키 변환 수단의 변환 결과의 비트수의 절반비트수만큼 변환 결과를 좌측으로 시프트하거나, 변환 결과의 비트수의 정수배를 비트수의 절반에 가산함으로써 수행되는 것을 특징으로 하는 확대키 생성기.
  8. 제1항에 있어서,
    상기 확대키 산출 수단에 의한 산출은 자리 올림을 수반하는 가산인 것을 특징으로 하는 확대키 생성기.
  9. 제1항의 확대키 생성기를 구비하는 암호/복호 장치에 있어서,
    상기 각각의 키 변환 함수부에 의해 생성된 각 확대키에 의거하여 입력된 평문을 암호화하여 암호문을 출력하고, 또한 입력된 암호문을 복호하여 평문을 출력하는 데이터 랜덤화부를 구비한 것을 특징으로 하는 암호/복호 장치.
  10. 제9항에 있어서,
    상기 데이터 랜덤화부는 암호화 및 복호를 위한 복수의 치환 테이블를 갖고, 상기 데이터 랜덤화부의 일부 치환 테이블은 상기 제1키 변환 수단의 치환 테이블과 공유되고 있는 것을 특징으로 하는 암호/복호 장치.
  11. 각 라운드 장치마다 다른 키를 입력하는 단계와,
    입력된 키로부터 제1키를 생성하는 단계와,
    소정의 치환 테이블에 의해 생성된 제1키를 변환하는 단계와,
    변환 결과와 입력된 키로부터 얻은 제2키에 의거하여 확대키를 산출하는 단계를 구비하는 것을 특징으로 하는 확대키 생성 방법.
  12. 컴퓨터로 판독 가능한 기억 매체에 있어서,
    각 라운드마다 입력된 다른 키에 의거해 제1키를 생성하고,
    소정의 치환 테이블에 의해 생성된 제1키를 변환하고,
    변환 결과와 입력된 키로부터 얻은 제2키에 의거하여 확대키를 산출하는 프로그램을 기억한 컴퓨터로 판독 가능한 것을 특징으로 하는 기억 매체.
  13. 제12항에 있어서,
    입력된 키를 좌측 또는 우측으로 순회 시프트시키고, 순회 시프트된 키를 다음 라운드에 입력하는 프로그램을 기억한 기억 매체.
  14. 제13항에 있어서,
    순회 시프트 함수의 시프트량은 제1키 변환 수단의 출력 비트수와 서로소인 것을 특징으로 하는 기억 매체.
  15. 제14항에 있어서,
    입력된 키를 치환 테이블에 의해 변환하고, 변환된 키를 다음 라운드에 입력하는 프로그램을 기억한 것을 특징으로 하는 기억 매체.
  16. 제12항에 있어서,
    제1키에 의거한 변환 결과를 확대 변환하는 프로그램을 기억한 것을 특징으로 하는 기억 매체.
  17. 제12항에 있어서,
    확대 변환 함수는 소정 비트수의 시프트로 수행되는 것을 특징으로 하는 기억 매체.
  18. 제17항에 있어서,
    소정 비트수의 시프트는 상기 제1키 변환 수단의 변환 결과의 비트수의 절반 비트수만큼 변환 결과를 좌측으로 시프트하거나, 변환 결과의 비트수의 정수배를 비트수의 절반에 가산함으로써 수행되는 것을 특징으로 하는 기억 매체.
  19. 제12항에 있어서,
    상기 확대키 산출 수단에 의한 산출은 자리 올림을 수반하는 가산인 것을 특징으로 하는 기억 매체.
  20. 컴퓨터로 판독 가능한 기억 매체에 있어서,
    각 라운드마다 입력된 다른 키에 의거해 제1키를 생성하고,
    소정의 치환 테이블에 의해 생성된 제1키를 변환하고,
    변환 결과와 입력된 키로부터 얻은 제2키에 의거하여 확대키를 산출하고,
    생성된 확대키에 의거하여 입력된 평문을 암호화하여 암호문을 출력하고 또한 입력된 암호문을 복호하여 평문을 출력하기 위해 데이터 랜덤화를 수행하는 프로그램을 기억한 컴퓨터로 판독 가능한 것을 특징으로 하는 기억 매체.
  21. 제20항에 있어서,
    데이터 랜덤화부는 암호화 및 복호를 위한 복수의 치환 테이블을 갖고,
    데이터 랜덤화부의 치환 테이블의 일부는 제1키에 의거한 변환에 사용되는 치환 테이블과 공용되고 있는 것을 특징으로 하는 기억 매체.
  22. 확대키 생성기에 있어서,
    각 라운드마다 다른 키를 수신하고, 입력된 키에 의거해 확대키를 생성하는 복수의 캐스케이드로 연결된 키 변환 함수부를 구비하고,
    상기 각각의 키 변환 함수부는
    병렬 회로를 이루는 복수의 확대 변환 소자와,
    상기 복수의 확대 변환 소자로부터 출력된 변환 결과와 입력된 키로부터 얻은 제2키에 의거해 확대키를 산출하는 확대키 산출 수단을 구비하고,
    상기 확대 변환 소자는
    상수를 유지하는 상수 레지스터와,
    상기 상수 레지스터에 유지된 상수와 입력된 키로부터 얻은 제1키를 XOR 산출하는 XOR 산출 수단과,
    상기 XOR 산출 수단으로부터 출력된 값에 의거하여 소정의 치환 테이블에 의해 변환 처리를 수행하는 S 박스와,
    상기 S 박스로부터 출력된 변환 결과를 확대 변환하는 확대 변환기를 포함하는 것을 특징으로 하는 확대키 생성기.
  23. 각 라운드마다 다른 키를 수신하고, 입력된 키에 의거해 확대키를 생성하는 복수의 캐스케이드로 연결된 키 변환 함수부를 갖는 확대키 생성기에 사용되는 컴퓨터로 판독 가능한 기억 매체에 있어서,
    상기 기억 매체는 상기 확대키 생성기에서 수행되는 프로그램을 기억하며,
    상기 각각의 키 변환 함수부는
    병렬 회로를 이루는 복수의 확대 변환 소자와,
    상기 복수의 확대 변환 소자로부터 출력된 변환 결과와 입력된 키로부터 얻은 제2키에 의거해 확대키를 산출하는 확대키 산출 수단을 구비하고,
    상기 확대 변환 소자는
    상수를 유지하는 상수 레지스터와,
    상기 상수 레지스터에 유지된 상수와 입력된 키로부터 얻은 제1키를 XOR로 산출하는 XOR 산출 수단과,
    상기 XOR 산출 수단으로부터 출력된 값에 의거하여 소정의 치환 테이블에 의해 변환 처리를 수행하는 S 박스와,
    상기 S 박스로부터 출력된 변환 결과를 확대 변환하는 확대 변환기를 포함하는 것을 특징으로 하는 기억 매체.
  24. 확대키 생성기에 있어서,
    각 라운드마다 다른 키를 수신하고, 입력된 키에 의거해 확대키를 생성하는 복수의 캐스케이드로 연결된 키 변환 함수부를 구비하고,
    상기 각각의 키 변환 함수부는
    입력된 키를 비선형 치환하고 치환된 결과를 출력하는 치환부와,
    상기 치환부로부터 얻은 제1키에 의거해 소정의 치환 테이블에 의해 변환 처리를 하는 제1키 변환 수단과,
    상기 제1키 변환 수단에 의한 변환 결과와 상기 치환부로부터 얻은 제2키에 의거해 확대키를 산출하는 확대키 산출 수단을 구비한 것을 특징으로 하는 확대키 생성기.
  25. 각 라운드마다 다른 키를 입력하는 단계와,
    입력된 키를 비선형으로 치환하는 단계와,
    소정의 치환 테이블에 의한 치환으로부터 얻은 제1키를 변환하는 단계와,
    변환 결과와 치환으로부터 얻은 제2키에 의거하여 확대키를 산출하는 단계를 구비하는 것을 특징으로 하는 확대키 생성 방법.
  26. 컴퓨터로 판독 가능한 기억 매체에 있어서,
    각 라운드마다 입력된 다른 키로부터 제1키를 생성하고, 치환부에서 치환된 결과를 출력하며,
    입력된 키를 비선형으로 치환하고,
    소정의 치환 테이블에 의한 치환으로부터 얻은 제1키를 변환하고,
    변환 결과와 치환으로부터 얻은 제2키에 의거하여 확대키를 산출하는 프로그램을 기억한 컴퓨터로 판독 가능한 것을 특징으로 하는 기억 매체.
KR10-2000-0050093A 1999-08-31 2000-08-28 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및기억 매체 KR100402811B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP99-244176 1999-08-31
JP24417699 1999-08-31

Publications (2)

Publication Number Publication Date
KR20010067121A true KR20010067121A (ko) 2001-07-12
KR100402811B1 KR100402811B1 (ko) 2003-10-30

Family

ID=17114905

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0050093A KR100402811B1 (ko) 1999-08-31 2000-08-28 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및기억 매체

Country Status (9)

Country Link
US (1) US6891950B1 (ko)
EP (1) EP1081889B1 (ko)
KR (1) KR100402811B1 (ko)
CN (1) CN1172235C (ko)
DE (1) DE60024739T2 (ko)
ID (1) ID27135A (ko)
MX (1) MXPA00008484A (ko)
SG (1) SG92735A1 (ko)
TW (1) TW556111B (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2784831B1 (fr) * 1998-10-16 2000-12-15 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete
CA2449672C (en) * 2000-03-09 2005-05-17 Mitsubishi Denki Kabushiki Kaisha Block encryption device using auxiliary conversion
US7054443B1 (en) * 2000-03-27 2006-05-30 Microsoft Corporation System and method for protecting digital goods using random and automatic code obfuscation
US9520993B2 (en) 2001-01-26 2016-12-13 International Business Machines Corporation Renewable traitor tracing
US8077861B2 (en) 2004-08-12 2011-12-13 Cmla, Llc Permutation data transform to enhance security
US7564970B2 (en) * 2004-08-12 2009-07-21 Cmla, Llc Exponential data transform to enhance security
US7577250B2 (en) * 2004-08-12 2009-08-18 Cmla, Llc Key derivation functions to enhance security
JP2003050745A (ja) * 2001-08-07 2003-02-21 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
JP4690600B2 (ja) * 2001-08-23 2011-06-01 富士通株式会社 データ保護方法
GB0121793D0 (en) * 2001-09-08 2001-10-31 Amphion Semiconductor Ltd An apparatus for generating encryption/decryption keys
DE10201441A1 (de) 2002-01-16 2003-08-14 Infineon Technologies Ag Schiebevorrichtung und Verfahren zum Verschieben
US20060034456A1 (en) * 2002-02-01 2006-02-16 Secure Choice Llc Method and system for performing perfectly secure key exchange and authenticated messaging
US20030149876A1 (en) * 2002-02-01 2003-08-07 Secure Choice Llc Method and system for performing perfectly secure key exchange and authenticated messaging
DE60301750T2 (de) * 2002-04-03 2006-07-06 Matsushita Electric Industrial Co., Ltd., Kadoma Vorrichtung zur Erzeugung eines erweiterten Schlüssels, Verschlüsselungsvorrichtung und Verschlüsselungssystem
JP2004245988A (ja) * 2003-02-13 2004-09-02 Sony Corp データ処理装置、その方法およびそのプログラムと線形変換回路および暗号化回路
TW595183B (en) * 2003-03-14 2004-06-21 Acer Labs Inc Crypto-system with an inverse key evaluation circuit
DE10345378B4 (de) * 2003-09-30 2010-08-12 Infineon Technologies Ag Verfahren und Vorrichtung zur Ver-/Entschlüsselung
US20050147244A1 (en) * 2003-12-30 2005-07-07 Alexander Moldovyan Method for cryptographic transformation of binary data blocks
CN101288260A (zh) 2005-01-27 2008-10-15 美商内数位科技公司 使用未由他人分享联合随机衍生秘钥方法及系统
US20070005359A1 (en) * 2005-06-30 2007-01-04 David Bowen Method for transmitting transactional commands and data between computer networks
US7873166B2 (en) * 2005-09-13 2011-01-18 Avaya Inc. Method for undetectably impeding key strength of encryption usage for products exported outside the U.S
US20080037775A1 (en) * 2006-03-31 2008-02-14 Avaya Technology Llc Verifiable generation of weak symmetric keys for strong algorithms
US7702100B2 (en) * 2006-06-20 2010-04-20 Lattice Semiconductor Corporation Key generation for advanced encryption standard (AES) Decryption and the like
US8144875B2 (en) * 2006-09-06 2012-03-27 Paul McGough Method and system for establishing real-time authenticated and secured communications channels in a public network
US8144874B2 (en) * 2006-09-06 2012-03-27 Paul McGough Method for obtaining key for use in secure communications over a network and apparatus for providing same
US10148430B1 (en) 2013-04-17 2018-12-04 Amazon Technologies, Inc Revocable stream ciphers for upgrading encryption in a shared resource environment
JP2015130580A (ja) * 2014-01-07 2015-07-16 富士通株式会社 データスクランブル装置、セキュリティ装置、セキュリティシステム及びデータスクランブル方法
US9774443B2 (en) * 2015-03-04 2017-09-26 Apple Inc. Computing key-schedules of the AES for use in white boxes
US10073964B2 (en) 2015-09-25 2018-09-11 Intel Corporation Secure authentication protocol systems and methods
CN112202547B (zh) * 2020-11-11 2022-04-12 衡阳师范学院 一种轻量级分组密码gfcs实现方法、装置及可读存储介质
CN114124348B (zh) * 2021-11-22 2023-07-25 南京信息工程大学 一种基于混沌轮编码的光接入加密方法
CN115208626B (zh) * 2022-06-02 2023-12-01 北京交大微联科技有限公司 铁路信号系统中基于安全通信密文传输的通信方法及装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3958081A (en) * 1975-02-24 1976-05-18 International Business Machines Corporation Block cipher system for data security
US4255811A (en) * 1975-03-25 1981-03-10 International Business Machines Corporation Key controlled block cipher cryptographic system
US4802217A (en) * 1985-06-07 1989-01-31 Siemens Corporate Research & Support, Inc. Method and apparatus for securing access to a computer facility
US4850019A (en) 1985-11-08 1989-07-18 Nippon Telegraph And Telephone Corporation Data randomization equipment
US5317638A (en) * 1992-07-17 1994-05-31 International Business Machines Corporation Performance enhancement for ANSI X3.92 data encryption algorithm standard
WO1994016509A1 (en) * 1992-12-30 1994-07-21 Telstra Corporation Limited A method and apparatus for generating a cipher stream
JPH0812537B2 (ja) * 1993-03-11 1996-02-07 日本電気株式会社 暗号化装置
US5511123A (en) * 1994-08-04 1996-04-23 Northern Telecom Limited Symmetric cryptographic system for data encryption
JPH09162859A (ja) * 1995-12-07 1997-06-20 Fujitsu Ltd スクランブル方法及び装置、デスクランブル方法及び装置、並びに、データ伝達方法及びシステム
KR100190157B1 (ko) * 1996-04-30 1999-06-01 니시무로 타이죠 암호화 장치 및 암호화 방법
US5745577A (en) * 1996-07-25 1998-04-28 Northern Telecom Limited Symmetric cryptographic system for data encryption
JP3517063B2 (ja) * 1996-10-11 2004-04-05 株式会社東芝 暗号化装置及び暗号化方法
KR19980027399A (ko) * 1996-10-16 1998-07-15 구자홍 셀룰라 오토마타를 이용한 블록 암호화 방법 및 장치
US5949884A (en) * 1996-11-07 1999-09-07 Entrust Technologies, Ltd. Design principles of the shade cipher
US6292896B1 (en) * 1997-01-22 2001-09-18 International Business Machines Corporation Method and apparatus for entity authentication and session key generation
JPH10301492A (ja) * 1997-04-23 1998-11-13 Sony Corp 暗号化装置および方法、復号装置および方法、並びに情報処理装置および方法
TW396704B (en) * 1997-08-07 2000-07-01 Hitachi Ltd Cipher conversion method, cipher conversion apparatus, decoding method, decoding apparatus, and data communication system
WO1999008411A2 (en) * 1997-08-08 1999-02-18 Jonathan Stiebel New operation for key insertion with folding
EP1016240A1 (en) * 1997-09-17 2000-07-05 Frank C. Luyster Improved block cipher method
CA2319135C (en) * 1998-01-27 2003-06-17 Nippon Telegraph And Telephone Corporation Data transformation device and recording medium having recorded thereon a program for implementing the same
US6570989B1 (en) * 1998-04-27 2003-05-27 Matsushita Electric Industrial Co., Ltd. Cryptographic processing apparatus, cryptographic processing method, and storage medium storing cryptographic processing program for realizing high-speed cryptographic processing without impairing security
KR100296958B1 (ko) * 1998-05-06 2001-09-22 이석우 블록 데이터 암호화 장치
DE19924986B4 (de) * 1998-05-29 2006-03-23 Hitachi, Ltd. Verschlüsselungs-Konversionsvorrichtung, Entschlüsselungs-Konversionsvorrichtung, kryptografisches Kommunikationssystem und elektronische Gebühren-Sammelvorrichtung
JP2000261098A (ja) 1999-03-09 2000-09-22 Nec Corp 自励発振型半導体レーザ

Also Published As

Publication number Publication date
CN1172235C (zh) 2004-10-20
SG92735A1 (en) 2002-11-19
DE60024739D1 (de) 2006-01-19
EP1081889A2 (en) 2001-03-07
EP1081889A3 (en) 2002-09-11
DE60024739T2 (de) 2006-06-29
TW556111B (en) 2003-10-01
EP1081889B1 (en) 2005-12-14
KR100402811B1 (ko) 2003-10-30
MXPA00008484A (es) 2004-11-10
CN1291744A (zh) 2001-04-18
ID27135A (id) 2001-03-01
US6891950B1 (en) 2005-05-10

Similar Documents

Publication Publication Date Title
KR100402811B1 (ko) 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및기억 매체
JP3992742B2 (ja) データブロックおよび鍵を非線形的に結合する暗号方法および装置
CA2449662C (en) Block encryption device using auxiliary conversion
US6917684B1 (en) Method of encryption and decryption with block number dependant key sets, each set having a different number of keys
US6246768B1 (en) Data encryption system for encrypting plaintext data
JP3679936B2 (ja) 暗復号装置及び記憶媒体
JP4701166B2 (ja) 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム
KR100362458B1 (ko) 암호화 처리장치, 암호화 처리방법 및 보안성을 손상시키지 않고 고속으로 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체
KR100349332B1 (ko) 데이터 암호화장치 및 방법
JPH0863097A (ja) データを暗号化するための対称暗号化方法およびシステム
JP6135804B1 (ja) 情報処理装置、情報処理方法及びプログラム
KR20070057797A (ko) 보안성을 향상시키는 순열 데이터 변환
KR20120089396A (ko) 암호화 장치 및 그 암호화 방법
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
KR20190020988A (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
JP6052166B2 (ja) 暗号化方法、暗号化装置および暗号化プログラム
US8135130B2 (en) Data encryption apparatus, data converting method, data converting program, recording medium and integrated circuit
US20030174835A1 (en) Data encryption device, data decryption device, and data encryption/decryption device
JPH0697930A (ja) ブロック暗号処理装置
JP3389210B2 (ja) 拡大鍵生成装置、暗復号装置、拡大鍵生成方法、及び記憶媒体
JPH09269727A (ja) 暗号化方法および暗号化装置
JP2000089666A (ja) 暗号化/復号化装置
Usman et al. A data specific comparative study for choosing best cryptographic technique
JP3013774B2 (ja) 循環演算にもとづく暗号化装置
JP3017725B2 (ja) データ変換装置

Legal Events

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

Payment date: 20120912

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20130909

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20190917

Year of fee payment: 17