KR20160114492A - Method, server and computer program for security management in database - Google Patents
Method, server and computer program for security management in database Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6227—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing 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
본 발명은 데이터베이스 보안 관리에 관한 것으로서, 보다 구체적으로 암호화된 데이터베이스에 대한 인덱스를 생성하기 위한 방법, 서버 및 컴퓨터 프로그램에 대한 것이다. 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.
본 발명은 전술한 내용을 감안하여 안출된 것으로, 데이터베이스 시스템 내에서의 기밀 정보를 효율적인 방식으로 보호하면서 데이터베이스의 본질적인 기능들을 유지하기 위한 기법을 제공하기 위한 것이다.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
도 1에서 도시되는 바와 같이, 데이터베이스 서버(120)는, 예를 들어, 마이크로프로세서, 메인프레임 컴퓨터, 디지털 싱글 프로세서, 휴대용 디바이스 및 디바이스 제어기 등과 같은 임의의 타입의 컴퓨터 시스템 또는 컴퓨터 디바이스를 포함할 수 있다. 1,
클라이언트(110)는 네트워크를 통하여 통신하기 위한 매커니즘을 갖는 데이터베이스 시스템에서의 노드들을 의미할 수 있다. 예를 들어, 클라이언트(110)는 PC, 랩탑 컴퓨터, 워크스테이션, 단말 및/또는 네트워크 접속성을 갖는 임의의 전자 디바이스를 포함할 수 있다. 또한, 클라이언트(110)는 에이전트(Agent), API(Application Programming Interface) 및 플러그-인(Plug-in) 중 적어도 하나에 의해 구현되는 임의의 서버를 포함할 수도 있다.
데이터베이스 서버(120)는 DBMS(Database Management System)(130) 및 영구 저장 매체(persistent storage)(140)를 포함할 수 있다. The
도 1에서는 도시되지 않았지만, 데이터베이스 서버(120)는 버퍼 캐시를 포함하는 하나 이상의 메모리를 포함할 수 있다. 또한, 도 1에서는 도시되지 않았지만, 데이터베이스 서버(120)는 하나 이상의 프로세서를 포함할 수 있다. 따라서, DBMS(130)는 상기 메모리 상에서 상기 프로세서에 의하여 동작될 수 있다. Although not shown in FIG. 1, the
여기서, 메모리는 동적 램(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)(140)는, 예를 들어 자기(magnetic) 디스크, 광학(optical) 디스크 및 광자기(magneto-optical) 저장 디바이스뿐만 아니라 플래시 메모리 및/또는 배터리-백업 메모리에 기초한 저장 디바이스와 같은, 임의의 데이터를 지속적으로 할 수 있는 비-휘발성(non-volatile) 저장 매체를 의미한다. 이러한 영구 저장 매체(140)는 다양한 통신 수단을 통하여 데이터베이스 서버(120)의 프로세서 및 메모리와 통신할 수 있다. 추가적인 실시예에서, 이러한 영구 저장 매체(140)는 데이터베이스 서버(120) 외부에 위치하여 데이터베이스 서버(120)와 통신가능할 수도 있다.
DBMS(130)는 데이터베이스 서버(120)에서 필요한 데이터를 검색, 삽입, 수정 및/또는 삭제 등과 같은 동작들을 수행하는 것을 허용하기 위한 프로그램으로서, 전술한 바와 같이, 데이터베이스 서버(120)의 메모리에서 프로세서에 의하여 구현될 수 있다. The
클라이언트(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
또한, 본 명세서에서 제시되는 네트워크는 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
도 2에서 도시되는 바와 같이, 데이터베이스 서버(120)는 영구 저장 매체(persistent storage)(140) 및 DBMS(130)를 포함할 수 있다. 전술한 바와 같이, DBMS(130)는 데이터베이스 서버(120) 내의 하나 이상의 메모리 및 하나 이상의 프로세서에 의하여 동작될 수 있다.2, the
DBMS(130)는 송수신 모듈(210), 인덱스 관리 모듈(220), 데이터 관리 모듈(230), 암호화 모듈(240) 및 복호화 모듈(250)을 포함할 수 있다. 도 2에서 도시되는 DBMS(130) 내의 각각의 모듈들은 서로 통신가능하다. 이러한 DBMS(130)의 모듈들은 예시적인 것으로서, 구현에 따라 추가적인 모듈들이 포함될 수 있거나 상기 모듈들 중 일부가 생략될 수도 있다.The
송수신 모듈(210)은 사용자로부터의 데이터 저장, 조회 및 인덱스 빌드, 조회 요청 등을 수신할 수 있다. 또한, 송수신 모듈(210)은 데이터 저장, 조회 및 인덱스 빌드, 조회 요청에 대한 결과 정보를 전달할 수도 있다.The transmission /
인덱스 관리 모듈(220)은 인덱스 빌드, 업데이트, 저장 및 조회와 관련된 요청을 처리 및 관리할 수 있다. 인덱스 관리 모듈(220)은 빌드 모듈(260) 및 스캔 모듈(270)을 포함할 수 있다. 빌드 모듈(260)은 인덱스의 빌드 및/또는 빌드된 인덱스의 업데이트와 관련된 동작들을 수행할 수 있다. 스캔 모듈(270)은 복호화된 인덱스 테이블에 대한 인덱스 스캔을 수행할 수 있다. The
데이터 관리 모듈(230)은 데이터의 저장 및 조회와 관련된 요청을 처리 및 관리할 수 있다. 이러한 데이터 관리 모듈(230)은 저장 모듈(280) 및 조회 모듈(290)을 포함할 수 있다. 저장 모듈(280)은 데이터의 저장(업데이트 포함)과 관련된 요청을 처리 및 관리할 수 있다. The
이러한 저장 모듈(280)은 데이터가 저장될 컬럼이 암호화 지정된 컬럼인지 여부 그리고 데이터가 저장될 컬럼이 인덱스 설정된 컬럼인지 여부 등을 판단할 수 있다. 나아가, 저장 모듈(280)은 데이터 및 인덱스 테이블 등을 저장할 것을 결정할 수 있다. 또한, 저장 모듈(280)은 암호화된 데이터 및/또는 암호화된 인덱스 테이블에 대한 저장 위치를 결정할 수 있다. 예를 들어, 저장 모듈(280)은 암호화된 데이터에 대하여 데이터 테이블 상에서의 저장 위치를 결정할 수 있다. 다른 예시로, 저장 모듈(280)은 암호화된 데이터에 대하여 영구 저장 매체(140) 상의 저장 위치를 결정할 수 있다. The
조회 모듈(290)은 데이터의 조회(판독)과 관련된 요청을 처리 및 관리할 수 있다. 조회 모듈(290)은 스캔 모듈(270)과 통신하여 인덱스 스캔에 따라 획득된 컬럼 키(column key) 및 로우 아이디(rowid)에 기초하여 해당 데이터(들)의 값을 조회할 수 있다.The
암호화 모듈(240)은 데이터를 영구저장매체(140)에 기록(저장)하기 전에 데이터에 대한 암호화(encryption)를 수행할 수 있다. 암호화 모듈(240)은 평문 데이터(plain text)를 기초로 하여 암호화된 데이터(cipher text)를 생성할 수 있다. 본 명세서에서의 데이터에 대한 암호화 방식은, 컬럼 레벨 암호화 및 블록 레벨 암호화(예컨대, 테이블스페이스(tablespace)) 레벨 암호화를 포함할 수 있다. 컬럼 레벨 암호화는 암호화되도록 지정된 컬럼의 데이터가 암호화된다는 것을 의미한다. 블록 레벨의 암호화는, 블록 단위로 데이터에 대한 암호화가 구현된다는 것으로서, 예를 들어 OS 시스템 상에서 생성되는 물리적 데이터 파일들이 블록 단위로 암호화된다는 것을 의미한다. 본 발명의 일 양상에서, 저장될 데이터에 대해서는 컬럼 레벨 암호화가 수행되고, 저장될 인덱스에 대해서는 블록 레벨 암호화가 수행될 수 있다. 본 발명의 추가적인 양상에서, 블록 레벨 암호화는 블록 단위 또는 그 이상(파일, 세그먼트 및 테이블 스페이스 등)의 단위로 암호화가 구현되는 것을 의미할 수도 있다.The
본 발명의 추가적인 양상에서, 암호화 모듈(240)은 암호화된 데이터에 암호비교코드(예컨대, 해시 함수)를 맵핑시켜 영구저장매체(140)에 저장할 수 있다. 따라서, 영구저장매체(140)에는 암호비교코드 및 암호화된 데이터가 기록되어, 암호비교코드를 통하여 복호화 모듈(250)이 복호화한 데이터에 대한 무결성이 검증될 수 있다.In a further aspect of the present invention, the
본 발명의 일 양상에서, 데이터(예컨대, 암호화된 데이터)를 영구저장매체(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
본 발명의 일 양상에서, 암호화 모듈(240)은 DBMS(120)의 프론트엔드(frontend) 계층 및 백엔드(backend) 계층 전반에 걸쳐서 위치할 수 있다. 또한, 본 발명의 추가적인 양상에서, 복호화 모듈(250)은 DBMS(120)의 백엔드 계층에 위치할 수 있다.In one aspect of the present invention, the
복호화(decryption) 모듈(250)은 암호화된 데이터를 복호화하여 평문 데이터에 대응되는 복호화된 데이터(decipher text)를 생성할 수 있다. 추가적으로, 복호화 모듈(250)은 복호화된 데이터가 평문 데이터와 동일한지 여부를 판단할 수도 있다(즉, 무결성 검증).The
복호화 모듈(250)은 영구저장매체(140)에 암호화되어 기록된 데이터가 메모리로 로딩되는 경우, 로딩된 데이터에 대한 복호화를 수행할 수 있다. 복호화 모듈(250)은 암호화 모듈(240)의 암호화 방식에 대응하여, 해당 데이터를 복호화할 수 있다. 또한, 복호화 모듈(250)은 암호화되어 기록된 데이터에 메모리에 상주되어 있는 경우, 해당 데이터에 대한 복호화 또한 수행할 수 있다. The
본 명세서에서의 컬럼 레벨 암호화는 컬럼 단위로 제 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
본 발명의 추가적인 양상에서, 암호화 모듈(240)은 데이터 값(plain text 값)에 기초하여 암호화된 데이터 값을 생성할 수 있다. 암호화 모듈(240)은 암호화 키에 포함된 암호화 정보에 기초하여, 암호화 함수를 결정하고, 상기 데이터 값에 기초하여 연산하는 암호화 함수를 이용하여 암호화된 데이터 값을 생성할 수 있다. In a further aspect of the invention, the
상기 암호화 키는 적어도 암호화 모드에 관련한 정보, 암호화 데이터 타입 및 데이터의 길이 정보 등을 포함할 수 있다. 상기 암호화 모드는 예를 들어, 전술한 바와 같은 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
암호화된 데이터는 하나 이상의 데이터의 값 및 상기 데이터의 값이 저장될 영구 저장 매체(140) 상의 위치 정보에 적어도 부분적으로 기초하여 생성된 암호비교코드와 함께 상기 영구 저장 매체(140)에 저장될 수 있다. 즉, 이러한 암호비교코드는 복호문(decrypted text)의 무결성(Integrity)을 검증하기 위하여 사용될 수 있다. 이러한 암호비교코드는 예를 들어, SHA(secure hash algorithm) 계, MD5등의 해시 알고리즘을 이용하여 생성된 해시 값을 포함할 수 있다. The encrypted data may be stored in the
본 발명의 추가적인 양상에서, 해시 알고리즘은 데이터 테이블의 데이터 값 및 상기 데이터 값의 위치 정보(예컨대, 영구 저장 장치 내에서의 위치 정보) 저장 위치 정보에 적어도 부분적으로 기초하여, 암호화된 데이터 값에 매칭되는 해시 값을 생성할 수 있다. 여기서 상기 위치 정보는 로우 식별자(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
도 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
도 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
저장 모듈(280)은 사전설정된(예컨대, 클라이언트의 설정) 스키마(schema)에 따라서, 데이터가 저장될 테이블의 해당 컬럼이 암호화 지정된 컬럼인지 여부를 결정할 수 있다(315). 또한, 사전설정된 스키마에 따라서 저장 모듈(280)은 데이터가 저장될 테이블의 해당 컬럼이 인덱스 설정된 컬럼인지 여부를 결정할 수 있다(320). 본 발명의 일 양상에서, 상기 단계 315 및 320은 독립적으로 수행될 수 있거나 또는 어토믹(atomic)하게 수행될 수 있다. 데이터가 저장될 테이블의 해당 컬럼이 암호화 지정된 컬럼이고 그리고 인덱스 설정된 컬럼인 경우, 저장 모듈(280)은 해당 데이터를 영구저장매체(140)에 저장할 것을 결정하고 그리고 암호화 모듈(240)로 해당 데이터에 대한 암호화 요청을 전달할 수 있다(325).The
암호화 모듈(240)은 사전결정된 암호화 알고리즘에 기초하여 해당 데이터에 대한 컬럼 레벨 암호화를 수행할 수 있다(330). 전술한 바와 같이, 컬럼 레벨 암호화는 해당 컬럼(즉, 암호화 지정된 컬럼)에 속하는 임의의 데이터에 대한 값을 암호한다는 의미이다. 예를 들어, 암호화 지정된 컬럼 내의 특정한 데이터에 대한 값은 "%$!G#&"과 같은 형태로 암호화될 수 있다. The
암호화 모듈(240)은 암호화가 완료된 이후에 암호화된 데이터에 대한 영구저장매체(140)로의 저장 요청을 전달할 수 있다(340). 예를 들어, 이러한 저장 요청 및 암호화된 데이터는 데이터베이스 서버(120)의 메모리의 버퍼 캐시에 저장될 수 있다. 그리고나서, 예를 들어, 백그라운드 프로세스에 의해서 컬럼 레벨로 암호화된 데이터는 영구저장매체(140)의 데이터 세그먼트로 저장될 수 있다. 따라서, 전술한 프로세스를 통하여, 데이터에 대한 기록(업데이트 포함) 요청에 응답하여, 클라이언트에 대하여 투명한 방식으로 암호화된 데이터가 영구저장매체(140)에 기록될 수 있다(350).The
데이터에 대한 인덱스의 빌드와 관련하여, 도 3을 참조하면, 암호화 모듈(240)은 암호화된 데이터에 대한 복호화 요청을 복호화 모듈(250)로 전달할 수 있다(335). 일례로, 상기 단계 330에서의 데이터의 암호화는 데이터베이스 서버(120)의 프론트엔드(frontend)에서 수행될 수 있다. 따라서, 인덱스 빌드는 데이터베이스 서버(120)의 백엔드(backend)에서 수행되기 때문에, 인덱스의 빌드 프로세스를 수행하기 위해서는 선결적으로 암호화된 데이터를 복호화하여야 할 것이다. Referring to FIG. 3, in connection with building an index for data, the
본 발명의 일 양상에서, 복호화 모듈(250)은 암호화 모듈(240)로부터의 컬럼 레벨로 암호화된 데이터에 대한 암호화 정보를 기초로 하여, 해당 데이터에 대한 컬럼 레벨의 복호화를 수행할 수 있다(345). 즉, 복호화 모듈(250)은 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다. In one aspect of the present invention, the
전술한 바와 같이, 예를 들어, 인덱스의 빌드(예컨대, 인서트 데이터)의 경우, 복호화 모듈(250)은 영구저장매체(140)에 암호화된 데이터가 기록되기 전에 암호화 모듈(240)에 의한 암호화 데이터에 관한 정보를 메모리로부터 판독할 수 있기 때문에, 복호화 모듈(250)은 메모리로부터 획득된 암호화된 데이터에 대한 복호화를 수행할 수 있다. 다른 예시로, 인덱스의 업데이트의 경우에는 복호화 모듈(250)은 암호화된 데이터를 영구저장매체(140)로부터 획득함으로써 상기 암호화된 데이터에 대한 복호화를 수행할 수 있다. 암호화/복호화 방식은 도 2에서 설명된 암호화/복호화 방식에 기초하여 수행될 수 있다.As described above, for example, in the case of an index build (e.g., insert data), the
도 3으로 되돌아 가면, 복호화 모듈(250)은 복호화된 데이터에 대한 인덱스 빌드 요청을 빌드 모듈(260)로 전달할 수 있다(355). Referring back to FIG. 3, the
빌드 모듈(260)은 복호화된 데이터를 기초로 하여 인덱스 테이블을 생성할 수 있다(360). 본 발명의 일 양상에서, 빌드 모듈(260)은, 하나 이상의 복호화된 데이터가 저장될 컬럼에 대한 크기(size) 속성에 적어도 부분적으로 기초하여, 인덱스 테이블을 생성할 수 있다. 또한, 상기 빌드 모듈(260)은, B-트리(Balanced Tree) 인덱스 기법, 비트맵(Bitmap) 인덱스 기법 및 함수 기반 인덱스(FBI:Function Based Index) 기법 중 적어도 하나에 기초하여 인덱스 테이블 빌드를 수행할 수 있다.The
본 발명의 일 양상에서, 빌드 모듈(260)은 인덱스 빌드가 완료된 이후에 빌드된 인덱스 테이블에 대한 암호화 요청을 암호화 모듈(240)로 전달할 수 있다(365). In one aspect of the present invention, the
암호화 모듈(240)은 빌드된 인덱스 테이블에 대하여 블록 레벨(예컨대, 테이블스페이스 레벨) 암호화를 수행할 수 있다(370). 그리고나서, 암호화 모듈(240)은 블록 레벨로 암호화된 인덱스 테이블에 대한 디스크 저장 요청을 전달할 수 있다(375). 그리고나서, 예컨대 백그라운드 프로세스에 의하여 블록 레벨로 암호화된 인덱스 테이블은 영구저장매체(140)의 인덱스 세그먼트로 저장될 수 있다. 따라서, 전술한 방식을 통하여, 인덱스 레인지 스캔이 허용될 수 있는 암호화된 인덱스 테이블이 빌드될 수 있다.The
본 발명의 추가적인 실시예에서, 데이터 업데이트 요청이 수신되는 경우, 데이터베이스 서버(120)는 이하에서 도 4와 관련하여 후술될 인덱스 스캔 및/도는 인덱스 조회 프로세스를 수행한 이후에 도 3에서 도시되는 인덱스 빌드 프로세스를 통하여 데이터 업데이트 및 인덱스 업데이트를 구현할 수 있다.
In a further embodiment of the present invention, when a data update request is received, the
도 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
도 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
스캔 모듈(210)은 인덱스 조회 요청에 대한 프로세싱을 수행할 수 있다. 또한, 스캔 모듈(270)은 암호화된 인덱스 테이블이 영구저장매체(140)로부터 메모리로 로딩될 수 있도록 인덱스 스캔 요청을 전달할 수 있다(415). 이러한 인덱스 스캔 요청의 전달은 하나의 프로세스로 통합될 수도 있다.The
인덱스 스캔 요청에 응답하여, 영구저장매체(140)로부터 복호화 모듈(250)로 블록 레벨로 암호화된 인덱스 테이블이 로딩될 수 있다(420). 이러한 암호화된 인덱스 테이블의 로딩은 영구저장매체(140)로부터 블록 단위로 로딩될 수 있다. In response to the index scan request, the index table encrypted at block level from the
복호화 모듈(250)은 블록 레벨로 암호화된 인덱스 테이블을 복호화하여, 복호화된 인덱스 테이블을 생성할 수 있다(425). 복호화 모듈(250)은 복호화된 인덱스 테이블을 스캔 모듈(270)로 전달할 수 있다. The
스캔 모듈(270)은 복호화된 인덱스 테이블에 대한 인덱스 스캔을 수행할 수 있다(435). 본 명세서에서의 인덱스 스캔이란, 인덱스에 대한 컬럼 키(column key) 및/또는 로우 ID(rowid)를 찾기 위하여 인덱스에 대한 스캔을 수행하는 프로세스를 의미할 수 있다. 또한, 본 명세서에서의 인덱스 조회란, 스캔된 인덱스에서의 컬럼의 rowid에 대응되는 데이터의 값(즉, 레코드)을 찾는 프로세스를 의미할 수 있다. The
스캔 모듈(270)은 인덱스 스캔 결과를 조회 모듈(290)로 전달할 수 있다(440). 그리고나서, 조회 모듈(290)은 인덱스 스캔 결과 값(즉, 컬럼 키 및 로우 ID)에 따른 데이터 값 조회 요청을 생성 및 전달할 수 있다(445).The
이러한 경우, 영구저장매체(140)로부터 컬럼 레벨로 암호화된 데이터가 로딩될 수 있다(450). 복호화 모듈(250)은 컬럼 레벨로 암호화된 데이터를 복호화할 수 있다(455). 이렇게 복호화된 데이터는 조회 모듈(290)로 전달될 수 있다(460). 또한, 조회 모듈(290)은 인덱스 조회에 대한 결과값을 생성하여 이를 송수신 모듈(210)로 전달할 수 있다.In this case, data encrypted at the column level from the
본 발명의 추가적인 양상에서, 인덱스 업데이트에 대한 프로세스의 경우, 앞서 설명된 바와 같이, 인덱스 스캔 프로세스(예컨대, 단계 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
본 발명의 추가적인 양상에서, 만약 인덱스된 테이블이 암호화된 컬럼을 전부 포함하는 경우에는, 블록 레벨로 암호화된 인덱스 테이블을 복호화함으로써 인덱스 스캔 및 인덱스 조회가 완료될 수도 있다.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
도 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
조회 모듈(290)은 조회 요청을 프로세싱하여, 영구저장매체(140)로부터 조회 요청에 대응되는 암호화된 데이터가 로딩될 수 있도록 데이터 조회 요청을 전달할 수 있다(530). The
그리고나서, 조회 요청에 대응되는, 컬럼 레벨로 암호화된 데이터가 로딩될 수 있다(540). 복호화 모듈(250)은 컬럼 레벨로 암호화된 데이터를 복호화하여 복호화된 데이터를 생성할 수 있다(550). 복호화 모듈(250)은 복호화된 데이터를 조회 모듈(290)로 전달할 수 있다(560).The column-level encrypted data corresponding to the inquiry request may then be loaded (540). The
조회 모듈(290)은 복호화된 데이터를 프로세싱하여(또는 프로세싱 없이), 데이터 조회 결과값을 생성한 후 데이터 조회 결과값을 송수신 모듈(210)로 전달할 수 있다(570).
The
도 6은 본 발명의 일 실시예에 따라 데이터 및 인덱스가 영구저장매체(140)에서 암호화되어 저장되는 암호화 방식을 예시적으로 도시한다.6 illustrates an exemplary encryption scheme in which data and indexes are encrypted and stored in the
도 6에서 도시되는 바와 같이, 영구 저장 매체(140)는 데이터 세그먼트(또는 테이블 세그먼트)(610) 및 인덱스 세그먼트(620)를 포함할 수 있다. 여기서, 데이터 세그먼트는 데이터 테이블이 저장될 수 있는 영역이며, 인덱스 세그먼트는 인덱스 테이블이 저장될 수 있는 영역이다. 즉, 오브젝트가 (데이터) 테이블인지 인덱스인지에 따라서 영구 저장 매체(140)의 상이한 영역이 할당될 수 있다.As shown in FIG. 6, the
본 발명의 일 양상에 따라서, 인덱스 테이블에 대해서는 블록 레벨 암호화가 수행되며 데이터 테이블에 대해서는 컬럼 레벨 암호화가 수행될 수 있다. 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
데이터 세그먼트(610)에는 컬럼 단위의 암호화가 적용된 데이터가 저장되기 때문에, 성명 및 생년월일에 대한 컬럼에 대해서는 암호화되지 않고 신용카드번호에 대한 컬럼에 대해서만 암호화가 이루어질 수 있다. 또한, 인덱스 세그먼트(620)에는 블록 단위의 암호화가 적용된 인덱스 테이블이 저장되기 때문에, 도 6에서 도시되는 바와 같이, 인덱스 테이블 전체가 암호화되어 저장될 수 있다.
Since the
도 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
도 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
그리고나서, 데이터베이스 서버(120)는 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다(720). 이는 인덱스 테이블을 생성하는데 있어서, 암호화된 데이터를 기초로 하여 인덱스 테이블을 생성하는 경우, 인덱스 레인지 스캔이 불가능해지기 때문이다. 즉, 인덱스 레인지 스캔을 허용함과 동시에 인덱스에 대한 보안을 유지하기 위해서, 인덱스 테이블의 생성은 복호화된 데이터(즉, 평문 데이터)를 기초로 수행될 수 있다(730).The
도 7에서 도시되는 바와 같이, 데이터베이스 서버(120)는 생성된 인덱스 테이블을 블록 레벨로 암호화할 수 있다(740). 즉, 복호화된 데이터를 기초로 하여 인덱스 테이블을 생성하였기 때문에, 해당 인덱스 테이블에 대한 보안을 유지하기 위해서 인덱스 테이블에 대해서는 블록 레벨로 암호화가 이루어질 수 있다.As shown in FIG. 7, the
그리고나서, 데이터베이스 서버(120)는 암호화된 인덱스 테이블을 영구 저장 매체(140)에 저장할 수 있다(750).The
즉, 본 발명의 일 양상에 따른 암호화 기법의 경우, 데이터 테이블 및 인덱스 테이블을 모두 테이블 스페이스 레벨로 암호화한 기법과 비교했을 때, 보다 적은 양을 암호화하게 된다(결국 속도도 빨라짐). 더불어, 본 발명의 일 양상에 따른 암호화/복호화 기법의 경우, 데이터 테이블에 대해서 컬럼 단위로 암호화하는 기법(인덱스 테이블에 대해서는 별도의 암호화를 하지 않음)과 비교했을 때, 인덱스 레인지 스캔이 가능하다는 장점을 가지게 된다. 나아가, 본 발명의 일 양상에 따른 암호화/복호화 기법의 경우 인덱스 테이블을 블록 레벨로 암호화하기 때문에, 인덱스 테이블로 저장된 컬럼에 대한 크기(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
도 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
데이터베이스 서버(120)는 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔을 수행할 수 있다(830). 즉, 복호화된 인덱스 테이블을 기초로 하여 인덱스 스캔이 수행되기 때문에, 암호화되지 않은 데이터에 따른 인덱스 테이블이 획득될 수 있다. 따라서, 데이터베이스 서버(120)는 인덱스 스캔에 따른 결과(예컨대, 컬럼 키 및 로우 ID)를 획득할 수 있다.The
데이터베이스 서버(120)는 인덱스 스캔에 따른 결과와 대응될 수 있는, 컬럼 레벨로 암호화된 하나 이상의 데이터를 영구 저장 매체로부터 리트리브할 수 있다(840). 그리고나서, 데이터베이스 서버(120)는 컬럼 레벨로 암호화된 하나 이상의 데이터를 복호화하여 하나 이상의 복호화된 데이터를 생성할 수 있다(850). 따라서, 이러한 복호화된 데이터의 값(레코드)을 판독함으로써, 인덱스 조회 요청에 대한 결과 값이 생성될 수 있다.The
따라서, 전술한 암호화/복호화 방식(즉, 컬럼 레벨 암호화와 블록 레벨 암호화의 조합)은 인덱스 레인지 스캔을 허용하면서 데이터에 대한 효율적인 보호를 가능케할 수 있다. 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.
상기 블록 레벨로 암호화된 인덱스 테이블을 상기 영구 저장 매체에 저장하는 단계;
를 더 포함하는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.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.
상기 생성된 인덱스 테이블을 블록 레벨로 암호화 하는 동작은,
백그라운드 프로세스(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.
상기 하나 이상의 데이터를 컬럼 레벨로 암호화하여 저장하는 단계를 더 포함하며,
상기 하나 이상의 데이터를 컬럼 레벨로 암호화하여 저장하는 단계는,
컬럼 레벨로 암호화된 상기 하나 이상의 데이터를 상기 영구 저장 매체의 데이터 세그먼트에 저장하는 단계;
를 포함하는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.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.
상기 컬럼 레벨 암호화는 컬럼 단위로 제 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.
상기 제 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.
상기 제 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.
상기 블록 레벨로 암호화된 인덱스 테이블을 상기 영구 저장 매체의 인덱스 세그먼트로 저장하는 단계;
를 더 포함하는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.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.
상기 인덱스 테이블을 생성하는 단계는,
상기 하나 이상의 복호화된 데이터가 저장될 컬럼에 대한 크기(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.
상기 인덱스 테이블을 생성하는 단계는,
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.
상기 암호화 및 복호화는,
상기 데이터베이스 서버의 클라이언트에게 투명하게 자동적으로 수행되는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.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.
상기 컬럼 레벨로 암호화된 하나 이상의 데이터는,
상기 하나 이상의 데이터의 값 및 상기 데이터의 값이 저장될 위치 정보에 적어도 부분적으로 기초하여 생성된 암호비교코드와 함께 상기 영구 저장 매체에 저장되는,
컴퓨터-판독가능 매체에 저장된 데이터베이스 보안 관리 프로그램.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.
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)
| 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)
| 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 |
-
2015
- 2015-09-17 KR KR1020150131320A patent/KR20160114492A/en not_active Withdrawn
Patent Citations (2)
| 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)
| 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 |