KR20230024369A - 비밀 공유의 생성 - Google Patents
비밀 공유의 생성 Download PDFInfo
- Publication number
- KR20230024369A KR20230024369A KR1020237001201A KR20237001201A KR20230024369A KR 20230024369 A KR20230024369 A KR 20230024369A KR 1020237001201 A KR1020237001201 A KR 1020237001201A KR 20237001201 A KR20237001201 A KR 20237001201A KR 20230024369 A KR20230024369 A KR 20230024369A
- Authority
- KR
- South Korea
- Prior art keywords
- share
- secret
- participant
- shared
- blinding
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 98
- 238000004891 communication Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 31
- 238000004364 calculation method Methods 0.000 description 22
- 238000007792 addition Methods 0.000 description 15
- 230000008859 change Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000013515 script Methods 0.000 description 5
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 3
- 229910052709 silver Inorganic materials 0.000 description 3
- 239000004332 silver Substances 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 235000012149 noodles Nutrition 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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/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/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- 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
-
- 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/0825—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) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- 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/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3255—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
-
- 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/04—Masking or blinding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 공유된 비밀의 공유를 생성하는 컴퓨터 구현 방법에 관한 것이며, 한 그룹의 참가자 각각은 공유된 비밀의 개개의 제1 비밀 공유를 갖고, 방법은: 그룹의 제1 참가자에 의해 수행되고, 공유된 블라인딩 비밀의 개개의 블라인딩 공유를 생성하는 단계; 제1 그룹의 참가자 각각으로부터 적어도 임계수의 개개의 중간 공유를 획득하는 단계 ― 각각의 개개의 중간 공유는 개개의 블라인딩 공유 및 개개의 제1 비밀 공유에 기초하여 생성됨 ― ; 획득된 중간 공유 각각에 기초하여 중간 값을 생성하는 단계; 및 공유된 비밀의 개개의 제2 비밀 공유를 생성하는 단계를 포함하고, 개개의 제2 비밀 공유는 중간 값 및 개개의 블라인딩 공유에 기초하여 생성된다.
Description
본 개시는 공유된 비밀(shared secret)의 공유(share)를 생성하는 방법에 관한 것이다. 예컨대, 방법은 공유된 개인 키(shared private key)의 새로운 공유를 생성하는 데 사용될 수 있다.
일반적으로, 공유된 비밀은 한 그룹의 참가자 간에 분배되는 데이터 항목을 공유하는 데 사용될 수 있다. 각각의 참가자는 비밀의 상이한 공유를 갖는다. 정상적으로, 비밀은, 특정수("임계값"으로 지칭됨)의 참가자가, 예컨대, 비밀을 계산하기 위해 함께 결합되도록 그들 개개의 공유를 이용 가능하게 할 때에만 재구성될 수 있다.
공개 키 암호법(public-key cryptography)은 키의 쌍: 개인 키(private key)의 소유자만 알고 있는 개인 키, 및 대응하는 개인 키에 기초하여 생성되고 개인 키의 보안을 손상시키지 않고 분배될 수 있는 공개 키(public key)를 사용하는 암호 시스템의 유형이다.
공개 키 암호법은 전송자가 수신자의 공개 키(즉, 수신자에게만 알려진 개인 키에 대응하는 공개 키)를 사용하여 메시지를 암호화하는 것을 가능하게 한다. 그런 다음, 암호화된 메시지는 수신자의 개인 키만을 사용하여 암호해독될 수 있다.
유사하게, 전송자는 그들 자신의 개인 키를 사용하여 메시지에 서명하고, 예컨대, 메시지가 전송자에 의해 전송되고 있음을 증명하고 그리고/또는 전송자가 메시지에 동의함을 나타낼 수 있다. 서명자(즉, 서명을 생성하는 당사자)는 그들의 개인 키를 사용하여 메시지에 기초하여 디지털 서명을 생성한다. 메시지에 기초하여 디지털 서명을 생성하는 것은, 메시지 및 개인 키 둘 모두에 기초하여 서명을 생성하는 함수에 메시지 및 개인 키를 제공하는 것을 의미한다. 서명은 메시지에 추가(예컨대, 태깅)되거나 그렇지 않다면 메시지와 연관된다. 서명자의 대응하는 공개 키를 가진 누구든지 동일한 메시지 및 메시지에 대한 디지털 서명을 사용하여, 서명이 유효하게 생성되었는지 여부, 즉, 서명이 실제로 서명자의 개인 키를 사용하여 생성되었는지 여부를 검증할 수 있다. 디지털 서명은, 메시지의 진본성(authenticity)을 보장할 뿐만 아니라, 또한 메시지의 무결성 및 부인 방지(non-repudiation)를 보장한다. 즉, 디지털 서명은, 메시지가 서명으로 서명된 이래도 변경되지 않았으며, 서명의 생성자가 나중에 자신들이 서명을 생성했음을 부인할 수 없음을 증명하는 데 사용될 수 있다.
디지털 서명 방식은 일반적으로 3개의 절차, 즉, 알고리즘을 포함한다. 키 생성 알고리즘은 랜덤 개인 키 및 대응하는 공개 키를 생성하는 데 사용된다. 서명 알고리즘은 메시지 및 개인 키에 기초하여 서명을 생성하는 데 사용된다. 검증 알고리즘은, 공개 키 및 메시지가 주어지면, 서명이 대응하는 개인 키를 사용하여 그리고 서명 알고리즘에 따라 생성되었는지 여부를 검증하는 데 사용된다.
공유된 비밀의 일반적인 용도는 개인-공개 키 쌍의 공유된 개인 키로서의 용도이다. 즉, 개인 키는, 어떠한 단일 참가자도 개인 키에 액세스할 수 없도록, 한 그룹의 참가자 간에 분배될 수 있다. 따라서, 어떠한 단일 참가자도 메시지의 유효한 서명을 생성할 수 없다. 대신에, 참가자 중 일부 또는 모두가 함께 서명이 생성되도록 개인 키를 생성해야 한다.
참가자가 서명을 생성하기 위해 자신의 개인 키 공유를 공유하는 것 대신에, 참가자는 임계값 서명 방식(threshold signature scheme)을 대신에 사용할 수 있다. 임계값 서명 방식은, 개인 키가 임의의 하나의 참가자에게 이용 가능하게 하지 않고서, 그룹 내의 임계수의 참가자가 공유된 개인 키의 개별 공유를 사용하여 메시지에 기초하여 디지털 서명을 생성하는 것을 허용한다. 여기서, 디지털 서명은 서명될 메시지에 기초하여 생성되는 서명이다. 이러한 방식에서, 서명은, 임계수의 참가자가 메시지에 대한 서명을 생성하는 데 동의한 경우에만 생성될 수 있다. 더 적은 수의 참가자를 사용하여 서명을 생성하려는 어떠한 시도도 유효한 서명을 생성하지 못할 것이다. 따라서, 그룹에 의한 유효한 서명(즉, 메시지 및 공유된 개인 키를 사용하여 생성된 서명)은 서명 생성에 동의하는 임계수의 사람들이 있음을 입증 가능하였다. 이것은 또한, 임의의 상대편이 개인 키를 사용하여 서명을 위조하기 위해서는 해당 개인 키의 임계수의 공유를 획득할 필요가 있을 의미한다.
공유된 비밀 자체를 변경하지 않고 공유된 비밀의 새로운 공유를 생성할 수 있다는 것이 바람직한 시나리오가 있다. 예컨대, 공유된 비밀의 개개의 공유를 갖는 한 명 이상의 참가자는, 그들 개개의 공유가 공유된 비밀을 재구성하는 데 더 이상 이용 가능하지 않도록 참가자 그룹을 떠나거나, 예컨대, 임계값 서명 방식의 서명 공유를 생성하기 위해 해당 공유를 사용하여 계산을 수행할 수 있다. 또는 다른 예로서, 참가자가 그룹을 떠난 결과가 아니라, 비밀의 일부 공유는 분실 또는 손상의 결과로서 더 이상 이용 가능하지 않을 수 있다. 해당 공유가 대체될 필요가 있을 수 있다. 또 다른 예로서, 참가자 그룹은 한 명 이상의 추가적인 참가자를 포함하도록 확장될 수 있고, 따라서 해당 참가자는 공유된 비밀의 그들 자신의 공유를 요구한다.
유사하게, 공유된 비밀의 임계값을 변경하는 것이 바람직한 시나리오가 있다. 즉, 공유된 비밀을 재구성하기 위해 비밀 공유의 수를 변경하는 것이 요구된다. 예컨대, 공유된 비밀의 임계값을 증가시키는 것은, 악의적인 상대방이 공유된 비밀을 재구성하기 위해 더 많은 공유에 액세스해야 할 것이기 때문에, 공유된 비밀의 보안을 개선할 수 있다. 이것은, 공유된 비밀이 데이터를 암호화하거나 리소스에 대한 액세스를 제어하는 데 사용되는 개인 키일 때 특히 관련이 있다.
본원에서 개시된 일 양상에 따라, 공유된 비밀의 공유를 생성하는 컴퓨터 구현 방법이 제공되고, 한 그룹의 참가자 각각은 공유된 비밀의 개개의 제1 비밀 공유를 갖고, 방법은 그룹의 제1 참가자에 의해 수행되고, 공유된 블라인딩 비밀의 개개의 블라인딩 공유를 생성하는 단계, 제1 그룹의 참가자 각각으로부터 적어도 임계수의 개개의 중간 공유를 획득하는 단계 ― 각각의 개개의 중간 공유는 개개의 블라인딩 공유 및 개개의 제1 비밀 공유에 기초하여 생성됨 ― ; 획득된 중간 공유 각각에 기초하여 중간 값을 생성하는 단계; 및 공유된 비밀의 개개의 제2 비밀 공유를 생성하는 단계를 포함하고, 개개의 제2 비밀 공유는 중간 값 및 개개의 블라인딩 공유에 기초하여 생성된다.
공유된 비밀의 유효한 공유를 갖는 참가자의 수를 증가 또는 감소시키기 위해 공유된 비밀의 새로운 공유를 생성하는 데 본 방식이 사용될 수 있다. 여기서, 유효한 공유는 제2 비밀 공유 중 하나라는 점에서 유효하다고 볼 수 있으며, 참가자 그룹 전체가 제2 비밀 공유를 사용해야만 계산이 유효할 것이다.
본 방식은 또한 공유된 비밀의 제2 공유가 공유된 비밀의 제1 공유와 비교하여 상이한 임계값을 갖도록 공유된 비밀의 임계값을 변경하기 위해 공유된 비밀의 새로운 공유를 생성하는 데 사용될 수 있다.
분실되거나 손상된 공유는 현재 방식으로 대체될 수 있다. "오래된" 공유가 손상된 경우, 본 발명은, 방식의 다른 참가자가 새로운 공유만을 사용할 것이기 때문에, 해당 공유를 쓸모없게 만든다. 따라서, 공격자가 다른 공유를 손상시키려고 시도를 해야 한다는 의미에서, 공격자는 '다시 시작'해야 한다.
위에서 언급된 바와 같이 공유된 비밀은 종종 개인 키와 관련하여 사용되고, 즉, 개인 키는 공유된 비밀일 수 있다. 더 일반적으로, 공유된 비밀은, 비밀을 드러내거나 이를 사용하여 더 많은 계산을 행하기 위해 임계수의 사람들이 요구되는 임의의 데이터일 수 있다.
예컨대, 데이터는 실제 데이터(예컨대, 개인과 연관된 생체인식 또는 유전 데이터)를 공유하지 않는 것이 바람직한 의료 데이터 또는 이러한 다른 개인 데이터일 수 있다. 공유된 비밀의 형태로 의료 데이터를 공유하는 것은, 민감한 데이터를 드러내지 않고도, 데이터로 계산(예컨대, 통계 분석)이 수행되는 것을 허용한다. 방식의 참가자 중 한 명 이상이 데이터의 소유자인 경우, 해당 소유자는 결과 계산에 참여할 필요가 있을 것이고, 따라서 소유자가 자신의 데이터에 대한 액세스를 승인 또는 거부하는 것을 허용한다. 공유를 갖는 다른 참가자는, 개별 비밀을 학습하지 않고도, 데이터로 계산을 수행하고 결과를 획득할 수 있다. 본 발명은 데이터의 소유자가 방식으로부터 다른 참가자를 '제거'하기 위해 공유를 업데이트하는 것을 허용한다.
공유된 비밀을 업데이트하는 또 다른 사용 사례는, 한 그룹의 참가자가 동일한 공유된 비밀로 다수의 '방식'을 생성할 수 있다는 것이고, 이는 결국 공유된 비밀의 보안을 개선할 수 있다. 참가자는 공유된 비밀을 생성하고, 그런 다음, 공유의 여러 번의 재발행 반복 또는 라운드를 수행할 수 있다. 그 결과는, 참가자가 모두 비밀을 찾기 위해 동일한 '방식' 또는 '라운드'에 대응하는 다른 참가자의 공유와 결합될 수 있는 동일한 공유된 비밀의 다수의 공유를 갖는다는 것이다. 이러한 공유가 모두 함께 저장되는 경우, 공격자는 다수의 위치(즉, 참가자)를 공격할 필요가 있을 뿐만 아니라 공유의 정확한 결합을 알아야 할 필요가 있다.
본 개시의 실시예들의 이해를 보조하기 위해 그리고 그러한 실시예들이 어떻게 실행될 수 있는지를 보여주기 위하여, 단지 예로서 첨부 도면들에 대한 참조가 이루어진다.
도 1은 본 발명의 실시예에 따른, 공유된 비밀의 공유를 업데이트하기 위한 예시적인 시스템을 개략적으로 도시한다.
도 2는 본 발명의 실시예에 따른, 공유된 비밀의 공유를 업데이트하기 위한 예시적인 방법을 개략적으로 도시한다.
도 3은 본 발명의 일부 실시예에 따른, 메시지의 서명을 생성하기 위한 예시적인 시스템을 개략적으로 도시한다.
도 4는 본 발명의 실시예에 따른, 메시지의 서명 공유를 생성하기 위한 예시적인 방법을 개략적으로 도시한다.
도 1은 본 발명의 실시예에 따른, 공유된 비밀의 공유를 업데이트하기 위한 예시적인 시스템을 개략적으로 도시한다.
도 2는 본 발명의 실시예에 따른, 공유된 비밀의 공유를 업데이트하기 위한 예시적인 방법을 개략적으로 도시한다.
도 3은 본 발명의 일부 실시예에 따른, 메시지의 서명을 생성하기 위한 예시적인 시스템을 개략적으로 도시한다.
도 4는 본 발명의 실시예에 따른, 메시지의 서명 공유를 생성하기 위한 예시적인 방법을 개략적으로 도시한다.
예비 단계들
다음의 예가 타원 곡선 암호화 방식(elliptic curve cryptography)과 관련하여 설명되지만, 본 발명은 임의의 하나의 특정 암호 방식에 제한되지 않으며, 일반적으로 임의의 암호화 방식, 예컨대, RSA 또는 다른 공개 키 암호화 방식에 적용될 수 있다.
타원 곡선 그룹
타원 곡선(E)은 다음 방정식을 충족시키고,
여기서 및 a, b는 을 충족시키는 상수이다. 이 타원 곡선 위의 그룹은, 단위 요소인 무한대 에서의 점과 함께 이 방정식을 충족시키는 요소의 세트인 것으로 정의된다. 이 그룹 내의 요소에 대한 그룹 연산은 타원 곡선 점 덧셈이라 불리고 +로 표시된다. 이 그룹은 로 표시되고, 그 차수는 n으로 표시된다.
이 그룹 연산은 로 표시되는 점 곱셈이라 불리는, 요소에 대한 또 다른 연산을 정의하는 데 사용될 수 있다. 점 및 스칼라 에 대해, 점 는 자신에 k번 더해진 점 G인 것으로 정의된다.
타원 곡선 암호법에서, 개인 키는 스칼라 인 것으로 정의되며, 여기서 은 세트 에 대한 표기법이다. 이고 대응하는 공개 키는 타원 곡선 상의 점 이다. 예컨대, 일부 블록체인 프로토콜에서, 타원 곡선은 secp256k1 타원 곡선이 되도록 선택되고, 값 a, b 및 p는 이 곡선에 의해 완전히 지정된다. 이 그룹의 차수 n은 이 값이 주어졌을 때 계산되었으며, 이 곡선의 경우에, 이는 소수(prime)이며, secp256k1 표준은 또한 이 그룹의 생성기로서 사용될 점 G를 지정한다.
타원 곡선 디지털 서명 알고리즘
1. 임의의 해시 함수일 수 있는 메시지 다이제스트 를 계산. 예컨대, 일부 예에서, 이고, 여기서 은 SHA-256 해시 함수이다. 대신에 메시지가 동일하거나 상이한 해시 함수로 한 번만, 또는 두 번 이상 해싱될 수 있다는 것이 유의된다.
7. 메시지(msg)의 서명은 (r,s)이다.
임시 키는 비밀로 유지되어야 하고, 그렇지 않으면, 메시지 및 서명이 주어지면, 개인 키()가 계산될 수 있다. 추가적으로, 서명이 생성될 때마다, 상이한 임시 키가 사용되어야 한다. 그렇지 않은 경우, 2개의 상이한 서명 및 그들의 대응하는 메시지가 주어지면, 개인 키를 도출하는 것이 가능하다.
1. 메시지 다이제스트 e=hash(msg), 예컨대, e=SHA256(SHA256(msg))을 계산.
공동 검증 가능한 랜덤 비밀 공유
N명의 참가자가 해당 방식으로 참가자 중 적어도 (t+1)명에 의해서만 재생성될 수 있는 공동 비밀을 생성하기를 원한다고 가정된다. 공유된 비밀을 생성하기 위해, 다음의 단계가 취해진다.
1. 참가자는 각각의 참가자에 대한 고유한 라벨(i)에 동의한다. 각각의 참가자(i)는 (t+1)개의 난수를 생성하고,
3. 각각의 참가자(i)는 다음과 같은 공유된 비밀 다항식의 그들 자신의 개인 비밀 공유를 계산한다.
공유된 비밀 공유는 형태를 갖는 점이고, 여기서 i는 해당 방식의 참가자 라벨이다. 1-3 단계에서 설명된 바와 같이, 의 비밀 공유를 생성하기 위한 이 방법은 본원에서 참가자(i)에 대해 로 표시된다. "JVRSS"는 일반적으로 "공동 검증 랜덤 비밀 공유"를 나타내며 4 및 5 단계를 또한 포함한다는 것이 유의된다. 그러나, 본 문서 전반에 걸쳐, JVRSS는 적어도 1 내지 3 단계를 수행하는 것을 의미하는 것이 이해되고, 여기서 4 및 5 단계는 선택적 단계이다.
참가자가 공유된 다항식을 생성했기 때문에, 참가자는 다른 참가자가 모든 참가자에게 올바른 정보를 공유했다는 것, 및 모든 참가자가 동일한 공유된 다항식을 갖는다는 것을 각각 검증할 수 있다. 이것은 다음의 방식으로 수행된다.
4. 각각의 참가자(i)는 모든 참가자에게 다음의 난독화된 계수를 브로드캐스팅한다.
이 방정식이 개개의 다항식에 대해 성립한다는 것을 모든 참가자가 알게 되면, 그룹은 참가자가 모두 동일한 공유된 다항식을 생성했음을 집합적으로 확신할 수 있다.
공유된 비밀의 재구성
참가자가 0차의 공유된 다항식인 공유된 비밀()을 재구성하려고 한다고 가정된다. 그런 다음, 공유된 비밀()을 찾기 위해, 다음 형태의 이러한 다항식에 (t+1)개의 점이 주어지면,
다음이 계산되고,
이는 "라그랑주 보간(Lagrange Interpolation)"으로 알려진 일반 공식으로부터 도출된다.
공개 키 계산
JVRSS의 4 단계에서 공유된 에 대해 N개의 0차 개인 다항식 계수 공개 키 가 주어지면, 각각의 참가자는 공유된 비밀()에 대응하는 다음을 사용하여 공유된 공개 키(P)를 계산한다.
공유된 비밀의 덧셈
어떠한 엔티티도 개별 비밀을 알지 못하는 경우, 한 그룹의 N명의 참가자 사이에 공유되는 2개의 공유된 비밀의 덧셈을 계산하기 위해 ― 여기서 각각의 비밀 다항식의 차수(t)를 가짐 ― , 다음 단계가 취해진다.
3. 각각의 참가자(i)는 다음과 같은 그들 자신의 덧셈 공유를 계산한다.
공유된 비밀의 곱
한 그룹의 N명의 참가자 사이에 공유되는 2개의 공유된 비밀 둘 모두의 곱을 계산하기 위해 ― 여기서 각각의 비밀 다항식은 차수(t)를 가짐 ― , 그룹은 다음 단계를 취한다.
1. 제1 공유된 비밀()을 생성, 여기서 참가자(i)의 공유는 에 대해 로 주어진다. 공유된 비밀 다항식은 차수(t)를 갖고, 이것은 이를 재생성하기 위해 (t+1)명의 참가자가 요구된다는 것을 의미한다.
공유된 비밀의 역
2. 각각의 참가자는 μ의 모듈러 역(modular inverse)을 계산하고, 이것은 다음과 같다.
3. 각각의 참가자(i)는 다음을 계산함으로써 그들 자신의 역 비밀 공유를 계산한다.
공유된 개인 키 생성 및 검증
명의 참가자 ― 이들 중 t+1명이 서명을 생성하는 데 요구됨 ― 간의 공유된 개인 키()를 계산하기 위해, 참가자는, 위에서 설명된 바와 같이, 임계값이 t+1인 JVRSS 및 공개 키 계산을 실행한다. 결과는, 모든 각각 참가자()가 개인 키 공유() 및 대응하는 공유된 공개 키()를 갖는다는 것이다.
임시 키 공유 생성
그런 다음, 그들은 다음을 계산한다.
상이한 임계값을 갖는 비밀의 덧셈
차수 t 및 t'의 비밀을 덧셈하는 경우에, 2개의 비밀의 덧셈은 이를 계산하기 위해 개의 공유를 필요로 한다. 그 이유는 공유된 비밀의 공유의 덧셈 단계가 새로운 다항식의 공유를 생성하기 때문이다. 이러한 새로운 덧셈 다항식은 2개의 공유된 비밀의 개별 다항식의 덧셈 결과와 등가이다. 2개의 다항식을 더하는 것은 x의 각각의 차수에서 대응하는 계수를 더하는 것이다. 따라서, 덧셈 다항식의 차수는 2개의 다항식의 가장 높은 차수와 동일한 차수이어야 한다. 이것은 2개보다 더 많은 다항식의 덧셈으로 일반화될 수 있고, 여기서 결과적인 다항식의 차수는 가장 높은 개별 다항식의 차수와 동일하다.
일단 상이한 임계값을 갖는 2개의 비밀의 덧셈이 계산되었다면, 더 높은 임계값 비밀의 보안이 감소된다. 이것은, 이제 개개의 임계값(t, t')을 갖는 결과를 알려지고 t<t'라고 가정하면, t개의 공유로 가 계산되고, 그런 다음 가 계산될 수 있고, 그래서 값 b가 t개의 공유만으로 계산되었기 때문이다. 이러한 더 낮은 임계값은 아래에서 b의 '암시된 임계값'으로 지칭된다.
상이한 임계값을 갖는 비밀의 곱셈
t 및 t'의 임계값과 2개의 비밀을 곱하는 경우에, 곱셈의 계산은 t+t'+1개의 공유를 필요로 한다. 이 경우에, 2개의 다항식의 공유의 곱셈은 새로운 다항식의 공유를 발생시킨다. 이 새로운 다항식은 2개의 개별 다항식을 곱한 결과이므로, 결과의 차수는 2개의 개별 다항식의 차수의 덧셈이다.
덧셈과 유사하게, 상이한 임계값을 갖는 2개의 비밀의 곱셈은 더 높은 임계값 비밀의 암시된 임계값을 발생시킨다. 이전과 같이, 가 t의 임계값을 갖고 b가 t'의 임계값을 갖는 가 알려지고, t <t'인 경우에, 및 b 둘 모두는 t개의 공유로 계산될 수 있다. 첫째, 가 계산되고, 을 사용하여 비밀의 t개의 공유만으로 b를 찾을 수 있다.
하나의 단계에서 공유된 비밀의 덧셈 및 곱셈의 결합
하나의 단계에서 덧셈 및 곱셈의 임의의 결합을 계산하기 위해 위의 내용을 일반화하는 것이 가능하다. 한 그룹의 N명의 참가자가 결과 를 계산하기를 원한다고 가정되고, 여기서 는 임계값 을 각각 갖는 공유된 비밀이다. 인 조건이 있고, 즉, 방식의 참가자의 수는 비밀(c)의 차수와 비밀( 및 b)의 곱셈 결과의 차수 사이의 최대값보다 더 커야 한다.
이것은 아래의 일부 실시예에 따른 공유된 서명의 계산에서 행해진다. 즉, 에 대한 보간이 있다. 이것은 본질적으로 및 인 위의 경우이다. 이러한 경우에, 및 이고, 개의 공유에 대한 보간이 있다.
비밀 공유의 생성
도 1은 본 발명의 실시예를 구현하기 위한 예시적인 시스템(100)을 도시한다. 도시된 바와 같이, 시스템(100)은 복수의 당사자(아래에 "참가자"로 또한 지칭됨)(102)를 포함한다. 3명의 참가자(102)만이 도 1에 도시되지만, 일반적으로 시스템은 임의의 수의 참가자를 포함할 수 있음이 인지될 것이다. 참가자(102) 각각은 개개의 컴퓨팅 장비를 동작시킨다.
개개의 참가자(102)의 개개의 컴퓨팅 장비 각각은 하나 이상의 프로세서, 예컨대, 하나 이상의 중앙 처리 장치(CPU), 가속기 프로세서(GPU), 주문형 프로세서 및/또는 필드 프로그래밍 가능 게이트 어레이(FPGA)를 포함하는 개개의 처리 장치를 포함한다. 개개의 컴퓨팅 장비는 또한 메모리, 즉 비-일시적 컴퓨터-판독 가능 매체 또는 매체들의 형태의 컴퓨터-판독 가능 저장소를 포함할 수 있다. 메모리는 하나 이상의 메모리 매체들, 예컨대, 하드 디스크와 같은 자기 매체; 솔리드 스테이트 드라이브(SSD), 플래시 메모리 또는 EEPROM과 같은 전자 매체; 및/또는 광학 디스크 드라이브와 같은 광학 매체를 사용하는 하나 이상의 메모리 유닛들을 포함할 수 있다. 개개의 컴퓨터 장비는 적어도 하나 사용자 단말, 예컨대, 데스크 톱 또는 랩톱 컴퓨터, 태블릿, 스마트폰, 또는 스마트워치와 같은 웨어러블 디바이스를 포함할 수 있다. 대안적으로 또는 추가적으로, 개개의 컴퓨팅 장비는 사용자 단말을 통해 액세스되는 클라우드 컴퓨팅 리소스(클라우드 컴퓨팅 리소스는 하나 이상의 사이트에서 구현되는 하나 이상의 물리적 서버 디바이스의 리소스를 포함함)와 같은 하나 이상의 다른 네트워크 리소스를 포함할 수 있다. 시스템(100)의 당사자에 의해 수행되는 것으로 설명된 임의의 액션이 해당 당사자에 의해 동작되는 개개의 컴퓨팅 장치에 의해 수행될 수 있다는 것이 인지될 것이다.
참가자(102) 각각은 LAN 또는 WAN 연결을 사용하여 인터넷을 통해 또는 대안적인 유선 또는 무선 통신 수단을 통해 다른 참가자(102) 중 하나, 일부 또는 모두에게 데이터를 전송하도록 구성된다. 문맥상 달리 요구되지 않는 한, 데이터를 전송하는 참가자(102)에 대한 언급은, 예컨대, 제1 참가자(102a)와 제2 참가자(102b) 사이의 보안 통신 채널을 통해 개별적으로 다른 참가자(102)에게 데이터를 전송하거나, 예컨대, 이메일 또는 다른 수단을 통해 전체적으로 그룹에 브로드캐스팅하는 것으로 이해될 수 있다. 다시, 문맥상 달리 요구되지 않는 한, 각각의 참가자(102)는 원시 형태(raw form) 또는 암호화된 형태로 데이터를 전송할 수 있다. 예컨대, 데이터는, 수신측 참가자에게 전송되기 전에, 수신측 참가자의 공개 키를 사용하여 암호화될 수 있다.
참가자 중 한 명, 일부 또는 모두는 공유된 비밀의 개개의 공유를 갖는다(예컨대, 메모리에 저장함). 공유된 비밀의 공유를 갖는 참가자는 집합적으로 제1 그룹의 참가자로 지칭될 것이다. 일부 예에서, 참가자 중 한 명 또는 일부는 공유된 비밀의 개개의 공유를 갖지 않을 수 있다. 예컨대, 참가자의 개개의 공유가 손실되었거나(예컨대, 비밀 공유를 저장하는 메모리가 손상되었을 수 있음) 도난당했을 수 있다. 공유된 비밀의 공유를 갖지 않는 참가자는 집합적으로 제2 그룹의 참가자로 지칭될 것이다.
공유된 비밀은 사실상 데이터 항목이며, 데이터 항목은 개인적으로 유지되는 것, 즉 공개적으로 액세스할 수 없는 것이 바람직하다는 점에서 데이터 항목은 "비밀"이다. 공유된 비밀은, 예컨대, 공개-개인 키 쌍의 공유된 개인 키일 수 있다. 다음 예는 공유된 개인 키로서 공유된 비밀을 참조할 것이다. 이 예는 또한 개인 키 공유로서 공유된 비밀의 공유를 참조할 것이다. 그러나, 이들은 예시적인 예일 뿐이라는 점이 인지될 것이다.
개인 키의 공유(및 일반적으로 공유된 비밀)를 생성하는 기술은 당업자에게 친숙할 것이다.
바람직하게는, 제1 참가자(102)는 공동 비밀 공유 방식(joint secret sharing scheme; JVRSS)를 사용하여, 예컨대, 위에서 설명된 JVRSS 기술을 사용하여 개인 키()의 제1 개인 키 공유()를 생성하도록 구성된다. 예컨대, 제1 참가자(102a)는 1의 인덱스를 갖고, 참가자 1에 대해 을 사용하여 제1 개인 키 공유를 생성할 수 있으며, 여기서 개인 키는 로 표시된다. 각각의 참가자(102)는 개개의 개인 키 공유()를 생성할 수 있다. 예컨대, 제2 참가자(102b)는 참가자 2에 대해 를 사용하여 제2 개인 키 공유를 생성하고 이러한 식일 수 있다.
공동 비밀 공유 방식을 사용하여 제1 개인 키 공유()를 생성하는 것은 한 세트의 수 를 생성하고, 그런 다음, 제1 다항식 을 생성하는 것을 포함할 수 있고, 여기서 한 세트의 수는 다항식의 계수이다. 다른 참가자(102) 각각은 개개의 세트의 수를 사용하여 개개의 다항식을 생성할 수 있다. 예컨대, 제2 참가자(102b)는 제2 다항식 을 생성한다. 그런 다음, 참가자(102)는 각각의 다른 참가자의 인덱스에서 평가된 그들 개개의 함수의 값을 각각의 다른 참가자에 전송한다. 예컨대, 제1 참가자(102a)는 제2 참가자(102b)에 대해 를 평가하고, 그런 다음 그 값을 제2 참가자(102b)에 전송하고, 제3 참가자(102c)에 대해 을 평가하고, 그런 다음, 그 값을 제3 참가자(102c)에 전송하고, 이러한 식이다. 제1 참가자(102a)는 제1 참가자의 인덱스의 함수로서 다른 참가자(102)에 의해 생성된 개개의 값을 획득한다. 값은 인터넷을 통해 또는 다른 수단을 통해 전송될 수 있다. 값은 개개의 쌍의 참가자 사이에서 개개의 보안 통신 채널을 통해 전송될 수 있다. 직접 전송하는 대신에, 하나 이상의 참가자(102)(예컨대, 제1 참가자(102a))는 그들 개개의 값을 브로드캐스팅할 수 있다. 적어도 임계수의 참가자로부터 적어도 임계수의 값을 획득하였다면, 제1 참가자(102a)는 제1 값 및 각각의 다른 획득된 데이터 값, 예컨대, , 등에 기초하여 제1 개인 키 공유를 생성한다.
제1 참가자(102a)는 난독화된 계수의 세트에 기초하여 대응하는 공개 키()를 계산할 수 있으며, 여기서 계수는 각각의 참가자(102)의 개개의 개인 키 공유()를 생성하는 데 사용된다. 즉, 임시 개인 키 공유()를 생성할 때, 각각의 참가자(102)는 각각의 다른 참가자(102)와 난독화된 계수()를 공유할 수 있다. 계수는 선택한 타원 곡선 상의 공통 생성기 점(G)에 의해 난독화된다. 이러한 난독화된 계수는 참가자(102) 사이에서 직접 전송되거나, 그룹에 브로드캐스팅될 수 있다. 예컨대, 제1 참가자(102a)는 난독화된 계수( 등)를 브로드캐스팅할 수 있다. 그런 다음, 개인 키에 대응하는 공개 키는 다음과 같이 계산될 수 있다.
개인 키 공유()는 위에서 설명된 JVRSS 방법을 사용하는 것이 아니라, 즉, 대안적인 방법을 사용하여 생성될 수 있다는 것이 유의된다. 개인 키의 공유를 생성하는 방법은 그 자체로 당업계에 알려져 있다. 유사하게, 개인 키(또는 다른 그러한 데이터)의 공유를 분배하는 방법은 그 자체로 당업계에 알려져 있다. 즉, 개인 키 공유()는 다수의 방법으로 생성될 수 있다. 예컨대, 딜러(예컨대, 참가자(102) 중 신뢰할 수 있는 참가자 또는 독립 상대방)는, 예컨대, 샤미르의 비밀 공유 방식을 사용하여 개인 키 공유() 중 하나, 일부 또는 모두를 생성 및 분배하는 데 사용될 수 있다. 개인 키 공유()를 생성 및 분배하는 데 사용될 수 있는 하나의 이러한 방식은 WO2017145010A1에 설명되어 있다.
새로운 방식(즉, 개인 키의 새로운 공유를 갖는 방식)의 참가자(102) 각각은 공유된 블라인딩 키의 개개의 블라인딩 키 공유를 생성한다. 블라인딩 키 공유는 다른 키 공유를 난독화하거나 그렇지 않은 경우 "블라인딩" 또는 "은닉"하는 데 사용된다. 즉, 블라인딩 키 공유는 제1 키 공유를 은닉하기 위해 제1 키 공유에 적용되어, 제1 키 공유를 드러내지 않고도 결과적인 키 공유가 공유될 수 있게 한다. 순진한 예에서, 제1 키 공유는 100일 수 있고, 블라인딩 키 공유는 74일 수 있으므로, 숫자 174가 공유되는 것을 허용한다. 이제, 블라인딩 키 공유가 74라는 것을 모르면, 수신측은 제1 키 공유를 확실히 알 수 없다. 실제로 키 공유는 훨씬 더 큰 숫자일 수 있음이 인지될 것이다.
"키 공유" 및 "키"는 간결성을 위해 사용되며, 일반적으로 "비밀 공유" 및 "비밀"로 각각 대체될 수 있다는 것이 상기된다. 실제로 "공유" 및 "키"는 큰 숫자일 가능성이 높다. 이들 참가자(102)(이하 "새로운 그룹"으로 지칭됨)는 제1 그룹의 참가자로부터의 또는 제1 및 제2 그룹의 참가자의 결합으로부터의 참가자만을 포함할 수 있다.
바람직하게는, 블라인딩 키 공유()는 공동 비밀 공유 방식을 사용하여, 예컨대, 전술한 JVRSS 기술을 사용하여 계산될 수 있다. 예컨대, 제1 참가자(102a)는 1의 인덱스를 갖고, 참가자 1에 대해 을 사용하여 블라인딩 키 공유를 생성할 수 있으며, 여기서 블라인딩 키는 κ로 표시된다. 각각의 참가자(102)는 개개의 블라인딩 키 공유()를 생성할 수 있다. 예컨대, 제2 참가자(102b)는 참가자 2에 대해 를 사용하여 제2 블라인딩 키 공유를 생성할 수 있고, 이러한 식이다.
공동 비밀 공유 방식을 사용하여 블라인딩 키 공유()를 생성하는 것은, 블라인딩 키 공유()를 생성하는 데 사용되는 난수가 개인 키 공유()를 생성하는 데 사용되는 난수와 비교하여 상이한 수라는 점을 제외하고, 개인 키 공유()를 생성하기 위한 위에서 설명된 것과 동일한 단계를 포함한다.
새로운 그룹의 참가자의 일부이기도 한 제1 그룹의 적어도 임계수의 참가자(102)(즉, 개개의 개인 키 공유()를 갖는 참가자)는 그들 개개의 블라인딩 키 공유 및 그들 개개의 개인 키 공유()에 기초하여 중간 키 공유()를 생성한다. 즉, 중간 키 공유()는 블라인딩 키 공유와 개인 키 공유()의 함수이다. 제1 그룹의 참가자(102)의 일부인 참가자(102)만이 이러한 중간 키 공유()를 생성할 수 있는데, 왜냐하면 이것이 개인 키 공유()에 의존하기 때문이라는 것이 유의된다. 중간 키 공유()가 일반적으로 임의의 비밀 공유일 수 있으며 특별히 키 또는 개인 키인 것으로 제한되지 않는다는 것이 또한 유의된다.
일부 예에서, 중간 키 공유()는 블라인딩 키 공유와 개인 키 공유의 합, 즉, 로 계산될 수 있다. 그러나, 중간 키 공유()가, 대안적인 방식, 예컨대, 으로 계산될 수 있음이 배제되지 않는다.
중간 키 공유()를 계산한 해당 참가자(102)는 그들 개개의 공유()를 새로운 그룹의 참가자의 각각의 참가자(102)에게 전송한다. 중간 키 공유()는 참가자(102)의 쌍 사이에서 직접 전송되거나, 또는 일반적으로 새로운 그룹의 참가자(102)로 브로드캐스팅되거나 다른 방식으로 공개될 수 있다.
새로운 그룹의 참가자(102) 각각은 복수의 중간 키 공유()를 획득한다. 그런 다음, 새로운 그룹의 참가자(102) 각각은 복수의 중간 키 공유()에 기초하여 중간 키()를 계산한다. 즉, 중간 키()는 복수의 중간 키 공유() 각각의 함수이다. 예컨대, 새로운 그룹의 참가자(102)의 각각의 참가자는 중간 키 공유()에 대해 보간할 수 있다.
그런 다음, 중간 키()를 획득하였다면, 새로운 그룹의 참가자(102) 각각은 중간 키() 및 블라인딩 키 공유()에 기초하여 개인 키()의 새로운 공유(예컨대, 업데이트된 공유)()를 생성한다. 즉, 개인 키()의 새로운 공유()는 중간 키()와 블라인딩 키 공유()의 함수이다.
일부 예에서, 새로운 개인 키 공유()는 중간 키 공유와 개인 키 공유의 합, 즉, 로 계산될 수 있다. 그러나, 새로운 개인 키 공유()가 대안적인 방식, 예컨대, 로 계산될 수 있음이 배제되지 않는다.
일반적으로, 제2 비밀 공유()는 중간 공유()를 생성하기 위한 제1 연산으로 제1 비밀 공유()에 적용되고, 그런 다음 중간 키()를 생성하기 위해 중간 공유()에 대해 보간된다. 그런 다음, 중간 키() 및 제2 비밀 공유()에 대해 제1 연산의 역이 수행되어, 제1 비밀의 새로운 공유()를 찾는다.
새로운 그룹의 참가자(102) 각각은 이제 개인 키의 새로운 공유를 갖는다. 새로운 그룹의 참가자(102)는, 이전에 개인 키의 공유를 갖지 않았던 참가자(102)를 포함할 수 있다(즉, 새로운 그룹은 제2 그룹으로부터의 참가자(102)를 포함한다). 또는, 새로운 그룹은 제1 그룹의 참가자(102)로부터의 참가자(102)만을 포함할 수 있다.
개인 키()의 새로운 공유()의 임계값은 블라인딩 공유()의 임계값에 기초하여 결정된다. 블라인딩 공유()는 개인 키 공유()와 동일한 임계값을 가질 수 있어서, 개인 키의 새로운 공유()의 임계값이 동일하게 유지되게 한다. 대안적으로, 블라인딩 공유()는 개인 키 공유()보다 더 높은 임계값을 가질 수 있어서, 개인 키()의 새로운 공유()의 임계값이 이전의 공유()의 임계값보다 크고, 더 낮은 임계값을 갖는 블라인딩 공유()에 대해 그 역도 가능하게 한다.
새로운 공유가 '발행'될 때, 이제 오래된 공유() 또는 새로운 공유()를 사용하여 공유된 비밀을 생성하는 2개의 방법이 있다. 오래된 공유와 새로운 공유를 결합하려는 시도가 있는 경우, 계산에서 부정확한 공유를 발생시킬 것이다. 따라서, 계산은 각각의 참가자가 오래된 공유()를 사용하는 경우 또는 각각의 참가자가 그들의 새로운 공유()를 사용하는 경우에만 작동할 것이다. 공유가 업데이트될 때, 다른 참가자도 그들의 새로운 공유를 사용하기 위해 신뢰 요소가 필요할 수 있다. 사용자의 오래된 공유를 사용하려고 시도하는 사용자는 적대자로 간주될 수 있어서, 그들이 공유를 업데이트하거나 재발행하기 전에 적대자로 간주될 수 있다. 방식의 최소 임계값(즉, 공유를 업데이트하기 전후 최소 임계값)보다 적은 '적대자'가 있는 한, 적대자가 실행할 수 있는 임의의 공격이 포착되고 및/또는 적대자가 방식으로부터 배제되는 결과만 초래할 것이기 때문에, 방식은 안전하다. 따라서, 방식을 공격할 어떠한 동기도 없다. 유일한 문제는, 적대자가 임계값보다 더 많은 경우이지만, 이것은 새로운 문제는 아니고, 이것은 일반적으로 임의의 공유된 비밀 방식에 존재한다.
도 2는 방식의 참가자(102)에 의해 수행되는 예시적인 방법(200)을 도시한다. 이 방법은 공유가 손실된 경우에 사용될 수 있거나, 공유된 비밀 방식에서 참가자(102)를 추가 또는 제거하는 데 대안적으로 사용될 수 있다. 추가적으로 또는 대안적으로, 방법은 또한 공유된 비밀의 임계값을 변경하는 데 사용될 수 있다. 새로운 공유()를 발행하기 위해서는, 다음의 단계가 취해진다.
단계(S203)에서, 오래된 공유()를 갖는 적어도 (t+1)명의 참가자(102) 각각은 중간 비밀 공유 를 계산한다. 개인 키 공유()와 블라인딩 키 공유()의 대안적인 함수가 사용될 수 있다.
단계(S204)에서, 이들 참가자(102)는 중간 비밀 공유를 모든 참가자(102)에게 브로드캐스팅한다.
단계(S206)에서, 각각의 참가자는 그들 자신의 새로운 비밀 공유 를 계산한다. S203에서 사용되는 함수에 의존하여, 중간 키() 및 블라인딩 키 공유()의 대안적인 함수가 사용될 수 있다.
이러한 새로운 비밀 공유는, 오래된 비밀 공유와 동일한 방식으로 사용할 수 있으며, 이를 사용하여 임의의 계산이 이루어지면 오래된 공유된 비밀을 발생시킬 것이다. 공유를 업데이트하는 이전 방법은 차수가 0인 항을 갖고, 즉, 상수 항이 0인 제2 다항식을 단순히 덧셈하는 것이었다. 그 결과는, 0차 항인 것으로 정의된 공유된 비밀이 변경되지 않는다는 것이다. 이것은, 차수가 1이지만 0차가 0인 다항식을 갖는 비밀에 대해 JVRSS가 실행될 수 없기 때문에, 임계값을 증가시키지 않고서는 임계값이 2인 개인 키가 업데이트될 수 없음을 의미한다.
임계값 서명 방식의 보안은 공유의 업데이트를 사용하여 2개의 방법으로 개선될 수 있다. 첫째, 공유가 손상된 것으로 밝혀지면, 방식의 참가자(102)는 즉시 이러한 방법을 사용하여 해당 공유를 쓸모없게 만들 수 있다. 대안적으로, 이러한 방식을 실행하는 그룹은, 임의의 공격자가 다수의 위치를 공격해야 하도록 그들의 공유를 간헐적으로 그리고 특정 시간 프레임 내에서 업데이트하는 데 동의할 수 있다. 이것은, 방식이 시간이 지남에 따라 여전히 안전하다는 것을 의미한다. 더 일반적으로, 새로운 방식의 각각의 참가자는 주기적으로 또는 참가자(102) 중 한 명의 요청에 따라 S202 내지 S206의 단계를 수행할 수 있다.
공유가 손실된 경우에, 여전히 알려진 적어도 (t+1)개의 공유가 있는 경우에만, 공유를 재발행하는 것이 가능하다는 것이 유의된다. 추가적으로, 참가자(102)를 제거하는 경우에, 남아있는 참가자(102)의 수는 적어도 (t+1)이어야 하거나, 비밀을 생성하는 데 필요한 수보다 적은 공유가 존재할 것이다. (t+1)보다 적은 공유로 를 계산하는 것이 불가능하기 때문에, 적어도 (t+1)명의 참가자가 없다면, 단계(S204)가 통과될 수 없다는 것이 유의된다. 이것은 임계값을 더 높은 임계값으로 변경하는 경우에도 마찬가지이다. 즉, 방식에는 적어도 해당 임계수가 있어야 한다.
위에서 언급된 바와 같이, 공유된 비밀()의 임계값이 변경될 수 있다. 도 2의 방법(200)은 동일한 비밀()에 대한 (t'+1)의 새로운 공유된 비밀 임계값을 생성하도록 구현될 수 있고, 그런 다음 참가자(102)는 다음의 방식으로 이 임계값으로 새로운 공유를 생성한다.
단계(S204)에서, 이들 참가자(102)는 중간 비밀 공유를 모든 다른 참가자(102)에게 브로드캐스팅한다.
단계(S206)에서, 각각의 참가자는 그들 자신의 새로운 비밀 공유 를 계산한다. S203에서 사용되는 함수에 의존하여, 중간 키() 및 블라인딩 키 공유()의 대안적인 함수가 사용될 수 있다.
이러한 새로운 비밀 공유는 (t'+1)의 임계값을 가지며, 임계수의 공유에 대한 보간은 공유된 비밀()을 발생시킬 것이다. 그런 다음, 이것이 (예컨대, 아래에 설명된 바와 같이) 서명 계산에 사용되는 경우 ― 여기서 임시 키는 t의 임계값을 가짐 ― , 새로운 서명 공유는 t+t'+1의 임계값을 갖는다.
임계수의 "오래된" 공유가 입증 가능하게 삭제된 경우에만, 보안이 증가될 수 있다는 것이 유의된다. 임계수 미만의 오래된 공유가 남도록 충분한 공유가 입증 가능하게 삭제되어야 한다.
비밀이 t+1의 임계값을 갖고, 이는 t'+1로 증가되고, 여기서 t'>t이라는 것이 가정된다. n개의 공유가 있다고 하자. 그런 다음, 보안을 증가시키기 위해, t+1개 미만의 오래된 공유가 입증 가능하게 남아 있어야 한다. 즉, 방식은 여전히 임계값 미만의 오래된 공유가 존재한다는 것을 확신할 필요가 있다. 이것은, 그렇다면, 오래된 공유로 비밀을 계산할 어떠한 방법도 없기 때문이다. t+1개의 오래된 공유가 여전히 존재하는 경우, 더 높은 임계값을 갖는 새로운 공유가 또한 있더라도, 이들이 비밀을 계산하는 데 사용될 수 있기 때문에, 보안은 여전히 t+1이다. 보안은 비밀을 계산하는 데 필요한 공유의 최소수에 기초한다.
새로운 방식의 참가자(102)는, 새로운 공유()가 정확하게 계산되었음을 검증할 수 있다. 이것은, 개별 비밀에 대응하는 공개 키를 덧셈하고 덧셈의 결과에 대응하는 공개 키와 그들을 비교함으로써 수행된다.
위의 예비 단계에서 설명된 바와 같이, 각각의 비밀()을 생성하는 방법은 공개 키를 계산하기에 충분한 정보를 발생시킨다. 따라서, 공개 키를 계산한 후에, 참가자는 , 를 알고 있다. 결과를 검증하기 위해, 각각의 참가자는 다음 단계를 수행할 수 있다.
3. 이 결과를 비교하여, 이들이 동일하다는 것을 검증.
또한, 참가자(102)가 부정확한 결과를 찾은 경우, 그들은 어떤 공유가 부정확한지를 결정할 수 있다. 이를 위해, 참가자(102)는 각각의 참가자에 대해 및 를 저장한다. 그런 다음, 참가자(102)가 와 를 알고 있기 때문에, 이는 위와 동일한 검증이다. 참가자는 를 또한 알고 있는데, 왜냐하면 이것이 보간을 위해 공유되기 때문이고, 따라서 이러한 값으로 동일한 단계 1-3가 반복된다. 단계 3에서 동일하지 않은 값을 발생시키는 공유는 부정확한 공유이다.
언급된 바와 같이, 새로운 공유()는 임계 서명 방식의 일부로서 사용될 수 있다. 즉, 새로운 공유()는 개인 키()의 개인 키 공유일 수 있다. 본 발명은, 서명 방식의 서명이 기초하는 개인 키의 참가자의 공유를 업데이트하는 데 사용될 수 있다. 새로운 공유()의 수는 변경될 수 있고 및/또는 새로운 개인 키 공유()의 임계값은 변경될 수 있다.
도 3은 새로운 개인 키 공유()를 사용하여 임계값 최적의 서명 방식, 예컨대, 임계값 최적의 ECDSA 방식을 구현하기 위한 예시적인 시스템(300)을 도시한다. 오래된 공유가 사용된 경우, 생성된 서명이 새로운 공유를 사용하여 생성된 서명과 동일할 것이라는 것이 유의된다. 도시된 바와 같이, 시스템(100)은 조정자(101) 및 한 그룹의 참가자(102)를 포함하는 복수의 참가자(102)를 포함한다. 3명의 참가자(102)만이 도 3에 도시되지만, 일반적으로 시스템은 임의의 수의 참가자를 포함할 수 있음이 인지될 것이다. 또한, 도 1에서, 조정자(101)는 참가자(102)와 별개인 것으로 도시되지만, 일부 실시예에서, 조정자(101)는 또한 참가자(102) 중 하나, 예컨대, 제1 참가자(102a)일 수 있다. 참가자(102)는 도 1을 참조하여 위에서 설명되었다.
다음이 타원 곡선 암호화 방식을 사용하여 구현된 방식을 설명하지만, 일반적으로, 본 발명의 실시예는 다른 공개 키 암호화 방식, 예컨대, RSA에 적용될 수 있음이 유의된다.
조정자(101)는 한 그룹의 참가자(102)의 개개의 참가자에 의해 생성된 임계수의 서명 공유를 사용하여 서명을 개시하는 당사자이다. 즉, 조정자(101)는 서명될 메시지에 대한 서명을 생성한다. 다시 말하자면, 메시지에 대한 서명을 생성하는 것은 서명이 서명될 메시지에 의존하거나, 다른 말로 표현하면, 서명이 서명될 메시지의 함수라는 것을 의미하는 것이 이해된다는 것이 유의된다. 조정자(101)는 또한 서명 및 선택적으로 메시지를 제3 자(103)에 전송하거나 그렇지 않으면 서명을 출력하는 당사자일 수 있다. 예컨대, 제3 자(103)는 인증 기관 또는 다른 형태의 기관, 또는 다른 사용자일 수 있다. 다른 예에서, 서명은, 예컨대, 데이터베이스 또는 다른 문서에 기록될 수 있다. 일부 예에서, 서명은 대중에게 이용 가능하게 되고, 예컨대, 웹사이트 또는 다른 공개적으로 액세스 가능한 매체에 기록될 수 있다.
조정자(101)는 서명될 메시지를 참가자(102)에 전송할 수 있다. 메시지는 모든 참가자(102)에 또는 참가자의 서브세트, 예컨대, 임계수의 참가자에 전송될 수 있다. 도 1의 예에서, 한 그룹의 참가자는 3명의 참가자(102a, 102b, 102c)를 포함한다. 조정자(101)는 메시지를 하나의 참가자에 전송할 수 있으며, 그런 다음, 참가자는 메시지를 하나 또는 일부 또는 모든 다른 참가자에 전달할 수 있다.
메시지는 LAN 또는 WAN 연결을 사용하여 인터넷을 통해, 또는 대안적인 유선 또는 무선 통신 수단을 경유하여 전송될 수 있다. 메시지는, 예컨대, 조정자(101)와 각각의 참가자(102) 사이의 보안 통신 채널을 통해 개별적으로 각각의 참가자(102)에게 전송되거나, 예컨대, 이메일 또는 다른 수단을 통해 그룹 전체에 브로드캐스팅될 수 있다. 메시지는 원시 형태 또는 암호화된 형태로 전송될 수 있다. 예컨대, 메시지는 한 번 이상 해싱될 수 있다.
참가자(102) 중 하나 이상은 조정자(101)로부터가 아니라, 즉, 대안적인 수단을 통해 메시지를 획득할 수 있다. 예컨대, 메시지는 참가자(102) 중 하나에 의해 생성되거나, 그렇지 않은 경우, 예컨대, 공개적으로 이용 가능할 수 있다. 하나 이상의 참가자(102)는 제3 자(103)로부터 메시지를 수신할 수 있다. 메시지를 획득하는 참가자(102)는 메시지를 (원시 또는 암호화된 형태로) 하나 이상의 다른 참가자(102)에 전송할 수 있다. 예컨대, 제1 참가자(102)는 메시지를 제2 참가자(102b) 및/또는 제3 참가자(102c)에 전송할 수 있다.
조정자(101)는 임계수의 서명 공유를 획득(예컨대, 수신)한다. 도 1의 예에서, 임계값은 2이고, 제1 참가자(102a) 및 제2 참가자(102b)만이 개개의 서명 공유를 생성하기로 결정한다. 예컨대, 서명 공유를 생성하는 참가자(102) 중 하나 이상은, 예컨대, 보안 통신 채널을 통해 조정자(101)에 그들 개개의 공유를 직접 전송할 수 있다. 대안적으로, 참가자(102) 중 하나 이상은 그들 개개의 공유를 브로드캐스팅하고 그리고/또는 그들의 공유를 공개적으로 이용 가능하게 할 수 있다. 위에서 설명된 바와 같이, 조정자(101)는 또한 참가자일 수 있다. 이러한 실시예에서, 조정자(101)는 또한 개개의 서명 공유를 생성할 수 있다. 그런 의미에서, 임계수의 서명 공유 중 적어도 하나를 획득하는 것은 적어도 하나의 서명 공유를 생성하는 것을 의미하고, 따라서 조정자(101)는 임계수보다 1개 적은 서명 공유만을 수신할 필요가 있다.
서명 공유를 획득하기 위해, 조정자(101)는 서명 공유에 대한 요청을 메시지 상에서 전송할 수 있다. 예컨대, 조정자(101)는 서명 공유에 대한 요청을 한 그룹의 참가자(102) 중 하나, 일부 또는 모두에게 전송할 수 있다.
적어도 임계수의 서명 공유를 획득하였다면, 조정자(101)는 획득된 공유를 사용하여 서명을 생성한다. 그런 다음, 조정자(101)는 서명을 하나 이상의 다른 엔티티에 브로드캐스팅하거나 전송할 수 있다. 추가적으로 또는 대안적으로, 조정자는 서명을 저장하고 그리고/또는 서명을 디지털 기록의 일부로서, 예컨대, 이메일 또는 다른 문서에 기록할 수 있다.
서명 공유()를 생성하는 방법이 이제 설명될 것이다. 방법은 제1 참가자(102a)의 관점에서 설명되지만, 서명 공유를 생성하는 각각의 다른 참가자(102)가 해당 다른 참가자(102)에게 특정한 특정 데이터를 사용하더라도 동등한 방법을 사용하여 그렇게 한다는 것이 인식될 것이다.
각각의 참가자(102)는 다음의 데이터 항목: 개개의 개인 키 공유()(즉, 개인 키()의 공유), 개개의 임시 개인 키 공유() 및 공통 임시 공개 키()에 기초하여 생성된 공통 공유된 값(r)에 액세스한다. 공통 임시 공개 키는 임시 개인 키에 대응하고, 즉, 임시 개인 키에 기초하여 생성된다. 여기서, 값 또는 키는, 각각의 참가자가 동일한 값 또는 키에 액세스한다는 점에서 공통적일 수 있다. 달리 지정되지 않는 한, 제1 키에 기초하여 제2 키를 생성하는 것이 반드시 제1 키 자체가 알려진다는 것을 의미하지는 않는다는 것이 유의된다. 이러한 데이터 항목이 생성되는 방법의 예가 아래에 제공된다.
제1 참가자(102a)는 서명될 메시지를 획득하거나 이미 액세스하였다. 메시지는 자신의 원시 형태(예컨대, 평문)이거나, 암호화되거나 그렇지 않은 경우 인코딩된 형태(예컨대, 암호문)일 수 있다. 제1 참가자(102a)는 조정자 및/또는 다른 참가자(102)로부터 메시지를 (어느 형태로든) 획득할 수 있다. 대안적으로, 제1 참가자(102a)는 서명될 메시지를 생성할 수 있다.
제1 참가자(102a)는 제1 서명 공유()를 생성한다. 이러한 맥락에서 "제1"은 다른 참가자 및 서명 공유로부터 특정 참가자 및 특정 서명 공유를 각각 구별하기 위해 임의의 라벨로서 사용되고, 제1 참가자(102a)가 서명 공유()를 생성하는 첫 번째 참가자이거나, 제1 서명 공유()가 정렬된 목록의 서명 공유()에서 첫 번째라는 것을 반드시 의미하지는 않는다는 것이 유의된다.
일부 실시예에서, 제1 서명 공유()는 제1 메시지 독립 구성요소(MIC) 및 제1 메시지 종속 구성요소(MDC)에 기초하여 생성될 수 있고, 즉, 이들의 함수이고, 여기서 다시 "제1"은 단지 라벨로서 사용된다. MIC는 메시지와 독립적으로 생성된다. 즉, MIC는 서명될 메시지의 함수가 아니며(즉, MIC는 메시지에 기초하여 생성되지 않음), MIC를 생성하기 위해 메시지에 대한 지식이 필요하지는 않다. 대조적으로, MDC는 서명될 메시지의 함수이며, MDC를 생성하기 위해 메시지에 대한 지식이 필요하다.
다른 실시예에서, 제1 서명은 제1 메시지 독립 구성요소(MIC)의 함수가 아닐 수 있다. 이러한 실시예에서, 제1 메시지 독립 구성요소가 생성되어, 조정자(101)에게 이용 가능하게 되며, 예컨대, 조정자(101)에 전송되거나 하나 이상의 참가자(102)에게 브로드캐스팅된다. 제1 메시지 독립 구성요소(MIC)는 제1 서명 공유 이전에 그리고 이와 별개로 조정자와 공유될 수 있다.
조정자(101)는 적어도 임계수의 참가자로부터 개개의 메시지 독립 구성요소(MIC)를 획득하고, 개개의 서명 공유(이는 개개의 메시지 종속 구성요소(MDC)의 함수임) 및 개개의 메시지 독립 구성요소(MIC)에 기초하여 서명을 생성할 수 있다. 더 많은 세부사항이 아래에 제공된다.
MIC가 메시지에 대한 지식이 필요하지 않기 때문에, MIC가 사전 계산될 수 있다. 다시 말해서, MIC는 메시지를 획득하기 전에 생성될 수 있다. 따라서, 상이한 메시지에 서명하기 위해 상이한 개개의 서명 공유()를 생성하는 데 있어서 각각 사용되는 복수의 상이한 MIC가 사전 계산될 수 있고, 여기서 프라임(')은, 이것이 제1 서명 공유의 상이한 인스턴스임을 나타낸다.
제1 서명 공유()를 생성하였다면, 제1 참가자(102a)는 메시지에 대한 서명(s)을 생성하기 위해 제1 서명 공유()가 조정자(101)에게 이용 가능하게 한다. 제1 참가자(102a)가 조정자(101)인 경우, 제1 서명 공유()가 조정자(101)에게 이용 가능하게 하는 것은 단순히 서명(s)을 생성하기 위한 함수에 제1 서명 공유()를 출력하는 것을 의미할 수 있다. 그렇지 않으면, 제1 참가자(102a)는 제1 서명 공유()를 조정자(101)에게 전송하거나, 또는 조정자(101)에게 전달하기 위해 하나 이상의 다른 참가자(102)에 전송하거나 제1 서명 공유()를 브로드캐스팅하거나, 이러한 옵션의 조합을 사용할 수 있다.
위에서 언급된 바와 같이, 제1 서명 공유()는 제1 MIC 및 제1 MDC에 기초하여 생성될 수 있다. 제1 서명 공유가 제1 MIC의 함수인지 여부에 관계없이, 제1 MIC는 제1 개인 키 공유()(즉, 제1 참가자(102a)에게 알려진 개인 키()의 공유)에 기초하여 생성된다(즉, 제1 개인 키 공유()의 함수이다). 제1 MIC는 또한 제1 임시 개인 키 공유()(즉, 제1 참가자(102a)에게 알려진 임시 개인 키(k)의 공유) 및 임시 개인 키(k)에 대응하는 임시 공개 키()에 기초하여 생성된 공유된 값(r)에 기초할 수 있다. 제1 MDC는 (원시 또는 암호화된 형태의) 메시지에 기초하여 생성되며(메시지의 함수이고), 또한 제1 임시 개인 키 공유()에 기초하여 생성될 수 있다. MIC 및 MDC의 변형이 아래에 제공된다.
제1 임시 개인 키 공유()는, 공동 비밀 공유 방식을 사용하여, 예컨대, 위에서 설명된 JVRSS 기술을 사용하여 계산될 수 있다. 예컨대, 제1 참가자(102a)는 1의 인덱스를 가질 수 있고, 참가자 1에 대해 을 사용하여 제1 임시 개인 키 공유를 생성할 수 있으며, 여기서 임시 개인 키는 k로 표시된다. 각각의 참가자(102)는 개개의 임시 개인 키 공유()를 생성할 수 있다. 예컨대, 제2 참가자(102b)는 참가자 2에 대해 를 사용하여 제2 임시 개인 키 공유를 생성하고, 이러한 식일 수 있다.
공동 비밀 공유 방식을 사용하여 제1 임시 개인 키 공유()를 생성하는 것은, 임시 개인 키 공유()를 생성하는 데 사용되는 난수가 개인 키 공유()를 생성하는 데 사용되는 난수와 비교하여 상이한 수라는 점을 제외하고, 제1 개인 키 공유()를 생성하기 위한 위에서 설명된 것과 동일한 단계를 포함한다.
동일한 개인 키() 및 개인 키 공유()가 각각의 서명에 사용되는 반면, 임시 개인 키(k) 및 임시 개인 키 공유()가 각각의 서명에 대해 변경된다(또는 오히려 그들은 랜덤하게 생성되고, 따라서 의도적으로 상이하게 선택되는 것과는 대조적으로 동일할 가능성이 매우 낮음)는 것이 유의된다.
공유된 값(r)은 임시 개인 키(k)에 대응하는 임시 공개 키()에 기초하여 생성된다. 임시 공개 키(x,y)는, 보통 x 및 y 구성요소로 지칭되는 2개의 구성요소를 포함한다. 공유된 값(r)은 임시 공개 키의 x 구성요소의 함수, 예컨대, 일 수 있다.
임시 공개 키()는 한 세트의 난독화된 계수에 기초하여 생성될 수 있으며, 여기서 계수는 각각의 참가자(102)의 개개의 임시 개인 키 공유()를 생성하는 데 사용되었다. 즉, 임시 개인 키 공유()를 생성할 때 각각의 참가자(102)는 난독화된 계수()를 각각의 다른 참가자(102)와 공유한다. 계수는 선택한 타원 곡선 상의 공통 생성기 점(G)에 의해 난독화된다. 이러한 난독화된 계수는 참가자(102) 사이에서 직접 전송되거나, 그룹에 브로드캐스팅될 수 있다. 예컨대, 제1 참가자(102a)는 난독화된 계수( 등)를 브로드캐스팅할 수 있다. 그런 다음, 임시 공개 키는 다음과 같이 계산될 수 있다.
제1 역 공유()는, 예컨대, 참가자 1에 대해 를 계산함으로써 생성된 공유된 비밀의 역일 수 있다. 위에서 설명된 바와 같이, 공유된 비밀의 역을 계산하는 것은 공유된 비밀의 곱을 계산하는 것을 포함한다. 제1 참가자(102a)는 제1 임시 개인 키(k)와 제1 블라인딩 키(α)의 곱으로서 중간 값(μ)을 생성한다. 예컨대, 중간 값은 참가자 1에 대해 에 의해 계산될 수 있으며, 그의 결과는 이다.
이것은 각각의 참가자(102)가 곱셈 공유()를 생성하는 것을 수반할 수 있으며, 여기서 는 제1 블라인딩 키()의 공유이다. 각각의 참가자(102)는 공동 비밀 공유 방식을 사용하여, 예컨대, 위에서 설명된 JVRSS 기술을 사용하여 제1 블라인딩 키()의 그들 개개의 공유()를 계산할 수 있다. 예컨대, 제1 참가자(102a)는 1의 인덱스를 가질 수 있고, 참가자 1에 대해 을 사용하여 제1 블라인딩 키의 공유를 생성할 수 있다. 각각의 참가자는 (예컨대, 직접 전송 또는 브로드캐스팅을 통해) 그들 개개의 곱셈 공유()를 공유하고, 그런 다음, 곱셈 공유() 각각에 기초하여, 예컨대, 보간에 의해 중간 값(μ)을 생성한다. 제1 역 공유()는 중간 값(μ)의 역을 계산함으로써 생성될 수 있다. 예컨대, 제1 참가자(102a)는 μ의 모듈러 역을 계산할 수 있으며, 이는 결과적으로 다음이 된다.
그런 다음, 제1 참가자(102a)는 중간 값의 모듈러 역() 및 그들 개개의 제1 블라인딩 키 공유()에 기초하여, 예컨대, 다음을 계산함으로써 제1 역 공유()를 계산할 수 있다.
선택적으로, MIC는 제2 블라인딩 키(β)의 공유(즉, 그의 함수)에 기초하여 생성될 수 있다. 즉, MIC는 또한 앞서 언급한 데이터 항목 외에도, 제2 블라인딩 키(β)의 제1 공유()에 기초한다. 제2 블라인딩 키의 제1 공유는 공동 비밀 공유 방식을 사용하여, 예컨대, 위에서 설명된 JVRSS 기술을 사용하여 계산될 수 있다. 예컨대, 제1 참가자(102a)는 1의 인덱스를 가질 수 있고, 참가자 1에 대해 을 사용하여 제2 블라인딩 키의 제1 공유를 생성할 수 있으며, 여기서 제2 블라인딩 키는 β로 표시된다.
MIC는 제1 중간 공유() 및 적어도 임계수의 참가자(102)로부터 획득된 개개의 중간 공유()의 함수인 제1 사전 서명 공유()에 기초하여 생성될 수 있다. 즉, 참가자(102) 각각은 개개의 중간 공유()를 생성하고 그 중간 공유()를 다른 참가자(102)에 송신 및/또는 브로드캐스팅할 수 있다. 제1 참가자(102a)는, 예컨대, 중간 공유()의 보간에 의해 공통 중간 값(λ)을 생성하기 위해 중간 공유()를 수집할 수 있다. 제1 참가자(102a)(및 선택적으로, 다른 참가자(102))는 각각 상이한 서명 공유()의 생성에 사용하기 위한 복수의 사전 서명 공유()를 생성할 수 있다.
제1 중간 공유()는 새로운 제1 개인 키 공유() 및 제1 역 공유()의 함수일 수 있다. 그 경우에, 적어도 임계수의 참가자(102) 각각은 그들 개개의 개인 키 공유() 및 그들 개개의 역 공유()의 함수인 개개의 중간 공유()를 생성하고 공유한다.
대안적으로, 제1 중간 공유()는 제1 개인 키 공유() 및 제1 블라인딩 키()의 제1 공유의 함수일 수 있다. 그 경우에, 적어도 임계수의 참가자(102) 각각은, 제1 블라인딩 키()의 그들 개개의 공유 및 그들 개개의 개인 키 공유()의 함수인 개개의 중간 공유()를 생성하고 공유한다.
일부 실시예에서, 제1 사전 서명 공유()는 또한 제2 블라인딩 키()의 제1 공유에 기초하여 생성될 수 있다. 예컨대, 제1 중간 공유()는 제2 블라인딩 키()의 제1 공유의 함수일 수 있다. 추가적인 또는 대안적인 실시예에서, 제1 중간 공유()는 또한 공통 값(r)의 함수일 수 있다.
도 4는 본 발명의 실시예에 따른 메시지에 대한 서명을 생성하기 위한 예시적인 방법(400)을 도시한다. 단계(S401 내지 S408)는 이 예에서 임계수의 참가자(102)(제1 참가자(102a)를 포함함) 각각에 의해 수행된다. 단계(S409)는 조정자(101)에 의해 수행되며, 조정자는 또한 단계(S401 내지 S408)를 수행하는 참가자 중 한 명일 수 있다. 단계들 중 일부가 생략되거나 다른 순서로 수행될 수 있음이 인지될 것이다.
설정:
단계(S401)에서, 각각의 참가자(102)는 공유된 개인 키 공유() 및 대응하는 공개 키를 계산한다. 개인 키 공유()의 생성이 위에서 설명되었다. 이때에, 각각의 참가자(i)는 비밀 키 공유 및 공개 키를 갖고, 여기서 P는 공유된 개인 키에 대응하는 공개 키에 대한 표기법이다. 공유된 개인 키는 (t+1)의 임계값을 갖는다.
사전 계산:
단계(S402)에서, 각각의 참가자(102)는 공유된 임시 키 공유 및 대응하는 공개 키를 계산한다. 예컨대, 각각의 참가자(102)는 예비 단계에서 주어진 공개 키의 계산 및 JVRSS를 사용하여 공유된 임시 키를 계산할 수 있다. 그런 다음, 각각의 참가자(102)는 임시 개인 키에 기초하여 역 공유를 계산할 수 있다. 이것은 각각의 참가자가 역 공유를 갖게 하고, 임계값은 (t+1)이다.
단계(S403)에서, 각각의 참가자(102)는 2개의 상이한 공유된 블라인딩 키 공유를 생성한다. 예컨대, 각각의 참가자(102)는, 참가자(i)가 공유 및 를 갖도록 2개의 공유된 비밀을 생성할 수 있으며, 개개의 공유된 비밀은 임계값(t+1)을 가진다. 일부 예에서, 모든 공유된 비밀이 동일한 임계값을 가질 필요는 없다는 것이 유의된다.
단계(S404)에서, 각각의 참가자(102)는 중간 공유를 계산하고, 그들의 중간 공유를 다른 참가자에게 브로드캐스팅한다. 예컨대, 각각의 참가자(i)는 중간 공유 를 계산할 수 있다. 이 값은 (2t+1)의 임계값을 갖는다.
단계(S405)에서, 각각의 참가자(102)는 적어도 중간 공유에 기초하여 중간 값을 계산한다. 예컨대, 각각의 참가자(102)는 (2t+1)개의 공유에 대한 보간을 사용하여 중간 값 을 계산할 수 있다.
단계(S406)에서, 각각의 참가자(102)는 사전 서명 공유를 계산한다. 예컨대, 각각의 참가자(i)는 그들의 사전 서명 공유 를 계산할 수 있다. 각각의 참가자(102)는 , 개인 키 공유 및 대응하는 공개 키를 저장할 수 있다.
각각의 서명에 대해 상이한 임시 키가 사용되기 때문에, 한 번에 다수의 임시 키가 설정될 수 있고, 즉, 사전 계산 동안에 단계(S402 내지 S406)가 반복되어 다수의 임시 키를 생성하고, 나중에 사용하기 위해 저장될 수 있다는 것이 유의된다. 이들은, 어떠한 추가 통신 라운드도 없도록 동시에 실행될 수 있다. 바람직하게는, 각각의 서명에 대해 α 및 β인 상이한 값이 사용되어야 한다는 것이 유의된다.
서명 생성:
메시지(msg)에 서명하기 위해, 적어도 (t+1)명의 참가자는 단계(S407 및 S408)를 수행해야 한다.
단계(S407)에서, 적어도 임계수의 참가자(102)는 서명될 메시지를 획득하고, 메시지 다이제스트(message digest)를 계산한다. 예컨대, 조정자(101)는 메시지(msg)에 대한 서명 공유를 생성하기 위한 요청을 (t+1)명의 참가자에게 전송될 수 있다. 각각의 참가자(i)는 메시지 다이제스트 e=hash(msg)를 계산할 수 있다. 일부 예에서, 이 해시 함수는 이중 SHA-256 해시 함수이다. 대안적인 해시 함수가 사용될 수 있다.
단계(S408)에서, 적어도 임계수의 참가자(102)는 서명 공유를 계산하고 이를 조정자(101)에 전송한다. 예컨대, 각각의 참가자(i)는 그들의 서명 공유()를 계산하고, 그런 다음, 서명 공유를 조정자에게 전송될 수 있다. 모든 참가자에 의해 값(r)이 전송되지 않을 수 있다는 것이 유의된다.
서명 공유의 메시지 독립 구성요소를 사전 계산하기 위한 몇 가지 대안이 있다. 이들은 크게 2개의 변형 세트로 분할될 수 있는데: 계산에 r을 포함할 때, 및 을 포함할 때이다. 이들은 서로 독립적으로 선택될 수 있고, 그래서 위의 방법(400)에 대한 8개의 변형이 있다.
하나의 수정은 단계(S406) 동안 를 저장하는 것이며, 이는 r이 사전 서명 공유에 포함된다는 것을 의미한다. 또 다른 수정 사항은 중간 공유를 계산하는 동안 r과의 곱셈이 더 일찍 올 수 있다는 것이다. 대신에 단계(S404)에서 를 정의함으로써, 단계(S406)에서, 이고, 서명 공유의 계산은 이다.
대신에, 또 다른 수정은 및 가 되도록 를 계산하는 것이다. 대안적인 점에 r을 포함하는 2개의 변형은 이것과 함께 수행될 수 있다. 각각의 참가자는, 가 사전 계산 단계(S402)에서 계산되기 때문에, 에 대한 지식을 가지고 있다. 추가적으로, 모든 참가자(102)는 그들의 공유를 브로드캐스팅한다. 따라서, 각각의 참가자(102)는 (적어도) 2t+1개의 공유 및 값()에 대한 지식을 가지고 있다. 그런 다음, 그들은 다음을 계산할 수 있다.
대신에 또 다른 수정은 중간 값을 로 계산하고 사전 서명 공유를 로 계산하는 것이다. 마지막으로, 그런 다음, 서명 공유는 가 될 것이다. 계산에 r을 포함할 때의 2개의 변형이 또한 이것과 함께 수행될 수 있다. 각각의 참가자(102)는 의 계산으로부터 에 대한 지식을 갖는다. 그런 다음, 그들은 이를 사용하여 을 계산하고, 그런 다음, 계산에 이를 포함할 수 있다.
요약하면, 각각의 참가자(102)는 4개의 비밀 공유: 를 생성할 수 있다. 예시적인 방법(400)에서 두 개의 곱: 및 서명에 사용하기 위한 가 계산될 필요가 있고, 는 추후에 을 계산하는 데 사용되고(이 공유에 대한 보간은 '가 삭제될 것이기 때문에 을 제공함), 및 는 제1 곱을 사용하고, 그래서 공유가 확장되면, 계산 결과는 를 제공한다. 및 로 구성된 공유를 사용하는 임의의 계산은, 먼저 자체로만 계산을 수행하고 그런 다음 필요한 경우 을 곱함으로써 이루어질 수 있다.
위 방식의 하나의 버전은 메시지 독립 구성요소(MIC) 및 메시지 종속 구성요소(MDC)로 구성된 공유를 사용하여 서명이 계산된다고 요약될 수 있고, 여기서 MIC는 사전 서명 공유()에 기초할 수 있고, MDC는 메시지(e)에 기초한다.
등가 방식(equivalent scheme)은 위와 같이 MIC를 계산하고, 그런 다음, 예컨대, MDC만으로 구성된 서명 공유를 보간한 후, 서명 공유와 함께 이를 서명에 통합하는 것을 포함한다. 명시적으로, 그 방식은 사전 계산 단계(S406)까지 동일할 수 있으며, 여기서 중간 공유는 r 값을 포함하고, 이어서, 보간 후 이것은 가 된다.
그런 다음, 메시지 다이제스트 e=hash(m)를 생성하도록 해싱된 주어진 메시지(m)에 대한 그들의 서명 공유를 생성하기 위해 참가자는 다음을 계산하고,
그리고 이를 조정자에 전송한다. 그런 다음, 조정자는 다음을 계산하며
메시지 독립 구성요소를 계산하기 위한 다음의 변형이 구현될 수 있다.
비밀의 임계값이 상이할 수 있다는 것이 유의된다. 즉, 자체의 임계값이 서명 생성 방식을 실행하기 위해 반드시 동일할 필요는 없다. 예컨대, 한 그룹의 6이 존재하고, 3이 서명 및/또는 개인 키를 생성하는 데 필요하면, 그들은 기술적으로 k의 임계값이 4이고 다른 공유된 비밀의 임계값이 3인 계산을 수행할 수 있고, 그들은 여전히 임계값 최적의 방식을 가질 것이다.
본 발명은 (최적이든 또는 비최적이든 간에) 임의의 임계값 서명 방식에 적용될 수 있으며, 전술된 특정 방식에 제한되지 않는다는 것이 유의된다.
일반적으로, 본 발명의 실시예는 임의의 메시지에 대한 서명을 생성하는 데 사용될 수 있다. 특정 예시적인 사용 사례로서, 메시지는 블록체인 트랜잭션의 부분 또는 전부일 수 있다. 즉, 블록체인 트랜잭션의 하나 이상의 입력 및/또는 하나 이상의 출력을 서명하기 위해 서명이 사용될 수 있다. 예컨대, 생성된 서명은 블록체인 트랜잭션의 출력을 잠금 해제하기 위해 적어도 부분적으로 사용될 수 있다. 특정 예로서, 이전 트랜잭션의 출력은, 공개 키의 해시에 잠금된 P2PKH(pay-to-public-key-hash) 출력일 수 있다. 잠금 해제하기 위해, P2PKH 출력을 참조하는 나중의 트랜잭션의 입력은 (해싱되지 않은) 공개 키 및 공개 키에 대응하는 개인 키에 기초하여 생성된 서명을 포함해야 한다.
스크립트로 표시되면, "잠금 스크립트" 및 "잠금 해제 스크립트"는 다음과 같은 형태를 취할 수 있다.
잠금 스크립트 = OP_DUP OP_HASH160<Public KeyHash> OP_EQUAL OP_CHECKSIG
잠금 해제 스크립트 =<Signature><Public Key>
위에서 설명된 실시예를 참조하면, <Public Key>는 와 동일시될 수 있으며, <Signature>는 임계값 서명(s)을 포함하고, 여기서 이전 트랜잭션은 서명될 메시지이다. 위에서 언급된 바와 같이, ECDSA 서명은 (r,s) 형태라는 것이 유의된다.
본 발명은, 어떤 참가자가 서명 공유를 생성할 수 있는지 및 따라서 어떤 참가자가 자금을 잠금 해제하기 위해, 즉, 블록체인 트랜잭션의 출력을 잠금 해제하기 위해 함께 모여야 하는지를 변경하는 데 사용될 수 있다. 추가적으로 또는 대안적으로, 본 발명은 자금을 잠금 해제하는 데 필요한 참가자 수를 증가시키는 데 사용될 수 있다.
설명된 서명 생성 방법은 임의의 특정 사용 사례에 제한되지 않으며 일반적으로 임의의 메시지에 기초하여 서명을 생성하는 데 사용될 수 있다는 것이 유의된다. 블록체인 트랜잭션의 전부 또는 일부에 서명하는 것은 하나의 예시적인 예일 뿐이다. 설명된 방법은, 예컨대, 법적 문서(예컨대, 유언장, 증서 또는 다른 계약서), 하나 이상의 당사자 간의 서신(correspondence), 디지털 인증서(예컨대, 인증 기관에 의해 발행됨), 의료 처방전, 은행 송금 또는 금융 증서(financial instrument), 모기지 또는 대출 신청 등에 서명 및/또는 이를 인가하는 데 사용될 수 있다.
특정 예로서, 한 그룹의 참가자(말하자면, 총 5명의 참가자)는 회사 이사회를 구성할 수 있다. 회사의 투표 문제는 이사회의 과반수(즉, 적어도 3명의 참가자)가 특정 투표에 동의하는 것을 요구할 수 있다. 이사회는 설명된 서명 생성 방법을 사용하여, 적어도 3명의 이사회 구성원이 특정 결과에 찬성 투표하는 데 동의했음을 증명할 수 있다. 이 예에서, 서명 생성 방식의 임계값은 3이다. 즉, 조정자가 서명을 성공적으로 생성하기 위해 이사회 구성원 중 적어도 3명은 개개의 서명 공유를 제공해야 한다. 서명이 성공적으로 생성되면, 적어도 임계수(3명)의 이사회 구성원이 해당 결과에 찬성 투표하는 데 동의해야 한다. 따라서, 서명의 성공적인 생성은 투표를 기록하는 역할을 하며, 이사회의 과반수가 특정 방식으로 투표했음을 증명한다.
본 발명은 그러한 문제에 대해 누가 투표할 수 있는지를 변경하고 및/또는 투표 결과를 성공적으로 판단하는 데 필요한 투표(즉, 공유)의 수를 증가 또는 감소시키는 데 사용될 수 있다.
본 발명에 대한 또 다른 사용 사례는 디지털 인증서, 예컨대, X.509 표준에 의해 발행된 디지털 인증서 분야에 있다. 디지털 인증서는 일부 데이터에 대해 서명하는 서명을 포함한다. 데이터는 일반적으로 임의의 데이터일 수 있지만, 디지털 인증서에 포함된 데이터의 하나의 특정 예는 공개 키이다. 디지털 인증서의 공개 키는 종종 "인증된 공개 키"로 지칭된다. 디지털 인증서 발행자("인증 기관")는 공개 키의 소유자에 대해 하나 이상의 체크(예컨대, 고객 확인 체크(know-your-customer check))를 수행할 수 있고, 체크가 성공하면, 인증 기관은 인증된 공개 키를 포함하는 디지털 인증서를 발행한다. 사용자는, 예컨대, 인증된 공개 키에 대응하는 개인 키로 메시지에 서명함으로써, 인증된 공개 키를 사용하여 자신이 누구인지 증명할 수 있다.
인증 기관의 하나의 특정 용도는 인터넷 상에서 보안 브라우징을 위해 HTTPS에 사용되는 인증서에 서명하는 것이다. 또 다른 일반적인 용도는 전자 서명 문서에 사용하기 위해 국가 정부가 신분증을 발급하는 것에 있다. 인증 기관은 개인 키를 사용하여 공개 키(또는 증명할 임의의 다른 데이터)에 서명한다. 본 발명은 어떤 참가자가 개인 키의 공유를 갖는지를 변경하는 데 사용될 수 있다. 개인 키의 보안은 또한 개인 키의 임계값을 증가시킴으로써 개선될 수 있다.
본 발명 이면의 원칙은 한 그룹의 참가자가 개개의 블라인딩 공유에 기초하여 공유된 비밀의 새로운 공유를 생성하는 것이다. 블라인딩 공유는 공유된 비밀의 오래된 공유를 갖는 참가자가 오래된 공유의 블라인딩된(즉, 난독화된) 버전을 "중간 공유"의 형태로 "새로운" 그룹의 참가자에게 분배하는 것을 허용한다. 중간 공유는 결합(또는 달리 보간)되어, 한 그룹의 참가자 각각이 공유된 비밀의 그들 개개의 새로운 공유를 획득하기 위해 자신들의 블라인딩 공유를 적용(예컨대, 뺄셈 또는 덧셈)할 수 있는 중간을 형성한다. 본 발명이 주로 ECC 구현과 관련하여 설명되었지만, 본 발명은 다른 구현, 예컨대, RSA에도 동일하게 적용된다.
위의 실시예들은 단지 예로서만 설명되었다는 것이 인지될 것이다. 보다 일반적으로, 다음 스테이트먼트들 중 임의의 하나 이상에 따른 방법, 장치 또는 프로그램이 제공될 수 있다.
스테이트먼트 1.
공유된 비밀의 공유를 생성하는 컴퓨터 구현 방법으로서, 한 그룹의 참가자 각각은 공유된 비밀의 개개의 제1 비밀 공유를 갖고, 방법은 그룹의 제1 참가자에 의해 수행되고, 방법은:
공유된 블라인딩 비밀의 개개의 블라인딩 공유를 생성하는 단계;
제1 그룹의 참가자 각각으로부터 적어도 임계수의 개개의 중간 공유를 획득하는 단계 ― 각각의 개개의 중간 공유는 개개의 블라인딩 공유 및 개개의 제1 비밀 공유에 기초하여 생성됨 ― ;
획득된 중간 공유 각각에 기초하여 중간 값을 생성하는 단계; 및
공유된 비밀의 개개의 제2 비밀 공유를 생성하는 단계를 포함하고, 개개의 제2 비밀 공유는 중간 값 및 개개의 블라인딩 공유에 기초하여 생성된다.
스테이트먼트 2.
스테이트먼트 1의 방법에 있어서, 개개의 중간 공유 중 제1 중간 공유는 제1 참가자에 의해 생성된다.
스테이트먼트 3.
스테이트먼트 1 또는 스테이트먼트 2의 방법에 있어서, 공유된 비밀의 임계값은 공유된 블라인딩의 임계값과 동일하다.
달리 말하면, 제2 비밀 공유의 임계값은 제1 비밀 공유와 동일하다.
스테이트먼트 4.
스테이트먼트 1 또는 스테이트먼트 2의 방법에 있어서, 공유된 비밀의 임계값은 공유된 블라인딩 비밀의 임계값과 비교하여 상이하다.
즉, 제2 비밀 공유의 임계값은 제1 비밀 공유와 비교하여 상이하다.
스테이트먼트 5.
스테이트먼트 4의 방법에 있어서, 공유된 비밀의 임계값은 공유된 블라인딩 비밀의 임계값보다 크다.
스테이트먼트 6.
스테이트먼트 4의 방법에 있어서, 공유된 비밀의 임계값은 공유된 블라인딩 비밀의 임계값보다 작다.
스테이트먼트 7.
스테이트먼트 1 내지 스테이트먼트 6 중 어느 하나의 방법에 있어서, 공유된 블라인딩 비밀의 개개의 블라인딩 공유는 공동 검증 가능한 비밀 공유 방식을 사용하여 생성된다.
스테이트먼트 8.
스테이트먼트 7의 방법에 있어서, 공동 비밀 공유 방식을 사용하여 개개의 블라인딩 공유를 생성하는 것은:
제1 데이터 항목을 생성하는 것 ― 제1 데이터 항목은 제1 다항식임 ― ;
적어도 임계수의 참가자로부터 개개의 데이터 항목을 획득하는 것 ― 각각의 개개의 데이터 항목은 각각의 참가자에 의해 생성된 개개의 다항식임 ― ; 및
제1 데이터 항목 및 개개의 데이터 항목 각각에 기초하여 개개의 블라인딩 공유를 생성하는 것을 포함한다.
스테이트먼트 9.
스테이트먼트 7 또는 스테이트먼트 8의 방법에 있어서, 개개의 데이터 항목을 획득하는 것은 제1 참가자와 임계수의 참가자 각각 사이의 개개의 통신 채널을 통해 개개의 데이터 항목을 획득하는 것을 포함한다.
스테이트먼트 10.
스테이트먼트 7 내지 스테이트먼트 9 중 어느 하나의 방법에 있어서, 제1 다항식의 개개의 인스턴스를 적어도 임계수의 참가자 각각에 전송하는 단계를 포함하고, 제1 다항식의 개개의 인스턴스는 개개의 참가자에 기초한다.
스테이트먼트 11.
스테이트먼트 1 내지 스테이트먼트 7 중 어느 하나의 방법에 있어서, 공유된 블라인딩 비밀의 개개의 블라인딩 공유는 샤미르(Shamir)의 비밀 공유 방식을 사용하여 생성된다.
스테이트먼트 12.
스테이트먼트 1 내지 스테이트먼트 11 중 어느 하나의 방법에 있어서, 공유된 비밀의 개개의 제1 비밀 공유는 공동 검증 가능한 비밀 공유 방식을 사용하여 생성된다.
스테이트먼트 13.
스테이트먼트 1 내지 스테이트먼트 11 중 어느 하나의 방법에 있어서, 공유된 비밀의 개개의 제1 비밀 공유는 샤미르의 비밀 공유 방식을 사용하여 생성된다.
스테이트먼트 14.
스테이트먼트 1 내지 스테이트먼트 13 중 어느 하나의 방법에 있어서, 공유된 비밀은 개인 키이고, 개개의 제2 비밀 공유는 개인 키의 개개의 개인 키 공유이다.
스테이트먼트 15.
스테이트먼트 14의 방법에 있어서, 공유된 블라인딩 비밀은 블라인딩 개인 키이고, 중간 값은 중간 개인 키이고, 방법은:
개인 키에 대응하는 제1 공개 키를 생성하는 단계;
블라인딩 개인 키에 대응하는 제2 공개 키를 생성하는 단계;
중간 개인 키에 대응하는 제3 공개 키를 생성하는 단계;
제1 공개 키 및 제2 공개 키에 기초하여 제1 값을 생성하는 단계; 및
제1 값이 제3 공개 키와 일치하는지에 기초하여, 공유된 비밀의 제2 비밀 공유가 정확하게 생성되었다는 것을 검증하는 단계를 포함한다.
스테이트먼트 16.
스테이트먼트 15의 방법에 있어서,
제2 비밀 공유가 정확하게 생성되지 않았다는 결정에 응답하여, 다른 개개의 참가자 중 한 명, 일부 또는 모두에 대해,
참가자의 개개의 제1 비밀 공유에 대응하는 개개의 제1 공개 키를 획득하는 단계;
참가자의 개개의 블라인딩 공유에 대응하는 개개의 제2 공개 키를 획득하는 단계;
참가자의 개개의 중간 공유에 대응하는 개개의 제3 공개 키를 획득하는 단계;
참가자의 개개의 제1 공개 키 및 제2 공개 키에 기초하여 개개의 제1 값을 생성하는 단계; 및
개개의 제1 값이 개개의 제3 공개 키와 일치하는지에 기초하여, 공유된 비밀의 개개의 제2 비밀 공유가 참가자에 의해 정확하게 생성되었다는 것을 검증하는 단계를 수행하는 단계를 포함한다.
스테이트먼트 17.
스테이트먼트 14 내지 스테이트먼트 16 중 어느 하나의 방법에 있어서,
메시지를 획득하는 단계; 및
메시지 및 개인 키의 개개의 공유에 기초하여 디지털 서명 공유를 생성하는 단계를 포함한다.
스테이트먼트 18.
스테이트먼트 14 내지 스테이트먼트 16 중 어느 하나의 방법에 있어서,
메시지를 획득하는 단계;
제1 메시지-독립 구성요소 및 제1 메시지-종속 구성요소를 생성하는 단계 ― 메시지-독립 구성요소는 개개의 개인 키 공유에 기초하여 생성되고, 메시지-종속 구성요소는 메시지에 기초하여 생성됨 ― ;
제1 메시지 독립 구성요소로 하여금 조정자에게 이용 가능하게 하는 단계; 및
제1 서명 공유로 하여금 적어도 임계수의 서명 공유에 기초하여 서명을 생성하도록 조정자에게 이용 가능하게 하는 단계를 포함하고, 제1 서명 공유는 적어도 메시지-종속 구성요소를 포함한다.
스테이트먼트 19.
컴퓨터 장비로서,
하나 이상의 메모리 유닛을 포함하는 메모리; 및
하나 이상의 프로세싱 유닛을 포함하는 프로세싱 장치를 포함하고, 메모리는 프로세싱 장치 상에서 실행되도록 배열된 코드를 저장하고, 코드는 프로세싱 장치 상에서 실행될 때 스테이트먼트 1 내지 18 중 어느 하나의 방법을 수행하도록 구성된다.
스테이트먼트 20.
컴퓨터 판독 가능 스토리지 상에서 구현된 컴퓨터 프로그램으로서, 컴퓨터 프로그램은, 컴퓨터 장비 상에서 실행될 때, 스테이트먼트 1 내지 스테이트먼트 18 중 어느 하나의 방법을 수행하도록 구성된다.
본원에서 개시된 다른 양상에 따라, 제1 참가자 및 조정자의 액션을 포함하는 방법이 제공될 수 있다.
본원에서 개시된 다른 양상에 따라, 제1 참가자 및 조정자의 컴퓨터 장비를 포함하는 시스템이 제공될 수 있다.
개시된 기술들의 다른 변형들 또는 사용 사례들은 본원에서의 개시가 주어지면 당업자에게 명백해질 수 있다. 본 개시의 범위는 설명된 실시예에 의해 제한되는 것이 아니라 첨부된 청구들에 의해서만 제한된다.
Claims (20)
- 공유된 비밀(shared secret)의 공유(share)를 생성하는 컴퓨터 구현 방법으로서,
한 그룹의 참가자 각각은 상기 공유된 비밀의 개개의 제1 비밀 공유(secret share )를 갖고, 상기 방법은 상기 그룹의 제1 참가자에 의해 수행되고,
상기 방법은:
공유된 블라인딩 비밀(shared blinding secret)의 개개의 블라인딩 공유(blinding share)를 생성하는 단계;
상기 제1 그룹의 참가자 각각으로부터 적어도 임계수의 개개의 중간 공유(intermediary share)를 획득하는 단계 ― 각각의 개개의 중간 공유는 개개의 블라인딩 공유 및 개개의 제1 비밀 공유에 기초하여 생성됨 ― ;
상기 획득된 중간 공유 각각에 기초하여 중간 값(intermediary value)을 생성하는 단계; 및
상기 공유된 비밀의 개개의 제2 비밀 공유를 생성하는 단계를 포함하고,
상기 개개의 제2 비밀 공유는 상기 중간 값 및 상기 개개의 블라인딩 공유에 기초하여 생성되는,
컴퓨터 구현 방법. - 제1 항에 있어서,
상기 개개의 중간 공유 중 제1 중간 공유는 상기 제1 참가자에 의해 생성되는,
컴퓨터 구현 방법. - 제1 항 또는 제2 항에 있어서,
상기 공유된 비밀의 임계값은 상기 공유된 블라인딩의 임계값과 동일한,
컴퓨터 구현 방법. - 제1 항 또는 제2 항에 있어서,
상기 공유된 비밀의 임계값은 상기 공유된 블라인딩 비밀의 임계값과 비교하여 상이한,
컴퓨터 구현 방법. - 제4 항에 있어서,
상기 공유된 비밀의 임계값은 상기 공유된 블라인딩 비밀의 임계값보다 큰,
컴퓨터 구현 방법. - 제4 항에 있어서,
상기 공유된 비밀의 임계값은 상기 공유된 블라인딩 비밀의 임계값보다 작은,
컴퓨터 구현 방법. - 제1 항 내지 제6 항 중 어느 한 항에 있어서,
상기 공유된 블라인딩 비밀의 개개의 블라인딩 공유는 공동 검증 가능한 비밀 공유 방식(joint verifiable secret sharing scheme)을 사용하여 생성되는,
컴퓨터 구현 방법. - 제7 항에 있어서,
상기 공동 비밀 공유 방식을 사용하여 상기 개개의 블라인딩 공유를 생성하는 것은:
제1 데이터 항목(data item)을 생성하는 것 ― 상기 제1 데이터 항목은 제1 다항식(polynomial)임 ― ;
적어도 임계수의 참가자로부터 개개의 데이터 항목을 획득하는 것 ― 각각의 개개의 데이터 항목은 개개의 참가자에 의해 생성된 개개의 다항식임 ― ; 및
상기 제1 데이터 항목 및 상기 개개의 데이터 항목 각각에 기초하여 상기 개개의 블라인딩 공유를 생성하는 것을 포함하는,
컴퓨터 구현 방법. - 제7 항 또는 제8 항에 있어서,
상기 개개의 데이터 항목을 획득하는 것은 상기 제1 참가자와 상기 임계수의 참가자 각각 사이의 개개의 통신 채널을 통해 상기 개개의 데이터 항목을 획득하는 것을 포함하는,
컴퓨터 구현 방법. - 제7 항 내지 제9 항 중 어느 한 항에 있어서,
상기 제1 다항식의 개개의 인스턴스(instance)를 적어도 상기 임계수의 참가자 각각에 전송하는 단계를 포함하고, 상기 제1 다항식의 개개의 인스턴스는 개개의 참가자에 기초하는,
컴퓨터 구현 방법. - 제1 항 내지 제7 항 중 어느 한 항에 있어서,
상기 공유된 블라인딩 비밀의 개개의 블라인딩 공유는 샤미르(Shamir)의 비밀 공유 방식을 사용하여 생성되는,
컴퓨터 구현 방법. - 제1 항 내지 제11 항 중 어느 한 항에 있어서,
상기 공유된 비밀의 개개의 제1 비밀 공유는 공동 검증 가능한 비밀 공유 방식을 사용하여 생성되는,
컴퓨터 구현 방법. - 제1 항 내지 제11 항 중 어느 한 항에 있어서,
상기 공유된 비밀의 개개의 제1 비밀 공유는 샤미르의 비밀 공유 방식을 사용하여 생성되는,
컴퓨터 구현 방법. - 제1 항 내지 제13 항 중 어느 한 항에 있어서,
상기 공유된 비밀은 개인 키(private key)이고, 상기 개개의 제2 비밀 공유는 상기 개인 키의 개개의 개인 키 공유인,
컴퓨터 구현 방법. - 제14 항에 있어서,
상기 공유된 블라인딩 비밀은 블라인딩 개인 키이고, 상기 중간 값은 중간 개인 키이고,
상기 방법은:
상기 개인 키에 대응하는 제1 공개 키(public key)를 생성하는 단계;
상기 블라인딩 개인 키에 대응하는 제2 공개 키를 생성하는 단계;
상기 중간 개인 키에 대응하는 제3 공개 키를 생성하는 단계;
상기 제1 공개 키 및 상기 제2 공개 키에 기초하여 제1 값을 생성하는 단계; 및
상기 제1 값이 상기 제3 공개 키와 일치하는지에 기초하여, 상기 공유된 비밀의 제2 비밀 공유가 정확하게 생성되었다는 것을 검증하는 단계를 포함하는,
컴퓨터 구현 방법. - 제15 항에 있어서,
상기 제2 비밀 공유가 정확하게 생성되지 않았다는 결정에 응답하여, 다른 개개의 참가자 중 한 명, 일부 또는 모두에 대해,
상기 참가자의 개개의 제1 비밀 공유에 대응하는 개개의 제1 공개 키를 획득하는 단계;
상기 참가자의 개개의 블라인딩 공유에 대응하는 개개의 제2 공개 키를 획득하는 단계;
상기 참가자의 개개의 중간 공유에 대응하는 개개의 제3 공개 키를 획득하는 단계;
상기 참가자의 개개의 제1 공개 키 및 제2 공개 키에 기초하여 개개의 제1 값을 생성하는 단계; 및
상기 개개의 제1 값이 상기 개개의 제3 공개 키와 일치하는지에 기초하여, 상기 공유된 비밀의 개개의 제2 비밀 공유가 상기 참가자에 의해 정확하게 생성되었다는 것을 검증하는 단계를 수행하는 단계를 포함하는,
컴퓨터 구현 방법. - 제14 항 내지 제16 항 중 어느 한 항에 있어서,
메시지를 획득하는 단계; 및
상기 메시지 및 상기 개인 키의 개개의 공유에 기초하여 디지털 서명 공유(digital signature share)를 생성하는 단계를 포함하는,
컴퓨터 구현 방법. - 제14 항 내지 제16 항 중 어느 한 항에 있어서,
메시지를 획득하는 단계;
제1 메시지-독립 구성요소(message-independent component) 및 제1 메시지-종속 구성요소(message-dependent component)를 생성하는 단계 ― 상기 메시지-독립 구성요소는 상기 개개의 개인 키 공유에 기초하여 생성되고, 상기 메시지-종속 구성요소는 상기 메시지에 기초하여 생성됨 ― ;
상기 제1 메시지 독립 구성요소로 하여금 조정자에게 이용 가능하게 하는 단계; 및
상기 제1 서명 공유로 하여금 적어도 상기 임계수의 서명 공유에 기초하여 상기 서명을 생성하도록 상기 조정자에게 이용 가능하게 하는 단계를 포함하고,
상기 제1 서명 공유는 적어도 상기 메시지-종속 구성요소를 포함하는,
컴퓨터 구현 방법. - 컴퓨터 장비로서,
하나 이상의 메모리 유닛을 포함하는 메모리; 및
하나 이상의 프로세싱 유닛을 포함하는 프로세싱 장치를 포함하고, 상기 메모리는 상기 프로세싱 장치 상에서 실행되도록 배열된 코드를 저장하고, 상기 코드는 프로세싱 장치 상에서 실행될 때 제1 항 내지 제18 항 중 어느 한 항의 방법을 수행하도록 구성되는,
컴퓨터 장비. - 컴퓨터 판독 가능 저장소 상에서 구현되고, 컴퓨터 장비 상에서 실행될 때, 제1 항 내지 제18 항 중 어느 한 항의 방법을 수행하도록 구성된 컴퓨터 프로그램.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2009062.7 | 2020-06-15 | ||
GB2009062.7A GB2596072A (en) | 2020-06-15 | 2020-06-15 | Generating secret shares |
PCT/EP2021/062941 WO2021254702A1 (en) | 2020-06-15 | 2021-05-17 | Generating secret shares |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230024369A true KR20230024369A (ko) | 2023-02-20 |
Family
ID=71835506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020237001201A KR20230024369A (ko) | 2020-06-15 | 2021-05-17 | 비밀 공유의 생성 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230246825A1 (ko) |
EP (1) | EP4136800A1 (ko) |
JP (1) | JP2023530141A (ko) |
KR (1) | KR20230024369A (ko) |
CN (1) | CN115804059A (ko) |
GB (1) | GB2596072A (ko) |
WO (1) | WO2021254702A1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254410B (zh) * | 2021-05-29 | 2024-02-02 | 陕西师范大学 | 一种可证明安全的可公开验证多级多秘密共享方法及系统 |
GB2614913A (en) | 2022-01-25 | 2023-07-26 | Nchain Licensing Ag | Generating shared private keys |
CN115694814B (zh) * | 2023-01-03 | 2023-04-28 | 暨南大学 | 一种分布式物联网数据安全共享设计方法及系统 |
CN116401715B (zh) * | 2023-06-08 | 2023-08-22 | 中国移动紫金(江苏)创新研究院有限公司 | 基于区块链的医疗数据流通隐私计算方法及系统 |
CN117318940B (zh) * | 2023-11-27 | 2024-02-23 | 山东师范大学 | 基于认证秘密分享的多方协同签名方法及系统 |
CN117811733A (zh) * | 2024-02-29 | 2024-04-02 | 浙江毫微米科技有限公司 | 基于秘密共享算法的任务确认完成方法及相关装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9813244B1 (en) * | 2015-12-30 | 2017-11-07 | EMC IP Holding Company LLC | Distributed proactive password-based secret sharing |
BR112018016234A2 (pt) | 2016-02-23 | 2019-01-02 | Nchain Holdings Ltd | método implementado por computador para controlar o acesso a um recurso, sistemas baseados em computador e método para controle de acesso a uma carteira digital |
JP7012741B2 (ja) * | 2017-04-11 | 2022-01-28 | エヌチェーン ホールディングス リミテッド | ブロックチェーン上の迅速な分散型総意 |
US11481761B2 (en) * | 2018-06-03 | 2022-10-25 | VVOW Company Limited | Peer-to-peer cryptocurrency and crypto asset trading platform |
-
2020
- 2020-06-15 GB GB2009062.7A patent/GB2596072A/en active Pending
-
2021
- 2021-05-17 JP JP2022577363A patent/JP2023530141A/ja active Pending
- 2021-05-17 CN CN202180042714.7A patent/CN115804059A/zh active Pending
- 2021-05-17 WO PCT/EP2021/062941 patent/WO2021254702A1/en unknown
- 2021-05-17 EP EP21725197.4A patent/EP4136800A1/en active Pending
- 2021-05-17 US US18/009,322 patent/US20230246825A1/en active Pending
- 2021-05-17 KR KR1020237001201A patent/KR20230024369A/ko active Search and Examination
Also Published As
Publication number | Publication date |
---|---|
US20230246825A1 (en) | 2023-08-03 |
CN115804059A (zh) | 2023-03-14 |
EP4136800A1 (en) | 2023-02-22 |
JP2023530141A (ja) | 2023-07-13 |
WO2021254702A1 (en) | 2021-12-23 |
GB202009062D0 (en) | 2020-07-29 |
GB2596072A (en) | 2021-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20230024369A (ko) | 비밀 공유의 생성 | |
EP3496331A1 (en) | Two-party signature device and method | |
US20230319103A1 (en) | Identifying denial-of-service attacks | |
EP4144040A1 (en) | Generating shared private keys | |
TW202318833A (zh) | 臨界簽章方案 | |
US20230163977A1 (en) | Digital signatures | |
KR20240045231A (ko) | 디지털 서명 셰어의 생성 | |
WO2023072502A1 (en) | Generating shared keys | |
WO2023036528A1 (en) | Generating shared cryptographic keys | |
US11870914B2 (en) | Digital signatures | |
KR20240045226A (ko) | 디지털 서명들의 생성 | |
KR20240046201A (ko) | 디지털 서명들의 생성 | |
EP4331176A1 (en) | Nested threshold signatures | |
WO2023036534A1 (en) | Generating shared cryptographic keys |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |