KR20220137024A - 대칭 비동기 생성 암호화 방법 - Google Patents

대칭 비동기 생성 암호화 방법 Download PDF

Info

Publication number
KR20220137024A
KR20220137024A KR1020227027741A KR20227027741A KR20220137024A KR 20220137024 A KR20220137024 A KR 20220137024A KR 1020227027741 A KR1020227027741 A KR 1020227027741A KR 20227027741 A KR20227027741 A KR 20227027741A KR 20220137024 A KR20220137024 A KR 20220137024A
Authority
KR
South Korea
Prior art keywords
key
encryption key
codex
value
encryption
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
KR1020227027741A
Other languages
English (en)
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 KR20220137024A publication Critical patent/KR20220137024A/ko
Withdrawn legal-status Critical Current

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/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/3236Cryptographic 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/3239Cryptographic 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
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Inorganic Insulating Materials (AREA)
  • Facsimile Transmission Control (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

변경되는 암호화 키를 이용한 데이터 암호화 방법들이 개시된다. 방법들은 암호화 키를 생성하고, 코덱스를 사용하여 암호화 키 값을 변경하거나 바꾼다. 암호화 키는 난수 생성기를 사용하여 생성될 수 있다. 변경-전 상태의 암호화 키 값은 코덱스와 함께, 암호화 키에 대한 다음 유효 값을 생성하기 위해 사용된다. 암호화되지 않은 메시지 데이터는 코덱스와 함께 사용되어 암호화 키를 변경할 수 있다. 따라서, 각각의 끝에서 암호화 키를 다음 키 변경-후 상태로 변경하기 위해, 유효한 암호화 키 및 암호화되지 않았거나 성공적으로 해독된 메시지가 필요하다.

Description

대칭 비동기 생성 암호화 방법
본 개시내용은 일반적으로 대칭 암호화 패밀리에서, 새로운 생성 암호화 패밀리에서의 암호화의 분야에 관한 것이고, 보다 구체적으로는 대칭 비동기 생성 암호화를 위한 방법에 관한 것이다.
역사적으로, 비대칭 암호화는 타원 곡선 수학 과제(elliptic curve mathematical challenge) 및/또는 소수들(prime numbers)을 해결한다는 강력한 개념에 의존하며, 이는 매우 어려운 일이다.
타원 곡선 활용의 개념은 1985년에 워싱턴 대학의 Neal Koblitz에 의해, 그리고 별개로 IBM의 Victor Miller에 의해, 암호법에서의 사용을 위해 제안되었다(https://searchsecurity.techtarget.com/definition/elliptical-curve-cryptography 참조). 타원 곡선 암호법(elliptical curve cryptography)(ECC)은 더 빠르고 더 작고 더 효율적인 암호 키들을 생성하기 위해 사용될 수 있는 타원 곡선 이론에 기초하는 공개 키 암호화 기술이다. ECC는 매우 큰 소수들의 곱인 기존의 생성 방법 대신에, 타원 곡선 방정식의 속성들을 통해 키들을 생성한다.
업계는 여전히 타원 곡선들의 사용에 관해 약간의 유보를 가지고 있다. Hewlett Packard의 연구원인 Nigel Smart는 특정 곡선들이 매우 취약한 결함을 발견했다. 그러나, Certicom의 Philip Deck는 취약한 곡선들이 존재하는 반면, ECC를 구현하는 사람들은 사용될 수 없는 곡선들을 알아야 한다고 말한다. 그는 ECC가 전세계에서, 그리고 모든 디바이스에 걸쳐서 구현될 수 있는 기술로서 고유한 잠재력을 제공한다고 믿는다. Wired Magazine에서 인용한 Deck에 따르면, "그것[즉, 모든 컴퓨팅 디바이스에 걸쳐 상호운용가능한 암호화 시스템]을 달성할 수 있는 유일한 방법은 타원 곡선을 사용하는 것"이다.
ECC를 사용하든 순수 소수 RSA(Rivest-Shamir-Adleman)를 사용하든, 이 과제는 비밀, 즉 개인 키를 이해하는 능력을 얻기 위해 문제를 해결하는 순전한 어려움에 의존한다.
현재, 고전적인 컴퓨팅 패러다임에서, 이러한 과제들을 해결하는 것은 거의 불가능하며, 이를 달성하기 위해서는 엄청난 컴퓨팅 성능과 적어도 100년 정도가 필요할 것이다.
지난 몇 년 동안, 양자 컴퓨팅 과학의 출현은 컴퓨팅 성능이 약 2년마다 용량에 있어서 두 배로 된다는 무어의 법칙과 같은 기존 개념을 근본적으로 변화시켰다. 그러나, 양자 컴퓨팅 성능은 기하급수적으로 증가하고 있다. 이러한 컴퓨터들의 일반적인 사용에는 여전히 몇 가지 심각한 제한이 있지만, 5-10년이라는 제한된 기간 내에, 몇 분 또는 심지어는 몇 초 내에 고전적인 암호화들을 깨뜨리기 위해 양자 컴퓨터들이 사용될 수 있을 것으로 예상될 수 있다. 결점은 수학적 방정식들 또는 과제들이 아무리 어려워도, 결국에는 더 강력한 알고리즘에 의해 계산될 것이라는 점이다.
또 다른 결점은 패턴 인식 알고리즘들이 특정 상황들에서 자연어 인식에 따라 반복을 작동시키고 식별할 수 있다는 것이다. 이러한 방법을 사용하면 악의적인 행위자가 특정 개수의 심볼들을 해독할 수 있게 하고, 따라서 실제 키를 해독하지 않고서, 암호화된 메시지의 내용을 역분석(reverse engineer)할 수 있게 한다. 이것은 매우 어려울 뿐만 아니라 시간 및 비용 집약적이라는 점에 유의하는 것이 중요하다.
마지막 어려움은 현재 비대칭 암호화가 일반적으로 양방향 암호화의 형태로의 또는 ROOT 인증 기관으로서의 특정 키 쌍들의 재사용에 의존한다는 것이다. 이는 국가, 비-국가 및 악의적인 행위자들이, 장래에 여전히 유의미할 것을 희망하면서 -아마도 그럴 것임- 향후의 수단을 이용하여 그것들을 해독할 수 있다는 생각으로, 정부 데이터베이스, 금융 정보, 의료 정보, 군사 정보와 같은 잠재적으로 민감한 정보를 기록하는 상황을 만든다. 대부분의 정부 데이터베이스 내의 신원 및 의료 정보는 영구적이며 향후 10년 동안 여전히 유의미할 수 있다.
본 개시내용은 수학 방정식을 제거함으로써 종래 기술에서 식별된 결함들을 완화하고, 그에 의해 무차별 대입만 가능한 크래킹 가능성들(brute-force-only cracking possibilities)을 시행하는 것; 키 해독 동작들의 기회의 윈도우들을 상당히 제한하는, 각각의 암호화/복호화에 대한 키 가변성(key mutability)을 가능하게 하는 것; 및 암호화 비밀을 추측하는 확률적 임계값을 말도 안 되는 무한에 가까운 수들로 확장하는 것을 목표로 한다.
본 발명의 일 양태에 따르면, N개의 2진 숫자(binary digit)의 베이스(base)로 이루어진 코덱스(codex) 및 인덱스를 생성하는 방법이 제공되고, 인덱스는 코덱스의 생성을 위한 참조로서 사용되는 모든 조합의 정렬된 목록이고, 코덱스는 암호화 키를 사용하여 생성된 모든 조합의 무작위 목록을 포함하고; 코덱스는 고유하고, 통신 채널을 확립하기 위해 한 세트의 둘 이상의 사용자들 사이에 생성된다.
본 발명의 다른 양태에 따르면, N은 8, 16, 32 및 64일 수 있다.
본 발명의 다른 양태에 따르면, 제1 사용자와 제2 사용자 사이의 핸드셰이크를 위한 대칭 암호화 키를 생성하는 방법이 제공된다. 방법은 난수 생성기(random number generator)(RNG)에서: RNG에서 제1 및 제2 사용자로부터 숫자들(digits)의 요청들을 수신하는 단계; RNG에서 수들(numbers)의 제1 및 제2 목록을 생성하는 단계; 수들에 연관된 심볼들을 포함하는 참조 테이블을 사용하여 제1 및 제2 목록을 구문분석하는 단계; 및 제1 및 제2 심볼 목록을 제1 및 제2 사용자에게 각각 송신하는 단계를 포함하고, 목록들은 채널 생성 요청 또는 수락으로서 송신될 새로운 고유 키를 생성하기 위해 결합된다.
본 발명의 다른 양태에 따르면, 변경되는(mutating) 암호화 키 및 코덱스를 사용하여 데이터를 암호화하는 방법이 제공되며, 방법은 변경-전 상태(pre-mutation state)의 암호화 키의 값을 사용하여 오프셋을 생성하는 단계; 사전-암호화된 데이터의 처음 N 바이트의 임시 기록을 엔트로피 목록으로서 유지하는 단계; 데이터를 암호화하는 단계; 암호화 키에 대한 이진 숫자 상태에 대한 변경된 키 값을 생성하기 위해 처음 N 바이트를 사용하여 암호화 키 값을 변경하는 단계; 및 변경된 키 값을 현재 암호화 키로서 저장하는 단계를 포함한다.
하나 이상의 실시예를 도시하는 첨부 도면들에서:
도 1은 본 발명의 실시예의 예시적인 인덱스 생성 프로세스를 도시하는 흐름도이다.
도 2는 예시적인 암호화 키 생성 프로세스를 도시하는 개략적인 블록도이다.
도 3은 예시적인 코덱스 생성 프로세스를 도시하는 개략적인 블록도이다.
도 4는 예시적인 키 변경 프로세스(key mutation process)를 도시하는 개략적인 블록도이다.
도 5는 예시적인 암호화 프로세스를 도시하는 개략적인 블록도이다.
도 6은 예시적인 해독 프로세스를 도시하는 개략적인 블록도이다.
"최상부", "최하부", "상향", "하향", "좌측", "우측", "수직으로" 및 "측방향으로"와 같은 방향성 용어들은 이하의 설명에서 상대 참조를 제공하기 위한 목적으로만 사용되고, 임의의 품목이 사용 동안 어떻게 위치될지, 또는 조립체 내에서 또는 환경에 대해 어떻게 장착될지에 관한 임의의 제한을 제안하도록 의도된 것이 아니다. "포함하는(comprising)"이라는 용어와 함께 본 명세서에서 사용될 때의 단수 표현(단어 "a" 또는 "an")의 사용은 "하나(one)"를 의미할 수 있지만, 그것은 또한 "하나 이상", "적어도 하나" 및 "하나 또는 하나 초과"의 의미와도 일치한다. 단수 형태로 표현된 임의의 요소는 그것의 복수 형태도 포괄한다. 복수 형태로 표현된 임의의 요소는 그것의 단수 형태도 포괄한다. 본 명세서에서 사용될 때의 "복수의"라는 용어는 하나 초과를 의미하며; 예를 들어, "복수의"라는 용어는 2개 이상, 3개 이상, 4개 이상, 또는 그와 유사한 것을 포함한다.
본 개시내용에서, 용어 "포함하는(comprising)", "갖는(having)", "포함하는(including)" 및 "포함하는(containing)", 및 이들의 문법적 변형들은 포괄적이거나 개방형이며, 기재되지 않은 추가의 요소들 및/또는 방법 단계들을 배제하지 않는다. 구성, 용도 또는 방법과 관련하여 본 명세서에서 사용될 때의 용어 "본질적으로 구성되는(consisting essentially of)"은 추가 요소들, 방법 단계들, 또는 추가 요소들 및 방법 단계들 둘 다가 존재할 수 있지만 이러한 추가들이 기재된 구성, 방법 또는 용도가 기능하는 방식에 실질적으로 영향을 주지는 않음을 의미한다. 구성, 용도 또는 방법과 관련하여 본 명세서에서 사용될 때의 용어 "구성된(consisting of)"은 추가 요소들 및/또는 방법 단계들의 존재를 배제한다.
코덱스는 제네시스(genesis) 및 개시자(initiator) 키를 사용하여 할당된 무작위 순서로 (인코딩 * 비트들)의 모든 조합들을 포함하는 레이어들을 갖는 데이터베이스이다. 코덱스는 최소 두(2) 개 및 최대 256개의 레이어로 구성된다.
암호화 및 복호화를 위해 사용되는 이진 숫자들의 베이스 수(base number)를 인코딩한다. 인덱스 및 코덱스 레이어들은 * 비트들을 인코딩하는 것의 (2 ** 인코딩) 조합들로 구성된다.
엔트로피는 현재 키 심볼을 새로운 키 심볼 세트로 변경하는 데 사용되는 정수 형태의 신호 개념이다. 이를 위해 사용되는 정수들은 들어오는 또는 나가는 바이트들의 목록으로부터 취해진다. 따라서, 유효 키, 및 성공적으로 해독된 메시지가 있는 경우에만 키를 다음 키 유효 상태로 변경할 수 있다.
제네시스 키는 코덱스 생성 시에 한 번만 사용되는 2-48 심볼 키이다.
개시자 키는 코덱스 생성 시에, 및 초기 유효 키 상태로서 둘 다 사용된다.
키 심볼은 90개의 캐릭터, 즉 대문자들(majuscule letter), 소문자들(minuscule letter), 수들 및 특수 캐릭터들의 목록으로부터 선택된 심볼이다. 모든 심볼은 0-89 사이의 값에 연관된다.
키 상태는 현재 키 "상태"를 나타내는 2048개의 심볼의 현재 세트이다.
레이어는 (인코딩 * 비트들)의 모든 조합의 고유한 분포로 구성된다. 어떤 레이어도 동일해서는 안 된다(거의 불가능한 충돌).
유효 키 상태는 2048개의 심볼의 현재 세트가 동기화되어 새로운 메시지를 암호화하거나 복호화할 수 있을 때이다. 유효 키 상태는 수신자가 메시지 또는 그것의 내용의 임의의 부분을 드러내지 않고서 메시지의 성공적인 복호화를 확인할 수 있게 하는 체크섬(checksum)의 존재에 의해 확인된다.
대칭 비동기 생성 암호화(Symmetric Asynchronous Generative Encryption)(SAGE)는 통신을 위해 가변 암호화 키들의 비동기 동기화에 의존한다. 알고리즘은 세(3) 개의 주요 요소인 난수 생성(RNG), 코덱스, 및 암호화 키를 사용한다.
난수 생성(RNG)은 복수의 방법을 통해 달성될 수 있다. 하나의 예시적인 방법은 WO/2020/146955로서 공개되고 발명의 명칭이 "블록체인 스마트 계약들에서 난수들을 생성하기 위한 방법(A Method for Generating Random Numbers in Blockchain Smart Contracts)"인 특허 출원에 설명된 본 출원인의 방법이며, 이는 특허 계류 중인 블록체인-기반 난수 생성기를 사용하여 랜덤 시드를 생성한다. 각각의 참가자는 스마트 계약에 시드를 제공하고, 스마트 계약은 각각의 참가자에 의해 제공된 시드 및 블록 정보에 기초하여 새로운 난수를 생성한다.
코덱스는 최종 사용자들 둘 다가 통신 채널을 생성하고 난 후에 그들에 의해 생성된 무작위로 할당된 바이너리 조합 분포의 공통 참조 테이블이다. 각각의 코덱스는 최소 두(2) 개의 레이어 및 최대 이백오십육(256) 개의 레이어를 갖는다: 각각의 레이어는 n 비트의 모든 가능한 이진 순열의 완전한 무작위 분포이다. 사용된 베이스 인코딩에 따라, 레이어 길이는 2** n 비트(256:8비트, 65536:16비트, 4294967296:32비트 등)이다. 그러므로, 무차별 대입의 베이스 확률은 2**(2** 베이스 인코딩)이다.
암호화 키들은 0-89 사이의 값을 갖는 2048개의 심볼을 생성하기 위해 임의의 RNG 방법을 사용하여 생성된다. 무차별 대입의 베이스 확률은 약 90**2048이다.
코덱스는 고유하고 한 번 사용되는 제네시스 키, 및 제1 통신에서 사용될 개시자 키의 결합된 사용으로부터 생성된다. 이러한 키들은 이하에서는 핸드셰이크라고 지칭되는, 두 최종 사용자 간의 2048개 심볼의 교환된 세트의 조합을 사용하여 생성된다. 최종 사용자들 둘 다는 이제 4096개의 심볼을 공유하고 있다. 그런 다음, 핸드셰이크는 2048개 심볼의 두(2) 개의 결합된 세트로 나누어지고, 각각의 세트는 각각의 최종 사용자의 절반, 제네시스 키 및 개시자 키로부터 도출된다. 핸드셰이크는 통신을 위한 요청의 역할을 하며, 그것의 수락은 수신자가 2048개의 심볼의 핸드셰이크로 응답하는 것에 의해 해결된다.
코덱스는 들어오는 바이트들 및 나가는 바이트들을 매핑하기 위해 사용된다. 암호화 키들은 본 명세서에서 코덱스 셔플링으로 지칭되는 바이트 매핑의 실제 위치에 대한 무작위의 가변 오프셋을 생성하기 위해 사용된다. 프로세스를 시각화하기 위해, 키의 각각의 숫자(digit)는 마치 모듈로 바이트 참조 테이블에서 우측으로 회전한 다음 좌측으로 회전하는 룰렛과 같이, 페이로드의 각각의 바이트의 위치를 오프셋한다고 상상할 수 있다. 그것은 또한 은행들에 의해 사용되는 번호 동기화 기술과 유사한 것으로 간주될 수 있다. 마지막으로부터 새로운 유효 상태를 추측할 베이스 확률은 약 10**2048일 것이다.
다음으로, 페이로드가 암호화되거나 해독될 때마다, 들어오는 바이트들이 키 변경에 대한 참조 역할을 하고, 따라서 사용 시 키를 변화시킨다. 최종 사용자가 루프에 남아 있을 수 있는 유일한 방법은 들어오는 바이트들을 성공적으로 해독하여 발신자와 동일한 유효 상태로 키를 변경하는 것이다.
최종 사용자 키들 둘 다의 동기화는 각각의 최종 사용자 측에서 비동기식으로 행해지며, 패킷 스트리밍의 경우에서와 같이 매우 빠르게, 예를 들어 초당 몇 회 발생한다. 매번 동기화가 수행되어야 하며, 그렇지 않으면 해독 능력이 상실된다는 것을 유의하는 것이 중요하다. 이것은 통신 채널에서 최종 사용자들을 포함하고 제외하는 것과 같은 이점들을 가질 수 있다.
임의의 수의 코덱스가 병렬로 생성될 수 있다. 임의의 수의 최종 사용자가 동일한 코덱스를 사용할 수 있다. 임의의 수의 최종 사용자가 동일한 개시자 키를 사용할 수 있지만, 그들 모두가 동일한 메시지 스레드를 읽고 있지 않은 한 누구도 동일한 키 상태를 갖지 않을 것이다.
성능과 관련하여, 코덱스는 제네시스 키로부터 도출된 결정론적 프로토콜로부터 로컬 최종 사용자 데이터베이스에서 생성된다. 바이트들의 매핑 및 검색 프로세스는 이용가능한 CPU 코어들에 의해 병렬로 행해진다. 암호화된 메시지들은 압축된다.
인덱스 생성:
인덱스는 코덱스 생성을 가속화하는 성능 목적으로 구축된 유틸리티이다. 인덱스는 n 비트의 정렬된 이진 조합들의 참조 테이블이다(즉, 8, 16, 32, 64). 인덱스는 하나(1)의 레이어를 가지며, (2**베이스 인코딩)의 길이를 갖는다. 인덱스는 코덱스 생성기에 의해, 고유 코덱스로 셔플되도록 무작위 방식으로 사용된다.
도 1을 참조하면, 블록(100)에서 소프트웨어 셋업은 설치 시에 시작되고, 인덱스 및 코덱스 데이터베이스(Db) 테이블을 셋업하고, 종속성들을 설치하고, 코덱스 생성, 키 생성 및 인코딩/디코딩을 위한 마이크로-서비스들을 노출할 것이다.
블록(101)에서, 선택된 베이스 인코딩에 대한 인덱스 생성이 시작된다. 사용자는 다음 중에서 하나 이상의 옵션을 선택한다: 8비트 인코딩(인덱스 길이 = 256); 16비트 인코딩(인덱스 길이 = 65,536); 32비트 인코딩(인덱스 길이 = 4,294,967,296); 및 64비트 인코딩(인덱스 길이 = 18,446,744,073,709,551,615).
블록(102)에서, 선택된 n 비트의 모든 가능한 변형을 생성하기 위해 이진 스트링 생성기가 사용된다.
블록(103)에서, 이진 스트링 생성기는 바이트 스트링 포맷의 모든 가능한 변형의 목록을 반환한다.
블록(104)에서, 인덱스는 index_base(n) 테이블에 저장된다. 예시적인 테이블 스키마는 다음과 같이 보일 수 있다:
Figure pct00001
암호화 키 생성
암호화 키 생성은 사용자들 둘 다가 그들 측에서 무작위성을 제공하지 않도록 하는 반-결정론적 패턴(semi-deterministic pattern)으로 이루어진다. 최종 사용자는 무작위성 또는 의사-무작위성(pseudo-randomness) 소스를 선택할 수 있지만, 난수 생성(RNG) 기술이 강하게 권장된다.
키 생성은 최종 사용자들을 위한 통신 채널의 생성에 무작위성이 포함되는 중요한 프로세스이다. 통신 채널들은 고유 코덱스, 및 본 명세서에서 개시자 키라고 지칭되는 초기 암호화 키의 조합이다.
코덱스의 고유성은 두(2) 개의 키, 즉 제네시스 키와 개시자 키의 결합된 사용으로부터 생성된다.
이제 도 2를 참조하면, 블록(201)에서, 새로운 키 생성 요청 시, 최종 사용자들은 동시에 또는 다르게 RNG 소스로부터 숫자들을 요청한다. 이 예에서, WO/2020/146955로서 공개되고 발명의 명칭이 "블록체인 스마트 계약들에서 난수들을 생성하기 위한 방법"인 특허 출원에 설명된 전술한 방법이 사용된다. 최종 사용자들 둘 다는 RNG 스마트 계약에 숫자 요청들을 보낸다.
블록(202)에서, 스마트 계약은 0-89 사이의 값의 1024개 정수의 두(2) 개의 목록을 반환한다.
블록(203)에서, 수들의 두(2) 개의 목록이 심볼 연관 값을 포함하는 참조 테이블을 사용하여 구문 분석된다. 이러한 값들은 필수이며, 코덱스 생성, 인코딩 및 디코딩 동안 암호화 키에 의해 사용된다.
블록(204)에서, 1024 심볼의 두(2) 개의 목록이 최종 사용자들에게 반환된다. 그들은 완전히 새로운 고유 키를 생성하도록 결합될 수 있고, 채널 생성 요청 또는 수락으로서 보내진다.
기본적으로, 두(2) 개의 절반 키(half-key)는 핸드셰이크 프로세스 동안 필요한 제네시스 및 개시자 키에 대응한다.
코덱스 생성
코덱스는 복수의 레이어에서 스트링 포맷의 모든 n비트 조합에 대해 무작위로 할당된 위치들의 고유한 세트이다. 각각의 레이어는 그 자신의 완전한 변형 세트이며, 특정 코덱스의 임의의 다른 레이어와는 상이한 무작위 순서이다. 동일한 코덱스 값을 두 번 가질 가능성은 매우 낮으며, 베이스 인코딩에 의존한다. 그것은 대략 (레이어들**(2 **베이스 인코딩))이다.
코덱스는 그 자신의 Db 테이블 codex_base(n)에 저장된다. 그것은 바이트 스트링들에 위치들을 할당하는 참조 테이블의 역할을 한다. 그것은 들어오는 또는 나가는 바이트들을 코딩된 위치들에 매핑하기 위해 사용된다. 그것은 바이트 위치 및 길이를 참조함으로써 손실 없이 매핑 및 검색될 수 있다.
도 3을 참조하면,
301: 코덱스 생성은 또한 통신 채널 생성으로서 설명될 수 있다. 이것은 본 명세서에서 핸드셰이크라고 지칭되는 요청 및 수락 프로세스를 통해 개시된다.
이 경우, 두(2) 명의 최종 사용자가 핸드셰이크 프로세스를 개시한다. 두(2) 명 초과의 최종 사용자가 공통 코덱스의 생성에 참여할 수 있다는 점에 유의하는 것이 중요하다.
302: 제1 최종 사용자는 각각 1024개 심볼의 두(2) 개의 목록 형태로 핸드셰이크 요청을 수신한다. 이러한 핸드셰이크 요청을 수락하기 위해, 최종 사용자는 1024개 심볼의 두(2) 개의 목록을 또한 반환한다.
303: 최종 사용자 요청 및 수락은 또한 코덱스 생성에 사용될 베이스 인코딩을 나타내는 값으로 구성된다.
304: 요청이 수락되고 나면, 최종 사용자들 둘 다가 1024개 심볼의 네(4) 개의 목록을 갖게 된다. 이로부터, 사용자들 둘 다는 그것들을 두(2) 개의 키, 즉 제네시스 키와 개시자 키로 결합한다. 요청하는 최종 사용자는 기본적으로 제1 위치로서 사용되지만, 이것은 핸드셰이크에서 임의적 값(optional value)을 표시함으로써 오버라이드될 수 있다.
305: 이제, 최종 사용자들은 각각 2048개 심볼의 두(2) 개의 키를 갖는다:
제네시스 키(고유하고 코덱스 생성 시 한 번만 사용됨)
개시자 키(통신 시작 시 초기 키 상태에서 사용됨)
306: 이제 각각의 최종 사용자는 제네시스 키 및 개시자 키의 조합으로부터 도출된 결정론적 접근법을 사용하여 그들의 클라이언트 측에서 코덱스 생성을 개시한다.
307: 코덱스의 각각의 레이어는 (베이스 인코딩*비트들)의 (2**베이스 인코딩) 값으로 구성된다. 어떠한 레이어도 임의의 이전 레이어와 동일한 순서를 갖지 않으며, 그들은 최소 수 2 및 최대 수 256을 갖는다.
하나의 코덱스 레이어를 추측할 수 있는 대략적인 확률은 (2**베이스 인코딩)이고: 전체 코덱스에 대해: (레이어들** (2**베이스 인코딩))이다.
308: 코덱스는 codex_base(n)[layer] 테이블에 저장된다. 스키마는 다음과 같이 보일 것이다:
Figure pct00002
키 변경 (Key Mutation)
키 변경은 프로토콜의 핵심 개념이다. 이것은 성공적인 통신 루프 및 고유한 공통 참조 테이블(코덱스)을 사용하여 비동기 키 동기화의 로직과 함께 작동한다. 키 변경은 인코딩 및 디코딩 방법들을 사용함으로써 달성된다. 변경은 처리된 바이트들, 및 임의적으로 핸드셰이크 동안 교환되는 공통 비밀 참조에 의해 개시된다.
임의적으로, 암호화되지 않은 바이트들의 체크섬이 최종 사용자들 간에 송신되어 성공적인 복호화를 확인할 수 있고; 그에 의해 새로운 키 상태를 검증한다.
이제, 도 4를 참조한다.
401: 최종 사용자는 다른 최종 사용자에게 송신될 메시지를 인코딩할 준비를 한다. 개시자 키는 이제 변경-전 상태(pre-mutation state)에 있으며, 이는 키 상태가 아직 변경되지 않았음을 의미한다.
402: 최종 사용자는 통상적인 대로 바이트들을 처리한다(암호화 참조).
403: 최종 사용자는 현재 인코딩된 메시지로부터 최대 2048개의 최초 바이트의 임시 레코드를 유지한다. 이것은 엔트로피라고 지칭될 것이다.
404: 현재 변경-전 키 상태는 통상적인 대로 매핑된 현재 위치에 대한 오프셋을 생성하기 위해 사용된다(암호화 참조).
405: 암호화가 발생하고, 위치들이 매핑되고 오프셋된다.
406: 사전-암호화된 바이트 목록을 사용하여 키 변경이 발생한다. 각각의 바이트는 현재 심볼 값에서 시작하여 modulo(90)를 사용하여 모든 심볼 값을 수정한다.
407: 키는 새로운 유효 키 상태로서 저장된다.
408: 수신하는 최종 사용자는 개시자(변경-전) 키 상태로 시작한다.
409: 최종 사용자는 인코딩된 위치 매핑을 통상적인 대로 처리한다(해독 참조).
410: 최종 사용자는 개시자 키를 사용하여 현재 유효 오프셋을 결정한다.
411: 디코딩이 발생하고, 수신 최종 사용자는 이제 암호화되지 않은 바이트를 읽을 수 있다.
412: 최종 사용자는 최대 2048개의 최초 바이트를 그들의 엔트로피로서 수집한다.
413: 수신하는 최종 사용자는 이제 그들의 키를 새로운 유효 상태로 변경할 수 있다.
414: 새로운 유효 키 상태가 저장된다. 이제 최종 사용자는 새로운 메시지를 보내거나, 새로운 들어오는 메시지를 기다릴 수 있다.
암호화
암호화(또는 인코딩)는 고유한 공통 참조 테이블인 코덱스를 사용하여 수행된다. 코덱스는 무작위로 할당된 바이트 스트링을 수치 위치 값들에 매핑한다. 위치 및 바이트 길이를 기록함으로써, 바이트들이 손실 없이 검색될 수 있다.
임의적으로, 데이터가 인코딩될 때마다, 암호화되지 않은 데이터의 체크섬이 유지되고 성공적인 복호화의 확인을 위해 송신된다.
인코딩은 고유한 파일 또는 버퍼에서 행해질 수 있다. 어느 경우에서든, 방법은 인코딩된 위치 맵 또는 요청된 바이트 목록을 반환한다. 파일의 경우에서, 동작의 종료 시에 파일이 저장된다. 버퍼의 경우에서, 인코딩된 바이트들은 그대로 남겨져 나중에 코드베이스에 의해 연쇄된다.
도 5를 참조하면, 인코딩은 파일 또는 버퍼 바이트 패킷에서 실행될 것이다.
501: 각각의 바이트 또는 바이트 조합이 처리된다. (8:1 바이트, 16:2 바이트, 32:4 바이트, 64:8 바이트) 및 현재 레이어에서의 출현 순서에서 처음 발생한 그것의 인스턴스를 사용하여 매핑된다.
예:
베이스 16: 들어오는 2 바이트: 00100011 10100110
각각의 Db 테이블 엔트리는 16비트를 갖는다.
제1 바이트(00100011)는 위치 [0: 바이트 길이]에서 (n) Db 항목으로부터 탐색된다.
제2 바이트는 위치 [8: 바이트 길이+8]의 (동일한 n) Db 항목으로부터 탐색된다.
동일한 위치의 모든 조건과 일치하는 제1 엔트리는 매핑을 위한 유효 위치로서 기록되고, 바이트 길이 및 레이어와 함께 목록에 첨부된다.
502: 위치가 정의될 때마다, 현재 유효 키 상태는 기록된 위치를, 키 심볼을 정수 목록 모듈로로서 사용하여 오프셋하기 위해 사용된다. 그것은 각각의 위치에 대해 키 모듈로를 반복하고, 일련의 룰렛들처럼 우측(+)으로부터 좌측(-)으로 스위칭하면서 정수 값을 오프셋 값으로서 사용한다.
503: 현재 엔트로피 상태(암호화되지 않은 바이트에서 정수로)가 목록에 기록된다.
504: 오프셋들이 위치들에 적용된다.
505: 인코딩된 파일이 저장되거나 인코딩된 패킷이 반환된다.
506: 현재 유효 키 상태가 엔트로피 목록을 사용하여 변경된다. 각각의 엔트로피 숫자는 전체 키 값, 올바른 순서로 된 모든 엔트로피 관련 바이트에 대한 지식, 및 임의적으로 핸드셰이크에서 교환되는 공통 비밀 참조를 수정하며, 이들 모두는 새로운 유효 키 상태를 정의하는 데 필요하다.
507: 새로운 유효 키 상태가 저장된다.
해독
해독 또는 디코딩은 고유한 공통 참조 테이블, 코덱스 및 현재 유효 키 상태를 사용하여 행해진다. 코덱스는 대응하는 바이트들을 일련의 위치들, 바이트 길이들, 및 레이어 참조들에 매핑할 수 있게 한다.
임의적으로, 암호화되지 않은 바이트들의 체크섬이 암호화된 메시지와 함께 송신되고; 따라서 최종 사용자는 그들이 메시지를 성공적으로 복호화했으며 유효 키 상태에 있음을 확인할 수 있다.
디코딩은 완전히 인코딩된 파일, 또는 버퍼로부터의 인코딩된 스트림으로부터 행해질 수 있다. 그것은 암호화되지 않은 버퍼 패킷의 암호화되지 않은 파일을 반환한다. 버퍼의 경우에서, 바이트들은 남겨져서 코드베이스에 의해 연쇄된다.
도 6을 참조하면,
600: 최종 사용자는 인코딩된 파일 또는 버퍼 패킷에서 인코딩된 위치들을 추출한다.
601: 최종 사용자는 현재 유효 키 상태로부터 오프셋 목록을 결정한다.
602: 최종 사용자는 위치 및 레이어를 바이트 스트링에 매칭시킨다. 바이트 스트링으로부터, 각각의 바이트는 바이트 길이 및 그것의 순서를 사용하여 추출된다.
예:
베이스 32: 들어오는 바이트 세트: 00011111 01010101 01110000 00111100
각각의 Db 엔트리는 32비트를 갖는다.
오프셋은 유효 위치를 추출하기 위해 위치 목록에 적용된다.
유효 위치에 대응하는 바이트 스트링이 추출된다.
제1 바이트는 위치 [0:바이트 길이]로부터 추출된다.
제2 바이트는 위치 [8:바이트 길이+8]로부터 추출된다.
제3 바이트는 위치 [16:바이트 길이+16]로부터 추출된다.
제4 바이트는 위치 [24:바이트 길이+24]로부터 추출된다.
바이트들은 최종 바이트 반환 목록에 첨부된다.
603: 키 변경을 위해 엔트로피 목록에 최대 처음 2048개의 디코딩된 바이트 정수 값이 기록된다.
604: 암호화되지 않은 바이트들이 파일에 저장되거나, 암호화되지 않은 바이트 패킷이 반환된다.
605: 현재 키 유효 상태가 엔트로피 목록을 사용하여 변경된다.
606: 새로운 유효 키 상태가 저장된다.
프로토콜 - 채널 셋업 (Alice와 Bob)
채널 셋업 단계 1 - 핸드셰이크 요청
Alice는 Bob과의 통신 채널을 개시하려고 한다.
Alice는 그녀의 제네시스 및 개시자 절반-키를 생성한다.
Alice는 두(2) 개의 절반-키를 제출하고 가능하게는 임의의 종류의 공통 비밀 참조와 같은 임의적 값을 포워딩하는 형태로 Bob에게 통신 채널 요청을 보낸다.
채널 셋업 단계 2 - 핸드셰이크 수락
Bob은 Alice의 요청을 수신한다.
Bob은 그의 제네시스 및 개시자 절반-키를 생성한다.
Bob은 Alice에게 두(2) 개의 절반-키 형태로 그의 수락을 보내고 가능하게는 임의적 값들을 포워딩할 수 있다.
Alice는 Bob의 절반 키들을 수신한다.
핸드셰이크는 성공한 것으로 간주된다.
채널 셋업 단계 3 - 코덱스 생성
Alice와 Bob 둘 다는 제네시스 키와 개시자 키의 조합으로부터 도출된 공통 코덱스를 생성한다.
Alice와 Bob은 이제 코덱스 및 개시자 키를 가지고 있으며, 제네시스 키는 이 스테이지에서 한 번만 사용되고 폐기된다.
통신 채널은 이제 유효한 것으로 간주되고, 메시지들을 수신 및 송신하기 위해 사용될 수 있다.
프로토콜 - 채널 메시징 (Alice와 Bob)
메시지 채널 단계 1 - Alice가 메시지를 인코딩한다
Alice는 현재 통신 채널에 할당된 공통 코덱스 및 Alice의 현재 유효 키 상태를 사용하여 메시지를 인코딩한다.
메시지 채널 단계 2 - Alice의 키가 변경된다
Alice는 나가는 바이트들로부터 추출된 엔트로피를 사용하여 키 상태를 변경한다.
이제 Alice는 Alice의 새로운 키 상태를 갖는다.
메시지 채널 단계 3 - Alice가 메시지(파일 또는 버퍼)를 보낸다
Alice는 압축된 인코딩된 위치 맵의 형태로 Bob에게 메시지를 보낸다.
메시지 채널 단계 4 - Bob이 메시지를 수신한다
Bob은 압축된 위치 맵의 형태로 Alice의 메시지를 수신한다.
메시지 채널 단계 5 - Bob이 메시지를 디코딩한다
Bob은 이 채널에 대한 공통 코덱스 및 Bob의 현재 유효 키 상태를 사용하여 메시지를 디코딩한다.
Bob은 성공적으로 해독된 바이트들로부터 엔트로피를 추출한다.
메시지 채널 단계 6 - Bob의 키가 변경된다
Bob은 엔트로피를 사용하여 현재 유효 키 상태를 변경한다.
이제 Bob은 Alice의 새로운 유효 키 상태에 대응하는 새로운 유효 키 상태를 갖는다.
메소드들의 목록:
ConvertToInt(key_list):
키 심볼들을 대응하는 정수들로 변환한다.
Decrypt(cipher_message, 키, 인코딩, 코덱스):
고유 코덱스 및 유효 키 상태를 사용하여, 인코딩된 메시지를 복호화하는 함수이다. 그것은 또한 키를 변경하고, (확인 인수증(confirmation receipt)으로서 발신자에게 반환될) 성공적인 복호화를 검증하기 위해 체크섬을 반환한다.
Encrypt(메시지, 키, 인코딩, 코덱스):
고유 코덱스로부터 도출된 암호 및 유효 키 상태를 사용하여 메시지를 암호화하는 함수이다. 그것은 또한 키를 변경하고, 성공적인 복호화를 검증하기 위해 체크섬을 반환한다.
GenerateAllBinaryString(e = 인코딩):
(인코딩* 비트들)의 모든 조합을 생성.
예: 8비트는 8비트의 256개 조합을 생성한다.
GenerateCodex(g = 제네시스 키, i = 개시자 키, e = 인코딩, num = 레이어의 수):
제네시스 및 개시자 키를 사용하여 (2** e) 길이의 num개의 레이어로 고유 코덱스를 생성한다. 각각의 레이어는 고유하며, 모든 레이어를 올바른 순서로 추측할 확률은 (num** (2** e))일 것이다.
GenerateKey(시드):
0-89 사이의 2048개 정수의 시드로부터 키를 생성한다.
GenerateLayer(g = 제네시스 키, i = 개시자 키, e = 인코딩):
(e* 비트들)의 모든 조합으로 조합의 레이어를 생성한다. 각각의 레이어는 고유한 순서를 갖는다. 레이어는 제네시스 및 개시자 키를 사용하여 선택된다. 각각의 엔트리는 e에 대응하는 인덱스의 key1[for char in char] * key2[for char in char]에서 선택된다.
MutateKey(키, 엔트로피):
엔트로피를 사용하여 키 상태를 변경한다. 엔트로피는 들어오는 바이트 및 나가는 바이트로부터 취해진다.
SymbolIndex{object= 0-89 사이의 모든 심볼 값}
인덱스 생성
Figure pct00003
코덱스 생성
GenerateCodex(제네시스, 개시자, 인코딩, num_layer):
Figure pct00004
GenerateLayer(g= 제네시스, i = 개시자, e= 인코딩, last_used):
Figure pct00005
키 생성
GenerateKey(시드):
Figure pct00006
MutateKey(키, 엔트로피):
Figure pct00007
암호화
encrypt(메시지, 키, 인코딩, 코덱스):
Figure pct00008
복호화
decrypt(cipher_message, 키, 인코딩, 코덱스):
Figure pct00009
Figure pct00010
Figure pct00011
Figure pct00012
증빙 서류(written proof)
codexBase8_47b78f7505a0f8d135c9b76bb917fff2로 한다.
{"codex": [
#레이어 1
Figure pct00013
#레이어2
Figure pct00014
Figure pct00015
Figure pct00016
Figure pct00017
Figure pct00018
Figure pct00019
Figure pct00020
Figure pct00021
Figure pct00022
위에서 설명된 실시예들은 본 개시내용의 예시이도록 의도된 것이며, 여기에 첨부된 청구항들에 의해서만 정의되는 본 발명의 범위를 벗어나지 않으면서 본 기술분야의 통상의 기술자에 의해 변경들 및 수정들이 이루어질 수 있다.

Claims (20)

  1. N개의 2진 숫자(binary digit)의 베이스(base)로 이루어진 코덱스(codex) 및 인덱스를 생성하는 방법으로서,
    상기 인덱스는 코덱스의 생성을 위한 참조로서 사용되는 모든 조합의 정렬된 목록이고,
    상기 코덱스는 암호화 키를 사용하여 생성된 모든 조합의 무작위 목록을 포함하고;
    상기 코덱스는 고유하고, 통신 채널을 확립하기 위해 한 세트의 둘 이상의 사용자들 사이에 생성되는, 방법.
  2. 제1항에 있어서, N은 8, 16, 32 및 64 중 하나인, 방법.
  3. 제1항에 있어서, 상기 베이스 및 해시 함수를 이용하여, 각각 고유한 네임스페이스를 갖는 임의의 수의 코덱스가 생성될 수 있는, 방법.
  4. 제3항에 있어서, 상기 해시 함수는 MD5인, 방법.
  5. 제1항에 있어서, 상기 코덱스는 적어도 2개의 레이어를 포함하고, 각각의 레이어는 조합들의 무작위화된 상이한 세트를 포함하는, 방법.
  6. 제5항에 있어서, 상기 조합은 레이어** 베이스(layer** base)로서 계산되는, 방법.
  7. 제1 사용자와 제2 사용자 사이의 핸드셰이크를 위한 대칭 암호화 키를 생성하는 방법으로서,
    난수 생성기(random number generator)(RNG)에서:
    i) 상기 RNG에서 상기 제1 및 제2 사용자로부터 숫자들(digits)의 요청들을 수신하는 단계;
    ⅱ) 상기 RNG에서 수들(numbers)의 제1 및 제2 목록을 생성하는 단계;
    ⅲ) 상기 수들에 연관된 심볼들을 포함하는 참조 테이블을 사용하여 상기 제1 및 제2 목록을 구문분석하는 단계; 및
    ⅳ) 제1 및 제2 심볼 목록을 상기 제1 및 제2 사용자에게 각각 송신하는 단계
    를 포함하고, 상기 목록들은 채널 생성 요청 또는 수락으로서 송신될 새로운 고유 키를 생성하기 위해 결합되는, 방법.
  8. 제7항에 있어서, 상기 대칭 암호화 키는 2048개의 심볼을 포함하는, 방법.
  9. 제7항에 있어서, 상기 참조 테이블은 대문자들(majuscule letters), 소문자들(minuscule letters), 특수 캐릭터들, 및 수들로 이루어진 그룹으로부터 선택된 90개의 심볼을 포함하는, 방법.
  10. 제7항에 있어서, 상기 테이블은 더 쉬운 사용을 위해 인용 부호들(quotation marks)을 제외하는, 방법.
  11. 제10항에 있어서, 상기 인용 부호들은 작은 따옴표들(single quotation marks) 및 큰 따옴표들(double quotation marks) 중 하나인, 방법.
  12. 변경되는(mutating) 암호화 키 및 코덱스를 사용하여 데이터를 암호화하는 방법으로서,
    i) 변경-전 상태(pre-mutation state)의 상기 암호화 키의 값을 사용하여 오프셋을 생성하는 단계;
    ⅱ) 사전-암호화된 데이터의 처음 N 바이트의 임시 기록을 엔트로피 목록으로서 유지하는 단계;
    ⅲ) 상기 데이터를 암호화하는 단계;
    ⅳ) 상기 암호화 키에 대한 변경-후 상태(post-mutation state)에 대한 변경된 키 값을 생성하기 위해 상기 처음 N 바이트를 사용하여 상기 암호화 키 값을 변경하는 단계; 및
    ⅴ) 변경된 키 값을 현재 암호화 키로서 저장하는 단계
    를 포함하는, 방법.
  13. 제12항에 있어서, 상기 암호화 키의 값들을 변경하는 단계는 들어오는 바이트들을 사용하여 코덱스의 고유한 재셔플링(reshuffling)을 보장하는, 방법.
  14. 제13항에 있어서, 상기 암호화 키 및 코덱스의 소유자만이 상기 암호화 키의 값을 변경-후 상태로 변경할 수 있는, 방법.
  15. 제13항에 있어서, 유효 암호화 키 값은 한 번만 존재하는, 방법.
  16. 제12항에 있어서, 단계 12. i) 내지 12. v)를 반복하는 단계를 더 포함하고, 상기 암호화 키의 각각의 변경(mutation)은 상기 암호화 키의 이전 값에 의존하는, 방법.
  17. 제12항에 있어서, 상기 변경-전 상태 암호화 값의 상기 값의 무차별 대입 추측(brute force guessing)을 위한 시간 프레임은 상기 변경-후 상태까지만 지속되는, 방법.
  18. 제12항에 있어서, 키 변경은 의사 난수들을 사용하여 달성되는, 방법.
  19. 제12항에 있어서, 암호화 키들은 타원 곡선들에 기초하지 않는, 방법.
  20. 제14항에 있어서, 상기 코덱스 및 유효 암호화 키 상태가 알려져 있지 않다면, 상기 암호화 키를 해독하기 위해 무차별 대입만이 적용될 수 있는, 방법.
KR1020227027741A 2020-01-10 2021-01-11 대칭 비동기 생성 암호화 방법 Withdrawn KR20220137024A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202062959572P 2020-01-10 2020-01-10
US62/959,572 2020-01-10
PCT/CA2021/050018 WO2021138747A1 (en) 2020-01-10 2021-01-11 A method for symmetric asynchronous generative encryption

Publications (1)

Publication Number Publication Date
KR20220137024A true KR20220137024A (ko) 2022-10-11

Family

ID=76787390

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227027741A Withdrawn KR20220137024A (ko) 2020-01-10 2021-01-11 대칭 비동기 생성 암호화 방법

Country Status (7)

Country Link
US (1) US20230049768A1 (ko)
EP (1) EP4088270A1 (ko)
JP (1) JP2023509977A (ko)
KR (1) KR20220137024A (ko)
CA (1) CA3167530A1 (ko)
IL (1) IL294643A (ko)
WO (1) WO2021138747A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102617446B1 (ko) * 2023-01-30 2023-12-27 박성곤 인코더, 인코딩 방법 및 컴퓨터 판독가능 기록매체

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119402286B (zh) * 2024-11-30 2025-09-16 苏州元脑智能科技有限公司 一种数据传输方法、装置、设备及介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001514834A (ja) * 1997-03-10 2001-09-11 ガイ・エル・フィールダー 安全決定性暗号鍵発生システムおよび方法
IL139935A (en) * 1998-06-03 2005-06-19 Cryptography Res Inc Des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
WO2007092577A2 (en) * 2006-02-08 2007-08-16 Imagineer Software, Inc. A point-of-sale terminal transactions using mutating identifiers
JP5564434B2 (ja) * 2008-01-11 2014-07-30 オランジュ 確率的対称暗号化のための方法およびエンティティ
DE102008010789B4 (de) * 2008-02-22 2010-09-30 Fachhochschule Schmalkalden Verfahren zur zugriffs- und kommunikationsbezogenen Zufallsver- und Entschlüsselung von Daten
MY150357A (en) * 2010-11-04 2013-12-31 Mimos Berhad A method for linear transformation in substitution-permutation networks symmetric-key block cipher
US20170063530A1 (en) * 2013-08-13 2017-03-02 Michael Stephen Fiske NADO Cryptography with Key Generators
SE542460C2 (en) * 2014-10-09 2020-05-12 Kelisec Ab Improved security through authenticaton tokens
SE539602C2 (en) * 2014-10-09 2017-10-17 Kelisec Ab Generating a symmetric encryption key
FR3056789B1 (fr) * 2016-09-27 2018-09-21 Safran Identity & Security Procede de chiffrement ou de dechiffrement symetrique par bloc
WO2019165235A1 (en) * 2018-02-23 2019-08-29 Neji, Inc. Secure encrypted network tunnels using osi layer 2 protocol

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102617446B1 (ko) * 2023-01-30 2023-12-27 박성곤 인코더, 인코딩 방법 및 컴퓨터 판독가능 기록매체

Also Published As

Publication number Publication date
IL294643A (en) 2022-09-01
EP4088270A1 (en) 2022-11-16
CA3167530A1 (en) 2021-07-15
WO2021138747A1 (en) 2021-07-15
US20230049768A1 (en) 2023-02-16
JP2023509977A (ja) 2023-03-10

Similar Documents

Publication Publication Date Title
US11283633B2 (en) PUF-based key generation for cryptographic schemes
JP7620564B2 (ja) データを暗号化するためのコンピュータにより実施される方法及びシステム
US8254570B2 (en) Method and system for encryption of data
CN112532613A (zh) 一种基于区块链地址的隐蔽通信方法
RU2638639C1 (ru) Кодер, декодер и способ кодирования и шифрования входных данных
CN101262341A (zh) 一种会务系统中混合加密方法
CN116866029B (zh) 随机数加密数据传输方法、装置、计算机设备及存储介质
Kumar et al. A novel approach of symmetric key cryptography
Peev et al. A novel protocol-authentication algorithm ruling out a man-in-the middle attack in quantum cryptography
CN103117850B (zh) 一种基于随机序列数据库的密码系统的建立方法
US8458452B1 (en) System and method for encryption and decryption of data transferred between computer systems
KR20220137024A (ko) 대칭 비동기 생성 암호화 방법
CN115834126A (zh) 一种工程电子档案加密传输方法
CN110225028A (zh) 一种分布式防伪系统及其方法
Ramtri et al. Secure banking transactions using RSA and two fish algorithms
CN117314427A (zh) 一种基于区块链备注的高效隐蔽通信方法及通信系统
Meng et al. A multi-connection encryption algorithm applied in secure channel service system
Charru et al. Improved Cryptography Algorithm to Enhanced Data Security
CN120639517B (zh) 一种基于云原生架构的数据传输方法
CN111245564B (zh) 基于硬件保密电路的三重安全编码方法
Mohapatra et al. A novel security algorithm for text and image data using multi node cryptographic algorithm
Burke Cryptography
CN103746793A (zh) 一种数形文载加密和解密方法
Kumar et al. Encryption Algorithm using Matrix Manipulation
Swathi et al. Double Encryption using TEA and DNA

Legal Events

Date Code Title Description
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

PC1203 Withdrawal of no request for examination

St.27 status event code: N-1-6-B10-B12-nap-PC1203