KR20220079522A - 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들 - Google Patents
기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들 Download PDFInfo
- Publication number
- KR20220079522A KR20220079522A KR1020227007069A KR20227007069A KR20220079522A KR 20220079522 A KR20220079522 A KR 20220079522A KR 1020227007069 A KR1020227007069 A KR 1020227007069A KR 20227007069 A KR20227007069 A KR 20227007069A KR 20220079522 A KR20220079522 A KR 20220079522A
- Authority
- KR
- South Korea
- Prior art keywords
- multivector
- hansel
- encoded
- secret key
- geometric
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
기하 대수 및 헨젤 인코딩(즉, 유한 p-adic 산술)을 이용하여 데이터 메시지를 암호화/해독하는 방법들 및 시스템들이 개시된다. 보안 키(들), 메시지 데이터, 및 암호문은 모두, 기하 대수 멀티벡터들로서 표현되며, 여기서 개개의 멀티벡터의 계수들의 합은 대응하는 메시지 또는 보안 키의 숫자 값과 같다. 메시지 및 보안 키 멀티벡터들과의 다양한 기하 대수 연산들은 메시지 데이터를 암호화/해독하는 역할을 한다. 보안 키 및 메시지 멀티벡터들의 각각의 계수는 추가로 헨젤 인코딩되어 암호화된 값들에 대한 추가적인 혼동/확산을 제공한다. 기하 대수 연산들은, 암호문 멀티벡터들의 덧셈, 뺄셈, 곱셈 및 나눗셈에 대한 동형 연산들을 허용하므로, 결과 암호문은, 해독될 때, 암호화되지 않은 값들을 이용하는 대응하는 수학적 연산들과 동일하다.
Description
관련 출원의 상호참조
본 출원은, 다음과 같은 미국 가출원들이 개시하고 교시하는 모든 내용이 참조에 의해 본 명세서에 포함되는, 2019년 8월 1일 출원된 발명의 명칭이 "Fully Homomorphic Encryption Over Geometric Product Spaces"인 가출원 번호 제62/881,785호; 2019년 8월 1일 출원된 발명의 명칭이 "Fully Homomorphic Key Update and Key Exchange Over Exterior Product Spaces for Cloud Computing Applications"인 가출원 번호 제62/881,793호; 2019년 8월 7일 출원된 발명의 명칭이 "A New Approach Towards Fully Homomorphic Encryption Over Geometric Algebra"인 가출원 번호 제62/883,988호; 및 2019년 8월 9일 출원된 발명의 명칭이 "Homomorphic Image Processing Over Geometric Product Spaces and Finite P-Adic Arithmetic"인 가출원 번호 제62/885,056호에 기초하여 그 우선권 혜택을 주장한다.
지난 수십 년 동안, 개인용 컴퓨터, 및 핸드헬드 디바이스 및 스마트폰 등의 기타 소비자 휴대형 컴퓨팅 디바이스가 일반 대중 사이에서 아주 흔하게 되었다. 개인용 컴퓨터 및 기타의 컴퓨팅 디바이스의 확산이 널리 보급됨에 따라, 다양한 전자 네트워킹 통신 시스템을 통해 상이한 컴퓨터들/컴퓨팅 디바이스들 사이의 상호접속된 통신에 의해 컴퓨터 및 기타의 컴퓨팅 디바이스의 유용성이 증가되었다. 공개적으로 액세스가능한 인터넷의 출현과 인터넷 상의 컴퓨터 및/또는 기타의 컴퓨팅 디바이스들 사이의 공통 통신을 위한 월드 와이드 웹(World Wide Web, WWW)의 확립과 함께, 개인 식별 및 금융 정보가 공개적으로 액세스가능한 인터넷을 통해 전송되는 것이 흔하게 되었다. 개인 정보가 그 개인 정보에 관여하도록 의도되지 않은 당사자들에 의해 액세스되지 않도록 보장하기 위해, 인터넷을 통해 전송되는 개인 데이터에는 다양한 암호화 기술이 적용되어 왔다. 공개적으로 액세스가능한 인터넷을 비롯한, 네트워킹 기술을 통해 데이터 저장소가 액세스가능해짐에 따라, 민감한 데이터를 암호화된 포멧으로 저장하는 것이 역시 현명하게 되었다.
현대의 암호화는 양의 정수들 또는 2진 비트들을 조작하는 수학적 기법들을 채용한다. RSA(Rivest-Shamir-Adleman) 등의 비대칭 암호화는, 예측적으로 인수화하기에 어렵고 암호화 키의 크기가 계속 증가함에 따라 더욱 어려워질 수 있는 수치 이론 단방향 함수들에 의존한다. DES(Data Encryption Standard) 및 AES(Advanced Encryption Standard) 등의 대칭 암호화는, 레지스터들 내에서 비트 조작들을 이용하여 암호문을 섞어 "확산(diffusion)"을 증가시킬 뿐만 아니라 공유 키와의 레지스터-기반 동작들을 증가시켜 "혼동(confusion)"을 증가시킨다. 확산 및 혼동은, 전송되는 데이터 페이로드에 대한 통계적 엔트로피에서의 증가를 위한 수단들이다. 암호화에서의 확산과 혼동의 개념은, 일반적으로 1940년대 Claude Shannon에 의해 최초로 확인되었다고 여겨진다. 확산은 일반적으로 암호화된(암호문) 데이터로부터 암호화되지 않은(평문) 데이터를 생성하는 수학적 프로세스를 복잡화하는 것으로 여겨지므로, 암호화되지 않은(평문) 데이터의 각각의 조각을 암호화된(암호문) 데이터의 수 개의 조각들에 걸쳐 확산시킴으로써 암호화 프로세스의 암호화 키를 알아내기 어렵게 한다. 결과적으로, 높은 정도의 확산을 갖는 암호화 시스템은 전형적으로 암호화되지 않은(평문) 데이터 내의 단일 문자의 변경을 위해 암호화된(암호문) 데이터의 수 개의 문자를 변경하여, 공격자가 암호화되지 않은(평문) 데이터에서의 변경을 식별하는 것을 어렵게 한다. 혼동은 일반적으로 암호화되지 않은(평문) 데이터와 암호화된(암호문) 데이터 사이의 관계를 모호하게 만드는 것으로 여겨진다. 따라서, 높은 정도의 혼동을 갖는 암호화 시스템은, 공격자가 (공개 표준들 RSA, DES 및/또는 AES 등의) 암호화 방법의 동작을 알고 있는 경우에도 암호화 키를 추론하는 것은 여전히 어렵게 하는 방식으로 암호화되지 않은(평문) 데이터를 암호화된(암호문) 데이터로 대폭 변경하는 프로세스를 수반한다.
동형 암호화(Homomorphic Encryption)는, 암호화된 결과를 생성하는 암호문(cipher text)의 해독없이 암호화된 상태의 암호문에 관한 계산 수행을 허용하고, 해독시 암호화되지 않은 평문에 관해 수행된 연산 결과와 일치하는, 암호화의 한 형태이다.
동형(homomorphism)이라는 단어는 고대 그리스어에서 유래했다: (homos)는 "같은"을 의미하고 (morphe)는 "형태" 또는 "형상"을 의미한다. 동형은 사용 분야에 따라 상이한 정의들을 가질 수 있다. 예를 들어, 수학에서는, 동형은 제2 세트로의 제1 세트의 변환으로서 간주될 수 있고, 여기서, 제1 세트의 요소들 사이의 관계는 제2 세트의 요소들의 관계에서 보존된다.
더 구체적으로, 추상 대수의 경우, 동형이라는 용어는, 그룹들, 고리들, 또는 벡터 공간들 등의, 2개의 대수 구조들 사이의 구조 보존형 맵일 수 있다. 이소모피즘(Isomorphisms), 오토모피즘(automorphisms), 및 엔도모피즘(endomorphisms)은 전형적으로 동형의 특별한 유형들인 것으로 간주된다. 동형의 다른 더 구체적인 정의들 중에서, 대수 동형은 2개의 세트들 사이의 대수 구조를 보존하는 동형으로서 간주될 수 있다.
본 발명의 한 실시예는, 적어도 2차원인 차원 크기(N)를 공유하는 기하 대수(Geometric Algebra) 멀티벡터들의 이용을 포함하는 소스 컴퓨팅 디바이스로부터 목적지 컴퓨팅 디바이스로의 숫자 메시지 데이터()의 암호화된 전송을 위한 방법 ― 상기 기하 대수 멀티벡터들의 각각에 대한 계수들의 수는 상기 차원 크기(N)의 각각의 증분적 증가에 대해 2의 인자(2 N )만큼 증가됨 ― 을 포함할 수 있고, 상기 방법은: 비밀 키 컴퓨팅 디바이스에 의해 랜덤 소수로서 적어도 하나의 비밀 소수(p)를 생성하는 단계; 상기 비밀 키 컴퓨팅 디바이스에 의해 상기 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산하는 단계; 상기 비밀 키 컴퓨팅 디바이스에 의해 난수로서 적어도 하나의 비밀 키 값(k)을 생성하는 단계; 상기 적어도 하나의 비밀 키 멀티벡터의 계수 값들의 합이 상기 적어도 하나의 비밀 키 값(k)과 같도록 상기 비밀 키 컴퓨팅 디바이스에 의해 상기 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터를 생성하는 단계; 적어도 상기 적어도 하나의 비밀 키 멀티벡터의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초하여 헨젤(헨젤) 인코딩 계산들의 함수로서 상기 적어도 하나의 비밀 키 멀티벡터의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 적어도 하나의 비밀 키 멀티벡터의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 상기 비밀 키 컴퓨팅 디바이스에 의해 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()를 생성하는 단계; 상기 비밀 키 컴퓨팅 디바이스에 의해, 상기 적어도 하나의 비밀 소수(p), 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(), 및 상기 공개 모듈러스(q)를 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스와 공유하는 단계 ― 상기 적어도 하나의 비밀 소수(p) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 상기 공유는, 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스에 대한 것이지만, 암호화되지 않은 데이터에 액세스하도록 의도되지 않은 다른 디바이스에 대해서는 비밀로 유지됨 ―; 상기 메시지 멀티벡터()의 계수 값들의 합이 상기 숫자 메시지 데이터()와 동일하도록 상기 소스 컴퓨팅 디바이스에 의해 상기 숫자 메시지 데이터()를 나타내는 메시지 멀티벡터()를 생성하는 단계; 상기 소스 컴퓨팅 디바이스에 의해, 상기 메시지 멀티벡터()에 관해 동형 멀티벡터()와 기하 대수 기하 곱 연산을 수행함으로써 상기 메시지 멀티벡터()를 동형으로 만드는 단계 ― 상기 동형 멀티벡터()는 기하 대수 기하 곱 결과가 동형이되도록 허용하는 멱등 멀티벡터(idempotent multivector)임 ―; 상기 소스 컴퓨팅 디바이스에 의해, 적어도 상기 메시지 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 상기 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 메시지 멀티벡터()의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 헨젤 인코딩된 메시지 멀티벡터()를 생성하는 단계; 상기 소스 컴퓨팅 디바이스에 의해, 상기 헨젤 인코딩된 메시지 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터()를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터()를 암호화하는 단계; 상기 소스 컴퓨팅 디바이스에 의해, 상기 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 단계; 상기 목적지 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터()를 수신하는 단계; 상기 목적지 컴퓨팅 디바이스에 의해, 상기 암호문 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 상기 암호문 멀티벡터()를 해독하여 상기 헨젤 인코딩된 메시지 멀티벡터()로 되돌리는 단계; 상기 목적지 컴퓨팅 디바이스에 의해, 적어도 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩하고 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 상기 디코딩된 헨젤 코드 표현들을 상기 메시지 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 상기 메시지 멀티벡터()를 생성하는 단계; 및 상기 목적지 컴퓨팅 디바이스에 의해, 상기 메시지 멀티벡터()의 계수들을 합산함으로써 상기 숫자 메시지 데이터(m)를 생성하는 단계를 포함한다.
본 발명의 한 실시예는 상기 패러그래프의 방법을 더 포함할 수 있고, 여기서, 상기 소스 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 상기 프로세스는 대신에 상기 암호문 멀티벡터()를 중간 컴퓨팅 시스템에 전송하고; 제1항의 방법은, 상기 중간 컴퓨팅 시스템에 의해 상기 암호문 멀티벡터()를 수신하는 단계; 상기 중간 컴퓨팅 시스템에 의해, 결과적으로 동형 결과 암호문 멀티벡터()가 되는, 상기 중간 컴퓨팅 시스템에 저장된 적어도 하나의 저장된 암호문 멀티벡터()와의, 상기 암호문 멀티벡터()의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산의 함수로서, 상기 동형 결과 암호문 멀티벡터()를 생성하는 단계 ― 상기 적어도 하나의 저장된 암호문 멀티벡터()는 상기 암호문 멀티벡터()를 암호화하는데 이용된 것과 균등한 암호화 파라미터들 및 프로세스들을 이용하여 암호화됨 ―; 및 상기 중간 컴퓨팅 디바이스에 의해 상기 동형 결과 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 단계를 더 포함하고, 상기 목적지 컴퓨팅 디바이스는, 수치 결과(r)가 상기 암호화되지 않은 숫자 메시지(m)와 상기 적어도 하나의 저장된 암호문 멀티벡터()에 대응하는 적어도 하나의 암호화되지 않은 값의 균등한 적어도 하나의 덧셈, 뺄셈, 곱셈 또는 나눗셈과 같도록 상기 수치 결과 데이터(r)를 획득하게끔 상기 암호문 멀티벡터() 대신에 상기 동형 결과 암호문 멀티벡터()에서 시작하여 계수들을 해독, 디코딩, 및 합산한다.
본 발명의 한 실시예는, 암호문 멀티벡터()와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터()를 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 업데이트하는 방법을 더 포함할 수 있고, 이 방법은: 키 업데이트 컴퓨터 시스템에 의해, 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()와 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 곱 연산으로서 제1 공개 토큰 멀티벡터()를 생성하는 단계; 상기 키 업데이트 컴퓨터 시스템에 의해, 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()와 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 곱 연산으로서 제2 공개 토큰 멀티벡터()를 생성하는 단계; 및 상기 키 업데이트 컴퓨터 시스템에 의해, 상기 제1 공개 토큰 멀티벡터(), 상기 암호문 멀티벡터(), 및 상기 제2 공개 토큰 멀티벡터()의 기하 곱 연산()의 결과로서 상기 암호문 멀티벡터()를 업데이트하되, 상기 암호문 멀티벡터()와 연관된 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()가 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 업데이트되게 하는 단계를 포함한다.
본 발명의 한 실시예는, 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이에서 헨젤 인코딩된 비밀 키 멀티벡터()를 교환하기 위한 방법을 더 포함할 수 있고, 이 방법은: 상기 제1 컴퓨터 시스템에 의해, 제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터()를 생성하는 단계; 상기 제1 컴퓨터 시스템에 의해, 제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터()를 생성하는 단계; 상기 제2 컴퓨터 시스템에 의해, 제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터()를 생성하는 단계; 상기 제2 컴퓨터 시스템에 의해, 제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 생성하는 단계; 상기 제2 컴퓨터 시스템에 의해, 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 상기 제1 컴퓨터 시스템에 전송하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 공개 식별 멀티벡터() 및 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터()의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터()를 생성하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 공개 통신 식별자 멀티벡터()를 상기 제2 컴퓨터 시스템에 전송하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터()와 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터()를 생성하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 제1 서브키 멀티벡터()를 상기 제2 컴퓨터 시스템에 전송하는 단계; 상기 제2 컴퓨터 시스템에 의해, 상기 공개 통신 식별자 멀티벡터()와 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터()의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터()를 생성하는 단계; 상기 제2 컴퓨터 시스템에 의해, 상기 제2 서브키 멀티벡터()를 상기 제1 컴퓨터 시스템에 전송하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(), 상기 제2 서브키 멀티벡터(), 및 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산하는 단계; 및 상기 제1 컴퓨터 시스템과 상기 제2 컴퓨터 시스템 사이에서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 직접 전송하지 않고 이제 상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템 양쪽 모두가 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 별개로 계산하도록, 상기 제1 서브키 멀티벡터(), 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(), 및 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서, 상기 제2 컴퓨터 시스템에 의해, 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산하는 단계를 포함한다.
본 발명의 한 실시예는, 적어도 2차원인 차원 크기(N)를 공유하는 기하 대수 멀티벡터들의 이용을 포함하는 소스 컴퓨팅 디바이스로부터 목적지 컴퓨팅 디바이스로의 숫자 메시지 데이터()의 암호화된 전송을 위한 암호화 시스템 ― 상기 기하 대수 멀티벡터들의 각각에 대한 계수들의 수는 상기 차원 크기(N)의 각각의 증분적 증가에 대해 2의 인자(2 N )만큼 증가됨 ― 을 더 포함할 수 있고, 상기 암호화 시스템은: 상기 비밀 키 컴퓨팅 디바이스, 상기 소스 컴퓨팅 디바이스, 및 상기 목적지 컴퓨팅 디바이스를 포함하고, 상기 비밀 키 컴퓨팅 디바이스는, 랜덤 소수로서 적어도 하나의 비밀 소수(p)를 생성하는 비밀 소수 생성 서브시스템; 상기 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산하는 공개 모듈러스 계산 서브시스템; 난수로서 적어도 하나의 비밀 키 값(k)을 생성하는 비밀 키 값 생성 서브시스템; 상기 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터()를 생성하되, 상기 적어도 하나의 비밀 키 멀티벡터()의 계수 값들의 합이 상기 적어도 하나의 비밀 키 값(k)과 같도록 생성하는 비밀 키 멀티벡터 생성 서브시스템; 적어도 상기 적어도 하나의 비밀 키 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초하여 헨젤 인코딩 계산들의 함수로서 상기 적어도 하나의 비밀 키 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 적어도 하나의 비밀 키 멀티벡터()의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()를 생성하는 헨젤 인코딩된 비밀 키 멀티벡터 생성 서브시스템; 상기 적어도 하나의 비밀 소수(p), 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(), 및 상기 공개 모듈러스(q)를 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스와 공유하기 위한 키 정보 공유 서브시스템 ― 상기 적어도 하나의 비밀 소수(p) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 상기 공유는, 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스에 대한 것이지만, 암호화되지 않은 데이터에 액세스하도록 의도되지 않은 다른 디바이스에 대해서는 비밀로 유지됨 ―;을 더 포함하고, 상기 소스 컴퓨팅 디바이스는, 상기 메시지 멀티벡터()의 계수 값들의 합이 상기 숫자 메시지 데이터()와 동일하도록 상기 숫자 메시지 데이터()를 나타내는 메시지 멀티벡터()를 생성하는 메시지 멀티벡터 생성 서브시스템; 상기 메시지 멀티벡터()에 관해 동형 멀티벡터()와 기하 대수 기하 곱 연산을 수행함으로써 상기 메시지 멀티벡터()를 동형으로 만드는 메시지 멀티벡터 동형화 서브시스템 ― 상기 동형 멀티벡터()는 기하 대수 기하 곱 결과가 동형이되도록 허용하는 멱등 멀티벡터(idempotent multivector)임 ―; 적어도 상기 메시지 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 상기 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 메시지 멀티벡터()의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 헨젤 인코딩된 메시지 멀티벡터()를 생성하는 헨젤 인코딩된 메시지 멀티벡터 생성 서브시스템; 상기 헨젤 인코딩된 메시지 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터()를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터()를 암호화하는 기하 곱 암호화 서브시스템; 상기 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 암호문 멀티벡터 전송 서브시스템을 더 포함하고; 상기 목적지 컴퓨팅 디바이스는, 상기 암호문 멀티벡터()를 수신하는 암호문 멀티벡터 수신 서브시스템; 상기 암호문 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 상기 암호문 멀티벡터()를 해독하여 상기 헨젤 인코딩된 메시지 멀티벡터()로 되돌리는 기하 곱 해독 서브시스템; 적어도 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩하고 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 상기 디코딩된 헨젤 코드 표현들을 상기 메시지 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 상기 메시지 멀티벡터()를 생성하는 메시지 멀티벡터 복원 서브시스템; 및 상기 메시지 멀티벡터()의 계수들을 합산함으로써 상기 숫자 메시지 데이터(m)를 생성하는 숫자 메시지 데이터 복원 서브시스템을 더 포함한다.
본 발명의 한 실시예는 상기 패러그래프의 암호화 시스템을 더 포함할 수 있고, 여기서, 상기 소스 컴퓨팅 디바이스의 상기 암호문 멀티벡터 전송 서브시스템은 상기 암호문 멀티벡터()를 상기 목적지 컴퓨팅 디바이스 대신에 중간 컴퓨팅 시스템에 전송하고; 상기 중간 컴퓨팅 시스템을 더 포함하며, 상기 중간 컴퓨팅 시스템은, 상기 암호문 멀티벡터()를 수신하는 암호문 멀티벡터 수신 중간 서브시스템; 결과적으로 동형 결과 암호문 멀티벡터()가 되는, 상기 중간 컴퓨팅 시스템에 저장된 적어도 하나의 저장된 암호문 멀티벡터()와의, 상기 암호문 멀티벡터()의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산의 함수로서, 상기 동형 결과 암호문 멀티벡터()를 생성하는 동형 계산 서브시스템 ― 상기 적어도 하나의 저장된 암호문 멀티벡터()는 상기 암호문 멀티벡터()를 암호화하는데 이용된 것과 균등한 암호화 파라미터들 및 프로세스들을 이용하여 암호화됨 ―; 및 상기 동형 결과 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 결과 암호문 멀티벡터 전송 서브시스템을 더 포함하고, 상기 목적지 컴퓨팅 디바이스는, 수치 결과(r)가 상기 암호화되지 않은 숫자 메시지(m)와 상기 적어도 하나의 저장된 암호문 멀티벡터()에 대응하는 적어도 하나의 암호화되지 않은 값의 균등한 적어도 하나의 덧셈, 뺄셈, 곱셈 또는 나눗셈과 같도록 상기 수치 결과 데이터(r)를 획득하게끔 상기 암호문 멀티벡터() 대신에 상기 동형 결과 암호문 멀티벡터()에서 시작하여 계수들을 해독, 디코딩, 및 합산한다.
본 발명의 한 실시예는, 암호문 멀티벡터()와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터()를 연관된 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 업데이트하는 키 업데이트 시스템을 더 포함할 수 있고, 이 키 업데이트 시스템은: 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()와 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 곱 연산으로서 제1 공개 토큰 멀티벡터()를 생성하는 제1 공개 토큰 생성 서브시스템; 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()와 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 곱 연산으로서 제2 공개 토큰 멀티벡터()를 생성하는 제2 공개 토큰 생성 서브시스템; 및 상기 제1 공개 토큰 멀티벡터(), 상기 암호문 멀티벡터(), 및 상기 제2 공개 토큰 멀티벡터()의 기하 곱 연산()의 결과로서 상기 암호문 멀티벡터()를 업데이트하되, 상기 암호문 멀티벡터()와 연관된 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()가 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 업데이트되게끔, 업데이트하는 암호문 멀티벡터 키 업데이트 서브시스템을 포함한다.
본 발명의 한 실시예는, 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이에서 헨젤 인코딩된 비밀 키 멀티벡터()를 교환하는 키 교환 시스템을 더 포함할 수 있고, 이 키 교환 시스템: 상기 제1 컴퓨터 시스템, 및 상기 제2 컴퓨터 시스템을 포함하고, 상기 제1 컴퓨터 시스템은, 제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터()를 생성하는 제1 개인 식별 멀티벡터 생성 서브시스템; 제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터()를 생성하는 제1 공개 식별 멀티벡터 생성 서브시스템; 상기 제1 헨젤 인코딩된 공개 식별 멀티벡터() 및 제2 헨젤 인코딩된 공개 식별 멀티벡터()의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터()를 생성하는 공개 통신 식별자 멀티벡터 생성 서브시스템; 상기 공개 통신 식별자 멀티벡터()를 상기 제2 컴퓨터 시스템에 전송하는 공개 통신 식별자 전송 서브시스템; 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터()와 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터()를 생성하는 제1 서브키 멀티벡터 생성 서브시스템; 상기 제1 서브키 멀티벡터()를 상기 제2 컴퓨터 시스템에 전송하는 제1 서브키 멀티벡터 전송 서브시스템; 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(), 상기 제2 서브키 멀티벡터(), 및 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산하는 제1 컴퓨터 비밀 키 멀티벡터 계산 서브시스템을 더 포함하고; 상기 제2 컴퓨터 시스템은, 제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터()를 생성하는 제2 개인 식별 멀티벡터 생성 서브시스템; 제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 생성하는 제2 공개 식별 멀티벡터 생성 서브시스템; 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 상기 제1 컴퓨터 시스템에 전송하는 제2 공개 식별 멀티벡터 전송 서브시스템; 상기 공개 통신 식별자 멀티벡터()와 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터()의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터()를 생성하는 제2 서브키 멀티벡터 생성 서브시스템; 상기 제2 서브키 멀티벡터()를 상기 제1 컴퓨터 시스템에 전송하는 제2 서브키 멀티벡터 전송 서브시스템; 상기 제1 컴퓨터 시스템과 상기 제2 컴퓨터 시스템 사이에서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 직접 전송하지 않고 이제 상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템 양쪽 모두가 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 별개로 계산하도록, 상기 제1 서브키 멀티벡터(), 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(), 및 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산하는 제2 컴퓨터 비밀 키 멀티벡터 계산 서브시스템을 더 포함한다.
도면에서,
도 1은 암호화된 데이터 전송 실시예를 위한 하드웨어 구현의 블록도이다.
도 2a는 암호화된 데이터 전송 실시예를 위한 비밀 키 컴퓨팅 디바이스 동작의 플로차트이다.
도 2b는 암호화된 데이터 전송 실시예를 위한 소스 컴퓨팅 디바이스 동작의 플로차트이다.
도 2c는 암호화된 데이터 전송 실시예를 위한 목적지 컴퓨팅 디바이스 동작의 플로차트이다.
도 3은 동형 암호화(homomorphic encryption) 실시예를 위한 하드웨어 구현의 블록도이다.
도 4는 동형 암호화 실시예를 위한 중간 컴퓨팅 시스템 동작의 플로차트이다.
도 5는 암호화 키 업데이트 실시예를 위한 하드웨어 구현의 블록도이다.
도 6은 한 실시예에 대한 키 업데이트 컴퓨터 시스템 동작의 플로차트이다.
도 7은 암호화 키 교환 실시예를 위한 하드웨어 구현의 블록도이다.
도 8은 한 실시예에 대한 키 교환 시스템 동작의 플로차트이다.
도 1은 암호화된 데이터 전송 실시예를 위한 하드웨어 구현의 블록도이다.
도 2a는 암호화된 데이터 전송 실시예를 위한 비밀 키 컴퓨팅 디바이스 동작의 플로차트이다.
도 2b는 암호화된 데이터 전송 실시예를 위한 소스 컴퓨팅 디바이스 동작의 플로차트이다.
도 2c는 암호화된 데이터 전송 실시예를 위한 목적지 컴퓨팅 디바이스 동작의 플로차트이다.
도 3은 동형 암호화(homomorphic encryption) 실시예를 위한 하드웨어 구현의 블록도이다.
도 4는 동형 암호화 실시예를 위한 중간 컴퓨팅 시스템 동작의 플로차트이다.
도 5는 암호화 키 업데이트 실시예를 위한 하드웨어 구현의 블록도이다.
도 6은 한 실시예에 대한 키 업데이트 컴퓨터 시스템 동작의 플로차트이다.
도 7은 암호화 키 교환 실시예를 위한 하드웨어 구현의 블록도이다.
도 8은 한 실시예에 대한 키 교환 시스템 동작의 플로차트이다.
동형 암호화는, 암호화된 결과를 생성하는 암호문(cipher text)의 해독없이 암호화된 상태의 암호문에 관한 계산 수행을 허용하고, 해독시 암호화되지 않은 평문에 관해 수행된 연산 결과와 일치하는, 암호화의 한 형태이다.
동형 암호화의 본질적인 목적은, 계산을 수행하기 위해 데이터를 해독하지 않고 암호화된 데이터에 관한 계산을 허용하는 것이다. 이러한 방식으로, 암호화된 데이터는 원하는 계산을 위해 암호화된 데이터가 처리되는 동안 기밀유지되고 보안될 수 있다. 따라서, 신뢰할 수 없는 환경에 있는 암호화된(즉, 기밀유지되고 보안된) 데이터에 관해 유용한 작업들이 달성될 수 있다. 분산형 계산 및 이기종 네트워킹의 세계에서, 암호화된 데이터에 관해 계산들을 수행하는 능력은 매우 바람직한 능력일 수 있다. 따라서, 암호화된 데이터에 관해 계산하기 위한 일반적인 방법을 발견하는 것은 암호화에 있어 매우 바람직한 목표일 것이다.
동형 암호화 응용 이후에 가장 많이 찾는 것은 클라우드 컴퓨팅일 수 있다. 클라우드에 저장된 데이터는 전형적으로 암호화되지 않으며, 클라우드에 저장된 암호화되지 않은 데이터의 침범은 데이터 보안에 대한 가장 큰 위협인 것으로 Cloud Security Alliance에 의해 평가된다. 클라우드에 저장된 데이터를 암호화하는 것은, 침범으로 인해 데이터가 손상될 수 있는 위협을 완화할 수 있지만, 원격 클라이언트들(데이터 소유자들)은, 데이터가 클라우드에 유지되어 동안 클라우드에 저장된 데이터에 관해 연산(즉, 더하기, 곱하기 등)을 수행할 수 없을 것이다. 클라우드에 저장된 암호화된 데이터에 관한 연산들을 수행하기 위해, 암호화된 클라우드에 저장된 데이터를 다운로드하고, 데이터를 해독하고, 데이터에 관한 원하는 모든 연산들을 로컬로 수행하고, 결과 데이터를 암호화하여 결과 데이터를 다시 클라우드에 전송하는 것이 필요할 것이다. 대안으로서, 클라우드 서비스 제공자가 계산들을 수행하기를 사용자가 원하는 경우, 클라우드는 사용자의 암호화 키들에 대한 액세스를 요구할 것이다. 보안 키들에 액세스할 수 있는 엔티티들이 많을수록 보안 키들이 침범되거나 불량한 제공자에 의해 도난당할 가능성이 본질적으로 증가하기 때문에 사용자의 보안 키에 대한 클라우드 액세스를 제공하는 것은 점점 바람직하지 않게 되고 있다. 동형 암호화는, 클라우드가 해독없이 및 클라이언트의 보안 키들에 액세스하지 않고도, 클라이언트 데이터에 관해 연산하는 것을 허용할 것이다.
한 실시예는, 유리하게도 기하 대수를 이용하여, 중간 컴퓨팅 시스템(예를 들어, 현재 일반적으로는, 클라우드 또는 클라우드 컴퓨팅이라고 지칭되는, 광범위-기반 컴퓨팅 시스템)을 통해 전송되고, 아마도 이에 의해 연산들이 수행되는 숫자 메시지들의 암호화 및 해독을 제공할 수 있다. 다양한 실시예는, 기하 대수 암호화 및 해독 프로세스를 수행하기 위해 생성된 멀티벡터들의 각각의 계수를 인코딩하는 헨젤 인코딩함으로써 추가적인 보안 암호화, 혼동(confusion) 및 확산(diffusion)을 제공한다. 암호화 및 해독을 제공하기 위한 기하 대수의 이용은 한 실시예의 동형 연산들에 대한 수학적 기초를 제공한다. 계수들의 추가적인 헨젤 인코딩은, 기하 대수 암호화 및 해독 프로세스들의 고유한 동형 양태들에 영향을 미치지 않는다.
기하 대수는, 물리적 세계에서 객체들의 물리적 상호작용들을 수학적으로 표현하기 위한 정황에서 벡터들 및 다른 객체들의 기하학적 상호작용을 기술하는 수학의 한 분야이다. 본 명세서에서 사용될 때, 이 수학 분야는, Geometric Algebra, Conformal Geometric Algebra 및 Clifford Algebra(여기서는 집합적으로 "기하 대수(Geometric Algebra)"라고 함)를 포괄한다. 일반적으로, 기하 대수는, 본 명세서에 개시된 다양한 실시예들의 많은 피처들을 용이화하는, 기하 곱, 역 및 항등 등의 연산들을 정의한다. 또한, 기하 대수는 멀티벡터의 "페이로드"로의 데이터의 조직화 및 표현을 허용하고, 여기서, 페이로드 내의 데이터는, 예를 들어, 평문, 암호문을, 또는 식별 서명들을 나타낼 수 있다. 결과적으로, 다양한 실시예들은 기하 대수 속성들을 유익하게 이용하여 비교적 계산적으로 간단한 방식으로, 암호화, 해독, 및 중간 동형 연산들을 제공하면서, 움직이는 데이터 및 정지 데이터(예를 들어, Cloud에 저장된 데이터) 양쪽 모두에 대한 견고한 보안을 여전히 제공한다. 다양한 실시예들은, 다양한 실시예들의 동형 속성들에 영향을 미치지 않고 이루어질 수 있는, 다양한 멀티벡터들의 계수들의 헨젤 인코딩을 통합함으로써 암호화의 보안을 더욱 강화한다.
기하 대수를 이용하여 메시지들을 암호화 및 해독하는 한 실시예는, 기하 대수의 고유한 대수 동형 속성(algebraic homomorphic property)들을 활용하여, 중간 컴퓨팅 시스템이 산술 연산들을 수행하기 전에 암호화된 메시지들을 해독할 필요없이, 중간 컴퓨팅 시스템에 의해 취급되는 암호화된 메시지들에 관한 산술 연산들을 허용할 수 있다. 따라서, 중간 컴퓨팅 시스템은, 산술 연산들을 적절하게 수행하기 위해 암호화/해독 프로세스들의 비밀 보안 키들 중 임의의 것에 관해서 어떠한 정보도 알 필요가 없다. 중간 컴퓨팅 시스템에 의해 수행된 산술 연산들의 암호화된 결과들은, 목적지 컴퓨팅 디바이스에서 해독될 때, 마치 암호화되지 않은 평문 메시지들에 관해 연산들이 수행된 결과들과 같은, 동일한 연산들과 동등한 결과들을 생성한다. 다양한 실시예들은, 다양한 실시예들에 의해 활용되는 기하 대수의 고유한 대수 동형 속성들로 인해, 암호문(즉, 중간/클라우드 컴퓨터 시스템에 전송/저장된 암호화된 메시지들)의 무제한 곱셈 및 덧셈을 허용하는 암호시스템을 제공한다. 따라서, 한 실시예는, 동형 속성들을 달성하기 위해, "부트스트래핑"(예를 들어, 암호문과 연관된 노이즈를 감소시키기 위한 재귀적 연산 수행) 등의 추가적인 방법들을 이용할 필요없이, 대수적 동형의 곱(product of algebraic homomorphism)으로서 동형 속성들을 제공할 수 있다.
암호화된 데이터 값들은 특정한 산술 연산들이 사용자에 의해 요구될 때까지 중간 컴퓨팅 시스템에 저장될 수 있고, 그 다음 중간 컴퓨팅 시스템은 중간 컴퓨팅 시스템에 저장된 암호문 데이터를 이용하여 원하는 산술 연산들을 수행할 수 있다. 마찬가지로, 암호화된 데이터 값들은 대상 암호화된 데이터 값들이 중간 컴퓨팅 시스템에 의해 수신되자마자 중간 컴퓨팅 시스템에 의해 즉시 연산될 수 있다. 그러나, 본 기술분야의 통상의 기술자라면, 중간 컴퓨팅 시스템에서 암호화된 데이터 값들을 수신하는 프로세스는, 암호화된 데이터 값들을 중간 컴퓨팅 시스템에 저장하는 것, 심지어, 즉시 이용되고 소거되는 랜덤 액세스 메모리(RAM) 위치 또는 중간 컴퓨팅 시스템의 계산 서브시스템의 연산 레지스터 위치에 잠시만이라도 저장하는 것을 고유하게 포함한다는 것을 인식할 것이다.
다양한 실시예들은 기능 블록들로 구성될 수 있고, 그 각각은, 범위, 능력 및 보안에 대한 목적들에 따라 이하에서 더 상세하게 설명되는 바와 같이 조정될 수 있다. 이하의 절들에서는 이들 기능 블록들에 대한 수학적 및 수치적 설명을 제공한다.
다양한 실시예들의 중심 피처는, 암호화에 있어서 이전에는 이용되지 않았던 수학 분야인, 기하 대수의 이용이다. 본 명세서에서 사용될 때, Geometric Algebra는, Geometric Algebra, Conformal Geometric Algebra 및 Clifford Algebra(집합적으로 여기서는, "기하 대수")을 포괄하는 수학 분야이다. 기하 대수학은 멀티벡터의 "페이로드" 내로의 데이터의 조직화 및 표현을 허용하며, 여기서, 데이터는, 예를 들어, 평문, 암호문, 또는 서명들일 수 있다. 기하 대수는, 다양한 실시예들의 암호화/해독 계산을 가능케하는, 기하 곱, 역 및 항등 등의 연산들을 정의한다.
멀티벡터들은, 단순히, n차원 벡터까지의 스칼라, 벡터, 이중벡터(bi-vector) 등의 가산적 조합이다. 그러나, 단위 벡터들은, 쿼테니언의 대수적 구조(Hamilton) 및 비가환 대수(non-commutative algebra)(Grassman)를 따른다. 이들 2가지 유형의 대수는, Clifford가 실시예들의 "프리미티브" 기능들 중 하나로서 다양한 실시예들에 의해 이용되는 기하 곱을 구상하는 것을 허용했다.
여기서, 는 i-축을 따른 단위 벡터이고, 는 에 의해 생성된 영역의 배향을 나타낸다. 특히, N-공간의 기하 대수 멀티벡터(즉, N-차원 멀티벡터)는 2 N 개의 계수들을 갖는 반면 표준 N-차원 벡터는 N개의 계수들만을 갖는다. 따라서, 기하 대수 멀티벡터들은, 크기, 방향 및 부피 감각을 제공하는 반면, 표준 벡터는 크기 및 방향 감각만을 제공한다. 기하 대수에 관련된 개념들은 깊고 풍부한 수학적 파일의 일부이기 때문에, 소정의 일반적인 관찰들은 아래에 개시된 다양한 실시예들의 설명에 도움이 될 수 있을 것이다. 먼저, 멀티벡터 내의 값들 각각은 정보와 함께 "팩킹"될 수 있고, 각각의 값은 0부터 매우 큰 수(예를 들어, > 256,000 비트 또는 전체 메시지)까지의 범위일 수 있다. 두번째로, 의 역은 로 곱해지면 1이 되거나, 또는:
기하 대수 분야에 대한 더 깊은 이해가 필요한 경우, 추가 탐구를 위해 다양한 서적들과 과정들을 이용할 수 있다.
다양한 실시예들에서, "페이로드"는 스칼라들의 값들 및 멀티벡터 요소들의 계수들에서 팩킹될 수 있다. 팩킹 방법은, 많은 것들 중에서도 특히, 한 실시예에서 허용되는 기하 대수 연산들을 정의할 수 있다. 예를 들어, 멀티벡터들에 관한 유리화(rationalize) 연산은, 모든 멀티벡터 계수들이 동일할 때 0을 생성한다. 모든 동일한 계수들을 갖는 이러한 멀티벡터들은 역(inverse)을 갖지 않으며, 모든 동일한 계수들을 갖는 이러한 멀티벡터들의 또 다른 멀티벡터와의 기하 곱도 역을 갖지 않는다. 해독을 수행하기 위해 보안 키(들) 멀티벡터의 역을 이용하는 해독 방법론을 포함하는 다양한 실시예들의 상이한 양태들. 따라서, 역 연산을 수행할 때 문제점들을 피하기 위해, 다양한 실시예들에서 활용되는 다양한 멀티벡터들은 모두 동일한 값 계수들을 갖지 않아야 한다.
암호화된 데이터 메시지들에 관한 동형 속성들을 유지하려는 실시예들의 경우, 원래의 평문 숫자 메시지를 나타내는 "팩킹된" 멀티벡터는 원래의 평문 숫자 메시지에 대한 수학적 관계(즉, 동형 보존 수학적 관계)를 가져야 한다는 추가 제약이 있다. 추상 대수학에서, 동형이라는 용어는, 그룹들, 고리들, 또는 벡터 공간들 등의, 2개의 대수 구조들 사이의 구조-보존 맵을 지칭한다. 2개의 대수 사이의 대수 동형은, 대수 구조를 보존하는 것이다. 산술 연산과 기하 대수 연산 사이의 대수 구조를 보존하기 위해, 숫자들이 멀티벡터 요소들 내에 "팩킹"되는 방법은 원래 숫자의 표현으로 남아 있어야 한다. 동형 속성들을 보존하는 멀티벡터의 계수들을 팩킹하기 위한 이러한 하나의 관계는, 평문 숫자 메시지의 멀티벡터 표현의 계수들이 평문 숫자 메시지의 값과 평문 숫자 메시지의 멀티벡터 표현의 계수들의 값들 중 적어도 하나 사이의 수학적 데이터 조직을 따르는 것을 보장하는 것이며, 여기서, 멀티벡터 계수들의 하나 이상의 값을 포함하는 수학적 연산들은 원래의 평문 숫자 메시지 값과 동일한 결과를 갖는다. 수학적 관계는: 멀티벡터 계수들 중 적어도 하나의 계수의 덧셈, 멀티벡터 계수들 중 적어도 하나의 계수의 뺄셈, 상수 값의 덧셈, 상수 값의 뺄셈, 멀티벡터 계수들 중 적어도 하나의 계수의 상수 값에 의한 곱셈, 멀티벡터 계수들 중 적어도 하나의 계수의 상수 값에 의한 나눗셈을 포함할 수 있다. 멀티벡터 표현의 계수들의 특정한 위치들에 관한 다양한 수학적 연산의 위치는 또한, 멀티벡터로 변환된 모든 소스 숫자 데이터 메시지뿐만 아니라 특정한 암호화/해독 경로 내의 결과 숫자 데이터 값으로 변환된 결과 멀티벡터에도 일관되게 적용되어야 한다. 본 명세서에 개시된 다양한 실시예에 대해, 선택된 수학적 관계는, 단순히, 멀티벡터의 계수들의 합이 멀티벡터에 의해 표현된 숫자 데이터의 값과 동일하게 하는 것이다.
암호화된 데이터 전송 실시예들을 위한 하드웨어 구현(도 1)
도 1은 암호화된 데이터 전송 실시예를 위한 하드웨어 구현의 블록도(100)이다. 도 1에 도시된 실시예는 기하 대수의 이용에 의해 허용되는 동형 피처들을 포함하지는 않지만, 암호화 시스템의 가장 기본적인 양태들, 즉, 메시지를 암호화, 전송 및 해독하는 능력을 나타낸다. 기하 대수 암호화 및 해독의 동형 속성들을 포함하는 한 실시예의 설명에 대해서는, 아래의 도 3에 관한 설명을 참조한다. 암호화 및 해독 프로세스들의 동작은 동형 계산들이 수행될 때 변경되지 않으므로, 이러한 가장 기본적인 암호화 및 해독 실시예는 동형 계산들을 지원하는 다양한 실시예들의 피처들을 본질적으로 포함한다.
도 1에 도시된 블록도(100)로 돌아가서, 제1 컴퓨팅 디바이스(102)는 전자적 네트워크/버스 접속(108)을 통해 제2 컴퓨팅 디바이스(104) 및 제3 컴퓨팅 디바이스(106)에 접속된다. 도 1에 도시된 실시예에서, 제1 컴퓨팅 디바이스(102)는 네트워크/버스 접속(108)을 통해 암호화된 데이터(110)를 전송하는 소스 컴퓨팅 디바이스(102)로서 역할한다. 제2 컴퓨팅 디바이스(104)는 암호화된 메시지(110)를 네트워크/버스 접속(108)으로부터 수신하는 목적지 컴퓨팅 디바이스(106)로서 역할한다. 제3 컴퓨팅 디바이스(106)는, 암호화 및 해독 프로세스들에 필요한 개인 및 공개 키 정보(112)를 준비하여 기타의 컴퓨팅 디바이스들(102, 104)에 제공하는 비밀 키 컴퓨팅 디바이스(106)이다. 일반적으로, 암호화된 통신들을 포함하는 통신들은 양방향이므로, 컴퓨팅 디바이스들(102, 104, 106) 사이의 순방향 및 역방향 데이터 전송을 수용하기 위해, 제1 컴퓨팅 디바이스(102), 제2 컴퓨팅 디바이스(104) 및 제3 컴퓨팅 디바이스(106)가 필요에 따라 소스 컴퓨팅 디바이스(102), 목적지 컴퓨팅 디바이스(104) 및 비밀 키 컴퓨팅 디바이스(106)로서 역할들을 변경할 수 있다. 추가적으로, 컴퓨팅 디바이스들(102, 104, 106)이 도 1에서는 별개의 디바이스들로 도시되어 있지만, 소스 컴퓨팅 디바이스(102), 목적지 컴퓨팅 디바이스(104), 및/또는 비밀 키 컴퓨팅 디바이스(106)의 기능은 단일의 또는 2개의 컴퓨팅 디바이스에서 공유될 수 있는데, 이것은, 단일 디바이스의 컴포넌트들 사이의 데이터 전송을 암호화하는 것이 종종 바람직할 뿐만 아니라, 소스(102) 또는 목적지(104) 컴퓨팅 디바이스들이 또한 개인 및 공개 키 정보(112)를 준비하고 유포하기 위해 비밀 키 컴퓨팅 디바이스로서 동작할 가능성이 매우 높기 때문이다.
또한, 도 1에 도시된 바와 같이, 제1 컴퓨팅 디바이스(102)는 랩탑 컴퓨터로서 나타나고 제2 및 제3 컴퓨팅 디바이스(104, 106)는 태블릿 디바이스들로서 나타나 있다. 일반적으로, 임의의 형태의 전자적 네트워크 또는 버스 통신 플랫폼을 통해 통신할 수 있는 임의의 컴퓨팅 디바이스는, 제1(102), 제2(106), 및/또는 제3(106) 컴퓨팅 디바이스들 중 하나, 또는 둘, 또는 모두일 수 있다. 추가적으로, 제1(102), 제2(104), 및 제3(106) 컴퓨팅 디바이스들은 사실상 내부 버스 접속(104)을 통해 자신과 통신하는 동일한 물리적 컴퓨팅 디바이스일 수 있지만, 공격자가 내부 통신 버스(104)를 모니터링하여 암호화되지 않은 포멧의 민감한 데이터 통신들을 획득할 수 없도록 보장하기 위해 여전히 암호화된 통신을 요구할 수 있다. 또한, 개인 암호화 정보를 알고 있는 디바이스의 수를 제한하기 위해 소스(102) 및/또는 목적지(104) 컴퓨팅 디바이스가 비밀 키 컴퓨팅 디바이스(106)의 프로세스들을 수행하는 것이 매우 일반적일 수 있다.
다양한 실시예들은, 제1(102), 제2(104), 및/또는 제3(106) 컴퓨팅 디바이스들 사이에서 전자 데이터를 전송할 수 있는 임의의 통신 채널(108)을 이용하여 네트워크/버스 통신 채널(108)을 구현할 수 있다. 예를 들어, 네트워크/버스 통신 접속(108)은, 제1 컴퓨팅 디바이스(102), 제2 컴퓨팅 디바이스(104) 및/또는 제3 컴퓨팅 디바이스(106) 사이의 전송 동안 하나 이상의 상이한 통신 채널을 통해 라우팅되는 인터넷 접속일 수 있다. 마찬가지로, 네트워크/버스 통신 접속(108)은, 컴퓨팅 디바이스의 내부 통신 버스이거나, 메모리 칩 또는 중앙 처리 유닛(CPU) 등의 처리 또는 메모리 저장 집적 회로(IC) 칩의 내부 버스일 수도 있다. 네트워크/버스 통신 채널(108)은, 유선 통신, 무선 전자기 통신, 광섬유 케이블 통신, 광/레이저 통신, 소닉/사운드 통신 등, 및 다양한 통신 채널들의 이들의 임의의 조합을 포함한 그러나 이것으로 제한되지 않는 전자 데이터 통신 신호를 전송할 수 있는 임의의 매체를 이용할 수 있다.
다양한 실시예들은, 제1(102), 제2(104), 및/또는 제3(106) 컴퓨팅 디바이스들 상에서 동작하는 애플리케이션을 통해 여기서 설명된 제어 및 관리 기능들을 제공할 수 있다. 제1(102), 제2(104), 및/또는 제3(106) 컴퓨팅 디바이스들 각각은, 컴퓨터 또는 컴퓨터 시스템, 또는 한 실시예의 통신들 및 계산들을 수행할 수 있는 기타 임의의 전자 디바이스들일 수 있다. 제1(102), 제2(104), 및/또는 제3(106) 컴퓨팅 디바이스들은, 범용 컴퓨터, 랩탑/휴대형 컴퓨터, 태블릿 디바이스, 스마트 폰, 산업용 제어 컴퓨터, 데이터 저장 시스템 제어기, CPU, GPU(Graphical Processing Unit), 주문형 집적 회로(ASI; Application Specific Integrated Circuit), 및/또는 FPGA(Field Programmable Gate Array)를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 특히, 제1(102), 제2(104), 및/또는 제3(106) 컴퓨팅 디바이스들은, 데이터 저장 매체로/로부터 전달된 데이터가 항상 암호화되어 공격자가 암호화되지 않은 데이터에 액세스할 수 있는 능력을 제한할 수 있도록, 데이터 저장 매체의 저장 제어기(예를 들어, 하드 디스크 드라이브용 제어기)일 수 있다. 실시예들은, 컴퓨터(또는 기타의 전자 디바이스) 또는 컴퓨터 시스템이 다양한 실시예들에 따른 프로세스 또는 프로세스들을 수행하도록 프로그램/동작시키는데 이용될 수 있는 명령어들을 저장한, 컴퓨터-판독가능한, 또는 머신-판독가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 컴퓨터-판독가능한 매체는, 하드 디스크 드라이브, 플로피 디스켓, 광학 디스크, 컴팩트 디스크 판독전용 메모리(CD-ROM), DVD-ROM(Digital Versatile Disc ROM), 범용 직렬 버스(Universal Serial Bus, USB) 메모리 스틱, 광 자기 디스크, ROM, RAM(random access memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 광자기 카드, 플래시 메모리, 또는 전자적 명령어들을 저장하기에 적합한 다른 유형의 매체/머신-판독가능한 매체를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 컴퓨터 프로그램 명령어들은, 단일 컴퓨터/전자 디바이스 상에 상주하여 동작하거나, 다양한 부분들이 컴퓨터 시스템을 포함하는 복수의 컴퓨터/디바이스에 걸쳐 분산될 수 있다. 게다가, 실시예들은 또한 컴퓨터 프로그램 제품으로서 다운로드될 수 있고, 여기서, 프로그램은, 통신 링크(예를 들어, 모뎀 또는 유선/케이블 및 무선 접속을 포함한 네트워크 접속)를 통해 캐리어파 또는 기타의 전파 매체로 구현된 데이터 신호들을 통해 원격 컴퓨터로부터 요청측 컴퓨터로 전송될 수 있다.
암호화된 데이터 전송 실시예들에 대한 동작 플로차트들(도 2a 내지 도 2c)
도 2a 내지 도 2c는, 암호화된 데이터 전송 실시예에 대한 비밀 키 컴퓨팅 디바이스(206), 소스 컴퓨팅 디바이스(202), 및 소스 컴퓨팅 디바이스(204) 동작들의 플로차트(200, 222, 238)이다. 도 2a는 암호화된 데이터 전송 실시예에 대한 비밀 키 컴퓨팅 디바이스(206) 동작의 플로차트(200)이다. 프로세스 208에서, 적어도 하나의 비밀 소수(prime number)(p)가 비밀 키 컴퓨팅 디바이스(206)에 의해 무작위로 생성된다. 추가적인 혼동/확산을 암호화/해독 동작들에 추가하기 위해, 다양한 실시예들은, 공개 모듈러스(q)의 계산 및/또는 헨젤 인코딩 강화를 위해 추가적인 파라미터들을 제공하는 것을 포함한 그러나 이것으로 제한되지 않는 다양한 목적을 위해 복수의 랜덤 소수들을 이용할 수 있다. 프로세스 210에서, 비밀 키 컴퓨팅 디바이스(206)는 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산한다. 프로세스 212에서, 비밀 키 컴퓨팅 디바이스(206)는 적어도 하나의 무작위 키 값(k)을 생성한다. 일부 실시예는 비밀 키 값(k)이 소수일 것을 요구하도록 선택할 수 있고 일부 실시예는 하나보다 많은 비밀 키 값(k)을 갖도록 선택할 수 있다.
프로세스 214에서, 비밀 키 컴퓨팅 디바이스(206)는 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터()를 생성하고, 여기서, 적어도 하나의 비밀 키 멀티벡터()의 계수들의 합은 대응하는 적어도 하나의 비밀 키 값(k)과 같다. 프로세스 216에서, 비밀 키 컴퓨팅 디바이스(206)는, 적어도 인코딩된 계수 및 적어도 하나의 비밀 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 적어도 하나의 비밀 키 멀티벡터()의 각각의 계수의 헨젤 코드 표현을 획득함으로써 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터를 생성한다. 프로세스 218에서, 비밀 키 컴퓨팅 디바이스는, 적어도 하나의 비밀 소수(p), 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터, 및 공개 모듈러스(q)를 소스(202) 및 목적지(204) 컴퓨팅 디바이스들과 공유한다. 적어도 하나의 비밀 소수(p)와 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터의 공유에 대해 유의해야 하는데, 이것은, 이들이 비밀 값들이 되도록 의도된 것이며, 그에 따라, 암호화된 데이터에 액세스하도록 의도되지 않은 다른 디바이스들로부터 멀리 떨어져 있어야 하기 때문이다. 소스(202) 및 목적지(204) 컴퓨팅 디바이스들과의 공유는 오프 페이지 연결자(220)로 표시된다.
도 2b는 암호화된 데이터 전송 실시예를 위한 소스 컴퓨팅 디바이스(202) 동작의 플로차트(222)이다. 오프 페이지 연결자(220)는, 적어도 하나의 비밀 소수(p), 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(), 및 비밀 키 컴퓨팅 디바이스(206)로부터의 공개 모듈러스(q)의 공유를 나타낸다. 프로세스 224에서, 소스 컴퓨팅 디바이스(202)는 암호화된 숫자 메시지 데이터(m)를 나타내는 메시지 멀티벡터를 생성하고, 여기서 메시지 멀티벡터의 계수들의 합은 대응하는 숫자 메시지 데이터 값(m)과 동일하다. 프로세스 226에서, 소스 컴퓨팅 디바이스(202)는 메시지 멀티벡터 및 동형 멀티벡터()와 기하 대수 기하 곱을 수행함으로써 메시지 멀티벡터를 동형으로 만든다. 동형 멀티벡터()는 기하 대수 기하 곱 결과가 동형이 되도록 허용하는 멱등 멀티벡터(idempotent multivector)이다. 일부 실시예는 메시지 멀티벡터가 그 계수들을 헨젤 인코딩한 후에 메시지 멀티벡터에 동형 멀티벡터()를 적용하도록 선택할 수 있으며, 이 경우 헨젤 인코딩된 계수들을 갖는 메시지 멀티벡터에 동형 벡터를 적용하기 전에, 동형 멀티벡터()의 계수들도 마찬가지로 메시지 멀티벡터 헨젤 인코딩에 이용된 것과 동일한 헨젤 인코딩 파라미터들을 이용하여 헨젤 인코딩되어야 한다. 사실, 한 단일의 실시예에 대한 모든 헨젤 인코딩은, 적어도 비밀 소수(p) 등의, 동일한 기본 파라미터들을 이용해야 한다. 프로세스 228에서, 소스 컴퓨팅 디바이스(202)는, 적어도 인코딩된 계수 및 적어도 하나의 비밀 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 메시지 멀티벡터의 각각의 계수의 헨젤 코드 표현을 획득함으로써 헨젤 인코딩된 메시지 멀티벡터()를 생성한다.
프로세스 230에서, 소스 컴퓨팅 디바이스(202)는, 추가적인 혼동/확산을 암호화 실시예들에 추가하기 위하여, 모듈로 거듭제곱(modular exponentiation) 또는 CRT(Chinese Remainder Theorem) 등의 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 관해 추가적인 인코딩 기술 또는 알고리즘을 임의로 수행할 수 있다. 프로세스 232에서, 소스 컴퓨팅 디바이스는, 암호문 멀티벡터()를 획득하기 위하여, 적어도 헨젤 인코딩된 메시지 멀티벡터() 및 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 기하 대수 기하 곱의 함수로서 헨젤 인코딩된 메시지 멀티벡터()를 암호화한다. 프로세스 234에서, 소스 컴퓨팅 디바이스(202)는 암호문 멀티벡터()를 목적지 컴퓨팅 디바이스(204)에 전송하고 목적지 컴퓨팅 시스템 흐름을 위한 프로세스들은 오프 페이지 연결자(236)를 통해 연결된다.
도 2c는 암호화된 데이터 전송 실시예를 위한 목적지 컴퓨팅 디바이스(104) 동작의 플로차트(238)이다. 오프 페이지 연결자(220)는, 비밀 키 컴퓨팅 디바이스(206)로부터의 적어도 하나의 비밀 소수(p), 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(), 및 공개 모듈러스(q)의 공유를 나타내고, 오프 페이지 연결자(236)는, 소스 컴퓨팅 디바이스(202)로부터 목적지 컴퓨팅 디바이스(204)로 계속되는 프로세스들을 나타낸다. 프로세스 240에서, 목적지 컴퓨팅 디바이스(204)는 소스 컴퓨팅 디바이스(202)로부터 암호문 멀티벡터()를 수신한다. 프로세스 242에서, 목적지 컴퓨팅 디바이스(204)는 암호문 멀티벡터() 및 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터()를 해독하여 헨젤 인코딩된 메시지 멀티벡터()로 되돌린다. 프로세스 244에서, 목적지 컴퓨팅 디바이스(204)는, 프로세스 230에서 소스 컴퓨팅 디바이스(202)에 의해 헨젤 인코딩된 메시지 멀티벡터()의 계수들에 적용된 임의의 임의적으로 적용된 추가적인 알려진 인코딩 기술들 또는 알고리즘들을 감안하기 위해 필요하다면 헨젤 인코딩된 메시지 멀티벡터()의 계수들에 관해 디코딩을 수행한다. 프로세스 246에서, 목적지 컴퓨팅 디바이스(204)는 적어도 디코딩된 계수 및 적어도 하나의 비밀 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수의 헨젤 코드 표현을 디코딩함으로써 메시지 멀티벡터()를 생성한다. 프로세스 248에서, 목적지 컴퓨팅 디바이스(204)는 메시지 멀티벡터()의 계수들을 합산함으로써 숫자 메시지 데이터(m)를 생성한다.
본 기술분야의 통상의 기술자라면, 다양한 실시예들의 기하 대수 및 헨젤 인코딩 개념들의 이용을 유지하면서 다양한 실시예들의 기하 대수 및 헨젤 인코딩 암호화 피처들에 수학적 뉘앙스를 추가하기 위한 거의 무제한의 접근법들이 있다는 것을 인식할 것이다. 따라서, 모든 가능한 변형을 논의하려는 시도는 본 문서에서 없지만, 대신에, 본 문서는 다양한 실시예들의 기본 요소들을 공개하고 미묘한 차이의 추가를 암호화 시스템 설계자/구현자에게 남겨둔다.
추가로, 도 2a 내지 도 2c와 관련하여 전술된 플로차트들 및 플로차트 상세사항들이 방법 또는 프로세스로서 구체화될 수 있는 방법론을 기술하고 있지만, 또 다른 실시예는, 도 2a 내지 도 2c의 플로차트 및 플로차트 상세사항들과 관련하여 전술된 프로세스들을 구현함으로써, 데이터를 암호화하고, 데이터를 전송하고, 데이터를 해독하는 컴퓨터 시스템으로서, 및/또는 소스 컴퓨팅 디바이스, 목적지 컴퓨팅 디바이스, 및/또는 비밀 키 컴퓨팅 디바이스로서 인식될 수 있다. 또한, 데이터를 암호화하고, 데이터를 전송하고, 데이터를 해독하는 컴퓨팅 디바이스, 및/또는 소스 컴퓨팅 디바이스, 목적지 컴퓨팅 디바이스, 및/또는 비밀 키 컴퓨팅 디바이스를 기술하는데 있어서, 이 방법론에 대해 전술된 하나 또는 그 이상의 개개의 프로세스들은 분해되고 전체 암호화 컴퓨터 시스템의 서브시스템으로서 표현될 수 있다. 데이터를 암호화하고, 데이터를 전송하고, 데이터를 해독하는 컴퓨터 시스템, 및/또는 소스 컴퓨터 시스템 및 목적지 컴퓨터 시스템의 서브시스템은, 전체적으로 또는 부분적으로, 전용 ASIC(Application Specific Integrated Circuit) 또는 FPGA(Field Programmable Gate Array) 등의, 특정한 하드웨어 구현 시스템에 할당될 수 있다. 하나 이상의 서브시스템은, 전체적으로 또는 부분적으로, 컴퓨터 시스템의 동작을, 소프트웨어 또는 펌웨어 명령어들로서 구현된 하나 이상의 서브시스템에 관하여 정의하는 소프트웨어 또는 펌웨어 명령어들로서 대안적으로 구현될 수 있다. 소프트웨어 또는 펌웨어 명령어들은, 중앙 처리 유닛, 메모리, 및/또는 컴퓨터 시스템의 기타의 시스템들이 특정한 하나 이상의 서브시스템 지정된 피처에 따라 동작하게 할 수 있다.
동형 연산들은 상기의 도 1 및 도 2a 내지 도 2c와 관련하여 개시된 기본 암호화된 데이터 전송 실시예에 대한 확장이다. 대부분의 경우, 동형 연산들을 지원하는 확장은, 기본 암호화된 데이터 전송 실시예의 암호화/해독 기능들의 일부인 기하 대수 기반의 고유한 대수 동형에 의존한다. 예를 들어, 실제 암호화 및 해독 연산들을 수행하는 기하 대수 기하 곱 연산들은 단순 암호화된 데이터 전송 및 동형 실시예들 양쪽 모두에 대해 동일하게 유지된다. 한 실시예에 대한 잠재적인 동형 연산들은, 암호화된 덧셈/뺄셈, 스칼라 덧셈/뺄셈, 암호화된 곱셈, 및 스칼라 곱셈 등의 그러나 이것으로 제한되지 않는 복수의 연산을 포함할 수 있다.
아래의 다양한 실시예들의 동형 피처들에 대한 설명에서는, 전형적으로 가산적 동형 연산의 피연산자들인 숫자 값들이 발생하는 엔티티(예를 들어, 컴퓨팅 디바이스/시스템)에 대해서는 용어 "소스"를 사용하고, 가산적 동형 연산의 결과를 수신하는 엔티티(예를 들어, 컴퓨팅 디바이스/시스템)에 대해서는 용어 "목적지"를 사용할 것이다. "중간자"라는 용어는, 전형적으로, 소스(들)와 목적지 사이에서, 소스 엔티티(들)에서 시작된 암호화된 숫자 값 피연산자들에 관해 동작하는 "중간" 엔티티를 정의한다. 대안으로서, "클라이언트"라는 용어는, 피연산자 및/또는 결과 데이터(즉, 소스 및/또는 목적지 컴퓨팅 디바이스/시스템)의 소유자를 기술하기 위해 사용될 수 있는 반면, 일반 용어 "클라우드"는 신뢰할 수 없는 환경(즉, 중간 컴퓨팅 시스템/디바이스)에서 놓여 있는 데이터에 대해 사용될 수 있다. 어떤 점에서, 용어들 "클라이언트"와 "클라우드"는, 소스와 목적지가, 저장을 위해 데이터를 중간 "클라우드"에 보낸 다음, 클라이언트가 필요할 때 클라우드에게 연산(예를 들어, 암호화된 포멧으로 클라우드에 저장된 거래 달러 금액 합계)을 요청하는 동일한 엔티티인 실세계 응용을 더욱 근접하게 반영할 수 있다. 궁극적으로, 소스, 목적지, 및 중간라는 용어들은, 컴퓨팅 시스템/디바이스에 의해 수행되는 상대적 동작들을 반영하며, 반드시 전체로서의 컴퓨팅 시스템/디바이스를 정의하는 것은 아니다. 따라서, 소스, 목적지, 및 중간 동작들/시스템들은 하나 이상의 컴퓨팅 시스템/디바이스 상에 특정한 애플리케이션으로서 상주할 수 있다. 소스, 목적지, 및 중간 컴퓨팅 시스템들/디바이스들은, 복수의 애플리케이션을 동시에 실행할 수 있는 범용 컴퓨팅 시스템들일 수 있으므로, 소스, 목적지 및 중간 동작들은, 하나, 둘 또는 모든 개별 애플리케이션/기능이 단일 컴퓨팅 디바이스/시스템 상에서 실행되는 것을 허용할 수 있는 별개의 애플리케이션들/기능들로서 캡슐화되는 것이 본질적으로 가능하다. 또한, 단일 소유자/클라이언트의 단일의 상호접속된 컴퓨터 시스템은, 소유자/클라이언트의 디지털 보안 경계 외부에 있는 소유자/클라이언트 자신의 엔드-포인트 디바이스들에 놓여 있는(즉, 저장된) 데이터를 포함하는 신뢰할 수 없는 환경들을 가질 수 있다.
암호화된 데이터에 관한 동형 연산들을 구현하는 다양한 실시예들에 대해, 기하 대수를 이용하여 메시지들을 암호화 및 해독하는 방법들 및 시스템들은, 기하 대수의 고유한 대수 동형 속성들을 활용하여, 중간 컴퓨팅 시스템이 산술 및 기타의 비교 연산들을 수행하기 전에 암호화된 메시지들을 해독할 필요없이, 중간 컴퓨팅 시스템에 의해 취급되는 암호화된 메시지들에 관한 산술 연산들을 허용할 수 있다. 따라서, 중간 컴퓨팅 시스템은, 산술 및 기타의 비교 연산들을 적절하게 수행하기 위해 암호화/해독 프로세스들의 비밀 보안 키들 중 임의의 것에 관해서 어떠한 정보도 알 필요가 없다. 중간 컴퓨팅 시스템에 의해 수행된 산술 및/또는 기타의 비교 연산들의 암호화된 결과들은, 목적지 컴퓨팅 디바이스에서 해독될 때, 마치 암호화되지 않은 평문 메시지들에 관해 연산들이 수행된 결과들과 같은, 동일한 결과들을 생성한다. 중간 산술 연산들에 대한 동형 효과를 적절하게 달성하기 위하여, 이러한 동형 속성들(즉, 암호화 프로세스에서 이용되는 벡터들과 암호화된 원래의 평문 메시지 사이의 수학적 관계)을 보존하는 적절한 데이터 조직화 방법론(즉, 멀티벡터로의 계수들의 팩킹/분배)이 평문 메시지들을 나타내는 벡터들에 대한 계수들의 선택에 적용되어야 한다. 다양한 실시예들에서 동형은, 도 1 및 도 2a 내지 도 2c와 관련하여 위에서 설명된 암호화 및 해독 원리들의 기하 대수 연산의 가환적 성질(commutative nature)에 기초하여 구축된다. 따라서, 데이터의 배포/팩킹 배열은 암호화된 원래 숫자 값에 대한 가환적인 수학적 관계도 역시 보존해야 한다. 산술 연산과 기하 대수 연산 사이의 대수 구조를 보존하기 위해, 숫자들이 멀티벡터 요소들 내에 "팩킹"되는 방법은 원래 숫자의 표현으로 남아 있어야 한다. 동형 속성들을 보존하는 멀티벡터의 계수들을 팩킹하기 위한 한 이러한 관계는, 평문 숫자 메시지의 멀티벡터 표현의 계수들이 평문 숫자 메시지의 값과 평문 숫자 메시지의 멀티벡터 표현의 계수들의 값들 중 적어도 하나 사이의 수학적 데이터 조직을 따르는 것을 보장하는 것이며, 여기서, 멀티벡터 계수들의 하나 이상의 값들을 포함하는 수학적 연산들은 원래의 평문 숫자 메시지 값과 동일한 결과를 갖는다(즉, 동형 보존 수학적 관계). 수학적 관계는: 멀티벡터 계수들 중 적어도 하나의 계수의 덧셈, 멀티벡터 계수들 중 적어도 하나의 계수의 뺄셈, 상수 값의 덧셈, 상수 값의 뺄셈, 멀티벡터 계수들 중 적어도 하나의 계수의 상수 값에 의한 곱셈, 멀티벡터 계수들 중 적어도 하나의 계수의 상수 값에 의한 나눗셈을 포함할 수 있다. 멀티벡터 표현의 계수들의 특정한 위치들에 관한 다양한 수학적 연산의 위치는 또한, 멀티벡터로 변환된 모든 소스 숫자 데이터 메시지뿐만 아니라 특정한 암호화/해독 경로 내의 결과 숫자 데이터 값으로 변환된 결과 멀티벡터에도 일관되게 적용되어야 한다. 평문 숫자 메시지의 벡터 표현의 계수들이 전술된 동형 보존 수학적 관계의 정의를 충족하는 것을 보장하는 것은, 암호화/해독 프로세스들의 기하 대수 연산들의 동형 속성들을 보존하는 적절한 가환적 데이터 조직화(즉, 팩킹/배포) 방법론을 제공할 것이다.
동형 실시예들을 위한 하드웨어 구현(도 3)
도 3은 동형 암호화 실시예를 위한 하드웨어 구현의 블록도(300)이다. 소스 컴퓨팅 디바이스(302)는 전자적 네트워크/버스 접속(308)을 통해 중간(예를 들어, 클라우드) 컴퓨팅 시스템(306)에 접속된다. 유사하게, 목적지 컴퓨팅 디바이스(304)는 또한, 전자적 네트워크/버스 접속(308)을 통해 중간 컴퓨팅 시스템(306)에 접속된다. 도 3에 도시된 실시예에서, 소스 컴퓨팅 디바이스(302)는, 암호문 멀티벡터(310)를 목적지 컴퓨팅 디바이스(304)에 직접 전송하는 것이 아니라, 암호문 멀티벡터(310)를 중간 컴퓨팅 시스템(306)에 전송한다. 중간 컴퓨팅 시스템(306)은 또한, 또한 뺄셈과 나눗셈이 각각 덧셈과 곱셈 연산의 특수한 경우이기 때문에 동형 뺄셈과 나눗셈 연산을 수행할 가능성을 역시 의미하는, 덧셈 및 곱셈 등의 동형 연산들을 수행하기 위해 중간 컴퓨팅 시스템(306)에서 이용될 수 있는 다른 암호화된 데이터가 중간 컴퓨팅 시스템 상에 존재하도록 다른 암호문 멀티벡터를 중간 컴퓨팅 시스템(306) 상에 저장할 수 있다. 중간 컴퓨터 시스템(306)은 암호화된 암호문(310)에 대한 비밀 키 또는 기타의 비밀 데이터를 알지 못하지만, 암호화된 데이터에 관한 동형 수학적 연산들을 수행하여, 암호화된 동형 계산 결과 멀티벡터(312)가 목적지 컴퓨팅 디바이스(304)에 의해 해독되고 숫자 값으로 디코딩될 때 정확한/동등한 수학적 결과를 여전히 달성할 수 있다.
중간 컴퓨팅 시스템(306)은 암호문 멀티벡터(310)가 중간 컴퓨팅 시스템(306)에 의해 수신되자마자 암호문 멀티벡터(310)를 이용하여 동형 수학적 연산을 즉시 수행할 수 있거나, 중간 컴퓨팅 시스템(306)이 동형 수학적 연산을 수행하도록 지시받을 때까지 중간 컴퓨팅 시스템(306)이 암호문 멀티벡터(310)를 저장할 수도 있다. 일단 동형 수학적 연산이 중간 컴퓨팅 시스템(306)에 의해 완료되고 나면, 중간 컴퓨팅 시스템(306)은 암호화된 동형 계산 결과 멀티벡터(312)를 네트워크/버스 통신 접속(308)을 통해 목적지 컴퓨팅 시스템(304)에 전송한다. 목적지 컴퓨팅 시스템(304)은 네트워크/버스 통신 접속(308)로부터 암호화된 동형 계산 결과 멀티벡터(312)를 수신하고 암호화된 동형 계산 결과 멀티벡터(312)를 해독하여 원하는 평문 계산 결과를 획득한다.
일반적으로, 암호화된 통신들을 포함하는 통신들은 양방향이므로, 소스(302) 및 목적지(304) 컴퓨팅 디바이스들 사이의 순방향 및 역방향 데이터 전송을 수용하기 위해 및 중간 컴퓨팅 시스템(306)에서의 동형 수학적 연산들의 계산을 위해, 소스 컴퓨팅 디바이스(302), 중간 컴퓨팅 시스템(306) 및/또는 목적지 컴퓨팅 디바이스(304)가 필요에 따라 소스 컴퓨팅 디바이스(302), 중간 컴퓨팅 시스템(306) 및/또는 목적지 컴퓨팅 디바이스(304)로서 동작하도록 역할들을 변경할 수 있다. 도 3의 동형 암호화 실시예의 경우, 도 1과 도 2a 내지 도 2c와 관련하여 전술된 단순 암호화된 데이터 전송 실시예들에 비해, 소스 컴퓨팅 디바이스(302)로부터의 암호문은 목적지 컴퓨팅 디바이스(304)가 아니라 중간 컴퓨팅 시스템(306)에 전달되고, 중간 컴퓨팅 시스템(306)은 암호문 멀티벡터(310)가 아니라 암호화된 동형 계산 결과(312)를 목적지 컴퓨팅 디바이스(304)에 전달한다.
또한, 도 3에 도시된 바와 같이, 소스 컴퓨팅 디바이스(302)는 랩탑 컴퓨터로서 나타나고 목적지 컴퓨팅 디바이스(304)는 태블릿 디바이스로서 나타난다. 일반적으로, 임의의 형태의 전자적 네트워크 또는 버스 통신 플랫폼(308)을 통해 통신할 수 있는 임의의 컴퓨팅 디바이스는, 소스 컴퓨팅 디바이스(302), 중간 컴퓨팅 시스템(306), 및/또는 목적지 컴퓨팅 디바이스(304) 중 하나, 복수 또는 모두일 수 있다. 또한, 소스(302), 중간(306), 및 목적지 컴퓨팅 디바이스들/시스템들(304)은, 실제로는, 내부 버스 접속(304)을 통해 자신과 통신하는 동일한 물리적 컴퓨팅 디바이스일 수 있지만, 공격자가 내부 통신 버스(304)를 모니터링하거나 컴퓨팅 시스템의 비보호 영역(즉, 중간 섹션(306))을 해킹하여 암호화되지 않은 포멧의 민감한 데이터 통신을 획득할 수 없도록 보장하기 위해 암호화된 통신을 여전히 원할 수 있다.
다양한 실시예들은, 소스(302), 중간(306), 및/또는 목적지(304) 컴퓨팅 디바이스들/시스템들 사이에서 전자 데이터를 전송할 수 있는 임의의 통신 채널(308)을 이용하여 네트워크/버스 통신 채널(308)을 구현할 수 있다. 예를 들어, 네트워크/버스 통신 접속(308)은, 소스(302)로부터 중간(306) 컴퓨팅 시스템으로, 그 다음, 목적지 컴퓨팅 디바이스(304)로의 전송 동안, 하나 이상의 상이한 통신 채널을 통해 라우팅되는 인터넷 접속일 수 있다. 마찬가지로, 네트워크/버스 통신 접속(308)은, 컴퓨팅 디바이스의 내부 통신 버스이거나, 메모리 칩 또는 중앙 처리 유닛(CPU) 등의 처리 또는 메모리 저장 집적 회로(IC) 칩의 내부 버스일 수도 있다. 네트워크/버스 통신 채널(308)은, 유선 통신, 무선 전자기 통신, 광섬유 케이블 통신, 광/레이저 통신, 소닉/사운드 통신 등, 및 다양한 통신 채널들의 이들의 임의의 조합을 포함한 그러나 이것으로 제한되지 않는 전자 데이터 통신 신호를 전송할 수 있는 임의의 매체를 이용할 수 있다.
다양한 실시예들은, 소스(302), 중간(306), 및/또는 목적지(304) 컴퓨팅 디바이스들/시스템들 상에서 동작하는 애플리케이션을 통해 본 명세서에 상세히 설명된 제어 및 관리 기능들을 제공할 수 있다. 소스(302), 중간(306), 및/또는 목적지(304) 컴퓨팅 디바이스들/시스템들 각각은, 컴퓨터 또는 컴퓨터 시스템, 또는 한 실시예의 통신들 및 계산들을 수행할 수 있는 임의의 다른 전자 디바이스일 수 있다. 소스(302), 중간(306) 및/또는 목적지(304) 컴퓨팅 디바이스들/시스템들은, 범용 컴퓨터, 랩탑/휴대형 컴퓨터, 태블릿 디바이스, 스마트 폰, 산업용 제어 컴퓨터, 데이터 저장 시스템 제어기, CPU, GPU(Graphical Processing Unit), ASI(Application Specific Integrated Circuit), 및/또는 FPGA(Field Programmable Gate Array)를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 특히, 소스(302) 및 목적지(304) 컴퓨팅 디바이스들은, 데이터 저장 매체로/로부터 전달된 데이터가 항상 암호화되어 공격자가 암호화되지 않은 데이터에 액세스할 수 있는 능력을 제한할 수 있도록, 데이터 저장 매체의 저장 제어기(예를 들어, 하드 디스크 드라이브용 제어기)일 수 있다. 실시예들은, 컴퓨터(또는 기타의 전자 디바이스) 또는 컴퓨터 시스템이 다양한 실시예들에 따른 프로세스 또는 프로세스들을 수행하도록 프로그램/동작시키는데 이용될 수 있는 명령어들을 저장한, 컴퓨터-판독가능한, 또는 머신-판독가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 컴퓨터-판독가능한 매체는, 하드 디스크 드라이브, 플로피 디스켓, 광학 디스크, 컴팩트 디스크 판독전용 메모리(CD-ROM), DVD-ROM(Digital Versatile Disc ROM), 범용 직렬 버스(Universal Serial Bus, USB) 메모리 스틱, 광 자기 디스크, ROM, RAM(random access memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 광자기 카드, 플래시 메모리, 또는 전자적 명령어들을 저장하기에 적합한 다른 유형의 매체/머신-판독가능한 매체를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 컴퓨터 프로그램 명령어들은, 단일 컴퓨터/전자 디바이스 상에 상주하여 동작하거나, 다양한 부분들이 컴퓨터 시스템을 포함하는 복수의 컴퓨터/디바이스에 걸쳐 분산될 수 있다. 게다가, 실시예들은 또한 컴퓨터 프로그램 제품으로서 다운로드될 수 있고, 여기서, 프로그램은, 통신 링크(예를 들어, 모뎀 또는 유선/케이블 및 무선 접속을 포함한 네트워크 접속)를 통해 캐리어파 또는 기타의 전파 매체로 구현된 데이터 신호들을 통해 원격 컴퓨터로부터 요청측 컴퓨터로 전송될 수 있다.
동형 암호화 실시예에 대한 동작 플로차트(도 4)
도 4는 동형 암호화 실시예를 위한 중간 컴퓨팅 시스템 동작의 플로차트(400)이다. 입력(402)에서, 암호문 멀티벡터()가 소스 컴퓨팅 디바이스로부터 중간 컴퓨팅 디바이스로 전송된다. 프로세스 408에서, 중간 컴퓨팅 디바이스(406)는 소스 컴퓨팅 디바이스로부터 암호문 멀티벡터()를 수신한다. 프로세스 410에서, 중간 컴퓨팅 디바이스(406)는, 적어도 하나의 저장된 암호문 멀티벡터()와의, 암호문 멀티벡터()의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 및/또는 나눗셈의 함수로서 동형 결과 암호문 멀티벡터()를 생성한다. 동형 결과 암호문 멀티벡터()를 생성하기 위하여, 중간 컴퓨팅 시스템(406)은 어떠한 암호화된 값도 해독할 필요가 없으며 비밀 암호화 키들 또는 소수들을 알 필요가 없다. 프로세스 412에서, 중간 컴퓨팅 시스템(406)은 동형 결과 암호문 멀티벡터()를 목적지 컴퓨팅 디바이스에 전송한다. 출력(404)에서, 동형 결과 암호문 멀티벡터()는 목적지 컴퓨팅 디바이스에 전달되고 목적지 컴퓨팅 디바이스는 위에서 도 1과 도 2a 내지 도 2c와 관련하여 본 개시내용에서 이루어진 바와 같이 암호문 멀티벡터()가 아니라 동형 결과 암호문 멀티벡터()를 해독한다. 동형 피처들을 이용하여 조작될 수 있는 암호화된 데이터의 한 특정한 예는, 이미지 처리 동작들을 수행하기 위해 암호화된 이미지들을 해독할 필요없이, 암호화된 이미지들의 밝기 또는 콘트라스트를 조정하는 것뿐만 아니라 이미지들을 결합하는 것 등의 동작들과 기타의 이미지 처리 애플리케이션들을 수행할 수 있는 이미지 처리 분야이다.
또한, 도 4와 관련하여 전술된 플로차트들 및 플로차트 상세사항들은 방법 또는 프로세스로서 구현될 수 있는 방법론을 기술하지만, 또 다른 실시예는, 도 4의 플로차트 및 플로차트 상세사항들과 관련하여 전술된 프로세스들을 구현함으로써 암호화된 데이터를 저장하거나 및/또는 이들의 동형 연산들을 수행하는 컴퓨터 시스템 및/또는 중간 컴퓨팅 디바이스로서 인식될 수 있다. 또한, 컴퓨팅 시스템 및/또는 중간 컴퓨팅 시스템을 설명할 때, 방법론에 대해 전술된 하나 또는 그 이상의 개개의 프로세스들은 세분되어 전체 암호화 컴퓨터 시스템의 서브시스템으로서 표현될 수 있다. 컴퓨터 시스템의 서브시스템은, 전체적으로 또는 부분적으로, 전용 ASIC(Application Specific Integrated Circuit) 또는 FPGA(Field Programmable Gate Array) 등의, 특정한 하드웨어 구현 시스템에 할당될 수 있다. 하나 이상의 서브시스템은, 전체적으로 또는 부분적으로, 컴퓨터 시스템의 동작을, 소프트웨어 또는 펌웨어 명령어들로서 구현된 하나 이상의 서브시스템에 관하여 정의하는 소프트웨어 또는 펌웨어 명령어들로서 대안적으로 구현될 수 있다. 소프트웨어 또는 펌웨어 명령어들은, 중앙 처리 유닛, 메모리, 및/또는 컴퓨터 시스템의 기타의 시스템들이 특정한 하나 이상의 서브시스템 지정된 피처에 따라 동작하게 할 수 있다.
암호화 키 업데이트 실시예를 위한 하드웨어 구현(도 5)
도 5는 암호화 키 업데이트 실시예를 위한 하드웨어 구현의 블록도(500)이다. 키 업데이트 실시예에 필요한 하드웨어는, 키 업데이트 컴퓨팅 시스템(502)일뿐이기 때문에 비교적 간단하다. 키 업데이트 컴퓨팅 시스템(502)이 생성된 토큰들을 다른 컴퓨팅 시스템/디바이스에 전달하여 이들 다른 컴퓨팅 시스템들/디바이스들이 이들 다른 컴퓨팅 시스템들/디바이스들 중 하나 이상에 저장된 암호문들에 대한 비밀 키 멀티벡터를 역시 업데이트하는 것을 허용하는 것이 가능하다.
다양한 실시예들은 키 업데이트 컴퓨팅 디바이스들/시스템들(502) 상에서 동작하는 애플리케이션을 통해 본 명세서에서 상세히 설명된 제어 및 관리 기능들을 제공할 수 있다. 키 업데이트 컴퓨팅 디바이스들/시스템들(502)은, 컴퓨터 또는 컴퓨터 시스템, 또는 한 실시예의 통신들 및 계산들을 수행할 수 있는 임의의 다른 전자 디바이스일 수 있다. 키 업데이트 컴퓨팅 디바이스/시스템(502)은, 범용 컴퓨터, 랩탑/휴대형 컴퓨터, 태블릿 디바이스, 스마트 폰, 산업용 제어 컴퓨터, 데이터 저장 시스템 제어기, CPU, GPU(Graphical Processing Unit), ASI(Application Specific Integrated Circuit), 및/또는 FPGA(Field Programmable Gate Array)를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 실시예들은, 컴퓨터(또는 기타의 전자 디바이스) 또는 컴퓨터 시스템이 다양한 실시예들에 따른 프로세스 또는 프로세스들을 수행하도록 프로그램/동작시키는데 이용될 수 있는 명령어들을 저장한, 컴퓨터-판독가능한, 또는 머신-판독가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 컴퓨터-판독가능한 매체는, 하드 디스크 드라이브, 플로피 디스켓, 광학 디스크, 컴팩트 디스크 판독전용 메모리(CD-ROM), DVD-ROM(Digital Versatile Disc ROM), 범용 직렬 버스(Universal Serial Bus, USB) 메모리 스틱, 광 자기 디스크, ROM, RAM(random access memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 광자기 카드, 플래시 메모리, 또는 전자적 명령어들을 저장하기에 적합한 다른 유형의 매체/머신-판독가능한 매체를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 컴퓨터 프로그램 명령어들은, 단일 컴퓨터/전자 디바이스 상에 상주하여 동작하거나, 다양한 부분들이 컴퓨터 시스템을 포함하는 복수의 컴퓨터/디바이스에 걸쳐 분산될 수 있다. 게다가, 실시예들은 또한 컴퓨터 프로그램 제품으로서 다운로드될 수 있고, 여기서, 프로그램은, 통신 링크(예를 들어, 모뎀 또는 유선/케이블 및 무선 접속을 포함한 네트워크 접속)를 통해 캐리어파 또는 기타의 전파 매체로 구현된 데이터 신호들을 통해 원격 컴퓨터로부터 요청측 컴퓨터로 전송될 수 있다.
암호화 키 업데이트 실시예에 대한 동작 플로차트(도 6)
도 6은 한 실시예에 대한 키 업데이트 컴퓨터 시스템 동작의 플로차트(600)이다. 프로세스 604에서, 키 업데이트 컴퓨터 시스템(602)은 원래의 헨젤 인코딩된 비밀 키 멀티벡터()를 대체하도록 지정된 새로운 헨젤 인코딩된 비밀 키 멀티벡터()가 존재하는지 및 새로운 헨젤 인코딩된 비밀 키 멀티벡터()가 존재하지 않는지를 결정한 다음, 키 업데이트 컴퓨터 시스템(602)은 원래의 헨젤 인코딩된 비밀 키 멀티벡터()를 생성하는데 이용되는 연산들에 따라 무작위로 생성된 새로운 비밀 키 값(kn)으로부터 새로운 헨젤 인코딩된 비밀 키 멀티벡터()를 생성한다. 프로세스 606에서, 키 업데이트 컴퓨터 시스템(602)은 새로운 헨젤 인코딩된 비밀 키 멀티벡터()와 원래의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 기하 곱 연산으로서 제1 공개 토큰()을 생성한다. 프로세스 608에서, 키 업데이트 컴퓨터 시스템(602)은 원래의 헨젤 인코딩된 비밀 키 멀티벡터()와 새로운 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 기하 곱 연산으로서 제2 공개 토큰()을 생성한다. 프로세스 610에서, 키 업데이트 컴퓨터 시스템(602)은 기하 곱 연산 에 따라 암호문 멀티벡터()를 업데이트하여 암호문 멀티벡터()와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터()가 암호문 멀티벡터()에 대해 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 대체되게 한다.
추가적으로, 도 6과 관련하여 전술된 플로차트 및 플로차트 상세사항들은 방법 또는 프로세스로서 구현될 수 있는 방법론을 기술하지만, 또 다른 실시예는, 도 6의 플로차트 및 플로차트 상세사항들과 관련하여 전술된 프로세스를 구현함으로써 키 교체 동작들을 수행하는 컴퓨터 시스템 및/또는 키 업데이트 컴퓨터 시스템으로서 인식될 수 있다. 또한, 컴퓨팅 시스템 및/또는 키 업데이트 컴퓨터 시스템을 설명할 때, 방법론에 대해 전술된 하나 이상의 개개의 프로세스가 세분되어 전체 키 업데이트 컴퓨터 시스템의 서브시스템으로서 표현될 수 있다. 컴퓨터 시스템의 서브시스템은, 전체적으로 또는 부분적으로, 전용 ASIC(Application Specific Integrated Circuit) 또는 FPGA(Field Programmable Gate Array) 등의, 특정한 하드웨어 구현 시스템에 할당될 수 있다. 하나 이상의 서브시스템은, 전체적으로 또는 부분적으로, 컴퓨터 시스템의 동작을, 소프트웨어 또는 펌웨어 명령어들로서 구현된 하나 이상의 서브시스템에 관하여 정의하는 소프트웨어 또는 펌웨어 명령어들로서 대안적으로 구현될 수 있다. 소프트웨어 또는 펌웨어 명령어들은, 중앙 처리 유닛, 메모리, 및/또는 컴퓨터 시스템의 기타의 시스템들이 특정한 하나 이상의 서브시스템 지정된 피처에 따라 동작하게 할 수 있다.
암호화 키 교환 실시예를 위한 하드웨어 구현(도 7)
도 7은 암호화 키 교환 실시예를 위한 하드웨어 구현의 블록도(700)이다. 제1 컴퓨터 시스템(702)은 전자적 네트워크/버스 접속(706)을 통해 제2 컴퓨터 시스템(704)에 접속된다. 제1 컴퓨터 시스템(702) 및 제2 컴퓨터 시스템(704)은 전자적 네트워크/버스 접속(706)을 통해 공개 키 교환 정보(708)를 교환하여 제1 컴퓨터 시스템(702) 및 제2 컴퓨터 시스템(704) 각각이, 전자적 네트워크/버스 접속(706)을 통해 헨젤 인코딩된 비밀 키 멀티벡터()를 직접 전송하지 않고, 별개로 헨젤 인코딩된 비밀 키 멀티벡터()를 계산할 수 있게 한다.
또한, 도 7에 도시된 바와 같이, 제1 컴퓨터 시스템(702)은 랩탑 컴퓨터로서 나타나고 제2 컴퓨터 시스템(704)은 태블릿 디바이스로서 나타난다. 일반적으로, 임의의 형태의 전자적 네트워크 또는 버스 통신 플랫폼(706)을 통해 통신할 수 있는 임의의 컴퓨팅 디바이스는 제1 컴퓨터 시스템(702) 및/또는 제2 컴퓨터 시스템(704) 중 하나 또는 양쪽 모두일 수 있다. 또한, 제1 컴퓨터 시스템(702) 및 제2 컴퓨터 시스템(704)은 실제로 내부 버스 접속(706)을 통해 자신과 통신하는 동일한 물리적 컴퓨팅 디바이스일 수 있다.
다양한 실시예들은 제1 컴퓨터 시스템(702)과 제2 컴퓨터 시스템(704) 사이에서 전자 데이터를 전송할 수 있는 임의의 통신 채널(706)을 이용하여 네트워크/버스 통신 채널(706)을 구현할 수 있다. 예를 들어, 네트워크/버스 통신 접속(706)은, 제1 컴퓨팅 시스템(702)으로부터 제2 컴퓨팅 시스템(704)으로의 전송 동안에 하나 이상의 상이한 통신 채널을 통해 라우팅되는 인터넷 접속일 수 있다. 마찬가지로, 네트워크/버스 통신 접속(706)은, 컴퓨팅 디바이스의 내부 통신 버스이거나, 메모리 칩 또는 중앙 처리 유닛(CPU) 등의 처리 또는 메모리 저장 집적 회로(IC) 칩의 내부 버스일 수도 있다. 네트워크/버스 통신 채널(706)은, 유선 통신, 무선 전자기 통신, 광섬유 케이블 통신, 광/레이저 통신, 소닉/사운드 통신 등, 및 다양한 통신 채널들의 이들의 임의의 조합을 포함한 그러나 이것으로 제한되지 않는 전자 데이터 통신 신호를 전송할 수 있는 임의의 매체를 이용할 수 있다.
다양한 실시예들은 제1 컴퓨터 시스템(702) 및/또는 제2 컴퓨터 시스템(704) 상에서 동작하는 애플리케이션을 통해 여기서 설명된 제어 및 관리 기능들을 제공할 수 있다. 제1 컴퓨터 시스템(702) 및/또는 제2 컴퓨터 디바이스(704) 각각은, 컴퓨터 또는 컴퓨터 시스템, 또는 한 실시예의 통신들 및 계산들을 수행할 수 있는 기타 임의의 전자 디바이스일 수 있다. 제1 컴퓨터 시스템(702) 및/또는 제2 컴퓨터 시스템(704)들은, 범용 컴퓨터, 랩탑/휴대형 컴퓨터, 태블릿 디바이스, 스마트 폰, 산업용 제어 컴퓨터, 데이터 저장 시스템 제어기, CPU, GPU(Graphical Processing Unit), ASI(Application Specific Integrated Circuit), 및/또는 FPGA(Field Programmable Gate Array)를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 실시예들은, 컴퓨터(또는 기타의 전자 디바이스) 또는 컴퓨터 시스템이 다양한 실시예들에 따른 프로세스 또는 프로세스들을 수행하도록 프로그램/동작시키는데 이용될 수 있는 명령어들을 저장한, 컴퓨터-판독가능한, 또는 머신-판독가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 컴퓨터-판독가능한 매체는, 하드 디스크 드라이브, 플로피 디스켓, 광학 디스크, 컴팩트 디스크 판독전용 메모리(CD-ROM), DVD-ROM(Digital Versatile Disc ROM), 범용 직렬 버스(Universal Serial Bus, USB) 메모리 스틱, 광 자기 디스크, ROM, RAM(random access memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 광자기 카드, 플래시 메모리, 또는 전자적 명령어들을 저장하기에 적합한 다른 유형의 매체/머신-판독가능한 매체를 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 컴퓨터 프로그램 명령어들은, 단일 컴퓨터/전자 디바이스 상에 상주하여 동작하거나, 다양한 부분들이 컴퓨터 시스템을 포함하는 복수의 컴퓨터/디바이스에 걸쳐 분산될 수 있다. 게다가, 실시예들은 또한 컴퓨터 프로그램 제품으로서 다운로드될 수 있고, 여기서, 프로그램은, 통신 링크(예를 들어, 모뎀 또는 유선/케이블 및 무선 접속을 포함한 네트워크 접속)를 통해 캐리어파 또는 기타의 전파 매체로 구현된 데이터 신호들을 통해 원격 컴퓨터로부터 요청측 컴퓨터로 전송될 수 있다.
암호화 키 교환 실시예에 대한 동작 플로차트(도 8)
도 8은 한 실시예에 대한 키 교환 시스템 동작의 플로차트(800)이다. 프로세스 810에서, 제1 컴퓨터 시스템(802)은 제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터()를 생성한다. 프로세스 812에서, 제1 컴퓨터 시스템(802)은 제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터()를 생성한다. 프로세스 830에서, 제2 컴퓨터 시스템(804)은 제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터()를 생성한다. 프로세스 832에서, 제2 컴퓨터 시스템(804)은 제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 생성한다. 프로세스 834에서, 제2 컴퓨터 시스템(804)은 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 제1 컴퓨터 시스템(802)에 전송한다. 프로세스 814에서, 제1 컴퓨터 시스템(802)은 제1 헨젤 인코딩된 공개 식별 멀티벡터() 및 제2 헨젤 인코딩된 공개 식별 멀티벡터()의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터()를 생성한다. 프로세스 816에서, 제1 컴퓨터 시스템(802)은 공개 통신 식별자 멀티벡터()를 제2 컴퓨터 시스템(804)에 전송한다. 프로세스 818에서, 제1 컴퓨터 시스템(802)은 제1 헨젤 인코딩된 개인 식별 멀티벡터()와 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터()를 생성한다. 상기 프로세스 820에서, 제1 컴퓨터 시스템(802)은 제1 서브키 멀티벡터()를 제2 컴퓨터 시스템(804)에 전송한다. 프로세스 838에서, 제2 컴퓨터 시스템(804)은 공개 통신 식별자 멀티벡터()와 제2 헨젤 인코딩된 개인 식별 멀티벡터()의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터()를 생성한다. 프로세스 840에서, 제2 컴퓨터 시스템(804)은 제2 서브키 멀티벡터()를 제1 컴퓨터 시스템(802)에 전송한다. 프로세스 822에서, 제1 컴퓨터 시스템(802)은, 제1 헨젤 인코딩된 개인 식별 멀티벡터(), 제2 서브키 멀티벡터(), 및 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산(privately calculate)한다. 프로세스 842에서, 제2 컴퓨터 시스템(804)은, 제1 서브키 멀티벡터(), 제2 헨젤 인코딩된 개인 식별 멀티벡터(), 및 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산한다. 특히, 제1 컴퓨터 시스템(802)과 제2 컴퓨터 시스템(804) 양쪽 모두는, 제1 컴퓨터 시스템(802)과 제2 컴퓨터 시스템(804) 사이에서 헨젤 인코딩된 비밀 키 멀티벡터()를 직접 전송하지 않고 헨젤 인코딩된 비밀 키 멀티벡터()를 별도로 계산했다.
또한, 도 8와 관련하여 전술된 플로차트들 및 플로차트 상세사항들은 방법 또는 프로세스로서 구현될 수 있는 방법론을 기술하지만, 또 다른 실시예는, 도 8의 플로차트 및 플로차트 상세사항들과 관련하여 전술된 프로세스들을 구현함으로써 암호화된 데이터를 저장하거나 및/또는 이들의 동형 연산들을 수행하는 컴퓨터 시스템 및/또는 중간 컴퓨팅 디바이스로서 인식될 수 있다. 또한, 컴퓨팅 시스템 및/또는 중간 컴퓨팅 시스템을 설명할 때, 방법론에 대해 전술된 하나 또는 그 이상의 개개의 프로세스들은 세분되어 전체 암호화 컴퓨터 시스템의 서브시스템으로서 표현될 수 있다. 컴퓨터 시스템의 서브시스템은, 전체적으로 또는 부분적으로, 전용 ASIC(Application Specific Integrated Circuit) 또는 FPGA(Field Programmable Gate Array) 등의, 특정한 하드웨어 구현 시스템에 할당될 수 있다. 하나 이상의 서브시스템은, 전체적으로 또는 부분적으로, 컴퓨터 시스템의 동작을, 소프트웨어 또는 펌웨어 명령어들로서 구현된 하나 이상의 서브시스템에 관하여 정의하는 소프트웨어 또는 펌웨어 명령어들로서 대안적으로 구현될 수 있다. 소프트웨어 또는 펌웨어 명령어들은, 중앙 처리 유닛, 메모리, 및/또는 컴퓨터 시스템의 기타의 시스템들이 특정한 하나 이상의 서브시스템 지정된 피처에 따라 동작하게 할 수 있다.
본 발명의 상기의 상세한 설명은 예시와 설명의 목적을 위해 제공되었다. 상기 설명은 본 발명을 빠짐없이 드러내거나 본 발명을 개시된 그대로의 형태로 제한하기 위한 것이 아니고, 상기 교시에 비추어 다른 수정 및 변형이 가능할 수 있다. 실시예들은, 본 발명의 원리와 그 실제적 적용을 최상으로 설명함으로써 본 기술분야의 통상의 기술자가 다양한 실시예에서 본 발명을 최상으로 이용하고 고려중인 특정한 용도에 적합한 다양한 수정을 가할 수 있게 하도록 선택되고 설명되었다.
Claims (18)
- 적어도 2차원인 차원 크기(N)를 공유하는 기하 대수 멀티벡터들의 이용을 포함하는 소스 컴퓨팅 디바이스로부터 목적지 컴퓨팅 디바이스로의 숫자 메시지 데이터()의 암호화된 전송을 위한 방법으로서, 여기에 활용되는 상기 기하 대수 멀티벡터들의 각각에 대한 계수들의 수는 상기 차원 크기(N)의 각각의 증분적 증가에 대해 2의 인자(2 N )만큼 증가되며, 상기 방법은:
비밀 키 컴퓨팅 디바이스에 의해 랜덤 소수(random prime number)로서 적어도 하나의 비밀 소수(p)를 생성하는 단계;
상기 비밀 키 컴퓨팅 디바이스에 의해 상기 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산하는 단계;
상기 비밀 키 컴퓨팅 디바이스에 의해 난수로서 적어도 하나의 비밀 키 값(k)을 생성하는 단계;
상기 적어도 하나의 비밀 키 멀티벡터의 계수 값들의 합이 상기 적어도 하나의 비밀 키 값(k)과 같도록 상기 비밀 키 컴퓨팅 디바이스에 의해 상기 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터를 생성하는 단계;
적어도 상기 적어도 하나의 비밀 키 멀티벡터의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초하여 헨젤 인코딩 계산들의 함수로서 상기 적어도 하나의 비밀 키 멀티벡터의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 적어도 하나의 비밀 키 멀티벡터의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터의 각각의 대응하는 계수에 적용함으로써, 상기 비밀 키 컴퓨팅 디바이스에 의해 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터를 생성하는 단계;
상기 비밀 키 컴퓨팅 디바이스에 의해, 상기 적어도 하나의 비밀 소수(p), 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터, 및 상기 공개 모듈러스(q)를 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스와 공유하는 단계 ― 상기 적어도 하나의 비밀 소수(p) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터의 상기 공유는, 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스에 대한 것이지만, 암호화되지 않은 데이터에 액세스하도록 의도되지 않은 다른 디바이스에 대해서는 비밀로 유지됨 ―;
상기 메시지 멀티벡터()의 계수 값들의 합이 상기 숫자 메시지 데이터()와 동일하도록 상기 소스 컴퓨팅 디바이스에 의해 상기 숫자 메시지 데이터()를 나타내는 메시지 멀티벡터()를 생성하는 단계;
상기 소스 컴퓨팅 디바이스에 의해, 상기 메시지 멀티벡터()에 관해 동형 멀티벡터()와 기하 대수 기하 곱 연산을 수행함으로써 상기 메시지 멀티벡터()를 동형으로 만드는 단계 ― 상기 동형 멀티벡터()는 기하 대수 기하 곱 결과가 동형이 되도록 허용하는 멱등 멀티벡터(idempotent multivector)임 ―;
상기 소스 컴퓨팅 디바이스에 의해, 적어도 상기 메시지 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 상기 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 메시지 멀티벡터()의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 헨젤 인코딩된 메시지 멀티벡터()를 생성하는 단계;
상기 소스 컴퓨팅 디바이스에 의해, 상기 헨젤 인코딩된 메시지 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터()를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터()를 암호화하는 단계;
상기 소스 컴퓨팅 디바이스에 의해, 상기 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 단계;
상기 목적지 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터()를 수신하는 단계;
상기 목적지 컴퓨팅 디바이스에 의해, 상기 암호문 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 상기 암호문 멀티벡터()를 해독하여 상기 헨젤 인코딩된 메시지 멀티벡터()로 되돌리는 단계;
상기 목적지 컴퓨팅 디바이스에 의해, 적어도 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩하고, 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 상기 디코딩된 헨젤 코드 표현들을 상기 메시지 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 상기 메시지 멀티벡터()를 생성하는 단계; 및
상기 목적지 컴퓨팅 디바이스에 의해, 상기 메시지 멀티벡터()의 계수들을 합산함으로써 상기 숫자 메시지 데이터(m)를 생성하는 단계
를 포함하는, 방법. - 제1항에 있어서,
상기 소스 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 상기 프로세스는 대신에 상기 암호문 멀티벡터()를 중간 컴퓨팅 시스템에 전송하고;
상기 방법은,
상기 중간 컴퓨팅 시스템에 의해 상기 암호문 멀티벡터()를 수신하는 단계;
상기 중간 컴퓨팅 시스템에 의해, 결과적으로 동형 결과 암호문 멀티벡터()가 되는, 상기 중간 컴퓨팅 시스템에 저장된 적어도 하나의 저장된 암호문 멀티벡터()와의, 상기 암호문 멀티벡터()의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산의 함수로서, 상기 동형 결과 암호문 멀티벡터()를 생성하는 단계 ― 상기 적어도 하나의 저장된 암호문 멀티벡터()는 상기 암호문 멀티벡터()를 암호화하는데 이용된 것과 균등한 암호화 파라미터들 및 프로세스들을 이용하여 암호화됨 ―; 및
상기 중간 컴퓨팅 디바이스에 의해 상기 동형 결과 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 단계
를 더 포함하고,
상기 목적지 컴퓨팅 디바이스는, 수치 결과(r)가 상기 암호화되지 않은 숫자 메시지(m)와 상기 적어도 하나의 저장된 암호문 멀티벡터()에 대응하는 적어도 하나의 암호화되지 않은 값의 균등한 적어도 하나의 덧셈, 뺄셈, 곱셈 또는 나눗셈과 같도록 상기 수치 결과 데이터(r)를 획득하게끔 상기 암호문 멀티벡터() 대신에 상기 동형 결과 암호문 멀티벡터()에서 시작하여 계수들을 해독, 디코딩, 및 합산하는, 방법. - 제3항에 있어서, 상기 기하학적 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산들은 적어도 하나의 암호화된 이미지에 관한 이미지 처리 동작들을 수행하는데 이용되는, 방법.
- 제1항에 있어서,
상기 소스 컴퓨팅 디바이스에 의해, 상기 헨젤 인코딩된 메시지 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 상기 함수로서 암호문 멀티벡터()를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터()를 상기 소스 컴퓨팅 디바이스에 의해 암호화하는 상기 프로세스 이전에 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 관해 알려진 추가적인 인코딩 동작을 수행하는 단계; 및
상기 목적지 컴퓨팅 디바이스에 의해, 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩함으로써 상기 목적지 컴퓨팅 디바이스에 의해 상기 메시지 멀티벡터()를 생성하는 상기 프로세스 이전에 상기 암호문 멀티벡터()와 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 상기 함수로서 상기 목적지 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터()를 해독하는 상기 프로세스로부터 발생하는 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 관해 상기 알려진 추가적인 인코딩 동작과 연관된 임의의 필요한 디코딩 동작들을 수행하는 단계
를 더 포함하는, 방법. - 제5항에 있어서, 상기 알려진 추가적인 인코딩 동작은 모듈로 거듭제곱(modular exponentiation) 및 CRT(Chinese Remainder Theorem)로부터 선택된 그룹 중 적어도 하나로 구성되는, 방법.
- 암호문 멀티벡터()와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터()를 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 업데이트하는 방법으로서,
키 업데이트 컴퓨터 시스템에 의해, 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()와 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 곱 연산으로서 제1 공개 토큰 멀티벡터()를 생성하는 단계;
상기 키 업데이트 컴퓨터 시스템에 의해, 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()와 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 곱 연산으로서 제2 공개 토큰 멀티벡터()를 생성하는 단계; 및
상기 키 업데이트 컴퓨터 시스템에 의해, 상기 제1 공개 토큰 멀티벡터(), 상기 암호문 멀티벡터(), 및 상기 제2 공개 토큰 멀티벡터()의 기하 곱 연산()의 결과로서 상기 암호문 멀티벡터()를 업데이트하되, 상기 암호문 멀티벡터()와 연관된 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()가 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 업데이트되게 하는 단계
를 포함하는, 방법. - 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이에서 헨젤 인코딩된 비밀 키 멀티벡터()를 교환하기 위한 방법으로서,
상기 제1 컴퓨터 시스템에 의해, 제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터()를 생성하는 단계;
상기 제1 컴퓨터 시스템에 의해, 제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터()를 생성하는 단계;
상기 제2 컴퓨터 시스템에 의해, 제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터()를 생성하는 단계;
상기 제2 컴퓨터 시스템에 의해, 제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 생성하는 단계;
상기 제2 컴퓨터 시스템에 의해, 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 상기 제1 컴퓨터 시스템에 전송하는 단계;
상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 공개 식별 멀티벡터() 및 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터()의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터()를 생성하는 단계;
상기 제1 컴퓨터 시스템에 의해, 상기 공개 통신 식별자 멀티벡터()를 상기 제2 컴퓨터 시스템에 전송하는 단계;
상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터()와 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터()를 생성하는 단계;
상기 제1 컴퓨터 시스템에 의해, 상기 제1 서브키 멀티벡터()를 상기 제2 컴퓨터 시스템에 전송하는 단계;
상기 제2 컴퓨터 시스템에 의해, 상기 공개 통신 식별자 멀티벡터()와 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터()의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터()를 생성하는 단계;
상기 제2 컴퓨터 시스템에 의해, 상기 제2 서브키 멀티벡터()를 상기 제1 컴퓨터 시스템에 전송하는 단계;
상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(), 상기 제2 서브키 멀티벡터(), 및 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산하는 단계; 및
상기 제1 컴퓨터 시스템과 상기 제2 컴퓨터 시스템 사이에서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 직접 전송하지 않고 이제 상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템 양쪽 모두가 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 별개로 계산하도록, 상기 제1 서브키 멀티벡터(), 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(), 및 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서, 상기 제2 컴퓨터 시스템에 의해, 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산하는 단계
를 포함하는, 방법. - 적어도 2차원인 차원 크기(N)를 공유하는 기하 대수 멀티벡터들의 이용을 포함하는 소스 컴퓨팅 디바이스로부터 목적지 컴퓨팅 디바이스로의 숫자 메시지 데이터()의 암호화된 전송을 위한 암호화 시스템으로서, 여기에 활용되는 상기 기하 대수 멀티벡터들의 각각에 대한 계수들의 수는 상기 차원 크기(N)의 각각의 증분적 증가에 대해 2의 인자(2 N )만큼 증가되며, 상기 암호화 시스템은:
비밀 키 컴퓨팅 디바이스, 상기 소스 컴퓨팅 디바이스, 및 상기 목적지 컴퓨팅 디바이스를 포함하고,
상기 비밀 키 컴퓨팅 디바이스는,
랜덤 소수로서 적어도 하나의 비밀 소수(p)를 생성하는 비밀 소수 생성 서브시스템;
상기 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산하는 공개 모듈러스 계산 서브시스템;
난수로서 적어도 하나의 비밀 키 값(k)을 생성하는 비밀 키 값 생성 서브시스템;
상기 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터()를 생성하되, 상기 적어도 하나의 비밀 키 멀티벡터()의 계수 값들의 합이 상기 적어도 하나의 비밀 키 값(k)과 같도록 생성하는 비밀 키 멀티벡터 생성 서브시스템;
적어도 상기 적어도 하나의 비밀 키 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초하여 헨젤 인코딩 계산들의 함수로서 상기 적어도 하나의 비밀 키 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 적어도 하나의 비밀 키 멀티벡터()의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()를 생성하는 헨젤 인코딩된 비밀 키 멀티벡터 생성 서브시스템;
상기 적어도 하나의 비밀 소수(p), 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(), 및 상기 공개 모듈러스(q)와 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스와의 키 정보 공유 서브시스템 ― 상기 적어도 하나의 비밀 소수(p) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 상기 공유는, 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스에 대한 것이지만, 암호화되지 않은 데이터에 액세스하도록 의도되지 않은 다른 디바이스에 대해서는 비밀로 유지됨 ―;
을 더 포함하고,
상기 소스 컴퓨팅 디바이스는,
상기 메시지 멀티벡터()의 계수 값들의 합이 상기 숫자 메시지 데이터()와 동일하도록 상기 숫자 메시지 데이터()를 나타내는 메시지 멀티벡터()를 생성하는 메시지 멀티벡터 생성 서브시스템;
상기 메시지 멀티벡터()에 관해 동형 멀티벡터()와 기하 대수 기하 곱 연산을 수행함으로써 상기 메시지 멀티벡터()를 동형으로 만드는 메시지 멀티벡터 동형화 서브시스템 ― 상기 동형 멀티벡터()는 기하 대수 기하 곱 결과가 동형이 되도록 허용하는 멱등 멀티벡터임 ―;
적어도 상기 메시지 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 상기 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 메시지 멀티벡터()의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 헨젤 인코딩된 메시지 멀티벡터()를 생성하는 헨젤 인코딩된 메시지 멀티벡터 생성 서브시스템;
상기 헨젤 인코딩된 메시지 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터()를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터()를 암호화하는 기하 곱 암호화 서브시스템;
상기 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 암호문 멀티벡터 전송 서브시스템
을 더 포함하고;
상기 목적지 컴퓨팅 디바이스는,
상기 암호문 멀티벡터()를 수신하는 암호문 멀티벡터 수신 서브시스템;
상기 암호문 멀티벡터() 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 상기 암호문 멀티벡터()를 해독하여 상기 헨젤 인코딩된 메시지 멀티벡터()로 되돌리는 기하 곱 해독 서브시스템;
적어도 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩하고, 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 대한 상기 디코딩된 헨젤 코드 표현들을 상기 메시지 멀티벡터()의 각각의 대응하는 계수에 적용함으로써, 상기 메시지 멀티벡터()를 생성하는 메시지 멀티벡터 복원 서브시스템; 및
상기 메시지 멀티벡터()의 계수들을 합산함으로써 상기 숫자 메시지 데이터(m)를 생성하는 숫자 메시지 데이터 복원 서브시스템
을 더 포함하는, 암호화 시스템. - 제10항에 있어서,
상기 소스 컴퓨팅 디바이스의 상기 암호문 멀티벡터 전송 서브시스템은 상기 암호문 멀티벡터()를 상기 목적지 컴퓨팅 디바이스 대신에 중간 컴퓨팅 시스템에 전송하고;
상기 암호화 시스템은 상기 중간 컴퓨팅 시스템을 더 포함하며, 상기 중간 컴퓨팅 시스템은,
상기 암호문 멀티벡터()를 수신하는 암호문 멀티벡터 수신 중간 서브시스템;
결과적으로 동형 결과 암호문 멀티벡터()가 되는, 상기 중간 컴퓨팅 시스템에 저장된 적어도 하나의 저장된 암호문 멀티벡터()와의, 상기 암호문 멀티벡터()의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산의 함수로서, 상기 동형 결과 암호문 멀티벡터()를 생성하는 동형 계산 서브시스템 ― 상기 적어도 하나의 저장된 암호문 멀티벡터()는 상기 암호문 멀티벡터()를 암호화하는데 이용된 것과 균등한 암호화 파라미터들 및 프로세스들을 이용하여 암호화됨 ―; 및
상기 동형 결과 암호문 멀티벡터()를 상기 목적지 컴퓨팅 시스템에 전송하는 결과 암호문 멀티벡터 전송 서브시스템
을 더 포함하고,
상기 목적지 컴퓨팅 디바이스는, 수치 결과(r)가 상기 암호화되지 않은 숫자 메시지(m)와 상기 적어도 하나의 저장된 암호문 멀티벡터()에 대응하는 적어도 하나의 암호화되지 않은 값의 균등한 적어도 하나의 덧셈, 뺄셈, 곱셈 또는 나눗셈과 같도록 상기 수치 결과 데이터(r)를 획득하게끔 상기 암호문 멀티벡터() 대신에 상기 동형 결과 암호문 멀티벡터()에서 시작하여 계수들을 해독, 디코딩, 및 합산하는, 암호화 시스템. - 제12항에 있어서, 상기 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산들은 적어도 하나의 암호화된 이미지에 관한 이미지 처리 동작들을 수행하는데 이용되는, 암호화 시스템.
- 제10항에 있어서,
상기 소스 컴퓨팅 디바이스는 상기 기하 곱 암호화 서브시스템의 동작 이전에 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 관해 알려진 추가적인 인코딩 동작을 수행하는 추가적인 알려진 인코딩 서브시스템을 더 포함하고;
상기 목적지 컴퓨팅 디바이스는, 상기 메시지 멀티벡터 복원 서브시스템의 동작 이전에 상기 기하 곱 해독 서브시스템으로부터 발생하는 상기 헨젤 인코딩된 메시지 멀티벡터()의 각각의 계수에 관해 상기 알려진 추가적인 인코딩 동작과 연관된 임의의 필요한 디코딩 동작들을 수행하는 추가적인 알려진 디코딩 서브시스템을 더 포함하는, 암호화 시스템. - 제14항에 있어서, 상기 알려진 추가적인 인코딩 동작은 모듈로 거듭제곱 및 CRT(Chinese Remainder Theorem)로부터 선택된 그룹 중 적어도 하나로 구성되는, 암호화 시스템.
- 암호문 멀티벡터()와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터()를 연관된 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 업데이트하는 키 업데이트 시스템으로서,
상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()와 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 곱 연산으로서 제1 공개 토큰 멀티벡터()를 생성하는 제1 공개 토큰 생성 서브시스템;
상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()와 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()의 역()의 기하 대수 곱 연산으로서 제2 공개 토큰 멀티벡터()를 생성하는 제2 공개 토큰 생성 서브시스템; 및
상기 제1 공개 토큰 멀티벡터(), 상기 암호문 멀티벡터(), 및 상기 제2 공개 토큰 멀티벡터()의 기하 곱 연산()의 결과로서 상기 암호문 멀티벡터()를 업데이트하되, 상기 암호문 멀티벡터()와 연관된 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터()가 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터()로 업데이트되게끔, 업데이트하는 암호문 멀티벡터 키 업데이트 서브시스템
을 포함하는, 키 업데이트 시스템. - 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이에서 헨젤 인코딩된 비밀 키 멀티벡터()를 교환하는 키 교환 시스템으로서,
상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템을 포함하고,
상기 제1 컴퓨터 시스템은,
제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터()를 생성하는 제1 개인 식별 멀티벡터 생성 서브시스템;
제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터()를 생성하는 제1 공개 식별 멀티벡터 생성 서브시스템;
상기 제1 헨젤 인코딩된 공개 식별 멀티벡터() 및 제2 헨젤 인코딩된 공개 식별 멀티벡터()의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터()를 생성하는 공개 통신 식별자 멀티벡터 생성 서브시스템;
상기 공개 통신 식별자 멀티벡터()를 상기 제2 컴퓨터 시스템에 전송하는 공개 통신 식별자 전송 서브시스템;
상기 제1 헨젤 인코딩된 개인 식별 멀티벡터()와 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터()를 생성하는 제1 서브키 멀티벡터 생성 서브시스템;
상기 제1 서브키 멀티벡터()를 상기 제2 컴퓨터 시스템에 전송하는 제1 서브키 멀티벡터 전송 서브시스템;
상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(), 상기 제2 서브키 멀티벡터(), 및 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산하는 제1 컴퓨터 비밀 키 멀티벡터 계산 서브시스템
을 더 포함하고;
상기 제2 컴퓨터 시스템은,
제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터()를 생성하는 제2 개인 식별 멀티벡터 생성 서브시스템;
제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 생성하는 제2 공개 식별 멀티벡터 생성 서브시스템;
상기 제2 헨젤 인코딩된 공개 식별 멀티벡터()를 상기 제1 컴퓨터 시스템에 전송하는 제2 공개 식별 멀티벡터 전송 서브시스템;
상기 공개 통신 식별자 멀티벡터()와 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터()의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터()를 생성하는 제2 서브키 멀티벡터 생성 서브시스템;
상기 제2 서브키 멀티벡터()를 상기 제1 컴퓨터 시스템에 전송하는 제2 서브키 멀티벡터 전송 서브시스템;
상기 제1 컴퓨터 시스템과 상기 제2 컴퓨터 시스템 사이에서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 직접 전송하지 않고 이제 상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템 양쪽 모두가 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 별개로 계산하도록, 상기 제1 서브키 멀티벡터(), 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(), 및 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터()의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터()를 개인적으로 계산하는 제2 컴퓨터 비밀 키 멀티벡터 계산 서브시스템
을 더 포함하는, 키 교환 시스템.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962883988P | 2019-08-07 | 2019-08-07 | |
US62/883,988 | 2019-08-07 | ||
US201962885056P | 2019-08-09 | 2019-08-09 | |
US62/885,056 | 2019-08-09 | ||
US16/984,117 | 2020-08-03 | ||
US16/984,117 US11323255B2 (en) | 2019-08-01 | 2020-08-03 | Methods and systems for encryption and homomorphic encryption systems using Geometric Algebra and Hensel codes |
PCT/US2020/044808 WO2021022261A2 (en) | 2019-08-01 | 2020-08-04 | Methods and systems for encryption and homomorphic encryption systems using geometric algebra and hensel codes |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220079522A true KR20220079522A (ko) | 2022-06-13 |
Family
ID=81983917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227007069A KR20220079522A (ko) | 2019-08-07 | 2020-08-04 | 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP2022543588A (ko) |
KR (1) | KR20220079522A (ko) |
CN (1) | CN114731268A (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115801308B (zh) * | 2022-09-16 | 2023-08-29 | 北京瑞莱智慧科技有限公司 | 数据处理方法、相关装置及存储介质 |
CN117221018B (zh) * | 2023-11-09 | 2024-01-30 | 北京睿航至臻科技有限公司 | 一种基于数据编码的数据安全传输方法及系统 |
-
2020
- 2020-08-04 JP JP2022506449A patent/JP2022543588A/ja active Pending
- 2020-08-04 KR KR1020227007069A patent/KR20220079522A/ko unknown
- 2020-08-04 CN CN202080070226.2A patent/CN114731268A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN114731268A (zh) | 2022-07-08 |
JP2022543588A (ja) | 2022-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11323255B2 (en) | Methods and systems for encryption and homomorphic encryption systems using Geometric Algebra and Hensel codes | |
US20190044697A1 (en) | Methods and systems for enhanced data-centric homomorphic encryption searching using geometric algebra | |
US8559631B1 (en) | Systems and methods for efficient decryption of attribute-based encryption | |
US20190109701A1 (en) | Methods and systems for enhanced data-centric homomorphic encryption sorting using geometric algebra | |
JP6974461B2 (ja) | 幾何代数を用いた高度データ中心型暗号化システムのための方法およびシステム | |
Thabit et al. | A Novel Effective Lightweight Homomorphic Cryptographic Algorithm for data security in cloud computing | |
Orobosade et al. | Cloud application security using hybrid encryption | |
US20180294951A1 (en) | Methods and systems for enhanced data-centric scalar multiplicative homomorphic encryption systems using geometric algebra | |
Kumar et al. | Novel pseudo random key & cosine transformed chaotic maps based satellite image encryption | |
Gupta et al. | Session key based novel lightweight image encryption algorithm using a hybrid of Chebyshev chaotic map and crossover | |
KR20220079522A (ko) | 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들 | |
Krishnamoorthy et al. | Implementation and management of cloud security for industry 4. O-data using hybrid elliptical curve cryptography | |
US10075290B2 (en) | Operator lifting in cryptographic algorithm | |
Joseph et al. | A Novel Algorithm for secured data sharing in cloud using GWOA-DNA cryptography | |
WO2019079353A2 (en) | METHODS AND SYSTEMS FOR ENHANCED HOMOMORPHIC ENCRYPTION SEARCH BASED ON DATA USING GEOMETRIC ALGEBRA | |
Fatima et al. | A Secure Framework for IoT Healthcare Data Using Hybrid Encryption | |
US20220094532A1 (en) | Methods and systems for homomorphic data representation and concealment powered by clifford geometric algebra | |
Sasikumar et al. | Comprehensive Review and Analysis of Cryptography Techniques in Cloud Computing | |
KR20230003954A (ko) | 영지식 증명을 위한 암호문 처리 방법 및 장치 | |
WO2018187604A1 (en) | Methods and systems for enhanced data-centric scalar multiplicative homomorphic encryption systems using geometric algebra | |
KR102022333B1 (ko) | 공개키 암호 알고리즘을 이용한 암호화/복호화 방법 및 장치 | |
Mahajan et al. | Hybrid Methods for Increasing Security of IoT and Cloud Data | |
Verma et al. | An enhanced cryptographic system for fast and efficient data transmission | |
KR102257779B1 (ko) | 다자간 계산을 위한 유사 보간 | |
Ekka et al. | Enrichment of security using hybrid algorithm |