KR20160136060A - 공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치 - Google Patents

공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치 Download PDF

Info

Publication number
KR20160136060A
KR20160136060A KR1020150069751A KR20150069751A KR20160136060A KR 20160136060 A KR20160136060 A KR 20160136060A KR 1020150069751 A KR1020150069751 A KR 1020150069751A KR 20150069751 A KR20150069751 A KR 20150069751A KR 20160136060 A KR20160136060 A KR 20160136060A
Authority
KR
South Korea
Prior art keywords
data
keyword
cipher text
shared
personal data
Prior art date
Application number
KR1020150069751A
Other languages
English (en)
Other versions
KR101697868B1 (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 KR1020150069751A priority Critical patent/KR101697868B1/ko
Publication of KR20160136060A publication Critical patent/KR20160136060A/ko
Application granted granted Critical
Publication of KR101697868B1 publication Critical patent/KR101697868B1/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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F17/30
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Bioethics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Storage Device Security (AREA)

Abstract

공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치가 개시된다. 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법은, 키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하는 단계, 사용자의 사용자 단말로부터 비밀키로 암호화된 개인 데이터와 키워드를 수신하는 단계, 사용자와 관련된 저장영역에 암호화된 개인 데이터와 키워드를 파일 서버에 저장하는 단계, 사용자 단말로부터 사용자 측에서 검색하고자 하는 키워드에 대한 개인 데이터 트랩도어를 수신하는 단계, 및 개인 데이터 트랩도어를 이용하여 파일 서버에서 개인 데이터 암호문을 검색하는 단계를 포함한다.

Description

공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치{METHOD FOR ENCRYPTING DATA FOR SHARING OR SEARCHING THE DATA AND APPARATUS FOR PERFORMING THE METHOD}
본 발명은 데이터 암호화 시스템에 관한 것으로, 더욱 상세하게는, 외부 저장소나 데이터베이스에 저장될 데이터를 암호화함에 있어 데이터에 대한 공유 또는 검색이 용이하도록 데이터를 암호화하여 선택적인 공유 기능이 있는 서버에 적용하기 위한 데이터 암호화 방법 및 이를 수행하는 장치에 관한 것이다.
신뢰할 수 없는 외부 저장소나 파일 서버에 데이터를 저장할 때, 저장하는 데이터의 기밀성을 유지하는 것이 필수요소 중 하나이다. 만약 데이터를 암호화하여 저장하는 경우 데이터의 기밀성은 보장할 수 있다. 하지만 사용자가 특정 데이터만을 얻고자 하는 경우에 파일 서버는 데이터의 내용을 알 수 없어서 사용자가 원하는 데이터를 찾을 수 없다. 그리하여 특정 데이터를 검색하고자 하는 경우, 사용자는 모든 데이터를 파일 서버로부터 얻은 다음 복호화하여 원하는 데이터를 찾아야 한다는 단점이 있다.
이러한 문제를 해결하기 위해서 단일 사용자 환경에서의 검색 가능한 암호화 기법을 사용할 수 있다. 이 기법은 사용자가 저장하는 데이터에 대한 키워드를 생성하여 암호화해서 파일 서버에 저장한다. 후에 검색하고자 하는 키워드에 대한 트랩도어를 생성하여 파일 서버에게 전달하면, 파일 서버는 이를 이용하여 키워드에 대응되는 데이터를 검색할 수 있게 된다. 이때 검색하는 데이터나 키워드의 내용은 암호화되어 있기 때문에 파일 서버가 알 수 없다.
하지만 최근 클라우드 서비스와 같은 외부 저장 서비스는 파일 서버에 저장된 데이터를 여러 사용자가 공유할 수 있는 기능을 제공한다. 그러나, 이러한 단일 사용자 환경에서의 검색 가능한 암호화 기법은 공유 기능을 제공하는 상황에 사용하기에는 적절하지 않다.
그래서 공유 기능을 제공하는 상황에 만족하고자 Dong 등이 2011년에 다중 사용자 환경에서의 검색 가능한 암호화 기법을 제안하였다("Shared and Searchable Encrypted Data for Untrusted Servers", Journal of Computer Security 19(3): 367-397p, 2011). 이 기법은 모든 사용자들이 사용자 고유의 비밀 키를 이용하여 파일 서버에 데이터를 암호화하여 저장할 수 있다. 그리고 모든 사용자들이 사용자 고유의 비밀 키를 이용하여 트랩도어를 생성하여 파일 서버에 저장된 모든 암호화된 데이터(다른 사용자가 저장한 데이터를 포함함)를 검색할 수 있고, 암호화된 데이터를 복호화할 수 있다. 즉, 이 기법은 파일 서버에 저장된 모든 데이터들을 모든 사용자가 제한 없이 검색 및 복호화를 할 수 있다는 것을 의미이다.
하지만, 대부분의 실제 개인 데이터의 암호화에서는 모든 데이터를 공유하는 것이 아니라, 사용자가 원하는 특정 데이터에 대해서만 공유를 하고자 하기 때문에 Dong 등의 기법 역시 실제 상황과는 완전히 맞지 않다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 사용자가 본인의 개인 데이터를 네트워크에 연결된 개인 공간에 암호화하여 저장한 후에 원하는 데이터에 대해서만 선택적으로 사용자 간 공유가 가능하도록 함으로써 외부 저장소 및 데이터베이스에서 암호화된 데이터를 용이하게 검색할 수 있는 데이터 암호화 방법 및 이를 수행하는 장치를 제공하는데 있다.
또한, 본 발명의 다른 목적은, 외부 저장소에서 데이터베이스의 공유 및 검색에 이용되는 데이터와 키워드가 암호화됨에 따라 데이터의 기밀성을 보장할 수 있는 데이터 암호화 방법 및 데이터 암호화 장치를 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 측면에서는, 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법으로서, 키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하는 단계; 상기 사용자의 사용자 단말로부터 상기 비밀키로 암호화된 개인 데이터와 키워드를 수신하는 단계; 상기 사용자와 관련된 저장영역에 상기 암호화된 개인 데이터와 키워드를 파일 서버에 저장하는 단계; 상기 사용자 단말로부터 상기 사용자측에서 검색하고자 하는 키워드에 대한 개인 데이터 트랩도어를 수신하는 단계; 및 상기 개인 데이터 트랩도어를 이용하여 파일 서버에서 상기 암호화된 개인 데이터를 검색하는 단계를 포함하는, 데이터 암호화 방법을 제공한다.
상기 목적을 달성하기 위한 본 발명의 다른 측면에서는, 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법으로서, 키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하는 단계; 상기 사용자의 사용자 단말로부터 상기 비밀키로 암호화된 개인 데이터와 키워드를 수신하는 단계; 상기 사용자와 관련된 저장영역에 상기 암호화된 개인 데이터와 키워드를 저장하는 단계; 상기 사용자 단말로부터 상기 서버 장치의 파일 서버에 저장된 개인 데이터 암호문 중 적어도 일부의 공유를 위한 재암호화 키를 수신하는 단계; 상기 재암호화 키를 이용하여 상기 파일 서버에 저장된 개인 데이터 암호문과 개인 키워드 암호문을 재암호화하여 공유 데이터 암호문과 공유 키워드 암호문으로 변환하는 단계; 다른 사용자 단말로부터 상기 파일 서버에서 상기 공유 데이터 암호문을 검색 가능하도록 하는 공유 키워드에 대한 공유 데이터 트랩도어를 수신하는 단계; 및 상기 공유 데이터 트랩도어를 이용하여 상기 파일 서버에 저장된 상기 공유 데이터 암호문을 검색하는 단계를 포함하는, 데이터 암호화 방법을 제공한다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 개인 데이터 저장을 위한 클라우드 서비스를 제공하며 공유 또는 검색을 위한 데이터 암호화를 수행하는 장치로서, 키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하고, 사용자의 사용자 단말로부터 비밀키로 암호화된 개인 데이터와 암호화된 키워드를 수신하며, 사용자 단말로부터 사용자 측에서 검색하고자 하는 특정 키워드에 대한 개인데이터 트랩도어를 수신하는 수신부; 사용자와 관련된 저장영역에 암호화된 개인 데이터와 암호화된 키워드를 저장하는 저장부; 및 개인 데이터 트랩도어를 이용하여 암호화된 개인 데이터를 검색하는 검색부를 포함하는, 데이터 암호화 장치를 제공한다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 데이터를 암호화하여 저장하는 서비스를 제공하며 공유 또는 검색을 위한 데이터 암호화를 수행하는 데이터 암호화 장치로서, 키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하고, 상기 사용자의 사용자 단말로부터 상기 비밀키로 암호화된 개인 데이터와 키워드를 수신하며, 상기 사용자 단말로부터 상기 사용자 측에서 검색하고자 하는 특정 키워드에 대한 개인 데이터 트랩도어를 수신하는 송수신부; 상기 사용자와 관련된 저장영역에 상기 암호화된 개인 데이터와 키워드를 파일 서버에 저장하는 저장부; 및 상기 개인 데이터 트랩도어를 이용하여 상기 파일 서버에 저장된 상기 개인 데이터 암호문을 검색하는 검색부를 포함하는, 데이터 암호화 장치를 제공한다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에 연결된 사용자 단말에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법으로서, 키 관리 서버로부터 상기 서버 장치와 공유하는 비밀키를 수신하는 단계; 상기 비밀키를 이용하여 개인 데이터와 상기 개인 데이터에 대한 키워드를 암호화하는 단계; 상기 서버 장치로 암호화된 개인 데이터와 암호화된 키워드를 전송하는 단계; 상기 서버 장치의 파일 서버에서 사용자와 관련된 저장영역에 저장된 개인 데이터 암호문 또는 개인 키워드 암호문을 검색 가능하게 하는 개인 데이터 트랩도어를 생성하는 단계; 상기 개인 데이터 트랩도어를 상기 서버 장치로 전송하는 단계; 상기 파일 서버에서 상기 개인 데이터 트랩도어를 이용하여 검색한 상기 개인 데이터 암호문을 상기 서버 장치로부터 수신하는 단계; 및 상기 개인 데이터 암호문을 평문 데이터로 복호화하는 단계를 포함하는, 데이터 암호화 방법을 제공한다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 네트워크를 통해 서버 장치에 연결되는 사용자 단말에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법으로서, 키 관리 서버로부터 상기 서버 장치와 공유하는 비밀키를 수신하는 단계; 상기 비밀키를 이용하여 개인 데이터와 상기 개인 데이터에 대한 키워드를 암호화하는 단계; 상기 서버 장치로 암호화된 데이터 개인 데이터와 키워드를 전송하는 단계; 상기 서버 장치의 파일 서버에서 사용자 관련 저장영역에 저장된 개인 데이터 암호문 또는 키워드를 재암호화하기 위한 재암호화 키를 생성하는 단계; 및 상기 재암호화 키를 상기 서버 장치로 전송하는 단계를 포함하는 데이터 암호화 방법을 제공한다. 여기에서, 서버 장치는 상기 재암호화 키를 이용하여 상기 사용자 관련 저장영역에 저장된 개인 데이터 암호문 또는 개인 키워드 암호문을 공유 데이터 암호문 또는 공유 키워드 암호문으로 변환하고, 상기 공유 데이터 암호문을 검색하고자 하는 다른 사용자의 사용자 단말로부터 공유 데이터 트랩도어를 수신하고, 수신한 상기 공유 데이터 트랩도어를 이용하여 상기 공유 데이터 암호문을 검색하고, 검색된 공유 데이터 암호문을 상기 다른 사용자의 사용자 단말로 전달할 수 있다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에 연결되어 공유 또는 검색을 위한 데이터 암호화를 수행하는 데이터 암호화 장치로서, 키 관리 서버로부터 비밀키를 수신하고, 상기 서버 장치로 암호화된 개인 데이터와 키워드를 전송하고, 개인 데이터 트랩도어를 상기 서버 장치로 전송하고, 상기 서버 장치의 파일 서버에서 상기 개인 데이터 트랩도어를 이용하여 검색한 개인 데이터 암호문을 상기 서버 장치로부터 수신하는 송수신부; 상기 비밀키를 이용하여 개인 데이터와 상기 개인 데이터에 대한 키워드를 암호화하고, 상기 서버 장치로부터의 상기 개인 데이터 암호문을 복호화하는 암호화 및 복호화부; 및 상기 파일 서버에서 사용자 관련 저장영역에 저장된 상기 개인 데이터 암호문 또는 개인 키워드 암호문을 검색 가능하게 하는 개인 데이터 트랩도어를 생성하는 트랩도어 생성부를 포함하는, 데이터 암호화 장치를 제공한다.
상기 목적을 달성하기 위한 본 발명의 또 다른 측면에서는, 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에 연결되어 공유 또는 검색을 위한 데이터 암호화를 수행하는 데이터 암호화 장치로서, 키 관리 서버로부터 비밀키를 수신하고, 서버 장치의 파일 서버의 사용자 관련 저장영역에 저장된 상기 공유 데이터 암호문 또는 상기 공유 데이터 암호문에 대한 공유 키워드 암호문을 검색 가능하게 하는 공유 데이터 트랩도어를 상기 서버 장치로 전송하고, 상기 서버 장치로부터 상기 공유 데이터 암호문을 수신하는 송수신부; 상기 공유 데이터 트랩도어를 생성하는 트랩도어 생성부; 및 상기 서버 장치로부터 수신한 상기 공유 데이터 암호문을 복호화하는 암호화 및 복호화부를 포함하는, 데이터 암호화 장치를 제공한다.
상술한 바와 같은 본 발명의 실시예에 따른 공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치를 이용할 경우에는, 사용자가 본인의 개인 데이터를 네트워크상의 개인 공간에 암호화하여 저장한 후에 원하는 개인 데이터에 대해서만 선택적으로 사용자 간 공유가 가능하도록 함으로써 외부 저장소 및 데이터베이스에서 암호화된 데이터를 용이하게 검색할 수 있다.
또한, 외부 저장소뿐만 아니라 데이터베이스의 공유 및 검색에 이용되는 데이터와 키워드가 암호화됨에 따라 데이터의 기밀성을 보장할 수 있다.
도 1은 본 발명의 일실시예에 따른 데이터 암호화 방법 및 이를 수행하는 데이터 암호화 시스템을 설명하기 위한 예시도이다.
도 2 및 도 3은 도 1의 데이터 암호화 방법의 셋업 단계에 대한 예시도이다.
도 4 및 도 5는 도 1의 개인 데이터와 키워드 암호화 단계에 대한 예시도이다.
도 6 내지 도 7은 도 1의 개인 데이터 검색 단계에 대한 예시도이다.
도 8은 도 1의 암호화된 개인 데이터 복호화 단계에 대한 예시도이다.
도 9 내지 도 11은 도 1의 개인 데이터와 키워드 공유 단계에 대한 예시도이다.
도 12 및 도 13은 도 1의 공유 데이터 검색 단계에 대한 예시도이다.
도 14는 도 1의 암호화된 공유 데이터 복호화 단계에 대한 예시도이다.
도 15는 도 1의 데이터 암호화 방법 중 암호화된 개인 데이터의 검색을 위한 방법의 흐름도이다.
도 16은 도 1의 데이터 암호화 방법 중 암호화된 개인 데이터의 공유를 위한 방법의 흐름도이다.
도 17은 본 발명의 다른 실시예에 따른 데이터 암호화 장치에 대한 개략적인 블록도이다.
도 18은 본 발명의 또 다른 실시예에 따른 데이터 암호화 장치에 대한 개략적인 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 본 명세서에서 오해의 소지가 없는 한 어떤 문자의 첨자가 다른 첨자를 가질 때, 표시의 편의를 위해 첨자의 다른 첨자는 첨자와 동일한 형태로 표시될 수 있다.
본 명세서에서 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일실시예에 따른 데이터 암호화 방법 및 이를 수행하는 데이터 암호화 시스템을 설명하기 위한 예시도이다.
도 1을 참조하면, 본 실시예에 따른 데이터 암호화 시스템(1)은 신뢰할 수 있는 키 관리 서버(10), 사용자 단말(20) 및 서버 장치(30)를 포함한다. 서버 장치(30)는 파일 서버(38)를 포함할 수 있다.
키 관리 서버(10)는 신뢰할 수 있는 객체로서 시스템 파라미터와 본인의 키(비밀키)를 생성하며, 생성한 비밀키를 사용자가 데이터 암호화 시스템을 이용할 수 있도록 사용자 단말(20)과 서버 장치(30)로 전달한다.
사용자 단말(20)은 키 관리 서버(10)로부터 받은 비밀키를 이용하여 개인 데이터와 키워드를 암호화하고 암호화된 개인 데이터와 키워드를 서버 장치(30)의 파일 서버에 저장할 수 있다. 사용자 단말(20)은 파일 서버가 특정 키워드에 대해 검색할 수 있도록 트랩도어(trapdoor)를 만들 수 있다. 즉, 사용자 단말(20)은 본인만이 알고 있는 비밀키를 이용하여 파일 서버에 저장하고자 하는 개인 데이터와 키워드에 대해서 자신만의 트랩도어를 만들 수 있어 검색할 수 있다. 또한, 특정 데이터와 키워드에 대해 다른 사용자들과 공유를 원하는 경우, 사용자 단말(20)은 재암호화 키(Re-encryption key)를 생성하여 파일 서버에 전달하고, 파일 서버가 재암호화 키를 이용하여 개인 데이터 암호문과 개인 키워드 암호문을 재암호화(Re-encryption)하여 공유 데이터 암호문과 공유 키워드 암호문으로 변환하도록 함으로써 공유 데이터와 키워드에 대한 모든 사용자들의 검색 및 복호화를 허용할 수 있다.
서버 장치(30)는 파일 서버를 포함하거나 파일 서버에 연결된 프락시 서버(proxy server)를 포함할 수 있고, 파일 서버는 Honest-but-curious 서버일 수 있다. 즉, 파일 서버는 지정된 역할을 적절하게 수행하지만, 사용자의 개인 데이터의 내용에 대해서 알 수 있으면 알고자하는 객체로 가정한다. 다시 말해서, 파일 서버는 사용자와의 프로토콜을 정직하게 실행하지만 데이터 소유자가 아웃소싱한 데이터 파일의 내용에 관심이 있다고 가정한다. 이와 같이 파일 서버는 주어진 컴퓨팅 자원 내에서 데이터 소유자가 저장한 파일의 내용을 알아내고자 노력할 수 있다. 이러한 파일 서버는 사용자 단말(20)로부터 받은 암호화된 개인 데이터와 키워드를 저장하고, 사용자 단말(20)로부터 특정 키워드에 대한 트랩도어를 받으면 이를 이용하여 트랩도어에 맞는 키워드를 검색하여 사용자 단말(20)로 암호화된 데이터를 전달할 수 있다.
본 실시예에 따른 데이터 암호화 시스템(1)에서 수행하는 데이터 암호화 방법은 셋업(setup) 단계(S1), 개인 데이터와 키워드 암호화 단계(S2), 개인 데이터 검색 단계(S3), 개인 데이터 복호화 단계(S4), 개인 데이터와 키워드 공유 단계(S5), 공유 데이터 검색 단계(S6), 및 공유 데이터 복호화 단계(S7)를 포함할 수 있다.
전술한 단계들을 구체적으로 설명하면 다음과 같다. 다만, 이하에서 설명할 각 도면에서 "↑R"는 임의의 난수를 선택하여 오른쪽 항에 있는 값에 대입한다는 의미를 나타낸다. 그리고, "←"는 오른쪽 항의 연산을 통해서 왼쪽 항의 값을 구한다는 의미를 나타낸다. 그리고, 그룹 G, 생성자 g, 수도 랜덤 함수 F, 해쉬 함수 H는 이 분야의 통상의 지식을 가진 기술자에게는 널리 알려져 있는 일반적인 기술이므로, 여기서는 자세하게 설명하지 않는다.
도 2 및 도 3은 도 1의 데이터 암호화 방법의 셋업 단계에 대한 예시도들이다.
본 실시예에 따른 데이터 암호화 방법은 선택적인 공유 기능이 있는 세미 트러스트형(Semi-Trusted) 서버를 위한 공유 및 검색 가능한 데이터 암호화 방법을 구성하는 셋업 단계에서는 Init 알고리즘(S1a)과 Keygen 알고리즘(S1b)을 이용할 수 있다.
즉, 신뢰할 수 있는 키 관리 서버는, Init 알고리즘(S1a)을 이용하여 시스템 파라미터와 본인의 비밀 키를 생성하며, 이를 이용하여 Keygen 알고리즘(S1b)을 실행하여 사용자와 이 사용자에 대한 파일 서버를 위한 비밀 키를 생성하여 사용자 단말과 서버 장치에 각각 전달할 수 있다.
보다 구체적으로, 도 2에 도시한 바와 같이, Init 알고리즘(S1a)은, 소수 q, 그룹 G, 그룹의 생성자 g, 수도 랜덤 함수 F, 해쉬 함수 H를 정의하는 하나 이상의 단계들(S11, S12), 난수를 ↑R s, x 연산을 통해 선택하는 난수 선택 단계(S13), 및 신뢰할 수 있는 키 관리 서버의 공개키를 hg x 연산을 통해 구하는 공개키 생성 단계(S14)를 포함한다.
Init 알고리즘(S1a)의 입력값은 시스템 보안 강도 값(1 k )을 포함하고 그 출력값은 시스템 파라미터와 신뢰할 수 있는 키 관리 서버의 비밀키를 포함할 수 있다. 시스템 파라미터는 소수 q, 소수 q를 위수로 하는 그룹 G, 그룹 G의 생성자 g, 신뢰할 수 있는 키 관리 서버의 공개 키 h, 수도 랜덤 함수 F, 해쉬 함수 H를 포함하고, 비밀키 즉 마스터 세션 키(master session key, msk)로서 입력 1 k 에 대한 랜덤 값 x, s를 가질 수 있다.
소수, 그룹, 생성자 정의 단계(S11)는 Init 알고리즘의 입력으로 받은 암호 알고리즘의 보안 강도에 따라 소수 q를 정의하고 이 소수 q를 위수로 하는 그룹 G 와 그룹 G의 생성자 g를 결정한다. 수도 랜덤 함수 F와 해쉬 함수 h의 정의 단계(S12)에서는 키워드를 입력으로 받아 수도 랜덤 값을 생성하는 수도 랜덤 함수 F를 정의하며, 시스템 전체에서 사용되는 해쉬 함수 h를 정의한다. 난수 선택 단계(S13)는 수도 랜덤 함수의 키로 사용될 s값과 신뢰할 수 있는 키 관리 서버의 비밀키 중 하나인 x를 임의의 난수로 선택한다. 키 관리 서버의 공개 키 생성 단계(S14)는 시스템 내에서 사용될 키 관리 서버의 공개 키를 생성하는 단계로서 생성자를 x 제곱하여서 계산할 수 있다.
Keygen 알고리즘(S1b)은 도 3에 도시한 바와 같이 비밀키로 쓰일 난수 선택 단계(S16), 파일 서버 비밀 키 생성 단계(S17), 및 사용자 비밀 키 생성 단계(S18)를 포함한다. Keygen 알고리즘(S1b)의 입력값은 신뢰할 수 있는 키 관리 서버의 비밀키 x, s와 특정 사용자의 신원을 갖는 사용자 i를 포함하고, 사용자 i의 비밀 키 x i 11 , x i 12 , x i 13 , s와 사용자 i에 대한 파일 서버의 비밀 키 x i 2 , x i 12를 포함한다.
비밀 키로 쓰일 난수를 선택하는 난수 선택 단계(S16)는 비밀키로 사용될 x i 1 , x i 11 , x i 12 값을 임의의 난수로 선택한다. 파일 서버 비밀 키 생성 단계(S17)는 x - x i 1 mod q를 계산하여 파일 서버 비밀키(x i 2)를 구한다. 그런 다음, 사용자 비밀 키 생성 단계(S18)는 x i 3 = x i 1 - (x i 11 + x i 12) mod q를 계산하여 사용자 비밀키(x i 13)를 구한다.
도 4 및 도 5는 도 1의 개인 데이터와 키워드 암호화 단계에 대한 예시도들이다.
본 실시예에 따른 선택적인 공유 기능이 있는 세미 트러스트형(Semi-Trusted) 서버를 위한 공유 및 검색 가능한 데이터 암호화 방법을 구성하는 개인 데이터와 키워드 암호화 단계에서는 P-Data- Enc 알고리즘(S2a)과 P-Keyword- Enc 알고리즘(S2b)을 이용할 수 있다.
즉, 사용자 단말은 신뢰할 수 있는 키 관리 서버로부터 전달받은 사용자의 비밀 키를 이용하여 개인 데이터와 키워드 암호 단계를 통해 데이터와 키워드를 암호화하여 파일 서버에 전달할 수 있다. 이때, 사용자 단말은 먼저 P-Data- Enc 알고리즘(S2a)을 통해 사용자의 개인 데이터를 암호화하여 개인 데이터 암호문을 얻고, P-Keyword-Enc 알고리즘(S2b)을 통해 사용자의 키워드를 암호화하여 개인 키워드 암호문을 얻을 수 있다. 이후 암호화된 개인 데이터 즉 개인 데이터 암호문과 암호화된 키워드 즉 개인 키워드 암호문을 파일 서버에게 전달하면 파일 서버는 이 값을 사용자에 대한 미리 설정된 저장영역에 저장할 수 있다.
보다 구체적으로 설명하면, 도 4에 도시한 바와 같이 P-Data- Enc 알고리즘(S2a)은 개인 데이터 암호화를 위한 난수 선택 단계(S20), 제 1 서브 개인 데이터 암호문 생성 단계(S21), 및 제 2 서브 개인 데이터 암호문 생성 단계(S22)를 포함할 수 있다.
P-Data- Enc 알고리즘(S2a)의 입력값은 사용자 i의 비밀키 x i 11과 암호화할 데이터 m을 포함할 수 있고, 그 출력값은 사용자 i의 개인 데이터 암호문을 포함할 수 있다.
개인 데이터 암호화를 위한 난수 선택 단계(S20)는 임의의 난수 r m 을 선택한다. 제 1 서브 개인 데이터 암호문 생성 단계(S21)는 임의의 난수를 이용한 공개키 연산을 통해 제1 서브 개인 데이터 암호문(c m 1 '')을 구한다. 임의의 난수를 이용한 공개키 연산은
Figure pat00001
를 계산하는 것을 지칭할 수 있다. 제 2 서브 개인 데이터 암호문 생성 단계(S22)는 비밀키와 임의의 난수를 이용한 공개키 연산을 통해 제2 서브 개인 데이터 암호문(c m 2 '')을 구한다. 비밀키와 임의의 난수를 이용한 공개키 연산은
Figure pat00002
를 계산하는 것을 지칭할 수 있다. 이후 출력값인 사용자 i의 개인 데이터 암호문을 파일 서버에 전달한다. 개인 데이터 암호문을 나타내면 c i '' (m) = (c m 1 '', c m 2 '')와 같다.
다음으로, 도 5에 도시한 바와 같이 P-Keyword- Enc 알고리즘(S2b)은 개인 키워드 암호화를 위한 난수 선택 단계(S24), 키워드에 대한 수도 랜덤 넘버 생성 단계(S25), 제 1 서브 개인 키워드 암호문 생성 단계(S26), 제 2 서브 개인 키워드 암호문 생성 단계(S27), 제 3 서브 개인 키워드 암호문 생성 단계(S28), 및 제 4 서브 개인 키워드 암호문 생성 단계(S29)를 포함할 수 있다.
P-Keyword- Enc 알고리즘(S2b)의 입력값은 사용자 i의 비밀키 x i 11s, 그리고 암호화할 키워드 w를 포함할 수 있고, 그 출력값은 사용자 i의 개인 키워드 암호문을 포함할 수 있다.
개인 키워드 암호화를 위한 난수 선택 단계(S24)는 임의의 난수 r w s i 를 선택한다. 키워드에 대한 수도 랜덤 넘버 생성 단계(S25)는 제1 난수(r w )를 이용한 수도 랜덤 함수 Fs(w)의 연산을 통해 제1 수도 랜덤 넘버(s w )를 구하고, 제2 난수(s i )를 이용한 수도 랜덤 함수 Fs i (w)의 연산을 통해 제2 수도 랜덤 넘버(s w ')를 구한다.
제 1 서브 개인 키워드 암호문 생성 단계(S26)는 임의의 난수와 수도 랜덤 넘버를 이용한 제1 공개키 연산을 통해 제1 서브 개인 키워드 암호문(c w 1 '')을 구한다. 임의의 난수와 수도 랜덤 넘버를 이용한 제1 공개키 연산을 나타내면
Figure pat00003
와 같다.
제 2 서브 개인 키워드 암호문 생성 단계(S27)는 임의의 난수와 비밀키의 곱, 비밀키와 제1 수도 랜덤 넘버의 곱 및 비밀키와 제2 수도 랜덤 넘버의 곱을 이용한 제2 공개키 연산을 통해 제 2 서브 개인 키워드 암호문(c w 2 '')을 구한다. 제2 공개키 연산을 나타내면
Figure pat00004
와 같다.
제 3 서브 개인 키워드 암호문 생성 단계(S28)는 임의의 난수와 비밀키의 곱에 비밀키와 제1 수도 랜덤 넘버의 곱을 더한 것을 이용하는 그룹 생성자의 해쉬 함수를 연산하여 제 3 서브 개인 키워드 암호문(c w 3 '')을 구한다. 그룹 생성자에 대한 해쉬 함수를 나타내면
Figure pat00005
와 같다.
제 4 서브 개인 키워드 암호문 생성 단계(S29)는 키워드 암호화용 임의의 난수(r w )에 대한 공개키(
Figure pat00006
)를 해쉬 함수로 연산하여 제 4 서브 개인 키워드 암호문(c w 4 '')을 구한다. 이후 P-Keyword- Enc 알고리즘(S2b)의 출력값인 사용자 i의 개인 키워드 암호문을 파일 서버에 전달한다. 개인 키워드 암호문을 나타내면 c i '' (w) = (c w 1 '', c w 2 '', c w 3 '', c w 4 '')와 같다.
도 6 및 도 7은 도 1의 데이터 암호화 방법 중 외부 저장소 및 데이터베이스에서의 개인 데이터 검색 단계에 대한 예시도들이다.
본 실시예에 따른 선택적인 공유 기능이 있는 세미 트러스트형(Semi-Trusted) 서버를 위한 공유 및 검색 가능한 데이터 암호화 방법을 구성하는 개인 데이터 검색 단계에서는 P-Trapdoor 알고리즘(S3a) 및 P-Search 알고리즘(S3b)을 이용할 수 있다.
즉, 사용자가 개인 데이터를 검색하고자 하는 경우, 개인 데이터 검색 단계를 통해 데이터를 검색할 수 있는데, 먼저 사용자는 사용자 단말에서 P-Trapdoor 알고리즘(S3a)을 통해 검색하고자 하는 키워드에 대한 트랩도어인 개인 데이터 트랩도어를 생성하여 파일 서버에 전달한다. 그러면 파일 서버는 P-Search 알고리즘(S3b)에서 해당 트랩도어를 이용하여 개인 데이터 암호문을 검색한 후 사용자에게 전달할 수 있다.
보다 구체적으로, 도 6에 도시한 바와 같이 P-Trapdoor 알고리즘(S3a)은 개인 데이터 트랩도어 생성을 위한 난수 선택 단계(S31), 키워드에 대한 수도 랜덤 넘버 생성 단계(S32), 제 1 서브 개인 데이터 트랩도어 생성 단계(S33), 및 제 2 서브 개인 데이터 트랩도어 생성 단계(S34)를 포함할 수 있다.
P-Trapdoor 알고리즘(S3a)의 입력값은 사용자 i의 제1 내지 제3 비밀키 x i 11 , x i 12 , s i 와 데이터 암호화 시스템에서 찾으려고 하는 키워드 w 를 포함할 수 있고, 그 출력값은 사용자 i의 개인 데이터 트랩도어를 포함할 수 있다. 개인 데이터 트랩도어를 나타내면 T pi ( w ) = ( t p 1 , t p 2 )와 같다.
개인 데이터 트랩도어 생성을 위한 난수 선택 단계(S31)에서는 변수 집합의 구성요소로서 포함할 임의의 난수 r pt 를 선택한다. 키워드에 대한 수도 랜덤 넘버 생성 단계(S32)에서는 제3 비밀키를 이용하여 찾고자 하는 키워드의 수도 랜덤 함수 Fs i ( w )의 계산을 수행하고 이를 통해 수도 랜덤 넘버(s w ')를 구한다.
제 1 서브 개인 데이터 트랩도어 생성 단계(S33)는 임의의 난수를 이용하는 공개키 연산을 통해 제 1 서브 개인 데이터 트랩도어(t p 1)을 구한다. 이 공개키 연산을 나타내면
Figure pat00007
와 같다.
제 2 서브 개인 데이터 트랩도어 생성 단계(S34)는 임의의 난수와 제1 비밀키의 곱에 제2 비밀키와 수도 랜덤 넘버의 곱을 더한 값을 이용하는 공개키 연산을 통해 제2 서브 개인 데이터 트랩도어(t p 2)를 구한다. 이 공개키 연산을 나타내면
Figure pat00008
와 같다. 이후 P-Trapdoor 알고리즘(S3a)의 출력값인 사용자 i의 개인 데이터 트랩도어 T pi ( w ) = ( t p 1 , t p 2 )는 파일 서버에 전달된다.
다음으로, 도 7에 도시한 바와 같이 P-Search 알고리즘(S3b)은 개인 데이터 트랩도어 값 생성 단계(S35) 및 개인 데이터 트랩도어를 이용한 키워드 검색 단계(S36)를 포함할 수 있다.
P-Search 알고리즘(S3b)의 입력값은 사용자의 신원을 포함하는 사용자 i, 개인 데이터 트랩도어 T pi ( w ), 파일 서버에 사용자 i가 본인만이 알 수 있도록 저장한 암호화된 데이터와 키워드들 E( D i ), 및 사용자 i와 파일 서버가 공유한 비밀키 x i12 를 포함할 수 있고, 그 출력값은 검색 조건을 만족하는 출력 데이터(c i '' (m), c i '' (w)) 를 포함할 수 있다.
개인 데이터 트랩도어 값 생성 단계(S35)에서는 비밀키를 이용한 개인 데이터 트랩도어의 공개키 연산을 통해 개인 데이터 트랩도어 값(T p )를 구한다. 이 공개키 연산을 나타내면
Figure pat00009
와 같다.
개인 데이터 트랩도어를 이용한 키워드 검색 단계(S36)에서는 모든 출력 데이터가 파일 서버에 저장된 데이터의 원소인 가정{(c i '' (m), c i '' (w))
Figure pat00010
E( D i )}에 대해서 조건식 H( c w 2 ''  · T p -1) = c w 3 ''이 성립하는지 확인한 후, 성립하면 출력 데이터(c i '' (m), c i '' (w))를 사용자 i의 사용자 단말에 검색 결과로서 전달할 수 있다. 여기서, 출력 데이터의 값 D i 는 데이터 D와 키워드 w(D)의 순서(sequences)를 포함하는 사용자 i의 모든 문서를 포함할 수 있다.
도 8은 도 1의 데이터 암호화 방법 중 암호화된 개인 데이터 복호화 방법에 대한 예시도이다.
본 실시예에 따른 선택적인 공유 기능이 있는 세미 트러스트형(Semi-Trusted) 서버를 위한 공유 및 검색 가능한 데이터 암호화 방법을 구성하는 개인 데이터 복호화 단계에서는 P-Data- Dec 알고리즘(S4)을 이용할 수 있다. 즉, 사용자 단말은 개인 데이터 복호화 단계에서 P-Data- Dec 알고리즘(S4)을 실행하여 개인 데이터 암호문을 복호화하고 이를 통해 평문 데이터를 얻을 수 있다.
보다 구체적으로, 도 8에 도시한 바와 같이, P-Data- Dec 알고리즘(S4)은 개인 데이터 암호문 복호화 단계(S41)를 포함할 수 있다. P-Data- Dec 알고리즘(S4)의 입력값은 사용자 i의 비밀 키(x i 11)와 사용자 i의 개인 데이터 암호문 c i '' (m)을 포함할 수 있고, 그 출력값은 평문 데이터 m을 포함할 수 있다.
개인 데이터 암호문 복호화 단계(S41)에서는 사용자 i의 비밀키인 x i 11을 이용하여 암호문에 대한 해독 즉 복호화 연산을 통해 평문 데이터(m)를 구한다. 본 실시예의 복호화 연산을 나타내면
Figure pat00011
와 같다.
도 9 내지 도 11은 도 1의 데이터 암호화 방법 중 개인 데이터와 키워드 공유 방법에 대한 예시도들이다.
본 실시예에 따른 선택적인 공유 기능이 있는 세미 트러스트형(Semi-Trusted) 서버를 위한 공유 및 검색 가능한 데이터 암호화 방법을 구성하는 개인 데이터와 키워드 공유 단계에서는 Data-Re- Enc - Keygen 알고리즘(S5a), Keyword-Re-Enc-Keygen 알고리즘(S5b), 및 Re- Enc - Keygen 알고리즘(S5c)을 이용할 수 있다.
즉, 사용자가 본인의 개인 데이터를 공유하고자 하는 경우 개인 데이터와 키워드 공유 단계를 통해 공유할 수 있는데, 먼저 사용자는 사용자 단말에서 Data-Re-Enc-Keygen 알고리즘(S5a)과 Keyword-Re- Enc - Keygen 알고리즘(S5b)을 이용하여 공유하고자 하는 개인 데이터와 그 키워드에 대한 재암호화 키를 생성하여 파일 서버에 전달할 수 있다. 그러면 파일 서버는 재암호화 키와 파일 서버의 비밀 키를 이용하는 Re- Enc - Keygen 알고리즘(S5c)에서의 재암호화를 통해 사용자의 개인 데이터와 개인 키워드를 공유 데이터와 공유 키워드로 변환할 수 있다.
보다 구체적으로, 도 9에 도시한 바와 같이 Data-Re- Enc - Keygen 알고리즘(S5a)은 데이터 재암호화를 위한 난수 선택 단계(S51), 제 1 서브 데이터 재암호화 키 생성 단계(S52), 제 2 서브 데이터 재암호화 키 생성 단계(S53), 및 제 3 서브 데이터 재암호화 키 생성 단계(S54)를 포함할 수 있다.
Data-Re- Enc - Keygen 알고리즘(S5a)의 입력값은 사용자 i의 비밀키(x i 12, x i 13)와 제 1 서브 개인 데이터 암호문( c m 1 '')을 포함할 수 있고, 그 출력값은 개인 데이터 또는 개인 데이터 암호문에 대한 재암호화 키를 포함할 수 있다. 재암호화 키를 나타내면 k data -re (w) = (k 1, k 2, k 3)와 같다.
데이터 재암호화를 위한 난수 선택 단계(S51)는 임의의 난수(r re )를 선택한다. 제 1 서브 데이터 재암호화 키 생성 단계(S52)는 제 1 서브 개인 데이터 암호문( c m 1 '')을 제 1 서브 데이터 재암호화 키(k 1)로 정한다.
제 2 서브 데이터 재암호화 키 생성 단계(S53)는 임의의 난수를 이용하여 제2 서브 데이터 재암호화 키(k 2)를 구한다. 여기서, 임의의 난수를 이용한 제 2 서브 데이터 재암호화 키(또는 그 암호문)의 생성은
Figure pat00012
를 계산하여 구해질 수 있다.
제 3 서브 데이터 재암호화 키 생성 단계(S54)는 세 개의 비밀키와 제 1 서브 개인 데이터 암호문을 이용하여 제 3 서브 데이터 재암호화 키(k 3)를 구한다. 세 개의 비밀키와 제 1 서브 개인 데이터 암호문을 이용한 제 3 서브 데이터 재암호화 키의 생성은
Figure pat00013
를 계산하여 구해질 수 있다. 이후 Data-Re-Enc-Keygen 알고리즘(S5a)의 출력값인 데이터에 대한 재암호화 키를 파일 서버에게 전달한다. 재암호화 키를 나타내면 k data -re (w) = (k 1, k 2, k 3)와 같다.
Keyword-Re- Enc - Keygen 알고리즘(S5b)은 도 10에 도시한 바와 같이 키워드 재암호화를 위한 난수 선택 단계(S55), 제 1 서브 키워드 재암호화 키 생성 단계(S56), 제 2 서브 키워드 재암호화 키 생성 단계(S57), 및 제 3 서브 키워드 재암호화 키 생성 단계(S58)를 포함한다.
Keyword-Re- Enc - Keygen 알고리즘(S5b)의 입력값은 사용자 i의 제1 및 제2 비밀키들(x i 12, x i 13)과 제 1 서브 개인 키워드 암호문( c w1 '')이며, 그 출력값은 키워드에 대한 재암호화 키 k keyword -re (w) = (k 4, k 5, k 6)이다.
키워드 재암호화를 위한 난수 선택 단계(S55)는 임의의 난수(r re ')를 선택한다. 제 1 서브 키워드 재암호화 키 생성 단계(S56)는 제 1 서브 개인 키워드 암호문(cw1'')을 제 1 서브 키워드 재암호화 키(k 4)로 정한다.
제 2 서브 키워드 재암호화 키 생성 단계(S57)는 임의의 난수를 이용하여 제 2 서브 키워드 재암호화 키(k 5)를 구한다. 임의의 난수를 이용한 제 2 서브 키워드 재암호화 키의 생성은
Figure pat00014
를 계산하여 구해질 수 있다.
제 3 서브 키워드 재암호화 키 생성 단계(S58)는 임의의 난수 및 제1 비밀키의 곱과 제 1 서브 개인 키워드 암호문에 대한 두 비밀키 합의 공개키 계산을 통하여 제 3 서브 키워드 재암호화 키(k 6)를 구한다. 공개키 계산을 예시하면
Figure pat00015
와 같다. 이후 Keyword-Re- Enc - Keygen 알고리즘(S5b)의 출력값인 데이터에 대한 재암호화 키 k keyword -re (w) = (k 4, k 5, k 6)를 파일 서버에 전달한다.
Re- Enc - Keygen 알고리즘(S5c)은 도 11에 도시한 바와 같이 공유하고자 하는 개인 데이터 검색 단계(S59), 제 1 서브 공유 데이터 암호문 생성 단계(S591), 제 2 서브 공유 데이터 암호문 생성 단계(S592), 제 1 서브 공유 키워드 암호문 생성 단계(S593), 제 2 서브 공유 키워드 암호문 생성 단계(S594), 및 제 3 서브 공유 키워드 암호문 생성 단계(S595)를 포함할 수 있다.
Re- Enc - Keygen 알고리즘(S5c)의 입력값은 사용자의 신원을 포함하는 사용자 i, 데이터에 대한 재암호화 키 k data -re (w), 키워드에 대한 재암호화 키 k keyword -re (w), 개인 데이터 트랩도어 값 T p , 파일 서버에 사용자 i가 본인만이 알 수 있도록 저장한 암호화된 데이터와 키워드들 E( D i ), 및 사용자 i와 파일 서버가 공유한 비밀 키 x i 12를 포함할 수 있고, 그 출력값은 공유된 데이터 c i ' (m) = ( c m 1 ' , c m 2 ' )와 공유된 키워드 c i ' (w) = ( c w 1 ' , c w 2 ' , c w 3 ' )를 포함할 수 있다.
공유하고자 하는 개인 데이터 검색 단계(S59)는 공유된 데이터에서 사용자 본인만이 알 수 있도록 저장된 암호화된 데이터와 키워드들을 뺀 모든 데이터{c i '' (m), c i '' (w)) E( D i ) }에 대해서 제 1 식 k 1 = c m 1 ''와 제 2 식 k 4 = c w 1 ''이 성립하는 두 개의 해 (c i '' (m), c i '' (w))를 검색한다.
제 1 서브 공유 데이터 암호문 생성 단계(S591)는 공유된 데이터 중 하나(c m 1 '')를 제 1 서브 공유 데이터 암호문(c m 1 ')으로 설정한다.
제 2 서브 공유 데이터 암호문 생성 단계(S592)는 공유된 데이터 중 다른 하나(c m 2 ''), 비밀키, 제 2 암호화 키(k 2), 제 3 암호화 키(k 3) 및 상기의 공유된 데이터 중 하나(c m 1 '')를 이용한 암호문 연산을 통해 제 2 서브 공유 데이터 암호문(c m 2 ')을 구한다. 제 2 서브 공유 데이터 암호문을 생성하는 암호문 계산은
Figure pat00016
와 같이 표현될 수 있다.
제 1 서브 공유 키워드 암호문 생성 단계(S593)에서는 제 1 서브 공유 데이터 암호문에 대응하는 하나의 키워드(c w 1 '')을 공유할 키워드 중 하나(c w 1 ')로 정한다. 그리고 이와 유사하게, 제1 서브 공유 데이터 암호문에 대응하는 다른 하나의 키워드(c w 4 '')를 공유할 키워드 중 다른 하나(c w 3 ')로 정한다.
제 2 서브 공유 키워드 암호문 생성 단계(S594)에서는 제 2 서브 공유 데이터 암호문에 대응하는 키워드(c w 2 ''), 비밀키(x i 2), 제 5 암호화 키(k 5), 제6 암호화 키(k 6) 및 제 1 서브 공유 키워드 암호문(c w 1 '')을 이용한 암호문 연산을 통해 공유할 키워드 중 다른 하나(c w 2 ' )를 구한다. 제 2 서브 공유 키워드 암호문의 생성은
Figure pat00017
를 계산하여 구해질 수 있다.
제 3 서브 공유 키워드 암호문 생성 단계(S595)는 제 1 서브 공유 데이터 암호문에 대응하는 다른 키워드(c w 3 '')을 상기 공유된 키워드 중 다른 하나(c w 3 ' )로 정한다. 이후 Re- Enc - Keygen 알고리즘(S5c)의 출력값은 공유된 데이터 c i ' (m) = ( c m 1 ' , c m 2 ' )와 공유된 키워드 c i ' (w) = ( c w 1 ' , c w 2 ' , c w 3 ' )를 포함하며, 그것은 파일 서버에 저장될 수 있다.
도 12 및 도 13은 도 1의 데이터 암호화 방법 중 공유 데이터 검색 단계에 대한 예시도이다.
본 실시예에 따른 선택적인 공유 기능이 있는 세미 트러스트형(Semi-Trusted) 서버를 위한 공유 및 검색 가능한 데이터 암호화 방법을 구성하는 공유 데이터 검색 단계에서는 M-Trapdoor 알고리즘(S6a) 및 M-Search 알고리즘(S6b)을 이용할 수 있다.
즉, 모든 사용자가 공유된 데이터를 검색하고자 하는 경우 공유 데이터 검색 단계를 통해 데이터를 검색할 수 있는데, 먼저 사용자는 사용자의 비밀 키를 이용하여 M-Trapdoor 알고리즘(S6a)을 실행하여 검색하고자 하는 키워드에 대한 트랩도어인 공유 데이터 트랩도어를 생성하여 파일 서버에 전달한다. 그러면 파일 서버는 M-Search 알고리즘(S6b)에서 이 트랩도어를 이용하여 데이터를 검색한 후 검색 결과를 사용자에게 전달할 수 있다.
보다 구체적으로, 도 12에 도시한 바와 같이, M-Trapdoor 알고리즘(S6a)은 공유 데이터 트랩도어 생성을 위한 난수 선택 단계(S61), 키워드에 대한 수도 랜덤 넘버 생성 단계(S62), 제 1 서브 공유 데이터 트랩도어 생성 단계(S63), 및 제 2 서브 공유 데이터 트랩도어 생성 단계(S64)를 포함할 수 있다.
M-Trapdoor 알고리즘(S6a)의 입력값은 사용자 i의 비밀키(x i 1 , s)와 찾으려고 하는 키워드 w 를 포함할 수 있고, 그 출력값은 사용자 i의 공유 데이터 트랩도어 즉 T mi ( w ) = ( t m 1 , t m 2 )를 포함할 수 있다.
공유 데이터 트랩도어 생성을 위한 난수 선택 단계(S61)에서는 임의의 난수(r mt )를 선택한다. 키워드에 대한 수도 랜덤 넘버 생성 단계(S62)에서는 수도 랜덤 함수 Fs( w )를 통해 수도 랜덤 넘버(s w )를 구한다.
제 1 서브 공유 데이터 트랩도어 생성 단계(S63)는 임의의 난수에서 수도 랜덤 넘버를 뺀 값을 그룹 생성자의 지수로 하는 암호문(
Figure pat00018
)을 계산하여 제 1 서브 공유 데이터 트랩도어(t m 1)를 구한다.
제 2 서브 공유 데이터 트랩도어 생성 단계(S64)는 임의의 난수를 지수로 하는 공개키(h)와, 비밀키 및 임의의 난수의 곱을 지수로 하는 그룹 생성자(g)와, 비밀키 및 수도 랜덤 넘버의 곱을 지수로 하는 그룹 생성자의 조합에 대한 암호문(
Figure pat00019
)을 계산하여 제 2 서브 공유 데이터 트랩도어(t m 2)를 구한다. 이후 데이터 암호화 장치는 M-Trapdoor 알고리즘(S6a)의 출력값인 사용자 i의 공유 데이터 트랩도어 T mi ( w ) = ( t m 1 , t m 2 )를 파일 서버에 전달할 수 있다.
M-Search 알고리즘(S6b)은 도 13에 도시한 바와 같이 공유 데이터 트랩도어 생성 단계(S65), 공유 데이터 트랩도어를 이용한 키워드 검색 단계(S66), 사용자 i를 위한 제 1 서브 공유 데이터 암호문 생성 단계(S67), 사용자 i를 위한 제 2 서브 공유 데이터 암호문 생성 단계(S68)를 포함한다.
M-Search 알고리즘(S6b)의 입력값은 사용자의 신원을 포함하는 사용자 i, 공유 데이터 트랩도어 T mi ( w ), 파일 서버에 저장되어 있는 암호화된 공유 데이터와 키워드들 E( D m ), 및 사용자 i와 파일 서버가 공유한 비밀키(x i 2)를 포함할 수 있고, 그 출력값은 사용자 i에 대한 공유 데이터 암호문 즉 c i (m) = ( c m 1 , c m 2 )를 포함할 수 있다. 공유 데이터 암호문은 임의의 다른 사용자인 사용자 i의 사용자 단말에 전송될 수 있다.
공유 데이터 트랩도어 생성 단계(S65)는 비밀키를 지수로 하는 공유 데이터 트랩도어의 암호문
Figure pat00020
를 계산하여 개인 데이터 트랩도어 값 T m 을 구한다.
공유 데이터 트랩도어를 이용한 키워드 검색 단계(S66)는 각각의 (c i ' (m), c i ' (w)) E( D m )에 대응하는 모든 데이터에 대해서 식 H( c w 2 '  · T m -1) = c w 3 '를 만족하는 (c i ' (m), c i ' (w))를 검색한다.
사용자 i를 위한 제 1 서브 공유 데이터 암호문 생성 단계(S67)는 위에서 찾은 c i ' (m)c m 1 '를 제 1 서브 공유 데이터 암호문(c m 1)으로 정한다.
사용자 i를 위한 제 2 서브 공유 데이터 암호문 생성 단계(S68)는 위에서 찾은 c m 1 '을 이용하여 암호문
Figure pat00021
를 계산하고 이를 통해 제 2 서브 공유 데이터 암호문(c m 2)를 구한다. 이를 나타내면,
Figure pat00022
과 같다.
이후 M-Search 알고리즘(S6b)의 출력값인 사용자 i에 대한 공유 데이터 암호문 c i (m) = ( c m 1 , c m 2 )는 사용자 i의 사용자 단말에 전달될 수 있다.
도 14는 도 1의 데이터 암호화 방법 중 암호화된 공유 데이터의 복호화 단계에 대한 예시도이다.
본 실시예에 따른 선택적인 공유 기능이 있는 세미 트러스트형(Semi-Trusted) 서버를 위한 공유 및 검색 가능한 데이터 암호화 방법을 구성하는 공유 데이터 복호화 단계에서는 M-Data- Dec 알고리즘(S7)을 포함한다. 즉, 사용자는 공유 데이터 복호화 단계를 통해 M-Data- Dec 알고리즘(S7)을 실행하여 공유 데이터 암호문을 복호화하고 그에 의해 평문 데이터를 얻을 수 있다.
M-Data- Dec 알고리즘(S7)은 도 14에 도시한 바와 같이 사용자 i를 위한 공유 데이터 암호문 복호화 단계(S71)를 포함한다. M-Data- Dec 알고리즘(S7)의 입력값은 사용자 i의 비밀 키(x i 1)와 사용자 i에 대한 공유 데이터 암호문 c i (m)을 포함할 수 있고, 그 출력값은 평문 데이터(m)를 포함할 수 있다.
공유 데이터 암호문 복호화 단계(S71)에서는 사용자 i의 비밀키인 x i 1을 이용하여 복호화 연산
Figure pat00023
를 계산하고, 그에 의해 평문 데이터를 구할 수 있다.
본 실시예에서 특정 사용자에 대한 시스템 이용 권한을 폐지하고자 하는 경우 파일 서버의 사용자에 대한 파일 서버 비밀 키 삭제를 통해 가능하다.
일례로, Dong 등의 종래의 기법에서는 사용자가 저장하는 모든 데이터를 파일 서버가 파일 서버의 비밀 키를 이용하여 공유 데이터로 변환하기 때문에, 제한 없이 모든 사용자들에게 모든 데이터가 공유된다. 하지만, 본 실시예에서는 사용자가 저장하는 데이터를 파일 서버가 공유 데이터로 변환하기 위해서는 사용자가 만들어주는 데이터와 키워드에 대한 재암호화 키와 파일 서버의 비밀 키가 필요하다. 그래서 저장되는 데이터는 사용자가 재암호화 키를 만들어서 파일 서버에 준 데이터와 키워드에 대해서만 모든 사용자들에게 데이터 공유가 가능하다.
이와 같이, 본 실시예에 따른 데이터 암호화 방법은 Dong 등의 종래 기법에서 모든 데이터를 사용자 제한 없이 공유하는 것과 달리, 사용자가 원하는 경우에만 특정 데이터에 대한 공유가 가능한 기법을 구현할 수 있는 장점이 있다. 이를 위해서 사용자 i는 저장하고자 하는 데이터와 키워드에 대해서 본인만이 알고 있는 비밀키를 이용하여 암호화를 한 뒤에, 이렇게 암호화된 데이터와 키워드 자체를 Dong 등의 종래 기법의 데이터와 키워드의 형태로 공유할 수 있다. 이러한 방법을 이용하면 모든 사용자가 사용자 i가 저장한 암호화된 데이터와 키워드에 대한 접근 권한을 여전히 가지고 있지만, 공유되지 않은 데이터와 키워드는 다른 사용자들이 알 수 없도록 암호화되어 있기 때문에 이를 검색할 수가 없고 검색을 하더라도 이 암호화된 데이터를 복호화할 수 없는 장점이 있다.
또한, Dong 등의 종래 기법은 파일 서버에 저장된 데이터 중 사용자 i가 본인의 데이터 일부를 공유하고자 하는 경우 파일 서버에서 암호화된 데이터와 키워드를 검색한 다음 해당 데이터를 다운로드 받은 뒤에 이를 복호화한 후 다시 파일 서버에 저장하여야 한다. 그렇기 때문에 이러한 종래 방법은 계산량과 통신량 측면에서 본 실시예에 비해 매우 비효율적임을 알 수 있다. 전체적으로 본 실시예의 데이터 암호화 방법과 종래 기술의 데이터 암호화 방법을 비교해보면 본실시예의 데이터 암호화 방법이 종래 기술에 비해 모든 측면에서 효율적이고 유용하다는 것을 알 수 있다.
도 15는 도 1의 데이터 암호화 방법 중 암호화된 개인 데이터의 검색을 위한 방법의 흐름도이다.
본 실시예에 따른 암호화된 개인 데이터 검색 과정을 도 15를 참조하여 설명하면 다음과 같다.
키 관리 서버(10)는 시스템 파라미터를 생성한다(S1a). 그리고 비밀키를 생성한다(S1b). 키 관리 서버(10)는 생성한 비밀키를 사용자 단말(20)과 서버 장치(30)에 전달한다(S151, S152). 서버 장치(30)에는 파일 서버(38)가 연결될 수 있다.
다음, 사용자 단말(20)은 사용자 명령에 따라 개인 데이터 및 키워드를 암호화한다(S2). 그리고, 암호화된 개인 데이터 및 키워드를 서버 장치(30)로 전송한다(S153).
사용자 단말(20)로부터 암호화된 개인 데이터 및 키워드를 수신한 서버 장치(30)는 해당 데이터를 파일 서버(38)에 저장한다(S154).
다음, 파일 서버에 저장된 개인 데이터 암호문를 검색하기 위하여 사용자 단말(20)은 개인 데이터 트랩도어를 생성한다(S3a). 트랩도어는 시스템 보안이 제거된 비밀 통로로서, 서비스 기술자나 유지 보수 프로그램 작성자의 액세스 편의를 위해 시스템 설계자가 만들어 놓은 시스템의 보안 구멍에 해당할 수 있다. 트랩도어는 백도어(backdoor)라고도 불릴 수 있고, 대규모의 응용 프로그램이나 운영 체제(Operating System) 개발에서는 코드 도중에 트랩도어라는 중단 부분을 설정하여 관리자가 쉽게 데이터 암호문에 접근할 수 있도록 만들어질 수 있다.
다음, 생성된 개인 데이터 트랩도어는 서버 장치(30)에 전달되고(S155), 서버 장치(30)는 개인 데이터 트랩도어를 이용하여 사용자의 파일 서버(38)에 저장된 개인 데이터 암호문을 검색할 수 있다(S36). 그리고 서버 장치(30)는 검색된 개인 데이터 암호문을 검색 결과로서 사용자 단말(20)에 전달할 수 있다(S156).
다음, 사용자 단말은 파일 서버(38)에서 개인 데이터 트랩도어를 토대로 검색한 검색 결과를 받고 이를 복호화하여 평문 데이터를 얻을 수 있다(S4).
도 16은 도 1의 데이터 암호화 방법 중 암호화된 개인 데이터의 공유를 위한 방법의 흐름도이다.
본 실시예에 따른 암호화된 개인 데이터 공유 과정을 도 16을 참조하여 설명하면 다음과 같다.
키 관리 서버(10)는 시스템 파라미터를 생성하고(S1a), 시스템 파라미터에 기초하여 비밀키를 생성한다(S1b). 키 관리 서버(10)는 생성한 비밀키를 사용자 단말(20)과 서버 장치(30)에 전달한다(S151, S152). 서버 장치(30)에는 파일 서버(38)가 연결될 수 있다. 그리고, 키 관리 서버(10)는 다른 사용자와 관련된 비밀키를 다른 사용자 단말(21)에 전달할 수 있다(S151a).
다음, 사용자 단말(20)은 사용자 입력 등에 따라 개인 데이터 및 키워드를 암호화한다(S2). 그리고, 암호화된 개인 데이터 및 키워드를 서버 장치(30)로 전송한다(S153). 사용자 단말(20)로부터 암호화된 개인 데이터 및 키워드를 수신한 서버 장치(30)는 해당 데이터를 파일 서버(38)에 저장한다(S154).
다음, 파일 서버에 저장된 개인 데이터 암호문 중 다른 사용자와 공유하고자 하는 데이터의 변환을 위하여 사용자 단말(20)은 재암호화 키를 생성하고(S5a), 생성한 재암호화 키를 서버 장치(30)로 전송한다(S157).
다음, 서버 장치(30)는 파일 서버에 저장된 사용자의 개인 데이터 암호문 및 개인 키워드 암호문 중 적어도 일부를 재암호화 키를 이용하여 공유 데이터 암호문 및 공유 키워드 암호문으로 변환한다(S158).
다음, 파일 서버(38)에 저장된 공유 데이터 암호문 및/또는 공유 키워드 암호문을 검색하고자 하는 다른 사용자는 다른 사용자 단말(21)에서 키 관리 서버(10)로부터 받은 다른 비밀키를 이용하여 공유 데이터 트랩도어를 생성하고(S5b), 다른 사용자의 사용자 정보와 함께 공유 데이터 트랩도어를 서버 장치(30)로 전송할 수 있다(S159).
공유 데이터 트랩도어를 수신한 서버 장치(30)는 사용자 정보와 공유 데이터 트랩도어에 기초하여 파일 서버(38)에 저장된 공유 데이터 암호문 및/또는 공유 키워드 암호문을 검색하고(S6), 검색된 공유 키워드 암호문 또는 이에 대응하는 공유 데이터 암호문을 다른 사용자 단말(21)로 전달할 수 있다(S160).
공유 데이터 암호문을 수신한 다른 사용자 단말(21)은 비밀키를 이용하여 공유 데이터 암호문을 복호화하여 평문 데이터를 얻을 수 있다(S7).
도 17은 본 발명의 다른 실시예에 따른 데이터 암호화 장치에 대한 개략적인 블록도이다.
본 실시예에 따른 데이터 암호화 장치는 사용자 단말(20)에 대응할 수 있다. 따라서, 본 실시예에 따른 데이터 암호화 장치는 참조부호 20으로 표시된다. 한편, 본 실시예에 따른 데이터 암호화 장치의 구성은 아래에서 설명하는 서버 장치에도 적용될 수 있고 또한 그 역도 가능함은 아래의 설명으로 명백하게 될 것이다.
사용자 단말에 적용가능한 데이터 암호화 장치(20)는 도 17에 도시한 바와 같이 프로세서(22), 메모리(24) 및 통신 인터페이스(26)를 포함할 수 있다.
프로세서(22)는 하나 이상의 코어, 캐시 메모리, 메모리 인터페이스 및 주변장치 인터페이스를 포함할 수 있다. 프로세서(22)가 멀티 코어 구조를 구비하는 경우, 멀티 코어(multi-core)는 두 개 이상의 독립 코어를 단일 집적 회로로 이루어진 하나의 패키지로 통합한 것을 지칭한다. 단일 코어는 중앙 처리 장치를 지칭할 수 있다. 중앙처리장치(CPU)는 MCU(micro control unit)와 주변 장치(외부 확장 장치를 위한 집적회로)가 함께 배치되는 SOC(system on chip)로 구현될 수 있으나, 이에 한정되지는 않는다. 코어는 처리할 명령어를 저장하는 레지스터(register), 비교, 판단, 연산을 담당하는 산술논리연산장치(arithmetic logical unit, ALU), 명령어의 해석과 실행을 위해 CPU를 내부적으로 제어하는 제어부(control unit), 내부 버스 등을 구비할 수 있다.
또한, 프로세서(22)는 하나 이상의 데이터 프로세서, 이미지 프로세서, 또는 코덱(CODEC)을 포함할 수 있으나, 이에 한정되지는 않는다. 데이터 프로세서, 이미지 프로세서 또는 코덱은 별도로 구성될 수도 있다. 또한, 프로세서(22)는 주변장치 인터페이스와 메모리 인터페이스를 구비할 수 있고, 그 경우, 주변장치 인터페이스는 프로세서(22)와 입출력 시스템 및 여러 다른 주변 장치를 연결하고, 메모리 인터페이스는 프로세서(22)와 메모리(24)를 연결할 수 있다.
전술한 구성의 프로세서(22)는 여러 가지의 소프트웨어 프로그램을 실행하여 데이터 암호화 방법을 수행하기 위하여 데이터 입력, 데이터 처리 및 데이터 출력을 수행할 수 있다. 또한, 프로세서(22)는 메모리(24)에 저장되어 있는 특정한 소프트웨어 모듈(명령어 세트)을 실행하여 해당 모듈에 대응하는 특정한 여러 가지의 기능을 수행할 수 있다. 즉, 프로세서(22)는 메모리(24)에 저장된 소프트웨어 모듈들에 포함되는 데이터 암호화 방법을 위한 모듈들에 의해 모바일 장치 등의 사용자 단말에서 서버 장치와의 연동을 통해 검색 또는 공유 가능한 데이터 암호화 방법을 수행할 수 있다.
전술한 데이터 암호화 방법을 구현하기 위하여 프로세서(22)는 송수신부(221), 암호화/복호화부(222), 트랩도어 생성부(223) 및 재암호화 키 생성부(224)를 구비할 수 있다. 그 경우, 송수신부(221)는 키 관리 서버로부터 비밀키를 수신하고, 서버 장치로 암호화된 개인 데이터와 암호화된 키워드를 전송하고, 개인 데이터 트랩도어를 서버장치로 전송하고, 서버장치의 파일서버에서 개인 데이터 트랩도어를 이용하여 검색한 상기의 암호화된 개인 데이터를 서버장치로부터 수신할 수 있다.
또한, 암호화/복호화부(222)는 비밀키를 이용하여 개인 데이터와 개인 데이터에 대한 키워드를 암호화하고, 서버장치로부터 수신한 암호화된 개인 데이터를 복호화하여 평문 데이터를 출력할 수 있다. 트랩도어 생성부(223)는 파일 서버에서 사용자 저장영역에 저장된 암호화된 개인 데이터 및/또는 암호화된 키워드를 검색 가능하게 하는 개인 데이터 트랩도어를 생성할 수 있다. 그리고 재암호화 키 생성부(224)는 파일서버에서 사용자 관련 저장영역에 저장된 상기의 암호화된 개인 데이터 및/또는 암호화된 키워드를 재암호화하여 공유 데이터 암호문 및/또는 공유 키워드 암호문으로 변환하도록 하기 위한 재암호화 키를 생성할 수 있다.
메모리(24)는 하나 이상의 자기 디스크 저장 장치와 같은 고속 랜덤 액세스 메모리 및/또는 비휘발성 메모리, 하나 이상의 광 저장 장치 및/또는 플래시 메모리를 포함할 수 있다.
메모리(24)는 소프트웨어, 프로그램, 명령어 집합 또는 이들의 조합을 저장할 수 있다. 메모리(24)는 암호화된 개인 데이터 및 암호화된 개인 키워드를 저장할 수 있다. 또한, 메모리(24)는 트랩도어를 저장할 수 있고, 재암호화 키를 저장할 수 있다.
소프트웨어의 구성요소는 운영 체제(operating system) 모듈, 통신 모듈, 그래픽 모듈, 사용자 인터페이스 모듈, MPEG(moving picture experts group) 모듈, 카메라 모듈, 하나 이상의 애플리케이션 모듈 등을 포함할 수 있다. 모듈은 명령어들의 집합으로서 명령어 세트(instruction set) 또는 프로그램으로 표현될 수 있다.
운영 체제는 예컨대 MS WINDOWS, LINUX, 다윈(Darwin), RTXC, UNIX, OS X, iOS, 맥 OS, VxWorks, 구글 OS, 안드로이드(android), 바다(삼성 OS), 플랜 9 등과 같은 내장 운영 체제를 포함하고, 모바일 장치 등을 포함하는 사용자 단말의 시스템 작동(system operation)을 제어하는 여러 가지의 구성요소를 구비할 수 있다. 전술한 운영 체제는 여러 가지의 하드웨어(장치)와 소프트웨어 구성요소(모듈) 사이의 통신을 수행하는 기능도 구비할 수 있으나, 이에 한정되지는 않는다.
데이터 암호화 방법을 구현하는 기능의 제어를 제외한 일반적인 시스템 작동 또는 기능의 제어를 위하여 사용자 단말은 예를 들어 메모리 관리 및 제어, 저장 하드웨어 제어 및 관리, 전력 제어 및 관리 등을 위한 하나 이상의 수단이나 이러한 수단에 상응하는 기능을 수행하는 구성부를 포함할 수 있다.
통신 인터페이스(26)는 데이터 암호화 장치(20)가 네트워크를 통해 서버 장치, 파일 서버 또는 네트워크상의 다른 장치와 연결될 수 있도록 하나 이상의 통신 프로토콜을 지원한다.
또한, 통신 인터페이스(26)는 하나 이상의 무선 통신 서브시스템을 포함할 수 있다. 무선 통신 서브시스템은 무선 주파수(radio frequency) 수신기 및 송수신기 및/또는 광(예컨대, 적외선) 수신기 또는 송수신기를 포함할 수 있다. 통신 인터페이스(26)는 네트워크 예를 들어, GSM(Global System for Mobile Communication) 네트워크, EDGE(Enhanced Data GSM Environment) 네트워크, CDMA(Code Division Multiple Access) 네트워크, W-CDMA(W-Code Division Multiple Access) 네트워크, LTE(Long Term Evolution) 네트워크, OFDMA(Orthogonal Frequency Division Multiple Access) 네트워크, WiMax 네트워크, Wi-Fi(Wireless Fidelity) 네트워크, Bluetooth 네트워크 등에 연결되어 적어도 하나 이상의 통신 프로토콜을 지원할 수 있다.
한편, 본 실시예에 있어서, 데이터 암호화 장치의 구성요소들(221 내지 224 등)은 사용자 단말이나 컴퓨터 장치에 탑재되는 기능 블록 또는 모듈일 수 있으나, 이에 한정되지 않는다. 전술한 구성요소들은 이들이 수행하는 일련의 기능(데이터 암호화 방법)을 구현하기 위한 소프트웨어 형태로 컴퓨터 판독 가능 매체(기록매체)에 저장되거나 혹은 캐리어 형태로 원격지에 전송되어 다양한 컴퓨터 장치에서 동작하도록 구현될 수 있다. 여기서 컴퓨터 판독 가능 매체는 네트워크를 통해 연결되는 복수의 컴퓨터 장치나 클라우드 시스템을 포함할 수 있고, 복수의 컴퓨터 장치나 클라우드 시스템 중 적어도 하나 이상은 메모리 시스템에 본 실시예의 데이터 암호화 장치에서 데이터 암호화 방법을 수행하기 위한 프로그램이나 소스 코드 등을 저장할 수 있다.
즉, 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하는 형태로 구현될 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것을 포함할 수 있다.
또한, 컴퓨터 판독 가능 매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 하드웨어 장치는 본 실시예의 소음 제거 방법을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
도 18은 본 발명의 또 다른 실시예에 따른 데이터 암호화 장치에 대한 개략적인 블록도이다.
본 실시예에 따른 데이터 암호화 장치는 서버 장치(30)에 대응할 수 있다. 따라서, 본 실시예에 따른 데이터 암호화 장치는 참조부호 30으로 표시된다. 한편, 본 실시예에 따른 데이터 암호화 장치의 구성은 위에서 설명한 사용자 단말에도 적용될 수 있고 또한 그 역도 가능하다.
서버 장치에 적용가능한 데이터 암호화 장치(30)는 도 18에 도시한 바와 같이 프로세서(32), 메모리(34) 및 통신 인터페이스(36)를 포함할 수 있다.
본 실시예에 따른 데이터 암호화 장치(30)는 메모리(34)에 송수신 모듈(341), 저장 모듈(342), 검색 모듈(343) 및 변환 모듈(344)이 탑재되는 것을 제외하고 도 17을 참조하여 앞서 설명한 데이터 암호화 장치와 유사하거나 동일할 수 있다. 따라서 유사하거나 동일한 구성요소에 대한 설명은 중복을 피하기 위해 생략한다.
송수신 모듈(341)은 프로세서(32)에 의해 수행되어 키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하고, 사용자의 사용자 단말로부터 비밀키로 암호화된 개인 데이터와 암호화된 키워드를 수신하며, 사용자 단말 또는 다른 사용자 단말로부터 사용자 측에서 검색하고자 하는 특정 키워드에 대한 공유 데이터 트랩도어를 수신할 수 있다. 또한, 송수신 모듈(341)은 사용자 단말로부터 암호화된 개인 데이터 중 적어도 일부의 공유를 위한 재암호화 키를 더 수신할 수 있다.
저장 모듈(342)은 프로세서(32)에 의해 수행되어 사용자와 관련된 저장영역에 송수신 모듈(341)을 통해 사용자 단말로부터 수신한 암호화된 개인 데이터와 암호화된 개인 키워드 및/또는 공유 데이터 암호문과 공유 키워드 암호문을 파일 서버(38)에 저장할 수 있다.
검색 모듈(343)은 프로세서(32)에 의해 수행되어 사용자 단말로부터 수신한 개인 데이터 트랩도어를 이용하여 파일 서버에서 암호화된 개인 데이터를 검색할 수 있다. 또한, 검색 모듈(343)은 프로세서(32)에 의해 수행되어 다른 사용자 단말로부터 수신한 공유 데이터 트랩도어를 이용하여 파일 서버에서 저장된 암호화된 개인 데이터의 적어도 일부 즉 공유 데이터 암호문이나 이와 관련된 공유 키워드 암호문을 검색할 수 있다.
변환 모듈(344)은 프로세서(32)에 의해 수행되며 사용자 단말로부터 수신한 재암호화 키를 이용하여 파일 서버에 저장된 개인 데이터 암호문과 개인 키워드 암호문을 재암호화하여 공유 데이터 암호문과 공유 키워드 암호문으로 변환할 수 있다.
본 실시예에 따른 클라우드 서비스 제공 장치의 적어도 일부 기능부 또는 구성부 등으로 구현가능한 데이터 암호화 장치(30)를 사용하는 경우에는 외부 저장소나 네트워크 상의 데이터베이스(파일 서버 등)에 저장되는 데이터를 암호화함에 있어 데이터에 대한 선택적 공유 및/또는 검색이 가능하게 데이터를 암호화하여 저장할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (20)

  1. 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법으로서,
    키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하는 단계;
    상기 사용자의 사용자 단말로부터 상기 비밀키로 암호화된 개인 데이터와 키워드를 수신하는 단계;
    상기 사용자와 관련된 저장영역에 상기 암호화된 개인 데이터와 키워드를 파일 서버에 저장하는 단계;
    상기 사용자 단말로부터 상기 사용자측에서 검색하고자 하는 키워드에 대한 개인 데이터 트랩도어를 수신하는 단계; 및
    상기 개인 데이터 트랩도어를 이용하여 파일 서버에서 개인 데이터 암호문을 검색하는 단계를 포함하는, 데이터 암호화 방법.
  2. 청구항 1에 있어서,
    상기 개인 데이터 암호문을 검색하는 단계에서는 P-Data- Enc 알고리즘을 이용하며,
    상기 P-Data- Enc 알고리즘은 개인 데이터 암호화를 위한 난수 선택 단계, 제1 서브 개인 데이터 암호문 생성 단계 및 제2 서브 개인 데이터 암호문 생성 단계를 포함하고, 여기서 상기 P-Data- Enc 알고리즘의 입력값은 상기 비밀키와 암호화할 데이터를 포함하고, 그 출력값은 사용자의 개인 데이터 암호문을 포함하며,
    상기 개인 데이터 암호화를 위한 난수 선택 단계는 암호화할 개인 데이터에 대한 임의의 난수를 선택하고, 상기 제1 서브 개인 데이터 암호문 생성 단계는 상기 난수를 이용한 공개키 형태의 암호문을 계산하여 제1 서브 개인 데이터 암호문을 생성하고, 제2 서브 개인 데이터 암호문 생성 단계는 상기 비밀키와 상기 임의의 난수의 곱을 지수로 하는 그룹 생성자와 평문 데이터의 곱을 공개키 형태로 암호화하여 제2 서브 개인 데이터 암호문을 생성하며, 여기서 상기 개인 데이터 암호문은 상기 제1 및 제2 서브 개인 데이터 암호문을 포함하는, 데이터 암호화 방법.
  3. 청구항 2에 있어서,
    상기 키워드는 상기 사용자 단말에서 P-Keyword- Enc 알고리즘에 의해 암호화되며,
    상기 P-Keyword- Enc 알고리즘은 개인 키워드 암호화를 위한 난수 선택 단계, 키워드에 대한 수도랜덤 넘버 생성 단계, 제1 서브 개인 키워드 암호문 생성 단계, 제2 서브 개인 키워드 암호문 생성 단계, 제3 서브 개인 키워드 암호문 생성 단계, 및 제4 서브 개인 키워드 암호문 생성 단계를 포함하고, 상기 P-Keyword- Enc 알고리즘의 입력값은 상기 비밀키와 암호화할 키워드를 포함하고 그 출력값은 개인 키워드 암호문을 포함하며,
    상기 개인 키워드 암호화를 위한 난수 선택 단계는 상기 암호화할 키워드에 대한 임의의 제1 난수와 제2 난수를 선택하고, 상기 키워드에 대한 수도 랜덤 넘버 생성 단계는 한 쌍의 난수를 이용하여 제1 및 제2 수도 랜덤 넘버들을 구하고, 상기 제1 서브 개인 키워드 암호문 생성 단계는 상기 비밀키와 상기 제1 난수의 합을 지수로 하는 그룹 생성자의 암호문을 이용하여 제1 서브 개인 키워드 암호문을 생성하고, 상기 제2 서브 개인 키워드 암호문 생성 단계는 상기 제1 난수 및 상기 비밀키의 곱과, 상기 비밀키와 상기 제1 난수에 대응하는 제1 수도 랜덤 넘버의 곱과, 상기 비밀키와 상기 제1 난수에 대응하는 제2 수도 랜덤 넘버의 곱의 합을 지수로 하는 그룹 생성자의 암호문을 이용하여 제2 서브 개인 키워드 암호문을 구하고, 상기 제3 서브 개인 키워드 암호문 생성 단계는 상기 제1 난수 및 상기 비밀키의 곱과 상기 비밀키 및 상기 제1 수도 랜덤 넘버의 곱의 합을 지수로 하는 그룹 생성자에 대한 해쉬 함수를 이용하여 제3 서브 개인 키워드 암호문을 생성하고, 제4 서브 개인 키워드 암호문 생성 단계는 상기 비밀키를 지수로 하는 공개키에 대한 해쉬 함수를 이용하여 제4 서브 개인 키워드 암호문을 구하며, 여기서 상기 개인 키워드 암호문은 상기 제1 내지 제4 서브 개인 키워드 암호문들을 포함하는, 데이터 암호화 방법.
  4. 청구항 3에 있어서,
    상기 개인 데이터 암호문을 검색하는 단계는 P-Trapdoor 알고리즘을 이용하며,
    상기 P-Trapdoor 알고리즘은 개인 데이터 트랩도어 생성을 위한 난수 선택 단계, 키워드에 대한 수도랜덤 넘버 생성 단계, 제1 서브 개인 데이터 트랩도어 생성 단계 및 제2 서브 개인 데이터 트랩도어 생성 단계를 포함하고, 여기서 상기 P-Trapdoor 알고리즘의 입력값은 비밀키와 사용자 측에서 검색하고자 하는 키워드를 포함하고, 그 출력값은 개인 데이터 트랩도어를 포함하며,
    상기 개인 데이터 트랩도어 생성을 위한 난수 선택 단계는, 임의의 난수를 선택하고, 상기 키워드에 대한 수도랜덤 넘버 생성 단계는 상기 비밀키에 대한 수도 랜덤 함수를 이용하여 수도 랜덤 넘버를 생성하고, 상기 제1 서브 개인 데이터 트랩도어 생성 단계는 상기 난수를 지수로 하는 그룹 생성자의 암호문을 이용하여 제1 서브 개인 데이터 트랩도어를 생성하고, 상기 제2 서브 개인 데이터 트랩도어 생성 단계는 상기 난수와 상기 비밀키의 곱과 상기 비밀키와 상기 수도 랜덤 넘버의 곱의 합을 지수로 하는 그룹 생성자의 암호문을 이용하여 제2 서브 개인 데이터 트랩도어를 생성하며, 여기서 상기 개인 데이터 트랩도어는 상기 제1 및 제2 서브 개인 데이터 트랩도어들을 포함하는, 데이터 암호화 방법.
  5. 청구항 4에 있어서,
    상기 개인 데이터 암호문을 검색하는 단계는 P-Search 알고리즘을 더 이용하며,
    상기 P-Search 알고리즘은 개인 데이터 트랩도어 값 생성 단계 및 개인 데이터 트랩도어를 이용한 키워드 검색 단계를 포함하고, 여기서 상기 P-Search 알고리즘의 입력값은 비밀키, 상기 개인 데이터 트랩도어, 및 상기 파일 서버에 사용자 본인만이 알 수 있도록 저장된 암호화된 개인 데이터와 키워드들을 포함하고, 그 출력값은 상기 사용자 측에서 검색하고자 하는 키워드에 대응하는 상기 암호화된 개인 데이터를 포함하며,
    상기 개인 데이터 트랩도어 값 생성 단계는 상기 비밀키와 상기 제1 및 제2 서브 개인 데이터 트랩도어들을 이용하여 개인 데이터 트랩도어 값을 생성하고, 상기 개인 데이터 트랩도어를 이용한 키워드 검색 단계는 상기 제2 서브 키워드 암호문과 역 개인 데이터 트랩도어 값의 해쉬 함수를 이용하여 상기 제3 서브 키워드 암호문과 일치하는지 판단하는, 데이터 암호화 방법.
  6. 청구항 1에 있어서,
    상기 개인 데이터 암호문을 검색하는 단계에서 상기 조합이 상기 제3 서브 키워드 암호문과 일치하면, 상기 사용자 측에서 검색하고자 하는 키워드에 대응하는 상기 개인 데이터 암호문을 추출하여 상기 사용자 단말에 전송하는 단계를 더 포함하며,
    상기 사용자 단말은 상기 개인 데이터 암호문을 평문 데이터로 복호화하는, 데이터 암호화 방법.
  7. 청구항 6에 있어서,
    상기 사용자 단말에서의 상기 개인 데이터 암호문의 복호화는 P-Data- Dec 알고리즘을 이용하며,
    상기 P-Data- Dec 알고리즘은 개인 데이터 암호문 복호화 단계를 포함하고, 여기서 상기 P-Data- Dec 알고리즘의 입력값은 비밀키와 상기 서버 장치로부터의 개인 데이터 암호문을 포함하고, 그 출력값은 평문 데이터를 포함하며,
    상기 개인 데이터 암호문 복호화 단계는 상기 비밀키를 이용하여 상기 개인 데이터 암호문을 복호화하는, 데이터 암호화 방법.
  8. 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법으로서,
    키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하는 단계;
    상기 사용자의 사용자 단말로부터 상기 비밀키로 암호화된 개인 데이터와 키워드를 수신하는 단계;
    상기 사용자와 관련된 저장영역에 상기 암호화된 개인 데이터와 키워드를 저장하는 단계;
    상기 사용자 단말로부터 상기 서버 장치의 파일 서버에 저장된 개인 데이터 암호문 중 적어도 일부의 공유를 위한 재암호화 키를 수신하는 단계;
    상기 재암호화 키를 이용하여 상기 파일 서버에 저장된 개인 데이터 암호문과 개인 키워드 암호문을 재암호화하여 공유 데이터 암호문과 공유 키워드 암호문으로 변환하는 단계;
    다른 사용자 단말로부터 상기 파일 서버에서 상기 공유 데이터 암호문을 검색 가능하도록 하는 공유 키워드에 대한 공유 데이터 트랩도어를 수신하는 단계; 및
    상기 공유 데이터 트랩도어를 이용하여 상기 파일 서버에 저장된 상기 공유 데이터 암호문을 검색하는 단계를 포함하는, 데이터 암호화 방법.
  9. 청구항 8에 있어서,
    상기 공유 데이터 암호문을 검색하는 단계는 M-Trapdoor 알고리즘을 이용하며,
    상기 M-Trapdoor 알고리즘은 공유 데이터 트랩도어 생성을 위한 난수 선택 단계, 키워드에 대한 수도 랜덤 넘버 생성 단계, 제 1 서브 공유 데이터 트랩도어 생성 단계, 및 제 2 서브 공유 데이터 트랩도어 생성 단계를 포함하고, 여기서 상기 M-Trapdoor 알고리즘의 입력값은 비밀키와 찾으려고 하는 키워드를 포함하고, 그 출력값은 공유 데이터 트랩도어를 포함하며,
    상기 공유 데이터 트랩도어 생성을 위한 난수 선택 단계는 임의의 난수를 선택하고, 상기 키워드에 대한 수도 랜덤 넘버 생성 단계는 상기 난수를 이용하는 수도 램덤 함수를 이용하여 수도 랜덤 넘버를 생성하고, 상기 제 1 서브 공유 데이터 트랩도어 생성 단계는 상기 난수에서 상기 수도 랜덤 넘버를 뺀 값을 그룹 생성자의 지수로 하는 암호문을 이용하여 제1 서브 공유 데이터 트랩도어를 구하고, 상기 제 2 서브 공유 데이터 트랩도어 생성 단계는 상기 난수를 지수로 하는 공개키와, 상기 비밀키 및 상기 난수의 곱의 지수로 하는 그룹 생성자와, 상기 비밀키 및 상기 수도 랜덤 넘버의 곱을 지수로 하는 그룹 생성자가 조합된 암호문을 이용하여 제 2 서브 공유 데이터 트랩도어를 구하며, 여기서 상기 공유 데이터 트랩도어는 상기 제1 및 제2 서브 공유 데이터 트랩도어들을 포함하는, 데이터 암호화 방법.
  10. 청구항 9에 있어서,
    상기 공유 데이터 암호문을 검색하는 단계는 M-Search 알고리즘을 더 이용하며,
    상기 M-Search 알고리즘은 공유 데이터 트랩도어 생성 단계, 공유 데이터 트랩도어를 이용한 키워드 검색 단계, 다른 사용자를 위한 제 1 서브 공유 데이터 암호문 생성 단계, 및 상기 다른 사용자를 위한 제 2 서브 공유 데이터 암호문 생성 단계를 포함하고, 여기서 상기 M-Search 알고리즘의 입력값은 상기 다른 사용자의 신원, 상기 공유 데이터 트랩도어, 상기 파일 서버에 저장되어 있는 암호화된 공유 데이터와 공유 키워드들, 및 상기 다른 사용자와 상기 파일 서버가 공유한 비밀키를 포함하고, 그 출력값은 상기 다른 사용자에게 공유된 공유 데이터 암호문이며,
    상기 공유 데이터 트랩도어 생성 단계는 상기 비밀키를 이용하는 제1 및 제2 서브 공유 데이터 트랩도어들의 암호문으로부터 공유 데이터 트랩도어 값을 구하고, 상기 공유 데이터 트랩도어를 이용한 키워드 검색 단계는 상기 사용자 측에서 검색하고자 하는 모든 키워드에 대응하는 공유 데이터가 상기 암호화된 공유 데이터의 원소인 경우에 대하여 상기 제2 서브 공유 키워드 암호문과 역 공유 데이터 트랩도어 값을 이용한 해쉬 함수가 상기 제3 서브 공유 키워드 암호문과 일치하는지 판단하는, 데이터 암호화 방법.
  11. 청구항 10에 있어서,
    상기 공유 데이터 암호문을 검색하는 단계에서 상기 해쉬 함수가 상기 제3 서브 공유 키워드 암호문과 일치하면, 상기 다른 사용자 측에서 검색하고자 하는 키워드에 대응하는 상기 공유 데이터 암호문을 추출하여 상기 다른 사용자의 다른 사용자 단말에 전송하는 단계를 더 포함하며, 상기 다른 사용자 단말은 상기 공유 데이터 암호문을 복호화하여 평문 데이터를 얻는, 데이터 암호화 방법.
  12. 청구항 11에 있어서,
    상기 다른 사용자 단말에서의 상기 공유 데이터 암호문의 복호화는 M-Data-Dec 알고리즘을 이용하며,
    상기 M-Data- Dec 알고리즘은 공유 데이터 암호문 복호화 단계를 포함하고, 여기서 상기 M-Data- Dec 알고리즘의 입력값은 상기 다른 사용자 단말의 비밀키와 상기 공유 데이터 암호문을 포함하고 그 출력값은 평문 데이터를 포함하며,
    상기 공유 데이터 암호문 복호화 단계는 상기 다른 사용자 단말에서 비밀키를 이용하여 상기 공유 데이터 암호문을 복호화하는, 데이터 암호화 방법.
  13. 데이터를 암호화하여 저장하는 서비스를 제공하며 공유 또는 검색을 위한 데이터 암호화를 수행하는 데이터 암호화 장치로서,
    키 관리 서버로부터 특정 사용자에 대한 비밀키를 수신하고, 상기 사용자의 사용자 단말로부터 상기 비밀키로 암호화된 개인 데이터와 키워드를 수신하며, 상기 사용자 단말로부터 상기 사용자 측에서 검색하고자 하는 특정 키워드에 대한 개인 데이터 트랩도어를 수신하는 송수신부;
    상기 사용자와 관련된 저장영역에 상기 암호화된 개인 데이터와 키워드를 파일 서버에 저장하는 저장부; 및
    상기 개인 데이터 트랩도어를 이용하여 상기 파일 서버에 저장된 개인 데이터 암호문을 검색하는 검색부를 포함하는, 데이터 암호화 장치.
  14. 청구항 13에 있어서,
    상기 송수신부는 상기 사용자 단말로부터 상기 개인 데이터 암호문 중 적어도 일부의 공유를 위한 재암호화 키를 더 수신하고,
    상기 데이터 암호화 장치는 상기 재암호화 키를 이용하여 상기 파일 서버에 저장된 개인 데이터 암호문과 개인 키워드 암호문을 재암호화하여 공유 데이터 암호문과 공유 키워드 암호문으로 변환하는 변환부를 더 포함하는, 데이터 암호화 장치.
  15. 청구항 14에 있어서,
    상기 송수신부는 다른 사용자 단말로부터 상기 공유 데이터 암호문의 검색을 위한 공유 데이터 트랩도어를 더 수신하고,
    상기 검색부는 상기 공유 데이터 트랩도어를 이용하여 상기 파일 서버에 저장된 상기 공유 데이터 암호문을 검색하는, 데이터 암호화 장치.
  16. 청구항 13에 있어서,
    상기 데이터 암호화 장치는 네트워크를 통해 사용자 단말과 연결되는 클라우드 서비스 제공 서버의 적어도 일부의 기능부 또는 상기 기능부에 상응하는 기능을 수행하는 적어도 일부의 구성부를 포함하는, 데이터 암호화 장치.
  17. 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에 연결된 사용자 단말에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법으로서,
    키 관리 서버로부터 상기 서버 장치와 공유하는 비밀키를 수신하는 단계;
    상기 비밀키를 이용하여 개인 데이터와 상기 개인 데이터에 대한 키워드를 암호화하는 단계;
    상기 서버 장치로 암호화된 개인 데이터와 암호화된 키워드를 전송하는 단계;
    상기 서버 장치의 파일 서버에서 사용자와 관련된 저장영역에 저장된 개인 데이터 암호문 또는 개인 키워드 암호문을 검색 가능하게 하는 개인 데이터 트랩도어를 생성하는 단계;
    상기 개인 데이터 트랩도어를 상기 서버 장치로 전송하는 단계;
    상기 파일 서버에서 상기 개인 데이터 트랩도어를 이용하여 검색한 상기 개인 데이터 암호문을 상기 서버 장치로부터 수신하는 단계; 및
    상기 개인 데이터 암호문을 평문 데이터로 복호화하는 단계를 포함하는,
    데이터 암호화 방법.
  18. 네트워크를 통해 서버 장치에 연결되는 사용자 단말에서 수행하는 공유 또는 검색을 위한 데이터 암호화 방법으로서,
    키 관리 서버로부터 상기 서버 장치와 공유하는 비밀키를 수신하는 단계;
    상기 비밀키를 이용하여 개인 데이터와 상기 개인 데이터에 대한 키워드를 암호화하는 단계;
    상기 서버 장치로 암호화된 데이터 개인 데이터와 키워드를 전송하는 단계;
    상기 서버 장치의 파일 서버에서 사용자 관련 저장영역에 저장된 개인 데이터 암호문 또는 키워드를 재암호화하기 위한 재암호화 키를 생성하는 단계; 및
    상기 재암호화 키를 상기 서버 장치로 전송하는 단계를 포함하되,
    상기 서버 장치는 상기 재암호화 키를 이용하여 상기 사용자 관련 저장영역에 저장된 개인 데이터 암호문 또는 개인 키워드 암호문을 공유 데이터 암호문 또는 공유 키워드 암호문으로 변환하고, 상기 공유 데이터 암호문을 검색하고자 하는 다른 사용자의 사용자 단말로부터 공유 데이터 트랩도어를 수신하고, 수신한 상기 공유 데이터 트랩도어를 이용하여 상기 공유 데이터 암호문을 검색하고, 검색된 공유 데이터 암호문을 상기 다른 사용자의 사용자 단말로 전달하는,
    데이터 암호화 방법.
  19. 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에 연결되어 공유 또는 검색을 위한 데이터 암호화를 수행하는 데이터 암호화 장치로서,
    키 관리 서버로부터 비밀키를 수신하고, 상기 서버 장치로 암호화된 개인 데이터와 키워드를 전송하고, 개인 데이터 트랩도어를 상기 서버 장치로 전송하고, 상기 서버 장치의 파일 서버에서 상기 개인 데이터 트랩도어를 이용하여 검색한 개인 데이터 암호문을 상기 서버 장치로부터 수신하는 송수신부;
    상기 비밀키를 이용하여 개인 데이터와 상기 개인 데이터에 대한 키워드를 암호화하고, 상기 서버 장치로부터의 상기 개인 데이터 암호문을 복호화하는 암호화 및 복호화부; 및
    상기 파일 서버에서 사용자 관련 저장영역에 저장된 상기 개인 데이터 암호문 또는 개인 키워드 암호문을 검색 가능하게 하는 개인 데이터 트랩도어를 생성하는 트랩도어 생성부를 포함하는, 데이터 암호화 장치.
  20. 데이터를 암호화하여 저장하는 서비스를 제공하는 서버 장치에 연결되어 공유 또는 검색을 위한 데이터 암호화를 수행하는 데이터 암호화 장치로서,
    키 관리 서버로부터 비밀키를 수신하고, 서버 장치의 파일 서버의 사용자 관련 저장영역에 저장된 상기 공유 데이터 암호문 또는 상기 공유 데이터 암호문에 대한 공유 키워드 암호문을 검색 가능하게 하는 공유 데이터 트랩도어를 상기 서버 장치로 전송하고, 상기 서버 장치로부터 상기 공유 데이터 암호문을 수신하는 송수신부;
    상기 공유 데이터 트랩도어를 생성하는 트랩도어 생성부; 및
    상기 서버 장치로부터 수신한 상기 공유 데이터 암호문을 복호화하는 암호화 및 복호화부를 포함하는, 데이터 암호화 장치.
KR1020150069751A 2015-05-19 2015-05-19 공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치 KR101697868B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150069751A KR101697868B1 (ko) 2015-05-19 2015-05-19 공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150069751A KR101697868B1 (ko) 2015-05-19 2015-05-19 공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치

Publications (2)

Publication Number Publication Date
KR20160136060A true KR20160136060A (ko) 2016-11-29
KR101697868B1 KR101697868B1 (ko) 2017-01-19

Family

ID=57706491

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150069751A KR101697868B1 (ko) 2015-05-19 2015-05-19 공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치

Country Status (1)

Country Link
KR (1) KR101697868B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190012969A (ko) * 2017-07-31 2019-02-11 서강대학교산학협력단 블록체인을 기반으로 한 데이터 접근 관리 시스템 및 데이터 접근 관리 방법
KR20190046021A (ko) * 2017-10-25 2019-05-07 이화여자대학교 산학협력단 프록시 재암호화를 이용한 위치 기반 차량 통신 방법 및 차량 통신을 위하여 프록시 재암호화를 수행하는 프록시 서버
KR20190063204A (ko) * 2017-11-29 2019-06-07 고려대학교 산학협력단 클라우드 컴퓨팅 환경에서 암호화된 데이터에 대한 유사도 검색 방법 및 시스템
KR20210056111A (ko) * 2019-11-08 2021-05-18 두나무 주식회사 사용자 정보의 관리 방법 및 단말
CN113486364A (zh) * 2020-10-20 2021-10-08 青岛海信电子产业控股股份有限公司 一种终端、服务器以及数据处理方法
CN116521743A (zh) * 2023-06-27 2023-08-01 北京中科江南信息技术股份有限公司 密文检索方法及装置、存储介质及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11143780A (ja) * 1997-11-05 1999-05-28 Hitachi Ltd データベースにおける秘密情報管理方法およびデータベースの秘密情報管理装置
KR20080035295A (ko) * 2006-10-19 2008-04-23 고려대학교 산학협력단 암호화된 데이터베이스 검색 방법 및 그 시스템
KR100945535B1 (ko) * 2007-11-29 2010-03-09 주식회사 케이티 사전 공격의 방지를 위한 키 생성 방법과, 그를 이용한검색 가능 암호문 생성 방법 및 데이터 검색 방법
KR20110068542A (ko) * 2009-12-16 2011-06-22 한국전자통신연구원 대칭 키 기반 검색 가능 암호 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11143780A (ja) * 1997-11-05 1999-05-28 Hitachi Ltd データベースにおける秘密情報管理方法およびデータベースの秘密情報管理装置
KR20080035295A (ko) * 2006-10-19 2008-04-23 고려대학교 산학협력단 암호화된 데이터베이스 검색 방법 및 그 시스템
KR100945535B1 (ko) * 2007-11-29 2010-03-09 주식회사 케이티 사전 공격의 방지를 위한 키 생성 방법과, 그를 이용한검색 가능 암호문 생성 방법 및 데이터 검색 방법
KR20110068542A (ko) * 2009-12-16 2011-06-22 한국전자통신연구원 대칭 키 기반 검색 가능 암호 방법

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190012969A (ko) * 2017-07-31 2019-02-11 서강대학교산학협력단 블록체인을 기반으로 한 데이터 접근 관리 시스템 및 데이터 접근 관리 방법
KR20190046021A (ko) * 2017-10-25 2019-05-07 이화여자대학교 산학협력단 프록시 재암호화를 이용한 위치 기반 차량 통신 방법 및 차량 통신을 위하여 프록시 재암호화를 수행하는 프록시 서버
KR20190063204A (ko) * 2017-11-29 2019-06-07 고려대학교 산학협력단 클라우드 컴퓨팅 환경에서 암호화된 데이터에 대한 유사도 검색 방법 및 시스템
KR20210056111A (ko) * 2019-11-08 2021-05-18 두나무 주식회사 사용자 정보의 관리 방법 및 단말
CN113486364A (zh) * 2020-10-20 2021-10-08 青岛海信电子产业控股股份有限公司 一种终端、服务器以及数据处理方法
CN116521743A (zh) * 2023-06-27 2023-08-01 北京中科江南信息技术股份有限公司 密文检索方法及装置、存储介质及电子设备

Also Published As

Publication number Publication date
KR101697868B1 (ko) 2017-01-19

Similar Documents

Publication Publication Date Title
KR101697868B1 (ko) 공유 또는 검색을 위한 데이터 암호화 방법 및 이를 수행하는 장치
CN107038383B (zh) 一种数据处理的方法和设备
CN108629027B (zh) 基于区块链的用户数据库重建方法、装置、设备及介质
US20160191233A1 (en) Managed secure computations on encrypted data
US20190007196A1 (en) Method and system for privacy preserving computation in cloud using fully homomorphic encryption
CN106817358B (zh) 一种用户资源的加密、解密方法和设备
KR101600016B1 (ko) 동형 암호화 알고리즘을 이용한 암호화 방법 및 이를 수행하는 컴퓨팅 장치
KR102449816B1 (ko) 암호화 및 검색 장치 및 그 방법
US20170310479A1 (en) Key Replacement Direction Control System and Key Replacement Direction Control Method
JP2014126865A (ja) 暗号処理装置および方法
US11128452B2 (en) Encrypted data sharing with a hierarchical key structure
CN111555880B (zh) 数据碰撞方法、装置、存储介质及电子设备
US9479330B2 (en) Method, information service system and program for information encryption/decryption
WO2016088453A1 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
EP2879323A1 (en) Method and distributed data processing system for managing access to data
CN108549824A (zh) 一种数据脱敏方法及装置
CN111767550B (zh) 数据存储方法和装置
CN112602289A (zh) 数据加密处理方法、数据解密处理方法、装置及电子设备
Xu et al. Fine-grained access control scheme based on improved proxy re-encryption in cloud
KR101812311B1 (ko) 사용자 단말 및 속성 재암호 기반의 사용자 단말 데이터 공유 방법
CN113761570B (zh) 一种面向隐私求交的数据交互方法
KR102512871B1 (ko) 단일 공개 키와 관련된 복수의 사용자 디바이스의 중앙 비밀 키 관리 방법
CN113672954A (zh) 特征提取方法、装置和电子设备
EP3119031A1 (en) Encryption scheme using multiple parties
KR101865703B1 (ko) 키 생성 방법 및 장치, 암호화 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right