KR20110118273A - Method for encrypting and decrypting stream and cryptographic file systems thereof - Google Patents

Method for encrypting and decrypting stream and cryptographic file systems thereof Download PDF

Info

Publication number
KR20110118273A
KR20110118273A KR1020100037773A KR20100037773A KR20110118273A KR 20110118273 A KR20110118273 A KR 20110118273A KR 1020100037773 A KR1020100037773 A KR 1020100037773A KR 20100037773 A KR20100037773 A KR 20100037773A KR 20110118273 A KR20110118273 A KR 20110118273A
Authority
KR
South Korea
Prior art keywords
key
stream
generating
tree
keys
Prior art date
Application number
KR1020100037773A
Other languages
Korean (ko)
Other versions
KR101133988B1 (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 KR1020100037773A priority Critical patent/KR101133988B1/en
Publication of KR20110118273A publication Critical patent/KR20110118273A/en
Application granted granted Critical
Publication of KR101133988B1 publication Critical patent/KR101133988B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

실시예는 스트림 암호화 방법에 관한 것이다.
실시예에 따른 스트림 암호화 방법은, 파일 시스템 암호화에 사용할 루트 키를 생성하는 단계, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 단계, 키 트리에 구성된 복수의 서브 키와 암호 파일 시스템의 스토리지에 구성된 데이터 블록들을 매핑하는 단계, 및 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 단계를 포함한다.
Embodiments relate to a stream encryption method.
In the stream encryption method according to the embodiment, generating a root key to be used for file system encryption, generating a plurality of sub-keys from the root key through a hash function to form a key tree, a plurality of sub-keys configured in the key tree And mapping data blocks configured in storage of the cipher file system, and generating a ciphertext stream by performing an XOR operation on a plurality of subkeys mapped to the data blocks and a plaintext stream.

Description

해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템{METHOD FOR ENCRYPTING AND DECRYPTING STREAM AND CRYPTOGRAPHIC FILE SYSTEMS THEREOF}Hash tree-based stream encryption and decryption method and cipher file system {METHOD FOR ENCRYPTING AND DECRYPTING STREAM AND CRYPTOGRAPHIC FILE SYSTEMS THEREOF}

스트림 암호화/복호화 방법 및 암호 파일 시스템에 관한 것이다.
A stream encryption / decryption method and a cryptographic file system.

“Amazon Simple Storage Service(S3)”와 같은 서비스가 활성화되면서, 사용자의 정보가 자신의 컴퓨터 장치에 저장되는 것이 아닌, 중앙 서버에 저장되는 스토리지 아웃소싱 서비스 시장이 커지고 있다. 이러한 서비스에 의해 스토리지 장치의 확장 없이, 필요한 만큼 저장장치를 임대하여 사용할 수 있게 되어, 그에 따른 편리성이 증대되었다.With services such as “Amazon Simple Storage Service (S3)” enabled, the market for storage outsourcing services is growing, in which user information is stored on central servers rather than on their computer devices. These services allow the storage device to be leased and used as needed without expansion of the storage device, thereby increasing convenience.

그러나 이러한 서비스의 활성화는 새로운 보안 문제를 야기하고 있다. 즉, 사용자의 정보가 자신의 PC 등이 아닌 인터넷 상의 다른 서버에 저장됨으로써, 기밀성에 대한 문제가 발생하게 된 것이다. 자신의 PC에는 아무런 암호화 없이 저장되어도 아무런 상관이 없었던 것들이 사용자 정보의 저장위치가 바뀜에 따라 기밀성이 중요한 문제로 대두되고 있다.However, the activation of these services introduces new security problems. In other words, the user's information is stored in another server on the Internet instead of his own PC, etc., a problem of confidentiality occurs. Confidentiality is becoming an important issue as the storage location of user information is changed, which has nothing to do with it without any encryption.

이러한 문제를 해결하기 위해 암호 파일 시스템이란 것이 개발되었다. 암호 파일 시스템이란, 사용자의 데이터를 그대로 저장하는 것이 아니라, 암호화하여 저장하는 시스템을 의미한다.To solve this problem, a cryptographic file system has been developed. The encrypted file system refers to a system for encrypting and storing user data, rather than storing it as it is.

데이터 암호화(encryption)란 가치가 있는 정보(평문, plain text)를 제 3자가 의미를 알 수 없는 형식(암호문, cipher text)으로 변환하는 것을 의미하며, 평문은 암호 키를 사용하여 암호문으로 변환될 수 있다. 이와 반대로, 데이터 복호화(decryption)란 암호문을 평문으로 변환하는 것을 의미한다. 기억 장치에 저장되어 있거나 통신 회선을 통해 전송된 암호문은 복호 키를 사용하여 원래의 정보로 복원될 수 있다. 복호 키를 갖고 있지 않은 사람은 원래의 정보로 올바르게 복원할 수 없으므로, 복호 키가 제3자에게 알려지지 않으면 정보는 보호된다.Data encryption refers to the conversion of valuable information (plain text, plain text) into a form in which a third party does not know its meaning (cipher text), which is converted into cipher text using an encryption key. Can be. In contrast, data decryption means converting a cipher text into plain text. The cipher text stored in the storage device or transmitted over the communication line can be restored to the original information using the decryption key. Since a person who does not have a decryption key cannot correctly restore the original information, the information is protected unless the decryption key is known to a third party.

일반적으로, 데이터를 암호화하는 방법에는 블록 암호화 알고리즘과 스트림 암호화 알고리즘으로 분류된다.In general, data encryption methods are classified into block encryption algorithms and stream encryption algorithms.

도 1은 블록 암호화 알고리즘에 대한 개념을 나타낸 도면이다. 도 2는 스트림 암호화 알고리즘에 대한 개념을 나타낸 도면이다.1 is a diagram illustrating a concept of a block encryption algorithm. 2 is a diagram illustrating a concept of a stream encryption algorithm.

블록 암호화 알고리즘은, 데이터를 블록 단위로 암호화하는 알고리즘으로서, 통상 128비트 단위로 암호화시키는 알고리즘이다.The block encryption algorithm is an algorithm for encrypting data in block units, and is an algorithm for encrypting in units of 128 bits.

스트림 암호화 알고리즘은, 사용자의 키를 씨드 키(seed key) 값으로 하여 무작위 수를 발생시켜, 평문과 XOR 연산을 통해 암호화시키는 알고리즘이다.The stream encryption algorithm is an algorithm that generates a random number by using a user's key as a seed key value and encrypts it through plain text and an XOR operation.

이러한 두 가지 알고리즘은 각각 다음과 같은 장단점을 가지고 있다.Each of these two algorithms has the following advantages and disadvantages.

블록 암호화 알고리즘은, 블록 단위로 암호화를 시키기 때문에 블록 단위의 접근이 가능하다는 장점을 갖는다. 그러나, 스트림 암호화 알고리즘이 비해 매우 복잡한 연산 과정이 수반되어야 한다는 단점을 가지고 있다.The block encryption algorithm has an advantage that block-based access is possible because encryption is performed on a block basis. However, there is a disadvantage in that a very complicated calculation process is required compared to the stream encryption algorithm.

스트림 암호화 알고리즘은, 난수열과 평문의 XOR 연산을 통해 암호화 시키기 때문에, 연산 속도가 매우 빠르다는 장점을 갖는다. 그러나, 암호화된 데이터 중 특정 블록을 해독하기 위해서는, 해당 블록을 암호화하는데 사용되었던 난수열을 생성해야 하고, 또한 그러기 위해 씨드 키 값을 이용하여 해당 상태가 나올 때까지 난수열을 생성해야 해독할 수 있으므로, 무작위 접근성이 매우 낮다는 단점을 갖는다.The stream encryption algorithm has an advantage that the operation speed is very fast because the encryption is performed through random sequence and plain XOR operation. However, in order to decrypt a specific block of encrypted data, it is necessary to generate a random sequence that was used to encrypt the block, and to do so, it is necessary to generate a random sequence by using a seed key value until the state is obtained. As a result, random accessibility is very low.

따라서, 일반적인 블록 암호화 알고리즘은 블록 단위의 접근성을 제공하지만, 연산 복잡도가 스트림 암호화 알고리즘에 비해 높다는 단점이 있고, 스트림 암호화 알고리즘은 블록 암호화 알고리즘에 비해 연산 속도가 매우 빠르다는 장점이 있지만, 블록 단위의 접근성이 제공되지 않는다는 단점이 있다.
Therefore, although the general block encryption algorithm provides accessibility on a block basis, the operation complexity is higher than that of the stream encryption algorithm, and the stream encryption algorithm has an advantage of being much faster than the block encryption algorithm. The disadvantage is that accessibility is not provided.

실시예는, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호화 및 복호화 방법을 제공하는 것에 목적이 있다.An embodiment is to provide an encryption and decryption method capable of providing a fast operation speed of a stream encryption algorithm and accessibility on a block basis of a block encryption algorithm.

실시예는, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호 파일 시스템을 제공하는 것에 목적이 있다.
Embodiments provide an encryption file system capable of providing a fast operation speed of a stream encryption algorithm and accessibility in units of blocks of a block encryption algorithm.

청구항 1에 따른 스트림 암호화 방법은, 암호 파일 시스템에서의 스트림 암호화 방법으로서, 파일 시스템 암호화에 사용할 루트 키를 생성하는 단계, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 단계, 키 트리에 구성된 복수의 서브 키와 암호 파일 시스템의 스토리지에 구성된 데이터 블록들을 매핑하는 단계, 및 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 단계를 포함한다.
The stream encryption method according to claim 1 is a stream encryption method in an encrypted file system, comprising: generating a root key to be used for file system encryption, and generating a plurality of subkeys from a root key through a hash function to construct a key tree Mapping a plurality of sub keys configured in the key tree and data blocks configured in storage of the cryptographic file system, and generating a cipher text stream by performing an XOR operation on the plurality of sub keys mapped to the data blocks and the plain text stream. It includes.

청구항 2에 따른 키 트리를 구성하는 단계는,Comprising the key tree according to claim 2,

a. 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키로 생성하는 단계, b. a 단계를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계, c. b 단계를 통해 생성된 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키로 생성하는 단계, 및 d. c 단계를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계를 포함하며,a. Dividing the value of the root key into a plurality of subsections, and generating a plurality of root keys having different subsection values by exchanging positions between the divided subsections, b. generating a plurality of root keys generated in step a as subkeys having different values using a hash function, c. dividing the value of the subkey generated through step b into a plurality of subsections, and generating a plurality of subkeys having different subsection values through position exchange between the divided subsections, and d. generating a plurality of subkeys generated through the step c as subkeys having different values using a hash function;

a 단계 내지 d 단계를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,Compose a key tree by expanding a sub key through steps a through d, and compose a key tree with a depth h of a key tree satisfying the following formula,

Figure pat00001
Figure pat00001

m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
m is the number of subsections, and n is the number of data blocks.

실시예에 따른 스트림 복호화 방법은, 청구항 1에 따라 생성된 암호문 스트림을 복호화하는 방법으로서, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 통하여 유도하는 단계, 및 해쉬 함수를 통해 유도된 복수의 서브 키와 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 단계를 포함한다.
In accordance with another aspect of the present invention, there is provided a method for decrypting a ciphertext stream generated according to claim 1, comprising: deriving a plurality of subkeys mapped to a data block of storage through a hash function, and derived through a hash function Performing XOR operation on the plurality of sub-keys and the cipher text stream to generate a decrypted text stream.

스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한 것이 바람직하다.
The ciphertext stream stored in the storage is preferably accessible in units of data blocks.

청구항 5에 따른 암호 파일 시스템은, 스트림 암호화를 위한 시스템으로서, 파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부, 암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지, 키 트리에 구성된 복수의 서브 키와 스토리지의 데이터 블록들을 매핑하는 매핑부, 및 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부를 포함한다.
The encrypted file system according to claim 5 is a system for stream encryption, comprising: a root key generation unit for generating a root key for file system encryption, and a plurality of subkeys from a root key through a hash function to construct a key tree A key tree configuration unit, a storage including a plurality of data blocks for storing a ciphertext stream, a mapping unit for mapping data blocks of a plurality of sub keys configured in the key tree, and a plurality of data blocks mapped to the data blocks of the storage And an encryption operation unit for generating a ciphertext stream by performing an XOR operation on the subkey and the plaintext stream.

청구항 6에 따른 키 트리 구성부는,Key tree structure according to claim 6,

교환 연산부 및 키 생성부를 포함하고,An exchange operation unit and a key generation unit,

교환 연산부는,The exchange operation unit,

루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고, 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,Divide the value of the root key into a plurality of subsections, generate a plurality of root keys with different subsection values through position exchange between the divided subsections, divide the value of the subkey into a plurality of subsections, and divide Generating a plurality of subkeys having different subsection values through position exchange between true subsections,

키 생성부는,Key generation unit,

교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고, 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,Generate a plurality of root keys generated through the exchange operator as sub keys having different values using the hash function, and generate a plurality of sub keys generated through the exchange operator using different hash functions. Generated by key,

키 트리 구성부는,The key tree component is

교환 연산부와 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,Compose the key tree by expanding the sub-keys through the exchange operation unit and the key generation unit, and compose the key tree by the depth (h) of the key tree satisfying the following formula,

Figure pat00002
Figure pat00002

m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
m is the number of subsections, and n is the number of data blocks.

청구항 7에 따른 암호 파일 시스템은, 청구항 5의 암호 파일 시스템에 따라 생성된 암호문 스트림을 복호화하는 시스템으로서, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부, 및 키 유도부로부터 유도된 복수의 서브 키와, 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부를 포함한다.
A cryptographic file system according to claim 7 is a system for decrypting a ciphertext stream generated according to the cryptographic file system of claim 5, comprising: a key derivation unit for deriving a plurality of subkeys mapped to a data block of a storage using a hash function; A plurality of sub-keys derived from the key derivation unit, and a decryption operation unit for generating an decrypted text stream by performing an XOR operation on the cipher text stream.

스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한 것이 바람직하다.
The ciphertext stream stored in the storage is preferably accessible in units of data blocks.

청구항 9에 따른 암호 파일 시스템은, 스트림 암호화 및 복호화를 위한 시스템으로서, 파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부, 암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지, 키 트리에 구성된 복수의 서브 키와 스토리지의 데이터 블록들을 매핑하는 매핑부, 및 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부, 및 키 유도부로부터 유도된 복수의 서브 키와, 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부를 포함한다.
A cryptographic file system according to claim 9 is a system for stream encryption and decryption, comprising: a root key generation unit for generating a root key for file system encryption, and generating a plurality of subkeys from a root key through a hash function to generate a key tree; A key tree constructing unit, a storage including a plurality of data blocks for storing a ciphertext stream, a mapping unit for mapping data blocks of a plurality of sub keys configured in a key tree, and data blocks of the storage An encryption operation unit generating a ciphertext stream by performing XOR operation on a plurality of subkeys and a plain text stream, a key derivation unit deriving a plurality of subkeys mapped to a data block of a storage using a hash function, and a plurality of key derivation units derived from a key derivation unit. XOR operation on the subkey and the ciphertext stream to generate a decrypted text stream It includes.

청구항 10에 따른 키 트리 구성부는,Key tree structure according to claim 10,

교환 연산부 및 키 생성부를 포함하고,An exchange operation unit and a key generation unit,

교환 연산부는,The exchange operation unit,

루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고, 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,Divide the value of the root key into a plurality of subsections, generate a plurality of root keys with different subsection values through position exchange between the divided subsections, divide the value of the subkey into a plurality of subsections, and divide Generating a plurality of subkeys having different subsection values through position exchange between true subsections,

키 생성부는,Key generation unit,

교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고, 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,Generate a plurality of root keys generated through the exchange operator as sub keys having different values using the hash function, and generate a plurality of sub keys generated through the exchange operator using different hash functions. Generated by key,

키 트리 구성부는,The key tree component is

교환 연산부와 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,Compose the key tree by expanding the sub-keys through the exchange operation unit and the key generation unit, and compose the key tree by the depth (h) of the key tree satisfying the following formula,

Figure pat00003
Figure pat00003

m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
m is the number of subsections, and n is the number of data blocks.

청구항 11에 따른 스토리지에 저장된 암호문 스트림은 블록 단위로 접근 가능한 것이 바람직하다.
The ciphertext stream stored in the storage according to claim 11 is preferably accessible in units of blocks.

실시예에 따르면, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호화/복호화 방법을 제공할 수 있다.According to an embodiment, it is possible to provide an encryption / decryption method capable of providing a fast operation speed of a stream encryption algorithm and accessibility in units of blocks of a block encryption algorithm.

실시예에 따르면, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호 파일 시스템을 제공할 수 있다.
According to an embodiment, it is possible to provide a cryptographic file system capable of providing a fast operation speed of a stream encryption algorithm and accessibility in units of blocks of a block encryption algorithm.

도 1은 블록 암호화 알고리즘에 대한 개념을 나타낸 도면.
도 2는 스트림 암호화 알고리즘에 대한 개념을 나타낸 도면.
도 3은 본 발명에 대한 개념을 나타낸 도면.
도 4는 실시예에 따른 스트림 암호화/복호화 방법을 나타낸 흐름도.
도 5는 실시예에 따른 키 트리 구성 방법 및 서브 키와 데이터 블록을 매핑하는 방법을 도시한 도면.
도 6은 실시예에 따라 암호문 스트림이 생성되어 스토리지 데이터 블록에 저장되는 과정을 도시한 도면.
도 7 은 실시예에 따른 스트림 암호화 알고리즘을 이용하여 파일을 저장하고 읽어오는 전반적인 과정을 도시한 도면.
도 8은 실시예에 따른 암호 파일 시스템의 전체적인 구성을 나타낸 블록도.
도 9는 실시예에 따른 스트림 암호화 알고리즘(BA-RC4), 종래의 블록 암호화 알고리즘(AES), 및 스트림 암호화 알고리즘(RC4)의 성능 비교를 나타낸 그래프.
1 illustrates a concept for a block encryption algorithm.
2 illustrates a concept for a stream encryption algorithm.
3 illustrates a concept of the present invention.
4 is a flowchart illustrating a stream encryption / decryption method according to an embodiment.
5 illustrates a method of constructing a key tree and a method of mapping a subkey and a data block, according to an exemplary embodiment.
6 is a diagram illustrating a process of generating a cipher text stream and storing it in a storage data block according to an embodiment.
7 is a diagram illustrating an overall process of storing and reading a file using a stream encryption algorithm according to an embodiment.
8 is a block diagram showing the overall configuration of a cryptographic file system according to an embodiment.
9 is a graph showing the performance comparison of the stream encryption algorithm (BA-RC4), the conventional block encryption algorithm (AES), and the stream encryption algorithm (RC4) according to the embodiment.

도 3은 본 발명에 대한 개념을 나타낸 도면이다. 3 is a diagram illustrating the concept of the present invention.

도 3을 참조하면, 본 발명은 블록 단위의 암호화를 위해 사용될 키(key)를 확장시키고, 확장된 키를 이용하여 스토리지의 데이터 블록을 스트림 암호화 알고리즘으로 암호화시킴으로써, 블록 단위의 접근(access)을 제공한다. 키의 확장은, 단 방향 해쉬 함수(one-way hash function)를 이용한 키 트리 구축을 통해 이루어진다. 스트림 암호화/복호화 방법 및 암호 파일 시스템에 대한 실시예를 통하여 보다 상세히 후술하도록 한다.
Referring to FIG. 3, the present invention extends a key to be used for block-by-block encryption, and encrypts a block of data of a storage by a stream encryption algorithm using the extended key, thereby providing block-level access. to provide. Key expansion is accomplished through key tree construction using a one-way hash function. The stream encryption / decryption method and the cipher file system will be described later in more detail through embodiments.

이하, 실시예에 대하여 첨부한 도면을 참조하여 상세하게 설명하기로 한다. 단, 첨부된 도면은 실시예의 내용을 보다 쉽게 개시하기 위하여 설명되는 것일 뿐, 본 발명의 범위가 첨부된 도면의 범위로 한정되는 것이 아님은 이 기술분야의 통상의 지식을 가진 자라면 용이하게 알 수 있을 것이다.Hereinafter, exemplary embodiments will be described in detail with reference to the accompanying drawings. However, the accompanying drawings are only described in order to more easily disclose the contents of the embodiments, the scope of the present invention is not limited to the scope of the accompanying drawings will be readily understood by those of ordinary skill in the art. Could be.

이하에서 설명하는 실시예에 따른 암호화 방식은 BA-RC4로 명명한다. 여기서 ‘BA’는 블록 접근(Block Access)를 의미하며, ‘RC4’는 실시예에서 적용되는 스트림 암호화 알고리즘을 의미한다.
The encryption method according to the embodiment described below is named BA-RC4. Here, 'BA' means block access, and 'RC4' means stream encryption algorithm applied in the embodiment.

1. One. 스트림Stream 암호화/복호화 방법 Encryption / Decryption Method

1) One) 스트림Stream 암호화 방법 Encryption method

도 4는 실시예에 따른 스트림 암호화/복호화 방법을 나타낸 흐름도이다. 도 5는 실시예에 따른 키 트리 구성 방법 및 서브 키와 데이터 블록을 매핑하는 방법을 도시한 도면이다.4 is a flowchart illustrating a stream encryption / decryption method according to an embodiment. 5 illustrates a method of constructing a key tree and a method of mapping a subkey and a data block, according to an exemplary embodiment.

도 4를 참조하면, 실시예에 따른 스트림 암호화 방법은, 루트 키 생성 단계(S410), 키 트리 구성 단계(S420), 서브 키와 데이터 블록 매핑 단계(S430), 및 암호문 스트림 생성 단계(S440)를 포함한다.Referring to FIG. 4, the stream encryption method according to the embodiment includes a root key generation step S410, a key tree construction step S420, a subkey and a data block mapping step S430, and a ciphertext stream generation step S440. It includes.

루트 키 생성 단계(Root key generation step ( S410S410 ))

S410 단계에서는, 평문(plain text)을 암호화하는데 필요한 키 트리를 구성하기 위하여 루트 키(Root Key, K0 ,0)를 생성한다. 여기서 루트 키(Root Key, K0 ,0)는 사용자만이 알고 있는 키로서, 키 트리의 최상위 노드에 있는 키에 해당된다. 단 방향 해쉬 함수는 SHA-1(Secure Hash Algorithm-1)과 같이 보안적으로 안전한 해쉬 함수를 사용하는 것이 바람직하다.In operation S410, a root key K 0 , 0 is generated to construct a key tree necessary for encrypting plain text. Here, the root key (K 0 , 0 ) is a key that only the user knows and corresponds to the key at the top node of the key tree. The one-way hash function preferably uses a securely secure hash function such as Secure Hash Algorithm-1 (SHA-1).

키 트리 구성 단계(Key tree configuration steps ( S420S420 ))

도 5에 도시된 바와 같이, 먼저 루트 키(Root Key, K0 ,0) 값을 복수의 서브섹션으로 나눈다. 서브섹션의 개수(m)는 임의로 설정할 수 있으며, 실시예에서는 4개로 설정하여 설명하도록 한다.As shown in FIG. 5, first, a root key K 0 , 0 is divided into a plurality of subsections. The number (m) of subsections can be set arbitrarily. In an embodiment, the number m is set to four.

다음, 4개로 나누어진 서브섹션(A B C D)을 교환 연산(Swapping Operation)을 통해 교환하여, 해쉬 함수(SHA-1)에 입력될 4개의 루트 키를 생성한다. 4개의 루트 키는 서로 다른 값을 가지며, 한 번의 교환 연산을 통해 생성된다. 예를 들어, 루트 키(Root Key, K0 ,0)의 서브섹션 값이 A B C D 라고 가정하면, 이 서브섹션 값들 간의 위치 교환을 통해 SHA(A B C D), SHA(B A C D), SHA(A C B D), SHA(A B D C)와 같은 해쉬 함수(SHA-1)의 입력 값을 얻어낼 수 있다.Next, the four divided subsections (ABCD) are exchanged through a swapping operation to generate four root keys to be input to the hash function SHA-1. The four root keys have different values and are generated by one exchange operation. For example, assuming that the subsection values of the root key K 0 , 0 are ABCD, SHA (ABCD), SHA (BACD), SHA (ACBD), SHA You can get the input of a hash function (SHA-1) such as (ABDC).

다음, 교환 연산(Swapping Operation)을 통해 얻은 키 값들은 해쉬 함수(SHA-1)에 각각 입력하고, 서로 다른 값을 갖는 새로운 서브 키들(K1 ,0, K1 ,1, K1 ,2, K1,3)을 생성한다. 이에 따라, 하나의 부모 노드에서 자식 노드로 분화됨으로써, 깊이 1의 키 트리가 구성될 수 있다. Next, key values obtained through the swapping operation are inputted to the hash function SHA-1, respectively, and new subkeys K 1 , 0 , K 1 , 1 , K 1 , 2 , K 1,3 ). Accordingly, a key tree having a depth of 1 may be formed by being differentiated from one parent node to a child node.

다음, 해쉬 함수(SHA-1)를 통해 얻어진 각 서브 키들(K1 ,0, K1 ,1, K1 ,2, K1 ,3)의 값을 다시 4개의 서브섹션으로 나눈다. 각 서브섹션 값을 교환 연산(Swapping Operation)을 통해 서로 다른 값을 갖도록 하여, 해쉬 함수(SHA-1)에 입력될 4개의 서브 키를 생성한다. 예를 들어, SHA(B A C D)를 입력 값으로 하여 해쉬 함수(SHA-1)를 통해 얻어진 서브 키가 A’, B’, C’, D’의 서브섹션 값으로 이루어졌다고 가정하면, 상술한 교환 연산(Swapping Operation)을 통해 ‘SHA(A’ B’ C’ D’), SHA(B’ A’ C’ D’), SHA(A’ C’ B’ D’), SHA(A’ B’ D’ C’)와 같은 값을 얻어 낼 수 있다. 이러한 값은 다시 해쉬 함수(SHA-1)로 입력되어 새로운 서브 키들(K2 ,0, K2 ,1, K2 ,2, K2 ,3)이 생성될 수 있다. 이에 따라, 어느 하나의 자식 노드에서 또 다른 자식 노드로 분화됨으로써, 깊이 2의 키 트리가 구성될 수 있다.Next, the sub-keys K 1 , 0 , K 1 , 1 , K 1 , 2 , K 1 , 3 obtained through the hash function SHA-1 are divided into four subsections. Each subsection value has a different value through a swapping operation, thereby generating four subkeys to be input to the hash function SHA-1. For example, suppose that the subkey obtained through the hash function SHA-1 using SHA (BACD) as an input value is composed of subsection values of A ', B', C ', and D'. Swapping Operation: SHA (A 'B' C 'D'), SHA (B 'A' C 'D'), SHA (A 'C' B 'D'), SHA (A 'B' D 'C'). This value is input to the hash function SHA-1 again to generate new subkeys K 2 , 0 , K 2 , 1 , K 2 , 2 , K 2 , and 3 . Accordingly, by dividing from one child node to another child node, a key tree having a depth of 2 can be formed.

키 트리는 상술한 방법들을 통해 키를 확장시켜 나가면서 구성될 수 있다. 키 확장을 위해 새로운 서브 키 값을 얻기 위해서는, 해쉬 함수(SHA-1)에 입력될 값이 서로 달라야 하며, 이를 위해 실시예에서는 서브섹션을 교환하는 방법을 적용하였다. 그러나, 해쉬 함수(SHA-1)의 입력 값을 얻기 위한 방법이 반드시 교환 연산에 의한 방법에만 한정되는 것이 아니라, 다양한 방법들이 적용 가능하다.The key tree can be constructed by extending the key through the above-described methods. In order to obtain a new sub key value for key expansion, values to be input to the hash function SHA-1 should be different from each other. In this embodiment, a method of exchanging subsections is applied. However, the method for obtaining the input value of the hash function SHA-1 is not necessarily limited to the method by the exchange operation, and various methods are applicable.

