KR20150043062A - 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버 - Google Patents

동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버 Download PDF

Info

Publication number
KR20150043062A
KR20150043062A KR20130122048A KR20130122048A KR20150043062A KR 20150043062 A KR20150043062 A KR 20150043062A KR 20130122048 A KR20130122048 A KR 20130122048A KR 20130122048 A KR20130122048 A KR 20130122048A KR 20150043062 A KR20150043062 A KR 20150043062A
Authority
KR
South Korea
Prior art keywords
encrypted
pke
fhe
server
data
Prior art date
Application number
KR20130122048A
Other languages
English (en)
Other versions
KR101608515B1 (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 KR1020130122048A priority Critical patent/KR101608515B1/ko
Publication of KR20150043062A publication Critical patent/KR20150043062A/ko
Application granted granted Critical
Publication of KR101608515B1 publication Critical patent/KR101608515B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

엘가말(EIGamal) 암호화 알고리즘에 의해 암호화된 데이터를 연산하는 방법에 있어서, 엘가말(EIGamal) 암호화 알고리즘에 의해 암호화된 데이터를, 완전동형 또는 준동형 또는 준동형 알고리즘에 의해 암호화된 데이터 형태로 변환하는 단계; 및 동형 또는 암호화 알고리즘에 의해 암호화된 형태의 데이터에 대하여 연산을 수행하는 단계;를 포함하는 공개키로 암호화된 데이터를 연산하는 방법이 개시된다.

Description

동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버{Computation Method of encrypted data using Homomorphic Encryption and Public Key Encryption and Server using the same}
본 발명은 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버에 관한 것이다.
완전 동형 또는 준동형 암호화 기술은 암호화된 상태에서 곱셈이나 덧셈이 가능하도록 하는 암호화 기술로서, 여러 분야에서 활용이 기대되고 있다. 예를 들면, 프라이버시를 보호할 필요가 있는 경우, 준동형 암호화 기술은 복호화를 할 필요없이 암호화된 상태에서 처리가 가능하므로, 유용할 수 있다.
2009년 완전 준동형 암호화 기술을 제시된 뒤로 완전 준동형 암호에 대한 연구가 활발하게 이루어지고 있으며, 특히, 정수 기반 완전 준동형 암호화 기술은 횟수에 제한 없이 암호문간의 더하기와 곱하기 연산을 지원할 수 있는 기술이다.
하지만, 완전 동형 또는 준동형 암호화 기술로 암호화된 암호화문은 그 크기가 지나치게 클 뿐만 아니라 암호화에 많은 시간이 걸린다.
본 발명의 일 실시예에 따르면, 암호화된 상태에서 곱하기와 덧셈과 같은 연산이 가능하되, 암호화문의 크기가 작고 암호화 속도가 빠른, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버가 제공될 수 있다.
본 발명의 하나 이상의 실시예에 따르면, 공개키로 암호화된 데이터를 연산하는 서버에 있어서,
메모리, 컴퓨터 프로세서, 및 상기 컴퓨터 프로세서에 의해 상기 메모리에 로딩되어 실행되는 컴퓨터 프로그램 코드;를 포함하며,
상기 컴퓨터 프로그램 코드는,
공개키로 암호화된 데이터(이하, '공개키 암호화 데이터')(PKE(m)={PKE(mi)|1≤i≤n, i,n는 정수} = PKE(m1), PKE(m2), ... , PKE(mn))를, 완전동형 또는 준동형 알고리즘에 의해 암호화된 데이터 형태로 변환하는 단계; 및
완전동형 또는 준동형 알고리즘에 의해 암호화된 형태의 데이터(이하, '동형 또는 준동형 데이터')(FHE(m)={FHE(mi)|1≤i≤n, i,n는 정수} = FHE(m1), FHE(m2), ... , FHE(mn))에 대하여 연산을 수행하는 단계;를 포함하는 것을 특징으로 하는 서버가 제공될 수 있다.
상기 변환하는 단계는,
상기 완전동형 또는 준동형 알고리즘에 의해서 암호화된 비밀키(FHE(e))를 사용하는 것일 수 있다.
상기 공개키 암호화 데이터(PKE(mi))는 엘가말(EIGamal) 암호화 알고리즘 의해 암호화된 것으로서 다음
PKE(mi) = (g-r, mi·yr)
과 같은 형태를 가지며, 여기서, r은 [0, |G|]에서 랜덤하게 선택되는 값이고, g는 G = {g, g2, .... , }로 정의되는 집합에서 선택되며, y =ge 이고, e는 비밀키를 의미하는 것일 수 있다.
상기 비밀키(e)는 다음의 수식
Figure pat00001
여기서, ei ∈ {0, 1},
Figure pat00002
이며,
에 의해 이진법(binary representation)으로 전개된 것일 수 있다.
상기 변환하는 단계는,
상기 PKE(mi) = (g-r, mi·yr)를
FHE(mi)로 변환하는 단계인 것일 수 있다.
상기 변환하는 단계는,
Figure pat00003
를 계산하는 단계를 포함하며, 여기서,
Figure pat00004
이고, h = g-r 인 것일 수 있다.
상기 변환하는 단계에서 사용하는 상기 암호화된 비밀키(FHE(e))는, 상기 서버가 상기 공개키를 이용하여 생성한 것이거나, 또는 상기 서버가 외부 장치로부터 전송받은 것일 수 있다.
상기 컴퓨터 프로그램 코드는, 상기 연산에 곱셈 연산이 포함된 경우에는,
상기 변환하는 단계를 수행하기 전에,
상기 공개키로 암호화된 데이터(PKE(m1), PKE(m2), ... , PKE(mn))들끼리 곱셈 연산을 먼저 하며,
상기 변환하는 단계는, 상기 곱셈 연산의 결과에 대하여 수행되는 일 수 있다.
상기 비밀키(e)는 다음의 수식
Figure pat00005
에 의해 W 진법(W-ary representation)으로 전개된 것일 수 있다.
상기 PKE(mi) = (g-r, mi·yr)를 FHE(mi)로 변환하는 단계일 수 있다.
상기 변환하는 단계는,
Figure pat00006
를 계산하는 단계를 포함하며,
여기서, k ∈ {0, 1, 2, … , w-1},
Ψ(ei) = (ei0, ei1, …, eik, …, eiw -1), eik ∈ {0, 1}, 여기서, 함수 Ψ는 집합 W 에 속한 원소를 집합 Z에 속한 원소로 변환하는 함수이며, W = {0, 1, 2, … , w-1}, Z = {f1, f2, f3, … , fw} 이며, h = g-r 일 수 있다.
상기 ei0, ei1, …, eik, …, eiw -1 중에서 k = ei+1 인 경우에만 '1'의 값을 가지고, 나머지는 모두 '0'의 값을 가지는 것일 수 있다.
본 발명의 다른 실시예에 따르면, 암호화된 데이터를 연산하는 방법에 있어서,
클라이언트가 연산하고자 하는 데이터를 공개키로 암호화하여 서버로 전송하는 단계;
상기 서버가, 상기 클라이언트로부터 전송받은 상기 공개키로 암호화된 데이터(이하, '공개키 암호화 데이터')(PKE(m)={PKE(mi)|1≤i≤n, i,n는 정수} = PKE(m1), PKE(m2), ... , PKE(mn))를, 완전동형 또는 준동형 알고리즘에 의해 암호화된 데이터 형태로 변환하는 단계; 및
상기 서버가, 완전동형 또는 준동형 알고리즘에 의해 암호화된 형태의 데이터(이하, '동형 또는 준동형 데이터')(FHE(m)={FHE(mi)|1≤i≤n, i,n는 정수} = FHE(m1), FHE(m2), ... , FHE(mn))에 대하여 연산을 수행하는 단계;를 포함하는 것일 수 있다.
상기 변환하는 단계는,
상기 완전동형 또는 준동형 알고리즘에 의해서 암호화된 비밀키(FHE(e))를 사용하는 것일 수 있다.
상기 공개키 암호화 데이터(PKE(mi))는 엘가말(EIGamal) 암호화 알고리즘 의해 암호화된 것으로서 다음
PKE(mi) = (g-r, mi·yr)
과 같은 형태를 가지며, 여기서, r은 [0, |G|]에서 랜덤하게 선택되는 값이고, g는 G = {g, g2, .... , }로 정의되는 집합에서 선택되며, y =ge 이고, e는 비밀키를 의미하는 것일 수 있다.
상기 비밀키(e)는 다음의 수식
Figure pat00007
여기서, ei ∈ {0, 1},
Figure pat00008
이며,
에 의해 이진법(binary representation)으로 전개된 것일 수 있다.
상기 변환하는 단계는,
상기 PKE(mi) = (g-r, mi·yr)를
FHE(mi)로 변환하는 단계일 수 있다.
상기 변환하는 단계는,
Figure pat00009
를 계산하는 단계를 포함하며, 여기서, h = g-r 일 수 있다.
상기 변환하는 단계에서 사용하는 상기 암호화된 비밀키(FHE(e))는, 상기 서버가 상기 공개키를 이용하여 생성한 것이거나, 또는 상기 서버가 상기 클라이언트로부터 전송받은 것일 수 있다.
상기 서버는, 상기 연산에 곱셈 연산이 포함된 경우에는,
상기 변환하는 단계를 수행하기 전에,
상기 공개키로 암호화된 데이터(PKE(m1), PKE(m2), ... , PKE(mn))들끼리 곱셈 연산을 먼저 하며,
상기 변환하는 단계는, 상기 곱셈 연산의 결과에 대하여 수행되는 일 수 있다.
상기 비밀키(e)는 다음의 수식
Figure pat00010
에 의해 W 진법(W-ary representation)으로 전개된 일 수 있다.
상기 변환하는 단계는,
상기 PKE(mi) = (g-r, mi·yr)를 FHE(mi)로 변환하는 단계일 수 있다.
Figure pat00011
를 계산하는 단계를 포함하며,
여기서, k ∈ {0, 1, 2, … , w-1},
Ψ(ei) = (ei0, ei1, …, eik, …, eiw -1), eik ∈ {0, 1}, 여기서, 함수 Ψ는 집합 W 에 속한 원소를 집합 Z에 속한 원소로 변환하는 함수이며, W = {0, 1, 2, … , w-1}, Z = {f1, f2, f3, … , fw} 이며, h = g-r일 수 있다.
상기 (ei0, ei1, …, eik, …, eiw -1) 중에서 k = ei +1 인 경우에만 '1'의 값을 가지고, 나머지는 모두 '0'의 값을 가지는 것일 수 있다.
상기 서버는,
상기 연산하는 단계의 연산 결과를 상기 클라이언트에게 전송하거나, 또는
상기 연산하는 단계의 연산 결과를, 상기 완전동형 또는 준동형 알고리즘의 비밀키로 복호화하여 상기 클라이언트에게 전송하는 것일 수 있다.
본 발명의 다른 실시예에 따르면, 엘가말(EIGamal) 암호화 알고리즘에 의해 암호화된 데이터를 연산하는 방법에 있어서,
엘가말(EIGamal) 암호화 알고리즘에 의해 암호화된 데이터를, 완전동형 또는 준동형 또는 준동형 알고리즘에 의해 암호화된 데이터 형태로 변환하는 단계; 및
동형 또는 암호화 알고리즘에 의해 암호화된 형태의 데이터에 대하여 연산을 수행하는 단계;를 포함하는 것을 특징으로 하는 공개키로 암호화된 데이터를 연산하는 방법이 제공될 수 있다.
상기 변환하는 단계는,
상기 완전동형 또는 준동형 알고리즘에 의해서 암호화된 비밀키(FHE(e))를 사용하는 것일 수 있다.
본 발명의 하나 이상의 실시예에 따르면, 연산 서버에 암호화 데이터를 전송할 때 엘가말 암호화 알고리즘과 같은 공개키 기반의 암호화 알고리즘을 사용할 수 있으므로, 암호화문의 크기가 현격히 작아진다.
본 발명의 하나 이상의 실시예에 따르면, 곱하기 연산을 하는 경우, 엘가말 암호문 상태로 연산이 가능하므로, 차수가 아무리 높아도 부트트랩핑을 할 필요 없이 연산이 가능하다.
연산 서버에서도 동형 암호화 알고리즘에 의해 암호화된 암호화문이 아닌 엘가말 암호화 알고리즘과 같은 공개키 기반의 암호화 알고리즘에 의해 암호화된 암호화문을 저장하므로, 부하가 적게 걸린다.
도 1은 본 발명의 일 실시예에 따른 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화된 데이터를 연산하는 방법을 설명하기 위한 흐름도이고,
도 2는 본 발명의 일 실시예에 따른 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화된 데이터를 연산하는 시스템을 설명하기 위한 도면이고,
도 3 내지 도 5는 도 2의 일 실시예에 따른 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화된 데이터를 연산하는 시스템을 설명하기 위한 도면들이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다. 본 명세서에서, 어떤 구성요소가 다른 구성요소 상에 있다고 언급되는 경우에 그것은 다른 구성요소 상에 직접 형성될 수 있거나 또는 그들 사이에 제 3의 구성요소가 게재될 수도 있다는 것을 의미한다.
어떤 엘리먼트, 구성요소, 장치, 또는 시스템이 프로그램 또는 소프트웨어로 이루어진 구성요소를 포함한다고 언급되는 경우, 명시적인 언급이 없더라도, 그 엘리먼트, 구성요소, 장치, 또는 시스템은 그 프로그램 또는 소프트웨어가 실행 또는 동작하는데 필요한 하드웨어(예를 들면, 메모리, CPU 등)나 다른 프로그램 또는 소프트웨어(예를 들면 운영체제나 하드웨어를 구동하는데 필요한 드라이버 등)를 포함하는 것으로 이해되어야 할 것이다.
또한 어떤 엘리먼트(또는 구성요소)가 구현됨에 있어서 특별한 언급이 없다면, 그 엘리먼트(또는 구성요소)는 소프트웨어, 하드웨어, 또는 소프트웨어 및 하드웨어 어떤 형태로도 구현될 수 있는 것으로 이해되어야 할 것이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprises)' 및/또는 '포함하는(comprising)'은 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하, 도면을 참조하여 본 발명을 상세히 설명하도록 한다. 아래의 특정 실시예들을 기술하는데 있어서, 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용들이 없어도 사용될 수 있다는 것을 인지할 수 있다. 어떤 경우에는, 발명을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분들은 본 발명을 설명하는 데 있어 별 이유 없이 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
도 1은 본 발명의 일 실시예에 따른, 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화된 데이터를 연산하는 방법을 설명하기 위한 흐름도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 암호화된 데이터를 연산하는 방법은, 연산하고자 하는 대상이 되는 데이터를 공개키로 암호화하는 단계(S101), S101 단계에서 암호화된 데이터를, 완전동형 또는 준동형 암호화 알고리즘에 의해 암호화된 형태로 변환하는 단계(S103), S103 단계의 수행결과를 이용하여 연산하는 단계(S105), 및 S105 단계의 연산결과를 복호화하는 단계(S107)를 포함할 수 있다.
도 1을 참조하여 설명하고 있는 암호화된 데이터를 연산하는 방법은, 컴퓨터 장치(이하, '장치'라고도 함)에서 구현되며, 예를 들면 1개의 컴퓨터 장치 내에서 구현되거나 또는 2개 이상의 컴퓨터 장치로 분산되어 구현될 수 있다.
1개의 컴퓨터 장치 내에서 이루어지는 경우는, 서버 또는 클라이언트에서 S101, S103, S105, 및 S107가 수행되는 것이다. 한편, 본원 명세서에서 '서버'와 '클라이언트'는 각각 컴퓨터 프로세서(미도시), 메모리(미도시), 및 컴퓨터 프로세서의 제어하에 메모리로 로딩되어 동작하는 컴퓨터 프로그램 코드(미도시)를 포함하도록 구성된 장치를 의미하는 것으로 사용하기로 한다.
2개 이상의 컴퓨터 장치에서 분산되어 이루어지는 경우는, 예를 들면, S101, S107 단계는 클라이언트에서 수행되고, S103 및 S105 단계는 서버에서 수행되는 경우일 수 있다. 다른 예를 들면, S101 단계는 클라이언트에서 수행되고, S103 , S105 단계, 및 S107 단계는 서버에서 수행되는 경우일 수 있다. 또 다른 예를 들면, S101 단계와 S107 단계는 클라이언트에서 수행되고, S103는 제1 서버에서 수행되고, S105 단계는 제2 서버에서 수행되는 경우일 수 있다. 또 다른 예를 들면, S101 단계는 클라이언트에서 수행되고, S103는 제1 서버에서 수행되고, S105 단계와 S107 단계는 제2 서버에서 수행되는 경우일 수 있다.
도 1을 참조하면, S101 단계는, 연산하고자 하는 대상이 되는 데이터를 공개키로 암호화하는 단계이다.
S101 단계는, 공개키 암호화 알고리즘을 이용하여 연산하고자 하는 대상이 되는 데이터를 암호화하는 단계이다. 공개키 기반의 암호화 알고리즘으로서, 예를 들면 엘가말(ELGamal) 암호화 알고리즘(참조문헌: T. E. Gamal. A public key cryptosystem and a signature scheme based on discrete logarithms. In G. R. Blakley and D. Chaum, editors, Advances in Cryptology - CRYPTO 1984, volume 196 of Lecture Notes in Computer Sciences, pages 10-18. Springer, 1984.)을 들 수 있다.
한편, 엘가말 암호화 알고리즘은 예시적인 것으로서, 본원 발명은 엘가말 암호화 알고리즘이 아닌 다른 타입의 공개키 기반의 암호화 알고리즘에도 적용될 수 있다.
본 발명의 설명의 목적을 위해서, 연산하고자 하는 데이터(m)를 다음과 같이 표현하기로 한다.
M = {mi|1≤i≤n, i,n는 정수} = (m1, m2, ... mn)
S101 단계가 수행되면, 데이터('m' 또는 'mi'로 표현하기로 한다)는 다음과 같이 공개키로 암호화된 데이터가 도출된다.
PKE(m)={PKE(mi)|1≤i≤n, i,n는 정수} = PKE(m1), PKE(m2), ... , PKE(mn))
여기서, PKE는 임의의 공개키 암호화 알고리즘을 나타내며, PKE는 예를 들면 엘가말 암호화 알고리즘일 수 있다는 것은 전술한 바와 같다.
즉, S101 단계에서는 공개키와 공개키 기반의 암호화 알고리즘을 사용하여 연산하고자 하는 데이터(mi)를 암호화한다
S101 단계가 엘가말 암호화 알고리즘에 의해 수행되는 경우, PKE(m)는 다음과 같은 형태로 표현될 수 있다.
Figure pat00012
여기서, r은 [0, |G|]에서 랜덤하게 선택되는 값이고, g는 그룹 발생기에 의해 생성되는 값이며, 그룹 생성기는 G = {g, g2, .... , }로 정의되는 집합에서 g를 선택하며, y =ge 이다. 여기서, e는 비밀키를 의미하며, (g, y = ge)는 공개키이다.
이상과 같이 정의되면 다음과 같은 조건을 만족하게 된다.
(g-r)e·m·yr = (g-r)e·m·(ge)r = m
S103 단계는, S101 단계에서 암호화된 데이터를, 완전동형 또는 준동형 암호화 알고리즘에 의해 암호화된 형태로 변환하는 단계이다.
본 단계에서 사용되는 완전동형(Fully Homomorphic Encryption) 또는 준동형 암호화 알고리즘은 암호화문에 대하여 연산을 지원할 수 있는 알고리즘이다. 완전동형 암호화 알고리즘은 리플레쉬라는 기법에 의해 암호화된 상태에서의 연산의 지원 횟수가 무한대인 암호화 알고리즘이고, 준동형 암호화 알고리즘은 암호화된 상태에서의 연산의 지원 횟수가 제한되어 있어서 소정 횟수 이상 연산을 하게 되면 더 이상의 연산이 불가능한 암호화 알고리즘이다.
본원 발명에서 사용가능한 완전동형 또는 준동형 암호화 알고리즘은 종래 알려진 어떠한 것이라도 사용가능하며, 장래 개발될 알고리즘도 사용이 가능하다.
본 발명의 설명의 목적을 위해서, 본원 명세서에서는 '동형 암호화 알고리즘'이라고 함은, '완전 동형 암호화 알고리즘' 또는 '준동형 암호화 알고리즘'을 모두 포함하는 의미로 사용하기로 한다.
S103 단계가 수행되면, 다음과 같이 동형 암호화 알고리즘에 의해 암호화된 형태로 변환된다.
FHE(m)={FHE(mi)|1≤i≤n, i,n는 정수} = FHE(m1), FHE(m2), ... , FHE(mn))
여기서, 본 발명의 설명의 목적을 위해, 'FHE'는 완전 동형 암호화 알고리즘과 준동형 암호화 알고리즘을 모두 포함하는 의미로 사용하기로 한다.
즉, S103 단계는, PKE(mi)를 FHE(mi)로 변환하는 동작을 수행하며, 예를 들면 다음과 같다.
PKE(m1) --> FHE(m1), PKE(m2) --> FHE(m2), ... , PKE(mn) --> FHE(mn)
S103 단계에서는, 상기와 같은 변환 동작을 수행함에 있어서, 암호화된 비밀키(FHE(e))를 사용한다. 여기서, 암호화된 비밀키(FHE(e))는, S101 단계에서 사용된 공개키에 대응이 되는 비밀키가 암호화된 것으로서, 동형 암호화 알고리즘에 의해 암호화된 것이다.
본 발명의 일 실시예에 따르면, S103 단계에서 사용되는 암호화된 비밀키(FHE(e))는, 다음의 수식에 의해 이진법(binary representation)으로 전개된 비밀키가 동형 암호화 알고리즘에 의해 암호화된 것이다.
Figure pat00013
여기서, ei ∈ {0, 1},
Figure pat00014
로 정의된다.
Figure pat00015
은(여기서, 2는 밑이고 e는 지수를 의미), log2e보다 작은 정수들 중에서 가장 큰 정수를 의미한다. 예를 들면, log2e 가 10.7이 나왔다면 ℓ은 10이 된다.
본 실시예에서, S103 단계는, S101 단계에서 사용된 공개키에 대응이 되는 비밀키가 수학식 2에 의해 이진법으로 전개(참조문헌: C.Gentry and S.halevi. Fully homomorphic encryption without squashing using depth-3 arithmetic circuits. In R. Ostrovsky, editor, IEEE 52 nd Annual Symposium on Foundations of Computer Science - FOCS 2011, pages 107-109, IEEE, 2011)되고, 이렇게 이진법으로 전개된 비밀키를 동형 암호화 알고리즘에 의해 암호화한 것을 이용한다.
만약 상기 수식 2에 의해 이진법으로 전개된 비밀키를 동형 암호화 알고리즘에 의해 암호화한 것을 사용한다면, S103 단계는 다음과 같은 수식에 의해 변환동작을 수행할 수 있다.
Figure pat00016
여기서, h=g-r 이다.
본 수식 3을 사용하여 S103 단계가 수행되면 다음과 같은 데이터들이 산출된다.
FHE(m1), FHE(m2), ... , FHE(mn)
본 발명의 다른 실시예에 따르면, S103 단계에서 사용되는 암호화된 비밀키(FHE(e))는, 다음의 수식에 의해 W 진법(W-ary representation)으로 전개된 것일 수 있다.
Figure pat00017
본 실시예에 따르면, S103 단계는, S101 단계에서 사용된 공개키에 대응이 되는 비밀키가 수식 4에 의해 W 진법으로 전개되고, 이렇게 W 진법으로 전개된 비밀키를 동형 암호화 알고리즘에 의해 암호화한 것을 이용한다.
상기 수식 4에 의해 w 진법으로 전개된 비밀키를 동형 암호화 알고리즘에 의해 암호화한 것을 사용한다면, S103 단계는 다음과 같은 수식에 의해 변환동작을 수행할 수 있다.
Figure pat00018
여기서, k ∈ {0, 1, 2, … , w-1},
Ψ(ei) = (ei0, ei1, …, eik, …, eiw -1), eik ∈ {0, 1}, 여기서, 함수 Ψ는 집합 W 에 속한 원소를 집합 Z에 속한 원소로 변환하는 함수이며, W = {0, 1, 2, … , w-1}, Z = {f1, f2, f3, … , fw} 이며,
Figure pat00019
이고, h = g-r 이다. 여기서, w는 밑이고 e는 지수를 의미하며, log2e보다 작은 정수들 중에서 가장 큰 정수를 의미한다. 예를 들면, log2e 가 10.7이 나왔다면 ℓ은 10이 된다.
상기 수식 5를 사용하여 S103 단계가 수행되면 다음과 같은 데이터들이 산출된다.
FHE(m1), FHE(m2), ... , FHE(mn)
한편, 본 발명의 일 실시예에 따르면,(ei0, ei1, …, eik, …, eiw -1) 중에서 k = ei +1 인 경우에만 '1'의 값을 가지고, 나머지는 모두 '0'의 값을 가지는 것으로 정의될 수 있다. 이러한 경우, f1, f2, f3, … , fw - 1는 다음과 같이 기술할 수 있다.
f1 = (1, 0, 0, ... , 0)
f2 = (0, 1, 0, ... , 0)
f3 = (0, 0, 1, ... , 0)
fw -1= (0, 0, 0, ... , 1)
위와 같이, (ei0, ei1, …, eik, …, eiw -1) 중에서 k = ei +1 인 경우에 '1'의 값을 가지고, 나머지는 모두 '0'의 값을 가지는 것으로 정의되며, Ψ(ei)는 다음과 같이 기술할 수 있다.
Ψ(e0)= (e00, e01, … e0w -1)
Ψ(e1) = (e10, e11, … e1w -1)
Ψ(e2) = (e20, e21, … e2w -1)
Ψ(ew)= (e0, ew1, … eww -1)
S103 단계에서, 상기와 같은 Ψ(ei)를 수식 5에 적용하여 계산하면, 다음과 같은 데이터들이 산출될 수 있다.
FHE(m1), FHE(m2), ... , FHE(mn)
상기 실시예들에서, 수식 2와 수식 5를 예로 들어서 설명한 암호화된 비밀키(FHE(e))는, 예를 들면, S103 단계가 수행되는 장치(예를 들면, 서버)에서 생성된 것이거나(이러한 경우, S103 단계를 수행하는 장치는 비밀키(e)를 알고 있어야 함), 또는 S101 단계가 수행되는 장치(예를 들면, 클라이언트)에서 생성된 후, S103 단계가 수행되는 장치로 전송될 수 있다.
S105 단계는, S103 단계에 의해 동형 암호화 알고리즘 형태로 변환된 데이터들을 연산하는 단계이다. 예를 들면, S105 단계에서 수행하고자 하는 연산이 a(m) = m1 + m2 + 3m3 라고 가정하면, S105 단계에서는, S103 단계에서 산출된 데이터들로부터 다음과 같은 연산을 수행한다.
FHE(m1)+FHE(m2)+3FHE(m3)
다른 예를 들면, S105 단계에서 수행하고자 하는 연산이 a(m) = m1 · m2 + 3m3 라고 가정하면, S105 단계에서는, S103 단계에서 산출된 데이터들로부터 다음과 같은 연산을 수행한다.
FHE(m1)· FHE(m2)+3FHE(m3)
S107 단계는, S105 단계에 의해 연산된 결과에 대하여 복호화하는 동작이다. 동형 암호화 알고리즘에 의해 암호화된 데이터의 복호화는 동형 암호화에 사용된 공개키에 대응되는 비밀키를 사용하여 복호화할 수 있다. 한편, 상술한 바와 같이 S107 단계를 수행하는 장치는 S103 및/또는 S105 단계를 수행하는 장치와 동일(또는 상이)할 수 있다.
도 2는 본 발명의 일 실시예에 따른, 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화된 데이터를 연산하는 시스템을 설명하기 위한 도면이다.
도 2를 참조하여, 본 발명의 일 실시예에 따른 암호화된 데이터를 연산하는 시스템(이하, '본 시스템'라고 함)은, 적어도 하나의 클라이언트(C1, C2, C3)와 서버(100)를 포함할 수 있다.
본 실시예에서, 서버(100)는 메모리(101), 컴퓨터 프로세서(103), 및 저장부(105)를 포함할 수 있으며, 메모리(101)에는 컴퓨터 프로세서(103)의 제어하에 동작하는 컴퓨터 프로그램이 저장되어 있다. 저장부(105)에는 서버(100)의 동작을 위해 필요한 컴퓨터 프로그램과 데이터가 저장된다.
본 실시예에 따르면, 저장부(105)는, 동형 암호화 알고리즘에 의해 암호화된 비밀키(여기서, 비밀키는 연산대상이 되는 데이터를 암호화하는 데 사용된 공개키에 대응되는 것임)와, 동형 암호화 알고리즘의 공개키를 저장하고 있을 수 있다. 본 실시예에서, 저장부(105)는 상술한 수식을 수행하는데 필요한 데이터를 추가적으로 저장할 수 있다.
다른 실시예에 따르면, 저장부(105)는, 연산대상이 되는 데이터를 암호화하는데 사용된 공개키에 대응되는 비밀키, 동형 암호화 알고리즘의 비밀키와 공개키를 저장할 수 있다. 본 다른 실시예에서, 저장부(105)는 상술한 수식을 수행하는데 필요한 데이터를 추가적으로 저장할 수 있다.
상술한 실시예들에서, 저장부(105)에 저장된 데이터들의 적어도 일부는 메모리(101)에 로딩되어, 상기 컴퓨터 프로그램 코드의 동작에 사용될 수 있다.
상술한 실시예들에서, 저장부(105)에 저장된 데이터들의 적어도 일부는, 서버(100)가 추가적으로 포함하는 다른 메모리(미도시)(예를 들면, 비휘발성 메모리)에 저장될 수 있다.
상기 컴퓨터 프로그램 코드는 후술하겠지만, S101 내지 S107 단계 중 적어도 어느 하나 이상을 수행하도록 구현될 수 있다.
다르게는, 서버(100)는 S101 내지 S107 단계 중 적어도 어느 일부는 하드웨어(미도시)가 수행하도록 하고, 나머지 부분에 대하여 상기 컴퓨터 프로그램 코드가 수행하도록 구현이 가능하다.
본 시스템은, 도 1을 참조하여 설명한 암호화를 연산하는 방법들을 수행할 수 있다. 이하에는, 도 1과 도 2를 같이 참조하여, 도 2에 도시된 시스템의 다양한 실시예들에 대하여 설명하기로 한다.
제1실시예
제1실시예에 따르면, 클라이언트들(C1, C2, C3) 중 적어도 하나는 S101 단계를 수행하고, 서버(100)는 S103 내지 S107 단계를 수행하도록 구성된다.
제1실시예를 설명하면, 클라이언트들 중 적어도 하나의 클라이언트(이하, '클라이언트')는 S101 단계를 수행하고, 그 수행결과를 서버(100)로 전송한다. 서버(100)는, 클라이언트로부터 전송받은 암호화된 데이터(즉, 공개키 기반 알고리즘에 의해 암호화된 데이터)를 동형 암호화 알고리즘에 의해 암호화된 형태로 변환하고(S103), 서버(100)는 S103 단계에서 변환된 암호화 데이터에 대하여 연산을 하고(S105), 연산을 한 후(S107) 클라이언트에게 전송한다.
클라이언트가 S101 단계를 수행할 때, 공개키 기반의 암호화 알고리즘을 이용하여, 연산하고자 하는 데이터를 암호화한다. 일 실시예로서, 클라이언트는 엘가말 암호화 알고리즘에 의해, 연산하고자 하는 데이터를 암호화할 수 있다.
서버(100)가 S103 단계를 수행할 때, 상기 클라이언트로부터 수신한 공개키 암호화 데이터를, 동형 암호화 알고리즘에 의해 암호화된 형태로 변환한다.
서버(100)가 S103 단계를 수행할 때 사용하는 '암호화된 비밀키(FHE(e))'는, 다음의 수식 2에 의해 이진법(binary representation)으로 전개된 비밀키가 동형 암호화 알고리즘에 의해 암호화된 것일 수 있다. 이러한 경우, 서버(100)는, 수식 2을 사용하여 S103 단계를 수행한다.
다르게는, 서버(100)가 S103 단계를 수행할 때 사용하는 '암호화된 비밀키(FHE(e))'는, 다음의 수식 4에 의해 W 진법(binary representation)으로 전개된 비밀키가 동형 암호화 알고리즘에 의해 암호화된 것일 수 있다. 이러한 경우, 서버(100)는, 수식 5를 사용하여 S103 단계를 수행한다.
도 4는 본 시스템에 따른 일 실시예를 설명하기 위한 것으로서, 제1실시예의 이해를 위한 도면이다.
도 4를 참조하여 본 제1실시예를 설명하면, 클라이언트는 연산할 데이터를 공개키 암호화 알고리즘을 사용하여 암호화하여, 서버(100)로 전송한다. 서버(100)는 클라이언트로부터 전송받은 암호화 데이터를, 동형 암호화 알고리즘에 의해 암호화된 형태로 변환하고, 변환결과를 이용하여 연산을 한다. 이후, 서버(100)는 연산 결과를 상기 동형 암호화 알고리즘의 공개키와 대응이 되는 비밀키를 이용하여 복호화한다. 그리고, 서버(100)는 상기 복호화 결과를 클라이언트에게 전송한다.
이상 설명한 것 외에 각 단계에 대한 보다 상세한 설명은 도 1을 참조하여 설명한 부분을 참조하기 바란다.
제2실시예
제2실시예에 따르면, 클라이언트들(C1, C2, C3) 중 적어도 하나는 S101 단계, S107 단계를 수행하고, 서버(100)는 S103 내지 S105 단계를 수행하도록 구성될 수 있다.
제2실시예와 제1실시예와의 차이점은, S107 단계가 서버(100)가 아닌 클라이언트에서 수행된다는 것이다.
도 3은 본 시스템에 따른 일 실시예를 설명하기 위한 것으로서, 구체적으로는 제2실시예의 이해를 위한 도면이다.
도 3을 참조하여 제2실시예를 설명하면, 클라이언트는 연산할 데이터를 공개키 암호화 알고리즘을 사용하여 암호화하여, 서버(100)로 전송한다. 서버(100)는 클라이언트로부터 전송받은 암호화 데이터를, 동형 암호화 알고리즘에 의해 암호화된 형태로 변환하고, 변환결과를 이용하여 연산을 한다. 이후, 서버(100)는 연산 결과를 클라이언트로 전송하며, 클라이언트는 서버(100)로부터 수신한 연산 결과를, 상기 동형 암호화 알고리즘의 공개키와 대응이 되는 비밀키를 이용하여 복호화한다.
제2실시예에서 수행하는 각 단계에 대한 보다 구체적인 설명은, 도 1을 참조하여 설명한 부분을 참조하기 바란다.
제3실시예
제3실시예에 따르면, 클라이언트들(C1, C2, C3) 중 적어도 하나는 S101, S105, S107 단계를 수행하고, 서버(100)는 S103 단계를 수행하도록 구성될 수 있다.
제3실시예와 제1실시예와의 차이점은, S105 단계와 S107 단계가 서버(100)가 아닌 클라이언트에서 수행된다는 것이다.
즉, 제2실시예에 따르면, 서버(100)는 S103 단계의 수행결과를 클라이언트로 전송하며, 클라이언트는 S103 단계의 수행결과를 전송받아서 S105와 S107 단계를 수행할 수 있다. 제2실시예에서 수행하는 각 단계에 대한 구체적인 설명은, 도 1을 참조하여 설명한 부분을 참조하기 바란다.
제4실시예
제4실시예에 따르면, 클라이언트들(C1, C2, C3) 중 적어도 하나는 S101, S107 단계를 수행하고, 서버(100)는 S103 내지 S105 단계를 수행하도록 구성하되, S103 단계의 수행이전에 S102 단계를 더 수행할 수 있다.
즉, 클라이언트가 S101 단계를 수행한 후 수행결과를 서버(100)로 전송하면, 서버(100)는 S102 단계, S103, S105 단계를 수행하고 수행결과를 클라이언트에게 전송한다. 이후, 클라이언트는 S107 단계를 수행한다.
제4실시예에서 수행하는 각 단계에 대한 구체적인 설명은, 도 1을 참조하여 설명한 부분을 참조하기 바란다
한편, S102 단계(미표시)는, 도 5를 참조하여 설명하기로 한다.
도 5는 본 발명의 일 실시예에 따른 시스템을 설명하기 위한 도면으로서, 상술한 제4실시예를 설명하기 위한 도면이다.
도 5를 참조하면, 클라이언트(C1)는 연산할 데이터를 엘가말 암호화 알고리즘에 의해 암호화를 하고, 암호화 결과를 서버(100)로 전송한다.
서버(100)는, 클라이언트(C1)로부터 수신한 암호화된 데이터에 대하여, 곱셈 연산을 한다(S102 단계). 이것이 가능한 이유는 엘가말 암호화 알고리즘에 의해 암호화된 데이터는 암호화된 상태에서 곱셈 연산이 가능하기 때문이다.
서버(100)는, 곱셈 연산이 끝나면, 곱셈 연산의 결과물들에 대하여, 동형 암호화 알고리즘에 의해 암호화된 데이터 형태로 변환한다.
계속하여, 서버(100)는 나머지 남은 연산을 수행하며, 연산 결과를 클라이언트에게 전송한다.
클라이언트는, 서버(100)로부터 수신한 연산 결과를, 동형 암호화 알고리즘에 사용된 공개키에 대응되는 비밀키를 사용하여 복호화한다.
본 발명의 설명의 목적을 위해서, 수행하고자 하는 연산이 a(m) = m1 · m2 + 3m3 라고 가정하고 도 5의 실시예를 설명하기로 한다.
클라이언트(C1)는 연산할 데이터( m1, m2, m3 )를 엘가말 암호화 알고리즘에 의해 암호화를 하고, 암호화 결과(PKE(m1), PKE(m2), PKE(m3))를 서버(100)로 전송한다.
서버(100)는, 클라이언트(C1)로부터 수신한 암호화된 데이터(PKE(m1), PKE(m2), PKE(m3))에 대하여, 곱셈 연산할 부분을 판단하고, 곱셈 연산이 필요한 부분에 대하여 곱셈 연산을 한다(S102 단계).
PKE(m1)· PKE(m2) = PKE(m1m2)
서버(100)는, 곱셈 연산이 끝나면, 곱셈 연산의 결과물(PKE(m1m2))과, PKE(m3)를, 동형 암호화 알고리즘에 의해 암호화된 데이터 형태로 변환한다. 본 예에서, 변환결과는 FHE(m1m2)와 FHE(m3)이다.
서버(100)는, 상기 변환 결과를 이용하여, 곱셈 연산을 제외한 나머지 연산을 수행한다, 즉, FHE(m1m2)+ 3FHE(m3)를 연산하며, 그 결과를 클라이언트로 전송된다.
클라이언트는, 서버(100)로부터 수신한 연산 결과를, 동형 암호화 알고리즘에 사용된 공개키에 대응되는 비밀키를 사용하여 복호화한다.
상기와 같이 본 발명적 개념은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명적 개념은 상기의 실시예에 한정되는 것은 아니며, 본 발명적 개념이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명적 개념의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 서버
101: 메모리
103: 컴퓨터 프로세서
105: 저장부

Claims (27)

  1. 공개키로 암호화된 데이터를 연산하는 서버에 있어서,
    메모리, 컴퓨터 프로세서, 및 상기 컴퓨터 프로세서에 의해 상기 메모리에 로딩되어 실행되는 컴퓨터 프로그램 코드;를 포함하며,
    상기 컴퓨터 프로그램 코드는,
    공개키로 암호화된 데이터(이하, '공개키 암호화 데이터')(PKE(m)={PKE(mi)|1≤i≤n, i,n는 정수} = PKE(m1), PKE(m2), ... , PKE(mn))를, 완전동형 또는 준동형 알고리즘에 의해 암호화된 데이터 형태로 변환하는 단계; 및
    완전동형 또는 준동형 알고리즘에 의해 암호화된 형태의 데이터(이하, '동형 또는 준동형 데이터')(FHE(m)={FHE(mi)|1≤i≤n, i,n는 정수} = FHE(m1), FHE(m2), ... , FHE(mn))에 대하여 연산을 수행하는 단계;를 포함하는 것을 특징으로 하는 서버.
  2. 제1항에 있어서,
    상기 변환하는 단계는,
    상기 완전동형 또는 준동형 알고리즘에 의해서 암호화된 비밀키(FHE(e))를 사용하는 것을 특징으로 하는 서버.
  3. 제2항에 있어서,
    상기 공개키 암호화 데이터(PKE(mi))는 엘가말(EIGamal) 암호화 알고리즘 의해 암호화된 것으로서 다음
    PKE(mi) = (g-r, mi·yr)
    과 같은 형태를 가지며, 여기서, r은 [0, |G|]에서 랜덤하게 선택되는 값이고, g는 G = {g, g2, .... , }로 정의되는 집합에서 선택되며, y =ge 이고, e는 비밀키를 의미하는 것인, 서버.
  4. 제3항에 있어서,
    상기 비밀키(e)는 다음의 수식
    Figure pat00020

    (여기서, ei ∈ {0, 1},
    Figure pat00021
    로 정의됨)
    에 의해 이진법(binary representation)으로 전개된 것임을 특징으로 하는 서버.
  5. 제4항에 있어서,
    상기 변환하는 단계는,
    상기 PKE(mi) = (g-r, mi·yr)를
    FHE(mi)로 변환하는 단계인 것을 특징으로 하는 서버.
  6. 제5항에 있어서,
    상기 변환하는 단계는,
    Figure pat00022

    를 계산하는 단계를 포함하며, 여기서, h = g-r 인 것을 특징으로 하는, 서버.
  7. 제6항에 있어서,
    상기 변환하는 단계에서 사용하는 상기 암호화된 비밀키(FHE(e))는, 상기 서버가 상기 공개키를 이용하여 생성한 것이거나, 또는 상기 서버가 외부 장치로부터 전송받은 것임을 특징으로 하는, 서버.
  8. 제3항에 있어서,
    상기 컴퓨터 프로그램 코드는, 상기 연산에 곱셈 연산이 포함된 경우에는,
    상기 변환하는 단계를 수행하기 전에,
    상기 공개키로 암호화된 데이터(PKE(m1), PKE(m2), ... , PKE(mn))들끼리 곱셈 연산을 먼저 하며,
    상기 변환하는 단계는, 상기 곱셈 연산의 결과에 대하여 수행되는 것을 특징으로 하는, 서버.
  9. 제3항에 있어서,
    상기 비밀키(e)는 다음의 수식
    Figure pat00023

    에 의해 W 진법(W-ary representation)으로 전개된 것임을 특징으로 하는 서버.
  10. 제9항에 있어서,
    상기 변환하는 단계는,
    상기 PKE(mi) = (g-r, mi·yr)를 FHE(mi)로 변환하는 단계인 것을 특징으로 하는 서버.
  11. 제10항에 있어서,
    상기 변환하는 단계는,
    Figure pat00024

    를 계산하는 단계를 포함하며,
    여기서, k ∈ {0, 1, 2, … , w-1},
    Ψ(ei) = (ei0, ei1, …, eik, …, eiw -1) , eik ∈ {0, 1}, 여기서, 함수 Ψ는 집합 W 에 속한 원소를 집합 Z에 속한 원소로 변환하는 함수이며, W = {0, 1, 2, … , w-1}, Z = {f1, f2, f3, … , fw} 이며, h = g-r 인 것을 특징으로 하는, 서버.
  12. 제11항에 있어서,
    상기 (ei0, ei1, …, eik, …, eiw -1) 중에서 k = ei +1 인 경우에만 '1'의 값을 가지고, 나머지는 모두 '0'의 값을 가지는 것을 특징으로 하는 서버.
  13. 암호화된 데이터를 연산하는 방법에 있어서,
    클라이언트가 연산하고자 하는 데이터를 공개키로 암호화하여 서버로 전송하는 단계;
    상기 서버가, 상기 클라이언트로부터 전송받은 상기 공개키로 암호화된 데이터(이하, '공개키 암호화 데이터')(PKE(m)={PKE(mi)|1≤i≤n, i,n는 정수} = PKE(m1), PKE(m2), ... , PKE(mn))를, 완전동형 또는 준동형 알고리즘에 의해 암호화된 데이터 형태로 변환하는 단계; 및
    상기 서버가, 완전동형 또는 준동형 알고리즘에 의해 암호화된 형태의 데이터(이하, '동형 또는 준동형 데이터')(FHE(m)={FHE(mi)|1≤i≤n, i,n는 정수} = FHE(m1), FHE(m2), ... , FHE(mn))에 대하여 연산을 수행하는 단계;를 포함하는 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  14. 제13항에 있어서,
    상기 변환하는 단계는,
    상기 완전동형 또는 준동형 알고리즘에 의해서 암호화된 비밀키(FHE(e))를 사용하는 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  15. 제14항에 있어서,
    상기 공개키 암호화 데이터(PKE(mi))는 엘가말(EIGamal) 암호화 알고리즘 의해 암호화된 것으로서 다음
    PKE(mi) = (g-r, mi·yr)
    과 같은 형태를 가지며, 여기서, r은 [0, |G|]에서 랜덤하게 선택되는 값이고, g는 G = {g, g2, .... , }로 정의되는 집합에서 선택되며, y =ge 이고, e는 비밀키를 의미하는 것인, 암호화된 데이터를 연산하는 방법.
  16. 제15항에 있어서,
    상기 비밀키(e)는 다음의 수식
    Figure pat00025

    (여기서, ei ∈ {0, 1},
    Figure pat00026
    임)
    에 의해 이진법(binary representation)으로 전개된 것임을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  17. 제16항에 있어서,
    상기 변환하는 단계는,
    상기 PKE(mi) = (g-r, mi·yr)를
    FHE(mi)로 변환하는 단계인 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  18. 제17항에 있어서,
    상기 변환하는 단계는,
    Figure pat00027

    를 계산하는 단계를 포함하며, 여기서, h = g-r 인 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  19. 제18항에 있어서,
    상기 변환하는 단계에서 사용하는 상기 암호화된 비밀키(FHE(e))는, 상기 서버가 상기 공개키를 이용하여 생성한 것이거나, 또는 상기 서버가 상기 클라이언트로부터 전송받은 것임을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  20. 제15항에 있어서,
    상기 서버는, 상기 연산에 곱셈 연산이 포함된 경우에는,
    상기 변환하는 단계를 수행하기 전에,
    상기 공개키로 암호화된 데이터(PKE(m1), PKE(m2), ... , PKE(mn))들끼리 곱셈 연산을 먼저 하며,
    상기 변환하는 단계는, 상기 곱셈 연산의 결과에 대하여 수행되는 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  21. 제15항에 있어서,
    상기 비밀키(e)는 다음의 수식
    Figure pat00028

    에 의해 W 진법(W-ary representation)으로 전개된 것임을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  22. 제21항에 있어서,
    상기 변환하는 단계는,
    상기 PKE(mi) = (g-r, mi·yr)를 FHE(mi)로 변환하는 단계인 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  23. 제22항에 있어서,
    상기 변환하는 단계는,
    Figure pat00029

    를 계산하는 단계를 포함하며,
    여기서, k ∈ {0, 1, 2, … , w-1},
    Ψ(ei) = (ei0, ei1, …, eik, …, eiw -1), eik ∈ {0, 1}, 여기서, 함수 Ψ는 집합 W 에 속한 원소를 집합 Z에 속한 원소로 변환하는 함수이며, W = {0, 1, 2, … , w-1}, Z = {f1, f2, f3, … , fw} 이며, h = g-r 인 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  24. 제23항에 있어서,
    상기 (ei0, ei1, …, eik, …, eiw -1) 중에서 k=ei +1 인 경우에만 '1'의 값을 가지고, 나머지는 모두 '0'의 값을 가지는 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  25. 제13항에 있어서,
    상기 서버는,
    상기 연산하는 단계의 연산 결과를 상기 클라이언트에게 전송하거나, 또는
    상기 연산하는 단계의 연산 결과를, 상기 완전동형 또는 준동형 알고리즘의 비밀키로 복호화하여 상기 클라이언트에게 전송하는 것을 특징으로 하는 암호화된 데이터를 연산하는 방법.
  26. 엘가말(EIGamal) 암호화 알고리즘에 의해 암호화된 데이터를 연산하는 방법에 있어서,
    엘가말(EIGamal) 암호화 알고리즘에 의해 암호화된 데이터를, 완전동형 또는 준동형 또는 준동형 알고리즘에 의해 암호화된 데이터 형태로 변환하는 단계; 및
    동형 또는 암호화 알고리즘에 의해 암호화된 형태의 데이터에 대하여 연산을 수행하는 단계;를 포함하는 것을 특징으로 하는 공개키로 암호화된 데이터를 연산하는 방법.
  27. 제26항에 있어서,
    상기 변환하는 단계는,
    상기 완전동형 또는 준동형 알고리즘에 의해서 암호화된 비밀키(FHE(e))를 사용하는 것을 특징으로 하는 공개키로 암호화된 데이터를 연산하는 방법.
KR1020130122048A 2013-10-14 2013-10-14 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버 KR101608515B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130122048A KR101608515B1 (ko) 2013-10-14 2013-10-14 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130122048A KR101608515B1 (ko) 2013-10-14 2013-10-14 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버

Publications (2)

Publication Number Publication Date
KR20150043062A true KR20150043062A (ko) 2015-04-22
KR101608515B1 KR101608515B1 (ko) 2016-04-01

Family

ID=53035936

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130122048A KR101608515B1 (ko) 2013-10-14 2013-10-14 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버

Country Status (1)

Country Link
KR (1) KR101608515B1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170142419A (ko) * 2016-06-17 2017-12-28 서울대학교산학협력단 유효 숫자 연산을 지원하는 동형 암호문의 생성 방법 및 그러한 방법에 의해서 생성된 동형 암호문에 대한 유효 숫자 연산 방법
WO2019139200A1 (ko) * 2018-01-12 2019-07-18 한국스마트인증 주식회사 익명성 보장 및 시빌 공격 방지가 가능한, 블록 체인을 이용한 의사 표시 확인 방법
CN111125788A (zh) * 2019-12-26 2020-05-08 南京星环智能科技有限公司 一种加密计算方法、计算机设备及存储介质
KR102337865B1 (ko) * 2020-10-28 2021-12-10 주식회사 더블체인 동형 암호에 기초한 산술 연산 시스템 및 이를 이용한 동형 암호 산술 연산 방법
US11546134B2 (en) 2020-04-16 2023-01-03 Samsung Electronics Co., Ltd. Method and apparatus for processing ciphertext based on homomorphic encryption
US11558172B2 (en) 2020-04-22 2023-01-17 Samsung Electronics Co., Ltd. Encryption method and apparatus based on homomorphic encryption using composition of functions
KR20230087983A (ko) 2021-12-10 2023-06-19 강석진 Dghv 기반 완전 동형암호 시스템 및 이를 이용한 연산 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11671239B2 (en) 2020-05-08 2023-06-06 Samsung Electronics Co., Ltd. Encryption method and apparatus based on homomorphic encryption using odd function property
US11637700B2 (en) 2020-08-14 2023-04-25 Samsung Electronics Co., Ltd. Method and apparatus with encryption based on error variance in homomorphic encryption
US11870889B2 (en) 2021-02-23 2024-01-09 Samsung Electronics Co., Ltd. Method and apparatus with homomorphic encryption

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170142419A (ko) * 2016-06-17 2017-12-28 서울대학교산학협력단 유효 숫자 연산을 지원하는 동형 암호문의 생성 방법 및 그러한 방법에 의해서 생성된 동형 암호문에 대한 유효 숫자 연산 방법
WO2019139200A1 (ko) * 2018-01-12 2019-07-18 한국스마트인증 주식회사 익명성 보장 및 시빌 공격 방지가 가능한, 블록 체인을 이용한 의사 표시 확인 방법
US11303427B2 (en) 2018-01-12 2022-04-12 Korea Smart Authentication Corp. Method for verifying opinion by use of block chain which guarantees anonimity and prevents sybil attack
CN111125788A (zh) * 2019-12-26 2020-05-08 南京星环智能科技有限公司 一种加密计算方法、计算机设备及存储介质
US11546134B2 (en) 2020-04-16 2023-01-03 Samsung Electronics Co., Ltd. Method and apparatus for processing ciphertext based on homomorphic encryption
US11558172B2 (en) 2020-04-22 2023-01-17 Samsung Electronics Co., Ltd. Encryption method and apparatus based on homomorphic encryption using composition of functions
KR102337865B1 (ko) * 2020-10-28 2021-12-10 주식회사 더블체인 동형 암호에 기초한 산술 연산 시스템 및 이를 이용한 동형 암호 산술 연산 방법
KR20230087983A (ko) 2021-12-10 2023-06-19 강석진 Dghv 기반 완전 동형암호 시스템 및 이를 이용한 연산 방법

Also Published As

Publication number Publication date
KR101608515B1 (ko) 2016-04-01

Similar Documents

Publication Publication Date Title
KR101608515B1 (ko) 동형 암호화 알고리즘과 공개키 암호화 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버
JP6083234B2 (ja) 暗号処理装置
JP5966877B2 (ja) 復号方法、復号プログラム、復号装置、および鍵生成方法
Bos et al. Improved security for a ring-based fully homomorphic encryption scheme
KR101600016B1 (ko) 동형 암호화 알고리즘을 이용한 암호화 방법 및 이를 수행하는 컴퓨팅 장치
EP2936731B1 (en) Managed secure computations on encrypted data
KR102251697B1 (ko) 암호화 장치, 암호화 방법 및 컴퓨터 판독가능 기록매체
EP2924911B1 (en) Secure pattern matching using somewhat homomorphic encryption
US9374220B2 (en) System and method for providing compressed encryption and decryption in homomorphic encryption based on integers
JP2016012111A (ja) 暗号処理方法、暗号処理装置、および暗号処理プログラム
KR101618941B1 (ko) 동형 암호 알고리즘과 페어링 기반 암호 알고리즘을 이용하여, 암호화 데이터를 연산하는 방법 및 이를 이용한 서버
US9037846B2 (en) Encoded database management system, client and server, natural joining method and program
EP3644544A1 (en) Method for comparing ciphertext using homomorphic encryption and apparatus for executing thereof
JPWO2019130528A1 (ja) 変換鍵生成装置、暗号文変換装置、秘匿情報処理システム、変換鍵生成方法、変換鍵生成プログラム、暗号文変換方法及び暗号文変換プログラム
US20090185680A1 (en) Encryption apparatus, decryption apparatus, key generation apparatus, and program
US20100329447A1 (en) Encryption apparatus, decryption apparatus, key generation apparatus, and program
JP2010049213A (ja) 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
CN114866221A (zh) 一种支持浮点运算的改进加法同态加密方法
Akiyama et al. A public-key encryption scheme based on non-linear indeterminate equations
US11558171B2 (en) Apparatus and method for encryption, apparatus and method for converting ciphertext
US20220247550A1 (en) Fully homomorphic encryption from error canceling set systems
JP5300374B2 (ja) 表現変換装置、演算装置、表現変換方法及びプログラム
JP6093719B2 (ja) 暗号化装置、復号装置、およびプログラム
JP2010049216A (ja) 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム
JP2019101083A (ja) 暗号化システム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200217

Year of fee payment: 5