[go: up one dir, main page]

KR20160114492A - Method, server and computer program for security management in database - Google Patents

Method, server and computer program for security management in database Download PDF

Info

Publication number
KR20160114492A
KR20160114492A KR1020150131320A KR20150131320A KR20160114492A KR 20160114492 A KR20160114492 A KR 20160114492A KR 1020150131320 A KR1020150131320 A KR 1020150131320A KR 20150131320 A KR20150131320 A KR 20150131320A KR 20160114492 A KR20160114492 A KR 20160114492A
Authority
KR
South Korea
Prior art keywords
data
encrypted
index
encryption
computer
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
KR1020150131320A
Other languages
Korean (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 KR1020150131320A priority Critical patent/KR20160114492A/en
Publication of KR20160114492A publication Critical patent/KR20160114492A/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

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

Abstract

본 발명의 일 양상에 따라서, 컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램이 개시된다. 상기 단계들은, 컬럼(column) 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체 또는 메모리로부터 읽어들이는 단계; 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계; 상기 생성된 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하는 단계; 및 상기 생성된 인덱스 테이블을 블록(block) 레벨로 암호화 하는 동작을 수행하는 단계를 포함할 수 있다.According to an aspect of the present invention, a database security management program is disclosed that is stored in a computer-readable medium to cause a computer to perform the following steps. The steps may include reading one or more data encrypted at the column level from a persistent storage medium or memory; Decoding one or more data encrypted at the column level to generate one or more decrypted data; Generating an index table based on the generated one or more decoded data; And encrypting the generated index table at a block level.

Description

데이터베이스 보안 관리를 위한 방법, 서버 및 컴퓨터-프로그램{METHOD, SERVER AND COMPUTER PROGRAM FOR SECURITY MANAGEMENT IN DATABASE}METHOD, SERVER AND COMPUTER PROGRAM FOR SECURITY MANAGEMENT IN DATABASE,

본 발명은 데이터베이스 보안 관리에 관한 것으로서, 보다 구체적으로 암호화된 데이터베이스에 대한 인덱스를 생성하기 위한 방법, 서버 및 컴퓨터 프로그램에 대한 것이다. The present invention relates to database security management, and more particularly, to a method, a server, and a computer program for generating an index for an encrypted database.

컴퓨터 및 인터넷 기술이 발전함에 따라, 많은 양의 데이터를 효율적으로 저장하고 원하는 검색 조건으로 쉽고 빠르게 찾기 위한 데이터베이스에 대한 중요성이 증가되고 있다. 현재의 데이터베이스 시스템은 수많은 정보를 저장 및 검색하는 것을 허용한다. 이러한 정보 중 일부의 정보는 예컨대, 신용카드 번호 등과 같은 민감한 정보를 포함할 수 있다.As computers and Internet technologies evolve, databases are becoming increasingly important for storing large amounts of data efficiently and quickly and easily searching for desired search conditions. Current database systems allow storing and retrieving a large amount of information. Some of this information may include sensitive information such as, for example, a credit card number.

특히, 금융권, 인터넷 포털 사이트 등에서 개인정보를 수집하고 관리하는 데이터베이스의 보안은, 컴퓨터에서 처리되는 정보를 권한이 없는 사용자가 판단하거나 부적절하게 기록하는 것을 방지하기 위하여, 정당한 권한을 갖는 사용자의 정보처리 서비스를 컴퓨터 시스템에서 거부되지 않도록 보호하기 위하여, 그리고 대용량의 자료를 보관하는 데이터베이스 관리 시스템에서 데이터의 무결성, 기밀성, 가용성을 보장하기 위하여 필수적으로 필요하다. In particular, the security of a database for collecting and managing personal information in financial institutions, Internet portal sites, and the like is designed to prevent the unauthorized user from judging or improperly recording the information processed by the computer, In order to protect the service from being denied in the computer system, and to ensure the integrity, confidentiality and availability of the data in the database management system that holds large amounts of data, it is essential.

최근에는 데이터베이스 서버 관리자 및 개발자에 의한 암호키 노출에 의한 정보 유출이 심각한 문제가 되고 있는 실정이다. 즉, 정보의 집적도가 날로 고도화되는 추세에 따라 기업 내에 존재하는 데이터베이스에 축적된 정보의 양도 이에 비례하여 증가하고 있으며, 이로 인하여, 가령 통신회사에서 관리하는 고객정보 데이터베이스에 담긴 고객정보(주민등록번호, 전화번호, 계좌번호 등)가 부정한 경로를 통하여 정보가 유출되는 경우, 그 피해의 파급효과는 막대해지고 있다.In recent years, information leakage due to exposure of a cryptographic key by a database server administrator and a developer has become a serious problem. In other words, the amount of information accumulated in the database existing in the corporation increases proportionally with the tendency that the degree of integration of information becomes higher day by day. As a result, for example, customer information (resident registration number, telephone number Number, account number, etc.) is leaked through the illegal route, the ripple effect of the damage is getting big.

이러한 데이터의 유출은 기업 외부의 해커에 의한 해킹(hacking), 데이터 저장 공간에 대한 물리적인 접근 등에 따른 경우도 있으나, 실질적으로 대부분의 정보 유출은 데이터베이스에 대하여 정당한 접근 권한을 보유한 내부자(예컨대, 데이터베이스 관리자(administrator)에 의하여 발생하고 있는 실정이며, 이러한 내부자에 의한 정보 유출은 외부로부터 발생한 해킹사건보다 심각하고 치명적인 피해를 초래할 수 있다.Although leakage of such data may be caused by hacking by external hackers and physical access to the data storage space, in reality, most information leakage is caused by an insider having a proper access right to the database This is caused by an administrator, and the leakage of information by such an insider may cause more serious and fatal damage than an external hacking event.

이러한 데이터베이스 보안을 관리하는 종래의 기술은 각각의 클라이언트로 할당된 보안 프로파일에서 규정된 접근 제어 방식을 사용하여 특정한 사용자에게 특정한 정보에 대한 접근을 제한하고 있다. 이러한 기술은 클라이언트가 인가되지 않은 정보를 액세스하는 것을 차단할 수 있다. 하지만, 이러한 종래의 기술들은 정당한 접근 권한을 보유한 내부자(예컨대, 데이터베이스 관리자), 또는 OS 권한(OS privilege)을 보유한 자의 부정한 행위를 차단할 수는 없다는 단점이 존재한다. Conventional techniques for managing such database security have restricted access to specific information to specific users by using a prescribed access control method in a security profile assigned to each client. This technique can prevent a client from accessing unauthorized information. However, these conventional techniques have a disadvantage in that it is impossible to block fraudulent actions of an insider having a legitimate access right (for example, a database administrator) or a person having an OS privilege.

이러한 문제점을 해결하기 위하여, 사용자 애플리케이션 내에서 기밀 정보를 암호화하는 방식이 제안되었으나, 이러한 방식의 경우 기밀 정보를 다루는 모든 사용자 애플리케이션이 암호화/복호화되어야 하기 때문에, 이러한 모든 사용자 애플리케이션에서의 암호화/복호화 코드를 제공해야한다는 불편함이 존재할 수 있다. To solve this problem, a method of encrypting confidential information in a user application has been proposed. However, in this method, since all user applications that deal with confidential information must be encrypted / decrypted, encryption / There may be an inconvenience that it is necessary to provide a service.

나아가, 또 다른 종래의 기술은 데이터베이스 테이블의 컬럼 데이터를 암호화(컬럼 레벨 암호화)하여 디스크에 저장하는 기법을 제시하고 있다. 이러한 종래 기술은 데이터가 디스크에 저장될 때에는 암호화되어 있지만 메모리에 데이터가 올라올 때에는 복호화되어서 사용자 입장에서는 암호화되지 않은 데이터를 볼 수 있도록 허용한다. 하지만, 이러한 종래 기술은 컬럼 단위로 암호화를 구현하기 때문에 컬럼 값을 기반으로 생성되는 인덱스를 빌드하는데 있어서 문제점이 발생할 수 있다. 즉, 인덱스는 컬럼 값을 기반으로 생성되기 때문에, 이러한 컬럼 값 자체가 암호화되어 버리게 되면 값 범위 기반으로 수행되는 인덱스 레인지 스캔(index range scan)이 불가능해 질 수 있다. 즉, 인덱스 레인지 스캔이 불가능해지는 경우 빠르고 효율적인 검색이라는 데이터베이스의 본질적 성능에 대한 절대적인 영향이 발생하게 된다. 이러한 기술의 경우 단순히 하나의 값을 찾기 위한 고유 검색(unique search)만이 가능해질 수 있으나, 이마저도 Salt를 사용하는 경우 불가능해질 수 있다.Furthermore, another conventional technique discloses a technique of encrypting column data of a database table (column level encryption) and storing the data on a disk. Such prior art allows data to be encrypted when it is stored on a disk, but decrypted when data is loaded into the memory, allowing the user to view unencrypted data. However, since the conventional technique implements encryption on a column-by-column basis, a problem may arise in building an index generated based on a column value. That is, since an index is generated based on a column value, if such a column value itself is encrypted, an index range scan performed based on a value range may become impossible. That is, when the index range scan becomes impossible, there is an absolute effect on the essential performance of the database, which is fast and efficient search. With this technique, only a unique search for a single value can be made, but this can also become impossible if Salt is used.

따라서, 데이터베이스 시스템 내에서의 기밀 정보를 효율적인 방식으로 보호하면서 그리고 사용자 애플리케이션을 변경하지 않고서도 내부자 등의 부정한 행위를 차단할 수 있는 데이터 보안 기법에 대한 수요가 당업계에 존재한다.Thus, there is a need in the art for a data security technique that can block unauthorized activity, such as insiders, while protecting confidential information in the database system in an efficient manner and without changing user applications.

대한민국 공개특허공보 제10-2006-0058546호Korean Patent Publication No. 10-2006-0058546 미국 등록특허공보 US 7,111,005호U.S. Patent No. 7,111,005

본 발명은 전술한 내용을 감안하여 안출된 것으로, 데이터베이스 시스템 내에서의 기밀 정보를 효율적인 방식으로 보호하면서 데이터베이스의 본질적인 기능들을 유지하기 위한 기법을 제공하기 위한 것이다.SUMMARY OF THE INVENTION The present invention has been made in view of the foregoing, and is intended to provide a technique for maintaining intrinsic functions of a database while protecting confidential information in an efficient manner in a database system.

또한, 본 발명은 인덱스 레인지 스캔을 허용할 수 있는 효율적인 데이터베이스 보안 관리 기법을 제공하기 위한 것이다.The present invention is also intended to provide an efficient database security management technique capable of allowing an index range scan.

전술한 바와 같은 과제를 실현하기 위한 본 발명의 일 실시예에 따른 컴퓨터 프로그램이 개시된다. 상기 컴퓨터 프로그램은, 컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램으로서, 상기 단계들은: 컬럼(column) 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체 또는 메모리로부터 읽어들이는 단계; 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계; 상기 생성된 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하는 단계; 및 상기 생성된 인덱스 테이블을 블록(block) 레벨로 암호화 하는 동작을 수행하는 단계를 포함할 수 있다. A computer program according to an embodiment of the present invention for realizing the above-mentioned problems is disclosed. The computer program is stored in a computer-readable medium to cause a computer to perform the following steps: the step of: storing one or more data encrypted at the column level in a persistent storage medium or memory ; Decoding one or more data encrypted at the column level to generate one or more decrypted data; Generating an index table based on the generated one or more decoded data; And encrypting the generated index table at a block level.

본 발명의 일 실시예에 따라서, 데이터베이스 보안 관리를 위한 데이터베이스 서버가 개시된다. 상기 데이터베이스 서버는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하고, 상기 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하고, 그리고 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작을 수행하는 적어도 하나의 프로세서; 및 상기 컬럼 레벨로 암호화된 데이터를 포함하는 데이터 테이블 및 상기 블록 레벨로 암호화된 인덱스 테이블을 저장하는 영구 저장 매체(persistent storage)를 포함할 수 있다.According to one embodiment of the present invention, a database server for database security management is disclosed. The database server decrypts one or more data encrypted at the column level to generate one or more decrypted data, generates an index table based on the one or more decrypted data, and encrypts the generated index table at a block level At least one processor for performing operations; A data table including data encrypted at the column level, and a persistent storage for storing the index table encrypted at the block level.

본 발명의 다른 실시예에 따라서, 컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램이 개시된다. 여기서, 상기 단계들은: 인덱스 조회 요청에 응답하여, 블록 레벨로 암호화된 인덱스 테이블을 영구 저장 매체로부터 읽어들이는 단계; 상기 블록 레벨로 암호화된 인덱스 테이블을 복호화하여 복호화된 인덱스 테이블을 생성하는 단계; 상기 복호화된 인덱스 테이블을 기초로 하여, 인덱스 스캔을 수행하는 단계; 상기 인덱스 스캔의 결과에 대응되는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 읽어들이는 단계; 및 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계를 포함할 수 있다.In accordance with another embodiment of the present invention, a database security management program is disclosed that is stored on a computer-readable medium to cause a computer to perform the following steps. Reading the index table encrypted at the block level from the persistent storage medium in response to the index inquiry request; Decrypting the index table encrypted at the block level to generate a decrypted index table; Performing an index scan on the basis of the decoded index table; Reading from the persistent storage medium one or more data encrypted at the column level corresponding to the result of the index scan; And decoding one or more data encrypted at the column level to generate one or more decrypted data.

본 발명의 다른 실시예에 따라서, 데이터베이스 보안 관리를 제공하는 데이터베이스 서버가 개시된다. 상기 데이터베이스 서버는, 인덱스 조회 요청에 응답하여, 블록 레벨로 암호화된 인덱스 테이블을 영구 저장 매체로부터 읽어들이고, 상기 블록 레벨로 암호화된 인덱스 테이블을 복호화하여 복호화된 인덱스 테이블을 생성하고, 상기 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔을 수행하고, 상기 인덱스 스캔의 결과에 대응되는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 읽어들이고, 그리고 상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 적어도 하나의 프로세서; 및 상기 컬럼 레벨로 암호화된 데이터를 포함하는 데이터 테이블 및 상기 블록 레벨로 암호화된 인덱스 테이블을 저장하는 영구 저장 매체(persistent storage)를 포함할 수 있다.According to another embodiment of the present invention, a database server that provides database security management is disclosed. The database server reads the index table encrypted at the block level from the persistent storage medium in response to the index inquiry request, decrypts the index table encrypted at the block level to generate the decrypted index table, Reading one or more data encrypted at the column level corresponding to the result of the index scan from the persistent storage medium and decrypting the one or more data encrypted at the column level to obtain one At least one processor for generating the decoded data; A data table including data encrypted at the column level, and a persistent storage for storing the index table encrypted at the block level.

본 발명의 일 실시예에 따라서, 데이터베이스 시스템 내에서의 기밀 정보를 효율적인 방식으로 보호하면서 그리고 사용자 애플리케이션을 변경하지 않고도 내부자의 부정한 행위를 차단하기 위한 데이터 암호화 기법이 제공될 수 있다.According to one embodiment of the present invention, a data encryption technique may be provided to protect the confidential information in the database system in an efficient manner and to prevent tampering of the insider without changing the user application.

또한, 본 발명의 일 실시예에 따라서, 인덱스 레인지 스캔을 허용할 수 있는 효율적인 데이터베이스 보안 관리 기법이 제공될 수 있다.Also, according to an embodiment of the present invention, an efficient database security management technique capable of allowing an index range scan can be provided.

다양한 양상들이 이제 도면들을 참조로 기재되며, 여기서 유사한 참조 번호들은 총괄적으로 유사한 구성요소들을 지칭하는데 이용된다. 이하의 실시예에서, 설명 목적을 위해, 다수의 특정 세부사항들이 하나 이상의 양상들의 총체적 이해를 제공하기 위해 제시된다. 그러나, 그러한 양상(들)이 이러한 특정 세부사항들 없이 실시될 수 있음은 명백할 것이다. 다른 예시들에서, 공지의 구조들 및 장치들이 하나 이상의 양상들의 기재를 용이하게 하기 위해 블록도 형태로 도시된다.
도 1은 본 발명의 일 실시예에 따른 데이터베이스 시스템을 예시적으로 도시한다.
도 2는 본 발명의 일 실시예에 따른 데이터베이스 서버의 컴포넌트들을 예시적으로 도시한다.
도 3은 본 발명의 일 실시예에 따른 데이터 저장 및 인덱스 빌드 프로세스에 대한 예시적인 흐름도를 도시한다.
도 4는 본 발명의 일 실시예에 따른 인덱스 스캔 및 조회 프로세스에 대한 예시적인 흐름도를 도시한다.
도 5는 본 발명의 일 실시예에 따른 데이터 조회 프로세스에 대한 예시적인 흐름도를 도시한다.
도 6은 본 발명의 일 실시예에 따라 데이터 및 인덱스가 영구저장매체에서 암호화되어 저장되는 암호화 방식을 예시적으로 도시한다.
도 7은 본 발명의 일 실시예에 따른 데이터 저장 및 인덱스 빌드(또는 업데이트)에 대한 예시적인 순서도를 도시한다.
도 8은 본 발명의 일 실시예에 따른 인덱스 조회에 대한 예시적인 순서도를 도시한다.
Various aspects are now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following examples, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more aspects. However, it will be apparent that such aspect (s) may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing one or more aspects.
1 illustrates an exemplary database system in accordance with an embodiment of the present invention.
Figure 2 illustrates by way of example components of a database server according to an embodiment of the present invention.
Figure 3 illustrates an exemplary flow diagram of a data store and index build process in accordance with one embodiment of the present invention.
4 illustrates an exemplary flow chart for an index scan and lookup process in accordance with an embodiment of the present invention.
Figure 5 illustrates an exemplary flow diagram for a data query process in accordance with one embodiment of the present invention.
FIG. 6 illustrates an exemplary encryption scheme in which data and indexes are encrypted and stored in a persistent storage medium according to an embodiment of the present invention.
Figure 7 illustrates an exemplary flowchart for data storage and index build (or update) in accordance with one embodiment of the present invention.
Figure 8 illustrates an exemplary flowchart for an index lookup according to one embodiment of the present invention.

다양한 실시예들 및/또는 양상들이 이제 도면들을 참조하여 개시된다. 하기 설명에서는 설명을 목적으로, 하나 이상의 양상들의 전반적 이해를 돕기 위해 다수의 구체적인 세부사항들이 개시된다. 그러나, 이러한 양상(들)은 이러한 구체적인 세부사항들 없이도 실행될 수 있다는 점 또한 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 인식될 수 있을 것이다. 이후의 기재 및 첨부된 도면들은 하나 이상의 양상들의 특정한 예시적인 양상들을 상세하게 기술한다. 하지만, 이러한 양상들은 예시적인 것이고 다양한 양상들의 원리들에서의 다양한 방법들 중 일부가 이용될 수 있으며, 기술되는 설명들은 그러한 양상들 및 그들의 균등물들을 모두 포함하고자 하는 의도이다.Various embodiments and / or aspects are now described with reference to the drawings. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more aspects. However, it will also be appreciated by those of ordinary skill in the art that such aspect (s) may be practiced without these specific details. The following description and the annexed drawings set forth in detail certain illustrative aspects of one or more aspects. It is to be understood, however, that such aspects are illustrative and that some of the various ways of practicing various aspects of the principles of various aspects may be utilized, and that the description set forth is intended to include all such aspects and their equivalents.

또한, 다양한 양상들 및 특징들이 다수의 디바이스들, 컴포넌트들 및/또는 모듈들 등을 포함할 수 있는 시스템에 의하여 제시될 것이다. 다양한 시스템들이, 추가적인 장치들, 컴포넌트들 및/또는 모듈들 등을 포함할 수 있다는 점 그리고/또는 도면들과 관련하여 논의된 장치들, 컴포넌트들, 모듈들 등 전부를 포함하지 않을 수도 있다는 점 또한 이해되고 인식되어야 한다. In addition, various aspects and features will be presented by a system that may include multiple devices, components and / or modules, and so forth. It should be understood that the various systems may include additional devices, components and / or modules, etc., and / or may not include all of the devices, components, modules, etc. discussed in connection with the drawings Must be understood and understood.

본 명세서에서 사용되는 "실시예", "예", "양상", "예시" 등은 기술되는 임의의 양상 또는 설계가 다른 양상 또는 설계들보다 양호하다거나, 이점이 있는 것으로 해석되지 않을 수도 있다. 아래에서 사용되는 용어들 '컴포넌트', '모듈', '시스템', '인터페이스' 등은 일반적으로 컴퓨터 관련 엔티티(computer-related entity)를 의미하며, 예를 들어, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어를 의미할 수 있다.As used herein, the terms "an embodiment," "an embodiment," " an embodiment, "" an embodiment ", etc. are intended to indicate that any aspect or design described is better or worse than other aspects or designs. . As used herein, the terms 'component,' 'module,' 'system,' 'interface,' and the like generally refer to a computer-related entity and include, for example, hardware, It can mean software.

더불어, 용어 "또는"은 배타적 "또는"이 아니라 내포적 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되지 않거나 문맥상 명확하지 않은 경우에, "X는 A 또는 B를 이용한다"는 자연적인 내포적 치환 중 하나를 의미하는 것으로 의도된다. 즉, X가 A를 이용하거나; X가 B를 이용하거나; 또는 X가 A 및 B 모두를 이용하는 경우, "X는 A 또는 B를 이용한다"가 이들 경우들 어느 것으로도 적용될 수 있다. 또한, 본 명세서에 사용된 "및/또는"이라는 용어는 열거된 관련 아이템들 중 하나 이상의 아이템의 가능한 모든 조합을 지칭하고 포함하는 것으로 이해되어야 한다. In addition, the term "or" is intended to mean " exclusive or " That is, it is intended to mean one of the natural inclusive substitutions "X uses A or B ", unless otherwise specified or unclear in context. That is, X uses A; X uses B; Or when X uses both A and B, "X uses A or B" can be applied to either of these cases. It should also be understood that the term "and / or" as used herein refers to and includes all possible combinations of one or more of the listed related items.

또한, "포함한다" 및/또는 "포함하는"이라는 용어는, 해당 특징 및/또는 구성요소가 존재함을 의미하지만, 하나 이상의 다른 특징, 구성요소 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는 것으로 이해되어야 한다. 또한, 달리 특정되지 않거나 단수 형태를 지시하는 것으로 문맥상 명확하지 않은 경우에, 본 명세서와 청구범위에서 단수는 일반적으로 "하나 또는 그 이상"을 의미하는 것으로 해석되어야 한다.It is also to be understood that the term " comprises "and / or" comprising " means that the feature and / or component is present, but does not exclude the presence or addition of one or more other features, components and / It should be understood that it does not. Also, unless the context clearly dictates otherwise or to the contrary, the singular forms in this specification and claims should generally be construed to mean "one or more. &Quot;

본 명세서에서의 컴퓨터 판독가능 매체는 컴퓨터 시스템에 의해서 판독될 수 있도록 프로그램 및 데이터가 저장되는 모든 종류의 저장 매체를 포함할 수 있다. 본 발명의 일 양상에 따르면, 이러한 매체는 ROM(판독 전용 메모리), RAM(랜덤 액세스 메모리), CD(컴팩트 디스크)-ROM, DVD(디지털 비디오 디스크)-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등을 포함할 수 있으며, 또한 캐리어 웨이브(예컨대, 인터넷을 통한 전송)의 형태로 구현되는 것 또한 포함할 수 있다. 추가적으로, 이러한 매체는 네트워크로 연결된 시스템에 분산되어, 분산 방식으로 컴퓨터가 판독가능한 코드들 및/또는 명령들을 저장할 수도 있다.The computer readable media herein may include any type of storage medium in which programs and data are stored so that they can be read by a computer system. According to one aspect of the present invention, such medium may be a ROM (Read Only Memory), a RAM (Random Access Memory), a CD (Compact Disk) -ROM, a DVD Storage devices, and the like, and may also be implemented in the form of a carrier wave (e.g., transmission over the Internet). Additionally, such media may be distributed over networked systems and may store computer readable codes and / or instructions in a distributed manner.

본 발명의 실시를 위한 구체적인 내용을 설명하기에 앞서, 본 발명의 기술적 요지와 직접적 관련이 없는 구성에 대해서는 본 발명의 기술적 요지를 흩뜨리지 않는 범위 내에서 생략하였음에 유의하여야 할 것이다. 또한, 본 명세서 및 청구범위에 사용된 용어 또는 단어는 발명자가 자신의 발명을 최선의 방법으로 설명하기 위해 적절한 용어의 개념을 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야 할 것이다.
Before describing the embodiments of the present invention in detail, it is to be understood that the present invention is not limited to the above-described embodiments, but may be modified and changed without departing from the scope and spirit of the invention. It is also to be understood that the terminology or words used in the present specification and claims should be interpreted with reference to the meaning of the inventive concept of the present invention based on the principle that the inventor can define the concept of appropriate terms to describe his invention in the best way It should be interpreted as a concept.

도 1은 본 발명의 일 실시예에 따른 데이터베이스 시스템(100)을 예시적으로 도시한다.1 illustrates an exemplary database system 100 in accordance with one embodiment of the present invention.

도 1에서 도시되는 바와 같이, 데이터베이스 서버(120)는, 예를 들어, 마이크로프로세서, 메인프레임 컴퓨터, 디지털 싱글 프로세서, 휴대용 디바이스 및 디바이스 제어기 등과 같은 임의의 타입의 컴퓨터 시스템 또는 컴퓨터 디바이스를 포함할 수 있다. 1, database server 120 may include any type of computer system or computer device, such as, for example, a microprocessor, mainframe computer, digital single processor, portable device, and device controller, have.

클라이언트(110)는 네트워크를 통하여 통신하기 위한 매커니즘을 갖는 데이터베이스 시스템에서의 노드들을 의미할 수 있다. 예를 들어, 클라이언트(110)는 PC, 랩탑 컴퓨터, 워크스테이션, 단말 및/또는 네트워크 접속성을 갖는 임의의 전자 디바이스를 포함할 수 있다. 또한, 클라이언트(110)는 에이전트(Agent), API(Application Programming Interface) 및 플러그-인(Plug-in) 중 적어도 하나에 의해 구현되는 임의의 서버를 포함할 수도 있다.Client 110 may refer to nodes in a database system having a mechanism for communicating over a network. For example, the client 110 may include a PC, a laptop computer, a workstation, a terminal, and / or any electronic device having network connectivity. In addition, the client 110 may include any server implemented by at least one of an agent, an application programming interface (API), and a plug-in.

데이터베이스 서버(120)는 DBMS(Database Management System)(130) 및 영구 저장 매체(persistent storage)(140)를 포함할 수 있다. The database server 120 may include a database management system (DBMS) 130 and a persistent storage 140.

도 1에서는 도시되지 않았지만, 데이터베이스 서버(120)는 버퍼 캐시를 포함하는 하나 이상의 메모리를 포함할 수 있다. 또한, 도 1에서는 도시되지 않았지만, 데이터베이스 서버(120)는 하나 이상의 프로세서를 포함할 수 있다. 따라서, DBMS(130)는 상기 메모리 상에서 상기 프로세서에 의하여 동작될 수 있다. Although not shown in FIG. 1, the database server 120 may include one or more memories containing a buffer cache. Also, although not shown in FIG. 1, the database server 120 may include one or more processors. Thus, the DBMS 130 may be operated by the processor on the memory.

여기서, 메모리는 동적 램(DRAM, dynamic random access memory), 정적 램(SRAM, static random access memory) 등의 랜덤 액세스 메모리(RAM)와 같은, 프로세서가 직접 접근하는 주된 저장 장치로서 전원이 꺼지면 저장된 정보가 순간적으로 지워지는 휘발성(volatile) 저장 장치를 의미할 수 있지만, 이들로 한정되는 것은 아니다. 이러한 메모리는 프로세서에 의하여 동작 될 수 있다. 메모리는 데이터 값을 포함하는 데이터 테이블(data table)을 임시로 저장할 수 있다. 상기 데이터 테이블은 데이터 값을 포함할 수 있으며, 본 발명의 일 실시예에서 상기 데이터 테이블의 데이터 값은 컬럼 단위로 암호화 되어서 영구 저장 매체에 저장될 수 있다. 추가적인 양상에서, 메모리는 버퍼 캐시를 포함하며, 상기 버퍼 캐시의 데이터 블록에는 데이터가 저장될 수 있다 . 상기 데이터는 백그라운드 프로세스에 의하여 영구 저장 장치(140)에 기록될 수 있다.Here, the memory is a main storage device directly accessed by the processor, such as a random access memory (RAM) such as a dynamic random access memory (DRAM), a static random access memory (SRAM) Volatile storage devices that are erased instantaneously, but are not limited to these. Such memory may be operated by the processor. The memory may temporarily store a data table containing data values. The data table may include a data value. In an embodiment of the present invention, the data value of the data table may be encrypted in columns and stored in a permanent storage medium. In a further aspect, the memory includes a buffer cache, wherein data may be stored in a data block of the buffer cache. The data may be written to the persistent storage device 140 by a background process.

영구 저장 매체(persistent storage)(140)는, 예를 들어 자기(magnetic) 디스크, 광학(optical) 디스크 및 광자기(magneto-optical) 저장 디바이스뿐만 아니라 플래시 메모리 및/또는 배터리-백업 메모리에 기초한 저장 디바이스와 같은, 임의의 데이터를 지속적으로 할 수 있는 비-휘발성(non-volatile) 저장 매체를 의미한다. 이러한 영구 저장 매체(140)는 다양한 통신 수단을 통하여 데이터베이스 서버(120)의 프로세서 및 메모리와 통신할 수 있다. 추가적인 실시예에서, 이러한 영구 저장 매체(140)는 데이터베이스 서버(120) 외부에 위치하여 데이터베이스 서버(120)와 통신가능할 수도 있다.Persistent storage 140 may include, for example, a magnetic disk, an optical disk and a magneto-optical storage device as well as a storage based on flash memory and / Means a non-volatile storage medium, such as a device, that can continuously store any data. The persistent storage medium 140 may communicate with the processor and memory of the database server 120 through various communication means. In a further embodiment, the persistent storage medium 140 may be external to the database server 120 and be capable of communicating with the database server 120. [

DBMS(130)는 데이터베이스 서버(120)에서 필요한 데이터를 검색, 삽입, 수정 및/또는 삭제 등과 같은 동작들을 수행하는 것을 허용하기 위한 프로그램으로서, 전술한 바와 같이, 데이터베이스 서버(120)의 메모리에서 프로세서에 의하여 구현될 수 있다. The DBMS 130 is a program for allowing the database server 120 to perform operations such as retrieving, inserting, modifying, and / or deleting necessary data. As described above, in the memory of the database server 120, Lt; / RTI >

클라이언트(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) 등과 같은 다양한 유선 통신 시스템들을 사용할 수 있다.And can communicate with each other through the client 110 and the database server 120 network. The network according to an exemplary embodiment of the present invention may be a Public Switched Telephone Network (PSTN), a Digital Subscriber Line (xDSL), a Rate Adaptive DSL (RADSL), a Multi Rate DSL (MDSL) ), Universal Asymmetric DSL (UADSL), High Bit Rate DSL (HDSL), and Local Area Network (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) 및 다른 시스템들과 같은 다양한 무선 통신 시스템들을 사용할 수 있다. 본 명세서에서 설명된 기술들은 위에서 언급된 네트워크들뿐만 아니라, 다른 네트워크들에서도 사용될 수 있다.
In addition, the network presented in this specification can be applied to various wireless communication systems such as Code Division Multi Access (CDMA), Time Division Multi Access (TDMA), Frequency Division Multiple Access (FDMA), Orthogonal Frequency Division Multiple Access (OFDMA), Single Carrier- ), And other systems. The techniques described herein may be used in other networks as well as in the networks mentioned above.

도 2는 본 발명의 일 실시예에 따른 데이터베이스 서버(120)의 컴포넌트들을 예시적으로 도시한다.FIG. 2 illustrates exemplary components of a database server 120 according to an embodiment of the present invention.

도 2에서 도시되는 바와 같이, 데이터베이스 서버(120)는 영구 저장 매체(persistent storage)(140) 및 DBMS(130)를 포함할 수 있다. 전술한 바와 같이, DBMS(130)는 데이터베이스 서버(120) 내의 하나 이상의 메모리 및 하나 이상의 프로세서에 의하여 동작될 수 있다.2, the database server 120 may include a persistent storage 140 and a DBMS 130. As shown in FIG. As described above, the DBMS 130 may be operated by one or more memory and one or more processors in the database server 120.

DBMS(130)는 송수신 모듈(210), 인덱스 관리 모듈(220), 데이터 관리 모듈(230), 암호화 모듈(240) 및 복호화 모듈(250)을 포함할 수 있다. 도 2에서 도시되는 DBMS(130) 내의 각각의 모듈들은 서로 통신가능하다. 이러한 DBMS(130)의 모듈들은 예시적인 것으로서, 구현에 따라 추가적인 모듈들이 포함될 수 있거나 상기 모듈들 중 일부가 생략될 수도 있다.The DBMS 130 may include a transmission / reception module 210, an index management module 220, a data management module 230, an encryption module 240, and a decryption module 250. Each of the modules in the DBMS 130 shown in FIG. 2 can communicate with each other. The modules of such DBMS 130 are exemplary and, depending on the implementation, additional modules may be included or some of the modules may be omitted.

송수신 모듈(210)은 사용자로부터의 데이터 저장, 조회 및 인덱스 빌드, 조회 요청 등을 수신할 수 있다. 또한, 송수신 모듈(210)은 데이터 저장, 조회 및 인덱스 빌드, 조회 요청에 대한 결과 정보를 전달할 수도 있다.The transmission / reception module 210 can receive data from a user, inquire and index build, inquiry request, and the like. Also, the transmission / reception module 210 may transmit the result information on the data storage, the inquiry, the index build, and the inquiry request.

인덱스 관리 모듈(220)은 인덱스 빌드, 업데이트, 저장 및 조회와 관련된 요청을 처리 및 관리할 수 있다. 인덱스 관리 모듈(220)은 빌드 모듈(260) 및 스캔 모듈(270)을 포함할 수 있다. 빌드 모듈(260)은 인덱스의 빌드 및/또는 빌드된 인덱스의 업데이트와 관련된 동작들을 수행할 수 있다. 스캔 모듈(270)은 복호화된 인덱스 테이블에 대한 인덱스 스캔을 수행할 수 있다. The index management module 220 may process and manage requests related to index build, update, store, and lookup. The index management module 220 may include a build module 260 and a scan module 270. The build module 260 may perform operations related to building the index and / or updating the built index. The scan module 270 may perform an index scan on the decoded index table.

데이터 관리 모듈(230)은 데이터의 저장 및 조회와 관련된 요청을 처리 및 관리할 수 있다. 이러한 데이터 관리 모듈(230)은 저장 모듈(280) 및 조회 모듈(290)을 포함할 수 있다. 저장 모듈(280)은 데이터의 저장(업데이트 포함)과 관련된 요청을 처리 및 관리할 수 있다. The data management module 230 may process and manage requests related to storage and retrieval of data. The data management module 230 may include a storage module 280 and a query module 290. The storage module 280 may process and manage requests associated with storage (including updates) of data.

이러한 저장 모듈(280)은 데이터가 저장될 컬럼이 암호화 지정된 컬럼인지 여부 그리고 데이터가 저장될 컬럼이 인덱스 설정된 컬럼인지 여부 등을 판단할 수 있다. 나아가, 저장 모듈(280)은 데이터 및 인덱스 테이블 등을 저장할 것을 결정할 수 있다. 또한, 저장 모듈(280)은 암호화된 데이터 및/또는 암호화된 인덱스 테이블에 대한 저장 위치를 결정할 수 있다. 예를 들어, 저장 모듈(280)은 암호화된 데이터에 대하여 데이터 테이블 상에서의 저장 위치를 결정할 수 있다. 다른 예시로, 저장 모듈(280)은 암호화된 데이터에 대하여 영구 저장 매체(140) 상의 저장 위치를 결정할 수 있다. The storage module 280 may determine whether the column in which the data is to be stored is an encrypted designated column, whether the column in which the data is to be stored is an indexed column, and the like. Further, the storage module 280 may decide to store data, index tables, and the like. The storage module 280 may also determine a storage location for the encrypted data and / or the encrypted index table. For example, the storage module 280 may determine the storage location on the data table for the encrypted data. In another example, the storage module 280 may determine the storage location on the persistent storage medium 140 for the encrypted data.

조회 모듈(290)은 데이터의 조회(판독)과 관련된 요청을 처리 및 관리할 수 있다. 조회 모듈(290)은 스캔 모듈(270)과 통신하여 인덱스 스캔에 따라 획득된 컬럼 키(column key) 및 로우 아이디(rowid)에 기초하여 해당 데이터(들)의 값을 조회할 수 있다.The query module 290 can process and manage requests related to the retrieval (reading) of data. The inquiry module 290 can inquire the value of the corresponding data (s) based on the column key and the row ID acquired according to the index scan in communication with the scan module 270. [

암호화 모듈(240)은 데이터를 영구저장매체(140)에 기록(저장)하기 전에 데이터에 대한 암호화(encryption)를 수행할 수 있다. 암호화 모듈(240)은 평문 데이터(plain text)를 기초로 하여 암호화된 데이터(cipher text)를 생성할 수 있다. 본 명세서에서의 데이터에 대한 암호화 방식은, 컬럼 레벨 암호화 및 블록 레벨 암호화(예컨대, 테이블스페이스(tablespace)) 레벨 암호화를 포함할 수 있다. 컬럼 레벨 암호화는 암호화되도록 지정된 컬럼의 데이터가 암호화된다는 것을 의미한다. 블록 레벨의 암호화는, 블록 단위로 데이터에 대한 암호화가 구현된다는 것으로서, 예를 들어 OS 시스템 상에서 생성되는 물리적 데이터 파일들이 블록 단위로 암호화된다는 것을 의미한다. 본 발명의 일 양상에서, 저장될 데이터에 대해서는 컬럼 레벨 암호화가 수행되고, 저장될 인덱스에 대해서는 블록 레벨 암호화가 수행될 수 있다. 본 발명의 추가적인 양상에서, 블록 레벨 암호화는 블록 단위 또는 그 이상(파일, 세그먼트 및 테이블 스페이스 등)의 단위로 암호화가 구현되는 것을 의미할 수도 있다.The encryption module 240 may perform encryption on the data before writing (storing) the data to the persistent storage medium 140. [ The encryption module 240 may generate cipher text based on plaintext data. Encryption schemes for data herein may include column-level encryption and block-level encryption (e.g., tablespace) level encryption. Column-level encryption means that the data in the column specified to be encrypted is encrypted. Block level encryption means that data is encrypted on a block-by-block basis. For example, physical data files generated on an OS system are encrypted on a block-by-block basis. In one aspect of the present invention, column-level encryption is performed on the data to be stored, and block-level encryption can be performed on the index to be stored. In a further aspect of the invention, block level encryption may mean that encryption is implemented in units of blocks or more (such as files, segments, and tablespaces).

본 발명의 추가적인 양상에서, 암호화 모듈(240)은 암호화된 데이터에 암호비교코드(예컨대, 해시 함수)를 맵핑시켜 영구저장매체(140)에 저장할 수 있다. 따라서, 영구저장매체(140)에는 암호비교코드 및 암호화된 데이터가 기록되어, 암호비교코드를 통하여 복호화 모듈(250)이 복호화한 데이터에 대한 무결성이 검증될 수 있다.In a further aspect of the present invention, the encryption module 240 may map a cryptographic comparison code (e.g., a hash function) to the encrypted data and store it in the persistent storage medium 140. Therefore, the encryption comparison code and the encrypted data are recorded in the permanent storage medium 140, and the integrity of the data decrypted by the decryption module 250 through the encryption comparison code can be verified.

본 발명의 일 양상에서, 데이터(예컨대, 암호화된 데이터)를 영구저장매체(140)에 기록하는 동작은 DBMS(130)의 백그라운드 프로세스(예컨대, Database buffer writer process, Data block writer process, Checkpoint process, 및/또는 Log writer process 등)에 의해 구현될 수 있다. 이러한 경우, 암호화 모듈(240)이 암호화된 데이터를 메모리(예컨대, 버퍼캐시)에 저장해 놓으면(foreground process), 사전결정된 시점에 백그라운드 프로세스가 암호화된 데이터를 영구저장매체(140)에 기록할 수 있다. 또한, 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작은, 백그라운드 프로세스가 메모리 내의 블록을 상기 영구 저장 매체로 기록하고자 할 때 수행될 수도 있다.In an aspect of the present invention, the operation of writing data (e.g., encrypted data) to the persistent storage medium 140 may include a background process (e.g., a database buffer writer process, a data block writer process, a checkpoint process, And / or a Log writer process). In such a case, if the encryption module 240 stores the encrypted data in a memory (e.g., a buffer cache) (foreground process), the background process may write the encrypted data to the persistent storage medium 140 at a predetermined time . Also, the operation of encrypting the generated index table at the block level may be performed when the background process tries to write the block in the memory to the permanent storage medium.

본 발명의 일 양상에서, 암호화 모듈(240)은 DBMS(120)의 프론트엔드(frontend) 계층 및 백엔드(backend) 계층 전반에 걸쳐서 위치할 수 있다. 또한, 본 발명의 추가적인 양상에서, 복호화 모듈(250)은 DBMS(120)의 백엔드 계층에 위치할 수 있다.In one aspect of the present invention, the encryption module 240 may be located across the frontend and backend layers of the DBMS 120. Further, in a further aspect of the present invention, the decryption module 250 may be located in the back-end layer of the DBMS 120.

복호화(decryption) 모듈(250)은 암호화된 데이터를 복호화하여 평문 데이터에 대응되는 복호화된 데이터(decipher text)를 생성할 수 있다. 추가적으로, 복호화 모듈(250)은 복호화된 데이터가 평문 데이터와 동일한지 여부를 판단할 수도 있다(즉, 무결성 검증).The decryption module 250 may decrypt the encrypted data to generate deciphered text corresponding to plain text data. Additionally, the decryption module 250 may determine whether the decrypted data is the same as the plaintext data (i.e., integrity verification).

복호화 모듈(250)은 영구저장매체(140)에 암호화되어 기록된 데이터가 메모리로 로딩되는 경우, 로딩된 데이터에 대한 복호화를 수행할 수 있다. 복호화 모듈(250)은 암호화 모듈(240)의 암호화 방식에 대응하여, 해당 데이터를 복호화할 수 있다. 또한, 복호화 모듈(250)은 암호화되어 기록된 데이터에 메모리에 상주되어 있는 경우, 해당 데이터에 대한 복호화 또한 수행할 수 있다. The decryption module 250 may decrypt the loaded data when the encrypted data recorded in the permanent storage medium 140 is loaded into the memory. The decryption module 250 can decrypt the corresponding data in accordance with the encryption method of the encryption module 240. [ In addition, if the decrypted module 250 is stored in the memory with the encrypted data, the decryption module 250 can also decrypt the data.

본 명세서에서의 컬럼 레벨 암호화는 컬럼 단위로 제 1 암호화 키가 생성되며, 상기 블록 레벨 암호화는 블록 단위로 제 2 암호화 키가 생성되며, 그리고 상기 제 1 암호화 키 및 상기 제 2 암호화 키 상이한 값을 가질 수 있다. 또한, 상기 제 1 암호화 키 및 상기 제 2 암호화 키는 상기 영구 저장 매체 또는 메모리(예컨대, 데이터 딕셔너리 캐시)의 데이터 딕셔너리(DD:Data Dictionary)에 저장될 수 있다. 추가적으로, 제 1 암호화 키 및 상기 제 2 암호화 키는 마스터 키(master key)를 통하여 암호화되어 상기 데이터 딕셔너리에 저장되며, 그리고 마스터 키는 외부 저장 매체 또는 상기 영구 저장 매체에 저장될 수 있다. In the column-level encryption in this specification, a first encryption key is generated on a column-by-column basis, the block-level encryption generates a second encryption key on a block basis, and the first encryption key and the second encryption key have different values Lt; / RTI > Also, the first encryption key and the second encryption key may be stored in a data dictionary (DD) of the permanent storage medium or memory (e.g., a data dictionary cache). In addition, the first encryption key and the second encryption key may be encrypted through a master key and stored in the data dictionary, and the master key may be stored on an external storage medium or on the persistent storage medium.

본 발명의 일 양상에 따른 복호화 방식은, 암호화 방식에서 암호문을 생성할 때 사용되는 암호화 키와 동일한 대칭키를 사용할 수 있다. 이러한 암호화/복호화 방식으로는 예를 들어, DES(Data Encryption Standard), AES(Advanced Encryption Standard), ARIA, Twofish 및 SEED 등을 포함할 수 있지만 이들로 한정되는 것은 아니다. 추가적으로, 본 발명의 일 양상에 따른 암호화 및 복호화 방식은, 공개키(public key) 및 비밀키(private key)를 갖는 공개키 암호화 방식을 사용할 수도 있다. 이러한 암호화/복호화 방식으로는 예를 들어, RSA, ElGamal, 타원곡선암호 및 배낭암호 방식을 포함할 수 있지만, 이들로 한정되는 것은 아니다.A decoding method according to an aspect of the present invention may use a symmetric key that is the same as an encryption key used in generating a cipher text in the cipher system. Examples of such encryption / decryption methods include, but are not limited to, DES (Data Encryption Standard), AES (Advanced Encryption Standard), ARIA, Twofish and SEED. In addition, the encryption and decryption method according to an aspect of the present invention may use a public key encryption method having a public key and a private key. Such encryption / decryption methods may include, but are not limited to, for example, RSA, ElGamal, elliptic curve encryption, and backpack encryption.

본 발명의 추가적인 양상에서, 블록 단위로 암호화된 인덱스 테이블에 대한 복호화는, 영구저장매체(140)로부터 로딩되는 경우 수행될 수 있다. 또한, 컬럼 레벨로 암호화된 데이터에 대한 복호화는 해당 데이터를 액세스하고자 하는 경우에 수행될 수 있다. 본 발명의 추가적인 양상에서, 블록 레벨 암호화/복호화에 대한 암호화 키 및 컬럼 레벨 암호화/복호화에 대한 암호화 키는 서로 상이할 수 있다. In a further aspect of the present invention, decoding on a block-by-block index table may be performed when loaded from persistent storage medium 140. [ Also, decryption of data encrypted at the column level can be performed when accessing the corresponding data. In a further aspect of the present invention, the encryption key for block level encryption / decryption and the encryption key for column level encryption / decryption may be different from each other.

본 발명의 추가적인 양상에서, 암호화 모듈(240)은 데이터 값(plain text 값)에 기초하여 암호화된 데이터 값을 생성할 수 있다. 암호화 모듈(240)은 암호화 키에 포함된 암호화 정보에 기초하여, 암호화 함수를 결정하고, 상기 데이터 값에 기초하여 연산하는 암호화 함수를 이용하여 암호화된 데이터 값을 생성할 수 있다. In a further aspect of the invention, the encryption module 240 may generate an encrypted data value based on a data value (plain text value). The encryption module 240 can determine the encryption function based on the encryption information included in the encryption key, and generate the encrypted data value using the encryption function that operates based on the data value.

상기 암호화 키는 적어도 암호화 모드에 관련한 정보, 암호화 데이터 타입 및 데이터의 길이 정보 등을 포함할 수 있다. 상기 암호화 모드는 예를 들어, 전술한 바와 같은 DES(Data Encryption Standard), AES(Advanced Encryption Standard), ARIA, Twofish 및 SEED 등을 포함할 수 있다. The encryption key may include at least information related to the encryption mode, an encryption data type, and length information of the data. The encryption mode may include, for example, DES (Data Encryption Standard), AES (Advanced Encryption Standard), ARIA, Twofish and SEED as described above.

암호화 키는 암호화 및 복호화에 사용될 수 있다. 암호화 함수는 평문(plain text)을 암호문(cipher text)으로 변경할 수 있는 암호화 알고리즘을 포함할 수 있다. 상기 암호화 함수는 암호화 및 복호화를 수행할 때, 상기 암호화 키를 참조할 수 있다. 상기 암호화 키는 상기 데이터베이스 서버(120)의 내부에 저장되거나, 또는 상기 데이터베이스 서버(120)의 외부에 저장될 수 있다. 또한, 추가적인 보안을 위하여 상기 암호화키는 마스터 키(master key)를 통하여 암호화되어 저장될 수 있다. 이러한 마스터 키는 하나의 시스템에 대하여 글로벌한 하나의 값을 가질 수 있다. 상기 마스터 키는 외부 저장매체 또는 상기 데이터베이스 서버(120)의 내부에 저장될 수 있다. 본 발명의 일 양상에 따른 암호화(복호화) 기법은, 다양한 암호화 알고리즘, 암호화 키, 및/또는 암호화 옵션(초기화 벡터 사용여부 등)의 조합으로 이루어질 수 있다.The encryption key can be used for encryption and decryption. The encryption function may include an encryption algorithm that can change the plain text into a cipher text. The encryption function may refer to the encryption key when performing encryption and decryption. The encryption key may be stored in the database server 120 or may be stored outside the database server 120. Also, for additional security, the encryption key may be encrypted and stored via a master key. This master key can have a global value for one system. The master key may be stored in an external storage medium or in the database server 120. An encryption (decryption) technique according to an aspect of the present invention may be made up of a combination of various encryption algorithms, encryption keys, and / or encryption options (whether or not to use an initialization vector, etc.).

암호화된 데이터는 하나 이상의 데이터의 값 및 상기 데이터의 값이 저장될 영구 저장 매체(140) 상의 위치 정보에 적어도 부분적으로 기초하여 생성된 암호비교코드와 함께 상기 영구 저장 매체(140)에 저장될 수 있다. 즉, 이러한 암호비교코드는 복호문(decrypted text)의 무결성(Integrity)을 검증하기 위하여 사용될 수 있다. 이러한 암호비교코드는 예를 들어, SHA(secure hash algorithm) 계, MD5등의 해시 알고리즘을 이용하여 생성된 해시 값을 포함할 수 있다. The encrypted data may be stored in the persistent storage medium 140 with a password comparison code generated based at least in part on the value of the one or more data and the location information on the persistent storage medium 140 where the value of the data is to be stored have. That is, the password comparison code can be used to verify the integrity of the decrypted text. Such a password comparison code may include a hash value generated using a hash algorithm such as, for example, a secure hash algorithm (SHA), MD5, or the like.

본 발명의 추가적인 양상에서, 해시 알고리즘은 데이터 테이블의 데이터 값 및 상기 데이터 값의 위치 정보(예컨대, 영구 저장 장치 내에서의 위치 정보) 저장 위치 정보에 적어도 부분적으로 기초하여, 암호화된 데이터 값에 매칭되는 해시 값을 생성할 수 있다. 여기서 상기 위치 정보는 로우 식별자(rowid) 및 컬럼 키(column key) 중 적어도 하나를 포함할 수 있다. 예를 들어, 로우 식별자(rowid)는 데이터 블록 상엣의 데이터 값이 기록될 위치에 적어도 부분적으로 기초할 수 있다.In a further aspect of the invention, the hash algorithm may be adapted to match the encrypted data value based at least in part on the data values of the data table and the location information of the data values (e.g., location information in the persistent storage) A hash value can be generated. The location information may include at least one of a row identifier and a column key. For example, a row identifier (rowid) may be based, at least in part, on the location at which the data value on the data block is to be written.

해시 값을 사용하지 않는 경우에는, 정당한 접근 권한을 보유한 내부자가 암호화된 데이터 값을 입수하여, 상기 암호화된 데이터 값을 데이터 테이블 상에서 본래의 위치와 다른 위치에 저장할 수 있다. 이러한 경우, 상기 암호화된 데이터 값의 복호문은 유효한 데이터 값이 출력되므로, 데이터베이스 서버(120)는 상기 데이터의 변조를 감지할 수 없다. 해시 값을 상기 암호화된 데이터 값에 매칭함으로써, 데이터베이스 서버(120)는 데이터의 변조를 감지할 수 있다. 그러나, 해시 값이 단순히 데이터의 평문에 기초하는 경우, 정당한 접근 권한을 보유한 내부자가 암호화된 데이터 값 및 그에 매칭된 해시 값을 입수하여, 다른 저장 위치에 저장하는 공격을 하는 경우에 대해서는 복호화된 데이터 값이 유효하고, 복호화된 데이터 값에 기초한 해시 값이 데이터 값(평문 데이터 값)에 기초한 해시 값과 동일하므로, 데이터의 변조 여부가 감지될 수 없다. 그러나, 본 발명의 일 실시예에 의한 상기 해시 값은 암호화된 데이터의 저장 위치에 적어도 부분적으로 기초할 수 있다. 따라서, 전술한 바와 같은 데이터의 저장 위치를 변경하는 공격에 대해서 본 발명의 일 실시예에 따른 데이터베이스 서버(120)는 복호화된 데이터 값 및 복호화된 데이터 값의 저장 위치에 기초한 해시 값이 저장된 해시 값과 상이하므로, 유효한 암호화된 데이터 값의 위치 변경을 감지할 수 있다.
If the hash value is not used, the insider having the legitimate access right can obtain the encrypted data value and store the encrypted data value at a position different from the original position in the data table. In this case, since the decrypted data value of the encrypted data value is output as a valid data value, the database server 120 can not detect the modulation of the data. By matching the hash value to the encrypted data value, the database server 120 can detect the modulation of the data. However, when the hash value is simply based on the plaintext of the data, the insider having the legitimate access right obtains the encrypted data value and the matched hash value, and stores the decrypted data Value is valid and the hash value based on the decrypted data value is the same as the hash value based on the data value (plaintext data value), whether or not the data is tampered with can be detected. However, the hash value according to an embodiment of the present invention may be based at least in part on the storage location of the encrypted data. Accordingly, the database server 120 according to an embodiment of the present invention for attacking the storage location of the data as described above stores the hash value based on the decrypted data value and the storage location of the decrypted data value, It is possible to detect the change of the position of the valid encrypted data value.

도 3은 본 발명의 일 실시예에 따른 데이터 저장 및 인덱스 빌드 프로세스에 대한 예시적인 흐름도를 도시한다.Figure 3 illustrates an exemplary flow diagram of a data store and index build process in accordance with one embodiment of the present invention.

도 3에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 3에서의 암호화 및 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.The operations in FIG. 3 may be performed by the database server 120. The encryption and decryption operations in FIG. 3 may be implemented transparently and automatically for the client 110.

도 3에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.The order of the flowcharts shown in FIG. 3 may be variable depending on the implementation, and some orders may be added or some orders may be omitted.

송수신 모듈(210)은 데이터 저장 요청을 수신할 수 있다(305). 여기서의 데이터 저장 요청은, DB로 데이터를 기록(write)(인서트 및/또는 업데이트 포함)하기 위한 요청을 의미할 수 있다. 송수신 모듈(210)은 해당 데이터 저장 요청을 저장 모듈(280)로 전달할 수 있다(310). The transceiver module 210 may receive a data store request (305). The data storage request here may refer to a request to write (insert and / or update) data to the DB. The transmission / reception module 210 may forward the corresponding data storage request to the storage module 280 (310).

저장 모듈(280)은 사전설정된(예컨대, 클라이언트의 설정) 스키마(schema)에 따라서, 데이터가 저장될 테이블의 해당 컬럼이 암호화 지정된 컬럼인지 여부를 결정할 수 있다(315). 또한, 사전설정된 스키마에 따라서 저장 모듈(280)은 데이터가 저장될 테이블의 해당 컬럼이 인덱스 설정된 컬럼인지 여부를 결정할 수 있다(320). 본 발명의 일 양상에서, 상기 단계 315 및 320은 독립적으로 수행될 수 있거나 또는 어토믹(atomic)하게 수행될 수 있다. 데이터가 저장될 테이블의 해당 컬럼이 암호화 지정된 컬럼이고 그리고 인덱스 설정된 컬럼인 경우, 저장 모듈(280)은 해당 데이터를 영구저장매체(140)에 저장할 것을 결정하고 그리고 암호화 모듈(240)로 해당 데이터에 대한 암호화 요청을 전달할 수 있다(325).The storage module 280 may determine 315 whether the corresponding column of the table in which the data is to be stored is an encrypted designated column, according to a predetermined (e.g., client's) schema. In addition, according to a predetermined schema, the storage module 280 may determine whether the corresponding column of the table in which data is to be stored is an indexed column (320). In one aspect of the invention, steps 315 and 320 may be performed independently or atomically. If the corresponding column of the table in which the data is to be stored is an encrypted designated column and an indexed column, the storage module 280 decides to store the data in the persistent storage medium 140, (325). ≪ / RTI >

암호화 모듈(240)은 사전결정된 암호화 알고리즘에 기초하여 해당 데이터에 대한 컬럼 레벨 암호화를 수행할 수 있다(330). 전술한 바와 같이, 컬럼 레벨 암호화는 해당 컬럼(즉, 암호화 지정된 컬럼)에 속하는 임의의 데이터에 대한 값을 암호한다는 의미이다. 예를 들어, 암호화 지정된 컬럼 내의 특정한 데이터에 대한 값은 "%$!G#&"과 같은 형태로 암호화될 수 있다. The encryption module 240 may perform column-level encryption on the data based on a predetermined encryption algorithm (330). As described above, column level encryption means to encrypt a value for any data belonging to the corresponding column (i.e., the encrypted designated column). For example, the value for the specific data in the encrypted column can be encrypted in the form "% $! G # &".

암호화 모듈(240)은 암호화가 완료된 이후에 암호화된 데이터에 대한 영구저장매체(140)로의 저장 요청을 전달할 수 있다(340). 예를 들어, 이러한 저장 요청 및 암호화된 데이터는 데이터베이스 서버(120)의 메모리의 버퍼 캐시에 저장될 수 있다. 그리고나서, 예를 들어, 백그라운드 프로세스에 의해서 컬럼 레벨로 암호화된 데이터는 영구저장매체(140)의 데이터 세그먼트로 저장될 수 있다. 따라서, 전술한 프로세스를 통하여, 데이터에 대한 기록(업데이트 포함) 요청에 응답하여, 클라이언트에 대하여 투명한 방식으로 암호화된 데이터가 영구저장매체(140)에 기록될 수 있다(350).The encryption module 240 may pass 340 the storage request to the persistent storage medium 140 for the encrypted data after the encryption is complete. For example, such a store request and encrypted data may be stored in the buffer cache of the memory of the database server 120. Data encrypted at the column level, for example, by a background process, may then be stored in the data segment of the persistent storage medium 140. Thus, in response to a write (including update) request for data, data encrypted in a manner transparent to the client may be written 350 to the persistent storage medium 140, via the process described above.

데이터에 대한 인덱스의 빌드와 관련하여, 도 3을 참조하면, 암호화 모듈(240)은 암호화된 데이터에 대한 복호화 요청을 복호화 모듈(250)로 전달할 수 있다(335). 일례로, 상기 단계 330에서의 데이터의 암호화는 데이터베이스 서버(120)의 프론트엔드(frontend)에서 수행될 수 있다. 따라서, 인덱스 빌드는 데이터베이스 서버(120)의 백엔드(backend)에서 수행되기 때문에, 인덱스의 빌드 프로세스를 수행하기 위해서는 선결적으로 암호화된 데이터를 복호화하여야 할 것이다. Referring to FIG. 3, in connection with building an index for data, the encryption module 240 may forward the decryption request for the encrypted data to the decryption module 250 (335). For example, the encryption of the data in step 330 may be performed at the front end of the database server 120. Therefore, since the index build is performed in the backend of the database server 120, it is necessary to decrypt the encrypted data in advance in order to perform the index build process.

본 발명의 일 양상에서, 복호화 모듈(250)은 암호화 모듈(240)로부터의 컬럼 레벨로 암호화된 데이터에 대한 암호화 정보를 기초로 하여, 해당 데이터에 대한 컬럼 레벨의 복호화를 수행할 수 있다(345). 즉, 복호화 모듈(250)은 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다. In one aspect of the present invention, the decryption module 250 may perform column-level decryption on the data based on the encryption information for the column-level encrypted data from the encryption module 240 (345 ). That is, the decryption module 250 may decrypt one or more data encrypted at the column level to generate one or more decrypted data.

전술한 바와 같이, 예를 들어, 인덱스의 빌드(예컨대, 인서트 데이터)의 경우, 복호화 모듈(250)은 영구저장매체(140)에 암호화된 데이터가 기록되기 전에 암호화 모듈(240)에 의한 암호화 데이터에 관한 정보를 메모리로부터 판독할 수 있기 때문에, 복호화 모듈(250)은 메모리로부터 획득된 암호화된 데이터에 대한 복호화를 수행할 수 있다. 다른 예시로, 인덱스의 업데이트의 경우에는 복호화 모듈(250)은 암호화된 데이터를 영구저장매체(140)로부터 획득함으로써 상기 암호화된 데이터에 대한 복호화를 수행할 수 있다. 암호화/복호화 방식은 도 2에서 설명된 암호화/복호화 방식에 기초하여 수행될 수 있다.As described above, for example, in the case of an index build (e.g., insert data), the decryption module 250 decrypts the encrypted data by the encryption module 240 before the encrypted data is written to the persistent storage medium 140 The decryption module 250 can perform decryption on the encrypted data obtained from the memory. In another example, in the case of an update of the index, the decryption module 250 may perform decryption on the encrypted data by obtaining the encrypted data from the persistent storage medium 140. [ The encryption / decryption method can be performed based on the encryption / decryption method described in FIG.

도 3으로 되돌아 가면, 복호화 모듈(250)은 복호화된 데이터에 대한 인덱스 빌드 요청을 빌드 모듈(260)로 전달할 수 있다(355). Referring back to FIG. 3, the decryption module 250 may forward the index build request for the decrypted data to the build module 260 (355).

빌드 모듈(260)은 복호화된 데이터를 기초로 하여 인덱스 테이블을 생성할 수 있다(360). 본 발명의 일 양상에서, 빌드 모듈(260)은, 하나 이상의 복호화된 데이터가 저장될 컬럼에 대한 크기(size) 속성에 적어도 부분적으로 기초하여, 인덱스 테이블을 생성할 수 있다. 또한, 상기 빌드 모듈(260)은, B-트리(Balanced Tree) 인덱스 기법, 비트맵(Bitmap) 인덱스 기법 및 함수 기반 인덱스(FBI:Function Based Index) 기법 중 적어도 하나에 기초하여 인덱스 테이블 빌드를 수행할 수 있다.The build module 260 may generate an index table based on the decrypted data (360). In one aspect of the invention, the build module 260 may generate an index table based, at least in part, on the size attribute for the column in which the one or more decoded data is to be stored. Also, the build module 260 builds an index table based on at least one of a B-tree index method, a bitmap index method, and a function based index (FBI) technique. can do.

본 발명의 일 양상에서, 빌드 모듈(260)은 인덱스 빌드가 완료된 이후에 빌드된 인덱스 테이블에 대한 암호화 요청을 암호화 모듈(240)로 전달할 수 있다(365). In one aspect of the present invention, the build module 260 may forward the encryption request for the index table built after the index build is completed to the encryption module 240 (365).

암호화 모듈(240)은 빌드된 인덱스 테이블에 대하여 블록 레벨(예컨대, 테이블스페이스 레벨) 암호화를 수행할 수 있다(370). 그리고나서, 암호화 모듈(240)은 블록 레벨로 암호화된 인덱스 테이블에 대한 디스크 저장 요청을 전달할 수 있다(375). 그리고나서, 예컨대 백그라운드 프로세스에 의하여 블록 레벨로 암호화된 인덱스 테이블은 영구저장매체(140)의 인덱스 세그먼트로 저장될 수 있다. 따라서, 전술한 방식을 통하여, 인덱스 레인지 스캔이 허용될 수 있는 암호화된 인덱스 테이블이 빌드될 수 있다.The encryption module 240 may perform block level (e.g., table space level) encryption on the built index table (370). The encryption module 240 may then pass 375 a disk save request for the index table encrypted at the block level. The index table encrypted at the block level, for example, by a background process, may then be stored as an index segment of the persistent storage medium 140. Thus, through the manner described above, an encrypted index table can be built that allows index range scanning.

본 발명의 추가적인 실시예에서, 데이터 업데이트 요청이 수신되는 경우, 데이터베이스 서버(120)는 이하에서 도 4와 관련하여 후술될 인덱스 스캔 및/도는 인덱스 조회 프로세스를 수행한 이후에 도 3에서 도시되는 인덱스 빌드 프로세스를 통하여 데이터 업데이트 및 인덱스 업데이트를 구현할 수 있다.
In a further embodiment of the present invention, when a data update request is received, the database server 120 performs an index scan and / or an index lookup process, which will be described below with respect to FIG. 4, Data update and index update can be implemented through the build process.

도 4는 본 발명의 일 실시예에 따른 인덱스 스캔 및 조회 프로세스에 대한 예시적인 흐름도를 도시한다.4 illustrates an exemplary flow chart for an index scan and lookup process in accordance with an embodiment of the present invention.

도 4에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 4에서의 암호화 및 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.The operations in FIG. 4 may be performed by the database server 120. FIG. The encryption and decryption operations in FIG. 4 may be implemented transparently and automatically for the client 110.

도 4에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.The order of the flowcharts shown in FIG. 4 may be variable depending on the implementation, and some orders may be added or some orders may be omitted.

송수신 모듈(210)은 인덱스 조회 요청을 수신할 수 있다(405). 상기 인덱스 조회 요청은 예를 들어, 인덱스 레인지 스캔(index range scan) 요청일 수 있다. 송수신 모듈(210)은 인덱스 조회 요청을 스캔 모듈(270)로 전달할 수 있다(410).The transceiver module 210 may receive an index lookup request (405). The index inquiry request may be, for example, an index range scan request. The transceiver module 210 may forward the index inquiry request to the scan module 270 (410).

스캔 모듈(210)은 인덱스 조회 요청에 대한 프로세싱을 수행할 수 있다. 또한, 스캔 모듈(270)은 암호화된 인덱스 테이블이 영구저장매체(140)로부터 메모리로 로딩될 수 있도록 인덱스 스캔 요청을 전달할 수 있다(415). 이러한 인덱스 스캔 요청의 전달은 하나의 프로세스로 통합될 수도 있다.The scan module 210 may perform processing for an index lookup request. The scan module 270 may also pass an index scan request (415) so that the encrypted index table may be loaded into the memory from the persistent storage medium 140. The transfer of such an index scan request may be integrated into a single process.

인덱스 스캔 요청에 응답하여, 영구저장매체(140)로부터 복호화 모듈(250)로 블록 레벨로 암호화된 인덱스 테이블이 로딩될 수 있다(420). 이러한 암호화된 인덱스 테이블의 로딩은 영구저장매체(140)로부터 블록 단위로 로딩될 수 있다. In response to the index scan request, the index table encrypted at block level from the persistent storage medium 140 to the decryption module 250 may be loaded 420. The loading of this encrypted index table may be loaded block by block from the persistent storage medium 140.

복호화 모듈(250)은 블록 레벨로 암호화된 인덱스 테이블을 복호화하여, 복호화된 인덱스 테이블을 생성할 수 있다(425). 복호화 모듈(250)은 복호화된 인덱스 테이블을 스캔 모듈(270)로 전달할 수 있다. The decryption module 250 may decrypt the index table encrypted at the block level to generate the decrypted index table (425). The decryption module 250 may forward the decrypted index table to the scan module 270.

스캔 모듈(270)은 복호화된 인덱스 테이블에 대한 인덱스 스캔을 수행할 수 있다(435). 본 명세서에서의 인덱스 스캔이란, 인덱스에 대한 컬럼 키(column key) 및/또는 로우 ID(rowid)를 찾기 위하여 인덱스에 대한 스캔을 수행하는 프로세스를 의미할 수 있다. 또한, 본 명세서에서의 인덱스 조회란, 스캔된 인덱스에서의 컬럼의 rowid에 대응되는 데이터의 값(즉, 레코드)을 찾는 프로세스를 의미할 수 있다. The scan module 270 may perform an index scan on the decoded index table (435). The index scan in this specification may mean a process of performing a scan on an index to find a column key and / or a row ID for the index. In the present specification, the index lookup may refer to a process of finding a value (i.e., a record) of data corresponding to a rowid of a column in a scanned index.

스캔 모듈(270)은 인덱스 스캔 결과를 조회 모듈(290)로 전달할 수 있다(440). 그리고나서, 조회 모듈(290)은 인덱스 스캔 결과 값(즉, 컬럼 키 및 로우 ID)에 따른 데이터 값 조회 요청을 생성 및 전달할 수 있다(445).The scan module 270 may forward the index scan results to the query module 290 (440). The inquiry module 290 may then generate and deliver a data value inquiry request according to the index scan result values (i.e., the column key and the row ID) (445).

이러한 경우, 영구저장매체(140)로부터 컬럼 레벨로 암호화된 데이터가 로딩될 수 있다(450). 복호화 모듈(250)은 컬럼 레벨로 암호화된 데이터를 복호화할 수 있다(455). 이렇게 복호화된 데이터는 조회 모듈(290)로 전달될 수 있다(460). 또한, 조회 모듈(290)은 인덱스 조회에 대한 결과값을 생성하여 이를 송수신 모듈(210)로 전달할 수 있다.In this case, data encrypted at the column level from the persistent storage medium 140 may be loaded (450). The decryption module 250 may decrypt the data encrypted at the column level (455). The decoded data may be transmitted to the inquiry module 290 (460). In addition, the inquiry module 290 may generate a result value for the index inquiry and forward it to the transmission / reception module 210.

본 발명의 추가적인 양상에서, 인덱스 업데이트에 대한 프로세스의 경우, 앞서 설명된 바와 같이, 인덱스 스캔 프로세스(예컨대, 단계 405 내지 435 단계)가 도 3에서의 단계 320 이후에 수행될 수 있다.In a further aspect of the invention, in the case of a process for index updating, an index scan process (e.g., steps 405 through 435) may be performed after step 320 in FIG. 3, as described above.

본 발명의 추가적인 양상에서, 만약 인덱스된 테이블이 암호화된 컬럼을 전부 포함하는 경우에는, 블록 레벨로 암호화된 인덱스 테이블을 복호화함으로써 인덱스 스캔 및 인덱스 조회가 완료될 수도 있다.According to a further aspect of the present invention, if the indexed table includes all the encrypted columns, the index scan and index lookup may be completed by decoding the index table encrypted at the block level.

전술한 바와 같이, 인덱스 테이블에 대해서는 컬럼 단위로 암호화/복호화가 이루어지지 않고 블록 단위로 암호화/복호화가 이루어지기 때문에, 데이터에 대한 보안을 유지하는 동시에 인덱스 레인지 스캔이 효율적으로 이루어질 수 있다. 본 발명의 일 양상에 따른 암호화/복호화 방식의 경우, 보안화된 데이터베이스에 대한 단일 키 검색(single key search), 레인지 검색(range search) 및 복합키 검색(composite key search) 등이 허용될 수 있다.
As described above, since the index table is not encrypted / decrypted on a column-by-column basis and encryption / decryption is performed on a block-by-block basis, index range scanning can be efficiently performed while securing data security. In an encryption / decryption scheme according to an aspect of the present invention, a single key search, a range search, and a composite key search for a secured database may be allowed .

도 5는 본 발명의 일 실시예에 따른 데이터 조회 프로세스에 대한 예시적인 흐름도를 도시한다.Figure 5 illustrates an exemplary flow diagram for a data query process in accordance with one embodiment of the present invention.

도 5에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 5에서의 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.The operations in FIG. 5 may be performed by the database server 120. FIG. The decryption operations in FIG. 5 may be implemented transparently and automatically for the client 110. FIG.

도 5에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.The order of the flowcharts shown in Fig. 5 may vary depending on the implementation, and some orders may be added or some orders may be omitted.

도 5에서 도시되는 바와 같이, 송수신 모듈(210)은 예를 들어, 클라이언트로부터의 데이터 조회 요청을 수신할 수 있다(510). 송수신 모듈(210)은 데이터 조회 요청을 조회 모듈(290)로 전달할 수 있다(520). As shown in FIG. 5, the transceiver module 210 may receive 510 a data inquiry request from a client, for example. The transmission / reception module 210 may forward the data inquiry request to the inquiry module 290 (520).

조회 모듈(290)은 조회 요청을 프로세싱하여, 영구저장매체(140)로부터 조회 요청에 대응되는 암호화된 데이터가 로딩될 수 있도록 데이터 조회 요청을 전달할 수 있다(530). The inquiry module 290 may process the inquiry request and forward 530 the data inquiry request so that the encrypted data corresponding to the inquiry request may be loaded from the persistent storage medium 140.

그리고나서, 조회 요청에 대응되는, 컬럼 레벨로 암호화된 데이터가 로딩될 수 있다(540). 복호화 모듈(250)은 컬럼 레벨로 암호화된 데이터를 복호화하여 복호화된 데이터를 생성할 수 있다(550). 복호화 모듈(250)은 복호화된 데이터를 조회 모듈(290)로 전달할 수 있다(560).The column-level encrypted data corresponding to the inquiry request may then be loaded (540). The decryption module 250 may decrypt the data encrypted at the column level to generate decrypted data (550). The decryption module 250 may transmit the decrypted data to the inquiry module 290 (560).

조회 모듈(290)은 복호화된 데이터를 프로세싱하여(또는 프로세싱 없이), 데이터 조회 결과값을 생성한 후 데이터 조회 결과값을 송수신 모듈(210)로 전달할 수 있다(570).
The inquiry module 290 processes the decoded data (or without processing), generates a data inquiry result value, and transmits the data inquiry result value to the transmission / reception module 210 (570).

도 6은 본 발명의 일 실시예에 따라 데이터 및 인덱스가 영구저장매체(140)에서 암호화되어 저장되는 암호화 방식을 예시적으로 도시한다.6 illustrates an exemplary encryption scheme in which data and indexes are encrypted and stored in the persistent storage medium 140 according to one embodiment of the present invention.

도 6에서 도시되는 바와 같이, 영구 저장 매체(140)는 데이터 세그먼트(또는 테이블 세그먼트)(610) 및 인덱스 세그먼트(620)를 포함할 수 있다. 여기서, 데이터 세그먼트는 데이터 테이블이 저장될 수 있는 영역이며, 인덱스 세그먼트는 인덱스 테이블이 저장될 수 있는 영역이다. 즉, 오브젝트가 (데이터) 테이블인지 인덱스인지에 따라서 영구 저장 매체(140)의 상이한 영역이 할당될 수 있다.As shown in FIG. 6, the persistent storage medium 140 may include a data segment (or table segment) 610 and an index segment 620. Here, the data segment is an area where the data table can be stored, and the index segment is an area where the index table can be stored. That is, different areas of the persistent storage medium 140 may be allocated depending on whether the object is a (data) table or an index.

본 발명의 일 양상에 따라서, 인덱스 테이블에 대해서는 블록 레벨 암호화가 수행되며 데이터 테이블에 대해서는 컬럼 레벨 암호화가 수행될 수 있다. According to one aspect of the present invention, block level encryption is performed on the index table, and column level encryption is performed on the data table.

본 발명의 일 양상에 따라서, 영구저장매체(140)에서 DBMS(130)(즉, 메모리)로 컬럼 레벨로 암호화된 데이터 및 블록 레벨로 암호화된 인덱스를 로딩하는 경우 복호화가 자동적으로 이루어질 수 있다. 또한, DBMS(130)(즉, 메모리)로부터 영구저장매체(140)로 데이터 및 인덱스가 저장되는 경우 암호화가 자동적으로 이루어질 수 있다. 따라서, 전술한 기술적 특징들을 통하여 클라이언트에게 투명한 방식으로의 보안관리가 가능해질 수 있다. According to an aspect of the present invention, when loading index level encrypted data and block level encrypted data from the persistent storage medium 140 to the DBMS 130 (i.e., memory), decryption may be automatically performed. Also, when data and indexes are stored from the DBMS 130 (i.e., memory) to the persistent storage medium 140, encryption may be automatically performed. Thus, security management in a transparent manner to the client can be made possible through the above-described technical features.

데이터 세그먼트(610)에는 컬럼 단위의 암호화가 적용된 데이터가 저장되기 때문에, 성명 및 생년월일에 대한 컬럼에 대해서는 암호화되지 않고 신용카드번호에 대한 컬럼에 대해서만 암호화가 이루어질 수 있다. 또한, 인덱스 세그먼트(620)에는 블록 단위의 암호화가 적용된 인덱스 테이블이 저장되기 때문에, 도 6에서 도시되는 바와 같이, 인덱스 테이블 전체가 암호화되어 저장될 수 있다.
Since the data segment 610 stores data in which column-based encryption is applied, the column for the name and date of birth is not encrypted, and only the column for the credit card number can be encrypted. Also, since the index segment to which the block-based encryption is applied is stored in the index segment 620, the entire index table can be encrypted and stored, as shown in FIG.

도 7은 본 발명의 일 실시예에 따른 데이터 저장 및 인덱스 빌드(또는 업데이트)에 대한 예시적인 순서도를 도시한다.Figure 7 illustrates an exemplary flowchart for data storage and index build (or update) in accordance with one embodiment of the present invention.

도 7에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 7에서의 암호화 및 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.Operations in Fig. 7 can be performed by the database server 120. Fig. The encryption and decryption operations in FIG. 7 can be implemented transparently and automatically for the client 110. FIG.

도 7에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.The order of the flowcharts shown in Fig. 7 may be variable depending on the implementation, and some orders may be added or some orders may be omitted.

데이터베이스 서버(120)는 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구저장매체 또는 메모리로부터 읽을 수 있다(710). 즉, 컬럼 레벨의 암호화는 선택된 데이터에 대한 컬럼 단위의 암호화를 의미할 수 있다. The database server 120 may read 710 the one or more data encrypted at the column level from the persistent storage medium or memory. That is, column-level encryption may mean column-by-column encryption of the selected data.

그리고나서, 데이터베이스 서버(120)는 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다(720). 이는 인덱스 테이블을 생성하는데 있어서, 암호화된 데이터를 기초로 하여 인덱스 테이블을 생성하는 경우, 인덱스 레인지 스캔이 불가능해지기 때문이다. 즉, 인덱스 레인지 스캔을 허용함과 동시에 인덱스에 대한 보안을 유지하기 위해서, 인덱스 테이블의 생성은 복호화된 데이터(즉, 평문 데이터)를 기초로 수행될 수 있다(730).The database server 120 may then generate 720 one or more decrypted data by decoding one or more data encrypted at the column level. This is because, in generating the index table, when the index table is generated based on the encrypted data, the index range scan becomes impossible. That is, in order to allow the index range scan and to secure the index, the generation of the index table may be performed based on the decrypted data (i.e., plain text data) (730).

도 7에서 도시되는 바와 같이, 데이터베이스 서버(120)는 생성된 인덱스 테이블을 블록 레벨로 암호화할 수 있다(740). 즉, 복호화된 데이터를 기초로 하여 인덱스 테이블을 생성하였기 때문에, 해당 인덱스 테이블에 대한 보안을 유지하기 위해서 인덱스 테이블에 대해서는 블록 레벨로 암호화가 이루어질 수 있다.As shown in FIG. 7, the database server 120 may encrypt the generated index table at block level (740). That is, since the index table is generated based on the decrypted data, the index table can be encrypted at the block level in order to maintain security for the index table.

그리고나서, 데이터베이스 서버(120)는 암호화된 인덱스 테이블을 영구 저장 매체(140)에 저장할 수 있다(750).The database server 120 may then store the encrypted index table in the persistent storage medium 140 (750).

즉, 본 발명의 일 양상에 따른 암호화 기법의 경우, 데이터 테이블 및 인덱스 테이블을 모두 테이블 스페이스 레벨로 암호화한 기법과 비교했을 때, 보다 적은 양을 암호화하게 된다(결국 속도도 빨라짐). 더불어, 본 발명의 일 양상에 따른 암호화/복호화 기법의 경우, 데이터 테이블에 대해서 컬럼 단위로 암호화하는 기법(인덱스 테이블에 대해서는 별도의 암호화를 하지 않음)과 비교했을 때, 인덱스 레인지 스캔이 가능하다는 장점을 가지게 된다. 나아가, 본 발명의 일 양상에 따른 암호화/복호화 기법의 경우 인덱스 테이블을 블록 레벨로 암호화하기 때문에, 인덱스 테이블로 저장된 컬럼에 대한 크기(size) 속성 값을 노출시키지 않기 때문에, 보다 높은 수준의 보안 관리가 가능해질 수 있다.
That is, in the case of the encryption technique according to an aspect of the present invention, a smaller amount of data is encrypted (eventually speeding up) as compared with a technique in which both the data table and the index table are encrypted at the table space level. In addition, the encryption / decryption technique according to an aspect of the present invention is advantageous in that the index range scan can be performed when compared with the technique of encrypting the data table on a column-by-column basis (no separate encryption is applied to the index table) . In addition, since the encryption / decryption technique according to an aspect of the present invention encrypts the index table at the block level, the size attribute value for the column stored in the index table is not exposed. Therefore, . ≪ / RTI >

도 8은 본 발명의 일 실시예에 따른 인덱스 조회에 대한 예시적인 순서도를 도시한다.Figure 8 illustrates an exemplary flowchart for an index lookup according to one embodiment of the present invention.

도 8에서의 동작들은 데이터베이스 서버(120)에 의해 수행될 수 있다. 도 8에서의 암호화 및 복호화 동작들은 클라이언트(110)에 대해서는 투명하게 자동적으로 구현될 수 있다.The operations in Fig. 8 can be performed by the database server 120. Fig. The encryption and decryption operations in FIG. 8 can be implemented transparently and automatically for the client 110. FIG.

도 8에서 도시되는 흐름도의 순서는 구현에 따라 가변적일 수 있으며, 일부 순서가 추가되거나 일부 순서가 생략될 수도 있다.The order of the flowcharts shown in Fig. 8 may be variable depending on the implementation, and some orders may be added or some orders may be omitted.

데이터베이스 서버(120)는 인덱스 조회 요청(예컨대, 인덱스 레인지 스캔 요청)에 응답하여, 블록 레벨로 암호화된 인덱스 테이블을 영구 저장 매체(140)로부터 리트리브할 수 있다(810). 그리고나서, 데이터베이스 서버(120)는 블록 레벨로 암호화된 인덱스 테이블을 복호화하여 복호화된 인덱스 테이블을 생성할 수 있다(820).In response to the index lookup request (e.g., an index range scan request), the database server 120 may retrieve 810 the index table encrypted at the block level from the persistent storage medium 140. Then, the database server 120 may generate a decoded index table by decoding the index table encrypted at the block level (820).

데이터베이스 서버(120)는 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔을 수행할 수 있다(830). 즉, 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔이 수행되기 때문에, 암호화되지 않은 데이터에 따른 인덱스 테이블이 획득될 수 있다. 따라서, 데이터베이스 서버(120)는 인덱스 스캔에 따른 결과(예컨대, 컬럼 키 및 로우 ID)를 획득할 수 있다.The database server 120 may perform an index scan based on the decoded index table (830). That is, since an index scan is performed based on the decoded index table, an index table according to unencrypted data can be obtained. Accordingly, the database server 120 can obtain the results (e.g., column key and row ID) according to the index scan.

데이터베이스 서버(120)는 인덱스 스캔에 따른 결과와 대응될 수 있는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 리트리브할 수 있다(840). 그리고나서, 데이터베이스 서버(120)는 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다(850). 따라서, 이러한 복호화된 데이터의 값(레코드)을 판독함으로써, 인덱스 조회 요청에 대한 결과 값이 생성될 수 있다.The database server 120 may retrieve 840 the column-level encrypted one or more data from the persistent storage medium, which may correspond to the result of the index scan. The database server 120 may then decrypt one or more data encrypted at the column level to generate one or more decrypted data (850). Thus, by reading the value (record) of such decrypted data, a result value for the index inquiry request can be generated.

따라서, 전술한 암호화/복호화 방식(즉, 컬럼 레벨 암호화와 블록 레벨 암호화의 조합)은 인덱스 레인지 스캔을 허용하면서 데이터에 대한 효율적인 보호를 가능케할 수 있다. Thus, the encryption / decryption scheme described above (i.e., a combination of column-level encryption and block-level encryption) can allow efficient protection of data while allowing index range scans.

본 발명의 기술 분야에서 통상의 지식을 가진 자는 여기에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 프로세서들, 수단들, 회로들 및 알고리즘 단계들이 전자 하드웨어, (편의를 위해, 여기에서 "소프트웨어"로 지칭되는) 다양한 형태들의 프로그램 또는 설계 코드 또는 이들 모두의 결합에 의해 구현될 수 있다는 것을 이해할 것이다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들이 이들의 기능과 관련하여 위에서 일반적으로 설명되었다. 이러한 기능이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 본 발명의 기술 분야에서 통상의 지식을 가진 자는 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 설명된 기능을 구현할 수 있으나, 이러한 구현 결정들은 본 발명의 범위를 벗어나는 것으로 해석되어서는 안 될 것이다.Those skilled in the art will appreciate that the various illustrative logical blocks, modules, processors, means, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be embodied directly in electronic hardware, (Which may be referred to herein as "software") or a combination of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the design constraints imposed on the particular application and the overall system. Those skilled in the art may implement the described functionality in various ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.

여기서 제시된 다양한 실시예들은 방법, 장치, 또는 표준 프로그래밍 및/또는 엔지니어링 기술을 사용한 제조 물품(article)으로 구현될 수 있다. 용어 "제조 물품"은 임의의 컴퓨터-판독가능 장치로부터 액세스 가능한 컴퓨터 프로그램, 캐리어, 또는 매체(media)를 포함한다. 예를 들어, 컴퓨터-판독가능 매체는 자기 저장 장치(예를 들면, 하드 디스크, 플로피 디스크, 자기 스트립, 등), 광학 디스크(예를 들면, CD, DVD, 등), 스마트 카드, 및 플래쉬 메모리 장치(예를 들면, EEPROM, 카드, 스틱, 키 드라이브, 등)를 포함하지만, 이들로 제한되는 것은 아니다. 또한, 여기서 제시되는 다양한 저장 매체는 정보를 저장하기 위한 하나 이상의 장치 및/또는 다른 기계-판독가능한 매체를 포함한다. 용어 "기계-판독가능 매체"는 명령(들) 및/또는 데이터를 저장, 보유, 및/또는 전달할 수 있는 무선 채널 및 다양한 다른 매체를 포함하지만, 이들로 제한되는 것은 아니다. The various embodiments presented herein may be implemented as a method, apparatus, or article of manufacture using standard programming and / or engineering techniques. The term "article of manufacture" includes a computer program, carrier, or media accessible from any computer-readable device. For example, the computer-readable medium can be a magnetic storage device (e.g., a hard disk, a floppy disk, a magnetic strip, etc.), an optical disk (e.g., CD, DVD, etc.), a smart card, But are not limited to, devices (e. G., EEPROM, cards, sticks, key drives, etc.). The various storage media presented herein also include one or more devices and / or other machine-readable media for storing information. The term "machine-readable medium" includes, but is not limited to, a wireless channel and various other media capable of storing, holding, and / or transferring instruction (s) and / or data.

제시된 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조는 예시적인 접근들의 일례임을 이해하도록 한다. 설계 우선순위들에 기반하여, 본 발명의 범위 내에서 프로세스들에 있는 단계들의 특정한 순서 또는 계층 구조가 재배열될 수 있다는 것을 이해하도록 한다. 첨부된 방법 청구항들은 샘플 순서로 다양한 단계들의 엘리먼트들을 제공하지만 제시된 특정한 순서 또는 계층 구조에 한정되는 것을 의미하지는 않는다.It will be appreciated that the particular order or hierarchy of steps in the presented processes is an example of exemplary approaches. It will be appreciated that, based on design priorities, certain orders or hierarchies of steps in processes may be rearranged within the scope of the present invention. The appended method claims provide elements of the various steps in a sample order, but are not meant to be limited to the specific order or hierarchy presented.

제시된 실시예들에 대한 설명은 임의의 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 발명의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 발명의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 발명은 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.The description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the scope of the invention. Thus, the present invention is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features presented herein.

110: 클라이언트
120: 데이터베이스 서버
130: DBMS(Database Management System)
140: 영구 저장 매체(persistent storage)
210: 송수신 모듈
220: 인덱스 관리 모듈
230: 데이터 관리 모듈
240: 암호화 모듈
250: 복호화 모듈
260: 빌드 모듈
270: 스캔 모듈
280: 저장 모듈
290: 조회 모듈
610: 데이터 세그먼트
620: 인덱스 세그먼트
110: Client
120: Database server
130: Database Management System (DBMS)
140: Persistent storage
210: transmitting / receiving module
220: Index management module
230: Data management module
240: Encryption module
250: Decryption module
260: Build module
270: scan module
280: storage module
290: inquiry module
610: Data segment
620: Index Segment

Claims (13)

컴퓨터-판독가능 매체에 저장되어 컴퓨터로 하여금 이하의 단계들을 수행하도록 하는 데이터베이스 보안 관리 프로그램으로서,
상기 단계들은:
컬럼(column) 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체 또는 메모리로부터 읽어들이는 단계;
상기 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하는 단계;
상기 생성된 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하는 단계; 및
상기 생성된 인덱스 테이블을 블록(block) 레벨로 암호화 하는 동작을 수행하는 단계;
를 포함하는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
A database security management program stored on a computer-readable medium for causing a computer to perform the following steps,
The steps include:
Reading one or more data encrypted at a column level from a permanent storage medium or memory;
Decoding one or more data encrypted at the column level to generate one or more decrypted data;
Generating an index table based on the generated one or more decoded data; And
Encrypting the generated index table at a block level;
/ RTI >
A database security management program stored in a computer-readable medium.
제 1 항에 있어서,
상기 블록 레벨로 암호화된 인덱스 테이블을 상기 영구 저장 매체에 저장하는 단계;
를 더 포함하는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 1,
Storing the index table encrypted at the block level in the persistent storage medium;
≪ / RTI >
A database security management program stored in a computer-readable medium.
제 1 항에 있어서,
상기 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작은,
백그라운드 프로세스(background process)가 메모리 내의 블록을 상기 영구 저장 매체로 기록하고자 할 때 수행되는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 1,
And encrypting the generated index table at a block level,
A method according to any of the preceding claims, wherein a background process is performed when a block in memory is to be written to the persistent storage medium.
A database security management program stored in a computer-readable medium.
제 1 항에 있어서,
상기 하나 이상의 데이터를 컬럼 레벨로 암호화하여 저장하는 단계를 더 포함하며,
상기 하나 이상의 데이터를 컬럼 레벨로 암호화하여 저장하는 단계는,
컬럼 레벨로 암호화된 상기 하나 이상의 데이터를 상기 영구 저장 매체의 데이터 세그먼트에 저장하는 단계;
를 포함하는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 1,
Further comprising encrypting and storing the one or more data at a column level,
The step of encrypting and storing the one or more data at a column level comprises:
Storing the one or more data encrypted at the column level in a data segment of the persistent storage medium;
/ RTI >
A database security management program stored in a computer-readable medium.
제 4 항에 있어서,
상기 컬럼 레벨 암호화는 컬럼 단위로 제 1 암호화 키가 생성되며, 상기 블록 레벨 암호화는 블록 단위 또는 블록 이상의 단위로 제 2 암호화 키가 생성되며, 그리고 상기 제 1 암호화 키 및 상기 제 2 암호화 키는 상이한 값을 갖는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
5. The method of claim 4,
Wherein the column-level encryption generates a first encryption key in units of columns, the block-level encryption generates a second encryption key in units of blocks or blocks, and the first encryption key and the second encryption key are different Lt; / RTI >
A database security management program stored in a computer-readable medium.
제 5 항에 있어서,
상기 제 1 암호화 키 및 상기 제 2 암호화 키는 상기 영구 저장 매체 또는 메모리의 데이터 딕셔너리(DD:Data Dictionary)에 저장되는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
6. The method of claim 5,
Wherein the first encryption key and the second encryption key are stored in a data dictionary (DD) of the permanent storage medium or memory,
A database security management program stored in a computer-readable medium.
제 6 항에 있어서,
상기 제 1 암호화 키 및 상기 제 2 암호화 키는 마스터 키(master key)를 통하여 암호화되어 상기 데이터 딕셔너리에 저장되며, 그리고
상기 마스터 키는 외부 저장 매체 또는 데이터베이스 서버에 저장되는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 6,
Wherein the first encryption key and the second encryption key are encrypted through a master key and stored in the data dictionary,
The master key is stored in an external storage medium or a database server.
A database security management program stored in a computer-readable medium.
제 1 항에 있어서,
상기 블록 레벨로 암호화된 인덱스 테이블을 상기 영구 저장 매체의 인덱스 세그먼트로 저장하는 단계;
를 더 포함하는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 1,
Storing the index table encrypted at the block level as an index segment of the permanent storage medium;
≪ / RTI >
A database security management program stored in a computer-readable medium.
제 1 항에 있어서,
상기 인덱스 테이블을 생성하는 단계는,
상기 하나 이상의 복호화된 데이터가 저장될 컬럼에 대한 크기(size) 속성에 적어도 부분적으로 기초하여, 상기 인덱스 테이블을 생성하는 단계;
를 포함하는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 1,
Wherein the step of generating the index table comprises:
Generating the index table based at least in part on a size attribute for the column in which the one or more decoded data is to be stored;
/ RTI >
A database security management program stored in a computer-readable medium.
제 1 항에 있어서,
상기 인덱스 테이블을 생성하는 단계는,
B-트리(Balanced Tree) 인덱스 기법, 비트맵(Bitmap) 인덱스 기법 및 함수 기반 인덱스(FBI:Function Based Index) 기법 중 적어도 하나에 기초하여 수행되는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 1,
Wherein the step of generating the index table comprises:
A method based on at least one of a B-tree index method, a Bitmap index method, and a Function Based Index (FBI)
A database security management program stored in a computer-readable medium.
제 1 항에 있어서,
상기 암호화 및 복호화는,
상기 데이터베이스 서버의 클라이언트에게 투명하게 자동적으로 수행되는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 1,
The encryption /
And automatically performed transparently to the client of the database server,
A database security management program stored in a computer-readable medium.
제 1 항에 있어서,
상기 컬럼 레벨로 암호화된 하나 이상의 데이터는,
상기 하나 이상의 데이터의 값 및 상기 데이터의 값이 저장될 위치 정보에 적어도 부분적으로 기초하여 생성된 암호비교코드와 함께 상기 영구 저장 매체에 저장되는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.
The method according to claim 1,
The one or more data encrypted at the column level,
Wherein the value of the one or more data and the value of the data are stored in the persistent storage medium together with a password comparison code generated based at least in part on location information to be stored,
A database security management program stored in a computer-readable medium.
데이터베이스 서버로서,
컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성하고, 상기 하나 이상의 복호화된 데이터에 기초한 인덱스 테이블을 생성하고, 그리고 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작을 수행하는 적어도 하나의 프로세서; 및
상기 컬럼 레벨로 암호화된 데이터를 포함하는 데이터 테이블 및 상기 블록 레벨로 암호화된 인덱스 테이블을 저장하는 영구 저장 매체(persistent storage);
를 포함하는,
데이터베이스 서버.
As a database server,
At least one or more decrypted data generated at the column level is decrypted to generate at least one decrypted data, an index table based on the at least one decrypted data is generated, and at least a block level encryption key One processor; And
A persistent storage for storing a data table including data encrypted at the column level and an index table encrypted at the block level;
/ RTI >
Database server.
KR1020150131320A 2015-09-17 2015-09-17 Method, server and computer program for security management in database Withdrawn KR20160114492A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150131320A KR20160114492A (en) 2015-09-17 2015-09-17 Method, server and computer program for security management in database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150131320A KR20160114492A (en) 2015-09-17 2015-09-17 Method, server and computer program for security management in database

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020150040583A Division KR101563461B1 (en) 2015-03-24 2015-03-24 Method, server and computer program for security management in database

Publications (1)

Publication Number Publication Date
KR20160114492A true KR20160114492A (en) 2016-10-05

Family

ID=57153911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150131320A Withdrawn KR20160114492A (en) 2015-09-17 2015-09-17 Method, server and computer program for security management in database

Country Status (1)

Country Link
KR (1) KR20160114492A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180102483A (en) * 2017-03-07 2018-09-17 삼성전자주식회사 Solid state drive with heterogeneous nonvolatile memory types
CN113472715A (en) * 2020-03-30 2021-10-01 中国联合网络通信集团有限公司 Data transmission method and device
CN114091054A (en) * 2021-11-03 2022-02-25 深圳前海微众银行股份有限公司 A kind of bidirectional hidden data query method and device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060058546A (en) 2004-11-25 2006-05-30 펜타시큐리티시스템 주식회사 Database encryption and access control method and device
US7111005B1 (en) 2000-10-06 2006-09-19 Oracle International Corporation Method and apparatus for automatic database encryption

Patent Citations (2)

* 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
KR20060058546A (en) 2004-11-25 2006-05-30 펜타시큐리티시스템 주식회사 Database encryption and access control method and device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180102483A (en) * 2017-03-07 2018-09-17 삼성전자주식회사 Solid state drive with heterogeneous nonvolatile memory types
CN113472715A (en) * 2020-03-30 2021-10-01 中国联合网络通信集团有限公司 Data transmission method and device
CN114091054A (en) * 2021-11-03 2022-02-25 深圳前海微众银行股份有限公司 A kind of bidirectional hidden data query method and device

Similar Documents

Publication Publication Date Title
KR101563461B1 (en) Method, server and computer program for security management in database
KR101613146B1 (en) Method for encrypting database
US10873450B2 (en) Cryptographic key generation for logically sharded data stores
US8386797B1 (en) System and method for transparent disk encryption
US8639947B2 (en) Structure preserving database encryption method and system
KR100463842B1 (en) Apparatus for managing key in afile security system and method for managing security key
CN101408916B (en) A method for protecting privacy of Internet software online
CA3066678A1 (en) Processing data queries in a logically sharded data store
JP2004528615A (en) Method and apparatus for automatic database encryption
US7315859B2 (en) Method and apparatus for management of encrypted data through role separation
US11853445B2 (en) Enhanced securing and secured processing of data at rest
AU2017440029B2 (en) Cryptographic key generation for logically sharded data stores
KR101983120B1 (en) Method for replication of database
CN114756887B (en) A method and device for encrypting and storing sensitive information blocks in files
ES2996869T3 (en) Methods and system of preventing duplication of encrypted data
KR100594886B1 (en) Database security system and method
KR20160114492A (en) Method, server and computer program for security management in database
US8200964B2 (en) Method and apparatus for accessing an encrypted file system using non-local keys
US9218296B2 (en) Low-latency, low-overhead hybrid encryption scheme
US11283600B2 (en) Symmetrically encrypt a master passphrase key
US9697372B2 (en) Methods and apparatuses for securing tethered data
JP4338185B2 (en) How to encrypt / decrypt files
GB2434887A (en) Access control by encrypting stored data with a key based on a "fingerprint" of the device storing the data
Bakiras et al. Adjusting the trade-off between privacy guarantees and computational cost in secure hardware PIR
KR20190020719A (en) Method for replication of database

Legal Events

Date Code Title Description
A107 Divisional application of patent
PA0107 Divisional application

Comment text: Divisional Application of Patent

Patent event date: 20150917

Patent event code: PA01071R01D

Filing date: 20150324

Application number text: 1020150040583

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination