KR20040041860A - 병렬 디이에스 구조를 갖는 암호 장치 - Google Patents
병렬 디이에스 구조를 갖는 암호 장치 Download PDFInfo
- Publication number
- KR20040041860A KR20040041860A KR1020020069946A KR20020069946A KR20040041860A KR 20040041860 A KR20040041860 A KR 20040041860A KR 1020020069946 A KR1020020069946 A KR 1020020069946A KR 20020069946 A KR20020069946 A KR 20020069946A KR 20040041860 A KR20040041860 A KR 20040041860A
- Authority
- KR
- South Korea
- Prior art keywords
- data block
- block
- encryption
- bit
- cryptographic
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
여기에 개시되는 암호 장치는 제 1 및 제 2의 N-라운드 디이에스 장치들과 제 1 및 제 2 입력 회로들을 포함한다. 제 1의 N-라운드 디이에스 장치는 일련의 암호 키들의 입력에 따라, 디지털 입력 데이터 블록을 제 1 디지털 출력 데이터 블록으로 비선형적으로 암호 변환한다. 제 1 입력 회로는 디지털 입력 데이터 블록을 입력하여 반전시키고, 제 2 입력 회로는 일련의 암호 키들을 입력하여 반전시킨다. 제 2의 N-라운드 디이에스 장치는 반전된 암호 키들의 입력에 따라, 반전된 디지털 입력 데이터 블록을 제 2 디지털 출력 데이터 블록으로 비선형적으로 암호 변환한다. 여기서, 제 1 및 제 2의 N-라운드 디이에스 장치들은 입력되는 대응하는 데이터 블록들 및 키값들에 응답하여 암호 변환 동작을 동시에 수행한다.
Description
본 발명은 데이터 통신 (data communication)에 관한 것으로, 좀 더 구체적으로 디지털 데이터 블록을 암호화/복호화하는 암호 장치에 관한 것이다.
디지털 입력 블록을 디지털 출력 블록으로 변환하기 위한 폭 넓게 사용된 알고리즘은 연방 정부의 연방 정보 처리 표준 46(FIPS publication 46)으로 채택된 데이터 암호화 표준 알고리즘 (data encryption standard algorithm, 이하 "DES 알고리즘"이라 칭함)이다. 그러한 알고리즘은 일반적으로 블록 암호화기 (block cipher)라 불린다. 암호문 (ciphertext)을 복호화한다는 것은 데이터를 원래의 형태로 변환한다는 것이다. DES는 64-비트 평문 블록들을 대응하는 64-비트 암호문 블록들로 암호화하는 데 사용된다. 이때, 64-비트 키로부터 생성되는 키들을 사용하여 암호화 동작이 수행된다.
상술한 DES 알고리즘은, 예를 들면, 카드 판독기 (card reader)와 스마트 카드 간의 통신에 사용되고 있다. 잘 알려진 바와 같이, 스마트 카드 내부에 저장된 데이터는 안전하게 보관되어야 하며, 외부로 유출시에는 사용자에게나 시스템 운영자에게도 커다란 위험 인자가 된다. 스마트 카드의 승인되지 않은 접근은 "부정조작" (tampering)이라 불리며, 스마트 카드에 대한 부정조작은 일반적으로 행해지고 있다. 부정조작 기술은 다양한 어택 기술들, 예를 들면, 마이크로프로브 기술 (microprobing technique), 소프트웨어 어택 기술 (software attack technique), 도청 기술 (eavesdropping technique), 그리고 오류 생성 기술 (fault generation technique)로 구분될 수 있다. 스마트 카드를 부정조작함으로써 카드 메모리에 저장된 정보와 적용된 암호 알고리즘의 키값을 얻을 수 있다.
상기 마이크로프로브 기술은 칩 표면을 직접 액세스하기 위해 사용될 수 있다. 상기 소프트웨어 어택 기술은 프로세서의 일반적인 통신 인터페이스를 이용하며 프로토콜에서 발생되는 보안 취약점 (security vulnerability), 암호 알고리즘,또는 알고리즘 실행을 활용한다. 도청 기술은 모든 공급 및 인터페이스 접속들의 아날로그 특성들과 정상적인 동작 동안 프로세서에 의해서 생성되는 전자기 방사를 측정한다. 오류 생성 기술은 비정상적인 환경 조건을 이용하여 추가적인 접근을 제공하는 프로세서의 오동작을 생성한다. 상기 마이크로프로브 기술은 직접적인 어택 (invasive attack technique)이며, 이 기술은 많은 시간을 필요로 한다. 나머지 기술들은 간접적인 어택 기술 (non-invasive attack technique)이다.
상기 간접적인 어택 기술로서, 사이드 채널 분석 (side channel analysis) 기술은 스마트 카드의 동작에 의한 전력 소모 (또는 소모 전류 패턴) 또는 타이밍차 (timing difference)를 이용하여 암호 알고리즘 (또는 DES 알고리즘)의 키값을 알아내는 것을 말한다. 사이드 채널 분석 기술은 크게 SPA (simple power analysis) 기술과 DPA (differential power analysis) 기술로 분류될 수 있다. SPA 기술은 암호 알고리즘이 수행될 때 측정한 전력 자체의 분석을 통해 키값을 추출하는 데 사용된다. DPA 기술은 SPA 개념에 통계적 개념과 오류 수정의 개념을 도입하여 키값을 추출하는 데 사용된다.
DES 알고리즘의 키값과 관련된 데이터가 처리될 때 발생되는 전력 소모 또는 소모 전류 패턴은, 일반적으로, 처리되는 데이터 비트가 "0" 또는 "1"인 지에 따라 미세한 차이를 보인다. 따라서, 미세한 차이를 보이는 소모 전류 패턴들을 정확하게 분류함으로써 데이터 비트 "1"의 소모 전류 패턴과 데이터 비트 "0"의 소모 전류 패턴 사이의 차를 통해 키값을 찾을 수 있다.
결론적으로, "0" 데이터 비트 및 "1" 데이터 비트의 소모 전류 패턴들 간의미세한 차가 DPA 기술에 노출되는 것을 방지할 수 있는 향상된 DES 알고리즘이 요구되고 있다.
본 발명의 목적은 사이드 채널 분석 (side channel analysis)에 강한 암호 장치를 제공하는 것이다.
도 1은 본 발명에 따른 암호 장치를 보여주는 블록도;
도 2는 도 1에 도시된 암호키 블록을 보여주는 블록도;
도 3은 도 1에 도시된 암호 블록들 중 하나를 보여주는 블록도;
도 4는 도 3에 도시된 함수 처리기를 보여주는 블록도; 그리고
도 5는 도 4에 도시된 S 박스들의 변환 스케쥴을 보여주는 도면이다.
* 도면의 주요 부분에 대한 부호 설명 *
100 : 암호 장치
120 : 암호키 블록
140, 160 : 암호 블록
상술한 제반 목적을 달성하기 위한 본 발명의 암호 장치에 따르면, 제 1의 N-라운드 디이에스 장치는 일련의 암호 키들의 입력에 따라, 디지털 입력 데이터 블록을 제 1 디지털 출력 데이터 블록으로 비선형적으로 암호 변환한다. 제 1 입력 수단은 디지털 입력 데이터 블록을 입력하여 반전시키고, 제 2 입력 수단은 일련의 암호 키들을 입력하여 반전시킨다. 제 2의 N-라운드 디이에스 장치는 반전된 암호 키들의 입력에 따라, 반전된 디지털 입력 데이터 블록을 제 2 디지털 출력 데이터 블록으로 비선형적으로 암호 변환한다. 여기서, 제 1 및 제 2의 N-라운드 디이에스 장치들은 암호 변환 동작을 동시에 수행한다.
이 실시예에 있어서, 상기 제 1 및 제 2의 N-라운드 디이에스 장치들은 디이에스 알고리즘 (DES algorithm)에 따라 암호 변환 동작을 각각 수행한다.
이 실시예에 있어서, 상기 제 1 및 제 2의 N-라운드 디이에스 장치들로부터의 상기 제 1 및 제 2 디지털 출력 데이터 블록들을 저장하는 수단을 더 포함하며, 상기 제 1 및 제 2 디지털 출력 데이터 블록들 중 하나만이 암호 데이터 블록으로서 사용된다.
이 실시예에 있어서, 상기 디지털 입력 데이터 블록을 상기 제 1의 N-라운드 디이에스 장치로 전달하는 제 3 입력 수단을 더 포함한다.
본 발명의 다른 특징에 따르면, 디지털 입력 데이터를 암호 변환하는 방법은 일련의 암호 키들의 입력에 따라, 상기 디지털 입력 데이터 블록을 제 1 디지털 출력 데이터 블록으로 비선형적으로 암호 변환하는 단계와; 상기 디지털 입력 데이터 블록 및 상기 일련의 암호 키들을 반전시키는 단계와; 그리고 상기 반전된 암호 키들의 입력에 따라, 상기 반전된 디지털 입력 데이터 블록을 제 2 디지털 출력 데이터 블록으로 비선형적으로 암호 변환하는 단계를 포함한다. 여기서, 상기 제 1 및 제 2 디지털 출력 데이터 블록들을 얻기 위한 상기 암호 변환 동작들은 디이에스 알고리즘 (DES algorithm)에 따라 동시에 수행된다. 상기 제 1 및 제 2 디지털 출력 데이터 블록들 중 하나만이 암호 데이터 블록으로서 사용된다.
이하, 본 발명의 바람직한 실시예에 따른 암호 장치가 참조 도면들에 의거하여 상세히 설명될 것이다. 도 1에는 본 발명에 따른 암호 장치의 블록도가 도시되어 있다. 도 1을 참조하면, 본 발명의 암호 장치 (100)는 64-비트 키에 따라 디지털 입력 데이터 블록 또는 평문 (plaintext)을 암호화하며, 평문은 64-비트 데이터이다. 본 발명의 암호 장치 (100)는 암호키 블록 (encryption key block) (120), 제 1 및 제 2 암호 블록들 (first and second encryption blocks) (140, 160), 레지스터 (180), 버퍼들 (BUF1, BUF2), 그리고 인버터들 (INV1, INV2)을 포함한다.
도 1에 도시된 바와 같이, 암호키 블록 (120)은 64-비트 키 (KEY)를 받아들이고, 이하 설명될 변환 방식 (permutation method)에 따라 복수 개의 48-비트 키들 (K1-K16)을 발생한다. 그렇게 발생된 16개의 암호키들 (K1-K16)은 버퍼 (BUF1)를 통해 제 1 암호 블록 (140)으로 그리고 인버터 (INV1)를 통해 제 2 암호 블록 (160)으로 각각 전달된다. 이러한 설명으로부터 알 수 있듯이, 제 1 암호 블록 (140)은 암호키 블록 (120)으로부터의 암호키들 (K1-K16)을 그대로 이용하여 암호화 동작을 수행하는 반면에, 제 2 암호 블록 (160)은 암호키 블록 (120)으로부터 출력된 암호키들 (K1-K16)에 대해 1의 보수를 취하여 얻어진 보수 암호키들 (K1'-K16')을 이용하여 암호화 동작을 수행한다. 64-비트 데이터 블록으로서, 디지털 입력 데이터 블록 (D)은 버퍼 (BUF2)를 통해 제 1 암호 블록 (140)으로 그리고 인버터 (INV2)를 통해 제 2 암호 블록 (160)으로 각각 전달된다. 제 1 암호 블록 (140)은 암호키들 (K1-K16)에 따라 버퍼 (BUF2)로부터의 디지털 입력 데이터 블록 (D)을 암호화하는 반면에, 제 2 암호 블록 (160)은 보수 암호키들 (K1'-K16')에 따라 인버터 (INV2)를 통해 반전된 데이터 블록 (D') (이하, "보수 데이터 블록"이라 칭함)을 암호화한다. 즉, 제 2 암호 블록 (160)은 보수 암호키들 (K1'-K16')에 따라 보수 데이터 블록 (D')을 암호화한다. 암호 블록들 (140, 160)으로부터 출력되는 암호화 데이터 블록들 (C, C')은 레지스터 (180)에 저장되며, 암호화 데이터 블록들 (C, C') 중 하나만이 실질적인 암호화 데이터 블록으로서 사용될 것이다.
이 실시예에 있어서, 제 1 및 제 2 암호 블록들 (140, 160) 각각은 데이터 암호화 표준(Data Encryption Standard, 이하 "DES"라 칭함) 알고리즘에 따라 암호화/복호화 동작을 수행하도록 구현되며, "DES 장치"라고도 불린다. 비록 하나의 버퍼 (BUF1) 및 하나의 인버터 (INV1)만이 도 1에 도시되어 있지만, 각 암호키를 구성하는 48개의 데이터 비트들에 각각 대응하는 버퍼들 및 인버터들이 사용됨은 자명하다. 마찬가지로, 비록 하나의 버퍼 (BUF2) 및 하나의 인버터 (INV2)만이 도 1에 도시되어 있지만, 디지털 입력 데이터 블록을 구성하는 64개의 데이터 비트들에 각각 대응하는 버퍼들 및 인버터들이 사용됨은 자명하다.
앞서의 설명에 따르면, 본 발명에 따른 암호 장치 (100)는 DES 알고리즘을 이용하여 각 디지털 입력 데이터 블록을 암호화/복호화하도록 (enciper/decipher) 설계된다. DES 알고리즘을 이용한 암호 장치는 64-비트 키 (또는 암호키)에 따라 64-비트 데이터를 암호화한다. 복호화 (deciphering)는 암호화하는 데 사용된 것과 동일한 키를 이용함으로써 달성될 수 있다. 특히, 본 발명의 암호 장치 (100)는, 도 1에 도시된 바와 같이, 디지털 입력 데이터 블록 (또는 평문)을 개별적으로 그리고 동시에 암호화하는 2개의 암호 블록들 (140, 160) (또는 DES 장치들)을 갖는다. 암호 블록들 중 하나 (140)는 암호키들 (K1-K16) 및 데이터 블록 (D)을 그대로 이용하여 암호화 동작을 수행하는 반면에, 다른 하나 (160)는 보수 암호키 (K1'-K16') 및 보수 데이터 블록 (D')을 이용하여 암호화 동작을 수행한다. 이는 하나의 암호화 블록에서 '1'의 데이터 비트가 처리될 때 다른 암호화 블록에서 '0'의 데이터 비트가 처리됨을 의미한다. 이러한 병렬 암호화 방식에 따르면, 데이터 블록을 암호화할 때 생기는 전류 패턴 (current pattern)을 이용하여 키값을 찾는 것이 어렵다.
도 2는 도 1에 도시된 암호키 블록의 바람직한 실시예를 보여주는 블록도이다. 키 (KEY)는 64개의 비트들로 구성되며, 64개의 비트들 중 56개의 비트들만이알고리즘에 사용된다. 64-비트 키 (KEY)는 PC1 박스를 통해 54-비트 키 (K+)로 변환된다(permuted). PC1 박스의 변환표는 아래와 같다.
57 | 49 | 41 | 33 | 25 | 17 | 9 |
1 | 58 | 50 | 42 | 34 | 26 | 18 |
10 | 2 | 59 | 51 | 43 | 35 | 27 |
19 | 11 | 3 | 60 | 52 | 44 | 36 |
63 | 55 | 47 | 39 | 31 | 23 | 15 |
7 | 62 | 54 | 46 | 38 | 30 | 22 |
14 | 6 | 61 | 53 | 45 | 37 | 29 |
21 | 13 | 5 | 28 | 20 | 12 | 4 |
표 1의 첫 번째 번지 (first entry)가 "57"이기 때문에, 원시키 (original key) (KEY)의 57번째 비트가 변환된 키 (K+)의 첫 번째 비트가 됨을 의미한다. 원시키 (KEY)의 49번째 비트는 변환된 키 (K+)의 두 번째 키가 된다. 원시키 (KEY)의 네 번째 비트는 변환된 키 (K+)의 마지막 비트가 된다. 원시키의 64개의 비트들 중 54개의 비트들이 변환된 키 (K+)로 나타난다. 예를 들면, "00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001"인 64-비트 키 (KEY)로부터 "1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111"인 56-비트 변환키 (K+)를 얻을 수 있다.
그 다음에, 변환키 (K+)는 각각 28개의 비트들로 구성되는 2개의 왼쪽 및 오른쪽 블록들 (C0, D0)로 분리된다. 예를 들면, 변환키 (K+)로부터, C0 = 1111000 0110011 0010101 0101111와 D0 = 0101010 1011001 1001111 0001111을 얻을 수 있다. 아래의 표 2에 따라 이전 블록의 비트들을 좌측으로 쉬프트시킴으로써 16개의 블록 쌍들 (Cn, Dn) (1≤n≤16)을 얻을 수 있다. 좌측으로 쉬프트하기 위해서, 첫 번째 비트를 제외하고, 각 비트는 두 번째 비트가 블록의 끝으로 회전되도록 좌측으로 한자리씩 이동된다.
예를 들면, C3와 D3는 2번의 좌측 쉬프트 (two left shifts)를 통해 C2와 D2로부터 각각 얻어지고, C16과 D16은 1번의 좌측 쉬프트를 통해 C15와 D15로부터 각각 얻어진다.
마지막으로, 아래의 표 3에 따라 16개의 PC2 박스들을 통해 16개의 키들 (K1-K16)이 생성될 것이다. PC2 박스의 변환표는 아래와 같다.
14 | 17 | 11 | 24 | 1 | 5 |
3 | 28 | 15 | 6 | 21 | 10 |
23 | 19 | 12 | 4 | 26 | 8 |
16 | 7 | 27 | 20 | 13 | 2 |
41 | 52 | 31 | 37 | 47 | 55 |
30 | 40 | 51 | 45 | 33 | 48 |
44 | 49 | 39 | 56 | 34 | 53 |
46 | 42 | 50 | 36 | 29 | 32 |
첫 번째 키 (K1)는 표 3의 변환 스케쥴에 의거하여 결합된 형태의 블록 (C1D1)으로부터 얻어지고, 마지막 키 (K16)는 표 3의 변환 스케쥴에 의거하여 결합된 형태의 블록 (C16D16)으로부터 얻어진다. 예를 들면, PC2 박스에 C1D1 블록을 인가함으로써, K1 = 000110 110000 001011 101111 111111 000111 000001 110010 (48-비트 키)이 된다. 이러한 방식을 통해 각 블록 (C2D2)-(C16D16)으로부터 각 키 (K2-K16)이 얻어질 것이다.
앞서 설명에 따라 생성된 16개의 48-비트 키들 (K1-K16)은 버퍼 (BUF1)를 통해 제 1 암호 블록 (140)으로 그리고 인버터 (INV1)를 통해 제 2 암호 블록 (160)으로 각각 전달된다.
도 3은 도 1에 도시된 제 1 및 제 2 암호 블록들 중 하나를 보여주는 블록도이고, 도 4는 도 3에 도시된 함수처리기를 보여주는 블록도이다. 도 3에는 단지 하나의 암호 블록 (예를 들면, 140)만이 도시되어 있지만, 나머지 역시 도 3에 도시된 것과 동일하게 구성된다. 암호 블록 (140)은 초기 순열기 (141), 최종 순열기 (142), 그리고 복수 개의, 예를 들면, 16개의 라운드들로 구성되며, 각 라운드는 함수 처리기 (f)와 XOR 연산기 (+)로 구성된다.
먼저 도 3을 참조하면, 64-비트 평문 (D)은 도 1에 도시된 버퍼 (BUF2)를 통해 전달되며, 그것의 비트 순서가 초기 순열기 (initial permutation unit) (141)를 통해 변환된다. 즉, 평문의 비트들은 아래의 표 4를 통해 재배열된다. 표 4에서 알 수 있듯이, 평문 (D)의 58번째 비트는 변환된 평문 (IP)의 첫 번째 비트가 된다. 평문 (D)의 50번째 비트는 변환된 평문 (IP)의 두 번째 비트가 된다. 평문 (D)의 7번째 비트는 변환된 평문 (IP)의 마지막 비트가 된다.
58 | 50 | 42 | 34 | 26 | 18 | 10 | 2 |
60 | 52 | 44 | 36 | 28 | 20 | 12 | 4 |
62 | 54 | 46 | 38 | 30 | 22 | 14 | 6 |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
57 | 49 | 41 | 33 | 25 | 17 | 9 | 1 |
59 | 51 | 43 | 35 | 27 | 19 | 11 | 3 |
61 | 53 | 45 | 37 | 29 | 21 | 13 | 5 |
63 | 55 | 47 | 39 | 31 | 23 | 15 | 7 |
표 4의 변환 스케쥴을 평문 (D = 0000 0001 0010 0011 0100 0101 0110 01111000 1001 1010 1011 1100 1101 1110 1111)에 적용하면 변환된 블록 (IP = 1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 00001 1010 1010)을 얻을 수 있다.
여기서, 평문 (D)의 58번째 비트는 변환된 블록 (IP)의 첫 번째 비트가 된다. 평문 (D)의 50번째 비트는 "1"이며 이는 변환된 블록 (IP)의 두 번째 비트가 된다. 평문 (D)의 7번째 비트는 "0"이며 이는 변환된 블록 (IP)의 마지막 비트가 된다.
그 다음에, 변환된 블록 (IP)은 32개의 비트들로 구성되는 왼쪽 및 오른쪽 블록들 (L0, R0)로 분리된다. 예를 들면, 변환된 블록 (IP)로부터, L0 = 1100 1100 0000 0000 1100 1100 1111 1111과 R0 = 1111 0000 1010 1010 1111 00001 1010 1010을 얻을 수 있다. 기호 "+"가 XOR 가산 (XOR addition) (또는 bit-by-bit addition modulo 2)을 나타낸다고 가정하자. 마지막 라운드의 경우, Ln= Rn-1이 되고, Rn= Ln-1+ f(Rn-1, Kn)이 된다. 즉, 각 라운드에 있어서, 이전 결과의 우측의 32개의 비트들은 현 라운드에서 좌측의 32개의 비트들이 된다. 현 라운드에서 우측의 32개의 비트들의 경우, 이전 라운드의 좌측의 32개의 비트들을 함수 처리기 (f)의 결과와 함께 XOR 연산한다.
예를 들면, n=1인 경우,
K1 = 000110 110000 001011 101111 111111 000111 000001 110010
L1 = R0 = 1111 0000 1010 1010 1111 0000 1010 1010
R1 = Lo + f(Ro, K1)이라 가정하자.
함수 처리기 (f)는, 도 4에 도시된 바와 같이, 각 블록 (Rn-1)을 32개의 비트들에서 48개의 비트들로 확장한다. 이는 Rn-1 블록의 비트들 중 일부를 반복시키는 선택 테이블 (표 5 참조)을 이용하여 행해진다. 선택 테이블이 사용되는 경우, 선택 테이블의 사용을 함수 (E)로 표기하기로 가정하자. 따라서 E(Rn-1)은 32-비트 입력 블록과 48-비트 출력 블록을 갖는다. 출력 블록의 48개의 비트들은 아래의 표 5에 따라 입력 블록의 32개의 비트들을 선택함으로써 얻어진다.
32 | 1 | 2 | 3 | 4 | 5 |
4 | 5 | 6 | 7 | 8 | 9 |
8 | 9 | 10 | 11 | 12 | 13 |
12 | 13 | 14 | 15 | 16 | 17 |
16 | 17 | 18 | 19 | 20 | 21 |
20 | 21 | 22 | 23 | 24 | 25 |
24 | 25 | 26 | 27 | 28 | 29 |
28 | 29 | 30 | 31 | 32 | 1 |
예를 들면, E(R0)는 다음과 같이 R0 블록으로부터 산출된다.
R0 = 1111 0000 1010 1010 1111 0000 1010
E(R0) = 011110 100001 010101 010101 011110 100001 010101 010101
즉, 4개의 원시 비트들로 구성된 각 블록은 6개의 출력 비트들로 구성된 블록으로 확장된다.
함수 처리기 (f)에 있어서, 도 4에 도시된 바와 같이, 출력 블록 (E(Rn-1))은 키 (Kn)와 XOR 연산된다. 연산 결과는 Kn + E(Rn-1)로 표현된다. 예를 들면, K1 = 000110 110000 001011 101111 111111 000111 000001 110010이고 E(R0) = 011110 100001 010101 010101 011110 100001 010101 010101인 경우, Kn + E(Rn-1) =011000 010001 011110 111010 100001 100110 010100 100111이 된다.
XOR 연산된 결과 (Kn + E(Rn-1))로서, 48개의 비트들은 각각 6개의 비트들로 구성되는 8개의 그룹들로 분리된다. 각 그룹의 비트들은 "S 박스"라 불리는 대응하는 테이블에서 어드레스로서 사용된다. 대응하는 S 박스들 (S1-S8)은 6-비트 입력 블록들을 4-비트 출력 블록들로 각각 변환된다. 최종적으로 32 비트들이 얻어진다. 이전의 결과는 아래의 형식으로 표현될 수 있다.
Kn + E(Rn-1)=B1B2B3B4B5B6B7B8
여기서, 각 Bj (j=1-8)는 6개의 비트들로 구성된 그룹이다. S 박스들 (S1-S8)을 통해 출력되는 결과는 S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8)으로 표현될 수 있다. 각 함수들 (S1, S2, …, S8)은 입력으로서 6-비트 블록을 받아들여 출력으로서 4-비트 블록을 출력한다. 예를 들면, S1 박스의 변환 스케쥴은 아래의 표 6과 같다.
C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | C13 | C14 | C15 | |
R0 | 14 | 4 | 13 | 1 | 2 | 15 | 11 | 8 | 3 | 10 | 6 | 12 | 5 | 9 | 0 | 7 |
R1 | 0 | 15 | 7 | 4 | 14 | 2 | 13 | 1 | 10 | 6 | 12 | 11 | 9 | 5 | 3 | 8 |
R2 | 4 | 1 | 14 | 8 | 13 | 6 | 2 | 11 | 15 | 12 | 9 | 7 | 3 | 10 | 5 | 0 |
R3 | 15 | 12 | 8 | 2 | 4 | 9 | 1 | 7 | 5 | 11 | 3 | 14 | 10 | 0 | 6 | 13 |
여기서, "R"은 행을 나타내고 "C"는 열을 나타낸다.
만약 S1이 표 6에서 정의된 함수이고 B이 6-비트 블록이면, S1(B)는 다음과 같이 결정된다. B의 첫 번째 및 마지막 비트들은 0에서 3까지의 10진수 범위 내의 2진수를 나타낸다. 그 수를 i라고 하자. B의 나머지 4개의 비트들은 0에서 16까지의 10진수 범위 내의 2진수를 나타낸다. 그 수를 j라고 하자. 이러한 원리에 따라,i번째 행 및 j번째 열의 수가 선택된다. 선택된 수는 4-비트 블록이 된다. 예를 들면, 입력 블록 (B)이 "011011"인 경우, 첫 번째 비트는 "0"이고 마지막 비트는 "1"이 되며, 그 결과 행 어드레스로서 "01"이 주어진다. 이는 두 번째 행 (R1)이 선택됨을 의미한다. 나머지 4개의 비트들은 "1101"이며, 이는 10진수 13을 나타내는 이진수이다. 즉, 14번째 열 (C13)이 선택된다. 표 6에서 알 수 있듯이, R1과 C13에 위치한 수는 5이며, 5는 이진수 0101이다. 그러므로 S1(011011)=0101. 나머지 S 박스들의 변환표가 도 5에 도시되어 있다. 나머지 S 박스들 역시 앞서 설명된 것과 동일한 방식으로 6-비트 블록을 4-비트 블록으로 변환한다.
예를 들면, 첫 번째 라운드의 경우, 8개의 S 박스들의 출력으로서 아래의 결과를 얻을 수 있다.
K1 + E(R0) = 011000 010001 011110 111010 100001 100110 010100 100111
S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8) = 0101 1100 1000 0010 1011 0101 1001 0111
함수 처리기 (f)의 마지막 단계는 S 박스들의 출력을 변환 (permutation: P)하는 것이다. 함수 처리기 (f)의 최종적인 값은 f = P(S1(B1)S2(B2)...S8(B8))이 된다. 변환 (P)은 아래의 표 7에 의해서 정의된다. 입력 블록의 비트들을 재배열함으로써 32-비트 입력에서 32-비트 출력이 생성된다.
16 | 7 | 20 | 21 |
29 | 12 | 28 | 17 |
1 | 15 | 23 | 26 |
5 | 18 | 31 | 10 |
2 | 8 | 24 | 14 |
32 | 27 | 3 | 9 |
19 | 13 | 30 | 6 |
22 | 11 | 4 | 25 |
예를 들면, 8개의 S 박스들의 출력
S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8) = 0101 1100 1000 0010 1011 0101 1001 0111으로부터
최종적인 값 (f) "0010 0011 0100 1010 1010 1001 1011 1011"을 얻을 수 있다.
R1 = L0 + f(R0, K1 )
= 1100 1100 0000 0000 1100 1100 1111 1111
+ 0010 0011 0100 1010 1010 1001 1011 1011
= 1110 1111 0100 1010 0110 0101 0100 0100
다시 도 3을 참조하면, 다음의 라운드에서, L2는 앞서의 계산으로 얻어진 R1이 되고 R2는 L1 + f(R0, K1)이 된다. 나머지 라운드들 역시 앞서 설명된 것과 동일한 방법으로 동작한다. 마지막 라운드의 출력으로서, L16 및 R16 블록들이 생성된다. 2개의 블록들의 순서는 R16L16의 64-비트 블록이 되도록 뒤집어진다. 그렇게 얻어진 64-비트 블록의 비트 순서는 아래의 표 8에 따라 최종 순열기 (142)를 통해 재배열된다.
40 | 8 | 48 | 16 | 56 | 24 | 64 | 32 |
39 | 7 | 47 | 15 | 55 | 23 | 63 | 31 |
38 | 6 | 46 | 14 | 54 | 22 | 62 | 30 |
37 | 5 | 45 | 13 | 53 | 21 | 61 | 29 |
36 | 4 | 44 | 12 | 52 | 20 | 60 | 28 |
35 | 3 | 45 | 11 | 51 | 19 | 59 | 27 |
34 | 2 | 43 | 10 | 50 | 18 | 58 | 26 |
33 | 1 | 41 | 9 | 49 | 17 | 57 | 25 |
앞서 설명된 방법을 사용하여 16개의 라운드들을 처리한 경우,
L16 = 0100 0011 0100 0010 0011 0010 0011 0100
R16 = 0000 1010 0100 1100 1101 1001 1001 0101이라고 가정하자.
2개의 블록들의 순서를 바꾸고 최종 순열기 (142)에 R16L16 블록을 인가하면,
R16L16 = 00001010 01001100 11011001 10010101 01000011 01000010 00110010 00110100
IP-1= 10000101 11101000 00010011 01010100 00001111 00001010 10110100 00000101이 된다.
이는 16진수 형태로 "85E813540F0AB405"이 된다. 결론적으로 평문 (M=0123456789ABCDEF)는 암호문 (C=85E813540F0AB405)으로 암호화된다.
앞서 설명된 바와 같이, 본 발명에 따른 암호 장치는 2개의 암호 블록들 (140, 160)을 포함한다. 암호 블록들 (140, 160)은 앞서 설명된 것과 동일한 방식으로 암호화 동작을 수행한다. 특히, 암호 블록 (140)은 평문 (D)와 암호키들 (K1-K16)을 그대로 사용하는 반면에, 암호 블록 (160)은 보수 평문 (D')와 보수 암호키들 (K1'-K16')을 사용한다. 일반적으로, 함수 처리기 (f)가 동작할 때 가장 많은전류가 소모되기 때문에, "0" 비트를 처리할 때 생기는 소모 전류 패턴은 "1" 비트를 처리할 때 생기는 소모 전류 패턴과 다르다. 그러한 까닭에, 소모 전류 패턴을 모니터링(또는 분석)함으로써 암호화 과정에 사용되는 키값을 찾는 것이 가능하다. 본 발명의 경우, 하지만, 제 1 암호 블록 (140)의 라운드의 함수 처리기 (f)에서 "0" 비트가 처리될 때, 제 2 암호 블록 (160)의 대응하는 라운드의 함수 처리기 (f)에서 "1" 비트가 처리된다. 즉, 암호 블록들 (140, 160)의 대응하는 함수 처리기들이 서로 상반된 데이터 값들을 처리하기 때문에, "0" 및 "1" 비트들을 처리할 때 각각 생기는 소모 전류 패턴들 간의 차이는 현저히 감소될 수 있다.
이상에서, 본 발명에 따른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만, 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상 및 범위를 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
상술한 바와 같이, 암호 블록들 (140, 160)의 대응하는 함수 처리기들이 서로 상반된 데이터 값들을 동시에 처리하기 때문에, "0" 및 "1" 비트들을 처리할 때 각각 생기는 소모 전류 패턴들 간의 차이는 현저히 감소될 수 있다. 그러므로, 소모 전류 패턴을 이용하여 키값을 찾는 것이 어렵다.
Claims (6)
- 일련의 암호 키들의 입력에 따라, 디지털 입력 데이터 블록을 제 1 디지털 출력 데이터 블록으로 비선형적으로 암호 변환하는 제 1의 N-라운드 디이에스(DES) 장치와;상기 디지털 입력 데이터 블록을 입력하여 반전시키는 제 1 입력 수단과;상기 일련의 암호 키들을 입력하여 반전시키는 제 2 입력 수단과; 그리고상기 반전된 암호 키들의 입력에 따라, 상기 반전된 디지털 입력 데이터 블록을 제 2 디지털 출력 데이터 블록으로 비선형적으로 암호 변환하는 제 2의 N-라운드 디이에스 장치를 포함하며, 상기 제 1 및 제 2의 N-라운드 디이에스 장치들은 암호 변환 동작을 동시에 수행하는 것을 특징으로 하는 암호 장치.
- 제 1 항에 있어서,상기 제 1 및 제 2의 N-라운드 디이에스 장치들은 디이에스 알고리즘 (DES algorithm)에 따라 암호 변환 동작을 각각 수행하는 것을 특징으로 하는 암호 장치.
- 제 1 항에 있어서,상기 제 1 및 제 2의 N-라운드 디이에스 장치들로부터의 상기 제 1 및 제 2 디지털 출력 데이터 블록들을 저장하는 수단을 더 포함하며, 상기 제 1 및 제 2 디지털 출력 데이터 블록들 중 하나만이 암호 데이터 블록으로서 사용되는 것을 특징으로 하는 암호 장치.
- 제 1 항에 있어서,상기 디지털 입력 데이터 블록을 상기 제 1의 N-라운드 디이에스 장치로 전달하는 제 3 입력 수단을 더 포함하는 것을 특징으로 하는 암호 장치.
- 디지털 입력 데이터를 암호 변환하는 방법에 있어서:일련의 암호 키들의 입력에 따라, 상기 디지털 입력 데이터 블록을 제 1 디지털 출력 데이터 블록으로 비선형적으로 암호 변환하는 단계와;상기 디지털 입력 데이터 블록 및 상기 일련의 암호 키들을 반전시키는 단계와; 그리고상기 반전된 암호 키들의 입력에 따라, 상기 반전된 디지털 입력 데이터 블록을 제 2 디지털 출력 데이터 블록으로 비선형적으로 암호 변환하는 단계를 포함하며, 상기 제 1 및 제 2 디지털 출력 데이터 블록들을 얻기 위한 상기 암호 변환 동작들은 디이에스 알고리즘 (DES algorithm)에 따라 동시에 수행되는 것을 특징으로 하는 방법.
- 제 5 항에 있어서,상기 제 1 및 제 2 디지털 출력 데이터 블록들 중 하나만이 암호 데이터 블록으로서 사용되는 것을 특징으로 하는 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0069946A KR100456599B1 (ko) | 2002-11-12 | 2002-11-12 | 병렬 디이에스 구조를 갖는 암호 장치 |
DE10352680A DE10352680A1 (de) | 2002-11-12 | 2003-11-03 | Verschlüsselungsvorrichtung und Verschlüsselungsverfahren |
FR0313192A FR2847093B1 (fr) | 2002-11-12 | 2003-11-10 | Procede et appareil de chiffrement avec une structure (des) parallele |
US10/706,829 US20040096059A1 (en) | 2002-11-12 | 2003-11-12 | Encryption apparatus with parallel Data Encryption Standard (DES) structure |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2002-0069946A KR100456599B1 (ko) | 2002-11-12 | 2002-11-12 | 병렬 디이에스 구조를 갖는 암호 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040041860A true KR20040041860A (ko) | 2004-05-20 |
KR100456599B1 KR100456599B1 (ko) | 2004-11-09 |
Family
ID=32171624
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2002-0069946A KR100456599B1 (ko) | 2002-11-12 | 2002-11-12 | 병렬 디이에스 구조를 갖는 암호 장치 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20040096059A1 (ko) |
KR (1) | KR100456599B1 (ko) |
DE (1) | DE10352680A1 (ko) |
FR (1) | FR2847093B1 (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITMI20011938A1 (it) * | 2001-09-17 | 2003-03-17 | Cit Alcatel | Metodo per criptare un flusso di dati |
KR20080072345A (ko) * | 2007-02-02 | 2008-08-06 | 삼성전자주식회사 | 암호화 장치 및 그 방법 |
JP4687775B2 (ja) * | 2008-11-20 | 2011-05-25 | ソニー株式会社 | 暗号処理装置 |
FR2952256B1 (fr) * | 2009-11-04 | 2011-12-16 | St Microelectronics Rousset | Protection d'une cle de chiffrement contre des attaques unidirectionnelles |
FR2953350B1 (fr) * | 2009-11-04 | 2012-05-18 | St Microelectronics Rousset | Protection d'une cle de chiffrement |
TWI521935B (zh) * | 2013-08-08 | 2016-02-11 | 新唐科技股份有限公司 | 加解密裝置及其加解密方法 |
US20150222421A1 (en) * | 2014-02-03 | 2015-08-06 | Qualcomm Incorporated | Countermeasures against side-channel attacks on cryptographic algorithms |
CN105337732B (zh) * | 2015-10-29 | 2019-10-15 | 全球能源互联网研究院 | 一种可处理大分组数据的加密方法 |
US10650621B1 (en) | 2016-09-13 | 2020-05-12 | Iocurrents, Inc. | Interfacing with a vehicular controller area network |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3798359A (en) * | 1971-06-30 | 1974-03-19 | Ibm | Block cipher cryptographic system |
US4613901A (en) * | 1983-05-27 | 1986-09-23 | M/A-Com Linkabit, Inc. | Signal encryption and distribution system for controlling scrambling and selective remote descrambling of television signals |
US4712238A (en) * | 1984-06-08 | 1987-12-08 | M/A-Com Government Systems, Inc. | Selective-subscription descrambling |
US4803725A (en) * | 1985-03-11 | 1989-02-07 | General Instrument Corp. | Cryptographic system using interchangeable key blocks and selectable key fragments |
US5317638A (en) * | 1992-07-17 | 1994-05-31 | International Business Machines Corporation | Performance enhancement for ANSI X3.92 data encryption algorithm standard |
US5473693A (en) * | 1993-12-21 | 1995-12-05 | Gi Corporation | Apparatus for avoiding complementarity in an encryption algorithm |
US5594797A (en) * | 1995-02-22 | 1997-01-14 | Nokia Mobile Phones | Variable security level encryption |
KR100250803B1 (ko) * | 1995-09-05 | 2000-04-01 | 다니구찌 이찌로오 | 데이타 변환장치 및 데이타 변환방법 |
US5870468A (en) * | 1996-03-01 | 1999-02-09 | International Business Machines Corporation | Enhanced data privacy for portable computers |
US5796830A (en) * | 1996-07-29 | 1998-08-18 | International Business Machines Corporation | Interoperable cryptographic key recovery system |
JPH10301490A (ja) * | 1997-04-24 | 1998-11-13 | Fuji Xerox Co Ltd | 暗号化方法 |
JPH10303883A (ja) * | 1997-04-24 | 1998-11-13 | Fuji Xerox Co Ltd | 暗号化方法 |
JPH1152850A (ja) * | 1997-08-07 | 1999-02-26 | Hitachi Ltd | 暗号変換方法および装置 |
US6075865A (en) * | 1998-07-01 | 2000-06-13 | Tecsec Incorporated | Cryptographic communication process and apparatus |
DE19936918A1 (de) * | 1998-09-30 | 2000-04-06 | Philips Corp Intellectual Pty | Verschlüsselungsverfahren zum Ausführen von kryptographischen Operationen |
JP2000165375A (ja) * | 1998-11-30 | 2000-06-16 | Hitachi Ltd | 情報処理装置、icカード |
FR2787900B1 (fr) * | 1998-12-28 | 2001-02-09 | Bull Cp8 | Circuit integre intelligent |
DE10000503A1 (de) * | 2000-01-08 | 2001-07-12 | Philips Corp Intellectual Pty | Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb |
FR2804524B1 (fr) * | 2000-01-31 | 2002-04-19 | Oberthur Card Systems Sas | Procede d'execution d'un protocole cryptographique entre deux entites electroniques |
US20010042204A1 (en) * | 2000-05-11 | 2001-11-15 | David Blaker | Hash-ordered databases and methods, systems and computer program products for use of a hash-ordered database |
KR100377175B1 (ko) * | 2000-06-08 | 2003-03-26 | 주식회사 하이닉스반도체 | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 |
KR100377172B1 (ko) * | 2000-06-13 | 2003-03-26 | 주식회사 하이닉스반도체 | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러 |
US20020048364A1 (en) * | 2000-08-24 | 2002-04-25 | Vdg, Inc. | Parallel block encryption method and modes for data confidentiality and integrity protection |
JP2003018143A (ja) * | 2001-06-28 | 2003-01-17 | Mitsubishi Electric Corp | 情報処理装置 |
DE10136335B4 (de) * | 2001-07-26 | 2007-03-22 | Infineon Technologies Ag | Prozessor mit mehreren Rechenwerken |
GB0121793D0 (en) * | 2001-09-08 | 2001-10-31 | Amphion Semiconductor Ltd | An apparatus for generating encryption/decryption keys |
EP1351430B1 (en) * | 2002-04-03 | 2005-10-05 | Matsushita Electric Industrial Co., Ltd. | Expansion key generating device, encryption device and encryption system |
-
2002
- 2002-11-12 KR KR10-2002-0069946A patent/KR100456599B1/ko not_active IP Right Cessation
-
2003
- 2003-11-03 DE DE10352680A patent/DE10352680A1/de not_active Ceased
- 2003-11-10 FR FR0313192A patent/FR2847093B1/fr not_active Expired - Fee Related
- 2003-11-12 US US10/706,829 patent/US20040096059A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
FR2847093B1 (fr) | 2005-02-18 |
US20040096059A1 (en) | 2004-05-20 |
FR2847093A1 (fr) | 2004-05-14 |
KR100456599B1 (ko) | 2004-11-09 |
DE10352680A1 (de) | 2004-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10951392B2 (en) | Fast format-preserving encryption for variable length data | |
EP0802653B1 (en) | Multi-cycle non-parallel data encryption engine | |
US7092525B2 (en) | Cryptographic system with enhanced encryption function and cipher key for data encryption standard | |
JPH11509940A (ja) | データブロックおよび鍵を非線形的に結合する暗号方法および装置 | |
EP0802652A2 (en) | Data encryptor having a scalable clock | |
JP2000162965A (ja) | 暗復号装置及び記憶媒体 | |
Abd Ali et al. | Novel encryption algorithm for securing sensitive information based on feistel cipher | |
CN104348625A (zh) | 加解密装置及其加解密方法 | |
US20020159588A1 (en) | Cryptography with unconditional security for the internet, commercial intranets, and data storage | |
Paar et al. | The data encryption standard (DES) and alternatives | |
Joshy et al. | Text to image encryption technique using RGB substitution and AES | |
KR100456599B1 (ko) | 병렬 디이에스 구조를 갖는 암호 장치 | |
US7212633B2 (en) | Expansion key generating device, encryption device and encryption system | |
Shivhare et al. | An enhanced image encryption technique using DES algorithm with random image overlapping and random key generation | |
EP2413305B1 (en) | Data processing device and data processing method | |
JP2004157535A (ja) | データ暗号化方法 | |
Baigneres et al. | A classical introduction to cryptography exercise book | |
Tayal et al. | Analysis of various cryptography techniques: a survey | |
US6035042A (en) | High speed and method of providing high speed table generation for block encryption | |
JP2002510058A (ja) | 2進データ・ブロックの暗号変換のための方法 | |
JPH10153954A (ja) | 暗号装置 | |
JPH10303881A (ja) | 暗号化復号化装置および方法 | |
Thirupalu et al. | A New Technique to Generate Ciphertext from Reversed Plaintext Code | |
JP2000089666A (ja) | 暗号化/復号化装置 | |
Singh et al. | A new symmetric key encryption algorithm based on jumbling binary sequence of message |
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: 20081103 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |