KR101174058B1 - 데이터베이스의 암호화된 데이터 저장 및 검색 방법 - Google Patents

데이터베이스의 암호화된 데이터 저장 및 검색 방법 Download PDF

Info

Publication number
KR101174058B1
KR101174058B1 KR1020080129287A KR20080129287A KR101174058B1 KR 101174058 B1 KR101174058 B1 KR 101174058B1 KR 1020080129287 A KR1020080129287 A KR 1020080129287A KR 20080129287 A KR20080129287 A KR 20080129287A KR 101174058 B1 KR101174058 B1 KR 101174058B1
Authority
KR
South Korea
Prior art keywords
data
information
bucket
encrypted data
database
Prior art date
Application number
KR1020080129287A
Other languages
English (en)
Other versions
KR20100070644A (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 KR1020080129287A priority Critical patent/KR101174058B1/ko
Priority to US12/580,603 priority patent/US8225107B2/en
Publication of KR20100070644A publication Critical patent/KR20100070644A/ko
Application granted granted Critical
Publication of KR101174058B1 publication Critical patent/KR101174058B1/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
    • G06F21/6227Protecting 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 where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

암호화된 데이터의 저장 및 검색 방법에 관한 것으로, 데이터베이스에 저장된 데이터를 암호화하는 단계; 상기 저장된 데이터 영역 전체를 버킷 영역 단위로 분할하여, 분할된 버킷 영역 각각에 대한 인덱스를 할당하는 단계; 상기 암호화된 데이터가 속한 버킷 영역에서의 순서 정보를 파악하는 단계; 및 상기 암호화된 데이터, 상기 암호화된 데이터가 속한 버킷 영역의 인덱스 정보 및 상기 파악된 순서 정보를 외부 서버에 저장하는 단계;를 포함하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장 방법에 의해 사용자의 중요 데이터베이스를 외부 서버에 저장하는 경우에 데이터베이스에 대한 보안성을 더욱 강화함과 동시에 효율성을 높일 수 있는 효과가 있다.

Description

데이터베이스의 암호화된 데이터 저장 및 검색 방법{Method for saving and serching of encrypted data on database}
본 발명은 데이터 저장 및 검색 방법에 관한 것으로, 특히 암호화된 데이터의 저장 및 검색 방법에 관한 것이다.
본 연구는 지식경제부 및 정보통신연구진흥원의 핵심기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다. [과제관리번호 : 2005-Y-001-04, 과제명 : 차세대 시큐리티 기술 개발]
최근 외부로부터의 해킹 혹은 내부인에 의해 데이터베이스에 저장된 고객 정보와 같은 주요 정보가 유출되는 사고가 빈번하게 발생되고 있다. 이에 따라 데이터베이스에 저장된 정보에 대한 보안 문제가 중요한 이슈가 되고 있다. 특히 데이터를 신뢰되지 않는 외부 서버에 저장할 경우에 이러한 보안 문제의 심각성은 더욱 커지고 있다.
그러나 점차 처리가 필요한 데이터 양이 기하급수적으로 증가하고, 다양한 서비스에 대한 요구가 증가함에 따라 외부 서버 이용에 대한 사용 또한 증가되고 있는 추세이다. 이에 신뢰되지 않는 외부 서버에 사용자의 데이터베이스를 안전하 게 저장하고, 효율적으로 다양한 검색을 수행할 수 있는 방법의 제안이 필요하다.
사용자가 중요 데이터를 자신의 데이터베이스에 저장하는 방법과 달리 외부 서버에 저장하는 경우, 외부 서버 관리자 또는 내부인에 의해 사용자의 데이터가 유출되거나 악의적으로 이용될 우려가 더 커진다. 이를 막기 위해서는 데이터베이스의 암호화가 필수적이다. 사용자의 비밀키로 데이터베이스를 암호화하여 서버에 저장하는 경우, 나중에 사용자가 원하는 데이터를 서버에 요청할 때 서버가 요청한 데이터를 검색하는 것이 불가능하다. 따라서 암호화된 데이터에 대한 인덱스 등 부가 정보를 추가하여 필요한 데이터를 검색하는 방법이 연구되어 왔다.
Boneh 및 Waters(Theory of Cryptography, 2007)는 암호 기술을 바탕으로 암호화된 데이터에 대한 결합 키워드, 부분 집합, 범위 검색이 가능한 기법을 제안하였다. 그러나 이 방법은 연산량이 너무 많아 이론적으로는 가능하지만, 실제 데이터베이스에 적용하기에는 어려움이 있다.
실제 데이터베이스에 적용 가능한 방법으로 Hacigumus 등(ACM SIGMOD 2002)에 의해 제안된 버킷(bucket) 기반 인덱스(bucket-based index) 방법이다. 이 방법은 각각의 데이터를 암호화한 후, 데이터의 전제 구간을 버킷이라고 부르는 세부 구간으로 나누고, 각각의 버킷(bucket)에 대한 인덱스를 할당한다. 이 후에 암호 데이터 검색시에 사용자가 버킷에 대한 인덱스를 서버로 전송하면, 서버는 해당 버킷에 포함되어 있는 모든 암호화된 데이터를 사용자에게 전송한다. 그러면 사용자는 원하는 데이터를 얻기 위해 전송받은 모든 데이터를 복호화(decryption)한다. 이 방법은 사용자가 원하는 데이터가 버킷의 일부분인 경우에도 버킷에 있는 모든 암호화된 데이터를 복호화해야 하기 때문에, 사용자의 작업량이 많아진다는 단점이 있다.
본 발명은 이 같은 배경에서 도출된 것으로, 신뢰할 수 없는 서버에 사용자의 중요 데이터베이스를 저장하는 경우에 저장되는 정보의 안전성을 높일 수 있는 데이터 저장 방법을 제공하는 것을 목적으로 한다.
또한, 암호화된 데이터의 복호 효율을 향상시킬 수 있는 데이터 검색 방법을 제공하는 것을 목적으로 한다.
상기 기술적 과제는 데이터베이스에 저장된 데이터를 암호화하는 단계; 상기 저장된 데이터 영역 전체를 버킷 영역 단위로 분할하여, 분할된 버킷 영역 각각에 대한 인덱스를 할당하는 단계; 상기 암호화된 데이터가 속한 버킷 영역에서의 순서 정보를 파악하는 단계; 및 상기 암호화된 데이터, 상기 암호화된 데이터가 속한 버킷 영역의 인덱스 정보 및 상기 파악된 순서 정보를 외부 서버에 저장하는 단계;를 포함하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장 방법에 의해 달성된다.
상기 인덱스를 할당하는 단계는 하나의 버킷 영역에 속하는 상기 암호화된 데이터 원소 수의 차이가 최소가 되도록 버킷 영역 단위를 분할하는 것을 특징으로한다.
또한, 상기 인덱스를 할당하는 단계는, 안전성을 위한 임의의 난수를 생성하는 단계; 상기 분할된 버킷 영역 정보에 상기 생성된 임의의 난수를 더하는 단계; 및 상기 임의의 난수가 더해진 분할된 버킷 영역 정보에 인덱스를 할당하는 단계;를 포함한다.
상기 순서 정보를 파악하는 단계는 상기 데이터 순서 정보를 암호화하기 위한 암호화 함수를 통해 암호화된 순서 정보를 생성하고, 상기 암호화 함수는 상기 데이터 값, 상기 데이터가 속하는 버킷 영역의 시작값 및 종료값 정보를 변수로 포함하는 형태인 것을 특징으로 한다.
또한, 상기 방법은 상기 데이터베이스에 새로운 데이터가 입력되면 상기 입력되는 새로운 데이터를 암호화하고, 상기 암호화된 데이터가 속하는 버킷 영역에 대한 인덱스를 할당하는 단계; 상기 암호화된 데이터가 속하는 버킷 영역 내에서의 순서 정보를 파악하는 단계; 및 상기 암호화된 새로운 데이터, 버킷에 대한 인덱스 정보 및 순서 정보를 상기 서버로 업데이트하는 단계;를 더 포함한다.
한편, 상기 기술적 과제는 데이터 검색 질의가 입력되면, 상기 입력되는 질의에 기반하여 외부 서버로부터 암호화된 데이터를 검색하는 단계; 및 상기 검색된 암호화된 데이터 중 적어도 일부를 복호화하여 출력하는 단계;를 포함하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 검색방법에 의해서도 달성된다.
이때, 상기 검색하는 단계는, 사용자로부터 데이터 종류 및 데이터 범위 정보를 포함하는 질의 정보를 입력받는 단계; 기 저장된 난수 정보, 버킷 인덱스 정보에 기초하여 상기 질의 정보에 대응되는 데이터를 포함하는 버킷 영역의 인덱스 정보를 파악하는 단계; 상기 파악된 버킷 인덱스 정보를 상기 외부 서버로 전송하는 단계; 및 상기 외부 서버로부터 상기 인덱스 정보에 따른 버킷 영역에 속하는 암호화된 데이터들을 수신하는 단계;를 포함하는 것을 특징으로 한다.
또한, 상기 인덱스 정보를 파악하는 단계 이후에, 상기 파악되는 버킷 인덱스 정보에 기초하여 상기 입력되는 데이터 범위 정보의 한계 값이 속하는 버킷 정보를 파악하고, 상기 파악되는 버킷 영역 내에서 상기 데이터 범위 한계 값에 대한 순서 정보를 생성하는 단계;를 더 포함한다.
본 발명에 따르면, 사용자의 중요 데이터베이스를 외부 서버에 저장하는 경우에 데이터베이스에 대한 보안성을 더욱 강화함과 동시에 효율성을 높일 수 있는 효과가 있다.
또한, 외부 서버에 저장된 암호화된 데이터 검색시에 서버로부터 전송되는 데이터들 중 사용자 질의에 해당되는 필요한 데이터들만을 복호화할 수 있어 복호화 시간을 단축시킬 수 있으며, 사용자 시스템의 효율성을 더 향상시킬 수 있는 효과가 있다.
뿐만 아니라, 기존에 구축된 데이터베이스에 적용이 용이하다.
전술한, 그리고 추가적인 본 발명의 양상들은 첨부된 도면들을 참조하여 설명되는 바람직한 실시예들을 통해 더욱 명확해질 것이다. 이하에서는 본 발명을 이러한 실시예들을 통해 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 설명하기로 한다.
도 1 은 본 발명의 일 실시예에 따른 데이터베이스의 데이터 저장방법의 흐 름도이고, 도 2 는 사용자 아이디와 급여 정보를 포함하는 데이터베이스의 예시도이고, 도 3은 난수에 의한 버킷 영역 변환을 설명하기 위한 예시도이다.
먼저, 사용자는 자신의 데이터베이스에 저장된 데이터들 중 외부 서버에 저장하기 원하는 데이터를 암호화하기 위해서 자신의 비밀키 K를 생성한다. 그리고, 대칭키 암호 알고리즘을 이용하여 데이터베이스 내에 있는 데이터를 암호화한다(S100).
이 후에, 사용자는 데이터베이스 내의 데이터들의 전체 구간을 버킷(bucket)이라는 세부 구간으로 분할한다(S110). 이때 버킷 영역을 분할하는 것은 동일한 크기의 버킷으로 나누는 경우에는 특정 버킷에 많은 수의 원소가 집중되어 데이터 분포가 알려질 위험이 존재한다. 따라서, 이때 비슷한 수의 데이터를 포함하도록 버킷 영역을 분할한다.
도 2 에 도시된 데이터베이스의 경우, 사용자 ID 전체 범위가 [0, 400]인 경우, [0, 200),[200, 300),[300,400] 의 세 개의 버킷 영역으로 나눌 수 있다. 이 경우에[0, 200) 버킷 영역에는 23,78,113 세 개의 원소가 포함된다. 또한, [200, 300) 버킷 영역에는 235, 247 두 개의 원소가 포함되고, [300,400] 버킷 영역에는 345, 377, 398 세 개의 원소가 포함된다.
이 후에, 사용자는 분할된 버킷 영역 각각에 대해 해당 버킷 영역을 대표하는 인덱스를 생성한다(S120). 그리고 안전성을 높이기 위해 난수(random number) r을 생성하여, r을 각각의 버킷 영역에 더한다.
본 실시예에 있어서, 난수 r=120일 수 있다. 이때, 도 3 에 도시된 바와 같 이 최초 분할된 버킷 영역 [0, 200)는 난수에 의해 [120, 320)으로 변경되고 ,버킷 영역 [200, 300)는 난수에 의해 [320, 420)로 변경되며, 버킷 영역 [300,400]는 [420, 520]으로 변경됨을 알 수 있다. 그리고, 변경된 버킷 영역 즉, [120, 320), [320, 420), [420, 520] 에 대해 각각 임의 인덱스 α123를 설정한다.
예를 들어 도 2의 데이터베이스에서 ID 377인 경우를 살펴보면, 377+r(=120) = 497이고, 이는 버킷 영역 [420, 520]에 포함됨을 알 수 있다. 따라서 이 경우, 인덱스는 α3 가 할당된다.
본 실시예에 있어서, 데이터 보안의 안전성을 위해 사용자는 난수 r과 각각의 버킷 정보를 저장하며, 이는 사용자만 아는 비밀 값으로 유지된다. 이때 버킷 정보는 버킷 영역의 시작점과 종료점에 대한 정보이다. 또한, 각각의 버킷 영역에 할당된 인덱스 값을 더 저장하는데, 이 값은 서버에 저장되어야 하기 때문에 비밀 유지의 필요성은 낮다.
본 실시예에 있어서, 사용자는 난수 r=120 과, 버킷 정보와 인덱스 정보 즉, ([120,320),α1), ([320, 420),α2), ([420, 520], α3)를 저장하고, 여기서 r=120과 버킷 정보를 나타내는 120, 320, 420, 520은 사용자 비밀 값으로 유지된다.
본 실시예에 있어서, 인덱스는 버킷 영역의 시작 값에 해시(hash)함수를 취한 값을 설정될 수 있다. 예를 들어 버킷 영역 [120,320)에 대해서는 인덱스를 α1 = h(120)으로 설정한다. 여기서 h는 해시함수이다. 그러나 인덱스 설정 방법은 이에 한정되지 않고 다양한 변형예들을 포함하도록 해석될 수 있다.
이 후에, 각 버킷 영역 내에 포함되는 데이터들에 대한 순서(order) 정보를 생성한다(S130). 본 실시예에 있어서, 순서 정보는 데이터 순서 정보를 암호화하기 위한 암호화 함수를 통해 생성된다. 예를 들어 버킷 영역이 [a, b)이고, χ1∈[a, b)인 경우, 다음과 같은 순서 보존 암호화(order preserving encryption) 함수 f를 생성한다.
Figure 112008087057526-pat00001
여기서 [c]는 c보다 작은 가장 큰 정수를 의미하여, 예를 들어 [1.11]=1이다. 순서 보존 암호화 함수 f는 데이터 χ1을 0 에서 2t 사이의 값으로 변환하는 함수를 의미하며, 함수 f는 순서 보존 함수의 기능을 수행할 수 있다.
즉,χ12 ∈ [a, b), χ12 에 대해 f[a,b)1) < f[a,b)2)를 만족함을 알 수 있다. t는 버킷에 포함되어 있는 데이터의 수보다 2t값이 훨씬 크도록 설정된다. 예를 들어, 도 2 의 데이터베이스에서 ID 가 235인 경우, 난수 r=120에 의해 355로 변환되며, 이 값은 버킷 영역 [320, 420)에 포함된다. t=10이라고 가정한다. 그러면 ID 235인 경우의 순서 정보는 다음과 같이 생성된다.
Figure 112008087057526-pat00002
1011001102는 358의 이진 표현(binary representation)이다.
전술한 바와 같이 순서 정보는 해당 데이터값이 속하는 버킷 영역의 시작값 및 종료값을 기준으로 산출되기 때문에 동일한 버킷에 속하는 데이터들 간에만 의미가 있다. 예를 들어, ID 113과 247은 난수에 의해 각각 233, 367로 변환되며, 이들의 순서 정보는 전술한 순서 보존 함수에 의해 233은 10010000010, 367은 111100001로 표현될 수 있다. 즉, 113의 순서정보가 247의 순서 정보보다 크기 때문에, 순서 정보만 가지고는 실제 대소관계를 파악하는 것이 불가능하다.
이 후에, 생성된 암호화된 데이터와 인덱스 정보, 순서 정보를 서버로 전송하여 저장한다(S140).
그리고 이 후에, 새로운 데이터의 저장 명령이 입력되면(S150), 해당 데이터를 암호화 하는 단계(S100)부터 반복 수행하여 서버에 새로운 데이터 정보를 업데이트할 수 있다.
예를 들어 데이터베이스에 추가되는 새로운 데이터의 ID가 277이고, 급여가 740이라고 할 경우에, 먼저, 추가된 데이터를 암호화하여 EK(277, 740) = 1111000011000...와 같은 E-tuple을 생성한다. 그리고 임의의 난수 값 r= 120을 이용하여 ID 277을 397로 변환한다. 도 3을 참조하면 397 ∈ [320, 420) 이기 때문에 버킷 인덱스는 α2가 할당된다.
그리고, 다음 식을 통해 순서 정보를 파악한다.
Figure 112008087057526-pat00003
즉, E-ID로 (α2, 1100010100)을 할당하고, 동일한 방식으로 E-salary도 산출하여(β3,1011001100) 을 할당한다. 그리고, 상기 정보들을 서버로 전송하여 기존 정보에 업데이트하도록 한다.
도 4는 본 발명의 일 실시예에 따른 데이터베이스의 데이터 검색 방법의 흐름도이고, 도 5는 서버에 저장되는 데이터 형태의 예시도이다.
먼저, 사용자는 서버에 저장된 데이터 중 검색을 위해 검색 질의를 입력한다(S200). 그리고 사용자로부터 입력된 검색 질의는 서버로 전송된다. 사용자는 비밀로 저장하고 있던 난수 r, 버킷 정보 및 인덱스를 이용하여 데이터 종류에 대한 정보 및 버킷 영역에 대한 인덱스 정보를 서버로 전송한다(S210).
예를 들어 사용자가 ID [50, 240]에 속해 있는 데이터 정보의 검색을 원하는 경우, 저장되어 있던 난수 r을 이용하여 [50, 240]를 [170, 360]으로 변환한다. 구간 [170, 360]는 미리 저장되어 있던 버킷 영역 정보에 기초하여 [170, 320)∪[320, 360]로 나뉠 수 있다. 그리고 역시 버킷 영역 정보에 기초하여 [170, 320)⊂[120, 320), [320, 260)⊂[320, 420)임을 알 수 있다. 결국 사용자는 이에 대응되는 인덱스 및 데이터 종류 정보(ID,α12,)를 서버로 전송한다. 이 후에 사용자가 검색을 원하는 데이터 범위의 한계 값인 170과 360에 대한 순서 정보를 생성한다.
Figure 112008087057526-pat00004
Figure 112008087057526-pat00005
이 후에, 서버로부터 데이터 종류 정보 및 버킷 인덱스 정보에 일치하는 데이터들을 수신한다(S220). 도 5 에 도시된 바와 같이 서버에는 암호화된 데이터 정보(E-tuple)와 그에 대한 인덱스(index) 및 순서정보(order)가 저장된다. 예를 들어 서버로 (ID,α12) 를 전송한 경우에, 서버는 버킷 인덱스가 α12 인 E-tuple 과 E-ID를 사용자에게 전송한다. 도 5를 참조하여, 서버는 1, 3, 4, 5, 8번째 행의 다음과 같은 E-tuple 과 E-ID를 사용자에게 전송한다.
(1100110011100...; α1 , 1110101) - (1)
(1010011001111...; α1 , 1001000010) - (2)
(1111010000111...; α2 , 101100110) - (3)
(1001011001110...; α2 , 111100001) - (4)
(1001011010010...; α1 , 110001111) - (5)
이 후에, 서버로부터 수신되는 해당 버킷의 암호화된 데이터들 중 검색 질의에 포함되어 있던 데이터 영역의 순서 정보에 따라 해당 데이터를 복호화한다(S230).
예를 들어 인덱스가 α1인 데이터는 (1), (2), (5) 이다. 사용자는 모든 데이터를 복호화하기 이전에 생성되었던 f[120, 320](170) = 100000000를 호출한다. 그리고 이 값을 (1), (2), (5)의 순서 정보를 비교한다. 사용자는 170보다 큰 데이터를 검색하기 원하기 때문에, 순서 정보가 100000000보다 큰 값을 선택한다. 이 경우 (2), (5)의 데이터가 선택되고, 이 데이터에 대한 E-tuple 을 사용자 비밀키 K를 이용하여 복호화한다. 인덱스가 α2인 경우도 인덱스가 α1인 경우와 마찬가지로 (4)번 데이터만 선택된다. 이 후에, 복호화된 데이터는 사용자에게 출력된다(S240). 즉, 본 발명의 이 같은 양상에 따르면 서버로부터 수신되는 두 개 버킷에 포함되는 데이터들을 모두 복호화할 필요없이, 사용자가 검색을 원하는 범위에 속하는 데이터들만 복호화하는 것이 가능하다.
대용량 데이터베이스의 경우에는, 하나의 버킷 내에 많은 양의 데이터들이 저장되기 때문에, 이 같이 필요한 범위에 속하는 데이터들만 복호화함으로써 복호 시간을 단축할 수 있고 데이터 부하를 낮출 수 있어 보다 효율성을 높일 수 있다.
한편, 전술한 데이터베이스의 데이터 저장 방법 및 검색 방법은 컴퓨터 프로그램으로 작성 가능하다. 또한, 상기 프로그램은 컴퓨터가 읽을 수 있는 정보 저장 매체(computer readable media)에 저장되고, 컴퓨터에 의해 읽혀지고 실행됨으로써 구현될 수 있다. 상기 저장매체는 자기 기록매체, 광 기록 매체 등을 포함한다.
이제까지 본 발명에 대해 바람직한 실시예들을 중심으로 살펴보았다. 본 발 명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1 은 본 발명의 일 실시예에 따른 데이터베이스의 데이터 저장방법의 흐름도,
도 2 는 사용자 아이디와 급여 정보를 포함하는 데이터베이스의 예시도.
도 3 은 난수에 의한 버킷 영역 변환을 설명하기 위한 예시도,
도 4는 본 발명의 일 실시예에 따른 데이터베이스의 데이터 검색 방법의 흐름도,
도 5는 서버에 저장되는 데이터 형태의 예시도이다.

Claims (15)

  1. 데이터베이스에 저장된 데이터를 암호화하는 단계;
    상기 저장된 데이터 영역 전체를 버킷 영역 단위로 분할하는 단계;
    안전성을 위한 임의의 난수를 생성하는 단계;
    상기 분할된 버킷 영역 정보에 상기 생성된 임의의 난수를 더하는 단계;
    상기 임의의 난수가 더해진 분할된 버킷 영역 정보에 인덱스를 할당하는 단계;
    상기 암호화된 데이터가 속한 버킷 영역에서의 순서 정보를 파악하는 단계; 및
    상기 암호화된 데이터, 상기 암호화된 데이터가 속한 버킷 영역의 인덱스 정보 및 상기 파악된 순서 정보를 외부 서버에 저장하는 단계;
    를 포함하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장방법.
  2. 제 1 항에 있어서,
    상기 분할하는 단계는 하나의 버킷 영역에 속하는 상기 암호화된 데이터 원소 수의 차이가 최소가 되도록 버킷 영역 단위를 분할하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장방법.
  3. 제 1 항에 있어서,
    상기 암호화하는 단계는 사용자에 의해 생성되는 비밀키에 따라 대칭키 알고리즘에 의해 암호화하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장방법.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 인덱스를 할당하는 단계는 상기 분할된 버킷 영역 정보에 따라 버킷 영역의 시작 값에 해시함수를 취한 값으로 인덱스를 할당하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장방법.
  6. 제 1 항에 있어서,
    상기 순서 정보를 파악하는 단계는 상기 데이터 순서 정보를 암호화하기 위한 암호화 함수를 통해 암호화된 순서 정보를 생성하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장방법.
  7. 제 6 항에 있어서,
    상기 암호화 함수는 상기 데이터 값, 상기 데이터가 속하는 버킷 영역의 시작값 및 종료값 정보를 변수로 포함하는 형태인 것을 특징으로 하는 데이터베이스 의 암호화된 데이터 저장방법.
  8. 제 1 항에 있어서,
    상기 순서 정보를 파악하는 단계는 상기 암호화된 데이터가 속한 버킷 영역 내에서만 한정되는 순서 정보를 생성하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장방법.
  9. 제 1 항에 있어서,
    상기 데이터베이스에 새로운 데이터가 입력되면 상기 입력되는 새로운 데이터를 암호화하고, 상기 암호화된 데이터가 속하는 버킷 영역에 대한 인덱스를 할당하는 단계;
    상기 암호화된 데이터가 속하는 버킷 영역 내에서의 순서 정보를 파악하는 단계; 및
    상기 암호화된 새로운 데이터, 버킷에 대한 인덱스 정보 및 순서 정보를 상기 서버로 업데이트하는 단계;를 더 포함하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 저장방법.
  10. 삭제
  11. 사용자로부터 데이터 종류 및 데이터 범위 정보를 포함하는 질의 정보를 입력받는 단계;
    기 저장된 난수 정보, 버킷 인덱스 정보에 기초하여 상기 질의 정보에 대응되는 데이터를 포함하는 버킷 영역의 인덱스 정보를 파악하는 단계;
    상기 파악된 버킷 인덱스 정보를 외부 서버로 전송하는 단계;
    상기 외부 서버로부터 상기 인덱스 정보에 따른 버킷 영역에 속하는 암호화된 데이터들을 수신하는 단계; 및
    상기 수신된 암호화된 데이터 중 적어도 일부를 복호화하여 출력하는 단계;를 포함하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 검색방법.
  12. 제 11 항에 있어서, 상기 인덱스 정보를 파악하는 단계 이후에,
    파악되는 상기 인덱스 정보에 기초하여 상기 입력되는 데이터 범위 정보의 한계 값이 속하는 버킷 정보를 파악하고, 상기 파악되는 버킷 영역 내에서 상기 데이터 범위 한계 값에 대한 순서 정보를 생성하는 단계;를 더 포함하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 검색방법.
  13. 제 12 항에 있어서, 상기 순서 정보는 상기 데이터 범위 한계 값, 상기 한계값이 속하는 버킷 영역의 시작 주소 및 종료 주소 정보를 변수로 포함하는 암호화 함수에 의해 생성되는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 검색방법.
  14. 제 13 항에 있어서,
    상기 출력하는 단계는 상기 서버로부터 수신되는 해당 버킷에 저장된 암호화된 데이터들 중 상기 생성된 데이터 범위 한계값의 순서 정보에 따라 해당되는 적어도 일부 데이터를 복호화하여 출력하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 검색방법.
  15. 제 13항에 있어서,
    상기 출력하는 단계는 상기 서버로부터 수신되는 해당 버킷에 저장된 암호화된 데이터들 중 순서 정보가 상기 생성된 데이터 범위 한계 값의 순서 정보보다 작거나, 큰 데이터들을 복호화하는 것을 특징으로 하는 데이터베이스의 암호화된 데이터 검색방법.
KR1020080129287A 2008-12-18 2008-12-18 데이터베이스의 암호화된 데이터 저장 및 검색 방법 KR101174058B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080129287A KR101174058B1 (ko) 2008-12-18 2008-12-18 데이터베이스의 암호화된 데이터 저장 및 검색 방법
US12/580,603 US8225107B2 (en) 2008-12-18 2009-10-16 Methods of storing and retrieving data in/from external server

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080129287A KR101174058B1 (ko) 2008-12-18 2008-12-18 데이터베이스의 암호화된 데이터 저장 및 검색 방법

Publications (2)

Publication Number Publication Date
KR20100070644A KR20100070644A (ko) 2010-06-28
KR101174058B1 true KR101174058B1 (ko) 2012-08-16

Family

ID=42267811

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080129287A KR101174058B1 (ko) 2008-12-18 2008-12-18 데이터베이스의 암호화된 데이터 저장 및 검색 방법

Country Status (2)

Country Link
US (1) US8225107B2 (ko)
KR (1) KR101174058B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101341944B1 (ko) * 2013-07-01 2013-12-17 (주)아울시스템즈 동일 평문 데이터를 다른 값의 암호문으로 암호화하는 데이터베이스 보안 방법 및 장치
KR101548654B1 (ko) 2014-09-03 2015-09-02 서울과학기술대학교 산학협력단 보안성이 있는 암호화 체계를 구비하고 순서 버킷을 이용하는 데이터베이스 쿼리 장치 및 방법
KR101628924B1 (ko) * 2014-12-08 2016-06-10 고려대학교 산학협력단 k번째 항목의 스코어 산출 방법 및 산출 시스템

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738683B2 (en) * 2008-09-15 2014-05-27 Vaultive Ltd. System, apparatus and method for encryption and decryption of data transmitted over a network
AU2011254219A1 (en) 2010-05-21 2012-12-13 Vaultive Ltd. System and method for controlling and monitoring access to data processing applications
KR20120068524A (ko) * 2010-12-17 2012-06-27 한국전자통신연구원 데이터 관리 장치 및 데이터 관리 방법
KR101295069B1 (ko) * 2011-07-11 2013-08-08 주식회사 데이터스트림즈 가독 대칭형 암호화방법
KR20130039175A (ko) * 2011-10-11 2013-04-19 한국전자통신연구원 내부자 위협 탐지 장치 및 방법
KR101324477B1 (ko) * 2012-02-28 2013-11-01 이청종 위치제어에 의한 데이터 병렬처리 시스템 및 그 방법
US8832427B2 (en) 2012-03-30 2014-09-09 Microsoft Corporation Range-based queries for searchable symmetric encryption
US9852306B2 (en) 2013-08-05 2017-12-26 International Business Machines Corporation Conjunctive search in encrypted data
US9646166B2 (en) 2013-08-05 2017-05-09 International Business Machines Corporation Masking query data access pattern in encrypted data
CN106407207B (zh) * 2015-07-29 2020-06-16 阿里巴巴集团控股有限公司 一种实时新增数据更新方法和装置
CN106473472A (zh) * 2016-10-20 2017-03-08 国网山东省电力公司菏泽供电公司 一种储存柜、控制系统以及资料储存系统
KR101978384B1 (ko) * 2017-01-09 2019-05-15 순천향대학교 산학협력단 웹 스토리지의 데이터 암호화 및 복호화 장치 및 방법
US11429740B2 (en) * 2020-05-26 2022-08-30 Intuit Inc. Fast querying of encrypted data set

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000194709A (ja) * 1998-12-24 2000-07-14 Nec Commun Syst Ltd データベースの検索装置およびデータベースの検索方法、並びに記録媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100744378B1 (ko) 2001-08-17 2007-07-30 삼성전자주식회사 해시함수를 이용한 데이터베이스 검색방법
GB2385951A (en) * 2001-09-21 2003-09-03 Sun Microsystems Inc Data encryption and decryption
US7426752B2 (en) * 2004-01-05 2008-09-16 International Business Machines Corporation System and method for order-preserving encryption for numeric data
US7519835B2 (en) 2004-05-20 2009-04-14 Safenet, Inc. Encrypted table indexes and searching encrypted tables
KR100839220B1 (ko) 2006-10-19 2008-06-19 고려대학교 산학협력단 암호화된 데이터베이스 검색 방법 및 그 시스템
US20100138456A1 (en) * 2008-12-02 2010-06-03 Alireza Aghili System, method, and computer-readable medium for a locality-sensitive non-unique secondary index

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000194709A (ja) * 1998-12-24 2000-07-14 Nec Commun Syst Ltd データベースの検索装置およびデータベースの検索方法、並びに記録媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101341944B1 (ko) * 2013-07-01 2013-12-17 (주)아울시스템즈 동일 평문 데이터를 다른 값의 암호문으로 암호화하는 데이터베이스 보안 방법 및 장치
KR101548654B1 (ko) 2014-09-03 2015-09-02 서울과학기술대학교 산학협력단 보안성이 있는 암호화 체계를 구비하고 순서 버킷을 이용하는 데이터베이스 쿼리 장치 및 방법
KR101628924B1 (ko) * 2014-12-08 2016-06-10 고려대학교 산학협력단 k번째 항목의 스코어 산출 방법 및 산출 시스템

Also Published As

Publication number Publication date
US20100161957A1 (en) 2010-06-24
US8225107B2 (en) 2012-07-17
KR20100070644A (ko) 2010-06-28

Similar Documents

Publication Publication Date Title
KR101174058B1 (ko) 데이터베이스의 암호화된 데이터 저장 및 검색 방법
US10803194B2 (en) System and a method for management of confidential data
Salam et al. Implementation of searchable symmetric encryption for privacy-preserving keyword search on cloud storage
US11637689B2 (en) Efficient encrypted data management system and method
JP5420085B2 (ja) データ処理装置及びデータ保管装置
EP2778952B1 (en) Database device, method and program
US7519835B2 (en) Encrypted table indexes and searching encrypted tables
KR20110068542A (ko) 대칭 키 기반 검색 가능 암호 방법
US20150019881A1 (en) Accelerated cryptography with an encryption attribute
Sumathi et al. A group-key-based sensitive attribute protection in cloud storage using modified random Fibonacci cryptography
JP6632780B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
Barouti et al. Symmetrically-private database search in cloud computing
JP2007258852A (ja) データ管理装置及び端末装置及び鍵生成方法及び復号方法及びプログラム
Manasrah et al. An investigation study of privacy preserving in cloud computing environment
KR101422759B1 (ko) 데이터 위탁 환경에서 결탁을 방지하는 데이터 저장 및 공유 방법
Jiang et al. A novel privacy preserving keyword search scheme over encrypted cloud data
KR20100003093A (ko) 암호문 크기를 줄이기 위한 공개키 기반의 검색가능암호문생성 방법과, 그에 따른 공개키 기반의 데이터 검색 방법
Pareek et al. Efficient dynamic key‐aggregate cryptosystem for secure and flexible data sharing
CN113626836A (zh) 一种基于lsm的对称可搜索加密方法及系统
KR20110057369A (ko) 데이터 암호화 장치 및 그 방법
Tillem et al. Hiding access patterns in range queries using private information retrieval and ORAM
Pramanick et al. Searchable encryption with pattern matching for securing data on cloud server
Passricha et al. A secure deduplication scheme for encrypted data
Kayem et al. Efficient enforcement of dynamic cryptographic access control policies for outsourced data
Funde et al. HORAM: Hybrid Oblivious Random Access Memory Scheme for Secure Path Hiding in Distributed Environment

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160809

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170809

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190808

Year of fee payment: 8