KR20130126924A - 암호 처리 장치 및 암호 처리 방법, 및 프로그램 - Google Patents

암호 처리 장치 및 암호 처리 방법, 및 프로그램 Download PDF

Info

Publication number
KR20130126924A
KR20130126924A KR1020137014092A KR20137014092A KR20130126924A KR 20130126924 A KR20130126924 A KR 20130126924A KR 1020137014092 A KR1020137014092 A KR 1020137014092A KR 20137014092 A KR20137014092 A KR 20137014092A KR 20130126924 A KR20130126924 A KR 20130126924A
Authority
KR
South Korea
Prior art keywords
data
matrix
line
processing
unit
Prior art date
Application number
KR1020137014092A
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
Application filed by 소니 주식회사 filed Critical 소니 주식회사
Publication of KR20130126924A publication Critical patent/KR20130126924A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

일반화 Feistel 구조를 적용한 암호 처리 구성의 소형화를 실현한다. 데이터를 복수 라인으로 분할 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복 실행하는 일반화 Feistel 구조를 적용한 암호 처리 구성에 있어서, 제1 라인의 데이터에 대한 행렬을 적용한 선형 변환 처리를 실행하는 행렬 연산 실행부가 행렬 연산의 실행 사이클 중, 최초의 사이클에 있어서 행렬 연산 과정 데이터와 제2 라인의 데이터의 연산을 실행한다. 본 구성에 의해, 제2 라인의 데이터 유지용의 레지스터와 제1 라인의 행렬 연산 도중 결과 유지용의 레지스터의 공유화가 가능해져서 총 레지스터수의 삭감, 소형화가 실현되었다.

Description

암호 처리 장치 및 암호 처리 방법, 및 프로그램{CODE PROCESSING DEVICE, CODE PROCESSING METHOD, AND PROGRAM}
본 발명은 암호 처리 장치 및 암호 처리 방법, 및 프로그램에 관한 것이다. 더욱 상세하게는, Feistel 구조나 일반화 Feistel 구조를 갖는 공통 키 블록 암호를 실행하는 암호 처리 장치 및 암호 처리 방법, 및 프로그램에 관한 것이다.
정보화 사회가 발전함과 함께, 취급하는 정보를 안전하게 지키기 위한 정보 시큐리티 기술의 중요성이 증가되어가고 있다. 정보 시큐리티 기술의 구성 요소의 하나로서 암호 기술이 있고, 현재에서는 여러가지 제품이나 시스템에서 암호 기술이 이용되고 있다.
암호 처리 알고리즘에는 여러가지의 것이 있지만, 기본적인 기술의 하나로서 공통 키 블록 암호라고 불리는 것이 있다. 공통 키 블록 암호에서는, 암호화용 키와 복호용 키가 공통의 것으로 되어 있다. 암호화 처리, 복호 처리 모두, 그 공통 키로부터 복수의 키를 생성하고, 어떤 블록 단위, 예를 들어 64비트, 128비트, 256비트 등의 블록 데이터 단위로 데이터 변환 처리를 반복 실행한다.
대표적인 공통 키 블록 암호의 알고리즘으로서는, 과거의 미국 표준인 DES(Data Encryption Standard)나 현재의 미국 표준인 AES(Advanced Encryption Standard)가 알려져 있다. 그 밖에도 여러가지 공통 키 블록 암호가 현재도 계속 제안되고 있으며, 2007년에 소니(주)가 제안한 CLEFIA도 공통 키 블록 암호의 하나이다.
이러한 공통 키 블록 암호의 알고리즘은, 주로, 입력 데이터의 변환을 반복 실행하는 라운드 함수 실행부를 갖는 암호 처리부와, 라운드 함수부의 각 라운드에서 적용하는 라운드 키를 생성하는 키 스케줄부에 의해 구성된다. 키 스케줄부는, 비밀 키인 마스터 키(주 키)에 기초하여 우선 비트수를 증가시킨 확대 키를 생성하고, 생성한 확대 키에 기초하여 암호 처리부의 각 라운드 함수부에서 적용하는 라운드 키(부 키)를 생성한다.
이러한 알고리즘을 실행하는 구체적인 구조로서 선형 변환부 및 비선형 변환부를 갖는 라운드 함수를 반복 실행하는 구조가 알려져 있다. 예를 들어 대표적인 구조로 Feistel 구조나 일반화 Feistel 구조가 있다. Feistel 구조나 일반화 Feistel 구조는, 데이터 변환 함수로서의 F 함수를 포함하는 라운드 함수가 단순한 반복에 의해 평문을 암호문으로 변환하는 구조를 갖는다. F 함수에 있어서는 선형 변환 처리 및 비선형 변환 처리가 실행된다. 또한, Feistel 구조를 적용한 암호 처리에 대하여 기재한 문헌으로서는, 예를 들어 비특허문헌 1, 비특허문헌 2가 있다.
암호 알고리즘의 실장 형태에는 소프트웨어 실장과 하드웨어 실장의 2종류가 존재한다. 하드웨어 실장에서는, 회로 규모가 작아지도록 실장함으로써 하드웨어화 시의 비용 절감이나 저소비 전력화를 기대할 수 있다. 그 때문에, 새 알고리즘, 기존 알고리즘을 막론하고, 소형화하기 위한 실장법이 여러가지가 제안되어 있다.
예를 들어, Hamalainen, Alho, Hannikainen, Hamalainen 등은 Substitution Permutation Network(SPN) 구조를 갖는 AES 암호 알고리즘에 대한 소형 실장법을 제안하고 있다. 이 소형 실장법에 대해서는, 비특허문헌 3[Panu Hamalainen, Timo Alho, Marko Hannikainen, and Timo D.Hamalainen. Design and implementation of low-area and low-power aes encryption hardware core. In DSD, pages 577-583.IEEE Computer Society, 2006.9]에 개시되어 있다.
그러나, 이 소형 실장법은 SPN 구조를 이용한 AES 알고리즘 고유의 처리 시퀀스에 적응하는 것이며, SPN 구조와는 상이한 상술한 Feistel 구조나 일반화 Feistel 구조를 갖는 암호 알고리즘인 DES나 CLEFIA 암호 알고리즘에 그대로 적용해도 충분한 소형화를 실현할 수 없다는 문제가 있다.
또한, 상술한 AES 암호는 SPN 구조를 이용한 암호 알고리즘이며, DES 암호나 CLEFIA 암호는 SPN 구조와는 상이한 Feistel 구조나 일반화 Feistel 구조를 이용한 암호 알고리즘이다. 이들의 구체적인 구조에 대해서는 후단에서 상세하게 설명한다.
K. Nyberg, " Generalized Feistel networks", ASIACRYPT'96, SpringerVerlag, 1996, pp.91--104. Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO1989: 461-480 Panu Hamalainen, Timo Alho, Marko Hannikainen, and Timo D.Hamalainen. Design and implementation of low-area and low-power aes encryption hardware core. In DSD, pages 577-583.IEEE Computer Society, 2006.9
본 발명은 예를 들어 상술한 상황을 감안하여 이루어진 것이며, Feistel 구조나 일반화 Feistel 구조를 이용한 암호 처리 구성에 있어서의 소형화를 실현하는 암호 처리 장치 및 암호 처리 방법, 및 프로그램을 제공하는 것을 목적으로 한다.
본 발명의 제1 측면은,
데이터 처리 대상으로 되는 데이터 블록의 구성 비트를 복수의 라인으로 분할하여 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복하여 실행하는 암호 처리부를 갖고,
상기 암호 처리부는,
상기 복수 라인의 제1 라인의 데이터에 대한 변환 데이터를 생성하고, 생성한 변환 데이터에 대하여 상기 제1 라인과 다른 제2 라인의 데이터와의 연산을 행하고, 상기 연산 결과를 다음 라운드의 입력 데이터로 하는 연산을 반복 실행하는 연산부와,
상기 연산부의 연산 결과를 유지하는 레지스터를 갖고,
상기 연산부는, 상기 레지스터로부터 순차, 데이터를 취득하여 취득 데이터순의 연산을 실행하여 연산 결과를 상기 레지스터에 저장하는 구성이며,
상기 연산부는,
상기 제1 라인의 데이터에 대한 행렬을 적용한 선형 변환을 실행하는 행렬 연산 실행부를 갖고,
상기 행렬 연산 실행부는,
상기 제1 라인의 데이터에 대한 행렬 연산의 실행 사이클 중, 최초의 사이클의 행렬 연산의 실행 시에 상기 제2 라인의 데이터와의 연산을 실행하는 암호 처리 장치에 있다.
또한, 본 발명의 암호 처리 장치의 일 실시 형태에 있어서, 상기 행렬 연산 실행부는 전단의 비선형 변환부로부터 순차 출력되는 복수의 단위 데이터에 대한 행렬 연산을 복수 사이클에서 실행하는 구성이며, 상기 복수 사이클의 최초의 사이클에서 상기 비선형 변환부로부터 입력되는 단위 데이터의 행렬 연산에 맞춰서 상기 제2 라인의 데이터와의 연산을 실행한다.
또한, 본 발명의 암호 처리 장치의 일 실시 형태에 있어서, 상기 암호 처리 장치는, 상기 제1 라인의 데이터에 대한 행렬 연산에 필요한 연산 사이클의 완료 후에 상기 제2 라인의 데이터와의 연산을 실행하는 경우에 필요해지는 상기 제2 라인의 데이터 유지용의 독립된 레지스터를 삭감하고, 상기 제1 라인의 데이터에 대한 행렬 연산의 도중 결과의 유지용 레지스터를 상기 제2 라인의 데이터 유지용의 레지스터로서 이용한 구성을 갖는다.
또한, 본 발명의 암호 처리 장치의 일 실시 형태에 있어서, 상기 행렬 연산 실행부는, 상기 제1 라인의 데이터에 대한 행렬 연산을 실행하는 초기 사이클에 있어서, 상기 제1 라인에 대한 행렬 연산 과정 데이터와 상기 제2 라인의 데이터의 배타적 논리합 연산을 실행한다.
또한, 본 발명의 암호 처리 장치의 일 실시 형태에 있어서, 상기 행렬 연산 실행부는, 순회 행렬 또는 아다마르 행렬을 적용한 행렬 연산을 실행하는 구성이다.
또한, 본 발명의 암호 처리 장치의 일 실시 형태에 있어서, 상기 암호 처리부는, 상기 라운드 함수의 실행부로서, 비선형 변환 처리를 실행하는 비선형 변환부와, 행렬을 적용한 선형 변환 처리를 실행하는 선형 변환부로서의 행렬 연산 실행부를 갖는다.
또한, 본 발명의 암호 처리 장치의 일 실시 형태에 있어서, 상기 행렬 연산 실행부는, 상기 비선형 변환부로서의 S-box의 출력을 순차 입력하여 입력 데이터에 대한 행렬 연산을 1사이클 처리로서 실행한다.
또한, 본 발명의 암호 처리 장치의 일 실시 형태에 있어서, 상기 암호 처리부가 실행하는 암호 처리는 Feistel 구조 또는 일반화 Feistel 구조를 적용한 암호 처리이다.
또한, 본 발명의 암호 처리 장치의 일 실시 형태에 있어서, 상기 암호 처리부가 실행하는 암호 처리는 CLEFIA 암호 알고리즘에 따른 암호 처리이다.
또한, 본 발명의 제2 측면은,
암호 처리 장치에 있어서 암호 처리를 실행하는 암호 처리 방법으로서,
암호 처리부가, 데이터 처리 대상으로 되는 데이터 블록의 구성 비트를 복수 라인으로 분할하여 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복하여 실행하는 암호 처리 스텝을 갖고,
상기 암호 처리 스텝에 있어서, 상기 복수 라인을 구성하는 제1 라인의 데이터의 변환 처리를 실행하고, 생성한 변환 데이터에 대하여 상기 제1 라인과 상이한 제2 라인의 데이터와의 연산을 행하고, 상기 연산 결과를 다음 라운드의 입력 데이터로 하는 연산을 반복 실행하고,
상기 제1 라인의 데이터의 변환 데이터 생성 처리에 있어서 실행하는 행렬 연산 처리의 실행 사이클 중, 최초의 사이클의 행렬 연산 처리 시에 상기 제2 라인의 데이터와의 연산을 실행하는 암호 처리 방법에 있다.
또한, 본 발명의 제3 측면은,
암호 처리 장치에 있어서 암호 처리를 실행시키는 프로그램으로서,
암호 처리부에, 데이터 처리 대상으로 되는 데이터 블록의 구성 비트를 복수 라인으로 분할하여 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복하여 실행시키는 암호 처리 스텝을 갖고,
상기 암호 처리 스텝에 있어서, 상기 복수 라인을 구성하는 제1 라인의 데이터의 변환 처리를 실행하고, 생성한 변환 데이터에 대하여 상기 제1 라인과 상이한 제2 라인의 데이터와의 연산을 행하고, 상기 연산 결과를 다음 라운드의 입력 데이터로 하는 연산을 반복 실행시키고,
상기 제1 라인의 데이터의 변환 데이터 생성 처리에 있어서 실행하는 행렬 연산 처리의 실행 사이클 중, 최초의 사이클의 행렬 연산 처리 시에 상기 제2 라인의 데이터와의 연산을 실행시키는 프로그램에 있다.
또한, 본 발명의 프로그램은, 예를 들어 여러가지 프로그램·코드를 실행 가능한 정보 처리 장치나 컴퓨터·시스템에 대하여 예를 들어 기억 매체에 의해 제공되는 프로그램이다. 이러한 프로그램을 정보 처리 장치나 컴퓨터·시스템상의 프로그램 실행부에서 실행함으로써 프로그램에 따른 처리가 실현된다.
본 발명의 또 다른 목적, 특징이나 이점은 후술하는 본 발명의 실시예나 첨부하는 도면에 기초하는 보다 상세한 설명에 의해 밝혀질 것이다. 또한, 본 명세서에 있어서 시스템이란, 복수의 장치의 논리적 집합 구성이며, 각 구성의 장치가 동일 하우징 내에 있는 것에 한하지는 않는다.
본 발명의 일 실시예에 따르면, 일반화 Feistel 구조를 적용한 암호 처리 구성의 소형화나 전력 절약화가 실현된다.
구체적으로는, 데이터를 복수 라인으로 분할 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복하여 실행하는 일반화 Feistel 구조를 적용한 암호 처리 구성에 있어서, 제1 라인의 데이터에 대한 행렬을 적용한 선형 변환 처리를 실행하는 행렬 연산 실행부가 행렬 연산의 실행 사이클 중, 최초의 사이클에 있어서 행렬 연산 과정 데이터와 제2 라인의 데이터의 연산을 실행한다. 본 구성에 의해, 제2 라인의 데이터 유지용의 레지스터와 제1 라인의 행렬 연산 도중 결과 유지용의 레지스터의 공유화가 가능해지고, 총 레지스터수의 삭감, 소형화가 실현된다. 또한 회로 구성의 소형화, 엘리먼트수의 삭감에 의해 전력 소비량의 삭감도 가능해진다.
도 1은 k 비트의 열쇠 길이에 대응한 n 비트 공통 키 블록 암호 알고리즘을 설명하는 도면이다.
도 2는 Feistel 구조의 전체 구조와, 1개의 F 함수의 상세 구성예에 대하여 설명하는 도면이다.
도 3은 일반화 Feistel 구조의 일례에 대하여 설명하는 도면이다.
도 4는 SPN 구조를 적용한 AES 암호 알고리즘의 라운드 함수의 구조에 대하여 설명하는 도면이다.
도 5는 Hamalainen들이 제안한 AES 암호를 실행하는 데이터 암호화부의 데이터 패스를 도시하는 도면이다.
도 6은 Hamalainen들이 제안한 AES 암호를 실행하는 데이터 암호화부의 데이터 패스를 간략화하여 도시한 도면이다.
도 7은 행렬을 적용한 선형 변환 처리를 실행하는 행렬 연산 회로(253)의 동작에 대하여 설명하는 도면이다.
도 8은 아다마르 행렬을 적용한 행렬 연산을 실현하는 행렬 연산 회로에 대하여 설명하는 도면이다.
도 9는 Hamalainen들의 실장법을 4-line 일반화 Feistel 구조에 적용한 경우의 데이터 연산부 회로의 개요도이다.
도 10은 F 함수의 구성예에 대하여 설명하는 도면이다.
도 11은 본 발명의 일 실시예로서의 데이터 패스, 즉 연산 회로 구성을 도시하는 도면이다.
도 12는 도 9에 도시하는 데이터 패스에 따른 행렬 연산 회로(304)에 있어서의 행렬 연산 시퀀스를 도시하는 도면이다.
도 13은 도 11에 도시하는 데이터 패스에 따른 행렬 연산 회로(504)에 있어서의 행렬 연산 시퀀스를 도시하는 도면이다.
도 14는 2라인의 Feistel 구조에 대하여 본 발명을 적용한 데이터 패스로서의 회로 구성예에 대하여 설명하는 도면이다.
도 15는 암호 처리 장치로서의 IC 모듈(700)의 구성예를 도시하는 도면이다.
이하, 도면을 참조하면서 본 발명의 암호 처리 장치 및 암호 처리 방법, 및 프로그램의 상세에 대하여 설명한다. 설명은 이하의 항목에 따라서 행한다.
1. 공통 키 블록 암호의 개요
2. SPN 구조를 적용한 AES 암호 알고리즘에 있어서의 소형 실장 방법의 개요에 대해서
3. SPN의 소형 실장 구성에 있어서의 행렬 연산 회로의 구성과 처리의 상세에 대해서
4. SPN 구조의 소형 실장 구성의 일반화 Feisel 구조로의 적용과 문제점에 대해서
5. 일반화 Feistel 구조의 소형화의 실현 구성에 대해서
6. 본 발명의 구성에 의한 효과 및 변형예에 대해서
7. 암호 처리 장치의 IC 카드로서의 구성예에 대해서
[1. 공통 키 블록 암호의 개요]
우선, 본 발명이 적용 가능한 공통 키 블록 암호의 개요에 대하여 설명한다. 본 명세서에 있어서, 공통 키 블록 암호(이하에서는 블록 암호)는 이하에 정의하는 것을 가리키는 것으로 한다.
블록 암호는 평문(P)과 키(K)를 입력하고, 암호문(C)을 출력한다. 평문과 암호문의 비트 길이를 블록 사이즈라고 칭하고, 여기에서는 n으로 나타낸다. n은 임의의 정수값을 취할 수 있지만, 통상, 블록 암호 알고리즘마다 미리 하나로 정해져 있는 값이다. 또한, 복수의 블록 길이에 대응하는 알고리즘도 있다. 블록 길이가 n인 블록 암호를 n 비트 블록 암호라고 칭하는 경우도 있다.
키의 비트 길이는 k로 나타낸다. 키는 임의의 정수값을 취할 수 있다. 공통 키 블록 암호 알고리즘은 1개 또는 복수의 키 사이즈에 대응하게 된다. 예를 들어, 어떤 블록 암호 알고리즘(A)은 블록 사이즈 n=128이며, 비트 길이 k=128 또는 k=192 또는 k=256의 각종 키 사이즈에 대응한다는 구성도 있을 수 있다.
평문 [P], 암호문 [C], 키 [K]의 각 비트 사이즈는 이하와 같이 나타내진다.
평문(P): n 비트
암호문(C): n 비트
키(K): k 비트
도 1에 k 비트의 열쇠 길이에 대응한 n 비트 공통 키 블록 암호 알고리즘을 설명하는 도면을 도시한다. 도 1에 도시한 바와 같이, 공통 키 블록 암호 처리는, n 비트의 평문(P)과 k 비트의 비밀 키(K)를 입력하여 미리 정해진 암호 알고리즘을 실행해서 n 비트의 암호문(C)을 출력한다. 또한, 도 1에는 평문으로부터 암호문을 생성하는 암호화 처리를 도시하고 있지만, 암호문으로부터 평문을 생성하는 복호 처리에서는 키의 입력순을 반대로 하고, 라운드 함수의 역함수를 구성함으로써, 복호 처리가 이루어진다.
블록 암호는 2개의 부분으로 나누어서 생각할 수 있다. 하나는 키(K)를 입력으로 하고, 어떤 정해진 스텝에 의해 입력 비밀 키(K)의 비트 길이를 확대하여 확대 키(K')(비트 길이(k'))를 출력하는 키 스케줄부(111)와, 평문(P)과 키 스케줄부(111)로부터 입력되는 확대 키(K')로부터 생성되는 라운드 키(RK) 등을 수취하고, 평문(P)을 입력하여 라운드 키(RK) 등을 적용한 암호 처리를 실행해서 암호문(C)을 생성하기 위한 데이터의 변환을 실행하는 데이터 암호화부(112)이다. 또한, 앞서 설명한 바와 같이, 데이터 암호화부(112)를 변경함으로써 복호 처리를 실현할 수 있다.
이와 같이, 공통 키 블록 암호의 알고리즘은, 입력 데이터의 변환을 반복 실행하는 라운드 함수를 갖는 데이터 암호화부(112)와, 라운드 함수부의 각 라운드에서 적용하는 라운드 키를 생성하는 키 스케줄부(111)에 의해 구성된다. 키 스케줄부(111)는 비밀 키(K)를 입력하고, 각 라운드 함수에 입력하는 라운드 키를 생성한다. 예를 들어, r단의 라운드 함수를 행하는 구성으로 한 블록 암호에 있어서는, 1부터 r단까지의 라운드 함수에 각각 RK1, RK2···, Rr의 라운드 키가 입력된다. 또한, 키 스케줄부(111)는 초기 키로서 IK, 최종 키로서 FK를 데이터 암호화부(112)에 출력하고, 이들 키와 처리 데이터의 배타적 논리합이 이루어진다.
앞서 설명한 바와 같이, 공통 키 블록 암호에 있어서의 데이터 암호화부(112)의 대표적인 구조로서 Feistel 구조가 있다. 블록 길이를 n 비트(n-bit)로 한 경우의 구체적인 Feistel 구조의 구성예를 도 2에 도시한다.
Feistel 구조는, 데이터 변환 함수로서의 F 함수를 포함하는 라운드 함수가 단순한 반복에 의해 평문을 암호문으로 변환하는 구조를 갖는다. F 함수에 있어서는 선형 변환 처리 및 비선형 변환 처리가 실행된다.
도 2에는 우측에 Feistel 구조의 전체 구조를 도시하고, 좌측에 1개의 F 함수(120)의 상세 구성도를 도시하고 있다.
도 2의 우측의 Feistel 구조에 도시한 바와 같이, n-bit의 데이터를 n/2-bit씩의 2-line으로 분할하고, 그 n/2-bit의 한쪽을 라운드 내의 F 함수에 입력하고, 그 출력을 다른 한쪽의 n/2-bit와 배타적 논리합해 나가는 구성으로 되어 있다.
각 라운드에 있어서의 F 함수에는 키 스케줄부(111)로부터 입력되는 확대 키(K')로부터 생성되는 라운드 키(RK1 내지 RKr)가 입력된다.
F 함수의 구성에는 여러가지 타입의 것이 있지만, 예를 들어 도 2에 도시하는 F 함수(120)와 같이 라운드 키와의 배타적 논리합 연산을 실행하는 배타적 논리합 연산부(121), 배타적 논리합 연산부(121)의 출력에 대하여 비선형 변환 처리를 실행하는 S-box라고 불리는 비선형 변환부[S](122), 비선형 변환부[S](122)의 출력에 대하여 행렬 연산으로 선형 변환의 처리를 행하는 선형 변환부[M](123)를 갖는 구성이 알려져 있다.
또한, 도 2에 도시한 구조는 Feistel 구조의 구성예의 하나이다. 이 구조 외에, 예를 들어 초기 키(IK)나 최종 키(FK)의 배타적 논리합 연산을 행하는 위치를 변경한 구성 등 다양한 구성이 있다.
도 2에 도시하는 구성은, 처리 대상으로 되는 n-bit의 입력(예를 들어 평문의 구성 데이터)(P)을 2개로 분할해서 n/2-bit씩의 2-line으로서 처리를 행하는 구성이었다. 이와 같이 입력을 2분할하여 처리를 행하는 구성을 Feistel 구조라고 칭한다.
처리 대상 데이터의 분할수는 2분할에 한하지 않고, 여러가지 설정이 가능하다. 분할수를 2로 한정하지 않는 Feistel 구조를 일반화 Feistel 구조라고 칭한다.
도 3을 참조하여 일반화 Feistel 구조의 일례에 대하여 설명한다. 도 3에 도시하는 구성은 처리 대상 데이터를 4분할하여 처리를 행하는 구성예이다.
도 2를 참조하여 설명한 Feistel 구조는, 처리 대상 데이터인 n-bit의 평문 데이터를 n/2-bit씩의 2-line으로 분할하고, 처리를 행하는 구성이었다. 이에 반해, 도 3에 도시하는 구성은, 처리 대상 데이터인 n-bit의 평문 데이터를 n/4-bit씩의 4-line으로 분할하여 처리를 행하는 구성을 갖는다.
도 3에 도시하는 구성은 4-line 일반화 Feistel 구조라고 불린다. 도 3에 도시하는 4-line 일반화 Feistel 구조도, 도 2를 참조하여 설명한 Feistel 구조와 마찬가지로, F 함수를 갖는 라운드 함수를 반복 실행하는 구성을 갖는다.
단, 도 3에 도시한 바와 같이, 입력 n 비트는 4분할되고, 데이터의 흐름이 복잡해져 있다. 도 3에 도시하는 구성에서는, n-bit의 데이터를 n/4-bit씩의 4-line으로 분할하고, 그 중 2-line을 각각 F 함수에 입력하고, 그 출력을 그 밖의 2-line과 배타적 논리합해 나가는 구성으로 되어 있다.
F 함수는, 예를 들어 도 2를 참조하여 설명한 F 함수(120)와 마찬가지로, 라운드 키와의 배타적 논리합 연산을 실행하는 배타적 논리합 연산부(121), 배타적 논리합 연산부(121)의 출력에 대하여 비선형 변환 처리를 실행하는 S-box라고 불리는 비선형 변환부[S](122), 비선형 변환부[S](122)의 출력에 대하여 행렬 연산으로 선형 변환의 처리를 행하는 선형 변환부[M](123)를 갖는 구성이 이용된다.
도 3에 도시하는 4-line 일반화 Feistel 구조와 같이, 데이터 암호화부에 있어서의 처리 라인을 2-line에서 4-line으로 변경함으로써, 라운드 키(RKi), 초기 키(IK), 최종 키(FK)도 n/2-bit에서 n/4-bit의 RKi[0], RKi[1], IK[0], IK[1], FK[0], FK[1]로 분할된다.
또한, 도 3은 4-line 일반화 Feistel 구조를 도시하고 있지만, 처리 데이터를 2-line 이상으로 한 Feistel 구조에 대해서는 모두 일반화 Feistel 구조라고 칭한다.
이하의 본 발명의 설명에 있어서는, 4-line 일반화 Feistel 구조에 있어서의 본 발명의 적용예에 대하여 설명한다. 단, 본 발명은 4-line 일반화 Feistel 구조뿐만 아니라, 2라인(2-line)의 Feistel 구조, 2라인(2-line) 이상의 임의의 처리 라인수를 갖는 일반화 Feistel 구조 중 어디에도 적용 가능하다.
[2. SPN 구조를 적용한 AES 암호 알고리즘에 있어서의 소형 실장 방법의 개요에 대해서]
이어서, 본 발명의 실시예의 설명의 전제로서, 이미 제안되어 있는 SPN 구조를 적용한 AES 암호 알고리즘에 있어서의 소형 실장 방법의 개요에 대하여 설명한다.
앞서 설명한 바와 같이, 예를 들어 Hamalainen, Alho, Hannikainen, Hamalainen들은 Substitution Permutation Network(SPN) 구조를 갖는 AES 암호 알고리즘에 대한 소형 실장법으로서, 예를 들어 필요한 레지스터수를 삭감한 구성을 제안하고 있다. 이 소형 실장법에 대해서는, 비특허문헌 3[Panu Hamalainen, Timo Alho, Marko Hannikainen, and Timo D.Hamalainen. Design and implementation of low-area and low-power aes encryption hardware core. In DSD, pages 577-583.IEEE Computer Society, 2006.9]에 개시되어 있다.
이 AES 암호 알고리즘의 소형 실장 방법에 대하여 설명한다.
우선, 도 4를 참조하여 SPN 구조를 적용한 AES 암호 알고리즘의 라운드 함수의 구조에 대하여 설명한다.
또한, SPN 구조를 적용한 AES 암호 알고리즘에 있어서도 Feistel 구조와 마찬가지로, 라운드 함수를 복수회 반복 실행하는 구성을 갖는다.
도 4는 SPN 구조를 적용한 AES 암호 알고리즘에 있어서 이용되는 라운드 함수 실행부의 구성예를 도시하는 도면이다. AES에서는 도 4에 도시하는 라운드 함수를 복수회 반복하여 평문으로부터 암호문, 또는 암호문으로부터 평문의 생성을 행한다.
도 4에 도시하는 라운드 함수 실행부는 이하의 구성 요소에 의해 구성된다.
비선형 변환 처리를 실행하는 8비트 입출력의 16개의 S-box를 포함하여 이루어지는 비선형 변환부(201),
비선형 변환부(201)를 구성하는 S-box로부터의 8비트 출력의 교체 처리로서의 Shift Low 실행부(202),
Shift Low 실행부(202)의 출력을 32비트 단위로 입력하여 행렬을 적용한 선형 변환 처리를 실행하는 4개의 행렬 연산부를 포함하여 이루어지는 선형 변환부(203),
선형 변환부(203)를 구성하는 4개의 행렬 연산부 각각으로부터의 32비트 출력에 대하여 32비트의 라운드 키와의 배타적 논리합 연산을 실행하는 4개의 연산부를 포함하여 이루어지는 배타적 논리합 연산부(204)를 갖는다.
도 4에 도시하는 예는, 입출력(128) 비트의 라운드 함수 실행부이며, 16개의 S-box 각각에 8비트, 계 8×16=128비트를 입력하고, 4개의 배타적 논리합부의 각각 내지 32비트, 계 32×4=128비트 출력을 행하는 구성이다. 비선형 변환부(201), Shift Low 실행부(202), 선형 변환부(203), 배타적 논리합 연산부(204), 이들을 적용한 일련의 처리를 1회의 라운드 함수의 실행 처리로서 실행하고, 이 라운드 함수를 복수회 반복해서 128비트의 입력 데이터(예를 들어 평문)로부터 128비트의 출력(예를 들어 암호문)을 생성하여 출력한다.
AES의 실장에 있어서, 1개의 라운드 함수의 처리(1round), 즉, 비선형 변환부(201), Shift Low 실행부(202), 선형 변환부(203), 배타적 논리합 연산부(204), 이들을 적용한 일련의 처리를 1사이클(1cycle)에서 실행하고자 하면, 적어도 도 4에 도시한 바와 같이, 16개의 S-box의 회로와 4개의 행렬 연산 회로가 데이터 암호화부의 구성으로서 필요해진다.
Hamalainen들은 1개의 라운드 함수의 처리(1round)를 1사이클이 아니라, 16 사이클(16cycle)에서 순차 시리얼 처리로서 행하는 설정으로 함으로써 데이터 암호화부의 소형화를 실현하였다.
이 소형화 구성에서는, S-box의 회로는 1개밖에 사용하지 않고, 또한, 4사이클(4cycle) 걸려서 1개의 행렬 연산을 실행한다. 이러한 실장으로 함으로써 행렬 연산 회로의 소형화를 실현하고 있다.
도 5에 Hamalainen들이 제안한 AES 암호를 실행하는 데이터 암호화부의 데이터 패스를 도시한다. 도 5에 도시하는 구성은, 도 4에 도시하는 AES 암호의 라운드 함수를 실행하는 하드웨어 구성에 상당한다.
도 5에 도시하는 구성에 있어서, 연산중의 데이터는 8-bit 단위로 분할되고, 각 8비트 데이터를 레지스터(r01 내지 r19)에 저장하고 있다. 도 5에는 19개의 레지스터(r01 내지 r19)가 도시되어 있다. 19개의 레지스터(r01 내지 r19) 각각은 8비트 데이터를 유지하는 8비트 레지스터이다.
도 4를 참조하여 설명한 바와 같이, 도 4에 도시하는 구성예는 입출력(128) 비트의 라운드 함수 실행부이며, 도 5는 입출력(128) 비트의 라운드 함수를 8비트 단위 데이터의 시리얼 처리로서 실행하는 하드웨어 구성에 대응한다.
도 5의 구성에 있어서, 입출력 데이터를 모두 저장하기 위해서 필요해지는 8비트 레지스터의 수는 128/8=16이며, 16개의 레지스터가 있으면 된다. 도 5에는 19개의 레지스터가 있고, 3개의 레지스터가 여분이지만, 이들 24비트분의 3개의 레지스터는 행렬을 적용한 선형 변환 처리를 실행하기 위한 행렬 연산 처리를 위해서 이용된다.
또한, 도 4를 참조하여 설명한 바와 같이, AES에서는, 비선형 변환을 실행하는 S-box와 선형 변환을 실행하는 행렬 연산의 사이에 Shift Low 실행부에 의한 데이터 치환이 실행된다. Hamalainen들의 실장 방법에서는, 도 5 중의 몇개의 레지스터 앞에 멀티플렉서(Multiplexer)(m01 내지 m08)를 도입함으로써 Shift Low 실행부에서 행해지는 치환을 실현하고 있다.
도 5에 도시한 바와 같이, 비선형 변환부로서의 S-box(252)는 1개밖에 없다. 이 S-box(252)에 대하여 8비트 데이터를 순차 입력하고, 16사이클에서 도 4에 도시하는 16개의 S-box에 의한 비선형 변환 처리를 실행한다.
S-box(252)의 출력은 행렬 연산 회로(253)에 입력되고, 행렬 연산 회로(253)에 있어서 행렬을 적용한 선형 변환 처리가 실행된다. 또한, 도 4의 구성에서는, S-box에 의한 처리 데이터를 Shift-Low 실행부에서 치환한 후, 행렬 연산을 행하는 구성으로 되어 있지만, 도 5에 도시하는 예에서는, S-box(252)의 출력을 행렬 연산 회로(253)에 직접 입력하는 구성으로 하고 있다. 도 5의 구성에서는, Shift-Low 실행부에서의 치환 처리에 상당하는 처리는 도 5에 도시하는 레지스터군(r01 내지 r19) 내의 멀티플렉서(m01 내지 m08)의 동작에 의해 실행한다.
도 5에 도시하는 행렬 연산 회로(253)에서는, 도 4에 도시하는 선형 변환부(203)의 4개의 행렬 연산 회로의 처리가 순차 실행된다. 도 4에 도시하는 선형 변환부(203)의 4개의 행렬 연산 회로의 1개의 행렬 연산 회로에서 실행하는 행렬을 적용한 선형 변환 처리를 4사이클에서 실행한다. 이 처리에 대해서는 후단에서 상세하게 설명한다.
도 4에 도시하는 배타적 논리합 연산부(203)의 배타적 논리합 연산 처리는 도 5의 배타적 논리합 연산부(254a, 254b)에 있어서 실행된다. 이들 배타적 논리합 연산부(254a, 254b)에 있어서, 처리 데이터와, 키 생성부(251)가 출력하는 라운드 키의 배타적 논리합 연산 처리를 실행한다.
도 4에 도시하는 Shift Low 실행부(202)의 데이터 치환 처리는, 상술한 바와 같이 도 5에 도시하는 레지스터군(r01 내지 r19) 내의 멀티플렉서(m01 내지 m08)의 동작에 의해 실행되게 된다.
도 5에 도시하는 Hamalainen들이 제안한 SPN 구조에 의한 AES 알고리즘의 실행 구성에서는 S-box를 1개만으로 하고 있다.
레지스터수는 도 5에 도시한 바와 같이 152비트분의 레지스터(8비트 레지스터×19)로 되어 있다. 또한, 키 생성부(251)에도 128비트 키 데이터를 유지하는 128비트 레지스터가 필요해진다.
도 5에 도시하는 Hamalainen들이 제안한 SPN 구조를 적용한 AES 알고리즘의 실행 구성은 S-box수를 1개만으로 하고, 또한 필요한 레지스터수도 최소한의 설정으로 한 소형 실장을 실현하고 있다.
[3. SPN의 소형 실장 구성에 있어서의 행렬 연산 회로의 구성과 처리의 상세에 대해서]
이어서, 도 5를 참조하여 설명한 SPN의 소형 실장 구성에 있어서의 행렬 연산 회로의 구성과 처리의 상세에 대하여 설명한다.
도 5를 참조하여 설명한 Hamalainen들이 제안한 SPN 구조에 의한 AES 알고리즘의 실행 구성 중, 행렬 연산 회로(253)가 실행하는 행렬을 적용한 선형 변환 처리에 대하여 설명한다.
설명의 간단화를 위해서, 도 6과 같이, Shift Low 실행부에 의한 데이터 치환을 행하는 회로나, 키 스케줄부에 대해서는 생략한 데이터 패스를 사용하여 설명한다.
도 6 중의 레지스터군(261)은 도 5 중의 12개의 레지스터(r04 내지 r15)와 멀티플렉서(m05 내지 m08)를 포함하는 회로에 상당하고, 96-bit분의 데이터를 유지하고, Shift Low도 고려된 레지스터의 집합을 나타낸다.
도 7을 사용하여 행렬을 적용한 선형 변환 처리를 실행하는 행렬 연산 회로(253)의 동작에 대하여 설명한다. 이제, 하기의 연산을 도 7에 도시하는 행렬 연산 회로(253)를 사용하여 실행하기로 하자. 또한, 하기의 연산은 모두, 어떤 유한체(有限體)(GF)(28) 상에서 행해지는 것으로 한다.
Figure pct00001
또한, 수학식(1)에 나타내는 (x0, x1, x2, x3)은 행렬 연산 회로(253)에 대한 입력(S-box로부터의 출력),
(y0, y1, y2, y3)은 행렬 연산 회로(253)의 출력(선형 변환 결과),
4×4의 행렬은 행렬 연산 회로(253)에 있어서 적용하는 행렬(선형 변환 행렬)에 대응한다.
또한, 4×4의 선형 변환 행렬의 요소는 16진수값으로 나타내고 있다.
본 예에서는, (x0, x1, x2, x3)의 각각은 S-box(252)로부터의 1사이클당의 출력이며 8비트 데이터이다. 출력 (y0, y1, y2, y3)의 각각도 8비트 데이터이다.
또한, 도 7의 행렬 연산 회로(253)에서는, 도 4에 도시하는 4개의 행렬 연산부를 포함하여 이루어지는 선형 변환부(203)의 처리를 행한다. 도 4에 도시하는 4개의 행렬 연산부의 각각은, 4개의 S-box에 있어서 각각 비선형 변환된 데이터의 출력(8비트 출력)을 입력하여 선형 변환을 실행한다. 그러나, 도 5, 도 7에 도시하는 구성에서는, S-box가 1개의 S-box(252)만으로 삭감되고, 1사이클에서 도 4에 도시하는 16개의 S-box 중의 1개분의 S-box의 출력만이 행해진다.
따라서, 도 7의 행렬 연산 회로(253)에서는, 1개의 S-box(252)로부터 4사이클 걸쳐서 필요해지는 도 4에 도시하는 4개의 S-box로부터의 출력 (x0, x1, x2, x3)을 입력하게 된다.
예를 들어 도 7의 행렬 연산 회로(253)에 있어서, 도 4에 도시하는 행렬 연산 회로(203a)의 행렬 연산 처리를 실행할 경우, 도 4에 도시하는 행렬 연산 회로(203a)에 대한 S-box 출력((1) 내지 (4))이 도 7에 도시하는 행렬 연산 회로(253)에 순차 S-box(252)로부터 4사이클 걸쳐서 입력되게 된다.
도 7에 도시하는 행렬 연산 회로(253)에 대한 S-box(252)로부터의 입력은,
제1 사이클에 있어서 데이터(x0),
제2 사이클에 있어서 데이터(x1),
제3 사이클에 있어서 데이터(x2),
제4 사이클에 있어서 데이터(x3),
이러한 데이터이며, 이 데이터를 사용하여 행렬을 적용한 선형 변환 결과로서의 (y0, y1, y2, y3)을 출력한다.
이 데이터 변환을, 행렬을 사용하여 행하는 것이 도 7에 도시하는 행렬 연산 회로(253)이며, 이 변환 처리를 식으로 표현한 것이 상기한 (수학식 1)이다.
상술한 바와 같이, S-box(252)의 각 사이클에 있어서의 출력(x0, x1, x2, x3)의 각각은 각각 8비트 데이터이며, 행렬 연산 회로(253)에 있어서의 행렬을 적용한 선형 변환 결과로서의 y0, y1, y2, y3의 각각도 각각 8비트 데이터이다.
이하, 각 사이클에 있어서의 처리에 대하여 설명한다.
도 7에 도시하는 행렬 연산 회로(253)는 1사이클(1cycle)째에 입력 데이터(din)로서 x0을 입력한다. 이 시점에서, 논리곱 회로(271 내지 274)에 입력되어 있는 인에이블 신호(en)를 0으로 해 둔다. 또한, 도 5 내지 도 7에는 도시되어 있지 않지만, 제어부에 의해 제어가 이루어진다.
도 7에 도시하는 최상단의 라인(L1)에서는, 입력 데이터(din)=x0이 그대로 배타 논리합부(281)를 통과하여 레지스터(r16)에 저장된다.
두번째 라인(L2)에서도 입력 데이터(din)=x0이 그대로 배타 논리합부(282)를 통과하여 레지스터(r17)에 저장된다.
세번째 라인(L3)과 네번째 라인(L4)에서는, 입력 데이터(din)로서의 x0으로 미리 규정된 값: 2, 3과의 유한체 상에서의 승산 처리가 실행된다. 즉, 승산부(285, 286)에 있어서 이하의 승산이 실행된다.
x0·2,
x0·3,
이들을 계산한다.
이들의 연산 결과가 배타 논리합부(283, 284)를 통과하여 레지스터(r18, r19)에 저장된다.
또한, 첫번째 라인(L1)과 두번째 라인(L2)에는 승산부가 설정되어 있지 않지만, 입력 데이터(din)로서의 x0으로 미리 규정된 값: 1과의 유한체 상에서의 승산 처리가 실행되어 있으면 동등하다.
2, 3, 4cycle째에는 입력 데이터(din)로서 x1, x2, x3을 각각 입력한다. 이 2, 3, 4cycle째는 1cycle째와는 상이하고, 논리곱 회로(271 내지 274)에 입력되어 있는 인에이블 신호(en)를 1로 한다.
이 설정에 의해, 배타 논리합부(281 내지 284)에서는, 입력 데이터 또는 그 승산값과 논리곱 회로(271 내지 274)로부터의 출력과의 배타적 논리합 연산이 실행되고, 그 결과가 레지스터(r16 내지 r19)에 저장되게 된다.
이러한 처리에 의해 4cycle 후의 레지스터(r16 내지 r19)에는 상기 식(수학식 1)에 따라서 산출되는 결과가 저장된다. 즉,
(dout0, dout1, dout2, dout3)
=(y0, y1, y2, y3)
이 된다.
이와 같이, 도 7에 도시하는 행렬 연산 회로(253)에 의해, 4사이클의 처리에서 상기 (수학식 1)에 따른 행렬 연산이 실행되게 된다.
또한, 도 7를 참조하여 설명한 처리는, AES에서 채용되어 있는 순회 행렬에 의한 행렬 연산에 의한 선형 변환 처리를 실현하는 회로이지만, 다른 상이한 행렬을 적용한 선형 변환 처리도, 회로의 승산부의 설정과 접속 구성 등을 변경함으로써 실현할 수 있다. 예를 들어, 하기와 같은 아다마르 행렬을 적용한 행렬 연산을 실현하는 회로는 도 8에 도시하는 행렬 연산 회로(290)에 의해 실현 가능하다.
Figure pct00002
또한, 수학식(2)에 나타내는 (x0, x1, x2, x3)은 도 8에 도시하는 행렬 연산 회로(290)에 대한 입력(S-box로부터의 출력)
(y0, y1, y2, y3)은 행렬 연산 회로(290)의 출력(선형 변환 결과)
4×4의 행렬은 행렬 연산 회로(290)에 있어서 적용하는 행렬(선형 변환 행렬)에 대응한다.
또한, 4×4의 선형 변환 행렬의 요소는 16진수값으로 나타내고 있다.
도 8에 도시하는 아다마르 행렬을 적용한 행렬 연산을 실현하는 행렬 연산 회로(290)와, 도 7에 도시하는 순회 행렬을 실현하는 행렬 연산 회로(253)의 상이한 점은 예를 들어 이하의 구성이다.
승산부(291 내지 294)가 수학식(2)에 나타내는 4×4의 아다마르 행열을 포함하여 이루어지는 선형 변환 행렬의 요소에 대응한 설정으로 되어 있다.
논리곱 회로를 멀티플렉서(Multiplexer)(295 내지 298)로 변경하여, 각 레지스터(r16 내지 r19)로의 입력을 2개의 다른 레지스터로부터의 출력이나 0, 이들 3개 중에서 1개 선택하는 설정으로 하고 있다.
이들 구성이 변경점이다.
도 4 내지 도 8을 참조하여 설명한 Hamalainen들이 제안한 SPN 구조를 사용한 AES 암호 구성의 소형 실장 구성은, S-box를 1개만으로 삭감하고, 레지스터수를 최소한의 설정으로 한 구성을 실현하고 있다.
1라운드의 라운드 연산에 적용하는 필요한 레지스터는, 단순 계산을 행하면 이하와 같이 된다. 단, 라운드 연산에 있어서의 처리 데이터 사이즈로서의 블록 사이즈(n)는 n=128비트로 한다.
(1)라운드 키 저장용의 128비트 레지스터
(2)처리 데이터 저장용의 128비트 레지스터
(3)선형 변환 행렬을 적용한 행렬 연산에 있어서 연산 도중 결과를 저장하기 위한 32비트 레지스터
데이터 연산부에는 (2), (3)의 레지스터가 필요해지고, 128+32=160비트 레지스터가 필요해진다고 계산된다.
그러나, 도 5에 도시하는 Hamalainen들이 제안한 구성에서는, 160비트보다 8비트 적은 152비트 레지스터(=8비트 레지스터×19)로 하는 것에 성공하고 있다.
Hamalainen들이 제안한 구성은, S-box로부터 행렬 연산 회로에 입력을 마친 값(8비트)이 다음 라운드에서는 불필요해진다. 이 점에 착안하여 행렬 연산 회로로 S-box로부터 입력되는 32-bit 중, 처음에 입력하는 8-bit분의 레지스터를 행렬 연산 회로 내의 레지스터와 공유하는 구성으로 함으로써 8-bit분의 레지스터를 삭감한 것이다.
[4. SPN 구조의 소형 실장 구성의 일반화 Feisel 구조로의 적용과 문제점에 대해서]
상술한 바와 같이, Hamalainen들은 SPN 구조의 소형화를 실현하고 있다. 그러나, 이 소형화 구성은 SPN 구조에 대응한 특유의 구성이며, 이 소형 실장 구성을 일반화 Feisel 구조로 적용해도 충분한 소형화의 효과는 얻을 수 없다. 이하, 이 문제점에 대하여 설명한다. 또한, 이하의 설명에서는 일반화 Feisel 구조는 Feisel 구조를 포함하는 개념인 것으로서 설명한다.
도 5를 참조하여 설명한 Hamalainen들의 제안 구성을 일반화 Feistel 구조를 갖는 CLEFIA 등의 알고리즘을 실행하는 구성에 단순하게 적용하면, 행렬 연산을 위해서 행렬의 출력 비트 길이분의 데이터를 저장하는 레지스터가 필요해진다. 이것은 일반화 Feistel 구조가 SPN 구조와는 상이하고, 예를 들어 라운드 함수 내의 F 함수에 입력한 값을 다음 라운드에서도 이용할 필요가 있다는 처리 시퀀스의 근본적인 차이에 기인하는 것이다.
또한, SPN 구조에서는 존재하지 않았지만, 일반화 Feistel 구조에서는 라운드 함수 내에 있어서 F 함수 연산 후에 다른 라인과 배타적 논리합을 행할 필요가 있다. 그 때문에, 배타적 논리합을 행하기 위한 회로도, 일반화 Feistel 구조의 라인의 비트 길이분만큼 필요해진다.
도 9는 Hamalainen들의 실장법을 4-line 일반화 Feistel 구조에 적용한 경우의 데이터 연산부 회로의 개요도를 도시하는 도면이다. 도 9에서는, 먼저 도 6을 참조하여 설명한 AES의 데이터 패스와 마찬가지로, 일반화 Feistel 구조의 라운드 함수 종료 시의 치환 동작이나 키 스케줄부는 생략되어 있다.
또한, 라운드 연산에 있어서의 처리 데이터 사이즈로서의 블록 사이즈는 n 비트로 한다. 앞서 도 3을 참조하여 설명한 바와 같이, 4-line 일반화 Feistel 구조에서는 4개의 라인 각각에 n/4비트씩 입력되어, 순차 전송된다.
도 9 중의 레지스터군(301)은 도 6에 도시하는 레지스터군(261)에 대응한다. 단, 4-line 일반화 Feistel 구조에 대응하는 도 9의 레지스터군(301)은 (3/4)n-bit분의 데이터를 유지하는 레지스터와 라운드 함수 종료 시의 치환 동작과 동일한 처리를 실현하는 멀티플렉서 등의 조합으로서 구성된다. 즉, 레지스터군(301)의 하측의 데이터 연산부에 1라인분의 (1/4)n비트분의 데이터가 유지된다고 하면, 도 9의 레지스터군(301)에는 (3/4)n-bit분의 데이터를 유지하는 레지스터가 필요해진다.
또한, 도 9에 도시하는 4-line 일반화 Feistel 구조를 적용한 암호 알고리즘의 데이터 패스(연산 실행 회로)를 적용하여 실행하는 연산은, 도 3에 도시하는 4-line 일반화 Feistel 구조를 적용한 연산 처리에 대응한다.
도 9에 도시하는 데이터 패스를 이용하여 도 3에 도시하는 4-line 일반화 Feistel 구조 내의 F 함수를 포함하는 라운드 함수를 실행하게 된다.
라운드 함수 내의 F 함수의 구체예를 도 10에 도시한다.
도 10에 도시하는 F 함수는, 앞서 도 2를 참조하여 설명한 Feistel 구조의 F 함수와 마찬가지로 이하의 구성 요소를 갖는다.
(a)라운드 키와의 배타적 논리합 연산을 실행하는 배타적 논리합 연산부(321),
(b)배타적 논리합 연산부(321)의 출력에 대하여 비선형 변환 처리를 실행하는 S-box를 포함하여 이루어지는 비선형 변환부[S](322),
(c)비선형 변환부[S](322)의 출력에 대하여 행렬 연산에 의해 선형 변환의 처리를 행하는 선형 변환부[M](323),
이들 구성 요소를 갖는다.
단, 4-line 일반화 Feistel 구조에 있어서의 F 함수에 대한 입출력은 n/4비트가 된다.
또한, 선형 변환부[M](323)에서 실행하는 행렬을 적용한 행렬 연산으로서의 선형 변환 처리에 적용하는 행렬은, 1행째의 요소가 (a, b, c, d)가 되는 순회 행렬을 상정하고 있다. 즉, 이하의 (수학식 3)에 나타내는 행렬이다.
Figure pct00003
앞서 도 4 내지 도 8을 참조하여 설명한 SPN 구조를 적용한 AES 암호 알고리즘의 구성과 비교하기 위해서, 처리 단위로서의 블록 구성 비트(n)는,
n=128-bit
로 한다.
도 9에 도시하는 회로도, 도 6에 도시하는 회로와 마찬가지로, S-box는 1개뿐이다. 도 9에 도시하는 S-box(303)이다. 이 S-box(303)는 도 10에 도시하는 F 함수 내에 설정되는 1개의 S-box의 처리를 1사이클에서 실행한다. 사이클마다 순차 도 10에 도시하는 각 S-box의 처리를 행하게 된다.
도 10에 도시한 바와 같이, F 함수의 1개의 S-box에는 4-line 일반화 Feistel 구조의 1개의 line을 전송하는 n/4비트의 1/4, 즉 n/16비트가 입력되어 비선형 변환 처리가 실행된다.
도 9에 도시하는 S-box(303)에는 n/16비트씩이 사이클마다 입력되어 비선형 변환 처리가 실행된다.
또한, 도 9의 구성에서는, 레지스터군(301)으로부터 1사이클 단위로 S-box(303)의 처리 단위인 n/16비트의 데이터를 출력하는 설정이며, 이 n/16비트를 우선, 배타적 논리합부(302)에서 라운드 키의 구성 데이터와 배타적 논리합을 행하는 S-box에서 비선형 변환을 실행하는 구성으로 하고 있다.
S-box(303)에 있어서 비선형 변환이 이루어진 데이터는 n/16비트마다 1사이클 단위로 다음 행렬 연산 회로(304)에 입력된다. 행렬 연산 회로(304)에서는 소정의 행렬을 적용한 선형 변환 처리가 실행되게 된다.
도 9에 도시하는 4-line 일반화 Feistel 구조를 적용한 암호 알고리즘의 데이터 패스 구성 중, 레지스터군(301)을 제외한 연산 실행 회로와, 앞서 도 6을 참조하여 설명한 SPN 구조를 이용한 AES 암호 처리를 실행하는 연산 회로 구성을 비교한다.
도 6에 도시하는 연산 회로에서는 8비트 레지스터가 r01 내지 r03, r16 내지 r19의 7개인 것에 비해, 도 9에 도시하는 연산 회로에서는 8비트 레지스터가 R0 내지 R7의 8개이다. 즉, 8-bit 레지스터의 수가 1개 증가하고 있다.
또한, 배타적 논리합 연산 회로의 수도 증가하고 있다.
이와 같이, Hamalainen들의 제안 구성을 일반화 Feistel 구조에 적용한 경우, 도 9에 도시하는 연산 회로와 같이, 블록 길이분의 레지스터 외에 1-line분의 레지스터와 배타적 논리합 연산 회로가 필요해지게 된다.
레지스터의 증가는 회로 규모에 크게 영향을 미치므로, 블록 길이분만의 레지스터로 구성할 수 있는 실장법을 실현할 수 있으면, 그 쪽이 바람직하다.
또한, 레지스터의 게이트 사이즈는 다른 셀에 비하여 비교적 큰 것이 되고, 레지스터수의 증가는 게이트 사이즈에 크게 영향을 미친다. 그 때문에, 소형화를 실현하기 위한 하나의 방향성으로서, 레지스터의 증가를 억제한 실장법을 고려하는 것이 중요해진다.
[5. 일반화 Feistel 구조의 소형화의 실현 구성에 대해서]
이어서, 본 발명의 구성, 즉, 일반화 Feistel 구조의 소형화의 실현 구성에 대하여 설명한다.
Hamalainen들의 실장법을, 일반화 Feistel 구조를 갖는 암호 알고리즘의 실행 구성에 적용한 경우에는, 앞절에서 설명한 바와 같이 레지스터와 배타적 논리합의 회로가 증가해버려서 소형화가 실현되지 않는다.
이것은, SPN 구조를 적용한 암호 알고리즘과, 일반화 Feistel 구조를 적용한 암호 알고리즘이 상이한 것, 특히, 일반화 Feistel 구조를 적용한 암호 알고리즘에서는, 행렬 연산 결과를 구하고나서 다른 라인과의 배타적 논리합을 행하는 설정으로 되어 있는 것 등이 요인이라고 생각할 수 있다.
즉, 일반화 Feistel 구조를 적용한 암호 알고리즘에서는, 행렬의 도중 결과를 유지하는 레지스터와 다른 라인의 데이터를 유지하는 레지스터의 양쪽이 필요해진다.
또한, 일반화 Feistel 구조를 적용한 암호 알고리즘에서는, 1개의 라인의 데이터에 대한 행렬 연산이 종료하면, 다음 사이클(cycle)에서 새로운 라인의 행렬의 연산이 시작된다. 이 때문에, 그 1cycle동안에 다른 라인과의 배타적 논리합을 행할 필요가 있다. 그 때문에, 1-line분의 배타적 논리합의 회로가 필요해진다.
이하에 설명하는 본 발명의 구성에서는, 배타적 논리합 연산에 있어서의 결합 법칙, 즉, 이하의 식이 성립하는 것을 이용하여 연산 순서를 변경함으로써 필요한 레지스터의 삭감을 실현하고 있다.
Figure pct00004
상기 수학식(4)는 배타적 논리합 연산의 순서를 변경해도 동일한 결과를 얻을 수 있는 것을 의미하고 있다. 본 발명에서는, 이 법칙을 이용하여 연산 순서를 변경함으로써 필요한 레지스터의 삭감을 실현하고 있다.
구체적으로는, 다른 라인의 데이터를 유지하고 있는 레지스터에 행렬 연산의 도중 결과를 배타적 논리합해 나가도록 연산 순서를 변경한다. 이와 같이 연산 순서를 변경함으로써, 행렬 연산의 도중 결과를 유지할 필요가 없어져서 레지스터수를 삭감할 수 있다.
도 11에 본 발명의 일 실시예로서의 데이터 패스, 즉 연산 회로 구성을 도시한다. 도 11에 도시하는 연산 회로는, 앞서 도 3을 참조하여 설명한 4-line 일반화 Feistel 구조를 적용한 암호 알고리즘의 실행 회로이다. 구체적으로는, 순회 행렬 연산부를 아다마르 행렬 연산부로 치환함으로써, 예를 들어 CLEFIA 암호의 실행 회로로서 이용 가능하다.
또한, 도 11에 도시하는 회로는, 도 9와 마찬가지로, 4-line 일반화 Feistel 구조의 라운드 함수 종료 시의 치환 동작의 실행 회로나 키 스케줄부의 구성에 대해서는 생략하였다.
도 11 중의 레지스터군(501)은 도 9에 도시하는 레지스터군(301)에 대응한다. 즉, 레지스터군(501)은 데이터 유지용의 레지스터와 라운드 함수 종료 시의 치환 동작의 실행 기능을 갖는 회로에 의해 구성된다.
그러나, 도 11 중의 레지스터군(501)은 도 9에 도시하는 레지스터군(301)보다도 적은 레지스터수로 설정되어 있다.
도 9에 도시하는 레지스터군(301)은 앞서 설명한 바와 같이, (3/4)n-bit분의 데이터를 유지하는 레지스터와 라운드 함수 종료 시의 치환 동작의 실행 기능을 갖는 회로를 포함하는 구성으로서 설명하였다.
이에 비해, 도 11에 도시하는 레지스터군(501)에 포함되는 레지스터는 n/2-bit분의 데이터를 유지하는 레지스터뿐이다.
처리 데이터로서의 블록의 비트수를 n, 즉, 4-line 일반화 Feistel 구조를 적용한 암호 처리 단위로서의 블록의 비트수: n이,
n=128-bit
로 한다.
이 설정에서, 앞서 설명한 도 9의 구성에서는,
레지스터군(301)에, (3/4)n-bit=96-bit
레지스터군(301) 이외의 연산부에 8비트 레지스터가 8개인 8×8=64-bit
총계로,
96+64=160-bit
의 레지스터가 필요하게 되어있다.
한편, 본 발명의 방법을 적용한 도 11의 구성에서는,
레지스터군(501)에, (1/2)n-bit=64-bit
레지스터군(501) 이외의 연산부에 8비트 레지스터가 8개인 8×8=64-bit
총계로,
64+64=128-bit
의 레지스터가 필요하게 되어있다.
즉, SPN 구조에 대응하는 Hamalainen들의 실장법을 4-line 일반화 Feistel 구조에 단순하게 적용한 경우의 도 9의 구성에 있어서는 160-bit의 레지스터가 필요해지는 것에 비해, 본 발명의 구성인 도 11에 도시하는 4-line 일반화 Feistel 구조를 적용한 연산 회로에서는 128-bit의 레지스터뿐만 있으면 되며, 대폭적인 레지스터 삭감이 실현된다.
본 발명의 구성인 도 11에 도시하는 4-line 일반화 Feistel 구조를 적용한 연산 회로에서는, 도 9의 구성에 비교해서 32비트분의 레지스터를 삭감하고 있다.
이하, 상세하게 설명하지만, 도 11에 도시하는 본 발명의 구성에서는, 행렬 연산 회로에 있어서, 다른 라인으로부터의 출력 (E0, E1, E2, E3)을 이용한 연산을 선행하여 실행함으로써, 이들 출력 데이터 (E0, E1, E2, E3)을 행렬 연산 기간중, 유지하기 위한 레지스터(8×4=32비트)를 삭감한 것에 따른다.
이하, 이 레지스터 삭감을 실현시키는 연산 시퀀스에 대하여 상세하게 설명한다.
레지스터 삭감을 실현하기 위해서, 본 발명의 처리에서는, 연산 시퀀스, 특히, 선형 변환을 행하는 행렬 연산 회로에 있어서의 행렬을 적용한 연산 시퀀스의 설정을 특별한 설정으로 하였다. 이하, 도 11에 도시하는 본 발명에 따른 데이터 패스인 회로 구성을 적용한 연산 시퀀스의 상세에 대하여 설명한다.
도 12 및 이하에 나타내는 표 1에 도 9에 도시하는 데이터 패스에 따른 행렬 연산 회로(304)에 있어서의 행렬 연산 시퀀스를 나타낸다.
또한, 도 13 및 이하에 나타내는 표 2에 도 11에 도시하는 데이터 패스에 따른 행렬 연산 회로(504)에 있어서의 행렬 연산 시퀀스를 나타낸다.
Figure pct00005
(표 1)
Figure pct00006
(표 2)
도 9에 도시하는 구성에 있어서의 행렬 연산 시퀀스를 나타내는 표 1(도 12)과,
도 11에 도시하는 구성에 있어서의 행렬 연산 시퀀스를 나타내는 표 2(도 13)를 사용하여 각 처리의 차이에 대하여 설명한다.
우선, 도 9와 도 12(표 1)를 참조하여 SPN 구조에 대응하는 Hamalainen들의 실장법을 4-line 일반화 Feistel 구조에 단순 적용한 경우의 행렬 연산 시퀀스에 대하여 설명한다.
도 9에 도시하는 데이터 패스의 행렬 연산 회로(304)에 대하여 S-box(303)로부터의 출력으로서, 순차, 데이터 (x0, x1, x2, x3)이 입력되어 행렬을 적용한 선형 변환 처리를 행하는 것으로 한다.
행렬 연산 회로(304)는 행렬을 적용한 행렬 연산에 의해 생성된 출력 (y0, y1, y2, y3)을 배타적 논리합 연산부(305)에 출력한다.
배타적 논리합 연산부(305)에서는, 행렬 연산 회로(304)의 출력 (y0, y1, y2, y3)과, 4-line 일반화 Feistel 구조에 있어서의 다른 라인으로부터의 출력 (E0, E1, E2, E3)과 배타적 논리합된다. 다른 라인으로부터의 출력 (E0, E1, E2, E3)은, 예를 들어 전 라운드에 있어서의 라운드 연산의 처리 결과에 상당한다.
또한, 행렬 연산 회로(304)에 대한 입력 (x0, x1, x2, x3)의 각각은 n/16비트이며, 출력 (y0, y1, y2, y3)과, 다른 라인으로부터의 출력 (E0, E1, E2, E3)의 각각도 모두 n/16비트의 데이터이다.
이 때, 도 9에 기재된 레지스터(R0, R1, …, R7)의 저장값은 상기 및 도 12의 표 1과 같이 변화한다.
1사이클(1cycle)째에서, 레지스터(R0, R1, R2, R3)에, 행렬 연산 회로(304)에 대한 입력 요소(x0)에 기초하는 행렬 연산 결과의 각 요소가 저장된다. 이 시점에서, 논리곱 회로(313)에 입력되어 있는 인에이블 신호(en)는 0으로 설정되고, 입력 요소(x0)에 기초하는 승산부(311)의 승산 결과가 레지스터(R0, R1, R2, R3)에 저장된다. 즉,
레지스터 R0의 저장값: d·x0,
레지스터 R1의 저장값: c·x0,
레지스터 R2의 저장값: b·x0,
레지스터 R3의 저장값: a·x0,
이들 데이터가 각 레지스터에 저장된다.
그 후, 2사이클째에 행렬 연산 회로(304)에 입력 요소(x1)가 입력된다. 2 내지 4사이클째에서는, 논리곱 회로(313)에 입력되는 인에이블 신호(en)는 1로 설정되고, 배타 논리합 연산부(312)에 있어서, 입력 요소(x1)의 승산부(311)의 승산 결과와, 전 사이클에서 레지스터(R0, R1, R2, R3)에 저장된 값과의 배타적 논리합 연산이 실행되고, 그 결과가 레지스터(R0, R1, R2, R3)에 저장된다.
또한, 이 2사이클째에 있어서, 다른 라인으로부터의 출력 요소(E0)가 레지스터(R7)에 저장된다.
3사이클째에 행렬 연산 회로(304)에 입력 요소(x2)가 입력된다. 2 내지 4사이클째에서는, 논리곱 회로(313)에 입력되는 인에이블 신호(en)는 1로 설정되고, 배타 논리합 연산부(312)에 있어서, 입력 요소(x2)의 승산부(311)의 승산 결과와, 전 사이클에서 레지스터(R0, R1, R2, R3)에 저장된 값과의 배타적 논리합 연산이 실행되고, 그 결과가 레지스터(R0, R1, R2, R3)에 저장된다.
또한, 이 3사이클째에 있어서, 다른 라인으로부터의 출력 요소(E0)가 레지스터(R6)에 저장되고, E1이 레지스터(R7)에 저장된다.
4사이클째에서는, 행렬 연산 회로(304)에 입력 요소(x3)가 입력된다. 입력 데이터 (x0, x1, x2, x3)의 입력이 완료되고, 이 4사이클째에 있어서, 행렬 연산 결과 (y0, y1, y2, y3)가 레지스터(R0, R1, R2, R3)에 저장된다.
그 다음의 5사이클째에서는, 다른 라인으로부터의 출력 (E0, E1, E2, E3)과, 행렬 연산 회로(304)에 있어서의 행렬을 적용한 행렬 연산 결과(=선형 변환 결과)인 (y0, y1, y2, y3)이 배타적 논리합 연산부(305)에 있어서 배타적 논리합되어, 그 결과로서의 값이 레지스터(R4, R5, R6, R7)에 저장된다.
이 레지스터 저장값, 즉, 하기 수학식(수학식 5)에 나타내는 데이터가 도 9에 도시하는 라인(306)을 통해서 다음 라운드 연산의 이용 데이터로서 레지스터군(301)에 입력된다.
Figure pct00007
또한, 상기 (수학식 5)에 나타내는 값은, 도 3에 도시하는 라운드간의 접속부의 라운드 출력 데이터(D)에 상당한다.
또한, 이 5사이클째에서는, 다음 행렬 연산 회로(304)로의 입력값 (x'0, x'1, x'2, x'3)의 처음의 요소(x'0)에 대한 연산이 레지스터(R0, R1, R2, R3)에 저장된다.
이어서, 도 11에 도시하는 본 발명에 따른 데이터 패스를 이용한 행렬 연산 회로(504)에 있어서의 행렬 연산의 사이클 단위의 천이 처리에 대해서 도 11과 도 13(표 2)을 참조하여 설명한다.
도 11에 도시하는 데이터 패스의 행렬 연산 회로(504)에 대하여, 도 9를 참조하여 설명한 것과 동일한 S-box(503)로부터의 출력으로서, 순차, (x0, x1, x2, x3)이 입력되고, 행렬을 적용한 선형 변환 처리를 행하는 것으로 한다.
이 도 11에 도시하는 구성을 사용한 행렬 연산을 행하면, 도 13(표 2)에 도시한 바와 같이, 4사이클째에 있어서 레지스터(R0, R1, R2, R3)에, 다음 라운드 연산의 이용 데이터, 즉,
Figure pct00008
또한, 상기 (수학식 6)에 나타내는 값이 저장된다. 이들 값은 제5 사이클에서 레지스터(R4, R5, R6, R7)에 저장되고, 도 11에 도시하는 라인(506)을 통해서 다음 라운드 연산의 이용 데이터로서 레지스터(501)에 입력된다.
도 11에 도시하는 구성은, 도 9에 도시하는 구성보다 레지스터수가 삭감된 구성이지만, 결과적으로는 도 9에 도시하면 동일한 연산 처리를 실현하고 있다. 단, 연산 시퀀스가 상이하다.
각 사이클에 있어서의 처리에 대하여 설명한다.
도 11에 도시하는 데이터 패스를 이용한 처리에서는, 예를 들어 전 라운드에 있어서의 라운드 연산의 처리 결과에 상당하는 다른 라인으로부터의 출력(E0, E1, E2, E3)을 레지스터(501)로부터의 출력 라인(521)을 통해서 레지스터(R7, R6, R5)에 순차 저장한다. 도 13(표 2)에 도시하는 1사이클째의 1개 전의 사이클(0사이클)에 있어서,
레지스터 R5에는 E0,
레지스터 R6에는 E1,
레지스터 R7에는 E2,
이들 데이터가 저장된 상태로 설정된다.
1사이클째에 있어서, 이들 레지스터 저장값(E0, E1, E2)과, 레지스터군(501)으로부터 출력 라인(521)을 통한 새로운 출력값(E3)을 첨가한 출력 (E0, E1, E2, E3)이 멀티플렉서(513)를 통해서 배타적 논리합 연산부(512)에 입력된다. 또한, 이들 연산 제어는, 예를 들어 도시하지 않은 제어부나 클록 입력 정보에 기초하는 제어에 의해 행해진다.
배타적 논리합 연산부(512)에서는, 이들 출력값 (E0, E1, E2, E3)과, 입력 요소(x0)에 기초하는 승산부(311)의 승산 결과, 즉,
d·x0,
c·x0,
b·x0,
a·x0,
이들 각 값과의 배타적 논리합 연산이 실행된다. 이 배타적 논리합 연산 결과가 레지스터(R0, R1, R2, R3)에 저장된다.
즉,
레지스터(R0)에는, 레지스터(R6)에 저장된 값(E1)이, 멀티플렉서(m0)를 통해서 배타 논리합 연산부(512)에 입력되어 d·x0과의 배타 논리합 결과가 저장된다.
레지스터(R1)에는, 레지스터(R7)에 저장된 값(E2)이, 멀티플렉서(m1)를 통해서 배타 논리합 연산부(512)에 입력되어 c·x0과의 배타 논리합 결과가 저장된다.
레지스터(R2)에는, 레지스터군으로부터 라인(521)을 통해서 출력되는 출력값(E3)이, 멀티플렉서(m2)를 통해서 배타 논리합 연산부(512)에 입력되어 b·x0과의 배타 논리합 결과가 저장된다.
레지스터(R3)에는, 레지스터(R5)에 저장된 값(E0)이, 멀티플렉서(m3)를 통해서 배타 논리합 연산부(512)에 입력되어 a·x0과의 배타 논리합 결과가 저장된다.
즉, 이하의 (수학식 7)에 나타내는 각 값이 레지스터(R0, R1, R2, R3)에 저장된다.
Figure pct00009
또한, 멀티플렉서(513)(m0 내지m3)는 2개의 입력으로부터 선택된 1개의 입력을 출력하는 셀렉터와 동일한 처리를 행한다.
제1 사이클에서는, 레지스터(R7, R6, R5)의 저장값, 라인(521)의 출력값을 출력하도록 설정된다. 또한, 이들 제어는 도시하지 않은 제어부의 제어에 의해 행해진다.
이와 같이, 본 발명의 구성에서는, 도 11에 도시하는 행렬 연산 회로(504)에 대한 S-box(503)로부터의 제1 사이클에 있어서의 입력(x0)의 입력 타이밍에 있어서, 예를 들어 전 라운드에 있어서의 라운드 연산의 처리 결과에 상당하는 다른 라인으로부터의 출력 (E0, E1, E2, E3)과의 배타적 논리합 연산을 실행하고, 그 결과를 레지스터(R0, R1, R2, R3)에 저장한다.
이와 같이 본 발명의 구성에서는, 다른 라인으로부터의 출력 (E0, E1, E2, E3)과의 배타 논리합 연산 처리를 선행하여 실행한다. 이 결과, 4사이클을 필요로 하는 행렬 연산 기간이 완료될 때까지 다른 라인으로부터의 출력 (E0, E1, E2, E3)을 유지할 필요가 없어진다. 이 연산 시퀀스의 변경 처리에 의해 필요한 레지스터수의 삭감을 실현하고 있다.
그 후, 2사이클째에 행렬 연산 회로(504)에 입력 요소(x1)가 입력된다. 2 내지 4사이클째에서는, 멀티플렉서(513)(m0 내지 m3)는 레지스터(R0, R1, R2, R3)의 저장값을 선택 출력하도록 제어된다.
이 결과, 배타 논리합 연산부(512)에 있어서, 입력 요소(x1)의 승산부(511)의 승산 결과와, 전 사이클에서 레지스터(R0, R1, R2, R3)에 저장된 값과의 배타적 논리합 연산이 실행되고, 그 결과가 레지스터(R0, R1, R2, R3)에 저장된다.
또한, 이 2사이클째에 있어서, 다른 라인으로부터의 출력 요소(E'0)가 레지스터(R7)에 저장된다.
3사이클째에 행렬 연산 회로(504)에 입력 요소(x2)가 입력된다. 배타 논리합 연산부(512)에 있어서, 입력 요소(x2)의 승산부(511)의 승산 결과와, 전 사이클에서 레지스터(R0, R1, R2, R3)에 저장된 값과의 배타적 논리합 연산이 실행되고, 그 결과가 레지스터(R0, R1, R2, R3)에 저장된다.
또한, 이 3사이클째에 있어서, 다른 라인으로부터의 출력 요소(E'0)가 레지스터(R6)에 저장되고, E'1이 레지스터(R7)에 저장된다.
4사이클째에서는, 행렬 연산 회로(504)에 입력 요소(x3)가 입력된다. 입력 데이터 (x0, x1, x2, x3)의 입력이 완료하고, 이 4사이클째에 있어서, 레지스터(R0, R1, R2, R3)에는, 행렬 연산 결과 (y0, y1, y2, y3)과 다른 라인으로부터의 출력 (E0, E1, E2, E3)의 배타 논리합 결과가 저장되게 된다.
그 다음 5사이클째에서는, 다음의 다른 라인으로부터의 출력 (E'0, E'1, E'2, E'3)이 레지스터(R7, R6, R5)의 저장값, 라인(521)의 출력으로서, 배타 논리합 연산부(512)에 입력된다.
배타 논리합 연산부(512)는, 이들 입력값과, 행렬 연산 회로(504)에 대한 새로운 입력(x'0)과 승산부(511)에서의 승산 결과의 배타 논리합 결과를 산출하여 레지스터(R0, R1, R2, R3)에 저장한다.
이 시점에서 레지스터(R0, R1, R2, R3)에 저장된 값은 레지스터(R4, R5, R6, R7)에 저장된다.
이 레지스터 저장값, 즉, 하기 수학식(수학식 8)에 나타내는 데이터가 도 10에 도시하는 라인(506)을 통해서 다음 라운드 연산의 이용 데이터로서 레지스터군(501)에 입력된다.
Figure pct00010
이와 같이, 본 발명에 따른 구성에서는, 행렬의 연산 처리 시에 다른 라인으로부터의 출력 (E0, E1, E2, E3)과의 배타적 논리합 연산을 선행하여 실행함으로써, 다른 라인으로부터의 출력 (E0, E1, E2, E3)을 저장하는 레지스터와, 행렬 연산의 도중 결과를 저장하는 레지스터를, 개별로 설정한 독립된 레지스터로 할 필요성을 없애서 이들 레지스터의 공유화를 행함으로써 필요한 총 레지스터수를 삭감하고 있다.
[6. 본 발명의 구성에 의한 효과 및 변형예에 대해서]
도 11에 도시하는 본 발명에 따른 일반화 Feistel 구조를 적용한 암호 처리를 실행하는 데이터 패스에서는, 상술한 바와 같이, 선행한 처리 결과를 라운드 연산에 있어서의 행렬 연산의 최초의 사이클(1사이클째)에서 배타 논리합 연산 처리를 실행해버리는 구성으로 하고 있다.
즉, 예를 들어 전 라운드에 있어서의 라운드 연산의 처리 결과에 상당하는 다른 라인으로부터의 출력 (E0, E1, E2, E3)과의 배타적 논리합 연산을 선행하여 실행한다.
도 11을 참조하여 설명한 바와 같이, 행렬 연산 회로(504)에 있어서의 행렬 연산의 최초의 처리로서 실행하는 제1 사이클에 있어서, 다른 라인으로부터의 출력 (E0, E1, E2, E3)을 레지스터 등으로부터 멀티플렉서(513)를 통해서 배타 논리합 연산부(512)에 선행하여 입력시켜서, 행렬 연산 회로(504)에 대한 최초의 입력값(x0)의 승산부(511)에서의 승산 결과(d·x0 등)와 배타 논리합 처리를 실행한다.
이와 같이, 본 발명의 구성에서는, 1-line분(실시예에서는 (n/16)×4)의 멀티플렉서(Multiplexer)를 도입함으로써, 도 9에 도시하는 구성에 있어서 필요했던1-line분의 레지스터와 1-line분의 배타적 논리합과 1-line분의 논리곱의 회로를 없앨 수 있다. 도 11에 도시하는 구성에서는 이들 차분만큼 소형화를 행할 수 있다.
또한, 이 소형화에 수반하여 저소비 전력화도 기대할 수 있다.
특히, 레지스터의 게이트 사이즈는 다른 셀에 비해 비교적 큰 것이 되므로, 1-line분의 레지스터를 삭감할 수 있었던 것은 소형화에 특히 기여한다.
또한, 상술한 실시예에서는, 본 발명의 적용 구성의 대표예로서, 4-line 일반화 Feistel 구조로의 적용예에 대하여 설명하였다. 그러나, 도 11, 도 13(표 1)을 참조하여 설명한 처리 시퀀스, 즉, 다른 라인으로부터의 출력값을 선행하여 행렬 연산에 적용하는 것은 4-line 이외의 일반화 Feistel 구조나 Feistel 구조에 있어서도 적용 가능하고, 도 11을 참조하여 설명한 것과 동일한 레지스터의 다른 회로 구성의 삭감이 실현된다. 즉, 본 발명은 4-line 일반화 Feistel 구조뿐만 아니라, 라운드 함수 내부를 변형, 확장된 구조에 대해서도 적용 가능하고, 2-line의 Feistel 구조나, 임의의 x(x는 2 이상의 자연수)의 x-line 일반화 Feistel 구조에도 적용할 수 있다.
또한, 상술한 실시예에서는, 행렬 연산 회로에 있어서 적용하는 행렬을 순회 행렬로 한 예에 대하여 설명했지만, 행렬 연산 회로에 있어서 적용하는 행렬은 순회 행렬에 한하지 않고, 예를 들어 아다마르 행렬 등, 그 밖의 형식의 행렬을 적용하는 것도 가능하다.
또한, 행렬 연산 회로에 있어서 적용하는 행렬은 4×4 행렬뿐만 아니라,
임의의 x×x 행렬, 단, x는 2 이상의 자연수,
이러한 여러가지 행렬의 적용이 가능하다.
또한, 앞서 도 2를 참조하여 설명한 F 함수를 갖는 구성에 한하지 않고, 행렬 연산 후에 비선형 변환을 포함하지 않는 라운드 함수를 실행하는 알고리즘이면, 본 발명의 구성은 적용 가능하여 마찬가지의 소형화의 효과를 기대할 수 있다.
또한, 상술한 실시예에서 설명한 구성은, 4-line 일반화 Feistel 구조에 있어서의 type-2 일반화 Feistel 구조의 예이지만, 본 발명은 이 밖의 type-1이나, type-3의 일반화 Feistel 구조에 대해서도 적용 가능하여 마찬가지의 효과를 기대할 수 있다.
2라인의 Feistel 구조에 대하여 본 발명을 적용한 데이터 패스로서의 회로 구성예를 도 14에 도시한다.
도 14에 도시하는 데이터 패스에 있어서, 예를 들어 전 라운드의 연산 결과적으로의 다른 라인으로부터의 출력 (E0, E1, E2, E3)을 레지스터(R4, R5, R6, R7)에 저장하고, 행렬 제1 연산 회로(604)에 있어서의 행렬 연산의 최초의 처리들 사이클(1사이클째)에 있어서 S-box(603)로부터의 입력값(x0)과 승산부(611)에 있어서의 승산 결과의 배타 논리합을 실행하여 그 결과를 레지스터(R0, R1, R2, R3)에 저장한다.
이와 같이, 앞서 도 11을 참조하여 설명한 것과 동일한 처리 시퀀스로 행렬 연산을 실행하는 것이 가능하고, 이 처리에 의해, 레지스터수의 삭감 등에 의해 하드웨어 구성을 소형화하는 것이 가능해진다.
구체적으로는, 도 14의 구성으로 함으로써, 예를 들어 도 9와 동일한 구성에 따라서 2라인의 Feistel 구조의 데이터 패스를 설정한 경우에 n/2-bit분 필요했던 행렬 연산용의 레지스터가 불필요해져서 n-bit분의 레지스터만으로 전체를 구성할 수 있다.
또한, 도 14에 도시하는 2라인의 Feistel 구조로 한 경우에도, 행렬 연산 회로(604)에 있어서 적용하는 행렬은 순회 행렬, 아다마르 행렬 등이 이용 가능하고, 또한 x×x(단, x≥2의 정수)의 임의의 행렬을 이용할 수 있다. 또한, 도 2를 참조하여 설명한 F 함수를 갖는 구성에 한하지 않고, 행렬 연산 후에 비선형 변환을 실행하지 않는 라운드 함수이면, 본 발명의 적용이 가능하다.
[7. 암호 처리 장치의 IC 카드로서의 구성예에 대해서]
마지막으로, 상술한 실시예에 따른 암호 처리를 실행하는 암호 처리 장치로서의 IC 모듈(700)의 구성예를 도 15에 도시한다. 상술한 처리는, 예를 들어 PC, IC 카드, 리더 라이터, 그 밖에 여러가지 정보 처리 장치에 있어서 실행 가능하고, 도 15에 도시하는 IC 모듈(700)은 이들 여러가지 기기에 구성하는 것이 가능하다.
도 15에 도시하는 CPU(Central processing Unit)(701)는, 암호 처리의 개시나, 종료, 데이터의 송수신의 제어, 각 구성부간의 데이터 전송 제어, 그 밖의 각종 프로그램을 실행하는 프로세서이다. 메모리(702)는, CPU(701)가 실행하는 프로그램, 또는 연산 파라미터 등의 고정 데이터를 저장하는 ROM(Read-Only-Memory), CPU(701)의 처리에 있어서 실행되는 프로그램 및 프로그램 처리에 있어서 적절히 변화하는 파라미터의 저장 에리어, 워크 영역으로서 사용되는 RAM(Random Access Memory) 등을 포함하여 이루어진다. 또한, 메모리(702)는 암호 처리에 필요한 키 데이터나, 암호 처리에 있어서 적용하는 변환 테이블(치환표)이나 변환 행렬에 적용하는 데이터 등의 저장 영역으로서 사용 가능하다. 또한 데이터 저장 영역은 내탬퍼 구조를 갖는 메모리로서 구성되는 것이 바람직하다.
암호 처리부(703)는, 예를 들어 도 11이나 도 14를 참조하여 설명한 암호 처리 구성, 즉, 예를 들어 일반화 Feistel 구조나, Feistel 구조를 적용한 공통 키 블록 암호 처리 알고리즘에 따른 암호 처리, 복호 처리를 실행한다.
또한, 여기에서는 암호 처리 수단을 개별 모듈로 한 예를 나타냈지만, 이러한 독립된 암호 처리 모듈을 설치하지 않고, 예를 들어 암호 처리 프로그램을 ROM에 저장하고, CPU(701)가 ROM 저장 프로그램을 판독하여 실행하도록 구성해도 된다.
난수 발생기(704)는 암호 처리에 필요해지는 키의 생성 등에 있어서 필요해지는 난수의 발생 처리를 실행한다.
송수신부(705)는 외부와의 데이터 통신을 실행하는 데이터 통신 처리부이며, 예를 들어 리더 라이터 등, IC 모듈과의 데이터 통신을 실행하고, IC 모듈 내에서 생성한 암호문의 출력, 또는 외부의 리더 라이터 등의 기기로부터의 데이터 입력 등을 실행한다.
이상, 특정한 실시예를 참조하면서 본 발명에 대하여 자세히 해석해 왔다. 그러나, 본 발명의 요지를 일탈하지 않는 범위에서 당업자가 상기 실시예의 수정이나 대용을 할 수 있는 것은 자명하다. 즉, 예시라는 형태로 본 발명을 개시해 온 것이어서 한정적으로 해석되어서는 안된다. 본 발명의 요지를 판단하기 위해서는 특허 청구 범위의 란을 참작해야 한다.
또한, 명세서 중에 있어서 설명한 일련의 처리는 하드웨어 또는 소프트웨어, 또는 양자의 복합 구성에 의해 실행하는 것이 가능하다. 소프트웨어에 의한 처리를 실행할 경우에는, 처리 시퀀스를 기록한 프로그램을 전용의 하드웨어에 내장된 컴퓨터 내의 메모리에 인스톨하여 실행시키던지, 또는, 각종 처리가 실행 가능한 범용 컴퓨터에 프로그램을 인스톨하여 실행시키는 것이 가능하다.
예를 들어, 프로그램은 기록 매체로서의 하드 디스크나 ROM(Read Only Memory)에 미리 기록해 둘 수 있다. 또는, 프로그램은 플렉시블 디스크, CD-ROM(Compact Disc Read Only Memory), MO(Magneto optical) 디스크, DVD(Digital Versatile Disc), 자기 디스크, 반도체 메모리 등의 리무버블 기록 매체에 일시적 또는 영속적으로 저장(기록)해 둘 수 있다. 이러한 리무버블 기록 매체는, 소위 팩키지 소프트 웨어로서 제공할 수 있다.
또한, 프로그램은, 상술한 바와 같은 리무버블 기록 매체로부터 컴퓨터에 인스톨하는 것 외에, 다운로드 사이트로부터 컴퓨터에 무선 전송하거나, LAN(Local Area Network), 인터넷이라는 네트워크를 통해서 컴퓨터에 유선으로 전송하고, 컴퓨터에서는 그렇게 하여 전송되어 오는 프로그램을 수신하고 내장하는 하드 디스크 등의 기록 매체에 인스톨할 수 있다.
또한, 명세서에 기재된 각종 처리는 기재에 따라서 시계열로 실행될뿐만 아니라, 처리를 실행하는 장치의 처리 능력 또는 필요에 따라서 병렬적으로 또는 개별적으로 실행되어도 된다. 또한, 본 명세서에 있어서 시스템이란, 복수의 장치의 논리적 집합 구성이며, 각 구성의 장치가 동일 하우징 내에 있는 것에 한하지는 않는다.
상술한 바와 같이, 본 발명의 일 실시예의 구성에 의하면, 일반화 Feistel 구조를 적용한 암호 처리 구성의 소형화나 전력 절약화가 실현된다.
구체적으로는, 데이터를 복수 라인으로 분할 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복하여 실행하는 일반화 Feistel 구조를 적용한 암호 처리 구성에 있어서, 제1 라인의 데이터에 대한 행렬을 적용한 선형 변환 처리를 실행하는 행렬 연산 실행부가 행렬 연산의 실행 사이클 중, 최초의 사이클에 있어서 행렬 연산 과정 데이터와 제2 라인의 데이터의 연산을 실행한다. 본 구성에 의해, 제2 라인의 데이터 유지용의 레지스터와 제1 라인의 행렬 연산 도중 결과 유지용의 레지스터의 공유화가 가능해지고, 총 레지스터수의 삭감, 소형화가 실현된다. 또한 회로 구성의 소형화, 엘리먼트수의 삭감에 따라 전력 소비량의 삭감도 가능해진다.
111 : 키 스케줄부
112 : 데이터 암호화부
120 : F 함수
121 : 배타적 논리합 연산부
122 : 비선형 변환부
123 : 선형 변환부
201 : 비선형 변환부
202 : Shift Low 실행부
203 : 선형 변환부
204 : 배타적 논리합 연산부
251 : 키 생성부
252 : S-box
253 : 행렬 연산 회로
254 : 배타적 논리합 연산부
271 내지 274 : 논리곱 회로
281 내지 284 : 배타적 논리합 연산부
285 내지 286 : 승산부
290 : 행렬 연산 회로
291 내지 294 : 승산부
295 내지 298 : 멀티플렉서
301 : 레지스터군
302 : 배타적 논리합 연산부
303 : S-box
304 : 행렬 연산 회로
305 : 배타적 논리합부
311 : 승산부
312 : 배타적 논리합부
313 : 논리곱 회로
321 : 배타적 논리합 연산부
322 : 비선형 변환부[S]
323 : 선형 변환부[M]
501 : 레지스터군
502 : 배타적 논리합 연산부
503 : S-box
504 : 행렬 연산 회로
511 : 승산부
512 : 배타적 논리합부
513 : 멀티플렉서
603 : S-box
604 : 행렬 연산 회로
611 : 승산부
613 : 멀티플렉서
700 : IC 모듈
701 : CPU(Central processing Unit)
702 : 메모리
703 : 암호 처리부
704 : 난수 생성부
705 : 송수신부

Claims (11)

  1. 암호 처리 장치로서,
    데이터 처리 대상으로 되는 데이터 블록의 구성 비트를 복수의 라인으로 분할하여 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복하여 실행하는 암호 처리부를 갖고,
    상기 암호 처리부는,
    상기 복수 라인의 제1 라인의 데이터에 대한 변환 데이터를 생성하고, 생성한 변환 데이터에 대하여 상기 제1 라인과 다른 제2 라인의 데이터와의 연산을 행하고, 상기 연산 결과를 다음 라운드의 입력 데이터로 하는 연산을 반복 실행하는 연산부와,
    상기 연산부의 연산 결과를 유지하는 레지스터를 갖고,
    상기 연산부는, 상기 레지스터로부터 순차, 데이터를 취득하여 취득 데이터순의 연산을 실행하여 연산 결과를 상기 레지스터에 저장하는 구성이며,
    상기 연산부는,
    상기 제1 라인의 데이터에 대한 행렬을 적용한 선형 변환을 실행하는 행렬 연산 실행부를 갖고,
    상기 행렬 연산 실행부는,
    상기 제1 라인의 데이터에 대한 행렬 연산의 실행 사이클 중, 최초의 사이클의 행렬 연산의 실행 시에 상기 제2 라인의 데이터와의 연산을 실행하는, 암호 처리 장치.
  2. 제1항에 있어서,
    상기 행렬 연산 실행부는,
    전단의 비선형 변환부로부터 순차 출력되는 복수의 단위 데이터에 대한 행렬 연산을 복수 사이클에서 실행하는 구성이며, 상기 복수 사이클의 최초의 사이클에서 상기 비선형 변환부로부터 입력되는 단위 데이터의 행렬 연산에 맞춰서 상기 제2 라인의 데이터와의 연산을 실행하는, 암호 처리 장치.
  3. 제1항에 있어서,
    상기 암호 처리 장치는,
    상기 제1 라인의 데이터에 대한 행렬 연산에 필요한 연산 사이클의 완료 후에 상기 제2 라인의 데이터와의 연산을 실행하는 경우에 필요해지는 상기 제2 라인의 데이터 유지용의 독립된 레지스터를 삭감하고,
    상기 제1 라인의 데이터에 대한 행렬 연산의 도중 결과의 유지용 레지스터를 상기 제2 라인의 데이터 유지용의 레지스터로서 이용한 구성을 갖는, 암호 처리 장치.
  4. 제1항에 있어서,
    상기 행렬 연산 실행부는,
    상기 제1 라인의 데이터에 대한 행렬 연산을 실행하는 초기 사이클에 있어서, 상기 제1 라인에 대한 행렬 연산 과정 데이터와 상기 제2 라인의 데이터의 배타적 논리합 연산을 실행하는, 암호 처리 장치.
  5. 제1항에 있어서,
    상기 행렬 연산 실행부는,
    순회 행렬 또는 아다마르 행렬을 적용한 행렬 연산을 실행하는 구성인, 암호 처리 장치.
  6. 제1항에 있어서,
    상기 암호 처리부는, 상기 라운드 함수의 실행부로서,
    비선형 변환 처리를 실행하는 비선형 변환부와, 행렬을 적용한 선형 변환 처리를 실행하는 선형 변환부로서의 행렬 연산 실행부를 갖는, 암호 처리 장치.
  7. 제1항에 있어서,
    상기 행렬 연산 실행부는,
    상기 비선형 변환부로서의 S-box의 출력을 순차 입력하여 입력 데이터에 대한 행렬 연산을 1사이클 처리로서 실행하는, 암호 처리 장치.
  8. 제1항에 있어서,
    상기 암호 처리부가 실행하는 암호 처리는 Feistel 구조 또는 일반화 Feistel 구조를 적용한 암호 처리인, 암호 처리 장치.
  9. 제1항에 있어서,
    상기 암호 처리부가 실행하는 암호 처리는 CLEFIA 암호 알고리즘에 따른 암호 처리인, 암호 처리 장치.
  10. 암호 처리 장치에 있어서 암호 처리를 실행하는 암호 처리 방법으로서,
    암호 처리부가, 데이터 처리 대상으로 되는 데이터 블록의 구성 비트를 복수 라인으로 분할하여 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복하여 실행하는 암호 처리 스텝을 갖고,
    상기 암호 처리 스텝에 있어서, 상기 복수 라인을 구성하는 제1 라인의 데이터의 변환 처리를 실행하고, 생성한 변환 데이터에 대하여 상기 제1 라인과 상이한 제2 라인의 데이터와의 연산을 행하고, 상기 연산 결과를 다음 라운드의 입력 데이터로 하는 연산을 반복 실행하고,
    상기 제1 라인의 데이터의 변환 데이터 생성 처리에 있어서 실행하는 행렬 연산 처리의 실행 사이클 중, 최초의 사이클의 행렬 연산 처리 시에 상기 제2 라인의 데이터와의 연산을 실행하는, 암호 처리 방법.
  11. 암호 처리 장치에 있어서 암호 처리를 실행시키는 프로그램으로서,
    암호 처리부에, 데이터 처리 대상으로 되는 데이터 블록의 구성 비트를 복수 라인으로 분할하여 입력하고, 각 라인의 전송 데이터에 대하여 라운드 함수를 적용한 데이터 변환 처리를 반복하여 실행시키는 암호 처리 스텝을 갖고,
    상기 암호 처리 스텝에 있어서, 상기 복수 라인을 구성하는 제1 라인의 데이터의 변환 처리를 실행하고, 생성한 변환 데이터에 대하여 상기 제1 라인과 상이한 제2 라인의 데이터와의 연산을 행하고, 상기 연산 결과를 다음 라운드의 입력 데이터로 하는 연산을 반복 실행시키고,
    상기 제1 라인의 데이터의 변환 데이터 생성 처리에 있어서 실행하는 행렬 연산 처리의 실행 사이클 중, 최초의 사이클의 행렬 연산 처리 시에 상기 제2 라인의 데이터와의 연산을 실행시키는, 프로그램.
KR1020137014092A 2010-12-09 2011-10-24 암호 처리 장치 및 암호 처리 방법, 및 프로그램 KR20130126924A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2010-274807 2010-12-09
JP2010274807A JP5605197B2 (ja) 2010-12-09 2010-12-09 暗号処理装置、および暗号処理方法、並びにプログラム
PCT/JP2011/074468 WO2012077419A1 (ja) 2010-12-09 2011-10-24 暗号処理装置、および暗号処理方法、並びにプログラム

Publications (1)

Publication Number Publication Date
KR20130126924A true KR20130126924A (ko) 2013-11-21

Family

ID=46206922

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137014092A KR20130126924A (ko) 2010-12-09 2011-10-24 암호 처리 장치 및 암호 처리 방법, 및 프로그램

Country Status (7)

Country Link
US (1) US9031230B2 (ko)
EP (1) EP2651070B1 (ko)
JP (1) JP5605197B2 (ko)
KR (1) KR20130126924A (ko)
CN (1) CN103238291A (ko)
TW (1) TWI456542B (ko)
WO (1) WO2012077419A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016059870A1 (ja) * 2014-10-14 2016-04-21 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
EP3738081A1 (en) * 2018-03-22 2020-11-18 Amazon Technologies Inc. Processing for multiple input data sets

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100976750B1 (ko) * 2002-05-09 2010-08-18 오니시스 그룹 엘.에이., 엘엘시 암호 장치 및 방법, 암호 시스템
JP4128395B2 (ja) * 2002-05-23 2008-07-30 三菱電機株式会社 データ変換装置
JP4622222B2 (ja) * 2003-09-30 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US20050276413A1 (en) * 2004-06-14 2005-12-15 Raja Neogi Method and apparatus to manage heterogeneous cryptographic operations
US8127144B2 (en) * 2005-10-12 2012-02-28 Panasonic Corporation Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, promgram loading method, and integrated circuit
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) * 2006-09-01 2012-07-04 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5050454B2 (ja) * 2006-09-01 2012-10-17 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2008058830A (ja) * 2006-09-01 2008-03-13 Sony Corp データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5023624B2 (ja) * 2006-09-01 2012-09-12 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Also Published As

Publication number Publication date
WO2012077419A1 (ja) 2012-06-14
US20130251144A1 (en) 2013-09-26
US9031230B2 (en) 2015-05-12
EP2651070A4 (en) 2017-01-18
EP2651070A1 (en) 2013-10-16
TWI456542B (zh) 2014-10-11
JP2012123259A (ja) 2012-06-28
TW201225024A (en) 2012-06-16
EP2651070B1 (en) 2018-08-22
CN103238291A (zh) 2013-08-07
JP5605197B2 (ja) 2014-10-15

Similar Documents

Publication Publication Date Title
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5822970B2 (ja) 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化デバイス
JP4128395B2 (ja) データ変換装置
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
EP2058781B1 (en) Encryption device, encryption method, and computer program
JP5023624B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR101770874B1 (ko) 암호 처리 장치, 암호 처리 방법, 컴퓨터로 판독가능한 기록 매체, 및 정보 처리 장치
WO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム
WO2008026624A1 (en) Data conversion device, data conversion method, and computer program
US9418245B2 (en) Encryption processing device, encryption processing method, and program
KR20130126924A (ko) 암호 처리 장치 및 암호 처리 방법, 및 프로그램
JP5929757B2 (ja) 暗号処理装置および暗号処理方法
JP5223245B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid