KR20080096054A - Method for writing data by encryption and reading the data thereof - Google Patents

Method for writing data by encryption and reading the data thereof Download PDF

Info

Publication number
KR20080096054A
KR20080096054A KR1020070040941A KR20070040941A KR20080096054A KR 20080096054 A KR20080096054 A KR 20080096054A KR 1020070040941 A KR1020070040941 A KR 1020070040941A KR 20070040941 A KR20070040941 A KR 20070040941A KR 20080096054 A KR20080096054 A KR 20080096054A
Authority
KR
South Korea
Prior art keywords
data
software
key
reading
execution
Prior art date
Application number
KR1020070040941A
Other languages
Korean (ko)
Other versions
KR101405915B1 (en
Inventor
이충훈
야오준
유용국
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020070040941A priority Critical patent/KR101405915B1/en
Publication of KR20080096054A publication Critical patent/KR20080096054A/en
Application granted granted Critical
Publication of KR101405915B1 publication Critical patent/KR101405915B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; 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
    • GPHYSICS
    • G06COMPUTING; 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/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself

Abstract

A method for reading/writing encrypted data is provided to enhance the data security using execution code of operating software by restricting data access only when the same software is operating. An encrypted key is generated using an operation code for decoding which is different from an operation code of pre stored operation code, or a code loaded on the memory before software for accessing data is operated(110). Data is encrypted using the encrypted key(120). The encrypted data is stored(130).

Description

데이터의 암호화 저장 방법 및 암호화된 데이터의 판독 방법{Method for writing data by encryption and reading the data thereof}Method for writing data by encryption and reading the data

도 1은 본 발명의 일 실시예에 따른, 데이터를 암호화하여 저장하는 데이터의 저장 방법을 설명하기 위한 플로우 차트이다.1 is a flowchart illustrating a data storage method of encrypting and storing data according to an embodiment of the present invention.

도 2는 본 발명의 다른 실시예에 따른, 암호화된 데이터를 복호화하여 판독하는 데이터의 판독 방법을 설명하기 위한 플로우 차트이다.2 is a flowchart illustrating a data reading method for decrypting and reading encrypted data according to another embodiment of the present invention.

도 3a 및 도 3b는 데이터를 암호화/복호화하기 위한 키를 생성하는 방법을 나타내기 위한 도면이다.3A and 3B are diagrams illustrating a method of generating a key for encrypting / decrypting data.

도 4는 소프트웨어의 실행코드를 이용하여 키를 생성하는 방법을 나타내기 위한 도면이다.4 is a diagram illustrating a method of generating a key using executable code of software.

도 5는 본 발명의 일 실시예에 따른, 데이터의 저장 방법을 설명하기 위한 기능 블록도이다.5 is a functional block diagram illustrating a data storage method according to an embodiment of the present invention.

도 6는 본 발명의 다른 실시예에 따른, 데이터의 판독 방법을 설명하기 위한 기능 블록도이다.6 is a functional block diagram illustrating a method of reading data according to another embodiment of the present invention.

본 발명은 데이터의 암호화 저장 방법 및 암호화된 데이터의 판독 방법에 관한 것으로, 보다 구체적으로는 소프트웨어가 데이터를 저장/판독할 때, 소프트웨어의 실행코드를 이용하여 생성된 키를 이용하여 암호화/복호화함으로써, 실행중인 소프트웨어가 변형된 경우에 해당 데이터를 판독할 수 없도록 하는 데이터의 저장 및 판독 방법에 관한 것이다.The present invention relates to a method of encrypting and storing data and a method of reading encrypted data, and more particularly, when the software stores / reads data, the encryption / decryption is performed by using a key generated using the executable code of the software. In addition, the present invention relates to a method of storing and reading data that makes it impossible to read the data when the running software is modified.

컨텐츠의 데이터 보호시스템에서는, 권한이 없는 소프트웨어가 비밀 데이터(secret data)에 접근할 수 없어야 하며, 권한이 있는 소프트웨어도 변형 또는 해킹되지 않은 올바른 소프트웨어일 것이 요구된다. In a data protection system for content, unauthorized software must not have access to secret data, and authorized software is also required to be correct software that is not modified or hacked.

예를 들어, 컨텐츠 보호 시스템의 일종인 DRM 시스템(Digital Rights Management System)에서, 라이센스(license)는 컨텐츠를 사용하기 위하여 보안상 매우 중요한 데이터이다. 이 경우 특정 DRM 시스템에서는 암호화된 컨텐츠를 복호화하기 위한 키 정보를 포함하고 있기 때문에, 라이센스에 접근할 수 있는 소프트웨어는 액세스 권한이 있는 올바른 소프트웨어이어야 할 뿐만 아니라, 권한이 있는 소프트웨어라도 변형 및 해킹이 되지 않았다는 것이 보장되어야 한다. 이러한 소프트웨어는 보통 설치 및 실행 이전에 디지털 서명(digital signature) 등을 통하여 변형되었는지 아닌지를 검사를 하는 과정을 거치지만, 여전히 해당 소프트웨어가 실행 도중에 변형된 경우에는 문제가 될 수 있다.For example, in a digital rights management system (DRM) system, which is a kind of content protection system, license is very important data for security in order to use the content. In this case, since certain DRM systems contain key information for decrypting the encrypted content, the software that can access the license must not only be the correct software with access rights, but even the authorized software can not be modified and hacked. It shall be guaranteed. Such software is usually tested before installation and execution by using a digital signature or the like, but it can still be a problem if the software is modified during execution.

따라서, 본 발명은 상기와 같은 문제점을 해결하기 위하여 고안된 것으로, 본 발명이 이루고자 하는 기술적 과제는 데이터의 저장 및 판독시, 서로 다른 시점 에서의 소프트웨어의 실행코드를 이용하여 생성된 키를 이용하여 데이터를 암호화 및 복호화함으로써, 실행중인 소프트웨어가 변형된 경우에 해당 데이터를 판독할 수 없도록 하는 데이터의 저장 및 판독 방법을 제공하는 것이다.Accordingly, the present invention has been devised to solve the above problems, and the technical problem to be achieved by the present invention is that data is stored using a key generated by using executable code of software at different points in time when storing and reading data. The present invention provides a method of storing and reading data by encrypting and decrypting the data so that the data cannot be read when the running software is modified.

상기 기술적 과제는 본 발명에 따라, 소프트웨어가 시스템에 데이터의 저장 및 판독을 요청할 때 시스템은 데이터를 암호화하여 저장하고, 복호화하여 소프트웨어에게 전달하되, 소프트웨어 저장부에 저장된 해당 소프트웨어의 실행코드를 이용하여 생성된 키와 메모리상에서 실행중인 해당 소프트웨어의 실행코드를 이용하여 생성된 키를 각각 암호화 과정과 복호화 과정에서 상호 배반적으로 이용하는 것을 특징으로 하는 데이터의 저장 및 판독 방법에 의해 달성된다. According to the present invention, when the software requests the system to store and read data, the system encrypts the data, stores the data, and decrypts the data to the software, using the executable code of the software stored in the software storage unit. The key generated using the generated key and the execution code of the corresponding software running on the memory is achieved by a method of storing and reading data, characterized in that each of the keys in the encryption process and the decryption process.

예를 들어, 소프트웨어가 시스템에 데이터의 저장을 요청하면 시스템은 저장부에 저장되어있는 해당 소프트웨어의 실행코드를 이용하여 생성된 키를 사용하여 데이터를 암호화한 후 저장하고, 소프트웨어가 데이터의 판독을 요청하면 시스템은 메모리상에서 실행되는 해당 소프트웨어의 실행코드를 이용하여 생성된 키를 사용하여 데이터를 복호화하여 소프트웨어에게 전달한다. 또는 그 반대로, 소프트웨어가 데이터의 저장을 요청하면 시스템은 메모리상에서 실행되는 해당 소프트웨어의 실행코드를 이용하여 생성된 키를 사용하여 데이터를 암호화하여 저장하고, 소프트웨어가 데이터의 판독을 요청하면, 시스템은 저장소에 저장되어있는 해당 소프트웨어의 실행코드를 이용하여 생성된 키를 사용하여 데이터를 복호화한 후 소프트웨어에게 전달한다.For example, if the software requests the system to store the data, the system encrypts the data using a key generated using the executable code of the software stored in the storage and stores the data. The software reads the data. Upon request, the system decrypts the data using the key generated using the executable code of the software running on the memory and delivers it to the software. Or vice versa, when the software requests the storage of data, the system encrypts and stores the data using a key generated using the executable code of the software running on the memory, and when the software requests reading of the data, the system Decrypt the data using the key generated using the executable code of the software stored in the repository and deliver it to the software.

상기 방법에 따르면, 데이터를 저장/판독할 시 소프트웨어가 실행도중 변형되었다면, 실행코드를 이용하여 생성된 두 개의 키가 서로 다르게 되어, 데이터를 암호화할 때와 복호화할 때 각각 서로 다른 키를 적용하게 되므로, 소프트웨어는 저장한 데이터를 올바로 판독할 수 없게 된다. 반대로, 소프트웨어가 실행도중 변형되지 않았다면, 두 개의 키가 동일하므로 데이터를 올바로 판독할 수 있게 된다.According to the above method, if the software is modified during execution when storing / reading data, the two keys generated using the execution code are different, so that different keys are applied when encrypting and decrypting the data. As a result, the software cannot read the stored data correctly. Conversely, if the software has not been modified during execution, the two keys are identical so that the data can be read correctly.

상기 기술적 과제는 본 발명에 따라, 데이터를 암호화하여 저장하는 데이터의 저장 방법에 있어서, 상기 데이터를 액세스하는 소프트웨어가 실행되기 전에 소정의 저장부에 기저장된 실행코드 또는 상기 소프트웨어가 실행되어 메모리에 로드된 실행코드 중, 상기 데이터의 복호화시에 복호화 키를 생성하기 위해 사용될 실행코드와 다른 실행코드를 이용하여 암호화 키를 생성하는 단계와; 상기 생성된 암호화 키를 이용하여 상기 데이터를 암호화하는 단계와; 상기 암호화된 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 데이터의 저장 방법에 의해 달성된다.According to the present invention, according to the present invention, in a data storage method for encrypting and storing data, execution code previously stored in a predetermined storage unit or the software is executed and loaded into a memory before the software for accessing the data is executed. Generating an encryption key using executable code different from the executable code to be used to generate a decryption key when decrypting the data; Encrypting the data using the generated encryption key; And storing the encrypted data.

상기 암호화 키를 생성하는 단계는, 상기 소프트웨어의 실행 코드를 해쉬 함수에 적용하여 생성된 해쉬값을 이용하여 상기 암호화 키를 생성하는 것이 바람직하다.The generating of the encryption key may include generating the encryption key using a hash value generated by applying the executable code of the software to a hash function.

또한 상기 기술적 과제는 암호화된 데이터를 복호화하여 판독하는 데이터의 판독 방법에 있어서, 상기 암호화된 데이터를 액세스하는 소프트웨어가 실행되기 전에 소정의 저장부에 기저장된 실행코드 또는 상기 소프트웨어가 실행되어 메모리에 로드된 실행코드 중, 상기 데이터의 암호화시에 암호화 키를 생성하기 위해 사용된 실행코드와 다른 실행코드를 이용하여 복호화 키를 생성하는 단계와; 상기 생 성된 복호화 키를 이용하여 상기 암호화된 데이터를 복호화하는 단계와; 상기 복호화된 데이터를 판독하는 단계를 포함하는 것을 특징으로 하는 데이터의 판독 방법에 의해서도 달성된다.In addition, the technical problem is a data reading method for decrypting and reading encrypted data, the execution code previously stored in a predetermined storage unit or the software is executed and loaded into a memory before the software for accessing the encrypted data is executed Generating a decryption key using executable code different from the executable code used to generate an encryption key in encrypting the data among the executed executable codes; Decrypting the encrypted data using the generated decryption key; It is also achieved by a data reading method comprising the step of reading the decrypted data.

상기 암호화된 데이터를 복호화하는 단계는, 상기 소프트웨어의 실행 코드를 해쉬 함수에 적용하여 생성된 해쉬값을 이용하여 상기 암호화 키를 생성하는 것이 바람직하다.In the decrypting of the encrypted data, it is preferable to generate the encryption key using a hash value generated by applying the executable code of the software to a hash function.

나아가, 상기 기술적 과제는 상술한 데이터의 저장 및 판독 방법을 구현하기 위한 함수 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체를 포함한다.Furthermore, the technical problem includes a computer-readable recording medium having recorded thereon a function program for implementing the above-described data storage and reading method.

본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다. DETAILED DESCRIPTION In order to fully understand the present invention, the operational advantages of the present invention, and the objects achieved by the practice of the present invention, reference should be made to the accompanying drawings which illustrate preferred embodiments of the present invention and the contents described in the drawings.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대해 상세히 설명한다.Hereinafter, with reference to the accompanying drawings will be described in detail a preferred embodiment of the present invention.

도 1은 본 발명의 일 실시예에 따른, 데이터를 암호화하여 저장하는 데이터의 저장 방법을 설명하기 위한 플로우 차트이다.1 is a flowchart illustrating a data storage method of encrypting and storing data according to an embodiment of the present invention.

도 1을 참조하면, 먼저 단계 110에서는 데이터를 액세스하는 소프트웨어의 저장부에 저장되어있는 실행코드와 메모리상에서 실행중인 실행코드 중에서, 한 가지 실행코드를 이용하여 암호화 키를 생성한다. 두 가지의 실행코드 중 어떤 실행코드를 사용할지는 시스템 설정에 따르며, 이후 후술하겠지만 복호화 단계에서는 두 실행코드 중 암호화 단계에서 사용된 실행코드가 아닌 나머지 다른 실행코드를 사용한다.Referring to FIG. 1, first, in step 110, an encryption key is generated using one execution code from among execution codes stored in a storage unit of software for accessing data and execution codes executed in a memory. Which of the two execution codes is used depends on the system configuration. As will be described later, the decryption step uses the other execution code other than the execution code used in the encryption step.

다음으로 단계 120에서는 이렇게 생성된 암호화 키를 이용하여 데이터를 암호화하고, 단계 130에서는 암호화된 데이터를 저장 매체에 저장한다.Next, in step 120, the data is encrypted using the generated encryption key. In step 130, the encrypted data is stored in the storage medium.

도 2는 본 발명의 다른 실시예에 따른, 암호화된 데이터를 복호화하여 판독하는 데이터의 판독 방법을 설명하기 위한 플로우 차트이다.2 is a flowchart illustrating a data reading method for decrypting and reading encrypted data according to another embodiment of the present invention.

도 2를 참조하면, 데이터의 판독 방법은 암호화된 데이터를 액세스하는 소프트웨어의 실행 전 저장매체에 저장되어있는 실행 코드 또는 실행 중 메모리상에 로드되어있는 실행 코드 중에서, 암호화된 데이터의 암호화시에 암호화 키를 생성하기 위해 사용된 소프트웨어의 실행코드와 다른 위치에 존재하는 실행코드를 이용하여 복호화 키를 생성하는 단계(210), 생성된 복호화 키를 이용하여 상기 암호화된 데이터를 복호화하는 단계(220) 및 복호화된 데이터를 판독하는 단계(230)로 이루어진다.Referring to FIG. 2, a method of reading data includes encryption at the time of encryption of encrypted data, among executable code stored in a storage medium before execution of software for accessing encrypted data, or executable code loaded on a memory during execution. Generating a decryption key using execution code existing at a location different from the execution code of the software used to generate the key; and decrypting the encrypted data using the generated decryption key (220). And reading 230 the decrypted data.

이때, 암호화된 데이터를 복호화하는 경우에 생성된 복호화 키가 암호화된 데이터의 암호화시에 사용된 암호화 키와 다르면, 암호화된 데이터의 복호화가 실패한다.At this time, if the decryption key generated when decrypting the encrypted data is different from the encryption key used when encrypting the encrypted data, decryption of the encrypted data fails.

예를 들어, 암호화 당시에 만약 암호화 키를 생성하기 위해 소프트웨어의 실행 전 저장매체에 저장되어있는 실행코드를 사용하였다면, 데이터의 판독시에는 상기 암호화 키를 생성하기 위해 사용된 소프트웨어의 실행코드와 다른 위치의 실행코드, 즉 소프트웨어의 실행 중 메모리상에 로드되어있는 실행코드를 이용하여 복호화 키를 생성한다.For example, if, at the time of encryption, the executable code stored in the storage medium prior to execution of the software was used to generate the encryption key, the location of the software used to generate the encryption key when reading the data would be different from the executable code. A decryption key is generated by using the executable code of ie, the executable code loaded on the memory during the execution of the software.

복호화 과정에서 암호화 키를 생성하기 위해 사용되는 소프트웨어의 실행코드와 다른 위치의 실행코드를 이용하는 이유는, 만약 실행중인 소프트웨어가 변형되었다면 이들 데이터를 정상적으로 판독을 하지 못하도록 하기 위함이다. 즉, 실행중인 소프트웨어가 실행도중 메모리상에서 변형되지 않았다면, 소프트웨어 저장매체에 저장되어있는 실행코드와 메모리상에 로드되어있는 실행코드가 동일할 것이며, 따라서, 실행 중인 소프트웨어가 변형되지 않았다면 데이터의 판독시에 생성된 복호화 키가 상기 암호화 키와 동일하여 데이터를 올바로 읽을 수 있게 된다. 반면에, 데이터를 판독하는 당시에 실행 중인 소프트웨어가 어떠한 이유에서 변형되었다면, 이때 생성된 복호화 키와 암호화시 생성된 키는 서로 다를 것이며, 따라서 암호화된 데이터를 정상적으로 복호화할 수 없어서 결국 데이터의 판독이 불가능하게 된다.The reason for using the execution code in a location different from the execution code of the software used to generate the encryption key in the decryption process is to prevent the normal reading of these data if the executing software is modified. In other words, if the running software is not modified in memory during execution, the executable code stored in the software storage medium and the executable code loaded in the memory will be the same. The decryption key generated at the same as the encryption key can read data correctly. On the other hand, if the software being executed at the time of reading the data was modified for some reason, the decryption key generated at this time and the key generated at the time of encryption will be different from each other, so that the encrypted data cannot be decrypted normally and thus cannot be read. Done.

이러한 암호화 키 및 복호화 키의 생성 과정을 설명하면 아래와 같다.A process of generating the encryption key and the decryption key will be described below.

도 3a 및 도 3b는 데이터를 암호화/복호화하기 위한 키를 생성하는 방법을 나타내기 위한 도면이다.3A and 3B are diagrams illustrating a method of generating a key for encrypting / decrypting data.

도 3a 및 3b와 같이 소프트웨어 실행코드를 이용한 키는 두 가지 시점에서 생성될 수 있다. 첫 번째로, 도 3a와 같이 소프트웨어 실행 전의 소프트웨어 저장부 내의 실행코드를 이용하여 키를 생성할 수 있고(이때 생성된 키를 제1 키라고 하자) 두 번째로, 도 3b와 같이 실행 중의 메모리상의 실행코드를 이용하여 키를 생성할 수 있다(이때 생성된 키를 제2 키라고 하자). As shown in FIGS. 3A and 3B, the key using the software executable code may be generated at two points in time. Firstly, as shown in FIG. 3A, a key can be generated using execution code in a software storage unit before software execution (referred to as the first key). Second, as shown in FIG. The executable code can be used to generate a key (let's call it a second key).

이렇게 생성된 두 가지 키를 데이터를 읽는 시점과 저장하는 시점에 각각 다 르게 적용하면, 실행 중인 소프트웨어가 변경되었을 때 소프트웨어로 하여금 데이터를 읽지 못하도록 할 수 있는 것이다. Applying these two keys differently at the time of reading and storing the data can prevent the software from reading the data when the running software changes.

즉, 소프트웨어가 시스템에 데이터의 저장을 요구하면, 시스템은 제1 키를 사용하여 암호화 후 저장하고, 소프트웨어가 데이터 읽기를 요구하면, 시스템은 제2 키를 사용하여 데이터를 복호화한 후 소프트웨어에 넘겨준다. 이때, 소프트웨어가 실행 중에 변경되었으면, 제1 키와 제2 키는 서로 다를 것이고 소프트웨어는 데이터를 올바르게 읽을 수 없게 된다.That is, if the software requires the system to store the data, the system encrypts and stores the data using the first key, and if the software requires reading the data, the system decrypts the data using the second key and then passes it to the software. give. At this time, if the software has been changed during execution, the first key and the second key will be different and the software will not be able to read the data correctly.

한편, 데이터를 저장하는 저장 시점과 데이터를 읽는 판독 시점에 각각 제1 키와 제2 키를 사용할 수 있지만, 물론 그 반대로 각각 제2 키와 제1 키를 사용할 수 있음은 자명하다.On the other hand, although the first key and the second key can be used at the storage time for storing the data and the reading time for reading the data, it is obvious that the second key and the first key can be used, respectively, of course.

도 4는 소프트웨어의 실행코드를 이용하여 키를 생성하는 방법을 나타내기 위한 도면이다.4 is a diagram illustrating a method of generating a key using executable code of software.

도 4를 참조하면, 상기 도 3에서 살펴본 것보다 상세한 키 생성 과정이 나타나있다. 소프트웨어의 변형 여부를 판단하려면, 해쉬 함수를 이용하는 것이 바람직하다. 따라서, 소프트웨어가 변형되었을 때 다른 키 값이 생성되도록 하기 위하여, 키 생성과정에서 소프트웨어의 실행코드에 해쉬 함수를 적용하여 생성된 해쉬 값을 이용한다. 아울러 생성된 해쉬 값을 그대로 키로 이용할 수도 있고, 해쉬 값을 특정한 알고리즘을 통하여 변형하여 키를 생성할 수도 있다.Referring to FIG. 4, a more detailed key generation process than that shown in FIG. 3 is shown. To determine whether the software is modified, it is desirable to use a hash function. Therefore, in order to generate another key value when the software is modified, the hash value generated by applying a hash function to the executable code of the software is used in the key generation process. In addition, the generated hash value may be used as a key as it is, or a key may be generated by modifying the hash value through a specific algorithm.

도 5는 본 발명의 일 실시예에 따른, 데이터의 저장 방법을 설명하기 위한 기능 블록도이며, 도 6은 본 발명의 다른 실시예에 따른, 데이터의 판독 방법을 설 명하기 위한 기능 블록도이다.FIG. 5 is a functional block diagram illustrating a data storage method according to an embodiment of the present invention, and FIG. 6 is a functional block diagram illustrating a data reading method according to another embodiment of the present invention. .

도 5를 참조하면, 데이터를 저장하고자 할 때에 소프트웨어 실행부(510)에서 실행중인 소프트웨어는 시스템 즉, 데이터 저장 처리부(530)로 하여금 데이터를 저장할 것을 요구한다. 그러면 데이터 저장 처리부(530)에 포함된 데이터 암호화부(531)는 소프트웨어 실행부(531)에서 전달받은 데이터를 암호화하는데, 이때 키 생성부(532)는 소프트웨어 저장부(520)에 저장된 소프트웨어 실행코드를 이용하여 암호화 키를 생성하고, 이를 데이터 암호화부(531)에 전달한다. 이렇게 데이터 암호화부(531)에서 암호화된 데이터는 데이터 저장 매체(540)에 안전하게 영구 저장된다.Referring to FIG. 5, when the data is to be stored, the software running in the software execution unit 510 requests the system, that is, the data storage processing unit 530 to store the data. Then, the data encryption unit 531 included in the data storage processing unit 530 encrypts the data received from the software execution unit 531. In this case, the key generation unit 532 is the software execution code stored in the software storage unit 520. Generates an encryption key using and transmits it to the data encryption unit 531. The data encrypted by the data encryption unit 531 is safely and permanently stored in the data storage medium 540.

반대로, 도 6을 참조하여 암호화되어 저장된 데이터를 판독할 때의 과정을 살펴 보면 다음과 같다. 먼저, 데이터 저장 매체(630)에서 암호화된 데이터를 데이터 판독 처리부(620)로 전달하고, 데이터 판독 처리부(620)에 포함된 데이터 복호화부(621)에서 복호화 과정을 거친다. 이때, 실행 중인 소프트웨어의 메모리(611)상의 소프트웨어 실행코드를 이용하여 키 생성부(622)는 복호화 키를 생성하고, 생성된 복호화 키를 상기 데이터 복호화부(621)로 전달한다. 데이터를 판독하는 당시에 소프트웨어가 변형되지 않았다면 복호화 키는 상술한 암호화 키와 동일할 것이고, 따라서 데이터 복호화부(621)는 성공적으로 복호화를 수행할 수 있으므로 최종적으로 소프트웨어 실행부(610)에서 실행중인 소프트웨어는 정상적으로 데이터를 판독할 수 있다.On the contrary, referring to FIG. 6, the process of reading the encrypted and stored data is as follows. First, the data encrypted by the data storage medium 630 is transferred to the data read processing unit 620, and the data decryption unit 621 included in the data read processing unit 620 undergoes a decryption process. At this time, the key generation unit 622 generates a decryption key using the software execution code on the memory 611 of the software being executed, and transfers the generated decryption key to the data decryption unit 621. If the software was not modified at the time of reading the data, the decryption key would be the same as the encryption key described above, and thus, the data decryption unit 621 could successfully perform decryption, thus finally executing the software running in the software execution unit 610. Can read data normally.

위와 같은 시나리오를 DRM 소프트웨어에 적용하여 볼 수 있다. 즉, DRM 소 프트웨어는 컨텐츠를 사용하기 위하여 라이센스 서버로부터 라이센스를 발급받아 시스템에서 제공하는 저장 함수를 이용하여 저장하는데, 이때 라이센스는 소프트웨어의 실행 전에 실행코드를 이용하여 계산된 키를 이용하여 암호화되어 저장될 수 있다. 그리고 해당 컨텐츠를 사용하기 위한 권한 획득을 위하여 라이센스를 읽어 들일 때에, 라이센스는 DRM 소프트웨어의 실행 중에 실행코드를 이용하여 계산된 키를 계산된 특징값을 이용하여 복호화되어 이용된다. 따라서 DRM 소프트웨어가 실행시간에 변형되지 않았다면, 라이센스를 올바로 해석하여 컨텐츠를 사용할 수가 있을 것이다. 그러나, DRM 소프트웨어가 실행시간에 변형되었다면, 라이센스를 읽을 수 없어 결국 컨텐츠를 사용할 수 없게 된다. The above scenario can be applied to the DRM software. That is, the DRM software receives a license from the license server to use the content and stores it using a storage function provided by the system, where the license is encrypted using a key calculated using executable code before executing the software. Can be stored. When the license is read for obtaining the right to use the content, the license is decrypted using the calculated feature value using the calculated key while executing the DRM software. Thus, if the DRM software was not modified at runtime, the content would be available by correctly interpreting the license. However, if the DRM software was modified at runtime, the license could not be read and eventually the content would not be available.

한편, 상술한 본 발명의 데이터의 암호화 저장 방법 및 암호화된 데이터의 판독 방법은 컴퓨터에서 실행될 수 있는 함수 프로그램, 예를 들어 API(Application Programming Interface) 함수로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 함수 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. On the other hand, the above-described encrypted storage method of the data and the method of reading the encrypted data can be written by a function program that can be executed in a computer, for example, an API (Application Programming Interface) function, a computer-readable recording medium It can be implemented in a general-purpose digital computer for operating the function program using.

상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다. The computer-readable recording medium may be a magnetic storage medium (for example, a ROM, a floppy disk, a hard disk, etc.), an optical reading medium (for example, a CD-ROM, a DVD, etc.) and a carrier wave (for example, the Internet). Storage medium).

이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본 질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.So far I looked at the center of the preferred embodiment for the present invention. Those skilled in the art will appreciate that the present invention can be implemented in a modified form without departing from the essential features of the present invention. Therefore, the disclosed embodiments should be considered in descriptive sense only and not for purposes of limitation. The scope of the present invention is shown in the claims rather than the foregoing description, and all differences within the scope will be construed as being included in the present invention.

이상에서 설명한 바와 같이 본 발명에 의한 데이터의 암호화 저장 방법 및 판독 방법에 따르면, 소프트웨어가 데이터를 저장하거나 판독할 때, 서로 다른 시점에서의 소프트웨어의 실행코드를 이용하여 생성된 키로써 데이터를 암호화 및 복호화하므로, 특정 소프트웨어가 저장한 데이터를 다른 소프트웨어가 읽을 수 없을 뿐만 아니라, 해당 소프트웨어라도 실행시점에서 변형되었을 때는 데이터를 읽지 못하게 할 수 있으므로 데이터에 대한 보안성을 유지할 수 있다는 효과가 있다. As described above, according to the encryption storage method and the reading method of data according to the present invention, when the software stores or reads data, the data is encrypted and encrypted with a key generated using the executable code of the software at different points in time. Since decryption, data stored by a specific software can not be read by other software, and even the software can be prevented from reading data when it is modified at the time of execution, thereby maintaining the security of the data.

Claims (5)

데이터를 암호화하여 저장하는 데이터의 저장 방법에 있어서,In a data storage method for encrypting and storing data, 상기 데이터를 액세스하는 소프트웨어가 실행되기 전에 소정의 저장부에 기저장된 실행코드 또는 상기 소프트웨어가 실행되어 메모리에 로드된 실행코드 중, 상기 데이터의 복호화시에 복호화 키를 생성하기 위해 사용될 실행코드와 다른 실행코드를 이용하여 암호화 키를 생성하는 단계와;Execution code previously stored in a predetermined storage unit before execution of the software for accessing the data, or execution code loaded in the memory by executing the software, which is different from the execution code to be used to generate a decryption key when decrypting the data. Generating an encryption key using executable code; 상기 생성된 암호화 키를 이용하여 상기 데이터를 암호화하는 단계와;Encrypting the data using the generated encryption key; 상기 암호화된 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 데이터의 저장 방법.Storing the encrypted data. 제1항에 있어서,The method of claim 1, 상기 암호화 키를 생성하는 단계는,Generating the encryption key, 상기 소프트웨어의 실행 코드를 해쉬 함수에 적용하여 생성된 해쉬값을 이용하여 상기 암호화 키를 생성하는 것을 특징으로 하는 데이터의 저장 방법. And generating the encryption key using a hash value generated by applying the executable code of the software to a hash function. 암호화된 데이터를 복호화하여 판독하는 데이터의 판독 방법에 있어서,In a data reading method for decrypting and reading encrypted data, 상기 암호화된 데이터를 액세스하는 소프트웨어가 실행되기 전에 소정의 저장부에 기저장된 실행코드 또는 상기 소프트웨어가 실행되어 메모리에 로드된 실행코드 중, 상기 데이터의 암호화시에 암호화 키를 생성하기 위해 사용된 실행코드와 다른 실행코드를 이용하여 복호화 키를 생성하는 단계와;Execution used to generate an encryption key when encrypting the data, among execution codes previously stored in a predetermined storage unit or executable code executed by the software and loaded into memory before the software for accessing the encrypted data is executed. Generating a decryption key using executable code and other executable code; 상기 생성된 복호화 키를 이용하여 상기 암호화된 데이터를 복호화하는 단계와;Decrypting the encrypted data using the generated decryption key; 상기 복호화된 데이터를 판독하는 단계를 포함하는 것을 특징으로 하는 데이터의 판독 방법.And reading the decoded data. 제3항에 있어서,The method of claim 3, 상기 복호화 키를 생성하는 단계는,Generating the decryption key, 상기 소프트웨어의 실행 코드를 해쉬 함수에 적용하여 생성된 해쉬값을 이용하여 상기 복호화 키를 생성하는 것을 특징으로 하는 데이터의 판독 방법.And generating the decryption key using a hash value generated by applying the execution code of the software to a hash function. 제1항 또는 제3항의 방법을 구현하기 위한 함수 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.A computer-readable recording medium having recorded thereon a function program for implementing the method of claim 1.
KR1020070040941A 2007-04-26 2007-04-26 Method for writing data by encryption and reading the data thereof KR101405915B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070040941A KR101405915B1 (en) 2007-04-26 2007-04-26 Method for writing data by encryption and reading the data thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070040941A KR101405915B1 (en) 2007-04-26 2007-04-26 Method for writing data by encryption and reading the data thereof

Publications (2)

Publication Number Publication Date
KR20080096054A true KR20080096054A (en) 2008-10-30
KR101405915B1 KR101405915B1 (en) 2014-06-12

Family

ID=40155483

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070040941A KR101405915B1 (en) 2007-04-26 2007-04-26 Method for writing data by encryption and reading the data thereof

Country Status (1)

Country Link
KR (1) KR101405915B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101033475B1 (en) * 2009-07-03 2011-05-09 동국대학교 경주캠퍼스 산학협력단 Personal information protection apparatus and method for managing distribution channel of personal information efficiently and safely
KR20120098764A (en) * 2009-12-04 2012-09-05 크라이프토그라피 리서치, 인코포레이티드 Verifiable, leak-resistant encryption and decryption
KR20210083999A (en) * 2019-12-27 2021-07-07 주식회사 안랩 Security device and security method for cryptocurrency wallet

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3481470B2 (en) * 1998-10-19 2003-12-22 日本電気株式会社 System for preventing unauthorized alteration of data and the like and encryption device used together therewith
US7270193B2 (en) 2000-02-14 2007-09-18 Kabushiki Kaisha Toshiba Method and system for distributing programs using tamper resistant processor
GB0226658D0 (en) * 2002-11-15 2002-12-24 Koninkl Philips Electronics Nv Archive system and method for copy controlled storage devices
JP4517636B2 (en) * 2003-12-05 2010-08-04 富士ゼロックス株式会社 Execution program creation method, function program, and function program execution method

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101033475B1 (en) * 2009-07-03 2011-05-09 동국대학교 경주캠퍼스 산학협력단 Personal information protection apparatus and method for managing distribution channel of personal information efficiently and safely
KR20120098764A (en) * 2009-12-04 2012-09-05 크라이프토그라피 리서치, 인코포레이티드 Verifiable, leak-resistant encryption and decryption
US9940463B2 (en) 2009-12-04 2018-04-10 Cryptography Research, Inc. System and method for secure authentication
US10262141B2 (en) 2009-12-04 2019-04-16 Cryptography Research, Inc. Secure processor with resistance to external monitoring attacks
US11074349B2 (en) 2009-12-04 2021-07-27 Cryptography Research, Inc. Apparatus with anticounterfeiting measures
KR20210083999A (en) * 2019-12-27 2021-07-07 주식회사 안랩 Security device and security method for cryptocurrency wallet

Also Published As

Publication number Publication date
KR101405915B1 (en) 2014-06-12

Similar Documents

Publication Publication Date Title
US20210294879A1 (en) Securing executable code integrity using auto-derivative key
US7325126B2 (en) System and method for distributed module authentication
JP5175856B2 (en) Protection and method of flash memory block in secure device system
KR100792287B1 (en) Method for security and the security apparatus thereof
US20090187771A1 (en) Secure data storage with key update to prevent replay attacks
JP4851200B2 (en) Method and computer-readable medium for generating usage rights for an item based on access rights
US20050246551A1 (en) System and method for rendering selective presentation of documents
US8341751B2 (en) Software license management
US20080016127A1 (en) Utilizing software for backing up and recovering data
US8181028B1 (en) Method for secure system shutdown
US20110271350A1 (en) method for protecting software
US20100205460A1 (en) Encryption method for digital data memory card and assembly for performing the same
JP2007257626A (en) Method and device for temporarily using content using temporary license
JP2009080772A (en) Software starting system, software starting method and software starting program
US9003201B2 (en) Hardware protection for encrypted strings and protection of security parameters
KR101405915B1 (en) Method for writing data by encryption and reading the data thereof
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
JP5060372B2 (en) Data processing device
JP2005346150A (en) Information processor, information processing method, program, and recording medium
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
KR101203804B1 (en) Security mobile storage apparatus and the control method
KR100561218B1 (en) Method and system for preventing to get of information by outside storage
US20030018907A1 (en) Content protection for digital media
WO2015144245A1 (en) Protecting an item of software
CN101587723A (en) A kind of anti-copy optical storage medium and manufacture method thereof

Legal Events

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

Payment date: 20170529

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180530

Year of fee payment: 5