KR100930577B1 - 스트림 암호를 이용한 메시지 인증 코드 생성 방법과스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를이용한 인증 복호화 방법 - Google Patents
스트림 암호를 이용한 메시지 인증 코드 생성 방법과스트림 암호를 이용한 인증 암호화 방법 및 스트림 암호를이용한 인증 복호화 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3242—Cryptographic 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
본 발명은 스트림 암호(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를 이용하여 메시지 인증 코드를 으로 생성한다. 여기서 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)에 대하여 다음의 수학식 으로 계산되는 것이 좋다. 단계 (c)의 각각의 중간 계산값을 합한 중간 계산값(h)은 다음의 수학식, 으로 계산되는 것이 좋다. 상기 단계 (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비트가 되도록 한다.
상기 메시지 블록 m1,...,mk(21,...,23) 각각의 길이가 n의 배수가 아닌 경우 각각의 메시지 블록에 100...0을 추가하여 각각의 메시지 블록의 길이가 n의 배수가 되도록 한다. 구체적으로는, 상기 k개로 나누어진 메시지 블록을 포함하는 입력 메시지 M의 전체 길이가 n의 배수가 아닐 경우, 즉, 마지막 k번째 블록이 n비트가 되지 않을 경우, 마지막 블록에 비트 1을 하나 추가하고 0으로 이루어진 연속된 비트열 0...0을 추가하여 마지막 블록의 길이가 n비트가 되도록 한다.
2. 각 i=1,...,k에 대하여 중간 계산값 (i=1, 2, ..., k)을 계산한다. 메시지 인증 코드를 생성하기 위해 소요되는 대부분의 시간은 단계 2를 위해 필요하며 단계 2의 계산은 병렬적으로 이루어질 수 있다. 즉, k개의 키 수열 생성부(100)는 각각의 메시지 블록 m1,...,mk(21,...,23) 계산에 사용되는 비밀키(24,...,26)를 받아 중간 계산값 을 계산한다. 이때 KMAC는 메시지 인증 코드 생성용 비밀키이며, En(K, mi)는 m1, m2, ..., m3의 메시지를 K를 키로 하여 상기 키 수열 생성부(100)에서 수행하는 암호화 알고리즘이다.
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)
- 메시지 인증 코드 MAC를 생성하는 방법으로서,(a) 입력 메시지 M을 k개의 n비트 메시지 블록 m1,m2,...,mk으로 나누는 단계와;(b) 메시지 인증 코드 생성용 비밀키 KMAC와 상기 단계 (a)에서 나누어진 상기 메시지의 블록의 갯수(k)에 대응하는 숫자의 배타적 논리합된 결과를 키로하여 상기 나누어진 상기 입력 메시지의 각각의 메시지 블록을 병렬로 암호화하여 각각의 중간 계산값(hi)을 계산하는 단계와;(c) 상기 단계 (b)의 결과값으로 나온 각각의 중간 계산값을 배타적 논리합하는 배타적 논리합 계산단계와;(d) 상기 단계 (c)의 배타적 논리합한 결과값을 상기 메시지 인증 코드 생성용 비밀키 KMAC를 이용하여 키 수열 생성부로 암호화하여 메시지 인증 코드 MAC(KMAC,M)를 생성하는 단계를 포함하여 이루어지며,상기 k 및 n은 자연수인 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
- 제3항에 있어서,상기 단계 (d)의 메시지 인증 코드는,다음의 수학식으로 나타내고,MAC(KMAC,M)=En(KMAC,h)이며,상기 MAC(KMAC,M)은 메시지 M의 메시지 인증코드 생성용 비밀키 KMAC을 이용한 메시지 인증 코드값을 나타내며, 이를 En(KMAC,h)와 같이 계산하는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
- 제1항 내지 제4항 중 어느 한 항에 있어서,상기 단계(a)에서, 상기 각각의 메시지 블록은 M의 앞부분부터 순차적으로 n비트씩 나누어 m1,...,mk으로 나타내고 M의 전체 길이가 n의 배수가 아닐 경우 마지막 블록에 비트열을 추가하여 mk의 길이가 n비트가 되도록 하는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
- 제5항에 있어서,메시지 M의 전체 길이가 n의 배수가 아닐 경우, 마지막 블록에 비트 1을 하나 추가하고 0으로 이루어진 연속된 비트열 0...0을 추가하여 마지막 블록의 길이가 n비트가 되도록 하는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
- 삭제
- 스트림 암호를 이용한 인증 암호화 방법으로서,(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)을 출력하는 출력단계를 포함하여 이루어지는 것을 특징으로 하는 스트림 암호를 이용한 메시지 인증 코드 생성 방법.
- 인증 암호화된 메시지 인증 코드가 덧붙여진 인증 암호문(IV,C)와 메시지 암호화용 비밀키 KENC 및 메시지 인증코드 생성용 비밀키 KMAC이 주어졌을 때 인증 복호화하는 방법으로서,(a) 스트림 암호 초기값(IV)과 메시지 암호화용 비밀키 KENC를 이용하여 키 수열을 생성하는 단계;(b) 상기 키 수열을 암호문 C와 배타적 논리합하여 평문 M을 생성하는 생성하는 단계를 포함하여 이루어지는 것을 특징으로 하는 스트림 암호를 이용한 인증 복호화 방법.
- 제9항에 있어서,(c) 상기 평문 M에 대한 메시지 인증 코드 MAC(KMAC,M)을 생성하는 단계;(d) 상기 암호 초기값(IV)와 상기 메시지 인증 코드 MAC(KMAC,M)이 일치하면 유효한 암호문(IV,C)으로 판정하고 상기 유효한 암호문(IV,C)에 대한 평문 M을 출력하는 단계를 더 포함하여 이루어지는 것을 특징으로 하는 스트림 암호를 이용한 인증 복호화 방법.
- 제10항에 있어서,상기 단계(d)에서 상기 암호 초기값(IV)와 상기 메시지 인증 코드MAC(KMAC,M)이 일치하지 않으면 오류 메시지를 출력하는 것을 특징으로 하는 스트림 암호를 이용한 인증 복호화 방법.
- 제10항 또는 제11항에 있어서,상기 단계(c)는 상기 평문 M과 메시지 인증 코드 생성용 비밀키 KMAC로부터 상기 평문 M에 대한 상기 메시지 인증 코드 MAC(KMAC,M)을 생성하는 것을 특징으로 하는 스트림 암호를 이용한 인증 복호화 방법.
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)
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)
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)
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 |
-
2007
- 2007-08-13 KR KR1020070081305A patent/KR100930577B1/ko not_active IP Right Cessation
- 2007-11-13 CN CN200710164675XA patent/CN101202623B/zh not_active Expired - Fee Related
Patent Citations (2)
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)
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 |