KR102122773B1 - System and method for providng redactable signature with recovery functionality - Google Patents
System and method for providng redactable signature with recovery functionality Download PDFInfo
- Publication number
- KR102122773B1 KR102122773B1 KR1020180121216A KR20180121216A KR102122773B1 KR 102122773 B1 KR102122773 B1 KR 102122773B1 KR 1020180121216 A KR1020180121216 A KR 1020180121216A KR 20180121216 A KR20180121216 A KR 20180121216A KR 102122773 B1 KR102122773 B1 KR 102122773B1
- Authority
- KR
- South Korea
- Prior art keywords
- sig
- generating
- value
- message
- mod
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/083—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
- H04L9/0833—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
- H04L9/0836—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H04L2209/38—
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
복원가능 기능을 가지는 리댁터블 서명 시스템 및 방법이 개시된다. 일 실시예에 따른 방법은, 인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계; 상기 메시지(m)를 구성하는 복수 개의 블록 중 적어도 하나를 상기 메시지(m)로부터 삭제하는 단계; 상기 메시지(m)로부터 삭제된 블록(mi)에 대한 암호문(ci)을 생성하는 단계; 상기 생성된 암호문(ci)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및 생성된 상기 증명값(π)을 포함하는 리댁트된 서명 검증 요청 메시지를 생성하는 단계를 포함한다.Disclosed is a retractable signature system and method having a resilient function. Method according to an embodiment, generating a signature value (σ SIG ) for the message (m) using the secret key (sk SIG ) of the authentication requester terminal; Deleting at least one of the plurality of blocks constituting the message (m) from the message (m); Generating a ciphertext (c i ) for the block (m i ) deleted from the message (m); Generating a proof value (π) for verifying the validity of the generated ciphertext (c i ); And generating a re-signed signature verification request message including the generated proof value (π).
Description
본 발명의 실시예들은 리댁터블 서명(redactable signature) 기술과 관련된다.Embodiments of the invention relate to a redactable signature technique.
리댁터블 서명 기법(redactable signature scheme)이란 서명된 메시지를 복호화하지 않은 상태에서 원본 메시지의 일부를 삭제 또는 수정하기 위한 기법을 의미한다. 리댁터블 서명 기법을 이용할 경우 예컨대 서명값에서 프라이버시 보장이 필요한 부분 등을 용이하게 삭제하거나 수정할 수 있다.The redactable signature scheme refers to a technique for deleting or modifying a part of the original message without decrypting the signed message. In the case of using the retractable signature technique, for example, a portion of the signature value that requires privacy guarantee can be easily deleted or modified.
이와 같이 리댁터블 서명 기법은 서명된 메시지에서 프라이버시와 관계된 부분 등을 용이하게 삭제할 수 있다는 점에서 장점이 있으나, 한번 삭제된 부분에 대해서는 추후 복원이 불가능하다는 문제점이 존재한다. 이에 따라 리댁터블 서명 기법에서 필요한 경우 삭제된 부분을 복원하기 위한 방안이 필요하게 되었다.As described above, the retractable signature method has an advantage in that it is possible to easily delete the privacy-related part and the like from the signed message, but there is a problem in that the deleted part cannot be restored later. Accordingly, there is a need for a method for restoring the deleted portion when necessary in the retractable signature technique.
개시되는 실시예들은 리댁터블 서명 기법에서 삭제된 부분을 복원하기 위한 기술적인 수단을 제공하기 위한 것이다.The disclosed embodiments are intended to provide a technical means for restoring a deleted portion of a retractable signature scheme.
예시적인 실시예에 따르면, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 인증 요청자 단말 장치에서 수행되는 방법으로서, 상기 인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계; 상기 메시지(m)를 구성하는 복수 개의 블록 중 적어도 하나를 상기 메시지(m)로부터 삭제하는 단계; 상기 메시지(m)로부터 삭제된 블록(mi)에 대한 암호문(ci)을 생성하는 단계; 상기 생성된 암호문(ci)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및 생성된 상기 증명값(π)을 포함하는 리댁트된 서명 검증 요청 메시지를 생성하는 단계를 포함하는, 방법이 제공된다.According to an exemplary embodiment, a method performed in an authentication requester terminal device having one or more processors and a memory storing one or more programs executed by the one or more processors, the secret key of the authentication requester terminal ( generating a signature value (σ SIG ) for the message m using sk SIG ); Deleting at least one of the plurality of blocks constituting the message (m) from the message (m); Generating a ciphertext (c i ) for the block (m i ) deleted from the message (m); Generating a proof value (π) for verifying the validity of the generated ciphertext (c i ); And generating a re-signed signature verification request message including the generated proof value (π).
상기 서명값(σSIG)을 생성하는 단계는, 상기 메시지(m)를 상기 복수 개의 블록으로 분할하는 단계; 분할된 상기 복수 개의 블록 각각에 대응되는 랜덤값(r)을 생성하고, 상기 복수 개의 블록 및 상기 랜덤값에 대한 해시값을 이용하여 머클 트리(merkle tree)를 구성하는 단계; 및 상기 머클 트리의 루트 해시를 상기 비밀키로 암호화하여 상기 서명값(σSIG)를 계산하는 단계를 더 포함할 수 있다. Generating the signature value (σ SIG ) may include: dividing the message (m) into the plurality of blocks; Generating a random value (r) corresponding to each of the divided blocks, and constructing a merkle tree using hash values for the plurality of blocks and the random values; And calculating the signature value (σ SIG ) by encrypting the root hash of the Merkle tree with the secret key.
상기 암호문(ci)을 생성하는 단계는, 다음의 수학식The step of generating the ciphertext (c i ), the following equation
ci ← PKE.Enc(pkPKE, mi, si)c i ← PKE.Enc(pk PKE , m i , s i )
(이때, PKE.Enc는 공개키 기반 암호화 알고리즘, pkPKE는 인증 기관에서 발급한 공개키, si는 공개키 기반 암호화 알고리즘에서 사용되는 랜덤값)(At this time, PKE.Enc is a public key based encryption algorithm, pk PKE is a public key issued by a certification authority, and s i is a random value used in a public key based encryption algorithm)
에 의하여 계산될 수 있다.Can be calculated by
상기 증명값(π)은, 다음의 수학식The proof value (π) is the following equation
π ← VC.Compute(EKF, x, w)π ← VC.Compute(EK F , x, w)
(이때 x = ⊥, w = (mi, ri, si), y = (ci, hi), ri는 mi에 대응되는 랜덤값, hi = H(mi, ri), H는 해시함수, F(x, w) = (H(mi, ri), PKE.Enc(pkPKE, mi, si)), EKF는 함수 F에 대한 평가키)(In this case, x = ⊥, w = (m i , r i , s i ), y = (c i , h i ), r i is a random value corresponding to m i , h i = H(m i , r i ), H is hash function, F(x, w) = (H(m i , r i ), PKE.Enc(pk PKE , m i , s i )), EK F is evaluation key for function F)
에 의하여 계산될 수 있다.Can be calculated by
상기 검증 요청 메시지(σMOD)는,The verification request message (σ MOD ),
상기 머클 트리의 루트 해시(h), 상기 서명값(σSIG-), 상기 상기 암호문(ci) 및 상기 증명값(π)을 포함할 수 있다.The root hash (h) of the Merkle tree, the signature value (σ SIG- ), the ciphertext (c i ) and the proof value (π) may be included.
상기 리댁트된 서명 검증 요청 메시지(σMOD)를 수신한 검증자는, 상기 검증 요청 메시지에 포함된 상기 증명값(π)에 대한 제1 검증을 수행하고, 상기 제1 검증에 성공한 경우, 상기 검증 요청 메시지에 포함된 상기 서명값(σSIG)에 대한 제2 검증을 수행할 수 있다.The verifier that has received the re-signed signature verification request message (σ MOD ) performs a first verification on the proof value (π) included in the verification request message, and if the first verification is successful, the verification The second verification may be performed on the signature value (σ SIG ) included in the request message.
상기 제1 검증은, 다음의 수학식The first verification, the following equation
d ← VC.Verify(VKF, x, π)d ← VC.Verify(VK F , x, π)
(이때, d는 검증 결과, VKF는 함수 F에 대응되는 검증키)(In this case, d is the verification result, VK F is the verification key corresponding to the function F)
에 의하여 수행될 수 있다.Can be performed by
상기 제2 검증은, 다음의 수학식The second verification, the following equation
d ← d * SIG.Verify(pkSIG, h, σSIG)d ← d * SIG.Verify(pk SIG , h, σ SIG )
(이때, pksig는 상기 인증 요청자 단말의 비밀키(skSIG)에 대응되는 공개키)(In this case, pk sig is a public key corresponding to the secret key (sk SIG ) of the authentication requester terminal)
에 의하여 수행될 수 있다.Can be performed by
상기 메시지(m)로부터 삭제된 블록이 둘 이상인 경우, 상기 인증 요청자 단말은, 삭제된 블록 각각에 대하여 상기 암호문을 생성하는 단계 및 상기 증명값을 생성하는 단계를 반복 수행하도록 구성될 수 있다.If there are two or more blocks deleted from the message (m), the authentication requester terminal may be configured to repeat the steps of generating the ciphertext and generating the proof value for each deleted block.
다른 예시적인 실시예에 따르면, 하나 이상의 프로세서들, 및 상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 인증 요청자 단말 장치에서 수행되는 방법으로서, 상기 인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계; 상기 메시지(m)의 적어도 일부를 삭제 또는 변경하는 단계; 상기 메시지(m)에 대응되는 암호문(c)을 생성하는 단계; 및 상기 생성된 암호문(c)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및 생성된 상기 증명값(π)을 포함하는 리댁트된 서명 검증 요청 메시지를 생성하는 단계를 포함하는, 방법이 제공된다.According to another exemplary embodiment, a method performed in an authentication requester terminal device having one or more processors and a memory storing one or more programs executed by the one or more processors, the secret key of the authentication requester terminal generating a signature value (σ SIG ) for the message m using (sk SIG ); Deleting or changing at least a part of the message (m); Generating a ciphertext (c) corresponding to the message (m); And generating a proof value (π) for verifying the validity of the generated ciphertext (c). And generating a re-signed signature verification request message including the generated proof value (π).
상기 서명값(σSIG)을 생성하는 단계는, 상기 메시지(m)에 대응되는 랜덤값(r)을 생성하는 단계; 상기 메시지 및 상기 랜덤값을 결합한 값에 대한 해시값(h)을 생성하는 단계; 및 상기 해시값(h)을 상기 비밀키로 암호화하여 상기 서명값(σSIG)을 계산하는 단계를 더 포함할 수 있다.Generating the signature value (σ SIG ) comprises: generating a random value (r) corresponding to the message (m); Generating a hash value (h) for a value combining the message and the random value; And calculating the signature value (σ SIG ) by encrypting the hash value (h) with the secret key.
상기 암호문(c)을 생성하는 단계는, 다음의 수학식The step of generating the ciphertext (c), the following equation
c ← PKE.Enc(pkPKE, m, s)c ← PKE.Enc(pk PKE , m, s)
(이때, PKE.Enc는 공개키 기반 암호화 알고리즘, pkPKE는 인증 기관에서 발급한 공개키, s는 상기 공개키 기반 암호화 알고리즘에서 사용되는 랜덤값)(At this time, PKE.Enc is a public key based encryption algorithm, pk PKE is a public key issued by a certification authority, and s is a random value used in the public key based encryption algorithm)
에 의하여 계산될 수 있다.Can be calculated by
상기 증명값(π)은, 다음의 수학식The proof value (π) is the following equation
π ← VC.Compute(EKF, x, w)π ← VC.Compute(EK F , x, w)
(이때 x = (h, MOD, mMOD, c), w = (m, r, s), y = 1, MOD는 메시지(m)에 대한 수정 명령, mMOD는 수정된 메시지, F는 F(x, w) = y의 관계를 만족하는 함수로서, F(x, w) = (H(m||r) ?= h) AND (PKE.Enc(pkPKE, m, s) ?= c) AND (Redact(m, MOD) ?= mMOD)로 정의됨)(At this time, x = (h, MOD, m MOD , c), w = (m, r, s), y = 1, MOD is the modification command for the message (m), m MOD is the modified message, F is F (x, w) = A function that satisfies the relationship of y, F(x, w) = (H(m||r) ?= h) AND (PKE.Enc(pk PKE , m, s) ?= c ) AND (defined as Redact(m, MOD) ?= m MOD ))
에 의하여 계산될 수 있다.Can be calculated by
상기 검증 요청 메시지(σMOD)는, 상기 머클 트리의 루트 해시(h), 상기 서명값(σSIG), 상기 상기 암호문(c) 및 상기 증명값(π)을 포함할 수 있다.The verification request message (σ MOD ) may include a root hash (h) of the Merkle tree, the signature value (σ SIG ), the ciphertext (c), and the proof value (π).
상기 리댁트된 서명 검증 요청 메시지(σMOD)를 수신한 검증자는, 상기 검증 요청 메시지에 포함된 상기 증명값(π)에 대한 제1 검증을 수행하고, 상기 제1 검증에 성공한 경우, 상기 검증 요청 메시지에 포함된 상기 서명값(σSIG)에 대한 제2 검증을 수행할 수 있다.The verifier that has received the re-signed signature verification request message (σ MOD ) performs a first verification on the proof value (π) included in the verification request message, and if the first verification is successful, the verification The second verification may be performed on the signature value (σ SIG ) included in the request message.
상기 제1 검증은, 다음의 수학식 The first verification, the following equation
d ← VC.Verify(VKF, x, π)d ← VC.Verify(VK F , x, π)
(이때, d는 검증 결과, VKF는 함수 F에 대응되는 검증키)(In this case, d is the verification result, VK F is the verification key corresponding to the function F)
에 의하여 수행될 수 있다.Can be performed by
상기 제2 검증은, 다음의 수학식The second verification, the following equation
d ← d * SIG.Verify(pkSIG, h, σSIG)d ← d * SIG.Verify(pk SIG , h, σ SIG )
(이때, pkSIG는 상기 인증 요청자 단말의 비밀키(skSIG)에 대응되는 공개키)(In this case, pk SIG is a public key corresponding to the secret key (sk SIG ) of the authentication requester terminal)
에 의하여 수행될 수 있다.Can be performed by
다른 예시적인 실시예에 따르면, 하나 이상의 프로세서들; 메모리; 및 하나 이상의 프로그램들을 포함하고, 상기 하나 이상의 프로그램들은 상기 메모리에 저장되고, 상기 하나 이상의 프로세서들에 의해 실행되도록 구성되며, 상기 하나 이상의 프로그램들은, 인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계; 상기 메시지(m)를 구성하는 복수 개의 블록 중 적어도 하나를 상기 메시지(m)로부터 삭제하는 단계; 상기 메시지(m)로부터 삭제된 블록(mi)에 대한 암호문(ci)을 생성하는 단계; 상기 생성된 암호문(ci)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및 생성된 상기 증명값(π)을 포함하는 검증 요청 메시지를 생성하는 단계를 포함하는 단계들을 수행하기 위한 명령을 포함하는, 컴퓨팅 장치가 제공된다.According to another exemplary embodiment, one or more processors; Memory; And one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, and the one or more programs use a secret key (sk SIG ) of the authentication requester terminal. Generating a signature value (σ SIG ) for the message m; Deleting at least one of the plurality of blocks constituting the message (m) from the message (m); Generating a ciphertext (c i ) for the block (m i ) deleted from the message (m); Generating a proof value (π) for verifying the validity of the generated ciphertext (c i ); And generating a verification request message including the generated proof value (π).
다른 예시적인 실시예에 따르면, 하나 이상의 프로세서들; 메모리; 및 하나 이상의 프로그램들을 포함하고, 상기 하나 이상의 프로그램들은 상기 메모리에 저장되고, 상기 하나 이상의 프로세서들에 의해 실행되도록 구성되며, 상기 하나 이상의 프로그램들은, 인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계; 상기 인증 요청자 단말에서, 상기 메시지(m)의 적어도 일부를 삭제 또는 변경하는 단계; 상기 인증 요청자 단말에서, 상기 메시지(m)에 대응되는 암호문(c)을 생성하는 단계; 상기 인증 요청자 단말에서, 상기 생성된 암호문(c)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및 생성된 상기 증명값(π)을 포함하는 검증 요청 메시지를 생성하는 단계를 포함하는 단계들을 수행하기 위한 명령을 포함하는, 컴퓨팅 장치가 제공된다.According to another exemplary embodiment, one or more processors; Memory; And one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, and the one or more programs use a secret key (sk SIG ) of the authentication requester terminal. Generating a signature value (σ SIG ) for the message m; Deleting or changing at least a part of the message (m) in the authentication requester terminal; Generating, at the authentication requester terminal, a ciphertext (c) corresponding to the message (m); Generating, at the authentication requester terminal, a proof value (π) for verifying the validity of the generated ciphertext (c); And generating a verification request message including the generated proof value (π).
개시되는 실시예들에 따르면, 리댁터블 서명 기법에서 삭제된 부분을 추후 필요시 용이하게 복원할 수 있어 리댁터블 서명 기법의 편의성을 높일 수 있다.According to the disclosed embodiments, it is possible to easily restore the deleted portion of the retractable signature method later if necessary, thereby improving the convenience of the retractable signature technique.
도 1은 일 실시예에 따른 리댁터블 서명 시스템을 설명하기 위한 블록도
도 2는 본 발명의 제1 실시예에 따른 리댁터블 서명 방법을 설명하기 위한 블록도
도 3은 본 발명의 일 실시예에 따른 머클 트리 기반의 서명 생성 기법을 설명하기 위한 예시도
도 4는 본 발명의 일 실시예에 따른 머클 트리 기반의 서명 생성 기법에서 일부 블록이 삭제된 상태를 설명하기 위한 예시도
도 5는 본 발명의 제2 실시예에 따른 리댁터블 서명 방법을 설명하기 위한 블록도
도 6은 본 발명의 제2 실시예에 따른 리댁터블 서명 방법에서 암호문의 유효성을 증명하기 위한 함수(F)를 설명하기 위한 예시도
도 7은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도1 is a block diagram illustrating a retractable signature system according to an embodiment
2 is a block diagram illustrating a retractable signature method according to a first embodiment of the present invention
3 is an exemplary diagram for explaining a Merkle tree-based signature generation method according to an embodiment of the present invention
4 is an exemplary view for explaining a state in which some blocks are deleted in a Merkle tree-based signature generation method according to an embodiment of the present invention
5 is a block diagram illustrating a retractable signature method according to a second embodiment of the present invention
6 is an exemplary view for explaining a function (F) for verifying the validity of the ciphertext in the retractable signature method according to the second embodiment of the present invention
7 is a block diagram for illustrating and illustrating a computing environment including a computing device suitable for use in example embodiments.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.Hereinafter, specific embodiments of the present invention will be described with reference to the drawings. The following detailed description is provided to aid in a comprehensive understanding of the methods, devices and/or systems described herein. However, this is only an example and the present invention is not limited thereto.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.In describing the embodiments of the present invention, when it is determined that a detailed description of known technology related to the present invention may unnecessarily obscure the subject matter of the present invention, the detailed description will be omitted. In addition, terms to be described later are terms defined in consideration of functions in the present invention, which may vary according to a user's or operator's intention or practice. Therefore, the definition should be made based on the contents throughout this specification. The terminology used in the detailed description is only for describing embodiments of the present invention and should not be limiting. Unless expressly used otherwise, a singular form includes a plural form. In this description, expressions such as “including” or “equipment” are intended to indicate certain characteristics, numbers, steps, actions, elements, parts or combinations thereof, and one or more other than described. It should not be interpreted to exclude the presence or likelihood of other characteristics, numbers, steps, actions, elements, parts or combinations thereof.
본 발명의 실시예들을 구체적으로 설명하기에 앞서, 리댁터블 서명 기법(redactable signature scheme)을 설명하면 다음과 같다. 리댁터블 서명 기법은 KeyGen, Sign, Redact 및 Verify를 포함하는 네 개의 알고리즘으로 구성된다.Before describing the embodiments of the present invention in detail, a redactable signature scheme will be described as follows. The retractable signature scheme consists of four algorithms including KeyGen, Sign, Redact and Verify.
KeyGen 알고리즘은 시큐리티 파라미터 λ를 받아서 비밀키(sk)와 공개키(pk)를 생성하기 위한 알고리즘이다. 이 중 비밀키(sk)는 비밀로 보관하고, 공개키(pk)는 공개한다. 이를 수식으로 나타내면 다음과 같다.The KeyGen algorithm is an algorithm for generating a secret key (sk) and a public key (pk) by receiving the security parameter λ. Among them, the secret key (sk) is kept secret, and the public key (pk) is released. This is expressed as an equation.
KeyGen(1λ) → (sk, pk)KeyGen(1 λ ) → (sk, pk)
Sign 알고리즘은 비밀키(sk)를 이용하여 메시지(m)에 대한 서명값(σm)을 생성한다. 이를 수식으로 나타내면 다음과 같다.The sign algorithm uses the secret key (sk) to generate a signature value (σ m ) for the message (m). This is expressed as an equation.
Sign(sk, m) → σm Sign(sk, m) → σ m
Redact 알고리즘은 공개키(pk) 및 메시지(m)에 대한 수정 명령(MOD; Redaction Instruction)을 이용하여 수정된 메시지(MOD(m)) 및 이에 대응되는 서명값(σMOD(m))을 생성한다. 이를 수식으로 나타내면 다음과 같다.The Redact algorithm generates a modified message (MOD(m)) and a corresponding signature value (σ MOD(m) ) using a redaction instruction (MOD) for the public key (pk) and message (m). do. This is expressed as an equation.
Redact(pk, m, σm, MOD) → (MOD(m), σMOD(m))Redact(pk, m, σ m , MOD) → (MOD(m), σ MOD(m) )
Verify 알고리즘은 Sign 알고리즘으로 생성된 서명값 또는 Redact 알고리즘으로 변경된 서명값에 대한 검증을 수행한다. 예를 들어 Verify 알고리즘은 서명이 유효한 경우 1, 그렇지 않은 경우 0을 검증 결과로서 반환할 수 있다. 이를 수식으로 나타내면 다음과 같다.The Verify algorithm verifies the signature value generated by the Sign algorithm or the signature value changed by the Redact algorithm. For example, the Verify algorithm can return 1 if the signature is valid and 0 if it is not. This is expressed as an equation.
Verify(pk, m, σm) → 0 or 1Verify(pk, m, σ m ) → 0 or 1
Verify(pk, MOD(m), σMOD (m)) → 0 or 1Verify(pk, MOD(m), σ MOD (m) ) → 0 or 1
도 1은 일 실시예에 따른 리댁터블 서명 시스템(100)을 설명하기 위한 블록도이다. 도시된 바와 같이, 일 실시예에 따른 아이디 기반 서명 시스템(100)은 인증 요청자(102), 검증자(104) 및 인증 기관(Certified Authority)(106)을 포함한다.1 is a block diagram illustrating a
인증 요청자(102)는 자신의 비밀키를 이용하여 메시지를 서명하고 상기 서명값을 이용하여 인증을 요청하는 단말이다. 메시지를 서명한 이후, 인증 요청자(102)는 상기 메시지의 적어도 일부를 삭제/변경(redact)하여 수정된 메시지(MOD(m)) 및 이에 대응되는 서명값(σMOD(m))을 생성한다. 한편, 이 과정에서 인증 요청자(102)는 상기 삭제 또는 변경 전의 원본 메시지를 복원하기 위한 암호문(c) 및 상기 암호문을 검증하기 위한 증명값(π)을 생성하여 상기 서명값과 함께 검증자(104)에게 송신한다.The
검증자(104)는 인증 요청자(102)로부터 상기 서명값, 상기 암호문 및 상기 증명값을 포함하는 검증 요청 메시지를 수신하고, 상기 증명값 및 상기 서명값에 대한 검증을 수행하기 위한 단말이다.The
인증 기관(Certified Authority, 106)은 상기 암호문으로부터 상기 원본 메시지를 복원하기 위한 단말이다. 일 실시예에서, 인증 요청자(102)는 인증 기관(106)이 발급한 공개키를 이용한 공개키 기반 암호화 기법을 통하여 상기 암호문을 생성할 수 있다. 그러면 인증 기관(106)은 상기 인증 기관(106)의 공개키에 대응되는 비밀키를 이용하여 상기 암호문으로부터 상기 원본 메시지를 복원할 수 있다.A certification authority (106) is a terminal for restoring the original message from the ciphertext. In one embodiment, the
도 2는 본 발명의 제1 실시예에 따른 리댁터블 서명 방법(200)을 설명하기 위한 블록도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.2 is a block diagram illustrating a
본 발명의 제1 실시예에 따른 리댁터블 서명 방법(200)은 머클 트리 기반의 리댁터블 서명 기법(Merkle-Tree Redactable Signature Scheme)을 사용한다. 머클 트리 기반의 리댁터블 서명 기법은 (SIG.KeyGen, SIG.Sign, SIG.Redact, SIG.Verify)를 포함하는 네 가지 알고리즘으로 구성된다.The
SIG.KeyGen 알고리즘은 시큐리티 파라미터 λ를 받아서 비밀키(skSIG)와 공개키(pkSIG)를 생성하기 위한 알고리즘이다. 이를 수식으로 나타내면 다음과 같다.The SIG.KeyGen algorithm is an algorithm for receiving the security parameter λ and generating a secret key (sk SIG ) and a public key (pk SIG ). This is expressed as an equation.
SIG.KeyGen(1λ) → (skSIG, pkSIG)SIG.KeyGen(1 λ ) → (sk SIG , pk SIG )
SIG.Sign 알고리즘은 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σm)을 생성하기 위한 알고리즘이다. 이를 수식으로 나타내면 다음과 같다.The SIG.Sign algorithm is an algorithm for generating a signature value (σ m ) for a message (m) using a secret key (sk SIG ). This is expressed as an equation.
SIG.Sign(sk, m) → σm SIG.Sign(sk, m) → σ m
본 실시예에서, SIG.Sign 알고리즘은 머클 트리 기반으로 상기 서명값을 생성하도록 구성된다. 구체적인 머클 트리 기반의 서명값 생성 방법에 대해서는 후술하기로 한다.In this embodiment, the SIG.Sign algorithm is configured to generate the signature value based on the Merkle tree. A detailed Merkle Tree based signature value generation method will be described later.
Redact 알고리즘은 공개키(pkSIG) 및 메시지(m)에 대한 수정 명령(MOD; Redaction Instruction)을 이용하여 수정된 메시지(MOD(m)) 및 이에 대응되는 서명값(σMOD(m))을 생성한다. 이를 수식으로 나타내면 다음과 같다.The Redact algorithm uses the public key (pk SIG ) and the modification command (MOD; Redaction Instruction) for the message (m) to modify the modified message (MOD(m)) and the corresponding signature value (σ MOD(m) ). To create. This is expressed as an equation.
SIG.Redact(pkSIG, m, σm, MOD) → (MOD(m), σMOD(m))SIG.Redact(pk SIG , m, σ m , MOD) → (MOD(m), σ MOD(m) )
SIG.Verify 알고리즘은 SIG.Sign 알고리즘으로 생성된 서명값 또는 SIG.Redact 알고리즘으로 변경된 서명값에 대한 검증을 수행한다. 예를 들어 Verify 알고리즘은 서명이 유효한 경우 1, 그렇지 않은 경우 0을 검증 결과로서 반환할 수 있다. 이를 수식으로 나타내면 다음과 같다.The SIG.Verify algorithm performs verification on signature values generated by the SIG.Sign algorithm or signature values changed by the SIG.Redact algorithm. For example, the Verify algorithm can return 1 if the signature is valid and 0 if it is not. This is expressed as an equation.
SIG.Verify(pkSIG, m, σm) → 0 or 1SIG.Verify(pk SIG , m, σ m ) → 0 or 1
SIG.Verify(pkSIG, MOD(m), σMOD (m)) → 0 or 1SIG.Verify(pk SIG , MOD(m), σ MOD (m) ) → 0 or 1
또한, 본 발명의 제1 실시예에 따른 리댁터블 서명 방법(200)은 SNARK(Succint Non-interactive Argument of Knowledge) 알고리즘 및 공개키 기반의 암호화 기법을 사용한다. 먼저 SNARK알고리즘을 설명하면 다음과 같다. SNARK 알고리즘은 영지식 증명(Zero-Knowledge Proof)의 하나로, 영지식 증명은 암호학에서 누군가가 상대방에게 어떤 사항이 참이라는 것을 증명할 때, 그 문장의 참 거짓 여부를 제외한 어떤 것도 노출하지 않는 알고리즘을 의미한다.In addition, the
SNARK 알고리즘은 VC.KeyGen, VC.Compute 및 VC.Verify를 포함하는 세 개의 알고리즘으로 구성된다.The SNARK algorithm consists of three algorithms, including VC.KeyGen, VC.Compute and VC.Verify.
VC.KeyGen 알고리즘은 함수 F 및 시큐리티 파라미터 λ를 받아서 평가키(evaluation key, EKF)와 검증키(verification key, VKF)를 생성하기 위한 알고리즘이다. 이때 EKF 및 VKF는 함수 F에는 의존적이나(dependent), 함수 F의 입력에는 독립적이다(independent). 이를 수식으로 나타내면 다음과 같다.The VC.KeyGen algorithm is an algorithm for generating an evaluation key (EK F ) and a verification key (VK F ) by receiving the function F and the security parameter λ. At this time, EK F and VK F are dependent on the function F, but independent of the input of the function F. This is expressed as an equation.
VC.KeyGen(F, 1λ) → (EKF, VKF)VC.KeyGen(F, 1 λ ) → (EK F , VK F )
VC.Compute 알고리즘은 어떤 진술(statement)이 참(true)이라는 사실을 증명하기 위한 증명자(prover)가 사용하는 알고리즘이다. 증명자는 함수 F 및 입력값 x, w에 대하여 F(x, w) = y를 계산하고 VC.Compute 함수 및 EKF를 이용하여 상기 연산 결과가 참이라는 것을 증명하기 위한 증명값(Proof of Correctness)인 π를 생성한다. 이를 수식으로 나타내면 다음과 같다.The VC.Compute algorithm is an algorithm used by a provider to prove that a statement is true. The proofer calculates F(x, w) = y for the function F and the input values x and w, and uses the VC.Compute function and EK F to prove that the result of the calculation is true (Proof of Correctness). Phosphorus π is produced. This is expressed as an equation.
VC.Compute(EKF, x, w) → (y, π)VC.Compute(EK F , x, w) → (y, π)
VC.Verify 알고리즘은 검증자(verifier)가 사용하는 알고리즘이다. 검증자는 함수 F에 대한 입력값 x, 출력값 y 및 VKF 및 π를 알고 있는 경우, VC.Verify 알고리즘을 이용하여 F에 대한 정보가 없어도 F(x, w) = y를 만족하는 w가 존재한다는 진술이 참이라는 것을 알 수 있다. 이를 수식으로 나타내면 다음과 같다.The VC.Verify algorithm is an algorithm used by verifiers. If the verifier knows the input value x, the output value y and VK F and π for the function F, there is w satisfying F(x, w) = y even if there is no information about F using the VC.Verify algorithm. You can see that the statement is true. This is expressed as an equation.
VC.Verify(VKF, x, y, π) → 0 or 1VC.Verify(VK F , x, y, π) → 0 or 1
마지막으로 공개키 기반의 암호화 기법(Public Key Encryption)은 (PKE.KeyGen, PKE.Enc, PKE.Dec)의 세 가지 알고리즘으로 구성된다.Lastly, Public Key Encryption (PKE.KeyGen, PKE.Enc, PKE.Dec) consists of three algorithms.
PKE.KeyGen 알고리즘은 시큐리티 파라미터 λ를 받아서 비밀키(skPKE)와 공개키(pkPKE)를 생성하기 위한 알고리즘이다. 이를 수식으로 나타내면 다음과 같다.The PKE.KeyGen algorithm is an algorithm for generating the secret key (sk PKE ) and public key (pk PKE ) by receiving the security parameter λ. This is expressed as an equation.
PKE.KeyGen(1λ) → (skPKE, pkPKE)PKE.KeyGen(1 λ ) → (sk PKE , pk PKE )
PKE.Enc 알고리즘은 공개키(pkPKE)를 이용하여 메시지(m)로부터 암호문(c)을 생성하기 위한 알고리즘이다. 이를 수식으로 나타내면 다음과 같다. 이때 s는 랜덤값이다.The PKE.Enc algorithm is an algorithm for generating the cipher text (c) from the message (m) using the public key (pk PKE ). This is expressed as an equation. At this time, s is a random value.
PKE.Enc(pkPKE, m, s) → cPKE.Enc(pk PKE , m, s) → c
PKE.Dec 알고리즘은 비밀키(skPKE)를 이용하여 암호문(c)으로부터 메시지(m)를 복원하기 위한 알고리즘이다. 이를 수식으로 나타내면 다음과 같다. The PKE.Dec algorithm is an algorithm for restoring the message (m) from the ciphertext (c) using the secret key (sk PKE ). This is expressed as an equation.
PKE.Dec(skPKE, c, s) → mPKE.Dec(sk PKE , c, s) → m
이하, 도 2에 도시된 본 발명의 제1 실시예에 따른 리댁터블 서명 방법(200)을 설명하면 다음과 같다.Hereinafter, the
단계 202에서, 인증 요청자(102) 및 인증 기관(106)은 리댁터블 서명을 위한 키를 생성한다.In
먼저, 인증 요청자(102)는 시큐리티 파라미터 λ를 받아서 SIG.KeyGen, VC.KeyGen 알고리즘을 이용하여 다음과 같이 키를 생성한다.First, the
SIG.KeyGen(1λ) → (skSIG, pkSIG)SIG.KeyGen(1 λ ) → (sk SIG , pk SIG )
VC.KeyGen(F, 1λ) → (EKF, VKF)VC.KeyGen(F, 1 λ ) → (EK F , VK F )
이때, 상기 함수 F는 인증 요청자(102)가 생성한 암호문을 검증하기 위한 증명값을 생성하는 데 사용되는 함수로서, 그 구체적인 형태에 대해서는 이하에서 상세히 설명한다.At this time, the function F is a function used to generate an authentication value for verifying the cipher text generated by the
또한, 인증 기관(106)은 시큐리티 파라미터 λ를 받아서 PKE.KeyGen 알고리즘을 이용하여 다음과 같이 키를 생성한다.In addition, the
PKE.KeyGen(1λ) → (skPKE, pkPKE)PKE.KeyGen(1 λ ) → (sk PKE , pk PKE )
본 단계에서 생성되는 비밀키(SK) 및 공개키(PK) 쌍은 다음과 같다.The secret key (SK) and public key (PK) pairs generated in this step are as follows.
SK = (skSIG, skPKE) SK = (sk SIG , sk PKE )
PK = (pkSIG, pkPKE, EKF, PKF)PK = (pk SIG , pk PKE , EK F , PK F )
이중, skSIG는 메시지(m)를 서명하는 데 사용되고, pkSIG는 서명된 메시지를 검증하는데 사용된다. 또한 pkPKE는 삭제 또는 수정된 메시지를 복원하기 위한 암호문을 생성하는 데 사용되고, skPKE는 상기 암호문으로부터 원본 메시지를 복원하는 데 사용된다.Among them, sk SIG is used to sign the message (m), and pk SIG is used to verify the signed message. Also, pk PKE is used to generate a cipher text to restore a deleted or modified message, and sk PKE is used to restore the original message from the cipher text.
단계 204에서, 인증 요청자(102)는 자신의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성한다. 본 실시예에서, 인증 요청자(102)는 머클 트리 기반 서명 기법(merkle tree based signature scheme)을 이용하여 서명값을 생성하도록 구성된다.In
도 3은 본 발명의 일 실시예에 따른 머클 트리 기반의 서명 생성 기법을 설명하기 위한 예시도이다. 머클 트리 기반의 서명 생성 기법에서, 원본 메시지(m)는 n(n은 자연수) 개의 블록으로 분할된다. 도시된 실시예에서는 메시지(m)를 4개의 블록(m00, m01, m10, m11)으로 분할한 예를 나타내었다.3 is an exemplary diagram for explaining a Merkle tree-based signature generation technique according to an embodiment of the present invention. In the Merkle tree-based signature generation technique, the original message (m) is divided into n (n is a natural number) blocks. In the illustrated embodiment, an example of dividing the message m into four blocks (m 00 , m 01 , m 10 , m 11 ) is shown.
이후, 인증 요청자(102)는 분할된 각각의 블록에 대응되는 랜덤값 r={r00, r01, r10, r11}을 생성하고, 분할된 각각의 블록에 대하여 다음과 같이 해시값을 계산하여 머클 트리의 리프 노드(leaf node)를 생성한다.Then, the
h00 = H(m00, r00)h 00 = H(m 00 , r 00 )
h01 = H(m01, r01)h 01 = H(m 01 , r 01 )
h10 = H(m10, r10)h 10 = H(m 10 , r 10 )
h11 = H(m11, r11)h 11 = H(m 11 , r 11 )
이후, 인증 요청자(102)는 순차적으로 상기 머클 트리의 상위 노드 해시를 연산하여 최종적으로 머클 트리의 루트 해시(root hash)를 계산한다. 도 3에 도시된 실시예에서 루트 해시(h)는 다음과 같이 계산된다.Thereafter, the authentication requester 102 sequentially calculates the hash of the upper node of the Merkle tree and finally calculates the root hash of the Merkle tree. In the embodiment shown in FIG. 3, the root hash h is calculated as follows.
h0 = H(h00, h01)h 0 = H(h 00 , h 01 )
h1 = H(h10, h11)h 1 = H(h 10 , h 11 )
h = H(h01, h1)h = H(h0 1 , h 1 )
상기 루트 해시로부터 메시지(m)에 대한 서명값(σSIG)은 SIG.Sign 알고리즘 및 skSIG을 이용하여 다음과 같이 계산된다.The signature value (σ SIG ) for the message m from the root hash is calculated as follows using the SIG.Sign algorithm and sk SIG .
σSIG ← SIG.Sign(skSIG, h)σ SIG ← SIG.Sign(sk SIG , h)
또한, 머클 트리 기반의 서명 생성 기법에서 인증 요청자(102)가 검증자(104)에게 송신하는 검증 요청 메시지(σ)는 다음과 같이 구성된다.In addition, in the Merkle tree-based signature generation technique, the verification request message σ that the
σ = (r00||r01||r10||r11, m, σSIG)σ = (r 00 ||r 01 ||r 10 ||r 11 , m, σ SIG )
다시 도 2로 돌아가서, 단계 206에서 인증 요청자(102)는 원본 메시지(m)를 구성하는 복수 개의 블록 중 적어도 하나를 원본 메시지(m)에서 삭제한다. 머클 트리 기반 서명 기법에서, 메시지의 수정(redaction)은 원본 메시지를 구성하는 블록 중 하나 이상을 삭제하는 방식으로 수행된다. 도 4는 원본 메시지(m)로부터 m00 블록이 삭제된 예를 나타낸 것이다.Returning to FIG. 2 again, in
원본 메시지의 일부가 삭제된 경우, 상기 검증 요청 메시지(σ)에서 삭제된 블록에 해당하는 랜덤값은 머클 트리의 해시값으로 대체된다. 예를 들어, 도 4에 도시된 실시예에서 m00 블록이 원본 메시지에서 삭제된 경우, r00은 h00으로 대체된다. 즉, 머클 트리 기반의 서명 기법의 경우 메시지의 일부가 삭제되더라도, 해당 블록에 대응되는 해시값을 이용하여 루트 해시를 동일하게 생성할 수 있게 된다.When a part of the original message is deleted, the random value corresponding to the block deleted in the verification request message (σ) is replaced with a hash value of the Merkle tree. For example, in the embodiment shown in FIG. 4, when the block m 00 is deleted from the original message, r 00 is replaced with h 00 . That is, in the case of the Merkle tree-based signature scheme, even if a part of the message is deleted, the root hash can be generated identically using the hash value corresponding to the corresponding block.
단계 208에서, 인증 요청자(102)는 원본 메시지(m)로부터 삭제된 블록(mi)에 대한 암호문(ci)을 생성한다. 이때 상기 암호문(ci)은 이후 인증 기관(106) 등에서 삭제된 블록을 복원하는 데 사용된다.In
예를 들어 원본 메시지(m)에서 i번째 블록(mi)이 삭제된 경우, mi 블록에 대한 호문(ci)은 공개키 기반의 암호화 기법 및 인증 기관(106)의 공개키(pkPKE)를 이용하여 다음과 같이 생성될 수 있다.For example, if the i-th block (m i ) is deleted from the original message (m), the door (c i ) for the m i block is the public key-based encryption technique and the public key (pk PKE ) of the certification authority 106 ) Can be created as follows.
ci ← PKE.Enc(pkPKE, mi, si)c i ← PKE.Enc(pk PKE , m i , s i )
이때, s00은 공개키 기반의 암호화 기법에서 사용되는 랜덤값이다.At this time, s 00 is a random value used in a public key based encryption technique.
단계 210에서, 인증 요청자(102)는 208 단계에서 생성된 암호문(ci)의 유효성을 검증하기 위한 증명값(π)을 생성한다. 본 실시예에서 상기 증명값(π)은 VC.Compute 알고리즘을 이용하여 생성된다. 이를 수식으로 나타내면 다음과 같다.In
π ← VC.Compute(EKF, x, w)π ← VC.Compute(EK F , x, w)
이때, x = ⊥(null), w = (mi, ri, si), y = (ci, hi), mi는 삭제된 블록, ri는 mi에 대응되는 랜덤값, hi = H(mi, ri), H는 해시함수, ci는 mi로부터 생성된 암호문, si는 상기 암호문 생성에 사용되는 랜덤값, EKF는 함수 F에 대한 평가키이다.In this case, x = n(null), w = (m i , r i , s i ), y = (c i , h i ), m i is a deleted block, r i is a random value corresponding to m i , h i = H(m i , r i ), H is a hash function, c i is a cipher text generated from m i , s i is a random value used to generate the cipher text, and EK F is an evaluation key for the function F.
또한 F는 F(x, w) = y의 관계를 만족하는 함수로서, F(x, w) = (H(mi, ri), PKE.Enc(pkPKE, mi, si))으로 정의된다. 즉 상기 증명값(π)은 hi = H(mi, ri) 및 ci = PKE.Enc(pkPKE, mi, si)를 만족하는 w = (mi, ri, si)가 존재함을 증명하기 위한 값이다. In addition, F is a function satisfying the relationship of F(x, w) = y, F(x, w) = (H(m i , r i ), PKE.Enc(pk PKE , m i , s i )) Is defined as That is, the proof value (π) is w = (m i , r i , s i satisfying h i = H(m i , r i ) and c i = PKE.Enc(pk PKE , m i , s i ) ) Is a value to prove existence.
이후 단계 212에서, 인증 요청자(102)는 생성된 상기 증명값(π)을 포함하는 리댁트된 서명 검증 요청 메시지(σMOD)를 생성한다. 리댁트된 서명 검증 요청 메시지(σMOD)는 다음과 같이 구성된다.Thereafter, in
σMOD = (h, σSIG, ci, π)σ MOD = (h, σ SIG , c i , π)
만약 상기 과정 이후 또 다른 블록(mj)에 대한 삭제(redact)가 추가적으로 수행된 경우, 인증 요청자(102)는 상기 추가 삭제 블록(mj)에 대하여 전술한 208 단계 내지 212 단계를 반복하게 된다. 즉, 이 경우 상기 리댁트된 서명 검증 요청 메시지(σMOD')는 다음과 같이 구성된다.If redact for another block m j is additionally performed after the above process, the
σMOD' = (h, σSIG, ci, π, cj, π')σ MOD '' = (h, σ SIG , c i , π, c j , π')
이때, cj는 mj에 대응되는 암호문, π'는 cj의 유효성을 검증하기 위한 증명값이다. 즉, 인증 요청자(102)는, 삭제된 블록의 개수 만큼 상기 208 단계 내지 212 단계를 반복 수행하게 된다.At this time, c j is a cipher text corresponding to mj, and π'is a proof value for verifying the validity of c j . That is, the
단계 214에서, 상기 리댁트된 서명 검증 요청 메시지(σMOD)를 수신한 검증자(104)는 이에 대한 검증을 수행한다.In
먼저, 검증자(104)는 VC.Verify 알고리즘을 이용하여 리댁션 과정에서 생성된 증명값(π)에 대한 검증(제1 검증)을 수행한다. 이를 수식으로 나타내면 다음과 같다.First, the
d ← VC.Verify(VKF, x, π)d ← VC.Verify(VK F , x, π)
이때 VC.Verify 알고리즘은 상기 검증에 성공한 경우 1을, 실패한 경우 0을 반환한다. 만약 상기 리댁트된 서명이 복수 개의 암호문 및 증명값을 포함하는 경우, 즉 복수 회의 리댁션이 이루어진 경우, 상기 과정은 상기 리댁션 횟수만큼 수행된다. At this time, the VC.Verify algorithm returns 1 if the verification is successful and 0 if it fails. If the re-signed signature includes a plurality of ciphertexts and proof values, that is, if a plurality of re-reactions are made, the process is performed as many times as the re-reaction.
이후, 검증자(104) SIG.Verify 알고리즘을 이용하여 σSIG에 대한 검증(제2 검증)을 수행한다. 이를 수식으로 나타내면 다음과 같다.Thereafter, the
d ← d * SIG.Verify(pkSIG, h, σSIG)d ← d * SIG.Verify(pk SIG , h, σ SIG )
SIG.Verify 알고리즘 또한 검증에 성공한 경우 1을, 그렇지 않은 경우 0을 반환한다. 즉, 상기 d 값은 상기 제1 검증 및 제2 검증에 모두 성공한 경우에만 1이 되며(검증 성공), 제1 검증 및 제2 검증 중 하나라도 실패한 경우에는 0을 반환하게 된다(검증 실패).The SIG.Verify algorithm also returns 1 if verification is successful and 0 otherwise. That is, the value of d becomes 1 only when both the first verification and the second verification are successful (verification successful), and returns 0 when either of the first verification and the second verification fails (verification failed).
한편, 단계 206에서 삭제된 블록에 대한 복원이 필요한 경우, 인증 기관(106)은 PKE.Dec 알고리즘 및 자신의 비밀키(skPKE)를 이용하여 암호문(ci)으로부터 삭제된 블록(mi)을 복원할 수 있다. 이를 수식으로 나타내면 다음과 같다. On the other hand, if restoration of the block deleted in
PKE.Dec(skPKE, ci, s) → mi PKE.Dec(sk PKE , c i , s) → m i
도 5는 본 발명의 제2 실시예에 따른 리댁터블 서명 방법(500)을 설명하기 위한 블록도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.5 is a block diagram illustrating a
본 발명의 제2 실시예에 따른 리댁터블 서명 방법(500)은 머클 트리 기반의 리댁터블 서명 기법(Merkle-Tree Redactable Signature Scheme)이 아닌 일반적인 리댁터블 서명 기법(Generic redactable signature)을 사용한다는 점에서 제1 실시예와 상이하다. 제1 실시예에서와 같이 머클 트리 기반의 리댁터블 서명 기법을 사용할 경우 여러 번의 리댁션을 수행할 수 있으나, 이 경우 삭제되는 블록 별로 SNARK에 의한 검증이 수행되어야 하는 번거로움이 존재한다. 반면, 제2 실시예의 경우 SNARK에 의한 검증이 한 번만 수행된다는 점이 장점이나, 알고리즘의 특성 상 단 한 번의 리댁션만이 가능하게 된다. 본 실시예에서의 리댁터블 서명 기법 또한 (SIG.KeyGen, SIG.Sign, SIG.Redact, SIG.Verify)를 포함하는 네 가지 알고리즘으로 구성된다.The
SIG.KeyGen 알고리즘은 시큐리티 파라미터 λ를 받아서 비밀키(skSIG)와 공개키(pkSIG)를 생성하기 위한 알고리즘이다. 이를 수식으로 나타내면 다음과 같다.The SIG.KeyGen algorithm is an algorithm for receiving the security parameter λ and generating a secret key (sk SIG ) and a public key (pk SIG ). This is expressed as an equation.
SIG.KeyGen(1λ) → (skSIG, pkSIG)SIG.KeyGen(1 λ ) → (sk SIG , pk SIG )
SIG.Sign 알고리즘은 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σm)을 생성하기 위한 알고리즘이다. 이를 수식으로 나타내면 다음과 같다.The SIG.Sign algorithm is an algorithm for generating a signature value (σ m ) for a message (m) using a secret key (sk SIG ). This is expressed as an equation.
SIG.Sign(sk, m) → σm SIG.Sign(sk, m) → σ m
Redact 알고리즘은 공개키(pkSIG) 및 메시지(m)에 대한 수정 명령(MOD; Redaction Instruction)을 이용하여 수정된 메시지(MOD(m)) 및 이에 대응되는 서명값(σMOD(m))을 생성한다. 이를 수식으로 나타내면 다음과 같다.The Redact algorithm uses the public key (pk SIG ) and the modification command (MOD; Redaction Instruction) for the message (m) to modify the modified message (MOD(m)) and the corresponding signature value (σ MOD(m) ). To create. This is expressed as an equation.
SIG.Redact(pkSIG, m, σm, MOD) → (MOD(m), σMOD(m))SIG.Redact(pk SIG , m, σ m , MOD) → (MOD(m), σ MOD(m) )
SIG.Verify 알고리즘은 SIG.Sign 알고리즘으로 생성된 서명값 또는 SIG.Redact 알고리즘으로 변경된 서명값에 대한 검증을 수행한다. 예를 들어 Verify 알고리즘은 서명이 유효한 경우 1, 그렇지 않은 경우 0을 검증 결과로서 반환할 수 있다. 이를 수식으로 나타내면 다음과 같다.The SIG.Verify algorithm performs verification on signature values generated by the SIG.Sign algorithm or signature values changed by the SIG.Redact algorithm. For example, the Verify algorithm can return 1 if the signature is valid and 0 if it is not. This is expressed as an equation.
SIG.Verify(pkSIG, m, σm) → 0 or 1SIG.Verify(pk SIG , m, σ m ) → 0 or 1
SIG.Verify(pkSIG, MOD(m), σMOD (m)) → 0 or 1SIG.Verify(pk SIG , MOD(m), σ MOD (m) ) → 0 or 1
한편, 본 발명의 제2 실시예에서 사용되는 SNARK 기법 및 공개키 기반 암호화 기법은 제1 실시예에서와 동일한 바, 여기서는 반복되는 설명을 생략한다.Meanwhile, the SNARK technique and the public key-based encryption technique used in the second embodiment of the present invention are the same as in the first embodiment, and repeated descriptions are omitted here.
이하, 도 5에 도시된 본 발명의 제1 실시예에 따른 리댁터블 서명 방법(500)을 설명하면 다음과 같다.Hereinafter, the
단계 502에서, 인증 요청자(102) 및 인증 기관(106)은 리댁터블 서명을 위한 키를 생성한다.In
먼저, 인증 요청자(102)는 시큐리티 파라미터 λ를 받아서 SIG.KeyGen, VC.KeyGen 알고리즘을 이용하여 다음과 같이 키를 생성한다.First, the
SIG.KeyGen(1λ) → (skSIG, pkSIG)SIG.KeyGen(1 λ ) → (sk SIG , pk SIG )
VC.KeyGen(F, 1λ) → (EKF, VKF)VC.KeyGen(F, 1 λ ) → (EK F , VK F )
또한, 인증 기관(106)은 시큐리티 파라미터 λ를 받아서 PKE.KeyGen 알고리즘을 이용하여 다음과 같이 키를 생성한다.In addition, the
PKE.KeyGen(1λ) → (skPKE, pkPKE)PKE.KeyGen(1 λ ) → (sk PKE , pk PKE )
본 단계에서 생성되는 비밀키(SK) 및 공개키(PK)는 다음과 같다.The secret key (SK) and public key (PK) generated in this step are as follows.
SK = (skSIG, skPKE) SK = (sk SIG , sk PKE )
PK = (pkSIG, pkPKE, EKF, PKF)PK = (pk SIG , pk PKE , EK F , PK F )
이중, skSIG는 메시지(m)를 서명하는 데 사용되고, pkSIG는 서명된 메시지를 검증하는데 사용된다. 또한 pkPKE는 삭제 또는 수정된 메시지를 복원하기 위한 암호문을 생성하는 데 사용되고, skPKE는 상기 암호문으로부터 원본 메시지를 복원하는 데 사용된다.Among them, sk SIG is used to sign the message (m), and pk SIG is used to verify the signed message. Also, pk PKE is used to generate a cipher text to restore a deleted or modified message, and sk PKE is used to restore the original message from the cipher text.
단계 504에서, 인증 요청자(102)는 자신의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG-)을 생성한다. 구체적으로, 인증 요청자(102)는 원본 메시지(m)에 대응되는 랜덤값(r)을 생성하고 해시 함수(H)를 이용하여 다음과 같이 해시값(h)을 생성한다.In
h = H(m||r)h = H(m||r)
원본 메시지(m)에 대한 서명값(σSIG)은 상기 해시값에 SIG.Sign 알고리즘 및 skSIG을 이용하여 다음과 같이 계산된다.The signature value (σ SIG ) for the original message (m) is calculated as follows using the SIG.Sign algorithm and sk SIG for the hash value.
σSIG ← SIG.Sign(skSIG, h)σ SIG ← SIG.Sign(sk SIG , h)
이후 검증자에게 전달되는 검증 요청 메시지(σ)는 다음과 같이 구성된다.The verification request message (σ) transmitted to the verifier is configured as follows.
σ = (h, r, σSIG)σ = (h, r, σ SIG )
단계 506에서, 인증 요청자(102)는 원본 메시지(m)의 적어도 일부를 삭제 또는 변경한다. 이때 상기 원본 메시지(m)의 삭제 또는 변경은 기 설정된 수정 명령(MOD; Redaction Instruction)에 따라 수행된다.In
단계 508에서, 인증 요청자(102)는 원본 메시지(m)에 대응되는 암호문(c)을 생성한다. 구체적으로 인증 요청자(102)는 PKE.Enc 알고리즘 및 공개키(pkPKE)를 이용하여 다음과 같이 메시지(m)에 대한 암호문(c)을 생성하게 된다.In
c ← PKE.Enc(pkPKE, m, s)c ← PKE.Enc(pk PKE , m, s)
이때, s는 공개키 기반 암호화 알고리즘에서 사용되는 랜덤값이다.At this time, s is a random value used in a public key-based encryption algorithm.
단계 510에서, 인증 요청자(102)는 생성된 암호문(c)의 유효성을 검증하기 위한 증명값(π)을 생성한다. 상기 증명값(π)은 VC.Compute 알고리즘을 이용하여 생성된다. 이를 수식으로 나타내면 다음과 같다.In
π ← VC.Compute(EKF, x, w)π ← VC.Compute(EK F , x, w)
이때 x = (h, MOD, mMOD, c), w = (m, r, s), y = 1, MOD는 메시지(m)에 대한 수정 명령, mMOD는 506 단계에서 수정된 메시지이며, F는 F(x, w) = y의 관계를 만족하는 함수로서, F(x, w) = (H(m||r) ?= h) AND (PKE.Enc(pkPKE, m, s) ?= c) AND (Redact(m, MOD) ?= mMOD)으로 정의된다. At this time, x = (h, MOD, m MOD , c), w = (m, r, s), y = 1, MOD is a modification command for the message (m), m MOD is a message modified in
즉 상기 증명값(π)은 H(m||r) = h, PKE.Enc(pkPKE, m, s) = c, 및 (Redact(m, MOD) ?= mMOD 를 모두 만족하는(즉, 각각의 수식이 모두 참(1)인) w = (m, r, s)가 존재함을 증명하기 위한 값이다. 이를 그림으로 나타내면 도 6과 같다.That is, the proof value (π) satisfies all of H(m||r) = h, PKE.Enc(pk PKE , m, s) = c, and (Redact(m, MOD) ?= m MOD (i.e. , Where each expression is true (1)) w = (m, r, s).
이후 단계 512에서, 인증 요청자(102)는 생성된 상기 증명값(π)을 포함하는 리댁트된 서명 검증 요청 메시지(σMOD)를 생성한다. 리댁트된 서명 검증 요청 메시지(σMOD)는 다음과 같이 구성된다.Thereafter, in
σMOD = (h, σSIG, c, π)σ MOD = (h, σ SIG , c, π)
단계 514에서, 상기 리댁트된 서명 검증 요청 메시지(σMOD)를 수신한 검증자(104)는 이에 대한 검증을 수행한다.In
먼저, 검증자(104)는 VC.Verify 알고리즘을 이용하여 리댁션 과정에서 생성된 증명값(π)에 대한 검증(제1 검증)을 수행한다. 이를 수식으로 나타내면 다음과 같다.First, the
d ← VC.Verify(VKF, x, π)d ← VC.Verify(VK F , x, π)
이때 VC.Verify 알고리즘은 상기 검증에 성공한 경우 1을, 실패한 경우 0을 반환한다. 만약 상기 리댁트된 서명이 복수 개의 암호문 및 증명값을 포함하는 경우, 즉 복수 회의 리댁션이 이루어진 경우, 상기 과정은 상기 리댁션 횟수만큼 수행된다. At this time, the VC.Verify algorithm returns 1 if the verification is successful and 0 if it fails. If the re-signed signature includes a plurality of ciphertexts and proof values, that is, if a plurality of re-reactions are made, the process is performed as many times as the re-reaction.
이후, 검증자(104) SIG.Verify 알고리즘을 이용하여 σSIG에 대한 검증(제2 검증)을 수행한다. 이를 수식으로 나타내면 다음과 같다.Subsequently, the
d ← d * SIG.Verify(pkSIG, h, σSIG)d ← d * SIG.Verify(pk SIG , h, σ SIG )
SIG.Verify 알고리즘 또한 검증에 성공한 경우 1을, 그렇지 않은 경우 0을 반환한다. 즉, 상기 d 값은 상기 제1 검증 및 제2 검증에 모두 성공한 경우에만 1이 되며(검증 성공), 제1 검증 및 제2 검증 중 하나라도 실패한 경우에는 0을 반환하게 된다(검증 실패).The SIG.Verify algorithm also returns 1 if verification is successful and 0 otherwise. That is, the value of d becomes 1 only when both the first verification and the second verification are successful (verification successful), and returns 0 when either of the first verification and the second verification fails (verification failed).
한편, 단계 506에서 삭제 또는 변경된 메시지에 대한 복원이 필요한 경우, 인증 기관(106)은 PKE.Dec 알고리즘 및 자신의 비밀키(skPKE)를 이용하여 암호문(c)으로부터 원본 메시지(m)을 복원할 수 있다. 이를 수식으로 나타내면 다음과 같다. On the other hand, if it is necessary to restore the deleted or changed message in
PKE.Dec(skPKE, c, s) → mPKE.Dec(sk PKE , c, s) → m
도 7은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.7 is a block diagram illustrating and illustrating a
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 본 발명의 실시예들에 따른 인증 요청자(102), 검증자(10 4) 및 인증 기관(106)일 수 있다. 컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.The illustrated
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.Computer
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.The
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(102)와 연결될 수도 있다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램, 및 상기 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 프로그램의 예는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.Meanwhile, an embodiment of the present invention may include a program for performing the methods described herein on a computer, and a computer-readable recording medium including the program. The computer-readable recording medium may include program instructions, local data files, local data structures, or the like alone or in combination. The media may be specially designed and constructed for the present invention, or may be commonly used in the field of computer software. Examples of computer readable recording media include specially configured to store and execute magnetic media such as hard disks, floppy disks, and magnetic tapes, optical recording media such as CD-ROMs, DVDs, and program instructions such as ROM, RAM, and flash memory. Hardware devices are included. Examples of the program may include high-level language code that can be executed by a computer using an interpreter, etc., as well as machine language codes made by a compiler.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.Although the exemplary embodiments of the present invention have been described in detail above, those skilled in the art to which the present invention pertains will understand that various modifications are possible within the limits without departing from the scope of the present invention. . Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined not only by the claims to be described later, but also by the claims and equivalents.
100: 리댁터블 서명 시스템
102: 인증 요청자
104: 검증자
106: 인증 기관100: Retractable signature system
102: authentication requester
104: verifier
106: certification authority
Claims (19)
상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 인증 요청자 단말 장치에서 수행되는 방법으로서,
상기 인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계;
상기 메시지(m)를 구성하는 복수 개의 블록 중 적어도 하나를 상기 메시지(m)로부터 삭제하는 단계;
상기 메시지(m)로부터 삭제된 블록(mi)에 대한 암호문(ci)을 생성하는 단계;
상기 생성된 암호문(ci)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및
생성된 상기 증명값(π)을 포함하는 리댁트된 서명 검증 요청 메시지(σMOD)를 생성하는 단계를 포함하고,
상기 증명값(π)을 생성하는 단계는, 상기 삭제된 블록(mi) 및 기 설정된 함수 F에 대한 평가키(EKF)에 기초하여 상기 증명값(π)을 생성하는, 방법.
One or more processors, and
As a method performed in the authentication requester terminal device having a memory for storing one or more programs executed by the one or more processors,
Generating a signature value (σ SIG ) for the message (m) using the secret key (sk SIG ) of the authentication requester terminal;
Deleting at least one of the plurality of blocks constituting the message (m) from the message (m);
Generating a ciphertext (c i ) for the block (m i ) deleted from the message (m);
Generating a proof value (π) for verifying the validity of the generated ciphertext (c i ); And
Generating a re-signed signature verification request message (σ MOD ) including the generated proof value (π),
The generating of the proof value (π) comprises generating the proof value (π) based on the deleted block (m i ) and the evaluation key (EK F ) for a preset function F.
상기 서명값(σSIG)을 생성하는 단계는,
상기 메시지(m)를 상기 복수 개의 블록으로 분할하는 단계;
분할된 상기 복수 개의 블록 각각에 대응되는 랜덤값(r)을 생성하고, 상기 복수 개의 블록 및 상기 랜덤값에 대한 해시값을 이용하여 머클 트리(merkle tree)를 구성하는 단계; 및
상기 머클 트리의 루트 해시를 상기 비밀키로 암호화하여 상기 서명값(σSIG)를 계산하는 단계를 더 포함하는, 방법.
The method according to claim 1,
The step of generating the signature value (σ SIG ),
Dividing the message (m) into the plurality of blocks;
Generating a random value (r) corresponding to each of the divided blocks, and constructing a merkle tree using hash values for the plurality of blocks and the random values; And
And calculating the signature value (σ SIG ) by encrypting the root hash of the Merkle tree with the secret key.
상기 암호문(ci)을 생성하는 단계는, 다음의 수학식
ci ← PKE.Enc(pkPKE, mi, si)
(이때, PKE.Enc는 공개키 기반 암호화 알고리즘, pkPKE는 인증 기관에서 발급한 공개키, si는 공개키 기반 암호화 알고리즘에서 사용되는 랜덤값)
에 의하여 계산되는, 방법.
The method according to claim 2,
The step of generating the ciphertext (c i ), the following equation
c i ← PKE.Enc(pk PKE , m i , s i )
(At this time, PKE.Enc is a public key based encryption algorithm, pk PKE is a public key issued by a certification authority, and s i is a random value used in a public key based encryption algorithm)
Calculated by the method.
상기 증명값(π)은, 다음의 수학식
π ← VC.Compute(EKF, x, w)
(이때 x = ⊥(null), w = (mi, ri, si), y = (ci, hi), ri는 mi에 대응되는 랜덤값, hi = H(mi, ri), H는 해시함수, 상기 함수 F는 F(x, w) = y의 관계를 만족하는 함수로서 F(x, w) = (H(mi, ri), PKE.Enc(pkPKE, mi, si))로 정의됨)
에 의하여 계산되는, 방법.
The method according to claim 3,
The proof value (π) is the following equation
π ← VC.Compute(EK F , x, w)
(In this case, x = ⊥(null), w = (m i , r i , s i ), y = (c i , h i ), r i is a random value corresponding to m i , h i = H(m i , r i ), H is a hash function, and the function F is a function satisfying the relationship of F(x, w) = y F(x, w) = (H(m i , r i ), PKE.Enc( pk PKE , m i , s i )))
Calculated by the method.
상기 리댁트된 서명 검증 요청 메시지(σMOD)는,
상기 머클 트리의 루트 해시(h), 상기 서명값(σSIG), 상기 암호문(ci) 및 상기 증명값(π)을 포함하는, 방법.
The method according to claim 4,
The re-signed signature verification request message (σ MOD ),
And a root hash (h) of the Merkle tree, the signature value (σ SIG ), the ciphertext (c i ), and the proof value (π).
상기 리댁트된 서명 검증 요청 메시지(σMOD)를 수신한 검증자는,
상기 리댁트된 서명 검증 요청 메시지(σMOD)에 포함된 상기 증명값(π)에 대한 제1 검증을 수행하고,
상기 제1 검증에 성공한 경우, 상기 리댁트된 서명 검증 요청 메시지(σMOD)에 포함된 상기 서명값(σSIG)에 대한 제2 검증을 수행하는, 방법.
The method according to claim 5,
The validator who has received the re-signed signature verification request message (σ MOD ),
Performing the first verification on the proof value (π) included in the re-signed signature verification request message (σ MOD ),
When the first verification is successful, the second verification of the signature value (σ SIG ) included in the re-signed signature verification request message (σ MOD ) is performed.
상기 제1 검증은, 다음의 수학식
d ← VC.Verify(VKF, x, π)
(이때, d는 검증 결과, VKF는 상기 함수 F에 대응되는 검증키)
에 의하여 수행되는, 방법.
The method according to claim 6,
The first verification, the following equation
d ← VC.Verify(VK F , x, π)
(At this time, d is a verification result, VK F is a verification key corresponding to the function F)
It is carried out by the method.
상기 제2 검증은, 다음의 수학식
d ← d * SIG.Verify(pkSIG, h, σSIG)
(이때, pksig는 상기 인증 요청자 단말의 비밀키(skSIG)에 대응되는 공개키)
에 의하여 수행되는, 방법.
The method according to claim 6,
The second verification, the following equation
d ← d * SIG.Verify(pk SIG , h, σ SIG )
(In this case, pk sig is a public key corresponding to the secret key (sk SIG ) of the authentication requester terminal)
It is carried out by the method.
상기 메시지(m)로부터 삭제된 블록이 둘 이상인 경우,
상기 인증 요청자 단말은, 삭제된 블록 각각에 대하여 상기 암호문을 생성하는 단계 및 상기 증명값을 생성하는 단계를 반복 수행하도록 구성되는, 방법.
The method according to claim 4,
When there are two or more blocks deleted from the message (m),
The authentication requester terminal is configured to repeat the steps of generating the ciphertext and generating the proof value for each deleted block.
상기 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 프로그램들을 저장하는 메모리를 구비한 인증 요청자 단말 장치에서 수행되는 방법으로서,
상기 인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계;
상기 메시지(m)의 적어도 일부를 삭제 또는 변경하여 수정된 메시지(mMOD)를 생성하는 단계;
상기 메시지(m)에 대응되는 암호문(c)을 생성하는 단계;
상기 생성된 암호문(c)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및
생성된 상기 증명값(π)을 포함하는 리댁트된 서명 검증 요청 메시지(σMOD)를 생성하는 단계를 포함하고,
상기 증명값(π)을 생성하는 단계는, 상기 수정된 메시지(mMOD) 및 기 설정된 함수 F에 대한 평가키(EKF)에 기초하여 상기 증명값(π)을 생성하는, 방법.
One or more processors, and
As a method performed in the authentication requester terminal device having a memory for storing one or more programs executed by the one or more processors,
Generating a signature value (σ SIG ) for the message (m) using the secret key (sk SIG ) of the authentication requester terminal;
Generating a modified message (m MOD ) by deleting or changing at least a part of the message (m);
Generating a ciphertext (c) corresponding to the message (m);
Generating a proof value (π) for verifying the validity of the generated ciphertext (c); And
Generating a re-signed signature verification request message (σ MOD ) including the generated proof value (π),
The generating of the proof value (π) comprises generating the proof value (π) based on the modified message (m MOD ) and the evaluation key (EK F ) for a preset function F.
상기 서명값(σSIG)을 생성하는 단계는,
상기 메시지(m)에 대응되는 랜덤값(r)을 생성하는 단계;
상기 메시지 및 상기 랜덤값을 결합한 값에 대한 해시값(h)을 생성하는 단계; 및
상기 해시값(h)을 상기 비밀키로 암호화하여 상기 서명값(σSIG)를 계산하는 단계를 더 포함하는, 방법.
The method according to claim 10,
The step of generating the signature value (σ SIG ),
Generating a random value (r) corresponding to the message (m);
Generating a hash value (h) for a value combining the message and the random value; And
And calculating the signature value (σ SIG ) by encrypting the hash value (h) with the secret key.
상기 암호문(c)을 생성하는 단계는, 다음의 수학식
c ← PKE.Enc(pkPKE, m, s)
(이때, PKE.Enc는 공개키 기반 암호화 알고리즘, pkPKE는 인증 기관에서 발급한 공개키, s는 상기 공개키 기반 암호화 알고리즘에서 사용되는 랜덤값)
에 의하여 계산되는, 방법.
The method according to claim 11,
The step of generating the ciphertext (c), the following equation
c ← PKE.Enc(pk PKE , m, s)
(At this time, PKE.Enc is a public key based encryption algorithm, pk PKE is a public key issued by a certification authority, and s is a random value used in the public key based encryption algorithm)
Calculated by the method.
상기 증명값(π)은, 다음의 수학식
π ← VC.Compute(EKF, x, w)
(이때 x = (h, MOD, mMOD, c), w = (m, r, s), y = 1, MOD는 메시지(m)에 대한 수정 명령, mMOD는 수정된 메시지, 상기 함수 F는 F(x, w) = y의 관계를 만족하는 함수로서, F(x, w) = (H(m||r) ?= h) AND (PKE.Enc(pkPKE, m, s) ?= c) AND (Redact(m, MOD) ?= mMOD)로 정의됨)
에 의하여 계산되는, 방법.
The method according to claim 12,
The proof value (π) is the following equation
π ← VC.Compute(EK F , x, w)
(At this time, x = (h, MOD, m MOD , c), w = (m, r, s), y = 1, MOD is the modification command for the message (m), m MOD is the modified message, the function F Is a function that satisfies the relationship of F(x, w) = y, F(x, w) = (H(m||r) ?= h) AND (PKE.Enc(pk PKE , m, s)? = c) AND (defined as Redact(m, MOD) ?= m MOD ))
Calculated by the method.
상기 리댁트된 서명 검증 요청 메시지(σMOD)는,
상기 해시값(h), 상기 서명값(σSIG), 상기 암호문(c) 및 상기 증명값(π)을 포함하는, 방법.
The method according to claim 13,
The re-signed signature verification request message (σ MOD ),
A method comprising the hash value (h), the signature value (σ SIG ), the ciphertext (c) and the proof value (π).
상기 리댁트된 서명 검증 요청 메시지(σMOD)를 수신한 검증자는,
상기 리댁트된 서명 검증 요청 메시지(σMOD)에 포함된 상기 증명값(π)에 대한 제1 검증을 수행하고,
상기 제1 검증에 성공한 경우, 상기 리댁트된 서명 검증 요청 메시지(σMOD)에 포함된 상기 서명값(σSIG)에 대한 제2 검증을 수행하는, 방법.
The method according to claim 14,
The validator who has received the re-signed signature verification request message (σ MOD ),
Performing the first verification on the proof value (π) included in the re-signed signature verification request message (σ MOD ),
When the first verification is successful, the second verification of the signature value (σ SIG ) included in the re-signed signature verification request message (σ MOD ) is performed.
상기 제1 검증은, 다음의 수학식
d ← VC.Verify(VKF, x, π)
(이때, d는 검증 결과, VKF는 상기 함수 F에 대응되는 검증키)
에 의하여 수행되는, 방법.
The method according to claim 15,
The first verification, the following equation
d ← VC.Verify(VK F , x, π)
(At this time, d is a verification result, VK F is a verification key corresponding to the function F)
It is carried out by the method.
상기 제2 검증은, 다음의 수학식
d ← d * SIG.Verify(pkSIG, h, σSIG)
(이때, pkSIG는 상기 인증 요청자 단말의 비밀키(skSIG)에 대응되는 공개키)
에 의하여 수행되는, 방법.
The method according to claim 15,
The second verification, the following equation
d ← d * SIG.Verify(pk SIG , h, σ SIG )
(In this case, pk SIG is a public key corresponding to the secret key (sk SIG ) of the authentication requester terminal)
It is carried out by the method.
메모리; 및
하나 이상의 프로그램들을 포함하고,
상기 하나 이상의 프로그램들은 상기 메모리에 저장되고, 상기 하나 이상의 프로세서들에 의해 실행되도록 구성되며,
상기 하나 이상의 프로그램들은,
인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계;
상기 메시지(m)를 구성하는 복수 개의 블록 중 적어도 하나를 상기 메시지(m)로부터 삭제하는 단계;
상기 메시지(m)로부터 삭제된 블록(mi)에 대한 암호문(ci)을 생성하는 단계;
상기 생성된 암호문(ci)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및
생성된 상기 증명값(π)을 포함하는 검증 요청 메시지를 생성하는 단계를 포함하는 단계들을 수행하기 위한 명령을 포함하고,
상기 증명값(π)을 생성하는 단계는, 상기 삭제된 블록(mi) 및 기 설정된 함수 F에 대한 평가키(EKF)에 기초하여 상기 증명값(π)을 생성하는, 컴퓨팅 장치.
One or more processors;
Memory; And
Contains one or more programs,
The one or more programs are stored in the memory and configured to be executed by the one or more processors,
The one or more programs,
Generating a signature value (σ SIG ) for the message (m) using the secret key (sk SIG ) of the authentication requester terminal;
Deleting at least one of the plurality of blocks constituting the message (m) from the message (m);
Generating a ciphertext (c i ) for the block (m i ) deleted from the message (m);
Generating a proof value (π) for verifying the validity of the generated ciphertext (c i ); And
And an instruction for performing steps including generating a verification request message including the generated proof value (π).
The generating of the proof value (π) comprises generating the proof value (π) based on the deleted block (m i ) and the evaluation key (EK F ) for a preset function F.
메모리; 및
하나 이상의 프로그램들을 포함하고,
상기 하나 이상의 프로그램들은 상기 메모리에 저장되고, 상기 하나 이상의 프로세서들에 의해 실행되도록 구성되며,
상기 하나 이상의 프로그램들은,
인증 요청자 단말의 비밀키(skSIG)를 이용하여 메시지(m)에 대한 서명값(σSIG)을 생성하는 단계;
상기 인증 요청자 단말에서, 상기 메시지(m)의 적어도 일부를 삭제 또는 변경하여 수정된 메시지(mMOD)를 생성하는 단계;
상기 인증 요청자 단말에서, 상기 메시지(m)에 대응되는 암호문(c)을 생성하는 단계;
상기 인증 요청자 단말에서, 상기 생성된 암호문(c)의 유효성을 검증하기 위한 증명값(π)을 생성하는 단계; 및
생성된 상기 증명값(π)을 포함하는 검증 요청 메시지를 생성하는 단계를 포함하는 단계들을 수행하기 위한 명령을 포함하고,
상기 증명값(π)을 생성하는 단계는, 상기 수정된 메시지(mMOD) 및 기 설정된 함수 F에 대한 평가키(EKF)에 기초하여 상기 증명값(π)을 생성하는, 컴퓨팅 장치.One or more processors;
Memory; And
Contains one or more programs,
The one or more programs are stored in the memory and configured to be executed by the one or more processors,
The one or more programs,
Generating a signature value (σ SIG ) for the message (m) using the secret key (sk SIG ) of the authentication requester terminal;
Generating, at the authentication requester terminal, a modified message (m MOD ) by deleting or changing at least part of the message (m);
Generating, at the authentication requester terminal, a ciphertext (c) corresponding to the message (m);
Generating, at the authentication requester terminal, a proof value (π) for verifying the validity of the generated ciphertext (c); And
And an instruction for performing steps including generating a verification request message including the generated proof value (π).
The generating of the proof value (π) comprises generating the proof value (π) based on the modified message (m MOD ) and the evaluation key (EK F ) for a preset function F.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180121216A KR102122773B1 (en) | 2018-10-11 | 2018-10-11 | System and method for providng redactable signature with recovery functionality |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180121216A KR102122773B1 (en) | 2018-10-11 | 2018-10-11 | System and method for providng redactable signature with recovery functionality |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200041134A KR20200041134A (en) | 2020-04-21 |
KR102122773B1 true KR102122773B1 (en) | 2020-06-15 |
Family
ID=70456424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180121216A KR102122773B1 (en) | 2018-10-11 | 2018-10-11 | System and method for providng redactable signature with recovery functionality |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102122773B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102703580B1 (en) * | 2023-09-25 | 2024-09-06 | 주식회사 씨피식스 | System and method for protecting user privacy of rental vehicle |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113114469A (en) * | 2021-03-26 | 2021-07-13 | 国网河南省电力公司电力科学研究院 | Method for generating, purifying and verifying cleanable signature and privacy protection method thereof |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3260524B2 (en) * | 1992-12-03 | 2002-02-25 | 株式会社日立製作所 | Digital signature generation method |
KR101676720B1 (en) * | 2015-07-16 | 2016-11-16 | 펜타시큐리티시스템 주식회사 | Method and apparatus for decoding electronic documents |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767469B2 (en) | 2013-07-16 | 2017-09-19 | Fujitsu Limited | Customer-centric energy usage data sharing |
US9530010B2 (en) * | 2013-11-07 | 2016-12-27 | Fujitsu Limited | Energy usage data management |
-
2018
- 2018-10-11 KR KR1020180121216A patent/KR102122773B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3260524B2 (en) * | 1992-12-03 | 2002-02-25 | 株式会社日立製作所 | Digital signature generation method |
KR101676720B1 (en) * | 2015-07-16 | 2016-11-16 | 펜타시큐리티시스템 주식회사 | Method and apparatus for decoding electronic documents |
Non-Patent Citations (1)
Title |
---|
de Meer, Hermann, et al. "Redactable Signature Scheme for Trees With Signer-Controlled Non-Leaf_Redactions", International Conference on E-Business and Telecommunications (2012) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102703580B1 (en) * | 2023-09-25 | 2024-09-06 | 주식회사 씨피식스 | System and method for protecting user privacy of rental vehicle |
Also Published As
Publication number | Publication date |
---|---|
KR20200041134A (en) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220191012A1 (en) | Methods For Splitting and Recovering Key, Program Product, Storage Medium, and System | |
US10277395B2 (en) | Cryptographic key-generation with application to data deduplication | |
Zhu et al. | Cooperative provable data possession for integrity verification in multicloud storage | |
Yu et al. | Improved security of a dynamic remote data possession checking protocol for cloud storage | |
JP6069852B2 (en) | Information processing apparatus, information processing method, and program | |
KR102218188B1 (en) | Node device for performing certificate management based on a block chain and operating method thereof | |
JP7238977B2 (en) | Anonymous Signature System and Anonymous Signature Method | |
Hussein et al. | A survey of cryptography cloud storage techniques | |
CN112118245A (en) | Key management method, system and equipment | |
KR102122773B1 (en) | System and method for providng redactable signature with recovery functionality | |
KR20210036700A (en) | Blockchain system for supporting change of plain text data included in transaction | |
Mishra et al. | Dynamic large branching hash tree based secure and efficient dynamic auditing protocol for cloud environment | |
Mukundan et al. | Replicated Data Integrity Verification in Cloud. | |
Xie et al. | A novel blockchain-based and proxy-oriented public audit scheme for low performance terminal devices | |
JP5972181B2 (en) | Tamper detection device, tamper detection method, and program | |
KR102035249B1 (en) | Apparatus and method for generating cryptographic key using biometric information | |
KR101593675B1 (en) | User data integrity verification method and apparatus | |
Shen et al. | Multicopy and multiserver provable data possession for cloud-based IoT | |
KR102132685B1 (en) | Apparatus and method for order-revealing encryption | |
KR102126295B1 (en) | Method for comparing chiphertext based and apparatus for executing the method | |
Rehman et al. | Securing cloud storage by remote data integrity check with secured key generation | |
KR102281265B1 (en) | Functional encryption for set intersection with time-constrained function keys | |
CN110943846B (en) | Heterogeneous identity federation user reputation value transmission method based on ring signature technology | |
KR102526114B1 (en) | Apparatus and method for encryption and decryption | |
KR102192594B1 (en) | Apparatus and method for order-revealing encryption in multi-client environment without trusted authority |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |