KR20120115425A - 블록 사이퍼 암호화의 사용을 위한 방법 및 시스템 - Google Patents

블록 사이퍼 암호화의 사용을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20120115425A
KR20120115425A KR1020127023158A KR20127023158A KR20120115425A KR 20120115425 A KR20120115425 A KR 20120115425A KR 1020127023158 A KR1020127023158 A KR 1020127023158A KR 20127023158 A KR20127023158 A KR 20127023158A KR 20120115425 A KR20120115425 A KR 20120115425A
Authority
KR
South Korea
Prior art keywords
block
key
function
round
cipher
Prior art date
Application number
KR1020127023158A
Other languages
English (en)
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
Priority claimed from IL172578A external-priority patent/IL172578A0/en
Priority claimed from IL173863A external-priority patent/IL173863A0/en
Priority claimed from IL175802A external-priority patent/IL175802A0/en
Application filed by 엔디에스 리미티드 filed Critical 엔디에스 리미티드
Publication of KR20120115425A publication Critical patent/KR20120115425A/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
    • 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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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
    • G09C1/04Apparatus 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 with sign carriers or indicators moved relative to one another to positions determined by a permutation code, or key, so as to indicate the appropriate corresponding clear or ciphered text
    • 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/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Abstract

복수의 블록을 평문에서 암호문으로 암호화하기 위한 블록 사이퍼 시스템이 개시되고 ,각각의 블록이 일정한 루트 키와 연관되어 있다. 본 시스템은 복수의 입력을 가진 함수를 기반으로 하는 각각의 블록에 대한 입력 키를 결정하기 위한 암호 키 모듈; 및 블록 각각에 대하여 결정된 입력 키를 기초로 블록 각각을 암호화하기 위한 암호화 모듈을 포함하고, 상기 복수의 입력은 제1블록에 대하여, 루트 키 및 초기화 벡터; 및 상기 제1블록 이외의 다른 블록에 대하여, 이전에 암호화된 블록 중 적어도 하나의 평문 및 루트 키를 포함한다. 관련된 장치 및 방법 또한 포함된다.

Description

블록 사이퍼 암호화의 사용을 위한 방법 및 시스템{METHOD AND SYSTEM FOR USAGE OF BLOCK CIPHER ENCRYPTION}
본 발명은 암호화/복호화에 관한 것이고, 더욱 상세하게는 블록 사이퍼의 오퍼레이션 모드에 관한 것이다.
다양한 암호화 방법이 공지되어 있다. 공지된 방법 중, 많은 방법이 입력 평문(plaintext) 블록이 출력 암호문(ciphertext) 블록을 획득하기 위해 비밀 암호화 키에 의존하는 함수에 따라 변경되는 블록 방법이다. 블록 사이퍼의 고유 특성 중 하나는, 본 명세서에서 블록 크기라 불리는, 고정된 크기의 블록을 프로세싱하는 것이다. 전형적으로 블록 크기는 보호될 통신 매체의 표준 패킷 크기보다 더 작다. 상이한 통신 매체 패킷 크기에 대한 두 예는 (a) 표준 패킷 크기가 1.5키로바이트인 TCP/IP 통신, (b) 표준 패킷 크기가 188바이트인 MPEG2/DVB 방송 시스템이다. 상이한 블록 크기를 가진 상이한 블록 사이퍼의 두 예는 (a) 8바이트의 블록 크기를 가진 DES, (b) 16바이트의 블록 크기를 가진 AES이다.
암호화될 필요가 있는 패킷이 블록 크기보다 더 클 때, 블록 사이퍼를 사용하기 위한 오퍼레이션의 몇 가지 모드가 존재한다. 오퍼레이션 모드의 몇 가지 예는 (1) 각각의 블록이 다른 블록과 독립적으로 암호화되는 전자 코드 북(ECB) 모드; (2) 각각의 평문 블록이 이전에 암호화된 이번 블록의 암호문에 대하여 XOR되는 암호문 블록 체이닝(CBC) 모드; (3) 블록이 역순으로 프로세싱되는 것을 제외하고 CBC 모드와 유사한 리버스 사이퍼 블록 체이닝 모드(RCBC)를 포함한다. 1996년 'John Wiley & Sons, Inc.'에 의해 발행된, 'Bruce Schneier'의 "Applied Cryptography(Second Edition)"의 제9장은 블록 사이퍼의 다양한 오퍼레이션 모드를 살펴보았다. 오퍼레이션의 RCBC 모드는 'Kuhn, et al.'의 미국특허 제5,799,089호에 서술되어 있다.
소개하자면, 방송 시스템에서, 방송 중계소(headend)는 전형적으로 컨텐츠를 시스템 내의 다수의 방송 클라이언트로 전송한다. 그 컨텐츠에 대하여 권한없는 액세스를 차단하기 위해, 방송 컨텐츠는 통상적으로 암호화된다. 각각의 암호화/복호화 키는 그것이 새로운 키에 의해 교체된 후 (키 기간으로 알려진) 비교적 짧은 기간의 시간 동안 사용될 수 있다. 키 교체는 권한있는 클라이언트가 한 그룹의 권한없는 클라이언트에게 그 키를 배포하는 공격인, 키 배포 공격으로부터 방송 시스템을 보호하기 위해 실행된다.
방송 시스템은, 또한, PC와 같은, 범용 머신 상에서 복호화 프로세스를 시뮬레이팅함으로써 저작권 컨텐츠의 권한없는 소비를 용이하게 하는 것을 다루는 해적 공격에 따를 수 있다.
그러므로, 레귤러 키 교체와 함께, 복호화 프로세서는 때때로 특별한 하드웨어에서만 효과적으로 실행될 수 있는 오퍼레이션을 포함한다. 디지털 텔레비전 분야에서서의 방송 시스템을 설명하는 표준의 한 예는 디지털 영상 방송(DVB) 표준이다. 블록 사이퍼는 DVB 공통 스크램블링 알고리즘 버전 2.0(DVB CSA 2.0)으로 공지된, DVB 표준에 의해 특정된다.
복호화 프로세스의 해적 시뮬레이션은 복호화 프로세스 내에서 오퍼레이션의 플로우를 변경함으로써, 예컨대, 병렬로 몇몇 오퍼레이션을 계산함으로써, 또는 몇몇의 계산을 프리프로세싱함으로써, 그 프로세싱을 가속화시킬 수 있다. 예를 들어, 동일한 키로 암호화된 U 블록을 포함한 컨텐츠 패킷에 대하여, 키 설정 오퍼레이션은 U 복호화 엔진에서 병렬로 실행될 수 있다. 또한, U 블록의 복호화는 또한 병렬로 실행될 수 있다. OFB 모드와 같은 블록 사이퍼에 대한 공지된 오퍼레이션 모드(1996년 'John Wiley & Sons, Inc.'에 의해 발행된, 'Bruce Schneier'의 "Applied Cryptography(Second Edition)"의 제9장 참조)는 병렬 복호화를 금지한다. OFB 모드는 암호기 및 복호기 모두에서 블록 사이퍼의 암호화 방법을 사용하고, 복호기에서, 블록 j에 대한 암호화 프로세스의 입력은 블록 j-1에 대한 암호화 프로세스의 출력에 의존한다. 그러나, 모든 암화화 및 복호화 프로세스는 동일한 키를 사용하고, 그러므로, 키 설정 페이즈는 한번만 실행될 수 있다.
'NDS Limited'의 PCT 공개 특허출원 WO 01/91466은 사용자 응답을 기초로 하는 오브젝트 복호화를 위한 인터액티브 텔레비젼 시스템을 서술한다. 이 오브젝트는 패킷의 블록이 아니라는 것을 이해해야 한다. 사용자 응답은 복호화 목적으로 갱신된 컨트롤 워드를 형성하기 위해 컨트롤 워드와 함께 결합된다. WO 01/91466의 시스템은 블록 사이퍼 시스템이 아니므로, 본 발명의 시스템과 무관함이 쉽게 이해될 것이다.
아래 참조문헌은 최신 기술을 나타내는 것으로 생각된다:
'Pires'의 미국공개 특허출원 2002/0076044;
회의 제목 "Fast Software Encryption", 'Cambridge Security Workshop Proceedings(December 1993). Springer-Verlag, 1994, pp. 191-204'에서 발표된 'B.Schneier'의 제목 "Description of a New Variable-Length Key, 64 Bit Block Cipher(Blowfish)"의 페이퍼;
'Computer Science Massachusetts Institute of Technology, Cambridge, MA 02139, USA'에 대한 연구소에 의해 발표된, 'Moses Liskov', 'Ronald L. Rivest', 및 'David Wagner'의 "Tweakable Block Ciphers"란 제목의 아티클; 및
'CRC Press, Inc. 1997'에 의해 발표된 'A.Menezes, 'P. van Oorschots', 및 'S. Vanstone'의 'Handbook of Applied Cryptography'의 섹션 9.40, 페이지 340-346.
본 발명은 개선된 블록 사이퍼 시스템 및 블록 사이퍼의 오퍼레이션 모드를 제공하고자 한다.
소개하자면, 본 발명의 시스템은, 바람직한 실시예에서, 바람직하게는, 패킷 내의 각각의 블록에 대하여 암호화/복호화 키를 조절하는 단계를 포함한다.
주기적인 키 조절은 암호화/복호화 속도를 느리게 할 수 있다. 그러나, 한편으로는 주기적인 키 조절은 전형적으로 암호 해독에 대항하여 사이퍼를 강화시킨다. 또한, 주기적인 키 조절은 또한 사이퍼가 하드웨어 구현에 더 효율적이고, 소프트웨어 구현에 덜 효율적일 것이 요구될 때 유리할 수 있다. 후자의 요구사항은 전형적으로 방송 시스템에서 발생한다.
본 발명의 시스템은, 바람직한 실시예에서, 복호화 프로세스에서 의존 경로를 유도하여, 복호화 프로세스 동안 순차적 플로우의 계산을 강요하고, 병렬화, 및 프리프로세싱을 금지한다. 비-병렬화 효과는 하나 이상의 복호화된 평문 블록, 바람직하게는 복호화된 마지막 평문 블록을 기초로 주기적인 키 조절에 의해 달성된다. 본 발명의 가장 바람직한 실시예에 따라, 키 조절은 또한 하나 이상의 암호문 블록 및/또는 블록 인덱스 또는 블록-카운터를 기초로 한다.
본 발명의 다른 바람직한 실시예에 따라, 각각의 블록은 복수의 블록 사이퍼를 포함한 블록 사이퍼 배열에 의해 암호화/복호화된다. 평문과 암호문 사이의 블록 사이퍼 배열에 의한 프로세싱은 그 블록 사이퍼 사이에 평문과 암호문 사이의 값인 중간값이 존재하도록 실행된다. 적어도 하나의 사이퍼의 입력 키는 이전 블록, 바람직하게는 이전에 프로세싱된 마지막 블록의 하나 이상의 중간값을 기초로 한다.
그러므로, 본 발명의 바람직한 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문에서 암호문으로 암호화하기 위한 블록 사이퍼 시스템이 제공되어 있는데, 본 시스템은 복수의 입력을 가진 함수를 기반으로 하는 각각의 블록에 대한 입력 키를 결정하기 위한 암호 키 모듈; 및 상기 블록의 각각에 대하여 결정된 상기 입력 키를 기초로 상기 블록의 각각을 암호화하기 위한 암호화 모듈을 포함하고, 상기 복수의 입력은 상기 블록의 제1블록에 대하여, 상기 루트 키 및 초기화 벡터; 및 상기 제1블록 이외의 다른 블록에 대하여, 이전에 암호화된 블록 중 적어도 하나의 평문 및 상기 루트 키를 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 제1블록 이외의 다른 블록에 대한 입력 키는 또한 상기 초기화 백터를 기초로 한다
또한, 본 발명의 바람직한 실시예에 따라, 상기 제1블록 이외의 다른 블록에 대한 입력 키는 또한 이전에 암호화된 블록의 적어도 하나의 암호문을 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 제1평문 블록 이외의 다른 블록 각각의 입력 키는 또한 마지막에 암호화된 하나의 블록의 암호문을 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 제1평문 블록 이외의 다른 블록 각각의 입력 키는 또한 마지막에 암호화된 하나의 블록의 평문을 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록의 각각은 블록 인덱스를 가지고, 블록 각각의 입력 키는 또한 블록 인덱스를 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 암호 입력 키 모듈은 블록 각각의 입력 키가 또한 블록 카운터를 기초로 하도록 프로세싱되는 블록의 개수의 블록 카운터를 유지하기 위한 카운터 모듈을 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 XOR 함수를 사용하여 결정된다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 암호 해시 함수를 사용하여 결정된다.
본 발명의 다른 바람직한 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 암호문에서 평문으로 복호화하기 위한 블록 사이퍼 시스템이 제공되고, 본 시스템은 복수의 입력을 가진 함수를 기초로 하는 블록 각각에 대한 입력 키를 결정하기 위한 복호화 키 모듈; 및 블록 각각에 대하여 결정된 입력 키를 기초로 블록 각각을 각각 복호화하기 위한 복호화 모듈을 포함하고, 상기 복수의 입력은 상기 블록 중 제1블록에 대하여, 상기 루트 키, 및 초기화 백터; 및 상기 제1 블록 이외의 다른 블록에 대하여, 이전에 복호화된 블록 중 적어도 하나의 상기 평문, 및 상기 루트 키를 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 제1블록 이외의 다른 블록에 대한 입력 키는 또한 초기화 백터를 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 제1블록 이외의 다른 블록 각각에 대한 입력 키는 또한 이전에 복호화된 적어도 하나의 블록의 암호문을 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 제1평문 블록 이외의 블록 각각에 대한 입력 키는 또한 마지막에 복호화된 하나의 블록의 암호문을 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 제1평문 블록 이외의 다른 블록 각각에 대한 입력 키는 또한 마지막에 복호화된 하나의 블록의 평문을 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각은 블록 인덱스를 가지고, 블록 각각의 입력 키는 또한 블록 인덱스를 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 복호화 입력 키 모듈은 블록 각각의 입력 키가 또한 블록 카운터를 기초로 하도록 프로세싱되는 블록의 개수의 블록 카운터를 유지하기 위한 카운터 모듈을 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 XOR 함수를 사용하여 결정된다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 암호 해시 함수를 사용하여 결정된다.
본 발명의 또 다른 바람직한 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문에서 암호문으로 암호화하기 위한 블록 사이퍼 시스템이 제공되고, 본 시스템은 복수의 입력을 가진 함수를 기초로 하는 각각의 블록에 대한 입력 키를 결정하기 위한 암호 키 모듈; 및 상기 블록의 각각에 대하여 결정된 입력 키를 기초로 상기 블록 각각을 암호화하기 위한 암호화 모듈을 포함하고, 상기 복수의 입력은 제1블록에 대하여, 루트 키 및 초기화 벡터; 및 제1블록 이외의 다른 블록에 대하여, 마지막에 암호화된 블록의 상기 암호문, 마지막에 암호화된 블록의 상기 평문, 및 상기 루트 키를 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각은 블록 인덱스를 가지고, 블록 각각의 입력 키는 블록 인덱스를 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 암호화 입력 키 모듈은 블록 각각의 입력 키가 또한 블록 카운터를 기초로 하도록 프로세싱되는 블록의 개수의 블록 카운터를 유지하기 위한 카운터 모듈을 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 XOR 함수를 사용하여 결정된다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 암호 해시 함수를 사용하여 결정된다.
본 발명의 또 다른 바람직한 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 암호문에서 평문으로 복호화하기 위한 블록 사이퍼 시스템이 제공되고, 본 시스템은 복수의 입력을 가진 함수를 기초로 하는 각각의 블록에 대한 입력 키를 결정하기 위한 복호화 키 모듈; 및 상기 블록의 각각에 대하여 결정된 상기 입력 키를 기초로 상기 블록 각각을 복호화하기 위한 복호화 모듈을 포함하고, 상기 복수의 입력은 제1블록에 대하여, 루트 키 및 초기화 벡터; 및 제1블록 이외의 다른 블록에 대하여, 마지막에 복호화된 블록의 암호문, 블록 중 마지막에 복호화된 블록의 문, 및 루트 키를 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각은 블록 인덱스를 가지고, 블록 각각의 입력 키는 또한 블록 인덱스를 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 복호화 입력 키 모듈은 블록 각각의 입력 키가 또한 블록 카운터를 기초로 하도록 프로세싱되는 블록의 개수의 블록 카운터를 유지하기 위한 카운터 모듈을 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 XOR 함수를 사용하여 결정된다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 암호 해시 함수를 사용하여 결정된다.
본 발명의 또 다른 바람직한 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템이 또한 제공되고, 본 시스템은 상기 블록 각각에 대하여, 상기 블록 사이퍼의 제1쌍 사이에, 상기 평문과 상기 암호문 사이의 값인 제1중간값이 있도록, 상기 평문과 상기 암호문 사이에서 공동으로 암호화/복호화하기 위해 복수의 블록 사이퍼를 갖춘 암호화/복호화 모듈; 및 상기 블록의 제1블록에 대한, 상기 루트 키 및 초기화 벡터; 및 상기 제1블록 이외의 다른 블록에 대한, 상기 블록의 이전 값의 제1중간값, 및 상기 루트 키를 포함하는 복수의 입력을 가진 함수를 기초로 하는 블록 각각에 대하여 상기 입력 키를 결정하기 위한 암호화/복호화 키 모듈을 포함하고 있고,적어도 하나의 상기 사이퍼는 입력 키를 기초로 암호화/복호화를 실행한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 암호화/복호화 모듈은 적어도 3개의 블록 사이퍼를 포함하고, 평문과 암호문 사이에서의 암호화/복호화는 적어도 3개의 블록 사이퍼에 의해 공동으로 실행된다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 사이퍼의 제2쌍 사이에, 블록 각각에 대하여, 평문과 암호문 사이 값인 제2중간값이 존재하고, 상기 암호화/복호화 키 모듈은 제1블록 이외의 다른 블록에 대하여, 상기 입력 키를 판단하도록 동작하여, 상기 함수의 입력 중 하나는 또한 이전 하나의 블록의 상기 제2중간값을 포함하도록, 입력 키를 결정하도록 동작한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 이전의 하나의 블록은 상기 블록 중 이전에 프로세싱된 마지막 블록이다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각은 블록 인덱스를 가지고, 블록 각각의 입력 키는 또한 블록 인덱스를 기초로 한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 암호화/복호화 입력 키 모듈은 블록 각각의 입력 키가 블록 카운터를 기초로 하도록, 프로세싱된 블록의 개수의 블록 카운터를 유지하기 위한 카운터 모듈을 포함한다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록 각각의 입력 키는 XOR 함수를 사용하여 결정된다.
또한, 본 발명의 바람직한 실시예에 따라, 상기 블록의 각각의 입력 키는 암호 해시 함수를 사용하여 결정된다.
본 발명의 또 다른 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문에서 암호문으로 암호화하도록 블록 사이퍼를 오퍼레이팅하는 방법이 제공되고, 본 방법은 복수의 입력을 가진 한 함수를 기초로 블록 각각에 대한 입력 키를 결정하는 단계; 및 상기 블록 각각에 대하여 결정된 입력 키를 기초로 블록 각각을 암호화하는 단계를 포함하고, 상기 복수의 입력은 제1블록에 대하여, 루트 키, 및 초기화 백터; 및 상기 제1블록 이외의 다른 블록에 대하여, 이전에 암호화된 블록 중 적어도 하나의 평문, 및 루트 키를 포함한다.
본 발명의 또 다른 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 암호문에서 평문으로 복호화하도록 블록 사이퍼를 오퍼레이팅하는 방법이 제공되고, 본 방법은 복수의 입력을 가진 한 함수를 기초로 블록 각각에 대한 입력 키를 결정하는 단계; 및 상기 블록 각각에 대하여 결정된 입력 키를 기초로 블록 각각을 암호화하는 단계를 포함하고, 상기 복수의 입력은 제1블록에 대하여, 루트 키, 및 초기화 백터; 및 상기 제1블록 이외의 다른 블록에 대하여, 이전에 복호화된 블록 중 적어도 하나의 평문, 및 루트 키를 포함한다.
본 발명의 또 다른 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문에서 암호문으로 암호화하도록 블록 사이퍼를 오퍼레이팅하는 방법이 제공되고, 본 방법은 복수의 입력을 가진 함수를 기초로 블록의 각각에 대한 입력 키를 결정하는 단계; 및 상기 블록 각각에 대하여 결정된 입력 키를 기초로 블록 각각을 암호화하는 단계를 포함하고, 상기 복수의 입력은 제1블록에 대하여, 루트 키, 및 초기화 백터; 및 상기 제1블록 이외의 다른 블록에 대하여, 마지막에 암호화된 블록의 평문, 및 루트 키를 포함한다.
본 발명의 바람직한 실시예에 따라, 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 암호문에서 평문으로 복호화하도록 블록 사이퍼를 오퍼레이팅하는 방법이 제공되고, 본 방법은 복수의 입력을 가진 한 함수를 기초로 블록 각각에 대한 입력 키를 결정하는 단계; 및 상기 블록 각각에 대하여 결정된 입력 키를 기초로 블록 각각을 암호화하는 단계를 포함하고, 상기 복수의 입력은 제1블록에 대하여, 루트 키, 및 초기화 백터; 및 상기 제1블록 이외의 다른 블록에 대하여, 마지막에 복호화된 블록의 평문, 및 루트 키를 포함한다.
본 발명의 바람직한 실시예에 따라, 복수의 블록을 가진 패킷이 적어도 하나의 일정한 루트 키를 가지고, 복수의 블록을 암호문과 평문 사이에서 암호화/복호화하도록 블록 사이퍼를 오퍼레이팅하는 방법이 제공되고, 본 방법은 복수의 입력을 가진 함수를 기초로 블록 각각에 대한 입력 키를 결정하는 단계; 및 상기 입력 키를 기초로 블록 사이퍼 중 하나에 대한 암호화/복호화를 수행하는 단계를 포함하고, 상기 복수의 입력은 제1블록에 대하여, 루트 키, 및 초기화 백터; 및 상기 제1블록 이외의 다른 블록에 대하여, 상기 블록의 이전의 블록의 제1중간값, 및 루트 키를 포함한다.
본 발명은 개선된 블록 사이퍼 시스템 및 블록 사이퍼의 오퍼레이션 모드를 제공할 수 있다.
본 발명은 다음 도면과 결합하여 아래의 상세한 설명으로부터 더 잘 이해될 것이다.
도 1은 본 발명의 한 바람직한 실시예에 따라 구성되고 동작하는 블록 사이퍼 시스템의 바람직한 일반 오퍼레이션 모드의 암호화 프로세스 플로우 다이어그램이고,
도 2는 도 1의 블록 사이퍼 시스템의 가장 바람직한 오퍼레이션 모드의 암호화 프로세스 플로우 다이어그램이고,
도 3은 도 1의 블록 사이퍼 시스템의 모듈의 블록 다이어그램이고,
도 4는 도 1의 블록 사이퍼 시스템의 바람직한 오퍼레이션 모드의 플로우 차트이고,
도 5는 본 발명의 대안의 바람직한 실시예에 따라 구성되고 동작하는 블록 사이퍼 시스템의 암호화 프로세스 플로우 다이어그램이고,
도 6은 본 발명의 다른 대안의 바람직한 실시예에 따라 구성되고 동작하는 블록 사이퍼 시스템의 암호화 프로세스 플로우 다이어그램이고,
도 7은 도 5 또는 6의 블록 사이퍼 시스템의 모듈의 블록 다이어그램이고,
도 8은 본 발명의 바람직한 실시예와 함께 사용하기 위한 강화된 페이스텔 형 구조의 도면이고,
도 9는 도 8의 강화된 페이스텔-형 구조에 포함된 'Combine Key RightPart' 함수의 도면이고,
도 10은 도 9의 'Combine Key RightPart' 함수에 포함된 'RightPart Expansion' 함수에 대한 바람직한 하드웨어 구현의 도면이고,
도 11은 도 9의 'Combine Key RightPart' 함수에 포함된 'Mix and Condense' 함수를 위한 빌딩 블록으로서 역할하는 미니-함수의 바람직한 실시예의 도면이고,
도 12는 도 8의 강화된 페이스텔-형 구조에 포함된 'Combine RightPart Combine LeftPart' 함수의 도면이고,
도 13은 도 12의 'Combine RightPart Combine LeftPart' 함수 내의 선형 레이어의 한 바람직한 구현 방법의 도면이고,
도 14는 도 12의 'Combine RightPart Combine LeftPart' 함수 내의 S-박스 레이어의 한 바람직한 구현 방법의 도면이고,
도 15는 도 8의 강화된 페이스텔-형 구조에 포함된 'key expansion' 함수의 한 바람직한 구현 방법의 도면이고,
도 16은 도 15의 'key expansion' 함수 내의 'Mix and Condense' 함수를 사용하는 라운드 키 생성의 한 바람직한 구현 방법의 도면이고,
도 17-20은 바람직한 실시예에 따른, 도 8의 강화된 페이스텔-형 구조의 오퍼레이션의 바람직한 대안의 방법의 간단한 플로우차트 도면이고,
도 21은 본 발명의 바람직한 실시예와 함께 사용하기 위한 로버스트 사이퍼 설계를 위한 시스템의 간단한 블록 다이어그램 도면이고,
도 22는 도 21의 방법에 따라 설계된 사이퍼 내의 키 확장 및 암호화 라운드 사이의 관계의 한 바람직한 구현 방법을 도시하는 시간 라인이고,
도 23은 도 21의 방법의 바람직한 구현 방법의 MUX 및 DEMUX 모듈의 사용을 도시하는 간단한 블록 다이어그램 도면이고,
도 24는 도 21의 방법에 따라 설계된 사이퍼 내의 라운드 키를 생성하도록 동작하는 라운드 키 생성 함수의 한 바람직한 구현 방법의 간단한 블록 다이어그램 도면이고,
도 25는 도 21의 시스템에 따라 구성되고 동작하는 4 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 26은 도 21의 시스템에 따라 구성되고 동작하는 4 라운드의 전형적인 ASE-형 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 27은 도 21의 시스템의 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 28은 도 21의 시스템의 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 AES-형 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 29는 도 21의 시스템의 또 다른 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 30 도 21의 시스템의 또 다른 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 ASE-형 사이퍼의 간단한 블록 다이어그램 도면이고,
도 31은 본 발명의 바람직한 실시예와 함께 사용하기 위한 강화된 페이스텔형 구조의 도면이고,
도 32는 도 31의 강화된 페이스텔형 구조의 대안의 바람직한 실시예의 도면이고,
도 33은 도 31의 시스템의 'MixKey' 함수의 바람직한 구현 방법의 간단한 블록 다이어그램이고, 그리고
도 34는 도 31의 시스템의 'CombParts' 함수의 간단한 블록 다이어그램이다.
아래 부록은 본 발명의 임의의 바람직한 실시예를 이해하는데 도움을 줄 것이다:
메인 부록은 페이스텔형 사이퍼 시스템의 설명이고;
부록 A는 로버스트 사이퍼 설계 방법, 키 확장 및 셋업의 바람직한 방법, 및 라운드 키 암호화 함수의 바람직한 구현 방법의 설명이고, 부록 A의 방법은 도 8의 페이스텔-형 구조의 바람직한 구현 방법을 포함하고;
부록 B는 서펀트 사이퍼(Serpent Cipher) 명세의 부록 A.5의 사본이고, 서펀트 사이퍼의 S-박스, S0 내지 S7을 서술하고;
부록 C는 본 발명의 바람직한 실시예와 함께 사용하기 위한 특정의 대안의 바람직한 실시예의 설명을 포함한다.
지금부터 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 블록 사이퍼 시스템(10)의 바람직한 일반적인 동작 모드의 암호화 프로세스 플로우 다이어그램인, 도 1을 참조한다. 블록 사이퍼 시스템(10)은 한 패킷 내에 복수의 블록의 암호화 및 복호화를 위한 블록 사이퍼의 오퍼레이션 모드를 포함한다. 오퍼레이션 모드는 복호화 프로세스가 키 셋업 오퍼레이션을 여러번, 바람직하게는, 복호화되어야 하는 모든 블록마다 한번씩 실행하게 한다.
단일 패킷 내의 블록들은 상이한 키를 사용하여 암호화(및 복호화)되는 것이 바람직하기 때문에, 상이한 키 간에 구별하기 위해 필요한 기간이 상이하다.
루트 키(12)는 사이퍼 시스템으로 입력되는 외부 키이다. 각각의 패킷은 하나의 일정한 루트 키(12)와 연관되는 것이 바람직하다. 방송 시스템에서, 동일한 루트 키(12)는 각각의 루트 키(12)가 하나 이상의 패킷에서 사용되도록, 일정한 키 기간 동안 유효한 것이 전형적이다. 본 발명의 대안의 바람직한 실시예에 따라, 하나 이상의 루트 키(12)가 각각의 패킷을 위한 암호화/복호화 프로세스에 사용될 수 있다. 본 발명의 다른 대안의 바람직한 실시예에 따라, 모든 패킷은 동일한 루트 키와 연관된다.
입력 키(16, Kj)는 각각, 암호화 함수(18) 또는 복호화 함수(20)를 사용하여 패킷의 평문 블록(30, Pj)을 암호화하거나, 암호문 블록(32, Cj)을 복호화하기 위해 사용되는 실제 키이다.
입력 키(16, Kj)는 평문 블록(30), 및 암호문 블록(32)을 위한 함수 H(블록 22)를 사용하여 결정되는 것이 바람직하다. 함수 H(블록 22)의 입력은 전형적으로 다음 중 하나 이상을 포함한다: 현재의 블록, j 전에 프로세싱(암호화 또는 복호화)된 패킷의 하나 이상의 평문 블록(24, P1 내지 Pj-1); 초기화 백터(IV, 28); 루트 키(12); 및 블록 인덱스(14). 함수 H(블록 22)는 상기 언급된 입력의 모두 또는 일부를 선택하거나 무시하도록 동작한다. 예를 들어, 함수 H(블록 22)가 루트 키(12)를 제외한 모든 입력을 무시한다면, 함수 H(블록 22)의 출력은 루트 키(12)이고, 입력 키(16)는 루트 키(12)와 같으므로, 블록 사이퍼 시스템(10)은 공지된 ECB 모드로 동작한다.
그러나, 본 발명의 바람직한 실시예에 따라, 한 패킷의 제1블록의 입력 키(16)는 루트 키(12), 및 초기화 백터(28)를 기초로 하는 것이 바람직하다. 패킷의 순차적인 블록의 입력 키(16)는 루트 키(12), 및 현재의 블록, j 전에 프로세싱된(암호화 및 복호화된) 패킷의 하나 이상의 평문 블록(24, P1 내지 Pj-1); 바람직하게는 현재의 블록, j 전에 프로세싱된 패킷의 하나 이상의 암호문 블록(26, C1 내지 Cj-1); 및 바람직하게는 블록 인덱스(14)를 기초로 하는 것이 전형적이다.
블록 인덱스(14)는 함수 H(블록 22)가 프로세싱되는 블록의 인덱스에 따라 상이한 행동을 나타내게 한다. 대안으로서, 함수 H(블록 22)패킷 내에서 프로세싱되는 블록의 개수를 카운팅함으로써 내부적으로 블록 카운터를 유지한다. 블록 카운터는 패킷 내의 블록이 순서대로 프로세싱된다면, 블록 인덱스(14)와 동일할 것임이 이해될 것이다.
함수 H(블록 22)는 전형적으로 비트-비트 XOR과 같은 간단한 오퍼레이션, 또는 암호 해시 함수, 제한하지 않는 예로서, SHA-1와 같은 더 복잡한 오퍼레이션을 사용하여 단일 입력 키(16)로 입력을 결합한다.
시스템은 패킷 내의 블록이 프로세싱되는 순서와 무관하게 구현될 수 있음이 이해될 것이다. 예를 들어, 블록은 그들이 통신 매체를 통해 도달한 순서, 또는 역순으로 프로세싱될 수 있다.
지금부터, 도 1의 블록 사이퍼 시스템(10)의 가장 바람직한 오퍼레이션 모드의 암호화 프로세스 플로우 다이어그램인, 도 2를 참조한다. 블록 사이퍼 시스템(10)의 가장 바람직한 오퍼레이션 모드에 따라, 암호화 함수(18) 및 복호화 함수(20)를 사용하여, (패킷 내의 제1블록, P1을 제외한) 각각의 블록을 암호화/복호화하기 위한 입력 키(16)는 각각 루트 키(12), 블록 인덱스(14), 마지막에 프로세싱된(암호화/복호화된) 평문 블록, 및 마지막에 프로세싱된(암호화/복호화된) 암호문 블록를 기초로 함수 H(블록 22)에 의해 결정된다. 예를 들어, 평문 블록(34, P2)을 암호화하기 위한 입력 키(16, K2)는 루트 키(12), 블록 인덱스(14), 마지막에 프로세싱된 평문 블록(36, P1), 및 마지막에 프로세싱된 암호문 블록(38, C1)을 기초로 한다.
패킷 내의 제1블록을 위한 입력 키(16)는 루트 키(12), 초기화 백터(28), 및 옵션으로 블록 인덱스(14)를 기초로 한다.
가장 바람직한 실시예에서, 패킷을 암호화/복호화하는 동안 메모리 내에 저장될 필요가 있는 중간 결과가 마지막 평문 블록, 및 바람직하게는 프로세싱되는 마지막 암호문 블록이기 때문에, 병렬화는 최소 키 셋업 코스트와 함께 금지된다.
지금부터, 도 3 및 도 4를 참조한다. 도 3은 도 1의 블록 사이퍼 시스템(10)의 모듈의 블록 다이어그램이다. 도 4는 도 1의 블록 사이퍼 시스템(10)의 바람직한 오퍼레이션 모드의 플로우 차트이다. 또한, 도 1을 참조한다. 블록 사이퍼 시스템(10)은 암호화/복호화 키 모듈(40), 및 암호화/복호화 모듈(42)을 포함한다.
암호화/복호화 키 모듈(40)은 루트 키(12) 및 초기화 백터(28), 옵션으로 블록 인덱스(14)(또는 블록 카운더)를 기초로 제1블록, P1에 대한 입력 키(16)를 결정하도록 동작한다(블록 46).
암호화/복호화 키 모듈(40)은 루트 키(12); 이전에 암호화/복호화된 하나 이상의 평문 블록(24) 및 가장 바람직하게는 암호화/복호화된 가장 마지막 평문 블록(24)만; 옵션으로 블록 인덱스(14) 또는 블록 카운더; 및 바람직하게는 이전에 암호화/복호화된 하나 이상의 암호문 블록(26) 및 가장 바람직하게는 암호화/복호화된 가장 마지막 암호문 블록(26)만 기초로 하여, 제1블록, P1 외의 다른 블록에 대한 입력 키(16)를 결정하도록 동작한다(블록 46).
블록 인덱스(14) 또는 블록 카운터는 또한 암호화/복호화 키 모듈(40)이 상술된 바와 같이, 제1블록에 대한 입력이 후속 블록의 입력과 상이할 때, 입력 키(16)를 결정하는 사용하기 위한 입력을 알 수 있게 한다.
암호화/복호화 키 모듈(40)에 의한 입력 키(16)의 결정은 XOR 함수, 및/또는 암호 해시 함수, 제한하지 않는 예로서, SHA-1을 사용하여 수행되는 것이 바람직하다.
암호화/복호화 모듈(42)은 현재 암호화/복호화되고 있는 블록의 입력 키(16)를 기초로 각각의 블록을 암호화/복호화하도록 동작한다(블록 48). 즉, 암호화/복호화 모듈(42)은 각각 각각의 블록에 대하여 결정된 입력 키(16)를 기초로 각각의 블록을 암호화/복호화하도록 동작한다.
암호화/복호화 키 모듈(40)은 프로세싱된 블록의 개수의 블록 카운터를 유지하도록 동작하는 카운터 모듈(44)을 포함하는 것이 바람직하다. 카운터 모듈(44)은 각각의 블록이 프로세싱된 후 블록 카운터를 증가시킨다(블록 50).
블록(46-50)의 프로세스는 그 패킷 내의 각각의 데이터 블록에 대하여 반복되는 것이 바람직하다(블록 52).
카운터 모듈(44)은 그 패킷 내의 모든 데이터 블록이 프로세싱된 후 블록 카운터를 리셋하고, 다음 패킷을 대기하는 것이 바람직하다(블록 54).
블록(46-52)의 프로세스는 데이터 스트림 내의 모든 패킷에 대하여 반복되는 것이 바람직하다.
본 발명의 컴포넌트는 종래의 기술을 사용하여, 하드웨어로 구현되는 것이 바람직하다.
본 발명의 시스템 및 방법은 임의의 시나리오에서, 예컨대 방송 환경에서, 소프트웨어 구현을 금지하도록 특별히 설계되었으나, 소프트웨어 기술을 사용하여 본 발명의 방법을 구현하는 것도 가능하다.
지금부터, 본 발명의 대안의 바람직한 실시예에 따라 구성되고 동작하는 블록 사이퍼 시스템(56)의 암호화 프로세스 플로우 다이어그램인 도 5를 참조한다. 블록 사이퍼 시스템(56)은 3개의 블록 사이퍼: 사이퍼(58), 사이퍼(60), 및 사이퍼(62)를 가진 암호화 블록 사이퍼 배열을 포함하는 것이 전형적이다.
사이퍼(58, 60, 62)는 패킷의 평문 블록(64)이 암호화된 출력(66)을 산출하는 사이퍼(58)에 의해 암호화되도록; 암호화된 출력(66)은 암호화된 출력(68)을 산출하는 사이퍼(60)에 의해 암호화되도록; 그리고, 암호화된 출력(68)은 암호문 블록(70)을 산출하는 사이퍼(62)에 의해 암호화되도록 구성되는 것이 바람직하다. 그러므로, 평문에서 암호문으로의 암호화 블록 사이퍼 배열에 의한 프로세싱은 각각의 블록 사이퍼(58, 60, 62) 사이에 평문과 암호문 사이의 값인 중간값이 존재하도록 수행된다.
패킷 내의 제1평문 블록(64)에 대하여, 사이퍼(60)의 암호 키, k1는 다음 입력: 초기값(72), 및 루트 키(74), 및 옵션으로 블록 인덱스(76)와 함께 함수 H에 의해 결정되는 것이 전형적이다.
함수 H는 비트-비트 XOR과 같은 간단한 오퍼레이션, 또는 암호 해시 함수, 제한하지 않는 예로서, SHA-1과 같은 하나 이상의 오퍼레이션을 사용하여 입력을 단일 입력 키로 결합하는 것이 전형적이다.
후속 블록, 제한하지 않는 예로서, 제2평문 블록(78), 사이퍼(60)의 암호화 키, k2는 다음 입력: 루트 키(74); 옵션으로 블록 인덱스; 및 이전 블록의 평문과 암호문 사이의 적어도 하나의 중간값, 예를 들어: 이전 블록, 바람직하게는 예컨대 평문 블록(64)과 연관된 이전의 마지막에 프로세싱된 블록에 대한 사이퍼(58)의 암호화된 출력; 및 바람직하게는 이전 블록, 바람직하게는, 예컨대, 평문 블록(64)과 연관된, 이전의 마지막에 프로세싱된 블록에 대한 사이퍼(60)의 암호화된 출력과 함께 함수 H에 의해 결정되는 것이 일반적이다.
평문 블록(78)에 대한 사이퍼(60)의 출력은 암호문 블록(80)을 산출하는 사이퍼(62)에 의해 암호화된다.
사이퍼(58, 60, 62)는 동일한 사이퍼(제한하지 않는 예로서, 트리플-DES)일 수 있고, 또한 임의의 적합한 사이퍼, 제한하지 않는 예로서, AES, DES, 트리플-DES, IDEA, CAST, 블로우피시(Blowfish), 스킵잭(Skipjack), 및 페이스텔-형 사이퍼에서 선택된 상이한 사이퍼일 수 있다.
암호문 블록(70, 80)의 복호화는 사이퍼 (62, 60, 58)에 각각 대응하는 3개의 적합한 복호화 블록 사이퍼, 사이퍼(82), 사이퍼(84), 및 사이퍼(86)를 사용하여 수행되는 것이 전형적이다.
암호문 블록(70)은 사이퍼(82)에 의해 복호화되는 것이 바람직하다. 사이퍼(82)의 출력은 사이퍼(84)에 의해 복호화되는 것이 바람직하다. 사이퍼(84)의 출력은 평분 블록(64)을 산출하는 사이퍼(86)에 의해 복호화되는 것이 바람직하다.
암호문 블록(70)에 대하여, 사이퍼(84)의 복호화 키, k1는 다음 입력: 초기값(72), 및 루트 키(74), 및 옵션으로 블록 인덱스와 함께 함수 H에 의해 결정되는 것이 바람직하다.
후속 블록, 제한하지 않는 예로서, 암호문 블록(80), 사이퍼(84)의 복화화 키, k2는 다음 입력: 루트 키(74); 옵션으로 블록 인덱스(76); 및 이전 블록의 평문과 암호문 사이의 적어도 하나의 중간값, 예를 들어: 이전 블록, 바람직하게는 예컨대 암호문 블록(70)과 연관된 이전의 마지막에 프로세싱된 블록에 대한 사이퍼(82)의 복호화된 출력; 및 바람직하게는 이전 블록, 바람직하게는, 예컨대, 암호문 블록(70)과 연관된, 이전의 마지막에 프로세싱된 블록에 대한 사이퍼(84)의 복호화된 출력과 함께 함수 H에 의해 결정되는 것이 일반적이다.
암호문 블록(80)에 대한 사이퍼(60)의 출력은 평문 블록(78)을 산출하는 사이퍼(86)에 의해 복호화되는 것이 바람직하다.
평문과 암호문이 공격자에 의해 컨트롤될 수 있을 때, 블록 사이퍼 시스템(56)은 미래의 블록에 대한 함수 H에 대한 입력으로 평문과 암호문 사이의 중간값을 사용함으로써, 관련 키가 블록 사이퍼 시스템(56)을 공격을 차단하는 것을 돕는다.
블록 사이퍼 배열은 이전 블록의 중간값이 블록 사이퍼 중 하나에 대하여 현재의 블록의 키를 결정하기 위한 입력으로서 사용되는 조건하에서, 3개 이상의 블록 사이퍼를 포함할 수 있음이 당업자들은 이해될 것이다.
지금부터, 본 발명의 다른 대안의 바람직한 실시예에 따라 구성되고 동작하는 블록 사이퍼 시스템(88)의 암호화 프로세스 플로우 다이어그램인, 도 6을 참조한다. 블록 사이퍼 시스템(88)은 블록 사이퍼 시스템(88)이 바람직하게는 두 개의 사이퍼: 사이퍼(90), 및 사이퍼(92)를 포함한 암호화 사이퍼 배열을 가진 점을 제외하고, 블록 사이퍼 시스템(56)과 실질적으로 동일하다. 블록 사이퍼 시스템(88)은 두 개의 사이퍼: 사이퍼(94), 및 사이퍼(96)를 포함하는 복호화 사이퍼 배열을 가진다.
패킷의 평문 블록(98) 또는 암호문 블록(100)에 대하여, 사이퍼(92, 94)의 암호화/복호화 키, k1는 다음 입력, 초기값(102), 및 루트 키(104), 및 옵션으로 블록 인덱스(106)와 함께 함수 H에 의해 결정되는 것이 바람직하다.
후속 블록, 제한하지 않는 예로서, 제1평문 블록(108), 또는 제2암호문 블록(110)에 대하여, 사이퍼(92, 94)의 암호화/복호화 키, k2는 다음 입력: 루트 키(104); 옵션으로 블록 인덱스(106); 및 이전 블록의 암호문과 평문 사이의 중간값: 예컨대, 이전 블록, 바람직하게는 이전의 마지막 프로세싱된 블록에 적합한 사이퍼(90), 또는 사이퍼(94)의 출력을 기초로 하여 함수 H에 의해 결정되는 것이 바람직하다.
본 발명은, 바람직한 실시예에서, 키 셋업에 관하여 계산적으로 직중된 사이퍼, 제한하지 않는 예로서, 'Fast Software Encrytion'이란 제목의 컨퍼런스에서 'B.Schneier'에 의해 발표된, "New Variable-Length Key, 64-Bit Block Cipher(Blowfish), 'Cambridge Security Workshop Proceedings'(1993년 12월), 'Springer-Verlag, 1994, pp. 191-204'에 서술된 블로우피시를 사용하여 가장 적합하게 구현됨이 이해될 것이다.
지금부터, 도 5의 블록 사이퍼 시스템(56) 또는 도 6의 블록 사이퍼 시스템(88)의 모듈의 블록 다이어그램인, 도 7을 참조한다. 도 5의 블록 사이퍼 시스템(56) 및 도 6의 블록 사이퍼 시스템(88)의 기능부는 암호화/복호화 키 모듈(112), 및 암호화/복호화 모듈(114)과 함께 구현되는 것이 바람직하다.
암호화/복호화 모듈(114)은 복수의 블록 사이퍼(예컨대, 도 5의 3개의 사이퍼, 도 6의 2개의 사이퍼)를 포함하는 것이 바람직하다. 암호화/복호화 모듈(114)은 암호화/복호화를 위해 2, 3, 또는 그 이상의 사이퍼를 포함할 수 있음을 당업자들은 이해될 것이다.
암호화/복호화 모듈(114)의 사이퍼는 복수의 블록 각각에 대하여, 블록 사이퍼의 제1쌍 사이에(예컨대, 도 5의 사이퍼(58, 60) 사이, 또는 도 6의 사이퍼(90, 92) 사이), 평문과 암호문 사이의 값인 중간값이 존재하도록, 평문과 암호문 사이에서 공동으로 암호화/복호화하도록 동작하는 것이 바람직하다. 명세서 및 청구항에서 사용된 바와 같은, 용어 "평문과 암호문 사이의 암호화/복호화"는 평문에서 암호문으로 암호화하는 것, 그리고/또는 암호문에서 평문으로 복호화하는 것으로 정의된다. 명세서 및 청구항에 사용된 바와 같은, 용어 "암호화/복호화"는, 그것의 모든 문법적 형태에서, 암호화, 및/또는 복호화로서 정의된다.
적어도 하나의 사이퍼(예컨대, 도 5의 사이퍼(60), 또는 도 6의 사이퍼(92))는 입력 키를 기초로 암호화/복호화를 수행하는 것이 바람직하다.
암호화/복호화 키 모듈(112)은 전형적으로 제1블록을 위한 루트 키, 및 초기 백터; 및 제1블록 외의 블록에 대한 이전 블록(바람직하게는, 이전의 마지막에 프로세싱된 블록)의 제1중간값, 및 루트 키를 포함하는 복수의 입력을 가진 함수를 기초로 각각의 블록에 대한 입력 키를 결정하도록 동작하는 것이 일반적이다.
암호화/복호화 키 모듈(112)은 프로세싱된 블록의 개수의 블록 카운터를 유지하기 위한 카운터 모듈(116)을 포함하는 것이 바람직하다.
입력 키는 또한 옵션으로 프로세싱되는 블록의 블록-인덱스/블록 카운터를 기초로 할 수 있다.
암호화/복호화 모듈(114)이 전형적으로 암호화/복호화를 위해 3개 이상의 사이퍼를 포함할 때, 평문과 암호문 사이의 암호화/복호화는 3개 이상의 블록 사이퍼에 의해 공동으로 수행되는 것이 바람직하다. 각각의 블록에 대하여, (사이퍼의 제1쌍의 사이퍼 중 하나를 포함할 수 있는) 블록 사이퍼의 제2쌍 사이에, 평문과 암호문 사이의 값인 제2중간값이 존재하는 것이 일반적이다. 암호화/복호화 모듈(114)은 입력 키를 결정하기 위한 함수의 입력이 또한 이전 블록(바람직하게는 이전의 마지막 프로세싱된 블록)의 제2중간값을 포함하도록, 제1블록 외의 다른 블록에 대하여, 입력 키를 결정하도록 동작하는 것이 바람직하다. 컨텐츠 스트림된 패킷을 프로세싱하는 것은 예시의 방법으로 사용된 것이고, 본 발명의 임의의 적합한 실시예는 적합한 데이터의 블록을 암호화/복호화하기 위해, 제한하지 않는 예로서, 디크스 상의 섹터를 암호화/복호화하기 위해 사용될 수 있음이 당업자들은 이해될 것이다.
명료함을 위해, 개별 실시예의 설명에 서술된 본 발명의 다양한 피처는 또한 단일 실시예에서 결합하여 제공될 수도 있음이 이해될 것이다. 그 반대로, 본 발명의 다양한 피처는, 간략함을 위해, 단일 실시예의 설명에 서술되어 있는 본 발명의 다양한 피처는 개별적으로, 또는 임의의 적합한 하위-결합하여 제공될 수 있다. 또한, 본 발명은 본 명세서에 서술되고 도시된 내용에 의해 제한되지 않음을 당업자들은 이해될 것이다. 본 발명의 범위는 첨부된 청구항에 의해서만 한정된다.
메인 부록
페이스텔 형 사이퍼
(배경기술)
많은 암호화 방법이 공지되어 있다. 공지된 방법 중에서, 많은 방법이 평문의 블록이 소정의 룰에 따라 반복적으로 변경되는 블록 방법이고; 각각의 이러한 반복은 또한 "라운드"로 알려져 있다.
많은 블록 암호화 방법은 페이스텔 네트워크의 특별한 경우로 볼 수 있는데, 본 명세서에서, "페이스텔 사이퍼 방법", 또는 "페이스텔-형 사이퍼 방법"이라 하고; 페이스텔 사이퍼 방법의 단일 라운드는 본 명세서에서 "페이스텔 사이퍼 라운드"라 한다.
페이스텔 사이퍼는 'Handbook of Applied Cryptography'(A. Menezes, P. Van Oorschot, and S. Vanstone, CRC Press, 1996)에 서술되어 있다. 'Handbook of Applied Cryptography'(HAC)는 인터넷 (www.cacr.math.uwaterloo.ca/hac)에서 사용가능하다.
페이스텔 사이퍼는 r-라운드 프로세스를 통해 t-비트 블록 L0, 및 R0에 대하여, (두 파트, L0 및 R0를 포함하는) 평문을 암호문(Rr 및 Lr)으로 매핑하는 반복적인 블록 사이퍼이다, 이때 r≥1이다. 1≤i≤r에 대하여, 라운드 I는 키, Ki를 사용하여, (Li-1, Ri-1)를 (Li, Ri)로 매핑한다: Li=Ri-1, Ri=Li-1
Figure pat00001
f(Ri-1, Ki), 여기서, 각각의 서브키, Ki는 사이퍼 키, K(HAC)로부터 유도된다.
당업자들은 상기 정의가 동일한 크기의 블록, L0 및 R0에 대한 것이지만, 크기의 동일함이 필수요건이 아님이 이해할 것이다.
페이스텔 사이퍼의 복호화는 동일한 r-라운드 프로세스를 사용하지만, 서브키는 역순, Kr에서 K1으로 사용되어 달성된다.
페이스텔 네트워크의 경우인 블록 사이퍼 타입은 다음의 공지된 방법: DES, 루시퍼(Lucifer), FEAL, 쿠푸(Khufu), 카프레(Khafre), LOKI, GOST, CAST, 및 블로우피시를 포함한다.
페이스텔 사이퍼는 또한 'Applied Cryptography, Second Edition(B. Schneier, John Wiley and Sons, Inc., 1996)'의 페이지 347-351에 서술되어 있다.
DES는 FIPS 46-3에 서술되어 있고, 인터넷: 'csrc.nist.gov/publications/ fips./fips46-3/fips46-3.pdf'에서 사용가능하다.
'FOX: A New Family of Block Ciphers, (Pascal Junod and Serge Vaudenay, Selected Areas in Cryptography 2004: Waterloo, Canada, August 9-10, 2004. Revised papers, Lecture Notes in Computer Science. Springer-Verlag)'는 FOX란 이름의, 'Lai-Massey' 스킴을 기초로 하는 새로운 종류의 블록 사이퍼의 설계를 서술한다. 이 설계의 메인 피처는, 매우 높은 보안 레벨과 더불어, 다양한 플랫폼에서의 큰 구현 유연성, 및 높은 성능이다. 또한, 강력하고 효율적인 키-스케줄 알고리즘의 새로운 설계가 제안되었다. FOX는 선형 및 미분형 암호분석에 대하여 안전한 증거가 제공된다.
'How to Construct Pseudorandom Permutations From Pseudorandom Function(M.Luby and C. RAckoff., SIAM Journal on Computing, 17:2, pp.373-386, April 1988)'은 의사난수 함수 생성기로부터 의사난수 비가역 전이 생성기를 효율적으로 구성하는 방법을 서술한다. 'Luby-Rackoff'에 서술된 실험 결과는 임의의 의사난수 비트 생성기가 암호시스템에 대한 강력한 공격 중 하나인, 선택된 평문 어택으로부터 보호하는 블록 개인 키 암호시스템을 구성하기 위해 사용될 수 있다는 것이다.
'www.ftp.co.cam.ac.uk/ftp/users/rja14/serpent/pdf'에 평시된, 서펀트 사이퍼(Serpent Cipher)는 고급 암호 표준(AES) 후보이다. 서펀트 사이퍼 설계의 설계는 매우 보수적이지만, 여전히 매우 효율적인 구현을 허용한다. 서펀트 사이퍼는 동시에, 더욱 신속한 애벌란체(avalanche), 및 더욱 효율적인 비트 단편(bitslice) 구현을 가능하게 하는 새로운 구조의 DES와 유사한 S-박스를 사용한다.
(발명의 상세한 설명)
본 부록에 서술된 방법은 향상된 암호화 방법, 특히 페이스텔 암호화 방법에 관한 향상된 암호화 방법을 제공하기 위한 것이다. 본 부록에 서술된, 페이스텔-형 사이퍼는 하드웨어로 쉽게 구현되고, 소프트웨어로 구현하기 어렵도록 설계되는 것이 바람직하다.
(도면의 간단한 설명)
본 부록은 다음 도면을 참조하여 아래의 실시예로부터 더욱 완전히 이해하게 될 것이다.
도 8은 본 발명의 바람직한 실시예와 함께 사용하기 위한 강화된 페이스텔 형 구조의 도면이고,
도 9는 도 8의 강화된 페이스텔형 구조에 포함된 'Combine Key RightPart' 함수의 도면이고,
도 10은 도 9의 'Combine Key RightPart' 함수에 포함된 'RightPart Expansion' 함수에 대한 바람직한 하드웨어 구현의 도면이고,
도 11은 도 9의 'Combine Key RightPart' 함수에 포함된 'Mix and Condense' 함수를 위한 빌딩 블록으로서 역할하는 미니-함수의 바람직한 실시예의 도면이고,
도 12는 도 8의 강화된 페이스텔형 구조에 포함된 'Combine RightPart Combine LeftPart' 함수의 도면이고,
도 13은 도 12의 'Combine RightPart Combine LeftPart' 함수 내의 선형 레이어의 한 바람직한 구현 방법의 도면이고,
도 14는 도 12의 'Combine RightPart Combine LeftPart' 함수 내의 S-박스 레이어의 한 바람직한 구현 방법의 도면이고,
도 15는 도 8의 강화된 페이스텔형 구조에 포함된 'key expansion' 함수의 한 바람직한 구현 방법의 도면이고,
도 16은 도 15의 'key expansion' 함수 내의 'Mix and Condense' 함수를 사용하는 라운드 키 제너레이션의 한 바람직한 구현 방법의 도면이고,
도 17-20은 바람직한 실시예에 따른, 도 8의 강화된 페이스텔형 구조의 오퍼레이션의 바람직한 대안의 방법의 간단한 플로우차트 도면이고,
도 21은 본 발명의 바람직한 실시예와 함께 사용하기 위한 로버스트 사이퍼 설계를 위한 시스템의 간단한 블록 다이어그램 도면이고,
도 22는 도 21의 방법에 따라 설계된 사이퍼 내의 키 확장 및 암호화 라운드 사이의 관계의 한 바람직한 구현 방법을 도시하는 시간 라인이고,
도 23은 도 21의 방법의 바람직한 구현 방법의 MUX 및 DEMUX 모듈의 사용을 도시하는 간단한 블록 다이어그램 도면이고,
*도 24는 도 21의 방법에 따라 설계된 사이퍼 내의 라운드 키를 생성하도록 동작하는 라운드 키 제너레이션 함수의 한 바람직한 구현 방법의 간단한 블록 다이어그램 도면이고,
도 25는 도 21의 시스템에 따라 구성되고 동작하는 4 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 26은 도 21의 시스템에 따라 구성되고 동작하는 4 라운드의 전형적인 ASE-형 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 27은 도 21의 시스템의 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 28은 도 21의 시스템의 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 AES-형 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 29는 도 21의 시스템의 또 다른 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 30 도 21의 시스템의 또 다른 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 ASE-형 사이퍼의 간단한 블록 다이어그램 도면이고,
도 31은 본 발명의 바람직한 실시예와 함께 사용하기 위한 강화된 페이스텔형 구조의 도면이고,
도 32는 도 31의 강화된 페이스텔형 구조의 대안의 바람직한 실시예의 도면이고,
도 33은 도 31의 시스템의 'MixKey' 함수의 바람직한 구현 방법의 간단한 블록 다이어그램이고, 그리고
도 34는 도 31의 시스템의 'CombParts' 함수의 간단한 블록 다이어그램이다.
아래 부록은 본 부록의 특정의 바람직한 실시예를 이해하는데 도움을 줄 것이다:
부록 A는 키 확장 및 셋업의 바람직한 방법, 및 라운드 키 암호화 함수의 바람직한 구현 방법을 포함한, 로버스트 사이퍼 설계 방법의 설명이고, 부록 A의 방법은 도 8의 페이스텔-형 구조의 바람직한 구현 방법을 포함하고;
부록 B는 서펀트 사이퍼 명세의 부록 A.5의 카피이고, 서펀트 사이퍼의 S-박스, S0 내지 S7을 서술하고; 그리고
부록 C는 본 발명과 함께 사용하기 위한 특정의 대안의 바람직한 실시예의 설명을 포함한다.
(실시예)
지금부터, 본 발명의 바람직한 실시예와 함께 사용하기 위한 강화된 페이스텔-형 구조(3100)의 도면인, 도 8을 참조한다. 도 8은 암호화 네트워크를 구현하는 데이터 구조 및 방법의 도면을 제공하고, 이 도면은 공지된 포맷으로 그러졌다. 도 8은 두 개의 라운드의 강화된 페이스텔-형 구조(3100)를 도시하고, 두 개 이상의 라운드를 포함하여 복수의 라운드는 페이스텔-형 네트워크의 경우에 종래 기술에 공지된 복수의 라운드와 유사한 것이 바람직함이 이해될 것이다.
도 8의 강화된 페이스텔-형 구조(3100)는 그 바람직한 구현 방법이 도 9를 참조하여 아래에 서술되어 있는, 'Combine Key RightPart(CKR)' 함수(3110), 및 그 바람직한 구현 방법이 도 12를 참조하여 아래에 서술되어 있는 'Combine RightPart Combine LeftPart(CRL)' 함수(3120)를 포함한다. 페이스텔-형 구조(3100)의 각각의 라운드에 대하여, 라운드 키(RKi, RKi+1)를 제공하도록 동작하는, (도 8에 도시되지 않은) 키 확장 함수의 바람직한 구현 방법은 도 15를 참조하여 아래에 서술되어 있다.
강화된 페이스텔-형 구조(3100)의 각각의 라운드에서, L과 R로 표시된, 평문의 두 절반부, 좌반부 및 우반부는 CKR 함수(3110), 및 CRL 함수(3120)에 의해 오퍼레이팅된다. 각각의 라운드, L 및 R은 64비트의 동일한 크기를 가지는 것이 바람직함이 이해될 것이다. L 및 R은 임의의 동일한 크기일 수 있으나, 본 부록에서는 예로서 64비트를 사용한다. 라운드 키, RKi의 크기는, 예컨대, 본 부록에서 100으로 서술되었음이 이해될 것이다. RKi는 임의의 적합한 크기일 수 있다.
복수의 라운드는 L 및 R의 프로세싱에 의해 진행되는 것이 바람직함이 이해될 것이다. 예를 들어, L 및 R은 DES 블록 사이퍼가 제1라운드 전에 입력을 순열 배치하는 동일한 방식으로 소정의 순서에 따라 순열 배치되는 것이 바람직하다(FIPS 46-3 참조). 복수의 라운드가 완료한 후, 강화된 페이스텔-형 구조(3100)의 암호화된 출력이 이후-프로세싱될 수 있음이 이해될 것이다. 예를 들어, 출력은 DES 블록 사이퍼가 16 라운드 후 그 상태를 바꾸는 방식으로 소정에 순서에 따라 순열 배치되는 것이 바람직하다(FIPS 46-3 참조).
임의의 주어진 라운드의 강화된 페이스텔-형 구조(3100)에 대하여, 한 특정 라운드(제1라운드, 마지막 라운드, 또는 임의의 다른 라운드)는 다른 n-1 라운드와 상이한 것이 바람직하다.
강화된 페이스텔-형 구조(3100)는 128비트-블록을 암호화/복호화하기 위해 128-비트 키를 사용하는 것이 바람직하다. 라운드의 개수(RN)는 포괄하여 40 내지 50 사이의 RN인 것이 바람직하다.
강화된 페이스텔-형 구조(3100)는 소프트웨어로 구현된다면 덜 효율적인 것이 바람직하다.
강화된 페이스텔-형 구조(3100)는 그 상태의 우반부와 라운드 키를 통합하기 위해 CKR(3110)을 사용하고, 그 키 통합의 결과를 그 상태의 좌반부와 결합하기 위해 합수 CRL(3120)을 사용한다. 그 상태의 좌반부 및 우반부는 각각 L 및 R이라 한다.
지금부터, 도 8의 강화된 페이스텔-형 구조에 포함된 'Combine Key RightPart'(CKR) 함수(3110)의 도면인, 도 9를 참조한다.
CKR 함수(3110)는 다음 오퍼레이션을 포함하는 것이 바람직하다:
1. RExp(Right Part Expansion)(3210)는 우반부 R를 64에서 100비트로 확장한다.
2. XOR 오퍼레이션(3220) 사용, 100 비트 라운드 키, RKi는 확장된 100비트 우반부와 결합된다.
3. MCF(Mix and Condense Function)(3230)는 RExp(3210)의 100비트 결과를 바람직하게는, 의사난수 식으로 믹싱하고, 믹싱된 100비트를 64비트로 압축한다.
지금부터, 도 9의 'Combine Key RightPart' 함수에 포함된 'RightPart Expansion' 함수를 위한 하드웨어의 바람직한 구현 방법의 도면인, 도 10을 참조한다. 도 10은 확장 함수를 구현하기 위한 하드웨어 구조 및 방법의 바람직한 구현 방법의 도면을 제공하고, 이 도면은 공지된 포맷으로 그려졌다. RExp(3210)은 64 비트 R을 100 비트의 확장된 'RightPart'로 확장하기 위해 선형 변환을 사용하는 것이 바람직하고, 여기서 각각의 100비트의 출력 비트는 2개 또는 3개의 입력 비트의 XOR의 결과이다.
도 10의 제안된 하드웨어에서 구현된 인덱스는 다음의 제약과 함께 유도-랜덤하게 선택되는 것이 바람직하다:
1. R의 64 입력 비트의 각각의 하나는 적어도 두 개의 출력 비트에 영향을 주고;
2. 100비트의 라운드 키의 각각의 비트는 정확히 하나의 출력 비트에 영향을 주고;
3. 인덱스는 입력 비트와 출력 비트 사이에 동일하게 퍼지도록 선택되고, 그로 인해 소수의 입력 비트가 소수의 출력 비트에만 영향을 주는 상황을 피하는 것이 바람직하고; 그리고,
4. 임의의 작은 세트의 입력 비트는 큰 세트의 출력 비트에 영향을 준다.
공지된 해밍 에러 보정 코드와 같은, 에러 보정 코드가 제안된 하드웨어에서 구현된 인덱스와 유사한 설계 표준을 공유하고, 그러므로, 에러 보정 코드는 제안된 하드웨어에서 구현된 인덱스로 사용하기에 적합할 수 있음이 당업자들은 이해될 것이다.
RExp 함수(3210) 및 (라운드 키와 함께) 후속의 XOR(3220) 오퍼레이션은 라운드 키와 우반부의 적합한 믹싱과, 그 믹싱의 시간-효율적인 구현 방법 사이를 밸런싱하고, 그로 인해 단 두 개의 XOR 오퍼레이션 레이어(및 몇몇 바람직한 실시예에서, NOT 게이트의 추가 레이어)를 포함하는 RExp(3210)(도 9), 및 XOR(3220) 오퍼레이션의 하드웨어 구현을 가능하게 한다.
도 9의 설명으로 돌아가서, MCF 함수(3230)가 지금부터 서술된다. 100비트의 확장된 우반부는, 100비트 라운드 키 RKi와 XOR한 후, MCF 함수(3230)로 입력되는 것이 바람직하다. 이 XOR의 100비트 결과는 (도 12를 참조하여 서술된) CRL 함수의 컨트롤 입력으로써 이후 사용되는, 64-비트의 임시 결과로 감소되고 압축되는 것이 바람직하다. MCF 함수(3230)는 페이스텔-형 구조(3100)(도 8)를 에뮬레이션에 견딜 수 있게 하는데 중요하다.
지금부터, 도 9의 CKR 함수(3110)에 포함된 MCF 함수(3230)(도 9)를 위한 빌딩 블록으로서 역할하는 미니-함수의 바람직한 실시예의 도면인, 도 11을 참조한다.
MCF 함수는 라운드 키 생성 함수와 포괄적으로 50 레이어의 미니-함수(3400) 사이에서 사용하는 것이 바람직하고, 미니-함수(3400)는 각각 두 개의 마이크로-함수, 밸런싱된 마이크로 함수 BF(3410), 및 비선형 마이크로-함수 NLF(3420)를 포함한다.
밸런싱된 마이크로 함수 BF(3410)는 다음과 같이 정의된다: 밸런싱된 함수를 위한 일 세트의 입력 비트는 밸런싱 세트로 지정되고, 다른 입력 비트의 모든 선택에 대하여, 밸런싱 세트 상의 균일 분포는 출력 상에 균일 분포를 보장한다(즉, 0과 1 입력의 균일 분포는 균일 분포의 0과 1의 출력을 보장한다). 제한하지 않는 예로서, XOR 오퍼레이션은 각각의 입력 비트가 밸런싱 세트인 밸런싱된 함수이다.
미니-함수(3400)는 다음과 같이 설계되는 것이 바람직하다: 입력 비트는 다른 입력 비트로부터 밸런싱 세트의 비트를 나누는 스플리터(3415)로 입력되는 것이 바람직하고; NLF(3420)는 다른 입력 비트에서 실행되는 것이 바람직하고; 그리고 이후 BF(3410)는 NLF(3420)의 출력 상에, 그리고 스플리터(3415)로부터 수신된, 밸런싱 세트의 비트 상에서 실행되는 것이 바람직하다.
몇몇 바람직한 실시예에서, 밸런싱 세트의 비트는 2비트-투-2비트 S-박스와 같은, 가역 변환을 포함하는, 제3타입의 마이크로-함수를 경험하는데, 그 밸런싱 세트는 2비트를 포함한다. 밸런싱 세트를 가역 변환으로 놓는 것은 NLF와 동시에 수행되는 것이 바람직하고, 그러므로, 제3마이크로-함수를 채용하는 것은 실행 시간의 손해 없이 실행되는 것이 바람직하다.
제한하지 않는 예로서, 다음의 함수는 (앞서 언급된 설계 표준에 따라) 3-비트 입력을 프로세스한다:
(input1∨input2)
Figure pat00002
input3;
NOT((input1∧input2)
Figure pat00003
input3);
'Majority' 함수; 및
하나의 단일 비트는 두 개의 다른 입력 비트 중 하나를 출력으로 선택하는, MUX.
레이어, i 내의 미니-함수(3400)는 레이어, i-1 내의 미니-함수(3400)의 출력으로부터의 입력을 수신하는 것이 바람직하다. 레이어, i의 입력 중 하나로 가는 레이어, i-1의 출력의 선택은 레이어 간의 믹싱을 최대화하고, 그러므로, 위치 효과를 피하는 방식으로 수행되는 것이 바람직하다.
사용된 정확한 MCF(3230)(도 9)는 설계 동안 자동 생성되는 것이 바람직하다. 그러나, 사용된 MCF는 출력 비트 간의 코릴레이션(특히, 선형 코릴레이션)을 측정하는 수 개의 통계 테스트를 통과하는 것이 바람직하다. 통계 테스트는 입력 및 출력으로 제한되지 않는 것이 바람직함은 물론, 입력 및 출력 간의 내부 레이어 내의 코릴레이션을 측정하는 것이 바람직하다. 또한, MCF(3230)(도 9)의 임의의 작은 세트의 출력 비트를 MCF(3230)(도 9)의 입력 비트의 짧은 표현으로 표현하는 것은 바람직하지 않다.
지금부터, 키 확장 및 셋업의 바람직한 방법, 및 라운드 키 암호화 함수의 바람직한 구현을 포함하는 로버스트 사이퍼 설계 방법, 도 8의 페이스텔-형 구조의 바람직한 구현을 포함한 부록 A의 방법의 설명인, 부록 A를 참조한다. 페이스텔-형 구조(3100)(도 8)를 강화하기 위해, 그리고 단일 포인트의 실패를 막기 위해, MCF(3230)(도 9)는 두 버전으로 구현되는 것이 바람직하다. 이 두 버전은 페이스텔-형 구조(3100)(도 8)의 라운드에 걸쳐 교대로 사용되는 것이 바람직하다. 두 버전 중 하나가 "faulty" 임을 알았더라도, 페이스텔-형 구조(3100)(도 8)는 전체r가 강하게 남아있는 것이 바람직함이 이해될 것이다. 본 구문에서 "fauly" 함수는 (예컨대, 강한 선형 또는 미분 특성을 가진) 암호 해독 약화 함수, 또는 소프트웨어로 쉽게 에뮬레이팅되는 함수이다.
지금부터, 도 8의 강화된 페이스텔-형 구조(3100)에 포함된 'Combine RightPart Combine LeftPart'(CRL)의 도면인, 도 12를 참조한다. CRL(3120) 함수는 새로운 64-비트 의사난수 우반부, Ri+1를 획득하기 위해, CKR(3110)의 마지막 스테이지로서 MCF(3230)의 64-비트 결과를 변경되지 않은 64-비트 좌반부, Li와 결합한다.
CRL 함수(3120)는 다음의 설계 표준에 따르는 것이 바람직하다:
1. CRL(3120)은 제1파라미터가 고정일 때, 제2파라미터에서 가역인 것이 바람직하다. 즉, 모든 X, Y에 대하여, ICRL(X, CRL(X,Y))=Y인, ICRL이 존재해야 하고, 여기서, CKR(3110)은 제1파라미터, X(본 부록에서, "컨트롤 입력"이라고도 함)로서 사용되고, 좌반부, Li는 제2파라미터, Y(본 부록에서, "변환 입력"이라고도 함)로서 사용된다.
2. CRL(3120)은 인볼루션이 아닌 것이 바람직하다. 즉, ICRL는 CRL(3120)과 상당히 상이한 것이 바람직하다(예컨대, DES에서 사용된 XOR 함수와 반대로).
CRL(3120)는 두 개의 스테이지를 포함하는 것이 바람직하고, 각각의 스테이지는 작은 서브-블록 상에서 동작한다. 바람직한 실시예에서, 각각의 서브-블록은 4-비트를 포함한다. 각각의 스테이지 후, 전이가 그 결과에 적용되는 것이 바람직하고, 작은 서브-블록 상의 작동의 임의의 위치 효과를 깨트린다.
제1스테이지는 컨트롤 입력과 변환 입력을 믹싱하는 선형 레이어, LL(3510)을 포함한다.
LL(3510) 후, 비트-전이, PL(3520)이 LL(3510)의 결과에 적용되는 것이 바람직하다.
그 다음, PL(3520)의 출력은 16개의 4-비트 투 4-비트 S-박스로 구성된, S-박스 레이어, SL(3530)로 입력되는 것이 바람직하다.
마지막으로, (도시되지 않은) 비트-전이가 SL(3530)의 출력에 적용되는 것이 바람직하다.
지금부터, 도 12의 CRL(3120) 내의 선형 레이저(3510)의 바람직한 구현의 도면인 도 13을 참조한다. LL(3510)은 변환 입력을, Li을 4비트의 마이크로-블록으로 나누는 제1스플리터(3610)를 포함한다. 이와 유사하게, 제2스플리터는 컨트롤 입력을 4-비트 마이크로-블록으로 나눈다. 컨트롤 입력의 결과인 4-비트 마이크로 블록은 선형 변환(LT)을 결정하기 위해 사용되는 것이 바람직하다. 결정된 변환은 입력 4비트 마이크로-블록에 적용되고, 그로 인해 4-비트 출력 마이크로-블록을 산출하는 것이 바람직하다. 컨트롤 데이터 4비트 마이크로-블록, 및 변환 데이터 4-비트 마이크로-블록의 선형 변환 오퍼레이션이 도 13에 "LT"로 도시되어 있다.
컨트롤 비트, C[0...3], 및 입력 비트, I[0...3]에 대하여, 선형 변환, O = (A(C)×I)
Figure pat00004
C, 여기서 A(C)는 컨트롤 입력, C에 의존하는 선형 변환이다:
Figure pat00005
이 때, Aij는 컨트롤 입력에 제공되는 4비트-투-1비트 함수이고, O는 결과적인 출력이다.
A(C)는 가역이고, 즉, 다음과 같은 B(C)가 존재한다:
Figure pat00006
모든 컨트롤 입력, C에 대하여:
Figure pat00007
; 즉, A(C)는 B(C)의 역함수이다.
바람직한 실시예에서, A(C)는 다음을 포함한다:
Figure pat00008
(식 1)
변환, A(C)가 복호화동안 사용된다면, 암호화동안 A(C)의 역변환이 사용됨이 이해될 것이다. 특히, A(C)가 식 1에 서술된 바와 같다면, 식 1에서 사용된 컨트롤 비트를 포함하는 두 매트릭스는 인볼루션이므로, 역변환, B(C)는 역순의 변환 구성이다. 모든 선형 변환의 결과는 'join' 함수(3630)로 입력되는 것이 바람직하다. 'join' 함수(3630)는 모든 16개의 선형 변환의 결과를 하나의 64비트 값으로 결합하는 것이 바람직하다.
'join' 함수(3630)의 64비트 출력은 비트-전이, PL(3520)로 입력되고, 그로 인해 64비트의 전이된 출력을 산출하는 것이 바람직하다. 비트-전이는 암호화 구조로 알려져 있다.
지금부터, 도 12의 CRL(3120) 내의 S-박스 레이어의 바람직한 구현의 도면인, 도 14를 참조한다. S-박스, SL(3530)(도 12)의 레이어는 하드웨어로 간단하게 구현되는, 4-비트 투 4-비트 S-박스를 포함하는 것이 바람직하고, 여전히, 비 선형의 강화된 페이스텔-형 구조(3100)(도 8)에 상당한 기여를 포함한다. 64-비트 입력은 S-박스 스플리터(3710)로 입력된다. S0박스 스플리터(3710)는 64비트 입력을 16개의 4비트 마이크로-블록으로 분할하는 것이 바람직하다. 16개의 4-비트 마이크로-블록은 16개의 S_박스(3720)를 거친다. 16개의 S-박스(3720)로부터의 출력은 비트 전이 'Join' 함수(3730)에서 모두 믹싱된다.
서펀트 사이퍼(www.ftp.cl.cam.ac.uk/ftp/users/rja14/serpent.pdf 참조)의 명세는 선형 및 미분 어택에 대항하여 최적화된, 8개의 4-비트-투-4-비트 S-박스를 서술한다. 서펀트 사이퍼의 명세에 서술된 S-박스는 본 부록에 서술된 강화된 페이스텔-형 구조(3100)(도 8)에 사용되는 것이 바람직하는 것이 본 발명의 발명자의 의견이다. 지금부터, 서펀트 사이퍼 명세의 부록 A.5의 사본이고, 서펀트 사이퍼의 S-박스, S0-S7을 서술하는 부록 B를 참조한다.
지금부터, 도 8의 강화된 페이스텔-형 구조(3100)에 포함된 키 확장 함수(3800)의 바람직한 구현의 도면인, 도 15를 참조한다. 키 셋업 함수(3800)는 128-비트 키를 RN 100-비트 라운드 키로 확장하는 것이 바람직하다(RN은 라운드의 개수). 키 확장 함수는 다음의 원리에 따라 설계되는 것이 바람직하다:
1. 사용가능한 하드웨어 함수를 재사용하는 것이 바람직하다.
2. 부록 A의 설명에 관하여, 상술된 바와 같이, 강화된 페이스텔-형 구조(3100)(도 8)의 로버트니스를 강화하는 것이 바람직하다.
3. 라운드 키의 포워드 및 백워드 생성을 모두 가능한 것이 바람직하다.
상술한 바와 같이, 부록 A의 설명에 관하여, 키 확장 함수(3800)는 MCF가 두 변형을 가지는 것이 바람직하다는 장점을 가진다, 한 버전은 CKR(3110)(도 9)에 대한 MCF 함수 내의 임의의 라운드 동안 액티브이고, 다른 버전은 사용을 위해 사용가능하다. 그러므로, 키 확장 함수(3800)는 암호 해독적으로 안전한 방식으로 라운드 키를 생성하기 위해, 사용가능한 MCF 함수를 사용하는 것이 바람직하다.
스트림 사이퍼를 위한 전형적인 설계를 모방하여, 키 셋업 함수(3800)는 두 함수; 를 사용하는 것이 바람직하다. 제1함수, 상태 갱신 함수(3810)는 상태를 갱신하도록 동작하는 것이 바람직하다. 제2함수, 라운드 키 생성 함수(3830)는 새로운 상태로부터 새로운 라운드 키(3840)를 유도하는 것이 바람직하다. 상태 갱신(3810), 및 라운드 키 생성(3830) 함수는 키 자체로부터는 물론 서로 암호 해독적으로 연결해제되는 것이 바람직한 라운드 키(3840)를 교대로 생성하도록 실행된다.
키 셋업의 상태는 128 비트 쉬프트 레지스터인 것이 바람직하다. 128 비트 쉬프트 레지스터는 128 비트 키와 함께 초기화된다(3850). 상태 갱신 함수(3810)는 128 비트 레지스터의 순환적 회전을 포함하는 것이 바람직하다. 라운드 개수(RN)는 128 비트 레지스터의 크기보다 더 작은 것이 바람직하고, 그러므로, 상태 갱신 함수는 한 라운드 동안 루프하지 않는 것이 바람직함이 이해될 것이다.
복호화 동안, 적절한 순서(암호화 동안 사용된 순서의 역순)로 라운드 키를 획득하기 위해, 복호기는 암호화 동안 사용된 역순으로 상태를 수신하는 것이 바람직하다. 몇몇 바람직한 실시예에서, 복호화는 마지막 라운드 키에 적합한 상태를 얻기 위해 필요한 만큼의 시간만큼 쉬프트 레지스터를 쉬프팅하여 시작하는 것이 바람직하다. 그 다음, 각각의 후속 라운드는 암호화 동안 상태를 순환적으로 쉬프트하는데 사용된 방향과 반대 방향으로 상태를 쉬프트하는 것이 바람직하다.
짧은 LFSR(레프트 쉬프트 레지스터)를 2-3 더 작은 LFSR로 교체하는 것이 바람직할 수 있음이 이해될 것이다. 2-3 더 작은 LFSR이 사용되면, 복호화 키는 암호화 키 상에 (앞서 계산된, 그리고 하드-와이어의) 선형 변환을 적용한 결과이고, 그 다음, LFSR은 역순으로 라운드 키를 얻기 위해 롤 백되는 것이 바람직하다.
약한 키 및 슬라이드 어택을 피하기 위해, 소정의 라운드 스트링을 가진 추가적인 XOR이 상태 갱신 함수(3810) 후에 적용되는 것이 바람직할 수 있다.
지금부터, 도 15의 키 확장 함수(3800) 내의 MCF 함수(3230)(도 9)를 사용하는 라운드 키 생성 함수(3830)의 바람직한 구현의 도면인, 도 16을 참조한다. 라운드 키 생성(3830) 함수는, 부록 A를 참조하여 상술된 바와 같이, 128-비트 상태를 MCF(3230)로 입력하고, 다음 라운드 키로서 100-비트 출력을 획득한다.
다음은 키 셋업 및 라운드 오퍼레이션에서 MCF 변형의 사용 순서를 선택하는 설계 원리이다:
1. 라운드 오퍼레이션 및 키 셋업 사이에 매끈한 파이프라인을 허용하는 것이 바람직하다. 더욱 상세하게는, 하나는 다음 라운드에 대한 키를 생성하고, 다른 하나는 라운드 오퍼레이션 그 자신을 위해 사용되는 함께 액티브하는 두 함수를 가진다.
2. 가능한 많은 다양한 조합을 사용하여, 보안 및 에뮬레이션 저항성을 위한 "책임"의 분포를 최대화하는 것이 바람직하다.
부록 A에서 더욱 상세하게 서술된 바와 같이, 두 개의 MCF 함수 A 및 B에 대하여, 라운드 오퍼레이션은 다음 순서로 A 및 B를 사용하는 것이 바람직하다: A A B B A A B B A A B B A A B B...
키 셋업 오퍼레이션은 사용가능하게 남겨진 함수, 즉, (라운드 2, 3을 위한 키를 준비하는) 라운드 1, 2에서 B, (라운드 4, 5를 위한 키를 준비하는) 라운드 3, 4에서 A를 사용한다.
그러므로, 강화된 페이스텔-형 구조(3100)(도 8)의 라운드는 라운드 키 유도 및 라운드 오퍼레이션으로서 다음의 조합을 가진다:
Round 4t+1: AA;
Round 4t+2: BA;
Round 4t+3: BB; 및
Round 4t+4: AB.
대안의 바람직한 구현은 부록 A에 서술되어 있다.
라운드 오퍼레이션에 사용되는 MCF(3230)(도 9), 및 키 확장에 사용되는 MCF의 구현은 상이한 크기의 입력 및 출력을 가진다. 더욱 상세하게, 128 비트의 값이 키 셋업을 위한 100 비트의 출력을 산출하기 위해 입력되는 것이 바람직하고, 100비트 값은 라운드 오퍼레이션을 위한 64비트 출력을 산출하기 위해 입력되는 것이 바람직하다.
두 오퍼레이션에 대하여 동일한 하드웨어를 사용하기 위해, 구현된 MCF는 100비트에서 128비트로, 100비트에서 64비트로의 구현이 바람직하고, 대부분의 레이어는 128비트에서 100비트로 간다. 그러므로, 라운드 오퍼레이션은 전체 함수를 사용하고, 키 확장은 그 함수의 중간 부분만 사용한다. 본 부록에 서술된 블로잉 효과는 또한 그 함수를 소프트웨어로 에뮬레이팅하기 어렵게 만드는데 기여하는 것이 바람직하다.
지금부터, 그것의 바람직한 실시예에 따라, 도 8의 강화된 페이스텔-형 구조의 오퍼레이션의 바람직한 대안의 방법의 간단한 플로우차트 도면인, 도 17 내지 20을 참조한다. 도 17 내지 20의 방법은 상기 설명에 관하여 자가-설명된 것으로 생각된다.
지금부터, 본 발명과 함께 사용하기 위한 임의의 대안의 바람직한 실시예의 설명을 포함하는, 부록 C를 참조한다.
본 발명의 소프트웨어 컴포넌트는, 원한다면, ROM 형태로 구현될 수 있음이 이해될 것이다. 소프트웨어 컴포넌트는, 일반적으로, 종래 기술을 사용하여, 원한다면, 하드웨어로 구현될 수 있다.
명료함을 위해, 개별 실시예의 구문에 서술된, 본 발명의 다양한 피처는 또한 단일 실시예에 결합하여 제공될 수 있음이 이해될 것이다. 이와 반대로, 간략함을 위해, 단일 실시예의 구문에 서술된 본 발명의 다양한 실시예는 임의의 적합한 하위결합으로, 또는 개별적으로 제공될 수도 있다.
부록 A
*로버스트 사이퍼 설계
(배경)
블록 사이퍼는 공지된 종류의 대칭 키-기반 사이퍼이다. 블록 사이퍼는 비트 그룹인 평문 상에서 오퍼레이팅한다. 이 비트 그룹을 블록이라 한다. 블록 사이퍼는 1996년 'John Wiley and Sons'에 의해 발행된 'Chapers 12-15 of Applied Cryptography, Second Edition, by Bruce Schneier'에서 다루어진다. 많은 블록 사이퍼들은 하나의 함수를 반복적으로 적용함으로써 구성된다. 이러한 블록 사이퍼는 반복형 블록 사이퍼로 알려져 있다. 블록 사이퍼의 반복은 라운드라 하고, 반복되는 함수를 라운드 함수라 한다. 반복형 블록 사이퍼에서 라운드가 반복되는 횟수를 라운드 넘버(RN)라 한다.
하나의 블록 사이퍼, DES는 FIPS 46-3에 명시되어 있고, 인터넷 'csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf'에서 사용가능하다.
제2의 공지된 블록 사이퍼, AES는 FIPS 197에 명시되어 있고, 인터넷 'csrc.nist.gov/publications/fips/fips197/fips197.pdf'에서 사용가능하다.
(발명의 상세한 설명)
본 부록에 서술된 본 시스템 및 방법은 사이퍼 설계를 위한 향상된 방법 및 시스템을 제공하기 위함이다.
그러므로, 제1함수 Fi, 및 제2함수 Fj를 제공하고, 라운드 키 생성 함수를 제공하고, 상기 라운드 키 생성 함수는, 임의의 주어진 라운드에서, 제1함수 Fi, 및 제2함수 Fj 중 정확하게 하나를 사용하도록 동작하고, 라운드 믹싱 함수를 제공하고, 상기 라운드 믹싱 함수는, 임의의 주어진 라운드에서, 제1함수 Fi, 및 제2함수 Fj 중 정확하게 하나를 사용하도록 동작하고, 제2라운드에서 사용하기 위한 제2라운드 키를 생성하기 위해 적어도 제1라운드에서 라운드 키 생성 함수를 사용하고, 그리고 제1라운드 키를 사이퍼 상태와 믹싱하기 위해 적어도 제1라운드에서 라운드 믹싱 함수를 사용하는 시스템이 제공되고, 여기서, 다음 중 하나로 수행된다: 제1라운드에서, 라운드 키 생성 함수가 제2라운드에서 사용하기 위한 제2라운드 키를 생성하기 위해 제1 함수, Fi를 사용하고, 실질적으로 동시에, 라운드 키 믹싱 함수는 제1라운드 키를 사이퍼 상태와 믹싱하기 위해 제2함수, Fj를 사용하고, 라운드 키 생성 함수는 제2라운드에서 사용하기 위한 제2라운드 키를 생성하기 위해 제2함수, Fj를 사용하고, 실질적으도 동시에, 라운드 키 믹싱 함수는 제1라운드 키를 사이퍼 상태와 믹싱하기 위해 제1함수, Fi를 사용한다.
(도면의 간단한 설명)
본 부록은 다음 도면을 참조하여 아래의 실시예로부터 더욱 완전히 이해하게 될 것이다.
도 21은 본 발명의 바람직한 실시예와 함께 사용하기 위한 로버스트 사이퍼 설계를 위한 시스템의 간단한 블록 다이어그램 도면이고,
도 22는 도 21의 방법에 따라 설계된 사이퍼 내의 키 확장 및 암호화 라운드 사이의 관계의 한 바람직한 구현 방법을 도시하는 시간 라인이고,
도 23은 도 21의 방법의 바람직한 구현 방법의 MUX 및 DEMUX 모듈의 사용을 도시하는 간단한 블록 다이어그램 도면이고,
도 24는 도 21의 방법에 따라 설계된 사이퍼 내의 라운드 키를 생성하도록 동작하는 라운드 키 제너레이션 함수의 한 바람직한 구현 방법의 간단한 블록 다이어그램 도면이고,
도 25는 도 21의 시스템에 따라 구성되고 동작하는 4 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 26은 도 21의 시스템에 따라 구성되고 동작하는 4 라운드의 전형적인 ASE-형 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 27은 도 21의 시스템의 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 28은 도 21의 시스템의 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 AES-형 블록 사이퍼의 간단한 블록 다이어그램 도면이고,
도 29는 도 21의 시스템의 또 다른 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면이고, 그리고
도 30 도 21의 시스템의 또 다른 대안의 바람직한 실시예에 따라 구성되고 동작하는 8 라운드의 전형적인 ASE-형 사이퍼의 간단한 블록 다이어그램 도면이다.
(실시예)
지금부터, 본 발명의 바람직한 실시예와 함께 사용하기 위한 로버스트 사이퍼 설계를 위한 시스템(1010)의 간단한 블록 다이어그램 도면인, 도 21을 참조한다. 도 21의 시스템(1010)은 라운드 n에서, Fa 및 Fb로 도시된 다른 종류의 함수 F를 포함한다. 라운드 n+1에서, 다른 종류의 함수 F는 Fc 및 Fd로 도시되어 있다.
함수 F는, 그것의 바람직한 실시예에서, 다음 중 적어도 하나를 포함하는 것이 바람직하다:
사이퍼 보안의 중요부(즉, F가 잘못 선택되었다면, F를 포함하는 사이퍼는 안전하지 않음을 의미한다); 및
F를 포함하는 사이퍼의 전형적인 하드웨어 구현의 하드웨어 복잡도의 중요 부분(본 발명의 발명자는 F를 포함하는 사이퍼의 하드웨어 구현 내의 게이트의 적어도 10%, 및 바람직하게는 20%가 함수 F 전용이거나, F를 포함하는 사이퍼의 하드웨어 구현의 전압의 적어도 10% 및 바람직하게는 20%가 함수 F 전용임을 예상한다).
그러므로, 함수 F를 포함하는 사이퍼의 바람직한 실시예에서, 함수 F는 사이퍼 보안의 중요 부분을 포함하고, 사이퍼의 하드웨어 구현의 중요 부분을 포함한다.
제한하지 않는 예로서, 함수 F는 AES 가역 8비트-투-8비트 S-박스, 또는 DES 비가역 6비트-투-4비트 S-박스와 같은, 한 레이어의 S-박스(공지된 암호 구조)를 포함하는 것이 바람직하다. 대안으로서, 함수 F는 'AES ShiftRows' 변환 함수, 또는 'AES MixColumns' 변환 함수와 같은 선형 변환을 포함할 수 있다.
바람직한 구현 방법은 도 25-30을 참조하여 아래에 서술된다.
*도 21의 시스템은 또한 라운드 n에서 제1함수, Fa를 포함하는 것으로 도시되어 있고, 이후 라운드 n+1에서 제2함수, Fc를 포함하는 것으로 도시되어 있는 라운드 키 생성 함수(1020)를 포함한다. 도 21의 시스템은 또한, 라운드 n에서 제3함수, Fb를 포함하는 것으로 도시되어 있고, 이후 라운드 n+1에서 제4함수, Fd를 포함하는 것으로 도시되어 있는 라운드 키 생성 함수(1030)를 포함한다. Fa, Fb, Fc, 및 Fd는 두 함수, Fi 및 Fj 중에서 선택되는 것이 바람직하고, 그로 인해, 4개의 함수, Fa, Fb, Fc, 및 Fd에 대하여 두 개의 함수, Fi, 및 Fj만의 구현을 가능하게 한다. 몇몇 바람직한 실시예에서, Fb 및 Fc는 동일하지 않고, 그러므로, 실질적으로 동시에 실행될 수 있는 것이 바람직하다. 즉, Fb=Fi 및 Fc=Fj, 또는 Fb=Fj 및 Fc=Fi이다. 임의의 경우에, 함수, Fa 및 Fd는 함수 Fi 또는 Fj 중 하나 일 수 있다.
지금부터, 키 확장과 도 21의 방법에 따라 설계된 사이퍼 내의 암호화 라운드 사이의 관계의 바람직한 구현 방법을 도시하는 타임 라인인, 도 22를 추가적으로 참조하여, 도 21의 시스템의 오퍼레이션을 간략하게 서술한다(용어 "키 확장" 및 "키 생성"은 본 부록 및 도면에서 상호치환 가능하게 사용되었다). 라운드 1에 앞서, 라운드 키 생성 함수(1020)는 라운드 1에서의 라운드 믹싱 함수(1030)에 의해 사용하기 위한 라운드 키를 생성한다. 라운드 1에서의 라운드 믹싱 함수(1030)의 오퍼레이션과 실질적으로 병렬로, 라운드 키 생성 함수(1020)는 라운드 2에서 라운드 믹싱 함수(1030)에 의해 사용하기 위한 라운드 키를 생성한다.
다음 라운드에서 라운드 믹싱 함수(1030)에 의해 사용하기 위한 라운드 키를 생성하는 라운드 키 생성 함수(1020)의 프로세스는 라운드의 라운드 넘버-1(RN-1)까지 라운드 믹싱 함수(1030)의 오퍼레이션과 실질적으로 병렬로 계속되고, 라운드 키 생성 함수(1020)는 라운드 RN에서 라운드 믹싱 함수(1030)에 의해 사용하기 위한 라운드 키를 생성한다. 라운드 RN 동안, 다음 라운드가 존재하지 않고, 그러므로, 라운드 믹싱 함수(1030)가 라운드 RN-1 동안 라운드 키 생성 함수(1020)에 의해 생성된 라운드 키를 사용하여 오퍼레이팅할 때, 라운드 키 생성 함수(1020)는 키를 생성하지 않는 것이 바람직하다.
다른 종류의 F, Fa 및 Fb는 바람직하게는 하드웨어로, 한번만 구현되는 것이 바람직하다. Fa 및 Fb는, 몇몇 환경에서, 또한 소프트웨어로 구현될 수 있음이 이해될 것이다.
당업자들은 하드웨어로 단일 함수를 구현하는 대신에, 함수 Fa 및 Fb를 구현하는 것은 하드웨어의 추가적인 게이트, 및 그 게이트에 전원을 공급하기 위한 추가적인 전압을 요구함을 이해할 것이다. 두 종류의 F를 보다 효율적으로 구현하기 위해서, Fa가 라운드 믹싱 함수(1030)의 일부로서 오퍼레이팅할 때, Fb는 다음 라운드를 위한 라운드 키 생성 함수(1020)의 일부로서 오퍼레이팅하는 것이 바람직하다. 이와 유사하게, Fb가 라운드 믹싱 함수(1030)의 일부로서 동작하고 있을 때, Fa는 다음 라운드를 위한 라운드 키 생성 함수(1020)(도 21)의 일부로서 오퍼레이팅하는 것이 바람직하다.
지금부터, 도 21의 방법의 바람직한 구현에서 MUX 및 DEMUX 모듈의 사용을 도시하는 간단한 블록 다이어그램 도면인, 도 23을 참조한다. MUX 모듈 및 DEMUX 모듈은 상이한 소스 간에, 입력, 키 확장 입력, 또는 라운드의 일부로서의 입력은 물론, 상이한 출력, 라운드 키를 위한 레지스터, 또는 라운드 키 상태 레지스터를 구별하도록 동작하는 것이 바람직하다. MUX 모듈은 라운드를 카운트하도록 동작하는 (도시되지 않은) 카운터에 의해 갱신되는 것이 바람직하다.
키 확장 로직(1310)를 포함하는 하드웨어는 제1MUX 모듈(1320)에 임시적 결과를 출력한다. 이와 유사하게, 라운드 암호화 로직(1330)을 포함한 하드웨어는 제1MUX 모듈(1320)에 임시적 결과를 출력한다. 제1MUX 모듈(1320)은, 선택 기준(1340)을 기초로, 제1MUX 모듈(1320)의 출력이 키 확장 로직(1310) 하드웨어로부터의 MUX 입력으로서 취해진 값이여야 하는지, 또는 라운드 암호화 로직(1330) 하드웨어로부터의 MUX 입력으로서 취해진 값이여야 하는지를 결정한다. 예로서 주어진, 도 29 및 30의 아래의 설명과 관련된, 선택 기준(1340)의 바람직한 구현은 0 내지 3 범위의 값의 카운터를 포함한다. 카운터 값이 0 또는 1이면, 제1옵션이 MUX 모듈에 의해 구현된다. 카운터 값이 2 또는 3이면, 제2옵션이 MUX 모듈에 의해 구현된다. 제1MUX 모듈(1320)로부터의 출력은 특정 라운드에 적합한 Fi로 전송되는 것이 바람직하다. Fi로부터의 출력은 DEMUX 모듈(1360)로 입력되는 것이 바람직하다. DEMUX 모듈(1360)은 수신된 입력이 라운드 키 생성 임시 결과(1370)로서 키 확장 로직(1310) 하드웨어로 출력될 필요가 있는지, 또는 라운드 키 믹싱 임시 결과(1380)로서 라운드 암호화 로직(1330) 하드웨어로 출력될 필요가 있는지 판단하기 위해 선택 기준(1340)을 적용하는 것이 바람직하다.
몇몇 바람직한 실시예에서, 키 확장 로직(1310)은 Fi의 라운드 키 생성 임시 결과(1370)와 Fj의 라운드 키 믹싱 임시 결과(1380) 사이에서 선택하는 (도시되지 않은) MUX 컴포넌트를 가진다. 이와 유사하게, 이러한 바람직한 실시예에서, 라운드 암호화 로직(1330)은 Fj의 라운드 키 생성 임시 결과(1370)와 Fi의 라운드 키 믹싱 임시 결과(1380) 사이에서 선택하는 (도시되지 않은) MUX 컴포넌트를 가진다.
도 23의 시스템과 유사한 설계는 Fj에 대하여 한 바람직한 실시예의 MUX 및 DEMUX 선택 로직을 포함하고, Fj를 위해 사용되는 선택 기준(1340)은 Fi를 위해 사용되는 선택 로직의 부정(negation)인 것이 바람직하다. 즉, 함수 Fi가 라운드 키 생성을 위해 사용될 때, 함수 Fj는 라운드 키 믹싱을 위해 사용되는 것이 바람직하고, 그 역도 그러하다.
당업자들은 부가적으로 효율적인 전압 사용의 이점과 함께, 또한 본 부록에 서술된 바와 같이 설계된 사이퍼는, 예를 들어, Fj가 약해졌음을 알게 되었다면(제한하지 않는 예로서, Fj는 선형 특성을 포함하거나, Fj가 미분 특성을 포함한다), Fi는 여전히 그 사이퍼에 대한 어느 정도의 보호를 제공하는 추가적인 보안성을 가지는 것이 바람직하다.
바람직한 실시예에서, 함수 F는 특별한 하드웨어를 포함하는 구현을 제외하고, 임의의 구현에서 비효율적이 되고, 그로 인해, 함수 F를 포함한 사이퍼를 임의의 구현에서 비효율적으로 만들도록 의도적으로 설계된다. 그러므로, 특별한 하드웨어를 포함한 구현을 제외하고, 이러한 실시예의 함수 F를 비효율적인 Fi 및 Fj에 포함하도록 설계된 사이퍼는 여전힌 특별한 하드웨어를 포함하는 구현을 제외하고 실질적으로 비효율적인 사이퍼의 구현을 포함하고, Fi는 특별한 하드웨어를 포함한 구현을 제외하고, 비효율적이고, Fj는 특별한 하드웨어를 포함하지 않는 구현에서 비효율적이지 않다.
(라운드 믹싱 함수(1030)(도 21), 및 라운드 키 생성 함수(1020)(도 21)인) Fi의 복수의 사용 간에 차별을 위해, 일정한 라운드 백터는 함수 Fi의 행동에 영향을 미치기 위해 사용될 수 있는 것이 바람직하다. 이와 유사하게, (라운드 믹싱 함수(1030)(도 21), 및 라운드 키 생성 함수(1020)(도 21)인) Fj의 복수의 사용 간에 차별을 위해, 일정한 라운드 백터는 함수 Fj의 행동에 영향을 미치기 위해 사용될 수 있는 것이 바람직하다. 일정한 라운드 백터는 다음 두 목적 중 적어도 하나를 위해 사용되는 것이 바람직하다:
1. (예컨대, Fi 및 Fj를 구현하고, 상이한 라운드의 출력에 차이점을 증가시키기 위해 상이한 라운드 동안 상이한 일정한 백터를 사용하여) 더 많은 버전의 F가 하드웨어로 구현되게 하는 것; 및
2. 라운드 오퍼레이션 동안과 키 확장 동안에 상이한 일정한 라운드 백터를 사용함으로써 Fi 또는 Fj를 라운드 오퍼레이션으로 사용하는 것과, Fi 및 Fj를 키 확장 오퍼레이션으로서 사용하는 것 사이를 차별화하는 것.
지금부터, 사이퍼 설계에서 라운드 키 생성 함수의 일부로서, 그리고 라운드 믹싱 함수의 일부로서 함수 Fi 및 Fj의 사용이 서술된다. 지금부터, 도 21의 방법에 따라 설계된 사이퍼에서 라운드 키를 생성하도록 동작하는 라운드 키 생성 함수의 바람직한 구현의 간단한 블록 다이어그램 도면인, 도 24를 참조한다. Fi 및 Fj는 함수 Fi 및 Fj가 구현된 사이퍼에 따라, 적절하게, 가역 함수 또는 비가역 함수를 포함할 수 있다. 도 25, 27 ,및 29를 참조하여 아래에 서술된 바와 같이, DES와 같은, 페이스텔 기반의 암호화 스킴에서, (키 믹싱 메카니짐의 일부로서) Fi 및 Fj는 "좌측" 절반(비가역 오퍼레이션)과 결합(DES에서 XOR)하기 전에, "우측" 절반과 라운드 키의 결합 부분을 포함하는 것이 바람직하다. 이러한 사이퍼에서, 함수 Fi 및 Fj는 비가역 함수로 구현되는 것이 바람직하다. 대안으로써, 그리고 바람직하게는, 도 26, 28, 및 30을 참조하여 아래에서 서술된 바와 같이, AES 사이퍼(FIPS 197)와 같은 대치 변환 사이퍼에서, Fi 및 Fj는 라운드 함수의 일부를 포함하는 것이 바람직하다. 이러한 사이퍼에서, 함수 Fi 및 Fj는 비가역 함수로 구현되는 것이 바람직하다.
라운드 키 생성 함수(1327)는 복수의 키를 생성하기 위해 반복적으로 오퍼레이팅한다. 라운드 키 생성 함수(1327)의 반복적인 오퍼레이션은 상태, R을 포함한다. 상태, R은 매 라운드 동안 입력으로서 루트 키, K와 함께 함수, 'StateInit'(1327)를 실행함으로써 초기화된다. R은 상태 갱신 함수(1347)에 의해 갱신된다. 상태 갱신 함수(1347)는 이전 라운드로부터 그 라운드에 대한 R을 갱신하기 위해 그 상태에 적용된다. 라운드 키 생성 함수(1357)는 R의 갱신된 값으로부터 새로운 라운드 키 RKi(1367)를 생성한다. 그러므로, 라운드 키 RK1 내지RKRN(상술된 바와 같이, RN=라운드 넘버, 라운드 개수)는 다음 방법에 따라 루트 키 K로부터 생성된다:
R0=InitState(K)
For i = 1 to RN
Ri=StateUpdate(Ri-1)
RKi=RoundKeyGenerate(Ri)
바람직한 실시예에서, 상태 R의 크기는 키의 크기와 동일한 것이 바람직하다. 제한하지 않는 예로서, 키가 128비트이면 상태 R이 128비트인 것이 바람직하다.
RN이 그 비트가 키의 크기보다 작을 때 적용가능한, 상술된 반복 프로세스 동안 상태를 결정하는 한 바람직한 방법은 L-비트 상태를 L-비트 키, K와 함께 초기화하는 단계, 및 L 비트 키를 각 라운드마다 순환적으로 한 비트씩 쉬프팅하는 단계를 포함한다. 상태를 결정하는 이러한 방법에서, 'RoundKeyGenerate'(1357)는 비가역 함수일 필요가 없다.
Fi 및 Fj가 비가역 함수를 포함하고, 라운드 키 생성 함수가 상술된 바와 같이 설계되어 있는 바람직한 구현에서, 비가역 함수 F는 'RoundKeyGenerate'(1357) 함수의 일부를 포함하는 것이 바람직하다. Fi 및 Fj가 비가역 함수를 포함하고, 라운드 키 생성 함수가 상술된 바와 같이 설계되어 있는 바람직한 구현에서, 'StateUpdate'(1347) 함수는 비가역인 것이 바람직하고, 비가역 함수 F는 'StateUpdate'(1347) 함수의 일부를 포함하는 것이 바람직하다.
지금부터, 다른 바람직한 구현의 제한하지 않는 예가 서술된다.
지금부터, 도 21의 시스템에 따라 구성되고 동작하는 4라운드의 전형적인 페이스텔 블록 사이퍼(1400)의 간단한 블록 다이어그램 도면인, 도 25를 참조한다. 도 25는 암호화 네트워크를 구현하기 위한 데이터 구조 및 방법의 도면을 제공하고, 이 도면은 공지된 포맷으로 그려져 있다.
페이스텔 블록 사이퍼(1400)는 함수 A(1420), 및 함수 B(1430)로 지시되는 라운드 믹싱 함수를 포함한다. 부가적으로, 도 21에 "
Figure pat00009
", XOR로 도시되어 있는, 결합 함수(1440)는 함수 A(1420) 또는 함수 B(1430) 중 하나의 출력을 입력과 결합한다. 결합 함수(1440)가 XOR로 도시되어 있다 하더라도, 임의의 적합한 결합 함수가 함수 A(1420) 또는 함수 B(1430) 중 하나의 출력을 입력과 결합하기 위해 구현될 수 있음이 이해될 것이다.
지금부터, 도 25의 시스템의 오퍼레이션이 서술된다. 공지된 바와 같이, 블록 사이퍼는 전형적으로 반복 방식으로 적용되고, 이 사이퍼의 반복을 "라운드"라 한다. 매 라운드 동안 반복되는 함수를 전형적으로 "라운드 함수"라 한다. 빈번하게, 라운드 함수는 수 개의 하위-함수를 포함한다.
제한하지 않는 예로서, 공지된 DES 블록 사이퍼(페이스텔 사이퍼) 라운드 함수는 4개의 스테이지를 포함하고, 각각의 스테이지는 다음의 적합한 하위-함수에서 실행된다:
1. 32-비트 입력 블록이 48비트로 확장되는, 'Expansion';
2. 'Expansion'의 48-비트 출력이 XOR 함수를 사용하여, 특정 라운드에 특정되어 있는 라운드 키(1450)와 함께 결합되는, 'Key mixing';
3. 'Key mixing' 함수의 출력이 8개의 6-비트 서브-블록으로 분할되는 'Substitution'. 8개의 6-비트 서브-블록의 각각은 비선형 변환에 따라, 4-비트 블록을 출력하고, 그로 인해, 전체의 32출력 비트를 산출하는 치환 박스("S-box")로 입력된다.
4. 'Permutation', 'Substitution'의 32출력 비트가 고정 전이, "P-box"에 따라 재배열된다.
특정의 바람직한 실시예에서, 블록 사이퍼(1410)의 라운드 함수 내에 포함된 하위-함수로서 동작하는 함수, F는 상이한 종류의 F:Fi, 및 Fj로 대체된다. 블록 사이퍼(1410)의 상이한 라운드 동안, 상이한 종류의 F(Fi, 및 Fj)가 사용된다. 그러므로, 도 25에 도시된 바람직한 실시예에서, 함수 Fi를 포함한 함수 A(1420), 및 함수 Fj를 포함하는 함수 B(1430)는 교대의 라운드에서 사용된다.
라운드 암호화 함수는 이전 라운드 동안 생성된 라운드 키를 사용하는 것이 바람직하므로, 라운드 동안 함수 Fi를 포함하는 함수 A(1420)가 라운드 믹싱 함수를 포함한 때, Fj는 라운드 키를 생성하기 위해 라운드 키 생성 함수에서 사용되는 것이 바람직하다. 라운드 동안 함수 Fj를 포함하는 함수 B(1430)가 라운드 믹싱 함수를 포함한 때, Fi는 다음 라운드를 위한 라운드 키를 생성하기 위해 라운드 키 생성 함수에서 사용되는 것이 바람직하다.
도 25에 도시된 사이퍼에서, 각각의 시퀀스의 라운드는 ABAB...를 포함하여, 각각의 라운드가 F(Fi, Fj, Fi, Fj,...)의 구현의 사용을 교대한다. 이러한 바람직한 실시예에서, 키 확장은 XBABA...를 포함하는 것이 바람직하고, 여기서 제1라운드는 A 또는 B로부터 유도될 수 있는 키, X를 사용한다. 그러므로, 다음 표는 도 25에 도시된 바람직한 구현방법을 설명한다:
라운드 키 생성 라운드 함수
1 X Fi
2 Fj Fj
3 Fi Fi
4 Fj Fj
5 Fi Fi
지금부터, 도 21의 시스템에 따라 구성되고 동작하는 4라운드의 전형적인 AES-형 블록 사이퍼(1500)의 간단한 블록 다이어그램 도면인, 도 26을 참조한다. AES-형 블록 사이퍼의 각각의 라운드는 라운드 메카니즘(1520)에 라운드 키를 제공하도록 동작하는 (도 26에 도시의 용이함을 위해, "키 셋업"으로 표시된) 라운드 키 생성 함수(1510)를 포함한다. 각각의 라운드 메카니즘(1520)은 라운드 키 생성 함수(1510)로부터 키를 수신하고, 전형적으로 XOR 함수를 사용하여, 그 키를 알고 있는 상수와 결합하도록 동작하는 (도 26에 도시의 용이함을 위해, "키 콤브"로 도시된) 키 믹싱 함수(1530)를 포함하는 것이 전형적이다. 키 믹싱 함수(1530)로부터의 출력은 선형 레이저(1540)로 입력되는 것이 전형적이다. 선형 레이어(1540)는 "MixRows" 및 "ShiftColumns"와 같은, 공지된 함수를 포함하는 것이 전형적이다. 비선형 레이어(1550)는 Fi 또는 Fj인 함수 F의 구현을 포함한다. 도 26에 도시된 바람직한 구현에서, Fi 또는 Fj의 구현은 도 25에 도시된 바람직한 구현과 유사하게 교대한다.
지금부터, 도 21의 대안의 바람직한 실시예의 시스템에 따라 구성되고 동작하는 8라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면인, 도 27을 참조한다. 부가적으로, 도 21의 대안의 바람직한 실시예의 시스템에 따라 구성되고 동작하는 8라운드의 전형적인 AES-형 블록 사이퍼의 간단한 블록 다이어그램 도면인, 도 28을 참조한다.
도 27에 도시된 시스템의 오퍼레이션은 도 25를 참조하여 상술되었다. 도 28에 도시된 시스템의 오퍼레이션은 도 26을 참조하여 상술되었다.
도 27 및 28에 도시된 사이퍼에서, 각각의 시퀀스의 수 라운드는 먼저 라운드 믹싱 함수에 함수 Fi를 포함하고, 라운드 키 생성 함수에 함수 Fj를 포함한다. 그 다음, 그 시퀀스의 수 라운드 후, 함수 Fi와 Fj는 역할을 바꾸고, 함수 Fi는 라운드 키 생성 함수에 포함되고, 함수 Fj는 라운드 믹싱 함수에 포함된다. 그러므로, 다음 표는 도 27 및 28에 도시된 바람직한 구현을 서술한다:
라운드 키 생성 라운드 함수
1 X Fi
2 Fj Fi
... Fj Fi
n Fj Fi
n+1 Fj Fi
n+2 Fj Fj
n+3 Fi Fj
... Fi Fj
n+m Fi Fj
n+m+1 Fi Fj
n+m+2 Fi Fj
지금부터, 도 21의 또 다른 대안의 바람직한 실시예의 시스템에 따라 구성되고 동작하는 8 라운드의 전형적인 페이스텔 블록 사이퍼의 간단한 블록 다이어그램 도면인, 도 29를 참조한다. 부가적으로, 도 21의 또 다른 대안의 바람직한 실시예의 시스템에 따라 구성되고 동작하는 8 라운드의 전형적인 AES-형 블록 사이퍼의 간단한 블록 다이어그램 도면인, 도 30을 참조한다.
도 29에 도시된 시스템의 오퍼레이션은 도 25를 참조하여 상술되었고, 도 30에 도시된 시스템의 오퍼레이션은 도 26을 참조하여 상술되었다.
도 29 및 30에 도시된 사이퍼에서, 두 라운드는 라운드 키 생성 함수에 함수 Fi를 포함하고, 라운드 믹싱 함수에 함수 Fj를 포함한다. 그 다음, 두 라운드 후, 함수 Fi와 Fj는 역할을 바꾸고, 다음 두 라운드 동안, 함수 Fi는 라운드 키 생성 함수에 포함되고, 함수 Fj는 라운드 믹싱 함수에 포함된다. 그러므로, 다음 표는 도 27 및 28에 도시된 바람직한 구현을 서술한다. 그러므로, 다음 표는 도 29 및 30에 도시된 바람직한 구현을 서술한다:
라운드 키 생성 라운드 키
1 X Fi
2 Fj Fi
3 Fj Fj
4 Fi Fj
5 Fi Fi
상술된 사이퍼 및 라운드로의 입력은 프리프로세싱을 포함할 수 있음이 이해될 것이다. 또한, 상술된 사이퍼 및 라운드의 출력은 포스트프로세싱을 포함할 수 있다.
본 발명의 소프트웨어 컴포넌트는, 원한다면, ROM 형태로 구현될 수 있음이 이해될 것이다. 소프트웨어 컴포넌트는 일반적으로, 원한다면, 종래의 기술을 사용하여 하드웨어로 구현될 수도 있다.
명료함을 위해, 개별 실시예의 구문에 서술된, 본 발명의 다양한 피처는 또한 단일 실시예에 결합하여 제공될 수 있음이 이해될 것이다. 이와 반대로, 간략함을 위해, 단일 실시예의 구문에 서술된 본 발명의 다양한 실시예는 임의의 적합한 하위결합으로, 또는 개별적으로 제공될 수도 있다.
부록 B
다음은 서펀트 사이퍼 명세의 부록 A.5에 나열된 바와 같은, S-박스, S0 내지 S7이다(www.ftp.cl.cam.ac.uk/ftp/users/rja14/serpent.pdf):
Figure pat00010
다음은 서펀트 사이퍼 명세의 부록 A.5에 나열된 바와 같은, 복호화를 위한, 인버스 S-박스, InvS0 내지 InvS7이다:
Figure pat00011
부록 C
블록 사이퍼 암호화 방법 및 시스템
(배경기술)
많은 암호화 방법이 공지되어 있다. 공지된 방법 중에서, 많은 방법이 평문의 블록이 소정의 룰에 따라 반복적으로 변경되는 블록 방법이고; 각각의 이러한 반복은 또한 "라운드"로 알려져 있다.
많은 블록 암호화 방법은 페이스텔 네트워크의 특별한 경우로 볼 수 있는데, 본 명세서에서, "페이스텔 사이퍼 방법", 또는 "페이스텔-형 사이퍼 방법"이라 하고; 페이스텔 사이퍼 방법의 단일 라운드는 본 명세서에서 "페이스텔 사이퍼 라운드"라 한다.
페이스텔 사이퍼는 'Handbook of Applied Cryptography'(A. Menezes, P. Van Oorschot, and S. Vanstone, CRC Press, 1996)에 서술되어 있다. 'Handbook of Applied Cryptography'(HAC)는 인터넷에서 (www.cacr.math.uwaterloo.ca/hac)에서 사용가능하다.
페이스텔 사이퍼는 r-라운드 프로세스를 통해 t-비트 블록 L0, 및 R0에 대하여, (두 파트, L0 및 R0를 포함하는) 평문을 암호문(Rr 및 Lr)으로 매핑하는 반복적인 블록 사이퍼이다, 이때 r≥1이다. 1≤i≤r에 대하여, 라운드 I는 키, Ki를 사용하여, (Li-1, Ri-1)를 (Li, Ri)로 매핑한다: Li=Ri-1, Ri=Li-1
Figure pat00012
f(Ri-1, Ki), 여기서, 각각의 서브키, Ki는 사이퍼 키, K(HAC)로부터 유도된다.
당업자들은 상기 정의가 동일한 크기의 블록, L0 및 R0에 대한 것이지만, 크기의 동일함이 필수요건이 아님이 이해할 것이다.
페이스텔 사이퍼의 복호화는 동일한 r-라운드 프로세스를 사용하지만, 서브키는 역순, Kr에서 K1으로 사용되어 달성된다.
페이스텔 네트워크의 경우인 블록 사이퍼 타입은 다음의 공지된 방법: DES, 루시퍼(Lucifer), FEAL, 쿠푸(Khufu), 카프레(Khafre), LOKI, GOST, CAST, 및 블로우피시를 포함한다.
페이스텔 사이퍼는 또한 'Applied Cryptography, Second Edition(B. Schneier, John Wiley and Sons, Inc., 1996)'의 페이지 347-351에 서술되어 있다.
DES는 FIPS 46-3에 서술되어 있고, 인터넷: 'csrc.nist.gov/publications/ fips./fips46-3/fips46-3.pdf'에서 사용가능하다.
FOX: 'A New Family of Block Ciphers, (Pascal Junod and Serge Vaudenay, Selected Areas in Cryptography 2004: Waterloo, Canada, August 9-10, 2004. Revised papers, Lecture Notes in Computer Science. Springer-Verlag)'는 FOX란 이름의, 'Lai-Massey' 스킴을 기초로 하는 새로운 종류의 블록 사이퍼의 설계를 서술한다. 이 설계의 메인 피처는, 매우 높은 보안 레벨과 더불어, 다양한 플랫폼에서의 큰 구현 유연성, 및 높은 성능이다. 또한, 강력하고 효율적인 키-스케줄 알고리즘의 새로운 설계가 제안되었다. FOX는 선형 및 미분형 암호분석에 대하여 안전한 증거가 제공된다.
'How to Construct Pseudorandom Permutations From Pseudorandom Function(M.Luby and C. RAckoff., SIAM Journal on Computing, 17:2, pp.373-386, April 1988)'은 의사난수 함수 제너레이터로부터 의사난수 비가역 전이 제너레이터를 효율적으로 구성하는 방법을 서술한다. 'Luby-Rackoff'에 서술된 실험 결과는 임의의 의사난수 비트 제너레이터가 암호시스템에 대한 강력한 공격 중 하나인, 선택된 평문 어택으로부터 보호하는 블록 프라이빗 키 암호시스템을 구성하기 위해 사용될 수 있다는 것이다.
(발명의 상세한 설명)
본 부록의 방법은 향상된 암호화 방법, 및 특히 페이스텔 암호화 방법에 관한 향상된 암호화 방법을 제공하기 위한 것이다. 본 부록에서, 페이스텔-형 사이퍼는 하드웨어로 용이하게 구현되도록, 그리고 소프트웨어 구현하기 어렵도록 설계되는 것이 바람직하다.
그러므로, 페이스텔-형 사이퍼의 모든 라운드 보다 적은 P-박스를 사용하는 향상된 페이스텔-형 사이퍼가 제공되어 있다.
P-박스는 페이스텔-형 사이퍼의 매 두번째 라운드에서 사용되는 것이 바람직하다.
페이스텔-형 사이퍼는 풀-사이즈 키, 및 적어도 하나 감소된 크기의 중간 키를 사용하고, 감소된 크기의 키의 크기가 특별한 하드웨어 없는 페이스텔-형 사이퍼의 구현이 비효율적이도록, 선택되는 것이 바람직하다.
중간 키의 크기는 2의 배수가 아닌 것이 바람직하다.
중간 키의 크기는 전형적으로 89이다.
평문 입력은 동일한 크기가 아닌 것이 바람직하다.
다른 바람직한 실시예에 따라, 제1P-박스, 및 제2P-박스를 사용하는 멀티-라운드 페이스텔-형 사이퍼가 제공되어 있고, 제1P-박스는 입력의 제1절반부에서 사용되고, 제2절반 입력이 페이스텔-형 사이퍼의 한 라운드에서 조정된 후, 제2P-박스는 입력의 제2절반부에서 사용된다.
(도면의 간단한 설명)
본 부록은 다음 도면을 참조하여 아래의 실시예로부터 더욱 완전히 이해하게 될 것이다.
도 31은 본 발명의 바람직한 실시예와 함께 사용하기 위한 강화된 페이스텔형 구조의 도면이고,
도 32는 도 31의 강화된 페이스텔형 구조의 대안의 바람직한 실시예의 도면이고,
도 33은 도 31의 시스템의 'MixKey' 함수의 바람직한 구현 방법의 간단한 블록 다이어그램이고, 그리고
도 34는 도 31의 시스템의 'CombParts' 함수의 간단한 블록 다이어그램이다.
(실시예)
지금부터, 본 발명의 바람직한 실시예와 함께 사용하기 위한 강화된 페이스텔-형구조의 도면인, 도 31을 참조한다. 도 31은 암호화 네트워크를 구현하기 위한 데이터 구조 및 방법의 도면을 제공하고, 이 도면은 공지된 포맷으로 그려져 있다. 당업자들은, 도 34를 참조하여 아래 서술된 바와 같이, 도시된 암호화 네트워크의 데이터 구조 및 방법이 특수용 하드웨어 내에 구현되거나, 범용 하드웨어와 결합된 소프트웨어에 구현되거나, 또는 임의의 적합한 이들의 조합 내에 구현될 수 있다. 본 부록에 서술된 시스템/방법은 임의의 이러한 적합한 구현을 사용하는 구현을 포함한다.
도 31은 2 라운드의 강화된 페이스텔-형 구조(2100)를 도시하고, 둘 이상의 라운드를 포함하는 복수의 라운드는 페이스텔-형 네트워크의 경우에서 종래기술로 공지된 복수의 라운드와 유사한 것이 바람직함이 이해될 것이다.
강화된 페이스텔-형 구조(2100)의 각각의 라운드에서, 평문의 두 절반부, 좌반부, L 및 우반부, R은 'MixKey' 함수(2110) 및 'CombParts' 함수(2120)에 의해 오퍼레이팅된다. 'MixKey' 함수(2110)의 바람직한 오퍼레이션 방법은 도 34를 참조하여 아래에 서술되어 있다. 각각의 라운드, L 및 R은 64비트의 동일한 크기를 가지는 것이 바람직함이 이해될 것이다. L 및 R은 임의의 동일한 크기일 수 있고, 본 명세서에서 예로서 64비트가 사용되었음이 이해될 것이다.
복수의 라운드는 L 및 R의 프리프로세싱에 의해 선행되는 것이 바람직함이 이해될 것이다. 예를 들어, L 및 R은 DES 블록 사이퍼가 제1라운드 전에 입력을 전이하는 것과 동일한 방법으로 소정의 순서에 따라 전이되는 것이 바람직하다(FIPS 46-3라 함). 또한, 복수의 라운드가 완료된 후, 강화된 페이스텔-형 구조(2100)의 암호화된 출력은 포스트-프로세싱될 수 있다. 예를 들어, 출력은 DES 블록 사이퍼가 16 라운드 후 상태를 전이하는 것과 동일한 방법으로 소정의 순서에 따라 더 전이되는 것이 바람직할 수 있다(FIPS 46-3이라 함).
또한, 강화된 페이스텔-형 구조(2100)의 제1라운드, 및 마지막 라운드, 및 강화된 페이스텔-형 구조(2100)의 다른 라운드는 서로 상이할 수 있고, 복수의 라운드 중 다른 라운드와 상이할 수 있다.
적어도 매 두 라운드 후, L 및 R은 전이-박스(P-박스)(2130)로 입력된다. L 및 R은 매 라운드 후 P-박스(2130)로 입력될 수 있음이 이해될 것이다. 그러나, 페이스텔-형 구조(2100)의 특성으로 인해, 이러한 솔루션은 L 및 R이 매 둘 이상의 라운드마다 P-박스(2130)에 입력되는 솔루션 보다 덜 안전하다. 당업자들은 매 라운드 마다 P-박스(2130)로의 입력이 적어도 두 라운드 동안 수 개의 비트가 변하지 않게 할 수 있으이 이해될 것이다. 그러므로, 둘 이상의 라운드 후 P-박스(2130)로의 입력이 페이스텔-형 구조(2100)의 더 안전한 구현이다.
몇몇 바람직한 실시예에서, R은 옵션으로써 P-박스(2130)로 입력되지 않을 수도 있다.
P-박스는 공지된 암호화 구조이다. 전형적으로, P-박스는 암호문 메시지로 전이를 도입하기 위해 사용된다. P-박스(2130)는 다음과 같이 동작하는 비트 전이 루틴을 포함하는 것이 바람직하다:
L 및 R을 연관시키고;
L 및 R을 포함하는 비트를 전이시키고;
전이 결과를 생성하고; 그리고,
그 결과를 L 및 R의 다음 반복으로 나눈다.
매 두 라운드마다 P-박스(2130)를 구현하는 것은 페이스텔-형 구조(2100)를 소프트웨어로 구현하기 더 어렵게 만듦이 이해될 것이다.
바람직한 실시예에서, 20 내지 50 사이의 라운드가 구현된다. 라운드의 정확한 개수는 'Reduce' 함수로서, 도 33을 참조하여 서술된, 함수의 오퍼레이션에 따른다.
한 바람직한 구현에서, (도시되지 않은) 128 비트 키는 복수의 라운드 키(2190)를 생성하기 위해 사용되는 것이 바람직하고, 여기서 각각의 라운드 키(2190)는 하나의 페이스텔 라운드에서 사용된다. 전형적인 라운드의 개수는 46이다. 라운드 키(2190) 생성은 ("FOX: A New Family of Block Ciphers", P.Junod and S. Vaudenay, SAC 2004에 서술되어 있는) KS128 알고리즘과 같은 키 확장 알고리즘을 통해 수행되는 것이 바람직하다. 각각의 라운드 키(2190)는 100비트, 146비트, 또는 임의의 다른 적합한 비트 크기를 포함할 수 있다.
지금부터, 도 31의 대안의 바람직한 실시예의 강화된 페이스텔-형 구조(2100)의 도면인, 도 32를 참조한다. 도 32에 도시된, 대안의 바람직한 실시예의 강화된 페이스텔-형 구조(2100)에서, 강하된 페이스텔-형 구조(2100)는 도 31에서와 동일하게 구현된다. 그러나 L 및 R을 P-박스(2130)로 입력(도 31)하지 않고, 'CombParts' 함수(2120)의 출력이 P-박스 PLi(2160)로 입력되고, Ri는 옵션으로서 P-박스 PRi(2170)로 입력된다. PLi(2160) 및 PRi(2170)는 {1,...,64}의 순서이다.
'MixKey' 함수가 의사난수인 것을 가정한, 'Luby and Rackoff', (How to Construct Pseudorandom Permutations From Pseudorandom Function(M.Luby and C. RAckoff., SIAM Journal on Computing, 17:2, pp.373-386, April 1988)에 증명된 바와 같이, 'CombParts' 오퍼레이터로서 XOR 오퍼레이터를 사용하는 페이스텔-형 구조는 의사난수 함수를 제공한다. 당업자들은 XOR 오퍼레이터를 상이한 'CombParts' 오퍼레이터로 교체하는 것이 그 증명의 정확도를 보존할 것임이 이해될 것이다. 매 둘 이상의 라운드 후 P-박스를 적용하는 것은 여전히 안전한 것으로 증명되지 않았다.
지금부터, 도 31의 시스템의 'MixKey' 함수(2110)의 바람직한 구현의 간단한 블록 다이어그램인 도 33을 참조한다. 'MixKey' 함수(2110)는 'CombParts' 함수(2120)로의 64비트 입력을 생성하기 위해 라운드 키(2230)를 64비트 우반부와 통합하는 것이 바람직하다.
몇몇 바람직한 실시예에서, 복수의 다양한 종류의 'MixKey' 함수(2110)가 구현된다. 제한하지 않는 예로서, 제1종류의 'MixKey' 함수(2110)가 수 라운드 동안 사용된 후, 제2종류의 'MixKey' 함수(2110)가 수 라운드 동안 사용된다. 상이한 종류의 'MixKey' 함수(2110)를 구현하는 대안의 제한하지 않는 예로서, 순환적으로 구현될 수 있다. 예를 들어, 3개의 상이한 종류의 'MixKey' 함수(2110)가 존재한다면, 'MixKey' 함수(2110)는 먼저 제1종류의 'MixKey' 함수(2110)를 사용하고, 그 다음 제2종류의 'MixKey' 함수(2110)를 사용하고, 그 다음, 제3종류의 'MixKey' 함수(2110)를 사용하여 구현될 수 있다. 제3종류의 'MixKey' 함수(2110)가 사용된 후, 제1종류가 순환 방식으로 다시 사용된다. 앞선 예에서, 3개의 상이한 구현 'MixKey' 함수(2110)는 예시일 뿐이며, 임의의 다른 적합한 개수의 'MixKey' 함수(2110)의 구현이 사용될 수 있음이 이해될 것이다.
'MixKey' 함수(2110)는 다음의 3개의 하위함수를 포함하는 것이 바람직하다:
'RExpansion'(2210);
'CombKey'(2220);
'Reduce'(2240).
'MixKey' 함수(2110)의 구현은 상이한 종류의 3개의 하위함수 'RExpansion'(2210), 'CombKey'(2220), 및 'Reduce'(2240)를 사용함으로써, 달라질 수 있다.
'RExpansion'(2210)는 평문, R의 우반부를 89비트로 확장한다. 당업자들은 'RExpansion'(2210)에 의해 89비트를 출력하는 것이 89가 2배수가 아닌, 의도적인 선택임이 이해될 것이다. 그러므로, 암호화 및 복호화는 하드웨어보다 소프트웨어에서 더 어려울 것이다. 또한, 임의의 다른 크기가 'RExpansion'(2210)의 출력 크기로 사용될 수 있음이 이해될 것이나, 그 크기는 특별한 하드웨어 없이 암호화 및 복호화가 어렵도록 홀수의 비트인 것이 바람직하다.
'RExpansion'(2210)의 한 바람직한 실시예에서, 'RExpansion'(2210)는 89비트 중간값을 생성하기 위해 25입력 비트의 소정의 세트를 복사하는 것이 바람직하다. 89비트의 중간값은 라운드 키(2230)와 함께 결합하기 위해 'CombKey'(2220)로 전송된다. 'RExpansion'(2210)의 몇몇 바람직한 구현에서, 소정의 세트는 라운드 마다 고유할 수 있음이 이해될 것이다. 'RExpansion'(2210)의 다른 바람직한 실시예에서, 'RExpansion'(2210)은 입력 비트의 소정의 세트 상에 XOR을 실행함으로써, R 상에 확장 선형 변환을 실행하는 것이 바람직하다. 'RExpansion'(2210)의 또 다른 바람직한 실시에에서, 'RExpansion'(2210)은 25 입력 비트의 소정의 세트를 복사하고, 25 입력 비트의 소정의 세트를, XOR로, 전이한다.
'RExpansion'(2210)의 또 다른 바람직한 실시예에서, 'RExpansion'(2210)은
각각의 출력 비트가 두 입력 비트의 XOR의 결과이고, 각각의 입력 비트가 하나 또는 두 개의 출력 비트에 영향을 미치도록, 희소 선형 변환(sparse linear transformation)을 포함하는 것이 바람직하다.
바람직하게는, 상이한 종류의 'RExpansion'(2210)이 상이한 라운드에서 사용될 수 있도록, 복수의 종류의 'RExpansion'(2210)이 존재한다.
'CombKey'(2220)는 89비트의 중간값을 라운드 키(2230)와 결합하는 오퍼레이션을 수행하는 것이 바람직하다. 임의의 적합한 가역 오퍼레이션이 사용될 수 있다. 몇몇 바람직한 구현에서, 라운드 키(2230)의 크기는 'RExpansion'(2210)의 출력의 크기와 동일한 것이 바람직하고, 결합 오퍼레이션은 비트단위의 XOR을 포함하는 것이 바람직하다. 다른 바람직한 구현에서, 결합 오퍼레이션은 몇몇 상수의 덧셈 및 뺄셈 모듈 중 하나를 포함하는 것이 바람직하다. 'CombKey'(2220)는 'Reduce'(2240)로 입력되는 결과를 출력하는 것이 바람직하다.
'Reduce'(2240)는 'CombKey'의 출력을 64비트의 결과값으로 줄이는 것이 바람직하다. 'Reduce' 함수(2240)는 'Reduce' 함수(2240)가 특별한 하드웨어 없이 효과적으로 구현하기 어렵고, 특별한 하드웨어에서 구현하기 쉬운 방식으로 설계되는 것이 바람직하다. 'Reduce' 함수(2240)는 복수의 레이어로 배열된, 복수의 AND, OR, 및 NOR 게이트를 포함하는 것이 바람직하다. 복수의 레이어의 게이트 중 각각의 하나 다음에, 결과적인 비트 세트는 치환되고, 복수의 레이어의 게이트의 다음 레이어로 입력되는 것이 바람직하다.
또한, 각각의 출력 비트는 밸런싱되도록 가까운 것이 바람직하다. 더욱 상세하게는, 균일 분포의 입력 비트가 주어졌을 때, 임의의 출력 비트가 1의 값을 가질 확률은 1/2이다. 각각의 출력 비트는 입력 비트의 작은 서브셋이 고정값을 포함할 때 조차도 가까운 것이 바람직하다.
또한, 각각의 출력 비트 함수는 선형 근사법(linear approximations)을 포함하지 않는다. 더욱 상세하게, 모든 선형 오퍼레이터 L 에 대하여, 각각의 출력 비트에 대하여, 균일 분포의 입력 비트라 가정했을 때, 주어진 출력 비트가 대응 입력 비트 상의 오퍼레이터 L를 적용한 결과와 동일할 확률은 1/2에 근접하는 것이 바람직하다.
'Reduce' 함수는 (2240) 복수의 인스턴스가 존재하여, 상이한 인스턴스의 'Reduce' 함수(2240)는 상이한 라운드에서 사용될 수 있는 것이 바람직하다.
'Reduce' 함수(2240)의 몇몇 바람직한 구현에서, 'Reduce' 함수(2240)는 다음 중 하나일 수 있음이 이해될 것이다: 모든 라운드에 대하여 동일하다; 모든 라운드에 대하여 고유하다; 홀수 및 짝수 라운드에 대하여 상이하게 선택된다; 그리고, 'Reduce' 함수(2240)의 인스턴스의 임의의 다른 적합한 조합.
'Reduce' 함수(2240)는 20-50 레이어의 작은 함수를 포함하여 구현되는 것이 바람직하고, 각각의 작은 함수들은 'Reduce' 함수(2240)가 구성되는 빌딩 블록으로서 역할한다. 각각의 작은 함수는 밸런싱된 함수, BF, 및 비선형 함수, NLF를사용하는 것이 바람직하다. 제1스테이지에서, NLF는 적어도 하나의 비트 상에 실행되고, 그로 인해, 출력, Q를 산출하는 것이 바람직하다. NLF를 실행한 후, BF는 Q, 및 적어도 제2입력 비트 상에 실행되는 것이 바람직하다.
'Reduce' 함수(2240)의 구현에 사용된 적합한 빌딩 블록인, 3-비트 입력을 프로세싱하는 적합한 작은 함수의 제한하지 않는 예는 다음을 포함한다:
(input1 OR input2)
Figure pat00013
input3; 및
NOT((input1 AND input2)
Figure pat00014
input3).
제2레이어 내의 'Reduce' 함수(2240)의 구현은, 입력으로서, 제1레이어 내의 'Reduce' 함수(2240)의 출력을 취한다. 제2레이어 내의 'Reduce' 함수(2240)로 입력되는 제1레이어의 출력의 선택은 레이어 간에 최대 믹싱하는 방법으로, 실행되는 것이 바람직하다.
'MixKey'(2110)의 임의의 바람직한 구현에서, 4 내지 6개의 'Reduce' 함수(2240)의 풀이 사용가능한 것이 바람직하다. 4 내지 6개의 'Reduce' 함수(2240)는 소정의 순서로 사용되어, 각각의 라운드에서, 그 풀 중 하나의 'Reduce' 함수(2240)만이 사용된다. 제한하지 않는 예를 들자면, 20 라운드가 존재하고, A, B, C, D로 표시된, 4개의 'Reduce' 함수(2240)가 존재한다면, 'Reduce' 'Reduce' 함수(2240A)는 1-5라운드 동안 사용되고, 함수(2240B)는 5-10라운드 동안 사용되는 식이다. 대안으로서, 'Reduce' 함수(2240A)는 1, 6, 11, 및 16 라운드 동안 사용되고, 'Reduce' 함수(2240B)는 2, 7, 12, 및 17 라운드 동안 사용되고, 'Reduce' 함수(2240C)는 3, 8, 13, 및 18 라운드 동안 사용되고, 'Reduce' 함수(2240D)는 4, 9, 14, 및 19 라운드 동안 사용되고, 그리고, 'Reduce' 함수(2240E)는 5, 10, 15, 및 20 라운드 동안 사용될 수 있다. 4 내지 6개의 'Reduce' 함수(2240)의 임의의 다른 적합한 배열이 사용가능함이 이해될 것이다.
지금부터, 도 31의 시스템의 'CombParts' 함수(2120)의 간단한 블록 다이어그램인, 도 34를 참조한다. 'CombParts' 함수(2120)는 'MixKey'(2110)의 64비트 결과와 변경되지 않은 64비트를 결합하고, 그로 인해, 새로운 의사난수 64비트 R을 산출하는 것이 바람직하다.
'CombParts' 함수(2120)는 다음과 같이 구현되는 것이 바람직하다:
'CombParts' 함수(2120)는 고정된 제1파라미터에 대한 제2파라미터에 대하여 비가역이다. 즉, 모든 X 및 Y에 대하여, ICombParts(X, CombParts(X, Y))= Y이도록 하는, ICombParts 함수가 존재해야 한다.
'CombParts'는 인볼루션이 아니어야 한다: 즉, 'ICombParts'는 'CombParts'와 상당히 상이한 것이 바람직하다. 더욱 상세하게는, (DES에 구현된 것과 같은) XOR과 같은 함수는 수용할 수 없을 것이다.
'MixKey'(2110)의 비트 결과는 'splitter'(2310)로 입력되는 것이 바람직하다. 이와 유사하게, 64비트의 변경되지 않은 L은 'splitter'(2315)로 입력된다. 'splitter'(2310) 및 'splitter'(2315)는 그들의 각각의 입력을 각각의 크기가 2 내지 4비트인 작은 서브-블록으로 분할하는 것이 바람직하다. 몇몇 바람직한 구현에서, 'splitter'(2310)는 'MixKey'(2110)의 64비트 결과는 16개의 4비트 서브 블록으로 분할하는 것이 바람직하고, 'splitter'(2315)는 64비트의 변경되지 않은 L을 16개의 4비트 서브 블록으로 분할하는 것이 바람직하다.
'splitter'(2310)로부터의 각각의 서브 블록, 및 'splitter'(2315)로부터의 대응 서브-블록은 복수의 'SubComb' 함수(2320) 중 하나로 입력되는 것이 바람직하다. 몇몇 바람직한 실시예에서, 16개의 'SubComb' 함수(2320)가 존재하고, 다른 바람직한 실시예에서, 32개의 'SubComb' 함수(2320)가 존재하고, 또 다른 바람직한 실시예에서, 임의의 다른 개수의 'SubComb' 함수(2320)가 존재함이 이해될 것이다.
'SubComb' 함수(2320)는 다음과 같이 구현되는 것이 바람직하다:
모든 제1입력에 대하여, 'SubComb' 함수(2320)는 제2입력에 관하여 가역인 것이 바람직하고, 그리고,
'splitter'(2315)로부터의 입력 비트의 효과의 분포는 'Join' 함수(2330)로의 출력에서 최소화되는 것이 바람직하다.
각각의 입력 비트는 최대 개수의 출력 비트에 영향을 미친다. 즉, 하나의 랜덤 비트를 선택하고; 그 선택된 비트를 제외한 모든 입력 비트를 포함한 서브셋의 입력 비트를 취하고; 랜덤 값을 선택하고; 그리고 그 서브셋 내의 비트를 선택된 랜덤 값으로 고정한 때, '1'로 선택된 비트를 가진 그 입력 비트에 대하여 'SubComb'(2320)를 계산한 결과의 확률은 '0'으로 선택된 비트를 가진 입력 비트에 대하여 'SubComb'(2320)를 계산한 결과의 확률과 동일하고, 1/2에 가깝다.
'SubComb'(2320)의 몇몇 바람직한 구현의 아래 설명에서, 'SubComb'(2320)가 두 개의 k-비트 입력, 및 하나의 k-비트 출력을 수신하는 것으로 가정한다. 'MixKey'(2110)로 부터의 입력 비트를 본 부록에서 데이터 비트라 하고, L로부터의 입력 비트를 컨트롤 비트라 한다. k는 2 내지 8 사이의 작은 정수인 것이 바람직하다.
'SubComb'(2320)의 한 바람직한 구현은 데이터 비트 2k에 대응하는 이진수에 컨트롤 비트에 대응하는 이진수를 수학적으로 더하는 것을 포함한다. 작은 k에 대하여 상술된 수학적 오퍼레이션을 실행하는 것은 특별한 하드웨어에서 효율적으로 구현될 수 있음이 이해될 것이다.
'SubComb'(2320)의 역함수가 데이터 비트에 대응하는 이진수로부터 컨트롤 비트에 대응하는 이진수의 수학적 뺄셈의 결과를 포함함이 이해될 것이다.
'SubComb'(2320)의 제2의 바람직한 구현은 'MixKey'(2110)로부터의 입력 비트, 및 L로부터의 입력 비트 상에 선형 변환을 수행하고, 4비트의 임시 결과를 생성하는 것이 바람직하다. 그 다음, 4비트의 임시 결과는 4비트-투-4비트 S-박스ㄹ로 입력되는 것이 바람직하다(S-박스는 암호화 구조로 알려져 있다. 예컨대, FIPS 46-3 참조).
'SubComb'(2320)의 제3의 바람직한 구현은 다음의 함수를 포함한다:
1. 제1입력에 대하여, B1=b11, b12, 및 제2입력에 대하여, B2=b21, b22, temp=b21, b22.
2. b11=1이면, temp를 한 위치 쉬프트하여, temp=b22,b21이다.
3. b12=1이면, temp에 비트단위의 부정("NOT" 게이트)을 적용한다.
4. temp를 출력한다.
몇몇 바람직한 실시예에서, 'SubComb'(2320)의 제2 및 제3의 바람직한 구현이 모두 구현됨이 이해될 것이다.
'SubComb' 함수로의 더 큰 입력에에 더욱 적합한, 'SubComb'(2320)의 제4의 바람직한 실시예는, 예컨대, 입력이 두 개의 4-16비트의 백터일 때, 한 도메인의 비가역 선형 변환에 컨트롤 입력의 매핑을 정의하는 것을 포함한다. 제한하지 않는 예로서, 이 매핑은 동일한 변환과 함께 시작하는 것, 그리고, 컨트롤 비트와 함께 임의의 위치로 이동시키는 것을 포함한다. 이동된 위치가 프라이머리 사선 상에 선택된 때, 선형 변환은 비가역으로 유지된다. 예를 들어, L(B11, B12, B13, B14)에 대하여, 다음을 사용한다:
[ 1 B11 0 B14 ]
[ 0 1 B12 0 ]
[ 0 0 1 B13 ]
[ 0 0 0 1 ]
그러므로, 'SubComb'(2320)의 출력이 제2입력 상의 결과적인 변환의 어플리케이션일 것임이 이해될 것이다.
'Join' 함수(2330)는 복수의 'SubComb' 함수(2320)의 출력의 연결로 구현되는 것이 바람직하다.
몇몇 바람직한 실시예에서, S-박스, 선현 변환, 또는 수학적 덧셈에 의해 유도될 수 있는 임의의 위치 효과를 피하기 위해, 'CombParts'(2120)로부터의 출력은 비트 단위의 전이를 겪는다(P-박스(2130)(도 31)).
'CombParts'(2120)가 페이스텔-형 구조(2100)에 의한 복호화와 페이스텔-형 구조(2100)에 의한 암호화를 상이하게 만듦이 이해될 것이다. 그러므로, 제한하지 않는 예로서, 고객 디바이스 내의 복호기는 복호화된 컨텐츠를 재암호화할 수 없다.
본 발명의 소프트웨어 컴포넌트는, 원한다면, ROM 형태로 구현될 수 있음이 이해될 것이다. 소프트웨어 컴포넌트는, 일반적으로, 종래의 기술을 사용하여, 원한다면, 하드웨어로 구현될 수 있다.
명료함을 위해, 개별 실시예의 구문에 서술된, 본 발명의 다양한 피처는 또한 단일 실시예에 결합하여 제공될 수 있음이 이해될 것이다. 이와 반대로, 간략함을 위해, 단일 실시예의 구문에 서술된 본 발명의 다양한 실시예는 임의의 적합한 하위결합으로, 또는 개별적으로 제공될 수도 있다.

Claims (9)

  1. 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템으로서,
    상기 블록 각각에 대하여, 상기 블록 사이퍼의 제1쌍 사이에, 상기 평문과 상기 암호문 사이의 값인 제1중간값이 있도록, 상기 평문과 상기 암호문 사이에서 공동으로 암호화/복호화하기 위해 복수의 블록 사이퍼를 갖춘 암호화/복호화 모듈; 및
    상기 블록의 제1블록에 대한, 상기 루트 키 및 초기화 벡터; 및 상기 제1블록 이외의 다른 블록에 대한, 상기 블록의 이전 값의 제1중간값, 및 상기 루트 키를 포함하는 복수의 입력을 가진 함수를 기초로 하는 블록 각각에 대하여 상기 입력 키를 결정하기 위한 암호화/복호화 키 모듈을 포함하고 있고,
    적어도 하나의 상기 사이퍼는 입력 키를 기초로 암호화/복호화를 실행하는 것을 특징으로 하는 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템.
  2. 제 1 항에 있어서,
    상기 암호화/복호화 모듈은 적어도 3개의 블록 사이퍼를 포함하여, 상기 평문과 상기 암호문 사이에서의 암호화/복호화가 상기 적어도 3개의 블록 사이퍼에 의해 공동으로 실행되는 것을 특징으로 하는 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템.
  3. 제 2 항에 있어서,
    상기 블록 사이퍼의 제2쌍 사이에, 상기 블록 각각에 대하여, 상기 평문과 상기 암호문 사이 값인 제2중간값이 존재하고, 상기 암호/복호 키 모듈은 상기 제1블록과 다른 블록에 대하여, 상기 입력 키를 판단하도록 동작하여, 상기 함수의 상기 입력 중 하나는 또한 이전 하나의 블록의 상기 제2중간값을 포함하는 것을 특징으로 하는 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템.
  4. 제 1 항에 있어서,
    상기 이전의 하나의 블록은 상기 블록 중 이전의 마지막 프로세싱된 블록인 것을 특징으로 하는 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템.
  5. 제 1 항에 있어서,
    상기 블록 각각은 블록 인덱스를 가지고 있고, 상기 블록 각각의 상기 입력 키는 또한 상기 블록 인덱스를 기초로 하는 것을 특징으로 하는 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템.
  6. 제 1 항에 있어서,
    상기 암호화/복호화 입력 키 모듈은 상기 블록 각각의 상기 입력 키가 블록 카운터를 기초로 하도록, 프로세싱된 상기 블록의 개수의 블록 카운터를 유지하기 위한 카운터 모듈을 포함하는 것을 특징으로 하는 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 블록 각각의 상기 입력 키는 XOR 함수를 사용하여 결정되는 것을 특징으로 하는 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템.
  8. 제 1 항 내지 제 6항 중 어느 한 항에 있어서,
    상기 블록의 각각의 상기 입력 키는 암호 해시 함수를 사용하여 결정되는 것을 특징으로 하는 각각의 블록이 일정한 루트 키와 연관되어 있는, 복수의 블록을 평문과 암호문 사이에서 암호화/복호화하기 위한 블록 사이퍼 시스템.
  9. 복수의 블록을 가진 패킷이 적어도 하나의 일정한 루트 키와 연관되고, 복수의 블록을 암호문과 평문 사이에서 암호화/복호화하도록 블록 사이퍼를 오퍼레이팅하는 방법으로서,
    상기 블록 각각에 대하여, 상기 블록 사이퍼의 제1쌍 사이에, 상기 평문과 상기 암호문 사이의 값인 제1중간값이 있도록, 상기 평문과 상기 암호문 사이에서 공동으로 암호화/복호화하기 위해 복수의 블록 사이퍼를 제공하는 단계;
    복수의 입력을 가진 함수를 기초로 블록 각각에 대한 입력 키를 결정하는 단계; 및
    상기 입력 키를 기초로 상기 블록 사이퍼 중 하나에 대한 암호화/복호화를 수행하는 단계를 포함하고,
    상기 복수의 입력은
    상기 블록 중 제1블록에 대하여, 상기 루트 키, 및 초기화 백터; 및
    상기 제1블록 외의 다른 블록에 대하여, 상기 블록의 이전의 블록의 제1중간값, 및 상기 루트 키를 포함하는 것을 특징으로 하는 복수의 블록을 가진 패킷이 적어도 하나의 일정한 루트 키와 연관되고, 복수의 블록을 암호문과 평문 사이에서 암호화/복호화하도록 블록 사이퍼를 오퍼레이팅하는 방법.
KR1020127023158A 2005-12-14 2006-12-04 블록 사이퍼 암호화의 사용을 위한 방법 및 시스템 KR20120115425A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
IL172578 2005-12-14
IL172578A IL172578A0 (en) 2005-12-14 2005-12-14 Method and system for usage of block cipher encryption
IL173863 2006-02-21
IL173863A IL173863A0 (en) 2006-02-21 2006-02-21 System and method for usage of block cipher encryption
IL175802 2006-05-21
IL175802A IL175802A0 (en) 2006-05-21 2006-05-21 Method and system for usage of block cipher encryption

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020087016937A Division KR20080080175A (ko) 2005-12-14 2006-12-04 블록 사이퍼 암호화의 사용을 위한 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR20120115425A true KR20120115425A (ko) 2012-10-17

Family

ID=38163322

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127023158A KR20120115425A (ko) 2005-12-14 2006-12-04 블록 사이퍼 암호화의 사용을 위한 방법 및 시스템
KR1020087016937A KR20080080175A (ko) 2005-12-14 2006-12-04 블록 사이퍼 암호화의 사용을 위한 방법 및 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020087016937A KR20080080175A (ko) 2005-12-14 2006-12-04 블록 사이퍼 암호화의 사용을 위한 방법 및 시스템

Country Status (6)

Country Link
US (1) US20090080647A1 (ko)
EP (1) EP1961140A4 (ko)
KR (2) KR20120115425A (ko)
AU (1) AU2006324920B2 (ko)
IL (2) IL191685A (ko)
WO (1) WO2007069236A2 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007120980A2 (en) 2006-02-17 2007-10-25 Rigel Pharmaceuticals, Inc. 2,4-pyrimidinediamine compounds for treating or preventing autoimmune diseases
US9361617B2 (en) * 2008-06-17 2016-06-07 Verifone, Inc. Variable-length cipher system and method
KR101520617B1 (ko) * 2007-04-17 2015-05-15 삼성전자주식회사 메시지의 무결성 유지를 위한 메시지 암호화 방법 및 장치,메시지의 무결성 유지를 위한 메시지 복호화 방법 및 장치
US20080263366A1 (en) * 2007-04-19 2008-10-23 Microsoft Corporation Self-verifying software to prevent reverse engineering and piracy
KR100930591B1 (ko) * 2007-12-10 2009-12-09 한국전자통신연구원 고속 세션 변경이 가능한 암호화 장치
JP4952627B2 (ja) * 2008-03-21 2012-06-13 富士通株式会社 画像処理装置、画像処理方法および画像処理プログラム
US20090245510A1 (en) * 2008-03-25 2009-10-01 Mathieu Ciet Block cipher with security intrinsic aspects
JPWO2010024003A1 (ja) * 2008-08-29 2012-01-26 日本電気株式会社 倍ブロック長ブロック暗号化装置、復号装置、暗号化方法及び復号方法、及びそのプログラム
US20100306553A1 (en) * 2009-06-01 2010-12-02 Poletti Iii Joseph William High-throughput cryptographic processing using parallel processing
FR2949010A1 (fr) * 2009-08-05 2011-02-11 St Microelectronics Rousset Procede de contremesure pour proteger des donnees memorisees
DE102009050493A1 (de) * 2009-10-23 2011-04-28 Röllgen, Bernd Blockdatenverschlüsselungsverfahren
US8862900B2 (en) * 2010-01-08 2014-10-14 The Research Foundation For The State University Of New York Secure distributed storage system and method
US8850410B2 (en) * 2010-01-29 2014-09-30 International Business Machines Corporation System using a unique marker with each software code-block
JP5704951B2 (ja) * 2011-02-10 2015-04-22 ソニー株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
KR101118826B1 (ko) * 2011-02-15 2012-04-20 한양대학교 산학협력단 물리적 공격을 방어하는 암호화 장치 및 암호화 방법
CN104067556B (zh) * 2012-01-19 2017-05-24 国际商业机器公司 用于确定自动机是否已经接受了字符串的系统
US9160525B2 (en) * 2013-07-19 2015-10-13 Qualcomm Incorporated Apparatus and method for key update for use in a block cipher algorithm
EP3084968A4 (en) * 2013-12-16 2017-11-29 McAfee, LLC Process efficient preprocessing for an encryption standard
US9515818B2 (en) * 2014-09-16 2016-12-06 Apple Inc. Multi-block cryptographic operation
US9252943B1 (en) * 2014-09-26 2016-02-02 The Boeing Company Parallelizable cipher construction
ES2717999T3 (es) * 2014-12-03 2019-06-26 Nagravision Sa Método criptográfico por bloques para cifrar/descifrar mensajes y dispositivos criptográficos para implementar este método
EP3089398B1 (en) * 2015-04-30 2017-10-11 Nxp B.V. Securing a cryptographic device
US11876889B2 (en) * 2015-09-03 2024-01-16 Fiske Software, Llc NADO cryptography with key generators
KR101989956B1 (ko) * 2015-10-29 2019-06-17 삼성에스디에스 주식회사 암호화 장치 및 방법
CN109218010B (zh) * 2017-07-04 2021-11-30 阿波罗智能技术(北京)有限公司 数据加密方法和装置、数据解密方法和装置
US10187200B1 (en) * 2017-12-18 2019-01-22 Secure Channels Inc. System and method for generating a multi-stage key for use in cryptographic operations
KR102038598B1 (ko) 2018-11-08 2019-10-30 국민대학교산학협력단 커플링 효과 대응형 암호화 장치 및 방법
US10454906B1 (en) 2019-01-31 2019-10-22 Re Formsnet, Llc Systems and methods for encryption and authentication
US11038677B2 (en) 2019-01-31 2021-06-15 Re Formsnet, Llc Systems and methods for encryption and authentication
US11283619B2 (en) * 2019-06-20 2022-03-22 The Boeing Company Bit mixer based parallel MAC and hash functions
KR102287962B1 (ko) 2019-09-30 2021-08-09 국민대학교 산학협력단 부채널 공격 대응이 용이한 128비트 경량 블록 암호화 방법 및 이를 이용한 장치
KR102169369B1 (ko) 2019-10-31 2020-10-23 국민대학교산학협력단 경량 블록 암호화에 대한 1차 부채널 공격에 대응하는 방법 및 이를 이용한 장치
KR102157219B1 (ko) 2019-10-31 2020-09-17 국민대학교산학협력단 경량 블록 암호화에 대한 고차 부채널 공격에 대응하는 방법 및 이를 이용한 장치
CN114095153A (zh) * 2020-08-05 2022-02-25 迈络思科技有限公司 密码数据通信装置
CN117134886B (zh) * 2023-08-21 2024-01-30 湖北大学 一种优化的fox算法线性层电路

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL9301784A (nl) * 1993-10-14 1995-05-01 Irdeto Bv Systeem voor het versleutelen en ontsleutelen van digitale informatie.
US5671283A (en) * 1995-06-08 1997-09-23 Wave Systems Corp. Secure communication system with cross linked cryptographic codes
ATE226772T1 (de) * 1996-09-03 2002-11-15 Siemens Ag Anordnung und verfahren zur kryptographischen bearbeitung eines digitalen datenstroms, der eine beliebige anzahl von daten aufweist
US6459792B2 (en) * 1997-04-23 2002-10-01 Matsushita Electric Industrial Co., Ltd. Block cipher using key data merged with an intermediate block generated from a previous block
US6307940B1 (en) * 1997-06-25 2001-10-23 Canon Kabushiki Kaisha Communication network for encrypting/deciphering communication text while updating encryption key, a communication terminal thereof, and a communication method thereof
US6055316A (en) * 1997-12-26 2000-04-25 Sun Microsystems, Inc. System and method for deriving an appropriate initialization vector for secure communications
JP2000066587A (ja) * 1998-08-24 2000-03-03 Toshiba Corp データ処理装置及び通信システム並びに記録媒体
JP3824121B2 (ja) * 1999-04-01 2006-09-20 株式会社日立製作所 暗号データの復号化処理方法および装置
US6820203B1 (en) * 1999-04-07 2004-11-16 Sony Corporation Security unit for use in memory card
EP1063811B1 (en) * 1999-06-22 2008-08-06 Hitachi, Ltd. Cryptographic apparatus and method
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
BR0104356A (pt) * 2000-01-21 2002-02-19 Sony Corp Aparelho, método e sistema de processamento de dados, métodos de comunicação de valor de verificação de dados, de geração de dados de conteúdo e de atribuição de valor de verificação de dados de conteúdo e meios de provisão e de suprimento de programa
US7046802B2 (en) * 2000-10-12 2006-05-16 Rogaway Phillip W Method and apparatus for facilitating efficient authenticated encryption
JP2002132141A (ja) * 2000-10-20 2002-05-09 Sony Corp データ記憶装置、およびデータ記録方法、データ再生方法、並びにプログラム提供媒体
JP2002202719A (ja) * 2000-11-06 2002-07-19 Sony Corp 暗号化装置及び方法、復号装置及び方法、並びに記憶媒体
US7360075B2 (en) * 2001-02-12 2008-04-15 Aventail Corporation, A Wholly Owned Subsidiary Of Sonicwall, Inc. Method and apparatus for providing secure streaming data transmission facilities using unreliable protocols
US7155011B2 (en) * 2001-03-13 2006-12-26 Victor Company Of Japan, Limited Encryption method, decryption method, and recording and reproducing apparatus
US7200227B2 (en) * 2001-07-30 2007-04-03 Phillip Rogaway Method and apparatus for facilitating efficient authenticated encryption
US20020076044A1 (en) * 2001-11-16 2002-06-20 Paul Pires Method of and system for encrypting messages, generating encryption keys and producing secure session keys
WO2004015916A1 (ja) * 2002-08-08 2004-02-19 Matsushita Electric Industrial Co., Ltd. 暗号化復号化装置及び方法、暗号化装置及び方法、復号化装置及び方法、並びに送受信装置
US7336783B2 (en) * 2003-01-24 2008-02-26 Samsung Electronics, C., Ltd. Cryptographic systems and methods supporting multiple modes
US20060269055A1 (en) * 2005-05-26 2006-11-30 International Business Machines Corporation Method and apparatus for improving performance and security of DES-CBC encryption algorithm
JP2007041223A (ja) * 2005-08-02 2007-02-15 Mitsubishi Electric Corp データ配信装置及びデータ通信システム
US7428306B2 (en) * 2006-04-18 2008-09-23 International Business Machines Corporation Encryption apparatus and method for providing an encrypted file system

Also Published As

Publication number Publication date
IL191685A0 (en) 2008-12-29
US20090080647A1 (en) 2009-03-26
EP1961140A2 (en) 2008-08-27
KR20080080175A (ko) 2008-09-02
AU2006324920B2 (en) 2010-08-12
IL219656A (en) 2013-02-28
WO2007069236A3 (en) 2009-04-16
IL219656A0 (en) 2012-06-28
IL191685A (en) 2012-07-31
EP1961140A4 (en) 2013-02-27
AU2006324920A1 (en) 2007-06-21
WO2007069236A2 (en) 2007-06-21

Similar Documents

Publication Publication Date Title
AU2006324920B2 (en) Method and system for usage of block cipher encryption
De Mulder et al. Cryptanalysis of the Xiao–Lai white-box AES implementation
AU2007232123B2 (en) Robust cipher design
US20120170739A1 (en) Method of diversification of a round function of an encryption algorithm
US8437470B2 (en) Method and system for block cipher encryption
WO2017203992A1 (ja) 暗号化装置、暗号化方法、復号化装置、及び復号化方法
KR20190020988A (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
Natarajan et al. A novel approach for data security enhancement using multi level encryption scheme
Patil et al. An enhancement in international data encryption algorithm for increasing security
Mohan et al. Revised aes and its modes of operation
GN et al. Blow-CAST-Fish: A New 64-bit Block Cipher
Hallappanavar et al. Efficient implementation of AES by modifying S-Box
Salman New method for encryption using mixing advanced encryption standard and blowfish algorithms
Kumari et al. An RTL Implementation of the Data Encryption Standard (DES)
Saeb The Chameleon Cipher-192 (CC-192)-A Polymorphic Cipher.
Hashim Type-3 Feistel Network of The 128-bits Block Size Improved Blowfish Cryptographic Encryption
Ali Proposed 256 bits RC5 Encryption Algorithm Using Type-3 Feistel Network
Hashim et al. Design and implementation of an improvement of Blowfish encryption algorithm
Lehmoud Proposed Hybrid Block Cipher Algorithm
WO2008117142A9 (en) Method and system for block cipher encryption
Megahed et al. Spread Spectrum Encryption Architecture SSEA: A New Encryption Architecture for Post Quantum Computing-Design and Analysis.
Das et al. A New Symmetric Key Cryptosystem Based on Feistel Network: Parallel Dependent Feistel Network (PDFN)
Network et al. Symmetric Cryptography
Encryption Symmetric Cryptography
Cipher THE CHAMELEON CIPHER-192 (CC-192)

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application