KR20110118273A - 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 - Google Patents
해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key 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/083—Key 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/0833—Key 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/0836—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic 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 연산하여 암호문 스트림을 생성하는 단계를 포함한다.
실시예에 따른 스트림 암호화 방법은, 파일 시스템 암호화에 사용할 루트 키를 생성하는 단계, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 단계, 키 트리에 구성된 복수의 서브 키와 암호 파일 시스템의 스토리지에 구성된 데이터 블록들을 매핑하는 단계, 및 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 단계를 포함한다.
Description
스트림 암호화/복호화 방법 및 암호 파일 시스템에 관한 것이다.
“Amazon Simple Storage Service(S3)”와 같은 서비스가 활성화되면서, 사용자의 정보가 자신의 컴퓨터 장치에 저장되는 것이 아닌, 중앙 서버에 저장되는 스토리지 아웃소싱 서비스 시장이 커지고 있다. 이러한 서비스에 의해 스토리지 장치의 확장 없이, 필요한 만큼 저장장치를 임대하여 사용할 수 있게 되어, 그에 따른 편리성이 증대되었다.
그러나 이러한 서비스의 활성화는 새로운 보안 문제를 야기하고 있다. 즉, 사용자의 정보가 자신의 PC 등이 아닌 인터넷 상의 다른 서버에 저장됨으로써, 기밀성에 대한 문제가 발생하게 된 것이다. 자신의 PC에는 아무런 암호화 없이 저장되어도 아무런 상관이 없었던 것들이 사용자 정보의 저장위치가 바뀜에 따라 기밀성이 중요한 문제로 대두되고 있다.
이러한 문제를 해결하기 위해 암호 파일 시스템이란 것이 개발되었다. 암호 파일 시스템이란, 사용자의 데이터를 그대로 저장하는 것이 아니라, 암호화하여 저장하는 시스템을 의미한다.
데이터 암호화(encryption)란 가치가 있는 정보(평문, plain text)를 제 3자가 의미를 알 수 없는 형식(암호문, cipher text)으로 변환하는 것을 의미하며, 평문은 암호 키를 사용하여 암호문으로 변환될 수 있다. 이와 반대로, 데이터 복호화(decryption)란 암호문을 평문으로 변환하는 것을 의미한다. 기억 장치에 저장되어 있거나 통신 회선을 통해 전송된 암호문은 복호 키를 사용하여 원래의 정보로 복원될 수 있다. 복호 키를 갖고 있지 않은 사람은 원래의 정보로 올바르게 복원할 수 없으므로, 복호 키가 제3자에게 알려지지 않으면 정보는 보호된다.
일반적으로, 데이터를 암호화하는 방법에는 블록 암호화 알고리즘과 스트림 암호화 알고리즘으로 분류된다.
도 1은 블록 암호화 알고리즘에 대한 개념을 나타낸 도면이다. 도 2는 스트림 암호화 알고리즘에 대한 개념을 나타낸 도면이다.
블록 암호화 알고리즘은, 데이터를 블록 단위로 암호화하는 알고리즘으로서, 통상 128비트 단위로 암호화시키는 알고리즘이다.
스트림 암호화 알고리즘은, 사용자의 키를 씨드 키(seed key) 값으로 하여 무작위 수를 발생시켜, 평문과 XOR 연산을 통해 암호화시키는 알고리즘이다.
이러한 두 가지 알고리즘은 각각 다음과 같은 장단점을 가지고 있다.
블록 암호화 알고리즘은, 블록 단위로 암호화를 시키기 때문에 블록 단위의 접근이 가능하다는 장점을 갖는다. 그러나, 스트림 암호화 알고리즘이 비해 매우 복잡한 연산 과정이 수반되어야 한다는 단점을 가지고 있다.
스트림 암호화 알고리즘은, 난수열과 평문의 XOR 연산을 통해 암호화 시키기 때문에, 연산 속도가 매우 빠르다는 장점을 갖는다. 그러나, 암호화된 데이터 중 특정 블록을 해독하기 위해서는, 해당 블록을 암호화하는데 사용되었던 난수열을 생성해야 하고, 또한 그러기 위해 씨드 키 값을 이용하여 해당 상태가 나올 때까지 난수열을 생성해야 해독할 수 있으므로, 무작위 접근성이 매우 낮다는 단점을 갖는다.
따라서, 일반적인 블록 암호화 알고리즘은 블록 단위의 접근성을 제공하지만, 연산 복잡도가 스트림 암호화 알고리즘에 비해 높다는 단점이 있고, 스트림 암호화 알고리즘은 블록 암호화 알고리즘에 비해 연산 속도가 매우 빠르다는 장점이 있지만, 블록 단위의 접근성이 제공되지 않는다는 단점이 있다.
실시예는, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호화 및 복호화 방법을 제공하는 것에 목적이 있다.
실시예는, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호 파일 시스템을 제공하는 것에 목적이 있다.
청구항 1에 따른 스트림 암호화 방법은, 암호 파일 시스템에서의 스트림 암호화 방법으로서, 파일 시스템 암호화에 사용할 루트 키를 생성하는 단계, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 단계, 키 트리에 구성된 복수의 서브 키와 암호 파일 시스템의 스토리지에 구성된 데이터 블록들을 매핑하는 단계, 및 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 단계를 포함한다.
청구항 2에 따른 키 트리를 구성하는 단계는,
a. 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키로 생성하는 단계, b. a 단계를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계, c. b 단계를 통해 생성된 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키로 생성하는 단계, 및 d. c 단계를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계를 포함하며,
a 단계 내지 d 단계를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
실시예에 따른 스트림 복호화 방법은, 청구항 1에 따라 생성된 암호문 스트림을 복호화하는 방법으로서, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 통하여 유도하는 단계, 및 해쉬 함수를 통해 유도된 복수의 서브 키와 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 단계를 포함한다.
스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한 것이 바람직하다.
청구항 5에 따른 암호 파일 시스템은, 스트림 암호화를 위한 시스템으로서, 파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부, 암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지, 키 트리에 구성된 복수의 서브 키와 스토리지의 데이터 블록들을 매핑하는 매핑부, 및 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부를 포함한다.
청구항 6에 따른 키 트리 구성부는,
교환 연산부 및 키 생성부를 포함하고,
교환 연산부는,
루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고, 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
키 생성부는,
교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고, 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
키 트리 구성부는,
교환 연산부와 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
청구항 7에 따른 암호 파일 시스템은, 청구항 5의 암호 파일 시스템에 따라 생성된 암호문 스트림을 복호화하는 시스템으로서, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부, 및 키 유도부로부터 유도된 복수의 서브 키와, 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부를 포함한다.
스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한 것이 바람직하다.
청구항 9에 따른 암호 파일 시스템은, 스트림 암호화 및 복호화를 위한 시스템으로서, 파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부, 암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지, 키 트리에 구성된 복수의 서브 키와 스토리지의 데이터 블록들을 매핑하는 매핑부, 및 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부, 및 키 유도부로부터 유도된 복수의 서브 키와, 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부를 포함한다.
청구항 10에 따른 키 트리 구성부는,
교환 연산부 및 키 생성부를 포함하고,
교환 연산부는,
루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고, 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
키 생성부는,
교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고, 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
키 트리 구성부는,
교환 연산부와 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
청구항 11에 따른 스토리지에 저장된 암호문 스트림은 블록 단위로 접근 가능한 것이 바람직하다.
실시예에 따르면, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호화/복호화 방법을 제공할 수 있다.
실시예에 따르면, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호 파일 시스템을 제공할 수 있다.
도 1은 블록 암호화 알고리즘에 대한 개념을 나타낸 도면.
도 2는 스트림 암호화 알고리즘에 대한 개념을 나타낸 도면.
도 3은 본 발명에 대한 개념을 나타낸 도면.
도 4는 실시예에 따른 스트림 암호화/복호화 방법을 나타낸 흐름도.
도 5는 실시예에 따른 키 트리 구성 방법 및 서브 키와 데이터 블록을 매핑하는 방법을 도시한 도면.
도 6은 실시예에 따라 암호문 스트림이 생성되어 스토리지 데이터 블록에 저장되는 과정을 도시한 도면.
도 7 은 실시예에 따른 스트림 암호화 알고리즘을 이용하여 파일을 저장하고 읽어오는 전반적인 과정을 도시한 도면.
도 8은 실시예에 따른 암호 파일 시스템의 전체적인 구성을 나타낸 블록도.
도 9는 실시예에 따른 스트림 암호화 알고리즘(BA-RC4), 종래의 블록 암호화 알고리즘(AES), 및 스트림 암호화 알고리즘(RC4)의 성능 비교를 나타낸 그래프.
도 2는 스트림 암호화 알고리즘에 대한 개념을 나타낸 도면.
도 3은 본 발명에 대한 개념을 나타낸 도면.
도 4는 실시예에 따른 스트림 암호화/복호화 방법을 나타낸 흐름도.
도 5는 실시예에 따른 키 트리 구성 방법 및 서브 키와 데이터 블록을 매핑하는 방법을 도시한 도면.
도 6은 실시예에 따라 암호문 스트림이 생성되어 스토리지 데이터 블록에 저장되는 과정을 도시한 도면.
도 7 은 실시예에 따른 스트림 암호화 알고리즘을 이용하여 파일을 저장하고 읽어오는 전반적인 과정을 도시한 도면.
도 8은 실시예에 따른 암호 파일 시스템의 전체적인 구성을 나타낸 블록도.
도 9는 실시예에 따른 스트림 암호화 알고리즘(BA-RC4), 종래의 블록 암호화 알고리즘(AES), 및 스트림 암호화 알고리즘(RC4)의 성능 비교를 나타낸 그래프.
도 3은 본 발명에 대한 개념을 나타낸 도면이다.
도 3을 참조하면, 본 발명은 블록 단위의 암호화를 위해 사용될 키(key)를 확장시키고, 확장된 키를 이용하여 스토리지의 데이터 블록을 스트림 암호화 알고리즘으로 암호화시킴으로써, 블록 단위의 접근(access)을 제공한다. 키의 확장은, 단 방향 해쉬 함수(one-way hash function)를 이용한 키 트리 구축을 통해 이루어진다. 스트림 암호화/복호화 방법 및 암호 파일 시스템에 대한 실시예를 통하여 보다 상세히 후술하도록 한다.
이하, 실시예에 대하여 첨부한 도면을 참조하여 상세하게 설명하기로 한다. 단, 첨부된 도면은 실시예의 내용을 보다 쉽게 개시하기 위하여 설명되는 것일 뿐, 본 발명의 범위가 첨부된 도면의 범위로 한정되는 것이 아님은 이 기술분야의 통상의 지식을 가진 자라면 용이하게 알 수 있을 것이다.
이하에서 설명하는 실시예에 따른 암호화 방식은 BA-RC4로 명명한다. 여기서 ‘BA’는 블록 접근(Block Access)를 의미하며, ‘RC4’는 실시예에서 적용되는 스트림 암호화 알고리즘을 의미한다.
1.
스트림
암호화/복호화 방법
1)
스트림
암호화 방법
도 4는 실시예에 따른 스트림 암호화/복호화 방법을 나타낸 흐름도이다. 도 5는 실시예에 따른 키 트리 구성 방법 및 서브 키와 데이터 블록을 매핑하는 방법을 도시한 도면이다.
도 4를 참조하면, 실시예에 따른 스트림 암호화 방법은, 루트 키 생성 단계(S410), 키 트리 구성 단계(S420), 서브 키와 데이터 블록 매핑 단계(S430), 및 암호문 스트림 생성 단계(S440)를 포함한다.
루트 키 생성 단계(
S410
)
S410 단계에서는, 평문(plain text)을 암호화하는데 필요한 키 트리를 구성하기 위하여 루트 키(Root Key, K0 ,0)를 생성한다. 여기서 루트 키(Root Key, K0 ,0)는 사용자만이 알고 있는 키로서, 키 트리의 최상위 노드에 있는 키에 해당된다. 단 방향 해쉬 함수는 SHA-1(Secure Hash Algorithm-1)과 같이 보안적으로 안전한 해쉬 함수를 사용하는 것이 바람직하다.
키 트리 구성 단계(
S420
)
도 5에 도시된 바와 같이, 먼저 루트 키(Root Key, K0 ,0) 값을 복수의 서브섹션으로 나눈다. 서브섹션의 개수(m)는 임의로 설정할 수 있으며, 실시예에서는 4개로 설정하여 설명하도록 한다.
다음, 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)의 입력 값을 얻어낼 수 있다.
다음, 교환 연산(Swapping Operation)을 통해 얻은 키 값들은 해쉬 함수(SHA-1)에 각각 입력하고, 서로 다른 값을 갖는 새로운 서브 키들(K1 ,0, K1 ,1, K1 ,2, K1,3)을 생성한다. 이에 따라, 하나의 부모 노드에서 자식 노드로 분화됨으로써, 깊이 1의 키 트리가 구성될 수 있다.
다음, 해쉬 함수(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의 키 트리가 구성될 수 있다.
키 트리는 상술한 방법들을 통해 키를 확장시켜 나가면서 구성될 수 있다. 키 확장을 위해 새로운 서브 키 값을 얻기 위해서는, 해쉬 함수(SHA-1)에 입력될 값이 서로 달라야 하며, 이를 위해 실시예에서는 서브섹션을 교환하는 방법을 적용하였다. 그러나, 해쉬 함수(SHA-1)의 입력 값을 얻기 위한 방법이 반드시 교환 연산에 의한 방법에만 한정되는 것이 아니라, 다양한 방법들이 적용 가능하다.
실시예에 따른 키(루트 키 또는 서브 키)는 하기의 수식과 같이 나타낼 수 있다.
수학식 1의 h는 키 트리의 깊이를 의미하고, s는 같은 깊이(h)의 노드의 순번(sequence number)을 의미한다.
실시예에 따른 키 트리는 키 확장을 통해 구성하되, 하기의 수식으로 표현한 조건을 만족하는 깊이(h)로 구성되는 것이 바람직하다.
수학식 2의 m은 서브섹션의 개수를 의미하며, n은 스토리지에 구성된 데이터 블록의 개수를 의미한다. 따라서, 수학식 2를 만족하는 깊이(h)의 키 트리가 구성될 때까지 상술한 방법을 반복적으로 수행하여 키 트리를 구축할 수 있다. 예를 들어, 데이터 블록 하나의 크기가 4KB이고, 전체 2MB 크기의 스토리지가 있다고 가정하면, 그 스토리지는 512개의 데이터 블록으로 이루어져 있을 것이다(n=512). 이때, 이를 만족하는 키 트리의 깊이(h)는 에 의해 5가 된다. 따라서, 깊이(h)가 5인 키 트리를 형성하면 된다.
스토리지 시스템에 구성된 하나의 데이터 블록의 크기가 16KB이고, 하나의 부모 키에서 4개의 자식 키로 분화하면서, 깊이(h)가 12인 키 트리를 구성한다고 가정할 경우, 하기의 수식과 같은 방법에 의해 256GB의 스토리지를 커버할 수 있다.
서브 키 및 데이터 블록
매핑
단계(
S430
)
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”과 각각 매핑할 수 있다.
암호문
스트림
생성 단계(
S440
)
도 6은 실시예에 따라 암호문 스트림이 생성되어 스토리지 데이터 블록에 저장되는 과정을 도시한 도면이다.
S440 단계에서는, S430을 통해 스토리지의 데이터 블록(B0 … Bx, Bx+1, … By, By +1…B4h-1)에 매핑된 각각의 서브 키들을 이용하여, 평문(plain text) 스트림을 암호화한다. 스트림 암호화 알고리즘에 기초하여 해당 데이터 블록을 암호화한다. 보다 구체적으로, 도 6에 도시된 바와 같이, 해당 데이터 블록에 매핑된 서브 키(401, 402)와, 해당 데이터 블록에 저장될 평문 스트림(501, 502)을 각각 XOR 연산하여 블록 단위로 암호화 스트림(601, 602)을 생성한다.
도 6에 도시된 바와 같이, 평문 스트림의 첫 번째 블록은, 키 트리 구성을 통해 생성된 깊이 h의 첫 번째 서브 키(Kh ,0)를 이용하여 암호화되어 스토리지 시스템(700)에 구성된 첫 번째 데이터 블록(B0)에 저장될 수 있다. 또한, 평문 스트림의 두 번째 블록은, 깊이 h의 두 번째 서브 키(Kh ,1)를 이용하여 암호화되어 스토리지 시스템(700)에 구성된 두 번째 데이터 블록(B1)에 저장될 수 있다. 암호화 방법은 스트림 암호화 알고리즘에 기초한다. 서브 키 Kh는 S420 단계를 통해 구성된 키 트리에서 깊이 h에 있는 자식 노드 중 가장 왼쪽에 위치한 첫 번째 자식 노드의 서브 키에 해당하며, 서브 키 Kh는 그 다음 왼쪽에 위치한 두 번째 자식 노드의 서브 키에 해당한다. 스토리지 시스템(700)의 블록 구조에 있어서도, 데이터 블록 B0, B1은 가장 왼쪽부터 첫 번째, 두 번째 위치한 블록이 된다.
실시예에서는, 암호화를 수행한 후에 아웃소싱된 스토리지를 접근(access)하는데 있어서, 클라우드 서비스 제공자(Cloud Service Provider)와 사용자가 공유한 다른 하나의 키(Ku ,s)가 있다고 가정하며, 사용자는 자신만이 알고 있는 키(키 트리로부터 유도한 키)를 이용하여 암호화를 한 후, 클라우드 서비스 제공자와 사용자가 공유한 다른 하나의 키(Ku ,s)를 이용하여, 다시 한번 암호화를 수행할 수 있다. 이와 같이 이중으로 암호화하는 이유는, 클라우드 서비스 제공자로부터 업로드 또는 다운로드 명령이 있을 경우, 다른 외부의 사용자로부터 기밀성을 보장하기 위함이다.
2)
스트림
복호화 방법
도 4를 참조하면, 실시예에 따른 스트림 복호화 방법은, 서브 키 유도 단계(S450) 및 복호문 스트림 생성 단계(S460)를 포함한다.
서브 키 유도 단계(
S450
)
S450 단계에서는, 스토리지(700)의 데이터 블록에 매핑된 서브 키들을 해쉬 함수를 통해 유도한다. 또한, 특정 블록에 대한 복호화가 필요한 경우, 해당 블록에 매핑된 자식 노드의 서브 키를 해쉬 함수를 이용하여 유도할 수 있다.
복호문
스트림
생성 단계(
S460
)
S460 단계에서는, S450 단계를 통해 유도된 해당 서브 키를 이용하여 복호화를 수행할 수 있다. 보다 구체적으로, 유도된 해당 서브 키와 해당 블록에 저장된 복호문 스트림을 XOR 연산하여 평문 스트림을 생성한다. 이때, 복호화 방법은 스트림 암호화 알고리즘에 기초하며, 이를 통해 블록 단위로 복호문 스트림이 생성될 수 있다. 이는, 복호화 과정뿐만 아니라, 암호화 과정에도 블록 단위의 스트림 암호화가 가능하다.
해쉬 연산은 일반적인 암호화 알고리즘에 비하여 1/10 정도의 복잡도를 가지므로 수행 속도가 매우 빠르며, 특정 블록과 매핑되어 있는 자식 노드의 서브 키를 유도하는데 있어서도 매우 적은 연산 횟수를 통해 유도할 수 있으므로, 매우 빠르게 키를 유도할 수 있다. 이에 따라, 블록 접근성을 제공할 수 있게 될 뿐만 아니라, 각 블록의 암호화를 스트림 암호화 알고리즘에 적용함으로써, 매우 빠른 연산 효율성을 제공할 수 있게 된다.
도 7 은 실시예에 따른 스트림 암호화 알고리즘을 이용하여 파일을 저장하고 읽어오는 전반적인 과정을 도시한 도면이다.
스토리지(700)에 특정 정보를 저장할 경우, 그 정보를 저장할 위치가 정해지면, 키 트리를 이용하여 저장할 위치에 매핑이 된 키를 유도하여, 암호화를 시킨다. 이후, 통신의 기밀성을 위하여 스토리지 서비스 제공자와 사용자가 공유한 키를 이용하여 추가적인 암호화를 시킨 후 스토리지(700)에 저장하게 된다.
스토리지(700)로부터 특정 정보를 읽어올 경우, 그 정보가 저장되어 있는 위치를 알아내고, 아웃소싱된 스토리지로부터 저장되어 있는 정보를 얻어온다. 이후, 스토리지 서비스 제공자와 사용자가 공유한 키를 이용하여 해독한 후, 상기 명시된 키 유도 방법을 이용하여, 키를 유도하고 해독하여 원래 저장했던 데이터를 읽어 올 수 있게 된다.
실시예에 따르면, 해쉬 함수를 이용한 키 확장을 통해 키 트리를 구축하고, 스토리지의 각 블록을 키 트리로부터 유도된 각각 다른 키로 스트림 암호화를 시킴으로써, 블록 암호화 알고리즘의 블록 접근성과 함께, 스트림 암호화 알고리즘의 연산 효율성을 제공할 수 있다.
2. 암호 파일 시스템
도 8은 실시예에 따른 암호 파일 시스템(800)의 전체적인 구성을 나타낸 블록도이다.
도 8을 참조하면, 실시예에 따른 암호 파일 시스템(800)은 스트림 암호화 시스템(810), 스트림 복호화 시스템(820), 및 스토리지(700)를 포함한다. 실시예에 따른 암호 파일 시스템(800)은, 상술한 스트림 암호화/복호화를 위해 구현된 장치이며, 도 3 내지 도 7과 결부하여 설명하도록 한다.
1)
스트림
암호화 시스템(810)
도 8을 참조하면, 실시예에 따른 스트림 암호화 시스템(810)은, 루트 키 생성부(811), 키 트리 구성부(813), 매핑부(815), 및 암호화 연산부(817)를 포함한다.
루트 키
생성부
(811)
루트 키 생성부(811)는, 평문(plain text)을 암호화하는데 필요한 키 트리를 구성하기 위하여 루트 키(Root Key, K0 ,0)를 생성한다. 여기서 루트 키(Root Key, K0,0)는 사용자만이 알고 있는 키로서, 키 트리의 최상위 노드에 있는 키에 해당된다. 단 방향 해쉬 함수는 SHA(Secure Hash Algorithm)-1과 같이 보안적으로 안전한 해쉬 함수를 사용하는 것이 바람직하다.
키 트리
구성부
(813)
키 트리 구성부(813)는 교환 연산부(미도시) 및 키 생성부(미도시)를 포함한다.
교환 연산부(미도시)는, 루트 키 값을 복수의 서브섹션으로 나누고, 나누어진 각각의 서브섹션을 교환 연산을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성할 수 있다. 또한, 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 각각의 서브섹션을 교환 연산을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 생성할 수 있다.
키 생성부(미도시)는, 교환 연산부(미도시)를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성할 수 있다. 또한, 교환 연산부(미도시)를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성할 수 있다.
이하, 교환 연산부(미도시)와 키 생성부(미도시)를 통한 키 트리 구성 방법에 관하여 보다 상세히 설명한다.
먼저, 교환 연산부(미도시)는, 루트 키(Root Key, K0 ,0) 값을 복수의 서브섹션으로 나눌 수 있다. 여기서, 서브섹션의 개수는 임의로 설정할 수 있으며, 실시예에서는 4개로 설정하여 설명하도록 한다.
다음, 교환 연산부(미도시)는, 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)의 입력 값을 얻어낼 수 있다.
키 생성부(미도시)는, 교환 연산부(미도시)를 통해 얻은 키 값들을 해쉬 함수(SHA-1)에 각각 입력하고, 서로 다른 값을 갖는 새로운 서브 키들(K1 ,0, K1 ,1, K1 ,2, K1,3)을 생성할 수 있다. 이에 따라, 하나의 부모 노드에서 자식 노드로 분화됨으로써, 깊이 1의 키 트리가 구성될 수 있다.
다음, 키 생성부(미도시)는, 해쉬 함수(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의 키 트리가 구성될 수 있다.
키 트리 구성부(813)는 상술한 방법들을 통해 키를 확장시켜 나가면서 키 트리를 구성할 수 있다. 키 확장을 위해 새로운 서브 키 값을 얻기 위해서는, 해쉬 함수(SHA-1)에 입력될 값이 서로 달라야 하며, 이를 위해 실시예에서는 서브섹션을 교환하는 방법을 적용하였다. 그러나, 해쉬 함수(SHA-1)의 입력 값을 얻기 위한 방법이 반드시 교환 연산에 의한 방법에만 한정되는 것이 아니라, 다양한 방법들이 적용 가능하다.
실시예에 따른 키(루트 키 또는 서브 키)는 하기의 수식과 같이 나타낼 수 있다.
수학식 4의 h는 키 트리의 깊이를 의미하고, s는 같은 깊이(h)의 노드의 순번(sequence number)을 의미한다.
실시예에 따른 키 트리는 키 확장을 통해 구성하되, 하기의 수식으로 표현한 조건을 만족하는 깊이(h)로 구성되는 것이 바람직하다.
수학식 5의 m은 서브섹션의 개수를 의미하며, n은 스토리지(700)에 구성된 데이터 블록의 개수를 의미한다. 따라서, 수학식 5를 만족하는 깊이(h)의 키 트리가 구성될 때까지 상술한 방법을 반복적으로 수행하여 키 트리를 구축할 수 있다. 예를 들어, 데이터 블록 하나의 크기가 4KB이고, 전체 2MB 크기의 스토리지가 있다고 가정하면, 그 스토리지는 512개의 데이터 블록으로 이루어져 있을 것이다(n=512). 이때, 이를 만족하는 키 트리의 깊이(h)는 에 의해 5가 된다. 따라서, 깊이(h)가 5인 키 트리를 형성하면 된다.
스토리지 시스템에 구성된 하나의 데이터 블록의 크기가 16KB이고, 하나의 부모 키에서 4개의 자식 키로 분화하면서, 깊이(h)가 12인 키 트리를 구성한다고 가정할 경우, 하기의 수식과 같은 방법에 의해 256GB의 스토리지를 커버할 수 있다.
매핑부
(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”과 각각 매핑할 수 있다.
암호화
연산부
(817)
암호화 연산부(817)는, 스토리지의 데이터 블(B0 … Bx, Bx+1, … By, By+1…B4h-1)에 매핑된 각각의 서브 키들을 이용하여, 평문(plain text) 스트림을 암호화할 수 있다. 스트림 암호화 알고리즘에 기초하여 해당 데이터 블록을 암호화한다. 보다 구체적으로, 도 6에 도시된 바와 같이, 해당 데이터 블록에 매핑된 서브 키(401, 402)와, 해당 데이터 블록에 저장될 평문 스트림(501, 502)을 각각 XOR 연산하여 블록 단위로 암호화 스트림(601, 602)을 생성할 수 있다.
2)
스트림
복호화 시스템(820)
실시예에 따른 스트림 복호화 시스템(810)은, 키 유도부(821) 및 복호화 연산부(823)를 포함한다.
키 유도부(821)
키 유도부(821)는, 스토리지(700)의 데이터 블록에 매핑된 서브 키들을 해쉬 함수를 통해 유도한다. 또한, 특정 블록에 대한 복호화가 필요한 경우, 해당 블록에 매핑된 자식 노드의 서브 키를 해쉬 함수를 이용하여 유도할 수 있다.
복호화
연산부
(823)
복호화 연산부(823)는, 키 유도부(821)를 통해 유도된 해당 서브 키를 이용하여 복호화를 수행할 수 있다. 보다 구체적으로, 유도된 해당 서브 키와 해당 블록에 저장된 복호문 스트림을 XOR 연산하여 평문 스트림을 생성한다. 이때, 스트림 암호화 알고리즘에 기초하여 복호화를 수행하며, 이를 통해 블록 단위로 복호문 스트림을 생성할 수 있다. 이는, 복호화 과정뿐만 아니라, 암호화 과정에도 블록 단위의 스트림 암호화가 가능하다.
도 9는 실시예에 따른 스트림 암호화 알고리즘(BA-RC4), 종래의 블록 암호화 알고리즘(AES), 및 스트림 암호화 알고리즘(RC4)의 성능 비교를 나타낸 그래프이다.
도 9의 그래프에서 가로축은 스토리지에 접근(access)하는 시작 주소를 의미하고, 세로축은 처리량(throughput)을 나타내는 것으로, 처리량(throughput)은 높으면 높을수록 좋다. 본 실험을 통해 얻은 그래프는, 1MB의 파일을 읽고, 스토리지의 한 블록을 16KB라고 가정할 경우, 접근하는 시작 주소를 변화시켜 가며 처리량(throughput)을 측정한 것이다.
블록 암호화 알고리즘(AES)의 경우, 블록 단위로 암호화/복호화를 수행하므로, 접근하는 위치와 관계없이 일정한 처리량(throughput)을 보인다.
반면, 스트림 암호화 알고리즘(RC4)의 경우, 접근하는 시작 주소 위치(수치)가 증가함에 따라 처리량(throughput)이 점차 감소하게 된다. 스트림 암호화 알고리즘(RC4)은, 특정 블록을 읽기 위해, 해당 블록을 암호화하는데 사용되었던 난수열을 생성해야 하고, 그러기 위해, 초기 키 값을 이용하여 해당되는 상태가 나올 때까지 난수열을 생성해야 해독할 수 있으므로, 무작위 접근성이 매우 낮다는 단점을 갖는다. 이에 따라, 접근 위치가 멀어질수록 키를 유도하는데 발생되는 시간이 점차 증가하기 때문에, 전체적인 처리량(throughput) 또한 감소되는 것을 알 수 있다.
이상에서 보는 바와 같이, 본 발명이 속하는 기술 분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시 될 수 있다는 것을 이해할 수 있을 것이다.
그러므로, 이상에서 기술한 실시 예는 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
Claims (11)
- 암호 파일 시스템에서의 스트림 암호화 방법으로서,
파일 시스템 암호화에 사용할 루트 키를 생성하는 단계;
해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 단계;
상기 키 트리에 구성된 복수의 서브 키와, 상기 암호 파일 시스템의 스토리지에 구성된 데이터 블록들을 매핑하는 단계; 및
상기 데이터 블록들에 매핑된 복수의 서브 키와, 상기 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 단계
를 포함하는 해쉬 트리 기반의 스트림 암호화 방법.
- 제1항에 있어서,
상기 키 트리를 구성하는 단계는,
a. 상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키로 생성하는 단계;
b. 상기 a 단계를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계;
c. 상기 b 단계를 통해 생성된 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키로 생성하는 단계; 및
d. 상기 c 단계를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계를 포함하며,
상기 a 단계 내지 상기 d 단계를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 상기 키 트리의 깊이(h)로 키 트리를 구성하며,
m은, 상기 서브섹션의 개수이고,
n은, 상기 데이터 블록의 개수인, 해쉬 트리 기반의 스트림 암호화 방법.
- 제1항의 방법에 따라 생성된 상기 암호문 스트림을 복호화하는 방법으로서,
상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 통하여 유도하는 단계; 및
해쉬 함수를 통해 유도된 복수의 서브 키와 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 단계
를 포함하는 해쉬 트리 기반의 스트림 복호화 방법.
- 제3항에 있어서,
상기 스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한, 해쉬 트리 기반의 스트림 복호화 방법.
- 스트림 암호화를 위한 시스템으로서,
파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부;
해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부;
암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지;
상기 키 트리에 구성된 복수의 서브 키와 상기 스토리지의 데이터 블록들을 매핑하는 매핑부; 및
상기 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 상기 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부
를 포함하는 암호 파일 시스템.
- 제5항에 있어서,
상기 키 트리 구성부는,
교환 연산부 및 키 생성부를 포함하고,
상기 교환 연산부는,
상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고,
상기 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
상기 키 생성부는,
상기 교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고,
상기 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
상기 키 트리 구성부는,
상기 교환 연산부와 상기 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
m은 상기 서브섹션의 개수이고,
n은 상기 데이터 블록의 개수인, 암호 파일 시스템.
- 제5항의 암호 파일 시스템에 따라 생성된 상기 암호문 스트림을 복호화하는 시스템으로서,
상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부; 및
상기 키 유도부로부터 유도된 복수의 서브 키와, 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부
를 포함하는 암호 파일 시스템.
- 제7항에 있어서,
상기 스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한, 암호 파일 시스템.
- 스트림 암호화 및 복호화를 위한 시스템으로서,
파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부;
해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부;
암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지;
상기 키 트리에 구성된 복수의 서브 키와 상기 스토리지의 데이터 블록들을 매핑하는 매핑부; 및
상기 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 상기 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부;
상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부; 및
상기 키 유도부로부터 유도된 복수의 서브 키와, 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부
를 포함하는 암호 파일 시스템.
- 제9항에 있어서,
상기 키 트리 구성부는,
교환 연산부 및 키 생성부를 포함하고,
상기 교환 연산부는,
상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고,
상기 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
상기 키 생성부는,
상기 교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고,
상기 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
상기 키 트리 구성부는,
상기 교환 연산부와 상기 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
m은 상기 서브섹션의 개수이고,
n은 상기 데이터 블록의 개수인, 암호 파일 시스템.
- 제9항에 있어서,
상기 스토리지에 저장된 암호문 스트림은 블록 단위로 접근 가능한, 암호 파일 시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100037773A KR101133988B1 (ko) | 2010-04-23 | 2010-04-23 | 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100037773A KR101133988B1 (ko) | 2010-04-23 | 2010-04-23 | 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110118273A true KR20110118273A (ko) | 2011-10-31 |
KR101133988B1 KR101133988B1 (ko) | 2012-04-05 |
Family
ID=45031897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100037773A KR101133988B1 (ko) | 2010-04-23 | 2010-04-23 | 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101133988B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101336144B1 (ko) * | 2012-08-31 | 2013-12-02 | 성균관대학교산학협력단 | 네트워크에서의 키 관리 방법 및 시스템, 및 소스 인증 방법 및 시스템 |
WO2014105146A1 (en) * | 2012-12-29 | 2014-07-03 | Intel Corporation | Secure key derivation and cryptography logic for integrated circuits |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101566416B1 (ko) * | 2014-07-07 | 2015-11-09 | 건국대학교 산학협력단 | 보안성이 향상된 암·복호화 장치 및 방법 |
Family Cites Families (2)
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 (ja) * | 2000-07-24 | 2002-04-12 | Sony Corp | 情報処理システム、情報処理方法、および情報処理装置、並びにプログラム提供媒体 |
-
2010
- 2010-04-23 KR KR1020100037773A patent/KR101133988B1/ko not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101336144B1 (ko) * | 2012-08-31 | 2013-12-02 | 성균관대학교산학협력단 | 네트워크에서의 키 관리 방법 및 시스템, 및 소스 인증 방법 및 시스템 |
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 (ko) | 2012-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107294697B (zh) | 基于明文相似矩阵的对称全同态加密方法 | |
CN106850221B (zh) | 信息加密、解密方法及装置 | |
JP6083234B2 (ja) | 暗号処理装置 | |
JP6363032B2 (ja) | 鍵付替え方向制御システムおよび鍵付替え方向制御方法 | |
JP6522263B2 (ja) | 準同型演算装置、暗号システム及び準同型演算プログラム | |
Jin et al. | A secure and lightweight data access control scheme for mobile cloud computing | |
JP6575532B2 (ja) | 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム | |
KR20150073753A (ko) | 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법 | |
CN109039611B (zh) | 基于sm9算法的解密密钥分割及解密方法、装置、介质 | |
CN113098675B (zh) | 基于多项式完全同态的二进制数据加密系统及方法 | |
CN113726517A (zh) | 一种信息共享方法及装置 | |
JP2006311383A (ja) | データ管理方法、データ管理システムおよびデータ管理装置 | |
KR101899130B1 (ko) | 데이터의 암호화, 복호화 방법 및 이를 이용하는 장치 | |
KR101133988B1 (ko) | 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 | |
JP7125857B2 (ja) | 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム | |
JP7325689B2 (ja) | 暗号文変換システム、変換鍵生成方法、及び、変換鍵生成プログラム | |
CN114257402B (zh) | 加密算法确定方法、装置、计算机设备和存储介质 | |
WO2018011825A1 (en) | Encryption and decryption of messages | |
JP4685621B2 (ja) | 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム | |
JP6203387B2 (ja) | 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム | |
KR101076747B1 (ko) | 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 | |
CN113853764A (zh) | 重加密装置、重加密方法、重加密程序和加密系统 | |
US11743039B2 (en) | System and method for data encryption using key derivation | |
Filaly et al. | Hybrid Encryption Algorithm for Information Security in Hadoop | |
WO2024127593A1 (ja) | 暗号化装置、鍵生成方法、及び、暗号化プログラム |
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 |