KR101133988B1 - 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 - Google Patents

해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 Download PDF

Info

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

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 연산하여 암호문 스트림을 생성하는 단계를 포함한다.

Description

해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템{METHOD FOR ENCRYPTING AND DECRYPTING STREAM AND CRYPTOGRAPHIC FILE SYSTEMS THEREOF}
스트림 암호화/복호화 방법 및 암호 파일 시스템에 관한 것이다.
“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)로 키 트리를 구성하며,
Figure 112010026188088-pat00001
m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
실시예에 따른 스트림 복호화 방법은, 청구항 1에 따라 생성된 암호문 스트림을 복호화하는 방법으로서, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 통하여 유도하는 단계, 및 해쉬 함수를 통해 유도된 복수의 서브 키와 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 단계를 포함한다.
스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한 것이 바람직하다.
청구항 5에 따른 암호 파일 시스템은, 스트림 암호화를 위한 시스템으로서, 파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부, 암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지, 키 트리에 구성된 복수의 서브 키와 스토리지의 데이터 블록들을 매핑하는 매핑부, 및 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부를 포함한다.
청구항 6에 따른 키 트리 구성부는,
교환 연산부 및 키 생성부를 포함하고,
교환 연산부는,
루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고, 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
키 생성부는,
교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고, 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
키 트리 구성부는,
교환 연산부와 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
Figure 112010026188088-pat00002
m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
청구항 7에 따른 암호 파일 시스템은, 청구항 5의 암호 파일 시스템에 따라 생성된 암호문 스트림을 복호화하는 시스템으로서, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부, 및 키 유도부로부터 유도된 복수의 서브 키와, 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부를 포함한다.
스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한 것이 바람직하다.
청구항 9에 따른 암호 파일 시스템은, 스트림 암호화 및 복호화를 위한 시스템으로서, 파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부, 해쉬 함수를 통해 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부, 암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지, 키 트리에 구성된 복수의 서브 키와 스토리지의 데이터 블록들을 매핑하는 매핑부, 및 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부, 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부, 및 키 유도부로부터 유도된 복수의 서브 키와, 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부를 포함한다.
청구항 10에 따른 키 트리 구성부는,
교환 연산부 및 키 생성부를 포함하고,
교환 연산부는,
루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고, 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
키 생성부는,
교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고, 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
키 트리 구성부는,
교환 연산부와 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
Figure 112010026188088-pat00003
m은 서브섹션의 개수이고, n은 데이터 블록의 개수인 것이 바람직하다.
청구항 11에 따른 스토리지에 저장된 암호문 스트림은 블록 단위로 접근 가능한 것이 바람직하다.
실시예에 따르면, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호화/복호화 방법을 제공할 수 있다.
실시예에 따르면, 스트림 암호화 알고리즘의 빠른 연산 속도와, 블록 암호화 알고리즘의 블록 단위의 접근성을 제공할 수 있는 암호 파일 시스템을 제공할 수 있다.
도 1은 블록 암호화 알고리즘에 대한 개념을 나타낸 도면.
도 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)의 입력 값을 얻기 위한 방법이 반드시 교환 연산에 의한 방법에만 한정되는 것이 아니라, 다양한 방법들이 적용 가능하다.
실시예에 따른 키(루트 키 또는 서브 키)는 하기의 수식과 같이 나타낼 수 있다.
Figure 112010026188088-pat00004
수학식 1의 h는 키 트리의 깊이를 의미하고, s는 같은 깊이(h)의 노드의 순번(sequence number)을 의미한다.
Figure 112010026188088-pat00005
는 루트 키를 의미하며, 하나의 부모 키(루트 키 또는 서브 키) 는 4 개의 자식 키
Figure 112010026188088-pat00007
로 분화될 수 있다.
실시예에 따른 키 트리는 키 확장을 통해 구성하되, 하기의 수식으로 표현한 조건을 만족하는 깊이(h)로 구성되는 것이 바람직하다.
Figure 112010026188088-pat00008
수학식 2의 m은 서브섹션의 개수를 의미하며, n은 스토리지에 구성된 데이터 블록의 개수를 의미한다. 따라서, 수학식 2를 만족하는 깊이(h)의 키 트리가 구성될 때까지 상술한 방법을 반복적으로 수행하여 키 트리를 구축할 수 있다. 예를 들어, 데이터 블록 하나의 크기가 4KB이고, 전체 2MB 크기의 스토리지가 있다고 가정하면, 그 스토리지는 512개의 데이터 블록으로 이루어져 있을 것이다(n=512). 이때, 이를 만족하는 키 트리의 깊이(h)는
Figure 112010026188088-pat00009
에 의해 5가 된다. 따라서, 깊이(h)가 5인 키 트리를 형성하면 된다.
스토리지 시스템에 구성된 하나의 데이터 블록의 크기가 16KB이고, 하나의 부모 키에서 4개의 자식 키로 분화하면서, 깊이(h)가 12인 키 트리를 구성한다고 가정할 경우, 하기의 수식과 같은 방법에 의해 256GB의 스토리지를 커버할 수 있다.
Figure 112010026188088-pat00010
서브 키 및 데이터 블록 매핑 단계( 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)의 입력 값을 얻기 위한 방법이 반드시 교환 연산에 의한 방법에만 한정되는 것이 아니라, 다양한 방법들이 적용 가능하다.
실시예에 따른 키(루트 키 또는 서브 키)는 하기의 수식과 같이 나타낼 수 있다.
Figure 112010026188088-pat00011
수학식 4의 h는 키 트리의 깊이를 의미하고, s는 같은 깊이(h)의 노드의 순번(sequence number)을 의미한다.
Figure 112010026188088-pat00012
는 루트 키를 의미하며, 하나의 부모 키(루트 키 또는 서브 키)
Figure 112010026188088-pat00013
는 4 개의 자식 키
Figure 112010026188088-pat00014
로 분화될 수 있다.
실시예에 따른 키 트리는 키 확장을 통해 구성하되, 하기의 수식으로 표현한 조건을 만족하는 깊이(h)로 구성되는 것이 바람직하다.
Figure 112010026188088-pat00015
수학식 5의 m은 서브섹션의 개수를 의미하며, n은 스토리지(700)에 구성된 데이터 블록의 개수를 의미한다. 따라서, 수학식 5를 만족하는 깊이(h)의 키 트리가 구성될 때까지 상술한 방법을 반복적으로 수행하여 키 트리를 구축할 수 있다. 예를 들어, 데이터 블록 하나의 크기가 4KB이고, 전체 2MB 크기의 스토리지가 있다고 가정하면, 그 스토리지는 512개의 데이터 블록으로 이루어져 있을 것이다(n=512). 이때, 이를 만족하는 키 트리의 깊이(h)는
Figure 112010026188088-pat00016
에 의해 5가 된다. 따라서, 깊이(h)가 5인 키 트리를 형성하면 된다.
스토리지 시스템에 구성된 하나의 데이터 블록의 크기가 16KB이고, 하나의 부모 키에서 4개의 자식 키로 분화하면서, 깊이(h)가 12인 키 트리를 구성한다고 가정할 경우, 하기의 수식과 같은 방법에 의해 256GB의 스토리지를 커버할 수 있다.
Figure 112010026188088-pat00017
매핑부 (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)

  1. 암호 파일 시스템에서의 스트림 암호화 방법으로서,
    파일 시스템 암호화에 사용할 루트 키를 생성하는 단계;
    해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 단계;
    상기 키 트리에 구성된 복수의 서브 키와, 상기 암호 파일 시스템의 스토리지에 구성된 데이터 블록들을 매핑하는 단계; 및
    상기 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 단계를 포함하되,
    상기 해쉬 함수의 입력은 상기 루트 키 또는 상기 복수의 서브 키를 교환 연산(Swapping Operation)함으로써 생성되는,
    해쉬 트리 기반의 스트림 암호화 방법.
  2. 제1항에 있어서,
    상기 키 트리를 구성하는 단계는,
    a. 상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키로 생성하는 단계;
    b. 상기 a 단계를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계;
    c. 상기 b 단계를 통해 생성된 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키로 생성하는 단계; 및
    d. 상기 c 단계를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하는 단계를 포함하며,
    상기 a 단계 내지 상기 d 단계를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 상기 키 트리의 깊이(h)로 키 트리를 구성하며,
    Figure 112010026188088-pat00018

    m은, 상기 서브섹션의 개수이고,
    n은, 상기 데이터 블록의 개수인, 해쉬 트리 기반의 스트림 암호화 방법.
  3. 제1항의 방법에 따라 생성된 상기 암호문 스트림을 복호화하는 방법으로서,
    상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 통하여 유도하는 단계; 및
    해쉬 함수를 통해 유도된 복수의 서브 키와 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 단계
    를 포함하는 해쉬 트리 기반의 스트림 복호화 방법.
  4. 제3항에 있어서,
    상기 스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한, 해쉬 트리 기반의 스트림 복호화 방법.
  5. 스트림 암호화를 위한 시스템으로서,
    파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부;
    해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부;
    암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지;
    상기 키 트리에 구성된 복수의 서브 키와 상기 스토리지의 데이터 블록들을 매핑하는 매핑부; 및
    상기 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부를 포함하되,
    상기 해쉬 함수의 입력은 상기 루트 키 또는 상기 복수의 서브 키를 교환 연산함으로써 생성되는,
    암호 파일 시스템.
  6. 제5항에 있어서,
    상기 키 트리 구성부는,
    교환 연산부 및 키 생성부를 포함하고,
    상기 교환 연산부는,
    상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고,
    상기 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
    상기 키 생성부는,
    상기 교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고,
    상기 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
    상기 키 트리 구성부는,
    상기 교환 연산부와 상기 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
    Figure 112010026188088-pat00019

    m은 상기 서브섹션의 개수이고,
    n은 상기 데이터 블록의 개수인, 암호 파일 시스템.
  7. 제5항의 암호 파일 시스템에 따라 생성된 상기 암호문 스트림을 복호화하는 시스템으로서,
    상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부; 및
    상기 키 유도부로부터 유도된 복수의 서브 키와, 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부
    를 포함하는 암호 파일 시스템.
  8. 제7항에 있어서,
    상기 스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한, 암호 파일 시스템.
  9. 스트림 암호화 및 복호화를 위한 시스템으로서,
    파일 시스템 암호화에 사용할 루트 키를 생성하는 루트 키 생성부;
    해쉬 함수를 통해 상기 루트 키로부터 복수의 서브 키를 생성하여 키 트리를 구성하는 키 트리 구성부;
    암호문 스트림을 저장하기 위한 복수의 데이터 블록을 포함하는 스토리지;
    상기 키 트리에 구성된 복수의 서브 키와 상기 스토리지의 데이터 블록들을 매핑하는 매핑부; 및
    상기 스토리지의 데이터 블록들에 매핑된 복수의 서브 키와, 평문 스트림을 XOR 연산하여 암호문 스트림을 생성하는 암호화 연산부;
    상기 스토리지의 데이터 블록에 매핑된 복수의 서브 키를 해쉬 함수를 이용하여 유도하는 키 유도부; 및
    상기 키 유도부로부터 유도된 복수의 서브 키와, 상기 암호문 스트림을 XOR 연산하여 복호문 스트림을 생성하는 복호화 연산부를 포함하되,
    상기 해쉬 함수의 입력은 상기 루트 키 또는 상기 복수의 서브 키를 교환 연산함으로써 생성되는,
    암호 파일 시스템.
  10. 제9항에 있어서,
    상기 키 트리 구성부는,
    교환 연산부 및 키 생성부를 포함하고,
    상기 교환 연산부는,
    상기 루트 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 루트 키를 생성하고,
    상기 서브 키의 값을 복수의 서브섹션으로 나누고, 나누어진 서브섹션들 간의 위치 교환을 통해 서로 다른 서브섹션 값을 갖는 복수의 서브 키를 각각 생성하며,
    상기 키 생성부는,
    상기 교환 연산부를 통해 생성된 복수의 루트 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하고,
    상기 교환 연산부를 통해 생성된 복수의 서브 키를, 해쉬 함수를 이용하여 서로 다른 값을 갖는 서브 키로 생성하며,
    상기 키 트리 구성부는,
    상기 교환 연산부와 상기 키 생성부를 통해 서브 키를 확장하면서 키 트리를 구성하되, 하기의 수식을 만족하는 키 트리의 깊이(h)로 키 트리를 구성하며,
    Figure 112010026188088-pat00020

    m은 상기 서브섹션의 개수이고,
    n은 상기 데이터 블록의 개수인, 암호 파일 시스템.
  11. 제9항에 있어서,
    상기 스토리지에 저장된 암호문 스트림은 데이터 블록 단위로 접근 가능한, 암호 파일 시스템.
KR1020100037773A 2010-04-23 2010-04-23 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템 KR101133988B1 (ko)

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 KR20110118273A (ko) 2011-10-31
KR101133988B1 true 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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101566416B1 (ko) * 2014-07-07 2015-11-09 건국대학교 산학협력단 보안성이 향상된 암·복호화 장치 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101336144B1 (ko) * 2012-08-31 2013-12-02 성균관대학교산학협력단 네트워크에서의 키 관리 방법 및 시스템, 및 소스 인증 방법 및 시스템
US9390291B2 (en) 2012-12-29 2016-07-12 Intel Corporation Secure key derivation and cryptography logic for integrated circuits

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010007044A (ko) * 1999-05-07 2001-01-26 루센트 테크놀러지스 인크 해시 함수 및 프로그램 식별자를 이용하여 전송 프로그램내용으로의 액세스를 제한하는 암호화 방법 및 장치
KR20020009464A (ko) * 2000-07-24 2002-02-01 이데이 노부유끼 정보 처리 시스템, 정보 처리 방법, 및 정보 처리 장치,및 프로그램 제공 매체

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010007044A (ko) * 1999-05-07 2001-01-26 루센트 테크놀러지스 인크 해시 함수 및 프로그램 식별자를 이용하여 전송 프로그램내용으로의 액세스를 제한하는 암호화 방법 및 장치
KR20020009464A (ko) * 2000-07-24 2002-02-01 이데이 노부유끼 정보 처리 시스템, 정보 처리 방법, 및 정보 처리 장치,및 프로그램 제공 매체

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
논문(TIS LABS-TIS REPORT0755,1998) *
제목: MARKS: Zero Side Effect Multicast Key Management Using Arbitrarily Revealed Key Sequences, 저자: B.Briscoe, 발행처: Springer - Lecture Note in Computer Science, 발행일: 1999 *
제목: MARKS: Zero Side Effect Multicast Key Management Using Arbitrarily Revealed Key Sequences, 저자: B.Briscoe, 발행처: Springer - Lecture Note in Computer Science, 발행일: 1999*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101566416B1 (ko) * 2014-07-07 2015-11-09 건국대학교 산학협력단 보안성이 향상된 암·복호화 장치 및 방법

Also Published As

Publication number Publication date
KR20110118273A (ko) 2011-10-31

Similar Documents

Publication Publication Date Title
CN106850221B (zh) 信息加密、解密方法及装置
JP6083234B2 (ja) 暗号処理装置
JP6363032B2 (ja) 鍵付替え方向制御システムおよび鍵付替え方向制御方法
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
Jin et al. A secure and lightweight data access control scheme for mobile cloud computing
JP6522263B2 (ja) 準同型演算装置、暗号システム及び準同型演算プログラム
KR20150073753A (ko) 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법
CN109039611B (zh) 基于sm9算法的解密密钥分割及解密方法、装置、介质
CN104158880A (zh) 一种用户端云数据共享解决方法
CN113726517A (zh) 一种信息共享方法及装置
CN113098675B (zh) 基于多项式完全同态的二进制数据加密系统及方法
JP2006311383A (ja) データ管理方法、データ管理システムおよびデータ管理装置
KR101899130B1 (ko) 데이터의 암호화, 복호화 방법 및 이를 이용하는 장치
KR101133988B1 (ko) 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템
JP7125857B2 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム
JP7325689B2 (ja) 暗号文変換システム、変換鍵生成方法、及び、変換鍵生成プログラム
CN114257402B (zh) 加密算法确定方法、装置、计算机设备和存储介质
JP4685621B2 (ja) 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム
JP6203387B2 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
KR101076747B1 (ko) 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치
US11743039B2 (en) System and method for data encryption using key derivation
Filaly et al. Hybrid Encryption Algorithm for Information Security in Hadoop
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

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