KR100441397B1 - 메시지의 인증 및 암호화 방법 - Google Patents

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

Info

Publication number
KR100441397B1
KR100441397B1 KR10-2002-0067047A KR20020067047A KR100441397B1 KR 100441397 B1 KR100441397 B1 KR 100441397B1 KR 20020067047 A KR20020067047 A KR 20020067047A KR 100441397 B1 KR100441397 B1 KR 100441397B1
Authority
KR
South Korea
Prior art keywords
value
message
calculated
signature
parameter
Prior art date
Application number
KR10-2002-0067047A
Other languages
English (en)
Other versions
KR20040038166A (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 KR10-2002-0067047A priority Critical patent/KR100441397B1/ko
Publication of KR20040038166A publication Critical patent/KR20040038166A/ko
Application granted granted Critical
Publication of KR100441397B1 publication Critical patent/KR100441397B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/3247Cryptographic 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 involving digital signatures
    • H04L9/3252Cryptographic 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 involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Abstract

본 발명은 보안 및 인증 통신(secure and authenticated communication)에 있어서, 특히 디지털 메시지에 대한 전자서명과 암호화를 실현하기 위한 메시지의 인증 및 암호화 방법에 관한 것으로, 현재 가장 널리 이용되는 표준화된 전자서명 알고리즘 중 하나인 DSA를 이용하여 서명 검증이 가능하도록 하고, 또한 안전성은 유지되면서 전자서명 및 암호화 알고리즘의 모듈러 연산의 개수를 줄여, 전체 알고리즘의 속도를 향상시킬 있도록 한 발명이다.

Description

메시지의 인증 및 암호화 방법{message encryption and authentication method}
본 발명은 보안 및 인증 통신(secure and authenticated communication)에관한 것으로, 특히 디지털 메시지에 대한 전자서명과 암호화를 실현하기 위한 메시지의 인증 및 암호화 방법에 관한 것이다.
통신 기술이 발달하면서 디지털 메시지의 사용이 증가되었다. 그에 따라 보안 및 인증 통신을 위한 공개키 암호문이 사용되었는데, 이는 메시지의 위조를 방지하고 또한 메시지의 기밀성을 유지하기 위한 것이었다.
결국 인간은 상대방을 만나지 않더라도, 인터넷과 같은 통신 네트워크를 통해, 안전하고 공식화된 방식으로 통신할 수 있게 되었다.
그러나 이러한 통신 환경 하에서 보다 안전하고 공식화된 방식으로 디지털 메시지를 전달하기 위해서는 기본적인 문서(메시지 내용)에 대한 다음의 요구조건들이 필수적이다.
그 요구조건들은 전송되는 디지털 메시지를 안전하게 보호하기 위한 것으로써, 기밀성과 무결성과 인증성과 부인방지이다.
기밀성이란, 메시지를 도청으로부터 보호하기 위한 조건으로, 암호문으로부터 원래의 평문을 볼 수 없도록 해야 한다는 요구조건이다.
무결성이란, 메시지에 대한 변조(위조)를 막아야 한다는 요구조건이다.
인증성이란, 메시지의 송신자를 확인할 수 있어야 한다는 요구조건이다.
부인방지란, 전자상거래에서와 같이 전송 메시지(계약서나 구입신청서 등)에 대한 부인방지가 요구되는 경우에, 메시지를 전송한 자가 사후에 그 전송 사실을 부인할 수 없도록 해야 한다는 요구조건이다.
1970년대 중반 이후에는 상기 나열된 요구조건들을 만족시키기 위해 공개키암호화 기술이 발표되었다.
공개키 암호화 기술은 대표적으로 암호화와 전자서명으로 나눌 수 있는데, (공개키)암호화는 기밀성을 만족시키기 위한 것이고, (공개키)전자서명은 무결성과 인증성 그리고 부인방지를 만족시키기 위한 것이다.
따라서 기존의 전형적인 메시지 보호 방식은, 메시지에 대한 기밀성과 무결성과 인증성 그리고 부인방지를 모두 만족시키기 위해, 암호화와 전자서명을 함께 적용시켰다.
그의 대표적인 방식으로는 전자서명 후 암호화(Signature-then-Encryption ; 이하, StE라 약칭함) 방식이 있었다.
StE 방식은 디지털 전자서명 구조(digital signature scheme)를 사용하여 메시지의 송신자가 메시지를 보내기 이전에 그 메시지에 미리 전자서명하고, 이어서 랜덤하게 선택된 메시지 암호화 키(message encryption key)를 키 암호화 알고리즘(key encryption algorithm)에 사용하여 상기 서명된 메시지를 암호화하는 방식이다.
결국 메시지 m에 대한 메시지 송신자(sender)의 전자서명을이라 하고, 메시지 m을 메시지 송신자(recipient)의 공개키로 암호화한 것을이라 할 때, StE 방식으로 메시지를 전자서명하고 암호화한다면 다음 식 1과 같다.
상기한 StE 방식은 전자우편 보안을 포함한 매우 많은 종류의 어플리케이션에 이용되고 있다.
그러나 StE 방식과 같이 암호화와 전자서명을 개별적으로 수행하는 메시지 보호 방식의 경우에는 암호화 및 전자서명 과정에서 수행해야될 수학적 계산량이 매우 많다는 문제점이 있다. 이는 기본적으로 공개키 암호화 알고리즘의 특성 때문이다. 따라서 암호화 및 전자서명의 연산을 보다 효과적으로 개선해야 한다는 필요성이 제기되었다.
그에 따른 것이 챙(Zheng)의 "Signcryption" 방식이다. 이 "Signcryption"은 하나의 연산으로 전자서명과 암호화를 모두 수행해주는 새로운 개념의 암호화 알고리즘이다.
챙(Zheng)이 제안한 "Signcryption" 방식은 StE 방식의 속도를 개선하기 위한 새로운 암호함수를 사용하였다.
또한 챙(Zheng)의 "Signcryption" 방식은 매우 일반적이며 다음의 특성-1을 갖는 전자서명함수에는 적용이 가능하다.
[특성-1]: 메시지 m의 서명에 대해 m값을 모르더라도 서명 값으로부터 메시지를 구성하는 하나의 파라미터인 메시지 파라미터() 값을 계산할 수 있어야 한다.
챙(Zheng)이 "Signcryption" 방식을 제안한 후에 여러 종류의 연구들이 이어졌다.
그 연구들 중 하나는, 챙(Zheng)의 "Signcryption" 방식을 이용하여 부인방지를 할 경우에, 부인방지를 처리하는 과정에서 이전 메시지에 대한 기밀성이 깨진다는 단점을 해결하기 위한 것이 있었다. 그것이 바오(Bao)와 댕(Deng)이 제안한 방식이다.
바오(Bao)와 댕(Deng)이 제안한 "Signcryption" 방식은 일반적인 전자서명과 같이 서명 생성자(메시지 송신자)의 공개키(public key)를 사용하여 서명 검증이 가능하도록 하였다.
이어서 염(Yum)과 리(Lee)는 바오(Bao)와 댕(Deng)이 제안한 방식을 확장하였다.
즉 바오(Bao)와 댕(Deng)이 제안한 방식은 서명 생성자의 서명을 검증함에 있어서 표준화된 전자서명 알고리즘에 기초하고 있지 않기 때문에, 실제 필드에서 부인방지 효과를 얻기 위해서는 별도의 인프라구조(Infrastructure)가 요구된다는 단점이 있었다. 그에 대해 염(Yum)과 리(Lee)는 표준화된 전자서명 알고리즘 중 하나인 KCDSA(한국 표준 전자서명 함수)를 이용하여 서명 검증이 가능한 "Signcryption" 방식을 제안하였다.
그러나 상기한 종래의 "Signcryption" 방식들이 지금까지 진화해 오면서 해결하지 못한 다음과 같은 문제점들이 있다.
첫 째, 메시지의 길이가 충분하지 못할 경우에 암호문으로부터 원래 평문의 유추가 가능하다고 알려져 있다. 그에 따라 메시지의 기밀성을 만족시키지 못한다.
둘 째, 현재 가장 널리 이용되는 표준화된 전자서명 중 하나인 디지털 암호화 표준(Digital Encryption Standard ; 이하, DSA 라 약칭함)을 이용하여 서명 검증이 불가능하다는 것이다. 부연하여 설명하면, 챙(Zheng)이나 바오(Bao)와 댕(Deng)이 제안한 방식은 서명 생성자의 서명을 검증할 때 표준화된 전자서명 알고리즘에 기초하고 있지 않다. 그 때문에 실제 필드에서 실효성이 떨어진다. 물론 염(Yum)과 리(Lee)가 제안한 방식은 표준화된 전자서명 알고리즘 중 하나인 KCDSA를 이용하여 서명 검증이 가능하지만 KCDSA는 DSA보다 범용성이 떨어진다.
셋 째, 공개키 암호화 알고리즘의 속도를 결정짓는 연산들의 수학적 계산량이 기존의 "Signcryption" 방식에서는 더 많이 요구된다는 것이다. 부연하여 설명하면, 공개키 암호화 알고리즘의 연산 과정에서 가장 오랜 계산 시간이 요구되는 연산들은, 계산 시간이 오래 걸리는 것부터 순서대로, 모듈러 지수승(modular exponentiation) 계산과 모듈러 나눗셈(modular division)과 모듈러 곱셈(modular multiplication)과 모듈러 덧셈(modular addition) 들이다. 결국 앞으로는 기존의 StE 방식의 안전성을 유지하면서 기존의 "Signcryption" 방식보다 모듈러 연산 개수를 줄이는 방안이 요구될 것이다.
따라서 본 발명은 상기한 점들을 감안하여 안출한 것으로써, 현재 가장 널리 이용되는 표준화된 전자서명 알고리즘 중 하나인 DSA를 이용하여 서명 검증이 가능하고, 또한 안전성은 유지되면서 공개키 암호화 알고리즘의 속도를 결정짓는 모듈러 연산들의 개수를 줄인 메시지의 인증 및 암호화 방법을 제공하는데 그 목적이있다.
상기한 목적을 달성하기 위한 본 발명에 따른 메시지 인증 및 암호화 방법은, 큰 소수 p와, (p-1)을 나누는 큰 소수 q와,을 만족하는 1부터 (p-1) 사이의 수 g를 도메인 파라미터로 사용하는 메시지 인증 및 암호화 방법에 있어서, 1부터 (q-1) 사이의 정수 집합에서 선택된 하나의 난수(x)와 상기 도메인 파라미터들을 사용하여, 전송될 서명암호화 값을 유도하기 위한 다수의 메시지 파라미터들(k, K, r,)을 계산하는 제1단계; 전송될 메시지(m)의 해쉬함수 값과 상기 계산된 하나의 메시지 파라미터를 사용하여, 제1 서명암호화 값()을 계산하는 제2단계; 상기 계산된 복수 개의 메시지 파라미터를 사용하여, 제2 서명암호화 값()을 계산하는 제3단계; 상기 계산된 하나의 메시지 파라미터를 암호화 키로 사용하여, 전송될 메시지(m)를 암호화한 제3 서명암호화 값(c)을 계산하는 제4단계; 그리고, 상기 계산된 서명암호화 값들(,,c)을 수신측에 전송하는 제5단계로 이루어지는 것이 특징이다.
보다 바람직하게, 상기 제1단계가, 상기 q를 상기 난수(x)의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제1 메시지 파라미터(k)가 계산되고, 메시지 수신자(recipient)의 공개키()를 상기 난수(x)의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제2 메시지 파라미터(K)가 계산되고, 상기 계산된 제1 메시지 파라미터(k)에 대해, 상기 q로 모듈러 연산을 취하여 제3 메시지 파라미터(r)가 계산되고, 상기 계산된 제3 메시지 파라미터(r)에 메시지송신자(sender)의 개인키()를 곱한 값()과 전송될 메시지(m)에 대한 해쉬함수 값을 더하고, 그 더한 값으로 상기 난수(x)를 나눈 값에 대해, 상기 q로 모듈러 연산을 취하여 제4 메시지 파라미터()가 계산되는 단계인 것이 특징이다.
상기에서 제2단계가, 상기 전송될 메시지(m)에 대한 해쉬함수 값과 상기 계산된 제4 메시지 파라미터()를 곱하고, 그 곱한 값에 대해 상기 q로 모듈러 연산을 취하여 상기 제1 서명암호화 값()이 계산되는 단계인 것이 특징이다. 또한 상기 제3 단계가, 상기 계산된 제3 메시지 파라미터(r)와 상기 제4 메시지 파라미터()를 곱하고, 그 곱한 값에 대해 상기 q로 모듈러 연산을 취하여 상기 제2 서명암호화 값()이 계산되는 단계인 것이 특징이다. 또한 상기 제4 단계가, 대칭키 암호화 알고리즘에 상기 계산된 제2 메시지 파라미터(K)를 암호화 키로 사용하여, 전송될 메시지(m)를 암호화한 제3 서명암호화 값(c)이 계산되는 단계인 것이 특징이다.
보다 바람직하게, 상기 제1 내지 제3 서명암호화 값(,,c)과 미리 알려진 메시지 송신자(sender)의 공개키()와 메시지 수신자의 개인키()와 상기 도메인 파라미터들을 사용하여, 상기 메시지 송신자의 서명암호화 값을 검증하기 위한 다수의 검증 파라미터들이 순차적으로 계산되는 (a)단계와, 상기 계산된 어느 하나의 검증 파라미터로 상기 제3 서명암호화 값(c)이 복호화되는 (b)단계와, 수신된 메시지(m)의 해쉬함수 값과 상기 제2 서명암호화 값()의 곱셈 값에 대해상기 q로 모듈러 연산을 취한 값과, 상기 계산된 최종 검증 파라미터의 동일 여부에 따라, 상기 메시지 송신자의 서명암호화 값이 검증되는 (c)단계가 더 포함되는 것이 특징이다.
상기에서 (a)단계가, 상기 g를 상기 제1 서명암호화 값()의 회수만큼 곱한 값()과, 상기 메시지 송신자(sender)의 공개키()를 상기 제2 서명암호화 값()의 회수만큼 곱한 값()에 대해, 상기 p로 모듈러 연산을 취하여 제1 검증 파라미터가 계산되고, 상기 계산된 제1 검증 파라미터를 상기 메시지 수신자 개인키() 값의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제2 검증 파라미터가 계산되고, 상기 계산된 제1 검증 파라미터에 대해, 상기 q로 모듈러 연산을 취하여 제3 검증 파라미터가 계산되고, 상기 계산된 제3 검증 파라미터와 상기 제1 서명암호화 값()의 곱셈 값에 대해, 상기 q로 모듈러 연산을 취하여 최종 검증 파라미터가 계산되는 단계인 것이 특징이다.
상기에서 (b)단계가, 상기 계산된 제2 검증 파라미터로 상기 제3 서명암호화 값(c)이 복호화되는 단계인 것이 특징이다.
보다 바람직하게, 상기 제1단계가, 키 유도 함수(KDF)를 사용하여 미리 계산된 메시지 파라미터(K)의 해쉬함수 값을 복수 개로 파생시키고, 그 파생 값을 메시지(m)와 함께 사용하여 다음의 메시지 파라미터()가 계산되는 단계인 것이 특징이다. 여기서 메시지 송신자 및 메시지 수신자의 신원을 나타내는 값을 더 사용하여 상기 메시지 파라미터()가 계산된다. 특히 메시지 송신자 및 메시지 수신자의 신원을 나타내는 값으로 공개키 및/또는 공개키 인증서가 더 사용된다.
도 1은 DSA에서 메시지 송신자가 메시지에 서명을 생성하는 과정과 수신된 메시지에 대해 서명을 검증하는 과정을 나타낸 다이어그램.
도 2는 EIGamal 암호화 방식을 기반으로 하여, 메시지 송신자가 메시지(m)를 암호화하는 과정과 메시지 수신자가 수신된 암호문을 복호화하는 과정을 나타낸 다이어그램.
도 3은 SDSS1 전자서명 알고리즘에 따라, 전자서명 생성자가 서명을 생성하는 과정과 그 생성자의 전자서명에 대해 검증하는 과정을 나타낸 다이어그램.
도 4는 챙(Zheng)의 "signcryption" 방식에 따라, 메시지에 대해 메시지 송신자로부터 메시지 수신자에게 전달될 서명암호화 값들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램.
도 5는 바오(Bao)와 댕(Deng)의 "signcryption" 방식에 따라, 메시지에 대해 메시지 송신자로부터 메시지 수신자에게 전달될 서명암호화 값들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램.
도 6은 본 발명의 제1 실시 예에 따른 메시지에 대해 메시지 송신자로부터 메시지 수신자에게 전달될 서명 값들의 생성 과정과 그 서명 값에 대한 검증 과정을 나타낸 다이어그램.
도 7은 본 발명의 제2 실시 예에 따른 메시지에 대해 메시지 송신자로부터 메시지 수신자에게 전달될 서명 값들의 생성 과정과 그 서명 값에 대한 검증 과정을 나타낸 다이어그램.
도 8은 본 발명의 제3 실시 예에 따른 메시지에 대해 메시지 송신자로부터 메시지 수신자에게 전달될 서명암호화 값들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램.
도 9는 본 발명의 제4 실시 예에 따른 메시지에 대해 메시지 송신자로부터 메시지 수신자에게 전달될 서명암호화 값들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램.
도 10은 본 발명의 제5 실시 예에 따른 메시지에 대해 메시지 송신자로부터 메시지 수신자에게 전달될 서명암호화 값들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램.
도 11은 본 발명의 제6 실시 예에 따른 메시지에 대해 메시지 송신자로부터 메시지 수신자에게 전달될 서명암호화 값들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램.
본 발명의 다른 목적, 특성 및 장점들은 첨부한 도면을 참조한 실시 예들의 상세한 설명을 통해 명백해질 것이다.
이하 본 발명에 따른 메시지 인증 및 암호화 방법의 바람직한 실시 예에 대하여 첨부한 도면을 참조하여 설명한다.
일단 본 발명에 대한 설명에 앞서서 정수이산대수문제(Discrete Logarithm Problem ; 이하, DLP라 약칭함) 기반 알고리즘에 대해 설명하고, 그 DLP 기반 전자서명 알고리즘 중에서 가장 많이 이용되는 DSA와 DLP 기반 암호화 알고리즘 중에서 가장 많이 이용되는 EIGamal에 대해 설명한다. 그리고 또한 본 발명과의 비교를 위해 기존에 제안된 "Signcryption" 방식들에 대해 먼저 설명한다.
1. DLP
DLP 기반 암호함수를 구성하는 도메인 파라미터(Domain parameter)인 (p, q, g) 값을 아래와 같이 정의한다.
p : 큰 소수(a large prime).
q : p-1을 나누는 큰 소수.
g : 1부터 p-1 사이의 정수 집합()의 원소이고,을 만족하는 값. 여기서 정수 집합()의 원소인 g의 위수(order)는를 만족하는 0(zero)이 아닌 가장 작은 값 o를 나타낸다. 이 경우에 o 값은 반드시 p-1을 나눈다. 그리고 g의 위수가 o라는 의미는 임의의 수 x나 k에 대해서값이와 같다는 것을 의미하며, 그에 대해 다음 식 2에 나타내었다.
따라서일 경우에,값과값은 동일하다.
상기에 정의된 도메인 파라미터들 (p, q, g) 값과값이 알려졌을 경우에, 그 값들을 이용하여 x 값을 찾아내는 것이 DLP이다.
DLP 기반 알고리즘에서 공개키를 생성하는 원리를 설명하면, 먼저 개인키 값()을 난수적으로 생성하고, 이어 그 개인키 값을 이용하여 공개키 값인을 계산한다. 그에 따라 공개키 값()이 알려진다 하더라도 개인키 값()은 노출되지 않도록 하는 것이 생성 원리이다.
암호화 알고리즘에서 DL을 이용할 경우에는, p-1을 나누는 큰 소수 q를 선택한 후에 g 값으로는 위수가 q인의 원소를 선택한다. 예로써, 보안성을 고려하여 p는 128바이트(1024비트) 그리고 q는 20바이트(160비트)인 소수 값이 많이 이용된다.
2. DSA
현재까지 제안된 DLP 기반 전자서명 알고리즘 중에서 가장 많이 이용되는 것이 DSA이다.
DSA에 대한 설명에 앞서 사용될 기호들에 대해 정의한다.
(p, q, g) : DL 기반 암호함수를 구성하는 도메인 파라미터.
: 메시지 송신자(sender)의 개인키()와 공개키().
: 메시지 수신자(recipient)의 개인키()와 공개키().
a, b : 두 개의 비트열(bit-string) a와 b를 연결(concatenation)한 값.
a·b : 두 수 a와 b를 곱한 값.
hash : 단방향 해쉬함수(SHA1이 널리 이용된다).
상기한 해쉬함수가 키를 유도하는 과정에 사용된다면, 해쉬 값의 길이를 늘리기 위해 해쉬함수를 이용하여 키 유도 함수(key derivation function ; 이하, KDF라 약칭함)를 구성하는 것이 가능하다. 이하에서 설명될 본 발명에서도 KDF를 이용한다.
(E, D) : 대칭키 암호화 함수와 복호화 함수를 나타낸다.
다음은 DSA에 대해 보다 상세히 설명한다.
도 1은 DSA에서 메시지 송신자(sender)가 메시지(m)에 서명을 생성하는 과정과 수신된 메시지에 대해 서명을 검증하는 과정을 나타낸 다이어그램이다.
메시지 m에 대한 메시지 송신자(sender)의 서명 생성 과정은 다음과 같다.
상기에서 이미 정의된의 원소 x를 난수적으로 선택한다(S1). 여기서는 1부터 q-1 사이의 정수들의 집합이다.
이어 난수적으로 선택된 x를 사용하여, 다음 식 3에 나타낸 것과 같이 서명에 사용될 첫 번째 메시지 파라미터 k 값을 계산한다(S2).
다시 계산된 k 값에 대해 모듈러 연산을 사용하여 다음 식 4에 나타낸 두 번째 메시지 파라미터 r 값을 계산한다(S3).
이어 상기에서 계산된 r 값과 서명 생성자(즉 메시지 송신자)의 개인키()를 곱하고, 그 곱한 값과 메시지 m에 대한 해쉬함수 값을 더하고, 그 더한 값을 난수적으로 선택된 x로 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 5에 나타낸 세 번째 메시지 파라미터 s 값을 계산한다(S4)
결국 메시지 m에 대한 서명 생성자인 메시지 송신자(sender)의 전자서명을로 나타낼 때,이다. 그에 따라 메시지 송신자(sender)로부터값이 메시지 수신자(recipient)에게 전달된다(S5).
상기한 DSA의 서명 생성 과정에서 모듈러 지수승 계산은 식 3에서 1번, 모듈러 나눗셈은 식 5에서 1번이 수행된다.
메시지 m에 대한 메시지 송신자(sender)의 전자서명()에 대해, 그 서명을 검증하는 과정은 다음과 같다.
다음 식 6과 같이, 메시지 m에 대한 해쉬함수 값 h를 계산한다(S6).
이어 상기 계산된 h 값을 메시지 송신자(sender)로부터 전달받은 s 값으로 나누고, 그 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 7의값을 계산한다(S7).
또한 메시지 송신자(sender)로부터 전달받은 s 값으로 또한 전달받은 r 값을 나누고, 그 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 8의값을 계산한다(S8).
상기에서 계산된값과값, 그리고 서명 생성자(메시지 송신자)의 공개키()에 대해 모듈러 연산을 사용하여 다음 식 9의 r' 값을 계산한다(S9).
결국 메시지 송신자로부터 전달받은 r 값과 상기 식 9에 계산된 r' 값이 동일 값인지를 비교한다(S10).
만약 r 값과 r' 값이 동일한 값이면, 메시지 송신자 전자서명의 검증이 성공한 것이다. 그렇지 않으면 그 메시지 송신자 전자서명의 검증이 실패한 것이다.
상기에서 설명된 DSA의 서명 검증 원리는 다음 식 10에 기초한다.
그리고 상기한 DSA의 서명 검증 과정에서 모듈러 지수승 계산은 식 9에서 2번, 모듈러 나눗셈도 각각 식 7과 식 8에서 1번씩 모두 2번이 수행된다.
3. EIGamal
현재까지 많은 종류의 DLP 기반 암호화 알고리즘이 제안되었다. 그리고 그들의 대부분은 EIGamal 암호화 방식을 기반으로 한다.
도 2는 EIGamal 암호화 방식을 기반으로 하여, 메시지 송신자(sender)가 메시지(m)를 암호화하는 과정과 메시지 수신자(recipient)가 수신된 암호문을 복호화하는 과정을 나타낸 다이어그램이다.
메시지 송신자(sender)가 메시지(m)를 암호화하는 과정은 다음과 같다. 여기서 메시지 송신자(sender)는 메시지 수신자(recipient)의 공개키로 메시지 m을 암호화한다.
상기에서 이미 정의된의 원소 x를 난수적으로 선택한다(S11). 여기서는 1부터 q-1 사이의 정수들의 집합이다.
이어 난수적으로 선택된 x를 사용하여, 다음 식 11에 나타낸 것과 같이 암호화에 사용될 첫 번째 메시지 파라미터 k 값을 계산한다(S12).
이어 메시지 수신자(recipient)의 공개키()를 사용하고, 난수적으로 선택된 x와 메시지 m에 대해 모듈러 연산을 사용하여 다음 식 12에 나타낸 두 번째 메시지 파라미터 c 값을 계산한다(S13).
결국 메시지 m에 대한 메시지 송신자(sender)의 암호문을로 나타낼 때,이다. 그에 따라 메시지 송신자(sender)로부터 암호문인값이 메시지 수신자(recipient)에게 전달된다(S14).
상기한 메시지 암호화 과정에서 모듈러 지수승 계산은 식 11과 식 12에서 각각 1번씩 모두 2번이 수행된다.
메시지 송신자(sender)로부터 수신된 암호문의 복호화 과정은 다음과 같다.
다음의 식 13에 나타낸 바와 같이, 메시지 수신자(recipient)의 개인키()를 사용하고, 전달받은 k에 대해 모듈러 연산을 사용하여 K 값을 계산한다(S15).
상기 계산된 K 값과 전달받은 c 값에 대해 모듈러 연산을 사용하여, 식 14에 나타낸 m' 값을 계산한다(S16).
상기에서 m' 값이 암호문을 복호화한 값이다.
상기한 메시지 복호화 과정에서 모듈러 지수승 계산은 식 13에서 1번 수행되고, 모듈러 나눗셈은 식 14에서 1번 수행된다.
상기에서 설명된 EIGamal 암호화 방식은 가장 일반적으로 알려진 방식이나 실제적으로는 암호화할 수 있는 메시지의 길이에 대한 제약을 받으므로, 그리 널리 이용되지는 않는다. 그 대신에 식 13에 나타낸 K 값()을 암호화 키로 하는 대칭키 암호화 알고리즘을 통해 메시지를 암호화하는 방식이 주로 사용된다.
따라서 대칭키 암호화 알고리즘을 사용할 경우에 암호화된 암호문의 형식은 다음 식 15와 같이 변형된다.
상기한 DLP에 기반한 알고리즘의 모듈러 계산량에 대해 정리한 것이 다음의 표 1이다.
DSA 서명 생성 DSA 서명 검증 EIGamal 암호화 EIGamal 복호화
모듈러 지수승 계산 1 2 2 1
모듈러 나눗셈계산 1 2 - 1
다음은 기존에 제안된 "signcryption" 방식들에 대해 설명한다.
4. 챙(Zheng)의 "signcryption" 방식
챙(Zheng)이 제안한 "signcryption" 방식은 전술된 특성-1(메시지 m의 서명에 대해 m값을 모르더라도 서명 값으로부터 메시지를 구성하는 하나의 파라미터인메시지 파라미터() 값을 계산할 수 있어야 한다.)을 갖는 전자서명함수에 적용가능하다. 그러나 DSA의 경우에는 상기한 특성-1을 만족하지 못한다.
따라서 챙(Zheng)은 DSA를 변형한 전자서명 알고리즘인 SDSS1을 새로이 만들어 사용하였다. 그 SDSS1 서명 값으로부터 DSA 서명 값을 생성하는 불가능하다. 결국 그 때문에 챙(Zheng)이 제안한 "signcryption" 방식이 DSA를 이용하여 서명 검증을 못하는 주된 이유이다.
챙(Zheng)이 제안한 "signcryption" 방식에 대한 설명에 앞서 SDSS1 전자서명 알고리즘에 대해 설명한다.
도 3은 SDSS1 전자서명 알고리즘에 따라, 전자서명 생성자(sender)가 서명을 생성하는 과정과 그 생성자의 전자서명에 대해 검증하는 과정을 나타낸 다이어그램이다.
SDSS1 알고리즘에서 메시지 m에 대한 전자서명 생성자(sender)의 서명 생성 과정은 다음과 같다.
상기 이미 정의된의 원소 x를 난수적으로 선택한다(S20). 여기서는 1부터 q-1 사이의 정수들의 집합이다.
이어 난수적으로 선택된 x를 사용하여, 다음 식 16에 나타낸 것과 같이 전자서명에 사용될 첫 번째 메시지 파라미터 k 값을 계산한다(S21).
상기에서 계산된 k 값과 메시지 m에 대해 다음의 식 17과 같이 두 번째 메시지 파리미터인 해쉬함수 값(r)을 계산한다(S22).
다음에는 상기 계산된 r 값과 난수적으로 선택된 x, 그리고 전자서명 생성자(sender)의 개인키()에 대해 모듈러 연산을 사용하여 다음 식 18과 같이 세 번째 메시지 파라미터 s 값을 계산한다(S23).
결국 메시지 m에 대한 전자서명 생성자(sender)의 전자서명을로 나타낼 때,이다. 그에 따라 전자서명 생성자(sender)로부터값이 메시지 수신자(recipient)에게 전달된다(S24).
상기한 SDSS1의 전자서명 생성 과정에서 모듈러 지수승 계산은 식 16에서 1번, 모듈러 나눗셈은 식 18에서 1번이 수행된다.
SDSS1 알고리즘에서 메시지 m에 대한 전자서명 생성자(sender)의 전자서명에 대해, 그 서명을 검증하는 과정은 다음과 같다.
다음 식 19와 같이, 전자서명 생성자(sender)로부터 전달받은 s 값과 r 값 그리고 전자서명 생성자(sender)의 공개키()를 사용하고, 모듈러 연산을 사용하여 k 값을 계산한다(S25).
그리고 구해진 k 값과 메시지 m에 대한 해쉬함수 값 r'을 다음 식 20과 같이 계산한다(S26).
결국 전자서명 생성자(sender)로부터 전달받은 r 값과 상기한 식 20에 계산된 r' 값이 동일 값인지를 비교한다(S27).
만약 r 값과 r' 값이 동일 값이면 전자서명 생성자 전자서명의 검증이 성공한 것이다. 그렇지 않으면 그 전자서명 생성자 전자서명의 검증이 실패한 것이다.
상기에서 설명된값은 전자서명 생성자(sender)의 공개키(), 그리고 r 값과 s 값의 정의로부터값을 만족한다. 그에 대한 증명 과정을 식 21에 나타내었다.
다음은 챙(Zheng)이 제안한 "signcryption" 알고리즘에 대해 설명한다.
도 4는 챙(Zheng)의 "signcryption" 방식에 따라, 메시지 m에 대해 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램이다.
메시지 m에 대한 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)의 생성 과정을 먼저 설명한다.
상기에서 이미 정의된의 원소 x를 난수적으로 선택한다(S30). 여기서는 1부터 q-1 사이의 정수들의 집합이다.
다음의 식 22에 나타낸 바와 같이, 메시지 수신자(recipient)의 공개키()에 대해 모듈러 연산을 사용하여 첫 번째 메시지 파라미터 K 값을 계산한다(S31).
이어 다음 식 23과 같이 상기 계산된 K 값에 대한 해쉬 값을 구한 다음에, 그 해쉬 값을 늘리기 위한 KDF를 사용하여, 그 해쉬 값을로 파생시킨다(S32).
상기 파생된 값 중 하나인값과 메시지 m에 대해 다음 식 24와 같이 두 번째 메시지 파라미터인 해쉬함수 값(r)을 계산한다(S33).
다음에는 상기 계산된 r 값과 난수적으로 선택된 x, 그리고 메시지 송신자(sender)의 개인키()에 대해 모듈러 연산을 사용하여 다음 식 25와 같이 세 번째 메시지 파라미터 s 값을 계산한다(S34).
그리고 다음에 다음 식 26과 같이 메시지 m에 대한 암호문을 계산한다(S35).
여기서값은 대칭키 암호화 알고리즘 E를 통해값을 암호화 키로 사용하여 메시지 m을 암호화한 것이다.
결국 메시지 m에 대해 메시지 송신자로부터 메시지 수신자에게 전달되는 서명암호화 값은 다음 식 27로써, 메시지 송신자로부터 서명암호화 값()이 메시지 수신자에게 전달된다(S36).
다음은 메시지 m에 대한 서명암호화 값의 검증 과정을 설명한다.
아래의 식 28에 나타낸 바와 같이, 메시지 송신자의 공개키()와 메시지 수신자의 개인키()를 생성 과정에서 계산된 서명암호화 값 r 값 및 s 값과 함께 사용하여 K 값을 계산한다(S37).
이어 다음 식 29와 같이 상기 계산된 K 값에 대한 해쉬 값을 구한 다음에, 그 해쉬 값을 늘리기 위한 KDF를 사용하여, 그 해쉬 값을로 파생시킨다(S38).
이어 다음 식 30과 같이 r' 값을 계산한다(S39)
결국 생성 과정에서 계산된 r 값과 상기 검증 과정에서 계산된 r' 값이 동일 값인지를 비교한다(S40).
만약 r 값과 r' 값이 동일한 값이면, 유효한 서명암호화 값으로 판정한다.
상기 챙(Zheng)이 제안한 "signcryption" 알고리즘의 서명암호화 값 생성 과정에서는 모듈러 지수승 계산이 1번, 모듈러 나눗셈이 1번 수행된다. 그리고 검증과정에서는 모듈러 지수승 계산이 2번 수행된다.
다음은 바오(Bao)와 댕(Deng)이 제안한 "signcryption" 알고리즘에 대해 설명한다.
5. 바오(Bao)와 댕(Deng)의 "signcryption" 방식
도 5는 바오(Bao)와 댕(Deng)의 "signcryption" 방식에 따라, 메시지 m에 대해 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램이다.
메시지 m에 대한 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)의 생성 과정을 먼저 설명한다.
상기에서 이미 정의된의 원소 x를 난수적으로 선택한다(S50). 여기서는 1부터 q-1 사이의 정수들의 집합이다.
이어 난수적으로 선택된 x를 사용하여 다음 식 31에 나타낸 것과 같이 첫 번째 메시지 파라미터 k 값을 계산한다(S51).
다음에는 식 32에 나타낸 바와 같이, 메시지 수신자(recipient)의 공개키()와 난수적으로 선택된 x를 사용하여 두 번째 메시지 파라미터 K 값을 계산한다(S52).
이어 상기 식 31에서 계산된 k 값과 메시지 m에 대한 해쉬 값을 계산하여 식 33과 같이 세 번째 메시지 파라미터 r 값을 계산한다(S53).
다음에는 상기 계산된 r 값과 난수적으로 선택된 x, 그리고 메시지 송신자(sender)의 개인키()에 대해 모듈러 연산을 사용하여 다음 식 34와 같이 네 번째 메시지 파라미터 s 값을 계산한다(S54).
그리고 다음에 다음 식 35와 같이 메시지 m에 대한 암호문을 계산한다(S55).
여기서값은 대칭키 암호화 알고리즘 E를 통해 식 32에서 계산된 K 값을 암호화 키로 사용하여 메시지 m을 암호화한 것이다.
결국 메시지 m에 대해 메시지 송신자로부터 메시지 수신자에게 전달되는 서명암호화 값은 다음 식 36에 나타낸 값으로써, 메시지 송신자로부터 서명암호화 값()이 메시지 수신자에게 전달된다(S56).
다음은 메시지 m에 대한 서명암호화 값의 검증 과정을 설명한다.
아래의 식 37에 나타낸 바와 같이, 메시지 송신자의 공개키()를 생성 과정에서 계산된 r 값 및 s 값과 함께 사용하여 k 값을 계산한다(S57).
메시지 수신자의 개인키()를 상기 식 37에서 계산된 k 값과 함께 사용하여 다음 식 38과 같이 K 값을 계산한다(S58).
다음에는 상기 식 38을 통해 계산된 K 값으로 생성 과정에서 계산된 c 값을 복호화한다(S59). 이 때 복호화는로 나타낸다.
이어 다음 식 39와 같이 r' 값을 계산한다(S60).
결국 생성 과정에서 계산된 r 값과 상기 검증 과정에서 계산된 식 50의 r' 값이 동일 값인지를 비교한다(S61).
만약 r 값과 r' 값이 동일한 값이면, 유효한 서명암호화 값으로 판정한다.즉 바오(Bao)와 댕(Deng)이 제안한 "signcryption" 방식은 식 38의 K 값을 이용하여 서명암호화 값의 생성 과정에서 계산된 c 값을 복호화함으로써 원래 평문을 유도해 내고, 이후에 서명암호화 값의 생성 과정에서 계산된 r 값과 s 값이 메시지 m에 대한 올바른 SDSS1 서명인지를 검증하는 방식이다.
상기 바오(Bao)와 댕(Deng)이 제안한 "signcryption" 알고리즘의 서명암호화 값 생성 과정에서는 모듈러 지수승 계산이 2번, 모듈러 나눗셈이 1번 수행된다. 그리고 검증 과정에서는 모듈러 지수승 계산이 3번 수행된다.
바오(Bao)와 댕(Deng)이 제안한 "signcryption" 방식은, 챙(Zheng)이 제안한 비 표준화된 전자서명 알고리즘인 SDSS1에 기반하고 있으므로, 표준화된 전자서명 검증 방식을 이용한 서명 검증이 불가능하다.
지금까지 설명된 내용을 참조하여 이하에서는 본 발명에 따른 메시지의 인증 및 암호화 방법을 설명한다.
본 발명에서는 DSA를 이용하여 서명 검증이 가능한 "signcryption" 방식을 위해서 특성-1(메시지 m의 서명에 대해 m값을 모르더라도 서명 값으로부터 메시지를 구성하는 하나의 파라미터인 메시지 파라미터() 값을 계산할 수 있어야 한다.)을 만족시킬 수 있는 전자서명 함수를 제안한다.
또한 전자서명 및 암호화 알고리즘의 속도가 결정되는 연산들의 수학적 계산량을 줄인 본 발명에 대해 이하 설명한다.
본 발명에서는 DSA의 변형된 형태인 MDSA(Modified DSA)에 기반한 서명 알고리즘과 SC-DSA(Signcryption-DSA)을 통해 메시지 인증 및 암호화를 실현한다.
여기서 본 발명에 따른 MDSA는 서명 생성자의 개인키가 알려지지 않은 상태에서 DSA 서명 값으로부터 MDSA 서명 값을 유도할 수 있도록 하고, 또한 MDSA 서명 값으로부터 DSA 서명 값을 유도할 수 있도록 설계된다.
그리고 본 발명에 따른 MDSA와 SC-DSA는 DSA를 이용하여 서명 검증이 가능하도록 설계된다.
도 6은 본 발명의 제1 실시 예에 따른 메시지 m에 대해 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명 값들의 생성 과정과 그 서명 값에 대한 검증 과정을 나타낸 다이어그램이다.
본 발명의 제1 실시 예에 따른 메시지 m에 대한 서명 생성자인 메시지 송신자(sender)의 전자서명 생성 과정은 다음과 같다.
먼저 상기에서 정의된의 원소 x를 난수적으로 선택한다(S100). 여기서는 1부터 q-1 사이의 정수들의 집합이다.
이어 난수적으로 선택된 x를 사용하여, 다음 식 40에 나타낸 것과 같이 서명에 사용될 첫 번째 메시지 파라미터 k 값을 계산한다(S101).
다시 계산된 k 값에 대해 모듈러 연산을 사용하여 다음 식 41에 나타낸 두 번째 메시지 파라미터 r 값을 계산한다(S102).
이어 상기에서 계산된 r 값과 서명 생성자(즉 메시지 송신자)의 개인키()를 곱하고, 그 곱한 값과 메시지 m에 대한 해쉬함수 값을 더하고, 그 더한 값을 난수적으로 선택된 x로 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 42에 나타낸 세 번째 메시지 파라미터 s 값을 계산한다(S103)
다음에 상기 식 42에서 구해진 s 값에 대한 역에 모듈러 연산을 사용하여 다음의 식 43에 나타낸 것과 같이값을 계산한다(S104).
이어 메시지 m에 대한 해쉬 값과 상기에서 구해진값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 사용하여 다음 식 44에 나타낸 것과 같이값을 계산한다(S105).
그리고 상기한 식 41에서 구해진 두 번째 메시지 파라미터 r 값과 상기한 식 43에서 구해진값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 사용하여 다음 식45와 같은값을 계산한다(S106).
결국 메시지 m에 대한 서명 생성자인 메시지 송신자(sender)의 전자서명을로 나타낼 때,이다. 그에 따라 메시지 송신자(sender)로부터값이 메시지 수신자(recipient)에게 전달된다(S107).
상기한 MDSA의 서명 생성 과정에서 모듈러 지수승 계산은 식 40에서 1번, 모듈러 나눗셈은 식 42와 식 43에서 각각 1번씩 모두 2번이 수행된다.
상기한 MDSA와 DSA의 차이점은 DSA의 경우에는 상기한 식 44와 식 45에 나타낸값과값을 서명 검증 과정에서 계산하였다. 또한 본 발명의 MDSA에서는 그값과값을 계산함에 있어서, 식 42에서 구해진 s 값에 대한 역에 모듈러 연산을 사용한값을 사용하여 계산한다. 그리고 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달되는 서명 값으로값과값을 사용한다.
본 발명에서 MDSA 서명 값의 생성 과정에서값과값을 계산하는 것은 전술된 특성-1을 만족하는데 필수적이다.
결국 이후에 설명된 서명 검증 과정은 DSA와 현저한 차이가 생긴다.
본 발명의 제1 실시 예에 따른 메시지 m에 대한 메시지 송신자(sender)의 전자서명()에 대해, 그 서명을 검증하는 과정은 다음과 같다.
전달받은 서명 값값과값, 그리고 서명 생성자(메시지 송신자)의 공개키()에 대해 모듈러 연산을 사용하여 다음 식 46의 k 값을 계산한다(S108).
다시 계산된 k 값에 대해 모듈러 연산을 사용하여 다음 식 47에 나타낸 r 값을 계산한다(S109).
상기 식 47에서 계산된 r 값을 전달받은 서명 값값으로 나누고, 그 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 48에 나타낸 s 값을 계산한다(S110).
이어 전달받은값과 상기 식 48에서 계산된 s 값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 사용하여 r' 값을 계산한다(S111).
결국 메시지 송신자로부터 전달받은 m 값의 해쉬함수 값에 모듈러 연산을 취한 값()과 상기한 식 49와 같이 계산된 r' 값이 동일 값인지를 비교한다(S112).
만약 "" 값과 r' 값이 동일한 값이면, 메시지 송신자 전자서명의 검증이 성공한 것이다. 그렇지 않으면 그 메시지 송신자 전자서명의 검증이 실패한 것이다.
그리고 상기한 MDSA의 서명 검증 과정에서 모듈러 지수승 계산은 식 46에서 2번, 모듈러 나눗셈은 식 48에서 1번이 수행된다.
도 7은 본 발명의 제2 실시 예에 따른 메시지 m에 대해 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명 값들의 생성 과정과 그 서명 값에 대한 검증 과정을 나타낸 다이어그램이다.
본 발명의 제2 실시 예에 따른 MDSA는 상기한 제1 실시 예에 따른 MDSA의 기본 개념을 벗어나지 않는 범위 내에서 속도를 결정짓는 연산들의 수학적 계산량을 줄이기 위한 전자서명 생성 과정과 검증 과정으로 이루어진다.
보다 상세하게 전자서명 생성 과정에서는, 상기한 식 41에서 계산된 r 값과 서명 생성자(즉 메시지 송신자)의 개인키()를 곱하고, 그 곱한 값과 메시지 m에 대한 해쉬함수 값을 더하고, 그 더한 값으로 난수적으로 선택된 x를 나누고, 그 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 50에 나타낸값을 계산한다.
이어 메시지 m에 대한 해쉬 값과 상기에서 구해진값에 대해 모듈러 연산을 사용하여 상기한 식 44에 나타낸 것과 같이값을 계산하고, 또한 상기한 식 41에서 구해진 두 번째 메시지 파라미터 r 값과 상기한 식 50에서 구해진값에 대해 모듈러 연산을 사용하여 상기한 식 45와 같은값을 계산하여, 그값과값을 MDSA 서명 값으로 사용한다.
이렇게 되면 전술된 상기 식 42에서 구해진 s 값에 대한 역에 모듈러 연산을 사용하여값을 계산하는 식 43의 과정이 요구되지 않는다. 결국 상기한 본 발명의 제2 실시 예에 따른 MDSA의 서명 생성 과정에서는 모듈러 지수승 계산은 1번 , 모듈러 나눗셈은 1번이 수행되어, 전술된 제1 실시 예에서 보다 모듈러 나눗셈이 1번 줄어든다.
다음 본 발명의 제2 실시 예에 따른 MDSA 전자서명 검증 과정에서는, 전달받은 서명 값값과값, 그리고 서명 생성자(메시지 송신자)의 공개키()에 대해 모듈러 연산을 사용하여 상기한 식 46과 같은 k 값이 계산된다.
다시 그 계산된 k 값에 대해 모듈러 연산을 사용하여 상기한 식 47과 같은 r 값이 계산된다.
이어 전달받은값과 상기 식 47에서 계산된 r 값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 사용하여 다음 식 51과 같은 r' 값이 계산된다.
이후에 메시지 송신자로부터 전달받은 m 값의 해쉬함수 값과 또한 전달받은값에 대해 모듈러 연산을 취한 값()과 상기한 식 51과 같이 계산된 r' 값이 동일 값인지를 비교한다.
만약 "" 값과 r' 값이 동일한 값이면, 메시지 송신자 전자서명의 검증이 성공한 것이다. 그렇지 않으면 그 메시지 송신자 전자서명의 검증이 실패한 것이다.
이렇게 되면 전술된 상기 식 47에서 계산된 r 값과 전달받은 서명 값값에 대해 모듈러 연산을 사용하여 s 값을 계산하는 식 48의 과정이 요구되지 않는다. 결국 상기한 본 발명의 제2 실시 예에 따른 MDSA의 서명 검증 과정에서는 모듈러 지수승 계산만 2번 수행되어, 전술된 제1 실시 예에서 수행되었던 1번의 모듈러 나눗셈이 필요 없다.
상기한 제1 실시 예 및 제2 실시 예를 통해 설명된 본 발명에 따른 MDSA이 DSA를 이용하여 서명 검증이 가능함을 증명한다. 즉 서명 검증의 가능 여부는, DSA 서명 값으로부터 MDSA 서명 값을 유도하고, MDSA 서명 값으로부터 DSA 서명 값을 유도함으로써, 증명된다.
A. DSA 서명 값으로부터 MDSA 서명 값 유도.
- DSA 서명 값이 (r, s)라고 가정한다.
- 메시지 m에 대한 해쉬함수 값()을 계산한다.
- 이어 알려진 s 값에 대한 역에 모듈러 연산을 사용하여값()을 계산한다.
- 상기 계산된 h 값과 또한 상기 계산된값을 곱하고, 그 곱한 값에 대해 이미 알려진 q 값으로 모듈러 연산을 취하여값을 계산한다.
- 이미 알려진 r 값과 상기 계산된값을 곱하고, 그 곱한 값에 대해 이미 알려진 q 값으로 모듈러 연산을 취하여값을 계산한다.
- 상기에서 계산된값과값은 전술된 MDSA 서명 생성 과정에서 계산된 값들과 동일한 값으로, 올바른 MDSA 서명 값이다.
B. MDSA 서명 값으로부터 DSA 서명 값 유도.
- MDSA 서명 값이 (,)라고 가정한다.
- 이어 이미 알려진 g 값을승산하고(g 값을번만큼 곱하고) 또한 이미 알려진 메시지 송신자의 공개키()를승산하여(공개키를번만큼 곱하여), 그 두 승산 값을 곱한 값에 대해 모듈러 연산을 취하여 r 값()을 계산한다.
- 그리고 상기 계산된 r 값을 이미 알려진값으로 나누고, 그 나눈 값에 대해 모듈러 연산으로 취하여 s 값()을 계산한다.
- 이 때 (,) 값이 메시지 m에 대한 올바른 서명 값이면, 상기한 MDSA 서명 검증 과정에서 정의된 ""가 만족하므로,""가 만족된다.
- 상기하여 s 값이 ""이므로, ""가 만족된다.
- 결국 r 값은 전술된 DSA 서명 검증 과정에서 계산된 r' 값과 동일하므로, r 값은 메시지 m에 대한 올바른 DSA 서명 값이다. 또한 s 값도 올바른 DSA 서명 값으로 증명된 r 값으로부터 계산되므로 올바른 DSA 서명 값이다.
다음은 본 발명의 메시지 인증 및 암호화를 실현하기 위한 SC-DSA에 대해 설명한다.
도 8은 본 발명의 제3 실시 예에 따른 메시지 m에 대해 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램이다.
본 발명의 제3 실시 예에 따른 메시지 m에 대한 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)의 생성 과정을 먼저 설명한다.
먼저 상기에서 정의된의 원소 x를 난수적으로 선택한다(S200). 여기서는 1부터 q-1 사이의 정수들의 집합이다.
이어 난수적으로 선택된 x를 사용하여, 다음 식 52에 나타낸 것과 같이 서명에 사용될 첫 번째 메시지 파라미터 k 값을 계산한다(S201).
다음에 메시지 수신자(recipient)의 공개키()와 난수적으로 선택된 x에 대해 모듈러 연산을 사용하여 다음 식 53에 나타낸 두 번째 메시지 파라미터 K 값을 계산한다(S202).
그리고 상기한 식 52에서 구해진 k 값에 대해 모듈러 연산을 사용하여 세 번째 메시지 파라미터인 다음 식 54의 r 값을 계산한다(S203).
이어 상기에서 계산된 r 값과 서명 생성자(즉 메시지 송신자)의 개인키()와 난수적으로 선택된 x, 그리고 메시지 m에 대한 해쉬함수 값에 대해 모듈러 연산을 사용하여 다음 식 55에 나타낸 네 번째 메시지 파라미터 s 값을 계산한다(S204)
다음에 상기 식 55에서 구해진 s 값에 대한 역에 모듈러 연산을 사용하여 다음의 식 56에 나타낸 것과 같이값을 계산한다(S205).
이어 메시지 m에 대한 해쉬 값과 상기에서 구해진값에 대해 모듈러 연산을 사용하여 다음 식 57에 나타낸 것과 같이값을 계산한다(S206).
그리고 상기한 식 54에서 구해진 세 번째 메시지 파라미터 r 값과 상기한 식 56에서 구해진값에 대해 모듈러 연산을 사용하여 다음 식 58과 같은값을 계산한다(S207).
그리고 다음에 다음 식 59와 같이 메시지 m에 대한 암호문을 계산한다(S208).
여기서값은 대칭키 암호화 알고리즘 E를 통해 식 53에서 계산된 K 값을 암호화 키로 사용하여 메시지 m을 암호화한 것이다.
결국 메시지 m에 대해 메시지 송신자로부터 메시지 수신자에게 전달되는 서명암호화 값은 다음 식 60에 나타낸 값으로써, 메시지 송신자로부터 서명암호화값()이 메시지 수신자에게 전달된다(S209).
지금까지 설명된 본 발명의 제3 실시 예에 따른 서명암호화 값(signcryption 값)의 생성 과정에서는, 모듈러 지수승 계산이 2번, 모듈러 나눗셈이 2번 수행된다.
다음은 본 발명의 제3 실시 예에 따른 메시지 m에 대한 서명암호화 값의 검증 과정을 설명한다.
전달받은 서명암호화 값값과값, 그리고 서명 생성자(메시지 송신자)의 공개키()에 대해 모듈러 연산을 사용하여 다음 식 61의 k 값을 계산한다(S210).
다시 계산된 k 값과 메시지 수신자의 개인키()에 대해 모듈러 연산을 사용하여 다음 식 62에 나타낸 K 값을 계산한다(S211).
다음에는 상기 식 62를 통해 계산된 K 값으로 생성 과정에서 계산된 서명암호화 값 c를 복호화한다(S212). 이 때 복호화는로 나타낸다.
이어 상기 식 61에서 계산된 k 값에 대해 모듈러 연산을 사용하여 다음 식 63의 r 값을 계산한다(S213).
다음에 상기 식 63에서 계산된 r 값과 전달받은 서명암호화 값값에 대해 모듈러 연산을 사용하여 다음 식 64에 나타낸 s 값을 계산한다(S214).
이어 전달받은값과 상기 식 64에서 계산된 s 값에 대해 모듈러 연산을 사용하여 r' 값(식 65)을 계산한다(S215).
결국 복호화된 메시지 m 값의 해쉬함수 값에 모듈러 연산을 취한 값()과 상기한 식 65와 같이 계산된 r' 값이 동일 값인지를 비교한다(S216).
만약 "" 값과 r' 값이 동일한 값이면, 유효한 서명암호화 값으로 판정한다.
상기 본 발명의 제3 실시 예에 따른 메시지 m에 대한 서명암호화 값의 검증 과정에서는, 모듈러 지수승 계산이 3번(식 61에서 2번, 식 62에서 1번), 모듈러 나눗셈이 1번 수행된다.
추가로 제3자(검증자)에 의해 메시지 송신자의 서명을 검증하는 과정에 대해 설명한다.
먼저 메시지 송신자의 공개키()가 알려졌다고 가정하고, 메시지 송신자의 개인키는 알려지지 않은 상태로 가정한다.
메시지 수신자(recipient)는 메시지 m과 검증 과정에서 계산된 r 값(식 63)과 s값(식 64)을 제3자(검증자)에게 제출한다.
이 경우에 (r, s)는 메시지 m에 대한 DSA 서명 값이 된다. 이 때 (r, s)는 서명암호화 값 (,)로부터 유도된다.
본 발명에 따른 서명암호화 값(,)으로부터 (r, s)가 DSA 서명 값임을 증명하면 다음과 같다.
두 DSA 서명 값들은 본 발명에 따른 서명암호화 값(,)을 사용하여 계산된다. 즉 ""와 ""로 계산된다.
이후에 제3자(검증자)는 (r, s)가 메시지 m에 대한 메시지 송신자의 DSA 서명 값인지 여부를 DSA 전자서명 알고리즘을 통해 검증한다.
도 9는 본 발명의 제4 실시 예에 따른 메시지 m에 대해 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램이다.
본 발명의 제4 실시 예는 상기한 제3 실시 예에서 설명된 내용의 기본 개념을 벗어나지 않는 범위 내에서 속도를 결정짓는 연산들의 수학적 계산량을 줄이기 위한 서명암호화 값 생성 과정과 검증 과정으로 이루어진다.
본 발명의 제4 실시 예에 따른 메시지 m에 대한 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)의 생성 과정을 먼저 설명한다.
보다 상세하게 서명암호화 값의 생성 과정에서는, 상기한 식 54에서 계산된 r 값과 메시지 송신자의 개인키()와 난수적으로 선택된 x, 그리고 메시지 m에 대한 해쉬함수 값에 대해 모듈러 연산을 사용하여 다음 식 66에 나타낸값을 계산한다.
이어 메시지 m에 대한 해쉬 값과 상기에서 구해진값에 대해 모듈러 연산을 사용하여 상기한 식 57에 나타낸 것과 같이값을 계산하고, 또한 상기한 식 54에서 구해진 r 값과 상기한 식 66에서 구해진값에 대해 모듈러 연산을 사용하여 상기한 식 58과 같은값을 계산한다. 그리고 식 59와 같이 메시지 m에 대한 암호문 c 값을 계산한다.
결국 메시지 송신자로부터 메시지 m에 대한 서명암호화 값()이 메시지 수신자에게 전달된다.
이렇게 되면 전술된 상기 식 55에서 구해진 s 값에 대한 역에 모듈러 연산을 사용하여값을 계산하는 식 56의 과정이 요구되지 않는다. 결국 상기한 본 발명의 제4 실시 예에 따른 서명암호화 값 생성 과정에서는 모듈러 지수승 계산이 2번 , 모듈러 나눗셈이 1번이 수행되어, 전술된 제3 실시 예에서 보다 모듈러 나눗셈이 1번 줄어든다.
다음 본 발명의 제4 실시 예에 따른 메시지 m에 대한 서명암호화 값의 검증 과정에서는, 전달받은 서명암호화 값값과값, 그리고 메시지 송신자의 공개키()에 대해 모듈러 연산을 사용하여 상기한 식 61과 같은 k 값이 계산된다.
다시 그 계산된 k 값과 메시지 수신자의 개인키()에 대해 모듈러 연산을 사용하여 상기한 식 62와 같은 K 값이 계산된다.
다음에는 상기 식 62를 통해 계산된 K 값으로 생성 과정에서 계산된 서명암호화 값 c가 복호화된다. 이 때 복호화는로 나타낸다.
이어 상기 식 61에서 계산된 k 값에 대해 모듈러 연산을 사용하여 상기한 식 63의 r 값이 계산된다.
다음에 전달받은값과 상기한 식 63에서 계산된 r 값에 대해 모듈러 연산을 사용하여 다음 식 67의 r' 값이 계산된다.
결국 복호화된 m 값의 해쉬함수 값과 전달받은값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 취한 값()과 상기한 식 67과 같이 계산된 r' 값이 동일 값인지를 비교한다.
만약 "" 값과 r' 값이 동일한 값이면, 유효한 서명암호화 값으로 판정한다.
이렇게 되면 전술된 상기 식 63에서 계산된 r 값과 전달받은 서명암호화 값값에 대해 모듈러 연산을 사용하여 s 값을 계산하는 식 64의 과정이 요구되지 않는다. 결국 상기한 본 발명의 제4 실시 예에 따른 서명암호화 값의 검증 과정에서는 모듈러 지수승 계산만 3번 수행되어, 전술된 제3 실시 예에서 수행되었던 1번의 모듈러 나눗셈이 필요 없다.
이상의 본 발명에 따른 제1 내지 제4 실시 예는 DSA를 사용하여 서명 검증이 가능하고, 전체 알고리즘의 속도를 개선해 주기 위한 것이었다.
다음은 메시지의 기밀성을 충족시켜 주는 본 발명의 제5 및 제6 실시 예를 설명한다.
도 10은 본 발명의 제5 실시 예에 따른 메시지 m에 대해 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램으로, 메시지의 길이가 충분하지 못할 경우에도 암호문으로부터 원래 평문의 유추가 불가능하도록 한다.
본 발명의 제5 실시 예에 따른 메시지 m에 대한 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)의 생성 과정을 먼저 설명한다.
먼저 상기에서 정의된의 원소 x를 난수적으로 선택한다(S300). 여기서는 1부터 q-1 사이의 정수들의 집합이다.
이어 난수적으로 선택된 x를 사용하여, 다음 식 68에 나타낸 것과 같이 서명에 사용될 첫 번째 메시지 파라미터 k 값을 계산한다(S301).
다음에 메시지 수신자(recipient)의 공개키()와 난수적으로 선택된 x에 대해 모듈러 연산을 사용하여 다음 식 69에 나타낸 두 번째 메시지 파라미터 K 값을 계산한다(S302).
이어 다음 식 70과 같이 상기 계산된 K 값에 대한 해쉬 값을 구한 다음에, 그 해쉬 값을 늘리기 위한 KDF를 사용하여, 그 해쉬 값을로 파생시킨다(S303).
그리고 상기한 식 68에서 구해진 k 값에 대해 모듈러 연산을 사용하여 세 번째 메시지 파라미터인 다음 식 71의 r 값을 계산한다(S304).
이어 상기에서 계산된 r 값과 서명 생성자(즉 메시지 송신자)의 개인키()를 곱하고, 메시지 m과 메시지 송수신자들의 신원 값 bind와 상기에서 계산된에 대한 해쉬함수 값을 상기 곱한 값에 더하고, 그 더한 값을 난수적으로 선택된 x로 나누고, 그 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 72에 나타낸 네 번째 메시지 파라미터 s 값을 계산한다(S305)
상기에서 메시지 송수신자들의 신원 값인 bind은 메시지 송신자와 메시지 수신자의 각 신원을 나타내는 값으로, 메시지 송신자와 수신자의 각 공개키 값()이나 각 공개키 인증서 값()이다.
다음에 상기 식 72에서 구해진 s 값에 대한 역에 모듈러 연산을 사용하여 다음의 식 73에 나타낸 것과 같이값을 계산한다(S306).
이어 메시지 m과 메시지 송수신자들의 신원 값 bind와 상기에서 계산된에 대한 해쉬함수 값을 상기에서 구해진값과 곱하고, 그 곱한 값에 대해 모듈러 연산을 사용하여 다음 식 74에 나타낸 것과 같이값을 계산한다(S307).
그리고 상기한 식 71에서 구해진 세 번째 메시지 파라미터 r 값과 상기한 식 73에서 구해진값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 사용하여 다음 식 75와 같은값을 계산한다(S308).
그리고 다음에 다음 식 76과 같이 메시지 m에 대한 암호문을 계산한다(S309).
여기서값은 대칭키 암호화 알고리즘 E를 통해 식 70에서 계산된값을 암호화 키로 사용하여 메시지 m을 암호화한 것이다.
결국 메시지 m에 대해 메시지 송신자로부터 메시지 수신자에게 전달되는 서명암호화 값은 다음 식 77에 나타낸 값으로써, 메시지 송신자로부터 서명암호화 값()이 메시지 수신자에게 전달된다(S310).
지금까지 설명된 본 발명의 제5 실시 예에 따른 서명암호화 값(signcryption 값)의 생성 과정에서는, 모듈러 지수승 계산이 2번, 모듈러 나눗셈이 2번 수행된다.
다음은 본 발명의 제5 실시 예에 따른 메시지 m에 대한 서명암호화 값의 검증 과정을 설명한다.
전달받은 서명암호화 값값과값, 그리고 서명 생성자(메시지 송신자)의 공개키()에 대해 모듈러 연산을 사용하여 다음 식 78의 k 값을 계산한다(S311).
다시 계산된 k 값과 메시지 수신자의 개인키()에 대해 모듈러 연산을 사용하여 다음 식 79에 나타낸 K 값을 계산한다(S312).
이어 다음 식 80과 같이 상기 계산된 K 값에 대한 해쉬 값을 구한 다음에, 그 해쉬 값을 늘리기 위한 KDF를 사용하여, 그 해쉬 값을로 파생시킨다(S313).
다음에는 상기 식 80을 통해 계산된값으로 생성 과정에서 계산된 서명암호화 값 c를 복호화한다(S314). 이 때 복호화는로 나타낸다.
이어 상기 식 78에서 계산된 k 값에 대해 모듈러 연산을 사용하여 다음 식 81의 r 값을 계산한다(S315).
다음에 상기 식 81에서 계산된 r 값을 전달받은 서명암호화 값로 나누고, 그 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 82에 나타낸 s 값을 계산한다(S316).
이어 전달받은값과 상기 식 82에서 계산된 s 값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 사용하여 r' 값(식 83)을 계산한다(S317).
결국 복호화된 메시지 m 값과 메시지 송수신자들의 신원 값 bind와 상기 식 80에서 계산된에 대한 해쉬함수 값에 모듈러 연산을 취한값()과 상기한 식 83과 같이 계산된 r' 값이 동일 값인지를 비교한다(S318).
만약 "" 값과 r' 값이 동일한 값이면, 유효한 서명암호화 값으로 판정한다.
상기 본 발명의 제5 실시 예에 따른 메시지 m에 대한 서명암호화 값의 검증 과정에서는, 모듈러 지수승 계산이 3번, 모듈러 나눗셈이 1번 수행된다.
추가로 제3자(검증자)에 의해 메시지 송신자의 서명을 검증하는 과정에 대해 설명한다.
먼저 메시지 송신자의 공개키()가 알려졌다고 가정하고, 메시지 송신자의 개인키는 알려지지 않은 상태로 가정한다.
메시지 수신자(recipient)는 메시지 m과 검증 과정에서 계산된 r 값(식 81)과 s값(식 82)을 제3자(검증자)에게 제출한다.
이 경우에 (r, s)는 "m,bind,"에 대한 DSA 서명 값이 된다.
그리고 메시지 수신자는 보조적으로 메시지 송수신자들의 신원을 나타내는 값(bind)과 상기 서명 검증 과정의 식 80에서 계산된값을 제3자(검증자)에게 알려준다.
그러면 제3자는 (r, s)가 "m,bind,"에 대한 메시지 송신자의 DSA 서명 값인지의 여부를 DSA 전자서명 알고리즘을 통해 검증한다. 이에 대한 증명은 전술되었다.
도 11은 본 발명의 제6 실시 예에 따른 메시지 m에 대해 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)들의 생성 과정과 그 서명암호화 값에 대한 검증 과정을 나타낸 다이어그램으로, 제5 실시 예에서와 같이 메시지의 길이가 충분하지 못할 경우에도 암호문으로부터 원래 평문의 유추가 불가능하도록 한다.
본 발명의 제6 실시 예에 따른 메시지 m에 대한 메시지 송신자(sender)로부터 메시지 수신자(recipient)에게 전달될 서명암호화 값(signcryption 값)의 생성 과정을 먼저 설명한다.
보다 상세한 서명암호화 값의 생성 과정은, 상기한 제5 실시 예의 식 68 내지 식 71에서 계산 과정은 동일하다.
이후에 식 71에서 계산된 r 값과 서명 생성자(즉 메시지 송신자)의 개인키()를 곱하고, 메시지 m과 메시지 송수신자들의 신원 값 bind와 상기 식 70에서 계산된에 대한 해쉬함수 값을 상기 곱한 값에 더하고, 그 더한 값으로 난수적으로 선택된 x를 나누고, 그 나눈 값에 대해 모듈러 연산을 사용하여 다음 식 84에 나타낸 메시지 파라미터값이 계산된다.
이어 메시지 m과 메시지 송수신자들의 신원 값 bind와 상기 식 70에서 계산된에 대한 해쉬함수 값을 상기 식 84에서 구해진값과 곱하고, 그 곱한 값에대해 모듈러 연산을 사용하여 상기한 식 74의값이 계산된다.
또한 상기 식 71에서 계산된 r 값과 상기한 식 84에서 구해진값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 사용하여 상기 식 75의값이 계산된다.
그리고 상기한 제5 실시 예에서와 같이 메시지 m에 대한 암호문을 계산하여, 메시지 송신자로부터 서명암호화 값()이 메시지 수신자에게 전달된다.
상기한 제6 실시 예에 따른 서명암호화 값 생성 과정에서는 제5 실시 예에 비해 모듈러 나눗셈 계산이 한 번 줄어든다.
이어 본 발명의 제6 실시 예에 따른 메시지 m에 대한 서명암호화 값의 검증 과정을 설명하면, 전달받은 서명암호화 값값과값, 그리고 메시지 송신자의 공개키()에 대해 모듈러 연산을 사용하여 상기 식 78과 같은 k 값이 계산된다.
다시 계산된 k 값과 메시지 수신자의 개인키()에 대해 모듈러 연산을 사용하여 상기 식 79와 같은 K 값이 계산된다.
다음에는 상기 식 79를 통해 계산된 K 값에 대한 해쉬 값을 구한 다음에, 그 해쉬 값을 늘리기 위한 KDF를 사용하여, 그 해쉬 값을 상기 식 80과 같이로 파생시킨다.
그리고 상기 식 80을 통해 계산된값으로 서명암호화 값 c가 복호화된다.
이어 상기 식 78에서 계산된 k 값에 대해 모듈러 연산을 사용하여 상기한 식 81의 r 값이 계산된다.
다음에 전달받은값과 상기한 식 81에서 계산된 r 값에 대해 모듈러 연산을 사용하여 다음 식 85의 r' 값이 계산된다.
결국 복호화된 m값과 메시지 송수신자들의 신원 값 bind와 상기 식 80에서 계산된에 대한 해쉬함수 값에 전달받은값을 곱하고, 그 곱한 값에 대해 모듈러 연산을 취한 값()과 상기한 식 85의 r' 값이 동일 값인지를 비교한다.
만약 "" 값과 r' 값이 동일한 값이면, 유효한 서명암호화 값으로 판정한다.
상기한 제6 실시 예에 따른 서명암호화 값 검증 과정에서도 제5 실시 예에 비해 모듈러 나눗셈 계산이 한 번 줄어든다.
이상에서 설명한 바와 같은 본 발명에서는 전자서명 및 암호화 과정에서 수행되는 모듈러 연산(특히 모듈러 나눗셈)의 개수를 줄임으로써, 전체 알고리즘의 속도를 개선한다. 그리고 모듈러 연산의 개수를 줄였음에도 불구하고 안전성은 그대로 유지된다.
또한 본 발명은 현재 가장 널리 이용되는 표준화된 전자서명 중 하나인 DSA를 이용하여 서명 검증이 가능하기 때문에, 실제 필드에서 유용하게 사용될 수 있다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 이탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.
따라서, 본 발명의 기술적 범위는 실시 예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다.

Claims (24)

  1. 큰 소수 p와, (p-1)을 나누는 큰 소수 q와,을 만족하는 1부터 (p-1) 사이의 수 g를 도메인 파라미터로 사용하는 메시지 인증 방법에 있어서,
    1부터 (q-1) 사이의 정수 집합에서 선택된 하나의 난수(x)와 상기 도메인 파라미터들을 사용하여, 전송될 전자서명 값을 유도하기 위한 다수의 메시지 파라미터들(k, r,)을 계산하는 제1단계;
    전송될 메시지(m)의 해쉬함수 값과 상기 계산된 하나의 메시지 파라미터를 사용하여, 제1 전자서명 값()을 계산하는 제2단계;
    상기 계산된 복수 개의 메시지 파라미터를 사용하여, 제2 전자서명 값()을 계산하는 제3단계; 그리고,
    상기 계산된 전자서명 값들(,)과 전송될 메시지(m)를 수신측에 전송하는 제4단계로 이루어지는 것을 특징으로 하는 메시지 인증 방법.
  2. 제 1 항에 있어서, 상기 제1단계는,
    상기 q를 상기 난수(x)의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제1 메시지 파라미터(k)가 계산되고,
    상기 계산된 제1 메시지 파라미터(k)에 대해, 상기 q로 모듈러 연산을 취하여 제2 메시지 파라미터(r)가 계산되고,
    상기 계산된 제2 메시지 파라미터(r)에 메시지 송신자(sender)의 개인키()를 곱한 값()과 전송될 메시지(m)에 대한 해쉬함수 값을 더하고, 그 더한 값으로 상기 난수(x)를 나눈 값에 대해, 상기 q로 모듈러 연산을 취하여 제3 메시지 파라미터()가 계산되는 것을 특징으로 하는 메시지 인증 방법.
  3. 제 2 항에 있어서, 상기 제2단계는,
    상기 전송될 메시지(m)에 대한 해쉬함수 값과 상기 계산된 제3 메시지 파라미터()를 곱하고, 그 곱한 값에 대해 상기 q로 모듈러 연산을 취하여 상기 제1 전자서명 값()이 계산되는 것을 특징으로 하는 메시지 인증 방법.
  4. 제 2 항에 있어서, 상기 제3 단계는,
    상기 계산된 제2 메시지 파라미터(r)와 상기 제3 메시지 파라미터()를 곱하고, 그 곱한 값에 대해 상기 q로 모듈러 연산을 취하여 상기 제2 전자서명 값()이 계산되는 것을 특징으로 하는 메시지 인증 방법.
  5. 제 1 항에 있어서,
    상기 제1 및 제2 전자서명 값(,)과 미리 알려진 메시지 송신자(sender)의 공개키()와 상기 도메인 파라미터들을 사용하여, 상기 메시지 송신자의 전자서명을 검증하기 위한 다수의 검증 파라미터들이 순차적으로 계산되는 (a)단계와,
    수신된 메시지(m)의 해쉬함수 값과 상기 제2 전자서명 값()의 곱셈 값에 대해 상기 q로 모듈러 연산을 취한 값과, 상기 계산된 최종 검증 파라미터의 동일 여부에 따라, 상기 메시지 송신자의 전자서명이 검증되는 (b)단계가 더 포함되는 것을 특징으로 하는 메시지 인증 방법.
  6. 제 5 항에 있어서, 상기 (a)단계는,
    상기 g를 상기 제1 전자서명 값()의 회수만큼 곱한 값()과, 상기 메시지 송신자(sender)의 공개키()를 상기 제2 전자서명 값()의 회수만큼 곱한 값()에 대해, 상기 p로 모듈러 연산을 취하여 제1 검증 파라미터가 계산되고,
    상기 계산된 제1 검증 파라미터에 대해, 상기 q로 모듈러 연산을 취하여 제2 검증 파라미터가 계산되고,
    상기 계산된 제2 검증 파라미터와 상기 제1 전자서명 값()의 곱셈 값에 대해, 상기 q로 모듈러 연산을 취하여 최종 검증 파라미터가 계산되는 것을 특징으로 하는 메시지 인증 방법.
  7. 큰 소수 p와, (p-1)을 나누는 큰 소수 q와,을 만족하는 1부터(p-1) 사이의 수 g를 도메인 파라미터로 사용하는 메시지 인증 및 암호화 방법에 있어서,
    1부터 (q-1) 사이의 정수 집합에서 선택된 하나의 난수(x)와 상기 도메인 파라미터들을 사용하여, 전송될 서명암호화 값을 유도하기 위한 다수의 메시지 파라미터들(k, K, r,)을 계산하는 제1단계;
    전송될 메시지(m)의 해쉬함수 값과 상기 계산된 하나의 메시지 파라미터를 사용하여, 제1 서명암호화 값()을 계산하는 제2단계;
    상기 계산된 복수 개의 메시지 파라미터를 사용하여, 제2 서명암호화 값()을 계산하는 제3단계;
    상기 계산된 하나의 메시지 파라미터를 암호화 키로 사용하여, 전송될 메시지(m)를 암호화한 제3 서명암호화 값(c)을 계산하는 제4단계; 그리고,
    상기 계산된 서명암호화 값들(,,c)을 수신측에 전송하는 제5단계로 이루어지는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  8. 제 7 항에 있어서, 상기 제1단계는,
    상기 q를 상기 난수(x)의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제1 메시지 파라미터(k)가 계산되고,
    메시지 수신자(recipient)의 공개키()를 상기 난수(x)의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제2 메시지 파라미터(K)가 계산되고,
    상기 계산된 제1 메시지 파라미터(k)에 대해, 상기 q로 모듈러 연산을 취하여 제3 메시지 파라미터(r)가 계산되고,
    상기 계산된 제3 메시지 파라미터(r)에 메시지 송신자(sender)의 개인키()를 곱한 값()과 전송될 메시지(m)에 대한 해쉬함수 값을 더하고, 그 더한 값으로 상기 난수(x)를 나눈 값에 대해, 상기 q로 모듈러 연산을 취하여 제4 메시지 파라미터()가 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  9. 제 8 항에 있어서, 상기 제2단계는,
    상기 전송될 메시지(m)에 대한 해쉬함수 값과 상기 계산된 제4 메시지 파라미터()를 곱하고, 그 곱한 값에 대해 상기 q로 모듈러 연산을 취하여 상기 제1 서명암호화 값()이 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  10. 제 8 항에 있어서, 상기 제3 단계는,
    상기 계산된 제3 메시지 파라미터(r)와 상기 제4 메시지 파라미터()를 곱하고, 그 곱한 값에 대해 상기 q로 모듈러 연산을 취하여 상기 제2 서명암호화 값()이 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  11. 제 8 항에 있어서, 상기 제4 단계는,
    대칭키 암호화 알고리즘에 상기 계산된 제2 메시지 파라미터(K)를 암호화 키로 사용하여, 전송될 메시지(m)를 암호화한 제3 서명암호화 값(c)이 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  12. 제 7 항에 있어서,
    상기 제1 내지 제3 서명암호화 값(,,c)과 미리 알려진 메시지 송신자(sender)의 공개키()와 메시지 수신자의 개인키()와 상기 도메인 파라미터들을 사용하여, 상기 메시지 송신자의 서명암호화 값을 검증하기 위한 다수의 검증 파라미터들이 순차적으로 계산되는 (a)단계와,
    상기 계산된 어느 하나의 검증 파라미터로 상기 제3 서명암호화 값(c)이 복호화되는 (b)단계와,
    수신된 메시지(m)의 해쉬함수 값과 상기 제2 서명암호화 값()의 곱셈 값에 대해 상기 q로 모듈러 연산을 취한 값과, 상기 계산된 최종 검증 파라미터의 동일 여부에 따라, 상기 메시지 송신자의 서명암호화 값이 검증되는 (c)단계가 더 포함되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  13. 제 12 항에 있어서, 상기 (a)단계는,
    상기 g를 상기 제1 서명암호화 값()의 회수만큼 곱한 값()과, 상기 메시지 송신자(sender)의 공개키()를 상기 제2 서명암호화 값()의 회수만큼 곱한 값()에 대해, 상기 p로 모듈러 연산을 취하여 제1 검증 파라미터가 계산되고,
    상기 계산된 제1 검증 파라미터를 상기 메시지 수신자 개인키() 값의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제2 검증 파라미터가 계산되고,
    상기 계산된 제1 검증 파라미터에 대해, 상기 q로 모듈러 연산을 취하여 제3 검증 파라미터가 계산되고,
    상기 계산된 제3 검증 파라미터와 상기 제1 서명암호화 값()의 곱셈 값에 대해, 상기 q로 모듈러 연산을 취하여 최종 검증 파라미터가 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  14. 제 13 항에 있어서, 상기 (b)단계는,
    상기 계산된 제2 검증 파라미터로 상기 제3 서명암호화 값(c)이 복호화되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  15. 제 7 항에 있어서, 상기 제1단계는,
    키 유도 함수(KDF)를 사용하여 미리 계산된 메시지 파라미터(K)의 해쉬함수 값을 복수 개로 파생시키고, 그 파생 값을 메시지(m)와 함께 사용하여 다음의 메시지 파라미터()가 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  16. 제 15 항에 있어서, 메시지 송신자 및 메시지 수신자의 신원을 나타내는 값을 더 사용하여 상기 메시지 파라미터()가 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  17. 제 16 항에 있어서, 메시지 송신자 및 메시지 수신자의 신원을 나타내는 값으로 공개키 및/또는 공개키 인증서가 더 사용되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  18. 큰 소수 p와, (p-1)을 나누는 큰 소수 q와,을 만족하는 1부터 (p-1) 사이의 수 g를 도메인 파라미터로 사용하는 메시지 인증 및 암호화 방법에 있어서,
    1부터 (q-1) 사이의 정수 집합에서 선택된 하나의 난수(x)와 메시지 송수신자들의 각 신원을 나타내는 값과 상기 도메인 파라미터들을 사용하여, 전송될 서명암호화 값을 유도하기 위한 다수의 메시지 파라미터들(k, K, r, s)을 계산하는 제1단계;
    전송될 메시지(m)의 해쉬함수 값과 상기 계산된 하나의 메시지 파라미터를 사용하여, 제1 서명암호화 값()을 계산하는 제2단계;
    상기 계산된 복수 개의 메시지 파라미터를 사용하여, 제2 서명암호화 값()을 계산하는 제3단계;
    상기 계산된 하나의 메시지 파라미터를 암호화 키로 사용하여, 전송될 메시지(m)를 암호화한 제3 서명암호화 값(c)을 계산하는 제4단계; 그리고,
    상기 계산된 서명암호화 값들(,,c)을 수신측에 전송하는 제5단계로 이루어지는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  19. 제 18 항에 있어서, 상기 제1단계는,
    상기 q를 상기 난수(x)의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제1 메시지 파라미터(k)가 계산되고,
    메시지 수신자(recipient)의 공개키()를 상기 난수(x)의 회수만큼 곱한 값에 대해, 상기 p로 모듈러 연산을 취하여 제2 메시지 파라미터(K)가 계산되고,
    키 유도 함수(KDF)를 사용하여, 상기 계산된 제2 메시지 파라미터(K)의 해쉬함수 값을 복수 개의 값들(,)로 파생시키고,
    상기 계산된 제1 메시지 파라미터(k)에 대해, 상기 q로 모듈러 연산을 취하여 제3 메시지 파라미터(r)가 계산되고,
    상기 계산된 제3 메시지 파라미터(r)에 메시지 송신자(sender)의 개인키()를 곱하고, 전송될 메시지(m)와 메시지 송수신자들의 각 신원을 나타내는 값과 상기 파생된 하나의 값에 대한 해쉬함수 값을 상기 곱셈 값()과 더하고, 상기 난수(x)로 상기 더한 값을 나눈 값에 대해, 상기 q로 모듈러 연산을 취하여 제4 메시지 파라미터(s)가 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  20. 제 19 항에 있어서, 상기 제4 메시지 파라미터는,
    상기 계산된 제3 메시지 파라미터(r)에 상기 메시지 송신자(sender)의 개인키()를 곱하고,
    전송될 메시지(m)와 메시지 송수신자들의 각 공개키 및/또는 공개키 인증서와 상기 파생된 하나의 값에 대한 해쉬함수 값을 상기 곱셈 값()과 더하고,
    상기 난수(x)로 상기 더한 값을 나눈 값에 대해, 상기 q로 모듈러 연산을 취하여 제4 메시지 파라미터(s)가 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  21. 제 20 항에 있어서, 상기 난수(x)를 상기 더한 값으로 나눈 값에 대해, 상기 q로 모듈러 연산을 취하여 제4 메시지 파라미터()가 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  22. 제 19 항에 있어서, 상기 제2단계는,
    상기 전송될 메시지(m)와 메시지 송수신자들의 각 신원을 나타내는 값과 상기 파생된 하나의 값에 대한 해쉬함수 값과 상기 계산된 제4 메시지 파라미터의 역에 대해 상기 q로 모듈러 연산을 취한 값()을 곱하고, 그 곱한 값에 대해 상기 q로 모듈러 연산을 취하여 상기 제1 서명암호화 값()이 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  23. 제 19 항에 있어서, 상기 제3 단계는,
    상기 계산된 제3 메시지 파라미터(r)와 상기 계산된 제4 메시지 파라미터의 역에 대해 상기 q로 모듈러 연산을 취한 값()을 곱하고, 그 곱한 값에 대해 상기 q로 모듈러 연산을 취하여 상기 제2 서명암호화 값()이 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
  24. 제 19 항에 있어서, 상기 제4 단계는,
    대칭키 암호화 알고리즘에 상기 파생된 하나의 값()을 암호화 키로 사용하여, 전송될 메시지(m)를 암호화한 제3 서명암호화 값(c)이 계산되는 것을 특징으로 하는 메시지 인증 및 암호화 방법.
KR10-2002-0067047A 2002-10-31 2002-10-31 메시지의 인증 및 암호화 방법 KR100441397B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0067047A KR100441397B1 (ko) 2002-10-31 2002-10-31 메시지의 인증 및 암호화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0067047A KR100441397B1 (ko) 2002-10-31 2002-10-31 메시지의 인증 및 암호화 방법

Publications (2)

Publication Number Publication Date
KR20040038166A KR20040038166A (ko) 2004-05-08
KR100441397B1 true KR100441397B1 (ko) 2004-07-23

Family

ID=37336411

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0067047A KR100441397B1 (ko) 2002-10-31 2002-10-31 메시지의 인증 및 암호화 방법

Country Status (1)

Country Link
KR (1) KR100441397B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101068015B1 (ko) * 2008-12-10 2011-09-26 한국전자통신연구원 다운로더블 제한 수신 시스템의 메시지 모니터링 방법 및 장치
KR102419057B1 (ko) * 2020-03-31 2022-07-13 한국철도기술연구원 철도 통신네트워크의 메시지 보안 시스템 및 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990039365A (ko) * 1997-11-12 1999-06-05 정명식 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법
US5987131A (en) * 1997-08-18 1999-11-16 Picturetel Corporation Cryptographic key exchange using pre-computation
US6304658B1 (en) * 1998-01-02 2001-10-16 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
KR20030070733A (ko) * 2002-02-26 2003-09-02 주홍정보통신주식회사 Crt에 기초한 rsa 공개키 암호화 방식을 이용한디지털 서명방법 및 그 장치
KR100397601B1 (ko) * 1996-07-31 2003-10-23 삼성전자주식회사 메시지 부가형 디지털서명 방법 및 그에 대한 검증 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100397601B1 (ko) * 1996-07-31 2003-10-23 삼성전자주식회사 메시지 부가형 디지털서명 방법 및 그에 대한 검증 방법
US5987131A (en) * 1997-08-18 1999-11-16 Picturetel Corporation Cryptographic key exchange using pre-computation
KR19990039365A (ko) * 1997-11-12 1999-06-05 정명식 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법
US6304658B1 (en) * 1998-01-02 2001-10-16 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
KR20030070733A (ko) * 2002-02-26 2003-09-02 주홍정보통신주식회사 Crt에 기초한 rsa 공개키 암호화 방식을 이용한디지털 서명방법 및 그 장치

Also Published As

Publication number Publication date
KR20040038166A (ko) 2004-05-08

Similar Documents

Publication Publication Date Title
Rodriguez-Henriquez et al. A brief introduction to modern cryptography
US5796833A (en) Public key sterilization
US8661240B2 (en) Joint encryption of data
CN111342973B (zh) 一种安全的pki与ibc之间的双向异构数字签名方法
Petersen et al. Cryptanalysis and improvement of signcryption schemes
EP1471680B1 (en) Identifier-Based Encryption method and apparatus
EP1063813A2 (en) Public key encryption with digital signature scheme
US5790675A (en) Cryptographic communication process
US20040139029A1 (en) Apparatus and method for generating and verifying ID-based blind signature by using bilinear parings
CN103155481A (zh) 具有消息恢复的数字签名的认证加密
Heninger RSA, DH, and DSA in the Wild
GB2415579A (en) Authenticating the identity of a message sender in an identifier-based encryption system
US20050021973A1 (en) Cryptographic method and apparatus
Huang et al. Partially blind ECDSA scheme and its application to bitcoin
Elkamchouchi et al. An efficient proxy signcryption scheme based on the discrete logarithm problem
KR100441397B1 (ko) 메시지의 인증 및 암호화 방법
KR100732233B1 (ko) 겹선형 함수를 이용한 대리서명능력 제한성을 가지는개인식별정보 기반 대리서명 장치 및 그 방법
Dong et al. Two extensions of the ring signature scheme of Rivest–Shamir–Taumann
KR100513958B1 (ko) 메시지의 전자서명 및 암호화 방법
Wang et al. Signature schemes based on two hard problems simultaneously
Shi et al. Fair exchange of valuable information: A generalised framework
Kim Certificateless Designated Verifier Proxy Signature
Barker et al. Sp 800-56b. recommendation for pair-wise key establishment schemes using integer factorization cryptography
Raveendranath et al. Efficient multi-receiver heterogenous signcryption
Bashir Analysis and Improvement of Some Signcryption Schemes Based on Elliptic Curve

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

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140702

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150701

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160704

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170703

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180702

Year of fee payment: 15