KR100571178B1 - 메시지의 암호화 및 복호화 방법 - Google Patents

메시지의 암호화 및 복호화 방법 Download PDF

Info

Publication number
KR100571178B1
KR100571178B1 KR1020030018445A KR20030018445A KR100571178B1 KR 100571178 B1 KR100571178 B1 KR 100571178B1 KR 1020030018445 A KR1020030018445 A KR 1020030018445A KR 20030018445 A KR20030018445 A KR 20030018445A KR 100571178 B1 KR100571178 B1 KR 100571178B1
Authority
KR
South Korea
Prior art keywords
message
psk
key value
encryption key
value
Prior art date
Application number
KR1020030018445A
Other languages
English (en)
Other versions
KR20040083795A (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 소프트포럼 주식회사
Priority to KR1020030018445A priority Critical patent/KR100571178B1/ko
Publication of KR20040083795A publication Critical patent/KR20040083795A/ko
Application granted granted Critical
Publication of KR100571178B1 publication Critical patent/KR100571178B1/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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 발명은 보안통신(secure communication)에 있어서, 어플리케이션 데이터를 다양한 길이의 비트스트림 단위로 암호화하고 복호화하는 메시지의 암호화 및 복호화 방법에 관한 것으로, 메시지의 송신측과 상기 메시지의 수신측이 암호화 키 값(psK)을 서로 공유하는 제1단계와, 상기 송신측에서, 상기 공유하는 암호화 키 값(psK)과 현재 송신 메시지의 번호(i)를 사용하여 랜덤한 암호화 키 값(psKi)을 계산하는 제2단계와, 상기 송신측에서, 상기 계산된 랜덤한 암호화 키 값(psKi)을 입력 파라미터로 하는 암호화 함수를 사용하여, 상기 현재 송신 메시지(msgi)를 암호화하는 제3단계와, 상기 수신측에서, 상기 송신 메시지의 암호문을 수신하여 복호화하는 제4단계로 이루어지는 것이 특징인 메시지의 암호화 및 복호화 방법에 관한 발명이다.
대칭키 암호화, 스트림 암호화

Description

메시지의 암호화 및 복호화 방법{message encryption/description method}
도 1은 SSL에서 정의된 스트림 암호화를 위한 키 설정과 암호화 과정을 나타낸 도면.
도 2는 본 발명의 메시지의 암호화 및 복호화 절차를 나타낸 도면.
본 발명은 보안통신(secure communication)에 관한 것으로서, 어플리케이션 데이터를 다양한 길이의 비트스트림 단위로 암호화하고 복호화하는 메시지의 암호화 및 복호화 방법에 관한 것이다.
보안통신의 프로토콜의 구조는 크게 두 부분으로 구분된다. 하나는 인증 및 키 교환을 수행하는 부분이고, 다른 하나는 하나의 키를 이용하여 어플리케이션 데이터를 보호하는 부분이다.
어플리케이션 데이터를 보호하는데는 크게 두 종류의 암호함수가 이용된다. 하나는 메시지의 기밀성을 확보하기 위해 이용되는 대칭키 암호화 함수이며, 다른 하나는 메시지의 무결성 및 인증성을 확보하기 위해 이용되는 메시지 인증 코드(message authentication code ; 이하, MAC 이라 약칭함) 함수이다.
특히 대칭키 암호화 함수에 의한 대칭키 암호화는 블록 암호화(block cipher)와 스트림 암호화(stream cipher)로 구분된다.
블록 암호화는 고정된 길이의 데이터 블록(block) 단위로 암호화하며, 스트림 암호화는 메시지를 다양한 길이의 비트스트림 단위로 암호화한다.
특히 스트림 암호화는 메시지를 임의의 길이의 비트 단위로 암호화한다.
스트림 암호화의 기본 구성 원리는 원-타임 패드(one-time pad)와 동일하다. 즉 평문 메시지를 암호화 과정은, 평문 메시지와 동일한 길이의 난수 값을 생성하고, 그 난수 값으로 평문 메시지를 암호화하는 두 단계로 이루어진다. 이에 대한 상세한 설명은 다음과 같다.
1단계는 난수 생성기(random code generator)를 이용하여 평문 메시지와 동일한 길이의 난수 값을 생성한다. 그 생성된 난수 값을 메시지의 암호화 키(message encryption key ; 이하, meK 라 약칭함)로 사용한다.
이어서 2단계는 meK와 평문 메시지를 배타적 논리합(EOR : eXclusive OR)하여 암호문(cipher)을 계산한다.
따라서 스트림 암호화는 송신측과 수신측이 안전하게 통신할 수 있도록, 쌍방이 사전에 공유하는 비밀키 값(pre-shared key ; 이하, psK 라 약칭함)으로부터 직접 암호화에 사용될 meK을 생성하는 것이 필요하다.
일 예로써 스트림 암호화 알고리즘인 RC4(Rivest's Cipher #4) 암호화 알고리즘에서 meK를 생성하는 과정과 그 생성된 meK로 평문 메시지를 암호화하는 과정은 다음과 같다.
RC4 암호화 알고리즘은 먼저 초기화 과정을 거친다. RC4는 256 바이트 이하의 길이를 가지는 가변적인 키를 사용하며, 그 가변 키를 기준으로 256 바이트의 테이블을 초기화한다. 그 테이블이 메시지의 암호화를 위한 난수 값(난수 열) 생성에 사용된다.
그 초기화 과정을 보다 상세히 설명하면, 256개의 1 바이트 정수(S0, S1, ..., S255)의 값을 "Si=i" 값으로 초기화한다. 이어 또다른 256개의 1 바이트 정수(K0, K1, ..., K255)의 값을 사전에 공유된 psK 값으로 초기화한다. 이 때 psK의 길이가 256 바이트보다 작을 경우에는 동일한 psK 값을 반복적으로 사용한다.
초기화 과정의 마지막으로 하기한 수학식 1을 계산한다.
for i = 0 to 255
j = j + Si + Ki mod 256
swap Si and Sj
상기한 수학식 1에서 계수 j는 "0" 으로 초기화되어 있고, 상기한 수학식 1의 루프를 반복함으로써 256바이트의 테이블이 초기화된다.
RC4 암호화 알고리즘은 초기화 이후에 meK의 생성 과정을 거친다.
이 meK 생성 과정에서는 0으로 초기화된 두 개의 계수(counter) i와 j를 이용한다.
메시지의 i번째 바이트(byte)의 암호화에 사용될 1 바이트(1-byte) 난수 값 Ri는 다음의 수학식 2와 같이 생성된다.
i= (i+1) mod 256
j= (j+Si) mod 256
swap Si and Sj
t= (Si+Sj) mod 256
Ri = St
RC4 암호화 알고리즘은 meK의 생성 이후에 평문 메시지의 암호화 과정을 거친다.
이 메시지 암호화 과정에서는, 우선 암호화할 평문 메시지의 길이가 n 바이트(n-byte) 라고 가정한다. 즉,
"msg = msg1∥msg2∥msg3∥... ∥msgn"이라 가정한다.
따라서 메시지의 암호화된 값인 암호문(cipher)의 길이는 n 바이트(n-byte)이다. 즉, "cipher = c1∥c2∥c3∥... ∥cn"이다.
그리고 각 ci(i=1,2,3,...,n)값은 다음의 수학식 3과 같이 계산된다.
Figure 112003010374912-pat00001
즉, "meK = R1∥R2∥R3∥... ∥Rn"이 된다.
전술된 RC4 암호화 알고리즘과 같은 스트림 암호화의 경우에는, 보안성을 위하여 meK는 항상 서로 다른 값을 갖도록 설정된다. 따라서 스트림 암호화는 psK로부터 실제 메시지를 암호화할 키를 생성하는 과정에서 항상 다른 meK가 생성되어야 한다. 그러나 RC4 암호화 암고리즘에서는 psK 값을 사전에 공유한다. 그 공유된 psK 값을 사용하기 때문에 항상 동일한 meK 값이 생성된다.
보안통신 프로토콜로써 개발된 SSL(Secure Sockets Layer)은 가장 많이 사용되는 암호화 프로토콜 중에 하나로써, 그 SSL에서 이용되는 스트림 암호화를 위한 키 설정 방법과 그 설정된 키를 사용하는 암호화 과정은 다음과 같다.
도 1은 SSL에서 정의된 스트림 암호화를 위한 키 설정과 암호화 과정을 나타낸 도면이다.
전술된 바와 같이 스트림 암호화는 배타적 논리합(XOR) 연산을 이용하는 암호화에 기반하므로, meK가 항상 다른 값을 가져야 한다. 그러나 보안통신 프로토콜에서 이용하는 암호화 방식은 하나의 공유된 psK 값만을 가진다. 그러므로 RC4 암호화 알고리즘에 psK 값을 키로 설정할 경우에는 항상 동일한 meK 값이 나온다.
이하에서 설명되는 SSL에서 정의된 스트림 암호화를 위한 키 설정 과정에서는 "RC4 암호화 알고리즘에 psK 값을 키로 설정할 경우에는 항상 동일한 meK 값이 나온다"라는 문제를 해결하기 위한 것이다.
도 1을 참조하면, 암호화 메시지를 교환할 양측은 인증된 키 교환 프로토콜 을 통해 암호화 키인 psK을 공유하는 초기화 과정을 거친다(S1). 그리고 그 공유하는 psK 값으로부터 256개의 1 바이트 정수(S0, S1, ..., S255)의 값을 계산한다(S2)
이어 송신측은 n 바이트 길이의 첫 번째 메시지(msg1)를 암호화한다.
그 첫 번째 메시지(msg1)의 암호화 과정(S3)은 다음과 같다.
우선 공유된 psK를 이용하여 n개의 난수(R1, R2, ..., Rn) 값을 계산한다(S3a).
그리고 다음의 수학식 4와 같이 배타적 논리합(XOR) 연산을 사용하여 첫 번째 메시지(msg1)의 암호문(cipher1)을 계산한다(S3b).
Figure 112003010374912-pat00002
여기서 meK1은 상기에서 계산된 n개의 난수(R1, R2, ..., Rn) 값을 사용한 "meK1 = R1∥R2∥R3∥... ∥Rn"이다.
첫 번째 메시지의 암호화 이후에 다음 메시지(msg2)의 암호화를 위하여 두 개의 계수(counter) i 값과 j 값을 저장하고 또한 상기에서 계산된 256개의 1 바이트 정수(S0, S1, ..., S255)의 값을 저장한다(S4).
이어서 송신측은 m 바이트 길이의 두 번째 메시지(msg2)를 암호화한다.
두 번째 메시지(msg2)의 암호화 과정(S5)은 다음과 같다.
첫 번째 메시지(msg1)의 암호화 과정에서 저장된 계수(counter) i 값과 j 값, 그리고 256개의 1 바이트 정수(S0, S1, ..., S255)의 값을 이용하여 m개의 난수(Rn+1, Rn+2, ..., Rn+m) 값을 계산한다(S5a).
그리고 다음의 수학식 5와 같이 배타적 논리합(XOR) 연산을 사용하여 두 번째 메시지(msg2)의 암호문(cipher1)을 계산한다(S5b).
Figure 112003010374912-pat00003
여기서 meK2는 상기에서 계산된 m개의 난수(Rn+1, Rn+2, ..., Rn+m) 값을 사용한 "meK2 = Rn+1∥Rn+2∥Rn+3∥... ∥Rn+m"이다.
두 번째 메시지의 암호화 이후에 다음 메시지(msg3)의 암호화를 위하여 두 개의 계수(counter) i 값과 j 값을 저장하고 또한 상기에서 계산된 256개의 1 바이트 정수(S0, S1, ..., S255)의 값을 저장한다(S6). 이 때 저장되는 i 값은 n 바이트의 첫 번째 메시지(msg1)와 m 바이트의 두 번째 메시지(msg2)가 암호화된 이후의 값이므로 "n+m"이다. 그리고 또한 저장되는 256개의 1 바이트 정수(S0, S1, ..., S255)의 값은 m개의 난수(Rn+1, Rn+2, ..., Rn+m) 값을 계산하는 과정에서 새로운 값으로 변환된 값들이다.
그러나 SSL에서 정의된 스트림 암호화를 위한 종래의 키 설정과 암호화 과정에서도 다음의 문제점들이 있다.
첫 째, 메시지를 전송하는 과정에서 데이터의 분실과 같은 문제가 발생했을 때 향후 메시지에 대한 복호화가 불가능하다. 메시지 수신측이 반드시 계수 i 값을 알아야만 송신측에서 생성하는 meK 값과 동일한 값을 계산해 낼 수 있기 때문이다.
둘 째, 전술된 바와 같이 이어지는 메시지를 계속 암호화하기 위해서는 계수 i 값과 j 값, 그리고 256개의 1 바이트 정수(S0, S1, ..., S255)의 값을 모두 저장해야 한다. 이는 암호화 과정의 불필요한 계산을 줄이기 위한 것이기는 하지만 암호화 알고리즘만을 순수하게 사용하는 암호화 과정에 데이터 저장이라는 외적인 과정이 추가로 요구된다.
본 발명은 상기한 점들을 감안하여 안출한 것으로써, 특히 배타적 논리합(XOR) 연산을 이용하는 스트림 암호화에서 psK를 공유한다 할지라도 meK가 항상 다른 값을 가지도록 하는데 적당한 메시지의 암호화 및 복호화 방법을 제공하는 것이 목적이다.
본 발명의 또다른 목적은 이어지는 메시지를 계속 암호화하기 위한 데이터의 저장 용량을 최소하하는데 적당한 메시지의 암호화 및 복호화 방법을 제공하는 것이다.
본 발명의 또다른 목적은 메시지 전송의 안전성은 유지하면서 가용성의 저하가 없는 메시지의 암호화 및 복호화 방법을 제공하는데 있다.
상기한 목적을 달성하기 위한 본 발명에 따른 메시지의 암호화 및 복호화 방법은, 메시지의 송신측과 상기 메시지의 수신측이 암호화 키 값(psK)을 서로 공 유하는 제1단계와, 상기 송신측에서, 상기 공유하는 암호화 키 값(psK)과 현재 송신 메시지의 번호(i)를 사용하여 랜덤한 암호화 키 값(psKi)을 계산하는 제2단계와, 상기 송신측에서, 상기 계산된 랜덤한 암호화 키 값(psKi)을 입력 파라미터로 하는 암호화 함수를 사용하여, 상기 현재 송신 메시지(msgi)를 암호화하는 제3단계와, 상기 수신측에서, 상기 송신 메시지의 암호문을 수신하여 복호화하는 제4단계로 이루어지는 것이 특징이다.
바람직하게 상기 제2단계는, 상기 공유된 암호화 키 값(psK)과 상기 현재 송신 메시지의 번호(i)를 연결(concatenation)시킨 후에 그 연결된 값을 해쉬함수로 압축하여 상기 랜덤한 암호화 키 값(psKi)을 계산한다.
보다 바람직하게 상기 공유된 암호화 키 값(psK)에 특정 플래그(flag) 비트열이 전단에 스트링(string)된 상기 현재 송신 메시지의 번호(i)를 연결(concatenation)시킨 후에 그 연결된 값을 해쉬함수로 압축하여 상기 랜덤한 암호화 키 값(psKi)을 계산한다.
바람직하게 상기 제2단계는, 상기 공유된 암호화 키 값(psK)을 키로 사용하는 키 유도함수(KDF)에 상기 송신 메시지의 번호(i)를 입력으로 하여 상기 송신 메시지의 랜덤한 암호화 키 값(psKi)을 생성시킨다.
바람직하게 상기 제3단계 이후에 상기 송신 메시지의 번호(i)와 상기 송신 메시지와 상기 계산된 랜덤한 암호화 키(psKi)이 순차적으로 연결(concatenation)된 암호문을 수신측에 전송하는 단계가 더 포함된다.
보다 바람직하게, 상기 송신 메시지의 번호(i)가 상기 암호문의 처음과 중간과 마지막 중에서 어느 하나의 위치에 연결되어 상기 수신측에 전송된다.
바람직하게, 상기 제3단계 이후에 상기 송신 메시지의 번호(i)를 저장하는 단계가 더 포함된다.
보다 바람직하게, 상기 송신 메시지(msgi)의 전송한 후에 상기 저장된 번호(i)를 업 카운트하고, 상기 송신 메시지(msgi)에 이은 (i+1)번째 송신 메시지(msgi+1)의 암호화하기 위해 상기 업 카운트된 번호(i+1)을 상기 공유된 암호화 키 값(psK)과 함께 사용하여 랜덤한 또하나의 암호화 키 값(psKi+1)을 생성시킨다.
바람직하게 상기 제4단계는, 상기 수신된 암호문에 포함된 상기 송신 메시지의 번호(i)를 상기 공유된 암호화 키 값(psK)과 함께 사용하여 랜덤한 암호화 키 값을 계산하는 (a)단계, 상기 계산된 랜덤한 암호화 키 값을 입력 파라미터로 하는 복호화 함수를 사용하여, 상기 송신 메시지를 복호화하는 (b)단계로 이루어진다.
보다 바람직하게 상기 (a)단계는, 상기 수신 암호문으로부터 추출된 상기 송신 메시지의 번호(i)와 상기 공유된 암호화 키 값(psK)을 연결(concatenation)시킨 후에 그 연결된 값을 해쉬함수로 압축하여 상기 랜덤한 암호화 키 값(psKi)을 계산한다.
보다 바람직하게 상기 (a)단계는, 상기 공유된 암호화 키 값(psK)을 키로 사 용하는 키 유도함수(KDF)에 상기 송신 메시지의 번호(i)를 입력으로 하여 상기 송신 메시지의 랜덤한 암호화 키 값(psKi)을 생성시킨다.
이하 본 발명에 따른 메시지의 암호화 및 복호화 방법에 대한 바람직한 일 실시 예를 첨부된 도면을 참조하여 설명한다.
일단 본 발명은 i번째 메시지를 암호화하기 위한 암호화 함수(ENCRYPT)에 평문 메시지인 msgi와, 사전에 공유된 암호화 키 psK로부터 랜덤하게 생성된 psKi와, i번째 메시지임을 나타내는 시퀀스 번호(sequency number)를 사용하여 암호문 cipheri를 생성한 후 그 암호문을 송신한다. 상기한 암호문은 다음의 수학식 6과 같이 표현된다.
cipheri=ENCRYPT(i, msgi, psKi)
상기한 수학식 6에서 암호화 함수 "ENCRYPT"는 RC4와 같은 스트림 암호화 함수이다.
특히 이하에서 설명될 본 발명은 다음의 특성-1을 만족한다.
[특성-1] 누구나 암호문(cipheri)으로부터 시퀀스 번호인 i 값을 얻어낼 수 있어야 한다.
상기한 특성-1은 i 값이 암호문(cipheri)에 평문 형태로 있어야 한다는 것을 의미한다.
그리고 본 발명에서는 암호화 키 값인 psK로부터 i번째 메시지를 암호화할 때, 그 메시지의 시퀀스 번호 i를 사용하여 랜덤한 psKi를 생성하고, 그 생성된 psKi를 암호화 함수의 입력 파라미터로써 사용한다. 따라서 본 발명에서는 메시지의 시퀀스 번호가 서로 다르면 암호화 함수에 사용될 암호화 키 값도 서로 다르게 생성시켜 사용한다.
도 2는 본 발명의 스트림 암호화 및 복호화 절차를 나타낸 도면이다.
도 2를 참조하면, 특정 메시지를 송신하고자 하는 송신측은 그 송신 메시지를 수신할 수신측과 암호화 키 값(psK)을 서로 공유한다(S10).
이후에 송신측에서는 메시지를 암호화하여 그에 따른 암호문을 송신하며, 수신측에서는 수신된 암호문으로부터 수신 메시지를 복원한다.
송신측에 의한 메시지의 암호화 과정을 먼저 설명한다.
송신측은 메시지 암호화 키 유도함수(message encyption Key Derivation Function ; 이하, meKDF 라 약칭함)를 사용하여 소정 길이의 i번째 송신할 메시지(msgi)의 랜덤한 암호화 키 값(psKi)을 생성시킨다(S11). 이를 나타낸 것이 수학식 7이다.
psKi=meKDF(psK,i)
이 때 meKDF에는 수신측과 공유하는 암호화 키 값(psK)과 송신 메시지의 번 호(i)가 사용된다. 메시지 번호 i는 여러 개의 연속된 메시지를 송신할 때 각 메시지의 송신 순서를 나타내는 값이다.
meKDF은 다음의 수학식 8와 같이 해쉬함수를 사용한다.
meKDF(psK,i)=hash(i∥psK) 또는 meKDF(psK,i)=hash(psK∥i)
이 때 사용되는 해쉬함수는 SHA1(미국 디지털 서명 표준인 DSA를 위해 개발된 해쉬함수), MD5(Message Digest 5), HAS160(한국형 디지털 서명 표준인 KCDSA에 사용할 목적으로 개발된 해쉬함수) 등과 같이 암호화적 해쉬함수이다.
상기한 수학식 8에 보인 바와 같이, 해쉬함수를 사용하여 i번째 송신할 메시지(msgi)의 랜덤한 암호화 키 값(psKi)을 생성시키는 과정은 다음과 같다.
먼저 수신측과 공유하는 암호화 키 값(psK)과 i번째 송신할 메시지(msgi)의 번호(i)를 연결(concatenation)시킨다. 이 때 암호화 키 값(psK)과 메시지의 번호(i) 중에서 어느 것이 전단에 위치하더라도 상관없다.
그리고 수신측과 공유하는 암호화 키 값(psK)과 상기 i번째 송신할 메시지의 번호(i)가 연결된 값을 해쉬함수로 암호화함으로써, i번째 송신할 메시지의 랜덤한 암호화 키 값(psKi)이 생성된다. 여기서 수신측과 공유하는 암호화 키 값(psK)과 상기 i번째 송신할 메시지의 번호(i)가 연결된 값은 해쉬함수에 의해 압축되어 랜덤한 암호화 키 값(psKi)이 된다.
또는 meKDF는 다음의 수학식 9와 같이 키 유도함수(KDF : Key Derivation Function)를 사용할 수도 있다.
meKDF(psK,i)=KDFpsK(i)
이 때 사용되는 키 유도함수(KDF) 대신에 SHA1, MD5, HAS160 등과 같은 해쉬함수를 이용하여 MAC을 생성하는 HMAC(Hash-Message Authentication Code) 함수를 사용할 수도 있다.
상기한 수학식 9에 보인 바와 같이, 키 유도함수(KDF)를 사용하여 i번째 송신할 메시지의 랜덤한 암호화 키 값(psKi)을 생성시키는 과정은 다음과 같다.
먼저 수신측과 공유하는 암호화 키 값(psK)이 키 유도함수(KDF)의 키로 사용된다. 그리고 i번째 송신할 메시지(msgi)의 번호(i)가 입력됨에 따라 그 입력된 메시지의 번호(i)를 처리 대상으로 인식하여 복수 개의 값들을 생성시킨다.
이 때 생성된 복수 개의 값들 중에서 임의의 하나를 송신 메시지의 랜덤한 암호화 키 값(psKi)으로 설정한다.
별도로 본 발명의 meKDF에는 다음의 수학식 10 내지 12과 같이 미리 공유된 암호화 키 값(psK)과 함께 전단에 랜덤함 특정 플래그(flag) 비트열을 스트링(string)시킨 i번째 시퀀스 번호(i)가 사용된다. 즉 i번째 시퀀스 번호(i)의 전단에 특정 플래그(flag) 비트열을 스트링(string)시킨 후에 플래그가 스트링된 비트열을 미리 공유된 암호화 키 값(psK)에 연결(concatenation)시킨 값을 i번 째 송신할 메시지의 랜덤한 암호화 키 값(psKi)을 생성하기 위한 입력으로 사용한다.
psKi=meKDF(psK,flag,i)
meKDF(psK,flag,i)=hash(flag∥i∥psK)
또는 meKDF(psK,flag,i)=hash(psK∥flag∥i)
meKDF(psK,flag,i)=KDFpsK(flag∥i)
랜덤한 암호화 키 값(psKi)의 생성 과정 이후에 송신측은 생성된 랜덤한 암호화 키 값(psKi)을 사용하여 i번째 송신할 메시지(msgi)를 암호화한다(S12). 즉 수학식 7 내지 12를 통해 생성된 랜덤한 암호화 키 값(psKi)을 입력 파라미터로 하는 암호화 함수를 사용하여 i번째 송신할 메시지(msgi)를 암호화한다.
상기한 암호화를 통해 생성된 암호문(cipheri)은 전술된 수학식 6이며, 그 암호문에는 i번째 송신할 메시지 번호(i), 그 송신 메시지(msgi), 그리고 미리 공유된 암호화 키(psK)로부터 랜덤하게 생성된 암호화 키 값(psKi)의 암호화된 정보가 삽입되어 수신측에 전송된다(S13).
만약 암호문(cipheri)이 전송되는 도중에 불법 공격자에 의해 도청되었다 하더라도 그 불법 공격자는 송신측과 수신측이 공유한 암호화 키 값(psK) 값을 알 수 없기 때문에 해당 메시지를 복원할 수 없다.
다음은 수신측에 의한 메시지의 복호화 과정을 설명한다.
수신측은 i번째 수신된 메시지(msgi)에 대한 암호문(cipheri)을 수신한다(S14). 그러면 수신측은 그 암호문으로부터 수신 메시지의 번호(i)와 그 수신 메시지(msgi)와 랜덤하게 생성된 암호화 키 값(psKi)을 알게 된다.
그러면 수신측은 수신된 암호문으로부터 추출된 i번째 메시지의 번호(i)와 미리 공유된 암호화 키 값(psK)을 사용하여, 전술된 수학식 7 내지 12와 같은 방법으로 i번째 수신 메시지(msgi)의 암호화에 사용된 암호화 키 값(psKi)을 계산한다(S15).
암호화에 사용된 암호화 키 값(psKi)을 수신측에서 계산하는 방식은 송신측이 어떠한 방식으로 암호화를 위한 암호화 키 값(psKi)을 생성했느냐에 따라 달라진다. 가장 바람직하게는 송신측과 수신측이 동일한 방식으로 암호화 키 값(psKi)을 생성한다. 그러나 송신측과 수신측이 동일한 방식을 사용하지 않더라도 서로 호환되는 방식으로 암호화 키 값(psKi)을 생성하면 된다.
수신측이 암호화 키 값(psKi)을 계산하는 과정은 해쉬함수를 사용하여 암호 화 키 값(psKi)을 계산하는 경우와, 키 유도함수(KDF) 또는 HMAC 함수를 사용하여 암호화 키 값(psKi)을 계산하는 경우가 있다. 이들 두 가지 경우에 대한 상세한 설명은 암호화 과정을 통해 이미 설명되었으므로 생략한다.
복호화를 위한 암호화 키 값(psKi)이 계산된 이후에 수신측은 계산된 암호화 키 값(psKi)을 사용하여 i번째 수신된 메시지(msgi)를 복호화한다(S16). 즉 계산된 암호화 키 값(psKi)을 입력 파라미터로 하는 복호화 함수를 사용하여 i번째 수신 메시지(msgi)를 복호화한다.
전술된 바와 같이 하나의 메시지에 대한 암호화 및 복호화 과정을 반복함으로써 복수 개의 메시지가 연속되는 하나의 어플리케이션 데이터가 복원된다.
그리고 송신측은 i번째 송신할 메시지(msgi)를 전송한 후에 이어지는 (i+1)번째 송신 메시지(msgi+1)를 암호화하기 위해 미리 공유하는 암호화 키 값(psK)과 현재 송신 메시지의 번호(i)를 저장한다.
그리고 다음에 송신될 메시지에 번호로써 "i+1"을 부여하여 암호화를 위한 랜덤한 암호화 키 값을 생성하는데 사용한다. 즉 송신측은 송신 메시지(msgi)를 수신측에 전송한 후에 현재 송신 메시지의 번호(i)를 저장하고 있다가, 그 송신 메시지(msgi)에 이은 (i+1)번째 송신 메시지(msgi+1)의 암호화를 실시한다. 이 때 미리 저장되어 있던 번호(i)를 업 카운트하고, 그 업 카운트된 번호(i+1)을 미리 공유된 암호화 키 값(psK)과 함께 사용하여 랜덤한 또하나의 암호화 키 값(psKi+1)을 생성한다.
그리고 그 생성된 또하나의 랜덤한 암호화 키 값(psKi+1)을 (i+1)번째 송신 메시지(msgi+1)의 암호화에 사용한다.
이상에서 설명된 본 발명에 따르면, 보안통신(secure communication) 분야에서 어플리케이션 데이터를 암호화하고 복호화하는데 있어서 안전성 문제와 가용성 문제를 동시에 해결할 수 있다.
특히 메시지를 전송하는 과정에서 전송 환경의 악화 등으로 인해 메시지의 일부분이 분실되었을 때 기존 기술로써 해결하지 못했던 가용성 저하 문제를 해결해 준다. 즉 본 발명은 현재의 수신 메시지를 복호화함에 있어서 이전에 수신된 메시지의 어떠한 정보도 이용하지 않기 때문에 현재 메시지를 전송 도중에 분실했다 하더라도 복호화가 가능하다는 것이다.
또한 본 발명은 불법 공격자에 의해 전송 메시지의 복원 정보가 도청되었다 하더라도 그 불법 공격자가 현재 메시지를 복원하기 위해서는 미리 공유하는 암복호화 정보가 반드시 요구되기 때문에, 보안통신의 프로토콜 구조에서 인증 및 키 교환만 안전하게 수행된다면 보다 강화된 안전성을 보장해 준다.
또한 본 발명은 이어지는 메시지를 계속 암호화하기 위해, 미리 공유하는 암호화 키 값(psK)과 현재 송수신 메시지의 번호(i)만을 저장하면 된다.
또한 본 발명이 블록 암호화에도 적용 가능하다. 이 때 블록 암호화에서는 초기벡터 값(IV : Initial Vector)의 난수화가 요구되나, 본 발명에서와 같이 암호화 키 값을 난수화하여 블록 암호화에 사용하면 초기벡터 값의 난수화가 필요없게 된다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 명세서의 상세한 설명에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의해 정해져야만 할 것이다.

Claims (11)

  1. 메시지의 송신측과 상기 메시지의 수신측이 암호화 키 값(psK)을 서로 공유하는 제1단계;
    상기 송신측에서, 상기 공유하는 암호화 키 값(psK)과 현재 송신 메시지의 번호(i)를 사용하여 랜덤한 암호화 키 값(psKi)을 계산하는 제2단계;
    상기 송신측에서, 상기 계산된 랜덤한 암호화 키 값(psKi)을 입력 파라미터로 하는 암호화 함수를 사용하여, 소정 길이를 갖는 상기 현재 송신 메시지(msgi)를 암호화하는 제3단계;
    상기 수신측에서 상기 송신 메시지의 암호문을 수신하여 복호화하되, 상기 수신된 암호문에 포함된 상기 송신 메시지의 번호(i)를 상기 공유된 암호화 키 값(psK)과 함께 사용하여 랜덤한 암호화 키 값을 계산한 후에 상기 계산된 랜덤한 암호화 키 값을 상기 복호화에 사용하는 제4단계로 이루어지는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  2. 제 1 항에 있어서, 상기 제2단계는,
    상기 공유된 암호화 키 값(psK)과 상기 현재 송신 메시지의 번호(i)를 연결(concatenation)시킨 후에 그 연결된 값을 해쉬함수로 압축하여 상기 랜덤한 암호화 키 값(psKi)을 계산하는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  3. 제 2 항에 있어서, 상기 공유된 암호화 키 값(psK)에 특정 플래그(flag) 비 트열이 전단에 스트링(string)된 상기 현재 송신 메시지의 번호(i)를 연결(concatenation)시킨 후에 그 연결된 값을 해쉬함수로 압축하여 상기 랜덤한 암호화 키 값(psKi)을 계산하는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  4. 제 1 항에 있어서, 상기 제2단계는,
    상기 공유된 암호화 키 값(psK)을 키로 사용하는 키 유도함수(KDF)에 상기 송신 메시지의 번호(i)를 입력으로 하여 상기 송신 메시지의 랜덤한 암호화 키 값(psKi)을 생성시키는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  5. 제 1 항에 있어서, 상기 제3단계 이후에 상기 송신 메시지의 번호(i)와 상기 송신 메시지와 상기 계산된 랜덤한 암호화 키(psKi)이 순차적으로 연결(concatenation)된 암호문을 수신측에 전송하는 단계가 더 포함되는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  6. 제 5 항에 있어서, 상기 송신 메시지의 번호(i)가 상기 암호문의 처음과 중간과 마지막 중에서 어느 하나의 위치에 연결되어 상기 수신측에 전송되는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  7. 제 1 항에 있어서, 상기 제3단계 이후에 상기 송신 메시지의 번호(i)를 저장하는 단계가 더 포함되는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  8. 제 7 항에 있어서, 상기 송신 메시지(msgi)의 전송한 후에 상기 저장된 번호(i)를 업 카운트하고, 상기 송신 메시지(msgi)에 이은 (i+1)번째 송신 메시지(msgi+1)의 암호화하기 위해 상기 업 카운트된 번호(i+1)을 상기 공유된 암호화 키 값(psK)과 함께 사용하여 랜덤한 또하나의 암호화 키 값(psKi+1)을 생성시키는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  9. 제 1 항에 있어서, 상기 제4단계는,
    상기 계산된 랜덤한 암호화 키 값을 입력 파라미터로 하는 복호화 함수를 사용하여, 상기 송신 메시지를 복호화하는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  10. 제 1 항에 있어서, 상기 수신 암호문으로부터 추출된 상기 송신 메시지의 번호(i)와 상기 공유된 암호화 키 값(psK)을 연결(concatenation)시킨 후에 그 연결된 값을 해쉬함수로 압축하여 상기 랜덤한 암호화 키 값(psKi)을 계산하는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
  11. 제 1 항에 있어서, 상기 공유된 암호화 키 값(psK)을 키로 사용하는 키 유도함수(KDF)에 상기 송신 메시지의 번호(i)를 입력으로 하여 상기 송신 메시지의 랜덤한 암호화 키 값(psKi)을 생성시키는 것을 특징으로 하는 메시지의 암호화 및 복호화 방법.
KR1020030018445A 2003-03-25 2003-03-25 메시지의 암호화 및 복호화 방법 KR100571178B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030018445A KR100571178B1 (ko) 2003-03-25 2003-03-25 메시지의 암호화 및 복호화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030018445A KR100571178B1 (ko) 2003-03-25 2003-03-25 메시지의 암호화 및 복호화 방법

Publications (2)

Publication Number Publication Date
KR20040083795A KR20040083795A (ko) 2004-10-06
KR100571178B1 true KR100571178B1 (ko) 2006-04-17

Family

ID=37367464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030018445A KR100571178B1 (ko) 2003-03-25 2003-03-25 메시지의 암호화 및 복호화 방법

Country Status (1)

Country Link
KR (1) KR100571178B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100953159B1 (ko) * 2003-07-12 2010-04-20 삼성전자주식회사 암호화된 데이터 전송방법 및 재생방법

Also Published As

Publication number Publication date
KR20040083795A (ko) 2004-10-06

Similar Documents

Publication Publication Date Title
US8194858B2 (en) Chaotic cipher system and method for secure communication
US9166793B2 (en) Efficient authentication for mobile and pervasive computing
EP0998799B1 (en) Security method and system for transmissions in telecommunication networks
Harba Secure data encryption through a combination of AES, RSA and HMAC
CA2690755C (en) System and method of per-packet keying
US11831764B2 (en) End-to-end double-ratchet encryption with epoch key exchange
US20130073850A1 (en) Hybrid encryption schemes
US20060034453A1 (en) System and method for secure encryption
KR20200067265A (ko) 실시간 데이터 전송을 위한 블록 암호 장치 및 방법
JPH09312643A (ja) 鍵共有方法及び暗号通信方法
WO2008064153A2 (en) Processing method for message integrity with tolerance for non-sequential arrival of message data
US8122247B2 (en) Processing method for message integrity with tolerance for non-sequential arrival of message data
KR100551992B1 (ko) 어플리케이션 데이터의 암호화 및 복호화 방법
GB2459735A (en) Hybrid asymmetric / symmetric encryption scheme which obviates padding
EP1456997B1 (en) System and method for symmetrical cryptography
KR100571178B1 (ko) 메시지의 암호화 및 복호화 방법
KR100388059B1 (ko) 비대칭키 암호 알고리즘을 이용한 데이터 암호화 시스템및 그 방법
Rogobete et al. Hashing and Message Authentication Code Implementation. An Embedded Approach.
CN112668353A (zh) 巴枪认证方法、装置、设备和存储介质
Harba Secure Data Encryption by Combination AES, RSA and HMAC
Almuhammadi et al. Double-hashing operation mode for encryption
CN113923029B (zh) 基于ecc混合算法的物联网信息加密方法
CN114553420B (zh) 基于量子密钥的数字信封封装方法及数据保密通信网络
US20230246812A1 (en) Communications system having crypto-variable array and associated methods
EP2087643B1 (en) Processing method for message integrity with tolerance for non-sequential arrival of message data

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

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140218

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160401

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170403

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180409

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190416

Year of fee payment: 14

R401 Registration of restoration