KR100525124B1 - Method for Verifying Digitally Signed Documents - Google Patents

Method for Verifying Digitally Signed Documents Download PDF

Info

Publication number
KR100525124B1
KR100525124B1 KR10-2003-0001627A KR20030001627A KR100525124B1 KR 100525124 B1 KR100525124 B1 KR 100525124B1 KR 20030001627 A KR20030001627 A KR 20030001627A KR 100525124 B1 KR100525124 B1 KR 100525124B1
Authority
KR
South Korea
Prior art keywords
signature
mod
electronic document
electronic
terminal
Prior art date
Application number
KR10-2003-0001627A
Other languages
Korean (ko)
Other versions
KR20040064780A (en
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-2003-0001627A priority Critical patent/KR100525124B1/en
Publication of KR20040064780A publication Critical patent/KR20040064780A/en
Application granted granted Critical
Publication of KR100525124B1 publication Critical patent/KR100525124B1/en

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3225Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document
    • H04N2201/3233Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of data relating to an image, a page or a document of authentication information, e.g. digital signature, watermark
    • H04N2201/3235Checking or certification of the authentication information, e.g. by comparison with data stored independently

Landscapes

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

Abstract

본 발명은 전자 서명된 문서의 검증 방법에 관한 것으로, 특히 전자 문서와 그 출력 문서를 함께 검증하고 처리할 수 있는 인프라를 구축하여 거래 당사자 간 전자 문서의 직접적인 양방향 처리의 활성화에 기여토록 하는 방안에 관한 것이다.The present invention relates to a method for verifying an electronically signed document. In particular, the present invention provides a method for contributing to the activation of direct two-way processing of electronic documents between trading partners by constructing an infrastructure that can verify and process electronic documents and their output documents together. It is about.

본 발명의 전자 서명된 문서의 검증 방법은 서명자 단말에서 출력 가능한 전자 서명을 전자 문서에 삽입하여 전송하는 과정과; 검증자 단말에서 상기 전송되는 전자 문서를 디지털 방식으로 출력하여 출력된 전자 문서의 검증을 요청하는 과정과; 증명자 단말에서 상기 출력된 전자 문서에 삽입되어 있는 전자 서명의 증명을 통해 해당 전자 문서를 검증하는 과정을 포함하여 이루어지는 것을 특징으로 한다.The method for verifying an electronically signed document of the present invention includes the steps of: inserting and transmitting an electronic signature that can be output from a signer terminal into an electronic document; Requesting verification of the outputted electronic document by digitally outputting the transmitted electronic document in a verifier terminal; And a step of verifying the electronic document through the proof of the electronic signature inserted in the outputted electronic document in the authenticator terminal.

본 발명에 의하면 대학, 동사무소 등과 같이 제 증명서를 발급하는 기관에 전자 서명된 문서의 안전한 출력화 및 검증 방안을 제공함으로써, 정보화 사회에서의 사용자의 편의성을 크게 높일 수 있다. According to the present invention, it is possible to greatly increase the convenience of the user in an information society by providing a method for securely outputting and verifying an electronically signed document to an organization that issues a first certificate, such as a university or a government office.

또한, 단순한 신원확인 용도에서 당사자 간 전자문서의 직접적인 양방향 처리를 구현함으로써, 전자서명의 활성화에 기여할 수 있다.In addition, it is possible to contribute to the activation of digital signatures by implementing direct two-way processing of electronic documents between parties for simple identification purposes.

Description

전자 서명된 문서의 검증 방법{Method for Verifying Digitally Signed Documents}Method for Verifying Digitally Signed Documents}

본 발명은 전자 서명된 문서의 검증 방법에 관한 것으로, 특히 전자 문서와 그 출력 문서를 함께 검증하고 처리할 수 있는 인프라를 구축하여 거래 당사자 간 전자 문서의 직접적인 양방향 처리의 활성화에 기여토록 하는 방안에 관한 것이다.The present invention relates to a method for verifying an electronically signed document. In particular, the present invention provides a method for contributing to the activation of direct two-way processing of electronic documents between trading partners by constructing an infrastructure that can verify and process electronic documents and their output documents together. It is about.

일반적으로, 정보화 사회로 본격적으로 진입해 가는 과정에서 정보화의 역기능에 해당하는 정보 침해 문제가 심각하게 대두되고 있다. 개인 및 사회의 직·간접 자원들이 고도로 정보화되어 가고 있으며, 또한 각종 전자 문서의 유통이 본격화되면서 앞으로 정보침해로 인한 피해는 더욱 커질 것으로 예상된다.In general, the problem of information infringement, which is a dysfunction of informatization, has emerged seriously in the process of entering the information society in earnest. The direct and indirect resources of individuals and society are becoming highly informatized, and the distribution of various electronic documents is expected to increase in earnest.

현재 정보통신기술발전 및 고속인터넷 이용확산에 따라 사회 여러 분야에서 정보보호에 대한 수요가 폭발적으로 증가하고 있다. 세계 정보보호기술시장은 연평균 27% 이상의 고성장이 예상되며 2000년 110억 달러 규모에서 오는 2005년이면 연 300억 달러 규모에 이를 것으로 기대된다.With the development of information and communication technology and the spread of high-speed Internet, the demand for information protection is exploding in various fields of society. The global information security technology market is expected to grow at an annual average of 27% or more and reach $ 30 billion annually in 2005 from $ 11 billion in 2000.

이에 국내·외의 정부 및 기업에서는 공개키 기반구조의 보급을 통하여 전자 서명된 문서의 유통을 활성화하기 위한 노력을 하고 있다. 즉, 전자서명 개념의 도입으로 인터넷과 같은 가상공간 상에서도 거래의 안전 신뢰성이 일부 보장되고 있다. Governments and corporations at home and abroad are making efforts to promote the distribution of electronically signed documents through the dissemination of public key infrastructure. In other words, with the introduction of the concept of digital signature, the security reliability of transactions is partially guaranteed even in the virtual space such as the Internet.

그러나 인터넷이 생활의 일부분이 되면서 많은 사용자들은 전자문서에 대한 개념과 그 활용 범위가 점점 확대되어, 과거에는 반드시 오프라인 방법(대면인증)을 통해서만 발급 가능했던 문서에 대해서도 이제는 전자문서 형태의 발급을 원하게 되었다. 즉, 전자서명을 이용한 응용서비스의 수요가 크게 잠재되어 있는 상황이라고 말할 수 있다. However, as the Internet became a part of life, many users have expanded the concept of electronic documents and their range of application, and now they want to issue electronic documents for documents that could only be issued through offline methods (face-to-face authentication). Was done. In other words, it can be said that there is a great potential of demand for application services using digital signatures.

하지만 전자 서명된 문서는 전자적인 형태로는 그 유효성을 검증할 수 있는 반면, 프린터 등을 통해서 출력된 오프라인 문서에 대해서는 유사한 수준의 유효성 검증 방법이 현재는 존재하지 않는다. 따라서 아직도 대부분의 거래는 실세계를 중심으로 이루어지고 있다.However, while electronically signed documents can be validated in electronic form, a similar level of validation method does not currently exist for offline documents printed through a printer. As a result, most transactions are still centered around the real world.

본 발명은 전술한 바와 같은 문제점을 해결하기 위한 것으로 그 목적은, 서명자가 출력 문서상에 나타날 수 있는 출력 서명을 전자 문서에 삽입하여 전송하고 증명자가 출력된 전자 문서에 삽입되어 있는 출력 서명의 증명을 통해 해당 전자 문서를 검증하게 함으로써, 전자 문서와 그 출력 문서를 함께 검증하고 처리할 수 있는 인프라를 구축하여 거래 당사자 간 전자문서의 직접적인 양방향 처리의 활성화에 기여토록 하는데 있다. SUMMARY OF THE INVENTION The present invention has been made to solve the above-described problems, and an object thereof is to provide proof of an output signature inserted in an electronic document in which the signer inserts and transmits an output signature that can appear on the output document. Through the verification of the electronic document through this, the infrastructure to verify and process the electronic document and its output document together is to contribute to the activation of direct two-way processing of electronic documents between trading partners.

상술한 바와 같은 목적을 달성하기 위한 본 발명의 전자 서명된 문서의 검증 방법은, 서명자 단말에서 출력 가능한 전자 서명을 전자 문서에 삽입하여 전송하는 과정과; 검증자 단말에서 상기 전자 문서를 디지털 방식으로 출력하여 출력된 전자 문서의 검증을 요청하는 과정과; 증명자 단말에서 상기 출력된 전자 문서에 삽입되어 있는 전자 서명의 증명을 통해 해당 전자 문서를 검증하는 과정을 포함하여 이루어지는 것을 특징으로 한다.According to an aspect of the present invention, there is provided a method of verifying an electronically signed document, the method comprising: inserting and outputting an electronic document output from a signer terminal into an electronic document; Requesting verification of the outputted electronic document by digitally outputting the electronic document in a verifier terminal; And a step of verifying the electronic document through the proof of the electronic signature inserted in the outputted electronic document in the authenticator terminal.

바람직하게는, 상기 전자 서명을 전자 문서에 삽입하여 전송하는 과정은 상기 서명자 단말에서 인증 방법에 의해 서명되어진 데이터들인 전자 문서의 주요 필드를 선택하는 단계와; 상기 주요 필드를 인코딩하여 데이터 매트릭스 코드를 생성하는 단계와; 상기 주요 필드에 대한 서명 매트릭스 코드를 생성하는 단계와; 상기 생성된 데이터 매트릭스 코드 및 서명 매트릭스 코드를 전자 문서에 삽입하여 전송하는 단계를 포함하여 이루어지는 것을 특징으로 한다.Preferably, the step of inserting and transmitting the electronic signature into the electronic document comprises: selecting a main field of the electronic document which is data signed by an authentication method at the signer terminal; Encoding the main field to generate a data matrix code; Generating a signature matrix code for the primary field; And inserting the generated data matrix code and signature matrix code into an electronic document and transmitting the same.

또한 바람직하게는, 상기 서명 매트릭스 코드를 생성하는 단계는 상기 출력 가능한 전자 서명의 생성을 위한 매개 변수를 설정하는 단계와; 상기 설정된 매개 변수를 이용해 상기 주요 필드에 대한 전자 서명을 생성하는 단계와; 상기 생성된 서명 값을 인코딩하는 단계를 포함하여 이루어지는 것을 특징으로 한다.Also preferably, generating the signature matrix code comprises: setting a parameter for generating the outputable electronic signature; Generating a digital signature for the primary field using the set parameter; And encoding the generated signature value.

바람직하게는, 상기 전자 서명을 위한 매개 변수를 설정하는 단계는 비트 길이가 512+256i(i=0,...,6)이 되는 큰 소수 p와, 비트 길이가 128+32j(j=0,...4)이고 이되는 소수 q, 군(group) Zp *에서 g=a(p-1)/q mod p(aZp *)인 위수 q의 유일한 순환 부그룹의 생성자 g, 및 Zp *에서 비밀키인 x를 생성하는 단계와; 상기 생성된 p, g, x를 이용하여 y=g-xmod p가 되는 공개키 y를 계산하고 해당 인증 기관으로부터 인증서를 발급받아 사용자 변수 z=h(CertData)의 해쉬 값을 계산하는 단계를 포함하여 이루어지는 것을 특징으로 한다.Advantageously, setting the parameter for the digital signature comprises a large prime number p with a bit length of 512 + 256i (i = 0, ..., 6), and a bit length of 128 + 32j (j = 0). , ... 4) Is the prime q, group Z p * in g = a (p-1) / q mod p (a Generating a generator g of the only recursive subgroup of rank q of Z p * ) and a secret key x from Z p * ; Computing a public key y such that y = g -x mod p using the generated p, g, and x, and issuing a certificate from a certification authority to calculate a hash value of user variable z = h (CertData). It is characterized by comprising.

또한 바람직하게는, 상기 전자 서명을 생성하는 단계는 임의의 랜덤 변수 k(0<k<q)를 선택하는 단계와; 상기 선택된 랜덤 변수 k를 이용하여 서명의 첫번째 값 r=h(gk mod p)를 계산하는 단계와; 상기 계산된 r을 이용하여 서명의 두번째 값 s=x(k-rh(z,m)) mod q를 계산하는 단계와; 상기 계산된 r, s와 인증서를 인증 서버로 전송하는 단계와; 상기 인증 서버에서 임의의 정수인 비밀키 t(0<t<q)를 선택하는 단계와; 상기 선택된 t를 이용하여 상기 전송된 s를 암호화한 s'=(s+t) mod q인 s'를 계산하는 단계와; 상기 계산된 s'를 서명자 단말로 전송하는 단계와; 상기 t를 이용하여 =y-t mod p가 되는 검증 허락값 를 계산한 다음 상기 r과 함께 저장하는 단계를 포함하여 이루어지는 것을 특징으로 한다.Also preferably, generating the digital signature comprises selecting a random random variable k (0 <k <q); Calculating a first value r = h (g k mod p) of the signature using the selected random variable k; Using the calculated r, the second value of the signature s = x (kr calculating h (z, m)) mod q; Transmitting the calculated r, s and certificates to an authentication server; Selecting a secret key t (0 <t <q) which is an arbitrary integer in the authentication server; Calculating s 'with s' = (s + t) mod q which encrypts the transmitted s using the selected t; Transmitting the calculated s' to a signer terminal; Using t validation allowance = y -t mod p Computing and storing with the r, characterized in that consisting of.

또한 바람직하게는, 상기 증명자 단말에서 출력된 전자 문서를 증명하는 과정은 상기 검증자 단말로부터 전송되는 출력된 전자 문서의 비트열 r(0<r<q)과 s'(0<s'<q)를 검사하는 단계와; 상기 r을 인증 서버로 전송하여 검증 허락을 요청하는 단계와; 상기 인증 서버로부터 검증 허락값 가 수신되는 경우 사용자 변수 z=h(CertData)를 계산하는 단계와; 상기 계산된 z를 이용하여 중간값 u=rh(z,m) mod q를 계산하는 단계와; 상기 s'를 이용하여 증거값 w=ys' mod p를 계산하는 단계와; 상기 계산된 w와 u를 이용하여 v=h(wgu mod p)를 계산하는 단계와; 상기 계산된 v와 상기 r을 비교하여 v=r인 경우 해당 서명을 받아들이는 단계를 포함하여 이루어지는 것을 특징으로 한다.Also preferably, the process of authenticating the electronic document output from the prover terminal may include bit strings r (0 <r <q) and s '(0 <s'<) of the outputted electronic document transmitted from the verifier terminal. q) checking; Sending the r to an authentication server to request verification permission; Verification permission value from the authentication server Calculating a user variable z = h (CertData) when is received; Median u = r using the calculated z calculating h (z, m) mod q; Calculating a proof value w = y s ' mod p using the s' ; Using the calculated w and u v = h (w calculating g u mod p); And comparing the calculated v with the r and accepting the corresponding signature when v = r.

더욱 바람직하게는, 서명자 단말과 인증 서버에서 검증자 단말의 수를 제한하기 위한 카운트 n의 정보를 송수신하는 단계와; 상기 서명자 단말에서 카운트 정보를 서명 매트릭스 코드에 암호화 하여 전자 문서에 삽입하는 단계와; 상기 인증 서버에서 증명자 단말로부터 검증 허락 요청이 수신되는 경우 상기 카운트 n을 감소시킨 후 n=0인지 여부를 확인하는 단계와; 상기 카운트 n이 0인 경우 검증 허락 요청을 거부하고 카운트 n이 0이 아닌 경우 내부에 저장하고 있는 검증 허락값 를 증명자 단말로 전송하는 단계를 더 포함하여 이루어지는 것을 특징으로 한다.More preferably, transmitting and receiving information of the count n for limiting the number of verifier terminals in the signer terminal and the authentication server; Encrypting count information in a signature matrix code at the signer terminal and inserting the count information into an electronic document; Confirming whether n = 0 after decreasing the count n when a verification permission request is received from a prover terminal at the authentication server; If the count n is 0, the verification permission request is rejected. If the count n is not 0, the verification permission value stored therein is stored. It characterized in that it further comprises the step of transmitting to the prover terminal.

이하, 본 발명에 따른 실시예를 첨부한 도면을 참조하여 상세하게 설명하면 다음과 같다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 전자 서명된 문서의 안전성·신뢰성 있는 출력화 및 검증을 위한 시스템 구성을 도시한 도면이다.1 is a diagram showing a system configuration for the safe and reliable output and verification of electronically signed documents.

상기 도 1의 시스템을 구현하기 위한 구체적인 프로토콜의 초안을 한국 표준 전자서명 알고리즘인 KCDSA를 바탕으로 하여 설계하였으며, 해당 시스템은 서명자 단말(이하 '서명자'라고만 칭함)(10)과 인증 서버(20), 검증자 단말(이하 '검증자'라고만 칭함)(30) 및 증명자 단말(이하 '증명자'라고만 칭함)(40)로 구성되어 각 구성 블럭간에 제안 프로토콜을 수행함으로써, 전자 서명된 문서의 안전성·신뢰성 있는 출력화 및 검증을 위한 목적을 달성할 수 있다. 특히, 본 발명에서는 제안 프로토콜에 대한 구체적인 설계를 완수하였으며, 안전성에 대한 분석도 병행하였다.A draft of a specific protocol for implementing the system of FIG. 1 was designed based on KCDSA, a Korean standard digital signature algorithm, and the system is a signer terminal (hereinafter referred to only as a 'signer') 10 and an authentication server 20. And a verifier terminal (hereinafter referred to only as 'verifier') 30 and a prover terminal (hereinafter referred to as 'certifier') 40 to perform a proposed protocol between each component block, thereby performing Achieve objectives for safe and reliable printing and verification. In particular, the present invention has completed the specific design of the proposed protocol, and also analyzed the safety.

상기 서명자(10)는 인증 서버(20)와 연동하여 전자 문서의 서명을 생성하고 서명된 문서를 검증자(40)에게 전송한다. The signer 10 works with the authentication server 20 to generate a signature of the electronic document and transmits the signed document to the verifier 40.

검증자(40)는 상기 서명자(10)로부터 전송되는 전자 문서를 인쇄한 후, 증명자(30)에게 그 출력된 문서의 유효성 검증을 요청한다.The verifier 40 prints the electronic document transmitted from the signer 10 and then requests the verifier 30 to validate the output document.

증명자(30)는 상기 인증 서버(20)와 연동하여 출력(인쇄)된 전자 문서상의 서명을 검증한다.The prover 30 verifies the signature on the output (printed) electronic document in cooperation with the authentication server 20.

상기 각 구성 블럭간의 관계에 대한 요구사항은 다음과 같다.The requirements for the relationship between the building blocks are as follows.

서명자(10)는 검증 과정을 제어하는 인증 서버(20)를 신뢰하지만 인증 서버(20)로 주요 자료를 알려줄 필요는 없으며, 검증자(40)에게 서명된 문서의 출력을 요구한다. 또한, 서명자(10)는 증명자(30)와 검증자(40)가 서명된 문서를 조작할 가능성을 고려하여 해당 증명자(30) 및 검증자(40)를 신뢰하지 않는다. 이것은 무결성의 개념을 내포하고 있다.The signer 10 trusts the authentication server 20 that controls the verification process, but does not need to inform the authentication server 20 of the main material, but requests the verifier 40 to output the signed document. In addition, the signer 10 does not trust the authenticator 30 and the verifier 40 in consideration of the possibility that the prover 30 and the verifier 40 can manipulate the signed document. This implies the concept of integrity.

인증 서버(20)는 서명을 생성하는 서명자(10)를 신뢰하지만, 증명자(30)와 검증자(40)가 서명된 문서를 조작할 가능성을 고려하여 해당 증명자(30)와 검증자(40)를 신뢰하지 않는다. 이것은 무결성의 개념을 내포하고 있다.The authentication server 20 trusts the signer 10 generating the signature, but considering the possibility that the prover 30 and the verifier 40 can manipulate the signed document, the authenticator 30 and the verifier ( 40) Do not trust This implies the concept of integrity.

증명자(30)는 검증 과정을 제어하는 인증 서버(20)를 신뢰하지만 인증 서버(20)에 주요 자료를 알려줄 필요는 없으며, 서명자(10)가 서명한 문서를 재사용하거나 수정할 수 있다는 가정하에서 검증자(40)를 신뢰하지 않는다.The authenticator 30 trusts the authentication server 20 that controls the verification process, but does not need to inform the authentication server 20 of the main material, and assumes that the document signed by the signer 10 can be reused or modified. Do not trust the child (40).

검증자(40)는 서명을 생성하는 서명자(10)를 신뢰하고, 증명자(30)에게 서명자가 서명한 전자 문서를 검증하게 한다.The verifier 40 trusts the signer 10 that generates the signature and allows the authenticator 30 to verify the electronic document signed by the signer.

상기와 같이, 전자 서명된 문서의 안전성·신뢰성 있는 출력화 및 검증을 위한 시스템에는 확실한 두 가지의 경로가 있다. 첫 번째 경로인 서명자(10)와 인증 서버(20) 및 증명자(30)간의 경로는 인쇄할 수 있는 서명을 제어하기 위한 경로이며, 두 번째 경로인 서명자(10)와 검증자(40) 및 증명자(30)간 경로는 서명 처리를 완성하기 위한 경로이다. As mentioned above, there are two clear paths to the system for the safe and reliable printing and verification of electronically signed documents. The first path between the signer 10 and the authentication server 20 and the authenticator 30 is a path for controlling the printable signature, and the second path, the signer 10 and the verifier 40 and The path between the provers 30 is a path for completing the signature process.

시스템에서 각 구성 블럭들이 상호 연결성을 갖도록 하기 위해, 상기 첫번째 경로는 문서의 비밀성을 제공하고, 두번째 경로는 문서의 무결성을 제공한다. 다시 말하면, 서명자(10)와 증명자(30)는 상기 첫번째 경로에서 제공받는 비밀성에 의해 인증 서버(20)에게 문서를 알려주지 않아도 되며, 나아가 서명자(10)와 증명자(30)는 두번째 경로에서 제공받는 무결성에 의해서 검증자(40)가 문서를 수정할 수 없다고 믿는다.In order for each building block to be interconnected in the system, the first path provides the confidentiality of the document and the second path provides the integrity of the document. In other words, the signer 10 and the authenticator 30 do not need to inform the authentication server 20 by the confidentiality provided in the first path, and further, the signer 10 and the authenticator 30 in the second path. It is believed that the verifier 40 cannot modify the document due to the integrity provided.

시스템의 각 구성 블럭들은 상기 요구 사항들에 의해 분류되어졌다고 간주한다. 그러나 융통성에 대한 언급을 위해 다음의 경우를 고려해 본다. 즉, 상기 요구 사항들이 정확히 적용되어진 경우 각 개체들은 분류되어 진다. 그러나, 상기 인증 서버(20)에서 신뢰하는 것처럼 증명자(30)도 서명자(10)를 신뢰하는 경우 서명자(10)와 인증 서버(20)는 동일한 개체일 수 있고, 서명자(10)와 증명자(30)가 동일한 개체일 수 있으며, 서명자(10)와 인증 서버(20) 및 증명자(30)가 동일한 개체일 수 있다.Each building block of the system is considered to be classified by the above requirements. However, for the sake of flexibility, consider the following cases. In other words, each entity is classified if the above requirements are applied correctly. However, if the authenticator 30 also trusts the signer 10 as the authentication server 20 trusts, the signer 10 and the authentication server 20 may be the same entity, and the signer 10 and the prover The 30 may be the same entity, and the signer 10, the authentication server 20, and the authenticator 30 may be the same entity.

다음으로, 시스템에 적용되는 프로토콜에 대하여 상세하게 설명하면, 일반적으로 프로토콜(P)은 첨부한 도면 도 2에 도시된 바와 같이 서명 생성과 서명 처리 및 서명 인증으로 구성된다.Next, the protocol applied to the system will be described in detail. In general, the protocol P has a signature generation and signature processing as shown in FIG. And signature authentication.

상기 서명 생성 과정(Signature generation)에서 서명자(10)는 인증 서버(20)와 연동을 통해 전자문서(11)를 생성하고, 전자 문서(11)의 주요 필드(Primary Fields)(12)를 선택한 다음, 주요 필드(12)를 바코드에 인코딩하여 데이터 매트릭스(Matrix) 코드(13)를 생성한다. 그리고, 주요 필드(12)에 대하여 전자 서명을 하고, 해당 서명값을 바코드에 인코딩하여 서명 매트릭스 코드(14)를 생성하고, 전자 문서(11)에 데이터 매트릭스 코드(13) 및 서명 매트릭스 코드(14)를 삽입하여 출력(인쇄) 가능한 서명을 생성한다.In the signature generation, the signer 10 generates an electronic document 11 through interworking with the authentication server 20, selects primary fields 12 of the electronic document 11, The main field 12 is encoded into a barcode to generate a data matrix code 13. Then, the main field 12 is digitally signed, the signature value is encoded into a barcode to generate a signature matrix code 14, and the data matrix code 13 and signature matrix code 14 are generated in the electronic document 11. ) To generate a printable signature.

상기 서명 처리 과정(signature transaction)에서 서명자(10)와 검증자(40)는 전자 문서의 전자 서명(디지털 서명)을 증명하고, 디지털 방식으로 서명 받은 문서를 인쇄한다.In the signature transaction, the signer 10 and the verifier 40 verify the electronic signature (digital signature) of the electronic document and print the digitally signed document.

상기 서명 증명 과정(signature verification)에서 증명자(30)는 인쇄된 문서(11')의 매트릭스 코드(13,14)를 스캔(scan)하여 데이터 매트릭스 코드(13)의 주요 필드(12)를 증명하며, 주요 필드(12)의 전자 서명을 증명한다.In the signature verification process, the authenticator 30 scans the matrix codes 13 and 14 of the printed document 11 'to verify the main fields 12 of the data matrix code 13. And verifies the electronic signature of the main field 12.

상기 주요 필드(12)란 인증방법에 의해 서명되어진 데이터들을 의미한다. 본 발명은 선택된 데이터들만 인쇄할 수 있는 서명을 생성하기 위한 것이기 때문에, 전체 데이터를 서명할 필요는 없다. 증명자(30)가 인쇄된 문서(11')에서 쉽게 주요 필드(12)들을 알아낼 수 있기 때문에, 주요 필드(12)에는 원래의 전자 문서(11)에 대한 정보가 명확히 기재되어 있어야 한다. The main field 12 means data signed by an authentication method. Since the present invention is for generating a signature that can print only selected data, it is not necessary to sign the entire data. Since the prover 30 can easily identify the key fields 12 in the printed document 11 ', the key field 12 should clearly describe the information about the original electronic document 11.

누구나 전자 문서(11)의 모든 데이터의 서명을 생성할 수 있다. 데이터 매트릭스 코드(13)는 문서 확인 정보에 의해 주요 필드(12)들을 인코딩한다. 마지막으로 서명 매트릭스 코드(14)는 데이터 매트릭스 코드(13)에서 인쇄할 수 있는 서명을 암호화한다. 두 매트릭스 코드(13,14)는 원래의 전자 문서(11)에서 인쇄되어지도록 만들어져야 한다.Anyone can generate a signature of all data in the electronic document 11. The data matrix code 13 encodes the main fields 12 by document identification information. Finally, the signature matrix code 14 encrypts the printable signature in the data matrix code 13. Both matrix codes 13 and 14 must be made to be printed in the original electronic document 11.

다음으로, 본 발명의 일 실시예로서 전자 서명 기술에 대하여 설명하면 다음과 같다. 전자 서명 기술들은 전자 문서를 위한 전자 서명과, 인쇄되어 출력된 문서를 위한 전자 서명을 위해 사용되어진다. 따라서, 전자 서명 기술들은 인쇄되어 출력된 문서에 적용되는 경우 다음과 같은 소정의 요구 사항들을 만족시키기 위해 수정된다.Next, an electronic signature technique will be described as an embodiment of the present invention. Electronic signature techniques are used for electronic signatures for electronic documents and for electronic signatures for printed and printed documents. Accordingly, electronic signature techniques are modified to meet the following predetermined requirements when applied to printed and output documents.

즉, 출력된 문서를 위한 전자 서명에 있어서 서명자(10)는 서명 생성 단계에서 인증 서버(20)에게 주요 자료를 알려주어서는 안된다. 그리고, 검증자(40)는 서명 처리 단계에서 데이터 매트릭스를 수정할 수 없고, 서명 매트릭스를 수정할 수 없다. 또한, 검증자(40)에게 서명된 문서로의 접근이 허락되지 않는다면 검증자(40)는 문서를 재사용할 수 없다.That is, in the digital signature for the output document, the signer 10 should not inform the authentication server 20 of the main material in the signature generation step. Further, the verifier 40 cannot modify the data matrix in the signature processing step, and cannot modify the signature matrix. Also, the verifier 40 cannot reuse the document unless the verifier 40 is allowed access to the signed document.

증명자(30)는 서명 증명 단계에서 인증 서버(20)에게 주요 자료를 알려주어서는 안되며, 서명 증명이 끝난 후에 데이터 매트릭스 및 서명 매트릭스를 수정할 수 없다. 또한, 증명자(30)에게 서명된 문서로의 접근이 허락되지 않는다면 증명자(30)는 문서를 재사용할 수 없다.The prover 30 should not inform the authentication server 20 of the main material in the signature verification step, and cannot modify the data matrix and the signature matrix after the signature verification is completed. In addition, the authenticator 30 cannot reuse the document unless the authenticator 30 is allowed access to the signed document.

다음으로 상기 매트릭스 코드에 대하여 상세하게 설명하면 다음과 같다.Next, the matrix code will be described in detail.

본 발명에서는 적절한 암호화와 코드 표시 방법을 사용한다. 상기 매트릭스 코드(M)에는 데이터 매트릭스 코드와 서명 매트릭스 코드가 있다.In the present invention, an appropriate encryption and code display method is used. The matrix code M includes a data matrix code and a signature matrix code.

데이터 매트릭스 코드에는 주요 자료 필드와 인쇄된 문서 특정의 정보(예컨대, 문서의 시리얼 넘버(serial number)와 유효 기한)가 암호화된다. 그리고, 서명 매트릭스 코드에는 주요 자료에 대한 전자 서명 값이 인코딩된다.The data matrix code encrypts key material fields and printed document specific information (e.g., the serial number and expiration date of the document). The signature matrix code is then encoded with electronic signature values for the main material.

본 발명에서는 일 실시예로서 출력 가능한 전자서명 프로토콜로서 KCDSA를 사용하는데, 다른 전자서명 알고리즘도 같은 목적을 위해 사용 가능하다.In the present invention, as an embodiment, KCDSA is used as a printable digital signature protocol. Other digital signature algorithms may be used for the same purpose.

이하, KCDSA(Korean Certificate-based Digital Signature Algorithm)에 대하여 설명한다.Hereinafter, KCDSA (Korean Certificate-based Digital Signature Algorithm) will be described.

KCDSA은 ElGamal 서명 방법 중의 하나로서 유한체(finite field)에서 이산 로그(discrete logarithm) 문제의 어려움에 기반한 것이다. ElGamal 서명 알고리즘을 변형시킨 것 중에 잘 알려진 것으로서 DSS(Digital Signature Standard)와 GOST 34.10이 있다.KCDSA is one of the ElGamal signature methods and is based on the difficulty of discrete logarithm problems in the finite field. One well-known variant of the ElGamal signature algorithm is the Digital Signature Standard (DSS) and GOST 34.10.

KCDSA의 데이터 형 변환에 있어서 정수 비트열 간의 변환에 대하여 설명하면, 비트 길이 n의 정수 x를 비트열(bit string)로 변환할 때는 x를 이진표기로 표현한 후 최상위 비트를 첫 비트로, 최하위 비트를 마지막 비트로 삼는다. 즉,When converting between integer bit strings in KCDSA data type conversion, when converting an integer x of bit length n into a bit string, express x in binary notation, and then, the most significant bit is the first bit and the least significant bit is the last. Make it a bit In other words,

x = xn-12n-1 + xn-22n-2 + ... +x12 +x0->{x n-1xn-2...x0}x = x n-1 2 n-1 + x n-2 2 n-2 + ... + x 1 2 + x 0- > {x n-1 x n-2 ... x 0 }

마찬가지로 길이 n의 비트열은 다음과 같이 정수로 변환할 수 있다.Similarly, a bit string of length n can be converted to an integer as follows.

{x0x1...xn-1}-> x = x02n-1 + x12 n-2 + ... +xn-22 +xn-1 {x 0 x 1 ... x n-1 }-> x = x 0 2 n-1 + x 1 2 n-2 + ... + x n-2 2 + x n-1

다음으로, 비트열 간의 변환에 대하여 설명하면, 길이 n의 비트열 {b0b1...+bn-1}의 바이트열 변환은 n이 8의 배수가 될 때까지 최상위 부분에 필요한 만큼의 0을 채운 다음 최상위 8비트를 첫 바이트로 마지막 8 비트를 마지막 바이트로 삼는다. 즉,Next, the conversion between bit strings will be described. A byte string conversion of a bit string of length n {b 0 b 1 ... + b n-1 } is performed as many times as necessary in the uppermost part until n is a multiple of 8. Fills zeros with, then makes the most significant 8 bits the first byte and the last 8 bits the last byte. In other words,

{b0b1...+bn-1} -> {x0x1...+xt-1}{b 0 b 1 ... + b n-1 }-> {x 0 x 1 ... + x t-1 }

여기서, t는 변환된 바이트열의 길이로서 실수 n/8 보다 크거나 같은 최소 정수이며, 0보다 큰 i에 대해 xt-i=bn-8ib + n-8i + 1...bn-8i+7로 주어지고 x0의 최상위 일부 비트는 0으로 채워질 수 있다. 마찬가지 방법으로 길이 n의 바이트열은 길이 8n의 비트열로 변환될 수 있다.Where t is the length of the converted byte string, the smallest integer greater than or equal to real n / 8, and for i greater than 0 x ti = b n-8i b + n-8i + 1 ... b n-8i + Given as 7 and some of the most significant bits of x 0 can be filled with zeros. In the same way, a byte string of length n can be converted into a bit string of length 8n.

KCDSA는 인증서 기반 부가형 전자서명 방식이다. 전자서명의 안전성을 위하여 서명 검증 과정에서 사용되는 공개 검증키 및 도메인 변수들이 올바른 값인지를 확인할 필요가 있다. 이것은 사용자들 상호간에 신뢰할 수 있는 제3자(CA)가 도메인 변수, 사용자의 공개 검증키, 사용자의 식별자, 유효기간 등이 포함된 공개 검증키 확인 정보에 공개 검증키 인증기관이 자신의 비공개 서명키로 전자서명을 하여 발행해 주는 인증서를 사용함으로써 가능하다.KCDSA is a certificate-based add-on digital signature. For the security of digital signatures, it is necessary to verify that the public verification key and domain variables used in signature verification are correct values. This means that a third party (CA) that is trusted by users can have their private signature signed by the public verification key certification information in the public verification key verification information including domain variables, the user's public verification key, the user's identifier, and the expiration date. This can be done by using a certificate issued by digital signature with a key.

인증서의 발급시 제3자(CA)는 사용자의 신원을 확인한 후 인증 받고자 하는 공개 검증키에 대응하는 비공개 서명키를 사용자가 알고 있는지를 확인하는 과정이 포함되어야 한다. 일반적으로 인증서 형식은 국제표준으로 제정되어 있는 ITU-T Rec. X.509에 정의된 것을 사용하고 있다.When issuing a certificate, a third party (CA) must include a process of verifying the identity of the user and then confirming whether the user knows a private signature key corresponding to the public verification key to be authenticated. In general, the certificate format is ITU-T Rec. It uses what is defined in X.509.

다음으로, 도메인 변수 p, q, g는 특정 그룹 내에서 합의가 되면 공통으로 사용할 수 있다. 이 경우 해당 그룹의 보안 담당자는 응용분야의 중요성에 따라 소수 p, q의 길이를 선택해야 한다. 현재 대부분의 서명의 응용에서 권고되는 소수 p, q의 길이는 대략 |p| = 1024, |q| = 160 정도이다. 그러나 매우 중요한 응용에 사용되는 서명의 경우는 (예를 들면 최상위 인증기관의 서명키) 2048비트의 P와 256비트 정도의 q를 사용하도록 권고한다. 또한 이 경우 소수 p, q가 적법한 절차에 의해 생성되었다는 것을 사용자들이 검증할 수 있도록 필요한 검증 데이터를 제공하여야 한다.Next, domain variables p, q and g can be used in common if they are agreed within a particular group. In this case, the group's security officer should choose the length of the prime p and q depending on the importance of the application. Currently recommended for most signature applications, the length of prime p, q is approximately | p | = 1024, | q | = 160 or so. However, for signatures used in very important applications (for example, the signature key of the highest-level certification authority), it is recommended to use 2048 bits of P and 256 bits of q. In this case, you must also provide the necessary verification data so that users can verify that prime numbers p and q have been generated by legitimate procedures.

전자서명을 위한 도메인 변수 p, q, g는 이산대수 문제에 바탕을 둔 Diffie-Hellman 형의 키 분배 방식을 위해서도 사용할 수 있다. 그러나 같은 도메인 변수를 서로 다른 용도에 공통으로 사용하는 것은 바람직하지 않다고 보는 것이 일반적 견해이다. 특히, 도메인 변수는 공통으로 사용하더라도 비공개 서명키 및 공개 검증키를 키 분배를 위해서 사용하는 것은 피할 것을 강력히 권고한다.The domain variables p, q, and g for digital signatures can also be used for Diffie-Hellman type key distribution based on discrete algebra problems. However, the general view is that it is not desirable to use the same domain variable in common for different purposes. In particular, it is strongly recommended to avoid using private signing keys and public verification keys for key distribution even though domain variables are commonly used.

KCDSA는 서명 생성 과정과 서명 검증 과정으로 이루어지는데, 서명 생성 과정에서는 메시지 M을 입력으로 받아 다음 단계를 거쳐 계산된, 비트열 r과 정수 s의 쌍으로 구성된 = {r, s}를 서명으로 출력한다. 상세하게는, 도메인 변수 p, q, g와 공개 검증키 y가 올바른지 검증하고, 난수 값 k를 {1, … , q-1}에서 랜덤하게 선택하며, 증거 값 w = gk mod p를 계산한다.KCDSA consists of a signature generation process and a signature verification process, which consists of a pair of bit strings r and an integer s, which takes the message M as input and is calculated by the following steps: = {r, s} as a signature Specifically, verify that the domain variables p, q, g and the public verification key y are correct, and set the random number k to {1,... , q-1}, and randomly calculate the evidence value w = g k mod p.

그리고, 서명의 첫 부분 r = h(w)를 계산하고, z = y mod 2l을 계산해서, 해쉬 코드 H = h(z || M)을 계산한 다음, 중간 값 e = (r H) mod q를 계산한다.Then compute the first part of the signature, r = h (w), calculate z = y mod 2 l , compute the hash code H = h (z || M), and then calculate the median value e = (r H) Calculate mod q

그 후, 서명의 두 번째 값 s = x(k - e) mod q를 계산(만약 s=0 이면 다시 난수 값 k를 선택한다.)하여 비트열 r과 정수 s의 쌍, = {r, s}를 서명으로 출력한다.Then, calculate the second value of the signature s = x (k-e) mod q (if s = 0 then choose a random value k again), which is a pair of bit strings r and integer s, = {r, s} as a signature

상기 도메인 변수와 공개 검증키에 대한 검증은 최초에 한 번만 수행하고 그 후 서명 생성시 마다 사용할 수 있도록 p, q, g 및 y를 안전하게 보관할 수 있으며, 상기 난수 값 k 선택부터 서명의 첫 부분 r을 계산하는 과정은 서명할 메시지와 관계가 없으므로 사전에 계산해 둘 수도 있다.To verify the said domain parameter and a public verification key is performed only once in the first place and to use each time and then the signature generation p, q, g, and can securely hold the y, and the first part of the signature from the random number k select r The process of calculating is independent of the message to be signed and can be calculated in advance.

즉, k와 r을 미리 계산해서 안전하게 보관하고 있다가 서명할 메시지가 들어오면 실시간으로 사용자 변수 z의 계산을 할 수 있다. 이런 사전 계산 방식은 다수의 서명을 실시간으로 계산할 필요가 있을 때 유용하게 사용될 수 있으며, 이를 위해서는 사전 계산된 k, r을 저장할 여분의 안전한 메모리를 갖추어야 한다. In other words, you can calculate k and r in advance, store them safely, and then calculate the user variable z in real time when you get a message to sign. This precomputation method can be useful when it is necessary to calculate a large number of signatures in real time, which requires extra safe memory to store the precomputed k, r.

상기 r=h(w)에서 w는 정수이므로 이를 비트열로 변환한 후 해쉬 함수의 입력으로 주어야 한다. 그리고, 상기 중간 값 e의 계산에서 비트열 r과 비트열 H를 비트 단위 XOR연산을 하고 그 결과 비트열을 정수로 변환한다.Since w is an integer in r = h (w), it must be converted into a bit string and then given as an input of a hash function. In the calculation of the intermediate value e, the bit string r and the bit string H are subjected to bitwise XOR operation, and as a result, the bit string is converted into an integer.

다음으로, 서명 검증 과정에서 먼저 서명을 검증하기 전에 검증자(40)는 서명자(10)의 공개 검증키 y와 도메인 변수 p, q, g 등에 대한 올바른 값들을 얻어야 한다. 이를 위해 신뢰할 수 있는 인증기관에서 발행한 서명자(10)의 인증서를 확인하고 이로부터 추출된 도메인 변수 p, q, g와 공개 검증키 y를 얻어내는 방법을 사용 할 수 있다.Next, in the signature verification process, before validating the signature, the verifier 40 must obtain correct values for the public verification key y of the signer 10 and domain variables p, q, g, and the like. To this end, a method of verifying a certificate of a signer 10 issued by a trusted certificate authority and obtaining domain variables p, q, g and public verification key y extracted therefrom can be used.

상세하게는, 선택 사항으로 서명자(10)의 인증서를 확인하고, 서명 검증에 필요한 도메인 변수 p, q, g와 공개 검증키 y 를 추출하고, 수신된 서명 ' = {r',s'}에 대해 비트열 r'이 해쉬 함수의 출력길이와 같은지 확인하며, 0< s'< Q 임을 확인한다.Specifically, optionally verify the signer 10's certificate, extract domain variables p, q, g and public verification key y for signature verification, and receive the received signature For ' = {r', s'}, check that the bit string r 'is equal to the output length of the hash function, and check that 0 <s'<Q.

그리고, z = y mod 2l을 계산해서 검증할 메시지 M'에 대한 해쉬 코드 H' = h(z || M')을 계산하고, 중간 값 e'= (r' H') mod q를 계산하며, 서명자의 공개 검증키 y를 이용하여 증거 값 w' = ys'ge' mod p를 계산한 다음, h(w') = r'이 성립하는지 확인한다.Then compute the hash code H '= h (z || M') for the message M 'to be verified by calculating z = y mod 2 l , and the median e' = (r ' H ') calculates mod q, calculates the evidence value w' = y s ' g e' mod p using the signer's public verification key y, and checks whether h (w ') = r' holds.

상기 검증 과정이 모두 통과되면 서명 '는 수신 메시지 M'에 대하여 공개 검증키 y에 대응하는 비공개 서명키 x로 서명하였음이 검증된 것이다. 위에서 M' = M, s'= s일 때, h(w') = r'이 되는 과정을 설명하였다.Signature if all of the above verification passes ' Is verified to sign the received message M with the private signature key x corresponding to the public verification key y. In the above, when M '= M and s' = s, a process in which h (w ') = r' has been described.

위 검증 단계에서 하나라도 그 검증이 실패하면 메시지 M'에 불법적인 방법으로 서명이 되었거나 메시지가 변경된 것이므로 다음 단계로 넘어갈 필요 없이 M'에 대한 서명이 거짓임이 밝혀진 것이다.If any of the above verification steps fail, either the message M 'is illegally signed or the message has been altered, indicating that the signature on M' is false without going to the next step.

상기와 같이 KCDSA는 ElGamal 서명 방법 중의 하나로서 유한체(finite field)에서 이산 로그(discrete logarithm) 문제의 어려움에 기반한 것이다. ElGamal 서명 알고리즘을 변형시킨 것 중에 잘 알려진 것으로서 DSS(Digital Signature Standard)와 GOST 34.10이 있다.As described above, KCDSA is one of the ElGamal signature methods based on the difficulty of the discrete logarithm problem in the finite field. One well-known variant of the ElGamal signature algorithm is the Digital Signature Standard (DSS) and GOST 34.10.

본 발명은 일 실시예로서 KCDSA를 전자 문서를 위한 전자 서명과 인쇄된 문서를 위한 전자 서명에 대한 기본 서명 알고리즘으로 사용한다. 전자 문서를 위한 전자 서명에 대해서는 전술한 KCDSA를 변경 없이 그대로 사용할 수 있으나 인쇄된 문서를 위한 전자 서명을 위해서는 해당 필요 조건들 때문에 신중하게 변경하여 사용한다.In one embodiment, the present invention uses KCDSA as a basic signature algorithm for electronic signatures for electronic documents and electronic signatures for printed documents. The above-mentioned KCDSA can be used without change for the electronic signature for the electronic document, but the electronic signature for the printed document is carefully changed and used due to the requirements.

이하, 첨부한 도면을 참조하여 인쇄된 문서를 위한 전자 서명 알고리즘에 대하여 설명한다.Hereinafter, an electronic signature algorithm for a printed document will be described with reference to the accompanying drawings.

출력 가능한 KCDSA(Printable KCDSA: P-KCDSA)는 인쇄된 문서를 위한 전자 서명의 필요 조건들을 만족시키기 위해 KCDSA를 변경시킨 것이다. 도 3에서 {} 괄호 내의 메시지는 비밀성을 위해 수신자의 공개키로 암호화된 것을 뜻하고, [] 괄호 내의 메시지는 무결성을 위해 MAC(Message Authentication Code) 또는 전자 서명이 포함된 것을 뜻한다. P-KCDSA의 주 목적은 도 3에서 출력된 문서로 전달되는 경로의 r과 s'의 무결성을 보장하는 것이다. Printable KCDSA (P-KCDSA) is a modification of KCDSA to meet the requirements of digital signatures for printed documents. In FIG. 3, a message in parentheses in {} means encrypted with the public key of the receiver for confidentiality, and a message in parentheses in [] means including a message authentication code (MAC) or an electronic signature for integrity. The main purpose of the P-KCDSA is to ensure the integrity of r and s' of the path to the document printed in FIG.

P-KCDSA는 도 4에 도시된 바와 같이 매개 변수 설정 과정(S500)과 서명 생성 과정(S600)과 서명 검증 과정(S700)으로 이루어진다.As shown in FIG. 4, the P-KCDSA includes a parameter setting process (S500), a signature generation process (S600), and a signature verification process (S700).

먼저, 매개 변수 설정 과정(S500)을 도 5를 참조하여 설명하면, 클라이언트 개체인 서명자(10)는 매개변수 설정을 위해 다음 단계를 진행한다. 즉, |p| = 512 + 256i (i= 0, ..., 6) 이 되는 큰 소수 p를 선택한다(S511). |p|는 p의 비트 길이를 나타낸다.First, the parameter setting process S500 will be described with reference to FIG. 5, and the signer 10, which is a client entity, proceeds to the next step for parameter setting. That is, | p | A large prime number p = 512 + 256i (i = 0, ..., 6) is selected (S511). | p | represents the bit length of p.

그리고, |q| = 128 + 32j (j= 0, ...,4) 이고 q|(p-1)이 되는 소수 q를 선택하며(S512), 군(group) Zp *에서 g = a(p-1)/q mod p (a Zp *)인 위수(order)의 q의 유일한 순환 부그룹(unique cyclic subgroup)의 생성자(generator) g를 선택한다(S513).And | q | = 128 + 32j (j = 0, ..., 4) and select a prime q such that q | (p-1) (S512), g = a (p-1) in group Z p * / q mod p (a Z p * ) selects a generator g of a unique cyclic subgroup of order q, in step S513.

그런 다음, Zp *에서 임의의 정수 x를 선택한다(S514). x는 KCDSA에서 비밀키이다.Then, a random integer x is selected from Z p * (S514). x is the secret key in KCDSA.

그 후, y = g-x mod p 가 되는 공개키를 계산하고(S515), 인증기관으로부터 인증서를 발급받은 다음, z = h(CertData)와 같이 인증서로부터 해쉬 값을 계산한다(S516,S517). CertData는 서명자의 인증서 데이터이다.After that, a public key is calculated such that y = g -x mod p (S515), a certificate is issued from a certification authority, and then a hash value is calculated from the certificate as z = h (CertData) (S516, S517). . CertData is the signer's certificate data.

다음으로, 서명 생성 과정(S600)을 도 6을 참조하여 설명하되, 서명자(10)가 임의 길이의 2 진수 메시지 m에 대하여 서명을 한다고 가정한다. 여기서, m은 데이터 매트릭스에 인코딩된 정보, 즉 주요 필드와 문서 관련 정보를 의미한다.Next, the signature generation process S600 will be described with reference to FIG. 6, but assume that the signer 10 signs the binary message m of any length. Here, m means information encoded in the data matrix, that is, main fields and document-related information.

서명자(10)는 임의의 정수 k (0 < k < q)를 비밀리에 선택한 다음(S611), r = h(gk mod p)를 계산하고(S612), s = x(k - r h(z,m)) mod q를 계산한다(S613).The signer 10 secretly selects a random integer k (0 <k <q) (S611), calculates r = h (g k mod p) (S612), and s = x (k-r h (z, m)) mod q is calculated (S613).

그리고, 트러스티드 서버(인증 서버)(20)에게 (r, s)와 인증서를 비밀성을 유지하여 전송한다(S614). Then, (r, s) and the certificate are transmitted to the trusted server (authentication server) 20 while maintaining confidentiality (S614).

그러면, 인증 서버(20)는 임의의 정수 t (0 < t < q)를 비밀리에 선택한 다음(S615), s' = (s + t) mod q 를 계산하여(S616), 계산된 s'을 서명자(10)에게 인증할 수 있는 방법으로 전송한다(S617). 또한, = y-t mod p가 되는 검증 허락값인 를 계산하고 r과 함께 저장한다(S618).Then, the authentication server 20 secretly selects a random integer t (0 <t <q) (S615), calculates s '= (s + t) mod q (S616), and calculates the calculated s' The signature is transmitted to the signer 10 in a way that can be authenticated (S617). Also, = y -t mod p Calculate and store with r (S618).

메시지 m에 대한 서명자(10)의 출력 가능한 서명은 (id, r, s')이다. 서명자(10)와 인증 서버(20)가 임시 키 t를 공유할 때 s를 암호화한 것이 s'이다. t는 비밀키인데 이것에 대한 공개키 y-t는 암호화한 형태로 증명자(30)에게 다음 트랜잭션 때 전달된다.The printable signature of the signer 10 for the message m is (id, r, s'). S 'is encrypted when the signer 10 and the authentication server 20 share a temporary key t. t is a private key whose public key y -t is sent in encrypted form to the prover 30 in the next transaction.

나아가, 서명자(10)와 인증 서버(20)는 검증자(40)의 수를 제한하는 카운트 n의 정보를 주고받고, 마지막으로 서명자(10)는 카운트 정보를 서명 매트릭스 코드에 넣어 문서에 포함시킨다.Further, the signer 10 and the authentication server 20 exchange information of count n limiting the number of validators 40, and finally the signer 10 includes the count information in the signature matrix code to include in the document. .

마지막으로, 서명 검증 과정(S700)을 도 7을 참조하여 설명하면, 메시지 m에 대한 서명자(10)의 서명(id, r, s')을 검증하기 위하여 증명자(30)는 다음 단계를 진행한다.Finally, the signature verification process (S700) is described with reference to FIG. 7, the verifier 30 proceeds to the next step to verify the signature (id, r, s') of the signer 10 for the message m. do.

즉, 인증 기관을 통해 서명자(10)의 인증서를 구하여(S711), 메시지의 서명이 해당 서명자(10)에 의한 것인 지를 검증하고(S712), r (0 < r < q) 과 s' (0 < s' < q)를 검사한다(S713).That is, by obtaining a certificate of the signer 10 through a certificate authority (S711), to verify whether the signature of the message is by the signer 10 (S712), r (0 <r <q) and s' ( 0 <s' <q) is checked (S713).

그리고, 인증 서버(20)에 상기 r을 인증된 방법으로 전송하여 검증 허락을 요청한다(S714).Then, the r is transmitted to the authentication server 20 by the authenticated method and requests verification permission (S714).

그러면, 인증 서버(20)는 검증 회수에 제한이 없는지를 확인하여 제한이 없는 경우 검증 허락을 증명자(30)에게 비밀리에 보낸다. 인증 서버(20)가 서명자(10)와 카운트 n에 대한 정보를 주고 받았으면, 인증 서버(20)는 증명자(30)에게 검증 허락을 보낼 때에 카운트 n을 감소시킨다. Then, the authentication server 20 confirms that there is no limit on the number of verifications, and if there is no limit, secretly sends the verification permission to the prover 30. If the authentication server 20 exchanges information about the count n with the signer 10, the authentication server 20 decrements the count n when it sends a verification permission to the prover 30.

그리고, 만일 카운트 n이 0이 되면, 인증 서버(20)는 검증 허락을 거부한다. 여기서, r을 검증 허락을 만들기 위한 인덱스로 사용하였지만, 좀 더 구체적인 방법을 만들 수도 있을 것이다. If the count n becomes zero, the authentication server 20 rejects the verification permission. Here, we used r as an index to make the verification permission, but we can make a more specific way.

상기 검증 허락을 받은 증명자(30)는(S715), z = h(CertData)를 계산하고(S716), u = r h(z,m) mod q를 계산하며(S717), w = ys' mod p를 계산한다(S718).The validator 30 having the verification permission (S715) calculates z = h (CertData) (S716), and u = r h (z, m) mod q is calculated (S717) and w = y s' mod p is calculated (S718).

그런 다음, v = h(wgu mod p)를 계산하여(S719), v = r이면 서명을 받아 들인다(S720,S721).Then, v = h (w g u mod p) is calculated (S719), and if v = r, the signature is accepted (S720, S721).

한편, KCDSA는 랜덤 오러클 모델(random oracle model)에서 안전하다고 가정한다. 이런 가정하에 수동적 공격자는 서명 트랜잭션의 정보를 획득할 수 없다. KCDSA의 안전도를 기초로 하여 어떻게 P-KCDSA가 인쇄된 문서의 전자 서명을 위한 필요 조건들을 만족시켜서 능동적 공격자의 공격을 저지할 수 있는 지를 설명한다.On the other hand, it is assumed that KCDSA is safe in a random oracle model. Under this assumption, a passive attacker cannot obtain the information of the signature transaction. Based on the safety of the KCDSA, it explains how the P-KCDSA can prevent active attackers by satisfying the requirements for electronic signatures of printed documents.

능동적 공격자가 증명자(30)를 위장한 것을 위장 증명자(C')라하고, 서명자(10)와 검증자(40)의 비밀키들은 안전하다고 가정하여 다음 분석에서 위장 증명자(C')와 위장 검증자(D')를 고려한다.It is assumed that the active attacker impersonates the authenticator 30, and that the private keys of the signer 10 and the validator 40 are safe. Consider a spoof validator (D ').

서명자(10)는 서명 생성시에 인증 서버(20)에게 주 데이터를 공개하면 안된다. 즉, 인증 서버(20)에게 초기 서명 r과 s만을 전달하고, 인증 서버(20)는 r(=h(gk mod p))과 s(=x(k-rh(z,m)) mod q)만을 통하여서는 메시지 m에 대한 어떤 정보도 얻을 수 없다.The signer 10 should not disclose the main data to the authentication server 20 at the time of signature generation. That is, only the initial signatures r and s are delivered to the authentication server 20, and the authentication server 20 is r (= h (g k mod p)) and s (= x (kr h (z, m)) You can't get any information about message m only through mod q).

검증자(40)는 서명 트랜잭션에서 데이터 매트릭스를 변경할 수 없어야 한다. 즉, 데이터 매트릭스 정보는 서명자(10)에 의해 서명되고 서명 매트릭스로 코드화되며, 검증자(40)와 위장 검증자(D')는 서명 트랜잭션에서 x없이는 서명자(10)의 서명을 생성할 수 없다.Verifier 40 should not be able to change the data matrix in the signature transaction. That is, the data matrix information is signed by the signer 10 and encoded into the signature matrix, and the verifier 40 and the spoof verifier D 'cannot generate the signature of the signer 10 without x in the signature transaction. .

그리고, 검증자(40)는 서명 트랜잭션에서 서명 매트릭스를 변경할 수 없어야한다. 즉, 서명 매트릭스 정보는 s 대신에 s'과 r을 포함하고 있어, 검증자(40)는 서명을 검증할 수도 없고, 검증자(40)와 위장 검증자(D')는 미리 s 또는 t에 대한 정보를 갖지 않고서는 s'(s' = (s + t) mod q)에서 t를 제거할 수가 없다. 사실, 위장 검증자(D')는 {r, s}으로부터 s를 구할 수가 없기 때문에 s'에서 t를 얻을 수가 없다.And the verifier 40 should not be able to change the signature matrix in the signature transaction. That is, the signature matrix information includes s 'and r instead of s, so that the verifier 40 cannot verify the signature, and the verifier 40 and the spoof verifier D' are previously assigned to s or t. You can't remove t from s '(s' = (s + t) mod q) without any information about it. In fact, the spoof validator D 'cannot get t from s' because it cannot get s from {r, s}.

또한, 검증자(40)는 서명된 문서를 허락된 경우에만 재사용이 가능하다. 출력 가능한 서명을 사용하기 위해서 프로토콜에 항상 인증 서버(20)가 있어야 한다. 즉, 증명자(30)는 인증 서버(20)에게 서명에 대한 검증 허락을 요청해야 한다.In addition, the verifier 40 can only reuse the signed document if permitted. In order to use printable signatures, there must always be an authentication server 20 in the protocol. That is, the prover 30 should request the verification server 20 to verify the signature.

증명자(30)는 서명 검증 시에 주 데이터를 공개해서는 안 된다. 즉, 증명자(30)는 인증 서버(20)에게 서명 검증할 때에만 r을 제공하고, 검증자(40)는 r(=h(gk mod p))에서부터 m을 구할 수가 없다.The prover 30 should not disclose the main data at the time of signature verification. That is, the prover 30 provides r only when verifying the signature to the authentication server 20, and the verifier 40 cannot obtain m from r (= h (g k mod p)).

그리고, 증명자(30)는 서명 검증 후에 데이터 매트릭스 및 서명 매트릭스를 변경할 수 없어야 한다. 즉, 이산 로그 문제의 어려움처럼 증명자 단말은 (=y-t mod p)에서부터 t를 구할 수 없고, 위장 검증자(D')는 s가 암호화된 것이므로 s'에서 t를 구할 수 없으며, 검증자(40)와 위장 검증자(D')는 s'에서 t를 제거할 수 없다.And, the prover 30 should not be able to change the data matrix and signature matrix after signature verification. That is, as the difficulty of the discrete log problem, the prover terminal t cannot be obtained from (= y -t mod p), and the spoof validator (D ') cannot obtain t from s' because s is encrypted, the validator (40) and the spoof validator (D') Cannot remove t from s'.

또한, 증명자(30)는 서명된 문서를 허락된 경우에만 재사용이 가능하다. 출력 가능한 서명을 사용하기 위해서 프로토콜에 항상 인증 서버(20)가 있어야 한다. 즉, 또 다른 증명자는 인증 서버(20)에게 서명에 대한 검증 허락을 요청해야 한다.In addition, the authenticator 30 can only reuse the signed document if permitted. In order to use printable signatures, there must always be an authentication server 20 in the protocol. That is, another prover must request the authentication server 20 to verify the signature.

다음으로, 본 발명의 일 실시예에 따른 P-KCDSA 파라미터에 대하여 설명한다. Next, the P-KCDSA parameter according to an embodiment of the present invention will be described .

먼저, 검증자(40)가 수신한 서명 ' = {r', s'}가 메시지 M'에 대한 유효한 서명이면 검증 과정에서 h(w') = r'이 성립됨을 증명한다.First, the signature received by the verifier 40 If ' = {r', s '} is a valid signature for message M', then the verification process proves that h (w ') = r'.

o 정리 : M' = M, r' = r, s' = s이면 h(w') = r'이다.o Theorem: If M '= M, r' = r, s' = s, then h (w ') = r'.

o 증명 : 가정 M'= M, r' = r에서 H' = h(z||M') = h(z||M) = H와 e' = (r' H') mod q = (r H) mod q = e를 얻을 수 있다. 또한, s' = s = x(k - e) mod q와 e' = e라는 사실에서부터,o Proof: Assume that M '= M, r' = r where H '= h (z || M') = h (z || M) = H and e '= (r' H ') mod q = (r H) mod q = e Also, from the fact that s '= s = x (k-e) mod q and e' = e,

w' = ys'ge' mod p = ysge mod pw '= y s' g e' mod p = y s g e mod p

= yx(k-e) mod qge mod p = g1/x x(k-e) mod qge mod p= y x (ke) mod q g e mod p = g 1 / xx (ke) mod q g e mod p

= g(k-e) mod qge mod p = gk mod p 임을 알 수 있다.= g (ke) mod q g e mod p = g k mod p

즉, h(w') = h(gk mod p) = r이고, r' = r이므로 h(w') = r'이다.That is, h (w ') = h (g k mod p) = r, and r' = r, so h (w ') = r'.

다음으로, KCDSA에 사용될 수 있는 소수 p, q와 생성원 g를 생성하는 알고리즘에 대하여 설명한다.Next, an algorithm for generating prime numbers p, q and generator g that can be used for KCDSA will be described.

소수 p와 q를 얻기 위해서는 소수 판정 알고리즘을 이용한다. 다음 알고리즘은 Gary L. Miller와 M. O. Rabin에 의한 방법으로, 이 알고리즘을 통과한 정수가 소수가 아닐 확률은 1/4n보다 작거나 같게 된다. 따라서 n이 50 (다른 값을 선택할 수도 있다) 정도이면 대부분의 경우 충분히 낮은 오류 확률을 준다.To get the prime p and q, we use a prime judgment algorithm. The next algorithm is by Gary L. Miller and M. O. Rabin, whose probability that the integers passed through this algorithm are not prime is less than or equal to 1 / 4n. Thus, if n is around 50 (you can choose a different value), in most cases it gives a low enough probability of error.

소수 판정 알고리즘은, 제 1단계로서 w = 1 + 2am이 되는 a와 m을 구한다. 여기서, 2a는 w-1을 나누는 2의 가장 큰 멱승이고, 따라서 m은 홀수가 된다.The fractional decision algorithm finds a and m such that w = 1 + 2am as the first step. Where 2a is the largest power of 2 dividing w-1, thus m is odd.

제 2단계로서 i = 1로 두고, n ≥50 을 선택한다. 제 3단계로서 1 < b < w인 난수 b를 만든다. 제 4단계로서 gcd(b, w) ≠1이면 하기의 제 7단계로 진행하여 알고리즘을 종료한다.Set i = 1 as the second step and select n ≧ 50. As a third step, create a random number b with 1 <b <w. If gcd (b, w)? 1 as the fourth step, the process proceeds to the seventh step below to complete the algorithm.

그리고, 제 5단계로서 z = bm mod w를 계산하고 z = 1이면 하기의 제 8단계로 진행한다. 제 6단계로서 j = 1,…, a-1인 동안 z = w - 1이면 하기의 제 8단계로 진행하고, z = z2 mod w를 계산한 다음, z = 1이면 하기의 제 7단계로 진행한다.And as a fifth step, z = b m mod w is calculated, and if z = 1, the process proceeds to the following eighth step. As the sixth step, j = 1,... If z = w-1 while a-1, z proceed to step 8 below, calculate z = z 2 mod w, and proceed to step 7 below if z = 1.

제 7단계로서 w는 소수가 아니므로 알고리즘을 끝내고, 제 8단계로서 i < n이면 i = i + 1로 하고 상기 제 3단계로 진행한다.Since w is not a prime number as the seventh step, the algorithm is finished. If i <n as the eighth step, i = i + 1 and proceed to the third step.

제 9단계로서 w는 소수일 가능성이 높으므로 소수라고 판정하고 해당 알고리즘을 종료한다.As the ninth step, w is likely to be a prime number, so it is determined to be a prime number and the corresponding algorithm is terminated.

상기 알고리즘에서 수행 시간을 줄이기 위해 제 1단계에서 w를 정해진 수의 작은 소수들(예를 들어 첫 1000개의 소수들)로 나누어 작은 소인수를 갖는지를 먼저 검사할 수도 있다. 또한, 제 2단계 ~ 제 6단계에서 n개의 |w|비트의 난수 b를 사용하는 대신에 첫 k개는 작은 소수들을, 나머지 n-k개는 |w|비트의 임의의 난수를 사용함으로써, 첫 k개의 멱승 계산 시 효율을 높일 수 있다(예를 들면 n = 50, k = 20). In the above algorithm, in order to reduce the execution time, in the first step, w may be divided into a predetermined number of small prime numbers (for example, the first 1000 prime numbers) to first check whether a small prime factor is obtained. Also, instead of using n | w | bits of random numbers b in steps 2 through 6, the first k uses small random numbers and the remaining nk uses | w | bits of random numbers, so that the first k Efficiency can be increased when calculating the power of two dogs (eg n = 50, k = 20).

다음으로, 소수 P, Q 생성 알고리즘에 대하여 설명한다.Next, the prime number P and Q generation algorithms will be described.

KCDSA는 다음의 조건을 만족하는 두 소수 p, q를 필요로 한다.KCDSA requires two prime numbers p, q that satisfy the following conditions:

(1) 2α-1 < P < 2α, (|p|=α), = 1024 + 256i(0 ≤i ≤4).(1) 2 α-1 <P <2 α , (| p | = α), = 1024 + 256i (0 ≦ i ≦ 4).

(2) 2β-1 < q < 2β, (|q|=β), = 160 + 32j(0 ≤j ≤3).(2) 2 β-1 <q <2 β , (| q | = β), = 160 + 32j (0 ≦ j ≦ 3).

(3) q는 p-1을 나누고, (p-1)/2 q는 소수이거나 q보다 큰 소수들의 곱.(3) q divides p-1, and (p-1) / 2 q is the product of prime numbers greater than or greater than q.

상기 조건 (1), (2)는 소수 p, q가 가질 수 있는 크기를 규정한 것이며, 조건 (3)은 p-1이 q 보다 작은 소인수들을 가질 때 가능한 공격들을 막기 위한 조건이다. 여기서는 소수 p, q가 J = (p - 1) / 2q도 역시 소수가 되도록 p, q를 생성하는 방법을 설명한다.The above conditions (1) and (2) define the sizes that prime numbers p and q can have, and condition (3) is a condition for preventing possible attacks when p-1 has prime factors smaller than q. Here, a method of generating p and q such that the prime numbers p and q are also primes will be described as J = (p-1) / 2q.

이때 J가 q보다 큰 소수이므로 먼저 소수 r을 찾은 후, 여러 개의 소수 q에 대해서 2Jq + 1이 소수인지를 판정함으로써 수행 속도를 빠르게 할 수 있다. 소수 p와 q의 생성시 필요한 난수의 발생에는 HAS-160을 사용할 수 있다. At this time, since J is a prime number larger than q, the prime number r is first found, and then the execution speed can be increased by determining whether 2Jq + 1 is prime for several prime numbers q. HAS-160 can be used to generate random numbers for generation of prime numbers p and q.

임의의 비트열 시드(Seed)로부터 임의의 n비트 정수를 출력으로 내는 의사난수발생기를 다음과 같이 정의한다.A pseudo random number generator that outputs an arbitrary n-bit integer from an arbitrary bit string seed as an output is defined as follows.

PRNG(Seed, n) = v0 + v12160 + . . . + vk-12(k-1).160 + vk2k.160 PRNG (Seed, n) = v 0 + v 1 2 160 +. . . + v k-1 2 (k-1) .160 + v k 2 k.160

vi = HAS-160(Seed || i) for i = 0, 1, …, k-1v i = HAS-160 for i = 0, 1,... , k-1

vk = HAS-160(Seed || k) mod 2r v k = HAS-160 (Seed || k) mod 2 r

여기서, k = n/160 , r = n mod 160을 나타내며, 시드(Seed)와 연접되는 i, k는 8비트 수로 표현한다. 또한, 비트열과 정수간의 변환이 필요할 때는 항상 변환규칙에 의거하여 적절히 변환된 후 연산이 일어나는 것으로 가정한다.Here, k = n / 160 and r = n mod 160, and i and k connected to the seed are represented by an 8-bit number. In addition, it is assumed that when a conversion between a bit string and an integer is necessary, the operation occurs after appropriate conversion based on the conversion rule.

다음은 p = 2Jq + 1 (p, q, r은 소수)인 소수 p, q를 생성하는 알고리즘이다. 여기서 입력은 p의 비트 길이 α와 q의 비트 길이 β이며 출력은 소수 p,q,J, 증거값 시드(Seed) 및 카운트(count)이다.The following algorithm produces a prime p, q with p = 2Jq + 1 (p, q, r is prime): Where the inputs are the bit length α of p and the bit length β of q and the outputs are prime p, q, J, evidence seed and count.

제 1단계로서, 비트 크기의 임의의 비트열 시드(Seed)를 선택한다. 그리고, 제 2단계로서 상기 선택된 시드(Seed)를 난수 발생기 PRNG의 입력으로 하여 비트의 난수 u를 발생시킨다.(u = PRNG(Seed, α- β-4))As a first step, an arbitrary bit string seed of bit size is selected. As a second step, the selected seed is input to the random number generator PRNG to generate a random number u of bits. (U = PRNG (Seed, α-β-4))

제 3단계로서 상기 u의 상위에 4비트 1000을 붙이고 최하위 비트는 1로 만들어 이를 J로 둔다.(J = 2α-β-1 ∨ u ∨ 1)In the third step, 4 bits 1000 are added to the upper part of u, and the least significant bit is 1, which is set to J (J = 2 α-β-1 ∨ u ∨ 1).

제 4단계로서 강한 소수 판정 알고리즘으로 J를 판정하여 소수가 아니면 상기 제 1단계로 진행한다. 제 5단계로서 카운트를 0으로 초기화하고, 제 6단계로서 카운트를 1 증가시키며, 제 7단계로서 상기 카운트가 224보다 크면 상기 제 1단계로 진행한다.As a fourth step, J is determined by a strong decimal decision algorithm, and if not, the flow proceeds to the first step. In the fifth step, the count is initialized to 0. In the sixth step, the count is increased by one. When the count is greater than 2 24 in the seventh step, the count proceeds to the first step.

제 8단계로서 시드(Seed)에 카운트를 연접한 것을 PRNG의 입력으로 하여 β비트의 난수 u를 발생시킨다.(u = PRNG(Seed || count, β)In the eighth step, a β-bit random number u is generated by inputting the PRNG by connecting the count to the seed. (U = PRNG (Seed || count, β)

제 9단계로서 u의 최상위 및 최하위 비트를 1로 만들어 이를 1로 둔다.(q = 2β-1 ∨ u ∨ 1)As a ninth step, we make the most significant and least significant bits of u 1 and leave it at 1. (q = 2 β-1 u u 1)

제 10단계로서 p = 2Jq + 1의 비트수가 보다 크면 상기 제 6단계로 진행하고, 제 11단계로서 강한 소수 판정 알고리즘으로 q를 판정하여 소수가 아니면 상기 제 6단계로 진행하며, 제 12단계로서 강한 소수 판정 알고리즘을 p를 판정하여 소수가 아니면 상기 제 6단계로 진행한다.As a tenth step, if the number of bits of p = 2Jq + 1 is greater than the sixth step, the process proceeds to the sixth step, and as the eleventh step, q is determined by a strong decimal decision algorithm, and if it is not a decimal, the sixth step is performed. The strong decimal decision algorithm determines p and proceeds to step 6 above if it is not a prime number.

제 13단계로서 소수 p, q, J와 증거값 시드(Seed) 및 카운트(count)를 출력한다.As a thirteenth step, the prime numbers p, q, J, and the evidence value seed and count are output.

상기 제 7단계에서 카운트(Count)는 변환 규칙에 의거하여 4바이트의 비트열로 변환하여 사용하며, 상기 출력된 시드(Seed)와 카운트(Count)는 소수 p', q'가 이 알고리즘에 의해 적절히 생성되었다는 사실을 확인하는데 사용될 수 있다. In the seventh step, the count is converted into a 4-byte bit string based on a conversion rule, and the output seed and count are prime numbers p 'and q' by this algorithm. It can be used to confirm that it is properly generated.

즉, 출력 시드(Seed)로 상기 제 2단계 ~ 제 3단계를 수행하여 생성한 J가 (p'-1)/2q'과 같은 소수임을 확인하고, 다시 시드(Seed)에 카운트(Count)를 연접한 값으로 상기 제 8단계 ~ 제 9단계를 수행하여 얻은 q가 주어진 q'과 같은 소수이고, 마지막으로 p = 2Jq + 1이 소수임을 확인한다.That is, it is confirmed that J generated by performing the second to third steps as the output seed is a prime number such as (p'-1) / 2q ', and counts the seed again. As a concatenated value, it is confirmed that q obtained by performing the eighth to ninth steps is a prime number equal to a given q ', and finally, p = 2Jq + 1 is a prime number.

한편, KCDSA를 구현하기 위해 필요한 생성원 g는 다음과 같이 p, q, J를 입력으로 받아 생성원 g를 출력하는 알고리즘에 의해 생성된다.On the other hand, the generator g necessary to implement KCDSA is generated by an algorithm that receives p, q, and J and outputs generator g as follows.

먼저, 제 1단계로서 p보다 작은 임의의 수 a를 발생시키고, 제 2단계로서 g = a2J mod p를 계산한다. 그리고, 제 3단계로서 g = 1이면 제 1단계로 진행하고, 제 4단계로서 g를 출력한다.First, an arbitrary number a smaller than p is generated as the first step, and g = a 2J mod p is calculated as the second step. And if g = 1 as a 3rd step, it progresses to a 1st step and outputs g as a 4th step.

상기 알고리즘에서 출력된 g는 gq mod p = 1을 확인함으로써, 적절히 생성되었음을 확인할 수 있다.G output from the algorithm can be confirmed that it was properly generated by checking g q mod p = 1.

다음으로, KCDSA를 위한 난수 값 x, k 생성에 대하여 설명한다.Next, generation of random numbers x and k for KCDSA will be described.

KCDSA를 구현하기 위해서는 난수 혹은 의사난수(pseudo-random number)를 생성할 수 있어야 한다. KCDSA에서 사용자의 비공개 서명키 x (0 < x < q)와 각 메시지마다 다른 난수 값 k (0 < k < q)가 사용되는데, 이하 비공개 서명키 x를 생성하는 알고리즘과 여러 개의 난수 값 k와 r= h(gk mod p)의 사전 계산에 사용할 수 있는 알고리즘을 설명한다. 각 알고리즘에서 주어진 비트열로부터 |q|비트 길이의 의사난수를 발생시키는 데는 상기 정의된 의사난수발생기 PRNG(Seed, n)를 사용한다.To implement KCDSA, you need to be able to generate random or pseudo-random numbers. KCDSA uses the user's private signature key x (0 <x <q) and a different random value k (0 <k <q) for each message. Describes an algorithm that can be used to precompute r = h (g k mod p). In each algorithm, the pseudorandom number generator PRNG (Seed, n) defined above is used to generate a pseudo random number | q | bit length from a given bit string.

먼저, 서명자의 비공개 서명키 x를 생성하는 알고리즘에 대하여 설명하면, 다음과 같이 m개의 난수 값 xj (j=0, 1,..., m-1)를 생성하여 이 m개의 난수 값을 m명의 사용자에 대한 비공개 서명키로 쓸 수 있다.First, the algorithm for generating the signer's private signature key x is described. The m random numbers are generated by generating m random values x j (j = 0, 1, ..., m-1) as follows. Can be used as a private signing key for m users.

제 1단계로서 b비트의 임의의 난수를 선택하여 X 키로 둔다. (단 b ≥|q|)As a first step, an arbitrary random number of b bits is selected and left as the X key. (Where b ≥ | q |)

제 2단계로서 j = 0, 1, … , m-1에 대하여 다음을 계산한다.As a second step, j = 0, 1,... For m-1, calculate

XSEEDj = PRNG(optional user-provided random input, b)XSEED j = PRNG (optional user-provided random input, b)

XVAL = (XKEY + XSEEDj) mod 2b (|q| ≤ b ≤ B, B는 32의 배수)XVAL = (XKEY + XSEED j ) mod 2 b (| q | ≤ b ≤ B, B is a multiple of 32)

xj = PRNG(XVAL, b) mod qx j = PRNG (XVAL, b) mod q

XKEY = XKEY + PRNG(xj + XSEEDj mod 2b, b) mod 2b XKEY = XKEY + PRNG (x j + XSEED j mod 2 b , b) mod 2 b

통상 사용자의 비공개 서명키는 각 사용자가 생성할 것이므로 상기 제 2단계에서 m은 대부분의 경우 1이 될 것이다. 비공개 서명키의 랜덤성이 규칙에 의존하는 알고리즘이나 기계적인 장치뿐만 아니라 사용자의 의사에 의해서도 영향을 받게 하기 위하여 사용자의 선택적인 입력 값을 사용한다. 사용자의 비공개 서명키는 한 번만 생성하는 것이고 그 사용자의 의사에도 의존하도록 하는 것이 당연하므로 사용자의 선택적인 입력 값 XSEED를 사용하는 것이 바람직하다. Normally a private signing key of a user will be generated by each user, so m in this second step will be 1 in most cases. The user's optional input is used to ensure that the randomness of the private signing key is affected by the user's intention as well as by algorithms or mechanical devices that rely on rules. It is desirable to use the user's optional input value XSEED, since the user's private signing key is generated only once and is naturally dependent on the user's intentions.

상기 XSEED를 위한 사용자 입력은 엔트로피가 최소한 |q|비트 이상이 되도록 충분히 긴 난수를 제공 받아야 한다 (사용자 입력은 한 문자 당 1비트 정도의 엔트로피를 갖는 것으로 보는 것이 일반적이다). 그리고, XKEY는 처음 초기화 후 매 xj의 생성 때마다 갱신되는 비밀 상태 변수이다. 일단 비공개 서명키가 모두 생성되면 비밀 상태 변수 XKEY와 사용자의 비밀 입력 XSEEDj들은 안전하게 폐기시켜야 한다.The user input for the XSEED must be provided with a random number long enough so that the entropy is at least | q | bits or more (typically, the user input has entropy of about 1 bit per character). And, XKEY is a secret state variable that is updated after every x j creation after initial initialization. Once all private signing keys have been created, the secret state variable XKEY and the user's secret input XSEED j should be safely discarded.

다음으로 k와 r, t와 를 미리 계산하는 알고리즘에 대하여 설명한다.Next k and r, t and An algorithm for precomputing will be described.

해당 알고리즘은 m개의 난수 값 k와 r = h(gk mod p)를 미리 계산해 두고, 이 값들을 사용하여 m개의 메시지에 서명하는 과정에 대한 것으로 전술한 난수 발생 알고리즘을 사용할 수 있으나, 난수 k의 발생에 매번 사용자 입력을 받는 것은 비실용적이므로 고정된 KSEED를 사용하며 이는 컴퓨터 내부에서 생성된 난수의 해쉬 값으로 계산한다. t와 = gt mod p는 h() 적용 이외에 동일하다.The algorithm calculates m random values k and r = h (g k mod p) in advance, and uses these values to sign m messages, which can use the random number generation algorithm described above. Since it is impractical to receive user input each time for the occurrence of, use a fixed KSEED, which is calculated as a hash value of a random number generated inside the computer. t and = g t mod p is the same as for h ().

해당 알고리즘은 제 1단계로서 b비트의 임의의 난수를 선택하여 KKEY로 두고(단, b ≥|q|), 제 2단계로서 KSEED = PRNG(optional machine-generated random input, b)를 계산하며, 제 3단계로서 j = 0, 1, … , m-1에 대하여 다음을 계산한다.The algorithm selects a random random number of b bits as the first step and puts it as KKEY (where b ≥ | q |), and calculates KSEED = PRNG (optional machine-generated random input, b) as the second step. As a third step, j = 0, 1,... For m-1, calculate

KVAL = KKEY + KSEED mod 2b KVAL = KKEY + KSEED mod 2 b

kj = PRNG(KVAL, b) mod qk j = PRNG (KVAL, b) mod q

KKEY = KKEY + PRNG(kj+ KSEED mod 2b, b) mod 2b KKEY = KKEY + PRNG (k j + KSEED mod 2 b , b) mod 2 b

wj = mod pw j = mod p

rj = h(wj)r j = h (w j )

그리고, 제 4단계로서 M0, M1, … , Mm-1 을 서명할 m개의 메시지라고 가정하고, j = 0, 1, … , m-1에 대하여 다음을 계산한다.Then, as a fourth step, M 0 , M 1 ,... , Assuming that m m-1 is m messages to be signed, j = 0, 1,... For m-1, calculate

Hj = h(z || Mj)H j = h (z || M j )

ej = (rj Hj) mod qe j = (r j H j ) mod q

sj = x(kj - ej) mod qs j = x (k j -e j ) mod q

Mj에 대한 서명은 {rj || sj}이다.The signature for M j is {r j || s j }.

제 5단계로서 상기 제 3단계로 진행한다. 상기 제 3단계에서 다음 m개의 메시지에 서명하는데 필요한 값들 (k0, r0), (k1, r1), … , (k m-1, rm-1)을 미리 계산해 둔다. 상기 제 4단계에서는 m개 메시지 중 첫 메시지 M0가 준비되었다면 언제든지 시작될 수 있고, 실행 중에 다음에 서명할 메시지 Mj (0 < j ≤m-1)가 준비되지 않았다면 언제든지 실행을 중단할 수 있다.The fifth step proceeds to the third step. Values (k 0 , r 0 ), (k 1 , r 1 ),... Required for signing the next m messages in the third step. Calculate, (k m-1 , r m-1 ) in advance. In the fourth step, if the first message M 0 of m messages is ready, it can be started at any time. If the message M j (0 <j ≤ m-1) to be signed next is not ready during execution, execution can be stopped at any time. .

또한, 제 3단계에서 계산된 {(ki, ri)}을 저장할 수 있는 길이 m의 배열 2개를 위한 메모리가 필요하다.In addition, a memory for two arrays of length m capable of storing {(k i , r i )} calculated in the third step is required.

이 알고리즘에서 KSEED와 KKEY는 비공개 서명키 x와 같은 정도의 중요성을 가지므로 사용 중 절대로 노출되지 않도록 해야 한다. 일반적인 컴퓨팅 환경에서는 안전한 저장소가 없으므로, 비밀 값 KSEED와 KKEY는 이 알고리즘의 실행초기에 생성되어 계속 사용하다가 이 알고리즘을 사용하는 응용 프로그램이 종료되면 (다음 사용을 위해 파일이나 다른 저장소에 보관하는 것이 아니라) 안전하게 폐기시켜야 한다. In this algorithm, KSEED and KKEY are as important as the private signature key x, so they should never be exposed during use. In a typical computing environment, there is no secure storage, so the secret values KSEED and KKEY are created early in the execution of this algorithm and continue to use it, but when an application that uses this algorithm terminates (rather than storing it in a file or other storage for later use) Dispose of safely.

다음으로, 공개 검증키 y를 계산할 때 지수에서 필요한 x-1 mod q 값을 구하는 알고리즘에 대하여 설명한다.Next, an algorithm for obtaining the value of x −1 mod q required for the exponent when calculating the public verification key y will be described.

제 1단계로서 i = q, h = x, v = 0, d = 1로 두고, 제 2단계로서 = [i / h], 제 3단계로서 c = h, 제 4단계로서 h = i-c, 제 5단계로서 i=c, 제 6단계로서 c=d, 제 7단계로서 d = v-c, 제 8단계로서 v=c, 다음으로 제 9단계에서 h가 양수이면 상기 2단계로 진행한다. 마지막으로 제 10단계에서 v가 x-1 mod q가 된다.As the first step, i = q, h = x, v = 0, d = 1, and as the second step = [i / h], c = h as the third step, h = i- as the fourth step c, i = c as the fifth step, c = d as the sixth step, d = v− as the seventh step c, v = c as the eighth step, and then proceeds to step 2 if h is positive in the ninth step. Finally, in step 10, v becomes x −1 mod q.

상기 제 10단계에서 v는 음수가 될 수도 있으므로 v가 0과 q사이의 정수가 되도록 교정해 주어야 한다.In the tenth step, since v may be a negative number, it should be corrected so that v is an integer between 0 and q.

다음으로, 서명, 공개 검증키 및 도메인 변수에 대한 ASN.1 표기에 대하여 설명한다.Next, ASN.1 notation for signature, public verification key and domain variable will be described.

상기 서명, 공개 검증키 및 도메인 변수에 대한 ASN.1 표기는 아래와 같이 정의할 수 있다.The ASN.1 notation for the signature, public verification key, and domain variable can be defined as follows.

P-KCDSASignatureValue ::= SEQUENCE {P-KCDSASignatureValue :: = SEQUENCE {

r BIT STRING,    r BIT STRING,

s INTEGER }    s INTEGER}

P-KCDSAParameters ::= SEQUENCE {P-KCDSAParameters :: = SEQUENCE {

p INTEGER, -- odd prime p = 2Jq+1    p INTEGER,-odd prime p = 2Jq + 1

q INTEGER, -- odd prime    q INTEGER,-odd prime

g INTEGER, -- generator of order q    g INTEGER,-generator of order q

J INTEGER OPTIONAL, -- odd prime    J INTEGER OPTIONAL,-odd prime

Seed OCTET STRING OPTIONAL    Seed OCTET STRING OPTIONAL

Count INTEGER OPTIONAL }    Count INTEGER OPTIONAL}

P-KCDSAPublicKey ::= INTEGER -- Public key yP-KCDSAPublicKey :: = INTEGER-Public key y

다음으로 KCDSA를 참조 구현하여 각 단계마다 얻을 수 있는 계산 값의 예에 대하여 설명한다. 하기의 계산 값들은 전자 서명 응용을 개발하는 경우 구현 결과에 대한 적합성을 확인하고자 할 때 기준 값으로 사용될 수 있다.Next, examples of calculation values obtained at each step by referring to and implementing KCDSA will be described. The following calculation values may be used as reference values when verifying suitability for the implementation result when developing an electronic signature application.

먼저, 소수 p, q와 생성원 g를 생성하는 알고리즘에 대한 참조 구현 값에 대하여 |p|=α=1024, |q|=β=160인 경우를 예를 들어 설명한다.First, the case where | p | = α = 1024 and | q | = β = 160 will be described with reference to the reference implementation values for the algorithms for generating the prime numbers p, q and generator g.

전술한 소수 p, q, 생성원 g 생성 알고리즘의 제 1단계에서 선택한 비트 크기의 임의의 비트열 Seed:Any bit string of the bit size selected in the first step of the above-described prime number p, q, generator g generation algorithm Seed:

Seed = 68 ad b0 d1 b6 ae f1 44 a9 50Seed = 68 ad b0 d1 b6 ae f1 44 a9 50

f3 e7 84 c9 89 3d 36 04 09 0e           f3 e7 84 c9 89 3d 36 04 09 0e

제 2단계에서 발생시킨 비트의 난수 u:Random number u of bits generated in step 2:

u = PRNG(Seed, 860) = 0cfa55c3 2582e0d7 4a09ef55u = PRNG (Seed, 860) = 0cfa55c3 2582e0d7 4a09ef55

c5d2acac 5b46e9f3 5470ac48 1d95438c 7f5cc107 1d4e0bc5c5d2acac 5b46e9f3 5470ac48 1d95438c 7f5cc107 1d4e0bc5

877e0a0f c6b30dc6 c743f238 9bc69b8f cb7affeb dea013f8877e0a0f c6b30dc6 c743f238 9bc69b8f cb7affeb dea013f8

64c68ac2 cb8bd7b5 c434809f c6d1b62c d9f20bb1 a7fab58c64c68ac2 cb8bd7b5 c434809f c6d1b62c d9f20bb1 a7fab58c

c3f5d2dc a511e2e4 077e9def 912141f8 47f8751d 1dc47f3dc3f5d2dc a511e2e4 077e9def 912141f8 47f8751d 1dc47f3d

제 3단계에서 생성한 J (제 4단계의 강한 소수 판정 알고리즘을 통과):J generated in step 3 (passes the strong decimal decision algorithm in step 4):

J = 2α-β-1 ∨ u ∨ 1 = 8cfa55c3 2582e0d7 4a09ef55J = 2 α-β-1 ∨ u ∨ 1 = 8cfa55c3 2582e0d7 4a09ef55

c5d2acac 5b46e9f3 5470ac48 1d95438c 7f5cc107 1d4e0bc5c5d2acac 5b46e9f3 5470ac48 1d95438c 7f5cc107 1d4e0bc5

877e0a0f c6b30dc6 c743f238 9bc69b8f cb7affeb dea013f8877e0a0f c6b30dc6 c743f238 9bc69b8f cb7affeb dea013f8

64c68ac2 cb8bd7b5 c434809f c6d1b62c d9f20bb1 a7fab58c64c68ac2 cb8bd7b5 c434809f c6d1b62c d9f20bb1 a7fab58c

c3f5d2dc a511e2e4 077e9def 912141f8 47f8751d 1dc47f3dc3f5d2dc a511e2e4 077e9def 912141f8 47f8751d 1dc47f3d

최종 카운트(Count) 값: Count = 5189 = 0x1445Final count value: Count = 5189 = 0x1445

제 8단계에서 생성한 비트의 난수 u:Random number u of bits generated in step 8:

Seed || Count = 68 ad b0 d1 b6 ae f1 44 a9 50 f3 e7Seed || Count = 68 ad b0 d1 b6 ae f1 44 a9 50 f3 e7

84 c9 89 3d 36 04 09 0e 00 00 14 45 84 c9 89 3d 36 04 09 0e 00 00 14 45

u = PRNG(Seed || Count, 160) u = PRNG (Seed || Count, 160)

= c3ddd371 7bf05b8f 8dd725c1 62f0b943 2c6f77fb = c3ddd371 7bf05b8f 8dd725c1 62f0b943 2c6f77fb

제 9단계에서 생성한 q (제 11단계의 강한 소수 판정 알고리즘을 통과)::The q generated in step 9 (passes the strong decimal decision algorithm in step 11):

q = 2β-1 ∨ u ∨ 1q = 2 β-1 ∨ u ∨ 1

= c3ddd371 7bf05b8f 8dd725c1 62f0b943 2c6f77fb  = c3ddd371 7bf05b8f 8dd725c1 62f0b943 2c6f77fb

제 10단계에서 생성한 p: p = 2Jq + 1 (제 12단계의 강한 소수 판정 알고리즘을 통과):P generated in step 10: p = 2Jq + 1 (pass the strong decimal decision algorithm of step 12):

p = 2Jq + 1 p = 2Jq + 1

= d7b9afc1 04f4d53f = d7b9afc1 04f4d53f

737db88d 6bf77e12 cd7ec3d7 1cbe3cb7 4cd224bf f348154a 737db88d 6bf77e12 cd7ec3d7 1cbe3cb7 4cd224bf f348154a

fba6bfed 797044df c655dcc2 0c952c0e c43a97e1 ad67e687 fba6bfed 797044df c655dcc2 0c952c0e c43a97e1 ad67e687

d10729ca f622845d 162afca8 f0248cc4 12b3596c 4c5d3384 d10729ca f622845d 162afca8 f0248cc4 12b3596c 4c5d3384

f7e25ee6 44ba87bb 09b164fb 465477b8 7fdba5ea a400ffa0 f7e25ee6 44ba87bb 09b164fb 465477b8 7fdba5ea a400ffa0

925714ae 19464ffa cead3a97 50d12194 8ab2d8d6 5c82379f 925714ae 19464ffa cead3a97 50d12194 8ab2d8d6 5c82379f

상기 생성한 p, q, J를 이용하여 생성원 g를 구하는 예:Example of obtaining the generation source g using the generated p, q, J:

제 1단계에서 선택한 g:G selected in step 1:

g = random αbits = 1711797e cf9bc4b8g = random αbits = 1711797e cf9bc4b8

1c5ad487 b2d9f3d4 f4de8616 c47bb030 355ea4bf 2ab07104 1c5ad487 b2d9f3d4 f4de8616 c47bb030 355ea4bf 2ab07104

0ee59c95 453119d7 68af7a79 95133c2d a1e302c6 9128afba 0ee59c95 453119d7 68af7a79 95133c2d a1e302c6 9128afba

129e698d c7982f56 064c70c1 8fb523ba 826b76f8 1efa58a9 129e698d c7982f56 064c70c1 8fb523ba 826b76f8 1efa58a9

1226e6af c96e2010 97589940 8e785fe4 a338b398 065ffd22 1226e6af c96e2010 97589940 8e785fe4 a338b398 065ffd22

2fd1e1b7 a1da01a0 90b84168 e3522241 d2855a4e fe87611a 2fd1e1b7 a1da01a0 90b84168 e3522241 d2855a4e fe87611a

제 2단계에서 계산한 g : g = a2J mod p (제 3단계의 테스트 통과)Calculated in step 2 g: g = a 2J mod p (passed test in step 3)

g = a2J mod p = 50e414c7 a56892d1g = a 2J mod p = 50e414c7 a56892d1

ad633e42 d5cd8346 f2c09808 111c772c c30b0c54 4102c27e ad633e42 d5cd8346 f2c09808 111c772c c30b0c54 4102c27e

7b5f9bec 57b9df2a 15312891 9d795e46 652b2a07 2e1f2517 7b5f9bec 57b9df2a 15312891 9d795e46 652b2a07 2e1f2517

f2a3afff 5815253a aefe3572 4cfa1af6 afce3a6b 41e3d0e1 f2a3afff 5815253a aefe3572 4cfa1af6 afce3a6b 41e3d0e1

3bed0eff 54383c46 65e69b47 ba79bbc3 339f86b9 be2b5889 3bed0eff 54383c46 65e69b47 ba79bbc3 339f86b9 be2b5889

4a18b201 afc41fe3 a0d93d31 25efda79 bc50dbbb 2c3ab639 4a18b201 afc41fe3 a0d93d31 25efda79 bc50dbbb 2c3ab639

다음으로 서명 생성 알고리즘의 수치 예에 대하여 상기 p, q, g를 이용하여 서명을 생성하는 예를 설명한다.Next, an example of generating a signature using p, q and g will be described with respect to the numerical example of the signature generation algorithm.

도메인 변수 p, q, g :Domain variables p, q, g:

p = d7b9afc1 04f4d53fp = d7b9afc1 04f4d53f

737db88d 6bf77e12 cd7ec3d7 1cbe3cb7 4cd224bf f348154a 737db88d 6bf77e12 cd7ec3d7 1cbe3cb7 4cd224bf f348154a

fba6bfed 797044df c655dcc2 0c952c0e c43a97e1 ad67e687 fba6bfed 797044df c655dcc2 0c952c0e c43a97e1 ad67e687

d10729ca f622845d 162afca8 f0248cc4 12b3596c 4c5d3384 d10729ca f622845d 162afca8 f0248cc4 12b3596c 4c5d3384

f7e25ee6 44ba87bb 09b164fb 465477b8 7fdba5ea a400ffa0 f7e25ee6 44ba87bb 09b164fb 465477b8 7fdba5ea a400ffa0

925714ae 19464ffa cead3a97 50d12194 8ab2d8d6 5c82379f 925714ae 19464ffa cead3a97 50d12194 8ab2d8d6 5c82379f

q = c3ddd371 7bf05b8f 8dd725c1 62f0b943 2c6f77fbq = c3ddd371 7bf05b8f 8dd725c1 62f0b943 2c6f77fb

g = 50e414c7 a56892d1g = 50e414c7 a56892d1

ad633e42 d5cd8346 f2c09808 111c772c c30b0c54 4102c27e ad633e42 d5cd8346 f2c09808 111c772c c30b0c54 4102c27e

7b5f9bec 57b9df2a 15312891 9d795e46 652b2a07 2e1f2517 7b5f9bec 57b9df2a 15312891 9d795e46 652b2a07 2e1f2517

f2a3afff 5815253a aefe3572 4cfa1af6 afce3a6b 41e3d0e1 f2a3afff 5815253a aefe3572 4cfa1af6 afce3a6b 41e3d0e1

3bed0eff 54383c46 65e69b47 ba79bbc3 339f86b9 be2b5889 3bed0eff 54383c46 65e69b47 ba79bbc3 339f86b9 be2b5889

4a18b201 afc41fe3 a0d93d31 25efda79 bc50dbbb 2c3ab639 4a18b201 afc41fe3 a0d93d31 25efda79 bc50dbbb 2c3ab639

다음으로, 비공개 서명키 x 생성 알고리즘의 수치 예에 대하여 설명한다.Next, a numerical example of the private signature key x generation algorithm will be described.

b=160b = 160

XKEY = f2072ce3 0a017656 8324564b fdbd7077 173b7e3fXKEY = f2072ce3 0a017656 8324564b fdbd7077 173b7e3f

Optional User-provided Random Input(160bytes) =Optional User-provided Random Input (160bytes) =

“saldjfawp399u374r098u98^%^%hkrgn;lwkrp47t93c%$89439859k”“Saldjfawp399u374r098u98 ^% ^% hkrgn; lwkrp47t93c% $ 89439859k”

“jdmnvcm cvk o4u09r 4j oj2out209xfqw;l*&!^#@U#*#$)(# z x”“Jdmnvcm cvk o4u09r 4j oj2out209xfqw; l * &! ^ # @ U # * # $) (# z x”

“o957tc-95 5 v5oiuv9876 6 vj o5iuv-053,mcvlrkfworet”“O957tc-95 5 v5oiuv9876 6 vj o5iuv-053, mcvlrkfworet”

XSEED = PRNG(Optional User-provided Random Input, 160)XSEED = PRNG (Optional User-provided Random Input, 160)

= 524c2b44 27571044 17668b0f 332476d7 af9a8f77      = 524c2b44 27571044 17668b0f 332476d7 af9a8f77

XVAL = XKEY + XSEED mod 2160 XVAL = XKEY + XSEED mod 2160

= 44535827 3158869a 9a8ae15b 30e1e74e c6d60db6     = 44535827 3158869a 9a8ae15b 30e1e74e c6d60db6

PRNG(XVAL,160) = 068c4ef3 55d8b6f5 3eff1df6 f243f985 63896c58PRNG (XVAL, 160) = 068c4ef3 55d8b6f5 3eff1df6 f243f985 63896c58

x = PRNG(XVAL,160) mod qx = PRNG (XVAL, 160) mod q

= 068c4ef3 55d8b6f5 3eff1df6 f243f985 63896c58 = 068c4ef3 55d8b6f5 3eff1df6 f243f985 63896c58

공개 검증키 y및 z 생성의 예:Example of public verification key y and z generation:

x-1 mod q = a614b9b6 d25986c5 3621f7bc bc3af2ff 8b426e67x-1 mod q = a614b9b6 d25986c5 3621f7bc bc3af2ff 8b426e67

y = gx-1 mod q mod p = 96dce0e7 b2f17009y = g x-1 mod q mod p = 96dce0e7 b2f17009

3d9b51d2 ba782027 33b62c40 6d376975 8b3e0cbb a1ff6c78 3d9b51d2 ba782027 33b62c40 6d376975 8b3e0cbb a1ff6c78

727a3570 3cb6bc24 76c3c293 743dfee9 4aa4b9ef a9a17fa6 727a3570 3cb6bc24 76c3c293 743dfee9 4aa4b9ef a9a17fa6

bf790ac2 5a82c615 23f50aba ac7b6464 7eb15c95 7b07f5ed bf790ac2 5a82c615 23f50aba ac7b6464 7eb15c95 7b07f5ed

7d467243 089f7469 5cd58fbf 57920cc0 c05d4582 9c0a8161 7d467243 089f7469 5cd58fbf 57920cc0 c05d4582 9c0a8161

b943f184 51845760 ed096540 e78aa975 0b03d024 48cbf8de b943f184 51845760 ed096540 e78aa975 0b03d024 48cbf8de

z = y mod 2l =z = y mod 2 l =

23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed

7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c07d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0

c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60

ed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 deed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 de

서명될 메시지 M : 7비트 ASCII 코드 사용Message to be signed M: Use 7-bit ASCII code

M = “This is a test message for KCDSA usage!” = M = “This is a test message for KCDSA usage!” =

54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d

65 73 73 61 67 65 20 66 6f 72 20 4b 43 44 53 4165 73 73 61 67 65 20 66 6f 72 20 4b 43 44 53 41

20 75 73 61 67 65 2120 75 73 61 67 65 21

서명 생성 과정 :Signature generation process:

① 난수 값 k생성 : b=160① Generate random number k: b = 160

KKEY = 552daa16 42b91114 f9952200 4fd4a0c3 c63ef69fKKEY = 552daa16 42b91114 f9952200 4fd4a0c3 c63ef69f

Optional Machine-generated Random Input(160bits) =Optional Machine-generated Random Input (160bits) =

1b f1 23 b0 27 52 e2 c9 ed 81 1b f1 23 b0 27 52 e2 c9 ed 81

51 74 69 f2 0b 0c 19 a9 97 a451 74 69 f2 0b 0c 19 a9 97 a4

KSEED = PRNG(Optional Machine-generated Random Input, 160)KSEED = PRNG (Optional Machine-generated Random Input, 160)

= b014bdc2 21ca3428 0c6f1998 072f745e e4a680e8 = b014bdc2 21ca3428 0c6f1998 072f745e e4a680e8

KVAL = (KKEY + KSEED) mod 2160 KVAL = (KKEY + KSEED) mod 2160

= 054267d8 6483453d 06043b98 57041522 aae57787 = 054267d8 6483453d 06043b98 57041522 aae57787

PRNG(KVAL,160) = 4b037e4b 573bb7e3 34cad0a7 0bed6b58 81df9e8e PRNG (KVAL, 160) = 4b037e4b 573bb7e3 34cad0a7 0bed6b58 81df9e8e

k = PRNG(KVAL,160) mod q k = PRNG (KVAL, 160) mod q

= 4b037e4b 573bb7e3 34cad0a7 0bed6b58 81df9e8e      = 4b037e4b 573bb7e3 34cad0a7 0bed6b58 81df9e8e

② 증거 값 w = gk mod p: ② proof value w = gk mod p:

w = 0d2ace49 f0415880 w = 0d2ace49 f0415880

843e4cff 2a224dcc a4d12a79 11323aac e1eaf5b4 f479a91f 843e4cff 2a224dcc a4d12a79 11323aac e1eaf5b4 f479a91f

94d01820 193d40a5 f71347e3 8f97ef41 8bd25959 879ea7f6 94d01820 193d40a5 f71347e3 8f97ef41 8bd25959 879ea7f6

2d3fbaa7 e70a9d78 b8dc7933 00bbf669 0829961a ab4e59a8 2d3fbaa7 e70a9d78 b8dc7933 00bbf669 0829961a ab4e59a8

410510da ada05ef8 7e48144d 6efe5075 29011382 38c84b5d 410510da ada05ef8 7e48144d 6efe5075 29011382 38c84b5d

2c3f590c 06e1b918 7ee5d509 e15ccab2 c257d549 ac1a5086 2c3f590c 06e1b918 7ee5d509 e15ccab2 c257d549 ac1a5086

③ 서명의 첫 부분 r = h(w) : w를 비트열로 변환 후 해쉬한 결과의 비트열③ First part of signature r = h (w): Bit string of hashed result after converting w to bit string

r = 8f 99 6a 98 ed a5 7c c8 d8 8a r = 8f 99 6a 98 ed a5 7c c8 d8 8a

a6 ff df ae a2 2f 39 d7 fa 8a a6 ff df ae a2 2f 39 d7 fa 8a

④ 메시지의 해쉬 코드 H = h(z || M) : z || M의 해쉬한 결과의 비트열④ Hash code of the message H = h (z || M): z || Bit string of hashed result of M

z = y mod 2l z = y mod 2 l

= 23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed = 23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed

7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0 7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0

c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60 c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60

ed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 de ed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 de

z || M = 23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed     z || M = 23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed

7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0 7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0

c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60

ed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 deed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 de

54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d

65 73 73 61 67 65 20 66 6f 72 20 4b 43 44 53 4165 73 73 61 67 65 20 66 6f 72 20 4b 43 44 53 41

20 75 73 61 67 65 2120 75 73 61 67 65 21

H = af 3f b0 4b 07 03 c6 ea 56 08 H = af 3f b0 4b 07 03 c6 ea 56 08

d8 9b 38 c3 3b 35 9c bc a2 b0         d8 9b 38 c3 3b 35 9c bc a2 b0

⑤ 중간 값 e = (r H) mod q:⑤ median value e = (r H) mod q:

r H = 20a6dad3 eaa6ba22 8e827e64 e76d991a a56b583ar H = 20a6dad3 eaa6ba22 8e827e64 e76d991a a56b583a

e = (r H) mod q e = (r H) mod q

= 20a6dad3 eaa6ba22 8e827e64 e76d991a a56b583a = 20a6dad3 eaa6ba22 8e827e64 e76d991a a56b583a

⑥ 서명의 두 번째 부분 s = x(k - e) mod q : ⑥ second part of signature s = x (k-e) mod q:

s = 541f7dc4 f92c65eb 7f63b6b4 f22177f1 ee2cf339 s = 541f7dc4 f92c65eb 7f63b6b4 f22177f1 ee2cf339

⑦ 서명 = {r, s}:⑦ Signature = {r, s}:

r = 8f 99 6a 98 ed a5 7c c8 d8 8a   r = 8f 99 6a 98 ed a5 7c c8 d8 8a

a6 ff df ae a2 2f 39 d7 fa 8a         a6 ff df ae a2 2f 39 d7 fa 8a

s = 541f7dc4 f92c65eb 7f63b6b4 f22177f1 ee2cf339 s = 541f7dc4 f92c65eb 7f63b6b4 f22177f1 ee2cf339

다음으로, 서명 검증 알고리즘의 수치 예에 대하여 설명한다.Next, a numerical example of the signature verification algorithm will be described.

검증자 단말은 수신된 메시지 M'과 서명 '으로부터 다음과 같은 과정들을 거쳐서 '이 공개키 y에 해당하는 비공개 서명키 x를 가진 서명자 단말에서 올바른 서명 생성 과정을 거쳐 만든 M'에 대한 올바른 서명임을 확인할 수 있다.The verifier terminal signs the received message M 'and Through the following process It can be confirmed that the signer terminal having the private signing key x corresponding to this public key y is the correct signature for M, which is created through the correct signature generation process.

① 수신된 M', r', s'에 대해 : r', s'의 크기 확인① Receive M ', r', s': Check the size of r ', s'

M' = 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d M '= 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d

65 73 73 61 67 65 20 66 6f 72 20 4b 43 44 53 41 65 73 73 61 67 65 20 66 6f 72 20 4b 43 44 53 41

20 75 73 61 67 65 21 20 75 73 61 67 65 21

r'= 8f 99 6a 98 ed a5 7c c8 d8 8a r '= 8f 99 6a 98 ed a5 7c c8 d8 8a

a6 ff df ae a2 2f 39 d7 fa 8a         a6 ff df ae a2 2f 39 d7 fa 8a

s'= 541f7dc4 f92c65eb 7f63b6b4 f22177f1 ee2cf339 s' = 541f7dc4 f92c65eb 7f63b6b4 f22177f1 ee2cf339

② 검증할 메시지의 해쉬 코드 H' = h(z || M') : (2) Hash code of the message to verify H '= h (z || M'):

z = y mod 2l z = y mod 2 l

= 23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed    = 23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed

7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0 7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0

c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60 c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60

ed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 de ed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 de

z || M' = 23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed z || M '= 23 f5 0a ba ac 7b 64 64 7e b1 5c 95 7b 07 f5 ed

7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0 7d 46 72 43 08 9f 74 69 5c d5 8f bf 57 92 0c c0

c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60 c0 5d 45 82 9c 0a 81 61 b9 43 f1 84 51 84 57 60

ed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 de ed 09 65 40 e7 8a a9 75 0b 03 d0 24 48 cb f8 de

54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 6d

65 73 73 61 67 65 20 66 6f 72 20 4b 43 44 53 41 65 73 73 61 67 65 20 66 6f 72 20 4b 43 44 53 41

20 75 73 61 67 65 21 20 75 73 61 67 65 21

H' = af 3f b0 4b 07 03 c6 ea 56 08 H '= af 3f b0 4b 07 03 c6 ea 56 08

d8 9b 38 c3 3b 35 9c bc a2 b0          d8 9b 38 c3 3b 35 9c bc a2 b0

③ 중간 값 e' = (r' H') mod q:③ median e '= (r' H ') mod q:

r' H' = 20a6dad3 eaa6ba22 8e827e64 e76d991a a56b583a r ' H '= 20a6dad3 eaa6ba22 8e827e64 e76d991a a56b583a

e' = (r' H') mod qe '= (r' H ') mod q

= 20a6dad3 eaa6ba22 8e827e64 e76d991a a56b583a            = 20a6dad3 eaa6ba22 8e827e64 e76d991a a56b583a

④ 증거 값 w' = ys'ge' mod p :④ the proof value w '= y s' g e' mod p:

w' = 0d2ace49 f0415880 w '= 0d2ace49 f0415880

843e4cff 2a224dcc a4d12a79 11323aac e1eaf5b4 f479a91f843e4cff 2a224dcc a4d12a79 11323aac e1eaf5b4 f479a91f

94d01820 193d40a5 f71347e3 8f97ef41 8bd25959 879ea7f694d01820 193d40a5 f71347e3 8f97ef41 8bd25959 879ea7f6

2d3fbaa7 e70a9d78 b8dc7933 00bbf669 0829961a ab4e59a82d3fbaa7 e70a9d78 b8dc7933 00bbf669 0829961a ab4e59a8

410510da ada05ef8 7e48144d 6efe5075 29011382 38c84b5d410510da ada05ef8 7e48144d 6efe5075 29011382 38c84b5d

2c3f590c 06e1b918 7ee5d509 e15ccab2 c257d549 ac1a50862c3f590c 06e1b918 7ee5d509 e15ccab2 c257d549 ac1a5086

⑤ h(w') = r' :⑤ h (w ') = r':

h(w') = 8f 99 6a 98 ed a5 7c c8 d8 8a  h (w ') = 8f 99 6a 98 ed a5 7c c8 d8 8a

a6 ff df ae a2 2f 39 d7 fa 8a               a6 ff df ae a2 2f 39 d7 fa 8a

= r'         = r '

또한, 본 발명에 따른 실시예는 상술한 것으로 한정되지 않고, 본 발명과 관련하여 통상의 지식을 가진자에게 자명한 범위내에서 여러 가지의 대안, 수정 및 변경하여 실시할 수 있다.In addition, the embodiments according to the present invention are not limited to the above-described embodiments, and various alternatives, modifications, and changes can be made within the scope apparent to those skilled in the art.

이상과 같이, 본 발명에 의하면 대학, 동사무소 등과 같이 제 증명서를 발급하는 기관에 전자 서명된 문서의 안전한 출력화 및 검증 방안을 제공함으로써, 정보화 사회에서의 사용자의 편의성을 크게 높일 수 있다. As described above, according to the present invention, it is possible to greatly increase the convenience of the user in the information society by providing a method for securely outputting and verifying an electronically signed document to an organization that issues a first certificate such as a university or a government office.

또한, 단순한 신원확인 용도에서 당사자 간 전자문서의 직접적인 양방향 처리를 구현함으로써, 전자 서명의 활성화에 기여할 수 있다.In addition, by implementing direct two-way processing of the electronic document between the parties in simple identification purposes, it can contribute to the activation of the electronic signature.

도 1은 본 발명의 일 실시예에 따른 전자 문서 검증 시스템의 구성 블럭도.1 is a block diagram of an electronic document verification system according to an embodiment of the present invention.

도 2는 본 발명의 일 실시예에 따른 전자 서명된 문서의 검증 개념도.2 is a conceptual diagram for verifying an electronically signed document according to an embodiment of the present invention.

도 3은 도 1에 있어, 전자 서명된 문서의 검증 구조도.3 is a verification structural diagram of an electronically signed document in FIG.

도 4는 본 발명의 일 실시예에 따른 전자 서명된 문서의 검증을 위한 제어 흐름도.4 is a control flow diagram for verifying an electronically signed document in accordance with one embodiment of the present invention.

도 5는 도 4에 있어, 매개 변수 설정을 위한 제어 흐름도.5 is a control flowchart for setting parameters in FIG. 4;

도 6은 도 4에 있어, 서명 생성을 위한 제어 흐름도.6 is a control flow diagram for generating a signature in FIG.

도 7은 도 4에 있어, 출력된 전자 문서의 서명 검증을 위한 제어 흐름도.FIG. 7 is a control flowchart of signature verification of the outputted electronic document in FIG. 4; FIG.

* 도면의 주요 부분에 대한 부호의 설명 *Explanation of symbols on the main parts of the drawings

10 : 서명자 단말 20 : 인증 서버10: signer terminal 20: authentication server

30 : 증명자 단말 40 : 검증자 단말30: prover terminal 40: verifier terminal

Claims (7)

서명자 단말에서 출력 가능한 전자 서명을 전자 문서에 삽입하여 전송하는 과정과;Inserting and outputting an electronic signature output from the signer terminal into an electronic document; 검증자 단말에서 상기 전자 문서를 디지털 방식으로 출력하여 출력된 전자 문서의 검증을 요청하는 과정과;Requesting verification of the outputted electronic document by digitally outputting the electronic document in a verifier terminal; 증명자 단말에서 상기 출력된 전자 문서에 삽입되어 있는 전자 서명의 증명을 통해 해당 전자 문서를 검증하는 과정을 포함하여 이루어지는 것을 특징으로 하는 전자 서명된 문서의 검증 방법.And a step of verifying the electronic document through the proof of the electronic signature inserted in the outputted electronic document in the authenticator terminal. 제 1항에 있어서,The method of claim 1, 상기 전자 서명을 전자 문서에 삽입하여 전송하는 과정은, 상기 서명자 단말에서 인증 방법에 의해 서명되어진 데이터들인 전자 문서의 주요 필드를 선택하는 단계와;The step of inserting and transmitting the electronic signature into the electronic document includes: selecting a main field of the electronic document which is data signed by an authentication method at the signer terminal; 상기 주요 필드를 인코딩하여 데이터 매트릭스 코드를 생성하는 단계와;Encoding the main field to generate a data matrix code; 상기 주요 필드에 대한 서명 매트릭스 코드를 생성하는 단계와;Generating a signature matrix code for the primary field; 상기 생성된 데이터 매트릭스 코드 및 서명 매트릭스 코드를 전자 문서에 삽입하여 전송하는 단계를 포함하여 이루어지는 것을 특징으로 하는 전자 서명된 문서의 검증 방법.And inserting the generated data matrix code and signature matrix code into an electronic document and transmitting the same. 제 2항에 있어서,The method of claim 2, 상기 서명 매트릭스 코드를 생성하는 단계는, 상기 출력 가능한 전자 서명 생성을 위한 매개 변수를 설정하는 단계와;Generating the signature matrix code may comprise: setting a parameter for generating the outputable electronic signature; 상기 설정된 매개 변수를 이용해 주요 필드에 대한 전자 서명을 생성하는 단계와;Generating a digital signature for a main field using the set parameter; 상기 생성된 서명 값을 인코딩하는 단계를 포함하여 이루어지는 것을 특징으로 하는 전자 서명된 문서의 검증 방법.And encoding the generated signature value. 제 3항에 있어서,The method of claim 3, wherein 상기 매개 변수를 설정하는 단계는, 비트 길이가 512+256i(i=0,...,6)이 되는 큰 소수 p와, 비트 길이가 128+32j(j=0,...4)이고 이되는 소수 q, 군(group) Zp *에서 g=a(p-1)/q mod p(aZp *)인 위수 q의 유일한 순환 부그룹의 생성자 g, 및 Zp *에서 비밀키인 x를 생성하는 단계와;The step of setting the parameter includes a large prime number p having a bit length of 512 + 256i (i = 0, ..., 6), and a bit length of 128 + 32j (j = 0, ... 4) Is the prime q, group Z p * in g = a (p-1) / q mod p (a Generating a generator g of the only recursive subgroup of rank q of Z p * ) and a secret key x from Z p * ; 상기 생성된 p, g, x를 이용하여 y=g-xmod p가 되는 공개키 y를 계산하고 해당 인증 기관으로부터 인증서를 발급받아 사용자 변수 z=h(CertData)의 해쉬 값을 계산하는 단계를 포함하여 이루어지는 것을 특징으로 하는 전자 서명된 문서의 검증 방법.Computing a public key y such that y = g -x mod p using the generated p, g, and x, and issuing a certificate from a certification authority to calculate a hash value of user variable z = h (CertData). Validation method of the electronically signed document, characterized in that it comprises a. 제 3항에 있어서,The method of claim 3, wherein 상기 전자 서명을 생성하는 단계는, 임의의 랜덤 변수 k(0<k<q)를 선택하는 단계와;Generating the digital signature comprises: selecting a random random variable k (0 <k <q); 상기 선택된 랜덤 변수 k를 이용하여 서명의 첫번째 값 r=h(gk mod p)를 계산하는 단계와;Calculating a first value r = h (g k mod p) of the signature using the selected random variable k; 상기 계산된 r을 이용하여 서명의 두번째 값 s=x(k-rh(z,m)) mod q를 계산하는 단계와;Using the calculated r, the second value of the signature s = x (kr calculating h (z, m)) mod q; 상기 계산된 r, s와 인증서를 인증 서버로 전송하는 단계와;Transmitting the calculated r, s and certificates to an authentication server; 상기 인증 서버에서 임의의 정수인 비밀키 t(0<t<q)를 선택하는 단계와;Selecting a secret key t (0 <t <q) which is an arbitrary integer in the authentication server; 상기 선택된 t를 이용하여 상기 전송된 s를 암호화한 s'=(s+t) mod q인 s'를 계산하는 단계와;Calculating s 'with s' = (s + t) mod q which encrypts the transmitted s using the selected t; 상기 계산된 s'를 서명자 단말로 전송하는 단계와;Transmitting the calculated s' to a signer terminal; 상기 t를 이용하여 =y-t mod p가 되는 검증 허락값 를 계산한 다음 상기 r과 함께 저장하는 단계를 포함하여 이루어지는 것을 특징으로 하는 전자 서명된 문서의 검증 방법.Using t validation allowance = y -t mod p Calculating and then storing the data together with the r. 제 1항에 있어서,The method of claim 1, 상기 전자 문서를 증명하는 과정은, 상기 증명자 단말에서 검증자 단말로부터 전송되는 출력된 전자 문서의 비트열 r(0<r<q)과 s'(0<s'<q)를 검사하는 단계와;The proofing of the electronic document may include checking bit streams r (0 <r <q) and s '(0 <s' <q) of the output electronic document transmitted from the verifier terminal in the prover terminal. Wow; 상기 r을 인증 서버로 전송하여 검증 허락을 요청하는 단계와;Sending the r to an authentication server to request verification permission; 상기 인증 서버로부터 검증 허락값 가 수신되는 경우 사용자 변수 z=h(CertData)를 계산하는 단계와;Verification permission value from the authentication server Calculating a user variable z = h (CertData) when is received; 상기 계산된 z를 이용하여 중간값 u=rh(z,m) mod q를 계산하는 단계와;Median u = r using the calculated z calculating h (z, m) mod q; 상기 s'를 이용하여 증거값 w=ys' mod p를 계산하는 단계와;Calculating a proof value w = y s ' mod p using the s' ; 상기 계산된 w와 u를 이용하여 v=h(wgu mod p)를 계산하는 단계와;Using the calculated w and u v = h (w calculating g u mod p); 상기 계산된 v와 상기 r을 비교하여 v=r인 경우 해당 서명을 받아들이는 단계를 포함하여 이루어지는 것을 특징으로 하는 전자 서명된 문서의 검증 방법.And comparing the calculated v with the r and accepting a corresponding signature when v = r. 제 5항 또는 제 6항에 있어서,The method according to claim 5 or 6, 서명자 단말과 인증 서버에서 검증자 단말의 수를 제한하기 위한 카운트 n의 정보를 송수신하는 단계와;Transmitting and receiving information of count n for limiting the number of verifier terminals in the signer terminal and the authentication server; 상기 서명자 단말에서 카운트 정보를 서명 매트릭스 코드에 암호화 하여 전자 문서에 삽입하는 단계와;Encrypting count information in a signature matrix code at the signer terminal and inserting the count information into an electronic document; 상기 인증 서버에서 증명자 단말로부터 검증 허락 요청이 수신되는 경우 상기 카운트 n을 감소시킨 후 n=0인지 여부를 확인하는 단계와;Confirming whether n = 0 after decreasing the count n when a verification permission request is received from a prover terminal at the authentication server; 상기 카운트 n이 0인 경우 검증 허락 요청을 거부하고 카운트 n이 0이 아닌 경우 내부에 저장하고 있는 검증 허락값 를 증명자 단말로 전송하는 단계를 더 포함하여 이루어지는 것을 특징으로 하는 전자 서명된 문서의 검증 방법.If the count n is 0, the verification permission request is rejected. If the count n is not 0, the verification permission value stored therein is stored. The method of claim 1, further comprising the step of transmitting to the authenticator terminal.
KR10-2003-0001627A 2003-01-10 2003-01-10 Method for Verifying Digitally Signed Documents KR100525124B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2003-0001627A KR100525124B1 (en) 2003-01-10 2003-01-10 Method for Verifying Digitally Signed Documents

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0001627A KR100525124B1 (en) 2003-01-10 2003-01-10 Method for Verifying Digitally Signed Documents

Publications (2)

Publication Number Publication Date
KR20040064780A KR20040064780A (en) 2004-07-21
KR100525124B1 true KR100525124B1 (en) 2005-11-01

Family

ID=37355186

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0001627A KR100525124B1 (en) 2003-01-10 2003-01-10 Method for Verifying Digitally Signed Documents

Country Status (1)

Country Link
KR (1) KR100525124B1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100788429B1 (en) * 2006-01-16 2007-12-24 주식회사 드림시큐리티 Dealings details inspection method
KR20080048159A (en) * 2006-11-28 2008-06-02 주식회사 마크애니 System for electronic document verification modulation
US7996677B2 (en) 2006-12-06 2011-08-09 Microsoft Corporation Digitally certified stationery
US20080301815A1 (en) * 2007-05-31 2008-12-04 Microsoft Corporation Detecting Unauthorized Changes to Printed Documents

Also Published As

Publication number Publication date
KR20040064780A (en) 2004-07-21

Similar Documents

Publication Publication Date Title
CN108809658B (en) SM 2-based identity base digital signature method and system
US4881264A (en) Digital signature system and method based on a conventional encryption function
US20210367753A1 (en) Trusted measurement and control network authentication method based on double cryptographic values and chaotic encryption
US9698993B2 (en) Hashing prefix-free values in a signature scheme
Mironov Hash functions: Theory, attacks, and applications
US7007164B1 (en) Method and array for authenticating a first instance and a second instance
CN114095181B (en) Threshold ring signature method and system based on cryptographic algorithm
CN112532394A (en) Block chain anti-signature traceable certificateless blind signature generation method
CN114448641A (en) Privacy encryption method, electronic equipment, storage medium and chip
CA2819211A1 (en) Data encryption
CN116346328A (en) Digital signature method, system, equipment and computer readable storage medium
CN115208615A (en) Data encryption transmission method for numerical control system
CN112989436B (en) Multi-signature method based on block chain platform
CN110932863B (en) Generalized signcryption method based on coding
KR100525124B1 (en) Method for Verifying Digitally Signed Documents
CN114760072B (en) Signature and signature verification method, device and storage medium
Prafullchandra et al. Diffie-Hellman proof-of-possession algorithms
Rogobete et al. Hashing and Message Authentication Code Implementation. An Embedded Approach.
CN115174101B (en) SM2 algorithm-based repudiation ring signature generation method and system
CN115174053B (en) Signature generation method and device for repudiation ring authentication based on SM9 algorithm
TWI248744B (en) Multisignature scheme with message recovery for group authorization in mobile networks
Jain Digital signature algorithm
US20220294605A1 (en) Blockchain-based public parameter generation method against backdoor attacks
EP1921790A1 (en) Signature schemes using bilinear mappings
Prafullchandra et al. RFC2875: Diffie-Hellman Proof-of-Possession Algorithms

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

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20130830

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141016

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151002

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee