KR20220054746A - 유사군 연산을 사용하여 암호화된 데이터에 대해 동등성 및 미만 연산을 수행하기 위한 시스템 및 방법 - Google Patents

유사군 연산을 사용하여 암호화된 데이터에 대해 동등성 및 미만 연산을 수행하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20220054746A
KR20220054746A KR1020217041022A KR20217041022A KR20220054746A KR 20220054746 A KR20220054746 A KR 20220054746A KR 1020217041022 A KR1020217041022 A KR 1020217041022A KR 20217041022 A KR20217041022 A KR 20217041022A KR 20220054746 A KR20220054746 A KR 20220054746A
Authority
KR
South Korea
Prior art keywords
ciphertext
item
computer
data
smpc
Prior art date
Application number
KR1020217041022A
Other languages
English (en)
Inventor
프리야다르샨 콜테
스펜스 잭슨
팔라니벨 라잔 샨무가벨아유탐
미히르 벨라레
네이선 체네트
Original Assignee
배플, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 배플, 인크. filed Critical 배플, 인크.
Publication of KR20220054746A publication Critical patent/KR20220054746A/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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Reverberation, Karaoke And Other Acoustics (AREA)

Abstract

공용 클라우드에서의 비공개 계산을 처리하고, (동등성(equality) 결정 및 미만(less than) 연산을 위한 비교를 포함하는) 암호화된 데이터의 연산을 수행할 수 있는 능력을 제공하는 암호화 시스템 및 방법이 제공된다.

Description

유사군 연산을 사용하여 암호화된 데이터에 대해 동등성 및 미만 연산을 수행하기 위한 시스템 및 방법
본 개시는 일반적으로 암호기술에 관한 것이며, 더 구체적으로는, 컴퓨터 데이터 프라이버시를 위해 사용되는 암호기술에 관한 것이다.
현재의 NIST 표준 AES 카운터 모드(CTR-XOR) 대칭 키 암호화 방식을 사용하여 데이터가 암호화될 때, 암호화된 데이터에 대해 수행될 수 있는 유일한 연산은 복호화이다. 특히, 암호문 둘 다를 먼저 복호화하지 않고서는 2개의 암호화된 정수를 가산(Add)하거나 (미만(Less Than)을 위해) 비교(Compare)하는 것이 가능하지 않다. 따라서, 데이터 보안성을 제공하지만, 암호화된 데이터에 대해 (동등성 검출 및 미만 결정을 비롯한) 유용한 연산을 허용하는 암호화 기법을 제공하는 것이 바람직하다.
위의 문제는 공용 클라우드 내에서의 비공개 계산의 맥락에서 특히 극심하지만, 다른 영역 내에서도 존재한다. 동등성에 대한 비교의 경우, 공지되어 있는 시스템 및 방법은 결정론적 암호화(DE, Deterministic Encryption)를 사용하거나, SHA와 같은 해시를 비교하는 방법을 사용한다. 그러나 결정론적 암호화(DE)는 덜 보안적인 것으로 공지되어 있다. 큰 해시를 비교하는 것은 느리지만, 작인 해시를 비교하는 것은 충돌로 인한 부정확한 결과를 야기할 수 있다.
미만 연산을 위한 비교의 경우, 공지되어 있는 시스템은 순서 보존 암호화(OPE, Order Preserving Encryption) 및 순서 노출 암호화(ORE, Order Revealing Encryption), Cybernetica로부터의 Sharemind와 같은 안전한 다자간 계산(SMPC, secure Multiparty Computation) 방식, 또는 가블드 회로(Garbled Circuit, GC)를 사용하는 방법을 사용한다. 그러나 격리되어 사용되는 순서 보존 암호화(OPE) 및 순서 노출 암호화(ORE)는 덜 보안적인 것으로 공지되어 있다. 미만 비교를 위한 문헌에서의 SMPC 프로토콜은 당사자 사이에서 여러 라운드의 통신을 요구하며, 따라서 매우 느리다. 가블드 회로(GC)는 큰 프라이버시를 제공할 수 있는 잠재력을 가지고 있지만, 계산에 많은 비용이 들고, 당사자 사이에서 큰 암호문이 통신될 것을 요구한다.
따라서, 공용 클라우드에서의 비공개 계산을 처리하고, 암호화된 데이터에 대해 연산(동등성 결정 및 미만 연산을 위한 비교)을 수행할 수 있는 능력을 제공하는 암호화 시스템 및 방법을 제공하는 것이 바람직하며, 따라서, 본 개시는 이에 관한 것이다.
도 1은, 암호화된 데이터에 대해 다양한 연산을 수행하기 위해 사용될 수 있는 시스템의 예시 실시예를 예시한다.
도 2는, 도 1에서의 시스템을 사용하여 수행될 수 있는 (암호화 및 메시지 인증 코드를 포함하는) 암호화 방법을 예시한다.
도 3은, 도 1에서의 시스템을 사용하여 수행될 수 있는 복호화 방법을 예시한다.
도 4는, 암호화된 동등성 연산을 위한 암호화 방법의 예를 예시한다.
도 5는, 암호화된 동등성 연산의 더 많은 세부사항을 예시한다.
도 6은, 암호화된 미만 연산을 위한 암호화 방법의 예를 예시한다.
도 7은, 암호화된 미만 연산의 더 많은 세부사항을 예시한다.
본 개시는, 공용 클라우드 내의 데이터에 대한 연산 동안 데이터의 비밀성이 유지되도록, 비공개 계산을 공용 클라우드에 아웃소싱하기 위한 시스템에 특히 적용가능하며, 이러한 맥락에서 본 개시가 설명될 것이다. 그러나, 본 시스템 및 방법은, 암호화된 데이터에 대해 연산이 수행되는 것을 가능하게 하면서도 보안을 위해 암호화를 제공하는 것이 바람직한 임의의 시스템을 위해/임의의 시스템과 함께 사용될 수 있으므로 더 큰 유용성을 갖는다는 것이 이해될 것이다. 실시예에서, 암호화 및 복호화 프로세스는, 공격자가 암호화된 값을 무시하고 능동적인 공격을 개시하는 것을 방지하는 메시지 인증 코드를 포함한다. 아래에서 설명되는 시스템 및 방법은, 공용 클라우드 내에서 비밀성을 유지하기 위해 복호화 없이 수행될 수 있는 계산을 가능케 하기 위하여 유사군(quasigroup)(QGroup으로서 약술) 암호화 및 메시지 인증 코드(MAC, message authentication code) 프로세스를 사용하는 암호화된 데이터의 동등성 검출 또는 암호화된 데이터에 대한 미만 연산에 사용될 수 있다. 본 시스템 및 방법은 또한 SMPC 시스템을 이용할 수 있다.
도 1은, 암호화된 데이터에 대해 다양한 연산을 수행하기 위해 사용될 수 있는 시스템(100)의 예시 실시예를 예시한다. 예시 실시예에서, 클라이언트(102) 및 서버(104)는 서로 통신하는 것으로 도시되어 있지만, 시스템은, 서로 통신하는 복수의 클라이언트 및 복수의 서버로 구현될 수 있다. 각 클라이언트(102)는, 프로세서, 메모리, I/O 디바이스, 및 디스플레이를 갖는 컴퓨팅 디바이스일 수 있고, 암호화된 데이터에 대해 동등성 검출 연산 또는 미만 연산을 위한 비교와 같은 하나 이상의 연산이 수행될 것을 요청하고 있는 복수의 라인의 명령어/컴퓨터 코드(애플리케이션, 코드, 모바일 애플리케이션 등)를 실행하고 있을 수 있다. 예컨대, 각 클라이언트(102)에 대한 컴퓨팅 디바이스는 개인용 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 단말 등일 수 있다. 아래의 도면에서, 클라이언트는, 클라이언트의 부분이며 연산 커맨드를 발행하고 서버(104)로부터 결과를 수신하는 애플리케이션(112)을 포함할 수 있다. 각 서버(104)는, 프로세서, 메모리, I/O 디바이스, 및 디스플레이를 갖는 컴퓨터일 수 있고, 클라이언트가 요청한 하나 이상의 연산을 관리하고 암호화된 데이터에 대한 연산을 용이하게 하는 복수의 라인의 명령어/컴퓨터 코드(애플리케이션, 코드, 모바일 애플리케이션 등)실행하고 있을 수 있다. 예컨대, 각 서버(104)에 대한 컴퓨터는 서버 컴퓨터, 하나 이상의 클라우드 컴퓨팅 자원, 하나 이상의 가상 컴퓨터 자원, 하나 이상의 블레이드 서버 등일 수 있다. 서버(104)는, 암호화된 데이터를 저장하는, 연결된 데이터베이스(114)를 가질 수 있으며, 데이터베이스 상에서 시스템은 암호화된 데이터에 대해 연산을 수행한다. 한 실시예에서, 데이터베이스(114)는, 암호화된 데이터의 저장을 필요로 하고 암호화된 데이터에 대해 연산을 수행하는 공용 클라우드 내에 호스팅/상주될 수 있다. 한 실시예에서 데이터베이스(114)는 데이터베이스 서버를 사용하여 구현될 수 있다.
시스템(100)은, 각 클라이언트와 각 서버 사이에 연결되고 아래에서 설명되는 바와 같이 암호화 및 복호화 연산을 관리하는 QGroup 및 순서 노출 암호화(ORE) 암호화/복호화 부분(106)을 더 포함할 수 있다. 암호화/복호화 부분(106)은, 적어도 하나의 프로세서, 메모리, I/O 디바이스를 갖는 하나 이상의 컴퓨터 시스템으로서 구현될 수 있고, 아래에서 설명되는 바와 같이 각 클라이언트(102)와 서버(104) 사이에서 암호화 및 복호화 연산을 수행하는 복수의 라인의 명령어/컴퓨터 코드(하나 이상의 애플리케이션, 코드, 모바일 애플리케이션 등)를 실행하고 있을 수 있다.
시스템은, 아래에서 더 상세히 설명되는 바와 같이 암호화된 데이터에 대한 요청된 연산의 수행을 돕는, 서버(104)에 연결된 공지된 안전한 다자간 계산(SMPC) 클러스터(108)를 더 포함할 수 있다. SMPC 클러스터(108)는, 적어도 하나의 프로세서 메모리, I/O 디바이스를 갖는 하나 이상의 컴퓨터 시스템으로서 구현될 수 있고, 아래에서 더 상세히 설명되는 바와 같은 암호화된 데이터에 대한 요청된 연산의 수행을 돕는 복수의 라인의 명령어/컴퓨터 코드(하나 이상의 애플리케이션, 코드, 모바일 애플리케이션)를 실행하고 있을 수 있다. 암호화/복호화 부분(106) 및 SMPC 클러스터(108) 각각은, 서로 동일하거나 상이한 컴퓨터 상에 구현될 수 있다. 더 상세하게는, 암호화 부분(106)은 클라이언트(102)와 동일한 시스템 상에 또는 분리된 시스템 상에 구현될 수 있지만, 서버(105)와 동일한 시스템 상에는 절대로 구현되지 않으며, 왜냐하면 이는, 서버(104) 상에서 암호화 키를 사용가능하게 만들 것이기 때문이다. 또한, 암호화/복호화 부분(106)과 SMPC 클러스터(108) 각각은, 서버(104)와 동일하거나 상이한 컴퓨터 상에 구현될 수 있다. 도 1에 도시된 바와 같이, 암호화/복호화 및 암호화된 데이터에 대한 연산을 수행하도록 때때로 암호화/복호화 부분(106)과 SMPC 클러스터(108) 각각에 암호화 키(110)가 제공될 수 있다. 각 클라이언트는 암호화된 데이터에 대해 하나 이상의 연산(111)을 생성할 수 있고, 서버(104)는 아래에서 설명되는 바와 같이 그러한 연산에 대한 결과(113)를 클라이언트에 반환할 것이다.
도 2는 암호화 방법(200)을 예시하고, 도 3은 검증 및 복호화 연산 방법(300)을 예시하며, 이들은 도 1에 도시된 시스템에 의해 수행될 수 있다. 이들 프로세스 각각은, 도 1에 도시된 시스템 요소(100 내지 114) 중 하나 이상을 사용하여 프로세스를 수행할 수 있다.
암호화 연산(200)으로 되돌아가면, (한 실시예에서, 도 1에서의 암호화 요소(106)에 의해 수행되는) 암호화는 (암호화 방식을 사용하여 이전에 생성되거나 암호화 시에 생성되는) 2개의 비밀 키를 사용하여 암호화를 수행한다. 하나의 비밀 키는 암호화 키(Ke)이고, 다른 비밀 키는 인증 키(Ka)이며, 암호화 키(Ke)는 클라이언트/애플리케이션(102, 112)으로부터의 평문 데이터(D)를 암호화하기 위해 사용되고, 인증 키(Ka)는, 키(Ke)를 사용하여 암호화에 의해 생성되는 암호문 데이터(C)에 대해 메시지 인증 코드(MAC) 프로세스를 수행하기 위해 사용된다. 한 실시예에서, 암호화/복호화 프로세스는, 공지된 Qgroup 암호화 프로세스를 사용하여 수행될 수 있다.
도 2에 도시된 바와 같이, 암호화 방법(200)은, AES 암호화 또는 HMAC-SHA 메시지 다이제스트(digest)와 같은 암호기술 함수인 의사 랜덤 함수(Prf, Pseudo Random Function)(프로세스(202))를 사용하여 의사 랜덤 패드(P)를 생성할 수 있으며, 패드(P)는, 그 후 QGroup 감산(subtract) 연산(204)을 사용하여 클라이언트/애플리케이션(102, 112)으로부터의 평문 데이터(D)와 결합된다. 더 상세하게는, 프로세스(202)는, 단 한 번만 사용되는 난수인 난스(Nonce)(N), 평문 데이터의 비트의 수인 길이(L), 및 Prf에 의해 패드(P)를 생성하기 위해 사용되는 암호화 비밀 키(Ke)를 취한다. NIST 표준 AES 카운터 모드(CTR-XOR)는 AES 암호화 함수를 Prf로서 사용하고 Xor 함수를 QGroup 연산으로서 사용한다. NIST 표준은, CTR-XOR 암호화가 어떻게 L비트 길이의 평문 데이터(M), 난스(N), 및 비밀 키(K)를 취하여, N, N+1, ..., N+m-1로부터 각각 도출되는 m = ceiling(L/128)개의 128비트 입력 블록의 세트를 먼저 생성한 후, 키(Ke)를 사용한 AES 암호화를 사용해 각 입력 블록을 암호화하여 m개의 출력 블록을 생성하고, 최종적으로 m개의 출력 블록 모두를 연접하여 L비트 길이의 의사 랜덤 패드(P)를 생성하는지를 설명한다. 암호화의 두 번째 단계(프로세스(204))에서, 의사 랜덤 패드(P)는 평문 데이터(D)와 XOR 연산되어 암호문 데이터(C)를 생성한다.
QGroup(G)은, 길이 L의 2진 스트링 모두를 포함하는 세트(G.S), 및 G.Add, G.Lsub, 및 G.Rsub의 3개의 연산으로 구성된다. G.Add 연산은 세트(G.S)로부터의 임의의 2개의 원소 A 및 B를 취하고 세트(G.S) 내의 또 다른 원소 C를 산출한다. G.Lsub 연산은 세트(G.S)로부터의 임의의 2개의 원소 A 및 C를 취하고, G.Add(A,B) = C가 되도록 세트로부터의 고유한 원소 B를 산출한다. G.Rsub 연산은 세트(G.S)로부터의 임의의 2개의 원소 B 및 C를 취하고, G.Add(A,B) = C가 되도록 고유한 원소 A를 산출한다. G.Add 연산에 대해 G.Lsub 연산은 좌-역행렬로서 공지되어 있고 G.Rsub 연산은 우-역행렬로서 공지되어 있다.
한 실시예에서, G.Add(P,D) = (P-D) mod 2L이고 G.Lsub(P,C) = (P-C) mod 2L이 되도록 QGroup(G)이 선택될 수 있다. 이러한 선택은 감산 연산(204)이 G.Add(P,D)가 되어 C = (P-D) mod 2L이 되게 하고 감산 연산(306)이 G.Lsub(P,C)가 되어 D = (P-C) mod 2L이 되게 할 것이다. QGroup 연산의 다른 선택 또한 가능하다.
암호화 프로세스의 부분으로서, 암호문 데이터(C)가 메시지 인증 코드(MAC) 프로세스(206)에 피딩될 수 있다. MAC 프로세스(206)는 또한 인증 키(Ka)를 수신하고 암호문을 산출하며, 이들은 그 후 난스(N) 및 MAC(M)와 함께 데이터베이스(114) 내에 암호문 (K, N, C, M)으로서 저장될 수 있다. 공격자가 암호화된 값을 무시하고 능동적인 공격을 개시하는 것을 방지하기 위해 감산 프로세스(204) 후에 MAC 프로세스(206)가 사용된다. 도 2 내지 도 3에 도시된 한 실시예에서, 공지된 암호문 기반 MAC(CMAC, Cipher-based MAC)이 사용되지만, 키를 갖는 임의의 암호기술 해시 함수가 본 시스템 및 방법에서 사용될 수 있다.
복호화 방법(300) 동안, 감산 복호화 프로세스(306)에 입력될 수 있는 암호문 데이터를 생성하기 위한 입력으로서 인증 키(Ka)를 사용하여 암호문 기반 MAC 프로세스(302) 내에 암호문이 피딩될 수 있다. 따라서, MAC 결과(해시)는 인증 키(Ka)를 사용하여 재계산되고 복호화 동안 확인되어, 암호문이 암호화 후에 부당변경되지 않았다고 MAC 검증이 확인하는 경우에만 암호화 키(Ke)를 사용하는 실제 복호화가 진행되도록 한다. 복호화 동안, (암호문과 함께 저장되는) 난스(N) 및 길이(L)과 암호화 키(Ke)는, 다시 감산 복호화 프로세스(306)에 피딩되는 패드(P)를 생성하는 의사 랜덤 함수(304)에 입력될 수 있다. 감산 복호화 프로세스(306)는 암호문 데이터 및 패드를 사용하여 감산 연산을 수행하고 평문 데이터를 생성할 수 있으며, 평문 데이터는 그 후 클라이언트/애플리케이션(102, 112)에 반환될 수 있다.
위의 암호화 및 복호화 방법(200, 300)은, 암호화된 데이터에 대해 여러 상이한 연산을 수행하기 위해 사용될 수 있다. 더 구체적으로는, (도 4 내지 도 5에 도시된) 예시적인 암호화된 동등성 연산 및 (도 6 내지 도 7에 도시된) 예시적인 암호화된 미만 연산이 수행될 수 있다. 암호화된 데이터에 대한 이들 연산은 종래의 시스템 및 프로세스를 사용하여 가능하지 않을 것이며 따라서 본 시스템 및 방법은, 암호화된 데이터에 대해 연산을 수행할 수 있는, 기술적 문제에 대한 기술적 해결책을 제공한다는 점에 유의해야 한다.
암호화된 동등성 연산
도 4는, 암호화된 동등성 연산(400)에 대한 암호화 방법(400)의 예를 예시하고, 도 5는, 암호화된 동등성 연산(500)의 더 많은 세부사항을 예시한다. 암호화된 동등성 연산(500)은, 2개의 SMPC 컴퓨터(예컨대, 도 5에 도시된 바와 같은, SMPC 서버 1(108A) 및 SMPC 서버 2(108B))를 사용하는 공지된 SMPC 프로토콜을 사용할 수 있다. 제1 SMPC 컴퓨터(108A)는 암호화 키(동등성 연산에서 사용되는 데이터(D1, D2)의 아이템 각각에 대한 K1e, K2e)에 대한 액세스를 가지며, 제2 컴퓨터(108B)는 인증 키(동등성 연산에서 사용되는 데이터(D1, D2)의 아이템 각각에 대한 K1a, K2a)에 대한 액세스를 갖는다. 암호화 키는 제1 컴퓨터(108A) 상에서 제1 몫의 차이를 계산하기 위해 사용되고, 인증 키는, 제2 컴퓨터(108B) 상에서 제2 몫의 차이를 계산하기 전에 암호문 데이터의 무결성을 검증하기 위해 사용되며, 둘 다는 아래에서 더 상세하게 설명된다. 데이터베이스(114)는 임의의 키에 대한 액세스를 갖지 않는다.
제1 및 제2 컴퓨터(108A, 108B) 둘 다는 비밀 키(Kf) 및 카운터 값(CTRf)을 공유하고, 이들은, 데이터베이스(114)에 노출되지 않는 공유된 비밀을 수립하기 위해 디피 헬만(Diffie Hellman)과 같은 키 교환 프로토콜을 사용하여 한 번 설정된다. CTRf는, 매 동등성 암호화 연산 후에 증분되는 카운터이고, Kf는, Ctrf를 암호화하여, 동등성 암호화를 위해 사용될 난수의 세트를 생성하기 위해 사용되는 키이다.
동등성 암호화 함수는 효율적으로 암호화하기 위해 3개의 장점을 이용한다. 첫 번째로, 아래에서 설명되는 바와 같이 복호화 함수에 대한 필요가 없다. 두 번째로, 아래에서 설명되는 바와 같이 2개의 SMPC 컴퓨터(108A, 108B) 사이에 난수의 동기화된 스트림이 존재한다. 세 번째로, 아래에서 설명되는 바와 같이 각 난수는 피연산자 쌍에 대해 단 한 번만 사용되며 따라서 연산의 보안성을 증가시킨다.
암호화 및 암호화된 동등성 방법(400, 500)은, 도 4 내지 도 5에 도시된 바와 같은 다음의 프로세스를 포함할 수 있다.
a. 애플리케이션(112)은 다음의 프로세스를 수행:
i. 데이터베이스(114) 상의 저장을 위하여, 암호문 (K1, N1, C1, M1)을 산출하기 위해, 암호화 키(K1e)를 사용하여 난스(N1)로 평문 데이터(D1)를 암호화하고, 인증 키(K1a)를 사용하는 MAC가 뒤이음(프로세스(402)),
ii. 데이터베이스(114) 상의 저장을 위하여, 암호문 (K2, N2, C2, M2)를 산출하기 위해 암호화 키(K2e) 및 인증 키(K2a)를 사용하여 난스(N2)로 평문 데이터(D2)를 암호화(프로세스(402)), 및
iii. 데이터베이스(114) 상의 2개의 암호문의 동등성 연산(도 5에 도시된 바와 같은 EqualTo 연산)을 개시.
b. 데이터베이스(114)(및 데이터베이스(114)를 호스팅하는 컴퓨터 또는 데이터베이스 서버)가 2개의 프로세스를 병렬로 수행:
i. 제2 컴퓨터(108B)에 암호문 (K1, N1, C1, M1) 및 (K2, N2, C2, M2)를 전송하고, 제2 컴퓨터(108B)로부터의 응답(W)이 데이터베이스(114)에 반환되기를 대기, 및
ii. 제1 컴퓨터(108A)에 각 암호문의 제1 목 (K1, N1) 및 (K2, N2)을 전송하고, 제1 컴퓨터(108A)로부터의 응답(Y)이 데이터베이스(114)에 반환되기를 대기.
b. 제2 컴퓨터(108B)는 다음의 프로세스를 수행:
i. 데이터베이스(114)로부터 암호문 (K1, N1, C1, M1) 및 (K2, N2, C2, M2)를 수신,
ii. 수신된 암호문의 MAC로서 M1 및 M2를 재계산. 검증이 성공한다면, 후속 프로세스에서 N1 및 N2의 올바른 값을 사용하고, 검증이 실패한다면, 그 대신, N1 및 N2에 대해 랜덤한 값(R)을 사용;
iii. 랜덤한 값(R)을 산출하기 위해, 키(Kf)를 사용하여, N1 및 N2가 뒤잇는 CTRf를 암호화.
iv. V = (C2-C1) mod 2L을 계산,
v. W = EqualityEncryption(V, R)을 다음과 같이 계산:
i. R로부터 0이 아닌 랜덤한 값 A를 추출
ii. R로부터 상이한 랜덤한 값 B를 추출
iii. A, B, 및 V를 유한 필드(D)의 원소로서 취급하여, 필드 승산 및 가산을 사용해 W = A * V + B를 계산, 및
vi. 데이터베이스(114)에 W를 전송.
c. 제1 SMPC 컴퓨터(108A)는 다음의 프로세스를 수행:
i. 데이터베이스(114)로부터 (K1, N1) 및 (K2, N2)를 수신,
ii. 랜덤한 값(R)을 산출하기 위해 키(Kf)를 사용하여, N1 및 N2가 뒤잇는 CTRf를 암호화,
iii. X = (Prf(K2e, N2, L) - Prf(K1e, N1, L)) mod 2L을 계산,
iv. Y = EqualityEncryption(X, R)을 다음과 같이 계산:
a. R로부터 0이 아닌 랜덤한 값 A를 추출
b. R로부터 상이한 랜덤한 값 B를 추출
c. A, B, 및 X를 유한 필드(D)의 원소로서 취급하여, 필드 승산 및 가산을 사용해 Y = A * X + B를 계산, 및
v. 데이터베이스(114)에 Y를 전송.
d. 데이터베이스(114)는 다음의 프로세스를 수행:
i. 제2 컴퓨터(108B)로부터 W를 수신,
ii. 제1 컴퓨터(108A)로부터 Y를 수신,
iii. Z = Xor(W,Y)를 계산,
iv. D1=D2의 결과로서 Z=0을 사용.
암호화된 미만 연산
도 6은, 한 실시예에서, 도 1에 도시된 시스템을 사용하여 수행될 수 있지만 다른 시스템을 사용하여 구현될 수도 있는, 암호화된 미만 연산(700)에 대한 암호화 방법(600)의 예를 예시한다. 이 연산을 사용하면, QGroup 암호화 방식에 의해 산출되는 L-1 비트의 정수 D1 및 D2에 대한 암호문이, 다음의 SMPC 프로토콜에 의해 미만 연산을 위해 비교될 수 있다. 이 프로토콜은, 2016년에 Nathan Chenette 등에 의해 교시된 바와 같은 "제한된 누출을 갖는 현실적 순서 노출 암호화(Practical Order-Revealing Encryption with Limited Leakage)"와 같은 순서 노출 암호화(ORE) 방식에 의존한다. 본 방법은 도 7에 도시된 바와 같이 SMPC 클러스터 내에서 제1 및 제2 컴퓨터(108A, 108B)를 사용하기 위한 ORE 방식을 포함한다. 제1 컴퓨터(108A)는 암호화 키(데이터(D1, D2)의 아이템 각각에 대한 K1e, K2e)에 대한 액세스를 갖고, 제2 서버는 인증 키(데이터(D1, D2)의 아이템 각각에 대한 K1a, K2a)에 대한 액세스를 갖는다. 암호화 키는 제1 컴퓨터(108A) 상에서 제1 몫의 차이를 계산하기 위해 사용되고, 인증 키는, 제2 컴퓨터(108B) 상에서 제2 몫의 차이를 계산하기 전에 암호문 데이터의 무결성을 검증하기 위해 사용된다. 데이터베이스(114)는 동등성 연산을 위한 임의의 키에 대한 액세스를 갖지 않는다.
컴퓨터(108A 및 108B) 둘 다는 또한, 데이터베이스(114)에 노출되지 않는 공유된 비밀을 수립하기 위해 디피 헬만과 같은 키 교환 프로토콜을 사용하여 한 번 설정되는 비밀 키(Ko) 및 카운터 값(CTRo)을 공유한다. CTRo는, 매 ORE 연산 후에 증분되는 카운터이고, Ko는, ORE를 위해 사용될 난수의 세트를 생성하기 위하여 Ctro를 암호화하기 위해 사용되는 키이다.
ORE 함수는 효율적으로 암호화하기 위해 4개의 장점을 이용한다. 첫 번째로, 연산은, 암호화된 데이터에 대한 결과를 복호화 함수가 반환할 것을 요구하지 않는다. 두 번째로, 2개의 컴퓨터(108A, 108b) 사이에 난수의 동기화된 스트림이 존재한다. 세 번째로, 각 난수는 피연산자 쌍에 대해 단 한 번만 사용된다. 네 번째로, 제2 몫의 평문 차이가 데이터베이스(114)에서 재계산될 수 있다.
미만 연산 및 암호화(600, 700)는 다음의 프로세스를 포함할 수 있다.
a. 애플리케이션(112)은 다음의 프로세스를 수행:
i. 데이터베이스(114) 상의 저장을 위하여, 암호문 (K1, N1, C1, M1)을 산출하기 위해, 암호화 키(K1e)를 사용하여 난스(N1)로 평문 데이터(D1)을 암호화하고, 인증키(K1a)를 사용하는 MAC이 뒤이음(프로세스 602),
ii. 데이터베이스(114) 상의 저장을 위하여, 암호문 (K2, N2, C2, M2)를 산출하기 위해, 암호화 키(K2e) 및 인증 키(K2a)를 사용하여 난스(N2)로 평문 데이터(D2)를 암호화(프로세스 602), 및
iii. 데이터베이스(114) 상의 2개의 암호문의 미만 연산을 개시.
b. 데이터베이스(114)(및/또는 데이터베이스를 호스팅하는 컴퓨터 또는 데이터베이스 서버)는 2개의 프로세스를 병렬로 수행:
i. 제2 컴퓨터(108B)에 암호문 (K1, N1, C1, M1) 및 (K2, N2, C2, M2)를 전송하고 제2 컴퓨터(108B)로부터 응답(W)을 대기, 및
ii. 서버 1에 제1 몫 (K1, N1) 및 (K2, N2)를 전송하고 제1 컴퓨터(108A)로부터 응답(Y)을 대기
c. 제2 컴퓨터는 다음의 프로세스를 수행:
i. 데이터베이스(114)로부터 암호문 (K1, N1, C1, M1) 및 (K2, N2, C2, M2)를 수신.
ii. 수신된 암호문의 MAC로서 M1 및 M2를 재계산. 검증이 성공하면, 후속 단계에서 N1 및 N2의 올바른 값을 사용. 검증이 실패하면, 그 대신, N1 및 N2에 대해 난수를 사용.
iii. 랜덤한 값 R을 산출하기 위해, 키(Ko)를 사용하여, N1 및 N2가 뒤잇는 Ctro를 암호화.
iv. V = (C2-C1) mod 2L을 계산,
v. W = OrderRevealingEncryption(V, R)을 다음과 같이 계산:
i. 랜덤 패드를 사용하여 XOR에 의해 암호화된 부호 비트를 W[0] = R[0]
Figure pct00001
V[0]로서 계산
ii. 상이한 랜덤 패드를 사용하여 XOR에 의해 크기의 암호화된 최상위 비트를 W[1] = R[1]
Figure pct00002
V[1]로서 계산
iii. 선행하는 프리픽스(부호 비트 V[0] 제외)의 (동등성 암호화와 같은) 암호화인 새로운 랜덤 패드로 XOR에 의해 크기의 각 후속적인 비트를 W[i] = V[i]
Figure pct00003
EqualityEncryption(V[1]||V[2]||...V[i-1], R) mod 2로서 암호화
vi. 데이터베이스(114)에 W를 전송
d. SMPC 제1 컴퓨터(108A)가 다음의 프로세스를 수행:
i. 데이터베이스(114)로부터 (K1, N1) 및 (K2, N2)를 수신
ii. 랜덤 값 R을 산출하기 위해, 키(Ko)를 사용하여, N1 및 N2가 뒤잇는 Ctro를 암호화,
iii. X = (Prf(K2e, N2, L) - Prf(K1e, N1, L)) mod 2L을 계산,
iv. Y = OrderRevealingEncryption(X, R)을 다음과 같이 계산:
a. 랜덤 패드를 사용하여 XOR에 의해 암호화된 부호 비트를 Y[0] = R[0]
Figure pct00004
X[0]로서 계산
b. 상이한 랜덤 패드를 사용하여 XOR에 의해 크기의 암호화된 최상위 비트를 Y[1] = R[1]
Figure pct00005
X[1]로서 계산
c. 선행하는 프리픽스(부호 비트 X[0] 제외)의 (동등성 암호화와 같은) 암호화인 새로운 랜덤 패드를 사용하여 XOR에 의해 크기의 각 후속 비트를 Y[i] = X[i]
Figure pct00006
EqualityEncryption(X[1]||X[2]||...||X[i-1], R) mod 2로서 암호화
v. 데이터베이스(114)에 Y를 전송
e. 데이터베이스(114)는 다음의 프로세스를 수행:
i. 제2 컴퓨터(108B)로부터 W를 수신,
ii. 제1 컴퓨터(108A)로부터 Y를 수신,
iii. Z = Xor(W, Y)를 계산
iv. Z = 0이라면, 값 D1 및 D2가 동등하고, 그렇지 않다면 그다음 단계로 진행
v. V = (C2-C1) mod 2L을 계산,
vi. L = OreCompare(Z, V)를 다음과 같이 계산:
i. 0이 최상위 비트이고 1이 차상위 비트이도록 Z의 비트가 수치화되었다면, 비트 Z[0]은 부호 비트 C1[0]과 C2[0]의 차이임,
ii. Z[i]는 0이 아니도록, i가 (최상위 비트의) 0 이후의 최소 인덱스가 되도록 함,
iii. 비트 V[i]를 비트 Z[0]에 비교; V[i] = Z[0]이라면, 표시 L = 1로 설정하고, 그렇지 않다면 L = 0으로 설정
vii. D1 < D2의 결과로서 L을 사용.
문자의 암호화된 문자열의 비교 시, 2개의 암호화된 문자열이 미만 연산에 대해 비교될 수 있도록 각 문자를 개별적으로 암호화해야 한다. 문자열 S 및 T에 대한 비교 방법은, 제1 문자 S[0] 및 T[0]를 비교하는 것으로 시작되며, 그 후, 문자열 중 어느 하나가 문자를 다 쓸 때까지, 또는, 비교가, T[i]와 동등하지 않은 어떠한 문자 S[i]를 발견할 때까지, 후속적인 문자를 비교한다. 문자열 중 하나, 예컨대 S가 문자를 다 쓰면, 문자열 S의 모든 문자는 다른 문자열 T의 프리픽스와 동등하며, 따라서, 방법은 S < T라고 선언한다. 방법이, 동등하지 않은 문자를 갖는 인덱스 i를 찾는다면, 문자열 S < 문자열 T인지의 여부를 결정하기 위해 S[i] < T[i]인지의 여부를 확인한다.
0에서부터 i-1까지의 인덱스에서 2개의 문자열 내의 모든 문자가 동등하다고 결정되고 인덱스 i에서의 문자의 순서가 노출되더라도, 다음의 방법을 사용하여 (인덱스 i+1에서부터 문자열의 끝까지의) 문자열 내의 후속적인 문자의 프라이버시가 유지된다. EqualityEncryption 및 OrderRevealingEcryption 함수 둘 다는, 두 SMPC 서버 상에서 난수의 동기화된 스트림을 사용한다. 두 서버 모두 상에서 문자가 동일하게 암호화되도록 인덱스 0에서부터 i까지의 모든 문자를 암호화하기 위해 두 스트림이 동일한 것이 중요하지만, 인덱스 i 이후의 문자에 대해 스트림이 유사할 필요는 없다.
Rj를, 문자 S[j]를 암호화하기 위해 사용되는 n개의 랜덤 비트의 세트라고 하고, Pj를, 문자 T[j]를 암호화하기 위해 사용되는 n개의 랜덤 비트의 세트라고 한다. 그러면 다음의 방법은 Rj가 프리픽스 S[0]S[1]...S[j-1]에 종속적이게 하고 Pj가 프리픽스 T[0]T[1]...T[j-1]에 종속적이게 한다.
R0 = CMAC(Ko,Ctro||N1||N2)
Rj = S[j-1]
Figure pct00007
PRF(Ko,Rj-1,n)
P0 = CMAC(Ko,Ctro||N1||N2)
Pj = T[j-1]
Figure pct00008
PRF(Ko,Pj-1,n)
랜덤 비트를 생성하는 이 방법은, 공통적인 Ko 및 Ctro 때문에, 랜덤 비트의 제1 세트 R0 = P0이도록 보장한다. 프리픽스 S[0]...S[i-1] = T[0]...T[i-1]인 한, Ri = Pi이다. 그러나 S[i] ≠ T[i]인 인덱스 i에서의 제1 상이한 문자 이후, j > 0인 모든 후속적인 문자에 대해 R[i+j] ≠ P[i+j]이다. 랜덤 비트에서의 차이는, 모든 후속적인 문자가 프라이버시를 보존하면서 랜덤하게 암호화되게 한다.
결과
개시된 SMPC 동등성 및 미만 프로토콜은, 서버와 SMPC 클러스터 컴퓨터 사이의 다수의 왕복의 통신을 단일 왕복으로 감소시키기 때문에, Sharemind 시스템에서와 같은 이전에 공개된 프로토콜보다 훨씬 더 빠르다. 또한, MAC 프로세스는 공격자가 암호화된 문자 값을 무시하는 것을 방지한다. 전술한 시스템 및 방법은, Amazon Web Services 및 Microsoft Azure와 같은 공용 클라우드 내에 배치되는 Cassandra, MySQL, MariaDB, Postgres, MongoDB, Oracle, 및 Microsoft SQL Server와 같은 상용 데이터베이스를 위한 암호화를 제공한다.
전술한 설명은, 해설의 목적을 위해, 특정 실시예를 참조하여 설명되었다. 그러나 위의 예시적인 논의는, 모든 것을 포함하도록 의도되지 않으며, 또한 본 개시를 개시된 정확한 형태로 제한하도록 의도되지 않는다. 위의 교시를 고려하면 여러 수정 및 변형이 가능하다. 실시예는, 본 개시의 원리 및 그 실제 응용예를 가장 잘 설명하고, 이에 의해, 당업자가, 본 개시, 및 고려되는 특정한 용도에 적합한 바와 같은 다양한 수정을 갖는 다양한 실시예를 가장 잘 이용하는 것을 가능케 하도록 선택 및 설명되었다.
본 명세서에서 개시되는 시스템 및 방법은, 하나 이상의 컴포넌트, 시스템, 서버, 어플라이언스, 다른 서브컴포넌트를 통해 구현되거나, 그러한 요소 사이에 분산될 수 있다. 시스템으로서 구현될 때, 그러한 시스템은, 다른 것들 중에서도, 범용 컴퓨터 내에서 발견되는 소프트웨어 모듈, 범용 CPU, RAM 등과 같은 컴포넌트를 포함 및/또는 수반할 수 있다. 서버 상에 혁신사항이 존재하는 구현예에서, 그러한 서버는, 범용 컴퓨터 내에서 발견되는 것과 같은 CPU, RAM 등과 같은 컴포넌트를 포함 또는 수반할 수 있다.
또한, 본 명세서에서의 시스템 및 방법은, 위에서 진술한 바를 넘어서, 이질적이거나 완전히 상이한 소프트웨어, 하드웨어, 및/또는 펌웨어 컴포넌트를 갖는 구현예를 통해 달성될 수 있다. 그러한 다른 컴포넌트(예컨대, 소프트웨어, 프로세싱 컴포넌트 등) 및/또는 본 발명과 연관되거나 본 발명을 구체화하는 컴퓨터 판독가능 매체에 대해, 예컨대, 본 명세서에서의 혁신사항의 양상은 다수의 범용 또는 특수 목적 컴퓨팅 시스템 또는 구성과 일치되게 구현될 수 있다. 본 명세서에서의 혁신사항과 사용하기에 적합할 수 있는 다양한 예시적 컴퓨팅 시스템, 환경, 및/또는 구성은, 라우팅/연결 컴포넌트, 핸드-헬드 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋 탑 박스, 소비자 전자 디바이스, 네트워크 PC, 다른 기존의 컴퓨터 플랫폼, 위의 시스템 또는 디바이스 중 하나 이상을 포함하는 분산 컴퓨팅 환경 등과 같은, 개인용 컴퓨터, 서버, 또는 서버 컴퓨팅 디바이스 내에 있거나 이들 상에서 구체화되는 소프트웨어 또는 다른 컴포넌트를 포함할 수 있지만, 이들로 제한되지는 않는다.
일부 예에서, 시스템 및 방법의 양상은, 예컨대, 그러한 컴포넌트 또는 회로부와 연관되어 실행되는, 프로그램 모듈 포함하는 로직 및/또는 로직 명령어를 통해 달성되거나 그러한 로직 및/또는 로직 명령어에 의해 수행될 수 있다. 일반적으로, 프로그램 모듈은, 특정한 작업을 수행하거나 본 명세서에서의 특정한 명령어를 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함할 수 있다. 본 발명은 또한, 통신 버스, 회로부, 또는 링크를 통해 회로부가 연결되는 분산된 소프트웨어, 컴퓨터, 또는 회로 설정의 맥락에서 실시될 수 있다. 분산된 설정에서, 제어/명령어는, 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 다로부터 발생할 수 있다.
본 명세서에서의 소프트웨어, 회로부, 및 컴포넌트는 또한, 하나 이상의 유형의 컴퓨터 판독가능 매체를 포함 및/또는 이용할 수 있다. 컴퓨터 판독가능 매체는, 그러한 회로 및/또는 컴퓨팅 컴포넌트 상에 있거나, 그러한 회로 및/또는 컴퓨팅 컴포넌트와 연관가능하거나, 그러한 회로 및/또는 컴퓨팅 컴포넌트에 의해 액세스될 수 있는 임의의 사용가능한 매체일 수 있다. 제한이 아닌 예를 들면, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 탈착식 및 비탈착식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다목적 디스크(DVD, digital versatile disk) 또는 다른 광학 저장장치, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스, 또는 원하는 정보를 저장하기 위해 사용될 수 있고 컴퓨팅 컴포넌트에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이들로 제한되지는 않는다. 통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 및/또는 다른 컴포넌트를 포함할 수 있다. 또한, 통신 매체는 유선 네트워크 또는 직접 유선 연결과 같은 유선 매체를 포함할 수 있지만, 본 명세서에서의 임의의 그러한 유형의 매체는 일시적 매체를 포함하지 않는다. 위의 컴퓨터 판독가능 매체 중 임의의 매체의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함된다.
본 설명에서, 컴포넌트, 모듈, 디바이스 등의 용어는, 다양한 방식으로 구현될 수 있는 임의의 유형의 논리적 또는 기능적 소프트웨어 요소, 회로, 블록, 및/또는 프로세스를 지칭할 수 있다. 예컨대, 다양한 회로 및/또는 블록의 기능은, 임의의 다른 수의 모듈로 서로 조합될 수 있다. 각 모듈은, 본 명세서에서의 혁신사항의 기능을 구현하기 위해 중앙 프로세싱 유닛에 의해 판독되도록 유형의 메모리(예컨대, 랜덤 액세스 메모리, 리드 온리 메모리, CD-ROM 메모리, 하드 디스크 드라이브 등) 상에 저장되는 소프트웨어 프로그램으로서 구현될 수도 있다. 또는, 모듈은, 송신 반송파를 통해 범용 컴퓨터에 또는 프로세싱/그래픽 하드웨어에 송신되는 프로그래밍 명령어를 포함할 수 있다. 또한, 모듈은, 본 명세서에서의 혁신사항에 의해 망라되는 기능을 구현하는 하드웨어 로직 회로부로서 구현될 수 있다. 마지막으로, 모듈은, 특수 목적 명령어(SIMD 명령어), 필드 프로그래밍가능 로직 어레이, 또는 원하는 레벨의 성능 및 비용을 제공하는, 이들의 임의의 혼합을 사용하여 구현될 수 있다.
본 명세서에서 개시되는 바와 같이, 본 개시와 일치하는 특징은 컴퓨터 하드웨어, 소프트웨어, 및/또는 펌웨어를 통해 구현될 수 있다. 예컨대, 본 명세서에서 개시되는 시스템 및 방법은, 예컨대, 데이터베이스, 디지털 전자 회로부, 펌웨어, 소프트웨어를 또한 포함하는 컴퓨터와 같은 데이터 프로세서를 비롯한 다양한 형태로, 또는 이들의 조합으로 구체화될 수 있다. 또한, 개시되는 구현예 중 일부는, 본 명세서에서의 혁신사항과 일치하는 특정한 하드웨어 컴포넌트, 시스템, 및 방법을 설명하지만, 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 조합으로 구현될 수 있다. 또한, 본 명세서에서의 혁신사항의 위에 언급된 특징 및 다른 양상과 원리는 다양한 환경에서 구현될 수 있다. 그러한 환경 및 관련된 응용예는, 본 발명에 따른 다양한 루틴, 프로세스, 및/또는 동작을 수행하도록 특수하게 구성될 수 있거나, 필요한 기능을 제공하도록 코드에 의해 선택적으로 활성화 또는 재구성되는 범용 컴퓨터 또는 컴퓨팅 플랫폼을 포함할 수 있다. 본 명세서에서 개시되는 프로세스는 내재적으로 임의의 특정한 컴퓨터, 네트워크, 아키텍처, 환경, 또는 다른 장치와 관련되어 있지 않으며, 하드웨어, 소프트웨어, 및/또는 펌웨어의 적합한 조합에 의해 구현될 수 있다. 예컨대, 본 발명의 교시에 따라서 작성된 프로그램과 함께 다양한 범용 머신이 사용될 수 있거나, 요구되는 방법 및 기법을 수행하기 위한 특수화된 장치 또는 시스템을 구성하는 것이 더 편리할 수 있다.
로직과 같은, 본 명세서에서 설명되는 방법 및 시스템의 양상은 또한, 필드 프로그래밍가능 게이트 어레이("FPGA", field programmable gate array), 프로그래밍가능 어레이 로직("PAL", programmable array logic) 디바이스, 전기적으로 프로그래밍가능한 로직과 메모리 디바이스 및 표준 셀 기반 디바이스, 및 애플리케이션 특유 집적 회로와 같은 프로그래밍가능 로직 디바이스("PLD", programmable logic device)를 비롯한 다양한 회로부 중 임의의 회로부로 프로그래밍되는 기능으로서 구현될 수 있다. 양상의 구현에 대한 몇몇 다른 가능성은, 메모리 디바이스, (EEPROM과 같은) 메모리를 갖는 마이크로컨트롤러, 임베디드 마이크로프로세서, 펌웨어, 소프트웨어 등을 포함한다. 또한, 양상은, 소프트웨어 기반 회로 에뮬레이션을 갖는 마이크로프로세서, 개별 로직(순차적 및 조합적), 커스텀 디바이스, 퍼지(신경) 로직, 양자 디바이스, 및 위의 디바이스 유형 중 임의의 유형의 하이브리드로 구체화될 수 있다. 그 기반이 되는 디바이스 기술은 다양한 컴포넌트 유형, 예컨대, 상보적 금속-산화물 반도체("CMOS", complementary metal-oxide semiconductor)와 같은 금속-산화물 반도체 전계-효과 트랜지스터("MOSFET", metal-oxide semiconductor field-effect transistor) 기술, 이미터 커플드 로직("ECL", emitter-coupled logic)과 같은 바이폴라 기술, 폴리머 기술(예컨대, 반도체 공액 폴리머 및 금속 공액 폴리머-금속 구조물), 혼합된 아날로그 및 디지털 등으로 제공될 수 있다.
본 명세서에서 개시되는 다양한 로직 및/또는 기능은, 거동, 레지스터 전송, 로직 컴포넌트, 및/또는 다른 특성의 관점에서, 하드웨어, 펌웨어의 임의의 수의 조합을 사용하여 가능케 될 수 있고, 그리고/또는 다양한 기계 판독가능 또는 컴퓨터 판독가능 매체 내에 수록되는 데이터 및/또는 명령어로서 가능케 될 수 있다는 점에 또한 유의해야 한다. 그러한 형식의 데이터 및/또는 명령어가 수록될 수 있는 컴퓨터 판독가능 매체는 다양한 형태의 비휘발성 저장 매체(예컨대, 광학, 자기, 또는 반도체 저장 매체)를 포함할 수 있지만 이들로 제한되지는 않으며, 또한 일시적 매체는 포함하지 않는다. 맥락에서 분명히 다르게 요구하지 않는 한, 본 설명 전반에 걸쳐 "~을(를) 포함한다", "~을(를) 포함하는" 등의 표현은, 배타적이거나 완전한 의미가 아닌, 포괄적인 의미로 해석되어야 하며; 즉, "~을(를) 포함하지만 이들로 제한되지 않는"의 의미로 해석되어야 한다. 단수 또는 복수를 사용하는 표현은 또한, 복수 또는 단수를 각각 포함한다. 또한, "본 명세서에서", "본 명세서에 의해", "위", "아래"라는 표현 및 유사한 의미의 표현은, 전체로서의 본 출원을 지칭하며, 본 출원의 임의의 특정한 부분을 지칭하지 않는다. 둘 이상의 항목의 리스트를 참조하여 "또는"이라는 표현이 사용될 때, 해당 표현은, 리스트 내의 항목 중 임의의 항목, 리스트 내의 모든 항목, 및 리스트 내의 항목의 임의의 조합이라는, 해당 표현의 모든 해석을 커버한다.
본 발명의 특정한 현재의 선호되는 구현예가 본 명세서에 구체적으로 설명되었지만, 본 발명의 사상 및 범위로부터 벗어나지 않으면서, 본 명세서에 도시 및 설명된 다양한 구현예의 변형 및 수정이 이루어질 수 있다는 것이, 본 발명과 관련된 기술분야의 당업자에게 명백할 것이다. 따라서, 본 발명은 법의 적용가능한 규칙에 의해 요구되는 수준으로만 제한되도록 의도된다.
전술한 내용은 본 개시의 특정한 실시예를 참조하지만, 본 개시의 원리 및 사상으로부터 벗어나지 않으면서, 이러한 실시예의 변경이 이루어질 수 있다는 것이 당업자에게 명백할 것이며, 본 개시의 범위는 첨부된 청구범위에 의해 규정된다.

Claims (39)

  1. 방법에 있어서,
    암호문 데이터의 제1 아이템 및 암호문 데이터의 제2 아이템을 생성하기 위해, QGroup 암호화를 사용하여, 클라이언트로부터의 평문 데이터의 제1 아이템 및 평문 데이터의 제2 아이템을 암호화하는 단계;
    제1 암호문 및 제2 암호문을 생성하기 위해 암호문 데이터의 각 아이템에 대한 메시지 인증 코드를 생성하는 단계;
    암호화된 데이터에 대한 연산을 수행하도록, 상기 클라이언트로부터, 상기 제1 암호문 및 상기 제2 암호문에 대한 연산 요청을 수신하는 단계;
    연산 결과를 생성하기 위해, 안전한 다자간 계산(SMPC, secure multi-party computation) 클러스터의 제1 컴퓨터 및 제2 컴퓨터를 사용하여, 상기 제1 암호문 및 상기 제2 암호문에 대한 연산을 수행하는 단계; 및
    상기 연산 결과를 상기 클라이언트에 반환하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 암호화된 데이터에 대한 연산은, 암호화된 동등성(equality) 연산과 암호화된 미만(less than) 연산 중 하나를 더 포함하는, 방법.
  3. 제1항에 있어서, 상기 평문 데이터의 제1 아이템 및 평문 데이터의 제2 아이템을 암호화하는 단계는, 암호화 키, 의사랜덤 패드(pseudorandom pad)를 사용한 QGroup 감산 연산, 및 평문 데이터의 아이템을 사용하여 데이터의 제1 아이템과 데이터의 제2 아이템 각각에 대한 암호문 데이터를 생성하는 단계 더 포함하는, 방법.
  4. 제3항에 있어서, 상기 평문 데이터의 제1 아이템 및 평문 데이터의 제2 아이템을 암호화하는 단계는, 평문 데이터의 각 아이템에 대해, 상기 암호화 키, 의사랜덤 함수, 난스(nonce), 및 상기 평문 데이터의 길이를 사용하여 상기 의사랜덤 패드를 생성하는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서, 상기 의사랜덤 함수는 암호화 방법과 암호기술 메시지 다이제스트(digest) 중 하나인, 방법.
  6. 제3항에 있어서, 상기 암호문 데이터의 각 아이템에 대한 메시지 인증 코드를 생성하는 단계는, 인증 키를 사용하여 암호문 데이터의 각 아이템에 대한 메시지 인증 코드를 생성하는 단계를 더 포함하는, 방법.
  7. 제6항에 있어서, 상기 연산 결과를 생성하기 위해 상기 제1 암호문 및 상기 제2 암호문에 대한 연산을 수행하는 단계는, 상기 평문 데이터의 제1 아이템과 제2 아이템 각각에 대한 암호화 키를 상기 SMPC 클러스터의 제1 컴퓨터에 제공하고, 상기 평문 데이터의 제1 아이템과 제2 아이템 각각에 대한 인증 키를 상기 SMPC 클러스터의 제2 컴퓨터에 제공하는 단계를 더 포함하는, 방법.
  8. 제7항에 있어서, 상기 연산 결과를 생성하기 위해 상기 제1 암호문 및 상기 제2 암호문에 대한 연산을 수행하는 단계는, 상기 SMPC 클러스터의 제1 컴퓨터 상에서, 상기 제1 암호문의 제1 몫과 상기 제2 암호문의 제1 몫 사이의 차이를 계산하고, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 제1 암호문과 상기 제2 암호문의 무결성을 검증하고, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 제1 암호문의 제2 몫과 상기 제2 암호문의 제2 몫 사이의 차이를 계산하는 단계를 더 포함하는, 방법.
  9. 제8항에 있어서, 상기 연산 결과를 생성하기 위해 상기 제1 암호문 및 상기 제2 암호문에 대한 연산을 수행하는 단계는, 상기 SMPC 클러스터의 제1 컴퓨터와 제2 컴퓨터 사이에서 비밀 키 및 카운터 값을 공유하는 단계를 더 포함하는, 방법.
  10. 제1항에 있어서, 상기 평문 데이터의 제1 아이템 및 평문 데이터의 제2 아이템을 암호화하는 단계는, 암호화 키, 의사랜덤 패드를 사용한 QGroup 감산 연산, 및 평문 데이터의 아이템을 사용하여 데이터의 제1 아이템과 데이터의 제2 아이템 각각에 대한 암호문 데이터를 생성하는 단계를 더 포함하고, 상기 암호문 데이터의 각 아이템에 대한 메시지 인증 코드를 생성하는 단계는, 인증키를 사용하여 암호문 데이터의 각 아이템에 대한 메시지 인증 코드를 생성하는 단계를 더 포함하고, 상기 SMPC 클러스터의 제1 컴퓨터와 제2 컴퓨터 사이에서 비밀 키 및 카운터 값을 공유하는 단계를 더 포함하는, 방법.
  11. 제10항에 있어서, 상기 암호화된 데이터에 대한 연산을 수행하는 것은, 상기 암호문 데이터의 제1 아이템 및 제2 아이템에 대한 암호화된 동등성 연산을 수행하는 것을 더 포함하는, 방법.
  12. 제11항에 있어서, 상기 암호문 데이터의 제1 아이템 및 제2 아이템에 대한 암호화된 동등성 연산을 수행하는 것은, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 제1 암호문 및 상기 제2 암호문에 대한 메시지 인증 코드를 재계산하고, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 비밀 키 및 상기 카운터 값에 기초하여 랜덤 값을 생성하고, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 제1 암호문과 상기 제2 암호문 사이의 차이를 생성하고, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 생성된 상기 제1 암호문과 상기 제2 암호문 사이의 차이 및 상기 랜덤 값에 기초하여 동등성 암호화 값을 계산하는 것을 더 포함하는, 방법.
  13. 제12항에 있어서, 상기 암호문 데이터의 제1 아이템 및 제2 아이템에 대한 암호화된 동등성 연산을 수행하는 것은, 상기 SMPC 클러스터의 제1 컴퓨터에 의해, 상기 비밀 키 및 상기 카운터 값에 기초하여 랜덤 값을 생성하고, 상기 SMPC 클러스터의 제1 컴퓨터에 의해, 상기 제1 암호문에 대한 암호화 키를 사용하는 상기 제1 암호문의 제1 몫의 의사랜덤 함수와 상기 제2 암호문에 대한 암호화 키를 사용하는 상기 제2 암호문의 제1 몫의 의사랜덤 함수 사이의 차이를 계산하고, 상기 SMPC 클러스터의 제1 컴퓨터 상에서, 상기 생성된 상기 제1 암호문과 상기 제2 암호문 사이의 차이 및 상기 랜덤 값에 기초하여 동등성 암호화 값을 계산하는 것을 더 포함하는, 방법.
  14. 제13항에 있어서, 상기 연산 결과를 생성하는 것은, 상기 평문 데이터의 제1 아이템과 상기 평문 데이터의 제2 아이템이 동등한지 결정하기 위해, 데이터베이스 컴퓨터에서, 상기 SMPC 클러스터의 제1 컴퓨터의 동등성 암호화 값과 상기 SMPC 클러스터의 제2 컴퓨터의 동등성 암호화 값의 배타적 OR을 생성하는 것을 더 포함하는, 방법.
  15. 제10항에 있어서, 상기 암호화된 데이터에 대한 연산을 수행하는 것은, 상기 SMPC를 사용하여, 암호문 데이터의 제1 부분 및 제2 부분에 대한 암호화된 미만 연산을 수행하는 것을 더 포함하는, 방법.
  16. 제15항에 있어서, 암호문 데이터의 제1 아이템 및 제2 아이템에 대한 암호화된 미만 연산을 수행하는 것은, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 제1 암호문 및 상기 제2 암호문에 대한 메시지 인증 코드를 재계산하고, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 비밀 키 및 상기 카운터 값에 기초하여 랜덤 값을 생성하고, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 제1 암호문과 상기 제2 암호문 사이의 차이를 생성하고, 상기 SMPC 클러스터의 제2 컴퓨터 상에서, 상기 생성된 상기 제1 암호문과 상기 제2 암호문 사이의 차이 및 상기 랜덤 값에 기초하여 순서 노출 암호화(order revealing encryption) 값을 계산하는 것을 더 포함하는, 방법.
  17. 제16항에 있어서, 암호문 데이터의 제1 아이템 및 제2 아이템에 대한 암호화된 미만 연산을 수행하는 것은, 상기 SMPC 클러스터의 제1 컴퓨터에 의해, 상기 비밀 키 및 상기 카운터 값에 기초하여 랜덤 값을 생성하고, 상기 SMPC 클러스터의 제1 컴퓨터에 의해, 상기 제1 암호문에 대한 암호화 키를 사용하는 상기 제1 암호문의 제1 몫의 의사랜덤 함수와 상기 제2 암호문에 대한 암호화 키를 사용하는 상기 제2 암호문의 제1 몫의 의사랜덤 함수 사이의 차이를 계산하고, 상기 SMPC 클러스터의 제1 컴퓨터 상에서, 상기 생성된 상기 제1 암호문과 상기 제2 암호문 사이의 차이 및 상기 랜덤 값에 기초하여 순서 노출 암호화 값을 계산하는 것을 더 포함하는, 방법.
  18. 제17항에 있어서, 상기 연산 결과를 생성하는 것은, 데이터베이스 컴퓨터에서, 상기 제1 암호문과 상기 제2 암호문 사이의 차이 값을 생성하고, 상기 데이터베이스 컴퓨터에서, 상기 제1 컴퓨터로부터의 순서 노출 암호화 값과 상기 제2 컴퓨터로부터의 순서 노출 암호화 값의 배타적 OR 값을 생성하고, 상기 데이터베이스 컴퓨터에 의해, 상기 배타적 OR 값과 상기 차이 값 사이의 비교 값을 생성하는 것을 더 포함하고, 상기 비교 값은, 상기 평문 데이터의 제1 아이템이 상기 평문 데이터의 제2 아이템 미만인지를 표시하는, 방법.
  19. 시스템에 있어서,
    서버;
    상기 서버에 연결될 수 있고, 암호화된 데이터에 대한 연산을 상기 서버에 발행할 수 있는 클라이언트;
    상기 클라이언트와 상기 서버 사이에 연결되는 암호화 엔진 - 상기 암호화 엔진은, 상기 서버에 의해 수신되는 암호문 데이터의 제1 아이템 및 암호문 데이터의 제2 아이템을 생성하기 위해, 상기 클라이언트로부터의 평문 데이터의 제1 아이템 및 제2 아이템을 암호화하고, 제1 암호문 및 제2 암호문을 생성하기 위해 암호문 데이터의 각 아이템에 대한 메시지 인증 코드를 생성함 - ; 및
    상기 서버에 연결되는 제1 컴퓨터 및 제2 컴퓨터를 갖는 안전한 다자간 계산(SMPC) 클러스터 - 상기 SMPC 클러스터는, 상기 암호문 데이터의 제1 아이템 및 제2 아이템을 수신하고, 암호화된 데이터에 대한 연산에 응답하여 연산 결과를 생성함 -
    를 포함하며;
    상기 서버는 상기 결과를 상기 클라이언트에 반환하는, 시스템.
  20. 제19항에 있어서, 상기 암호화된 데이터에 대한 연산은, 암호화된 동등성 연산과 암호화된 미만 연산 중 하나를 더 포함하는, 시스템.
  21. 제19항에 있어서, 상기 암호화 엔진은 또한, 암호화 키, 의사랜덤 패드를 사용한 QGroup 감산 연산, 및 평문 데이터의 아이템을 사용하여 데이터의 제1 아이템과 데이터의 제2 아이템 각각에 대한 암호문 데이터를 생성하도록 구성되는, 시스템.
  22. 제21항에 있어서, 상기 암호화 엔진은 또한, 평문 데이터의 각 부분에 대해, 상기 암호화 키, 의사랜덤 함수, 난스, 및 상기 평문 데이터의 길이를 사용하여 상기 의사랜덤 패드를 생성하도록 구성되는, 시스템.
  23. 제22항에 있어서, 상기 의사랜덤 함수는 암호화 방법과 암호기술 메시지 다이제스트 중 하나인, 시스템.
  24. 제21항에 있어서, 상기 암호화 엔진은 또한, 인증 키를 사용하여 암호문 데이터의 각 아이템에 대한 메시지 인증 코드를 생성하도록 구성되는, 시스템.
  25. 제24항에 있어서, 상기 SMPC 클러스터의 제1 컴퓨터는 상기 평문 데이터의 제1 아이템과 제2 아이템 각각에 대한 암호화 키를 수신하고, 상기 SMPC 클러스터의 제2 컴퓨터는 상기 평문 데이터의 제1 아이템과 제2 아이템 각각에 대한 인증 키를 수신하는, 시스템.
  26. 제25항에 있어서, 상기 SMPC 클러스터의 제1 컴퓨터는 또한, 상기 제1 암호문의 제1 몫과 상기 제2 암호문의 제1 몫 사이의 차이를 계산하도록 구성되고, 상기 SMPC 클러스터의 제2 컴퓨터는 또한, 상기 제1 암호문과 상기 제2 암호문의 무결성을 검증하고, 상기 제1 암호문의 제2 몫과 상기 제2 암호문의 제2 몫 사이의 차이를 계산하도록 구성되는, 시스템.
  27. 제26항에 있어서, 상기 SMPC 클러스터의 제1 컴퓨터와 제2 컴퓨터는 각각 비밀 키 및 카운터 값을 공유하는, 시스템.
  28. 제19항에 있어서, 상기 암호화 엔진은 또한, 암호화 키, 의사랜덤 패드를 사용한 QGroup 감산 연산, 및 평문 데이터의 아이템을 사용하여 데이터의 제1 아이템과 데이터의 제2 아이템 각각에 대한 암호문 데이터를 생성하고, 인증키를 사용하여 암호문 데이터의 각 아이템에 대한 메시지 인증 코드를 생성하도록 구성되고, 상기 SMPC 클러스터의 제1 컴퓨터와 제2 컴퓨터 사이에서 비밀 키 및 카운터 값이 공유되는, 시스템.
  29. 제28항에 있어서, 상기 SMPC 클러스터의 제1 컴퓨터 및 제2 컴퓨터는, 상기 암호문 데이터의 제1 아이템 및 제2 아이템에 대한 암호화된 동등성 연산을 수행하는, 시스템.
  30. 제29항에 있어서, 상기 SMPC 클러스터의 제2 컴퓨터는 또한, 상기 제1 암호문 및 상기 제2 암호문에 대한 메시지 인증 코드를 재계산하고, 상기 비밀 키 및 상기 카운터 값에 기초하여 랜덤 값을 생성하고, 상기 제1 암호문과 상기 제2 암호문 사이의 차이를 생성하고, 상기 생성된 상기 제1 암호문과 상기 제2 암호문 사이의 차이 및 상기 랜덤 값에 기초하여 동등성 암호화 값을 계산하도록 구성되는, 시스템.
  31. 제30항에 있어서, 상기 SMPC 클러스터의 제1 컴퓨터는 또한, 상기 비밀 키 및 상기 카운터 값에 기초하여 랜덤 값을 생성하고, 상기 제1 암호문에 대한 암호화 키를 사용하는 상기 제1 암호문의 제1 몫의 의사랜덤 함수와 상기 제2 암호문에 대한 암호화 키를 사용하는 상기 제2 암호문의 제1 몫의 의사랜덤 함수 사이의 차이를 계산하고, 상기 생성된 상기 제1 암호문과 상기 제2 암호문 사이의 차이 및 상기 랜덤 값에 기초하여 동등성 암호화 값을 계산하도록 구성되는, 시스템.
  32. 제31항에 있어서, 상기 서버는 또한, 상기 평문 데이터의 제1 아이템과 상기 평문 데이터의 제2 아이템이 동등한지 결정하기 위해, 상기 SMPC 클러스터의 제1 컴퓨터의 동등성 암호화 값과 상기 SMPC 클러스터의 제2 컴퓨터의 동등성 암호화 값의 배타적 OR을 생성하도록 구성되는, 시스템.
  33. 제28항에 있어서, 상기 SMPC 클러스터의 제1 컴퓨터 및 제2 컴퓨터는, 암호문 데이터의 제1 부분 및 제2 부분에 대한 암호화된 미만 연산을 수행하는, 시스템.
  34. 제33항에 있어서, 상기 SMPC 클러스터의 제2 컴퓨터는 또한, 상기 제1 암호문 및 상기 제2 암호문에 대한 메시지 인증 코드를 재계산하고, 상기 비밀 키 및 상기 카운터 값에 기초하여 랜덤 값을 생성하고, 상기 제1 암호문과 상기 제2 암호문 사이의 차이를 생성하고, 상기 생성된 상기 제1 암호문과 상기 제2 암호문 사이의 차이 및 상기 랜덤 값에 기초하여 순서 노출 암호화 값을 계산하도록 구성되는, 시스템.
  35. 제34항에 있어서, 상기 SMPC 클러스터의 제1 컴퓨터는 또한, 상기 비밀 키 및 상기 카운터 값에 기초하여 랜덤 값을 생성하고, 상기 제1 암호문에 대한 암호화 키를 사용하는 상기 제1 암호문의 제1 몫의 의사랜덤 함수와 상기 제2 암호문에 대한 암호화 키를 사용하는 상기 제2 암호문의 제1 몫의 의사랜덤 함수 사이의 차이를 계산하고, 상기 생성된 상기 제1 암호문과 상기 제2 암호문 사이의 차이 및 상기 랜덤 값에 기초하여 순서 노출 암호화 값을 계산하도록 구성되는, 시스템.
  36. 제35항에 있어서, 서버 컴퓨터는 또한, 상기 제1 암호문과 상기 제2 암호문 사이의 차이 값을 생성하고, 상기 제1 컴퓨터로부터의 순서 노출 암호화 값과 상기 제2 컴퓨터로부터의 순서 노출 암호화 값의 배타적 OR 값을 생성하고, 상기 배타적 OR 값과 상기 차이 값 사이의 비교 값을 생성하도록 구성되고, 상기 비교 값은, 상기 평문 데이터의 제1 아이템이 상기 평문 데이터의 제2 아이템 미만인지를 표시하는, 시스템.
  37. 평문 문자열을 암호화하기 위하여 랜덤 문자열을 생성하기 위한 방법에 있어서,
    랜덤 문자열의 비트의 제1 랜덤 블록을 생성하기 위해 비밀 키, 카운터, 제1 난스, 및 제2 난스를 사용하여 메시지 인증 코드 프로세스를 수행하는 단계; 및
    상기 비밀 키, 상기 랜덤 문자열의 비트의 직전의 블록, 및 상기 랜덤 문자열의 길이를 사용하는 의사랜덤 함수를 사용한, 직전의 인덱스에서의 상기 평문 문자열의 문자의 배타적 OR에 의해, 상기 랜덤 문자열의 비트의 각 후속 랜덤 블록을 생성하는 단계
    를 포함하는, 랜덤 문자열을 생성하기 위한 방법.
  38. 제37항에 있어서, 상기 메시지 인증 코드 프로세스를 수행하는 단계는, 암호문 기반 메시지 인증 코드 프로세스를 사용하는 단계를 더 포함하는, 랜덤 문자열을 생성하기 위한 방법.
  39. 제38항에 있어서, 상기 의사랜덤 함수는 암호화 방법과 암호기술 메시지 다이제스트 중 하나인, 랜덤 문자열을 생성하기 위한 방법.
KR1020217041022A 2019-05-14 2020-05-07 유사군 연산을 사용하여 암호화된 데이터에 대해 동등성 및 미만 연산을 수행하기 위한 시스템 및 방법 KR20220054746A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/412,174 US11190339B2 (en) 2019-05-14 2019-05-14 System and method for performing equality and less than operations on encrypted data with quasigroup operations
US16/412,174 2019-05-14
PCT/US2020/031967 WO2020231762A1 (en) 2019-05-14 2020-05-07 System and method for performing equality and less than operations on encrypted data with quasigroup operations

Publications (1)

Publication Number Publication Date
KR20220054746A true KR20220054746A (ko) 2022-05-03

Family

ID=73228408

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217041022A KR20220054746A (ko) 2019-05-14 2020-05-07 유사군 연산을 사용하여 암호화된 데이터에 대해 동등성 및 미만 연산을 수행하기 위한 시스템 및 방법

Country Status (9)

Country Link
US (1) US11190339B2 (ko)
EP (1) EP3970311A4 (ko)
JP (1) JP2022533950A (ko)
KR (1) KR20220054746A (ko)
CN (1) CN114175572B (ko)
AU (1) AU2020274492A1 (ko)
CA (1) CA3139964A1 (ko)
IL (1) IL288054B2 (ko)
WO (1) WO2020231762A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11424909B1 (en) 2018-12-12 2022-08-23 Baffle, Inc. System and method for protecting data that is exported to an external entity
US11101980B2 (en) * 2019-05-01 2021-08-24 Baffle, Inc. System and method for adding and comparing integers encrypted with quasigroup operations in AES counter mode encryption
US11621834B2 (en) * 2020-06-15 2023-04-04 Acronis International Gmbh Systems and methods for preserving data integrity when integrating secure multiparty computation and blockchain technology
CN113254971B (zh) * 2021-06-09 2022-07-05 中国电子科技集团公司第三十研究所 一种基于揭序加密的多数据类型密文比较方法
CN113596824A (zh) * 2021-07-30 2021-11-02 深圳供电局有限公司 一种5g安全协议中认证失败明文信息的加密方法
US11637690B1 (en) 2021-10-08 2023-04-25 Baffle, Inc. Format preserving encryption (FPE) system and method for long strings

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1089205C (zh) * 1994-09-24 2002-08-14 西安电子科技大学 一种高速数据置乱方法
US7280663B1 (en) 2000-05-22 2007-10-09 University Of Southern California Encryption system based on crossed inverse quasigroups
US7221756B2 (en) 2002-03-28 2007-05-22 Lucent Technologies Inc. Constructions of variable input length cryptographic primitives for high efficiency and high security
KR101267109B1 (ko) * 2004-10-13 2013-05-28 더 리젠트스 오브 더 유니이버시티 오브 캘리포니아 준군을 이용한 암호화 프리미티브, 에러 코딩, 및 의사난수 향상 방법
GB0805271D0 (en) 2008-03-20 2008-04-30 Ntnu Technology Transfer As Encryption method
US8452984B2 (en) * 2008-08-28 2013-05-28 Alcatel Lucent Message authentication code pre-computation with applications to secure memory
US8495363B2 (en) * 2009-04-03 2013-07-23 Qualcomm Incorporated Securing messages associated with a multicast communication session within a wireless communications system
US8407550B2 (en) 2009-08-14 2013-03-26 Mitsubishi Electric Research Laboratories, Inc. Method and system for decoding graph-based codes using message-passing with difference-map dynamics
US8539220B2 (en) 2010-02-26 2013-09-17 Microsoft Corporation Secure computation using a server module
IL207918A0 (en) 2010-09-01 2011-01-31 Aviad Kipnis Attack-resistant multivariate signature scheme
US8751822B2 (en) * 2010-12-20 2014-06-10 Motorola Mobility Llc Cryptography using quasigroups
TWI465136B (zh) 2012-02-14 2014-12-11 Wistron Corp 加密行動通訊之簡訊的方法
US8566601B1 (en) * 2012-09-12 2013-10-22 Zeutro Llc Systems and methods for functional encryption using a string of arbitrary length
WO2014166546A1 (en) 2013-04-12 2014-10-16 Nec Europe Ltd. Method and system for accessing device by a user
US20170163424A1 (en) 2014-08-29 2017-06-08 Hewlett Packard Enterprise Development Lp Secure information retrieval based on hash transforms
JP6693508B2 (ja) * 2015-04-03 2020-05-13 日本電気株式会社 秘密計算システム、サーバ装置、秘密計算方法、および、プログラム
WO2016178655A1 (en) 2015-05-01 2016-11-10 Hewlett Packard Enterprise Development Lp Secure multi-party information retrieval
JP2019500645A (ja) 2015-12-03 2019-01-10 アンバウンド テック リミテッド 暗号プロトコルを用いたsqlベースのデータベースの保護
US20180205729A1 (en) * 2017-01-13 2018-07-19 GM Global Technology Operations LLC Method and apparatus for encryption, decryption and authentication
DE102017209014A1 (de) 2017-05-30 2018-12-06 Robert Bosch Gmbh Verfahren und Vorrichtung zum Anfügen von Transaktionen an eine Blockkette
US11777736B2 (en) 2017-08-10 2023-10-03 Visa International Service Association Use of biometrics and privacy preserving methods to authenticate account holders online
EP4216487A1 (en) 2017-10-30 2023-07-26 Visa International Service Association Multi-party threshold authenticated encryption
US11496467B2 (en) 2017-11-07 2022-11-08 Visa International Service Association Biometric validation process utilizing access device and location determination
EP3725023B1 (en) * 2017-12-14 2022-02-09 Robert Bosch GmbH Method for faster secure multiparty inner product with spdz
US20190228469A1 (en) 2018-01-22 2019-07-25 Blend Labs, Inc. Method and apparatus for a consumer controlled, decentralized financial profile
US11232224B2 (en) 2018-03-15 2022-01-25 Servicenow, Inc. Database encryption
WO2019202586A1 (en) * 2018-04-17 2019-10-24 B. G. Negev Technologies & Applications Ltd., At Ben-Gurion One-round secure multiparty computation of arithmetic streams and evaluation of functions
US10862670B2 (en) 2018-05-18 2020-12-08 Infineon Technologies Ag Automotive nonce-misuse-resistant authenticated encryption
US10289816B1 (en) 2018-06-08 2019-05-14 Gsfm Llc Methods, systems, and devices for an encrypted and obfuscated algorithm in a computing environment
WO2020023132A1 (en) * 2018-07-27 2020-01-30 Hrl Laboratories, Llc System and method to protect data privacy of lightweight devices using blockchain and multi-party computation
US10885205B2 (en) 2018-10-31 2021-01-05 Nec Corporation Of America Secure multiparty computation
US10630478B1 (en) 2018-12-28 2020-04-21 University Of South Florida Sender optimal, breach-resilient, and post-quantum secure cryptographic methods and systems for digital auditing
US11101980B2 (en) 2019-05-01 2021-08-24 Baffle, Inc. System and method for adding and comparing integers encrypted with quasigroup operations in AES counter mode encryption
US11767633B2 (en) 2019-07-01 2023-09-26 Whirlpool Corporation Drying appliance having an accessory port for providing external airflow for powered accessories

Also Published As

Publication number Publication date
EP3970311A1 (en) 2022-03-23
EP3970311A4 (en) 2023-05-03
CN114175572B (zh) 2024-03-08
IL288054B1 (en) 2023-06-01
WO2020231762A1 (en) 2020-11-19
IL288054A (en) 2022-01-01
CN114175572A (zh) 2022-03-11
CA3139964A1 (en) 2020-11-19
US20200366462A1 (en) 2020-11-19
JP2022533950A (ja) 2022-07-27
US11190339B2 (en) 2021-11-30
AU2020274492A1 (en) 2021-12-23
IL288054B2 (en) 2023-10-01

Similar Documents

Publication Publication Date Title
KR20220054746A (ko) 유사군 연산을 사용하여 암호화된 데이터에 대해 동등성 및 미만 연산을 수행하기 위한 시스템 및 방법
US10630472B2 (en) Method and system for providing encrypted data on a client
CN110719159A (zh) 抗恶意敌手的多方隐私集合交集方法
KR101143041B1 (ko) 리볼빙 버퍼들을 이용한 스트림 암호 설계 방법
US9917820B1 (en) Secure information sharing
US11101980B2 (en) System and method for adding and comparing integers encrypted with quasigroup operations in AES counter mode encryption
US10938547B2 (en) Method and system for providing encrypted data
US11824999B2 (en) Chosen-plaintext secure cryptosystem and authentication
TWI688250B (zh) 資料加解密的方法及裝置
Walia et al. Implementation of new modified MD5-512 bit algorithm for cryptography
Sarkar et al. Role of cryptography in network security
Olumide et al. A hybrid encryption model for secure cloud computing
US11101981B2 (en) Generating a pseudorandom number based on a portion of shares used in a cryptographic operation
Yang [Retracted] Application of Hybrid Encryption Algorithm in Hardware Encryption Interface Card
Wei et al. Efficient and collusion resistant multi-party private set intersection protocols for large participants and small sets setting
Walia Cryptography Algorithms: A Review
Rass Blind turing-machines: Arbitrary private computations from group homomorphic encryption
Kerschbaum Oblivious outsourcing of garbled circuit generation
Al-Attab et al. Lightweight effective encryption algorithm for securing data in cloud computing
Shaker HMAC modification using new random key generator
De Viti et al. CoVault: A Secure Analytics Platform
El-Morshedy et al. Cryptographic Algorithms for Enhancing Security in Cloud Computing.
Amalarethinam et al. A survey on secured communication with high speed using public key cryptography
Roy et al. RASS—A concurrency based bitwise symmetric key cryptographic algorithm
Ostrowski et al. Conjecture of Two Finite Fields and its Applications