KR20210082201A - 디지털 서명된 데이터의 지분 분배를 위한 컴퓨터 구현 시스템 및 방법 - Google Patents
디지털 서명된 데이터의 지분 분배를 위한 컴퓨터 구현 시스템 및 방법 Download PDFInfo
- Publication number
- KR20210082201A KR20210082201A KR1020217015256A KR20217015256A KR20210082201A KR 20210082201 A KR20210082201 A KR 20210082201A KR 1020217015256 A KR1020217015256 A KR 1020217015256A KR 20217015256 A KR20217015256 A KR 20217015256A KR 20210082201 A KR20210082201 A KR 20210082201A
- Authority
- KR
- South Korea
- Prior art keywords
- input
- secret
- encrypting
- output
- encryption
- 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/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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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
-
- 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
- H04L9/3073—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 involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
-
- 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/3236—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 cryptographic hash functions
- H04L9/3239—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 cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H04L2209/38—
-
- 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/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
비트코인 블록체인 상의 트랜잭션과 같은 공유 비밀을 복수의 참여자들 사이에 분배하는 컴퓨터 구현 방법이 개시된다. 방법은 매핑 단계에 대한 복수의 입력이 참여자들에게 공통인 타원 곡선 암호화 시스템의 타원 곡선의 각 타원 곡선 점에 매핑되는 매핑 단계를 포함한다. 제1 암호화 단계에서, 타원 곡선 암호화 시스템의 공개-개인 키 쌍의 대응하는 개인 키에 의해 해독되도록 적응된 출력을 제공하기 위하여 복수의 상기 타원 곡선 점이 공개-개인 키 쌍의 공개 키에 의해 암호화되고, 제2 암호화 단계에서 상기 제2 암호화 단계에 대한 적어도 하나의 입력의 복수의 부분이 상기 참여자들에게 알려진 급수의 각 항에 의해 곱해진다. 비밀 공유 단계에서 상기 비밀 공유 단계에 대한 입력의 복수의 지분이 복수의 상기 참여자에게 분배되어 상기 입력이 상기 지분의 임계 수에 대해 접근 가능하고 상기 지분의 상기 임계 수보다 적으면 접근할 수 없다.
Description
이 개시는 일반적으로 비밀 공유에 관한 것으로, 특히 디지털 서명된 데이터의 지분 분배에 관한 것이다. 개시는 서명된 블록체인 트랜잭션의 지분 분배에 사용하기에 특히 적합하지만, 이에 제한되지 않는다.
이 문서에서 우리는 모든 형태의 전자, 컴퓨터 기반, 분산 원장을 포함하기 위하여 '블록체인'이라는 용어를 사용한다. 이는 합의 기반(consensus-based) 블록체인 및 트랜잭션 체인 기술, 허가 및 비허가 원장, 공유 원장 및 그 변형을 포함한다. 블록체인 기술의 가장 널리 알려진 응용은 비트코인 원장이지만, 다른 블록체인 구현이 제안되고 개발되었다. 비트코인은 편의 및 예시의 목적으로 본원에서 언급될 수 있지만, 개시는 비트코인 블록체인과 함께 사용하는 것으로 제한되지 않으며, 대안적인 블록체인 구현 및 프로토콜이 본 개시의 범위 내에 속한다는 점에 유의하여야 한다. 용어 "사용자"는 본원에서 사람 또는 프로세서 기반 자원을 지칭할 수 있다.
블록체인은 트랜잭션으로 구성된 블록으로 구성된 컴퓨터 기반 탈중앙화된(decentralised) 분산 시스템으로 구현되는 P2P 전자 원장이다. 각 트랜잭션은 블록체인 시스템의 참여자 사이의 디지털 자산 제어 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력과 적어도 하나의 출력을 포함한다. 각 블록에는 이전 블록의 해시가 포함되어 블록이 함께 연결되어 처음부터 블록체인에 기록된 모든 트랜잭션에 대한 영구적이고 변경 불가능한 기록을 생성한다. 트랜잭션에는 그 입력 및 출력에 내장된 스크립트로 알려진 작은 프로그램이 포함되며, 이는 트랜잭션의 출력에 접근할 수 있는 방법과 대상을 지정한다. 비트코인 플랫폼에서, 이러한 스크립트는 스택 기반 스크립트 언어를 사용하여 작성된다.
트랜잭션이 블록체인에 기록되려면, "유효성 검증(validate)"되어야 한다. 네트워크 노드(채굴자)는 각 트랜잭션이 유효한지 보장하기 위한 작업을 수행하며, 유효하지 않은 트랜잭션은 네트워크에서 거부된다. 노드에 설치된 소프트웨어 클라이언트는 잠금 및 잠금 해제 스크립트를 실행하여 사용되지 않은 트랜잭션(UTXO)에 대하여 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 참(TRUE)으로 평가되면, 트랜잭션은 유효하고 트랜잭션이 블록체인에 기록된다. 따라서, 트랜잭션이 블록체인에 기록되려면, i) 트랜잭션을 수신하는 제1 노드에 의해 검증되어야 하며-트랜잭션이 유효성 검증되면, 노드는 이를 네트워크의 다른 노드에 중계하고, ii) 채굴자가 구축한 새로운 블록에 추가되어야 하며, iii) 채굴, 즉 과거 트랜잭션의 공개 원장에 추가되어야 한다.
블록체인 기술이 암호 화폐 구현의 사용에 대해 가장 널리 알려져 있지만, 디지털 기업가들은 새로운 시스템을 구현하기 위하여 비트코인이 기반으로 하는 암호화 보안 시스템과 블록체인에 저장할 수 있는 데이터 모두의 사용을 모색하기 시작하였다. 블록체인이 암호 화폐 영역에 국한되지 않는 자동화된 작업과 프로세스에 사용될 수 있다면 매우 유리할 것이다. 이러한 해결책은 블록체인의 이점(예를 들어, 이벤트에 대한 영구 변조 방지 기록, 분산 처리 등)을 이용하면서 그 응용에서 더 다양하게 활용할 수 있다.
블록체인 기술은 그 구현에서, 예를 들어 암호 또는 디지털 서명의 지분을 분배하여 트랜잭션 서명의 임계 값을 가능하게 하기 위하여 비밀 공유 기술을 사용한다.
예를 들어 임계 값 서명 프로세스와 같은 기존의 비밀 공유 기술은 생성된 개인 키가 정렬이나 조직화가 거의 또는 전혀 없는 데이터 구조로 패킹되기 때문에 확장성이 좋지 않다.
따라서 더 효율적으로 확장될 수 있는 개선된 비밀 공유 방법을 제공하는 것이 바람직하다.
이러한 개선된 해결책이 이제 고안되었다.
따라서, 본 개시에 따라, 첨부된 청구 범위에 정의된 바와 같은 방법이 제공된다.
개시에 따르면, 복수의 참여자 간에 공유 비밀을 분배하는 컴퓨터 구현(computer-implemented) 방법이 제공될 수 있으며, 방법은:
제1 매핑 단계에 대한 복수의 입력이 참여자들에게 공통인 타원 곡선 암호화 시스템의 타원 곡선의 각 타원 곡선 점에 매핑되는 상기 제1 매핑 단계;
타원 곡선 암호화 시스템의 공개-개인 키 쌍의 대응하는 개인 키에 의해 해독되도록 적응된 출력을 제공하기 위하여 복수의 상기 타원 곡선 점이 공개-개인 키 쌍의 공개 키에 의해 암호화되는 제1 암호화 단계;
제2 암호화 단계에 대한 적어도 하나의 입력의 복수의 부분이 상기 참여자들에게 알려진 급수의 각 항에 의해 곱해지는 상기 제2 암호화 단계; 및
비밀 공유 단계에 대한 입력의 복수의 지분이 복수의 상기 참여자에게 분배되어 상기 입력이 상기 지분의 임계 수에 대해 접근 가능하고 상기 지분의 상기 임계 수보다 적으면 접근할 수 없는 상기 비밀 공유 단계를 포함한다.
공유 비밀이 타원 곡선 점으로 위장되어 권한이 없는 당사자가 탐지하기 더 어려우므로, 이는 향상된 보안의 이점을 제공한다.
상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제1 암호화 단계 또는 상기 제2 암호화 단계의 출력에 기반할 수 있다.
상기 제1 암호화 단계의 적어도 하나의 입력이 공유 비밀에 기반할 수 있고, 상기 제2 암호화 단계의 적어도 하나의 입력이 상기 제1 암호화 단계의 출력에 기반할 수 있고, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제2 암호화 단계의 출력에 기반할 수 있다.
상기 제2 암호화 단계의 적어도 하나의 입력이 공유 비밀에 기반할 수 있고, 상기 제1 암호화 단계의 적어도 하나의 입력이 상기 제2 암호화 단계의 출력에 기반할 수 있고, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제1 암호화 단계의 출력에 기반할 수 있다.
상기 제1 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계 또는 상기 제2 암호화 단계의 출력에 기반할 수 있다.
다른 단계 중 적어도 하나보다 먼저 비밀 공유 단계를 수행함으로써, 이는 프로세스의 계산 효율성을 향상시키는 이점을 제공한다.
상기 비밀 공유 단계의 적어도 하나의 입력이 공유 비밀에 기반할 수 있고, 상기 제2 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계의 출력에 기반할 수 있고, 제1 암호화 단계의 적어도 하나의 입력이 상기 제2 암호화 단계의 출력에 기반할 수 있다.
상기 제2 암호화 단계의 적어도 하나의 입력이 공유 비밀에 기반할 수 있고, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제2 암호화 단계의 출력에 기반할 수 있고, 제1 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계의 출력에 기반할 수 있다.
상기 제2 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계 또는 상기 제1 암호화 단계의 출력에 기반할 수 있다.
상기 비밀 공유 단계의 적어도 하나의 입력이 공유 비밀에 기반할 수 있고, 상기 제1 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계의 출력에 기반할 수 있고, 제2 암호화 단계의 적어도 하나의 입력이 상기 제1 암호화 단계의 출력에 기반할 수 있다.
상기 제1 암호화 단계의 적어도 하나의 입력이 공유 비밀에 기반할 수 있고, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제1 암호화 단계의 출력에 기반할 수 있고, 상기 제2 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계의 출력에 기반할 수 있다.
제2 암호화 단계는 배낭 알고리즘(knapsack algorithm)을 수행하는 것을 포함할 수 있다.
이는 방법의 효율성을 향상시키는 이점을 제공한다.
제2 암호화 단계는 스턴 급수(Stern series)에 기반한 상기 급수를 포함할 수 있다.
이는 알고리즘을 실행하기 위한 시간 복잡성을 줄여 효율성을 더 높일 수 있는 이점을 제공한다.
제2 암호화 단계는 참여자에게 알려진 항의 거듭제곱을 포함하는 상기 급수를 포함할 수 있다.
항은 참여자 사이에 공유된 메시지에 기반할 수 있다.
제2 암호화 단계는 초증가 급수(super increasing series)를 포함할 수 있다.
이는 공유 비밀을 더 효율적으로 해독할 수 있는 이점을 제공한다.
제1 매핑 단계는 상기 입력에 기반한 좌표를 갖는 타원 곡선 점을 결정하는 것을 포함할 수 있다.
좌표는 참여자에게 알려진 양이 곱해진 상기 입력에 기반할 수 있다.
이는 향상된 보안을 제공하는 이점을 제공한다.
제1 암호화 단계는 상기 제1 암호화 단계로의 입력을 나타내는 정수가 곱해진 타원 곡선 점을 포함하는 항을 결정하는 것을 포함할 수 있다.
상기 제1 암호화 단계는 참여자의 공개 키 및 임시 키에 기반하여 항을 결정하는 것을 포함할 수 있다.
방법은, 적어도 하나의 참여자에게, 임시 키가 곱해진 타원 곡선 암호화 시스템의 생성기 점에 기반한 타원 곡선 점 및 임시 키가 곱해진 참여자의 공개 키에 기반한 타원 곡선 점을 전송하는 것을 더 포함할 수 있다.
공유 비밀은 디지털 서명된 메시지일 수 있다.
디지털 서명된 메시지는 블록체인 트랜잭션일 수 있다.
개시는 또한
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템이 본원에 기재된 컴퓨터 구현 방법의 임의의 실시예를 수행하도록 하는, 실행 가능한 명령을 포함하는 메모리를 포함하는 시스템을 제공한다.
개시는 또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템이 본원에 기재된 컴퓨터 구현 방법의 실시예를 적어도 수행하도록 하는, 실행 가능한 명령을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 제공한다.
본 개시는 디지털 서명에서 메시지 복구 및 변환 가능성을 추가할 뿐만 아니라 기밀성, 인증, 부인 방지를 보장한다. 개시는 데이터의 보안 전송을 가능하게 한다(예컨대 비밀 또는 심지어 키의 로그인 스크립트). 또한 이 개시는 금융 시스템의 키 전용 공격 및 메시지 공격과 같은 공격으로부터 보호한다. 전반적으로, 개시의 실시예는 비트코인 트랜잭션과 관련된 외부 정보 및 다른 사용을 위한 메시지의 통합을 허용하는 프로세스에 관한 것이다.
개시의 실시예의 키 분배 및 키 공유의 효율적인 패킹을 위한 메커니즘은 확산 및 혼동을 위한 단계를 추가함으로써 암호화 프로토콜에서 보안 정도를 향상시키는 키 데이터를 저장하는 프로세스에서 비선형성을 도입한다. 또한 키 공유의 효율적인 패킹은 해법을 효율적으로 확장할 수 있게 한다. 키 공유의 분산적 특성은 에스크로(ESCROW) 서비스를 포함하는 운영 모델을 가능하게 하며, 에스크로 에이전트는 어느 암호화된 비밀에 대한 지식 없이 전달 에이전트 역할을 하는 동시에 메시지를 모니터링, 유효성 검증, 송신 및 수신할 수 있다.
본 개시의 이들 및 다른 양상은 본원에 설명된 실시예로부터 명백하며 이를 참조하여 설명될 것이다. 이제 본 개시의 실시예가, 단지 예로서, 그리고 첨부된 도면을 참조하여 설명될 것이다.
도 1은 디지털 서명된 메시지의 지분을 분배하기 위한 본 개시를 구현하는 프로세스의 개략도이다.
도 2는 도 1의 프로세스의 일부를 상세하게 나타낸 것이다.
도 3은 도 1의 프로세스의 서명 생성 단계를 나타낸다.
도 4는 도 1의 프로세스의 암호화 단계를 나타낸다.
도 5는 도 1의 프로세스에 의해 암호화된 디지털 서명을 얻기 위한 메시지 복구 프로세스를 나타낸다.
도 6은 도 5의 프로세스에서 사용하기 위한 해독 프로세스를 나타낸다.
도 7은 다양한 실시예가 구현될 수 있는 컴퓨팅 환경을 나타내는 개략도이다.
도 2는 도 1의 프로세스의 일부를 상세하게 나타낸 것이다.
도 3은 도 1의 프로세스의 서명 생성 단계를 나타낸다.
도 4는 도 1의 프로세스의 암호화 단계를 나타낸다.
도 5는 도 1의 프로세스에 의해 암호화된 디지털 서명을 얻기 위한 메시지 복구 프로세스를 나타낸다.
도 6은 도 5의 프로세스에서 사용하기 위한 해독 프로세스를 나타낸다.
도 7은 다양한 실시예가 구현될 수 있는 컴퓨팅 환경을 나타내는 개략도이다.
바람직한 실시예의 설명
도 1을 참조하면, 디지털 서명된 메시지의 지분을 복수의 참여자들 간에 분배하는 프로세스가 설명된다. 먼저, 디지털 메시지 m(여기에서 m은 블록체인 트랜잭션과 같은 메시지 M의 해시 값)이 단계 10에서 타원 곡선 디지털 서명 알고리즘(elliptic curve digital signature algorithm; ECDSA)에 입력된다. ECDSA는 공개 및 개인 키 쌍과 임의의 정수인 임시 키(ephemeral key )를 생성하고, 아래에 더 자세히 설명된 방식으로 디지털 서명 (r, s)을 제공하는 것을 당업자는 이해할 것이다. 그런 다음 디지털 서명 (r, s)은 매핑 단계 20에서 참여자에게 공통인 타원 곡선 암호화 시스템의 타원 곡선 점에 매핑된다. 그런 다음 배낭(knapsack) 알고리즘 형태의 제1 암호화 단계 30이 단계 20에서 생성된 타원 곡선 점에 적용되어 디지털 서명 (r, s)의 암호화된 버전 (R, S)을 생성하고, 그 후 타원 곡선 암호(elliptic curve cryptography; ECC) 암호화 형태의 제2 암호화 단계 40이 디지털 서명 (r, s)의 암호화된 버전 (R, S)에 적용되어 디지털 서명 (r, s)의 이중 암호화 버전 (PR, PS)을 제공한다. 대안적으로, 제1 암호화 단계 20이 타원 곡선 암호(ECC) 암호화 단계일 수 있고 제2 암호화 단계 40이 배낭 알고리즘일 수 있다. 마지막으로, 디지털 서명 (r, s)의 이중 암호화 버전 (PR, PS)에 샤미르(Shamir)의 비밀 공유와 같은 비밀 공유 단계 50이 적용된다. ECC 암호화는 아래에서 더 자세히 설명하는 코블리츠(Koblitz) 방법에 의한 것일 수 있다.
본 개시의 실시예의 기술은 공유 체계에서 참여자 사이의 키 지분의 분배를 가능하게 한다. 이는 메시지 해독 및 메시지 복구를 위한 분산 메커니즘을 더욱 가능하게 한다. 동일한 메커니즘은 메시지를 암호화하는 데 사용될 수 있다. 이에 대해서는 아래에서 더 자세히 설명한다. 이 기술은 키 지분을 최대한 효율적으로 패킹하고 분배하기 위하여 예를 들어 "0/1 배낭 문제를 해결하기 위한 다른 접근법", Maya Hristakeva, 심슨 칼리지 컴퓨터 사이언스 학과, 인디아놀라, IA 50125 hristake@simpson.edu에 개시된 것과 같은 배낭 알고리즘을 사용하여 데이터 패킹 문제를 최적화한다.
배낭 알고리즘의 모든 변형 및 "0/1 배낭 문제를 해결하기 위한 다른 접근법", Maya Hristakeva, 심슨 칼리지 컴퓨터 사이언스 학과, 인디아놀라, IA 50125 hristake@simpson.edu에 정의된 표준 해결책은 구성 공간에 대한 검색의 일부 변형을 수행한다. 스턴 급수(Stern series)를 사용하여 배낭 알고리즘이 초기화되는 비율을 시드(seed)함으로써, 구성 공간의 검색을 체계적이고 철저하게 만들 수 있다. 이는 스턴 급수를 사용하여 가능한 모든 유리 분수를 한 번만 생성할 수 있기 때문에 알고리즘의 운영 효율성에 영향을 미친다. 분수가 1보다 작은 값으로 제한되는 경우 이는 배낭 알고리즘에 의해 패킹의 비율로 사용될 수 있으며, 이는 가능한 모든 키 공유 비율에 대한 철저한 검색을 구성한다. 서명 생성은 임의의 데이터 메시지로부터 수행된다.
바람직한 실시예의 이점
비트코인은 그 현재의 형식에서 메시지의 디지털 서명을 허용한다. 본 개시의 제안된 배낭 ECC 방법론의 도입은 이를 확장하여 아래에서 더 상세히 설명되는 바와 같이 서명 검색 및 해독을 가능하게 한다. 결과적으로 동일한 메커니즘을 메시지 검색에 사용할 수 있다.
본 개시의 체계에서, 서명의 암호문은 검증자 그룹에 전송될 수 있고 검증자는 그 후, 예를 들어, Hsu C.L 및 Wu T. C. (1998), '(t, n) 공유 검증을 사용한 인증된 암호화 체계', IEEE 회보-컴퓨터 및 디지털 기술 Vol. 145, no. 2, pp. 117-120 에서 설명된 바와 같이, 그룹 내의 n 검증자 중 임의의 t가 메시지를 해독하고 복구할 수 있는, (t, n) 임계 값 체계를 따르는 암호문을 해독할 수 있다. 이는 데이터 전송의 비밀성을 향상시키고 비트코인 교환과 직접 연관된 암호화된 세션의 통합을 허용한다.
예를 들어, Koblitz N. (1987), '타원 곡선 암호화 시스템', 계산 수학, pp. 203-209에 설명된 타원 곡선 암호(ECC)는 암호화된 정보를 교환하는 안전한 방법을 제공한다. (RSA와 같은 다른 공지의 암호화 방법과 달리) ECC는 도메인 파라미터를 비밀로 유지할 필요가 없다. 이 절차의 일부 애플리케이션은 자체 인증된 공개 키 암호화 시스템의 동시 검증과 함께 공개 키의 이 표시를 포함할 것이다. 배낭 알고리즘의 도입과 함께, 본 개시의 체계는 암호화 프로세스에 비선형성을 도입한다. 암호화 프로세스를 구성하는 키 정보가 정보가 사용되는 순서가 아닌 공간 효율적인 방식으로 패킹되기 때문에 비선형성이 생성된다. 이는 수신자에게 보내기 전에 배낭 알고리즘에 입력되는 암호화된 메시지에 대해 더 높은 수준의 보안을 제공한다. 그런 다음 수신자는 메시지를 복구하기 위해 해독에 이어 역 배낭 프로세스를 사용할 수 있다.
초기 도메인 파라미터는 비트코인 프로토콜 내에서 설정된다. 이 체계에서 사용되는 메시지 교환은 사용자의 비트코인 키를 기반으로 하는 ID를 사용하여 안전한 인증 메커니즘으로 사용할 수 있다. 이는 예를 들어 Nyberg K. 및 Rueppel R.A. (1993), '메시지 복구를 제공하는 DSA 기반의 새로운 서명 체계', ACM 컴퓨터 및 통신 보안, Vol.1, pp.58-61.에 설명된 것과 같이, 사용자와 서버 사이에서 챌린지 응답 메커니즘을 사용할 수 있게 한다.
클라이언트가 보유한 기본 공개 키는 아래에 자세히 설명되는 다중 서명 방법을 사용하여 확장될 수 있다.
이러한 방식으로, 클라이언트의 공개 키는 필요에 따라 그리고 각 인증된 세션에 대해, 예를 들어 Huang 등의 "미래의 안전한 웹 트랜잭션을 위한 타원 곡선 암호화의 FPGA 구현"(컨퍼런스 페이퍼, 2007년 1월)에 설명된 바와 같이 재계산될 수 있다. 비트코인 트랜잭션 내에서 디지털 서명 생성은 표준 ECDSA (r, s) 서명 프로세스를 따른다.
암호화 방법
도 2를 참조하면, 일반적인 메시지 암호화를 위한 프로세스에 대한 정보의 흐름이 설명된다. 정보 흐름을 통해 선택적 분기(70)가 있음을 알 수 있다. 선택적 분기(70)는 배낭 암호화를 수행하기 전에 (R, S) 쌍을 분할함으로써 암호화 방법의 보안을 더욱 강화할 수 있게 한다. 이는 아래에 자세히 설명된다.
ECDSA 서명
도 3을 참조하면, 도 1 및 2의 디지털 서명 단계 10이 더 자세히 도시된다. 비트코인 내에서 따르는 표준 프로세스에서와 같이, 트랜잭션의 교환 부분인 메시지(M)는 임의의 채굴자가 트랜잭션을 요구할 수 있는 특별한 형태의 공개 서명이 생성되지 않는 한 메시지 발신자에 의해 서명되고 수신자 주소를 포함한다. ECDSA 서명 내의 r 값 계산은 아래에 자세히 설명된다. r 값이 0과 같으면, 아래에 설명된 바와 같이 s 값의 계산에서 다른 난수 k가 선택된다.
여기에서 dA는 발신자의 개인 키이다.
비트코인은 SHA256 알고리즘을 사용하고 다음과 같이 메시지의 해시에 서명한다.
m = Hash256(M)
서명 생성 프로세스는 도 3에 표시된다. 비트코인 트랜잭션 (r, s)의 디지털 서명은 그 후 Rajaram Ramasamy R, Prabakar M.A, Devi M.I 및 Suguna M (2009), '배낭 기반 ECC 암호화 및 해독', 네트워크 보안 국제 저널, Vol.9, no.3, pp. 218-226에서 더 자세히 설명된 바와 같은 정의된 배낭 급수와 함께 단계 30(도 1 및 2)에서 배낭 알고리즘에 대한 입력으로 사용된다. 그러면 단계 40에서 ECC를 사용하여 암호화되는 인코딩된 값 (R, S)이 생성된다. 이는 값 R 및 S와 관련된 암호화된 점 (PR, PS)을 반환한다.
배낭 알고리즘을 사용하여 (r, s)를 변환하는 프로세스는 아래의 방법 1에 자세히 나타나 있다. 배낭 알고리즘에서 사용되는 급수는 문제를 더 쉽게 해결할 수 있도록 초증가 수열(super increasing sequence)이어야 한다. 초증가 수열은 수열의 다음 항이 모든 이전 항의 합보다 큰 수열로 정의된다. 초증가 배낭 급수를 풀기 위하여, 배낭의 총 중량을 가장 큰 중량 및 수열과 비교한다. 총 중량이 가장 큰 중량보다 낮으면, 이는 배낭에 없다. 총 중량이 가장 큰 중량보다 크면, 이는 배낭에 있다. 알고리즘은 총 중량에서 가장 큰 중량을 빼고 이를 다음으로 높은 숫자와 비교한다. 이 프로세스는 총합이 0에 도달할 때까지 반복된다. 총합이 0에 도달하지 않는 경우 해가 없다. 이는 초증가 수열의 속성이다.
스턴 급수를 사용하는 배낭 알고리즘
일반적인 배낭 문제와 알고리즘 해법은 "0/1 배낭 문제를 해결하기 위한 다른 접근법", Maya Hristakeva 심슨 칼리지 컴퓨터 사이언스 학과, 인디아놀라, IA 50125 hristake@simpson.edu에 설명되어 있다. 배낭 문제에 대한 모든 표준 해법은 구성 공간에 대한 검색을 포함하는 것을 알 수 있다. 배낭 알고리즘의 변형이 아래에 정의되어 있다. 이 알고리즘 내의 '배낭 급수'는 정수 K(K의 정의는 아래 참조) 값(여기에서 'p'는 모듈식 산술에서 사용되는 현장(in situ) 소수(타원 곡선의 차수)이고 'k'는 비밀 정수(임시 키)이며 mL은 이진 비트 문자열의 길이이다)을 곱하여 계산된다. 'ν'값은 인증된 각 클라이언트에 고유하며 새 임시 값 k는 비밀로 유지된다.
시간 복잡성을 줄이기 위하여 수정된 스턴 급수가 사용된다. 스턴 급수는 Reznick (2008), '유리 스턴 열거(the Stern Enumeration of the Rationals)의 규칙성', 정수 수열 저널에 더 자세히 설명되어 있다.
역 배낭 알고리즘에서 K = Hash(k) 값이 사용된다. 해시 값 K로부터 k를 결정하는 것은 계산적으로 실행 불가능하다.
배낭 알고리즘
여기에서 도 1, 2 및 4의 단계 30에 나타난 배낭 알고리즘을 더 자세히 설명한다.
먼저 급수가 정의된다.
ν는 ν = p+K를 곱하여 계산되고 여기에서 p는 모듈식 산술에서 사용되는 '소수 정수'이며 K = Hash(k)는 비밀 정수이다. L은 이진 비트 문자열의 길이이다.
값 ν는 각 키 및 따라서 주소에 대해 고유하며, 각각의 새로운 결정성 교환에서 갱신된다.
K = Hash(k) 값은 역 배낭 알고리즘에서 사용될 서명 (r,s)와 함께 전송되어야 한다. 이는 표준 다중 서명 방법(아래 참조)을 사용하여 당사자 간에 전송되어야 한다. 임의의 정수로 사용되는 임시 k 값만이 아니라 방법과 다중 서명 방법(아래 참조)을 사용하여 일련의 임의 값을 생성할 수 있다.
배낭 알고리즘에서 수정된 스턴 급수가 사용되는데 이는 0과 1 사이의 유리 값을 정렬하여 시간 복잡성을 줄여, 유리 값을 검색하기 쉽게 한다.
스턴 수열(Stern, M. A. "ber eine zahlentheoretische Funktion."J. reine angew. Math. 55, 193-220, 1858에 더 자세히 설명됨)는 다음과 같다.
스턴 수열의 값 사이의 비율은 잎이 모든 유리 분수를 구성하는 이진 트리를 생성하는 데 사용할 수 있다. 이는 Stern-Brochet 트리이다. 일단 열거된 유리 값 집합은 크기 순서대로 횡단될(traversed) 수 있다. 그런 다음 1보다 작거나 같은 유리 값의 하위 집합을 고려할 수 있다. 배낭 알고리즘의 검색 효율성을 향상시키는 데 사용할 수 있는 것은 이러한 열거 및 순서이다.
(1) 루트 1 1에서 시작하여 a, b → a, a + b; a + b, b 반복에 의해 생성되는 이진 트리를 고려한다. 숫자 a, a + b 및 a + b, b는 각각 a, b의 왼쪽 및 오른쪽 자식으로 지칭되며, a, b는 또한 자식의 어머니로 지칭된다. 유도에 의한 생성의 개념은 다음과 같이 정의된다: 루트 1, 1은 1세대를 형성한다. (n + 1) 세대는 n 세대 요소의 모든 자식의 집합이다. 이러한 반복으로 얻은 이진 트리를 Calkin-Wilf 트리라고 한다.
Stern-Brochot 트리의 메커닉은 아래에 자세히 설명된다.
배낭 알고리즘에 따르면, R은 식 (3)을 사용하여 계산된다. 배낭 급수는 ai로 표시되고 r의 이진 값은 xi를 사용하여 표시된다.
시스템의 S 값은 식 (4)를 사용하여 주어진다.
(R, S) 값은 타원 곡선 함수를 사용하여 암호화할 수 있다.
다른 값은 K로 교환할 수 있다. 이들은 서명에 사용된 원래 k 임의 값과 관련될 필요가 없다. 그러나, K = Hash(k)를 통합하면 나중에 비트코인 내에서 추가 스크립트 양식을 생성할 수 있다. (R, S)를 사용하면 이중 암호화 형태가 생성된다. 이는 후속 메시지 교환에 대한 인증과 기밀성을 모두 제공한다. Nyberg K. 및 Rueppel R.A. (1993), '메시지 복구를 제공하는 DSA 기반의 새로운 서명 체계', ACM 컴퓨터 및 통신 보안, Vol.1, pp.58-61에 설명된 Menezes-Vanstone 타원 곡선 알고리즘과 유사한 형식에서, 입력은 약 160 비트 블록으로 분할된다. 수신자의 공개 키와 함께 ECC 알고리즘 입력을 사용하여 부분 블록을 수정하거나 분할한다. 에스크로 에이전트 또는 클라우드 기반 서버가 교환에 사용된다. 각 조각은 또한 이 시스템의 공개 키를 사용하여 암호화된다.
서명은 서버 또는 다른 클라우드 노드로 전송된다. 이 시스템은 또한 에스크로 에이전트 또는 기타 제3자일 수도 있다. 최종 수신 당사자의 개인 키가 필요하므로 이 제3자 또는 클라우드 서버는 서명을 해독할 수 없다. ECC 암호화 알고리즘은 다음과 같다.
본 개시의 ECC 암호화 알고리즘 버전에서, 시작하기 위하여 Koblitz N. (1987), '타원 곡선 암호화 시스템 ', 계산 수학, pp 203-209 및 Padma Bh et. al./(IJCSE) 컴퓨터 과학 및 공학에 관한 국제 저널 Vol. 02, No. 05, 2010, 1904-1907 코블리츠의 방법을 사용한 타원 곡선 암호화 구현에서 메시지의 인코딩 및 디코딩에 설명된 바와 같이 코블리츠 방법을 사용하여 입력이 타원 곡선 상의 점으로 변환된다.
Stern-Brochet 트리 정의
이 섹션에서는 Stern-Brochet 트리를 사용하여 유리수를 생성하는 방법에 대해 설명한다.
위의 개략도에서 유리수를 트리 형태로 배열할 수 있음을 알 수 있다. 트리의 잎 사이의 관계는 모두 최상위 요소, 즉 (1/1)에서 온다는 점이다.
이 값을 벡터로 간주하고 여기에 왼쪽 행렬 L 또는 오른쪽 행렬 R을 곱하면, 트리에 연속적인 잎이 생성될 수 있다. 행렬 L과 R은 다음과 같이 정의된다.
I = 1 0
0 1
L = 1 0
1 1
R = 1 1
0 1
그리고 나타나는 구조는 다음과 같다.
행렬 R과 L을 재귀적으로 적용하면 트리의 추가 분기가 생성될 수 있음을 알 수 있다. 그런 다음 트리의 임의의 주어진 수준에서 항을 왼쪽에서 오른쪽으로 읽을 수 있으며, 유리수의 순서를 생성할 수 있다. 중앙선의 왼쪽에 있는 숫자(행렬 I에 맞춰 정렬됨)는 0과 1 사이의 값을 갖는다. 중앙선의 오른쪽에 있는 것은 1보다 큰 값을 갖는다.
다중 서명 방법
이 섹션에서는 ECDSA를 기본 기술로 사용하는 다중 서명 메커니즘에 대해 설명한다.
명확성을 위하여, 다음 설명에서는 비밀 공유에 관련된 두 당사자가 일종의 인터넷 기반 서비스 제공자(이하 서버)와 서버의 클라이언트(이하 클라이언트)인 예를 사용한다. 설명된 방법은 임의의 두 당사자에 대해 일반화할 수 있다(예를 들어 변형 V2 참조).
각 당사자는 ECC 작업을 수행할 능력이 있다고 가정한다. 실제로 '단순한' 클라이언트는 목적에 맞게 서버에서 제공하거나 암호화 서비스의 제 3 자 제공 업체(예를 들어, 비트코인 eWallet)에서 제공하는 소프트웨어를 사용할 수 있다.
단계 I: 등록
1) 각 당사자는 공통 생성기 G를 사용하여 secp256k1(비트코인 시스템에서 사용)과 같은 표준 ECC 시스템에 합의한다.
2) 서버는 secp256k1을 사용하여 공개/개인 키 쌍을 생성하고 공개 키를 게시한다(예를 들어, 공식 웹 사이트에 표시).
서버 개인 키 1 = VMS (서버에서 비밀 유지)
서버 공개 키 1 = PMS (공개적으로 알려짐)
여기에서:
V는 개인(PRIVATE) 키(키 소유자가 비밀로 유지)를 나타내고
P는 공개(PUBLIC) 키(모두에게 알려져 있음)를 나타낸다.
아래 첨자에서:
M은 '마스터 키'를 나타내고
S는 키가 서버에 속함을 나타낸다.
ECC에서 공개 키는 다음과 같이 타원 곡선 점 곱셈을 사용하여 개인 키로부터 유도됨을 유의한다:
PMS
=
VMS X G
개인 키는 ECC 시스템에서 지정한 허용 범위 내의 임의의 정수이다.
a. 클라이언트는 secp256k1을 사용하여 공개/개인 키 쌍을 생성한다.
클라이언트 개인 키 1 = VMC (클라이언트가 비밀로 유지)
클라이언트 공개 키 1 = PMC (클라이언트의 마스터 키)
다시:
PMC
=
VMC X G
b. 클라이언트는 서버에서 그 마스터 공개 키(PMC)를 등록한다. 이는, 예를 들어, 클라이언트가 서비스의 지속적인 사용자로 서버에 등록할 때 발생한다. 클라이언트는 또한 서버의 공개적으로 사용 가능한 마스터 공개 키인 PMS에 접근할 수 있다.
등록 단계는 초기 설정으로 한 번만 발생한다. 이후 마스터 키는 일회용 대칭 암호화 키를 생성하기 위해 안전한 방식으로 재사용될 것이다.
단계 II: 세션 초기화
3) 클라이언트는 서버로 보낼 '메시지'를 생성하고, 표준 알고리즘을 사용하여 256 비트 정수가 되는 메시지의 해시를 생성한다.
메시지 = M (UnixTime + Nonce)
메시지 해시 = SHA-256 (M) 0
메시지의 선택은 공유 비밀을 생성하기 위한 목적에 대해 임의적이지만, (UnixTime + Nonce)의 선택은 특정한 계획된 애플리케이션에 대해 유용할 것이다(실시예 1 참조).
4) 클라이언트는 다음과 같이 보조(secondary) 개인 키를 계산한다.
클라이언트의 개인 키 # 2 = V2C = VMC + SHA-256 (M) 스칼라 덧셈
이 경우 보조 개인 키는 임의의 숫자가 아니지만 마스터 공개 키로부터 결정성으로 유도된다는 점에 유의하여야 한다. 이 방법을 사용하면, 다음과 같이 클라이언트 마스터 키(PMC)로부터 쌍을 이루는 공개 키(P2C)를 유도할 수 있다.
P2C
=
V2C X G
(정의상)
=
(VMC + SHA-256(M) ) X G
(V2C 대입)
=
VMC X G + SHA-256(M) X G
(ECC 대수의 분배법칙)
=
PMC + SHA-256(M) X G
(정의상 VMC X G = PMC)
'+'연산자는 타원 곡선 점 덧셈을 나타내는 점을 유의하여야 한다.
따라서, 클라이언트의 보조 개인 키(V2C)는 비밀로 유지되지만, 마스터 키와 메시지 M에 대한 지식이 있으면 보조 공개 키를 쉽게 유도할 수 있다.
5) 클라이언트는 메시지(M)를 V2C로 서명하고 이를 서버로 전송한다
서명된 메시지
= Sig-V2C <M>
ECDSA, 타원 곡선 디지털 서명 알고리즘(ECDSA)은 다음에서 더 자세히 설명되어 있다.
https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm;
http://cs.ucsb.edu/~koc/ccs130h/notes/ecdsa-cert.pdf
이 단계는 공유 비밀을 설정하고 클라이언트와 서버 간의 보안 통신 세션을 시작하는 데 필요한 유일한 전송을 나타낸다. 서버는 수신된 메시지(M)를 사용하여 자체 보조 공개/개인 키 쌍을 생성할 것이다. 이 사실을 통해 클라이언트는 서버의 보조 공개 키를 즉시 계산할 수 있다.
6) 클라이언트는 서버의 보조 공개 키(P2S)를 단계 4)와 동일한 기술을 사용하여 계산한다:
P2S
= PMS + SHA-256(M) X G
7) 서버는 클라이언트 메시지를 수신하고 독립적으로 해시 M = SHA-256(M)를 계산한다.
8) 서버는 단계 (4)의 식에 따라 클라이언트의 보조 공개 키(P2C)를 계산한다.
9) 서버는 계산된 P2C에 대해 클라이언트의 서명 (Sig-V2C)을 유효성 검증한다.
이는 다음에 더 자세히 설명되어 있다.
https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm;
http://cs.ucsb.edu/~koc/ccs130h/notes/ecdsa-cert.pdf
이 시점에서 서버는 (예를 들어 실시예 1에서와 같이) 임의의 합의된 조건에 따라 메시지(M)의 내용에 기초하여 추가 검사를 수행할 수도 있다.
10)
서버는 다음과 같이 보조 개인 키를 계산한다:
V2S
= VMS + SHA-256(M)
단계 4)에서와 동일한 기술을 사용하여 V2S가 P2S와 쌍을 이룬다는 것을 검증할 수 있다. 서버의 보조 개인 키(V2S)는 비밀로 유지되며, 서버만이 알고 있다는 점을 유의하여야 한다.
11) 이제 클라이언트와 서버는 서로의 보조 공개 키를 가지며 다음과 같이 자체 보조 개인 키를 사용하여 공유 비밀 S를 각각 독립적으로 계산할 수 있다:
서버가 계산
S
= V2S X P2C
클라이언트가 계산
S
= V2C X P2S
두 계산 결과가 동일한 값인지에 대한 검증은 다음과 같다:
(i) V2S X P2C
=
V2S X (V2C X G)
=
(V2S X V2C) X G
(ii) V2C X P2S
=
V2C X (V2S X G)
=
(V2C X V2S) X G
ECC 대수의 교환 법칙에 따라,
(V2S X V2C) X G
=
(V2C X V2S) X G
따라서 식 (i) 및 (ii)는 동등하다.
공유 비밀 S는 타원 곡선 점 (xS, yS)의 형태이다. 이는 양 당사자가 합의한 바에 따라 표준 공개적으로 알려진 연산을 사용하여 임의의 표준 키 형식으로 변환될 수 있다. 예를 들어 xS 값은 자체적으로 AES256 암호화를 위한 키로 사용될 수 있는 256 비트 정수이다. 이는 또한 이 길이의 키가 필요한 임의의 애플리케이션에 대해 RIPEMD160 0을 사용하여 160 비트 정수로 변환될 수 있다. 공유 비밀 S가 계산되면 보조 개인 키(V2C 및 V2S)를 보관할 필요가 없으며 저장하지 않아도 됨을 유의하여야 한다(다만, 특정 애플리케이션에 따라, 마스터 개인 키만큼 안전하게 유지되는 경우 저장될 수 있음). 또한, 공유 비밀 자체는 통신 세션 기간 동안만 존재할 필요가 있으며 세션 후에 저장하지 않고 즉시 폐기될 수 있다(다만 언제든지 다시 계산될 수 있음).
이 프로토콜의 단계 II를 여러 번 반복하여 단일 목적 사용을 위한 연속적인 공유 비밀을 생성할 수 있다. 대안적으로 동일한 공유 비밀을 다시 사용할 수 있다. 후자의 경우, 보안을 위해 실제 비밀은 공개적으로 알려진 정보 및 기존의 비밀로 유지된 개인 키(예를 들어, 실시예 2에서와 같이)로부터 재계산될 수 있으므로 저장되지 않을 것이다.
방법 1 - 배낭 알고리즘
이 섹션에서는 도 1, 2 및 4의 단계 30의 배낭 알고리즘을 사용하여 ECDSA 서명을 최적으로 패킹하는 방법에 대해 설명하며, "배낭 절차의 추가 확장"이라는 제목 하에, 아래에서 더 자세히 설명된다. 위에서 언급했듯이 배낭 알고리즘의 비선형 패킹 절차는 키 공유에 보안을 추가한다.
입력:
- (r, s)
-
배낭 급수
출력:
- (R, S) 큰 정수의 형태
방법 :
1)
(r, s)를 이진 형태로 변환
2)
배낭 급수 생성
3)
(R, S) 계산
서명 확장
방법은 전체 메시지의 서명을 통해 비트코인 내에서 사용되는 서명 프로세스를 지나 확장될 수 있다. 이 방법에서는, 당사자 간에 공유되고 암호화되는 메시지가 메시지 해시 없이 비트코인 내에 배포된(deployed) 프로세스를 사용하여 디지털 서명된다. 즉, 전체 메시지가 서명되어 (r, s) 서명 쌍의 더 큰 버전을 생성한다.
(R, S) 값을 인코딩하는 데 배낭 알고리즘이 다시 사용된다. 대부분의 경우 메시지 해시를 사용하는 것이 바람직하지만 전체 서명된 메시지가 존재할 수 있는 사용 사례가 있다.
(R, S) 값은 발신자의 개인 키와 서버 또는 에스크로 에이전트의 공개 키를 사용하여 이중 암호화 프로세스를 수행하기 전에 블록으로 분할되어야 한다.
서버가 서명을 수신하면, 유지하는 개인 키를 사용하여 서명을 해독한다. 그런 다음 최종 수신자의 공개 키를 사용하여 이를 암호화한다. 서명은 이 프로세스에 이어 서버 또는 에이전트로부터 수신자에게 전송된다.
단일 문자에 대한 ECC 알고리즘의 구현 세부 사항
방법은 도 1, 2 및 4의 ECC 암호화 단계 40을 통해 단일 문자를 암호화하는 것에 대해 설명하며, 이는 문자 스트림으로 일반화될 수 있다.
타원 곡선에서 기준점 G가 선택된다.
G는 y2 = x3+ax+b 식을 만족하는 [x, y] 좌표를 갖는다.
기준점은 EC를 만족하면서 x, y 값을 최소화한다. 즉, x, y 값을 최소화하는 타원 곡선 상의 점이다.
ECC 방법에서는 비밀로 유지되어야 하는 임의의 정수 k(k < p)가 선택된다.
그런 다음 타원 곡선 대수의 표준에서와 같이, 일련의 덧셈과 배가에 의해 kG가 평가된다.
소스는 호스트 A로 지정되고 대상은 호스트 B로 지정된다.
nB로 지칭되는 호스트 B의 개인 키가 선택된다. k 및 nB는 신뢰성을 제공하기 위하여 난수 생성기에 의해 생성될 수 있다.
B의 공개 키는 다음에 의해 평가된다.
PB = nBG (3)
A가 알파벳 문자를 암호화하여 B에게 전송하기 위하여, 다음과 같이 한다.
예를 들어 A가 문자 'S'를 전송하려는 경우.
문자 'S'의 아스키(ASCII) 값을 사용하여 임의의 점 Pm을 다음과 같이 수정한다: P'm= SPm
Pm은 아핀(affine) 점, 즉 ECC 계산 및 인코딩을 위한 임의의 원점이다. 그 개별 신원을 보존하기 위하여, 이는 기준점 G와 다르게 선택된다. P'm 는 타원 곡선 상의 한 점이다. 점 P'm의 좌표는 타원 곡선에 맞아야 한다.
이 변환은 두 가지 목적으로 수행된다. 첫째, 단일 값 ASCII가 EC의 x, y 좌표로 변환된다. 둘째, 가능성이 있는(would-be) 해커로부터 완전히 위장한다.
ECC의 다음 단계로, kPB를 평가하여야 하며, 여기에서 PB는 사용자 B의 공개 키이다. 결과의 빠른 수렴을 위하여, k 값에 따라, 최적 수의 연속적인 배가 및 덧셈을 계획하여야 한다. 그런 다음 암호화된 메시지는 P'm 를 kPB 에 더하여, 즉 P'm + kPB 에 의해 유도된다.
이는 x2, y2 좌표 집합을 산출한다. 그런 다음 kG는 x1, y1 좌표의 또 다른 집합인 암호화된 버전의 제1 요소로 포함된다. 따라서 저장 또는 전송 목적으로 암호화된 전체 버전은 다음과 같이 두 좌표의 집합으로 구성된다.
따라서 수정된 일반 텍스트는 ECC 방법을 적용하여 암호화되었다.
배낭 절차의 추가 확장
배낭 절차는 무차별 대입 공격(brute force attacks) 시도에 대한 방어에 철저한 확산과 혼란을 도입한다.
배낭 절차는 ai로 지칭되는 일련의 벡터를 사용한다.
이러한 벡터를 생성하는 방법에는 여러 가지가 있다. 예를 들어, 다음과 같이 n의 거듭제곱 급수를 가질 수 있다:
여기에서, n은 단순성을 위해 10보다 작은 임의의 정수이거나, p 및 k 정수를 포함하여 계산된다. p는 모듈식 산술에 사용되는 소수, k는 비밀 정수, m은 이진 비트 문자열의 길이이다.
메시지는 다음과 같이 배낭 프로세스에 따라 암호화된다:
xi를 좌표 점 중 하나라고 하며, 이진 형식으로 다음과 같이 나타낼 수 있다:
xi = b1, b2, ..., bm 1≤i≤m, 여기에서 항 b1, b2, ... 는 확장 항의 이진 계수임
배낭 알고리즘에 따라, 누적 합계 S[x1]이 계산되며, 이는 다음과 같이 xi 좌표 점과 위에서 정의된 급수의 이진 형식의 벡터 내적으로 정의된다:
최종 암호화된 버전에서 좌표 xi 는 동등한 값 S[x1]으로 대체된다.
유사하게, y1, x2, y2와 같은 다른 좌표는 배낭 알고리즘에 의해 변환되므로, 암호화된 메시지는 이제 다음과 같이 표시된다.
두 쌍의 정수는 메시지에서 단 하나의 문자를 나타냄을 유의하여야 한다. 따라서, 전체 메시지는 메시지 내의 문자 수와 동일한 수의 정수 쌍으로 표시될 것이다.
수신자 B는 배낭 절차를 반전하고 좌표의 비트 패턴을 복구하기 위한 모든 관련 정보를 가지고 있다. 예를 들어 B는 ai 급수, 자신의 비밀 키 nB 및 타원 곡선의 기준점 G, a, b, p 값을 알고 있다. B는 암호화된 메시지 를 수신한다.
배낭 프로세스를 반전하려면, 즉 도 5 및 6의 단계 90에서, 한 가지 예를 들어, 다음을 고려한다.
이는 x1의 배낭 표현이다. x1 값은 다음과 같이 반복적인 방식으로 복구된다:
S[x1]-nm이 결정된다.
이 값이 양수이면, 즉 S[x1]-nm> 0이면, 이진 비트 1이 제 m 위치에 할당되고, 현재 값이 S[x1] = S[x1]-nm 으로 대체된다. 그러나 값이 음수이면, 0 비트가 할당되고 S[x1]의 값은 변경되지 않는다.
이제 S[x1]의 현재 값에서 nm-1을 뺀다. 양수인지 음수인지에 따라, 해당 비트 위치에 값 1 또는 0이 할당된다. 이 뺄셈 프로세스는 ai 급수가 소진될 때까지 계속된다. 이는 x1의 이진 비트 패턴을 복구할 것이다.
그런 다음 이 절차는 y1, x2, y2에 대해 반복된다. kG는 x1, y1로 표시되고 P'm + kPB는 x2, y2로 표시된다는 점을 기억하여야 한다. P'm + kPB 로부터 P'm을 추출하기 위하여, B는 그의 비밀 키 nB를 적용하고 kG를 곱하여,
이를 P'm + kPB로부터 빼서, 다음과 같이 P'm을 얻는다:
뺄셈에는 또한 ECC 배가 및 덧셈이 수반되며 유일한 차이점은 음의 항에 마이너스 기호가 앞에 오는 y 좌표를 갖는다는 것이다. 기울기를 결정하는 표현, xR, yR의 새로운 값은 동일하다. y가 계산될 때마다 -y로 대체된다.
이는 P'm을 산출할 것이다. 그런 다음 'S'의 ASCII 값은 P'm = SPm에서, 예를 들어 ASCII 값의 타원 곡선 암호화 룩업 테이블로부터, 검색할 수 있다.
ECC 암호화 알고리즘
이 섹션에서는 ECC 암호화 알고리즘, 코블리츠 알고리즘 및 배낭 알고리즘을 결합하는 방법에 대해 설명한다.
입력:
- (R, S)
- 수신자의 공개 키 PB
- 송신 당사자에 의해 사용되는 임의 정수 K = Hash(k)
- 타원 곡선 기준점 G
출력:
R 및 S 각각에 대한 암호화된 점
방법:
1) R에 대응하는 고유한 타원 곡선 점을 식별하기 위하여 도 1의 매핑 단계 20에서 코블리츠의 방법을 사용한다. 이는 송신자와 수신자 사이에 합의된 일부 상수 λ에 대해 λR<x≤λR+1이 되도록 x∈Zp의 x 좌표를 갖는 타원 곡선 상의 한 점을 식별함으로써 달성된다. 그러한 점이 존재하지 않으면 λR<x≤λR+2 등을 시도한다.
2) 송신자는 임의의 수 K를 생성한다. 이는 K = Hash(k)로 선택될 수 있다.
해독
도 5 및 6의 단계 80의 해독 절차에서 정보의 흐름은 다음과 같다.
각 단계의 메카닉은 이 해독 섹션의 나머지 부분에 설명된다.
메시지 복구
서버에서 수신한 메시지 서명은 서버의 개인 키를 사용하여 해독할 수 있다. 해독되면, 메시지는 클라우드 서버와 최종 수신자 간에 공유되는 비밀 키를 사용하여 암호화된다. 이는 서버 또는 에이전트가 암호화된 비밀에 대한 지식을 얻지 않고도 에스크로 또는 전달 에이전트의 역할을 수행하는 동시에 송수신 당사자를 모니터링하고 유효성 검증할 수 있게 한다. 값의 교환은 비밀 공유 방법을 통해 이루어지며, 아래의 "비밀 값 공유" 섹션에서 더 자세히 설명된다.
클라우드 서버는 또한 ID 기반 암호화 체계를 생성할 때 인증 기관의 역할을 할 수 있다. ECC 해독 알고리즘은 아래에 자세히 설명된다. 수신 당사자는 ECC 해독 알고리즘에 입력된 개인 키를 사용하여 (R, S)를 복구할 수 있다. 이는 수신자가 타원 곡선 점을 다시 메시지로 디코딩할 수 있게 한다.
ECC 해독 알고리즘
도 5 및 6의 단계 80의 ECC 해독 알고리즘의 연산이 나타나 있다.
- 수신자의 개인 키 dB
출력:
- 해독된 데이터 R(또는 S)
방법:
3) 점을 디코딩하기 위하여 코블리츠의 방법을 사용한다. 이는 (x-1)/λ보다 작은 최대 정수 R을 식별하여 달성된다.
값 (R, S)은 다음의 값을 사용하는 반복적인 프로세스를 통해 값 (r, s)을 복구하기 위하여 역 배낭 알고리즘에 대한 입력으로 사용된다.
그런 다음 R의 현재 값이 다음과 같이 설정된다:
결과가 음수인 경우, 비트 0이 할당되고 R 값은 변경되지 않는다. 다음으로, R의 현재 값에서 을 뺀다. 위에서 정의된 바와 같이 이진 값 0 또는 1을 전환하면 급수에 더 이상 값이 없을 때까지 이 반복 프로세스가 계속된다. 반환된 결과는 값 R과 연관된 이진 비트 패턴이다. 그런 다음 (r, s)의 이진 형식으로 다시 변환이 수행되고 메시지 복구를 완료하기 위하여 식 5를 사용한다.
그런 다음 식 5를 사용하여 메시지를 복구할 수 있다. 메시지는 ASCII 형식 또는 비-텍스트 입력을 포함하는 임의의 다른 인코딩일 수 있다.
비밀 값 공유
암호화 시스템의 근본적인 문제는 안전하지 않은 네트워크를 통해 당사자 간에 공유 비밀을 설정하는 것이다. 예를 들어, https://aesencryption.net/에 자세히 설명된, AES에서 사용하는 것과 같이, https://en.wikipedia.org/wiki/Symmetric-key_algorithm에 더욱 자세히 설명된 대칭 키 암호화에서, 단일 비밀 키가 두 당사자에게 공유된다. 이는 비밀 키가 어떻게든 먼저 두 당사자 간에 안전하게 전송되어야 한다는 단점이 있다. 키 전송은 일반적으로 인터넷과 같은 통신 시스템을 통해 전자적으로 이루어지기 때문에, 공유 단계는 잠재적으로 치명적인 취약점이다. 대칭 키 프로토콜은 간단하고 널리 사용되므로 안전하지 않은 네트워크에서 비밀 키를 안전하게 공유할 수 있는 능력이 필요하다.
Diffie-Hellman 키 교환 (https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange에서 더욱 자세히 설명) 및 3-패스 프로토콜(Three Pass Protocol) (https://en.wikipedia.org/wiki/Three-pass_protocol 에서 더욱 자세히 설명)과 같은 기존 프로토콜은 안전하지 않은 네트워크에서 비밀의 안전한 공유를 가능하게 한다. 그러나, 이러한 방법은 새로운 비밀이 지속적으로 생성되고 공유되는 경우 계산 비용이 많이 든다. 본 실시예는 안전한 비밀 공유를 위한 효율적이고 저렴한 방법을 제공한다. 또한 설명된 기술은 단일 마스터 키를 기반으로 여러 보안 비밀 키를 생성하고 편리하게 관리할 수 있게 한다.
본 실시예의 프로세스의 주요 요소는 다음과 같다:
1. 방법은 타원 곡선 암호화(Elliptic Curve Cryptography; ECC) (https://en.wikipedia.org/wiki/Elliptic-curve_cryptography에서 더 자세히 설명됨) 및 타원 곡선 연산의 속성을 사용한다. SECG(Standards for Efficient Cryptography Group)(http://www.secg.org/)로 알려진 독립 기관에서 설명한 바와 같이 타원 곡선을 사용하는 암호화에 대한 몇 가지 표준이 있다.
2. ECC는 하나의 키는 공개적으로 사용 가능하고 다른 하나는 비밀로 유지되는 비대칭 암호화 (https://searchsecurity.techtarget.com/definition/asymmetric-cryptography에서 더 자세히 설명됨)에 대한 암호화 키 쌍을 생성하는 데 사용된다. 본 실시예는 각 당사자가 secp256k1과 같은 합의된 ECC 표준에 의해 생성된 자신의 비대칭 키 쌍을 기반으로 동일한 비밀 키를 독립적으로 계산할 수 있도록 한다. 보안은 공유 비밀이 각 당사자에 의해 계산되지만 전송되지 않는다는 사실에서 비롯된다.
3. 효율성은 여러 단계를 단일 단계로 통합하고 계산 비용이 적게 드는 계산을 사용하여 새 키를 유도함에 의해 비롯된다. 마스터 키가 설정되는 초기 설정 단계 이후에는, 새로운 비밀 키의 각 후속 생성이 효율적이며 반복 가능하다.
기술 사양
명확성을 위하여, 다음 설명에서는 비밀 공유에 관련된 두 당사자가 일종의 인터넷 기반 서비스 제공자(이하 서버)와 서버의 클라이언트(이하 클라이언트)인 예를 사용한다. 설명된 방법은 임의의 두 당사자에 대해 일반화할 수 있다(예를 들어 아래의 V2 변형 참조).
각 당사자는 ECC 작업을 수행할 능력이 있다고 가정한다. 실제로 '단순한' 클라이언트는 목적에 맞게 서버에서 제공하거나 암호화 서비스의 제 3 자 제공 업체(예를 들어, 비트코인 eWallet)에서 제공하는 소프트웨어를 사용할 수 있다.
단계 I: 등록
12) 각 당사자는 공통 생성기 G를 사용하여 secp256k1(비트코인 시스템에서 사용)과 같은 표준 ECC 시스템에 합의한다.
13) 서버는 secp256k1을 사용하여 공개/개인 키 쌍을 생성하고 공개 키를 게시한다(예를 들어, 공식 웹 사이트에 표시).
서버 개인 키 1 = VMS (서버에서 비밀 유지)
서버 공개 키 1 = PMS (공개적으로 알려짐)
여기에서:
V는 개인(PRIVATE) 키(키 소유자가 비밀로 유지)를 나타내고
P는 공개(PUBLIC) 키(모두에게 알려져 있음)를 나타낸다.
아래 첨자에서:
M은 '마스터 키'를 나타내고
S는 키가 서버에 속함을 나타낸다.
ECC에서 공개 키는 다음과 같이 타원 곡선 점 곱셈을 사용하여 개인 키로부터 유도된다는 것을 유의한다:
PMS
=
VMS X G
개인 키는 ECC 시스템에서 지정한 허용 범위 내의 임의의 정수이다.
14) 클라이언트는 secp256k1을 사용하여 공개/개인 키 쌍을 생성한다:
클라이언트 개인 키 1 = VMC (클라이언트가 비밀로 유지)
클라이언트 공개 키 1 = PMC (클라이언트의 마스터 키)
다시:
PMC
=
VMC X G
15) 클라이언트는 서버에서 그 마스터 공개 키(PMC)를 등록한다. 이는, 예를 들어, 클라이언트가 서비스의 지속적인 사용자로 서버에 등록할 때 발생한다. 클라이언트는 또한 서버의 공개적으로 사용 가능한 마스터 공개 키인 PMS에 접근할 수 있다.
등록 단계는 초기 설정으로 한 번만 발생한다. 이후 마스터 키는 일회용 대칭 암호화 키를 생성하기 위해 안전한 방식으로 재사용될 것이다.
단계 II: 세션 초기화
16) 클라이언트는 서버로 보낼 '메시지'를 생성하고, 표준 알고리즘을 사용하여 256 비트 정수가 되는 메시지의 해시를 생성한다.
메시지 = M (UnixTime + Nonce)
메시지의 선택은 공유 비밀을 생성하기 위한 목적에 대해 임의적이지만, (UnixTime + Nonce)의 선택은, 예를 들어 실시예 1에 설명된 바와 같이, 특정한 계획된 애플리케이션에 대해 유용할 것이다.
메시지 해시
= SHA-256(M)
https://hash.online-convert.com/sha256-generator에 더 자세히 설명됨
17) 클라이언트는 다음과 같이 보조 개인 키를 계산한다:
클라이언트의 개인 키 # 2 = V2C = VMC + SHA-256 (M) 스칼라 덧셈
이 경우 보조 개인 키는 임의의 숫자가 아니지만 마스터 공개 키로부터 결정성으로 유도된다는 점에 유의하여야 한다. 이 방법을 사용하면, 다음과 같이 클라이언트 마스터 키(PMC)로부터 쌍을 이루는 공개 키(P2C)를 유도할 수 있다.
P2C
=
V2C X G
(정의상)
=
(VMC + SHA-256(M) ) X G
(V2C 대입)
=
VMC X G + SHA-256(M) X
(ECC 대수의 분배법칙)
=
PMC + SHA-256(M) X G
(정의상 VMC X G = PMC)
('+'연산자는 타원 곡선 점 덧셈을 나타내는 점을 유의하여야 한다.)
따라서, 클라이언트의 보조 개인 키(V2C)는 비밀로 유지되지만, 마스터 키와 메시지(M)에 대한 지식이 있으면 보조 공개 키를 쉽게 유도할 수 있다.
18) 클라이언트는 메시지(M)를 V2C로 서명하고 이를 서버로 전송한다
서명된 메시지
= Sig-V2C <M>
ECDSA
(https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm )
이 단계는 공유 비밀을 설정하고 클라이언트와 서버 간의 보안 통신 세션을 시작하는 데 필요한 유일한 전송을 나타낸다. 서버는 수신된 메시지(M)를 사용하여 자체 보조 공개/개인 키 쌍을 생성할 것이다. 이 사실을 통해 클라이언트는 서버의 보조 공개 키를 즉시 계산할 수 있다.
19) 클라이언트는 서버의 보조 공개 키(P2S)를 단계 (4)와 동일한 기술을 사용하여 계산한다:
P2S
= PMS + SHA-256(M) X G
20) 서버는 클라이언트 메시지를 수신하고 독립적으로 해시 M = SHA-256(M)를 계산한다.
21) 서버는 단계 (4)의 식에 따라 클라이언트의 보조 공개 키(P2C)를 계산한다.
22) 서버는 계산된 P2C에 대해 클라이언트의 서명 (Sig-V2C)을 유효성 검증한다. 이 시점에서 서버는 임의의 합의된 조건에 따라 메시지(M)의 내용에 기초하여 추가 검사를 수행할 수도 있다(예를 들어 실시예 1참조).
23) 서버는 다음과 같이 보조 개인 키를 계산한다:
V2S
= VMS + SHA-256(M)
단계 (4)에서와 동일한 기술을 사용하여 V2S가 P2S와 쌍을 이룬다는 것을 검증할 수 있다. 서버의 보조 개인 키(V2S)는 비밀로 유지되며, 서버만이 알고 있다는 점을 유의하여야 한다.
24) 이제 클라이언트와 서버는 서로의 보조 공개 키를 가지며 다음과 같이 자체 보조 개인 키를 사용하여 공유 비밀 S를 각각 독립적으로 계산할 수 있다:
서버가 계산
S
= V2S X P2C
클라이언트가 계산
S
= V2C X P2S
두 계산 결과가 동일한 값인지에 대한 검증은 다음과 같다:
(i) V2S X P2C
=
V2S X (V2C X G)
=
(V2S X V2C) X G
(ii) V2C X P2S
=
V2C X (V2S X G)
=
(V2C X V2S) X G
ECC 대수의 교환 법칙에 따라,
(V2S X V2C) X G
=
(V2C X V2S) X G
따라서 식 (i) 및 (ii)는 동등하다.
공유 비밀 S는 타원 곡선 점 (xS, yS)의 형태이다. 이는 양 당사자가 합의한 바에 따라 표준 공개적으로 알려진 연산을 사용하여 임의의 표준 키 형식으로 변환될 수 있다. 예를 들어 xS 값은 자체적으로 AES256 암호화를 위한 키로 사용될 수 있는 256 비트 정수이다. 이는 또한 이 길이의 키가 필요한 임의의 애플리케이션에 대해 RIPEMD160(http://homes.esat.kuleuven.be/~bosselae/ripemd160.html)을 사용하여 160 비트 정수로 변환될 수 있다. 공유 비밀 S가 계산되면 보조 개인 키(V2C 및 V2S)를 보관할 필요가 없으며 저장하지 않아도 된다는 점을 유의하여야 한다(다만, 특정 애플리케이션에 따라, 마스터 개인 키만큼 안전하게 유지되는 경우 저장될 수 있음). 또한, 공유 비밀 자체는 통신 세션 기간 동안만 존재할 필요가 있으며 세션 후에 저장하지 않고 즉시 폐기될 수 있다(다만 언제든지 다시 계산될 수 있음).
이 프로토콜의 단계 II를 여러 번 반복하여 단일 목적 사용을 위한 연속적인 공유 비밀을 생성할 수 있다. 대안적으로 동일한 공유 비밀을 다시 사용할 수 있다. 후자의 경우, 보안을 위해 실제 비밀은 공개적으로 알려진 정보 및 기존의 비밀로 유지된 개인 키(예를 들어, 실시예 2에서 설명된 바와 같이)로부터 재계산될 수 있으므로 저장되지 않을 것이다.
변형
이 섹션에서는 해시의 변형에 대한 방법에 대해 설명한다.
V1: 해시 계층
연속적인 단일 목적 키를 생성하기 위해 단계 II를 반복하는 대신, 당사자 간의 사전 합의에 따라, 이전에 사용된 메시지 해시(SHA-256(M))를 양 당사자가 반복적으로 다시 해시하여 해시 계층을 설정할 수 있다. 사실상, 메시지의 해시는 다음 세대(M')를 위한 메시지가 될 수 있다. 이렇게 하면 추가 프로토콜 설정 전송의 필요가 없이 연속적인 공유 비밀 생성을 계산할 수 있다. 제2 세대 공유 비밀(S')은 다음과 같이 계산될 수 있다.
V1.i 양 당사자는 해시의 제2 세대를 계산한다:
M'
=
SHA-256(M)
Hash'
=
SHA-256(SHA-256(M))
V1.ii 클라이언트는 서버의 공개 키의 다른 세대를 계산한다:
P2S'
=
PMS + Hash' X G
V1.iii 서버는 클라이언트의 공개 키의 다른 세대를 계산한다:
P2C'
=
PMC + Hash' X G
V1.iv 양 당사자는 자체 개인 키의 제2 세대를 계산한다:
V2C'
=
VMC + SHA-256(M')
V2S'
=
VMS + SHA-256(M')
V1.v. 서버와 클라이언트는 각각 다음 세대 공유 비밀을 계산한다
서버가 계산
S'
= V2S' X P2C'
클라이언트가 계산
S'
= V2C' X P2S'
추가 세대(S'', S''' 등)는 동일한 방식으로 계산하여 체인 계층을 생성할 수 있다. 이 기술을 사용하려면 서버와 클라이언트 모두 원본 메시지 또는 원래 계산된 해시(SHA-256(M)) 및 관련 당사자를 추적하여야 한다. 이는 공개적으로 알려진 정보이므로 이 정보의 보유와 관련된 보안 문제는 없다. 따라서, 이 정보는 '해시 테이블'(해시 값을 공개 키에 연결)에 보관되고 네트워크를 통해 (예를 들어 토렌트(Torrent)를 사용하여) 자유롭게 분배될 수 있다. 계층의 임의의 개별 공유 비밀이 훼손된 경우에도 개인 키가 보안 상태로 유지되면 계층의 다른 비밀 키 보안에 영향을 주지 않는다는 점을 유의하여야 한다.
위에서 설명한 체인(선형) 계층뿐만 아니라, 트리 구조 형태의 계층도 생성될 수 있다. 트리 분기는 여러 가지 방법으로 수행할 수 있으며, 그 중 세 가지가 여기에 설명된다.
(i) 마스터 키 생성(spawning). 먼저, 체인 계층에서 각각의 새로운 '링크'(공개/개인 키 쌍)는 원래 마스터 키에 다중 재해시된 메시지를 더하여 생성된다는 점에 유의하여야 한다. 즉, 다음과 같다(명확성을 위해 개인 키만 표시):
(ii)
V2C
= VMC + SHA-256(M)
V2C'
= VMC + SHA-256(SHA-256(M))
V2C''
= VMC + SHA-256(SHA-256(SHA-256(M)))
... 등.
분기를 생성하기 위하여 임의의 키를 하위 마스터 키로 사용할 수 있다. 예를 들어 V2C'를 일반 마스터 키에 대한 것과 같이 해시를 더하여 하위 마스터 키로 사용할 수 있다.
V3C
= V2C' + SHA-256(M)
V3C'
= V2C' + SHA-256(SHA-256(M))
(iii) 논리적 연관. 이 방법에서는 트리의 모든 노드(공개/개인 키 쌍)가 체인으로 생성되고(또는 다른 방식에서는 - 아래 (iii) 참조) 트리 내의 노드 사이의 논리적 관계는 각 노드가 포인터를 사용하여 그 부모 노드와 단순히 연관되는 테이블에 의해 유지된다.
(iv) 메시지 다중성. 새로운 개인/공개 키 쌍은 체인 또는 트리의 임의의 지점에서 새로운 메시지(M)를 도입하여 생성할 수 있다. 메시지 자체는 임의적이거나 일부 의미 또는 기능을 수반할 수 있다(예를 들어 이는 '실제' 은행 계좌 번호 등과 관련될 수 있다). 물론 모든 새로운 메시지는 안전하게 보관되어야 한다.
트리 구조를 사용하면 인증 키, 암호화 키, 서명 키, 결제 키 등과 같은 상이한 목적을 위해 키 호스트를 제공할 수 있으며 모두 단일의 안전하게 유지되는 마스터 키에 연결된다. 이들 각각은 다른 당사자와 공유 비밀을 생성하는 데 사용할 수 있다.
V2: 피어-투-피어 비밀 공유
본 실시예는 서버와 클라이언트가 아닌 두 피어 사이에서 사용될 수 있다. 위의 기술 설명에 설명된 예에서, 서버는 클라이언트가 신뢰하는 당사자의 역할을 한다. 서버는 클라이언트가 시스템에 접근할 수 있도록 클라이언트의 자격 증명(credentials)을 인증하여야 한다. 서버는 클라이언트의 서명된 메시지를 유효성 검증하여 이를 수행한다. 피어-투-피어 시나리오에서 각 피어는 서로 신뢰를 구축하여야 한다-즉, '클라이언트'도 '서버'의 자격 증명을 인증하여야 한다. 이는 양 당사자가 메시지 서명 및 검증 단계(기술 설명의 단계 (0 - (9))를 수행하는 양방향 프로세스로 수행될 수 있다.
피어-투-피어 시나리오에서, 클라이언트가 서명된 메시지(M)를 서버로 보낸 후, 서버는 계산된 보조 개인 키(V2S )를 사용하여 동일한 메시지에 서명하고 이를 다시 클라이언트로 보낸다:
V2.i
서명된 메시지
= Sig-V2S <M>
ECDSA
그런 다음 클라이언트는 단계 (0에서 계산한 서버의 보조 공개 키(P2S)에 대해 서버의 서명을 유효성 검증한다.
이제 도 7로 돌아가면, 본 개시의 적어도 하나의 실시예를 실행하는 데 사용될 수 있는 컴퓨팅 디바이스(2600)의 예시적이고 단순화된 블록도가 제공된다. 다양한 실시예에서, 컴퓨팅 디바이스(2600)는 위에서 예시되고 설명된 임의의 시스템을 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 디바이스, 개인용 컴퓨터 또는 임의의 전자 컴퓨팅 디바이스로 사용하도록 구성될 수 있다. 도 7에 도시된 바와 같이, 컴퓨팅 디바이스(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)에 연결하는 포트를 통해 전송될 수 있는 전기 신호로 변환하도록 구성될 수 있다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 7에 도시된 컴퓨팅 디바이스(2600)에 대한 설명은 디바이스의 바람직한 실시예를 설명하기 위한 특정 예로서만 의도된다. 도 7에 도시된 시스템보다 더 많거나 더 적은 구성요소를 갖는 많은 다른 구성이 가능하다.
위에서 언급된 실시예는 개시를 제한하기보다는 예시하며, 당업자는 첨부된 청구 범위에 의해 정의된 개시의 범위를 벗어나지 않고 많은 대안적인 실시예를 설계할 수 있다는 점에 유의하여야 한다. 청구항에서, 괄호 안에 있는 참조 기호는 청구항을 제한하는 것으로 해석되어서는 안된다. "포함하는" 및 "포함한다" 등의 단어는 청구 범위 또는 명세서 전체에 나열된 것 이외의 요소 또는 단계의 존재를 배제하지 않는다. 본 명세서에서 "포함하다"는 "포함하거나 구성된다"를 의미하고, "포함하는"은 "포함하거나 구성되는"을 의미한다. 요소의 단수 참조는 그러한 요소의 복수 참조를 배제하지 않으며 그 반대의 경우도 마찬가지이다. 개시는 몇몇 별개의 요소를 포함하는 하드웨어에 의해, 그리고 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 여러 수단을 열거하는 장치 청구항에서, 이러한 수단 중 몇몇은 하나의 동일한 하드웨어 항목에 의해 구현될 수 있다. 특정 조치가 서로 다른 종속 항에 언급되어 있다는 단순한 사실은 이러한 조치의 조합이 이점으로 사용될 수 없음을 의미하지 않는다.
참조문헌
1. Chen T.S. Huang G.S. Liu T.P. 및 Chung Y.F (2002), '타원 곡선 암호화 시스템을 위한 식별 프로토콜로부터 나오는 디지털 서명 체계', IEEE TENCON 회보 '02. pp. 192-195
2. Hsu C.L 및 Wu T. C. (1998), (t, n) 공유된 검증을 사용한 인증된 암호화 체계, IEEE 회보-컴퓨터 및 디지털 기술, Vol. 145, no. 2, pp. 117-120.
3. Graham, R. L.; Knuth, D. E.; 및 Patashnik, O. 구체 수학: 컴퓨터 과학의 기초, 제2판, 리딩, MA: 애디슨-웨슬리, pp. 116-117, 1994.
4. Koblitz N. (1987), '타원 곡선 암호화 시스템', 계산 수학, pp 203-209.
5. Nyberg K. 및 Rueppel R.A. (1993), '메시지 복구를 제공하는 DSA 기반 새로운 서명 체계', ACM 컴퓨터 및 통신 보안, Vol.1,pp.58-61.
6. Rajaram Ramasamy R, Prabakar M.A, Devi M.I, 및 Suguna M(2009), '배낭 기반 ECC 암호화 및 해독', 네트워크 보안 국제 저널, Vol.9, no.3, pp. 218-226.
7. Rajaram Ramasamy R. 및 Amutha Prabakar M. (2011), '배낭 기반 ECC를 사용하는 메시지 복구를 갖는 디지털 서명 체계', 네트워크 보안 국제 저널, Vol.12, no.1,pp.15,20.
8. Reznick (2008), '유리 스턴 열거의 규칙성', 정수 수열 저널.
10. 0/1 배낭 문제를 해결하기 위한 다른 접근법 Maya Hristakeva 심슨 칼리지 컴퓨터 사이언스 학과, 인디아놀라, IA 50125 hristake@simpson.edu
11. Huang, et al., "미래의 안전한 웹 트랜잭션을 위한 타원 곡선 암호화의 FPGA 구현", 컨퍼런스 페이퍼, January 2007.
1a. 대칭 키 암호화: https://en.wikipedia.org/wiki/Symmetric-key_algorithm
2a. AES 암호화: http://aesencryption.net/
3a.Diffie-Hellman 키 교환: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
4a. 3-패스 프로토콜: https://en.wikipedia.org/wiki/Three-pass_protocol
5a. 타원 곡선 암호화: https://en.wikipedia.org/wiki/Elliptic_curve_cryptography
6a. 효율적인 암호화 그룹을 위한 표준 (SECG): http://www.secg.org/
7a. 비대칭 암호화: http://searchsecurity.techtarget.com/definition/asymmetric-cryptography
8a. SHA-256 알고리즘: http://hash.online-convert.com/sha256-generator
9a. 타원 곡선 디지털 서명 알고리즘 (ECDSA): https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm; http://cs.ucsb.edu/~koc/ccs130h/notes/ecdsa-cert.pdf
10a. RIPEMD160 알고리즘: http://homes.esat.kuleuven.be/~bosselae/ripemd160.html
4aa.Padma Bh et. al./(IJCSE) 컴퓨터 과학 및 공학에 관한 국제 저널 Vol. 02, No. 05, 2010, 1904-1907 코블리츠의 방법을 사용한 타원 곡선 암호화 구현에서 메시지의 인코딩 및 디코딩
Claims (24)
- 복수의 참여자 간에 공유 비밀을 분배하는 컴퓨터 구현(computer-implemented) 방법에 있어서, 상기 방법은:
제1 매핑 단계에 대한 복수의 입력이 상기 참여자들에게 공통인 타원 곡선 암호화 시스템의 타원 곡선의 각 타원 곡선 점에 매핑되는 상기 제1 매핑 단계;
상기 타원 곡선 암호화 시스템의 공개-개인 키 쌍의 대응하는 개인 키에 의해 해독되도록 적응된 출력을 제공하기 위하여 복수의 상기 타원 곡선 점이 상기 공개-개인 키 쌍의 공개 키에 의해 암호화되는 제1 암호화 단계;
제2 암호화 단계에 대한 적어도 하나의 입력의 복수의 부분이 상기 참여자들에게 알려진 급수의 각 항에 의해 곱해지는 상기 제2 암호화 단계; 및
비밀 공유 단계에 대한 입력의 복수의 지분이 복수의 상기 참여자에게 분배되어 상기 입력이 상기 지분의 임계 수에 대해 접근 가능하고 상기 지분의 상기 임계 수보다 적으면 접근할 수 없는 상기 비밀 공유 단계를 포함하는 방법. - 제1항에 있어서, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제1 암호화 단계 또는 상기 제2 암호화 단계의 출력에 기반하는 방법.
- 제2항에 있어서, 상기 제1 암호화 단계의 적어도 하나의 입력이 공유 비밀에 기반하고, 상기 제2 암호화 단계의 적어도 하나의 입력이 상기 제1 암호화 단계의 출력에 기반하고, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제2 암호화 단계의 출력에 기반하는 방법.
- 제2항에 있어서, 상기 제2 암호화 단계의 적어도 하나의 입력이 공유 비밀에 기반하고, 상기 제1 암호화 단계의 적어도 하나의 입력이 상기 제2 암호화 단계의 출력에 기반하고, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제1 암호화 단계의 출력에 기반하는 방법.
- 제1항에 있어서, 상기 제1 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계 또는 상기 제2 암호화 단계의 출력에 기반하는 방법.
- 제5항에 있어서, 상기 비밀 공유 단계의 적어도 하나의 입력이 공유 비밀에 기반하고, 상기 제2 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계의 출력에 기반하고, 제1 암호화 단계의 적어도 하나의 입력이 상기 제2 암호화 단계의 출력에 기반하는 방법.
- 제5항에 있어서, 상기 제2 암호화 단계의 적어도 하나의 입력이 공유 비밀에 기반하고, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제2 암호화 단계의 출력에 기반하고, 제1 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계의 출력에 기반하는 방법.
- 제1항에 있어서, 상기 제2 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계 또는 상기 제1 암호화 단계의 출력에 기반하는 방법.
- 제8항에 있어서, 상기 비밀 공유 단계의 적어도 하나의 입력이 공유 비밀에 기반하고, 상기 제1 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계의 출력에 기반하고, 제2 암호화 단계의 적어도 하나의 입력이 상기 제1 암호화 단계의 출력에 기반하는 방법.
- 제8항에 있어서, 상기 제1 암호화 단계의 적어도 하나의 입력이 공유 비밀에 기반하고, 상기 비밀 공유 단계의 적어도 하나의 입력이 상기 제1 암호화 단계의 출력에 기반하고, 상기 제2 암호화 단계의 적어도 하나의 입력이 상기 비밀 공유 단계의 출력에 기반하는 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제2 암호화 단계는 배낭 알고리즘(knapsack algorithm)을 수행하는 것을 포함하는 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제2 암호화 단계는 스턴 급수(Stern series)에 기반한 상기 급수를 포함하는 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제2 암호화 단계는 상기 참여자에게 알려진 항의 거듭제곱을 포함하는 상기 급수를 포함하는 방법.
- 제13항에 있어서, 상기 항은 상기 참여자 사이에 공유된 메시지에 기반하는 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제2 암호화 단계는 초증가 급수(super increasing series)를 포함하는 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제1 매핑 단계는 상기 입력에 기반한 좌표를 갖는 타원 곡선 점을 결정하는 것을 포함하는 방법.
- 제16항에 있어서, 상기 좌표는 상기 참여자에게 알려진 양이 곱해진 상기 입력에 기반하는 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제1 암호화 단계는 상기 제1 암호화 단계에 대한 입력을 나타내는 정수가 곱해진 타원 곡선 점을 포함하는 항을 결정하는 것을 포함하는 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 제1 암호화 단계는 참여자의 공개 키 및 임시 키에 기반하여 항을 결정하는 것을 포함하는 방법.
- 제19항에 있어서, 적어도 하나의 참여자에게, 임시 키가 곱해진 상기 타원 곡선 암호화 시스템의 생성기 점에 기반한 타원 곡선 점 및 상기 임시 키가 곱해진 참여자의 상기 공개 키에 기반한 타원 곡선 점을 전송하는 것을 더 포함하는 방법.
- 전술한 청구항 중 어느 한 항에 있어서, 상기 공유 비밀은 디지털 서명된 메시지인 방법.
- 제21항에 있어서, 상기 디지털 서명된 메시지는 블록체인 트랜잭션인 방법.
- 컴퓨터 구현(computer-implemented) 시스템에 있어서,
프로세서; 및
상기 프로세서에 의한 실행의 결과로서, 상기 시스템이 제1항 내지 제22항 중 어느 한 항의 컴퓨터 구현 방법의 임의의 실시예를 수행하도록 하는, 실행 가능한 명령을 포함하는 메모리를 포함하는 컴퓨터 구현 시스템. - 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 상기 컴퓨터 시스템이 제1항 내지 제22항 중 어느 한 항의 방법의 실시예를 적어도 수행하도록 하는, 실행 가능한 명령을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1817507.5A GB201817507D0 (en) | 2018-10-27 | 2018-10-27 | Computer implemented system and method |
GB1817507.5 | 2018-10-27 | ||
PCT/IB2019/058902 WO2020084418A1 (en) | 2018-10-27 | 2019-10-18 | Computer implemented system and method for distributing shares of digitally signed data |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210082201A true KR20210082201A (ko) | 2021-07-02 |
Family
ID=64560504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217015256A KR20210082201A (ko) | 2018-10-27 | 2019-10-18 | 디지털 서명된 데이터의 지분 분배를 위한 컴퓨터 구현 시스템 및 방법 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11979492B2 (ko) |
EP (2) | EP3871365B1 (ko) |
JP (2) | JP7492508B2 (ko) |
KR (1) | KR20210082201A (ko) |
CN (1) | CN112930660A (ko) |
GB (1) | GB201817507D0 (ko) |
SG (1) | SG11202103412PA (ko) |
TW (1) | TWI807125B (ko) |
WO (1) | WO2020084418A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532580B (zh) * | 2020-10-23 | 2022-09-06 | 暨南大学 | 一种基于区块链及代理重加密的数据传输方法及系统 |
TWI748925B (zh) * | 2021-06-09 | 2021-12-01 | 中華電信股份有限公司 | 端對端加密通訊的金鑰交換系統、方法及其電腦可讀媒介 |
GB2609906B (en) * | 2021-08-09 | 2023-12-27 | Nchain Licensing Ag | Generating digital signature shares |
GB2609908B (en) * | 2021-08-09 | 2023-10-18 | Nchain Licensing Ag | Generating Digital signatures |
TWI783804B (zh) * | 2021-12-01 | 2022-11-11 | 英屬開曼群島商現代財富控股有限公司 | 基於線性整數秘密共享的共享單元生成系統及其方法 |
TWI787094B (zh) * | 2022-03-08 | 2022-12-11 | 穎利科研國際事業有限公司 | 資安防護系統 |
CN115767515B (zh) * | 2022-10-28 | 2023-07-14 | 广州声博士声学技术有限公司 | 一种无基站实时噪声大数据的加密共享方法及系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7239701B1 (en) | 2000-05-02 | 2007-07-03 | Murata Machinery Ltd. | Key sharing method, secret key generating method, common key generating method and cryptographic communication method in ID-NIKS cryptosystem |
JP2010200210A (ja) * | 2009-02-27 | 2010-09-09 | Mitsubishi Electric Corp | 鍵管理機器及び鍵利用システム及び鍵運用システム及び鍵管理方法及び鍵管理プログラム |
US9922063B2 (en) * | 2009-12-29 | 2018-03-20 | International Business Machines Corporation | Secure storage of secret data in a dispersed storage network |
JP6571927B2 (ja) * | 2014-11-13 | 2019-09-04 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | データ保護装置、データ保護方法及びデータ保護プログラム |
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 |
US10103885B2 (en) * | 2016-01-20 | 2018-10-16 | Mastercard International Incorporated | Method and system for distributed cryptographic key provisioning and storage via elliptic curve cryptography |
CN108780548B (zh) * | 2016-02-23 | 2022-08-05 | 区块链控股有限公司 | 将椭圆曲线加密用于个人装置安全以共享秘密 |
KR20180116278A (ko) * | 2016-02-23 | 2018-10-24 | 엔체인 홀딩스 리미티드 | 안전한 정보 교환과 계층 구조적이고 결정론적인 암호키를 위한 공통 비밀 결정 |
ES2691254T3 (es) * | 2016-05-13 | 2018-11-26 | nChain Holdings Limited | Método y sistema para verificar la integridad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares |
EP3316549B1 (fr) * | 2016-10-31 | 2023-10-11 | Idemia Identity & Security France | Procédé de contrôle d'identité d'un utilisateur au moyen d'une base de données publique |
US10411897B2 (en) * | 2017-02-17 | 2019-09-10 | Factom, Inc. | Secret sharing via blockchains |
US10320565B2 (en) * | 2017-02-28 | 2019-06-11 | Certicom Corp. | Generating an elliptic curve point in an elliptic curve cryptographic system |
GB201705621D0 (en) * | 2017-04-07 | 2017-05-24 | Nchain Holdings Ltd | Computer-implemented system and method |
CN107612934A (zh) * | 2017-10-24 | 2018-01-19 | 济南浪潮高新科技投资发展有限公司 | 一种基于密钥分割的区块链移动端计算系统和方法 |
EP3511851A1 (en) * | 2018-01-12 | 2019-07-17 | Siemens Healthcare GmbH | Storing and accessing medical datasets on the blockchain |
-
2018
- 2018-10-27 GB GBGB1817507.5A patent/GB201817507D0/en not_active Ceased
-
2019
- 2019-10-18 WO PCT/IB2019/058902 patent/WO2020084418A1/en active Application Filing
- 2019-10-18 JP JP2021520548A patent/JP7492508B2/ja active Active
- 2019-10-18 CN CN201980071178.6A patent/CN112930660A/zh active Pending
- 2019-10-18 KR KR1020217015256A patent/KR20210082201A/ko unknown
- 2019-10-18 US US17/288,844 patent/US11979492B2/en active Active
- 2019-10-18 EP EP19794254.3A patent/EP3871365B1/en active Active
- 2019-10-18 SG SG11202103412PA patent/SG11202103412PA/en unknown
- 2019-10-18 EP EP24170713.2A patent/EP4376350A3/en active Pending
- 2019-10-25 TW TW108138676A patent/TWI807125B/zh active
-
2024
- 2024-05-17 JP JP2024080585A patent/JP2024109714A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2024109714A (ja) | 2024-08-14 |
SG11202103412PA (en) | 2021-05-28 |
US11979492B2 (en) | 2024-05-07 |
GB201817507D0 (en) | 2018-12-12 |
CN112930660A (zh) | 2021-06-08 |
EP4376350A3 (en) | 2024-07-10 |
US20220006615A1 (en) | 2022-01-06 |
TWI807125B (zh) | 2023-07-01 |
EP4376350A2 (en) | 2024-05-29 |
JP7492508B2 (ja) | 2024-05-29 |
JP2022504932A (ja) | 2022-01-13 |
WO2020084418A1 (en) | 2020-04-30 |
EP3871365A1 (en) | 2021-09-01 |
TW202029693A (zh) | 2020-08-01 |
EP3871365B1 (en) | 2024-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11936774B2 (en) | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys | |
EP3871365B1 (en) | Computer implemented system and method for distributing shares of digitally signed data | |
US11451382B2 (en) | Method and system for communicating a secret | |
Varshney et al. | Authentication & encryption based security services in blockchain technology | |
Zhou et al. | Identity-based proxy re-encryption version 2: Making mobile access easy in cloud | |
TW201946412A (zh) | 用以移轉數位資產支配權之電腦實施方法及系統 | |
US12034840B2 (en) | Computer implemented system and method for sharing a common secret preliminary class | |
TW202347988A (zh) | 用以獲取數位簽署資料之電腦實行方法及系統 | |
JP2022549070A (ja) | ブロックチェーン上に認証済みデータを格納するコンピュータにより実施される方法及びシステム | |
CN117917041A (zh) | 生成共享加密密钥 | |
CN118266189A (zh) | 生成共享加密密钥 |