KR102384913B1 - 비공개 그룹의 지수승 아웃소싱 - Google Patents

비공개 그룹의 지수승 아웃소싱 Download PDF

Info

Publication number
KR102384913B1
KR102384913B1 KR1020217040496A KR20217040496A KR102384913B1 KR 102384913 B1 KR102384913 B1 KR 102384913B1 KR 1020217040496 A KR1020217040496 A KR 1020217040496A KR 20217040496 A KR20217040496 A KR 20217040496A KR 102384913 B1 KR102384913 B1 KR 102384913B1
Authority
KR
South Korea
Prior art keywords
untrusted server
base values
exponent
modulus
server
Prior art date
Application number
KR1020217040496A
Other languages
English (en)
Other versions
KR20220002668A (ko
Inventor
케빈 여
살바르 파텔
필립 쇼프만
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20220002668A publication Critical patent/KR20220002668A/ko
Application granted granted Critical
Publication of KR102384913B1 publication Critical patent/KR102384913B1/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9035Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/42Anonymization, e.g. involving pseudonyms
    • 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
    • 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/50Oblivious transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Saccharide Compounds (AREA)

Abstract

비공개 그룹의 지수승을 아웃소싱하기 위한 방법(500)은, 비신뢰 서버(111)에 저장된 질의 엘리먼트(152)와 연관된 모듈러스(134)의 2개 이상의 소수들(135)의 소인수 분해를 선택하고, 소수들의 개개의 소수를 생성하도록 구성된 그룹 엘리먼트(133)를 획득하고, 그룹 엘리먼트 및 소인수 분해를 사용하여 일련의 베이스 값들(162)을 생성하고, 그리고 클라이언트 디바이스(10)로부터 비신뢰 서버(111)로 일련의 베이스 값들을 송신함으로써, 비신뢰 서버(111)에 저장된 질의 엘리먼트(152)를 리트리브하기 위한 질의 명령(130)을 실행하는 단계를 포함한다. 서버는, 일련의 베이스 값들을 사용하여, 서버에 저장된 지수(154)를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성된다. 방법은 또한, 지수를 갖는 그룹 엘리먼트의 지수승에 기반하는, 서버로부터의 결과(192)를 수신하는 단계를 포함한다.

Description

비공개 그룹의 지수승 아웃소싱
[0001] 본 개시내용은 비공개 그룹(private group)의 지수승(exponentiation)을 아웃소싱하는 것에 관한 것이다.
[0002] PIR(private information retrieval) 방식들은, 사용자가, 하나 이상의 저장 디바이스들을 호스팅하는 서버에 리트리브된 데이터 또는 사용자에 관한 임의의 지식을 드러내지 않으면서, 하나 이상의 저장 디바이스들로부터 데이터를 리트리브할 수 있게 한다. PIR의 경우, 서버 저장 디바이스들은 일반적으로 보호되지 않으며, 비공개 정보는 서버 저장 디바이스 또는 공개 저장 디바이스로부터 리트리브되며, 그룹의 모든 가입자들은 전체 저장 디바이스로부터 데이터를 다운로드하도록 허용된다. 사용자들은 액세스 패턴들이 드러나지 않도록 서버 저장 디바이스로부터 모든 콘텐츠 간단히 다운로드할 수 있지만, 이는 다수의 저장 디바이스들에 걸쳐 있는 클라우드 저장 서비스로부터 모든 콘텐츠들을 다운로드해야 하는 경우 너무 오랜 시간이 걸린다. 더욱이, 종래의 PIR 방식들은 상당한 양의 대역폭을 소비하거나 상당한 컴퓨테이션(computation)을 필요로 한다.
[0003] 본 개시내용의 일 양상은, 비공개 그룹의 지수승을 아웃소싱하기 위한 방법을 제공한다. 방법은, 클라이언트 디바이스의 데이터 프로세싱 하드웨어에서, 비신뢰 서버(untrusted server)에 저장된 질의 엘리먼트와 연관된 모듈러스(modulus)의 소인수 분해(prime factorization)를 선택함으로써, 비신뢰 서버에 저장된 질의 엘리먼트를 리트리브하기 위한 질의 명령을 실행하는 단계를 포함한다. 소인수 분해는 2개 이상의 소수들을 포함한다. 방법은 또한, 소인수 분해의 2개 이상의 소수들의 개개의 소수를 생성하도록 구성된 그룹 엘리먼트를 획득하는 단계 및 그룹 엘리먼트 및 모듈러스의 소인수 분해를 사용하여 일련의 베이스 값(base value)들을 생성하는 단계를 포함한다. 방법은 또한, 클라이언트 디바이스로부터 비신뢰 서버로 일련의 베이스 값들을 송신하는 단계를 포함한다. 비신뢰 서버는, 일련의 베이스 값들을 사용하여, 비신뢰 서버에 저장된 지수(exponent)를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성된다. 방법은 또한, 데이터 프로세싱 하드웨어에서, 비신뢰 서버로부터 결과를 수신하는 단계를 포함한다. 결과는 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승에 기반한다.
[0004] 본 개시내용의 구현들은 다음의 선택적인 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 일련의 베이스 값들을 생성하는 것은, 그룹 엘리먼트 및 모듈러스의 소인수 분해를 사용하여 일련의 초기 베이스 값들을 생성하는 것, 및 일련의 모듈러스-감소된 베이스 값들을 생성하기 위해, 일련의 초기 베이스 값들의 각각의 초기 베이스 값을 모듈러스만큼 감소시키는 것을 포함한다. 각각의 모듈러스-감소된 베이스 값들은, 모듈러스만큼 감소된, 일련의 초기 베이스 값들의 개개의 초기 베이스 값을 포함한다. 일부 예들에서, 비신뢰 서버로 일련의 베이스 값들을 송신하는 것은, 비신뢰 서버로 일련의 모듈러스-감소된 베이스 값들을 송신하는 것을 포함한다. 비신뢰 서버는, 일련의 모듈러스-감소된 베이스 값들을 사용하여, 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성된다.
[0005] 일부 구현들에서, 비신뢰 서버로 일련의 베이스 값들을 송신하는 것은, 비신뢰 서버로 모듈러스를 송신하는 것을 더 포함한다. 비신뢰 서버는, 일련의 베이스 값들을 사용하여, 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성될 수 있다. 비신뢰 서버는 또한, 지수를 갖는 그룹 엘리먼트의 지수승을 모듈러스만큼 감소시킴으로써 결과를 생성하고 그리고 클라이언트 디바이스로 그 결과를 송신하도록 구성될 수 있다. 일부 예들에서, 방법은, 결과가 지수를 갖는 그룹 엘리먼트의 지수승을 포함하는 경우, 데이터 프로세싱 하드웨어에 의해, 결과를 모듈러스만큼 감소시키는 단계를 더 포함한다.
[0006] 선택적으로, 일련의 베이스 값들을 생성하는 것은, 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법(numeral position system)을 획득하는 것 및 위치 기수법에서 숫자(digit) 포지션에 대응하는 개개의 베이스 엘리먼트에 의한 그룹 엘리먼트의 지수승에 기반하여 일련의 베이스 값들의 각각의 베이스 값을 생성하는 것을 포함한다. 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법은, 일부 예들에서, 클라이언트 디바이스와 비신뢰 서버 간의 통신들에 대한 대역폭 제한에 기반하여 클라이언트 디바이스 또는 비신뢰 서버에 의해 선택된다. 위치 기수법은 2진법, 16진법, 또는 10진법 중 하나를 포함할 수 있다.
[0007] 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법을 획득하는 것은, 일부 구현들에서, 위치 기수법에 의해 표현되는 지수에 대한 자릿수(number of digits)를 획득하는 것을 더 포함한다. 지수에 대한 자릿수는 실행되는 질의 명령에 의해 생성된 일련의 베이스 값들에서의 베이스 값들의 수와 동일하다. 비신뢰 서버는, 클라이언트 디바이스로부터 수신된 일련의 베이스 값들의 각각의 베이스 값에 대해, 지수의 개개의 숫자 포지션에 있는 값을 갖는 베이스 값의 지수승을 결정하고 그리고 지수의 개개의 숫자 포지션들에 있는 값들과 베이스 값들의 지수승들을 함께 곱함으로써, 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성될 수 있다. 결과는 질의된 엘리먼트와 연관될 수 있고, 클라이언트 디바이스는, 일부 예들에서, 비신뢰 서버에 모듈러스의 소인수 분해를 결코 드러내지 않을 수 있다.
[0008] 본 개시내용의 다른 양상은 비공개 그룹의 지수승을 아웃소싱하기 위한 시스템을 제공한다. 시스템은 클라이언트 디바이스의 데이터 프로세싱 하드웨어 및 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어를 포함한다. 메모리 하드웨어는 명령들을 저장하며, 이 명령들은 데이터 프로세싱 하드웨어에서 실행되는 경우, 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 한다. 동작들은, 비신뢰 서버에 저장된 질의 엘리먼트와 연관된 모듈러스의 소인수 분해를 선택함으로써, 비신뢰 서버에 저장된 질의 엘리먼트를 리트리브하기 위한 질의 명령을 실행하는 것을 포함한다. 소인수 분해는 2개 이상의 소수들을 포함한다. 동작들은 또한, 소인수 분해의 2개 이상의 소수들의 개개의 소수를 생성하도록 구성된 그룹 엘리먼트를 획득하는 것 및 그룹 엘리먼트 및 모듈러스의 소인수 분해를 사용하여 일련의 베이스 값들을 생성하는 것을 포함한다. 동작들은 또한, 클라이언트 디바이스로부터 비신뢰 서버로 일련의 베이스 값들을 송신하는 것을 포함한다. 비신뢰 서버는, 일련의 베이스 값들을 사용하여, 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성된다. 동작들은 또한, 비신뢰 서버로부터 결과를 수신하는 것을 포함한다. 결과는 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승에 기반한다.
[0009] 이러한 양상은 다음의 선택적인 특징들 중 하나 이상을 포함할 수 있다. 일부 구현들에서, 일련의 베이스 값들을 생성하는 것은, 그룹 엘리먼트 및 모듈러스의 소인수 분해를 사용하여 일련의 초기 베이스 값들을 생성하는 것, 및 일련의 모듈러스-감소된 베이스 값들을 생성하기 위해, 일련의 초기 베이스 값들의 각각의 초기 베이스 값을 모듈러스만큼 감소시키는 것을 포함한다. 각각의 모듈러스-감소된 베이스 값들은, 모듈러스만큼 감소된, 일련의 초기 베이스 값들의 개개의 초기 베이스 값을 포함한다. 일부 예들에서, 비신뢰 서버로 일련의 베이스 값들을 송신하는 것은, 비신뢰 서버로 일련의 모듈러스-감소된 베이스 값들을 송신하는 것을 포함한다. 비신뢰 서버는, 일련의 모듈러스-감소된 베이스 값들을 사용하여, 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성된다.
[0010] 일부 구현들에서, 비신뢰 서버로 일련의 베이스 값들을 송신하는 것은, 비신뢰 서버로 모듈러스를 송신하는 것을 더 포함한다. 비신뢰 서버는, 일련의 베이스 값들을 사용하여, 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성될 수 있다. 비신뢰 서버는 또한, 지수를 갖는 그룹 엘리먼트의 지수승을 모듈러스만큼 감소시킴으로써 결과를 생성하고 그리고 클라이언트 디바이스로 그 결과를 송신하도록 구성될 수 있다. 일부 예들에서, 동작들은, 결과가 지수를 갖는 그룹 엘리먼트의 지수승을 포함하는 경우, 결과를 모듈러스만큼 감소시키는 것을 더 포함한다.
[0011] 선택적으로, 일련의 베이스 값들을 생성하는 것은, 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법(numeral position system)을 획득하는 것 및 위치 기수법에서 숫자 포지션에 대응하는 개개의 베이스 엘리먼트에 의한 그룹 엘리먼트의 지수승에 기반하여 일련의 베이스 값들의 각각의 베이스 값을 생성하는 것을 포함한다. 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법은, 일부 예들에서, 클라이언트 디바이스와 비신뢰 서버 간의 통신들에 대한 대역폭 제한에 기반하여 클라이언트 디바이스 또는 비신뢰 서버에 의해 선택된다. 위치 기수법은 2진법, 16진법, 또는 10진법 중 하나를 포함할 수 있다.
[0012] 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법을 획득하는 것은, 일부 구현들에서, 위치 기수법에 의해 표현되는 지수에 대한 자릿수를 획득하는 것을 더 포함한다. 지수에 대한 자릿수는 실행되는 질의 명령에 의해 생성된 일련의 베이스 값들에서의 베이스 값들의 수와 동일하다. 비신뢰 서버는, 클라이언트 디바이스로부터 수신된 일련의 베이스 값들의 각각의 베이스 값에 대해, 지수의 개개의 숫자 포지션에 있는 값을 갖는 베이스 값의 지수승을 결정하고 그리고 지수의 개개의 숫자 포지션들에 있는 값들과 베이스 값들의 지수승들을 함께 곱함으로써, 비신뢰 서버에 저장된 지수를 갖는 그룹 엘리먼트의 지수승을 결정하도록 구성될 수 있다. 결과는 질의된 엘리먼트와 연관될 수 있고, 클라이언트 디바이스는, 일부 예들에서, 비신뢰 서버에 모듈러스의 소인수 분해를 결코 드러내지 않을 수 있다.
[0013] 본 개시내용의 하나 이상의 구현들의 세부사항들은 첨부한 도면들 및 아래의 설명에서 기재된다. 다른 양상들, 특징들, 및 이점들은 설명 및 도면들로부터 그리고 청구항들로부터 명백해질 것이다.
[0014] 도 1은, 분산형 시스템의 비-일시적 데이터 저장소에 저장된 데이터 블록들에 감지하지 못하게(obliviously) 액세스하는 경우 지수승을 아웃소싱하는 예시적인 비공개 정보 리트리벌 시스템의 개략도이다.
[0015] 도 2는 도 1의 시스템의 예시적인 선택기의 개략도이다.
[0016] 도 3은 도 1의 시스템 및 예시적인 위치 기수법(positional numeral system)의 컴포넌트들의 개략도이다.
[0017] 도 4는 일련의 베이스 값들을 생성하기 위한 예시적인 연산들의 흐름도이다.
[0018] 도 5는 비공개 그룹의 지수승을 아웃소싱하는 방법에 대한 동작들의 예시적인 어레인지먼트(arrangement)의 흐름도이다.
[0019] 도 6은 본원에서 설명되는 시스템들 및 방법들을 구현하는 데 사용될 수 있는 예시적인 컴퓨팅 디바이스의 개략도이다.
[0020] 다양한 도면들에서 유사한 참조 부호들은 유사한 엘리먼트들을 표시한다.
[0021] 지수승은 베이스와 지수 사이의 일반적인 수학적 연산이며, 여기서 지수승은 베이스의 반복된 곱셈들에 대응한다. 지수승은 생물학, 물리학 및 컴퓨터 과학과 같은 많은 분야들에서 광범위하게 사용된다. 그러나, 지수승의 초-선형 특성으로 인해 극도로 큰 지수들의 컴퓨테이션은 어렵다. 즉, 지수가 증가함에 따라, 원시 컴퓨테이션 난이도는 선형보다 더 빠른 레이트로 증가한다. 그러나, 큰 지수승들의 결과들을 계산하는 난이도를 감소시키기 위한 방법들이 존재한다. 예를 들어, 소위 "지수들의 거듭제곱 법칙(power rule of exponents)"은 지수의 팩터들이 알려져 있는 경우 컴퓨테이션을 상당히 감소시킨다.
[0022] 그러나, 정수 인수분해(integer factorization)가 또한 알려진 어려운 문제이다. 실제로, 충분히 큰 정수들의 경우, 인수분해를 위한 효율적인 알려진 수단이 없다. 이 어려운 문제는 대부분의 현대 암호화의 기초를 형성한다. 예를 들어, 2개의 큰 소수(prime)들은 비밀로 유지(예를 들어, 비공개 키)될 수 있는지만, 이 2개의 큰 소수들의 곱셈은 비밀 소수들을 드러내지 않고 공유될 수 있다(예를 들어, 공개 키).
[0023] 지수승 및 소인수 분해는 또한, PIR(private information retrieval) 방식들에서 중요한 역할을 할 수 있다. PIR 방식들은, 사용자가, 하나 이상의 저장 디바이스들을 호스팅하는 서버에 리트리브된 데이터 또는 사용자에 관한 임의의 지식을 드러내지 않으면서, 하나 이상의 저장 디바이스들로부터 데이터를 리트리브할 수 있게 한다. 예를 들어, 서버는 동일한 길이의 n개의 블록들(B1,..., Bn)의 공개 데이터베이스를 저장할 수 있다. 사용자는 블록(Bi)을 다운로드하기를 원한다. 프라이버시 이유들로, 사용자는 다운로드된 데이터 블록의 인덱스를 서버(또는 다른 것)에게 드러내길 원하지 않는다. 즉, 사용자는 선택된 데이터 블록을 감지하지 못하게 리트리브하기를 원한다. 이 문제에 대한 하나의 해결책은 클라이언트가 전체 데이터베이스를 다운로드하게 하는 것이다. 효과적이긴 하지만, 대역폭 비용으로 인해 상당한 크기의 임의의 데이터베이스에 대해 이 해결책은 실행할 수 없다.
[0024] 다른 접근방식은 지수승을 사용하는 것이다. 예를 들어, 서버는 정수 지수(E)로서 데이터베이스를 표현할 수 있다. 데이터베이스의 크기에 따라, E는 상당히 클 수 있다(예를 들어, 수천 또는 수백만 개의 자릿수들). 클라이언트는, 비신뢰 서버 상의 데이터 블록(예를 들어, 비신뢰 서버에 저장된 질의 엘리먼트)과 연관된 모듈러스(M)로 표현되는 그룹(G)을 획득한다. 클라이언트는 그룹 엘리먼트(g)를 선택할 수 있으며, 여기서 g는, 클라이언트가 다운로드하기를 원하는, 서버에 저장된 데이터 블록(예를 들어, 질의 엘리먼트)과 연관된다. 클라이언트는 선택된 데이터 블록을 감지하지 못하게 리트리브하기 위해 결과를 사용할 수 있기 때문에, 클라이언트는 gE mod M을 풀기를 원한다. 클라이언트는 M의 소인수 분해를 알고 있지만, 소인수 분해를 비밀로 유지하기를 원한다.
[0025] 이러한 상황에서, 클라이언트는 단순히 g 및 M을 서버에 전송하고 서버가 gE mod M을 컴퓨팅하게 할 수 있다. 그러나, 이전에 논의된 바와 같이, 지수승은 초-선형 문제이고, 지수(E)의 충분한 크기(즉, 데이터베이스의 크기)의 경우, 컴퓨테이션 요건들은 엄청나게 과중된다. 서버는 (예를 들어, 페르마의 소정리(Fermat's Little Theorem)를 사용함으로써) 모듈러스의 소인수들의 지식으로 컴퓨테이션을 크게 단순화할 수 있지만, 클라이언트는 소인수들을 비밀로 유지하기를 원한다. 따라서, 클라이언트가 소인수 분해를 사용하여 효율적인 컴퓨테이션을 수행한 다음, 전체 데이터베이스(즉, 지수)를 송신하는 대역폭 비용들과 서버가 모듈러스의 소인수 분해에 액세스하지 않고 전체 지수승을 수행하는 컴퓨테이션 비용 둘 다를 회피하기 위해, 남은 지수승을 서버에 아웃소싱하는 것이 유리하다.
[0026] 본원에서의 구현들은 모듈러스의 소인수 분해를 드러내지 않으면서 비공개 그룹의 지수승을 아웃소싱하기 위한 루틴에 관한 것이다. 루틴은, 클라이언트가 서버-보유 지수의 사용 없이 일련의 베이스 값들을 생성하기 위해 모듈러스의 비밀 소인수 분해를 사용하여 효율적인 지수승을 수행하게 함으로써, 대역폭과 컴퓨테이션 간의 실질적인 밸런스를 가능하게 한다. 클라이언트는, 소인수 분해를 제공하지 않고 서버-보유 지수를 이용한 추가 컴퓨테이션을 위해 일련의 베이스 값들을 서버에 전송한다.
[0027] 도 1을 참조하면, 일부 구현들에서, 예시적인 시스템(100)은, 개개의 사용자 또는 클라이언트(12)와 연관되고 그리고 네트워크(112)를 통해 원격 시스템(111)(본원에서는 또한, 서버 또는 비신뢰 서버로 지칭됨)과 통신하는 사용자 디바이스(10)(클라이언트 디바이스(10)로 또한 지칭됨)를 포함한다. 사용자 디바이스(10)는 임의의 컴퓨팅 디바이스, 이를테면 데스크톱 워크스테이션, 랩톱 워크스테이션, 또는 모바일 디바이스(즉, 스마트 폰)에 대응할 수 있다. 원격 시스템(111)은, 단일 컴퓨터일 수 있거나, 다수의 컴퓨터들일 수 있거나, 또는 스케일러블한/탄력적 컴퓨팅 자원들(118)(예를 들어, 데이터 프로세싱 하드웨어) 및/또는 저장 자원들(116)(예를 들어, 메모리 하드웨어)을 갖는 분산형 시스템(예를 들어, 클라우드 환경)일 수 있다. 비신뢰 데이터 저장부(150)(예를 들어, '비신뢰 저장 디바이스' 또는 '비신뢰 서버')는, 클라이언트 또는 컴퓨팅 자원스들(118) 중 하나 이상에 의한 저장 자원들(116)의 스케일러블한 사용을 허용하기 위해 저장 자원들(116) 상에 오버레이된다. 비신뢰 데이터 저장부(150)는 클라이언트 디바이스(10)에 의한 다운로드를 위해 이용가능한 복수의 데이터 블록들(152, 152a-n)을 저장하도록 구성된다.
[0028] 예를 들어, 비신뢰 데이터 저장부(150)는, 공개적으로 알려져 있고 암호화되지 않은 n개의 데이터 블록들(B)(152)을 포함하며, 그리고 하나 이상의 클라이언트 디바이스들(10)이 데이터 블록들(B)(152)을 감지하지 못하게 리트리브하기 위해 PIR을 사용하여, 클라이언트 디바이스들(10)에 의한 데이터 블록(B)(152)에 대한 서치 기능들을 보존하면서 액세스 패턴들을 숨기는 것을 가능하게 한다. 따라서, 클라이언트 디바이스(10)는 데이터 블록들(152)을 소유하지 않을 수 있고, 데이터 블록들(152)의 콘텐츠는 일부 구성들에서 대중이 이용가능하다. 대안적으로, 데이터 블록들(152)은 특정 클라이언트(12)에게는 비공개일 수 있지만, 클라이언트(12)는 여전히 비신뢰 데이터 저장부(150)로부터 액세스 패턴을 숨기기를 원한다. 데이터 블록들(152)은 정수로 표현될 수 있다. 즉, 비신뢰 데이터 저장부(150) 또는 서버(111)는 각각의 데이터 블록(152)을 프로세싱하여, 모든 데이터 블록들(152)을 표현하는 하나의 정수를 생성할 수 있다. 예를 들어, 서버(111)는 구별되는 작은 소수로 각각의 데이터 블록(152)을 인코딩하기 위해 중국인의 나머지 정리(Chinese Remainder Theorem)를 사용할 수 있다.
[0029] 클라이언트(12)와 연관된 클라이언트 디바이스(10)(예를 들어, 컴퓨터)는 연관된 메모리 하드웨어(122) 및 연관된 데이터 프로세싱 하드웨어(124)를 포함할 수 있다. 각각의 클라이언트 디바이스(10)는, 질의 명령(130), 모듈러스(M)(134)에 의해 표현되는 그룹(G)(132), 포지션 베이스(positional base)(B)(136), 및 포지션 카운트(positional count)(m)(138)를 보유하거나 저장하기 위해, 연관된 메모리 하드웨어(122)를 활용할 수 있다. 일부 예들에서, 데이터 프로세싱 하드웨어(124)는, 원격 시스템(111)(본원에서 또한, 비신뢰 환경에서 실행되는 서버로 지칭될 수 있음)에 발행되는 일련의 베이스 값들(162)을 생성하기 위한 생성기(160)를 실행한다.
[0030] 일부 예들에서, 생성기(160)는 비신뢰 데이터 저장부(150)에 저장된 질의 엘리먼트(즉, 데이터 블록(B)(152))를 리트리브하기 위해 질의 명령(130)을 실행한다. 이를 위해, 생성기(160)는 비신뢰 데이터 저장부(150)에 저장된 질의 엘리먼트와 연관된 모듈러스(M)(134)를 획득하거나 수신하거나 생성한다. 모듈러스(134)는 2개 이상의 소수들(135)의 곱이다. 소수들(135)은 사용자 디바이스(10)에 의해 선택되고, 비공개 키의 기초를 형성할 수 있다. 따라서, 소수들(135)은 다른 모든 당사자들(서버(111) 포함)로부터 비밀로 유지된다. 생성기(160)는 또한, 하나 이상의 그룹 엘리먼트(g)(133)를 포함하는 그룹(G)(132)을 획득하거나 수신하거나 생성한다. 그룹(132)은 모듈러스(134)로 표현되고, 그룹(132)의 각각의 그룹 엘리먼트(133)는 소수(135)의 서브그룹의 생성기이다.
[0031] 이제 도 2를 참조로, 일부 구현들에서, 데이터 프로세싱 하드웨어(122)는 질의 명령들(130)을 수신하는 선택기(200)를 실행한다. 질의 명령들(130)은 하나 이상의 데이터 블록 선택들(131)을 포함한다. 각각의 데이터 블록 선택(131)은 비신뢰 데이터 저장부(150)로부터 감지하지 못하게 리트리브될 데이터 블록(152)(예를 들어, 질의 엘리먼트)에 대응한다. 선택기(200)는 서버(111)(예를 들어, 메모리 하드웨어(116))에 저장된 데이터 블록 소수 데이터 저장부(210)와 통신한다. 데이터 블록 소수 데이터 저장부(210)는, 일부 예들에서, 비신뢰 데이터 저장부(150)에 저장된 각각의 데이터 블록(152)과 연관된 개개의 데이터 블록 소수(220)를 저장한다. 즉, 데이터 블록 소수 저장부(210)는 데이터 저장부(150)로부터 리트리브될 데이터 블록(152)에 대응하는 데이터 블록 소수(220)를 제공할 수 있다. 선택기(200)는, 데이터 블록 선택들(131)과 연관된 데이터 블록들(152)에 대응하는 데이터 블록 소수들(220)을 획득하기 위해, 질의 명령들(130)로부터 데이터 블록 선택(131)을 사용할 수 있다. 획득된 데이터 블록 소수들(220)을 사용하여, 선택기(200)는 모듈러스(134)의 소인수 분해를 선택한다. 소인수 분해는 2개 이상의 소수들(135)을 포함하고, 소수들(135) 중 적어도 하나는 데이터 블록 소수(220)에 대응한다. 유사하게, 그룹 엘리먼트(133)는, 모듈러스(134) 및 그룹 엘리먼트(133) 둘 모두가 비신뢰 데이터 저장부(150)로부터 리트리브될 데이터 블록(152)과 연관된 데이터 블록 소수(220)와 연관되도록, 데이터 블록 선택(131)에 기반하여 선택된다. 즉, 그룹 엘리먼트(133)는 모듈러스 M(134)의 소인수 분해의 소수들(135) 개개의 소수를 생성하도록 구성된다.
[0032] 다시 도 1을 참조로, 생성기(160)는 또한, 일부 구현들에서, 포지션 베이스(B)(136)를 수신하거나 결정한다. 포지션 베이스(136)는 서버-보유 지수(154)의 베이스(또한, 밑(radix)으로도 불림)이다. 즉, 지수(154)는 2보다 크거나 같은 임의의 베이스(즉, 2진수)로 표현될 수 있고, 포지션 베이스(136)는 지수(154)를 표현하기 위해 클라이언트 디바이스(10) 또는 서버(111)에 의해 선택된다. 포지션 베이스(136)는, 일부 예들에서, 사용자(12)에 의해 선택되는 반면, 다른 예들에서는 사용자 디바이스(10)가 포지션 베이스(136)를 자동으로 결정한다. 추가적인 예들에서, 서버는 포지션 베이스(136)를 결정하고 이를 클라이언트 디바이스(10)에 중계한다. 포지션 베이스(136)에 추가하여, 생성기(160)는 포지션 카운트(138)를 수신할 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 포지션 카운트(138)는, 포지션 베이스(136)를 갖는 지수(154)를 표현하는 데 필요한 자릿수(212)(도 2)를 표현한다.
[0033] 생성기(160)는, 소인수들(135)을 사용하여, 일련의 베이스 값들(162, 162a-n)을 생성한다. 일부 예들에서, 각각의 베이스 값(162)은 포지션 베이스(136)에 의한 그룹 엘리먼트(133)의 지수승이며, 이는 위치 기수법에서 숫자 포지션의 값에 대응한다. 이제 도 3을 참조로, 예시적인 지수(154)는, 포지션 베이스(136)가 10과 같은 경우(즉, 10진 위치 기수법을 사용), 153,729와 같다. 임의의 위치 기수법(즉, 포지션 베이스(136))이 선택될 수 있다는 것이 이해된다. 예를 들어, 위치 기수법은 2진법, 16진법 또는 10진법을 포함할 수 있다. 통상적으로 지수(154)는 매우 크지만, 명확성을 위해 이 예에서는 작은 수들이 사용된다. 선택된 포지션 베이스(136)(이 경우, 10)를 갖는 지수(154)를 해석하는 서버(111)가 포지션 카운트(138)를 결정한다. 즉, 서버(111)는, 포지션 베이스(136)를 갖는 지수(154)를 표현하는 데 필요한 자릿수(212)를 결정한다. 도시된 예에서, 지수(154)(즉, 153,729)는 6 자릿수(212)의 10진수(즉, b = 10)로 표현될 수 있다. 따라서, 포지션 카운트(138)는 (10진수로) 6과 같다. 선택된 포지션 베이스(136)와 관계없이, 지수는 다음과 같이 표현될 수 있다:
Figure 112021143047679-pct00001
[0034] 여기서, 지수(154)는, 10진수로(즉, 포지션 베이스가 10과 같음), 총 153,729에 대해, 9 + (2*10) + (7*100) + (3*1000) + (5*10000) + (1*100000)로 표현된다. 이제 도 4를 참조로, 식 (1)(470)은 gE가 다음과 같이 재작성되게 한다:
Figure 112021143047679-pct00002
[0035] 식 (2)(480)로부터 명백한 바와 같이, gE의 부분은 서버-보유 지수(154) 없이 계산될 수 있다. 즉, 생성기(160)는 일련의 베이스 값들(162)을 다음과 같은 시리즈로 생성할 수 있다:
Figure 112021143047679-pct00003
[0036] 선택된 포지션 베이스(136)는 일련의 베이스 값들(162a-n)(즉, 변수(m))에서의 베이스 값들(162)의 수에 영향을 미치고, 따라서, 포지션 베이스(136)는 일련의 베이스 값들을 송신하는 통신 비용에 직접적인 영향을 미친다는 것이 분명하다. 더 큰 포지션 베이스들(136)은 더 어려운 컴퓨테이션들을 요구하기 때문에, 포지션 베이스(136)의 선택은 통신 비용과 컴퓨테이션 비용 간의 트레이드오프를 직접적으로 제공한다. 일부 예들에서, 포지션 베이스(136)(즉, 위치 기수법)은, 클라이언트 디바이스(10)와 서버(111) 간의 통신들에 대한 대역폭 제한에 기반하여, 클라이언트 디바이스(10) 또는 서버(111)에 의해 선택된다. 다른 예들에서, 포지션 베이스(136)는, 선택된 위치 기수법에서 지수(154)를 표현하는 데 필요한 자릿수(212)의 대략 절반이 되도록 선택된다. 예를 들어, 선택은, 5,000의 포지션 베이스로 표현될 때, 10,000개 숫자들을 요구하는 지수(154)를 초래할 수 있다.
[0037] 일부 구현들에서, 서버(111)는 생성기(160)로 지수(154)의 포지션 카운트(138)를 송신한다. 생성기(160)는 생성할 베이스 값들(162)의 수를 결정하기 위해 포지션 카운트(138)를 사용할 수 있다. 도시된 예에서, 생성기(160)는, 값 153,729가 6 자릿수(212)로 표현되기 때문에, 6개의 베이스 값들(162)을 생성할 수 있다. 생성기(160)가 소인수들(135)에 액세스할 수 있기 때문에, 생성기(160)는 서버-보유 지수(154)를 사용하지 않고(예를 들어, 페르마의 소정리 또는 다른 기법들, 이를테면 오일러의 정리(Euler's Theorem), 카마이클의 정리(Carmichael's Theorem) 또는 중국인의 나머지 정리를 사용하여) 효율적으로 일련의 베이스 값들(162)을 생성한다. 생성기(160)는 서버(111)로 일련의 베이스 값들(162)을 송신할 수 있다.
[0038] 일부 구현들에서, 일련의 베이스 값들(162)은 일련의 초기 베이스 값들(162A, 162Aa-An)을 표현한다. 즉, 일부 예들에서, 생성기(160)는 그룹 엘리먼트(133) 및 모듈러스(134)의 소인수 분해를 사용하여 일련의 초기 베이스 값들(162A)을 생성한다. 생성기(160)는, 각각의 초기 베이스 값(162A)을 모듈러스(134)만큼(즉, 모듈로(modulo) M만큼) 감소시켜, 일련의 모듈러스-감소된 베이스 값(162B, 162Ba-Bn)을 생성할 수 있다. 따라서, 각각의 모듈러스-감소된 베이스 값들(162B)은, 모듈러스(134)만큼 감소된, 일련의 초기 베이스 값들(162A)의 개개의 초기 베이스 값(162A)을 포함한다. 일련의 초기 베이스 값들(162A) 대신에, 생성기(160)는 비신뢰 서버(111)로 일련의 모듈러스-감소된 베이스 값(162B)을 송신할 수 있다. 즉, 서버(111)로 전송된 일련의 베이스 값들(162)은 일련의 초기 베이스 값들(162A) 또는 일련의 모듈러스-감소된 베이스 값들(162B)을 포함한다. 모듈로 M만큼 초기 베이스 값들(162A)을 감소시키는 것은, 서버(11)로 전송되는 베이스 값들(162B)의 크기를 상당히 감소시키고, 따라서 서버(111)로 일련의 베이스 값들(162B)을 송신하는데 필요한 대역폭을 상당히 감소시킨다. 모듈러스 연산들은 지수승보다 계산상 더 쉽기 때문에, 추가의 모듈러스 연산들을 수행하는 것이 유리할 수 있다.
[0039] 다시 도 1을 참조로, 일부 구현들에서, 서버(111)는 지수 곱셈기(170)를 실행한다. 지수 곱셈기(170)는, 클라이언트 디바이스(10)(예를 들어, 생성기(160))로부터 일련의 베이스 값들(162)을 수신하고 비신뢰 데이터 저장부(150)로부터 지수(154)를 수신한다. 선택적으로, 클라이언트 디바이스(10)는 또한, 결과(192)를 생성할 때 지수 곱셈기(170)에 의해 사용하기 위해 그룹 엘리먼트(133) 및/또는 모듈러스(134)를 서버(111)에 제공할 수 있다. 일부 예들에서, 지수 곱셈기(170)(또는 서버(111) 상에서 실행되는 다른 모듈)는 비신뢰 데이터 저장부(150)의 데이터 블록들(152)로부터 지수(154)를 결정한다. 지수 곱셈기(170)는 클라이언트-생성 일련의 베이스 값들(162) 및 지수(154)를 사용하여 gE를 컴퓨팅한다. 일부 예들에서, 서버(111)는, 일련의 베이스 값들(162)의 각각의 베이스 값(162)에 대해, 지수(154)의 개개의 숫자 포지션에 있는 값(482)(도 4)을 갖는 베이스 값들(162)의 지수승을 결정하고 그리고 결과(192)를 생성하기 위해 베이스 값들(162)의 지수승들을 지수(154)의 개개의 숫자 포지션에 있는 값들(482)과 함께 곱함으로써, 비신뢰 서버(111)에 저장된 지수(154)을 갖는 그룹 엘리먼트(133)의 지수승을 결정한다. 결과(192)는 질의된 엘리먼트(즉, 데이터 블록 선택(131)에 의해 선택된 데이터 블록(152))와 연관된다.
[0040] 서버(111)는 이제 이 컴퓨테이션을 m개의 베이스들과 m개의 지수들을 곱하는 표준 문제로 일반화할 수 있기 때문에, 서버(111)는 다수의 알고리즘들을 활용하여 결과(192)를 효율적으로 결정할 수 있다. 예를 들어, 서버(111)는 피펜거의 지수승 알고리즘(Pippenger's exponentiation algorithm) 또는 다른 덧셈-사슬 지수승 방법들을 사용할 수 있다. gE를 결정한 후, 서버(111)는 gE를 결과(192)로서 사용자 디바이스(10)에 다시 전송할 수 있다. 대안적으로, 서버(111)는 결과(192)를 생성하기 위해 모듈로 M(즉, 모듈러스(134))만큼 gE를 감소시킬 수 있는데, 이는 결과(192)의 크기를 상당히 감소시킬 것이며 그리고 이전에 논의된 바와 같이, 모듈러스 연산들은 지수승보다 계산상 더 쉽기 때문이다. 결과(192)는 비신뢰 데이터 저장부(150)에 저장된 지수(154)를 갖는 그룹 엘리먼트(133)의 지수승에 기반한다. 즉, 결과(192)는 데이터 블록 선택(131)에 의해 선택된 데이터 블록(152)의 값에 대응한다.
[0041] 시스템(100)은 전체 지수(154)를 클라이언트 디바이스(10)에 전송하는 것에 비해 상당히 감소된 대역폭 사용을 제공하는데, 이는, 시스템이 각각 log(M) 비트들로 표현될 수 있는 m개의 지수들만을 송신하기 때문이다. 모듈러스(134)(M)는 통상적으로 지수(154)보다 훨씬 작다, 즉 m*log (M) <E이다. 부가적으로, 시스템(100)은 그룹 엘리먼트(133)의 지수승을 완전히 컴퓨팅하는 서버에 비해 상당히 감소된 컴퓨테이션을 제공하는데, 이는, 사용자 디바이스(10)가 비신뢰 서버(111) 또는 비신뢰 데이터 저장부(150)에 결코 드러나지 않는 모듈러스(134)의 소인수 분해를 아는 것을 이용하기 때문이다. 따라서, 시스템이 큰 문제(즉, 매우 큰 지수들에 대한 지수승)를 몇몇 더 작은 문제들(즉, 더 작은 베이스 값(162) 지수들)로 분할함으로써, 시스템(100)은, 클라이언트 디바이스(10)가 모듈러스(134)의 소인수 분해를 비신뢰 서버(111)에 결코 드러내지 않으면서 컴퓨테이션의 (점근적(asymptotic) 및 구체적 둘 다의) 전체 비용을 줄인다. 시스템(100)은, 통신 비용(예를 들어, 대역폭)과 컴퓨테이션 간의 밸런스를 제공하고 그리고 사용자 디바이스(10)와 서버(111) 둘 다가 효율적으로 컴퓨팅하게 한다. 예를 들어, 시스템(100)은, 10x 내지 100x의 표준 컴퓨테이션 및 통신 비용을 사용하여, 보다 단순한 접근방식(naive approach)들(예를 들어, 전체 지수(154)를 송신 또는 서버가 gE를 완전히 컴퓨팅하게 함)에 비해 개선될 수 있다. 본원에서의 예들은 PIR에 관한 것이지만, 지수승을 아웃소싱하기 위한 설명된 방법들은 다른 많은 분야(예를 들어, 블록체인들)에서 유리할 수 있다.
[0042] 도 5는 비공개 그룹의 지수승을 아웃소싱하기 위한 예시적 방법(500)의 흐름도이다. 방법(500)은, 동작(504)에서, 비신뢰 서버(111, 150)에 저장된 질의 엘리먼트(152)와 연관된 모듈러스(134)의 소인수 분해를 선택함으로써, 클라이언트 디바이스(10)의 데이터 프로세싱 하드웨어(122)에서, 비신뢰 서버(111, 150)에 저장된 질의 엘리먼트(152)를 리트리브하기 위한 질의 명령(130)을 실행하는 동작(502)에서 시작된다. 소인수 분해는 2개 이상의 소수들(135)을 포함한다. 방법(500)은, 동작(506)에서, 소인수 분해의 2개 이상의 소수들(135)의 개개의 소수를 생성하도록 구성된 그룹 엘리먼트(133)를 획득하는 단계를 포함한다. 방법(500)은, 동작(508)에서, 그룹 엘리먼트(133) 및 모듈러스(134)의 소인수 분해를 사용하여 일련의 베이스 값들(162)을 생성하는 단계, 및 동작(510)에서, 클라이언트 디바이스(10)로부터 비신뢰 서버(111, 150)로 일련의 베이스 값들(162)을 송신하는 단계를 포함한다. 비신뢰 서버(111, 150)는, 일련의 베이스 값들(162)을 사용하여, 비신뢰 서버에 저장된 지수(154)를 갖는 그룹 엘리먼트(133)의 지수승을 결정하도록 구성된다. 방법(500)은, 동작(512)에서, 데이터 프로세싱 하드웨어(122)에서, 비신뢰 서버(111, 150)로부터 결과(192)를 수신하는 단계를 포함한다. 결과(192)는 비신뢰 서버(111, 150)에 저장된 지수(154)를 갖는 그룹 엘리먼트(133)의 지수승에 기반한다.
[0043] 도 6은 본원에서 설명되는 시스템들 및 방법들을 구현하기 위해 사용될 수 있는 예시적인 컴퓨팅 디바이스(600)의 개략도이다. 컴퓨팅 디바이스(600)는 랩톱들, 데스크톱들, 워크스테이션들, 개인용 정보 단말기(personal digital assistant)들, 서버들, 블레이드 서버(blade server)들, 메인프레임들 및 다른 적절한 컴퓨터들과 같은 다양한 형태들의 디지털 컴퓨터들을 표현하도록 의도된다. 여기에 도시되는 컴포넌트들, 이들의 연결들 및 관계들, 및 이들의 기능들은, 단지 예시적인 것으로만 여겨지며, 본원에서 설명되고 그리고/또는 청구되는 본 발명들의 구현들을 제한하는 것으로 여겨지지 않는다.
[0044] 컴퓨팅 디바이스(600)는 프로세서(610), 메모리(620), 저장 디바이스(630), 메모리(620) 및 고속 확장 포트들(650)에 연결되는 고속 인터페이스/제어기(640), 및 저속 버스(670) 및 저장 디바이스(630)에 연결되는 저속 인터페이스/제어기(660)를 포함한다. 컴포넌트들(610, 620, 630, 640, 650, 660) 각각은 다양한 버스들을 사용하여 상호연결되며, 공통 마더보드 상에 또는 적절한 다른 방식들로 장착될 수 있다. 프로세서(610)는, 메모리(620) 내에 또는 저장 디바이스(630)에 저장된 명령들을 포함하여, 컴퓨팅 디바이스(600) 내에서의 실행을 위한 명령들을 프로세싱하여, 고속 인터페이스(640)에 커플링된 디스플레이(680)와 같은 외부 입력/출력 디바이스 상에 GUI(graphical user interface)에 대한 그래픽 정보를 디스플레이할 수 있다. 다른 구현들에서, 다수의 프로세서들 및/또는 다수의 버스들이 다수의 메모리들 및 다수의 메모리의 타입들과 함께 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(600)이 연결될 수 있으며, 각각의 디바이스는 (예를 들어, 서버 뱅크, 한 그룹의 블레이드 서버들 또는 멀티-프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
[0045] 메모리(620)는 정보를 컴퓨팅 디바이스(600) 내에 비-일시적으로 저장한다. 메모리(620)는, 컴퓨터-판독가능 매체, 휘발성 메모리 유닛(들), 또는 비-휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(620)는 컴퓨팅 디바이스(600)에 의한 사용을 위해 일시적으로 또는 영구적으로 프로그램들(예를 들어, 명령들의 시퀀스들) 또는 데이터(예를 들어, 프로그램 상태 정보)를 저장하는 데 사용되는 물리적 디바이스들일 수 있다. 비-휘발성 메모리의 예들은, 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예를 들어, 통상적으로 부팅 프로그램(boot program)들과 같은 펌웨어에 사용됨)을 포함한다(그러나 이에 한정되는 것은 아님). 휘발성 메모리의 예들은, RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory)뿐만 아니라 디스크들 또는 테이프들을 포함한다(그러나 이에 한정된 것은 아님).
[0046] 저장 디바이스(630)는, 컴퓨팅 디바이스(600)에 대한 대용량 저장을 제공할 수 있다. 일부 구현들에서, 저장 디바이스(630)는 컴퓨터-판독가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(630)는, 저장 영역 네트워크 또는 다른 구성들 내의 디바이스들을 포함하여, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 디바이스, 또는 디바이스들의 어레이일 수 있다. 추가 구현들에서, 컴퓨터 프로그램 제품은 정보 캐리어에 유형적으로 구현된다. 컴퓨터 프로그램 제품은, 실행되는 경우, 위에서 설명된 것들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는, 메모리(620), 저장 디바이스(630), 또는 프로세서(610) 상의 메모리와 같은 컴퓨터-판독가능 또는 기계-판독가능 매체이다.
[0047] 고속 제어기(640)는, 컴퓨팅 디바이스(600)에 대한 대역폭-집약적인 동작들을 관리하는 반면, 저속 제어기(660)는 더 낮은 대역폭-집약적인 동작들을 관리한다. 이러한 임무들의 할당은 단지 예시일 뿐이다. 일부 구현들에서, 고속 제어기(640)는, 메모리(620)에, (예를 들어, 그래픽 프로세서 또는 가속기를 통해) 디스플레이(680)에, 그리고 다양한 확장 카드들(미도시)을 수용할 수 있는 고속 확장 포트들(650)에 커플링된다. 일부 구현들에서, 저속 제어기(660)는 저장 디바이스(630) 및 저속 확장 포트(690)에 커플링된다. 다양한 통신 포트들(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)을 포함할 수 있는 저속 확장 포트(690)는, 하나 이상의 입력/출력 디바이스들, 이를테면 키보드, 포인팅 디바이스, 스캐너, 또는 네트워킹 디바이스, 이를테면 스위치 또는 라우터에, 예를 들어, 네트워크 어댑터를 통해 커플링될 수 있다.
[0048] 컴퓨팅 디바이스(600)는 도면에 도시된 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예를 들어, 이는 표준 서버(600a)로서 또는 그러한 서버들(600a)의 그룹에서 여러 번, 랩톱 컴퓨터(600b)로서, 또는 랙(rack) 서버 시스템(600c)의 일부로서 구현될 수 있다.
[0049] 본원에서 설명되는 시스템들 및 기법들의 다양한 구현들은 디지털 전자 및/또는 광학 회로부, 집적 회로부, 특수 설계된 ASIC(application specific integrated circuit)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은, 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 그리고 이들에 데이터 및 명령들을 송신하도록 커플링된, 특수 목적 또는 범용성일 수 있는 적어도 하나의 프로그램가능 프로세서를 포함하는 프로그램가능 시스템 상에서 실행가능하고 그리고/또는 해석가능한 하나 이상의 컴퓨터 프로그램들에서의 구현을 포함할 수 있다.
[0050] 소프트웨어 애플리케이션(즉, 소프트웨어 자원)은, 컴퓨팅 디바이스로 하여금 작업(task)을 수행하게 하는 컴퓨터 소프트웨어를 지칭할 수 있다. 일부 예들에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱" 또는 "프로그램"으로 지칭될 수 있다. 예시적인 애플리케이션들은, 시스템 진단 애플리케이션들, 시스템 관리 애플리케이션들, 시스템 유지 보수 애플리케이션들, 워드 프로세싱 애플리케이션들, 스프레드 시트 애플리케이션들, 메시징 애플리케이션들, 미디어 스트리밍 애플리케이션들, 소셜 네트워킹 애플리케이션들, 및 게이밍 애플리케이션들을 포함한다(그러나 이에 제한되지 않음).
[0051] 이들 컴퓨터 프로그램들(또한, 프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 알려짐)은, 프로그램가능 프로세서에 대한 기계 명령들을 포함하며, 고레벨의 절차적인 및/또는 객체-지향적인 프로그래밍 언어 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본원에 사용되는 바와 같이, "기계-판독가능 매체" 및 "컴퓨터-판독가능 매체"라는 용어들은, 기계-판독가능 신호로서 기계 명령들을 수신하는 기계-판독가능 매체를 포함하여, 기계 명령들 및/또는 데이터를 프로그램가능 프로세서에 제공하기 위해 사용되는 임의의 컴퓨터 프로그램 제품, 비-일시적 컴퓨터 판독가능 매체, 장치 및/또는 디바이스(예를 들어, 자기 디스크들, 광 디스크들, 메모리, PLD(Programmable Logic Device)들)를 지칭한다. "기계-판독가능 신호"라는 용어는, 기계 명령들 및/또는 데이터를 프로그램가능 프로세서에 제공하기 위해 사용되는 임의의 신호를 지칭한다.
[0052] 본 명세서에서 설명되는 프로세스들 및 로직 흐름들은, 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능들을 수행하도록 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그램가능 프로세서들(데이터 프로세싱 하드웨어로 또한 지칭됨)에 의해 수행될 수 있다. 예를 들어, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 특수 목적 로직 회로부에 의해 프로세스들 및 로직 흐름들이 또한 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용성 및 특수 목적의 마이크로프로세서들 둘 다, 그리고 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 이 둘 다로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 수행하기 위한 프로세서 그리고 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예를 들어 자기, 광자기(magneto optical) 디스크들, 또는 광 디스크들을 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 또는 이들에 데이터를 전송하도록 또는 이 둘 다를 위해 동작가능하게 커플링될 것이다. 그러나, 컴퓨터가 이러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체들은, 예로서, 반도체 메모리 디바이스들, 예를 들어 EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예를 들어, 내부 하드 디스크들 또는 착탈식 디스크들; 광자기 디스크들; 및 CD ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태들의 비-휘발성 메모리, 매체들 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로부에 의해 보완되거나 그에 통합될 수 있다.
[0053] 사용자와의 상호작용을 제공하기 위해, 본 개시내용의 하나 이상의 양상들은, 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스, 예를 들어, CRT(cathode ray tube), LCD(liquid crystal display) 모니터 또는 터치 스크린 그리고 선택적으로는, 사용자가 컴퓨터에 입력을 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들이 사용자와의 상호작용을 제공하기 위해 또한 사용될 수 있으며; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감지 피드백, 예를 들어, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있고; 그리고 사용자로부터의 입력은 음향, 스피치 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서들을 전송하고 그 디바이스로부터 문서들을 수신함으로써; 예를 들어, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 사용자의 클라이언트 디바이스 상의 웹 브라우저에 웹 페이지들을 전송함으로써, 사용자와 상호작용할 수 있다.
[0054] 다수의 구현들이 설명되었다. 그럼에도, 본 개시내용의 사상 및 범위를 벗어나지 않으면서 다양한 수정들이 행해질 수 있다는 것이 이해될 것이다. 이에 따라, 다른 구현들은 다음의 청구항들의 범위 내에 있다.

Claims (22)

  1. 비신뢰 서버(untrusted server)에 저장된 질의 엘리먼트와 연관된 모듈러스(modulus)의 소인수 분해(prime factorization)를 선택하고 ―상기 소인수 분해는 2개 이상의 소수들을 포함함―,
    상기 소인수 분해의 2개 이상의 소수들의 개개의 소수를 생성하도록 구성된 그룹 엘리먼트를 획득하고,
    상기 그룹 엘리먼트 및 상기 모듈러스의 소인수 분해를 사용하여 일련의 베이스 값(base value)들을 생성하고 ―상기 일련의 베이스 값들을 생성하는 것은, 상기 비신뢰 서버와 클라이언트 디바이스 간의 통신들에 대한 대역폭 제한에 기반하여, 상기 클라이언트 디바이스 또는 상기 비신뢰 서버에 의해 선택되는, 상기 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법(numeral position system)을 획득하는 것, 및 상기 위치 기수법에서 숫자 포지션(digit position)에 대응하는 개개의 베이스 엘리먼트에 의한 상기 그룹 엘리먼트의 지수승(exponentiation)에 기반하여, 상기 일련의 베이스 값들의 각각의 베이스 값을 생성하는 것을 포함함―, 그리고
    상기 클라이언트 디바이스로부터 상기 비신뢰 서버로 상기 일련의 베이스 값들을 송신함으로써,
    상기 클라이언트 디바이스의 데이터 프로세싱 하드웨어에서, 상기 비신뢰 서버에 저장된 질의 엘리먼트를 리트리브(retrieve)하기 위한 질의 명령을 실행하는 단계 ―상기 비신뢰 서버는, 상기 일련의 베이스 값들을 사용하여, 상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승을 결정하도록 구성됨―; 및
    상기 데이터 프로세싱 하드웨어에서, 상기 비신뢰 서버로부터 결과를 수신하는 단계
    를 포함하며, 상기 결과는 상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승에 기반하는, 방법.
  2. 제1항에 있어서,
    상기 일련의 베이스 값들을 생성하는 것은,
    상기 그룹 엘리먼트 및 상기 모듈러스의 소인수 분해를 사용하여 일련의 초기 베이스 값들을 생성하는 것, 및
    일련의 모듈러스-감소된 베이스 값들을 생성하기 위해, 상기 일련의 초기 베이스 값들의 각각의 초기 베이스 값을 상기 모듈러스만큼 감소시키는 것
    을 포함하고, 각각의 모듈러스-감소된 베이스 값들은, 상기 모듈러스만큼 감소된, 상기 일련의 초기 베이스 값들의 개개의 초기 베이스 값을 포함하며, 그리고
    상기 비신뢰 서버로 상기 일련의 베이스 값들을 송신하는 것은, 상기 비신뢰 서버로 상기 일련의 모듈러스-감소된 베이스 값들을 송신하는 것을 포함하고,
    상기 비신뢰 서버는, 상기 일련의 모듈러스-감소된 베이스 값들을 사용하여, 상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승을 결정하도록 구성되는, 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 비신뢰 서버로 상기 일련의 베이스 값들을 송신하는 것은, 상기 비신뢰 서버로 상기 모듈러스를 송신하는 것을 더 포함하며,
    상기 비신뢰 서버는,
    상기 일련의 베이스 값들을 사용하여, 상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승을 결정하고,
    상기 지수를 갖는 상기 그룹 엘리먼트의 지수승을 상기 모듈러스만큼 감소시킴으로써 상기 결과를 생성하고, 그리고
    상기 클라이언트 디바이스로 상기 결과를 송신하도록 구성되는, 방법.
  4. 제1항 또는 제2항에 있어서,
    상기 결과가 상기 지수를 갖는 상기 그룹 엘리먼트의 지수승을 포함하는 경우, 상기 데이터 프로세싱 하드웨어에 의해, 상기 결과를 상기 모듈러스만큼 감소시키는 단계를 더 포함하는, 방법.
  5. 제1항 또는 제2항에 있어서,
    상기 위치 기수법은 2진법, 16진법 또는 10진법 중 하나를 포함하는, 방법.
  6. 제1항 또는 제2항에 있어서,
    상기 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법을 획득하는 것은, 상기 위치 기수법에 의해 표현되는 지수에 대한 자릿수(number of digits)를 획득하는 것을 더 포함하며,
    상기 지수에 대한 자릿수는, 실행되는 질의 명령에 의해 생성된 상기 일련의 베이스 값들에서의 베이스 값들의 수와 동일한, 방법.
  7. 제1항 또는 제2항에 있어서,
    상기 비신뢰 서버는,
    상기 클라이언트 디바이스로부터 수신된 상기 일련의 베이스 값들의 각각의 베이스 값에 대해, 상기 지수의 개개의 숫자 포지션에 있는 값을 갖는 상기 베이스 값의 지수승을 결정하고, 그리고
    상기 베이스 값들의 지수승들을 상기 지수의 개개의 숫자 포지션들에 있는 값들과 함께 곱함으로써,
    상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승을 결정하도록 구성되는, 방법.
  8. 제1항 또는 제2항에 있어서,
    상기 결과는 질의된 엘리먼트와 연관되는, 방법.
  9. 제1항 또는 제2항에 있어서,
    상기 클라이언트 디바이스는, 상기 모듈러스의 소인수 분해를 상기 비신뢰 서버에 결코 드러내지 않는, 방법.
  10. 클라이언트 디바이스의 데이터 프로세싱 하드웨어; 및
    상기 데이터 프로세싱 하드웨어와 통신하는 메모리 하드웨어
    를 포함하고, 상기 메모리 하드웨어는, 상기 데이터 프로세싱 하드웨어 상에서 실행되는 경우, 상기 데이터 프로세싱 하드웨어로 하여금 동작들을 수행하게 하는 명령들을 저장하며,
    상기 동작들은,
    비신뢰 서버에 저장된 질의 엘리먼트와 연관된 모듈러스의 소인수 분해를 선택하고 ―상기 소인수 분해는 2개 이상의 소수들을 포함함―,
    상기 소인수 분해의 2개 이상의 소수들의 개개의 소수를 생성하도록 구성된 그룹 엘리먼트를 획득하고,
    상기 그룹 엘리먼트 및 상기 모듈러스의 소인수 분해를 사용하여 일련의 베이스 값들을 생성하고 ―상기 일련의 베이스 값들을 생성하는 것은, 상기 비신뢰 서버와 상기 클라이언트 디바이스 간의 통신들에 대한 대역폭 제한에 기반하여, 상기 클라이언트 디바이스 또는 상기 비신뢰 서버에 의해 선택되는, 상기 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법을 획득하는 것, 및 상기 위치 기수법에서 숫자 포지션에 대응하는 개개의 베이스 엘리먼트에 의한 상기 그룹 엘리먼트의 지수승에 기반하여, 상기 일련의 베이스 값들의 각각의 베이스 값을 생성하는 것을 포함함―, 그리고
    상기 클라이언트 디바이스로부터 상기 비신뢰 서버로 상기 일련의 베이스 값들을 송신함으로써,
    상기 비신뢰 서버에 저장된 질의 엘리먼트를 리트리브하기 위한 질의 명령을 실행하는 것 ―상기 비신뢰 서버는, 상기 일련의 베이스 값들을 사용하여, 상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승을 결정하도록 구성됨―; 및
    상기 비신뢰 서버로부터 결과를 수신하는 것
    을 포함하며, 상기 결과는 상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승에 기반하는, 시스템.
  11. 제10항에 있어서,
    상기 일련의 베이스 값들을 생성하는 것은,
    상기 그룹 엘리먼트 및 상기 모듈러스의 소인수 분해를 사용하여 일련의 초기 베이스 값들을 생성하는 것, 및
    일련의 모듈러스-감소된 베이스 값들을 생성하기 위해, 상기 일련의 초기 베이스 값들의 각각의 초기 베이스 값을 상기 모듈러스만큼 감소시키는 것
    을 포함하고, 각각의 모듈러스-감소된 베이스 값들은, 상기 모듈러스만큼 감소된, 상기 일련의 초기 베이스 값들의 개개의 초기 베이스 값을 포함하며, 그리고
    상기 비신뢰 서버로 상기 일련의 베이스 값들을 송신하는 것은, 상기 비신뢰 서버로 상기 일련의 모듈러스-감소된 베이스 값들을 송신하는 것을 포함하고,
    상기 비신뢰 서버는, 상기 일련의 모듈러스-감소된 베이스 값들을 사용하여, 상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승을 결정하도록 구성되는, 시스템.
  12. 제10항 또는 제11항에 있어서,
    상기 비신뢰 서버로 상기 일련의 베이스 값들을 송신하는 것은, 상기 비신뢰 서버로 상기 모듈러스를 송신하는 것을 더 포함하며,
    상기 비신뢰 서버는,
    상기 일련의 베이스 값들을 사용하여, 상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승을 결정하고,
    상기 지수를 갖는 상기 그룹 엘리먼트의 지수승을 상기 모듈러스만큼 감소시킴으로써 상기 결과를 생성하고, 그리고
    상기 클라이언트 디바이스로 상기 결과를 송신하도록 구성되는, 시스템.
  13. 제10항 또는 제11항에 있어서,
    상기 동작들은, 상기 결과가 상기 지수를 갖는 상기 그룹 엘리먼트의 지수승을 포함하는 경우, 상기 결과를 상기 모듈러스만큼 감소시키는 것을 더 포함하는, 시스템.
  14. 제10항 또는 제11항에 있어서,
    상기 위치 기수법은 2진법, 16진법 또는 10진법 중 하나를 포함하는, 시스템.
  15. 제10항 또는 제11항에 있어서,
    상기 비신뢰 서버에 저장된 지수를 표현하는 위치 기수법을 획득하는 것은, 상기 위치 기수법에 의해 표현되는 지수에 대한 자릿수를 획득하는 것을 더 포함하며,
    상기 지수에 대한 자릿수는, 실행되는 질의 명령에 의해 생성된 상기 일련의 베이스 값들에서의 베이스 값들의 수와 동일한, 시스템.
  16. 제10항 또는 제11항에 있어서,
    상기 비신뢰 서버는,
    상기 클라이언트 디바이스로부터 수신된 상기 일련의 베이스 값들의 각각의 베이스 값에 대해, 상기 지수의 개개의 숫자 포지션에 있는 값을 갖는 상기 베이스 값의 지수승을 결정하고, 그리고
    상기 베이스 값들의 지수승들을 상기 지수의 개개의 숫자 포지션들에 있는 값들과 함께 곱함으로써,
    상기 비신뢰 서버에 저장된 지수를 갖는 상기 그룹 엘리먼트의 지수승을 결정하도록 구성되는, 시스템.
  17. 제10항 또는 제11항에 있어서,
    상기 결과는 질의된 엘리먼트와 연관되는, 시스템.
  18. 제10항 또는 제11항에 있어서,
    상기 클라이언트 디바이스는, 상기 모듈러스의 소인수 분해를 상기 비신뢰 서버에 결코 드러내지 않는, 시스템.
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
KR1020217040496A 2019-05-14 2019-12-10 비공개 그룹의 지수승 아웃소싱 KR102384913B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/411,646 US11005654B2 (en) 2019-05-14 2019-05-14 Outsourcing exponentiation in a private group
US16/411,646 2019-05-14
PCT/US2019/065563 WO2020231471A1 (en) 2019-05-14 2019-12-10 Outsourcing exponentiation in a private group

Publications (2)

Publication Number Publication Date
KR20220002668A KR20220002668A (ko) 2022-01-06
KR102384913B1 true KR102384913B1 (ko) 2022-04-08

Family

ID=69173395

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217040496A KR102384913B1 (ko) 2019-05-14 2019-12-10 비공개 그룹의 지수승 아웃소싱

Country Status (7)

Country Link
US (2) US11005654B2 (ko)
EP (1) EP3963820A1 (ko)
JP (1) JP7133728B2 (ko)
KR (1) KR102384913B1 (ko)
CN (1) CN114128208B (ko)
TW (2) TWI783571B (ko)
WO (1) WO2020231471A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112650451B (zh) * 2020-12-28 2023-06-09 杭州趣链科技有限公司 查找网络服务器的优化方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020095452A1 (en) 2001-01-17 2002-07-18 Perkins Gregory Michael Efficient greatest common divisor algorithm using multiprecision arithmetic
US20030074584A1 (en) 1999-02-27 2003-04-17 Alonzo Ellis System and method for maintaining N number of simultaneous cryptographic sessions using a distributed computing environment
US20050255848A1 (en) 2004-05-11 2005-11-17 Opnet Technologies, Inc. Fuzzy routing
US20090193000A1 (en) 2005-05-19 2009-07-30 Zulfikar Amin Ramzan Method and apparatus for communication efficient private information retrieval and oblivious transfer

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282290B1 (en) * 1997-03-28 2001-08-28 Mykotronx, Inc. High speed modular exponentiator
DE10024325B4 (de) 2000-05-17 2005-12-15 Giesecke & Devrient Gmbh Kryptographisches Verfahren und kryptographische Vorrichtung
US7051199B1 (en) 2000-06-19 2006-05-23 Xerox Corporation System, method and article of manufacture for providing cryptographic services utilizing a network
US7421583B1 (en) 2000-06-19 2008-09-02 Xerox Corp System, method and article of manufacture for determining a price of cryptograph IC services based on a computational burden thereof
US6990468B1 (en) 2000-06-19 2006-01-24 Xerox Corporation System, method and article of manufacture for cryptoserver-based auction
US7016494B2 (en) * 2001-03-26 2006-03-21 Hewlett-Packard Development Company, L.P. Multiple cryptographic key precompute and store
US7721089B2 (en) 2003-05-21 2010-05-18 Ntt Docomo, Inc. Broadcast encryption using RSA
US7620625B2 (en) 2004-05-20 2009-11-17 Ntt Docomo, Inc. Method and apparatus for communication efficient private information retrieval and oblivious transfer
US7730319B2 (en) 2004-08-27 2010-06-01 Ntt Docomo, Inc. Provisional signature schemes
US7266692B2 (en) 2004-12-17 2007-09-04 Ntt Docomo, Inc. Use of modular roots to perform authentication including, but not limited to, authentication of validity of digital certificates
US7315941B2 (en) 2004-12-17 2008-01-01 Ntt Docomo Inc. Multi-certificate revocation using encrypted proof data for proving certificate's validity or invalidity
US8132006B2 (en) 2005-05-03 2012-03-06 Ntt Docomo, Inc. Cryptographic authentication and/or establishment of shared cryptographic keys, including, but not limited to, password authenticated key exchange (PAKE)
US9813415B2 (en) * 2007-04-02 2017-11-07 Abdul Rahman Syed Ibrahim Abdul Hameed Khan System and method of generating and using bilaterally generated variable instant passwords
CN102474413B (zh) 2009-12-24 2015-11-25 Nds有限公司 私钥压缩
KR101166129B1 (ko) * 2011-05-31 2012-07-23 서울대학교산학협력단 사전계산 테이블을 이용한 이산대수 계산 방법 및 그 장치
JP6417727B2 (ja) * 2014-06-09 2018-11-07 富士通株式会社 情報集約システム、プログラム、および方法
WO2016138614A1 (en) * 2015-03-02 2016-09-09 Microsoft Technology Licensing, Llc Management of database queries against large datasets
US10089500B2 (en) * 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions
US20170293913A1 (en) * 2016-04-12 2017-10-12 The Governing Council Of The University Of Toronto System and methods for validating and performing operations on homomorphically encrypted data
US20180115535A1 (en) 2016-10-24 2018-04-26 Netflix, Inc. Blind En/decryption for Multiple Clients Using a Single Key Pair
CN110326253B (zh) 2016-12-30 2021-11-09 罗伯特·博世有限公司 用于对加密数据进行模糊关键字搜索的方法和系统
US10044509B1 (en) 2017-08-14 2018-08-07 Fmr Llc Method for encrypting and storing data
US11258861B2 (en) * 2018-06-29 2022-02-22 Intel Corporation Secure reporting of platform state information to a remote server
US10942909B2 (en) * 2018-09-25 2021-03-09 Salesforce.Com, Inc. Efficient production and consumption for data changes in a database under high concurrency
CN109740376B (zh) * 2018-12-21 2020-11-13 哈尔滨工业大学(深圳) 基于近邻查询的位置隐私保护方法、系统、设备及介质
US11615301B2 (en) * 2019-09-03 2023-03-28 Microsoft Technology Licensing, Llc Lossless exponent and lossy mantissa weight compression for training deep neural networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030074584A1 (en) 1999-02-27 2003-04-17 Alonzo Ellis System and method for maintaining N number of simultaneous cryptographic sessions using a distributed computing environment
US20020095452A1 (en) 2001-01-17 2002-07-18 Perkins Gregory Michael Efficient greatest common divisor algorithm using multiprecision arithmetic
US20050255848A1 (en) 2004-05-11 2005-11-17 Opnet Technologies, Inc. Fuzzy routing
US20090193000A1 (en) 2005-05-19 2009-07-30 Zulfikar Amin Ramzan Method and apparatus for communication efficient private information retrieval and oblivious transfer

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Osmanbey Uzunkol 외 2명, Hide the Modulus: A Secure Non-Interactive Fully Verifiable Delegation Scheme for Modular Exponentiations via CRT, ISC 2018 (2018.)

Also Published As

Publication number Publication date
US20210234688A1 (en) 2021-07-29
US11943352B2 (en) 2024-03-26
US11005654B2 (en) 2021-05-11
JP2022534364A (ja) 2022-07-29
EP3963820A1 (en) 2022-03-09
CN114128208A (zh) 2022-03-01
TW202042053A (zh) 2020-11-16
TW202141262A (zh) 2021-11-01
JP7133728B2 (ja) 2022-09-08
TWI783571B (zh) 2022-11-11
US20200366482A1 (en) 2020-11-19
TWI736065B (zh) 2021-08-11
KR20220002668A (ko) 2022-01-06
CN114128208B (zh) 2024-05-17
WO2020231471A1 (en) 2020-11-19

Similar Documents

Publication Publication Date Title
US20180212758A1 (en) Secure Probabilistic Analytics Using an Encrypted Analytics Matrix
CN110417726A (zh) 一种密钥管理方法及相关设备
Pitchai et al. Searchable encrypted data file sharing method using public cloud service for secure storage in cloud computing
US20230185960A1 (en) Private Information Retrieval with Sublinear Public-Key Operations
CN115801220A (zh) 加速设备、计算系统及加速方法
KR102384913B1 (ko) 비공개 그룹의 지수승 아웃소싱
Hu et al. Efficient parallel secure outsourcing of modular exponentiation to cloud for IoT applications
Markovskyi et al. Secure modular exponentiation in cloud systems
WO2023197995A1 (zh) 同态加密操作方法、装置和电子设备
Bardis Secure, green implementation of modular arithmetic operations for IoT and cloud applications
Jahani et al. Efficient big integer multiplication and squaring algorithms for cryptographic applications
KR102424856B1 (ko) Rlwe 암호문들의 압축 및 불확정적 확장
Wang et al. EPSLP: Efficient and privacy-preserving single-layer perceptron learning in cloud computing
Sun et al. How to compute modular exponentiation with large operators based on the right-to-left binary algorithm
JP7331951B2 (ja) 秘密平方根計算システム、秘密正規化システム、それらの方法、秘密計算装置、およびプログラム
Bahadori et al. A programmable SoC implementation of the DGK cryptosystem for privacy-enhancing technologies
US20230085239A1 (en) Querying fully homomorphic encryption encrypted databases using client-side preprocessing or post-processing
Dams et al. WIDESEAS: A lattice-based PIR scheme implemented in EncryptedQuery
KR20230144435A (ko) 동형 암호 연산 장치 및 방법
Tordable MapReduce for Integer Factorization
US20130148809A1 (en) Computing the eth root of a number using a variant of the rsa algorithm (for even e&#39;s)
Jia et al. Big Data Security and Privacy Protection Policy in Cloud Computing Environment
Basu et al. Hypercubes and private information retrieval
Adiono et al. A Low Latency and Resource Efficient Scalable RSA Cryptoprocessor Architecture
CN118118164A (zh) 数据保护方法、基于纵向联邦学习模型的预测方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant