KR102213819B1 - 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법 - Google Patents
동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법 Download PDFInfo
- Publication number
- KR102213819B1 KR102213819B1 KR1020190143797A KR20190143797A KR102213819B1 KR 102213819 B1 KR102213819 B1 KR 102213819B1 KR 1020190143797 A KR1020190143797 A KR 1020190143797A KR 20190143797 A KR20190143797 A KR 20190143797A KR 102213819 B1 KR102213819 B1 KR 102213819B1
- Authority
- KR
- South Korea
- Prior art keywords
- ciphertext
- value
- normalized
- input value
- calculating
- Prior art date
Links
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/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Abstract
본 발명의 일 실시예에 따른, 로그 연산 서버에 의해 수행되는 동형암호 기법으로 이진 암호화된 입력값의 로그 연산 방법에 있어서, 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하는 단계; 입력값의 암호문을 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하는 단계; 및 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 소수값을 산출하는 단계를 포함하고, 정규화 암호문의 로그값의 정수값은 최상위 비트가 1인 자리수를 기초로 산출하여 정규화된 암호문의 로그값을 산출하는, 암호화된 데이터의 로그 연산 방법을 제공하고자 한다.
Description
본 발명은 동형암호(Homomorphic Encryption)를 이용해 암호화된 데이터에 대해 별도의 복호화 없이 로그 연산을 수행하는 장치 및 방법에 관한 것이다.
일반적으로, 사용자가 원하는 서비스를 서버에 요청하는 경우, 암호화된 파일을 서버에 전송한다. 이 후 서버는 이를 복호화하여 사용자가 원하는 서비스를 처리를 하게 된다. 다만, 여기에서 사용자가 보낸 파일 또는 데이터에 대해 서버가 수집을 할 수 있다는 문제점이 있다.
그러나, 동형암호 기법을 이용하게 되면, 서버는 사용자가 보낸 암호화된 데이터를 암호화된 상태에서 연산을 적용하여 사용자가 원하는 서비스를 처리하여, 결과적으로 서버는 사용자가 보낸 데이터에 대해 어떠한 정보도 얻을 수 없게 된다. 즉, 동형암호는 사용자의 프라이버시를 보존할 수 있는 암호화 기법이다.
다만, 현재까지 동형암호의 연산은 다양화되지 않았고, 이에 따라 동형암호에 적용되는 기초적인 연산 구축의 필요성이 대두되고 있다.
나아가, 기존의 평문 상에서의 로그 값을 구하는 방식으로는 암호화된 상태에서의 로그 값을 구하는데 한계가 있었다. 즉, 평문 상에서 로그를 구하는 방식과는 달리 암호화된 상태에서는 입력 값이 무엇인지 알 수 없기 때문에 이에 대해 다른 알고리즘의 개발이 요구되고 있다.
상술한 문제를 해결하기 위하여, 본 발명에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 장치 및 방법은 동형암호를 이용해 암호화된 데이터에 대하여 복호화 없이 로그 연산을 수행하는 장치 및 방법을 제공하고자 한다.
본 발명의 일 실시예에 따른, 로그 연산 서버에 의해 수행되는 동형암호 기법으로 이진 암호화된 입력값의 로그 연산 방법에 있어서, 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하는 단계; 입력값의 암호문을 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하는 단계; 및 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 소수값을 산출하는 단계를 포함하고, 정규화 암호문의 로그값의 정수값은 최상위 비트가 1인 자리수를 기초로 산출하여 정규화된 암호문의 로그값을 산출하는, 암호화된 데이터의 로그 연산 방법을 제공하고자 한다.
본 실시예에 있어서, 입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 단계는, 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하는 단계; 입력값의 암호문과 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 입력값의 암호문의 값이 비교값의 암호문의 값 이상이면 참값을 출력하고, 입력값의 암호문의 값이 비교값의 암호문의 값 미만이면 거짓값을 출력하는 단계; 및 참값의 개수의 합에서 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법을 제공할 수 있다.
본 실시예에 있어서, 암호문을 정규화하는 단계는, 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하는 단계; 및 입력값의 암호문의 이동 연산 예상 횟수와 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법을 제공할 수 있다.
[수학식 1]
length: 입력값의 암호문의 비트 길이
S: 이동 연산 수행 횟수(정수)
본 실시예에 있어서, 정규화 암호문을 제곱 및 이동 연산하는 단계는, 정규화 암호문을 제곱 연산하는 단계; 제곱 연산이 수행된 정규화 암호문의 비트 길이/2번째 자리수의 값이 1인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하고, 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산하며, 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법을 제공할 수 있다.
본 실시예에 있어서, 정규화 암호문의 로그값의 정수값은 이동 연산 예상 횟수와 같은 것인, 암호화된 데이터의 로그 연산 방법을 제공할 수 있다.
본 발 명의 일 실시예에 따른 로그 연산 서버에 있어서, 동형암호 기법으로 이진 암호화된 입력값의 로그 연산 프로그램이 저장된 메모리; 및 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하고, 프로세서는 프로램의 실행에 따라, 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하고, 입력값의 암호문을 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하고, 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 소수값을 산출하고, 정규화 암호문의 로그값의 정수값은 최상위 비트가 1인 자리수를 기초로 산출하여 정규화된 암호문의 로그값을 산출하는, 암호화된 데이터의 로그 연산 서버를 제공하고자 한다.
본 실시예에 있어서, 입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 것은, 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하고, 입력값의 암호문과 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 입력값의 암호문의 값이 비교값의 암호문의 값 이상이면 참값을 출력하고, 입력값의 암호문의 값이 비교값의 암호문의 값 미만이면 거짓값을 출력하고, 참값의 개수의 합에서 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버를 제공할 수 있다.
본 실시예에 있어서, 암호문을 정규화하는 것은, 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하고, 입력값의 암호문의 이동 연산 예상 횟수와 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버를 제공할 수 있다.
[수학식 1]
length: 입력값의 암호문의 비트 길이
S: 이동 연산 수행 횟수(정수)
본 실시예에 있어서, 정규화 암호문을 제곱 및 이동 연산하는 것은, 정규화 암호문을 제곱 연산하고, 제곱 연산이 수행된 정규화 암호문의 비트 길이/2번째 자리수의 값이 1인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하고, 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산하며, 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버를 제공할 수 있다.
본 실시예에 있어서, 상기 정규화 암호문의 로그값의 정수값은 상기 이동 연산 예상 횟수와 같은 것인, 암호화된 데이터의 로그 연산 서버를 제공할 수 있다.
본 발명에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법은 동형암호를 이용해 암호화된 데이터에 대하여 복호화 없이 로그 연산을 수행하는 장치 및 방법을 제공할 수 있다.
로그 값의 경우에는 정확한 값보다는 근사치를 갖게 되나, 본 발명을 통해서는 정해진 비트(bit)내에서는 정확한 로그 값을 갖도록 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 방법을 보여주는 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 방법을 설명하기 위한 순서도이다.
도 3은 암호문의 이동 연산 예상 횟수를 산출하는 방법을 설명하기 위한 순서도이다.
도 4 및 도 5는 암호문의 이동 연산 예상 횟수를 산출하는 방법을 설명하기 위한 도면이다.
도 6은 정규화 암호문을 산출하는 방법을 설명하기 위한 순서도이다.
도 7 및 도 8은 정규화 암호문을 산출하는 방법을 설명하기 위한 도면이다.
도 9는 암호문의 정규화 과정에 대해 알고리즘 식으로 표현한 도면이다.
도 10은 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 로그값의 소수값을 산출하는 방법을 설명하기 위한 순서도이다.
도 11은 암호문에 적용되는 제곱과 이동 연산 기술을 보여주는 도면이다.
도 12는 정규화 암호문에 제곱과 이동 연산을 수행하고, 밑이 a인 정규화된 암호문의 로그값을 산출하는 과정에 대해 알고리즘 식으로 표현한 도면이다.
도 13는 본 발명에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 값을 참 값과 비교한 그래프를 보여주는 도면이다.
도 2는 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 방법을 설명하기 위한 순서도이다.
도 3은 암호문의 이동 연산 예상 횟수를 산출하는 방법을 설명하기 위한 순서도이다.
도 4 및 도 5는 암호문의 이동 연산 예상 횟수를 산출하는 방법을 설명하기 위한 도면이다.
도 6은 정규화 암호문을 산출하는 방법을 설명하기 위한 순서도이다.
도 7 및 도 8은 정규화 암호문을 산출하는 방법을 설명하기 위한 도면이다.
도 9는 암호문의 정규화 과정에 대해 알고리즘 식으로 표현한 도면이다.
도 10은 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 로그값의 소수값을 산출하는 방법을 설명하기 위한 순서도이다.
도 11은 암호문에 적용되는 제곱과 이동 연산 기술을 보여주는 도면이다.
도 12는 정규화 암호문에 제곱과 이동 연산을 수행하고, 밑이 a인 정규화된 암호문의 로그값을 산출하는 과정에 대해 알고리즘 식으로 표현한 도면이다.
도 13는 본 발명에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 값을 참 값과 비교한 그래프를 보여주는 도면이다.
아래에서는 첨부한 도면을 참조하여, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고, 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하에서는, 첨부된 도면을 참조하여 동형암호 기법으로 암호화된 데이터를 로그 연산하는 서버를 이용한 암호화된 입력값의 로그 연산 방법에 대하여 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연상 방법을 보여주는 흐름도이다.
도 1을 참조하면, 사용자가 동형암호 기법으로 데이터를 암호화하고, 사용자 단말을 통해 암호화된 데이터의 로그 연산 서버에 업로드하며, 암호화된 데이터의 로그 연산 서버에서는 로그 연산이 포함된 동형암호 라이브러리를 이용하여, 로그 연산이 들어간 알고리즘을 수행하여 암호화된 채로 결과값을 출력할 수 있다. 이러한 결과값은 사용자 단말에서 고유의 비밀키를 이용하여 복호화 할 수 있다.
한편 암호화된 데이터의 로그 연산 서버는 통신 모듈, 메모리, 프로세서를 포함할 수 있다.
통신 모듈은 통신망과 연동하여 암호화된 데이터의 로그 연산 서버에 통신 인터페이스를 제공하는데, 사용자 단말과 데이터를 송수신하는 역할을 수행할 수 있다. 여기서, 통신 모듈은 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호와 같은 신호를 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함하는 장치일 수 있다.
메모리는 암호화된 데이터의 로그 연산 프로그램이 기록된 것일 수 있다. 또한, 메모리는 프로세서가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행할 수 있다. 여기서, 메모리는 휘발성 저장 매체(volatile storage media) 또는 비휘발성 저장 매체(non-volatile storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
프로세서는 암호화된 데이터의 로그 연산 서버에서 암호화된 데이터의 로그 연산 프로그램이 수행하는 전체 과정을 제어할 수 있다. 프로세서가 수행하는 과정의 각 단계에 대해서는 도 2 내지 도 13을 참조하여 후술하기로 한다.
여기서, 프로세서는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로서, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
도 2는 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 방법을 설명하기 위한 순서도이다. 도 3은 암호문의 이동 연산 예상 횟수를 산출하는 방법을 설명하기 위한 순서도이다. 도 4 및 도 5는 암호문의 이동 연산 예상 횟수를 산출하는 방법을 설명하기 위한 도면이다.
도 2 내지 도 5를 참조하여 암호문의 정규화(Normalization) 단계에 대하여 설명하기로 한다. 입력값 x의 암호문인 E(x)에 대해서 정규화, 즉 의 범위를 갖도록 하기 위해서는, 평문의 경우와 같이 이동(shift) 연산만을 통해서는 구현하기에 어려움이 있다. 예를 들어, 평문에서 의 경우 오른쪽으로 이동 연산을 두 번만 수행하게 되면 로 정규화가 가능하다. 반면에, 암호문에서는 몇 번의 이동 연산을 수행해야 하는지 알 수가 없기 때문에 어려움이 있는 것이다.
암호문을 정규화하기 위해 먼저 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하는 단계가 수행될 수 있다. 암호문의 최상위 비트 1이 어디에 위치하였는지 파악을 한 후, 그 만큼 이동 연산을 수행해야만 정규화된(normalized) 암호문을 얻을 수 있기 때문이다.
입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 단계는, 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하는 단계를 포함할 수 있다. 즉, 입력값의 암호문을 이 와 같은 서로 다른 자리수의 최상위 비트 1만으로 구성된 것과 비교 연산을 수행할 수 있다.
그리고, 입력값의 암호문과 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 입력값의 암호문의 값이 비교값의 암호문의 값 이상이면 참값=1을 출력하고, 입력값의 암호문의 값이 비교값의 암호문의 값 미만이면 거짓값=0을 출력하는 단계가 수행될 수 있다.
즉, 입력값의 암호문의 최상위 비트가 1인 자리수 값과 상기 비교값들의 암호문의 최상위 비트가 1인 자리수 값을 서로 비교하여, 값이 같거나 크면 1을 출력하고, 작으면 0을 출력하며 이를 출력값(output)에 저장할 수 있다.
그 다음으로, 참값의 개수의 합에서 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 단계가 수행될 수 있다.
즉, 출력값에 저장된 값들을 모두 더하고, (length: 입력 비트의 길이)의 값을 빼면 그 결과값으로서 암호문을 정규화하기 위해 필요한 이동 연산 수행 횟수를 예상할 수 있다(도 4 참조). 이를 통해 입력값의 암호문에서 MSB(Most Significant Bit)가 위치한 자리수를 구할 수 있다.
다만, 이러한 결과값도 암호화되어 있기 때문에, 정확한 이동 연산 필요 횟수를 알 수 없다. 따라서 암호문에 대해 이동 연산을 수행한 횟수(S)만큼 이동된 값(A)들을 만들 필요가 있다(도 5 참조).
이를 위해, 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하는 단계가 수행될 수 있다.
[수학식 1]
도 6은 정규화 암호문을 산출하는 방법을 설명하기 위한 순서도이다. 도 7 및 도 8은 정규화 암호문을 산출하는 방법을 설명하기 위한 도면이다.
도 6 내지 도 8을 참조하면 그 다음으로, 입력값의 암호문의 이동 연산 예상 횟수와 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 단계가 수행될 수 있다.
즉, 이동 연산을 수행한 횟수(S)와 정규화를 위해 이동 연산 예상 횟수(Outsum)에 대해 동치연산(Equal Comparison)을 수행하고 결과값(E)으로 저장할 수 있다. 그 다음으로, 동치연산 수행결과(E)와 이동된 암호문 값(A)들에 대해 논리곱(AND) 연산을 수행하면, E=1인 값을 제외하고 나머지 값들은 0이 되게 된다. 마지막으로, E=1에 대응하는 결과값으로서 E(x)의 정규화된 값을 얻을 수 있게 된다(도 8 참조).
도 9는 암호문의 정규화 과정에 대해 알고리즘 식으로 표현한 도면이다.
도 9를 참조하면 위에서 설명한 각 과정의 알고리즘을 확인할 수 있다.
이하에서는, 다음 과정으로서 정규화 암호문을 제곱 및 이동(Square and Shift) 연산하여 상기 정규화 암호문의 로그값을 산출하는 단계에 대하여 설명하기로 한다.
이에 대한 수학적 배경을 평문 상에서 설명하면, 정규화된 x에 대해 , 즉 구하고자 하는 y의 범위가 으로 정해질 수 있다. y는 다시 이진수(binary representation)로 와 같이 나타낼 수 있다.
이를 다시 정리하면, 일 수 있다. x=2y이므로, 위의 식을 y에 치환(substitution)하게 되면 가 되고, x를 제곱하면 가 될 수 있다. 이면, 이므로, b1=0이 되고, 이면, b1=1이 된다. b1=1인 경우, 이므로, x2을 2로 나눌 수 있다. 위와 같은 방식으로 정해진 입력 비트의 길이(input length)에 대해 y의 모든 비트 값을 구할 수 있다.
도 10은 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 로그값의 소수값을 산출하는 방법을 설명하기 위한 순서도이다. 도 11은 암호문에 적용되는 제곱과 이동 연산 기술을 보여주는 도면이다.
도 10 및 도 11을 참조하면, 암호문 상에서는 정규화된 x에 대해 먼저 제곱 연산하는 단계가 수행될 수 있다. 제곱 연산이 수행된 정규화 암호문의 비트 길이/2()번째 자리수의 값이 1인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수점 아래 첫번째 값으로 산출하고, 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산할 수 있다.
반면에, 상기 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수점 아래 첫번째 값으로 산출할 수 있다.
즉, 정규화된 x의 제곱값에 있어서, 제4번째 비트(일반적으로 ) 값이 로그의 소수점 bi가 될 수 있다. 왜냐하면, 4번째 비트가 1인 경우 이기 때문에 bi=1이 될 수 있다. 그 다음으로, x2을 2로 나누게 되는데, 이는 x2의 모든 비트들을 오른쪽으로 한번 이동 연산하는 결과가 될 수 있다.
마찬가지로, 4번째 비트가 0인 경우는 인 경우가 되고 bi=0이 될 수 있다. 이 경우에는 이동 연산을 수행하지 않고, bi값만 추출하면 된다. 위와 같은 방식으로 알고리즘을 반복적으로 수행하게 되면, 모든 비트를 추출할 수 있다. 여기서 4번째 비트()만 결과 값에 복사하면 간단하게 정규화된 의 값을 구할 수 있게 된다.
즉, 정규화 암호문의 밑이 2인 로그값의 정수값은 이동 연산 예상 횟수와 같고, 소수값은 정규화 암호문을 제곱 및 이동 연산하는 단계를 통해 산출되는 것일 수 있다.
로그값의 정수부분은 이전에 정규화 과정에서 도출한 최상위 비트의 위치인 값일 수 있다. 따라서 을 통해 정수부분과 소수부분을 합친 의 값을 구할 수 있다. 마지막으로, 일반적인 에 적용하기 위해서는, 를 적용하면 수행이 가능하다. 다시 말하면, 값에 대해 밑 에 대해서 로그값을 구하고 이를 나누어 주면 된다.
도 12는은 정규화 암호문에 제곱과 이동 연산을 수행하고, 밑이 a인 정규화된 암호문의 로그값을 산출하는 과정에 대해 알고리즘 식으로 표현한 도면이다. 도 13는 본 발명에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 값을 참 값과 비교한 그래프를 보여주는 도면이다.
도 12 및 도 13을 참조하면, 위에서 설명한 각 과정의 알고리즘을 확인할 수 있다. 또한, 본 발명의 일 실시예에 따른 암호화된 데이터의 로그 연산 방법에 따른 결과 값(Square&Shift)이 실제값(True Value)과 상응하는 것을 볼 수 있다.
이상으로 설명한, 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법은 동형암호를 이용해 암호화된 데이터에 대하여 복호화 없이 로그 연산을 수행하는 장치 및 방법을 제공할 수 있다.
구체적으로, 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 방법은 암호화된 데이터 상에서의 암호문을 정규화, 제곱과 이동연산 기술을 이용하고, 마지막으로 밑이 a인 구하는 방법을 통해 결과 값을 도출할 수 있다.
로그 값의 경우에는 정확한 값보다는 근사치를 갖게 되나, 본 발명을 통해서는 정해진 비트(bit)내에서는 정확한 로그 값을 갖도록 구현될 수 있다.
한편, 본 발명의 일 실시예에 따른 암호화된 데이터의 로그 연산 방법은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
이상의 설명은 본 발명의 기술적 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예는 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술적 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
Claims (11)
- 로그 연산 서버에 의해 수행되는 동형암호 기법으로 이진 암호화된 입력값의 로그 연산 방법에 있어서,
상기 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하는 단계;
상기 입력값의 암호문을 상기 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하는 단계; 및
상기 정규화 암호문을 제곱 및 이동 연산하여 상기 정규화 암호문의 소수값을 산출하는 단계를 포함하고,
상기 정규화 암호문의 로그값의 정수값은 상기 최상위 비트가 1인 자리수를 기초로 산출하여 상기 정규화 암호문의 로그값을 산출하는 것이고,
상기 입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 단계는,
상기 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하는 단계;
상기 입력값의 암호문과 상기 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 상기 입력값의 암호문의 값이 상기 비교값의 암호문의 값 이상이면 참값을 출력하고, 상기 입력값의 암호문의 값이 상기 비교값의 암호문의 값 미만이면 거짓값을 출력하는 단계; 및
상기 참값의 개수의 합에서 상기 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 상기 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 단계를 포함하고,
상기 암호문을 정규화하는 단계는,
상기 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하는 단계; 및
상기 입력값의 암호문의 이동 연산 예상 횟수와 상기 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 상기 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법.
[수학식 1]
length: 입력값의 암호문의 비트 길이
S: 이동 연산 수행 횟수(정수) - 삭제
- 삭제
- 제1항에 있어서,
상기 정규화 암호문을 제곱 및 이동 연산하는 단계는,
상기 정규화 암호문을 제곱 연산하는 단계; 및
상기 제곱 연산이 수행된 정규화 암호문의 비트 길이/2번째 자리수의 값이 1인 경우 이를 상기 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하고, 상기 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산하며, 상기 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법. - 제4항에 있어서,
상기 정규화 암호문의 로그값의 정수값은 상기 이동 연산 예상 횟수와 같은 것인, 암호화된 데이터의 로그 연산 방법. - 로그 연산 서버에 있어서,
동형암호 기법으로 이진 암호화된 입력값의 로그 연산 프로그램이 저장된 메모리; 및
상기 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하고,
상기 프로세서는 상기 프로그램의 실행에 따라,
상기 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하고, 상기 입력값의 암호문을 상기 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하고, 상기 정규화 암호문을 제곱 및 이동 연산하여 상기 정규화 암호문의 소수값을 산출하고, 상기 정규화 암호문의 로그값의 정수값은 상기 최상위 비트가 1인 자리수를 기초로 산출하여 상기 정규화된 암호문의 로그값을 산출하는 것이고,
상기 입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 것은, 상기 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하고, 상기 입력값의 암호문과 상기 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 상기 입력값의 암호문의 값이 상기 비교값의 암호문의 값 이상이면 참값을 출력하고, 상기 입력값의 암호문의 값이 상기 비교값의 암호문의 값 미만이면 거짓값을 출력하고, 상기 참값의 개수의 합에서 상기 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 상기 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 것을 포함하고,
상기 암호문을 정규화하는 것은, 상기 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하고, 상기 입력값의 암호문의 이동 연산 예상 횟수와 상기 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 상기 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버.
[수학식 1]
length: 입력값의 암호문의 비트 길이
S: 이동 연산 수행 횟수(정수) - 삭제
- 삭제
- 제6항에 있어서,
상기 정규화 암호문을 제곱 및 이동 연산하는 것은, 상기 정규화 암호문을 제곱 연산하고, 상기 제곱 연산이 수행된 정규화 암호문의 비트 길이/2번째 자리수의 값이 1인 경우 이를 상기 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하고, 상기 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산하며, 상기 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버. - 제9항에 있어서,
상기 정규화 암호문의 로그값의 정수값은 상기 이동 연산 예상 횟수와 같은 것인, 암호화된 데이터의 로그 연산 서버. - 제1항, 제4항 및 제5항 중 어느 한 항에 따른 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20180137544 | 2018-11-09 | ||
KR1020180137544 | 2018-11-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200054117A KR20200054117A (ko) | 2020-05-19 |
KR102213819B1 true KR102213819B1 (ko) | 2021-02-09 |
Family
ID=70913270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190143797A KR102213819B1 (ko) | 2018-11-09 | 2019-11-11 | 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102213819B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102475273B1 (ko) | 2020-06-15 | 2022-12-08 | 주식회사 크립토랩 | 동형 암호 시스템에 대한 시뮬레이션 장치 및 방법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101829267B1 (ko) | 2016-04-27 | 2018-02-14 | 서울대학교산학협력단 | 암호문의 크기가 감소되는 동형 암호화 방법 |
-
2019
- 2019-11-11 KR KR1020190143797A patent/KR102213819B1/ko active IP Right Grant
Non-Patent Citations (1)
Title |
---|
Aliasgari, Mehrdad, et al. "Secure Computation on Floating Point Numbers."(2012.12.10.)* |
Also Published As
Publication number | Publication date |
---|---|
KR20200054117A (ko) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3639127B1 (en) | Homomorphic factorization encryption | |
CN110753926A (zh) | 同态数据分析 | |
KR102550812B1 (ko) | 동형 암호를 이용한 암호문 비교 방법 및 이를 수행하기 위한 장치 | |
CN108848064B (zh) | 授权管理方法及*** | |
CN110768784B (zh) | 密码传输方法、装置、计算机设备和存储介质 | |
CN108712375B (zh) | 坐标加密方法、坐标加密***和具有该***的车辆 | |
US9882712B2 (en) | Encrypted text matching system, method, and computer readable medium | |
CN113438134B (zh) | 请求报文处理方法、装置、服务器及介质 | |
CN115567188B (zh) | 一种多键值隐匿求交方法、装置及存储介质 | |
CN110383751B (zh) | 关于证实的数据的pinocchio/trinocchio | |
KR102213835B1 (ko) | 동형암호 기법으로 암호화된 데이터의 지수 함수 연산 서버 및 방법 | |
EP3591563A1 (en) | Verifying the integrity of a plurality of data blocks | |
JP7302664B2 (ja) | 情報処理装置、データ記録システム、データ記録方法及びプログラム | |
CN112073444B (zh) | 数据集的处理方法、装置和服务器 | |
US9985779B2 (en) | Encrypted text matching system, method, and computer readable medium | |
KR102213819B1 (ko) | 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법 | |
CN114329644B (zh) | 对逻辑***设计进行加密仿真的方法、设备及存储介质 | |
WO2018213875A1 (en) | Asymmetric cryptography and authentication | |
EP2991266B1 (en) | Encrypted text matching system, method, and computer readable medium | |
KR102526114B1 (ko) | 암호화 및 복호화를 위한 장치 및 방법 | |
TWI716197B (zh) | 更新非揮發性記憶體的加密金鑰與產生加密金鑰的新例項的裝置與物聯網裝置及其方法 | |
US11095429B2 (en) | Circuit concealing apparatus, calculation apparatus, and program | |
KR20220040309A (ko) | 동형 암호화 장치 및 그 동작 방법 | |
JP6980154B2 (ja) | データ利用者鍵生成装置、鍵生成方法及び鍵生成プログラム | |
CN114911851B (zh) | 数据查询方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |