KR20240047280A - Homomorphic encryption opeation apparatus and method - Google Patents

Homomorphic encryption opeation apparatus and method Download PDF

Info

Publication number
KR20240047280A
KR20240047280A KR1020220170614A KR20220170614A KR20240047280A KR 20240047280 A KR20240047280 A KR 20240047280A KR 1020220170614 A KR1020220170614 A KR 1020220170614A KR 20220170614 A KR20220170614 A KR 20220170614A KR 20240047280 A KR20240047280 A KR 20240047280A
Authority
KR
South Korea
Prior art keywords
key
ciphertext
vector
operand
homomorphic
Prior art date
Application number
KR1020220170614A
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 US18/316,062 priority Critical patent/US20240129106A1/en
Priority to EP23192922.5A priority patent/EP4351079A1/en
Priority to CN202311147039.1A priority patent/CN117857004A/en
Publication of KR20240047280A publication Critical patent/KR20240047280A/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Abstract

동형 암호 연산 장치 및 방법이 개시된다. 동형 암호(homomorphic encryption) 연산 장치에 있어서, 일 실시예에 따른 동형 암호 연산 장치는, 블라인드 로테이션 연산(blind rotation operation)을 수행하기 위한 공개 키(public key) 및 상기 블라인드 로테이션 연산의 피연산 암호문(operand ciphertext)을 수신하는 수신기와, 상기 블라인드 로테이션 연산의 출력 암호문의 다항식의 차수 및 상기 피연산 암호문의 모듈러스에 기초하여 상기 피연산 암호문의 벡터 성분에 전처리를 수행함으로써 수정된 벡터를 생성하고, 상기 공개 키 및 상기 수정된 벡터에 기초하여 블라인드 로테이션 연산을 수행함으로써 동형 암호 연산 결과를 생성하는 프로세서를 포함한다.A homomorphic cryptographic operation device and method are disclosed. In a homomorphic encryption operation device, the homomorphic encryption operation device according to one embodiment includes a public key for performing a blind rotation operation and an operand ciphertext of the blind rotation operation ( a receiver that receives an operand ciphertext), and a modified vector is generated by performing preprocessing on vector components of the operand ciphertext based on the degree of the polynomial of the output ciphertext of the blind rotation operation and the modulus of the operand ciphertext, and and a processor that generates a homomorphic cryptographic operation result by performing a blind rotation operation based on the public key and the modified vector.

Description

동형 암호 연산 장치 및 방법{HOMOMORPHIC ENCRYPTION OPEATION APPARATUS AND METHOD}Homomorphic encryption operation device and method {HOMOMORPHIC ENCRYPTION OPEATION APPARATUS AND METHOD}

아래 실시예들은 동형 암호 연산 장치 및 방법에 관한 것이다.The embodiments below relate to a homomorphic cryptographic operation device and method.

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

블라인드 로테이션 연산(blind rotation operation) 기술은 동형 암호에서 암호문의 메시지에 대한 임의의 함수 연산을 수행하는데 사용되고, 연산 결과에 대한 높은 정확도를 제공하지만 공개키의 크기가 매우 크다는 단점을 가진다.Blind rotation operation technology is used in homomorphic encryption to perform arbitrary function operations on ciphertext messages, and provides high accuracy for the operation results, but has the disadvantage that the size of the public key is very large.

다양한 블라인드 로테이션 연산 기술들이 존재하지만, 블라인드 로테이션 연산은 여전히 많은 메모리를 요구하고, 동형 암호 연산에 필요한 공개키의 크기를 줄일 경우에 연산량이 크게 증가하는 문제가 있다.Although various blind rotation calculation technologies exist, blind rotation calculation still requires a lot of memory, and there is a problem that the amount of calculation increases significantly when the size of the public key required for homomorphic encryption calculation is reduced.

따라서, 공개 키의 크기를 감소시키고 동형 암호 연산의 연산량을 감소시키는 기술이 요구된다.Therefore, there is a need for technology to reduce the size of the public key and reduce the amount of computation of homomorphic encryption operations.

동형 암호(homomorphic encryption) 연산 장치에 있어서, 일 실시예에 따른 동형 암호 연산 장치는, 블라인드 로테이션 연산(blind rotation operation)을 수행하기 위한 공개 키(public key) 및 상기 블라인드 로테이션 연산의 피연산 암호문(operand ciphertext)을 수신하는 수신기와, 상기 블라인드 로테이션 연산의 출력 암호문의 다항식의 차수 및 상기 피연산 암호문의 모듈러스에 기초하여 상기 피연산 암호문의 벡터 성분에 전처리를 수행함으로써 수정된 벡터를 생성하고, 상기 공개 키 및 상기 수정된 벡터에 기초하여 블라인드 로테이션 연산을 수행함으로써 동형 암호 연산 결과를 생성하는 프로세서를 포함한다.In a homomorphic encryption operation device, the homomorphic encryption operation device according to one embodiment includes a public key for performing a blind rotation operation and an operand ciphertext of the blind rotation operation ( a receiver that receives an operand ciphertext), and a modified vector is generated by performing preprocessing on vector components of the operand ciphertext based on the degree of the polynomial of the output ciphertext of the blind rotation operation and the modulus of the operand ciphertext, and and a processor that generates a homomorphic cryptographic operation result by performing a blind rotation operation based on the public key and the modified vector.

상기 공개 키는, 블라인드 로테이션 키, 자기 동형 사상 키(automorphism key) 및 키 스위칭 키(key switching key)를 포함할 수 있다.The public key may include a blind rotation key, an automorphism key, and a key switching key.

상기 공개 키는, 상기 수정된 벡터 및 비밀 키(secret key)에 기초하여 생성될 수 있다.The public key may be generated based on the modified vector and secret key.

상기 프로세서는, 상기 모듈러스와 상기 출력 암호문의 차수를 비교하고, 비교 결과에 기초하여 상기 수정된 벡터를 생성할 수 있다.The processor may compare the modulus and the degree of the output ciphertext and generate the modified vector based on the comparison result.

상기 프로세서는, 상기 피연산 암호문의 벡터 성분 중에서 일부에 기초하여 제1 집합을 생성하고, 상기 제1 집합과 서로 소인 제2 집합에 기초하여 상기 수정된 벡터를 생성할 수 있다.The processor may generate a first set based on some of the vector components of the operand ciphertext, and generate the modified vector based on a second set that is prime to the first set.

상기 프로세서는, 상기 피연산 암호문의 벡터 성분의 생성자(generator)가 유일한 경우, 상기 생성자에 기초하여 루프 인덱스를 결정하고, 상기 루프 인덱스에 기초하여 상기 블라인드 로테이션 연산을 수행할 수 있다.If the generator of the vector component of the operand ciphertext is unique, the processor may determine a loop index based on the generator and perform the blind rotation operation based on the loop index.

상기 프로세서는, 상기 피연산 암호문의 제1 집합에 기초하여 제1 블라인드 연산을 수행하고, 상기 피연산 암호문의 제2 집합에 기초하여 제2 블라인드 연산을 수행할 수 있다.The processor may perform a first blind operation based on the first set of operand ciphertexts and perform a second blind operation based on the second set of operand ciphertexts.

상기 프로세서는, 상기 수정된 벡터에 기초하여 인크리먼트(increment) 연산, 자기 동형 사상(automorphism) 연산 및 키 스위칭(key switching) 연산을 수행함으로써 상기 블라인드 로테이션 연산을 수행할 수 있다.The processor may perform the blind rotation operation by performing an increment operation, an automorphism operation, and a key switching operation based on the modified vector.

상기 프로세서는, 상기 피연산 암호문의 벡터 성분의 홀수의 개수 및 짝수의 개수를 획득하고, 상기 홀수의 개수 및 상기 짝수의 개수의 비교 결과에 기초하여 상기 피연산 암호문의 벡터 성분에 1을 더할 수 있다.The processor may obtain an odd number and an even number of vector components of the operand ciphertext, and add 1 to the vector component of the operand ciphertext based on a comparison result of the odd number and the even number. there is.

상기 프로세서는, 상기 피연산 암호문의 벡터 성분이 짝수인 경우, 상기 공개 키의 비밀 키의 벡터 성분, 상기 비밀 키의 벡터 성분의 음의 합(negative sum) 및 상기 비밀 키의 벡터 성분 중에서 연속된 벡터 성분들의 합에 기초한 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행할 수 있다.When the vector component of the operand ciphertext is an even number, the processor determines the vector component of the private key of the public key, the negative sum of the vector component of the secret key, and the vector component of the secret key. The blind rotation operation may be performed based on a blind rotation key based on the sum of vector components.

동형 암호(homomorphic encryption) 연산 방법에 있어서, 일 실시예에 따른 동형 암호 연산 방법은, 블라인드 로테이션 연산(blind rotation operation)을 수행하기 위한 공개 키(public key) 및 상기 블라인드 로테이션 연산의 피연산 암호문(operand ciphertext)을 수신하는 단계와, 상기 블라인드 로테이션 연산의 출력 암호문의 다항식의 차수 및 상기 피연산 암호문의 모듈러스에 기초하여 상기 피연산 암호문의 벡터 성분에 전처리를 수행함으로써 수정된 벡터를 생성하는 단계와, 상기 공개 키에 기초하여 상기 수정된 벡터에 블라인드 로테이션 연산을 수행함으로써 동형 암호 연산 결과를 생성하는 단계를 포함할 수 있다.In a homomorphic encryption operation method, the homomorphic encryption operation method according to one embodiment includes a public key for performing a blind rotation operation and an operand ciphertext of the blind rotation operation ( receiving an operand ciphertext) and generating a modified vector by performing preprocessing on vector components of the operand ciphertext based on the degree of a polynomial of the output ciphertext of the blind rotation operation and the modulus of the operand ciphertext; , It may include generating a homomorphic encryption operation result by performing a blind rotation operation on the modified vector based on the public key.

상기 공개 키는, 블라인드 로테이션 키, 자기 동형 사상 키(automorphism key) 및 키 스위칭 키(key switching key)를 포함할 수 있다.The public key may include a blind rotation key, an automorphism key, and a key switching key.

상기 공개 키는, 상기 수정된 벡터 및 비밀 키(secret key)에 기초하여 생성될 수 있다.The public key may be generated based on the modified vector and secret key.

상기 수정된 벡터를 생성하는 단계는, 상기 모듈러스와 상기 출력 암호문의 차수를 비교하는 단계와, 비교 결과에 기초하여 상기 수정된 벡터를 생성하는 단계를 포함할 수 있다.Generating the modified vector may include comparing the modulus and the degree of the output ciphertext, and generating the modified vector based on the comparison result.

상기 수정된 벡터를 생성하는 단계는, 상기 피연산 암호문의 벡터 성분 중에서 일부에 기초하여 제1 집합을 생성하는 단계와, 상기 제1 집합과 서로 소인 제2 집합에 기초하여 상기 수정된 벡터를 생성하는 단계를 포함할 수 있다.Generating the modified vector includes generating a first set based on some of the vector components of the operand ciphertext, and generating the modified vector based on a second set that is prime to the first set. May include steps.

상기 동형 암호 연산 결과를 생성하는 단계는, 상기 피연산 암호문의 벡터 성분의 생성자(generator)가 유일한 경우, 상기 생성자에 기초하여 루프 인덱스를 결정하는 단계와, 상기 루프 인덱스에 기초하여 상기 블라인드 로테이션 연산을 수행하는 단계를 포함할 수 있다.The step of generating the homomorphic encryption operation result includes, when the generator of the vector component of the operand ciphertext is unique, determining a loop index based on the generator, and performing the blind rotation operation based on the loop index. It may include steps to perform.

상기 동형 암호 연산 결과를 생성하는 단계는, 상기 피연산 암호문의 제1 집합에 기초하여 제1 블라인드 연산을 수행하는 단계와, 상기 피연산 암호문의 제2 집합에 기초하여 제2 블라인드 연산을 수행하는 단계를 포함할 수 있다.Generating the homomorphic encryption operation result includes performing a first blind operation based on the first set of operand ciphertexts, and performing a second blind operation based on the second set of operand ciphertexts. May include steps.

상기 동형 암호 연산 결과를 생성하는 단계는, 상기 수정된 벡터에 기초하여 인크리먼트(increment) 연산, 자기 동형 사상(automorphism) 연산 및 키 스위칭(key switching) 연산을 수행함으로써 상기 블라인드 로테이션 연산을 수행하는 단계를 포함할 수 있다.The step of generating the homomorphic encryption operation result includes performing the blind rotation operation by performing an increment operation, an automorphism operation, and a key switching operation based on the modified vector. It may include steps.

상기 동형 암호 연산 결과를 생성하는 단계는, 상기 피연산 암호문의 벡터 성분의 홀수의 개수 및 짝수의 개수를 획득하고, 상기 홀수의 개수 및 상기 짝수의 개수의 비교 결과에 기초하여 상기 피연산 암호문의 벡터 성분에 1을 더하는 단계를 포함할 수 있다.The step of generating the homomorphic encryption operation result includes obtaining an odd number and an even number of vector components of the operand ciphertext, and generating the operand ciphertext based on a comparison result of the odd number and the even number. It may include adding 1 to the vector components.

상기 동형 암호 연산 결과를 생성하는 단계는, 상기 피연산 암호문의 벡터 성분이 짝수인 경우, 상기 공개 키의 비밀 키의 벡터 성분, 상기 비밀 키의 벡터 성분의 음의 합(negative sum) 및 상기 비밀 키의 벡터 성분 중에서 연속된 벡터 성분들의 합에 기초한 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행하는 단계를 포함할 수 있다.The step of generating the homomorphic encryption operation result includes, when the vector component of the operand ciphertext is an even number, the vector component of the private key of the public key, the negative sum of the vector components of the secret key, and the secret It may include performing the blind rotation operation based on a blind rotation key based on the sum of consecutive vector components among the vector components of the key.

도 1은 일 실시예에 따른 동형 암호 연산 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 동형 암호 연산 장치의 구현의 예를 나타낸다.
도 3 내지 도 6은 도 1에 도시된 동형 암호 연산 장치의 동형 암호 연산 동작의 예들을 나타낸다.
도 7은 도 1에 도시된 동형 암호 연산 장치의 키 생성 동작의 예를 나타낸다.
도 8은 도 1에 도시된 동형 암호 연산 장치의 동작의 흐름도를 나타낸다.
Figure 1 shows a schematic block diagram of a homomorphic encryption operation device according to an embodiment.
FIG. 2 shows an example of implementation of the homomorphic cryptographic operation device shown in FIG. 1.
3 to 6 show examples of homomorphic encryption operation operations of the homomorphic encryption operation device shown in FIG. 1.
FIG. 7 shows an example of a key generation operation of the homomorphic encryption operation device shown in FIG. 1.
FIG. 8 shows a flowchart of the operation of the homomorphic encryption operation device shown in FIG. 1.

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

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

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

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

또한, 실시 예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다. Additionally, 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, sequence, or order of the component is not limited by the term. When a component is described as being "connected," "coupled," or "connected" to another component, that component may be directly connected or connected to that other component, but there is no need for another component between each component. It should be understood that may be “connected,” “combined,” or “connected.”

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

도 1은 일 실시예에 따른 동형 암호 연산 장치의 개략적인 블록도를 나타낸다.Figure 1 shows a schematic block diagram of a homomorphic encryption operation device according to an embodiment.

도 1을 참조하면, 동형 암호 연산 장치(10)는 동형 암호를 이용한 암호화 및 복호화를 수행할 수 있다. 동형 암호 연산 장치(10)는 동형 암호 연산을 위한 블라인드 로테이션 연산을 수행할 수 있다.Referring to FIG. 1, the homomorphic encryption operation device 10 can perform encryption and decryption using homomorphic encryption. The homomorphic encryption operation device 10 can perform a blind rotation operation for homomorphic encryption operation.

동형 암호 연산 장치(10)는 동형 암호 연산을 수행함으로써 연산 결과를 생성할 수 있다. 동형 암호 연산 장치(10)는 블라인드 로테이션 연산을 수행하기 위한 암호문(ciphertext)(예: 피연산 암호문)을 생성할 수 있다. 동형 암호 연산 장치(10)는 비밀 키(secret key) 및 공개 키(public key)를 생성할 수 있다. 공개 키는 키 스위칭 키(key switching key), 블라인드 로테이션 키(blind rotation key) 및/또는 자기 동형 사상 키(automorphism key)를 포함할 수 있다.The homomorphic encryption operation device 10 can generate an operation result by performing a homomorphic encryption operation. The homomorphic cryptographic operation device 10 may generate a ciphertext (eg, operand ciphertext) for performing a blind rotation operation. The homomorphic cryptography operation device 10 can generate a secret key and a public key. The public key may include a key switching key, a blind rotation key, and/or an automorphism key.

동형 암호 연산 장치(10)는 생성한 암호 키, 암호문 및/또는 블라인드 로테이션 키를 이용하여 블라인드 로테이션 연산을 수행할 수 있다.The homomorphic encryption operation device 10 may perform a blind rotation operation using the generated encryption key, ciphertext, and/or blind rotation key.

동형 암호는 데이터를 암호화한 상태에서 다양한 연산을 수행할 수 있도록 구성된 암호화 방식을 의미할 수 있다. 동형 암호에서 암호문(ciphertext)들을 이용한 연산의 결과는 새로운 암호문이 되고, 암호문을 복호화함으로써 획득된 평문(plaintext)은 암호화하기 전의 원래 데이터의 연산 결과와 동일할 수 있다.Homomorphic encryption may refer to an encryption method configured to perform various operations while encrypting data. In homomorphic encryption, the result of an operation using ciphertexts becomes a new ciphertext, and the plaintext obtained by decrypting the ciphertext may be the same as the result of the operation of the original data before encryption.

이하에서, 암호화된 데이터(encrypted data) 또는 암호문은 사이퍼텍스트(ciphertext)로 지칭될 수 있다. 사이퍼텍스트는 다항식 또는 다항식을 포함하는 벡터의 형태를 가질 수 있다.Hereinafter, encrypted data or ciphertext may be referred to as ciphertext. Cyphertext can take the form of a polynomial or a vector containing polynomials.

동형 암호 연산 장치(10)는 이진수(binary number)로 이루어진 평문을 암호화한 암호문 연산을 지원하는 RLWE(Ring Learning With Error) 문제 기반 동형 암호 연산을 수행할 수 있다. 동형 암호 연산 장치(10)는 정수(integer)로 이루어진 평문을 암호화한 암호문 연산을 지원하는 RLWE 문제 기반 동형 암호 연산을 수행할 수 있다. 동형 암호 연산 장치(10)는 실수(real number) 및/또는 복소수(complex number)로 이루어진 평문을 암호화한 암호문 연산을 지원하는 RLWE 문제 기반 근사 동형 암호 연산을 수행할 수 있다.The homomorphic encryption operation device 10 can perform a homomorphic encryption operation based on the RLWE (Ring Learning With Error) problem that supports ciphertext operation by encrypting plaintext consisting of binary numbers. The homomorphic encryption operation device 10 can perform a homomorphic encryption operation based on the RLWE problem that supports ciphertext operation by encrypting plaintext consisting of integers. The homomorphic encryption operation device 10 can perform an approximate homomorphic encryption operation based on the RLWE problem that supports ciphertext operation by encrypting plaintext consisting of real numbers and/or complex numbers.

동형 암호 연산 장치(10)는 동형 암호를 이용하여 암호화된 상태에서 연산한 결과를 복호화함으로써 평문 상태의 데이터를 연산한 결과와 동일한 결과를 도출할 수 있다. The homomorphic encryption operation device 10 can derive the same result as the result of calculating data in a plaintext state by decrypting the result of calculation in an encrypted state using homomorphic encryption.

동형 암호 연산 장치(10)는 암호문에 대한 연산을 수행할 수 있으며, 블라인드 로테이션 연산(예: LUT(Lookup Table(LUT) 연산) 및 키 생성(key generation)을 수행할 수 있다. 동형 암호 연산 장치(10)는 동형 암호에서 블라인드 로테이션 방식을 이용하여 비 다항식 함수에 대한 연산을 수행할 수 있다.The homomorphic encryption operation device 10 can perform operations on ciphertext, blind rotation operations (e.g., lookup table (LUT) operations) and key generation. Homomorphic encryption operation device (10) can perform operations on non-polynomial functions using a blind rotation method in homomorphic encryption.

동형 암호 연산 장치(10)는 정보 보호 기계 학습(Privacy Preserving Machine Learning(PPML)) 및 응용 서비스에서 입력 데이터를 암호화하는 암호화 과정을 수행할 수 있다. 동형 암호 연산 장치(10) 정보 보호 기계 학습 및 응용 서비스에서 입력값을 암호화하는 암호화 과정에 이용될 수 있다.The homomorphic encryption operation device 10 can perform an encryption process to encrypt input data in Privacy Preserving Machine Learning (PPML) and application services. The homomorphic encryption operation device 10 can be used in the encryption process of encrypting input values in information protection machine learning and application services.

동형 암호 연산 장치(10)는 비밀 키를 저장하기 위한 공간의 제약을 없앰으로써, 비밀 키를 구성하는 벡터의 크기를 조절하여 동형 암호 및 동형 암호를 활용한 응용 서비스에서 암호학적 안전성을 높일 수 있다.The homomorphic encryption operation device 10 can increase cryptographic safety in homomorphic encryption and application services utilizing homomorphic encryption by eliminating space constraints for storing the secret key and adjusting the size of the vector constituting the secret key. .

동형 암호 연산 장치(10)는 서버와 클라이언트가 사용하는 키(예: 비밀 키, 키 스위칭 키, 자기 동형 사상 키 또는 블라인드 로테이션 키)를 저장하기 위한 저장 공간 및 동형 암호 연산의 연산량을 조절할 수 있다.The homomorphic cryptography operation device 10 can adjust the storage space for storing keys (e.g., secret keys, key switching keys, homomorphic mapping keys, or blind rotation keys) used by servers and clients and the amount of computation of homomorphic cryptography operations. .

동형 암호 연산 장치(10)는 칩 (chip) 형태로 구현되어 동형 암호를 활용하는 하드웨어 가속기에 탑재될 수 있다. 동형 암호 연산 장치(10)는 칩 형태 또는 소프트웨어 형태로 구현되어 다양한 연산 장치의 메모리 사용을 감소시킬 수 있다. 동형 암호 연산 장치(10)는 동형 암호 연산의 연산량을 감소시킴으로써, 서버의 전체 연산량을 감소시킬 수 있다.The homomorphic encryption operation device 10 can be implemented in the form of a chip and mounted on a hardware accelerator that utilizes homomorphic encryption. The homomorphic cryptographic processing device 10 can be implemented in the form of a chip or software to reduce memory usage of various computing devices. The homomorphic encryption calculation device 10 can reduce the overall calculation amount of the server by reducing the calculation amount of the homomorphic encryption operation.

동형 암호 연산 장치(10)는 비밀 키 벡터의 크기를 조절하여 높은 암호학적 안정성을 제공할 수 있다. 동형 암호 연산 장치(10)는 동형 암호 연산의 입력 데이터에 대한 암호화를 수행할 수 있다.The homomorphic cryptographic operation device 10 can provide high cryptographic stability by adjusting the size of the secret key vector. The homomorphic encryption operation device 10 can perform encryption on input data of the homomorphic encryption operation.

동형 암호 연산 장치(10)는 PC(personal computer), 데이터 서버, 또는 휴대용 장치 내에 구현될 수 있다.The homomorphic cryptographic computing device 10 may be implemented within a personal computer (PC), a data server, or a 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 ( It can be implemented as an e-book) or a smart device. A smart device may be implemented as a smart watch, smart band, or smart ring.

동형 암호 연산 장치(10)는 수신기(100) 및 프로세서(200)를 포함한다. 동형 암호 연산 장치(10)는 메모리(300)를 더 포함할 수 있다.The homomorphic cryptography operation device 10 includes a receiver 100 and a processor 200. The homomorphic encryption operation device 10 may further include a memory 300.

수신기(100)는 수신 인터페이스를 포함할 수 있다. 수신기(100)는 동형 암호 연산을 수행하기 위한 데이터를 외부 또는 메모리(300)로부터 수신할 수 있다. 데이터는 동형 암호 연산을 수행하기 위한 피연산 데이터(예: 피연산 암호문) 또는 키(예: 비밀 키, 키 스위칭 키(key switching key), 자기 동형 사상 키(automorphism key) 및/또는 블라인드 로테이션 키)를 포함할 수 있다.Receiver 100 may include a receiving interface. The receiver 100 may receive data for performing a homomorphic encryption operation from an external source or the memory 300. The data may be either operand data (e.g., operand ciphertext) or a key (e.g., secret key, key switching key, automorphism key, and/or blind rotation key) to perform a homomorphic cryptographic operation. ) may include.

블라인드 로테이션 키는 RGSW(Ring Gentry, Sahai, Waters) 또는 RLWE(Ring Learning With Error)' 암호문에 기초하여 생성될 수 있다. 키 스위칭 키는 RLWE' 암호문에 기초하여 생성될 수 있다. 피연산 암호문은 LWE(Learning With Error) 암호문에 기초하여 생성될 수 있다.The blind rotation key can be generated based on RGSW (Ring Gentry, Sahai, Waters) or RLWE (Ring Learning With Error)' ciphertext. The key switching key may be generated based on the RLWE' ciphertext. The operand ciphertext can be generated based on LWE (Learning With Error) ciphertext.

수신기(100)는 블라인드 로테이션 연산을 수행하기 위한 공개 키 및 블라인드 로테이션 연산의 피연산 암호문을 수신할 수 있다. 공개 키는 블라인드 로테이션 키, 자기 동형 사상 키 및 키 스위칭 키를 포함할 수 있다. 수신기(100)는 수신한 공개 키 및 피연산 암호문을 프로세서(200)로 출력할 수 있다. The receiver 100 may receive a public key for performing a blind rotation operation and an operand ciphertext of the blind rotation operation. Public keys may include blind rotation keys, automorphic mapping keys, and key switching keys. The receiver 100 may output the received public key and operand ciphertext 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)을 포함할 수 있다.The “processor 200” may be a data processing device implemented in hardware that has a circuit with a physical structure for executing desired operations. For example, the intended operations may include code or instructions included in the program.

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

프로세서(200)는 블라인드 로테이션 연산의 출력 암호문의 다항식의 차수 및 피연산 암호문의 모듈러스에 기초하여 피연산 암호문의 벡터 성분에 전처리를 수행함으로써 수정된 벡터를 생성할 수 있다.The processor 200 may generate a modified vector by performing preprocessing on the vector components of the operand ciphertext based on the degree of the polynomial of the output ciphertext of the blind rotation operation and the modulus of the operand ciphertext.

프로세서(200)는 피연산 암호문의 모듈러스와 출력 암호문의 차수를 비교할 수 있다. 프로세서(200)는 비교 결과에 기초하여 수정된 벡터를 생성할 수 있다.The processor 200 may compare the modulus of the operand ciphertext and the degree of the output ciphertext. The processor 200 may generate a modified vector based on the comparison result.

프로세서(200)는 피연산 암호문의 벡터 성분 중에서 일부에 기초하여 제1 집합을 생성할 수 있다. 프로세서(200)는 제1 집합과 서로 소인 제2 집합에 기초하여 수정된 벡터를 생성할 수 있다.The processor 200 may generate the first set based on some of the vector components of the operand ciphertext. Processor 200 may generate a modified vector based on the first set and the second set that are mutually prime.

프로세서(200)는 공개 키 및 수정된 벡터에 기초하여 블라인드 로테이션 연산을 수행함으로써 동형 암호 연산 결과를 생성할 수 있다. 공개 키는 수정된 벡터 및 비밀 키(secret key)에 기초하여 생성될 수 있다.The processor 200 may generate a homomorphic encryption operation result by performing a blind rotation operation based on the public key and the modified vector. The public key can be generated based on the modified vector and secret key.

프로세서(200)는 피연산 암호문의 벡터 성분의 생성자(generator)가 유일한 경우, 생성자에 기초하여 루프 인덱스를 결정할 수 있다. 프로세서(200)는 루프 인덱스에 기초하여 블라인드 로테이션 연산을 수행할 수 있다.If the generator of the vector component of the operand ciphertext is unique, the processor 200 may determine the loop index based on the generator. The processor 200 may perform a blind rotation operation based on the loop index.

프로세서(200)는 피연산 암호문의 제1 집합에 기초하여 제1 블라인드 연산을 수행할 수 있다. 프로세서(200)는 피연산 암호문의 제2 집합에 기초하여 제2 블라인드 연산을 수행할 수 있다.The processor 200 may perform a first blind operation based on the first set of operand ciphertexts. The processor 200 may perform a second blind operation based on the second set of operand ciphertexts.

프로세서(200)는 수정된 벡터에 기초하여 인크리먼트(increment) 연산, 자기 동형 사상(automorphism) 연산 및 키 스위칭(key switching) 연산을 수행함으로써 블라인드 로테이션 연산을 수행할 수 있다.The processor 200 may perform a blind rotation operation by performing an increment operation, an automorphism operation, and a key switching operation based on the modified vector.

프로세서(200)는 피연산 암호문의 벡터 성분의 홀수의 개수 및 짝수의 개수를 획득할 수 있다. 프로세서(200)는 홀수의 개수 및 짝수의 개수의 비교 결과에 기초하여 암호문의 벡터 성분에 1을 더할 수 있다.The processor 200 may obtain an odd number and an even number of vector components of the operand ciphertext. The processor 200 may add 1 to the vector component of the ciphertext based on the comparison result of the odd number and the even number.

프로세서(200)는 피연산 암호문의 벡터 성분이 짝수인 경우, 공개 키의 비밀 키의 벡터 성분, 비밀 키의 벡터 성분의 음의 합(negative sum) 및 비밀 키의 벡터 성분 중에서 연속된 벡터 성분들의 합에 기초한 블라인드 로테이션 키에 기초하여 블라인드 로테이션 연산을 수행할 수 있다.If the vector component of the operand ciphertext is an even number, the processor 200 determines the vector component of the secret key of the public key, the negative sum of the vector component of the secret key, and the vector components of the secret key. A blind rotation operation can be performed based on the sum-based blind rotation key.

메모리(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 the operation of the processor 200 and/or the 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)으로 구현될 수 있다.Volatile memory devices 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 Eelectronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.Non-volatile memory devices include EEPROM (Electrically Erasable Programmable Read-Only Memory), flash memory, MRAM (Magnetic RAM), Spin-Transfer Torque (STT)-MRAM (MRAM), and Conductive Bridging RAM (CBRAM). , FeRAM (Ferroelectric RAM), PRAM (Phase change RAM), Resistive RAM (RRAM), Nanotube RRAM (Nanotube RRAM), Polymer RAM (PoRAM), Nano Floating Gate Memory (NFGM), holographic memory, molecular electronic memory device, or insulator resistance change memory.

도 2는 도 1에 도시된 동형 암호 연산 장치의 동작의 일 예를 나타낸다.FIG. 2 shows an example of the operation of the homomorphic encryption operation device shown in FIG. 1.

도 2를 참조하면, 프로세서(예: 도 1의 프로세서(200))가 동형 암호 연산을 위해 사용하는 암호문은 다음과 같이 정의될 수 있다.Referring to FIG. 2, the ciphertext used by a processor (e.g., processor 200 of FIG. 1) for homomorphic encryption operation can be defined as follows.

LWE 암호문에 있어서, 메시지(또는, 평문(plaintext)) m 의 암호문은 와 같이 나타낼 수 있다. 암호문은 와 같이 복호화될 수 있다. 는 비밀키 를 이용한 메시지 m 에 대한 암호화를 의미할 수 있다.In LWE ciphertext, the ciphertext of message (or plaintext) m is It can be expressed as: The ciphertext is It can be decrypted as follows. is the secret key This may mean encryption of message m using .

RLWE 암호문에 있어서, 메시지 m 의 암호문은 와 같이 나타낼 수 있다. 암호문은 와 같이 복호화될 수 있다. 은 비밀 키 z 를 이용한 메시지 m 에 대한 암호화를 의미할 수 있다.In RLWE ciphertext, the ciphertext of message m is It can be expressed as: The ciphertext is It can be decrypted as follows. may mean encryption of message m using secret key z .

비밀 키 z 를 이용한 메시지 m 의 RLWE 암호문은 수학식 1과 같이 정의될 수 있다. The RLWE ciphertext of message m using secret key z can be defined as Equation 1.

여기서, 는 모듈러스 Q 상의 다항식을 의미하고, e 는 계수가 작은 에러 다항식을 의미할 수 있다. 각각의 암호화가 수행될 때, e 는 무작위로 생성될 수 있다.here, refers to a polynomial on modulus Q, and e may refer to an error polynomial with a small coefficient. When each encryption is performed, and e may be randomly generated.

비밀키 s 에 대한 메시지 m 의 RLWE' 암호문은 수학식 2와 같이 정의될 수 있다.The RLWE' ciphertext of message m for secret key s can be defined as Equation 2.

여기서, 는 임의의 정수를 분할(decomposition)하기 위해 사전에 정의된 벡터로, 임의의 정수 에 대하여 의 형태 또는 에 대하여 의 형태로 설정될 수 있다.here, is a vector defined in advance to decompose a random integer. about form of or about It can be set in the form of .

비밀키 에 대한 메시지 m 의 RGSW 암호문은 수학식 3과 같이 두 개의 RLWE' 암호문으로 정의될 수 있다.secret key The RGSW ciphertext of message m for can be defined as two RLWE' ciphertexts as shown in Equation 3.

프로세서(200)가 수행하는 동형 암호 연산들은 아래와 같이 정의될 수 있다.Homomorphic cryptographic operations performed by the processor 200 can be defined as follows.

RLWE 암호문의 자기 동형 사상 연산에 있어서, 다항식 환(polynomial ring)의 자기 동형 사상 는 다항식 환의 원소 에 대하여 를 출력하고, 정의역과 공역의 공간이 동일할 수 있다. RLWE 암호문에 있어서, 프로세서(200)는 자기 동형 사상 연산을 통해 입력 에 대해서 를 출력할 수 있다.In the self-homomorphic mapping operation of RLWE ciphertext, the self-homomorphic mapping of a polynomial ring is an element of the polynomial ring about Outputs , and the spaces of the domain and conjugate may be the same. In the RLWE ciphertext, the processor 200 inputs the input through a homomorphic mapping operation. about can be output.

프로세서(200)는 키 스위칭 연산을 통해 비밀 키z 1 에 대응하는 암호문으로부터 새로운 비밀 키 z 2 에 대응하는 암호문을 획득할 수 있다. 프로세서(200)는 입력 암호문 에 대해서 공개 키인 키 스위칭 키 를 이용하여 z 2 를 비밀 키로 갖는 새로운 암호문 를 획득할 수 있다.The processor 200 may obtain the ciphertext corresponding to the new secret key z 2 from the ciphertext corresponding to the secret key z 1 through a key switching operation. Processor 200 inputs ciphertext About public key key switching key A new ciphertext with z 2 as the secret key using can be obtained.

프로세서(200)는 블라인드 로테이션 연산을 수행할 수 있다. 프로세서(200)는 블라인드 로테이션 키를 이용하여 임의의 함수 및 암호문 에 대한 블라인드 로테이션 연산을 수행함으로써, 를 출력할 수 있다.The processor 200 may perform a blind rotation operation. The processor 200 performs an arbitrary function using a blind rotation key. and ciphertext By performing a blind rotation operation on can be output.

정수 상에서 홀수의 생성자(generator)는 다음과 같이 정의될 수 있다. 모듈로 q를 갖는 정수의 환(ring of integers modulo q)인 는 0 부터 q-1까지의 정수로, 덧셈과 곱셈이 정의될 수 있다.The generator of odd numbers on integers can be defined as follows. A ring of integers modulo q. is an integer from 0 to q-1, and addition and multiplication can be defined.

는 곱셈에 대하여 역원이 존재하고, 모듈로 q를 갖는 정수 환의 부분 집합을 의미할 수 있다. 의 부분 집합 중에서 곱셈에 대한 역원이 존재하는 집합을 의미할 수 있다. 를 gi들의 거듭 제곱으로 표현 가능할 경우, gi 들은 의 생성자로 지칭될 수 있다. There is an inverse for multiplication and may mean a subset of an integer ring with modulo q. Is It may refer to a set for which a multiplicative inverse exists among subsets of . If can be expressed as a power of gi, then gi are It can be referred to as the constructor of .

프로세서(200)는 q 가 2의 거듭 제곱인 경우를 일반적으로 고려하는데, 이 경우, 는 2와 서로 소를 이루는 q이하의 모든 홀수 집합을 원소로 가질 수 있다. q가 2의 거듭 제곱일 때, 모든 홀수는 5와 -1의 거듭 제곱으로 표현될 수 있다. 예를 들어, 홀수는 로 표현될 수 있다. 따라서, 로 표현될 수 있다.Processor 200 generally considers the case where q is a power of 2, in which case: can have as elements all odd sets of q or less that are prime to 2. When q is a power of 2, all odd numbers can be expressed as powers of 5 and -1. For example, odd numbers are It can be expressed as thus, It can be expressed as

서로소 집합(disjoint family of sets)은 공통 원소가 없는 두 집합을 의미할 수 있다. 2의 거듭 제곱을 모듈러스로 가지는 임의의 벡터 에 대하여 각각의 벡터 성분 로 나뉠 경우에 는 서로 집합일 수 있다.A disjoint family of sets can refer to two sets that have no common elements. Any vector whose modulus is a power of 2 For each vector component go and If divided into and can be a set of each other.

프로세서(200)는 피연산 암호문인 LWE 암호문 으로부터 를 블라인드 로테이션 키를 이용하여 계산함으로써 에서 함수 f를 적용한 메시지의 연산 결과를 계산하는 블라인드 로테이션 연산을 수행할 수 있다. 프로세서(200)는 블라인드 로테이션 연산 과정에서 필요한 공개 키의 크기 및 연산량을 감소시킬 수 있다.The processor 200 uses the LWE ciphertext as the operand ciphertext. from By calculating using the blind rotation key, You can perform a blind rotation operation that calculates the operation result of the message to which function f is applied. The processor 200 can reduce the size of the public key and the amount of calculation required in the blind rotation calculation process.

프로세서(200)는 모든 홀수 t에 대하여 키 스위칭 키가 akt를 가지지 않고, RLWE 암호문의 차수에 기초한 2N과 모듈러스 q의 비교 결과에 따라 akg ak-g만을 이용하여 블라인드 로테이션 연산을 수행할 수 있다.The processor 200 determines that for all odd t, the key switching key does not have ak t , and ak g and Blind rotation operations can be performed using only ak -g .

프로세서(200)는 전처리 과정을 수행함으로써 LWE 암호문의 의 벡터 성분인 , 모듈러스 q 및 RLWE 암호문의 차수에 기초한 2N을 비교함으로써 필요한 블라인드 로테이션 키 및 키 스위칭 키를 생성할 수 있다.The processor 200 creates the LWE ciphertext by performing a preprocessing process. The vector component of , the required blind rotation key and key switching key can be generated by comparing the modulus q and 2N based on the degree of the RLWE ciphertext.

프로세서(200)는 블라인드 로테이션 연산을 수행하는 과정에서 의 벡터 성분 및 LWE 암호문의 벡터 성분의 범위인 모듈러스 q 및 생성된 RLWE 암호문의 차수의 두 배인 2N의 비교에 기초하여 수정된 벡터 를 생성할 수 있다. In the process of performing a blind rotation operation, the processor 200 The modified vector based on a comparison of the vector components of and the modulus q, which is the range of the vector components of the LWE ciphertext, and 2N, which is twice the degree of the generated RLWE ciphertext. can be created.

프로세서(200)는 수정된 벡터의 성분 의 성질에 기초하여 자기 동형 사상 연산, 인크리먼트 연산 및 키 스위칭 키 연산을 수행함으로써 RLWE 암호문을 업데이트할 수 있다.The processor 200 determines the components of the modified vector. Based on the properties of , the RLWE ciphertext can be updated by performing self-homomorphic mapping operations, increment operations, and key switching key operations.

프로세서(200)는 전처리 과정에서 생성된 수정된 벡터 의 값에 따라 추가적인 연산이 필요한 경우, 인크리먼트 연산을 수행하여 RLWE 암호문을 업데이트할 수 있다.The processor 200 processes the modified vector generated in the preprocessing process. If additional operations are required depending on the value of , the RLWE ciphertext can be updated by performing an increment operation.

프로세서(200)는 동형 암호 연산 결과로를 출력할 수 있다.The processor 200 produces a result of the homomorphic encryption operation. can be output.

프로세서(200)는 연산기(250)를 포함할 수 있다. 키 생성기(210) 및 연산기(250)는 서로 다른 장치에 구현될 수 있다. 예를 들어, 키 생성기(210)는 클라이언트에 구현되고, 연산기(250)는 서버 상에 구현될 수 있다.The processor 200 may include an operator 250. The key generator 210 and operator 250 may be implemented in different devices. For example, key generator 210 may be implemented on a client and operator 250 may be implemented on a server.

이하에서는, 프로세서(200)는 연산기(250)만을 포함하는 경우를 기준으로 설명한지만, 실시예에 따라 프로세서(200)는 키 생성기(210)를 포함할 수 있다.Hereinafter, the processor 200 will be described based on the case where it includes only the operator 250. However, depending on the embodiment, the processor 200 may include the key generator 210.

키 생성기(210)는 비밀 키를 생성할 수 있다(211). 키 생성기(210)는 비밀 키에 기초하여 공개 키를 생성할 수 있다(213). 공개 키는 키 스위칭 키 또는 블라인드 로테이션 키를 포함할 수 있다. 키 생성기(210)는 LWE 암호문 및 RLWE 암호문의 비밀 키를 생성할 수 있다. 키 생성기(210)는 생성한 비밀 키에 기초하여 LWE 암호문을 생성할 수 있다. Key generator 210 may generate a secret key (211). Key generator 210 may generate a public key based on the private key (213). The public key may include a key switching key or a blind rotation key. Key generator 210 may generate secret keys for LWE ciphertext and RLWE ciphertext. The key generator 210 may generate LWE ciphertext based on the generated secret key.

키 생성기(210)는 생성한 공개 키를 수신기(230) 또는 연산기(250)로 출력할 수 있다. 키 생성기(210)는 무선 또는 유선으로 생성한 공개 키를 전송할 수 있다.The key generator 210 may output the generated public key to the receiver 230 or the calculator 250. The key generator 210 can transmit the generated public key wirelessly or wired.

수신기(230)는 도 1의 수신기(100)와 동일하게 동작할 수 있다. 수신기(230)는 피연산 암호문(예: LWE 암호문)을 수신하여 연산기(250)로 출력할 수 있다.The receiver 230 may operate in the same manner as the receiver 100 of FIG. 1 . The receiver 230 may receive the operand ciphertext (e.g., LWE ciphertext) and output it to the operator 250.

연산기(250)는 피연산 암호문에 전처리를 수행하여 수정된 벡터를 생성할 수 있다. 연산기(200)는 LWE 암호문 을 수신하여 블라인드 로테이션 연산을 수행할 수 있다. 연산기(200)는 함수 f에 대한 메시지의 연산 결과를 를 이용하여 계산할 수 있다.The operator 250 may generate a modified vector by performing preprocessing on the operand ciphertext. The operator 200 is an LWE ciphertext A blind rotation operation can be performed by receiving. The operator 200 calculates the result of the message for function f. It can be calculated using .

연산기(250)는 LWE 암호문에 기초하여 전처리를 수행함으로써 수정된 벡터를 생성할 수 있다(251). 연산기(250)는 수정된 벡터를 키 생성기(210)로 출력할 수 있다.The operator 250 may generate a modified vector by performing preprocessing based on the LWE ciphertext (251). The operator 250 may output the modified vector to the key generator 210.

키 생성기(210)는 LWE 암호문 의 벡터 성분 의 각 벡터 성분 , 모듈러스 q 및 RLWE 암호문의 차수에 기초한 2N을 비교 분석할 수 있다. Key generator 210 generates LWE ciphertext Vector components of Each vector component of , modulus q and 2N based on the degree of the RLWE ciphertext can be compared and analyzed.

키 생성기(210)는 비교 분석 결과 를 생성하기 위한 생성자를 확인하고, 확인 결과 필요한 블라인드 로테이션 키 및 키 스위칭 키를 생성하여 연산기(250)에 전달할 수 있다.The key generator 210 is a comparative analysis result. The generator for generating can be checked, and as a result of the check, the necessary blind rotation key and key switching key can be generated and transmitted to the operator 250.

연산기(250)는 키 생성기(210)로부터 수신한 공개 키에 기초하여 블라인드 로테이션 연산을 반복적으로 수행할 수 있다(253). 연산기(250)는 인크리먼트 연산, 자기 동형 사상 연산 및 키 스위칭 연산을 수행할 수 있다. The operator 250 may repeatedly perform a blind rotation operation based on the public key received from the key generator 210 (253). The operator 250 may perform an increment operation, an automorphic mapping operation, and a key switching operation.

연산기(250)는 수정된 벡터의 성분 를 서로 소인 제1 집합 과 제2 집합으로 나눌 수 있다. 제1 집합은 이고, 제2 집합은 일 수 있다. 연산기(250)는 내의 벡터 성분에 대하여 블라인드 로테이션 연산을 수행하고, 에 대응하는 벡터 성분에 대하여 블라인드 로테이션 연산을 수행하고, 그 후, 에 대응하는 벡터 성분에 대하여 블라인드 로테이션 연산을 수행할 수 있다. 연산의 순서는 실시예에 따라 바뀔 수 있다. 블라인드 로테이션 연산의 과정은 도 3 내지 도 6을 참조하여 자세하게 설명한다.Operator 250 is a modified vector ingredients of can be divided into a first set and a second set that are prime to each other. The first set is , and the second set is It can be. The calculator 250 is Perform a blind rotation operation on the vector components within, Perform a blind rotation operation on the vector components corresponding to , and then, A blind rotation operation can be performed on the vector component corresponding to . The order of operations may change depending on the embodiment. The process of blind rotation calculation will be described in detail with reference to FIGS. 3 to 6.

연산기(250)는 벡터 와 수정된 벡터 의 차이에 의해 발생하는 부분에 대하여 최종 인크리먼트 연산을 수행할 수 있다(255). 연산기(250)는 최종 연산 결과로 RLWE 암호문인 를 출력할 수 있다.The operator 250 is a vector and modified vector A final increment operation can be performed on the part caused by the difference (255). The operator 250 produces the RLWE ciphertext as the final calculation result. can be output.

도 3은 도 1에 도시된 동형 암호 연산 장치의 동형 암호 연산 동작의 일 예를 나타낸다.FIG. 3 shows an example of a homomorphic encryption operation of the homomorphic encryption operation device shown in FIG. 1.

도 3을 참조하면, 도 3의 예시는 주어진 LWE 암호문의 모든 벡터 성분이 홀수인 경우의 블라인드 로테이션 연산 과정을 예시적으로 나타낼 수 있다.Referring to FIG. 3, the example of FIG. 3 may exemplarily illustrate a blind rotation operation process when all vector components of a given LWE ciphertext are odd numbers.

키 생성기(예: 도 2의 키 생성기(210))는 입력 LWE 암호문을 로 생성할 수 있다. 키 생성기(210)는 각 비밀 키에 대응하는 RGSW 암호문인 블라인드 로테이션 키 를 생성할 수 있다. 키 생성기(210)는 g 및 -g에 대응하는 자기 동형 사상 키 akg 및 ak-g를 생성할 수 있다. 키 생성기(210)는 로 변경하기 위한 키 스위칭 키를 생성할 수 있다. 키 생성기(210)는 생성한 LWE 암호문, 블라인드 로테이션 키, 자기 동형 사상 키 및 키 스위칭 키를 연산기(예: 도 2의 연산기(250))로 출력할 수 있다.A key generator (e.g., key generator 210 in Figure 2) generates the input LWE ciphertext. It can be created with The key generator 210 generates a blind rotation key, which is an RGSW ciphertext corresponding to each secret key. can be created. Key generator 210 may generate automorphic mapping keys ak g and ak -g corresponding to g and -g. Key generator 210 is cast You can create a key switching key to change to . The key generator 210 may output the generated LWE ciphertext, blind rotation key, homomorphic mapping key, and key switching key to an operator (eg, operator 250 in FIG. 2).

연산기(250)는 초기값을 설정할 수 있다(311). 연산기(250)는 환 성분(ring element)의 형태를 갖는 초기값을 설정할 수 있다.The calculator 250 can set an initial value (311). The operator 250 can set an initial value in the form of a ring element.

연산기(250)는 수정된 벡터의 성분 로 나눌 수 있다. 연산기(250)는 내의 벡터 성분에 대한 블라인드 로테이션 연산을 수행하기 위해 를 설정할 수 있다(313).The operator 250 is a component of the modified vector. cast and It can be divided into The calculator 250 is To perform a blind rotation operation on the vector components within can be set (313).

연산기(250)는 를 만족하는 i에 대하여 블라인드 로테이션 연산의 루프를 수행할 수 있다(315). 연산기(250)는 RGSW에 대하여 인크리먼트 연산을 수행할 수 있다(317). 연산기(250)는 g에 대한 자기 동형 사상 연산을 수행하고, 비밀 키를 원래의 비밀 키로 복원하기 위한 키 스위칭 연산을 수행할 수 있다(319).The calculator 250 is A loop of blind rotation operation can be performed for i that satisfies (315). The operator 250 may perform an increment operation on RGSW (317). The operator 250 may perform a homomorphic mapping operation on g and a key switching operation to restore the secret key to the original secret key (319).

연산기(250)는 321 및 323 동작을 통해 j=0을 제외한 모든 에 대하여 313 내지 319의 동작이 수행되었다는 것을 확인할 수 있다.The operator 250 calculates all values except j=0 through operations 321 and 323. It can be confirmed that operations 313 to 319 have been performed.

연산기(250)는 를 만족하는 i에 대하여 블라인드 로테이션 연산의 루프를 수행할 수 있다(325). 연산기(250)는 의 벡터 성분에 대하여 인크리먼트 연산을 수행할 수 있다(327). 연산기(250)는 -g에 대한 자기 동형 사상 연산을 수행하고, 비밀 키를 원래대로 복원하기 위한 키 스위칭 연산을 수행할 수 있다(329). The calculator 250 is A loop of blind rotation operation can be performed for i that satisfies (325). The calculator 250 is An increment operation can be performed on the vector components of (327). The operator 250 may perform a homomorphic mapping operation for -g and a key switching operation to restore the secret key to its original state (329).

연산기(250)는 를 설정할 수 있다(331). 연산기(250)는 를 만족하는 i에 대하여 블라인드 로테이션 연산의 루프를 수행할 수 있다(333). 연산기(250)는 의 벡터 성분에 대하여 인크리먼트 연산을 수행할 수 있다(335). 연산기(250)는 -g에 대한 자기 동형 사상 연산을 수행하고, 비밀 키를 원래대로 복원하기 위한 키 스위칭 연산을 수행할 수 있다(337). The calculator 250 is can be set (331). The calculator 250 is A loop of blind rotation operation can be performed for i that satisfies (333). The calculator 250 is An increment operation can be performed on the vector components (335). The operator 250 may perform a homomorphic mapping operation for -g and a key switching operation to restore the secret key to its original state (337).

연산기(250)는 339 및 341 동작을 통해 j'=0을 제외한 모든 에 대하여 313 내지 319의 동작이 수행되었다는 것을 확인할 수 있다. 연산기(250)는 343 및 345 동작을 통해 인크리먼트 연산을 수행하여 RLWE 암호문을 블라인드 로테이션 연산 결과로 출력할 수 있다.The operator 250 calculates all values except j'=0 through operations 339 and 341. It can be confirmed that operations 313 to 319 have been performed. The operator 250 may perform an increment operation through operations 343 and 345 and output the RLWE ciphertext as a blind rotation operation result.

도 3의 예시를 이용하여 벡터 성분의 크기에 관계없이 LWE 암호문의 벡터 성분이 홀수인 경우, 동형 암호 연산 장치(예: 도 1의 동형 암호 연산 장치(10))는 블라인드 로테이션 연산 시에 자기 동형 사상이 필요한 자기 동형 사상 키 및 키 스위칭 키의 개수를 최소화하여 동형 암호 연산을 수행할 수 있다.Using the example of FIG. 3, if the vector component of the LWE ciphertext is an odd number regardless of the size of the vector component, the homomorphic encryption operation device (e.g., the homomorphic encryption operation device 10 of FIG. 1) performs self-homomorphism during blind rotation operation. Homomorphic encryption operations can be performed by minimizing the number of self-homomorphic mapping keys and key switching keys that require mapping.

도 4는 도 1에 도시된 동형 암호 연산 장치의 동형 암호 연산 동작의 다른 예를 나타낸다.FIG. 4 shows another example of the homomorphic encryption operation of the homomorphic encryption operation device shown in FIG. 1.

도 4를 참조하면, LWE 암호문 에 짝수인 벡터 성분이 포함되어 있는 경우의 블라인드 로테이션 연산 과정을 나타낼 수 있다.Referring to Figure 4, LWE ciphertext It can represent the blind rotation calculation process when contains an even number of vector components.

키 생성기(예: 도 2의 키 생성기(210))는 입력 LWE 암호문을 로 생성할 수 있다. 키 생성기(210)는 각 비밀 키에 대응하는 RGSW 암호문인 블라인드 로테이션 키 를 생성할 수 있다. 키 생성기(210)는 비밀 키의 벡터 성분의 음의 합에 대응하는 RGSW 암호문인 를 블라인드 로테이션 키로 생성할 수 있다.A key generator (e.g., key generator 210 in Figure 2) generates the input LWE ciphertext. It can be created with The key generator 210 generates a blind rotation key, which is an RGSW ciphertext corresponding to each secret key. can be created. The key generator 210 generates an RGSW ciphertext corresponding to the negative sum of the vector components of the secret key. can be created with a blind rotation key.

키 생성기(210)는 g 및 -g에 대응하는 자기 동형 사상 키 akg 및 ak-g를 생성할 수 있다. 키 생성기(210)는 로 변경하기 위한 키 스위칭 키를 생성할 수 있다. 키 생성기(210)는 생성한 LWE 암호문, 블라인드 로테이션 키, 자기 동형 사상 키 및 키 스위칭 키를 연산기(예: 도 2의 연산기(250))로 출력할 수 있다.Key generator 210 may generate automorphic mapping keys ak g and ak -g corresponding to g and -g. Key generator 210 is cast You can create a key switching key to change to . The key generator 210 may output the generated LWE ciphertext, blind rotation key, homomorphic mapping key, and key switching key to an operator (eg, operator 250 in FIG. 2).

연산기(250)는 초기값을 설정할 수 있다(411). 연산기(250)는 환 성분의 형태를 갖는 초기값을 설정할 수 있다. 연산기(250)는 피연산 암호문의 벡터 성분 중에서 홀수의 개수 및 짝수의 개수를 획득하여 비교할 수 있다(413).The calculator 250 can set an initial value (411). The calculator 250 can set an initial value in the form of a ring component. The operator 250 can obtain and compare the number of odd numbers and the number of even numbers among the vector components of the operand ciphertext (413).

짝수의 개수가 더 많은 경우, 연산기(250)는 을 이용하여 인크리먼트 연산을 수행할 수 있다(415). 연산기(250)는 LWE 암호문 로 변경할 수 있다(417).If the number of even numbers is greater, the operator 250 An increment operation can be performed using (415). The operator 250 is an LWE ciphertext cast It can be changed to (417).

홀수의 개수가 더 많은 경우, 연산기(250)는 LWE 암호문을 기존 형태로 유지할 수 있다(419). 연산기(250)는 i=0으로 설정할 수 있다(421). 연산기(250)는 i=0부터 시작하여, i<n을 만족하는 i에 대하여 벡터 성분이 짝수인지를 확인할 수 있다(423).If the number of odd numbers is greater, the operator 250 can maintain the LWE ciphertext in its existing form (419). The operator 250 can set i=0 (421). Starting from i=0, the operator 250 can check whether the vector component for i satisfying i<n is an even number (423).

벡터 성분이 짝수인 경우, 연산기(250)는 에 기초하여 수정된 벡터를 생성할 수 있다(425). 벡터 성분이 홀수인 경우, 연산기(250)는 에 기초하여 수정된 벡터를 생성할 수 있다(427). 연산기(250)는 i를 증가시킬 수 있다(429). 연산기(250)는 i<n을 판단할 수 있다(431). 연산기(250)는 423 내지 431 과정을 이용하여 모든 벡터 성분이 홀수인 수정된 벡터 를 생성할 수 있다.If the vector component is an even number, the operator 250 A modified vector can be generated based on (425). If the vector component is odd, the operator 250 A modified vector can be generated based on (427). The operator 250 may increase i (429). The operator 250 may determine i<n (431). The operator 250 uses processes 423 to 431 to generate a modified vector in which all vector components are odd. can be created.

연산기(250)는 수정된 벡터 및 비밀 키에 기초하여 블라인드 로테이션 연산을 수행할 수 있다(433). 블라인드 로테이션 연산의 수행 과정은 도 3과 동일할 수 있다.Operator 250 is a modified vector and secret key A blind rotation operation can be performed based on (433). The process of performing the blind rotation operation may be the same as in FIG. 3.

연산기(250)는 435 내지 443 과정을 이용하여, LWE 연산의 벡터 성분이 짝수인 경우, RGSW 암호문의 인크리먼트 연산을 추가적으로 수행할 수 있다. 연산기(250)는 가 짝수인지를 판단할 수 있다(435). 짝수인 경우, 연산기(250)는 의 인크리먼트 연산을 수행할 수 있다(439). 연산기(250)는 i를 증가시킬 수 있다(441). 연산기(250)는 i<n을 판단할 수 있다(443). 가 홀수인 경우, 연산기(250)는 443 동작을 수행할 수 있다.The operator 250 may additionally perform an increment operation of the RGSW ciphertext using processes 435 to 443 when the vector component of the LWE operation is an even number. The calculator 250 is It is possible to determine whether is an even number (435). If it is an even number, the operator 250 The increment operation can be performed (439). The operator 250 may increase i (441). The operator 250 may determine i<n (443). If is an odd number, the calculator 250 can perform operation 443.

연산기(250)는 최종 연산 결과로 RLWE 암호문을 출력할 수 있다.The operator 250 may output RLWE ciphertext as the final calculation result.

도 4의 예시를 이용하여 연산기(250)는 LWE 암호문의 벡터 성분에 짝수가 포함되어 있을 경우에, 블라인드 로테이션 연산 키를 하나만 추가하여 메모리의 저장 공간을 효율적으로 사용할 수 있다. 연산기(250)는 RGSW 암호문을 이용한 인크리먼트 연산을 최대 회만 발생시킴으로써 메모리와 연산 간의 트레이드 오프 관계를 조절할 수 있다.Using the example of FIG. 4, when the vector component of the LWE ciphertext includes an even number, the operator 250 can efficiently use the storage space of the memory by adding only one blind rotation operation key. The operator 250 performs an increment operation using the RGSW ciphertext up to By generating only one time, the trade-off relationship between memory and computation can be adjusted.

도 5는 도 1에 도시된 동형 암호 연산 장치의 동형 암호 연산 동작의 또 다른 예를 나타낸다.FIG. 5 shows another example of the homomorphic encryption operation of the homomorphic encryption operation device shown in FIG. 1.

도 5를 참조하면, 도 5의 예시는 LWE 암호문의 벡터 성분에 짝수인 성분이 포함된 경우의 블라인드 로테이션 연산 과정을 예시적으로 나타낼 수 있다.Referring to FIG. 5, the example of FIG. 5 may exemplarily illustrate a blind rotation calculation process when the vector components of the LWE ciphertext include even components.

키 생성기(예: 도 2의 키 생성기(210))는 입력 LWE 암호문을 로 생성할 수 있다. 키 생성기(210)는 각 비밀 키에 대응하는 RGSW 암호문인 블라인드 로테이션 키 를 생성할 수 있다. 키 생성기(210)는 비밀 키의 벡터 성분의 음의 합에 대응하는 RGSW 암호문인 를 블라인드 로테이션 키로 생성할 수 있다. 키 생성기(210)는 연속된 벡터 성분의 합에 기초한 RGSW 암호문인 를 블라인드 로테이션 키로 생성할 수 있다.A key generator (e.g., key generator 210 in Figure 2) generates the input LWE ciphertext. It can be created with The key generator 210 generates a blind rotation key, which is an RGSW ciphertext corresponding to each secret key. can be created. The key generator 210 generates an RGSW ciphertext corresponding to the negative sum of the vector components of the secret key. can be created with a blind rotation key. The key generator 210 is an RGSW ciphertext based on the sum of consecutive vector components. can be created with a blind rotation key.

키 생성기(210)는 g 및 -g에 대응하는 자기 동형 사상 키 akg 및 ak-g를 생성할 수 있다. 키 생성기(210)는 로 변경하기 위한 키 스위칭 키를 생성할 수 있다. 키 생성기(210)는 생성한 LWE 암호문, 블라인드 로테이션 키, 자기 동형 사상 키 및 키 스위칭 키를 연산기(예: 도 2의 연산기(250))로 출력할 수 있다.Key generator 210 may generate automorphic mapping keys ak g and ak -g corresponding to g and -g. Key generator 210 is cast You can create a key switching key to change to . The key generator 210 may output the generated LWE ciphertext, blind rotation key, homomorphic mapping key, and key switching key to an operator (eg, operator 250 in FIG. 2).

연산기(250)는 초기값을 설정할 수 있다(511). 연산기(250)는 환 성분의 형태를 갖는 초기값을 설정할 수 있다. 연산기(250)는 LWE 암호문의 벡터 성분의 첫 번째 성분이 짝수인지 여부를 판단할 수 있다(513).The operator 250 can set an initial value (511). The calculator 250 can set an initial value in the form of a ring component. The operator 250 may determine whether the first component of the vector component of the LWE ciphertext is an even number (513).

첫 번째 성분이 짝수인 경우, 연산기(250)는 를 이용하여 인크리먼트 연산을 수행할 수 있다(515). 연산기(250)는 LWE 암호문 로 변경할 수 있다(517). 첫 번째 성분이 홀수인 경우, 연산기(250)는 LWE 암호문을 기존 형태로 유지할 수 있다(519). If the first component is an even number, the operator 250 An increment operation can be performed using (515). The operator 250 is an LWE ciphertext cast It can be changed to (517). If the first component is odd, the operator 250 can maintain the LWE ciphertext in its existing form (519).

연산기(250)는 521 내지 531의 동작을 수행하여 LWE 암호문의 벡터 성분을 자기 동형 사상 연산이 가능한 값으로 변경할 수 있다. 연산기(250)는 i=0부터 연산을 시작할 수 있다(521).The operator 250 may perform operations 521 to 531 to change the vector component of the LWE ciphertext into a value capable of performing a self-homomorphic mapping operation. The operator 250 may start calculation from i=0 (521).

연산기(250)는 벡터 성분 이 홀수인지 여부를 판단할수 있다(523). 홀수인 경우, 연산기(250)는 비밀 키 벡터와 수정된 벡터를 와 같이 설정할 수 있다(525).Operator 250 is a vector component It is possible to determine whether this is an odd number (523). If it is an odd number, the operator 250 combines the secret key vector and the modified vector. and It can be set as follows (525).

짝수인 경우, 연산기(250)는 비밀 키 벡터와 수정된 벡터를 와 같이 설정할 수 있다(527).If the number is even, the operator 250 combines the secret key vector and the modified vector. and It can be set as follows (527).

연산기(250)는 i를 증가시킬 수 있다(529). 연산기(250)는 i<n-1을 판단할 수 있다(531). 531의 조건이 만족되지 않는 경우, 연산기(250)는 수정된 벡터 와 새로운 비밀 키 벡터 를 이용하여 블라인드 로테이션 연산을 수행할 수 있다. 블라인드 로테이션 연산은 도 3에서 설명한 것과 동일하게 수행될 수 있다.The operator 250 may increase i (529). The operator 250 may determine i<n-1 (531). If the condition of 531 is not satisfied, the operator 250 calculates the modified vector and new secret key vector You can perform blind rotation calculation using . The blind rotation operation can be performed in the same way as described in FIG. 3.

연산기(250)는 최종 연산 결과로 RLWE 암호문을 출력할 수 있다.The operator 250 may output RLWE ciphertext as the final calculation result.

도 5의 예시를 이용하여 연산기(250)는 LWE 암호문의 벡터 성분에 짝수가 포함되어 있을 경우에, 첫 번째 벡터 성분의 홀수 여부에 따라, RGSW 암호문을 이용한 인크리먼트 연산을 1번만 추가적으로 수행할 수 있다. 따라서, 연산기(250)는 연산량을 감소시켜 효율적으로 동형 암호 연산을 수행할 수 있다. 이 때, 블라인드 로테이션 키는 N+1개 추가로 생성되기 때문에 메모리와 연산량 사이에 트레이드 오프가 발생할 수 있다.Using the example of FIG. 5, when the vector component of the LWE ciphertext includes an even number, the operator 250 may additionally perform an increment operation using the RGSW ciphertext only once, depending on whether the first vector component is an odd number. You can. Accordingly, the calculator 250 can efficiently perform homomorphic encryption calculations by reducing the amount of calculation. At this time, since N+1 additional blind rotation keys are generated, a trade-off may occur between memory and calculation amount.

도 6은 도 1에 도시된 동형 암호 연산 장치의 동형 암호 연산 동작의 또 다른 예를 나타낸다.FIG. 6 shows another example of the homomorphic encryption operation of the homomorphic encryption operation device shown in FIG. 1.

도 6을 참조하면, 도 6의 예시는 블라인드 로테이션 연산이 수행될 때, 인 경우 또는 LWE 암호문의 벡터 성분을 생성하는 생성자가 으로 유일한 경우를 나타낼 수 있다. 이 경우, 모든 벡터 성분은 4로 나눈 나머지가 1일 수 있고, 의 형태를 가지고, 음수의 형태를 갖지 않을 수 있다.Referring to FIG. 6, the example in FIG. 6 is when a blind rotation operation is performed, If or the constructor that generates the vector components of the LWE ciphertext is The unique case can be expressed as In this case, all vector components may have a remainder of 1 when divided by 4, It has the form of and may not have the form of a negative number.

키 생성기(예: 도 2의 키 생성기(210))는 입력 LWE 암호문을 로 생성할 수 있다. 키 생성기(210)는 각 비밀 키에 대응하는 RGSW 암호문인 블라인드 로테이션 키 를 생성할 수 있다. akg'을 생성하고, 로 변경하기 위한 키 스위칭 키를 생성할 수 있다. 키 생성기(210)는 생성한 LWE 암호문, 블라인드 로테이션 키, 자기 동형 사상 키 및 키 스위칭 키를 연산기(예: 도 2의 연산기(250))로 출력할 수 있다.A key generator (e.g., key generator 210 in Figure 2) generates the input LWE ciphertext. It can be created with The key generator 210 generates a blind rotation key, which is an RGSW ciphertext corresponding to each secret key. can be created. create ak g' , cast You can create a key switching key to change to . The key generator 210 may output the generated LWE ciphertext, blind rotation key, homomorphic mapping key, and key switching key to an operator (eg, operator 250 in FIG. 2).

연산기(250)는 초기값을 설정할 수 있다(611). 연산기(250)는 환 성분의 형태를 갖는 초기값을 설정할 수 있다. 연산기(250)는 각각의 벡터 성분 로 나누고, 내의 벡터 성분들로부터 블라인드 로테이션 연산을 시작하기 위해서 j=ord-1로 설정할 수 있다(613). Ord는 를 만족하는 가장 작은 양의 정수를 의미할 수 있다.The calculator 250 can set an initial value (611). The calculator 250 can set an initial value in the form of a ring component. The operator 250 operates on each vector component. cast Divide by, j=ord-1 can be set to start a blind rotation operation from the vector components within (613). Ord is It can mean the smallest positive integer that satisfies .

연산기(250)는 내의 모든 성분에 대하여 블라인드 로테이션 연산을 수행할 수 있다(615). 연산기(250)는 RGSW에 대하여 인크리먼트 연산을 수행할 수 있다(617). 연산기(250)는 에 대하여 자기 동형 사상 연산을 수행하고, 비밀 키를 원래의 비밀 키로 복원시키기 위해서 키 스위칭 연산을 수행할 수 있다(619). The calculator 250 is A blind rotation operation can be performed on all components within (615). The operator 250 may perform an increment operation on RGSW (617). The calculator 250 is A self-homomorphic mapping operation may be performed on , and a key switching operation may be performed to restore the secret key to the original secret key (619).

연산기(250)는 621 및 623 과정을 통해, j=0을 제외한 모든 에 대하여 615 내지 619 과정이 수행되었는지 여부를 확인할 수 있다.The calculator 250 calculates all values except j=0 through processes 621 and 623. It is possible to check whether processes 615 to 619 have been performed.

연산기(250)는 625 과정을 통해서 의 모든 벡터 성분에 대하여 인크리먼트 연산을 수행할 수 있다(627). 연산기(250)는 RLWE 암호문을 블라인드 로테이션 연산 결과로 출력할 수 있다.The calculator 250 operates through process 625. An increment operation can be performed on all vector components of (627). The operator 250 can output the RLWE ciphertext as a blind rotation operation result.

통형 암호 연산 장치(예: 도 1의 동형 암호 연산 장치(10))는 LWE 암호문의 벡터 성분 또는 동형 암호의 파라미터 값에 따라 도 6의 예시를 적용함으로써 단 하나의 자기 동형 사상 키를 이용하여 동형 암호 연산을 효율적으로 수행할 수 있다.A homomorphic encryption operation device (e.g., the homomorphic encryption operation device 10 in FIG. 1) uses the example of FIG. 6 according to the vector components of the LWE ciphertext or the parameter values of the homomorphic encryption to achieve homomorphism using only one self-homomorphic mapping key. Cryptographic operations can be performed efficiently.

다른 실시예로, 연산기(250)가 LWE 암호문의 벡터 성분을 로 나눌 경우 일부 j에 대해서 가 모두 공집합일 수 있다. 이 경우, 연산기(250)는 생성자에 대한 자기 동형 사상 키를 복수 개 생성하여 사용함으로써 불필요한 블라인드 로테이션 횟수를 줄일 수 있다. 예를 들어, 연산기(250)는 자기 동형 사상 키로 akg, ??, akgb, ak-g를 생성할 수 있다. 복수 개의 동형 사상 키를 생성하는 실시예는 도 3 내지 도 6의 실시예에 모두 적용될 수 있다.In another embodiment, the operator 250 calculates the vector components of the LWE ciphertext. For some j when divided by and may all be empty sets. In this case, the operator 250 can reduce the number of unnecessary blind rotations by generating and using a plurality of self-homomorphic mapping keys for the generator. For example, the operator 250 can generate ak g , ??, ak gb , and ak -g as automorphic mapping keys. The embodiment of generating a plurality of homomorphic mapping keys can be applied to all of the embodiments of FIGS. 3 to 6.

도 7은 도 1에 도시된 동형 암호 연산 장치의 키 생성 동작의 예를 나타낸다.FIG. 7 shows an example of a key generation operation of the homomorphic encryption operation device shown in FIG. 1.

도 7을 참조하면, 키 생성기(예: 도 2의 키 생성기(210))는 인 경우, 또는 피연산 암호문(예: LWE 암호문) 의 벡터 성분을 생성하는 생성자가 으로 유일한 경우, 도 6의 예시에 나타난 블라인드 로테이션 연산을 수행하기 위해 LWE 암호문의 벡터 성분을 생성하는 생성자 값에 기초하여 , akg'을 생성하고, 로 변경하기 위한 키 스위칭 키를 생성할 수 있다.Referring to Figure 7, the key generator (e.g., key generator 210 of Figure 2) If , or the operand ciphertext (e.g. LWE ciphertext) The constructor that creates the vector components of In the unique case, a generator that generates vector components of the LWE ciphertext to perform the blind rotation operation shown in the example in Figure 6. based on value , ak g' , cast You can create a key switching key to change to .

키 생성기(250)는 또는 생성자가 으로 유일한지 여부를 판단할 수 있다(711). 키 생성기(250)는 711의 조건을 만족하는 경우, , akg'을 생성하고, 로 변경하기 위한 키 스위칭 키를 생성할 수 있다(713). 키 생성기(250)는 713에서 생성된 공개 키를 연산기(예: 도 2의 연산기(250))로 전달할 수 있다(725).Key generator 250 is or the constructor You can determine whether it is unique (711). If the key generator 250 satisfies the condition 711, , ak g' , cast You can create a key switching key to change to (713). The key generator 250 may transmit the public key generated at 713 to an operator (e.g., the operator 250 of FIG. 2) (725).

생성자가 유일하지 않은 경우, 키 생성기(250)는 벡터 성분에 짝수가 존재하는지 여부를 판단하여, 도 3의 실시예와 같은 공개 키를 생성할 수 있다. 또는, 키 생성기(250)는 메모리 효율 및 연산 효율의 중요도를 판단하여 도 4 및 도 5의 실시예와 같은 공개키를 생성하여 연산기(250)로 전달할 수 있다.If the generator is not unique, the key generator 250 may determine whether an even number exists in the vector components and generate a public key as in the embodiment of FIG. 3. Alternatively, the key generator 250 may determine the importance of memory efficiency and computational efficiency, generate a public key like the embodiment of FIGS. 4 and 5, and transmit it to the calculator 250.

키 생성기(250)는 711의 조건이 만족되지 않는 경우, 가 홀수인지 여부를 판단할 수 있다(715). 가 홀수인 경우, 키 생성기(250)는 , akg 및 ak-g를 생성할 수 있다(717). 키 생성기(250)는 717에서 생성된 공개 키를 연산기(250)로 전달할 수 있다(725).If the condition of 711 is not satisfied, the key generator 250 It is possible to determine whether is an odd number (715). If is an odd number, the key generator 250 , ak g and ak -g can be generated (717). The key generator 250 may transmit the public key generated at 717 to the operator 250 (725).

가 짝수인 경우, 키 생성기(250)는 메모리 효율과 연산 효율 중에서 중요도가 높은 하나를 선택할 수 있다(719). 메모리 효율의 중요도가 높은 경우, 키 생성기(250)는 블라인드 로테이션 키 를 생성하고, 자기 동형 사상 키 akg 및 ak-g를 생성할 수 있다(721). 키 생성기(250)는 721에서 생성된 공개 키를 연산기(250)로 전달할 수 있다(725). If is an even number, the key generator 250 can select the one with higher importance among memory efficiency and computational efficiency (719). When memory efficiency is of high importance, the key generator 250 uses a blind rotation key and , and the automorphic mapping keys ak g and ak -g can be generated (721). The key generator 250 may transmit the public key generated at 721 to the operator 250 (725).

연산 효율의 중요도가 높은 경우, 키 생성기(250)는 블라인드 로테이션 키 , 를 생성하고, 자기 동형 사상 키 akg 및 ak-g를 생성할 수 있다(723). 키 생성기(250)는 723에서 생성된 공개 키를 연산기(250)로 전달할 수 있다(725).When computational efficiency is of high importance, the key generator 250 generates a blind rotation key. , and , and the automorphic mapping keys ak g and ak -g can be generated (723). The key generator 250 may transmit the public key generated at 723 to the operator 250 (725).

도 8은 도 1에 도시된 동형 암호 연산 장치의 동작의 흐름도를 나타낸다.FIG. 8 shows a flowchart of the operation of the homomorphic encryption operation device shown in FIG. 1.

도 8을 참조하면, 수신기(예: 도 1의 수신기(100))는 블라인드 로테이션 연산을 수행하기 위한 공개 키 및 블라인드 로테이션 연산의 피연산 암호문을 수신할 수 있다. 공개 키는 블라인드 로테이션 키, 자기 동형 사상 키 및 키 스위칭 키를 포함할 수 있다(810).Referring to FIG. 8, a receiver (e.g., receiver 100 of FIG. 1) may receive a public key for performing a blind rotation operation and an operand ciphertext of the blind rotation operation. The public key may include a blind rotation key, an automorphic mapping key, and a key switching key (810).

프로세서(200)는 블라인드 로테이션 연산의 출력 암호문의 다항식의 차수 및 피연산 암호문의 모듈러스에 기초하여 피연산 암호문의 벡터 성분에 전처리를 수행함으로써 수정된 벡터를 생성할 수 있다(830).The processor 200 may generate a modified vector by performing preprocessing on the vector components of the operand ciphertext based on the degree of the polynomial of the output ciphertext of the blind rotation operation and the modulus of the operand ciphertext (830).

프로세서(200)는 피연산 암호문의 모듈러스와 출력 암호문의 차수를 비교할 수 있다. 프로세서(200)는 비교 결과에 기초하여 수정된 벡터를 생성할 수 있다.The processor 200 may compare the modulus of the operand ciphertext and the degree of the output ciphertext. The processor 200 may generate a modified vector based on the comparison result.

프로세서(200)는 피연산 암호문의 벡터 성분 중에서 일부에 기초하여 제1 집합을 생성할 수 있다. 프로세서(200)는 제1 집합과 서로 소인 제2 집합에 기초하여 수정된 벡터를 생성할 수 있다.The processor 200 may generate the first set based on some of the vector components of the operand ciphertext. Processor 200 may generate a modified vector based on the first set and the second set that are mutually prime.

프로세서(200)는 공개 키 및 수정된 벡터에 기초하여 블라인드 로테이션 연산을 수행함으로써 동형 암호 연산 결과를 생성할 수 있다(850). 공개 키는 수정된 벡터 및 비밀 키(secret key)에 기초하여 생성될 수 있다.The processor 200 may generate a homomorphic encryption operation result by performing a blind rotation operation based on the public key and the modified vector (850). The public key can be generated based on the modified vector and secret key.

프로세서(200)는 피연산 암호문의 벡터 성분의 생성자(generator)가 유일한 경우, 생성자에 기초하여 루프 인덱스를 결정할 수 있다. 프로세서(200)는 루프 인덱스에 기초하여 블라인드 로테이션 연산을 수행할 수 있다.If the generator of the vector component of the operand ciphertext is unique, the processor 200 may determine the loop index based on the generator. The processor 200 may perform a blind rotation operation based on the loop index.

프로세서(200)는 피연산 암호문의 제1 집합에 기초하여 제1 블라인드 연산을 수행할 수 있다. 프로세서(200)는 피연산 암호문의 제2 집합에 기초하여 제2 블라인드 연산을 수행할 수 있다.The processor 200 may perform a first blind operation based on the first set of operand ciphertexts. The processor 200 may perform a second blind operation based on the second set of operand ciphertexts.

프로세서(200)는 수정된 벡터에 기초하여 인크리먼트(increment) 연산, 자기 동형 사상(automorphism) 연산 및 키 스위칭(key switching) 연산을 수행함으로써 블라인드 로테이션 연산을 수행할 수 있다.The processor 200 may perform a blind rotation operation by performing an increment operation, an automorphism operation, and a key switching operation based on the modified vector.

프로세서(200)는 피연산 암호문의 벡터 성분의 홀수의 개수 및 짝수의 개수를 획득할 수 있다. 프로세서(200)는 홀수의 개수 및 짝수의 개수의 비교 결과에 기초하여 암호문의 벡터 성분에 1을 더할 수 있다.The processor 200 may obtain an odd number and an even number of vector components of the operand ciphertext. The processor 200 may add 1 to the vector component of the ciphertext based on the comparison result of the odd number and the even number.

프로세서(200)는 피연산 암호문의 벡터 성분이 짝수인 경우, 공개 키의 비밀 키의 벡터 성분, 비밀 키의 벡터 성분의 음의 합(negative sum) 및 비밀 키의 벡터 성분 중에서 연속된 벡터 성분들의 합에 기초한 블라인드 로테이션 키에 기초하여 블라인드 로테이션 연산을 수행할 수 있다.If the vector component of the operand ciphertext is an even number, the processor 200 determines the vector component of the secret key of the public key, the negative sum of the vector component of the secret key, and the vector components of the secret key. A blind rotation operation can be performed based on the sum-based blind rotation key.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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., singly or in combination. Program instructions recorded on the medium may be specially designed and configured for the embodiment or may be known and available to those skilled in the art of 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 optical media (magneto-optical media) and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, etc. Examples of program instructions include machine language code, such as that produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter, etc. 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 these, which may configure a processing unit to operate as desired, or may be processed independently or collectively. You can command the device. Software and/or data may be used on any type of machine, component, physical device, virtual equipment, computer storage medium or device to be interpreted by or to provide instructions or data to a processing device. , or may be permanently or temporarily embodied in a transmitted signal wave. Software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored on one or more computer-readable recording media.

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

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

Claims (20)

동형 암호(homomorphic encryption) 연산 장치에 있어서,
블라인드 로테이션 연산(blind rotation operation)을 수행하기 위한 공개 키(public key) 및 상기 블라인드 로테이션 연산의 피연산 암호문(operand ciphertext)을 수신하는 수신기; 및
상기 블라인드 로테이션 연산의 출력 암호문의 다항식의 차수 및 상기 피연산 암호문의 모듈러스에 기초하여 상기 피연산 암호문의 벡터 성분에 전처리를 수행함으로써 수정된 벡터를 생성하고,
상기 공개 키 및 상기 수정된 벡터에 기초하여 블라인드 로테이션 연산을 수행함으로써 동형 암호 연산 결과를 생성하는 프로세서
를 포함하는 동형 암호 연산 장치.
In a homomorphic encryption operation device,
A receiver that receives a public key for performing a blind rotation operation and an operand ciphertext of the blind rotation operation; and
Generating a modified vector by performing preprocessing on vector components of the operand ciphertext based on the degree of the polynomial of the output ciphertext of the blind rotation operation and the modulus of the operand ciphertext,
A processor that generates a homomorphic cryptographic operation result by performing a blind rotation operation based on the public key and the modified vector.
A homomorphic cryptographic operation device comprising a.
제1항에 있어서,
상기 공개 키는,
블라인드 로테이션 키, 자기 동형 사상 키(automorphism key) 및 키 스위칭 키(key switching key)를 포함하고,
동형 암호 연산 장치.
According to paragraph 1,
The public key is,
Includes a blind rotation key, an automorphism key and a key switching key,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 공개 키는,
상기 수정된 벡터 및 비밀 키(secret key)에 기초하여 생성되는,
동형 암호 연산 장치.
According to paragraph 1,
The public key is,
Generated based on the modified vector and secret key,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 모듈러스와 상기 출력 암호문의 차수를 비교하고,
비교 결과에 기초하여 상기 수정된 벡터를 생성하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Compare the modulus and the degree of the output ciphertext,
generating the modified vector based on the comparison results,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 피연산 암호문의 벡터 성분 중에서 일부에 기초하여 제1 집합을 생성하고,
상기 제1 집합과 서로 소인 제2 집합에 기초하여 상기 수정된 벡터를 생성하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Generate a first set based on some of the vector components of the operand ciphertext,
generating the modified vector based on a second set that is prime to the first set,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 피연산 암호문의 벡터 성분의 생성자(generator)가 유일한 경우,
상기 생성자에 기초하여 루프 인덱스를 결정하고,
상기 루프 인덱스에 기초하여 상기 블라인드 로테이션 연산을 수행하는,
동형 암호 연산 장치.

According to paragraph 1,
The processor,
If the generator of the vector component of the operand ciphertext is unique,
Determine a loop index based on the constructor,
Performing the blind rotation operation based on the loop index,
Homomorphic cryptographic computing unit.

제1항에 있어서,
상기 프로세서는,
상기 피연산 암호문의 제1 집합에 기초하여 제1 블라인드 연산을 수행하고,
상기 피연산 암호문의 제2 집합에 기초하여 제2 블라인드 연산을 수행하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
perform a first blind operation based on the first set of operand ciphertexts,
performing a second blind operation based on the second set of operand ciphertexts,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 수정된 벡터에 기초하여 인크리먼트(increment) 연산, 자기 동형 사상(automorphism) 연산 및 키 스위칭(key switching) 연산을 수행함으로써 상기 블라인드 로테이션 연산을 수행하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Performing the blind rotation operation by performing an increment operation, an automorphism operation, and a key switching operation based on the modified vector,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 피연산 암호문의 벡터 성분의 홀수의 개수 및 짝수의 개수를 획득하고,
상기 홀수의 개수 및 상기 짝수의 개수의 비교 결과에 기초하여 상기 피연산 암호문의 벡터 성분에 1을 더하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Obtaining an odd number and an even number of vector components of the operand ciphertext,
Adding 1 to the vector component of the operand ciphertext based on a comparison result of the odd number and the even number,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 피연산 암호문의 벡터 성분이 짝수인 경우,
상기 공개 키의 비밀 키의 벡터 성분, 상기 비밀 키의 벡터 성분의 음의 합(negative sum) 및 상기 비밀 키의 벡터 성분 중에서 연속된 벡터 성분들의 합에 기초한 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
If the vector component of the operand ciphertext is an even number,
The blind rotation operation based on a vector component of the private key of the public key, a negative sum of the vector components of the private key, and a blind rotation key based on the sum of successive vector components among the vector components of the private key. To perform,
Homomorphic cryptographic computing unit.
동형 암호(homomorphic encryption) 연산 방법에 있어서,
블라인드 로테이션 연산(blind rotation operation)을 수행하기 위한 공개 키(public key) 및 상기 블라인드 로테이션 연산의 피연산 암호문(operand ciphertext)을 수신하는 단계;
상기 블라인드 로테이션 연산의 출력 암호문의 다항식의 차수 및 상기 피연산 암호문의 모듈러스에 기초하여 상기 피연산 암호문의 벡터 성분에 전처리를 수행함으로써 수정된 벡터를 생성하는 단계; 및
상기 공개 키에 기초하여 상기 수정된 벡터에 블라인드 로테이션 연산을 수행함으로써 동형 암호 연산 결과를 생성하는 단계
를 포함하는 동형 암호 연산 방법.
In the homomorphic encryption operation method,
Receiving a public key for performing a blind rotation operation and an operand ciphertext of the blind rotation operation;
generating a modified vector by performing preprocessing on vector components of the operand ciphertext based on the degree of a polynomial of the output ciphertext of the blind rotation operation and the modulus of the operand ciphertext; and
Generating a homomorphic encryption operation result by performing a blind rotation operation on the modified vector based on the public key.
A homomorphic cryptographic operation method including.
제11항에 있어서,
상기 공개 키는,
블라인드 로테이션 키, 자기 동형 사상 키(automorphism key) 및 키 스위칭 키(key switching key)를 포함하고,
동형 암호 연산 방법.
According to clause 11,
The public key is,
Includes a blind rotation key, an automorphism key and a key switching key,
Homomorphic encryption operation method.
제11항에 있어서,
상기 공개 키는,
상기 수정된 벡터 및 비밀 키(secret key)에 기초하여 생성되는,
동형 암호 연산 방법.
According to clause 11,
The public key is,
Generated based on the modified vector and secret key,
Homomorphic encryption operation method.
제11항에 있어서,
상기 수정된 벡터를 생성하는 단계는,
상기 모듈러스와 상기 출력 암호문의 차수를 비교하는 단계; 및
비교 결과에 기초하여 상기 수정된 벡터를 생성하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 11,
The step of generating the modified vector is,
Comparing the modulus and the degree of the output ciphertext; and
generating the modified vector based on the comparison result
A homomorphic cryptographic operation method including.
제11항에 있어서,
상기 수정된 벡터를 생성하는 단계는,
상기 피연산 암호문의 벡터 성분 중에서 일부에 기초하여 제1 집합을 생성하는 단계; 및
상기 제1 집합과 서로 소인 제2 집합에 기초하여 상기 수정된 벡터를 생성하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 11,
The step of generating the modified vector is,
generating a first set based on some of the vector components of the operand ciphertext; and
generating the modified vector based on a second set that is mutually prime with the first set.
A homomorphic cryptographic operation method including.
제11항에 있어서,
상기 동형 암호 연산 결과를 생성하는 단계는,
상기 피연산 암호문의 벡터 성분의 생성자(generator)가 유일한 경우, 상기 생성자에 기초하여 루프 인덱스를 결정하는 단계; 및
상기 루프 인덱스에 기초하여 상기 블라인드 로테이션 연산을 수행하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 11,
The step of generating the homomorphic encryption operation result is,
If the generator of the vector component of the operand ciphertext is unique, determining a loop index based on the generator; and
Performing the blind rotation operation based on the loop index
A homomorphic cryptographic operation method including.
제11항에 있어서,
상기 동형 암호 연산 결과를 생성하는 단계는,
상기 피연산 암호문의 제1 집합에 기초하여 제1 블라인드 연산을 수행하는 단계; 및
상기 피연산 암호문의 제2 집합에 기초하여 제2 블라인드 연산을 수행하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 11,
The step of generating the homomorphic encryption operation result is,
performing a first blind operation based on the first set of operand ciphertexts; and
performing a second blind operation based on the second set of operand ciphertexts.
A homomorphic cryptographic operation method including.
제11항에 있어서,
상기 동형 암호 연산 결과를 생성하는 단계는,
상기 수정된 벡터에 기초하여 인크리먼트(increment) 연산, 자기 동형 사상(automorphism) 연산 및 키 스위칭(key switching) 연산을 수행함으로써 상기 블라인드 로테이션 연산을 수행하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 11,
The step of generating the homomorphic encryption operation result is,
Performing the blind rotation operation by performing an increment operation, an automorphism operation, and a key switching operation based on the modified vector.
A homomorphic cryptographic operation method including.
제11항에 있어서,
상기 동형 암호 연산 결과를 생성하는 단계는,
상기 피연산 암호문의 벡터 성분의 홀수의 개수 및 짝수의 개수를 획득하고,
상기 홀수의 개수 및 상기 짝수의 개수의 비교 결과에 기초하여 상기 피연산 암호문의 벡터 성분에 1을 더하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 11,
The step of generating the homomorphic encryption operation result is,
Obtaining an odd number and an even number of vector components of the operand ciphertext,
Adding 1 to the vector component of the operand ciphertext based on a comparison result of the odd number and the even number.
A homomorphic cryptographic operation method including.
제1항에 있어서,
상기 동형 암호 연산 결과를 생성하는 단계는,
상기 피연산 암호문의 벡터 성분이 짝수인 경우, 상기 공개 키의 비밀 키의 벡터 성분, 상기 비밀 키의 벡터 성분의 음의 합(negative sum) 및 상기 비밀 키의 벡터 성분 중에서 연속된 벡터 성분들의 합에 기초한 블라인드 로테이션 키에 기초하여 상기 블라인드 로테이션 연산을 수행하는 단계
를 포함하는 동형 암호 연산 방법.
According to paragraph 1,
The step of generating the homomorphic encryption operation result is,
When the vector component of the operand ciphertext is an even number, the vector component of the private key of the public key, the negative sum of the vector components of the private key, and the sum of consecutive vector components among the vector components of the private key performing the blind rotation operation based on a blind rotation key based on
A homomorphic cryptographic operation method including.
KR1020220170614A 2022-10-04 2022-12-08 Homomorphic encryption opeation apparatus and method KR20240047280A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/316,062 US20240129106A1 (en) 2022-10-04 2023-05-11 Apparatus and method with homomorphic encryption operation
EP23192922.5A EP4351079A1 (en) 2022-10-04 2023-08-23 Apparatus and method with homomorphic encryption operation
CN202311147039.1A CN117857004A (en) 2022-10-04 2023-09-06 Apparatus and method with homomorphic encryption operation

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220126564 2022-10-04
KR1020220126564 2022-10-04

Publications (1)

Publication Number Publication Date
KR20240047280A true KR20240047280A (en) 2024-04-12

Family

ID=90680052

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220170614A KR20240047280A (en) 2022-10-04 2022-12-08 Homomorphic encryption opeation apparatus and method

Country Status (1)

Country Link
KR (1) KR20240047280A (en)

Similar Documents

Publication Publication Date Title
TWI734368B (en) Data homomorphic encryption and decryption method and device for realizing privacy protection
US11159305B2 (en) Homomorphic data decryption method and apparatus for implementing privacy protection
Chou QcBits: constant-time small-key code-based cryptography
US20170180115A1 (en) Homomorphic Encryption with Optimized Homomorphic Operations
CN104919754B (en) Tampering detection apparatus, altering detecting method and program
US20150312028A1 (en) Homomorphic encryption and decryption methods using ring isomorphism, and apparatuses using the same
KR101449239B1 (en) Homomorphic Encryption and Decryption Method using Ring Isomorphism and apparatus using the same
JP6386198B1 (en) Encryption device and decryption device
Ding et al. Cryptanalysis of a public key cryptosystem based on Diophantine equations via weighted LLL reduction
Savvides et al. Efficient confidentiality-preserving data analytics over symmetrically encrypted datasets
US10235506B2 (en) White-box modular exponentiation
von Maurich et al. IND-CCA secure hybrid encryption from QC-MDPC Niederreiter
Usama et al. Chaos-based simultaneous compression and encryption for Hadoop
US20220029782A1 (en) Apparatus and method for processing non-polynomial operation on encrypted messages
KR20230078510A (en) Apparatus and method of homomorphic encryption opeation
US20230246807A1 (en) Apparatus and method with homomorphic encryption using automorphism
US10068070B2 (en) White-box elliptic curve point multiplication
US11722290B2 (en) Method and apparatus for modulus refresh in homomorphic encryption
KR20240047280A (en) Homomorphic encryption opeation apparatus and method
US8731187B2 (en) Computing genus-2 curves using general isogenies
KR20240047269A (en) Homomorphic encryption opeation apparatus and method
JP2023064452A (en) Cipher processing device, cipher processing method, and cipher processing program
Wang et al. Research on full homomorphic encryption algorithm for integer in cloud environment
JP2017223822A (en) Cipher text processing system, cipher text processing server, and cipher text processing method
KR20230116641A (en) Apparatus and method of homomorphic encryption opeation using automorphism