KR100639764B1 - 블록암호화방법 - Google Patents

블록암호화방법 Download PDF

Info

Publication number
KR100639764B1
KR100639764B1 KR1020050033879A KR20050033879A KR100639764B1 KR 100639764 B1 KR100639764 B1 KR 100639764B1 KR 1020050033879 A KR1020050033879 A KR 1020050033879A KR 20050033879 A KR20050033879 A KR 20050033879A KR 100639764 B1 KR100639764 B1 KR 100639764B1
Authority
KR
South Korea
Prior art keywords
key
exchange
mod
data table
pair
Prior art date
Application number
KR1020050033879A
Other languages
English (en)
Inventor
이병관
양승해
신미영
Original Assignee
이병관
양승해
신미영
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 이병관, 양승해, 신미영 filed Critical 이병관
Priority to KR1020050033879A priority Critical patent/KR100639764B1/ko
Application granted granted Critical
Publication of KR100639764B1 publication Critical patent/KR100639764B1/ko

Links

Images

Classifications

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

Landscapes

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

Abstract

본 발명은 블록암호화방법에 관한 것으로서, M행과 M열의 셀을 갖는 테이블에 평문을 분할하고 각 데이터가 분할된 테이블별로 비밀키암호화방식에 따라 암호화하기 위한 블록암호화방법에 있어서, 상기 각 데이터테이블에 테이블순서번호를 순서대로 기입하고 교환테이블쌍번호를 동일번호가 한 쌍씩 존재하도록 기입하는 단계와; 상기 데이터테이블의 행수(M)보다 하나 작은 자릿수를 갖는 비밀키를 M-1에 대하여 모듈러 연산하여 원형키를 생성하는 단계와; 상기 원형키에 기초하여 상기 각 데이터테이블에 대하여 바이트교환키, 시프트라운드키 및 배타적논리합연산키 중 적어도 어느 하나를 생성하는 단계와; 상기 배타적논리합연산키를 전 행중 적어도 일부에 적용하고 상기 생성된 바이트교환키 및 시프트라운드키를 상기 테이블순서번호와 상기 교환테이블쌍번호가 기입된 행을 제외한 행 중 적어도 일부에 적용하여 상기 각 데이터테이블별로 암호화하는 단계를 포함하는 것을 특징으로 한다. 이에 의해, 비밀키암호화방식에 있어서 역추적이 어려운 수학적 문제를 바탕으로 규칙성이 보존되지 않는 암호화단계를 거쳐 암호화가 이루어지도록 함으로써 비밀키의 비밀성을 향상시킬 수 있다.
비밀키, 블록, 원형키, 수학적 문제, 암호화

Description

블록암호화방법{Block Ciphering Method}
도1은 본 발명의 실시예에 따른 블록암호화방법을 도시한 흐름도이고,
도2는 아스키코드를 도시한 도면이다.
본 발명은 블록암호화방법에 관한 것으로서, 보다 상세하게는 M행과 M열의 셀을 갖는 테이블에 평문을 분할하고 각 데이터가 분할된 테이블별로 비밀키암호화방식에 따라 암호화하는 방법에 관한 것이다.
최근 컴퓨터통신망이 급격히 발전함에 따라 개인프라이버시, 전자상거래내역 등 중요한 정보를 암호화하는 기법이 안출되어 이용되고 있다.
암호화기법은 동일한 키(비밀키)를 사용하여 암호화와 복호화를 수행하는 비밀키암호방식과, 공개키를 사용하여 암호화하고 개인키를 사용하여 복호화하는 공개키암호방식으로 구분할 수 있다.
공개키암호방식의 경우 역추적이 어려운 수학적 문제를 바탕으로 하고 있으므로 암복호화의 연산 속도는 비밀키암호방식에 비해 매우 느릴 뿐만 아니라 많은 시스템 리소스(Resource)가 요구된다.
비밀키암호화방식의 경우 암호화에 따른 기밀성을 확보하기 위해 비밀키는 통신당사자이외 제3자에게 노출되지 않도록 유의해야 할 뿐만 아니라 정보를 교환하는 당사자가 N인 경우 1명이 추가로 가입하는 경우 N개의 비밀키가 추가로 필요해지므로(공개키암호방식의 경우 한 쌍의 공개키와 개인키만 추가됨) 비밀키의 관리가 어려워진다.
이러한 공개키암호화방식과 비밀키암호화방식의 특성을 고려하여 비밀키를 공개키암호방식으로 암호화된 전자봉투에 담아 수신측으로 전송하거나 또는 디피-헬만(Diffie - Hellman) 알고리즘에 기초하여 송신측과 수신측에서 공유하면서 평문데이터를 비밀키암호방식으로 암호화하여 수신측으로 전송하는 방법이 널리 사용되고 있다.
한편 비밀키암호방식의 경우 평문을 일정한 크기로 분할하고 각 분할데이터마다 암호화과정을 수행하여 암호문을 얻는 블록암호방식과, 평문과 같은 길이의 키스트림을 생성하고 키스트림을 평문과 배타적으로 논리합하여 암호문을 얻는 스트림암호방식으로 구분할 수 있다.
종래 블록암호방식에 따라 평문을 암호화하는 방법을 설명하면 다음과 같다.
먼저 비밀키를 이용하여 바이트교환키(Byte Exchange Key), 시프트라운드키(Round Shift Key), 배타적논리합연산키(Exclusive OR Operation Key)를 생성한다.
다음에 평문데이터를 일정크기의 테이블(블록)에 분할하여 탑재한다.
다음에 바이트교환키(Byte Exchange Key)를 통해 데이터테이블간에서 바이트 교환을 행하거나 시프트라운드키(Round Shift Key)를 통해 각 데이터테이블의 열 또는 행내에서 각 데이터의 위치를 변경시키거나 배타적논리합연산키(Exclusive OR Operation Key)를 통해 각 데이터에 대응하는 비트열의 비트값을 변경시킨다.
그런데 종래 비밀키를 사용하여 데이터를 암호화하는 방법에 따르면, 역추적이 어려운 수학적 문제를 바탕으로 하지 아니하고 바이트교환키의 적용, 시프트라운드키의 적용, 배타적논리합의 적용 등 규칙성이 암호문에 보존되는 방법으로 이루어지기 때문에 비밀키가 제3자에게 노출될 가능성이 크다는 문제점이 있었다.
따라서 본 발명의 목적은, 비밀키의 비밀성이 향상되도록 한 블록암호화방법을 제공하는 것이다.
상기 목적은, 본 발명에 따라, M행과 M열의 셀을 갖는 짝수개의 테이블에 평문을 분할하여 데이터테이블을 형성하고 상기 각 데이터테이블별로 비밀키암호화방식에 따라 암호화하기 위한 블록암호화방법에 있어서, 상기 각 데이터테이블에 테이블순서번호를 순서대로 기입하고 교환테이블쌍번호를 동일번호가 한 쌍씩 존재하도록 기입하는 단계와; 상기 데이터테이블의 행수(M)보다 하나 하나 작은 자릿수를 갖는 비밀키를 M-1에 대하여 모듈러 연산하여 원형키를 생성하는 단계와; 상기 원형키에 기초하여 상기 각 데이터테이블에 대하여 바이트교환키, 시프트라운드키 및 배타적논리합연산키 중 적어도 어느 하나를 생성하는 단계와; 상기 배타적논리합연산키를 전 행중 적어도 일부에 적용하고 상기 생성된 바이트교환키 및 시프트라운드키를 상기 테이블순서번호와 상기 교환테이블쌍번호가 기입된 행을 제외한 행 중 적어도 일부에 적용하여 상기 각 데이터테이블별로 암호화하는 단계를 포함하는 것을 특징으로 하는 블록암호화방법에 의해 달성된다.
여기서 상기 바이트교환키를 생성하는 단계는 (원형키의 각 성분 × 테이블순서번호 × 바이트교환회수 + k(k는 1에서 M-1사이의 올림순 정수) mod M에 따라 상기 각 바이트교환키의 행성분을 각 교환테이블쌍별로 생성하는 단계와, (원형키의 각 성분 × 테이블순서번호 × 바이트교환회수) mod M에 따라 상기 각 바이트교환키의 열성분을 각 교환테이블쌍별로 생성하는 단계를 포함하도록 구성할 수 있다.
그리고 상기 시프트라운드키를 생성하는 단계는 (원형키의 각 성분 × 데이터테이블순서번호 × 교환테이블쌍번호 + k(k는 1에서 M-1사이의 올림순 정수) mod M에 따라 열시프트라운드키를 각 교환테이블쌍별로 생성하는 단계와, (원형키의 각 원소 × 데이터테이블순서번호 × 교환테이블쌍번호 + t(t는 M에서 2사이의 내림순 정수)) mod M에 따라 행시프트라운드키를 각 교환테이블쌍별로 생성하는 단계를 포함하도록 구성할 수 있다.
또한 평문작성에 사용되는 각 문자에 대응하는 B비트의 평문문자이진코드를 마련하는 단계와, (원형키의 각 성분 × 데이터테이블순서번호 × 교환테이블쌍번호 + M) mod M에 따라 열시프트라운드키를 각 교환테이블쌍별로 생성하는 단계와, (원형키의 각 원소 × 데이터테이블순서번호 × 교환테이블쌍번호 + 1)) mod M에 따라 행시프트라운드키를 각 교환테이블쌍별로 생성하는 단계와; Sij= (Rti × Ctj) mod (2B - 1) (여기서 Sij는 치환테이블의 i행 j열 성분, Rti는 교환테이블쌍번호가 동일한 행시프트라운드키의 각 성분, Ctj는 교환테이블쌍번호가 동일한 열시프트라운드키의 각 성분, i와 j는 1에서 M사이의 정수를 각각 나타냄)에 따라 각 교환테이블쌍별로 치환테이블을 생성하는 단계를 더 포함하고; 상기 암호화하는 단계는 상기 시프트라운드키를 이용하여 상기 각 데이터테이블별로 암호화하는 단계와, 상기 시프트라운드키를 통해 암호화된 각 데이터테이블의 각 셀을 상기 평문문자이진코드에 대응하는 십진수로 변환하는 단계와, 상기 평문문자이진코드에 대응하는 십진수로 변환된 각 데이터테이블을 대응하는 치환테이블과 가감연산을 실시하는 단계를 포함하도록 구성하는 것이 바람직하다.
또한 상기 배타적논리합연산키를 이용하여 암호화하는 단계는 상기 치환테이블과 가감 연산되어 암호화된 데이터테이블에 대하여 실시할 수 있다.
또한 상기 배타적논리합연산키를 생성하는 단계는, 평문작성에 사용되는 각 문자에 대응하는 B비트의 평문문자이진코드를 마련하는 단계와, 상기 원형키를 상기 평문문자이진코드로 변환하는 단계와, 상기 평문문자이진코드로 변환된 원형키를 역전시키는 단계와; 상기 역전된 원형키와 상기 평문문자이진코드로 변환된 원형키를 논리합하는 단계와; 상기 논리합된 원형키를 1비트씩 순차적으로 순환시프트시키는 단계를 포함하도록 구성할 수 있다.
이하에서, 첨부도면을 참조하여 본 발명을 상세히 설명하기로 한다.
도1은 본 발명의 실시예에 따른 블록암호화방법을 도시한 흐름도이고, 도2는 아스키코드를 도시한 도면이다.
본 발명의 실시예에 따른 블록암호화방법을 이들 도면을 참조하여 설명하면 다음과 같다. 이하 설명의 편의를 위해 평문을 탑재하기 위한 테이블, 비밀키, 평문문자이진코드 및 평문을 다음과 같이 가정하기로 한다.
테이블 : 10(행) X 10(열)
Figure 112005021326115-pat00001
비밀키 : 4985907842
평문문자이진코드 : 아스키코드
평문(327문자, blank 포함) : "Now it is time to address the ninth feature of our ideal certificate: How can we determine for what purpose this certificate can be used? How can Alice decide if Bob's certificate is appropriate for her intended application? For example, should she trust it to verify a signature on a contract? Well, this is a matter of policy."
제1단계 : 데이터테이블의 생성(S10)
먼저 평문의 문자수와 테이블의 크기를 반영하여 다음과 같이 평문을 4개의 테이블에 90바이트(Byte)씩 분할한다.
Figure 112005021326115-pat00002
여기서 평문의 분할은 각 데이터테이블의 10행이 공란이 되도록 이루어진다.
다음에 마지막 데이터테이블의 비어있는 셀(10행의 셀은 제외)을 난수를 이용해 임의의 수로 패딩(Padding)한다.
Figure 112005021326115-pat00003
한편 평문이 분할되는 데이터테이블의 수가 홀 수개 인 경우 데이터테이블을 하나 더 생성한 후 난수를 이용해 임의의 수로 패딩함으로써, 데이터테이블의 개수가 항상 짝수가 되도록 한다(바이트교환이 암호화에 포함된 경우 모든 데이터테이블에 대하여 바이트교환이 이루어질 수 있도록 하기 위함).
제2단계 : 테이블순서번호와 교환테이블쌍번호의 부여(S20)
각 데이터테이블의 10행에 5바이트의 테이블순서번호와 5바이트의 교환테이블쌍번호를 아래와 같이 부여한다. 여기서 교환테이블쌍번호는 동일한 번호가 한 쌍씩 존재하도록 부여한다.
Figure 112005021326115-pat00004
제3단계 : 원형키(Protype Key "N")의 생성(S30)
아래와 같이 N = (비밀키의 각 성분) mod M-1의 모듈러 연산을 실시하면 N = 4085007842라는 원형키가 생성된다.
① 4 mod 9(=10-1) = 4 ② 9 mod 9 = 0
③ 8 mod 9 = 8 ④ 5 mod 9 = 5
⑤ 9 mod 9 = 0 ⑥ 0 mod 9 = 0
⑦ 7 mod 9 = 7 ⑧ 8 mod 9 = 8
⑨ 4 mod 9 = 4 ⑩ 2 mod 9 = 2
제4단계 : 바이트교환키의 생성(S40)
바이트교환키는 행성분과 열성분을 가지고, 교환테이블쌍번호가 동일한 각 교환테이블쌍별로 생성된다.
각 교환테이블쌍에 대한 바이트교환키의 각 행성분과 열성분은 아래와 같은 관계식에 따라 연산할 수 있다.
행성분 : (Ni × T_num × n + k) mod M
열성분 : (Ni × T_num × n) mod M
여기서 Ni은 원형키의 각 성분, T_num은 테이블순서번호, n은 바이트교환회수, M은 데이터테이블의 행수, k는 1에서 9사이의 올림순 정수를 각각 나타낸다.
이하 설명의 편의를 위해 바이트교환회수는 2회(즉, n=1 또는 2)인 것으로 가정한다.
n=1을 대입하여 교환테이블쌍1(데이터테이블1과 데이터테이블3)의 첫 번째 바이트교환에 사용할 바이트교환키(이하 "1회용 바이트교환키"라고 함)를 연산하면 다음과 같다.
① (4×1+1 mod 9, 4×1 mod 9)=(5,4)
② (0×1+2 mod 9, 0×1 mod 9)=(2,0)
③ (8×1+3 mod 9, 8×1 mod 9)=(2,8)
④ (5×1+4 mod 9, 5×1 mod 9)=(0,5)
⑤ (0×1+5 mod 9, 0×1 mod 9)=(5,0)
⑥ (0×1+6 mod 9, 0×1 mod 9)=(6,0)
⑦ (7×1+7 mod 9, 7×1 mod 9)=(5,7)
⑧ (8×1+8 mod 9, 8×1 mod 9)=(7,8)
⑨ (4×1+9 mod 9, 4×1 mod 9)=(4,4)
⑩ (2×1+10 mod 9, 2×1 mod 9)=(3,2)(이하 "1A 바이트교환키 "이라고 함)
그리고 다시 (mat1row -1) mod 9(행성분)과 (mat1col +1) mod 9(열성분)을 적용하면(여기서 mat1row는 1A 바이트교환키의 행성분, mat1col는 1A 바이트교환키의 열성분을 각각 나타냄) 다음과 같은 1B 바이트교환키 (5,5), (1,1), (1,0), (8,6), (4,1), (5,1), (4,8), (6,0), (3,5), (2,3)를 얻을 수 있고, 다시 (mat1row -2) mod 9(행성분)과 (mat1col +2) mod 9(열성분)을 적용하면 1C 바이트교환키 (4,6), (0,2), (0,1), (7,7), (3,2), (4,2), (3,0), (5,1), (2,6), (1,4)을 얻을 수 있고, 다시 (mat1row -3) mod 9(행성분)과 (mat1col +3) mod 9(열성분)을 적용하면 1D 바이트교환키 (3,7), (8,3), (8,2), (6,8), (2,3), (4,2), (2,1), (4,2), (1,7), (0,5)을 얻을 수 있으며, (mat1row -4) mod 9(행성분)과 (mat1col +4) mod 9(열성분)을 적용하면 1E 바이트교환키 (2,8), (7,4), (7,3), (5,9), (1,4), (3,3), (1,2), (3,3), (0,8), (8,6)을 얻을 수 있다.
그리고 n=2를 대입하여 교환테이블쌍1(데이터테이블1과 데이터테이블3)의 두 번째 바이트교환에 사용할 바이트교환키(이하 "2회용 바이트교환키"라고 함)를 연산하면 다음과 같다.
① (4×2+1 mod 9, 4×2 mod 9)=(9,8)
② (0×2+2 mod 9, 0×2 mod 9)=(2,0)
③ (8×2+3 mod 9, 8×2 mod 9)=(9,6)
④ (5×2+4 mod 9, 5×2 mod 9)=(4,0)
⑤ (0×2+5 mod 9, 0×2 mod 9)=(5,0)
⑥ (0×2+6 mod 9, 0×2 mod 9)=(6,0)
⑦ (7×2+7 mod 9, 7×2 mod 9)=(1,4)
⑧ (8×2+8 mod 9, 8×2 mod 9)=(4,6)
⑨ (4×2+9 mod 9, 4×2 mod 9)=(7,8)
⑩ (2×2+10 mod 9, 2×2 mod 9)=(4,4)(이하 "2A 바이트교환키 "이라고 함)
그리고 다시 (mat2row -1) mod 9(행성분)과 (mat2col +1) mod 9(열성분)을 적용하면(여기서 mat2row는 2A 바이트교환키의 행성분, mat2col는 2A 바이트교환키의 열성분을 각각 나타냄) 다음과 같은 2B 바이트교환키 (8,0), (1,1), (0,8), (3,2), (4,1), (5,1), (2,6), (5,8), (7,0), (4,5)를 얻을 수 있고, 다시 (mat2row -2) mod 9(행성분)과 (mat2col +2) mod 9(열성분)을 적용하면 2C 바이트교환키 (7,1), (0,2), (8,0), (2,3), (3,2), (4,2), (1,7), (4,0), (6,1), (3,6)을 얻을 수 있고, 다시 (mat2row -3) mod 9(행성분)과 (mat2col +3) mod 9(열성분)을 적용하면 2D 바이트교환키 (6,2), (8,3), (7,1), (1,4), (2,3), (3,3), (0,8), (3,1), (5,2), (2,7)을 얻을 수 있으며, (mat2row -4) mod 9(행성분)과 (mat2col +4) mod 9(열성분)을 적용하면 2E 바이트교환키 (5,3), (7,4), (6,2), (0,5), (1,4), (2,4), (8,0), (2,2), (4,3), (1,8)을 얻을 수 있다.
제5단계 : 시프트라운드키의 생성(S50)
시프트라운드키는 교환테이블쌍번호가 동일한 각 교환테이블쌍에 대하여 생성되고, 행시프트라운드키와 열시프트라운드키로 구성한다.
각 교환테이블쌍에 대한 행시프트라운드키와 열시프트라운드키는 아래와 같은 관계식에 따라 생성할 수 있다.
행시프트라운드키 : (NT_num × n + k) mod M
열시프트라운드키 : (NT_num × n + t) mod M
여기서 Ni은 원형키의 각 성분, T_num은 테이블순서번호, n은 교환테이블쌍번호, M은 데이터테이블의 행수, k는 1에서 9사이의 정수(올림순), t는 9에서 1사이의 정수(내림순)를 각각 나타낸다. 이 때 테이블순서번호는 각 교환테이블쌍의 테이블순서번호 중 어느 하나를 선택할 수 있다.
교환테이블쌍1에 대한 행시프트라운드키를 연산하면 다음과 같다. 이하 설명의 편의를 위해 T_num=1(데이터테이블1의 테이블순서번호)로 선택한 것으로 가정한 다.
① 4×1×1+1 mod 9=5 ② 0×1×1+2 mod 9=3
③ 8×1×1+3 mod 9=2 ④ 5×1×1+4 mod 9=0
⑤ 0×1×1+5 mod 9=5 ⑥ 0×1×1+6 mod 9=7
⑦ 7×1×1+7 mod 9=5 ⑧ 8× 1×1+8 mod 9=7
⑨ 4×1×1+9 mod 9=4 ⑩ 2×1×1+10 mod 9=3
교환테이블쌍1에 대한 열시프트라운드키를 연산하면 다음과 같다.
① 4×1×1+10 mod 9=4 ② 0×1×1+9 mod 9=8
③ 8×1×1+8 mod 9=6 ④ 5×1×1+7 mod 9=2
⑤ 0×1×1+6 mod 9=5 ⑥ 0×1×1+5 mod 9=4
⑦ 7×1×1+4 mod 9=1 ⑧ 8×1×1+3 mod 9=1
⑨ 4×1×1+2 mod 9=5 ⑩ 2×1×1+1 mod 9=3
이와 같이 생성된 교환테이블쌍1에 대한 시프트라운드키는 다음과 같다.
Figure 112005021326115-pat00005
제6단계 : 치환테이블의 생성(S60)
치환테이블은 M X M=10 X 10행렬로 이루어지고, 교환테이블쌍번호가 동일한 각 교환테이블쌍별로 생성된다.
교환테이블쌍1에 대한 치환테이블 Sij= (Rti × Ctj) mod 127에 따라 생성할 수 있다. 여기서 Sij는 치환테이블의 i행 j열 성분, Rti는 교환테이블쌍1에 대한 행시프트라운드키의 각 성분, Ctj는 교환테이블쌍1에 대한 열시프트라운드키의 각 성분, i와 j는 1에서 10사이의 정수를 각각 나타낸다. 그리고 모듈러 127은 28 - 1로부터 구해진다(여기서 8은 아스키코드의 비트수임)
예를 들면 S11 = (5 ×4) mod 127 = 20, S12 = (5 ×8) mod 127 = 40, S21 = (3 ×4) mod 127 = 12, S109 = (3 ×5) mod 127 = 15가 된다.
다른 성분에 대해서도 같은 방법으로 연산하면 다음과 같이 교환테이블쌍1에 대한 치환테이블을 얻을 수 있다.
Figure 112005021326115-pat00006
교환테이블쌍2에 대한 치환테이블도 같은 방법으로 구할 수 있다.
제7단계 : 배타적논리합 연산키의 생성(S70)
배타적논리합연산키를 생성하는 방법을 설명하면 다음과 같다.
먼저 원형키를 아스키코드로 변환시킨다.
4085007842
-> 00110100 00110000 00111000 00110101 00110000 00110000 00110111 00111000 00110100 00110010
다음에 아스키코드로 변환된 원형키를 역전시킨다.
00110100 00110000 00111000 00110101 00110000 00110000 00110111 00111000 00110100 00110010
-> 01001100 00101100 00011100 11101100 00001100 00001100 10101100 00011100 00001100 00101100
다음에 아래와 같이 아스키코드로 변환된 원형키와 역전된 원형키를 논리합 연산하면, 1행에 대한 배타적논리합연산키가 생성된다.
00110100 00110000 00111000 00110101 00110000 00110000 00110111 00111000 00110100 00110010
OR 01001100 00101100 00011100 11101100 00001100 00001100 10101100 00011100 00001100 00101100
한편 2행 내지 10행에 대한 배타적논리합 연산키는 1비트씩 우측순환시프트함으로써 생성할 수 있다.
이에 따라 2행에 대한 배타적논리합연산키는 다음과 같다.
01111100 00111100 00111100 11111101 00111100 00111100 10111111 00111100 00111100 00111100
그리고 10행에 대한 배타적논리합연산키는 다음과 같다.
00111100 00111100 11111101 00111100 10111111 00111100 00111110 00111100 01111100
제8단계 : 암호문의 생성(S80)
이하 설명의 편의를 위해 4개의 데이터테이블 중 데이터테이블1에 대하여 암호문을 생성하는 방법을 설명하기로 한다.
먼저 교환테이블쌍1(데이터테이블1과 데이터테이블2)에 대하여 1회용 바이트교환키 (5,4), (2,0), (2,8), (0,5), (5,0), (6,0), (5,7), (7,8), (4,4), (3,2), (5,5), (1,1), (1,9), (8,6), (4,1), (5,1), (4,8), (6,0), (3,5), (2,3), (4,6), (0,2), (0,1), (7,7), (3,2), (4,2), (3,0), (5,1), (2,6), (1,4), (3,7), (8,3), (8,2), (6,8), (2,3), (4,2), (2,1), (4,2), (1,7), (0,5), (2,8), (7,4), (7,3), (5,9), (1,4), (3,3), (1,2), (3,3), (0,8), (8,6)을 사용하여 데이터를 교환한다. 여기서 바이트 교환키 (0,5), (1,4), (2,3), (2,8), (3,2), (3,3), (5,1), (6,0), (8,6)은 중복되므로 바이트 교환은 아래와 같이 중복되지 않은 나머지 41개의 바이트 교환키에 대응하는 위치에서 이루어지게 된다.
Figure 112005021326115-pat00007
다음에 암호화교환테이블쌍1(암호화데이터테이블1과 암호화데이터테이블3)에 대하여 2회용 바이트교환키 (4,5), (0,2), (8,2), (5,0), (0,5), (0,6), (7,5), (8,7), (4,4), (2,3), (3,6), (8,3), (7,3), (4,1), (8,6), (8,7), (6,6), (7,8), (3,5), (1,4), (2,7), (7,4), (6,4), (3,2), (7,7), (7,8), (5,7), (6,0), (2,6), (0,5), (1,8), (6,5), (5,5), (2,3), (6,8), (6,0), (4,8), (5,1), (1,7), (8,6), (0,0), (5,6), (4,6), (1,4), (5,0), (5,1), (3,0), (4,2), (0,8), (7,7)을 사용하여 데이터를 교환한다. 여기서 바이트교환키 (0,5), (1,4), (2,3), (5,0), (5,1), (6,0), (7,7), (7,8), (8,6), (8,7)은 중복되므로 바이트 교환은 아래와 같이 중복되지 않은 나머지 40개의 바이트 교환키에 대응하는 위치에서 이루어지게 된다.
Figure 112005021326115-pat00008
다음에 바이트교환암호화과정을 거친 암호화데이터테이블의 각 열과 행에 시프트라운드키를 적용한다. 이하 설명의 편의를 위해 암호화데이터테이블1에 대하여 시프트라운드키를 적용하여 암호화하는 것을 설명하기로 한다.
암호화데이터테이블1의 1행부터 9행까지 행시프트라운드키 5, 3, 2, 0, 5, 7, 5, 7, 4를 각각 적용하면 다음과 같다.
Figure 112005021326115-pat00009
그리고 행시프트라운드키가 적용된 암호화데이터테이블1의 1행부터 9행까지의 각 열에 대하여 열시프트라운드키 4, 8, 6, 2, 5, 4, 1, 1, 5를 각각 적용하면 다음과 같다.
Figure 112005021326115-pat00010
다음에 시프트라운드과정을 거친 암호화데이터테이블1의 각 셀을 아스키코드상의 10진수로 변환한다.
Figure 112005021326115-pat00011
다음에 아스키코드상의 십진수로 변환된 암호화데이터테이블1을 치환테이블과 덧셈연산을 실시한다.
Figure 112005021326115-pat00012
=
Figure 112005021326115-pat00013
다음에 치환테이블과 덧셈을 행한 암호화데이터테이블1의 각 셀 십진수를 다시 아스키코드상의 문자로 변환한다.
Figure 112005021326115-pat00014
다음에 아스키코드상의 문자로 다시 변환된 암호화데이터테이블1의 각 행에 아래와 같이 배타적 논리합 연산키를 적용하여 배타적 논리합 연산을 행한다.
① 암호화데이터테이블1의 1행
Figure 112005021326115-pat00015
② 암호화데이터테이블1의 2행
Figure 112005021326115-pat00016
③ 암호화데이터테이블1의 3행
Figure 112005021326115-pat00017
④ 암호화데이터테이블1의 4행
Figure 112005021326115-pat00018
⑤ 암호화데이터테이블1의 5행
Figure 112005021326115-pat00019
⑥ 암호화데이터테이블1의 6행
Figure 112005021326115-pat00020
⑦ 암호화데이터테이블1의 7행
Figure 112005021326115-pat00021
⑧ 암호화데이터테이블1의 8행
Figure 112005021326115-pat00022
⑨ 암호화데이터테이블1의 9행
Figure 112005021326115-pat00023
⑩ 암호화데이터테이블1의 10행
Figure 112005021326115-pat00024
암호화데이터테이블1을 생성하는 것과 같은 방법으로 암호화데이터테이블2, 암호화데이터테이블3 및 암호화데이터테이블4를 얻을 수 있다.
제9단계 : 암호문의 전송(S90)
암호문을 생성된 순서대로 비트열 형태로 수신측으로 전송한다.
제10단계 : 암호문의 복호화(S100)
수신측은 송신측과 동일한 비밀키(4985907842)를 가지고 원형키를 생성한 후, 송신측과 동일한 방법으로 바이트교환키(1회용 바이트교환키 및 2회용 바이트교환키), 행시프트라운드키, 열시프트라운드키, 치환테이블, 배타적논리합연산키를 생성한다. 여기서 행시프트라운키와 열시프트라운드키는 송신측에서 생성한 행시프 트라운드키와 열시프트라운드키의 방향과 반대방향을 갖도록 생성한다.
다음에 수신된 비트열을 80비트 단위로 배타적논리합연산키를 사용하여 복호화한 다음 데이터테이블상에서 아스키코드로 변환하면 다음과 같은 암호화데이터테이블1에 대응하는 복호화데이터테이블1을 얻을 수 있다.
Figure 112005021326115-pat00025
다음에 배타적논리합연산을 통해 얻은 복호화데이터테이블1의 각 셀을 아스키코드상의 십진수로 변환한 다음, 치환테이블에 대하여 감산연산을 행한다. 이 때감산과정에서 음수가 나올 경우 해당하는 셀에 127을 더한다.
Figure 112005021326115-pat00026
-
Figure 112005021326115-pat00027
=
Figure 112005021326115-pat00028
다음에 치환테이블에 대하여 감산연산이 행해진 복호화데이터테이블1의 각 셀을 아스키코드상의 문자로 변환한다.
Figure 112005021326115-pat00029
다음에 행시프트라운드키를 적용하여 복호하면, 다음과 같은 복호화데이터테이블1을 얻을 수 있다.
Figure 112005021326115-pat00030
다음에 열시프트라운드키를 적용하여 복호하면, 다음과 같은 복호화데이터테이블1을 얻을 수 있다.
Figure 112005021326115-pat00031
전술한 복호화데이터테이블1을 생성할 때와 같은 방법으로 다음과 같은 암호화데이터테이블2에 대응하는 복호화데이터테이블2를 얻을 수 있다.
Figure 112005021326115-pat00032
다음에 2회용 바이트교환키를 적용하면 다음과 같은 복호화데이터테이블1과 복호화데이터테이블2를 얻을 수 있다.
Figure 112005021326115-pat00033
다음에 1회용 바이트교환키를 적용하면 다음과 같은 복호화데이터테이블1과 복호화데이터테이블2를 얻을 수 있다.
Figure 112005021326115-pat00034
복호화데이터테이블1과 복호화데이터테이블2를 생성하는 것과 같은 방법으로 복호화데이터테이블3과 복호화데이터테이블4를 얻을 수 있다.
마지막으로 복호화데이터테이블들을 순서대로 나열한 후 순차적으로 문자열을 복호화한다. 여기서 송신측과 같은 난수발생프로그램을 사용하여 송신측에서 데 이터테이블4를 생성할 때 패딩된 문자는 무시한다.
상술한 바와 같이 본 발명의 실시예에 따르면, 역추적이 어려운 수학적 문제를 바탕으로 비밀키로부터 생성된 원형키에 기초하여 바이트교환키, 시프트라운드키, 배타적논리합연산키 등을 생성하여 암호화함으로써, 규칙성이 보존되지 않는 암호화단계를 거쳐 암호화가 이루어지게 된다. 이에 따라 비밀키의 비밀성을 향상시킬 수 있게 된다.
따라서 본 발명에 따르면, 비밀키암호화방식에 있어서 역추적이 어려운 수학적 문제를 바탕으로 규칙성이 보존되지 않는 암호화단계를 거쳐 암호화가 이루어지도록 함으로써, 비밀키의 비밀성을 향상시킬 수 있다.

Claims (6)

  1. M행과 M열의 셀을 갖는 짝수개의 테이블에 평문을 분할하여 데이터테이블을 형성하고 상기 각 데이터테이블별로 비밀키암호화방식에 따라 암호화하기 위한 블록암호화방법에 있어서,
    상기 각 데이터테이블에 테이블순서번호를 순서대로 기입하고 교환테이블쌍번호를 동일번호가 한 쌍씩 존재하도록 기입하는 단계와;
    상기 데이터테이블의 행수(M)보다 하나 작은 자릿수를 갖는 비밀키를 M-1에 대하여 모듈러 연산하여 원형키를 생성하는 단계와;
    상기 원형키에 기초하여 상기 각 데이터테이블에 대하여 바이트교환키, 시프트라운드키 및 배타적논리합연산키 중 적어도 어느 하나를 생성하는 단계와;
    상기 배타적논리합연산키를 전 행중 적어도 일부에 적용하고 상기 생성된 바이트교환키 및 시프트라운드키를 상기 테이블순서번호와 상기 교환테이블쌍번호가 기입된 행을 제외한 행 중 적어도 일부에 적용하여 상기 각 데이터테이블별로 암호화하는 단계를 포함하는 것을 특징으로 하는 블록암호화방법.
  2. 제1항에 있어서,
    상기 바이트교환키를 생성하는 단계는 (원형키의 각 성분 × 테이블순서번호 × 바이트교환회수 + k(k는 1에서 M-1사이의 올림순 정수) mod M에 따라 상기 각 바이트교환키의 행성분을 각 교환테이블쌍별로 생성하는 단계와, (원형키의 각 성 분 × 테이블순서번호 × 바이트교환회수) mod M에 따라 상기 각 바이트교환키의 열성분을 각 교환테이블쌍별로 생성하는 단계를 포함하는 것을 특징으로 하는 블록암호화방법.
  3. 제1항에 있어서,
    상기 시프트라운드키를 생성하는 단계는 (원형키의 각 성분 × 데이터테이블순서번호 × 교환테이블쌍번호 + k(k는 1에서 M-1사이의 올림순 정수) mod M에 따라 열시프트라운드키를 각 교환테이블쌍별로 생성하는 단계와, (원형키의 각 원소 × 데이터테이블순서번호 × 교환테이블쌍번호 + t(t는 M에서 2사이의 내림순 정수)) mod M에 따라 행시프트라운드키를 각 교환테이블쌍별로 생성하는 단계를 포함하는 것을 특징으로 하는 블록암호화방법.
  4. 제3항에 있어서,
    평문작성에 사용되는 각 문자에 대응하는 B비트의 평문문자이진코드를 마련하는 단계와, (원형키의 각 성분 × 데이터테이블순서번호 × 교환테이블쌍번호 + M) mod M에 따라 열시프트라운드키를 각 교환테이블쌍별로 생성하는 단계와, (원형키의 각 원소 × 데이터테이블순서번호 × 교환테이블쌍번호 + 1)) mod M에 따라 행시프트라운드키를 각 교환테이블쌍별로 생성하는 단계와; Sij= (Rti × Ctj) mod (2B - 1) (여기서 Sij는 치환테이블의 i행 j열 성분, Rti는 교환테이블쌍번호가 동일 한 행시프트라운드키의 각 성분, Ctj는 교환테이블쌍번호가 동일한 열시프트라운드키의 각 성분, i와 j는 1에서 M사이의 정수를 각각 나타냄)에 따라 각 교환테이블쌍별로 치환테이블을 생성하는 단계를 더 포함하고;
    상기 암호화하는 단계는 상기 시프트라운드키를 이용하여 상기 각 데이터테이블별로 암호화하는 단계와, 상기 시프트라운드키를 통해 암호화된 각 데이터테이블의 각 셀을 상기 평문문자이진코드에 대응하는 십진수로 변환하는 단계와, 상기 평문문자이진코드에 대응하는 십진수로 변환된 각 데이터테이블을 대응하는 치환테이블과 가감연산을 실시하는 단계를 포함하는 것을 특징으로 하는 블록암호화방법.
  5. 제4항에 있어서,
    상기 배타적논리합연산키를 이용하여 암호화하는 단계는 상기 치환테이블과 가감연산되어 암호화된 데이터테이블에 대하여 실시되는 것을 특징으로 하는 블록암호화방법.
  6. 제1항에 있어서,
    상기 배타적논리합연산키를 생성하는 단계는, 평문작성에 사용되는 각 문자에 대응하는 B비트의 평문문자이진코드를 마련하는 단계와, 상기 원형키를 상기 평문문자이진코드로 변환하는 단계와, 상기 평문문자이진코드로 변환된 원형키를 역전시키는 단계와; 상기 역전된 원형키와 상기 평문문자이진코드로 변환된 원형키를 논리합하는 단계와; 상기 논리합된 원형키를 1비트씩 순차적으로 순환시프트시키는 단계를 포함하는 것을 특징으로 하는 블록암호화방법.
KR1020050033879A 2005-04-25 2005-04-25 블록암호화방법 KR100639764B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050033879A KR100639764B1 (ko) 2005-04-25 2005-04-25 블록암호화방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050033879A KR100639764B1 (ko) 2005-04-25 2005-04-25 블록암호화방법

Publications (1)

Publication Number Publication Date
KR100639764B1 true KR100639764B1 (ko) 2006-10-30

Family

ID=37621165

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050033879A KR100639764B1 (ko) 2005-04-25 2005-04-25 블록암호화방법

Country Status (1)

Country Link
KR (1) KR100639764B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004105305A1 (en) 2003-05-23 2004-12-02 Mediacrypt Ag Device and method for encrypting and decrypting a block of data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004105305A1 (en) 2003-05-23 2004-12-02 Mediacrypt Ag Device and method for encrypting and decrypting a block of data

Similar Documents

Publication Publication Date Title
TWI672932B (zh) 基於質數陣列的後量子非對稱密鑰產生方法及系統、加密方法、解密方法及加密通訊系統
Almaiah et al. A new hybrid text encryption approach over mobile ad hoc network
CA2218148C (en) Generating unique and unpredictable values
US6415032B1 (en) Encryption technique using stream cipher and block cipher
JP2008513811A (ja) 計算変換の方法及びシステム
CN113711564A (zh) 用于加密数据的计算机实现的方法和***
JP2006506668A (ja) 複数鍵を用いたストリーム暗号の生成方法
Agrawal et al. Elliptic curve cryptography with hill cipher generation for secure text cryptosystem
Sarkar et al. Role of cryptography in network security
Joshy et al. Text to image encryption technique using RGB substitution and AES
CN114172651B (zh) 一种sm9公钥加密算法、解密算法的gpu加速实现方法
JP2001211154A (ja) 秘密鍵生成方法,暗号化方法及び暗号通信方法
CN101296076A (zh) 一种基于ecc的数字签名方案
Schaefer An introduction to cryptography and Cryptanalysis
CN108768923A (zh) 一种基于量子可逆逻辑线路的加密算法的聊天实时加密方法
KR100639764B1 (ko) 블록암호화방법
Kadry et al. An improvement of RC4 cipher using vigenère cipher
JP3358953B2 (ja) 擬似ランダムビット列生成器及びそれを使用する暗号通信方法
JP2864813B2 (ja) 暗号化装置及び復号化装置
JP2002252610A (ja) 暗号装置および復号装置並びに公開鍵暗号方式および公開鍵復号方式
Simmons Symmetric and asymmetric encryption
Brisson Deterministic random number generation for one time pads: Creating a Whitenoise super key
Schaefer An introduction to cryptography
Sharma et al. TEXCEL: text encryption with elliptic curve cryptography for enhanced security
Subashri et al. Confidentiality of VoIP data using efficient ECDH key exchanging mechanism

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

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131018

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 10

R401 Registration of restoration
FPAY Annual fee payment

Payment date: 20161021

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee