KR20180083592A - 데이터 가산 장치 및 방법 - Google Patents
데이터 가산 장치 및 방법 Download PDFInfo
- Publication number
- KR20180083592A KR20180083592A KR1020170006069A KR20170006069A KR20180083592A KR 20180083592 A KR20180083592 A KR 20180083592A KR 1020170006069 A KR1020170006069 A KR 1020170006069A KR 20170006069 A KR20170006069 A KR 20170006069A KR 20180083592 A KR20180083592 A KR 20180083592A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- input
- exclusive
- addition
- carry
- Prior art date
Links
Images
Classifications
-
- 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/506—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
-
- 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/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/506—Indexing scheme relating to groups G06F7/506 - G06F7/508
- G06F2207/5063—2-input gates, i.e. only using 2-input logical gates, e.g. binary carry look-ahead, e.g. Kogge-Stone or Ladner-Fischer adder
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
데이터 가산 장치 및 방법이 개시된다. 본 발명의 일실시예에 따른 데이터 가산 방법은 데이터 가산 장치를 이용하는 방법에 있어서, 세 개 이상의 입력 데이터를 입력 받아 전(Full) 가산 연산을 수행하여 배타적 논리합 데이터와 논리곱 데이터를 산출하는 단계; 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터를 입력 우선 순위에 따라 상기 전 가산 연산을 수행하여 중간 논리합 데이터와 캐리 데이터를 산출하는 단계 및 상기 중간 논리합 데이터와 상기 캐리 데이터를 입력 받아 최종 논리합 데이터를 산출하는 코게-스톤(Kogge-Stone) 가산 연산을 수행하는 단계를 포함한다.
Description
본 발명은 클라우드 컴퓨팅 환경에서 완전동형암호로 암호화된 데이터를 실제 가산 연산을 수행 및 응용할 수 있도록 산술 가산기와 다수의 데이터를 가산할 때 적용할 수 있는 성능향상 기술에 관한 것이다.
클라우드 컴퓨팅 기술이 보편화 되면서 데이터 프라이버시가 중요해 지고 있다. 데이터 프라이버시의 보호를 위해 암호화 기술이 필요하지만 현재의 일반적인 암호화 기술들은 사용자의 요구기능을 수행하기 위해 복호화 과정을 거치기 때문에 데이터 프라이버시를 보장할 수 없다. 완전동형암호는 암호화된 자료를 복호화 하는 과정을 거치지 않고 암호화된 상태에서 내재된 평문에 대한 임의의 알고리즘을 수행할 수 있기 때문에 데이터 프라이버시 보호를 위해 대체 암호화 알고리즘으로 고려할 수 있다.
기존 암호화 알고리즘은 암호화된 상태에서 연산기능을 제공하지 않지만 완전동형암호의 경우 암호화된 상태에서 무제한적으로 임의의 연산이 가능하고 연산의 결과도 암호화된 상태로 제공된다. 이는 'Universal Computability'를 만족한다고 말할 수 있다. 사용자는 공개키로 암호화한 데이터를 서버로 전송하고, 서버는 전송받은 데이터를 복호화 없이 사용자가 요구한 연산을 수행할 수 있다. 서버는 사용자의 요구기능 수행 결과인 암호문을 사용자에게 전송하여 사용자는 개인키로 전송받은 암호문을 복호화 하면 사용자 자신이 원하는 결과를 알 수 있다. 또한 이 과정에서 서버는 사용자가 요구한 연산을 수행하기 위해 복호화를 하여 연산을 수행하는 것이 아닌 암호화된 상태에서 연산을 수행하기 때문에 데이터 프라이버시가 보장된다.
완전동형암호는 기계학습 분야의 응용 (암 진단, 질병 진단 등), 단순한 통계 (평균, 표준편차), 그 외 산술 연산이 필요한 프로토콜 등에 사용될 수 있다. 예를 들어 완전동형암호를 기계학습 분야에 응용한다면 학습 및 예측에 사용되는 데이터를 복호화 하지 않고 기계학습 분야에 적용 가능하므로 데이터 프라이버시가 필요한 암 진단, 질병 진단 등에 유용하게 쓰일 수 있다. 이러한 프라이버시 보호 기계학습 알고리즘 구현은 사용자의 데이터 프라이버시를 지키면서 사용자가 원하는 기계학습을 수행 할 수 있게 해준다.
위와 같은 프라이버시 보존 기계학습이나 통계, 검색 기능을 수행하기 위해서는 완전동형암호로 암호화된 데이터에 대한 가산 연산이 꼭 필요하다. 특히 프라이버시 보존 통계의 경우 다수의 데이터를 가산해야 하는 경우가 있다. 이 경우 일반적인 형태의 가산 알고리즘을 완전동형암호 알고리즘에 적용할 경우 가산기 자체의 복잡도로 인하여 수행시간이 오래 걸릴 뿐만 아니라 Recryption를 여러 번 수행하여 많은 오버헤드가 발생하는 문제점이 있다.
한편, 한국공개특허 제 10-2014-0096588 호“ 복수 데이터 형식을 지원하는 가산기 및 그 가산기를 이용한 복수 데이터 형식의 가감 연산 지원 방법”는 캐리 전달 제어를 통한 복수 데이터 형식을 지원하는 가산기 및 그 가산기를 이용한 복수 데이터 형식의 가감 연산 지원 방법에 관하여 개시하고 있다.
본 발명은 다수의 데이터를 가산할 때 발생하는 오버헤드를 개선하기 위한 가산기와 가산 연산 알고리즘을 제공하는 것을 목적으로 한다.
또한, 본 발명은 완전동형암호로 암호화된 데이터를 가산하기 위한 가산 연산 알고리즘을 제공하여 bitwise-AND 연산의 depth를 감소시키는 것을 목적으로 한다.
또한, 본 발명은 프라이버시 보존 기계학습이나 프라이버시 보존 통계 그리고 프라이버시 보존 산술연산 등이 필요한 프로토콜에 적용하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 데이터 가산 방법은 데이터 가산 장치를 이용하는 방법에 있어서, 세 개 이상의 입력 데이터를 입력 받아 전(Full) 가산 연산을 수행하여 배타적 논리합 데이터와 논리곱 데이터를 산출하는 단계; 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터를 입력 우선 순위에 따라 상기 전 가산 연산을 수행하여 중간 논리합 데이터와 캐리 데이터를 산출하는 단계 및 상기 중간 논리합 데이터와 상기 캐리 데이터에 대한 최종 논리합 데이터를 산출하는 코게-스톤(Kogge-Stone) 가산 연산을 수행하는 단계를 포함한다.
이 때, 입력 데이터는 비트의 배타적 논리합 연산(bitwise-XOR)과 비트의 논리곱 연산(bitwise-AND)을 이용하여 범용 계산 가능성(Universal Computability)을 만족하는 완전동형암호(Fully Homomorphic Encryption)로 암호화된 데이터에 상응할 수 있다.
이 때, 상기 전가산 연산은 상기 논리곱 데이터 및 캐리 데이터가 포함하는 비트들을 한 칸씩 상위 비트로 이동(Shift) 시킬 수 있다.
이 때, 상기 중간 논리합 데이터와 캐리 데이터를 출력하는 단계는 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 입력 우선 순위를 설정하는 단계 및 상기 입력 우선 순위에 기반하여 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 개수가 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산 연산을 수행하는 단계를 포함할 수 있다.
이 때, 상기 입력 우선 순위를 설정하는 단계는 제1 순위를 상기 입력 데이터, 제2 순위를 상기 배타적 논리합 데이터 및 제3 순위를 상기 논리곱 데이터로 상기 입력 우선 순위를 설정할 수 있다.
이 때, 상기 입력 우선 순위를 설정하는 단계는 상기 입력 데이터는 데이터 입력 시간, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터는 데이터 생성 시간에 기반하여 동일한 종류의 데이터에 대한 상기 입력 우선 순위를 설정할 수 있다.
이 때, 상기 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산 연산을 수행하는 단계는 상기 입력 우선 순위에 따라 하나 이상의 입력 데이터, 하나 이상의 배타적 논리합 데이터 및 하나 이상의 논리곱 데이터를 세 개씩 그룹화 할 수 있다.
이 때, 상기 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산 연산을 수행하는 단계는 상기 입력 우선 순위에 따라 세 개씩 그룹화된 데이터에 대한 상기 전 가산 연산을 하나의 배타적 논리합 데이터와 하나의 논리곱 데이터가 산출될 때까지 수행할 수 있다.
이 때, 상기 기설정된 데이터 개수는 상기 입력 데이터의 개수가 '0', 상기 배타적 논리합 데이터의 개수가 '1' 및 상기 논리곱 데이터의 개수가 '1'에 상응할 수 있다.
이 때, 상기 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산 연산을 수행하는 단계는 상기 기설정된 데이터 개수를 만족하는 경우, 상기 하나의 배타적 논리합 데이터를 상기 중간 논리합 데이터로 출력하고, 상기 하나의 논리곱 데이터를 상기 캐리 데이터로 출력할 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 데이터 가산 장치는 세 개 이상의 데이터를 입력 받아 배타적 논리합 데이터와 논리곱 데이터를 산출하는 전(Full) 가산 연산을 수행하는 전 가산부; 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 입력 우선 순위를 설정하고, 상기 전 가산 연산을 요청하여 중간 논리합 데이터와 캐리 데이터를 출력하도록 상기 전 가산부를 제어하는 연산 제어부 및 상기 중간 논리합 데이터와 상기 캐리 데이터를 이용하여 최종 논리합 데이터를 산출하는 코게-스톤(Kogge-Stone) 가산 연산을 수행하는 코게-스톤 가산부를 포함한다.
본 발명은 다수의 데이터를 가산할 때 발생하는 오버헤드를 개선하기 위한 가산기와 가산 연산 알고리즘을 제공할 수 있다.
또한, 본 발명은 완전동형암호로 암호화된 데이터를 가산하기 위한 가산 연산 알고리즘을 제공하여 bitwise-AND 연산의 depth를 감소시킬 수 있다.
또한, 본 발명은 프라이버시 보존 기계학습이나 프라이버시 보존 통계 그리고 프라이버시 보존 산술연산 등이 필요한 프로토콜에 적용할 수 있다.
도 1은 본 발명의 일실시예에 따른 데이터 가산 장치를 나타낸 블록도이다.
도 2는 본 발명의 일실시예에 따른 전 가산기와 코게-스톤 가산기를 이용한 데이터 가산 과정을 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따른 전 가산기를 나타낸 도면이다.
도 4는 본 발명의 일실시예에 따른 데이터 가산 방법을 나타낸 동작흐름도이다.
도 5는 도 4에 도시된 중간 논리합 데이터 및 캐리 데이터 산출 단계의 일 예를 세부적으로 나타낸 동작흐름도이다.
도 6 내지 도 9는 본 발명의 일실시예에 따른 전 가산기의 데이터 가산 알고리즘을 나타낸 도면이다.
도 10 내지 도 12는 본 발명의 일실시예에 따른 데이터 가산 알고리즘의 연산 과정 및 결과를 나타낸 도면이다.
도 13은 본 발명의 일실시예에 따른 코게-스톤 가산기를 나타낸 도면이다.
도 14 내지 도 18은 본 발명의 일실시예에 따른 코게-스톤 가산기의 의사 코드를 나타낸 도면이다.
도 19 내지 도 27은 본 발명의 일실시예에 따른 코게-스톤 가산기의 데이터 가산 알고리즘을 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 전 가산기와 코게-스톤 가산기를 이용한 데이터 가산 과정을 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따른 전 가산기를 나타낸 도면이다.
도 4는 본 발명의 일실시예에 따른 데이터 가산 방법을 나타낸 동작흐름도이다.
도 5는 도 4에 도시된 중간 논리합 데이터 및 캐리 데이터 산출 단계의 일 예를 세부적으로 나타낸 동작흐름도이다.
도 6 내지 도 9는 본 발명의 일실시예에 따른 전 가산기의 데이터 가산 알고리즘을 나타낸 도면이다.
도 10 내지 도 12는 본 발명의 일실시예에 따른 데이터 가산 알고리즘의 연산 과정 및 결과를 나타낸 도면이다.
도 13은 본 발명의 일실시예에 따른 코게-스톤 가산기를 나타낸 도면이다.
도 14 내지 도 18은 본 발명의 일실시예에 따른 코게-스톤 가산기의 의사 코드를 나타낸 도면이다.
도 19 내지 도 27은 본 발명의 일실시예에 따른 코게-스톤 가산기의 데이터 가산 알고리즘을 나타낸 도면이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 데이터 가산 장치를 나타낸 블록도이다.
도 1을 참조하면 본 본 발명의 일실시예에 따른 데이터 가산 장치는 전 가산부(110), 연산 제어부(120) 및 코게-스톤 가산부(130)를 포함한다.
전 가산부(110)는 세 개 이상의 데이터를 입력 받아 배타적 논리합 데이터와 논리곱 데이터를 산출하는 전(Full) 가산 연산을 수행할 수 있다.
이 때, 전 가산부(110)는 전 가산기(Full Adder)를 포함할 수 있다.
이 때, 상기 전가산 연산은 상기 논리곱 데이터 및 캐리 데이터가 포함하는 비트들을 한 칸씩 상위 비트로 이동(Shift) 시킬 수 있다.
연산 제어부(120)는 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 입력 우선 순위를 설정하고, 상기 전 가산 연산을 요청하여 중간 논리합 데이터와 캐리 데이터를 출력하도록 상기 전 가산부를 제어할 수 있다.
이 때, 연산 제어부(120)는 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 입력 우선 순위를 설정할 수 있다.
이 때, 연산 제어부(120)는 제1 순위를 상기 입력 데이터, 제2 순위를 상기 배타적 논리합 데이터 및 제3 순위를 상기 논리곱 데이터로 상기 입력 우선 순위를 설정할 수 있다.
이 때, 연산 제어부(120)는 상기 입력 데이터는 데이터 입력 시간, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터는 데이터 생성 시간에 기반하여 동일한 종류의 데이터에 대한 상기 입력 우선 순위를 설정할 수 있다.
이 때, 연산 제어부(120)는 상기 입력 우선 순위에 기반하여 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 개수가 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산부(110)에 전 가산 연산을 요청할 수 있다.
이 때, 상기 기설정된 데이터 개수는 상기 입력 데이터의 개수가 '0', 상기 배타적 논리합 데이터의 개수가 '1' 및 상기 논리곱 데이터의 개수가 '1'에 상응할 수 있다.
이 때, 연산 제어부(120)는 상기 입력 우선 순위에 따라 하나 이상의 입력 데이터, 하나 이상의 배타적 논리합 데이터 및 하나 이상의 논리곱 데이터를 세 개씩 그룹화 할 수 있다.
이 때, 연산 제어부(120)는 상기 입력 우선 순위에 따라 세 개씩 그룹화된 데이터에 대한 상기 전 가산 연산을 하나의 배타적 논리합 데이터와 하나의 논리곱 데이터가 산출될 때까지 전 가산부(110)에 전 가산 연산을 요청할 수 있다.
이 때, 연산 제어부(120)는 상기 기설정된 데이터 개수를 만족하는 경우, 상기 하나의 배타적 논리합 데이터를 상기 중간 논리합 데이터로 출력하고, 상기 하나의 논리곱 데이터를 상기 캐리 데이터로 출력할 수 있다.
코게-스톤 가산부(130)는 상기 중간 논리합 데이터와 상기 캐리 데이터를 입력 받아 최종 논리합 데이터를 산출하는 코게-스톤(Kogge-Stone) 가산 연산을 수행할 수 있다.
이 때, 코게-스톤 가산부(130)는 코게-스톤 가산기(Kogge-Stone Adder)를 포함할 수 있다.
도 2는 본 발명의 일실시예에 따른 전 가산기와 코게-스톤 가산기를 이용한 데이터 가산 과정을 나타낸 도면이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 전 가산기와 코게-스톤 가산기를 이용한 데이터 가산 과정은 A, B, Cin에 각 대응되는 bit를 입력으로 전 가산기(Full-Adder) 회로(210)에 입력하고, 그 출력을 S 및 Cout 라고 둘 때, A+B+Cin의 가산 결과는 S+C의 가산 결과와 동일할 수 있다.
이 때, 본 발명은 S와 Cout 을
코게-스톤 가산기(Kogge-Stone Adder)(220)에 입력하여 최종 논리합 데이터(Result)를 산출할 수 있다.
본 발명은 전 가산기를 이용한 가산 연산으로 종래 기술에 비해 연산 횟수를 줄일 수 있고, 전 가산기 연산은 bitwise-AND(논리곱) 연산이 1단계만 사용되기 때문에 전 가산기는 bitwise-AND 연산깊이를 1 소모하고, 코게-스톤 가산기는 bitwise-AND 연산 깊이를 7 소모하므로, 총 bitwise-AND 연산깊이를 8 소모할 수 있다.
또한, 전체 n개의 입력에 대해 필요한 코게 스톤 가산기(Kogge-Stone Adder)(220) 연산 횟수는 1회로 줄어들 수 있다.
따라서, Recryption을 수행하지 않는 최대의 bitwise-AND 연산깊이가 24일 경우, 본 발명은 24 - 7(Kogge-Stone Adder가 소모하는 bitwise-AND 연산깊이) = 17 -> 217개 이하의 정수 암호문을 가산할 때 Recryption없이 수행 할 수 있어 효과적으로 가산 연산의 오버헤드를 감소시킬 수 있다.
도 3은 본 발명의 일실시예에 따른 전 가산기를 나타낸 도면이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 전 가산기는 A, B, Cin에 각 대응되는 bit를 입력하면, 논리합(S) 및 캐리(Cout)기 출력되는 것을 알 수 있다.
이 때, S는 비반전 논리합(XOR) 연산만 수행하므로 Recryption Depth가 감쇠하지 않는 것을 알 수 있다.
또한, Cout는 논리곱(AND) 연산이 병렬이기 때문에 Recryption Depth가 1만 감소하는 것을 알 수 있다.
도 4는 본 발명의 일실시예에 따른 데이터 가산 방법을 나타낸 동작흐름도이다.
도 4를 참조하면, 본 발명의 일실시예에 따른 데이터 가산 방법은 먼저 가산 연산을 수행하기 위한 입력 데이터를 입력 받을 수 있다(S310).
이 때, 단계(S310)는 세 개 이상의 입력 데이터를 전 가산부(110)에 입력할 수 있다.
이 때, 입력 데이터는 완전동형암호로 암호화된 데이터에 상응할 수 있다.
즉, 입력 데이터는 비트의 배타적 논리합 연산(bitwise-XOR)과 비트의 논리곱 연산(bitwise-AND)을 이용하여 범용 계산 가능성(Universal Computability)을 만족하는 완전동형암호(Fully Homomorphic Encryption)로 암호화된 데이터에 상응할 수 있다.
완전동형암호로 암호화된 데이터는 암호문에 내재되어 있는 평문들 사이에 bitwise-AND, bitwise-XOR연산을 암호화되어 있는 상태에서 수행가능하게 하고, 또한 이 연산들을 무제한적으로 사용이 가능하다. 위의 두 가지 연산을 제한 없이 사용할 수 있기 때문에 현존하는 모든 알고리즘을 구현 가능하게 하여 'Universal Computability'를 만족한다고 말할 수 있다. 평문 m1, m2, ..., mn을 완전동형암호를 사용하여 암호화한 암호문 c1, c2, ..., cn과 평문에 적용할 수 있는 함수 f가 있다고 가정할 때, 완전동형암호에서 제공하는 두 가지 연산을 바탕으로 f를 수행할 수 있는 회로(Circuit)를 구성할 수 있으며, 이는 m1, m2, ..., mn에 해당하는 암호문 c1, c2, ..., cn을 이용하여 f(c1, c2, ..., cn)을 수행할 수 있다는 것을 의미한다. 수행결과는 암호화 할 때와 같은 공개키로 암호화되어 있는 상태이며 공개키에 대응되는 개인키로 암호문을 복호화하면 평문 f(m1, m2, ..., mn)을 얻어 낼 수 있다.
이 때, 본 발명의 일실시예에 따른 완전동형암호 알고리즘은 표 1과 같이 나타낼 수 있다.
함수 | 설명 |
Setup(1λ): | 보안 파라메터 λ를 입력 받아 시스템 파라미터 params를 반환한다. |
KeyGenε(params) | 키(Key) 생성 알고리즘으로 비밀키 sk와 공개키 pk를 반환한다. (params: Setup 알고리즘의 결과물, ε:암호문을 입력으로 받아서 완전동형암호 알고리즘을 이용하여 수행할 수 있는 효율적인 함수의 클래스 Fε를 정의) |
Encryptε(params, pk, m) | 평문 m을 암호화한 암호문 c를 반환한다. 평문 m은 다수 개 비트의 벡터 형태를 가질 수 있다. |
Decryptε(params, sk, c) | 암호문 c를 sk를 사용하여 복호화한 평문 m을 반환한다. |
Encrypted_XORε(params, pk, c1, c2) | 암호문 c1, c2를 입력 받아 각 암호문에 내재되어있는 평문들의 XOR 연산을 수행하고 그 결과인 암호문 c를 반환한다. c1과 c2가 비트열로 표현될 경우 bitwise-XOR 연산을 수행한다. (이후 로 표기) |
Encrypted_Multiplyε(params, pk, c1, c2) | 암호문 c1, c2를 입력 받아 각 암호문에 내재되어있는 평문들의 AND(비트열인 경우 bitwise-AND) 연산을 수행하고 결과를 담은 암호문 c를 반환한다. (이후 ㆍ로 표기) |
Recryptionε(params, pk, c) | c가 특정 횟수 이상의 Encrypted_Multiply를 반복적으로 수행한 결과인 경우, c를 이용하여 암호화된 연산을 추가적으로 수행하기 위해 필요하다. 해당 횟수는 ε에 의해 정의된다. c와 같은 평문을 암호화 하고 있는 c'를 반환한다. |
Packε(params, pk, m0, m1,…,ml-1) | 다수의 작은 평문 공간에서 정의되는 평문들을 합하여 하나의 평문 m을 생성한다. |
UnPackε(params, pk, m) | 평문 공간에서 정의된 m에 엔코딩 되었던 m0, m1,…,ml-1을 반환한다. |
Shiftε(params, pk, c, t) | 암호문 내에 있는 평문들을 t개의 slot 만큼 좌측으로 이동시킨다. t는 -l ≤t≤l 의 범위를 갖는다. |
또한, 본 발명의 일실시예에 따른 데이터 가산 방법은 전 가산 연산을 수행하여 베타적 논리합 데이터 및 논리곱 데이터를 산출할 수 있다(S320).
즉, 단계(S320)는 세 개 이상의 입력 데이터에 대한 전(Full) 가산 연산을 수행하여 배타적 논리합 데이터와 논리곱 데이터를 산출할 수 있다.
이 때, 단계(S320)는 입력 데이터가 세 개 이상인 경우, 세 개씩 입력 데이터를 그룹화 할 수 있다.
이 때, 단계(S320)는 그룹화된 세 개의 입력 데이터를 전 가산부(110)에 입력하여 전 가산 연산을 수행할 수 있다.
이 때, 단계(S320)는 전 가산 연산을 수행하여 배타적 논리합 데이터와 논리곱 데이터를 산출할 수 있다.
이 때, 단계(S320)는 산출된 논리곱 데이터가 포함하는 비트들을 한 칸씩 상위 비트로 이동(Shift) 시킬 수 있다.
또한, 본 발명의 일실시예에 따른 데이터 가산 방법은 전 가산 연산을 수행하여 중간 논리합 데이터 및 캐리 데이터를 산출할 수 있다(S330).
즉, 단계(S330)는 먼저 입력 우선 순위를 설정할 수 있다(S331).
이 때, 단계(S331)는 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 입력 우선 순위를 설정할 수 있다.
이 때, 단계(S331)는 제1 순위를 상기 입력 데이터, 제2 순위를 상기 배타적 논리합 데이터 및 제3 순위를 상기 논리곱 데이터로 상기 입력 우선 순위를 설정할 수 있다.
이 때, 단계(S331)는 상기 입력 데이터는 데이터 입력 시간, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터는 데이터 생성 시간에 기반하여 동일한 종류의 데이터에 대한 상기 입력 우선 순위를 설정할 수 있다.
또한, 단계(S330)는 입력 우선 순위에 기반하여 전 가산 연산을 수행할 수 있다(S332).
이 때, 단계(S332)는 상기 입력 우선 순위에 따라 하나 이상의 입력 데이터, 하나 이상의 배타적 논리합 데이터 및 하나 이상의 논리곱 데이터를 세 개씩 그룹화 할 수 있다.
이 때, 단계(S332)는 상기 입력 우선 순위에 따라 세 개씩 그룹화된 데이터에 대한 상기 전 가산 연산을 하나의 배타적 논리합 데이터와 하나의 논리곱 데이터가 산출될 때까지 전 가산부(110)에 전 가산 연산을 요청할 수 있다.
예를 들어, 단계(S332)는 단계(S320)에서 6개의 입력 데이터가 전 가산 연산이 수행되면, 2개의 배타적 논리합 데이터와 2개의 논리곱 데이터가 산출 되므로, 2개의 베타적 논리합 데이터와 먼저 산출된 제1 논리곱 데이터를 제1 그룹으로 그룹화하여 전 가산 연산을 수행할 수 있다.
이 때, 제1 그룹에 대한 전 가산 연산 결과로 1개의 배타적 논리합 데이터와 1개의 논리곱 데이터, 상기 그룹화 되지 않은 제2 논리곱 데이터로 3개의 입력 데이터를 전 가산부(110)에 입력 하여 하나의 배타적 논리합 데이터와 하나의 논리곱 데이터를 산출할 수 있다.
또한, 단계(S330)는 전 가산 연산 수행된 데이터의 기설정된 데이터 개수가 만족하는 지 확인할 수 있다(S333).
즉, 단계(S333)는 상기 입력 우선 순위에 기반하여 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 개수가 기설정된 데이터 개수를 만족 할 때까지 전 가산 연산을 수행할 수 있다.
이 때, 상기 기설정된 데이터 개수는 상기 입력 데이터의 개수가 '0', 상기 배타적 논리합 데이터의 개수가 '1' 및 상기 논리곱 데이터의 개수가 '1'에 상응할 수 있다.
이 때, 단계(S333)는 기설정된 데이터 개수 중 어느 하나라도 만족하지 않는 경우, 단계(S332)로 되돌아가 입력 우선 순위에 따라 데이터를 세 개씩 그룹화 하여 전 가산 연산을 수행할 수 있다.
이 때, 단계(S333)는 기설정된 데이터 개수가 모두 만족하는 경우, 하나의 배타적 논리합 데이터를 중간 논리합 데이터로 출력하고, 하나의 논리곱 데이터를 캐리 데이터로 출력할 수 있다(S334).
또한, 본 발명의 일실시예에 따른 데이터 가산 방법은 코게-스톤 가산 연산을 수행할 수 있다(S340).
즉, 단계(S340)는 상기 중간 논리합 데이터와 상기 캐리 데이터에 대한 최종 논리합 데이터를 산출하는 코게-스톤(Kogge-Stone) 가산 연산을 수행할 수 있다.
도 5는 도 4에 도시된 중간 논리합 데이터 및 캐리 데이터 산출 단계의 일 예를 세부적으로 나타낸 동작흐름도이다.
도 5를 참조하면, 단계(S330)는 먼저 입력 우선 순위를 설정할 수 있다(S331).
이 때, 단계(S331)는 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 입력 우선 순위를 설정할 수 있다.
이 때, 단계(S331)는 제1 순위를 상기 입력 데이터, 제2 순위를 상기 배타적 논리합 데이터 및 제3 순위를 상기 논리곱 데이터로 상기 입력 우선 순위를 설정할 수 있다.
이 때, 단계(S331)는 상기 입력 데이터는 데이터 입력 시간, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터는 데이터 생성 시간에 기반하여 동일한 종류의 데이터에 대한 상기 입력 우선 순위를 설정할 수 있다.
또한, 단계(S330)는 입력 우선 순위에 기반하여 전 가산 연산을 수행할 수 있다(S332).
이 때, 단계(S332)는 상기 입력 우선 순위에 따라 하나 이상의 입력 데이터, 하나 이상의 배타적 논리합 데이터 및 하나 이상의 논리곱 데이터를 세 개씩 그룹화 할 수 있다.
이 때, 단계(S332)는 상기 입력 우선 순위에 따라 세 개씩 그룹화된 데이터에 대한 상기 전 가산 연산을 하나의 배타적 논리합 데이터와 하나의 논리곱 데이터가 산출될 때까지 전 가산부(110)에 전 가산 연산을 요청할 수 있다.
예를 들어, 단계(S332)는 단계(S320)에서 6개의 입력 데이터가 전 가산 연산이 수행되면, 2개의 배타적 논리합 데이터와 2개의 논리곱 데이터가 산출 되므로, 2개의 베타적 논리합 데이터와 먼저 산출된 제1 논리곱 데이터를 제1 그룹으로 그룹화하여 전 가산 연산을 수행할 수 있다.
이 때, 제1 그룹에 대한 전 가산 연산 결과로 1개의 배타적 논리합 데이터와 1개의 논리곱 데이터, 상기 그룹화 되지 않은 제2 논리곱 데이터로 3개의 입력 데이터를 전 가산부(110)에 입력 하여 하나의 배타적 논리합 데이터와 하나의 논리곱 데이터를 산출할 수 있다.
또한, 단계(S330)는 전 가산 연산 수행된 데이터의 기설정된 데이터 개수가 만족하는 지 확인할 수 있다(S333).
즉, 단계(S333)는 상기 입력 우선 순위에 기반하여 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 개수가 기설정된 데이터 개수를 만족 할 때까지 전 가산 연산을 수행할 수 있다.
이 때, 상기 기설정된 데이터 개수는 상기 입력 데이터의 개수가 '0', 상기 배타적 논리합 데이터의 개수가 '1' 및 상기 논리곱 데이터의 개수가 '1'에 상응할 수 있다.
이 때, 단계(S333)는 기설정된 데이터 개수 중 어느 하나라도 만족하지 않는 경우, 단계(S332)로 되돌아가 입력 우선 순위에 따라 데이터를 세 개씩 그룹화 하여 전 가산 연산을 수행할 수 있다.
이 때, 단계(S333)는 기설정된 데이터 개수가 모두 만족하는 경우, 하나의 배타적 논리합 데이터를 중간 논리합 데이터로 출력하고, 하나의 논리곱 데이터를 캐리 데이터로 출력할 수 있다(S334).
도 6 내지 도 9는 본 발명의 일실시예에 따른 전 가산기의 데이터 가산 알고리즘을 나타낸 도면이다.
도 6을 참조하면, A, B, C, D, E, F 6개의 입력 데이터가 전 가산기의 입력되는 것을 알 수 있다. 이 때, 입력 데이터는 A, B, C로 제1 그룹, D, E, F로 제 2그룹으로 그룹화 되어 각각 세 개씩 전 가산 연산이 수행되는 것을 알 수 있다.
이 때, 제1 그룹의 연산 결과는 S1 과 C1이 산출되는 것을 알 수 있다.
이 때, C1은 비트를 상위 비트로 이동(Shift)시켜 C1'이 생성되는 것을 알 수 있다.
또한 제2 그룹의 연산 결과는 S2 과 C2이 산출되는 것을 알 수 있다.
이 때, C2은 비트를 상위 비트로 이동(Shift)시켜 C2'이 생성되는 것을 알 수 있다.
도 7을 참조하면, 입력 우선 순위 설정에 따라 S1, S2, C1'이 그룹화 되어 전 가산 연산이 수행되는 것을 알 수 있다.
이 때, 연산 결과는 S3 과 C3이 산출되는 것을 알 수 있다.
이 때, C3은 비트를 상위 비트로 이동(Shift)시켜 C3'이 생성되는 것을 알 수 있다.
도 8을 참조하면, 산출된 S3, C3', C2'를 입력 데이터로 하여 전 가산 연산이 수행되는 것을 알 수 있다.
이 때, 최종 연산 결과는 S4 과 C4이 산출되는 것을 알 수 있다.
이 때, C4은 비트를 상위 비트로 이동(Shift)시켜 C4'이 생성되는 것을 알 수 있다.
도 9를 참조하면, 전 가산 연산을 통해 산출된 중간 논리합 데이터(S4)와 캐리 데이터(C4')를 코게-스톤 가산기에 입력하면 최종 논리합 데이터가 산출되는 것을 알 수 있다.
도 10 내지 도 12는 본 발명의 일실시예에 따른 데이터 가산 알고리즘의 연산 과정 및 결과를 나타낸 도면이다.
도 10을 참조하면, 32bit 입력 데이터 6개를 가산하는 경우를 나타낸 것을 알 수 있다.
이 때, 6개의 입력 데이터 가산은 입력 우선 순위에 따라 Level 1부터 Level 3의 전가산 연산이 수행되고, Final step의 코게-스톤 가산 연산이 수행되는 것을 알 수 있다.
Intel i7-6700 3.40GHz, 16.0GB RAM, Ubuntu 14.04 LTS 실험 환경에서 가산 연산을 수행하였고, 표 2와 같이 파라미터를 설정하였다.
속성 | 값 | 비고 |
Cyclotomic ring | m = 31755 = 5^2*31*41 | |
Lattice dimension | phi(m) = 24000 | |
plaintext space | p = 2, d = 20, GF(2^20) | |
number of slots | 1200 | 30개 단위로 총 40비트 사용 가능 |
security level | 93 | |
L, B | L = 25, B = 25 | |
maximum multiplicative circuit level that can be reached before first Recryptionion: 24(bitwise-AND 연산단계) |
상기 실험 환경에서 가산 연산을 수행하였을 때, Level 1부터 3까지 연산 시간은 약 10초가 소요되었고, Final step 연산 시간은 약 120초 소요 되었으므로, 최종 결과까지의 연산 시간은 약 130초가 소요된 것을 알 수 있다.
도 11을 참조하면, 32bit 입력 데이터 8개를 가산하는 경우를 나타낸 것을 알 수 있다.
이 때, 8개의 입력 데이터 가산은 입력 우선 순위에 따라 Level 1부터 Level 3의 전가산 연산이 수행되고, Final step의 코게-스톤 가산 연산이 수행되는 것을 알 수 있다.
상기 실험 환경에서 가산 연산을 수행하였을 때, Level 1부터 3까지 연산 시간은 약 13초가 소요되었고, Final step 연산 시간은 약 120초 소요 되었으므로, 최종 결과까지의 연산 시간은 약 133초가 소요된 것을 알 수 있다.
도 12를 참조하면, 32bit 입력 데이터 16개를 가산하는 경우를 나타낸 것을 알 수 있다.
이 때, 16개의 입력 데이터 가산은 입력 우선 순위에 따라 Level 1부터 Level 3의 전가산 연산이 수행되고, Final step의 코게-스톤 가산 연산이 수행되는 것을 알 수 있다.
상기 실험 환경에서 가산 연산을 수행하였을 때, Level 1부터 3까지 연산 시간은 약 37초가 소요되었고, Final step 연산 시간은 약 120초 소요 되었으므로, 최종 결과까지의 연산 시간은 약 157초가 소요된 것을 알 수 있다.
도 13은 본 발명의 일실시예에 따른 코게-스톤 가산기를 나타낸 도면이다.
도 13을 참조하면, 코게-스톤 가산기(Kogge-Stone Adder)는 가산 연산을 수행하기 위해 일반적으로 선택되는 고성능 가산기이고, Parallel Prefix Adder의 한 종류이다. Brent-Kung Adder나 Han Carlson Adder등과 같은 다른 Prefix Adder보다 출력되는 노드의 개수가 많아 데이터의 저장 공간이 많이 필요하다는 단점이 있지만 각 연산 단계마다 일정한 규칙을 갖고 있어 일반화가 쉽다. 또한 최소한의 bitwise-AND 연산을 수행하기 때문에 최적의 연산 단계로 가산 연산 수행이 가능하고 이는 완전동형암호 알고리즘으로 구현 시 빠른 속도로 가산 연산을 수행할 수 있다는 것을 의미한다.
최초단계에서는 각 bit의 P와 G를 구한다. 1단계의 G는 최초단계 G와 최초단계의 하나 하위 비트 G를 bitwise-XOR 연산을 수행하고 P는 최초단계 P와 최초단계의 하나 하위 비트 P를 bitwise-XOR 연산을 수행한다. 1단계에서 구한 G는 Cin과 C0 2bit를 커버한다. 따라서 2개 하위 비트와 현재 비트를 연산해준다. 그러면 이번 2단계에서 구한 G는 4개의 bit를 커버하게 된다. 이렇게 구한 Cin, C0, C1, C2, C3를 최초단계에서 구한 P0 와 bitwise-XOR 연산을 해 주면 가산 연산의 결과를 얻을 수 있다.
완전동형암호 환경에서 이러한 Adder를 구현할 때 최적화 문제는 중간 연산자 블록의 일반화 정도와 가산 회로의 논리적 깊이(Logical Depth, bitwise-AND 연산단계)를 최대한 줄여서 가장 오버헤드가 큰 Recryption 연산을 최소화 하는 것이 중요하다.
도 14 내지 도 18은 본 발명의 일실시예에 따른 코게-스톤 가산기의 의사 코드를 나타낸 도면이다.
도 14 내지 도 18을 참조하면, 완전동형암호 환경에서 개발한 코게-스톤 가산기(Kogge-Stone Adder)의 기능별 알고리즘을 의사코드로 표현한 그림이다.
코게-스톤 가산기(Kogge-Stone Adder)는 산술 가산기 내부에서 발생하는 캐리(Carry)를 동시에 계산하며 최적 단계의 회로를 구성할 수 있다. 이 때, 코게-스톤 가산기는 중간 연산값(Prefix)의 연산량이 많아진다는 단점이 있다. 그러나 완전동형암호를 적용할 때 산술 가산기의 최적화 문제는 중간 캐리를 계산하여 저장되는 노드를 구하는 알고리즘을 얼마나 일반화 시킬 수 있는지에 대한 문제와 동일하다. 또한, 완전동형암호 적용 시 bitwise-AND의 연산이 가장 오버헤드가 큰 Recryption 연산의 수행 기준이 되기 때문에, 회로에서 bitwise-AND 연산의 레벨(Level)의 최소화가 중요하다.
따라서, 코게-스톤 가산기는 Prefix(PiPrev, GiPrev, Pi, Gi, G, P)의 연산의 규칙성과 최적 연산 단계를 갖는 다는 측면에서 도 14 내지 도 18의 알고리즘을 코게-스톤 가산기에 이용하면 완전동형암호로 암호화된 데이터를 가산 연산 하는데 있어서, 유리하게 적용될 수 있다.
도 19 내지 도 27은 본 발명의 일실시예에 따른 코게-스톤 가산기의 데이터 가산 알고리즘을 나타낸 도면이다.
도 19 내지 도 27을 참조하면, 코게-스톤 가산기의 데이터 가산 알고리즘을 완전동형암호를 바탕으로 적용한 알고리즘이다. 도 14 내지 도 18에서 계산하는 Prefix들은 InitalPrefix, LevelEval, OUT 함수를 통해 구하며, Assign 함수는 암호문 q-slot 사이의 데이터 사이의 위치이동 및 저장을 위한 함수이다. 도 19 내지 도 27의 데이터 가산 알고리즘은 4bit 코게 스톤 가산기(Kogge-Stone Adder)의 전체 흐름 및 세부 알고리즘을 나타낸 것을 알 수 있다.
도 19를 참조하면, 두 개의 입력 데이터 A, B를 각각 Half-Adder(bitwise-AND, bitwise-XOR)연산을 통해 G0과 P0을 구하는 것을 알 수 있다.
도 20을 참조하면, G0과 P0 그리고 F0(Carry in)을 통해 제일 첫 번째 자리의 확정된 Carry F1을 구하는 것을 알 수 있다.
도 21을 참조하면, 다음 레벨의 P와 G를 구하기 위해 G0과 P0을 상위비트로 한 비트씩 이동시키는 것을 알 수 있다.
도 22를 참조하면, 상위비트로 이동시킨 G0'과 P0', 이동시키기 전의 G0과 P0로 위와 같은 연산을 하여 다음 단계의 G1과 P1을 구하는 것을 알 수 있다.
도 23을 참조하면, G1과 P1 그리고 확정된 Carry F0, F1을 연산하여 두 번째, 세 번째의 확정된 Carry를 구하는 것을 알 수 있다.
도 24 및 도 25를 참조하면, 다시 다음 단계의 G와 P를 구하기 위해 도 21에 도시된 ③번 과정, 도 22에 도시된 ④번 과정을 반복하는 것을 알 수 있다.
도 26 및 도 27을 참조하면, q bit의 데이터 2개를 가산할 때 이렇게 계속 반복하여 최종 확정 캐리인 F0 ~ Fq를 구할 때까지 반복한 뒤 A와 B의 bitwise_XOR 연산 결과인 P0와 bitwise-XOR 연산을 하면 최종 가산 결과인 Result를 산출할 수 있는 것을 알 수 있다.
이 때, 도 15에 도시된 InitalPrefix Function은 도 19에 도시된 ①번 과정과 같고, 도 17에 도시된 LevelEval Function은 도 20 내지 도 22에 도시된 ②, ③, ④ 와 같고, 도 16에 도시된 Out Function은 도 27에 도시된 ⑨번 과정과 같은 것을 알 수 있다.
본 발명은 클라우드 환경에서 완전동형암호를 적용하기 적합한 산술 가산기와 다수개의 데이터를 빠르게 가산하는 메커니즘을 제공할 수 있다.
본 발명에서 제안하는 산술 가산기는 SIMD(Single Instruction for Multiple Data)를 적용하기 알맞고, 회로를 기반으로 하는 연산에 적용할 수 있다.
종래의 완전동형암호를 이용한 가산연산에 관련된 연구들은 가산 연산은 가능하지만 'Universal Computability'를 만족하지 않거나, 제한된 조건에서만 수행 가능하거나, 효율적이지 않았다. 그러나 본 발명은 상기 단점을 개선할 수 있다.
또한, 본 발명은 오버헤드가 적은 전 가산기(Full-Adder)를 사용하여 bitwise-AND 연산 깊이를 줄일 수 있다. 이 경우 N개의 데이터를 한 연산 단계마다 bitwise-AND 연산 깊이를 1 소모하고 N/2+1개로 줄일 수 있다. 이를 반복하여 최종적으로 2(k-1) < N < 2k 를 만족하는 k만큼의 bitwise-AND 연산깊이만을 소모하여 2개의 데이터로 줄일 수 있어서 가산 연산 자체의 수행 시간 및 Recryption연산을 크게 줄일 수 있다는 장점이 있다. 이 때, 본 발명은 3개 이상 1024개 이하의 데이터를 가산할 때 종래 기술에 비해 최소 약 2배에서 최대 약 646배까지 성능을 향상 시킬 수 있다.
나아가, 본 발명은 최대 217개의 데이터를 가산할 때, Recryption 연산을 수행하지 않고 가산 연산을 수행할 수 있다.
또한, 본 발명은 가산연산만이 아니라 곱셈연산에도 사용될 수 있다. 본 발명에서의 두 수의 곱셈연산의 결과는 각 자리수의 부분 곱에 가산 연산을 수행한 결과와 같다. 또한, 현재 곱셈기의 속도는 부분 곱을 추가하고 가산하는 연산에 사용되는 덧셈기의 속도에 의해 제한되기 때문에, 본 발명의 데이터 가산 장치 및 방법을 사용하면 다수개의 데이터를 가산할 때 유리한 보다 빠른 곱셈 연산이 수행할 수 있다.
또한, 본 발명의 일실시예에 따른 데이터 가산 장치 및 방법을 기반으로 비교기(Comparator)를 구현 및 적용할 수도 있다.
또한, 본 발명은 향후 완전동형암호 환경에서 산술 연산 회로를 소프트웨어로 구현할 경우 기초자료로써 활용할 수 있으며, 향후 프라이버시 보존 기계학습이나 프라이버시 보존 통계 그리고 프라이버시 보존 산술연산 등이 필요한 프로토콜 등의 연구 및 개발에 유용하게 사용될 수도 있다.
이상에서와 같이 본 발명에 따른 데이터 가산 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
110: 전 가산부
120: 연산 제어부
130: 코게-스톤 가산부 210: 전 가산기(FULL ADDER)
220: 코게-스톤 가산기(KOGGE-STONE ADDER)
130: 코게-스톤 가산부 210: 전 가산기(FULL ADDER)
220: 코게-스톤 가산기(KOGGE-STONE ADDER)
Claims (11)
- 데이터 가산 장치를 이용하는 방법에 있어서,
세 개 이상의 입력 데이터를 입력 받아 전(Full) 가산 연산을 수행하여 배타적 논리합 데이터와 논리곱 데이터를 산출하는 단계;
상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터를 입력 우선 순위에 따라 상기 전 가산 연산을 수행하여 중간 논리합 데이터와 캐리 데이터를 산출하는 단계; 및
상기 중간 논리합 데이터와 상기 캐리 데이터를 입력 받아 최종 논리합 데이터를 산출하는 코게-스톤(Kogge-Stone) 가산 연산을 수행하는 단계;
를 포함하는 것을 특징으로 하는 데이터 가산 방법. - 청구항 1에 있어서,
상기 입력 데이터는
비트의 배타적 논리합 연산(bitwise-XOR)과 비트의 논리곱 연산(bitwise-AND)을 이용하여 범용 계산 가능성(Universal Computability)을 만족하는 완전동형암호(Fully Homomorphic Encryption)로 암호화된 데이터에 상응하는 것을 특징으로 하는 데이터 가산 방법. - 청구항 2에 있어서,
상기 전가산 연산은
상기 논리곱 데이터 및 캐리 데이터가 포함하는 비트들을 한 칸씩 상위 비트로 이동(Shift)시키는 것을 특징으로 하는 데이터 가산 방법. - 청구항 3에 있어서,
상기 중간 논리합 데이터와 캐리 데이터를 출력하는 단계는
상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 입력 우선 순위를 설정하는 단계; 및
상기 입력 우선 순위에 기반하여 상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 개수가 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산 연산을 수행하는 단계;
를 포함하는 것을 특징으로 하는 데이터 가산 방법. - 청구항 4에 있어서,
상기 입력 우선 순위를 설정하는 단계는
제1 순위를 상기 입력 데이터, 제2 순위를 상기 배타적 논리합 데이터 및 제3 순위를 상기 논리곱 데이터로 상기 입력 우선 순위를 설정하는 것을 특징으로 하는 데이터 가산 방법. - 청구항 5에 있어서,
상기 입력 우선 순위를 설정하는 단계는
상기 입력 데이터는 데이터 입력 시간, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터는 데이터 생성 시간에 기반하여 동일한 종류의 데이터에 대한 상기 입력 우선 순위를 설정하는 것을 특징으로 하는 데이터 가산 방법. - 청구항 6에 있어서,
상기 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산 연산을 수행하는 단계는
상기 입력 우선 순위에 따라 하나 이상의 입력 데이터, 하나 이상의 배타적 논리합 데이터 및 하나 이상의 논리곱 데이터를 세 개씩 그룹화 하는 것을 특징으로 하는 데이터 가산 방법. - 청구항 7에 있어서,
상기 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산 연산을 수행하는 단계는
상기 입력 우선 순위에 따라 세 개씩 그룹화된 데이터에 대한 상기 전 가산 연산을 하나의 배타적 논리합 데이터와 하나의 논리곱 데이터가 산출될 때까지 수행하는 것을 특징으로 하는 데이터 가산 방법. - 청구항 8에 있어서,
상기 기설정된 데이터 개수는
상기 입력 데이터의 개수가 '0', 상기 배타적 논리합 데이터의 개수가 '1' 및 상기 논리곱 데이터의 개수가 '1'에 상응하는 것을 특징으로 하는 데이터 가산 방법. - 청구항 9에 있어서,
상기 기설정된 데이터 개수를 만족 할 때까지 상기 전 가산 연산을 수행하는 단계는
상기 기설정된 데이터 개수를 만족하는 경우, 상기 하나의 배타적 논리합 데이터를 상기 중간 논리합 데이터로 출력하고, 상기 하나의 논리곱 데이터를 상기 캐리 데이터로 출력하는 것을 특징으로 하는 데이터 가산 방법. - 세 개 이상의 데이터를 입력 받아 배타적 논리합 데이터와 논리곱 데이터를 산출하는 전(Full) 가산 연산을 수행하는 전 가산부;
상기 입력 데이터, 상기 배타적 논리합 데이터 및 상기 논리곱 데이터의 입력 우선 순위를 설정하고, 상기 전 가산 연산을 요청하여 중간 논리합 데이터와 캐리 데이터를 출력하도록 상기 전 가산부를 제어하는 연산 제어부; 및
상기 중간 논리합 데이터와 상기 캐리 데이터를 입력 받아 최종 논리합 데이터를 산출하는 코게-스톤(Kogge-Stone) 가산 연산을 수행하는 코게-스톤 가산부;
를 포함하는 것을 특징으로 하는 데이터 가산 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170006069A KR101923293B1 (ko) | 2017-01-13 | 2017-01-13 | 데이터 가산 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170006069A KR101923293B1 (ko) | 2017-01-13 | 2017-01-13 | 데이터 가산 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180083592A true KR20180083592A (ko) | 2018-07-23 |
KR101923293B1 KR101923293B1 (ko) | 2018-11-28 |
Family
ID=63103020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170006069A KR101923293B1 (ko) | 2017-01-13 | 2017-01-13 | 데이터 가산 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101923293B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102491902B1 (ko) * | 2019-11-29 | 2023-01-27 | 고려대학교 산학협력단 | 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법 |
KR102491894B1 (ko) * | 2019-11-29 | 2023-01-27 | 고려대학교 산학협력단 | 완전동형암호 기법으로 암호화된 데이터의 로지스틱 회귀 분석 연산 장치 및 방법 |
KR20230026774A (ko) | 2021-08-18 | 2023-02-27 | 고려대학교 산학협력단 | 암호화된 데이터상에서 비트 단위 기반 완전동형암호 기법을 이용한 질병 진단 장치 및 방법 |
-
2017
- 2017-01-13 KR KR1020170006069A patent/KR101923293B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR101923293B1 (ko) | 2018-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | DeepPAR and DeepDPA: privacy preserving and asynchronous deep learning for industrial IoT | |
Liu et al. | Image encryption algorithm based on hyper-chaotic system and dynamic S-box | |
US11546135B2 (en) | Key sequence generation for cryptographic operations | |
CN105099672A (zh) | 混合加密方法及实现该方法的装置 | |
WO2016173646A1 (en) | Method and system for providing homomorphically encrypted data on a client | |
US20190044697A1 (en) | Methods and systems for enhanced data-centric homomorphic encryption searching using geometric algebra | |
KR100800468B1 (ko) | 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법 | |
Agrawal et al. | Elliptic curve cryptography with hill cipher generation for secure text cryptosystem | |
KR101923293B1 (ko) | 데이터 가산 장치 및 방법 | |
KR20220052858A (ko) | Aes 카운터 모드 암호화에서 쿼시그룹 연산으로 암호화된 정수들을 가산하고 비교하기 위한 시스템 및 방법 | |
CN115905710A (zh) | 一种匿踪查询***、方法、装置、电子设备及存储介质 | |
Hamdi et al. | Hybrid encryption algorithm (HEA) based on chaotic system | |
CN115865311B (zh) | 一种恒定轮次安全多方计算协议的优化方法和*** | |
Rajasekar et al. | Design and implementation of power and area optimized AES architecture on FPGA for IoT application | |
Shantha et al. | Analysis and implementation of ECC algorithm in lightweight device | |
Zong et al. | Secure outsourced computation of matrix determinant based on fully homomorphic encryption | |
KR20000035057A (ko) | 능률적인 블록 암호화 방법 | |
Rentería-Mejía et al. | Lattice-based cryptoprocessor for CCA-secure identity-based encryption | |
Gangadari et al. | FPGA implementation of compact S-box for AES algorithm using composite field arithmetic | |
JP5436373B2 (ja) | 秘匿性増強処理演算装置およびこれを備えた量子暗号通信端末 | |
Schneider | Lean and fast secure multi-party computation: Minimizing communication and local computation using a helper | |
US20100088526A1 (en) | System and Method for Modular Exponentiation | |
RU2188513C2 (ru) | Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки | |
Mahmood et al. | MATLAB Implementation of 128-key length SAFER+ Cipher System | |
Lee et al. | Optimization of ARIA Block-Cipher Algorithm for Embedded Systems with 16-bits Processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |