KR101563461B1 - 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램 - Google Patents

데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램 Download PDF

Info

Publication number
KR101563461B1
KR101563461B1 KR1020150040583A KR20150040583A KR101563461B1 KR 101563461 B1 KR101563461 B1 KR 101563461B1 KR 1020150040583 A KR1020150040583 A KR 1020150040583A KR 20150040583 A KR20150040583 A KR 20150040583A KR 101563461 B1 KR101563461 B1 KR 101563461B1
Authority
KR
South Korea
Prior art keywords
data
column
encrypted
index
level
Prior art date
Application number
KR1020150040583A
Other languages
English (en)
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 KR1020150040583A priority Critical patent/KR101563461B1/ko
Priority to US14/733,819 priority patent/US9779264B2/en
Priority to CN201510387233.6A priority patent/CN106022155B/zh
Application granted granted Critical
Publication of KR101563461B1 publication Critical patent/KR101563461B1/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
    • 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
    • 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
    • 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/6236Protecting 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 between heterogeneous systems
    • 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

Landscapes

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

Abstract

본 발명의 일 양상에 따라서, 컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램이 개시된다. 상기 단계들은, 컬럼(column) 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체 또는 메모리로부터 읽어들이는 단계; 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계; 상기 생성된 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하는 단계; 및 상기 생성된 인덱스 테이블을 블록(block) 레벨로 암호화 하는 동작을 수행하는 단계를 포함할 수 있다.

Description

데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램{METHOD, SERVER AND COMPUTER PROGRAM FOR SECURITY MANAGEMENT IN DATABASE}
본 발명은 데이터베이스 보안 관리에 관한 것으로서, 보다 구체적으로 암호화된 데이터베이스에 대한 인덱스를 생성하기 위한 방법, 서버 및 컴퓨터 프로그램에 대한 것이다.
컴퓨터 및 인터넷 기술이 발전함에 따라, 많은 양의 데이터를 효율적으로 저장하고 원하는 검색 조건으로 쉽고 빠르게 찾기 위한 데이터베이스에 대한 중요성이 증가되고 있다. 현재의 데이터베이스 시스템은 수많은 정보를 저장 및 검색하는 것을 허용한다. 이러한 정보 중 일부의 정보는 예컨대, 신용카드 번호 등과 같은 민감한 정보를 포함할 수 있다.
특히, 금융권, 인터넷 포털 사이트 등에서 개인정보를 수집하고 관리하는 데이터베이스의 보안은, 컴퓨터에서 처리되는 정보를 권한이 없는 사용자가 판단하거나 부적절하게 기록하는 것을 방지하기 위하여, 정당한 권한을 갖는 사용자의 정보처리 서비스를 컴퓨터 시스템에서 거부되지 않도록 보호하기 위하여, 그리고 대용량의 자료를 보관하는 데이터베이스 관리 시스템에서 데이터의 무결성, 기밀성, 가용성을 보장하기 위하여 필수적으로 필요하다.
최근에는 데이터베이스 서버 관리자 및 개발자에 의한 암호키 노출에 의한 정보 유출이 심각한 문제가 되고 있는 실정이다. 즉, 정보의 집적도가 날로 고도화되는 추세에 따라 기업 내에 존재하는 데이터베이스에 축적된 정보의 양도 이에 비례하여 증가하고 있으며, 이로 인하여, 가령 통신회사에서 관리하는 고객정보 데이터베이스에 담긴 고객정보(주민등록번호, 전화번호, 계좌번호 등)가 부정한 경로를 통하여 정보가 유출되는 경우, 그 피해의 파급효과는 막대해지고 있다.
이러한 데이터의 유출은 기업 외부의 해커에 의한 해킹(hacking), 데이터 저장 공간에 대한 물리적인 접근 등에 따른 경우도 있으나, 실질적으로 대부분의 정보 유출은 데이터베이스에 대하여 정당한 접근 권한을 보유한 내부자(예컨대, 데이터베이스 관리자(administrator)에 의하여 발생하고 있는 실정이며, 이러한 내부자에 의한 정보 유출은 외부로부터 발생한 해킹사건보다 심각하고 치명적인 피해를 초래할 수 있다.
이러한 데이터베이스 보안을 관리하는 종래의 기술은 각각의 클라이언트로 할당된 보안 프로파일에서 규정된 접근 제어 방식을 사용하여 특정한 사용자에게 특정한 정보에 대한 접근을 제한하고 있다. 이러한 기술은 클라이언트가 인가되지 않은 정보를 액세스하는 것을 차단할 수 있다. 하지만, 이러한 종래의 기술들은 정당한 접근 권한을 보유한 내부자(예컨대, 데이터베이스 관리자), 또는 OS 권한(OS privilege)을 보유한 자의 부정한 행위를 차단할 수는 없다는 단점이 존재한다.
이러한 문제점을 해결하기 위하여, 사용자 애플리케이션 내에서 기밀 정보를 암호화하는 방식이 제안되었으나, 이러한 방식의 경우 기밀 정보를 다루는 모든 사용자 애플리케이션이 암호화/복호화되어야 하기 때문에, 이러한 모든 사용자 애플리케이션에서의 암호화/복호화 코드를 제공해야한다는 불편함이 존재할 수 있다.
나아가, 또 다른 종래의 기술은 데이터베이스 테이블의 컬럼 데이터를 암호화(컬럼 레벨 암호화)하여 디스크에 저장하는 기법을 제시하고 있다. 이러한 종래 기술은 데이터가 디스크에 저장될 때에는 암호화되어 있지만 메모리에 데이터가 올라올 때에는 복호화되어서 사용자 입장에서는 암호화되지 않은 데이터를 볼 수 있도록 허용한다. 하지만, 이러한 종래 기술은 컬럼 단위로 암호화를 구현하기 때문에 컬럼 값을 기반으로 생성되는 인덱스를 빌드하는데 있어서 문제점이 발생할 수 있다. 즉, 인덱스는 컬럼 값을 기반으로 생성되기 때문에, 이러한 컬럼 값 자체가 암호화되어 버리게 되면 값 범위 기반으로 수행되는 인덱스 레인지 스캔(index range scan)이 불가능해 질 수 있다. 즉, 인덱스 레인지 스캔이 불가능해지는 경우 빠르고 효율적인 검색이라는 데이터베이스의 본질적 성능에 대한 절대적인 영향이 발생하게 된다. 이러한 기술의 경우 단순히 하나의 값을 찾기 위한 고유 검색(unique search)만이 가능해질 수 있으나, 이마저도 Salt를 사용하는 경우 불가능해질 수 있다.
따라서, 데이터베이스 시스템 내에서의 기밀 정보를 효율적인 방식으로 보호하면서 그리고 사용자 애플리케이션을 변경하지 않고서도 내부자 등의 부정한 행위를 차단할 수 있는 데이터 보안 기법에 대한 수요가 당업계에 존재한다.
대한민국 공개특허공보 제10-2006-0058546호 미국 등록특허공보 US 7,111,005호
본 발명은 전술한 내용을 감안하여 안출된 것으로, 데이터베이스 시스템 내에서의 기밀 정보를 효율적인 방식으로 보호하면서 데이터베이스의 본질적인 기능들을 유지하기 위한 기법을 제공하기 위한 것이다.
또한, 본 발명은 인덱스 레인지 스캔을 허용할 수 있는 효율적인 데이터베이스 보안 관리 기법을 제공하기 위한 것이다.
전술한 바와 같은 과제를 실현하기 위한 본 발명의 일 실시예에 따른 컴퓨터 프로그램이 개시된다. 상기 컴퓨터 프로그램은, 컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램으로서, 상기 단계들은: 컬럼(column) 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체 또는 메모리로부터 읽어들이는 단계; 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계; 상기 생성된 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하는 단계; 및 상기 생성된 인덱스 테이블을 블록(block) 레벨로 암호화 하는 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따라서, 데이터베이스 보안 관리를 위한 데이터베이스 서버가 개시된다. 상기 데이터베이스 서버는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하고, 상기 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하고, 그리고 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작을 수행하는 적어도 하나의 프로세서; 및 상기 컬럼 레벨로 암호화된 데이터를 포함하는 데이터 테이블 및 상기 블록 레벨로 암호화된 인덱스 테이블을 저장하는 영구 저장 매체(persistent storage)를 포함할 수 있다.
본 발명의 다른 실시예에 따라서, 컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램이 개시된다. 여기서, 상기 단계들은: 인덱스 조회 요청에 응답하여, 블록 레벨로 암호화된 인덱스 테이블을 영구 저장 매체로부터 읽어들이는 단계; 상기 블록 레벨로 암호화된 인덱스 테이블을 복호화하여 복호화된 인덱스 테이블을 생성하는 단계; 상기 복호화된 인덱스 테이블을 기초로 하여, 인덱스 스캔을 수행하는 단계; 상기 인덱스 스캔의 결과에 대응되는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 읽어들이는 단계; 및 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계를 포함할 수 있다.
본 발명의 다른 실시예에 따라서, 데이터베이스 보안 관리를 제공하는 데이터베이스 서버가 개시된다. 상기 데이터베이스 서버는, 인덱스 조회 요청에 응답하여, 블록 레벨로 암호화된 인덱스 테이블을 영구 저장 매체로부터 읽어들이고, 상기 블록 레벨로 암호화된 인덱스 테이블을 복호화하여 복호화된 인덱스 테이블을 생성하고, 상기 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔을 수행하고, 상기 인덱스 스캔의 결과에 대응되는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 읽어들이고, 그리고 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 적어도 하나의 프로세서; 및 상기 컬럼 레벨로 암호화된 데이터를 포함하는 데이터 테이블 및 상기 블록 레벨로 암호화된 인덱스 테이블을 저장하는 영구 저장 매체(persistent storage)를 포함할 수 있다.
본 발명의 일 실시예에 따라서, 데이터베이스 시스템 내에서의 기밀 정보를 효율적인 방식으로 보호하면서 그리고 사용자 애플리케이션을 변경하지 않고도 내부자의 부정한 행위를 차단하기 위한 데이터 암호화 기법이 제공될 수 있다.
또한, 본 발명의 일 실시예에 따라서, 인덱스 레인지 스캔을 허용할 수 있는 효율적인 데이터베이스 보안 관리 기법이 제공될 수 있다.
다양한 양상들이 이제 도면들을 참조로 기재되며, 여기서 유사한 참조 번호들은 총괄적으로 유사한 구성요소들을 지칭하는데 이용된다. 이하의 실시예에서, 설명 목적을 위해, 다수의 특정 세부사항들이 하나 이상의 양상들의 총체적 이해를 제공하기 위해 제시된다. 그러나, 그러한 양상(들)이 이러한 특정 세부사항들 없이 실시될 수 있음은 명백할 것이다. 다른 예시들에서, 공지의 구조들 및 장치들이 하나 이상의 양상들의 기재를 용이하게 하기 위해 블록도 형태로 도시된다.
도 1은 본 발명의 일 실시예에 따른 데이터베이스 시스템을 예시적으로 도시한다.
도 2는 본 발명의 일 실시예에 따른 데이터베이스 서버의 컴포넌트들을 예시적으로 도시한다.
도 3은 본 발명의 일 실시예에 따른 데이터 저장 및 인덱스 빌드 프로세스에 대한 예시적인 흐름도를 도시한다.
도 4는 본 발명의 일 실시예에 따른 인덱스 스캔 및 조회 프로세스에 대한 예시적인 흐름도를 도시한다.
도 5는 본 발명의 일 실시예에 따른 데이터 조회 프로세스에 대한 예시적인 흐름도를 도시한다.
도 6은 본 발명의 일 실시예에 따라 데이터 및 인덱스가 영구저장매체에서 암호화되어 저장되는 암호화 방식을 예시적으로 도시한다.
도 7은 본 발명의 일 실시예에 따른 데이터 저장 및 인덱스 빌드(또는 업데이트)에 대한 예시적인 순서도를 도시한다.
도 8은 본 발명의 일 실시예에 따른 인덱스 조회에 대한 예시적인 순서도를 도시한다.
다양한 실시예들 및/또는 양상들이 이제 도면들을 참조하여 개시된다. 하기 설명에서는 설명을 목적으로, 하나 이상의 양상들의 전반적 이해를 돕기 위해 다수의 구체적인 세부사항들이 개시된다. 그러나, 이러한 양상(들)은 이러한 구체적인 세부사항들 없이도 실행될 수 있다는 점 또한 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 인식될 수 있을 것이다. 이후의 기재 및 첨부된 도면들은 하나 이상의 양상들의 특정한 예시적인 양상들을 상세하게 기술한다. 하지만, 이러한 양상들은 예시적인 것이고 다양한 양상들의 원리들에서의 다양한 방법들 중 일부가 이용될 수 있으며, 기술되는 설명들은 그러한 양상들 및 그들의 균등물들을 모두 포함하고자 하는 의도이다.
또한, 다양한 양상들 및 특징들이 다수의 디바이스들, 컴포넌트들 및/또는 모듈들 등을 포함할 수 있는 시스템에 의하여 제시될 것이다. 다양한 시스템들이, 추가적인 장치들, 컴포넌트들 및/또는 모듈들 등을 포함할 수 있다는 점 그리고/또는 도면들과 관련하여 논의된 장치들, 컴포넌트들, 모듈들 등 전부를 포함하지 않을 수도 있다는 점 또한 이해되고 인식되어야 한다.
본 명세서에서 사용되는 "실시예", "예", "양상", "예시" 등은 기술되는 임의의 양상 또는 설계가 다른 양상 또는 설계들보다 양호하다거나, 이점이 있는 것으로 해석되지 않을 수도 있다. 아래에서 사용되는 용어들 '컴포넌트', '모듈', '시스템', '인터페이스' 등은 일반적으로 컴퓨터 관련 엔티티(computer-related entity)를 의미하며, 예를 들어, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어를 의미할 수 있다.
더불어, 용어 "또는"은 배타적 "또는"이 아니라 내포적 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되지 않거나 문맥상 명확하지 않은 경우에, "X는 A 또는 B를 이용한다"는 자연적인 내포적 치환 중 하나를 의미하는 것으로 의도된다. 즉, X가 A를 이용하거나; X가 B를 이용하거나; 또는 X가 A 및 B 모두를 이용하는 경우, "X는 A 또는 B를 이용한다"가 이들 경우들 어느 것으로도 적용될 수 있다. 또한, 본 명세서에 사용된 "및/또는"이라는 용어는 열거된 관련 아이템들 중 하나 이상의 아이템의 가능한 모든 조합을 지칭하고 포함하는 것으로 이해되어야 한다.
또한, "포함한다" 및/또는 "포함하는"이라는 용어는, 해당 특징 및/또는 구성요소가 존재함을 의미하지만, 하나 이상의 다른 특징, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는 것으로 이해되어야 한다. 또한, 달리 특정되지 않거나 단수 형태를 지시하는 것으로 문맥상 명확하지 않은 경우에, 본 명세서와 청구범위에서 단수는 일반적으로 "하나 또는 그 이상"을 의미하는 것으로 해석되어야 한다.
본 명세서에서의 컴퓨터 판독가능 매체는 컴퓨터 시스템에 의해서 판독될 수 있도록 프로그램 및 데이터가 저장되는 모든 종류의 저장 매체를 포함할 수 있다. 본 발명의 일 양상에 따르면, 이러한 매체는 ROM(판독 전용 메모리), RAM(랜덤 액세스 메모리), CD(컴팩트 디스크)-ROM, DVD(디지털 비디오 디스크)-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등을 포함할 수 있으며, 또한 캐리어 웨이브(예컨대, 인터넷을 통한 전송)의 형태로 구현되는 것 또한 포함할 수 있다. 추가적으로, 이러한 매체는 네트워크로 연결된 시스템에 분산되어, 분산 방식으로 컴퓨터가 판독가능한 코드들 및/또는 명령들을 저장할 수도 있다.
본 발명의 실시를 위한 구체적인 내용을 설명하기에 앞서, 본 발명의 기술적 요지와 직접적 관련이 없는 구성에 대해서는 본 발명의 기술적 요지를 흩뜨리지 않는 범위 내에서 생략하였음에 유의하여야 할 것이다. 또한, 본 명세서 및 청구범위에 사용된 용어 또는 단어는 발명자가 자신의 발명을 최선의 방법으로 설명하기 위해 적절한 용어의 개념을 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 데이터베이스 시스템(100)을 예시적으로 도시한다.
도 1에서 도시되는 바와 같이, 데이터베이스 서버(120)는, 예를 들어, 마이크로프로세서, 메인프레임 컴퓨터, 디지털 싱글 프로세서, 휴대용 디바이스 및 디바이스 제어기 등과 같은 임의의 타입의 컴퓨터 시스템 또는 컴퓨터 디바이스를 포함할 수 있다.
클라이언트(110)는 네트워크를 통하여 통신하기 위한 매커니즘을 갖는 데이터베이스 시스템에서의 노드들을 의미할 수 있다. 예를 들어, 클라이언트(110)는 PC, 랩탑 컴퓨터, 워크스테이션, 단말 및/또는 네트워크 접속성을 갖는 임의의 전자 디바이스를 포함할 수 있다. 또한, 클라이언트(110)는 에이전트(Agent), API(Application Programming Interface) 및 플러그-인(Plug-in) 중 적어도 하나에 의해 구현되는 임의의 서버를 포함할 수도 있다.
데이터베이스 서버(120)는 DBMS(Database Management System)(130) 및 영구 저장 매체(persistent storage)(140)를 포함할 수 있다.
도 1에서는 도시되지 않았지만, 데이터베이스 서버(120)는 버퍼 캐시를 포함하는 하나 이상의 메모리를 포함할 수 있다. 또한, 도 1에서는 도시되지 않았지만, 데이터베이스 서버(120)는 하나 이상의 프로세서를 포함할 수 있다. 따라서, DBMS(130)는 상기 메모리 상에서 상기 프로세서에 의하여 동작될 수 있다.
여기서, 메모리는 동적 램(DRAM, dynamic random access memory), 정적 램(SRAM, static random access memory) 등의 랜덤 액세스 메모리(RAM)와 같은, 프로세서가 직접 접근하는 주된 저장 장치로서 전원이 꺼지면 저장된 정보가 순간적으로 지워지는 휘발성(volatile) 저장 장치를 의미할 수 있지만, 이들로 한정되는 것은 아니다. 이러한 메모리는 프로세서에 의하여 동작 될 수 있다. 메모리는 데이터 값을 포함하는 데이터 테이블(data table)을 임시로 저장할 수 있다. 상기 데이터 테이블은 데이터 값을 포함할 수 있으며, 본 발명의 일 실시예에서 상기 데이터 테이블의 데이터 값은 컬럼 단위로 암호화 되어서 영구 저장 매체에 저장될 수 있다. 추가적인 양상에서, 메모리는 버퍼 캐시를 포함하며, 상기 버퍼 캐시의 데이터 블록에는 데이터가 저장될 수 있다 . 상기 데이터는 백그라운드 프로세스에 의하여 영구 저장 장치(140)에 기록될 수 있다.
영구 저장 매체(persistent storage)(140)는, 예를 들어 자기(magnetic) 디스크, 광학(optical) 디스크 및 광자기(magneto-optical) 저장 디바이스뿐만 아니라 플래시 메모리 및/또는 배터리-백업 메모리에 기초한 저장 디바이스와 같은, 임의의 데이터를 지속적으로 할 수 있는 비-휘발성(non-volatile) 저장 매체를 의미한다. 이러한 영구 저장 매체(140)는 다양한 통신 수단을 통하여 데이터베이스 서버(120)의 프로세서 및 메모리와 통신할 수 있다. 추가적인 실시예에서, 이러한 영구 저장 매체(140)는 데이터베이스 서버(120) 외부에 위치하여 데이터베이스 서버(120)와 통신가능할 수도 있다.
DBMS(130)는 데이터베이스 서버(120)에서 필요한 데이터를 검색, 삽입, 수정 및/또는 삭제 등과 같은 동작들을 수행하는 것을 허용하기 위한 프로그램으로서, 전술한 바와 같이, 데이터베이스 서버(120)의 메모리에서 프로세서에 의하여 구현될 수 있다.
클라이언트(110)와 데이터베이스 서버(120) 네트워크를 통하여 서로 통신할 수 있다. 본 발명의 일 실시예에 따른 네트워크는 공중전화 교환망(PSTN:Public Switiched Telephone Network), xDSL(x Digital Subscriber Line), RADSL(Rate Adaptive DSL), MDSL(Multi Rate DSL), VDSL(Very High Speed DSL), UADSL(Universal Asymmetric DSL), HDSL(High Bit Rate DSL) 및 근거리 통신망(LAN) 등과 같은 다양한 유선 통신 시스템들을 사용할 수 있다.
또한, 본 명세서에서 제시되는 네트워크는 CDMA(Code Division Multi Access), TDMA(Time Division Multi Access), FDMA(Frequency Division Multi Access), OFDMA(Orthogonal Frequency Division Multi Access), SC-FDMA(Single Carrier-FDMA) 및 다른 시스템들과 같은 다양한 무선 통신 시스템들을 사용할 수 있다. 본 명세서에서 설명된 기술들은 위에서 언급된 네트워크들뿐만 아니라, 다른 네트워크들에서도 사용될 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터베이스 서버(120)의 컴포넌트들을 예시적으로 도시한다.
도 2에서 도시되는 바와 같이, 데이터베이스 서버(120)는 영구 저장 매체(persistent storage)(140) 및 DBMS(130)를 포함할 수 있다. 전술한 바와 같이, DBMS(130)는 데이터베이스 서버(120) 내의 하나 이상의 메모리 및 하나 이상의 프로세서에 의하여 동작될 수 있다.
DBMS(130)는 송수신 모듈(210), 인덱스 관리 모듈(220), 데이터 관리 모듈(230), 암호화 모듈(240) 및 복호화 모듈(250)을 포함할 수 있다. 도 2에서 도시되는 DBMS(130) 내의 각각의 모듈들은 서로 통신가능하다. 이러한 DBMS(130)의 모듈들은 예시적인 것으로서, 구현에 따라 추가적인 모듈들이 포함될 수 있거나 상기 모듈들 중 일부가 생략될 수도 있다.
송수신 모듈(210)은 사용자로부터의 데이터 저장, 조회 및 인덱스 빌드, 조회 요청 등을 수신할 수 있다. 또한, 송수신 모듈(210)은 데이터 저장, 조회 및 인덱스 빌드, 조회 요청에 대한 결과 정보를 전달할 수도 있다.
인덱스 관리 모듈(220)은 인덱스 빌드, 업데이트, 저장 및 조회와 관련된 요청을 처리 및 관리할 수 있다. 인덱스 관리 모듈(220)은 빌드 모듈(260) 및 스캔 모듈(270)을 포함할 수 있다. 빌드 모듈(260)은 인덱스의 빌드 및/또는 빌드된 인덱스의 업데이트와 관련된 동작들을 수행할 수 있다. 스캔 모듈(270)은 복호화된 인덱스 테이블에 대한 인덱스 스캔을 수행할 수 있다.
데이터 관리 모듈(230)은 데이터의 저장 및 조회와 관련된 요청을 처리 및 관리할 수 있다. 이러한 데이터 관리 모듈(230)은 저장 모듈(280) 및 조회 모듈(290)을 포함할 수 있다. 저장 모듈(280)은 데이터의 저장(업데이트 포함)과 관련된 요청을 처리 및 관리할 수 있다.
이러한 저장 모듈(280)은 데이터가 저장될 컬럼이 암호화 지정된 컬럼인지 여부 그리고 데이터가 저장될 컬럼이 인덱스 설정된 컬럼인지 여부 등을 판단할 수 있다. 나아가, 저장 모듈(280)은 데이터 및 인덱스 테이블 등을 저장할 것을 결정할 수 있다. 또한, 저장 모듈(280)은 암호화된 데이터 및/또는 암호화된 인덱스 테이블에 대한 저장 위치를 결정할 수 있다. 예를 들어, 저장 모듈(280)은 암호화된 데이터에 대하여 데이터 테이블 상에서의 저장 위치를 결정할 수 있다. 다른 예시로, 저장 모듈(280)은 암호화된 데이터에 대하여 영구 저장 매체(140) 상의 저장 위치를 결정할 수 있다.
조회 모듈(290)은 데이터의 조회(판독)과 관련된 요청을 처리 및 관리할 수 있다. 조회 모듈(290)은 스캔 모듈(270)과 통신하여 인덱스 스캔에 따라 획득된 컬럼 키(column key) 및 로우 아이디(rowid)에 기초하여 해당 데이터(들)의 값을 조회할 수 있다.
암호화 모듈(240)은 데이터를 영구저장매체(140)에 기록(저장)하기 전에 데이터에 대한 암호화(encryption)를 수행할 수 있다. 암호화 모듈(240)은 평문 데이터(plain text)를 기초로 하여 암호화된 데이터(cipher text)를 생성할 수 있다. 본 명세서에서의 데이터에 대한 암호화 방식은, 컬럼 레벨 암호화 및 블록 레벨 암호화(예컨대, 테이블스페이스(tablespace)) 레벨 암호화를 포함할 수 있다. 컬럼 레벨 암호화는 암호화되도록 지정된 컬럼의 데이터가 암호화된다는 것을 의미한다. 블록 레벨의 암호화는, 블록 단위로 데이터에 대한 암호화가 구현된다는 것으로서, 예를 들어 OS 시스템 상에서 생성되는 물리적 데이터 파일들이 블록 단위로 암호화된다는 것을 의미한다. 본 발명의 일 양상에서, 저장될 데이터에 대해서는 컬럼 레벨 암호화가 수행되고, 저장될 인덱스에 대해서는 블록 레벨 암호화가 수행될 수 있다. 본 발명의 추가적인 양상에서, 블록 레벨 암호화는 블록 단위 또는 그 이상(파일, 세그먼트 및 테이블 스페이스 등)의 단위로 암호화가 구현되는 것을 의미할 수도 있다.
본 발명의 추가적인 양상에서, 암호화 모듈(240)은 암호화된 데이터에 암호비교코드(예컨대, 해시 함수)를 맵핑시켜 영구저장매체(140)에 저장할 수 있다. 따라서, 영구저장매체(140)에는 암호비교코드 및 암호화된 데이터가 기록되어, 암호비교코드를 통하여 복호화 모듈(250)이 복호화한 데이터에 대한 무결성이 검증될 수 있다.
본 발명의 일 양상에서, 데이터(예컨대, 암호화된 데이터)를 영구저장매체(140)에 기록하는 동작은 DBMS(130)의 백그라운드 프로세스(예컨대, Database buffer writer process, Data block writer process, Checkpoint process, 및/또는 Log writer process 등)에 의해 구현될 수 있다. 이러한 경우, 암호화 모듈(240)이 암호화된 데이터를 메모리(예컨대, 버퍼캐시)에 저장해 놓으면(foreground process), 사전결정된 시점에 백그라운드 프로세스가 암호화된 데이터를 영구저장매체(140)에 기록할 수 있다. 또한, 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작은, 백그라운드 프로세스가 메모리 내의 블록을 상기 영구 저장 매체로 기록하고자 할 때 수행될 수도 있다.
본 발명의 일 양상에서, 암호화 모듈(240)은 DBMS(120)의 프론트엔드(frontend) 계층 및 백엔드(backend) 계층 전반에 걸쳐서 위치할 수 있다. 또한, 본 발명의 추가적인 양상에서, 복호화 모듈(250)은 DBMS(120)의 백엔드 계층에 위치할 수 있다.
복호화(decryption) 모듈(250)은 암호화된 데이터를 복호화하여 평문 데이터에 대응되는 복호화된 데이터(decipher text)를 생성할 수 있다. 추가적으로, 복호화 모듈(250)은 복호화된 데이터가 평문 데이터와 동일한지 여부를 판단할 수도 있다(즉, 무결성 검증).
복호화 모듈(250)은 영구저장매체(140)에 암호화되어 기록된 데이터가 메모리로 로딩되는 경우, 로딩된 데이터에 대한 복호화를 수행할 수 있다. 복호화 모듈(250)은 암호화 모듈(240)의 암호화 방식에 대응하여, 해당 데이터를 복호화할 수 있다. 또한, 복호화 모듈(250)은 암호화되어 기록된 데이터에 메모리에 상주되어 있는 경우, 해당 데이터에 대한 복호화 또한 수행할 수 있다.
본 명세서에서의 컬럼 레벨 암호화는 컬럼 단위로 제 1 암호화 키가 생성되며, 상기 블록 레벨 암호화는 블록 단위로 제 2 암호화 키가 생성되며, 그리고 상기 제 1 암호화 키 및 상기 제 2 암호화 키 상이한 값을 가질 수 있다. 또한, 상기 제 1 암호화 키 및 상기 제 2 암호화 키는 상기 영구 저장 매체 또는 메모리(예컨대, 데이터 딕셔너리 캐시)의 데이터 딕셔너리(DD:Data Dictionary)에 저장될 수 있다. 추가적으로, 제 1 암호화 키 및 상기 제 2 암호화 키는 마스터 키(master key)를 통하여 암호화되어 상기 데이터 딕셔너리에 저장되며, 그리고 마스터 키는 외부 저장 매체 또는 상기 영구 저장 매체에 저장될 수 있다.
본 발명의 일 양상에 따른 복호화 방식은, 암호화 방식에서 암호문을 생성할 때 사용되는 암호화 키와 동일한 대칭키를 사용할 수 있다. 이러한 암호화/복호화 방식으로는 예를 들어, DES(Data Encryption Standard), AES(Advanced Encryption Standard), ARIA, Twofish 및 SEED 등을 포함할 수 있지만 이들로 한정되는 것은 아니다. 추가적으로, 본 발명의 일 양상에 따른 암호화 및 복호화 방식은, 공개키(public key) 및 비밀키(private key)를 갖는 공개키 암호화 방식을 사용할 수도 있다. 이러한 암호화/복호화 방식으로는 예를 들어, RSA, ElGamal, 타원곡선암호 및 배낭암호 방식을 포함할 수 있지만, 이들로 한정되는 것은 아니다.
본 발명의 추가적인 양상에서, 블록 단위로 암호화된 인덱스 테이블에 대한 복호화는, 영구저장매체(140)로부터 로딩되는 경우 수행될 수 있다. 또한, 컬럼 레벨로 암호화된 데이터에 대한 복호화는 해당 데이터를 액세스하고자 하는 경우에 수행될 수 있다. 본 발명의 추가적인 양상에서, 블록 레벨 암호화/복호화에 대한 암호화 키 및 컬럼 레벨 암호화/복호화에 대한 암호화 키는 서로 상이할 수 있다.
본 발명의 추가적인 양상에서, 암호화 모듈(240)은 데이터 값(plain text 값)에 기초하여 암호화된 데이터 값을 생성할 수 있다. 암호화 모듈(240)은 암호화 키에 포함된 암호화 정보에 기초하여, 암호화 함수를 결정하고, 상기 데이터 값에 기초하여 연산하는 암호화 함수를 이용하여 암호화된 데이터 값을 생성할 수 있다.
상기 암호화 키는 적어도 암호화 모드에 관련한 정보, 암호화 데이터 타입 및 데이터의 길이 정보 등을 포함할 수 있다. 상기 암호화 모드는 예를 들어, 전술한 바와 같은 DES(Data Encryption Standard), AES(Advanced Encryption Standard), ARIA, Twofish 및 SEED 등을 포함할 수 있다.
암호화 키는 암호화 및 복호화에 사용될 수 있다. 암호화 함수는 평문(plain text)을 암호문(cipher text)으로 변경할 수 있는 암호화 알고리즘을 포함할 수 있다. 상기 암호화 함수는 암호화 및 복호화를 수행할 때, 상기 암호화 키를 참조할 수 있다. 상기 암호화 키는 상기 데이터베이스 서버(120)의 내부에 저장되거나, 또는 상기 데이터베이스 서버(120)의 외부에 저장될 수 있다. 또한, 추가적인 보안을 위하여 상기 암호화키는 마스터 키(master key)를 통하여 암호화되어 저장될 수 있다. 이러한 마스터 키는 하나의 시스템에 대하여 글로벌한 하나의 값을 가질 수 있다. 상기 마스터 키는 외부 저장매체 또는 상기 데이터베이스 서버(120)의 내부에 저장될 수 있다. 본 발명의 일 양상에 따른 암호화(복호화) 기법은, 다양한 암호화 알고리즘, 암호화 키, 및/또는 암호화 옵션(초기화 벡터 사용여부 등)의 조합으로 이루어질 수 있다.
암호화된 데이터는 하나 이상의 데이터의 값 및 상기 데이터의 값이 저장될 영구 저장 매체(140) 상의 위치 정보에 적어도 부분적으로 기초하여 생성된 암호비교코드와 함께 상기 영구 저장 매체(140)에 저장될 수 있다. 즉, 이러한 암호비교코드는 복호문(decrypted text)의 무결성(Integrity)을 검증하기 위하여 사용될 수 있다. 이러한 암호비교코드는 예를 들어, SHA(secure hash algorithm) 계, MD5등의 해시 알고리즘을 이용하여 생성된 해시 값을 포함할 수 있다.
본 발명의 추가적인 양상에서, 해시 알고리즘은 데이터 테이블의 데이터 값 및 상기 데이터 값의 위치 정보(예컨대, 영구 저장 장치 내에서의 위치 정보) 저장 위치 정보에 적어도 부분적으로 기초하여, 암호화된 데이터 값에 매칭되는 해시 값을 생성할 수 있다. 여기서 상기 위치 정보는 로우 식별자(rowid) 및 컬럼 키(column key) 중 적어도 하나를 포함할 수 있다. 예를 들어, 로우 식별자(rowid)는 데이터 블록 상에서의 데이터 값이 기록될 위치에 적어도 부분적으로 기초할 수 있다.
해시 값을 사용하지 않는 경우에는, 정당한 접근 권한을 보유한 내부자가 암호화된 데이터 값을 입수하여, 상기 암호화된 데이터 값을 데이터 테이블 상에서 본래의 위치와 다른 위치에 저장할 수 있다. 이러한 경우, 상기 암호화된 데이터 값의 복호문은 유효한 데이터 값이 출력되므로, 데이터베이스 서버(120)는 상기 데이터의 변조를 감지할 수 없다. 해시 값을 상기 암호화된 데이터 값에 매칭함으로써, 데이터베이스 서버(120)는 데이터의 변조를 감지할 수 있다. 그러나, 해시 값이 단순히 데이터의 평문에 기초하는 경우, 정당한 접근 권한을 보유한 내부자가 암호화된 데이터 값 및 그에 매칭된 해시 값을 입수하여, 다른 저장 위치에 저장하는 공격을 하는 경우에 대해서는 복호화된 데이터 값이 유효하고, 복호화된 데이터 값에 기초한 해시 값이 데이터 값(평문 데이터 값)에 기초한 해시 값과 동일하므로, 데이터의 변조 여부가 감지될 수 없다. 그러나, 본 발명의 일 실시예에 의한 상기 해시 값은 암호화된 데이터의 저장 위치에 적어도 부분적으로 기초할 수 있다. 따라서, 전술한 바와 같은 데이터의 저장 위치를 변경하는 공격에 대해서 본 발명의 일 실시예에 따른 데이터베이스 서버(120)는 복호화된 데이터 값 및 복호화된 데이터 값의 저장 위치에 기초한 해시 값이 저장된 해시 값과 상이하므로, 유효한 암호화된 데이터 값의 위치 변경을 감지할 수 있다.
도 3은 본 발명의 일 실시예에 따른 데이터 저장 및 인덱스 빌드 프로세스에 대한 예시적인 흐름도를 도시한다.
도 3에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 3에서의 암호화 및 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.
도 3에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.
송수신 모듈(210)은 데이터 저장 요청을 수신할 수 있다(305). 여기서의 데이터 저장 요청은, DB로 데이터를 기록(write)(인서트 및/또는 업데이트 포함)하기 위한 요청을 의미할 수 있다. 송수신 모듈(210)은 해당 데이터 저장 요청을 저장 모듈(280)로 전달할 수 있다(310).
저장 모듈(280)은 사전설정된(예컨대, 클라이언트의 설정) 스키마(schema)에 따라서, 데이터가 저장될 테이블의 해당 컬럼이 암호화 지정된 컬럼인지 여부를 결정할 수 있다(315). 또한, 사전설정된 스키마에 따라서 저장 모듈(280)은 데이터가 저장될 테이블의 해당 컬럼이 인덱스 설정된 컬럼인지 여부를 결정할 수 있다(320). 본 발명의 일 양상에서, 상기 단계 315 및 320은 독립적으로 수행될 수 있거나 또는 어토믹(atomic)하게 수행될 수 있다. 데이터가 저장될 테이블의 해당 컬럼이 암호화 지정된 컬럼이고 그리고 인덱스 설정된 컬럼인 경우, 저장 모듈(280)은 해당 데이터를 영구저장매체(140)에 저장할 것을 결정하고 그리고 암호화 모듈(240)로 해당 데이터에 대한 암호화 요청을 전달할 수 있다(325).
암호화 모듈(240)은 사전결정된 암호화 알고리즘에 기초하여 해당 데이터에 대한 컬럼 레벨 암호화를 수행할 수 있다(330). 전술한 바와 같이, 컬럼 레벨 암호화는 해당 컬럼(즉, 암호화 지정된 컬럼)에 속하는 임의의 데이터에 대한 값을 암호한다는 의미이다. 예를 들어, 암호화 지정된 컬럼 내의 특정한 데이터에 대한 값은 "%$!G#&"과 같은 형태로 암호화될 수 있다.
암호화 모듈(240)은 암호화가 완료된 이후에 암호화된 데이터에 대한 영구저장매체(140)로의 저장 요청을 전달할 수 있다(340). 예를 들어, 이러한 저장 요청 및 암호화된 데이터는 데이터베이스 서버(120)의 메모리의 버퍼 캐시에 저장될 수 있다. 그리고나서, 예를 들어, 백그라운드 프로세스에 의해서 컬럼 레벨로 암호화된 데이터는 영구저장매체(140)의 데이터 세그먼트로 저장될 수 있다. 따라서, 전술한 프로세스를 통하여, 데이터에 대한 기록(업데이트 포함) 요청에 응답하여, 클라이언트에 대하여 투명한 방식으로 암호화된 데이터가 영구저장매체(140)에 기록될 수 있다(350).
데이터에 대한 인덱스의 빌드와 관련하여, 도 3을 참조하면, 암호화 모듈(240)은 암호화된 데이터에 대한 복호화 요청을 복호화 모듈(250)로 전달할 수 있다(335). 일례로, 상기 단계 330에서의 데이터의 암호화는 데이터베이스 서버(120)의 프론트엔드(frontend)에서 수행될 수 있다. 따라서, 인덱스 빌드는 데이터베이스 서버(120)의 백엔드(backend)에서 수행되기 때문에, 인덱스의 빌드 프로세스를 수행하기 위해서는 선결적으로 암호화된 데이터를 복호화하여야 할 것이다.
본 발명의 일 양상에서, 복호화 모듈(250)은 암호화 모듈(240)로부터의 컬럼 레벨로 암호화된 데이터에 대한 암호화 정보를 기초로 하여, 해당 데이터에 대한 컬럼 레벨의 복호화를 수행할 수 있다(345). 즉, 복호화 모듈(250)은 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다.
전술한 바와 같이, 예를 들어, 인덱스의 빌드(예컨대, 인서트 데이터)의 경우, 복호화 모듈(250)은 영구저장매체(140)에 암호화된 데이터가 기록되기 전에 암호화 모듈(240)에 의한 암호화 데이터에 관한 정보를 메모리로부터 판독할 수 있기 때문에, 복호화 모듈(250)은 메모리로부터 획득된 암호화된 데이터에 대한 복호화를 수행할 수 있다. 다른 예시로, 인덱스의 업데이트의 경우에는 복호화 모듈(250)은 암호화된 데이터를 영구저장매체(140)로부터 획득함으로써 상기 암호화된 데이터에 대한 복호화를 수행할 수 있다. 암호화/복호화 방식은 도 2에서 설명된 암호화/복호화 방식에 기초하여 수행될 수 있다.
도 3으로 되돌아 가면, 복호화 모듈(250)은 복호화된 데이터에 대한 인덱스 빌드 요청을 빌드 모듈(260)로 전달할 수 있다(355).
빌드 모듈(260)은 복호화된 데이터를 기초로 하여 인덱스 테이블을 생성할 수 있다(360). 본 발명의 일 양상에서, 빌드 모듈(260)은, 하나 이상의 복호화된 데이터가 저장될 컬럼에 대한 크기(size) 속성에 적어도 부분적으로 기초하여, 인덱스 테이블을 생성할 수 있다. 또한, 상기 빌드 모듈(260)은, B-트리(Balanced Tree) 인덱스 기법, 비트맵(Bitmap) 인덱스 기법 및 함수 기반 인덱스(FBI:Function Based Index) 기법 중 적어도 하나에 기초하여 인덱스 테이블 빌드를 수행할 수 있다.
본 발명의 일 양상에서, 빌드 모듈(260)은 인덱스 빌드가 완료된 이후에 빌드된 인덱스 테이블에 대한 암호화 요청을 암호화 모듈(240)로 전달할 수 있다(365).
암호화 모듈(240)은 빌드된 인덱스 테이블에 대하여 블록 레벨(예컨대, 테이블스페이스 레벨) 암호화를 수행할 수 있다(370). 그리고나서, 암호화 모듈(240)은 블록 레벨로 암호화된 인덱스 테이블에 대한 디스크 저장 요청을 전달할 수 있다(375). 그리고나서, 예컨대 백그라운드 프로세스에 의하여 블록 레벨로 암호화된 인덱스 테이블은 영구저장매체(140)의 인덱스 세그먼트로 저장될 수 있다. 따라서, 전술한 방식을 통하여, 인덱스 레인지 스캔이 허용될 수 있는 암호화된 인덱스 테이블이 빌드될 수 있다.
본 발명의 추가적인 실시예에서, 데이터 업데이트 요청이 수신되는 경우, 데이터베이스 서버(120)는 이하에서 도 4와 관련하여 후술될 인덱스 스캔 및/도는 인덱스 조회 프로세스를 수행한 이후에 도 3에서 도시되는 인덱스 빌드 프로세스를 통하여 데이터 업데이트 및 인덱스 업데이트를 구현할 수 있다.
도 4는 본 발명의 일 실시예에 따른 인덱스 스캔 및 조회 프로세스에 대한 예시적인 흐름도를 도시한다.
도 4에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 4에서의 암호화 및 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.
도 4에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.
송수신 모듈(210)은 인덱스 조회 요청을 수신할 수 있다(405). 상기 인덱스 조회 요청은 예를 들어, 인덱스 레인지 스캔(index range scan) 요청일 수 있다. 송수신 모듈(210)은 인덱스 조회 요청을 스캔 모듈(270)로 전달할 수 있다(410).
스캔 모듈(210)은 인덱스 조회 요청에 대한 프로세싱을 수행할 수 있다. 또한, 스캔 모듈(270)은 암호화된 인덱스 테이블이 영구저장매체(140)로부터 메모리로 로딩될 수 있도록 인덱스 스캔 요청을 전달할 수 있다(415). 이러한 인덱스 스캔 요청의 전달은 하나의 프로세스로 통합될 수도 있다.
인덱스 스캔 요청에 응답하여, 영구저장매체(140)로부터 복호화 모듈(250)로 블록 레벨로 암호화된 인덱스 테이블이 로딩될 수 있다(420). 이러한 암호화된 인덱스 테이블의 로딩은 영구저장매체(140)로부터 블록 단위로 로딩될 수 있다.
복호화 모듈(250)은 블록 레벨로 암호화된 인덱스 테이블을 복호화하여, 복호화된 인덱스 테이블을 생성할 수 있다(425). 복호화 모듈(250)은 복호화된 인덱스 테이블을 스캔 모듈(270)로 전달할 수 있다.
스캔 모듈(270)은 복호화된 인덱스 테이블에 대한 인덱스 스캔을 수행할 수 있다(435). 본 명세서에서의 인덱스 스캔이란, 인덱스에 대한 컬럼 키(column key) 및/또는 로우 ID(rowid)를 찾기 위하여 인덱스에 대한 스캔을 수행하는 프로세스를 의미할 수 있다. 또한, 본 명세서에서의 인덱스 조회란, 스캔된 인덱스에서의 컬럼의 rowid에 대응되는 데이터의 값(즉, 레코드)을 찾는 프로세스를 의미할 수 있다.
스캔 모듈(270)은 인덱스 스캔 결과를 조회 모듈(290)로 전달할 수 있다(440). 그리고나서, 조회 모듈(290)은 인덱스 스캔 결과 값(즉, 컬럼 키 및 로우 ID)에 따른 데이터 값 조회 요청을 생성 및 전달할 수 있다(445).
이러한 경우, 영구저장매체(140)로부터 컬럼 레벨로 암호화된 데이터가 로딩될 수 있다(450). 복호화 모듈(250)은 컬럼 레벨로 암호화된 데이터를 복호화할 수 있다(455). 이렇게 복호화된 데이터는 조회 모듈(290)로 전달될 수 있다(460). 또한, 조회 모듈(290)은 인덱스 조회에 대한 결과값을 생성하여 이를 송수신 모듈(210)로 전달할 수 있다.
본 발명의 추가적인 양상에서, 인덱스 업데이트에 대한 프로세스의 경우, 앞서 설명된 바와 같이, 인덱스 스캔 프로세스(예컨대, 단계 405 내지 435 단계)가 도 3에서의 단계 320 이후에 수행될 수 있다.
본 발명의 추가적인 양상에서, 만약 인덱스된 테이블이 암호화된 컬럼을 전부 포함하는 경우에는, 블록 레벨로 암호화된 인덱스 테이블을 복호화함으로써 인덱스 스캔 및 인덱스 조회가 완료될 수도 있다.
전술한 바와 같이, 인덱스 테이블에 대해서는 컬럼 단위로 암호화/복호화가 이루어지지 않고 블록 단위로 암호화/복호화가 이루어지기 때문에, 데이터에 대한 보안을 유지하는 동시에 인덱스 레인지 스캔이 효율적으로 이루어질 수 있다. 본 발명의 일 양상에 따른 암호화/복호화 방식의 경우, 보안화된 데이터베이스에 대한 단일 키 검색(single key search), 레인지 검색(range search) 및 복합키 검색(composite key search) 등이 허용될 수 있다.
도 5는 본 발명의 일 실시예에 따른 데이터 조회 프로세스에 대한 예시적인 흐름도를 도시한다.
도 5에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 5에서의 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.
도 5에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.
도 5에서 도시되는 바와 같이, 송수신 모듈(210)은 예를 들어, 클라이언트로부터의 데이터 조회 요청을 수신할 수 있다(510). 송수신 모듈(210)은 데이터 조회 요청을 조회 모듈(290)로 전달할 수 있다(520).
조회 모듈(290)은 조회 요청을 프로세싱하여, 영구저장매체(140)로부터 조회 요청에 대응되는 암호화된 데이터가 로딩될 수 있도록 데이터 조회 요청을 전달할 수 있다(530).
그리고나서, 조회 요청에 대응되는, 컬럼 레벨로 암호화된 데이터가 로딩될 수 있다(540). 복호화 모듈(250)은 컬럼 레벨로 암호화된 데이터를 복호화하여 복호화된 데이터를 생성할 수 있다(550). 복호화 모듈(250)은 복호화된 데이터를 조회 모듈(290)로 전달할 수 있다(560).
조회 모듈(290)은 복호화된 데이터를 프로세싱하여(또는 프로세싱 없이), 데이터 조회 결과값을 생성한 후 데이터 조회 결과값을 송수신 모듈(210)로 전달할 수 있다(570).
도 6은 본 발명의 일 실시예에 따라 데이터 및 인덱스가 영구저장매체(140)에서 암호화되어 저장되는 암호화 방식을 예시적으로 도시한다.
도 6에서 도시되는 바와 같이, 영구 저장 매체(140)는 데이터 세그먼트(또는 테이블 세그먼트)(610) 및 인덱스 세그먼트(620)를 포함할 수 있다. 여기서, 데이터 세그먼트는 데이터 테이블이 저장될 수 있는 영역이며, 인덱스 세그먼트는 인덱스 테이블이 저장될 수 있는 영역이다. 즉, 오브젝트가 (데이터) 테이블인지 인덱스인지에 따라서 영구 저장 매체(140)의 상이한 영역이 할당될 수 있다.
본 발명의 일 양상에 따라서, 인덱스 테이블에 대해서는 블록 레벨 암호화가 수행되며 데이터 테이블에 대해서는 컬럼 레벨 암호화가 수행될 수 있다.
본 발명의 일 양상에 따라서, 영구저장매체(140)에서 DBMS(130)(즉, 메모리)로 컬럼 레벨로 암호화된 데이터 및 블록 레벨로 암호화된 인덱스를 로딩하는 경우 복호화가 자동적으로 이루어질 수 있다. 또한, DBMS(130)(즉, 메모리)로부터 영구저장매체(140)로 데이터 및 인덱스가 저장되는 경우 암호화가 자동적으로 이루어질 수 있다. 따라서, 전술한 기술적 특징들을 통하여 클라이언트에게 투명한 방식으로의 보안관리가 가능해질 수 있다.
데이터 세그먼트(610)에는 컬럼 단위의 암호화가 적용된 데이터가 저장되기 때문에, 성명 및 생년월일에 대한 컬럼에 대해서는 암호화되지 않고 신용카드번호에 대한 컬럼에 대해서만 암호화가 이루어질 수 있다. 또한, 인덱스 세그먼트(620)에는 블록 단위의 암호화가 적용된 인덱스 테이블이 저장되기 때문에, 도 6에서 도시되는 바와 같이, 인덱스 테이블 전체가 암호화되어 저장될 수 있다.
도 7은 본 발명의 일 실시예에 따른 데이터 저장 및 인덱스 빌드(또는 업데이트)에 대한 예시적인 순서도를 도시한다.
도 7에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 7에서의 암호화 및 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.
도 7에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.
데이터베이스 서버(120)는 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구저장매체 또는 메모리로부터 읽을 수 있다(710). 즉, 컬럼 레벨의 암호화는 선택된 데이터에 대한 컬럼 단위의 암호화를 의미할 수 있다.
그리고나서, 데이터베이스 서버(120)는 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다(720). 이는 인덱스 테이블을 생성하는데 있어서, 암호화된 데이터를 기초로 하여 인덱스 테이블을 생성하는 경우, 인덱스 레인지 스캔이 불가능해지기 때문이다. 즉, 인덱스 레인지 스캔을 허용함과 동시에 인덱스에 대한 보안을 유지하기 위해서, 인덱스 테이블의 생성은 복호화된 데이터(즉, 평문 데이터)를 기초로 수행될 수 있다(730).
도 7에서 도시되는 바와 같이, 데이터베이스 서버(120)는 생성된 인덱스 테이블을 블록 레벨로 암호화할 수 있다(740). 즉, 복호화된 데이터를 기초로 하여 인덱스 테이블을 생성하였기 때문에, 해당 인덱스 테이블에 대한 보안을 유지하기 위해서 인덱스 테이블에 대해서는 블록 레벨로 암호화가 이루어질 수 있다.
그리고나서, 데이터베이스 서버(120)는 암호화된 인덱스 테이블을 영구 저장 매체(140)에 저장할 수 있다(750).
즉, 본 발명의 일 양상에 따른 암호화 기법의 경우, 데이터 테이블 및 인덱스 테이블을 모두 테이블 스페이스 레벨로 암호화한 기법과 비교했을 때, 보다 적은 양을 암호화하게 된다(결국 속도도 빨라짐). 더불어, 본 발명의 일 양상에 따른 암호화/복호화 기법의 경우, 데이터 테이블에 대해서 컬럼 단위로 암호화하는 기법(인덱스 테이블에 대해서는 별도의 암호화를 하지 않음)과 비교했을 때, 인덱스 레인지 스캔이 가능하다는 장점을 가지게 된다. 나아가, 본 발명의 일 양상에 따른 암호화/복호화 기법의 경우 인덱스 테이블을 블록 레벨로 암호화하기 때문에, 인덱스 테이블로 저장된 컬럼에 대한 크기(size) 속성 값을 노출시키지 않기 때문에, 보다 높은 수준의 보안 관리가 가능해질 수 있다.
도 8은 본 발명의 일 실시예에 따른 인덱스 조회에 대한 예시적인 순서도를 도시한다.
도 8에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 8에서의 암호화 및 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.
도 8에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.
데이터베이스 서버(120)는 인덱스 조회 요청(예컨대, 인덱스 레인지 스캔 요청)에 응답하여, 블록 레벨로 암호화된 인덱스 테이블을 영구 저장 매체(140)로부터 리트리브할 수 있다(810). 그리고나서, 데이터베이스 서버(120)는 블록 레벨로 암호화된 인덱스 테이블을 복호화하여 복호화된 인덱스 테이블을 생성할 수 있다(820).
데이터베이스 서버(120)는 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔을 수행할 수 있다(830). 즉, 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔이 수행되기 때문에, 암호화되지 않은 데이터에 따른 인덱스 테이블이 획득될 수 있다. 따라서, 데이터베이스 서버(120)는 인덱스 스캔에 따른 결과(예컨대, 컬럼 키 및 로우 ID)를 획득할 수 있다.
데이터베이스 서버(120)는 인덱스 스캔에 따른 결과와 대응될 수 있는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 리트리브할 수 있다(840). 그리고나서, 데이터베이스 서버(120)는 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다(850). 따라서, 이러한 복호화된 데이터의 값(레코드)을 판독함으로써, 인덱스 조회 요청에 대한 결과 값이 생성될 수 있다.
따라서, 전술한 암호화/복호화 방식(즉, 컬럼 레벨 암호화와 블록 레벨 암호화의 조합)은 인덱스 레인지 스캔을 허용하면서 데이터에 대한 효율적인 보호를 가능케할 수 있다.
본 발명의 기술 분야에서 통상의 지식을 가진 자는 여기에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 프로세서들, 수단들, 회로들 및 알고리즘 단계들이 전자 하드웨어, (편의를 위해, 여기에서 "소프트웨어"로 지칭되는) 다양한 형태들의 프로그램 또는 설계 코드 또는 이들 모두의 결합에 의해 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 이들의 기능과 관련하여 위에서 일반적으로 설명되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 설명된 기능을 구현할 수 있으나, 이러한 구현 결정들은 본 발명의 범위를 벗어나는 것으로 해석되어서는 안 될 것이다.
여기서 제시된 다양한 실시예들은 방법, 장치, 또는 표준 프로그래밍 및/또는 엔지니어링 기술을 사용한 제조 물품(article)으로 구현될 수 있다. 용어 "제조 물품"은 임의의 컴퓨터-판독가능 장치로부터 액세스 가능한 컴퓨터 프로그램, 캐리어, 또는 매체(media)를 포함한다. 예를 들어, 컴퓨터-판독가능 매체는 자기 저장 장치(예를 들면, 하드 디스크, 플로피 디스크, 자기 스트립, 등), 광학 디스크(예를 들면, CD, DVD, 등), 스마트 카드, 및 플래쉬 메모리 장치(예를 들면, EEPROM, 카드, 스틱, 키 드라이브, 등)를 포함하지만, 이들로 제한되는 것은 아니다. 또한, 여기서 제시되는 다양한 저장 매체는 정보를 저장하기 위한 하나 이상의 장치 및/또는 다른 기계-판독가능한 매체를 포함한다. 용어 "기계-판독가능 매체"는 명령(들) 및/또는 데이터를 저장, 보유, 및/또는 전달할 수 있는 무선 채널 및 다양한 다른 매체를 포함하지만, 이들로 제한되는 것은 아니다.
제시된 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조는 예시적인 접근들의 일례임을 이해하도록 한다. 설계 우선순위들에 기반하여, 본 발명의 범위 내에서 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조가 재배열될 수 있다는 것을 이해하도록 한다. 첨부된 방법 청구항들은 샘플 순서로 다양한 단계들의 엘리먼트들을 제공하지만 제시된 특정한 순서 또는 계층 구조에 한정되는 것을 의미하지는 않는다.
제시된 실시예들에 대한 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.
110: 클라이언트
120: 데이터베이스 서버
130: DBMS(Database Management System)
140: 영구 저장 매체(persistent storage)
210: 송수신 모듈
220: 인덱스 관리 모듈
230: 데이터 관리 모듈
240: 암호화 모듈
250: 복호화 모듈
260: 빌드 모듈
270: 스캔 모듈
280: 저장 모듈
290: 조회 모듈
610: 데이터 세그먼트
620: 인덱스 세그먼트

Claims (18)

  1. 컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램으로서,
    상기 단계들은:
    하나 이상의 데이터에 대한 저장 요청을 수신하는 단계;
    상기 하나 이상의 데이터가 저장될 컬럼(column)이 암호화된 컬럼인지 여부 및 상기 하나 이상의 데이터가 저장될 컬럼이 인덱스 설정된 컬럼인지 여부를 판단하는 단계; 및
    상기 하나 이상의 데이터가 저장될 컬럼이 암호화된 컬럼이고 그리고 상기 하나 이상의 데이터가 저장될 컬럼이 인덱스 설정된 컬럼인 경우, 상기 하나 이상의 데이터를 컬럼 레벨로 암호화하여 저장하는 단계;
    상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체 또는 메모리로부터 읽어들이는 단계;
    상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계;
    상기 생성된 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하는 단계; 및
    상기 생성된 인덱스 테이블을 블록(block) 레벨로 암호화 하는 동작을 수행하는 단계;
    를 포함하는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  2. 제 1 항에 있어서,
    상기 블록 레벨로 암호화된 인덱스 테이블을 상기 영구 저장 매체에 저장하는 단계;
    를 더 포함하는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  3. 제 1 항에 있어서,
    상기 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작은,
    백그라운드 프로세스(background process)가 메모리 내의 블록을 상기 영구 저장 매체로 기록하고자 할 때 수행되는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 하나 이상의 데이터를 컬럼 레벨로 암호화하여 저장하는 단계는,
    컬럼 레벨로 암호화된 상기 하나 이상의 데이터를 상기 영구 저장 매체의 데이터 세그먼트에 저장하는 단계;
    를 포함하는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  6. 제 1 항에 있어서,
    상기 컬럼 레벨 암호화는 컬럼 단위로 제 1 암호화 키가 생성되며, 상기 블록 레벨 암호화는 블록 단위 또는 블록 이상의 단위로 제 2 암호화 키가 생성되며, 그리고 상기 제 1 암호화 키 및 상기 제 2 암호화 키는 상이한 값을 갖는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  7. 제 6 항에 있어서,
    상기 제 1 암호화 키 및 상기 제 2 암호화 키는 상기 영구 저장 매체 또는 메모리의 데이터 딕셔너리(DD:Data Dictionary)에 저장되는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  8. 제 7 항에 있어서,
    상기 제 1 암호화 키 및 상기 제 2 암호화 키는 마스터 키(master key)를 통하여 암호화되어 상기 데이터 딕셔너리에 저장되며, 그리고
    상기 마스터 키는 외부 저장 매체 또는 데이터베이스 서버에 저장되는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  9. 제 1 항에 있어서,
    상기 블록 레벨로 암호화된 인덱스 테이블을 상기 영구 저장 매체의 인덱스 세그먼트로 저장하는 단계;
    를 더 포함하는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  10. 제 1 항에 있어서,
    상기 인덱스 테이블을 생성하는 단계는,
    상기 하나 이상의 복호화된 데이터가 저장될 컬럼에 대한 크기(size) 속성에 적어도 부분적으로 기초하여, 상기 인덱스 테이블을 생성하는 단계;
    를 포함하는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  11. 제 1 항에 있어서,
    상기 인덱스 테이블을 생성하는 단계는,
    B-트리(Balanced Tree) 인덱스 기법, 비트맵(Bitmap) 인덱스 기법 및 함수 기반 인덱스(FBI:Function Based Index) 기법 중 적어도 하나에 기초하여 수행되는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  12. 제 1 항에 있어서,
    상기 암호화 및 복호화는,
    상기 데이터베이스 서버의 클라이언트에게 투명하게 자동적으로 수행되는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  13. 제 1 항에 있어서,
    상기 컬럼 레벨로 암호화된 하나 이상의 데이터는,
    상기 하나 이상의 데이터의 값 및 상기 데이터의 값이 저장될 위치 정보에 적어도 부분적으로 기초하여 생성된 암호비교코드와 함께 상기 영구 저장 매체에 저장되는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  14. 데이터베이스 서버로서,
    하나 이상의 데이터에 대한 저장 요청을 수신하고, 상기 하나 이상의 데이터가 저장될 컬럼(column)이 암호화된 컬럼인지 여부 및 상기 하나 이상의 데이터가 저장될 컬럼이 인덱스 설정된 컬럼인지 여부를 판단하고, 상기 하나 이상의 데이터가 저장될 컬럼이 암호화된 컬럼이고 그리고 상기 하나 이상의 데이터가 저장될 컬럼이 인덱스 설정된 컬럼인 경우 상기 하나 이상의 데이터를 컬럼 레벨로 암호화하여 저장하고, 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하고, 상기 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하고, 그리고 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작을 수행하는 적어도 하나의 프로세서; 및
    상기 컬럼 레벨로 암호화된 데이터를 포함하는 데이터 테이블 및 상기 블록 레벨로 암호화된 인덱스 테이블을 저장하는 영구 저장 매체(persistent storage);
    를 포함하는,
    데이터베이스 서버.
  15. 컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램으로서,
    상기 단계들은:
    인덱스 조회 요청에 응답하여, 블록 레벨로 암호화된 인덱스 테이블을 영구 저장 매체로부터 읽어들이는 단계;
    상기 블록 레벨로 암호화된 인덱스 테이블을 복호화하여 복호화된 인덱스 테이블을 생성하는 단계;
    상기 복호화된 인덱스 테이블을 기초로 하여, 인덱스 스캔을 수행하는 단계;
    상기 인덱스 스캔의 결과에 대응되는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 읽어들이는 단계; 및
    상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계;
    를 포함하는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  16. 제 15 항에 있어서,
    상기 인덱스 스캔의 결과는,
    상기 인덱스 조회 요청에 대응하는 컬럼 키(column key) 및 로우 ID(rowid)를 포함하는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  17. 제 15 항에 있어서,
    상기 하나 이상의 복호화된 데이터에 기초하여, 상기 인덱스 조회 요청에 대응하는 인덱스 조회 결과값을 생성하는 단계;
    를 더 포함하는,
    컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
  18. 데이터베이스 서버로서,
    인덱스 조회 요청에 응답하여, 블록 레벨로 암호화된 인덱스 테이블을 영구 저장 매체로부터 읽어들이고, 상기 블록 레벨로 암호화된 인덱스 테이블을 복호화하여 복호화된 인덱스 테이블을 생성하고, 상기 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔을 수행하고, 상기 인덱스 스캔의 결과에 대응되는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 읽어들이고, 그리고 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 적어도 하나의 프로세서; 및
    상기 컬럼 레벨로 암호화된 데이터를 포함하는 데이터 테이블 및 상기 블록 레벨로 암호화된 인덱스 테이블을 저장하는 영구 저장 매체(persistent storage);
    를 포함하는,
    데이터베이스 서버.
KR1020150040583A 2015-03-24 2015-03-24 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램 KR101563461B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020150040583A KR101563461B1 (ko) 2015-03-24 2015-03-24 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램
US14/733,819 US9779264B2 (en) 2015-03-24 2015-06-08 Method, server and computer program for security management in database
CN201510387233.6A CN106022155B (zh) 2015-03-24 2015-06-30 用于数据库安全管理的方法及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150040583A KR101563461B1 (ko) 2015-03-24 2015-03-24 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020150131320A Division KR20160114492A (ko) 2015-09-17 2015-09-17 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램

Publications (1)

Publication Number Publication Date
KR101563461B1 true KR101563461B1 (ko) 2015-10-26

Family

ID=54428309

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150040583A KR101563461B1 (ko) 2015-03-24 2015-03-24 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램

Country Status (3)

Country Link
US (1) US9779264B2 (ko)
KR (1) KR101563461B1 (ko)
CN (1) CN106022155B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10454908B1 (en) 2016-09-23 2019-10-22 Wells Fargo Bank, N.A. Storing call session information in a telephony system
US10783102B2 (en) * 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
CN106971121B (zh) * 2017-04-10 2021-01-01 深圳乐信软件技术有限公司 数据处理方法、装置、服务器及存储介质
CN108809906B (zh) * 2017-05-03 2020-07-07 腾讯科技(深圳)有限公司 数据处理方法、系统及装置
US10515077B2 (en) * 2017-06-14 2019-12-24 Microsoft Technology Licensing, Llc Execution optimization of database statements involving encrypted data
US10693952B2 (en) 2017-10-23 2020-06-23 Salesforce.Com, Inc. Technologies for low latency messaging
US11252119B2 (en) * 2018-06-04 2022-02-15 Salesforce.Com, Inc. Message logging using two-stage message logging mechanisms
US11048816B2 (en) * 2019-04-02 2021-06-29 Sap Se Secure database utilizing dictionary encoding
US11429740B2 (en) * 2020-05-26 2022-08-30 Intuit Inc. Fast querying of encrypted data set
CN115085903A (zh) * 2022-06-16 2022-09-20 平安普惠企业管理有限公司 基于加密算法的数据加密解密方法、装置、设备和介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111005B1 (en) * 2000-10-06 2006-09-19 Oracle International Corporation Method and apparatus for automatic database encryption
US7484092B2 (en) * 2001-03-12 2009-01-27 Arcot Systems, Inc. Techniques for searching encrypted files
US7519835B2 (en) * 2004-05-20 2009-04-14 Safenet, Inc. Encrypted table indexes and searching encrypted tables
US20060100992A1 (en) * 2004-10-21 2006-05-11 International Business Machines Corporation Apparatus and method for data ordering for derived columns in a database system
KR20060037196A (ko) 2004-10-27 2006-05-03 삼성전자주식회사 아이피 멀티미디어 서브시스템에서 네트워크의 보안처리방법
KR20060058546A (ko) 2004-11-25 2006-05-30 펜타시큐리티시스템 주식회사 데이터베이스 암호화 및 접근 제어 방법 및 장치
US7639819B2 (en) 2005-06-16 2009-12-29 Oracle International Corporation Method and apparatus for using an external security device to secure data in a database
KR100737359B1 (ko) * 2006-10-04 2007-07-10 (주)이글로벌시스템 암호화된 컬럼의 인덱스 구축방법
US20080097954A1 (en) 2006-10-20 2008-04-24 Microsoft Corporation Ranged lookups
US8639948B2 (en) * 2006-12-28 2014-01-28 Teradata Us, Inc. Encrypted data management in database management systems
KR101702562B1 (ko) 2010-06-18 2017-02-03 삼성전자 주식회사 멀티미디어 스트림 파일의 저장 파일 포맷, 저장 방법 및 이를 이용한 클라이언트 장치
JP2012234439A (ja) * 2011-05-06 2012-11-29 Canon Inc 画像処理装置、そのデータ管理方法及びプログラム
US9270459B2 (en) * 2011-09-20 2016-02-23 Cloudbyte, Inc. Techniques for achieving tenant data confidentiality from cloud service provider administrators
KR101371608B1 (ko) 2011-10-10 2014-03-14 주식회사 알티베이스 Dbms 및 데이터베이스에서 암호화 방법
KR101368024B1 (ko) 2012-03-29 2014-02-27 주식회사 엘지씨엔에스 스크립트 관리 방법, 이를 실행하는 스크립트 관리 서버 및 이를 저장한 기록 매체
US9355271B2 (en) * 2013-10-18 2016-05-31 Robert Bosch Gmbh System and method for dynamic, non-interactive, and parallelizable searchable symmetric encryption

Also Published As

Publication number Publication date
CN106022155A (zh) 2016-10-12
US9779264B2 (en) 2017-10-03
US20160285623A1 (en) 2016-09-29
CN106022155B (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
KR101563461B1 (ko) 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램
KR101613146B1 (ko) 데이터베이스 암호화 방법
US20210099287A1 (en) Cryptographic key generation for logically sharded data stores
CA3066678C (en) Processing data queries in a logically sharded data store
KR100463842B1 (ko) 파일 보안 시스템의 키 관리 장치와 암호키 관리방법
US8386797B1 (en) System and method for transparent disk encryption
US8639947B2 (en) Structure preserving database encryption method and system
US7315859B2 (en) Method and apparatus for management of encrypted data through role separation
JP2004528615A (ja) 自動データベース暗号化の方法および装置
US8200964B2 (en) Method and apparatus for accessing an encrypted file system using non-local keys
KR101983120B1 (ko) 데이터베이스의 이중화를 위한 방법
CA3065767C (en) Cryptographic key generation for logically sharded data stores
US11853445B2 (en) Enhanced securing and secured processing of data at rest
CN103973698A (zh) 一种云存储环境中的用户访问权限回收方法
KR100594886B1 (ko) 데이터베이스 보안 시스템 및 방법
US9697372B2 (en) Methods and apparatuses for securing tethered data
KR20160114492A (ko) 데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램
US20150212951A1 (en) Low-latency, low-overhead hybrid encryption scheme
CN108600169B (zh) 一种基于加密技术的HBase细粒度访问控制方法
US11283600B2 (en) Symmetrically encrypt a master passphrase key
JP4338185B2 (ja) ファイルの暗号化・復号方法
Bakiras et al. Adjusting the trade-off between privacy guarantees and computational cost in secure hardware PIR
GB2434887A (en) Access control by encrypting stored data with a key based on a "fingerprint" of the device storing the data

Legal Events

Date Code Title Description
AMND Amendment
A107 Divisional application of patent
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181010

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190916

Year of fee payment: 5