KR101405915B1 - 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
KR101405915B1
KR101405915B1 KR1020070040941A KR20070040941A KR101405915B1 KR 101405915 B1 KR101405915 B1 KR 101405915B1 KR 1020070040941 A KR1020070040941 A KR 1020070040941A KR 20070040941 A KR20070040941 A KR 20070040941A KR 101405915 B1 KR101405915 B1 KR 101405915B1
Authority
KR
South Korea
Prior art keywords
data
software
key
generated
reading
Prior art date
Application number
KR1020070040941A
Other languages
Korean (ko)
Other versions
KR20080096054A (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 OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/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

본 발명은 데이터의 암호화 저장 방법 및 암호화된 데이터의 판독 방법에 관한 것으로, 데이터를 저장하거나 판독할 때에 소프트웨어가 실행되기 전에 저장부에 기저장된 실행코드 또는 소프트웨어가 실행되어 메모리에 로드된 실행코드를 상호 배반적으로 이용하여 암호화 키 또는 복호화 키를 생성하고 데이터를 저장하거나 판독하므로, 특정 소프트웨어가 저장한 데이터를 다른 소프트웨어가 읽을 수 없을 뿐만 아니라, 해당 소프트웨어라도 실행시점에서 변형되었을 때는 데이터를 읽지 못하게 할 수 있으므로 데이터에 대한 보안성을 유지할 수 있다.The present invention relates to a method of encrypting and storing data and a method of reading encrypted data, wherein an execution code or software previously stored in a storage unit is executed before executing software when data is stored or read, The data stored by the specific software can not be read by other software and the data can not be read even if the corresponding software is modified at the time of execution because the encryption key or the decryption key is generated by mutually using The security of the data can be maintained.

Description

데이터의 암호화 저장 방법 및 암호화된 데이터의 판독 방법{Method for writing data by encryption and reading the data thereof}BACKGROUND OF THE INVENTION 1. Field of the Invention [0001] The present invention relates to a method for encrypting data and a method for reading encrypted data,

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

도 2는 본 발명의 다른 실시예에 따른, 암호화된 데이터를 복호화하여 판독하는 데이터의 판독 방법을 설명하기 위한 플로우 차트이다.2 is a flowchart for explaining 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 showing a method of generating a key using an execution 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 for explaining a data reading method 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, to a method of encrypting / decrypting data by storing / reading data by encrypting / decrypting data using a key generated using an execution code of software And 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 content data protection system, unauthorized software should not be able to access secret data, and authorized software should be correct software that is not modified or hacked.

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

따라서, 본 발명은 상기와 같은 문제점을 해결하기 위하여 고안된 것으로, 본 발명이 이루고자 하는 기술적 과제는 데이터의 저장 및 판독시, 서로 다른 시점 에서의 소프트웨어의 실행코드를 이용하여 생성된 키를 이용하여 데이터를 암호화 및 복호화함으로써, 실행중인 소프트웨어가 변형된 경우에 해당 데이터를 판독할 수 없도록 하는 데이터의 저장 및 판독 방법을 제공하는 것이다.SUMMARY OF THE INVENTION Accordingly, the present invention has been made keeping in mind the above problems occurring in the prior art, and it is an object of the present invention to provide a method and apparatus for storing and reading data by using keys generated using software execution codes at different points in time, And encrypting and decrypting the encrypted data, thereby preventing the corresponding data from being read when the running software is modified.

상기 기술적 과제는 본 발명에 따라, 소프트웨어가 시스템에 데이터의 저장 및 판독을 요청할 때 시스템은 데이터를 암호화하여 저장하고, 복호화하여 소프트웨어에게 전달하되, 소프트웨어 저장부에 저장된 해당 소프트웨어의 실행코드를 이용하여 생성된 키와 메모리상에서 실행중인 해당 소프트웨어의 실행코드를 이용하여 생성된 키를 각각 암호화 과정과 복호화 과정에서 상호 배반적으로 이용하는 것을 특징으로 하는 데이터의 저장 및 판독 방법에 의해 달성된다. According to an aspect of the present invention, there is provided a system for encrypting, storing, decrypting, and delivering data to a software when the software requests storage and reading of data in the system, And the key generated using the generated key and the executable code of the corresponding software running on the memory are used in a reciprocal manner in the encryption process and the decryption process, respectively.

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

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

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

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

또한 상기 기술적 과제는 암호화된 데이터를 복호화하여 판독하는 데이터의 판독 방법에 있어서, 상기 암호화된 데이터를 액세스하는 소프트웨어가 실행되기 전에 소정의 저장부에 기저장된 실행코드 또는 상기 소프트웨어가 실행되어 메모리에 로드된 실행코드 중, 상기 데이터의 암호화시에 암호화 키를 생성하기 위해 사용된 실행코드와 다른 실행코드를 이용하여 복호화 키를 생성하는 단계와; 상기 생 성된 복호화 키를 이용하여 상기 암호화된 데이터를 복호화하는 단계와; 상기 복호화된 데이터를 판독하는 단계를 포함하는 것을 특징으로 하는 데이터의 판독 방법에 의해서도 달성된다.The present invention also provides a data reading method for decrypting and reading encrypted data, the method comprising the steps of: before executing the software for accessing the encrypted data, Generating a decryption key using the executable code different from the executable code used to generate the encryption key when encrypting the data; Decrypting the encrypted data using the generated decryption key; And reading the decrypted data. The present invention also provides a method of reading data.

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

나아가, 상기 기술적 과제는 상술한 데이터의 저장 및 판독 방법을 구현하기 위한 함수 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체를 포함한다.The present invention also provides a computer-readable recording medium having recorded thereon a functional program for implementing the method of storing and reading data.

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

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

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

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

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

도 2는 본 발명의 다른 실시예에 따른, 암호화된 데이터를 복호화하여 판독하는 데이터의 판독 방법을 설명하기 위한 플로우 차트이다.2 is a flowchart for explaining 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 is a method of reading data from an executable code stored in a storage medium before execution of software for accessing encrypted data or an executable code loaded on a memory during execution, A step 210 of generating a decryption key using an execution code existing at a location different from the execution code of the software used to generate the key, a step 220 of decrypting the encrypted data using the generated decryption key, And reading 230 the decoded 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 an executable code stored in the storage medium before execution of the software is used to generate the encryption key at the time of encryption, then when the data is read, the execution code of the software used to generate the encryption key The decryption key is generated by using the execution code of the application program, that is, the execution code loaded on the memory during execution of the software.

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

이러한 암호화 키 및 복호화 키의 생성 과정을 설명하면 아래와 같다.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, a key using a software executable code can be generated at two points in time. First, as shown in FIG. 3A, a key can be generated by using an execution code in a software storage unit before execution of a software (a generated key is referred to as a first key). As shown in FIG. 3B, You can generate a key using executable code (let's say the generated key is the second key).

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

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

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

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

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

도 5는 본 발명의 일 실시예에 따른, 데이터의 저장 방법을 설명하기 위한 기능 블록도이며, 도 6은 본 발명의 다른 실시예에 따른, 데이터의 판독 방법을 설 명하기 위한 기능 블록도이다.FIG. 5 is a functional block diagram for explaining a data storing method according to an embodiment of the present invention, and FIG. 6 is a functional block diagram for explaining 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, the software running in the software execution unit 510 at the time of storing data requests the system, that is, the data storage processing unit 530 to store the data. The data encryption unit 531 included in the data storage unit 530 encrypts data received from the software execution unit 531. The key generation unit 532 encrypts the software execution code stored in the software storage unit 520, And transmits the generated encryption key to the data encryption unit 531. The data encrypted by the data encryption unit 531 is securely and permanently stored in the data storage medium 540.

반대로, 도 6을 참조하여 암호화되어 저장된 데이터를 판독할 때의 과정을 살펴 보면 다음과 같다. 먼저, 데이터 저장 매체(630)에서 암호화된 데이터를 데이터 판독 처리부(620)로 전달하고, 데이터 판독 처리부(620)에 포함된 데이터 복호화부(621)에서 복호화 과정을 거친다. 이때, 실행 중인 소프트웨어의 메모리(611)상의 소프트웨어 실행코드를 이용하여 키 생성부(622)는 복호화 키를 생성하고, 생성된 복호화 키를 상기 데이터 복호화부(621)로 전달한다. 데이터를 판독하는 당시에 소프트웨어가 변형되지 않았다면 복호화 키는 상술한 암호화 키와 동일할 것이고, 따라서 데이터 복호화부(621)는 성공적으로 복호화를 수행할 수 있으므로 최종적으로 소프트웨어 실행부(610)에서 실행중인 소프트웨어는 정상적으로 데이터를 판독할 수 있다.Conversely, referring to FIG. 6, a process of reading encrypted and stored data will be described below. First, the encrypted data is transferred to the data read processing unit 620 in the data storage medium 630, and is decrypted in the data decryption unit 621 included in the data read processing unit 620. 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 has not been modified at the time of reading the data, the decryption key will be the same as the encryption key described above. Therefore, the data decryption unit 621 can decrypt successfully, so that the software executing unit 610 The data can be normally read.

위와 같은 시나리오를 DRM 소프트웨어에 적용하여 볼 수 있다. 즉, DRM 소 프트웨어는 컨텐츠를 사용하기 위하여 라이센스 서버로부터 라이센스를 발급받아 시스템에서 제공하는 저장 함수를 이용하여 저장하는데, 이때 라이센스는 소프트웨어의 실행 전에 실행코드를 이용하여 계산된 키를 이용하여 암호화되어 저장될 수 있다. 그리고 해당 컨텐츠를 사용하기 위한 권한 획득을 위하여 라이센스를 읽어 들일 때에, 라이센스는 DRM 소프트웨어의 실행 중에 실행코드를 이용하여 계산된 키를 계산된 특징값을 이용하여 복호화되어 이용된다. 따라서 DRM 소프트웨어가 실행시간에 변형되지 않았다면, 라이센스를 올바로 해석하여 컨텐츠를 사용할 수가 있을 것이다. 그러나, DRM 소프트웨어가 실행시간에 변형되었다면, 라이센스를 읽을 수 없어 결국 컨텐츠를 사용할 수 없게 된다. The above scenario can be applied to 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. In this case, the license is encrypted by using the key calculated using the executable code, And 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 executable code during execution of the DRM software. Thus, if the DRM software has not been tampered with at runtime, it will be able to interpret the license and use the content. However, if the DRM software is modified at runtime, the license can not be read and the content will eventually become unusable.

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

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

이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본 질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.The present invention has been described with reference to the preferred embodiments. It will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the present invention as defined by the following claims. Therefore, the disclosed embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is defined by the appended claims rather than by the foregoing description, and all differences within the scope of equivalents thereof should be construed as being included in the present invention.

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

Claims (5)

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

Families Citing this family (4)

* 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
JP5552541B2 (en) * 2009-12-04 2014-07-16 クリプトグラフィ リサーチ, インコーポレイテッド Verifiable leak-proof encryption and decryption
FR3094520B1 (en) * 2019-03-25 2021-10-22 St Microelectronics Rousset Encryption and / or decryption key
KR102314379B1 (en) * 2019-12-27 2021-10-19 주식회사 안랩 Security device and security method for cryptocurrency wallet

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000029146A (en) * 1998-10-19 2000-05-25 가네꼬 히사시 Data encipherment apparatus and illegal alteration prevention system
KR100375158B1 (en) 2000-02-14 2003-03-08 가부시끼가이샤 도시바 Tamper resistant microprocessor
JP2005165919A (en) * 2003-12-05 2005-06-23 Fuji Xerox Co Ltd Program execution method, program creation method, information processor and program
KR20050086552A (en) * 2002-11-15 2005-08-30 코닌클리케 필립스 일렉트로닉스 엔.브이. Archive system and method for copy controlled storage devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000029146A (en) * 1998-10-19 2000-05-25 가네꼬 히사시 Data encipherment apparatus and illegal alteration prevention system
KR100375158B1 (en) 2000-02-14 2003-03-08 가부시끼가이샤 도시바 Tamper resistant microprocessor
KR20050086552A (en) * 2002-11-15 2005-08-30 코닌클리케 필립스 일렉트로닉스 엔.브이. Archive system and method for copy controlled storage devices
JP2005165919A (en) * 2003-12-05 2005-06-23 Fuji Xerox Co Ltd Program execution method, program creation method, information processor and program

Also Published As

Publication number Publication date
KR20080096054A (en) 2008-10-30

Similar Documents

Publication Publication Date Title
US20210294879A1 (en) Securing executable code integrity using auto-derivative key
JP5314016B2 (en) Information processing apparatus, encryption key management method, computer program, and integrated circuit
JP4680564B2 (en) Content encryption and data protection on portable media
US8769675B2 (en) Clock roll forward detection
JP5636371B2 (en) Method and system for code execution control in a general purpose computing device and code execution control in a recursive security protocol
US7778417B2 (en) System and method for managing encrypted content using logical partitions
US20060149683A1 (en) User terminal for receiving license
US7325126B2 (en) System and method for distributed module authentication
US20080289038A1 (en) Method and apparatus for checking integrity of firmware
JP2010510574A (en) Protection and method of flash memory block in secure device system
US20110271350A1 (en) method for protecting software
CN110188555B (en) Disk data protection method, system and related components
US20100205460A1 (en) Encryption method for digital data memory card and assembly for performing the same
US20070239617A1 (en) Method and apparatus for temporarily accessing content using temporary license
US20100166189A1 (en) Key Management Apparatus and Key Management Method
KR101405915B1 (en) Method for writing data by encryption and reading the data thereof
JP2009080772A (en) Software starting system, software starting method and software starting program
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
JP5060372B2 (en) Data processing device
US8490208B2 (en) Method and device for detecting if a computer file has been copied and method and device for enabling such detection
US20130163755A1 (en) Protection method, decryption method, player, storage medium, and encryption apparatus of digital content
KR100695665B1 (en) Apparatus and method for accessing material using an entity locked secure registry
US20030018907A1 (en) Content protection for digital media
JP5304304B2 (en) Security enhancement system, method, program, and USB memory
JP4590333B2 (en) Data processing method, data processing apparatus, and program

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