KR20210063378A - 공통 비밀을 공유하는 컴퓨터 구현 시스템 및 방법 - Google Patents
공통 비밀을 공유하는 컴퓨터 구현 시스템 및 방법 Download PDFInfo
- Publication number
- KR20210063378A KR20210063378A KR1020217011769A KR20217011769A KR20210063378A KR 20210063378 A KR20210063378 A KR 20210063378A KR 1020217011769 A KR1020217011769 A KR 1020217011769A KR 20217011769 A KR20217011769 A KR 20217011769A KR 20210063378 A KR20210063378 A KR 20210063378A
- Authority
- KR
- South Korea
- Prior art keywords
- node
- common
- key
- message
- private key
- 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/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/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/065—Network architectures or network communication protocols for network security for supporting key management in a packet data network for group communications
-
- 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/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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Hardware Redundancy (AREA)
Abstract
복수의 노드(A, B, C) 사이에서 비트코인 블록체인과 같은 블록체인 트랜잭션을 위한 보안 통신을 가능하게 하는 제1 공통 비밀을 공유하는 방법이 개시된다. 방법은 적어도 하나의 제1 노드(A)에 대해 복수의 제2 공통 비밀(SAPC, SAPB)을 결정하는 것을 포함하며, 여기에서 각각의 제2 공통 비밀은 제1 노드 및 각 제2 노드(B)에 공통이고, 제1 노드에서 제1 노드의 제1 개인 키(SA)와 제2 노드의 제1 공개 키(PC, PB)를 기초로 결정되고, 제2 노드에서 제2 노드의 제1 개인 키(SB, SC)와 제1 노드의 제1 공개 키(PA)를 기초로 결정된다. 제2 노드(B)와 제3 노드(C)에 공통인 제3 공통 비밀(SBPC, SCPB)이 제2 노드에 대해 결정된다. 방법은 제1 노드에서 제1 노드에 알려진 제1 공통 비밀의 지분을 암호화하고, 암호화된 지분을 제2 노드로 전송하는 것을 포함한다. 방법은, 제1 공통 비밀에 접근하기 위하여 복수의 노드 각각이 제1 공통 비밀의 지분의 임계 수에 도달할 수 있도록, 제1 노드에서, 제2 노드로부터, 제1 공통 비밀의 암호화된 지분을 수신하는 것을 더 포함한다.
Description
이 개시는 일반적으로 복수의 노드 간에 공통 비밀을 공유하는 방법에 관한 것으로, 특히 적어도 3 개의 노드 간에 공통 비밀을 공유하는 방법에 관한 것이다. 개시는 노드 사이의 보안 통신을 가능하게 하는 암호화에서의 사용에 특히 적합하지만 이에 제한되지 않으며, 디지털 지갑, 블록체인(예를 들어, 비트코인) 기술 및 개인 디바이스 보안과 함께 사용하는 데 적합할 수 있지만 이에 제한되지 않는다.
이 문서에서 우리는 모든 형태의 전자, 컴퓨터 기반, 분산 원장을 포함하기 위하여 '블록체인'이라는 용어를 사용한다. 이는 합의 기반(consensus-based) 블록체인 및 트랜잭션 체인 기술, 허가 및 비허가 원장, 공유 원장 및 그 변형을 포함한다. 블록체인 기술의 가장 널리 알려진 응용은 비트코인 원장이지만, 다른 블록체인 구현이 제안되고 개발되었다. 비트코인은 편의 및 예시의 목적으로 본원에서 언급될 수 있지만, 개시는 비트코인 블록체인과 함께 사용하는 것으로 제한되지 않으며, 대안적인 블록체인 구현 및 프로토콜이 본 개시의 범위 내에 속한다는 점에 유의하여야 한다. 용어 "사용자"는 본원에서 사람 또는 프로세서 기반 자원을 지칭할 수 있다.
블록체인은 트랜잭션으로 구성된 블록으로 구성된 컴퓨터 기반 비중앙식 분산 시스템으로 구현되는 P2P 전자 원장이다. 각 트랜잭션은 블록체인 시스템 참여자 사이의 디지털 자산 제어 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력과 적어도 하나의 출력을 포함한다. 각 블록에는 이전 블록의 해시가 포함되어 블록이 함께 연결되어 처음부터 블록체인에 기록된 모든 트랜잭션에 대한 영구적이고 변경 불가능한 기록을 생성한다. 트랜잭션에는 그 입력 및 출력에 내장된 스크립트로 알려진 작은 프로그램이 포함되며, 이는 트랜잭션의 출력에 접근할 수 있는 방법과 대상을 지정한다. 비트코인 플랫폼에서, 이러한 스크립트는 스택 기반 스크립트 언어를 사용하여 작성된다.
트랜잭션이 블록체인에 기록되려면, "검증"되어야 한다. 네트워크 노드(채굴자)는 각 트랜잭션이 유효한지 확인하기 위한 작업을 수행하며, 유효하지 않은 트랜잭션은 네트워크에서 거부된다. 노드에 설치된 소프트웨어 클라이언트는 잠금 및 잠금 해제 스크립트를 실행하여 사용되지 않은 트랜잭션(UTXO)에 대하여 이 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 참(TRUE)으로 평가되면, 트랜잭션은 유효하고 트랜잭션이 블록체인에 기록된다. 따라서, 트랜잭션이 블록체인에 기록되려면, i) 트랜잭션을 수신하는 제1 노드에 의해 검증되어야 하며-트랜잭션이 검증되면, 노드는 이를 네트워크의 다른 노드에 중계함 -, ii) 채굴자가 구축한 새로운 블록에 추가되어야 하며, iii) 채굴, 즉 과거 트랜잭션의 공개 원장에 추가되어야 한다.
블록체인 기술이 암호 화폐 구현의 사용에 대해 가장 널리 알려져 있지만, 디지털 기업가들은 새로운 시스템을 구현하기 위하여 비트코인이 기반으로 하는 암호화 보안 시스템과 블록체인에 저장할 수 있는 데이터를 모두 사용하는 방법을 모색하기 시작하였다. 블록체인이 암호 화폐 영역에 국한되지 않는 자동화된 작업과 프로세스에 사용될 수 있다면 매우 유리할 것이다. 이러한 해결책은 블록체인의 이점(예를 들어, 이벤트에 대한 영구 변조 방지 기록, 분산 처리 등)을 이용하면서 그 응용에서 더 다양하게 활용할 수 있다.
국제 특허 출원 WO 2017/145016은 노드 사이의 보안 통신이 가능하도록 하기 위하여 두 노드 사이에서 공통 비밀을 공유하는 방법을 개시한다. 그러나, 2 개 이상의 노드 사이에서 공통 비밀을 공유하는 방법을 제공하는 것이 바람직하다.
이러한 개선된 해결책이 이제 고안되었다.
따라서, 본 개시에 따라, 첨부된 청구 범위에 정의된 바와 같은 방법이 제공된다.
개시에 따라 복수의 노드 간에 제1 공통 비밀을 공유하는 방법이 제공될 수 있으며, 각각의 상기 노드는 상기 복수의 노드에 공통인 암호화 시스템의 각 제1 공개 키 및 각 제1 개인 키를 갖는 각 비대칭 암호화 제1 키 쌍과 연관되고, 제1 공통 비밀은 각각의 상기 노드의 제1 개인 키에 기초하며, 방법은:
적어도 하나의 제1 노드에 대하여, 복수의 제2 공통 비밀을 결정하는 것-각각의 상기 제2 공통 비밀은 상기 제1 노드 및 각 제2 노드에 공통이며, 상기 제1 노드에서 제1 노드의 제1 개인 키 및 제2 노드의 제1 공개 키에 기초하여 결정되고, 제2 노드에서 제2 노드의 제1 개인 키 및 제1 노드의 제1 공개 키에 기초하여 결정되며, 제1 공통 비밀의 복수의 지분(shares)은 임계 수의 상기 지분으로 상기 제1 공통 비밀에 접근할 수 있지만 상기 임계 수 미만의 지분은 접근할 수 없도록 각각 적어도 하나의 각 제2 공통 비밀에 기초함;
적어도 하나의 제2 노드에 대하여, 적어도 하나의 각 제3 공통 비밀을 결정하는 것-그 또는 각각의 각 제3 공통 비밀은 상기 제2 노드 및 각 제3 노드에 대해 공통이며, 상기 제2 노드에서 제2 노드의 제1 개인 키 및 제3 노드의 제1 공개 키에 기초하여 결정되고, 제3 노드에서 제3 노드의 제1 개인 키 및 제2 노드의 제1 공개 키에 기초하여 결정되며, 제1 공통 비밀의 적어도 하나의 지분은 적어도 하나의 각 상기 제3 공통 비밀에 기초함;
적어도 하나의 상기 제1 노드에서, 암호화 시스템의 각 비대칭 암호화 제2 키 쌍의 제2 개인 키에 기초하여, 상기 제1 노드에 알려진 상기 제1 공통 비밀의 적어도 하나의 지분을 암호화하는 것-상기 제2 키 쌍은 상기 제1 노드에 알려진 각 상기 제2 공통 비밀에 기초함;
적어도 하나의 상기 암호화된 지분을 상기 제1 노드로부터 상기 제2 키 쌍이 기초한 제2 공통 비밀이 공통인 각 상기 제2 노드로 전송하는 것; 및
적어도 하나의 상기 제1 노드에서, 적어도 하나의 상기 제2 노드로부터, 상기 제2 노드에 알려지고 상기 암호화 시스템의 각 비대칭 암호화 제2 키 쌍의 제2 개인 키에 기초하여 암호화된 상기 제1 비밀의 적어도 하나의 각 지분을 수신하는 것-상기 제2 키 쌍은 각각의 상기 복수의 노드가 상기 제1 공통 비밀의 상기 임계 수의 지분에 도달할 수 있도록, 상기 제1 노드 및 상기 제2 노드에 공통인 제2 공통 비밀에 기초함-을 포함한다.
이는 복수의 노드 사이에서 공통 비밀을 공유하는 효율적인 방법을 제공하는 이점을 제공하며, 노드 간의 보안 통신의 기반으로 사용될 수 있다.
복수의 상기 암호화된 지분은 대응하는 상기 노드에 알려진 복수의 상기 공통 비밀의 조합에 각각 기초할 수 있다.
이는 효율성을 개선하는 이점을 제공하는 동시에 개별 공통 비밀이 제3 자에게 가려질(obscured) 수 있도록 하여, 예를 들어 공유 비밀이 블록체인 트랜잭션 스크립트에 포함된 경우 프라이버시(privacy)를 개선한다.
복수의 상기 암호화된 지분은 대응하는 상기 노드에 알려진 복수의 상기 공통 비밀의 적어도 하나의 각 XOR 조합에 각각 기초할 수 있다.
이는 처리가 간단하다는 이점을 제공하여, 수신자 노드에 의한 제1 공통 비밀의 단순 복구를 가능하게 한다.
복수의 상기 암호화된 지분은 대응하는 상기 노드에 알려진 복수의 상기 공통 비밀의 곱셈 조합에 기초할 수 있다.
곱셈 조합은(x 1 . x 2 . x 3 ) mod n의 형태일 수 있으며, x 1 , x 2 , x 3 는 노드에 알려진 공통 비밀이고, n은 암호화 시스템의 차수이다.
복수의 상기 지분은 제1 다항 함수의 지분일 수 있으며, 제1 비밀은 적어도 임계 수의 상기 지분의 다항식 보간에 의해 결정될 수 있다.
방법은:
상기 제1 공통 비밀의 적어도 임계 수의 지분을 수신하는 것-각각의 상기 지분은 제1 다항 함수의 각 값에 대응함; 및
상기 제1 공통 비밀을 결정하기 위하여, 복수의 알려진 값의 상기 지분으로부터 제1 다항 함수의 계수를 결정함으로써, 상기 제1 다항 함수를 결정하는 것을 더 포함할 수 있다.
상기 제1 다항 함수를 결정하는 단계는 오류 수정 알고리즘을 실행하는 것을 포함할 수 있다.
상기 제1 다항 함수를 결정하는 단계는 Berlekamp-Welch 디코딩 알고리즘을 실행하는 것을 포함할 수 있다.
상기 제1 다항 함수를 결정하는 단계는:
오류 위치(error locator) 다항 함수 및 제2 다항 함수를 정의하는 것-제2 다항 함수는 상기 제1 다항 함수와 상기 오류 위치 다항 함수의 곱임 -, 복수의 알려진 값의 상기 부분 서명으로부터 상기 제2 다항 함수 및 상기 오류 위치 다항 함수의 계수를 결정하는 것, 및 제1 공통 비밀을 결정하기 위하여, 상기 제2 다항 함수 및 상기 오류 위치 다항 함수로부터 상기 제1 다항 함수를 결정하는 것을 포함할 수 있다.
적어도 하나의 상기 암호화 시스템은 동형(homomorphic) 속성을 가질 수 있다.
이는 방법이 더 유연하고 효율적으로 작동할 수 있게 하는 이점을 제공한다.
적어도 하나의 상기 암호화 시스템은 타원 곡선 암호화 시스템일 수 있다.
이는 주어진 키 크기에 대해 높은 보안의 이점을 제공한다.
방법은 적어도 제1 노드 마스터 개인 키(V1C) 및 제1 및 제2 노드와 공통인 결정성 키(DK)에 기초하여 적어도 하나의 상기 제1 노드의 상기 제1 개인 키를 결정하는 것;
-제2 노드의 마스터 공개 키(P1S) 및 공통 암호화 시스템을 사용하는 결정성 키(DK)의 암호화에 기초하여 적어도 하나의 상기 제2 노드의 상기 제1 공개 키(P2S)를 결정하는 것을 더 포함할 수 있다.
결정성 키(DK)는 메시지(M)에 기초할 수 있다.
방법은:
-메시지(M) 및 제1 노드의 제1 개인 키(V2C)에 기초하여 제1 서명된 메시지(SM1)를 생성하는 것; 및
-통신 네트워크를 통하여, 제1 서명된 메시지(SM1)를 제2 노드(S)로 전송하는 것을 더 포함할 수 있으며,
제1 서명된 메시지(SM1)는 제1 노드(C)를 인증하기 위하여 제1 노드의 제1 공개 키(P2C)로 검증될 수 있다.
방법은:
-통신 네트워크를 통하여, 제2 노드(S)로부터 제2 서명된 메시지(SM2)를 수신하는 것;
-제2 노드의 제1 공개 키(P2S)로 제2 서명된 메시지(SM2)를 검증하는 것; 및
-제2 서명된 메시지(SM2)의 검증 결과에 기초하여 제2 노드(S)를 인증하는 것을 더 포함할 수 있으며,
제2 서명된 메시지(SM2)는 메시지(M) 또는 제2 메시지(M2), 및 제2 노드의 제1 개인 키(V2S)에 기초하여 생성된 것이다.
방법은:
-메시지(M)를 생성하는 것; 및
-통신 네트워크를 통하여, 메시지(M)를 제2 노드(S)로 전송하는 것을 더 포함할 수 있다.
방법은:
-통신 네트워크를 통하여, 제2 노드(S)로부터 메시지(M)를 수신하는 것을 더 포함할 수 있다.
방법은:
- 통신 네트워크를 통하여, 다른 노드로부터 메시지(M)를 수신하는 것을 더 포함할 수 있다.
방법은:
-데이터 저장소 및/또는 제1 노드(C)와 연관된 입력 인터페이스로부터 메시지(M)를 수신하는 것을 포함할 수 있다.
암호화 시스템은 타원 곡선 암호화(elliptic curve cryptography; ECC) 시스템일 수 있으며, 제1 노드 마스터 공개 키(P1C) 및 제2 노드 마스터 공개 키(P1S)는 각 제1 노드 마스터 개인 키(V1C) 및 제2 노드 마스터 개인 키(V1S) 및 생성기(G)의 타원 곡선 점 곱셈에 기초할 수 있다.
방법은:
-통신 네트워크를 통하여 제2 노드 마스터 공개 키(P1S)를 수신하는 단계; 및
-제1 노드(C)와 연관된 데이터 저장소에 제2 노드 마스터 공개 키(P1S)를 저장하는 단계를 더 포함할 수 있다.
방법은:
-제1 노드(C)에서, 제1 노드 마스터 개인 키(V1C) 및 제1 노드 마스터 공개 키(P1C)를 생성하는 단계;
-통신 네트워크를 통하여, 제1 노드 마스터 공개 키(P1C)를 제2 노드(S) 및/또는 다른 노드로 전송하는 단계; 및
-제1 노드(C)와 연관된 제1 데이터 저장소에 제1 노드 마스터 개인 키(V1C)를 저장하는 단계를 더 포함할 수 있다.
방법은:
-통신 네트워크를 통하여, 적어도 하나의 상기 공통 비밀(CS)을 결정하는 방법을 위하여 공통 암호화 시스템을 사용함을 나타내는 통지를 제2 노드로 전송하는 것을 더 포함할 수 있으며,
제1 노드 마스터 개인 키(V1C) 및 제1 노드 마스터 공개 키(P1C)를 생성하는 단계는:
-공통 암호화 시스템에서 지정된 허용 범위 내의 임의의 정수에 기초하여 제1 노드 마스터 개인 키(V1C)를 생성하는 것; 및
-제1 노드 마스터 개인 키(V1C)의 암호화에 기초하여 제1 노드 마스터 공개 키(P1C)를 결정하는 것을 포함한다.
공통 암호화 시스템은 공통 생성기(G)가 있는 타원 곡선 암호화(ECC) 시스템일 수 있으며, 제1 노드 마스터 공개 키(P1C)는 다음 공식에 따라 제1 노드 마스터 개인 키(V1C) 및 공통 생성기(G)의 타원 곡선 점 곱셈에 기초하여 결정될 수 있다.
P1C= V1C x G
방법은:
-메시지(M)의 해시를 결정하는 것에 기초하여 결정성 키(DK)를 결정하는 것을 더 포함할 수 있으며,
제1 노드의 제1 개인 키(V2C)를 결정하는 단계는 다음 공식에 따라 제1 노드 마스터 개인 키(V1C) 및 결정성 키(DK)의 스칼라 덧셈에 기초하고,
V2C = V1C + DK
제2 노드의 제1 공개 키(P2S)를 결정하는 단계는 다음 공식에 따라 결정성 키(DK)와 공통 생성기(G)의 타원 곡선 점 곱셈이 타원 곡선 점 덧셈된 제2 노드 마스터 공개 키(P1S)에 기초한다.
P2S = P1S + DK x G
결정성 키(DK)는 이전 결정성 키의 해시를 결정하는 것에 기초할 수 있다.
개시는 또한 복수의 노드 사이의 보안 통신 방법을 제공할 수 있으며, 방법은:
-위에서 정의된 방법에 의해 제1 공통 비밀을 결정하는 것;
-공통 비밀에 기초하여 대칭 키를 결정하는 것;
-대칭 키를 사용하여, 제1 통신 메시지를 암호화된 제1 통신 메시지로 암호화하는 것; 및
-통신 네트워크를 통하여, 상기 복수의 노드 중 하나로부터 상기 복수의 노드 중 다른 노드로 암호화된 제1 통신 메시지를 전송하는 것을 포함한다.
방법은:
-통신 네트워크를 통하여, 상기 복수의 노드 중 한 노드로부터 암호화된 제2 통신 메시지를 수신하는 것; 및
-대칭 키를 사용하여, 암호화된 제2 통신 메시지를 제2 통신 메시지로 해독하는 것을 더 포함할 수 있다.
개시는 복수의 노드 사이에서 온라인 트랜잭션을 수행하는 방법을 더 제공할 수 있으며, 방법은:
- 위에서 정의된 방법에 의해 제1 공통 비밀을 결정하는 것;
-제1 공통 비밀에 기초하여 대칭 키를 결정하는 것;
-대칭 키를 사용하여, 제1 트랜잭션 메시지를 암호화된 제1 트랜잭션 메시지로 암호화하는 것; 및
-통신 네트워크를 통하여, 상기 복수의 노드 중 제1 노드로부터 상기 복수의 노드 중 다른 노드로 암호화된 제1 트랜잭션 메시지를 전송하는 것을 포함한다.
개시는 또한:
프로세서, 및
프로세서에 의한 실행의 결과로서, 시스템이 본원에 설명된 컴퓨터 구현 방법의 임의의 실시예를 수행하게 하는 실행 가능한 명령을 포함하는 메모리를 포함하는 시스템을 제공한다.
개시는 또한 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템이 본원에 설명된 컴퓨터 구현 방법의 일 실시예를 적어도 수행하게 하는 실행 가능한 명령을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 제공한다.
본 개시의 이들 및 다른 양상은 본원에 설명된 실시예로부터 명백하며 이를 참조하여 설명될 것이다. 이제 본 개시의 실시예가, 단지 예로서, 그리고 첨부된 도면을 참조하여 설명될 것이다.
도 1은 제1 노드 및 제2 노드에 대한 공통 비밀을 결정하기 위한 예시적인 시스템의 개략도이다.
도 2는 공통 비밀을 결정하기 위한 컴퓨터 구현 방법의 흐름도이다.
도 3은 제1 및 제2 노드를 등록하기 위한 컴퓨터 구현 방법의 흐름도이다.
도 4는 공통 비밀을 결정하기 위한 컴퓨터 구현 방법의 다른 흐름도이다.
도 5는 제1 노드와 제2 노드 사이의 보안 통신을 위한 컴퓨터 구현 방법의 흐름도이다.
도 6은 제1 노드 및 제2 노드를 인증하기 위한 컴퓨터 구현 방법의 흐름도이다.
도 7은 3개의 노드 간에 공통 비밀을 공유하기 위한 본 개시를 구현하는 방법을 도시한 도면이다.
도 8은 도 7의 방법의 흐름도이다.
도 9는 본 개시를 구현하는 방법에서 제1 공통 비밀을 복구하기 위한 Berlekamp-Welch 디코더를 도시한다.
도 10은 4개의 노드 간에 공통 비밀을 공유하기 위한 본 개시를 구현하는 방법의 흐름도이다.
도 11은 다양한 실시예가 구현될 수 있는 컴퓨팅 환경을 예시하는 개략도이다.
도 1은 제1 노드 및 제2 노드에 대한 공통 비밀을 결정하기 위한 예시적인 시스템의 개략도이다.
도 2는 공통 비밀을 결정하기 위한 컴퓨터 구현 방법의 흐름도이다.
도 3은 제1 및 제2 노드를 등록하기 위한 컴퓨터 구현 방법의 흐름도이다.
도 4는 공통 비밀을 결정하기 위한 컴퓨터 구현 방법의 다른 흐름도이다.
도 5는 제1 노드와 제2 노드 사이의 보안 통신을 위한 컴퓨터 구현 방법의 흐름도이다.
도 6은 제1 노드 및 제2 노드를 인증하기 위한 컴퓨터 구현 방법의 흐름도이다.
도 7은 3개의 노드 간에 공통 비밀을 공유하기 위한 본 개시를 구현하는 방법을 도시한 도면이다.
도 8은 도 7의 방법의 흐름도이다.
도 9는 본 개시를 구현하는 방법에서 제1 공통 비밀을 복구하기 위한 Berlekamp-Welch 디코더를 도시한다.
도 10은 4개의 노드 간에 공통 비밀을 공유하기 위한 본 개시를 구현하는 방법의 흐름도이다.
도 11은 다양한 실시예가 구현될 수 있는 컴퓨팅 환경을 예시하는 개략도이다.
개요
먼저, 제2 노드(S)에서 동일한 공통 비밀인 제1 노드(C)에서의 공통 비밀(CS)을 결정하는 방법, 디바이스 및 시스템에 대해 설명한다. 이것은 노드 쌍 사이의 제2 공통 비밀을 결정하는 데 사용되며, 그런 다음, 도 7 및 도 8을 참조하여 아래에서 더 자세히 설명되는 바와 같이, 3개 이상의 노드를 포함하는 복수의 노드 사이에서 제1 공통 비밀을 공유하는 데 사용된다. 도 1은 통신 네트워크(5)를 통해 제2 노드(7)와 통신하는 제1 노드(3)를 포함하는 시스템(1)을 도시한다. 제1 노드(3)는 연관된 제1 처리 디바이스(23)를 가지며 제2 노드(5)는 연관된 제2 처리 디바이스(27)를 가진다. 제1 및 제2 노드(3, 7)는 컴퓨터, 태블릿 컴퓨터, 모바일 통신 디바이스, 컴퓨터 서버 등과 같은 전자 디바이스를 포함할 수 있다. 일 예에서, 제1 노드(3)는 클라이언트 디바이스일 수 있고 제2 노드(7)는 서버일 수 있다.
제1 노드(3)는 제1 노드 마스터 개인 키(V1C) 및 제1 노드 마스터 공개 키(P1C)를 갖는 제1 비대칭 암호화 쌍과 연관된다. 제2 노드(7)는 제2 노드 마스터 개인 키(V1S) 및 제2 노드 마스터 공개 키(P1S)를 갖는 제2 비대칭 암호화 쌍과 연관된다. 제1 및 제2 노드(3, 7) 각각에 대한 제1 및 제2 비대칭 암호화 쌍은 등록 동안 생성될 수 있다. 제1 및 제2 노드(3, 7)에 의해 수행되는 등록 방법(100, 200)은 도 3을 참조하여 아래에서 더 상세히 설명될 것이다. 각 노드에 대한 공개 키는 통신 네트워크(5)를 통해서와 같이 공개적으로 공유될 수 있다.
제1 노드(3) 및 제2 노드(7) 모두에서 공통 비밀(CS)을 결정하기 위하여 노드(3, 7)는 통신 네트워크(5)를 통해 개인 키를 통신하지 않고 각 방법(300, 400)의 단계를 수행한다.
제1 노드(3)에 의해 수행되는 방법(300)은 적어도 제1 노드 마스터 개인 키(V1C) 및 결정성 키(DK)에 기초하여 제1 노드 제2 개인 키(V2C)를 결정하는 것(330)을 포함한다. 결정성 키는 제1 및 제2 노드 사이에서 공유되는 메시지(M)에 기초할 수 있으며, 이는 아래에서 더 상세히 설명되는 바와 같이 통신 네트워크(5)를 통해 메시지를 공유하는 것을 포함할 수 있다. 방법(300)은 또한 적어도 제2 노드 마스터 공개 키(P1S) 및 결정성 키(DK)에 기초하여 제2 노드 제2 공개 키(P2S)를 결정하는 것(370)을 포함한다. 방법(300)은 제1 노드 제2 개인 키(V2C) 및 제2 노드 제2 공개 키(P2S)에 기초하여 공통 비밀(CS)을 결정하는 것(380)을 포함한다.
중요한 것은, 동일한 공통 비밀(CS)이 방법(400)에 의해 제2 노드(7)에서도 결정될 수 있다는 점이다. 방법(400)은 제1 노드 마스터 공개 키(P1C) 및 결정성 키(DK)에 기초하여 제1 노드 제2 공개 키(P2C)를 결정(430)한다. 방법(400)은 제2 노드 마스터 개인 키(V1S) 및 결정성 키(DK)에 기초하여 제2 노드 제2 개인 키(V2S)를 결정하는 것(470)을 더 포함한다. 방법(400)은 제2 노드 제2 개인 키(V2S) 및 제1 노드 제2 공개 키(P2C)에 기초하여 공통 비밀(CS)을 결정하는 것(480)을 포함한다.
통신 네트워크(5)는 근거리 통신망, 광역 통신망, 셀룰러 네트워크, 무선 통신 네트워크, 인터넷 등을 포함할 수 있다. 데이터가 전선, 광섬유 같은 통신 매체를 통해 또는 무선으로 전송될 수 있는 이러한 네트워크는 도청기(11)와 같은 도청에 취약할 수 있다. 방법(300, 400)은 제1 노드(3) 및 제2 노드(7)가 통신 네트워크(5)를 통해 공통 비밀을 전송하지 않고 공통 비밀을 모두 독립적으로 결정할 수 있도록 할 수 있다. 따라서 하나의 이점은 공통 비밀(CS)이 잠재적으로 안전하지 않은 통신 네트워크(5)를 통해 개인 키를 전송할 필요 없이 각 노드에 의해 안전하게 결정될 수 있다는 점이다. 다음에는, 공통 비밀은 통신 네트워크(5)를 통한 제1 및 제2 노드(3, 7) 사이의 암호화된 통신을 위한 비밀 키로(또는 비밀 키의 기초로) 사용될 수 있다.
방법(300, 400)은 추가 단계를 포함할 수 있다. 방법(300)은 제1 노드(3)에서 메시지(M) 및 제1 노드 제2 개인 키(V2C)에 기초하여 서명된 메시지(SM1)를 생성하는 것을 포함할 수 있다. 방법(300)은 통신 네트워크를 통해 제1 서명된 메시지(SM1)를 제2 노드(7)로 전송하는 것(360)을 더 포함한다. 다음에는, 제2 노드(7)가 제1 서명된 메시지(SM1)를 수신하는 단계(440)를 수행할 수 있다. 방법(400)은 또한 제1 노드 제2 공개 키(P2C)로 제1 서명된 메시지(SM1)를 검증하는 단계(450) 및 제1 서명된 메시지(SM1)의 검증 결과에 기초하여 제1 노드(3)를 인증하는 것(460)을 포함한다. 유리하게는, 이는 (제1 서명된 메시지가 생성된 것으로) 표명되는 제1 노드가 제1 노드(3)라는 것을 제2 노드(7)가 인증할 수 있게 한다. 이는 제1 노드(3)만이 제1 노드 마스터 개인 키(V1C)에 접근할 수 있으며 따라서 제1 노드(3)만이 제1 서명된 메시지(SM1)를 생성하기 위한 제1 노드 제2 개인 키(V2C)를 결정할 수 있다는 가정에 기초한다. 유사하게, 피어-투-피어 시나리오에서와 같이, 제2 서명된 메시지(SM2)가 제2 노드(7)에서 생성되고 제1 노드(3)가 제2 노드(7)를 인증할 수 있도록 제1 노드(3)로 전송될 수 있다는 것이 이해될 것이다.
제1 및 제2 노드 사이에서 메시지(M)를 공유하는 것은 다양한 방식으로 달성될 수 있다. 일 예에서, 메시지는 제1 노드(3)에서 생성되어, 통신 네트워크(5)를 통해, 제2 노드(7)로 전송될 수 있다. 대안적으로, 메시지는 제2 노드(7)에서 생성되어, 통신 네트워크(5)를 통해, 제2 노드(7)로 전송될 수 있다. 또 다른 예에서, 메시지는 제3 노드(9)에서 생성되고 메시지가 제1 및 제2 노드(3, 7) 모두에 전송될 수 있다. 또 다른 대안에서, 사용자는 제1 및 제2 노드(3, 7)에 의해 수신될 메시지를 사용자 인터페이스(15)를 통해 입력할 수 있다. 또 다른 예에서, 메시지(M)는 데이터 저장소(19)로부터 검색되어 제1 및 제2 노드(3, 7)로 전송될 수 있다. 일부 예에서, 메시지(M)는 공개될 수 있으며 따라서 비보안 네트워크(5)를 통해 전송될 수 있다.
추가 예에서, 하나 이상의 메시지(M)가 데이터 저장소(13, 17, 19)에 저장될 수 있으며, 여기에서 메시지는 제1 노드(3)와 제2 노드(7) 사이의 세션, 트랜잭션 등과 연관될 수 있다. 따라서 메시지(M)는 제1 및 제2 노드(3, 7) 각각에서 그 세션 또는 트랜잭션과 연관된 공통 비밀(CS)을 재생성하기 위해 검색되고 사용될 수 있다. 유리하게는, 공통 비밀(CS)의 재생성을 허용하는 기록은 기록 자체가 개인적으로 저장되거나 안전하게 전송될 필요 없이 보관될 수 있다. 이는 제1 및 제2 노드(3, 7)에서 수많은 트랜잭션이 수행되고 노드 자체에 모든 메시지(M)를 저장하는 것이 비실용적일 경우 유리할 수 있다.
등록 방법(100, 200)
등록 방법(100, 200)의 예가 도 3을 참조하여 설명될 것이며, 여기에서 방법(100)은 제1 노드(3)에 의해 수행되고 방법(200)은 제2 노드(7)에 의해 수행된다. 이는 제1 및 제2 노드(3, 7) 각각에 대하여 제1 및 제2 비대칭 암호화 쌍을 설정하는 것을 포함한다.
비대칭 암호화 쌍은 공개 키 암호화에 사용되는 것과 같은 연관된 개인 및 공개 키를 포함한다. 이 예에서, 비대칭 암호화 쌍은 타원 곡선 암호(Elliptic Curve Cryptography; ECC) 및 타원 곡선 연산의 속성을 사용하여 생성된다.
ECC에 대한 표준은 SECG(Standards for Efficient Cryptography Group)(www.sceg.org)에서 설명한 것과 같은 알려진 표준을 포함할 수 있다. 타원 곡선 암호는 또한 US 5,600,725, US 5,761,305, US 5889,865, US 5,896,455, US 5,933,504, US 6,122,736, US6,141,420, US 6,618,483, US 6,704,870, US 6,785,813, US 6,078,667, US 6,792,530에 설명되어 있다.
방법(100, 200)에서, 이는 제1 및 제2 노드가 공통 ECC 시스템에 정착하고 공통 생성기(G)를 사용하는 것(110, 210)을 포함한다. 일 예에서, 공통 ECC 시스템은 비트코인에서 사용하는 ECC 시스템인 secp256K1에 기초할 수 있다. 공통 생성기(G)는 선택, 무작위 생성 또는 할당될 수 있다.
이제 제1 노드(3)로 돌아가서, 방법(100)은 공통 ECC 시스템 및 공통 생성기(G)에 정착하는 것(110)을 포함한다. 이는 제2 노드(7) 또는 제3 노드(9)로부터 공통 ECC 시스템 및 공통 생성기를 수신하는 것을 포함할 수 있다. 대안적으로, 사용자 인터페이스(15)가 제1 노드(3)와 연관될 수 있으며, 이에 의해 사용자는 공통 ECC 시스템 및/또는 공통 생성기(G)를 선택적으로 제공할 수 있다. 또 다른 대안에서, 공통 ECC 시스템 및/또는 공통 생성기(G) 중 하나 또는 둘 모두는 제1 노드(3)에 의해 무작위로 선택될 수 있다. 제1 노드(3)는 통신 네트워크(5)를 통해 공통 생성기(G)를 갖는 공통 ECC 시스템의 사용을 나타내는 통지를 제2 노드(7)로 전송할 수 있다. 그런 다음, 제2 노드(7)는 공통 ECC 시스템 및 공통 생성기(G)를 사용하는 것에 대한 확인을 나타내는 통지를 전송함으로써 정착(210)할 수 있다.
방법(100)은 또한 제1 노드(3)가 제1 노드 마스터 개인 키(V1C) 및 제1 노드 마스터 공개 키(P1C)를 포함하는 제1 비대칭 암호화 쌍을 생성하는 것(120)을 포함한다. 이는 공통 ECC 시스템에 지정된 허용 범위 내의 임의의 정수에 적어도 부분적으로 기초하여 제1 노드 마스터 개인 키(V1C)를 생성하는 것을 포함한다. 이는 또한 다음 공식에 따라 제1 노드 마스터 개인 키(V1C)와 공통 생성기(G)의 타원 곡선 점 곱셈에 기초하여 제1 노드 마스터 공개 키(P1C)를 결정하는 것을 포함한다.
P1C = V1C x G
(식 1)
따라서 제1 비대칭 암호화 쌍은:
V1C: 제1 노드에 의해 비밀로 유지되는 제1 노드 마스터 개인 키
P1C: 공개적으로 알려진 제1 노드 마스터 공개 키를 포함한다.
제1 노드(3)는 제1 노드 마스터 개인 키(V1C) 및 제1 노드 마스터 공개 키(P1C)를 제1 노드(3)와 연관된 제1 데이터 저장소(13)에 저장할 수 있다. 보안을 위해, 제1 노드 마스터 개인 키(V1C)는 키가 비공개로 유지되는 것을 보장하기 위하여 제1 데이터 저장소(13)의 보안 부분에 저장될 수 있다.
방법(100)은 통신 네트워크(5)를 통해 제1 노드 마스터 공개 키(P1C)를 제2 노드(7)로 전송하는 것(130)을 더 포함한다. 제2 노드(7)는, 제1 노드 마스터 공개 키(P1C)를 수신하여(220), 제2 노드(7)와 연관된 제2 데이터 저장소(17)에 제1 노드 마스터 공개 키(P1C)를 저장할 수 있다(230).
제1 노드(3)와 유사하게, 제2 노드(7)의 방법(200)은 제2 노드 마스터 개인 키(V1S) 및 제2 노드 마스터 공개 키(P1S)를 포함하는 제2 비대칭 암호화 쌍을 생성하는 것(240)을 포함한다. 제2 노드 마스터 개인 키(V1S) 또한 허용 범위 내의 임의의 정수이다. 그런 다음, 제2 노드 마스터 공개 키(P1S)는 다음 공식에 의해 결정된다.
P1S = V1S x G
(식 2)
따라서 제2 비대칭 암호화 쌍은:
V1S: 제2 노드에 의해 비밀로 유지되는 제2 노드 마스터 개인 키
P1S: 공개적으로 알려진 제2 노드 마스터 공개 키를 포함한다.
제2 노드(7)는 제2 비대칭 암호화 쌍을 제2 데이터 저장소(17)에 저장할 수 있다. 방법(200)은 제1 노드(3)에 제2 노드 마스터 공개 키(P1S)를 전송하는 것(250)을 더 포함한다. 그런 다음, 제1 노드(3)는 제2 노드 마스터 공개 키(P1S)를 수신하고(140) 저장(150)할 수 있다.
일부 대안에서, 각각의 공개 마스터 키는 (신뢰할 수 있는 제3자와 같은) 제3 노드(9)와 연관된 제3 데이터 저장소(19)에서 수신되고 저장될 수 있다는 것을 이해하여야 한다. 이는 인증 기관과 같은, 공용 디렉터리 역할을 하는 제3자를 포함할 수 있다. 따라서 일부 예들에서, 제1 노드 마스터 공개 키(P1C)는 공통 비밀(CS)이 요구되는 것으로 결정하는 경우에만(그리고 그 역의 경우) 제2 노드(7)에 의해 요청되고 수신될 수 있다.
등록 단계는 초기 설정으로 한 번만 수행하면 된다. 그 후, 마스터 키는 특히 결정성 키(DK)에 종속된 공통 비밀(들)을 생성하기 위하여 보안 사안에 재사용될 수 있다.
제1 노드(3)에 의한 세션 시작 및 공통 비밀 결정
이제, 공통 비밀(CS)을 결정하는 예가 도 4를 참조하여 설명될 것이다. 공통 비밀(CS)은 제1 노드(3)와 제2 노드(7) 사이의 특정 세션, 시간, 트랜잭션 또는 다른 목적을 위해 사용될 수 있으며, 동일한 공통 비밀(CS)을 사용하는 것이 바람직하거나 안전하지 않을 수 있다. 따라서 공통 비밀(CS)은 상이한 세션, 시간, 트랜잭션 등 사이에서 변경될 수 있다.
메시지(M) 생성(310)
이 예에서, 제1 노드(3)에 의해 수행되는 방법(300)은 메시지(M)를 생성하는 것(310)을 포함한다. 메시지(M)는 임의, 의사 임의 또는 사용자 정의일 수 있다. 일 예에서, 메시지(M)는 유닉스(Unix) 시간과 임시 값(nonce)(및 임의 값)에 기초한다. 예를 들어, 메시지(M)는 다음과 같이 제공될 수 있다.
Message(M) = UnixTime + nonce
(식 3)
일부 예에서 메시지(M)는 임의적이다. 그러나 메시지(M)가 일부 응용에서 유용할 수 있는 선택적 값(예컨대 Unix 시간 등)을 가질 수 있음을 이해하여야 한다.
방법(300)은 통신 네트워크(3)를 통해 제2 노드(7)로 메시지(M)를 전송하는 것(315)을 포함한다. 메시지(M)가 개인 키에 대한 정보를 포함하지 않기 때문에 메시지(M)는 비보안 네트워크를 통해 전송될 수 있다.
결정성 키 결정(320)
방법(300)은 메시지(M)에 기초하여 결정성 키(DK)를 결정하는 단계(320)를 더 포함한다. 이 예에서, 이는 메시지의 암호화 해시를 결정하는 것을 포함한다. 암호화 해시 알고리즘의 예로는 256 비트 결정성 키(DK)를 생성하는 SHA-256을 포함한다. 즉:
DK = SHA-256(M)
(식 4)
다른 해시 알고리즘이 사용될 수 있음을 이해하여야 한다. 이는 SHA(Secure Hash Algorithm) 계열의 다른 해시 알고리즘을 포함할 수 있다. 일부 특정 예는 SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256를 포함하는 SHA-3 하위 집합의 인스턴스를 포함한다. 다른 해시 알고리즘으로는 RIPEMD(RACE Integrity Primitives Evaluation Message Digest) 계열의 것을 포함할 수 있다. 특정한 예는 RIPEMD-160을 포함할 수 있다. 다른 해시 함수로는 Zmor-Tillich 해시 함수 및 냅색 기반(knapsack-based) 해시 함수에 기초한 계열을 포함할 수 있다.
제1 노드 제2 개인 키 결정(330)
그 다음, 방법(300)은 제2 노드 마스터 개인 키(V1C) 및 결정성 키(DK)에 기초하여 제1 노드 제2 개인 키(V2C)를 결정하는 단계(330)를 포함한다. 이는 다음 공식에 따라 제1 노드 마스터 개인 키(V1C) 및 결정성 키(DK)의 스칼라 덧셈에 기초할 수 있다.
V2C = V1C + DK
(식 5)
따라서 제1 노드 제2 개인 키(V2C)는 임의의 값이 아니라 제1 노드 마스터 개인 키에서 결정성으로 유도된다. 암호화 쌍의 대응하는 공개 키, 즉 제1 노드 제2 공개 키(P2C)는 다음의 관계를 갖는다.
P2C = V2C x G
(식 6)
식 5의 V2C를 식 6에 대입하면:
P2C = (V1C + DK) x G
(식 7)
여기에서 '+' 연산자는 스칼라 덧셈을 나타내고 'x' 연산자는 타원 곡선 점 곱셈을 나타낸다. 타원 곡선 암호화 대수가 분배적이라는 점에 유의하면, 식 7은 다음과 같이 표현할 수 있다.
P2C = V1C x G + DK x G
(식 8)
마지막으로, 식 1을 식 7에 대입하면:
P2C = P1C + DK x G
(식 9.1)
P2C = P1C + SHA-256(M) x G
(식 9.2)
식 8 내지 식 9.2에서 '+' 연산자는 타원 곡선 점 덧셈을 나타낸다. 따라서 대응하는 제1 노드 제2 공개 키(P2C)는 제1 노드 마스터 공개 키(P1C) 및 메시지(M)에 대한 지식이 주어지면 유도 가능할 수 있다. 제2 노드(7)는 방법(400)과 관련하여 아래에서 더 상세히 논의되는 바와 같이 제1 노드 제2 공개 키(P2C)를 독립적으로 결정하기 위하여 그러한 지식을 가질 수 있다.
메시지 및 제1 노드 제2 개인 키에 기초하여 제1 서명된 메시지(SM1) 생성(350)
방법(300)은 메시지(M) 및 결정된 제1 노드 제2 개인 키(V2C)에 기초하여 제1 서명된 메시지(SM1)를 생성하는 것(350)을 더 포함한다. 서명된 메시지를 생성하는 것은 메시지(M)에 디지털 서명하기 위하여 디지털 서명 알고리즘을 적용하는 것을 포함한다. 일 예에서, 이는 제1 서명된 메시지(SM1)를 획득하기 위하여 타원 곡선 디지털 서명 알고리즘(Elliptic Curve Digital Signature Algorithm; ECDSA)에서 메시지에 제1 노드 제2 개인 키(V2C)를 적용하는 것을 포함한다.
ECDSA의 예로는 secp256k1, secp256r1, secp384r1, se3cp521r1이 있는 ECC 시스템을 기초로 하는 것을 포함한다.
제1 서명된 메시지(SM1)는 제2 노드(7)에서 대응하는 제1 노드 제2 공개 키(P2C)로 검증될 수 있다. 제1서명된 메시지(SM1)의 이 검증은 제2 노드(7)가 제1 노드(3)를 인증하는 데 사용될 수 있으며, 이는 아래의 방법(400)에서 논의될 것이다.
제2 노드 제2 공개 키 결정(370')
그 다음, 제1 노드(3)는 제2 노드 제2 공개 키(P2S)를 결정할 수 있다(370). 위에서 논의한 바와 같이, 제2 노드 제2 공개 키(P2S)는 적어도 제2 노드 마스터 공개 키(P1S) 및 결정성 키(DK)에 기초할 수 있다. 이 예에서, 공개 키는 생성기(G)와 타원 곡선 점 곱셈을 한 개인 키로 결정(370')되므로, 제2 노드 제2 공개 키(P2S)는 식 6과 유사한 방식으로 표현될 수 있다.
P2S = V2S x G
(식 10.1)
P2S = P1S + DK x G
(식 10.2)
식 10.2의 수학적 증명은 제1 노드 제2 공개 키(P2C)에 대해 식 9.1을 유도하기 위해 위에서 설명한 것과 동일하다. 제1 노드(3)는 제2 노드(7)와 독립적으로 제2 노드 제2 공개 키를 결정(370)할 수 있다는 것을 이해할 것이다.
제1 노드(3)에서 공통 비밀 결정(380)
그 다음, 제1 노드(3)는 결정된 제1 노드 제2 개인 키(V2C) 및 결정된 제2 노드 제2 공개 키(P2S)에 기초하여 공통 비밀(CS)을 결정할 수 있다(380). 공통 비밀(CS)은 다음 공식에 의해 제1 노드(3)에 의해 결정될 수 있다.
S = V2C x P2S
(식 11)
제2 노드(7)에서 수행되는 방법(400)
이제 제2 노드(7)에서 수행되는 대응하는 방법(400)이 설명될 것이다. 이들 단계 중 일부는 제1 노드(3)에 의해 수행된 위에서 논의된 것과 유사하다는 것을 이해하여야 한다.
방법(400)은 통신 네트워크(5)를 통해 제1 노드(3)로부터 메시지(M)를 수신하는 것(410)을 포함한다. 이는 단계(315)에서 제1 노드(3)에 의해 전송된 메시지(M)를 포함할 수 있다. 제2 노드(7)는 그 다음 메시지(M)에 기초하여 결정성 키(DK)를 결정한다(420). 제2 노드(7)에 의해 결정성 키(DK)를 결정하는 단계(420)는 전술한 제1 노드에 의해 수행되는 단계(320)와 유사하다. 이 예에서, 제2 노드(7)는 제1 노드(3)와 독립적으로 이 결정 단계(420)를 수행한다.
다음 단계는 제1 노드 마스터 공개 키(P1C) 및 결정성 키(DK)에 기초하여 제1 노드 제2 공개 키(P2C)를 결정하는 것(430)을 포함한다. 이 예에서, 공개 키는 생성기(G)와 타원 곡선 점 곱셈을 하는 개인 키로 결정(430')되므로, 제1 노드 제2 공개 키(P2C)는 다음과 같이 식 9와 유사한 방식으로 표현될 수 있다.
P2C = V2C x G
(식 12.1)
P2C = P1C + DK x G
(식 12.2)
식 12.1 및 12.2에 대한 수학적 증명은 식 10.1 및 10.2에 대해 위에서 논의한 것과 동일하다.
제2 노드(7)가 제1 노드(3)를 인증
방법(400)은 주장된 제1 노드(3)가 제1 노드(3)임을 인증하기 위해 제2 노드(7)에 의해 수행되는 단계를 포함할 수 있다. 앞서 논의된 바와 같이, 이는 제1 노드(3)로부터 제1 서명된 메시지(SM1)를 수신하는 것(440)을 포함한다. 그 다음 제2 노드(7)는 단계 430에서 결정된 제1 노드 제2 공개 키(P2C)로 제1 서명된 메시지(SM1) 상의 서명을 검증(450)할 수 있다.
디지털 서명을 검증하는 것은 위에서 논의한 것처럼 ECDSA(Elliptic Curve Digital Signature Algorithm)에 따라 수행될 수 있다. 중요한 것은 V2C와 P2C가 암호화 쌍을 형성하므로 제1 노드 제2 개인 키(V2C)로 서명된 제1 서명된 메시지(SM1)는 대응하는 제1 노드 제2 공개 키(P2C)로만 올바르게 검증되어야 한다는 점이다. 이러한 키는 제1 노드(3) 등록 시에 생성된 제1 노드 마스터 개인 키(V1C)와 제1 노드 마스터 공개 키(P1C)에 대해 결정성이므로, 제1 서명된 메시지(SM1)를 검증하는 것은 제1 서명된 메시지(SM1)를 전송하는 주장된 제1 노드가 등록 중의 동일한 제1 노드(3)임을 인증하는 기준으로 사용될 수 있다. 따라서, 제2 노드(7)는 제1 서명된 메시지를 검증(450)한 결과에 기초하여 제1 노드(3)를 인증(460)하는 단계를 더 수행할 수 있다.
위의 인증은 두 노드 중 하나가 신뢰할 수 있는 노드이고 노드 중 하나만 인증되어야 하는 시나리오에 적합할 수 있다. 예를 들어, 제1 노드(3)는 클라이언트일 수 있고 제2 노드(7)는 클라이언트에 의해 신뢰되는 서버일 수 있다. 따라서 서버(제2 노드(7))는 클라이언트가 서버 시스템에 접근할 수 있도록 클라이언트(제1 노드(3))의 자격 증명(credentials)을 인증해야 할 수 있다. 서버가 서버의 자격 증명을 클라이언트에 인증할 필요는 없을 수 있다. 그러나 일부 시나리오에서는, 아래의 다른 예에서 설명하는 피어-투-피어 시나리오와 같이 두 노드가 서로 인증되는 것이 바람직할 수 있다.
제2 노드(7)가 공통 비밀을 결정
방법(400)은 제2 노드(7)가 제2 노드 마스터 개인 키(V1S) 및 결정성 키(DK)에 기초하여 제2 노드 제2 개인 키(V2S)를 결정하는 것(470)을 더 포함할 수 있다. 제1 노드(3)에 의해 수행되는 단계 330과 유사하게, 제2 노드 제2 개인 키(V2S)는 다음 공식에 따라 제2 노드 마스터 개인 키(V1S) 및 결정성 키(DK)의 스칼라 덧셈에 기초할 수 있다.
V2S = V1S + DK
(식 13.1)
V2S = V1S + SHA-256(M)
(식 13.2)
그 다음, 제2 노드(7)는 제1 노드(3)와 독립적으로, 다음 공식에 기초하여 제2 노드 제2 개인 키(V2S) 및 제1 노드 제2 공개 키(P2C)에 기초하여 공통 비밀(CS)을 결정할 수 있다(480).
S = V2S x P2C
(식 14)
제1 노드(3) 및 제2 노드(7)에 의해 결정된 공통 비밀(CS)의 증명
제1 노드(3)에 의해 결정된 공통 비밀(CS)은 제2 노드(7)에서 결정된 공통 비밀(CS)과 동일하다. 이제 식 11과 식 14가 동일한 공통 비밀(CS)을 제공한다는 수학적 증명을 설명한다.
제1 노드(3)에 의해 결정된 공통 비밀(CS)로 돌아가서, 식 10.1은 다음과 같이 식 11에 대입될 수 있다.
S = V2C x P2S
(식 11)
S = V2C x (V2S x G)
S = (V2C x V2S) x G
(식 15)
제2 노드(7)에서 결정된 공통 비밀(CS)로 돌아가서, 식 12.1은 다음과 같이 식 14에 대입될 수 있다.
S = V2S x P2C
(식 14)
S = V2S x (V2C x G)
S = (V2S x V2C) x G
(식 16)
ECC 대수는 교환적이므로, 식 15와 식 16은 동일하다.
S = (V2C x V2S) x G =(V2S x V2C) x G
(식 17)
공통 비밀(CS) 및 비밀 키
공통 비밀(CS)은 비밀 키로 사용되거나 제1 노드(3)와 제2 노드(7) 사이의 보안 통신을 위한 대칭 키 알고리즘에서 비밀 키의 기초로 사용될 수 있다.
공통 비밀(CS)은 타원 곡선 점(xS, yS)의 형태일 수 있다. 이것은 노드(3, 7)에서 동의한 공개적으로 알려진 연산 표준을 사용하여 표준 키 형식으로 변환될 수 있다. 예를 들어, xS 값은 AES256 암호화를 위한 키로 사용할 수 있는 256 비트 정수일 수 있다. 또한 이 길이의 키가 필요한 모든 응용에 대해 RIPEMD160을 사용하여 160 비트 정수로 변환될 수 있다.
공통 비밀(CS)은 필요에 따라 결정될 수 있다. 중요한 것은 제1 노드(3)가 메시지(M)에 기초하여 다시 결정할 수 있으므로 공통 비밀(CS)을 저장할 필요가 없다는 점이다. 일부 예에서, 사용된 메시지(들)(M)는 마스터 개인 키에 대해 요구되는 것과 동일한 수준의 보안 없이 데이터 저장소(13, 17, 19)(또는 다른 데이터 저장소)에 저장될 수 있다. 일부 예에서, 메시지(M)는 공개적으로 이용 가능할 수 있다.
그러나 일부 응용에 따라, 공통 비밀(CS)이 제1 노드 마스터 개인 키(V1C)만큼 안전하게 유지되면 제1 노드와 연관된 제1 데이터 저장소(X)에 공통 비밀(CS)이 저장될 수 있다.
또한, 개시된 시스템은 단일 마스터 키 암호화 쌍에 기초하여 다수의 보안 비밀 키에 대응할 수 있는 다수의 공통 비밀을 결정하도록 할 수 있다. 이것의 장점은 다음 예에 의해 설명될 수 있다.
다수의 세션이 있고, 각각 다수의 각 공통 비밀(CS)과 연관된 상황에서, 공통 비밀(CS) 각각이 향후 다시 결정될 수 있도록 그들 다수의 세션과 연관된 기록을 갖는 것이 바람직할 수 있다. 공지의 시스템에서는, 다수의 비밀 키가 보안 데이터 저장소에 저장될 것을 요구하였을 수 있으며, 이는 비용이 많이 들거나 유지 관리가 불편할 수 있다. 대조적으로, 본 시스템은 제1 및 제2 노드 각각에서 보안이 유지되는 마스터 개인 키를 가지는 반면, 다른 결정성 키 또는 메시지(M)는 안전하거나 안전하지 않게 저장될 수 있다. 결정성 키(DK) 또는 메시지(M)가 안전하지 않게 저장되더라도, 공통 비밀을 결정하는 데 필요한 마스터 개인 키가 여전히 안전하기 때문에 다수의 공통 비밀(CS)은 안전하게 유지된다.
방법은 또한 로그인 암호를 안전하게 전송하는 것과 같은 임시 통신 링크를 위한 "세션 키"를 생성하는 데에도 사용될 수 있다.
피어-투-피어 인증
피어-투-피어 시나리오에서, 제1 노드(3) 및 제2 노드(7)는 서로의 자격 증명을 인증할 필요가 있을 수 있다. 이에 대한 예가 이제 도 6을 참조하여 설명될 것이다. 이 예에서, 검증된 제1 서명된 메시지(SM1)에 기초하여 제1 노드(3)를 인증하는 방법(300, 400) 단계는 위에서 논의된 것과 유사하다.
그러나, 제2 노드(7)에 의해 수행되는 방법(400)은 메시지(M) 및 제2 노드 개인 키(V2S)에 기초하여 제2 서명된 메시지(SM2)를 생성하는 것(462)을 더 포함한다. 일부 대안에서, 제2 서명된 메시지(SM2)는 제2 메시지(M2) 및 제2 노드 개인 키(V2S)에 기초할 수 있으며, 여기에서 제2 메시지(M2)는 제1 노드(3)와 공유된다. 방법(400)은 통신 네트워크(5)를 통해 제1 노드(3)로 제2 서명된 메시지(SM2)를 전송하는 것(464)을 더 포함한다.
제1 노드(3)에서, 방법(300)은 제2 노드(7)로부터 제2 서명된 메시지(SM2)를 수신하는 것을 포함한다. 방법은 단계 370에서 결정된 제2 노드 제2 공개 키(P2S)를 사용하여 제2 서명된 메시지(SM2)상의 서명을 검증하는 것(374)을 포함한다. 그 다음, 방법(300)은 제2 서명된 메시지(SM2)를 검증한 결과에 기초하여 제2 노드(7)를 인증하는 것(376)을 포함할 수 있다. 이는 제1 및 제2 노드(3, 7)가 서로를 인증하게 한다.
결정성 키의 계층
일 예에서, 일련의 연속적인 결정성 키가 결정될 수 있으며, 여기에서 각각의 연속적인 키는 선행 결정성 키에 기초하여 결정될 수 있다.
예를 들어, 연속적인 단일 목적 키를 생성하기 위하여 단계 310 내지 370 및 410 내지 470을 반복하는 대신, 노드 간의 사전 합의에 의하여, 이전에 사용된 결정성 키(DK)를 양 당사자가 반복적으로 재해시하여 결정성 키의 계층을 구축할 수 있다. 실제로, 메시지(M)의 해시에 기초하는 결정성 키는 다음 세대(next generation)의 결정성 키(DK')에 대한 다음 세대 메시지(M')가 될 수 있다. 이렇게 하면 추가 프로토콜 구축 전송, 특히 공통 비밀의 각 생성에 대하여 다수의 메시지를 전송할 필요 없이, 연속적인 공유 비밀의 생성을 계산할 수 있다. 다음 세대 공통 비밀(CS')은 다음과 같이 계산할 수 있다.
먼저, 제1 노드(3)와 제2 노드(7) 모두 독립적으로 다음 세대의 결정성 키(DK')를 결정한다. 이는 단계 320 및 420과 유사하지만 다음 공식으로 조정된다.
M' = SHA-256(M)
(식 18)
DK' = SHA-256(M')
(식 19.1)
DK' = SHA-256(SHA-256(M))
(식 19.2)
그 다음, 제1 노드(3)는 전술한 단계 370 및 330과 유사하지만, 다음 공식으로 조정된 다음 세대의 제2 노드 제2 공개 키(P2S') 및 제1 노드 제2 개인 키(V2C')를 결정할 수 있다.
P2S' = P1S + DK' x G
(식 20.1)
V2C' = V1C + DK'
(식 20.2)
그 다음, 제2 노드(7)는 전술한 단계 430 및 470과 유사하지만, 다음 공식으로 조정된 다음 세대의 제1 노드 제2 공개 키(P2C') 및 제2 노드 제2 개인 키(V2S')를 결정할 수 있다.
P2C' = P1C + DK' x G
(식 21.1)
V2S' = V1S + DK'
(식 21.2)
그런 다음 제1 노드(3) 및 제2 노드(7)는 각각 다음 세대 공통 비밀(CS')을 결정할 수 있다.
특히 제1 노드(3)는 다음 공식으로 다음 세대 공통 비밀(CS')을 결정한다.
CS' = V2C' x P2S'
(식 22)
제2 노드(7)는 다음 공식으로 다음 세대 공통 비밀(CS')을 결정한다.
CS' = V2S' x P2C'
(식 23)
추가 세대(CS'', CS''' 등)은 동일한 방식으로 계산하여 체인 계층을 생성할 수 있다. 이 기술은 제1 노드(3)와 제2 노드(7) 모두가 원래 메시지(M) 또는 원래 계산된 결정성 키(DK)와 이것이 어떤 노드와 관련되는지를 추적하여야 한다. 이는 공개적으로 알려진 정보이므로 이 정보의 보유와 관련된 보안 문제는 없다. 따라서, 이 정보는 '해시 테이블'(해시 값을 공개 키에 연결)에 보관되고 네트워크(5) 전체에 자유롭게 배포될 수 있다(예를 들어 토렌트(Torrent)를 사용하여). 또한, 계층 내의 임의의 개별 공통 비밀(CS)이 손상된 경우, 개인 키(V1C, V1S)가 보안 상태로 유지되면 계층 내의 임의의 다른 공통 비밀의 보안에 영향을 주지 않는다.
키의 트리 구조
위에서 설명한 체인(선형) 계층뿐 아니라 트리 구조 형태의 계층도 생성할 수 있다.
트리 구조를 사용하면, 인증 키, 암호화 키, 서명 키, 결제 키 등과 같은 상이한 목적을 위한 다양한 키가 결정될 수 있으며, 이에 따라 이들 키는 모두 안전하게 유지 관리되는 단일 마스터 키에 연결된다.
실시예 설명
도 7은 3 개의 노드 A, B 및 C 사이에서 제1 공통 비밀을 공유하기 위하여 본 개시를 구현하는 방법을 도시하며, 방법의 흐름도는 도 8에 도시되어 있다. 각 노드 A, B, C는 자신의 개인 키/공개 키 쌍(S, P), 노드 A의 개인, 공개 키 쌍, 예를 들어(SA, PA)와 연관되어 있다. 각 개인 또는 공개 키는 그 노드에 대한 각 마스터 개인 키 또는 마스터 공개 키 및 결정성 키로부터 도 1 내지 도 6을 참조하여 위에서 설명한 것과 유사한 방식으로 유도될 수 있다. 개인-공개 키 쌍은 타원 곡선 암호화 시스템의 키 쌍이며, 여기에서 예를 들어, PA = SA x G 이며, G는 타원 곡선 생성기 점이다.
각 노드 쌍 A, B, A, C 및 B, C 사이의 보안 통신은 도 8의 단계 80에서, 도 1 내지 도 6을 참조하여 위에서 설명한 방법을 사용하여, 각 노드 쌍 사이의 제2 공통 비밀을 결정함으로써 구축된다. 도 7에 도시된 배열에서, 다음의 관계가 적용된다.
SAPB = SASBG = SBSAG = SBPA = x1
유사하게, SAPC = SCPA = x2
및 SBPC = SCPB = x3
각 노드 쌍 사이에 보안 통신 채널이 구축되면, 각 노드는 도 8의 단계 82에서 제2 비밀에 기초한 개인-공개 키 쌍을 사용하여, 그 노드에 알려진 제2 비밀의 조합의 형태로 제1 비밀의 지분을 암호화한다. 이는 그 노드에 알려진 제2 공통 비밀 x 쌍의 XOR 조합을 인코딩하는 각 노드에 의해 수행된다. 따라서 노드 A의 경우, 공통 비밀 x1 및 x2가 노드 A에 알려져 있으므로, 노드 A는 x1 x2 조합을 계산한 다음, 이 조합을 서로 다른 노드와의 각 통신 채널 x1 또는 x2의 개인-공개 키 쌍의 개인 키에 기초하여 별도로 인코딩한다. 그런 다음 노드 A는 도 8의 단계 84에서 x1에 기초하여 암호화된 x1 x2 조합을 노드 B로, x2에 기초하여 암호화된 것을 노드 C로 전송한다. 이러한 암호화된 지분은 각각 Ex1[x1 x2] 및 Ex2[x1 x2]로 표현된다.
유사하게, 공통 비밀 x1 및 x3은 노드 B에 알려져 있으며, 여기에서 x3은 제2 노드 B와 제3 노드 C에 공통인 제3 공통 비밀을 나타낸다. 노드 B는 x1 x3 조합을 계산한 다음, 이 조합을 서로 다른 노드와 제2 공통 비밀 x1 및 x3에 기초하여 별도로 인코딩한다. 그런 다음 노드 B는 도 8의 단계 84에서 x1을 기준으로 암호화된 x1 x3 조합, Ex1[x1 x3]을 노드 A로, x3을 기준으로 암호화된 Ex3[x1 x3]을 노드 C로 전송한다. 그런 다음 노드 C는 x2 x3 조합을 계산하고, 이 조합을 서로 다른 노드와 제2 공통 비밀 x2 및 x3에 기초하여 별도로 인코딩한다. 그런 다음 노드 C는 도 8의 단계 84에서 x2을 기준으로 암호화된 x2 x3 조합, Ex2[x2 x3]을 노드 A로, x3을 기준으로 암호화된 Ex3[x2 x3]을 노드 B로 전송한다.
각 노드 A, B, C는 다른 노드로부터 암호화된 지분을 수신하고 도 8의 단계 86에서 암호화된 지분을 해독한다. 결과적으로, 각 노드는 제1 공유 비밀 x1 x2 x3을 재구성하는 데 필요한 임계 수의 지분을 다음과 같이 얻을 수 있다.
노드 A는 노드 B로부터 지분 x2 x3, 노드 C로부터 x1 x3을 수신한다. 노드 A는 x1과 x2를 별도로 알고 있으므로, 도 8의 단계 88에서 x1과 x2 x3 또는 x2와 x1 x3의 XOR 조합에 의해 제1 공통 비밀 x1 x2 x3을 쉽게 계산할 수 있다. 유사하게, 노드 B는 노드 A로부터 지분 x1 x2, 노드 C로부터 x2 x3을 수신한다. 노드 B는 x1과 x3을 별도로 알고 있으므로, x1과 x2 x3 또는 x3와 x2 x3의 XOR 조합에 의해 제1 공통 비밀 x1 x2 x3을 쉽게 계산할 수 있다. 또한 노드 C는 노드 B로부터 지분 x1 x3, 노드 A로부터 x1 x2를 수신한다. 노드 C는 x2와 x3을 별도로 알고 있으므로, x2과 x1 x3 또는 x3와 x1 x2의 XOR 조합에 의해 제1 공통 비밀 x1 x2 x3을 쉽게 계산할 수 있다.
위의 제2 공통 비밀에 대해 설명된 방식과 유사하게, 제1 공통 비밀(CS)은 타원 곡선 점(xS, yS)의 형태일 수 있다. 이것은 노드(3, 7)에서 동의한 공개적으로 알려진 연산 표준을 사용하여 표준 키 형식으로 변환될 수 있다. 예를 들어, xS 값은 AES256 암호화를 위한 키로 사용할 수 있는 256 비트 정수일 수 있다. 또한 이 길이의 키가 필요한 모든 응용에 대해 RIPEMD160을 사용하여 160 비트 정수로 변환될 수 있다.
XOR 암호화가 아닌 다른 방법으로 제1 공통 비밀의 지분을 배포할 수 있지만, XOR 암호화는 블록체인 트랜잭션 스크립트에서 브로드캐스트(broadcast)할 때 제2 공통 비밀을 가리는 이점을 제공하여, 제3자가 임계 수의 다른 제2 공통 비밀에 대한 지식이 없이는 제2 공통 비밀을 결정할 수 없다. 예를 들어, (x1.x2.x3) mod n 형식의 제2 공통 비밀의 간단한 산술 곱셈을 사용할 수 있으며, 여기에서 n은 사용된 타원 곡선 암호화 시스템의 차수이다.
또한, 당업자에게 친숙한 샤미르(Shamir) 비밀 공유 방식 또는 딜러가 없는(dealerless) 비밀 공유 방식을 사용하여 다항 함수의 지분으로 제1 공통 비밀의 지분을 분배할 수 있다. 제1 공통 비밀의 지분이 다항 함수의 지분인 경우, 도 9에 나타난 바와 같이 Berlekamp-Welch 디코더를 사용하여 제1 공통 비밀의 효율적인 복구를 수행할 수 있다. 도 9를 참조하면, Berlekamp-Welch 디코더(70)는 다항 함수를 얻기 위하여 다항 함수의 지분의 다항식 보간을 수행한다.
전송된 데이터의 오류를 수정하기 위하여 Berlekamp-Welch 알고리즘을 사용하는 기존의 경우, 메시지(m)는 인코더(72)에서 일련의 k 바이트로 분할되고, 각 바이트 c0, c1, … ck-1은 정수 모듈로 p로 인코딩된다. 그런 다음 메시지는 다항 함수로 표시된다.
그 다음 다항 함수 m(x)의 값이 다수의 알려진 x 값에 대해 결정되어 일련의 (x, y) 쌍을 생성하고, 이는 송신기(74)에 의해 수신기(76)로 전송된다.
수신기(76)에서 수신된 데이터 M(즉, 수신된 메시지)은 원래 메시지를 나타내는 다항 함수의 점에 대응하는 쌍 (a1, b1, … an, bn)을 포함한다.
전송된 (x, y) 쌍 중 일부가 전송 중에 손상되었다고 가정하면, 오류 위치 다항 함수를 다음과 같이 정의할 수 있다.
P(ai)≠bi일 때, E(ai) = 0; 그렇지 않으면 E(ai)≠0
곱 다항 함수 Q(ai)가 다음과 같이 정의되면
Q(ai) = biEi(ai)
bi 값이 손상되었는지 여부에 관계없이 수신된 각 (ai, bi) 쌍에 대하여
Q(ai) = biEi(ai) = P(ai)Ei(ai), P(ai)≠bi일 때 E(ai) = 0이므로
(ai, bi)의 n 개의 알려진 값에 대하여, E(ai)는 e차수의 다항 함수이고, P(ai)는 (k-1) 차수의 다항 함수이므로, Q(ai)는 (e + k - 1) 차수의 다항 함수이다. 따라서 (ai, bi)의 알려진 값은 선형 시스템으로 표현할 수 있다.
선형 시스템은 2e + k - 1개의 알 수 없는 항(E(x)의 e 및 Q(x)의 e + k - 1)을 포함하며, 그 결과 Q(ai) 및 E(ai)의 계수는 n ≥ 2e + k - 1이면 결정될 수 있다. Q(ai) 및 E(ai)가 결정될 수 있으면, P(ai)를 결정하여 원래 메시지 m(x)를 복구할 수 있다.
그러므로 Berlekamp-Welch 디코더(70)는 다항 함수 상의 점을 나타내는 쌍을 입력으로 수신하고 다항 함수를 출력함을 알 수 있다. 따라서, 디코더(70)는 그 다항 함수에 의해 표현되는 임계 수의 지분으로부터 다항 함수를 결정하기 위하여 본 개시에서 라그랑주 보간(Lagrange interpolation)을 위한 대체물로서 사용될 수 있다.
도 10은 4개의 노드 A, B, C 및 D 사이에서 제1 공통 비밀을 공유하기 위하여 본 개시를 구현하는 방법을 도시한다. 각 노드 A, B, C, D는 자신의 개인 키/공개 키 쌍(S, P), 노드 A의 개인, 공개 키 쌍, 예를 들어, (SA, PA)와 연관되어 있다. 각 개인 또는 공개 키는 그 노드에 대한 각 마스터 개인 키 또는 마스터 공개 키 및 결정성 키로부터 도 1 내지 도 6을 참조하여 위에서 설명한 것과 유사한 방식으로 유도될 수 있다. 개인-공개 키 쌍은 타원 곡선 암호화 시스템의 키 쌍이며, 여기에서 예를 들어, PA = SA x G 이며, G는 타원 곡선 생성기 점이다.
각 노드 쌍 A,B, A,C, A,D, B,C, B,D 및 C,D 사이의 보안 통신은 도 1 내지 도 6을 참조하여 위에서 설명한 방법을 사용하여 각 노드 쌍 사이의 제2 공통 비밀을 결정함으로써 구축된다. 도 10에 도시된 배열에서, 다음의 관계가 적용된다.
SAPB = SASBG = SBSAG = SBPA = x1
SAPC = SCPA = x2
SAPD = SDPA = x3
SBPC = SCPB = x4
SBPD = SDPB = x5
및 SCPD = SDPC = x6
각 노드 쌍 사이에 보안 통신 채널이 구축되면, 각 노드는 도 7 및 도 8을 참조하여 설명된 방법과 유사한 방식으로 제2 비밀에 기초한 개인-공개 키 쌍을 사용하여, 그 노드에 알려진 제2 비밀의 조합의 형태로 제1 비밀의 지분을 암호화한다. 이는 그 노드에 알려진 제2 공통 비밀 x 쌍의 XOR 조합을 인코딩하는 각 노드에 의해 수행된다. 따라서 노드 A의 경우, 공통 비밀 x1, x2 및 x3가 노드 A에 알려져 있으므로, 노드 A는 x1 x2, x1 x3 및 x2 x3 조합을 계산한 다음, 이 조합을 서로 다른 노드와의 각 통신 채널 x1, x2 또는 x3의 개인-공개 키 쌍의 개인 키에 기초하여 별도로 인코딩한다. 본 실시예에서, 개별 조합 [x1 x2; x1 x3; x2 x3]는 도 10에서 [Ashares]로 축약된다. 그러면 인코딩된 조합은 Ex1[x1 x2; x1 x3; x2 x3], 또는 Ex1[Ashares], Ex2[x1 x2; x1 x3; x2 x3], 또는 Ex2[Ashares] 및 Ex3[x1 x2; x1 x3; x2 x3], 또는 Ex3[Ashares]로 표현된다. 그런 다음 노드 A는 x1가 공통인 노드 B로 Ex1[Ashares]를, x2가 공통인 노드 C로 Ex2[Ashares]를, x3가 공통인 노드 D로 Ex3[Ashares]를 전송한다.
유사한 방식으로, 노드 B는 다음 조합을 계산한다.
그리고 다음을 암호화 및 전송한다.
노드 C는 다음 조합을 계산한다.
그리고 다음을 암호화 및 전송한다.
그리고 노드 D는 다음 조합을 계산한다.
그리고 다음을 암호화 및 전송한다.
각 노드 A, B, C, D는 다른 노드로부터 암호화된 지분을 수신하고 적절한 제2 공통 비밀 x1, x2, x3, x4, x5 또는 x6에 대응하는 개인 키를 사용하여 암호화된 지분을 해독하며, 그 결과 각 노드는 제1 공통 비밀 x1 x2 x3 x4 x5 x6을 재구성하는 데 필요한 임계 수의 지분을 다음과 같이 얻을 수 있다.
노드 A는 노드 B로부터 지분 x1 x4, x1 x5 및 x4 x5를 수신하고, x1, x2 및 x3를 별도로 알고 있으므로, x1 x1 x4 및 x1 x1 x5 로부터 x4 및 x5를 각각 계산할 수 있다. 노드 A는 또한 노드 C로부터 지분 x2 x4, x2 x6 및 x4 x6를 수신하고, x1, x2 및 x3를 별도로 알고 있으므로, x2 x2 x6 로부터 x6를 계산할 수 있으며, 결과적으로 x1 내지 x6를 별도로 알고 제1 공통 비밀을 계산할 수 있다.
유사한 프로세스를 운영함으로써, 다른 노드 B, C 및 D 각각은 모든 제2 공통 비밀을 획득하여 이제 모든 노드 간에 공유되는 제1 공통 비밀을 결정할 수 있다.
이제 도 11로 돌아가면, 본 개시의 적어도 하나의 실시예를 실행하는 데 사용될 수 있는 컴퓨팅 디바이스(2600)의 예시적이고 단순화된 블록도가 제공된다. 다양한 실시예에서, 컴퓨팅 디바이스(2600)는 위에서 예시되고 설명된 임의의 시스템을 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 디바이스, 개인용 컴퓨터 또는 임의의 전자 컴퓨팅 디바이스로 사용하도록 구성될 수 있다. 도 11에 도시된 바와 같이, 컴퓨팅 디바이스(2600)는 주 메모리(2608) 및 영구 저장소(2610)를 포함하는 저장 서브시스템(2606)과 통신하도록 구성될 수 있는 하나 이상의 캐시 메모리 레벨 및 메모리 제어기를 갖는 하나 이상의 프로세서(집합적으로 2602로 라벨링됨)를 포함할 수 있다. 주 메모리(2608)는 도시된 바와 같이 동적 임의 접근 메모리(DRAM)(2618) 및 읽기 전용 메모리(ROM)(2620)를 포함할 수 있다. 저장 서브시스템(2606) 및 캐시 메모리(2602)는 본 개시에서 설명된 바와 같이 트랜잭션 및 블록과 연관된 세부 사항과 같은 정보의 저장을 위해 사용될 수 있다. 프로세서(들)(2602)는 본 개시에서 설명된 바와 같은 임의의 실시예의 단계 또는 기능을 제공하기 위해 이용될 수 있다.
프로세서(들)(2602)는 또한 하나 이상의 사용자 인터페이스 입력 디바이스(2612), 하나 이상의 사용자 인터페이스 출력 디바이스(2614) 및 네트워크 인터페이스 서브시스템(2616)과 통신할 수 있다.
버스 서브시스템(2604)은 컴퓨팅 디바이스(2600)의 다양한 구성요소 및 서브시스템이 의도된 대로 서로 통신할 수 있도록 하는 메커니즘을 제공할 수 있다. 버스 서브시스템(2604)이 단일 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템의 대안적인 실시예는 다중 버스를 이용할 수 있다.
네트워크 인터페이스 서브시스템(2616)은 다른 컴퓨팅 디바이스 및 네트워크에 대한 인터페이스를 제공할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 컴퓨팅 디바이스(2600)의 다른 시스템으로부터 데이터를 수신하고 데이터를 전송하기 위한 인터페이스 역할을 할 수 있다. 예를 들어, 네트워크 인터페이스 서브시스템(2616)은 데이터 기술자가 디바이스를 네트워크에 연결하여 데이터 기술자가 데이터 센터와 같은 원격 위치에 있는 동안 디바이스로 데이터를 전송하고 디바이스에서 데이터를 수신할 수 있도록 할 수 있다.
사용자 인터페이스 입력 디바이스(2612)는 키보드; 통합 마우스, 트랙볼, 터치패드 또는 그래픽 태블릿과 같은 포인팅 디바이스; 스캐너; 바코드 스캐너; 디스플레이에 통합된 터치스크린; 음성 인식 시스템, 마이크와 같은 오디오 입력 디바이스; 및 다른 유형의 입력 디바이스와 같은 하나 이상의 사용자 입력 디바이스를 포함할 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)에 정보를 입력하기 위한 모든 가능한 유형의 디바이스 및 메커니즘을 포함하도록 의도된다.
하나 이상의 사용자 인터페이스 출력 디바이스(2614)는 디스플레이 서브시스템, 프린터, 또는 오디오 출력 디바이스 등과 같은 비시각적 디스플레이를 포함할 수 있다. 디스플레이 서브시스템은 음극선관(CRT), 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이와 같은 평면 패널 디바이스, 프로젝션 또는 다른 디스플레이 디바이스일 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)로부터 정보를 출력하기 위한 모든 가능한 유형의 디바이스 및 메커니즘을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스(2614)는, 예를 들어, 그러한 상호 작용이 적절할 수 있는 경우 설명된 프로세스 및 변형을 수행하는 애플리케이션과의 사용자 상호 작용을 용이하게 하는 사용자 인터페이스를 표시하는 데 사용될 수 있다.
저장 서브시스템(2606)은 본 개시의 적어도 하나의 실시예의 기능을 제공할 수 있는 기본 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터 판독 가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서에 의해 실행될 때, 애플리케이션(프로그램, 코드 모듈, 명령)은 본 개시의 하나 이상의 실시예의 기능을 제공할 수 있고, 저장 서브시스템(2606)에 저장될 수 있다. 이러한 애플리케이션 모듈 또는 명령은 하나 이상의 프로세서(2602)에 의해 실행될 수 있다. 저장 서브시스템(2606)은 본 개시에 따라 사용되는 데이터를 저장하기 위한 저장소를 추가로 제공할 수 있다. 예를 들어, 주 메모리(2608) 및 캐시 메모리(2602)는 프로그램 및 데이터를 위한 휘발성 저장소를 제공할 수 있다. 영구 저장소(2610)는 프로그램 및 데이터를 위한 영구(비 휘발성) 저장소를 제공할 수 있으며, 플래시 메모리, 하나 이상의 솔리드 스테이트 드라이브, 하나 이상의 자기 하드 디스크 드라이브, 연관된 이동식 매체가 있는 하나 이상의 플로피 디스크 드라이브, 연관된 이동식 매체가 있는 하나 이상의 광학 드라이브(예를 들어, CD-ROM 또는 DVD 또는 블루레이) 및 다른 유사한 저장 매체를 포함할 수 있다. 이러한 프로그램 및 데이터는 본 개시에 설명된 바와 같은 트랜잭션 및 블록과 연관된 데이터뿐만 아니라 본 개시에 설명된 바와 같은 하나 이상의 실시예의 단계를 수행하기 위한 프로그램을 포함할 수 있다.
컴퓨팅 디바이스(2600)는 휴대용 컴퓨터 디바이스, 태블릿 컴퓨터, 워크 스테이션, 또는 아래에서 설명되는 임의의 다른 디바이스를 포함하는 다양한 유형일 수 있다. 추가적으로, 컴퓨팅 디바이스(2600)는 하나 이상의 포트(예를 들어, USB, 헤드폰 잭, 라이트닝 커넥터 등)를 통해 컴퓨팅 디바이스(2600)에 연결될 수 있는 다른 디바이스를 포함할 수 있다. 컴퓨팅 디바이스(2600)에 연결될 수 있는 디바이스는 광섬유 커넥터를 수용하도록 구성된 복수의 포트를 포함할 수 있다. 따라서, 이 디바이스는 광학 신호를 처리를 위해 디바이스를 컴퓨팅 디바이스(2600)에 연결하는 포트를 통해 전송될 수 있는 전기 신호로 변환하도록 구성될 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 11에 도시된 컴퓨팅 디바이스(2600)에 대한 설명은 디바이스의 바람직한 실시예를 설명하기 위한 특정 예로서만 의도된다. 도 11에 도시된 시스템보다 더 많거나 더 적은 구성요소를 갖는 많은 다른 구성이 가능하다.
위에서 언급된 실시예는 개시를 제한하기보다는 예시하며, 당업자는 첨부된 청구항에 의해 정의된 개시의 범위를 벗어나지 않고 많은 대안적인 실시예를 설계할 수 있다는 점에 유의하여야 한다. 청구항에서, 괄호 안에 있는 참조 기호는 청구항을 제한하는 것으로 해석되어서는 안된다. "포함하는" 및 "포함한다" 등의 단어는 청구항 또는 명세서 전체에 나열된 것 이외의 요소 또는 단계의 존재를 배제하지 않는다. 본 명세서에서 "포함하다"는 "포함하거나 구성된다"를 의미하고, "포함하는"은 "포함하거나 구성되는"을 의미한다. 요소의 단수 참조는 그러한 요소의 복수 참조를 배제하지 않으며 그 반대의 경우도 마찬가지이다. 개시는 몇몇 별개의 요소를 포함하는 하드웨어에 의해, 그리고 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 여러 수단을 열거하는 장치 청구항에서, 이러한 수단 중 몇몇은 하나의 동일한 하드웨어 항목에 의해 구현될 수 있다. 특정 조치가 서로 다른 종속 항에 언급되어 있다는 단순한 사실은 이러한 조치의 조합이 이점으로 사용될 수 없음을 의미하지 않는다.
Claims (31)
- 복수의 노드 간에 제1 공통 비밀을 공유하는 방법에 있어서, 각각의 상기 노드는 상기 복수의 노드에 공통인 암호화 시스템의 각 제1 공개 키 및 각 제1 개인 키를 갖는 각 비대칭 암호화 제1 키 쌍과 연관되고, 상기 제1 공통 비밀은 각각의 상기 노드의 상기 제1 개인 키에 기초하며, 상기 방법은:
적어도 하나의 제1 노드에 대하여, 복수의 제2 공통 비밀을 결정하는 것 -각각의 상기 제2 공통 비밀은 상기 제1 노드 및 각 제2 노드에 공통이며, 상기 제1 노드에서 상기 제1 노드의 상기 제1 개인 키 및 상기 제2 노드의 상기 제1 공개 키에 기초하여 결정되고, 상기 제2 노드에서 상기 제2 노드의 상기 제1 개인 키 및 상기 제1 노드의 상기 제1 공개 키에 기초하여 결정되며, 상기 제1 공통 비밀의 복수의 지분은 임계 수의 상기 지분으로 상기 제1 공통 비밀에 접근할 수 있지만 상기 임계 수 미만의 지분은 접근할 수 없도록 각각 적어도 하나의 각 제2 공통 비밀에 기초함 -;
적어도 하나의 제2 노드에 대하여, 적어도 하나의 각 제3 공통 비밀을 결정하는 것 - 상기 또는 각각의 각 제3 공통 비밀은 상기 제2 노드 및 각 제3 노드에 대해 공통이며, 상기 제2 노드에서 상기 제2 노드의 상기 제1 개인 키 및 상기 제3 노드의 상기 제1 공개 키에 기초하여 결정되고, 상기 제3 노드에서 상기 제3 노드의 상기 제1 개인 키 및 상기 제2 노드의 상기 제1 공개 키에 기초하여 결정되며, 상기 제1 공통 비밀의 적어도 하나의 지분은 적어도 하나의 각 상기 제3 공통 비밀에 기초함 -;
적어도 하나의 상기 제1 노드에서, 암호화 시스템의 각 비대칭 암호화 제2 키 쌍의 제2 개인 키에 기초하여, 상기 제1 노드에 알려진 상기 제1 공통 비밀의 적어도 하나의 지분을 암호화하는 것 - 상기 제2 키 쌍은 상기 제1 노드에 알려진 각 상기 제2 공통 비밀에 기초함 -;
적어도 하나의 상기 암호화된 지분을 상기 제1 노드로부터 상기 제2 키 쌍이 기초한 상기 제2 공통 비밀이 공통인 각 상기 제2 노드로 전송하는 것; 및
적어도 하나의 상기 제1 노드에서, 적어도 하나의 상기 제2 노드로부터, 상기 제2 노드에 알려지고 상기 암호화 시스템의 각 비대칭 암호화 제2 키 쌍의 제2 개인 키에 기초하여 암호화된 상기 제1 비밀의 적어도 하나의 각 지분을 수신하는 것 - 상기 제2 키 쌍은 각각의 상기 복수의 노드가 상기 제1 공통 비밀의 상기 임계 수의 지분에 도달할 수 있도록 상기 제1 노드 및 상기 제2 노드에 공통인 제2 공통 비밀에 기초함 -을 포함하는 방법. - 제1항에 있어서, 복수의 상기 암호화된 지분은 대응하는 상기 노드에 알려진 복수의 상기 공통 비밀의 조합에 각각 기초하는 방법.
- 제2항에 있어서, 복수의 상기 암호화된 지분은 대응하는 상기 노드에 알려진 복수의 상기 공통 비밀의 적어도 하나의 각 XOR 조합에 기초하는 방법.
- 제2항 또는 제3항에 있어서, 복수의 상기 암호화된 지분은 대응하는 상기 노드에 알려진 복수의 상기 공통 비밀의 곱셈 조합에 기초하는 방법.
- 제4항에 있어서, 상기 곱셈 조합은 (x 1 . x 2 . x 3 ) mod n의 형태이며, x 1 , x 2 , x 3 는 노드에 알려진 공통 비밀이고, n은 암호화 시스템의 차수인 방법.
- 제1항 내지 제5항 중 어느 한 항에 있어서, 복수의 상기 지분은 제1 다항 함수의 지분이고, 상기 제1 비밀은 적어도 임계 수의 상기 지분의 다항식 보간에 의해 결정되는 방법.
- 제6항에 있어서,
상기 제1 공통 비밀의 적어도 임계 수의 지분을 수신하는 것 - 각각의 상기 지분은 상기 제1 다항 함수의 각 값에 대응함 -; 및
상기 제1 공통 비밀을 결정하기 위하여, 복수의 알려진 값의 상기 지분으로부터 상기 제1 다항 함수의 계수를 결정함으로써, 상기 제1 다항 함수를 결정하는 것을 더 포함하는 방법. - 제7항에 있어서, 상기 제1 다항 함수를 결정하는 단계는 오류 수정 알고리즘을 실행하는 것을 포함하는 방법.
- 제8항에 있어서, 상기 제1 다항 함수를 결정하는 단계는 Berlekamp-Welch 디코딩 알고리즘을 실행하는 것을 포함하는 방법.
- 제7항 또는 제8항에 있어서, 상기 제1 다항 함수를 결정하는 단계는:
오류 위치(error locator) 다항 함수 및 제2 다항 함수를 정의하는 것 - 상기 제2 다항 함수는 상기 제1 다항 함수와 상기 오류 위치 다항 함수의 곱임 -, 복수의 알려진 값의 상기 부분 서명으로부터 상기 제2 다항 함수 및 상기 오류 위치 다항 함수의 계수를 결정하는 것, 및 상기 제1 공통 비밀을 결정하기 위하여, 상기 제2 다항 함수 및 상기 오류 위치 다항 함수로부터 상기 제1 다항 함수를 결정하는 것을 포함하는 방법. - 제1항 내지 제10항 중 어느 한 항에 있어서, 적어도 하나의 상기 암호화 시스템이 동형(homomorphic) 속성을 가지는 방법.
- 제11항에 있어서, 적어도 하나의 상기 암호화 시스템이 타원 곡선 암호화 시스템인 방법.
- 제1항 내지 제12항 중 어느 한 항에 있어서,
적어도 제1 노드 마스터 개인 키(V1C) 및 상기 제1 및 제2 노드와 공통인 결정성 키(DK)에 기초하여 적어도 하나의 상기 제1 노드의 상기 제1 개인 키를 결정하는 것; 및
상기 제2 노드의 마스터 공개 키(P1S) 및 상기 공통 암호화 시스템을 사용하는 상기 결정성 키(DK)의 암호화에 기초하여 적어도 하나의 상기 제2 노드의 상기 제1 공개 키(P2S)를 결정하는 것을 더 포함하는 방법. - 제13항에 있어서, 상기 결정성 키(DK)는 메시지(M)에 기초하는 방법.
- 제14항에 있어서,
-상기 메시지(M) 및 상기 제1 노드의 상기 제1 개인 키(V2C)에 기초하여 제1 서명된 메시지(SM1)를 생성하는 것; 및
-상기 통신 네트워크를 통하여, 상기 제1 서명된 메시지(SM1)를 상기 제2 노드(S)로 전송하는 것을 더 포함하며,
상기 제1 서명된 메시지(SM1)는 상기 제1 노드(C)를 인증하기 위하여 상기 제1 노드의 제1 공개 키(P2C)로 검증될 수 있는 방법. - 제14항 또는 제15항에 있어서,
-상기 통신 네트워크를 통하여, 상기 제2 노드(S)로부터 제2 서명된 메시지(SM2)를 수신하는 것;
-상기 제2 노드의 상기 제1 공개 키(P2S)로 상기 제2 서명된 메시지(SM2)를 검증하는 것; 및
-상기 제2 서명된 메시지(SM2)의 검증 결과에 기초하여 상기 제2 노드(S)를 인증하는 것을 더 포함하며,
상기 제2 서명된 메시지(SM2)는 상기 메시지(M) 또는 제2 메시지(M2), 및 상기 제2 노드의 상기 제1 개인 키(V2S)에 기초하여 생성된 것인 방법. - 제14항 내지 제16항 중 어느 한 항에 있어서,
-메시지(M)를 생성하는 것; 및
-통신 네트워크를 통하여, 상기 메시지(M)를 상기 제2 노드(S)로 전송하는 것을 더 포함하는 방법. - 제14항 내지 제17항 중 어느 한 항에 있어서,
-상기 통신 네트워크를 통하여, 상기 제2 노드(S)로부터 상기 메시지(M)를 수신하는 것을 더 포함하는 방법. - 제14항 내지 제18항 중 어느 한 항에 있어서,
-상기 통신 네트워크를 통하여, 다른 노드로부터 상기 메시지(M)를 수신하는 것을 더 포함하는 방법. - 제14항 내지 제19항 중 어느 한 항에 있어서,
-데이터 저장소 및/또는 상기 제1 노드(C)와 연관된 입력 인터페이스로부터 상기 메시지(M)를 수신하는 것을 포함하는 방법. - 제13항 내지 제20항 중 어느 한 항에 있어서, 상기 암호화 시스템은 타원 곡선 암호화(ECC) 시스템이며, 상기 제1 노드 마스터 공개 키(P1C) 및 제2 노드 마스터 공개 키(P1S)는 각 제1 노드 마스터 개인 키(V1C) 및 제2 노드 마스터 개인 키(V1S) 및 생성기(G)의 타원 곡선 점 곱셈에 기초하는 방법.
- 제13항 내지 제21항 중 어느 한 항에 있어서,
-상기 통신 네트워크를 통하여 상기 제2 노드 마스터 공개 키(P1S)를 수신하는 단계; 및
-상기 제1 노드(C)와 연관된 데이터 저장소에 상기 제2 노드 마스터 공개 키(P1S)를 저장하는 단계를 더 포함하는 방법. - 제13항 내지 제22항 중 어느 한 항에 있어서,
-제1 노드(C)에서, 상기 제1 노드 마스터 개인 키(V1C) 및 상기 제1 노드 마스터 공개 키(P1C)를 생성하는 단계;
-상기 통신 네트워크를 통하여, 상기 제1 노드 마스터 공개 키(P1C)를 상기 제2 노드(S) 및/또는 다른 노드로 전송하는 단계; 및
-상기 제1 노드(C)와 연관된 제1 데이터 저장소에 상기 제1 노드 마스터 개인 키(V1C)를 저장하는 단계를 더 포함하는 방법. - 제13항 내지 제23항 중 어느 한 항에 있어서,
-상기 통신 네트워크를 통하여, 적어도 하나의 상기 공통 비밀(CS)을 결정하는 방법을 위하여 공통 암호화 시스템을 사용함을 나타내는 통지를 상기 제2 노드로 전송하는 것을 더 포함하며,
상기 제1 노드 마스터 개인 키(V1C) 및 상기 제1 노드 마스터 공개 키(P1C)를 생성하는 단계는:
-상기 공통 암호화 시스템에서 지정된 허용 범위 내의 임의의 정수에 기초하여 상기 제1 노드 마스터 개인 키(V1C)를 생성하는 것; 및
-상기 제1 노드 마스터 개인 키(V1C)의 암호화에 기초하여 상기 제1 노드 마스터 공개 키(P1C)를 결정하는 것을 포함하는 방법. - 제13항 내지 제24항 중 어느 한 항에 있어서, 상기 공통 암호화 시스템은 공통 생성기(G)가 있는 타원 곡선 암호화(ECC) 시스템이며, 상기 제1 노드 마스터 공개 키(P1C)는 다음 공식에 따라 상기 제1 노드 마스터 개인 키(V1C) 및 상기 공통 생성기(G)의 타원 곡선 점 곱셈에 기초하여 결정되는 방법.
P1C= V1C x G - 제13항 내지 제25항 중 어느 한 항에 있어서,
-메시지(M)의 해시를 결정하는 것에 기초하여 상기 결정성 키(DK)를 결정하는 것을 더 포함하며,
상기 제1 노드의 상기 제1 개인 키(V2C)를 결정하는 단계는 다음 공식에 따라 상기 제1 노드 마스터 개인 키(V1C) 및 상기 결정성 키(DK)의 스칼라 덧셈에 기초하고,
V2C = V1C + DK
상기 제2 노드의 상기 제1 공개 키(P2S)를 결정하는 단계는 다음 공식에 따라 상기 결정성 키(DK)와 상기 공통 생성기(G)의 타원 곡선 점 곱셈이 타원 곡선 점 덧셈된 상기 제2 노드 마스터 공개 키(P1S)에 기초하며,
P2S = P1S + DK x G
상기 결정성 키(DK)는 이전 결정성 키의 해시를 결정하는 것에 기초할 수 있는 방법. - 복수의 노드 사이의 보안 통신 방법에 있어서, 상기 방법은:
-제1항 내지 제26항 중 어느 한 항에 따른 방법에 의해 복수의 노드 사이에서 제1 공통 비밀을 공유하는 것;
-상기 제1 공통 비밀에 기초하여 대칭 키를 결정하는 것;
-상기 대칭 키를 사용하여, 제1 통신 메시지를 암호화된 제1 통신 메시지로 암호화하는 것; 및
-통신 네트워크를 통하여, 상기 복수의 노드 중 하나로부터 상기 복수의 노드 중 다른 노드로 상기 암호화된 제1 통신 메시지를 전송하는 것을 포함하는 방법. - 제27항에 있어서,
-통신 네트워크를 통하여, 상기 복수의 노드 중 한 노드로부터 암호화된 제2 통신 메시지를 수신하는 것; 및
-상기 대칭 키를 사용하여, 상기 암호화된 제2 통신 메시지를 제2 통신 메시지로 해독하는 것을 더 포함하는 방법. - 복수의 노드 사이에서 온라인 트랜잭션을 수행하는 방법에 있어서, 상기 방법은:
-제1항 내지 제26항 중 어느 한 항에 따른 방법에 의해 복수의 노드 사이에서 제1 공통 비밀을 공유하는 것;
-상기 제1 공통 비밀에 기초하여 대칭 키를 결정하는 것;
-상기 대칭 키를 사용하여, 제1 트랜잭션 메시지를 암호화된 제1 트랜잭션 메시지로 암호화하는 것; 및
-통신 네트워크를 통하여, 상기 복수의 노드 중 제1 노드로부터 상기 복수의 노드 중 다른 노드로 상기 암호화된 제1 트랜잭션 메시지를 전송하는 것을 포함하는 방법. - 프로세서; 및
상기 프로세서에 의한 실행의 결과로서, 시스템이 제1항 내지 제29항 중 어느 한 항에 따른 방법을 수행하게 하는 실행 가능한 명령을 포함하는 메모리를 포함하는 시스템. - 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 상기 컴퓨터 시스템이 제1항 내지 제29항 중 어느 한 항에 따른 방법을 수행하게 하는 실행 가능한 명령을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1815396.5A GB201815396D0 (en) | 2018-09-21 | 2018-09-21 | Computer implemented system and method |
GB1815396.5 | 2018-09-21 | ||
PCT/IB2019/057632 WO2020058806A1 (en) | 2018-09-21 | 2019-09-11 | Computer implemented system and method for sharing a common secret |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210063378A true KR20210063378A (ko) | 2021-06-01 |
Family
ID=64024331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217011769A KR20210063378A (ko) | 2018-09-21 | 2019-09-11 | 공통 비밀을 공유하는 컴퓨터 구현 시스템 및 방법 |
Country Status (9)
Country | Link |
---|---|
US (3) | US11616641B2 (ko) |
EP (1) | EP3854052A1 (ko) |
JP (1) | JP2022500920A (ko) |
KR (1) | KR20210063378A (ko) |
CN (1) | CN112771832A (ko) |
GB (1) | GB201815396D0 (ko) |
SG (1) | SG11202102221SA (ko) |
TW (1) | TWI807103B (ko) |
WO (1) | WO2020058806A1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022552420A (ja) * | 2019-10-18 | 2022-12-15 | ティービーシーエーソフト,インコーポレイテッド | 証明書認証用の分散台帳に基づく方法およびシステム |
US11580240B2 (en) * | 2020-03-24 | 2023-02-14 | Kyndryl, Inc. | Protecting sensitive data |
GB2605784A (en) * | 2021-04-09 | 2022-10-19 | Vodafone Group Services Ltd | SIM cryptographic key storage |
CN115037441B (zh) * | 2022-07-07 | 2023-11-10 | 三未信安科技股份有限公司 | 一种基于同态运算的sm2协同签名方法、装置及系统 |
CN115080723B (zh) * | 2022-08-23 | 2022-11-11 | 云南师范大学 | 一种阅读理解问题的自动生成方法 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0639907B1 (en) | 1993-08-17 | 1999-12-08 | R3 Security Engineering AG | Digital signature method and key agreement method |
DE69534603T2 (de) | 1994-07-29 | 2006-08-03 | Certicom Corp., Mississauga | Verschlüsselungssystem für elliptische kurve |
AU5266596A (en) | 1995-04-21 | 1996-11-07 | Certicom Corp. | Method for signature and session key generation |
US6785813B1 (en) | 1997-11-07 | 2004-08-31 | Certicom Corp. | Key agreement and transport protocol with implicit signatures |
US5761305A (en) | 1995-04-21 | 1998-06-02 | Certicom Corporation | Key agreement and transport protocol with implicit signatures |
CA2176972C (en) | 1995-05-17 | 2008-11-25 | Scott A. Vanstone | Key agreement and transport protocol with implicit signatures |
GB9510035D0 (en) | 1995-05-18 | 1995-08-02 | Cryptech Systems Inc | Strengthened public key protocols |
US5999626A (en) | 1996-04-16 | 1999-12-07 | Certicom Corp. | Digital signatures on a smartcard |
US6078667A (en) | 1996-10-10 | 2000-06-20 | Certicom Corp. | Generating unique and unpredictable values |
CA2235359C (en) | 1998-03-23 | 2012-04-10 | Certicom Corp. | Implicit certificate scheme with ca chaining |
DE19847944A1 (de) * | 1998-10-09 | 2000-04-13 | Deutsche Telekom Ag | Verfahren zum Etablieren eines gemeinsamen Schlüssels zwischen einer Zentrale und einer Gruppe von Teilnehmern |
JP2001268070A (ja) * | 2000-03-22 | 2001-09-28 | Advanced Mobile Telecommunications Security Technology Research Lab Co Ltd | キーエスクロー方式 |
CN101023622B (zh) * | 2004-04-02 | 2010-12-08 | 捷讯研究有限公司 | 配置和供应无线手持设备 |
US7958356B1 (en) * | 2006-09-29 | 2011-06-07 | Netapp, Inc. | System and method for establishing a shared secret among nodes of a security appliance |
EP2504973B1 (en) * | 2009-11-25 | 2016-11-16 | Security First Corp. | Systems and methods for securing data in motion |
EP2363977B1 (en) * | 2010-02-26 | 2012-10-24 | Research In Motion Limited | Methods and devices for computing a shared encryption key |
US8510561B2 (en) * | 2010-02-26 | 2013-08-13 | Research In Motion Limited | Methods and devices for computing a shared encryption key |
JP5750728B2 (ja) * | 2011-10-19 | 2015-07-22 | 国立研究開発法人産業技術総合研究所 | 鍵共有システム、鍵生成装置、及びプログラム |
US20150213433A1 (en) | 2014-01-28 | 2015-07-30 | Apple Inc. | Secure provisioning of credentials on an electronic device using elliptic curve cryptography |
CN103825733A (zh) * | 2014-02-28 | 2014-05-28 | 华为技术有限公司 | 基于组合公钥密码体制的通信方法、装置及系统 |
US10356054B2 (en) * | 2014-05-20 | 2019-07-16 | Secret Double Octopus Ltd | Method for establishing a secure private interconnection over a multipath network |
WO2016049225A1 (en) * | 2014-09-23 | 2016-03-31 | The Regents Of The University Of California | Provably secure virus detection |
US9813234B2 (en) * | 2015-05-11 | 2017-11-07 | The United States of America, as represented by the Secretery of the Air Force | Transferable multiparty computation |
US9735958B2 (en) | 2015-05-19 | 2017-08-15 | Coinbase, Inc. | Key ceremony of a security system forming part of a host computer for cryptographic transactions |
US20160352710A1 (en) * | 2015-05-31 | 2016-12-01 | Cisco Technology, Inc. | Server-assisted secure exponentiation |
US9705859B2 (en) * | 2015-12-11 | 2017-07-11 | Amazon Technologies, Inc. | Key exchange through partially trusted third party |
GB2561728B (en) | 2016-02-23 | 2021-09-22 | Nchain Holdings Ltd | Determining a common secret for the secure exchange of information and hierarchical deterministic cryptographic keys |
MX2018009355A (es) * | 2016-02-23 | 2018-12-19 | Nchain Holdings Ltd | Almacenamiento y transferencia seguros resistentes a perdida de multiples partes de claves criptograficas para sistemas a base de cadena de bloques en conjunto con un sistema de administracion de billetera. |
JP6495858B2 (ja) * | 2016-04-04 | 2019-04-03 | 日本電信電話株式会社 | サーバ装置、誤り訂正システム、誤り訂正方法、プログラム |
CN106357401B (zh) * | 2016-11-11 | 2019-09-10 | 武汉理工大学 | 一种私钥存储及使用方法 |
US10965448B1 (en) * | 2017-05-03 | 2021-03-30 | Board Of Trustees Of The University Of Illinois | Dynamic distributed storage for scaling blockchain |
IL256234A (en) * | 2017-12-10 | 2018-01-31 | Kipnis Aviad | Computation using somewhat homomorphic encryption |
US20190305940A1 (en) * | 2018-03-28 | 2019-10-03 | Ca, Inc. | Group shareable credentials |
-
2018
- 2018-09-21 GB GBGB1815396.5A patent/GB201815396D0/en not_active Ceased
-
2019
- 2019-09-11 KR KR1020217011769A patent/KR20210063378A/ko unknown
- 2019-09-11 WO PCT/IB2019/057632 patent/WO2020058806A1/en unknown
- 2019-09-11 EP EP19769921.8A patent/EP3854052A1/en active Pending
- 2019-09-11 JP JP2021514094A patent/JP2022500920A/ja active Pending
- 2019-09-11 SG SG11202102221SA patent/SG11202102221SA/en unknown
- 2019-09-11 CN CN201980062151.0A patent/CN112771832A/zh active Pending
- 2019-09-11 US US17/278,198 patent/US11616641B2/en active Active
- 2019-09-20 TW TW108134023A patent/TWI807103B/zh active
-
2023
- 2023-02-06 US US18/106,302 patent/US12034840B2/en active Active
-
2024
- 2024-05-17 US US18/668,047 patent/US20240305451A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11616641B2 (en) | 2023-03-28 |
JP2022500920A (ja) | 2022-01-04 |
TW202025666A (zh) | 2020-07-01 |
CN112771832A (zh) | 2021-05-07 |
US20210367772A1 (en) | 2021-11-25 |
GB201815396D0 (en) | 2018-11-07 |
TWI807103B (zh) | 2023-07-01 |
WO2020058806A1 (en) | 2020-03-26 |
US20240305451A1 (en) | 2024-09-12 |
EP3854052A1 (en) | 2021-07-28 |
SG11202102221SA (en) | 2021-04-29 |
US12034840B2 (en) | 2024-07-09 |
US20230299947A1 (en) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11936774B2 (en) | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys | |
CN111066285B (zh) | 基于sm2签名恢复公钥的方法 | |
US12034840B2 (en) | Computer implemented system and method for sharing a common secret preliminary class | |
US9705683B2 (en) | Verifiable implicit certificates | |
US11979492B2 (en) | Computer-implemented system and method for distributing shares of digitally signed data | |
CN113711564A (zh) | 用于加密数据的计算机实现的方法和系统 | |
TW202232913A (zh) | 共享金鑰產生技術 | |
CN117917041A (zh) | 生成共享加密密钥 | |
US20240380578A1 (en) | Computer-implemented system and method for distributing shares of digitally signed data | |
CN118266189A (zh) | 生成共享加密密钥 | |
KR20240141783A (ko) | 셰어드 개인 키의 생성 | |
CN117837127A (zh) | 生成数字签名 |