KR100930577B1 - 스트림 암호를 이용한 메시지 인증 코드 생성 방법과스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를이용한 인증 복호화 방법 - Google Patents

스트림 암호를 이용한 메시지 인증 코드 생성 방법과스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를이용한 인증 복호화 방법 Download PDF

Info

Publication number
KR100930577B1
KR100930577B1 KR1020070081305A KR20070081305A KR100930577B1 KR 100930577 B1 KR100930577 B1 KR 100930577B1 KR 1020070081305 A KR1020070081305 A KR 1020070081305A KR 20070081305 A KR20070081305 A KR 20070081305A KR 100930577 B1 KR100930577 B1 KR 100930577B1
Authority
KR
South Korea
Prior art keywords
mac
message
authentication code
message authentication
stream cipher
Prior art date
Application number
KR1020070081305A
Other languages
English (en)
Other versions
KR20080043217A (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 JP2007293657A priority Critical patent/JP4712017B2/ja
Priority to US11/938,334 priority patent/US8090098B2/en
Priority to CN200710164675XA priority patent/CN101202623B/zh
Publication of KR20080043217A publication Critical patent/KR20080043217A/ko
Application granted granted Critical
Publication of KR100930577B1 publication Critical patent/KR100930577B1/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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

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

Abstract

본 발명은 안전하고 효율적인 스트림 암호(Stream Cipher)를 이용하여 병렬 연산이 가능한 메시지 인증 코드(MAC; Message Authentication Code)를 생성하는 방법과, 메시지 인증 코드를 스트림 암호의 초기값(IV; initialization vector)으로 사용하는 스트림 암호를 이용한 인증 암호화 방법, 및 스트림 암호를 이용한 인증 복호화 방법에 관한 것이다.
이와 같은 본 발명은 스트림 암호를 이용하여 생성한 메시지 인증 코드를 스트림 암호의 암호 초기값으로 하는 인증 암호화를 수행함으로써 암호 초기값 생성을 위해 별도의 난수 발생 알고리즘을 사용할 필요가 없으므로 구현 효율성을 높일 수 있다.
또한 메시지 인증 코드 생성 시 복수의 키 수열 생성부가 복수의 메시지 블록에 대해 각기 연산함으로써 복수의 메시지 블록이 한 번에 병렬 연산되기 때문에 그 연산의 효율성이 뛰어나다.
메시지, 인증, 코드, 생성, 스트림, 암호

Description

스트림 암호를 이용한 메시지 인증 코드 생성 방법과 스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를 이용한 인증 복호화 방법{Message Authentication Code Generation Method and Authenticated Encryption Method using Stream Cipher}
본 발명은 스트림 암호(Stream Cipher)를 이용한 메시지 인증 코드(MAC; Message Authentication Code) 생성 방법과, 스트림 암호를 이용한 인증 암호화 방법, 및 스트림 암호를 이용한 인증 복호화 방법에 관한 것으로, 더욱 상세하게는 안전하고 효율적인 스트림 암호를 이용하여 병렬 연산이 가능한 메시지 인증 코드를 생성하는 방법과, 메시지 인증 코드를 스트림 암호의 초기값(IV; initialization vector)으로 사용하는 스트림 암호를 이용한 인증 암호화 방법, 및 스트림 암호를 이용한 인증 복호화 방법에 관한 것이다.
메시지 인증 코드는 데이터의 무결성(integrity)을 제공하기 위해 사용된다. 데이터 무결성이란 데이터를 전송 또는 저장할 때, 수신된 데이터 또는 저장된 데이터가 원본 데이터와 동일한 지의 여부를 확인할 수 있는 기능을 말한다. 메시지 인증 코드를 생성하는 대표적인 방법으로는 해쉬함수(keyed hash function)를 이용 한 HMAC과 CMAC 등 블록암호를 이용한 메시지 인증 코드 생성 기법이 있다.
스트림 암호는 블록암호와 더불어 기밀성을 제공하기 위해 많이 사용되는 암호 프리미티브로서 일반적으로 블록암호에 비해 경량 하드웨어 구현이 가능하며 소프트웨어에서 고속으로 동작하는 장점을 가지고 있다. 스트림 암호는 암호화 과정에서는 비밀키를 이용하여 생성한 키 수열과 메시지의 배타적 논리합(XOR; exclusive OR)으로 암호문을 생성하므로 키 수열을 모르는 사용자가 원하는 위치의 메시지를 쉽게 바꿀 수 있다. 이러한 특성으로 인해 스트림 암호는 메시지 인증 코드 기능을 제공하기 힘든 것으로 여겨져 왔다.
메시지 인증 코드는 데이터를 입력값으로 하여 계산되는 값으로, 두 사용자 사이에 데이터 전송이 이루어지는 경우, 송신자는 메시지 인증 코드를 데이터의 뒷부분에 덧붙여 전송하고 수신자는 데이터로부터 메시지 인증 코드를 생성하여 전송된 값과의 일치 여부를 확인하게 된다. 암호학적 안전성이 요구되지 않는 분야에서는 데이터 무결성을 제공하기 위해 패리티 비트나 CRC 등의 체크섬과 해쉬값을 이용한 방식이 많이 사용된다. 이러한 방식은 전송 오류와 같은 단순 오류를 확인할 수 있는 반면 악의적인 사용자에 의한 위변조는 막을 수 없다는 단점을 가진다. 이 문제를 암호학적으로 해결하기 위해 사전에 공유된 비밀키를 가진 사용자만이 유효한 메시지 인증 코드를 생성할 수 있도록 하는 방식이 사용되고 있다.
비밀키를 사용하는 대표적인 방식으로 키를 사용하는 해쉬함수 방식과 블록암호를 이용하는 방식을 들 수 있다. Bellare 등은 1996년 키를 사용하는 해쉬함수 방식 메시지 인증 코드 HMAC을 소개하였다(M. Bellare, R. 0Canetti, H. Krawczyk, Keying hash functions for message authentication, Advances in Cryptology-CRYPTO'96, LNCS 1109, pp. 1-15, Springer-Verlag, 1996.). HMAC에서는 메시지 M이 주어졌을 때, 해쉬함수 H와 비밀키 K를 이용하여 메시지 인증 코드를
Figure 112007058556482-pat00001
으로 생성한다. 여기서 opad ipad는 사전에 약속된 상수를 의미한다.
블록암호를 이용한 방식으로는 CBC 운용모드를 이용한 CBC-MAC과 CMAC 등을 들 수 있다. CBC-MAC은 이전 블록 암호문과 다음 블록 평문을 연쇄하여 다음 블록 암호문을 생성하는 방식으로서 데이터를 암호화하기 위해 많이 사용되는 블록 암호 운용모드 방식이다. CBC-MAC은 위조 공격에 대해 안전하지 않음이 알려졌으며 이를 보완하기 위해 블록암호를 이용한 여러 가지 메시지 인증 코드 생성 기법이 제안되었다. 2003년 Iwata와 Kurosawa는 CBC-MAC의 변형인 OMAC을 제안하였다(T. Iwata, K. Kurosawa, OMAC: one-key CBC-MAC, Advances in Cryptology-FSE 2003, LNCS 2887, pp. 129-153, Springer-Verlag, 2003). 이후 OMAC은 CMAC의 이름으로 미국 NIST의 블록암호 운용모드 권고안에 포함되었다.
블록암호와 해쉬함수에 비해 스트림 암호를 이용한 메시지 인증 코드 생성 기법은 많이 연구되지 않았다. 스트림 암호를 이용한 기법과 관련하여 국내에서는 한재우, 이동훈에 의해 처음 제안되어 국내 특허(등록번호: 0578550, 스트림 암호를 이용한 메시지 인증 코드 구성 방법)로 등록된 방법이 있다. 이 방식은 블록암호의 CBC-MAC을 스트림 암호에 응용하였으며 CBC-MAC의 단점을 보완하기 위해 두 개의 키를 사용하고 있다. 한편 Ferguson 등은 인증 기능을 제공하는 스트림 암호 Helix를 제안하였다(N. Ferguson et al, Helix: fast encryption and authentication in a single cryptographic primitive, Advances in Cryptology-FSE 2003, LNCS 2887, pp. 330-346, Springer-Verlag, 2003). 이 후 Whiting 등은 Helix를 개선하여 유럽의 스트림 암호 공모사업인 eSTREAM에 스트림 암호 Phelix를 제안하였다.
최근 스트림 암호의 설계 동향을 eSTREAM을 통해 살펴보면 모든 스트림 암호에서 암호 초기값을 사용하고 있으며 시간-메모리 트레이드 오프(TMTO; time-memory trade off) 공격을 고려하여 암호 초기값의 길이를 비밀키 길이 이상으로 하고 있다. 예를 들어 128비트 비밀키를 사용하는 경우 128비트 이상의 암호 초기값을 사용하도록 설계하고 있다.
전술된 한재우 등이 제안한 스트림 암호를 이용한 메시지 인증 코드 구성 방법은 CBC-MAC과 동일한 안전성 결함을 가지고 있으며 연쇄 방식으로 데이터를 처리하므로 병렬 연산이 가능하지 않다.
인증과 암호화를 동시에 제공하는 기법을 인증 암호화 기법이라 부르며 인증 암호화 기법은 블록암호 이론분야에서 주로 연구되고 있다. 널리 알려진 블록암호의 인증 암호화 기법으로는 Rogaway 등이 제안한 OCB 운용모드를 들 수 있다(P. Rogaway, M. Bellare, J. Black, OCB: A block cipher mode of operation for efficient authenticated encryption, ACM TISSEC 6(3), pp. 365-403, 2003.). 앞서 소개한 Phelix 등 인증 기능을 제공하는 스트림 암호에 대해서는 연구가 이루어 지고 있지만 블록암호의 운용모드에 해당하는 연구가 스트림 암호 분야에서는 거의 이루어지지 않고 있다.
지금까지 제안된 대부분의 메시지 인증 코드 생성 기법은 해쉬함수와 블록암호에 기반하고 있다. 블록암호는 기밀성 이외에 의사난수 발생, 메시지 인증 등 여러 가지 기능을 제공하기 위해 많이 사용되고 있어 스트림 암호의 입지가 예전에 비해 줄어들었다 할 수 있다. 일반적으로 스트림 암호는 블록암호에 비해 저전력, 경량 하드웨어 환경과 초고속 소프트웨어 환경에서 장점을 가지는 것으로 알려져 있다. 특히 센서 네트워크, RFID 등 저전력, 경량 환경에서 암호 기능의 요구가 증대됨에 따라 스트림 암호의 역할이 커지고 있다.
본 발명은 전술한 과제를 해결하기 위하여 안출한 것으로, 안전하고 효율적인 스트림 암호를 이용하여 병렬 연산이 가능한 메시지 인증 코드를 생성하는 방법과, 메시지 인증 코드를 스트림 암호의 초기값으로 사용하는 스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를 이용한 인증 복호화 방법을 제공하는데 그 목적이 있다.
이와 같은 목적을 달성하기 위하여,
본 발명의 일 형태에 따르면, 메시지 인증 코드가 덧붙여진 메시지 인증 코드를 생성하는 방법으로서, (a) 입력 메시지 M을 k개의 n비트 메시지 블록으로 나누는 단계와; (b) 메시지 인증 코드 생성용 비밀키 KMAC와 상기 단계 (a)에서 나누어진 메시지의 갯수(k)에 대응하는 숫자와 배타적 논리합된 결과를 키로하여, 상기 나누어진 각각의 입력 메시지 블록을 암호화하여 각각의 중간 계산값을 계산하는 단계와; (c) 상기 단계 (b)의 결과값으로 나온 각각의 중간 계산값을 배타적 논리합하는 배타적 논리합 계산단계와; (d) 상기 단계 (c)의 배타적 논리합한 결과값을 상기 메시지 인증 코드 생성용 비밀키 KMAC를 이용하여 키 수열 생성부로 암호화하여 메시지 인증 코드를 생성하는 생성단계를 포함하여 이루어지는 것을 특징으로 하는 것이 제공된다.
바람직하게는 단계 (b)의 각각의 중간 계산값은, 메시지 인증 코드 생성용 비밀키일 때 각각의 메시지 블록(m1,...,mk)에 대하여 다음의 수학식
Figure 112007058556482-pat00002
으로 계산되는 것이 좋다. 단계 (c)의 각각의 중간 계산값을 합한 중간 계산값(h)은 다음의 수학식,
Figure 112007058556482-pat00003
으로 계산되는 것이 좋다. 상기 단계 (d)의 메시지 인증 코드는 다음의 수학식 MAC(KMAC,M)=En(KMAC,h)으로 나타내는 것이 좋다.
상기 메시지 블록(m1,...,mk)중 각각의 메시지의 길이가 n의 배수가 아닌 경우 상기 마지막 메시지 블록(m1,...,mk)의 길이가 n의 배수가 되도록 하는 것이 좋다. 상기 각각의 메시지 블록(m1,...,mk)에 100...0을 추가하여 상기 각각의 메시지 블록(m1,...,mk)의 길이가 n의 배수가 되도록 할 수 있다.
상기 단계(b)의 계산은 병렬적으로 이루어지는 것이 바람직하다.
또한, 본 발명의 또 다른 형태에 따르면, 인증 암호문을 인증 복호화하는 방법으로서, (a) 스트림 암호 초기값 IV과 메지시 암호화용 비밀키 KENC를 이용하여 키 수열을 생성하는 단계와; (b) 상기 키 수열을 상기 암호문(C)(34)과 배타적 논리합하여 상기 평문 M을 생성하는 단계와; (c) 평문 M에 대한 메시지 인증 코드 MAC(KMAC,M)을 생성하는 단계; 및 (d) 스트림 암호 초기값 IV과 상기 MAC(KMAC,M)이 일치하면 유효한 암호문(C)(34)으로 판정하고 상기 유효한 암호문(C)(34)에 대한 평문 M을 출력하는 단계를 포함하여 이루어지는 것을 특징으로 하는 것이 제공된다.
바람직하게는 상기 단계(d)에서 스트림 암호 초기값 IV과 메시지 인증 코드 MAC(KMAC,M)가 일치하지 않으면 오류 메시지를 출력하는 것이 좋다.
상기 단계(c)는 상기 평문 M과 메시지 인증 코드 생성용 비밀키로부터 상기 평문 M에 대한 상기 메시지 인증 코드 MAC(KMAC,M)을 생성하는 것이 좋다.
이상에서 설명한 바와 같이 본 발명은, 안전하고 효율적인 스트림 암호를 이용하여 병렬 연산 가능한 메시지 인증 코드를 생성하고, 그 생성된 메시지 인증 코드를 스트림 암호의 암호 초기값으로 하는 인증 암호화를 수행한다.
이와 같이 스트림 암호를 이용하여 생성한 메시지 인증 코드를 스트림 암호의 암호 초기값으로 하는 인증 암호화를 수행함으로써 암호 초기값 생성을 위해 별도의 난수 발생 알고리즘을 사용할 필요가 없으므로 구현 효율성을 높일 수 있다.
또한 메시지 인증 코드 생성 시 복수의 키 수열 생성부(100)가 복수의 메시지 블록에 대해 각기 연산함으로써 복수의 메시지 블록이 한 번에 병렬 연산되기 때문에 그 연산의 효율성이 뛰어나다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 실시예를 상세히 설명하면 다음과 같다.
도 1은 본 발명의 바람직한 실시예에 따른 스트림 암호를 이용한 병렬연산 가능 메시지 인증 코드를 생성하는 메시지 인증 코드 생성부의 구성를 예시하는 블록도로, 메시지 인증 코드 생성부(300)에서 그 메시지 인증 코드를 생성하는 과정을 단계별로 기술하면 다음과 같다.
1. 입력 메시지 M을 n비트 메시지 블록으로 나눈다. 메시지 블록은 m1,...,mk(21,...,23)으로 표시한다.
상기 메시지 블록 m1,...,mk(21,...,23) 각각의 길이가 n의 배수가 아닌 경우 각각의 메시지 블록에 100...0을 추가하여 각각의 메시지 블록의 길이가 n의 배수가 되도록 한다. 구체적으로는, 상기 k개로 나누어진 메시지 블록을 포함하는 입력 메시지 M의 전체 길이가 n의 배수가 아닐 경우, 즉, 마지막 k번째 블록이 n비트가 되지 않을 경우, 마지막 블록에 비트 1을 하나 추가하고 0으로 이루어진 연속된 비트열 0...0을 추가하여 마지막 블록의 길이가 n비트가 되도록 한다.
2. 각 i=1,...,k에 대하여 중간 계산값
Figure 112009058384876-pat00004
(i=1, 2, ..., k)을 계산한다. 메시지 인증 코드를 생성하기 위해 소요되는 대부분의 시간은 단계 2를 위해 필요하며 단계 2의 계산은 병렬적으로 이루어질 수 있다. 즉, k개의 키 수열 생성부(100)는 각각의 메시지 블록 m1,...,mk(21,...,23) 계산에 사용되는 비밀키(24,...,26)를 받아 중간 계산값
Figure 112009058384876-pat00005
을 계산한다. 이때 KMAC는 메시지 인증 코드 생성용 비밀키이며, En(K, mi)는 m1, m2, ..., m3의 메시지를 K를 키로 하여 상기 키 수열 생성부(100)에서 수행하는 암호화 알고리즘이다.
3. k개의 각각의 키 수열 생성부(100)로부터 얻은 각각의 중간 계산값을 합한 중간 계산값(h)을 배타적 논리합(27)을 이용하여
Figure 112009058384876-pat00006
를 계산한다.
4. 최종 결과값으로, 메시지 인증 코드 생성용 비밀키가 KMAC이고 메시지가 M일 때의 메시지 인증 코드로서 MAC(KMAC,M)=En(KMAC,h)를 생성한다.
도 2는 본 발명의 바람직한 실시예에 따른 스트림 암호를 이용한 인증 암호화 방법을 예시하는 블록도로, 그 인증 암호화 과정을 단계별로 기술하면 다음과 같다.
1. 도 2의 방식을 이용하여, 메시지 인증 코드(MAC) 생성부(300)는 평문 M(31)과 메시지 인증 코드 생성용 비밀키 KMAC(32)를 입력하여 평문 M(31)에 대한 메시지 인증 코드 MAC(KMAC,M)(28)를 생성한다.
2. 스트림 암호 초기값(IV)을 MAC(KMAC,M)(28)으로 설정한다.
3. 키 수열 생성부(100)는 스트림 암호 초기값(IV)으로 설정된 메시지 인증 코드인 MAC(KMAC,M)(28)과 메시지 암호화용 비밀키 KENC(33)를 이용하여 n비트의 키 수열(13)을 생성한다. 이후 생성된 키 수열(13)과 평문 M을 배타적 논리합하여 암호문(C)(34)을 생성한다.
4. 메시지 인증 코드 생성용 비밀키가 KMAC이고 메시지 암호화용 비밀키가 KENC일 때의 평문 M에 대한 암호문(C)(34)을 출력한다.
도 3은 본 발명의 바람직한 실시예에 따른 스트림 암호를 이용한 인증 복호 화 방법을 예시하는 블록도로, 그 인증 복호화 과정을 단계별로 기술하면 다음과 같다.
1. 먼저, 키 수열 생성부(100)가 암호문(C)로부터 스트림 암호 초기값(IV)과 메시지 암호화용 비밀키 KENC(33)를 이용하여 키 수열(13)을 생성한다. 이후 생성된 키 수열(13)을 암호문(C)(34)과 배타적 논리합하여 평문 M(31)을 생성한다.
2. 도 1의 방식을 이용하여, 메시지 인증 코드 생성부(300)는 평문 M(31)과 메시지 인증 코드 생성용 비밀키(32)로부터 평문 M(31)에 대한 메시지 인증 코드 MAC(KMAC,M)를 생성한다.
3. 스트림 암호 초기값(IV)과 메시지 인증 코드인 MAC(KMAC,M)이 일치하면 유효한 암호문(C)(34)으로 판정하고 그 유효한 암호문(C)(34)에 대한 평문 M을 출력한다. 반면, 스트림 암호 초기값(IV)과 메시지 인증 코드 MAC(KMAC,M)이 일치하지 않으면 오류 메시지 "암호문이 유효하지 않음"을 출력하고 종료한다.
상기 도 1 내지 도 3에서 동일한 명칭에 동일한 지시부호를 사용하였으나 도 1 내지 도 3은 각기 다른 실시예를 나타낸다.
이와 같은 본 발명의 메시지 인증 코드 생성 방법은 메시지를 송신하는 데이터 송신 시스템에서 메시지 인증 코드를 생성할 때, 메시지 인증 코드가 덧붙여진 데이터를 수신하는 데이터 수신 시스템에서 수신된 메시지 인증 코드와 비교하기 위한 대상 메시지 인증 코드를 생성할 때 각기 적용할 수 있다.
또한 본 발명의 인증 암호화 방법은 인증 암호화된 메시지 인증 코드가 덧붙 여진 데이터를 송신하는 데이터 송신 시스템에서 데이터를 인증 암호화할 때 적용할 수 있고, 인증 복호화 방법은 인증 암호화된 메시지 인증 코드가 덧붙여진 데이터를 수신하는 데이터 수신 시스템에서 수신된 인증 암호문을 인증 복호화할 때 적용할 수 있다.
스트림 암호에서는 동일한 암호 초기값을 반복해서 사용하면 암호문으로부터 평문에 대한 정보를 얻을 수 있으므로 동일한 암호 초기값을 반복해서 사용하지 않아야 한다. 암호 초기값을 생성하기 위해 사용하는 방법으로는 난수 발생 알고리즘을 사용하여 랜덤한 암호 초기값을 생성하여 사용하는 방법과 카운터 등의 반복되지 않는 정보를 사용하는 방법이 있다. 난수 발생 알고리즘은 충분한 엔트로피를 얻기 위해 초기 씨드를 안전하게 생성해야 하며 암호 알고리즘과 별도로 알고리즘을 구현해야 한다. 카운터를 이용하는 경우 카운터 정보를 안전하게 저장, 갱신해야하므로 어려움이 따른다. 메시지 인증 코드는 메시지를 대표하는 값으로 간주될 수 있으므로 메시지 인증 코드를 암호 초기값으로 사용하면 서로 다른 메시지 마다 다른 암호 초기값을 사용하는 효과를 얻을 수 있다.
본 발명에서의 적용대상은 특정 스트림 암호에 국한되지 않으며 암호 초기값을 사용하는 대부분의 스트림 암호에 적용 가능하다.
본 발명은 블록암호의 인증 암호화 운용모드에 해당하는 스트림 모드의 운용방식으로서 RFID, 센서 네트워크 등 경량, 저전력 환경에서 암호 기능을 제공할 때 활용될 수 있다.
상술한 바와 같이 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 롬, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변경 및 변환이 가능하다는 것이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 스트림 암호를 이용한 메시지 인증 코드 생성하는 메시지 인증 코드 생성부의 구성을 나타낸 블록도,
도 2는 본 발명의 바람직한 실시예에 따른 스트림 암호를 이용한 인증 암호화 방법을 예시하는 블록도,
도 3은 본 발명의 바람직한 실시예에 따른 스트림 암호를 이용한 인증 복호화 방법을 예시하는 블록도.
<도면의 주요 부분에 대한 부호의 설명>
13: 키 수열
21: 첫 번째 n비트 메시지 블록
22: 두 번째 n비트 메시지 블록
23: k 번째 n비트 메시지 블록
24: 첫 번째 블록 계산에 사용되는 비밀키
25: 두 번째 블록 계산에 사용되는 비밀키
26: k 번째 블록 계산에 사용되는 비밀키
27: k 개의 계산 결과의 배타적 논리합
28: 메시지 인증 코드, 스트림 암호의 초기값
31: 평문
32: 메시지 인증 코드 생성용 비밀키
33: 암호화용 비밀키
34: 암호문
100: 키 수열 생성부
300: 메시지 인증 코드 생성부

Claims (12)

  1. 메시지 인증 코드 MAC를 생성하는 방법으로서,
    (a) 입력 메시지 M을 k개의 n비트 메시지 블록 m1,m2,...,mk으로 나누는 단계와;
    (b) 메시지 인증 코드 생성용 비밀키 KMAC와 상기 단계 (a)에서 나누어진 상기 메시지의 블록의 갯수(k)에 대응하는 숫자의 배타적 논리합된 결과를 키로하여 상기 나누어진 상기 입력 메시지의 각각의 메시지 블록을 병렬로 암호화하여 각각의 중간 계산값(hi)을 계산하는 단계와;
    (c) 상기 단계 (b)의 결과값으로 나온 각각의 중간 계산값을 배타적 논리합하는 배타적 논리합 계산단계와;
    (d) 상기 단계 (c)의 배타적 논리합한 결과값을 상기 메시지 인증 코드 생성용 비밀키 KMAC를 이용하여 키 수열 생성부로 암호화하여 메시지 인증 코드 MAC(KMAC,M)를 생성하는 단계를 포함하여 이루어지며,
    상기 k 및 n은 자연수인 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
  2. 제1항에 있어서,
    상기 단계 (b)의 각각의 중간 계산값(hi)은,
    다음의 수학식으로 계산되고,
    Figure 112009058384876-pat00012
    여기서, 입력 메시지를 나눈 k개의 n비트 메시지 블록은 각각 m1, m2, ..., mk로 표시하며, 이중 어느 하나의 메시지 블록을 mi로 표시하기로 하며, 상기 i=1,...k에 대해 En(KMAC
    Figure 112009058384876-pat00014
    i, mi)는 KMAC
    Figure 112009058384876-pat00015
    i를 비밀키로 하고, mi를 초기값으로 하였을 때 생성되는 스트림 암호의 n비트 출력값을 나타는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
  3. 제2항에 있어서,
    상기 단계 (c)의 각각의 중간 계산값(hi)을 배타적 논리합하는 배타적 논리합 계산은 다음의 수학식을 통해 계산되고,
    Figure 112009058384876-pat00013
    상기 h는 중간 계산값의 배타적 논리합을 나타내는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
  4. 제3항에 있어서,
    상기 단계 (d)의 메시지 인증 코드는,
    다음의 수학식으로 나타내고,
    MAC(KMAC,M)=En(KMAC,h)이며,
    상기 MAC(KMAC,M)은 메시지 M의 메시지 인증코드 생성용 비밀키 KMAC을 이용한 메시지 인증 코드값을 나타내며, 이를 En(KMAC,h)와 같이 계산하는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 단계(a)에서, 상기 각각의 메시지 블록은 M의 앞부분부터 순차적으로 n비트씩 나누어 m1,...,mk으로 나타내고 M의 전체 길이가 n의 배수가 아닐 경우 마지막 블록에 비트열을 추가하여 mk의 길이가 n비트가 되도록 하는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
  6. 제5항에 있어서,
    메시지 M의 전체 길이가 n의 배수가 아닐 경우, 마지막 블록에 비트 1을 하나 추가하고 0으로 이루어진 연속된 비트열 0...0을 추가하여 마지막 블록의 길이가 n비트가 되도록 하는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
  7. 삭제
  8. 스트림 암호를 이용한 인증 암호화 방법으로서,
    (a). 평문 M과 메시지 인증 코드 생성용 비밀키 KMAC를 입력하여 상기 평문 M에 대한 메시지 인증 코드 MAC(KMAC,M)를 생성하는 메시지 인증 코드 생성단계와;
    (b). 상기 단계 (a)에서 계산된 MAC(KMAC,M)을 스트림 암호 초기값(IV)으로 설정하는 설정단계와;
    (c). 상기 스트림 암호 초기값(IV)인 상기 메시지 인증 코드 MAC(KMAC,M)와 메시지 암호화용 비밀키 KENC를 이용하여 n비트의 키 수열을 생성하는 키 수열생성단계와;
    (d). 상기 생성된 키 수열과 상기 평문 M을 배타적 논리합하여 암호문(C)을 생성하는 암호문(C) 생성단계와;
    (e). 상기 암호문(C)을 출력하는 출력단계를 포함하여 이루어지는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
  9. 인증 암호화된 메시지 인증 코드가 덧붙여진 인증 암호문(IV,C)와 메시지 암호화용 비밀키 KENC 및 메시지 인증코드 생성용 비밀키 KMAC이 주어졌을 때 인증 복호화하는 방법으로서,
    (a) 스트림 암호 초기값(IV)과 메시지 암호화용 비밀키 KENC를 이용하여 키 수열을 생성하는 단계;
    (b) 상기 키 수열을 암호문 C와 배타적 논리합하여 평문 M을 생성하는 생성하는 단계를 포함하여 이루어지는 것을 특징으로 하는 스트림 암호를 이용한 인증 복호화 방법.
  10. 제9항에 있어서,
    (c) 상기 평문 M에 대한 메시지 인증 코드 MAC(KMAC,M)을 생성하는 단계;
    (d) 상기 암호 초기값(IV)와 상기 메시지 인증 코드 MAC(KMAC,M)이 일치하면 유효한 암호문(IV,C)으로 판정하고 상기 유효한 암호문(IV,C)에 대한 평문 M을 출력하는 단계를 더 포함하여 이루어지는 것을 특징으로 하는 스트림 암호를 이용한 인증 복호화 방법.
  11. 제10항에 있어서,
    상기 단계(d)에서 상기 암호 초기값(IV)와 상기 메시지 인증 코드MAC(KMAC,M)이 일치하지 않으면 오류 메시지를 출력하는 것을 특징으로 하는 스트림 암호를 이용한 인증 복호화 방법.
  12. 제10항 또는 제11항에 있어서,
    상기 단계(c)는 상기 평문 M과 메시지 인증 코드 생성용 비밀키 KMAC로부터 상기 평문 M에 대한 상기 메시지 인증 코드 MAC(KMAC,M)을 생성하는 것을 특징으로 하는 스트림 암호를 이용한 인증 복호화 방법.
KR1020070081305A 2006-11-13 2007-08-13 스트림 암호를 이용한 메시지 인증 코드 생성 방법과스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를이용한 인증 복호화 방법 KR100930577B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007293657A JP4712017B2 (ja) 2006-11-13 2007-11-12 ストリーム暗号を利用したメッセージ認証コード生成方法とストリーム暗号を利用した認証暗号化方法及びストリーム暗号を利用した認証復号化方法
US11/938,334 US8090098B2 (en) 2006-11-13 2007-11-12 Method of generating message authentication code using stream cipher and authentication/encryption and authentication/decryption methods using stream cipher
CN200710164675XA CN101202623B (zh) 2006-11-13 2007-11-13 消息验证码产生方法、验证/加密和验证/解密方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20060111862 2006-11-13
KR1020060111862 2006-11-13

Publications (2)

Publication Number Publication Date
KR20080043217A KR20080043217A (ko) 2008-05-16
KR100930577B1 true KR100930577B1 (ko) 2009-12-09

Family

ID=39517606

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070081305A KR100930577B1 (ko) 2006-11-13 2007-08-13 스트림 암호를 이용한 메시지 인증 코드 생성 방법과스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를이용한 인증 복호화 방법

Country Status (2)

Country Link
KR (1) KR100930577B1 (ko)
CN (1) CN101202623B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101596753B1 (ko) * 2014-10-02 2016-02-23 현대자동차주식회사 메시지 인증 코드 분할을 통한 순차적 can 패킷 인증 방법 및 그 장치
WO2023150248A1 (en) * 2022-02-03 2023-08-10 Atna-Cipher Llc Systems and methods for an authenticating, threading, normalizing-iv and auto-keying (atna) cipher-mode

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX2011001228A (es) 2008-08-19 2011-03-25 Nxp Bv Metodo para generar un codigo de autenticacion de mensajes basados en el cifrado.
CN101478548B (zh) * 2009-01-22 2012-07-04 上海交通大学 数据传输的加密和完整性校验方法
EP2290872B1 (en) 2009-08-27 2014-06-18 Nxp B.V. Device for generating a message authentication code for authenticating a message
CN102143490B (zh) * 2010-01-28 2013-07-31 联芯科技有限公司 一种lte系统中生成消息验证码的方法及装置
CN102945428A (zh) * 2012-10-22 2013-02-27 北京印刷学院 单参数三维加密二进制防伪印刷方法
CN102946315B (zh) * 2012-11-19 2015-08-26 成都卫士通信息产业股份有限公司 一种采用分组方式构造mac码的方法及系统
KR101447554B1 (ko) * 2013-11-08 2014-10-08 한국전자통신연구원 암호화된 파일을 복호화하는 장치 및 그 방법
CN104966111B (zh) * 2015-06-04 2018-01-26 中国电力科学研究院 一种基于射频加密技术的低压互感器防伪系统和方法
DE102016219926A1 (de) * 2016-10-13 2018-04-19 Siemens Aktiengesellschaft Verfahren, Sender und Empfänger zum Authentisieren und zum Integritätsschutz von Nachrichteninhalten
KR101966088B1 (ko) * 2017-04-06 2019-04-05 상명대학교산학협력단 Iot 응용에 최적화된 인증 암호 장치 및 방법
KR101978777B1 (ko) * 2017-08-28 2019-05-15 전주대학교 산학협력단 다양한 암호화 방식을 조합한 암호화 장치 및 방법
CN110022320B (zh) * 2019-04-08 2020-12-18 北京纬百科技有限公司 一种通信配对方法及通信装置
CN113489623B (zh) * 2021-06-30 2022-07-01 北京达佳互联信息技术有限公司 验证码测试方法、装置、电子设备、存储介质及程序产品

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040252836A1 (en) 2003-06-03 2004-12-16 Hirotaka Yoshida Message-authenticated encryption apparatus or decryption apparatus for common-key cipher
US20050213752A1 (en) 2004-02-17 2005-09-29 Phillip Hawkes Stream cipher encryption and message authentication

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040252836A1 (en) 2003-06-03 2004-12-16 Hirotaka Yoshida Message-authenticated encryption apparatus or decryption apparatus for common-key cipher
US20050213752A1 (en) 2004-02-17 2005-09-29 Phillip Hawkes Stream cipher encryption and message authentication

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101596753B1 (ko) * 2014-10-02 2016-02-23 현대자동차주식회사 메시지 인증 코드 분할을 통한 순차적 can 패킷 인증 방법 및 그 장치
US9729535B2 (en) 2014-10-02 2017-08-08 Hyundai Motor Company Method of sequentially authenticating CAN packets using divided MACS and apparatus for implementing the same
WO2023150248A1 (en) * 2022-02-03 2023-08-10 Atna-Cipher Llc Systems and methods for an authenticating, threading, normalizing-iv and auto-keying (atna) cipher-mode

Also Published As

Publication number Publication date
CN101202623A (zh) 2008-06-18
CN101202623B (zh) 2012-05-23
KR20080043217A (ko) 2008-05-16

Similar Documents

Publication Publication Date Title
KR100930577B1 (ko) 스트림 암호를 이용한 메시지 인증 코드 생성 방법과스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를이용한 인증 복호화 방법
JP4712017B2 (ja) ストリーム暗号を利用したメッセージ認証コード生成方法とストリーム暗号を利用した認証暗号化方法及びストリーム暗号を利用した認証復号化方法
US6973187B2 (en) Block encryption method and schemes for data confidentiality and integrity protection
Delfs et al. Introduction to cryptography
US7054445B2 (en) Authentication method and schemes for data integrity protection
US8712036B2 (en) System for encrypting and decrypting a plaintext message with authentication
US7715553B2 (en) Encrypting a plaintext message with authentication
US20020048364A1 (en) Parallel block encryption method and modes for data confidentiality and integrity protection
WO2010131563A1 (ja) タグ生成装置、タグ検証装置、通信システム、タグ生成方法、タグ検証方法および記録媒体
Delfs et al. Symmetric-key cryptography
AlAhmad et al. Broad view of cryptographic hash functions
CN110855425A (zh) 一种轻量级多方协同sm9密钥生成、密文解密方法与介质
Sahu et al. Cryptanalytic Attacks on International Data Encryption Algorithm Block Cipher.
Balasubramanian Hash functions and their applications
Abutaha et al. New one way hash algorithm using non-invertible matrix
Bartkewitz Building hash functions from block ciphers, their security and implementation properties
WO2022172041A1 (en) Asymmetric cryptographic schemes
Tiwari et al. Cryptographic hash function: an elevated view
Rogobete et al. Hashing and Message Authentication Code Implementation. An Embedded Approach.
Ma et al. Fast Correlation Attacks on K2 Stream Cipher
Walker et al. RECENT CONTRIBUTIONS TO CRYPTOGRAPHIC HASH FUNCTIONS.
Harba Secure Data Encryption by Combination AES, RSA and HMAC
Dharani et al. Quantum Resistant Cryptographic Systems for Blockchain Network
Nag et al. DSA security enhancement through efficient nonce generation
Jakimoski et al. On efficient message authentication via block cipher design techniques

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140916

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161118

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee