KR20090094086A - 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램 - Google Patents

암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램

Info

Publication number
KR20090094086A
KR20090094086A KR1020097011387A KR20097011387A KR20090094086A KR 20090094086 A KR20090094086 A KR 20090094086A KR 1020097011387 A KR1020097011387 A KR 1020097011387A KR 20097011387 A KR20097011387 A KR 20097011387A KR 20090094086 A KR20090094086 A KR 20090094086A
Authority
KR
South Korea
Prior art keywords
data
round
processing
key
bit
Prior art date
Application number
KR1020097011387A
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 KR20090094086A publication Critical patent/KR20090094086A/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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

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

Abstract

키 해석의 곤란성을 높이고, 안전성을 높인 공통키 블록 암호 처리 구성을 실현한다. 비밀키의 변환 처리에 의해서 생성한 중간키를 레지스터에 저장하고, 레지스터 저장 데이터의 변환 처리에 의해 라운드키를 생성하는 구성에 있어서, 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(입력 교체) 처리를 실행하여 라운드키를 생성한다. 예를 들면, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프 처리를 반복해 실행하여, 복수의 다른 라운드키를 생성한다. 본 구성에 의해, 각 라운드키의 비트 배열을 효과적으로 바꾸어 넣어, 상관성이 낮은 라운드키를 생성하는 것이 가능해져, 키의 해석 곤란성을 높이고 안전성이 높아진 암호 처리 구성이 실현된다.

Description

암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램{Encryption device, encryption method, and computer program}
본 발명은, 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램에 관한 것이다. 상세하게는, 공통키 블록 암호 처리를 실행하는 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램에 관한 것이다.
예를 들면, 네트워크 통신, 전자 상거래, 그 외의 데이터 처리 분야에 있어서 보안 확보는 중요한 과제이다. 보안 확보의 하나의 방법으로서 암호 기술이 있으며, 암호 처리는 여러가지 영역에서 이용되고 있다.
예를 들면 IC카드 등의 소형의 장치중에 암호 처리 모듈을 내장하고, IC카드와, 데이터 읽기 및 기입 장치로서의 리더 및 라이터(a reader and a writer)와의 사이에 데이터 송수신을 행하고, 인증 처리, 혹은 송수신 데이터의 암호화, 복호를 행하는 시스템이 실용화되고 있다.
암호 처리 알고리즘에는 여러가지 것이 있지만, 크게 분류하면, 암호화키와 복호키를 다른 키, 예를 들면 공개키와 비밀키로서 설정하는 공개키암호 방식과 암호화키와 복호키를 공통의 키로서 설정하는 공통키 암호 방식으로 분류된다.
공통키 암호 방식에도 여러가지 알고리즘이 있지만, 그 한 개에 공통키를 베이스로 하여 복수의 키를 생성하고, 생성한 복수의 키를 이용해 블록 단위(64비트, 128, 256비트 등)의 데이터 변환 처리를 반복해 실행하는 방식이 있다. 이러한 키 생성 방식과 데이터 변환 처리를 적용한 알고리즘의 대표적인 것이 공통키 블록 암호 방식이다.
대표적인 공통키 블록 암호의 알고리즘으로서는, 예를 들면 과거에 미국 표준 암호인 DES(Data Encryption Standard) 알고리즘, 현재의 미국 표준인 AES(Advanced Encryption Standard) 알고리즘 등이 알려져 있다.
이러한, 공통키 블록 암호의 알고리즘은, 주로, 입력 데이터의 변환을 반복해 실행하는 라운드 함수 실행부를 가지는 암호 처리부와, 라운드 함수부의 각 라운드에서 적용하는 라운드키를 생성하는 키 스케쥴부에 의해서 구성된다. 키 스케쥴부는, 비밀키가 되는 마스터키(메인 키)에 근거하여, 우선 비트수를 증가시킨 확대키를 생성하고, 생성한 확대키에 근거하여, 암호 처리부의 각 라운드 함수부에서 적용하는 라운드키(서브 키)를 생성한다.
이러한 알고리즘을 실행하는 구체적인 구조로서, 선형 변환부 및 비선형 변환부를 가지는 라운드 함수를 반복해 실행하는 구조가 알려져 있다. 예를 들면 대표적인 구조에 Feistel 구조가 있다. Feistel 구조는, 데이터 변환 함수로서의 라운드 함수(F함수)의 단순한 반복에 의해, 평문을 암호문으로 변환하는 구조를 가진다. 라운드 함수(F함수)에 있어서는, 선형 변환 처리 및 비선형 변환 처리가 실행된다. 또한, Feistel 구조를 적용한 암호 처리에 대해 기재한 문헌으로서는, 예를 들면 비특허 문헌 1, 비특허 문헌 2가 있다.
그러나, 이 공통키 블록 암호 처리의 문제점으로서, 암호 해석에 의한 키의 누설이 있다. 암호 해석에 의한 키의 해석이 용이하다는 것은, 그 암호 처리의 안전성이 낮다는 의미가 되며, 실용상, 큰 문제가 된다.
비특허 문헌 1 : K. Nyberg, "Generalized Feistel networks", ASIACRYPT'96, Springer Verlag, 1996, pp.91--104.
비특허 문헌 2 : Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai : On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO 1989: 461-480
도 1은, 공통키 블록 암호 알고리즘의 기본 구성을 도시한 도면이다.
도 2는, 1에 도시한 공통키 블록 암호 처리부(E10)의 내부 구성에 대해 설명하는 도면이다.
도 3은, 도 2에 도시한 암호 처리부(12)의 상세 구성에 대해 설명하는 도면이다.
도 4는, 라운드 함수 실행부의 한 구성예로서의 SPN 구조 라운드 함수에 대해 설명하는 도면이다.
도 5는, 라운드 함수 실행부의 한 구성예로서의 Feistel(페이스텔) 구조에 대해 설명하는 도면이다.
도 6은, 비선형 변환 처리부의 구체적인 예에 대해 설명하는 도면이다.
도 7은, 선형 변환 처리부의 구체적인 예에 대해 설명하는 도면이다.
도 8은, 암호화 처리에 있어서의 비밀키 K와, 초기키, 라운드키, 최종키의 대응에 대해 설명하는 도면이다.
도 9는, 복호 처리에 있어서의 비밀키 K와, 초기키, 라운드키, 최종키의 대응에 대해 설명하는 도면이다.
도 10은, 암호화 처리에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 ll은, 복호 처리에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 12는, 암호화, 복호의 쌍방에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 13은, Feistel 구조의 암호 처리에 대해 적용 가능한 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 14는, 암호화 처리에 있어서의 라운드키 생성 처리에 대해 더블 스와프 연산을 적용한 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 15는, i비트 더블 스와프 연산을 적용한 비트 위치 변경 처리에 대해 설명하는 도면이다.
도 16은, i비트 더블 스와프 연산을 적용한 비트 위치 변경 처리를 실행하는 하드웨어 구성예에 대해 설명하는 도면이다.
도 17은, (r-1) 회분 i비트 더블 스와프 연산을 적용한 비트 위치 변경 처리를 실행하는 하드웨어 구성예에 대해 설명하는 도면이다.
도 18은, 복호 처리에 있어서의 라운드키 생성 처리에 대해 더블 스와프 연산을 적용한 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 19는, 암호화, 복호의 쌍방에 있어서의 라운드키 생성 처리에 대해 더블 스와프 연산을 적용한 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 20은, i비트 더블 스와프 연산을 적용한 비트 위치 변경 처리에 대해 설명하는 도면이다.
도 21은, 암호 처리에 있어서의 라운드키 생성 처리에 대해 스와프 연산과 서브 스와프 연산을 적용한 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 22는, 스와프 연산을 적용한 비트 위치 변경 처리에 대해 설명하는 도면이다.
도 23은, i비트 서브 스와프 연산을 적용한 비트 위치 변경 처리에 대해 설명하는 도면이다.
도 24는, 점프 연산을 적용한 비트 위치 변경 처리에 대해 설명하는 도면이다.
도 25는, 정수 생성 회로와 배타적 논리합연산부를 가지는 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예에 대해 설명하는 도면이다.
도 26은, 정수 생성 회로의 구성예에 대해 설명하는 도면이다.
도 27은, 본 발명과 관련되는 암호 처리를 실행하는 암호 처리 장치로서의 IC모듈의 구성예를 도시한 도면이다.
본 발명은, 상기 문제점을 감안하여 이루어진 것이며, 암호 해석의 곤란성을 높여, 안전성이 높은 공통키 블록 암호 알고리즘을 실현하는 암호 처리 장치과 암호 처리 방법과 컴퓨터 프로그램을 제공하는 것을 목적으로 한다.
본 발명의 제 1의 측면은, 공통키 블록 암호 처리를 실행하는 암호 처리 장치이며,
라운드 함수를 복수 라운드 반복하는 데이터 변환 처리를 행하는 암호 처리부와,
상기 라운드 함수의 실행에 적용하는 라운드 키를 생성하는 키 스케쥴부를 가지며,
상기 키 스케쥴부는,
비밀키의 변환 처리에 의해서 중간키를 생성하고, 생성한 중간키를 저장하는 레지스터와,
상기 레지스터에 저장된 레지스터 저장 데이터에 대한 데이터 변환 처리를 실행하는 데이터 변환부이며, 상기 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(swap : 입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 데이터 변환부를 가지는 구성된 것을 특징으로 하는 암호 처리 장치이다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 데이터 변환부는, 동일한 비트 수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 구성인 것을 특징으로 한다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 데이터 변환부는, 2m 비트로 구성되는 상기 레지스터 저장 데이터를,
(a) 선두 i 비트의 부분 데이터 A0,
(b) 선두로부터 i+1 비트 ~ m비트의 부분 데이터 A1,
(c) 선두로부터 m+1 비트 ~ 2m-i 비트의 부분 데이터 A2,
(d) 말미 i 비트의 부분 데이터 A3,
상기 (a)~(d)에 나타나는 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 구성인 것을 특징으로 한다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 데이터 변환부는, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 조의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 더블 스와프 처리 실행부와, 상기 더블 스와프 처리 실행부의 처리의 복수의 반복 처리의 역처리에 대응하는 데이터 변환 처리를 실행하는 더블 스와프 역처리 실행부를 가지는 구성인 것을 특징으로 한다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 데이터 변환부는, 암호화 처리에 있어서의 라운드키 생성과 역순으로 라운드키를 생성하는 복호용 라운드키 생성 처리를 행하는 구성을 가지며, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 조의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 더블 스와프처리를 미리 규정된 라운드 수에 근거하여 결정되는 횟수만큼 반복한 결과 데이터를, 상기 레지스터 저장 데이터에 대한 변환 처리에 의해서 생성하는 복호용 라운드키 대응 데이터 변환부와, 상기 복호용 라운드키 대응 데이터 변환부에 있어서 변환된 데이터에 대해서, 상기 더블 스와프 처리의 역처리를 실행하고, 각 라운드의 라운드키를 생성하는 더블 스와프 역처리 실행부를 가지는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 데이터 변환부는, 2m 비트로 구성되는 상기 레지스터 저장 데이터를,
(a) 선두 m비트의 부분 데이터 A0,
(b) 말미 m비트의 부분 데이터 A1,
상기 (a)~(b)에 나타나는 2개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 실행하는 스와프 처리 실행부와,
2m비트로 구성되는 상기 레지스터 저장 데이터를,
(c) 선두(m-i) 비트의 부분 데이터 A0,
(d) 선두로부터(m-i+1) 비트 ~ (m+i)비트의 부분 데이터 A1,
(e) 선두로부터(m+i+1) 비트 ~ 말미 비트의 부분 데이터 A2,
상기 (c)~(e)에 나타나는 3개의 부분 데이터에 구분하고, 상기 (c)와(d)의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 서브 스와프 처리 실행부를 가지며, 상기 스와프 처리 실행부와, 상기 서브 스와프 처리 실행부의 처리를 라운드 진행에 따라 교대로 실행해 라운드키의 생성을 실행하는 구성인 것을 특징으로 한다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 데이터 변환부는, 추가로, 상기 스와프 처리 실행부와, 상기 서브 스와프 처리 실행부의 처리의 반복 처리의 역처리에 대응하는 데이터 변환을 실행하는 역변환 처리 실행부를 가지는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 키 스케쥴부는, 추가로, 라운드마다 다른 정수를 생성하는 정수 생성부와, 상기 정수 생성부의 생성한 정수와, 상기 레지스터 저장 데이터와의 배타적 논리합연산을 실행하여 라운드키를 생성하는 배타적 논리합연산부를 가지는 구성인 것을 특징으로 한다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 정수 생성부는, 생성하는 정수보다 적은 비트수의 라운드마다 다른 소비트수 데이터의 시프트 데이터의 편성에 의해서 라운드마다 다른 정수를 생성하는 구성인 것을 특징으로 한다.
또한, 본 발명의 암호 처리 장치의 실시 형태에 있어서, 상기 정수 생성부는, 생성하는 정수보다 적은 비트수의 소비트수 데이터에 대한 데이터 변환에 의해서, 라운드마다 다른 소비트수 데이터를 생성하고, 생성한 소비트수 데이터의 시프트 데이터의 편성에 의해서 라운드마다 다른 정수를 생성하는 구성인 것을 특징으로 한다.
또한, 본 발명의 제 2의 측면은,
암호 처리 장치에 있어서 공통키 블록 암호 처리를 실행하는 암호 처리 방법이며, 키 스케쥴부에 있어서, 암호 처리부에서 실행하는 복수 라운드의 라운드 함수의 실행에 적용하는 복수의 라운드키를 생성하는 라운드키 생성 스텝과,
암호 처리부에 있어서, 상기 라운드키를 적용한 라운드 함수를 복수 라운드 반복하는 데이터 변환 처리를 행하는 암호 처리 스텝을 가지며,
상기 라운드키 생성 스텝은,
비밀키의 변환 처리에 의해서 중간키를 생성해 레지스터에 저장하는 중간키 생성 스텝과,
데이터 변환부가 상기 레지스터에 저장된 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 데이터 변환 스텝을 가지는 스텝이 되는 것을 특징으로 하는 암호 처리 방법에 있다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 데이터 변환 스텝은, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 스텝이 되는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 데이터 변환 스텝은, 2m 비트로 구성되는 상기 레지스터 저장 데이터를,
(a) 선두 i 비트의 부분 데이터 A0,
(b) 선두로부터 i+1 비트 ~ m비트의 부분 데이터 A1,
(c) 선두로부터 m+1 비트 ~ 2m-i 비트의 부분 데이터 A2,
(d) 말미 i 비트의 부분 데이터 A3,
상기 (a)~(d)에 나타나는 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 구성인 것을 특징으로 한다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 데이터 변환 스텝은, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 조의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 더블 스와프 처리 실행 스텝과, 상기 더블 스와프 처리 실행 스텝의 처리의 복수의 반복 처리의 역처리에 대응하는 데이터 변환 처리를 실행하는 더블 스와프 역처리 실행 스텝을 가지는 스텝이 되는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 데이터 변환 스텝은, 암호화 처리에 있어서의 라운드키 생성과 역순으로 라운드키를 생성하는 복호용 라운드키 생성 처리를 행하는 스텝을 가지며, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 조의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 더블 스와프처리를 미리 규정된 라운드 수에 근거하여 결정되는 횟수만큼 반복한 결과 데이터를, 상기 레지스터 저장 데이터에 대한 변환 처리에 의해서 생성하는 복호용 라운드키 대응 데이터 변환 스텝과, 상기 복호용 라운드키 대응 데이터 변환 스텝에 있어서 변환된 데이터에 대해서, 상기 더블 스와프 처리의 역처리를 실행하고, 각 라운드의 라운드키를 생성하는 더블 스와프 역처리 실행 스텝을 가지는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 데이터 변환 스텝은, 2m 비트로 구성되는 상기 레지스터 저장 데이터를,
(a) 선두 m비트의 부분 데이터 A0,
(b) 말미 m비트의 부분 데이터 A1,
상기 (a)~(b)에 나타나는 2개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 실행하는 스와프 처리 실행 스텝과,
2m비트로 구성되는 상기 레지스터 저장 데이터를,
(c) 선두(m-i) 비트의 부분 데이터 A0,
(d) 선두로부터(m-i+1) 비트 ~(m+i)비트의 부분 데이터 A1,
(e) 선두로부터(m+i+1) 비트 ~ 말미 비트의 부분 데이터 A2,
상기 (c)~(e)에 나타나는 3개의 부분 데이터에 구분하고, 상기 (c)와(d)의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 서브 스와프 처리 실행 스텝을 가지며,
상기 스와프 처리 실행 스텝과, 상기 서브 스와프 처리 실행 스텝의 처리를 라운드 진행에 따라 교대로 실행해 라운드키의 생성을 실행하는 스텝이 되는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 데이터 변환 스텝은, 추가로, 상기 스와프 처리 실행 스텝과, 상기 서브 스와프 처리 실행 스텝의 처리의 반복 처리의 역처리에 대응하는 데이터 변환을 실행하는 역변환 처리 실행 스텝을 가지는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 암호 처리 방법은, 추가로, 정수 생성부가, 라운드마다 다른 정수를 생성하는 정수 생성 스텝과, 배타적 논리합연산부가, 상기 정수 생성부의 생성한 정수와, 상기 레지스터 저장 데이터와의 배타적 논리합연산을 실행해 라운드키를 생성하는 배타적 논리합연산 스텝을 가지는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 정수 생성 스텝은, 생성하는 정수보다 적은 비트수의 라운드마다 다른 소비트수 데이터의 시프트 데이터의 편성에 의해서 라운드마다 다른 정수를 생성하는 스텝이 되는 것을 특징으로 한다.
또한, 본 발명의 암호 처리 방법의 실시 형태에 있어서, 상기 정수 생성 스텝은, 생성하는 정수보다 적은 비트수의 소비트수 데이터에 대한 데이터 변환에 의해서, 라운드마다 다른 소비트수 데이터를 생성하고, 생성한 소비트수 데이터의 시프트 데이터의 편성에 의해서 라운드마다 다른 정수를 생성하는 스텝이 되는 것을 특징으로 한다.
또한, 본 발명의 제 3의 측면은,
암호 처리 장치에 있어서 공통키 블록 암호 처리를 실행시키는 컴퓨터 프로그램이며,
키 스케쥴부에 암호 처리부에서 실행하는 복수 라운드의 라운드 함수의 실행에 적용하는 복수의 라운드키를 생성하는 라운드키 생성 스텝과,
암호 처리부에 있어서, 상기 라운드키를 적용한 라운드 함수를 복수 라운드 반복하는 데이터 변환 처리를 행하는 암호 처리 스텝을 가지며,
상기 라운드키 생성 스텝은,
비밀키의 변환 처리에 의해서 중간키를 생성해 레지스터에 저장하는 중간키 생성 스텝과,
데이터 변환부가 상기 레지스터에 저장된 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 데이터 변환 스텝을 실행시키는 스텝이 되는 것을 특징으로 하는 컴퓨터 프로그램에 있다.
한편, 본 발명의 컴퓨터 프로그램은, 예를 들면, 여러가지 프로그램코드 를 실행 가능한 컴퓨터 프로그램에 대해서, 컴퓨터가 독출가능한 형식으로 제공하는 기억 매체, 통신 매체, 예를 들면, CD 또는 FD, MO 등의 기록 매체, 혹은, 네트워크 등의 통신 매체에 의해서 제공 가능한 컴퓨터 프로그램이다. 이와 같은 프로그램을 컴퓨터가 독출 가능한 형식으로 제공함으로써, 컴퓨터 시스템상에서 프로그램에 대응하는 처리가 실현된다.
본 발명의 또 다른 목적, 특징이나 이점은, 후술하는 본 발명의 실시예나 첨부하는 도면에 근거하여 보다 상세한 설명에 의해 명확해질 것이다. 한편, 본 명세서에서 시스템이란, 복수의 장치의 논리적 집합 구성이며, 각 구성의 장치가 동일한 광체내에 있다는 것에는 한정되지 않는다.
이하, 본 발명의 암호 처리 장치과 암호 처리 방법과 컴퓨터 프로그램의 상세한 것에 대하여 설명한다. 설명은, 이하의 항목에 따라 행한다.
1.공통키 블록 암호의 개요
2.키 스케쥴부에 있어서의 라운드키 생성 처리 구성
(2-1) 키 스케쥴부의 상세 구성에 대해
(2-2) 시프트 처리를 적용한 일반적인 라운드키 생성 처리 구성에 대해
(2-3) 본 발명의 제 1실시예와 관련되는 라운드키의 생성 처리 구성에 대해
(2-4) 본 발명의 제 2실시예와 관련되는 라운드키의 생성 처리 구성에 대해
(2-5) 본 발명의 제 3실시예와 관련되는 라운드키의 생성 처리 구성에 대해
3.암호 처리 장치의 구성예
[1.공통키 블록 암호의 개요]
우선, 본 발명의 적용 가능한 공통키 블록 암호의 개요에 대해 설명한다. 본 명세서에서, 공통키 블록 암호(이하에서는, 블록 암호)는, 이하에 정의하는 것을 가리키는 것으로 한다.
블록 암호는 평문 P와 키 K를 입력하고, 암호문 C를 출력한다. 평문과 암호키의 비트 길이를 블록 사이즈라고 부르며, 여기에서는 n으로 표시한다. n은 임의의 정수치를 취할 수 있지만, 통상, 블록 암호 알고리즘마다, 미리 1개씩 결정되어 있는 값이다. 블록 길이가 n이 되는 블록 암호를 n 비트 블록 암호라고 부르기도 한다.
키의 비트 길이는, k로 나타낸다. 키는 임의의 정수치를 취할 수 있다. 공통키 블록 암호 알고리즘은, 1개 또는 복수의 키 사이즈에 대응하는 것이 된다. 예를 들면, 어느 블록 암호 알고리즘 A는 블록 사이즈 n=2128이며, 키의 비트 길이 k=128, 또는 k=192 또는 k=256의 각종의 키 사이즈에 대응하는 구성도 있을 수 있다.
평문[p], 암호문[C], 키[K]의 각 비트 사이즈는, 이하와 같이 나타난다.
평문P:n비트
암호문 C:n비트
키 K:k비트
도 1에 k비트의 키 길이에 대응하는 n비트 공통키 블록 암호 알고리즘 E의 도면을 나타내고 있다. 도 1에 도시한 바와 같이, 공통키 블록 암호 처리부 E(10)는, n비트의 평문 P와 k비트의 키 K를 입력하고, 미리 정해진 암호 알고리즘을 실행하고, n비트의 암호문 C를 출력한다. 또한, 도 1에는 평문으로부터 암호문을 생성하는 암호화 처리만을 나타내고 있다. 암호문으로부터 평문을 생성하는 복호 처리는, 일반적으로는 E10의 역함수가 이용된다. 다만, 암호화 처리부(E10)의 구조에 따라서는, 복호 처리에 대해서도, 같은 공통키 블록 암호 처리부(E10)가 적용가능하며, 키의 입력순 등의 순서의 변경에 의해서 복호 처리가 가능해진다.
도 1에 도시한 공통키 블록 암호 처리부(E10)의 내부 구성에 대해서, 도 2를 참조해 설명한다. 블록 암호는 2개의 부분으로 나누어 생각하는 것이 가능하다. 하나는 키 K를 입력으로 하고, 어느 정해진 스텝에 의해 입력키 K의 비트길이를 확대하고 확대키 K'(비트 길이 k')를 출력하는 키 스케쥴부(11)와, 평문 P와 키 스케쥴부(11)로부터 입력하는 확대키 K'를 취하여, 평문 P를 입력하고, 확대키 K'를 적용한 암호 처리를 실행하고, 암호문 C를 생성하기 위한 데이터의 변환을 실행하는 암호 처리부(12)이다. 한편, 먼저 설명한 바와 같이, 암호화 처리부(12)의 구조에 따라서는, 암호문을 평문으로 되돌리는 데이터 복호 처리에도 암호 처리부(12)가 적용 가능한 경우도 있다.
다음에, 도 2에 도시한 암호 처리부(12)의 상세 구성에 대해 도 3을 참조해 설명한다. 암호 처리부(12)는, 도 3에 도시한 바와 같이, 라운드 함수 실행부(20)를 적용한 데이터 변환을 반복해 실행하는 구성을 가진다. 즉, 암호 처리부(12)는, 라운드 함수 실행부(20)라고 하는 처리 단위로 분할할 수 있다. 라운드 함수 실행부(20)는 입력으로서, 전단의 라운드 함수 실행부의 출력 Xi와 확대키에 근거해 생성되는 라운드키 RKi의 2개의 데이터를 받아, 내부에서 데이터 변환 처리를 실행해 출력 데이터 Xi+1를 다음의 라운드 함수 실행부에 출력한다. 또한, 제 1라운드에서는, 입력은, 평문 또는 평문에 대한 초기화 처리 데이터이다. 또 최종 라운드의 출력은 암호문이 된다.
도 3에 도시한 예에서는, 암호 처리부(12)는, r개의 라운드 함수 실행부(20)를 가지며, r회의 라운드 함수 실행부에 있어서의 데이터 변환을 반복해 암호키를 생성하는 구성으로 되어 있다. 라운드 함수의 반복 회수를 라운드수라고 부른다. 도면에 도시한 예에서는, 라운드수는 r로 된다.
각 라운드 함수 실행부의 입력 데이터 Xi는 암호화 도중의 n비트 데이터이며, 어느 라운드에 있어서의 라운드 함수의 출력 Xi+l가 다음의 라운드의 입력으로서 공급된다. 각 라운드 함수 실행부의 또 하나의 입력 데이터는 키 스케쥴로부터 출력된 확대키의 K'에 근거하는 데이터가 이용된다. 이 각 라운드 함수 실행부에 입력되어 라운드 함수의 실행에 적용되는 키를 라운드키라고 부른다. 도면에서, i라운드에 적용하는 라운드키를 RKi로서 나타내고 있다. 확대키 K'는, 예를 들면, r라운드분의 라운드키(RK1~RKr)의 연결 데이터로서 구성된다.
도 3에 도시한 구성은, 암호 처리부(12)의 입력측에서 관찰한 첫 번째 라운드의 입력 데이터를 X0로 하고, i번째의 라운드 함수로부터 출력되는 데이터를 Xi, 라운드키를 RKi로서 나타낸 암호 처리부(12)의 구성이다. 또한, 이 암호 처리부(12)의 구조에 따라서는, 예를 들면, 적용하는 라운드키의 적용 순서를, 암호화 처리와 반대로 설정하고, 암호키를 암호 처리부(12)에 입력함으로써 평문을 출력하는 구성으로 할 수 있다.
도 3에 도시한 암호 처리부(12)의 라운드 함수 실행부(20)는, 다양한 형태를 취할 수 있다. 라운드 함수는 그 암호 알고리즘이 채용하는 구조(structure)에 의해서 분류할 수 있다. 대표적인 구조로서,
(가) SPN(Substitution Permutation Network) 구조,
(나) Feistel 구조가 있다.
이하, 이러한 구체적 구성에 대해서, 도4~도 6을 참조해 설명한다.
(가) SPN 구조 라운드 함수
우선, 도 4를 참조하고, 라운드 함수 실행부(20)의 한 구성예로서의 SPN 구조 라운드 함수에 대해 설명한다. SPN 구조 라운드 함수 실행부(20a)는, 비선형 변환층(S층)과 선형 변환층(P층)을 접속한 소위 SP형의 구성을 가진다. 도 4에 도시한 바와 같이, n비트의 입력 데이터 모두에 대해서, 라운드키와의 배타적 논리합(EXOR) 연산을 실행하는 배타적 논리합연산부(21), 배타적 논리합연산부(21)의 연산 결과를 입력해, 입력 데이터의 비선형 변환을 실행하는 비선형 변환 처리부(22), 비선형 변환 처리부(22)에 있어서의 비선형 변환 처리 결과를 입력해, 입력 데이터에 대한 선형 변환 처리를 실행하는 선형 변환 처리부(23) 등에 의해서 구성된다. 선형 변환 처리부(23)의 선형 변환 처리 결과가, 다음의 라운드에 출력된다. 최종 라운드에서는 암호문이 된다. 또한, 도 4에 도시한 예에서는, 배타적 논리합연산부(21), 비선형 변환 처리부(22), 선형 변환 처리부(23)의 처리순서를 나타내고 있지만, 이러한 처리부의 차례는, 한정되는 것이 아니고, 다른 순서로 처리를 행하는 구성이라고 해도 좋다.
(나) Feistel 구조
다음에, 도 5를 참조해 라운드 함수 실행부(20)의 한 구성예로서의 Feistel(페이스텔)구조에 대해 설명한다. Feistel 구조는, 도 5에 도시한 바와 같이, 이전 라운드로부터의 입력(제 1라운드에서는 입력문)이 되는 n비트의 입력 데이터를 n/2 비트의 2개의 데이터로 분할하고, 각 라운드에 대해 입력 교체하는 처리를 실행한다.
Feistel 구조를 가지는 라운드 함수 실행부(20b)를 적용한 처리에 대해서는, 도면에 도시한 바와 같이, 또한 n/2 비트 데이터와 라운드키가 F함수부(30)에 입력된다. F함수부(30)는, 상술한 SPN 구조와 같이, 비선형 변환층(S층)과 선형 변환층(p층)을 접속한 소위 SP형의 구성을 가진다.
이전 라운드로부터의 n/2비트 데이터와 라운드키가 F함수부(30)의 배타적 논리합연산부(31)에 입력되어 배타적 논리합(EXOR) 처리가 이루어진다. 또한, 이 결과 데이터를 비선형 변환 처리부(32)에 입력해 비선형 변환을 실행하고, 또한, 이 비선형 변환 결과가 선형 변환 처리부(33)에 입력되어 선형 변환이 실행된다. 이 선형 변환 결과가, F함수 처리 결과 데이터로서 출력한다.
또한, 이 F함수 출력과 이전 라운드로부터 입력하는 다른 1개의 n/2 비트 입력을, 배타적 논리합연산부(34)에 입력해, 배타적 논리합연산(EXOR)을 실행하고, 실행 결과를, 다음의 라운드에 있어서의 F함수의 입력으로서 설정한다. 또한, 도면에 도시한 제 i라운드에 있어서의 F함수 입력으로 설정된 n/2비트는 다음의 라운드의 F함수 출력과의 배타적 논리합연산으로 적용된다. 이와 같이, Feistel 구조는, 각 라운드에 대해 입력을 교대로 바꿔 넣으면서 F함수를 적용한 데이터 변환 처리를 실행한다.
도4~도 5를 참조해 설명한 바와 같이, 공통키 블록 암호에 있어서의 암호 처리부(12)의 라운드 함수 실행부(20)는,
(가) SPN(Substitution Permutation Network) 구조,
(나) Feistel 구조와 같은 구조를 취할 수 있다.
이러한 라운드 함수 실행부는, 어느 비선형 변환층(S층)과 선형 변환층(P층)을 접속한 소위 SP형의 구성을 가진다. 즉, 비선형 변환 처리를 실행하는 비선형 변환 처리부와 선형 변환 처리를 실행하는 선형 변환 처리부를 가진다. 이하, 이러한 변환 처리 구성에 대해 설명한다.
(비선형 변환 처리부)
비선형 변환 처리부의 구체적인 예에 대해서, 도 6을 참조해 설명한다. 도 6에 도시한 바와 같이, 비선형 변환 처리부(50)는, 구체적으로는, S박스(S-box)(51)라고 불리는 s비트 입력 s비트 출력의 비선형 변환 테이블이 m개 배열된 것이며, ms 비트의 입력 데이터가 s 비트씩 분할되어 각각 대응하는 S박스(S- box)(51)로 입력되어 데이터가 변환된다. 각 S박스(51)에서는, 예를 들면 변환 테이블을 적용한 비선형 변환 처리가 실행된다.
입력되는 데이터의 사이즈가 커지면 실장상의 코스트가 비싸지는 경향이 있다. 그것을 회피하기 위해서, 도 6에 도시한 바와 같이, 처리 대상 데이터 X를 복수의 단위로 분할하고, 각각에 대해서, 비선형 변환을 실시하는 구성이 취해지는 것이 많다. 예를 들면 입력 사이즈를 ms비트로 했을 때, s비트씩의 m개의 데이터로 분할하고, m개의 S박스(S-box)(51) 각각에 대해서 s비트를 입력하고, 예를 들면 변환 테이블을 적용한 비선형 변환 처리를 실행하고, 이러한 각 S비트 출력 m개를 합성해 ms비트의 비선형 변환 결과를 얻는다.
(선형 변환 처리부)
선형 변환 처리부의 구체적인 예에 대해서, 도 7을 참조해 설명한다. 선형 변환 처리부는, 입력치, 예를 들면, S박스로부터의 출력 데이터가 되는 ms비트의 출력치를 입력치 X로서 입력하고, 이 입력에 대해서 선형 변환을 실시하여 ms비트트의 결과를 출력한다. 선형 변환 처리는, 예를 들면, 입력 비트 위치의 교체 처리 등의 선형 변환 처리를 실행하고, ms비트의 출력치 Y를 출력하는 선형 변환 처리는, 예를 들면, 입력에 대해서, 선형 변환 행렬을 적용해 입력비트 위치의 교체 처리를 행한다. 이 행렬의 일례가 도 7에 도시한 선형 변환 행렬이다.
선형 변환 처리부에 있어 적용하는 선형 변환 행렬의 요소는 확대체:GF(28)본체 요소나 GF(2)의 요소 등, 일반적으로는 다양한 표현을 적용한 행렬로서 구성할 수 있다. 도 7은, ms비트 입출력을 갖고, GF(28)상에서 정의되는 m×m의 행렬에 의해 정의되는 선형 변환 처리부의 하나의 구성예를 도시한 것이다.
[2. 키 스케쥴부에 있어서의 라운드키 생성 처리 구성]
상술한 바와 같이, 공통키 블록 암호는, 라운드 함수의 반복에 의한 암호 처리를 행하는 구성이다. 이 공통키 블록 암호 처리의 문제점으로서 암호 해석에 의한 키의 누설이 있다. 암호 해석에 의한 키의 해석이 용이하다는 것은, 그 암호 처리의 안전성이 낮다는 것이며, 실용상, 큰 문제가 된다.
상술한 설명으로부터 분명한 바와 같이 공통키 블록 암호에 있어서는, 각 라운드에 있어서 확대키에 근거해 생성되는 라운드키를 적용한 처리가 이루어진다. 암호 공격에서는, 라운드키의 해석에 근거해 확대키를 복원하고, 또한 확대키의 원래 데이터가 되는 비밀키를 해석하는 순서의 공격이 행해지는 경우가 있다. 이하에서는, 이러한 키 해석의 곤란성을 높이고 안전성이 높아진 암호 처리 장치의 구성예에 대해 설명한다
이하, 이하의 각 항목에 따라서, 설명을 행한다.
(2-1) 키 스케쥴부의 상세 구성에 대해
(2-2) 시프트 처리를 적용한 일반적인 라운드키 생성 처리 구성에 대해
(2-3) 본 발명의 제 1실시예와 관련되는 라운드키의 생성 처리 구성에 대해
(2-4) 본 발명의 제 2실시예와 관련되는 라운드키의 생성 처리 구성에 대해
(2-5) 본 발명의 제 3실시예와 관련되는 라운드키의 생성 처리 구성에 대해
(2-1) 키 스케쥴부의 상세 구성에 대해
먼저, 예를 들면 도 2를 참조해 설명한 바와 같이, 공통키 블록 암호에 대해서는, 키 스케쥴부가, 입력키 K의 비트 길이를 확대하고 확대키 K'(비트장 k')를 출력하며, 확대키에 근거해 생성되는 라운드키 RK를 적용한 라운드 함수가 실행된다.
키 스케쥴부는, 예를 들면, 수 백 비트의 키 데이터를 수 천 비트 정도의 확대키 데이터로 확장하고, 라운드 함수를 실행하는 데이터 암호화부에 공급한다. 확대키 데이터 가운데, 데이터 암호화부의 라운드 함수에 입력되는 확대키의 일부를 라운드키라고 부른다. 또, 라운드 함수 이외에도 라운드키가 삽입되는 경우가 있다. 예를 들면, 최초의 라운드 함수의 이전에 삽입(EXOR)되는 키를 초기키, 마지막 라운드 함수의 뒤에 삽입(EXOR)되는 키를 최종키라고 부른다.
도 8 및 도 9를 참조해 암호화 처리와 복호 처리에 있어서의 비밀키 K와 라운드키의 대응에 대해 설명한다. 도 8, 도 9에는, 각각 r단을 라운드수로 하는 블록 암호를 실행하는 암호화 구성 및 복호 구성을 나타내고 있다.
예를 들면, 도 8은, r단을 라운드수로 하는 블록 암호를 실행하는 암호화 구성이며, 비밀키[K](111)는, 암호화키 스케쥴부(112)에 입력되며, 비트 확장 처리 등의 소정의 알고리즘에 따른 데이터 변환에 의해, 복수의 라운드키를 포함한 암호화 확대키(113)를 생성한다. 데이터 암호화부(114)는, r단을 라운드수로 하는 블록 암호를 실행하는 구성이며, 암호화의 경우에, 1로부터 r단째까지의 라운드 함수에 각각 라운드키{RK1, RK2,...., RKr-1, RKr}가 순서대로 입력되어 라운드 함수(F함수)가 실행된다.
도 9는, 복호 처리 구성을 나타내고 있다. 비밀키[K](121)는, 복호키 스케쥴부(122)에 입력되며, 비트 확장 처리 등의 소정의 알고리즘에 따른 데이터 변환에 의해, 복수의 라운드키를 포함한 복호 확대키(123)를 생성한다. 또한, 비밀키[K](121)는 암호화 처리에 있어서 적용한 도 8에 도시한 비밀키[K](111)와 같은 키가 적용된다.
데이터 복호부(124)는, r단을 라운드수라고 하는 블록 암호를 실행하는 구성이며, 복호 처리의 경우는, 암호 처리와는 반대의 차례로 라운드키{RKr, RKr-1, ...., RK2, RK1}가 순서대로 입력되어 라운드 함수(F함수)가 실행된다.
키 해석을 행하는 암호 공격에 대해 내성이 높은, 즉 키 해석을 곤란하게 하고 안전성을 높인 구성으로 하기 위해, 라운드키가 만족시키는 이상적인 성질로서는 이하의 성질이 있다.
(a) 라운드키를 알 수 있어도 키 데이터가 복원되지 않음.
(b) 라운드키들이 독립적인 것
이러한 성질이 있다.
(a)는, 만일 각 라운드에 대해 적용하는 라운드키가 해석되었을 경우에도, 그 라운드키로부터 원래의 비밀키를 복원 불가능하므로 안전성을 높일 수 있는 것을 의미한다. 또, (b)는 1개의 라운드 키와 다른 라운드키의 데이터 사이에 어떠한 관계가 있는 경우, 1개의 라운드키의 해석에 성공했을 경우, 다른 라운드키가 추정 가능하게 되어, 이러한 관련성을 배제하게 되어 안전성이 높아진다는 것을 의미한다.
그렇지만, 실장의 코스트상, 라운드키들이 독립이도록 라운드키를 생성하는 것은 어렵고, 실제로는, 비밀키나 비밀키로부터 비선형 변환을 이용해서 구해진 중간키 데이터를 순환 시프트한 데이터로부터 절단한 데이터를 라운드키로서 이용하는 경우가 많다. 또, 상기 조건을 만족하지 않은 경우에도, 안전상,
* slide attack(슬라이드 공격) 대해 충분한 내성을 가지는 것
* related cipher attack(관련 암호 공격)에 대해서 충분한 내성을 가지는 것이 필요하게 된다.
Slide attack(슬라이드 공격)은, 원래의 암호화 함수와 그것을 지연시킨 암호화 함수로서, 중첩한 라운드 함수의 데이터치가 같게 되는 평문암호문을 검출하고, 이것을 이용해 지연시킨 부분의 키를 효율적으로 구하는 공격이다. 다른 비밀키에 대해서 여러 부분의 라운드키가 일치하는 경우에 공격 가능해진다.
또한, Related cipher attack(관련 암호 공격)은, 이하와 같은 공격이다. 어느 공통키 블록 암호가 라운드수 r1의 k1비트의 키 길이, 라운드수 r2의 k2 비트의 키 길이를 모두 서포트하고 있는 경우(r1 < r2 그리고 k1 < k2로 한다)를 생각한다.키 길이 k1비트의 라운드키가 키 길이 k2 비트의 라운드키의 일부와 일치하는 경우를 생각한다. 이 경우, 키 길이 k1 비트의 경우의 데이터 암호부의 출력을 이용하여, 키 길이 k2 비트의 경우의 나머지의 라운드키를 공격하는 것이 가능하게 된다.
(2-2) 시프트 처리를 적용한 일반적인 라운드 키 생성 처리 구성에 대해
상술한 바와 같이, 상술의 라운드키를 이용하는 공통키 블록 암호 처리를 실행하는 장치를 구성하는 경우, 실장의 코스트상, 라운드키들이 독립이도록 라운드키를 생성하는 것은 어렵고, 실제로는, 비밀키로부터 비선형 변환을 이용해서 구할 수 있었던 중간키 데이터를 순환 시프트한 데이터로부터 절단한 데이터를 라운드키로서 이용한다.
이 비밀키로부터 비선형 변환을 이용해서 구할 수 있었던 중간키 데이터를 순환 시프트한 데이터로부터 절단한 데이터를 라운드키로서 이용하는 경우의 키 스케쥴부의 일반적인 구성예에 대해서, 도 10~도 12를 참조해 설명한다.
도 10은, 암호화 처리에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예,
도 11은, 복호 처리에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예,
도 12는, 암호화, 복호의 쌍방에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예를 나타내고 있다.
우선, 도 10에 도시한 암호화 처리에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성과 처리에 대해 설명한다. 비밀키 K를 k 비트로 한다. 비밀키 K를, 비선형 변환 회로(201)에 입력하고, 비선형 변환 처리를 행하여 n비트의 중간키 데이터를 생성한다. 중간키 데이터를 L로 한다.
중간키 데이터 L은, 실렉터(202)를 통해 레지스터(RegL203)에 입력되어 저장된다. 실렉터(202)에는, i비트 좌순환 시프트 회로(211), (r-1)×i비트 우순환 시프트 회로(212)가 접속되며, 실렉터(202)를 통해 레지스터(RegL203)에 대해 각각의 순환 시프트 처리 신호가 입력되며, 레지스터(RegL203)에 저장된 데이터의 i비트 왼쪽 순환 시프트 처리, 또는 (r-1)×i비트 오른쪽 순환 시프트 처리가 실행된다. 또한, i는 1이상의 정수이다.
예를 들면, i비트 좌순환 시프트 회로(211)는, 레지스터(RegL203)에 저장된 n비트의 중간키 L의 i비트 순환 좌시프트를 실행하고, 다음과 같이, 레지스터(RegL203)에 저장된 중간키 L로부터, n비트의 r개의 라운드키 데이터{RK1, RK2,..., RKr-1, RKr}를 만들어 낸다.
RK1 = L
RK2 = L<<<i
RK3 = L<<<(2×i)
................
RKr-1 = L<<<((r-2)×i)
RKr = L<<<((r-1)×i)
또한, 상기식에 있어서, [<<<i]는, i비트 순환 좌시프트를 나타내고 있다.
RK1 = L은, 시프트량 제로의 데이터이며, 중간키 L과 동일하고,
RK2 = L<<<i는, 중간키 L에 대해서, 왼쪽으로 i비트의 순환 시프트를 행한 데이터, RK3 = L<<<(2×i)는, 중간키 L에 대해서, 왼쪽으로 2×i비트의 시프트를 행한 데이터를 각각 도시하고 있다.
이 방식을 적용한 실장 구성 및 처리에 대해서, 도 10을 참조해 설명한다. 우선, 중간키 생성 프로세스에 있어서, k비트의 비밀키 K를 비선형 변환 회로(201)에 입력하고, n비트의 중간키 데이터 L을 생성해 실렉터(202)를 통해 그대로 시프트 처리없이, 라운드 중간키용 레지스터(RegL203)에 저장한다.
암호화의 경우에는, i비트 좌순환 시프트 회로(211)의 처리 신호를 실렉터(202)를 통해 라운드 중간키용 레지스터(RegL203)에 선택 입력하고, 라운드 중간키용 레지스터(RegL203)에 저장된 n비트의 중간키 데이터 L에 대한 i비트 순환 좌시프트를 반복해 실행하고, 라운드키 데이터{RK1, RK2,.., RKr-1, RKr}를 차례차례 만들어 낼 수 있다.
이 처리에 의해서, 모든 라운드의 라운드키{RK1, RK2,..., RKr-1, RKr}가 생성되어 출력되면, 마지막에 라운드 중간키용 레지스터(RegL203)에 저장된 데이터를 (r-1)×i비트 순환 오른쪽 시프트 한다. 이 처리는, (r-1)×i비트 우순환 시프트 회로(212)의 처리 신호를 실렉터(202)를 통해 라운드 중간키용 레지스터(RegL203)에 선택 입력하는 것으로 실행된다. 이 오른쪽 시프트 처리에 의해서, 라운드 중간키용 레지스터(RegL203)에 저장된 데이터를, 시프트 없는 초기 상태로서의 중간키 데이터 L에 되돌릴 수 있다.
이 암호화 처리에 있어서의 라운드키 생성 프로세스는, 중간키 L, 라운드수r, 각 라운드로의 라운드키 RK, 각 라운드 이행시의 시프트량 i로 하여, 이하와 같이 표현된다.
For n=1 to r-1 do
RKn←RegL
RegL←RegL <<< i
RK←RegL
RegL←RegL >>>((r-1)×i)
상기 기재에 있어서,
<<<i 는 i비트 왼쪽 순환 시프트,
>>>i는 i비트 오른쪽 순환 시프트를 나타내고 있다.
도 11은, 복호 처리에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예이다. 도 11에 도시한 복호 처리에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부에 있어서, 비선형 변환 회로(201), 실렉터(202), 레지스터(RegL2031)는, 도 10에 도시한 구성과 같고, 시프트 회로(221, 222)만이 차이가 난다.
즉, 복호 처리에 있어서의 시프트 회로(221, 222)는, 암호 처리에 있어서의 시프트 회로(211, 212)와 역방향의 시프트를 실행하는 회로, 즉, i비트 우순환 시프트 회로(221)와, (r-1)×i비트 좌순환 시프트 회로(222)에 의해서 구성된다.
이 복호 처리에 있어서의 키 스케쥴부에서는, 우선, (r-1)×i비트 좌순환 시프트 회로(222)의 처리에 의해서, 레지스터(RegL203)에 저장된 중간키 데이터를, (r-1)×i비트 순환 왼쪽 시프트 한다. 그 후에, i비트 우순환 시프트 회로(221)의 처리에 의해, 각 라운드의 라운드키 생성마다, 레지스터(RegL203)에 저장된 데이터를 적당히 i비트 오른쪽 순환 시프트 한다. 이 처리 순서에 의해, 라운드키 데이터는, 암호 처리시와 반대의 차례로 생성된다. 즉, {RKr, RKr-1,...,RK2, RK1}를 차례차례 만들어 낼 수 있다.
이 복호 처리에 있어서의 라운드키 생성 프로세스는, 중간키 L, 라운드수 r, 각 라운드로의 라운드키 RK, 각 라운드 이행시의 시프트량 I로 하여 이하의 처리 알고리즘으로서 표현된다.
RegL←RegL <<<((r-1)×i)
For n=r to 2 do
RK←RegL
RegL←RegL >>> i
RK←RegL
상기 기재에 있어서,
<<<는 i비트 왼쪽 순환 시프트,
>>>i는 i비트 오른쪽 순환 시프트를 나타내고 있다.
또한, 도 10, 도 11은, 각각 암호화 처리때의 라운드키 생성 처리, 복호 처리때의 라운드키 생성 처리를 실행하는 구성이지만, 이러한 기능을 겸비한 구성도 구축 가능하다. 이 구성을 도 12에 나타낸다. 도 12에 도시한 구성에서는, 순환 시프트 회로(231~234)를 구비하며, 각각,
i비트 좌순환 시프트 회로(231),
i비트 우순환 시프트 회로(232),
(r-1)×i비트 우순환 시프트 회로(233),
(r-1)×i비트 좌순환 시프트 회로(234)이며, 도 10, 도 11에 구성된 순환 시프트 회로를 모두 포함한 구성이며,
i비트 왼쪽 순환 시프트, i비트 오른쪽 순환 시프트, (r-1)×i비트 오른쪽 순환 시프트, (r-1)×i비트 왼쪽 순환 시프트를 선택적으로 실행하는 것이 가능한 구성을 가진다. 이 구성을 적용하여, 암호화 및 복호 처리중 어느 경우의 라운드키를 생성해 출력하는 것이 가능해진다.
이러한 순회 시프트 처리에 의한 라운드키 생성 처리 구성에 대해 고찰한다.특히, 라운드키 데이터를 구성하는 비트 사이의 상대 위치의 변화 상황에 대해 생각한다. i비트 왼쪽 순회 시프트는, 조작 대상이 되는 비트열의 왼쪽에서 i비트분을 잘라내고, 그것을 우측으로 이동시켜 연결하는 조작이다. 특정의 비트 데이터에 주목하면, 순회 시프트를, 임의회 실행해도, 어느 비트의 양측에 있는 비트는 변화하는 것이 없다.
어느 비트가 비트열의 좌단 또는 우단으로 이동했을 경우에는 근처의 비트가 존재하지 않게 되지만, 재차, 시프트 처리를 실시하면 또한 이전과 같은 비트 배열이 된다. 즉, 어느 특정의 비트의 전후에 있는 비트는 비트열의 단부로 설정되는 경우 이외에는 항상 변화가 없게 된다. 이와 같이 비트의 양측의 비트가 일체 변경되지 않는다는 성질, 즉 비트 배열의 불변성은, 라운드 함수를 가지는 암호 처리 구성에 있어서의 키 누설의 곤란성을 높이기 위한 요구가 되는 [라운드키들이 독립적인 것]이라는 조건에 대한 취약성을 가져오게 되어, 바람직하지 않다.
또한, 비트 배열의 불변성은, 상술한 Slide attack(슬라이드 공격)에 의한 키 해석에 대한 취약성도 가진다. 예를 들면,
(A) 비밀키 K에 근거해 생성된 중간키 데이터 L과,
(B) 다른 비밀키 K'에 근거해 생성된 중간키 데이터 L'를 (s x i)비트 왼쪽 순환 시프트 한 확대키 데이터 L'<<<(s x i)
이것들이 동일한 값이 되었을 경우에는, 그 후에 비트 시프트에 의해서 생성되는 각 라운드의 라운드키, 즉,
(a) 중간키 데이터 L에 의해 생성되는 r-s단분의 라운드키{RK1, RK2,.., RK(r-s)-1, RK(r-s)}와,
(b) 확대키 데이터 L'<<<(sxi)에 의해 생성되는 r-s단분의 라운드키{RKS+1, RK2S+2,...., RK2r-1, RK2r}
이러한 각 라운드키가(a)(b)에서, 동일한 데이터가 되어 버린다.
이 성질에 의해, 전술의 Slide attack(슬라이드, 공격)에 의한 키 해석이 용이해져, 공격에 대한 내성이 불충분하게 되어 버린다.
먼저 설명한 바와 같이, 공통키 블록 암호의 알고리즘을 실행하는 대표적인 구조로서 Feistel 구조가 있다. Feistel 구조는, 데이터 변환 함수로서의 라운드 함수(F함수)의 단순한 반복에 의해, 평문을 암호문으로 변환하는 구조를 가진다. 라운드 함수(F함수)에 대해서는, 선형 변환 처리 및 비선형 변환 처리가 실행된다. Feistel 구조에서는, 각 라운드에 대해 적용하는 라운드키의 사이즈는, 암호화 처리 데이터로서의 입력 비트수 n에 대해서, n/2 비트가 된다.
이러한 경우, 중간키 데이터 L을 n비트로서 생성하고, n비트의 데이터중 상위 반의 n/2 비트를 홀수 라운드에 이용하고, 나머지의 하위 n/2 비트를 다음 라운드의 키로서 이용하는 구성이 일반적이다. 이 경우에는, 상위와 하위를 라운드 마다 선택하기 위한 회로를 추가 실장할 필요가 있다. 즉, n/2 비트의 라운드키를 이용하는 암호 처리 장치 구성(암호화/복호화 공유의 실장예)은, 예를 들면 도 13에 도시한 구성이 된다.
도 13에 도시한 구성은, 먼저 설명한 도 12에 도시한 구성과 같은 구성으로서 비선형 변환 회로(201), 실렉터(202), 레지스터(RegL203), 또한,
i비트 좌순환 시프트 회로(231),
i비트 우순환 시프트 회로(232),
(r-1)×i비트 우순환 시프트 회로(233),
(r-1)×i비트 좌순환 시프트 회로(234),
이러한 구성을 가지며, 또한,
실렉터(241)를 갖추고 있다.
레지스터(RegL203)에는, 먼저 도 12를 참조해 설명한 것과 같은 중간키 데이터 L(n 비트)이 저장되며, 실렉터(241)에 있어서, 레지스터(RegL203)에 저장된 n비트 데이터중 상위 반의 n/2 비트를 홀수 라운드에 대해 적용하는 라운드키로서 출력하고, 나머지의 하위 n/2 비트를 다음 라운드의 라운드키로서 출력하는 구성이다. 이와 같이, 상위와 하위를 라운드마다 선택하기 위한 실렉터(241)를 추가 실장할 필요가 있다.
상술한 바와 같이, 중간키 데이터에 대해서 시프트 처리를 실시해 라운드키를 생성하는 라운드키 생성법에서는,
* 서로 이웃이 되는 비트에는 변화가 적은 것에 의해 라운드키 사이의 독립성이 적다.
* Slide attack(슬라이드 공격)에 대해서 충분한 내성이 없다.
* Feistel 구조에서의 이용의 경우 상위-하위 비트열 선택 회로의 추가가 필요.
이러한 결점을 가진다.
(2-3) 본 발명의 제 1실시예와 관련되는 라운드키의 생성 처리 구성에 대해
이하, 상술한 순환 시프트 처리에 의한 라운드키의 생성 처리에 있어서의 문제점을 해결하고, 여러가지 암호 공격에 대한 내성이 높은, 즉 안전성이 높은 암호 처리를 실행하는 라운드키의 생성 처리 구성에 대해 설명한다.
이하에 설명하는 실시예는, 비밀키 K개에 기초를 두는 비선형 변환 처리의 결과로서 얻어진 중간키 데이터 L에 대해서, 순환 시프트 처리를 실행하는 것이 아니라, 중간키 데이터 L의 비트 위치 변경 처리로서의 더블 스와프(Double Swap) 처리를 실행하고, 라운드키를 생성하는 처리예이다. 각 라운드의 진행에 따라, 비트 위치 변경 처리로서의 더블 스와프 처리를 반복해 실행한다.
도 14를 참조하여, 본 발명의 암호 처리 장치의 실시예로서 더블 스와프 처리를 적용해 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성과 처리에 대해 설명한다.
도 14에 도시한 구성은, 먼저, 도 10을 참조해 설명한 비트 순환 시프트 처리에 의해서 라운드키를 생성하는 키 스케쥴부의 구성에 있어서의 i비트 좌순환 시프트 회로(211)를, i비트 더블 스와프 연산 회로(311)로 치환시키고 또한, 도 10에 도시한 (r-1)×i비트 우순환 시프트 회로(212)를, (r-1)회분 i비트 더블 스와프 역연산 회로(312)로 치환한 구성이다. 즉, 도 14에 도시한 바와 같이, i비트 더블 스와프 연산 회로(311)와, (r-1)회분 i비트 더블 스와프 역연산 회로(312)로 구성되는 데이터 변환부(310)를 가진다. 그 외의 구성은, 도 10을 참조해 설명한 구성과 같은 구성을 가진다.
도 14에 도시한 키 스케쥴부의 처리에 대해 설명한다. 키 스케쥴부에 입력하는 비밀키 K를 k비트로 한다. 비밀키 K를, 비선형 변환 회로(301)에 입력하고, 비선형 변환 처리를 행하고 n비트의 중간키 데이터를 생성한다. 중간키 데이터를 L로 한다.
중간키 데이터 L은, 실렉터(302)를 통해 레지스터(RegL303)에 입력되어 저장된다. 실렉터(302)에는, 데이터 변환부(310)의 각 처리부, 즉 i비트 더블 스와프 연산 회로(311)과 (r-1)회분 i비트 더블 스와프 역연산 회로(312)가 접속되며, 실렉터(302)를 통해 레지스터(RegL303)에 대해서 각각의 회로에 있어서의 처리 신호가 입력되어 레지스터(RegL303)에 저장된 데이터의 비트 위치 변경 처리가 실행된다. 또한, i는 1이상의 정수이다.
도 15를 참조하고, i비트 더블 스와프 연산 회로(311)에 있어서 실행하는 비트 위치 변경 처리예에 대해 설명한다. 도 15의 예는, 128비트의 중간키 데이터 L의 i비트 더블 스와프 처리를 예로서 나타내고 있다.
중간키 데이터 L를 구성하는 128 비트의 데이터 A를, A=(a0, a1,......,a126, a127)로 한다.
an은 128비트의 각 비트 데이터이다.
또한,
a [x→y] : 데이터 A중의 연속 비트 데이터 ax부터 ay까지의 비트열,
b | c 비트열 b, c를 연결한 비트열로 한다.
상기 표현을 적용하면, 128비트 데이터에 대한 i비트 더블 스와프 연산은 이하와 같이 정의된다.
[i비트 더블 스와프 정의]
128비트 데이터 A에 대한 i비트 더블 스와프 연산에 의해서 얻을 수 있는 데이터 B를,
B=DoubleSwap(A)로 하면,
B=a[i→63]|a[(128-i)→127]|a[O→(i-1)]|a[64→(127-i)]로 된다.
도 15를 참조해 구체적인 128비트 데이터에 대한 i비트 더블 스와프 연산에 대해 설명한다. 도 15에 있어서,
(a)는, 입력 128비트,
(b)는, 연산 결과로서의 출력 128비트를 나타내고 있다.
(a)의 입력 128비트는, 4개의 파트 A0~A3로 구분된다. 각 구분의 구성 비트는 이하와 같이 표현된다.
A0 : a[O→(i-1)], 즉 선두 i비트,
A1 : a[i→63], 즉 선두 i비트의 후속 비트 - 데이터 A의 전반 종단 비트
A2 : a[64→(127-i)], 즉 데이터 A의 후반 개시 비트 - 말미 i비트의 선행 비트
A3 : a[(128-i)→127], 즉 말미 i비트,
i비트 더블 스와프 연산 회로(311)에서는, 이 4개의 분할된 데이터 A의 구성비트를 도 15(b)의 출력 데이터와 같이 교체하는 처리를 실행한다.
즉,
입력 비트의 배열 : A0|A1|A2|A3를,
출력 비트의 배열 : A1|A3|A0|A2로 하는 비트 데이터의 위치 변경 처리를 실행한다.
이 결과로서,
128비트 데이터 A에 대한 i비트 더블 스와프 연산에 의해서 얻어지는 데이터 B를,
B=DoubleSwap128,i(A)로 했을 때,
출력 B는,
B=a[i→63]|a[(128-i)→127]|a[O→(i-1)]|a[64→(127-i)]가 된다.
이 더블 스와프 처리를 실행하기 위한 처리 신호가, 도 14에 도시한 i비트 더블 스와프 연산 회로(311)로부터, 도 14에 도시한 실렉터(302)를 통해 레지스터(RegL303)에 입력되고, 레지스터(RegL303)에 저장된 데이터의 비트 위치 변경을 실행하고, 다음의 라운드의 라운드키를 생성한다. 또한, 다음의 라운드에서는, 도 15에 도시한 (b)출력에 대해서, 재차, 도 14에 도시한 i비트 더블 스와프 연산 회로(311)에 의한 비트 위치 변경 처리, 즉, 도 15에 대해 설명한 i비트 더블 스와프 처리가 실행되어 다음의 라운드에 대응하는 라운드키가 생성된다.
도 15를 참조해 설명한 더블 스와프 연산에는 이하의 2가지의 장점이 나열된다.
* 비트의 상대 위치가 크게 변화하지만, 순환 시프트에 비해 회로 규모가 증가하지 않는다.
* Fesitel 구조에 이용하면 실장 코스트의 삭감 효과
또한 이러한 이점에 대해서는, 후단에서 설명한다.
또한, i비트 더블 스와프 연산 회로(311)를 하드웨어로서 구성하는 경우, 예를 들면 도 16에 도시한 입력비트(321)의 구성 비트의 각 출력 비트 위치를 변경하는 비트 위치 변환 회로(322)에 의해서 실현 가능하다. 비트 위치 변환 회로(322)는, 각 비트 위치의 비트 데이터를 먼저 도 16을 참조해 설명한 위치로 변경하는 입출력부를 가지는 회로로서 구성되며, 출력 비트(323)를 생성해 출력한다. 또한, i비트 더블 스와프 연산 회로(311)는, 하드웨어에 한정하지 않고, 소프트웨어로서의 프로그램에 의해서 실행하는 구성으로 해도 좋다.
또한, 도 14에 도시한 키 스케쥴부의 (r-1)회분 i비트 더블 스와프 역연산 회로(312)는, i비트 더블 스와프 연산 회로(311)에 있어서 실행되는 비트 위치 변경 처리에 의해 모든 라운드 연산에 적용되는 라운드키의 생성이 종료한 후, 최초의 중간키 데이터 L로 되돌리는 처리를 실행한다.
예를 들면 라운드수 r의 암호 처리에서는, 최초의 중간키 데이터 L이 최초의 라운드키로서 이용되므로, r-1회의 i비트 더블 스와프 처리에 의해서 전체 r라운드에 적용하는 라운드키의 생성이 종료한다. (r-1)회분 i비트 더블 스와프 역연산 회로(312)는, 이 r-1회의 i비트 더블 스와프 처리에 의해서 생성된 최종 라운드의 라운드키에 적용된 데이터에 대한 비트 위치 변경 처리를 실행하고, 최초의 중간키 데이터 L로 되돌리는 처리를 실행한다.
더블 스와프 역연산은 이하와 같이 정의된다.
[i비트 더블 스와프 역연산 정의」
128비트 데이터 A에 대한 i비트 더블 스와프 역연산에 의해서 얻을 수 있는 데이터 B를,
B=DoubleSwap-1 128, i(A)로 하면,
B=a[64→63+i]|a[O→(63-i)]|[(64+i)→127]|a[(64-i)→63]으로 된다.
상기 정의는, 도 15에 도시한 (b)출력을 (a)입력으로 되돌리는 i비트 더블 스와프 역연산에 대응한다. (r-1)회분 i비트 더블 스와프 역연산 회로(312)에서는, (r-1)회분에 대응하는 i비트 더블 스와프 역연산을 실행하게 된다. 그러나, 실제로 반복해 역연산을 실행하는 것은 필요하지 않고, (r-1)회분 i비트 더블 스와프 역연산 회로(312)를 하드웨어로서 구성하는 경우, 예를 들면 도 17에 도시한 입력 비트(331)의 구성 비트의 각 출력 비트 위치를 변경하는 비트 위치 변환 회로(332)에 의해서 실현 가능하다.
비트 위치 변환 회로(332)는, 최종 라운드에 적용한 라운드키로서 레지스터( RegL303)에 저장된 데이터, 즉, (r-1)회분 i비트 더블 스와프의 처리 후의 데이터가 되는 입력 비트(331)에 대해서 비트 위치 변경 처리를 실행하고, 비트 위치 변경이 이루어지지 않은 최초의 중간키 데이터 L의 비트 배치에 되돌려 출력 비트(331)를 생성하는 처리를 실행한다. 또한, 이 (r-1)회분 i비트 더블 스와프 역연산 회로(312)에 대해서도, i비트 더블 스와프 연산 회로(311)와 같이, 하드웨어에 한정하지 않고, 소프트웨어로서의 프로그램에 의해 실행하는 구성이라도 좋다.
또한, 상술한 실시예에서는, 라운드키를 128비트 데이터로 하여, 128비트의 데이터에 대한 더블 스와프 연산 및 역연산에 대한 처리를 설명했지만, 더블 스와프 연산 및 역연산은 128비트 이외의 비트수에 대해도 적용 가능하다. 즉, 일반화하면 2m비트(m은 2이상의 정수)의 데이터에 대한 더블 스와프 연산은, 이하와 같이 정의할 수 있다.
[i비트 더블 스와프 정의]
2m비트 데이터 A(m은 2이상의 정수)에 대한 i비트 더블 스와프 연산에 의해서 얻어지는 데이터 B를,
B=DoubleSwap2m, i(A)로 하면,
B=a[i→(m-1)]|a[(2m-i)→(2m-1)]|a[O→(i-1)]|a[m→(2m-1-i)]로서 표현할 수 있다.
구체적으로는, 먼저 도 15를 참조해 설명한 바와 같이, 2m비트를 비트 O~비트(2m-1)로 표시하면,
A0 : a[O→(i-1)], 즉 선두 i비트
A1 : a[i→(m-1)], 즉 선두 i비트의 후속 비트~데이터 A의 전반 종단비트
A2 : a[m→(2m-1-i)], 즉 데이터 A의 후반 개시비트~말미 i비트의 선행 비트
A3 : a[(2m-i)→(2m-1)], 즉 말미 i비트
이러한 4개의 분할 데이터를,
입력 비트의 배열 : A0|A1|A2|A3를,
출력 비트의 배열 : A1|A3|A0|A2로 하는 비트 데이터의 위치 변경 처리를 실행하게 된다.
역변환은 마찬가지로 이하와 같이, 정의 가능하다.
(r-1) 회분 i비트 더블 스와프 역연산 회로(312)가 실행하는 더블 스와프 역연산은 이하와 같이 정의된다.
[i비트 더블 스와프 역연산 정의]
2m비트 데이터 A(m은 2이상의 정수)에 대한 i비트 더블 스와프 역연산에 의해얻을 수 있는 데이터 B를,
B=DoiubleSwap-1 2m, i(A)로 하면,
B=a[m→(m-1)+i]|a[O→((m-1)-i)]|(m+i→(2m-1)]|a[(m-i)→(m-1)]로 된다.
이와 같이, 도 14에 도시한 라운드키를 생성하는 키 스케쥴부의 구성은, 먼저, 도 10을 참조해 설명한 비트 순환 시프트 처리에 의해서 라운드키를 생성하는 키 스케쥴부의 구성에 있어서의 i비트 좌순환 시프트 회로(211)를 i비트 더블 스와프 연산 회로(311)로 치환하고, 또한, 도 10에 도시한 (r-1)×i비트 우순환 시프트 회로(212)를, (r-1)회분 i비트 더블 스와프 역연산 회로(312)로 치환한 구성이며, 암호화에 대해 적용하는 각 라운드키는, 이하와 같이 하여 생성된다.
키 스케쥴부에 입력하는 k비트의 비밀키 K를, 비선형 변환 회로(301)에 입력하고, 비선형 변환 처리를 행하여 n비트의 중간키 데이터 L을 생성하고, 중간키 데이터 L을 실렉터(302)를 통해 레지스터(RegL303)에 저장한다. 이 최초의 레지스터(RegL303) 저장 데이터는, 최초의 라운드의 라운드키로서 출력된다. 또한, 이 데이터에 대해서, i비트 더블 스와프 연산 회로(311)에 의한 비트 위치 변경 처리, 즉, 먼저 도 15를 참조해 설명한 비트 위치 변경 처리로서의 i비트 더블 스와프 연산이 실행되며 그 결과가, 레지스터(RegL303)에 저장되며, 이 레지스터 저장 데이터가 다음의 라운드의 라운드키로서 출력된다.
또한, 이 레지스터 저장 데이터에 대해서, i비트 더블 스와프 연산 회로(311)에 의해서 더블 스와프 연산이 반복적으로 실행된다. 이와 같이 하여, 각 라운드 함수에 대해 적용하는 라운드키{RK1, RK2,..., RKr-1, RKr}가 생성된다.마지막으로 (r-1)회분 i비트 더블 스와프 역연산 회로(312)에 의해서, 레지스터(RegL303)에 저장된 데이터에 대해서, 더블 스와프 역연산의 r-1회분에 상당하는 연산에 대응하는 비트 위치 변경 처리가 실행되어 실행 결과가 레지스터(RegL303)에 저장된다. 이 데이터는, 최초로 레지스터(RegL303)에 입력된 중간키 L과 같은 비트 배치를 가지는 데이터가 된다.
라운드수를 r로 하는 암호 처리에 있어서, 키 스케쥴부의 실행하는 처리 알고리즘은 이하와 같이 표현할 수 있다.
For i=1 to r-1 do
RKi←RegL
RegL←DoubleSwapn, i(RegL)
RKr←RegL
RegL←DoubleSwap-1 n, i(.....(DoubleSwap-1 n, i(Double Swap-1 n, i(RegL))
))
상기 알고리즘중,
For i=1 to r-1 do
RKi←RegL
RegL←DoubleSwapn, i(RegL)
RKr←RegL
이것들은, i비트 더블 스와프 연산 회로(311)에 있어서의 i비트 더블 스와프처리의 반복 실행에 기초하여 라운드키의 생성 프로세스에 상당하며, 마지막 처리, 즉,
RegL←DoubleSwap-1 n, i(.....(DoubleSwap-1 n, i(Double Swap-1 n, i(RegL))
))
이 처리는, (r-1) 회분 i비트 더블 스와프 역연산 회로(312)에 있어서의 더블 스와프 역연산의 r-1회분에 상당하는 연산에 의해 원래의 중간키 L을 생성하는 처리에 상당한다.
먼저, 도 17을 참조해 설명한 바와 같이, 마지막 r-1회의 더블 스와프 역변환은 하나의 함수로서 비트 위치의 교체 연산으로서 실장하는 것이 가능하며, 순회 시프트 연산을 r-1회 만큼 실시하는 연산과 동일한 정도의 회로 규모로 실현 가능하다.결과적으로 순회 시프트 연산을 이용했을 때와 비교하면, 회로 규모를 증가시키지 않고, 효과적으로 비트 위치를 변경하여 각 라운드키의 관련성을 저하시킨 보안이 높은 암호 처리 구성이 실현되게 된다.
복호 처리를 실행하는 경우의 라운드키 생성 처리를 실행하는 키 스케쥴부의 구성예를 도 18에 도시하고 있다. 도 18에 도시한 복호 처리에 있어서의 라운드키 생성 처리를 실행하는 키 스케쥴부에 있어서, 비선형 변환 회로(301), 실렉터(302), 레지스터(RegL303)는, 도 14에 도시한 구성과 같고, 도 14에 도시한 i비트 더블 스와프 연산 회로(311) 대신에 (r-1)회분 i비트 더블 스와프 역연산 회로(321)가 설정되어 있으며, 도 14에 도시한 (r-1)회분 i비트 더블 스와프 역연산 회로(312) 대신에 i비트 더블 스와프 연산 회로(322)가 설정된 데이터 변환부(320)를 가진다. 그 외의 구성은, 도 14를 참조해 설명한 구성과 같은 구성을 가진다.
도 18에 도시한 키 스케쥴부의 처리에 대해 설명한다. 키 스케쥴부에 입력하는 비밀키 K를 k비트로 한다. 비밀키 K를, 비선형 변환 회로(301)에 입력하고, 비선형 변환 처리를 행하여 n비트의 중간키 데이터를 생성한다. 중간키 데이터를 L로 한다.
중간키 데이터 L은, 실렉터(302)를 통해 레지스터(RegL303)에 입력되어 저장된다. 실렉터(302)에는, i비트 더블 스와프 역연산 회로(321)과 (r-1)회분 i비트 더블 스와프 연산 회로(322)가 접속되며, 실렉터(302)를 통해 레지스터(RegL303)에 대해서 각각의 회로에 있어서의 처리 신호가 입력되며, 레지스터(RegL303)에 저장된 데이터의 비트 위치 변경 처리가 실행된다. 또한 i는 1이상의 정수이다.
복호 처리에 대해서는, 암호 처리에 이용한 r라운드의 r개의 라운드키를 암호 처리와는 반대의 차례로 생성하여 출력하게 된다. 따라서, 복호 처리에 있어서의 키 스케쥴부에서는, 우선, 레지스터(RegL303)에 저장된 중간키 데이터 L이, (r-1)회분 i비트 더블 스와프 연산 회로(322)에 입력되고, 레지스터(RegL303)에 저장된 데이터에 더블 스와프 연산의 r-1회분에 대응하는 연산을 실행한다. 이 처리에 의해서, 암호 처리시의 최종 라운드에 적용한 라운드키가 생성된다.
이 라운드키를 복호 처리에 있어서의 최초의 라운드키로서 출력한다. 또한, 이 라운드키 데이터는, i비트 더블 스와프 역연산 회로(321)에 입력된다.
i비트 더블 스와프 역연산 회로(321)에서는, 먼저 도 15를 참조해 설명한 처리와 반대의 처리가 실행된다. 즉, 도 15(b)에 도시한 출력을 입력치로 하고, 도 15(a)에 도시한 입력을 출력치로 하는 비트 위치 변경 처리가 실행되게 된다. 이 처리 결과가 레지스터(RegL303)에 저장되고, 다음의 라운드의 라운드키로서 이용된다. 또한 다음의 라운드에서는, 레지스터(RegL303)의 저장치에 대해서, i비트 더블 스와프 역연산 회로(321)에 의한 i비트 더블 스와프 역연산 처리가 실행되어, 비트 위치의 변경이 실행되고, 다음의 라운드에 대응하는 라운드키가 생성된다.
이와 같이 하여, 각 라운드마다 레지스터(RegL303)에 저장된 데이터를, i비트 더블 스와프 역연산 회로(321)에서, 더블 스와프역연산을 실시하고, 먼저 도 9를 참조해 설명한 여러 가지 각 라운드 함수에 적용하는 라운드키 : RKr, RKr-1,...RK2, RK1을 순서대로 생성해 출력할 수 있다.
또한, 복호 처리에 대해 이용되는 i비트 더블 스와프 역연산 회로(321)과(r-1) 회분 i비트 더블 스와프 연산 회로(322)도, 먼저 도 16, 도 17을 참조해 설명한 바와 같이, 비트 위치 변환 회로를 가지는 하드웨어에 의해서 구성 가능하고, 또한, 소프트웨어로서의 프로그램에 의해서 실행하는 구성으로 하여도 좋다.
라운드수를 r로 하는 복호 처리에 있어서, 키 스케쥴부의 실행하는 처리 알고리즘은 이하와 같이 표현할 수 있다.
RegL←DoubleSwap(.....(DoubleSwapn, i(DoubleSwapn, i(RegL))))
For i=r to 2 do
RKi←RegL
RegL←DoubleSwap-1 n, i(RegL)
RK1←RegL
상기 알고리즘중의 최초의 처리, 즉,
RegL←DoubleSwap(.....(DoubleSwapn, i(DoubleSwapn, i(RegL))))
이 처리는, (r-1)회분 i비트 더블 스와프 연산 회로(322)에 있어서 더블 스와프 연산의 r-1회분에 상당하는 연산에 의해 원래의 중간키 L로부터 암호 처리에 있어서의 최종 라운드의 라운드키, 즉 복호 처리에 있어서의 최초의 라운드키를 생성하는 처리에 상당한다.
그 후의 스텝, 즉,
For i=r to 2 do
RKi←RegL
RegL←DoubleSwap-1 n, i(RegL)
RK1←RegL
이 처리는, 복호 처리에 있어서의 제 2라운드 이후의 라운드키 생성 처리에 상당하며, i비트 더블 스와프 역연산 회로(321)에 있어서의 더블 스와프 역연산의 실행에 의한 라운드키의 생성 처리이다.
또한, 도 14, 도 18은, 각각 암호화 처리때의 라운드키 생성 처리, 복호 처리때의 라운드키 생성 처리를 실행하는 구성이지만, 이러한 기능을 겸비한 구성도 구축 가능하다. 이 구성을 도 19에 나타낸다. 도 19에 도시한 구성에서는, 비선형 변환 회로(301), 실렉터(302), 레지스터(RegL303)은, 도 14, 도 18에 도시한 구성과 같고, 또한, 도 14 및 도 18에 도시한 더블 스와프 연산 및 역연산 회로를 모두 구비한 데이터 변환부(330)의 구성을 가진다. 즉,
i비트 더블 스와프 연산 회로(331),
i비트 더블 스와프 역연산 회로(332),
(r-1) 회분 i비트 더블 스와프 연산 회로(333),
(r-1) 회분 i비트 더블 스와프 역연산 회로(334),
이러한 비트 위치 변환 처리 회로를 구비한 데이터 변환부(330)을 가지는 구성으로 되어 있다.
이 구성에서는, 암호화 처리 및 복호 처리 모두 중간키 데이터 L을 생성하고, 레지스터(RegL303)에 저장해 두면, 더블 스와프 연산, 더블 스와프 역연산, r-1회의 더블 스와프 연산에 대응하는 연산, r-1회의 더블 스와프 역연산에 대응하는 연산을 행하는 것이 가능하고, 암호화시/복호시에 이용되는 라운드키를 생성할 수 있다.
이상, 설명한 바와 같이, 본 발명의 암호 처리 장치에 있어서의 라운드키 생성 처리에 대해서는, 시프트 처리에 의한 라운드키 생성 처리가 아니라, i비트 더블 스와프 연산 처리, 혹은 역연산 처리에 의해서 라운드키를 생성하는 구성이 되고 있다. 이 처리에 의해서, 순회 시프트 연산을 이용했을 때와 비교하면, 회로 규모를 증가시키지 않고, 효과적으로 비트 위치를 변경해 각 라운드키의 관련성을 저하시키고 보안이 높은 암호 처리 구성이 실현되게 된다. 이후로, 라운드수 r은 짝수로 하는 것으로 한다.
더블 스와프 변환 혹은 역변환에 의한 비트 위치 변경에서는, 시프트 처리와 달리, 인접하는 비트의 차례를 여러가지로 교체하게 되므로, 결과적으로 각 라운드키의 유사성이나 관련성을 저하시킬 수 있다. 이 더블 스와프 변환 혹은 역변환에 의한 비트 위치의 효과적인 교체 처리에 대해서, 도 20을 참조해 설명한다.
도 20은, 128비트 데이터에 대한 더블 스와프 변환 처리에 의해서 발생하는 비트 위치의 변화를 설명하는 도면이며,
(a) 초기적인 중간키 데이터,
(b) 더블 스와프 변환 처리 1회 실행 후의 데이터,
(c) 더블 스와프 변환 처리 2회 실행 후의 데이터,
(d) 더블 스와프 변환 처리 3회 실행 후의 데이터,
이러한 4개의 데이터를 나타내고 있다.
(a) 초기적인 중간키 데이터에 있어서, 선두로부터 i+1번째의 비트[B]와 그 비트의 바로 왼쪽에 위치하는 비트[b1]에 주목하여, i비트 더블 스와프 변환을 실행했을 경우를 생각한다.
(a) 초기적인 중간키 데이터에 대해 왼쪽에서 i번째의 비트[b1]가 [B]의 왼쪽옆에 존재한다. 여기서, 더블 스와프 변환을 1회 적용하면,
(b) 더블 스와프변환 처리 1회 실행 후의 데이터의 설정이 된다.
(b)의 데이터에 있어서, [B]는 데이터 좌단으로 이동한다. 이 때 [B]의 왼쪽에는 비트가 존재하지 않는다. 또한 더블 스와프 변환을 1회 적용하면,
(c) 더블 스와프 변환 처리 2회 실행 후의 데이터의 설정이 된다.
(c)의 데이터에 있어서, [B]는 데이터 좌단으로부터 65번째의 비트 위치로 이동하는 상태에서는, [B]의 왼쪽에 위치하는 비트 [b2]는, (b)의 데이터에 대해 우단에 존재하는 비트 데이터[b2]이다. 또한 더블 스와프 변환을 1회 적용하면,
(d) 더블 스와프 변환 처리 3회 실행 후의 데이터의 설정이 된다.
(d)의 데이터에 있어서, [B]는, 데이터 좌단으로부터 65+i번째의 비트 위치로 이동하는 상태에서는, [B]의 왼쪽에 위치하는 비트[b3]는, (c)의 데이터에 대해 좌단으로부터 i번째에 존재한 비트 데이터[b3]가 된다.
이와 같이, 1개의 비트 위치의 비트[B]에 주목하면서 더블 스와프 변환 처리에 의해서 인접 비트(왼쪽으로 인접하는 비트)의 변화를 해석하면, 비트 [B]와 이웃하는 비트 정보가 [bl]→[없음]→[b2]→[b3]로 변화해 나가는 것이 이해된다. 이 인접 비트의 변화는, 데이터를 구성하는 복수의 비트 위치에 있어서 발생하고 있다.
이러한 인접 비트의 변화는 시프트 처리에 있어서 기본적으로 발생하는 것이 아니다. 따라서, 라운드키의 관련성이 발생하게 되지만, 본 발명에 따르는 더블 스와프 처리에 의한 비트 위치 변경을 행하여, 비트의 차례가 바뀌며, 결과적으로, 라운드키의 랜덤성을 향상시키게 된다.
이와 같이, 본 발명의 암호 처리 장치에 있어서의 라운드키 생성 처리에 대해서는, 시프트 처리에 의한 라운드키 생성 처리가 아니고, i비트 더블 스와프 연산 처리, 혹은 역연산 처리에 의해서 라운드키를 생성하는 구성을 적용한 것이며, 회로 규모를 증가시키는 일 없이, 효과적으로 비트 위치를 변경해 각 라운드키의 관련성을 저하시키고 보안이 높은 암호 처리 구성이 실현된다.
(2-4) 본 발명의 제 2실시예와 관련되는 라운드키의 생성 처리 구성에 대해
다음에, Feistel(페이스텔)형 암호와 같이, 암호 처리 대상 데이터를 n비트로 했을 때, 라운드키로서 n/2 비트를 이용하는 구성에 대해 상술의 더블 스와프 연산을 적용하는 실시예에 대해 설명한다.
전술한 실시예에서는, 암호 처리 대상 데이터를 n비트로 하고, 라운드키도 n비트 데이터로서 이용하는 예를 설명했다. 그러나, 먼저, 도 13을 참조해 설명한 바와 같이, 예를 들면 Feistel(페이스텔)형 암호에서는, 라운드키는 n/2비트가 된다. 도 13을 참조해 설명한 바와 같이 시프트 처리를 실행하는 구성에서는, 중간키 데이터 L의 사이즈를 n비트로서 생성하고, 상위 및 하위의 비트를 2라운드에서 사용하고 2라운드에 1회의 시프트 처리를 실시하는 구성으로 하고 있었다.
그러나, 전술한 바와 같이, 이러한 시프트 처리로 생성한 라운드키는, 각 라운드키의 상관성이 높은 공격에 약하다는 결점이 있다. 또한, 상위하위의 선택 회로(도 13 에 도시한 실렉터(241))를 추가하는 필요성이 있으므로, 실장 코스트나 면적이 커져 바람직하지 않다. 이하, 이러한 실렉터를 생략하고, n비트의 중간키 데이터를 생성하고, 상술한 더블 스와프 연산 및 역연산을 적용하며, n/2비트트의 라운드키를 출력하는 키 스케쥴부의 구성예에 대해 도 21을 참조해 설명한다.
본 처리예에서는, 더블 스와프 연산을 2단계의 처리, 즉,
(a) 스와프 연산,
(b) i비트 서브 스와프 연산,
이러한 2개의 처리를 교대로 실행하는 구성으로 한다. 즉,
더블 스와프 연산
= 스와프 연산 + i비트 서브 스와프 연산이 된다.
도 21에 도시한 구성에서는, 비선형 변환 회로(401), 실렉터(402), 레지스터(RegL4031)는, 도 19에 도시한 구성과 같다. 다만, 도 21에 도시한 구성에 대해서는, 도 19에 도시한 구성에서 이용하고 있던 더블 스와프 연산 및 역연산 회로를 가지지 않고, 그 대신에,
스와프 연산 회로(411),
i비트 서브 스와프 연산 회로(412),
점프(Jumpr-1) 연산회로(413)
이것들을 갖춘 데이터 변환부(410)를 가진다. 또한, i는 1이상의 정수이다.
우선, 암호화 처리때의 n/2비트 라운드키의 생성 프로세스에 대해 설명한다.키 스케쥴부에 입력하는 비밀키 K를 k비트로 한다. 비밀키 K를, 비선형 변환회로(401)에 입력하고, 비선형 변환 처리를 행하여 n비트의 중간키 데이터를 생성한다. 중간키 데이터를 L로 한다.
중간키 데이터 L은, 실렉터(402)를 통해 레지스터(RegL403)에 입력되어 저장된다. 실렉터(402)에는,
스와프 연산 회로(411),
i비트 서브 스와프 연산 회로(412),
점프(Jumpr-1) 연산회로(413),
이러한 비트 위치 변경 처리 회로가 접속되며, 미리 설정된 알고리즘에 따라서, 레지스터(RegL403)에 저장된 데이터의 비트 위치 변경 처리가 실행된다.
라운드에 따라 레지스터(RegL403)에 저장된 데이터에 대해서, 스와프 연산 회로(411)에 의한 스와프 연산과 i비트 서브 스와프 연산 회로(412)에 의한 i비트 서브 스와프 연산을 교대로 실행하고, 각 라운드 함수에 대해 적용하는 라운드키: RK1, RK2,...., RKr-1, RKr를 생성한다. 또한, 레지스터(RegL403)에 저장된 데이터는 n비트이며, 스와프 연산 회로(411)에 의한 스와프 연산과 i비트 서브 스와프 연산 회로(412)에 의한 i비트 서브 스와프 연산은 레지스터(RegL403)에 저장된 n비트 데이터에 대해서 실행하지만, 라운드키로서 출력하는 것은, 항상, 레지스터(RegL403)에 저장된 n비트 데이터중 n/2 비트 데이터만으로 한다. 예를 들면, 레지스터(RegL403)에 저장된 n비트 데이터중 상위 n/2 비트를 각 라운드키로서 출력한다.
모든 라운드(r라운드)의 생성이 종료한 시점에서, 마지막에 레지스터(RegL403)에 저장된 n비트 데이터는, 최초의 초기적인 중간키 데이터 L로 되돌리는 처리를 실행한다. 이 처리를 실행하는 것은, 점프(Jumpr-1) 연산회로(413)이다.
스와프 연산 회로(411)가 실행하는 비트 위치 변경 처리예에 대해 도 22를 참조해 설명한다. 도 22는, 128 비트의 중간키 데이터 L의 스와프 처리예를 나타내고 있다.
스와프 연산의 정의에 대해 설명한다.
128비트의 데이터 A를,
A=(a0, a1,..........,a126, a127)로 한다.
a는, 128비트의 각 비트 데이터이다.
또한,
a[x→y] : 데이터 A중의 연속 비트 데이터 ax로부터 ay까지의 비트열,
b|c : 비트열 b, c를 연결한 비트열로 한다.
128 비트 데이터에 대한 스와프 연산은 이하와 같이 정의할 수 있다.
[스와프 연산 정의]
128비트 데이터 A에 대한 스와프 연산에 의해서 얻을 수 있는 데이터 B를,
B=Swap128(A)로 하면,
B=a[64→127]|a[O→63]이 된다.
즉, 도 22에 도시한 바와 같이, (a)입력 데이터의 상위 반분의 데이터 A0와 하위 반분의 데이터 A1를 입력 교체하여 (b)출력을 생성하는 처리가 스와프 연산에 의한 비트 위치 변경 처리이다. 또한, 스와프 연산은 자기 자신이 역변환이 된다. 즉,
스와프 연산 = 스와프 역연산이다.
또한, 상술의 예에서는, 128비트의 데이터에 대한 스와프 연산을 정의했지만, 일반화한 2m비트(m은 2이상의 정수)의 데이터에 대한 스와프 연산은, 이하와 같이 정의할 수 있다.
[스와프 연산 정의]
2m비트 데이터 A(m은 2이상의 정수)에 대한 스와프 연산에 의해서 얻어지는 데이터 B를,
B=Swap2m(A)로 하면,
B=a[m→(2m-1)]|a[O→(m-1)]로서 표현할 수 있다.
다음에, 도 23을 참조하여, i비트 서브 스와프 연산 회로(412)가 실행하는 비트 위치 변경 처리예에 대해 설명한다. 도 23은, 128비트 데이터의 서브 스와프 처리예를 나타내고 있다.
i비트 서브 스와프 연산의 정의에 대해 설명한다.
128비트데이터에 대한 i비트 서브 스와프 연산은 이하와 같이 정의할 수 있다.
[i비트 서브 스와프 연산 정의]
128비트 데이터 A에 대한 i비트 서브 스와프 연산에 의해서 얻어지는 데이터 B를, B=SubSwap(A)로 하면,
B=a[(64+i)→127]|a[(64-i)→(63+i)]|a[O→(63-i)]가 된다.
즉, 도 23에 도시한 바와 같이, (a) 입력 데이터의 중앙 2i비트데이터 A1을고정하고, 데이터 A1을 제외한 상위 비트 데이터 A0와, 하위 비트데이터 A2를 교체하여 (b)출력을 생성하는 처리가 i비트 서브 스와프 연산에 의한 비트 위치 변경 처리이다. 또한, 서브 스와프 연산도, 자기 자신이 역변환 된다.
또한, 상술의 예에서는, 128비트의 데이터에 대한 서브 스와프 연산을 정의했지만, 일반화한 2m 비트(m은 2이상의 정수)의 데이터에 대한 서브 스와프 연산은, 이하와 같이 정의할 수 있다.
[i비트 서브 스와프 연산 정의]
2m 비트 데이터 A(m은 2이상의 정수)에 대한 i비트 서브 스와프 연산에 의해서 얻을 수 있는 데이터 B를,
B=SubSwap2m, i(A)로 하면,
B=a[(m+i)→127]|a[(m-i)→(m-1+i)]|a[0→(m-1-i)]로서 표현할 수 있다.
도 22, 도 23을 참조해 설명한 스와프 연산,
서브 스와프 연산,
이것들을 연속해 1회씩 실행하면, 먼저, 도 15를 참조해 설명한 더블 스와프 연산에 의한 비트 위치 변경 처리와 같은 비트 위치 변경이 이루어지게 된다.
도 21에 도시한 키 스케쥴부에서는,
스와프 연산 회로(411),
i비트 서브 스와프 연산 회로(412),
이러한 각 연산 회로를 적용한 비트 위치 변경 처리를 교대로 실행해 각 라운드키를 생성한다.
도 21에 도시한 키 스케쥴부의 라운드키의 생성 순서에 대해 설명한다.
키 스케쥴부에 입력하는 k비트의 비밀키 K를, 비선형 변환 회로(401)에 입력하고, 비선형 변환 처리를 실행하여 n비트의 중간키 데이터 L을 생성하고, 중간키 데이터 L을 실렉터(402)를 통해 레지스터(RegL403)에 저장한다. 이 최초의 레지스터(RegL403) 저장 데이터중 n/2비트, 예를 들면 상위 반분의 n/2 비트가, 최초의 라운드의 라운드키로서 출력된다.
또한, 이 레지스터(RegL403) 입력 데이터에 대해서, 스와프 연산 회로(41 1)에 의한 비트 위치 변경 처리, 즉, 먼저 도 22를 참조해 설명한 비트 위치 변경 처리로서의 스와프 처리가 실행되며, 그 결과가, 레지스터(RegL403)에 입력되어 이 입력 데이터중의 n/2 비트, 예를 들면 상위 반분의 n/2비트가 다음의 라운드키로서 출력된다.
또한, 이 레지스터(RegL403) 입력 데이터에 대해서, 서브 스와프 연산 회로(412)에 의한 비트 위치 변경 처리, 즉, 먼저 도 23을 참조해 설명한 비트 위치 변경 처리로서의 서브 스와프 처리가 실행되며, 그 결과가, 레지스터(RegL403)에 입력되고, 이 입력 데이터중의 n/2비트, 예를 들면 상위 반분의 n/2 비트가 다음의 라운드키로서 출력된다.
이하,
스와프 연산 회로(411),
i비트 서브 스와프 연산 회로(412),
이러한 각 연산 회로를 적용한 비트 위치 변경 처리를 교대로 실행해 각 라운드키를 생성한다. 이와 같이 하여, 각 라운드 함수에 있어서 적용하는 라운드키{RK1, RK2,,.., RKr-1, RKr}가 생성된다. 최후 레지스터(RegL403)에 저장된 데이터에 대하여, 점프(Jumpr-1) 연산회로(413)에 의한 비트 위치 변경 처리가 실행되며, 레지스터(RegL403)에 최초로 저장된 중간키 데이터 L로 되돌리는 처리가 실행된다.
점프(Jumpr-1) 연산회로(413)에 의한 비트 위치 변경 처리에 있어서, 도 24를 참조하여 설명한다. 점프(Jumpr-1) 연산회로(413)에 의한 비트 위치 변경 처리는, 도 24에 도시한 바와 같이,
스와프 연산회로(411)에 의한 r/2회분의 스와프 연산과,
i비트 서브 스와프 연산회로(412)에 의한 (r/2-1)회수의 i비트 서브 스와프 연산을 교대로 반복하여 얻어지는 결과를 초기 데이터로 되돌리는 연산이 되는 비트 위치 변경 처리에 상당한다. 먼저 설명한 바와 같이, 스와프 연산과 서브 스와프 연산은 각각 자기 자신이 역변환되므로, 결과적으로는, 점프(Jumpr-1) 연산회로(413)에 의한 비트 위치 변경 처리는, 도 24에 도시한 바와 같이,
스와프 연산회로(411)에 의한 r/2회분의 스와프 연산과,
i비트 서브 스와프 연산회로(412)에 의한 (r/2-1)회수의 i비트 서브 스와프 연산을 교대로 반복하는 처리를 재차 실행하는 것에 상당한다.
이 점프(Jumpr-1) 연산회로(413)에 의한 점프 연산에 의해, 최후 레지스터(RegL403)에 저장된 데이터가, 스와프 연산 및 서브 스와프 연산을 실행하기 전의 초기 데이터가 되는 중간키 데이터 L의 값으로 돌아가는 것이 보증된다.
또한, 도 21에 도시한 각 연산회로, 즉,
스와프 연산 회로(411),
i비트 서브 스와프 연산 회로(412),
점프(Jumpr-1) 연산회로(413),
이러한 연산회로는, 먼저, 도 16, 도 17을 참조하여 설명한 바와 같은 동일한 비트 위치 변환 회로에 의해 실장 가능하다. 따라서, 예를 들면, 점프(Jumpr-1) 연산회로(413)는, 순회 시프트 연산을 r-1회 실시하는 연산과 동일한 정도의 회로 규모로 실현 가능하다. 또한, 이러한 비트 위치 변경 처리는 도 16, 도 17을 참조해 설명한 바와 같이 하드웨어 구성으로 실현되어도, 소프트웨어에 의해 실행하는 구성이라고 해도 좋다.
도 21에 도시한 키 스케쥴부에 있어서의 암호 처리 실행시의 라운드키 생성 알고리즘에 대해 설명한다. 즉,
스와프 연산 회로(411),
i비트 서브 스와프 연산 회로(412),
점프(Jumpr-1) 연산회로(413),
이러한 연산 회로에 의한 비트 위치 변경 처리를 적용한 n/2비트의 라운드키 생성 알고리즘은, 이하와 같이 나타난다. 또한, 라운드수는, 짝수 라운드로 하고 r=r로서 나타낸다.
For i=1 to r-l do
RKi←RegL의 상위 n/2 비트
IF i == odd
Swapn(RegL)
IF i == even
SubSwapn, i(RegL)
RKr←RegL의 상위 n/2비트
RegL←Jumpr-1(RegL)
또한, 도 21에 도시한 키 스케쥴부를 적용하여 복호 처리를 실행할 때의 라운드키 생성 알고리즘은, 이하와 같이 된다.
RegL←Jumpr-1(RegL)
For i=r to 2 do
RKi←RegL의 상위 n/2 비트
IF i== even
Swapn(RegL)
IF i== odd
SubSwapn, i(RegL)
RK1←RegL의 상위 n/2 비트
복호 처리에 있어서는, 최초로, 점프(Jumpr-1) 연산회로(413)에 의한 점프 연산을 실행하고 있다. 이 처리에 의해서, 암호 처리시의 최종 라운드로 적용한 라운드키 데이터를 포함한 데이터가, 레지스터(RegL403)에 설정된다. 그 후는, 암호 처리시와 같이,
스와프 연산 회로(411),
i비트 서브 스와프 연산 회로(412),
이러한 연산 회로에 의한 비트 위치 변경 처리를 교대로 실행하고, 각 라운드의 라운드키 생성을 실행하는 구성이다.
상술한 바와 같이, 도 21에 도시한 구성에 의해, 암호화/복호 모두 중간키 데이터 L을 생성하여 레지스터(RegL403)에 저장한 데이터에 대해서,
스와프 연산 회로(411),
i비트 서브 스와프 연산 회로(412),
이러한 각 연산 회로에 의한 비트 위치 변경 처리를 행함으로써 라운드키를 생성할 수 있다. 이 실장에 의해, 순환 시프트 회로에서 필요로 하는 선택 회로(도 13에 도시한 실렉터(241))를 생략할 수 있으며, 순환 시프트 회로에서 4종류 필요했던 연산 회로의 종류를 3개로 줄이는 것이 가능해져, 실장 코스트, 실장 면적의 삭감이 가능해진다.
(2-5) 본 발명의 제 3실시예와 관련되는 라운드키의 생성 처리 구성에 대해
다음에, 본 발명의 제 3실시예와 관련되는 라운드키의 생성 처리 구성에 대해서, 도 25를 참조해 설명한다. 이하에 있어서 설명하는 실시예는, 먼저 설명한 구성에 의해서 생성하는 라운드키 데이터에 대해서, 라운드마다 다른 정수 Cj를 배타적 논리합(EXOR)하여, 이 결과를 라운드키로 하는 구성이다. 이 구성으로 하여,
* 중간키가 모두 0이거나 모두 1인 경우에 라운드키가 동일하게 되지 않는다.
* Slide attack(슬라이드 공격)에 대해서 충분한 내성도를 가진다.
이러한 효과가 초래된다.
본 실시예의 키 스케쥴부의 구성예를 도 25에 도시하고 있다. 도 25에 도시한 키 스케쥴부의 구성예는, 먼저 도 21을 참조해 설명한 키 스케쥴부의 구성에, 정수 생성 회로(420)와 배타적 논리합연산부(430)를 추가한 구성이다. 또한, 여기에서는, 도 25에 도시한 키 스케쥴부의 구성을 베이스로한 예를 설명하지만, 먼저 도 14, 도 15, 도 21을 참조해 설명한 더블 스와프 연산과 역연산 회로를 가지는 구성에 대해서도, 정수 생성 회로(420)와 배타적 논리합연산부(430)를 추가한 구성이 실현 가능하고, 상술과 같은 효과를 나타낸다. 여기에서는, 대표예로서, 도 19를 참조해 설명한 키 스케쥴부의 구성에, 정수 생성 회로(420)와 배타적 논리합연산부(430)를 추가한 구성예에 대해 설명한다.
도 25에 도시한 구성은, 각 라운드(j) 마다에, 다른 정수 Cj(1≤j≤r)를 생성하는 정수 생성 회로(420)와, 정수 생성 회로(421)에 있어서 생성한 라운드 마다의 정수 Cj(1≤j≤r)와, 레지스터(RegL403)의 각 라운드 마다의 데이터와의 배타적 논리합연산(EXOR)을 실행하는 배타적 논리합(EXOR) 연산부(430)를 추가한 구성이다. 본 실시예에서는, 이 배타적 논리합(EXOR) 연산부(430)에 의한 연산 결과를 라운드키(RK1, RK2,..., RKr-1, RKr}로서 출력한다.
이 구성예에서는, 레지스터(RegL403)의 저장 데이터의 모든 비트가 0이 되는 경우에도, 최종적으로 출력된 라운드키(RK1, RK2,..., RKr-1, RKr}가 동일한 데이터되지 않는다는 효과가 있다.
도 25에 도시한 구성예에서는, 출력하는 라운드키는 n/2비트이며, 배타적 논리합(EXOR) 연산부(430)에서는, 예를 들면, 레지스터(RegL403)의 저장 데이터의 상위 n/2비트와, 정수 생성 회로(420)가 생성하는 라운드 마다 다른 n비트 데이터와의 배타적 논리합(EXOR) 연산을 실행하고, 이 결과를 라운드키로서 출력한다.
이 경우, 정수 생성 회로(420)가 생성하는 라운드 마다 다른 정수는 n비트의 데이터가 되지만, n비트의 랜덤한 정수를 라운드수 r에 대응하여 r에 따라 생성하는 회로는, 비트수 n이 큰 경우에는 그 회로 규머도 크게 된다는 문제가 있다. 이와 같은 문제를 해결하고, 정수 생성 회로(420)의 회로 규모의 소형화를 실현하는 구성에 대해서 설명한다.
예를 들면, 도 26에 도시한 바와 같이, 정수 생성 회로(420)는, n비트의 데이터를 라운드 마다에 다른 m비트(m<n)의 데이터 bj로 분할하고, bj를 n/m회 반복하여 사용하는 구성으로 하여 회로 규모를 작게 한다. 예를 들면, n=64인 경우, 정수 생성 회로(420)는, 라운드 마다 다른 n=64비트의 정수 Cj를 생성하게 된다.
정수 생성 회로(420)는, 예를 들면, m=16으로 하고, 라운드(j) 마다에 다른 16비트의 데이터 bj를 적용하고, 이하의 연산을 실행하여, 64비트의 라운드 마다에 다른 정수 Cj를 생성하고 배타적 논리합(EXOR) 연산부(430)에 출력한다.
Cj=((bj<<<i)[EXOR](Mask1), (bj<<<j)[EXOR](Mask2), (bj<<<k)[EXOR](Mask3), (bj <<<i)[EXOR](Mask4))
상기 식에 있어서,
bj<<<i는, 16비트의 데이터 bj를 i비트 좌측으로 시프트한 데이터이다.
Mask1은, 미리 설정된 고정치로서의 마스크치(16비트)이다.
(bj<<<i)[EXOR](Mask1)은, (bj<<<i)와 (Mask1)과의 배타적 논리합(EXOR) 연산을 나타내고 있다.
i, j, k, l은 각각 미리 결정된 시프트량이며,
Mask1, Mask2, Mask3, Mask4는, 각각 미리 결정된 마스크치(16비트)이다.
즉, 상기식은,
16비트의 데이터 bj를 각각 다른 시프트량 i, j, k, l에 의해 시프트한 16비트 데이터에 대해서, 각각 다른 마스크치(Mask1, Mask2, Mask3, Mask4)를 적용한 배타적 논리합 연산을 실행하여 얻어지는 4개의 16비트 데이터를 배열하여 64비트의 라운드 마다에 다른 정수 Cj를 생성하는 식이다.
이와 같이, 정수 생성 회로(420)를, n비트의 데이터를 라운드 마다에 다른 m비트(m<n)의 데이터 bj로 분할하고, bj를 n/m회 반복하여 사용하는 구성으로 하여 회로 규모를 작게 하는 것이 가능하다.
또한, 예를 들면, 도 25에 도시한 키 스케쥴부가, 복수의 다른 암호 처리에 대응하는 다른 키 길이의 라운드키를 생성하여 출력하는 구성으로 하는 경우, 정수 생성 회로(420)도, 그 출력키 길이에 대응하는 비트 길이의 데이터를 생성하여 출력하는 것이 필요하게 된다. 이 경우, 정수 생성 회로(420)가 생성하는 정수를 키 길이에 대응하여 변경시킴으로써, 예를 들면, 다른 키 길이에 있어서 레지스터(RegL403)의 저장치 L이 동일한 값으로 되는 경우에도 라운드키를 다른 값으로 하는 것이 가능하다.
예를 들면,
(a) 라운드수 r1의 k1비트의 키 길이
(b) 라운드수 r2의 k2비트의 키 길이
(c) 라운드수 r3의 k3비트의 키 길이
이러한 전체를 지지하는 구성으로 하는 경우에는, 정수 생성 회로(420)는, 복수의 암호 처리에 대응하는 전체 라운드수 : r1 + r2 + r3개의 다른 m비트의 데이터 bj를, 각 라운드에 있어서 적용한다. 이 구성에 의해, 다른 키 길이에 있어서 레지스터(RegL403)의 저장치 L이 동일한 값으로 되는 경우에도 라운드키를 다른 값으로 하는 것이 가능하다.
또한, bj를 라운드에 대응하는 랜덤한 값으로 하면, bj를 기록하는 회로의 규모는 크게 되어 버린다. 복수의 다른 암호 처리에 대응하는 전체 라운드 수 : r1 + r2 + r3개 보다 적은 수의 m비트의 데이터 bj를 설정하고, 이것을 다른 암호 처리에 적용하는 경우에 적용 순서를 변경하는 구성으로 하여도 좋다.
혹은, m비트의 데이터 bj를 어느 초기치로부터 각 라운드에 있는 규칙을 이용하여 갱신하는 구성으로 하여도 좋다. 예를 들면, 가로아 본체 GF(2)상에서 정의된 m차의 기약 다항식 f(x)에 의해 만들어진 확대체 GF(2m)상의 x배 연산을 적용하여 초기치로부터 라운드 마다 다른 값을 생성하는 규칙이 적용가능하다. 기약 다항식 f(x)가 원시 다항식이 되는 경우, 어느 초기치로부터 생성된 x배 연산의 값의 주기는 2m-1로 되므로, 2m-1의 다른 데이터를 생성하는 것이 가능하게 된다. 그 외에, 상기 규칙을 확대체 GF(2m)상의 x-1배 연산 등으로 하여도 좋다.
도 25에 도시한 바와 같이, 레지스터(RegL403)의 저장 데이터와, 정수 생성 회로(420)가 생성하는 라운드 마다의 다른 데이터와의 배타적 논리합(EXOR) 연산을 실행하고, 이 결과를 라운드 키로서 출력하는 구성에 의해,
* 중간키가 모두 0이거나 모두 1인 경우에 라운드키가 동일하게 되지 않는다.
* 각 라운드 키의 관련성이 배제된 Slide attack(슬라이드 공격)에 대해서 충분한 내성도를 가진다.
이러한 효과가 초래된다.
[3. 암호 처리 장치의 구성예]
마지막으로, 상술한 실시예에 따라 암호 처리를 실행하는 암호 처리 장치로서의 IC 모듈(700)의 구성예를 도 27에 도시하고 있다. 상술한 처리는, 예를 들면 PC, IC카드, 리더 라이터, 그 외, 여러 가지 정보 처리 장치에 있어서 실행가능하며, 도 27에 도시한 IC 모듈(700)은, 이러한 여러 가지 기기에 구성하는 것이 가능하다.
도 27에 도시한 CPU(701)는, 암호 처리 장치의 개시와, 종료, 데이터의 송수신의 제어, 각 구성부간의 데이터 전송제어부, 그 외의 각종 프로그램을 실행하는 프로세스이다. 메모리(702)는, CPU(701)가 실행하는 프로그램, 혹은 연산 파라미터 등의 고정 데이터를 저장하는 ROM, CPU(701)의 처리에 있어서 실행되는 프로그램과 프로그램 처리에 있어서 적절히 변화하는 파라미터의 저장 영역, 작업 영역으로서 사용되는 RAM 등으로 구성된다. 또한, 메모리(702)는 암호 처리에 필요한 키 데이터와, 암호 처리에 있어서 적용하는 변환 표(치환표)와 변환 행렬에 적용하는 데이터 등의 저장 영역으로 사용가능하다. 또한 데이터 저장영역은, 경도성이 우수한 구조를 가지는 메모리로서 구성하는 것이 바람직하다.
암호 처리부(703)는, 예를 들면 상술한 각종의 암호 처리 구성, 예를 들면,
(가) SPN(Substitution Permutation Network) 구조,
(나) Feistel 구조,
이러한 구성을 적용한 공통키 블록 암호 처리 알고리즘을 따라 암호 처리, 복호 처리를 실행한다.
또한, 암호 처리부(703)는, 예를 들면 상술한 각 실시예에 대응하는 구성, 즉,
(2-3) 본 발명의 제 1실시예와 관련되는 라운드키의 생성 처리
(2-4) 본 발명의 제 2실시예와 관련되는 라운드키의 생성 처리
(2-5) 본 발명의 제 3실시예와 관련되는 라운드키의 생성 처리
이러한 처리 구성의 어느 하나에 대응하는 구성을 가지는 키 스케쥴부를 가진다.
또한, 여기에서는, 암호 처리 수단을 개별 모듈로 하는 예를 도시하였지만, 이와 같은 독립적인 암호 처리 모듈을 설치하지 않고, 예를 들면 암호 처리 프로그램을 ROM에 저장하고, CPU(701)가 ROM 저장 프로그램을 독출하여 실행하도록 하는 구성을 하여도 좋다.
난수 발생기(704)는, 암호 처리에 필요한 키의 생성 등에 있어서 필요하게 되는 난수의 발생 처리를 실행한다.
송수신부(705)는, 외부와 데이터 통신을 실행하는 데이터 통신 처리부이며, 예를 들면, 리더 라이터 등, IC 모듈과의 데이터 통신을 실행하고, IC 모듈내에서 생성한 암호문의 출력, 혹은 외부의 리더 라이터 등의 기기로부터의 데이터 입력 등을 실행한다.
이상, 특정의 실시예를 참조하면서, 본 발명에 대해서 상세하게 해석하였다. 그러나, 본 발명의 요지를 일탈하지 않는 범위내에서 당업자가 상기 실시예의 수정 또는 대용을 할 수 있다는 것은 자명한 일이다. 즉, 예시한 바와 같은 형태로 본 발명을 개시한 것이며, 한정적으로 해석되어서는 안된다. 본 발명의 요지를 판단하기 위해서는, 특허 청구의 범위의 부분을 참작해야 한다.
또한, 명세서중에서 설명한 일련의 처리는 하드웨어, 또는 소프트웨어 혹은 양자의 복합 구성에 의해 실행하는 것이 가능하다. 소프트웨어 처리를 실행하는 경우는 처리 순서를 기록한 프로그램을, 전용의 하드웨어에 내장시킨 컴퓨터내의 메모리에 설치하여 실행시키던가, 혹은, 각종 처리가 실행가능한 범용 컴퓨터에 프로그램을 설치하여 실행시키는 것이 가능하다.
예를 들면, 프로그램은 기억매체로서의 하드 디스크 또는 ROM에 미리 기록해 두는 것이 가능하다. 혹은, 프로그램은 플렉시블 디스크, CD-ROM, MO(Magneto Optical) 디스크, DVD, 자기 디스크, 반도체 메모리 등의 분리가능한 기록매체에,일시적 혹은 영구적으로 저장(기록)해 두는 것이 가능하다. 이와 같은 분리가능한 기록매체는, 소위 패키지 소프트웨어로서 제공하는 것이 가능하다.
또한, 프로그램은, 상술한 바와 같은 분리가능한 기록매체로부터 컴퓨터에 설치하는 것 외에, 다운 로드 사이트로부터, 컴퓨터에 무선 전송하기도 하며, LAN, 인터넷과 같은 네트워크를 통해, 컴퓨터에 유선으로 전송하고, 컴퓨터에서는, 그와 같이 하여 전송된 프로그램을 수신하여, 내장하는 하드 디스크 등의 기록매체에 설치하는 것이 가능하다.
또한, 명세서에 기재된 각종의 처리는, 기재에 따라 시계열로만 실행되지 않으며, 처리를 실행하는 장치의 처리 능력 혹은 필요에 다라 병렬적으로 혹은 개별적으로 실행하는 것도 좋다. 또한, 본 명세서에 있어서 시스템이라고 하는 것은, 복수의 장치의 논리적 집합 구성이며, 각 구성의 장치가 동일한 광체내에 있다는 것에는 한정되지 않는다.
상술한 바와 같이, 본 발명의 일실시예의 구성에 의하면, 공통키 블록 암호 처리에 있어서의 라운드키 생성처리에 있어서, 비밀키의 변환 처리에 의해서 생성한 중간키를 레지스터에 저장하고, 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하여 라운드키를 생성한다. 예를 들면, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하여, 복수의 다른 라운드키를 생성한다. 본 구성에 의해, 각 라운드키의 비트 배열을 효과적으로 바꾸어 넣어, 상관성이 낮은 라운드키를 생성하는 것이 가능해져, 키의 해석 곤란성을 높이고 안전성이 높아진 암호 처리 구성이 실현된다.
본 발명의 일실시예의 구성에 의하면, 공통키 블록 암호 처리에 있어서의 라운드키 생성처리에 있어서, 비밀키의 변환 처리에 의해서 생성한 중간키를 레지스터에 저장하고, 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하여 라운드키를 생성한다. 예를 들면, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하여, 복수의 다른 라운드키를 생성한다. 본 구성에 의해, 각 라운드키의 비트 배열을 효과적으로 교체하여, 상관성이 낮은 라운드키를 생성하는 것이 가능해지며, 키의 해석 곤란성을 높이고 안전성이 높아진 암호 처리 구성이 실현된다.

Claims (21)

  1. 공통키 블록 암호 처리를 실행하는 암호 처리 장치에 있어서,
    라운드 함수를 복수 라운드 반복하는 데이터 변환 처리를 행하는 암호 처리부와,
    상기 라운드 함수의 실행에 적용하는 라운드 키를 생성하는 키 스케쥴부를 가지며,
    상기 키 스케쥴부는,
    비밀키의 변환 처리에 의해서 중간키를 생성하고, 생성한 중간키를 저장하는 레지스터와,
    상기 레지스터에 저장된 레지스터 저장 데이터에 대한 데이터 변환 처리를 실행하는 데이터 변환부이며, 상기 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(swap : 입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 데이터 변환부를 가지는 구성이 되는 것을 특징으로 하는 암호 처리 장치.
  2. 제 1항에 있어서,
    상기 데이터 변환부는,
    동일한 비트 수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터으로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 구성인 것을 특징으로 하는 암호 처리 장치.
  3. 제 1항에 있어서,
    상기 데이터 변환부는,
    2m 비트로 구성되는 상기 레지스터 저장 데이터를,
    (a) 선두 i 비트의 부분 데이터 A0,
    (b) 선두로부터 i+1 비트 ~ m비트의 부분 데이터 A1,
    (c) 선두로부터 m+1 비트 ~ 2m-i 비트의 부분 데이터 A2,
    (d) 말미 i 비트의 부분 데이터 A3,
    상기 (a)~(d)에 나타나는 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 구성인 것을 특징으로 하는 암호 처리 장치.
  4. 제 1항에 있어서,
    상기 데이터 변환부는,
    동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 조의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 더블 스와프 처리 실행부와, 상기 더블 스와프 처리 실행부의 처리의 복수의 반복 처리의 역처리에 대응하는 데이터 변환 처리를 실행하는 더블 스와프 역처리 실행부를 가지는 구성인 것을 특징으로 하는 암호 처리 장치.
  5. 제 1항에 있어서,
    상기 데이터 변환부는,
    암호화 처리에 있어서의 라운드키 생성과 역순으로 라운드키를 생성하는 복호용 라운드키 생성 처리를 행하는 구성을 가지며,
    동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 조의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 더블 스와프처리를 미리 규정된 라운드 수에 근거하여 결정되는 횟수만큼 반복한 결과 데이터를, 상기 레지스터 저장 데이터에 대한 변환 처리에 의해서 생성하는 복호용 라운드키 대응 데이터 변환부와,
    상기 복호용 라운드키 대응 데이터 변환부에 있어서 변환된 데이터에 대해서, 상기 더블 스와프 처리의 역처리를 실행하고, 각 라운드의 라운드키를 생성하는 더블 스와프 역처리 실행부를 가지는 것을 특징으로 하는 암호 처리 장치.
  6. 제 1항에 있어서,
    상기 데이터 변환부는,
    2m 비트로 구성되는 상기 레지스터 저장 데이터를,
    (a) 선두 m비트의 부분 데이터 A0,
    (b) 말미 m비트의 부분 데이터 A1,
    상기 (a)~(b)에 나타나는 2개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 실행하는 스와프 처리 실행부와,
    2m비트로 구성되는 상기 레지스터 저장 데이터를,
    (c) 선두(m-i) 비트의 부분 데이터 A0,
    (d) 선두로부터(m-i+1) 비트 ~(m+i)비트의 부분 데이터 A1,
    (e) 선두로부터(m+i+1) 비트 ~ 말미 비트의 부분 데이터 A2,
    상기 (c)~(e)에 나타나는 3개의 부분 데이터에 구분하고, 상기(c)와(d)의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 서브 스와프 처리 실행부를 가지며,
    상기 스와프 처리 실행부와, 상기 서브 스와프 처리 실행부의 처리를 라운드 진행에 따라 교대로 실행해 라운드키의 생성을 실행하는 구성인 것을 특징으로 하는 암호 처리 장치.
  7. 제 6항에 있어서,
    상기 데이터 변환부는, 추가로,
    상기 스와프 처리 실행부와, 상기 서브 스와프 처리 실행부의 처리의 반복 처리의 역처리에 대응하는 데이터 변환을 실행하는 역변환 처리 실행부를 가지는 것을 특징으로 하는 암호 처리 장치.
  8. 제 1항 - 제 7항중 어느 한 항에 있어서,
    상기 키 스케쥴부는, 추가로,
    라운드마다 다른 정수를 생성하는 정수 생성부와, 상기 정수 생성부의 생성한 정수와, 상기 레지스터 저장 데이터와의 배타적 논리합연산을 실행하여 라운드키를 생성하는 배타적 논리합연산부를 가지는 구성인 것을 특징으로 하는 암호 처리 장치.
  9. 제 8항에 있어서,
    상기 정수 생성부는,
    생성하는 정수보다 적은 비트수의 라운드마다 다른 소비트수 데이터의 시프트 데이터의 편성에 의해서 라운드마다 다른 정수를 생성하는 구성인 것을 특징으로 하는 암호 처리 장치.
  10. 제 8항에 있어서,
    상기 정수 생성부는,
    생성하는 정수보다 적은 비트수의 소비트수 데이터에 대한 데이터 변환에 의해서, 라운드마다 다른 소비트수 데이터를 생성하고, 생성한 소비트수 데이터의 시프트 데이터의 편성에 의해서 라운드마다 다른 정수를 생성하는 구성인 것을 특징으로 하는 암호 처리 장치.
  11. 암호 처리 장치에 있어서 공통키 블록 암호 처리를 실행하는 암호 처리 방법이며, 키 스케쥴부에 있어서, 암호 처리부에서 실행하는 복수 라운드의 라운드 함수의 실행에 적용하는 복수의 라운드키를 생성하는 라운드키 생성 스텝과,
    암호 처리부에 있어서, 상기 라운드키를 적용한 라운드 함수를 복수 라운드 반복하는 데이터 변환 처리를 행하는 암호 처리 스텝을 가지며,
    상기 라운드키 생성 스텝은,
    비밀키의 변환 처리에 의해서 중간키를 생성해 레지스터에 저장하는 중간키 생성 스텝과,
    데이터 변환부가 상기 레지스터에 저장된 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 데이터 변환 스텝을 가지는 스텝이 되는 것을 특징으로 하는 암호 처리 방법.
  12. 제 11항에 있어서,
    상기 데이터 변환 스텝은, 동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 스텝이 되는 것을 특징으로 하는 암호 처리 방법.
  13. 제 11항에 있어서,
    상기 데이터 변환 스텝은,
    2m 비트로 구성되는 상기 레지스터 저장 데이터를,
    (a) 선두 i 비트의 부분 데이터 A0,
    (b) 선두로부터 i+1 비트~m비트의 부분 데이터 A1,
    (c) 선두로부터 m+1 비트~2m-i 비트의 부분 데이터 A2,
    (d) 말미 i 비트의 부분 데이터 A3,
    상기 (a)~(d)에 나타나는 4개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 구성인 것을 특징으로 하는 암호 처리 방법.
  14. 제 11항에 있어서,
    상기 데이터 변환 스텝은,
    동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 조의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 더블 스와프 처리 실행 스텝과,
    상기 더블 스와프 처리 실행 스텝의 처리의 복수의 반복 처리의 역처리에 대응하는 데이터 변환 처리를 실행하는 더블 스와프 역처리 실행 스텝을 가지는 스텝이 되는 것을 특징으로 하는 암호 처리 방법.
  15. 제 11항에 있어서,
    상기 데이터 변환 스텝은,
    암호화 처리에 있어서의 라운드키 생성과 역순으로 라운드키를 생성하는 복호용 라운드키 생성 처리를 행하는 스텝을 가지며,
    동일한 비트수를 가지는 부분 데이터의 조를 2조 설정하도록 상기 레지스터 저장 데이터를 4개의 부분 데이터로 구분하고, 각 조의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 더블 스와프처리를 미리 규정된 라운드 수에 근거하여 결정되는 횟수만큼 반복한 결과 데이터를, 상기 레지스터 저장 데이터에 대한 변환 처리에 의해서 생성하는 복호용 라운드키 대응 데이터 변환 스텝과,
    상기 복호용 라운드키 대응 데이터 변환 스텝에 있어서 변환된 데이터에 대해서, 상기 더블 스와프 처리의 역처리를 실행하고, 각 라운드의 라운드키를 생성하는 더블 스와프 역처리 실행 스텝을 가지는 것을 특징으로 하는 암호 처리 장치.
  16. 제 11항에 있어서,
    상기 데이터 변환 스텝은,
    2m 비트로 구성되는 상기 레지스터 저장 데이터를,
    (a) 선두 m비트의 부분 데이터 A0,
    (b) 말미 m비트의 부분 데이터 A1,
    상기 (a)~(b)에 나타나는 2개의 부분 데이터로 구분하고, 각 부분 데이터의 스와프(입력 교체) 처리를 실행하는 스와프 처리 실행 스텝과,
    2m비트로 구성되는 상기 레지스터 저장 데이터를,
    (c) 선두(m-i) 비트의 부분 데이터 A0,
    (d) 선두로부터(m-i+1) 비트~(m+i)비트의 부분 데이터 A1,
    (e) 선두로부터(m+i+1) 비트~말미 비트의 부분 데이터 A2,
    상기(c)~(e)에 나타나는 3개의 부분 데이터에 구분하고, 상기 (c)와(d)의 부분 데이터의 스와프(입력 교체) 처리를 실행하는 서브 스와프 처리 실행 스텝을 가지며,
    상기 스와프 처리 실행 스텝과, 상기 서브 스와프 처리 실행 스텝의 처리를 라운드 진행에 따라 교대로 실행해 라운드키의 생성을 실행하는 스텝이 되는 것을 특징으로 하는 암호 처리 방법.
  17. 제 16항에 있어서,
    상기 데이터 변환 스텝은, 추가로,
    상기 스와프 처리 실행 스텝과, 상기 서브 스와프 처리 실행 스텝의 처리의 반복 처리의 역처리에 대응하는 데이터 변환을 실행하는 역변환 처리 실행 스텝을 가지는 것을 특징으로 하는 암호 처리 방법.
  18. 제 11항 - 제 17항 중 어느 한 항에 있어서,
    상기 암호 처리 방법은, 추가로,
    정수 생성부가, 라운드마다 다른 정수를 생성하는 정수 생성 스텝과,
    배타적 논리합연산부가, 상기 정수 생성부의 생성한 정수와, 상기 레지스터 저장 데이터와의 배타적 논리합연산을 실행해 라운드키를 생성하는 배타적 논리합연산 스텝을 가지는 것을 특징으로 하는 암호 처리 방법.
  19. 제 18항에 있어서,
    상기 정수 생성 스텝은,
    생성하는 정수보다 적은 비트수의 라운드마다 다른 소비트수 데이터의 시프트 데이터의 편성에 의해서 라운드마다 다른 정수를 생성하는 스텝이 되는 것을 특징으로 하는 암호 처리 방법.
  20. 제 18항에 있어서,
    상기 정수 생성 스텝은,
    생성하는 정수보다 적은 비트수의 소비트수 데이터에 대한 데이터 변환에 의해서,
    라운드마다 다른 소비트수 데이터를 생성하고, 생성한 소비트수 데이터의 시프트 데이터의 편성에 의해서 라운드마다 다른 정수를 생성하는 스텝이 되는 것을 특징으로 하는 암호 처리 방법.
  21. 암호 처리 장치에 있어서 공통키 블록 암호 처리를 실행시키는 컴퓨터 프로그램이며,
    키 스케쥴부에 암호 처리부에서 실행하는 복수 라운드의 라운드 함수의 실행에 적용하는 복수의 라운드키를 생성하는 라운드키 생성 스텝과,
    암호 처리부에 있어서, 상기 라운드키를 적용한 라운드 함수를 복수 라운드 반복하는 데이터 변환 처리를 행하는 암호 처리 스텝을 가지며,
    상기 라운드키 생성 스텝은,
    비밀키의 변환 처리에 의해서 중간키를 생성해 레지스터에 저장하는 중간키 생성 스텝과,
    데이터 변환부가 상기 레지스터에 저장된 레지스터 저장 데이터를 구성하는 부분 데이터의 스와프(입력 교체) 처리를 반복해 실행하고, 복수의 다른 라운드키를 생성하는 데이터 변환 스텝을 실행시키는 스텝이 되는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020097011387A 2006-12-11 2007-11-21 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램 KR20090094086A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006333882A JP5055993B2 (ja) 2006-12-11 2006-12-11 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JPJP-P-2006-333882 2006-12-11

Publications (1)

Publication Number Publication Date
KR20090094086A true KR20090094086A (ko) 2009-09-03

Family

ID=39511480

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097011387A KR20090094086A (ko) 2006-12-11 2007-11-21 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램

Country Status (7)

Country Link
US (1) US8737603B2 (ko)
EP (1) EP2096616A4 (ko)
JP (1) JP5055993B2 (ko)
KR (1) KR20090094086A (ko)
CN (1) CN101553857B (ko)
HK (1) HK1138098A1 (ko)
WO (1) WO2008072455A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101534792B1 (ko) * 2014-04-08 2015-07-08 주식회사 오비고 인증키 전송 관련하여 보안성을 높이기 위한 방법, 서버 및 컴퓨터 판독 가능한 기록 매체
US9973336B2 (en) 2013-03-07 2018-05-15 Canon Kabushiki Kaisha Hash value generating device
US9985780B2 (en) 2013-02-21 2018-05-29 Canon Kabushiki Kaisha Hash value generating device that performs round processing of a hash algorithm
KR20200054119A (ko) * 2018-11-09 2020-05-19 고려대학교 산학협력단 동형암호 기법으로 암호화된 데이터의 지수 함수 연산 서버 및 방법

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7772999B2 (en) * 2007-12-10 2010-08-10 Peter Lablans N-state ripple adder scheme coding with corresponding n-state ripple adder scheme decoding
US8577026B2 (en) 2010-12-29 2013-11-05 Ternarylogic Llc Methods and apparatus in alternate finite field based coders and decoders
US20110064214A1 (en) * 2003-09-09 2011-03-17 Ternarylogic Llc Methods and Apparatus in Alternate Finite Field Based Coders and Decoders
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
US8417942B2 (en) * 2007-08-31 2013-04-09 Cisco Technology, Inc. System and method for identifying encrypted conference media traffic
US20090169001A1 (en) * 2007-12-28 2009-07-02 Cisco Technology, Inc. System and Method for Encryption and Secure Transmission of Compressed Media
US8837598B2 (en) * 2007-12-28 2014-09-16 Cisco Technology, Inc. System and method for securely transmitting video over a network
US8233620B2 (en) * 2009-02-27 2012-07-31 Inside Secure Key recovery mechanism for cryptographic systems
JP2010245881A (ja) * 2009-04-07 2010-10-28 Toshiba Corp 暗号処理装置
JP5042272B2 (ja) * 2009-05-15 2012-10-03 日本電信電話株式会社 暗号用拡大鍵生成回路、復号用拡大鍵生成回路、暗号用拡大鍵生成方法および復号用拡大鍵生成方法
WO2011101994A1 (ja) * 2010-02-22 2011-08-25 株式会社東芝 暗号化装置
US8611540B2 (en) * 2010-06-23 2013-12-17 Damaka, Inc. System and method for secure messaging in a hybrid peer-to-peer network
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
JP5682527B2 (ja) 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US8707123B2 (en) * 2011-12-30 2014-04-22 Lsi Corporation Variable barrel shifter
KR101362675B1 (ko) * 2012-11-30 2014-02-12 한국전자통신연구원 저전력 암호화 장치 및 방법
US9813235B2 (en) * 2013-03-11 2017-11-07 Indian Institute of Technology Kharagpur Resistance to cache timing attacks on block cipher encryption
JP2014192612A (ja) * 2013-03-26 2014-10-06 Toshiba Corp 生成装置、暗号化装置、復号装置、生成方法、暗号化方法、復号方法およびプログラム
JP2014240921A (ja) * 2013-06-12 2014-12-25 株式会社東芝 暗号装置、暗号処理方法及び暗号処理プログラム
JP6178142B2 (ja) * 2013-07-12 2017-08-09 株式会社東芝 生成装置、方法およびプログラム
JP2015025930A (ja) * 2013-07-26 2015-02-05 日本電信電話株式会社 圧縮関数演算装置、圧縮関数演算方法及びプログラム
US10341090B2 (en) * 2014-10-14 2019-07-02 Sony Corporation Cipher processing apparatus and cipher processing method
US9960908B1 (en) * 2015-06-19 2018-05-01 Amazon Technologies, Inc. Reduced-latency packet ciphering
RU2630423C1 (ru) * 2016-12-08 2017-09-07 Общество с ограниченной ответственностью "ЛАН-ПРОЕКТ" Способ криптографического преобразования информации
JP6441390B2 (ja) * 2017-01-26 2018-12-19 株式会社東芝 生成装置、暗号化装置、復号装置、生成方法、暗号化方法、復号方法およびプログラム
JP7063628B2 (ja) * 2018-01-11 2022-05-09 Necプラットフォームズ株式会社 暗号化装置、暗号化方法およびプログラム
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
CN110880967B (zh) * 2019-12-24 2023-04-07 北京炼石网络技术有限公司 采用分组对称密钥算法对多消息并行加解密方法
KR20210108787A (ko) 2020-02-26 2021-09-03 삼성전자주식회사 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기
CN112887085B (zh) * 2021-01-13 2022-06-24 深圳安捷丽新技术有限公司 一种ssd固态硬盘主控芯片安全密钥生成方法、装置和系统
CN113343276B (zh) * 2021-07-01 2022-06-14 衡阳师范学院 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法
US20230164150A1 (en) * 2021-11-24 2023-05-25 At&T Intellectual Property I, L.P. Anomaly detection relating to communications using information embedding
CN115017530B (zh) * 2022-08-08 2022-12-16 创云融达信息技术(天津)股份有限公司 一种数据安全存储设备及方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01147585A (ja) * 1987-12-04 1989-06-09 Nippon Telegr & Teleph Corp <Ntt> 暗号装置
US6578143B1 (en) * 1998-12-18 2003-06-10 Qualcomm Incorporated Method for negotiating weakened keys in encryption systems
US6578061B1 (en) * 1999-01-19 2003-06-10 Nippon Telegraph And Telephone Corporation Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
JP3499810B2 (ja) * 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
DE60139280D1 (de) * 2000-03-09 2009-08-27 Nippon Telegraph & Telephone Blockverschlüsselungseinrichtung unter Verwendung von Hilfsumwandlungen
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7317795B2 (en) * 2001-04-17 2008-01-08 She Alfred C Pipelined deciphering round keys generation
JP4128395B2 (ja) * 2002-05-23 2008-07-30 三菱電機株式会社 データ変換装置
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
JP2005218023A (ja) * 2004-02-02 2005-08-11 Matsushita Electric Ind Co Ltd 鍵配信システム
JP4444781B2 (ja) 2004-10-14 2010-03-31 日本電信電話株式会社 無線送信機、送信信号電力調整装置および送信信号電力調整方法
JP4622807B2 (ja) * 2005-03-25 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
WO2006115219A1 (ja) * 2005-04-21 2006-11-02 Matsushita Electric Industrial Co., Ltd. プログラム難読化装置及び難読化方法
US7702100B2 (en) * 2006-06-20 2010-04-20 Lattice Semiconductor Corporation Key generation for advanced encryption standard (AES) Decryption and the like

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9985780B2 (en) 2013-02-21 2018-05-29 Canon Kabushiki Kaisha Hash value generating device that performs round processing of a hash algorithm
US9973336B2 (en) 2013-03-07 2018-05-15 Canon Kabushiki Kaisha Hash value generating device
KR101534792B1 (ko) * 2014-04-08 2015-07-08 주식회사 오비고 인증키 전송 관련하여 보안성을 높이기 위한 방법, 서버 및 컴퓨터 판독 가능한 기록 매체
KR20200054119A (ko) * 2018-11-09 2020-05-19 고려대학교 산학협력단 동형암호 기법으로 암호화된 데이터의 지수 함수 연산 서버 및 방법

Also Published As

Publication number Publication date
CN101553857A (zh) 2009-10-07
US8737603B2 (en) 2014-05-27
JP2008145791A (ja) 2008-06-26
US20100014664A1 (en) 2010-01-21
CN101553857B (zh) 2011-04-20
EP2096616A4 (en) 2014-04-02
WO2008072455A1 (ja) 2008-06-19
HK1138098A1 (en) 2010-08-13
EP2096616A1 (en) 2009-09-02
JP5055993B2 (ja) 2012-10-24

Similar Documents

Publication Publication Date Title
KR20090094086A (ko) 암호 처리 장치, 암호 처리 방법과 컴퓨터 프로그램
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
DK1686722T3 (en) Block encryption device and block encryption method comprising rotation key programming
JP5272417B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5551065B2 (ja) 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化方法およびデバイス
JP5023624B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US9363074B2 (en) Encryption processing apparatus, encryption processing method, and computer program
WO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム
JP2007199156A (ja) 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
JP5605197B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP5488608B2 (ja) ブロック暗号装置、ブロック暗号化方法およびプログラム
JP5510587B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5223245B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Legal Events

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