KR20020033590A - 암호 키 생성 회로 - Google Patents
암호 키 생성 회로 Download PDFInfo
- Publication number
- KR20020033590A KR20020033590A KR1020010067705A KR20010067705A KR20020033590A KR 20020033590 A KR20020033590 A KR 20020033590A KR 1020010067705 A KR1020010067705 A KR 1020010067705A KR 20010067705 A KR20010067705 A KR 20010067705A KR 20020033590 A KR20020033590 A KR 20020033590A
- Authority
- KR
- South Korea
- Prior art keywords
- byte
- bit
- information
- round
- rotation
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
128 bit 평문의 암호화를 위하여 (64×n) bit (2≤n≤4;여기서 n은 정수) 를 갖는 암호 키로부터 1개 이상의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키를 생성시키는 암호 키 생성 회로는 1 byte 만큼 (8×n+1) byte 정보를 회전하여 바이트 회전을 수행하는 바이트 회전 회로, (8×n+1) byte 정보의 각 바이트에서의 비트를 3 bit 만큼 회전하여 3-bit 회전을 수행하는 3-bit 회전 회로, 및 바이트 회전 및 3-bit 회전으로 처리되는 (8×n+1) byte 정보의 최하위 바이트로부터 128 bit 바이어스 값을 (8×n) byte 정보에 가산하는 16개의 가산기를 구비하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시킨다.
Description
본 발명은 정보를 암호화는데 사용할 수 있는 회로에 관한 것으로, 특히, "SAFER+" 라 하는 암호 알고리즘에 사용되는 라운드 서브 키를 생성시키기 위한 소규모의 암호 키 생성 회로에 관한 것이다.
Cylink Corp.에서 개발된 "SAFER+" 로서 알려진 정보 암호 알고리즘이 공지되어 왔다. "SAFER+" 를 도 20에 도시하고 있으며, 참조 번호 1로 도시한다. "SAFER+" 암호 알고리즘 (1) 은 128, 192, 또는 256 bit 의 비트 길이를 갖는 암호 키를 사용하여, 사전암호화된 128 bit 입력 데이터 평문 (plaintext) 을 128 bit암호문으로 암호화한다.
"SAFER+" 암호 알고리즘 (1) 은, 암호 키가 128 bit를 가질 경우, 17개의 라운드 서브 키들을 생성시키고, 암호 키가 192 bit를 가질 경우, 25개의 라운드 서브 키들을 생성시키고, 암호 키가 256 bit를 가질 경우, 33개의 라운드 서브 키들을 생성시키는 라운드 서브 키 생성 회로 (2), 및 라운드 서브 키 생성 회로 (2) 에 의해 생성되는 라운드 서브 키를 사용하여 평문를 암호화하는 암호화 회로 (3) 를 사용한다.
이러한 알고리즘에서는, "라운드" 라 하는 스테이지들로 계산과정을 나눈다. 암호 키가 128 bit인 경우, 라운드의 개수는 8개이고, 암호 키가 192 bit 인 경우 라운드 개수는 12개이고, 암호 키가 256 bit를 갖는 경우, 라운드 개수는 16개이다. 각각의 라운드는 두개의 서브 라운드로 추가로 나누어지고, 오직 최종 라운드만이 3개의 서브 라운드로 나누어진다. 따라서, 암호 키가 128 bit 인 경우, 서브 라운드의 개수는 17개이고, 암호 키가 192 bit 인 경우 라운드 개수는 25개이고, 암호 키가 256 bit를 갖는 경우, 라운드 개수는 33개이다. 128 bit 라운드 서브 키를 각각의 서브 라운드에 대하여 생성한다.
도 21은 암호 키가 128 bit 를 갖는 경우에, 17개의 라운드 서브 키를 생성시키는 알고리즘을 설명한다. 도 22는 암호 키가 192 bit 를 갖는 경우에, 25개의 라운드 서브 키를 생성시키는 알고리즘을 설명한다. 도 23은 암호 키가 256 bit 를 갖는 경우에, 33개의 라운드 서브 키를 생성시키는 알고리즘을 설명한다. 이들 알고리즘중에서, 암호 키가 128 bit 를 갖는 경우에 대한 알고리즘을도 21을 사용하여 설명한다.
도 21에 도시한 알고리즘은 17개의 라운드 서브 키 (K1내지 K17) 를 128 bit 암호 키로부터 생성시키는 알고리즘이다. "1","2",..."15","16" 으로 번호새긴 정사각형 박스 각각은 128 bit 입력 암호 키들중 8 bit를 나타낸다. 이 128 bit (즉, 16 byte) 중에는, "1" 번 박스에 최하위 바이트를 할당하고, "16" 번 박스에 최상위 바이트를 할당한다. 128 bit들 중에서, 가장 중요하지 않은 비트는 "1" 번 박스로 표시되는 최하위 바이트중 최하위 비트이고, 가장 중요한 비트는 "16" 번 박스로 표시되는 최상위 바이트중 최상위 비트이다. 제 1 라운드 서브 키 (K1) 에 대하여, 128 bit 암호 키를, 있는 그대로 출력한다.
제 2 서브 라운드에 대한 라운드 서브 키 (K2) 를 생성시키기 위하여, 17번째 바이트를 다음과 같이 생성시킨다. 입력되는 128 bit 암호 키를 16 byte로 분할하여, 16 byte에 있어서 동일한 비트위치에서 정보의 배타적 OR (XOR) 을 탐색한다. 그 결과값을, 17번째 바이트에서의 각각의 비트 위치에 대한 정보를 표시함으로써 정의한다.
다음, 3-bit 회전을 각각의 17 번째 바이트에서 실행한다. 즉, 예를 들면, {7, 6, 5, 4, 3, 2, 1, 0} 인 8 bit들을 3 bit만큼 좌측으로 회전하여, {4, 3, 2, 1, 0, 7, 6, 5} 를 획득한다. j 번째 서브 라운드에 대한 라운드 서브 키 (Kj) 와 같이, j번째 바이트로 표시하는 정보를 최하위 바이트로서 먼저 출력한다. 다음, j+1 번째 바이트, j+2 번째 바이트,..., j+15 번째 바이트를 전체 16 byte로출력한다. j+1이 17을 초과한 경우, 17을 j+1로 감산함으로써 획득되는 바이트의 수치를 출력한다. 예를 들면, 라운드 서브 키 (K15) 의 경우에서는, 바이트 {15, 16, 17, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13} 들을 순서대로 선택하여 출력한다. 다음, 바이어스 값 (Bj) 을 이러한 순서로 출력한 바이트에 의해 표시되는 정보에 가산한다. 이 바이어스 값 (Bj) 은 128 byte로 표시되는 고정값으로, 서브 라운드 수 (j) 로 결정된다. 바이어스 값 (Bj) 및 선택값을 함께 가산하기 때문에, 각각의 바이트에 대한 캐리오버를 고려할 필요가 없다. 바이어스 값 (Bj) 의 i 번째 바이트가 (Bj[i]) 를 갖는 경우에, 라운드 서브 키 (K15) 의 최하위 바이트는 내부 레지스터의 15번째 바이트로 표시되는 정보 및 B15[0] 를 가산하여 얻어진다. 캐리 오버가 각각의 바이트를 고려할 필요가 없는 가산과정에 따라서, 가산 결과가 α= 225인 경우에, 있는 그대로, α를 가산 결과로서 설정하고, 가산 결과가 α>225인 경우에, α-256를 가산 결과로 설정한다.
위에서 설명한 바와 같이, 라운드 서브 키 (K2내지 K17) 에 대하여, 3-bit 회전, 및 j번째 바이트로부터 j+15번째 바이트까지의 바이어스 값의 출력 및 가산을 반복하여, 대응하는 라운드 서브 키들을 생성시킨다.
도 22 및 도 23에 도시한 바와 같이, 다음의 차이를 제외하고는, 128 bit 암호 키의 경우와 기본적으로 동일한 방식으로, 라운드 서브 키를 192 bit 암호 키로부터 또는 256 bit 암호 키로부터 생성시킨다. 기억된 바이트의 수는 더욱 크다. 부가적으로, 128 bit의 경우에, j+1의 값이 17을 초과하는 경우에, 17을 j+1로 감산한다. 192bit의 경우에는, j+1의 값이 25를 초과하는 경우에, 25를 j+1로 감산한다. 256 bit의 경우에는, j+1의 값이 33을 초과하는 경우에, 33을 j+1로 감산한다.
다른 많은 암호 알고리즘이 제안되어 왔으며, 예를 들면, 일본특개평 제 2000-39840호에 개시되어 있다. 이 공보에는, 키 생성의 어떠한 특정예도 포함하고 있지 않다. 일본특개평 제 11-45049 호에는 키 생성 과정을 개시하고 있으나, 이 공보에 개시되어 있는 암호 알고리즘은 본 발명에 의해 사용되는 SAFER+와 상이한 것이다.
라운드 서브 키를 생성시키는 상술한 알고리즘은 다음과 같은 문제를 갖고 있다. 암호 키를 입력한 경우, 모든 라운드 서브 키를 동시에 계산하여 출력한다. 따라서, 회로의 크기가 방대하게 커진다. 이것은 각각의 라운드 서브 키에 대하여 출력되는 바이트를 변경하는데 셀렉터가 필요하고, 또한, 16배 개수의 가산기 (서브 라운드 키의 개수 - 1) 가 필요하다는 것, 즉, 암호 키가 128 bit를 갖는 경우에는, 256개의 가산기가 필요하고, 암호 키가 192 bit를 갖는 경우에는, 384개의 가산기가 필요하고, 암호 키가 256 bit를 갖는 경우에는, 512개의 가산기가 필요하기 때문이라는 것을 쉽게 이해할 것이다. 라운드 서브 키를 하나씩 출력하는 도 24에 도시한 구조의 경우에서도, 모든 라운드 서브 키를 동시에 계산해야 하는 동일한 문제가 발생한다. 도 24에서는, 라운드 서브 키 생성 회로(2) 는 암호 키의 상이한 바이트에 있어서 동일한 위치에 위치되는 비트들의 배타적 OR 을 계산하는 배타적 OR 회로 (9), 레지스터 (10), 3-bit 회전 회로 (12), 출력 셀렉터 (14), 가산기 (15), 및 바이어스 테이블 (16) 을 구비한다.
도 1은 본 발명의 제 1 실시예에 따른 라운드 서브 키 생성 회로를 도시하는 블록도.
도 2a 및 도 2b는 도 1에 도시한 라운드 서브 키 생성 회로의 바이트 회전 회로의 동작을 도시.
도 3은 도 1에 도시한 라운드 서브 키 생성 회로에서 3-bit 회전 회로를 도시.
도 4는 도 1에 도시한 라운드 서브 키 생성 회로의 동작을 도시.
도 5는 본 발명의 제 2 실시예에 따른 라운드 서브 키 생성 회로를 설명하는 블록도.
도 6은 도 5에 도시한 라운드 서브 키 생성 회로의 바이트/3-bit 회전 회로의 동작을 도시.
도 7은 도 5에 도시한 라운드 서브 키 생성 회로의 바이트/3-bit 회전 회로의 동작을 도시.
도 8은 도 5에 도시한 라운드 서브 키 생성 회로의 동작을 도시.
도 9는 본 발명의 제 3 실시예에 따른 라운드 서브 키 생성 회로를 도시하는 블록도.
도 10은 도 9에 도시한 라운드 서브 키 생성 회로의 동작을 도시.
도 11은 본 발명의 제 4 실시예에 따른 라운드 서브 키 생성 회로를 도시하는 블록도.
도 12는 도 11에 도시한 라운드 서브 키 생성 회로의 바이트/3-bit 회전 회로를 도시.
도 13은 도 11에 도시한 라운드 서브 키 생성 회로의 동작을 도시.
도 14는 본 발명의 제 5 실시예에 따른 라운드 서브 키 생성 회로를 도시하는 블록도.
도 15a 및 15b는 도 14에 도시한 라운드 서브 키 생성 회로에서 2-byte 회전 회로의 동작을 도시.
도 16은 도 14에 도시한 라운드 서브 키 생성 회로의 동작을 도시.
도 17은 본 발명의 제 6 실시예에 따른 라운드 서브 키 생성 회로를 도시하는 블록도.
도 18은 도 17에 도시한 라운드 서브 키 생성 회로에서 2-byte/3-bit 회전 회로의 동작을 도시.
도 19는 도 17에 도시한 라운드 서브 키 생성 회로의 동작을 도시.
도 20은 SAFER+라는 암호 알고리즘을 도시하는 블록도.
도 21은 암호 키가 128 bit인 경우에, 라운드 서브 키를 생성시키는 과정을 도시.
도 22는 암호 키가 196 bit인 경우에, 라운드 서브 키를 생성시키는 과정을도시.
도 23은 암호 키가 256 bit인 경우에, 라운드 서브 키를 생성시키는 과정을 도시.
도 24는 종래기술의 라운드 서브 키 생성 회로를 도시하는 블록도.
*도면의 주요 부분에 대한 부호의 설명*
2: 라운드 서브 키 생성 회로9 : 배타적 OR 회로
10 : 내부 레지스터11 : 바이트 회전 회로
12 : 3-bit 회전 회로13 : 바이트/3-bit 회전 회로
14 : 셀렉터15 : 가산기
16 : 바이어스 테이블
본 발명의 일 태양에 따르면, 128 bit 평문의 암호화를 위하여 1개 이상의 서브 라운드에 사용되는 1개 이상의 128 bit 라운드 서브 키를, (64×n) bit (2≤n≤4; n은 정수) 를 갖는 암호 키로부터 생성시키는 암호 키 생성 회로는, 암호 키의 각각의 바이트에 포함되는 8 bit 정보에 있어서 동일한 위치에 위치되는 1 bit 정보의 배타적 OR을 계산하여, 1 byte 계산 정보를 생성시키는 배타적 OR 회로, (8 ×n) byte와 1 byte의 계산 정보를 갖는 암호 키의 합으로써 표시되는 (8 ×n + 1) byte 정보를 기억하는 레지스터, 1개 이상의 서브 라운드의 각 서브 라운드에서 1 byte만큼 (8 ×n + 1) byte 정보를 회전시켜 바이트 회전을 수행하는 바이트 회전 회로, 각각의 서브 라운드에서 (8 ×n + 1) byte 정보의 각 바이트에서의 비트를 3 bit만큼 회전시켜 3-bit 회전을 수행하는 3-bit 회전회로, 및 바이트 회전 및 3-bit 회전 과정을 거쳐 얻은 (8 ×n + 1) byte 정보의 최하위 바이트로부터의 (8 ×n) byte 정보에, 128 bit 바이어스 값을 가산하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시키는 16개의 가산기를 구비한다.
본 발명에 따르면, 각각의 라운드 서브 키에 대하여 출력되는 바이트들의 순서를 변경하는데 셀렉터가 필요없다. 따라서, 회로의 크기를 축소할 수 있다.
본 발명의 다른 태양에 따르면, 128 bit 평문의 암호화를 위하여 1개 이상의서브 라운드에 사용되는 1개 이상의 128 bit 라운드 서브 키를, (64×n) bit (2≤n≤4; n은 정수) 를 갖는 암호 키로부터 생성시키는 암호 키 생성 회로는, 암호 키의 각각의 바이트에 포함되는 8 bit 정보에 있어서 동일한 위치에 위치되는 1 bit 정보의 배타적 OR을 계산하여, 1 byte 계산 정보를 생성시키는 배타적 OR 회로, (8 ×n) byte와 1 byte의 계산 정보를 갖는 암호 키의 합으로써 표시되는 (8 ×n + 1) byte 정보를 기억하는 레지스터, 1개 이상의 서브 라운드의 각 서브 라운드에서 1 byte만큼 (8 ×n + 1) byte 정보를 회전시켜 바이트 회전을 수행하고, 1개 이상의 서브 라운드의 각 서브 라운드에서 (8 ×n + 1) byte 정보의 각 바이트에서의 비트를 3 bit만큼 회전시켜 3-bit 회전을 수행하는 바이트/3-bit 회전회로, 및 바이트 회전 및 3-bit 회전 과정을 거쳐 얻은 (8 ×n + 1) byte 정보의 최하위 바이트로부터의 (8 ×n) byte 정보에, 128 bit 바이어스 값을 가산하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시키는 16개의 가산기를 구비한다.
이러한 바이트 회전 및 3-bit 회전을 동시에 수행하는 일 실시형태에서는, 처리 시간을 단축시키고, 회로의 크기를 축소시킨다.
본 발명의 또 다른 태양에 따르면, 128 bit 평문의 암호화를 위하여 1개 이상의 서브 라운드에 사용되는 1개 이상의 128 bit 라운드 서브 키를, (64×n) bit (2≤n≤4; n은 정수) 를 갖는 암호 키로부터 생성시키는 암호 키 생성 회로는, 암호 키의 각각의 바이트에 포함되는 8 bit 정보에 있어서 동일한 위치에 위치되는 1 bit 정보의 배타적 OR을 계산하여, 1 byte 계산 정보를 생성시키는 배타적 OR 회로, (8 ×n) byte와 1 byte의 계산 정보를 갖는 암호 키의 합으로써 표시되는 (8 ×n + 1) byte 정보를 기억하는 레지스터, 1개 이상의 서브 라운드의 각 서브 라운드에서 m byte만큼 (8 ×n + 1) byte 정보를 회전시켜 한번 이상 m byte 회전 (m 은 (8 ×n) 의 약수) 을 수행하는 바이트 회전 회로, 각각의 서브 라운드에서 (8 ×n + 1) byte 정보의 각 바이트에서의 비트를 3 bit만큼 회전시켜 3-bit 회전을 수행하는 3-bit 회전회로, 및 m byte 회전 및 3-bit 회전 과정을 거쳐 얻은 (8 ×n + 1) byte 정보의 최하위 바이트로부터의 (8 ×n) byte 정보에서 각각의 (8 ×m) bit 정보 단위에 (8 ×m) bit 바이어스 값을 가산하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시키는 m개의 가산기를 구비한다.
본 발명의 일 실시형태에서는, m은 1이다.
본 발명의 일 실시형태에서는, m은 2이다.
한번 가산되는 바이어스 값이 1 byte인 일 실시형태에서는, 16개의 가산기 대신에, 오직 하나의 가산기만 필요하다. 따라서, 회로의 크기를 더욱 축소시킬 수 있다.
한번 가산되는 바이어스 값이 2 byte인 일 실시형태에서는, 16개의 가산기 대신에, 오직 두개의 가산기만 필요하다. 따라서, 회로의 크기를 더욱 축소시킬 수 있다.
본 발명의 또 다른 태양에 따르면, 128 bit 평문의 암호화를 위하여 1개 이상의 서브 라운드에 사용되는 1개 이상의 128 bit 라운드 서브 키를, (64×n) bit(2≤n≤4; n은 정수) 를 갖는 암호 키로부터 생성시키는 암호 키 생성 회로는, 암호 키의 각각의 바이트에 포함되는 8 bit 정보에 있어서 동일한 위치에 위치되는 1 bit 정보의 배타적 OR을 계산하여, 1 byte 계산 정보를 생성시키는 배타적 OR 회로, (8 ×n) byte와 1 byte의 계산 정보를 갖는 암호 키의 합으로써 표시되는 (8 ×n + 1) byte 정보를 기억하는 레지스터, 1개 이상의 서브 라운드의 각 서브 라운드에서 m byte만큼 (8 ×n + 1) byte 정보를 회전시켜 한번 이상 m byte 회전 (m 은 (8 ×n) 의 약수) 을 수행하고, 각각의 m byte 회전에서 (8 ×n + 1) byte 정보내의 m byte 정보에서의 비트를 3 bit만큼 회전시켜 3-bit 회전을 수행하는 바이트/3-bit 회전회로, 및 m byte 회전 및 3-bit 회전 과정을 거쳐 얻은 (8 ×n + 1) byte 정보의 최하위 바이트로부터의 (8 ×n) byte 정보에서 각각의 (8 ×m) bit 정보 단위에 (8 ×m) bit 바이어스 값을 가산하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시키는 m개의 가산기를 구비한다.
본 발명의 일 실시형태에서는, m은 1이다.
본 발명의 일 실시형태에서는, m은 2이다.
바이트 회전을 수행하는 상태에서, 3-bit 회전을 1 byte에서 수행하는 일 실시형태에서는, 처리 시간을 단축시키고, 회로의 크기를 축소시킨다.
바이트 회전을 수행하는 상태에서, 3-bit 회전을 2 byte에서 수행하는 일 실시형태에서는, 처리 시간을 단축시키고, 회로의 크기를 축소시킨다.
따라서, 본 명세서에서 설명되는 본 발명은 SAFER+ 암호 알고리즘을 사용하여, 라운드 서브 키를 생성시키는 소규모의 암호 키 생성 회로를 제공하는 이점을갖는다.
당업자는, 본 발명의 이들 이점 및 다른 이점들을 첨부된 도면과 함께 상세히 설명한 다음의 상세한 설명을 통하여 더욱 잘 이해할 것이다.
(실시형태)
이하, 본 발명의 실시형태를, 첨부한 도면을 통하여 상세히 설명한다.
(제 1 실시예)
도 1은 본 발명의 제 1 실시예에 따른 암호 키 생성 회로로서 라운드 서브 키 생성 회로 (201) 를 설명하는 블록도이다. 이 라운드 서브 키 생성 회로 (201) 는 도 20 에 도시한 라운드 서브 키 생성 회로 (2) 를 대신하여 사용할 수 있고, SAFER+1 암호화를 수행하는데 사용한다.
이 라운드 서브 키 생성 회로 (201) 는 배타적 OR 회로 (9), 내부 레지스터 (10), 바이트 회전 회로 (11), 3-bit 회전 회로 (12), 바이어스 테이블 (16) 및 16개의 가산기 (15) 를 구비한다. 도 1에서는, 16개의 가산기 (15) 는 간단하게 1 개의 가산기 심볼로 표시한다.
배타적 OR 회로 (9) 는 입력되는 암호 키를 1 byte (8 bit) 단위로 분할하여, 1 byte로 표시되는 정보를 출력하기 위하여, 모든 1 byte 단위에 있어서 동일 비트 위치에 위치되는 비트들의 배타적 OR을 계산한다.
내부 레지스터 (10) 는 라운드 서브 키를 생성시키기 위하여 데이터를 기억한다. 이러한 데이터는 입력되는 암호 키의 바이트들의 수+ 1 byte를 갖는다. 이 내부 레지스터 (10) 는, 입력되는 암호 키, 바이트 회전에 의해 획득되는 정보,및 3-bit 회전에 의해 획득되는 정보를 기억한다.
바이트 회전 회로 (11) 은 내부 레지스터 (10) 내에 기억되는 정보를 회전시키고, 이 정보는 1 byte (8 bit) 단위에 있어서, 입력되는 암호 키의 바이트들 + 1 byte로 표시된다. 이 바이트 회전 회로 (11) 는 기본적으로 배선 및 셀렉터를 포함한다.
도 2a는 이 바이트 회전 회로 (11) 를 사용하여 17 byte들의 바이트 회전을 수행하는 과정을 도시한다. 도 2a에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 byte를 나타낸다. 각각의 박스에서의 수치는 각각의 바이트의 순서번호를 나타낸다. 더욱 특별하게는, 예를 들면, 수치 "1" 는, 1번째 바이트 (또는 최하위 바이트) 로 표시되는 정보가 기억되었음을 나타내고, 수치 "2" 는, 2번째 바이트로 표시되는 정보가 기억되었음을 나타내며, 이하 동일하다. 도 2a에 있는 상위 일련의 박스는 바이트 회전을 실행하기 전에 내부 레지스터 (10) 의 상태를 나타낸다. 도시한 바와 같이, 박스들은 좌측으로부터 우측으로 순차적인 수치를 만든다. 도 2a에 도시한 일련의 하위 박스는 바이트 회전을 실행한 후에 내부 레지스터 (10) 의 상태를 나타낸다. 도시한 바와 같이, 17번째 바이트로 표시되는 정보는 좌측으로부터 16번째 박스로 이동하고, 16번째 바이트로 표시되는 정보는 좌측으로부터 15번째 박스로 이동하고, 이하 동일하다. 2번째 바이트로 표시되는 정보는 최좌측 박스로 이동하고, 1번째 바이트로 표시되는 정보는 좌측으로부터 17번째 박스로 이동한다.
도 2a는 내부 레지스터 (10) 의 바이트마다의 상태를 도시한다. 도 2b는내부 레지스터 (10) 의 비트마다의 상태를 도시한다. 도 2b에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 bit를 나타낸다. 각 박스의 수치는 내부 레지스터 (10) 에 기억되는 (0번째 비트 내지 135번째 비트중에서) 각각의 비트의 순서번호를 나타낸다. 더욱 특별하게는, 예를 들면, 수치 "0" 은, 1 번째 비트로 표시되는 정보가 기억되었음을 나타내고, 수치 "1" 은, 2 번째 비트로 표시되는 정보가 기억되었음을 나타내며, 이하 동일하다. 도 2b에 있는 최좌측 컬럼 (0 번째 내지 7번째 비트) 의 8개의 정사각형 박스는 도 2a에 도시한 최좌측 박스 (1 byte) 에 대응하고, 도 2b에 있는 제 2 내지 최좌측 컬럼 (8번째 내지 15번째 비트) 의 8개의 정사각형 박스는 도 2a에 있는 제 2 내지 최좌측 정사각형 박스 (1 byte) 에 대응한다. 이들 비트 사이에 배치되는 배선들중에서, 바이트 회전을 수행하고, 예를 들면, 8번째 비트로 표시되는 정보는 0번째 비트로 이동하고, 0번째 비트로 표시되는 정보는 128 번째 비트로 이동하고, 이하 동일하다.
도 2b는 신호 플로우를 더욱 잘 설명하기 위하여 비트와 함께 배선들을 도시한 것이다. 실제적으로, 바이트 회전 회로 (11) 는 내부 레지스터 (10) 에 기억되는 정보, 즉, 바이트 회전으로 처리되는 정보, 또는, 다른 과정에 의해 처리되는 정보를 선택하는 셀렉터를 각 배선마다 구비한다.
도 3은 3-bit 회전 회로 (12) 를 설명한다. 이 3-bit 회전 회로 (12) 는 3-bit 회전을 수행하고, 즉, 내부 레지스터 (10) 에 각각의 바이트 마다 기억되는 정보 (암호 키의 바이트들 + 1 byte) 를 3 bit만큼 좌측으로 회전시킨다. 예를 들면, 비트 {7, 6, 5, 4, 3, 2, 1, 0} 들을 3 bit만큼 좌측으로 비트 {4, 3, 2, 1,0, 7, 6, 5} 들로 회전시킨다.
3-bit 회전 회로 (12) 는 배선 및 셀렉터 (아래 설명한다) 를 기본적으로 구비한다. 도 3에서는, 우측 컬럼의 8개의 정사각형 박스들은 내부 레지스터 (10) 에 기억되는 바이트들중 임의의 1 byte (8 bit) 를 나타낸다. 각각의 정사각형 박스는 1 bit를 나타낸다. 좌측 컬럼의 8개의 직사각형 박스는 각각 셀렉터를 나타낸다. 이 셀렉터는 내부 레지스터 (10) 에 기억되는 정보, 즉, 3-bit 회전으로 처리되는 정보, 또는 다른 과정에 의해 처리되는 정보를 선택한다. 이 3-bit 회전은 예를 들면, 7 번째 비트로 표시되는 정보를 2 번째 비트로, 6 번째 비트로 표시되는 정보를 1 번째 비트로, 5 번째 비트로 표시되는 정보를 0 번째 비트로, 4 번째 비트로 표시되는 정보를 7 번째 비트로, 3 번째 비트로 표시되는 정보를 6 번째 비트로, 2번째 비트로 표시되는 정보를 5 번째 비트로, 1 번째 비트로 표시되는 정보를 4 번째 비트로, 0 번째 비트로 표시되는 정보를 3 번째 비트로 이동시킴으로써 수행한다.
바이어스 테이블 (16) 은 서브 라운드 신호 (아래 설명한다) 로 결정되는 바이어스 값 (즉, 128 bit로 표시되는 고정값) 을 제공한다.
가산기 (15) 는 캐리오버 없이 8 bit 단위로 바이어스 값과 함께 내부 레지스터 (10) 에 기억되는 정보를 표시하는 값을 가산한다. 16 byte (128 bit) 의 계산을 수행하는데 16개의 가산기 (15) 가 필요하다.
라운드 서브 키 생성 회로 (201) 는 예를 들면, 다음과 같이 동작한다. 입력되는 암호 키의 비트들의 수에 따라서, 처리 방법이 변경되는 경우에도, 기본동작은 동일하다. 여기에서는, 128 bit 암호 키를 입력하는 경우에 수행되는 동작을 도 1과 도 4를 통하여 설명하고자 한다.
제 1 실시예의 라운드 서브 키 생성 회로 (201) 는 도 24에 도시한 종래기술의 라운드 서브 키 생성 회로 (201) 에서 출력 셀렉터 (14) 를 제거하여, 회로의 크기를 축소시켰다. 그 대신에, 라운드 서브 키 생성 회로 (201) 는 도 1에 도시한 바이트 회전 회로 (11) 를 구비한다.
도 4는 라운드 서브 키 생성 회로 (201) 의 내부 레지스터 (10) 에서의 정보 상태를 시계열에 따라 도시한다. 도 4에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 byte를 나타낸다. 암호 키를 입력하는 경우에, 각각의 박스의 수치는 암호 키의 각각의 바이트의 순서번호를 나타낸다. 더욱 특별하게는, 예를 들면, 수치 "1" 은 1을 입력하는 경우, 암호 키의 1번째 바이트로 표시되는 정보가 기억되었음을 나타내고, 수치 "2" 는 2를 입력하는 경우 암호 키의 2 번째 바이트로 표시되는 정보가 기억되었음을 나타내고, 이하 동일하다.
시간 (t1) 에서는, 이 내부 레지스터 (10) 는, 입력되는 128 bit 암호 키 (16 byte) 를 기억한다. 이 경우에, 배타적 OR 회로 (9) 는 모든 입력되는 암호 키의 16 byte에 있어서 동일한 위치 (즉, 비트) 에 위치되는 정보의 배타적 OR 을 계산한다. 그 결과값을, 17번째 바이트에서 각각의 위치에 대한 정보를 표시하는 것으로 정의한다. 예를 들면, 모든 16 byte마다 0번째 비트로 표시되는 정보의 배타적 OR을 계산하여, 그 결과값을, 17번째 바이트의 0번째 비트에 대한 정보를 표시하는 것으로 정의한다. 다음, 최하위 16 byte로 표시되는 정보를가산기 (15) 로부터 라운드 서브 키 (K1) 로서 출력한다. 이 출력된 정보가 프리바이트 (pre-byte) 회전 정보로, 입력되는 암호 키로 표시되는 정보이다.
다음, 시간 (t2) 에서는, 바이트 회전 회로 (11) 는 바이트 회전을 수행한다. 즉, 도 4에 도시하는 바와 같이, 이들 바이트는 1 byte만큼 좌측으로 회전한다. 더욱 특별하게는, 예를 들면, 최하위 바이트로 표시되는 정보는 최우측 박스로 이동한다. 2번째 바이트로 표시되는 정보는 최좌측 박스로 이동하고, 3번째 바이트로 표시되는 정보는 좌측으로부터 2번째 박스로 이동하고, 이하 동일하다.
다음, 시간 (t3) 에서는, 3-bit 회전 회로 (12) 가 각각의 바이트마다 3-bit 회전을 수행한다. 다음, 최하위 16 byte로 표시되는 정보를 가산기 (15) 를 통하여 라운드 서브 키 (K2) 로서 출력한다. 도 4에 도시한 라운드 서브 키 (K2) 에서의 16 byte의 순서는 도 21에 도시한 라운드 서브 키 (K2) 에서의 16 byte의 순서와 일치한다. 따라서, 출력되는 바이트의 순서를 선택할 필요가 없다.
시간 (t4) 에서는, 바이트 회전을 수행한다. 시간 (t5) 에서는, 3-bit 회전을 각각의 바이트마다 수행한다. 다음, 라운드 서브 키 (K3) 를 가산기 (15) 로부터 출력한다. 다시, 도 4에 도시한 라운드 서브 키 (K3) 에서의 16 byte의 순서는 도 21에 도시한 라운드 서브 키 (K3) 에서의 16 byte의 순서와 일치한다. 따라서, 출력되는 바이트들의 순서를 선택할 필요가 없다.
그러한 후에, 바이트 회전 및 3-bit 회전을 동일한 방법으로 수행한다. 따라서, 라운드 서브 키 (K1내지 K17) 들중 원하는 라운드 서브 키를 출력 셀렉터를 사용할 필요없이 획득할 수 있다. 192 bit 암호 키 또는 256 bit 암호 키를 입력하는 경우에도, 동일한 과정을 수행하여, 원하는 라운드 서브 키를 획득할 수 있다.
도 24에 도시한 종래기술의 라운드 서브 키 생성 회로 (2) 는 내부 레지스터 (10) 에 기억되는 정보를 출력 셀렉터 (14) 에 의해 선택해야 하기 때문에, 라운드 서브 키의 각각의 비트를 출력한다. 이 출력 셀렉터 (14) 는 다음과 같은 이유로 대규모로 될 수 밖에 없다. 입력되는 암호 키가 128 bit를 갖는 경우에, 1 bit를 17 bit들중에서 선택하고, 입력되는 암호 키가 192 bit를 갖는 경우에, 25 bit들중에서 선택하고, 입력되는 암호 키가 256 bit를 갖는 경우에, 33 bit들중에서 선택하고, 이러한 선택을 라운드 서브 키의 각각의 128 bit에 대하여 수행한다.
이와 대조적으로, 제 1 실시예의 이 라운드 서브 키 생성 회로 (201) 는 내부 레지스터 (10) 에서 바이트로 표시되는 정보를 회전시킨다. 따라서, 이 라운드 서브 키 생성 회로 (201) 가, 내부 레지스터 (10) 에서 바이트로 표시되는 정보가 회전되는 배선 및 셀렉터를 구비하는 한, 원하는 라운드 서브 키를 출력할 수 있다. 이러한 결과로서, 이 라운드 서브 키 생성 회로 (201) 의 크기를 축소시킬 수 있다.
(제 2 실시예)
도 5는 본 발명의 제 2 실시예에 따른 암호 키 생성 회로로서 라운드 서브키 생성 회로 (202) 의 구조를 설명하는 블록도이다. 이 라운드 서브 키 생성 회로 (202) 는 도 20 에 도시한 라운드 서브 키 생성 회로 (2) 를 대신하여 사용할 수 있고, SAFER+1 암호화를 수행하는데 사용한다.
이 라운드 서브 키 생성 회로 (202) 는 배타적 OR 회로 (9), 내부 레지스터 (10), 바이트/3-bit 회전 회로 (13), 바이어스 테이블 (16) 및 16개의 가산기 (15) 를 구비한다. 도 5에서는, 16개의 가산기 (15) 는 간단하게 1 개의 가산기 심볼로 표시한다.
라운드 서브 키 생성 회로 (202) 는 바이트/3-bit 회전 회로 (13) 로 처리하는 주기와 동일한 주기로 바이트 회전 및 3-bit 회전을 수행한다. 따라서, 라운드 서브 키 생성 회로 (202) 는 처리 시간을 단축시키고 그 크기를 축소시킨다.
도 6을 참조하면, 바이트/3-bit 회전 회로 (13) 는 각각의 바이트마다 기억되는 정보를 3 bit만큼 좌측으로 회전시킨 상태에서, 내부 레지스터 (10) 에 기억되는 정보를 회전시키며, 이 정보는 1 byte (8 bit) 단위마다, 입력되는 암호 키의 바이트 + 1 byte로 표시된다. 제 1 실시예에서 수행되는 바이트 회전에서는, 예를 들면, 한 바이트의 7번째 비트로 표시되는 정보는 다른 바이트의 7번째 비트로 이동한다. 제 2 실시예에서는, 바이트 회전 및 3-bit 회전을 동시에 수행한다. 따라서, 예를 들면, 한 바이트의 7번째 비트로 표시되는 정보는 다른 바이트의 2번째 비트로 이동한다.
도 6은 내부 레지스터 (10) 에서 한 특정 바이트의 정보의 변경을 도시한다. 도 7은 이 내부 레지스터 (10) 에서 복수의 바이트의 정보의 변경을 도시한다.도 7은 단지 신호 플로우를 더욱 잘 설명하기 위하여 비트와 함께 배선들을 도시한 것이다. 실제적으로, 바이트/3-bit 회전 회로 (13) 는 내부 레지스터 (10) 에 기억되는 정보, 즉, 바이트/3-bit 회전으로 처리되는 정보, 또는, 다른 과정에 의해 처리되는 정보를 선택하는 셀렉터를 각 배선마다 구비한다.
라운드 서브 키 생성 회로 (202) 는 예를 들면, 다음과 같이 동작한다. 입력되는 암호 키의 비트들의 수에 따라서, 처리 방법이 변경되는 경우에도, 기본 동작은 동일하다. 여기에서는, 128 bit 암호 키를 입력하는 경우에 수행되는 동작을 도 5와 도 8을 통하여 설명하고자 한다.
도 8은 라운드 서브 키 생성 회로 (202) 의 내부 레지스터 (10) 에서의 정보 상태를 시계열에 따라 도시한다.
시간 (t1) 에서는, 이 내부 레지스터 (10) 는, 입력되는 128 bit 암호 키 (16 byte) 를 기억한다. 이 경우에, 배타적 OR 회로 (9) 는 모든 입력되는 암호 키의 16 byte에 있어서 동일한 위치 (즉, 비트) 에 위치되는 정보의 배타적 OR 을 계산한다. 그 결과값을, 17번째 바이트에서 각각의 위치에 대한 정보를 표시하는 것으로 정의한다. 다음, 최하위 16 byte로 표시되는 정보를 가산기 (15) 를 통하여 라운드 서브 키 (K1) 로서 출력한다.
다음, 시간 (t2) 에서는, 바이트/3-bit 회전 회로 (13) 는 바이트 회전 및 3-bit 회전을 동시에 수행하여, 라운드 서브 키 (K2) 를 가산기 (15) 로부터 출력한다. 즉, 도 8에 도시한 바와 같이, 도 4에서 도시한, 시간 (t2) 에서 수행되는바이트 회전, 및 시간 (t3) 에서 수행되는 3-bit 회전을 동시에 수행한다. 따라서, 한 라운드 서브 키를 출력하는데 필요한 처리시간을 한 단계에서 필요한 시간만큼 단축시킨다.
그러한 후에, 바이트 회전 및 3-bit 회전을 동시에 동일한 방법으로 수행하여, 라운드 서브 키 (K1내지 K17) 들중 원하는 라운드 서브 키를 획득한다. 192 bit 암호 키 또는 256 bit 암호 키를 입력하는 경우에도, 동일한 과정을 수행하여, 원하는 라운드 서브 키를 획득할 수 있다.
제 1 실시예에서는 33개의 단계의 처리가 필요하지만, 제 2 실시예에서는 17개의 단계로 이러한 처리를 수행할 수 있다.
회로의 크기의 점에서는, 제 1 실시예에서의 바이트 회전 회로 (11) 및 3-bit 회전 회로 (12) 의 각각에 설치되는 셀렉터를 제 2 실시예에서는, 공통으로 사용할 수 있다. 따라서, 셀렉터의 개수를 제 1 실시예에 비해 반으로 감소시킬 수 있다.
(제 3 실시예)
도 9는 본 발명의 제 3 실시예에 따른 암호 키 생성 회로로서 라운드 서브 키 생성 회로 (203) 를 설명하는 블록도이다. 이 라운드 서브 키 생성 회로 (203) 는 도 20 에 도시한 라운드 서브 키 생성 회로 (2) 를 대신하여 사용할 수 있고, SAFER+1 암호화를 수행하는데 사용한다.
이 라운드 서브 키 생성 회로 (203) 는 배타적 OR 회로 (9), 내부 레지스터(10), 바이트 회전 회로 (11), 3-bit 회전 회로 (12), 바이어스 테이블 (17) 및 1개의 가산기 (15) 를 구비한다.
이 라운드 서브 키 생성 회로 (203) 는 제 1 실시예의 라운드 서브 키 생성 회로 (201) 와 동일하게, 각각의 서브 라운드에 대하여 라운드 서브 키를 출력한다. 반면, 라운드 서브 키 생성 회로 (201) 는 128 bit 라운드 서브 키를 동시에 출력하지만, 이 라운드 서브 키 생성 회로 (203) 는 8 bit 만큼 8 bit마다 128 bit 라운드 서브 키를 출력한다. 또한, 바이어스 테이블 (17) 의 서브 라운드 신호 및 바이트 신호로 8 bit 바이어스 값을 결정한다. "서브 라운드 신호" 는 각각의 서브 라운드의 수치를 지정하고, "바이트 신호" 는 라운드 서브 키에서, 내부 레지스터 (10) 의 최하위 바이트의 순서번호를 표시한다. 한번에 가산되는 바이어스 값이 1 byte이기 때문에, 16개의 가산기 대신에 1개의 가산기만 있어도 된다. 이는 회로의 크기를 추가로 축소시킨다.
라운드 서브 키 생성 회로 (203) 는 예를 들면, 다음과 같이 동작한다. 입력되는 암호 키의 비트들의 수에 따라서 처리 방법이 변경되는 경우에도, 기본 동작은 동일하다. 여기에서는, 128 bit 암호 키를 입력하는 경우에 수행되는 동작을 도 9와 도 10을 통하여 설명하고자 한다.
제 3 실시예에서의 라운드 서브 키 생성 회로 (203) 는 도 24에 도시한 종래기술의 라운드 서브 키 생성 회로 (2) 에서 출력 셀렉터 (14) 를 제거하고, 16개의 가산기 대신에, 단지 1개의 가산기 (15) 만을 구비하여, 회로의 크기를 감소시켰다. 이를 대신하여, 이 라운드 서브 키 생성 회로 (203) 는 도 9에 도시한 바이트 회전 회로 (11) 를 구비한다. 제 1 실시예에서의 라운드 서브 키 생성 회로 (201) 는 내부 레지스터 (10) 에서 16 byte로 표시되는 정보를 동시에 출력하였지만, 이 라운드 서브 키 생성 회로 (203) 는 내부 레지스터 (10) 에서 최하위 바이트만을 출력한다.
도 10은 라운드 서브 키 생성 회로 (203) 의 내부 레지스터 (10) 에서의 정보 상태를 시계열에 따라 도시한다. 도 10에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 byte를 나타낸다. 암호 키를 입력하는 경우에, 각각의 박스의 수치는 암호 키의 각각의 바이트의 순서번호를 나타낸다. Kj[i] 는 16 byte (128 bit) 를 포함하는 라운드 서브 키 (Kj) 의 i번째 바이트를 나타낸다.
시간 (t1) 에서는, 이 내부 레지스터 (10) 는, 입력되는 128 bit 암호 키 (16 byte) 를 기억한다. 이 경우에, 배타적 OR 회로 (9) 는 모든 입력되는 암호 키의 16 byte에 있어서 동일한 위치 (즉, 비트) 에 위치되는 정보의 배타적 OR 을 계산한다. 그 결과값을, 17번째 바이트에서 각각의 위치에 대한 정보를 표시하는 것으로 정의한다. 다음, 내부 레지스터 (10) 는 최하위 바이트로 표시되는 정보를 가산기 (15) 에 출력한다. 이 시간 (t1) 에서는, 라운드 서브 키의 1번째 바이트 (K1; 즉, K1[1]) 로 표시되는 정보를 출력한다.
다음, 시간 (t2) 에서는, 바이트 회전 회로 (11) 는 바이트 회전을 수행한다. 즉, 도 10에 도시하는 바와 같이, 이들 바이트는 1 byte만큼 좌측으로 회전한다. 더욱 특별하게는, 예를 들면, 최하위 바이트로 표시되는 정보는 최우측 박스로 이동한다. 다음, 최하위 바이트로 표시되는 정보를 가산기 (15) 에 출력한다. 이 시간 (t2) 에서는, 라운드 서브 키의 2번째 바이트 (K1; 즉, K1[2]) 로 표시되는 정보를 출력한다.
위에서 설명한 단계들을 시간 (t16) 까지 반복한다. 이러한 방법으로, 모든 128 bit로 표시되는 정보를 출력할 때까지, 라운드 서브 키 (K1) 에서의 최하위 바이트로 표시되는 정보를 순차적으로 출력한다.
시간 (t17, t18, t19) 에서는, 바이트 회전만을 수행하여, 다음 서브 라운드의 1 번째 바이트로 표시되는 정보가 최하위 바이트가 되도록 조절한다.
시간 (t20) 에서는, 내부 레지스터 (10) 의 각각의 바이트마다 3-bit 회전을 수행한다. 따라서, 라운드 서브 키 생성 회로 (203) 는 라운드 서브 키 (K2) 를 출력할 준비가 된다. 다음, 라운드 서브 키 (K2[1]) 를 출력한다.
그러한 후에, 바이트 회전 및 3-bit 회전을 동일한 방법으로 수행한다. 따라서, 라운드 서브 키 (K1내지 K17) 들중 원하는 라운드 서브 키의 원하는 바이트로 표시되는 정보를 출력 셀렉터를 사용할 필요없이 획득할 수 있다.
바이어스 값을 가산하기 위해서는, 1 단계에서, 1 byte 정보를 내부 레지스터 (10) 로부터 출력하기 때문에, 서브 라운드 신호와 바이트 신호로 결정되는 1 byte 바이어스 값을 출력할 필요가 있다.
192 bit 암호 키 또는 256 bit 암호 키를 입력하는 경우에도, 동일한 과정을 수행하여, 원하는 라운드 서브 키의 원하는 바이트로 표시되는 정보를 획득할 수 있다.
(제 4 실시예)
도 11은 본 발명의 제 4 실시예에 따른 암호 키 생성 회로로서 라운드 서브 키 생성 회로 (204) 의 구조를 설명하는 블록도이다. 이 라운드 서브 키 생성 회로 (202) 는 도 20 에 도시한 라운드 서브 키 생성 회로 (2) 를 대신하여 사용할 수 있고, SAFER+1 암호화를 수행하는데 사용한다.
이 라운드 서브 키 생성 회로 (204) 는 배타적 OR 회로 (9), 내부 레지스터 (10), 바이트/3-bit 회전 회로 (19), 바이어스 테이블 (17) 및 1 개의 가산기 (15) 를 구비한다.
이 라운드 서브 키 생성 회로 (204) 는 바이트/3-bit 회전 회로 (19) 로 처리하는 주기와 동일한 주기로 바이트 회전 및 3-bit 회전을 수행한다. 따라서, 이 라운드 서브 키 생성 회로 (204) 는 처리 시간을 단축시키고 그 크기를 축소시킨다.
도 12에 도시한 바와 같이, 이 바이트/3-bit 회전 회로 (19) 는 최하위 바이트에서만 3-bit 회전을 수행하여, 이 최하위 바이트가 최우측 박스로 이동한다. j+1 번째 바이트로 표시되는 정보는 j 번째 바이트로 이동한다. 최하위 바이트에서만 3-bit 회전을 수행하여, 이 최하위 바이트가 최우측 박스로 이동한다. 바이트/3-bit 회전 회로 (19) 는 3-bit 회전을 사용할 필요없이, 최하위 바이트로표시되는 정보를 최상위 바이트로 이동시킬 수 있다. 이러한 점에서는, 바이트/3-bit 회전 회로 (19) 는 제 3 실시예의 바이트 회전 회로 (11) 의 기능과 실질적으로 동일한 기능을 갖는다.
바이트/3-bit 회전 회로 (9) 는 도 2b에 도시하는 바이트 회전 회로 (11) 의 구조에 부가하여, 최하위 바이트로 표시되는 정보를 최우측 박스로 이동시키는 경우, 3-bit 회전을 수행해야 하는지를 선택하는 배선 및 셀렉터 (19a; 도 12에서는, 직사각형 박스로 표시된다) 를 구비한다. 위에서 설명한 바와 같이, 단순히 바이트 회전을 3-bit 회전없이 수행할 경우에, 바이트/3-bit 회전 회로 (19) 는 제 3 실시예의 바이트 회전 회로 (11) 의 기능과 실질적으로 동일한 기능을 갖는다.
도 12는 단지 신호 플로우를 더욱 잘 설명하기 위하여 비트와 함께 배선과 셀렉터 (19a) 들을 도시한 것이다. 실제적으로, 바이트/3-bit 회전 회로 (19) 는 내부 레지스터 (10) 에 기억되는 정보, 즉, 바이트/3-bit 회전 (또는 바이트 회전) 으로 처리되는 정보, 또는, 다른 과정에 의해 처리되는 정보를 선택하는 셀렉터를 각각의 배선상에 구비한다.
라운드 서브 키 생성 회로 (204) 는 예를 들면, 다음과 같이 동작한다. 입력되는 암호 키의 비트들의 수에 따라서, 처리 방법이 변경되는 경우에도, 기본 동작은 동일하다. 여기에서는, 128 bit 암호 키를 입력하는 경우에 수행되는 동작을 도 11 및 도 13를 통하여 설명하고자 한다.
제 4 실시예에서의 라운드 서브 키 생성 회로 (204) 는 도 24에 도시한 종래기술의 라운드 서브 키 생성 회로 (2) 에서 출력 셀렉터 (14) 를 제거하고, 16 개의 가산기 대신에 1 개의 가산기만을 구비하여, 회로의 크기를 축소시킨다. 이를 대신하여, 이 라운드 서브 키 생성 회로 (204) 는 도 11에 도시한 바이트/3-bit 회전 회로 (19) 를 구비한다. 이 라운드 서브 키 생성 회로 (204) 는 라운드 서브 키 생성 회로 (203) 와 마찬가지로, 내부 레지스터 (10) 에서 최하위 바이트만을 출력한다.
도 13은 라운드 서브 키 생성 회로 (204) 의 내부 레지스터 (10) 에서의 정보 상태를 시계열에 따라 도시한다. 도 13에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 byte를 나타낸다. 암호 키를 입력하는 경우에, 각각의 박스의 수치는 암호 키의 각각의 바이트의 순서번호를 나타낸다. Kj[i] 는 16 byte (128 bit) 를 포함하는 라운드 서브 키 (Kj) 의 i 번째 바이트를 나타낸다.
시간 (t1) 에서는, 이 내부 레지스터 (10) 는, 입력되는 128 bit 암호 키 (16 byte) 를 기억한다. 이 경우에, 배타적 OR 회로 (9) 는 모든 입력되는 암호 키의 16 byte에 있어서 동일한 위치 (즉, 비트) 에 위치되는 정보의 배타적 OR 을 계산한다. 그 결과값을, 17번째 바이트에서 각각의 위치에 대한 정보를 표시하는 것으로 정의한다. 다음, 내부 레지스터 (10) 는 최하위 바이트로 표시되는 정보를 가산기 (15) 에 출력한다. 이 시간 (t1) 에서는, 라운드 서브 키의 1번째 바이트 (K1; 즉, K1[1]) 로 표시되는 정보를 출력한다.
다음, 시간 (t2) 에서는, 바이트/3-bit 회전 회로 (19) 는 바이트 회전과 3-bit 회전을 동시에 수행한다. 최우측 박스로 이동하는 최하위 바이트에서만 이 3-bit 회전을 수행한다. 다른 바이트들의 정보는 1 byte만큼 좌측으로 이동한다. 내부 레지스터 (10) 는 최하위 바이트로 표시되는 정보를 가산기 (15) 에 출력한다. 이 시간 (t2) 에서는, 라운드 서브 키의 최하위 바이트 (K1; 즉, K1[2]) 로 표시되는 정보를 출력한다. 도 13에서는, 라운드 서브 키 (K1) 의 처리 동안에, 3-bit 회전을 완료한, 회전되는 바이트들의 수치들을 순환시킨다.
위에서 설명한 단계들을 시간 (t16) 까지 반복한다. 이러한 방법으로, 모든 128 bit로 표시되는 정보를 출력할 때까지, 라운드 서브 키 (K1) 에서의 최하위 바이트로 표시되는 정보를 순차적으로 출력한다.
시간 (t17, t18) 에서는, 바이트 회전 및 3-bit 회전 (최우측 박스로 이동하는 최하위 바이트에서만 수행한다) 을 수행하여, 다음 서브 라운드의 1 번째 바이트로 표시되는 정보가 최하위 바이트가 되도록 조절한다. 시간 (t16) 까지의 처리를 완료하는 경우에는, 내부 레지스터 (10) 에서 모든 바이트의 수치를 순환시킨다. 이는, 모든 바이트에서 3-bit 회전을 수행하여, 라운드 서브 키 생성 회로 (204) 는 라운드 서브 키 (K2) 를 출력할 준비를 되어있음을 의미한다.
시간 (t19) 에서는, 바이트 회전을 수행하여, 라운드 서브 키 생성 회로 (204) 가 라운드 서브 키 (K2[1]) 를 출력한다. 시간 (t19) 에서는, 3-bit 회전을 수행하지 않는다.
그러한 후에, 바이트 회전 및 3-bit 회전을 동일한 방법으로 수행한다. 따라서, 라운드 서브 키 (K1내지 K17) 들중 원하는 라운드 서브 키의 원하는 바이트로 표시되는 정보를 출력 셀렉터를 사용할 필요없이 획득할 수 있다.
바이어스 테이블 (17) 은, 서브 라운드 신호와 바이트 신호로 결정되는 1 byte 바이어스 값을 출력한다.
192 bit 암호 키 또는 256 bit 암호 키를 입력하는 경우에도, 동일한 과정을 수행하여, 원하는 라운드 서브 키의 원하는 바이트로 표시되는 정보를 획득할 수 있다.
제 4 실시예에서는, 3-bit 회전을 바이트 회전과 함께 동시에 수행한다. 따라서, 한 라운드 서브 키를 출력하는데 필요한 처리 시간을 한 단계에 필요한 시간만큼 단축시킨다. 제 3 실시예에서는, 320개의 단계의 처리가 필요했지만, 제 4 실시예에서는, 304 단계로 이러한 처리를 수행할 수 있다.
(제 5 실시예)
도 14는 본 발명의 제 5 실시예에 따른 암호 키 생성 회로로서 라운드 서브 키 생성 회로 (205) 를 설명하는 블록도이다. 이 라운드 서브 키 생성 회로 (205) 는 도 20 에 도시한 라운드 서브 키 생성 회로 (2) 를 대신하여 사용할 수 있고, SAFER+1 암호화를 수행하는데 사용한다.
이 라운드 서브 키 생성 회로 (205) 는 배타적 OR 회로 (9), 내부 레지스터 (10), 2-byte 회전 회로 (20), 3-bit 회전 회로 (12), 바이어스 테이블 (18) 및 2 개의 가산기 (15) 를 구비한다. 도 14에서는, 2 개의 가산기 (15) 는 간단하게1 개의 가산기 심볼로 표시한다.
이 라운드 서브 키 생성 회로 (205) 는 제 1 실시예의 라운드 서브 키 생성 회로 (201) 와 동일하게, 각각의 서브 라운드에 대하여 라운드 서브 키를 출력한다. 반면, 라운드 서브 키 생성 회로 (201) 는 128 bit 라운드 서브 키를 동시에 출력하지만, 이 라운드 서브 키 생성 회로 (205) 는 16 bit 만큼 16 bit마다 128 bit 라운드 서브 키를 출력한다. 또한, 바이어스 테이블 (18) 의 서브 라운드 신호 및 바이트 신호로 16 bit 바이어스 값을 결정한다. "서브 라운드 신호" 는 각각의 서브 라운드의 수치를 지정하고, "바이트 신호" 는 라운드 서브 키에서, 내부 레지스터 (10) 의 최하위 바이트의 순서번호를 표시한다. 한번에 가산되는 바이어스 값이 2 byte이기 때문에, 16개의 가산기 대신에 2개의 가산기만 있어도 된다. 이는 회로의 크기를 추가로 축소시킨다.
도 15a는 이 2-byte 회전 회로 (20) 를 사용하여 17 byte들의 2-byte 회전을 수행하는 과정을 도시한다. 도 15a에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 byte를 나타낸다. 각각의 박스에서의 수치는 각각의 바이트의 순서번호를 나타낸다. 더욱 특별하게는, 예를 들면, 수치 "1" 은, 1 번째 바이트로 표시되는 정보가 기억되었음을 나타내고, 수치 "2" 는, 2번째 바이트로 표시되는 정보가 기억되었음을 나타내며, 이하 동일하다. 도 15a에 있는 상위 일련의 박스는 2-byte 회전을 실행하기 전에 내부 레지스터 (10) 의 상태를 나타낸다. 도시한 바와 같이, 박스들은 좌측으로부터 우측으로 순차적인 수치를 만든다. 도 15a에 도시한 일련의 하위 박스는 2-byte 회전을 실행한 후에내부 레지스터 (10) 의 상태를 나타낸다. 도시한 바와 같이, 17번째 바이트로 표시되는 정보는 좌측으로부터 15번째 박스로 이동하고, 16번째 바이트로 표시되는 정보는 좌측으로부터 14번째 박스로 이동하고, 이하 동일하다. 3번째 바이트로 표시되는 정보는 최좌측 박스로 이동하고, 2번째 바이트로 표시되는 정보는 좌측으로부터 17번째 박스로 이동하고, 최우측 바이트로 표시되는 정보는 좌측으로부터 16번째 박스로 이동한다.
도 15a는 내부 레지스터 (10) 의 바이트마다의 상태를 도시한다. 도 15b는 내부 레지스터 (10) 의 비트마다의 상태를 도시한다. 도 15b에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 bit를 나타낸다. 각 박스의 수치는 내부 레지스터 (10) 에 기억되는 (0번째 비트 내지 135번째 비트 중에서) 각각의 비트의 순서번호를 나타낸다. 더욱 특별하게는, 예를 들면, 수치 "0" 은, 1 번째 비트로 표시되는 정보가 기억되었음을 나타내고, 수치 "1" 은, 2 번째 비트로 표시되는 정보가 기억되었음을 나타내며, 이하 동일하다. 도 15b에 있는 최좌측 컬럼 (0 번째 내지 7번째 비트) 의 8개의 정사각형 박스는 도 15a에 도시한 최좌측 박스 (1 byte) 에 대응하고, 도 15b에 있는 제 2 내지 최좌측 컬럼 (8번째 내지 15번째 비트) 의 8개의 정사각형 박스는 도 15a에 있는 제 2 내지 최좌측 정사각형 박스 (1 byte) 에 대응한다. 이들 비트 사이에 배치되는 배선들중에서, 2-byte 회전을 수행하고, 예를 들면, 8번째 비트로 표시되는 정보는 128번째 비트로 이동하고, 0번째 비트로 표시되는 정보는 120 번째 비트로 이동하고, 이하 동일하다.
도 15b는 신호 플로우를 더욱 잘 설명하기 위하여 비트와 함께 배선들을 도시한 것이다. 실제적으로, 2-byte 회전 회로 (20) 는 내부 레지스터 (10) 에 기억되는 정보, 즉, 2-byte 회전으로 처리되는 정보, 또는, 다른 과정에 의해 처리되는 정보를 선택하는 셀렉터를 각 배선마다 구비한다.
이 라운드 서브 키 생성 회로 (205) 는 예를 들면, 다음과 같이 동작한다. 입력되는 암호 키의 비트들의 수에 따라서, 처리 방법이 변경되는 경우에도, 기본 동작은 동일하다. 여기에서는, 128 bit 암호 키를 입력하는 경우에 수행되는 동작을 도 14와 도 16을 통하여 설명하고자 한다.
제 5 실시예의 라운드 서브 키 생성 회로 (205) 는 도 24에 도시한 종래기술의 라운드 서브 키 생성 회로 (201) 에서 출력 셀렉터 (14) 를 제거하고, 16 개의 가산기 대신에 2개의 가산기 (15) 만을 구비하여, 회로의 크기를 축소시킨다. 이를 대신하여, 이 라운드 서브 키 생성 회로 (205) 는 도 14에 도시한 2-byte 회전 회로 (13) 를 구비한다. 제 1실시예의 라운드 서브 키 생성 회로 (201) 는 내부 레지스터 (10) 에서 16 byte로 표시되는 정보를 동시에 출력하지만, 이 라운드 서브 키 생성 회로 (205) 는 내부 레지스터 (10) 에서 2개의 최하위 바이트만을 출력한다. 2-byte 회전 회로 (13) 는 배선 및 셀렉터를 기본적으로 구비한다.
도 16은 라운드 서브 키 생성 회로 (205) 의 내부 레지스터 (10) 에서의 정보 상태를 시계열에 따라 도시한다. 도 16에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 byte를 나타낸다. 암호 키를 입력하는 경우에, 각각의 박스의 수치는 암호 키의 각각의 바이트의 순서번호를 나타낸다.Kj[i] 는 16 byte (128 bit) 를 포함하는 라운드 서브 키 (Kj) 의 i번째 바이트를 나타낸다.
시간 (t1) 에서는, 이 내부 레지스터 (10) 는, 입력되는 128 bit 암호 키 (16 byte) 를 기억한다. 이 경우에, 배타적 OR 회로 (9) 는 모든 입력되는 암호 키의 16 byte에 있어서 동일한 위치 (즉, 비트) 에 위치되는 정보의 배타적 OR 을 계산한다. 그 결과값을, 17번째 바이트에서 각각의 위치에 대한 정보를 표시하는 것으로 정의한다. 다음, 내부 레지스터 (10) 는 최하위 2 바이트들로 표시되는 정보를 가산기 (15) 에 출력한다. 시간 (t1) 에서는, 라운드 서브 키의 1 번째 바이트 및 2 번째 바이트 (K1; K1[1], K1[2]) 로 표시되는 정보를 출력한다.
다음, 시간 (t2) 에서는, 2-byte 회전 회로 (20) 는 2-byte 회전을 수행한다. 즉, 도 16에 도시하는 바와 같이, 이들 바이트는 2 byte만큼 좌측으로 회전한다. 더욱 특별하게는, 예를 들면, 최하위 바이트로 표시되는 정보는 우측으로부터 제 2 박스로 이동하고, 2번째 내지 최하위 바이트로 표시되는 정보는 최우측 박스로 이동한다. 다음, 최하위의 2 byte로 표시되는 정보를 가산기 (15) 에 출력한다. 시간 (t2) 에서는, 라운드 서브 키의 3 번째 바이트 및 4 번째 바이트 (K1; K1[3], K1[4]) 로 표시되는 정보를 출력한다.
위에서 설명한 단계들을 시간 (t8) 까지 반복한다. 이러한 방법으로, 모든 128 bit로 표시되는 정보를 출력할 때까지, 라운드 서브 키 (K1) 에서의 최하위 2 바이트들로 표시되는 정보를 순차적으로 출력한다.
시간 (t9, t10) 에서는, 2-byte 회전만을 수행하여, 다음 서브 라운드의 1 번째 바이트로 표시되는 정보가 최하위 바이트가 되도록 조절한다.
시간 (t11) 에서는, 3-bit 회전을 내부 레지스터 (10) 의 각각의 바이트에서수행한다. 따라서, 라운드 서브 키 생성 회로 (205) 는 라운드 서브 키 (K2) 를 출력할 준비가 된다. 다음, K2[1] 및 K2[2] 로 표시되는 정보를 출력한다.
그러한 후에, 2-byte 회전 및 3-bit 회전을 동일한 방법으로 수행한다. 따라서, 라운드 서브 키 (K1내지 K17) 들중 원하는 라운드 서브 키의 원하는 바이트로 표시되는 정보를 출력 셀렉터를 사용할 필요없이 획득할 수 있다.
바이어스 값을 가산하기 위하여, 2 byte 정보를 한 단계에서 내부 레지스터 (10) 로부터 출력하기 때문에, 바이어스 테이블 (17) 에서 서브 라운드 신호 및 바이트 신호로 결정하는 2 byte 바이어스 값을 출력할 필요가 있다.
192 bit 암호 키 또는 256 bit 암호 키를 입력하는 경우에도, 동일한 과정을 수행하여, 원하는 라운드 서브 키의 원하는 바이트로 표시되는 정보를 획득할 수 있다.
(제 6 실시예)
도 17은 본 발명의 제 6 실시예에 따른 암호 키 생성 회로로서 라운드 서브키 생성 회로 (206) 를 설명하는 블록도이다. 이 라운드 서브 키 생성 회로 (206) 는 도 20 에 도시한 라운드 서브 키 생성 회로 (2) 를 대신하여 사용할 수 있고, SAFER+1 암호화를 수행하는데 사용한다.
이 라운드 서브 키 생성 회로 (206) 는 배타적 OR 회로 (9), 내부 레지스터 (10), 2-byte/3-bit 회전 회로 (21), 바이어스 테이블 (18) 및 2 개의 가산기 (15) 를 구비한다. 도 17에서는, 2 개의 가산기 (15) 는 간단하게 1 개의 가산기 심볼로 표시한다.
이 라운드 서브 키 생성 회로 (206) 는 2-byte/3-bit 회전 회로 (21) 로 처리하는 주기와 동일한 주기로 2-byte 회전 및 3-bit 회전을 수행한다. 따라서, 라운드 서브 키 생성 회로 (206) 는 처리 시간을 단축시키고 그 크기를 축소시킨다.
도 18에 도시한 바와 같이, 이 2-byte/3-bit 회전 회로 (21) 는 최하위 바이트에서만 3-bit 회전을 수행하여, 이 최하위 바이트가 우측으로부터 제 2 박스로 이동하고, 2번째 내지 최하위 바이트에서만 3-bit 회전을 수행하여, 이 2번째 내지 최하위 바이트가 최우측박스로 이동시킨다. j+1 번째 바이트로 표시되는 정보는 j-1 번째 바이트로 이동한다. 1 번째 바이트에서만 3-bit 회전을 수행하여, 이 1 번째 바이트가 우측으로부터 제 2 박스로 이동하고, 2 번째 바이트에서만 3-bit 회전을 수행하여, 이 2 번째 바이트가 최우측 박스로 이동한다. 이 2-byte/3-bit 회전 회로 (21) 는 3-bit 회전을 사용할 필요없이, 2 번째 내지 최하위 바이트로 표시되는 정보를 최상위 바이트로 이동시킬 수 있다.
이 2-byte/3-bit 회전 회로 (21) 는 도 15b에 도시하는 2-byte 회전 회로 (20) 의 구조에 부가하여, 배선 및 셀렉터 (21a; 도 18에서는, 직사각형 박스로 표시된다) 를 구비하여, 3-bit 회전을 최하위 바이트에서 수행하여 우측으로부터 제 2 박스로 이동하고, 2 번째 바이트 내지 최하위 바이트에서 3-bit 회전을 수행하여 2 번째 바이트 내지 최하위 바이트가 최우측 박스로 이동할 것인지의 여부를 선택할 수 있다. 셀렉터 (21a) 는 1 byte 또는 2 byte에서 3-bit 회전을 수행할 것인지의 여부를 선택할 수 있게 한다.
도 18은 신호 플로우를 더욱 잘 설명하기 위하여 비트와 함께 배선 및 셀렉터 (21a) 들을 도시한 것이다. 실제적으로, 2-byte/3-bit 회전 회로 (21) 는 내부 레지스터 (10) 에 기억되는 정보, 즉, 2-byte/3-bit 회전 (또는 바이트 회전) 으로 처리되는 정보, 또는, 다른 과정에 의해 처리되는 정보를 선택하는 셀렉터를 각 배선마다 구비한다.
이 라운드 서브 키 생성 회로 (206) 는 예를 들면, 다음과 같이 동작한다. 입력되는 암호 키의 비트들의 수에 따라서, 처리 방법이 변경되는 경우에도, 기본 동작은 동일하다. 여기에서는, 128 bit 암호 키를 입력하는 경우에 수행되는 동작을 도 17과 도 19를 통하여 설명하고자 한다.
제 6 실시예의 라운드 서브 키 생성 회로 (206) 는 도 24에 도시한 종래기술의 라운드 서브 키 생성 회로 (201) 에서 출력 셀렉터 (14) 를 제거하고, 16 개의 가산기 대신에 2개의 가산기 (15) 만을 구비하여, 회로의 크기를 축소시킨다. 이를 대신하여, 이 라운드 서브 키 생성 회로 (206) 는 도 17에 도시한 2-byte/3-bit 회전 회로 (21) 를 구비한다. 이 라운드 서브 키 생성 회로 (206) 는 라운드 서브 키 생성 회로 (205) 와 마찬가지로, 내부 레지스터 (10) 에 최하위의 2 byte만을 출력한다.
도 19는 라운드 서브 키 생성 회로 (206) 의 내부 레지스터 (10) 에서의 정보 상태를 시계열에 따라 도시한다. 도 19에서는, 각각의 정사각형 박스는 내부 레지스터 (10) 에 기억되는 1 byte를 나타낸다. 암호 키를 입력하는 경우에, 각각의 박스의 수치는 암호 키의 각각의 바이트의 순서번호를 나타낸다. Kj[i] 는 16 byte (128 bit) 를 포함하는 라운드 서브 키 (Kj) 의 i번째 바이트를 나타낸다.
시간 (t1) 에서는, 이 내부 레지스터 (10) 는, 입력되는 128 bit 암호 키 (16 byte) 를 기억한다. 이 경우에, 배타적 OR 회로 (9) 는 모든 입력되는 암호 키의 16 byte에 있어서 동일한 위치 (즉, 비트) 에 위치되는 정보의 배타적 OR 을 계산한다. 그 결과값을, 17번째 바이트에서 각각의 위치에 대한 정보를 표시하는 것으로 정의한다. 다음, 내부 레지스터 (10) 는 최하위 2 바이트들로 표시되는 정보를 가산기 (15) 에 출력한다. 시간 (t1) 에서는, 라운드 서브 키의 1 번째 바이트 및 2 번째 바이트 (K1; K1[1], K1[2]) 로 표시되는 정보를 출력한다.
다음, 시간 (t2) 에서는, 2-byte/3-bit 회전 회로 (21) 는 2-byte 회전 및 3-bit 회전을 동시에 수행한다 (최하위 바이트에서만 이러한 회전을 수행하여, 이최하위 바이트가 우측으로부터 제 2 박스로 이동하고, 2번째 내지 최하위 바이트에서만 이러한 회전을 수행하여, 2번째 내지 최하위 바이트가 최우측 박스로 이동함). 다른 바이트들의 정보는 2 byte만큼 좌측으로 이동한다. 내부 레지스터 (10) 는 최하위 2 바이트들로 표시되는 정보를 가산기 (15) 에 출력한다. 시간 (t2) 에서는, 라운드 서브 키의 최하위 2 바이트들 (K1; K1[3], K1[4]) 로 표시되는 정보를 출력한다. 도 19에서는, 라운드 서브 키 (K1) 의 처리동안에, 3-bit 회전을 완료한, 회전되는 바이트의 수치를 순환시킨다.
위에서 설명한 단계들을 시간 (t8) 까지 반복한다. 이러한 방법으로, 모든 128 bit로 표시되는 정보를 출력할 때까지, 라운드 서브 키 (K1) 에서의 최하위 2 바이트들로 표시되는 정보를 순차적으로 출력한다.
시간 (t9, t10) 에서는, 2-byte 회전과 3-bit 회전을 수행하여, 다음 서브 라운드의 1 번째 바이트로 표시되는 정보가 최하위 바이트가 되도록 조절한다. 시간 (t10) 에서는, 2번째 내지 최하위 바이트에서 3-bit 회전을 수행하여, 이 2번째 내지 최하위 바이트가 최우측 박스로 이동하는 경우에는, 수치 "1" 을 만드는 바이트가 3-bit 회전으로 2 회이상 처리될 수 있다. 이러한 것을 방지하기 위해, 시간 (t10) 에서만은, 1 byte, 즉 최하위 바이트에서만 3-bit 회전을 수행하여, 이 1 byte가 우측으로부터 제 2 박스로 이동한다. 시간 (t10) 까지의 처리를 완료하는 경우에, 내부 레지스터 (10) 에서 모든 바이트의 수치들을 순환시킨다.이는, 모든 바이트에서 3-bit 회전을 수행하여, 라운드 서브 키 생성 회로 (206) 가 라운드 서브 키 (K2) 를 출력할 준비가 되어있음을 나타낸다. 다음, K2[1] 및 K2[2] 로 표시되는 정보를 출력한다.
그러한 후에, 2-byte 회전 및 3-bit 회전을 동일한 방법으로 수행한다. 따라서, 라운드 서브 키 (K1내지 K17) 들중 원하는 라운드 서브 키의 원하는 바이트로 표시되는 정보를 출력 셀렉터를 사용할 필요없이 획득할 수 있다.
바이어스 테이블 (18) 은 서브 라운드 신호 및 바이트 신호로 결정되는 2 byte 바이어스 값을 출력한다.
192 bit 암호 키 또는 256 bit 암호 키를 입력하는 경우에도, 동일한 과정을 수행하여, 원하는 라운드 서브 키의 원하는 바이트로 표시되는 정보를 획득할 수 있다.
제 6 실시예에서는, 3-bit 회전을 2-byte 회전과 함께 동시에 수행한다. 따라서, 한 라운드 서브 키를 출력하는데 필요한 처리 시간을 한 단계에 필요한 시간만큼 단축시킨다. 제 5 실시예에서는, 169개의 단계의 처리가 필요했지만, 제 6 실시예에서는, 152 단계로 이러한 처리를 수행할 수 있다.
제 1 내지 제 6 실시예에서는, 라운드 서브 키로 표시되는 정보를 8 bit의 단위, 16 bit의 단위, 및 128 bit의 단위로 출력한다. 본 발명은 이러한 것에만 한정되는 것은 아니고, 라운드 서브 키로 표시되는 정보를 비트 (8 ×m, 여기에서, m은 암호 키의 비트의 수치의 바이트 표시의 약수이다) 의 다른 수치의 단위로출력하는데 적용할 수도 있다.
위에서 설명한 바와 같이, 본 발명은 암호화하는데 필요한 모든 라운드 서브 키를 동시에 계산하지 않는다. 그 대신에, 본 발명은 서브 라운드 단위로 라운드 서브 키를 계산하거나, 1 byte 또는 2 byte 단위로 한 라운드 서브 키를 계산한다. 이러한 방법으로, 바이어스 값을 가산하는 가산기의 개수를 감소시킬 수 있다. 바이트를 회전시키는 회로의 설치로, 출력 스테이지에서 셀렉터를 제거할 수 있다. 따라서, 암호 알고리즘 SAFER+ 에 사용되는 라운드 서브 키를 생성하는 암호 키 생성 회로를 충분히 소규모로 만들 수 있다.
본 발명은 그 의미 및 범위에 벗어남이 없이 다양하게 변형할 수 있다. 따라서, 명세서내에 첨부되는 청구범위의 범위는 앞에서 설명한 상세한 설명으로 한정하지 않으며, 본 청구범위를 더욱 넓게 구성할 수도 있다.
Claims (8)
128 bit 평문의 암호화를 위하여 1개 이상의 서브 라운드에 사용되는 1개 이상의 128 bit 라운드 서브 키를, (64×n) bit (2≤n≤4; n은 정수) 를 갖는 암호 키로부터 생성시키는 암호 키 생성 회로로서,
암호 키의 각각의 바이트에 포함되는 8 bit 정보에 있어서 동일한 위치에 위치되는 1 bit 정보의 배타적 OR을 계산하여, 1 byte 계산 정보를 생성하는 배타적 OR 회로,
(8 ×n) byte와 1 byte의 계산 정보를 갖는 암호 키의 합으로써 표시되는 (8 ×n + 1) byte 정보를 기억하는 레지스터,
1개 이상의 서브 라운드의 각 서브 라운드에서 1 byte만큼 (8 ×n + 1) byte 정보를 회전시켜 바이트 회전을 수행하는 바이트 회전 회로,
각각의 서브 라운드에서 (8 ×n + 1) byte 정보의 각 바이트에서의 비트를 3 bit만큼 회전시켜 3-bit 회전을 수행하는 3-bit 회전회로, 및
바이트 회전 및 3-bit 회전 과정을 거쳐 얻은 (8 ×n + 1) byte 정보의 최하위 바이트로부터의 (8 ×n) byte 정보에, 128 bit 바이어스 값을 가산하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시키는 16개의 가산기를 구비하는 것을 특징으로 하는 암호 키 생성 회로.
128 bit 평문의 암호화를 위하여 1개 이상의 서브 라운드에 사용되는 1개 이상의 128 bit 라운드 서브 키를, (64×n) bit (2≤n≤4; n은 정수) 를 갖는 암호 키로부터 생성시키는 암호 키 생성 회로로서,
암호 키의 각각의 바이트에 포함되는 8 bit 정보에 있어서 동일한 위치에 위치되는 1 bit 정보의 배타적 OR을 계산하여, 1 byte 계산 정보를 생성시키는 배타적 OR 회로,
(8 ×n) byte와 1 byte의 계산 정보를 갖는 암호 키의 합으로써 표시되는 (8 ×n + 1) byte 정보를 기억하는 레지스터,
1개 이상의 서브 라운드의 각 서브 라운드에서 1 byte만큼 (8 ×n + 1) byte 정보를 회전시켜 바이트 회전을 수행하고, 1개 이상의 서브 라운드의 각 서브 라운드에서 (8 ×n + 1) byte 정보의 각 바이트에서의 비트를 3 bit만큼 회전시켜 3-bit 회전을 수행하는 바이트/3-bit 회전회로, 및
바이트 회전 및 3-bit 회전 과정을 거쳐 얻은 (8 ×n + 1) byte 정보의 최하위 바이트로부터의 (8 ×n) byte 정보에, 128 bit 바이어스 값을 가산하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시키는 16개의 가산기를 구비하는 것을 특징으로 하는 암호 키 생성 회로.
128 bit 평문의 암호화를 위하여 1개 이상의 서브 라운드에 사용되는 1개 이상의 128 bit 라운드 서브 키를, (64×n) bit (2≤n≤4; n은 정수) 를 갖는 암호 키로부터 생성시키는 암호 키 생성 회로로서,
암호 키의 각각의 바이트에 포함되는 8 bit 정보에 있어서 동일한 위치에 위치되는 1 bit 정보의 배타적 OR을 계산하여, 1 byte 계산 정보를 생성시키는 배타적 OR 회로,
(8 ×n) byte와 1 byte의 계산 정보를 갖는 암호 키의 합으로써 표시되는 (8 ×n + 1) byte 정보를 기억하는 레지스터,
1개 이상의 서브 라운드의 각 서브 라운드에서 m byte만큼 (8 ×n + 1) byte 정보를 회전시켜 한번 이상 m byte 회전 (m 은 (8 ×n) 의 약수) 을 수행하는 바이트 회전 회로,
각각의 서브 라운드에서 (8 ×n + 1) byte 정보의 각 바이트에서의 비트를 3 bit만큼 회전시켜 3-bit 회전을 수행하는 3-bit 회전회로, 및
m byte 회전 및 3-bit 회전 과정을 거쳐 얻은 (8 ×n + 1) byte 정보의 최하위 바이트로부터의 (8 ×n) byte 정보에서 각각의 (8 ×m) bit 정보 단위에 (8 ×m) bit 바이어스 값을 가산하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시키는 m개의 가산기를 구비하는 것을 특징으로 하는 암호 키 생성 회로.
제 3 항에 있어서, m은 1인 것을 특징으로 하는 암호 키 생성 회로.
제 3 항에 있어서, m은 2인 것을 특징으로 하는 암호 키 생성 회로.
128 bit 평문의 암호화를 위하여 1개 이상의 서브 라운드에 사용되는 1개 이상의 128 bit 라운드 서브 키를, (64×n) bit (2≤n≤4; n은 정수) 를 갖는 암호 키로부터 생성시키는 암호 키 생성 회로로서,
암호 키의 각각의 바이트에 포함되는 8 bit 정보에 있어서 동일한 위치에 위치되는 1 bit 정보의 배타적 OR을 계산하여, 1 byte 계산 정보를 생성시키는 배타적 OR 회로,
(8 ×n) byte와 1 byte의 계산 정보를 갖는 암호 키의 합으로써 표시되는 (8 ×n + 1) byte 정보를 기억하는 레지스터,
1개 이상의 서브 라운드의 각 서브 라운드에서 m byte만큼 (8 ×n + 1) byte 정보를 회전시켜 한번 이상 m byte 회전 (m 은 (8 ×n) 의 약수) 을 수행하고, 각각의 m byte 회전에서 (8 ×n + 1) byte 정보내의 m byte 정보에서의 비트를 3 bit만큼 회전시켜 3-bit 회전을 수행하는 바이트/3-bit 회전회로, 및
m byte 회전 및 3-bit 회전 과정을 거쳐 얻은 (8 ×n + 1) byte 정보의 최하위 바이트로부터의 (8 ×n) byte 정보에서 각각의 (8 ×m) bit 정보 단위에 (8 ×m) bit 바이어스 값을 가산하여, 각각의 서브 라운드에서 1개 이상의 128 bit 라운드 서브 키들중 하나를 생성시키는 m개의 가산기를 구비하는 것을 특징으로 하는 암호 키 생성 회로.
제 6 항에 있어서, m은 1인 것을 특징으로 하는 암호 키 생성 회로.
제 6 항에 있어서, m은 2인 것을 특징으로 하는 암호 키 생성 회로.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000334013A JP3770584B2 (ja) | 2000-10-31 | 2000-10-31 | 暗号鍵生成回路 |
JPJP-P-2000-00334013 | 2000-10-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20020033590A true KR20020033590A (ko) | 2002-05-07 |
KR100442913B1 KR100442913B1 (ko) | 2004-08-02 |
Family
ID=18810007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2001-0067705A KR100442913B1 (ko) | 2000-10-31 | 2001-10-31 | 암호 키 생성 회로 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7039186B2 (ko) |
EP (1) | EP1202488B1 (ko) |
JP (1) | JP3770584B2 (ko) |
KR (1) | KR100442913B1 (ko) |
CN (1) | CN1231013C (ko) |
DE (1) | DE60128309T2 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8015211B2 (en) * | 2004-04-21 | 2011-09-06 | Architecture Technology Corporation | Secure peer-to-peer object storage system |
JP2006253745A (ja) * | 2005-03-08 | 2006-09-21 | N-Crypt Inc | データ処理装置、データ処理システム、及びデータ処理方法 |
JP5131187B2 (ja) * | 2006-03-14 | 2013-01-30 | 日本電気株式会社 | 情報処理システム、情報処理方法および情報処理プログラム |
US8118214B2 (en) * | 2006-03-24 | 2012-02-21 | Atmel Corporation | Method and system for generating electronic keys |
CN100581101C (zh) * | 2007-11-19 | 2010-01-13 | 西安西电捷通无线网络通信有限公司 | 一种基于分组密码算法的加密处理设备 |
US9754130B2 (en) | 2011-05-02 | 2017-09-05 | Architecture Technology Corporation | Peer integrity checking system |
CN109635586B (zh) * | 2018-12-13 | 2021-07-06 | 苏州科达科技股份有限公司 | 媒体文件加密密钥管理方法、系统、设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4255811A (en) * | 1975-03-25 | 1981-03-10 | International Business Machines Corporation | Key controlled block cipher cryptographic system |
US5054067A (en) * | 1990-02-21 | 1991-10-01 | General Instrument Corporation | Block-cipher cryptographic device based upon a pseudorandom nonlinear sequence generator |
US5724428A (en) * | 1995-11-01 | 1998-03-03 | Rsa Data Security, Inc. | Block encryption algorithm with data-dependent rotations |
US5870470A (en) * | 1996-02-20 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for encrypting long blocks using a short-block encryption procedure |
KR100389902B1 (ko) * | 1997-06-23 | 2003-09-22 | 삼성전자주식회사 | 차분해독법과선형해독법에대하여안전성을보장하는고속블럭암호화방법 |
JPH1145049A (ja) * | 1997-07-24 | 1999-02-16 | Matsushita Electric Ind Co Ltd | 暗号装置 |
JP2000039840A (ja) | 1998-07-24 | 2000-02-08 | Matsushita Electric Ind Co Ltd | 暗号装置 |
KR100377176B1 (ko) * | 2000-06-12 | 2003-03-26 | 주식회사 하이닉스반도체 | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 |
KR100425956B1 (ko) * | 2000-07-15 | 2004-04-03 | (주)시큐어피아 | 동작 진행 중 라운드 키 계산 방식을 이용한 seed 암호 및 복호 회로 |
-
2000
- 2000-10-31 JP JP2000334013A patent/JP3770584B2/ja not_active Expired - Fee Related
-
2001
- 2001-10-30 DE DE60128309T patent/DE60128309T2/de not_active Expired - Lifetime
- 2001-10-30 EP EP01125898A patent/EP1202488B1/en not_active Expired - Lifetime
- 2001-10-31 US US09/984,924 patent/US7039186B2/en not_active Expired - Fee Related
- 2001-10-31 CN CNB01143175XA patent/CN1231013C/zh not_active Expired - Fee Related
- 2001-10-31 KR KR10-2001-0067705A patent/KR100442913B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20020051535A1 (en) | 2002-05-02 |
US7039186B2 (en) | 2006-05-02 |
EP1202488A2 (en) | 2002-05-02 |
DE60128309T2 (de) | 2008-01-10 |
KR100442913B1 (ko) | 2004-08-02 |
CN1231013C (zh) | 2005-12-07 |
EP1202488B1 (en) | 2007-05-09 |
JP3770584B2 (ja) | 2006-04-26 |
EP1202488A3 (en) | 2003-03-19 |
JP2002139999A (ja) | 2002-05-17 |
CN1351435A (zh) | 2002-05-29 |
DE60128309D1 (de) | 2007-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3029381B2 (ja) | データ変換装置 | |
US5351299A (en) | Apparatus and method for data encryption with block selection keys and data encryption keys | |
EP1193665B1 (en) | Block encryption device using auxiliary conversion | |
US6298136B1 (en) | Cryptographic method and apparatus for non-linearly merging a data block and a key | |
US5740249A (en) | Encryption apparatus and method capable of controlling encryption process in accordance with an internal state | |
US7801307B2 (en) | Method of symmetric key data encryption | |
KR100377172B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러 | |
KR100377176B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 | |
CA2096818C (en) | Arrangement for transforming plaintext into ciphertext for use in a data communications system | |
KR100442913B1 (ko) | 암호 키 생성 회로 | |
RU2188513C2 (ru) | Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки | |
JPH1152850A (ja) | 暗号変換方法および装置 | |
EP1043863A1 (en) | Method for the cryptographic conversion of l-bit input blocks of digital data into l-bit output blocks | |
KR100308893B1 (ko) | 엘.에프.에스.알을 이용한 확장 알.씨.4 암호화 방법 | |
KR20030090870A (ko) | 레이아웃 면적을 감소시킨 safer+ 알고리즘을이용한 암호화장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20110617 Year of fee payment: 8 |
|
LAPS | Lapse due to unpaid annual fee |