KR20220157843A - Method and apparatus of modulus refresh in homomorhpic encryption - Google Patents

Method and apparatus of modulus refresh in homomorhpic encryption Download PDF

Info

Publication number
KR20220157843A
KR20220157843A KR1020210112965A KR20210112965A KR20220157843A KR 20220157843 A KR20220157843 A KR 20220157843A KR 1020210112965 A KR1020210112965 A KR 1020210112965A KR 20210112965 A KR20210112965 A KR 20210112965A KR 20220157843 A KR20220157843 A KR 20220157843A
Authority
KR
South Korea
Prior art keywords
ciphertext
modulus
processor
generating
refresh
Prior art date
Application number
KR1020210112965A
Other languages
Korean (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 삼성전자주식회사
Priority to US17/678,596 priority Critical patent/US11722290B2/en
Publication of KR20220157843A publication Critical patent/KR20220157843A/en

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/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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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)
  • Advance Control (AREA)

Abstract

A modulus refresh method and apparatus are disclosed. In the modulus refresh method of ciphertext in homomorphic encryption that handles integers and real numbers, the modulus refresh method according to one embodiment comprises the steps of: receiving a first ciphertext corresponding to a first modulus; generating a second ciphertext by performing a blind rotation operation on the first ciphertext; and generating a target ciphertext corresponding to a second modulus greater than the first modulus based on the first ciphertext and the second ciphertext.

Description

동형 암호에서 모듈러스 리프레시 방법 및 장치{METHOD AND APPARATUS OF MODULUS REFRESH IN HOMOMORHPIC ENCRYPTION}Modulus refresh method and apparatus in homomorphic encryption

아래 실시예들은 정수 또는 실수를 지원하는 동형 암호에서 모듈러스 리프레시 방법 및 장치에 관한 것이다.The embodiments below relate to a method and apparatus for modulus refresh in homomorphic encryption supporting integer or real numbers.

동형 암호(homomorphic encryption)는 암호화된 데이터 사이에서 임의의 연산을 가능하게 하는 유망한 암호화 방법이다. 동형 암호를 활용하면 암호화된 데이터를 복호화하지 않고, 암호화된 상태에서 임의의 연산을 수행할 수 있을 뿐만 아니라, 격자 상의 수학적 난제를 기반(lattice-based)으로 하여 양자 알고리즘에 내성(resistant)이 있어 안전하다.Homomorphic encryption is a promising encryption method that allows arbitrary operations between encrypted data. Homomorphic cryptography can perform arbitrary operations in an encrypted state without decrypting encrypted data, and is resistant to quantum algorithms because it is based on a mathematical puzzle on a lattice. safe.

동형 암호에서 암호화된 데이터 사이의 연산을 수행하는 과정에서 암호문인 사이퍼텍스트에 대응하는 모듈러스가 감소하기 때문에 모듈러스를 복원하는 모듈러스 리프레시 과정이 요구된다.Since the modulus corresponding to the ciphertext, which is ciphertext, decreases in the process of performing an operation between encrypted data in homomorphic encryption, a modulus refresh process for restoring the modulus is required.

종래의 동형 암호에서의 모듈러스 리프레시 방식은 복호화 알고리즘을 동형 연산 가능한 회로로 표시하는 방식이었다. 종래의 모듈러스 리프레시 방식에는 모듈러스 연산을 사인 함수로 근사한 뒤 사인 함수에 근접한 근사 다항식 연산을 하는 방법, 모듈러스 연산을 사인 함수 근사 없이 낮은 최소 오차와 분산을 가지도록 직접적으로 근사 연산하는 방법 등이 있다.A modulus refresh method in a conventional homomorphic encryption is a method of expressing a decryption algorithm as a circuit capable of performing homomorphic operations. Conventional modulus refresh methods include a method of approximating the modulus operation with a sine function and then performing an approximation polynomial operation close to the sine function, a method of directly approximating the modulus operation to have a low minimum error and variance without approximating the sine function, and the like.

종래의 모듈러스 리프레시 방식은 근사 다항식으로 인해 출력 값에 대한 정확도(precision bit)가 기존 사이퍼텍스트보다 떨어지는 문제가 발생하며 큰 차수의 근사 다항식을 이용하면 모듈러스 리프레시 과정에서 획득된 모듈러스의 값이 크지 않다.The conventional modulus refresh method has a problem that the precision bit of the output value is lower than that of the existing ciphertext due to the approximation polynomial, and the modulus value obtained in the modulus refresh process is not large when a large order approximation polynomial is used.

따라서, 모듈러스 리프레시 결과 획득된 모듈러스 함수를 연산하기위한 직접적인 방법을 통해 높은 모듈러스와 높은 정확도를 달성할 수 있는 방법이 요구된다.Therefore, a method capable of achieving high modulus and high accuracy through a direct method for calculating a modulus function obtained as a result of modulus refresh is required.

정수와 실수를 다루는 동형 암호(homomorphic encryption)에서 사이퍼텍스트의 모듈러스 리프레시 방법에 있어서, 일 실시예에 따른 모듈러스 리프레시 방법은, 제1 모듈러스에 대응하는 제1 사이퍼텍스트를 수신하는 단계와, 상기 제1 사이퍼텍스트에 블라인드 로테이션(blind rotation) 연산을 수행함으로써 제2 사이퍼텍스트를 생성하는 단계와, 상기 제1 사이퍼텍스트 및 상기 제2 사이퍼텍스트에 기초하여 상기 제1 모듈러스보다 큰 제2 모듈러스에 대응하는 타겟 사이퍼텍스트를 생성하는 단계를 포함한다.A ciphertext modulus refresh method in homomorphic encryption that handles integers and real numbers, the modulus refresh method according to an embodiment includes the steps of receiving a first ciphertext corresponding to a first modulus; Generating a second ciphertext by performing a blind rotation operation on ciphertext, and a target corresponding to a second modulus greater than the first modulus based on the first ciphertext and the second ciphertext and generating the ciphertext.

상기 제2 사이퍼텍스트를 생성하는 단계는, 상기 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하는 단계와, 전처리가 수행된 제1 사이퍼텍스트에 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계를 포함할 수 있다.The generating of the second ciphertext may include performing preprocessing based on an isomorphic operation on the first ciphertext based on the first modulus and a polynomial order of the first ciphertext, and performing preprocessing based on isomorphic operation on the first ciphertext. and generating the second ciphertext by performing the blind rotation operation on the ciphertext.

상기 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하는 단계는, 상기 제1 모듈러스를 상기 다항식 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하는 단계와, 상기 변환된 제1 모듈러스에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성하는 단계와, 상기 변환된 제1 모듈러스, 상기 제3 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계를 포함할 수 있다.The step of performing isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext, wherein the first modulus is converted based on the polynomial order, and the converted first calculating a modulus, generating a third ciphertext by converting the first ciphertext based on the converted first modulus, and generating the third ciphertext based on the converted first modulus and the third ciphertext and performing pre-processing on the first ciphertext.

상기 변환된 제1 모듈러스, 상기 변환된 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계는, 상기 제1 사이퍼텍스트와 상기 제3 사이퍼텍스트의 차이를 상기 변환된 제1 모듈러스로 나눔으로써 상기 전처리를 수행하는 단계를 포함할 수 있다.The step of performing pre-processing on the first ciphertext based on the converted first modulus and the converted first ciphertext, wherein the difference between the first ciphertext and the third ciphertext is calculated as the converted first ciphertext. It may include performing the preprocessing by dividing by .

상기 동형 연산에 기반한 전처리가 수행된 제1 사이퍼텍스트에 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계는, 상기 동형 연산에 기반한 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE(learning with error) 벡터를 추출하는 단계와, 상기 LWE 벡터에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계를 포함할 수 있다.In the step of generating the second ciphertext by performing the blind rotation operation on the first ciphertext preprocessed based on the isomorphic operation, based on the coefficients of the first ciphertext preprocessed based on the isomorphic operation, The method may include extracting a learning with error (LWE) vector and generating the second ciphertext by performing the blind rotation operation based on the LWE vector.

상기 LWE 벡터에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계는, 상기 제1 사이퍼텍스트를 생성하는데 사용된 비밀키(secret key)에 기초하여 암호 상수를 생성하는 단계와, 상기 암호 상수에 기초하여 블라인드 로테이션 키를 생성하는 단계와, 상기 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계를 포함할 수 있다.Generating the second ciphertext by performing the blind rotation operation based on the LWE vector includes generating an encryption constant based on a secret key used to generate the first ciphertext; , generating a blind rotation key based on the cryptographic constant, and generating the second ciphertext by performing the blind rotation operation based on the blind rotation key.

상기 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계는, 상기 제1 사이퍼텍스트의 다항식의 차수에 따라 블라인드 로테이션 키에 대응하는 복수의 블라인드 로테이션 사이퍼텍스트를 생성하는 단계와, 상기 복수의 블라인드 로테이션 사이퍼텍스트를 결합함으로써 상기 제2 사이퍼텍스트를 생성하는 단계를 포함할 수 있다.The generating of the second ciphertext by performing the blind rotation operation based on the blind rotation key may include generating a plurality of blind rotation ciphertexts corresponding to the blind rotation key according to the degree of a polynomial of the first ciphertext. and generating the second ciphertext by combining the plurality of blind rotation ciphertexts.

상기 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하는 단계는, 상기 제1 모듈러스를 상기 다항식의 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하는 단계와, 상기 변환된 제1 모듈러스에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성하는 단계와, 상기 제3 사이퍼텍스트에 플레인텍스트의 개수에 기초한 간격으로 회전 연산(rotation operation)을 수행함으로써 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계를 포함할 수 있다.The step of performing isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and the order of the polynomial of the first ciphertext, by converting the first modulus based on the order of the polynomial, Calculating 1 modulus, generating third ciphertext by converting the first ciphertext based on the converted first modulus, and rotating the third ciphertext at intervals based on the number of plain texts and performing pre-processing on the first ciphertext by performing a rotation operation.

상기 제1 모듈러스, 상기 변환된 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하는 단계는, 상기 제1 모듈러스 및 상기 다항식의 차수에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 변환된 제1 사이퍼텍스트를 생성하는 단계와, 상기 변환된 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계를 포함할 수 있다.The step of performing isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and the converted first ciphertext, to obtain the first ciphertext based on the first modulus and the order of the polynomial. The method may include generating a converted first ciphertext by converting, and performing pre-processing on the first ciphertext based on the converted first ciphertext.

상기 변환된 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계는, 상기 제1 사이퍼텍스트에 상기 다항식의 차수의 두배를 곱한 값과 상기 변환된 제1 사이퍼텍스트의 차이에 기초하여 상기 전처리를 수행하는 단계를 포함할 수 있다.The step of performing preprocessing on the first ciphertext based on the converted first ciphertext is based on a difference between a value obtained by multiplying the first ciphertext by twice the order of the polynomial and the converted first ciphertext. and performing the pre-processing.

상기 타겟 사이퍼텍스트를 생성하는 단계는, 상기 제1 사이퍼텍스트와 상기 제2 사이퍼텍스트를 더함으로써 상기 타겟 사이퍼텍스트를 생성하는 단계를 포함할 수 있다.The generating of the target ciphertext may include generating the target ciphertext by adding the first ciphertext and the second ciphertext.

정수와 실수를 다루는 동형 암호(homomorphic encryption)에서 사이퍼텍스트의 모듈러스 리프레시 장치에 있어서, 일 실시예에 따른 모듈러스 리프레시 장치는, 제1 모듈러스에 대응하는 제1 사이퍼텍스트를 수신하는 수신기와, 상기 제1 사이퍼텍스트에 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성하고, 상기 제1 사이퍼텍스트 및 상기 제2 사이퍼텍스트에 기초하여 상기 제1 모듈러스보다 큰 제2 모듈러스에 대응하는 타겟 사이퍼텍스트를 생성하는 프로세서를 포함한다.In a ciphertext modulus refresh apparatus in homomorphic encryption that handles integers and real numbers, the modulus refresh apparatus according to an embodiment includes: a receiver for receiving a first ciphertext corresponding to a first modulus; A processor for generating second ciphertext by performing a blind rotation operation on ciphertext, and generating target ciphertext corresponding to a second modulus greater than the first modulus based on the first ciphertext and the second ciphertext includes

상기 프로세서는, 상기 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하고, 전처리가 수행된 제1 사이퍼텍스트에 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성할 수 있다.The processor performs isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext, and performs the blind rotation operation on the preprocessed first ciphertext. By doing so, the second ciphertext can be generated.

상기 프로세서는, 상기 제1 모듈러스를 상기 다항식 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하고, 상기 변환된 제1 모듈러스에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성하고, 상기 변환된 제1 모듈러스, 상기 제3 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행할 수 있다.The processor calculates a transformed first modulus by transforming the first modulus based on the polynomial order, generates a third ciphertext by transforming the first ciphertext based on the transformed first modulus, and , preprocessing may be performed on the first ciphertext based on the converted first modulus and the third ciphertext.

상기 프로세서는, 상기 제1 사이퍼텍스트와 상기 제3 사이퍼텍스트의 차이를 상기 변환된 제1 모듈러스로 나눔으로써 상기 전처리를 수행할 수 있다.The processor may perform the preprocessing by dividing a difference between the first ciphertext and the third ciphertext by the converted first modulus.

상기 프로세서는, 상기 동형 연산에 기반한 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE(Learning With Error) 벡터를 추출하고, 상기 LWE 벡터에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성할 수 있다.The processor extracts a Learning With Error (LWE) vector based on coefficients of the first ciphertext on which preprocessing based on the isomorphic operation has been performed, and performs the blind rotation operation based on the LWE vector to obtain the second cipher text can be generated.

상기 프로세서는, 상기 제1 사이퍼텍스트를 생성하는데 사용된 비밀키(secret key)에 기초하여 암호 상수를 생성하고, 상기 암호 상수에 기초하여 블라인드 로테이션 키를 생성하고, 상기 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성할 수 있다.The processor generates an encryption constant based on a secret key used to generate the first ciphertext, generates a blind rotation key based on the encryption constant, and generates the blind rotation key based on the blind rotation key. The second ciphertext may be generated by performing a blind rotation operation.

상기 프로세서는, 상기 제1 사이퍼텍스트의 다항식의 차수에 따라 블라인드 로테이션 키에 대응하는 복수의 블라인드 로테이션 사이퍼텍스트를 생성하고, 상기 복수의 블라인드 로테이션 사이퍼텍스트를 결합함으로써 상기 제2 사이퍼텍스트를 생성할 수 있다.The processor may generate a plurality of blind rotation ciphertexts corresponding to a blind rotation key according to a degree of a polynomial of the first ciphertext, and generate the second ciphertext by combining the plurality of blind rotation ciphertexts. have.

상기 프로세서는, 상기 제1 모듈러스를 상기 다항식의 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하고, 상기 변환된 제1 모듈러스에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성하고, 상기 제3 사이퍼텍스트에 플레인텍스트의 개수에 기초한 간격으로 회전 연산(rotation operation)을 수행함으로써 상기 제1 사이퍼텍스트에 전처리를 수행할 수 있다.The processor calculates a transformed first modulus by transforming the first modulus based on the degree of the polynomial, and generates a third ciphertext by transforming the first ciphertext based on the transformed first modulus. and pre-processing the first ciphertext by performing a rotation operation on the third ciphertext at intervals based on the number of plain texts.

상기 프로세서는, 상기 제1 모듈러스 및 상기 다항식의 차수에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 변환된 제1 사이퍼텍스트를 생성하고, 상기 변환된 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행할 수 있다.The processor generates a converted first ciphertext by transforming the first ciphertext based on the first modulus and the degree of the polynomial, and generates the first ciphertext based on the converted first ciphertext. Pre-processing can be done.

상기 프로세서는, 상기 제1 사이퍼텍스트에 상기 다항식의 차수의 두배를 곱한 값과 상기 변환된 제1 사이퍼텍스트의 차이에 기초하여 상기 전처리를 수행할 수 있다.The processor may perform the preprocessing based on a difference between a value obtained by multiplying the first ciphertext by twice the degree of the polynomial and the converted first ciphertext.

상기 프로세서는, 상기 제1 사이퍼텍스트와 상기 제2 사이퍼텍스트를 더함으로써 상기 타겟 사이퍼텍스트를 생성할 수 있다.The processor may generate the target ciphertext by adding the first ciphertext and the second ciphertext.

도 1은 일 실시예에 따른 모듈러스 리프레시 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 모듈러스 리프레시 장치의 모듈러스 리프레시 동작의 흐름도를 나타낸다.
도 3은 도 2의 모듈러스 리프레시 동작을 이용한 암호문 생성의 동작의 구현의 일 예를 나타낸다.
도 4는 도 2의 모듈러스 리프레시 동작을 이용한 암호문 생성의 동작의 구현의 다른 예를 나타낸다.
도 5는 도 2의 모듈러스 리프레시 동작을 이용한 암호문 생성의 동작의 구현의 또 다른 예를 나타낸다.
도 6은 도 1에 도시된 모듈러스 리프레시 장치의 동작의 흐름도를 나타낸다.
1 shows a schematic block diagram of a modulus refresh device according to an embodiment.
FIG. 2 is a flowchart of a modulus refresh operation of the modulus refresh device shown in FIG. 1 .
FIG. 3 shows an example of implementation of an operation of generating ciphertext using the modulus refresh operation of FIG. 2 .
FIG. 4 shows another example of implementing an operation of generating ciphertext using the modulus refresh operation of FIG. 2 .
FIG. 5 shows another example of implementing an operation of generating ciphertext using the modulus refresh operation of FIG. 2 .
FIG. 6 is a flowchart of an operation of the modulus refresh device shown in FIG. 1 .

이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. However, since various changes can be made to the embodiments, the scope of the patent application is not limited or limited by these embodiments. It should be understood that all changes, equivalents or substitutes to the embodiments are included within the scope of rights.

실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Terms used in the examples are used only for descriptive purposes and should not be construed as limiting. Singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, terms such as "include" or "have" are intended to designate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other features It should be understood that the presence or addition of numbers, steps, operations, components, parts, or combinations thereof is not precluded.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person of ordinary skill in the art to which the embodiment belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related art, and unless explicitly defined in the present application, they should not be interpreted in an ideal or excessively formal meaning. don't

또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.In addition, in the description with reference to the accompanying drawings, the same reference numerals are given to the same components regardless of reference numerals, and overlapping descriptions thereof will be omitted. In describing the embodiment, if it is determined that a detailed description of a related known technology may unnecessarily obscure the gist of the embodiment, the detailed description will be omitted.

또한, 실시 예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다. In addition, in describing the components of the embodiment, terms such as first, second, A, B, (a), and (b) may be used. These terms are only used to distinguish the component from other components, and the nature, order, or order of the corresponding component is not limited by the term. When an element is described as being “connected,” “coupled to,” or “connected” to another element, that element may be directly connected or connected to the other element, but there may be another element between the elements. It should be understood that may be "connected", "coupled" or "connected".

어느 하나의 실시 예에 포함된 구성요소와, 공통적인 기능을 포함하는 구성요소는, 다른 실시 예에서 동일한 명칭을 사용하여 설명하기로 한다. 반대되는 기재가 없는 이상, 어느 하나의 실시 예에 기재한 설명은 다른 실시 예에도 적용될 수 있으며, 중복되는 범위에서 구체적인 설명은 생략하기로 한다.Components included in one embodiment and components having common functions will be described using the same names in other embodiments. Unless stated to the contrary, descriptions described in one embodiment may be applied to other embodiments, and detailed descriptions will be omitted to the extent of overlap.

도 1은 일 실시예에 따른 모듈러스 리프레시 장치의 개략적인 블록도를 나타낸다.1 shows a schematic block diagram of a modulus refresh device according to an embodiment.

도 1을 참조하면, 모듈러스 리프레시(modulus refresh) 장치(10)는 데이터에 대응하는 사이퍼텍스트에 대하여 모듈러스 리프레시를 수행할 수 있다. 모듈러스 리프레시 장치(10)는 데이터의 암호화를 통해 생성된 암호화된 데이터를 수신할 수 있다. 이하에서, 암호화된 데이터 또는 암호문은 사이퍼텍스트(ciphertext)로 지칭될 수 있다. 사이퍼텍스트는 다항식 또는 다항식을 포함하는 벡터의 형태를 가질 수 있다. 암호화되기 전의 데이터 또는 메시지는 플레인텍스트로 지칭될 수 있다.Referring to FIG. 1 , a modulus refresh apparatus 10 may perform modulus refresh on ciphertext corresponding to data. The modulus refresh device 10 may receive encrypted data generated through data encryption. In the following, encrypted data or ciphertext may be referred to as ciphertext. Ciphertext can take the form of polynomials or vectors containing polynomials. Data or messages before being encrypted may be referred to as plaintext.

모듈러스 리프레시 장치(10)는 정수와 실수를 다루는 동형 암호를 이용하여 암호화된 데이터를 복호화(decryption) 없이도 연산할 수 있는 암호 기술을 제공할 수 있다. 예를 들어, 모듈러스 리프레시 장치(10)는 동형 암호를 이용하여 암호화된 상태에서 연산한 결과를 복호화함으로써 플레인텍스트(plaintext) 상태의 데이터를 연산한 결과와 동일한 결과가 도출될 수 있다. 모듈러스 리프레시 장치(10)는 임의의 실수 또는 복소수에 대한 동형 암호 연산을 제공할 수 있다.The modulus refresh device 10 may provide an encryption technique capable of calculating encrypted data without decryption by using homomorphic encryption dealing with integers and real numbers. For example, the modulus refresh device 10 may decrypt an operation result in an encrypted state using homomorphic encryption, thereby obtaining a result identical to a result of calculating data in a plaintext state. The modulus refresh device 10 may provide homomorphic cryptographic operations on arbitrary real or complex numbers.

모듈러스 리프레시 장치(10)는 동형 암호(homomorphic encryption)에 필요한 모듈러스 리프레시(modulus refresh)를 수행할 수 있다. 동형 암호를 이용하여 생성된 사이퍼텍스트를 이용하여 연산을 수행할 경우, 사이퍼텍스트에 대응되는 모듈러스 값이 작아질 수 있다. 모듈러스 리프레시는 작아진 모듈러스를 더 큰 값의 모듈러스로 변경함으로써 더 많은 사이퍼텍스트 연산을 수행할 수 있게 하는 동작을 의미할 수 있다.The modulus refresh device 10 may perform modulus refresh required for homomorphic encryption. When an operation is performed using ciphertext generated using homomorphic encryption, a modulus value corresponding to the ciphertext may decrease. Modulus refresh may refer to an operation enabling more ciphertext operations to be performed by changing the reduced modulus to a larger modulus.

모듈러스 리프레시 장치(10))는 동형 암호를 이용하는 임의의 장치와 서비스에서 입력값을 암호화하는 암호화 과정을 수행할 수 있다. 모듈러스 리프레시 장치(10)는 실수로 이루어진 플레인텍스트의 사이퍼텍스트를 연산하는 근사 동형 암호를 이용한 암호화를 수행할 수 있다. 모듈러스 리프레시 장치(10)는 실수(real number)로 이루어진 플레인텍스트(plain text)의 암호문 연산을 지원하는 RLWE(ring learning with error) 기반 근사 동형 암호를 이용한 암호화 동작을 수행할 수 있다. The modulus refresh device 10 may perform an encryption process of encrypting an input value in any device and service using homomorphic encryption. The modulus refresh device 10 may perform encryption using an approximate homomorphic encryption that calculates ciphertext of plaintext made of real numbers. The modulus refresh device 10 may perform an encryption operation using ring learning with error (RLWE)-based approximate homomorphic encryption that supports ciphertext operation of plain text composed of real numbers.

모듈러스 리프레시 장치(10)는 프라이버시 보존 기계 학습(privacy preserving machine learning(PPML)) 및 응용 서비스에서 입력값을 암호화하는 암호화 과정을 수행할 수 있다. 모듈러스 리프레시 장치(10)는 모듈러스 리프레시를 수행한 후 오차를 크게 증가시키지 않음으로써 높은 정확도를 요구하는 암호화 서비스에 적용될 수 있다. The modulus refresh device 10 may perform an encryption process of encrypting an input value in privacy preserving machine learning (PPML) and application services. The modulus refresh device 10 does not greatly increase an error after performing modulus refresh, so it can be applied to an encryption service requiring high accuracy.

모듈러스 리프레시 장치(10)는 레벨 소모 없이 사이퍼텍스트의 모듈러스 리프레시를 수행할 수 있다. 모듈러스 리프레시 장치(10)는 모듈러스 리프레시를 수행한 이후에도 사이퍼텍스트를 이용한 연산에서 정확한 결과를 획득할 수 있다. 모듈러스 리프레시 장치(10)는 레벨 소모가 없기 때문에 암호화 과정에서 낮은 차수의 다항식을 사용할 수 있다.The modulus refresh device 10 may perform modulus refresh of ciphertext without level consumption. The modulus refresh device 10 may obtain an accurate result in an operation using ciphertext even after performing modulus refresh. Since the modulus refresh device 10 does not consume a level, it is possible to use a low-order polynomial in an encryption process.

모듈러스 리프레시 장치(10)는 칩(chip) 형태로 구현되어 동형 암호를 활용하는 하드웨어 가속기에 탑재할 수 있다. 예를 들어, 모듈러스 리프레시 장치(10)는 PC(personal computer), 데이터 서버, 또는 휴대용 장치 내에 구현될 수 있다.The modulus refresh device 10 is implemented in the form of a chip and can be mounted in a hardware accelerator utilizing homomorphic encryption. For example, the modulus refresh device 10 may be implemented in a personal computer (PC), data server, or portable device.

휴대용 장치는 랩탑(laptop) 컴퓨터, 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 디바이스(mobile internet device(MID)), PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), e-북(e-book), 또는 스마트 디바이스(smart device)로 구현될 수 있다. 스마트 디바이스는 스마트 와치(smart watch), 스마트 밴드(smart band), 또는 스마트 링(smart ring)으로 구현될 수 있다.Portable devices include laptop computers, mobile phones, smart phones, tablet PCs, mobile internet devices (MIDs), personal digital assistants (PDAs), and enterprise digital assistants (EDAs). , digital still camera, digital video camera, portable multimedia player (PMP), personal navigation device or portable navigation device (PND), handheld game console, e-book ( e-book) or a smart device. A smart device may be implemented as a smart watch, a smart band, or a smart ring.

모듈러스 리프레시 장치(10)는 수신기(100) 및 프로세서(200)를 포함한다. 모듈러스 리프레시 장치(10)는 메모리(300)를 더 포함할 수 있다.The modulus refresh device 10 includes a receiver 100 and a processor 200 . The modulus refresh device 10 may further include a memory 300 .

수신기(100)는 수신 인터페이스를 포함할 수 있다. 수신기(100)는 데이터를 수신할 수 있다. 수신기(100)는 플레인텍스트(plaintext) 또는 사이퍼텍스트(ciphertext)를 수신할 수 있다. 사이퍼텍스트는 사이퍼텍스트에 대응하는 모듈러스를 가질 수 있다. 수신기(100)는 수신한 플레인 텍스트 또는 사이퍼텍스트를 프로세서(200)로 출력할 수 있다.The receiver 100 may include a receiving interface. The receiver 100 may receive data. The receiver 100 may receive plaintext or ciphertext. Ciphertext may have a modulus corresponding to the ciphertext. The receiver 100 may output the received plain text or cipher text to the processor 200 .

프로세서(200)는 메모리(300)에 저장된 데이터를 처리할 수 있다. 프로세서(200)는 메모리(300)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(200)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.The processor 200 may process data stored in the memory 300 . The processor 200 may execute computer readable code (eg, software) stored in the memory 300 and instructions triggered by the processor 200 .

"프로세서(200)"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다."Processor 200" may be a hardware-implemented data processing device having circuitry having a physical structure for executing desired operations. For example, desired operations may include codes or instructions included in a program.

예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.For example, a data processing unit implemented in hardware includes a microprocessor, a central processing unit, a processor core, a multi-core processor, and a multiprocessor. , Application-Specific Integrated Circuit (ASIC), and Field Programmable Gate Array (FPGA).

프로세서(200)는 동형 암호를 이용한 암호화에 필요한 모듈러스 리프레시를 수행할 수 있다. 프로세서(200)는 데이터를 암호화함으로써 생성된 제1 모듈러스에 대응하는 제1 사이퍼텍스트를 수신할 수 있다.The processor 200 may perform modulus refresh required for encryption using homomorphic encryption. The processor 200 may receive a first ciphertext corresponding to a first modulus generated by encrypting data.

프로세서(200)는 제1 사이퍼텍스트에 블라인드 로테이션(blind rotation) 연산(예: LUT(look up table) 연산)을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 제1 모듈러스 및 제1 사이퍼텍스트의 다항식 차수에 기초하여 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행할 수 있다. 프로세서(200)는 제1 모듈러스를 다항식의 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산할 수 있다. 프로세서(200)는 변환된 제1 모듈러스에 기초하여 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 제3 사이퍼텍스트에 플레인텍스트의 개수에 기초한 간격으로 회전 연산(rotation operation)을 수행함으로써 제1 사이퍼텍스트에 전처리를 수행할 수 있다. 회전 연산에 대해서는 도 4를 참조하여 자세하게 설명한다.The processor 200 may generate the second ciphertext by performing a blind rotation operation (eg, a look up table (LUT) operation) on the first ciphertext. The processor 200 may perform isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext. The processor 200 may calculate the converted first modulus by converting the first modulus based on the order of the polynomial. The processor 200 may generate third ciphertext by converting the first ciphertext based on the converted first modulus. The processor 200 may perform preprocessing on the first ciphertext by performing a rotation operation on the third ciphertext at intervals based on the number of plaintexts. The rotation calculation will be described in detail with reference to FIG. 4 .

프로세서(200)는 제1 모듈러스를 다항식 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산할 수 있다. 프로세서(200)는 변환된 제1 모듈러스에 기초하여 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성할 수 있다.The processor 200 may calculate the converted first modulus by transforming the first modulus based on the order of the polynomial. The processor 200 may generate third ciphertext by converting the first ciphertext based on the converted first modulus.

프로세서(200)는 변환된 제1 모듈러스, 제3 사이퍼텍스트에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다. 프로세서(200)는 제1 사이퍼텍스트와 제3 사이퍼텍스트의 차이를 변환된 제1 모듈러스로 나눔으로써 전처리를 수행할 수 있다. The processor 200 may perform preprocessing on the first ciphertext based on the converted first modulus and the third ciphertext. The processor 200 may perform preprocessing by dividing the difference between the first ciphertext and the third ciphertext by the converted first modulus.

프로세서(200)는 제1 모듈러스 및 다항식의 차수에 기초하여 제1 사이퍼텍스트를 변환함으로써 변환된 제1 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 변환된 제1 사이퍼텍스트에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다. 프로세서(200)는 제1 사이퍼텍스트에 다항식의 차수의 두 배를 곱한 값과 변환된 제1 사이퍼텍스트의 차이에 기초하여 전처리를 수행할 수 있다.The processor 200 may generate the converted first ciphertext by transforming the first ciphertext based on the first modulus and the order of the polynomial. The processor 200 may perform preprocessing on the first ciphertext based on the converted first ciphertext. The processor 200 may perform preprocessing based on a difference between a value obtained by multiplying the first ciphertext by twice the degree of the polynomial and the converted first ciphertext.

프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트에 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE(learning with error) 벡터를 추출할 수 있다. LWE 벡터를 추출하는 과정은 도 3을 참조하여 보다 자세하게 설명한다.The processor 200 may generate the second ciphertext by performing a blind rotation operation on the preprocessed first ciphertext. The processor 200 may extract a learning with error (LWE) vector based on coefficients of the first ciphertext on which preprocessing is performed. The process of extracting the LWE vector will be described in detail with reference to FIG. 3 .

프로세서(200)는 LWE 벡터에 기초하여 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 제1 사이퍼텍스트를 생성하는데 사용된 비밀키(secret key)에 기초하여 암호 상수를 생성할 수 있다. 프로세서(200)는 암호 상수에 기초하여 블라인드 로테이션 키를 생성할 수 있다. 프로세서(200)는 블라인드 로테이션 키에 기초하여 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다.The processor 200 may generate the second ciphertext by performing a blind rotation operation based on the LWE vector. The processor 200 may generate an encryption constant based on a secret key used to generate the first ciphertext. The processor 200 may generate a blind rotation key based on the cryptographic constant. The processor 200 may generate the second ciphertext by performing a blind rotation operation based on the blind rotation key.

프로세서(200)는 제1 사이퍼텍스트의 다항식의 차수에 따라 블라인드 로테이션 키에 대응하는 복수의 블라인드 로테이션 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 복수의 블라인드 로테이션 사이퍼텍스트를 결합함으로써 제2 사이퍼텍스트를 생성할 수 있다. 블라인드 로테이션 연산은 도 3을 참조하여 보다 자세하게 설명한다.The processor 200 may generate a plurality of blind rotation ciphertexts corresponding to the blind rotation key according to the order of the polynomial of the first ciphertext. The processor 200 may generate the second ciphertext by combining a plurality of blind rotation ciphertexts. The blind rotation operation will be described in more detail with reference to FIG. 3 .

프로세서(200)는 제1 사이퍼텍스트 및 제2 사이퍼텍스트에 기초하여 제1 모듈러스보다 큰 제2 모듈러스에 대응하는 타겟 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 제1 사이퍼텍스트와 제2 사이퍼텍스트를 더함으로써 타겟 사이퍼텍스트를 생성할 수 있다.The processor 200 may generate a target ciphertext corresponding to a second modulus greater than the first modulus based on the first ciphertext and the second ciphertext. The processor 200 may generate the target ciphertext by adding the first ciphertext and the second ciphertext.

메모리(300)는 프로세서(200)에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서(200)의 동작 및/또는 프로세서(200)의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.The memory 300 may store instructions (or programs) executable by the processor 200 . For example, the instructions may include instructions for executing an operation of the processor 200 and/or an operation of each component of the processor 200 .

메모리(300)는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구현될 수 있다.The memory 300 may be implemented as a volatile memory device or a non-volatile memory device.

휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.The volatile memory device may be implemented as dynamic random access memory (DRAM), static random access memory (SRAM), thyristor RAM (T-RAM), zero capacitor RAM (Z-RAM), or twin transistor RAM (TTRAM).

비휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive Bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노 튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM(PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.Non-volatile memory devices include electrically erasable programmable read-only memory (EEPROM), flash memory, magnetic RAM (MRAM), spin-transfer torque (STT)-MRAM (conductive bridging RAM), and conductive bridging RAM (CBRAM). , FeRAM (Ferroelectric RAM), PRAM (Phase change RAM), Resistive RAM (RRAM), Nanotube RRAM (Polymer RAM (PoRAM)), Nano Floating Gate Memory Memory (NFGM)), holographic memory, molecular electronic memory device (Molecular Electronic Memory Device), or Insulator Resistance Change Memory.

도 2는 도 1에 도시된 모듈러스 리프레시 장치의 모듈러스 리프레시 동작의 흐름도를 나타낸다.FIG. 2 is a flowchart of a modulus refresh operation of the modulus refresh device shown in FIG. 1 .

도 2를 참조하면, 프로세서(200)는 동형 암호를 이용한 암호화 과정에서 요구되는 모듈러스 리프레시를 수행할 수 있다. 프로세서(200)는 모듈러스 리프레시를 수행함으로써 모듈러스가 증가된 암호문을 생성할 수 있다.Referring to FIG. 2 , the processor 200 may perform modulus refresh required in an encryption process using homomorphic encryption. The processor 200 may generate ciphertext with increased modulus by performing modulus refresh.

동형 암호의 플레인텍스트 및 사이퍼텍스트는 임의의 정수 q에 대해 계수가 모듈러스(modulus) q 상의 정수인 N차 다항식 형태를 가질 수 있다. N은 1 이상의 정수를 의미할 수 있다. Plaintext and ciphertext of homomorphic encryption can have the form of polynomials of order N where the coefficients are integers on the modulus q for any integer q. N may mean an integer of 1 or more.

동형 연산(homomorphic operation)을 수행할 경우, 사이퍼텍스트의 모듈러스는 작아지기 때문에 반복적인 동형 연산을 수행하기 위해서는 작아진 모듈러스를 큰 값의 모듈러스로 리프레시하는 과정이 필요할 수 있다. When a homomorphic operation is performed, since the modulus of ciphertext decreases, a process of refreshing the reduced modulus to a larger modulus may be required to perform repetitive homomorphic operations.

프로세서(200)는 모듈러스 q 상의 사이퍼텍스트를 입력으로 수신할 수 있다(210). 모듈러스 q 상의 사이퍼텍스트는 도 1에서 설명한 제1 사이퍼텍스트에 대응될 수 있다.The processor 200 may receive ciphertext on modulus q as an input (210). The ciphertext on the modulus q may correspond to the first ciphertext described in FIG. 1 .

프로세서(200)는 초기 사이퍼텍스트(예: 제1 사이퍼텍스트)에 전처리를 수행할 수 있다(220). 예를 들어, 프로세서(200)는 제1 모듈러스 및 제1 사이퍼텍스트의 다항식 차수에 기초하여 제1 사이퍼 텍스트에 전처리를 수행할 수 있다. 전처리 과정은 도 3 내지 도 5의 실시예를 참조하여 자세하게 설명한다.The processor 200 may perform preprocessing on the initial ciphertext (eg, the first ciphertext) (220). For example, the processor 200 may perform preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext. The preprocessing process will be described in detail with reference to the embodiments of FIGS. 3 to 5 .

프로세서(220)는 블라인드 로테이션 연산을 위하여 사이퍼텍스트(예: 제3 사이퍼텍스트)의 전처리를 수행할 수 있다(230). 프로세서(200)는 변환된 제1 모듈러스, 제3 사이퍼텍스트에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다. 다시 말해, 프로세서(200)는 블라인드 로테이션 연산을 수행하기에 적합한 형태로 제1 사이퍼텍스트를 변형할 수 있다.The processor 220 may perform preprocessing of the ciphertext (eg, the third ciphertext) for the blind rotation operation (230). The processor 200 may perform preprocessing on the first ciphertext based on the converted first modulus and the third ciphertext. In other words, the processor 200 may transform the first ciphertext into a form suitable for performing a blind rotation operation.

프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트에 블라인드 로테이션 연산(예: 동형 LUT 연산)을 수행할 수 있다(240). 프로세서(200)는 블라인드 로테이션 연산이 수행된 제1 사이퍼텍스트를 결합(또는, 리팩(repack))함으로써 제2 사이퍼텍스트를 생성할 수 있다(250).The processor 200 may perform a blind rotation operation (eg, isomorphic LUT operation) on the preprocessed first ciphertext (240). The processor 200 may generate a second ciphertext by combining (or repacking) the first ciphertext on which the blind rotation operation is performed (250).

프로세서(200)는 제2 사이퍼텍스트를 이용하여 제1 사이퍼텍스트(또는, 제3 사이퍼텍스트)를 보정할 수 있다(260). 프로세서(200)는 q보다 큰 Q에 대해 모듈러스 Q 상의 사이퍼텍스트를 출력할 수 있다(270).The processor 200 may correct the first ciphertext (or the third ciphertext) using the second ciphertext (260). Processor 200 may output ciphertext on modulus Q for Q greater than q (270).

도 3은 도 2의 모듈러스 리프레시 동작을 이용한 암호문 생성의 동작의 구현의 일 예를 나타낸다.FIG. 3 shows an example of implementation of an operation of generating ciphertext using the modulus refresh operation of FIG. 2 .

도 3을 참조하면, 프로세서(예: 도 1의 프로세서(200))는 제1 사이퍼텍스트를 수신할 수 있다(311). 프로세서(200)는 제1 사이퍼텍스트

Figure pat00001
와 계수가 {-1, 0, 1}인 비밀키
Figure pat00002
에 대해
Figure pat00003
를 만족하는 제1 사이퍼텍스트에 대한 모듈러스 리프레시를 수행함으로써, 입력 사이퍼텍스트의 모듈러스 q를 출력 사이퍼텍스트의 모듈러스 Q로 증가시킬 수 있다. 이 때, 사이퍼텍스트의 다항식의 차수 N은 2의 거듭제곱으로
Figure pat00004
를 만족할 수 있다.Referring to FIG. 3 , a processor (eg, the processor 200 of FIG. 1 ) may receive a first ciphertext (311). The processor 200 is a first ciphertext
Figure pat00001
and a secret key with coefficient {-1, 0, 1}
Figure pat00002
About
Figure pat00003
By performing modulus refresh on the first ciphertext that satisfies , the modulus q of the input ciphertext can be increased to the modulus Q of the output ciphertext. At this time, the degree N of the polynomial in Cyphertext is a power of 2.
Figure pat00004
can be satisfied.

후술하는 수식에서 볼드(bold)로 표기된 알파벳은

Figure pat00005
차 다항식을 의미하고, 볼드로 표기되지 않은 알파벳은 정수 또는 실수와 같은 일반적인 숫자를 의미할 수 있다.
Figure pat00006
은 다항식 간 곱셈 연산을 의미하고, mod는 나머지 연산을 의미하고,
Figure pat00007
Figure pat00008
Figure pat00009
로 나누어 떨어지는 조건을 의미할 수 있다.
Figure pat00010
는 다항식의 모든 계수들에 대해
Figure pat00011
연산의 수행을 의미할 수 있고,
Figure pat00012
로 표현할 수도 있다.Alphabets marked in bold in the formulas described below are
Figure pat00005
It means a quadratic polynomial, and letters not marked in bold can mean general numbers such as integers or real numbers.
Figure pat00006
means multiplication operation between polynomials, mod means remainder operation,
Figure pat00007
Is
Figure pat00008
go
Figure pat00009
It can mean a condition that is divided by .
Figure pat00010
is for all coefficients of the polynomial
Figure pat00011
It can mean the performance of an operation,
Figure pat00012
can also be expressed as

제1 사이퍼텍스트는

Figure pat00013
일 수 있고, 복호화 과정은
Figure pat00014
와 같이 나타낼 수 있다. 복호화 과정은 실수 상에서
Figure pat00015
와 같이 나타낼 수 있다.
Figure pat00016
는 비밀키
Figure pat00017
를 이용한 메시지
Figure pat00018
을 암호화한 사이퍼텍스트를 의미할 수 있다.The first ciphertext is
Figure pat00013
, and the decryption process is
Figure pat00014
can be expressed as The decoding process is on the real number
Figure pat00015
can be expressed as
Figure pat00016
is the secret key
Figure pat00017
message using
Figure pat00018
It may mean cipher text encrypted.

프로세서(200)는 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다(313). 프로세서(200)는 제1 모듈러스를 변환하여 변환된 제1 모듈러스를 계산할 수 있다. 프로세서(200)는 변환된 제1 모듈러스에 기초하여 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 제1 사이퍼텍스트

Figure pat00019
Figure pat00020
연산을 수행함으로써
Figure pat00021
를 획득할 수 있다.
Figure pat00022
는 실수 상에서
Figure pat00023
와 같이 나타낼 수 있다.The processor 200 may perform preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext (313). The processor 200 may calculate the converted first modulus by converting the first modulus. The processor 200 may generate third ciphertext by converting the first ciphertext based on the converted first modulus. The processor 200 is a first ciphertext
Figure pat00019
to
Figure pat00020
by performing an operation
Figure pat00021
can be obtained.
Figure pat00022
is on the real number
Figure pat00023
can be expressed as

프로세서(200)는 변환된 제1 모듈러스, 제3 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행할 수 있다(315). 프로세서(200)는 제1 사이퍼텍스트와 제3 사이퍼텍스트의 차이를 변환된 제1 모듈러스로 나눔으로써 전처리를 수행할 수 있다. 프로세서(200)는 프로세서(200)는 제1 사이퍼텍스트

Figure pat00024
로부터 제3 사이퍼텍스트
Figure pat00025
를 뺀 뒤, 변환된 제1 모듈러스
Figure pat00026
로 나눔으로써 전처리가 수행된 제1 사이퍼텍스트인
Figure pat00027
를 획득할 수 있다. 전처리가 수행된 제1 사이퍼텍스트는 실수 상에서
Figure pat00028
와 같이 나타낼 수 있다.The processor 200 may perform preprocessing on the first ciphertext based on the converted first modulus and the third ciphertext (315). The processor 200 may perform preprocessing by dividing the difference between the first ciphertext and the third ciphertext by the converted first modulus. The processor 200 may include a first ciphertext
Figure pat00024
Third Ciphertext from
Figure pat00025
After subtracting , the transformed first modulus
Figure pat00026
The first ciphertext preprocessed by dividing by
Figure pat00027
can be obtained. The first ciphertext pre-processed is on the real number
Figure pat00028
can be expressed as

프로세서(200)는 블라인드 로테이션 연산의 반복 수행을 위해 루프 인덱스 i에 0을 대입할 수 있다(317). 프로세서(200)는 동작319 부터 동작 325를 반복적으로 수행함으로써 반복적으로 블라인드 로테이션 연산을 수행할 수 있다. 반복 블라인드 로테이션 연산을 위해 프로세서(200)는 i가 N-1보다 작거나 같은지 여부를 판단할 수 있다(319). 프로세서(200)는 i가 N-1보다 작거나 같을 경우 321 동작을 수행하고, i가 N-1보다 클 경우 327 동작을 수행할 수 있다.The processor 200 may substitute 0 for the loop index i to repeatedly perform the blind rotation operation (317). The processor 200 may repeatedly perform the blind rotation operation by repeatedly performing operations 319 to 325 . For the iterative blind rotation operation, the processor 200 may determine whether i is less than or equal to N−1 (319). The processor 200 may perform operation 321 when i is less than or equal to N−1, and perform operation 327 when i is greater than N−1.

프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트에 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE 벡터를 추출할 수 있다(321).

Figure pat00029
는 다항식
Figure pat00030
Figure pat00031
를 이용하여 LWE 벡터를
Figure pat00032
의 형태로 추출하는 함수를 의미할 수 있다.The processor 200 may generate the second ciphertext by performing a blind rotation operation on the preprocessed first ciphertext. The processor 200 may extract an LWE vector based on the coefficients of the first ciphertext on which preprocessing is performed (321).
Figure pat00029
is a polynomial
Figure pat00030
Wow
Figure pat00031
The LWE vector using
Figure pat00032
It can mean a function that extracts in the form of

Figure pat00033
는 모듈러스 2N 상에서
Figure pat00034
을 만족할 수 있다. 여기서,
Figure pat00035
의 각 계수들은 다항식
Figure pat00036
Figure pat00037
의 계수들로 표현될 수 있다.
Figure pat00038
를 비밀키
Figure pat00039
의 계수 벡터라고 할 때, 프로세서(200)는
Figure pat00040
로부터 추출된 계수들을
Figure pat00041
와 같이 정의할 수 있다. 이 때,
Figure pat00042
에 대하여
Figure pat00043
이 만족될 수 있다.
Figure pat00033
is on the modulus 2N
Figure pat00034
can be satisfied. here,
Figure pat00035
Each coefficient of is a polynomial
Figure pat00036
and
Figure pat00037
can be expressed as coefficients of
Figure pat00038
the secret key
Figure pat00039
When the coefficient vector of , the processor 200
Figure pat00040
coefficients extracted from
Figure pat00041
can be defined as At this time,
Figure pat00042
about
Figure pat00043
this can be satisfied.

프로세서(200)는 LWE 벡터에 기초하여 블라인드 로테이션 연산을 수행할 수 있다(323). The processor 200 may perform a blind rotation operation based on the LWE vector (323).

프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트

Figure pat00044
에 대하여 함수
Figure pat00045
를 이용한 연산을 수행하여 제2 사이퍼텍스트
Figure pat00046
를 생성할 수 있다. 제2 사이퍼텍스트
Figure pat00047
Figure pat00048
를 만족할 수 있다.
Figure pat00049
는 함수 f와 비밀키 s에 대한 블라인드 로테이션 연산을 수행하는 동작을 의미할 수 있다.The processor 200 performs the preprocessing of the first ciphertext
Figure pat00044
About function
Figure pat00045
Second ciphertext by performing an operation using
Figure pat00046
can create 2nd Ciphertext
Figure pat00047
Is
Figure pat00048
can be satisfied.
Figure pat00049
may mean an operation of performing a blind rotation operation on the function f and the secret key s.

프로세서(200)는 블라인드 로테이션 키를 생성할 수 있다. 프로세서(200)는 제1 사이퍼텍스트를 생성하는데 사용된 비밀키에 기초하여 암호 상수를 생성할 수 있다. Processor 200 may generate a blind rotation key. The processor 200 may generate an encryption constant based on the secret key used to generate the first ciphertext.

프로세서(200)는 비밀키

Figure pat00050
의 각 계수인
Figure pat00051
에 대하여 암호 상수
Figure pat00052
Figure pat00053
를 후술하는 조건에 따라 생성할 수 있다. 프로세서(200)는
Figure pat00054
인 경우,
Figure pat00055
,
Figure pat00056
와 같이 암호 상수를 생성할 수 있다. 프로세서(200)는
Figure pat00057
인 경우,
Figure pat00058
,
Figure pat00059
와 같이 암호 상수를 생성할 수 있다. 프로세서(200)는
Figure pat00060
인 경우,
Figure pat00061
Figure pat00062
와 같이 암호 상수를 생성할 수 있다.The processor 200 has a secret key
Figure pat00050
each coefficient of
Figure pat00051
About cryptographic constants
Figure pat00052
and
Figure pat00053
can be generated according to the conditions described below. Processor 200
Figure pat00054
If
Figure pat00055
,
Figure pat00056
You can create cryptographic constants like Processor 200
Figure pat00057
If
Figure pat00058
,
Figure pat00059
You can create cryptographic constants like Processor 200
Figure pat00060
If
Figure pat00061
Figure pat00062
You can create cryptographic constants like

프로세서(200)는 암호 상수에 기초하여 블라인드 로테이션 키를 생성하고, 블라인드 로테이션 키에 기초하여 블라인드 로테이션 연산을 수행할 수 있다. 예를 들어, 프로세서(200)는

Figure pat00063
,
Figure pat00064
를 상수항으로 하는 다항식에 대한 RGSW(ring Gentry, Sahai, Waters) 사이퍼텍스트를 생성하여 블라인드 로테이션 키로 사용할 수 있다. RGSW 사이퍼텍스트로 이루어진 블라인드 로테이션 키는
Figure pat00065
와 같이 나타낼 수 있다.The processor 200 may generate a blind rotation key based on the cryptographic constant and perform a blind rotation operation based on the blind rotation key. For example, processor 200
Figure pat00063
,
Figure pat00064
RGSW (ring Gentry, Sahai, Waters) cyphertext for a polynomial with a constant term can be generated and used as a blind rotation key. A blind rotation key made of RGSW ciphertext
Figure pat00065
can be expressed as

프로세서(200)는 RLWE(ring learning with error) 사이퍼텍스트를 이용하여 RGSW 사이퍼텍스트를 생성할 수 있다. 비밀키

Figure pat00066
에 대한 메시지
Figure pat00067
의 RLWE 사이퍼텍스트는
Figure pat00068
와 같이 정의될 수 있다. 여기서,
Figure pat00069
는 계수가 모듈러스 q 상의 다항식이고,
Figure pat00070
는 계수가 작은 오차 다항식을 의미할 수 있다. 프로세서(200)는 매 암호화시에
Figure pat00071
Figure pat00072
를 무작위로 생성할 수 있다.The processor 200 may generate RGSW ciphertext using ring learning with error (RLWE) ciphertext. secret key
Figure pat00066
message about
Figure pat00067
The RLWE cyphertext of
Figure pat00068
can be defined as here,
Figure pat00069
where the coefficient is a polynomial on the modulus q,
Figure pat00070
may mean an error polynomial having a small coefficient. Processor 200 at every encryption
Figure pat00071
and
Figure pat00072
can be randomly generated.

프로세서(200)는

Figure pat00073
에 대한 메시지
Figure pat00074
의 RLWE' 사이퍼텍스트를
Figure pat00075
와 같이 정의할 수 있다. 여기서,
Figure pat00076
는 임의의 정수를 분할(decomposition)하기 위해 사전에 정의된 벡터를 의미할 수 있고, 임의의 정수
Figure pat00077
에 대해
Figure pat00078
의 형태를 가지거나
Figure pat00079
에 대하여
Figure pat00080
로 설정될 수 있다. 최종적으로, 프로세서(200)는 비밀키
Figure pat00081
에 대한 메시지
Figure pat00082
의 RGSW 사이퍼텍스트를
Figure pat00083
와 같이 정의할 수 있다.Processor 200
Figure pat00073
message about
Figure pat00074
RLWE' ciphertext
Figure pat00075
can be defined as here,
Figure pat00076
May mean a vector defined in advance to decompose an arbitrary integer, and an arbitrary integer
Figure pat00077
About
Figure pat00078
have the form of
Figure pat00079
about
Figure pat00080
can be set to Finally, the processor 200 uses the secret key
Figure pat00081
message about
Figure pat00082
of RGSW ciphertext
Figure pat00083
can be defined as

프로세서(200)는 각 계수

Figure pat00084
에 대하여
Figure pat00085
를 이용하여 블라인드 로테이션 연산을 수행할 수 있다. 프로세서(200)는 함수
Figure pat00086
Figure pat00087
와 같이 정의하고,
Figure pat00088
로 초기화를 수행할 수 있다. 프로세서(200)는 모든
Figure pat00089
에 대하여
Figure pat00090
를 반복적으로 수행함으로써
Figure pat00091
에 대한 사이퍼텍스트
Figure pat00092
를 획득할 수 있다.Processor 200 each coefficient
Figure pat00084
about
Figure pat00085
A blind rotation operation can be performed using Processor 200 is a function
Figure pat00086
cast
Figure pat00087
defined as,
Figure pat00088
Initialization can be performed with Processor 200 is all
Figure pat00089
about
Figure pat00090
by repeatedly performing
Figure pat00091
about ciphertext
Figure pat00092
can be obtained.

프로세서(200)는 루프 인덱스 i에 1을 더할 수 있다(325).The processor 200 may add 1 to the loop index i (325).

프로세서(200)는 블라인드 로테이션 연산이 수행된 제1 사이퍼텍스트를 결합 또는 리팩함으로써 제2 사이퍼텍스트를 생성할 수 있다(327).

Figure pat00093
는 복수의 사이퍼텍스트 다항식을 하나의 다항식으로 결합하는 동작을 의미할 수 있다. 프로세서(200)는 블라인드 로테이션 연산을 N 번 반복하여
Figure pat00094
에 대한 사이퍼텍스트들을 획득한 후, 획득한 사이퍼텍스트들을
Figure pat00095
에 대한 제2 사이퍼텍스트
Figure pat00096
로 결합할 수 있다.The processor 200 may generate a second ciphertext by combining or repacking the first ciphertext on which the blind rotation operation is performed (327).
Figure pat00093
may mean an operation of combining a plurality of ciphertext polynomials into one polynomial. The processor 200 repeats the blind rotation operation N times to
Figure pat00094
After acquiring the ciphertexts for , the obtained ciphertexts
Figure pat00095
Second ciphertext for
Figure pat00096
can be combined with

프로세서(200)는 제2 사이퍼텍스트를 이용하여 제1 사이퍼텍스트를 보정함으로써 타겟 사이퍼텍스트를 생성할 수 있다(329). 예를 들어, 프로세서(200)는

Figure pat00097
Figure pat00098
타겟 사이퍼텍스트
Figure pat00099
를 획득할 수 있다.
Figure pat00100
Figure pat00101
와 같이 나타낼 수 있다.The processor 200 may generate the target ciphertext by correcting the first ciphertext using the second ciphertext (329). For example, processor 200
Figure pat00097
class
Figure pat00098
target ciphertext
Figure pat00099
can be obtained.
Figure pat00100
Is
Figure pat00101
can be expressed as

프로세서(200)는 메시지

Figure pat00102
에 대하여 모듈러스가 Q로 증가된 타겟 사이퍼텍스트를 출력할 수 있다(331).Processor 200 sends a message
Figure pat00102
A target ciphertext whose modulus is increased to Q may be output (331).

도 4는 도 2의 모듈러스 리프레시 동작을 이용한 암호문 생성의 동작의 구현의 다른 예를 나타낸다.FIG. 4 shows another example of implementing an operation of generating ciphertext using the modulus refresh operation of FIG. 2 .

도 4를 참조하면, 프로세서(예: 도 1의 프로세서(200))는 제1 사이퍼텍스트를 수신할 수 있다(411). 프로세서(200)는 제1 모듈러스를 다항식의 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산할 수 있다. 프로세서(200) 변환된 제1 모듈러스에 기초하여 제1 사이퍼텍스트로 변환함으로써 제3 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 제3 사이퍼텍스트에 플레인텍스트의 개수에 기초한 간격으로 회전 연산을 수행할 수 있다(415).이하에서, 회전 연산 과정을 구체적으로 설명한다.Referring to FIG. 4 , a processor (eg, the processor 200 of FIG. 1 ) may receive a first ciphertext (411). The processor 200 may calculate the converted first modulus by converting the first modulus based on the order of the polynomial. The processor 200 may generate a third ciphertext by converting the converted first modulus into the first ciphertext. The processor 200 may perform a rotation operation on the third ciphertext at intervals based on the number of plain texts (415). Hereinafter, a rotation operation process will be described in detail.

동형 암호에서

Figure pat00103
형태의 최대N/2 개의 메시지가 다항식에
Figure pat00104
와 같은 형태로 인코딩(encoding)되어 암호화될 수 있다. 메시지의 수 n이 N/2보다 작은 경우, 전체 공간 N/2 중에서 일부 공간만 사용되므로, 희소 인코딩(sparse encoding)으로 지칭될 수 있고, 희소 인코딩의 경우 다항식은 in homomorphic encryption
Figure pat00103
At most N/2 messages of the form polynomial
Figure pat00104
It can be encoded and encrypted in the same form. If the number of messages n is less than N/2, only a part of the space N/2 is used, so it can be referred to as sparse encoding, and in the case of sparse encoding, the polynomial is

메시지 수

Figure pat00105
Figure pat00106
보다 작은 경우, 전체 공간
Figure pat00107
중 일부 공간만 사용하게 되므로 Sparse Encoding이라 부르며, 다항식은
Figure pat00108
와 같이 일부 계수가 0으로 구성될 수 있다. 이 경우, 프로세서(200)는
Figure pat00109
를 구성하는 계수 중 0이 아닌
Figure pat00110
에 대해서만 블라인드 로테이션 연산을 수행함으로써 연산량을 감소시킬 수 있다.number of messages
Figure pat00105
this
Figure pat00106
less than, the total space
Figure pat00107
Since only a part of the space is used, it is called sparse encoding, and the polynomial is
Figure pat00108
Some coefficients may consist of zeros, such as In this case, the processor 200
Figure pat00109
is non-zero among the coefficients that make up
Figure pat00110
The amount of computation can be reduced by performing the blind rotation operation only for .

프로세서(200)는 희소 인코딩된 사이퍼텍스트에 대한 모듈러스 리프레시를 수행하기 위해서 메시지 m에 대한 모듈러스 q 상의 사이퍼텍스트(예: 제1 사이퍼 텍스트)를 입력으로 받아, 최종적으로 메시지 m에 대한 모듈러스 Q 상의 사이퍼텍스트(예: 타겟 사이퍼텍스트)를 출력할 수 있다.In order to perform modulus refresh on sparse encoded ciphertext, the processor 200 receives ciphertext on modulus q for message m (eg, first cipher text) as an input, and finally ciphertext on modulus Q for message m. Text (e.g. target ciphertext) can be output.

프로세서(200)는 희소 인코딩된 사이퍼텍스트를 처리하기 위해 전처리 과정을 변형하여 수행할 수 있다. 프로세서(200)는 사이퍼텍스트

Figure pat00111
Figure pat00112
간격만큼 회전 연산
Figure pat00113
를 순차적으로 수행하여
Figure pat00114
를 획득할 수 있다.
Figure pat00115
Figure pat00116
와 같이 나타낼 수 있다. 또한,
Figure pat00117
Figure pat00118
와 같이 구성될 수 있다.The processor 200 may modify and perform a preprocessing process to process sparse encoded ciphertext. The processor 200 is a ciphertext
Figure pat00111
to
Figure pat00112
rotation by interval
Figure pat00113
by sequentially
Figure pat00114
can be obtained.
Figure pat00115
Is
Figure pat00116
can be expressed as In addition,
Figure pat00117
Is
Figure pat00118
can be configured as

프로세서(200)는 도 3의 실시예에서 블라인드 로테이션 연산 과정에서 모든 계수

Figure pat00119
에 대해서 블라인드 로테이션 연산을 수행한 것과는 달리, 0이 아닌 계수
Figure pat00120
에 대해서만 블라인드 로테이션 연산을 수행함으로써 2n 개의 사이퍼텍스트를 획득하고, 획득한 2n 개의 사이퍼텍스트들을 결합함으로써 제2 사이퍼텍스트를 생성할 수 있다. 메시지의 수가 N/2 개인 풀 인코딩(full encoding)인 경우, 프로세서(200)는 N 번의 블라인드 로테이션 연산 및 N 개의 사이퍼텍스트의 결합을 수행하지만, 희소 인코딩의 경우, 프로세서(200)는 2n 번의 블라인드 로테이션 연산 및 2n 개의 암호문 결합으로 연산을 효율적으로 수행할 수 있다.The processor 200 performs all coefficients in the blind rotation calculation process in the embodiment of FIG.
Figure pat00119
Unlike performing a blind rotation operation for , a non-zero coefficient
Figure pat00120
2n ciphertexts can be obtained by performing a blind rotation operation only on , and second ciphertexts can be generated by combining the obtained 2n ciphertexts. In the case of full encoding in which the number of messages is N/2, the processor 200 performs N blind rotation operations and N ciphertext combinations, but in the case of sparse encoding, the processor 200 performs 2n blind rotation operations. The rotation operation and the combination of 2n ciphertexts can perform the operation efficiently.

프로세서(200)는 변환된 제1 모듈러스, 제3 사이퍼텍스트에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다(417). 417 동작은 도 3의 315 동작과 동일할 수 있다.The processor 200 may perform preprocessing on the first ciphertext based on the converted first modulus and the third ciphertext (417). Operation 417 may be the same as operation 315 of FIG. 3 .

프로세서(200)는 블라인드 로테이션 연산의 반복 수행을 위해 루프 인덱스 i에 0을 대입할 수 있다(419). 프로세서(200)는 동작421 부터 동작 427을 반복적으로 수행함으로써 반복적으로 블라인드 로테이션 연산을 수행할 수 있다. 반복 블라인드 로테이션 연산을 위해 프로세서(200)는 i가 2N-1보다 작거나 같은지 여부를 판단할 수 있다(421). 프로세서(200)는 i가 2n-1보다 작거나 같을 경우 423 동작을 수행하고, i가 2n-1보다 클 경우 429 동작을 수행할 수 있다.The processor 200 may substitute 0 for the loop index i to repeatedly perform the blind rotation operation (419). The processor 200 may repeatedly perform the blind rotation operation by repeatedly performing operations 421 to 427 . For the iterative blind rotation operation, the processor 200 may determine whether i is less than or equal to 2N-1 (421). The processor 200 may perform operation 423 when i is less than or equal to 2n−1, and perform operation 429 when i is greater than 2n−1.

프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트에 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE 벡터를 추출할 수 있다(423). 423 동작은 도 3의 321 동작과 동일할 수 있다.The processor 200 may generate the second ciphertext by performing a blind rotation operation on the preprocessed first ciphertext. The processor 200 may extract an LWE vector based on the coefficients of the preprocessed first ciphertext (423). Operation 423 may be the same as operation 321 of FIG. 3 .

프로세서(200)는 LWE 벡터에 기초하여 블라인드 로테이션 연산을 수행할 수 있다(425). 425 동작은 도 3의 323 동작과 동일할 수 있다. 프로세서(200)는 루프 인덱스 i에 1을 더할 수 있다(427).The processor 200 may perform a blind rotation operation based on the LWE vector (425). Operation 425 may be the same as operation 323 of FIG. 3 . The processor 200 may add 1 to the loop index i (427).

프로세서(200)는 블라인드 로테이션 연산이 수행된 제1 사이퍼텍스트를 결합 또는 리팩함으로써 제2 사이퍼텍스트를 생성할 수 있다(429). 429 동작은 도 3의 327 동작과 동일할 수 있다.The processor 200 may generate a second ciphertext by combining or repacking the first ciphertext on which the blind rotation operation is performed (429). Operation 429 may be the same as operation 327 of FIG. 3 .

프로세서(200)는 제2 사이퍼텍스트를 이용하여 제1 사이퍼텍스트를 보정함으로써 타겟 사이퍼텍스트를 생성할 수 있다(431). 프로세서(200)는 메시지

Figure pat00121
에 대하여 모듈러스가 Q로 증가된 타겟 사이퍼텍스트를 출력할 수 있다(433). 431 동작은 도 3의 329 동작과 동일하고, 433 동작은 도 3의 331 동작과 동일할 수 있다.The processor 200 may generate the target ciphertext by correcting the first ciphertext using the second ciphertext (431). Processor 200 sends a message
Figure pat00121
A target ciphertext whose modulus is increased to Q may be output (433). Operation 431 may be identical to operation 329 of FIG. 3 , and operation 433 may be identical to operation 331 of FIG. 3 .

도 5는 도 2의 모듈러스 리프레시 동작을 이용한 암호문 생성의 동작의 구현의 또 다른 예를 나타낸다.FIG. 5 shows another example of implementing an operation of generating ciphertext using the modulus refresh operation of FIG. 2 .

도 5를 참조하면, 프로세서(예: 도 1의 프로세서(200))는 제1 사이퍼텍스트를 생성할 수 있다(511). 프로세서(200)는 제1 모듈러스 및 제1 사이퍼텍스트의 다항식 차수에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다. Referring to FIG. 5 , a processor (eg, the processor 200 of FIG. 1 ) may generate a first ciphertext (511). The processor 200 may perform preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext.

프로세서(200)는 제1 모듈러스 및 다항식의 차수에 기초하여 제1 사이퍼텍스트를 변환함으로써 변환된 제1 사이퍼텍스트에 전처리를 수행할 수 있다. 프로세서(200)는 변환된 제1 사이퍼텍스트에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다. 프로세서(200)는 제1 사이퍼텍스트에 다항식의 차수의 두 배를 곱한 값과 변환된 제1 사이퍼텍스트의 차이에 기초하여 전처리를 수행할 수 있다.The processor 200 may perform preprocessing on the converted first ciphertext by converting the first ciphertext based on the first modulus and the order of the polynomial. The processor 200 may perform preprocessing on the first ciphertext based on the converted first ciphertext. The processor 200 may perform preprocessing based on a difference between a value obtained by multiplying the first ciphertext by twice the degree of the polynomial and the converted first ciphertext.

프로세서(200)는

Figure pat00122
를 만족하지 않는 레지듀 넘버 시스템(residue number system(RNS) 구조를 처리하기 위해 전처리 과정을 변형하여 수행할 수 있다. 프로세서(200)는 제1 사이퍼텍스트를 변환하여 제3 사이퍼텍스트를 생성할 수 있다(513). 프로세서(200)는 제1 사이퍼텍스트, 제3 사이퍼텍스트 및 다항식의 차수에 기초하여 전처리를 수행함으로써 전처리가 수행된 제1 사이퍼텍스트를 수행할 수 있다(515). 이하에서, 변형된 전처리 과정을 설명한다.Processor 200
Figure pat00122
The pre-processing process may be modified and performed to process a residue number system (RNS) structure that does not satisfy . The processor 200 may generate a third ciphertext by converting the first ciphertext. Step 513. The processor 200 may perform preprocessing on the preprocessed first ciphertext based on the first ciphertext, the third ciphertext, and the order of the polynomial (515). A modified preprocessing process is described.

동형 암호의 사이퍼텍스트는 임의의 작은 소수

Figure pat00123
들의 곱인
Figure pat00124
에 대한 모듈러스 상의 사이퍼텍스트로 표현될 수 있다. 이 경우, 프로세서(200)는 각각의
Figure pat00125
에 대한 모듈러스 상의 사이퍼텍스트로 Q에 대응하는 사이퍼텍스트를 분할할 수 있다. 이러한 구조는 상술한 레지듀 넘버 시스템으로 지칭되고,
Figure pat00126
를 만족하지 않기 때문에, 레지듀 넘버 시스템을 처리하기 위해서 프로세서(200)는 전처리 과정을 변형할 수 있다.The ciphertext of a homomorphic cipher is an arbitrary small prime number.
Figure pat00123
product of
Figure pat00124
It can be expressed in ciphertext on the modulus for . In this case, the processor 200 each
Figure pat00125
It is possible to divide the ciphertext corresponding to Q into the ciphertext on the modulus for . This structure is referred to as the above-mentioned residue number system,
Figure pat00126
is not satisfied, the processor 200 may modify the preprocessing process in order to process the residue number system.

프로세서(200)는 제1 사이퍼텍스트

Figure pat00127
에 2N을 곱한 뒤 모듈러스 q'연산을 수행하여
Figure pat00128
를 획득할 수 있다. 변환된 사이퍼텍스트
Figure pat00129
는 실수 상에서
Figure pat00130
와 같이 나타낼 수 있다.The processor 200 is a first ciphertext
Figure pat00127
After multiplying by 2N, perform the modulus q' operation
Figure pat00128
can be obtained. Converted ciphertext
Figure pat00129
is on the real number
Figure pat00130
can be expressed as

프로세서(200)는 사이퍼텍스트

Figure pat00131
로부터
Figure pat00132
를 뺀 뒤, q로 나누어
Figure pat00133
를 획득할 수 있다. 전처리가 수행된 사이퍼텍스트
Figure pat00134
는 실수 상에서
Figure pat00135
와 같이 나타낼 수 있다.The processor 200 is a ciphertext
Figure pat00131
from
Figure pat00132
After subtracting , divide by q
Figure pat00133
can be obtained. Preprocessed ciphertext
Figure pat00134
is on the real number
Figure pat00135
can be expressed as

프로세서(200)는 블라인드 로테이션 연산의 반복 수행을 위해 루프 인덱스 i에 0을 대입할 수 있다(517). 프로세서(200)는 동작519 부터 동작 527을 반복적으로 수행함으로써 반복적으로 블라인드 로테이션 연산을 수행할 수 있다. 반복 블라인드 로테이션 연산을 위해 프로세서(200)는 i가 N-1보다 작거나 같은지 여부를 판단할 수 있다(519). 프로세서(200)는 i가 N-1보다 작거나 같을 경우 521 동작을 수행하고, i가 N-1보다 클 경우 527 동작을 수행할 수 있다.The processor 200 may substitute 0 for the loop index i to repeatedly perform the blind rotation operation (517). The processor 200 may repeatedly perform the blind rotation operation by repeatedly performing operations 519 to 527 . For the iterative blind rotation operation, the processor 200 may determine whether i is less than or equal to N−1 (519). The processor 200 may perform operation 521 when i is less than or equal to N−1, and perform operation 527 when i is greater than N−1.

프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트에 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE 벡터를 추출할 수 있다(521). 521 동작은 도 3의 321 동작과 동일할 수 있다.The processor 200 may generate the second ciphertext by performing a blind rotation operation on the preprocessed first ciphertext. The processor 200 may extract an LWE vector based on the coefficients of the first ciphertext on which preprocessing has been performed (521). Operation 521 may be the same as operation 321 of FIG. 3 .

프로세서(200)는 LWE 벡터에 기초하여 블라인드 로테이션 연산을 수행할 수 있다(523). 523 동작은 도 3의 323 동작과 동일할 수 있다. 프로세서(200)는 루프 인덱스 i에 1을 더할 수 있다(525).The processor 200 may perform a blind rotation operation based on the LWE vector (523). Operation 523 may be the same as operation 323 of FIG. 3 . The processor 200 may add 1 to the loop index i (525).

프로세서(200)는 블라인드 로테이션 연산이 수행된 제1 사이퍼텍스트를 결합 또는 리팩함으로써 제2 사이퍼텍스트를 생성할 수 있다(527). 527 동작은 도 3의 327 동작과 동일할 수 있다.The processor 200 may generate a second ciphertext by combining or repacking the first ciphertext on which the blind rotation operation is performed (527). Operation 527 may be the same as operation 327 of FIG. 3 .

프로세서(200)는 제2 사이퍼텍스트를 이용하여 제1 사이퍼텍스트를 보정함으로써 타겟 사이퍼텍스트를 생성할 수 있다(529). 프로세서(200)는 메시지

Figure pat00136
에 대하여 모듈러스가 Q로 증가된 타겟 사이퍼텍스트를 출력할 수 있다(531). 529 동작은 도 3의 329 동작과 동일하고, 531 동작은 도 3의 331 동작과 동일할 수 있다.The processor 200 may generate the target ciphertext by correcting the first ciphertext using the second ciphertext (529). Processor 200 sends a message
Figure pat00136
A target ciphertext whose modulus is increased to Q may be output (531). Operation 529 may be identical to operation 329 of FIG. 3 , and operation 531 may be identical to operation 331 of FIG. 3 .

도 6은 도 1에 도시된 모듈러스 리프레시 장치의 동작의 흐름도를 나타낸다.FIG. 6 is a flowchart of an operation of the modulus refresh device shown in FIG. 1 .

도 6을 참조하면, 수신기(예: 도 1의 수신기(100))는 제1 모듈러스에 대응하는 제1 사이퍼텍스트를 수신할 수 있다(610). 수신기(100)는 수신한 제1 사이퍼텍스트를 프로세서(예: 도 1의 프로세서(200))로 출력할 수 있다.Referring to FIG. 6 , a receiver (eg, the receiver 100 of FIG. 1 ) may receive a first ciphertext corresponding to a first modulus (610). The receiver 100 may output the received first ciphertext to a processor (eg, the processor 200 of FIG. 1 ).

프로세서(200)는 동형 암호연산을 위한 모듈러스 리프레시를 수행할 수 있다.The processor 200 may perform modulus refresh for homomorphic cryptographic operation.

프로세서(200)는 제1 사이퍼텍스트에 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다(630). 프로세서(200)는 제1 모듈러스 및 제1 사이퍼텍스트의 다항식 차수에 기초하여 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행할 수 있다. 예를 들어, 프로세서(200)는 제1 사이퍼텍스트에 다항식의 차수에 기초한 간격으로 회전 연산(rotation operation)을 수행함으로써 제1 사이퍼텍스트에 전처리를 수행할 수 있다.The processor 200 may generate the second ciphertext by performing a blind rotation operation on the first ciphertext (630). The processor 200 may perform isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext. For example, the processor 200 may perform preprocessing on the first ciphertext by performing a rotation operation on the first ciphertext at intervals based on the degree of a polynomial.

프로세서(200)는 제1 모듈러스를 다항식 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산할 수 있다. 프로세서(200)는 변환된 제1 모듈러스에 기초하여 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성할 수 있다.The processor 200 may calculate the converted first modulus by transforming the first modulus based on the order of the polynomial. The processor 200 may generate third ciphertext by converting the first ciphertext based on the converted first modulus.

프로세서(200)는 변환된 제1 모듈러스, 제3 사이퍼텍스트에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다. 프로세서(200)는 제1 사이퍼텍스트와 제3 사이퍼텍스트의 차이를 변환된 제1 모듈러스로 나눔으로써 전처리를 수행할 수 있다.The processor 200 may perform preprocessing on the first ciphertext based on the converted first modulus and the third ciphertext. The processor 200 may perform preprocessing by dividing the difference between the first ciphertext and the third ciphertext by the converted first modulus.

프로세서(200)는 제1 모듈러스를 다항식의 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하고, 변환된 제1 모듈러스에 기초하여 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 제3 사이퍼텍스트에 플레인텍스트의 개수에 기초한 간격으로 회전 연산을 수행함으로써 제1 사이퍼텍스트에 전처리를 수행할 수 있다.The processor 200 may calculate the converted first modulus by transforming the first modulus based on the order of the polynomial, and generate third ciphertext by transforming the first ciphertext based on the converted first modulus. . The processor 200 may perform preprocessing on the first ciphertext by performing a rotation operation on the third ciphertext at intervals based on the number of plaintexts.

또는, 프로세서(200)는 제1 모듈러스 및 다항식의 차수에 기초하여 제1 사이퍼텍스트를 변환함으로써 변환된 제1 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 변환된 제1 사이퍼텍스트에 기초하여 제1 사이퍼텍스트에 전처리를 수행할 수 있다. 프로세서(200)는 제1 사이퍼텍스트에 다항식의 차수의 두 배를 곱한 값과 변환된 제1 사이퍼텍스트의 차이에 기초하여 전처리를 수행할 수 있다.Alternatively, the processor 200 may generate the converted first ciphertext by transforming the first ciphertext based on the first modulus and the degree of the polynomial. The processor 200 may perform preprocessing on the first ciphertext based on the converted first ciphertext. The processor 200 may perform preprocessing based on a difference between a value obtained by multiplying the first ciphertext by twice the degree of the polynomial and the converted first ciphertext.

프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트에 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE 벡터를 추출할 수 있다.The processor 200 may generate the second ciphertext by performing a blind rotation operation on the preprocessed first ciphertext. The processor 200 may extract an LWE vector based on coefficients of the first ciphertext on which preprocessing is performed.

프로세서(200)는 LWE 벡터에 기초하여 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 제1 사이퍼텍스트를 생성하는데 사용된 비밀키(secret key)에 기초하여 암호 상수를 생성할 수 있다. 프로세서(200)는 암호 상수에 기초하여 블라인드 로테이션 키를 생성할 수 있다. 프로세서(200)는 블라인드 로테이션 키에 기초하여 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성할 수 있다.The processor 200 may generate the second ciphertext by performing a blind rotation operation based on the LWE vector. The processor 200 may generate an encryption constant based on a secret key used to generate the first ciphertext. The processor 200 may generate a blind rotation key based on the cryptographic constant. The processor 200 may generate the second ciphertext by performing a blind rotation operation based on the blind rotation key.

프로세서(200)는 제1 사이퍼텍스트의 다항식의 차수에 따라 블라인드 로테이션 키에 대응하는 복수의 블라인드 로테이션 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 복수의 블라인드 로테이션 사이퍼텍스트를 결합함으로써 제2 사이퍼텍스트를 생성할 수 있다.The processor 200 may generate a plurality of blind rotation ciphertexts corresponding to the blind rotation key according to the order of the polynomial of the first ciphertext. The processor 200 may generate the second ciphertext by combining a plurality of blind rotation ciphertexts.

프로세서(200)는 제1 사이퍼텍스트 및 제2 사이퍼텍스트에 기초하여 제1 모듈러스보다 큰 제2 모듈러스에 대응하는 타겟 사이퍼텍스트를 생성할 수 있다(650). 프로세서(200)는 제1 사이퍼텍스트와 제2 사이퍼텍스트를 더함으로써 타겟 사이퍼텍스트를 생성할 수 있다.The processor 200 may generate target ciphertext corresponding to a second modulus greater than the first modulus based on the first ciphertext and the second ciphertext (650). The processor 200 may generate the target ciphertext by adding the first ciphertext and the second ciphertext.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program commands recorded on the medium may be specially designed and configured for the embodiment or may be known and usable to those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks. - includes hardware devices specially configured to store and execute program instructions, such as magneto-optical media, and ROM, RAM, flash memory, and the like. Examples of program instructions include high-level language codes that can be executed by a computer using an interpreter, as well as machine language codes such as those produced by a compiler. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may include a computer program, code, instructions, or a combination of one or more of the foregoing, which configures a processing device to operate as desired or processes independently or collectively. The device can be commanded. Software and/or data may be any tangible machine, component, physical device, virtual equipment, computer storage medium or device, intended to be interpreted by or provide instructions or data to a processing device. , or may be permanently or temporarily embodied in a transmitted signal wave. Software may be distributed on networked computer systems and stored or executed in a distributed manner. Software and data may be stored on one or more computer readable media.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with limited drawings, those skilled in the art can apply various technical modifications and variations based on the above. For example, the described techniques may be performed in an order different from the method described, and/or components of the described system, structure, device, circuit, etc. may be combined or combined in a different form than the method described, or other components may be used. Or even if it is replaced or substituted by equivalents, appropriate results can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents of the claims are within the scope of the following claims.

Claims (22)

정수와 실수를 다루는 동형 암호(homomorphic encryption)에서 사이퍼텍스트의 모듈러스 리프레시 방법에 있어서,
제1 모듈러스에 대응하는 제1 사이퍼텍스트를 수신하는 단계;
상기 제1 사이퍼텍스트에 블라인드 로테이션(blind rotation) 연산을 수행함으로써 제2 사이퍼텍스트를 생성하는 단계; 및
상기 제1 사이퍼텍스트 및 상기 제2 사이퍼텍스트에 기초하여 상기 제1 모듈러스보다 큰 제2 모듈러스에 대응하는 타겟 사이퍼텍스트를 생성하는 단계
를 포함하는 모듈러스 리프레시 방법.
In the modulus refresh method of ciphertext in homomorphic encryption that handles integers and real numbers,
receiving a first ciphertext corresponding to a first modulus;
generating a second ciphertext by performing a blind rotation operation on the first ciphertext; and
generating a target ciphertext corresponding to a second modulus greater than the first modulus based on the first ciphertext and the second ciphertext;
Modulus refresh method comprising a.
제1항에 있어서,
상기 제2 사이퍼텍스트를 생성하는 단계는,
상기 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하는 단계; 및
전처리가 수행된 제1 사이퍼텍스트에 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 1,
The step of generating the second ciphertext,
performing isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and a polynomial degree of the first ciphertext; and
generating the second ciphertext by performing the blind rotation operation on the preprocessed first ciphertext;
Modulus refresh method comprising a.
제2항에 있어서,
상기 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하는 단계는,
상기 제1 모듈러스를 상기 다항식 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하는 단계;
상기 변환된 제1 모듈러스에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성하는 단계; 및
상기 변환된 제1 모듈러스, 상기 제3 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 2,
Performing isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext,
calculating a transformed first modulus by transforming the first modulus based on the polynomial order;
generating a third ciphertext by converting the first ciphertext based on the converted first modulus; and
Performing pre-processing on the first ciphertext based on the converted first modulus and the third ciphertext.
Modulus refresh method comprising a.
제3항에 있어서,
상기 변환된 제1 모듈러스, 상기 제3 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계는,
상기 제1 사이퍼텍스트와 상기 제3 사이퍼텍스트의 차이를 상기 변환된 제1 모듈러스로 나눔으로써 상기 전처리를 수행하는 단계
를 포함하는 암호화 방법.
According to claim 3,
Performing pre-processing on the first ciphertext based on the converted first modulus and the third ciphertext,
Performing the preprocessing by dividing the difference between the first ciphertext and the third ciphertext by the converted first modulus.
Encryption method including.
제2항에 있어서,
상기 동형 연산에 기반한 전처리가 수행된 제1 사이퍼텍스트에 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계는,
상기 동형 연산에 기반한 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE(learning with error) 벡터를 추출하는 단계; 및
상기 LWE 벡터에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 2,
Generating the second ciphertext by performing the blind rotation operation on the first ciphertext preprocessed based on the isomorphic operation,
extracting a learning with error (LWE) vector based on coefficients of the first ciphertext on which the preprocessing based on the isomorphic operation is performed; and
Generating the second ciphertext by performing the blind rotation operation based on the LWE vector.
Modulus refresh method comprising a.
제5항에 있어서,
상기 LWE 벡터에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계는,
상기 제1 사이퍼텍스트를 생성하는데 사용된 비밀키(secret key)에 기초하여 암호 상수를 생성하는 단계;
상기 암호 상수에 기초하여 블라인드 로테이션 키를 생성하는 단계; 및
상기 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 5,
Generating the second ciphertext by performing the blind rotation operation based on the LWE vector,
generating a cryptographic constant based on a secret key used to generate the first ciphertext;
generating a blind rotation key based on the cryptographic constant; and
Generating the second ciphertext by performing the blind rotation operation based on the blind rotation key.
Modulus refresh method comprising a.
제6항에 있어서,
상기 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는 단계는,
상기 제1 사이퍼텍스트의 다항식의 차수에 따라 블라인드 로테이션 키에 대응하는 복수의 블라인드 로테이션 사이퍼텍스트를 생성하는 단계; 및
상기 복수의 블라인드 로테이션 사이퍼텍스트를 결합함으로써 상기 제2 사이퍼텍스트를 생성하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 6,
Generating the second ciphertext by performing the blind rotation operation based on the blind rotation key,
generating a plurality of blind rotation ciphertexts corresponding to a blind rotation key according to a degree of a polynomial of the first ciphertext; and
generating the second ciphertext by combining the plurality of blind rotation ciphertexts;
Modulus refresh method comprising a.
제2항에 있어서,
상기 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하는 단계는,
상기 제1 모듈러스를 상기 다항식의 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하는 단계;
상기 변환된 제1 모듈러스에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성하는 단계; 및
상기 제3 사이퍼텍스트에 플레인텍스트의 개수에 기초한 간격으로 회전 연산(rotation operation)을 수행함으로써 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 2,
Performing isomorphic operation-based preprocessing on the first ciphertext based on the first modulus and the polynomial order of the first ciphertext,
calculating a transformed first modulus by transforming the first modulus based on an order of the polynomial;
generating a third ciphertext by converting the first ciphertext based on the converted first modulus; and
performing pre-processing on the first ciphertext by performing a rotation operation on the third ciphertext at intervals based on the number of plaintexts;
Modulus refresh method comprising a.
제2항에 있어서,
상기 제1 모듈러스, 상기 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하는 단계는,
상기 제1 모듈러스 및 상기 다항식의 차수에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 변환된 제1 사이퍼텍스트를 생성하는 단계; 및
상기 변환된 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 2,
The step of performing preprocessing based on isomorphic operation on the first ciphertext based on the first modulus and the first ciphertext,
generating a transformed first ciphertext by transforming the first ciphertext based on the first modulus and the degree of the polynomial; and
Performing preprocessing on the first ciphertext based on the converted first ciphertext.
Modulus refresh method comprising a.
제9항에 있어서,
상기 변환된 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는 단계는,
상기 제1 사이퍼텍스트에 상기 다항식의 차수의 두 배를 곱한 값과 상기 변환된 제1 사이퍼텍스트의 차이에 기초하여 상기 전처리를 수행하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 9,
Performing pre-processing on the first ciphertext based on the converted first ciphertext,
Performing the preprocessing based on a difference between a value obtained by multiplying the first ciphertext by twice the degree of the polynomial and the converted first ciphertext.
Modulus refresh method comprising a.
제1항에 있어서,
상기 타겟 사이퍼텍스트를 생성하는 단계는,
상기 제1 사이퍼텍스트와 상기 제2 사이퍼텍스트를 더함으로써 상기 타겟 사이퍼텍스트를 생성하는 단계
를 포함하는 모듈러스 리프레시 방법.
According to claim 1,
The step of generating the target ciphertext,
generating the target ciphertext by adding the first ciphertext and the second ciphertext;
Modulus refresh method comprising a.
정수와 실수를 다루는 동형 암호(homomorphic encryption) 에서 사이퍼텍스트의 모듈러스 리프레시 장치에 있어서,
제1 모듈러스에 대응하는 제1 사이퍼텍스트를 수신하는 수신기; 및
상기 제1 사이퍼텍스트에 블라인드 로테이션 연산을 수행함으로써 제2 사이퍼텍스트를 생성하고,
상기 제1 사이퍼텍스트 및 상기 제2 사이퍼텍스트에 기초하여 상기 제1 모듈러스보다 큰 제2 모듈러스에 대응하는 타겟 사이퍼텍스트를 생성하는 프로세서
를 포함하는 모듈러스 리프레시 장치.
In a ciphertext modulus refresh device in homomorphic encryption that handles integers and real numbers,
a receiver receiving a first ciphertext corresponding to a first modulus; and
Generating a second ciphertext by performing a blind rotation operation on the first ciphertext;
A processor for generating a target ciphertext corresponding to a second modulus greater than the first modulus based on the first ciphertext and the second ciphertext.
A modulus refresh device comprising a.
제12항에 있어서,
상기 프로세서는,
상기 제1 모듈러스 및 상기 제1 사이퍼텍스트의 다항식 차수에 기초하여 상기 제1 사이퍼텍스트에 동형 연산에 기반한 전처리를 수행하고,
전처리가 수행된 제1 사이퍼텍스트에 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는
모듈러스 리프레시 장치.
According to claim 12,
the processor,
performing preprocessing based on isomorphic operation on the first ciphertext based on the first modulus and a polynomial order of the first ciphertext;
Generating the second ciphertext by performing the blind rotation operation on the preprocessed first ciphertext
Modulus refresh device.
제13항에 있어서,
상기 프로세서는,
상기 제1 모듈러스를 상기 다항식 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하고,
상기 변환된 제1 모듈러스에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성하고,
상기 변환된 제1 모듈러스, 상기 제3 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는
모듈러스 리프레시 장치.
According to claim 13,
the processor,
Calculate a transformed first modulus by transforming the first modulus based on the polynomial order;
generating third ciphertext by converting the first ciphertext based on the converted first modulus;
Performing preprocessing on the first ciphertext based on the converted first modulus and the third ciphertext
Modulus refresh device.
제14항에 있어서,
상기 프로세서는,
상기 제1 사이퍼텍스트와 상기 제3 사이퍼텍스트의 차이를 상기 변환된 제1 모듈러스로 나눔으로써 상기 전처리를 수행하는
모듈러스 리프레시 장치.
According to claim 14,
the processor,
Performing the preprocessing by dividing the difference between the first ciphertext and the third ciphertext by the converted first modulus.
Modulus refresh device.
제13항에 있어서,
상기 프로세서는,
상기 동형 연산에 기반한 전처리가 수행된 제1 사이퍼텍스트의 계수에 기초하여 LWE(Learning With Error) 벡터를 추출하고,
상기 LWE 벡터에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는
모듈러스 리프레시 장치.
According to claim 13,
the processor,
Extracting a Learning With Error (LWE) vector based on the coefficients of the first ciphertext on which the preprocessing based on the isomorphic operation is performed;
Generating the second ciphertext by performing the blind rotation operation based on the LWE vector
Modulus refresh device.
제16항에 있어서,
상기 프로세서는,
상기 제1 사이퍼텍스트를 생성하는데 사용된 비밀키(secret key)에 기초하여 암호 상수를 생성하고,
상기 암호 상수에 기초하여 블라인드 로테이션 키를 생성하고,
상기 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행함으로써 상기 제2 사이퍼텍스트를 생성하는
모듈러스 리프레시 장치.
According to claim 16,
the processor,
generating an encryption constant based on a secret key used to generate the first ciphertext;
generating a blind rotation key based on the cryptographic constant;
Generating the second ciphertext by performing the blind rotation operation based on the blind rotation key.
Modulus refresh device.
제17항에 있어서,
상기 프로세서는,
상기 제1 사이퍼텍스트의 다항식의 차수에 따라 블라인드 로테이션 키에 대응하는 복수의 블라인드 로테이션 사이퍼텍스트를 생성하고,
상기 복수의 블라인드 로테이션 사이퍼텍스트를 결합함으로써 상기 제2 사이퍼텍스트를 생성하는
모듈러스 리프레시 장치.
According to claim 17,
the processor,
generating a plurality of blind rotation ciphertexts corresponding to blind rotation keys according to the order of the polynomial of the first ciphertext;
Generating the second ciphertext by combining the plurality of blind rotation ciphertexts.
Modulus refresh device.
제13항에 있어서,
상기 프로세서는,
상기 제1 모듈러스를 상기 다항식의 차수에 기초하여 변환함으로써 변환된 제1 모듈러스를 계산하고,
상기 변환된 제1 모듈러스에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 제3 사이퍼텍스트를 생성하고,
상기 제3 사이퍼텍스트에 플레인텍스트의 개수에 기초한 간격으로 회전 연산(rotation operation)을 수행함으로써 상기 제1 사이퍼텍스트에 전처리를 수행하는
모듈러스 리프레시 장치.
According to claim 13,
the processor,
Calculating a transformed first modulus by transforming the first modulus based on the degree of the polynomial;
generating third ciphertext by converting the first ciphertext based on the converted first modulus;
Performing pre-processing on the first ciphertext by performing a rotation operation on the third ciphertext at intervals based on the number of plaintexts.
Modulus refresh device.
제13항에 있어서,
상기 프로세서는,
상기 제1 모듈러스 및 상기 다항식의 차수에 기초하여 상기 제1 사이퍼텍스트를 변환함으로써 변환된 제1 사이퍼텍스트를 생성하고,
상기 변환된 제1 사이퍼텍스트에 기초하여 상기 제1 사이퍼텍스트에 전처리를 수행하는모듈러스 리프레시 장치.
According to claim 13,
the processor,
Transforming the first ciphertext based on the first modulus and the degree of the polynomial to generate a transformed first ciphertext;
A modulus refresh device performing pre-processing on the first ciphertext based on the converted first ciphertext.
제20항에 있어서,
상기 프로세서는,
상기 제1 사이퍼텍스트에 상기 다항식의 차수의 두배를 곱한 값과 상기 변환된 제1 사이퍼텍스트의 차이에 기초하여 상기 전처리를 수행하는
모듈러스 리프레시 장치.
According to claim 20,
the processor,
Performing the preprocessing based on a difference between a value obtained by multiplying the first ciphertext by twice the order of the polynomial and the converted first ciphertext.
Modulus refresh device.
제12항에 있어서,
상기 프로세서는,
상기 제1 사이퍼텍스트와 상기 제2 사이퍼텍스트를 더함으로써 상기 타겟 사이퍼텍스트를 생성하는
모듈러스 리프레시 장치.
According to claim 12,
the processor,
Generating the target ciphertext by adding the first ciphertext and the second ciphertext
Modulus refresh device.
KR1020210112965A 2021-05-21 2021-08-26 Method and apparatus of modulus refresh in homomorhpic encryption KR20220157843A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/678,596 US11722290B2 (en) 2021-05-21 2022-02-23 Method and apparatus for modulus refresh in homomorphic encryption

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210065429 2021-05-21
KR1020210065429 2021-05-21

Publications (1)

Publication Number Publication Date
KR20220157843A true KR20220157843A (en) 2022-11-29

Family

ID=84234903

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210112965A KR20220157843A (en) 2021-05-21 2021-08-26 Method and apparatus of modulus refresh in homomorhpic encryption

Country Status (1)

Country Link
KR (1) KR20220157843A (en)

Similar Documents

Publication Publication Date Title
CN107147484B (en) Floating point number fully homomorphic encryption method facing privacy protection
CA2723319C (en) A closed galois field cryptographic system
US20150312028A1 (en) Homomorphic encryption and decryption methods using ring isomorphism, and apparatuses using the same
Banegas et al. DAGS: Key encapsulation using dyadic GS codes
JP6386198B1 (en) Encryption device and decryption device
EP3661115B1 (en) Encryption device, decryption device, encryption method, decryption method, encryption program, and decryption program
JP6915375B2 (en) Polynomial-based homomorphic encryption
US10516534B2 (en) Cryptographic system and key generation apparatus
KR20140095179A (en) Homomorphic Encryption and Decryption Method using Ring Isomorphism and apparatus using the same
KR20200087061A (en) Apparatus for processing approximate encripted messages and methods thereof
JPWO2016088453A1 (en) Encryption device, decryption device, encryption processing system, encryption method, decryption method, encryption program, and decryption program
Usama et al. Chaos-based simultaneous compression and encryption for Hadoop
US11799628B2 (en) Apparatus and method for processing non-polynomial operation on encrypted messages
KR20220120410A (en) Encryption method and apparatus using commutative property and associative perperty in homomorphic encryption
KR20230078510A (en) Apparatus and method of homomorphic encryption opeation
KR20210136815A (en) Encryption method and apparatus using homomorhpic encryption
US20230246807A1 (en) Apparatus and method with homomorphic encryption using automorphism
US11722290B2 (en) Method and apparatus for modulus refresh in homomorphic encryption
US11514192B2 (en) Secure reading apparatus, secure writing apparatus, method thereof, and program for reading and writing data in a sequence without revealing an access position
KR20220157843A (en) Method and apparatus of modulus refresh in homomorhpic encryption
JP2023064757A (en) Cipher processing device, cipher processing method, and cipher processing program
KR20220157844A (en) Encryption key generating method, appratus, ciphertext operation method and apparatus using the generated encryption key
JP2022160985A (en) Apparatus for processing non-polynomial operation on homomorphic encrypted message and method thereof
KR20240047269A (en) Homomorphic encryption opeation apparatus and method
KR20240047280A (en) Homomorphic encryption opeation apparatus and method

Legal Events

Date Code Title Description
A201 Request for examination