KR100415410B1 - 암호화 장치 및 방법과, 연산장치 및, 복호화 장치 및 방법 - Google Patents

암호화 장치 및 방법과, 연산장치 및, 복호화 장치 및 방법 Download PDF

Info

Publication number
KR100415410B1
KR100415410B1 KR10-2001-0011395A KR20010011395A KR100415410B1 KR 100415410 B1 KR100415410 B1 KR 100415410B1 KR 20010011395 A KR20010011395 A KR 20010011395A KR 100415410 B1 KR100415410 B1 KR 100415410B1
Authority
KR
South Korea
Prior art keywords
data
bit
linear
nonlinear conversion
output
Prior art date
Application number
KR10-2001-0011395A
Other languages
English (en)
Other versions
KR20010087344A (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 KR20010087344A publication Critical patent/KR20010087344A/ko
Application granted granted Critical
Publication of KR100415410B1 publication Critical patent/KR100415410B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/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
    • 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)
  • Storage Device Security (AREA)
  • Facsimile Transmission Control (AREA)

Abstract

블록 데이터를 암호화 하는 장치는, 블록 데이터를 복수로 분할하여 얻어진 부분마다 국소적인 확산을 행하는 제1처리부와, 제1처리부로부터 출력된 블록 데이터에 대해 부분보다 넓은 범위의 확산을 행하는 제2처리부로 이루어지고, 제1처리부는 블록 데이터를 복수로 분할하여 얻어진 부분 데이터의 각각에 비선형 변환처리를 시행하는 복수의 제1비선형 처리부를 구비하고, 제2처리부는 복수의 제1비선형 처리부로부터 출력된 블록 데이터에 대해 부분 데이터보다 넓은 범위의 데이터에 선형 확산처리를 시행하는 제1선형 확산처리부를 구비하고, 제1비선형 변환처리부의 적어도 일부는, 부분 데이터를 복수로 분할하여 얻어진 세분 데이터의 각각에 비선형 변환처리를 시행하는 복수의 제2비선형 처리부와, 복수의 제2비선형 처리부로부터 출력된 부분 데이터에 대해 세분 데이터보다 넓은 범위의 데이터에 선형 확산처리를 시행하는 제2선형 확산처리부를 구비한다.

Description

