KR20210067961A - 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법 - Google Patents
완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법 Download PDFInfo
- Publication number
- KR20210067961A KR20210067961A KR1020200164231A KR20200164231A KR20210067961A KR 20210067961 A KR20210067961 A KR 20210067961A KR 1020200164231 A KR1020200164231 A KR 1020200164231A KR 20200164231 A KR20200164231 A KR 20200164231A KR 20210067961 A KR20210067961 A KR 20210067961A
- Authority
- KR
- South Korea
- Prior art keywords
- logic
- value
- output
- homomorphic encryption
- encryption data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Medical Informatics (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 완전동형암호기법으로 암호화된 데이터의 연산 장치에 대한 것으로, 암호화된 데이터를 송수신하는 통신 모듈; 연산 프로그램이 저장된 메모리; 및 상기 연산 프로그램을 실행하는 프로세서를 포함한다. 연산 프로그램은 제 1 동형암호 데이터와 제 2 동형암호 데이터를 비트별로 연산하는 XOR연산 로직, XNOR연산 로직, AND연산 로직 및 OR 연산 로직을 각각 포함하고, 동형암호 데이터에 대한 보수를 반환하는 보수 연산 로직, 동형암호 데이터에 대한 절댓값을 반환하는 절댓값 연산 로직, 동형암호 데이터를 오른쪽으로 이동시킨 결괏값을 반환하는 오른쪽 이동 연산 로직, 동형암호 데이터를 왼쪽으로 이동시킨 결괏값을 반환하는 왼쪽 이동 연산 로직 및 입력된 복수의 동형암호 데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함하고, 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터 중 먼저 입력한 값이 큰 값이면 ‘1’ 비트를 암호화한 제 1 암호화 값을 출력하는 제 1 대소 비교 연산 로직과 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터 중 먼저 입력한 값이 작은 값이면 상기 제 1 암호화 값을 출력하는 제 2 대소 비교 연산 로직을 포함한다.
Description
본 발명은 완전동형암호(Fully Homomorphic Encryption)를 이용해 암호화된 데이터에 대해 별도의 복호화 없이 비교 연산, 사칙 연산 등 각종 연산을 수행하는 장치 및 방법에 대한 관한 것이다.
기존 사용자-클라우드 모델에서는 사용자와 서버 간에 키를 공유하여 이 키를 바탕으로 암호화된 사용자의 데이터가 서버에 보내지게 되고, 서버는 이 키를 통해 사용자의 파일을 복호화하여 해당 사용자가 원하는 서비스를 처리한다.
다만, 사용자와 서버가 키를 공유하므로, 사용자의 개인정보가 유출될 수 있는 문제가 있다. 일례로 문서를 PDF로 변환해주는 웹서버의 경우 사용자가 보낸 파일들을 지속적으로 수집하고, 이를 악의적인 용도로 사용할 가능성이 있다. 마찬가지로 백신 프로그램들도 이러한 경로로 기밀문서 또는 개인정보 등이 포함된 파일들에 대한 접근 권한을 갖게 된다.
동형암호는 이를 방지하기 위한 좋은 수단으로 암호화된 사용자 데이터를 서버가 복호화를 거치지 않고 처리할 수 있게 한다. 이처럼 동형암호를 이용하면 클라우드 환경에서 발생할 수 있는 개인 데이터 프라이버시 문제를 해결할 수 있다.
도 1은 종래 기술에 따른 동형암호가 사용되는 메커니즘을 도시한 것이다.
도시된 바와 같이, 메시지를 평문 상에서 연산한 결괏값과 암호화된 메시지에 대해서 동형암호 연산을 한 후 복호화한 결괏값이 같다는 것을 나타낸다.
즉, 본 발명에서는 이와 같은 동형암호 메커니즘을 이용하여, 암호화된 상태의 데이터에 대해 각종 연산을 수행하는 기능을 개발하고자 한다.
현재 비트 단위를 기반으로 암호화하는 동형암호의 경우 기초 연산이 부족한 실정이다. 이에 따라, 본 발명에서는 동형암호를 기반으로 하는 기초 연산들을 구축하고, 이를 기반으로 추가적인 응용 연산들을 만들어 나가는데 기여하고자 한다.
본 발명에서는 동형암호 기법으로 암호화된 데이터에 대한 비교 연산과 사칙 연산을 수행할 수 있도록 하는 암호화된 데이터의 연산 장치 및 방법을 제공하는데 그 목적이 있다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
전술한 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 완전동형암호기법으로 암호화된 데이터의 연산 장치는 암호화된 데이터를 송수신하는 통신 모듈; 연산 프로그램이 저장된 메모리; 및 상기 연산 프로그램을 실행하는 프로세서를 포함한다.
이때, 연산 프로그램은 제 1 동형암호 데이터와 제 2 동형암호 데이터를 비트별로 연산하는 XOR연산 로직, XNOR연산 로직, AND연산 로직 및 OR 연산 로직을 각각 포함하고, 동형암호 데이터에 대한 보수를 반환하는 보수 연산 로직, 동형암호 데이터에 대한 절댓값을 반환하는 절댓값 연산 로직, 동형암호 데이터를 오른쪽으로 이동시킨 결괏값을 반환하는 오른쪽 이동 연산 로직, 동형암호 데이터를 왼쪽으로 이동시킨 결괏값을 반환하는 왼쪽 이동 연산 로직 및 입력된 복수의 동형암호 데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함하고, 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터 중 먼저 입력한 값이 큰 값이면 '1' 비트를 암호화한 제 1 암호화 값을 출력하는 제 1 대소 비교 연산 로직과 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터 중 먼저 입력한 값이 작은 값이면 상기 제 1 암호화 값을 출력하는 제 2 대소 비교 연산 로직을 포함하되, 상기 제 1 대소 비교 연산 로직은 상기 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 상기 XNOR 연산 로직에 입력하여 제 1 출력값을 구하고, MUX 연산 로직을 통해 상기 제 1 출력값에 따라 '0' 비트를 암호화한 제 2 암호화 값 또는 제 1 동형암호 데이터를 출력하고, 상기 제 2 대소 비교 연산 로직은 상기 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 상기 XNOR 연산 로직에 입력하여 제 1 출력값을 구하고, MUX 연산 로직을 통해 상기 제 1 출력값에 따라 '0' 비트를 암호화한 제 2 암호화 값 또는 상기 제 2 동형암호 데이터를 출력한다.
본 발명의 다른 실시예에 따른 완전동형암호기법으로 암호화된 데이터의 연산 장치를 이용한 암호화된 데이터의 연산 방법은 상기 암호화된 데이터의 연산 장치는 제 1 동형암호 데이터와 제 2 동형암호 데이터를 비트별로 연산하는 XOR연산 로직, XNOR연산 로직, AND연산 로직 및 OR 연산 로직을 각각 포함하고, 동형암호 데이터에 대한 보수를 반환하는 보수 연산 로직, 동형암호 데이터에 대한 절댓값을 반환하는 절댓값 연산 로직, 동형암호 데이터를 오른쪽으로 이동시킨 결괏값을 반환하는 오른쪽 이동 연산 로직, 동형암호 데이터를 왼쪽으로 이동시킨 결괏값을 반환하는 왼쪽 이동 연산 로직 및 입력된 복수의 동형암호 데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함하는 연산 프로그램이 설치된 것이고, 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 제 1 대소 비교 연산 로직에 입력하여 대소 비교를 수행하는 단계 및 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 제 2 대소 비교 연산 로직에 입력하여 대소 비교를 수행하는 단계를 포함한다.
이때, 제 1 대소 비교 연산 로직은 먼저 입력한 값이 큰 값이면 ‘1’ 비트를 암호화한 제 1 암호화 값을 출력하는 것이고, 상기 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 상기 XNOR 연산 로직에 입력하여 제 1 출력값을 구하고, MUX 연산 로직을 통해 상기 제 1 출력값에 따라 ‘0’ 비트를 암호화한 제 2 암호화 값 또는 제 1 동형암호 데이터를 출력하는 것이고, 상기 제 2 대소 비교 연산 로직은 먼저 입력한 값이 작은 값이면 상기 제 1 암호화 값을 출력하는 것이고, 상기 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 상기 XNOR 연산 로직에 입력하여 제 1 출력값을 구하고, MUX 연산 로직을 통해 상기 제 1 출력값에 따라 ‘0’ 비트를 암호화한 제 2 암호화 값 또는 상기 제 2 동형암호 데이터를 출력하는 것이다.
전술한 본 발명의 과제 해결 수단에 따르면, 완전동형암호기법으로 암호화된 데이터를 암호화된 상태에서, 비교 연산이나 각종 사칙 연산에 입력할 수 있고, 암호화된 상태에서 그 결과를 출력할 수 있다.
이를 통해, 각종 클라우드 서비스, 개인 PC의 바이러스 검사, 인간 유전자 게놈(Genome) 데이터 분석과 같이개인의 프라이버시 보존이 높게 요구되는 산업에서, 데이터 보안 특성을 크게 향상시킬 수 있다.
또한, 본 발명은 다양한 수학·통계 분야에서 활용될 수 있으며, 가장 근본적인 연산들(비교 및 사칙 연산)을 구축함으로써 이를 활용하여 수학적 또는 통계적인 분야에서 다방면으로 활용될 수 있다.
도 1은 종래 기술에 따른 동형암호가 사용되는 메커니즘을 도시한 것이다.
도 2는 본 발명의 일 실시예에 따른 암호화된 데이터의 연산 장치의 구성을 도시한 것이다.
도 3은 본 발명의 일 실시예에 따른 동형암호화된 데이터를 사용하는 과정을 도시한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 암호화된 데이터의 실수 표현 기술을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 덧셈 로직의 구성을 도시한 논리 회로도이다.
도 6은 본 발명의 일 실시예에 따른 뺄셈 로직의 구성을 도시한 논리 회로도이다.
도 7은 본 발명에서 사용하는 이진 곱셈 과정을 도시한 것이다.
도 8은 본 발명의 일 실시예에 따른 곱셈 로직의 구성을 도시한 블록도이다.
도 9는 본 발명에서 사용하는 이진 나눗셈 과정을 도시한 것이다.
도 10은 본 발명의 일 실시예에 따른 나눗셈 로직의 구성을 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 암호화된 데이터의 연산 장치의 구성을 도시한 것이다.
도 3은 본 발명의 일 실시예에 따른 동형암호화된 데이터를 사용하는 과정을 도시한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 암호화된 데이터의 실수 표현 기술을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 덧셈 로직의 구성을 도시한 논리 회로도이다.
도 6은 본 발명의 일 실시예에 따른 뺄셈 로직의 구성을 도시한 논리 회로도이다.
도 7은 본 발명에서 사용하는 이진 곱셈 과정을 도시한 것이다.
도 8은 본 발명의 일 실시예에 따른 곱셈 로직의 구성을 도시한 블록도이다.
도 9는 본 발명에서 사용하는 이진 나눗셈 과정을 도시한 것이다.
도 10은 본 발명의 일 실시예에 따른 나눗셈 로직의 구성을 도시한 블록도이다.
아래에서는 첨부한 도면을 참조하여, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고, 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하에서는, 첨부된 도면을 참조하여 완전동형암호 기법으로 암호화된 데이터의 연산 장치 및 방법에 대하여 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 암호화된 데이터의 연산 장치의 구성을 도시한 것이다.
연산장치(100)는 메모리(110), 프로세서(120), 통신모듈(130) 및 데이터베이스(140)를 포함한다. 연산장치(100)는 하나 이상의 사용자 단말(200)로부터 수신되는 각종 암호화된 데이터를 수신하며, 암호화된 데이터에 대하여 각종 연산 처리를 수행한다.
메모리(110)는 동형암호 데이터에 대하여 각종 연산 처리를 수행하는 연산 프로그램이 저장된다.
이때, 연산 프로그램은 연산 프로그램은 제 1 동형암호 데이터와 제 2 동형암호 데이터를 비트별로 연산하는 XOR연산 로직, XNOR연산 로직, AND연산 로직 및 OR 연산 로직을 각각 포함한다. 또한, 연산 프로그램은 동형암호 데이터에 대한 보수를 반환하는 보수 연산 로직, 동형암호 데이터에 대한 절댓값을 반환하는 절댓값 연산 로직, 동형암호 데이터를 오른쪽으로 이동시킨 결괏값을 반환하는 오른쪽 이동 연산 로직, 동형암호 데이터를 왼쪽으로 이동시킨 결괏값을 반환하는 왼쪽 이동 연산 로직 및 입력된 복수의 동형암호 데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함한다.
또한, 연산 프로그램은 제 1 대소 비교 연산 로직, 제 2 대소 비교 연산 로직, 덧셈 로직, 뺄셈 로직, 절댓값 로직, 곱셈 로직, 나눗셈 로직, 지수함수 로직을 포함한다. 각각의 연산 로직의 구체적인 구성에 대해서는 추후 설명하기로 한다.
또한, 연산 프로그램은 시그모이드 함수 연산을 수행하는 시그모이드 함수 로직을 포함하며, 이를 기반으로 로지스틱 회귀분석을 수행하는 회귀분석 로직을 포함한다.
또한, 메모리(110)는 프로세서(120)가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행한다. 여기서, 메모리(110)는 휘발성 저장 매체(volatile storage media) 또는 비휘발성 저장 매체(non-volatile storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 메모리(110)는 프로세서(120)의 처리 및 제어를 위한 운영체제 등 별도의 프로그램이 저장될 수도 있고, 입력되거나 출력되는 데이터들의 임시 저장을 위한 기능을 수행할 수도 있다.
프로세서(120)는 메모리(110)에 저장된 연산 프로그램을 실행하여, 동형암호 기법으로 암호화된 데이터에 대하여 각종 연산 처리를 수행한다.
여기서, 프로세서(120)는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
통신모듈(130)은 통신망과 연동하여 사용자 단말(200)로 송수신되는 동형암호화된 데이터를 처리하는 데 필요한 통신 인터페이스를 제공한다. 여기서, 통신 모듈(130)은 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호와 같은 신호를 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함하는 장치일 수 있다.
데이터베이스(140)는 암호화된 데이터와 이를 기반으로 생성된 연산 결과들을 저장한다. 이와 같은 연산 결과들은 서버에서 제공하는 각종 응용 서비스에 활용될 수 있다.
도 3은 본 발명의 일 실시예에 따른 동형암호화된 데이터를 사용하는 과정을 도시한 개념도이다.
도시된 바와 같이, 사용자 단말에서 전송되는 데이터는 동형암호화 처리된 후 클라우드 서버등에서 수신한다. 본 발명에 다른 연산 장치(100)는 이를 복호화하지 않은 상태에서 본 발명이 제공하는 각종 연산을 처리하고, 이에 기반한 결괏값이 복호화되어 사용자 단말에 제공된다.
본 발명에서 사용되는 기호는 다음과 같이 정의된다.
배열(벡터)은 알파벳 기호 , 은 배열의 길이(length)로 나타내며, 각각의 인덱스에 해당하는 요소들은 로 는 부터 사이의 값을 갖는다. 또한, 'Enc'는 암호화를 의미하고 'Dec'는 복호화를 의미한다.
'bitwise'는 특정 연산을 각 배열의 요소들 모두에게 각각 적용하는 것을 의미하고, 'sc'는 배열(벡터)을 스칼라값으로 바꾸는 것을 의미한다.
'boots'는 동형암호 게이트들과 일반 게이트들과의 차이를 나타내기 위해 표시한다. 일반적으로 완전동형암호 게이트는 연산 이후 노이즈를 제거하기 위한 부트스트래핑(bootstrapping)이 필요하다. 예컨대, boots.XOR 가 의미하는 것은 두 입력 암호비트 에 대해서 XOR 연산을 수행하고, 연산 도중 발생하는 노이즈가 부트스트래핑에 의해 감소되어 반환되는 암호비트 값을 배열의 0번째 요소에 저장하는 것을 의미한다.
본 발명서에서 등장하는 동형암호 함수들 중 기초적인 것들을 언급하면 다음과 같다. 먼저, HE.TwosComplement( ) 함수는 동형암호 2의 보수 연산으로 입력값 에 대해 2의 보수를 취한 값을 반환하는 알고리즘이다. 다음으로, HE.AbsoluteValue( ) 연산은 암호문 를 받아 이에 대해 절댓값을 결괏값으로 반환하는 함수이다. 다음으로, HE.RightShift( , )는 입력 암호문 에 대해서 오른쪽으로 만큼 이동연산을 수행한 결괏값을 반환해주는 함수이다. 또한, HE.LeftShift( , )는 왼쪽으로 만큼 이동연산을 수행한 결괏값을 반환해주는 함수이다.
도 4은 본 발명의 일 실시예에 따른 암호화된 데이터의 실수 표현 기술을 설명하기 위한 도면이다.
본 발명에서는 비트 단위 기반 동형암호 스키마를 사용하여, 실수 유효 숫자 범위를 도 4와 같이 정하고 이를 통해 암호화된 실수 데이터를 표현한다.
먼저 암호문 배열의 인덱스를 일반적인 표현과 반대로 설정한다. 즉, 맨 오른쪽이 최상위 비트가 되게 한다. 일반적으로 입력한 비트의 길이를 , 암호문의 배열을 , 번째 배열의 성분을 라고 두면, 인덱스 부터 까지의 ( )만큼을 실수 데이터의 소수 부분으로 두고, 인덱스 부터 까지 만큼을 실수 데이터의 정수 부분으로 둔다. 마지막, 최상위 비트, 번째 비트를 부호 비트로 두고 실수를 표현한다.
먼저, 본 발명의 일 실시예에 따른 대소 비교 로직을 살펴보기로 한다.
본 발명의 연산 프로그램은 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터 중 먼저 입력한 값이 큰 값이면 ‘1’ 비트를 암호화한 제 1 암호화 값(Enc(1))을 출력하는 제 1 대소 비교 연산 로직과 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터 중 먼저 입력한 값이 작은 값이면 상기 제 1 암호화 값을 출력하는 제 2 대소 비교 연산 로직을 포함한다.
제 1 대소 비교 연산 로직(HE.CompareLarge(a.b))은 아래에 도시된 바와 같이, 입력된 제 1 동형암호 데이터()와 제 2 동형암호 데이터()를 XNOR 연산 로직에 입력하여 제 1 출력값(t2)을 구하고, MUX 연산 로직을 통해 제 1 출력값(t2)에 따라 ‘0’ 비트를 암호화한 제 2 암호화 값(t1, Enc(0)) 또는 제 1 동형암호 데이터를 출력하는 동작을 수행한다.
이때, MUX 연산 게이트는 평문에서의 MUX 게이트와 같은 역할을 수행하는 것으로, a의 값에 따라 b또는 c를 출력한다.
이러한 구성에 따라, 제 1 대소 비교 연산 로직은 제 1 동형암호 데이터()가 제 2 동형암호 데이터() 보다 크면 Enc(1)을 출력하고, 반대의 경우에는 Enc(0)을 출력한다.
또한, 제 2 대소 비교 연산 로직(HE.CompareSmall(a.b))은 입력된 제 1 동형암호 데이터()와 제 2 동형암호 데이터()를 XNOR 연산 로직에 입력하여 제 1 출력값(t2)을 구하고, MUX 연산 로직을 통해 제 1 출력값(t2)에 따라 ‘0’ 비트를 암호화한 제 2 암호화 값(t1, Enc(0)) 또는 제 2 동형암호 데이터()를 출력하는 동작을 수행한다.
이러한 구성에 따라, 제 2 대소 비교 연산 로직은 제 1 동형암호 데이터()가 제 2 동형암호 데이터() 보다 작으면 Enc(1)을 출력하고, 반대의 경우에는 Enc(0)을 출력한다.
다음으로, 본 발명의 일 실시예에 따른 덧셈 로직을 살펴보기로 한다.
도 5는 본 발명의 일 실시예에 따른 덧셈 로직의 구성을 도시한 논리 회로도이다.
연산 프로그램은 제 1 동형암호 데이터와 제 2 동형암호 데이터를 암호화된 상태에서 덧셈하는 덧셈 로직을 포함할 수 있다.
덧셈 로직은 제 1 동형암호 데이터()와 제 2 동형암호 데이터()가 입력되어 제 1 출력값(t1)을 출력하는 제1 XOR 연산 로직(510, 3번째 줄), 제 1 출력값(t1)과 제 1 캐리 값()이 입력되어 결괏값()을 출력하는 제 2 XOR 연산 로직(512, 4번째 줄), 제 1 출력값(t1)과 제 1 캐리 값()이 입력되어 제 2 출력값(t2)을 출력하는 제1 AND 연산 로직(514, 5번째 줄), 제 1 동형암호 데이터()와 제 2 동형암호 데이터()가 입력되어 제 3 출력값(t3)을 출력하는 제2 AND 연산 로직(516, 6번째 줄) 및 제 2 출력값(t2)과 제 3 출력값(t3)이 입력되어 제 2 캐리값()을 출력하는 OR 연산 로직(518, 7번째 줄)을 포함한다.
각각의 연산 로직에 대한 알고리즘은 아래와 같이 표현할 수 있다.
최하위 비트부터 순차적으로 덧셈 알고리즘이 수행되며, 각 루프에서 ai, bi, ci 값이 각각 입력되고, 결괏값(ri)과 다음 루프에 사용되는 캐리 값(ci+1)이 반환된다. 마지막 루프에서는 캐리 값을 산출할 필요가 없으므로, 9~10번째 줄에 기재된 바와 같이, 결괏값을 출력하는 XOR 연산 로직 게이트만 사용한다.
한편, boots.AND, boots.OR, boots.XOR 게이트 들은 두 입력값에 대해서 연산 도중 발생한 잡음을 감소시키는 부트스트래핑 과정을 포함하는 것들이다.
다음으로, 본 발명의 일 실시예에 따른 뺄셈 로직을 살펴보기로 한다.
도 6은 본 발명의 일 실시예에 따른 뺄셈 로직의 구성을 도시한 논리 회로도이다.
연산 프로그램은 제 1 동형암호 데이터와 제 2 동형암호 데이터를 암호화된 상태에서 뺄셈하는 뺄셈 로직을 포함할 수 있다.
뺄셈 로직은 제 1 동형암호 데이터()와 제 2 동형암호 데이터()가 입력되어 제 1 출력값(t1)을 출력하는 제1 XOR 연산 로직(610, 3번째 줄), 제 1 출력값(t1)과 제 1 캐리 값()이 입력되어 결괏값()을 출력하는 제 2 XOR 연산 로직(614, 4번째 줄), 제 1 동형암호 데이터를 반전시킨 값과 제 2 동형 암호 데이터가 입력되어 제 2 출력값(t2)을 출력하는 제1 AND 연산 로직(612, 6번째 줄), 제 1 출력값(t1)을 반전시킨 값과 제 1 캐리 값이 입력되어 제 3 출력값(t3)을 출력하는 제 2 AND 연산 로직(616, 8번째 줄), 제 2 출력값과 제 3 출력값이 입력되어 제 2 캐리값()을 출력하는 OR 연산 로직(618, 9번째 줄)을 포함한다.
최하위 비트부터 순차적으로 뺄셈 알고리즘이 수행되며, 각 루프에서 ai, bi, ci 값이 각각 입력되고, 결괏값(ri)과 다음 루프에 사용되는 캐리 값(ci+1)이 반환된다. 마지막 루프에서는 캐리 값을 산출할 필요가 없으므로, 11~12번째 줄에 기재된 바와 같이, 결괏값을 출력하는 XOR 연산 로직 게이트만 사용한다.
다음으로, 본 발명의 일 실시예에 따른 절댓값 로직을 살펴보기로 한다.
연산 프로그램은 입력된 동형암호 데이터가 암호화된 상태에서 절댓값을 산출하는 절댓값 로직을 포함할 수 있다.
절댓값 로직은 입력된 동형 암호데이터의 최상위 비트의 암호문에 따라 입력된 동형암호데이터에 대한 2의 보수(t) 및 입력된 동형 암호데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함하며, 구체적인 알고리즘 구성은 아래와 같다.
다음으로, 본 발명의 일 실시예에 따른 곱셈 로직을 살펴보기로 한다.
도 7은 본 발명에서 사용하는 이진 곱셈 과정을 도시한 것이고, 도 8은 본 발명의 일 실시예에 따른 곱셈 로직의 구성을 도시한 블록도이다.
도 7에 도시된 바와 같이, 위 숫자 7(=0111(2))과 아래 숫자 5(0101(2))의 곱 결과로 35(=100011(2)) 가 출력됨을 확인할 수 있다. 위의 이진 숫자가 아래의 이진 숫자의 한 비트마다 곱해지면서 나오는 결과들(r1, r2, r3)합이 최종 결과가 된다.
본 발명에서는 이와 같은 이진 곱셈 방식과 곱셈을 하는 두 입력값의 부호를 고려하는 과정, 한정된 비트 수만을 추출해서 결괏값으로 반환하는 과정을 추가한다.
연산 프로그램은 제 1 동형암호 데이터와 제 2 동형암호 데이터를 암호화된 상태에서 곱셈하는 곱셈 로직을 포함할 수 있다.
곱셈 로직은 제 1 동형 암호 데이터의 부호 비트(sign(a))와 상기 제 2 동형 암호 데이터의 부호 비트(sign(b))가 입력되어 제 1 부호 비트(s1)를 출력하는 XOR 연산 로직(820, 1번째 줄), 제 1 부호 비트를 반전 시켜 제 2 부호 비트(s2)를 출력하는 NOT 연산 로직(2번째 줄), 제 1 동형 암호 데이터의 절댓값을 구하는 제 1 절댓값 로직(810, 3번째 줄), 제 2 동형 암호 데이터의 절댓값을 구하는 제 2 절댓값 로직(820, 4번째 줄), 제 1 절댓값 로직의 출력에 대하여 제 2 절댓값 로직의 출력을 비트별로 곱셈하는 절댓값 이진 곱셈 로직(814, 5~10 번째 줄), 절댓값 이진 곱셈 로직의 출력에 대하여 2의 보수를 구하는 보수 출력 로직(816, 11번째 줄), 절댓값 이진 곱셈 로직의 출력에 대하여 제 2 부호 비트를 비트별로 곱하여 제 1 결괏값을 출력하는 제 1 AND 연산 로직(12번째 줄), 상기 보수 출력 로직의 출력에 대하여 상기 제 1 부호 비트를 비트별로 곱하여 제 2 결괏값을 출력하는 제 2 AND 연산 로직(13번째 줄), 제 1 결괏값과 제 2 결괏값이 입력되어 최종 결괏값을 출력하는 덧셈 로직(14번째 줄)을 포함한다.
위에서, 1, 2, 11,12, 13, 14 번째 줄의 알고리즘은 암호 데이터의 부호를 모르기 때문에 이를 처리하기 위한 과정을 나타낸다. 이를 위해, 두 암호문 , 의 부호 비트 번째 비트들 간에 boots.XOR 연산을 수행한다. 두 입력값이 같은 부호라면, boots.XOR 결과로 Enc(0) 이 출력되고, 반대부호라면 Enc(1)이 출력된다. 이를 활용하여, 두 부호가 만약 같은 부호라면 Enc(0)이 출력되므로, boot.NOT을 취하게 되면 Enc(1)이 되고(2번째 줄), 이에 대해 양의 곱셉 결과 과정(3, 4, 6~10 번째 줄)에 의해 에 대해 비트마다 boot.AND를 적용해주면(12번째 줄), 양의 곱셈 결과가 출력된다.
마찬가지로, 부호가 반대일 경우는 각 부호 비트의 boots.XOR 결과가 Enc(1)이 된다(1번째 줄). 양의 곱셈 결과값(9번째 줄)에 반대 부호를 취해 나온 결괏값(11 번째 줄), 즉, 음의 값에 대해 비트마다 boot.AND 를 적용해주게 되면 음의 결과값이 나오게 된다(13번째 줄). 이 두 가지 결과에 대해서 더해주면(14번째 줄) 최종적으로 부호를 고려한 암호문 간 곱셈이 된다.
다음으로, 본 발명의 일 실시예에 따른 나눗셈 로직을 살펴보기로 한다.
도 9는 본 발명에서 사용하는 이진 나눗셈 과정을 도시한 것이고, 도 10은 본 발명의 일 실시예에 따른 나눗셈 로직의 구성을 도시한 블록도이다.
먼저, Q와 M을 각각 배열의 길이가 l인 피제수와 제수, 즉 Q를 M으로 나눈다고 가정하자. 또한, A라는 길이가 l이고 모든 요소가 0인 벡터를 만든다. l이 0이 될 때까지 다음을 반복한다.
다음으로 두 배열, Q와 A를 합치고(Q|A), 1비트 오른쪽으로 이동연산을 진행한다.
다음으로 길이가 2l인 Q|A에서 왼쪽 l비트를 Q라 하고, 오른쪽 l비트만큼을 A라 저장한다.
다음으로 A를 M과 대소비교를 하여, A가 M보다 작으면 Q[0]에 0을, 반대의 경우는 1을 저장하고 A 배열에 A-M의 값을 저장한다.
다음으로 l의 값을 1만큼 빼준다.
마지막으로, Q에 저장된 값이 Q를 M으로 나눈 몫이고 이를 반환한다.
연산 프로그램은 피제수(Q)인 제 1 동형암호 데이터로 제수(M)인 제 2 동형암호 데이터를 암호화된 상태에서 나눗셈하는 나눗셈 로직을 포함할 수 있다.
나눗셈 로직은 제 1 동형 암호 데이터의 부호 비트와 제 2 동형 암호 데이터의 부호 비트가 입력되어 제 1 부호 비트를 출력하는 XOR 연산 로직(1020, 1번째 줄), 제 1 동형 암호 데이터의 절댓값을 구하는 제 1 절댓값 로직(1010, 2번째 줄), 제 2 동형 암호 데이터의 절댓값을 구하는 제 2 절댓값 로직(1012, 3번째 줄), 제 1 절댓값 로직의 출력을 제 2 절댓값 로직의 출력으로 비트별로 나눗셈하는 절댓값 이진 나눗셈 로직(1014, 4~16번째줄), 절댓값 이진 나눗셈 로직(1014)의 출력에 대하여 2의 보수를 구하는 보수 출력 로직(1016, 17번째 줄), 절댓값 이진 나눗셈 로직의 출력(1016)에 대하여 제 1 부호 비트를 반전시킨 제 2 부호 비트를 비트별로 곱하여 제 1 결괏값(qL)을 출력하는 제 1 AND 연산 로직(18번째 줄), 보수 출력 로직의 출력(1016)에 대하여 제 1 부호 비트를 비트별로 곱하여 제 2 결괏값(qR)을 출력하는 제 2 AND 연산 로직(19번째 줄), 제 1 결괏값과 제 2 결괏값이 입력되어 최종 결괏값을 출력하는 덧셈 로직(20번째 줄)을 포함한다.
동형 암호 내에서암호문은 값을 알 수 없어서 평문에서처럼 단순 비교 또는 if 가정을 진행할 수 없다.
우선, 도 9에서 A와 M을 비교하는 단순 비교 과정은 위에서 언급한 동형암호 대소비교 함수를 통해 해결할 수 있다(위 알고리즘의 9번째 줄).
또한, 도 9에서 두 번째 if 가정은 HE.CompareSmall( )의 값의 반환이 Enc(0) 또는 Enc(1)인 것에 착안하여, 이면 Enc(1)이고, 이 값에 boots.NOT을 취한 값(d)은 Q[0] 값이 된다. 마찬가지로, 이면 HE.CompareSmall( )의 값은 Enc(0) 이고, Q[0]값이 된다.
인 상황에서 Enc(0) 에 boots.NOT을 취한 값, 즉 Enc(1)과 을 비트별로 boots.AND 연산을 적용하면, 값이 나오게 되고, 반대의 상황( )에서는 Enc(1)이므로 boots.NOT을 취한 값, Enc(0)과 을 비트별로 boots.AND 연산을 적용하면 Enc(0)이 나오게 된다.
또한, 암호문에서는 평문에서와 달리 부호를 알 수 없어 추가적인 연산을 진행해주어야 한다. 1번째 줄에서 제수( )와 피제수( )의 부호비트 간에 boots.XOR 연산을 해주어 같은 부호면 Enc(0), 반대 부호면 Enc(1)을 에 저장한다. 2, 3번째 줄에서는 제수와 피제수 모두 양으로 전환하여, 양의 값을 갖는 상황에서 나눗셈을 쭉 진행하여, 값을 얻는다. 이 값에 대해 2의 보수를 취해주어 값을 저장하고, 앞서 말한것처럼 두 입력값의 부호가 같은 경우 = Enc(0) 이기 때문에, 이를 boots.NOT 취한 Enc(1)와 의 비트단위 별로 boots.AND를 취해 을 얻는다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 연산 장치
110: 메모리
120: 프로세서
130: 통신모듈
140: DB
200: 사용자 단말
110: 메모리
120: 프로세서
130: 통신모듈
140: DB
200: 사용자 단말
Claims (12)
- 완전동형암호기법으로 암호화된 데이터의 연산 장치에 있어서,
암호화된 데이터를 송수신하는 통신 모듈;
연산 프로그램이 저장된 메모리; 및
상기 연산 프로그램을 실행하는 프로세서를 포함하되,
상기 연산 프로그램은 제 1 동형암호 데이터와 제 2 동형암호 데이터를 비트별로 연산하는 XOR연산 로직, XNOR연산 로직, AND연산 로직 및 OR 연산 로직을 각각 포함하고, 동형암호 데이터에 대한 보수를 반환하는 보수 연산 로직, 동형암호 데이터에 대한 절댓값을 반환하는 절댓값 연산 로직, 동형암호 데이터를 오른쪽으로 이동시킨 결괏값을 반환하는 오른쪽 이동 연산 로직, 동형암호 데이터를 왼쪽으로 이동시킨 결괏값을 반환하는 왼쪽 이동 연산 로직 및 입력된 복수의 동형암호 데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함하고,
입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터 중 먼저 입력한 값이 큰 값이면 '1' 비트를 암호화한 제 1 암호화 값을 출력하는 제 1 대소 비교 연산 로직과 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터 중 먼저 입력한 값이 작은 값이면 상기 제 1 암호화 값을 출력하는 제 2 대소 비교 연산 로직을 포함하되,
상기 제 1 대소 비교 연산 로직은 상기 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 상기 XNOR 연산 로직에 입력하여 제 1 출력값을 구하고, MUX 연산 로직을 통해 상기 제 1 출력값에 따라 '0' 비트를 암호화한 제 2 암호화 값 또는 제 1 동형암호 데이터를 출력하고,
상기 제 2 대소 비교 연산 로직은 상기 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 상기 XNOR 연산 로직에 입력하여 제 1 출력값을 구하고, MUX 연산 로직을 통해 상기 제 1 출력값에 따라 '0' 비트를 암호화한 제 2 암호화 값 또는 상기 제 2 동형암호 데이터를 출력하고, 완전동형암호기법으로 암호화된 데이터의 연산 장치. - 제1항에 있어서,
상기 연산 프로그램은 상기 제 1 동형암호 데이터와 제 2 동형암호 데이터를 암호화된 상태에서 덧셈하는 덧셈 로직을 더 포함하되,
상기 덧셈 로직은
상기 제 1 동형암호 데이터와 제 2 동형암호 데이터가 입력되어 제 1 출력값을 출력하는 제1 XOR 연산 로직, 상기 제 1 출력값과 제 1 캐리 값이 입력되어 결과값을 출력하는 제 2 XOR 연산 로직, 상기 제 1 출력값과 상기 제 1 캐리 값이 입력되어 제 2 출력값을 출력하는 제1 AND 연산 로직, 상기 제 1 동형암호 데이터와 제 2 동형암호 데이터가 입력되어 제 3 출력값을 출력하는 제2 AND 연산 로직 및 상기 제 2 출력값과 제 3 출력값이 입력되어 제 2 캐리값을 출력하는 OR 연산 로직을 포함하는, 완전동형암호기법으로 암호화된 데이터의 연산 장치. - 제2항에 있어서,
상기 연산 프로그램은 상기 제 1 동형암호 데이터와 제 2 동형암호 데이터를 암호화된 상태에서 뺄셈하는 뺄셈 로직을 더 포함하되,
상기 뺄셈 로직은
상기 제 1 동형암호 데이터와 제 2 동형암호 데이터가 입력되어 제 1 출력값을 출력하는 제1 XOR 연산 로직, 상기 제 1 출력값과 제 1 캐리 값이 입력되어 결과값을 출력하는 제 2 XOR 연산 로직, 상기 제 1 동형암호 데이터를 반전시킨 값과 제 2 동형 암호 데이터가 입력되어 제 2 출력값을 출력하는 제1 AND 연산 로직, 상기 제 1 출력값을 반전시킨 값과 제 1 캐리 값이 입력되어 제 3 출력값을 출력하는 제 2 AND 연산 로직, 상기 제 2 출력값과 제 3 출력값이 입력되어 제 2 캐리값을 출력하는 OR 연산 로직을 포함하는, 완전동형암호기법으로 암호화된 데이터의 연산 장치. - 제3항에 있어서,
상기 연산 프로그램은 입력된 동형암호 데이터가 암호화된 상태에서 절댓값을 산출하는 절댓값 로직을 더 포함하되,
상기 절댓값 로직은 입력된 동형 암호데이터의 최상위 비트의 암호문에 따라 입력된 동형암호데이터에 대한 2의 보수 및 입력된 동형 암호데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함하는, 완전동형암호기법으로 암호화된 데이터의 연산 장치. - 제4항에 있어서,
상기 연산 프로그램은 상기 제 1 동형암호 데이터와 제 2 동형암호 데이터를 암호화된 상태에서 곱셈하는 곱셈 로직을 더 포함하되,
상기 곱셈 로직은
상기 제 1 동형 암호 데이터의 부호 비트와 상기 제 2 동형 암호 데이터의 부호 비트가 입력되어 제 1 부호 비트를 출력하는 XOR 연산 로직, 상기 제 1 부호 비트를 반전 시켜 제 2 부호 비트를 출력하는 NOT 연산 로직, 상기 제 1 동형 암호 데이터의 절댓값을 구하는 제 1 절댓값 로직, 상기 제 2 동형 암호 데이터의 절댓값을 구하는 제 2 절댓값 로직, 상기 제 1 절댓값 로직의 출력에 대하여 제 2 절댓값 로직의 출력을 비트별로 곱셈하는 절댓값 이진 곱셈 로직, 상기 절댓값 이진 곱셈 로직의 출력에 대하여 2의 보수를 구하는 보수 출력 로직, 상기 절댓값 이진 곱셈 로직의 출력에 대하여 상기 제 2 부호 비트를 비트별로 곱하여 제 1 결괏값을 출력하는 제 1 AND 연산 로직, 상기 보수 출력 로직의 출력에 대하여 상기 제 1 부호 비트를 비트별로 곱하여 제 2 결괏값을 출력하는 제 2 AND 연산 로직, 상기 제 1 결괏값과 제 2 결괏값이 입력되어 최종 결괏값을 출력하는 상기 덧셈 로직을 포함하는, 완전동형암호기법으로 암호화된 데이터의 연산 장치. - 제5항에 있어서,
상기 연산 프로그램은 피제수(Q)인 제 1 동형암호 데이터로 제수(M)인 제 2 동형암호 데이터를 암호화된 상태에서 나눗셈하는 나눗셈 로직을 더 포함하되,
상기 나눗셈 로직은
상기 제 1 동형 암호 데이터의 부호 비트와 상기 제 2 동형 암호 데이터의 부호 비트가 입력되어 제 1 부호 비트를 출력하는 XOR 연산 로직, 상기 제 1 동형 암호 데이터의 절댓값을 구하는 제 1 절댓값 로직, 상기 제 2 동형 암호 데이터의 절댓값을 구하는 제 2 절댓값 로직, 상기 제 1 절댓값 로직의 출력을 제 2 절댓값 로직의 출력으로 비트별로 나눗셈하는 절댓값 이진 나눗셈 로직, 상기 절댓값 이진 나눗셈 로직의 출력에 대하여 2의 보수를 구하는 보수 출력 로직, 상기 절댓값 이진 나눗셈 로직의 출력에 대하여 상기 제 1 부호 비트를 반전시킨 제 2 부호 비트를 비트별로 곱하여 제 1 결괏값을 출력하는 제 1 AND 연산 로직, 상기 보수 출력 로직의 출력에 대하여 상기 제 1 부호 비트를 비트별로 곱하여 제 2 결괏값을 출력하는 제 2 AND 연산 로직, 상기 제 1 결괏값과 제 2 결괏값이 입력되어 최종 결괏값을 출력하는 상기 덧셈 로직을 포함하되, 완전동형암호기법으로 암호화된 데이터의 연산 장치. - 완전동형암호기법으로 암호화된 데이터의 연산 장치를 이용한 암호화된 데이터의 연산 방법에 있어서,
상기 암호화된 데이터의 연산 장치는 제 1 동형암호 데이터와 제 2 동형암호 데이터를 비트별로 연산하는 XOR연산 로직, XNOR연산 로직, AND연산 로직 및 OR 연산 로직을 각각 포함하고, 동형암호 데이터에 대한 보수를 반환하는 보수 연산 로직, 동형암호 데이터에 대한 절댓값을 반환하는 절댓값 연산 로직, 동형암호 데이터를 오른쪽으로 이동시킨 결괏값을 반환하는 오른쪽 이동 연산 로직, 동형암호 데이터를 왼쪽으로 이동시킨 결괏값을 반환하는 왼쪽 이동 연산 로직 및 입력된 복수의 동형암호 데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함하는 연산 프로그램이 설치된 것이고,
입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 제 1 대소 비교 연산 로직에 입력하여 대소 비교를 수행하는 단계 및
입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 제 2 대소 비교 연산 로직에 입력하여 대소 비교를 수행하는 단계를 포함하되,
상기 제 1 대소 비교 연산 로직은 먼저 입력한 값이 큰 값이면 '1' 비트를 암호화한 제 1 암호화 값을 출력하는 것이고, 상기 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 상기 XNOR 연산 로직에 입력하여 제 1 출력값을 구하고, MUX 연산 로직을 통해 상기 제 1 출력값에 따라 '0' 비트를 암호화한 제 2 암호화 값 또는 제 1 동형암호 데이터를 출력하는 것이고,
상기 제 2 대소 비교 연산 로직은 먼저 입력한 값이 작은 값이면 상기 제 1 암호화 값을 출력하는 것이고, 상기 입력된 제 1 동형암호 데이터와 제 2 동형암호 데이터를 상기 XNOR 연산 로직에 입력하여 제 1 출력값을 구하고, MUX 연산 로직을 통해 상기 제 1 출력값에 따라 '0' 비트를 암호화한 제 2 암호화 값 또는 상기 제 2 동형암호 데이터를 출력하는 것인, 암호화된 데이터의 연산 방법. - 제7항에 있어서,
상기 제 1 동형암호 데이터와 제 2 동형암호 데이터를 덧셈로직에 입력하여 암호화된 상태에서 덧셈하는 단계를 더 포함하되,
상기 덧셈 로직은
상기 제 1 동형암호 데이터와 제 2 동형암호 데이터가 입력되어 제 1 출력값을 출력하는 제1 XOR 연산 로직, 상기 제 1 출력값과 제 1 캐리 값이 입력되어 결과값을 출력하는 제 2 XOR 연산 로직, 상기 제 1 출력값과 상기 제 1 캐리 값이 입력되어 제 2 출력값을 출력하는 제1 AND 연산 로직, 상기 제 1 동형암호 데이터와 제 2 동형암호 데이터가 입력되어 제 3 출력값을 출력하는 제2 AND 연산 로직 및 상기 제 2 출력값과 제 3 출력값이 입력되어 제 2 캐리값을 출력하는 OR 연산 로직을 포함하는 것인, 완전동형암호기법으로 암호화된 데이터의 연산 방법. - 제8항에 있어서,
상기 제 1 동형암호 데이터와 제 2 동형암호 데이터를 뺄셈로직에 입력하여 암호화된 상태에서 뺄셈하는 단계를 더 포함하되,
상기 뺄셈 로직은
상기 제 1 동형암호 데이터와 제 2 동형암호 데이터가 입력되어 제 1 출력값을 출력하는 제1 XOR 연산 로직, 상기 제 1 출력값과 제 1 캐리 값이 입력되어 결과값을 출력하는 제 2 XOR 연산 로직, 상기 제 1 동형암호 데이터를 반전시킨 값과 제 2 동형 암호 데이터가 입력되어 제 2 출력값을 출력하는 제1 AND 연산 로직, 상기 제 1 출력값을 반전시킨 값과 제 1 캐리 값이 입력되어 제 3 출력값을 출력하는 제 2 AND 연산 로직, 상기 제 2 출력값과 제 3 출력값이 입력되어 제 2 캐리값을 출력하는 OR 연산 로직을 포함하는, 완전동형암호기법으로 암호화된 데이터의 연산 방법. - 제9항에 있어서,
입력된 동형암호 데이터를 절댓값 로직에 입력하여 암호화된 상태에서 절댓값을 산출하는 단계를 더 포함하되,
상기 절댓값 로직은 입력된 동형 암호데이터의 최상위 비트의 암호문에 따라 입력된 동형암호데이터에 대한 2의 보수 및 입력된 동형 암호데이터 중 어느 하나를 출력하는 MUX연산 로직을 포함하는, 완전동형암호기법으로 암호화된 데이터의 연산 방법. - 제10항에 있어서,
상기 제 1 동형암호 데이터와 제 2 동형암호 데이터를 곱셈로직에 입력하여 암호화된 상태에서 곱셈하는 단계를 더 포함하되,
상기 곱셈 로직은
상기 제 1 동형 암호 데이터의 부호 비트와 상기 제 2 동형 암호 데이터의 부호 비트가 입력되어 제 1 부호 비트를 출력하는 XOR 연산 로직, 상기 제 1 부호 비트를 반전 시켜 제 2 부호 비트를 출력하는 NOT 연산 로직, 상기 제 1 동형 암호 데이터의 절댓값을 구하는 제 1 절댓값 로직, 상기 제 2 동형 암호 데이터의 절댓값을 구하는 제 2 절댓값 로직, 상기 제 1 절댓값 로직의 출력에 대하여 제 2 절댓값 로직의 출력을 비트별로 곱셈하는 절댓값 이진 곱셈 로직, 상기 절댓값 이진 곱셈 로직의 출력에 대하여 2의 보수를 구하는 보수 출력 로직, 상기 절댓값 이진 곱셈 로직의 출력에 대하여 상기 제 2 부호 비트를 비트별로 곱하여 제 1 결괏값을 출력하는 제 1 AND 연산 로직, 상기 보수 출력 로직의 출력에 대하여 상기 제 1 부호 비트를 비트별로 곱하여 제 2 결괏값을 출력하는 제 2 AND 연산 로직, 상기 제 1 결괏값과 제 2 결괏값이 입력되어 최종 결괏값을 출력하는 상기 덧셈 로직을 포함하는, 완전동형암호기법으로 암호화된 데이터의 연산 방법. - 제11항에 있어서,
나눗셈 로직을 이용하여 피제수(Q)인 제 1 동형암호 데이터로 제수(M)인 제 2 동형암호 데이터를 암호화된 상태에서 나눗셈하는 단계를 더 포함하되,
상기 나눗셈 로직은
상기 제 1 동형 암호 데이터의 부호 비트와 상기 제 2 동형 암호 데이터의 부호 비트가 입력되어 제 1 부호 비트를 출력하는 XOR 연산 로직, 상기 제 1 동형 암호 데이터의 절댓값을 구하는 제 1 절댓값 로직, 상기 제 2 동형 암호 데이터의 절댓값을 구하는 제 2 절댓값 로직, 상기 제 1 절댓값 로직의 출력을 제 2 절댓값 로직의 출력으로 비트별로 나눗셈하는 절댓값 이진 나눗셈 로직, 상기 절댓값 이진 나눗셈 로직의 출력에 대하여 2의 보수를 구하는 보수 출력 로직, 상기 절댓값 이진 나눗셈 로직의 출력에 대하여 상기 제 1 부호 비트를 반전시킨 제 2 부호 비트를 비트별로 곱하여 제 1 결괏값을 출력하는 제 1 AND 연산 로직, 상기 보수 출력 로직의 출력에 대하여 상기 제 1 부호 비트를 비트별로 곱하여 제 2 결괏값을 출력하는 제 2 AND 연산 로직, 상기 제 1 결괏값과 제 2 결괏값이 입력되어 최종 결괏값을 출력하는 상기 덧셈 로직을 포함하되, 완전동형암호기법으로 암호화된 데이터의 연산 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190156446 | 2019-11-29 | ||
KR20190156446 | 2019-11-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210067961A true KR20210067961A (ko) | 2021-06-08 |
KR102491902B1 KR102491902B1 (ko) | 2023-01-27 |
Family
ID=76399934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200164231A KR102491902B1 (ko) | 2019-11-29 | 2020-11-30 | 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102491902B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024136370A1 (ko) * | 2022-12-23 | 2024-06-27 | 주식회사 크립토랩 | 동형 암호문 처리 방법 및 전자 장치 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09116533A (ja) * | 1995-10-23 | 1997-05-02 | Toshiba Corp | 暗号システム |
US20160350648A1 (en) * | 2014-11-07 | 2016-12-01 | Microsoft Technology Licensing, Llc. | Neural networks for encrypted data |
US20170149557A1 (en) * | 2015-11-25 | 2017-05-25 | International Business Machines Corporation | Performing efficient comparison operations on encrypted data |
KR101923293B1 (ko) * | 2017-01-13 | 2018-11-28 | 서울과학기술대학교 산학협력단 | 데이터 가산 장치 및 방법 |
KR20200054119A (ko) | 2018-11-09 | 2020-05-19 | 고려대학교 산학협력단 | 동형암호 기법으로 암호화된 데이터의 지수 함수 연산 서버 및 방법 |
-
2020
- 2020-11-30 KR KR1020200164231A patent/KR102491902B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09116533A (ja) * | 1995-10-23 | 1997-05-02 | Toshiba Corp | 暗号システム |
US20160350648A1 (en) * | 2014-11-07 | 2016-12-01 | Microsoft Technology Licensing, Llc. | Neural networks for encrypted data |
US20170149557A1 (en) * | 2015-11-25 | 2017-05-25 | International Business Machines Corporation | Performing efficient comparison operations on encrypted data |
KR101923293B1 (ko) * | 2017-01-13 | 2018-11-28 | 서울과학기술대학교 산학협력단 | 데이터 가산 장치 및 방법 |
KR20200054119A (ko) | 2018-11-09 | 2020-05-19 | 고려대학교 산학협력단 | 동형암호 기법으로 암호화된 데이터의 지수 함수 연산 서버 및 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024136370A1 (ko) * | 2022-12-23 | 2024-06-27 | 주식회사 크립토랩 | 동형 암호문 처리 방법 및 전자 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR102491902B1 (ko) | 2023-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lambić | A new discrete-space chaotic map based on the multiplication of integer numbers and its application in S-box design | |
Pulido-Gaytan et al. | Privacy-preserving neural networks with homomorphic encryption: C hallenges and opportunities | |
Aboytes-González et al. | Design of a strong S-box based on a matrix approach | |
Das et al. | g-EoN: A Non-salient Approach Towards Encryption Using Gamma Function Γ (-α β)=-β α Γ (β-α β) | |
US11294633B2 (en) | Secure computation system, secure computation device, secure computation method, and program | |
Liu et al. | A new color image encryption algorithm based on DNA and spatial chaotic map | |
Jäschke et al. | Accelerating homomorphic computations on rational numbers | |
KR100800468B1 (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
Wang et al. | Inner product masking for bitslice ciphers and security order amplification for linear leakages | |
WO2022035909A1 (en) | Methods for somewhat homomorphic encryption and key updates based on geometric algebra for distributed ledger technology | |
Kumar et al. | Privacy preserving, verifiable and efficient outsourcing algorithm for matrix multiplication to a malicious cloud server | |
Kitai et al. | MOBIUS: model-oblivious binarized neural networks | |
US11522669B2 (en) | Using cryptographic blinding for efficient use of Montgomery multiplication | |
EP3483867B1 (en) | System, device, method, and program for indexing a secret-shared array with secure multiparty computations | |
KR102491902B1 (ko) | 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법 | |
Mante et al. | A symmetrical encryption technique for text encryption using randomized matrix based key generation | |
EP3891925B1 (en) | A computation device using shared shares | |
Greconici | Kyber on RISC-V | |
Liu et al. | A tolerant algebraic side-channel attack on aes using cp | |
Zajac | Upper bounds on the complexity of algebraic cryptanalysis of ciphers with a low multiplicative complexity | |
Dunkelman et al. | Full round zero-sum distinguishers on TinyJAMBU-128 and TinyJAMBU-192 Keyed-permutation in the known-key setting | |
Beighton et al. | Algebraic attacks on Grain-like keystream generators | |
Goudarzi et al. | Generalized polynomial decomposition for s-boxes with application to side-channel countermeasures | |
KR20240004830A (ko) | 완전 동형 암호화에서 사용하기 위한 블라인드 회전 | |
KR100564599B1 (ko) | 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |