KR20070112393A - 정보 처리 장치 - Google Patents

정보 처리 장치 Download PDF

Info

Publication number
KR20070112393A
KR20070112393A KR1020077021765A KR20077021765A KR20070112393A KR 20070112393 A KR20070112393 A KR 20070112393A KR 1020077021765 A KR1020077021765 A KR 1020077021765A KR 20077021765 A KR20077021765 A KR 20077021765A KR 20070112393 A KR20070112393 A KR 20070112393A
Authority
KR
South Korea
Prior art keywords
matrix
function
linear
linear transformation
branches
Prior art date
Application number
KR1020077021765A
Other languages
English (en)
Other versions
KR101245010B1 (ko
Inventor
타이조 시라이
Original Assignee
소니 가부시끼 가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 소니 가부시끼 가이샤 filed Critical 소니 가부시끼 가이샤
Publication of KR20070112393A publication Critical patent/KR20070112393A/ko
Application granted granted Critical
Publication of KR101245010B1 publication Critical patent/KR101245010B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

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

Abstract

해석 곤란성을 높인, 안전성이 높은 암호처리 장치 및 방법을 실현한다. 비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를, 복수 라운드 반복 실행하는 FeisteI형 공통키 블록 암호에 있어서, 각 라운드에 대응하는 F함수의 선형변환 처리를 비교적 느슨한 제한 조건을 만족하는 행렬을 적용하여 실행한다. 본 구성에 의해 차분공격이나 선형공격에 대한 내성이 향상한다. 또한, 제한이 비교적 느슨하기 때문에 이용할 수 있는 행렬 후보가 증가하고, 액티브 S-box수를 크게 할 수 있다. 즉, 암호 강도 지표의 하나인 액티브 S박스의 최소수를 크게 하는 것이 가능해지고, 공격에 대한 내성이 향상하고 안전성이 높은 암호처리가 실현된다.
암호처리 장치, 암호처리 방법

Description

정보 처리 장치{INFORMATION PROCESSING DEVICE}
본 발명은, 암호처리 장치, 및 암호처리 방법, 및 컴퓨터 프로그램에 관한 것이다. 더욱 상세하게는, 암호해석 처리, 공격 처리로서 알려지는 선형해석, 차분해석에 대한 내성을 향상시킨 암호처리 장치, 및 암호처리 방법, 및 컴퓨터 프로그램에 관한 것이다.
요즘, 네트워크 통신, 전자 상거래의 발전에 수반하여, 통신에 있어서의 시큐어러티 확보가 중요한 문제로 되어 있다. 시큐어러티 확보의 하나의 방법이 암호 기술이고, 현재, 다양한 암호화 수법을 이용한 통신이 실제로 행하여지고 있다.
예를 들면 IC 카드 등의 소형의 장치중에 암호처리 모듈을 매입하고, IC 카드와, 데이터 판독기록 장치로서의 리더라이터 사이에서 데이터 송수신을 행하고, 인증 처리, 또는 송수신 데이터의 암호화, 복호를 행하는 시스템이 실용화되어 있다.
암호처리 알고리즘에는 다양한 것이 있지만, 크게 분류하면, 암호화키와 복호키를 다른 키, 예를 들면 공개키와 비밀키로서 설정하는 공개키 암호방식과, 암호화키와 복호키를 공통의 키로서 설정하는 공통키 암호방식으로 분류된다.
공통키 암호방식에도 다양한 알고리즘이 있지만, 그 하나로 공통키를 베이스 로 하여 복수의 키를 생성하고, 생성한 복수의 키를 이용하여 블록 단위(64비트, 128비트 등)의 데이터 변환 처리를 반복 실행하는 방식이 있다. 이와 같은 키 생성 방식과 데이터 변환 처리를 적용한 알고리즘의 대표적인 것이 공통키 블록 암호방식이다,
대표적인 공통키 블록 암호의 알고리즘으로서는, 예를 들면 미국 표준 암호로서의 DES(Data Encryption Standard) 알고리즘이 있고, 다양한 분야에서 널리 이용되고 있다.
DES로 대표되는 공통키 블록 암호의 알고리즘은, 주로, 입력 데이터의 변환을 실행하는 라운드함수부와, 라운드함수(F함수)부의 각 라운드에서 적용하는 키를 생성하는 키 스케줄부로 나눌 수 있다. 라운드함수부의 각 라운드에서 적용하는 라운드키(부키(副鍵))는, 하나의 마스터키(주키((主鍵))에 의거하여, 키 스케줄부에 입력되어 생성되고, 각 라운드 함수부에서 적용된다.
그러나, 이와 같은 공통키 암호처리에서는, 암호해석에 의한 키의 누설이 문제로 되어 있다. 암호해석 또는 공격수법의 대표적인 수법으로서, 어떤 차분을 갖는 입력 데이터(평문(平文))와 그 출력 데이터(암호문)를 다수 해석함에 의해 각 라운드함수에서의 적용키를 해석하는 차분해석(차분해독법 또는 차분공격이라고도 불린다)이나, 평문과 대응 암호문에 의거한 해석을 행하는 선형해석(선형해독법 또는 선형공격이라고도 불린다)이 알려져 있다.
암호해석에 의한 키의 해석이 용이하다는 것은, 그 암호처리의 안전성이 낮다는 것으로 된다. 종래의 DES 알고리즘에서는, 라운드함수(F함수)부의 선형변환부 에서 적용하는 처리(변환행렬)가, 각 단(段)의 라운드에서 동등한 것이었기 때문에 해석이 행하여지기 쉽고, 결과로서 키의 해석의 용이성을 초래하고 있다는 문제가 있다.
본 발명은, 상기 문제점을 감안하여 이루어진 것이고, 선형해석이나 차분해석에 대한 내성(耐性)이 높은 공통키 블록 암호 알고리즘을 실현하는 암호처리 장치, 및 암호처리 방법, 및 컴퓨터 프로그램을 제공하는 것을 목적으로 한다.
과제를 해결하기 위한 수단
본 발명의 제 1의 측면은,
복수 비트의 입출력을 갖는 복수의 비선형변환층을 병렬로 구성한 비선형변환부와,
선형변환을 시행하는 선형변환층으로 구성한 선형변환부로 구성되는 Feistel형 암호처리를 구비하는 암호처리 장치에 있어서,
상기 선형변환부는, 상기 선형변환에 적응하는 행렬의 제약 조건에 의거하여 처리를 시행하는 것을 특징으로 하는 암호처리 장치에 있다.
또한, 본 발명의 암호처리 장치의 한 실시 양태에 있어서, 상기 선형변환에 적응하는 행렬의 제약 조건은, r단 각각에 대응하는 F함수의 선형변환부의 만족하는 행렬(Mi)을 적용한 구성, 즉, n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(寫像)(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(分岐數)(B(θ))를, 분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
단, minα≠0{Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치, hwn(Y)은 비트열(Y)을 n비트마다 단락을 짓고 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비(非)제로) 요소의 수를 돌려주는 함수로 하여, 분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
또한, 행렬(M)의 분기수를 B(M)로 나타낸 때,
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi+2)|1≤i≤r-2},
단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬,
로 한 경우에,
BD1, BD2의 전부가 3 이상이 되는 행렬(Mi)을 적용한 구성인 것을 특징으로 한다.
또한, 본 발명의 제 2의 측면은,
암호처리 장치이고,
비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 갖는 r단으로 이루어지는 Feistel형 공통키 블록 암호처리 구성을 가지며,
상기 r단 각각에 대응하는 F함수의 선형변환부는 하기 조건을 만족하는 행렬(Mi)을 적용한 구성, 즉,
n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
단, minα≠{Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치,
hwn(Y)는 비트열(Y)을 n비트마다 단락을 짓고 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수,
로 하고, 분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
또한, 행렬(M)의 분기수를 B(M)로 나타낸 때,
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4},
단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬,
로 한 경우에,
BD1, BD2, BD3의 전부가 3 이상이 되는 행렬(Mi)을 적용한 구성인 것을 특징으로 하는 암호처리 장치에 있다.
또한, 본 발명의 제 3의 측면은,
암호처리 장치이고,
비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 갖는 r단으로 이루어지는 Feistel형 공통키 블록 암호처리 구성을 가지며,
상기 r단 각각에 대응하는 F함수의 선형변환부는 하기 조건을 만족하는 행렬(Mi)을 적용한 구성, 즉,
n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
단, minα≠0 {Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치,
hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수,
로 하고, 분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
단, tM은 행렬의 전치,
로 한 경우에,
BL2이 3 이상이 되는 행렬(Mi)을 적용한 구성인 것을 특징으로 하는 암호처리 장치에 있다.
또한, 본 발명의 제 4의 측면은,
Feistel형 공통키 블록 암호처리를 실행하는 암호처리 방법이고,
비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 r단, 반복 실행하는 스텝을 가지며,
상기 r단 각각에 대응하는 F함수의 선형변환 처리는 하기 조건을 만족하는 행렬(Mi)을 적용한 선형변환 처리, 즉,
n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→[0, 1}nb에 대해, 분기수(B(θ))를,
분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
단, minα≠0{Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치,
hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수,
로 하고, 분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고, 또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4},
단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬,
로 한 경우에,
BD1, BD2, BD3의 전부가 3 이상이 되는 행렬(Mi)을 적용한 선형변환 처리에 의해 실행하는 것을 특징으로 하는 암호처리 방법에 있다.
또한, 본 발명의 제 5의 측면은,
Feistel형 공통키 블록 암호처리를 실행한 암호처리 방법이고,
비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 r단, 반복 실행하는 스텝을 가지며,
상기 r단 각각에 대응하는 F함수의 선형변환부는 하기 조건을 만족하는 행렬(Mi)을 적용한 선형변환 처리, 즉,
n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
단, minα≠0 {Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치,
hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수,
로 하고, 분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
단, tM은 행렬의 전치로 한 경우에,
BL2이 3 이상이 되는 행렬(Mi)을 적용한 선형변환 처리에 의해 실행하는 것을 특징으로 하는 암호처리 방법에 있다.
또한, 본 발명의 제 6의 측면은,
Feistel형 공통키 블록 암호처리를 컴퓨터상에서 실행하는 컴퓨터 프로그램이고,
비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 r단, 반복 실행하는 스텝을 가지며,
상기 r단 각각에 대응하는 F함수의 선형변환 처리는 하기 조건을 만족하는 행렬(Mi)을 적용한 선형변환 처리, 즉,
n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
단, minα≠0 {Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치,
hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수,
로 하고, 분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4},
단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬,
로 한 경우에,
BD1, BD2, BD3의 전부가 3 이상이 되는 행렬(Mi)을 적용한 선형변환 처리에 의해 실행하는 것을 특징으로 하는 컴퓨터 프로그램에 있다.
또한, 본 발명의 제 7의 측면은,
Feistel형 공통키 블록 암호처리를 컴퓨터상에서 실행하는 컴퓨터 프로그램이고,
비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 r단, 반복 실행하는 스텝을 가지며,
상기 r단 각각에 대응하는 F함수의 선형변환부는 하기 조건을 만족하는 행렬(Mi)을 적용한 선형변환 처리, 즉,
n×a 비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
단, minα≠0 {Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치,
hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수,
로 하고, 분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
단, tM은 행렬의 전치로 한 경우에,
BL2가 3 이상이 되는 행렬(Mi)을 적용한 선형변환 처리에 의해 실행하는 것을 특징으로 하는 컴퓨터 프로그램에 있다.
또한, 본 발명의 컴퓨터 프로그램은, 예를 들면, 다양한 프로그램 코드를 실행 가능한 컴퓨터 시스템에 대해, 컴퓨터 가독의 형식으로 제공하는 기억 매체, 통신 매체, 예를 들면, CD나 FD, M0 등의 기록 매체, 또는, 네트워크 등의 통신 매체에 의해 제공 가능한 컴퓨터 프로그램이다. 이와 같은 프로그램을 컴퓨터 가독의 형식으로 제공함에 의해, 컴퓨터 시스템상에서 프로그램에 응한 처리가 실현된다.
본 발명의 또다른 목적, 특징이나 이점은, 후술하는 본 발명의 실시예나 첨부한 도면에 의거하여 보다 상세한 설명에 의해 분명하게 될 것이다. 또한, 본 명세서에서 시스템이란, 복수의 장치의 논리적 집합 구성이고, 각 구성의 장치가 동일 본체 내에 있는 것으로는 한하지 않는다.
발명의 효과
본 발명의 구성에 의하면, 비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를, 복수 라운드 반복 실행하는 Feistel형 공통키 블록 암호처리에 있어서, 복수 라운드 각각에 대응하는 F함수의 선형변환 처리를, 비교적 느슨한 제한에 의해 특정되는 행렬을 적용하여 실행하는 구성에 의해, 공통키 블록 암호에서의 차분공격이나 선형공격에 대한 내성이 향상한다. 또한, 제한이 비교적 느슨하고, 이용할 수 있는 행렬의 후보가 증가함과 함께, 액티브 S-box수를 충분히 크게 확보하는 것이 가능하게 된다. 즉, 공통키 블록 암호에 있어서의 공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능하게 되고, 선형공격이나, 차분공격에 대해 내성이 향상하고, 보다 안전성이 높은 암호처리가 실현된다.
도 1은 Feistel 구조를 갖는 대표적인 공통키 블록 암호의 구성을 도시하는 도면.
도 2는 라운드함수부로서 설정되는 F함수의 구성에 관해 설명하는 도면,
도 3은 선형변환부에 있어서, 선형변환 처리에 적용하는 정방행렬의 예를 도시하는 도면.
도 4는 m=8, n=8의 128bit 블록 암호에서의 3단의 동시차분 캔슬의 양상을 설명하는 도면.
도 5는 F함수의 선형변환부에 있어서, 정방행렬에 의한 선형변환이 실행되고, F함수 출력차분(△Yi)을 생성하는 구체적인 예를 설명하는 도면.
도 6은 m=8, n=8의 128bit 블록 암호에서의 5단의 동시차분 캔슬의 양상을 설명하는 도면.
도 7은 공통키 블록 암호에서의 임의단의 동시차분 캔슬의 정의를 설명하는 도면.
도 8은 정방MDS행렬의 한 예를 도시하는 도면.
도 9는 공통키 블록 암호처리 알고리즘에서의 각 라운드의 F함수의 선형변환행렬로서의 정방MDS행렬 설정예를 설명하는 도면.
도 10은 공통키 블록 암호처리 알고리즘에서의 각 라운드의 F함수의 선형변환행렬로서의 정방MDS행렬 설정 처리 시퀀스를 설명하는 플로우도.
도 11은 각 라운드의 F함수에 설정하는 선형변환행렬인 정방MDS행렬의 생성 수법으로서, 차분공격에 대한 내성 향상을 실현하는 정방MDS행렬 생성 처리예(a1)를 설명하는 플로우도.
도 12는 각 라운드의 F함수에 설정하는 선형변환행렬인 정방MDS행렬의 생성 수법으로서, 차분공격에 대한 내성 향상을 실현하는 정방MDS행렬 생성 처리예(a2)를 설명하는 플로우도.
도 13은 각 라운드의 F함수에 설정하는 선형변환행렬인 정방MDS행렬의 생성 수법으로서, 차분공격에 대한 내성 향상을 실현하는 정방MDS행렬 생성 처리예(a3)를 설명하는 플로우도.
도 14는 각 라운드의 F함수에 설정하는 선형변환행렬인 정방MDS행렬의 생성 처리예(a3)의 구체적 수법을 설명하는 도면.
도 15는 각 라운드의 F함수에 설정하는 선형변환행렬인 정방MDS행렬의 생성 수법으로서, 선형공격에 대한 내성 향상을 실현하는 정방MDS행렬 생성 처리예(b1)를 설명하는 플로우도.
도 16은 각 라운드의 F함수에 설정하는 선형변환행렬인 정방MDS행렬의 생성 수법으로서, 선형공격에 대한 내성 향상을 실현하는 정방MDS행렬 생성 처리예(b2)를 설명하는 플로우도.
도 17은 각 라운드의 F함수에 설정하는 선형변환행렬인 정방MDS행렬의 생성 수법으로서, 차분공격 및 선형공격에 대한 내성 향상을 실현하는 정방MDS행렬 생성 처리예를 설명하는 플로우도.
도 18은 본 발명에 관한 암호처리를 실행하는 암호처리 장치로서의 IC 모듈의 구성예를 도시하는 도면.
이하, 본 발명의 암호 처리 장치, 및 암호 처리 방법, 및 컴퓨터 프로그램의 상세에 관해 설명한다. 또한, 설명은, 이하의 항목순으로 행한다.
1. 공통키 블록 암호 알고리즘에서의 차분해석 처리
2. 공통키 블록 암호 알고리즘에서의 선형해석 처리
3. 내성을 향상시킨 암호처리 알고리즘 구성예
(3-a) 차분공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에 의 설정예
(3-b) 선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예
(3-c) 차분공격 및 선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예
4. 본 발명에 관한 암호처리 알고리즘
(4a) 구성예 1
(4a. 1) 구성예 1에서의 차분공격에 대한 내성의 향상
(4a. 2) 구성예 1에서의 선형공격에 대한 내성의 향상
(4b) 구성예 2
(4b. 1) 구성예 2에서의 차분공격에 대한 내성의 향상
(4b. 2) 구성예 2에서의 선형공격에 대한 내성의 향상
[1. 공통키 블록 암호 알고리즘에서의 차분해석 처리]
우선, DES(Data Encryption Standard) 암호처리로 대표되는 공통키 블록 암호 알고리즘에서의 차분해석 처리의 개요에 관해, 일반화한 공통키 블록 암호 모델을 이용하여 설명한다.
공통키 블록 암호의 알고리즘은, 주로, 입력 데이터의 변환을 실행하는 라운드함수부와, 라운드함수부의 각 라운드에서 적용하는 키를 생성하는 키 스케줄부로 나눌 수 있다. 라운드함수부의 각 라운드에서 적용하는 키(부키)는, 하나의 마스터키(주키)에 의거하여, 키 스케줄부에 입력되어 생성되고, 각 라운드함수부에서 적 용된다, 이 공통키 암호방식의 대표적인 방식으로 미국연방 표준 암호방식으로서의 DES(Data Encryption Standard)가 있다.
Feistel 구조라고 불리는 대표적인 공통키 블록 암호의 구조에 관해, 도 1을 참조하여 설명한다.
Feistel 구조는, 변환함수의 단순한 반복에 의해, 평문(平文)을 암호문(暗號文)으로 변환하는 구조를 갖는다. 평문의 길이를 2mn비트라고 한다. 단, m, n는 모두 정수(整數)이다. 처음에, 2mn비트의 평문을, mn비트의 2개의 입력 데이터 PL(Plain-Left)(101), PR(Plain-Right)I(102)로 분할하고, 이것을 입력치로 한다.
Feistel 구조는 라운드함수라고 불리는 기본 구조의 반복으로 표현되고, 각 라운드에 포함되는 데이터 변환함수는 F함수(120)라고 불린다. 도 1의 구성에서는, F함수(라운드함수)(120)가 r단 반복 구성예를 나타내고 있다.
예를 들면 제 1번째의 라운드에서는, mn비트의 입력 데이터(X)와, 키 생성부(도시 생략)로부터 입력되는 mn비트의 라운키(K1)(103)가 F함수(120)에 입력되고, F함수(120)에서의 데이터 변환 처리의 후에 mn비트의 데이터(Y)를 출력한다. 출력은 또한쪽의 전단(前段)부터의 입력 데이터(제 1단의 경우는 입력 데이터(PL)와 배타적 논리합부(104)에서, 배타적 논리합 연산이 이루어지고, mn비트의 연산 결과가 다음의 라운드함수로 출력된다. 이 처리, 즉 F함수를 정해진 라운드 수(r)만큼 반복 적용하여 암호화 처리가 완료되고, 암호문의 분할 데이터(CL(Cipher-Left), CR(Cipher-Right))가 출력된다. 이상의 구성에 의해, Feistel 구조의 복호 처리는 라운드키를 삽입하는 순서를 역으로 할 뿐이면 좋고, 역함수를 구성할 필요가 없는 것이 도출된다.
각 라운드의 함수로서 설정되는 F함수(120)의 구성에 관해, 도 2를 참조하여 설명한다. 도 2의 (a)는, 하나의 라운드에서의 F함수(120)에 대한 입력 및 출력을 도시하는 도면이고, 도 2의 (b)는, F함수(120)의 구성의 상세를 도시하는 도면이다. F함수(120)는, 도 2의 (b)에 도시하는 바와 같이, 비선형변환층과 선형변환층을 접속한 이른바 SPN형의 구성을 갖는다.
SPN형의 F함수(120)는, 도 2의 (b)에 도시하는 바와 같이, 비선형변환 처리를 실행하는 복수의 S박스(S-box)(121)를 갖는다. 라운드함수부의 전단부터의 mn비트의 입력 치(X)는, 키 스케줄부로부터 입력되는 라운드키(K1)와 배타적 논리합이 실행되고, 그 출력이 n비트씩 비선형변환 처리를 실행하는 복수(m개)의 S박스(121)에 입력된다. 각 S박스로는, 예를 들면 변환 테이블을 적용한 비선형변환 처리가 실행된다.
S박스(121)로부터의 출력 데이터인 mn비트의 출력치(Z)는, 선형변환 처리를 실행하는 선형변환부(122)에 입력되고, 예를 들면 비트 위치의 교체 처리 등의 선형변환 처리가 실행되고, mn비트의 출력치(Y)를 출력한다. 이 출력치(Y)가 전단부터의 입력 데이터와 배타적 논리합되어, 다음 라운드의 F함수의 입력치가 된다.
도 2에 도시하는 F함수(120)는, 입출력 비트 길이가 m×n(m, n : 정수)비트 이고, 비선형변환층은 n비트의 입출력을 갖는 비선형변환층으로서의 S박스(121)는, m개 병렬로 나열한 구성을 가지며, 선형변환층으로서의 선형변환부(122)는 n차의 기약(旣約) 다항식으로 정의되는 2의 확대체(GF)(2n)상의 원(元)을 요소로서 갖는 m차의 종방행렬에 의거한 선형변환 처리를 실행한다.
선형변환부(122)에서의 선형변환 처리에 적용하는 정방행렬의 예를 도 3에 도시한다. 도 3에 도시하는 정방행렬(125)은, n=8, m=8인 경우의 예이다. 비선형변환부(S박스(121))로부터 출력된 m개의 n비트 데이터(Z[1], Z[2], …, Z[m])에 대해 미리 정해진 정방행렬(125)을 적용한 연산에 의해 선형변환이 시행되고, F함수(라운드함수) 출력으로서의, Y[1], Y[2], …, Y[m]이 결정된다. 단, 이때 각 데이터의 행렬의 요소에 대한 선형 연산은 미리 정해진 2의 확대체(GF)(2n)상에서 행하여진다.
지금까지의 Feistel형 암호에서는, 모든 단의 F함수에 같은 선형변환층을 이용하고 있기 때문에, 차분(差分)의 전파(傳播)시에 동시에 복수의 차분이 캔슬되어 버리는 성질이 존재하였다. 배경 기술의 난에서 설명한 바와 같이, 암호해석 수법의 대표적인 수법으로서, 어떤 차분을 갖는 입력 데이터(평문)와 그 출력 데이터(암호문)를 다수 해석함에 의해 각 라운드함수에서의 적용키를 해석하는 차분해석(또는 차분 해독법)이 알려져 있고, 종래의 DES 암호 알고리즘 등의 공통키 블록 암호에서는, F함수부(120)의 선형변환부(122)에서 적용하는 처리(변환행렬)를, 각 단의 라운드에서 동등한 것으로 설정하고 있기 때문에, 차분해석이 행하기 쉽고, 결과로서 키의 해석의 용이성을 초래하고 있다.
차분의 전파시에, 동시에 복수의 차분이 캔슬되는 예에 관해, 도 4를 참조하여 설명한다. 또한, 본 명세서에서는, 차분을 나타내는 경우에는 △(델타)기호를 붙여서 나타낸다.
도 4는 m=8, n=8의 128bit 블록 암호에서의 3단의 동시차분 캔슬의 양상을 설명하는 도면이다. 단, 도면중에서는 64bit의 데이터를 바이트 단위로 단락을 지어 벡터로서 표현하고, 각각의 요소를 16진수(進數)로 표기하는 것으로 한다.
3단 구성을 갖는 F함수에의 동시차분 캔슬은, 예를 들면 이하의 데이터 상태 1 내지 4의 설정 메커니즘에 의거하여 발생한다. 이하에 설명하는 메커니즘이 발생한 데이터 상태는, 다수의 차분 입력 데이터를 설정함으로써 발생시킬 수 있는 데이터 상태이고, 이른바 차분해석에서의 키(라운드키)의 해석에서 발생할 수 있다.
(상태 1)
i라운드에의 입력차분의 좌반분(左半分)은, 전부 제로인 입력차분(△Xi-1=(00, 00, 00, 00, 00, 00, 00, 00))이고, 우반분의 입력차분이 단지 하나의 S-box에의 입력을 제외하고 제로인 입력차분(△Xi=(34, 00, 00, 00, 00, 00, 00, 00))이라고 한다. 이 데이터 상태는, 다수의 차분 입력 데이터를 설정함으로써, i라운드에서, 이와 같은 데이터 상태를 얻을 수 있다는 것이다.
또한, △Xi=(34, 00, 00, 00, 00, 00, 00, 00)의 8개의 각 요소는, F함수중에 구성되는 m개(m=8)의 S박스 각각에 대한 입력차분에 대응한다. 차분(34)이 제 1 S박스(도 4중의 (S1))에 입력되고, (00)이, 제 2 내지 8S박스에 대한 입력차분이 다.
또한 제로(00)의 입력차분을 갖는 S박스의 출력차분은 제로(00)이고, 차분 데이터에 관한 한, 제로(00)의 입력차분을 갖는 S박스는, 어떤 작용도 행하지 않는 것이고, 액티브가 아닌 이른바 비액티브 S박스라고 불린다. 한편, 비제로의 입력차분(도 4의 예에서는 차분 : 34)을 갖는 S박스는, 비제로의 입력차분에 대응한 비선형변환 결과를 출력차분으로서 발생시키기 때문에, 액티브 S박스(Activc S-box)로 불린다.
도 4의 예에서는, 비제로의 입력차분(34)을 입력하는 하나의 액티브 S박스(S1)의 출력차분(b7)을 발생시키고 있고, 그 밖의 비액티브 S박스(S2 내지 S8)는 제로의 입력차분(00)에 의거하여 출력차분(00)을 발생시키고, 선형변환부의 차분 입력으로 하고 있다.
(상태 2)
i라운드에의 비제로의 입력차분(도 4의 예에서는 차분 : 34)을 갖는 S박스(이하, 액티브 S박스(Active S-box)라고 부른다)로부터의 출력차분은 선형변환층에서 확산된 후 F함수로부터 출력(출력치=△Yi)되고, 그대로 다음의 라운드에의 입력차분(△Xi+1)이 된다.
도 4의 예에서의 선형변환은, 각 라운드의 F함수에서 공통되는 예를 들면 도 5에 도시하는 어느 특정한 정방행렬(125)에 의한 선형변환이 실행되어 i라운드의 F함수 출력차분으로서의 △Yi=(98, c4, b4, d3, ac, 72, 0f, 32)를 출력한다. 도 5에 도시하는 선형변환 구성에서 이해되는 바와 같이, 출력차분(△Yi)=(98, c4, b4, d3, ac, 72, 0f, 32)은, 하나의 액티브 S박스(S1)로부터의 출력 요소(Z[1])=b7에만 의존한 값으로서 결정된다.
이 i라운드의 F함수 출력차분으로서의 △Yi=(98, c4, b4, d3, ac, 72, 0f, 32)는, 도 4에 도시하는 배타적 논리합부(131)에서, 전부 제로인 입력차분(△Xi-1)=(00, 00, 00, 00, 00, 00, 00, 00)과 배타적 논리합(X0R) 연산이 실행되고, 연산 결과가, 다음의 라운드(i+1)에의 입력차분(△Xi+1)이 된다.
i라운드의 F함수 출력차분으로서의 △Yi=(98, c4, b4, d3, ac, 72, 0f, 32)와, 전부 제로인 입력차분(△Xi-1)=(00, 00, 00, 00, 00, 00, 00, 00)의 배타적 논리합(X0R) 결과는, △Yi이기 때문에, 다음의 라운드(i+1)에의 입력차분(△Xi+1)=△Yi=(98, c4, b4, d3, ac, 72, 0f, 32)이 된다.
(상태 3)
i+1라운드의 F함수로부터의 출력차분(△Yi+1)이, i라운드에서의 Active S-box의 위치에만 비제로 값을 갖는다. 이 데이터 상태는, 다수의 차분 입력 데이터를 설정함으로써, 이와 같은 데이터 상태를 얻을 수 있다는 것이다.
즉, △Yi+1=(ad, 00, 00, 00, 00, 00, 00, 00)이고, i라운드와 마찬가지로 비제로의 차분치(도 4의 예에서는 차분 : 34)를 갖는 S-box의 위치(제 1 S박스(S1))에만 비제로 값을 갖는다. 또한, 분명히 ad≠00이다.
(상태 4)
i+2라운드의 액티브 S박스(Activc S-box)(S1)의 출력차분이 i라운드에서의 액티브 S박스(Active S-box)(S1)의 출력차분과 일치한 경우, 즉, 도 4에 도시하는 바와 같이 i-2라운드의 액티브 S박스((S1)의 출력차분이 b7로 되고, i라운드에서의 액티브 S박스(S1)의 출력차분(b7)과 일치한다. 이 데이터 상태는, 다수의 차분 입력 데이터를 설정함으로써, 이와 같은 데이터 상태를 얻을 수 있다는 것이다.
이 데이터 상태가 발생하면, i+2라운드의 F함수의 출력차분(△Yi+2)=(98, c4, b4, d3, ac, 72, 0f, 32)이, 2개 전의 라운드인 i라운드의 F함수의 출력차분(△Yi)=(98, c4, b4, d3, ac, 72, 0f, 32)과 일치하게 된다.
이 결과, 배타적 논리합부(133)에서는,
△Xi+1=△Yi=(98, c4, b4, d3, ac, 72, 0f, 32)와,
△Yi+2=(98, c4, b4, d3, ac, 72, 0f, 32)의
동일한 값끼리의 배타적 논리합 연산이 실행되게 되고, 배타적 논리합 연산 결과로서 모두 0의 값을 출력한다.
그 결과, 다음 단(라운드(i+3))에의 출력차분의 전단(i+2라운드)으로부터의 왼쪽의 입력차분(△Xi+3)=(00, 00, 00, 00, 00, 00, 00, 00)이 된다.
이 라운드(i+3)에의 좌입력(△Xi+3)=(00, 00, 00, 00, 00, 00, 00, 00)은, 라운드(i)에의 좌입력(△Xi-1=(00, 00, 00, 00, 00, 00, 00, 00)과 마찬가지 올 제로이고, 라운드(i+3) 이후의 라운드에서도, 라운드(i 내지 i+2)와 마찬가지 처리가 반복될 가능성이 있다.
이 결과, 라운드 수의 늘어남에 대해 액티브 S박스의 수가 증대하지 않고, 차분공격에 대한 강도가 그다지 늘어나지 않는다는 문제를 발생시킨다.
공통키 블록 암호에 있어서, 차분공격에 대한 강도 지표의 하나로서, 암호화 함수 전체에서의 액티브 S박스의 최소수가 알려져 있다. 액티브 S박스 수의 최소수가 클수록 차분공격에 대한 내성이 높다고 판단된다.
전술한 바와 같이, 차분해석(차분공격)에서는, 어떤 차분을 갖는 입력 데이터(평문)와 그 출력 데이터(암호문)를 다수 설정하여 이 대응을 해석함에 의해 각 라운드함수에서의 적용키를 해석한 수법이고, 이 차분해석에서, 액티브 S박스의 수를 적게 할 수 있으면, 해석이 용이해지고, 해석 프로세스 수를 삭감할 수 있다.
상술한 도 4를 참조한 예에서는, 제 1의 S박스(S1)만이 액티브 S박스인 패턴의 발생 상태를 제시하였지만, 그 밖의 S박스(S2 내지 S8)에 관해서도, 차분해석의 입력 데이터의 설정에 의해, 각 S박스만을 액티브 S박스로 한 설정이 가능하고, 이와 같은 차분해석 프로세스를 실행함에 의해, 각 S박스의 비선형변환 처리의 해석, 또한 F함수에 대해 입력되는 라운드키의 해석이 가능해진다.
이와 같은 차분해석에 대한 내성을 향상시키기 위해서는, 액티브 S박스의 수가 항상 많은 상태를 유지할 것, 즉, 액티브 S박스의 최소 수가 많은 것이 필요하다.
도 4를 참조하여 설명한 예에서, 오른쪽부터 왼쪽으로 입력을 행하는 F함수, 즉, 제 i라운드와 제 i+2라운드만을 액티브 S박스 산출 처리 대상 라운드로서 본 경우, 액티브 S박스 수는 불과 2이고, 왼쪽부터 오른쪽으로 입력을 행하는 F함수, 즉, 제 i+1라운드에서는 액티브 S박스 수가 8인 것이지만, 동시차분 캔슬에 의해 제 i+3라운드에서의 액티브 S박스 수가 0으로 되어 버리기 때문에, 차분해석에 의한 각 S박스의 비선형변환 처리의 해석 처리가 용이해진다.
도 4에 도시하는 공통키 블록 암호 알고리즘은, 각 라운드에서의 선형변환부에서 적용하는 선형변환행렬이 동등한 것이고, 이 구성에 기인하여, 특히 오른쪽부터 왼쪽으로 입력을 행하는 F함수에서의 불과 2개의 액티브 S박스에 의해 동시차분 캔슬의 발생 가능성을 야기하고 있다. 따라서 라운드 수의 늘어남에 대해 액티브 S박스의 최소수가 충분히 증대하지 않고, 차분공격에 대한 강도가 그다지 늘어나지 않는다는 문제가 있다.
다음에, 마찬가지로, 같은 선형변환행렬을 모든 단(라운드)의 F함수에 이용하는 구성에서, 5라운드에 걸치는 동시차분 캔슬의 발생 메커니즘에 관해, 도 6을 참조하여 설명한다.
도 6은 m=8, n=8의 128bit 블록 암호에서의 5단의 동시차분 캔슬의 양상을 설명하는 도면이다. 단, 도면중에서는 64bit의 데이터를 바이트 단위로 단락을 짓고 벡터로서 표현하고, 각각의 요소를 16진수로 표기하는 것으로 한다.
5단 구성을 갖는 F함수에서의 동시차분 캔슬은, 예를 들면 이하의 데이터 상태 1 내지 7의 설정 메커니즘에 의거하여 발생한다. 이하에 설명하는 메커니즘이 발생하는 데이터 상태는, 다수의 차분 입력 데이터를 설정함으로써 발생시킬 수 있는 상태이고, 이른바 차분해석에서의 키(라운드키)의 해석에서 발생할 수 있다.
(상태 1)
i라운드에의 입력차분의 좌반분은, 전부 제로인 입력차분(△Xi-1=(00, 00, 00, 00, 00, 00, 00, 00))이고, 우반분의 입력차분이 단지 하나의 S-box에의 입력을 제외하고 제로인 입력차분(△Xi=(34, 00, 00, 00, 00, 00, 00, 00))이라고 한 다. 이 데이터 상태는, 다수의 차분 입력 데이터를 설정함으로써, i라운드에서, 이와 같은 데이터 상태를 얻을 수 있다는 것이다.
또한, △Xi=(34, 00, 00, 00, 00, 00, 00, 00)의 8개의 각 요소는, F함수중에 구성되는 m개(m=8)의 S박스 각각에 대한 입력차분에 대응한다. (34)가 제 1 S박스(도 6중의 (S1))에 입력되고, (00)이, 제 2 내지 8S박스에 대한 입력차분이다.
또한 전술한 바와 같이, 제로(00)의 입력차분을 갖는 S박스의 출력차분은 제로(00)이고, 차분 데이터에 관한 한, 제로(00)의 입력차분을 갖는 S박스는, 어떤 작용도 행하지 않는 것이고, 액티브지가 아닌 이른바 비액티브 S박스라고 불린다. 한편, 비제로의 입력차분(도 6의 예에서는 차분 : 34)을 갖는 S박스(S1)만이, 비제로의 입력차분에 대응한 비선형변환 결과를 출력차분으로서 발생시키기 때문에, 액티브 S박스(Active S-box)이다.
도 6의 예에서는, 비제로의 입력차분(34)을 입력하는 하나의 액티브 S박스(S1)의 출력차분(b7)을 발생시키고 있고, 그 밖의 비액티브 S박스(S2 내지 S8)는 제로의 입력차분(00)에 의거하여 출력차분(00)을 발생시키고, 선형변환부의 차분 입력으로 하고 있다.
(상태 2)
i라운드에의 비제로의 입력차분(도 4의 예에서는 차분 : 34)을 갖는 S박스(이하, 액티브 S박스(Active S-box)라고 부른다)로부터의 출력차분은 선형변환층에서 확산된 후 F함수로부터 출력(출력치=△Yi)되고, 그대로 다음의 라운드에의 입력차분(△Xi+1)이 된다.
도 6의 예에서, 각 라운드에 공통의 예를 들면 도 5에 도시하는 어느 특정의 정방행렬(125)에 의한 선형변환이 실행되고 i라운드의 F함수 출력차분으로서의 △Yi=(98, c4, b4, d3, ac, 72, 0f, 32)를 출력한다.
i라운드의 F함수 출력차분으로서의 △Yi=(98, c4, b4, d3, ac, 72, 0f, 32)은, 도 6에 도시하는 배타적 논리합부(141)에서, 전부 제로인 입력차분(△Xi-1=(00, 00, 00, 00, 00, 00, 00, 00)과 배타적 논리합(X0R) 연산이 실행되고, 연산 결과가, 다음의 라운드(i+1)에의 입력차분(△Xi+1)이 된다.
i라운드의 F함수 출력차분으로서의 △Yi=(98, c4, b4, d3, ac, 72, 0f, 32)와, 전부 제로인 입력차분(△Xi-1=(00, 00, 00, 00, 00, 00, 00, 00)의 배타적 논리합(X0R) 결과는, △Yi이기 때문에, 다음의 라운드(i+1)에의 입력차분(△Xi+1)=△Yi=(98, c4, b4, d3, ac, 72, 0f, 32)로 된다.
(상태 3)
i+1라운드의 F함수로부터의 출력차분(△Yi+1)이, i라운드에서의 Active S-box의 위치에만 비제로 값을 갖고, 이 데이터 상태는, 다수의 차분 입력 데이터를 설정함으로써, 이와 같은 데이터 상태를 얻을 수 있다는 것이다.
즉, △Yi+1=(34, 00, 00, 00, 00, 00, 00, 00)이고, i라운드와 마찬가지로, 비제로의 차분치(도 6의 예에서는 차분 : 34)를 갖는 S-box의 위치(제 1 S박스(S1))에만 비제로 값을 갖는다.
(상태 4)
i+2라운드의 F함수에 대한 입력은, △Xi=(34, 00, 00, 00, 00, 00, 00, 00) 와, △Yi+1=(34, 00, 00, 00, 00, 00, 00, 00)의 배타적 논리합부(142)에서의 배타적 논리합 결과, 즉, 동일 데이터끼리의 배타적 논리합이고, 올 제로의 입력, △Xi+2=(00, 00, 00, 00, 00, 00, 00, 00)으로 되고, 그 결과, i+2라운드의 F함수로부터의 출력차분도, 올 제로의 출력차분, △Yi+2=(00, 00, 00, 00, 00, 00, 00, 00)으로 된다.
(상태 5)
i+3라운드의 F함수에 대한 입력은, △Xi+1=(98, c4, b4, d3, ac, 72, 0f, 32)와, 올 제로의 i+2라운드의 F함수 출력차분(△Yi+2)=(00, 00, 00, 00, 00, 00, 00, 00)의 배타적 논리합부(143)에서의 배타적 논리합 결과이고, i+3라운드의 F함수에 대한 입력(△Xi+3)=△Xi+1=(98, c4, b4, d3, ac, 72, 0f, 32)로 된다.
(상태 6)
i+3라운드의 F함수 출력차분이, △Yi+3=(43, 00, 00, 00, 00, 00, 00, 00)으로 되고, 올 제로의 △Xi+2=(00, 00, 00, 00, 00, 00, 00, 00)의 배타적 논리합부(144)에서의 배타적 논리합의 결과로서의 △Xi+4=△Yi+3=(43, 00, 00, 00, 00, 00, 00, 00)이 i+4라운드의 F함수 입력차분이 된다.
(상태 7)
i+4라운드의 액티브 S박스(Active S-box)(S1)의 출력차분이 i라운드에서의 액티브 S박스(Active S-box)(S1)의 출력차분과 일치한 경우, 즉, 도 6에 도시하는 바와 같이 i+-4라운드의 액티브 S박스((S1)의 출력차분이 b7로 되고, i라운드에서의 액티브 S박스(S1)의 출력차분(b7)과 일치한다. 이 데이터 상태는, 다수의 차분 입력 데이터를 설정함으로써, 이와 같은 데이터 상태를 얻을 수 있다는 것이다.
이 데이터 상태가 발생하면, i+4라운드의 F함수의 출력차분(△Yi+4)=(98, c4, b4, d3, ac, 72, 0f, 32)이, 2개 전의 라운드인 i+2라운드의 배타적 논리합부(143)의 출력차분(△Xi+3)=(98, c4, b4, d3, ac, 72, 0f, 32)과 일치하게 된다.
이 결과, 배타적 논리합부(145)에서는,
△Xi+3=(98, c4, b4, d3, ac, 72, 0f, 32)와,
△Yi+4=(98, c4, b4, d3, ac, 72, 0f, 32)의
동일한 값끼리의 배타적 논리합 연산이 실행되게 되고, 배타적 논리합 연산 결과로서 올 0의 값을 출력한다.
그 결과, 다음 단(라운드(i+5))에의 입력차분은, △Xi+5=(00, 00, 00, 00, 00, 00, 00, 00)으로서 설정된다.
이 라운드(i+5)에의 좌입력(△Xi+5)=(00, 00, 00, 00, 00, 00, 00, 00)은, 라운드(i)에의 좌입력(△Xi-1)=(00, 00, 00, 00, 00, 00, 00, 00)과 마찬가지로 올 제로이고, 라운드(i+5) 이후의 라운드에서도, 라운드(i 내지 i+4)와 마찬가지 처리가 반복될 가능성이 있다.
이 결과, 라운드 수의 늘어남에 대해 액티브 S박스의 수가 증대하지 않고, 차분공격에 대한 강도가 그다지 늘어나지 않는다는 문제를 발생시킨다.
전술한 바와 같이, 차분해석(차분공격)에서는, 어떤 차분을 갖는 입력 데이터(평문)와 그 출력 데이터(암호문)를 다수 설정하여 이 대응을 해석함에 의해 각 라운드함수에서의 적용키를 해석하는 수법이고, 이 차분해석에서, 액티브 S박스의 수를 적게 할 수 있다면, 해석이 용이해지고, 해석 프로세스 수를 삭감할 수 있다.
상술한 도 6을 참조한 예에서, 오른쪽부터 왼쪽으로의 입력을 행하는 F함수, 즉, 제 i라운드와 제 i+2라운드, 제 i+4라운드만을 액티브 S박스 산출 처리 대상 라운드로서 본 경우, 액티브 S박스 수는, 제 i라운드=1, 제 i+2라운드=0, 제 i+4라운드=1의 합계 불과 2이고, 왼쪽부터 오른쪽으로 입력을 행하는 F함수, 즉 제 i+1라운드 및 제 i+3라운드에서는 액티브 S박스 수가 8인 것이지만, 동시차분 캔슬에 의해 제 i+5라운드에서의 액티브 S박스 수가 0으로 되어 버리기 때문에, 차분해석에 의한 각 S박스의 비선형변환 처리의 해석, 및, F함수에 대한 입력 라운드키의 해석 처리가 비교적, 용이해진다.
도 6을 참조한 예에서는, 제 1의 S박스(S1)만이 액티브 S박스인 패턴의 발생 상태를 제시하였지만, 그 밖의 S박스(S2 내지 S8)에 관해서도, 차분해석의 입력 데이터의 설정에 의해, 각 S박스만을 액티브 S박스로 한 설정이 가능하고, 이와 같은 차분해석 프로세스를 실행함에 의해, 각 S박스의 비선형변환 처리의 해석, 또한 F함수에 대해 입력되는 라운드키의 해석이 가능해진다.
도 4 및 도 6을 참조하여, 3 및 5라운드인 경우의 동시차분 캔슬의 발생예를 설명하였지만, 임의의 라운드 수로 일반화하여 동시차분 캔슬을 정의하면 이하와 같이 정의할 수 있다. 도 7을 참조하여, 임의의 라운드 수에서의 동시차분 캔슬의 정의에 관해 설명한다. 또한, 도 7은, 페이스텔(Feistel) 구조의 공통키 블록 암호를 실행하는 페이스텔(Feistel) 구조의 하나 걸러의 라운드(i, i+2, i+4, …, i+2j)를 도시하고 있다.
[정의]
페이스텔(Feistel) 구조의 라운드(i)에서의 입력차분의 반분(PL 또는 PR)이 0(도 7에서, △Xi=(00, 00, 00, 00, 00, 00, 00, 00))이고, 그것에 i+2j라운드(j=0, 1, 2, …)의 F함수의 출력차분이 배타적 논리합부에서 연산되어 가는 과정에 있어서, 어떤 라운드(i+2k)에서, 배타적 논리합의 결과가 0(도 7에서, △Xi+2j+1=(00, 00, 00, 00, 00, 00, 00, 00))이 된 경우를 "동시차분 캔슬"이라고 부른다.
그때, i, i+2, i+4, …, i+2k라운드의 F함수중에 존재하는 액티브 S박스(Active S-box)인 것을 "동시차분 캔슬을 발생시킨 액티브 S박스"라고 부르기로 하고, 벡터(A)의 비제로의 요소수를 허밍 웨이트(hw(A))라고 정의하면, 동시차분 캔슬을 발생시키는 액티브 S박스의 수(a)는, 이하의 식으로서 나타낼 수 있다.
[수식 1]
Figure 112007068673584-PCT00001
전술한 3라운드, 5라운드에서의 예에서는 모두 동시차분 캔슬을 발생시킨 액티브 S박스 수는 2, 즉 a=2이다.
전술한 바와 같이, 공통키 블록 암호에서의 차분공격에 대한 강도 지표의 하나가 암호화 함수 전체에서의 액티브 S박스의 최소수가고, 액티브 S박스 수의 최소수가 클수록 차분공격에 대한 내성이 높다고 판단된다.
그러나, DES 알고리즘과 같이 같은 선형변환행렬을 모든 단의 F함수에 이용하는 구성에서는, 도 4, 도 6을 참조하여 설명한 바와 같이, 불과 2개의 액티브 S박스에 의해 동시차분 캔슬이 발생하여 버릴 가능성이 있다. 그와 같은 성질이 있기 때문에 라운드 수의 늘어남에 대해 액티브 S박스의 최소수가 충분히 증대하지 않고, 차분공격에 대한 강도가 그다지 늘어나지 않는다는 문제가 있다.
[2. 공통키 블록 암호 알고리즘에서의 선형해석 처리]
차분해석 처리는, 상술한 바와 같이, 해석의 실행자가 일정한 차분을 갖는 입력 데이터(평문)를 준비하고, 그 대응하는 출력 데이터(암호문)를 해석하는 것이 필요해진다. 선형해석 처리는, 일정한 차분을 갖는 입력 데이터(평문)를 준비할 필요는 없고, 소정량 이상의 입력 데이터(평문)와 대응하는 출력 데이터(암호문)에 의거하여 해석을 행한다.
전술한 바와 같이, 공통키 블록 암호 알고리즘에서는 비선형변환부로서의 S박스를 가지며, 입력 데이터(평문)와 대응하는 출력 데이터(암호문)와의 선형 관계는 없지만, 선형해석에서는, 이 S박스의 입출력을 선형 근사하고, 다수의 입력 데이터(평문)와 대응하는 출력 데이터(암호문)의 구성 비트 값의 선형 관계를 해석하고, 후보가 되는 키를 조여들어감에 의해 해석을 행한다. 선형해석에서는, 특정한 차분을 갖고 입력 데이터를 준비하는 것이 필요하지 않고, 다수의 평문과 대응 암호문을 준비함으로써, 해석이 가능하게 된다.
[3. 내성을 향상시킨 암호처리 알고리즘 구성예]
다음에, 본 발명의 출원인이 앞서 제안한 암호 처리 알고리즘에 관해 설명한 다. 이하에서 설명하는 암호처리 알고리즘은, 본 출원과 동일 출원인에 의한 특허출원, 일본특원2003-339634, 및 일본특원2004-256465에서 설명하고 있는 알고리즘이고, 상술한 선형해석, 차분해석 등의 공격에 대한 내성을 향상시킨 구성, 즉, 키 해석의 곤란성을 높이고, 안전성을 향상시킨 구성을 갖는다.
이하에서 설명하는 암호처리 알고리즘의 하나의 특징은, 종래의 DES 알고리즘과 같이 각 라운드의 F함수에 구성되는 선형변환부에 공통의 처리(변환행렬)를 적용한 구성으로 하기 않고, 복수의 다른 정방MDS(Maximum Distance Separable)행렬을 설정한 구성으로 한 것이다. 구체적으로는, 적어도 연속하는 짝수 라운드 및 연속하는 홀수 라운드의 각각에서 다른 정방MDS행렬을 적용한 선형변환 처리를 실행하는 구성을 갖는다.
이 암호처리 알고리즘은, 정방MDS(Maximum Distance Separable)행렬의 성질을 이용하고, 적은 액티브 S박스에 의거한 동시차분 캔슬이 일어나지 않는, 또는 일어나기 어려운 구조를 실현하고, 액티브 S박스의 최소수를 증대시키고, 차분공격에 대해 보다 강한 공통키 블록 암호처리를 실현한다. 또는, 기지 평문 공격으로서 행하여지는 선형해석에 관한 곤란성도 높인 구성을 갖는다.
이 암호처리 알고리즘은, 도 1, 2를 참조하여 설명한 SPN형의 F함수를 갖는 Feistel 구조라고 불리는 대표적인 공통키 블록 암호의 구조, 즉, 비선형변환부 및 선형변환부를 갖는 SPN형의 F함수의 복수 라운드에 걸치는 단순한 반복에 의해, 평문을 암호문으로 변환하는, 또는 암호문을 평문 변환하는 구조를 적용하고 있다.
예를 들면, 평문의 길이를 2mn비트(단, m, n는 함께 정수)로 하여, 2mn비트 의 평문을, mn비트의 2개의 데이터(PL(Plain-Left), PR(Plain-Right))로 분할하고, 이것을 입력치로 하여, 각 라운드에서, F함수를 실행시키는 것이고, F함수는, 도 2를 참조하여 설명한 바와 같이, S박스로 이루어지는 비선형변환부와, 선형변환부를 접속한 SPN형을 갖는 F함수이다.
이 암호처리 알고리즘에서는, F함수중의 선형변환부에서 적용하는 선형변환 처리를 위한 행렬로서, 복수의 다른 정방MDS(Maximum Distance Separable)행렬로부터 선택된 행렬을 각 라운드의 F함수의 선형변환부에서 적용하는 행렬로서 설정한다. 구체적으로는, 적어도 연속하는 짝수 라운드 및 연속하는 홀수 라운드의 각각에서 다른 정방MDS행렬을 적용한다.
정방MDS행렬에 관해 설명한다. 정방MDS행렬이란 이하의 (a), (b)의 성질을 충족시키는 행렬을 말한다.
(a) 정방행렬이다
(b) 행렬로 포함되는 모든 부분행렬(submatrix)의 행렬식(determinant)가 0이 아니다. 즉, det(submatrix)≠0
상기 (a), (b)의 조건을 만족하는 행렬을 정방MDS행렬이라고 부른다.
공통키 블록 암호의 각 라운드에서 실행하는 F함수에 대한 입출력 비트 길이가 m×n(m, n : 정수)비트이고, F함수 내에 구성되는 비선형변환부가 n비트의 입출력을 갖는 m개의 S박스에 의해 구성되고, 선형변환부가 n차의 기약 다항식으로 정의되는 2의 확대체(GF)(2n)상의 원을 요소로서 갖는 m차의 정방행렬에 의거한 선형 변환 처리를 실행하는 경우의, 정방MDS행렬의 한 예를 도 8에 도시한다. 도 8에 도시하는 정방MDS행렬의 예는, n=8, m=8의 정방MDS행렬의 예이다.
상기 (a), (b)를 만족하는 정방MDS행렬은, 벡터(A)의 비제로의 요소수를 허밍 웨이트(hw(A))로 하고, M을 m차의 정방MDS행렬로 하고, x를 정방MDS행렬(M)에의 입력 벡터로 한 경우, 이하의 부등식(식 1)을 충족시키게 된다.
hw(x)+hw(Mx)≥m+1 ………… (식 1)
상기 식(식 1)은, 정방MDS행렬(M)에 의해 선형변환되는 입력 데이터(X)의 비제로의 요소수(hw(x))와, 정방MDS행렬(M)에 의해 선형변환된 출력 데이터(Mx)의 비제로의 요소수(hw(Mx))의 총수가, 정방MDS행렬의 차수(m)보다 크게 된다는 것을 의미하고 있다.
또한, 정방MDS행렬이라는 이름은 정방MDS-code(Maximum Distance Separable Code)의 생성 행렬의 표준형의 우반분이 상기 조건을 만족하고 있기 때문에 이름이 붙여진 것이다.
하나의 행렬을 모든 F함수에 조립한다는 종래의 구성에서도 선형변환행렬에 정방MDS행렬을 이용함으로써, 정방MDS행렬이 아닌 행렬을 이용하는 경우에 비하여 액티브 S박스 수의 최소수를 비교적 고수준으로 유지할 수 있다는 것은 알려져 있다.
본 알고리즘에서는, 각 라운드의 F함수에는 정방MDS행렬의 조건을 충족시키는 행렬을 이용하고, 또한 라운드마다 다른 행렬을 설정하는 방법을 제안한다. 구체적으로는, 적어도 연속하는 짝수 라운드 및 연속하는 홀수 라운드의 각각에서 다 른 정방MDS행렬을 적용한다.
이하에, 단수(라운드 수)가 2r(r는 정수)인 Feistel형 공통키 블록 암호에서, 차분공격에 대한 내성을 보다 높인 복수의 구성예에 관해 설명한다.
또한, 이하의 설명에서, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성의 j단째의 F함수에서의 선형변환부에서 적용하는 선형변환행렬을 MLTj로서 나타내는 것으로 한다.
본 알고리즘의 구성에서는, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성에서의 각 단의 F함수중의 선형변환부에서 적용하는 선형변환 처리를 위한 행렬로서, 복수의 다른 정방MDS(Maximum Distance Separable)행렬로부터 선택된 행렬을 각 라운드의 F함수의 선형변환부에서 적용하는 행렬로서 설정한다. 구체적으로는, 적어도 연속하는 짝수 라운드 및 연속하는 홀수 라운드의 각각에서 다른 정방MDS행렬을 적용한다.
구체적으로는, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성에 대응하여, r 이하의 q개의 정방MDS행렬 : L1, L2, ‥, Lq를 생성하고, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성에서의 홀수단째의 F함수중의 선형변환부에서 적용하는 선형변환 처리를 위한 행렬로서, 상위단의 F함수부터 차례로 L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정한다. 또한, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q 전의 정방MDS행렬을 반복 설정한다.
본 설정을 적용한 구성예를 도 9에 도시한다. 도 9는, 단수(라운드 수)가 2r=12, 즉 r=6의 Feistel형 공통키 블록 암호처리 구성으로 한 경우, q=3, 즉, 12단의 라운드 수를 갖는 Feistel형 공통키 블록 암호처리 구성에서 3종류의 다른 정방MDS행렬을 배치한 구성예로서, 각 라운드의 F함수부의 선형변환부에 설정하는 정방MDS행렬(L1, L2, L3)을 도시하고 있다.
도 9의 구성은, 2mn비트의, 평문을, mn비트의 2개의 데이터(PL(Plain-Left), PR(Plain-Right))로 하고, 이것을 입력치로 하여, 각 라운드에서, F함수를 실행시키는 구성이고, 제 1라운드의 F함수(401) 및 그 밖의 라운드의 F함수도, 모두 도 2를 참조하여 설명한 바와 같이, S박스로 이루어지는 비선형변환부와, 선형변환부를 접속한 SPN형을 갖는 F함수이다.
도 9의 설정예는 r=6, q=3이고, 각 F함수 내에 나타내는 기호 Ln은 정방MDS행렬(402)을 나타내고 있다. 즉, L1, L2, L3은, 각각 다른 3종류의 정방MDS행렬을 나타내고, 각 F함수의 선형변환부에서 선형변환 처리에 적용한 정방MDS행렬을 나타내고 있다.
선형변환행렬(MLTj)의 설정 처리 시퀀스에 관해, 도 10을 참조하여 설명한다.
[스텝 S21]
라운드 수(2r)의 반수(半數)(r)에 대해 r 이하의 수(q), 즉,
q≤r이 되는 수(q)를 선택한다. 단, q는 2 이상의 정수이다.
[스텝 S22]
q개의 GF(2n)상의 m차 정방MDS행렬(L1, L2, …, Lq)을 생성한다. q개의 GF(2n)상의 m차 정방MDS행렬(L1, L2, …, Lq)의 생성 처리 수법에 관한 상세한 것은, 후단에서 설명한다.
스텝 S22에서, q개의 GF(2n)상의 m차 정방MDS행렬(L1, L2, …, Lq)을 생성한 후, 다음에, 이하의 정방MDS행렬 설정 처리를 실행한다.
[스텝 S23]
2i-1(1≤i≤r)단째의 선형변환행렬(MLT2i -1)에 L(i-1 modq )+1을 설정한다.
[스텝 S24]
2i(1≤i≤r)단째의 선형변환행렬에 MLT2i에 MLT2r -2i+1을 설정한다.
예를 들면, 도 9에 도시하는 구성예, 즉, 12단(r=6)이고 q=3으로 한 경우는,
MLT1=L1, MLT2=L3
MLT3=L2, MLT4=L2
MLT5=L3, MLT6=L1
MLT7=L1. MLT8=L3
MLT9=L2. MMLT10=L2
MLT11=L3. MMLT12=L1
의 설정으로 된다.
이와 같이, 이 알고리즘을 적용한 암호처리 장치에서는, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성에 대응하여, r 이하의 q개의 정방MDS행렬 : L1, L2, ‥, Lq를 생성하고, 홀수단째에 관해서는 상위단의 F함수부터 차례로 L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정하는 구성으로 하고 있다.
다음에, 도 10의 처리 플로에서의 스텝 S22의 q개의 GF(2n)상의 m차 정방MDS행렬(L1, L2, …, Lq)의 생성 처리 및 F함수에의 설정 구성의 상세에 관해 설명한다. 또한, 설명은 이하의 항목에 따라 행한다.
(3-a) 차분공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예
(3-b) 선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예
(3-c) 차분공격 및 선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예
[(3-a) 차분공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예]
우선, 차분공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예로서, 3개의 처리예(a1, a2, a3)에 관해 설명한다.
(처리예(a1))
차분공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예의 제 1의 예에 관해 설명한다. 우선, 도 11에 도시하는 플로우 차트를 참조하여 정방MDS행렬의 생성 처리에 관해 설명한다.
[스텝 S101]
입력 : 필요한 정방MDS의 개수(q), 확대 차수 : n, 행렬의 사이즈 : m으로 하고,
GF(2n)상의, q개의 m차 정방MDS행렬(L1, L2, …, Lq)을 랜덤하게 생성한다. 또한, 도 11에 도시하는 플로우에서는, MDS의 개수(q)=6, 확대 차수 : n=8, 행렬의 사이즈 : m=8인 경우의 처리예로서 나타내고 있다.
[스텝 S102]
q개의 m차 정방MDS행렬(L1, L2, …, Lq)에 포함되는 qm개의 열의 임의의 m개를 취출한 때에, 선형 독립으로 되어 있는지의 여부를 체크한다. 체크에 통과하면 스텝 S103으로 진행한다. 그렇지 않은 경우는 스텝 S101로 되돌아온다.
[스텝 S103]
q개의 m차 정방MDS행렬(L1, L2, …, Lq)을, 라운드 수(2r)인 Feistel형 공통키 블록 암호에 적용하는 정방MDS행렬로서 출력한다.
이상의 프로세스에 의해, q개의 m차 정방MDS행렬(L1, L2, …, Lq)이 생성된다. 또한, q≤r이다.
이와 같이 하여 생성한 q개의 m차 정방MDS행렬(L1, L2, …, Lq)을, 우선, 도 10을 참조하여 설명한, [스텝 S23], [스텝 S24]의 처리에 따라, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성의 각 단의 F함수부의 선형변환부의 선형변환 처리에 적용하는 행렬로서 설정한다. 즉, 홀수단째에 관해서는 상위단부터 차례로 L1, L2, ‥, Lq, L1, L2 ‥로서 q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정한다.
이와 같이, 짝수 라운드의 정방MDS행렬과 홀수 라운드의 정방MDS행형을 서로 역순으로 배치함에 의해, 암호화 처리와 복호 처리는 키의 순서를 교체하는 처리를 제외하고 동일한 것이 보증된다.
본 구성에 의해,
(a) 각 F함수의 선형변환행렬은 정방MDS인 것,
(b) 암호화 함수 내의 홀수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립인 것,
(c) 짝수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립인 것,
이들 (a) 내지 (c)가 보증되기 때문에, 복수단의 라운드 수를 갖는 Feistel형 공통키 블록 암호처리 구성에서, 연속하는 2q-1라운드에서, m개 이하의 액티브 S박스의 기여에 의한 동시차분 캔슬은 발생하지 않는 것이 보증된다. 따라서, 암호화 함수 전체의 액티브 S박스 수의 최소치가 증대한다.
이와 같이, 본 처리예에 의해, 공통키 블록 암호에서의 차분공격에 대한 강 도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 한 것이 가능하게 되고, 결과로서, 차분해석(차분공격)을 행한 경우의 액티브 S박스의 수가 증대하고, 해석의 곤란성이 높아지게 된다. 따라서, 키의 해석이 곤란한 안전성이 높은 암호 처리가 실현된다.
(처리예(a2))
차분공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예의 제 2의 예에 관해 설명한다. 도 12의 플로우 차트를 참조하여 정방MDS행렬의 생성 처리에 관해 설명한다.
[스텝 S201]
입력 : 필요한 MDS의 개수(q), 확대 차수 : n, 행렬의 사이즈 : m으로 하고,
GF(2n)상에서, q개의 m차 정방MDS행렬(L1, L2, …, Lq)를 랜덤하게 생성한다. 또한, 도 12에 도시하는 플로우에서는, MDS의 개수(q)=6, 확대 차수 : n=8, 행렬의 사이즈 : m=8인 경우의 처리예로서 나타내고 있다.
[스텝 S202]
q개의 m차 정방MDS행렬(L1, L2, …, Lq)에 포함되는 qm개의 열의 임의의 m개를 취출한 때에, 정방MDS행렬로 되어 있는지의 여부를 체크한다. 체크에 통과하면 스텝 S203으로 진행한다. 그렇지 않은 경우는 스텝 S201로 되돌아온다.
또한, 정방MDS행렬이란, 전술한 바와 같이 이하의 성질을 충족시키는 행렬을 말한다.
(a) 정방행렬이다
(b) 행렬에 포함되는 모든 부분행렬(submatrix)의 행렬식(determinant)이 0이 아니다. 즉, det(submatrix)≠0
[스텝 S203]
q개의 m차 정방MDS행렬(L1, L2, …, Lq)을, 라운드 수(2r)인 Feistel형 공통키 블록 암호에 적용하는 정방MDS행렬로서 출력한다.
이상의 프로세스에 의해, q개의 m차 정방MDS행렬(L1, L2, …, Lq)이 생성된다. 또한, q≤r이다.
전술한 처리예(a1)에서의 정방MDS행렬 생성 처리에서는, 도 11의 처리 시퀀스에서 설명한 바와 같이, 스텝 S102에서, q개의 m차 정방MDS행렬(L1, L2, …, Lq)에 포함되는 qm개의 열의 임의의 m개를 취출한 때의 선형 독립성을 판정하였지만, 이 처리예(a2)에서의 정방MDS행렬 생성 처리에서는, q개의 m차 정방MDS행렬(L1, L2, …, Lq)에 포함되는 qm개의 열의 임의의 m개를 취출한 때 정방MDS행렬로 되어 있는지의 여부를 체크한다. 즉, 보다 엄격한 체크가 실행되게 된다.
이 도 12에 도시하는 처리 시퀀스에 따른 정방MDS행렬 생성 처리에 의해 생성된 q개의 m차 정방MDS행렬(L1, L2, …, Lq)이, 앞서 설명한 처리예(a1)와 마찬가지로 우선, 도 10을 참조하여 설명한, [스텝 S23], [스텝 S24]의 처리에 따라, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성의 각 단의 F함수부의 선형변환부의 선형변환 처리에 적용한 행렬로서 설정된다. 즉, 홀수단째에 관해서는 상위단부터 차례로 L1, L2, ‥, Lq, L1, L2 ‥로서 q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, IJ, L2 ‥로서, q개의 정방MDS행렬을 반복 설정한다.
이와 같이, 짝수 라운드의 정방MDS행렬과 홀수 라운드의 정방MDS행렬을 서로 역순으로 배치함에 의해, 암호화 처리와 복호 처리는 키의 순서를 교체하는 처리를 제외하고 동일한 것이 보증된다.
본 구성에 의해,
(a) 각 F함수의 선형변환행렬은 정방MDS인 것,
(b) 암호화 함수 내의 홀수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 정방MDS행렬인 것,
(c) 짝수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 정방MDS행렬인 것,
이들 (a) 내지 (c)가 보증되기 때문에, 복수단의 라운드 수를 갖는 Feistel형 공통키 블록 암호처리 구성에 있어서, 연속하는 2q-1라운드에서, m개 이하의 액티브 S박스의 기여에 의한 동시차분 캔슬은 발생하지 않는 것이 보증된다.
또한,
(d) 정방MDS의 성질로부터, a개(a≤m)의 액티브 S박스의 기여에 의해 얻어지는 차분치에서의 비제로의 요소수는 m+1-a개 이상으로 되는 것이 보증된다. 따라서, 암호화 함수 전체의 액티브 S박스 수의 최소치가 증대한다.
이와 같이, 본 처리예에 의해, 공통키 블록 암호에서의 차분공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것 이 가능하게 되고, 결과로서, 차분해석(차분공격)을 행한 경우의 액티브 S박스의 수가 증대하고, 해석의 수난성이 높아지게 된다. 따라서, 키의 해석이 곤란한 안전성이 높은 암호처리가 실현된다.
(처리예(a3))
차분공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예의 제 3의 예에 관해 설명한다. 도 13의 플로우 차트를 참조하여 정방MDS행렬의 생성 처리에 관해 설명한다.
[스텝 S301]
입력 : 필요한 MDS의 개수(q), 확대 차수 : n, 행렬의 사이즈 : m으로 하고,
GF(2n)상에서, 1개의 qm차 정방MDS행렬(M)을 생성한다. 또한, 도 13에 도시하는 플로우에서는, MDS의 개수(q)=6, 확대 차수 : n=8, 행렬의 사이즈 : m=8인 경우의 처리예로서 나타내고 있다.
[스텝 S302]
1개의 qm차 정방MDS행렬(M)로부터 m개의 행을 임의로 선택 추출하고, m행, qm렬의 행렬(M')을 구성한다.
[스텝 S303]
m행, qm렬의 행렬(M')에 포함되는 qm개의 열 벡터를 중복되는 일 없이 m개의 열 벡터로 이루어지는 q개의 그룹으로 임의로 분할하고, 각각의 그룹에 포함되는 열 벡터로부터 m차의 정방행렬(L1, L2, …, Lq)을, 라운드 수(2r)인 Feistel형 공 통키 블록 암호에 적용하는 정방MDS행렬로서 출력한다.
이상의 프로세스에 의해, q개의 m차 정방MDS행렬(L1, L2, …, Lq)이 생성된다. 또한, q≤r이다.
처리예(a3)에서의 정방MDS행렬 생성 수법 3에 관해, 도 14를 참조하여, 보다 구체적으로 설명한다.
[스텝 S301]
GF(2n)상에서, 1개의 qm차 정방MDS행렬(M)을 생성한다. 도 14에 도시하는 바와 같이, qm×qm의 정방MDS행렬(M)을 생성한다. 또한, 이 스텝 S301에서 생성하는 행렬(M)의 차수는 qm차보다 큰 것이라도 좋다.
[스텝 S302]
도 14에 도시하는 바와 같이, qm차 정방MDS행렬(M)로부터 m개의 행을 임의로 선택 추출하고, m행, qm렬의 행렬(M')을 구성한다. 또한, 도면에 도시하는 예에서는, 연속하는 m개의 행을 선택 추출한 예로서 나타내고 있지만, m차 정방MDS행렬(M)을 구성하는 임의의 이간(離間)한 행을 m개 선택 추출하여, m행, qm렬의 행렬(M')을 구성하여도 좋다.
[스텝 S303]
m행, qm렬의 행렬(M')에 포함되는 qm개의 열 벡터를 중복되는 일 없이 m개의 열 벡터로 이루어지는 x개의 그룹으로 임의로 분할하고, 각각의 그룹에 포함되는 열 벡터로부터 m차의 정방행렬(L1, L2, …, Lx)을 생성한다.
도 13, 도 14를 참조하여 설명한 처리 시퀀스에 따른 정방MDS행렬 생성 처리에 의해 생성된 q개의 m차 정방MDS행렬(L1, L2, …, Lq)이, 앞서 설명한 처리예(a1, a2)와 마찬가지로 앞서, 도 10을 참조하여 설명한, [스텝 S23], [스텝 S24]의 처리에 따라, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성의 각 단의 F함수부의 선형변환부의 선형변환 처리에 적용하는 행렬로서 설정된다. 즉, 홀수단째에 관해서는 상위단부터 차례로 L1, L2, ‥, Lq, L1, L2, ‥로서 q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정한다.
이와 같이, 짝수 라운드의 정방MDS행렬과 홀수 라운드의 정방MDS행렬을 서로 역순으로 배치함에 의해, 암호화 처리와 복호 처리는 키의 순서를 교체하는 처리를 제외하고 동일한 것이 보증된다.
본 구성에 의해,
(a) 각 F함수의 선형변환행렬은 정방MDS인 것,
(b) 암호화 함수 내의 홀수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립인 것,
(c) 짝수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립인 것,
이들 (a) 내지 (c)가 보증되기 때문에, 복수단의 라운드 수를 갖는 Feistel형 공통키 블록 암호 처리 구성에 있어서, 연속하는 2q-1라운드에서, m개 이하의 액티브 S박스의 기여에 의한 동시차분 캔슬은 발생하지 않는 것이 보증된다.
또한,
(d) 정방MDS의 성질로부터, a개(a≤m)의 액티브 S박스의 기여에 의해 얻어지는 차분치에서의 비제로의 요소수는 m+1-a개 이상으로 되는 것이 보증된다. 따라서, 암호화 함수 전체의 액티브 S박스 수의 최소치가 증대한다.
또한, 처리예(a3)가 특히 효과를 발휘하는 것은, m, r이 커지고, 전술한 처리예(a1, a2)의 행렬 결정 처리 방식에 걸리는 시간적 비용이 막대하게 되고, 현실적인 시간 내에 행렬을 결정하는 것이 곤란한 경우이다. 그와 같은 경우에도 본 처리예(a3)의 정방MDS행렬 생성 수법이라면 비교적 단시간에서의 행렬 생성 처리가 가능해진다.
이것은, 처리예(a3)에서는, 커다란 m, r에 대해서도 현실적인 시간에 충분히 처리 가능한 방식, 예를 들면 리드솔로몬(Reed-Solomon) 부호의 생성 행렬의 생성법을 적용하는 것이 가능하게 되기 때문이다.
이 처리예(a3)에서도, 상술한 바와 같이, 공통키 블록 암호에서의 차분공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능하게 되고, 결과로서, 차분해석(차분공격)을 행한 경우의 액티브 S박스의 수가 증대하여, 해석의 곤란성이 높아지게 된다. 따라서, 키의 해석이 곤란한 안전성이 높은 암호처리가 실현된다.
[(3-b) 선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예]
다음에, 선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수 에의 설정예로서, 2개의 처리예(b1, b2)에 관해 설명한다.
(처리예(b1))
선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예의 제 1의 예에 관해 설명한다. 도 15에 도시하는 플로우 차트를 참조하여 정방MDS행렬의 생성 처리에 관해 설명한다.
[스텝 S401]
입력 : 필요한 정방MDS의 개수(q), 확대 차수 : n, 행렬의 사이즈 : m으로 하고,
GF(2n)상에서, q개의 m차 정방MDS행렬(M1, M2, …, Mq)을 랜덤하게 생성한다. 또한, 도 14에 도시하는 플로우에서는, 정방MDS의 개수(q)=6, 확대 차수 : n=8, 행렬의 사이즈 : m=8인 경우의 처리예로서 나타내고 있다.
[스텝 S402]
q개의 m차 정방MDS행렬(M1, M2, …, Mq)의 역행렬(M1-1, M2-1, …, M1-1)을 산출하고, 이웃하는 2개의 역행렬에 포함되는 2m의 행 벡터로부터 임의의 m개의 행 벡터를 취출한 때에, 선형 독립으로 되어 있는지의 여부를 체크한다. 도 15중 tR은, 행 벡터의 전치 벡터를 나타내는 것이다. 체크에 통과하면 스텝 S403으로 진행한다. 그렇지 않은 경우는 스텝 S401로 되돌아온다. 단, M1- 1와 Mq - 1는, 이웃하는 행렬로 한다.
[스텝 S403]
q개의 m차 정방MDS행렬(L1, L2, …, Lq)을, 라운드 수(2r)인 Feistel형 공통키 블록 암호에 적용하는 정방MDS행렬로서 출력한다.
이상의 프로세스에 의해, q개의 m차 정방MDS행렬(L1, L2, …, Lq)이 생성된다. 또한, q≤r이다.
이와 같이 하여 생성한 q개의 m차 정방MDS행렬(L1, L2, …, Lq)을, 앞서, 도 10을 참조하여 설명한, [스텝 S23], [스텝 S24]의 처리에 따라, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성의 각 단의 F함수부의 선형변환부의 선형변환 처리에 적용하는 행렬로서 설정한다. 즉, 홀수단째에 관해서는 상위단부터 차례로 L1, L2, ‥, Lq, L1, L2 ‥로서 q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정한다.
이와 같이, 짝수 라운드의 정방MDS행렬과 홀수 라운드의 정방MDS행렬을 서로 역순으로 배치함에 의해, 암호화 처리와 복호 처리는 키의 순서를 교체하는 처리를 제외하고 동일한 것이 보증된다.
본 구성에 의해,
(a) 각 F함수의 선형변환행렬은 정방MDS인 것,
(b) 암호화 함수 내의 홀수 라운드 내에 연속하여 포함되는 선형변환행렬, 및 짝수 라운드 내에 연속하여 포함되는 선형변환행렬의 역행렬의 임의의 m개의 열 벡터는 독립인 것이 보증된다.
이로써, 선형공격에서의 선형 근사에 의한 해석 곤란성을 높이는 것이 가능해지고, 해석의 곤란성, 즉 키의 해석이 곤란한 안전성의 높은 암호처리가 실현된다.
(처리예(b2))
선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예의 제 2의 예에 관해 설명한다. 도 16에 도시하는 플로우 차트를 참조하여 정방MDS행렬의 생성 처리에 관해 설명한다.
[스텝 S501]
입력 : 필요한 정방MDS의 개수(q), 확대 차수 : n, 행렬의 사이즈 : m으로 하고,
GF(2n)상에서, q개의 m차 정방MDS행렬(M1, M2, …, Mq)을 랜덤하게 생성한다. 또한, 도 16에 도시하는 플로우에서는, 정방MDS의 개수(q)=6, 확대 차수 : n=8, 행렬의 사이즈 : m=8인 경우의 처리예로서 나타내고 있다.
[스텝 S502]
q개의 m차 정방MDS행렬(M1, M2, …, Mq)의 역행렬(M1-1, M2-1, …, Mq-1)을 산출하고, 이웃하는 2개의 역행렬에 포함되는 2m의 행 벡터로부터 임의의 m개의 행 벡터를 취출한 때에, 정방MDS행렬로 되어 있는지의 여부를 체크한다. 도 16중, tR는, 행 벡터의 전치 벡터를 나타내는 것이다. 체크에 통과하면 스텝 S503으로 진행 한다. 그렇지 않은 경우는 스텝 S401로 되돌아온다. 단, M1-1과 Mq-1은, 이웃하는 행렬로 한다.
또한, 정방MDS행렬이란, 전술한 바와 같이 이하의 성질을 충족시키는 행렬을 말한다.
(a) 정방행렬이다
(b) 행렬에 포함되는 모든 부분행렬(submatrix)의 행렬식(determinant)이 0이 아니다. 즉, det(submatrix)≠0
[스텝 S503]
q개의 m차 정방MDS행렬(L1, L2, …, Lq)을, 라운드 수(2r)인 Feistel형 공통키 블록 암호에 적용하는 정방MDS행렬로서 출력한다.
이상의 프로세스에 의해, q개의 m차 정방MDS행렬(L1, L2, …, Lq)이 생성된다. 또한, q≤r이다.
전술한 처리예(b1)에서의 정방MDS행렬 생성 처리에서는, 도 15의 처리 시퀀스에서 설명한 바와 같이, 스텝 S402에서, q개의 m차 정방MDS행렬의 M1, M2, …, Mq의 역행렬(M1-1, M2-1, …, Mq-1)에 포함되는 qm개의 열의 임의의 m개를 취출한 때의 선형 독립성을 판정하였지만, 이 처리예(b2)에서의 정방MDS행렬 생성 처리에서는, q개의 m차 정방MDS행렬의 M1, M2, …, Mq의 역행렬(M1-1, M2-1, …, Mq-1)에 포함되는 qm개의 열의 임의의 m개를 취출한 때 정방MDS행렬로 되어 있는지의 여부를 체크한다. 즉, 보다 엄격한 체크가 실행되게 된다.
이 도 16에 도시하는 처리 시퀀스에 따른 정방MDS행렬 생성 처리에 의해 생성된 q개의 m차 정방MDS행렬(L1, L2, …, Lq)이, 앞서 설명한 처리예(b1)와 마찬가지로 우선, 도 10을 참조하여 설명한, [스텝 S23], [스텝 S24]의 처리에 따라, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성의 각 단의 F함수부의 선형변환부의 선형변환 처리에 적용하는 행렬로서 설정된다. 즉, 홀수단째에 관해서는 상위단부터 차례로 L1, L2, ‥, Lq, L1, L2 ‥로서 q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정한다.
이와 같이, 짝수 라운드의 정방MDS행렬과 홀수 라운드의 정방MDS행렬을 서로 역순으로 배치함에 의해, 암호화 처리와 복호 처리는 키의 순서를 교체하는 처리를 제외하고 동일한 것이 보증된다.
본 구성에 의해,
(a) 각 F함수의 선형변환행렬은 정방MDS인 것,
(b) 암호화 함수 내의 홀수 라운드 내에 연속하여 포함되는 선형변환행렬, 및 짝수 라운드 내에 연속하여 포함되는 선형변환행렬의 역행렬의 임의의 m개의 열 벡터가 정방MDS행렬로 되는 것,
이 보증된다. 이로써, 선형공격에서의 선형 근사에 의한 해석 곤란성을 높이는 것이 가능하게 되고, 해석의 곤란성, 즉 키의 해석이 곤란한 안전성이 높은 암호처리가 실현된다.
[(3-c) 차분공격 및 선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생 성 및 F함수에의 설정예]
다음에, 차분공격 및 선형공격에 대한 내성 향상을 실현한 정방MDS행렬의 생성 및 F함수에의 설정예에 관해 설명한다.
차분공격에 대한 내성을 갖는 암호처리 알고리즘은, 앞서, 도 10 내지 도 13을 참조하여 설명한 처리, 즉, F함수의 선형 처리부에서의 선형변환에 적용하는 정방MDS행렬을 전술한 처리예(a1(도 11) 내지 a3(도 13))의 어느 하나의 처리를 적용하여 설정함으로써 실현된다. 또한, 선형공격에 대한 내성을 갖는 암호처리 알고리즘은, 앞서, 도 10, 및 도 14, 도 15를 참조하여 설명한 처리, 즉, F함수의 선형 처리부에서의 선형변환에 적용하는 정방MDS행렬을 전술한 처리예(b1(도 14), b2(도 15))의 어느 하나의 처리를 적용하여 설정함으로써 실현된다.
차분공격 및 선형공격에 대한 내성 향상을 실현한 정방MDS행렬은,
처리예(a1(도 11) 내지 a3(도 13))의 어느 하나의 처리와,
처리예(b1(도 14), b2(도 15))의 어느 하나의 처리를,
아울러서 실행하여 생성한 정방MDS행렬을, 도 10에서 설명한 [스텝 S23], [스텝 S24]의 처리에 따라, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성의 각 단의 F함수부의 선형변환부의 선형변환 처리에 적용하는 행렬로서 설정함으로써 실현된다.
즉,
처리예(a1)와 처리예(b1),
처리예(a1)와 처리예(b2),
처리예(a2)와 처리예(b1),
처리예(a2)와 처리예(b2),
처리예(a3)와 처리예(b1),
처리예(a3)와 처리예(b2),
의 어느 하나의 조합에 의해, q개의 정방MDS행렬을 생성하고, 2r인 Feistel형 공통키 블록 암호처리 구성의 각 단의 F함수부의 선형변환부의 선형변환 처리에 적용하는 행렬로서 설정한다. 홀수단째에 관해서는 상위단부터 차례로 L1, L2, ‥, Lq, L1, L2 ‥로서 q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정한다. 이 설정에 의해, 차분공격 및 선형공격에 대한 내성 향상을 실현한 암호처리가 가능해진다.
도 17을 참조하여, 차분공격 및 선형공격에 대한 내성 향상을 실현한 암호처리를 실현하기 위한 정방MDS행렬의 생성 처리의 한 예에 관해 설명한다. 이 처리는, 전술한 처리예(a2)와, 처리예(b2)의 조합이다.
[스텝 S601]
입력 : 필요한 정방MDS의 개수(q), 확대 차수 : n, 행렬의 사이즈 : m으로 하고,
GF(2n)상에서, q개의 m차 정방MDS행렬(M1, M2, …, Mq)을 랜덤하게 생성한다. 또한, 도 17에 도시하는 플로우에서는, 정방MDS의 개수(q)=6, 확대 차수 : n=8, 행렬의 사이즈 : m=8인 경우의 처리예로서 나타내고 있다.
[스텝 S602]
q개의 m차 정방MDS행렬(M1, M2, …, Mq)에 포함되는 qm개의 열의 임의의 m개를 취출한 때에, 정방MDS행렬로 되어 있는지의 여부를 체크한다. 체크에 통과하면 스텝 S603으로 진행한다. 그렇지 않은 경우는 스텝 S601로 되돌아온다.
또한, 정방MDS행렬이란, 전술한 바와 같이 이하의 성질을 충족시키는 행렬을 말한다.
(a) 정방행렬인
(b) 행렬에 포함되는 모든 부분행렬(submatrix)의 행렬식(determinant)이 0이 아닌, 즉, det(submatrix)≠0
[스텝 S603]
q개의 m차 정방MDS행렬(M1, M2, …, Mq)의 역행렬(M1-1, M2-1, …, Mq-1)을 산출하고, 이웃하는 2개의 역행렬에 포함되는 2m의 행 벡터로부터 임의의 m개의 행 벡터를 취출한 때에, 정방MDS행렬로 되어 있는지의 여부를 체크한다. 도 17중, tR은, 행 벡터의 전치 벡터를 나타내는 것이다. 체크에 통과하면 스텝 S604로 진행한다. 그렇지 않은 경우는 스텝 S601로 되돌아온다. 단, M1-1과 Mq-1은, 이웃하는 행렬로 한다.
[스텝 S604]
q개의 m차 정방MDS행렬(L1, L2, …, Lq)을, 라운드 수(2r)인 Feistel형 공통 키 블록 암호에 적용하는 정방MDS행렬로서 출력한다.
이상의 프로세스에 의해, q개의 m차 정방MDS행렬(L1, L2, …, Lq)이 생성된다. 또한, q≤r이다.
이 도 17에 도시하는 처리 시퀀스에 따른 정방MDS행렬 생성 처리에 의해 생성된 q개의 m차 정방MDS행렬(L1, L2, …, Lq)이, 앞서, 도 10을 참조하여 설명한, [스텝 S23], [스텝 S24]의 처리에 따라, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호 처리 구성의 각 단의 F함수부의 선형변환부의 선형변환 처리에 적용하는 행렬로서 설정된다. 즉, 홀수단째에 관해서는 상위단부터 차례로 L1, L2, ‥, Lq, L1, L2 ‥로서 q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정한다.
이와 같이, 짝수 라운드의 정방MDS행렬과 홀수 라운드의 정방MDS행렬을 서로 역순으로 배치함에 의해, 암호화 처리와 복호 처리는 키의 순서를 교체하는 처리를 제외하고 동일한 것이 보증된다.
본 구성에 의해,
(a) 각 F함수의 선형변환행렬은 정방MDS인 것,
(b) 암호화 함수 내의 홀수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 정방MDS행렬인 것,
(c) 짝수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 정방MDS행렬인 것,
이들 (a) 내지 (c)가 보증되기 때문에, 복수단의 라운드 수를 갖는 Feistel형 공통키 블록 암호처리 구성에 있어서, 연속하는 2q-1라운드에서, m개 이하의 액티브 S박스의 기여에 의한 동시차분 캔슬은 발생하지 않는 것이 보증된다.
또한,
(d) 정방 MUS의 성질로부터, a개(a≤m)의 액티브 S박스의 기여에 의해 얻어지는 차분치에서의 비제로의 요소수는 m+1-a개 이상이 되는 것이 보증된다. 따라서, 암호화 함수 전체의 액티브 S박스 수의 최소치가 증대한다.
또한,
(c) 암호화 함수 내의 홀수 라운드 내에 연속하여 포함되는 선형변환행렬, 및 짝수 라운드 내에 연속하여 포함되는 선형변환행렬의 역행렬의 임의의 m개의 열 벡터가 정방MDS행렬로 되는 것이 보증된다. 이로써, 선형공격에서의 선형 근사에 의한 해석 곤란성을 높이는 것이 가능해지고, 해석의 곤란성, 즉 키의 해석이 곤란한 안전성이 높은 암호처리가 실현된다.
이와 같이, 본 처리예에 의해, 차분공격 및 선형공격의 쌍방의 해석의 곤란성이 향상하고, 키의 해석이 곤란한 안전성이 높은 암호처리가 실현된다. 또한, 도 17에 도시한 예는, 전술한 바와 같이, 앞서 설명한 처리예(a2)와 처리예(b2)의 조합에 의한 정방MDS행렬의 생성예이지만, 그 밖에, 처리예(a1)와 처리예(b1), 처리예(a1)와 처리예(b2), 처리예(a2)와 처리예(b1), 처리예(a3)와 처리예(b1), 처리예(a3)와 처리예(b2)를 조합시켜서 q개의 정방MDS행렬의 생성을 행하고, 단수(라운드 수)가 2r인 Feistel형 공통키 블록 암호처리 구성의 각 단의 F함수부의 선형변 환부의 선형변환 처리에 적용하는 행렬로서, 홀수단째에 관해서는 상위단부터 차례로 L1, L2, ‥, Lq, L1, L2, ‥, 로서 q개의 정방MDS행렬을 반복 설정하고, 짝수단의 F함수에 관해서는, 하위단의 F함수부터 차례로, L1, L2, ‥, Lq, L1, L2 ‥로서, q개의 정방MDS행렬을 반복 설정함에 의해서도, 차분공격 및 선형공격의 쌍방의 해석의 곤란성이 높아지고, 키의 해석이 곤란한 안전성이 높은 암호처리가 실현 가능하다.
지금까지의 설명에서는, 알기 쉬운 것을 우선하여 선형변환행렬을 GF(2n)상에서 정의되는 m×m의 행렬로서, mn비트로부터 mn비트에의 데이터 변환 연산으로 하여 왔지만, 차분해석 및 선형해석에 대한 마찬가지의 효과가 GF(2)상에서 정의되는 mn×mn의 행렬을 이용한 경우에도 유효하다. 실제로, 임의의 GF(2n)상의 행렬은 같은 변환을 나타내는 GF(2)상의 행렬에 1대1로 대응시킬 수 있다. 따라서, GF(2)상의 행렬은 보다 일반적인 표현을 나타내고 있다고 말할 수 있다. GF(2)상에서는 행과 열의 갯수가 mn개씩으로, GF(2n)의 경우에 비하여 n배로 된다. 이 때문에 GF(2n)상의 행렬의 1행째는, GF(2)상의 행렬의 1부터 n행째에 대응하고, 1열째는 1부터 n열째에 대응하고 있다. 즉 i행째는 (i-1)+1행째부터 (i-1)+n행째에 대응하고, i열째는 (i-1)+1열째부터 (i-1)+n열째에 대응하고 있다. 따라서, GF(2n)상의 행이나 열을 취출하여 오는 조작에는, GF(2)상에서 정의되는 행렬을 이용하는 경우 는, 대응하는 n행분 또는 n렬분을 취출한다라는 조작을 대응시키면 좋다. GF(2n)상의 m개의 행이나 열을 취출하는 조작은, GF(2)상에서는 n개의 행이나 열을 m회 취출하는 것으로 되고, 결과로서 mn×mn의 행렬을 얻을 수 있다. 이상이 대응시킴에 의해, GF(2)상에서 정의되는 행렬로 용이하게 확장할 수 있다.
[4. 본 발명에 관한 암호처리 알고리즘]
다음에, 본 발명에 관한 암호처리 알고리즘에 관해 설명한다.
상술한 항목 [3. 내성을 향상시킨 암호처리 알고리즘 구성예]에서 설명한 바와 같이, 비선형변환부 및 선형변환부를 갖는 SPN형의 F함수의 복수 라운드 반복 구성에 있어서, 특정한 조건을 만족하는 정방MDS(Maximum Distance Separable)행렬을 적용한 선형변환 처리를 행하는 구성으로 함으로써, 암호해석 처리, 공격 처리로서 알려지는 선형해석, 차분해석에 대한 내성을 향상시키는 것이 가능한 것을 설명하였다.
그러나, 상술한 처리 구성에서는, 이용할 수 있는 행렬이 한정되어 버린다는 문제가 있다. 즉, 전술한 처리예(a1 내지 a3)에서 설명한 차분공격에 대한 내성 향상을 도모하기 위한 각 F함수에 설정하는 선형변환행렬의 조건으로서는,
(A1) 각 F함수의 선형변환행렬은 정방MDS인 것,
(A2) 암호화 함수 내의 홀수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립 또는 정방MDS행렬인 것,
(A3) 짝수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행 렬의 임의의 m개의 열 벡터가 독립 또는 정방MDS행렬인 것,
이들의 조건을 만족시키는 것이 필요하였다.
또한, 전술한 처리예(b1 내지 b2)에서 설명한 선형공격에 대한 내성 향상을 도모하기 위한 각 F함수의 선형변환행렬의 조건으로서는,
(B1) 각 F함수의 선형변환행렬은 정방MDS인 것,
(B2) 암호화 함수 내의 홀수 라운드 내에 연속하여 포함되는 선형변환행렬, 및 짝수 라운드 내에 연속하여 포함되는 선형변환행렬의 역행렬의 임의의 m개의 열 벡터가 정방MDS행렬로 되는 것,
이들의 조건을 만족시키는 것이 필요하였다.
또한, 차분공격 및 선형공격의 쌍방에 대한 내성을 갖는 구성으로 하기 위해서는, 상술한 (A1) 내지 (A3) 및 (B1) 내지 (B2)의 모든 조건을 만족시키는 것이 필요하게 되어, 이용할 수 있는 행렬의 후보수가 좁혀져 버린다는 문제가 있다.
앞서 도 1, 도 2를 참조하여 설명한 바와 같이, Feistel 구조는, 변환함수의 단순한 반복에 의해, 평문을 암호문으로 변환하는 구조를 갖는다. 처음에, 2mn비트의, 평문을, mn비트의 2개의 입력 데이터(PL(Plain-Left)(101), PR(Plain-Right)(102))로 분할하고, 이것을 입력치로 하여, F함수(라운드함수)(120)를 r단 반복한다.
예를 들면, 도 1에 도시하는 제 1 번째의 라운드에서는, mn비트의 입력 데이터(X)와, 키 생성부(도시 생략)로부터 입력되는 mn비트의 라운키(K1)(103)가 F함 수(120)에 입력되고, F함수(120)에서의 데이터 변환 처리의 후에 mn비트의 데이터(Y)를 출력한다. 출력은 또한쪽의 전단부터의 입력 데이터(제 1단의 경우는 입력 데이터(PL))와 배타적 논리합부(104)에서, 배타적 논리합 연산이 이루어지고, mn비트의 연산 결과가 다음의 라운드함수로 출력된다. 이 처리, 즉 F함수를 정해진 라운드 수(r)만큼 반복 적용하여 암호화 처리가 완료되고, 암호문의 분할 데이터(CL(Cipher-Left), CR(Cipher-Right))가 출력된다. 이상의 구성에 의해, Feistel 구조의 복호 처리는 라운드키를 삽입하는 순서를 역으로 하는 것만으로 좋고, 역함수를 구성할 필요가 없는 것이 도출된다.
각 라운드의 함수로서 설정되는 F함수(120)의 구성에 관해서는, 앞서 도 2를 참조하여 설명한 바와 같이, 비선형변환층과 선형변환층을 접속한 이른바 SPN형의 고성을 갖는다. SPN형의 F함수(120)는, 도 2의 (b)에 도시하는 바와 같이, 비선형변환 처리를 실행하는 복수의 S박스(S-box)(121)를 갖는다. 라운드함수부의 전단부터의 mn비트의 입력치(X)는, 키 스케줄부로부터 입력되는 라운드키(Ki)와 배타적 논리합이 실행되고, 그 출력이 n비트씩 비선형변환 처리를 실행하는 복수(m개)의 S박스(121)에 입력된다. 각 S박스에서는, 예를 들면 변환 테이블을 적용한 비선형변환 처리가 실행된다.
S박스(121)로부터의 출력 데이터인 mn비트의 출력치(Z)는, 선형변환 처리를 실행하는 선형변환부(122)에 입력되고, 예를 들면 비트 위치의 교체 처리 등의 선형변환 처리가 실행되고, mn비트의 출력치(Y)를 출력한다. 이 출력치(Y)가 전단부 터의 입력 데이터와 배타적 논리합 되고, 다음 라운드의 F함수의 입력치가 된다.
도 2에 도시하는 F함수(120)는, 입출력 비트 길이가 m×n(m, n : 정수)비트이고, 비선형변환층은 n비트의 입출력을 갖는 비선형변환층으로서의 S박스(121)는, m개 병렬로 나열한 구성을 가지며, 선형변환층으로서의 선형변환부(122)는 n차의 기약 다항식으로 정의되는 2의 확대체(GF)(2n)상의 원을 요소로서 갖는 m차의 정방행렬에 의거한 선형변환 처리를 실행한다.
선형변환부(122)에서의 선형변환 처리에 적용하는 정방행렬은, 예를 들면 도 3에 도시하는 구성을 가지며, 비선형변환부(S박스(121))로부터 출력된 m개의 n비트 데이터(Z[1], Z[2], …, Z[m])에 대해 미리 정해진 정방행렬(125)을 적용한 연산에 의해 선형변환이 시행되고, F함수(라운드함수)출력으로서의, Y[1], Y[2], …, Y[m] 이 결정된다. 단, 이때 각 데이터의 행렬의 요소에 대한 선형 연산은 미리 정해진 2의 확대체(GF)(2n)상에서 행하여진다.
이 선형변환 처리에 적용하는 정방행렬에 관해, 상술한 [3. 내성을 향상시킨 암호처리 알고리즘 구성예]에서, 특정한 조건을 만족하는 정방MDS(Maximum Distance Separable)행렬을 적용함으로써, 암호해석 처리, 공격 처리로서 알려지는 선형해석, 차분해석에 대한 내성을 향상시킨 구성을 설명하였지만, 상술한 바와 같이, 제약이 많고 이용할 수 있는 행렬의 후보수가 조여져 버린다는 문제가 있다.
이하에서는, 상기한 문제를 감안하여, 선형변환에 적용하는 행렬의 제약 조건을 약하게 함에 의해 이용 가능한 행렬의 후보수를 늘리고, 또한 액티브 S-box의 수를 충분히 크게 유지할 수 있는 Feistel형 공통키 블록 암호의 2개의 구성예에 관해 설명한다.
(4a) 구성예 1
우선, 본 발명에 관한 Feistel형 공통키 블록 암호 구성예 1에 관해 설명한다.
우선, 선형변환의 특수한 예로서 최적 확산변환(Optimal Diffusion Mappings)을 이하와 같이 정의한다.
n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상 [θ]
θ : {0, 1}na→{0, 1}nb
에 대해 분기수(B(θ))를 다음과 같이 정의한다.
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
단, minα≠0{Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치를 나타내는 것으로 하고, hwn(Y)는 비트열(Y)을 n비트마다 단락을 지어 나타낸 때에, n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수로 한다.
이때, B(θ)가 b+1인 사상(θ)을 최적 확산변환이라고 정의한다. 또 편의적으로 행렬(M)의 분기수를 B(M)로 나타내는 것으로 한다.
SPN형의 F함수를 갖는 r단으로 이루어지는 Feistel 암호에 있어서, BD1 ~3을 이하와 같이 정의한다.
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
로서 정의한다.
단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬을 나타내는 것으로 한다.
또한, BL2를 이하와 같이 정의한다.
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
로 한다. 단, tM은 행렬의 전치를 나타내는 것으로 한다.
본 발명에 따른 Feistel형 암호의 제 1의 예에서는,
(1) BD1, BD2가 3 이상이 되는 행렬(Mi)을 선택함에 의해 차분공격에 대한 내성을 향상시키고, 또한
(2) BL2가 3 이상이 되는 행렬(Mi)을 선택함에 의해, 선형공격에 대해 내성을 향상시켰다.
즉, 본 발명의 Feistel형 공통키 블록 암호에서는, 선형변환에 적용하는 행렬의 제약 조건은, 상기 조건(1), (2)뿐이고, 전술한 [3. 내성을 향상시킨 암호처리 알고리즘 구성예]에서 설명한 적용 가능한 행렬의 제약 조건에 비교하면 느슨한 제약으로 된다. 이 느슨한 제약에 의해 이용 가능한 행렬의 후보수를 늘리고, 또한 액티브 S-box의 수를 충분히 크게 유지할 수 있는 Feistel형 공통키 블록 암호를 구성할 수 있다. 즉, 공통키 블록 암호에서의 공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능하게 되고, 선형공격이나, 차분공격에 대해 내성이 향상하고, 보다 안전성이 높은 암호처리가 실현된다.
이하, 상기 조건(1)에 의해, 차분공격에 대한 내성이 향상하는 것, 및 상기 조건(2)에 의해, 선형공격에 대한 내성이 향상하는 것에 관한 근거 및 증명에 관해, 이하에 설명한다.
(4a. 1) 구성예 1에서의 차분공격에 대한 내성의 향상
우선, 상기 조건(1), 즉, BD1, BD2가 3 이상이 되는 행렬(Mi)을 선택함에 의해, 차분공격에 대한 내성이 향상하는 이유에 관해 설명한다.
SPN형의 F함수를 갖는 r단으로 이루어지는 Feistel 암호에 있어서, BD1 ~3는, 이하와 같이 정의된다.
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬을 나타내는 것으로 한다.
이때
조건 0) BD1≥BD2
라는 관계가 존재한다.
다음에, k라운드째에 존재하는 제로가 아닌 입출력 차분을 갖는 S-box(차분 액티브 S-box)의 개수를 Dk로 나타내는 것으로 한다. 이때, 이하의 것이 성립한다.
제로가 아닌 입력차분을 SPN%의 F함수를 갖는 Feistel 암호에 주었을 때, 이하의 조건이 성립한다.
조건 1) Di=0이라면, Di -2≠0, Di -1≠0, Di +1≠0, Di +2≠0,
조건 2) Di=0이라면, Di -1=Di +1,
조건 3) Di +1≠0이라면, Di+Di +1+Di +2≥BD1,
조건 4) Di=0이라면, Di +1+Di +2≥BD1,
조건 5) Di +2=0이라면, Di+Di +1≥BD1,
조건 6) Di=0이라면, Di +1+Di +3+Di +4≥BD2,
조건 7) Di +4=0이라면, Di+Di +1+Di +3≥BD2,
이다.
이때, 연속하는 6단에 포함되는 차분 액티브 S-box의 총수(T6)(=Di+Di +1+Di +2+Di +3+Di +4+Di +5)에 관해 고찰한다.
케이스 1) Di +1`≠0이며 Di +4≠0인 경우,
상기 조건 3으로부터, Di+Di +1+Di +2≥BD1이며 Di +3+Di +4+Di +5≥BD1이기 때문에,
T6≥2BD1로 된다,
케이스 2) Di +1=0인 경우,
T6=Di+Di +1+Di +2+Di +3+Di +4+Di +5
이 되고, 상기 조건 2로부터,
T6=2Di +2+Di +3+Di +4+Di +5
가 성립하고, 또한, 상기 조건 4 및 조건 6에 의거하여,
T6=(Di +2+Di +3)+(Di +2+Di +4+Di +5)≥BD1+BD2
가 된다.
케이스 3) Di +4=0일 때,
상기 케이스 2와 같은 증명에 의해,
T6≥BD1+BD2로 된다.
따라서, 이상의 결과를 정리하고, 조건 0을 고려하면,
T6≥BD1+BD2
가 된다.
이 「6의 배수(6R)(R≥2)는 R개의 6의 조(組)로 분해할 수 있다」라는 성질에 의해, 6R단의 차분 액티브 S-box수의 최소수를, 상술한 6단으로 보증되는 차분 액티브 S-box로부터 계산할 수 있다.
즉, 제로가 아닌 입출력차분을 갖는 S-box(차분 액티브 S-box)의 최소수는 BD1, BD2을 이용하여 나타낼 수 있음을 알 수 있다. 종래에 있어서, BD1만을 가능한 한 크게 한다는 설계 방침은 고려되고 있지만, 모든 단에 같은 행렬을 이용한다는 방법이기 때문에, BD2=2로 되어 버려서, 차분 액티브 S-box의 최소수는 낮게 억제된 채였다.
그러나, 상술한 설명에서는,
BD1≥BD2라는 조건이 존재하고, BD2를 크게 취함에 의해, 제로가 아닌 입출력차분을 갖는 S-box(차분 액티브 S-box)의 최소수를 끌어올리는 효과가 있다.
전술한 [3. 내성을 향상시킨 암호처리 알고리즘 구성예]에서 설명한 적용 가능한 행렬의 제약 조건에 있어서, 차분공격에 대한 내성 향상을 도모하기 위한 각 F함수에 설정하는 선형변환행렬의 조건으로서는,
(A1) 각 F함수의 선형변환행렬은 정방MDS인 것,
(A2) 암호화 함수 내의 홀수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립 또는 정방MDS행렬인 것,
(A3) 짝수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립 또는 정방MDS행렬인 것,
이들의 조건을 만족시키는 것이 필요하였다.
이 조건은, 전술한 정의(定義) 데이터(BD1 내지 2), 즉,
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤r-2}
를 이용하여 나타내면,
BD1=BD2=m+1
이 되는 조건에 상당하는 것이다.
그러나, 여기서 설명한 알고리즘에서는,
BD1≥BD2라는 조건이 존재하고 있고, BD2를 크게 취함에 의해, 최소수를 끌어올리는 효과가 있고, F함수의 선형변환에 적용하는 행렬의 후보수가 늘어나고, 또한 제로가 아닌 입출력 차분을 갖는 차분 액티브 S-box의 수를 충분히 크게 확보할 수 있다는 메리트가 있다. 즉, 공통키 블록 암호에서의 공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능하게 되고, 차분공격에 대해 내성이 향상하고, 보다 안전성이 높은 암호처리가 실현된다.
(4a. 2) 구성예 1에서의 선형공격에 대한 내성의 향상
다음에, 전술한 조건(2), 즉, BL2이 3 이상이 되는 행렬(Mi)을 선택함에 의해, 선형공격에 대해 내성이 향상하는 이유에 관해 설명한다.
BL2가 이하와 같이 정의된다.
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
로 한다. 단, tM은 행렬의 전치를 나타내는 것으로 한다.
다음에, k라운드째에 존재하는 제로가 아닌 입출력 선형 마스크를 갖는 S-box(선형 액티브 S-box)의 개수를 Lk로 나타내는 것으로 한다. 이때, 이하의 것이 성립한다.
제로가 아닌 입력 선형 마스크를 SPN형의 F함수를 갖는 Feistel 암호에 주었을 때,
조건 1) Li+Li +1+Li +2≥BL2
가 항상 성립한다.
3의 배수(3R)(R≥1)는 3의 조로 분해할 수 있다. 이 성질에 의해, 3R단의 선형 액티브 S-box의 최소수는, R×BL2로 보증할 수 있다. 따라서, BL2를 크게 취함에 의해, 최소수를 끌어올리는 효과가 있다.
전술한 [3. 내성을 향상시킨 암호처리 알고리즘 구성예]에서 설명한 적용 가능한 행렬의 제약 조건에 있어서, 선형공격에 대한 내성 향상을 도모하기 위한 각 F함수에 설정하는 선형변환행렬의 조건으로서는,
(B1) 각 F함수의 선형변환행렬은 정방MDS인 것,
(B2) 암호화 함수 내의 홀수 라운드 내에 연속하여 포함되는 선형변환행렬, 및 짝수 라운드 내에 연속하여 포함되는 선형변환행렬의 역행렬의 임의의 m개의 열 벡터가 정방MDS행렬인 것,
이들의 조건을 만족시키는 것이 필요하였다.
이 조건은, 전술한 정의 데이터(BL2), 즉,
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
를 이용하여 나타내면,
BL2=m+1
로 되는 조건에 상당하는 것이다.
그러나, 여기서 설명한 알고리즘에서는,
BL2이 3 이상이 되는 행렬(Mi)을 선택한다
라는 조건을 설정하고 있을 뿐이고, 3R단의 선형 액티브 S-box의 최소수는, R×BL2로 보증할 수 있다. 따라서, BL2을 크게 취함에 의해, 선형 액티브 S-box의 최소수를 끌어올리는 효과가 있다. 즉, 공통키 블록 암호에서의 공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능해지고, 선형공격에 대해 내성이 향상하고, 보다 안전성이 높은 암호처리가 실현된다.
또한, 상술한 조건, 즉,
(1) BD1, BD2가 3 이상이 되는 행렬(Mi)을 선택한다
(2) BL2이 3 이상이 되는 행렬(Mi)을 선택한다
이들의 2개의 조건은, 독립으로 정의되는 조건이고, (1)의 조건을 만족시킴으로써 차분공격에 대한 내성을 향상하고, (2)의 조건을 만족시킴으로써, 선형공격에 대한 내성이 향상한다.
이들, 「차분공격에 대한 내성을 확보하는 조건(1)」과 「선형공격에 대한 내성을 확보한 조건(2)」은 각각 독립으로 정의되는 조건이다. 통상은, 양쪽을 같은 레벨의 강도가 되는 행렬을 선택하는 방침이 고려되지만, 암호가 이용된 상황에 따라서는 차분공격만에 대하여는 내성을 높이지만 선형공격에 대해서는 특히 조건을 주지 않는 설계나, 그 반대의 설계를 행하여 운용하는 것도 가능하다.
(4b) 구성예 2
다음에, 본 발명에 관한 Feistel형 공통키 블록 암호 구성예 2에 관해 설명한다. 이 구성예는, 구성예 1에 비교하여 제약이 많은 구성예이다.
우선, 선형변환의 특수한 예로서 최적 확산변환(Optimal Diffusion Mappings)를 이하와 같이 정의한다.
n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상[θ]
θ : {0, 1}na→{0, 1}nb
에 대해 분기수(B(θ))를 다음과 같이 정의한다.
B(θ)=minα≠0{hwn(α)+hwn(θ(α))}
단, minα≠0{Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치를 나타내는 것 으로 하고, hwn(Y)은 비트열(Y)을 n비트마다 단락을 지어 나타낸 때에, n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수라고 한다.
이때, B(θ)가 b+1인 사상(θ)을 최적 확산변환이라고 정의한다. 또한 편의적으로 행렬(M)의 분기수를 B(M)으로 나타내는 것으로 한다.
SPN형의 F함수를 갖는 r단으로 이루어지는 Feistel 암호에 있어서, BD1 ~3을 이하와 같이 정의한다.
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4}
로서 정의한다.
단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬을 나타내는 것으로 한다.
또한, BL2를 이하와 같이 정의한다.
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
로 한다. 단, tM은 행렬의 전치를 나타내는 것으로 한다.
본 발명에 따른 Feistel형 암호에서는,
(1) BD1, BD2, BD3가 3 이상이 되는 행렬(Mi)을 선택함에 의해, 차분공격 123i에 대한 내성을 향상시키고, 또한
(2) BL2이 3 이상이 되는 행렬(Mi)을 선택함에 의해, 선형공격에 대해 내성을 향상시켰다.
즉, 본 발명의 Feistel형 공통키 블록 암호에서는, 선형변환에 적용하는 행렬의 제약 조작은, 상기 조건(1), (2)뿐이고, 전술한 [3. 내성을 향상시킨 암호처리 알고리즘 구성예]에서 설명한 적용 가능한 행렬의 제약 조건에 비교하면 느슨한 제약으로 된다. 이 느슨한 제약에 의해 이용 가능한 행렬의 후보수를 늘리고, 또한 액티브 S-box의 수를 충분히 크게 유지할 수 있는 Feistel형 공통키 블록 암호를 구성할 수 있다. 즉, 공통키 블록 암호에서의 공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능해지고, 선형공격이나, 차분공격에 대해 내성이 향상하고, 보다 안전성이 높은 암호처리가 실현된다.
이하, 상기 조건(1)에 의해, 차분공격에 대한 내성이 향상하는 것, 및 상기 조건(2)에 의해, 선형공격에 대한 내성이 향상하는 것에 관한 근거 및 증명에 관해, 이하 설명한다.
(4b.1) 구성예 2에서의 차분공격에 대한 내성의 향상
우선, 상기 조건(1), 즉, BD1, BD2, BD3이 3 이상이 되는 행렬(Mi)을 선택함에 의해, 차분공격에 대한 내성이 향상한 이유에 관해 설명한다.
SPN형의 F함수를 갖는 r단으로 이루어지는 Feistel 암호에 있어서, BD1 ~3는, 이하와 같이 정의된다.
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤ r-2},
BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4},
단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬을 나타내는 것으로 한다.
이때
조건 0) BD1≥BD2≥BD3
이라는 관계가 존재한다.
다음에, k라운드째에 존재하는 제로가 아닌 입출력 차분을 갖는 S-box(차분 액티브 S-box)의 개수를 Dk로 나타내는 것으로 한다. 이때, 이하에 관한 것이 성립한다.
제로가 아닌 입력차분을 SPN형의 F함수를 갖는 Feistel 암호에 주었을 때, 이하의 조건이 성립된다.
조건 1) Di=0이라면, Di -2≠0, Di -1≠0, Di +1≠0, Di +2≠0,
조건 2) Di=0이라면, Di -1=Di +1,
조건 3) Di +1≠0이라면, Di+Di +1+Di +2≥BD1,
조건 4) Di=0이라면, Di +1+Di +2≥BD1,
조건 5) Di +2=0이라면, Di+Di +1≥BD1,
조건 6) Di=0이라면, Di +1+Di +3+Di +4≥BD2,
조건 7) Di +4=0이라면, Di+Di +1+Di +3≥BD2,
조건 8) Di=Di +6=0이라면, Di +1+Di +3+Di +5≥BD3,
이다.
이때, 연속하는 6단에 포함되는 차분 액티브 S-box의 총수(T6)(=Di+Di +1+Di +2+Di +3+Di +4+Di +5)에 관해 고찰한다.
케이스 1) Di +1≠0이며 Di +4≠0인 경우,
상기 조건 3으로부터, Di+Di +1+Di +2≥BD1이며 Di +3+Di +4+Di +5≥BD1이기 때문에,
T6≥2BD1
로 된다.
케이스 2) Di +1=0인 경우,
T6=Di+Di +1+Di +2+Di +3+Di +4+Di +5
로 되고, 상기 조건 2로부터,
T6=2Di +2+Di +3+Di +4+Di +5
가 성립하고, 또한, 상기 조건 4 및 조건 6에 의거하여,
T6=(Di +2+Di +3)+(Di +2+Di +4+Di +5)≥BD1+BD2
로 된다.
케이스 3) Di +4=0인 때,
상기 케이스 2와 같은 증명에 의해,
T6≥BD1+BD2
로 된다.
따라서, 이상의 결과를 정리하고, 조건 0을 고려하면,
T6≥BD1+BD2
로 된다.
다음에, 연속하는 9단에 포함되는 차분 액티브 S-box의 총수,
T9=(Di+Di +1+Di +2+Di +3+Di +4+Di +5+Di +6+Di +7+Di +8)
에 관해 고찰한다.
케이스 1) Di +1≠0인 경우,
상기 조건 3으로부터,
Di+Di +1+Di +2≥BD1
또한, 전술한 6단의 차분 액티브 S-box수에 의해,
Di +3+Di +4+Di +5+Di +6+Di +7+Di +8≥BD1+BD2
가 성립한다. 따라서,
T9≥2BD1+BD2
로 된다.
케이스 2) Di +7≠0인 경우,
케이스 1과 같은 증명에 의해,
T9≥2BD1+BD2
로 된다.
케이스 3) Di +1=Di +7=0인 경우,
T9=Di+Di +1+Di +2+Di +3+Di +4+Di +5+Di +6+Di +7+Di +8
이고, 또한 조건 2로부터,
T9=2Di +2+Di +3+Di +4+Di +5+2Di +6
로 되고, 또한 조건 4, 8, 5로부터,
T9=(Di +2+Di +3)+(Di +2+Di +4+Di +6)+(Di +5+Di +6)≥2BD1+BD3
로 된다.
따라서, 이상의 결과를 정리하고, 조건 0을 고려하면,
T9≥2BD1+BD3
로 된다.
6 이상의 임의의 3의 배수(3R)(R≥2)는 6과 9의 조로 분해할 수 있다. 이하 에 예를 나타낸다.
예) 6=6, 9=9, 12=6+6, 15=6+9, 18=6+6+6=9+9, 21=6+6+9, 24=6+6+6+6=9+9+6, …
이 「6 이상의 임의의 3의 배수(3R)(R≥2)는 6과 9의 조로 분해할 수 있다」고 하는 성질에 의해, 3R단계의 차분 액티브 S-box수의 최소수를, 상술한 6단과 9단으로 보증된 차분 액티브 S-box로부터 계산할 수 있다.
즉, 제로가 아닌 입출력차분을 갖는 S-box(차분 액티브 S-box)의 최소수는 BD1, BD2, BD3을 이용하여 나타낼 수 있음을 알 수 있다. 종래에 있어서, BD1만을 가능한 한 크게 한다는 설계 방침은 고려되고 있었지만, 모든 단에 같은 행렬을 이용한다고 하는 방법이기 때문에, BD2=BD3=2로 되어 버려서, 차분 액티브 S-23box의 최소수는 낮게 억제된 그대로였다.
그러나, 상술한 설명에서는, BD1≥BD2≥BD3이라는 조건을 설정하고 있는 것이고,
BD3을 크게 취함에 의해, 제로가 아닌 입출력 차분을 갖는 S-box(차분 액티브 S3-box)의 최소수를 끌어올리는 효과가 있다.
전술한 [3. 내성을 향상시킨 암호처리 알고리즘 구성예]에서 설명한 적용 가능한 행렬의 제약 조건에 있어서, 차분공격에 대한 내성 향상을 도모하기 위한 각 F함수에 설정하는 선형변환행렬의 조건으로서는,
(A1) 각 F함수의 선형변환행렬은 정방MDS인 것,
(A2) 암호화 함수 내의 홀수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립 또는 정방MDS행렬인 것,
(A3) 짝수 라운드 내의 적어도 연속하는 q개의 F함수에 포함되는 선형변환행렬의 임의의 m개의 열 벡터가 독립 또는 정방MDS행렬인 것,
이들의 조건을 만족시키는 것이 필요하였다.
이 조건은, 전술한 정의 데이터(BD1 ~3), 즉,
BD1=min{B(Mi)|1≤i≤r},
BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4}
를 이용하여 나타내면,
BD1=BD2=BD3=m+1
로 되는 조건에 상당하는 것이다.
그러나, 여기서 설명한 알고리즘에서는,
BD1≥BD2≥BD3이라는 조건을 설정하고 있을 뿐이고,
BD3을 크게 취함에 의해, 최소수를 끌어올리는 효과가 있고, F함수의 선형변환에 적용하는 행렬의 후보수가 늘어나고, 또한 제로가 아닌 입출력차분을 갖는 차분 액티브 S-box의 수를 충분히 크게 확보할 수 있다는 메리트가 있다. 즉, 공통키 블록 암호에서의 공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능해지고, 차분공격에 대해 내성이 향상하고, 보다 안전성이 높은 암호처리가 실현된다.
(4b.2) 구성예 2에서의 선형공격에 대한 내성의 향상
다음에, 전술한 조건(2), 즉, BL2가 3 이상이 되는 행렬(M)을 선택함에 의해, 선형공격에 대해 내성이 향상한 이유에 대하여 설명한다.
BL2는 이하와 같이 정의된다.
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
로 한다. 단, tM은 행렬의 전치를 나타내는 것으로 한다.
다음에, k라운드째에 존재하는 제로가 아닌 입출력 선형 마스크를 갖는 S-box(선형 액티브 S-box)의 개수를 Lk로 나타내는 것으로 한다. 이때, 이하의 것이 성립한다.
제로가 아닌 입력 선형 마스크를 SPN형의 F함수를 갖는 Feistel 암호에 주었을 때,
조건 1) Li+Li +1+Li +2≥BL2
가 항상 성립한다.
3의 배수(3R)(R≥1)는 3의 조에 분해할 수 있다. 이 성질에 의해, 3R단의 선형 액티브 S-box의 최소수는, R×BL2로 보증할 수 있다. 따라서, BL2을 크게 취함에 의해, 최소수를 끌어올리는 효과가 있다.
전술한 [3. 내성을 향상시킨 암호처리 알고리즘 구성예] 에서 설명한 적용 가능한 행렬의 제약 조건에 있어서, 선형공격에 대한 내성 향상을 도모하기 위한 각 F함수에 설정하는 선형변환행렬의 조건으로서는,
(B1) 각 F함수의 선형변환행렬은 정방MDS인 것,
(B2) 암호화 함수 내의 홀수 라운드 내에 연속하여 포함되는 선형변환행렬, 및 짝수 라운드 내에 연속하여 포함되는 선형변환행렬의 역행렬의 임의의 m개의 열 벡터가 정방MDS행렬로 되는 것,
이들의 조건을 만족시키는 것이 필요하였다.
이 조건은, 전술한 정의 데이터(BL2), 즉,
BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
를 이용하여 나타내면,
BL2=m+1
로 되는 조건에 상당하는 것이다.
그러나, 여기서 설명한 알고리즘에서는,
BL2가 3 이상이 되는 행렬(Mi)을 선택한다,라고 하는 조건을 설정하고 있을 뿐이고, 3R단의 선형액티브 S-box의 최소수는, R×BL2로 보증할 수 있다. 따라서 BL2를 크게 취함에 의해, 선형 액티브 S-box의 최소수를 끌어올리는 효과가 있다. 즉, 공통키 블록 암호에서의 공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능해지고, 선형공격에 대해 내성이 향상하고, 보다 안전성이 높은 암호처리가 실현된다.
또한, 상술한 조건, 즉,
(1) BD1, BD2, BD3이 3 이상이 되는 행렬(Mi)을 선택한다
(2) BL2가 3 이상이 되는 행렬(Mi)을 선택한다
이들의 2개의 조건은, 독립으로 정의되는 조건이고, (1)의 조건을 만족시킴으로써 차분공격에 대한 내성을 향상하고, (2)의 조건을 만족시킴으로써, 선형공격에 대한 내성이 향상한다.
이들, 「차분공격에 대한 내성을 확보하는 조건(1)」과 「선형공격에 대한 내성을 확보하는 조건(2)」은 각각 독립으로 정의되는 조건이다. 통상은, 양쪽을 같은 레벨의 강도가 되는 행렬을 선택하는 방침이 고려되지만, 암호가 이용되는 상황에 따라서는 차분공격만에 대해서는 내성을 높이지만 선형공격에 대해서는 특히 조건을 주지 않는 설계나, 그 반대의 설계를 행하여 운용하는 것도 가능하다.
최후로, 암호처리를 실행하는 암호처리 장치로서의 IC 모듈(600)의 구성예를 도 18에 도시한다. 상술한 처리는, 예를 들면 PC, IC 카드, 리더라이터, 그 밖에, 다양한 정보 처리 장치에서 실행 가능하고, 도 18에 도시하는 IC 모듈(600)은, 이들 다양한 기기에 구성하는 것이 가능하다.
도 18에 도시하는 CPU(Centra1 processing Unit)(601)는, 암호 처리의 시작 이나, 종료, 데이터의 송수신의 제어, 각 구성부 사이의 데이터 전송 제어, 그 밖의 각종 프로그램을 실행하는 프로세서이다. 메모리(602)는, CPU(601)가 실행하는 프로그램, 또는 연산 파라미터로서의 고정 데이터를 격납하는 R0M(Read-Only-Memory), CPU(601)의 처리에서 실행되는 프로그램, 및 프로그램 처리에서 적절히 변화하는 파라미터의 격납 에어리어, 워크 영역으로서 사용되는 RAM(Random Access Memory) 등으로 이루어진다. 또한, 메모리(602)는 암호처리에 필요한 키 데이터 등의 격납 영역으로서 사용 가능하다. 데이터 등의 격납 영역은, 내(耐)탬퍼 구조를 갖는 메모리로서 구성되는 것이 바람직하다.
암호처리부(603)는, 예를 들면 상술한 Feistel형 공통키 블록 암호 처리 알고리즘에 따른 암호처리, 복호 처리 등을 실행한다. 또한, 여기서는, 암호처리 수단을 개별 모듈로 한 예를 나타냈지만, 이와 같은 독립한 암호처리 모듈을 마련하지 않고, 예를 들면 암호처리 프로그램을 R0M에 격납하고, CPU(601)가 R0M 격납 프로그램을 판독하여 실행하도록 구성하여도 좋다.
난수 발생기(604)는, 암호처리에 필요해지는 키의 생성 등에서 필요해지는 난수의 발생 처리를 실행한다.
송수신부(605)는, 외부와의 데이터 통신을 실행하는 데이터 통신 처리부이고, 예를 들면 리더라이터 등, IC 모듈과의 데이터 통신을 실행하고, IC 모듈 내에서 생성한 암호문의 출력, 또는 외부의 리더라이터 등의 기기로부터의 데이터 입력 등을 실행한다.
이상, 특정한 실시예를 참조하면서, 본 발명에 관해 상세히 설명하여 왔다. 그러나, 본 발명의 요지를 일탈하지 않는 범위에서 당업자가 해당 실시예의 수정이나 대용을 해낼 수 있음은 자명한다. 즉, 예시라는 형태로 본 발명을 개시하여 온 것이고, 한정적으로 해석되면 않될 것이다. 본 발명의 요지를 판단하기 위해서는, 특허청구의 범위의 난을 참작하여야 할 것이다.
또한, 본 발명의 실시예에서는, 2종류 또는 3종류의 행렬식을 이용하여 설명을 행하고 있지만, 그것으로 한정되는 것이 아니고, 복수종류의 행렬식을 이용하여, 실시 예의 제약 조건을 만족시킬 수 있으면, 차분공격 및 선형공격에 대한 내성을 향상시키는 것은 가능하다.
또한, 명세서중에서 설명한 일련의 처리는 하드웨어, 또는 소프트웨어, 또는 양자의 복합 구성에 의해 실행하는 것이 가능하다. 소프트웨어에 의한 처리를 실행하는 경우는, 처리 시퀀스를 기록한 프로그램을, 전용의 하드웨어에 조립된 컴퓨터 내의 메모리에 인스톨하여 실행시키거나 또는, 각종 처리가 실행 가능한 범용 컴퓨터에 프로그램을 인스톨하여 실행시키는 것이 가능하다.
예를 들면, 프로그램은 기록 매체로서의 하드 디스크나 R0M(Read Only Memory)에 미리 기록하여 둘 수 있다. 또는, 프로그램은 플렉시블 디스크, CD-R0M(Compact Disc Read Only Memory), M0(Magneto optica1) 디스크, DVD(Digita1 Versatile Disc), 자기 디스크, 반도체 메모리 등의 리무버블 기록 매체에, 일시적 또는 영속적으로 격납(기록)하여 둘 수 있다. 이와 같은 리무버블 기록 매체는, 이른바 패키지 소프트웨어로서 제공할 수 있다.
또한, 프로그램은, 상술한 바와 같은 리무버블 기록 매체로부터 컴퓨터에 인 스톨하는 외에, 다운로드 사이트로부터, 컴퓨터에 무선 전송하거나, LAN(Loca1 Area Network), 인터넷이라는 네트워크를 통하여, 컴퓨터에 유선으로 전송하고, 컴퓨터에서는, 그와 같이 하여 전송되어 오는 프로그램을 수신하고, 내장하는 하드 디스크 등의 기록 매체에 인스톨할 수 있다.
또한, 명세서에 기재된 각종의 처리는, 기재에 따라 시계열로 실행될 뿐만 아니라, 처리를 실행하는 장치의 처리 능력 또는 필요에 따라 병렬적으로 또는 개별적으로 실행되어도 좋다. 또한, 본 명세서에서 시스템이란, 복수의 장치의 논리적 집합 구성이고, 각 구성의 장치가 동일 본체 내에 있는 것으로는 한하지 않는다.
상술한 바와 같이, 본 발명의 구성에 의하면, 비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를, 복수 라운드 반복 실행하는 Feistel형 공통키 블록 암호처리에 있어서, 복수 라운드 각각에 대응하는 F함수의 선형변환 처리를, 비교적 느슨한 제한에 의해 특정되는 행렬을 적용하여 실행하는 구성에 의해, 공통키 블록 암호에서의 차분공격이나 선형공격에 대한 내성이 향상한다. 또한, 제한이 비교적 느슨하고, 이용할 수 있는 행렬의 후보가 증가함과 함께, 액티브 S-box수를 충분히 크게 확보하는 것이 가능하게 된다. 즉, 공통키 블록 암호에서의 공격에 대한 강도 지표의 하나인 암호화 함수 전체에서의 액티브 S박스의 최소수를 크게 하는 것이 가능해지고, 선형공격이나, 차분공격에 대해 내성이 향상하고, 보다 안전성이 높은 암호처리가 실현된다.

Claims (8)

  1. 복수 비트의 입출력을 갖는 복수의 비선형변환층을 병렬로 구성한 비선형변환부와,
    선형변환을 시행하는 선형변환층으로 구성한 선형변환부로 구성되는 Feistel형 암호처리를 구비하는 암호처리 장치에 있어서,
    상기 선형변환부는, 상기 선형변환에 적응하는 행렬의 제약 조건에 의거하여 처리를 시행하는 것을 특징으로 하는 암호처리 장치.
  2. 제 1항에 있어서,
    상기 선형변환에 적응하는 행렬의 제약 조건은,
    r단 각각에 대응하는 F함수의 선형변환부의 만족하는 행렬(Mi)을 적용한 구성, 즉, n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
    분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
    단, minα≠0{Xα}는, α≠0을 충족시키는 모든 Xα중의 최소치, hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수로 하고, 분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
    또한, 행렬(M)의 분기수를 B(M)로 나타낸 때,
    BD1=min{B(Mi)|1≤i≤r},
    BD2=min{B(Mi|Mi+2)|1≤i≤r-2},
    단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬로 한 경우에,
    BD1, BD2의 전부가 3 이상이 되는 행렬(Mi)을 적용한 구성인 것을 특징으로 하는 암호처리 장치.
  3. 암호처리 장치로서,
    비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 갖는 r단으로 이루어지는 Feistel형 공통키 블록 암호처리 구성을 가지며,
    상기 r단 각각에 대응하는 F함수의 선형변환부는 하기 조건을 만족하는 행렬(Mi)을 적용한 구성, 즉,
    n×a비트 데이터로부터 n×b비트 데이터에의 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
    분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
    단, minα≠{Xα}는, α≠0을 충족시키는 모든 Xα중의 최소치,
    hwn(Y)는 비트열(Y)을 n비트마다 단락을 짓고 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수로 하고,
    분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
    또한, 행렬(M)의 분기수를 B(M)로 나타낸 때,
    BD1=min{B(Mi)|1≤i≤r},
    BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
    BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4},
    단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬로 한 경우에,
    BD1, BD2, BD3의 전부가 3 이상이 되는 행렬(Mi)을 적용한 구성인 것을 특징으로 하는 암호처리 장치.
  4. 암호처리 장치로서,
    비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 갖는 r단으로 이루어지는 Feistel형 공통키 블록 암호처리 구성을 가지며,
    상기 r단 각각에 대응하는 F함수의 선형변환부는 하기 조건을 만족하는 행렬(Mi)을 적용한 구성, 즉,
    n×a비트 데이터로부터 n×b비트 데이터에의 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
    분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
    단, minα≠{Xα}는, α≠0을 충족시키는 모든 Xα중의 최소치,
    hwn(Y)는 비트열(Y)을 n비트마다 단락을 짓고 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수로 하고,
    분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
    또한, 행렬(M)의 분기수를 B(M)로 나타낸 때,
    BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
    단, tM은 행렬의 전치로 한 경우에,
    BD2가 3 이상이 되는 행렬(Mi)을 적용한 구성인 것을 특징으로 하는 암호처리 장치.
  5. Feistel형 공통키 블록 암호처리를 실행하는 암호처리 방법으로서,
    비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 r단, 반복 실행하는 스텝을 가지며,
    상기 r단 각각에 대응하는 F함수의 선형변환 처리는 하기 조건을 만족하는 행렬(Mi)을 적용한 선형변환 처리, 즉,
    n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
    분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
    단, minα≠0 {Xα}는, α≠0을 충족시키는 모든 Xα중의 최소치,
    hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수로 하고,
    분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
    또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
    BD1=min{B(Mi)|1≤i≤r},
    BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
    BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4}
    단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬로 한 경우에,
    BD1, BD2, BD3의 전부가 3 이상이 되는 행렬(Mi)을 적용한 선형변환 처리에 의해 실행하는 것을 특징으로 하는 암호처리 방법.
  6. Feistel형 공통키 블록 암호처리를 실행한 암호처리 방법으로서,
    비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 r단, 반복 실행하는 스텝을 가지며,
    상기 r단 각각에 대응하는 F함수의 선형변환부는 하기 조건을 만족하는 행렬(Mi)을 적용한 선형변환 처리, 즉,
    n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
    분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
    단, minα≠0 {Xα}는, α≠0을 충족시키는 모든 Xα중의 최소치,
    hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수로 하고,
    분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
    또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
    BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
    단, tM은 행렬의 전치로 한 경우에,
    BL2가 3 이상이 되는 행렬(Mi)을 적용한 선형변환 처리에 의해 실행하는 것을 특징으로 하는 암호처리 방법.
  7. Feistel형 공통키 블록 암호처리를 컴퓨터상에서 실행하는 컴퓨터 프로그램으로서,
    비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 r단, 반복 실행하는 스텝을 가지며,
    상기 r단 각각에 대응하는 F함수의 선형변환 처리는 하기 조건을 만족하는 행렬(Mi)을 적용한 선형변환 처리, 즉,
    n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
    분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
    단, minα≠0 {Xα}는, α≠0를 충족시키는 모든 Xα중의 최소치,
    hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수로 하고,
    분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
    또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
    BD1=min{B(Mi)|1≤i≤r},
    BD2=min{B(Mi|Mi +2)|1≤i≤r-2},
    BD3=min{B(Mi|Mi +2|Mi +4)|1≤i≤r-4}
    단, A|B는 행렬(A, B)의 연결에 의해 얻어지는 행렬로 한 경우에,
    BD1, BD2, BD3의 전부가 3 이상이 되는 행렬(Mi)을 적용한 선형변환 처리에 의해 실행하는 것을 특징으로 하는 컴퓨터 프로그램.
  8. Feistel형 공통키 블록 암호처리를 컴퓨터상에서 실행하는 컴퓨터 프로그램으로서,
    비선형변환부 및 선형변환부를 갖는 SPN형의 F함수를 r단, 반복 실행하는 스텝을 가지며,
    상기 r단 각각에 대응하는 F함수의 선형변환부는 하기 조건을 만족하는 행렬(Mi)을 적용한 선형변환 처리, 즉,
    n×a비트 데이터로부터 n×b비트 데이터에의 선형변환을 행하는 사상(θ) : {0, 1}na→{0, 1}nb에 대해, 분기수(B(θ))를,
    분기수(B(θ))=minα≠0{hwn(α)+hwn(θ(α))},
    단, minα≠0 {Xα}는, α≠0을 충족시키는 모든 Xα중의 최소치,
    hwn(Y)는 비트열(Y)을 n비트마다 단락지어 나타낸 때에 n비트의 데이터 전부가 0이 아닌(비제로) 요소의 수를 돌려주는 함수로 하고,
    분기수(B(θ))가 b+1인 사상(θ)을 최적 확산변환이라고 정의하고,
    또한, 행렬(M)의 분기수를 B(M)으로 나타낸 때,
    BL2=min{B(tM-1 i|tM-1 i+2)|1≤i≤r-2}
    단, tM은 행렬의 전치로 한 경우에,
    BL2가 3 이상이 되는 행렬(Mi)을 적용한 선형변환 처리에 의해 실행하는 것 을 특징으로 하는 컴퓨터 프로그램.
KR1020077021765A 2005-03-25 2006-03-02 정보 처리 장치 KR101245010B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2005088952 2005-03-25
JPJP-P-2005-00088952 2005-03-25
JP2005313842A JP4622807B2 (ja) 2005-03-25 2005-10-28 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JPJP-P-2005-00313842 2005-10-28
PCT/JP2006/304015 WO2006103867A1 (ja) 2005-03-25 2006-03-02 情報処理装置

Publications (2)

Publication Number Publication Date
KR20070112393A true KR20070112393A (ko) 2007-11-23
KR101245010B1 KR101245010B1 (ko) 2013-03-18

Family

ID=37053135

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077021765A KR101245010B1 (ko) 2005-03-25 2006-03-02 정보 처리 장치

Country Status (6)

Country Link
US (1) US8340282B2 (ko)
EP (1) EP1862991B1 (ko)
JP (1) JP4622807B2 (ko)
KR (1) KR101245010B1 (ko)
CN (2) CN101176134B (ko)
WO (1) WO2006103867A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4561252B2 (ja) * 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8752032B2 (en) * 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
WO2009075337A1 (ja) * 2007-12-13 2009-06-18 Nec Corporation 暗号化方法及び復号化方法、装置並びにプログラム
JP5272417B2 (ja) * 2008-01-21 2013-08-28 ソニー株式会社 データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
US8369515B2 (en) * 2010-03-18 2013-02-05 Chiou-Haun Lee Cryptographic method of multilayer diffusion in multidimension
US8948376B2 (en) * 2010-05-11 2015-02-03 Ca, Inc. Format-preserving encryption via rotating block encryption
CN101951314B (zh) * 2010-10-12 2012-06-20 北京航空航天大学 对称密码加密中s-盒的设计方法
CN103427986B (zh) * 2013-08-22 2016-08-24 中国科学院信息工程研究所 获取分组密码活跃s盒个数下界的方法
JP2015191106A (ja) * 2014-03-28 2015-11-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
CN104158796B (zh) * 2014-07-11 2017-07-21 中国科学院信息工程研究所 分组密码抗线性攻击安全性的评估方法
US10341090B2 (en) * 2014-10-14 2019-07-02 Sony Corporation Cipher processing apparatus and cipher processing method
US11038668B2 (en) * 2015-05-17 2021-06-15 Gideon Samid Transposition encryption alphabet method (TEAM)
US10608814B2 (en) * 2015-05-17 2020-03-31 Gideon Samid Equivoe-T: Transposition equivocation cryptography
WO2017223509A1 (en) * 2016-06-23 2017-12-28 Cryptography Research, Inc. Cryptographic operations employing non-linear share encoding for protecting from external monitoring attacks
US10771235B2 (en) * 2016-09-01 2020-09-08 Cryptography Research Inc. Protecting block cipher computation operations from external monitoring attacks
JP2018093325A (ja) * 2016-12-01 2018-06-14 ソニーセミコンダクタソリューションズ株式会社 情報処理装置、情報処理方法、及びプログラム
CN112511293B (zh) * 2020-09-21 2022-03-18 中国电子科技集团公司第三十研究所 基于比特与运算的s盒参数化设计方法及存储介质
CN112636899B (zh) * 2020-09-21 2022-03-18 中国电子科技集团公司第三十研究所 一种轻量化s盒设计方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1130871C (zh) * 1996-04-30 2003-12-10 东芝株式会社 加密装置及加密方法
KR100260534B1 (ko) 1997-08-30 2000-07-01 구자홍 디이에스형 암호화 방법 및 장치
WO2002003605A1 (en) * 2000-07-04 2002-01-10 Koninklijke Philips Electronics N.V. Substitution-box for symmetric-key ciphers
JP3907976B2 (ja) * 2000-07-13 2007-04-18 富士通株式会社 F関数内部にspn構造を用いた演算装置および演算方法
JP4216445B2 (ja) * 2000-07-13 2009-01-28 株式会社東芝 パラメータ決定装置、パラメータ決定方法、および暗号化/復号装置
CN1402465A (zh) * 2002-04-10 2003-03-12 李新全 一种动态矩阵排列加密方法
JP4622222B2 (ja) * 2003-09-30 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4561252B2 (ja) 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Also Published As

Publication number Publication date
US8340282B2 (en) 2012-12-25
EP1862991B1 (en) 2018-05-02
KR101245010B1 (ko) 2013-03-18
EP1862991A4 (en) 2013-10-30
WO2006103867A1 (ja) 2006-10-05
US20090103716A1 (en) 2009-04-23
CN101834719A (zh) 2010-09-15
CN101834719B (zh) 2012-06-27
CN101176134B (zh) 2012-08-08
EP1862991A1 (en) 2007-12-05
JP4622807B2 (ja) 2011-02-02
CN101176134A (zh) 2008-05-07
JP2006301567A (ja) 2006-11-02

Similar Documents

Publication Publication Date Title
KR101245010B1 (ko) 정보 처리 장치
KR101091749B1 (ko) 암호 처리 장치, 암호 처리 방법 및 기록매체
US8031866B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
EP2048641B1 (en) Encryption processing device, method for building encryption process algorithm, encryption processing method, and computer program
RU2449482C2 (ru) Устройство обработки шифрования, способ обработки шифрования и компьютерная программа
JP2007199156A (ja) 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
Dawood et al. The new block cipher design (Tigris Cipher)
Dawood et al. New Symmetric Cipher Fast Algorithm of Revertible Operations' Queen (FAROQ) Cipher
Wei et al. New second‐order threshold implementation of AES
WO2015059845A1 (ja) 暗号化処理回路及び復号処理回路並びにその方法
JP5223245B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Legal Events

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

Payment date: 20160311

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170303

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180302

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190304

Year of fee payment: 7