암호화 장치 및 방법과, 연산장치 및, 복호화 장치 및 방법{ENCRYPTION DEVICE AND METHOD, ARITHMETIC UNIT, AND DECRYPTION DEVICE AND METHOD}
본 발명은, 블록 암호방식에 의한 암호화 장치 및 암호화 방법, 그 복호화 장치 및 복호방법, 및 암호화·복호화 장치에 사용되는 연산장치에 관한 것이다.
공통키 블록암호의 대표적인 기본구조로 SPN형과 Feistel형이 있다. 각각에 대해 차분/선형 해독법에 대한 강도평가와 내성을 높이는 설계법이 연구되고 있다(문헌[1]V.Rijmen, J.Daemen, B.Preneel, A.Bosselaers, E.DcWin, "The Cipher SHARK," Fast Software Encryption, LNCS 1039, 1996., 문헌[2] 아오끼 카즈마루, 오오타 가즈오, "최대평균차분확률 및 최대평균선형확률의 보다 엄밀한 평가," SCIS 96-4A, 1996. 문헌[3] 마츠이 미찌루, "블록암호 MISTY," ISEC 96-11, 1996.,).
SPN형의 기본구조에서는, 활성 S-box수의 보증이 가능하기 때문에, 설정한 강도를 달성하기 위한 단수결정을 하기가 쉽다(문헌[1]). 그러나, 블록·크기가 커져 S-box의 병렬도가 상승하면, 확산층의 처리가 복잡해져, 속도가 저하되는 경향이 있다.
이러한 점을 개선한 것이, SQUARE/Rijndael형의 암호이다(문헌[4]J.Daemen, L.R.Knudsen, V.Rijmen, "The Block Cipher Square," Fast Software Encryption, LNCS 1267, 1997., 문헌[5]J.Daemen, V.Rijmen," AES Proposal: Rijndael," http://www.east.kuleuven.ac.be/~rijmen/rijdael/rijndaeldocV2.zip).
이러한 형의 암호에서는, 16개의 병렬 S-box를 4×4의 행렬형태로 나란히 하여 선형확산을 동일렬 내로 제한함으로써 처리를 경감하고 있다. 또한, 선형확산에 바이트 위치의 변경을 조합함으로써, 어떤 단의 1바이트의 영향은 2단 후에 모든 바이트로 확대되고, 4단에서 활성 S-box수는 25이상(차분/선형 해독에 대해 강하다고 함)을 달성하고 있다.
그러나, 동일렬 내의 바이트가 다음의 단에서 혼합하지 않는다는 성질이 있기 때문에, SQUARE 공격이라는 전용의 공격법이 존재한다(문헌[1], 문헌[5]). 이것은, 확산층이 1종류라는 제약하에서, 강도와 효율의 양립을 주목한 결과라고 생각할 수 있다.
결국, 종래의 블록 암호방식에 있어서는, SPN형 구조는 활성 S-box수의 하한의 견적이 용이하고, 차분/선형 해독법에 대한 강도를 보증한 설계가 가능하여, 공격에 강하다는 점에서 우수하다고 할 수 있다. 그러나, 평문/암호문의 블록·크기의 증가에 따라, S-box의 병렬도가 높아지면, 확산층의 결합부의 계산 코스트(cost)도 높아진다는 결점이 있었다. 또한, 확산층의 설계에 의해 데이터 확산이 균일하게 되지 않을 가능성이 있었다.
본 발명은 상기한 점을 감안하여 이루어진 것으로, 계산 코스트를 억제한 채 높고 균일한 확산을 가능하게 하는 암호화 장치 및 암호화 방법, 그 복호화 장치 및 복호방법 및 그에 사용되는 연산장치를 제공하는 것에 그 목적이 있다.
도 1은 본 발명에 의한 암호방식의 제1실시예의 기본적인 구성에 대해 설명하기 위한 도면,
도 2는 암호강도에 관해 설명하기 위한 도면,
도 3은 중첩형 암호방식의 데이터 확산부(diffusing part)의 계층구조의 예를 나타낸 도면,
도 4는 암호화 장치의 구성예를 나타낸 도면,
도 5는 S-box의 일예를 나타낸 도면,
도 6은 확대S-box의 내부 구성예를 나타낸 도면,
도 7은 소(小)MDS의 일예를 나타낸 도면,
도 8은 데이터 확산부의 1단의 구조예를 나타낸 도면,
도 9는 대(大)MDS의 일예를 나타낸 도면,
도 10은 대(大)MDS의 다른 예를 나타낸 도면,
도 11은 키 스케쥴부의 구성예를 나타낸 도면,
도 12는 키 스케쥴부의 다른 구성예를 나타낸 도면,
도 13은 비선형 변환층의 내부구성의 일예를 나타낸 도면,
도 14는 비선형 변환층의 내부구성의 다른 예를 나타낸 도면,
도 15는 가산정수표의 일예를 나타낸 도면,
도 16은 유한체 승산장치의 구성예를 나타낸 도면,
도 17은 선형 변환장치의 구성예를 나타낸 도면,
도 18은 선형 변환장치의 구성예를 나타낸 도면,
도 19는 MDS행렬 생성장치의 구성예를 나타낸 도면,
도 20은 MDS행렬 생성처리순서의 일예를 나타낸 순서도,
도 21은 MDS행렬 생성장치의 다른 구성예를 나타낸 도면,
도 22는 MDS행렬 생성처리순서의 다른 예를 나타낸 순서도,
도 23은 S-box와 소MDS의 조합을 선택하기 위한 처리순서의 일예를 나타낸 순서도,
도 24는 복호화 장치의 구성예를 나타낸 도면,
도 25는 확대S-box의 역변환의 내부 구성예를 나타낸 도면,
도 26은 데이터 확산부의 1단의 구조예를 나타낸 도면,
도 27은 키 스케쥴부의 구성예를 나타낸 도면,
도 28은 본 발명에 의한 암호방식의 제2실시예의 기본적인 구성에 대해 설명하기 위한 도면,
도 29는 제2실시예에 있어서의 데이터 확산부의 1단의 다른 구조예를 나타낸 도면,
도 30은 대MDS의 또 다른 예를 나타낸 도면,
도 31은 GF (24) 상의 승산의 결선표현을 나타낸 도면,
도 32는 대MDS의 또 다른 예를 나타낸 도면,
도 33은 대MDS에 있어서의 재정규화(renormalization)에 대해 설명하기 위한 도면,
도 34는 대MDS의 또 다른 예를 나타낸 도면,
도 35는 키 스케쥴부의 또 다른 구성예를 나타낸 도면,
도 36은 키 스케쥴부의 또 다른 구성예를 나타낸 도면,
도 37은 가산정수표의 다른 예를 나타낸 도면,
도 38은 복호화 장치의 다른 구성예를 나타낸 도면,
도 39는 데이터 확산부의 1단의 역변환의 다른 구조예를 나타낸 도면,
도 40은 키 스케쥴부의 복호시의 다른 구성예를 나타낸 도면,
도 41은 암호방식을 이용한 시스템의 일예를 나타낸 도면,
도 42는 암호방식을 이용한 시스템의 다른 예를 나타낸 도면,
도 43은 암호방식을 이용한 시스템의 또 다른 예를 나타낸 도면이다.
상기한 바와 같은 목적을 달성하기 위한 본 발명에 따른 블록 암호방식에 의한 암호화 장치는, 제1데이터 폭의 블록 데이터가 복수로 분할된 제2데이터 폭의 각 부분 데이터에 대해 각각 비선형 변환처리를 시행하는 제1처리부와, 상기 제1처리부로부터의 각 부분 데이터로 이루어진 제1데이터 폭의 블록 데이터에 대해 선형 확산처리를 시행하는 제2처리부를 구비하며, 상기 제1처리부의 전부 또는 일부는, 각각, 제2데이터 폭의 상기 부분 데이터가 더 복수로 분할된 제3데이터 폭의 각 부분에 대해 각각 비선형 변환처리를 시행하는 복수의 비선형 변환처리부와, 상기 복수의 비선형 변환처리부로부터의 각 부분으로 이루어진 제2데이터 폭의 부분 데이터에 대해 선형 확산처리를 시행하는 선형 확산처리부를 포함한 것을 특징으로 한다.
또한, 본 발명에 따른 블록 데이터를 암호화 하는 암호화 장치는, 초단에서는 입력된 128비트의 평문 블록 데이터를, 2단째 이하에서는 전단에서의 처리가 시행된 128비트의 블록 데이터를 입력으로 하고, 그 블록 데이터를 4분할 한 4조의 32비트·데이터에 대해 각각 국소적인 선형 확산처리 및 비선형 변환처리를 시행하여 출력하는 4개의 제1비선형 변환처리부와, 이들 4개의 제1비선형 변환처리부로부터 각각 출력된 4조의 32비트·데이터를 연결한 128비트의 블록 데이터에 대해 최대거리 분리행렬을 이용하여 선형 확산처리를 시행하여 다음 단으로 출력하는 제1확산 처리부로 이루어지고, 직렬접속된 복수의 단 섹션과, 상기 직렬접속된 복수의 단 섹션의 최후의 단 섹션의 후단에 접속되고, 상기 단 섹션으로부터 출력되는 128비트의 블록 데이터를 입력으로 하고, 그 블록 데이터를 4분할 한 4조의 32비트·데이터에 대해 각각 국소적인 선형 확산처리 및 비선형 변환처리를 시행하여 출력하는 4개의 제2비선형 변환처리부 및, 상기 4개의 제2비선형 변환처리부의 후단에 접속되고, 이들 4개의 제2비선형 변환처리부로부터 각각 출력된 4조의 32비트·데이터를 연결한 128비트의 블록 데이터에 대해 128비트의 키 데이터를 가산하여 128비트의 암호화 된 블록 데이터로서 출력하는 제1키 가산부를 구비하고; 상기 제1비선형 변환처리부, 제2비선형 변환처리부의 각각은, 주어진 1조의 상기 32비트·데이터를 더 4분할 한 4조의 8비트·데이터에 대해 각각 8비트의 키 데이터를 가산하는 4개의 제2키 가산부와, 각 제2키 가산부의 출력에 대해 각각 8비트의 입출력 변환표를 이용하여 비선형 변환을 행하는 4개의 제2비선형 변환처리부, 이들 4개의 제2비선형 변환처리부로부터 각각 출력된 4조의 8비트·데이터를 연결한 32비트·데이터에 대해 최대거리 분리행렬을 이용하여 선형 확산처리를 시행하는 제2확산처리부 및, 상기 제2확산처리부의 후단에 더 접속된 4조의 상기 제2키 가산부 및 제3비선형 변환처리부를 포함한 것을 특징으로 한다.
또한, 본 발명에 따른 블록 데이터를 암호화 하는 암호화 장치는, 초단에서는 입력된 64비트의 평문 블록 데이터를, 2단째 이하에서는 전단에서의 처리가 시행된 64비트의 블록 데이터를 입력으로 하고, 그 블록 데이터를 4분할 한 2조의 32비트·데이터에 대해 각각 국소적인 선형 확산처리 및 비선형 변환처리를 시행하여 출력하는 4개의 제1비선형 변환처리부와, 이들 4개의 제1비선형 변환처리부로부터 각각 출력된 2조의 32비트·데이터를 연결한 64비트의 블록 데이터에 대해 최대거리 분리행렬을 이용하여 선형 확산처리를 시행하여 다음 단으로 출력하는 제1확산 처리부로 이루어지고, 직렬접속된 복수의 단 섹션과, 상기 직렬접속된 복수의 단 섹션의 최후의 단 섹션의 후단에 접속되고, 상기 단 섹션으로부터 출력되는 64비트의 블록 데이터를 입력으로 하고, 그 블록 데이터를 4분할 한 2조의 32비트·데이터에 대해 각각 국소적인 선형 확산처리 및 비선형 변환처리를 시행하여 출력하는 4개의 제2비선형 변환처리부 및, 상기 4개의 제2비선형 변환처리부의 후단에 접속되고, 이들 4개의 제2비선형 변환처리부로부터 각각 출력된 2조의 32비트·데이터를 연결한 64비트의 블록 데이터에 대해 64비트의 키 데이터를 가산하여 64비트의 암호화 된 블록 데이터로서 출력하는 제1키 가산부를 구비하고; 상기 제1비선형 변환처리부, 제2비선형 변환처리부의 각각은, 주어진 1조의 상기 32비트·데이터를 더 4분할 한 2조의 8비트·데이터에 대해 각각 8비트의 키 데이터를 가산하는 4개의 제2키 가산부와, 각 제2키 가산부의 출력에 대해 각각 8비트의 입출력 변환표를 이용하여 비선형 변환을 행하는 4개의 제2비선형 변환처리부, 이들 4개의 제2비선형 변환처리부로부터 각각 출력된 2조의 8비트·데이터를 연결한 32비트·데이터에 대해 최대거리 분리행렬을 이용하여 선형 확산처리를 시행하는 제2확산처리부 및, 상기 제2확산처리부의 후단에 더 접속된 2조의 상기 제2키 가산부 및 제3비선형 변환처리부를 포함한 것을 특징으로 한다.
또한, 본 발명에 따른 블록 암호방식에 의한 암호화 방법은, 제1데이터 폭의 블록 데이터가 복수로 분할된 제2데이터 폭의 각 부분 데이터에 대해 각각 비선형 변환처리를 시행하는 제1처리를 시행하고, 상기 제1처리로부터의 각 부분 데이터로 이루어진 제1데이터 폭의 블록 데이터에 대해 선형 확산처리를 시행하는 제2처리를 시행하며, 상기 제1처리의 전부 또는 일부는, 각각, 제2데이터 폭의 상기 부분 데이터가 더 복수로 분할된 제3데이터 폭의 각 부분에 대해 각각 비선형 변환처리를 시행하는 복수의 비선형 변환처리를 시행하고, 상기 복수의 비선형 변환처리로부터의 각 부분으로 이루어진 제2데이터 폭의 부분 데이터에 대해 선형 확산처리를 시행하는 선형 확산처리를 포함한 것을 특징으로 한다.
또한, 본 발명에 따른 블록 데이터 암호화 장치에 이용되고, 블록 데이터를 최대거리 분리행렬을 이용하여 확산하는 연산장치는, 블록 데이터를 복수로 분할하여 얻어진 부분 데이터의 대응하는 비트위치의 데이터와 최대거리 분리행렬의 각 요소를, 자릿수 넘침을 고려하지 않고 승산하는 승산기와, 부분 데이터의 상위 소정 비트와, 자릿수 넘침을 조정하기 위한 귀환워드와의 대응관계를 미리 복수 규정하는 테이블 및, 상기 부분 데이터의 상위 소정 비트를 키로서 상기 테이블로부터 자릿수 넘침을 조정하기 위한 귀환워드를 독출하고, 상기 승산수단에 의한 승산결과와, 독출된 귀환워드와의 배타합을 취하는 회로를 구비하고, 상기 배타합 회로의 출력이 자릿수 넘침이 고려된 승산결과로 되는 것을 특징으로 한다.
또한, 본 발명에 따른 블록 암호방식에 의한 복호화 장치는, 제1데이터 폭의 블록 데이터가 복수로 분할된 제2데이터 폭의 각 부분 데이터에 대해 각각 비선형 변환처리를 시행하는 제1처리부와, 상기 제1처리부로부터의 각 부분 데이터로 이루어진 제1데이터 폭의 블록 데이터에 대해 선형 확산처리를 시행하는 제2처리부를 구비하며, 상기 제1처리부의 전부 또는 일부는, 각각, 제2데이터 폭의 상기 부분 데이터가 더 복수로 분할된 제3데이터 폭의 각 부분에 대해 각각 비선형 변환처리를 시행하는 복수의 비선형 변환처리부와, 상기 복수의 비선형 변환처리부로부터의 각 부분으로 이루어진 제2데이터 폭의 부분 데이터에 대해 선형 확산처리를 시행하는 선형 확산처리부를 포함한 것을 특징으로 한다.
더욱이, 본 발명에 따른 블록 암호방식에 의한 복호화 방법은, 제1데이터 폭의 블록 데이터가 복수로 분할된 제2데이터 폭의 각 부분 데이터에 대해 각각 비선형 변환처리를 시행하는 제1처리를 시행하고, 상기 제1처리로부터의 각 부분 데이터로 이루어진 제1데이터 폭의 블록 데이터에 대해 선형 확산처리를 시행하는 제2처리를 시행하며, 상기 제1처리의 전부 또는 일부는, 각각, 제2데이터 폭의 상기 부분 데이터가 더 복수로 분할된 제3데이터 폭의 각 부분에 대해 각각 비선형 변환처리를 복수 시행하고, 상기 복수의 비선형 변환처리로부터의 각 부분으로 이루어진 제2데이터 폭의 부분 데이터에 대해 선형 확산처리를 시행하는 것을 포함한 것을 특징으로 한다.
(실시예)
이하, 본 발명의 실시예를 도면을 참조하면서 상세히 설명한다. 여기에서는, 국소적인 확산(소(小)확산)과, 블록폭에 이르는 확산(대(大)확산)과의 조합에 의한, 중첩형(재귀적) SPN구조의 암호방식에 대해 설명한다. 이하의 설명에서는, 우선 암호화를 중심으로 설명하고, 그 후에 복호에 대해 설명한다. 더욱이, 복호 알고리즘은 암호 알고리즘의 역변환이고, 키는 암호화와 복호에서 공통의 비밀키이다. 또한, 본 암호방식은 하드웨어에 의해서도 소프트웨어에 의해서도 실현가능하고, 이하에 나타낸 구성예는 암호화 장치(복호화 장치)의 기능 블록도로서도 성립하고, 또한 암호 알고리즘(복호 알고리즘)의 기능 모듈도로서도 성립한다.
도 1에 중첩형(재귀적) SPN구조의 암호방식(암호화 장치(또는 복호화 장치)) 또는 암호 알고리즘(또는 복호 알고리즘), 암호처리장치)의 기본적인 구성예를 나타낸다.
도 1에 나타낸 바와 같이, 중첩형 SPN구조에서는 각 단에 있어서 병렬로 나열된 복수의 비선형 변환모듈(2; 후술의 예에서는 확대S-box)의 각각에 의해 국소적인 소확산을 행하고, 이어서 확산모듈(3; 후술의 예에서는 대(大)MDS)에 의해 블록폭에 이르는 대확산을 행하고, 또한 비선형 변환모듈(2)에 의해 국소적인 소확산을 행하며, …라는 것을 소정 단수 반복한다. 비선형 변환모듈(2)은, 비선형 변환모듈(4; 후술의 예에서는 S-box)과 확산모듈(5; 후술의 예에서는 소(小)MDS)을 교대로 배열하여 구성된다. 즉, 본 실시예의 중첩형 SPN구조는 통상의 SPN구조의 S-box의 부분에 소형의 SPN구조(후술의 예에서는 2단의 SPN구조)를 재귀적으로 채워넣은 것이다.
이와 같은 중첩형 SPN구조에 의하면, 브렌치수를 계층적으로 보증할수 있고(브렌치수의 계층성), 활성 S-box수의 하한을 용이하게 보증할 수 있다는 우수한 특질(特質)이 얻어진다. 또한, 중첩형 SPN구조에는, 이 외에 단순 명쾌한 구조이기 때문에 강도평가가 쉬워진다는 특성이 있다.
도 1에서는, 국소적인 소확산을 4개의 병렬의 비선형 변환모듈(2)로 표시하고 있지만, 병렬수는 4로 한정되는 것이 아니라, 그 이외의 병렬수도 가능하다. 또한, 4개의 병렬의 비선형 변환모듈(2)의 비트수를 동일하게 하고 있지만, 이에 한정되는 것이 아니라, 다른 비트수의 비선형 변환모듈(2)을 복수 조합시킨 것도 가능하다. 또한, 이 경우에 모든 비선형 변환모듈(2)의 비트길이를 다르게 해도 되고, 일부의 소확산의 비트길이는 동일해도 된다. 또한, 1종류의 확산모듈(3)을 이용하고 있지만, 2종류 이상의 확산모듈(3)을 이용하는 것도 가능하다. 예컨대, 블록폭에 이르는 확산모듈(3)을, 1개 건너, 2개의 비선형 변환모듈(2)에 이르는 확산모듈로 바꾸어도 된다. 또한, 동일한 구성의 반복구조로 하는 방법 외에, 일부만 구성을 바꾸는 것도 가능하다.
더욱이, 모든 비선형 변환모듈(2)의 구성을 동일한 구성으로 하는 것도, 비선형 변환모듈(2)에 대해, 다른 구성을 혼재(混在)시키는 것도 가능하다. 이 점은, 확산모듈(3), 비선형 변환모듈(4), 확산모듈(5)의 각각에 대해서도 마찬가지이다. 예컨대, 최초의 입력단과, 최후의 출력단만, 다른 중간단과는 다른 내부구성으로 해도 된다. 또한, 2계층의 중첩구조이지만, 3계층 이상의 중첩구조도 가능하다(3계층의 경우, 예컨대 비선형 변환모듈(4)을 더 SPN구조로 한다). 또한, 예컨대 비선형 변환모듈(2)에 의해 계층구조를 다르게 하는 것도 가능하다. 이 외에도, 여러가지의 변경이 고려된다.
이하에서는, 8비트 S-box를 이용한 AES 상당의 128비트·블록암호의 구체예를 이용하면서 본 실시예에 대해 설명한다.
우선, 블록암호의 강도평가에 관해 설명한다.
주어진 함수 f의 암호강도를 견적하는 중요한 지표로서 최대차분확률/최대선형확률이 있다.
함수 f(x)에 대해, 최대차분확률 dpf와 최대선형확률 1pf는 각각 이하의 식으로 표시된다.
[수 1]
여기서, Δx는 입력x의 차분, Γ는 x의 마스크치, Δy는 출력y의 차분을 나타낸다.
일반적으로는, 최대차분확률(dpf)이나 최대선형확률(1pf)을 구하는 것이 곤란한 경우가 많다. 여기서, 그 근사치로서 최대차분특성확률(DPf) 및 최대선형특성확률(LPf)로 안전성을 평가한다.
본 실시예에서는, 중첩형 SPN구조를 암호화 함수로서 이용한다. 여기서는, 그 기본구조인 SPS구조의 특성에 대해 기술한다. 여기서, SPS라는 것은 S-box층과 확산층 P를 S-P-S와 같이 3층 겹쳐진 구조를 나타낸다.
SPS구조는 2단 SPN구조라고도 간주할 수 있다.
SPS구조에 있어서 입력x에 대한 확산층의 출력이 θ(x)인 경우, 차분 해독에 대한 브렌치수 B는 이하의 식으로 정의한다(문헌[1], 문헌[6] 기요미즈 히데오, 가나꼬 도시노브, "공통키 암호의 확산층에 대해," SCIS 99-72, 1999.).
[수 2]
여기서, w( )는 S-box의 비트폭을 부호길이로 한 해밍거리(hamming distance)이다. 비영(非零)의 입출력차분에 접속하는 S-box를 활성S-box라 부른다.
확산층의 입출력에 S-box를 접속한 구조를 SPS구조라 부른다. S-box가 전단사(全單射)인 경우, SPS구조로의 입력비트에 비영의 차분을 갖는 것이 1개라도 있으면, 브렌치수의 정의에 의해, 활성S-box는 브렌치수 이상(즉, B 이상)으로 된다. 또한, S-box의 최대차분확률을 ps라 하면, SPS구조의 최대차분특성확률은 상계치 ps B를 넘지 않는다.
SPS구조의 S층으로서 M개의 병렬의 S-box를 이용한 경우, 그것들을 결합하는 확산층의 브렌치수는 (M+1) 이하이고, 브렌치수가 (M+1)을 만족하는 선형변환을 MDS(Maximum Distance Separable; 최대거리 분리)행렬이라 부른다.
확산층이 MDS행렬인 경우, SPS구조의 최대차분특성확률은 상계치(ps M+1)를 넘지 않는다[문헌1]. 마찬가지로, S-box의 최대선형확률을 qs라 하면, SPS구조의 최대선형특성확률은 qs M+1를 넘지 않는다.
2단 SPN구조를 그 보다 큰 SPN구조의 S-box로서 이용할 경우, 확대S-box(소구조)라 부르는 것으로 한다. 여기서, S-box는 M1개의 병렬이고, 확대S-box 내의 확산층의 브렌치수를 B1이라 한다. 확대S-box에 대한 M2개의 병렬의 2단 SPN구조(대구조)를 고려하여, 그 확산층의 브렌치수를 B2라 한다. 이 경우, 대구조중의 활성S-box수는 하계치 B1×B2를 하회하지 않는다. 이 성질을 브렌치수의 계층성이라 칭한다.
또한, 대소 2종류의 확산층의 양쪽이 MDS행렬일 경우, 활성S-box수는 (M1+1)×(M2+1)을 하회하지 않는다. 이에 의해, 중첩형의 SPN구조의 DPf, LPf의 상한을 억제하는 것이 가능해진다.
도 2에, M1=M2=4인 경우의 2단 SPN구조의 일예를 나타낸다. 15가 후술하는 대MDS행렬에 의한 확산부를 나타내고, 11~14가 그 입력측의 확대S-box를 나타내고, 16~19가 그 출력측의 확대S-box를 나타내며, 각각의 확대S-box 내에 있어서, 20이 후술하는 소MDS에 의한 확산부를 나타내고, 도면중에서 가장 작게 표시한 직사각형 21, 22가 입력측 및 출력측의 S-box를 나타낸다.
도 2에 있어서, S-box중 해칭(hatching)한 것은 활성을 나타내고(도면중 21 참조), 백발(白拔)로 나타낸 것은 차분 영(零; zero)을 나타낸다(도면중 22 참조). 또한, 굵은선으로 나타낸 확대S-box(11, 13, 16, 17, 19)는 활성을 나타내고, 그 외의 확대S-box(12, 14, 18)는 차분 영을 나타낸다. 4단에서 활성S-box가 25개 이상인 것을 알 수 있다.
이와 같이, 본 예의 암호에서는 2단에서 5×5=25개 이상의 활성S-box수를 보증할 수 있다. S-box의 최대차분확률은,
ps=6/256,
2단에서의 차분특성확률은,
ps 25=2-135.4<<2-128,
로 되고, 차분 해독법이 유효하지 않은 것을 알 수 있다.
마찬가지로, 선형특성확률에 대해서도,
qs=22/256,
qs 25=2-88.5<<2-64,
로 되고, 선형 해독법이 유효하지 않은 것을 알 수 있다.
더욱이, 종래의 SQUARE/Rijndael형 암호에 적용되는 SQUARE 공격은, 단(段) 내의 1바이트에 대해, 다른 입력을 고정한 채로, 28정도의 모든 패턴을 입력한 경우, 2단 통과후의 출력 바이트의 각각에 대해 28정도의 모든 패턴이 출현하는 특성을 이용하는 것이지만, 본 예의 암호에서는, 예컨대 후술하는 대MDS의 취하는 방법에 의해 S-box간의 확산성을 향상시킴으로써, 그 단순한 적용을 곤란하게 하고 있다.
이하에서는, 중첩형 암호방식의 구체예를 이용하면서 본 실시예에 대해 보다 상세하게 설명한다.
본 실시예의 구체예의 구성에 대해 설명한다.
도 3에, 본 실시예의 중첩형 암호방식의 데이터 확산부의 계층구조의 예를 나타낸다.
블록길이는, 128비트를 예로 든다(물론, 다른 블록길이에서도 본 발명은 실시가능하다). 키길이는, 256비트를 예로 든다(물론, 다른 키길이에서도 본 발명은 실시가능하다). 블록길이를 128비트로 한 경우에, 키길이를 128비트나 192비트로 한 경우에 대해서는 후술한다.
병렬된 복수의 확대S-box와 대MDS와의 쌍(단, 후술하는 바와 같이 최종단은 대MDS를 포함하지 않는다)을 1단으로 계산하는 것으로 한 경우에, 단수를 R단으로 표시하고, 구체예를 이용할 경우에는 R=8을 이용한다. 더욱이, 기본적으로는 단수는 어느 단에서도 실시가능하지만, 실제의 단수는 예컨대 안전성이나 계산기 자원 등을 상정하여 적당히 설정하는 것이 가능하고, 바람직하게는 6단 이상, 보다 바람직하게는 8단 이상으로 하면 보다 효과적이다.
더욱이, 본 예의 암호에서는 단함수가 S-box층을 2층 포함하고 있기 때문에, 1단이 통상의 2단에 상당한다. 단 구조내의 대MDS에 대해서는, 다른 갈로아체에 기초하여 몇가지의 실장을 나타낸다(강도 우선이나 속도 우선의 예를 들 수 있다).
도 4에, 본 실시예에 따른 암호화 장치의 구성예를 나타낸다.
101이 각 단의 처리부(단함수)이고, 104는 대MDS 확산층, 102는 확대S-box층, 103은 각각의 확대S-box이다. 105는 배타적 논리합부이다. 121은 키 스케쥴부(상세한 설명은 후술한다)의 1단분이다. P는 입력으로 되는 128비트의 평문 데이터, C는 출력으로 되는 128비트의 암호문 데이터이다.
단함수(101)는, 이하에 기술한 바와 같이, 2단 SPN구조로 이루어진 32비트 처리 서브·블록(103; 확대S-box)을 4개 병렬로 늘어놓고, 이들의 출력을 MDS 확산층(104)에서 결합한 구조이다. 전체의 기본구조는, 이 단함수(101)의 반복으로 한다.
더욱이, 도 4의 예에서는 암호화와 복호의 처리를 대칭적으로 하기 위해, 최종단은 확대S-box층(102)과 그 후의 키 가산기(105)만으로 구성하는 것으로 하고 있다.
단함수 1단에 2단의 SPN구조가 채워넣어지고, 최후에 키 가산이 행해지기 때문에, 확대키의 비트길이는 2×128×R+128=128(2R+1)로 된다. R=8의 경우에는 128×17비트로 된다.
다음에, S-box에 대해 설명한다.
본 예의 암호에서는, 입출력표에서 정의하는 8비트 S-box를 이용한다.
도 5에, 8비트 S-box의 입출력표의 일예를 나타낸다. 도 5에 있어서, 배열요소는 16진수로 표현하고 있다.
도 5의 표는 가장 좌측상의 값 "72"가 s[0]에 대응하고, 그 하나 우측의 값 "AA"가 s[1]에 대응하고, 그 행의 우측 끝의 값 "9F"가 s[15]에 대응하고, 다음 행으로 이동하여, 그 좌측 끝의 값 "69"가 s[16]에 대응하고, 그 하나 우측의 값 "6A"가 [17]에 대응하며, 이하 마찬가지의 요령이다. 그리고, 최하 우측의 값 "57"이 [255]에 대응한다.
도 5에 예시한 S-box의 특성은, 다음과 같다.
· 최대차분확률: 6/256(이론적 최소치는 4/256)
· 최대선형확률: 22/256(이론적 최소치는 16/256)
· 대수차수: 7차(전단사 함수의 최대치)
더욱이, S-box에는 입출력표를 이용하는 대신에, 연산처리를 이용해도 된다.
다음에, 각각의 확대S-box(또는, 소구조라고도 부른다)의 부분에 대해 설명한다.
도 6에, 확대S-box(103)의 내부 구성예를 나타낸다. 이 예에서는, 4개의 병렬의 8비트 S-box(112; 도 5 참조)를 2조 준비하고, 확산층(113)을 사이에 끼운 2단 SPN구조로 되어 있다. 이 구조는, SPS구조라고 부를 수도 있지만, 2단째의 확산층이 생략된 특수한 2단 SPN구조로 간주한다. S-box(112)의 입력치 전에는 키 가산기(111)가 설치된다. 확대S-box 내의 확산층(113)에는, MDS행렬을 사용하고, 이를 소MDS라고 부르고, MDSS로 표기한다. 소MDS의 브렌치수는 5이다.
도 7에, 본 예의 암호에 이용하는 MDSS행렬의 일예를 나타낸다. 도 7에 있어서, 행렬요소는 16진수로 표현하고 있다. 여기서, S-box 입출력과 행렬요소는, 승산의 경우, 갈로아체 GF(28)의 원(元)으로 간주한다. 이 예의 경우의 원시 다항식은, x8+ x6+ x5+ x + 1이다.
다음에, 본 예의 암호의 단함수인 대구조에 대해 설명한다.
도 8에, 1단의 부분(101)의 구성예를 나타낸다. 본 예의 암호의 단함수인 대구조(101)는, 4개의 병렬의 32비트 확대S-box(103; 도 6 참조)를 MDS행렬의 확산층(104)에서 결합하여 구성한다. 이 단함수인 대구조(101)에 있어서의 확산층(104)에도, MDS행렬을 사용하고, 이를 대MDS라 부르고, MDSL로 표기한다. 단, 여기서의 MDS행렬은, 확대S-box에 주목한 브렌치수가 5인 것을 의미한다.
대MDS의 가장 단순한 구성은, 확대S-box의 32비트폭의 출력을 GF(232)의 원(元)으로서 실현하는 방법이다. 이 방법은, 높은 강도를 실현하기 쉽지만, 일반적인 실행은 곤란하고 또 고속화가 어렵다. 그래서, 이 경우에는 대MDS행렬에 제약을 주는 것이 바람직하다.
또한, 4개의 병렬의 MDS를 구성하는데는, 4비트폭으로 충분하고, GF(24)상의 연산을 이용하여 실현할 수 있다. 더욱이, MDS를 순회적인 것으로 함으로써, 효율적인 계산이 가능해진다.
또한, 실제로는 이 이외의 GF(28)이나 GF(216)를 이용하는 중간형도 가능하다.
GF(232)를 이용한 대MDS에 대해 설명한다.
이 경우, 확대S-box의 입출력을 GF(232)의 원(元)으로 간주하고, 대구조 MDS를 설계한다. 이는, SPN구조에서의 자연스런 설계법이다. 그러나, 32비트폭에서는 승산표에 의한 실장은 현실적이지 않다. 계산에 의한 경우도 일반적인 MDS행렬에서는 계산량이 부과되어 고속화가 곤란하다. 계산량이 증가하는 원인은, 갈로아체상의 승산에 있어서의 자릿수 올림의 경우 처리가 느리기 때문이다. 계산량을 억제하기 위해서는, 대MDS행렬을, 비트표현으로 32비트중 하위 5비트에만 1이 나타나는(하위 5비트 이외에는 0으로 한정한) 요소로 구성하는 방법이 있다. 이와 같은 조건을 만족하는 행렬을 사용함으로써, 자릿수 올림의 처리를 상위 4비트를 입력으로 하는 표 인용에 의해 처리 가능해진다.
도 9에, 대MDS행렬의 일예를 나타낸다. 이 예의 경우의 원시 다항식은 x32+ x28+ x27+ x + 1이다.
GF(24)을 이용한 대MDS에 대해 설명한다.
도 10에, 이 경우의 MDS행렬의 일예를 나타낸다. 이 예의 경우의 원시 다항식은 x4+ x + 1로 한다.
여기에서는, 1개의 확대S-box(103)에 있어서 4개의 S-box의 각각의 출력, 즉 8비트·데이터의 동일한 위치(예컨대, 도 10에서는 최상위비트를 예로 들어 나타내고 있다)의 1비트를 모아, 이를 1조 4비트의 데이터로 하고, 4개의 확대S-box(103)로부터의 4조의 4비트·데이터를 GF(24)의 원(元)으로 간주한다.
그리고, 8비트·데이터의 동일한 위치에 대해, 2단의 4개의 병렬 확대S-box층간의 확산층(104)에 4행 4열의 MDS행렬(예컨대, 도 10에서는 최상위비트의 경우, 104-1)을 이용한다.
출력으로 된 4조의 4비트·데이터는, 각각 대응하는 것과의 8비트·데이터의 동일한 위치에 결선된다.
S-box의 비트폭에 대응하여, 8개의 MDS행렬(104-1~104-8)을 준비하고, 각각을 대MDS로 한다.
이들의 4행 4열의 MDS행렬은, 각각 브렌치수 5를 보증한다. 각 MDS행렬은S-box중의 다른 비트위치에 접속하기 때문에, 전체로서도 브렌치수 5를 보증한다.
각 확대S-box의 동일한 위치의 S-box 출력을 단위로 한 표를 인용함으로써(더욱이, 연산에 의해서도 좋다), 8개의 MDS행렬을 동시에 처리하는 효율적인 실행이 가능하다.
더욱이, MDS행렬이 순회적인 경우, 32비트마다의 배타적 논리합과 8비트 단위의 비트회전을 조합한 효율적인 처리가 가능해진다.
더욱이, 상기와 같이 고려하는 것에 의해, 8비트·데이터중 동일한 위치의 2비트마다 처리를 행하는 것으로 하여, 각 요소가 8비트의 4행 4열의 MDS행렬(GF(28))을 4개 준비하여, 대MDS로 하는 것도 가능하다. 또한, 8비트·데이터중 동일한 위치의 4비트마다 처리를 행하는 것으로 하여, 각 요소가 16비트의 4행 4열의 MDS행렬(GF(216))을 2개 준비하여, 대MDS로 하는 것도 가능하다.
더욱이, 상기에서는 동일한 위치의 비트를 취출하여 처리를 행하는 것으로 설명했지만, 다른 위치의 비트를 (배타적으로) 취출하여 처리를 행하는 것도 가능하다. 도 10에서는, 확대S-box(103)를 4개 병렬로 하고 있지만, 이에 한정되는 것이 아니라, 그 이외의 병렬수도 가능하다. 또한, 확대S-box의 내부구성을 모두 동일하게 하지 않고, 다른 것을 혼재시키는 것도 가능하다. 또한, 모든 대MDS행렬을 동일하게 하지 않고, 다른 것을 혼재시키는 것도 가능하다. 이 점은, 소MDS행렬, S-box의 입출력표에 대해서도 마찬가지이다. 또한, 예컨대 최초의 입력단과, 최후의 출력단만, 그 외의 중간단과는 다른 내부구성으로 해도 된다. 이 외에도, 여러가지의 변경이 고려된다.
다음에, 키 스케쥴부(키 생성부)에 대해 설명한다.
도 11에, 키 스케쥴부의 구성예를 나타낸다. 121은 데이터 확산부의 단함수의 1단분에 대응하는 부분이고, 131은 선형 확산층(본 예에서는, 대MDS에 의한 확산층으로 한다)이고, 132는 비선형 변환층(본 예에서는, 4개의 병렬의 SP층(S-box층·확산층) 133으로 한다)이고, 134는 배타적 논리합부이며, 135는 잉여 가산부이다. 도 11에서는 생략하고 있지만, 121의 부분의 구성이 단수분 반복되는 것으로 된다. 더욱이, 128비트의 키를 출력하는 구성단위를 키 스케쥴부의 1개의 단으로 하면, 키 스케쥴부의 단수는 (2R+1)단으로 된다(R=8의 경우, 17단이다).
도 11의 예에서는, 256비트의 변형 Feistel형 반복처리의 각 단의 좌측출력 1/2의 128비트를 취출하고, 단수 의존정수 Ci를 잉여 가산하여 확대키로 한다.
더욱이, 키길이를 256비트로 할 경우에는, 예컨대 상위 128비트를 초단의 선형 확산층(131)에 인가하고, 하위 128비트를 비선형 변환층(132)에 인가하면 된다. 또한, 키길이를 128비트로 할 경우에는, 예컨대 그 128비트를 초단의 선형 확산층(131)에 인가함과 더불어, 비선형 변환층(132)에 인가하면 된다. 또한, 키길이를 192비트로 할 경우에는, 예컨대 상위 128비트를 초단의 선형 확산층(131)에 인가하고, 하위측 64비트와 상위측 64비트를 결합한 128비트를 비선형 변환층(132)에 인가하면 된다.
더욱이, 도 12와 같이, 단수 의존정수(Ci)를 잉여 가산하는 잉여 가산기(136)의 설치개소에 대해, 여러가지의 변경이 고려된다.
도 13에, 도 11이나 도 12에 있어서의 비선형 변환층(132)의 각각의 SP층(133)의 구성예를 나타낸다. 141은 S-box이고, 142는 4개의 병렬의 S-box를 입력으로 하는 소MDS이다.
더욱이, 이 S-box는 도 4의 암호 처리측의 S-box(도 5)와 동일한 것이어도 되고, 다른 것이어도 된다. 소MDS에 대해서도 마찬가지이다. 또한, 키 스케쥴부의 각 단에 따라 S-box나 소MDS의 구성을 변경하는 것도 가능하다.
도 14에, 도 11이나 도 12에 있어서의 비선형 변환층(132)의 각각의 SP층(133)의 다른 구성예를 나타낸다. 이 예는, 도 13의 구성에 대해 배타적 논리합부(143)를 부가한 것이다.
더욱이, 도 14에 있어서, S-box에 대한 입력과 배타적 논리합을 취한 정수를 단수 의존정수로 하는 구성도 가능하다.
다음에, 각 단에서 다른 정수(Ci)를 만드는 방법의 일예에 대해 설명한다.
도 11이나 도 12의 키 스케쥴부의 128비트의 가산정수(Ci)는, 4개의 비트정수(H0, H1, H2, H3)의 조합으로 기술할 수 있다. 32비트의 정수(Hi)의 일예를 이하에 나타낸다.
H0= (5A827999)H=√2/4 × 232
H1= (6ED9EBA1)H=√3/4 × 232
H2= (8F1BBCDC)H=√5/4 × 232
H3= (CA62C1D6)H=√10/4 × 232
더욱이, 기호 "" 및 ""는 상관수(床關數; floor function)를 나타내고, 예컨대 "χ"는 χ이하의 최하의 정수를 의미한다.
가산정수(Ci)의 조합을, Ci=(Ci0, Ci1, Ci2, Ci3)으로 기술한다. 각 단에서 다른 128비트의 정수(Ci)를 용이하게 생성하기 위해, Ci를 구성하는 Hi의 조합의 결정에 8비트 LFSR을 이용한다. 예컨대, LFSR의 원시 다항식에는 (1D)H를, LFSR의 초기상태에는 (8B)H를 이용한다. 이 LFSR을 이용하여 생성된 비트열을 2비트씩 독출하고, 정수로 하여 사용하는 32비트 정수(Hi)를 결정한다.
도 15에, 상기와 같은 방법에 의해 LFSR을 이용하여 결정한 가산정수표의 예를 나타낸다.
더욱이, LFSR의 초기상태는 가변으로 해도 되고, 고정으로 해도 된다. 전자의 경우에는, LFSR의 초기상태도 키의 일부를 구성하는 것으로 된다. 후자의 경우에는, 암호측과 동일한 LFSR의 초기상태를 갖는 복호측만 암호문을 복호할 수 있다.
이상 설명한 바와 같은 키 스케쥴부에 의하면, SP층(132)에 대해서는 입력의 1비트가 변화하면, S-box(141)에 의해 8비트에 변화를 파급시키고, 더욱이소MDS(142)에 의해 32비트에 변화를 파급시킬 수 있다. 또한, 선형 확산층에 대해서는 대MDS(131)가 전단의 비선형 변환층의 출력을 보다 크게 확산하기 때문에, 1비트가 달라도, 128비트의 폭으로 넓어지는 이점이 있다.
따라서, 이와 같은 키 스케쥴부에 의하면, 각 단에서 사방으로 흩어진 키가 나오기 쉬워, 확산하기 쉽다는 효과를 얻을 수 있다. 또한, 단마다 다른 정수에의해, 단에 걸친 키의 일치가 적다(키가 거의 일치하지 않음)는 효과를 얻을 수 있다.
더욱이, 키 스케쥴부로서 다른 구성을 취하는 것도 가능하다.
한편, 이하에서는, 큰 블록길이를 갖는 블록암호의 데이터의 확산부에 이용되는 효율적인 선형 확산장치에 대해 설명한다.
도 16에, 본 실시예의 선형 확산장치의 기본적인 구성요소인 유한체 승산장치의 구성예를 나타낸다. 상술한 GF(232) 또는 GF(216)를 이용한 대MDS(도 9, 도 4의 104, 도 11이나 도 12의 131 참조)에서의 , 1개의 입력과 대MDS행렬의 1개의 요소와의 곱의 계산에, 이 선형 확산장치를 이용할 수 있다.
도 16에 나타낸 바와 같이, 이 유한체 승산장치는 계수 격납부(202), 승산부(203), 자릿수 넘침 귀환부(201), 배타적 논리합부(204; 배타합부)를 이용하여 구성된다.
계수 격납부(202)는, 계수 즉 승산의 승수(예컨대, 도 9의 대MDS행렬의 1개의 요소)를 격납하는 부분이다.
승산부(203)는, 입력워드와 계수를 2진수로 간주한 경우의 승산을 행하는 부분이다.
더욱이, 계수 격납부(202)의 계수가 1, 2, 4, …와 같이 2의 누승(累乘)인 경우에는, 통상의 승산기를 이용한 계산이 행해진다. 또한, 이 승산기가 자리올림을 전파시키지 않는 특수한 승산기인 경우에는, 계수 격납부(202)의 계수가 임의의 값일 경우에 계산이 행해진다.
자릿수 넘침 귀환부(201)는, 승산의 결과로 생기는 자릿수 넘침을 유한체상의 승산으로 되돌리기 위해 배타적 논리합부(204)에서 만족되는 수(귀환워드)를 검색하는 부분이다.
배타적 논리합부(204)는, 승산부(203)의 출력과 자릿수 넘침 귀환부(201)의 출력비트적인 배타합을 행하는 부분이다.
유한체 승산장치(200)의 기능은, 유한체 GF(2)의 확대체 GF(2k)의 원(元)인 입력워드 a와 동일한 유한체의 다른 원인 계수 b의 곱 a×b를 출력워드로서 계산하는 것이다.
우선, 유한체에서의 곱에 대해 설명한다.
더욱이, 이하의 기술에 있어서, ∑aixi에 있어서 총합을 취하는 i의 범위나 ∑bjxj에 있어서 총합을 취하는 j의 범위를 0~k-1로 하고, 그들의 범위에 대한 기술을 생략한다.
GF(2k)의 원(元)은, 다항식 표현에 의해, 어떤 변수 x의 (k-1) 다음의 다항식 ∑aixi로서 표현할 수 있다. 원(元) a를 표현하는데에, 그 계수를 열거하여 ck-1ck-2…c0로 표현하는 것도 있다.
2개의 원 a=∑aixi와 b=∑bixi의 곱은,
a×b=(∑aixi)×(∑bixi) mod p(x)
로 정의된다.
여기서, p(x)는 GF(2k)의 원시 다항식이라 부르고, 주기 (2k-1)를 갖는 k차의 기약된 모닉(monic) 다항식이다. 또한, mod의 의미는, 예컨대 k=32의 경우 원시 다항식으로서 p(x) = x32+ x28+ x27+ x + 1을 선택한 경우, 다항식의 곱에 의해 x32의 항이나 인자가 나타난 경우에는, 그를 (x28+ x27+ x + 1)로 간주한다는 것을 나타낸다. 따라서, 곱도 또한 k차 미만의 다항식으로 된다.
일반적으로, 이와 같은 조작을 행할 경우, 고속의 처리를 행하기 위해, 승수와 피승수를 태그(tag)로서 곱을 검색하는 승산표를 이용한 승산장치를 이용하는 것이 있다. 그러나, 승수와 피승수는 모두 2k개의 값을 취할 수 있기 때문에, 승산표는 22k개의 엔트리를 갖고, 각 엔트리는 k비트의 크기를 갖기 때문에, k가 어느정도 커지면, 승산표의 크기는 상당히 커진 것으로 된다.
본 실시예도, 기본적으로는 승산표를 이용하는 방식과 유사하지만, 계수가 어떤 제약조건을 만족할 경우에는, 상당히 작은 기억용량에 의해 실현할 수 있다.
그 제약조건으로는, 계수 b는, 정수이고, 비영(非零)의 계수를 갖는 것은 어떤 차수 t 이하의 하위의 계수뿐이라는 것이다(t차를 넘는 차수의 계수는 0이고, t차 이하의 계수는 0 또는 1이다). 어떤 원(元) a가 임의의 원을 취할 경우에는, 자릿수 넘침은, 최대 32비트이지만, 이 제약조건을 만족한 경우에는, 자릿수 넘침은 기껏해야 t비트이다. 이 t비트의 자릿수 넘침의 값을 결정하는 것은, 피승수 a의 상위 t비트까지의 MSB(Most Significant Bits)이다.
유한체상의 승산과 통상의 다항식으로 간주한 경우의 승산과의 차이는, 2진수의 곱의 결과, 32차 이상의 계수로의 자릿수 넘침이 일어난 경우에, 원시 다항식에 의해, 32차 미만의 계수로 그 기여를 환원할 필요가 있지만, 본 실시예에서는 자릿수 넘침 귀환부(201)가 환원해야 할 워드를 표로서 갖고 있다.
이 귀환워드는, 기껏해야 (t+1)비트의 계수 b와 승수 a의 상위 t비트와 원시 다항식으로부터 결정할 수 있다. 결국, (a[(k-t)...(k-1)]×b)[(t+1)...2t] mod p(x)에 의해 주어진다. 여기서, a[(k-t)...(k-1)]는, a중에서, (k-1)차에서 (k-t)차까지의 항을 취출한 것이다.
즉, 자릿수 넘침 귀환부(201)가 갖는 귀환워드의 표의 내용은, 대응하는 MDS행렬(도 9 참조)의 요소에 따라 결정한다.
자릿수 넘침 귀환부(201)가 갖는 귀환워드의 표는, 2t개의 엔트리로 이루어지고, 각 엔트리는 k비트의 크기를 갖는다.
다음에, 상술한 유한체 승산장치를 이용함으로써 실현되는 블록암호의 데이터·블록에 선형변환을 시행하는 선형 변환장치에 대해 설명한다.
선형변환의 1종류로 MDS행렬에 의한 선형변환이 있다. MDS행렬은, 데이터·블록이, 복수 (n)의 워드로 구성되고, 각 워드가 k비트의 길이를 가질 경우, 각 워드를 유한체 GF(2k)의 원으로 간주하고, n개의 원의 조를 n개의 원의 조에 선형사상(線形寫像)하는 n행 n열의 행렬에 있어, 모든 소행렬이 비영인 것이다. MDS행렬에 의한 선형변환은, 비영의 입출력의 워드수의 하한이 보증되어 있다는 성질을 갖는다.
그러나, 일반적으로 유한체 GF(2k)상의 행렬연산은, GF(2k)상의 복수회의 승산과 가산으로 구성되어, 계산 코스트가 크다.
도 17에, 본 실시예의 선형 변환장치의 구성예를 나타낸다. 상술한 GF(223) 또는 GF(216)을 이용한 대MDS(도 9, 도 4의 104, 도 11이나 도 12의 131)에, 이 선형 변환장치를 이용할 수 있다.
도 17의 구성에서는, 우선 도 16의 유한체 승산장치를 MDS행렬에 대응하여 매트릭스 형상으로 준비한다.
도 17에서 m=n으로 하면, n2개의 유한체 승산장치(200)의 각각의 계수는, n행 n열의 MDS행렬의 대응하는 요소와 동일한 값을 취한다. 계수 aij를 갖는 장치에는, 제i입력워드가 입력된다.
각각의 출력워드에 대한 배타적 논리합부(205)는, 각각 어떤 j에 대응하는 계수 aij를 갖는 모든 유한체 승산장치(200)의 출력비트적인 배타적 논리합을 계산하고, 제j출력워드로서 출력한다.
도 18에 본 실시예의 선형 변환장치의 다른 구성예를 나타낸다. 본 실시예에 있어서의 선형 변환장치는, 선형변환을 표현하는 MDS행렬을 (aij)로 표현할 경우, 각 요소 aij는 기껏해야 t차까지의 항밖에 비영의 계수를 갖지 않는 것을 특징으로 한다. 여기서, i, j는 0에서 n-1까지의 정수치를 취하는 것으로 한다. 또한, t는 유한체 GF(2k)의 확대차수 k보다도 작은 정수인 것으로 한다.
이에 의해, 도 18과 같은 승산을 실현할 수 있다.
더욱이, 자릿수 넘침 귀환부(201)가 갖는 귀환워드표의 내용은, 대응하는 MDS행렬의 요소에 따라 결정하기 때문에, 예컨대 도 9의 대MDS행렬의 예에서는 4종류의 귀환워드표만큼 가지면 좋은 것으로 된다.
다음에, 본 암호방식에 이용하는 MDS행렬(특히 대MDS)을 생성하기 위한 MDS행렬 생성장치(또는, 랜덤 생성 알고리즘)에 대해 설명한다.
도 19에, MDS행렬 생성장치의 구성예를 나타낸다. 도 19에 나타낸 바와 같이, 이 MDS행렬 생성장치는 요소 생성부(231), 소행렬식 계산부(232), 판정부(233)를 이용하여 구성된다.
도 20에, 이 경우의 순서의 일예를 나타낸다.
요소 생성부(231)는, 랜덤하게 n행 n열의 MDS행렬의 각 행렬요소를 생성한다(단계S1). 더욱이, 앞의 유한체 승산장치를 적용 가능하게 하는 경우에는, 이 때에 하위 t비트만 비영의 요소(t차 이하의 요소)로 이루어진 MDS행렬을 생성해 둔다(즉, 이 경우에는 요소 생성부(231) 내에서, 하위 t비트만 비영인지 아닌지의 체크를 행하는 것으로 된다).
더욱이, 행렬요소를 생성하기 위해서는, 난수를 발생하여 이용하는 방법이나, 다중루프의 제어변수의 값을 이용하는 방법 등 다양한 방법이 고려된다.
다음에, 소행렬식 계산부(232)는 요소 생성부(231)의 생성된 행렬의 1차 소행렬을 계산하고(단계S2), 판정부(233)는 소행렬식 계산부(232)가 계산한 소행렬이 비영인지의 여부를 판정한다(단계S3). 1개라도 영의 1차 소행렬식이 있으면, 단계S1부터 다시 한다.
모든 1차 소행렬식이 비영이라면, 동일한 요령으로, 2차 소행렬에 대해 마찬가지로 체크한다(단계S4, S5).
이상을, n차 소행렬식까지 동일한 요령으로로 행하고(단계S6, S7), 1차부터 n차까지 모든 소행렬식이 비영인 것이 확인되면, 그 MDS행렬을 출력한다(단계S8).
더욱이, 단계S8에서 얻어진 MDS행렬을 암호화에 이용하는 MDS행렬로 한 경우, 복호에 이용하는 MDS행렬은 단계S8에서 얻어진 MDS행렬의 역행렬에 의해 주어진다(반대로, 단계S8에서 얻어진 MDS행렬을 복호에 이용하는 경우에는, 그 역행렬이 암호화에 이용하는 MDS행렬로 된다).
단, 단계S8에서 얻어진 MDS행렬의 모든 요소가 하위 t비트만 비영이어도, 그 역행렬의 모든 요소가 하위 t비트만 비영인 것으로는 한정하지 않는다.
더욱이, 도 20의 순서에 있어서, 소행렬식의 판정을 1차부터 n차까지 순번으로 행하고 있지만, 다른 순번이어도 되고, 또한 그들의 전부 또는 일부를 병렬로 하여 행해도 된다.
다음에, 암호화에 이용하는 MDS행렬과, 그 역행렬인 복호에 이용하는 MDS행렬 모두 하위 t비트만 영이라는 조건을 만족하도록 MDS행렬을 구하는 방법에 대해 설명한다.
도 21에, 이 경우의 MDS행렬 생성장치의 구성예를 나타낸다. 도 21에 나타낸 바와 같이, 이 MDS행렬 생성장치는 요소 생성부(231), 소행렬식 계산부(232), 판정부(233), 역행렬 생성부(234), 역행렬 판정부(235)를 이용하여 구성된다. 요소 생성부(231), 소행렬식 계산부(232), 판정부(233)의 부분은 도 19와 동일하다.
도 22에, 이 경우의 순서의 일예를 나타낸다.
우선, 앞의 예와 마찬가지로 하여, 요소 생성부(231), 소행렬식 계산부(232), 판정부(233)에 의해 하위 t비트만 비영의 요소로 이루어진 MDS행렬을 생성한다(단계S11).
다음에, 역행렬 생성부(234)에 의해, 생성된 MDS행렬의 역행렬을 구한다(단계S12).
다음에, 역행렬 판정부(235)는, 구해진 역행렬의 각각의 요소가 하위 t비트만 비영인지 아닌지를 조사한다.
모든 요소가 하위 t비트만 비영이면(단계S13), 그 MDS행렬 및 역행렬을 출력한다(단계S14).
1개라도 하위 t비트만 비영이 아닌 요소가 있으면(단계S13), S11부터 다시 한다.
더욱이, 단계S11에서 생성된 MDS행렬을 암호화에 이용할 경우, 단계S12에서 생성된 역행렬을 복호에 이용하는 것으로 된다(반대로, 단계S11에서 생성된 MDS행렬을 복호에 이용할 경우, 단계S12에서 생성된 역행렬을 암호화에 이용하는 것으로 된다).
더욱이, MDS행렬을 생성함에 있어서는, 동일한 행 내에 동일한 값의 요소가 존재하지 않는 MDS행렬(n행 n열의 MDS행렬에 있어서 제i1요소로부터 제in요소까지중에서 동일한 값을 갖는 2개 이상의 요소가 없는 것)을 생성하도록 해도 된다. 예컨대, 도 20이나 도 22의 순서예의 경우, MDS행렬의 생성시에 동일한 행 내에 동일한 값의 요소가 존재하는지의 여부를 체크하고, 동일한 행 내에 1개라도 동일한 값의 요소가 존재하면, MDS행렬을 생성하여 고치도록 하면 된다. 더욱이, 동일한 열 내에 동일한 값의 요소가 존재해도 상관없다.
블록암호의 데이터의 선형 변환장치로서, 동일한 행 내에 동일한 값의 요소가 존재하지 않는 MDS행렬을 선택한 선형 변환장치를 이용함으로써, 입력워드의 차분치가 상쇄될 확률을 작게 할 수 있다.
또한, 동일한 행 내의 요소의 합이 1 또는 0으로 되지 않도록 MDS행렬을 생성하도록 해도 된다. 이 경우도, 마찬가지의 효과가 얻어진다.
다음에, S-box와 소MDS의 조합을 선택하는(또는, 최적화 하는) 것에 의해, 보다 안전성을 높이는 방법, 보다 구체적으로는 최대차분특성확률이 이론적 최악의 예보다도 좋아지는 것을 보증하는 S-box와 MDS의 조합의 설계방법에 대해 설명한다.
MDS는 브렌치수 B밖에 보증하지 않기 때문에, S-box의 최대차분확률을 p로 하면, 최대차분특성확률은 pB로 된다. 예컨대, m행 m열의 MDS는 B=m+1로 된다. 그러나, S-box와 소MDS의 조합을 선택하는(또는, 최적화 하는) 것에 의해, 브렌치수 B로, 최대차분특성확률이 pB미만을 보증할 수 있다. 이 결과, 통상의 MDS 보다도 최대차분확률이 작은 MDS와 S-box를 조합함으로써, 상승효과(相乘效果)가 기대되고, 안전성을 보다 향상시킬 수 있다.
한편, 암호 알고리즘의 안전성 평가의 하나의 수법으로서, 차분 해독법 또는 선형 해독법이 있고, 양자는 쌍대적인 관계에 있다. 차분 해독법에 주목하면, S-box의 안전성은 입출력의 차분상관을 가질 확률로 규정되고, 이 확률이 작을수록 안전성이 높다. 암호 알고리즘에서는, 차분확률이 작은 S-box가 다수 조합될 수록 안전성이 향상한다. 효율적인 S-box의 연결방법으로서, 선형 변환장치가 종래부터 제안되고 있다. 선형 변환장치는, 어떤 블록길이의 데이터에 대해 선형변환을 시행하는 장치로, 암호화 장치(또는 복호화 장치)의 구성요소로서 이용되는 것이 있다. 선형변환의 1종류로 MDS행렬에 의한 선형변환이 있다.
MDS행렬은, 데이터 블록이 n개의 복수의 워드로 구성될 경우, n개의 워드로의 선형변환을 정의하는 행렬이고, 비영의 입출력워드는 n+1개 이상이 보증되어 있다는 성질을 갖는다. 그러나, S-box는 차분확률로서 6/256, 4/256, 2/256 등 복수의 값의 후보를 갖기 때문에, MDS에 있어서도, n+1개의 확률이 각각 6/256의 MDS와, 각각 4/256인 MDS에서는 후자의 쪽이 안전성이 높다.
종래, S-box와 MDS는 단체의 구성요소로서 각각 독립적으로 안전성이 평가되었지만, 여기에서는 S-box와 MDS의 상승효과를 검증하는 장치의 예를 나타낸다.
도 23에, 이 경우의 처리순서의 일예를 나타낸다. 이 예는, 차분 해독법에 주목하여, S-box와의 상승효과가 기대되는 MDS 결정처리를 나타내고 있다. 차분 해독법과 선형 해독법은 쌍대적인 관계에 있기 때문에, 이 처리를 선형확률에 주목하여 행함으로써, 선형 해독법에 대해서도 동일한 효과가 얻어진다.
우선, 복수의 S-box의 후보와 복수의 소MDS의 후보를 생성한다(단계S21, 단계S22). 더욱이, 단계S21과 단계S22는 반대의 순번으로 행해도 되고, 병렬로 하여 행해도 된다.
다음에, S-box 후보중에서 S-box를 1개 선택함과 더불어(단계S23), 소MDS 후보중에서 소MDS를 1개 선택한다(단계S24). 더욱이, 단계S23과 단계S24를 반대의 순번으로 행해되 되고, 병렬로 하여 행해도 된다.
다음에, 후술하는 바와 같이, 유효한(활성으로 한) S-box의 차분치의 최대를 계산하고(단계S25), 상한(예컨대, 6/256)을 하회하는 차분치(예컨대, 4/256)가 포함되어 있는지의 여부를 조사한다.
그리고, 포함되어 있으면(단계S26), 그 때의 S-box와 소MDS의 조합을 출력한다(단계S27).
한편, 포함되어 있지 않으면(단계S26), S-box와 소MDS의 한쪽 또는 양쪽을 선택하여 고치고, 이하 마찬가지로 처리를 반복한다.
더욱이, 도 23에서는 최초에 복수의 S-box의 후보와 복수의 소MDS의 후보를 생성해 두었지만, 그 대신에, 최초의 1조 이외에는, 단계S26에서 조건을 만족하지 않고, 다른 S-box 및 또는 MDS를 선택하는 것으로 된 경우에 생성하도록 해도 된다.
단계S25 및 단계S26의 처리는, 실제로는 다음과 같이 된다.
예컨대, 도 6의 확대S-box(103)의 예의 경우, S-box와 소MDS의 조에 대해, 다음의 4종류, 계 20가지의 검증을 행하고, 모든 조건을 만족한 경우에, 단계S27에서 그 때의 S-box와 소MDS의 조가 출력된다.
(1) 소MDS(113)의 입출력의 1개의 S-box(112)만 활성으로 한 경우에, 소MDS(113)의 출력측의 4개의 S-box(112)가 모두 활성으로 되고, 또 그중 1개라도 상한을 하회하는 차분치로 되면, 이 검증을 합격으로 한다. 이 검증을 입력측의 4개의 S-box(112)의 각각에 대해 행한다(4가지이다).
(2) 소MDS(113)의 입력측의 2개의 S-box(112)만 활성으로 한 경우에, 소MDS(113)의 출력측의 4개의 S-box(112)가 모두 활성으로 되면, 이 검증을 합격으로 하고, 소MDS(113)의 출력측의 3개의 S-box(112)가 활성으로 되고, 또 그중 1개라도 상한을 하회하는 차분치로 되면, 이 검증을 합격으로 한다. 이 검증을 입력측의 2개의 S-box(112)의 조합의 각각에 대해 행한다(6가지이다).
(3) 소MDS(113)의 출력측의 2개의 S-box(112)만 활성으로 한 경우에, 소MDS(113)의 입력측의 4개의 S-box(112)가 모두 활성으로 되면, 이 검증을 함격으로 하고, 소MDS(113)의 입력측의 3개의 S-box(112)가 활성으로 되고, 또 그중 1개라도 상한을 하회하는 차분치로 되면, 이 검증을 합격으로 한다. 이 검증을 출력측의 2개의 S-box(112)의 조합의 각각에 대해 행한다(6가지이다).
(4) 소MDS(113)의 출력측의 1개의 S-box(112)만 활성으로 한 경우에, 소MDS(113)의 입력측의 4개의 S-box(112)가 모두 활성으로 되고, 또 그중 1개라도 상한을 하회하는 차분치로 되면, 이 검증을 합격으로 한다. 이 검증을 출력측의 4개의 S-box(112)의 조합의 각각에 대해 행한다(4가지이다).
상기의 복수의 검증처리는, 순차 행해도 되고, 전부 또는 일부를 병렬적으로 행해도 된다. 상기의 복수의 검증처리중, 1개라도 합격하지 않은 것이 있으면, 그 S-box와 소MDS의 조합에 대해서는, 이하의 모든 검증처리를 일시 중지하여, 불합격으로 해도 상관없다.
더욱이, 도 23의 순서의 예에서는, 최초에 조건을 만족한 S-box와 소MDS의 조합이 얻어진 시점에서, 처리를 일시 중지하는 것이었지만, 조건을 만족한 S-box와 소MDS의 조합을 복수 구하고, 그들중에서 가장 양호한 것으로 평가되는 것을 선택하도록 해도 된다.
이상이 암호측의 설명이고, 이하에서는 복호측에 대해 설명한다.
복호측은, 기본적으로는 암호측을 반대로 한 구조이다(키는 동일하다).
도 24에, 도 4의 암호화 장치에 대응하는 복호화 장치의 구성예를 나타낸다.
도 25에, 도 6의 소구조에 대응하는 구성예를 나타낸다.
도 26에, 도 8의 대구조에 대응하는 구성예를 나타낸다.
더욱이, 도 24에서는 복호화 장치의 키 스케쥴부는, 도 4의 암호화 장치의 키 스케쥴부와 동일한 구성으로 하고 있다.
복호화 장치에 있어서의 S-box(1112)의 입출력표, 소MDS(1113)의 소MDS행렬, 대MDS(1104)의 대MDS행렬은, 각각 암호화 장치에 있어서의 S-box(112)의 입출력표(예컨대, 도 5), 소MDS(113)의 소MDS행렬(예컨대, 도 7), 대MDS(104)의 대MDS행렬(예컨대, 도 9, 도 10)과 역함수(역행렬)의 관계로 되어 있다.
더욱이, 도 24에서는, 키에 대해서는 도 4와 동일한 순번으로 생성하고 있지만, 도 4와는 반대의 순번으로 생성하도록 구성하는 것도 가능하다.
도 27에, 이 경우의 키 스케쥴부의 구성예를 나타낸다.
1132는, 도 11의 비선형 변환층(132)의 역변환을 나타내고 있다(예컨대, 각각의 SP층(133)의 역변환(예컨대, 도 13 또는 도 14의 입출력을 역방향으로 한 것)을 4병렬로 한 것이다).
도 27의 키 스케쥴부에 이용하는 S-box의 입출력표, 소MDS행렬, 대MDS행렬은, 각각 도 11의 키 스케쥴부에 이용하는 S-box의 입출력표, 소MDS행렬, 대MDS행렬과 역함수(역행렬)의 관계로 되어 있다.
또한, 도 27의 복호의 키 입력 K'는, 도 4에 있어서(암호측에서) 최후의 키 가산에 이용된 키로 한다.
더욱이, 이 경우에 있어서도, 단수 의존정수(Ci)를 잉여 가산하는 개소에 대해, 도 12의 경우와 마찬가지의 방법을 비롯하여, 여러가지의 변경이 고려된다.
이상에서는, 국소적인 확산(소확산)과, 블록폭에 이르는 확산(대확산)과의 조합에 의한, 중첩형(재귀적) SPN구조의 암호방식을 적용한 예로서 8비트 S-box를 이용한 AES 상당의 128비트·블록암호의 구체예를 설명했지만, 다음에 다른 실시예로서 8비트 S-box를 이용한 AES 상당의 64비트·블록암호의 구체예를 이용하면서 본 실시예에 대해 설명한다(128비트를 64비트로 함에 따라 상위해지는 부분을 중심으로 설명한다).
이하에서 설명하는 64비트·블록암호의 암호화 장치/복호화 장치 또는 암호 알고리즘/복호 알고리즘의 제2실시예의 구성예는, 도 1에 예시한 기본구성에 있어서 비선형 변환모듈(2) 즉 구체예에서는 확대S-box를 2개 병렬로 한 경우에 상당한다.
64비트·블록암호의 경우에 대해서도, 물론 상술한 128비트·블록암호의 경우와 마찬가지로, 공격에 대한 내성의 향상이 가능하다.
이 경우의 중첩형 암호방식의 데이터 확산부의 계층구조의 예는 도 3과 동일하다.
블록길이는 64비트이다.
키길이는 128비트를 예로 든다(물론, 다른 키길이에서도 본 발명은 실시가능하다). 더욱이, 본 실시예에서 블록길이를 64비트로 한 경우에, 키길이를 64비트나 96비트로 한 경우에 대해서는 후술한다.
단수(복수개가 병렬된 확대S-box와 대MDS와의 쌍(단, 후술하는 바와 같이 최종단은 대MDS를 포함하지 않음)을 1단으로 세는 것으로 하고 있다)의 구체예를 이용할 경우에는 R=6을 이용한다. 더욱이, 기본적으로는 단수는 어느 단에서도 실시가능하지만, 실제의 단수는 예컨대 안전성이나 계산기 자원 등을 상정하여 적당히 설정할 수 있고, 바람직하게는 6단 이상으로 하면 보다 효과적이다.
본 예의 암호에서는, 단함수가 S-box층을 2층 포함하고 있기 때문에, 1단이 통상의 2단에 상당한다. 단 구조 내의 대MDS에 대해서는, 갈로아체에 기초하여 실장예를 나타낸다.
도 28에, 본 실시예에 따른 암호화 장치의 구성예를 나타낸다.
2101이 각 단이고, 2104는 대MDS 확산층, 2102는 확대S-box층, 2103은 각각의 확대S-box이다. 2105는 배타적 논리합부이다. 2121~2124는 상세하게는 후술하는 키 스케쥴부의 구성부분이다. P는 입력으로 되는 64비트의 평문 데이터, C는 출력으로 되는 64비트의 암호문 데이터이다. 더욱이, 확대S-box(2103)는 도 4의 확대S-box(103)와 동일한 것으로 상관없다.
단함수는 2단 SPN구조로 이루어진 32비트 처리 서브·블록(확대S-box) 2103을 2개 병렬로 나열하여, MDS 확산층(2104)에 연결된 구조이다. 전체의 기본구조는 이 단함수의 반복으로 한다.
더욱이, 도 28의 예에서는 암호화와 복호의 처리를 대칭적으로 하기 위해, 최종단은 확대S-box층(2102)과 그 후의 키 가산 2105만으로 구성하는 것으로 하고있다.
단함수 1단에 2단 SPN구조가 채워지고, 최후에 키 가산이 행해지기 때문에, 확대키의 비트길이는 2×64×R+64=64(2R+1)로 된다. R=6의 경우에는 128×13비트로 된다.
S-box는, 상술한 바와 같이 입출력표를 이용할 수도 있고, 연산처리를 이용할 수도 있다. 8비트 S-box의 입출력표의 일예는 도 5에 나타낸 것과 동일한 것으로 상관없다.
확대S-box(103)의 내부 구성예는, 도 6과 마찬가지로 한다. 확대S-box 내의 확산층(113)에 대해서도 마찬가지로, 예컨대 도 7에 예시한 MDSS행렬을 사용하고, S-box 입출력과 행렬요소를 갈로아체 GF(28)의 원(元)으로 간주하여 승산을 행하는 것으로 한다.
다음에, 본 예의 암호의 단함수인 대구조에 대해 설명한다.
도 29에, 1단의 부분의 구성예를 나타낸다. 본 예의 암호의 단함수인 대구조는, 2개의 병렬의 32비트 확대S-box(2103; 도 6 참조)를 MDS행렬의 확산층(2104)에 결합하여 구성한다. 이 단함수인 대구조에 있어서의 확산층(2104)에도 MDS행렬을 사용한다.
대MDS의 구성에 대해서도, 상술한 바와 같이, GF(232)나 GF(24)나 GF(28)나 GF(216)를 이용하는 방법이 있다.
GF(24)를 이용한 대MDS에 대해 설명한다.
도 30에, 이 경우의 MDS행렬의 일예를 나타낸다.
여기에서는, 1개의 확대S-box(2103)에 있어서 4개의 S-box의 각각의 출력 즉 8비트·데이터의 동일한 위치(예컨대, 도 30에서는 최상위비트를 예로 들어 나타내고 있다)의 1비트를 모아, 이를 1조 4비트의 데이터로 하고, 2개의 확대S-box(2103)로부터의 2조의 4비트·데이터를 GF(24)의 원으로 간주한다.
그리고, 8비트·데이터의 동일한 위치에 대해, 2단의 2개의 병렬 확대S-box층간의 확산층(2104)에 2행 2열의 MDS행렬(예컨대, 도 30에서는 최상위비트의 경우, 2104-1)을 이용한다.
각 확산층(2104)으로부터 출력된 2조의 4비트·데이터는, 각각 대응하는 것과의 8비트·데이터의 동일한 위치에 결선된다.
S-box의 비트폭에 대응하여, 8개의 MDS행렬(2104-1~2104-8)을 준비하고, 대MDS로 한다.
각 확대S-box의 동일한 위치의 S-box 출력을 단위로 한 표를 인용함으로써(더욱이, 연산에 의해서도 된다), 8개의 MDS행렬을 동시에 처리하는 효율적인 실행이 가능하다.
더욱이, MDS행렬이 순회적인 경우, 32비트마다의 배타적 논리합과 8비트 단위의 비트회전을 조합시킨 효율적인 처리가 가능해진다.
더욱이, 도 30에서는 암호측의 대MDS행렬의 일예로서,
1행 1열=5, 1행 2열=7
1행 1열=A, 1행 2열=B
를 나타냈지만,
이에 대응하는 복호측에서의 대MDS행렬은,
1행 1열=C, 1행 2열=A
1행 1열=5, 1행 2열=B
로 된다.
더욱이, 전자를 복호측에 이용하고, 후자를 암호측에 이용하도록 해도 된다.
또한, 임의의 MDS행렬에 대해, 행의 교체, 열의 교체, 전치를 임의로 행해 얻어진 행렬을 이용하는 것도 가능하다.
또한, 이 외의 대MDS행렬을 이용하는 것도 가능하다.
그런데, 이 대MDS 확산층은, 상기와 같이 행렬 연산 또는 입출력 변환표에 의한 변환을 실행하기 위한 소프트웨어에 의해 실현가능하지만, 하드웨어(예컨대, 반도체기판 위 등에 형성한 실제 회로)에 의해서도 실현가능하다.
대MDS를 실제 회로에서 실현할 경우에는, 예컨대 MDS행렬과 등가인 결선패턴을 이용하면 된다.
도 31에, GF(24)상의 승산의 결선표현(결선패턴)을 GF(24)의 1~F의 원의 각각에 대해 나타낸다. 더욱이, 결합부분에서는 배타적 논리합이 행해진다.
즉, 도 30의 각각의 확산층(2104-1~2104-8)에 있어서, MDS행렬의 1행 1열요소를 x1에 작용시키는 부분, 1행 2열요소를 x2에 작용시키는 부분, 2행 1열요소를 x1에 작용시키는 부분, 2행 2열요소를 x2에 작용시키는 부분의 결선패턴에, 당해 행렬요소의 도 31에서 해당하는 결선패턴을 이용하면 된다.
도 32에, 도 30에 예시한 행렬에 기초하여 대MDS를 실제 회로에 구성한 예를 나타낸다. 도면중, 2141이 1행 1열요소 "5"에 대응하는 결선패턴, 2142가 1행 2열요소 "7"에 대응하는 결선패턴, 2143이 2행 1열요소 "A"에 대응하는 결선패턴, 2144가 2행 2열요소 "B"에 대응하는 결선패턴이다. 단, 복수비트가 결합되는 부분에서는, 배타적 논리합이 행해진다.
더욱이, 행렬의 곱에 상당하는 부분의 배타적 논리합에 의한 결합 후에, 행렬 곱의 합에 상당하는 부분의 배타적 논리합에 의한 결합을 행한 바와 같이 나타내고 있지만, 그들 모든 배타적 논리합에 의한 결합을 일괄하여 행해도 되고, 적당히 복수로 나누어 행해도 된다.
또한, 앞에 도 31의 결선패턴군중에서 원하는 결선패턴을 선택하여 암호측의 대MDS의 실제 회로구성의 후보를 만들고, 다음에 이에 대응하는 MDS행렬의 역행렬(MDS행렬)이 존재하는 것을 검증한다는 순서를 취하는 것도 가능하다. 물론, 복호측을 앞에 정해도 된다.
또한, GF(24)상의 승산의 결선표현(결선패턴) 이외의 것을 이용하는 것도 가능하다.
물론, 이 방법은 상술한 128비트 블록암호에도 적용가능하다.
다음에, 재정규화에 대해 설명한다.
여기서, MDS 확산층의 팬·인(fan·in)에 대해 설명한다. 도 31의 결선패턴에 있어서, 데이터의 출력측의 각 비트에서, 당해 비트에 결선되는 비트수(결선수)를 팬·인이라고 부른다. 예컨대, "1"에 대응하는 결선패턴에서는, 어느쪽의 비트도 팬·인=1이다. 또한, "5"에 대응하는 결선패턴에서는, 좌측의 비트에서 우측의 비트 순번으로, 팬·인=2, 3, 3, 2이다.
다음에, 이 MDS 확산층의 결선패턴에 대한 팬·인의 총계 S를 고려한다. 도 32의 예를 보면, 2141~2144의 점선 내의 16비트의 팬·인의 총계 S는 45로 된다. 이 MDS 확산층의 결선패턴에 대한 팬·인의 총계 S는 배선의 증가와 연결되기 때문에(행렬 계산을 행할 경우에도, 배타적 논리합 연산 등의 증가와 연결되기 때문에), S의 값이 작은 쪽이 바람직하다. 더욱이, GF(24)의 원을 요소로 하는 2행 2열의 MDS의 경우에는, S의 최소치는 18로 된다.
이 S를 삭감하는 방법에, 재정규화 수법이 있다. 이에 의해, 회로량(행렬 계산을 행할 경우에는 계산량)을 삭감할 수 있다.
재정규화를 행할 경우, 도 33에 나타낸 바와 같이 각각의 MDS 확산층(2104-1~2104-8)에 대해, 당해 MDS 확산층과 전단의 개개의 확대S-box 2103, 2103과의 사이에 각각, 재정규화를 위한 전처리 회로 2180-1, 2180-2를 삽입한다.
이 전처리 회로의 각각에는, 예컨대 도 31의 결선패턴중 어느 하나가 설치된다. 또는, 등가의 계산처리가 행해진다.
도 33은, 어느쪽의 S-box에 대해서도 공통인자(5)에 의한 재정규화에 의한 실장을 행한 경우를 나타내고 있다. 또한, 도 34에, 이 경우의 대MDS 2104의 일예를 나타낸다. 이 경우, 대MDS행렬은,
1행 1열=1, 1행 2열=4
1행 1열=2, 1행 2열=9
로 된다. 도면중, 2145가 1행 1열요소 "1"에 대응하는 결선패턴, 2146이 1행 2열요소 "4"에 대응하는 결선패턴, 2147이 2행 1열요소 "2"에 대응하는 결선패턴, 2148이 2행 2열요소 "9"에 대응하는 결선패턴이다. 복수비트가 결합되는 부분이 배타적 논리합에 대응하는 점은 상술한 바와 같다. 이 경우, S의 값은 20으로 되어 있다.
도 32에 의한 대확산과, 도 33/도 34에 의한 대확산은 등가이다.
재정규화를 행할 경우에, 공통인자 및 그 때의 행렬을 구하는 방법으로서는, 예컨대 도 31과 같이 재정규화를 행하지 않을 경우에 구한 행렬에 대해, 공통인자를 파라메터로 하여, 등가인 대확산으로 되는 행렬을 구하고, 그들에 대해 팬·인을 평가하여, 채용하는 것을 선택하는 방법이 있다.
더욱이, 각 S-box에 대한 공통인자를 동일하게 한다는 제약을 부과해도 되고, 그와 같은 제약을 부과하지 않아도 된다.
더욱이,
1행 1열=C, 1행 2열=A
1행 1열=5, 1행 2열=B
의 행렬에 대해, 어느쪽의 S-box에 대해서도 공통인자 B에 의한 재정규화에 의한 실장을 행하면, 대MDS행렬은,
1행 1열=9, 1행 2열=4
1행 1열=2, 1행 2열=1
로 된다.
물론, 이 방법도 상술한 128비트 블록암호에도 적용가능하다.
더욱이, 이상에서 예시한 배선이나 레이아웃은 논리적인 관계를 나타내는 것이고, 실제 배선이나 실제 레이아웃에는 물론 설계의 자유도가 있다. 또한, 대MDS층의 각 부분 2104-1~2104-8의 8개를 실장해도 되고, MDS부분 2104-1~2104-8중 일부(예컨대, 1개, 2개, 또는 4개)만을 실장하고, 그를 시분할적으로 공용하도록 구성해도 된다.
암호측과 복호측에서 구성의 방법은 동일하다(역변환의 관계로 될 뿐이다).
더욱이, 상기와 같이 고려한 방법에 의해, 8비트·데이터중 동일한 위치의 2비트마다 처리를 행함으로써, 각 요소가 8비트의 2행 2열의 MDS행렬 (GF(28))을 4개 준비하여, 대MDS를 구성하는 것도 가능하다. 또한, 8비트·데이터중 동일한 위치의 4비트마다 처리를 행함으로써, 각 요소가 16비트의 2행 2열의 MDS행렬 (GF(216))을 2개 준비하여, 대MDS를 구성하는 것도 가능하다.
또한, 상기에서는 동일한 위치의 비트를 취출하여 처리를 행하는 것으로 설명했지만, 상술한 바와 같이, 다른 위치의 비트를 (배타적으로) 취출하여 처리를행하는 것도 가능하다.
또한, 도 9의 예와 마찬가지로, GF(232)를 이용한 대MDS행렬에 의한 구성도 가능하다.
이상의 구성예는, 상술한 128비트 블록암호에도 적용가능하다.
더욱이, 상술한 바와 같이, 도 28에서는 확대S-box의 내부구성을 모두 동일하게 하지 않고, 다른 것을 혼재시키는 것도 가능하다.
또한, 모든 대MDS행렬을 동일하게 하지 않고, 다른 것을 혼재시키는 것도 가능하다. 이 점은, 소MDS행렬, S-box의 입출력표에 대해서도 마찬가지이다.
또한, 예컨대 최초의 입력단과, 최후의 출력단만, 다른 중간단과는 다른 내부구성으로 해도 된다.
더욱이, 각각의 대MDS의 전단 및 또는 후단에, 동일한 확대S-box에 속하는 복수의 S-box에 대한 비트의 위치를 바꾸는 처리를 행하는(또는, 그와 같은 회로를 삽입하는) 구성도 가능하다.
이 외에도, 여러가지의 변경이 고려된다.
물론, 여기서 설명한 대MDS의 구성은, 이제까지 설명해 왔던 여러가지의 변경을 갖는 암호화 장치나 복호화 장치에 적용가능하다.
다음에, 키 스케쥴부(키 생성부)에 대해 설명한다.
도 35에, 키 스케쥴부의 구성예를 나타낸다. 2121은, 데이터 확산부의 단함수의 1단분에 대응하는 부분이고, 2131은 선형 확산층(본 예에서는, 대MDS에 의한 확산층으로 한다)이고, 2133은 비선형 변환층(본 예에서는, 2병렬의 SP층(S-box층·확산층)으로 한다)이고, 2134는 배타적 논리합부이며, 2135는 잉여 가산부이다. 도 35에서는 생략하고 있지만, 2121의 부분의 구성이 필요에 따라 반복되는 것으로 된다. 더욱이, 64비트의 키를 출력하는 구성단위를 키 스케쥴부의 1개의 단으로 하면, 키 스케쥴부의 단수는 (2R+1)단으로 된다(R=6의 경우, 13단이다).
도 35의 예에서는, 128비트의 변형 Feistel형 반복처리의 각 단의 좌측출력 1/2의 64비트를 취출하고, 단수 의존정수(Ci)를 잉여 가산하여 확대키로 한다.
더욱이, 키길이를 128비트로 할 경우에는, 예컨대 상위 64비트를 초단의 선형 확산층(2131)에 인가하고, 하위 64비트를 비선형 변환층(2133)에 인가하면 된다. 또한, 키길이를 64비트로 할 경우에는, 예컨대 그 64비트를 초단의 선형 확산층(2131)에 인가함과 더불어, 비선형 변환층(2133)에 인가하면 좋다. 또한, 키길이를 96비트로 할 경우에는, 예컨대 상위 64비트를 초단의 선형 확산층(2131)에 인가하고, 하위측 32비트와 상위측 32비트를 결합한 64비트를 비선형 변환층(2133)에 인가하면 된다.
더욱이, 도 36과 같이, 단수 의존정수(Ci)를 잉여 가산하는 개소에 대해, 여러가지의 변경이 고려된다.
도 35나 도 36에 있어서의 각각의 비선형 변환층(2133)의 구성예는, 도 13이나 도 14와 동일하게 한다(도 14에 있어서, S-box에 대한 입력과 배타적 논리합을 취한 정수를, 단수 의존정수로 하는 구성도 가능한 점도 동일하다). 이 S-box가, 도 28의 암호처리측의 S-box와 동일해도 되고, 다른 것이어도 되는 점도 동일하다. 소MDS에 대해서도 동일하다. 또한, 키 스케쥴부의 각 단에 의해 S-box나 소MDS의 구성을 바꾸는 것도 가능하다.
다음에, 각 단에서 다른 정수(Ci)를 만드는 방법의 일예에 대해 설명한다.
도 35나 도 36의 키 스케쥴부의 64비트의 가산정수(Ci)는 2개의 비트정수(H0, H1)의 조합으로 기술할 수 있다. 32비트의 정수(Hi)의 일예를 다음에 나타낸다.
H0= (5A827999)H=√2/4 × 232
H1= (6ED9EBA1)H=√3/4 × 232
H2= (8F1BBCDC)H=√5/4 × 232
H3= (CA62C1D6)H=√10/4 × 232
더욱이, 기호 "" 및 ""는 상관수(床關數; floor function)를 나타낸다.
가산정수(Ci)의 조합을, Ci=(Ci0, Ci1)로 기술한다. 각 단에서 다른 64비트의 정수(Ci)를 용이하게 생성하기 위해, Ci를 구성하는 Hi의 조합의 결정에 8비트 LFSR을 이용한다. 예컨대, LFSR의 원시 다항식에는 (1D)H를, LFSR의 초기상태에는(8B)H를 이용한다. 이 LFSR을 이용하여 생성된 비트열을 2비트씩 독출하고, 정수로서 사용하는 32비트 정수(Hi)를 결정한다.
도 37에, 상기와 같은 방법에 의해 LFSR을 이용하여 결정한 가산 정수표의 예를 나타낸다.
더욱이, LFSR의 초기상태는, 가변으로 해도 되고, 고정으로 해도 된다. 전자의 경우에는 LFSR의 초기상태도 키의 일부를 구성하는 것으로 된다. 후자의 경우에는, 암호측과 동일한 LFSR의 초기상태를 갖는 복호측만, 암호문을 복호할 수 있다.
이상 설명한 바와 같은 키 스케쥴부에 의하면, 비선형 변환층에 대해서는 입력의 1비트가 변화하면, S-box에 의해 8비트에 변화를 파급시키고, 더욱이 소MDS에 의해 32비트에 변화를 파급시킬 수 있다. 또한, 선형 확산층에 대해서는, 대MDS가 전단의 비선형 변환층의 출력을 보다 크게 확산하기 때문에, 1비트가 달라도, 64비트의 폭으로 넓어지는 이점이 있다.
따라서, 이와 같은 키 스케쥴부에 의하면, 각 단에서 사방으로 흩어진 키가 나오기 쉬워, 확산하기 쉽다는 효과를 얻을 수 있다. 또한, 단마다 다른 정수에 의해, 단에 걸친 키의 일치가 적다(키가 거의 일치하지 않는)는 효과를 얻을 수 있다.
더욱이, 키 스케쥴부로서 다른 구성을 취하는 것도 가능하다.
더욱이, 도 16~도 18을 참조하면서 설명한 선형 확산장치나 유한체 승산장치는, 이 경우에도 적용가능하다.
또한, 도 19~도 22를 참조하면서 설명한 MDS행렬 생성장치(또는, 랜덤 생성 알고리즘)는, 이 경우에 대해서도 적용가능하다.
물론, 도 23을 참조하면서 설명한 S-box와 MDS의 조합의 설계방법은, 이 경우에 대해서도 적용가능하다.
이하에서는, 복호측에 대해 설명한다.
복호측은, 기본적으로는 암호측을 반대로 한 구조이다(키는 동일하다).
도 38에, 도 28의 암호화 장치에 대응하는 복호화 장치의 구성예를 나타낸다.
도 39에 도 28의 대구조(도 29 참조)에 대응하는 구성예를 나타낸다.
도 28의 소구조(도 6 참조)에 대응하는 구성예는 도 25와 동일하다.
더욱이, 도 38에서는, 복호화 장치의 키 스케쥴부는 도 28의 암호화 장치의 키 스케쥴부와 동일한 구성으로 하고 있다.
복호화 장치에 있어서의 S-box(도 25의 1112 참조)의 입출력표, 소MDS(도 25의 1113 참조)의 소MDS행렬, 대MDS 3104의 대MDS행렬은, 각각 암호화 장치에 있어서의 S-box(도 6의 1112 참조)의 입출력표, 소MDS(도 6의 1113 참조)의 소MDS행렬, 대MDS 3104의 대MDS행렬과 역함수(역행렬)의 관계로 되어 있다.
더욱이, 도 38에서는, 키에 대해서는 도 28과 동일한 순번으로 생성하고 있지만, 도 28과는 반대의 순번으로 생성하도록 구성하는 것도 가능하다.
도 40에, 이 경우의 키 스케쥴부의 구성예를 나타낸다.
3132는, 도 35의 비선형 변환층(2132)의 역변환을 나타내고 있다(예컨대, 각각의 SP층 2133의 역변환(예컨대, 도 13 또는 도 14의 입출력을 역방향으로 한 것)을 4병렬로 한 것이다).
도 40의 키 스케쥴부에 이용하는 S-box의 입출력표, 소MDS행렬, 대MDS행렬은, 각각 도 35의 키 스케쥴부에 이용하는 S-box의 입출력표, 소MDS행렬, 대MDS행렬과 역함수(역행렬)의 관계로 되어 있다.
또한, 도 40의 복호의 키 입력 K'는, 도 28에 있어서(암호측에서) 최후의 키 가산에 이용된 키로 한다.
더욱이, 이 경우에 있어서도, 단수 의존정수(Ci)를 잉여 가산하는 개소에 대해, 도 36의 경우와 같은 방법을 비롯하여, 여러가지의 변경이 고려된다.
이상에서는, 128비트·블록암호나 64비트·블록암호를 예로 들어 설명했지만, 다른 비트길이의 블록암호에도 물론 본 발명은 적용가능하다.
이하에서는, 본 실시예의 하드웨어 구성, 소프트웨어 구성에 대해 설명한다.
본 실시예의 암호화 장치나 복호화 장치는, 하드웨어로서도, 소프트웨어로서도 실현가능하다.
본 실시예는, 소프트웨어에서 실현할 경우에, 암호화 장치나 복호화 장치를 실현하는 프로그램에 있어, 컴퓨터에 소정의 수단을 실행시키기 위한(또는, 컴퓨터를 소정의 수단으로서 기능시키기 위한, 또는 컴퓨터에 소정의 기능을 실현시키기 위한) 프로그램을 기록한 컴퓨터 독취가능 기록매체로서도 실시할 수도 있다.
또한, 하드웨어로서 구성할 경우, 반도체장치로서 형성할 수 있다.
또한, 본 발명을 적용한 암호화 장치나 복호화 장치를 구성할 경우, 또는 암호화 프로그램이나 복호 프로그램을 작성할 경우에, 도 4나 도 24에서 예시한 바와 같은 블록 또는 모듈을 모두 개별적으로 작성하는 것도 가능하지만, 동일한 구성을 갖는 블록 또는 모듈에 대해서는, 1 또는 적당한 수만 준비해 두고, 그것을 알고리즘의 각 부분에서 공유하는(돌려 사용하는) 것도 가능하다.
또한, 소프트웨어의 경우에는, 멀티프로세서를 이용하여, 병렬처리를 행해, 처리를 고속화 하는 것도 가능하다.
더욱이, 암호화 기능만을 갖고, 복호기능을 갖지 않는 장치로 구성하는 것도, 복호기능만을 갖고, 암호화 기능을 갖지 않는 장치로 구성하는 것도, 암호화 기능과 복호기능의 양쪽을 갖는 장치로 구성하는 것도 가능하다. 마찬가지로, 암호화 기능만을 갖고, 복호기능을 갖지 않는 프로그램으로 구성하는 것도, 복호기능만을 갖고, 암호화 기능을 갖지 않는 프로그램으로 구성하는 것도, 암호화 기능과 복호기능의 양쪽을 갖는 프로그램으로 구성하는 것도 가능하다.
다음에, 본 실시예의 시스템으로의 응용에 대해 설명한다.
본 실시예의 암호방식은, 기본적으로는 어떠한 시스템에도 적용가능하다.
예컨대, 도 41에 나타낸 바와 같이, 송신측 장치(301)와, 수신측 장치(303)와의 사이에, 소정의 방법 또는 절차에 의해, 키를 안전하게 공유해 두는 시스템에 있어서, 송신측 장치(301)는 송신 데이터를 블록길이마다 본 실시예의 암호방식으로 암호화 하고, 소정의 프로토콜에 따라 통신 네트워크(302)를 매개로 암호문을수신측 장치(303)로 송신한다. 암호문을 수신한 수신측 장치(303)에서는, 수신한 암호문을 블록길이마다 본 실시예의 암호방식으로 복호하여 원래의 평문을 얻는다. 더욱이, 각각의 장치가 암호화 기능과 복호기능의 양쪽을 갖고 있으면, 쌍방향으로 암호통신을 행할 수 있다.
또한, 예컨대 도 42에 나타낸 바와 같이, 계산기(311)에서는 소정의 방법으로 키를 생성하고, 보존하려는 데이터를 블록길이마다 본 실시예의 암호방식으로 암호화 하고, 소정의 네트워크(314; 예컨대, LAN, 인터넷 등)를 매개로, 암호화 데이터로서, 데이터·서버(313)에 보존해 둔다. 계산기(311)에서는, 이 데이터를 독출하려고 할 경우는, 데이터·서버(313)로부터 원하는 암호화 데이터를 읽어 들이고, 이를 블록길이마다 본 실시예의 암호방식으로 복호하여 원래의 평문을 얻을 수 있다. 또한, 다른 계산기(312)가, 이 키를 알고 있으면, 마찬가지로 복호해도 원래의 평문을 얻을 수 있지만, 키를 알고 있지 않은 다른 계산기는 그 암호 데이터를 복호할 수 없고, 정보의 시큐리티·콘트롤이 가능해진다.
또한, 예컨대 도 43에 나타낸 바와 같이, 콘텐츠 제공측에서는 암호화 장치(321)에 의해, 어떤 콘텐츠, 어떤 키로, 블록길이마다 본 실시예의 암호방식으로 암호화 하고, 이를 암호화 콘텐츠로 하여, 기록매체(322)에 기록하고, 이를 반포한다. 기록매체(322)를 취득한 유저측에서는 소정의 방법으로 그 어떤 키를 입수함으로써, 복호화 장치(323)에 의해 그 콘텐츠를 블록길이마다 본 실시예의 암호방식으로 복호하고, 콘텐츠의 열람 또는 재생 등을 행할 수 있다.
물론, 상기 이외에도 여러가지의 시스템에 적용가능하다.
더욱이, 본 실시예에 나타낸 구성은 일예이고, 그 이외의 구성을 배제할 취지는 아니고, 예시한 구성의 일부를 다른 것으로 치환하거나, 예시한 구성의 일부를 생략하거나, 예시한 구성에 다른 기능을 부가하거나, 그들을 조합하거나 하는 등에 의해 얻어지는 다른 구성도 가능하다. 또한, 예시한 구성과 논리적으로 등가인 다른 구성, 예시한 구성과 논리적으로 등가인 부분을 포함하는 다른 구성, 예시한 구성의 주요부와 논리적으로 등가인 다른 구성 등도 가능하다. 또한, 예시한 구성과 동일 또는 유사한 목적을 달성하는 다른 구성, 예시한 구성과 동일 또는 유사한 효과를 갖는 다른 구성 등도 가능하다.
또한, 각종 구성부분에 대한 각종 변경은, 적당히 조합하여 실시하는 것이 가능하다.
또한, 본 실시예는 암호화 장치로서의 발명, 복호화 장치로서의 발명, 시스템 전체로서의 발명, 개별장치 내부의 구성부분에 대한 발명, 또는 그들에 대응하는 방법의 발명 등, 다양한 관점, 단계, 개념 또는 카테고리에 따른 발명을 포함·내재하는 것이다.
따라서, 본 발명의 실시예에 개시한 내용으로부터는, 예시한 구성에 한정되지 않고 발명을 추출하는 것이 가능한 것이다.
본 발명은 상술한 실시예에 한정되는 것이 아니라, 그 기술적 범위에서 다양하게 변형하여 실시할 수 있다.
이상 설명한 바와 같이 본 발명에 의하면, 국소적인 데이터 확산을 행하는 소형의 확산층과 블록폭에 이르는 확산을 행하는 대형의 확산층을 상호 반복하여 운용함으로써, 계산 코스트를 억제한 채 높고 균일한 확산을 실현할 수 있다. 또한, 계층적으로 브렌치수를 보증할 수 있고(브렌치수의 계층성), 활성S-box수의 하한을 용이하게 보증할 수 있다. 또한, 강도평가가 쉽다는 특성이 있다. SQUARE 암호나 Rijndael 암호에서는 소형의 확산과 바이트 단위의 열거방법에 의해 동등한 효과를 실현하고 있다. 그러나, 그들의 암호에서는 확산층이 1종류이기 때문에, SQUARE 공격이라 부르는 해독법이 존재한다. 본 발명에서는 대소 2종류의 확산층의 조합방법에 의해 SQUARE 공격에 대한 내성의 향상이 가능하다.

Claims (29)

  1. 삭제
  2. 블록 암호방식에 의한 암호화 장치에 있어서,
    제1데이터 폭의 블록 데이터가 복수로 분할된 제2데이터 폭의 각 부분 데이터에 대해 각각 비선형 변환처리를 시행하는 제1처리부와,
    상기 제1처리부로부터의 각 부분 데이터로 이루어진 제1데이터 폭의 블록 데이터에 대해 선형 확산처리를 시행하는 제2처리부를 구비하며,
    상기 제1처리부의 전부 또는 일부는, 각각, 제2데이터 폭의 상기 부분 데이터가 더 복수로 분할된 제3데이터 폭의 각 부분에 대해 각각 비선형 변환처리를 시행하는 복수의 비선형 변환처리부와, 상기 복수의 비선형 변환처리부로부터의 각 부분으로 이루어진 제2데이터 폭의 부분 데이터에 대해 선형 확산처리를 시행하는 선형 확산처리부를 포함한 것을 특징으로 하는 암호화 장치.
  3. 제2항에 있어서, 상기 제2처리부는 미리 선택된 최대거리 분리행렬을 이용하여, 제1데이터 폭의 입력블록 데이터로부터 제1데이터 폭의 출력블록 데이터를 구하는 것을 특징으로 하는 암호화 장치.
  4. 제3항에 있어서, 상기 최대거리 분리행렬로서 전행렬요소에 대해 하위 소정 비트만 비영(非零)인 것을 선택하는 것을 특징으로 하는 암호화 장치.
  5. 제3항에 있어서, 상기 최대거리 분리행렬로서 동일한 행에 속하는 전행렬요소가 상이한 값을 갖는 것을 선택하는 것을 특징으로 하는 암호화 장치.
  6. 제3항에 있어서, 상기 제2처리부는, 상기 블록폭으로부터 소정 갯수 건너 1비트를 취해 연결한 데이터를 입력으로 하여 최대거리 분리행렬을 이용하여 출력을 구하는 처리를, 그 1비트를 취출하는 위치를 바꾼 것에 대해 각각 행하는 것을 특징으로 하는 암호화 장치.
  7. 제2항에 있어서, 상기 선형 확산처리부는 미리 선택된 최대거리 분리행렬을 이용하여 입력부분 데이터로부터 출력부분 데이터를 구하는 것을 특징으로 하는 암호화 장치.
  8. 제2항에 있어서, 더 단수에 의존하는 키 데이터를 생성하기 위한 키 생성부를 구비하고,
    상기 키 생성부는, 전단의 출력에 비선형 변환처리를 시행한 것과, 전전단의 출력에 비선형 변환처리를 시행한 것에 선형 확산처리를 시행한 것과의 배타적 논리합을 취한 것을 해당 단의 출력으로 하는 처리를, 필요 단수만큼 반복하여 행하는 수단을 포함한 것을 특징으로 하는 암호화 장치.
  9. 블록 데이터를 암호화 하는 암호화 장치에 있어서,
    초단에서는 입력된 128비트의 평문 블록 데이터를, 2단째 이하에서는 전단에서의 처리가 시행된 128비트의 블록 데이터를 입력으로 하고, 그 블록 데이터를 4분할 한 4조의 32비트·데이터에 대해 각각 국소적인 선형 확산처리 및 비선형 변환처리를 시행하여 출력하는 4개의 제1비선형 변환처리부와, 이들 4개의 제1비선형 변환처리부로부터 각각 출력된 4조의 32비트·데이터를 연결한 128비트의 블록 데이터에 대해 최대거리 분리행렬을 이용하여 선형 확산처리를 시행하여 다음 단으로 출력하는 제1확산 처리부로 이루어지고, 직렬접속된 복수의 단 섹션과,
    상기 직렬접속된 복수의 단 섹션의 최후의 단 섹션의 후단에 접속되고, 상기 단 섹션으로부터 출력되는 128비트의 블록 데이터를 입력으로 하고, 그 블록 데이터를 4분할 한 4조의 32비트·데이터에 대해 각각 국소적인 선형 확산처리 및 비선형 변환처리를 시행하여 출력하는 4개의 제2비선형 변환처리부 및,
    상기 4개의 제2비선형 변환처리부의 후단에 접속되고, 이들 4개의 제2비선형 변환처리부로부터 각각 출력된 4조의 32비트·데이터를 연결한 128비트의 블록 데이터에 대해 128비트의 키 데이터를 가산하여 128비트의 암호화 된 블록 데이터로서 출력하는 제1키 가산부를 구비하고,
    상기 제1비선형 변환처리부, 제2비선형 변환처리부의 각각은,
    주어진 1조의 상기 32비트·데이터를 더 4분할 한 4조의 8비트·데이터에 대해 각각 8비트의 키 데이터를 가산하는 4개의 제2키 가산부와,
    각 제2키 가산부의 출력에 대해 각각 8비트의 입출력 변환표를 이용하여 비선형 변환을 행하는 4개의 제2비선형 변환처리부,
    이들 4개의 제2비선형 변환처리부로부터 각각 출력된 4조의 8비트·데이터를 연결한 32비트·데이터에 대해 최대거리 분리행렬을 이용하여 선형 확산처리를 시행하는 제2확산처리부 및,
    상기 제2확산처리부의 후단에 더 접속된 4조의 상기 제2키 가산부 및 제3비선형 변환처리부를 포함한 것을 특징으로 하는 암호화 장치.
  10. 블록 데이터를 암호화 하는 암호화 장치에 있어서,
    초단에서는 입력된 64비트의 평문 블록 데이터를, 2단째 이하에서는 전단에서의 처리가 시행된 64비트의 블록 데이터를 입력으로 하고, 그 블록 데이터를 4분할 한 2조의 32비트·데이터에 대해 각각 국소적인 선형 확산처리 및 비선형 변환처리를 시행하여 출력하는 4개의 제1비선형 변환처리부와, 이들 4개의 제1비선형 변환처리부로부터 각각 출력된 2조의 32비트·데이터를 연결한 64비트의 블록 데이터에 대해 최대거리 분리행렬을 이용하여 선형 확산처리를 시행하여 다음 단으로 출력하는 제1확산 처리부로 이루어지고, 직렬접속된 복수의 단 섹션과,
    상기 직렬접속된 복수의 단 섹션의 최후의 단 섹션의 후단에 접속되고, 상기 단 섹션으로부터 출력되는 64비트의 블록 데이터를 입력으로 하고, 그 블록 데이터를 4분할 한 2조의 32비트·데이터에 대해 각각 국소적인 선형 확산처리 및 비선형 변환처리를 시행하여 출력하는 4개의 제2비선형 변환처리부 및,
    상기 4개의 제2비선형 변환처리부의 후단에 접속되고, 이들 4개의 제2비선형 변환처리부로부터 각각 출력된 2조의 32비트·데이터를 연결한 64비트의 블록 데이터에 대해 64비트의 키 데이터를 가산하여 64비트의 암호화 된 블록 데이터로서 출력하는 제1키 가산부를 구비하고,
    상기 제1비선형 변환처리부, 제2비선형 변환처리부의 각각은,
    주어진 1조의 상기 32비트·데이터를 더 4분할 한 2조의 8비트·데이터에 대해 각각 8비트의 키 데이터를 가산하는 4개의 제2키 가산부와,
    각 제2키 가산부의 출력에 대해 각각 8비트의 입출력 변환표를 이용하여 비선형 변환을 행하는 4개의 제2비선형 변환처리부,
    이들 4개의 제2비선형 변환처리부로부터 각각 출력된 2조의 8비트·데이터를 연결한 32비트·데이터에 대해 최대거리 분리행렬을 이용하여 선형 확산처리를 시행하는 제2확산처리부 및,
    상기 제2확산처리부의 후단에 더 접속된 2조의 상기 제2키 가산부 및 제3비선형 변환처리부를 포함한 것을 특징으로 하는 암호화 장치.
  11. 삭제
  12. 삭제
  13. 블록 암호방식에 의한 암호화 방법에 있어서,
    제1데이터 폭의 블록 데이터가 복수로 분할된 제2데이터 폭의 각 부분 데이터에 대해 각각 비선형 변환처리를 시행하는 제1처리를 시행하고,
    상기 제1처리로부터의 각 부분 데이터로 이루어진 제1데이터 폭의 블록 데이터에 대해 선형 확산처리를 시행하는 제2처리를 시행하며,
    상기 제1처리의 전부 또는 일부는, 각각, 제2데이터 폭의 상기 부분 데이터가 더 복수로 분할된 제3데이터 폭의 각 부분에 대해 각각 비선형 변환처리를 시행하는 복수의 비선형 변환처리를 시행하고, 상기 복수의 비선형 변환처리로부터의 각 부분으로 이루어진 제2데이터 폭의 부분 데이터에 대해 선형 확산처리를 시행하는 선형 확산처리를 포함한 것을 특징으로 하는 암호화 방법.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 블록 데이터 암호화 장치에 이용되고, 블록 데이터를 최대거리 분리행렬을 이용하여 확산하는 연산장치에 있어서,
    블록 데이터를 복수로 분할하여 얻어진 부분 데이터의 대응하는 비트위치의 데이터와 최대거리 분리행렬의 각 요소를, 자릿수 넘침을 고려하지 않고 승산하는 승산기와,
    부분 데이터의 상위 소정 비트와, 자릿수 넘침을 조정하기 위한 귀환워드와의 대응관계를 미리 복수 규정하는 테이블 및,
    상기 부분 데이터의 상위 소정 비트를 키로서 상기 테이블로부터 자릿수 넘침을 조정하기 위한 귀환워드를 독출하고, 상기 승산수단에 의한 승산결과와, 독출된 귀환워드와의 배타합을 취하는 회로를 구비하고, 상기 배타합 회로의 출력이 자릿수 넘침이 고려된 승산결과로 되는 것을 특징으로 하는 연산장치.
  22. 블록 암호방식에 의한 복호화 장치에 있어서,
    제1데이터 폭의 블록 데이터가 복수로 분할된 제2데이터 폭의 각 부분 데이터에 대해 각각 비선형 변환처리를 시행하는 제1처리부와,
    상기 제1처리부로부터의 각 부분 데이터로 이루어진 제1데이터 폭의 블록 데이터에 대해 선형 확산처리를 시행하는 제2처리부를 구비하며,
    상기 제1처리부의 전부 또는 일부는, 각각, 제2데이터 폭의 상기 부분 데이터가 더 복수로 분할된 제3데이터 폭의 각 부분에 대해 각각 비선형 변환처리를 시행하는 복수의 비선형 변환처리부와, 상기 복수의 비선형 변환처리부로부터의 각 부분으로 이루어진 제2데이터 폭의 부분 데이터에 대해 선형 확산처리를 시행하는 선형 확산처리부를 포함한 것을 특징으로 하는 복호화 장치.
  23. 제22항에 있어서, 상기 제2처리부는 미리 선택된 최대거리 분리행렬을 이용하여, 제1데이터 폭의 입력블록 데이터로부터 제1데이터 폭의 출력블록 데이터를 구하는 것을 특징으로 하는 복호화 장치.
  24. 제22항에 있어서, 상기 최대거리 분리행렬로서 전행렬요소에 대해 하위 소정 비트만 비영(非零)인 것을 선택하는 것을 특징으로 하는 복호화 장치.
  25. 제22항에 있어서, 상기 최대거리 분리행렬로서 동일한 행에 속하는 전행렬요소가 상이한 값을 갖는 것을 선택하는 것을 특징으로 하는 복호화 장치.
  26. 제22항에 있어서, 상기 제2처리부는, 상기 블록폭으로부터 소정 갯수 건너 1비트를 취해 연결한 데이터를 입력으로 하여 최대거리 분리행렬을 이용하여 출력을 구하는 처리를, 그 1비트를 취출하는 위치를 바꾼 것에 대해 각각 행하는 것을 특징으로 하는 복호화 장치.
  27. 제22항에 있어서, 상기 선형 확산처리부는 미리 선택된 최대거리 분리행렬을 이용하여 입력부분 데이터로부터 출력부분 데이터를 구하는 것을 특징으로 하는 복호화 장치.
  28. 제22항에 있어서, 더 단수에 의존하는 키 데이터를 생성하기 위한 키 생성부를 구비하고,
    상기 키 생성부는, 전단의 출력에 비선형 변환처리를 시행한 것과, 전전단의 출력에 비선형 변환처리를 시행한 것에 선형 확산처리를 시행한 것과의 배타적 논리합을 취한 것을 해당 단의 출력으로 하는 처리를, 필요 단수만큼 반복하여 행하는 수단을 포함하는 것을 특징으로 하는 복호화 장치.
  29. 제1데이터 폭의 블록 데이터가 복수로 분할된 제2데이터 폭의 각 부분 데이터에 대해 각각 비선형 변환처리를 시행하는 제1처리를 시행하고,
    상기 제1처리로부터의 각 부분 데이터로 이루어진 제1데이터 폭의 블록 데이터에 대해 선형 확산처리를 시행하는 제2처리를 시행하며,
    상기 제1처리의 전부 또는 일부는, 각각, 제2데이터 폭의 상기 부분 데이터가 더 복수로 분할된 제3데이터 폭의 각 부분에 대해 각각 비선형 변환처리를 복수 시행하고, 상기 복수의 비선형 변환처리로부터의 각 부분으로 이루어진 제2데이터 폭의 부분 데이터에 대해 선형 확산처리를 시행하는 것을 포함하는 것을 특징으로 하는 복호화 방법.
KR10-2001-0011395A 2000-03-06 2001-03-06 암호화 장치 및 방법과, 연산장치 및, 복호화 장치 및 방법 KR100415410B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2000060482 2000-03-06
JP2000-60482 2000-03-06
JP2000210484A JP3499810B2 (ja) 2000-03-06 2000-07-11 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
JP2000-210484 2000-07-11

Publications (2)

Publication Number Publication Date
KR20010087344A KR20010087344A (ko) 2001-09-15
KR100415410B1 true KR100415410B1 (ko) 2004-01-16

Family

ID=26586845

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0011395A KR100415410B1 (ko) 2000-03-06 2001-03-06 암호화 장치 및 방법과, 연산장치 및, 복호화 장치 및 방법

Country Status (6)

Country Link
US (2) US7227948B2 (ko)
EP (1) EP1133100B1 (ko)
JP (1) JP3499810B2 (ko)
KR (1) KR100415410B1 (ko)
CN (1) CN1322697C (ko)
DE (1) DE60119410T2 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US7382878B2 (en) * 2001-06-22 2008-06-03 Uponus Technologies, Llc System and method for data encryption
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US7046803B2 (en) * 2001-10-06 2006-05-16 Samsung Electronics Co., Ltd. Random keystream generation apparatus and method for use in an encryption system
US7801301B2 (en) 2001-10-10 2010-09-21 Stmicroelectronics S.R.L. Method and circuit for data encryption/decryption
IL147287A0 (en) * 2001-12-25 2002-08-14 Yissum Res Dev Co Method and apparatus for controlling atmospheric conditions
JP4328487B2 (ja) * 2002-01-28 2009-09-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 組合せ回路、暗号回路、その生成方法及びプログラム
WO2003101020A1 (en) * 2002-05-23 2003-12-04 Atmel Corporation Advanced encryption standard (aes) hardware cryptographic engine
US7447310B2 (en) * 2002-08-06 2008-11-04 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Lean multiplication of multi-precision numbers over GF(2m)
US7401109B2 (en) * 2002-08-06 2008-07-15 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Multiplication of multi-precision numbers having a size of a power of two
US7363346B2 (en) * 2002-09-07 2008-04-22 Appistry, Inc. Reliably storing information across multiple computers such as in a hive of computers
EP1480371A1 (en) * 2003-05-23 2004-11-24 Mediacrypt AG Device and method for encrypting and decrypting a block of data
US8577026B2 (en) 2010-12-29 2013-11-05 Ternarylogic Llc Methods and apparatus in alternate finite field based coders and decoders
US7772999B2 (en) * 2007-12-10 2010-08-10 Peter Lablans N-state ripple adder scheme coding with corresponding n-state ripple adder scheme decoding
US20110064214A1 (en) * 2003-09-09 2011-03-17 Ternarylogic Llc Methods and Apparatus in Alternate Finite Field Based Coders and Decoders
DE10345457A1 (de) * 2003-09-30 2005-04-28 Infineon Technologies Ag Verfahren und Vorrichtung zur Ver- und Entschlüsselung
US7415616B2 (en) * 2004-01-21 2008-08-19 National Institute Of Information And Communications Technology Cipher strength evaluation apparatus
FR2871969B1 (fr) * 2004-06-18 2006-12-01 Sagem Procede et dispositif d'execution d'un calcul cryptographique
JP4561252B2 (ja) 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
CA2584525C (en) 2004-10-25 2012-09-25 Rick L. Orsini Secure data parser method and system
JP4527571B2 (ja) * 2005-03-14 2010-08-18 富士通株式会社 再構成可能演算処理装置
US20090144561A1 (en) * 2005-07-11 2009-06-04 Davidson Jack W Method and System for Software Protection Using Binary Encoding
US20070043977A1 (en) * 2005-08-22 2007-02-22 Moxa Technologies Co., Ltd. [program encryption method]
AU2006300744A1 (en) 2005-10-10 2007-04-19 Nds Limited Method and system for block cipher encryption
CN101401341B (zh) 2005-11-18 2016-06-01 安全第一公司 安全数据解析方法和***
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP4905000B2 (ja) * 2006-09-01 2012-03-28 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) * 2006-09-01 2008-03-13 Sony Corp データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
US8259836B2 (en) * 2006-12-04 2012-09-04 Samsung Electronics Co., Ltd. Method and system for generating candidate beamforming coefficients for transmission of data over a wireless medium
US8265177B2 (en) * 2006-12-04 2012-09-11 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed high definition video data using beambook-constructed beamforming signals
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US20080250248A1 (en) * 2006-12-24 2008-10-09 Zeev Lieber Identity Management System with an Untrusted Identity Provider
IL182246A0 (en) * 2007-03-27 2008-01-06 Nds Ltd Method and system for block cipher encryption
US9191197B2 (en) * 2007-10-10 2015-11-17 Canon Kabushiki Kaisha AES encryption/decryption circuit
US8600050B1 (en) * 2008-02-22 2013-12-03 Sprint Communications Company L.P. Encrypting a data transmission using multiple channels
US8098816B2 (en) * 2008-10-17 2012-01-17 Qualcomm Incorporated Apparatus and method for evaluating a cipher structure's resistance to cryptanalysis
US9548758B2 (en) * 2010-01-05 2017-01-17 Alcatel-Lucent Usa Inc. Secure compressive sampling using codebook of sampling matrices
US9295778B2 (en) 2011-12-21 2016-03-29 Deka Products Limited Partnership Syringe pump
US9744300B2 (en) 2011-12-21 2017-08-29 Deka Products Limited Partnership Syringe pump and related method
US9789247B2 (en) 2011-12-21 2017-10-17 Deka Products Limited Partnership Syringe pump, and related method and system
US9443097B2 (en) 2010-03-31 2016-09-13 Security First Corp. Systems and methods for securing data in motion
WO2012174427A2 (en) 2011-06-16 2012-12-20 OneID Inc. Method and system for determining authentication levels in transactions
US10722645B2 (en) 2011-12-21 2020-07-28 Deka Products Limited Partnership Syringe pump, and related method and system
US11217340B2 (en) 2011-12-21 2022-01-04 Deka Products Limited Partnership Syringe pump having a pressure sensor assembly
US9203819B2 (en) 2012-01-18 2015-12-01 OneID Inc. Methods and systems for pairing devices
KR101977823B1 (ko) * 2012-04-02 2019-05-13 삼성전자주식회사 랜덤 순열 생성 방법, 랜덤 순열 생성 장치 및 이를 구비하는 암복호화 장치
JP5772934B2 (ja) * 2013-12-02 2015-09-02 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
WO2015127189A1 (en) 2014-02-21 2015-08-27 Deka Products Limited Partnership Syringe pump having a pressure sensor assembly
US10103877B2 (en) * 2015-09-24 2018-10-16 Intel Corporation SMS4 acceleration processors having round constant generation
US10860962B2 (en) * 2015-10-28 2020-12-08 Qomplx, Inc. System for fully integrated capture, and analysis of business information resulting in predictive decision making and simulation
US10404472B2 (en) 2016-05-05 2019-09-03 Neustar, Inc. Systems and methods for enabling trusted communications between entities
US11108562B2 (en) 2016-05-05 2021-08-31 Neustar, Inc. Systems and methods for verifying a route taken by a communication
US11025428B2 (en) 2016-05-05 2021-06-01 Neustar, Inc. Systems and methods for enabling trusted communications between controllers
US11277439B2 (en) 2016-05-05 2022-03-15 Neustar, Inc. Systems and methods for mitigating and/or preventing distributed denial-of-service attacks
US10958725B2 (en) 2016-05-05 2021-03-23 Neustar, Inc. Systems and methods for distributing partial data to subnetworks
CN114040381A (zh) * 2021-11-08 2022-02-11 百度在线网络技术(北京)有限公司 加密方法、解密方法、装置及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3798359A (en) * 1971-06-30 1974-03-19 Ibm Block cipher cryptographic system
JPH0682259B2 (ja) 1987-11-30 1994-10-19 日本電信電話株式会社 データ拡散装置
JP3717176B2 (ja) * 1993-09-29 2005-11-16 株式会社パンプキンハウス 暗号化/復号装置および方法
US5473693A (en) * 1993-12-21 1995-12-05 Gi Corporation Apparatus for avoiding complementarity in an encryption algorithm
DE69635651T2 (de) 1995-09-05 2006-09-07 Mitsubishi Denki K.K. Vorrichtung und Verfahren zur Datenumwandlung
US5838794A (en) * 1996-01-11 1998-11-17 Teledyne Electronic Technologies Method and apparatus for inter-round mixing in iterated block substitution systems
US7305085B2 (en) 2000-06-30 2007-12-04 Kabushiki Kaisha Toshiba Encryption apparatus and method, and decryption apparatus and method based on block encryption

Also Published As

Publication number Publication date
JP2001324924A (ja) 2001-11-22
EP1133100A2 (en) 2001-09-12
JP3499810B2 (ja) 2004-02-23
US7209556B2 (en) 2007-04-24
US20010024502A1 (en) 2001-09-27
CN1322697C (zh) 2007-06-20
DE60119410D1 (de) 2006-06-14
DE60119410T2 (de) 2006-11-02
CN1312630A (zh) 2001-09-12
EP1133100A3 (en) 2003-01-02
US7227948B2 (en) 2007-06-05
KR20010087344A (ko) 2001-09-15
US20070058805A1 (en) 2007-03-15
EP1133100B1 (en) 2006-05-10

Similar Documents

Publication Publication Date Title
KR100415410B1 (ko) 암호화 장치 및 방법과, 연산장치 및, 복호화 장치 및 방법
US7305085B2 (en) Encryption apparatus and method, and decryption apparatus and method based on block encryption
US7079651B2 (en) Cryptographic method and apparatus for non-linearly merging a data block and a key
US8050401B2 (en) High speed configurable cryptographic architecture
KR101770874B1 (ko) 암호 처리 장치, 암호 처리 방법, 컴퓨터로 판독가능한 기록 매체, 및 정보 처리 장치
Aboytes-González et al. Design of a strong S-box based on a matrix approach
JP2008514975A (ja) sボックス
Kazymyrov et al. Influence of addition modulo 2 n on algebraic attacks
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
US7995764B2 (en) Sharing a secret using hyperplanes over GF(2m)
US6111952A (en) Asymmetrical cryptographic communication method and portable object therefore
Dawood et al. The new block cipher design (Tigris Cipher)
JPH0675525A (ja) 暗号通信装置
Kumar et al. Privacy preserving, verifiable and efficient outsourcing algorithm for matrix multiplication to a malicious cloud server
Yeo et al. Improved algebraic attacks on lightweight block ciphers
Courtois Low-complexity key recovery attacks on GOST block cipher
Rønjom Improving algebraic attacks on stream ciphers based on linear feedback shift register over F _ 2^ k F 2 k
JP6052166B2 (ja) 暗号化方法、暗号化装置および暗号化プログラム
Buell Modern symmetric ciphers—Des and Aes
Sakallı et al. On the construction of 20× 20 and 24× 24 binary matrices with good implementation properties for lightweight block ciphers and hash functions
Somasagar et al. Clefia-a encryption algorithm using novel s-box architecture
Chaves et al. SCA-Resistance for AES: How Cheap Can We Go?
Zajac et al. Cryptographic properties of small bijective S-boxes with respect to modular addition
JP3907976B2 (ja) F関数内部にspn構造を用いた演算装置および演算方法
JP5354914B2 (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: 20121227

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20131219

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20151209

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee