KR100258310B1 - 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법 - Google Patents

안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법 Download PDF

Info

Publication number
KR100258310B1
KR100258310B1 KR1019970059424A KR19970059424A KR100258310B1 KR 100258310 B1 KR100258310 B1 KR 100258310B1 KR 1019970059424 A KR1019970059424 A KR 1019970059424A KR 19970059424 A KR19970059424 A KR 19970059424A KR 100258310 B1 KR100258310 B1 KR 100258310B1
Authority
KR
South Korea
Prior art keywords
key
mod
card
private key
value
Prior art date
Application number
KR1019970059424A
Other languages
English (en)
Other versions
KR19990039365A (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 KR1019970059424A priority Critical patent/KR100258310B1/ko
Publication of KR19990039365A publication Critical patent/KR19990039365A/ko
Application granted granted Critical
Publication of KR100258310B1 publication Critical patent/KR100258310B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K17/00Methods or arrangements for effecting co-operative working between equipments covered by two or more of main groups G06K1/00 - G06K15/00, e.g. automatic card files incorporating conveying and reading operations
    • G06K17/0022Methods or arrangements for effecting co-operative working between equipments covered by two or more of main groups G06K1/00 - G06K15/00, e.g. automatic card files incorporating conveying and reading operations arrangements or provisious for transferring data to distant stations, e.g. from a sensing device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/0013Methods or arrangements for sensing record carriers, e.g. for reading patterns by galvanic contacts, e.g. card connectors for ISO-7816 compliant smart cards or memory cards, e.g. SD card readers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 증명자/서명자측 단말기내에 기존의 IC카드와 동일한 능력의 안전 모듈(Security Module)을 구비하여 실체 인증및 디지털 서명을 효과적으로 행할 수 있는 암호화 방법을 제시하였다.
사용자 IC 카드내에는 비공개키를 저장하며 단말기 내의 안전 모듈은 마스터키를 구비한다. 이 비밀키및 마스터키로써 단말기와 IC 카드는 상호 인증을 행하고 세션키를 분배하여 사용자의 비공개키를 세션키로 암호화하여 단말기내의 안전 모듈로 전송한다. 안전 모듈은 서명이나 실체 인증의 개시전에 멱승 계산이나 역수 계산을 미리 행하여 저장해 둔다. 실제 서명이나 인증시에는 저장된 값을 이용하므로 한 번의 모듈러 곱과 모듈러 합을 행함으로써 인증값이나 서명값을 효과적으로 계산할 수 있다.

Description

안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법
본 발명은 공개키 암호 체계의 비공개키를 이용하는 암호화 방법에 관한 것으로서, 더욱 상세하게는 실체 인증및 디지털 서명을 위하여 필요한 연산을 사전에 행할 수 있게 한 방법에 관한 것이다.
암호화 알고리즘은 크게 두가지로 구분할 수 있다. 하나는 DES와 같은 대칭형 암호 시스템이고 다른 하나는 RSA와 같은 비대칭형 암호시스템으로서, 비대칭형 암호 시스템은 공개키 암호 시스템이라고도 불리고 있다. 대칭형 암호 시스템은 암호화하는 키와 해독하는 키가 일치하는 경우이며, 키를 아는 사람은 누구나 해독을 수행할 수 있는 특성을 가지며, 따라서 키의 보안과 분배가 중요한 문제가 된다.
반면, 공개키 암호 시스템은 암호키와 해독키가 다르며, 암호키는 모두에게 공개하고 해독기는 사용자 자신만이 갖게된다. 따라서, 해독키의 보안만이 중요하고 비밀 정보를 공유할 필요가 없어지므로 보안 정보의 이동이 적다는 장점을 가지게 된다.
디피(W. Diffie)와 헬만(M. Hellman)은 이러한 공개키 암호 시스템을 제안하였다. 공개키 암호 시스템에서는 각 사용자의 키가 비공개키와 공개키로 구성되어 있으며, 키에 대한 안전도는 공개키를 사용자 모두에게 공개하더라도 공개키로 비공개키를 얻기가 계산상 불가능하다는 일방성의 문제의 어려움에 달려있다. 여기서, 사용되는 일방성의 난이도는 소인수 분해나 이산 대수 문제의 어려움에 근거하며, 키의 크기가 클수록 풀기가 어렵다.
오들리즈코(Odlyzko)는 1994년 기준으로 2014년에 예상되는 가용 계산력과 소인수 분해 문제를 푸는 알고리즘의 난이도를 비교하여 당분간 안전하게 사용할 수 있는 키의 크기에 대하여 제안하였다. 이것을 이산 대수 문제의 난이도와 비교하여 보면, 비공개키의 크기는 160비트 이상, 공개키의 크기는 768비트 이상이어야 적어도 향후 10년동안 안전하게 사용할 수 있다. 이와 같이 공개키 암호 시스템에서는 키의 크기가 상당히 크기 때문에 효율성은 저하되지만, 키관리의 용이성이나 디지털 서명과 같은 보안 서비스를 제공할 수 있다는 측면에서 널리 이용되고 있다.
공개키 암호 시스템에서 비공개키의 안전한 보관을 위하여 물리적 안전 장치(Temper- Resistance Device)를 가지고 있는 IC 카드가 사용되고 있다. 즉, 비공개키는 일반적으로 160비트 이상의 난수이므로 이를 암기한다는 것은 거의 불가능하기 때문에 이의 저장을 위하여 IC 카드가 사용되는 것이다. 비공개키를 IC 카드에 저장해두고 디지털 서명을 생성할 때나 실체 인증을 할 때 카드를 단말기(Card Reader)에 넣고 원하는 과정을 수행하게 된다. 이때, 비공개키의 노츌을 막기 위해서 비공개키가 단말기에 보내어지지 않고 IC 카드내에서 계산들이 이루어져야 한다. 따라서, 공개키 암호 시스템을 위한 IC 카드는 보안 장치와 함께 자체적 연산 기능을 갖추어야 하며 이러한 카드를 스마트 카드(Smart Card)라 부르고 있다.
도 1 에는 공개키 암호 개념의 대표적인 응용분야인 실체 인증 프로토콜및 디지털 서명 프로토콜을 위한 장치의 개략도가 도시되어 있다. 여기서, 부호(1)는 단말기를 의미하는 것으로 단말기(1)는 IC 카드(2)에 전원을 공급하고 데이터를 전송 받을 수 있는 단말기 회로(10)를 구비하고 있다. 단말기(1)는 후술하는 바와 같이 검증자로서 작동하는 단말기(3)에 연결되어 있으며, 단말기(3)는 퍼스널 컴퓨터, 워크스테이션등으로 구현가능하다.
이와 같이 구성된 장치에서 먼저 실체 인증 프로토콜(Entity Authentication)을 설명하면 다음과 같다.
자신의 실체(또는 신원, 신분)를 증명하고자 하는 자를 증명자(Prover)라 하고, 증명자가 자신이 주장하는 실체와 일치하는가를 검증하는 자를 검증자(Verifier)라고 한다. 검증자는 상술한 바와 같이 실체 인증 프로토콜이 구현되어 있는 퍼스널 컴퓨터나 워크스테이션 또는 단말기(3)가 될 수도 있으며 본명세서에서는 증명자를 단말기로 한 경우를 예로하여 설명하였다.
증명자는 자신만이 아는 비공개키(X)를 IC 카드(2)와 같이 안전한 곳에 가지고 있으며, 검증자는 증명자의 공개키(Y)를 이미 얻었다고 가정한다. 증명자가 증명하는 것은 자신이 공개키(Y)에 대응하는 비공개키(X)를 가지고 있다는 것이며 비공개키(X)는 알려져 있지 않아야 하므로 비공개키(X)가 사용되는 계산은 계산 능력을 갖춘 IC 카드(2)에서 행하여지게 된다. 이와 같은 IC 카드(2)와 검증자의 작동 프로토콜은 다음과 같다.
단계 1(A1)(난수 발생 단계) : 증명자의 IC 카드(2)는 소정의 난수(K)를 발생한다.
단계 2(A2)(증명값 계산 단계) : 증명자의 IC 카드(2)에서 난수(K)로 증명값(commitment)(R)을 계산하고 단말기(1)를 통하여 검증자에게 전송한다.
단계 3(A3)(요구값 발생 단계) : 검증자는 요구값(challenge)으로 난수(E)를 발생하여 증명자에게 전송한다.
단계 4(A4)(인증값 계산 단계) : 증명자의 IC 카드(2)는 증명자의 비공개키(X)와 증명값(R) 그리고 난수(E)로 인증값(response)(S)를 계산하고 검증자에게 전송한다.
단계 5(A5)(검증 단계) : 검증자는 증명자의 공개키(Y)와 저장하여 두었던 증명값(R), 난수(E) 그리고 인증값(S)으로 검증을 행한다.
다음으로 디지털 서명 프로토콜을 설명하면 다음과 같다.
서명자는 디지털 메시지(M)에 자신의 디지털 서명을 덧붙여 보내고자 하며, 검증자는 메시지와 그에 덧붙여진 서명을 받은 후, 그 서명을 검증하여 메시지의 출처와 변경 여부를 확인할 수 있다.
검증자는 도 1 에서와 같이 디지털 서명 프로토콜이 구현되어 있는 단말기(3)가 될 수 있으며 이를 이용하고 있는 사람이 될 수도 있다. 서명자는 자신만이 아는 비공개키(X)를 IC 카드(2)와 같이 안전한 곳에 가지고 있으며 검증자는 증명자의 공개키(Y)를 이미 갖고 있다고 가정한다. 서명자의 비공개키(X)는 알려지지 않아야 하므로 비공개키(X)가 사용되는 계산은 계산 능력을 갖춘 IC 카드(2)에서 이루어지게 된다.
단계 1(D1)(난수 발생 단계) : 서명자의 IC 카드(2)에서 난수(K)를 발생한다.
단계 2(D2)(서명값 1 계산 단계) : 서명자의 IC 카드(2)에서 난수(K)로 서명값(R)을 계산하고 단말기(1)에 전송하거나 저장한다.
단계 3(D3)(메시지 해쉬 단계) : 서명자의 단말기는 메시지를 해쉬 함수(H)로 압축하여 그 결과를 IC 카드(2)에 전송한다. 서명값(R)이 메시지와 함께 해쉬 함수(H)의 입력이 되는 경우도 있다(예컨데 쉬놀(Schnor) 디지털 서명).
단계 4(D4)(서명값 2 계산 단계) : 서명자의 IC 카드(2)는 서명자의 비공개키(X)와 서명값(R)과 해쉬 함수(H)로써 서명값(S)을 계산하여 단말기(1)에 서명값(R)과 함께(단계 2에서 저장한 경우) 전송하고 서명자의 단말기(1)는 메시지와 서명값(R, S)를 연접(∥)하여 검증자에게 전송한다(여기서 서명값(R) 또는 (S)중 한 개만 있으면 서명이 되지 않는다).
단계 5(D5)(서명 검증 단계) : 검증자는 서명자의 공개키(Y)로 메시지(M)에 대한 서명 R∥S를 검증한다.
여기서, 단계A2 및 D2의 계산은 모듈라 멱승(gkmod P)을 포함하고 있는 바, 전체 계산 시간은 단계A2 및 D2에서 걸리는 시간이라고 보면 된다. 그러나, 현재 상용화된 IC 카드는 간단한 난수발생과 암호 알고리즘만을 수행할 수 있을뿐 768비트 이상의 정수들을 실시간내에 100회 이상 곱할 수 있는 능력을 갖고 있지 않다. 이를 위해서는 Cnypt-Engine이라 불리고 있는 특수한 연산 장치를 갖추어야 한다. 즉, 현재의 IC 카드내의 램및 중앙 처리 장치를 이용하여서는 상술한 단계A2 및 D2의 계산을 필요한 시간내에 행하도록 구현하기가 어렵다.
이러한 문제를 해결하기 위하여 모듈러 연산 프로그램을 소프트웨어로 구현하여 EEPROM에 저장하고 IC 카드를 사용하고 있지 않을 때에 시간이 많이 소요되는 계산을 미리 해놓고 실제 서명 생성과 인증 시에는 저장된 값을 가져다 사용하는 사전 계산 방법이 제안되었다. 그러나, 종래의 사전 계산 방법은 IC 카드가 오프 라인(off-line)되었을 때, 즉 카드가 사용되지 않을 때(전원이 공급되지않은 상태)에는 계산 능력을 잃기 때문에 사전 계산을 행할 수 없어 현재의 IC 카드와 단말기로는 실용적인 암호화 시스템 구현이 힘들다는 문제가 있었다.
본 발명은 이러한 문제를 해결하기 위한 것으로서 본 발명의 목적은 증명자/서명자의 단말기내에서 사전 계산 알고리즘을 행하여 실체 인증/디지털 서명을 용이하게 수행할 수 있게 한 안전 모듈에서의 사전계산을 이용한 고개키 암호화 장치를 제공하는데 있다.
본 발명의 다른 목적은 서명자의 단말기내에서 사전 계산 알고리즘을 행하여 디지탈 서명을 용이하게 생성할 수 있게 한 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법을 제공하는데 있다.
이러한 목적을 달성하기 위한 본 발명은, 비공개키(X)및 비밀 암호화키가 저장된 소정의 IC 카드를 가진 증명자가 마스터키, 난수 발생 알고리즘및 모듈러 연산 알고리즘이 있는 안전 모듈(Security Module)이 장착된 단말기를 이용하여 증명자의 공개키를 구비하는 검증자에게 자신의 실체(identity)를 증명하는 방법으로서, ⅰ) 실체 인증이 개시되기 전에 상기 안전 모듈은 다수의 난수(Kj)및 이 난수(Kj)에 대응하는 증명값 (Rj) 를 생성하는 사전 계산 단계와; ⅱ) 실체 인증이 개시되면 안전 모듈은 사용되지 않은 (Kj,Rj) 에서 하나를 선택하여 (K,R)로 놓고 (R)을 증명값으로 검증자에게 전송하는 증명값 전송 단계와; ⅲ) 검증자는 증명값(R)을 저장하고 t비트의 난수(E)를 발생시켜 증명자에게 전송하는 요구값 전송 단계와; ⅳ) 증명자의 안전 모듈은 상기 IC 카드로부터 비공개키(X)를 습득하는 비공개키 습득 단계와; ⅴ) 증명자는 난수(E)가 t비트인가를 확인하고 SM(11)은 인증값(S)를 계산하여 이 값을 검증자에게 전송하는 인증값 전송 단계와; ⅵ) 검증자는 증명자의 공개키를 얻어 검증식을 수행하는 검증 단계를 구비한다.
본 발명은 또한, 비공개키(X)및 비밀키 암호화가 저장된 소정의 IC 카드내를 가진 서명자가 마스터키, 난수 발생 알고리즘및 모듈러 연산 알고리즘이 있는 안전 모듈(Security Module)을 이용하여 디지탈 서명을 생성하고, 서명자의 공개키를 구비하는 검증자가 그 서명을 검증하는 방법으로서, ⅰ) 디지털 서명이 개시되기 전에 안전 모듈은 다수의 난수 (Kj) 및 이 난수에 대응하는 (K′j,Rj) 를 각각 생성하는 사전 계산 단계와; ⅱ) 증명자의 안전 모듈은 IC 카드로부터 비공개키(X)를 습득하는 비공개키 습득 단계와; ⅲ) 안전 모듈은 사용되지 않은( K′j,Rj )에서 하나를 선택하고 서명자는 소정 메시지를 해쉬 함수로 압축하여 그 결과(H)를 IC 카드에 전송하는 메시지 해쉬 단계와; ⅳ) 안전 모듈은 서명값(S)을 산출하고 , 서명자는 서명값(R,S)을 메시지와 연접(∥)하여 상기 검증자에게 전송하는 서명 생성 단계와; ⅴ) 검증자는 서명자의 공개키로 메시지(M)에 대한 해쉬함수로 해쉬값(H)을 얻은 후, 서명 검증식을 수행하는 서명 검증 단계를 구비한다.
도 1은 종래 암호화 장치를 도시한 도면,
도 2는 본 발명에 따른 암호화 방법을 행하는 장치의 개략 블록도,
도 3은 본 발명에 따른 암호화 방법의 순서를 개략적으로 도시한 도면.
<도면의 주요부분에 대한 부호의 설명>
1, 3 : 단말기 2 : IC 카드
10 : 단말기 회로 11 : 안전 모듈
본 발명의 기본적 기술 사상은 증명자/서명자측의 단말기내에 사전 계산 알고리즘을 행하는 안전 모듈(Security Module : SM이라 함)을 구성하는데에 있다. 이와 같이 SM 내에서 사전 계산 알고리즘에 의하여 얻어진 데이터들은 안전하게 저장되어 있다가 실제로 서명이나 실체 인증을 할 때에는 비공개키를 IC 카드로부터 SM으로 전송하고, SM에서는 사전 계산된 값으로 서명 생성이나 실체 인증을 위한 계산을 행하게 된다.
한편, 이와 같은 본 발명을 행하기 위하여는 비공개키가 증명자/서명자측의 단말기에 노출되는 바, IC 카드는 먼저 단말기가 합법적인가를 확인 한 후에 비공개키를 전송해야 한다. 이를 위하여 SM에는 마스터키, IC 카드에는 마스터키로 사용자에 관한 데이터들을 암호화한 결과인 비밀 암호화키를 저장한다. IC 카드는 SM이 마스터키를 갖고 있는지를, 단말기는 IC 카드가 비밀 암호화키를 갖고 있는가를 확인하므로써 서로 적법한가를 확인하게 된다. 이 과정 도중이나 후에 IC 카드와 SM간의 세션키를 분배하고 세션키로 비공개키를 암호화하여 단말기의 SM에 전송한다. 여기서, 세션키는 비공개키를 사용할 때마다(한 세션이 형성되는 것임)달라져야 한다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 2 는 본 발명에 따른 장치의 블록도로서 부호(1)는 증명자/서명자측의 단말기를 의미하는 것으로 단말기(1)는 IC 카드(2)에 전원을 공급하고 데이터를 교환할 수 있는 단말기 회로(10)및 안전 모듈(Security Module ; 이하, SM이라 함)(11)이 형성되어있다. 단말기(1)는 후술하는 바와 같이 검증자와 연결되어 있으며, 검증자는 단말기, 퍼스널 컴퓨터, 워크스테이션등으로 구현가능하나 본 명세서에서는 단말기(3)로서 표현하였다.
여기서, 본 발명의 IC 카드(2)내에는 중앙 처리 장치, 롬, 램, 8Kbyt EEPROM(Electrically Erasable PROM)을 구비하고 있으며 롬내에에 COS(Chip Operating System)(11)이 저장되어 있다. 또한, EEPROM에는 암호 알고리즘, 난수 발생 알고리즘및 비밀 암호화키와 비공개키가 저장된다. 암호 알고리즘은 단말기(1)에 비밀 데이터를 전송하기 위하여 사용되는 대칭키 암호 알고리즘을 의미하며, 난수 발생 알고리즘은 난수를 발생시키기 위한 알고리즘으로서 후술하는 바와 같이 상호 인증및 분배를 위하여 사용된다. 또한 비밀 암호화키는 카드를 발급받을 때에 카드 인증을 위하여 저장된 키 데이터로서 SM(11)내의 마스터키로서 사용자들의 데이터들을 암호화하여 얻은 값을 의미한다. 이러한 비밀 암호화키는 후술하는 바와 같이 대칭키 암호 알고리즘의 키로서 사용된다. 또한 비공개키는 사용자 개인만이 가지고 노출되거나 변경되어서는 안되며 서명 혹은 실체 인증을 위하여 사용되는 키 데이터를 의미한다.
또한, 단말기(1)내의 SM(11)은 IC 카드(2)와 동일한 능력의 하드웨어로 구성되며 롬과 EEPROM을 구비하고 있다. 여기서 롬내에는 COS가 저장되며, EEPROM내에는 암호 알고리즘, 난수 발생 알고리즘, 모듈라 연산 알고리즘, 사전 계산 알고리즘및 마스터 키가 저장된다.
여기서, 암호 알고리즘은 IC 카드(2)내에 저장되는 알고리즘과 동일한 알고리즘이며, 난수 발생 알고리즘은 난수를 발생시키기 위한 알고리즘으로서 후술하는 바와 같이 서명, 실체 인증, 상호 인증및 세션키 분배를 위하여 사용된다.
모듈라 연산 알고리즘은 서명및 실체 인증 계산에 필요하며 큰 수의 곱, 모듈라 감소 등의 연산들로 구성된다. 사전 계산 알고리즘은 난수 발생 알고리즘과 모듈라 연산 알고리즘으로 구성되며 서명에 필요한 데이터를 서명하지 않는 동안에 계산하여 저장하여 두는 알고리즘을 의미한다. 마스터키는 카드 인증을 위하여 단말기 공급자가 모든 단말기에 공통으로 저장하는 키로써 대칭키 암호 알고리즘의 키로서 사용된다.
도 3 a, b에는 상술한 구성을 갖는 장치가 실체 인증및 디지탈 서명을 행하는 순서가 도시되어 있다. 도 3의 순서도를 쉬놀(Schnorr) 실체 인증 프로토콜과 미국의 디지털 서명 표준 알고리즘인 DSS를 예로 설명하며 사용된 기호와 표기의 정의는 다음과 같다.
P : 768 비트 이상의 소수
Q : 160 비트 이상의 P - 1을 나누는 소수
G : a(P-1)/Qmod P,1<a<P-1 이고 a(P-1)/Qmod P=1 을 만족함
h() : |Q|길이의 출력값을 갖는 충돌 회피성의 해쉬 함수
X : 비공개키 0<X<Q
Y : 공개키 Y=GXmod P
t : 안전 변수 80 이상
|Z| : Z의 비트 수
서명 생성시나 실체 인증시|Q|비트 난수(K)를 발생시켜 GKmod P 을 계산해야한다. DSS(미국의 디지털 서명 표준 알고리즘)에서는 역수 (K-1) 도 계산해야 한다. 역수 계산을 하기 위해서는 |Q| 크기의 정수에 대한 약 |Q|번의 나눗셈을 해야 하고, 멱승 계산은 |P|크기의 정수에 대한 평균 (3|Q|)/2번의 모듈라 곱을 해야한다. 이 계산들은 실체 인증, 서명 생성시 대부분의 계산 시간을 소비하며 서명할 메시지, 인증 대상과 전혀 관계없는 데이터이다. 따라서 단말기의 유휴시간(idle-time 또는 avalable time)에 여러개의 난수( Kj , j=1,2,3,....)를 발생시켜 해당되는 값들을 계산하여 보관하고, 필요할 때 보관된 데이터들을 가져다 쓰는 사전 계산 알고리즘을 이용하면 그 계산 시간을 절약할 수 있으며, 본 발명은 이러한 사전 계산 알고리즘을 이용하는 것이다.
도 3 a는 본 발명의 사전 계산 알고리즘을 사용하는 실체 인증 프로토콜의 수행 순서를 도시한 도면으로 그 순서는 다음과 같다.
단계 0(E0)(사전 계산 단계) :
상술한 바와 같이 j=1,2,3,......일 때에 다음과 같이 난수( Kj )및 증명값( Rj )을 생성한다.
Kj=r() 여기서 r()은 난수 발생 알고리즘을 의미한다.
Rj=(GKjmod P)mod Q
즉, SM(11)은 아이들(idle) 시간에 난수( Kj )및 증명값( Rj )을 여러개 계산하여 두는 것이다. 여기서 난수( Kj )는 안전하게 저장되어야 하고, 증명값( Rj )은 후에 공개될 데이터이므로 SM(11)밖의 메모리에 저장할 수도 있다.
단계 1(E1)(증명값(Commitment)(R) 전송 단계
실체 인증 프로토콜이 시작되면 증명자의 SM(11)(또는 단말기(1))은 사용되지 않은 ( Kj,Rj )에서 하나를 선택하여 (K,R)로 놓고 R을 증명값으로 검증자에게 전송한다. 여기서 선택된 ( Kj,Rj )은 안전하게 폐기되어야 한다.
단계 2(E2)(요구값(Challenge)(E) 전송 단계
검증자는 증명값(R)을 저장하고 t비트의 난수(E)를 발생시켜 증명자에게 전송한다.
단계 3(E3)(비공개키 습득 단계)
증명자의 IC 카드(2)와 SM(11)은 상호 인증및 세션키를 분배하고 증명자의 IC 카드(2)는 비공개키(X)를 세션키로 암호화하여 단말기(1)내의 SM(11)에 전송한다. SM(11)은 비공개키(X)의 암호문을 세션키로 복호하여 비공개키(X)를 습득한다. 이러한 비공개키(X)의 습득 단계는 상세히 후술하였다.
단계 4(E4)(인증값(Response)(S) 전송 단계)
증명자는 난수(E)가 t비트인가를 확인하고 다음을 SM(11)에서 계산하고 사용된 K,R을 완전히 폐기한다.
S=(K-EX) mod Q
그리고, 이 인증값(S)을 검증자에게 전송한다.
단계 5(E5)(검증 단계)
검증자는 증명자의 공개키(Y)를 얻어 (GSYEmod P)mod Q=R 인가를 확인하게 된다.
상술한 설명에서 증명자측 즉, IC 카드(11)및 SM(11)에서 실시간 계산량이 가장 많은 것은 인증값(S)을 계산하기 위하여 모듈러 곱 한 번과 모듈러 합 한 번을 하는 것이다. 이정도의 계산량은 현재의 IC 카드(11)에 들어가는 8 비트의 마이크로 프로세서로서 실용성있는 실체 인증 시스템을 구현할 수 있다.
다음으로 상술한 단계 3 즉, 비공개키 습득 단계에서 IC 카드(2)가 SM(11)에 비공개키(X)를 전송하기 위한 과정을 설명하면 다음과 같다.
단계1(F1)(IC 카드(2)와 단말기간(1)의 상호 인증 단계)
IC 카드(2)와 단말기(1)가 상호 적법한 장치인가를 확인하는 절차이다. SM(11)은 IC 카드(2)가 마스터키로 만들어진 비밀 암호화키를 가지고 있는가를 확인하고 IC 카드(2)는 SM(11)이 마스터키를 가지고 있는가를 확인한다.
단계 2(F2)(세션키 분배 단계)
비공개키(X)를 일회 사용할 때마다 한 세션이 형성되는 것이며, 각 세션마다 다른 키를 분배한다. 비밀 암호화키와 마스터키, 난수를 이용하여 IC 카드(2)와 SM(11)사이에 세션키를 공유하며 상호 인증 과정에서 세션키 분배가 이루어질 수 있다.
단계 3(F3)(비공개키 전송)
IC 카드(2)는 공유된 세션키를 이용하여 암호 알고리즘으로 비공개키를 암호화하여 그 결과를 단말기(11)에 전송한다.
단계 4(F4)(비공개키 복호 단계)
SM(11)에서는 공유한 세션키로 암호화된 비공개키를 복호하여 사용자의 비공개키를 얻어낸다.
도 3 b는 본발명에 따른 디지털 서명 생성 과정을 도시한 것이다. 그 예로써 DSS를 다음에 설명하였다.
단계 0(G1)(사전 계산 단계)
상기 단계(F1) 에서와 같이 SM(11))은 j=1,2,3,......일 때에 다음과 같이 난수( Kj )및 증명값( Rj )을 발생한다.
Kj =r() 여기서 r()은 난수 발생 알고리즘을 의미한다.
K′j= Kj -1mod Q
Rj=(GKj mod P)mod Q
즉, SM(11)은 아이들(idle) 시간에 데이터( K′j,Rj )를 여러개 계산하여두는 것이다. 여기서 K′j 는 SM(11)내부에 저장해야 하지만, Rj 는 외부에 저장할 수도 있다.
단계 1(G1)(비공개키 습득 단계)
디지탈 서명 프로토콜이 시작되면 IC 카드(2)와 SM(11)은 상술한 단계(F1-F4)에서와 같이 상호 인증및 세션키를 분배하고, IC 카드(20는 비공개키(X)를 세션키로 암호화하여 단말기(1)내의 SM(11)에 전송한다. SM(11)은 비공개키(X)의 암호문을 세션키로 복호하여 비공개키(X)를 습득한다.
단계 2(G2)(메시지 해쉬 단계)
사용되지 않은 ( K′j,Rj )에서 하나를 선택하여 ( K-1,R )로 놓고 선택된 ( K′j,Rj )은 안전하게 폐기한다. 그리고, 서명자의 단말기(1)는 메시지를 해쉬 함수로 압축하여 그 결과(H)를 IC 카드에 전송한다.
단계 3(G3)(서명 생성 단계)
SM(11)은 서명자의 비공개키(X)와 서명값(R), 해쉬값(H)으로 서명값(S)을 다음과 같이 계산한다.
S=K-1(H+XR)mod Q
서명자의 단말기(1)는 서명값(R,S)을 SM(11)으로부터 받아 메시지와 연접(∥)하여 검증자에게 전송한다(여기서, 서명값(R 또는 S 하나만 있으면 서명이 되지 않는다).
단계 4(G4)(서명 검증 단계)
검증자는 서명자의 공개키(Y)로 메시지(M)(혹은 R과 함께)에 대한 해쉬 함수로 해쉬값(H)을 얻은 후 서명 R∥S를 다음과 같이 검증한다.
U=S-1H,V=S-1R
( GUYVmod P ) mod Q = R인가를 검증한다.
즉, 본 발명에서는 실체 인증및 서명을 위한 대부분의 계산을 단말기내의 안전 모듈이 담당하도록 구성하므로써 현재 IC 카드의 계산 능력 제한성을 극복하고 안전한 쉬놀형 암호학적 프로토콜을 구현할 수 있게 한 것이다. 이와 같이 본 발명에서 제시하는 IC 카드는 종래의 IC 카드에 비공개키만을 더 저장한 형태이며 SM은 IC 카드와 같은 하드웨어 구성이고 모듈러 연산과 같은 특수한 연산 프로그램을 구비하게 된다. 이를 이용하여 실체 인증및 서명 계산시 가장 많은 시간이 소요되는 멱승 계산 R=f(GKmod P) 또는 역수 계산 K-1mod Q 을 미리 계산해 두므로써 실체 쉬놀형의 인증값 계산, 서명 생성 등을 빠른 시간내에 수행할 수 있는 것이다.
이와 같이 본 발명은 공개키 암호 프로토콜의 수행시 필요한 연산 과정의 일부를 별도의 안전 장치를 이용하여 사전에 수행케 하므로써 실체 인증및 디지털 서명 과정을 기존의 IC 카드로써 효과적으로 신속히 행할 수 있다는 효과가 있다.

Claims (4)

  1. 비공개키(X)및 비밀키가 소정의 IC 카드내에 저장되어 있으며 마스터키를 갖고 난수 발생 알고리즘및 모듈러 연산 알고리즘이 안전 모듈(Security Module)내에서 행하여지는 증명자와, 공개키를 구비하는 검증자간의 실체 인증 방법으로서,
    ⅰ) 상기 실체 인증이 개시되기 전에 상기 안전 모듈은 다수의 난수( Kj )및 이 난수( Kj )에 대응하는 증명값( Kj,Rj=(GKjmod P ) mod Q : P는 768 비트 이상의 소수, Q는 160비트 이상의 P-1을 나누는 소수, G는 a(P-1)/Qmod P,1<a<P-1 이고 a(P-1)/Qmod P>1 을 만족하는 수)를 생성하는 사전 계산 단계와;
    ⅱ) 상기 실체 인증이 개시되면 상기 안전 모듈은 사용되지 않은 ( Kj,Rj )에서 하나를 선택하여 (K,R)로 놓고 상기 (R)을 증명값으로 검증자에게 전송하는 증명값 전송 단계와;
    ⅲ) 상기 검증자는 상기 증명값(R)을 저장하고 t비트의 난수(E)를 발생시켜 상기 증명자에게 전송하는 요구값 전송 단계와;
    ⅳ) 상기 증명자의 안전 모듈은 상기 IC 카드로부터 비공개키(X)를 습득하는 비공개키 습득 단계와;
    ⅴ) 상기 증명자는 상기 난수(E)가 t비트인가를 확인하고 상기 SM(11)은 인증값(S,S=(K-EX)mod Q)을 계산하여 이 값을 상기 검증자에게 전송하는 인증값 전송 단계와;
    ⅵ) 상기 검증자는 상기 증명자의 공개키( Y=GXmod P )를 얻어(검증: GSYEmod P)mod Q=R )인가를 확인하므로써 실체 인증을 행하는 검증 단계를 구비하는 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법.
  2. 제 1 항에 있어서,
    상기 비공개키 습득 단계는,
    상기 IC 카드는 상기 안전 모듈이 마스터키를 구비하는가를, 상기 안전 모듈은 상기 IC 카드가 비밀키를 가지고 있는가를 확인하는 단계와;
    상기 IC 카드및 상기 안전 모듈에 동일한 세션키를 각기 공유하는 단계와;
    상기 IC 카드는 공유된 세션키를 이용하여 암호 알고리즘으로 비공개키를 암호화하여 그 결과를 상기 안전 모듈에 전송하는 단계와;
    상기 안전 모듈은 상기 공유한 세션키로 암호화된 비공개키를 복호하는 단계를 구비하는 안전 모듈에서의 사건계산을 이용한 공개키 암호화 방법.
  3. 비공개키(X)및 비밀키가 소정의 IC 카드내에 저장되어 있으며 마스터키를 갖고 난수 발생 알고리즘및 모듈러 연산 알고리즘이 안전 모듈(Security Module)내에서 행하여지는 서명자와, 공개키를 구비하는 검증자간의 디지털 서명 방법으로서,
    ⅰ) 상기 디지털 서명이 개시되기 전에 상기 안전 모듈은 다수의 난수( Kj )및 이 난수( Kj )에 대응하는 ( K′j:K′j=Kj -1mod Q ) 및 서명값 (Rj-(GKmod P)mod Q) (여기서 P는 768 비트 이상의 소수, Q는 160비트 이상의 P-1을 나누는 소수 G는 a(P-1)/Qmod P,1<a<P-1 이고 a(P-1)/Qmod P>1 을 만족하는 수)을 각각 형성하는 사전 계산 단계와;
    ⅱ) 상기 증명자의 안전 모듈은 상기 IC 카드로부터 비공개키(X)를 습득하는 비공개키 습득 단계와;
    ⅲ) 상기 안전 모듈은 사용되지 않은 (K′j,Rj) 에서 하나를 선택하고 상기 서명자는 소정 메시지를 해쉬 함수로 압축하여 그 결과(H)를 IC 카드에 전송하는 메시지 해쉬 단계와;
    ⅳ)상기 안전 모듈은 SM(11)은 서명값( S : S=K-1(H+XR) mod Q)을 산출하고 , 상기 서명자는 상기 서명값(R,S)을 메시지와 연접(∥)하여 상기 검증자에게 전송하는 서명 생성 단계와;
    ⅴ)상기 검증자는 서명자의 공개키( Y=GXmod P )로 메시지(M)에 대항 해쉬함수로 해쉬값(H)을 얻은 후, 서명 R∥S로 검증식 (U=S-1H mod Q, V-S-1R mod Q, (GUYVmod P) mod Q=R) 을 확인하는 서명 검증 단계를 구비하는 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법.
  4. 제 3 항에 있어서,
    상기 비공개키 습득 단계는,
    상기 IC 카드는 상기 안전 모듈이 마스터키를 구비하는가를, 상기 안전 모듈은 상기 IC 카드가 비밀키를 가지고 있는가를 확인하는 단계와;
    상기 IC 카드및 상기 안전 모듈에 동일한 세션키를 각기 공유하는 단계와;
    상기 IC 카드는 공유된 세션키를 이용하여 암호 알고리즘으로 비공개키를 암호화하여 그 결과를 상기 안전 모듈에 전송하는 단계와;
    상기 안전 모듈은 상기 공유한 세션키로 암호화된 비공개키를 복호하는 단계를 구비하는 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법.
KR1019970059424A 1997-11-12 1997-11-12 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법 KR100258310B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970059424A KR100258310B1 (ko) 1997-11-12 1997-11-12 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970059424A KR100258310B1 (ko) 1997-11-12 1997-11-12 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법

Publications (2)

Publication Number Publication Date
KR19990039365A KR19990039365A (ko) 1999-06-05
KR100258310B1 true KR100258310B1 (ko) 2000-06-01

Family

ID=19524574

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970059424A KR100258310B1 (ko) 1997-11-12 1997-11-12 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법

Country Status (1)

Country Link
KR (1) KR100258310B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030135471A1 (en) * 2000-12-22 2003-07-17 Jean-Luc Jaquier Match control method
JP2004015665A (ja) 2002-06-10 2004-01-15 Takeshi Sakamura 電子チケット流通システムにおける認証方法およびicカード
KR100441397B1 (ko) * 2002-10-31 2004-07-23 소프트포럼 주식회사 메시지의 인증 및 암호화 방법
CN110781140B (zh) * 2019-09-06 2023-08-18 平安科技(深圳)有限公司 区块链中数据签名的方法、装置、计算机设备及存储介质
CN112560070B (zh) * 2020-12-28 2024-03-22 杭州趣链科技有限公司 具有审核功能的数据共享方法

Also Published As

Publication number Publication date
KR19990039365A (ko) 1999-06-05

Similar Documents

Publication Publication Date Title
US6178507B1 (en) Data card verification system
US6446207B1 (en) Verification protocol
US4956863A (en) Cryptographic method and apparatus for public key exchange with authentication
EP0821504B1 (en) Method and system for depositing private key used in RSA cryptosystem
US5796833A (en) Public key sterilization
Park On certificate-based security protocols for wireless mobile communication systems
JP2606419B2 (ja) 暗号通信システムと暗号通信方法
EP0695056B1 (en) A method for sharing secret information, generating a digital signature, and performing certification in a communication system that has a plurality of information processing apparatuses and a communication system that employs such a method
EP1526676B1 (en) Conference session key distribution method on an id-based cryptographic system
US8868911B2 (en) Method for key generation, member authentication, and communication security in dynamic group
US20040139029A1 (en) Apparatus and method for generating and verifying ID-based blind signature by using bilinear parings
US20020055962A1 (en) Automatically solving equations in finite fields
US7248692B2 (en) Method of and apparatus for determining a key pair and for generating RSA keys
KR100396740B1 (ko) 계산적 디피-헬만 가정에 기반하는 안전성 증명 가능한공개키 암호화 방법
KR100258310B1 (ko) 안전 모듈에서의 사전계산을 이용한 공개키 암호화 방법
JP4307589B2 (ja) 認証プロトコル
Kwon Virtual software tokens-a practical way to secure PKI roaming
Andreevich et al. On Using Mersenne Primes in Designing Cryptoschemes
US6724893B1 (en) Method of passing a cryptographic key that allows third party access to the key
EP4208982A1 (en) Method for electronic signing and authenticaton strongly linked to the authenticator factors possession and knowledge
JP3694242B2 (ja) 署名付き暗号通信方法及びその装置
JPH07118709B2 (ja) 秘密情報通信方式
KR100363253B1 (ko) 통신에서 비밀키를 생성하는 방법 및 그 장치
KR950002164B1 (ko) 전자서명 및 인증방법
EP2315390B1 (en) Key agreement and transport protocol with implicit signatures

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

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee