KR100349332B1 - 데이터 암호화장치 및 방법 - Google Patents

데이터 암호화장치 및 방법 Download PDF

Info

Publication number
KR100349332B1
KR100349332B1 KR1020000002801A KR20000002801A KR100349332B1 KR 100349332 B1 KR100349332 B1 KR 100349332B1 KR 1020000002801 A KR1020000002801 A KR 1020000002801A KR 20000002801 A KR20000002801 A KR 20000002801A KR 100349332 B1 KR100349332 B1 KR 100349332B1
Authority
KR
South Korea
Prior art keywords
data
bit
bits
key
unit
Prior art date
Application number
KR1020000002801A
Other languages
English (en)
Other versions
KR20000076501A (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 KR20000076501A publication Critical patent/KR20000076501A/ko
Application granted granted Critical
Publication of KR100349332B1 publication Critical patent/KR100349332B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • 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)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 데이터 암호화장치 및 암호화방법에 관한 것으로, 데이터 변환부는 입력데이터 F와 서브키 데이터 Ki에 대해 몫을 232로 산술가산하여, 출력으로 데이터 G를 생성하는 키 가산부와, 상위 비트 위치를 향해 7비트 시프트 회전시켜 얻은 데이터 Rot7(G)와, 상위 비트 위치를 향해 1비트 시프트 회전시켜 얻은 데이터 Rot1(G)와, 데이터 G자체에 대응하는 배타적 논리합 연산을 실행하는 데이터 치환부를 포함한다.

Description

데이터 암호화장치 및 방법{DATA ENCRYPTION APPARATUS AND METHOD}
본 발명은 데이터 암호화장치 및 방법에 관한 것으로, 특히 시프트 회전을 적용한 데이터 암호화기술에 관한 것이다.
최근 급속한 디지털 통신의 보급에 따라, 건전한 산업의 발전이나 프라이버시를 보호하는 등의 관점에서 볼 때, 통신에 있어서의 데이터의 보안성을 확보할 수 있는 안전성이 높은 암호화방식이 요구되고 있다. 또한 하드웨어나 소프트웨어 등의 암호화방식에 대해서는 안전성뿐만 아니라 암호처리의 고속성 및 실장의 간편성도 요구된다.
(제 1 종래기술)
이하에서 데이터 암호화방식의 제 1 종래예로서 의사난수 가산형 암호를 설명하기로 한다.
이 암호화방식에서는 송신기와 수신기 양쪽이 같은 비밀키(이하 간단히 “키”라 함)를 공유하고 있다. 평문 데이터 M을 고정길이의 평문 데이터블록 Mi로 구획하고, 구획된 각 Mi에 대하여 공유하고 있는 키를 시드(seed)로서 평문 데이터블록 Mi와 같은 길이의 난수 데이터 R을 발생시킨다.
다음으로 각 평문 데이터 블록 Mi에 그 난수 데이터 R을 대응시키는 비트마다 배타적 논리합의 계산을 행함으로써 암호문 데이터블록 Ci를 얻는다.
이것을 연산으로 표현하면 Ci=Mi(+)R로 표현된다.
여기에서 연산자 “(+) ”는 대응하는 비트마다의 배타적 논리합 연산을 의미한다.
마지막으로, 얻어진 각 암호문 데이터블록 Ci를 연결하여 암호문 데이터 C를 얻게 된다.
이 암호화방식은 암호화속도가 매우 빠르므로, 화상이나 오디오 데이터의 실시간 통신에 있어서의 암호화방식으로서 적합하다.
그러나 이 암호화방식은 매우 안전성이 낮다. 즉 지금 모든 평문 데이터블록 Mi의 암호화 키의 값이 같다고 하면, 불과 1조의 평문 데이터블록 Mi와 암호문 데이터블록 Ci를 입수함으로써 식 R=Mi(+)Ci 를 이용하여 난수 R을 판명할 수 있으므로, 결과적으로 다른 모든 평문 데이터블록 Ci를 해독할 수 있게 된다.
(제 2 종래기술)
이하, 데이터 암호화방식의 제 2 종래예를 설명하기로 한다. 블록암호방식에는 DES(Data Encryption Standard)방식이나 FEAL(Fast Data Encipherment Algorithm)방식이 있다. 이들 DES방식 및 FEAL방식에 대해서는 에이지 오카모토(Eiji Okamoto) 저 「암호화 이론」(공립출판, 1993)에 상세하게 설명되어 있다.
이 블록암호방식은 64비트의 입출력 데이터를 취급하고, 강력하게 데이터를 셔플링(shuffling)하는 능력을 갖고 있다.
블록암호방식의 종래예의 하나로서 일본국 특개평 1-276189호 공보에 기재된 MULTI2 암호방식이 있다.
도 1은 MULTI2 암호방식을 적용하는 데이터 암호화장치에 실장되는 3개의 데이터 변환부 중 하나인 데이터 변환부(40)의 구성을 도시한 블록도이다.
이 데이터 변환부(40)는 키 가산부(401)와, 제 1 데이터 치환부(402)와, 제 2 데이터 치환부(403)로 구성되며, 32 비트 입력데이터 A를 32비트 부분키 데이터 Ki에 기초하여 데이터 변환처리를 행하고 32 비트 출력데이터 D를 출력한다.
더욱 상세하게는, 일단 입력데이터 A 및 부분키 데이터 Ki가 키 가산부(401)에 입력되면, 키 가산부(401)는 입력데이터 A와 부분키 데이터 Ki에 232를 몫으로 하는 산술가산을 행하고, 32 비트 데이터 B로서 결과를 출력한다. 이것은 식 B=(A+Ki) mod 232로 나타낸다.
여기에서 “+ ”는 산술 가산을 나타내고, “mod β”는를 β로 나눈 나머지를 나타낸다.
제 1 데이터 치환부(402)는 상기 키 가산부(401)의 출력 데이터 B를 입력받아, Rot2(B)에 의해 B를 상위비트 위치로 2비트 시프트 회전하여 얻어지는 데이터 Rot2(B)와 데이터 B 자신과 상수 데이터 “1 ”에 대하여 232를 몫으로 하는 산술가산을 행한다. 이 결과로서 32 비트 데이터 C를 얻게 된다. 이 때의 식은C=(Rot2(B)+B+1) mod 232로 된다.
여기에서 “Rot(X)”는 상위 위치로비트 만큼 32 비트 데이터 X의 시프트 회전( 및 그 결과)을 나타낸다.
제 2 데이터 치환부(403)는 상기 제 1 데이터 치환부(402)의 출력데이터 C를 입력받아 C를 상위로 4비트 시프트 회전한 데이터 Rot4(C)와 데이터 C 자신과의 비트마다의 배타적 논리합연산을 행하고, 32비트 데이터 D로서 출력한다. 이 때의 식은 D=Rot4(C) (+) C로 나타낸다.
결과적으로 32비트 데이터 D가 데이터 변환부(40)의 출력 데이터로 출력된다.
따라서 종래의 데이터 변환부(40)에서는 가변하는 시프트 회전(shift-rotations)을 조합한 연산을 이용함으로써 고속의 데이터 셔플링이 실현되고 있다.
그러나 종래의 데이터 변환부(40)는 다음과 같은 보안상의 문제점을 갖는다.
입력데이터 M1과 입력데이터 M2가 관계식 M1 (+) M2=55555555h 를 만족하고 각각이 제 2 데이터 치환부(403)에 입력된다고 가정해보자. 여기에서 "h"는 16진법 표기를 나타낸다.
다음으로 시프트 회전의 선형성에 따라 Rot4(M1) (+) Rot4(M2)=Rot4(M1 (+) M2) 라고 한다.
또 원소 당 데이터 “55555555h”는 대칭이므로, Rot4(55555555h)=55555555h가 된다.
결국 식 Rot4(M1) (+) Rot4(M2)=55555555h를 갖는다.
따라서 Rot4(M1) (+) (M1) (+) Rot4(M2) (+) M2=00000000h,
즉 Rot(M1) (+) M1=Rot4(M2) (+) M2 는 참이다.
다시 말하면, 입력데이터 M1로부터 생성된 출력데이터는 제 2 데이터 치환부(403)에서의 입력데이터 M2로부터 생성된 출력데이터와 같아진다. 이것은 제 2 데이터 치환부(403)에 의해 실행되는 변환은 전사(surjection) 이면서 단사(injection)인 전단사(bijection)가 아닌 것을 의미한다. 그러므로 데이터 변환부(40)에 의한 전체 변환은 전단사가 아니다.
도 2는 제 2 데이터 치환부(403)(즉 데이터 변환부(40))에서의 사상의 속성은 비 전단사 사상인 것을 도시한다. 도 2에서 정의역 X에서의 2가지의 다른 입력값은 치역 Y에 동일한 출력값으로 사상된다.
이러한 데이터 변환부(40)의 속성은 정의역 X의 원소 수에 비해 치역 Y의 원소 수가 작아 데이터 변환부(40)에서 데이터 셔플링되는 강도가 불충분하게 되기 때문에 암호의 안정성을 위해 바람직한 것은 아니다. .
여기에서 “Rot4(X) (+) X ” 대신에 입력데이터 X를 2비트 상위로 시프트 회전함으로써 얻어지는 데이터 Rot2(X)를 출력하여 이러한 방법으로 제 2 데이터 치환부(403)를 수정하는 것을 상정할 수 있고, 제 2 데이터 치환부(403)가 전단사로 변환된다.
그러나, 이것은 충분한 비트 애벌란시 효과를 일으키지 못하므로, Rot2(X) 변환으로는 원하는 수준의 보안성을 갖추지 못하게 된다. 여기에서의 애벌란시 효과란 입력데이터에 있어 비트 하나의 변경에 대한 결과로서 출력데이터에 몇 비트의 암호화 속성이 관찰되는가를 말한다.
본 발명은 상기와 같은 문제점을 감안하여 강한 데이터 셔플링 능력을 갖고 충분한 비트 애벌란시 효과를 갖는 데이터 변환을 실행하여 시프트 회전을 할 수 있는 데이터 암호화장치 및 방법을 제공하기 위한 것이다.
도 1은 종래의 데이터 암호화장치에서의 데이터 변환부의 구성을 도시한 블록도
도 2는 종래의 데이터 변환부에서의 매핑 속성을 도시한 도면
도 3은 본 발명의 실시예에 있어서 암호화 통신시스템의 구성을 도시한 블록도
도 4는 도 3에 도시한 데이터 암호화장치의 구성을 도시한 블록도
도 5는 도 3에 도시한 데이터 복호화장치의 구성을 도시한 블록도
도 6은 데이터 암호화장치에서 제 1 데이터 셔플링부의 구성을 도시한 블록도
도 7은 데이터 복호화장치에서 제 2 데이터 셔플링부의 구성을 도시한 블록도
도 8은 제 1 데이터 셔플링부( 및 제 2 데이터 셔플링부)에서 데이터 변환부의 구성을 도시한 블록도
도 9는 데이터 변환부에서 매핑 속성을 도시하는 도면
도 10은 제 1 변형예에 따른 데이터 변환부의 구성을 도시한 블록도
도 11은 제 2 변형예에 따른 데이터 변환부의 구성을 도시한 블록도
도 12는 제 3 변형예에 따른 데이터 변환부의 구성을 도시한 블록도
도 13은 도 12에 도시한 데이터 치환부의 상세 구성을 도시한 블록도
도 14는 제 4 변형예에 따른 데이터 변환부의 구성을 도시한 블록도
도 15는 도 14에 도시한 데이터 치환부의 상세 구성을 도시한 블록도
상기 목적을 달성하기 위하여 본 발명에 의한 데이터 암호화장치는 n 비트의 입력데이터를 n 비트의 출력데이터로 변환하는 데이터 변환장치를 구비한 데이터 암호화장치로서, 상기 데이터 변환장치는, n 비트의 입력데이터를 각각 S1 비트, S2 비트, …및 Sk 비트로 시프트 회전시킴으로써 k 조의 데이터를 생성하는(여기서, S1, S2, … 및 Sk는 음이 아닌 정수로 n보다 작고, k는 3 이상의 홀수) 시프트 회전수단과, n 비트의 출력데이터를 생성하기 위해 상기 k 조의 데이터를 함께 결합하는 데이터 결합수단을 포함하여 구성된다.
이렇게 구성함으로써 데이터 암호화장치는 먼저 평문 데이터를 시프트 회전 방식에 의해 3개 이상의 홀수의 조로 변환하고, 다음으로 데이터의 조를 결합하여 암호문을 형성한다. 따라서 데이터 암호화장치에 의해 실행되는 암호화는 전단사로 변환되고 데이터 셔플링 수행능력과 비트 애벌란시 수행능력이 뛰어난 것을 보증할 수 있다.
다시 설명하면, 평문 데이터가 조합처리되기 전에 3개 이상의 조로 변환된 것으로 하면, 본 발명에 의한 데이터 암호화장치에 의해 제공되는 비트 애벌란시 효과는 평문 데이터가 단 1조의 데이터만으로 변환되는 종래의 기술보다 나은 것을 알 수 있다. 마찬가지로 평문 데이터가 조합처리되기 전에 기수 조의 데이터로 변환된 것으로 하면, 본 발명에 의한 데이터 암호화장치는 종래의 평문 데이터가 2조의 데이터로 변환되는 기술과는 다르게 전단사 성질을 갖게되는 것을 알 수 있다.
여기에서 데이터 암호화장치의 상기 데이터 변환장치는 n 비트의 입력데이터를, 시프트 회전수단에 의해 시프트 회전되기 전에, 미리 주어진 키 데이터와 결합하기 위한 키 결합수단을 추가로 포함하고, 상기 시프트 회전수단은 상기 키 데이터에 결합된 n 비트의 입력데이터를 시프트 회전시키기 위한 수단으로 할 수 있다.
이러한 구성으로 함으로써, 키 데이터와 결합되는 평문 데이터에 대해 시프트 회전이 실행될 수 있다. 따라서 고정된 변환을 반복함으로써 관련되는 문제점을 회피할 수 있고, 높은 보안성을 갖는 키 암호화를 실현할 수 있다.
여기에서 시프트 회전부는 n 비트의 평문 데이터를 각각 S1비트, S2 비트, …, 및 Sk 비트로 시프트 회전시키기 위한 k 회전부를 포함할 수 있다.
이와 같이 구성함으로써, 병렬로 k 회전부에 입력된 평문 데이터와 평문 데이터의 시프트 회전이 동시에 실행되고, 시프트 회전이 연속적으로 실행되는 경우에 비해 암호화 속도가 증가한다.
여기에서 k 회전부는 n 비트의 평문 데이터를 각각 S1비트, S2 비트, …, 및 Sk 비트로 시프트 회전시키기 위한 배선 패턴을 갖는 신호선으로 구성할 수 있다. 또 키 결합부와 데이터 결합부는 각각 산술 가산기와 EX-OR 게이트로 구성할 수 있다.
이와 같이 구성함으로써, 간단한 회로구성으로서 고속의 데이터 셔플링을 실현할 수 있는 데이터 암호화장치를 실현할 수 있다.
여기에서 데이터 결합부는 n 비트의 암호문 데이터를 생성하기 위해 미리 주어진 키 데이터를 k조의 데이터와 함께 결합시킴으로써 얻어지는 n비트 데이터와 결합시킬 수 있다.
이와 같이 구성함으로써, 평문 데이터를 시프트 회전시켜 시프트 회전된 결과를 함께 결합시킨 결과는 다른 키 데이터와 결합된다. 따라서 고정된 변환을 반복함으로써 발생되는 문제점을 회피할 수 있고, 이와 동시에 높은 보안성을 갖는 키 암호화를 실현할 수 있게 된다.
여기에서 시프트 회전부는, n 비트의 입력 데이터를 각각 특정된 회전량으로 시프트 회전시키는 k 회전부와, 키 데이터를 획득하기 위한 키 데이터 획득부와, 획득된 키 데이터에 기초하여 S1, S2, …Sk의 값을 결정하고, k 회전부에 대해 각각의 회전량으로서 S1 비트, S2 비트, …및 Sk 비트를 특정하기 위한 회전량 결정부를 포함하고, 상기 k 회전부는 n 비트의 입력데이터를 각각 회전량 결정부에 의해 특정된 S1 비트, S2 비트, …및 Sk 비트로 시프트 회전시키는 것으로 할 수 있다.
이와 같이 구성함으로써, k 회전부의 회전량은 암호화 보안성을 강화하는 키 데이터를 사용하여 동적으로 결정된다.
여기에서 시프트 회전부는, n 비트의 입력데이터를 S1 비트, S2 비트, …및Sm 비트로 각각 시프트 회전시키고, S1, S2, …및 Sm은 음이 아닌 정수로 n보다 작고, m은 3 이상의 정수인 m 회전부와, 키 데이터를 획득하기 위한 키 데이터 획득부와, 획득된 키 데이터에 기초하여 m 회전부로부터 k 회전부를 선택하고 선택된 k 회전부에 의해 n 비트의 입력데이터의 시프트 회전 결과로서 k조의 데이터가 생성되는 선택부를 포함할 수 있다.
이와 같이 구성함으로써, 평문 데이터로부터 생성되는 데이터 조의 수와 평문 데이터로 공급되는 회전량은 암호화의 보안성을 강화하는 키 데이터를 사용하여 동적으로 결정된다.
또한, 상기 목적은 상기의 데이터 암호화장치의 특성을 실현하는 데이터 암호화방법 또는 데이터 암호화방법을 실행하는 프로그램에 의해 달성될 수 있다.
그리고, 본 발명에 의한 데이터 암호화장치는 시프트 회전을 사용하는 종래 기술의 암호화 속도를 낮추지 않고 보다 강한 데이터 셔플링 수행능력을 보여준다. 또 본 발명에 의한 데이터 암호화장치는 멀티미디어 기술의 발전에 부응하여 광범위한 응용성을 가지고, 특히 화상 또는 오디오 정보의 실시간 비밀전송 등의 영역에 활용될 수 있다.
상술한 목적 및 기타의 목적과 이점 및 특징은 첨부도면과 관련된 다음의 상세한 설명을 통해 더욱 구체화 될 수 있을 것이다.
(실시예)
이하 도면을 참조하여 본 발명의 실시예에 관하여 상세히 설명하기로 한다.
일반적으로 키 데이터를 갖는 암호화수단에 의한 데이터 암호화장치에서 생성된 암호문 데이터는 동일한 키 데이터를 사용하는 암호화의 역변환수단에 의해 데이터 복호화장치에서 복호문 데이터로 변환된다.
본 실시예에서는 데이터 암호화장치를 갖는 송신기가 평문 데이터를 암호화하여 암호문 데이터를 수신기에 송신하고, 데이터 복호장치를 갖는 수신기가 그 암호문 데이터를 해독하여 사용될 수 있는 복호문 데이터를 얻을 수 있도록 한 통신 시스템에 본 발명이 적용된 경우에 대하여 설명한다.
(암호화통신 시스템의 구성)
도 3은 본 발명의 실시예에 있어서 암호화통신 시스템의 구성을 도시하는 블록도이다. 본 발명에 의한 암호화통신 시스템은 주로 송신기(1), 수신기(2) 및 전송로(3)로 구성된다. 예를 들어 송신기(1) 및 수신기(2)는 비디오 서브 시스템에서 디지털화된 화상정보를 각각 송수신하는 서버 및 단말기이고, 반면에 전송로(3)는 디지털 방송에서 인터넷 또는 트랜스포트 스트림으로 대표되는 통신 네트워크이다.
송신기(1)는 데이터 암호화장치(10) 및 송신부(11)로 구성된다. 데이터 암호화장치(10)에는 64비트의 평문 데이터와 256비트의 키 데이터가 입력된다. 여기에서 평문 데이터는 64비트 단위로 디지털 부호화된 오디오 또는 화상정보이고, 키 데이터는 미리 송신기(1)와 수신기(2) 사이에서 정해진 비밀키이다. 본 데이터 암호화장치(10)는 입력된 평문 데이터와 키 데이터를 처리하여 64비트의 암호문 데이터를 생성한다. 이 때 생성된 암호문 데이터는 송신부(11)에 의해 병렬-직렬 변환되고, 변조 및 증폭되어 전송로(3)를 거쳐 송신기(2)에 송신된다.
수신기(2)는 데이터 복호화장치(20) 및 수신부(21)로 구성된다. 먼저 수신부(21)에서 64비트의 암호문 데이터가 수신되어 직렬-병렬 변환되고, 다음으로 256비트 키 데이터와 함께 데이터 복호화장치(20)에 입력된다. 데이터 복호화장치(20)는 입력된 평문 데이터와 키 데이터를 처리하여 64비트의 복호문 데이터를 얻고, 디코더(도시 생략) 등을 통해 디코드된 데이터를 디스플레이 또는 스피커를 통해 출력한다.
(데이터 암호화장치(10)의 구성)
도 4는 도 3에 도시된 데이터 암호화장치(10)의 구성을 도시한 블록도이다. 본 데이터 암호화장치(10)는 제 1 셔플링부(101), 제 1 어림수(round number) 제어부(102) 및 제 1 키 제어부(103)를 포함한다.
제 1 데이터 셔플링부(101)는 입력되는 64비트의 평문 데이터를 제 1 키 제어부(103)로부터 입력되는 32비트의 부분키 데이터에 따라 데이터 셔플링하고, 64비트의 데이터를 출력한다.
제 1 어림수 제어부(102)는 제 1 데이터 셔플링부(101)에서 반복되는 셔플링의 반복횟수를 제어한다. 보다 상세하게는 제 1 데이터 셔플링부(101)에 의해 실행된 셔플링 횟수가 미리 지정된 횟수 미만인 경우에는, 제 1 어림수 제어부(102)는 제 1 데이터 셔플링부(101)로부터 출력된 64비트 데이터를 제 1 데이터 셔플링부(101)로 복귀시킨다. 반면에 어림수가 소정횟수에 도달하였다면, 제 1 어림수 제어부(102)는 64비트의 데이터를 64비트 암호문 데이터로 하여 송신부(11)로 통과시킨다. 본 실시예에서는 상기의 지정된 횟수를 8회로 한다.
제 1 키 제어부(103)는 입력된 키 데이터 256비트를 상위로부터 32비트씩 8개의 부분키(K0∼K7)로 분할하고, 부분키(K0∼K7)를 하나씩 순서대로 8회에 걸쳐 제 1 데이터 셔플링부(101)로 출력한다. 보다 상세하게는, 64비트의 평문 데이터가 제 1 데이터 셔플링부(101)에 첫 번째로 입력된 경우에는, 제 1 키 제어부(103)에서는 부분키 KO을 제 1 데이터 셔플링부(101)에 입력한다. 다음으로 제 1 데이터 셔플링부(101)로부터 데이터가 복귀되어 출력될 때마다, 제 1 키 제어부(101)는 부분키 K1∼K7을 하나씩 제 1 데이터 셔플링부(101)로 제공한다.
(데이터 복호화장치(20)의 구성)
도 5는 도 3에 도시된 데이터 복호화장치(20)의 구성을 도시한 블록도이다. 이 데이터 복호화장치(20)는 제 2 데이터 셔플링부(201), 제 2 어림수 제어부(202) 및 제 2 키 제어부(203)를 포함한다.
제 2 데이터 셔플링부(201)는 입력되는 64비트의 암호문 데이터를 제 2 키 제어부(203)로부터 입력되는 32비트의 부분키를 이용하여 수신부(21)를 통해 셔플링하여, 64비트의 데이터를 출력한다.
제 2 어림수 제어부(202)는 제 2 데이터 셔플링부(201)로부터 반복되는 셔플링의 횟수를 제어한다. 보다 상세하게는, 제 2 데이터 셔플링부(201)에서 실행되는 셔플링횟수가 미리 지정된 횟수 미만인 경우에는, 제 2 어림수 제어부(202)가 제 2 데이터 셔플링부(201)로부터 출력된 64비트의 데이터를 다시 제 2 데이터 셔플링부(201)에 입력한다. 반면에 미리 지정된 횟수가 된 경우에는, 제 2 어림수 제어부(202)는 복호화된 데이터로서 64비트 데이터를 출력한다. 본 실시예에서는 상기의 지정된 횟수를 8회로 한다.
제 2 키 제어부(203)는 입력된 키 데이터 256비트를 상위로부터 32비트씩 8개의 부분키(L7∼L0)로 분할하고, 부분키 L7∼L0을 8회에 걸쳐 하나씩 순서대로 제 2 데이터 셔플링부(201)로 출력한다. 보다 상세하게는, 암호문 데이터가 제 2 데이터 셔플링부(201)에 첫 번째로 입력된 경우에, 제 2 키 제어부(203)는 L0을 제 2 데이터 셔플링부(201)에 입력한다. 다음으로 제 2 데이터 셔플링부(201)로부터 출력된 데이터가 제 2 데이터 셔플링부(201)로 복귀할 때 마다 제 2 키 제어부(203)는 부분키 L1∼L7을 한번에 하나씩 제 2 데이터 셔플링부(201)에 출력한다.
(제 1 데이터 셔플링부(101)의 구성)
도 6은 도 4에 도시된 제 1 데이터 셔플링부(101)의 구성을 도시한 블록도이다. 제 1 데이터 셔플링부(101)는 배타적 논리합부(1011) 및 데이터 변환부(300)를 포함한다.
여기에서, 분할(1조의 데이터를 복수부분으로 나눔), 교차(transposition)(복수부분의 위치를 교환) 및 연결(concatenation)(복수부분을 디지트로 연결하여 새로운 조의 데이터를 형성하는 것)은 도면에 나타낸 배선 패턴으로 나타내고 있다.
입력된 데이터 64비트는 상위로부터 32비트 블록 X1과 하위 32비트 블록 X0으로 분할되고, 출력되는 64비트는 각각 상위 32비트 블록 Y1과 하위 32비트 블록 Y0의 조합으로 이루어진다.
상기 블록 X1은 그대로 Y0으로 출력되는 동시에, 제 1 키 데이터 제어부(103)로부터 주어지는 부분키 데이터 32비트에 기초하여 32비트 데이터 S로 변환되는 데이터 변환부(300)에 입력된다. 데이터 변환부(300)는 데이터 S를 상기데이터 S와 블록 X0의 비트에 대응하는 배타적 논리합 연산을 차례로 행하는 배타적 논리합부(1011)에 출력하고, 연산값 Y1을 출력한다.
이렇게 하여 얻어진 2개의 블록 Y1, Y0은 64비트의 출력 데이터로서 연결되어 클록(도시 생략)에 동기하여 이 제 1 데이터 셔플링부(101)로부터 출력된다.
(제 2 데이터 셔플링부(201)의 구성)
도 7은 도 5에 도시된 제 2 데이터 셔플링부(201)의 구성을 도시한 블록도이다. 제 2 데이터 셔플링부(201)는 데이터 변환부(301) 및 배타적 논리합부(2011)를 포함한다. 데이터 변환부(301) 및 배타적 논리합부(2011)는 도 6에 도시한 데이터 변환부(300) 및 배타적 논리합부(1011)와 각각 동일한 기능을 갖는다. 마찬가지로, 제 2 데이터 셔플링부(201)에서의 분할, 교차 및 연결 등의 처리는 도면에 도시된 배선 패턴으로 나타낸다.
64비트의 입력데이터는 상위의 32비트 블록 Z1과 하위의 32비트 Z0로 분할되고, 또한 64비트 출력데이터는 각각 상위와 하위비트로 구분되는 2개의 32비트 블록 W1과 W0의 조합으로 이루어진다.
블록 ZO은 블록 W1이 되는 동시에, 제 2 키 제어부(203)으로부터 주어지는 32비트 부분키에 기초하여 32비트 데이터 T로 변환되는 데이터 변환부(301)에 입력된다. 데이터 변환부(301)는 데이터 T를 배타적 논리합부(2011)로 출력하고, 배타적 논리합부(2011)는 상기 데이터 T와 클록 Z1에 대응하는 비트에 대하여 차례로 배타적 논리합하여, 그 결과를 블록 W0으로서 출력한다.
(데이터 변환부(300, 301)의 구성)
도 8은 도 6에 도시한 데이터 변환부(300) 및 도 7에 도시한 데이터 변환부(301)의 구성을 도시한 블록도이다.
데이터 변환부(300)는 32비트 입력데이터 F와 32비트 부분키 Ki를 수신하여 32비트 출력데이터 O을 출력한다. 데이터 변환부(300)는 키 가산부(3001), 데이터 치환부(3002) 및 환자표 데이터 저장부(3003)를 포함한다.
예를 들어, 키 가산부(3001)는 2개의 32비트 입력과 1개의 32비트 출력을 갖는 가산기로 이루어진다. 키 가산부(3001)는 입력데이터 F와 부분키 데이터 Ki에 대하여 232를 몫으로 하는 산술가산을 행하여 결과를 32비트 G로 출력한다. 이 연산은 식 G=(F+Ki) mod 232로 나타낼 수 있다.
데이터 치환부(3002)는 시프트 회전용의 고정된 배선 패턴을 갖는 EX-OR 게이트 등의 신호선들로 이루어진다. 데이터 G가 수신되면, 데이터 치환부(3002)는 G를 상위로 7비트 시프트 회전한 Rot7(G) 데이터와 G를 상위로 1비트 시프트 회전한 Rot1(G) 데이터 및 G 자체와의 배타적 논리합 연산을 행하고, 그 결과를 32비트 데이터 H로서 출력한다. 이 연산은 식 H=Rot7(G)(+)Rot1(G)(+)G로 나타낸다.
다음으로 상기 출력 데이터 H는 환자표 데이터 저장부(3003)에서 상위로부터 8비트씩 차례로 입력되는 4개의 블록(I3, I2, I1, I0)으로 분할된다.
환자표 데이터 보관부(3003)는 256개의 저장장소에 서로 다른 8비트 값을 갖는 환자표 데이터 표[0∼255]를 보유하는 ROM 등으로 이루어진다. 환자표 데이터 저장부(3003)는 8비트 입력데이터로 특정되는 위치에 저장되는 8비트 값을 출력하는 변환기의 기능을 갖는다.
보다 상세하게는, IEICE 기술보고서, ISEC98-13의 아오키 등의 저서 “기지의 블록암호공격에 대한 안전성을 고려한 S-BOX의 디자인”에 설명된 환자표 데이터 8비트 ×256개가 환자표 데이터 저장부(3003)에 저장된다. 연속된 입력데이터 I3, I2, I1, I0에 대하여 환자표 데이터 저장부(3003)는 각각, J3=Tab[I3], J2=Tab[I2], J1=Tab[I1], J0=Tab[I0]을 출력데이터로 한다.
상기 4개의 8비트 값 J3, J2, J1 및 J0이 순서대로 링크되어 있고 J3이 최상위비트이며, 데이터 변환부(300)로부터 출력되는 32비트 데이터가 데이터 0으로 출력된다.
환자표 저장부(3003)에서 입력/출력의 전환은 예를 들면, I0∼I3에 응답하여 각각 J0∼J3에 동기하여 구동되는 멀티플렉스 회로 및 디멀티플렉스 회로에 의해 이루어진다.
(제 1 데이터 셔플링부(101)와 제 2 데이터 셔플링부(201)의 관계)
도 6에 도시한 제 1 데이터 셔플링부(101)와 도 7에 도시한 제 2 데이터 셔플링부(201)는 모두 64비트 데이터와 32비트 부분키를 입력받아 64비트 데이터를 출력한다. 이하에서 제 1 데이터 셔플링부(101)에 의해 암호화된 평문 데이터가 제 2 데이터 셔플링부(201)에 의해 복구되는 이유를 명확히 하기 위해 제 1 데이터 셔플링부(101)와 제 2 데이터 셔플링부(201)의 관계를 설명한다.
이미 밝힌 바와 같이 도 6에서의 제 1 데이터 셔플링부(101)의 X1, X0, Y1, Y0 및 S의 관계는 다음의 수학식으로 나타낼 수 있다.
S=F(Ki, X1)
Y1=S (+) X0
Y0=X1
여기에서 “Ki”는 32비트 부분키를 나타내고, “F(Ki,)”는 입력이인 데이터 변환부(300)의 출력을 나타낸다.
또한 도 7에서 제 2 데이터 셔플링부(201)의 Z1, Z0, W1, W0 및 T의 관계는 다음의 수학식으로 나타낼 수 있다.
T=F(Ki,Z0)
W1=Z0
W0=T (+) Z1
여기에서도 동일한 32비트 부분키 Ki가 이용된다.
제 1 데이터 셔플링부(101)의 출력데이터가 제 2 데이터 셔플링부(201)에 입력으로 되기 때문에 다음의 수학식 7, 수학식 8이 성립된다.
Y1=Z1
Y0=Z0
상기 수학식 3 및 수학식 8로부터 수학식 9를 얻게 된다.
Y0=Z0=X1
수학식 9에 따라 수학식 4는 다음의 수학식 10으로 변환된다.
T=F(Ki, X1)
수학식 1 및 수학식 10으로부터 수학식 11을 얻게 된다.
S=T
수학식 6 및 수학식 11로부터 수학식 12를 얻게 된다.
W0=S (+) Z1
수학식 7 및 수학식 12부터 수학식 13을 얻게 된다.
W0=S (+) Y1
또한 수학식 2 및 수학식 13으로부터 수학식 14를 얻게 된다.
WO=S (+) {S (+) X0}
여기에서 배타적 논리합회로는 다음의 수학식 15와 같은 속성을 갖는다.
수학식 14 및 수학식 15에 따라서 수학식 16이 참이 된다.
W0=X0
반면에 수학식 3, 수학식 5 및 수학식 8로부터 수학식 17도 참이 된다.
W1=X1
상기 수학식 16 및 수학식 17로부터 명확하게 알 수 있듯이, 제 1 데이터 셔플링부(101)에서, 32비트의 부분키 데이터 Ki로 64비트의 데이터 X를 셔플링하여 생성된 64비트의 데이터 Y가 제 2 셔플링부(201)에서 동일한 32비트 부분키 Ki를 이용하여 셔플링되면, 64비트의 데이터 X가 복구된다.
(제 1 키 제어부(103)의 동작)
도 4에 도시한 제 1 키 제어부(103)는 이하와 같이 작동한다.
데이터 암호화장치(10)에서 64비트의 평문 데이터를 암호화하기 위해서는 제 1 데이터 셔플링부(101)가 8번의 셔플링을 반복한다. 제 1 키 제어부(103)는 1회째의 반복시에는 K0을, 2회째의 반복시에는 K1을, …, 8회째의 반복시에는 K7을, 각각 제 1 데이터 셔플링부(101)에 입력한다.
(제 2 키 제어부(203)의 동작)
한편 도 5에 도시한 제 2 키 제어부(203)는 이하와 같이 작동한다.
데이터 복호화장치(20)에서 64비트의 평문 데이터를 복호화하기 위해서는 제 2 데이터 셔플링부(201)에서 8번의 셔플링을 반복한다. 제 2 키 제어부(203)는 1회째의 반복시에는 L0을, 2회째의 반복시에는 L1을, …, 8회째의 반복시에는 L7을, 각각 제 2 데이터 셔플링부(201)에 입력한다.
(데이터 암호화장치(10)와 데이터 복호화장치(20) 사이의 관계)
도 4에 도시한 데이터 암호화장치(10)와 도 5에 도시한 데이터 복호화장치(20)는, 모두 64비트의 입력데이터와 256비트의 키 데이터를 입력받아 64비트의 데이터를 출력한다. 이하에서 데이터 암호화장치(10)에 의해 암호화된 평문 데이터가 데이터 복호화장치(20)에 의해 복구되는 것을 명확히 하기 위해 데이터 암호화장치(10)와 데이터 복호화장치(20)의 관계에 대하여 설명하기로 한다.
데이터 암호화장치(10)에서 64비트의 평문 데이터 A를 256비트의 키 데이터 K를 사용하여 암호화하는 것으로 한다.
제 1 키 제어부(103)는 K를 32비트 부분키로 분할하고, 각 블록을 제 1 데이터 셔플링부(101)에서 입력되는 순서대로 상위로부터 K0∼K7로 한다.
제 1 데이터 셔플링부(101)에서 평문 데이터 A는 부분키 K0를 이용하여 셔플링되어 그 결과로 데이터 A1을 출력한다. 또 데이터 A1은 부분키 K1을 이용하여 셔플링되어 데이터 A2를 출력한다. 이와 같이 데이터 A2로부터 데이터 A6가 반복되어 각각 데이터 A3∼A7을 출력한다. 마지막으로 데이터 A7은 부분키 K7을 이용하여 셔플링되어 데이터 A8을 출력한다. 다음으로 데이터 암호화장치(10)로부터 데이터 A8이 암호문 데이터로서 출력되고, 수신기(2)와 송신부(11)및 전송로(3)를 통해 전송되고, 수신부(21)를 통해 데이터 복호화장치(20)에 입력된다.
데이터 복호화장치(20)에서는 데이터 암호화장치(10)에서와 동일한 256비트의 키 데이터 K가 이용된다. 제 2 키 제어부(203)는 키 데이터 K를 상위로부터 32비트 부분키 L7∼L0으로 분할하고, 순서대로 이 부분키 L0∼L7을 제 2 데이터 셔플링부(201)로 공급한다. 여기에서 데이터 복호화장치(20)에 이용되는 키 데이터 K가 데이터 암호화장치(10)에 이용되는 키 데이터 K와 같은 것이기 때문에, K0=L7, K1=L6, K2=L5, K3=L4, K4=L3, K5=L2, K6=L1, K7=L0이 성립된다.
제 2 데이터 셔플링부(201)에서 암호문 데이터 A8은 부분키 L0을 이용하여 셔플링되어 데이터 B1을 출력한다. 이 때 K7=L0이고 제 2 데이터 셔플링부(201)에서의 셔플링이 제 1 데이터 셔플링부(101)에 의한 셔플링의 역변환의 관계가 있기 때문에 B1=A7이다. 다음으로 B1은 부분키 L1을 이용하여 제 2 데이터 셔플링부(201)에서 셔플링되어 B2가 된다. 이때 K6=L1이고 제 2 데이터 셔플링부(201)에서의 셔플링은 제 1 데이터 셔플링부(101)에 의한 셔플링의 역변환의 관계가 있기 때문에 B2=A6이다.
이하, 마찬가지로 하여 B2∼B6이 셔플링되어 데이터 B3∼B7을 생성하고, B3=A5, B4=A4, B5=A3, B6=A2 및 B7=A1이 상술한 이유로 인해 성립된다. 마지막으로 데이터 B7이 부분키 L7을 이용하여 셔플링되어 복호문 데이터 B8을 출력한다. 여기에서 B7=A1이고, K0=L7이며, 제 2 데이터 셔플링부(201)에 의한 셔플링이 제 1 데이터 셔플링부(101)에 의한 셔플링의 역변환이므로 B8=A0이다.
이상에서 알 수 있는 바와 같이, 데이터 암호화장치(10)에서 256비트의 키 데이터 K를 이용하여 64비트 평문 데이터 A를 암호화하여 생성되는 64비트 암호문 데이터 B가, 데이터 복호화장치(20)에서 동일한 256비트의 키 데이터 K를 이용하여 복호되면, 64비트 평문 데이터 A를 복구할 수 있다.
(암호통신 시스템의 동작)
다음으로 도 3∼도 8을 참조하여 본 실시예의 암호통신 시스템 전체의 동작을 설명하기로 한다.
우선, 송신기(1)에서는 입력된 일정 시간길이의 화상정보 또는 오디오정보를 디지털화하고 인코드하여 64비트의 평문 데이터를 생성한다. 다음으로 입력된 평문 데이터와 송신기(1)에 미리 보유되어 있던 256비트의 키 데이터는 데이터 암호화장치(10)에 입력된다.
256비트의 키 데이터는 제 1 키 제어부(103)에 입력되고, 상위로부터 32비트씩의 부분키 데이터(K0∼K7)로 분할된다.
64비트의 평문 데이터는 제 1 데이터 셔플링부(101)에 부분키 K0과 함께 입력되어, 부분키 K0을 이용하여 셔플링된다. 이 부분키 K0∼K7이 계속 입력되는 동안에 제 1 어림수 제어부(102)의 제어하에 전부 8회의 셔플링이 반복된다. 결과적으로 64비트의 암호문 데이터가 획득되어 데이터 암호화장치(10)에서 출력된다.
다음으로 데이터 암호화장치(10)로부터 출력된 64비트의 암호문 데이터는 송신부(11) 및 전송로(3)를 통해 송신기(1)에서 수신기(2)로 송신된다.
암호문 데이터가 수신기(2)의 수신부(21)를 통해 입력되어, 256비트의 키 데이터와 함께 데이터 복호화장치(20)에 입력된다.
256비트의 키 데이터가 제 2 키 제어부(203)에 입력되어 상위로부터 32비트씩의 부분키 데이터(L7∼L0)로 분할된다.
암호문데이터는 부분키 L0와 함께 제 2 데이터 셔플링부(201)에 입력되고, 부분키 L0을 이용하여 셔플링된다. 이러한 셔플링은 제 2 데이터 셔플링부(202)의 제어하에 부분키 L7∼L0이 연속하여 이용되는 동안에 모두 8회 반복된다. 결과적으로 64비트 복호문데이터가 획득되어 데이터 복호화장치(20)를 통해 출력된다.
복호문 데이터는 수신기(2)에서 화상신호 또는 오디오신호로 변환되어 디스플레이 또는 스피커를 통해 디스플레이되거나 출력된다.
(데이터 암호화장치(10)의 보안성)
이하, 본 데이터 암호화장치(10)의 보안성에 대하여 설명하기로 한다.
우선 최초로 본 실시예에서 설명한 송신기(1)에서의 데이터 변환부(300)(및 수신기(2)에서의 데이터 변환부(301))의 변환이 전단사인 것에 대해 설명하기로 한다.
키 가산부(3001)에서는 입력데이터와 키 데이터로부터 생성되는 부분키 데이터를 가산한다. 부분키 데이터의 값은 입력데이터에 상관없이 일정한 값이기 때문에 키 가산부(3001)에 의한 변환은 전단사가 된다.
한편, 데이터 치환부(3002)는 1∼(232-1) 사이의 입력값에 대하여 그 출력값이 0이 되지 않은 것이 컴퓨터실험에 의해 확인되고 있다. 이 실험결과와 데이터 치환부(3002)의 조작이 선형성인 것으로부터 전단사성이 보증된다.
또한, 데이터 치환부(3002)의 전단사성에 대해서는 이하와 같이 이론적으로 나타낼 수도 있다.
데이터 치환부(3002)의 A의 각 비트를 구성하는 32비트 입력데이터를 상위로부터 A31∼A0으로 하고, A=(A31, A30, …, A0)으로 하여 나타낸다. 이 때,
Rot1(A)=(A30, A29, …, A1, A0, A31),
Rot7(A)=(A24, A23, …, A27, A26, A25)
가 되기 때문에, Rot7(A)(+)Rot1(A)(+)A=(A31(+)A30(+)A24, A30(+)A29(+)A23, …, A1(+)A0(+)A26, A0(+)A31(+)A25)이다.
여기에서, 데이터 치환부(3002)의 32비트 출력 데이터를 B=(B31, B30, …, B0)으로 둔다. 다음으로 데이터 치환부(3002)의 변환은 다음의 수학식 18로 나타낼 수 있다.
여기에서, X는 다음의 수학식 19로 나타내고, X0, Xi는 수학식 20으로 나타낼 수 있다.
이다.
여기에서, 문헌 「선형대수입문」(마사히코 사이코) 저, 동경대학 출판회)의 P.90의 문제 4 및 그 해답으로부터 수학식 21을 얻을 수 있다.
여기에서, “detX ”는 행렬 X의 행렬식을 나타내고, 수학식 21의 우변은 1의 32 제곱근인 모든에 대한 곱을 나타낸다.
수학식 19, 수학식 20 및 수학식 21로부터, 수학식 22를 얻을 수 있다.
다음으로, 「대수학」 (히로시 나가오(Hiroshi Nagao) 저, 아사쿠라 서점(朝倉書店)(1983)의 P. 165의 예제 39.1로부터 32=1이 되는=1 이외에 없다. 따라서 수학식 22는 수학식 23으로 쓸 수 있다.
따라서, 행렬 X는 가역행렬이고, 데이터 치환부(3002)의 출력데이터가 영(0)이 되는 것은 입력데이터가 0일 때에 한한다. 이러한 사실과 데이터 치환부(3002)가 선형조작이기 때문에, 데이터 치환부(3002)는 전단사인 것이 된다.
또, 변환 RotN1(+)RotN2(+)RotN3이 전단사인 것은 (N1, N2, N3)(7, 1, 0)에도 적용할 수 있다. 또한, 사용될 시프트 회전이 3 이외의 홀수개이더라도 마찬가지로 나타낼 수 있다. 바꾸어 말하면 데이터 치환부(3002)에 의한 변환은 그 변환이 시프트 회전(0비트에 의한 시프트 회전 포함)을 포함하는 한 전단사인 것이 명확하다.
또, 환자표 데이터 보관부(3003)는 256개의 8비트 표값을 포함하는 미리 저장된 환자표 데이터에 기초하여 8비트 입력데이터를 변환한다. 따라서 환자표 데이터 저장부(3003)에 의한 변환 또한 전단사이다.
그리고, 데이터 변환부(300, 301)의 구성요소에 의해 실행되는 변환은 모두 전단사이고, 그에 따라 데이터 변환부(300, 301)의 모든 변환조작이 전단사로 된다.
도 9는 전단사 사상인 본 실시예의 데이터 치환부(3002)(즉, 데이터 변환부(300, 301))의 사상을 도시하는 도면이다. 도 9로부터 알 수 있는 바와 같이, 정의역 X에서의 2개의 다른 값이 치역 Y에서의 서로 다른 2개의 값과 틀림이 없이 사상되고, 이것이 도 2에 도시한 종래의 사상과 다른 것이다. 본 발명의 이러한 사상에 따라, 정의역 X의 요소 수와 비교하여 치역 Y의 요소 수가 감소하는 문제점을 회피할 수 있다.
따라서, 종래의 기술과는 다르게 본 실시예에 의한 데이터 치환부(3002)(데이터 변환부(300, 301))는 전단사 변환을 실행하고, 이에 따라 종래예보다 셔플링 수행능력이 향상되고 우수한 안전성을 제공한다.
이하에서, 본 실시예에서의 데이터 변환부(300, 301)의 애벌란시 수행능력을 분석하기로 한다.
데이터 변환부(300, 301)에서의 데이터 치환부(3002)는 데이터 Rot7(X)와 Rot1(X)인 입력데이터 X의 2개의 시프트 회전결과와 입력데이터 X에 대응하는 배타적 논리합 연산을 실행한다. 따라서 입력데이터 X가 1비트 변경되는 것은 비트 자신뿐만 아니라 다른 2비트에 영향을 끼친다. 더욱이 데이터 치환부(3002)의 출력데이터는 더욱 많은 비트가 종료되는 영향을 끼치는 결과로서 환자표 데이터 저장부(3003)에서 비선형으로 처리된다.
따라서, 본 실시예에 있어서 데이터 변환부(300, 301), 예를 들면 데이터 암호화장치(10)는 종래 기술과는 다르게 높은 비트 애벌란시 효과를 갖고, 이에 따라 더 나은 데이터 셔플링 능력과 암호화 안정성을 확보할 수 있다.
간단히 말하면, 본 발명에 의한 데이터 변환부(300, 301)는 입력데이터에 홀수(3 이상)의 다른 시프트 회전(0비트에 의한 시프트 회전 포함)과 입력데이터에대응하는 배타적 논리합을 실행하고 시프트 회전결과를 실행하는 데이터 치환부(3002)를 제공한다는 점에서 종래 기술과는 다르다. 이러한 암호화는 시프트 회전을 이용함으로써 빨라질 뿐만 아니라 전단사와 뛰어난 비트 애벌런시 실행능력을 갖도록 하여, 상당히 높은 암호화 안정성 수준을 획득하게 된다.
(제 1 변형예)
이하에서, 본 실시예에서의 데이터 변환부(300, 301)의 변형예에 대해 설명하기로 한다. 이하에서 설명하는 각 변형예는 데이터 변환부(301)에 의해 얻어지는 효과를 손상시키지 않고 데이터 변환부(300, 301)로 치환될 수 있다.
도 10은 제 1 변형예에 있어서 데이터 변환부(310)의 구성을 도시한 블록도이다. 도 10과 이하의 도면에서 도 8에 도시한 것과 동일한 구성요소에 대해서는 동일한 참조부호를 붙인다.
본 데이터 변환부(310)는 키 가산부(3001)와 데이터 치환부(3002) 사이에 비트 재정렬부(3010)를 갖는다는 점에서 데이터 변환부(300, 301)와 다르다.
비트 재정렬부(3010)는 키 가산부(3001)로부터 출력된 32비트의 데이터 G의 비트를 임의로 재정렬한다. 예를 들어 비트 재정렬부(3010)는 데이터 G의 첫번째 비트를 15번째 비트로 시프트하고, 두번째 비트를 27번째 비트로 시프트하고, 세번째 비트를 7번째 비트로 시프트하며, 이렇게 계속하여 얻어진 32비트의 데이터 GX를 데이터 치환부(3002)로 출력한다.
비트 재정렬부(3010)에 의해 실행된 변환은 전단사이기 때문에, 각 원소에 대한 데이터 변환부(310)의 모든 변환은 전단사이다. 따라서 데이터 변환부(310)는상기 실시예의 데이터 변환부(300, 301)와 마찬가지로 최소한의 데이터 셔플링 능력을 보증할 수 있다.
(제 2 변형예)
도 11은 제 2 변형예에서의 데이터 변환부(320)의 구성을 도시한 블록도이다. 데이터 변환부(320)는 키 가산부(3001)와 데이터 치환부(3002)가 상호 교환(즉 키 가산부(3001)와 데이터 치환부(3002)가 반전됨) 된다는 점에서 데이터 변환부(300, 301)와 다르다.
물론, 마찬가지로 데이터 변환부(320)도 본 실시예에서의 데이터 변환부(300, 301)과 동등한 데이터 셔플링 능력을 수행할 수 있다.
(제 3 변형예)
도 12는 제 3 변형예에서의 데이터 변환부(330)의 구성을 도시한 블록도이다. 데이터 변환부(330)는 데이터 치환부(3002)가 회전량이 변동되는 데이터 치환부(3020)로 대체된다는 점에서 데이터 변환부(300, 301)와 다르다.
데이터 치환부(3020)는 키 가산부(3001)로부터 출력된 32비트의 데이터 G를 병렬로 3개로 나누어 시프트 회전을 실행시키고, 이 3개의 시프트 회전에 대한 회전량(데이터 G에 의해 시프트 회전될 비트의 수)은 15비트의 회전량 키 데이터에 의해 결정된다. 다음으로 데이터 치환부(3020)는 그 시프트의 결과로서 얻어진 32비트의 값에 대응하여 배타적 논리합을 취하고, 32비트 데이터 H로서 출력한다.
도 13은 데이터 치환부(3020)의 상세 구성을 도시한 블록도이다. 이 데이터 치환부(3020)는 3개의 시프트(3021∼3023)와, 3개의 병렬-직렬 변환기(3026∼3024)와, 배타적 논리합부(3027)로 구성된다.
이 시프트(3021∼3023)들은 최상위 비트(MSB)가 최하위 비트(LSB)로 순환식으로 시프트되는 방식으로 각각 연결되어 있는 32비트 시프트 레지스트이다. 시프트(3021∼3023)들은 병렬-직렬 변환기(3026∼3024)로부터 전송된 클록 펄스에 동기하여 각각 상위 비트 위치를 향해 데이터 G를 병렬로 시프트 회전시킨다.
병렬-직렬 변환기(3024∼3026)는 5비트 병렬데이터로 나타낸 값(0∼31)에 해당하는 클록 펄스수를 각각 시프트(3023∼3021)에 직렬로 출력한다. 더욱 상세하게는, 병렬-직렬 변환기(3024∼3026)는 32비트 데이터 G가 시프트(3021∼3023)에 입력될 때, 5비트의 병렬데이터로서 최상위 5비트, 중위 5비트 및 최하위 5비트로 되는 15비트의 회전량 키 데이터를 얻고, 다음으로 각각의 시프트(3023∼3021)에 5비트의 병렬값으로 특정되는 수의 클록 펄스를 출력한다.
배타적 논리합부(3027)는 시프트(3023∼3021)로부터 출력되는 3개의 32비트 값에 대응하는 배타적 논리합 연산을 실행하고, 32비트의 데이터 H를 출력한다.
데이터 치환부(3020)에 32비트 데이터 G와 15비트 회전량 키 데이터가 입력될 때의 처리는 이하와 같이 된다.
각각의 시프트(3021∼3023)에 32비트 데이터 G가 입력되고, 각각의 병렬-직렬 변환기(3024∼3026)에 보유된 5비트 단위로 최상위 비트로부터 15비트 회전량 데이터가 분할된다. 병렬-직렬 변환기(3024∼3026)는 이를 5비트 값을 갖도록 복호하여, 5비트 값을 갖는 펄스열로서 각각 시프트(3023∼3021)로 출력한다.
시프트(3021∼3023)는 병렬-직렬 변환기(3026∼3024)로부터 각각 받은 펄스열과 같은 수의 비트로 상위 위치를 향해 병렬로 데이터 G를 시프트 회전시킨다.
다음으로 시프트(3021∼3023)는 그 출력을 32비트 시프트 회전시킨 결과를 배타적 논리합부(3027)에 출력하고, 배타적 논리합부(3027)에서는 대응하는 각각을 차례로 배타적 논리연산을 실행하여 데이터 H를 생성한다.
회전량 키 데이터가 “000000010110011b”(b는 2진법을 나타냄)라고 가정한다. 그러면 데이터 치환부(3020)에 의해 입력 데이터 G에 실행되는 연산은
H=Rot19(G)(+)Rot5(+)G 로 된다.
그리고, 데이터 치환부(3020)를 통과함으로써 시프트(3021∼3023)에서의 회전량은 회전량 키 데이터에 의해 동적으로 결정된다. 따라서 비밀키로서 회전량 키 데이터를 보유함으로써, 데이터 변환부(330)는 시프트 회전의 회전량이 고정되는 데이터 변환부(300, 301)보다 효과적으로 데이터를 비밀로 할 수 있다.
또한, 본 실시예에서의 데이터 치환부(3002)와 마찬가지로 데이터 치환부(3020)는 입력데이터에서의 3회의 시프트 회전을 실행하고 시프트 회전 결과에 대응하는 배타적 논리합을 처리할 수 있고, 이에 따라 데이터 변환부(300, 301)의 경우와 마찬가지로 데이터 변환부(330)에 의한 모든 변환은 높은 비트의 애벌란시 효과를 생성하는 전단사인 것을 보증할 수 있다.
덧붙여, 상기 실시예에서 데이터 치환부(3002)와 마찬가지로, 데이터 치환부(3020)는 입력데이터에 3회의 시프트 회전을 실행하여, 데이터 변환부(300, 301)의 경우에 데이터 변환부(330)에 의한 모든 변환이 높은 비트 애벌란시 효과를 생성하는 전단사임을 보증하게 된다.
여기에서, 회전량 키 데이터가 상기 실시예에서 256비트와 함께 송신기(1)와 수신기(2)에 미리 비밀리에 분할된다. 예를 들어 256비트 키 데이터와는 별도로 120비트의 키 데이터가 저장되고 미리 송신기(1)와 수신기(2)의 모두에 8개의 15비트 블록으로 분할되고, 데이터 변환부(330)에 의해 실행되는 8회의 데이터 변환에 동기하여 회전량으로서 한번에 하나씩 8개의 15비트 블록이 데이터 변환부(330)에 부여된다.
또한, 본 실시예에서 이용되는 회전량(19, 5, 0)과 상기 실시예에서의 회전량(7, 1, 0)은 암호화에 있어 바람직한 것으로 일반적으로 알려져 있다. 말하자면 서로 인접한 회전량 (19, 5, 0)과 (25, 6, 1)을 회전량 (7, 1, 0)으로 회전시키면 그 차이(mod 32)로 (13, 14, 5)를 산출하고, 3개의 다른 것 중에서 2개는 서로에게 가장 우선되는 것이다. 이것은 상기 실시예와 이 변형예에서 3회의 시프트 회전이 암호화 보안성을 강화할 수 있는 중요한 임의 요소인 것을 나타낸다.
(제 4 변형예)
도 14는 제 4 변형예에서의 데이터 변환부(340)의 구성을 도시하는 블록도이다. 이 데이터 변환부(340)는 데이터 치환부(3002)가 배타적 논리합 연산에 대한 오퍼랜드의 수를 변경하는 데이터 치환부(3030)로 변경된다는 점에서 데이터 변환부(300, 301)와 다르다.
데이터 치환부(3030)는 5비트 오퍼랜드수 키 데이터에 의해 특정된 시프트 회전자를 이용해 키 가산부(3001)로부터 출력된 32비트 데이터 G를 시프트 회전시키고, 특정된 시프트 회전자로부터 출력된 32비트 시프트 회전된 값에 대응하는 배타적 논리합을 취하고, 연산결과로서 32비트 데이터 H를 출력한다.
도 15는 데이터 치환부(3030)의 상세 구성을 도시한 블록도이다. 이 데이터 치환부(3030)는 주로 5개의 시프트 회전자(3031∼3035)와 배타적 논리합부(3036)로 구성된다.
시프트 회전자(3031∼3035)는 주로 출력 버퍼 게이트와 신호선들로 구성되고, 이 신호선들은 32비트 입력 데이터 X를 각각 19비트, 7비트, 5비트, 1비트 및 0비트씩 상위 위치로 향하여 시프트 회전시키는 고정된 배선 패턴을 갖는다. 각각의 시프트 회전자(3031∼3035)는 인에이블 단자에 “1 ”이 입력되면 시프트 회전의 결과로 얻어진 32비트 데이터 Rotn(X)를 배타적 논리합부(3036)에 출력하고, 인에이블 단자에 “0 ”이 입력되면 제로(00000000h)를 출력한다.
배타적 논리합부(3036)는 시프트 회전자(3031∼3035)로부터 출력된 5개의 32비트값에 대응하는 배타적 논리합 연산을 실행하고, 연산결과로 32비트 데이터 H를 출력한다.
32비트 데이터 G와 5비트 오퍼랜드수 키 데이터가 입력되면, 데이터 치환부(3030)는 다음과 같이 작동한다.
32비트 데이터 G가 각각의 시프트 회전자(3031∼3035)에 입력되고, Rotn(G)로 되는 별도의 회전량에 의해 시프트 회전되어, 자체에 보유한다. 그 동안 오퍼랜드수 키 데이터는 각각 시프트 회전자(3031∼3035)의 인에이블 단자에서 출력되는 5비트로 분할된다.
각각의 시프트 회전자(3031∼3035)의 인에이블 단자에서 입력되는 신호의 논리상태(“1 ” 또는 “0 ”)에 따라, 자체에 저장된 데이터 Rotn(G) 또는 값 제로(00000000h)는 배타적 논리합부(3036)에 출력된다.
배타적 논리합부(3036)는 각각 시프트 회전자(3031∼3035)로부터 출력되는 5개의 32비트 값에 대응하는 배타적 논리합을 취하고, 결과 H를 출력한다.
오퍼랜드수 키 데이터를 “10101b ”로 가정한다. 그러면 입력데이터 G에 대해 데이터 치환부(3030)에 의해 실행되는 연산은 H=Rot19(G)(+)Rot5(G)(+)G가 된다.
한편, 오퍼랜드수 키 데이터가 “11111b ”라고 하면, 입력데이터 G에 대해 데이터 치환부(3030)에 의해 실행되는 연산은
H=Rot19(G)(+)Rot7(G)(+)Rot5(G)(+)Rot1(G)(+)G가 된다.
따라서 데이터 치환부(3030)는 서로 다른 회전량을 갖는 5개의 시프트 회전자(3031∼3035)로부터 동적으로 선택된 시프트 회전자만을 이용하는 입력데이터 G를 시프트 회전시키는 방식으로, 시프트 회전 결과에 대응하는 비트에 대해 배타적 논리합을 취하여, 얻어진 32비트 데이터 H를 출력한다.
데이터 변환부(340)는 3 또는 5비트가 명확히 “1 ”로 정의되는 5비트 오퍼랜드수 키 데이터를 비밀로 하기 때문에, 인에이블되는 시프트 회전자의 수가 그때마다 동적으로 변경된다. 이것은 데이터 변환부(340)가 항상 동일한 3회의 시프트 회전을 이용하는 데이터 변환부(300, 301)에 비해 더욱 비밀성이 유지된다는 것을 나타낸다.
데이터 치환부(3030)는 입력데이터가 배타적 논리합 연산에 대해 수행되는홀수(3 이상)의 서로 다른 시프트 회전하는 데이터 치환부(3002)와 공통인 것을 알 수 있다. 결국 상기 실시예의 데이터 변환부(300, 301)와 마찬가지로, 암호화는 전단사일 뿐만 아니라 데이터 변환부(340)에 의해 높은 비트의 애벌란시 효과가 얻어진다.
또, 오퍼랜드수 키 데이터는 상기 실시예에서 256비트의 키 데이터를 갖는 것과 마찬가지로, 미리 송신기(1)와 수신기(2)에 비밀키로서 분할 될 수 있다. 예를 들어 256비트의 키 데이터와는 별도로 미리 송신기(1)와 수신기(2) 모두에 40비트의 키 데이터가 저장되고 8개의 5비트 블록으로 분할될 수 있고, 이로 인해 8개의 5비트 블록은 데이터 변환부(340)에 의해 실행되는 8회의 데이터 변환에 동기하여 오퍼랜드수 키 데이터로서 데이터 변환부(340)에 계속적으로 공급될 수 있다.
본 발명에 의한 암호화장치는 상기 실시예와 변형예들을 예로 들어 설명하였지만, 그것에 한정되는 것은 아니다. 예를 들어 이하와 같은 수정도 가능하다.
상기 실시예의 각 데이터 변환부와 변형예들이 배타적 논리합(EX-OR) 게이트 등의 배선 패턴과 논리 IC(집적회로)를 포함하는 전용의 하드웨어에 의해 실현되고, 이것으로 각각의 데이터 변환부 역시 범용 마이크로 프로세서와, 제어프로그램과, 환자표 데이터를 저장하는 ROM과, 작업영역으로서의 RAM을 구비한 컴퓨터 시스템에서 실행되는 프로그램을 이용하는 소프트웨어에 의해서도 실현될 수 있다는 것을 나타낸다. 이러한 프로그램은 DVD-ROM 등의 컴퓨터 판독가능한 저장매체와 통신 네트워크 등의 전송매체를 통해 배포될 수 있을 것이다.
여기에서, 각각의 데이터 치환부의 구성을 상위 위치로 시프트 회전시키기 위한 "Rotate-Shift-Left"와 배타적 논리합 연산을 실행하기 위한 "Exor" 등의 기계어 명령을 이용함으로써, 얻어지는 소프트웨어에 의해 고속으로 실행할 수 있다. 또한, 프로그램에 의해 연속적으로 처리되는 시프트 회전 실행에 있어서, 데이터 Rot7(X)와 데이터 Rot1(X)은 7비트와 1비트를 병렬로 데이터 X를 시프트 회전시키거나 1비트로 데이터 X를 먼저 시프트 회전시키고, 다음으로 6비트로 나머지 회전을 시킴으로써 얻을 수 있다.
또, 상기 실시예와 변형예 중에서 다양한 구성요소를 결합시키는 것도 가능하다. 예를 들어 데이터 치환부는 제 3 변형예에서 데이터 치환부(3020)의 회전량 가변기능과 제 4 변형예에서 데이터 치환부(3030)의 오퍼랜드수 변화 기능을 결합하는 방식으로 구성할 수 있다. 이러한 데이터 치환부는 클록입력단자와 인에이블 입력단자를 모두 갖는 시프트 레지스트로 구현할 수 있고, 인에이블 될 시프트 회전자의 선택과 선택된 시프트 회전자의 회전량의 결정을 동적으로 행할 수 있다.
또한, 본 실시예에 있어서 제 1 및 제 2 데이터 셔플링부(101, 201)에서의 배타적 논리합부(1011, 2011)는 캐리를 갖는 전가산기 등의 가역연산이 가능한 다른 연산장치로 대체할 수 있다. 단, 배타적 논리합부(1011)에 이용하는 연산에 대하여 배타적 논리합부(2011)에는 각각 역연산을 이용해야 한다. 여기에서 이용하는 연산장치는 처리속도가 낮아지는 것을 피하기 위해 간단한 구성인 것이 바람직하다.
또한, 상기 실시예에서는 데이터 변환부(300, 301)에서의 키 가산부(3001)는 2개의 32비트 입력과 1개의 32비트 출력을 갖는 배타적 논리합부 등의 연산장치로 대체할 수 있다. 이러한 연산장치는 고속처리를 손상하지 않는 간단한 것이 바람직하다.
또한, 본 발명에서의 데이터 암호화장치(10) 및 데이터 복호화장치(20)의 제 1 및 제 2 데이터 셔플링부(101, 201)는 8회에 걸쳐 데이터 셔플링을 반복하는 것으로 하였지만, 이것에 한정되는 것은 아니다.
예를 들어 데이터 셔플링의 횟수는 반복횟수가 8회보다도 적은 경우는 데이터 암호화장치(10)와 데이터 복호화장치(20)에 입력되는 키 데이터의 비트수를 256비트보다 적게 할 수 있다. 마찬가지로 반복횟수가 8회보다도 많은 경우는 데이터 암호화장치(10)와 데이터 복호화장치(20)에 입력되는 키 데이터의 비트수 256비트보다 많게 하면 된다. 또한 반복 횟수가 8회보다도 많은 경우에도 키 데이터를 256비트인 채로 하여 분할된 부분키 데이터를 중복하여 사용할 수도 있다. 또 256비트보다 적은 키 데이터에 대해서는, 예를 들어 DES방식 또는 FEAL 방식에 있는 것과 같은 부분키 생성수단을 이용하여 부분키를 생성하는 것도 가능하다.
또한, 상기 실시예에서의 데이터 변환부(300, 301)는 처리장치로서 32비트 블록 변환을 실행하지만, 처리장치 및 블록의 비트길이는 이에 한정되지 않는다. 예를 들어 범용의 64비트 CPU를 통해 본 발명을 구현하고자 할 때, 처리장치로서 64비트 블록이 이용될 수 있다. 대신에 암호화 처리를 가속하기 위해 처리장치로서 블록의 1/2(32비트 블록의 하위 16비트 등)만을 이용할 수도 있다.
본 발명을 첨부도면을 참조하여 여러가지 예를 들어 충분히 설명하였지만, 관련분야에 종사하는 당업자라면 다양한 변경과 수정을 가할 수 있는 것은 물론이다. 따라서 본 발명의 개요로부터 벗어나지 않는 한 그러한 변경이나 수정은 여기에 포함되는 것으로 보아야 할 것이다.
상술한 바와 같이 본 발명에 의한 데이터 암호화장치 및 방법에 의하면, 강한 데이터 셔플링 능력을 갖고 충분한 비트 애벌란시 효과를 갖는 데이터 변환을 실행하는 시프트 회전을 행할 수 있다.

Claims (18)

  1. n 비트의 입력데이터를 n 비트의 출력데이터로 변환하는 데이터 변환장치를 구비한 데이터 암호화장치에 있어서,
    상기 데이터 변환장치는,
    n 비트의 입력데이터를 각각 S1 비트, S2 비트, …및 Sk 비트씩 시프트 회전시킴으로써 k 조의 데이터를 생성하는(여기서, S1, S2, … 및 Sk는 음이 아닌 정수로 n보다 작고, k는 3 이상의 홀수) 시프트 회전수단과,
    n 비트의 출력데이터를 생성하기 위해 상기 k 조의 데이터를 함께 결합하는 데이터 결합수단을 포함하는 것을 특징으로 하는 데이터 암호화장치.
  2. 제 1 항에 있어서,
    상기 데이터 변환장치는 n 비트의 입력데이터를, 시프트 회전수단에 의해 시프트 회전되기 전에, 미리 주어진 키 데이터와 결합하기 위한 키 결합수단을 추가로 포함하고,
    상기 시프트 회전수단은 상기 키 데이터에 결합된 n 비트의 입력데이터를 시프트 회전시키는 수단인 것을 특징으로 하는 데이터 암호화장치.
  3. 제 2 항에 있어서,
    상기 시프트 회전수단은 n 비트의 입력데이터를 각각 S1 비트, S2 비트, …,및 Sk 비트씩 시프트 회전시키기 위한 k 회전부를 포함하는 것을 특징으로 하는 암호화장치.
  4. 제 3 항에 있어서,
    상기 k 회전부는 n 비트의 입력데이터를 각각 S1 비트, S2 비트, …, 및 Sk 비트씩 시프트 회전시키기 위한 배선 패턴을 갖는 신호선인 것을 특징으로 하는 데이터 암호화장치.
  5. 제 4 항에 있어서,
    상기 키 결합수단은 산술 가산기와 배타적 논리합 게이트 중의 하나이고,
    상기 데이터 결합수단은 배타적 논리합 게이트인 것을 특징으로 하는 데이터 암호화장치.
  6. 제 1 항에 있어서,
    상기 데이터 결합수단은, n 비트의 출력데이터를 생성하기 위해, 미리 주어진 키 데이터를 k 조의 데이터와 함께 결합시켜 얻어지는 n 비트의 데이터와 결합시키는 것을 특징으로 하는 데이터 암호화장치.
  7. 제 1 항에 있어서,
    상기 시프트 회전수단은,
    n 비트의 입력 데이터를 각각 특정된 회전량으로 시프트 회전시키는 k 회전부와,
    키 데이터를 획득하기 위한 키 데이터 획득부와,
    획득된 키 데이터에 기초하여 S1, S2, …Sk의 값을 결정하고, k 회전부에 대해 각각의 회전량으로서 S1 비트, S2 비트, …및 Sk 비트를 특정하기 위한 회전량 결정부를 포함하고,
    상기 k 회전부는 n 비트의 입력데이터를 회전량 결정부에 의해 특정된 S1 비트, S2 비트, …및 Sk 비트씩 각각 시프트 회전시키는 것을 특징으로 하는 데이터 암호화장치.
  8. 제 1 항에 있어서,
    상기 시프트 회전수단은,
    n 비트의 입력데이터를 각각 S1 비트, S2 비트, …및 Sm 비트씩 시프트 회전시키고, S1, S2, …및 Sm은 음이 아닌 정수로 n보다 작고, m은 3 이상의 정수인 m 회전부와,
    키 데이터를 획득하기 위한 키 데이터 획득부와,
    획득된 키 데이터에 기초하여 m 회전부로부터 k 회전부를 선택하고 선택된 k 회전부에 의해 n 비트의 입력데이터의 시프트 회전 결과로서 k조의 데이터가 생성되는 선택부를 포함하는 것을 특징으로 하는 데이터 암호화장치.
  9. n 비트의 입력데이터를 n 비트의 출력데이터로 변환하는 데이터 변환단계를 갖는 데이터 암호화방법으로서,
    상기 데이터 변환단계는,
    n 비트의 입력데이터를 각각 S1 비트, S2 비트, …및 Sk 비트씩 시프트 회전시킴으로써 k조의 데이터를 발생시키고, S1, S2, …및 Sk는 음이 아닌 정수로 n보다 작고, k는 3 이상의 홀수인 시프트 회전 서브단계와,
    k조의 데이터를 결합시켜 n 비트의 출력데이터를 생성하기 위한 데이터 결합 서브단계를 포함하는 것을 특징으로 하는 데이터 암호화방법.
  10. 제 9 항에 있어서,
    상기 데이터 변환단계는 n 비트의 입력데이터를, 시프트 회전 서브단계에 의한 시프트 회전 전에, 미리 주어진 키 데이터와 결합시키기 위한 키 결합 서브단계를 추가로 포함하고,
    상기 시프트 회전 서브단계는 키 데이터와 결합된 n 비트의 입력 데이터를 시프트 회전시키는 것을 특징으로 하는 데이터 암호화방법.
  11. 제 9 항에 있어서,
    상기 데이터 결합 서브단계는 k조의 데이터와 함께 결합시킴으로써 얻어지는 n 비트 데이터를 미리 주어진 키 데이터와 결합시켜, n 비트의 출력데이터를 생성하는 것을 특징으로 하는 데이터 암호화방법.
  12. 제 9 항에 있어서,
    상기 시프트 회전 서브단계는,
    키 데이터를 획득하기 위한 키 데이터 획득 서브단계와,
    획득된 키 데이터에 기초하여 S1, S2, …Sk의 값을 결정하기 위한 회전량 결정 서브단계와,
    n 비트의 입력데이터를 S1 비트, S2 비트, …및 Sk 비트씩 독립적으로 시프트 회전시키기 위한 회전 서브단계를 포함하는 것을 특징으로 하는 데이터 암호화방법.
  13. 제 9 항에 있어서,
    상기 시프트 회전 서브단계는,
    키 데이터를 획득하기 위한 키 데이터 획득 서브단계와,
    상기 획득된 키 데이터에 기초하여 미리 결정된 S1, S2, …및 Sm의 m 값으로부터 S1, S2, …및 Sk의 k 값을 선택하고, S1, S2, …및 Sm은 음이 아닌 n 이하의 정수이고, m은 3 이상의 정수인 선택 서브단계와,
    n 비트의 입력데이터를 S1 비트, S2비트, …및 Sk 비트씩 독립적으로 시프트 회전시키기 위한 회전 서브단계를 포함하는 것을 특징으로 하는 데이터 암호화방법.
  14. n 비트의 입력데이터를 n 비트의 출력데이터로 변환하기 위한 데이터 변환단계를 갖는 데이터 암호화 프로그램을 저장하는 컴퓨터 판독가능한 저장매체로서,
    상기 데이터 변환단계는,
    n 비트의 입력데이터를 각각 S1 비트, S2 비트, …및 Sk 비트씩 시프트 회전시킴으로써 k조의 데이터를 발생시키고, S1, S2, …및 Sk는 음이 아닌 정수로 n보다 작고, k는 3 이상의 홀수인 시프트 회전 서브단계와,
    k조의 데이터를 함께 결합시켜 n 비트의 출력데이터를 생성하기 위한 데이터 결합 서브단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 저장매체.
  15. 제 14 항에 있어서,
    상기 데이터 변환단계는 n 비트의 입력데이터를, 시프트 회전 서브단계에 의한 시프트 회전 전에, 미리 주어진 키 데이터와 결합시키기 위한 키 결합 서브단계를 추가로 포함하고,
    상기 시프트 회전 서브단계는 키 데이터와 결합된 n 비트의 입력 데이터를 시프트 회전시키는 것을 특징으로 하는 컴퓨터 판독가능한 저장매체.
  16. 제 14 항에 있어서,
    상기 데이터 결합 서브단계는 k조의 데이터와 함께 결합시킴으로써 얻어지는 n 비트 데이터와 미리 주어진 키 데이터를 결합시키고, n 비트의 출력데이터를 생성하는 것을 특징으로 하는 컴퓨터 판독가능한 저장매체.
  17. 제 14 항에 있어서,
    상기 시프트 회전 서브단계는,
    키 데이터를 획득하기 위한 키 데이터 획득 서브단계와,
    획득된 키 데이터에 기초하여 S1, S2, …Sk의 값을 결정하기 위한 회전량 결정 서브단계와,
    n 비트의 입력데이터를 S1 비트, S2 비트, …및 Sk 비트씩 독립적으로 시프트 회전시키기 위한 회전 서브단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 저장매체.
  18. 제 14 항에 있어서,
    상기 시프트 회전 서브단계는,
    키 데이터를 획득하기 위한 키 데이터 획득 서브단계와,
    획득된 키 데이터에 기초하여 미리 결정된 S1, S2, …및 Sm의 m 값으로부터 S1, S2, …및 Sk의 k 값을 선택하고, S1, S2, …및 Sm은 음이 아닌 n 보다 작은 정수이고, m은 3 이상의 정수인 선택 서브단계와,
    n 비트의 입력데이터를 S1 비트, S2비트, …및 Sk 비트씩 독립적으로 시프트 회전시키기 위한 회전 서브단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 저장매체.
KR1020000002801A 1999-05-26 2000-01-21 데이터 암호화장치 및 방법 KR100349332B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP???11-146079 1999-05-26
JP14607999 1999-05-26

Publications (2)

Publication Number Publication Date
KR20000076501A KR20000076501A (ko) 2000-12-26
KR100349332B1 true KR100349332B1 (ko) 2002-08-21

Family

ID=15399648

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000002801A KR100349332B1 (ko) 1999-05-26 2000-01-21 데이터 암호화장치 및 방법

Country Status (9)

Country Link
US (1) US6304657B1 (ko)
EP (1) EP1056240B1 (ko)
KR (1) KR100349332B1 (ko)
CN (1) CN1282324C (ko)
BR (1) BRPI0000172B1 (ko)
CA (1) CA2298055C (ko)
DE (1) DE69906037T2 (ko)
MY (1) MY125798A (ko)
SG (1) SG85691A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101312374B1 (ko) * 2011-07-25 2013-09-27 소프트포럼 주식회사 데이터 크기 조정 장치 및 방법

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7177421B2 (en) * 2000-04-13 2007-02-13 Broadcom Corporation Authentication engine architecture and method
FR2814009B1 (fr) * 2000-09-14 2003-01-31 Jean Roland Riviere Procede et dispositif de transformation de donnees a caractere convolutif et decalages variables, et systemes les mettant en oeuvre
DE60213762T2 (de) * 2001-01-12 2007-10-04 Broadcom Corp., Irvine Implementierung des SHA1 Algorithmusses
DE60301750T2 (de) * 2002-04-03 2006-07-06 Matsushita Electric Industrial Co., Ltd., Kadoma Vorrichtung zur Erzeugung eines erweiterten Schlüssels, Verschlüsselungsvorrichtung und Verschlüsselungssystem
US7376235B2 (en) * 2002-04-30 2008-05-20 Microsoft Corporation Methods and systems for frustrating statistical attacks by injecting pseudo data into a data system
US7343011B2 (en) * 2002-07-15 2008-03-11 Conexant, Inc. Secure telecommunications system for wireless local area networks
US7796752B2 (en) * 2002-11-04 2010-09-14 Marvell International Ltd. Cipher implementation
US7346160B2 (en) * 2003-04-23 2008-03-18 Michaelsen David L Randomization-based encryption apparatus and method
US7257225B2 (en) * 2003-12-29 2007-08-14 American Express Travel Related Services Company, Inc. System and method for high speed reversible data encryption
US8031865B2 (en) * 2004-01-08 2011-10-04 Encryption Solutions, Inc. Multiple level security system and method for encrypting data within documents
US7526643B2 (en) * 2004-01-08 2009-04-28 Encryption Solutions, Inc. System for transmitting encrypted data
US7752453B2 (en) 2004-01-08 2010-07-06 Encryption Solutions, Inc. Method of encrypting and transmitting data and system for transmitting encrypted data
JP4101225B2 (ja) * 2004-10-19 2008-06-18 キヤノン株式会社 電子機器及び情報処理装置及びそれらの制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
DE602005023984D1 (de) * 2005-07-29 2010-11-18 Infineon Technologies Ag Vorrichtung und Verfahren zur Erfassung eines Fehlers in einem Leistungssignal
US7388781B2 (en) * 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US8848442B2 (en) * 2006-03-06 2014-09-30 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
WO2007148665A1 (ja) * 2006-06-23 2007-12-27 Panasonic Corporation 暗号処理装置、データ変換方法、データ変換プログラム、記録媒体及び集積回路
CN101237321B (zh) * 2008-02-03 2010-12-08 西北农林科技大学 基于循环队列移位规则的加密方法
KR101438072B1 (ko) * 2010-04-15 2014-09-03 라모트 앳 텔-아비브 유니버시티 리미티드 소거 없는 플래시 메모리의 다중 프로그래밍
US8379847B2 (en) * 2010-06-30 2013-02-19 International Business Machines Corporation Data and control encryption
KR101148560B1 (ko) * 2010-09-01 2012-05-23 중앙대학교 산학협력단 비트 조합 순서를 이용한 암호화 방법 및 장치
CN104318134B (zh) * 2014-11-05 2017-06-06 北京深思数盾科技股份有限公司 一种数据保护方法
CN105022961B (zh) * 2015-06-29 2018-07-06 北京深思数盾科技股份有限公司 一种计算机数据的保护方法及装置
CN106600788A (zh) * 2016-12-23 2017-04-26 嘉应学院 一种用于密码锁的实现时间数据安全交互的方法
CN110336662B (zh) * 2019-06-06 2022-02-18 平安科技(深圳)有限公司 数字信息加密方法、装置、计算机设备和存储介质
US10637837B1 (en) 2019-11-27 2020-04-28 Marpex, Inc. Method and system to secure human and also internet of things communications through automation of symmetric encryption key management
CN115277192B (zh) * 2022-07-27 2024-01-30 维沃移动通信有限公司 信息加密方法、装置及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724428A (en) * 1995-11-01 1998-03-03 Rsa Data Security, Inc. Block encryption algorithm with data-dependent rotations

Family Cites Families (6)

* Cited by examiner, † Cited by third party
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
DE2658065A1 (de) * 1976-12-22 1978-07-06 Ibm Deutschland Maschinelles chiffrieren und dechiffrieren
US5003597A (en) * 1989-12-21 1991-03-26 Xerox Corporation Method and apparatus for data encryption
US5054067A (en) * 1990-02-21 1991-10-01 General Instrument Corporation Block-cipher cryptographic device based upon a pseudorandom nonlinear sequence generator
US5727062A (en) * 1995-07-06 1998-03-10 Ritter; Terry F. Variable size block ciphers
FR2737370B1 (fr) * 1995-07-27 1997-08-22 Bull Cp8 Procede de communication cryptographique

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724428A (en) * 1995-11-01 1998-03-03 Rsa Data Security, Inc. Block encryption algorithm with data-dependent rotations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101312374B1 (ko) * 2011-07-25 2013-09-27 소프트포럼 주식회사 데이터 크기 조정 장치 및 방법

Also Published As

Publication number Publication date
EP1056240B1 (en) 2003-03-19
DE69906037D1 (de) 2003-04-24
SG85691A1 (en) 2002-01-15
CA2298055A1 (en) 2000-11-26
KR20000076501A (ko) 2000-12-26
CA2298055C (en) 2007-07-10
CN1275846A (zh) 2000-12-06
DE69906037T2 (de) 2003-08-28
EP1056240A1 (en) 2000-11-29
BR0000172A (pt) 2001-01-16
BRPI0000172B1 (pt) 2015-10-27
US6304657B1 (en) 2001-10-16
CN1282324C (zh) 2006-10-25
MY125798A (en) 2006-08-30

Similar Documents

Publication Publication Date Title
KR100349332B1 (ko) 데이터 암호화장치 및 방법
KR100362458B1 (ko) 암호화 처리장치, 암호화 처리방법 및 보안성을 손상시키지 않고 고속으로 암호화 처리를 실현하는 암호화 처리 프로그램을 기록하는 기록매체
KR101187854B1 (ko) 보안성을 향상시키는 순열 데이터 변환
US7190791B2 (en) Method of encryption using multi-key process to create a variable-length key
EP0839418A1 (en) Cryptographic method and apparatus for non-linearly merging a data block and a key
JPH1173101A (ja) 高速ブロック暗号化方法,及び,コンピュータで使用可能な媒体
MX2011001228A (es) Metodo para generar un codigo de autenticacion de mensajes basados en el cifrado.
Ahmed et al. Strongest AES with S-Boxes bank and dynamic key MDS matrix (SDK-AES)
Natarajan et al. A novel approach for data security enhancement using multi level encryption scheme
ES2287978T3 (es) Metodo para la conversion criptografica de bloques de datos binarios.
Kareem et al. New modification on feistel DES algorithm based on multi-level keys
KR101662291B1 (ko) 경량 블록암호 lea 기반 암호화 및 복호화 장치
RU2738321C1 (ru) Способ криптографического преобразования и устройство для его осуществления
JPH1117673A (ja) 共通鍵暗号通信方法及びその通信ネットワーク
JP3190648B2 (ja) データ暗号化装置及びその方法
JP3154991B2 (ja) 暗号処理装置、暗号処理方法、及び、暗号処理プログラムを記憶した記憶媒体
KR100434558B1 (ko) 고속블록암호화방법및이를위한키스케쥴링방법
Ledda et al. Security Evaluation of the Enhanced IDEA Algorithm
RU2309549C2 (ru) Способ криптографического преобразования цифровых данных
Naik et al. Comparison of Different Encryption Algorithm and Proposing an Encryption Algorithm
JP2001142395A (ja) 拡大鍵生成装置、暗復号装置、拡大鍵生成方法、及び記憶媒体
Hattab et al. Developing the Complexity and Security of the Twofish Algorithm Through a New Key Scheduling Design
RU2140713C1 (ru) Способ блочного криптографического преобразования двоичной информации
RU2199826C2 (ru) Способ итеративного шифрования блоков цифровых данных
RU2140711C1 (ru) Способ блочного шифрования дискретной информации

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: 20120724

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20130722

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140722

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20160701

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20170720

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20180719

Year of fee payment: 17