KR20210124368A - 에폭 키 교환을 이용한 종단간 이중 래칫 암호화 - Google Patents

에폭 키 교환을 이용한 종단간 이중 래칫 암호화 Download PDF

Info

Publication number
KR20210124368A
KR20210124368A KR1020217028260A KR20217028260A KR20210124368A KR 20210124368 A KR20210124368 A KR 20210124368A KR 1020217028260 A KR1020217028260 A KR 1020217028260A KR 20217028260 A KR20217028260 A KR 20217028260A KR 20210124368 A KR20210124368 A KR 20210124368A
Authority
KR
South Korea
Prior art keywords
key
message
epoch
state
generating
Prior art date
Application number
KR1020217028260A
Other languages
English (en)
Other versions
KR102619383B1 (ko
Inventor
데니스 맨디치
예브게니 도디스
Original Assignee
크립트 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 크립트 인크. filed Critical 크립트 인크.
Publication of KR20210124368A publication Critical patent/KR20210124368A/ko
Application granted granted Critical
Publication of KR102619383B1 publication Critical patent/KR102619383B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key 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/0841Key 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/045Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply hybrid encryption, i.e. combination of symmetric and asymmetric encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/061Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying further key derivation, e.g. deriving traffic keys from a pair-wise master key

Abstract

이중 래칫 통신 프로토콜(double ratchet communication protocol)을 이용하여 순방향 비밀성(forward secrecy)과 손상 후 보안(post-compromise security)을 유지하면서 종단간(end-to-end) 암호화된 보안 메시징 세션에서 데이터를 즉석에서 암호 해독하기 위한 시스템, 장치 및 방법이 개시된다. 고유 메시지 키가 각각의 장치에서 독립적으로 예측 가능한 진행(progression)으로 생성될 수 있고, 각각의 메시지에 대한 키를 필요 기반으로 래칫하고, 예측 가능한 진행을 위한 시드 키와 상태가 장치들 사이의 비대칭 키 교환에 기초하여 업데이트될 수 있어, 제2 래칫 역할을 한다. 메시지 키는 진행에서 다음 메시지 키를 생성하기 위하여 의사 난수 생성기(pseudo-random number generator(PRG))에 공급될 수 있다. 연속 키 합의(Continuous Key Agreement(CKA)) 엔진이 PRG의 상태를 리셋하고 PRG로 리프레시 키를 제공하도록 의사 랜덤 함수(Pseudo-Random Function(PRF-PRNG))에 공급하기 위한 공유 비밀 키를 생성하기 위하여 비대칭 키 쌍을 사용할 수 있다.

Description

에폭 키 교환을 이용한 종단간 이중 래칫 암호화
관련 출원에 대한 교차 참조
본 출원은 전체가 참조에 의해 본 명세서에 편입되는 2019년 2월 5일 출원된 미국 특허 출원 No. 16/267,819에 대한 우선권을 주장한다.
기술분야
본 출원은 일반적으로 전자 장치 통신에 관한 것으로, 특히, 종단간(end-to-end) 암호화에 관한 것이다.
컴퓨터 네트워크 상의 통신 보안은 암호 키의 생성, 배포, 저장 및 관리를 필요로 한다. 전송된 정보는 문자 메시지, 파일, 음성 및 기타 포맷을 포함한다. (본 명세서에서의 목적을 위하여, 메시징은 임의의 포맷으로 암호화되어 전달되는 데이터로서 정의될 것이다.) 메시지는 일반적으로 전송 전에 암호화된 상태로 저장되고, 동작은 이미 암호화된 데이터에 대하여 수행될 수 있다. 종단간 암호화는 일반적으로 통신 당사자들이 메시지를 암호 해독할 수 있는 유일한 사용자들인 것을 특징으로 한다. 종단간 암호화는 통신을 용이하게 하는데 사용되는 중재자 및 서드 파티가 도청하는 것을 방지할 수 있으며, 심지어 손상된 네트워크에서도 보안 통신을 가능하게 할 수 있다.
보안 메시징(Secure Messaging(SM))은 전세계의 수십 억의 사람들 사이의 주요 통신 수단이 되어 왔지만, 몇몇 예외를 제외하고는 이 용어에는 전세계적으로 인정된 공식적인 정의 및 증거(proof)가 부족하다. 이중 래칫 알고리즘(Double Ratchet Algorithm)으로도 알려진 아홀로틀 래칫(Axolotl Ratchet)은 OTR(Off-the-Record) 메시징 시스템에서의 디피 헬먼(Diffie Hellman) 비대칭 래칫과, 사일런트 서클(Silent Circle) 메시징 프로토콜에 의해 사용되는 대칭 키 래칫에 모델링되며, 그 결과 현재의 유비쿼터스 신호 프로토콜이 된다. 모든 메시지를 새로운 대칭 키로 암호화 및 인증하는 것은 상업적 사용에서의 많은 최신의 종단간 암호화된 메시징 제품의 기초이다.
특정 구현에 대한 보안 증명의 개수는 제한되어 있지만, 일반화된 프로토콜에 대한 보안 증명은 없으며 양자 컴퓨터에 의한 무차별 대입 공격(brute force attack)에 대해 어떠한 입증 가능한 보안도 없다. 구체적으로는, 디피 헬만 알고리즘(비대칭 래칫을 위한 신호 프로토콜에서 현재 사용됨)은 일반적으로 격자 또는 코드 기반 알고리즘과 같은 양자 후 암호화(post-quantum cryptography)에 비해 더 취약하다. 기존의 일부 래칫 프로토콜은 순방향 비밀성(forward secrecy) 및 손상 후 보안(post-compromise security)과 같은 바람직한 속성을 달성하지만, 신호 유사 프로토콜의 공식 증명은 즉각적인 암호 해독을 희생하고 메시지 손실 검색(message loss retrieval(MLR)) 기능이 제한적이거나 전혀 없다.
따라서 개선된 종단간 메시지 암호화를 위한 개선된 방법, 장치 및 시스템이 필요하다.
본 발명의 과제는 순방향 비밀성과 손상 후 보안을 유지하면서 종단간 암호화된 보안 메시징 세션에서 데이터를 자동으로 즉석에서 암호 해독하기 위한 시스템, 장치 및 방법을 제공하는 것이다. 일반적으로, 본 명세서에 제시된 예시적인 통신 장치는 각각 메시지 키 시퀀스를 생성하기 위한 의사 난수 생성기(pseudo-random number generator(PRG)), 연속 키 합의(Continuous Key Agreement(CKA)) 엔진, PRG의 상태를 리셋하고 PRG에 리프레시 키를 제공하기 위하여 CKA에 의해 공급되는 의사 랜덤 함수(Pseudo-Random Function(PRF-PRNG))를 포함한다. 통신 세션에서의 각각의 통신 장치는 각각의 장치에서 대칭 키를 독립적으로 생성하기 위하여 연속 키 합의(CKA)를 활용하고, 대칭 키와 PRG의 이전 상태를 PRF-PRNG에 제공하고, 대칭 키와 이전 상태에 기초하여 PRF-PRNG로 업데이트된 상태와 리프레시 키를 생성하고, 상태로 PRG를 초기화하고, 제1 메시지 키를 생성하기 위하여 PRG로 근본 키(root key)를 제공하여, 후속 메시지 키와 주어진 일방향 통신 에폭에 대한 메시지 키 시퀀스를 생성하기 위하여 PRG로 각각의 메시지 키를 재귀적으로 공급하고, 수신 장치가 송신 장치로 되도록 메시지 전송 방향이 변경될 때 CKA를 통해 새로운 비대칭 키를 생성하여 이에 의해 제1 에폭에 대하여 메시지 키를 생성하는데 사용된 것과 유사한 방식으로 PRF-PRNG 및 PRG를 이용하여 새로운 메시지 키 시퀀스를 생성할 수 있고, 새로운 메시지 키 시퀀스는 제2의 일방향 통신 에폭에 대한 메시지 키이다.
본 발명의 다른 과제는, 메시지가 송신기로부터 정리가 안 된 채로 수신될 수 있지만 그럼에도 불구하고 수신기에 의해 즉시 암호 해독되어 메시징 큐에서 적절히 정렬될 수 있는 프로토콜을 제공하는 것이다. 암호 래칫은 일부 메시지가 영구적으로 손실될 때에도 생동감(liveness)을 유지하는데 사용될 수 있다. 각각의 메시지는 메시지의 진위를 검증하고 그리고/또는 메시지가 송신 장치로부터 송신된 순서를 결정하기 위하여 수신 장치에 의해 사용될 수 있는 헤더를 포함할 수 있다.
장치들 사이에 메시지를 교환하기 위한 방법은 특정 순서 없이 제시된 다음의 단계들 중 하나 이상을 포함할 수 있고, 방법은 여기에 포함되지 않은 추가 단계들을 포함할 수 있다. 종단간 암호화 프로토콜을 통해 서로 데이터를 전송할 수 있는 2개의 통신 장치인 "장치 A" 및 "장치 B"가 제공될 수 있다. 근본 상태(root state)와, 제1 공개 키 및 제1 개인 키를 갖는 제1 비대칭 키 쌍을 포함하는 데이터 구조가 종단간 암호화를 용이하게 하도록 제공될 수 있다. 근본 상태는 장치 A 및 장치 B 모두에 저장될 수 있고, 제1 공개 키는 장치 A에 저장될 수 있고, 제1 개인 키는 장치 B에 저장될 수 있다. 제1 에폭 키는 제1 공개 키에 기초하여 장치 A에 생성될 수 있고, 장치 A는 또한 제2 개인 키와 제2 공개 키를 갖는 제2 비대칭 키 쌍을 생성할 수 있다. 제1 에폭 키와 제2 공개 키는 장치 A에 의해 전송되고 장치 B에 의해 수신될 수 있다. 장치 A 및 B의 각각은 제1 리프레시 키와 제1 상태를 독립적으로 생성할 수 있다. 장치 A에서, 제1 리프레시 키와 제1 상태는 각각 제1 공개 키와 근본 상태에 기초하여 생성될 수 있다. 장치 B에서, 제1 리프레시 키와 제1 상태는 각각 제1 개인 키, 제1 에폭 키 및 근본 상태에 기초하여 생성될 수 있다. 장치 A 및 B의 각각은 각각의 장치에서 제1 메시지 키가 제1 상태 및 제1 리프레시 키에 기초하도록 제1 메시지 키를 독립적으로 생성할 수 있다.
장치 A에서 수중에 있는 제1 메시지 키를 이용하여, 장치 A는 장치 B로 암호화된 메시지를 송신하기 시작할 수 있다. 장치 A는 제1 메시지 키로 제1 메시지를 암호화하여 암호화된 제1 메시지를 장치 B로 전송할 수 있다. 장치 B는 제1 메시지 키를 수신하고 제1 메시지 키 이용하여 이를 암호 해독할 수 있고, 제1 메시지 키를 이전에 생성하였거나, 제1 메시지의 수신에 따라 제1 메시지 키를 생성하였다.
제2 메시지 키는 장치 A 및 장치 B의 각각에서 독립적으로 생성될 수 있고, 제2 메시지 키는 제1 상태와 제1 메시지 키에 기초하여 생성된다. 장치 A에서 수중에 있는 제2 메시지 키를 이용하여, 장치 A는 장치 B로 암호화된 제2 메시지를 송신할 수 있다. 장치 A는 제2 메시지 키로 제2 메시지를 암호화하여 암호화된 제2 메시지를 장치 B로 전송할 수 있다. 장치 B는 암호화된 제2 메시지를 수신하고 제2 메시지 키 이용하여 이를 암호 해독할 수 있고, 제2 메시지 키를 이전에 생성하였거나, 제2 메시지의 수신에 따라 제2 메시지 키를 생성하였다.
장치 B가 장치 A에 응답하기 시작할 때, 새로운 메시지 키 시퀀스를 생성하기 위하여 제1 상태는 제2 상태로 업데이트될 수 있고 제1 리프레시 키는 제2 리프레시 키로 업데이트될 수 있다. 장치 B가 장치 A에 의해 이전에 생성되어 전송된 제2 공개 키에 기초하여 제2 에폭 키를 생성할 수 있다. 또한, 장치 B는 제3 개인 키와 제3 공개 키를 갖는 제3 비대칭 키 쌍을 생성할 수 있다. 제2 에폭 키와 제3 공개 키는 장치 B에 의해 전송되고 장치 A에 의해 수신될 수 있다. 장치 A 및 장치 B는 각각의 장치에서 제2 리프레시 키와 제2 상태를 독립적으로 생성할 수 있다. 장치 B에서, 제2 리프레시 키와 제2 상태는 장치 B에서 이전에 생성된 제2 공개 키와 제1 상태에 기초하여 생성될 수 있다. 장치 A에서, 제2 리프레시 키와 제2 상태는 각각 장치 A에서 이전에 생성된 제2 개인 키, 장치 B로부터 수신된 제2 에폭 키 및 장치 A에서 이전에 생성된 제1 상태에 기초하여 생성될 수 있다. 각각의 장치에서 수중에 있는 제2 상태와 제2 리프레시 키를 이용하여, 장치 A 및 B는 전술된 바와 같은 제1 및 제2 메시지 키가 생성되는 방법과 유사한 방법으로 제3 및 제4 메시지 키를 독립적으로 생성할 수 있다.
또한, 장치 B가 제2 에폭 키와 제1 공개 키를 장치 A로 전송하기 전에, 제1 메시지 키 및/또는 제2 메시지 키는 장치 B로부터 삭제될 수 있다.
장치 A에 의해 전송된 제1 메시지를 참조하면, 장치 A는 헤더를 포함하는 제1 암호문을 생성할 수 있고, 제1 암호문은 장치 B로 전송될 수 있다. 헤더는 제1 메시지 키가 제1 암호문을 암호 해독하기 위한 적합한 메시지 키인 것을 검증하기 위하여 장치 B에 의해 사용될 수 있다. 헤더는 제1 메시지 키와 연관된 제1 메시지 인덱스와 제1 상태와 연관된 제1 에폭 인덱스를 포함하도록 장치 A에 의해 생성될 수 있다. 장치 B는 제1 메시지 인덱스와 제1 에폭 인덱스에 기초하여 제1 메시지 키를 검증할 수 있다.
추가적으로 또는 대안적으로, 장치 A는 제1 에폭 키와 제2 공개 키를 포함하도록 제1 헤더를 생성할 수 있고, 제1 에폭 키와 제2 공개 키는 제1 암호문의 제1 헤드에서 장치 B로 전송될 수 있다.
장치 A 및 장치 B의 각각에서의 제1 메시지 키의 생성과 관련하여, 제1 공유 키는 제1 메시지 키를 생성하기 전에 수행되는 중간 단계로서 각각의 장치에서 독립적으로 생성될 수 있다. 장치 A 및 장치 B의 각각에서, 제1 리프레시 키와 제1 상태는 제1 공유 키와 근본 상태에 기초하여 생성될 수 있다. 장치 A에서, 제1 공유 키는 제1 공개 키에 기초하여 생성될 수 있고, 장치 B에서, 제1 공유 키는 제1 개인 키와 제1 에폭 키에 기초하여 생성될 수 있다.
장치 A 및 장치 B의 각각은 해당하는 의사 랜덤 함수를 가질 수 있다. 각각의 장치에서 독립적으로, 제1 공유 키와 근본 키는 의사 랜덤 함수로 입력으로서 제공될 수 있고, 제1 상태와 제1 리프레시 키는 의사 램덤 함수의 출력에서 생성될 수 있다.
장치 A 및 장치 B에 저장된 근본 상태와 관련하여, 근본 상태는 각각의 장치에 의해 수신된 근본 키에 기초하여 각각의 장치에서 독립적으로 생성될 수 있다. 장치 A 및 장치 B의 각각에서 독립적으로, 근본 키는 해당하는 의사 랜덤 함수에 제공될 수 있고, 근본 상태는 각각의 해당하는 의사 랜덤 함수로부터의 출력으로서 생성될 수 있다.
장치 A 및 장치 B는 각각 각각의 에폭에 대하여 메시지 키 시퀀스를 생성하기 위하여 사용될 수 있는 해당하는 난수 생성기를 가질 수 있다. 제1 및 제2 메시지 키의 생성과 관련하여, 난수 생성기는 제1 메시지 키와 제2 메시지 키를 독립적으로 생성하기 위하여 각각의 장치에서 사용될 수 있다. 장치 A 및 장치 B의 각각에서, 해당하는 난수 생성기는 제1 상태로 초기화될 수 있고, 제1 리프레시 키가 난수 생성기로 입력으로서 제공될 수 있다. 제1 메시지 키는 제1 리프레시 키에 기초하여 제1 상태로 초기화된 난수 생성기에 의해 생성될 수 있다. 제1 메시지 키는 제2 메시지 키를 생성하기 위하여 제1 상태로 초기된 난수 생성기로 입력으로서 제공될 수 있다.
대안적으로, 각각의 해당하는 난수 생성기와 해당하는 의사 랜덤 함수는 각각의 에폭에 대하여 메시지 키 시퀀스를 생성하는데 사용될 수 있다. 각각의 장치에서, 제1 메시지 키는 전술된 바와 유사하게 생성될 수 있다. 제2 메시지 키는 제1 메시지 키에 기초하지 않고 생성될 수 있지만, 대신에 제1 상태를 의사 랜덤 함수로 입력으로서 제공하고, 제2 상태를 의사 램덤 함수로 출력으로서 생성하고, 난수 생성기를 제2 상태로 초기화하고, 제2 상태로 초기화된 난수 생성기로 제2 메시지를 생성함으로써 생성될 수 있다.
메시지를 교환하는 다른 예시적인 방법은 특정 순서 없이 제시된 다음의 단계들 중 하나 이상을 포함할 수 있고, 방법은 여기에 포함되지 않은 추가 단계들을 포함할 수 있다. 종단간 암호화 프로토콜을 통해 서로 데이터를 전송할 수 있는 2개의 통신 장치인 "장치 A" 및 "장치 B"가 제공될 수 있다. 제1 공개 키 및 제1 개인 키를 갖는 제1 비대칭 키 쌍을 포함하는 데이터 구조가 종단간 암호화를 용이하게 하도록 제공될 수 있다. 제1 공개 키는 장치 A에 저장될 수 있고, 제1 개인 키는 장치 B에 저장될 수 있다. 장치 A 및 장치 B의 각각은 해당하는 의사 랜덤 생성기를 저장하였을 수 있다.
제1 에폭 키는 제1 공개 키에 기초하여 장치 A에 생성될 수 있고, 장치 A는 또한 제2 개인 키와 제2 공개 키를 갖는 제2 비대칭 키 쌍을 생성할 수 있다. 제1 에폭 키와 제2 공개 키는 장치 A에 의해 전송되고 장치 B에 의해 수신될 수 있다. 제1 메시지 키와 제2 메시지 키가 장치 A 및 장치 B의 각각에서 독립적으로 생성될 수 있다. 장치 A에서, 제1 메시지 키는 제1 공개 키에 기초할 수 있다. 장치 B에서, 제1 메시지 키는 제1 개인 키와 제1 에폭 키에 기초할 수 있다. 각각의 장치에서, 제1 메시지 키는 해당하는 의사 난수 생성기로 입력으로서 제공될 수 있고, 제2 메시지 키는 각각의 의사 난수 생성기의 출력으로서 생성될 수 있다.
장치 A는 제1 메시지 키로 제1 메시지를 암호화하고 제2 메시지 키로 제2 메시지를 암호화하여, 암호화된 제1 메시지와 암호화된 제2 메시지를 포함하는 제1 에폭을 전송할 수 있다. 장치 B는 제1 에폭을 수신하여 제1 메시지 키로 암호화된 제1 메시지를 암호 해독하고 제2 메시지 키로 암호화된 제2 메시지를 암호 해독할 수 있다.
장치 B가 장치 A에 응답하기 시작할 때, 장치 B는 장치 A에 의해 이전에 전송된 제2 공개 키에 기초하여 제2 에폭 키를 생성할 수 있고, 장치 B는 제3 개인 키와 제3 공개 키를 갖는 제3 비대칭 키 쌍을 생성할 수 있다. 제2 에폭 키와 제3 공개 키는 장치 B에 의해 전송되고 장치 A에 의해 수신될 수 있다. 장치 A 및 장치 B는 제3 메시지 키를 독립적으로 생성할 수 있다. 장치 B에서, 제3 메시지 키는 제2 공개 키에 기초할 수 있다. 장치 A에서, 제3 메시지 키는 제2 개인 키와 제2 에폭 키에 기초할 수 있다.
장치 B는 제3 메시지 키로 제3 메시지를 암호화하여 암호화된 제3 메시지를 포함하는 제2 에폭을 전송할 수 있다. 제2 에폭을 전송하기 전에, 장치 B는 제1 에폭으로부터 제1 메시지 키와 제2 메시지 키를 삭제할 수 있다. 장치 A는 제2 에폭을 수신하고, 제3 메시지 키로 암호화된 제3 메시지를 암호 해독할 수 있다.
각각 하나 이상의 암호화된 메시지를 포함하는 다수의 에폭이 전송될 수 있다. 각각의 에폭에 대하여, 에폭에서의 모든 전송된 암호화된 메시지는 장치 A 및 장치 B 중 단지 하나만으로부터 전송될 수 있다. 에폭은, 장치 A가 모든 홀수 에폭을 전송하고 장치 B가 모든 짝수 에폭을 전송하도록 교대하는 방식으로 장치 A 및 장치 B의 각각으로부터 전송될 수 있다.
에시적인 방법에서의 제1 메시지 키와 관련하여, 제1 헤더는 장치 A에서 생성될 수 있고, 장치 A는 암호화된 헤더와 암호화된 제1 메시지를 포함하는 제1 암호문을 생성할 수 있고, 평문 형태의 헤더가 제1 암호문에 첨부될 수 있고, 장치 A는 제1 암호문과 평문 헤더를 전송할 수 있다. 장치 B는 제1 암호문과 평문 헤더를 수신하고 평문 헤더에 기초하여 암호문을 인증할 수 있다.
장치 A는 메시지 인덱스를 생성할 수 있고, 제1 헤더는 메시지 인덱스를 포함할 수 있다. 장치 B는 메시지 인덱스에 기초하여 n번째 메시지 키를 생성할 수 있다.
근본 상태는 장치 A 및 장치 B의 각각에 제공될 수 있다. 장치 A 및 장치 B의 각각에서의 해당하는 의사 난수 생성기는 근본 상태에 기초하여 초기화될 수 있다. 업데이트된 상태는 근본 상태에 기초하여 장치 A 및 장치 B의 각각에서 생성될 수 있고, 의사 난수 생성기는 업데이트된 상태에 기초하여 재초기화될 수 있다.
제1 공유 키는 장치 A 및 장치 B의 각각에서 독립적으로 생성될 수 있다. 장치 A에서, 제1 공유 키는 제1 공개 키에 기초하여 생성될 수 있고, 장치 B에서, 제1 공유 키는 제1 개인 키와 제1 에폭 키에 기초하여 생성될 수 있다. 리프레시 키와 제1 상태는 장치 A 및 장치 B에서 독립적으로, 각각 공유 키와 근본 상태에 기초하여 생성될 수 있다. 각각의 장치에서 제1 메시지 키를 생성하기 위하여, 의사 난수 생성기는 제1 상태로 초기화될 수 있고, 제1 리프레시 키는 초기화된 의사 난수 생성기로 입력으로서 제공될 수 있고, 제1 메시지 키는 의사 난수 생성기의 출력으로서 생성될 수 있다.
본 발명의 전술한 양태 및 추가 양태는 다양한 도면에서 유사한 도면 부호가 유사한 구성 요소 및 특징을 나타내는 첨부된 도면과 함께 이어지는 설명을 참조하여 논의될 것이다. 도면은 반드시 축적에 맞을 필요는 없으며, 대신에 본 발명의 원리를 나타냄에 따라 강조될 수 있다. 도면들은 본 발명의 장치의 하나 이상의 구현예를 한정이 단지 예시로서만 도시한다.
도 1은 본 발명의 양태에 따라 메시지를 제1 장치로부터 제2 장치로 송신하기 위하여 사용될 수 있는 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다;
도 2는 본 발명의 양태에 따라 메시지 키 시퀀스를 생성하기 위한 의사 난수 생성기에 대한 반복 호출을 포함하는 예시적인 구현예를 도시하는 순서도이다;
도 3은 본 발명의 양태에 따라 송신 래칫에 포함될 수 있는 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다;
도 4는 본 발명의 양태에 따라 수신 래칫에 포함될 수 있는 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다;
도 5는 본 발명의 양태에 따른 CKA의 초기화를 도시하는 순서도이다;
도 6은 본 발명의 양태에 따라 비대칭 키 쌍에 기초한 송신 및 수신 장치 상의 공유 키의 생성을 도시하는 순서도이다;
도 7은 본 발명의 양태에 따라 후속 에폭 키에 대한 대칭 키를 생성하기 위한 예시적인 공개 키의 교환과 개인 전파를 도시하는 순서도이다;
도 8은 본 발명의 양태에 따라 송신 장치의 관점으로부터의 예시적인 CKA 기능 블록의 기능을 도시하는 순서도이다;
도 9는 본 발명의 양태에 따라 수신 장치의 관점으로부터의 예시적인 CKA 기능 블록의 기능을 도시하는 순서도이다;
도 10, 11, 12 및 13은 본 발명의 양태에 따른 PRG의 초기화, 시딩 및 진행을 도시하는 순서도이다;
도 14는 본 발명의 양태에 따라 메시지 그루핑 메커니즘으로서의 에폭의 사용을 도시하는 순서도이다;
도 15는 본 발명의 양태에 따라 제1 장치로부터 제2 장치로 메시지를 송신하기 위한 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이고, 각각의 메시지는 헤더를 포함한다;
도 16은 본 발명의 양태에 따라 에폭에서 메시지를 카운팅하기 위한 인덱스와 PRG를 초기화하는데 사용될 수 있는 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다;
도 17은 본 발명의 양태에 따라 송신 장치의 관점으로부터 헤더를 포함하는 메시지를 송신하기 위한 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다;
도 18은 본 발명의 양태에 따라 수신 장치의 관점으로부터 헤더를 포함하는 메시지를 수신하기 위한 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다;
도 19는 본 발명의 양태에 따라 래칫을 수행하기 위한 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다;
도 20은 본 발명의 양태에 따라 래칫을 수행하기 위한 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다;
도 21은 본 발명의 양태에 따른 메시지 복구를 도시하는 순서도이다; 그리고
도 22a, 22b 및 22c는 본 발명의 특정 양태를 가능하게 하는데 사용될 수 있는 예시적인 시스템 환경의 도면들이다.
이하, 다음의 두문자가 본 명세서에서 사용될 것이다L
CKA Continuous Key Agreement(연속 키 합의)
Dec Decapsulation(분해)
Enc Encapsulation(캡슐화)
FS Forward Secrecy(순방향 비밀성)
FS-AEAD Forward-Secure Authenticated Encryption with Associated Data(연관된 데이터로 순방향 보안 인증 암호화)
KG Key Generator(키 생성기)
mKey Message Key(메시지 키)
PRF-PRNG Pseudo-Random Function(의사 랜덤 함수)
PRG Pseudo-Random Number Generator(의사 난수 생성기)
PRG(w) PRG initialized to state w(상태 w로 초기화된 PRG)
QMP Qrypt Messaging Protocol(크립트 메시징 프로토콜)
일반적으로, 본 명세서에 제시된 예시적인 장치, 시스템 및 방법은 크립트 메시징 프로토콜(Qrypt Messaging Protocol(QMP))을 통해 비보안(unsecure) 채널을 통한 통신 장치들 사이의 종단간(end-to-end) 메시지 전송을 가능하게 할 수 있다. QMP는 즉각적인 해독, 순방향 비밀성 및 손상 후 보안(post-compromise security)을 제공하는 이중 래칫(double ratchet)의 소프트웨어 구현일 수 있다. 일부 예에서, QMP는 가장 최근의 합법적인 메시지 이전의 하나 이상의 메시지가 수신되지 않은 경우에도 수신된 합법적 메시지가 즉적적으로 암호 해독되도록 할 수 있다. 일부 예에서, QMP는 메시지 손실 회복력을 촉진할 수 있으며, 이에 따라 메시지가 완전히 손실되더라도, 당사자들은 계속해서 통신할 수 있다. 통신 장치의 상태가 누출된 경우에도 어떠한 이전 메시지도 손상되지 않도록, 순방향 비밀성은 보안 메시징 세션 동안 유지될 수 있다. 통신 장치의 상태의 노출이 끝나면 보안이 몇 번의 통신 라운드 후에 복원될 수 있도록, 손상 후 보안이 보안 메시징 세션 동안 유지될 수 있다.
도 1은 제1 장치(장치 A(100))에서의 Alice로부터 제2 장치(장치 B(200))에서의 Bob에게 메시지를 송신하는데 사용될 수 있는 예시적인 기능 블록, 데이터 구조 및 방법 단계를 고수준으로 도시하는 순서도이다. 장치 A(100)에는 메시지(102)(예를 들어, 평문(plaintext), 음성, 비디오, 센서 데이터 및 기타 포맷)와 전송을 위하여 메시지(102)가 암호화되는 것을 요청하는 송신 명령(104)이 제공된다. 송신 명령(104)은 장치 A(100)가 래칫 질의(ratchet query)(110)를 개시하게 할 수 있다. 래칫 질의(110)에 의해 메시지 키가 래칫에 의해 리프레시되어야 한다고 결정되면, 장치 A는 송신 래칫(120) 알고리즘을 개시할 수 있고, 그러면, 송신 래칫(120)은 메시지(102)를 암호화하는데 사용될 다음 메시지 암호화 키(170)를 생성할 수 있다. 래칫 질의(110)에 의해 메시지 키가 래칫에 의해 리프레시될 필요가 없다고 결정되면, 장치 A는 다음 메시지 키(170)를 생성하기 위하여 의사 난수 생성기(pseudo-random number generator(PRG))(150)를 개시할 수 있다. 그 다음, 다음 메시지 키(170)와 메시지(102)는 암호화 알고리즘(160)에 입력으로서 제공될 수 있다. 암호화 알고리즘(160)은 메시지 키(170)에 의해 암호화된 메시지(102)를 포함하는 암호문(ciphertext)(104)을 생성할 수 있고, 암호문(104)은 장치 B(200)로 전송될 수 있다.
장치 B(200)는 암호문(204) 및 암호문(204)의 도착에 의해 트리거되는 수신 명령(206)을 수신할 수 있다. QMP의 과제가 비보안 통신 채널을 통한 Alice와 Bob 사이의 보안 통신을 가능하게 하는 것이고, 따라서, Bob에 의해 수신된 전송문은 Alice에 의해 송신된 전송문과 동일할 수 있거나 동일하지 않을 수 있다. Bob에 의해 수신된 암호문(204)은, 암호문(204)이 전송 동안 자신의 완정성을 유지하고 있다면(예를 들어, 공격에 의해 부당 변경되거나 열화되지 않았다면), Alice에 의해 송신된 암호문(104)과 동일할 수 있다.
수신 명령(206)은 장치 B(200)가 래칫 질의(210)를 수행하게 할 수 있다. 유사하게, 장치 A(100)에서와 같이, 래칫 질의(210)에 의해 장치 B(200) 상의 메시지 키가 래칫에 의해 리프레시되어야 한다고 결정되면, 장치 B(200)는 수신 래칫(220) 알고리즘을 개시할 수 있고, 그러면, 수신 래칫(120)은 암호문(204)을 암호 해독하는데 사용될 다음 메시지 암호화 키(270)를 생성할 수 있다. 래칫 질의(210)에 의해 메시지 키가 래칫에 의해 리프레시될 필요가 없다고 결정되면, 장치 B(200)는 다음 메시지 키(270)를 생성하기 위하여 의사 난수 생성기(PRG)(250)를 개시할 수 있다. 그 다음, 다음 메시지 키(270)와 암호문(204)은 암호화 알고리즘(260)에 입력으로서 제공될 수 있다. 암호화 알고리즘(260)은 메시지 키(270)에 의해 암호 해독된 메시지(202)를 생성할 수 있다.
장치 A(100) 및 장치 B(200)는, 각각, 해당 장치(100, 200)에서 생성된 메시지 키(170, 270)가 호환 가능하고 그리고/또는 동일하여 송신된 메시지(102)와 동일한 메시지(202)의 수신을 가능하게 하도록 다음과 같이 구성될 수 있다. 장치 A(100) 및 장치 B(200) 모두에서의 래칫 질의(110, 210)는 양 래칫 질의(110, 210)가 이 메시지 키가 리프레시되어야 한다고 결정하거나 어떠한 래칫 질의(110, 210)도 메시지 키가 리프레시되어야 한다고 결정하지 않도록 조정될 수 있다. 양 래칫 질의(110, 210)이 메시지 키가 리프레시되어야 한다고 결정한다면, 송신 래칫(120) 및 수신 래칫이 호환 가능하고 그리고/또는 동일한 메시지 키(170, 270)를 독립적으로 생성할 수 있다. 유사하게, 양 래칫(110, 210)이 메시지 키가 리프레시되지 않아야 한다고 결정하면, 해당 장치(100, 200)에서의 PRG(150, 250)가 호환 가능하고 그리고/또는 동일한 메시지 키(170, 270)를 독립적으로 생성할 수 있다. 암호문(204)이 전송 동안 부당 변경되거나 열화되지 않으면, 장치 B(200)에 의해 수신된 암호문(204)은 장치 A(100)에 의해 전송된 암호문(104)과 동일할 수 있다. 암호화 알고리즘(160)은, 메시지(102) 및 메시지 키(170)에 기초하여 암호화 알고리즘(160)에 의해 생성된 암호문(104)이 전송된 메시지(102)와 동일한 메시지(202)를 생성하도록 메시지 키(270)를 이용하여 암호 해독 알고리즘(260)에 의해 암호 해독될 수 있도록 암호 해독 알고리즘(260)과 호환 가능할 수 있다.
일부 예에서, PRG(150, 250)는 이전 메시지 키에 기초하여 다음 메시지 키(170, 270)를 생성할 수 있고, 송신 래칫(120)과 수신 래칫(220)은 PRG(150, 250)에 의해 생성된 키 시퀀스를 시딩(seed)하기 위하여 제1 키를 생성하는데 사용될 수 있어, 이중 래칫 프로토콜을 가능하게 한다.
도 2는 메시지 키(71, 72, 73)의 시퀀스를 생성하기 위한 PRG(50)에 대한 반복 호출을 포함하는 예시적인 구현예를 도시한다. 일부 예에서, 보안 세션에서 통신하는 각각의 장치는 각각의 통신 장치에서 메시지 키의 연속(progression)을 독립적으로 생성하기 위한 동일하거나 호환 가능한 PRG를 가질 수 있다. 장치 A(100) 및 장치 B(200)은 각각 도 2에서 PRG(50)로 도시된 바와 같이 기능하는 PRG(150, 250)을 가질 수 있다. 동일한 초기값 또는 시드 값(71)으로 시딩되기 때문에, PRG(50)은 암호화 및 암호 해독을 위한 예측 가능한 세트의 키(72, 73)를 생성할 수 있다. 메시지 키 래칫 단계는 메시지 키를 하나의 메시지 키로부터 다음 메시지 키로 순차적으로 진행하기 위한 PRG(50)에 대한 호출을 포함할 수 있다. 메시지 키의 연속은 해시(hash)와 같은 예측 가능한 일방향 함수(function)를 통해 PRG(50)에 의해 생성될 수 있다. 메시지를 송신 및 수신할 때, 송신 장치 및 수신 장치(예를 들어, 도 1에 도시된 장치 A(100) 및 장치 B(200))는 각각의 장치가 동일한 시드 키(71)로 시작하도록 제1 메시지에서 동기화될 수 있다. 각각의 장치는 동일한 후속 n 번째 메시지 키(73)를 생성하도록 해당 장치에서 PRG(50)를 독립적으로 증분시킬 수 있다.
일부 예에서, PRG(50)는 복수의 상태(state)(52) 중 하나로 동작할 수 있어, 시드 키(71)로 시딩된 제1 상태에서의 PRG(50)가 PRG가 제1 상태와 다른 제2 상태에 있는 경우에 동일한 시드 키(71)에 의해 시딩된 동일한 PRG(50)에 의해 생성될 수 있는 n 번째 키(73)와 상이한 n 번째 메시지(73)를 생성할 수 있다. 즉, 상이한 상태(52)에 의해 초기화된 동일한 시드 키(71)에 의해 공급된 동일한 PRG(50)가 호환 가능한 키를 생성하지 않을 것이고, 동일한 시드 키(71)에 의해 공급된 동일한 상태(52)에 있는 동일한 PRG(50)가 호환 가능한 메시지 키를 신뢰성 있게 생성할 수있다.
일부 예에서, PRG는 스트림 암호기(stream cipher)로부터 구성 가능할 수 있으며, "입력" 데이터가 제공된 "키" 데이터의 알 수 없거나 가변하는 길이에 대한 출력을 생성할 수 있다. PRG는 장래로 지속적으로 실행되고 있고 스토리지에 직렬화될 수 있는 암호화 알고리즘 스트림 상태를 가능하게 하도록 저장 가능할 수 있다. 일부 예에서, 특정 PRG는 보안 메시징 구성의 시작에서 결정될 수 있으며 재구성 시 재구성(재설정)될 수 있다. 하나의 대화(conversation)의 구성은 다른 대화 구성과 다를 수 있다; 즉, 보안 메시징 인스턴스 및 송신 및 수신을 위한 이의 PRG에서의 임의의 두 사용자 사이의 대화.
일부 예에서, 메시지 키 래칫은 업데이트된 상태(52)로 PRG를 재초기화하고 새로운 시드 키 또는 리프레시 키(71)를 제공함으로써 리셋될 수 있다. 재초기화 및 새로운 시드 키의 제공은 이중 래칫 프로토콜에서 제2 래칫 또는 에폭 래칫 역할을 할 수 있다.
도 3은 도 1에 도시된 송신 래칫(120)과 같은 송신 래칫에 포함될 수 있는 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다. 도 1 및 3을 종합적으로 참조하면, 일부 예에서, 송신 장치(100)는 이전 에폭으로부터의 제1 공개 키(122)와 PRG 상태(151)로 시작한다. 송신 래칫(120)은 출력으로서 업데이트된 PRG 상태(152), 제1 메시지 키(171), 제2 개인 키(126)와 제2 공개 키(128)를 포함하는 비대칭 키 쌍 및 에폭 키(124)를 제공할 수 있다. PRG(150)는 송신 래칫(120)에 의해 업데이된 상태(152)에 의해 초기화되고, 제1 메시지 키(171)는 도 2에 관련하여 논의된 바와 같이 PRG(159)가 메시지 키 시퀀스를 생성할 수 있는 시드 키로서 사용될 수 있다.
에폭 키(124) 및 제2 공개 키(128)는 수신 장치(200)로 전송될 수 있다. 제2 개인 키(126)는 장치 A(100)가 수신 장치가 되고 장치 B(200)가 송신 장치가 될 때 후속 에폭에서의 후속 수신 래칫에서의 사용을 위하여 송신 장치(100)로 저장될 수 있다.
도 4는 도 1에 도시된 수신 래칫(220)과 같은 수신 래칫에 포함될 수 있는 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다. 도 1, 3 및 4를 종합적으로 참조하면, 일부 실시예에서, 수신 장치(200)는 송신 장치(100)에 의해 전송된 에폭 키(124)일 수 있는 에폭 키(224)와 송신 장치(100)로부터 전송된 제2 공개 키(128)와 동일할 수 있는 제2 공개 키(228)를 수신한다. 에폭 키(124)와 제2 공개 키(128)가 비보안 통신 채널을 통해 Alice로부터 Bob으로 전송될 수 있고, 그 결과, Bob에 의해 수신된 에폭 키(224)와 제2 공개 키(228)가 Alice에 의해 송신된 키(124, 128)와 동일할 수도 있고 동일하지 않을 수도 있다는 것에 주목하라. 이 예의 목적으로, Bob에 의해 수신된 에폭 키(224)와 제2 공개 키(228)는 Alice에 의해 전송된 에폭 키(124)와 제2 공개 키(128)와 동일하다고 가정된다. 수신 장치인 장치 B(200)는 송신 장치(100)에서의 이전 에폭으로부터의 PRG 상태(151)와 동일할 수 있는 이전 에폭으로부터의 PRG 상태(251)를 메모리에 저장할 수 있다.
장치 B(200)에서, 수신 래칫(220)은 출력으로서 송신 장치(100)에서 생성된 업데이터된 PRG 상태(152)와 동일할 수 있는 업데이트된 PRG 상태(252)와, 송신 장치(100)에서 생성된 제1 메시지 키(171)와 동일하고 그리고/또는 호환 가능할 수 있는 제1 메시지 키(271)를 생성한다. PRG(250)는 수신 래칫(220)에 의해 업데이트된 상태(252)에 의해 초기화될 수 있고, 도 2에 관련하여 논의된 바와 같이 제1 메시지 키(271)는 수신 장치(200)에서의 PRG(250)가 메시지 키 시퀀스를 생성할 수 있는 시드 키로서 사용될 수 있다.
각각의 장치(100, 200)는 CKA(Continuous Key Agreement) 기능 블록(190, 290)을 포함할 수 있다. 각각의 CKA(190, 290)는 다음의 2가지 주요 기능을 제공할 수 있는 합의(agreement) 알고리즘을 실행할 수 있다: 키 쌍(126, 128)을 생성하는 방법과, 합의 또는 공유 키(캡슐화/분해)(124, 224)를 계산하는 방법. 도 3을 참조하면, 송신 장치는 출력으로서 대칭 키(130)와 에폭 키(124)를 생성할 수 있는 캡슐화 함수(132)에 대한 입력으로서 제공될 수 있는 제1 공개 키(122)로 시작할 수 있다. 도 4를 참조하면, 수신 장치에서의 에폭 키(224)는 송신 장치에서 생성된 에폭 키(124)와 동일할 수 있고, 에폭 키(124)는, 에폭 키(224)가 제1 공개 키(122)와 연관된 제1 개인 키(232)와 함께 분해 함수(234)로 입력될 때, 수신 장치에서 생성된 대칭 키(230)가 송신 장치에서 생성된 대칭 키(130)와 동일하고 그리고/또는 호환 가능할 수 있도록 생성될 수 있다. 다른 말로 하면, 제1 비대칭 키 쌍(122, 232)가 각각의 장치에서 대칭 키(130, 230)를 생성하는데 사용될 수 있다.
도 5는 CKA 초기화를 도시하는 순서도이다. 도 5에 도시된 바와 같이, 통신 세션의 시작에, 제1 비대칭 키 쌍이 서버(300)(중앙 키 기관 역할을 할 수 있음)로부터 제공될 수 있고, 제1 공개 키(122)는 송신 장치 A(100)에 의해 수신되고, 제1 개인 키(232)는 수신 장치 B(200)에 의해 수신된다. 서버(300)로부터 장치(100, 200)로의 통신은 비보안 네트워크를 통할 수 있거나, 보안성을 증가시키기 위하여, 보안 네트워크를 통할 수 있다. 각각의 장치(100, 200)가 제1 비대칭 키 쌍으로 초기화되면, 장치들 사이의 통신은 비보안 네트워크를 통해 수행될 수 있다.
도 6은 비대칭 키 쌍(122, 232)에 기초한 각각의 장치(100, 200)에서의 공유 키(130, 230)을 생성을 도시하는 순서도이다. 도 6은 공유 키(130) 및 추가 공개 키(에폭 키)(124)를 생성하기 위하여 송신 장치(100)에 의해 사용되는 제1 공개 키(122)를 도시하며, 추가 공개 키(124)는 수신 장치(200)에 의해 수신되고, 추가 공개 키(224)는 제1 개인 키(232)와 조합되어 공개 키(230)를 생성한다. 에폭 키(124)는 비보안 네트워크를 통해 전송될 수 있다.
도 7은 후속 에폭 래칫에 대한 대칭 키를 생성하기 위한 예시적인 공개 키의 교환 및 개인 키의 전파를 도시하는 순서도이다. 이 예에서, Alice는 제1 송신자이고, 장치 A로부터 모든 홀수 에폭을 송신하고, Bob은 제1 수신자이고 모든 홀수 에폭에서 메시지를 수신하고 모든 짝수 에폭에서 메시지를 송신한다. 장치 A는 제1 송신 장치(100)로서 시작한다. 장치 A에는 초기화 단계에 의해 제공된 제1 공개 키(122)가 제공될 수 있거나, 또는 장치 A가 이전 에폭에서 장치 B로부터 제공된 제1 공개 키(122)를 저장소에 가질 수 있다. 장치 A는 공개 키 또는 에폭 키(124)와 공유 비밀(secret) 또는 대칭 키(130)를 생성하기 위하여 캡슐화 함수(132)를 활용한다. 장치 A는 비대칭 키 쌍(126, 128)을 생성하기 위하여 키 생성 함수(136)를 활용할 수 있다. 제2 공개 키(128)와 에폭 키(124)는 장치 B로 전송될 수 있다. 장치 B는 제1 수신 장치(200)로서 시작한다. 장치 B는 제1 송신 장치(100) 역할을 하는 장치 A로부터 전송된 에폭 키(124)일 수 있는 공개 키 또는 에폭 키(224)를 수신할 수 있다. 장치 B는 초기화 단계에서 제공되거나 이전 에폭으로부터 저장된 개인 키(232)를 가질 수 있다. 에폭 키(224) 및 개인 키(232)는 제1 송신 장치(100)인 장치 A에 의해 생성된 제1 대칭 키(130)와 동일하고 그리고/또는 호환 가능할 수 있는 공유 비밀 또는 대칭 키(230)를 생성하기 위하여 분해 함수(234)에서 조합될 수 있다.
제1 에폭 동안, 제1 송신 장치(100)인 장치 A는 제1 대칭 키(130)에 기초하여 생성된 메시지 키로 암호화된 메시지를 송신할 수 있고, 제1 수신 장치(200)인 장치 B는 제1 대칭 키(230)에 기초하여 생성된 메시지 키로 수신된 암호문을 암호 해독할 수 있다.
제2 에폭을 시작하기 위하여, Bob은 장치 B로부터 메시지를 송신하기 시작할 수 있으며, 이 시점에서, 장치 B는 제1 수신 장치(200)인 것으로부터 전이할 수 있어 제2 송신 장치(100')가 될 수 있다. 제2 송신 장치(100') 역할을 하는 장치 B는 (Alice가 이전 에폭을 송신하고 있었을 때) 장치 A(100)로부터 전송된 제2 공개 키(128)일 수 있는 제2 공개 키(122')를 제1 송신 장치(100) 역할을 하고 있었을 때 장치 A에 의해 사용된 캡슐화 함수(132)와 동일하거나 유사한 캡슐화 함수(132')로 공급할 수 있다. 캡슐화 함수(132')는 제2 에폭 키(124') 및 제2 공유 비밀 또는 대칭 키(130')를 생성할 수 있다. 제2 송신 장치(100') 역할을 하는 장치 B는 제3 비대칭 키 쌍(126', 128')을 생성하는 키 생성 함수(136')를 가질 수 있다. 제2 에폭 키(124') 및 제3 공개 키(128')는 제2 송신 장치(100') 역할을 하는 장치 B로부터 전송될 수 있다.
Alice가 Bob으로부터 메시지를 수신하기 시작하면, 장치 A는 제1 송신 장치(100)인 것으로부터 제2 수신 장치(200')로 전이할 수 있다. 제2 수신 장치(200')로서, 장치 A는 제2 송신 장치(100') 역할을 하는 장치 B로부터 전송된 제2 에폭 키(124')일 수 있는 제2 에폭 키(224')를 수신할 수 있다. 제2 수신 장치(200') 역할을 하는 장치 A는 제2 에폭 키(224')를 제1 송신 장치(100) 역할을 할 때 장치 A에 의해 생성된 제2 개인 키(126)일 수 있는 개인 키(232')와 조합할 수 있다. 제2 에폭 키(224') 및 개인 키(232')는 제1 수신 장치(200) 역할을 하는 장치 B에 의해 사용되는 분해 함수(234)와 동일하거나 유사할 수 있는 분해 함수(234')에서 조합될 수 있다. 분해 함수(234')는 제2 송신 장치(100') 역할을 하는 장치 B에 의해 생성된 제2 공유 비밀(130')과 동일하고 그리고/또는 호환 가능할 수 있는 제2 공유 비밀(230')을 출력할 수 있다. 제3 공개 키(128')는 장치 A가 후속 에폭에서 제3 송신 장치가 될 때의 사용을 위하여 제2 수신 장치(200') 역할을 하는 장치 A에 의해 수신될 수 있다.
도 8은 송신 장치(100)의 관점으로부터의 CKA 기능 블록(121)의 예시이다. CKA 기능 블록(121)은 캡슐화 함수(132)와 키 생성 함수(136)를 포함할 수 있다. 송신 장치(100)에 수신 장치에서의 개인 키와 연관된 공개 키(122)(장치 B의 공개 키라고도 알려짐)가 제공될 수 있거나, 송신 장치(100)가 이를 이전 에폭으로부터 저장하였을 수 있다. 수중에 있는 공개 키(122)를 이용하여, 공유 키(대칭 키라고도 알려짐)(130)가 수신자의 공개 키(122)를 캡슐화 함수(132)로 전달함으로써 생성될 수 있다. 또한, 캡슐화 함수(132)는 송신 장치(100)와 연관된 추가 공개 키(에폭 키라고도 알려짐)(124)를 생성할 수 있다. 제2 공개 키(128) 및 제2 개인 키(126)를 포함하는 새로운 키 쌍이 키 생성 함수(136)에 의해 생성될 수 있다. 추가 공개 키(124)가 현재 에폭에서 수신 장치에서 대칭 키를 생성하기 위하여만 사용될 수 있고 송신 장치가 후속 에폭에서 수신 장치로 될 때 새로 생성된 키 쌍(126, 128)이 사용될 수 있기 때문에, 어떠한 개인 키도 추가 공개 키(에폭 키)(124)를 갖는 쌍을 형성하기 위하여 생성될 필요가 없다.
새로운 키 쌍(126, 128)과 추가 공개 키(에폭 키)(124)가 생성되면, 이들은 CKA 메시지(T)(138)에 패키징될 수 있다. 공개 키(124, 128)는 암호화된 암호문의 어느 부분으로서 메세지 내에 캡슐화되거나 또는 암호화되지 않은 헤더 내에 캡슐화되어 송신 장치(100)로부터 수신 장치(200)로 전달될 수 있다(예를 들어, 도 8 참조). 새로운 개인 키(126)는 송신 장치(100)가 현재의 수신 장치로부터 메시지를 수신할 때 사용되도록 송신 장치(100)에 저장될 수 있다.
도 9는 수신 장치(200)의 관점으로부터의 CKA 기능 블록(221)의 예시이다. 도 7 및 8을 종합적으로 참조하면, 수신 장치(200)에는 수신 장치에서의 제1 공개 키(122)와 연관된 개인 키(232)가 제공될 수 있거나, 수신 장치(200)가 이를 이전 에폭으로부터 저장하였을 수 있다. 수신 장치(200)는 송신 장치(100)에 의해 전송된 CKA 메시지(T)(138)일 수 있는 CKA 메시지(T)(238)를 수신할 수 있다. CKA 메시지(238)는 송신 장치(100)에 의해 전송된 추가 공개 키(124)와 동일할 수 있는 추가 공개 키(224)와, 송신 장치(100)에 저장된 개인 키(126)와 연관된 제2 공개 키(228)를 포함함 수 있다. 송신 장치(100)에서 캡슐화 함수(132)에 의해 생성된 추가 공개 키(224) 및 개인 키(232)는 모두 수신 장치(200)에서 분해 함수(234)에 입력으로서 제공될 수 있고, 분해 함수(234)는 공유 키(230)를 출력으로서 생성할 수 있다. 수신 장치(200)에서 생성된 공유 키(230)는 송신 장치(100)에서 생성된 공유 키(130)와 동일하고 그리고/또는 호환 가능할 수 있다. 추가 공개 키(228)는 수신 장치가 송신 장치로 될 때 후속 에폭에서 사용되도록 수신 장치(200)에 저장될 수 있다.
일부 예에서, CKA는 초기 공유 비밀 또는 대칭 키를 설정하기 위하여 디피 헬만(Diffie Hellman) 알고리즘과 같은 비대칭 알고리즘을 사용할 수 있다. CKA가 구성 가능할 수 있고, 특정 구현예는 RCA, EC25519이거나, 격자 기반, 코드 기반 등과 같은 임의의 양자 후 보안(post-quantum secure) 알고리즘일 수 있다. 이러한 구성 가능한 파라미터는 보안 메시징 세션 구축의 시작에 결정될 수 있고, 따라서 재구성에 따라 재구축되거나 리셋될 수 있다. 하나의 대화의 단일 구성은 다른 대화 구성과 다를 수 있다. 키 합의를 위한 비대칭 및/또는 대칭 알고리즘을 활용하는 것을 포함하는 CKA의 다양한 특정 구현이 고려된다.
도 3 및 4를 다시 참조하면, 대칭 키(130, 230)가 송신 장치 및 수신 장치의 각각에서 생성되면, CKA(190, 290)는 암호 키 합의(cryptographic key agreement)(공유 또는 대칭 키라고도 알려짐)(130, 230)를 의사 랜덤 함수(Pseudo-Random Function(PRF-PRNG))(192, 292)에 입력으로서 제공할 수 있고, 그러면, PRF-PRNG(192, 292)의 결과에 따른 출력은 메시지 키의 예측 가능한 생성을 리프레시하기 위하여 PRG(150, 250)에 입력으로서 제공될 수 있다. 각각의 PRF-PRNG(192, 292)는 업데이트 함수(140, 240)와 초기화 함수(142, 242)를 가질 수 있다. 업데이트 함수(140, 240)에 대한 입력은 대칭 키(130, 230)와 이전 상태(151, 251)를 포함하여 출력으로서 업데이트된 상태(152, 252)와 시드 키(144, 244)를 생성할 수 있다. 초기화 함수(142, 242)는 PRG(150, 250)를 업데이트된 상태(152, 252)로 초기화할 수 있다. PRG(150, 250)에는 시드 키(144, 244)가 제공되어, 메시지를 암호화/암호 해독하는데 사용될 수 있는 도 2에 관련하여 논의된 바와 같은 예측 가능한 키(즉, 메시지 키(171, 271))를 생성할 수 있다. 따라서, 공격자가 PRG(150, 250)을 손상시키면, CKA를 통한 후속 리프레시(에폭 래칫을 진행시킴)가 보안을 복원할 수 있다.
각각의 PRF-PRNG(192, 292)에는 CKA 키(130, 230)이 공격자에게 알려져 있을 때 추가 보호 레이어를 제공할 수 있다. 일부 예에서, PRF-PRNG(192, 292)는 2개의 랜덤 입력을 수락할 수 있고, 따라서 공유 키 또는 PRG 상태 중 어느 하나의 손상에 대하여 회복력이 있다. 일부 예에서, 2개의 입력은 CKA에 의해 생성된 키(130, 230)와 PRG(151, 251)의 이전 상태이다. 따라서, CKA 키(130, 230)가 손상되는 경우, PRF-PRNG(192, 292)를 통해 업데이트되면, 보안은 복원될 수 있다. 유사하게, PRG(150, 250)의 상태가 손상되는 경우, PRF-PRNG(192, 292)를 통해 업데이트되면, 보안은 회복될 수 있다. 그러나, CKA 키(130, 230)와 PRG 상태(152, 252)가 모두 손상되면, 보안은 PRF-PRNG(192, 292)를 통한 업데이트를 통해 회복 가능하지 않을 수 있다.
일부 예에서, 의도된 통신 장치가 예측 가능하지만 의도되지 않은 수신자가 예측하기 어려운 방식으로 새로운 공유 비밀을 생성하기 위하여 CKA가 각각의 에폭 래칫에서 사용될 수 있다. 그러면, 새로운 공유 비밀은 메시지 키의 PRG 생성을 리프레시하는데 사용될 수 있다. 상대적으로 계산적으로 가벼운 PRG에 의해 각각의 메시지 키를 생성하고 상대적으로 계산적으로 집약된 CKA 알고리즘을 통해 PRG 를 리프레시함으로써, 본 명세서에 제시된 일부 예는 계산 리소스의 효율적인 사용으로 강력한 종단간 암호화를 제공할 수 있다.
도 10, 11, 12 및 13은 PRG(50)의 초기화, 시딩 및 진행을 도시한다. 일부 예에서, PRG(50)의 상태는 이의 이전 상태에 기초하여 업데이트될 수 있다. 대화를 시작할 때, 도 10에 도시된 바와 같이, 대칭 초기화 키(54)가 각각의 통신 장치에 의해 서버(300)로부터 검색될 수 있다. 초기화 키(54)는 초기화 함수(46)에 입력으로서 제공될 수 있다. 초기화 함수(46)는 출력으로서 근본 상태(root state)(581)를 제공할 수 있다. 근본 상태(51)와 대칭 키(30)는 업데이트 함수(40)로 입력으로서 제공될 수 있고, 업데이트 함수(40)는, 도 11에 도시된 바와 같이, 제1 상태(52)와 시드 키(44)를 생성할 수 있다. 대칭 키(30)는 본 명세서에서 설명된 CKA 알고리즘에 의해 생성된 대칭 키(130, 230)일 수 있다. 업데이트 함수(40)는 본 명세서에서 설명된 PRF-PRNG(140, 240)의 업데이트 함수일 수 있다. PRG(50)는 대화에서 제1 메시지 키 시퀀스(71, 73)를 생성하기 위하여 제1 상태(52)에서 동작할 수 있다. 그 후, 도 12에 도시된 바와 같이 후속 에폭을 위한 상태 및 시드 키를 생성하기 위하여 현재 PRG 상태 및 현재 대칭 키가 업데이트 함수(40)로 입력으로서 제공될 수 있다.
대안적으로, 도 13에 도시된 바와 같이, 제1 메시지 키(71)를 생성한 후에 나중에 에폭에서 메시지 키(72', 73')를 생성하기 위하여, 현재 PRG 상태가 그리고 현재 PRG 상태만이 업데이트된 상태(52', 52'', 52n)를 생성하기 위해 업데이트 함수(50)로 입력으로서 제공될 수 있고, PRG는 업데이트된 상태(52', 52'')로 반복적으로 초기화되어 각각의 상태에서 새로운 메시지 키(72', 73')를 생성할 수 있다. 제1 키(71)는, 제1 상태(52)와 시드 키(44)를 생성하기 위하여 업데이트 함수(40)에 근본 상태(51)와 대칭 키(30)를 제공한 후 제1 상태(52)로 PRG를 초기화하고 제1 키(71)를 생성하기 위하여 시드 키(44)를 PRG에 제공함으로써, 도 11 및 12에 도시된 예에 관련하여 설명된 것과 유사하게 생성될 수 있다. 제1 키(71)의 생성 후에, 도 12에 도시된 바와 같이 후속 키를 생성하는 대신에, 제1 상태(52)가 업데이트된 대칭 키(30)를 제공하지 않으면서 업데이트 함수(40)로 공급될 수 있고, 업데이트 함수(40)는 제1 상태(52)에 기초하여 제1의 업데이트된 상태(52')를 생성할 수 있고, PRG(50)는 업데이트된 상태(52')로 초기화될 수 있고, 업데이트된 상태(52')에서의 PRG(50')는 제2 메시지 키(72')를 생성할 수 있다. 그 후, 업데이트 함수(40)에는 업데이트된 상태(52'')를 생성하도록 현재 PRG 상태(52')가 제공될 수 있고, PRG는 업데이트된 상태로 항상 재초기화되어, PRG는 새로운 메시지 키(72', 73')를 출력할 수 있다. 새로운 에폭의 시작에서, 이전 에폭으로부터의 최종 PRG 상태(52n)와 CKA로부터의 새로운 대칭 키가 리프레시 키(44) 및 새로운 상태(52)를 생성하도록 업데이트 함수(40)에 입력(51, 30)으로서 제공될 수 있다. 그 다음, 새로운 에폭에서의 메시지 키는 도 12, 도 13 또는 이들의 일부 조합에 도시된 바와 같이 생성될 수 있다.
따라서, 송신 및 수신 장치는 모두 동일한 상태(52)에 있는 PRG(50)로 시작할 수 있고, 따라서, 각각의 장치가 해당하는 PRG(50)로 동일한 시드 키(44)를 공급하는 경우, 각각의 장치는 동일한 메시지 키 시퀀스(71, 73)를 생성할 수 있을 것이다. 에폭 래칫에서의 각각의 증분에 대하여, PRG가 이의 이전 상태에 기초하여 업데이트된 경우, PRG 상태의 진행은 의도된 통신 장치의 각각에 의해 예측 가능할 수 있으며, 따라서 메시지 손실 회수를 용이하게 한다.
도 14는 에폭 래칫이 수행될 수 있는 때를 나타내는 그루핑 메커니즘으로서의 에폭의 사용을 도시한다. 일부 예에서, 에폭에서 전송된 모든 메시지가 단일 장치에서 전송되고 이어지는 에폭에서 모든 메시지가 다른 장치에 의해 전송되도록, 에폭은, 장치 A로부터 장치 B로의 또는 그 반대로의 단일 방향으로의 일련의 데이터 전송, 블록 또는 메시지로서 정의될 수 있다. 각각의 개별 에폭은 새로운 에폭이 에폭 키로 새로운 CKA 세션을 개시하기 전의 CKA 세션을 나타낼 수 있다. 에폭 내에서, 각각의 메시지는 새로운 메시지 키로 암호화될 수 있다. 에폭 래칫을 완료하기 위한 결정은 현재 에폭이 막 변경되었는지, 즉 Alice가 수신하고 있었고 이제 Bob에게 송신하고 있는지 또는 Alice가 송신하고 있었고 이제 Bob으로부터 수신하고 있는지 분석함으로써 이루어질 수 있다. 일부 예에서, 에폭 래칫 단계 동안, 시드 키와 PRG의 상태는 새로운 메시지 키 시퀀스가 생성될 수 있도록 리프레시되거나 업데이트될 수 있다. 따라서, 공격자가 에폭 세션을 손상시키면, 장치가 이어지는 에폭으로 들어갈 때 보안이 복원될 수 있다. 이에 의해 에폭 래칫 단계는 손상 후 보안을 제공할 수 있다.
일부 예에서, 에폭 내의 메시지는 에폭 내의 메시지의 진행을 추적하기 위하여 메시지 카운터 인덱스 또는 기타 지시자(designator)에 의해 계수될 수 있다. 메시지 카운터 인덱스 또는 지시자는 각각의 새로운 에폭에 대하여 리셋될 수 있다.
일부 예는 단일 메시지를 암호화하고 암호 해독하기 위하여 연관된 데이터로 순방향 보안 인증 암호화(Forward-Secure Authenticated Encryption with Associated Data(FS-AEAD)) 알고리즘을 포함할 수 있다. FS-AEAD 알고리즘은 각각의 메시지에 대한 고유 키를 활용하고 헤더를 활용하여 각각의 메시지의 무결성(integrity)을 검증할 수 있다. FS-AEAD는 스트링, 파일 또는 음성 대화 패킷을 포함하는 스트림을 입력으로서 수락하고 암호 해독되거나 암호화된 형태의 스트림을 출력으로서 생성할 수 있다. FS-AEAD 암호기는 비밀성, 무결성 및 확실성(authenticity)을 동시에 제공할 수 있다.
일부 예에서, FS-AEAD는 암호화/암호 해독이 정의된 크기의 패킷을 통해 공급되는 블록 암호기일 수 있다. FS-AEAD는 예를 들어 CCM(Cunter with CBC-MAC)을 갖는 고급 암호화 표준(Advanced Encryption Standard(AES))을 포함하는 대칭 알고리즘에 기초할 수 있다. CCM은 2개 모드인 카운터(CTR) 및 CBC(Cipher Block Chaining)를 하나의 암호 프리미티브(cryptographic primitive)로 조합함으로써 암호화 및 인증을 모두 조합할 수 있다. CTR 모드에서, 증분하는 카운터는 암호문을 생성하기 위하여 평문과 XOR 연산될 수 있는 블록 시퀀스를 생성하도록 암호화될 수 있다. CBC 모드에서, 평문은 암호화되기 전에 이전 암호문과 XOR 연산될 수 있다. 일부 구현예에서, 제1 평문 전에 암호문이 없고, 따라서 임의로 선택된 초기화 벡터(initialization vector(IV))가 대신 사용될 수 있다. 예를 들어, CBC-MAC 메시지는 표준 AES로 암호화된 후에 마지막 블록을 고정된 길이의 메시지 인증 코드(Message Authentication Code(MAC))로서 사용할 수 있다. CRT 모드는 실제 암호문을 제공하는데 사용될 수 있다. 이러한 구현예에서, CBC-MAC은 인증을 제공할 수 있고(하나의 바이트가 변경되는 경우에도 fail일 수 있다), CTR는 평문 메시지의 실제 암호화/암호 해독을 제공할 수 있다.
일부 예에서, FS-AEAD 알고리즘은 송신 장치에서 그리고 그 다음에 의도된 수신 장치에서 암호문을 생성하기 위하여 암호화된 메시지에 검증 가능한 연관된 데이터를 첨부할 수 있으며, 암호문을 입력으로서 수신하는 FS-AEAD 알고리즘은 암호화된 메시지가 정확하게 암호 해독되고 부당 변경되지 않은 것을 검증하기위하여 연관된 데이터를 사용할 수 있다. 이에 의해, FS-AEAD는 암호화된 메시지 및/또는 헤더의 부당 변경을 검출할 수 있다.
도 15는 Alice(장치 A)(100)로부터 Bob(장치 B)(200)으로 메시지(102)를 송신하기 위하여 수행될 수 있는 예시적인 방법 단계들을 고수준으로 도시하는 순서도이고, 각각의 메시지(102)는 헤더(180)를 포함한다. 장치 A(100)는 에폭 내에 생성된 키 시퀀스에서 메시지 키(170)의 위치를 나타내는 메시지 인덱스(182) 또는 다른 지시자와, 장치(100), 에폭, 메시지(102), 대화 등과 연관된 다른 데이터(184)를 생성할 수 있다.
연관된 데이터(184)는, 에폭 카운터, 이전 메시지 및/또는 처리(transaction)에 관한 정보 및 메시징 세션과 관련된 다른 변수를 포함하지만 이들에 국한되지 않는 하나 이상의 필드로 구성될 수 있다. 이 필드들은 헤더 구조(180)에 추가된 후 송신 장치(100)에서 FS-AEAD(160)로 입력으로서 평문 메시지(102)와 함께 제공될 수 있으며, 이에 의해 송신 장치(100)는 이의 FS-AEAD(160)에 대한 입력으로서 헤드(180)와 평문 메시지(102)를 모두 나타내는 암호문(104)을 생성할 수 있다. 그 다음, 이 암호문(104)은, 평문(181) 내의 헤더와 함께, 송신 장치(100)로부터 전송되어 의도된 수신 장치(200)에 의해 수신될 수 있다. 의도된 수신 장치(200)는 수신된 암호문(204)과 수신된 평문 헤더(281)를 이의 FS-AEAD(260)로 제공할 수 있다. 평문 내의 헤더(281) 및 헤더(180)와 평문 메시지(102)를 나타내는 암호문(204) 모두를 이용하여, 수신 장치(200)는 암호문(204) 및/또는 평문(281) 내의 헤더가 부당 변경되었는지를 검출하기 위하여 FS-AEAD 알고리즘(260)을 활용할 수 있다. 암호 해독된 암호문(204)이 연관된 평문 헤더(281)와 일치하지 않는다면, 수신 장치에서의 FS-AEAD 알고리즘(260)은 불일치의 표시를 제공할 수 있고, 장치(200)는 암호문(204)이 손상되고 그리고/또는 암호 해독에 실패하는 표시를 제공함으로써 응답할 수 있다.
도 16은 에폭에서 메시지를 카운트하기 위한 인덱스 및 PRG를 초기화하는데 사용될 수 있는 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다. 대화를 시작할 때, 대칭 초기화 키(54)가 서버(300)로부터 장치 A(100) 및 장치 B(200)로 전송될 수 있다. 각각의 장치(100, 200)에 의해 수신된 해당하는 초기화 키(154, 254)는 각각의 장치(100, 200)에서 근본 상태(151, 251)를 생성하기 위하여 해당하는 초기화 함수(146, 246)로 입력으로서 제공될 수 있다. 메시지 카운터 또는 메시지 인덱스(281, 282)는 대화 또는 에폭의 시작에 대응하도록 각각의 장치(100, 200)에서 초기화될 수 있다.
도 17은 송신 장치(100)에 의해 헤더를 포함하는 메시지를 송신하기 위한 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다. 송신 시, 장치 A(100)는 암호화하고 연관된 데이터 구조(a)(184)와 함께 전송하기 위한 평문 메시지(m)(102)를 선택할 수 있다. 이 단계는 메시지 카운터(i)(182)를 1만큼 증분시킬 수 있다. PRG는 현재 스트림 암호기 상태(w)를 입력으로서 수신하여, 새로운 AEAD 키(K)인 메시지 키(171)와 w를 대체하는 새로운 스트림 암호기 상태(w')(152)를 생성할 수 있다. 인덱스(I)(182)는 연관된 데이터(a)(184)와 함께 헤더(h)(180)에 추가될 수 있다. 메시지(m)(102)는 새롭게 생성된 메시지 키(K)(171)를 이용하여 암호화될 수 있고, 암호화되지 않은 헤더(h)(181)가 첨부되어 암호문(104)을 생성할 수 있다.
도 18은 수신 장치(200)에 의해 헤더를 포함하는 메시지를 수신하기 위한 예시적인 기능 블록, 데이터 구조 및 방법 단계를 도시하는 순서도이다. 수신 시, 수신 장치(200) 역할을 하는 장치 B는 암호문(c)(204)과 헤더(h)(281)(평문 상태에 있음)을 입력으로서 수락할 수 있다. 동시에, 장치 B(200)는 스트림 암호기 상태(w)를 사용하여 새로운 AEAD 키(K)(271)를 생성하고 새로운 스트림 암호기 상태(w')(252)를 설정할 수 있다. 암호문(c)(204)은 메시지(m)(202)를 회복하기 위하여 키(K)(271)와 헤더(h)(281) 정보를 이용하여 암호 해독될 수 있다.
헤더(281)는 암호문(204)이 부당 변경되지 않았다고 확인하기 위하여 평문으로서 송신될 수 있고, 헤더(180)(도 15 참조)는 또한 인증된 암호화 동작(160) 동안 암호문(104)에 원래 바인딩었을 수 있으며, 헤더(180)는 단일 암호문 출력(104)을 생성하기 위하여 평문 메시지(102)와 함께 전달되었을 수 있다. 대안적으로, 암호문(202)이 부당 변경되지 않았다는 것을 확인하기 위하여 수신기(200)에게 송신될 태그와 암호문 출력(102)을 모두 생성하도록 메시지(102)만이 인증된 암호화(160) 동작으로 전달되었을 수 있다.
도 19는 Alice의 장치인 장치 A(100)가 에폭의 시작에서 송신 명령(104)을 수신한 것에 따라 송신 래칫(120)을 수행할 수 있고, Bob의 장치인 장치 B(200)가 에폭의 시작에서 암호문(204)을 수신한 것에 따라 수신 래칫을 수행할 수 있는 시스템의 예시적인 기능 블록, 데이터 구조 및 방법 단계들을 도시하는 순서도이다. 도 19에 도시된 순서도는 도 1에 관련하여 설명된 바와 같은 프로세스를 따를 수 있다. QMP에서, 개별 래칫 단계들은 "필요에 따르는 것(as needed)"에 기초하여 제한될 수 있으며, 키들이 필요할 때까지 생성되지 않는다는 것을 의미한다. 이것은 일시적이거나 영구적인 장치 손상의 경우에 키에 관한 정보의 조기(premature) 저장 및 누출을 방지할 수 있다. 도 19에 도시된 바와 같은 필요에 따른 키 생성은, 도 20에 도시된 것처럼 필요하지 않을 때에도 독립적인 래칫들이 단일 단계로 조합되는 구현예와 대조된다.
도 20은 도 1 및 19에 관련하여 설명된 것에 대한 대안으로서 송신 래칫과 수신 래칫을 수행하기 위한 예시적인 기능 블록, 데이터 구조 및 방법 단계들을 도시하는 순서도이고, Bob의 장치인 장치 B(200)가 에폭의 시작에서 암호문(204)을 수신한 것에 따라 수신 래칫(220)과 송신 래칫(120')을 모두 수행할 수 있다. 수신 래칫(220)은 암호문(204)을 암호 해독하기 위한 메시지 키(170)를 생성할 수 있고, 송신 래칫(120')은 장치 B가 Alice에게 송신할 때 후속 에폭에서 메시지를 암호화하기 위하여 현재 에폭의 마지막에 PRG(150')를 리프레시하기 위한 리프레시 키(144')를 생성할 수 있다. 송신 래칫(120')은 송신 장치에 대한 CKA(190')에 기초하여 대칭 키(130')를 설정할 수 있다. 대칭 키(130')는 리프레시 키(144')를 생성하기 위하여 PRF-PRNG(192')로 제공될 수 있다. PRG(150')는 리프레시 키(144')로 초기화될 수 있다.
도 21은 메시지 손실 회복력을 도시하는 순서도이다. 일부 예에서, 에폭 내의 각각의 메시지는 메시지가 정리가 안 된 채 수신되거나 모두 손실되었을 때에도 메시지 키를 정확하게 계산하기 위하여 수신 장치에 의해 사용될 수 있는 메시지 인덱스를 갖는 헤더를 포함할 수 있다. 정확한 에폭에 대한 개별 메시지 키는 메시지를 암호 해독하고 헤더가 수정되지 않았다는 것을 검증하기 위하여 계산될 수 있다. 또한, 암호문 3을 포함하는 페이로드(payload)는 3으로 설정된 메시지 인덱스(i) 및 연관된 데이터를 포함할 수 있다. 장치 B는 메시지 키 생성기를 정확한 해독 키로 진행시키고 메시지를 즉시 암호 해독하기 위하여 메시지를 정확하게 정렬시킬 수 있다.
도 22a, 22b 및 22c는 각각의 통신 장치를 초기화하고 그리고/또는 각각의 통신 장치 사이의 통신을 용이하게 하는데 사용될 수 있는 예시적인 시스템 환경에 대한 예시이다. 본 명세서에서 설명된 바와 같이, 일부 예에서, 통신 장치(100, 200)는 서로 그리고 서버(300)와 통신할 수 있다. 서버(300)는 초기 키 합의를 설정하고 그리고/또는 장치(100, 200) 사이에 키 합의를 유지하기 위하여 키 및/또는데이터를 장치(100, 200)에 제공할 수 있다.
각각의 통신 장치(100, 200)는 네트워크를 통해 메시지를 송신 및 수신할 수 있는 전자 장치일 수 있다. 통신 장치(100, 200)의 예는 모바일 장치, 스마트 폰, 범용 컴퓨터, 태블릿 컴퓨터, 랩탑 컴퓨터, 전화기, PSTN 일반 전화(landline), 스마트 웨어러블 장치, 음성 명령 장치, 다른 모바일 컴퓨팅 장치, 센서 또는 모니터링 장치, 또는 네트워크를 통해 데이터를 송수신하도록 맞추어진 기타 장치를 포함할 수 있다.
각각의 통신 장치(100, 200)는 본 명세서에 설명되었거나 아니면 당해 업계에서의 통상의 기술자에게 알려진 바와 같이 키를 생성하고, 상태를 생성하고, 암호화하고, 암호 해독하기 위한 프로세서, 저장 매체 및/또는 추가 전자 장치를 포함할 수 있다. 본 명세서에서 설명된 기능 블록, 함수, 데이터 구조 및 알고리즘은 당해 업계에서의 통상의 기술자에 의해 이해될 수 있는 바와 같이 하드웨어 및/또는 소프트웨어로 구현될 수 있다. 각각의 통신 장치(100, 200)는, 프로세서에 의해 실행될 때 본 명세서에 설명된 방법, 함수 및 알고리즘을 수행하는 명령어를 그 상에 갖는 컴퓨터 판독 가능한 매체를 포함할 수 있다. 메시지는 각각의 통신 장치(100, 200)에서 생성되고 그리고/또는 각각의 통신 장치(100, 200)로 제공될 수 있다. 각각의 통신 장치(100, 200)는 메시지를 입력하기 위한 사용자 인터페이스, 외부 장치로부터 메시지를 수신하기 위한 포트, 센서 또는 기타 메시지 생성기를 포함할 수 있고 그리고/또는 이들과 통신할 수 있다.
서버(300)는 암호 키를 생성 및/또는 수신하고 상기 키를 네트워크를 통해 전송할 수 있는 전자 장치일 수 있다. 서버(300)는 키 및/또는 상태를 생성 및/또는 수신하기 위한 프로세서, 저장 매체 및/또는 추가 전자 장치를 포함할 수 있다. 서버(300)는 키를 전송하기 위한 전송기를 포함할 수 있다. 서버(300)는 서버(300)를 통한 장치(100, 200) 사이의 통신을 용이하게 하고 그리고/또는 각각의 장치(100, 200)로부터 데이터를 수신하기 위한 트랜스시버(transceiver)를 포함할 수 있다.
도 22a에 도시된 바와 같이, 개별 장치(100, 200)로부터 서버(300)로의 통신은 제1 네트워크(400)를 통해 전송될 수 있고, 장치(100, 200) 사이의 통신은 제2 네트워크(500)를 통해 전송될 수 있다. 제1 네트워크(400)에서의 일부 또는 모든 통신 채널이 제2 네트워크(500)에서의 일부 또는 모든 통신 채널로부터 분리되도록, 제1 및 제2 네트워크가 분리될 수 있다. 일부 예에서, 제1 네트워크(400)는 보안 네트워크일 수 있고, 제2 네트워크(500)는 비보안 네트워크일 수 있으며; 초기 키 합의(예를 들어, 도 5, 10, 13 및 16 참조)가 하나 이상의 보안 채널을 통해서 제1 네트워크를 통해 서버(300)로부터 제공될 수 있으며; 장치(100, 200) 사이의 후속 전송은 제2 네트워크(500)에서의 하나 이상의 비보안 채널을 통해 발생할 수 있다.
도 22b에 도시된 바와 같이, 도 22a에 도시된 시스템에 대한 대안으로서, 서버(300) 및 장치(100, 200)는 공통 네트워크(600)를 통해 서로 통신할 수 있다. 공통 네트워크(600)는 비보안 네트워크일 수 있고, 초기 키 합의를 포함하는 모든 전송문은 공통 네트워크(600)를 통해 전송될 수 있다.
도 22c에 도시된 바와 같이, 도 22a 및 22b에 도시된 시스템에 대한 대안으로서, 통신 장치(100, 200)는 서버에 대한 통신 링크가 없는 네트워크(600)를 통해 통신할 수 있다. 일부 예에서, 서버에 의해 네트워크를 통해 배포된 초기 키 합의를 가지는 것(도 5, 10, 13 및 16 참조)에 대한 대안으로서, 초기 키 합의가 각각의 장치에 이전에 저장될 수 있거나, 초기 키 합의가 제1 장치(100)에서 생성되어 제2 장치(200)로 전송될 수 있거나, 이들의 일부 조합일 수 있다. 예를 들어, 각각의 장치는 PRG를 초기화하기 위한 초기 상태 또는 근본 키를 저장하였을 수 있고, 제1 수신 장치 역할을 하는 장치 B(200)는 키 생성 함수를 이용하여 제1 비대칭 키 쌍을 생성하고, 대화를 초기화하고 수신할 준비가 되었다는 것을 표시하기 위하여 제1 비대칭 키 쌍의 공개 키를 장치 A로 전송할 수 있다.
본 명세서에 포함된 설명은 본 발명의 실시예이고, 어떠한 방식으로도 본 발명의 범위를 제한하려고 의도되지 않는다. 본 명세서에 설명된 바와 같이, 본 발명은 본 명세서에 설명된 기능을 수행하기 위한 대안적인 소프트웨어 모듈, 대안적인 데이터 구조, 대안적인 키 합의 알고리즘, 대안적인 키 생성 알고리즘 등을 포함하는, 본 명세서에서 설명된 시스템, 방법 및 장치에 대한 많은 변형 및 수정을 고려한다. 이러한 수정은 분 발명이 관련된 기술 분야에서의 통상의 기술자에게 명백할 것이고, 이어지는 청구범위의 범위 내에 있도록 의도된다.

Claims (19)

  1. 장치들 사이에 메시지를 교환하는 방법에 있어서,
    제1 통신 장치를 제공하는 단계;
    제2 통신 장치를 제공하는 단계;
    제1 공개 키 및 제1 개인 키를 포함하는 제1 비대칭 키 쌍을 제공하는 단계;
    근본 상태(root state)를 제공하는 단계;
    상기 제1 장치에 상기 제1 공개 키를 저장하는 단계;
    상기 제2 장치에 상기 제1 개인 키를 저장하는 단계;
    상기 제1 장치 및 상기 제2 장치에 상기 근본 상태를 저장하는 단계;
    상기 제1 장치에서, 제1 에폭(epoch) 키와, 제2 개인 키 및 제2 공개 키를 포함하는 제2 비대칭 키 쌍을 생성하는 단계로서, 상기 제1 에폭 키는 상기 제1 공개 키에 적어도 부분적으로 기초하여 생성되는 단계;
    상기 제1 장치로부터, 상기 제1 에폭 키와 상기 제2 공개 키를 전송하는 단계;
    상기 제2 장치에 의해, 상기 제1 에폭 키와 상기 제2 공개 키를 수신하는 단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제1 리프레시 키를 생성하는 단계로서,
    상기 제1 리프레시 키는 상기 제1 공개 키 및 상기 근본 상태에 적어도 부분적으로 기초하여 상기 제1 장치에서 생성되고,
    상기 제1 리프레시 키는 상기 제1 에폭 키에 대응하는 개인 키를 필요로 하지 않으면서 상기 제1 장치에서 생성되고,
    상기 제1 리프레시 키는 상기 제1 개인 키, 상기 제1 에폭 키 및 상기 근본 상태에 적어도 부분적으로 기초하여 상기 제2 장치에서 생성되는
    단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제1 상태를 생성하는 단계로서,
    상기 제1 상태는 상기 제1 공개 키 및 상기 근본 상태에 적어도 부분적으로 기초하여 상기 제1 장치에서 생성되고,
    상기 제1 상태는 상기 제1 에폭 키에 대응하는 개인 키를 필요로 하지 않으면서 상기 제1 장치에서 생성되고,
    상기 제1 상태는 상기 제1 개인 키, 상기 제1 에폭 키 및 상기 근본 상태에 적어도 부분적으로 기초하여 상기 제2 장치에서 생성되는
    단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제1 메시지 키를 생성하는 단계로서, 상기 제1 장치 및 상기 제2 장치의 각각에서, 상기 제1 메시지 키는 상기 제1 상태 및 상기 제1 리프레시 키에 적어도 부분적으로 기초하여 생성되는 단계;
    상기 제1 장치에서, 상기 제1 메시지 키를 이용하여 제1 메시지를 암호화하는 단계;
    상기 제2 장치에 의해, 암호화된 상기 제1 메시지를 수신하는 단계; 및
    상기 제2 장치에서, 상기 제1 메시지 키를 이용하여 암호화된 상기 제1 메시지를 암호 해독하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제1 장치 및 상기 제2 장치에서 독립적으로, 제2 메시지 키를 생성하는 단계로서, 상기 제1 장치 및 상기 제2 장치의 각각에서, 상기 제2 메시지 키는 상기 제1 상태 및 상기 제1 메시지 키에 적어도 부분적으로 기초하여 생성되는 단계;
    상기 제1 장치에서, 상기 제2 메시지 키를 이용하여 제2 메시지를 암호화하는 단계;
    상기 제1 장치로부터, 암호화된 상기 제2 메시지를 전송하는 단계;
    상기 제2 장치에 의해, 암호화된 상기 제2 메시지를 수신하는 단계; 및
    상기 제2 장치에서, 상기 제2 메시지 키를 이용하여 암호화된 상기 제2 메시지를 암호 해독하는 단계
    를 더 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제2 장치에서, 제2 에폭 키와, 제3 개인 키 및 제3 공개 키를 포함하는 제3 비대칭 키 쌍을 생성하는 단계로서, 상기 제2 에폭 키는 상기 제2 공개 키에 적어도 부분적으로 기초하여 생성되는 단계;
    상기 제2 장치로부터, 상기 제2 에폭 키와 상기 제3 공개 키를 전송하는 단계;
    상기 제1 장치에 의해, 상기 제2 에폭 키와 상기 제3 공개 키를 수신하는 단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제2 리프레시 키를 생성하는 단계로서,
    상기 제2 리프레시 키는 상기 제2 공개 키 및 상기 제1 상태에 적어도 부분적으로 기초하여 상기 제2 장치에서 생성되고,
    상기 제2 리프레시 키는 상기 제2 개인 키, 상기 제2 에폭 키 및 상기 제1 상태에 적어도 부분적으로 기초하여 상기 제1 장치에서 생성되는
    단계; 및
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제2 상태를 생성하는 단계로서,
    상기 제2 상태는 상기 제2 공개 키 및 상기 제1 상태에 적어도 부분적으로 기초하여 상기 제2 장치에서 생성되고,
    상기 제2 상태는 상기 제2 개인 키, 상기 제2 에폭 키 및 상기 제1 상태에 적어도 부분적으로 기초하여 상기 제1 장치에서 생성되는
    단계
    를 더 포함하는, 방법.
  4. 제3항에 있어서,
    상기 제2 장치로부터 상기 제2 에폭 키와 상기 제3 공개 키를 전송하는 단계를 수행하기 전에, 상기 제2 장치에서, 상기 제1 메시지 키를 삭제하는 단계를 더 포함하는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제1 장치에서, 상기 제1 메시지 키와 연관된 제1 메시지 인덱스와 상기 제1 상태와 연관된 제1 에폭 인덱스를 생성하는 단계;
    상기 제1 장치에서, 상기 제1 메시지 인덱스와 상기 제1 에폭 인덱스를 포함하는 제1 헤더를 생성하는 단계;
    상기 제1 장치에서, 상기 헤더와 암호화된 상기 제1 메시지를 포함하는 제1 암호문을 생성하는 단계; 및
    상기 제1 장치로부터, 상기 제1 암호문을 전송하는 단계
    를 더 포함하는, 방법.
  6. 제5항에 있어서,
    상기 제2 장치에 의해, 상기 제1 암호문을 수신하는 단계; 및
    상기 제2 장치에 의해, 상기 제1 메시지 인덱스와 상기 제1 에폭 인덱스에 기초하여 상기 제1 메시지 키를 검증하는 단계
    를 더 포함하는, 방법.
  7. 제1항 내지 제4항에 있어서,
    상기 제1 장치에서, 상기 제1 에폭 키와 상기 제2 공개 키를 포함하는 제1 헤더를 생성하는 단계;
    상기 제1 장치에서, 상기 헤더와 암호화된 상기 제1 메시지를 포함하는 제1 암호문을 생성하는 단계; 및
    상기 제1 장치로부터, 상기 제1 암호문을 전송하는 단계
    를 더 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 근본 상태를 제공하는 단계는,
    상기 제1 장치와 상기 제2 장치의 각각에서 근본 키(root key)를 수신하는 단계; 및
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 상기 근본 키를 해당하는 의사 랜덤 함수에 제공하고 상기 근본 상태를 각각의 해당하는 의사 랜덤 함수의 출력으로서 생성함으로써 상기 근본 상태를 생성하는 단계
    를 더 포함하는, 방법.
  9. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제1 공유 키를 생성하는 단계로서,
    상기 제1 공유 키는 상기 제1 공개 키에 적어도 부분적으로 기초하여 상기 제1 장치에서 생성되고,
    상기 제1 공유 키는 상기 개인 키와 상기 제1 에폭 키에 적어도 부분적으로 기초하여 상기 제2 장치에서 생성되고,
    상기 제1 리프레시 키는 상기 제1 공유 키 및 상기 근본 상태에 기초하여 상기 제1 장치 및 상기 제2 장치의 각각에서 생성되고,
    상기 제1 상태는 상기 제1 공유 키 및 상기 근본 상태에 기초하여 상기 제1 장치 및 상기 제2 장치의 각각에서 생성되는
    단계를 더 포함하는, 방법.
  10. 제9항에 있어서,
    상기 공유 키 및 상기 근본 상태를 의사 랜덤 함수로 입력으로서 제공하는 단계; 및
    상기 제1 상태 및 상기 제1 리프레시 키를 상기 의사 랜덤 함수로부터 출력으로서 생성하는 단계
    를 더 포함하는, 방법.
  11. 제2항 내지 제10항 중 어느 한 항에 있어서,
    상기 제1 상태로 난수 생성기를 초기화하는 단계;
    상기 제1 리프레시 키를 상기 난수 생성기로 입력으로서 제공하는 단계;
    상기 난수 생성로부터의 출력으로서, 상기 제1 메시지 키를 생성하는 단계;
    상기 제1 메시지 키를 상기 난수 생성기로 입력으로서 제공하는 단계; 및
    상기 난수 생성기로부터의 출력으로서, 상기 제2 메시지 키를 생성하는 단계
    를 더 포함하는, 방법.
  12. 제2항 및 제5항 내지 제10항 중 어느 한 항에 있어서,
    상기 제1 상태로 난수 생성기를 초기화하는 단계;
    상기 제1 리프레시 키를 상기 제1 상태로 초기화된 상기 난수 생성기로 입력으로서 제공하는 단계;
    상기 제1 상태로 초기화되고 상기 제1 리프레시 키가 제공된 상기 난수 생성기로부터의 출력으로서, 상기 제1 메시지 키를 생성하는 단계;
    제2 상태로 상기 난수 생성기를 초기화하는 단계;
    상기 제2 상태로 초기화된 상기 난수 생성기로부터의 출력으로서, 상기 제2 메시지 키를 생성하는 단계
    를 더 포함하는, 방법.
  13. 장치들 사이에 메시지를 교환하는 방법에 있어서,
    제1 통신 장치를 제공하는 단계;
    제2 통신 장치를 제공하는 단계;
    제1 공개 키 및 제1 개인 키를 포함하는 제1 비대칭 키 쌍을 제공하는 단계;
    의사 랜덤 생성기를 제공하는 단계;
    상기 제1 장치에 상기 제1 공개 키를 저장하는 단계;
    상기 제2 장치에 상기 제1 개인 키를 저장하는 단계;
    상기 제1 장치 및 상기 제2 장치 모두에 상기 의사 난수 생성기를 저장하는 단계;
    상기 제1 장치에서, 제1 에폭(epoch) 키와, 제2 개인 키 및 제2 공개 키를 포함하는 제2 비대칭 키 쌍을 생성하는 단계로서, 상기 제1 에폭 키는 상기 제1 공개 키에 적어도 부분적으로 기초하여 생성되는 단계;
    상기 제1 장치로부터, 상기 제1 에폭 키와 상기 제2 공개 키를 전송하는 단계;
    상기 제2 장치에 의해, 상기 제1 에폭 키와 상기 제2 공개 키를 수신하는 단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제1 메시지 키를 생성하는 단계로서,
    상기 제1 메시지 키는 상기 제1 공개 키에 적어도 부분적으로 기초하여 상기 제1 장치에서 생성되고,
    상기 제1 메시지 키는 상기 제1 에폭 키에 대응하는 개인 키를 필요로 하지 않으면서 상기 제1 장치에서 생성되고,
    상기 제1 메시지 키는 상기 제1 개인 키 및 상기 제1 에폭 키에 적어도 부분적으로 기초하여 상기 제2 장치에서 생성되는
    단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 상기 제1 메시지 키를 상기 의사 난수 생성기로 입력으로서 제공하고 상기 제1 메시지 키를 제공한 결과로서의 상기 의사 난수 생성기의 출력으로서 제2 메시지 키를 제공함으로써 상기 제2 메시지 키를 생성하는 단계;
    상기 제1 장치에서, 상기 제1 메시지 키를 이용하여 제1 메시지를 암호화하고 상기 제2 메시지 키를 이용하여 제2 메시지를 암호화하는 단계;
    상기 제1 장치로부터, 암호화된 상기 제1 메시지와 암호화된 상기 제2 메시지를 포함하는 제1 에폭을 전송하는 단계;
    상기 제2 장치에 의해, 상기 제1 에폭을 수신하는 단계;
    상기 제2 장치에서, 상기 제1 메시지 키를 이용하여 암호화된 상기 제1 메시지를 암호 해독하고 상기 제2 메시지 키를 이용하여 암호화된 상기 제2 메시지를 암호 해독하는 단계;
    상기 제2 장치에서, 제2 에폭 키와, 제3 개인 키 및 제3 공개 키를 포함하는 제3 비대칭 키 쌍을 생성하는 단계로서, 상기 제2 에폭 키는 상기 제2 공개 키에 적어도 부분적으로 기초하여 생성되는 단계;
    상기 제2 장치로부터, 상기 제2 에폭 키와 상기 제3 공개 키를 전송하는 단계;
    상기 제1 장치에 의해, 상기 제2 에폭 키와 상기 제3 공개 키를 수신하는 단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제3 메시지 키를 생성하는 단계로서,
    상기 제3 메시지 키는 상기 제2 공개 키에 적어도 부분적으로 기초하여 상기 제2 장치에서 생성되고,
    상기 제3 메시지 키는 상기 제2 에폭 키에 대응하는 개인 키를 필요로 하지 않으면서 상기 제2 장치에서 생성되고,
    상기 제3 메시지 키는 상기 제2 개인 키 및 상기 제2 에폭 키에 적어도 부분적으로 기초하여 상기 제1 장치에서 생성되는
    단계;
    상기 제2 장치에서, 상기 제3 메시지 키를 이용하여 제3 메시지를 암호화하는 단계;
    상기 제2 장치로부터, 암호화된 상기 제3 메시지를 포함하는 제2 에폭을 전송하는 단계; 및
    상기 제2 장치로부터 암호화된 상기 제3 메시지를 포함하는 상기 제2 에폭을 전송하는 단계 전에, 상기 제2 장치로부터, 상기 제1 메시지 키 및 상기 제2 메시지 키를 삭제하는 단계
    를 포함하는, 방법.
  14. 제13항에 있어서,
    각각 하나 이상의 암호화된 메시지를 포함하는 복수의 에폭을 전송하는 단계로서,
    상기 복수의 에폭 중 한 에폭에서의 상기 하나 이상의 암호화된 메시지는 상기 제1 장치 및 상기 제2 장치 중 하나로부터만 전송되고,
    상기 복수의 에폭은, 상기 제2 장치로부터 전송된 에폭에 이어, 상기 제2 장치로부터 전송된 다른 에폭이 뒤따르는 상기 제1 장치로부터 전송된 에폭이 뒤따르도록, 교대하는 방식으로 전송되는
    단계를 더 포함하는, 방법.
  15. 제13항 또는 제14항에 있어서,
    상기 제1 장치에서, 제1 헤더를 생성하는 단계;
    상기 제1 장치에서, 상기 제1 헤더 및 암호화된 제1 메시지를 포함하는 제1 암호문을 생성하는 단계;
    상기 제1 장치에서, 평문 형태의 상기 제1 헤더를 상기 제1 암호문에 첨부하는 단계; 및
    상기 제1 장치로부터, 상기 제1 암호문 및 평문 형태의 상기 제1 헤더를 전송하는 단계
    를 더 포함하는, 방법.
  16. 제15항에 있어서,
    상기 제2 장치에 의해, 상기 제1 암호문 및 평문 형태의 상기 제1 헤더를 수신하는 단계; 및
    상기 제2 장치에 의해, 평문 형태의 상기 제1 헤더에 기초하여 상기 암호문을 인증하는 단계
    를 더 포함하는, 방법.
  17. 제16항에 있어서,
    상기 제1 장치에서, 메시지 인덱스를 생성하는 단계를 더 포함하고,
    상기 제1 장치에서 상기 제1 헤더를 생성하는 단계는, 상기 메시지 인덱스를 포함하도록 상기 제1 헤더를 생성하는 단계를 더 포함하고,
    상기 제2 장치에 의해 평문 형태의 상기 제1 헤더에 기초하여 상기 암호문을 인증하는 단계는, 상기 메시지 인덱스에 기초하여 n번째 메시지 키를 생성하는 단계를 더 포함하는, 방법.
  18. 제13항 내지 제17항 중 어느 한 항에 있어서,
    상기 제1 장치 및 상기 제2 장치의 각각에 근본 상태(root state)를 제공하는 단계;
    상기 근본 상태에 기초하여 상기 제1 장치 및 상기 제2 장치의 각각에서 상기 의사 난수 생성기를 초기화하는 단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 상기 근본 상태에 기초하여 업데이트된 상태를 생성하는 단계; 및
    상기 업데이트된 상태에 기초하여 상기 제1 장치 및 상기 제2 장치의 각각에서 상기 의사 난수 생성기를 재초기화하는 단계
    를 더 포함하는, 방법.
  19. 제13항 내지 제17항 중 어느 한 항에 있어서,
    상기 제1 장치 및 상기 제2 장치의 각각에 근본 상태(root state)를 제공하는 단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제1 공유 키를 생성하는 단계;
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제1 상태를 생성하는 단계로서,
    상기 제1 공유 키는 상기 제1 공개 키에 적어도 부분적으로 기초하여 상기 제1 장치에서 생성되고,
    상기 제1 공유 키는 상기 제1 개인 키와 상기 제1 에폭 키에 적어도 부분적으로 기초하여 상기 제2 장치에서 생성되는
    단계; 및
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로, 제1 리프레시 키를 생성하는 단계로서,
    상기 제1 리프레시 키는 상기 공유 키와 상기 근본 상태에 기초하여 상기 제1 장치 및 상기 제2 장치의 각각에서 생성되고,
    상기 제1 상태는 상기 제1 공유 키와 상기 근본 상태에 기초하여 상기 제1 장치 및 상기 제2 장치의 각각에서 생성되는
    단계
    를 더 포함하고,
    상기 제1 장치 및 상기 제2 장치의 각각에서 독립적으로 제1 메시지 키를 생성하는 단계는,
    상기 제1 장치 및 상기 제2 장치의 각각에서 상기 의사 난수 생성기를 상기 제1 상태로 초기화하는 단계;
    상기 제1 리프레시 키를 초기화된 상기 의사 난수 생성기로 입력으로서 제공하는 단계; 및
    상기 제1 리프레시 키에 적어도 부분적으로 기초하여 상기 제1 장치 및 상기 제2 장치의 각각에서 상기 의사 난수 생성기에 의해 상기 제1 메시지 키를 생성하는 단계
    를 더 포함하는, 방법.
KR1020217028260A 2019-02-05 2019-09-09 에폭 키 교환을 이용한 종단간 이중 래칫 암호화 KR102619383B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/267,819 2019-02-05
US16/267,819 US10412063B1 (en) 2019-02-05 2019-02-05 End-to-end double-ratchet encryption with epoch key exchange
PCT/US2019/050139 WO2020162982A1 (en) 2019-02-05 2019-09-09 End-to-end double-ratchet encryption with epoch key exchange

Publications (2)

Publication Number Publication Date
KR20210124368A true KR20210124368A (ko) 2021-10-14
KR102619383B1 KR102619383B1 (ko) 2023-12-29

Family

ID=67845117

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217028260A KR102619383B1 (ko) 2019-02-05 2019-09-09 에폭 키 교환을 이용한 종단간 이중 래칫 암호화

Country Status (5)

Country Link
US (2) US10412063B1 (ko)
EP (1) EP3921971A1 (ko)
JP (1) JP7353375B2 (ko)
KR (1) KR102619383B1 (ko)
WO (1) WO2020162982A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10574451B2 (en) * 2017-10-19 2020-02-25 Bank Of America Corporation Method and apparatus for perfect forward secrecy using deterministic hierarchy
US11394565B2 (en) * 2019-06-18 2022-07-19 Intel Corporation Asymmetric device attestation using physically unclonable functions
US11153080B1 (en) * 2020-07-29 2021-10-19 John A. Nix Network securing device data using two post-quantum cryptography key encapsulation mechanisms
KR20220052016A (ko) * 2020-10-20 2022-04-27 삼성전자주식회사 스토리지 장치에서의 보안 동작을 위한 키 교환 방법 및 이를 이용한 접근 권한 이관 방법
CN114697054B (zh) * 2020-12-26 2023-10-27 科大国盾量子技术股份有限公司 数据的传输方法、装置、电子设备及计算机存储介质
CN113037474B (zh) * 2021-03-01 2022-09-23 南京大学 一种非对称的量子会议密钥协商方法及系统
CN113630407B (zh) * 2021-08-02 2022-12-27 中电信量子科技有限公司 使用对称密码技术增强mqtt协议传输安全的方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100988198B1 (ko) * 2010-05-31 2010-10-18 주식회사 아이넵 분산 컴퓨팅 기반 유틸리티 컴퓨팅 환경에서의 정보유출 방지를 위한 암호화 방법 및 이를 위한 시스템
US20180241871A1 (en) * 2017-02-17 2018-08-23 Whatsapp Inc. Methods and systems for displaying an ephemeral content message

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4731840A (en) 1985-05-06 1988-03-15 The United States Of America As Represented By The United States Department Of Energy Method for encryption and transmission of digital keying data
US5748735A (en) 1994-07-18 1998-05-05 Bell Atlantic Network Services, Inc. Securing E-mail communications and encrypted file storage using yaksha split private key asymmetric cryptography
US5737419A (en) 1994-11-09 1998-04-07 Bell Atlantic Network Services, Inc. Computer system for securing communications using split private key asymmetric cryptography
US6694025B1 (en) 1999-06-02 2004-02-17 Koninklijke Philips Electronics N.V. Method and apparatus for secure distribution of public/private key pairs
US7181016B2 (en) 2003-01-27 2007-02-20 Microsoft Corporation Deriving a symmetric key from an asymmetric key for file encryption or decryption
WO2006003675A2 (en) 2004-07-12 2006-01-12 Syed Ibrahim Abdul Hameed Khan System, method of generation and use of bilaterally generated variable instant passwords
JP4963835B2 (ja) 2006-01-12 2012-06-27 日本電信電話株式会社 暗号化方法と復号方法、それらの方法を利用した装置、システム、およびプログラム
JP4758824B2 (ja) 2006-05-23 2011-08-31 日本電信電話株式会社 暗号化装置、復号装置、暗号化方法、復号方法、それらの方法を用いたプログラム、および記録媒体
US20130028419A1 (en) 2011-07-26 2013-01-31 Debabrata Das System and a method for use in a symmetric key cryptographic communications
US9032212B1 (en) * 2013-03-15 2015-05-12 Emc Corporation Self-refreshing distributed cryptography
US9225516B1 (en) 2013-10-03 2015-12-29 Whatsapp Inc. Combined authentication and encryption
US9698976B1 (en) 2014-02-24 2017-07-04 Wickr Inc. Key management and dynamic perfect forward secrecy
US9923844B1 (en) 2014-07-30 2018-03-20 Whatsapp Inc. Conveying instant messages via HTTP
US9929863B2 (en) 2015-10-30 2018-03-27 Palo Alto Research Center Incorporated System and method for efficient and semantically secure symmetric encryption over channels with limited bandwidth
US9590956B1 (en) 2015-12-18 2017-03-07 Wickr Inc. Decentralized authoritative messaging
US9596079B1 (en) 2016-04-14 2017-03-14 Wickr Inc. Secure telecommunications
JP6556955B2 (ja) 2016-07-19 2019-08-07 日本電信電話株式会社 通信端末、サーバ装置、プログラム
US10367792B2 (en) 2016-08-25 2019-07-30 Orion Labs End-to end encryption for personal communication nodes
US10129223B1 (en) 2016-11-23 2018-11-13 Amazon Technologies, Inc. Lightweight encrypted communication protocol
US10396987B2 (en) 2017-01-26 2019-08-27 Wickr Inc. Securely provisioning an application with user information
US10735384B2 (en) 2017-02-17 2020-08-04 Whatsapp Inc. Techniques for key ratcheting with multiple step sizes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100988198B1 (ko) * 2010-05-31 2010-10-18 주식회사 아이넵 분산 컴퓨팅 기반 유틸리티 컴퓨팅 환경에서의 정보유출 방지를 위한 암호화 방법 및 이를 위한 시스템
US20180241871A1 (en) * 2017-02-17 2018-08-23 Whatsapp Inc. Methods and systems for displaying an ephemeral content message

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Joel Alwen 외 2명. "The Double Ratchet: Security Notions, Proofs, and Modularization for the Signal Protocol." Cryptology ePrint Archive (2018) *

Also Published As

Publication number Publication date
KR102619383B1 (ko) 2023-12-29
US10412063B1 (en) 2019-09-10
JP2022519688A (ja) 2022-03-24
JP7353375B2 (ja) 2023-09-29
US20220131838A1 (en) 2022-04-28
EP3921971A1 (en) 2021-12-15
WO2020162982A1 (en) 2020-08-13
US11831764B2 (en) 2023-11-28

Similar Documents

Publication Publication Date Title
KR102619383B1 (ko) 에폭 키 교환을 이용한 종단간 이중 래칫 암호화
RU2737917C1 (ru) Повышение неоднозначности
RU2736870C1 (ru) Комплекс для защищенной передачи данных в цифровой сети передачи данных с использованием однопроходной системы квантового распределения ключей и способ согласования ключей при работе комплекса
US8259934B2 (en) Methods and devices for a chained encryption mode
US5297208A (en) Secure file transfer system and method
US6289451B1 (en) System and method for efficiently implementing an authenticated communications channel that facilitates tamper detection
CN104023013A (zh) 数据传输方法、服务端和客户端
US20230188325A1 (en) Computer-implemented system and method for highly secure, high speed encryption and transmission of data
JP2022537733A (ja) 認証付き鍵共有
Koko et al. Comparison of Various Encryption Algorithms and Techniques for improving secured data Communication
EP3476078A1 (en) Systems and methods for authenticating communications using a single message exchange and symmetric key
CN106850191A (zh) 分布式存储系统通信协议的加密、解密方法及装置
US11528127B2 (en) Computer-implemented system and method for highly secure, high speed encryption and transmission of data
KR20200067265A (ko) 실시간 데이터 전송을 위한 블록 암호 장치 및 방법
KR100551992B1 (ko) 어플리케이션 데이터의 암호화 및 복호화 방법
EP1456997B1 (en) System and method for symmetrical cryptography
KR100388059B1 (ko) 비대칭키 암호 알고리즘을 이용한 데이터 암호화 시스템및 그 방법
CN114553420B (zh) 基于量子密钥的数字信封封装方法及数据保密通信网络
KR100864092B1 (ko) 블록암호의 블록 체이닝 모드를 사용한 패킷 암호화 방법,이를 이용한 패킷 암/복호화 서비스 제공 방법
CN111010373B (zh) 基于信宿锚的隐私安全编码方法
TWI248276B (en) System and method for secure encryption
KR100571178B1 (ko) 메시지의 암호화 및 복호화 방법
GB2616049A (en) Authentication method and system, a quantum communication network, and a node for quantum communication
CN113923029A (zh) 基于ecc混合算法的物联网信息加密方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant