KR20240047269A - Homomorphic encryption opeation apparatus and method - Google Patents

Homomorphic encryption opeation apparatus and method Download PDF

Info

Publication number
KR20240047269A
KR20240047269A KR1020220158554A KR20220158554A KR20240047269A KR 20240047269 A KR20240047269 A KR 20240047269A KR 1020220158554 A KR1020220158554 A KR 1020220158554A KR 20220158554 A KR20220158554 A KR 20220158554A KR 20240047269 A KR20240047269 A KR 20240047269A
Authority
KR
South Korea
Prior art keywords
ciphertext
component
processor
modulus
homomorphic
Prior art date
Application number
KR1020220158554A
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/301,343 priority Critical patent/US20240121076A1/en
Publication of KR20240047269A publication Critical patent/KR20240047269A/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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)

Abstract

동형 암호 연산 장치 및 방법이 개시된다. 동형 암호 연산 장치에 있어서, 일 실시예에 따른 동형 암호 연산 장치는, 동형 암호 연산을 수행하기 위한 데이터를 수신하는 수신기와, 상기 데이터로부터 생성된 입력 암호문의 성분을 홀수로 매핑함으로써 모듈러스 스위칭을 수행하고, 상기 모듈러스 스위칭이 수행된 입력 암호문에 기초하여 블라인드 로테이션 연산을 수행하고, 상기 블라인드 로테이션 연산의 수행 결과에 기초하여 키 스위칭을 수행함으로써 동형 암호 연산 결과를 생성하는 프로세서를 포함한다.A homomorphic cryptographic operation device and method are disclosed. In the homomorphic encryption operation device, the homomorphic encryption operation device according to one embodiment includes a receiver that receives data for performing a homomorphic encryption operation, and performs modulus switching by mapping components of the input ciphertext generated from the data to odd numbers. and a processor that generates a homomorphic encryption operation result by performing a blind rotation operation based on the input ciphertext on which the modulus switching has been performed and performing key switching based on a result of the blind rotation operation.

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.

2014년 Ducas와 Micciancio는 FHEW(Fastest Homomorphic Encryption in the West)로 지칭되는 완전 동형 암호 기술을 제안하였다. 동형 암호(homomorphic encryption)는 암호화된 데이터 사이에서 임의의 연산을 가능하게 하는 유망한 암호화 방법이다. 동형 암호를 활용하면 암호화된 데이터를 복호화하지 않고, 암호화된 상태에서 임의의 연산을 수행할 수 있을 뿐만 아니라, 격자를 기반(lattice-based)으로 하여 양자 알고리즘에 내성(resistant)이 있어 안전하다.In 2014, Ducas and Micciancio proposed a fully homomorphic encryption technique called Fastest Homomorphic Encryption in the West (FHEW). 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.

동형 암호(homomorphic encryption) 연산 장치에 있어서, 일 실시예에 따른 동형 암호 연산 장치는, 동형 암호 연산을 수행하기 위한 데이터를 수신하는 수신기와, 상기 데이터로부터 생성된 입력 암호문(input ciphertext)의 성분을 홀수로 매핑함으로써 모듈러스 스위칭(modulus switching)을 수행하고, 상기 모듈러스 스위칭이 수행된 입력 암호문에 기초하여 블라인드 로테이션 연산(blind rotation operation)을 수행하고, 상기 블라인드 로테이션 연산의 수행 결과에 기초하여 키 스위칭(key switching)을 수행함으로써 동형 암호 연산 결과를 생성하는 프로세서를 포함한다.In a homomorphic encryption operation device, the homomorphic encryption operation device according to one embodiment includes a receiver that receives data for performing a homomorphic encryption operation, and components of an input ciphertext generated from the data. Modulus switching is performed by mapping to an odd number, a blind rotation operation is performed based on the input ciphertext on which the modulus switching was performed, and key switching is performed based on the result of the blind rotation operation ( It includes a processor that generates a homomorphic cryptographic operation result by performing key switching.

상기 프로세서는, 상기 데이터에 기초하여 LWE(Learning With Error) 암호문을 생성함으로써 상기 입력 암호문을 생성할 수 있다.The processor may generate the input ciphertext by generating a Learning With Error (LWE) ciphertext based on the data.

상기 프로세서는, 상기 데이터에 기초하여 상기 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득하고, 상기 제1 성분 및 상기 제2 성분에 2를 곱하여 제1 곱셈 결과 및 제2 곱셈 결과를 생성하고, 상기 제1 곱셈 결과 및 상기 제2 곱셈 결과로부터 1을 더하거나 뺌으로써 상기 입력 암호문을 생성할 수 있다.The processor obtains a first component and a second component constituting the input ciphertext based on the data, and multiplies the first component and the second component by 2 to generate a first multiplication result and a second multiplication result. And, the input ciphertext can be generated by adding or subtracting 1 from the first multiplication result and the second multiplication result.

상기 프로세서는, 상기 데이터에 기초하여 상기 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득하고, 상기 입력 암호문의 제1 성분이 짝수인지 홀수인지 여부를 판단하고, 상기 제1 성분이 짝수인 경우 상기 제1 성분에 1을 더함으로써 상기 입력 암호문을 생성할 수 있다.The processor obtains a first component and a second component constituting the input ciphertext based on the data, determines whether the first component of the input ciphertext is an even number or an odd number, and determines whether the first component is an even number. In this case, the input ciphertext can be generated by adding 1 to the first component.

상기 프로세서는, 홀수 집합으로부터 샘플링을 수행함으로써 상기 제2 성분을 획득할 수 있다.The processor may obtain the second component by performing sampling from the odd set.

상기 프로세서는, 상기 입력 암호문의 다항식의 차수 및 상기 암호문의 모듈러스에 기초하여 상기 모듈러스 스위칭을 수행할 수 있다.The processor may perform the modulus switching based on the degree of the polynomial of the input ciphertext and the modulus of the ciphertext.

상기 프로세서는, 상기 다항식의 차수, 상기 암호문의 모듈러스에 기초하여 상기 성분을 변환하고, 변환된 성분에 홀수로 반올림(round-to-odd)을 수행함으로써 상기 모듈러스 스위칭을 수행할 수 있다.The processor may perform the modulus switching by converting the component based on the degree of the polynomial and the modulus of the ciphertext, and performing round-to-odd on the converted component.

상기 프로세서는, 홀수로 이루어진 부분집합을 생성하고, 상기 성분을 상기 부분집합으로 매핑시킴으로써 상기 모듈러스 스위칭을 수행할 수 있다.The processor may perform the modulus switching by generating a subset of odd numbers and mapping the components to the subset.

상기 프로세서는, 임의의 홀수의 거듭제곱 또는 상기 거듭제곱 사이의 곱셈 결과에 기초하여 상기 부분집합을 생성할 수 있다.The processor may generate the subset based on a power of any odd number or a multiplication result between the powers.

동형 암호(homomorphic encryption) 연산 방법에 있어서, 일 실시예에 따른 동형 암호 연산 방법은, 동형 암호 연산을 수행하기 위한 데이터를 수신하는 단계와, 상기 데이터로부터 생성된 입력 암호문(input ciphertext)의 성분을 홀수로 매핑함으로써 모듈러스 스위칭(modulus switching)을 수행하는 단계와, 상기 모듈러스 스위칭이 수행된 입력 암호문에 기초하여 블라인드 로테이션 연산(blind rotation operation)을 수행하는 단계와, 상기 블라인드 로테이션 연산의 수행 결과에 기초하여 키 스위칭(key switching)을 수행함으로써 동형 암호 연산 결과를 생성하는 단계를 포함한다.In a homomorphic encryption operation method, the homomorphic encryption operation method according to one embodiment includes receiving data for performing a homomorphic encryption operation, and components of an input ciphertext generated from the data. Performing modulus switching by mapping to an odd number, performing a blind rotation operation based on the input ciphertext on which the modulus switching was performed, and based on a result of performing the blind rotation operation It includes generating a homomorphic encryption operation result by performing key switching.

상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는, 상기 데이터에 기초하여 LWE(Learning With Error) 암호문을 생성함으로써 상기 입력 암호문을 생성하는 단계를 포함할 수 있다.Performing the modulus switching may include generating the input ciphertext by generating Learning With Error (LWE) ciphertext based on the data.

상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는, 상기 데이터에 기초하여 상기 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득하는 단계와, 상기 제1 성분 및 상기 제2 성분에 2를 곱하여 제1 곱셈 결과 및 제2 곱셈 결과를 생성하는 단계와, 상기 제1 곱셈 결과 및 상기 제2 곱셈 결과로부터 1을 더하거나 뺌으로써 상기 입력 암호문을 생성하는 단계를 포함할 수 있다.The step of performing the modulus switching includes obtaining a first component and a second component constituting the input ciphertext based on the data, and multiplying the first component and the second component by 2. It may include generating a first multiplication result and a second multiplication result, and generating the input ciphertext by adding or subtracting 1 from the first multiplication result and the second multiplication result.

상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는, 상기 데이터에 기초하여 상기 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득하는 단계와, 상기 입력 암호문의 제1 성분이 짝수인지 홀수인지 여부를 판단하는 단계와, 상기 제1 성분이 짝수인 경우 상기 제1 성분에 1을 더함으로써 상기 입력 암호문을 생성하는 단계를 포함할 수 있다.The performing the modulus switching includes obtaining a first component and a second component constituting the input ciphertext based on the data, and determining whether the first component of the input ciphertext is an even number or an odd number. It may include determining and, if the first component is an even number, generating the input ciphertext by adding 1 to the first component.

상기 제1 성분 및 제2 성분을 획득하는 단계는, 홀수 집합으로부터 샘플링을 수행함으로써 상기 제2 성분을 획득하는 단계를 포함할 수 있다.Obtaining the first component and the second component may include obtaining the second component by performing sampling from an odd set.

상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는, 상기 입력 암호문의 다항식의 차수 및 상기 암호문의 모듈러스에 기초하여 상기 모듈러스 스위칭을 수행하는 단계를 포함할 수 있다.The performing the modulus switching may include performing the modulus switching based on the degree of a polynomial of the input ciphertext and the modulus of the ciphertext.

상기 입력 암호문의 다항식의 차수 및 상기 암호문의 모듈러스에 기초하여 상기 모듈러스 스위칭을 수행하는 단계는, 상기 다항식의 차수, 상기 암호문의 모듈러스에 기초하여 상기 성분을 변환하는 단계와, 변환된 성분에 홀수로 반올림(round-to-odd)을 수행함으로써 상기 모듈러스 스위칭을 수행하는 단계를 포함할 수 있다.The step of performing the modulus switching based on the degree of the polynomial of the input ciphertext and the modulus of the ciphertext includes converting the component based on the degree of the polynomial and the modulus of the ciphertext, and adding an odd number to the converted component. It may include performing the modulus switching by performing round-to-odd.

상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는, 홀수로 이루어진 부분집합을 생성하는 단계와, 상기 성분을 상기 부분집합으로 매핑시킴으로써 상기 모듈러스 스위칭을 수행하는 단를 포함할 수 있다.The step of performing the modulus switching may include generating a subset of odd numbers, and performing the modulus switching by mapping the component to the subset.

상기 부분집합을 생성하는 단계는, 임의의 홀수의 거듭제곱 또는 상기 거듭제곱 사이의 곱셈 결과에 기초하여 상기 부분집합을 생성하는 단계를 포함할 수 있다.Generating the subset may include generating the subset based on a power of an arbitrary odd number or a multiplication result between the powers.

도 1은 일 실시예에 따른 동형 암호 연산 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 동형 암호 연산 장치의 동작의 일 예를 나타낸다.
도 3은 도 1에 도시된 동형 암호 연산 장치의 동작의 다른 예를 나타낸다.
도 4는 도 1에 도시된 동형 암호 연산 장치의 동작의 또 다른 예를 나타낸다.
도 5는 LWE 암호문 생성 방법의 일 예를 나타낸다.
도 6은 LWE 암호문 생성 방법의 다른 예를 나타낸다.
도 7은 도 1에 도시된 동형 암호 연산 장치의 동작의 흐름도를 나타낸다.
Figure 1 shows a schematic block diagram of a homomorphic encryption operation device according to an embodiment.
FIG. 2 shows an example of the operation of the homomorphic encryption operation device shown in FIG. 1.
FIG. 3 shows another example of the operation of the homomorphic encryption operation device shown in FIG. 1.
FIG. 4 shows another example of the operation of the homomorphic encryption operation device shown in FIG. 1.
Figure 5 shows an example of a method for generating LWE ciphertext.
Figure 6 shows another example of an LWE ciphertext generation method.
FIG. 7 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)는 블라인드 로테이션 연산을 수행하기 위한 암호 키(secret key), 암호문(ciphertext) 및/또는 블라인드 로테이션 키를 생성할 수 있다. 동형 암호 연산 장치(10)는 생성한 암호 키, 암호문 및/또는 블라인드 로테이션 키를 이용하여 블라인드 로테이션 연산을 수행할 수 있다.The homomorphic encryption operation device 10 can generate an operation result by performing a homomorphic encryption operation. The homomorphic cryptography operation device 10 may generate a secret key, ciphertext, and/or a blind rotation key for performing a blind rotation operation. 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 encryption operation device 10 can adjust the storage space for storing keys (e.g., encryption keys or blind rotation keys) used by the server and the client and the amount of computation of the homomorphic encryption operation.

동형 암호 연산 장치(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.

프로세서(200)는 모듈러스 스위칭을 하는 과정에서 홀수로 매핑을 수행함으로써, 공개 키 저장에 필요한 메모리(300)의 크기 및 연산량을 개선할 수 있다. 프로세서(200)는 클라이언트와 서버의 연산량, 요구되는 저장 공간 및 통신량을 감소시킬 수 있다.The processor 200 can improve the size and computation amount of the memory 300 required to store the public key by performing mapping to odd numbers in the process of modulus switching. The processor 200 can reduce the amount of computation, required storage space, and communication between clients and servers.

동형 암호 연산 장치(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)로부터 수신할 수 있다. 데이터는 동형 암호 연산을 수행하기 위한 피연산 데이터 또는 키(예: 암호 키, 블라인드 로테이션 키)를 포함할 수 있다. 블라인드 로테이션 키는 RGSW(Ring Gentry, Sahai, Waters) 또는 RLWE(Ring Learning With Error)' 암호문을 포함할 수 있다. 수신기(100)는 수신한 데이터를 프로세서(200)로 출력할 수 있다.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 include operand data or keys (e.g., cryptographic keys, blind rotation keys) for performing homomorphic cryptographic operations. The blind rotation key may contain a 'Ring Gentry, Sahai, Waters' (RGSW) or 'Ring Learning With Error' (RLWE) ciphertext. The receiver 100 may output the received data 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)는 데이터로부터 생성된 입력 암호문(input ciphertext)의 성분을 홀수로 매핑함으로써 모듈러스 스위칭(modulus switching)을 수행할 수 있다.The processor 200 may perform modulus switching by mapping components of the input ciphertext generated from data to odd numbers.

프로세서(200)는 데이터에 기초하여 LWE(Learning With Error) 암호문을 생성함으로써 입력 암호문을 생성할 수 있다. LWE 암호문을 생성하는 과정은 도 5 및 도 6을 참조하여 자세하게 설명한다.The processor 200 may generate an input ciphertext by generating a Learning With Error (LWE) ciphertext based on data. The process of generating LWE ciphertext is explained in detail with reference to FIGS. 5 and 6.

프로세서(200)는 수신한 데이터에 기초하여 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득할 수 있다. 프로세서(200)는 제1 성분 및 제2 성분에 2를 곱하여 제1 곱셈 결과 및 제2 곱셈 결과를 생성할 수 있다. 프로세서(200)는 제1 곱셈 결과 및 제2 곱셈 결과로부터 1을 더하거나 뺌으로써 입력 암호문을 생성할 수 있다.The processor 200 may obtain the first component and the second component constituting the input ciphertext based on the received data. The processor 200 may generate a first multiplication result and a second multiplication result by multiplying the first component and the second component by 2. The processor 200 may generate the input ciphertext by adding or subtracting 1 from the first multiplication result and the second multiplication result.

프로세서(200)는 입력 암호문의 제1 성분이 짝수인지 홀수인지 여부를 판단할 수 있다. 프로세서(200)는 제1 성분이 짝수인 경우 제1 성분에 1을 더함으로써 입력 암호문을 생성할 수 있다.The processor 200 may determine whether the first component of the input ciphertext is an even number or an odd number. If the first component is an even number, the processor 200 may generate the input ciphertext by adding 1 to the first component.

프로세서(200)는 홀수 집합으로부터 샘플링을 수행함으로써 제2 성분을 획득할 수 있다. The processor 200 may obtain the second component by performing sampling from the odd set.

프로세서(200)는 입력 암호문의 다항식의 차수 및 암호문의 모듈러스에 기초하여 모듈러스 스위칭을 수행할 수 있다. 프로세서(200)는 다항식의 차수, 암호문의 모듈러스에 기초하여 성분을 변환할 수 있다. 프로세서(200)는 변환된 성분에 홀수로 반올림(round-to-odd)을 수행함으로써 모듈러스 스위칭을 수행할 수 있다.The processor 200 may perform modulus switching based on the degree of the polynomial of the input ciphertext and the modulus of the ciphertext. The processor 200 may convert the components based on the degree of the polynomial and the modulus of the ciphertext. The processor 200 may perform modulus switching by performing round-to-odd on the converted component.

프로세서(200)는 홀수로 이루어진 부분집합을 생성할 수 있다. 프로세서(200)는 임의의 홀수의 거듭제곱 또는 거듭제곱 사이의 곱셈 결과에 기초하여 부분집합을 생성할 수 있다.The processor 200 may generate a subset consisting of odd numbers. The processor 200 may generate a subset based on the result of multiplication between powers of any odd number or powers.

프로세서(200)는 암호문의 성분을 부분집합으로 매핑시킴으로써 모듈러스 스위칭을 수행할 수 있다.The processor 200 can perform modulus switching by mapping the components of the ciphertext into a subset.

프로세서(200)는 모듈러스 스위칭이 수행된 입력 암호문에 기초하여 블라인드 로테이션 연산(blind rotation operation)을 수행할 수 있다. 프로세서(200)는 블라인드 로테이션 연산의 수행 결과에 기초하여 키 스위칭(key switching)을 수행함으로써 동형 암호 연산 결과를 생성할 수 있다.The processor 200 may perform a blind rotation operation based on the input ciphertext on which modulus switching has been performed. The processor 200 may generate a homomorphic encryption operation result by performing key switching based on the result of the blind rotation operation.

메모리(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 in 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 Equation 3 and two RLWE' ciphertexts.

프로세서(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 a 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 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.

프로세서(200)는 LWE 암호문 에 대하여 모듈러스 스위칭을 수행하고, 모듈러스 스위칭이 수행된 암호문을 이용하여 블라인드 로테이션 연산을 효과적으로 수행할 수 있다.Processor 200 provides LWE ciphertext Modulus switching can be performed on , and a blind rotation operation can be effectively performed using the ciphertext on which the modulus switching has been performed.

프로세서(200)는 키 스위칭이 수행된 암호문 의 모듈러스를 q로 변환하는 모듈러스 스위칭을 수행할 수 있다. 프로세서(200)는 수학식 4와 같이 모듈러스 스위칭을 수행할 수 있다.The processor 200 generates the ciphertext on which key switching was performed. Modulus switching can be performed to convert the modulus of to q. The processor 200 may perform modulus switching as shown in Equation 4.

여기서, 는 반올림 연산을 의미할 수 있다. 는 암호문의 성분을 의미할 수 있다. 암호문의 성분 는 짝수 또는 홀수일 수 있다. 프로세서(200)는 짝수가 발생하는 경우의 연산 오버헤드를 최소화하기 위해 암호문의 모든 성분을 홀수로 변환할 수 있다.here, may mean a rounding operation. and may refer to the components of the ciphertext. ciphertext components and may be an even or odd number. The processor 200 may convert all components of the ciphertext into odd numbers in order to minimize computational overhead when an even number occurs.

프로세서(200)는 수학식 5와 같이 모듈러스 스위칭을 수행할 수 있다(210). The processor 200 may perform modulus switching as shown in Equation 5 (210).

여기서, 는 홀수로 반올림(round-to-odd) 연산을 의미할 수 있고, N은 암호문을 구성하는 다항식의 차수를 의미할 수 있다. 홀수로 반올림 연산은 주어진 실수에 대하여 가장 가까운 홀수 정수를 반환하는 연산을 의미할 수 있다. 홀수로 반올림 연산은 참값(true value)과의 차이가 최대 1이 될 수 있다.here, may mean a round-to-odd operation, and N may mean the degree of the polynomial constituting the ciphertext. The rounding to odd number operation may refer to an operation that returns the nearest odd integer for a given real number. For operations that round to odd numbers, the difference from the true value can be at most 1.

홀수로 반올림 연산을 수행함으로써, 암호문의 성분은 홀수 값을 가질 수 있다. 모듈러스 스위칭이 수행되기 전의 암호문의 성분 의 각 원소들은 0과 Q'-1 사이의 값을 가질 수 있다. 모듈러스 스위칭이 수행된 이후의 암호문의 성분 는 0과 N-1 사이의 값을 가질 수 있다. 다시 말해, 모듈러스 스위칭 이후의 암호문의 모듈러스는 2N일 수 있다.By performing a rounding operation to odd numbers, components of the ciphertext can have odd values. ciphertext composition before modulus switching is performed and Each element of can have a value between 0 and Q'-1. ciphertext components after modulus switching has been performed and can have values between 0 and N-1. In other words, the modulus of the ciphertext after modulus switching may be 2N.

프로세서(200)는 모듈러스 스위칭 결과에 블라인드 로테이션 연산을 수행할 수 있다(230). 프로세서(200)는 를 블라인드 로테이션 키를 이용하여 계산할 수 있다. 프로세서(200)는 의 함수 f를 적용한 연산 결과를 계산하는 블라인드 로테이션 과정에서, 와 같은 키 및 키에 대응하는 곱셈 연산을 없앰으로써 공개 키의 크기 및 연산량을 감소시킬 수 있다.The processor 200 may perform a blind rotation operation on the modulus switching result (230). Processor 200 is can be calculated using the blind rotation key. Processor 200 is In the blind rotation process of calculating the result of applying the function f, and The size of the public key and the amount of calculation can be reduced by eliminating the key and the multiplication operation corresponding to the key.

프로세서(200)는 블라인드 로테이션 결과에 추출(extract) 및 모듈러스 스위칭을 수행할 수 있다(250). 프로세서(200)는 250의 결과에 키 스위칭을 수행할 수 있다(270). 프로세서(200)는 210 내지 270의 과정을 반복적으로 수행함으로써 동형 암호 연산을 수행할 수 있다.The processor 200 may perform extract and modulus switching on the blind rotation result (250). The processor 200 may perform key switching on the result of 250 (270). The processor 200 may perform homomorphic encryption operation by repeatedly performing processes 210 to 270.

프로세서(200)는 블라인드 로테이션 연산이 수행된 암호문 및 최초의 암호문의 성분을 홀수로 변환시킬 수 있다. 프로세서(200)는 최초의 LWE 암호문의 성분을 홀수로 생성함으로써 암호문의 모듈러스가 2N이 되도록 생성할 수 있다. 프로세서(200)는 암호문의 모듈러스가 Q'(>2N)인 LWE 암호문을 생성하고, 생성된 LWE 암호문의 모듈러스를 2N으로 스위칭하면서 홀수로 반올림을 수행할 수 있다.The processor 200 may convert the components of the ciphertext on which the blind rotation operation was performed and the first ciphertext to odd numbers. The processor 200 can generate the modulus of the ciphertext to be 2N by generating the components of the first LWE ciphertext as odd numbers. The processor 200 may generate an LWE ciphertext whose modulus of the ciphertext is Q' (>2N), switch the modulus of the generated LWE ciphertext to 2N, and perform rounding to an odd number.

다시 말해, 프로세서(200)는 최초 LWE 암호문의 성분을 홀수가 되도록 암호화할 수 있다. 프로세서(200)는 블라인드 로테이션 연산을 포함하는 부트스트래핑(bootstrapping) 과정에 요구되는 블라인드 로테이션 키 및 키 스위칭 키를 생성할 수 있다. 프로세서(200)는 블라인드 로테이션 연산을 수행하기 위해서, 암호문의 모듈러스 스위칭을 수행할 때 홀수로 반올림을 수행함으로써 모든 성분이 홀수이고, 모듈러스가 2N인 암호문을 생성할 수 있다. 상술한 과정을 통해, 프로세서(200)는 를 효율적으로 계산할 수 있다.In other words, the processor 200 can encrypt the components of the initial LWE ciphertext so that they are odd. The processor 200 may generate a blind rotation key and a key switching key required for a bootstrapping process including a blind rotation operation. In order to perform a blind rotation operation, the processor 200 may generate a ciphertext in which all components are odd and the modulus is 2N by performing rounding to an odd number when performing modulus switching of the ciphertext. Through the above-described process, the processor 200 can be calculated efficiently.

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

도 3을 참조하면, 프로세서(예: 도 1의 프로세서(200))는 홀수로 이루어진 부분집합을 생성할 수 있다. 프로세서(200)는 임의의 홀수의 거듭제곱 또는 거듭제곱 사이의 곱셈 결과에 기초하여 부분집합을 생성할 수 있다. 프로세서(200)는 암호문의 성분을 부분집합으로 매핑시킴으로써 모듈러스 스위칭을 수행할 수 있다.Referring to FIG. 3, a processor (eg, processor 200 of FIG. 1) may generate a subset of odd numbers. The processor 200 may generate a subset based on the result of multiplication between powers of any odd number or powers. The processor 200 can perform modulus switching by mapping the components of the ciphertext into a subset.

프로세서(200)는 부분집합에 기초하여 모듈러스 스위칭을 수행할 수 있다(310). 는 부분집합 중에서 참값에 가장 가까운 홀수 값을 반환하는 연산을 의미할 수 있다. 부분집합 oddsub는 크기가 모집합인 odd에 비하여 작기 때문에, 블라인드 로테이션 연산에 필요한 자기 동사상 키(automorphism key)의 개수가 줄어들 수 있다. 다시 말해, odd 집합을 이용할 경우의 자기동형사상 키는 이고, 부분집합을 이용한 경우의 자기동형사상의 키는 와 같이 더 적은 수를 가질 수 있다. 이 때, 집합 odd에 비해서 부분집합 oddsub의 원소의 개수가 적기 때문에 의 입력과 출력의 차이가 커져서 노이즈가 발생할 수 있기 때문에, 프로세서(200)는 부트스트래핑 실패 확률과 키 크기 간의 트레이드 오프를 고려하여 부분집합을 결정할 수 있다.The processor 200 may perform modulus switching based on the subset (310). may refer to an operation that returns an odd value that is closest to the true value among a subset. Because the size of the subset oddssub is smaller than the population odd, the number of automorphism keys required for blind rotation calculation can be reduced. In other words, the automorphism key when using the odd set is And the key to the automorphism when using a subset is You can have fewer numbers, such as At this time, because the number of elements of the subset oddssub is smaller than that of the set odd, Since the difference between the input and output of may increase and cause noise, the processor 200 may determine the subset by considering the trade-off between the bootstrapping failure probability and the key size.

프로세서(200)는 모듈러스 스위칭 결과에 블라인드 로테이션 연산을 수행할 수 있다(330). 프로세서(200)는 블라인드 로테이션 결과에 추출 및 모듈러스 스위칭을 수행할 수 있다(350). 프로세서(200)는 350의 결과에 키 스위칭을 수행할 수 있다(370). 프로세서(200)는 310 내지 370의 과정을 반복적으로 수행함으로써 동형 암호 연산을 수행할 수 있다.The processor 200 may perform a blind rotation operation on the modulus switching result (330). The processor 200 may perform extraction and modulus switching on the blind rotation result (350). The processor 200 may perform key switching on the result of 350 (370). The processor 200 may perform a homomorphic encryption operation by repeatedly performing processes 310 to 370.

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

도 4를 참조하면, 프로세서(예: 도 1의 프로세서(200))는 암호문의 모듈러스를 2N이 아닌 N으로 모듈러스 스위칭을 할 수 있다(410). 다시 말해, 프로세서(200)는 암호문의 성분이 각각 이 되도록 모듈러스 스위칭을 수행할 수 있다.Referring to FIG. 4, the processor (e.g., processor 200 of FIG. 1) may perform modulus switching of the ciphertext from 2N to N (410). In other words, the processor 200 determines that each component of the ciphertext and Modulus switching can be performed to achieve this.

이 경우, 모듈러스 스위칭이 수행된 암호문?? 모듈러스는 N으로 2N에 비하여 작은 값을 가질 수 있다. 도 4의 예시에서, 프로세서(200)는 를 블라인드 로테이션 키로 이용하여 블라인드 로테이션 연산을 수행할 수 있다(430).In this case, the ciphertext on which modulus switching was performed?? The modulus is N, which can have a smaller value than 2N. In the example of Figure 4, processor 200 A blind rotation operation can be performed using as a blind rotation key (430).

도 4의 예시는 모듈러스 2N을 2로 나눈 N인 경우에 대하여 설명하고 있지만, 실시예에 따라, 2가 아닌 다른 수로 나뉘어진 모듈러스를 갖도록 모듈러스 스위칭을 수행할 수 있다. 예를 들어, 2N을 임의의 수로 나눈 N'을 모듈러스로 갖도록 모듈러스 스위칭이 수행되는 경우, 모듈러스 스위칭이 수행된 암호문의 성분은 각각 일 수 있고, 이 경우 블라인드 로테이션 키는 으로 나타낼 수 있다.The example of FIG. 4 explains the case where the modulus 2N is divided by 2, which is N, but depending on the embodiment, modulus switching may be performed to have the modulus divided by a number other than 2. For example, when modulus switching is performed so that 2N divided by an arbitrary number has N' as the modulus, the components of the ciphertext on which modulus switching was performed are each and may be, in which case the blind rotation key is It can be expressed as

프로세서(200)는 블라인드 로테이션 결과에 추출 및 모듈러스 스위칭을 수행할 수 있다(450). 프로세서(200)는 450의 결과에 키 스위칭을 수행할 수 있다(470). 프로세서(200)는 410 내지 470의 과정을 반복적으로 수행함으로써 동형 암호 연산을 수행할 수 있다.The processor 200 may perform extraction and modulus switching on the blind rotation result (450). The processor 200 may perform key switching on the result of 450 (470). The processor 200 may perform homomorphic encryption operation by repeatedly performing processes 410 to 470.

도 5는 LWE 암호문 생성 방법의 일 예를 나타낸다.Figure 5 shows an example of a method for generating LWE ciphertext.

도 5를 참조하면, 프로세서(예: 도 1의 프로세서(200))는 수신한 데이터에 기초하여 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득할 수 있다. 즉, 프로세서(200)는 블라인드 로테이션이 수행되기 전의 최초의 암호문의 모든 구성 요소를 홀수로 생성할 수 있다. 프로세서(200)는 모듈러스 N인 LWE 암호문을 생성할 수 있다.Referring to FIG. 5, a processor (eg, processor 200 of FIG. 1) may obtain a first component and a second component constituting the input ciphertext based on the received data. That is, the processor 200 can generate all components of the first ciphertext before blind rotation is performed as odd numbers. The processor 200 may generate an LWE ciphertext with modulus N.

프로세서(200)는 모듈러스가 N인 LWE 암호문의 성분에 2를 곱하고 1을 더하거나 뺌으로써 모든 성분이 홀수인 암호문을 생성할 수 있다. 프로세서(200)는 제1 성분 및 제2 성분에 2를 곱하여 제1 곱셈 결과 및 제2 곱셈 결과를 생성할 수 있다. 프로세서(200)는 제1 곱셈 결과 및 제2 곱셈 결과로부터 1을 더하거나 뺌으로써 입력 암호문을 생성할 수 있다.The processor 200 can generate a ciphertext in which all components are odd by multiplying the components of the LWE ciphertext with a modulus N by 2 and adding or subtracting 1. The processor 200 may generate a first multiplication result and a second multiplication result by multiplying the first component and the second component by 2. The processor 200 may generate the input ciphertext by adding or subtracting 1 from the first multiplication result and the second multiplication result.

도 5의 예시와 같이 생성된 암호문의 노이즈(noise)는 모듈러스가 N인 암호문에 비하여 클 수 있기 때문에, 프로세서(200)는 블라인드 로테이션 연산의 오차를 고려하여 암호문의 파라미터를 설정할 수 있다.Since the noise of the generated ciphertext as shown in the example of FIG. 5 may be greater than that of the ciphertext with a modulus of N, the processor 200 may set the parameters of the ciphertext by considering the error of the blind rotation operation.

도 6은 LWE 암호문 생성 방법의 다른 예를 나타낸다.Figure 6 shows another example of an LWE ciphertext generation method.

도 6을 참조하면, 프로세서(예: 도 1의 프로세서(200))는 입력 암호문의 제1 성분이 짝수인지 홀수인지 여부를 판단할 수 있다. 프로세서(200)는 제1 성분이 짝수인 경우 제1 성분에 1을 더함으로써 입력 암호문을 생성할 수 있다.Referring to FIG. 6, a processor (eg, processor 200 of FIG. 1) may determine whether the first component of the input ciphertext is an even number or an odd number. If the first component is an even number, the processor 200 may generate the input ciphertext by adding 1 to the first component.

프로세서(200)는 암호문의 제1 성분인 를 수학식 1에서 설명한 것과 같은 방식으로 획득할 수 있다. 프로세서(200)는 가 짝수인지 홀수인지 여부를 판단할 수 있다. 프로세서(200)는 가 짝수인 경우 1을 더하고, 홀수인 경우 아무런 연산을 수행하지 않을 수 있다.The processor 200 processes the first component of the ciphertext. Can be obtained in the same way as described in Equation 1. Processor 200 is It is possible to determine whether is an even or odd number. Processor 200 is If is an even number, 1 is added, and if is an odd number, no operation may be performed.

프로세서(200)는 홀수 집합으로부터 샘플링을 수행함으로써 제2 성분을 획득할 수 있다. 프로세서(200)는 제2 성분인 를 홀수 중에서 샘플링할 수 있다.The processor 200 may obtain the second component by performing sampling from the odd set. Processor 200 is a second component can be sampled from odd numbers.

상술한 과정을 통해, 프로세서(200)는 오차가 작고 모든 성분이 홀수인 암호문을 생성할 수 있다. 도 6의 예시에서, 프로세서(200)는 의 엔트로피가 낮아 안정성이 낮아지는 문제를 방지하기 위해 큰 값을 갖는 오차 분포 를 이용할 수 있다.Through the above-described process, the processor 200 can generate ciphertext with a small error and all components are odd numbers. In the example of Figure 6, processor 200 An error distribution with a large value to prevent the problem of low stability due to low entropy. can be used.

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

도 7을 참조하면, 수신기(예: 도 1의 수신기(100))는 동형 암호 연산을 수행하기 위한 데이터를 수신할 수 있다(710).Referring to FIG. 7, a receiver (e.g., receiver 100 of FIG. 1) may receive data for performing a homomorphic encryption operation (710).

프로세서(예: 도 1의 프로세서(200))는 데이터로부터 생성된 입력 암호문의 성분을 홀수로 매핑함으로써 모듈러스 스위칭을 수행할 수 있다(730).A processor (e.g., processor 200 in FIG. 1) may perform modulus switching by mapping components of the input ciphertext generated from data to odd numbers (730).

프로세서(200)는 데이터에 기초하여 LWE 암호문을 생성함으로써 입력 암호문을 생성할 수 있다.The processor 200 may generate an input ciphertext by generating an LWE ciphertext based on the data.

프로세서(200)는 수신한 데이터에 기초하여 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득할 수 있다. 프로세서(200)는 제1 성분 및 제2 성분에 2를 곱하여 제1 곱셈 결과 및 제2 곱셈 결과를 생성할 수 있다. 프로세서(200)는 제1 곱셈 결과 및 제2 곱셈 결과로부터 1을 더하거나 뺌으로써 입력 암호문을 생성할 수 있다.The processor 200 may obtain the first component and the second component constituting the input ciphertext based on the received data. The processor 200 may generate a first multiplication result and a second multiplication result by multiplying the first component and the second component by 2. The processor 200 may generate the input ciphertext by adding or subtracting 1 from the first multiplication result and the second multiplication result.

프로세서(200)는 입력 암호문의 제1 성분이 짝수인지 홀수인지 여부를 판단할 수 있다. 프로세서(200)는 제1 성분이 짝수인 경우 제1 성분에 1을 더함으로써 입력 암호문을 생성할 수 있다.The processor 200 may determine whether the first component of the input ciphertext is an even number or an odd number. If the first component is an even number, the processor 200 may generate the input ciphertext by adding 1 to the first component.

프로세서(200)는 홀수 집합으로부터 샘플링을 수행함으로써 제2 성분을 획득할 수 있다. The processor 200 may obtain the second component by performing sampling from the odd set.

프로세서(200)는 입력 암호문의 다항식의 차수 및 암호문의 모듈러스에 기초하여 모듈러스 스위칭을 수행할 수 있다. 프로세서(200)는 다항식의 차수, 암호문의 모듈러스에 기초하여 성분을 변환할 수 있다. 프로세서(200)는 변환된 성분에 홀수로 반올림을 수행함으로써 모듈러스 스위칭을 수행할 수 있다.The processor 200 may perform modulus switching based on the degree of the polynomial of the input ciphertext and the modulus of the ciphertext. The processor 200 may convert the components based on the degree of the polynomial and the modulus of the ciphertext. The processor 200 may perform modulus switching by rounding the converted component to an odd number.

프로세서(200)는 홀수로 이루어진 부분집합을 생성할 수 있다. 프로세서(200)는 임의의 홀수의 거듭제곱 또는 거듭제곱 사이의 곱셈 결과에 기초하여 부분집합을 생성할 수 있다.The processor 200 may generate a subset consisting of odd numbers. The processor 200 may generate a subset based on the result of multiplication between powers of any odd number or powers.

프로세서(200)는 암호문의 성분을 부분집합으로 매핑시킴으로써 모듈러스 스위칭을 수행할 수 있다.The processor 200 can perform modulus switching by mapping the components of the ciphertext into a subset.

프로세서(200)는 모듈러스 스위칭이 수행된 입력 암호문에 기초하여 블라인드 로테이션 연산을 수행할 수 있다(750). 프로세서(200)는 블라인드 로테이션 연산의 수행 결과에 기초하여 키 스위칭을 수행함으로써 동형 암호 연산 결과를 생성할 수 있다(770).The processor 200 may perform a blind rotation operation based on the input ciphertext on which modulus switching was performed (750). The processor 200 may generate a homomorphic encryption operation result by performing key switching based on the result of the blind rotation operation (770).

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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 (19)

동형 암호(homomorphic encryption) 연산 장치에 있어서,
동형 암호 연산을 수행하기 위한 데이터를 수신하는 수신기; 및
상기 데이터로부터 생성된 입력 암호문(input ciphertext)의 성분을 홀수로 매핑함으로써 모듈러스 스위칭(modulus switching)을 수행하고,
상기 모듈러스 스위칭이 수행된 입력 암호문에 기초하여 블라인드 로테이션 연산(blind rotation operation)을 수행하고,
상기 블라인드 로테이션 연산의 수행 결과에 기초하여 키 스위칭(key switching)을 수행함으로써 동형 암호 연산 결과를 생성하는 프로세서
를 포함하는 동형 암호 연산 장치.
In a homomorphic encryption operation device,
A receiver that receives data for performing a homomorphic cryptographic operation; and
Modulus switching is performed by mapping components of the input ciphertext generated from the data to odd numbers,
Performing a blind rotation operation based on the input ciphertext on which the modulus switching was performed,
A processor that generates a homomorphic encryption operation result by performing key switching based on the result of the blind rotation operation.
A homomorphic cryptographic operation device comprising a.
제1항에 있어서,
상기 프로세서는,
상기 데이터에 기초하여 LWE(Learning With Error) 암호문을 생성함으로써 상기 입력 암호문을 생성하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Generating the input ciphertext by generating a Learning With Error (LWE) ciphertext based on the data,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 데이터에 기초하여 상기 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득하고,
상기 제1 성분 및 상기 제2 성분에 2를 곱하여 제1 곱셈 결과 및 제2 곱셈 결과를 생성하고,
상기 제1 곱셈 결과 및 상기 제2 곱셈 결과로부터 1을 더하거나 뺌으로써 상기 입력 암호문을 생성하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Obtaining a first component and a second component constituting the input ciphertext based on the data,
multiplying the first component and the second component by 2 to produce a first multiplication result and a second multiplication result,
generating the input ciphertext by adding or subtracting 1 from the first multiplication result and the second multiplication result,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 데이터에 기초하여 상기 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득하고,
상기 입력 암호문의 제1 성분이 짝수인지 홀수인지 여부를 판단하고,
상기 제1 성분이 짝수인 경우 상기 제1 성분에 1을 더함으로써 상기 입력 암호문을 생성하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Obtaining a first component and a second component constituting the input ciphertext based on the data,
Determine whether the first component of the input ciphertext is an even number or an odd number,
Generating the input ciphertext by adding 1 to the first component when the first component is an even number,
Homomorphic cryptographic computing unit.
제4항에 있어서,
상기 프로세서는,
홀수 집합으로부터 샘플링을 수행함으로써 상기 제2 성분을 획득하는,
동형 암호 연산 장치.
According to paragraph 4,
The processor,
Obtaining the second component by performing sampling from the odd set,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
상기 입력 암호문의 다항식의 차수 및 상기 암호문의 모듈러스에 기초하여 상기 모듈러스 스위칭을 수행하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Performing the modulus switching based on the degree of the polynomial of the input ciphertext and the modulus of the ciphertext,
Homomorphic cryptographic computing unit.
제6항에 있어서,
상기 프로세서는,
상기 다항식의 차수, 상기 암호문의 모듈러스에 기초하여 상기 성분을 변환하고,
변환된 성분에 홀수로 반올림(round-to-odd)을 수행함으로써 상기 모듈러스 스위칭을 수행하는,
동형 암호 연산 장치.
According to clause 6,
The processor,
Transforming the component based on the degree of the polynomial and the modulus of the ciphertext,
Performing the modulus switching by performing round-to-odd on the converted component,
Homomorphic cryptographic computing unit.
제1항에 있어서,
상기 프로세서는,
홀수로 이루어진 부분집합을 생성하고,
상기 성분을 상기 부분집합으로 매핑시킴으로써 상기 모듈러스 스위칭을 수행하는,
동형 암호 연산 장치.
According to paragraph 1,
The processor,
Create a subset of odd numbers,
Performing the modulus switching by mapping the component to the subset,
Homomorphic cryptographic computing unit.
제8항에 있어서,
상기 프로세서는,
임의의 홀수의 거듭제곱 또는 상기 거듭제곱 사이의 곱셈 결과에 기초하여 상기 부분집합을 생성하는,
동형 암호 연산 장치.
According to clause 8,
The processor,
generating the subset based on a power of any odd number or the result of multiplication between the powers,
Homomorphic cryptographic computing unit.
동형 암호(homomorphic encryption) 연산 방법에 있어서,
동형 암호 연산을 수행하기 위한 데이터를 수신하는 단계;
상기 데이터로부터 생성된 입력 암호문(input ciphertext)의 성분을 홀수로 매핑함으로써 모듈러스 스위칭(modulus switching)을 수행하는 단계;
상기 모듈러스 스위칭이 수행된 입력 암호문에 기초하여 블라인드 로테이션 연산(blind rotation operation)을 수행하는 단계; 및
상기 블라인드 로테이션 연산의 수행 결과에 기초하여 키 스위칭(key switching)을 수행함으로써 동형 암호 연산 결과를 생성하는 단계
를 포함하는 동형 암호 연산 방법.
In the homomorphic encryption operation method,
Receiving data to perform a homomorphic cryptographic operation;
performing modulus switching by mapping components of an input ciphertext generated from the data to odd numbers;
performing a blind rotation operation based on the input ciphertext on which the modulus switching was performed; and
Generating a homomorphic encryption operation result by performing key switching based on the result of the blind rotation operation.
A homomorphic cryptographic operation method including.
제10항에 있어서,
상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는,
상기 데이터에 기초하여 LWE(Learning With Error) 암호문을 생성함으로써 상기 입력 암호문을 생성하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 10,
The step of performing the modulus switching is,
Generating the input ciphertext by generating a Learning With Error (LWE) ciphertext based on the data.
A homomorphic cryptographic operation method including.
제10항에 있어서,
상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는,
상기 데이터에 기초하여 상기 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득하는 단계;
상기 제1 성분 및 상기 제2 성분에 2를 곱하여 제1 곱셈 결과 및 제2 곱셈 결과를 생성하는 단계; 및
상기 제1 곱셈 결과 및 상기 제2 곱셈 결과로부터 1을 더하거나 뺌으로써 상기 입력 암호문을 생성하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 10,
The step of performing the modulus switching is,
Obtaining first and second components constituting the input ciphertext based on the data;
multiplying the first component and the second component by 2 to generate a first multiplication result and a second multiplication result; and
Generating the input ciphertext by adding or subtracting 1 from the first multiplication result and the second multiplication result.
A homomorphic cryptographic operation method including.
제10항에 있어서,
상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는,
상기 데이터에 기초하여 상기 입력 암호문을 구성하는 제1 성분 및 제2 성분을 획득하는 단계;
상기 입력 암호문의 제1 성분이 짝수인지 홀수인지 여부를 판단하는 단계; 및
상기 제1 성분이 짝수인 경우 상기 제1 성분에 1을 더함으로써 상기 입력 암호문을 생성하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 10,
The step of performing the modulus switching is,
Obtaining first and second components constituting the input ciphertext based on the data;
determining whether the first component of the input ciphertext is an even number or an odd number; and
If the first component is an even number, generating the input ciphertext by adding 1 to the first component.
A homomorphic cryptographic operation method including.
제13항에 있어서,
상기 제1 성분 및 제2 성분을 획득하는 단계는,
홀수 집합으로부터 샘플링을 수행함으로써 상기 제2 성분을 획득하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 13,
The step of obtaining the first component and the second component,
Obtaining the second component by performing sampling from the odd set
A homomorphic cryptographic operation method including.
제10항에 있어서,
상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는,
상기 입력 암호문의 다항식의 차수 및 상기 암호문의 모듈러스에 기초하여 상기 모듈러스 스위칭을 수행하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 10,
The step of performing the modulus switching is,
Performing the modulus switching based on the degree of the polynomial of the input ciphertext and the modulus of the ciphertext.
A homomorphic cryptographic operation method including.
제15항에 있어서,
상기 입력 암호문의 다항식의 차수 및 상기 암호문의 모듈러스에 기초하여 상기 모듈러스 스위칭을 수행하는 단계는,
상기 다항식의 차수, 상기 암호문의 모듈러스에 기초하여 상기 성분을 변환하는 단계; 및
변환된 성분에 홀수로 반올림(round-to-odd)을 수행함으로써 상기 모듈러스 스위칭을 수행하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 15,
The step of performing the modulus switching based on the degree of the polynomial of the input ciphertext and the modulus of the ciphertext is,
converting the component based on the degree of the polynomial and the modulus of the ciphertext; and
Performing the modulus switching by performing round-to-odd on the converted component.
A homomorphic cryptographic operation method including.
제10항에 있어서,
상기 모듈러스 스위칭(modulus switching)을 수행하는 단계는,
홀수로 이루어진 부분집합을 생성하는 단계; 및
상기 성분을 상기 부분집합으로 매핑시킴으로써 상기 모듈러스 스위칭을 수행하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 10,
The step of performing the modulus switching is,
generating a subset of odd numbers; and
Performing the modulus switching by mapping the components to the subset
A homomorphic cryptographic operation method including.
제17항에 있어서,
상기 부분집합을 생성하는 단계는,
임의의 홀수의 거듭제곱 또는 상기 거듭제곱 사이의 곱셈 결과에 기초하여 상기 부분집합을 생성하는 단계
를 포함하는 동형 암호 연산 방법.
According to clause 17,
The step of generating the subset is,
generating the subset based on the power of any odd number or the result of multiplication between the powers
A homomorphic cryptographic operation method including.
하드웨어와 결합되어 제10항 내지 제18항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독가능한 매체에 저장된 컴퓨터 프로그램.A computer program stored in a computer-readable medium in combination with hardware to execute the method of any one of claims 10 to 18.
KR1020220158554A 2022-10-04 2022-11-23 Homomorphic encryption opeation apparatus and method KR20240047269A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/301,343 US20240121076A1 (en) 2022-10-04 2023-04-17 Apparatus and method with homomorphic encryption

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220126544 2022-10-04
KR1020220126544 2022-10-04

Publications (1)

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

Family

ID=90680563

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220158554A KR20240047269A (en) 2022-10-04 2022-11-23 Homomorphic encryption opeation apparatus and method

Country Status (1)

Country Link
KR (1) KR20240047269A (en)

Similar Documents

Publication Publication Date Title
TWI734368B (en) Data homomorphic encryption and decryption method and device for realizing privacy protection
US10075289B2 (en) Homomorphic encryption with optimized parameter selection
US9355271B2 (en) System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption
US10153894B2 (en) Homomorphic encryption with optimized encoding
US20170180115A1 (en) Homomorphic Encryption with Optimized Homomorphic Operations
Banegas et al. DAGS: Key encapsulation using dyadic GS codes
Bogos et al. Cryptanalysis of a homomorphic encryption scheme
Miranda-López et al. Experimental analysis of secret sharing schemes for cloud storage based on rns
US10826694B2 (en) Method for leakage-resilient distributed function evaluation with CPU-enclaves
EP3661115B1 (en) Encryption device, decryption device, encryption method, decryption method, encryption program, and decryption program
WO2014007296A1 (en) Order-preserving encryption system, encryption device, decryption device, encryption method, decryption method, and programs thereof
Ding et al. Cryptanalysis of a public key cryptosystem based on Diophantine equations via weighted LLL reduction
WO2021114850A1 (en) Method and apparatus for encrypting and decrypting and reading and writing messages, computer device, and storage medium
US10235506B2 (en) White-box modular exponentiation
CN113169860A (en) Apparatus and method for non-polynomial computation of ciphertext
von Maurich et al. IND-CCA secure hybrid encryption from QC-MDPC Niederreiter
CN116635847A (en) Implementing resilient deterministic encryption
KR20230078510A (en) Apparatus and method of homomorphic encryption opeation
Hoang et al. A multi-server oblivious dynamic searchable encryption framework
KR20240047269A (en) Homomorphic encryption opeation apparatus and method
Vennela et al. Performance analysis of cryptographic algorithms for cloud security
KR20240047280A (en) Homomorphic encryption opeation apparatus and method
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
KR20220157843A (en) Method and apparatus of modulus refresh in homomorhpic encryption