KR20200054117A - 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법 - Google Patents

동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법 Download PDF

Info

Publication number
KR20200054117A
KR20200054117A KR1020190143797A KR20190143797A KR20200054117A KR 20200054117 A KR20200054117 A KR 20200054117A KR 1020190143797 A KR1020190143797 A KR 1020190143797A KR 20190143797 A KR20190143797 A KR 20190143797A KR 20200054117 A KR20200054117 A KR 20200054117A
Authority
KR
South Korea
Prior art keywords
ciphertext
value
normalized
calculating
input value
Prior art date
Application number
KR1020190143797A
Other languages
English (en)
Other versions
KR102213819B1 (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 고려대학교 산학협력단
Publication of KR20200054117A publication Critical patent/KR20200054117A/ko
Application granted granted Critical
Publication of KR102213819B1 publication Critical patent/KR102213819B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations 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)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 일 실시예에 따른, 로그 연산 서버에 의해 수행되는 동형암호 기법으로 이진 암호화된 입력값의 로그 연산 방법에 있어서, 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하는 단계; 입력값의 암호문을 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하는 단계; 및 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 소수값을 산출하는 단계를 포함하고, 정규화 암호문의 로그값의 정수값은 최상위 비트가 1인 자리수를 기초로 산출하여 정규화된 암호문의 로그값을 산출하는, 암호화된 데이터의 로그 연산 방법을 제공하고자 한다.

Description

동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법{SERVER AND METHOD FOR LOGARITHM CALCULATION OF DATA ENCRYPTED WITH HOMOMORPHIC ENCRYPTION TECHNIQUE}
본 발명은 동형암호(Homomorphic Encryption)를 이용해 암호화된 데이터에 대해 별도의 복호화 없이 로그 연산을 수행하는 장치 및 방법에 관한 것이다.
일반적으로, 사용자가 원하는 서비스를 서버에 요청하는 경우, 암호화된 파일을 서버에 전송한다. 이 후 서버는 이를 복호화하여 사용자가 원하는 서비스를 처리를 하게 된다. 다만, 여기에서 사용자가 보낸 파일 또는 데이터에 대해 서버가 수집을 할 수 있다는 문제점이 있다.
그러나, 동형암호 기법을 이용하게 되면, 서버는 사용자가 보낸 암호화된 데이터를 암호화된 상태에서 연산을 적용하여 사용자가 원하는 서비스를 처리하여, 결과적으로 서버는 사용자가 보낸 데이터에 대해 어떠한 정보도 얻을 수 없게 된다. 즉, 동형암호는 사용자의 프라이버시를 보존할 수 있는 암호화 기법이다.
다만, 현재까지 동형암호의 연산은 다양화되지 않았고, 이에 따라 동형암호에 적용되는 기초적인 연산 구축의 필요성이 대두되고 있다.
나아가, 기존의 평문 상에서의 로그 값을 구하는 방식으로는 암호화된 상태에서의 로그 값을 구하는데 한계가 있었다. 즉, 평문 상에서 로그를 구하는 방식과는 달리 암호화된 상태에서는 입력 값이 무엇인지 알 수 없기 때문에 이에 대해 다른 알고리즘의 개발이 요구되고 있다.
대한민국 공개특허공보 10-2017-0122458(2017. 11. 06. 공개)
상술한 문제를 해결하기 위하여, 본 발명에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 장치 및 방법은 동형암호를 이용해 암호화된 데이터에 대하여 복호화 없이 로그 연산을 수행하는 장치 및 방법을 제공하고자 한다.
구체적으로, 본 발명은 암호화된 데이터 상에서의 암호문을 정규화, 제곱과 이동연산 기술을 이용하고, 마지막으로 밑이 a인
Figure pat00001
구하는 방법을 통해 결과 값을 도출하고자 한다.
본 발명의 일 실시예에 따른, 로그 연산 서버에 의해 수행되는 동형암호 기법으로 이진 암호화된 입력값의 로그 연산 방법에 있어서, 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하는 단계; 입력값의 암호문을 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하는 단계; 및 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 소수값을 산출하는 단계를 포함하고, 정규화 암호문의 로그값의 정수값은 최상위 비트가 1인 자리수를 기초로 산출하여 정규화된 암호문의 로그값을 산출하는, 암호화된 데이터의 로그 연산 방법을 제공하고자 한다.
본 실시예에 있어서, 입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 단계는, 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하는 단계; 입력값의 암호문과 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 입력값의 암호문의 값이 비교값의 암호문의 값 이상이면 참값을 출력하고, 입력값의 암호문의 값이 비교값의 암호문의 값 미만이면 거짓값을 출력하는 단계; 및 참값의 개수의 합에서 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법을 제공할 수 있다.
본 실시예에 있어서, 암호문을 정규화하는 단계는, 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하는 단계; 및 입력값의 암호문의 이동 연산 예상 횟수와 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법을 제공할 수 있다.
[수학식 1]
Figure pat00002
length: 입력값의 암호문의 비트 길이
S: 이동 연산 수행 횟수(정수)
본 실시예에 있어서, 정규화 암호문을 제곱 및 이동 연산하는 단계는, 정규화 암호문을 제곱 연산하는 단계; 제곱 연산이 수행된 정규화 암호문의 비트 길이/2번째 자리수의 값이 1인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하고, 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산하며, 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법을 제공할 수 있다.
본 실시예에 있어서, 정규화 암호문의 로그값의 정수값은 이동 연산 예상 횟수와 같은 것인, 암호화된 데이터의 로그 연산 방법을 제공할 수 있다.
본 발 명의 일 실시예에 따른 로그 연산 서버에 있어서, 동형암호 기법으로 이진 암호화된 입력값의 로그 연산 프로그램이 저장된 메모리; 및 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하고, 프로세서는 프로램의 실행에 따라, 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하고, 입력값의 암호문을 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하고, 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 소수값을 산출하고, 정규화 암호문의 로그값의 정수값은 최상위 비트가 1인 자리수를 기초로 산출하여 정규화된 암호문의 로그값을 산출하는, 암호화된 데이터의 로그 연산 서버를 제공하고자 한다.
본 실시예에 있어서, 입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 것은, 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하고, 입력값의 암호문과 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 입력값의 암호문의 값이 비교값의 암호문의 값 이상이면 참값을 출력하고, 입력값의 암호문의 값이 비교값의 암호문의 값 미만이면 거짓값을 출력하고, 참값의 개수의 합에서 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버를 제공할 수 있다.
본 실시예에 있어서, 암호문을 정규화하는 것은, 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하고, 입력값의 암호문의 이동 연산 예상 횟수와 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버를 제공할 수 있다.
[수학식 1]
Figure pat00003
length: 입력값의 암호문의 비트 길이
S: 이동 연산 수행 횟수(정수)
본 실시예에 있어서, 정규화 암호문을 제곱 및 이동 연산하는 것은, 정규화 암호문을 제곱 연산하고, 제곱 연산이 수행된 정규화 암호문의 비트 길이/2번째 자리수의 값이 1인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하고, 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산하며, 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버를 제공할 수 있다.
본 실시예에 있어서, 상기 정규화 암호문의 로그값의 정수값은 상기 이동 연산 예상 횟수와 같은 것인, 암호화된 데이터의 로그 연산 서버를 제공할 수 있다.
본 발명에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법은 동형암호를 이용해 암호화된 데이터에 대하여 복호화 없이 로그 연산을 수행하는 장치 및 방법을 제공할 수 있다.
구체적으로, 본 발명은 암호화된 데이터 상에서의 암호문을 정규화, 제곱과 이동연산 기술을 이용하고, 마지막으로 밑이 a인
Figure pat00004
구하는 방법을 통해 결과 값을 도출할 수 있다.
로그 값의 경우에는 정확한 값보다는 근사치를 갖게 되나, 본 발명을 통해서는 정해진 비트(bit)내에서는 정확한 로그 값을 갖도록 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 방법을 보여주는 흐름도이다.
도 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)에 대해서 정규화, 즉
Figure pat00005
의 범위를 갖도록 하기 위해서는, 평문의 경우와 같이 이동(shift) 연산만을 통해서는 구현하기에 어려움이 있다. 예를 들어, 평문에서
Figure pat00006
의 경우 오른쪽으로 이동 연산을 두 번만 수행하게 되면
Figure pat00007
로 정규화가 가능하다. 반면에, 암호문에서는 몇 번의 이동 연산을 수행해야 하는지 알 수가 없기 때문에 어려움이 있는 것이다.
암호문을 정규화하기 위해 먼저 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하는 단계가 수행될 수 있다. 암호문의 최상위 비트 1이 어디에 위치하였는지 파악을 한 후, 그 만큼 이동 연산을 수행해야만 정규화된(normalized) 암호문을 얻을 수 있기 때문이다.
입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 단계는, 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하는 단계를 포함할 수 있다. 즉, 입력값의 암호문을
Figure pat00008
Figure pat00009
와 같은 서로 다른 자리수의 최상위 비트 1만으로 구성된 것과 비교 연산을 수행할 수 있다.
그리고, 입력값의 암호문과 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 입력값의 암호문의 값이 비교값의 암호문의 값 이상이면 참값=1을 출력하고, 입력값의 암호문의 값이 비교값의 암호문의 값 미만이면 거짓값=0을 출력하는 단계가 수행될 수 있다.
즉, 입력값의 암호문의 최상위 비트가 1인 자리수 값과 상기 비교값들의 암호문의 최상위 비트가 1인 자리수 값을 서로 비교하여, 값이 같거나 크면 1을 출력하고, 작으면 0을 출력하며 이를 출력값(output)에 저장할 수 있다.
그 다음으로, 참값의 개수의 합에서 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 단계가 수행될 수 있다.
즉, 출력값에 저장된 값들을 모두 더하고,
Figure pat00010
(length: 입력 비트의 길이)의 값을 빼면 그 결과값으로서 암호문을 정규화하기 위해 필요한 이동 연산 수행 횟수를 예상할 수 있다(도 4 참조). 이를 통해 입력값의 암호문에서 MSB(Most Significant Bit)가 위치한 자리수를 구할 수 있다.
다만, 이러한 결과값도 암호화되어 있기 때문에, 정확한 이동 연산 필요 횟수를 알 수 없다. 따라서 암호문에 대해 이동 연산을 수행한 횟수(S)만큼 이동된 값(A)들을 만들 필요가 있다(도 5 참조).
이를 위해, 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하는 단계가 수행될 수 있다.
[수학식 1]
Figure pat00011
도 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) 연산하여 상기 정규화 암호문의 로그값을 산출하는 단계에 대하여 설명하기로 한다.
정규화된 E(x)에 대해 제곱과 이동 연산을 수행하게 되면,
Figure pat00012
의 비트(
Figure pat00013
)들을 정확하게 구할 수 있게 된다.
이에 대한 수학적 배경을 평문 상에서 설명하면, 정규화된 x에 대해
Figure pat00014
, 즉 구하고자 하는 y의 범위가
Figure pat00015
으로 정해질 수 있다. y는 다시 이진수(binary representation)로
Figure pat00016
와 같이 나타낼 수 있다.
이를 다시 정리하면,
Figure pat00017
일 수 있다. x=2y이므로, 위의 식을 y에 치환(substitution)하게 되면
Figure pat00018
가 되고, x를 제곱하면
Figure pat00019
가 될 수 있다.
Figure pat00020
이면,
Figure pat00021
이므로, b1=0이 되고,
Figure pat00022
이면, b1=1이 된다. b1=1인 경우,
Figure pat00023
이므로, x2을 2로 나눌 수 있다. 위와 같은 방식으로 정해진 입력 비트의 길이(input length)에 대해 y의 모든 비트 값을 구할 수 있다.
도 10은 정규화 암호문을 제곱 및 이동 연산하여 정규화 암호문의 로그값의 소수값을 산출하는 방법을 설명하기 위한 순서도이다. 도 11은 암호문에 적용되는 제곱과 이동 연산 기술을 보여주는 도면이다.
도 10 및 도 11을 참조하면, 암호문 상에서는 정규화된 x에 대해 먼저 제곱 연산하는 단계가 수행될 수 있다. 제곱 연산이 수행된 정규화 암호문의 비트 길이/2(
Figure pat00024
)번째 자리수의 값이 1인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수점 아래 첫번째 값으로 산출하고, 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산할 수 있다.
반면에, 상기 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수점 아래 첫번째 값으로 산출할 수 있다.
즉, 정규화된 x의 제곱값에 있어서, 제4번째 비트(일반적으로
Figure pat00025
) 값이 로그의 소수점 bi가 될 수 있다. 왜냐하면, 4번째 비트가 1인 경우
Figure pat00026
이기 때문에 bi=1이 될 수 있다. 그 다음으로, x2을 2로 나누게 되는데, 이는 x2의 모든 비트들을 오른쪽으로 한번 이동 연산하는 결과가 될 수 있다.
마찬가지로, 4번째 비트가 0인 경우는
Figure pat00027
인 경우가 되고 bi=0이 될 수 있다. 이 경우에는 이동 연산을 수행하지 않고, bi값만 추출하면 된다. 위와 같은 방식으로 알고리즘을 반복적으로 수행하게 되면, 모든 비트를 추출할 수 있다. 여기서 4번째 비트(
Figure pat00028
)만 결과 값에 복사하면 간단하게 정규화된
Figure pat00029
의 값을 구할 수 있게 된다.
즉, 정규화 암호문의 밑이 2인 로그값의 정수값은 이동 연산 예상 횟수와 같고, 소수값은 정규화 암호문을 제곱 및 이동 연산하는 단계를 통해 산출되는 것일 수 있다.
이하에서는, 밑이 a인
Figure pat00030
를 구하는 방법에 대하여 설명하기로 한다.
로그값의 정수부분은 이전에 정규화 과정에서 도출한 최상위 비트의 위치인
Figure pat00031
값일 수 있다. 따라서
Figure pat00032
을 통해 정수부분과 소수부분을 합친
Figure pat00033
의 값을 구할 수 있다. 마지막으로, 일반적인
Figure pat00034
에 적용하기 위해서는,
Figure pat00035
를 적용하면 수행이 가능하다. 다시 말하면,
Figure pat00036
값에 대해 밑
Figure pat00037
에 대해서 로그값을 구하고 이를 나누어 주면 된다.
도 12는은 정규화 암호문에 제곱과 이동 연산을 수행하고, 밑이 a인 정규화된 암호문의 로그값을 산출하는 과정에 대해 알고리즘 식으로 표현한 도면이다. 도 13는 본 발명에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 값을 참 값과 비교한 그래프를 보여주는 도면이다.
도 12 및 도 13을 참조하면, 위에서 설명한 각 과정의 알고리즘을 확인할 수 있다. 또한, 본 발명의 일 실시예에 따른 암호화된 데이터의 로그 연산 방법에 따른 결과 값(Square&Shift)이 실제값(True Value)과 상응하는 것을 볼 수 있다.
이상으로 설명한, 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법은 동형암호를 이용해 암호화된 데이터에 대하여 복호화 없이 로그 연산을 수행하는 장치 및 방법을 제공할 수 있다.
구체적으로, 본 발명의 일 실시예에 따른 동형암호 기법으로 암호화된 데이터의 로그 연산 방법은 암호화된 데이터 상에서의 암호문을 정규화, 제곱과 이동연산 기술을 이용하고, 마지막으로 밑이 a인
Figure pat00038
구하는 방법을 통해 결과 값을 도출할 수 있다.
로그 값의 경우에는 정확한 값보다는 근사치를 갖게 되나, 본 발명을 통해서는 정해진 비트(bit)내에서는 정확한 로그 값을 갖도록 구현될 수 있다.
한편, 본 발명의 일 실시예에 따른 암호화된 데이터의 로그 연산 방법은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
이상의 설명은 본 발명의 기술적 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예는 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술적 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (11)

  1. 로그 연산 서버에 의해 수행되는 동형암호 기법으로 이진 암호화된 입력값의 로그 연산 방법에 있어서,
    상기 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하는 단계;
    상기 입력값의 암호문을 상기 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하는 단계; 및
    상기 정규화 암호문을 제곱 및 이동 연산하여 상기 정규화 암호문의 소수값을 산출하는 단계를 포함하고,
    상기 정규화 암호문의 로그값의 정수값은 상기 최상위 비트가 1인 자리수를 기초로 산출하여 상기 정규화 암호문의 로그값을 산출하는, 암호화된 데이터의 로그 연산 방법.
  2. 제1항에 있어서,
    상기 입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 단계는,
    상기 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하는 단계;
    상기 입력값의 암호문과 상기 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 상기 입력값의 암호문의 값이 상기 비교값의 암호문의 값 이상이면 참값을 출력하고, 상기 입력값의 암호문의 값이 상기 비교값의 암호문의 값 미만이면 거짓값을 출력하는 단계; 및
    상기 참값의 개수의 합에서 상기 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 상기 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법.
  3. 제2항에 있어서,
    상기 암호문을 정규화하는 단계는,
    상기 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하는 단계; 및
    상기 입력값의 암호문의 이동 연산 예상 횟수와 상기 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 상기 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법.
    [수학식 1]
    Figure pat00039

    length: 입력값의 암호문의 비트 길이
    S: 이동 연산 수행 횟수(정수)
  4. 제3항에 있어서,
    상기 정규화 암호문을 제곱 및 이동 연산하는 단계는,
    상기 정규화 암호문을 제곱 연산하는 단계; 및
    상기 제곱 연산이 수행된 정규화 암호문의 비트 길이/2번째 자리수의 값이 1인 경우 이를 상기 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하고, 상기 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산하며, 상기 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하는 단계를 포함하는, 암호화된 데이터의 로그 연산 방법.
  5. 제4항에 있어서,
    상기 정규화 암호문의 로그값의 정수값은 상기 이동 연산 예상 횟수와 같은 것인, 암호화된 데이터의 로그 연산 방법.
  6. 로그 연산 서버에 있어서,
    동형암호 기법으로 이진 암호화된 입력값의 로그 연산 프로그램이 저장된 메모리; 및
    상기 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하고,
    상기 프로세서는 상기 프로램의 실행에 따라,
    상기 입력값의 암호문에서 최상위 비트가 1인 자리수를 산출하고, 상기 입력값의 암호문을 상기 최상위 비트가 1인 자리수를 기초로 이동 연산하여 정규화하고, 상기 정규화 암호문을 제곱 및 이동 연산하여 상기 정규화 암호문의 소수값을 산출하고, 상기 정규화 암호문의 로그값의 정수값은 상기 최상위 비트가 1인 자리수를 기초로 산출하여 상기 정규화된 암호문의 로그값을 산출하는, 암호화된 데이터의 로그 연산 서버.
  7. 제6항에 있어서,
    상기 입력값의 암호문의 최상위 비트가 1인 자리수를 산출하는 것은, 상기 입력값의 암호문과 서로 다른 자리수의 최상위 비트 1만으로 구성된 복수개의 비교값의 암호문을 각각 비교 연산하고, 상기 입력값의 암호문과 상기 복수개의 비교값의 암호문 각각을 비교 연산 결과로서 상기 입력값의 암호문의 값이 상기 비교값의 암호문의 값 이상이면 참값을 출력하고, 상기 입력값의 암호문의 값이 상기 비교값의 암호문의 값 미만이면 거짓값을 출력하고, 상기 참값의 개수의 합에서 상기 입력값의 암호문의 비트 길이/2의 값을 뺀 값만큼을 상기 입력값의 암호문의 이동 연산 예상 횟수로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버.
  8. 제7항에 있어서,
    상기 암호문을 정규화하는 것은, 상기 입력값의 암호문에 대하여 아래의 [수학식 1]에 따른 서로 다른 횟수(S)의 이동 연산을 수행하여 이동된 암호문들을 산출하고, 상기 입력값의 암호문의 이동 연산 예상 횟수와 상기 이동 연산 수행 횟수(S)가 서로 같은 경우에 대응되는 상기 이동된 암호문들 중 어느 하나를 정규화 암호문으로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버.
    [수학식 1]
    Figure pat00040

    length: 입력값의 암호문의 비트 길이
    S: 이동 연산 수행 횟수(정수)
  9. 제8항에 있어서,
    상기 정규화 암호문을 제곱 및 이동 연산하는 것은, 상기 정규화 암호문을 제곱 연산하고, 상기 제곱 연산이 수행된 정규화 암호문의 비트 길이/2번째 자리수의 값이 1인 경우 이를 상기 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하고, 상기 제곱 연산이 수행된 정규화 암호문을 2로 나누어 이동 연산하며, 상기 비트 길이/2번째 자리수의 값이 0인 경우 이를 정규화 암호문의 밑이 2인 로그값의 소수값(bi)으로 산출하는 것을 포함하는, 암호화된 데이터의 로그 연산 서버.
  10. 제9항에 있어서,
    상기 정규화 암호문의 로그값의 정수값은 상기 이동 연산 예상 횟수와 같은 것인, 암호화된 데이터의 로그 연산 서버.
  11. 제1항 내지 제5항에 따른 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
KR1020190143797A 2018-11-09 2019-11-11 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법 KR102213819B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180137544 2018-11-09
KR20180137544 2018-11-09

Publications (2)

Publication Number Publication Date
KR20200054117A true KR20200054117A (ko) 2020-05-19
KR102213819B1 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021256841A1 (ko) * 2020-06-15 2021-12-23 주식회사 크립토랩 동형 암호 시스템에 대한 시뮬레이션 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170122458A (ko) 2016-04-27 2017-11-06 서울대학교산학협력단 암호문의 크기가 감소되는 동형 암호화 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170122458A (ko) 2016-04-27 2017-11-06 서울대학교산학협력단 암호문의 크기가 감소되는 동형 암호화 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Aliasgari, Mehrdad, et al. "Secure Computation on Floating Point Numbers."(2012.12.10.)* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021256841A1 (ko) * 2020-06-15 2021-12-23 주식회사 크립토랩 동형 암호 시스템에 대한 시뮬레이션 장치 및 방법
US11750367B2 (en) 2020-06-15 2023-09-05 Crypto Lab Inc. Simulation device and method for homomorphic cryptosystem

Also Published As

Publication number Publication date
KR102213819B1 (ko) 2021-02-09

Similar Documents

Publication Publication Date Title
CN110768784B (zh) 密码传输方法、装置、计算机设备和存储介质
KR101393806B1 (ko) 다단계 물리적 복제 불가 함수 시스템
CN105122721A (zh) 针对加密数据的托管安全计算
JP6363032B2 (ja) 鍵付替え方向制御システムおよび鍵付替え方向制御方法
KR102550812B1 (ko) 동형 암호를 이용한 암호문 비교 방법 및 이를 수행하기 위한 장치
JP2016012111A (ja) 暗号処理方法、暗号処理装置、および暗号処理プログラム
Jayapandian et al. Secure and efficient online data storage and sharing over cloud environment using probabilistic with homomorphic encryption
KR20200070090A (ko) 암호문에 대한 비다항식 연산을 수행하는 장치 및 방법
KR102213835B1 (ko) 동형암호 기법으로 암호화된 데이터의 지수 함수 연산 서버 및 방법
JP6187624B1 (ja) 情報処理装置、情報処理方法及びプログラム
KR102213819B1 (ko) 동형암호 기법으로 암호화된 데이터의 로그 연산 서버 및 방법
EP2286610B1 (en) Techniques for peforming symmetric cryptography
Hamdi et al. An appropriate system for securing real-time voice communication based on ADPCM coding and chaotic maps
US9900146B2 (en) Encrypted text matching system, method, and computer readable medium
CN113347270B (zh) 一种网络传输文件防水平越权方法和装置
KR102522708B1 (ko) 동형 암호문에 대한 통계 연산 수행하는 장치 및 방법
KR102526114B1 (ko) 암호화 및 복호화를 위한 장치 및 방법
KR20230109526A (ko) 비트 단위 기반 완전동형암호를 이용한 멀티 팩터 인증 장치 및 방법
US11095429B2 (en) Circuit concealing apparatus, calculation apparatus, and program
KR20200131688A (ko) 비밀키 생성 장치 및 방법, 연산키 생성 장치 및 방법
Mushtaque et al. Implementation of new encryption algorithm with random key selection and minimum space complexity
KR20150101896A (ko) 인터클라우드 환경에서의 데이터 공유 시스템 및 공유 방법
KR20200089832A (ko) 신뢰기관이 없는 다중 클라이언트 환경의 순서 노출 암호화를 위한 장치 및 방법
CN110999205A (zh) 用于简档证书私有密钥或其他数据的封装的装置和方法
CN116455575B (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