실시예에 따른 키(루트 키 또는 서브 키)는 하기의 수식과 같이 나타낼 수 있다.The key (root key or sub key) according to the embodiment may be represented by the following formula.

Figure pat00004
Figure pat00004

수학식 1의 h는 키 트리의 깊이를 의미하고, s는 같은 깊이(h)의 노드의 순번(sequence number)을 의미한다. In Equation 1, h denotes a depth of a key tree, and s denotes a sequence number of nodes having the same depth h.

Figure pat00005
는 루트 키를 의미하며, 하나의 부모 키(루트 키 또는 서브 키)
Figure pat00006
는 4 개의 자식 키
Figure pat00007
로 분화될 수 있다.
Figure pat00005
Means the root key, one parent key (root key or subkey)
Figure pat00006
Four child keys
Figure pat00007
Can be differentiated into

실시예에 따른 키 트리는 키 확장을 통해 구성하되, 하기의 수식으로 표현한 조건을 만족하는 깊이(h)로 구성되는 것이 바람직하다.The key tree according to the embodiment is configured through key expansion, but preferably has a depth h that satisfies the condition expressed by the following equation.

Figure pat00008
Figure pat00008

수학식 2의 m은 서브섹션의 개수를 의미하며, n은 스토리지에 구성된 데이터 블록의 개수를 의미한다. 따라서, 수학식 2를 만족하는 깊이(h)의 키 트리가 구성될 때까지 상술한 방법을 반복적으로 수행하여 키 트리를 구축할 수 있다. 예를 들어, 데이터 블록 하나의 크기가 4KB이고, 전체 2MB 크기의 스토리지가 있다고 가정하면, 그 스토리지는 512개의 데이터 블록으로 이루어져 있을 것이다(n=512). 이때, 이를 만족하는 키 트리의 깊이(h)는

Figure pat00009
에 의해 5가 된다. 따라서, 깊이(h)가 5인 키 트리를 형성하면 된다.M in Equation 2 represents the number of subsections, n represents the number of data blocks configured in the storage. Therefore, the above-described method may be repeatedly performed until a key tree having a depth h that satisfies Equation 2 is constructed to construct a key tree. For example, suppose a single data block is 4KB in size and there is a total of 2MB of storage, the storage will consist of 512 data blocks (n = 512). At this time, the depth h of the key tree satisfying this is
Figure pat00009
Becomes 5 by. Therefore, a key tree having a depth h of 5 may be formed.

스토리지 시스템에 구성된 하나의 데이터 블록의 크기가 16KB이고, 하나의 부모 키에서 4개의 자식 키로 분화하면서, 깊이(h)가 12인 키 트리를 구성한다고 가정할 경우, 하기의 수식과 같은 방법에 의해 256GB의 스토리지를 커버할 수 있다.Assuming that the size of one data block configured in the storage system is 16KB, and a key tree having a depth (h) of 12 is formed by dividing from one parent key to four child keys, the following formula is used. It can cover 256GB of storage.

Figure pat00010
Figure pat00010

서브 키 및 데이터 블록 Subkeys and data blocks 매핑Mapping 단계( step( S430S430 ))

S430 단계에서는, 도 5에 도시된 바와 같이, S420 단계를 통해 생성된 서브 키들과 스토리지(700)에 구성된 데이터 블록(B0 … Bx, Bx +1, … By, By +1…B4h-1)을 각각 매핑한다. 예를 들어, 서브 키 “Kh ,x, Kh ,x+1… Kh ,y, Kh ,y+1”은 데이터 블록 “Bx, Bx+1, … By, By +1”과 각각 매핑할 수 있다. In operation S430, as illustrated in FIG. 5, the data blocks B 0 ..., B x , B x +1 ,..., B y , B y +1 ... B 4h-1 ), respectively. For example, the subkeys “K h , x , K h , x + 1 ... K h , y , K h , y + 1 ”represent data blocks“ B x , B x + 1 ,... B y , B y +1 ”.

암호문 cryptogram 스트림Stream 생성 단계( Generation step ( S440S440 ))

도 6은 실시예에 따라 암호문 스트림이 생성되어 스토리지 데이터 블록에 저장되는 과정을 도시한 도면이다.6 is a diagram illustrating a process of generating a cipher text stream and storing it in a storage data block according to an embodiment.

S440 단계에서는, S430을 통해 스토리지의 데이터 블록(B0 … Bx, Bx+1, … By, By +1…B4h-1)에 매핑된 각각의 서브 키들을 이용하여, 평문(plain text) 스트림을 암호화한다. 스트림 암호화 알고리즘에 기초하여 해당 데이터 블록을 암호화한다. 보다 구체적으로, 도 6에 도시된 바와 같이, 해당 데이터 블록에 매핑된 서브 키(401, 402)와, 해당 데이터 블록에 저장될 평문 스트림(501, 502)을 각각 XOR 연산하여 블록 단위로 암호화 스트림(601, 602)을 생성한다.In operation S440, plain text (S 0 ) may be used using respective subkeys mapped to data blocks B 0 ..., B x , B x + 1 ,..., B y , B y +1 ... plain text) Encrypt the stream. The data block is encrypted based on the stream encryption algorithm. More specifically, as shown in FIG. 6, an XOR operation of the subkeys 401 and 402 mapped to the corresponding data block and the plaintext streams 501 and 502 to be stored in the corresponding data block are performed by XOR operation, respectively, in an encrypted stream. Produces (601, 602).

도 6에 도시된 바와 같이, 평문 스트림의 첫 번째 블록은, 키 트리 구성을 통해 생성된 깊이 h의 첫 번째 서브 키(Kh ,0)를 이용하여 암호화되어 스토리지 시스템(700)에 구성된 첫 번째 데이터 블록(B0)에 저장될 수 있다. 또한, 평문 스트림의 두 번째 블록은, 깊이 h의 두 번째 서브 키(Kh ,1)를 이용하여 암호화되어 스토리지 시스템(700)에 구성된 두 번째 데이터 블록(B1)에 저장될 수 있다. 암호화 방법은 스트림 암호화 알고리즘에 기초한다. 서브 키 Kh는 S420 단계를 통해 구성된 키 트리에서 깊이 h에 있는 자식 노드 중 가장 왼쪽에 위치한 첫 번째 자식 노드의 서브 키에 해당하며, 서브 키 Kh는 그 다음 왼쪽에 위치한 두 번째 자식 노드의 서브 키에 해당한다. 스토리지 시스템(700)의 블록 구조에 있어서도, 데이터 블록 B0, B1은 가장 왼쪽부터 첫 번째, 두 번째 위치한 블록이 된다.
As shown in FIG. 6, the first block of the plaintext stream is encrypted using the first subkey (K h , 0 ) of depth h generated through the key tree configuration and configured in the storage system 700. It may be stored in the data block B 0 . In addition, the second block of the plaintext stream may be encrypted using the second sub-key K h , 1 of depth h and stored in the second data block B 1 configured in the storage system 700. The encryption method is based on the stream encryption algorithm. Sub-key K h corresponds to the first sub-key of the first child node in the left-most of the child nodes in the depths h in the key tree constructed by step S420, the sub-key K h is the second child node in the next left Corresponds to the subkey. Also in the block structure of the storage system 700, the data blocks B 0 and B 1 are the first and second blocks located from the left most.

실시예에서는, 암호화를 수행한 후에 아웃소싱된 스토리지를 접근(access)하는데 있어서, 클라우드 서비스 제공자(Cloud Service Provider)와 사용자가 공유한 다른 하나의 키(Ku ,s)가 있다고 가정하며, 사용자는 자신만이 알고 있는 키(키 트리로부터 유도한 키)를 이용하여 암호화를 한 후, 클라우드 서비스 제공자와 사용자가 공유한 다른 하나의 키(Ku ,s)를 이용하여, 다시 한번 암호화를 수행할 수 있다. 이와 같이 이중으로 암호화하는 이유는, 클라우드 서비스 제공자로부터 업로드 또는 다운로드 명령이 있을 경우, 다른 외부의 사용자로부터 기밀성을 보장하기 위함이다.
In the embodiment, it is assumed that there is another key (K u , s ) shared by the Cloud Service Provider and the user in accessing the outsourced storage after performing encryption. After encrypting using a key that only you know (key derived from the key tree), you can use another key (K u , s ) shared by the cloud service provider and the user. Can be. The reason for this double encryption is to ensure confidentiality from other external users when there is an upload or download command from the cloud service provider.

2) 2) 스트림Stream 복호화 방법 Decryption method

도 4를 참조하면, 실시예에 따른 스트림 복호화 방법은, 서브 키 유도 단계(S450) 및 복호문 스트림 생성 단계(S460)를 포함한다.Referring to FIG. 4, the stream decryption method according to the embodiment includes a subkey derivation step S450 and a decryption text stream generation step S460.

서브 키 유도 단계(Subkey derivation step ( S450S450 ))

S450 단계에서는, 스토리지(700)의 데이터 블록에 매핑된 서브 키들을 해쉬 함수를 통해 유도한다. 또한, 특정 블록에 대한 복호화가 필요한 경우, 해당 블록에 매핑된 자식 노드의 서브 키를 해쉬 함수를 이용하여 유도할 수 있다.In operation S450, subkeys mapped to data blocks of the storage 700 are derived through a hash function. In addition, when decryption is required for a specific block, a subkey of a child node mapped to the block may be derived using a hash function.

복호문Decryption 스트림Stream 생성 단계( Generation step ( S460S460 ))

S460 단계에서는, S450 단계를 통해 유도된 해당 서브 키를 이용하여 복호화를 수행할 수 있다. 보다 구체적으로, 유도된 해당 서브 키와 해당 블록에 저장된 복호문 스트림을 XOR 연산하여 평문 스트림을 생성한다. 이때, 복호화 방법은 스트림 암호화 알고리즘에 기초하며, 이를 통해 블록 단위로 복호문 스트림이 생성될 수 있다. 이는, 복호화 과정뿐만 아니라, 암호화 과정에도 블록 단위의 스트림 암호화가 가능하다.In operation S460, decryption may be performed using the corresponding subkey derived through operation S450. More specifically, the plaintext stream is generated by performing an XOR operation on the derived subkey and the decrypted text stream stored in the corresponding block. In this case, the decryption method is based on a stream encryption algorithm, through which a decrypted text stream may be generated in units of blocks. It is possible not only to decrypt but also to encrypt streams in block units.

해쉬 연산은 일반적인 암호화 알고리즘에 비하여 1/10 정도의 복잡도를 가지므로 수행 속도가 매우 빠르며, 특정 블록과 매핑되어 있는 자식 노드의 서브 키를 유도하는데 있어서도 매우 적은 연산 횟수를 통해 유도할 수 있으므로, 매우 빠르게 키를 유도할 수 있다. 이에 따라, 블록 접근성을 제공할 수 있게 될 뿐만 아니라, 각 블록의 암호화를 스트림 암호화 알고리즘에 적용함으로써, 매우 빠른 연산 효율성을 제공할 수 있게 된다.
Hash operation is very fast because it is about 1/10 more complicated than general encryption algorithm, and it can be derived through very small number of operations in deriving subkey of child node mapped to a specific block. You can derive the key quickly. Accordingly, not only can block accessibility be provided, but also the encryption of each block can be applied to the stream encryption algorithm, thereby providing very fast computational efficiency.

도 7 은 실시예에 따른 스트림 암호화 알고리즘을 이용하여 파일을 저장하고 읽어오는 전반적인 과정을 도시한 도면이다.7 is a diagram illustrating an overall process of storing and reading a file using a stream encryption algorithm according to an embodiment.

스토리지(700)에 특정 정보를 저장할 경우, 그 정보를 저장할 위치가 정해지면, 키 트리를 이용하여 저장할 위치에 매핑이 된 키를 유도하여, 암호화를 시킨다. 이후, 통신의 기밀성을 위하여 스토리지 서비스 제공자와 사용자가 공유한 키를 이용하여 추가적인 암호화를 시킨 후 스토리지(700)에 저장하게 된다. When the specific information is stored in the storage 700, when a location to store the information is determined, the key mapped to the location to be stored is derived by using the key tree to be encrypted. Subsequently, an additional encryption is performed using a key shared by a storage service provider and a user for communication confidentiality, and then stored in the storage 700.

스토리지(700)로부터 특정 정보를 읽어올 경우, 그 정보가 저장되어 있는 위치를 알아내고, 아웃소싱된 스토리지로부터 저장되어 있는 정보를 얻어온다. 이후, 스토리지 서비스 제공자와 사용자가 공유한 키를 이용하여 해독한 후, 상기 명시된 키 유도 방법을 이용하여, 키를 유도하고 해독하여 원래 저장했던 데이터를 읽어 올 수 있게 된다.
When specific information is read from the storage 700, the location where the information is stored is found, and the information stored from the outsourced storage is obtained. Thereafter, after decrypting using the key shared by the storage service provider and the user, the key derivation method described above can be used to derive and decrypt the key to read the original stored data.

실시예에 따르면, 해쉬 함수를 이용한 키 확장을 통해 키 트리를 구축하고, 스토리지의 각 블록을 키 트리로부터 유도된 각각 다른 키로 스트림 암호화를 시킴으로써, 블록 암호화 알고리즘의 블록 접근성과 함께, 스트림 암호화 알고리즘의 연산 효율성을 제공할 수 있다.
According to an embodiment, a key tree is constructed through key expansion using a hash function, and each block of the storage is stream-encrypted with a different key derived from the key tree, so that the block encryption algorithm can access the stream encryption algorithm. Can provide computational efficiency.

2. 암호 파일 시스템2. Password file system

도 8은 실시예에 따른 암호 파일 시스템(800)의 전체적인 구성을 나타낸 블록도이다.8 is a block diagram showing the overall configuration of a cryptographic file system 800 according to an embodiment.

도 8을 참조하면, 실시예에 따른 암호 파일 시스템(800)은 스트림 암호화 시스템(810), 스트림 복호화 시스템(820), 및 스토리지(700)를 포함한다. 실시예에 따른 암호 파일 시스템(800)은, 상술한 스트림 암호화/복호화를 위해 구현된 장치이며, 도 3 내지 도 7과 결부하여 설명하도록 한다.Referring to FIG. 8, an encrypted file system 800 according to an embodiment includes a stream encryption system 810, a stream decryption system 820, and a storage 700. The cipher file system 800 according to the embodiment is an apparatus implemented for the stream encryption / decryption described above, and will be described with reference to FIGS. 3 to 7.

1) One) 스트림Stream 암호화 시스템(810) Encryption system (810)

도 8을 참조하면, 실시예에 따른 스트림 암호화 시스템(810)은, 루트 키 생성부(811), 키 트리 구성부(813), 매핑부(815), 및 암호화 연산부(817)를 포함한다.Referring to FIG. 8, the stream encryption system 810 according to the embodiment includes a root key generation unit 811, a key tree construction unit 813, a mapping unit 815, and an encryption operation unit 817.

루트 키 Root key 생성부Generator (811)(811)

루트 키 생성부(811)는, 평문(plain text)을 암호화하는데 필요한 키 트리를 구성하기 위하여 루트 키(Root Key, K0 ,0)를 생성한다. 여기서 루트 키(Root Key, K0,0)는 사용자만이 알고 있는 키로서, 키 트리의 최상위 노드에 있는 키에 해당된다. 단 방향 해쉬 함수는 SHA(Secure Hash Algorithm)-1과 같이 보안적으로 안전한 해쉬 함수를 사용하는 것이 바람직하다.The root key generation unit 811 generates a root key K 0 , 0 in order to construct a key tree necessary for encrypting plain text. Here, the root key K 0,0 is a key that only the user knows and corresponds to the key at the top node of the key tree. The one-way hash function preferably uses a securely secure hash function such as Secure Hash Algorithm (SHA-1).

키 트리 Key tree 구성부Construction (813)(813)

키 트리 구성부(813)는 교환 연산부(미도시) 및 키 생성부(미도시)를 포함한다.The key tree constructing unit 813 includes an exchange calculating unit (not shown) and a key generating unit (not shown).

교환 연산부(미도시)는, 루트 키 값을 복수의 서브섹션으로 나누고, 나누어진 각각의 서브섹션을 교환 연산을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성할 수 있다. 또한, 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 각각의 서브섹션을 교환 연산을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 생성할 수 있다. The exchange operation unit (not shown) may divide a root key value into a plurality of subsections, and generate a plurality of root keys having different subsection values by dividing each divided subsection. In addition, the value of the subkey may be divided into a plurality of subsections, and each of the divided subsections may be generated through a swap operation to generate a plurality of subkeys having different subsection values.

키 생성부(미도시)는, 교환 연산부(미도시)를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성할 수 있다. 또한, 교환 연산부(미도시)를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성할 수 있다.The key generation unit (not shown) may generate a plurality of root keys generated through the exchange operation unit (not shown) as sub keys having different values using a hash function. In addition, a plurality of subkeys generated through an exchange operator (not shown) may be generated as subkeys having different values using a hash function.

이하, 교환 연산부(미도시)와 키 생성부(미도시)를 통한 키 트리 구성 방법에 관하여 보다 상세히 설명한다.Hereinafter, a method of constructing a key tree through an exchange operator (not shown) and a key generator (not shown) will be described in more detail.

먼저, 교환 연산부(미도시)는, 루트 키(Root Key, K0 ,0) 값을 복수의 서브섹션으로 나눌 수 있다. 여기서, 서브섹션의 개수는 임의로 설정할 수 있으며, 실시예에서는 4개로 설정하여 설명하도록 한다.First, the exchange operation unit (not shown) may divide a root key value K 0 , 0 into a plurality of subsections. Here, the number of subsections may be arbitrarily set, and in the embodiment, the number of subsections is set to four.

다음, 교환 연산부(미도시)는, 4개로 나누어진 서브섹션(A B C D)을 교환 연산(Swapping Operation)을 통해 교환하여, 해쉬 함수(SHA-1)에 입력될 4개의 루트 키를 생성할 수 있다. 4개의 루트 키는 서로 다른 값을 가지며, 한번의 교환 연산을 통해 생성된다. 예를 들어, 루트 키(Root Key, K0 ,0)의 서브섹션 값이 A B C D 라고 가정하면, 이 서브섹션 값들 간의 위치 교환을 통해 SHA(A B C D), SHA(B A C D), SHA(A C B D), SHA(A B D C)와 같은 해쉬 함수(SHA-1)의 입력 값을 얻어낼 수 있다.Next, the exchange operation unit (not shown) may generate four root keys to be input to the hash function SHA-1 by exchanging the four subsections ABCD through a swapping operation. . The four root keys have different values and are generated through one exchange operation. For example, assuming that the subsection values of the root key K 0 , 0 are ABCD, SHA (ABCD), SHA (BACD), SHA (ACBD), SHA You can get the input of a hash function (SHA-1) such as (ABDC).

키 생성부(미도시)는, 교환 연산부(미도시)를 통해 얻은 키 값들을 해쉬 함수(SHA-1)에 각각 입력하고, 서로 다른 값을 갖는 새로운 서브 키들(K1 ,0, K1 ,1, K1 ,2, K1,3)을 생성할 수 있다. 이에 따라, 하나의 부모 노드에서 자식 노드로 분화됨으로써, 깊이 1의 키 트리가 구성될 수 있다. The key generator (not shown) inputs the key values obtained through the exchange operator (not shown) to the hash function SHA-1, respectively, and sets new subkeys K 1 , 0 , K 1 , which have different values . 1 , K 1 , 2 , K 1,3 ). Accordingly, a key tree having a depth of 1 may be formed by being differentiated from one parent node to a child node.

다음, 키 생성부(미도시)는, 해쉬 함수(SHA-1)를 통해 얻어진 각 서브 키들(K1 ,0, K1 ,1, K1 ,2, K1 ,3)의 값을 다시 4개의 서브섹션으로 나눌 수 있다. 또한, 각 서브섹션 값을 교환 연산(Swapping Operation)을 통해 서로 다른 값을 갖도록 하여, 해쉬 함수(SHA-1)에 입력될 4개의 서브 키를 생성한다. 예를 들어, SHA(B A C D)를 입력 값으로 하여 해쉬 함수(SHA-1)를 통해 얻어진 서브 키가 A’, B’, C’, D’의 서브섹션 값으로 이루어졌다고 가정하면, 상술한 교환 연산(Swapping Operation)을 통해 ‘SHA(A’ B’ C’ D’), SHA(B’ A’ C’ D’), SHA(A’ C’ B’ D’), SHA(A’ B’ D’ C’)와 같은 값을 얻어 낼 수 있다. 이러한 값은 다시 해쉬 함수(SHA-1)로 입력되어 새로운 서브 키들(K2 ,0, K2 ,1, K2 ,2, K2 ,3)이 생성될 수 있다. 이에 따라, 어느 하나의 자식 노드에서 또 다른 자식 노드로 분화됨으로써, 깊이 2의 키 트리가 구성될 수 있다.Next, the key generation unit (not shown) again resets the values of the sub-keys K 1 , 0 , K 1 , 1 , K 1 , 2 , K 1 , 3 obtained through the hash function SHA-1. It can be divided into subsections. In addition, each subsection value has a different value through a swapping operation, thereby generating four subkeys to be input to the hash function SHA-1. For example, suppose that the subkey obtained through the hash function SHA-1 using SHA (BACD) as an input value is composed of subsection values of A ', B', C ', and D'. Swapping Operation: SHA (A 'B' C 'D'), SHA (B 'A' C 'D'), SHA (A 'C' B 'D'), SHA (A 'B' D 'C'). This value is input to the hash function SHA-1 again to generate new subkeys K 2 , 0 , K 2 , 1 , K 2 , 2 , K 2 , and 3 . Accordingly, by dividing from one child node to another child node, a key tree having a depth of 2 can be formed.

키 트리 구성부(813)는 상술한 방법들을 통해 키를 확장시켜 나가면서 키 트리를 구성할 수 있다. 키 확장을 위해 새로운 서브 키 값을 얻기 위해서는, 해쉬 함수(SHA-1)에 입력될 값이 서로 달라야 하며, 이를 위해 실시예에서는 서브섹션을 교환하는 방법을 적용하였다. 그러나, 해쉬 함수(SHA-1)의 입력 값을 얻기 위한 방법이 반드시 교환 연산에 의한 방법에만 한정되는 것이 아니라, 다양한 방법들이 적용 가능하다.The key tree constructing unit 813 may construct a key tree while extending the key through the above-described methods. In order to obtain a new sub key value for key expansion, values to be input to the hash function SHA-1 should be different from each other. In this embodiment, a method of exchanging subsections is applied. However, the method for obtaining the input value of the hash function SHA-1 is not necessarily limited to the method by the exchange operation, and various methods are applicable.

실시예에 따른 키(루트 키 또는 서브 키)는 하기의 수식과 같이 나타낼 수 있다.The key (root key or sub key) according to the embodiment may be represented by the following formula.

Figure pat00011
Figure pat00011

수학식 4의 h는 키 트리의 깊이를 의미하고, s는 같은 깊이(h)의 노드의 순번(sequence number)을 의미한다. In Equation 4, h denotes a depth of a key tree, and s denotes a sequence number of nodes having the same depth h.

Figure pat00012
는 루트 키를 의미하며, 하나의 부모 키(루트 키 또는 서브 키)
Figure pat00013
는 4 개의 자식 키
Figure pat00014
로 분화될 수 있다.
Figure pat00012
Means the root key, one parent key (root key or subkey)
Figure pat00013
Four child keys
Figure pat00014
Can be differentiated into

실시예에 따른 키 트리는 키 확장을 통해 구성하되, 하기의 수식으로 표현한 조건을 만족하는 깊이(h)로 구성되는 것이 바람직하다.The key tree according to the embodiment is configured through key expansion, but preferably has a depth h that satisfies the condition expressed by the following equation.

Figure pat00015
Figure pat00015

수학식 5의 m은 서브섹션의 개수를 의미하며, n은 스토리지(700)에 구성된 데이터 블록의 개수를 의미한다. 따라서, 수학식 5를 만족하는 깊이(h)의 키 트리가 구성될 때까지 상술한 방법을 반복적으로 수행하여 키 트리를 구축할 수 있다. 예를 들어, 데이터 블록 하나의 크기가 4KB이고, 전체 2MB 크기의 스토리지가 있다고 가정하면, 그 스토리지는 512개의 데이터 블록으로 이루어져 있을 것이다(n=512). 이때, 이를 만족하는 키 트리의 깊이(h)는

Figure pat00016
에 의해 5가 된다. 따라서, 깊이(h)가 5인 키 트리를 형성하면 된다.M in Equation 5 denotes the number of subsections, and n denotes the number of data blocks configured in the storage 700. Accordingly, the above-described method may be repeatedly performed until a key tree having a depth h that satisfies Equation 5 is constructed, thereby constructing a key tree. For example, suppose a single data block is 4KB in size and there is a total of 2MB of storage, the storage will consist of 512 data blocks (n = 512). At this time, the depth h of the key tree satisfying this is
Figure pat00016
Becomes 5 by. Therefore, a key tree having a depth h of 5 may be formed.

스토리지 시스템에 구성된 하나의 데이터 블록의 크기가 16KB이고, 하나의 부모 키에서 4개의 자식 키로 분화하면서, 깊이(h)가 12인 키 트리를 구성한다고 가정할 경우, 하기의 수식과 같은 방법에 의해 256GB의 스토리지를 커버할 수 있다.Assuming that the size of one data block configured in the storage system is 16KB, and a key tree having a depth (h) of 12 is formed by dividing from one parent key to four child keys, the following formula is used. It can cover 256GB of storage.

Figure pat00017
Figure pat00017

매핑부Mapping section (815)(815)

매핑부(815)는 도 5에 도시된 바와 같이, 키 트리 구성부(813)를 통해 생성된 서브 키들과 스토리지(700)에 구성된 데이터 블록(B0 … Bx, Bx+1, … By, By+1…B4h-1)을 각각 매핑한다. 예를 들어, 서브 키 “Kh,x, Kh,x+1… Kh,y, Kh,y+1”은 데이터 블록 “Bx, Bx +1, … By, By +1”과 각각 매핑할 수 있다.As illustrated in FIG. 5, the mapping unit 815 may include the data blocks B 0 ... B x , B x + 1 ,... B configured in the storage 700 and the sub keys generated through the key tree configuration unit 813. y , B y + 1 ... B 4h-1 ), respectively. For example, the subkeys “K h, x , K h, x + 1 ... K h, y , K h, y + 1 ”represent data blocks“ B x , B x +1 ,... B y , B y +1 ”.

암호화 encryption 연산부Calculator (817)(817)

암호화 연산부(817)는, 스토리지의 데이터 블(B0 … Bx, Bx+1, … By, By+1…B4h-1)에 매핑된 각각의 서브 키들을 이용하여, 평문(plain text) 스트림을 암호화할 수 있다. 스트림 암호화 알고리즘에 기초하여 해당 데이터 블록을 암호화한다. 보다 구체적으로, 도 6에 도시된 바와 같이, 해당 데이터 블록에 매핑된 서브 키(401, 402)와, 해당 데이터 블록에 저장될 평문 스트림(501, 502)을 각각 XOR 연산하여 블록 단위로 암호화 스트림(601, 602)을 생성할 수 있다.
The encryption operation unit 817 uses the plain text ( subtexts ) mapped to the data blocks B 0 ... B x , B x + 1 , ... B y , B y + 1 ... B 4h-1 of the storage . plain text) The stream can be encrypted. The data block is encrypted based on the stream encryption algorithm. More specifically, as shown in FIG. 6, an XOR operation of the subkeys 401 and 402 mapped to the corresponding data block and the plaintext streams 501 and 502 to be stored in the corresponding data block are performed by XOR operation, respectively, in an encrypted stream. (601, 602) can be generated.

2) 2) 스트림Stream 복호화 시스템(820) Decryption System (820)

실시예에 따른 스트림 복호화 시스템(810)은, 키 유도부(821) 및 복호화 연산부(823)를 포함한다.The stream decryption system 810 according to the embodiment includes a key derivation unit 821 and a decryption operation unit 823.

키 유도부(821)Key guidance unit 821

키 유도부(821)는, 스토리지(700)의 데이터 블록에 매핑된 서브 키들을 해쉬 함수를 통해 유도한다. 또한, 특정 블록에 대한 복호화가 필요한 경우, 해당 블록에 매핑된 자식 노드의 서브 키를 해쉬 함수를 이용하여 유도할 수 있다.The key derivation unit 821 derives the subkeys mapped to the data block of the storage 700 through a hash function. In addition, when decryption is required for a specific block, a subkey of a child node mapped to the block may be derived using a hash function.

복호화 Decrypt 연산부Calculator (823)(823)

복호화 연산부(823)는, 키 유도부(821)를 통해 유도된 해당 서브 키를 이용하여 복호화를 수행할 수 있다. 보다 구체적으로, 유도된 해당 서브 키와 해당 블록에 저장된 복호문 스트림을 XOR 연산하여 평문 스트림을 생성한다. 이때, 스트림 암호화 알고리즘에 기초하여 복호화를 수행하며, 이를 통해 블록 단위로 복호문 스트림을 생성할 수 있다. 이는, 복호화 과정뿐만 아니라, 암호화 과정에도 블록 단위의 스트림 암호화가 가능하다.
The decryption operation unit 823 may perform decryption using the corresponding subkey derived through the key derivation unit 821. More specifically, the plaintext stream is generated by performing an XOR operation on the derived subkey and the decrypted text stream stored in the corresponding block. At this time, decryption is performed based on the stream encryption algorithm, and through this, a decryption text stream may be generated in units of blocks. It is possible not only to decrypt but also to encrypt streams in block units.

도 9는 실시예에 따른 스트림 암호화 알고리즘(BA-RC4), 종래의 블록 암호화 알고리즘(AES), 및 스트림 암호화 알고리즘(RC4)의 성능 비교를 나타낸 그래프이다.9 is a graph illustrating a performance comparison of the stream encryption algorithm BA-RC4, the conventional block encryption algorithm AES, and the stream encryption algorithm RC4 according to the embodiment.

도 9의 그래프에서 가로축은 스토리지에 접근(access)하는 시작 주소를 의미하고, 세로축은 처리량(throughput)을 나타내는 것으로, 처리량(throughput)은 높으면 높을수록 좋다. 본 실험을 통해 얻은 그래프는, 1MB의 파일을 읽고, 스토리지의 한 블록을 16KB라고 가정할 경우, 접근하는 시작 주소를 변화시켜 가며 처리량(throughput)을 측정한 것이다.In the graph of FIG. 9, the horizontal axis represents a starting address for accessing storage, and the vertical axis represents throughput. The higher the throughput, the better. The graph obtained in this experiment is a measure of throughput by changing the starting address to access a 1MB file and assuming that a block of storage is 16KB.

블록 암호화 알고리즘(AES)의 경우, 블록 단위로 암호화/복호화를 수행하므로, 접근하는 위치와 관계없이 일정한 처리량(throughput)을 보인다. In the case of the block encryption algorithm (AES), since encryption / decryption is performed on a block basis, a certain throughput is shown regardless of the access position.

반면, 스트림 암호화 알고리즘(RC4)의 경우, 접근하는 시작 주소 위치(수치)가 증가함에 따라 처리량(throughput)이 점차 감소하게 된다. 스트림 암호화 알고리즘(RC4)은, 특정 블록을 읽기 위해, 해당 블록을 암호화하는데 사용되었던 난수열을 생성해야 하고, 그러기 위해, 초기 키 값을 이용하여 해당되는 상태가 나올 때까지 난수열을 생성해야 해독할 수 있으므로, 무작위 접근성이 매우 낮다는 단점을 갖는다. 이에 따라, 접근 위치가 멀어질수록 키를 유도하는데 발생되는 시간이 점차 증가하기 때문에, 전체적인 처리량(throughput) 또한 감소되는 것을 알 수 있다.
On the other hand, in the case of the stream encryption algorithm RC4, the throughput gradually decreases as the starting address position (number) to be accessed increases. In order to read a particular block, the stream encryption algorithm (RC4) must generate a random sequence that was used to encrypt that block, and in order to do so, it must generate a random sequence using the initial key value until the corresponding state is obtained. As a result, random accessibility is very low. Accordingly, it can be seen that as the approaching position increases, the time taken to derive the key gradually increases, so that the overall throughput also decreases.

이상에서 보는 바와 같이, 본 발명이 속하는 기술 분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시 될 수 있다는 것을 이해할 수 있을 것이다. As described above, those skilled in the art to which the present invention pertains will understand that the present invention may be implemented in other specific forms without changing the technical spirit or essential features.

그러므로, 이상에서 기술한 실시 예는 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Therefore, the embodiments described above are to be understood in all respects as illustrative and not restrictive, and the scope of the present invention is indicated by the following claims rather than the above description, and the meaning and scope of the claims And all changes or modifications derived from the equivalent concept should be interpreted as being included in the scope of the present invention.

Claims (11)

암호 파일 시스템에서의 스트림 암호화 방법으로서,
파일 시스템 암호화에 사용할 루트 키를 생성하는 단계;
해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 단계;
상기 키 트리에 구성된 복수의 서브 키와, 상기 암호 파일 시스템의 스토리지에 구성된 데이터 블록들을 매핑하는 단계; 및
상기 데이터 블록들에 매핑된 복수의 서브 키와, 상기 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 단계
를 포함하는 해쉬 트리 기반의 스트림 암호화 방법.
As a stream encryption method in a cipher file system,
Generating a root key for use in file system encryption;
Constructing a key tree by generating a plurality of subkeys from the root key through a hash function;
Mapping a plurality of sub keys configured in the key tree and data blocks configured in storage of the cryptographic file system; And
Generating a ciphertext stream by performing an XOR operation on the plurality of subkeys mapped to the data blocks and the plaintext stream.
Hash tree-based stream encryption method comprising a.
제1항에 있어서,
상기 키 트리를 구성하는 단계는,
a. 상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키로 생성하는 단계;
b. 상기 a 단계를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계;
c. 상기 b 단계를 통해 생성된 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키로 생성하는 단계; 및
d. 상기 c 단계를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계를 포함하며,
상기 a 단계 내지 상기 d 단계를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 상기 키 트리의 깊이(h)로 키 트리를 구성하며,
Figure pat00018

m은, 상기 서브섹션의 개수이고,
n은, 상기 데이터 블록의 개수인, 해쉬 트리 기반의 스트림 암호화 방법.
The method of claim 1,
Comprising the key tree,
a. Dividing a value of the root key into a plurality of subsections and generating a plurality of root keys having different subsection values through position exchange between the divided subsections;
b. Generating a plurality of root keys generated through the step a as sub keys having different values using a hash function;
c. Dividing the value of the subkey generated through the step b into a plurality of subsections, and generating a plurality of subkeys having different subsection values through position exchange between the divided subsections; And
d. Generating a plurality of subkeys generated through the step c as subkeys having different values using a hash function,
Comprising a key tree while expanding the sub-key through the steps a to d, and comprises a key tree to the depth (h) of the key tree that satisfies the following formula,
Figure pat00018

m is the number of the subsections,
n is the number of data blocks, hash tree-based stream encryption method.
제1항의 방법에 따라 생성된 상기 암호문 스트림을 복호화하는 방법으로서,
상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 통하여 유도하는 단계; 및
해쉬 함수를 통해 유도된 복수의 서브 키와 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 단계
를 포함하는 해쉬 트리 기반의 스트림 복호화 방법.
A method of decrypting the ciphertext stream generated according to the method of claim 1,
Deriving a plurality of subkeys mapped to data blocks of the storage through a hash function; And
Generating a decrypted text stream by performing an XOR operation on the ciphertext stream and the plurality of sub keys derived through a hash function
Hash tree-based stream decoding method comprising a.
제3항에 있어서,
상기 스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한, 해쉬 트리 기반의 스트림 복호화 방법.
The method of claim 3,
The ciphertext stream stored in the storage can be accessed in units of data blocks.
스트림 암호화를 위한 시스템으로서,
파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부;
해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부;
암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지;
상기 키 트리에 구성된 복수의 서브 키와 상기 스토리지의 데이터 블록들을 매핑하는 매핑부; 및
상기 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 상기 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부
를 포함하는 암호 파일 시스템.
A system for stream encryption,
A root key generation unit generating a root key for use in encrypting the file system;
A key tree construction unit generating a plurality of sub keys from the root key through a hash function to construct a key tree;
Storage including a plurality of data blocks for storing a ciphertext stream;
A mapping unit for mapping the plurality of sub keys configured in the key tree and data blocks of the storage; And
An encryption operation unit generating an encrypted text stream by performing an XOR operation on the plurality of sub keys mapped to the data blocks of the storage and the plain text stream.
Password file system comprising a.
제5항에 있어서,
상기 키 트리 구성부는,
교환 연산부 및 키 생성부를 포함하고,
상기 교환 연산부는,
상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고,
상기 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
상기 키 생성부는,
상기 교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고,
상기 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
상기 키 트리 구성부는,
상기 교환 연산부와 상기 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
Figure pat00019

m은 상기 서브섹션의 개수이고,
n은 상기 데이터 블록의 개수인, 암호 파일 시스템.
The method of claim 5,
The key tree configuration unit,
An exchange operation unit and a key generation unit,
The exchange operation unit,
Dividing the value of the root key into a plurality of subsections, and generating a plurality of root keys having different subsection values through position exchange between the divided subsections,
Dividing a value of the sub key into a plurality of subsections, and generating a plurality of subkeys having different subsection values through position exchange between the divided subsections,
The key generation unit,
Generating a plurality of root keys generated through the exchange operation unit as sub keys having different values using a hash function,
Generating a plurality of subkeys generated through the exchange operation unit as subkeys having different values using a hash function,
The key tree configuration unit,
Comprising a key tree while extending the sub-key through the exchange operation unit and the key generation unit, and constitutes a key tree with a depth (h) of the key tree that satisfies the following formula,
Figure pat00019

m is the number of the subsections,
n is the number of data blocks.
제5항의 암호 파일 시스템에 따라 생성된 상기 암호문 스트림을 복호화하는 시스템으로서,
상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부; 및
상기 키 유도부로부터 유도된 복수의 서브 키와, 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부
를 포함하는 암호 파일 시스템.
A system for decrypting the ciphertext stream generated according to the cipher file system of claim 5,
A key derivation unit for deriving a plurality of sub keys mapped to the data block of the storage using a hash function; And
A decryption calculator configured to generate a decrypted-text stream by performing an XOR operation on the plurality of sub-keys derived from the key derivation unit and the ciphertext stream.
Password file system comprising a.
제7항에 있어서,
상기 스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한, 암호 파일 시스템.
The method of claim 7, wherein
The ciphertext stream stored in the storage is accessible in data block units.
스트림 암호화 및 복호화를 위한 시스템으로서,
파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부;
해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부;
암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지;
상기 키 트리에 구성된 복수의 서브 키와 상기 스토리지의 데이터 블록들을 매핑하는 매핑부; 및
상기 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 상기 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부;
상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부; 및
상기 키 유도부로부터 유도된 복수의 서브 키와, 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부
를 포함하는 암호 파일 시스템.
A system for stream encryption and decryption,
A root key generation unit generating a root key for use in encrypting the file system;
A key tree construction unit generating a plurality of sub keys from the root key through a hash function to construct a key tree;
Storage including a plurality of data blocks for storing a ciphertext stream;
A mapping unit for mapping the plurality of sub keys configured in the key tree and data blocks of the storage; And
An encryption operator configured to generate a ciphertext stream by performing an XOR operation on the plurality of subkeys mapped to the data blocks of the storage and the plaintext stream;
A key derivation unit for deriving a plurality of sub keys mapped to the data block of the storage using a hash function; And
A decryption calculator configured to generate a decrypted-text stream by performing an XOR operation on the plurality of sub-keys derived from the key derivation unit and the ciphertext stream.
Password file system comprising a.
제9항에 있어서,
상기 키 트리 구성부는,
교환 연산부 및 키 생성부를 포함하고,
상기 교환 연산부는,
상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고,
상기 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
상기 키 생성부는,
상기 교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고,
상기 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
상기 키 트리 구성부는,
상기 교환 연산부와 상기 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
Figure pat00020

m은 상기 서브섹션의 개수이고,
n은 상기 데이터 블록의 개수인, 암호 파일 시스템.
10. The method of claim 9,
The key tree configuration unit,
An exchange operation unit and a key generation unit,
The exchange operation unit,
Dividing the value of the root key into a plurality of subsections, and generating a plurality of root keys having different subsection values through position exchange between the divided subsections,
Dividing a value of the sub key into a plurality of subsections, and generating a plurality of subkeys having different subsection values through position exchange between the divided subsections,
The key generation unit,
Generating a plurality of root keys generated through the exchange operation unit as sub keys having different values using a hash function,
Generating a plurality of subkeys generated through the exchange operation unit as subkeys having different values using a hash function,
The key tree configuration unit,
Comprising a key tree while extending the sub-key through the exchange operation unit and the key generation unit, and constitutes a key tree with a depth (h) of the key tree that satisfies the following formula,
Figure pat00020

m is the number of the subsections,
n is the number of data blocks.
제9항에 있어서,
상기 스토리지에 저장된 암호문 스트림은 블록 단위로 접근 가능한, 암호 파일 시스템.
10. The method of claim 9,
The ciphertext stream stored in the storage is accessible in block units.
KR1020100037773A 2010-04-23 2010-04-23 Method for encrypting and decrypting stream and cryptographic file systems thereof KR101133988B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100037773A KR101133988B1 (en) 2010-04-23 2010-04-23 Method for encrypting and decrypting stream and cryptographic file systems thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100037773A KR101133988B1 (en) 2010-04-23 2010-04-23 Method for encrypting and decrypting stream and cryptographic file systems thereof

Publications (2)

Publication Number Publication Date
KR20110118273A true KR20110118273A (en) 2011-10-31
KR101133988B1 KR101133988B1 (en) 2012-04-05

Family

ID=45031897

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100037773A KR101133988B1 (en) 2010-04-23 2010-04-23 Method for encrypting and decrypting stream and cryptographic file systems thereof

Country Status (1)

Country Link
KR (1) KR101133988B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101336144B1 (en) * 2012-08-31 2013-12-02 성균관대학교산학협력단 Key management method and system, and source authentication method and system in network
WO2014105146A1 (en) * 2012-12-29 2014-07-03 Intel Corporation Secure key derivation and cryptography logic for integrated circuits

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101566416B1 (en) * 2014-07-07 2015-11-09 건국대학교 산학협력단 Method and device of data encription with increased security

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735313B1 (en) * 1999-05-07 2004-05-11 Lucent Technologies Inc. Cryptographic method and apparatus for restricting access to transmitted programming content using hash functions and program identifiers
JP2002108710A (en) * 2000-07-24 2002-04-12 Sony Corp System and method for processing information, information processor and program providing medium

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101336144B1 (en) * 2012-08-31 2013-12-02 성균관대학교산학협력단 Key management method and system, and source authentication method and system in network
WO2014105146A1 (en) * 2012-12-29 2014-07-03 Intel Corporation Secure key derivation and cryptography logic for integrated circuits
US9390291B2 (en) 2012-12-29 2016-07-12 Intel Corporation Secure key derivation and cryptography logic for integrated circuits

Also Published As

Publication number Publication date
KR101133988B1 (en) 2012-04-05

Similar Documents

Publication Publication Date Title
CN106850221B (en) Information encryption and decryption method and device
JP6083234B2 (en) Cryptographic processing device
JP6363032B2 (en) Key change direction control system and key change direction control method
JP6575532B2 (en) Encryption device, decryption device, encryption processing system, encryption method, decryption method, encryption program, and decryption program
Jin et al. A secure and lightweight data access control scheme for mobile cloud computing
JP6522263B2 (en) Homomorphic arithmetic unit, cryptographic system and homomorphic arithmetic program
KR20150073753A (en) Apparatus and methdo for giving the compressed encryption functionality to integer-based homomorphic encryption schemes
CN109039611B (en) Decruption key segmentation and decryption method, device, medium based on SM9 algorithm
CN104158880A (en) User-end cloud data sharing solution
CN113726517A (en) Information sharing method and device
CN113098675B (en) Binary data encryption system and method based on polynomial complete homomorphism
JP2006311383A (en) Data managing method, data management system and data managing device
KR101899130B1 (en) Methods for encrypting data, decrypting data and apparatus using the same
KR101133988B1 (en) Method for encrypting and decrypting stream and cryptographic file systems thereof
JP7325689B2 (en) Ciphertext conversion system, conversion key generation method, and conversion key generation program
CN114257402B (en) Encryption algorithm determining method, device, computer equipment and storage medium
JP4685621B2 (en) Key generation apparatus, encryption apparatus, decryption apparatus, multiplicative knapsack cryptosystem, multiplicative knapsack cipher decryption method and program
JP6203387B2 (en) Encryption device, storage system, decryption device, encryption method, decryption method, encryption program, and decryption program
JP7125857B2 (en) Encryption system, encryption device, decryption device, encryption method, decryption method, and program
KR101076747B1 (en) Method and apparatus for random accessible encryption and decryption by using a hierarchical tree structure of stream cipher module
US11743039B2 (en) System and method for data encryption using key derivation
WO2018011825A1 (en) Encryption and decryption of messages
Mahajan et al. Hybrid Methods for Increasing Security of IoT and Cloud Data
Tan et al. Key policy-attribute based fully homomorphic encryption (KP-ABFHE) scheme for securing cloud application in multi-users environment
Singh et al. Security of Data with 3DES & Watermarking Algorithm

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150226

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee