KR100995123B1 - 암호화 방법, 클라이언트의 데이터 처리 방법 - Google Patents

암호화 방법, 클라이언트의 데이터 처리 방법 Download PDF

Info

Publication number
KR100995123B1
KR100995123B1 KR1020080004939A KR20080004939A KR100995123B1 KR 100995123 B1 KR100995123 B1 KR 100995123B1 KR 1020080004939 A KR1020080004939 A KR 1020080004939A KR 20080004939 A KR20080004939 A KR 20080004939A KR 100995123 B1 KR100995123 B1 KR 100995123B1
Authority
KR
South Korea
Prior art keywords
client
query
final
cipher text
server
Prior art date
Application number
KR1020080004939A
Other languages
English (en)
Other versions
KR20090079028A (ko
Inventor
서재홍
천정희
Original Assignee
재단법인서울대학교산학협력재단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 재단법인서울대학교산학협력재단 filed Critical 재단법인서울대학교산학협력재단
Priority to KR1020080004939A priority Critical patent/KR100995123B1/ko
Publication of KR20090079028A publication Critical patent/KR20090079028A/ko
Application granted granted Critical
Publication of KR100995123B1 publication Critical patent/KR100995123B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3325Reformulation based on results of preceding query
    • G06F16/3326Reformulation based on results of preceding query using relevance feedback from the user, e.g. relevance feedback on documents, documents sets, document terms or passages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/189Automatic justification

Abstract

암호화 방법이 개시된다. 상기 암호화 방법은 복수의 평문들을 포함하는 평문 집합을 암호화하고 복수의 암호문들을 포함하는 암호문 집합을 생성하는 단계, 상기 암호문 집합을 제1집합과 제2집합으로 분리하는 단계 및 상기 제1집합의 위치와 상기 제2집합의 위치를 서로 바뀌어 데이터베이스에 저장하는 단계를 포함한다.
OPES, ORES, 암호화, 복호화

Description

암호화 방법, 클라이언트의 데이터 처리 방법{Methods and apparatuses for cipher indexing in order to effective search of ciphered-database}
본 발명은 암호화 기술에 관한 것으로, 특히 암호화된 데이터베이스의 효과적인 검색을 위한 암호화 인덱싱 방법과 그 장치에 관한 것이다.
정보의 비밀성을 제공하기 위하여 암호화 알고리즘의 사용이 필수적이다. 안전한 암호화 알고리즘을 사용하면, 암호문을 보고 원래의 데이터에 대한 정보를 알아낼 수 없다.
평문 집합이 크기 비교 가능한 숫자로 구성된 경우, 평문의 크기 순서를 유지하는 암호화 기법은 순서 유지 기능이 있는 암호화 기법(Order Preserving Encryption Scheme(OPES))이라 한다. OPES를 DB 암호화에 사용하는 경우, 암호화된 상태에서 평문의 암호문에 대한 검색이 용이하다.
OPES의 경우, 암호문의 순서는 평문의 순서를 유지한다. 따라서, 암호문은 하나의 직선 위에 평문의 순서대로 나열될 수 있다. 만약, 공격자(adversary)가 평문의 빈도(frequency)를 알고 있는 경우, 상기 공격자는 상기 빈도대로 평문을 직선 위에 나열하여 그들의 순서로부터 평문과 암호문 사이의 대응 관계를 알 수 있 다. 즉, 공격자는 거의 모든 암호문을 복호화할 수 있다. 이것이 OPES의 보안성에서 가장 큰 취약점이다. OPES의 보안성의 취약성은 암호문의 순서가 평문의 순서를 그대로 유지하지 때문에 발생한다. 그러나, 이러한 OPES의 순서 유지 기능은 질의나 검색을 용이하게 하는 장점이 있다.
OPES을 적용한 데이터베이스 암호화 기법은 기존 데이터의 순서를 그대로 유지하므로, 구간 질의(range query)에 있어서 암호화하지 않은 데이터베이스와 같은 효율을 보장한다.
그러나, 데이터가 공격자로부터 공격을 받았을 때, 데이터 자체는 암호화되어 있으므로 상기 공격자가 복호화 키를 모른다면 암호화된 데이터를 복호화할 수 없지만, 상기 암호화된 데이터의 순서가 평문의 크기 순서를 알려주므로, 상기 공격자가 평문의 분포(또는 빈도)를 알거나 또는 일반적으로 암호화 알고리즘의 보안성에서 요구되는 평문에 대한 공격이상의 공격이 가능한 공격자로부터 공격을 받는 경우 상기 OPES는 더 이상 안전한 암호화 알고리즘이 될 수 없다.
따라서, 순서 유지 기능이 있으면서도 공격자의 공격으로부터 안전한 데이터베이스 암호화 기법에 대한 연구가 진행되고 있다.
따라서 본 발명은 상기의 문제점들을 해결하기 위하여 창작된 것으로서 순서 유지 기능이 있으면서도 공격자의 공격으로부터 안전한 암호화 기법을 제공하는 것이다.
또한, 본 발명이 이루고자하는 기술적인 과제를 상기 암호화 기법에 따라 암호화된 데이터를 처리할 수 있는 클라이언트의 데이터 처리 방법을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 암호화 방법은 복수의 평문들을 포함하는 평문 집합을 암호화하고 복수의 암호문들을 포함하는 암호문 집합을 생성하는 단계: 상기 암호문 집합을 제1집합과 제2집합으로 분리하는 단계; 및 상기 제1집합의 위치와 상기 제2집합의 위치를 서로 바뀌어 데이터베이스에 저장하는 단계를 포함한다.
상기 암호문 집합을 생성하는 단계는 순서 유지 기능이 있는 암호화 기법(Order Preserving Encryption Scheme(OPES))을 이용하여 상기 암호문을 생성한다. 상기 평문 집합은 크기 순서대로 분류(sorting)되어 있다.
상기 기술적 과제를 달성하기 위한 클라이언트의 데이터 처리방법은 구간 질의(range query)를 위한 제1평문(a0)과 제2평문(a1)을 수신하는 단계; 상기 제1평문과 상기 제2평문 각각을 암호화하여 제1암호문(Ec(a0))과 제2암호문(Ec(a1)) 각각을 생성하는 단계; 상기 제1암호문의 크기와 상기 제2암호문의 크기를 서로 비교하는 단계; Ec(a0)<Ec(a1)인 경우 서버의 데이터베이스에 제1집합([Ec(C1), Ec(C2)]이 존재하는지의 여부를 묻는 제1쿼리를 상기 서버로 전송하고, Ec(a0)>Ec(a1)인 경우 상기 데이터베이스에 제2집합([Ec(a1), Ec(a0)])의 여집합이 존재하는지의 여부를 묻는 제2쿼리를 상기 서버로 전송하는 단계; 및 상기 서버로부터 전송된 상기 제1집합 또는 상기 제2집합의 여집합을 수신하는 단계를 포함한다.
상기 클라이언트의 데이터 처리 방법은 크기 순서로 정렬된 제3집합([a0, a1])을 얻기 위하여, 상기 제1집합을 복호화하거나 또는 상기 제2집합의 여집합을 복호화하는 단계를 더 포함한다.
상기 기술적 과제를 달성하기 위한 암호화 방법은 의사 난수 생성기로부터 발생한 데이터에 기초하여, 크기 순서로 정렬된 다수의 평문들을 제1평문 집합과 제2평문 집합으로 분리하는 단계; 상기 제1평문 집합에 속하는 다수의 평문들 각각을 순서 유지 기능이 있는 암호화 기법(OPES)으로 암호화하여 다수의 제1중간 암호문들을 생성하고, 상기 제2평문 집합에 속하는 다수의 평문들 각각을 순서를 뒤집어 유지하는 암호화 기법(Order Reversing Encryption Scheme(ORES))로 암호화하여 다수의 제2중간 암호문들을 생성하는 단계; 및 상기 다수의 제1중간 암호문들 각각에 제1식별 비트를 삽입하여 다수의 제1최종 암호문들을 생성하고, 상기 다수의 제2중간 암호문들 각각에 제2식별 비트를 삽입하여 다수의 제2최종 암호문들을 생성하는 단계를 포함한다. 상기 의사 난수 생성기로부터 발생한 데이터는 1-비트 데이터이다. 상기 제1식별 비트는 0과 1중에서 어느 하나이고 상기 제2식별 비트는 상기 0과 상기 1중에서 다른 하나이다.
상기 암호화 방법은 암호문 집합을 생성하기 위하여, 상기 다수의 제1최종 암호문들 각각과 상기 다수의 제2최종 암호문들 각각을 크기 순서에 따라 정렬하는 단계를 더 포함한다. 상기 암호화 방법은 상기 암호문 집합을 제1암호문 집합과 제2암호문 집합으로 분리하는 단계; 및 상기 제1암호문 집합의 위치와 상기 제2암호문 위치를 서로 바뀌어 데이터베이스에 저장하는 단계를 더 포함한다.
상기 기술적 과제를 달성하기 위한 암호화 방법은 정렬된 n(n은 자연수)개의 제1평문들 중에서 i(i는 자연수, i<n)번째 평문(di)과 의사 난수 발생기로부터 발생한 n개의 난수들 중에서 i번째 난수를 일대일 대응시켜 n개의 제2평문들을 생성하는 단계; 상기 난수의 값에 따라 상기 n개의 제2평문들을 제1평문 집합과 제2평문 집합으로 분리하는 단계; 상기 제1평문 집합에 속하는 다수의 평문들 각각을 순서 유지 기능이 있는 암호화 기법(OPES)으로 암호화하여 다수의 제1중간 암호문들을 생성하고, 상기 제2평문 집합에 속하는 다수의 평문들 각각을 순서를 뒤집어 유지하는 암호화 기법(Order Reversing Encryption Scheme(ORES))로 암호화하여 다수의 제2중간 암호문들을 생성하는 단계; 및 상기 다수의 제1중간 암호문들 각각에 제1식별 비트를 삽입하여 다수의 제1최종 암호문들을 생성하고, 상기 다수의 제2중간 암호문들 각각에 제2식별 비트를 삽입하여 다수의 제2최종 암호문들을 생성하는 단계를 포함한다.
상기 암호화 방법은 암호문 집합을 생성하기 위하여, 상기 다수의 제1최종 암호문들 각각과 상기 다수의 제2최종 암호문들 각각을 크기 순서에 따라 정렬하는 단계를 더 포함한다.
상기 암호화 방법은 상기 암호문 집합을 제1암호문 집합과 제2암호문 집합으로 분리하는 단계; 및 상기 제1암호문 집합의 위치와 상기 제2암호문 위치를 서로 바뀌어 데이터베이스에 저장하는 단계를 더 포함한다.
상기 기술적 과제를 달성하기 위한 클라이언트의 데이터 처리방법은 수신된 평문을 OPES로 암호화하여 제1중간 암호문을 생성하고 상기 수신된 평문을 ORES로 암호화하여 제2중간 암호문을 생성하는 단계; 상기 제1중간 암호문에 제1식별 비트를 삽입하여 제1최종 암호문을 생성하고 상기 제2중간 암호문에 제2식별 비트를 삽입하여 제2최종 암호문을 생성하고, 생성된 제1최종 암호문이 서버의 데이터베이스에 존재하는지의 여부를 묻기 위한 제1쿼리와 생성된 제2최종 암호문이 상기 데이터베이스에 존재하는지의 여부를 묻기 위한 제2쿼리를 상기 서버로 전송하는 단계; 및 상기 제1쿼리에 응답하여 상기 서버로부터 출력된 상기 제1최종 암호문을 포함하는 제1행 또는 상기 제2쿼리에 응답하여 상기 서버로부터 출력된 상기 제2최종 암호문을 포함하는 제2행을 수신하는 단계를 포함한다.
상기 클라이언트의 데이터 처리방법은 상기 평문을 포함하는 행(row)을 얻기 위하여, 상기 제1행 또는 상기 제2행에 대하여 상기 제1식별 비트에 기초하여 상기 OPES 및 상기 제2식별 비트에 기초하여 상기 ORES 중에서 적어도 하나로 복호화하는 단계를 더 포함한다.
상기 기술적 과제를 달성하기 위한 클라이언트의 데이터 처리방법은 구간 질의를 위한 제1평문(a0)과 제2평문(a1)을 수신하는 단계; 상기 제1평문과 상기 제2평문 각각을 OPES로 암호화하여 제1중간 암호문과 제2중간 암호문 각각을 생성하고, 상기 제1평문과 상기 제2평문 각각을 ORES로 암호화하여 제3중간 암호문과 제4중간 암호문 각각을 생성하는 단계; 상기 제1중간 암호문과 상기 제2중간 암호문 각각에 제1식별 비트를 삽입하여 제1최종 암호문(Ep(a0))과 제2최종 암호문(Ep(a1))을 생성하고, 상기 제3중간 암호문과 상기 제4중간 암호문 각각에 제2식별 비트를 삽입하여 제3최종 암호문(Er(a0))과 제4최종 암호문(Er(a1)) 각각을 생성하는 단계; 상기 제1최종 암호문의 크기와 상기 제2최종 암호문의 크기를 비교하고, Ep(a0)<Ep(a1)인 경우 서버의 데이터베이스에 제1집합([Ep(a0), Ep(a1)]이 존재하는지의 여부를 묻는 제1쿼리를 상기 서버로 전송하고, Ep(a0)>Ep(a1)인 경우 상기 데이터베이스에 상기 제1집합([Ep(a0), Ec(a1)])의 여집합이 존재하는지의 여부를 묻는 제2쿼리를 상기 서버로 전송하는 단계; 상기 제3최종 암호문의 크기와 상기 제4최종 암호문의 크기를 비교하고, Er(a0)>Er(a1)인 경우 서버의 데이터베이스에 제2집합([Er(a1), Ep(a0)]이 존재하는지의 여부를 묻는 제3쿼리를 상기 서버로 전송하고, Er(a0)<Er(a1)인 경우 상기 데이터베이스에 상기 제2집합([Er(a1), Ec(a0)])의 여집합이 존재하는지의 여부를 묻는 제4쿼리를 상기 서버로 전송하는 단계; 및 상기 제1쿼리와 상기 제2쿼리 중에서 어느 하나에 기초하여 상기 서버로부터 전송된 상기 제1집합과 상기 제1집합의 여집합 중에서 어느 하나, 및 상기 제3쿼리와 상기 제4쿼리 중에서 어느 하나에 기초하여 상기 서버로부터 전송된 상기 제2집합과 상기 제2집합의 여집합 중에서 어느 하나를 수신하는 단계를 포함한다.
상기 클라이언트의 데이터 처리방법은 크기 순서로 정렬된 평문 집합([a0, a1])을 얻기 위하여, 상기 제1집합과 상기 제1집합의 여집합 중에서 어느 하나에 대해서는 상기 제1식별 비트에 기초하여 상기 OPES로 복호화하고 상기 제2집합과 상기 제2집합의 여집합 중에서 어느 하나에 대해서는 상기 제2식별 비트에 기초하 여 상기 ORES로 복호화하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 암호화 방법은 안전하게 데이터를 보호할 수 있는 효과가 있다.
또한, 본 발명의 실시 예에 따른 클라이언트의 데이터 처리방법은 안전하게 데이터를 복호화할 수 있는 효과가 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시 예에 따른 시스템의 블록도를 나타낸다.
ASP(Application service provider)는 소프트웨어 기반의 서비스 및/또는 솔루션(solution)을 중앙 데이터 센터로부터 광역 통신망을 통해 고객들에게 배포하고 관리하는 회사 또는 서비스이다. 본질적으로, ASP는 자신들의 정보기술 수요의 일부 또는 거의 전부를 아웃소싱하려는 회사들을 위한 방안이다.
ASP는 단순히 애플리케이션 소프트웨어를 패키지화하여 판매하는 것이 아니라, 웹(web)에 띄워 일정 비용만 내고 빌려 쓸 수 있도록 하는 일종의 애플리케이 션 아웃소싱으로 이해할 수 있을 것이다. 호스트 소프트웨어 애플리케이션을 자사의 서버에 탑재해 고객들이 전용선이나 인터넷 등의 공중 네트워크를 통해 접속할 수 있도록 서비스를 제공하는 것이다.
데이터베이스도 ASP를 통하여 데이터를 생성, 저장, 변경, 또는 추출 등의 작업을 할 수 있다. 이를 DSP(Database Service Provider)라 한다.
도 1을 참조하면, 시스템(10)은 유저(또는 유저 컴퓨터; 20), 클라이언트(30), 및 서버(40)를 포함한다.
유저(20)는 웹 브라우저를 통하여 클라이언트(30)에게 질의(query)를 주거나 상기 질의를 전송하는 주체이다.
클라이언트(30)는 데이터, 특히 본 발명의 각 실시 예에 따라 암호화된 데이터를 서버(40)의 데이터베이스에 저장시키는 주체로서 메타데이터를 저장하고 있다가 유저(20)의 질의를 서버(40)가 이해할 수 있는 형태(또는 포멧, 프로토콜)로 변경하거나 반대로 서버(40)로부터 출력된 상기 질의에 대한 결과, 예컨대 암호문을 유저(20)가 이해할 수 있는 형태로 변경하는 주체이다.
서버(40)는 암호화된 데이터를 데이터베이스에 저장하였다가 유저(20)의 질의, 예컨대 동등 질의(equality query) 또는 구간 질의(range query)를 처리하는 주체이다. 예컨대, 클라이언트(30)와 서버(40)는 동일한 주체에 의하여 운영될 수도 있고 서로 다른 주체에 의하여 운영될 수 있다.
우선, 클라이언트(30)는 다음과 같은 순환 OPES(circular Order Preserving Encryption Scheme(OPES)) 알고리즘을 이용하여 저장할 데이터, 예컨대 복수의 평 문들을 포함하는 평문 집합({pi})을 암호화한다. 여기서, 복수의 평문들을 도 3에 도시된 바와 같이 각각은 숫자(예컨대, 10진수) 데이터이고, 평문 집합({pi})은 숫자 크기에 따라 분류(sort)된 복수의 평문들을 포함하는 하나의 열(column)이라고 가정한다. 여기서, Eo는 안전한 OPES의 암호화 알고리즘, Do는 안전한 OPES의 복호화 알고리즘, Ec는 본 발명의 실시 예에 따른 순환 OPES의 암호화 알고리즘, Dc는 본 발명의 실시 예에 따른 순환 OPES의 복호화 알고리즘이다.
Ⅰ. 순환 OPES 의 암호화 알고리즘( Ec )
Require: 평문 집합 {pi}과 안전한 OPES 암호화(Eo)
Ensure: 암호문 집합 {ci}
1. OPES를 이용하여 평문 집합 {pi}을 암호화한다. 즉, {Eo(pi)}를 계산한다.
2. {mi}={Eo(pi)}일 때, xm을 [min{mi}, max{mi}]안에서 임의로 선택한 뒤, xm, xl=max{mi}, 및 xs=min{mi}를 저장한다. xm, xl, 및 xs는 순환 OPES의 비밀 정보를 나타내는 기호들로서 사용된다.
3. if xs ≤ mi < xm then
4. ci = mi + (xl - xm - xs + 1)
5. else
6. ci = mi - xm
7. end if
8. return {ci}
도 2는 본 발명의 실시 예에 따른 순환 OPES 알고리즘을 이용하여 평문 집합({pi})을 암호화하는 방법을 나타내고, 도 3은 순환 OPES 알고리즘을 이용한 암호화/복호화를 설명하기 위한 일 실시 예를 나타낸다.
상술한 순환 OPES 알고리즘(I), 도 1, 도 2, 및 도 3을 참조하면, 클라이언트(30)는 복수의 평문들을 포함하는 평문 집합({pi}, 도 3의 (a)를 OPES를 이용하여 암호화하고(도 3의 (b)), 복수의 암호문들을 포함하는 암호문 집합({ci})을 생성한다(S11). 클라이언트(30)는 암호문 집합({ci})을 제1집합과 제2집합으로 분리한다(S12). 상기 제1집합은 크기에 따라 분류된 복수의 암호문들을 포함하고, 제2집합은 크기에 따라 분류된 복수의 암호문들을 포함한다.
클라이언트(30)는 상기 제1집합의 위치와 상기 제2집합의 위치를 서로 바꾸고(S13), 서버(40)의 데이터베이스에 저장한다(S14). 예건대, 제1집합의 위치와 제2집합의 위치는 순환 OPES 알고리즘(I)에 따라 바뀔 수 있다.
도 3의 (c)는 암호문 집합({ci})을 제1집합과 제2집합으로 분리한 후 상기 제1집합의 위치와 상기 제2집합의 위치를 서로 바꾸어 형성된 암호문 집합을 나타낸다.
도 3의 (c)는 상술한 순환 OPES의 알고리즘 중에서 3 과정 내지 6 과정을 이용하여 도 3의 (b)를 암호화한 것이다. 이때 사용된 비밀 정보는 xm=71, xl=99, 및 xs=17이다. 예컨대, xm=71, xl=99, 및 xs=17은 설명의 편의를 위하여 임의로 선택된 값들이다.
Ⅱ. 순환 OPES 의 복호화 알고리즘(Dc)
Require: 암호문 집합({ci}), xm, xl, xs, OPES의 비밀 키
Ensure: 평문 집합({pi})
1. if 0≤ mi ≤ xl- xm then
2. mi = ci + xm
3. else
4. mi = ci - (xl - xm - xs +1)
5. end if
6. OPES를 이용하여 {mi}를 복호화한다. 즉, {Do(mi)}를 계산한다.
7. return {pi}
도 3을 참조하면, I의 순환 OPES의 암호화 알고리즘(Ec)의 제3과정 내지 제6 과정을 위해 fc라는 기호를, Ⅱ의 순환 OPES의 복호화 알고리즘(Dc)의 제1과정 내지 제4과정을 위하여 fc-1을 사용했다.
도 4는 클라이언트의 데이터 처리 방법을 설명하기 위한 흐름도이다.
도 1, 도 3, 및 도 4를 참조하면, 서버(40)에는 도 2 및 Ⅰ의 순환 OPES의 암호화 알고리즘(Ec)에 따라 생성된 암호문 집합({ci})이 이미 저장되어 있다. 예컨대, 서버(40)에는 도 3의 (c)에 도시된 바와 같은 암호문 집합({ci})이 이미 저장되어 있다.
클라이언트(30)는 유저(20)를 통하여 구간 질의(range query)를 위한 제1평문(a0)과 제2평문(a1)을 수신한다(S41).
클라이언트(30)는 제1평문(a0)과 제2평문(a1) 각각을 암호화하여 제1암호문(Ec(a0))과 제2암호문(Ec(a1)) 각각을 생성한다(S42). 여기서, 제1평문(a0), 제2평문(a1), 제1암호문(Ec(a0)), 및 제2암호문(Ec(a1))은 숫자이다. 상기 암호화 방법은 본 발명의 실시 예에 따른 순환 OPES일 수 있다.
클라이언트(30)는 제1암호문(Ec(a0))의 크기와 제2암호문(Ec(a1))의 크기를 서로 비교한다(S43).
Ec(a0)<Ec(a1)인 경우, 클라이언트(30)는 서버(40)의 데이터베이스에 제1집합([Ec(a0), Ec(a1)])이 존재하는지의 여부를 묻는 제1쿼리(Q1[Ec(a0), Ec(a1)])를 서버(40)로 전송한다(S44). 또한, Ec(a0)>Ec(a1)인 경우, 클라이언트(30)는 서버(40)의 데이터베이스에 제2집합([Ec(a1), Ec(a0)])의 여집합이 존재하는지의 여부를 묻는 제2쿼리(Q2[Ec(a1), Ec(a0)])를 서버(40)로 전송한다(S44).
서버(40)는 제1쿼리(Q1[Ec(a0), Ec(a1)])에 응답하여 데이터베이스에 제1집합([Ec(a0), Ec(a1)])이 존재하는지의 여부를 검색하고, 검색 결과 제1집합 ([Ec(a0), Ec(a1)])이 존재하는 경우, 제1집합([Ec(a0), Ec(a1)])에 해당하는 복수의 암호문들을 클라이언트(30)로 전송한다.
또한, 서버(40)는 제2쿼리([Q2(Ec(a1), Ec(a0)])에 응답하여 데이터베이스에 제2집합([Ec(a1), Ec(a0)])이 여집합이 존재하는지의 여부를 검색하고, 검색 결과 제2집합([Ec(a1), Ec(a0)])의 여집합이 존재하는 경우, 제2집합([Ec(a1), Ec(a0)])의 여집합에 해당하는 복수의 암호문들을 클라이언트(30)로 전송한다.
클라이언트(30)는 서버(40)로부터 전송된 제1집합 또는 제2집합의 여집합을 수신한다(S45).
클라이언트(30)는 도 3의 (d)와 (e)에 도시된 바와 같이 제1집합 또는 제2집합의 여집합을 복호화하고 크기 순서로 정렬된 제3집합([a0, a1])을 얻는다.
예컨대, a0=11, a1=50인 경우, Ec(a0=11)=59이고, Ec(a1=50)=74이다. 따라서, Ec(a0)<Ec(a1)이므로, 클라이언트(30)는 서버(40)의 데이터베이스에 제1집합([Ec(a0), Ec(a1)])이 존재하는지의 여부를 묻는 제1쿼리(Q1[Ec(a0), Ec(a1)])를 서버(40)로 전송한다(S44). 서버(40)는 제1쿼리(Q1[Ec(a0), Ec(a1)])에 응답하여 데이터베이스에 제1집합([Ec(a0), Ec(a1)])이 존재하는지의 여부를 검색하고, 검색 결과 제1집합([Ec(a0), Ec(a1)])이 존재하는 경우, 제1집합([Ec(a0), Ec(a1)])에 해당하는 복수의 암호문들(59, 61, 및 74)을 클라이언트(30)로 전송한다.
클라이언트(30)는 제1집합([Ec(a0), Ec(a1)])에 해당하는 복수의 암호문들 (59, 61, 및 74)을 복호화하고(즉, 도 3의 (d)의 fc-1), 크기 순서로 배열된 복호화된 복수의 평문들(11, 20, 및 50)을 포함하는 제3집합을 유저(20)를 통하여 디스플레이한다.
그러나, a0=50, a1=82인 경우, Ec(a0=50)=74이고, Ec(a1=82)=17이다. 따라서, Ec(a0)>Ec(a1)이므로, 클라이언트(30)는 서버(40)의 데이터베이스에 제2집합([Ec(a1), Ec(a0)]), 즉 17보다 크고 74보다 작은 제2집합({25, 28, 29, 41, 44, 59, 및 61})의 여집합이 존재하는지의 여부를 묻는 제2쿼리(Q2[Ec(a1), Ec(a0)])를 서버(40)로 전송한다(S44). 서버(40)는 제2쿼리(Q2[Ec(a1), Ec(a0)])에 응답하여 데이터베이스에 제2집합([Ec(a1), Ec(a0)])의 여집합이 존재하는지의 여부를 검색하고, 검색 결과 제2집합([Ec(a1), Ec(a0)])의 여집합이 존재하는 경우, 제2집합([Ec(a1), Ec(a0)])의 여집합에 해당하는 복수의 암호문들(74, 0, 및 17)을 클라이언트(30)로 전송한다.
클라이언트(30)는 제2집합([Ec(a1), Ec(a0)])의 여집합에 해당하는 복수의 암호문들(74, 0, 및 17)을 복호화하고(즉, 도 3의 (d)의 fc-1), 크기 순서로 배열된 복호화된 복수의 평문들(50, 71, 및 82)을 포함하는 제3집합을 유저(20)를 통하여 디스플레이한다.
도 4를 참조하여 설명된 클라이언트의 구간 질의 알고리즘은 다음과 같다.
Ⅲ. 구간 질의 알고리즘
1. (클라이언트) Ec(a0)와 Ec(a1)을 계산한다.
2. (클라이언트) 쿼리를 서버로 전송한다.
Q1[Ec(a0), Ec(a1)] if Ec(a0) < Ec(a1)
Q2([Ec(a1), Ec(a0)]) otherwise
3. (서버) 쿼리 결과에 따른 암호문 집합({ci})를 클라이언트로 전송한다.
4. (클라이언트) 암호문 집합({ci})을 복호화한다. 즉, {Dc(ci)}를 계산한다.
도 5는 본 발명의 다른 실시 예에 따른 쌍둥이(twin)-OPES 알고리즘을 이용하여 평문 집합을 암호화하는 방법을 나타내고, 도 6은 쌍둥이-OPES 알고리즘을 이 용한 암호화/복호화를 설명하기 위한 일 실시 예를 나타낸다.
도 1, 도 5, 및 도 6을 참조하면, 클라이언트(30)는 의사 난수 생성기(미도시)로부터 발생한 데이터, 예컨대 데이터 "0" 또는 데이터 "1"에 기초하여, 크기 순서로 정렬된 복수의 평문들을 제1평문 집합과 제2평문 집합으로 분리한다(S51, 및 도 6의 (b)).
클라이언트(30)는 분리된 제1평문 집합에 속하는 복수의 평문들 각각을 순서 유지 기능이 있는 암호화 기법(OPES)으로 암호화하여 다수의 제1중간 암호문들을 생성한다. 또한, 클라이언트(30)는 분리된 제2평문 집합에 속하는 복수의 평문들 각각을 순서를 뒤집어 유지하는 암호화 기법(Order Reversing Encryption Scheme(ORES))로 암호화하여 다수의 제2중간 암호문들을 생성한다(S52).
클라이언트(30)는 생성된 복수의 제1중간 암호문들 각각에 제1식별 비트를 삽입하여 다수의 제1최종 암호문들을 생성하고 생성된 복수의 제2중간 암호문들 각각에 제2식별 비트를 삽입하여 다수의 제2최종 암호문들을 생성한다(S53).
상기 다수의 제1최종 암호문들 각각과 상기 다수의 제2중간 암호문들 각각이 크기 순서로 정렬된 암호문 집합을 생성한다(S54).
클라이언트(30)는 생성된 암호문 집합을 제1암호문 집합과 제2암호문 집합으로 분리하고, 상기 제1암호문 집합의 위치와 상기 제2암호문 위치를 서로 바뀌어 서버(40)의 데이터베이스에 저장한다(S55, 및 도 6의 (d)).
상기 제1식별 비트는 0과 1중에서 어느 하나이고 상기 제2식별 비트는 상기 0과 상기 1중에서 다른 하나이다.
즉, 클라이언트(30)는 정렬된 n(n은 자연수)개의 제1평문들 중에서 i(i는 자연수, i<n)번째 평문(di)과 의사 난수 발생기로부터 발생한 n개의 난수들 중에서 i번째 난수를 일대일 대응시켜 n개의 제2평문들을 생성한다.
클라이언트(30)는 상기 난수의 값에 따라 상기 n개의 제2평문들을 제1평문 집합과 제2평문 집합으로 분리한다.
클라이언트(30)는 제1평문 집합에 속하는 다수의 평문들 각각을 순서 유지 기능이 있는 암호화 기법(OPES)으로 암호화하여 다수의 제1중간 암호문들을 생성하고, 제2평문 집합에 속하는 다수의 평문들 각각을 순서를 뒤집어 유지하는 암호화 기법(Order Reversing Encryption Scheme(ORES))으로 암호화하여 다수의 제2중간 암호문들을 생성한다.
클라이언트(30)는 다수의 제1중간 암호문들 각각에 제1식별 비트를 삽입하여 다수의 제1최종 암호문들을 생성하고 다수의 제2중간 암호문들 각각에 제2식별 비트를 삽입하여 다수의 제2최종 암호문들을 생성한다.
암호문 집합을 생성하기 위하여, 클라이언트(30)는 다수의 제1최종 암호문들 각각과 다수의 제2최종 암호문들 각각을 크기 순서에 따라 정렬한다.
클라이언트(30)는 생성된 암호문 집합을 제1암호문 집합과 제2암호문 집합으로 분리하고, 상기 제1암호문 집합의 위치와 상기 제2암호문 위치를 서로 바뀌어 서버(40)의 데이터베이스에 저장한다.
도 5와 도 6을 참조하여, 본 발명의 다른 실시 예에 따른 쌍둥이-OPES의 암호화 알고리즘을 설명하면 다음과 같다.
Ⅳ. 쌍둥이(twin)- OPES 의 암호화 알고리즘
Require: 평문 집합({pi}), 의사 난수 생성기(Pseudo-Random Number Generator(PRNG)), OPES, ORES, 테스터 Tk
Ensure: 암호문 집합({ci}) 또는 암호화된 속성들(encrypted attributes)
1. 평문 집합({pi})을 정렬하고, i번째 평문을 di라고 하자.
2. 의사 난수 생성기를 사용하여 랜덤 수열 {ri}를 생성하고, i번째 ri와 di를 대응시킨다.
3. if ri = 0 then
4. mi = Eo(di) || Tk(Eo(di), 0)을 계산한다.
5. else
6. mi = Er(di) || Tk(Er(di), 1)을 계산한다.
7. end if
("0"이 OPES를 의미하는 비트로, "1"이 ORES를 의미하는 비트로 사용되었다.)
8. 암호문 집합 ci = fc(mi)를 계산한다.
9. return {ci}
정의 1. 주어진 두 개의 순서를 가지는 집합들(M과 C)에 대하여 만약 m1 < m2가 Er(m1) ≥ Er(m2)를 의미한다면, 암호화 기법 E': M → C를 ORES라 정의한다. 이때, Er, Dr은 각각 E'의 암호화, 복호화 함수이다.
만약, OPES: M → C가 존재하면, 항상 다음과 같은 ORES를 얻을 수 있다.
Er(x) = max{Eo(m)|m ∈ M} - Eo(x).
Dr(y) = Do(max{Eo(m)|m ∈ M} - y)
이때, Eo와 Do 각각은 OPES 암호화, 복호화 함수이다.
의사 난수 생성기를 사용하여 복수의 평문들 각각에 "0" 또는 "1"을 대응시킨 뒤, "0"이 대응된 복수의 평문들 각각을 OPES로 암호화하고 "1"이 대응된 복수의 평문들 각각을 ORES로 암호화한다. 그리고, 복수의 암호문들 각각의 치역의 범위를 같게 하여 같은 치역의 범위 안에서 서로 다른 암호화 기법, 즉 OPES와 ORES로 암호화된 암호문들이 섞이게 한다. 복수의 암호문들 각각의 뒤에는 추가적으로 어떤 암호화 기법, 예컨대 OPES 또는 ORES로 암호화되었는지를 알 수 있는 1-비트 정보를 덧붙인다. 복호화할 때, 상기 1-비트 정보는 테스터를 이용하여 암호화 기법을 알아내는데 사용된다.
분할(partition): 일련의 숫자 데이터, D={di}가 주어져 있을 때 의사 난수 생성기를 사용하여 랜덤 비트 시이퀀스 {ri}를 생성한다. 그리고, D를 교집합이 없는 두 개의 부분 집합들 A={di ∈ D : ri = 0}과 B={di ∈ D : ri = 1}로 나눈다.
집합 A에 속하는 데이터를 OPES로 암호화하고, 집합 B에 속하는 데이터를 ORES로 암호화한다.
테스터(Tk)와 테스트 비트: 대응되는 평문이 속하는 집합을 알 수 있도록 하기 위하여 암호문의 뒤에 테스트 비트에 대한 정보를 덧붙인다(append).
테스트 비트는 복호시 Do을 사용할지 또는 Dr을 사용할지를 결정하므로, 비밀키 k를 모르는 자는 암호문으로부터 테스트 비트를 계산하기 어려워야 한다.
테스터라고 불리는 함수, Tk(c, b) = MACk(c)
Figure 112008026435978-pat00001
b로 정의된다. 여기서, MACk(c): {0, 1}* → {0, 1}가 메시지 인증 코드(Message Authentication Code)를 나타내고, c는 암호문을 나타내고, b는 이진 집합 정보(binary group information)를 나타낸다. 그리고, b는 Tk-1(c)=lsb
Figure 112008026435978-pat00002
MACk(c)의 계산을 통하여 구할 수 있다. 여기서, lsb는 암호문의 lsb이다.
Ⅴ. 쌍둥이(twin)- OPES 의 복호화 알고리즘
Require: 암호문 집합({ci}), OPES, ORES, 테스터 Tk
Ensure: 평문 집합({pi})
1. 암호문 집합({ci})에 대해 mi=fc- 1(ci)를 계산한다.
2. mi에서 마지막 1-비트를 제거한 값(mi')을 계산한다.
3. if Tk-1(mi)= 0 then
4. pi=Do(mi')
5. else
6. pi=Dr(mi')
7. end if
8. return {pi}
도 6을 참조하면, xm=1010, xl=1111, 및 xs=0001이라고 가정한다. 또한, 도 6에서, Eo(x)=x이고, Er(x)=111
Figure 112008003678578-pat00003
x라고 가정하고, 테스터의 비밀키는 011이라고 가정한다.
도 6을 참조하여 암호문(0000)을 복호화하는 과정을 설명하면 다음과 같다.
fc-1(0000)=0000
Figure 112008026435978-pat00012
1010=1010, T011 -1(1010)=0
Figure 112008026435978-pat00004
1
Figure 112008026435978-pat00005
0=1. 1010의 복호화를 위하여 Dr이 사용된다. Dr(101)=010은 암호문(0000)의 복호화 결과이다.
쌍둥이-OPES의 질의 알고리즘은 다음과 같다.
평문들의 집합은 두 개의 부분 집합들로 나누어지고, 두 개의 부분 집합들 각각은 서로 다른 암호화 기법들, 예컨대 OPES와 ORES로 암호화되었기 때문에, 질의 시 클라이언트(30)는 두 개의 암호화된 질의들 각각에 응답하여 서버(40)의 데이터베이스를 검색한다.
쌍둥이-OPES의 경우, OPES를 통하여 암호화된 암호문들과 ORES를 통하여 암호화된 암호문들 각각이 같은 치역 안에 섞여 있기 때문에 서버(40)는 모든 치역에서 두 번의 질의들 각각에 응답하여 검색을 수행하고 그 수행 결과들을 클라이언트(30)로 전송해야 한다.
서버(40)로부터 전송된 OPES로 검색한 결과 안에는 ORES로 암호화된 암호문들이 존재할 수 있고 ORES로 검색한 결과 안에는 OPES로 암호화된 암호문들이 존재할 수 있다. 따라서, 클라이언트(30)는 서버(40)로부터 전송된 검색 결과에서 테스터를 이용하여 원하는 평문들만을 걸려내어 복호화해야 한다.
도 7은 클라이언트의 데이터 처리 방법, 즉 동등 질의를 설명하기 위한 흐름도이다. 도 1 및 도 7을 참조하면, 클라이언트(30)는 유저(20)를 통하여 입력된 평문(p)을 수신하고(S71), 수신된 평문(p)을 OPES로 암호화하여 제1중간 암호문을 생 성하고 상기 수신된 평문을 ORES로 암호화하여 제2중간 암호문을 생성한다(S72).
클라이언트(30)는 상기 제1중간 암호문에 제1식별 비트를 삽입하여 제3중간암호문을 생성하고 생성된 제3중간 암호문에 fc를 적용하여 제1최종 암호문을 생성하고 상기 제2중간 암호문에 제2식별 비트를 삽입하여 제4중간 암호문을 생성하고 생성된 제4암호문에 fc를 적용하여 제2최종 암호문을 생성한다(S73). 클라이언트(30)는 생성된 제1최종 암호문이 서버(40)의 데이터베이스에 존재하는지의 여부를 묻기 위한 제1쿼리와 생성된 제2최종 암호문이 상기 데이터베이스에 존재하는지의 여부를 묻기 위한 제2쿼리를 생성하고 이들을 서버(40)로 전송한다(S74와 S75).
서버(40)는 상기 제1쿼리에 응답하여 서버(40)의 데이터베이스로부터 상기 제1최종 암호문을 포함하는 제1행(row) 또는 상기 제2쿼리에 응답하여 서버(40)의 데이터베이스로부터 상기 제2최종 암호문을 포함하는 제2행을 검색한다.
서버(40)는 검색된 제1행 또는 제2행을 클라이언트(30)로 전송한다. 클라이언트(30)는 서버(40)로부터 전송된 제1최종 암호문을 포함하는 제1행 또는 제2최종 암호문을 포함하는 제2행을 수신한다(S76).
클라이언트(30)는 평문(p)을 포함하는 행(row)을 얻기 위하여, 상기 제1행 또는 상기 제2행에 대하여 상기 제1식별 비트에 기초하여 상기 OPES 및 상기 제2식별 비트에 기초하여 상기 ORES 중에서 적어도 하나로 복호화한다(S77).
도 7에 도시된 동등 질의 방법을 수행하기 위한 알고리즘은 다음과 같다.
Ⅵ. 쌍둥이(twin)- OPES 를 이용한 동등 질의 알고리즘
1. (클라이언트) fc(Eo(p)||Tk(Eo(p), 0)) and fc(Er(p)||Tk(Er(p), 1))을 계산한다.
2. (클라이언트) 계산 결과를 서버로 출력한다.
3. (서버) fc(Eo(p)||Tk(Eo(p), 0)) or fc(Er(p)||Tk(Er(p), 1))와 같은 암호문을 검색한다.
4. (서버) 만약 암호문이 존재하는 하면, 적어도 하나의 행을 클라이언트에게 보낸다.
5. 쌍둥이 OPES 복호화 알고리즘(DT)을 사용하여 복호화한다.
도 8a와 도 8b는 클라이언트의 데이터 처리 방법, 즉 구간 질의(range query)를 설명하기 위한 흐름도이다. 도 1, 도 8a, 및 도 8b를 참조하면, 클라이언트(30)는 유저(20)를 통하여 입력된 구간 질의를 위한 제1평문(a0)과 제2평문(a1)을 수신한다(S81).
클라이언트(30)는 상기 제1평문과 상기 제2평문 각각을 OPES로 암호화하여 제1중간 암호문과 제2중간 암호문 각각을 생성하고, 상기 제1평문과 상기 제2평문 각각을 ORES로 암호화하여 제3중간 암호문과 제4중간 암호문 각각을 생성한다(S82).
클라이언트(30)는 상기 제1중간 암호문과 상기 제2중간 암호문 각각에 제1식별 비트를 삽입하여 제1최종 암호문(Ep(a0))과 제2최종 암호문(Ep(a1))을 생성하고, 상기 제3중간 암호문과 상기 제4중간 암호문 각각에 제2식별 비트를 삽입하여 제3최종 암호문(Er(a0))과 제4최종 암호문(Er(a1)) 각각을 생성한다(S83).
클라이언트(30)는 상기 제1최종 암호문의 크기와 상기 제2최종 암호문의 크기를 비교한다(S84). Ep(a0)<Ep(a1)인 경우, 클라이언트(30)는 서버(40)의 데이터베이스에 제1집합([Ep(a0), Ep(a1)]이 존재하는지의 여부를 묻는 제1쿼리를 서버(40)로 전송하고, Ep(a0)>Ep(a1)인 경우 클라이언트(30)는 서버(40)의 데이터베이스에 제2집합([Ep(a1), Ep(a0)])의 여집합이 존재하는지의 여부를 묻는 제2쿼리를 서버(40)로 전송한다(S85).
클라이언트(30)는 상기 제3최종 암호문의 크기와 상기 제4최종 암호문의 크기를 비교한다(S86). 클라이언트(30)는 Er(a0)>Er(a1)인 경우 서버(40)의 데이터베이스에 제3집합([Er(a1), Er(a0)]이 존재하는지의 여부를 묻는 제3쿼리를 서버(40)로 전송하고, Er(a0)<Er(a1)인 경우 서버(40)의 데이터베이스에 제4집합 ([Er(a0), Er(a1)])의 여집합이 존재하는지의 여부를 묻는 제4쿼리를 서버(40)로 전송한다(S87).
서버(40)는 상기 제1쿼리에 해당하는 제1집합이 데이터베이스에 존재하는지의 여부, 상기 제2쿼리에 해당하는 제2집합의 여집합이 상기 데이터베이스에 존재하는지의 여부, 상기 제3쿼리에 해당하는 제3집합이 데이터베이스에 존재하는지의 여부, 및 상기 제4쿼리에 해당하는 제4집합의 여집합이 상기 데이터베이스에 존재하는지의 여부 중에서 적어도 하나를 검색하고, 검색 결과를 클라이언트(30)로 전송한다.
클라이언트(30)는 상기 제1쿼리와 상기 제2쿼리 중에서 어느 하나에 기초하여 상기 서버로부터 전송된 상기 제1집합과 상기 제2집합의 여집합 중에서 어느 하나, 및 상기 제3쿼리와 상기 제4쿼리 중에서 어느 하나에 기초하여 상기 서버로부터 전송된 상기 제3집합과 상기 제4집합의 여집합 중에서 어느 하나를 수신한 다(S88).
클라이언트(30)는 크기 순서로 정렬된 평문 집합([a0, a1])을 얻기 위하여, 상기 제1집합과 상기 제2집합의 여집합 중에서 어느 하나에 대해서는 상기 제1식별 비트에 기초하여 상기 OPES로 복호화하고 상기 제3집합과 상기 제4집합의 여집합 중에서 어느 하나에 대해서는 상기 제2식별 비트에 기초하여 상기 ORES로 복호화한다. 따라서, 유저(20)는 디스플레이 장치를 통하여 평문 집합([a0, a1])을 디스플레이할 수 있다.
도 8a와 도 8b에 도시된 구간 질의 방법을 수행하기 위한 알고리즘은 다음과 같다.
Ⅶ. 쌍둥이(twin)- OPES 를 이용한 구간 질의 알고리즘
1. (클라이언트) fc(Eo(a0)||Tk(Eo(a0), 0)), fc(Eo(a1)||Tk(Eo(a1), 0)), fc(Er(a0)||Tk(Er(a0), 1)) 및 fc(Er(a1)||Tk(Er(a1), 1))를 계산한다.
2. (클라이언트)
3. if fc(Eo(a0)||Tk(Eo(a0), 0)) < fc(Eo(a1)||Tk(Eo (a1), 0)), then
4. [fc(Eo (a0)||Tk(Eo (a0), 0)), fc(Eo (a1)||Tk(Eo (a1), 0))]을 서버에 질의한다.
5. else
6. (fc(Eo (a0)||Tk(Eo (a0), 0)), fc(Eo (a1)||Tk(Eo (a1), 0)))의 여집합을 서버에 질의한다.
7. end if
8. if fc(Er (a1)||Tk(Er (a1), 1)) < fc(Er (a0)||Tk(Er (a0), 1)), then
9. [fc(Er (a1)||Tk(Er (a1), 1)), fc(Er (a0)||Tk(Er (a0), 1))]을 서버에게 질의한다.
10. else
11. (fc(Er (a1)||Tk(Er (a1), 1)), fc(Er (a0)||Tk(Er (a0), 1)))의 여집합을 서버에게 질의한다.
12. end if
13. (서버) 질의 결과 {ci}를 클라이언트에게 전송한다.
14. (클라이언트) 3-6 과정의 질의 결과로부터 mi=fc- 1(ci)를 계산한 뒤,
Tk-1 값이 0인 것들을 골라 OPES 복호화 함수(Do)로 복호화한다.
15. (클라이언트) 8-11 과정의 질의 결과로부터 mi=fc- 1(ci)를 계산한 뒤,
Tk-1 값이 1인 것들을 골라 ORES 복호화 함수(Dr)로 복호화한다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 시스템의 블록도를 나타낸다.
도 2는 본 발명의 실시 예에 따른 순환-OPES 알고리즘을 이용하여 평문 집합을 암호화하는 방법을 나타낸다.
도 3은 순환-OPES 알고리즘을 이용한 암호화/복호화를 설명하기 위한 일 실시 예를 나타낸다.
도 4는 클라이언트의 데이터 처리 방법을 설명하기 위한 흐름도이다.
도 5는 본 발명의 다른 실시 예에 따른 쌍둥이-OPES 알고리즘을 이용하여 평문 집합을 암호화하는 방법을 나타낸다.
도 6은 쌍둥이-OPES 알고리즘을 이용한 암호화/복호화를 설명하기 위한 일 실시 예를 나타낸다.
도 7은 클라이언트의 데이터 처리 방법, 즉 동등 질의를 설명하기 위한 흐름도이다.
도 8a와 도 8b는 클라이언트의 데이터 처리 방법, 즉 구간 질의를 설명하기 위한 흐름도이다.

Claims (20)

  1. 클라이언트가 복수의 평문들을 포함하는 평문 집합을 암호화하고 복수의 암호문들을 포함하는 암호문 집합을 생성하는 단계:
    상기 클라이언트가 상기 암호문 집합을 제1집합과 제2집합으로 분리하는 단계; 및
    상기 클라이언트가 상기 제1집합의 위치와 상기 제2집합의 위치를 서로 바꾸어 데이터베이스에 저장하는 단계를 포함하는 암호화 방법.
  2. 제1항에 있어서, 상기 암호문 집합을 생성하는 단계는, 상기 클라이언트가 순서 유지 기능이 있는 암호화 기법(Order Preserving Encryption Scheme(OPES))을 이용하여 상기 암호문 집합을 생성하는 암호화 방법.
  3. 제1항에 있어서, 상기 평문 집합은 크기 순서대로 분류(sorting)된 암호화 방법.
  4. 제1항 내지 제3항 중에서 어느 하나의 항에 기재된 방법을 컴퓨터에서 실행시키기 위한 컴퓨터 프로그램을 기록한 기록매체.
  5. 구간 질의(range query)를 위한 제1평문(a0)과 제2평문(a1)을 수신하는 단계;
    상기 제1평문과 상기 제2평문 각각을 암호화하여 제1암호문(Ec(a0))과 제2암호문(Ec(a1)) 각각을 생성하는 단계;
    상기 제1암호문의 크기와 상기 제2암호문의 크기를 서로 비교하는 단계;
    Ec(a0)<Ec(a1)인 경우 서버의 데이터베이스에 제1집합([Ec(a0), Ec(a1)]이 존재하는지의 여부를 묻는 제1쿼리를 상기 서버로 전송하고, Ec(a0)>Ec(a1)인 경우 상기 데이터베이스에 제2집합([Ec(a1), Ec(a0)])의 여집합이 존재하는지의 여부를 묻는 제2쿼리를 상기 서버로 전송하는 단계; 및
    상기 서버로부터 전송된 상기 제1집합 또는 상기 제2집합의 여집합을 수신하는 단계를 포함하는 클라이언트의 데이터 처리방법.
  6. 제5항에 있어서, 상기 클라이언트의 데이터 처리 방법은,
    크기 순서로 정렬된 제3집합([a0, a1])을 얻기 위하여, 상기 제1집합을 복호화하거나 또는 상기 제2집합의 여집합을 복호화하는 단계를 더 포함하는 클라이언트의 데이터 처리방법.
  7. 의사 난수 생성기로부터 발생한 데이터에 기초하여, 클라이언트가 크기 순서로 정렬된 다수의 평문들을 제1평문 집합과 제2평문 집합으로 분리하는 단계;
    상기 클라이언트가 상기 제1평문 집합에 속하는 다수의 평문들 각각을 순서 유지 기능이 있는 암호화 기법(OPES)으로 암호화하여 다수의 제1중간 암호문들을 생성하고, 상기 제2평문 집합에 속하는 다수의 평문들 각각을 순서를 뒤집어 유지하는 암호화 기법(Order Reversing Encryption Scheme(ORES))로 암호화하여 다수의 제2중간 암호문들을 생성하는 단계; 및
    상기 클라이언트가 상기 다수의 제1중간 암호문들 각각에 제1식별 비트를 삽입하여 다수의 제1최종 암호문들을 생성하고, 상기 다수의 제2중간 암호문들 각각에 제2식별 비트를 삽입하여 다수의 제2최종 암호문들을 생성하는 단계를 포함하는 암호화 방법.
  8. 제7항에 있어서, 상기 의사 난수 생성기로부터 발생한 데이터는 1-비트 데이터인 암호화 방법.
  9. 제7항에 있어서, 상기 제1식별 비트는 0과 1중에서 어느 하나이고 상기 제2식별 비트는 상기 0과 상기 1중에서 다른 하나인 암호화 방법.
  10. 제7항에 있어서, 상기 암호화 방법은,
    상기 클라이언트가 암호문 집합을 생성하기 위하여, 상기 다수의 제1최종 암호문들 각각과 상기 다수의 제2최종 암호문들 각각을 크기 순서에 따라 정렬하는 단계를 더 포함하는 암호화 방법.
  11. 제10항에 있어서, 상기 암호화 방법은,
    상기 클라이언트가 상기 암호문 집합을 제1암호문 집합과 제2암호문 집합으로 분리하는 단계; 및
    상기 클라이언트가 상기 제1암호문 집합의 위치와 상기 제2암호문 위치를 서로 바뀌어 데이터베이스에 저장하는 단계를 더 포함하는 암호화 방법.
  12. 클라이언트가 정렬된 n(n은 자연수)개의 제1평문들 중에서 i(i는 자연수, i<n)번째 평문(di)과 의사 난수 발생기로부터 발생한 n개의 난수들 중에서 i번째 난수를 일대일 대응시켜 n개의 제2평문들을 생성하는 단계;
    상기 클라이언트가 상기 난수의 값에 따라 상기 n개의 제2평문들을 제1평문 집합과 제2평문 집합으로 분리하는 단계;
    상기 클라이언트가 상기 제1평문 집합에 속하는 다수의 평문들 각각을 순서 유지 기능이 있는 암호화 기법(OPES)으로 암호화하여 다수의 제1중간 암호문들을 생성하고, 상기 제2평문 집합에 속하는 다수의 평문들 각각을 순서를 뒤집어 유지하는 암호화 기법(Order Reversing Encryption Scheme(ORES))로 암호화하여 다수의 제2중간 암호문들을 생성하는 단계; 및
    상기 클라이언트가 상기 다수의 제1중간 암호문들 각각에 제1식별 비트를 삽입하여 다수의 제1최종 암호문들을 생성하고, 상기 다수의 제2중간 암호문들 각각에 제2식별 비트를 삽입하여 다수의 제2최종 암호문들을 생성하는 단계를 포함하는 암호화 방법.
  13. 제12항에 있어서, 상기 난수의 값은 0 또는 1인 암호화 방법.
  14. 제12항에 있어서, 상기 제1식별 비트는 0과 1중에서 어느 하나이고 상기 제2 식별 비트는 상기 0과 상기 1중에서 다른 하나인 암호화 방법.
  15. 제12항에 있어서, 상기 암호화 방법은,
    상기 클라이언트가 암호문 집합을 생성하기 위하여, 상기 다수의 제1최종 암호문들 각각과 상기 다수의 제2최종 암호문들 각각을 크기 순서에 따라 정렬하는 단계를 더 포함하는 암호화 방법.
  16. 제15항에 있어서, 상기 암호화 방법은,
    상기 클라이언트가 상기 암호문 집합을 제1암호문 집합과 제2암호문 집합으로 분리하는 단계; 및
    상기 클라이언트가 상기 제1암호문 집합의 위치와 상기 제2암호문 집합의 위치를 서로 바뀌어 데이터베이스에 저장하는 단계를 더 포함하는 암호화 방법.
  17. 수신된 평문을 OPES로 암호화하여 제1중간 암호문을 생성하고 상기 수신된 평문을 ORES로 암호화하여 제2중간 암호문을 생성하는 단계;
    상기 제1중간 암호문에 제1식별 비트를 삽입하여 제1최종 암호문을 생성하고 상기 제2중간 암호문에 제2식별 비트를 삽입하여 제2최종 암호문을 생성하고, 생성된 제1최종 암호문이 서버의 데이터베이스에 존재하는지의 여부를 묻기 위한 제1쿼리와 생성된 제2최종 암호문이 상기 데이터베이스에 존재하는지의 여부를 묻기 위한 제2쿼리를 상기 서버로 전송하는 단계; 및
    상기 제1쿼리에 응답하여 상기 서버로부터 출력된 상기 제1최종 암호문을 포함하는 제1행 또는 상기 제2쿼리에 응답하여 상기 서버로부터 출력된 상기 제2최종 암호문을 포함하는 제2행을 수신하는 단계를 포함하는 클라이언트의 데이터 처리방법.
  18. 제17항에 있어서, 상기 클라이언트의 데이터 처리방법은,
    상기 평문을 포함하는 행(row)을 얻기 위하여, 상기 제1행 또는 상기 제2행에 대하여 상기 제1식별 비트에 기초하여 상기 OPES 및 상기 제2식별 비트에 기초하여 상기 ORES 중에서 적어도 하나로 복호화하는 단계를 더 포함하는 클라이언트의 데이터 처리방법.
  19. 구간 질의를 위한 제1평문(a0)과 제2평문(a1)을 수신하는 단계;
    상기 제1평문과 상기 제2평문 각각을 OPES로 암호화하여 제1중간 암호문과 제2중간 암호문 각각을 생성하고, 상기 제1평문과 상기 제2평문 각각을 ORES로 암호화하여 제3중간 암호문과 제4중간 암호문 각각을 생성하는 단계;
    상기 제1중간 암호문과 상기 제2중간 암호문 각각에 제1식별 비트를 삽입하여 제1최종 암호문(Ep(a0))과 제2최종 암호문(Ep(a1))을 생성하고, 상기 제3중간 암호문과 상기 제4중간 암호문 각각에 제2식별 비트를 삽입하여 제3최종 암호문(Er(a0))과 제4최종 암호문(Er(a1)) 각각을 생성하는 단계;
    상기 제1최종 암호문의 크기와 상기 제2최종 암호문의 크기를 비교하고,
    Ep(a0)<Ep(a1)인 경우 서버의 데이터베이스에 제1집합([Ep(a0), Ep(a1)]이 존재하는지의 여부를 묻는 제1쿼리를 상기 서버로 전송하고, Ep(a0)>Ep(a1)인 경우 상기 데이터베이스에 상기 제1집합([Ep(a0), Ec(a1)])의 여집합이 존재하는지의 여부를 묻는 제2쿼리를 상기 서버로 전송하는 단계; 및
    상기 제3최종 암호문의 크기와 상기 제4최종 암호문의 크기를 비교하고,
    Er(a0)>Er(a1)인 경우 서버의 데이터베이스에 제2집합([Er(a1), Er(a0)]이 존재하는지의 여부를 묻는 제3쿼리를 상기 서버로 전송하고, Er(a0)<Er(a1)인 경우 상기 데이터베이스에 상기 제2집합([Er(a1), Er(a0)])의 여집합이 존재하는지의 여부를 묻는 제4쿼리를 상기 서버로 전송하는 단계; 및
    상기 제1쿼리와 상기 제2쿼리 중에서 어느 하나에 기초하여 상기 서버로부터 전송된 상기 제1집합과 상기 제1집합의 여집합 중에서 어느 하나, 및 상기 제3쿼리와 상기 제4쿼리 중에서 어느 하나에 기초하여 상기 서버로부터 전송된 상기 제2집합과 상기 제2집합의 여집합 중에서 어느 하나를 수신하는 단계를 포함하는 클라이언트의 데이터 처리방법.
  20. 제19항에 있어서, 상기 클라이언트의 데이터 처리방법은,
    크기 순서로 정렬된 평문 집합([a0, a1])을 얻기 위하여, 상기 제1집합과 상기 제1집합의 여집합 중에서 어느 하나에 대해서는 상기 제1식별 비트에 기초하여 상기 OPES로 복호화하고 상기 제2집합과 상기 제2집합의 여집합 중에서 어느 하나에 대해서는 상기 제2식별 비트에 기초하여 상기 ORES로 복호화하는 단계를 더 포 함하는 클라이언트의 데이터 처리방법.
KR1020080004939A 2008-01-16 2008-01-16 암호화 방법, 클라이언트의 데이터 처리 방법 KR100995123B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080004939A KR100995123B1 (ko) 2008-01-16 2008-01-16 암호화 방법, 클라이언트의 데이터 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080004939A KR100995123B1 (ko) 2008-01-16 2008-01-16 암호화 방법, 클라이언트의 데이터 처리 방법

Publications (2)

Publication Number Publication Date
KR20090079028A KR20090079028A (ko) 2009-07-21
KR100995123B1 true KR100995123B1 (ko) 2010-11-18

Family

ID=41336961

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080004939A KR100995123B1 (ko) 2008-01-16 2008-01-16 암호화 방법, 클라이언트의 데이터 처리 방법

Country Status (1)

Country Link
KR (1) KR100995123B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101727312B1 (ko) * 2010-12-22 2017-04-14 한국전자통신연구원 순서 보존 암호화 및 복호화 장치와 그 방법
KR101115490B1 (ko) * 2011-11-07 2012-05-08 펜타시큐리티시스템 주식회사 평문의 확률적 분포특성을 고려한 순위 보존 암호화 방법
KR102219476B1 (ko) * 2014-05-14 2021-02-24 삼성전자주식회사 데이터를 암호화하는 방법 및 그를 위한 장치
KR102222936B1 (ko) * 2019-04-12 2021-03-04 성균관대학교산학협력단 완전 동형 암호화된 데이터를 데이터베이스에 저장하는 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186725A (ja) * 2001-12-17 2003-07-04 Kanet:Kk リレーショナルデータベース及びそのリレーショナルデータベースにおけるインデックステーブルの作成方法並びに該リレーショナルデータベースにおける範囲検索の方法およびその範囲検索のための順位検索方法
KR100737359B1 (ko) * 2006-10-04 2007-07-10 (주)이글로벌시스템 암호화된 컬럼의 인덱스 구축방법
US7395437B2 (en) * 2004-01-05 2008-07-01 International Business Machines Corporation System and method for fast querying of encrypted databases

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186725A (ja) * 2001-12-17 2003-07-04 Kanet:Kk リレーショナルデータベース及びそのリレーショナルデータベースにおけるインデックステーブルの作成方法並びに該リレーショナルデータベースにおける範囲検索の方法およびその範囲検索のための順位検索方法
US7395437B2 (en) * 2004-01-05 2008-07-01 International Business Machines Corporation System and method for fast querying of encrypted databases
KR100737359B1 (ko) * 2006-10-04 2007-07-10 (주)이글로벌시스템 암호화된 컬럼의 인덱스 구축방법

Also Published As

Publication number Publication date
KR20090079028A (ko) 2009-07-21

Similar Documents

Publication Publication Date Title
CN112367169B (zh) 数据加解密方法、装置、设备及存储介质
TWI738333B (zh) 保護隱私安全的多方聯合進行特徵評估的方法及裝置
JP6180177B2 (ja) プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム
JP3502200B2 (ja) 暗号通信システム
CN101436208B (zh) 一种密文数据库隐私保护查询方法
CN106972927B (zh) 一种针对不同安全等级的加密方法及系统
US20090138698A1 (en) Method of searching encrypted data using inner product operation and terminal and server therefor
EP1876748A2 (en) Privacy-preserving concatenation of strings
US8467526B2 (en) Key evolution method and system of block ciphering
CN106911712B (zh) 一种应用于分布式系统的加密方法及系统
US20040037424A1 (en) Information distribution and processing
US20020095604A1 (en) Encryption system and method
CN111510464B (zh) 一种保护用户隐私的疫情信息共享方法及系统
CN114640523A (zh) 一种计算机数据安全加密算法及系统
CN114443718A (zh) 一种数据查询方法及系统
RU2376712C2 (ru) Система и способ трехфазного шифрования информации
KR100995123B1 (ko) 암호화 방법, 클라이언트의 데이터 처리 방법
Ahmad et al. A secure network communication protocol based on text to barcode encryption algorithm
CN114969128A (zh) 一种基于安全多方计算技术的隐匿查询方法、系统和存储介质
Hameed et al. Modified Vigenère cipher algorithm based on new key generation method
CN113411328B (zh) 一种基于数据预辨识敏感数据高效传输系统
Yang et al. Trust enhancement over range search for encrypted data
CN114629701B (zh) 基于信息加密的信息展示系统
CN114422230B (zh) 一种基于数据加密的信息传输系统
CN112637442B (zh) 云服务器和本地端进行循环图像加密的方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131104

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141110

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151028

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160219

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171023

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20181101

Year of fee payment: 9