KR20220157844A - 동형 암호에서 암호 키 생성 방법, 장치, 생성된 암호 키를 이용한 사이퍼텍스트 연산 방법 및 장치 - Google Patents
동형 암호에서 암호 키 생성 방법, 장치, 생성된 암호 키를 이용한 사이퍼텍스트 연산 방법 및 장치 Download PDFInfo
- Publication number
- KR20220157844A KR20220157844A KR1020210114638A KR20210114638A KR20220157844A KR 20220157844 A KR20220157844 A KR 20220157844A KR 1020210114638 A KR1020210114638 A KR 1020210114638A KR 20210114638 A KR20210114638 A KR 20210114638A KR 20220157844 A KR20220157844 A KR 20220157844A
- Authority
- KR
- South Korea
- Prior art keywords
- ciphertext
- encryption key
- key
- encryption
- generating
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 239000003643 water by type Substances 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005442 molecular electronic Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
동형 암호에서 암호 키 생성 방법, 장치, 생성된 암호 키를 이용한 사이퍼텍스트 연산 방법 및 장치가 개시된다. 동형 암호(homomorphic encryption)에 기초한 암호화를 수행하기 위한 암호 키 생성 방법에 있어서, 일 실시예에 따른 암호 키 생성 방법은, 데이터를 수신하는 단계와, 비밀 키(secret key)에 기초하여 상기 데이터의 암호화에 이용되는 제1 암호 키 및 제2 암호 키를 생성하는 단계와, 상기 제1 암호 키 및 상기 제2 암호 키를 전송하는 단계를 포함한다.
Description
아래 실시예들은 동형 암호에서 암호 키 생성 방법, 장치, 생성된 암호 키를 이용한 사이퍼텍스트 연산 방법 및 장치에 관한 것이다.
동형 암호(homomorphic encryption)는 암호화된 데이터 사이에서 임의의 연산을 가능하게 하는 유망한 암호화 방법이다. 동형 암호를 활용하면 암호화된 데이터를 복호화하지 않고, 암호화된 상태에서 임의의 연산을 수행할 수 있을 뿐만 아니라, 격자를 기반(lattice-based)으로 하여 양자 알고리즘에 내성(resistant)이 있어 안전하다.
종래의 암호화 방식에서는 RGSW(ring Gentry, Sahai, Waters) 사이퍼텍스트에서 상수 항만 추출하는 것이 불가능했고, 블라인드 로테이션 연산에 필요한 모든 입력 값을 서로 다른 RGSW 사이퍼텍스트에 암호화해야 한다는 문제점이 있었다.
RGSW 사이퍼텍스트는 크기가 크기 때문에 필요한 모든 입력 값을 서로 다른 RGSW 사이퍼텍스트에 암호화할 경우 공개 키의 크기가 커지는 문제가 있다. 따라서, 공개 키의 크기를 감소시킬 수 있는 기술이 요구된다.
동형 암호(homomorphic encryption)에 기초한 암호화를 수행하기 위한 암호 키 생성 방법에 있어서, 일 실시예에 따른 암호 키 생성 방법은, 데이터를 수신하는 단계와, 비밀 키(secret key)에 기초하여 상기 데이터의 암호화에 이용되는 제1 암호 키 및 제2 암호 키를 생성하는 단계와, 상기 제1 암호 키 및 상기 제2 암호 키를 전송하는 단계를 포함한다.
상기 제1 암호 키 및 상기 제2 암호 키를 생성하는 단계는, 상기 비밀 키에 기초하여 암호 상수를 결정하는 단계와, 상기 비밀 키 및 상기 암호 상수에 기초하여 상기 제2 암호 키를 생성하는 단계를 포함할 수 있다.
상기 제1 암호 키는, RGSW(ring Gentry, Sahai, Waters) 사이퍼텍스트 또는 RLWE(ring learning with error) 사이퍼텍스트를 포함하고, 상기 제2 암호 키는 RLWE사이퍼텍스트를 포함할 수 있다.
상기 제1 암호 키 및 상기 제2 암호 키를 생성하는 단계는, 상기 비밀 키에 기초한 RGSW 사이퍼텍스트 또는 상기 비밀 키의 제곱에 기초한 RLWE’ 사이퍼텍스트를 이용하여 상기 제1 암호 키를 생성하는 단계를 포함할 수 있다.
동형 암호(homomorphic encryption)에 기초한 사이퍼텍스트 연산 방법에 있어서, 일 실시예에 따른 사이퍼텍스트 연산 방법은, 데이터 및 비밀 키에 기초하여 생성된 제1 암호 키와 제2 암호 키를 수신하는 단계와, 상기 제1 암호 키 및 상기 제2 암호 키에 기초하여 상기 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키(blind rotation key)를 생성하는 단계와, 상기 블라인드 로테이션 키에 기초하여 상기 데이터의 사이퍼텍스트 연산을 수행하는 단계를 포함한다.
상기 블라인드 로테이션 키를 생성하는 단계는, 상기 제2 암호 키에 시프트(shift) 연산 및 제로이즈(zeroise) 연산을 수행함으로써 블라인드 로테이션 키의 일부를 생성하는 단계와, 상기 제1 암호키와 상기 일부의 곱에 기초하여 상기 블라인드 로테이션 키를 생성하는 단계를 포함할 수 있다.
상기 제2 암호 키에 시프트 연산 및 제로이즈 연산을 수행함으로써 블라인드 로테이션 키의 일부를 생성하는 단계는, 상기 제2 암호 키에 대응하는 사이퍼텍스트를 생성하는 단계와, 상기 사이퍼텍스트에 대응하는 다항식의 계수들 중에서 일부 계수의 부호를 변환하여 부호가 반전된 사이퍼텍스트를 생성하는 단계와, 상기 사이퍼텍스트와 상기 부호가 반전된 사이퍼텍스트를 더하거나 뺌으로써 상기 일부를 생성하는 단계를 포함할 수 있다.
상기 부호가 반전된 사이퍼텍스트를 생성하는 단계는, 상기 다항식의 계수 중에서 차수를 상기 다항식의 차수로 나눈 나머지가 특정한 수인 항의 부호를 변환함으로써 상기 부호가 반전된 사이퍼텍스트를 생성하는 단계를 포함할 수 있다.
상기 사이퍼텍스트와 상기 부호가 반전된 사이퍼텍스트를 더하거나 뺌으로써 상기 일부를 생성하는 단계는, 상기 부호가 반전된 사이퍼텍스트와 상기 사이퍼텍스트를 더하거나 뺌으로써 상기 다항식의 계수 중에서 일부 계수만을 획득하는 단계와, 상기 일부 계수에 기초하여 상기 일부를 생성하는 단계를 포함할 수 있다.
동형 암호(homomorphic encryption)에 기초한 암호화를 수행하기 위한 암호 키 생성 장치에 있어서, 일 실시예에 따른 암호 키 생성 장치는, 데이터를 수신하는 수신기와 비밀 키(secret key)에 기초하여 상기 데이터의 암호화에 이용되는 제1 암호 키 및 제2 암호 키를 생성하고, 상기 제1 암호 키 및 상기 제2 암호 키를 전송하는 프로세서를 포함한다.
상기 프로세서는, 상기 비밀 키에 기초하여 암호 상수를 결정하고, 상기 비밀 키 및 상기 암호 상수에 기초하여 상기 제2 암호 키를 생성할 수 있다.
상기 제1 암호 키는, RGSW(ring Gentry, Sahai, Waters) 사이퍼텍스트 또는 RLWE(ring learning with error) 사이퍼텍스트를 포함하고, 상기 제2 암호 키는 RLWE사이퍼텍스트를 포함할 수 있다.
상기 프로세서는, 상기 비밀 키에 기초한 RGSW 사이퍼텍스트 또는 상기 비밀 키의 제곱에 기초한 RLWE’ 사이퍼텍스트를 이용하여 상기 제1 암호 키를 생성할 수 있다.
동형 암호(homomorphic encryption)에 기초한 사이퍼텍스트 연산 장치에 있어서, 일 실시예에 따른 사이퍼텍스트 연산 장치는, 데이터 및 비밀 키에 기초하여 생성된 제1 암호 키와 제2 암호 키를 수신하는 수신기와, 상기 제1 암호 키 및 상기 제2 암호 키에 기초하여 상기 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키(blind rotation key)를 생성하고, 상기 블라인드 로테이션 키에 기초하여 상기 데이터의 사이퍼텍스트 연산을 수행하는 프로세서를 포함할 수 있다.
상기 프로세서는, 상기 제2 암호 키에 시프트(shift) 연산 및 제로이즈(zeroise) 연산을 수행함으로써 블라인드 로테이션 키의 일부를 생성하고, 상기 제1 암호키와 상기 일부의 곱에 기초하여 상기 블라인드 로테이션 키를 생성할 수 있다.
상기 프로세서는, 상기 제2 암호 키에 대응하는 사이퍼텍스트를 생성하고, 상기 사이퍼텍스트에 대응하는 다항식의 계수들 중에서 일부 계수의 부호를 변환하여 부호가 반전된 사이퍼텍스트를 생성하고, 상기 사이퍼텍스트와 상기 부호가 반전된 사이퍼텍스트를 더하거나 뺌으로써 상기 일부를 생성할 수 있다.
상기 프로세서는, 상기 다항식의 계수 중에서 차수를 상기 다항식의 차수로 나눈 나머지가 특정한 수인 항의 부호를 변환함으로써 상기 부호가 반전된 사이퍼텍스트를 생성할 수 있다.
상기 프로세서는, 상기 부호가 반전된 사이퍼텍스트와 상기 사이퍼텍스트를 더하거나 뺌으로써 상기 다항식의 계수 중에서 일부 계수만을 획득하고, 상기 일부 계수에 기초하여 상기 일부를 생성할 수 있다.
동형 암호(homomorphic encryption)에 기초한 사이퍼텍스트 연산 장치에 있어서, 다른 실시예에 따른 사이퍼텍스트 연산 장치는, 데이터 및 비밀 키에 기초하여 생성된 제1 암호 키 및 제2 암호 키를 수신하는 수신기와, 상기 제1 암호 키 및 상기 제2 암호 키에 기초하여 상기 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키(blind rotation key)의 일부를 생성하고, 상기 일부에 기초하여 상기 데이터의 사이퍼텍스트 연산을 수행하는 프로세서를 포함한다.
도 1a는 일 실시예에 따른 암호 키 생성 장치의 개략적인 블록도를 나타낸다.
도 1b는 일 실시예에 따른 사이퍼텍스트 연산 장치의 개략적인 블록도를 나타낸다.
도 2는 암호 키 생성 동작 및 암호화 동작의 흐름을 나타낸다.
도 3은 도 1a의 암호 키 생성 장치의 암호 키 생성 과정을 나타낸다.
도 4는 시프트 및 제로이즈 연산의 연산량을 줄이기 위한 실시예를 나타낸다.
도 5는 온 더 플라이 LUT 연산을 설명하기 위한 도면이다.
도 6은 도 1a의 암호 키 생성 장치의 동작의 흐름도를 나타낸다.
도 7은 도 1b의 사이퍼텍스트 연산 장치의 동작의 흐름도를 나타낸다.
도 1b는 일 실시예에 따른 사이퍼텍스트 연산 장치의 개략적인 블록도를 나타낸다.
도 2는 암호 키 생성 동작 및 암호화 동작의 흐름을 나타낸다.
도 3은 도 1a의 암호 키 생성 장치의 암호 키 생성 과정을 나타낸다.
도 4는 시프트 및 제로이즈 연산의 연산량을 줄이기 위한 실시예를 나타낸다.
도 5는 온 더 플라이 LUT 연산을 설명하기 위한 도면이다.
도 6은 도 1a의 암호 키 생성 장치의 동작의 흐름도를 나타낸다.
도 7은 도 1b의 사이퍼텍스트 연산 장치의 동작의 흐름도를 나타낸다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
또한, 실시 예의 구성 요소를 설명하는 데 있어서, 제 1, 제 2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
어느 하나의 실시 예에 포함된 구성요소와, 공통적인 기능을 포함하는 구성요소는, 다른 실시 예에서 동일한 명칭을 사용하여 설명하기로 한다. 반대되는 기재가 없는 이상, 어느 하나의 실시 예에 기재한 설명은 다른 실시 예에도 적용될 수 있으며, 중복되는 범위에서 구체적인 설명은 생략하기로 한다.
도 1a는 일 실시예에 따른 암호 키 생성 장치의 개략적인 블록도를 나타내고, 도 1b는 일 실시예에 따른 사이퍼텍스트 연산 장치의 개략적인 블록도를 나타낸다.
도 1a 및 도 1b를 참조하면, 암호 키(encryption key) 생성 장치(10)는 데이터에 기초하여 암호 키를 생성할 수 있다. 암호 키 생성 장치(10)는 데이터의 암호화 또는 사이퍼텍스트 연산을 수행하기 위한 암호 키를 생성할 수 있다. 사이퍼텍스트 연산 장치(30)는 생성된 암호 키에 기초하여 데이터의 암호화 또는 사이퍼텍스트 연산을 수행할 수 있다. 이하에서, 암호화된 데이터 또는 암호문은 사이퍼텍스트(ciphertext)로 지칭될 수 있다. 사이퍼텍스트는 다항식 또는 다항식을 포함하는 벡터의 형태를 가질 수 있다.
암호 키 생성 장치(10)의 암호 키는 RLWE(ring learning with error) 문제 기반의 모든 동형 암호에 적용될 수 있다. 암호 키 생성 장치(10)는 동형 암호가 적용된 모든 장치와 서비스에서 입력 값을 암호화하는 암호화 과정을 수행할 수 있다. 암호 키 생성 장치(10)는 동형 암호에서 블라인드 로테이션 연산의 구현에 필요한 공개키(예: 블라인드 로테이션 키)를 생성할 수 있다. 블라인드 로테이션 연산은 LUT(Look Up Table) 연산을 포함할 수 있다. 블라인드 로테이션 키는 LUT 키를 포함할 수 있다. 암호 키 생성 장치(10)는 동형 암호가 적용된 모든 장치에서 사이퍼텍스트를 이용한 연산을 수행할 수 있다.
사이퍼텍스트 연산 장치(30)는 동형 암호를 이용하여 암호화된 데이터를 복호화(decryption) 없이도 연산할 수 있는 암호 기술을 제공할 수 있다. 예를 들어, 사이퍼텍스트 연산 장치(30)는 동형 암호를 이용하여 암호화된 상태에서 연산한 결과를 복호화함으로써 플레인텍스트(plaintext) 상태의 데이터를 연산한 결과와 동일한 결과가 도출될 수 있다. 사이퍼텍스트 연산 장치(30)는 임의의 이진수, 정수, 실수 또는 복소수에 대한 동형 암호 연산을 제공할 수 있다.
사이퍼텍스트 연산 장치(30)는 동형 암호(homomorphic encryption)에 필요한 모듈러스 리프레시(modulus refresh) 또는 부트스트래핑(bootstrapping)을 수행할 수 있다. 동형 암호를 이용하여 생성된 사이퍼텍스트를 이용하여 연산을 수행할 경우, 사이퍼텍스트에 대응되는 모듈러스 값이 작아지거나 오류(error) 값이 커질 수 있다. 모듈러스 리프레시 또는 부트스트래핑은 작아진 모듈러스를 더 큰 값의 모듈러스로 변경하거나 커진 오류를 작은 값의 오류로 변경함으로써 더 많은 사이퍼텍스트 연산을 수행할 수 있게 하는 동작을 의미할 수 있다.
사이퍼텍스트 연산 장치(30)는 동형 암호를 이용하는 임의의 장치와 서비스에서 입력값을 암호화하는 암호화 과정을 수행할 수 있다. 사이퍼텍스트 연산 장치(10)는 이진수(binary number), 정수(integer), 실수(real number) 또는 복소수(complex number)로 이루어진 플레인텍스트의 사이퍼텍스트를 연산하는 동형 암호를 이용한 사이퍼텍스트 연산을 수행할 수 있다.
사이퍼텍스트 연산 장치(30)는 사이퍼텍스트의 연산을 수행하는 동형 암호에 적용될 수 있고, 블라인드 로테이션 연산 및 키(key)(예: 암호 키) 생성 부분을 대체할 수 있다. 사이퍼텍스트 연산 장치(30)는 프라이버시 보존 컴퓨팅(privacy preserving computing(PPC)) 및 응용 서비스에서 입력 값을 암호화하는 과정, 키 생성 과정 및 LU 연산을 수행할 수 있다. 암호 키 생성 장치(10)는 암호 키의 크기를 감소시킴으로써, 연산량 또는 통신에 제한이 있는 클라이언트를 위한 서비스를 제공할 수 있다.
암호 키 생성 장치(10)는 클라이언트 장치에 구현될 수 있다. 사이퍼텍스트 연산 장치(30)는 서버에 구현될 수 있다.
암호 키 생성 장치(10) 및 사이퍼텍스트 연산 장치(30)는 칩(chip) 형태로 구현되어 동형 암호를 활용하는 하드웨어 가속기에 탑재할 수 있다. 예를 들어, 암호 키 생성 장치(10) 및 사이퍼텍스트 연산 장치(30)는 PC(personal computer), 데이터 서버, 또는 휴대용 장치 내에 구현될 수 있다.
휴대용 장치는 랩탑(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)으로 구현될 수 있다.
암호 키 생성 장치(10)는 수신기(100) 및 프로세서(200)를 포함한다. 암호 키 생성 장치(10)는 메모리(300)를 더 포함할 수 있다. 사이퍼텍스트 연산 장치(30)는 수신기(400) 및 프로세서(500)를 포함한다. 사이퍼텍스트 연산 장치(30)는 메모리(600)를 더 포함할 수 있다.
수신기(100) 및 수신기(400)는 수신 인터페이스를 포함할 수 있다. 수신기(100)는 및 수신기(400)는 데이터를 수신할 수 있다. 수신기(100) 및 수신기(400)는 플레인텍스트(plaintext) 또는 사이퍼텍스트(ciphertext)를 수신할 수 있다. 수신기(400)는 비밀 키에 기초하여 생성된 제1 암호 키와 제2 암호 키를 수신할 수 있다. 사이퍼텍스트는 사이퍼텍스트에 대응하는 모듈러스를 가질 수 있다. 수신기(100) 및 수신기(400)는 수신한 데이터, 플레인 텍스트, 사이퍼텍스트, 암호 키 또는 블라인드 로테이션 키를 프로세서(200) 또는 프로세서(500)로 출력할 수 있다.
프로세서(200) 및 프로세서(500)는 메모리(300) 또는 메모리(600)에 저장된 데이터를 처리할 수 있다. 프로세서(200) 및 프로세서(500)는 메모리(300) 또는 메모리(600)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(200) 및 프로세서(500)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
"프로세서(200) 및 프로세서(500)"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(200)는 비밀 키(secret key) 또는 파라미터(parameter)에 대응하는 비밀 키에 기초하여 제1 암호 키 및 제2 암호 키를 생성할 수 있다. 제1 암호 키는 RGSW(ring Gentry, Sahai, Waters) 사이퍼텍스트 또는 RLWE'(ring learning with error') 사이퍼텍스트를 포함할 수 있다. 제2 암호 키는 RLWE 사이퍼텍스트를 포함할 수 있다.프로세서(200)는 제1 암호 키 및 제2 암호 키를 전송할 수 있다. 예를 들어, 프로세서(200)는 제1 암호 키 및 제2 암호 키를 서버로 전송할 수 있다.
프로세서(200)는 비밀 키에 기초한 RGSW 사이퍼텍스트 또는 비밀 키의 제곱에 기초한 RLWE' 사이퍼텍스트를 이용하여 제1 암호키를 생성할 수 있다.
프로세서(200)는 비밀 키에 기초하여 암호 상수를 결정할 수 있다. 프로세서(200)는 비밀 키 및 암호 상수에 기초하여 제2 암호 키를 생성할 수 있다.
프로세서(500)는 1 암호 키 및 제2 암호 키에 기초하여 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키(blind rotation key)를 생성할 수 있다. 프로세서(500)는 제1 암호 키 및 제2 암호 키에 기초하여 사이퍼텍스트 모듈러스 리프레시 또는 부트스트래핑과 같은 동형 연산을 위하여 블라인드 로테이션 키를 생성할 수 있다.
프로세서(500)는 제2 암호 키에 시프트(shift) 연산 및 제로이즈(zeroise) 연산을 수행함으로써 블라인드 로테이션 키의 일부를 생성할 수 있다.
프로세서(500)는 제2 암호 키에 대응하는 사이퍼텍스트를 생성할 수 있다. 프로세서(500)는 사이퍼텍스트에 대응하는 다항식의 계수들 중에서 일부 계수의 부호를 변환하여 부호가 반전된 사이퍼텍스트를 생성할 수 있다.
프로세서(500)는 사이퍼텍스트와 부호가 반전된 사이퍼텍스트를 더하거나 뺌으로써 블라인드 로테이션 키의 일부를 생성할 수 있다. 프로세서(200)는 제1 암호키와 블라인드 로테이션 키의 일부의 곱에 기초하여 블라인드 로테이션 키를 생성할 수 있다.
프로세서(500)는 블라인드 로테이션 키에 기초하여 데이터의 사이퍼텍스트 연산을 수행할 수 있다.
프로세서(500)는 블라인드 로테이션 키에 기초하여 블라인드 로테이션 연산을 수행함으로써 수신한 데이터에 대응하는 사이퍼텍스트의 동형 연산, 모듈러스 리프레시 또는 부트스트래핑을 수행할 수 있다.
프로세서(500)는 블라인드 로테이션 키의 일부를 이용하여 온 더 플라이(on the fly) 방식으로 사이퍼텍스트 연산을 수행할 수 있다. 프로세서(500)는 제1 암호 키 및 제2 암호 키에 기초하여 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키의 일부를 생성하고, 생성된 블라인드 로테이션 키의 일부에 기초하여 데이터의 사이퍼텍스트 연산을 수행할 수 있다.
메모리(300)는 프로세서(200)에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서(200)의 동작 및/또는 프로세서(200)의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(300)는 휘발성 메모리 장치 또는 비휘발성 메모리 장치로 구현될 수 있다.
휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
비휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive Bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노 튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM(PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
도 2는 암호 키 생성 동작 및 암호화 동작의 흐름을 나타낸다.
도 2를 참조하면, 프로세서(예: 도 1a의 프로세서(200)) 및 프로세서(예: 도 1b의 프로세서(500))는 동형 암호의 LUT 연산에서 RGSW 사이퍼텍스트 대신 RLWE사이퍼텍스트 또는 RLWE' 사이퍼텍스트를 활용할 수 있다. 프로세서(200)는 RLWE' 사이퍼텍스트로부터 필요한 값만을 암호화한 RLWE' 사이퍼텍스트 및 RGSW 사이퍼텍스트를 생성할 수 있다.
프로세서(200)는 암호 키 에서 공통 부분인 에 대한 사이퍼텍스트를 분리하여 암호화하고, 에 대한 키를 별도로 생성할 수 있다. 프로세서(200)는 들을 적은 수의 다항식에 패킹(packing)하여 암호 키의 개수를 줄임으로써 종래의 암호화 방식에 비하여 작은 크기의 공개 키를 통해 동일한 결과를 갖는 블라인드 로테이션 연산을 수행할 수 있다. 프로세서(500)는 생성한 작은 크기의 공개 키를 이용하여 기존과 동일한 결과를 도출하는 블라인드 로테이션 연산을 수행할 수 있다.
RGSW 사이퍼텍스트와 달리 RLWE 사이퍼텍스트나 RLWE' 사이퍼텍스트를 이용할 경우, 프로세서(200)는 자기 동형 사상 성질을 이용하여 기존의 사이퍼텍스트가 저장하고 있는 플레인 텍스트의 일부만을 저장하는 새로운 사이퍼텍스트를 쉽게 생성할 수 있다. 프로세서(200)는 여러 개의 입력 값을 하나의 사이퍼텍스트로 암호화하여 공개 키를 생성할 수 있다. 프로세서(200)는 공개 키의 크기를 줄임으로써 클라이언트 측의 연산 부담을 줄일 수 있고, 전체 암호화 시스템의 통신량을 크게 줄일 수 있다. 특히, 프로세서(200)는 블라인드 로테이션 연산을 이용하는 동형 암호 방식에서 필요한 암호 키의 크기를 수 천 배 줄일 수 있다.
도 2의 예시에서, 프로세서(200)는 210 내지 230의 동작을 수행할 수 있다. 프로세서(500)는 240 내지 270의 동작을 수행할 수 있다. 프로세서(200)는 비밀 키를 수신할 수 있다(210). 비밀 키는 계수가 {-1, 0, 1}의 형태를 가질 수 있다.
프로세서(200)는 컴팩트 표현 과정을 수행할 수 있다(220). 컴팩트 표현 과정은 비밀 키로부터 도출된 암호 상수들을 하나의 RLWE' 사이퍼텍스트에 패킹(packing)하는 과정과 RGSW 사이퍼텍스트를 상대적으로 적은 개수의 RLWE' 사이퍼텍스트에 저장하는 과정을 의미할 수 있다. RLWE' 사이퍼텍스트는 복수의 RLWE 사이퍼텍스트로 이루어질 수 있다. RGSW 사이퍼텍스트, RLWE' 사이퍼텍스트 및 RLWE 사이퍼텍스트에 대해서는 도 3을 참조하여 자세하게 설명한다.
프로세서(200)는 제1 암호 키 및 제2 암호 키를 생성할 수 있다(230). 프로세서(200)는 컴팩트 표현으로 작은 크기의 암호 키(예: 제1 암호 키 및 제2 암호 키)를 생성할 수 있다.
비밀 키는 다항식의 형태를 가질 수 있다. 예를 들어, 프로세서(200)는 다항식의 형태를 가지는 비밀 키 를 수신할 수 있다. 프로세서(200)는 수신한 비밀 키에 기초하여 제1 암호 키 및 제2 암호 키를 생성할 수 있다. 프로세서(200)는 비밀 키에 기초하여 제1 암호 키로 또는 를 생성할 수도 있다. 프로세서(200)는 암호 상수로 구성된 다항식 을 RLWE' 암호화하여 제2 암호 키 를 생성할 수 있다. 각각의 계수 는 비밀 키 계수 에 따라 설정된 암호 상수일 수 있다.
프로세서(500)는 시프트(shift) 및 제로이즈(zeroise) 연산을 수행하여 RLWE'로부터 원하는 데이터 만을 저장하는 RLWE' 사이퍼텍스트를 획득함으로써 블라인드 로테이션 키를 생성할 수 있다.
프로세서(500)는 블라인드 로테이션 키를 복원할 수 있다(240). 프로세서(500)는 컴팩트 블라인드 로테이션 키로부터 RLWE 사이퍼텍스트의 자기 동형 사상을 이용하여 완전한 블라인드 로테이션 키를 복원할 수 있다. 프로세서(500)는 시프트 및 제로이즈 연산 이후의 RLWE' 사이퍼텍스트와 를 이용하여 에 대한 새로운 RGSW 사이퍼텍스트인 를 복원함으로써 블라인드 로테이션 키를 복원할 수 있다.
N 개의 사이퍼텍스트의 계산 과정은 암호화된 상태에서 수행될 수 있다.
프로세서(500)는 상수항 외의 나머지 계수를 0으로 만드는 제로이즈 연산을 수행할 수 있다. 프로세서(500)는 들에 대해 각각 계수 부호 변환 및 더하기 과정을 통해 상수항이 아닌 모든 계수를 0으로 만들 수 있다. 프로세서(500) 이를 통해 아래와 같은 사이퍼텍스트를 계산할 수 있다.
블라인드 로테이션 키의 일부는 수학식 1과 같은 형태를 가질 수 있다.
여기서, g 및 d는 임의의 정수를 분할(decomposition)하기 위해 사전에 정의된 벡터를 의미할 수 있다.
프로세서(500)는 사이퍼텍스트 입력을 수신하고, 수신한 사이퍼텍스트에 대하여 복원한 블라인드 로테이션 키에 기초하여 블라인드 로테이션 연산을 수행할 수 있다(260). 블라인드 로테이션 연산은 동형적으로 수행될 수 있다. 프로세서(500)는 복원한 를 활용하여 블라인드 로테이션 연산을 수행할 수 있다. 프로세서(500)는 블라인드 로테이션 연산이 수행된 사이퍼텍스트를 출력할 수 있다(270).
도 3은 도 1a의 암호 키 생성 장치의 암호 키 생성 과정을 나타낸다.
도 3을 참조하면, 프로세서(예: 도 1b의 프로세서(200))는 블라인드 로테이션 키를 생성할 수 있다. 프로세서(500)는 사이퍼텍스트 및 계수가 {-1, 0, 1}인 비밀 키 에 대하여 를 만족하는 사이퍼텍스트에 대한 블라인드 로테이션 키를 생성할 수 있다. 프로세서(500)는 블라인드 로테이션 키를 복원하여 블라인드 로테이션 연산을 수행할 수 있다.
프로세서(200)는 암호 상수를 결정할 수 있다. 프로세서(200)는 비밀 키 의 i 번째 계수 에 대하여, 와 같이 암호 상수를 결정할 수 있다. 이하에서 암호 상수는 로 표기될 수 있고, *는 + 또는 -를 포함할 수 있다.
프로세서(200)는 N 개의 를 하나의 사이퍼텍스트인 slk*에 암호화할 수 있다. N은 수신한 데이터에 대응하는 사이퍼텍스트를 구성하는 다항식의 차수를 의미할 수 있다. 프로세서(200)는 를 하나 이상의 사이퍼텍스트에 암호화함으로써 통신량과 연산량 사이의 트레이드오프(tradeoff)를 제공할 수 있다.
프로세서(200)는 사이퍼텍스트 및 비밀 키에 기초하여 제1 암호 키 및 제2 암호 키를 생성할 수 있다. 프로세서(200)는 비밀 키의 컴팩트 표현 과정을 수행함으로써 제2 암호 키를 생성할 수 있다.
프로세서(200)는 제1 암호 키를 생성할 수 있다. 제1 암호 키는 에 대한 RGSW 사이퍼텍스트인 slk'일 수 있다. 프로세서(200)는 제2 암호 키를 생성할 수 있다. 제2 암호 키는 에 대한 사이퍼텍스트인 slk*일 수 있다. slk*는 프로세서(500)에서 블라인드 로테이션 연산을 수행할 때, RLWE 사이퍼텍스트의 자기 동형 사상을 이용하여 필요한 계수를 암호화하는 RLWE'만을 계산해 낼 수 있도록 설계될 수 있다.
프로세서(200)는 RLWE 사이퍼텍스트를 이용하여 RGSW 사이퍼텍스트를 생성할 수 있다. 비밀 키 에 대한 메시지 의 RLWE 사이퍼텍스트는 와 같이 정의될 수 있다. 여기서, 는 계수가 모듈러스 q 상의 다항식이고, 는 계수가 작은 오차 다항식을 의미할 수 있다. 프로세서(200)는 매 암호화시에 및 를 무작위로 생성할 수 있다.
프로세서(200)는 에 대한 메시지 의 RLWE' 사이퍼텍스트를 와 같이 정의할 수 있다. 여기서, 는 임의의 정수를 분할(decomposition)하기 위해 사전에 정의된 벡터를 의미할 수 있고, 임의의 정수 에 대해 의 형태를 가지거나 에 대하여 로 설정될 수 있다. 최종적으로, 프로세서(200)는 비밀 키 에 대한 메시지 의 RGSW 사이퍼텍스트를 와 같이 정의할 수 있다.
프로세서(예: 도 1b의 프로세서(500))에서 블라인드 로테이션 연산을 위해 사용하는 블라인드 로테이션 키는 에 대한 사이퍼텍스트일 수 있다. 프로세서(200)는 에 대한 사이퍼텍스트를 하나의 사이퍼텍스트에 담을 수 있다. 는 의 형태를 가질 수 있다.
프로세서(500)는 루프 인덱스 j를 0으로 설정할 수 있다(311). 프로세서(500)는 312 내지 314의 동작을 j≤N-1을 만족하는 동안 반복적으로 수행할 수 있다. 프로세서(500)는 j≤N-1을 만족하는지 여부를 판단할 수 있다(312). N은 사이퍼텍스트의 다항식의 차수를 의미할 수 있다.
312의 조건을 만족하는 동안, 프로세서(500)는 시프트 및 제로이즈 연산을 수행할 수 있다(313). 프로세서(200)는 인덱스 j를 1씩 증가시키면서 를 수행할 수 있다(314).
프로세서(500)는 제2 암호 키에 시프트 및 제로이즈 연산을 수행하여 블라인드 로테이션 키의 일부를 생성할 수 있다. RLWE 사이퍼텍스트 형태의 제2 암호 키인 가 주어진 경우, 프로세서(500)는 RLWE 사이퍼텍스트의 자기 동형 사상을 이용하여 와 같이 홀수 번째 항의 부호가 반대인 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 와 를 더함으로써 를 획득할 수 있다.
마찬가지로, 프로세서(500)는 자기 동형 사상을 이용하여 와 같이 4로 나눈 나머지가 2인 인덱스의 항의 부호가 반대인 사이퍼텍스트를 생성할 수 있다. 프로세서(500)는 와 의 합을 계산함으로써 를 획득할 수 있다.
RLWE' 사이퍼텍스트는 RLWE 사이퍼텍스트의 튜플(tuple)일 수 있다. 프로세서(200)는 상술한 사이퍼텍스트 계산 방법을 이용하여 로부터 를 획득함으로써 블라인드 로테이션 키의 일부를 생성할 수 있다.
프로세서(500)는 제1 암호 키 및 제2 암호 키의 곱에 기초하여 블라인드 로테이션 키를 생성할 수 있다. 프로세서(500)는 를 반복적으로 계산함으로써 블라인드 로테이션 키를 획득할 수 있다. 312의 조건을 만족하지 않는 경우, 프로세서(500)는 루프 인덱스 i를 0으로 설정할 수 있다(315).
프로세서(500)는 i≤d-1을 만족하는 동안 동작 316 내지 318을 반복적으로 수행할 수 있다. 프로세서(500)는 i≤d-1을 만족하는지 여부를 판단할 수 있다(316). 프로세서(500)는 제1 암호 키 및 제2 암호 키의 곱에 기초하여 블라인드 로테이션 키를 생성할 수 있다. 여기서, d는 RLWE 사이퍼텍스트를 표현하는데 사용되는 벡터의 차원(dimension)을 의미할 수 있다.
는 와 같이 나타낼 수 있고, 는 RLWE 사이퍼텍스트일 수 있다. RLWE 사이퍼텍스트와 RWGS 사이퍼텍스트의 곱은 오차(error)가 작은 RLWE 사이퍼텍스트를 반환할 수 있다. 프로세서(500)는 오차가 작은 RLWE 사이퍼텍스트를 반화하는 성질을 이용하여 를 계산할 수 있다(317). 여기서, 는 임의의 정수를 분할(decomposition)하기 위해 사전에 정의된 벡터를 의미할 수 있다. 는 또는 에 대해 의 형태를 가질 수 있다.
프로세서(200)는 비밀 키 의 각 계수인 에 대하여 암호 상수 및 를 후술하는 조건에 따라 생성할 수 있다. 프로세서(200)는 인 경우, , 와 같이 암호 상수를 생성할 수 있다. 프로세서(200)는 인 경우, , 와 같이 암호 상수를 생성할 수 있다. 프로세서(200)는 인 경우, 와 같이 암호 상수를 생성할 수 있다.
프로세서(500)는 암호 상수에 기초하여 블라인드 로테이션 키를 생성하고, 프로세서(500)는 블라인드 로테이션 키에 기초하여 블라인드 로테이션 연산을 수행할 수 있다. 예를 들어, 프로세서(500)는 , 를 상수항으로 하는 다항식에 대한 RGSW(ring Gentry, Sahai, Waters) 사이퍼텍스트를 생성하여 블라인드 로테이션 키로 사용할 수 있다. RGSW 사이퍼텍스트로 이루어진 블라인드 로테이션 키는 와 같이 나타낼 수 있다.
프로세서(500)는 각 계수 에 대하여 를 이용하여 블라인드 로테이션 연산을 수행할 수 있다. 프로세서(500)는 연산하고자 하는 임의의 함수 g에 대해 와 같이 정의하고, 로 초기화를 수행할 수 있다. 프로세서(500)는 모든 에 대하여 를 반복적으로 수행함으로써 대한 사이퍼텍스트 를 획득할 수 있다.
도 4는 시프트 및 제로이즈 연산의 연산량을 줄이기 위한 실시예를 나타낸다.
도 4를 참조하면, 일 실시예에서, 프로세서(예: 도 1a의 프로세서(200))는 slk'의 크기를 줄이고, 크기를 줄인 slk'를 이용하여 연산량을 감소시킬 수 있다.
프로세서(200)는 를 이용하여 블라인드 로테이션 키를 생성할 수 있다. RGSW의 정의에 따라 와 같이 나타낼 수 있고, RLWE'의 정에 따라 의 의 상수 배로 나타낼 수 있다. RLWE의 정의에 따라 (1, 0)은 가 되므로, 는 미리 암호화할 필요 없는 간단한 값일 수 있다.
프로세서(200)가 를 미리 생성할 필요가 없기 때문에, 만을 이용하여 를 계산할 수 있다. 의 구조가 단순하기 때문에, 프로세서(200)는 블라인드 로테이션 키를 빠르게 생성할 수 있다.
다른 실시예에서, 프로세서(500)는 시프트 및 제로이즈 연산의 횟수를 감소시킬 수 있다. 도 4의 예시를 이용하여 프로세서(500)는 자기 동형 사상을 이용한 연산의 횟수를 에서 으로 감소시킬 수 있다.
프로세서(500)는 를 수신할 수 있다(411). 프로세서(500)는 RLWE 사이퍼텍스트의 자기 동형 사상을 이용하여 RLWE를 변환할 수 있다(413). 프로세서(5200)는 자기 동형 사상을 이용하여, 와 같이 홀수 번째 항만 부호가 반대인 사이퍼텍스트를 생성할 수 있다(415).
프로세서(500)는 411 내지 427의 동작을 재귀적으로 수행함으로써 N-1회의 자기 동형 사상을 이용한 연산만으로 모든 계수를 각각 암호화하는 사이퍼텍스트를 획득할 수 있다.
또 다른 실시예에서, 프로세서(500)는 블라인드 로테이션연산을 수행함에 있어 출력 사이퍼텍스트와 입력 사이퍼텍스트가 서로 다른 비밀 키에 대한 사이퍼텍스트가 되도록할 수 있다.
프로세서(200)는 slk* 및 slk'를 생성함에 있어서, 입력 사이퍼텍스트와 같은 비밀 키 가 아닌 새로운 비밀 키 에 대한 사이퍼텍스트로 생성할 수 있다. 예를 들어, 프로세서(200)는 및 와 같이 사이퍼텍스트를 생성할 수 있다. 프로세서(200)는 출력 사이퍼텍스트가 입력 사이퍼텍스트와 상이한 비밀 키를 가지도록 할 수 있다.
도 5는 온 더 플라이 블라인드 로테이션 연산을 설명하기 위한 도면이다.
도 5를 참조하면, 프로세서(예: 도 1b의 프로세서(500))는 온 더 플라이 방식으로 블라인드 로테이션 연산을 수행할 수 있다.
프로세서(500)는 제1 암호 키 를 수신할 수 있다. 프로세서(500)는 를 수신할 수 있다(511). 프로세서(500)는 도 3의 311 내지 314 과정을 수행하여 를 획득할 수도 있다.
프로세서(200)는 블라인드 로테이션 연산이 수행된 사이퍼텍스트를 출력할 수 있다(517). 온 더 플라이 방식으로 블라인드 로테이션 연산을 수행함으로써, 프로세서(500)는 메모리 효율을 증가시킬 수 있다.
도 6은 도 1a의 암호 키 생성 장치의 동작의 흐름도를 나타낸다.
도 6을 참조하면, 수신기(예: 도 1a의 수신기(100))는 데이터를 수신할 수 있다(610).
프로세서(예: 도 1a의 프로세서(200))는 비밀 키에 기초하여 제1 암호 키 및 제2 암호 키를 생성할 수 있다(630). 제1 암호 키는 RGSW 사이퍼텍스트 또는 RLWE' 사이퍼텍스트를 포함할 수 있다. 제2 암호 키는 RLWE 사이퍼텍스트를 포함할 수 있다.
프로세서(200)는 비밀 키에 기초한 RGSW 사이퍼텍스트 또는 비밀 키의 제곱에 기초한 RLWE' 사이퍼텍스트를 이용하여 제1 암호키를 생성할 수 있다.
프로세서(200)는 비밀 키에 기초하여 암호 상수를 결정할 수 있다. 프로세서(200)는 비밀 키 및 암호 상수에 기초하여 제2 암호 키를 생성할 수 있다.
프로세서(200)는 제1 암호 키 및 제2 암호 키를 전송할 수 있다(650).
도 7은 도 1b에 도시된 사이퍼텍스트 연산 장치의 동작의 흐름도를 나타낸다.
도 7을 참조하면, 수신기(예: 도 1b의 수신기(400))는 데이터 및 비밀 키에 기초하여 생성된 제1 암호 키와 제2 암호 키를 수신할 수 있다(710).
프로세서(500)는 1 암호 키 및 제2 암호 키에 기초하여 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키를 생성할 수 있다(730). 프로세서(500)는 제2 암호 키에 시프트 연산 및 제로이즈 연산을 수행함으로써 블라인드 로테이션 키의 일부를 생성할 수 있다.
프로세서(500)는 제2 암호 키에 대응하는 사이퍼텍스트를 생성할 수 있다. 프로세서(500)는 사이퍼텍스트에 대응하는 다항식의 계수들 중에서 일부 계수의 부호를 변환하여 부호가 반전된 사이퍼텍스트를 생성할 수 있다.
프로세서(500)는 사이퍼텍스트와 부호가 반전된 사이퍼텍스트를 더하거나 뺌으로써 블라인드 로테이션 키의 일부를 생성할 수 있다. 프로세서(200)는 제1 암호키와 블라인드 로테이션 키의 일부의 곱에 기초하여 블라인드 로테이션 키를 생성할 수 있다.
프로세서(500)는 블라인드 로테이션 키에 기초하여 데이터의 사이퍼텍스트 연산을 수행할 수 있다(750).
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
Claims (19)
- 동형 암호(homomorphic encryption)에 기초한 암호화를 수행하기 위한 암호 키 생성 방법에 있어서,
데이터를 수신하는 단계;
비밀 키(secret key)에 기초하여 상기 데이터의 암호화에 이용되는 제1 암호 키 및 제2 암호 키를 생성하는 단계; 및
상기 제1 암호 키 및 상기 제2 암호 키를 전송하는 단계
를 포함하는 암호 키 생성 방법.
- 제1항에 있어서,
상기 제1 암호 키 및 상기 제2 암호 키를 생성하는 단계는,
상기 비밀 키에 기초하여 암호 상수를 결정하는 단계; 및
상기 비밀 키 및 상기 암호 상수에 기초하여 상기 제2 암호 키를 생성하는 단계
를 포함하는 암호 키 생성 방법.
- 제1항에 있어서,
상기 제1 암호 키는,
RGSW(ring Gentry, Sahai, Waters) 사이퍼텍스트 또는 RLWE(ring learning with error) 사이퍼텍스트를 포함하고,
상기 제2 암호 키는 RLWE사이퍼텍스트를 포함하는
암호 키 생성 방법.
- 제1항에 있어서,
상기 제1 암호 키 및 상기 제2 암호 키를 생성하는 단계는,
상기 비밀 키에 기초한 RGSW 사이퍼텍스트 또는 상기 비밀 키의 제곱에 기초한 RLWE' 사이퍼텍스트를 이용하여 상기 제1 암호 키를 생성하는 단계
를 포함하는 암호 키 생성 방법.
- 동형 암호(homomorphic encryption)에 기초한 사이퍼텍스트 연산 방법에 있어서,
데이터 및 비밀 키에 기초하여 생성된 제1 암호 키와 제2 암호 키를 수신하는 단계;
상기 제1 암호 키 및 상기 제2 암호 키에 기초하여 상기 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키(blind rotation key)를 생성하는 단계; 및
상기 블라인드 로테이션 키에 기초하여 상기 데이터의 사이퍼텍스트 연산을 수행하는 단계
를 포함하는 사이퍼텍스트 연산 방법.
- 제5항에 있어서,
상기 블라인드 로테이션 키를 생성하는 단계는,
상기 제2 암호 키에 시프트(shift) 연산 및 제로이즈(zeroise) 연산을 수행함으로써 블라인드 로테이션 키의 일부를 생성하는 단계;
상기 제1 암호키와 상기 일부의 곱에 기초하여 상기 블라인드 로테이션 키를 생성하는 단계
를 포함하는 사이퍼텍스트 연산 방법.
- 제6항에 있어서,
상기 제2 암호 키에 시프트(shift) 연산 및 제로이즈(zeroise) 연산을 수행함으로써 블라인드 로테이션 키의 일부를 생성하는 단계는,
상기 제2 암호 키에 대응하는 사이퍼텍스트를 생성하는 단계;
상기 사이퍼텍스트에 대응하는 다항식의 계수들 중에서 일부 계수의 부호를 변환하여 부호가 반전된 사이퍼텍스트를 생성하는 단계; 및
상기 사이퍼텍스트와 상기 부호가 반전된 사이퍼텍스트를 더하거나 뺌으로써 상기 일부를 생성하는 단계
를 포함하는 사이퍼텍스트 연산 방법.
- 제7항에 있어서,
상기 부호가 반전된 사이퍼텍스트를 생성하는 단계는,
상기 다항식의 계수 중에서 차수를 상기 다항식의 차수로 나눈 나머지가 특정한 수인 항의 부호를 변환함으로써 상기 부호가 반전된 사이퍼텍스트를 생성하는 단계
를 포함하는 사이퍼텍스트 연산 방법.
- 제7항에 있어서,
상기 사이퍼텍스트와 상기 부호가 반전된 사이퍼텍스트를 더하거나 뺌으로써 상기 일부를 생성하는 단계는,
상기 부호가 반전된 사이퍼텍스트와 상기 사이퍼텍스트를 더하거나 뺌으로써 상기 다항식의 계수 중에서 일부 계수만을 획득하는 단계; 및
상기 일부 계수에 기초하여 상기 일부를 생성하는 단계
를 포함하는 사이퍼텍스트 연산 방법.
- 동형 암호(homomorphic encryption)에 기초한 암호화를 수행하기 위한 암호 키 생성 장치에 있어서,
데이터를 수신하는 수신기; 및
비밀 키(secret key)에 기초하여 상기 데이터의 암호화에 이용되는 제1 암호 키 및 제2 암호 키를 생성하고,
상기 제1 암호 키 및 상기 제2 암호 키를 전송하는 프로세서
를 포함하는 암호 키 생성 장치.
- 제10항에 있어서,
상기 프로세서는,
상기 비밀 키에 기초하여 암호 상수를 결정하고,
상기 비밀 키 및 상기 암호 상수에 기초하여 상기 제2 암호 키를 생성하는
암호 키 생성 장치.
- 제10항에 있어서,
상기 제1 암호 키는,
RGSW(ring Gentry, Sahai, Waters) 사이퍼텍스트 또는 RLWE(ring learning with error) 사이퍼텍스트를 포함하고,
상기 제2 암호 키는 RLWE사이퍼텍스트를 포함하는
암호 키 생성 장치.
- 제10항에 있어서,
상기 프로세서는,
상기 비밀 키에 기초한 RGSW 사이퍼텍스트 또는 상기 비밀 키의 제곱에 기초한 RLWE' 사이퍼텍스트를 이용하여 상기 제1 암호 키를 생성하는
암호 키 생성 장치.
- 동형 암호(homomorphic encryption)에 기초한 사이퍼텍스트 연산 장치에 있어서,
데이터 및 비밀 키에 기초하여 생성된 제1 암호 키와 제2 암호 키를 수신하는 수신기; 및
상기 제1 암호 키 및 상기 제2 암호 키에 기초하여 상기 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키(blind rotation key)를 생성하고,
상기 블라인드 로테이션 키에 기초하여 상기 데이터의 사이퍼텍스트 연산을 수행하는 프로세서
를 포함하는 사이퍼텍스트 연산 장치.
- 제14항에 있어서,
상기 프로세서는,
상기 제2 암호 키에 시프트(shift) 연산 및 제로이즈(zeroise) 연산을 수행함으로써 블라인드 로테이션 키의 일부를 생성하고,
상기 제1 암호키와 상기 일부의 곱에 기초하여 상기 블라인드 로테이션 키를 생성하는
사이퍼텍스트 연산 장치.
- 제15항에 있어서,
상기 프로세서는,
상기 제2 암호 키에 대응하는 사이퍼텍스트를 생성하고,
상기 사이퍼텍스트에 대응하는 다항식의 계수들 중에서 일부 계수의 부호를 변환하여 부호가 반전된 사이퍼텍스트를 생성하고,
상기 사이퍼텍스트와 상기 부호가 반전된 사이퍼텍스트를 더하거나 뺌으로써 상기 일부를 생성하는
사이퍼텍스트 연산 장치.
- 제16항에 있어서,
상기 프로세서는,
상기 다항식의 계수 중에서 차수를 상기 다항식의 차수로 나눈 나머지가 특정한 수인 항의 부호를 변환함으로써 상기 부호가 반전된 사이퍼텍스트를 생성하는
사이퍼텍스트 연산 장치.
- 제16항에 있어서,
상기 프로세서는,
상기 부호가 반전된 사이퍼텍스트와 상기 사이퍼텍스트를 더하거나 뺌으로써 상기 다항식의 계수 중에서 일부 계수만을 획득하고,
상기 일부 계수에 기초하여 상기 일부를 생성하는
사이퍼텍스트 연산 장치.
- 동형 암호(homomorphic encryption)에 기초한 사이퍼텍스트 연산 장치에 있어서,
데이터 및 비밀 키에 기초하여 생성된 제1 암호 키 및 제2 암호 키를 수신하는 수신기; 및
상기 제1 암호 키 및 상기 제2 암호 키에 기초하여 상기 데이터의 사이퍼텍스트 연산에 이용되는 블라인드 로테이션 키(blind rotation key)의 일부를 생성하고,
상기 일부에 기초하여 상기 데이터의 사이퍼텍스트 연산을 수행하는 프로세서
를 포함하는 사이퍼텍스트 연산 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/744,258 US20220385461A1 (en) | 2021-05-21 | 2022-05-13 | Encryption key generating method, appratus, ciphertext operation method and apparatus using the generated encryption key |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210065439 | 2021-05-21 | ||
KR20210065439 | 2021-05-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220157844A true KR20220157844A (ko) | 2022-11-29 |
Family
ID=84235151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210114638A KR20220157844A (ko) | 2021-05-21 | 2021-08-30 | 동형 암호에서 암호 키 생성 방법, 장치, 생성된 암호 키를 이용한 사이퍼텍스트 연산 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20220157844A (ko) |
-
2021
- 2021-08-30 KR KR1020210114638A patent/KR20220157844A/ko active Search and Examination
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9166785B2 (en) | Cryptography processing device and cryptography processing method | |
US20150312028A1 (en) | Homomorphic encryption and decryption methods using ring isomorphism, and apparatuses using the same | |
JP6386198B1 (ja) | 暗号化装置及び復号装置 | |
KR101449239B1 (ko) | 환 동형 사상을 이용한 동형 암호화 방법과 복호화 방법 및 이를 이용한 장치 | |
Banegas et al. | DAGS: Key encapsulation using dyadic GS codes | |
Ding et al. | Cryptanalysis of a public key cryptosystem based on Diophantine equations via weighted LLL reduction | |
Wang et al. | Bit-level image encryption algorithm based on BP neural network and gray code | |
Usama et al. | Chaos-based simultaneous compression and encryption for Hadoop | |
JP2023063430A (ja) | 暗号システム、鍵生成装置、暗号化装置、復号装置、方法及びプログラム | |
US11799628B2 (en) | Apparatus and method for processing non-polynomial operation on encrypted messages | |
KR20220120410A (ko) | 동형 암호에서 교환 법칙 및 결합 법칙을 이용한 암호화 방법 및 장치 | |
KR20230078510A (ko) | 동형 암호 연산 장치 및 방법 | |
US20230246807A1 (en) | Apparatus and method with homomorphic encryption using automorphism | |
US20220385461A1 (en) | Encryption key generating method, appratus, ciphertext operation method and apparatus using the generated encryption key | |
WO2023074133A1 (ja) | 暗号処理装置、暗号処理方法、及び暗号処理プログラム | |
US11722290B2 (en) | Method and apparatus for modulus refresh in homomorphic encryption | |
KR20220157844A (ko) | 동형 암호에서 암호 키 생성 방법, 장치, 생성된 암호 키를 이용한 사이퍼텍스트 연산 방법 및 장치 | |
JP2022160985A (ja) | 同型暗号文に対する非多項式演算を行う装置及び方法 | |
KR20220157843A (ko) | 동형 암호에서 모듈러스 리프레시 방법 및 장치 | |
Parra et al. | A noiseless key-homomorphic PRF: application on distributed storage systems | |
KR20230116641A (ko) | 자기 동형 사상을 이용한 동형 암호 연산 장치 및 방법 | |
KR20240047280A (ko) | 동형 암호 연산 장치 및 방법 | |
KR20240047269A (ko) | 동형 암호 연산 장치 및 방법 | |
KR20240151100A (ko) | 동형 암호 연산 장치 및 방법 | |
KR20240140659A (ko) | 동형 암호 연산 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |