KR20220079522A - 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들 - Google Patents

기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들 Download PDF

Info

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
Application number
KR1020227007069A
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
Priority claimed from US16/984,117 external-priority patent/US11323255B2/en
Application filed by 엑스-로고스, 엘엘씨 filed Critical 엑스-로고스, 엘엘씨
Publication of KR20220079522A publication Critical patent/KR20220079522A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic 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/3213Cryptographic 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
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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)이라는 단어는 고대 그리스어에서 유래했다:
Figure pct00001
(homos)는 "같은"을 의미하고
Figure pct00002
(morphe)는 "형태" 또는 "형상"을 의미한다. 동형은 사용 분야에 따라 상이한 정의들을 가질 수 있다. 예를 들어, 수학에서는, 동형은 제2 세트로의 제1 세트의 변환으로서 간주될 수 있고, 여기서, 제1 세트의 요소들 사이의 관계는 제2 세트의 요소들의 관계에서 보존된다.
예를 들어, 집합들
Figure pct00003
Figure pct00004
사이의 맵
Figure pct00005
는 아래와 같은 경우
Figure pct00006
Figure pct00007
로의 동형이다
Figure pct00008
여기서,
Figure pct00009
는,
Figure pct00010
Figure pct00011
사이의 관계를 정의하는 상응하는 그룹 연산이다.
더 구체적으로, 추상 대수의 경우, 동형이라는 용어는, 그룹들, 고리들, 또는 벡터 공간들 등의, 2개의 대수 구조들 사이의 구조 보존형 맵일 수 있다. 이소모피즘(Isomorphisms), 오토모피즘(automorphisms), 및 엔도모피즘(endomorphisms)은 전형적으로 동형의 특별한 유형들인 것으로 간주된다. 동형의 다른 더 구체적인 정의들 중에서, 대수 동형은 2개의 세트들 사이의 대수 구조를 보존하는 동형으로서 간주될 수 있다.
본 발명의 한 실시예는, 적어도 2차원인 차원 크기(N)를 공유하는 기하 대수(Geometric Algebra) 멀티벡터들의 이용을 포함하는 소스 컴퓨팅 디바이스로부터 목적지 컴퓨팅 디바이스로의 숫자 메시지 데이터(
Figure pct00012
)의 암호화된 전송을 위한 방법 ― 상기 기하 대수 멀티벡터들의 각각에 대한 계수들의 수는 상기 차원 크기(N)의 각각의 증분적 증가에 대해 2의 인자(2 N )만큼 증가됨 ― 을 포함할 수 있고, 상기 방법은: 비밀 키 컴퓨팅 디바이스에 의해 랜덤 소수로서 적어도 하나의 비밀 소수(p)를 생성하는 단계; 상기 비밀 키 컴퓨팅 디바이스에 의해 상기 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산하는 단계; 상기 비밀 키 컴퓨팅 디바이스에 의해 난수로서 적어도 하나의 비밀 키 값(k)을 생성하는 단계; 상기 적어도 하나의 비밀 키 멀티벡터
Figure pct00013
의 계수 값들의 합이 상기 적어도 하나의 비밀 키 값(k)과 같도록 상기 비밀 키 컴퓨팅 디바이스에 의해 상기 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터
Figure pct00014
를 생성하는 단계; 적어도 상기 적어도 하나의 비밀 키 멀티벡터
Figure pct00015
의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초하여 헨젤(헨젤) 인코딩 계산들의 함수로서 상기 적어도 하나의 비밀 키 멀티벡터
Figure pct00016
의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 적어도 하나의 비밀 키 멀티벡터
Figure pct00017
의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00018
)의 각각의 대응하는 계수에 적용함으로써, 상기 비밀 키 컴퓨팅 디바이스에 의해 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00019
)를 생성하는 단계; 상기 비밀 키 컴퓨팅 디바이스에 의해, 상기 적어도 하나의 비밀 소수(p), 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00020
), 및 상기 공개 모듈러스(q)를 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스와 공유하는 단계 ― 상기 적어도 하나의 비밀 소수(p) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00021
)의 상기 공유는, 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스에 대한 것이지만, 암호화되지 않은 데이터에 액세스하도록 의도되지 않은 다른 디바이스에 대해서는 비밀로 유지됨 ―; 상기 메시지 멀티벡터(
Figure pct00022
)의 계수 값들의 합이 상기 숫자 메시지 데이터(
Figure pct00023
)와 동일하도록 상기 소스 컴퓨팅 디바이스에 의해 상기 숫자 메시지 데이터(
Figure pct00024
)를 나타내는 메시지 멀티벡터(
Figure pct00025
)를 생성하는 단계; 상기 소스 컴퓨팅 디바이스에 의해, 상기 메시지 멀티벡터(
Figure pct00026
)에 관해 동형 멀티벡터(
Figure pct00027
)와 기하 대수 기하 곱 연산을 수행함으로써 상기 메시지 멀티벡터(
Figure pct00028
)를 동형으로 만드는 단계 ― 상기 동형 멀티벡터(
Figure pct00029
)는 기하 대수 기하 곱 결과가 동형이되도록 허용하는 멱등 멀티벡터(idempotent multivector)임 ―; 상기 소스 컴퓨팅 디바이스에 의해, 적어도 상기 메시지 멀티벡터(
Figure pct00030
)의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 상기 메시지 멀티벡터(
Figure pct00031
)의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 메시지 멀티벡터(
Figure pct00032
)의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00033
)의 각각의 대응하는 계수에 적용함으로써, 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00034
)를 생성하는 단계; 상기 소스 컴퓨팅 디바이스에 의해, 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00035
) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00036
)에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터(
Figure pct00037
)를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00038
)를 암호화하는 단계; 상기 소스 컴퓨팅 디바이스에 의해, 상기 암호문 멀티벡터(
Figure pct00039
)를 상기 목적지 컴퓨팅 시스템에 전송하는 단계; 상기 목적지 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터(
Figure pct00040
)를 수신하는 단계; 상기 목적지 컴퓨팅 디바이스에 의해, 상기 암호문 멀티벡터(
Figure pct00041
) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00042
)의 역(
Figure pct00043
)에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 상기 암호문 멀티벡터(
Figure pct00044
)를 해독하여 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00045
)로 되돌리는 단계; 상기 목적지 컴퓨팅 디바이스에 의해, 적어도 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00046
)의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00047
)의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩하고 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00048
)의 각각의 계수에 대한 상기 디코딩된 헨젤 코드 표현들을 상기 메시지 멀티벡터(
Figure pct00049
)의 각각의 대응하는 계수에 적용함으로써, 상기 메시지 멀티벡터(
Figure pct00050
)를 생성하는 단계; 및 상기 목적지 컴퓨팅 디바이스에 의해, 상기 메시지 멀티벡터(
Figure pct00051
)의 계수들을 합산함으로써 상기 숫자 메시지 데이터(m)를 생성하는 단계를 포함한다.
본 발명의 한 실시예는 상기 패러그래프의 방법을 더 포함할 수 있고, 여기서, 상기 소스 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터(
Figure pct00052
)를 상기 목적지 컴퓨팅 시스템에 전송하는 상기 프로세스는 대신에 상기 암호문 멀티벡터(
Figure pct00053
)를 중간 컴퓨팅 시스템에 전송하고; 제1항의 방법은, 상기 중간 컴퓨팅 시스템에 의해 상기 암호문 멀티벡터(
Figure pct00054
)를 수신하는 단계; 상기 중간 컴퓨팅 시스템에 의해, 결과적으로 동형 결과 암호문 멀티벡터(
Figure pct00055
)가 되는, 상기 중간 컴퓨팅 시스템에 저장된 적어도 하나의 저장된 암호문 멀티벡터(
Figure pct00056
)와의, 상기 암호문 멀티벡터(
Figure pct00057
)의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산의 함수로서, 상기 동형 결과 암호문 멀티벡터(
Figure pct00058
)를 생성하는 단계 ― 상기 적어도 하나의 저장된 암호문 멀티벡터(
Figure pct00059
)는 상기 암호문 멀티벡터(
Figure pct00060
)를 암호화하는데 이용된 것과 균등한 암호화 파라미터들 및 프로세스들을 이용하여 암호화됨 ―; 및 상기 중간 컴퓨팅 디바이스에 의해 상기 동형 결과 암호문 멀티벡터(
Figure pct00061
)를 상기 목적지 컴퓨팅 시스템에 전송하는 단계를 더 포함하고, 상기 목적지 컴퓨팅 디바이스는, 수치 결과(r)가 상기 암호화되지 않은 숫자 메시지(m)와 상기 적어도 하나의 저장된 암호문 멀티벡터(
Figure pct00062
)에 대응하는 적어도 하나의 암호화되지 않은 값의 균등한 적어도 하나의 덧셈, 뺄셈, 곱셈 또는 나눗셈과 같도록 상기 수치 결과 데이터(r)를 획득하게끔 상기 암호문 멀티벡터(
Figure pct00063
) 대신에 상기 동형 결과 암호문 멀티벡터(
Figure pct00064
)에서 시작하여 계수들을 해독, 디코딩, 및 합산한다.
본 발명의 한 실시예는, 암호문 멀티벡터(
Figure pct00065
)와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00066
)를 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00067
)로 업데이트하는 방법을 더 포함할 수 있고, 이 방법은: 키 업데이트 컴퓨터 시스템에 의해, 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00068
)와 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00069
)의 역(
Figure pct00070
)의 기하 대수 곱 연산으로서 제1 공개 토큰 멀티벡터(
Figure pct00071
)를 생성하는 단계; 상기 키 업데이트 컴퓨터 시스템에 의해, 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00072
)와 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00073
)의 역(
Figure pct00074
)의 기하 대수 곱 연산으로서 제2 공개 토큰 멀티벡터(
Figure pct00075
)를 생성하는 단계; 및 상기 키 업데이트 컴퓨터 시스템에 의해, 상기 제1 공개 토큰 멀티벡터(
Figure pct00076
), 상기 암호문 멀티벡터(
Figure pct00077
), 및 상기 제2 공개 토큰 멀티벡터(
Figure pct00078
)의 기하 곱 연산(
Figure pct00079
)의 결과로서 상기 암호문 멀티벡터(
Figure pct00080
)를 업데이트하되, 상기 암호문 멀티벡터(
Figure pct00081
)와 연관된 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00082
)가 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00083
)로 업데이트되게 하는 단계를 포함한다.
본 발명의 한 실시예는, 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이에서 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00084
)를 교환하기 위한 방법을 더 포함할 수 있고, 이 방법은: 상기 제1 컴퓨터 시스템에 의해, 제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00085
)를 생성하는 단계; 상기 제1 컴퓨터 시스템에 의해, 제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00086
)를 생성하는 단계; 상기 제2 컴퓨터 시스템에 의해, 제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00087
)를 생성하는 단계; 상기 제2 컴퓨터 시스템에 의해, 제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00088
)를 생성하는 단계; 상기 제2 컴퓨터 시스템에 의해, 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00089
)를 상기 제1 컴퓨터 시스템에 전송하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00090
) 및 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00091
)의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터(
Figure pct00092
)를 생성하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 공개 통신 식별자 멀티벡터(
Figure pct00093
)를 상기 제2 컴퓨터 시스템에 전송하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00094
)와 상기 공개 통신 식별자 멀티벡터(
Figure pct00095
)의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터(
Figure pct00096
)를 생성하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 제1 서브키 멀티벡터(
Figure pct00097
)를 상기 제2 컴퓨터 시스템에 전송하는 단계; 상기 제2 컴퓨터 시스템에 의해, 상기 공개 통신 식별자 멀티벡터(
Figure pct00098
)와 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00099
)의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터(
Figure pct00100
)를 생성하는 단계; 상기 제2 컴퓨터 시스템에 의해, 상기 제2 서브키 멀티벡터(
Figure pct00101
)를 상기 제1 컴퓨터 시스템에 전송하는 단계; 상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00102
), 상기 제2 서브키 멀티벡터(
Figure pct00103
), 및 상기 공개 통신 식별자 멀티벡터(
Figure pct00104
)의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터(
Figure pct00105
)의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00106
)를 개인적으로 계산하는 단계; 및 상기 제1 컴퓨터 시스템과 상기 제2 컴퓨터 시스템 사이에서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00107
)를 직접 전송하지 않고 이제 상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템 양쪽 모두가 상기 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00108
)를 별개로 계산하도록, 상기 제1 서브키 멀티벡터(
Figure pct00109
), 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00110
), 및 상기 공개 통신 식별자 멀티벡터(
Figure pct00111
)의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터(
Figure pct00112
)의 기하 대수 기하 덧셈 연산으로서, 상기 제2 컴퓨터 시스템에 의해, 상기 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00113
)를 개인적으로 계산하는 단계를 포함한다.
본 발명의 한 실시예는, 적어도 2차원인 차원 크기(N)를 공유하는 기하 대수 멀티벡터들의 이용을 포함하는 소스 컴퓨팅 디바이스로부터 목적지 컴퓨팅 디바이스로의 숫자 메시지 데이터(
Figure pct00114
)의 암호화된 전송을 위한 암호화 시스템 ― 상기 기하 대수 멀티벡터들의 각각에 대한 계수들의 수는 상기 차원 크기(N)의 각각의 증분적 증가에 대해 2의 인자(2 N )만큼 증가됨 ― 을 더 포함할 수 있고, 상기 암호화 시스템은: 상기 비밀 키 컴퓨팅 디바이스, 상기 소스 컴퓨팅 디바이스, 및 상기 목적지 컴퓨팅 디바이스를 포함하고, 상기 비밀 키 컴퓨팅 디바이스는, 랜덤 소수로서 적어도 하나의 비밀 소수(p)를 생성하는 비밀 소수 생성 서브시스템; 상기 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산하는 공개 모듈러스 계산 서브시스템; 난수로서 적어도 하나의 비밀 키 값(k)을 생성하는 비밀 키 값 생성 서브시스템; 상기 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터(
Figure pct00115
)를 생성하되, 상기 적어도 하나의 비밀 키 멀티벡터(
Figure pct00116
)의 계수 값들의 합이 상기 적어도 하나의 비밀 키 값(k)과 같도록 생성하는 비밀 키 멀티벡터 생성 서브시스템; 적어도 상기 적어도 하나의 비밀 키 멀티벡터(
Figure pct00117
)의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초하여 헨젤 인코딩 계산들의 함수로서 상기 적어도 하나의 비밀 키 멀티벡터(
Figure pct00118
)의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 적어도 하나의 비밀 키 멀티벡터(
Figure pct00119
)의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00120
)의 각각의 대응하는 계수에 적용함으로써, 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00121
)를 생성하는 헨젤 인코딩된 비밀 키 멀티벡터 생성 서브시스템; 상기 적어도 하나의 비밀 소수(p), 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00122
), 및 상기 공개 모듈러스(q)를 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스와 공유하기 위한 키 정보 공유 서브시스템 ― 상기 적어도 하나의 비밀 소수(p) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00123
)의 상기 공유는, 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스에 대한 것이지만, 암호화되지 않은 데이터에 액세스하도록 의도되지 않은 다른 디바이스에 대해서는 비밀로 유지됨 ―;을 더 포함하고, 상기 소스 컴퓨팅 디바이스는, 상기 메시지 멀티벡터(
Figure pct00124
)의 계수 값들의 합이 상기 숫자 메시지 데이터(
Figure pct00125
)와 동일하도록 상기 숫자 메시지 데이터(
Figure pct00126
)를 나타내는 메시지 멀티벡터(
Figure pct00127
)를 생성하는 메시지 멀티벡터 생성 서브시스템; 상기 메시지 멀티벡터(
Figure pct00128
)에 관해 동형 멀티벡터(
Figure pct00129
)와 기하 대수 기하 곱 연산을 수행함으로써 상기 메시지 멀티벡터(
Figure pct00130
)를 동형으로 만드는 메시지 멀티벡터 동형화 서브시스템 ― 상기 동형 멀티벡터(
Figure pct00131
)는 기하 대수 기하 곱 결과가 동형이되도록 허용하는 멱등 멀티벡터(idempotent multivector)임 ―; 적어도 상기 메시지 멀티벡터(
Figure pct00132
)의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 상기 메시지 멀티벡터(
Figure pct00133
)의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 메시지 멀티벡터(
Figure pct00134
)의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00135
)의 각각의 대응하는 계수에 적용함으로써, 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00136
)를 생성하는 헨젤 인코딩된 메시지 멀티벡터 생성 서브시스템; 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00137
) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00138
)에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터(
Figure pct00139
)를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00140
)를 암호화하는 기하 곱 암호화 서브시스템; 상기 암호문 멀티벡터(
Figure pct00141
)를 상기 목적지 컴퓨팅 시스템에 전송하는 암호문 멀티벡터 전송 서브시스템을 더 포함하고; 상기 목적지 컴퓨팅 디바이스는, 상기 암호문 멀티벡터(
Figure pct00142
)를 수신하는 암호문 멀티벡터 수신 서브시스템; 상기 암호문 멀티벡터(
Figure pct00143
) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00144
)의 역(
Figure pct00145
)에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 상기 암호문 멀티벡터(
Figure pct00146
)를 해독하여 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00147
)로 되돌리는 기하 곱 해독 서브시스템; 적어도 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00148
)의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00149
)의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩하고 상기 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00150
)의 각각의 계수에 대한 상기 디코딩된 헨젤 코드 표현들을 상기 메시지 멀티벡터(
Figure pct00151
)의 각각의 대응하는 계수에 적용함으로써, 상기 메시지 멀티벡터(
Figure pct00152
)를 생성하는 메시지 멀티벡터 복원 서브시스템; 및 상기 메시지 멀티벡터(
Figure pct00153
)의 계수들을 합산함으로써 상기 숫자 메시지 데이터(m)를 생성하는 숫자 메시지 데이터 복원 서브시스템을 더 포함한다.
본 발명의 한 실시예는 상기 패러그래프의 암호화 시스템을 더 포함할 수 있고, 여기서, 상기 소스 컴퓨팅 디바이스의 상기 암호문 멀티벡터 전송 서브시스템은 상기 암호문 멀티벡터(
Figure pct00154
)를 상기 목적지 컴퓨팅 디바이스 대신에 중간 컴퓨팅 시스템에 전송하고; 상기 중간 컴퓨팅 시스템을 더 포함하며, 상기 중간 컴퓨팅 시스템은, 상기 암호문 멀티벡터(
Figure pct00155
)를 수신하는 암호문 멀티벡터 수신 중간 서브시스템; 결과적으로 동형 결과 암호문 멀티벡터(
Figure pct00156
)가 되는, 상기 중간 컴퓨팅 시스템에 저장된 적어도 하나의 저장된 암호문 멀티벡터(
Figure pct00157
)와의, 상기 암호문 멀티벡터(
Figure pct00158
)의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산의 함수로서, 상기 동형 결과 암호문 멀티벡터(
Figure pct00159
)를 생성하는 동형 계산 서브시스템 ― 상기 적어도 하나의 저장된 암호문 멀티벡터(
Figure pct00160
)는 상기 암호문 멀티벡터(
Figure pct00161
)를 암호화하는데 이용된 것과 균등한 암호화 파라미터들 및 프로세스들을 이용하여 암호화됨 ―; 및 상기 동형 결과 암호문 멀티벡터(
Figure pct00162
)를 상기 목적지 컴퓨팅 시스템에 전송하는 결과 암호문 멀티벡터 전송 서브시스템을 더 포함하고, 상기 목적지 컴퓨팅 디바이스는, 수치 결과(r)가 상기 암호화되지 않은 숫자 메시지(m)와 상기 적어도 하나의 저장된 암호문 멀티벡터(
Figure pct00163
)에 대응하는 적어도 하나의 암호화되지 않은 값의 균등한 적어도 하나의 덧셈, 뺄셈, 곱셈 또는 나눗셈과 같도록 상기 수치 결과 데이터(r)를 획득하게끔 상기 암호문 멀티벡터(
Figure pct00164
) 대신에 상기 동형 결과 암호문 멀티벡터(
Figure pct00165
)에서 시작하여 계수들을 해독, 디코딩, 및 합산한다.
본 발명의 한 실시예는, 암호문 멀티벡터(
Figure pct00166
)와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00167
)를 연관된 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00168
)로 업데이트하는 키 업데이트 시스템을 더 포함할 수 있고, 이 키 업데이트 시스템은: 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00169
)와 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00170
)의 역(
Figure pct00171
)의 기하 대수 곱 연산으로서 제1 공개 토큰 멀티벡터(
Figure pct00172
)를 생성하는 제1 공개 토큰 생성 서브시스템; 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00173
)와 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00174
)의 역(
Figure pct00175
)의 기하 대수 곱 연산으로서 제2 공개 토큰 멀티벡터(
Figure pct00176
)를 생성하는 제2 공개 토큰 생성 서브시스템; 및 상기 제1 공개 토큰 멀티벡터(
Figure pct00177
), 상기 암호문 멀티벡터(
Figure pct00178
), 및 상기 제2 공개 토큰 멀티벡터(
Figure pct00179
)의 기하 곱 연산(
Figure pct00180
)의 결과로서 상기 암호문 멀티벡터(
Figure pct00181
)를 업데이트하되, 상기 암호문 멀티벡터(
Figure pct00182
)와 연관된 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00183
)가 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00184
)로 업데이트되게끔, 업데이트하는 암호문 멀티벡터 키 업데이트 서브시스템을 포함한다.
본 발명의 한 실시예는, 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이에서 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00185
)를 교환하는 키 교환 시스템을 더 포함할 수 있고, 이 키 교환 시스템: 상기 제1 컴퓨터 시스템, 및 상기 제2 컴퓨터 시스템을 포함하고, 상기 제1 컴퓨터 시스템은, 제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00186
)를 생성하는 제1 개인 식별 멀티벡터 생성 서브시스템; 제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00187
)를 생성하는 제1 공개 식별 멀티벡터 생성 서브시스템; 상기 제1 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00188
) 및 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00189
)의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터(
Figure pct00190
)를 생성하는 공개 통신 식별자 멀티벡터 생성 서브시스템; 상기 공개 통신 식별자 멀티벡터(
Figure pct00191
)를 상기 제2 컴퓨터 시스템에 전송하는 공개 통신 식별자 전송 서브시스템; 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00192
)와 상기 공개 통신 식별자 멀티벡터(
Figure pct00193
)의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터(
Figure pct00194
)를 생성하는 제1 서브키 멀티벡터 생성 서브시스템; 상기 제1 서브키 멀티벡터(
Figure pct00195
)를 상기 제2 컴퓨터 시스템에 전송하는 제1 서브키 멀티벡터 전송 서브시스템; 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00196
), 상기 제2 서브키 멀티벡터(
Figure pct00197
), 및 상기 공개 통신 식별자 멀티벡터(
Figure pct00198
)의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터(
Figure pct00199
)의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00200
)를 개인적으로 계산하는 제1 컴퓨터 비밀 키 멀티벡터 계산 서브시스템을 더 포함하고; 상기 제2 컴퓨터 시스템은, 제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00201
)를 생성하는 제2 개인 식별 멀티벡터 생성 서브시스템; 제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00202
)를 생성하는 제2 공개 식별 멀티벡터 생성 서브시스템; 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00203
)를 상기 제1 컴퓨터 시스템에 전송하는 제2 공개 식별 멀티벡터 전송 서브시스템; 상기 공개 통신 식별자 멀티벡터(
Figure pct00204
)와 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00205
)의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터(
Figure pct00206
)를 생성하는 제2 서브키 멀티벡터 생성 서브시스템; 상기 제2 서브키 멀티벡터(
Figure pct00207
)를 상기 제1 컴퓨터 시스템에 전송하는 제2 서브키 멀티벡터 전송 서브시스템; 상기 제1 컴퓨터 시스템과 상기 제2 컴퓨터 시스템 사이에서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00208
)를 직접 전송하지 않고 이제 상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템 양쪽 모두가 상기 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00209
)를 별개로 계산하도록, 상기 제1 서브키 멀티벡터(
Figure pct00210
), 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00211
), 및 상기 공개 통신 식별자 멀티벡터(
Figure pct00212
)의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터(
Figure pct00213
)의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00214
)를 개인적으로 계산하는 제2 컴퓨터 비밀 키 멀티벡터 계산 서브시스템을 더 포함한다.
도면에서,
도 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가 실시예들의 "프리미티브" 기능들 중 하나로서 다양한 실시예들에 의해 이용되는 기하 곱을 구상하는 것을 허용했다.
스칼라 및 벡터를 포함하는 2차원(2D) 멀티벡터
Figure pct00215
의 예는 다음과 같다:
Figure pct00216
여기서,
Figure pct00217
는 i-축을 따른 단위 벡터이고,
Figure pct00218
Figure pct00219
에 의해 생성된 영역의 배향을 나타낸다. 특히, N-공간의 기하 대수 멀티벡터(즉, N-차원 멀티벡터)는 2 N 개의 계수들을 갖는 반면 표준 N-차원 벡터는 N개의 계수들만을 갖는다. 따라서, 기하 대수 멀티벡터들은, 크기, 방향 및 부피 감각을 제공하는 반면, 표준 벡터는 크기 및 방향 감각만을 제공한다. 기하 대수에 관련된 개념들은 깊고 풍부한 수학적 파일의 일부이기 때문에, 소정의 일반적인 관찰들은 아래에 개시된 다양한 실시예들의 설명에 도움이 될 수 있을 것이다. 먼저, 멀티벡터
Figure pct00220
내의
Figure pct00221
값들 각각은 정보와 함께 "팩킹"될 수 있고, 각각의
Figure pct00222
값은 0부터 매우 큰 수(예를 들어, > 256,000 비트 또는 전체 메시지)까지의 범위일 수 있다. 두번째로,
Figure pct00223
의 역은
Figure pct00224
로 곱해지면 1이 되거나, 또는:
Figure pct00225
따라서, 제2 멀티벡터
Figure pct00226
가 생성되고 기하 곱
Figure pct00227
이 전송되면, 목적지는 다음을 통해
Figure pct00228
를 복원할 수 있다:
Figure pct00229
기하 대수 분야에 대한 더 깊은 이해가 필요한 경우, 추가 탐구를 위해 다양한 서적들과 과정들을 이용할 수 있다.
다양한 실시예들에서, "페이로드"는 스칼라들의 값들 및 멀티벡터 요소들의 계수들에서 팩킹될 수 있다. 팩킹 방법은, 많은 것들 중에서도 특히, 한 실시예에서 허용되는 기하 대수 연산들을 정의할 수 있다. 예를 들어, 멀티벡터들에 관한 유리화(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)을 나타내는 적어도 하나의 비밀 키 멀티벡터(
Figure pct00230
)를 생성하고, 여기서, 적어도 하나의 비밀 키 멀티벡터(
Figure pct00231
)의 계수들의 합은 대응하는 적어도 하나의 비밀 키 값(k)과 같다. 프로세스 216에서, 비밀 키 컴퓨팅 디바이스(206)는, 적어도 인코딩된 계수 및 적어도 하나의 비밀 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 적어도 하나의 비밀 키 멀티벡터(
Figure pct00232
)의 각각의 계수의 헨젤 코드 표현을 획득함으로써 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터
Figure pct00233
를 생성한다. 프로세스 218에서, 비밀 키 컴퓨팅 디바이스는, 적어도 하나의 비밀 소수(p), 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터
Figure pct00234
, 및 공개 모듈러스(q)를 소스(202) 및 목적지(204) 컴퓨팅 디바이스들과 공유한다. 적어도 하나의 비밀 소수(p)와 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터
Figure pct00235
의 공유에 대해 유의해야 하는데, 이것은, 이들이 비밀 값들이 되도록 의도된 것이며, 그에 따라, 암호화된 데이터에 액세스하도록 의도되지 않은 다른 디바이스들로부터 멀리 떨어져 있어야 하기 때문이다. 소스(202) 및 목적지(204) 컴퓨팅 디바이스들과의 공유는 오프 페이지 연결자(220)로 표시된다.
도 2b는 암호화된 데이터 전송 실시예를 위한 소스 컴퓨팅 디바이스(202) 동작의 플로차트(222)이다. 오프 페이지 연결자(220)는, 적어도 하나의 비밀 소수(p), 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00236
), 및 비밀 키 컴퓨팅 디바이스(206)로부터의 공개 모듈러스(q)의 공유를 나타낸다. 프로세스 224에서, 소스 컴퓨팅 디바이스(202)는 암호화된 숫자 메시지 데이터(m)를 나타내는 메시지 멀티벡터
Figure pct00237
를 생성하고, 여기서 메시지 멀티벡터
Figure pct00238
의 계수들의 합은 대응하는 숫자 메시지 데이터 값(m)과 동일하다. 프로세스 226에서, 소스 컴퓨팅 디바이스(202)는 메시지 멀티벡터
Figure pct00239
및 동형 멀티벡터(
Figure pct00240
)와 기하 대수 기하 곱을 수행함으로써 메시지 멀티벡터
Figure pct00241
를 동형으로 만든다. 동형 멀티벡터(
Figure pct00242
)는 기하 대수 기하 곱 결과가 동형이 되도록 허용하는 멱등 멀티벡터(idempotent multivector)이다. 일부 실시예는 메시지 멀티벡터
Figure pct00243
가 그 계수들을 헨젤 인코딩한 후에 메시지 멀티벡터
Figure pct00244
에 동형 멀티벡터(
Figure pct00245
)를 적용하도록 선택할 수 있으며, 이 경우 헨젤 인코딩된 계수들을 갖는 메시지 멀티벡터
Figure pct00246
에 동형 벡터를 적용하기 전에, 동형 멀티벡터(
Figure pct00247
)의 계수들도 마찬가지로 메시지 멀티벡터
Figure pct00248
헨젤 인코딩에 이용된 것과 동일한 헨젤 인코딩 파라미터들을 이용하여 헨젤 인코딩되어야 한다. 사실, 한 단일의 실시예에 대한 모든 헨젤 인코딩은, 적어도 비밀 소수(p) 등의, 동일한 기본 파라미터들을 이용해야 한다. 프로세스 228에서, 소스 컴퓨팅 디바이스(202)는, 적어도 인코딩된 계수 및 적어도 하나의 비밀 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 메시지 멀티벡터
Figure pct00249
의 각각의 계수의 헨젤 코드 표현을 획득함으로써 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00250
)를 생성한다.
프로세스 230에서, 소스 컴퓨팅 디바이스(202)는, 추가적인 혼동/확산을 암호화 실시예들에 추가하기 위하여, 모듈로 거듭제곱(modular exponentiation) 또는 CRT(Chinese Remainder Theorem) 등의 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00251
)의 각각의 계수에 관해 추가적인 인코딩 기술 또는 알고리즘을 임의로 수행할 수 있다. 프로세스 232에서, 소스 컴퓨팅 디바이스는, 암호문 멀티벡터(
Figure pct00252
)를 획득하기 위하여, 적어도 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00253
) 및 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00254
)의 기하 대수 기하 곱의 함수로서 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00255
)를 암호화한다. 프로세스 234에서, 소스 컴퓨팅 디바이스(202)는 암호문 멀티벡터(
Figure pct00256
)를 목적지 컴퓨팅 디바이스(204)에 전송하고 목적지 컴퓨팅 시스템 흐름을 위한 프로세스들은 오프 페이지 연결자(236)를 통해 연결된다.
도 2c는 암호화된 데이터 전송 실시예를 위한 목적지 컴퓨팅 디바이스(104) 동작의 플로차트(238)이다. 오프 페이지 연결자(220)는, 비밀 키 컴퓨팅 디바이스(206)로부터의 적어도 하나의 비밀 소수(p), 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00257
), 및 공개 모듈러스(q)의 공유를 나타내고, 오프 페이지 연결자(236)는, 소스 컴퓨팅 디바이스(202)로부터 목적지 컴퓨팅 디바이스(204)로 계속되는 프로세스들을 나타낸다. 프로세스 240에서, 목적지 컴퓨팅 디바이스(204)는 소스 컴퓨팅 디바이스(202)로부터 암호문 멀티벡터(
Figure pct00258
)를 수신한다. 프로세스 242에서, 목적지 컴퓨팅 디바이스(204)는 암호문 멀티벡터(
Figure pct00259
) 및 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00260
)의 역(
Figure pct00261
)에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터(
Figure pct00262
)를 해독하여 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00263
)로 되돌린다. 프로세스 244에서, 목적지 컴퓨팅 디바이스(204)는, 프로세스 230에서 소스 컴퓨팅 디바이스(202)에 의해 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00264
)의 계수들에 적용된 임의의 임의적으로 적용된 추가적인 알려진 인코딩 기술들 또는 알고리즘들을 감안하기 위해 필요하다면 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00265
)의 계수들에 관해 디코딩을 수행한다. 프로세스 246에서, 목적지 컴퓨팅 디바이스(204)는 적어도 디코딩된 계수 및 적어도 하나의 비밀 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 헨젤 인코딩된 메시지 멀티벡터(
Figure pct00266
)의 각각의 계수의 헨젤 코드 표현을 디코딩함으로써 메시지 멀티벡터(
Figure pct00267
)를 생성한다. 프로세스 248에서, 목적지 컴퓨팅 디바이스(204)는 메시지 멀티벡터(
Figure pct00268
)의 계수들을 합산함으로써 숫자 메시지 데이터(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)에서, 암호문 멀티벡터(
Figure pct00269
)가 소스 컴퓨팅 디바이스로부터 중간 컴퓨팅 디바이스로 전송된다. 프로세스 408에서, 중간 컴퓨팅 디바이스(406)는 소스 컴퓨팅 디바이스로부터 암호문 멀티벡터(
Figure pct00270
)를 수신한다. 프로세스 410에서, 중간 컴퓨팅 디바이스(406)는, 적어도 하나의 저장된 암호문 멀티벡터(
Figure pct00271
)와의, 암호문 멀티벡터(
Figure pct00272
)의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 및/또는 나눗셈의 함수로서 동형 결과 암호문 멀티벡터(
Figure pct00273
)를 생성한다. 동형 결과 암호문 멀티벡터(
Figure pct00274
)를 생성하기 위하여, 중간 컴퓨팅 시스템(406)은 어떠한 암호화된 값도 해독할 필요가 없으며 비밀 암호화 키들 또는 소수들을 알 필요가 없다. 프로세스 412에서, 중간 컴퓨팅 시스템(406)은 동형 결과 암호문 멀티벡터(
Figure pct00275
)를 목적지 컴퓨팅 디바이스에 전송한다. 출력(404)에서, 동형 결과 암호문 멀티벡터(
Figure pct00276
)는 목적지 컴퓨팅 디바이스에 전달되고 목적지 컴퓨팅 디바이스는 위에서 도 1과 도 2a 내지 도 2c와 관련하여 본 개시내용에서 이루어진 바와 같이 암호문 멀티벡터(
Figure pct00277
)가 아니라 동형 결과 암호문 멀티벡터(
Figure pct00278
)를 해독한다. 동형 피처들을 이용하여 조작될 수 있는 암호화된 데이터의 한 특정한 예는, 이미지 처리 동작들을 수행하기 위해 암호화된 이미지들을 해독할 필요없이, 암호화된 이미지들의 밝기 또는 콘트라스트를 조정하는 것뿐만 아니라 이미지들을 결합하는 것 등의 동작들과 기타의 이미지 처리 애플리케이션들을 수행할 수 있는 이미지 처리 분야이다.
또한, 도 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)은 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00279
)를 대체하도록 지정된 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00280
)가 존재하는지 및 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00281
)가 존재하지 않는지를 결정한 다음, 키 업데이트 컴퓨터 시스템(602)은 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00282
)를 생성하는데 이용되는 연산들에 따라 무작위로 생성된 새로운 비밀 키 값(kn)으로부터 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00283
)를 생성한다. 프로세스 606에서, 키 업데이트 컴퓨터 시스템(602)은 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00284
)와 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00285
)의 역(
Figure pct00286
)의 기하 대수 기하 곱 연산으로서 제1 공개 토큰(
Figure pct00287
)을 생성한다. 프로세스 608에서, 키 업데이트 컴퓨터 시스템(602)은 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00288
)와 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00289
)의 역(
Figure pct00290
)의 기하 대수 기하 곱 연산으로서 제2 공개 토큰(
Figure pct00291
)을 생성한다. 프로세스 610에서, 키 업데이트 컴퓨터 시스템(602)은 기하 곱 연산
Figure pct00292
에 따라 암호문 멀티벡터(
Figure pct00293
)를 업데이트하여 암호문 멀티벡터(
Figure pct00294
)와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00295
)가 암호문 멀티벡터(
Figure pct00296
)에 대해 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00297
)로 대체되게 한다.
추가적으로, 도 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)을 통해 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00298
)를 직접 전송하지 않고, 별개로 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00299
)를 계산할 수 있게 한다.
또한, 도 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 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00300
)를 생성한다. 프로세스 812에서, 제1 컴퓨터 시스템(802)은 제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00301
)를 생성한다. 프로세스 830에서, 제2 컴퓨터 시스템(804)은 제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00302
)를 생성한다. 프로세스 832에서, 제2 컴퓨터 시스템(804)은 제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00303
)를 생성한다. 프로세스 834에서, 제2 컴퓨터 시스템(804)은 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00304
)를 제1 컴퓨터 시스템(802)에 전송한다. 프로세스 814에서, 제1 컴퓨터 시스템(802)은 제1 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00305
) 및 제2 헨젤 인코딩된 공개 식별 멀티벡터(
Figure pct00306
)의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터(
Figure pct00307
)를 생성한다. 프로세스 816에서, 제1 컴퓨터 시스템(802)은 공개 통신 식별자 멀티벡터(
Figure pct00308
)를 제2 컴퓨터 시스템(804)에 전송한다. 프로세스 818에서, 제1 컴퓨터 시스템(802)은 제1 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00309
)와 공개 통신 식별자 멀티벡터(
Figure pct00310
)의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터(
Figure pct00311
)를 생성한다. 상기 프로세스 820에서, 제1 컴퓨터 시스템(802)은 제1 서브키 멀티벡터(
Figure pct00312
)를 제2 컴퓨터 시스템(804)에 전송한다. 프로세스 838에서, 제2 컴퓨터 시스템(804)은 공개 통신 식별자 멀티벡터(
Figure pct00313
)와 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00314
)의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터(
Figure pct00315
)를 생성한다. 프로세스 840에서, 제2 컴퓨터 시스템(804)은 제2 서브키 멀티벡터(
Figure pct00316
)를 제1 컴퓨터 시스템(802)에 전송한다. 프로세스 822에서, 제1 컴퓨터 시스템(802)은, 제1 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00317
), 제2 서브키 멀티벡터(
Figure pct00318
), 및 공개 통신 식별자 멀티벡터(
Figure pct00319
)의 기하 대수 기하 곱 연산 + 공개 통신 식별자 멀티벡터(
Figure pct00320
)의 기하 대수 기하 덧셈 연산으로서 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00321
)를 개인적으로 계산(privately calculate)한다. 프로세스 842에서, 제2 컴퓨터 시스템(804)은, 제1 서브키 멀티벡터(
Figure pct00322
), 제2 헨젤 인코딩된 개인 식별 멀티벡터(
Figure pct00323
), 및 공개 통신 식별자 멀티벡터(
Figure pct00324
)의 기하 대수 기하 곱 연산 + 공개 통신 식별자 멀티벡터(
Figure pct00325
)의 기하 대수 기하 덧셈 연산으로서 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00326
)를 개인적으로 계산한다. 특히, 제1 컴퓨터 시스템(802)과 제2 컴퓨터 시스템(804) 양쪽 모두는, 제1 컴퓨터 시스템(802)과 제2 컴퓨터 시스템(804) 사이에서 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00327
)를 직접 전송하지 않고 헨젤 인코딩된 비밀 키 멀티벡터(
Figure pct00328
)를 별도로 계산했다.
또한, 도 8와 관련하여 전술된 플로차트들 및 플로차트 상세사항들은 방법 또는 프로세스로서 구현될 수 있는 방법론을 기술하지만, 또 다른 실시예는, 도 8의 플로차트 및 플로차트 상세사항들과 관련하여 전술된 프로세스들을 구현함으로써 암호화된 데이터를 저장하거나 및/또는 이들의 동형 연산들을 수행하는 컴퓨터 시스템 및/또는 중간 컴퓨팅 디바이스로서 인식될 수 있다. 또한, 컴퓨팅 시스템 및/또는 중간 컴퓨팅 시스템을 설명할 때, 방법론에 대해 전술된 하나 또는 그 이상의 개개의 프로세스들은 세분되어 전체 암호화 컴퓨터 시스템의 서브시스템으로서 표현될 수 있다. 컴퓨터 시스템의 서브시스템은, 전체적으로 또는 부분적으로, 전용 ASIC(Application Specific Integrated Circuit) 또는 FPGA(Field Programmable Gate Array) 등의, 특정한 하드웨어 구현 시스템에 할당될 수 있다. 하나 이상의 서브시스템은, 전체적으로 또는 부분적으로, 컴퓨터 시스템의 동작을, 소프트웨어 또는 펌웨어 명령어들로서 구현된 하나 이상의 서브시스템에 관하여 정의하는 소프트웨어 또는 펌웨어 명령어들로서 대안적으로 구현될 수 있다. 소프트웨어 또는 펌웨어 명령어들은, 중앙 처리 유닛, 메모리, 및/또는 컴퓨터 시스템의 기타의 시스템들이 특정한 하나 이상의 서브시스템 지정된 피처에 따라 동작하게 할 수 있다.
본 발명의 상기의 상세한 설명은 예시와 설명의 목적을 위해 제공되었다. 상기 설명은 본 발명을 빠짐없이 드러내거나 본 발명을 개시된 그대로의 형태로 제한하기 위한 것이 아니고, 상기 교시에 비추어 다른 수정 및 변형이 가능할 수 있다. 실시예들은, 본 발명의 원리와 그 실제적 적용을 최상으로 설명함으로써 본 기술분야의 통상의 기술자가 다양한 실시예에서 본 발명을 최상으로 이용하고 고려중인 특정한 용도에 적합한 다양한 수정을 가할 수 있게 하도록 선택되고 설명되었다.

Claims (18)

  1. 적어도 2차원인 차원 크기(N)를 공유하는 기하 대수 멀티벡터들의 이용을 포함하는 소스 컴퓨팅 디바이스로부터 목적지 컴퓨팅 디바이스로의 숫자 메시지 데이터(
    Figure pct00329
    )의 암호화된 전송을 위한 방법으로서, 여기에 활용되는 상기 기하 대수 멀티벡터들의 각각에 대한 계수들의 수는 상기 차원 크기(N)의 각각의 증분적 증가에 대해 2의 인자(2 N )만큼 증가되며, 상기 방법은:
    비밀 키 컴퓨팅 디바이스에 의해 랜덤 소수(random prime number)로서 적어도 하나의 비밀 소수(p)를 생성하는 단계;
    상기 비밀 키 컴퓨팅 디바이스에 의해 상기 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산하는 단계;
    상기 비밀 키 컴퓨팅 디바이스에 의해 난수로서 적어도 하나의 비밀 키 값(k)을 생성하는 단계;
    상기 적어도 하나의 비밀 키 멀티벡터
    Figure pct00330
    의 계수 값들의 합이 상기 적어도 하나의 비밀 키 값(k)과 같도록 상기 비밀 키 컴퓨팅 디바이스에 의해 상기 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터
    Figure pct00331
    를 생성하는 단계;
    적어도 상기 적어도 하나의 비밀 키 멀티벡터
    Figure pct00332
    의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초하여 헨젤 인코딩 계산들의 함수로서 상기 적어도 하나의 비밀 키 멀티벡터
    Figure pct00333
    의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 적어도 하나의 비밀 키 멀티벡터
    Figure pct00334
    의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터
    Figure pct00335
    의 각각의 대응하는 계수에 적용함으로써, 상기 비밀 키 컴퓨팅 디바이스에 의해 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터
    Figure pct00336
    를 생성하는 단계;
    상기 비밀 키 컴퓨팅 디바이스에 의해, 상기 적어도 하나의 비밀 소수(p), 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터
    Figure pct00337
    , 및 상기 공개 모듈러스(q)를 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스와 공유하는 단계 ― 상기 적어도 하나의 비밀 소수(p) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터
    Figure pct00338
    의 상기 공유는, 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스에 대한 것이지만, 암호화되지 않은 데이터에 액세스하도록 의도되지 않은 다른 디바이스에 대해서는 비밀로 유지됨 ―;
    상기 메시지 멀티벡터(
    Figure pct00339
    )의 계수 값들의 합이 상기 숫자 메시지 데이터(
    Figure pct00340
    )와 동일하도록 상기 소스 컴퓨팅 디바이스에 의해 상기 숫자 메시지 데이터(
    Figure pct00341
    )를 나타내는 메시지 멀티벡터(
    Figure pct00342
    )를 생성하는 단계;
    상기 소스 컴퓨팅 디바이스에 의해, 상기 메시지 멀티벡터(
    Figure pct00343
    )에 관해 동형 멀티벡터(
    Figure pct00344
    )와 기하 대수 기하 곱 연산을 수행함으로써 상기 메시지 멀티벡터(
    Figure pct00345
    )를 동형으로 만드는 단계 ― 상기 동형 멀티벡터(
    Figure pct00346
    )는 기하 대수 기하 곱 결과가 동형이 되도록 허용하는 멱등 멀티벡터(idempotent multivector)임 ―;
    상기 소스 컴퓨팅 디바이스에 의해, 적어도 상기 메시지 멀티벡터(
    Figure pct00347
    )의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 상기 메시지 멀티벡터(
    Figure pct00348
    )의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 메시지 멀티벡터(
    Figure pct00349
    )의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00350
    )의 각각의 대응하는 계수에 적용함으로써, 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00351
    )를 생성하는 단계;
    상기 소스 컴퓨팅 디바이스에 의해, 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00352
    ) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00353
    )에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터(
    Figure pct00354
    )를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00355
    )를 암호화하는 단계;
    상기 소스 컴퓨팅 디바이스에 의해, 상기 암호문 멀티벡터(
    Figure pct00356
    )를 상기 목적지 컴퓨팅 시스템에 전송하는 단계;
    상기 목적지 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터(
    Figure pct00357
    )를 수신하는 단계;
    상기 목적지 컴퓨팅 디바이스에 의해, 상기 암호문 멀티벡터(
    Figure pct00358
    ) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00359
    )의 역(
    Figure pct00360
    )에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 상기 암호문 멀티벡터(
    Figure pct00361
    )를 해독하여 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00362
    )로 되돌리는 단계;
    상기 목적지 컴퓨팅 디바이스에 의해, 적어도 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00363
    )의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00364
    )의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩하고, 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00365
    )의 각각의 계수에 대한 상기 디코딩된 헨젤 코드 표현들을 상기 메시지 멀티벡터(
    Figure pct00366
    )의 각각의 대응하는 계수에 적용함으로써, 상기 메시지 멀티벡터(
    Figure pct00367
    )를 생성하는 단계; 및
    상기 목적지 컴퓨팅 디바이스에 의해, 상기 메시지 멀티벡터(
    Figure pct00368
    )의 계수들을 합산함으로써 상기 숫자 메시지 데이터(m)를 생성하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 메시지 멀티벡터(
    Figure pct00369
    )를 동형화하는 상기 프로세스는, 상기 메시지 멀티벡터(
    Figure pct00370
    )가 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00371
    )로 업데이트된 후에 수행되어, 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00372
    )에 관한 상기 동형 멀티벡터(
    Figure pct00373
    )와의 상기 기하 대수 기하 곱 연산을 수행하기 전에 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00374
    )에 대한 헨젤 인코딩에 따라 상기 동형 멀티벡터(
    Figure pct00375
    )의 계수들도 역시 헨젤 인코딩되게끔 상기 동형 멀티벡터(
    Figure pct00376
    )도 역시 업데이트되게 하는, 방법.
  3. 제1항에 있어서,
    상기 소스 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터(
    Figure pct00377
    )를 상기 목적지 컴퓨팅 시스템에 전송하는 상기 프로세스는 대신에 상기 암호문 멀티벡터(
    Figure pct00378
    )를 중간 컴퓨팅 시스템에 전송하고;
    상기 방법은,
    상기 중간 컴퓨팅 시스템에 의해 상기 암호문 멀티벡터(
    Figure pct00379
    )를 수신하는 단계;
    상기 중간 컴퓨팅 시스템에 의해, 결과적으로 동형 결과 암호문 멀티벡터(
    Figure pct00380
    )가 되는, 상기 중간 컴퓨팅 시스템에 저장된 적어도 하나의 저장된 암호문 멀티벡터(
    Figure pct00381
    )와의, 상기 암호문 멀티벡터(
    Figure pct00382
    )의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산의 함수로서, 상기 동형 결과 암호문 멀티벡터(
    Figure pct00383
    )를 생성하는 단계 ― 상기 적어도 하나의 저장된 암호문 멀티벡터(
    Figure pct00384
    )는 상기 암호문 멀티벡터(
    Figure pct00385
    )를 암호화하는데 이용된 것과 균등한 암호화 파라미터들 및 프로세스들을 이용하여 암호화됨 ―; 및
    상기 중간 컴퓨팅 디바이스에 의해 상기 동형 결과 암호문 멀티벡터(
    Figure pct00386
    )를 상기 목적지 컴퓨팅 시스템에 전송하는 단계
    를 더 포함하고,
    상기 목적지 컴퓨팅 디바이스는, 수치 결과(r)가 상기 암호화되지 않은 숫자 메시지(m)와 상기 적어도 하나의 저장된 암호문 멀티벡터(
    Figure pct00387
    )에 대응하는 적어도 하나의 암호화되지 않은 값의 균등한 적어도 하나의 덧셈, 뺄셈, 곱셈 또는 나눗셈과 같도록 상기 수치 결과 데이터(r)를 획득하게끔 상기 암호문 멀티벡터(
    Figure pct00388
    ) 대신에 상기 동형 결과 암호문 멀티벡터(
    Figure pct00389
    )에서 시작하여 계수들을 해독, 디코딩, 및 합산하는, 방법.
  4. 제3항에 있어서, 상기 기하학적 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산들은 적어도 하나의 암호화된 이미지에 관한 이미지 처리 동작들을 수행하는데 이용되는, 방법.
  5. 제1항에 있어서,
    상기 소스 컴퓨팅 디바이스에 의해, 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00390
    ) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00391
    )에 관한 적어도 하나의 기하 대수 기하 곱 연산의 상기 함수로서 암호문 멀티벡터(
    Figure pct00392
    )를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00393
    )를 상기 소스 컴퓨팅 디바이스에 의해 암호화하는 상기 프로세스 이전에 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00394
    )의 각각의 계수에 관해 알려진 추가적인 인코딩 동작을 수행하는 단계; 및
    상기 목적지 컴퓨팅 디바이스에 의해, 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00395
    )의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩함으로써 상기 목적지 컴퓨팅 디바이스에 의해 상기 메시지 멀티벡터(
    Figure pct00396
    )를 생성하는 상기 프로세스 이전에 상기 암호문 멀티벡터(
    Figure pct00397
    )와 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00398
    )의 역(
    Figure pct00399
    )에 관한 적어도 하나의 기하 대수 기하 곱 연산의 상기 함수로서 상기 목적지 컴퓨팅 디바이스에 의해 상기 암호문 멀티벡터(
    Figure pct00400
    )를 해독하는 상기 프로세스로부터 발생하는 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00401
    )의 각각의 계수에 관해 상기 알려진 추가적인 인코딩 동작과 연관된 임의의 필요한 디코딩 동작들을 수행하는 단계
    를 더 포함하는, 방법.
  6. 제5항에 있어서, 상기 알려진 추가적인 인코딩 동작은 모듈로 거듭제곱(modular exponentiation) 및 CRT(Chinese Remainder Theorem)로부터 선택된 그룹 중 적어도 하나로 구성되는, 방법.
  7. 암호문 멀티벡터(
    Figure pct00402
    )와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00403
    )를 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00404
    )로 업데이트하는 방법으로서,
    키 업데이트 컴퓨터 시스템에 의해, 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00405
    )와 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00406
    )의 역(
    Figure pct00407
    )의 기하 대수 곱 연산으로서 제1 공개 토큰 멀티벡터(
    Figure pct00408
    )를 생성하는 단계;
    상기 키 업데이트 컴퓨터 시스템에 의해, 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00409
    )와 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00410
    )의 역(
    Figure pct00411
    )의 기하 대수 곱 연산으로서 제2 공개 토큰 멀티벡터(
    Figure pct00412
    )를 생성하는 단계; 및
    상기 키 업데이트 컴퓨터 시스템에 의해, 상기 제1 공개 토큰 멀티벡터(
    Figure pct00413
    ), 상기 암호문 멀티벡터(
    Figure pct00414
    ), 및 상기 제2 공개 토큰 멀티벡터(
    Figure pct00415
    )의 기하 곱 연산(
    Figure pct00416
    )의 결과로서 상기 암호문 멀티벡터(
    Figure pct00417
    )를 업데이트하되, 상기 암호문 멀티벡터(
    Figure pct00418
    )와 연관된 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00419
    )가 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00420
    )로 업데이트되게 하는 단계
    를 포함하는, 방법.
  8. 제7항에 있어서, 상기 새로운 헨젤 인코딩된 비밀 키가 이미 존재하지 않을 때 무작위로 생성된 새로운 비밀 키 값(kn)으로부터 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00421
    )를 생성하는 단계를 더 포함하는, 방법.
  9. 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이에서 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00422
    )를 교환하기 위한 방법으로서,
    상기 제1 컴퓨터 시스템에 의해, 제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00423
    )를 생성하는 단계;
    상기 제1 컴퓨터 시스템에 의해, 제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00424
    )를 생성하는 단계;
    상기 제2 컴퓨터 시스템에 의해, 제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00425
    )를 생성하는 단계;
    상기 제2 컴퓨터 시스템에 의해, 제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00426
    )를 생성하는 단계;
    상기 제2 컴퓨터 시스템에 의해, 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00427
    )를 상기 제1 컴퓨터 시스템에 전송하는 단계;
    상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00428
    ) 및 상기 제2 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00429
    )의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터(
    Figure pct00430
    )를 생성하는 단계;
    상기 제1 컴퓨터 시스템에 의해, 상기 공개 통신 식별자 멀티벡터(
    Figure pct00431
    )를 상기 제2 컴퓨터 시스템에 전송하는 단계;
    상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00432
    )와 상기 공개 통신 식별자 멀티벡터(
    Figure pct00433
    )의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터(
    Figure pct00434
    )를 생성하는 단계;
    상기 제1 컴퓨터 시스템에 의해, 상기 제1 서브키 멀티벡터(
    Figure pct00435
    )를 상기 제2 컴퓨터 시스템에 전송하는 단계;
    상기 제2 컴퓨터 시스템에 의해, 상기 공개 통신 식별자 멀티벡터(
    Figure pct00436
    )와 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00437
    )의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터(
    Figure pct00438
    )를 생성하는 단계;
    상기 제2 컴퓨터 시스템에 의해, 상기 제2 서브키 멀티벡터(
    Figure pct00439
    )를 상기 제1 컴퓨터 시스템에 전송하는 단계;
    상기 제1 컴퓨터 시스템에 의해, 상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00440
    ), 상기 제2 서브키 멀티벡터(
    Figure pct00441
    ), 및 상기 공개 통신 식별자 멀티벡터(
    Figure pct00442
    )의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터(
    Figure pct00443
    )의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00444
    )를 개인적으로 계산하는 단계; 및
    상기 제1 컴퓨터 시스템과 상기 제2 컴퓨터 시스템 사이에서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00445
    )를 직접 전송하지 않고 이제 상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템 양쪽 모두가 상기 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00446
    )를 별개로 계산하도록, 상기 제1 서브키 멀티벡터(
    Figure pct00447
    ), 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00448
    ), 및 상기 공개 통신 식별자 멀티벡터(
    Figure pct00449
    )의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터(
    Figure pct00450
    )의 기하 대수 기하 덧셈 연산으로서, 상기 제2 컴퓨터 시스템에 의해, 상기 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00451
    )를 개인적으로 계산하는 단계
    를 포함하는, 방법.
  10. 적어도 2차원인 차원 크기(N)를 공유하는 기하 대수 멀티벡터들의 이용을 포함하는 소스 컴퓨팅 디바이스로부터 목적지 컴퓨팅 디바이스로의 숫자 메시지 데이터(
    Figure pct00452
    )의 암호화된 전송을 위한 암호화 시스템으로서, 여기에 활용되는 상기 기하 대수 멀티벡터들의 각각에 대한 계수들의 수는 상기 차원 크기(N)의 각각의 증분적 증가에 대해 2의 인자(2 N )만큼 증가되며, 상기 암호화 시스템은:
    비밀 키 컴퓨팅 디바이스, 상기 소스 컴퓨팅 디바이스, 및 상기 목적지 컴퓨팅 디바이스를 포함하고,
    상기 비밀 키 컴퓨팅 디바이스는,
    랜덤 소수로서 적어도 하나의 비밀 소수(p)를 생성하는 비밀 소수 생성 서브시스템;
    상기 적어도 하나의 비밀 소수(p)와 적어도 하나의 추가적인 난수의 곱으로서 공개 모듈러스(q)를 계산하는 공개 모듈러스 계산 서브시스템;
    난수로서 적어도 하나의 비밀 키 값(k)을 생성하는 비밀 키 값 생성 서브시스템;
    상기 적어도 하나의 비밀 키 값(k)을 나타내는 적어도 하나의 비밀 키 멀티벡터(
    Figure pct00453
    )를 생성하되, 상기 적어도 하나의 비밀 키 멀티벡터(
    Figure pct00454
    )의 계수 값들의 합이 상기 적어도 하나의 비밀 키 값(k)과 같도록 생성하는 비밀 키 멀티벡터 생성 서브시스템;
    적어도 상기 적어도 하나의 비밀 키 멀티벡터(
    Figure pct00455
    )의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초하여 헨젤 인코딩 계산들의 함수로서 상기 적어도 하나의 비밀 키 멀티벡터(
    Figure pct00456
    )의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 적어도 하나의 비밀 키 멀티벡터(
    Figure pct00457
    )의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00458
    )의 각각의 대응하는 계수에 적용함으로써, 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00459
    )를 생성하는 헨젤 인코딩된 비밀 키 멀티벡터 생성 서브시스템;
    상기 적어도 하나의 비밀 소수(p), 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00460
    ), 및 상기 공개 모듈러스(q)와 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스와의 키 정보 공유 서브시스템 ― 상기 적어도 하나의 비밀 소수(p) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00461
    )의 상기 공유는, 상기 소스 컴퓨팅 디바이스 및 상기 목적지 컴퓨팅 디바이스에 대한 것이지만, 암호화되지 않은 데이터에 액세스하도록 의도되지 않은 다른 디바이스에 대해서는 비밀로 유지됨 ―;
    을 더 포함하고,
    상기 소스 컴퓨팅 디바이스는,
    상기 메시지 멀티벡터(
    Figure pct00462
    )의 계수 값들의 합이 상기 숫자 메시지 데이터(
    Figure pct00463
    )와 동일하도록 상기 숫자 메시지 데이터(
    Figure pct00464
    )를 나타내는 메시지 멀티벡터(
    Figure pct00465
    )를 생성하는 메시지 멀티벡터 생성 서브시스템;
    상기 메시지 멀티벡터(
    Figure pct00466
    )에 관해 동형 멀티벡터(
    Figure pct00467
    )와 기하 대수 기하 곱 연산을 수행함으로써 상기 메시지 멀티벡터(
    Figure pct00468
    )를 동형으로 만드는 메시지 멀티벡터 동형화 서브시스템 ― 상기 동형 멀티벡터(
    Figure pct00469
    )는 기하 대수 기하 곱 결과가 동형이 되도록 허용하는 멱등 멀티벡터임 ―;
    적어도 상기 메시지 멀티벡터(
    Figure pct00470
    )의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 인코딩 계산들의 함수로서 상기 메시지 멀티벡터(
    Figure pct00471
    )의 각각의 계수에 대한 헨젤 코드 표현들을 획득하고, 상기 메시지 멀티벡터(
    Figure pct00472
    )의 각각의 계수에 대한 상기 헨젤 코드 표현들을 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00473
    )의 각각의 대응하는 계수에 적용함으로써, 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00474
    )를 생성하는 헨젤 인코딩된 메시지 멀티벡터 생성 서브시스템;
    상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00475
    ) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00476
    )에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 암호문 멀티벡터(
    Figure pct00477
    )를 생성하기 위해 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00478
    )를 암호화하는 기하 곱 암호화 서브시스템;
    상기 암호문 멀티벡터(
    Figure pct00479
    )를 상기 목적지 컴퓨팅 시스템에 전송하는 암호문 멀티벡터 전송 서브시스템
    을 더 포함하고;
    상기 목적지 컴퓨팅 디바이스는,
    상기 암호문 멀티벡터(
    Figure pct00480
    )를 수신하는 암호문 멀티벡터 수신 서브시스템;
    상기 암호문 멀티벡터(
    Figure pct00481
    ) 및 상기 적어도 하나의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00482
    )의 역(
    Figure pct00483
    )에 관한 적어도 하나의 기하 대수 기하 곱 연산의 함수로서 상기 암호문 멀티벡터(
    Figure pct00484
    )를 해독하여 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00485
    )로 되돌리는 기하 곱 해독 서브시스템;
    적어도 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00486
    )의 각각의 계수 및 상기 비밀 공유된 소수(p)에 기초한 헨젤 디코딩 계산들의 함수로서 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00487
    )의 각각의 계수에 대한 헨젤 코드 표현들을 디코딩하고, 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00488
    )의 각각의 계수에 대한 상기 디코딩된 헨젤 코드 표현들을 상기 메시지 멀티벡터(
    Figure pct00489
    )의 각각의 대응하는 계수에 적용함으로써, 상기 메시지 멀티벡터(
    Figure pct00490
    )를 생성하는 메시지 멀티벡터 복원 서브시스템; 및
    상기 메시지 멀티벡터(
    Figure pct00491
    )의 계수들을 합산함으로써 상기 숫자 메시지 데이터(m)를 생성하는 숫자 메시지 데이터 복원 서브시스템
    을 더 포함하는, 암호화 시스템.
  11. 제10항에 있어서, 상기 메시지 멀티벡터 동형화 서브시스템이 상기 헨젤 인코딩된 메시지 멀티벡터 생성 서브시스템 이후에 동작할 때, 상기 메시지 멀티벡터 동형화 서브시스템은 추가로, 상기 동형 멀티벡터(
    Figure pct00492
    )를 업데이트하되, 상기 헨젤 인코딩된 메시지 멀티벡터 생성 서브시스템의 동작 이전에 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00493
    )에 대한 헨젤 인코딩에 따라 상기 동형 멀티벡터(
    Figure pct00494
    )의 계수들도 역시 헨젤 인코딩되도록 업데이트하는, 암호화 시스템.
  12. 제10항에 있어서,
    상기 소스 컴퓨팅 디바이스의 상기 암호문 멀티벡터 전송 서브시스템은 상기 암호문 멀티벡터(
    Figure pct00495
    )를 상기 목적지 컴퓨팅 디바이스 대신에 중간 컴퓨팅 시스템에 전송하고;
    상기 암호화 시스템은 상기 중간 컴퓨팅 시스템을 더 포함하며, 상기 중간 컴퓨팅 시스템은,
    상기 암호문 멀티벡터(
    Figure pct00496
    )를 수신하는 암호문 멀티벡터 수신 중간 서브시스템;
    결과적으로 동형 결과 암호문 멀티벡터(
    Figure pct00497
    )가 되는, 상기 중간 컴퓨팅 시스템에 저장된 적어도 하나의 저장된 암호문 멀티벡터(
    Figure pct00498
    )와의, 상기 암호문 멀티벡터(
    Figure pct00499
    )의 적어도 하나의 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산의 함수로서, 상기 동형 결과 암호문 멀티벡터(
    Figure pct00500
    )를 생성하는 동형 계산 서브시스템 ― 상기 적어도 하나의 저장된 암호문 멀티벡터(
    Figure pct00501
    )는 상기 암호문 멀티벡터(
    Figure pct00502
    )를 암호화하는데 이용된 것과 균등한 암호화 파라미터들 및 프로세스들을 이용하여 암호화됨 ―; 및
    상기 동형 결과 암호문 멀티벡터(
    Figure pct00503
    )를 상기 목적지 컴퓨팅 시스템에 전송하는 결과 암호문 멀티벡터 전송 서브시스템
    을 더 포함하고,
    상기 목적지 컴퓨팅 디바이스는, 수치 결과(r)가 상기 암호화되지 않은 숫자 메시지(m)와 상기 적어도 하나의 저장된 암호문 멀티벡터(
    Figure pct00504
    )에 대응하는 적어도 하나의 암호화되지 않은 값의 균등한 적어도 하나의 덧셈, 뺄셈, 곱셈 또는 나눗셈과 같도록 상기 수치 결과 데이터(r)를 획득하게끔 상기 암호문 멀티벡터(
    Figure pct00505
    ) 대신에 상기 동형 결과 암호문 멀티벡터(
    Figure pct00506
    )에서 시작하여 계수들을 해독, 디코딩, 및 합산하는, 암호화 시스템.
  13. 제12항에 있어서, 상기 기하 대수 덧셈, 뺄셈, 곱셈 또는 나눗셈 연산들은 적어도 하나의 암호화된 이미지에 관한 이미지 처리 동작들을 수행하는데 이용되는, 암호화 시스템.
  14. 제10항에 있어서,
    상기 소스 컴퓨팅 디바이스는 상기 기하 곱 암호화 서브시스템의 동작 이전에 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00507
    )의 각각의 계수에 관해 알려진 추가적인 인코딩 동작을 수행하는 추가적인 알려진 인코딩 서브시스템을 더 포함하고;
    상기 목적지 컴퓨팅 디바이스는, 상기 메시지 멀티벡터 복원 서브시스템의 동작 이전에 상기 기하 곱 해독 서브시스템으로부터 발생하는 상기 헨젤 인코딩된 메시지 멀티벡터(
    Figure pct00508
    )의 각각의 계수에 관해 상기 알려진 추가적인 인코딩 동작과 연관된 임의의 필요한 디코딩 동작들을 수행하는 추가적인 알려진 디코딩 서브시스템을 더 포함하는, 암호화 시스템.
  15. 제14항에 있어서, 상기 알려진 추가적인 인코딩 동작은 모듈로 거듭제곱 및 CRT(Chinese Remainder Theorem)로부터 선택된 그룹 중 적어도 하나로 구성되는, 암호화 시스템.
  16. 암호문 멀티벡터(
    Figure pct00509
    )와 연관된 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00510
    )를 연관된 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00511
    )로 업데이트하는 키 업데이트 시스템으로서,
    상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00512
    )와 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00513
    )의 역(
    Figure pct00514
    )의 기하 대수 곱 연산으로서 제1 공개 토큰 멀티벡터(
    Figure pct00515
    )를 생성하는 제1 공개 토큰 생성 서브시스템;
    상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00516
    )와 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00517
    )의 역(
    Figure pct00518
    )의 기하 대수 곱 연산으로서 제2 공개 토큰 멀티벡터(
    Figure pct00519
    )를 생성하는 제2 공개 토큰 생성 서브시스템; 및
    상기 제1 공개 토큰 멀티벡터(
    Figure pct00520
    ), 상기 암호문 멀티벡터(
    Figure pct00521
    ), 및 상기 제2 공개 토큰 멀티벡터(
    Figure pct00522
    )의 기하 곱 연산(
    Figure pct00523
    )의 결과로서 상기 암호문 멀티벡터(
    Figure pct00524
    )를 업데이트하되, 상기 암호문 멀티벡터(
    Figure pct00525
    )와 연관된 상기 원래의 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00526
    )가 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00527
    )로 업데이트되게끔, 업데이트하는 암호문 멀티벡터 키 업데이트 서브시스템
    을 포함하는, 키 업데이트 시스템.
  17. 제16항에 있어서, 상기 새로운 헨젤 인코딩된 비밀 키가 이미 존재하지 않을 때 무작위로 생성된 새로운 비밀 키 값(kn)으로부터 상기 새로운 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00528
    )를 생성하는 새로운 비밀 키 멀티벡터 생성 서브시스템을 더 포함하는, 키 업데이트 시스템.
  18. 제1 컴퓨터 시스템과 제2 컴퓨터 시스템 사이에서 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00529
    )를 교환하는 키 교환 시스템으로서,
    상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템을 포함하고,
    상기 제1 컴퓨터 시스템은,
    제1 무작위로 생성된 개인 식별 번호(pr 1 )로부터 제1 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00530
    )를 생성하는 제1 개인 식별 멀티벡터 생성 서브시스템;
    제1 무작위로 생성된 공개 식별 번호(pu 1 )로부터 제1 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00531
    )를 생성하는 제1 공개 식별 멀티벡터 생성 서브시스템;
    상기 제1 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00532
    ) 및 제2 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00533
    )의 기하 대수 기하 곱 연산으로서 공개 통신 식별자 멀티벡터(
    Figure pct00534
    )를 생성하는 공개 통신 식별자 멀티벡터 생성 서브시스템;
    상기 공개 통신 식별자 멀티벡터(
    Figure pct00535
    )를 상기 제2 컴퓨터 시스템에 전송하는 공개 통신 식별자 전송 서브시스템;
    상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00536
    )와 상기 공개 통신 식별자 멀티벡터(
    Figure pct00537
    )의 기하 대수 기하 곱으로서 제1 서브키 멀티벡터(
    Figure pct00538
    )를 생성하는 제1 서브키 멀티벡터 생성 서브시스템;
    상기 제1 서브키 멀티벡터(
    Figure pct00539
    )를 상기 제2 컴퓨터 시스템에 전송하는 제1 서브키 멀티벡터 전송 서브시스템;
    상기 제1 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00540
    ), 상기 제2 서브키 멀티벡터(
    Figure pct00541
    ), 및 상기 공개 통신 식별자 멀티벡터(
    Figure pct00542
    )의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터(
    Figure pct00543
    )의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00544
    )를 개인적으로 계산하는 제1 컴퓨터 비밀 키 멀티벡터 계산 서브시스템
    을 더 포함하고;
    상기 제2 컴퓨터 시스템은,
    제2 무작위로 생성된 개인 식별 번호(pr 2 )로부터 제2 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00545
    )를 생성하는 제2 개인 식별 멀티벡터 생성 서브시스템;
    제2 무작위로 생성된 공개 식별 번호(pu 2 )로부터 제2 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00546
    )를 생성하는 제2 공개 식별 멀티벡터 생성 서브시스템;
    상기 제2 헨젤 인코딩된 공개 식별 멀티벡터(
    Figure pct00547
    )를 상기 제1 컴퓨터 시스템에 전송하는 제2 공개 식별 멀티벡터 전송 서브시스템;
    상기 공개 통신 식별자 멀티벡터(
    Figure pct00548
    )와 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00549
    )의 기하 대수 기하 곱으로서 제2 서브키 멀티벡터(
    Figure pct00550
    )를 생성하는 제2 서브키 멀티벡터 생성 서브시스템;
    상기 제2 서브키 멀티벡터(
    Figure pct00551
    )를 상기 제1 컴퓨터 시스템에 전송하는 제2 서브키 멀티벡터 전송 서브시스템;
    상기 제1 컴퓨터 시스템과 상기 제2 컴퓨터 시스템 사이에서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00552
    )를 직접 전송하지 않고 이제 상기 제1 컴퓨터 시스템 및 상기 제2 컴퓨터 시스템 양쪽 모두가 상기 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00553
    )를 별개로 계산하도록, 상기 제1 서브키 멀티벡터(
    Figure pct00554
    ), 상기 제2 헨젤 인코딩된 개인 식별 멀티벡터(
    Figure pct00555
    ), 및 상기 공개 통신 식별자 멀티벡터(
    Figure pct00556
    )의 기하 대수 기하 곱 연산 + 상기 공개 통신 식별자 멀티벡터(
    Figure pct00557
    )의 기하 대수 기하 덧셈 연산으로서 상기 헨젤 인코딩된 비밀 키 멀티벡터(
    Figure pct00558
    )를 개인적으로 계산하는 제2 컴퓨터 비밀 키 멀티벡터 계산 서브시스템
    을 더 포함하는, 키 교환 시스템.
KR1020227007069A 2019-08-07 2020-08-04 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들 KR20220079522A (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115801308B (zh) * 2022-09-16 2023-08-29 北京瑞莱智慧科技有限公司 数据处理方法、相关装置及存储介质
CN117221018B (zh) * 2023-11-09 2024-01-30 北京睿航至臻科技有限公司 一种基于数据编码的数据安全传输方法及系统

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