KR101991664B1 - 블록 암호화에 기초한 콘텐츠의 암호화 및 복호화 방법 및 장치 - Google Patents
블록 암호화에 기초한 콘텐츠의 암호화 및 복호화 방법 및 장치 Download PDFInfo
- Publication number
- KR101991664B1 KR101991664B1 KR1020170064766A KR20170064766A KR101991664B1 KR 101991664 B1 KR101991664 B1 KR 101991664B1 KR 1020170064766 A KR1020170064766 A KR 1020170064766A KR 20170064766 A KR20170064766 A KR 20170064766A KR 101991664 B1 KR101991664 B1 KR 101991664B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- encrypted
- encryption
- sub
- blocks
- 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
일 실시예에 따른 암호화 방법은 콘텐츠에 대한 암호화 레벨을 수신하고, 콘텐츠를 복수 개의 블록들로 분할하며, 암호화 레벨을 기초로, 복수 개의 블록들 중 암호화할 블록의 범위를 결정하여 암호화할 블록의 범위에 포함된 적어도 하나의 블록을 암호화한다.
Description
아래 실시예들은 블록 암호화에 기초한 콘텐츠의 암호화 및 복호화 방법 및 장치에 관한 것이다.
스크린 엑스(Screen X) 기술은 멀티 프로젝션(multi-projection) 기술을 활용하여 전면 스크린뿐만 아니라 양 옆의 측면 스크린에도 부가 콘텐츠들을 투사함으로써 전면 콘텐츠의 몰입감을 향상시켜 주는 기술이다. 스크린 엑스 기술에 기반한 콘텐츠는 국내뿐만 아니라 해외에서도 상영되고 있으며, 저작권과 관련한 이슈로 인해 스크린 엑스 기술에 기반한 콘텐츠에 적합한 암호화 및 복호화 기술이 요구된다.
일 측에 따른 암호화 방법은 콘텐츠에 대한 암호화 레벨을 수신하는 단계; 상기 콘텐츠를 복수 개의 블록들 - 상기 블록들은 복수 개의 서브 블록들을 포함함-로 분할하는 단계; 상기 암호화 레벨을 기초로, 상기 복수 개의 블록들 중 암호화할 블록의 범위를 결정하는 단계; 및 상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록을 암호화하는 단계를 포함한다.
상기 암호화할 블록의 범위를 결정하는 단계는 상기 복수 개의 블록들 중 상기 암호화 레벨에 대응하는 위치에 있는 블록에 기초하여 상기 암호화할 블록의 범위를 결정하는 단계를 포함할 수 있다.
상기 적어도 하나의 블록을 암호화하는 단계는 상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록(previous block)의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과 및 암호화 키를 이용하여 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 암호화하는 단계를 포함할 수 있다.
상기 암호화 키는 256 비트 길이의 랜덤 바이트 스트림(random byte stream)을 포함할 수 있다.
상기 서브 블록을 암호화하는 단계는 상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록이 상기 복수 개의 블록들 중 첫 번째 블록인 경우, 미리 설정된 초기화 벡터 및 상기 암호화 키를 이용하여 상기 첫 번째 블록의 미리 설정된 위치에 해당하는 서브 블록을 암호화하는 단계를 포함할 수 있다.
상기 첫 번째 블록의 상기 서브 블록을 암호화하는 단계는 상기 암호화 키를 이용하여 상기 초기화 벡터를 제1 암호화하는 단계; 및 상기 제1 암호화 결과와 상기 첫 번째 블록의 상기 서브 블록과의 XOR 연산을 통해 상기 첫 번째 블록의 상기 서브 블록을 제2 암호화 하는 단계를 포함할 수 있다.
상기 초기화 벡터는 랜덤하게 생성될 수 있다.
상기 서브 블록을 암호화하는 단계는 상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록이 상기 복수 개의 블록들 중 첫 번째 블록인 아닌 경우, 상기 암호화 키를 이용하여 상기 이전 블록의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과를 제3 암호화하는 단계; 및 상기 제3 암호화 결과와 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록과의 XOR 연산을 통해 상기 적어도 하나의 블록의 서브 블록을 제4 암호화하는 단계를 포함할 수 있다.
상기 제3 암호화하는 단계는 상기 암호화 키 및 AES 알고리즘을 이용하여 상기 이전 블록의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과를 제3 암호화할 수 있다.
상기 이전 블록의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과 및 상기 제3 암호화 결과는 서로 동일한 길이를 가질 수 있다.
상기 콘텐츠는 멀티미디어 콘텐츠, 다면 콘텐츠 및 텍스트 중 적어도 하나를 포함할 수 있다.
일 측에 따른 복호화 방법은 암호화된 복수 개의 블록들- 상기 블록들은 복수 개의 서브 블록들을 포함함-을 포함하는 암호화된 콘텐츠를 수신하는 단계; 상기 암호화된 콘텐츠에 대응하는 암호화 키, 초기화 벡터 및 암호화 레벨을 포함하는 키 파일(key file)을 수신하는 단계; 상기 암호화 레벨을 기초로, 상기 암호화된 복수 개의 블록들 중 복호화할 블록의 범위를 결정하는 단계; 및 상기 초기화 벡터 및 상기 암호화 키를 이용하여 상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록을 복호화하는 단계를 포함한다.
상기 복호화할 블록의 범위를 결정하는 단계는 상기 암호화된 복수 개의 블록들 중 상기 암호화 레벨에 대응하는 위치에 있는 블록에 기초하여 상기 복호화할 블록의 범위로 결정하는 단계를 포함할 수 있다.
상기 적어도 하나의 블록을 복호화하는 단계는 상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록의미리 설정된 위치에 해당하는 암호화된 서브 블록 및 상기 암호화 키를 이용하여 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 복호화하는 단계를 포함할 수 있다.
상기 서브 블록을 복호화하는 단계는 상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록이 상기 복수 개의 블록들 중 첫 번째 블록인 경우, 상기 초기화 벡터 및 상기 암호화 키를 이용하여 상기 첫 번째 블록의 미리 설정된 위치에 해당하는 암호화된 서브 블록을 복호화하는 단계를 포함할 수 있다.
상기 첫 번째 블록의 상기 서브 블록을 복호화하는 단계는 상기 암호화 키를 이용하여 상기 초기화 벡터를 암호화하는 단계; 및 상기 암호화 결과와 상기 첫 번째 블록의 상기 암호화된 서브 블록과의 XOR 연산을 통해 상기 첫 번째 블록의 상기 암호화된 서브 블록을 복호화하는 단계를 포함할 수 있다.
상기 서브 블록을 복호화하는 단계는 상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록이 상기 복수 개의 블록들 중 첫 번째 블록인 아닌 경우, 상기 암호화 키를 이용하여 상기 이전 블록의 미리 설정된 위치에 해당하는 암호화된 서브 블록을 제5 암호화하는 단계; 및 상기 제5 암호화 결과와 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 암호화된 서브 블록과의 XOR 연산을 통해 상기 적어도 하나의 블록의 암호화된 서브 블록을 복호화하는 단계를 포함할 수 있다.
일 측에 따르면, 암호화 장치는 콘텐츠에 대한 암호화 레벨을 수신하는 입력 인터페이스; 상기 콘텐츠를 복수 개의 블록들- 상기 블록들은 복수 개의 서브 블록들을 포함함-로 분할하고, 상기 암호화 레벨을 기초로, 상기 복수 개의 블록들 중 암호화할 블록의 범위를 결정하며, 상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록을 암호화하는 프로세서; 및 상기 암호화된 적어도 하나의 블록을 포함하는 콘텐츠를 전송하는 통신 인터페이스를 포함한다.
일 측에 따르면, 암호화된 복수 개의 블록들- 상기 블록들은 복수 개의 서브 블록들을 포함함-을 포함하는 암호화된 콘텐츠 및 상기 암호화된 콘텐츠에 대응하는 암호화 키, 초기화 벡터 및 암호화 레벨을 포함하는 키 파일을 수신하는 통신 인터페이스; 및 상기 암호화 레벨을 기초로, 상기 암호화된 복수 개의 블록들 중 복호화할 블록의 범위를 결정하고, 상기 초기화 벡터 및 상기 암호화 키를 이용하여 상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록을 복호화하는 프로세서를 포함하고, 상기 통신 인터페이스는 상기 복호화된 적어도 하나의 블록을 포함하는 콘텐츠를 전송한다.
도 1은 일 실시예에 따른 암호화 방법을 나타낸 흐름도.
도 2는 일 실시예에 따른 콘텐츠를 분할하는 방법을 설명하기 위한 도면.
도 3은 일 실시예에 따른 암호화할 블록의 범위를 결정하는 방법을 설명하기 위한 도면.
도 4는 일 실시예에 따른 암호화 방법을 설명하기 위한 도면.
도 5는 일 실시예에 따른 복호화 방법을 나타낸 흐름도.
도 6은 일 실시예에 따른 복호화 방법을 설명하기 위한 도면.
도 7은 일 실시예에 따른 암호화 장치의 블록도.
도 8은 일 실시예에 따른 복호화 장치의 블록도.
도 2는 일 실시예에 따른 콘텐츠를 분할하는 방법을 설명하기 위한 도면.
도 3은 일 실시예에 따른 암호화할 블록의 범위를 결정하는 방법을 설명하기 위한 도면.
도 4는 일 실시예에 따른 암호화 방법을 설명하기 위한 도면.
도 5는 일 실시예에 따른 복호화 방법을 나타낸 흐름도.
도 6은 일 실시예에 따른 복호화 방법을 설명하기 위한 도면.
도 7은 일 실시예에 따른 암호화 장치의 블록도.
도 8은 일 실시예에 따른 복호화 장치의 블록도.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실시예들은 다양한 다른 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간의에"와 "바로~간의에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 일 실시예에 따른 암호화 방법을 나타낸 흐름도이다. 도 1을 참조하면, 일 실시예에 따른 암호화 장치는 콘텐츠에 대한 암호화 레벨을 수신한다(110). 여기서, '암호화 레벨'은 '암호화 복잡도', 또는 콘텐츠가 암호화되는 비율('암호화 비율')로도 부를 수 있다. 예를 들어, 콘텐츠의 암호화 레벨이 높을수록 콘텐츠 재생 시의 복호화를 위한 부하가 커지고, 콘텐츠의 암호화 레벨이 낮을수록 콘텐츠 재생 시의 복호화를 위한 부하가 작아질 수 있다.
단계(110)에서, 암호화 장치는 예를 들어, 사용자가 입력 인터페이스를 통해 해당 콘텐츠에 대하여 직접 선택한 암호화 레벨을 수신할 수 있다. 또는 암호화 장치는 예를 들어, 콘텐츠의 용량, 콘텐츠의 중요도 또는 콘텐츠를 재생하는 장치의 성능 등에 따라 미리 설정된 암호화 레벨을 수신할 수도 있다.
단계(110)에서, 암호화 장치는 암호화 레벨과 함께 별도로 암호화할 대상인 콘텐츠를 수신할 수 있다. 콘텐츠는 예를 들어, 멀티미디어 콘텐츠, 다면 콘텐츠 및 텍스트 등을 포함할 수 있다.
암호화 장치는 콘텐츠를 복수 개의 블록들로 분할한다(120). 이때, 블록들은 복수 개의 서브 블록들을 포함한다. 암호화 장치가 콘텐츠를 분할하는 방법은 도 2를 참조하여 구체적으로 설명한다.
암호화 장치는 단계(110)에서 수신한 암호화 레벨을 기초로, 복수 개의 블록들 중 암호화할 블록의 범위를 결정한다(130). 암호화 장치는 복수 개의 블록들 중 암호화 레벨에 대응하는 위치에 있는 블록에 기초하여 암호화할 블록의 범위를 결정할 수 있다. 암호화 장치가 암호화할 블록의 범위를 결정하는 방법은 도 3을 참조하여 구체적으로 설명한다.
암호화 장치는 단계(130)에서 결정된 암호화할 블록의 범위에 포함된 적어도 하나의 블록을 암호화한다(140). 암호화 장치는 암호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록(previous block)의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과 및 암호화 키를 이용하여 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 암호화할 수 있다. 여기서, '적어도 하나의 블록의 이전 블록'이란, 적어도 하나의 블록(또는 해당 블록)이 세 번째 블록이라고 하면, 바로 이전에 위치하는 두 번째 블록을 의미한다.
암호화 키는 예를 들어, 256 비트 길이의 랜덤 바이트 스트림(random byte stream)을 포함할 수 있다. 암호화 장치가 적어도 하나의 블록을 암호화 하는 방법은 도 4를 참조하여 구체적으로 설명한다.
예를 들어, 콘텐츠가 스크린 엑스 기술에 기반한 콘텐츠인 경우, 동시에 여러 개의 컴퓨터(또는 복호화 장치)에서 파일을 재생한 후 동기화 시키게 된다. 이때, 동기화를 위한 대기 시간에 의한 부하가 크므로, 각 컴퓨터에서는 최대한 재생 시의 부하를 줄여야 한다.
일 실시예에서는 콘텐츠에 대한 암호화 레벨을 조절하여 콘텐츠 전체가 아닌 콘텐츠의 일부 블록만을 선택적으로 암호화 함으로써 영화와 같은 무거운 컨텐츠(heavy contents)의 재생 시의 부하를 크게 감소시킬 수 있다.
도 2는 일 실시예에 따른 콘텐츠를 분할하는 방법을 설명하기 위한 도면이다. 도 2를 참조하면, 암호화하고자 하는 대상인 콘텐츠(200)가 도시된다.
일 실시예에 따른 암호화 장치는 암호화를 위해 우선, 콘텐츠(200)를 예를 들어, 10 Kbyte 단위의 복수 개의 블록들(210, 220, 230, 240, ..)로 분할할 수 있다. 또한, 암호화 장치는 복수 개의 블록들(210, 220, 230, 240, ..) 각각의 맨 앞(혹은 헤더(header) 부분)에 해당하는 1 Kbyte 영역을 서브 블록들(211, 221, 231, 241, ..)로 구분할 수 있다.
이때, 블록들(210, 220, 230, 240, ..) 각각에 대응하는 서브 블록들(211, 221, 231, 241, ..)은 암호화 장치에 의한 암호화가 수행되는 부분에 해당할 수 있다.
도 3은 일 실시예에 따른 암호화할 블록의 범위를 결정하는 방법을 설명하기 위한 도면이다. 도 3을 참조하면, 암호화 레벨에 따라 암호화되는 블록의 범위가 도시된다.
일 실시예에 따른 암호화 장치는 복수 개의 블록들 중 암호화 레벨에 대응하는 위치에 있는 블록에 기초하여 암호화할 블록의 범위를 결정할 수 있다. 여기서, '암호화 레벨에 대응하는 위치에 있는 블록'이란 복수 개의 블록들 중 해당 블록의 위치가 암호화 레벨과 동일한 블록을 의미한다. 예를 들어, 암호화 레벨이 2인 경우, 암호화 장치는 복수 개의 블록들 중 앞에서부터 두 번째 위치에 있는 블록까지를 암호화할 블록의 범위로 결정할 수 있다. 또한, 암호화 레벨이 5인 경우, 암호화 장치는 복수 개의 블록들 중 앞에서부터 다섯 번째 위치에 있는 블록까지를 암호화할 블록의 범위로 결정할 수 있다.
암호화 장치는 암호화 레벨에 따라, 각 블록의 서브 블록들(211, 221, 231, 241)을 단계적으로 암호화할 수 있다. 예를 들어, 암호화 레벨이 1 단계인 경우, 암호화 장치는 블록(210)의 서브 블록(211)을 암호화하고, 암호화 레벨이 2 단계인 경우, 암호화 장치는 블록(210)의 서브 블록(211) 및 블록(220)의 서브 블록(221)을 암호화 할 수 있다. 예를 들어, 암호화 레벨이 10인 경우, 암호화 장치는 콘텐츠에 포함된 복수 개의 블록들 전체(예를 들어, 10개)에 대응되는 서브 블록들(10개)을 암호화함으로써 콘텐츠 전체를 암호화할 수 있다.
도 4는 일 실시예에 따른 암호화 방법을 설명하기 위한 도면이다. 도 4를 참조하면, 서브 블록들(211, 221, 231)이 초기화 벡터(IV)(410), 암호화 키(420,421,422), 블록 암호화에 기반한 암호화 모듈(430) 및 XOR 연산자(440)를 통해 암호화된 서브 블록들(211-1,221-1, 231-1)로 암호화되는 과정이 도시된다.
암호화 모듈(430)은 예를 들어, AES(Advanced Encryption Standard) 블록 암호화 알고리즘을 수행하는 모듈 또는 AES 블록 암호화 알고리즘에 해당할 수 있다. 암호화 모듈(430)은 예를 들어, 보탄 라이브러리(Botan Library)를 활용할 수 있다.
XOR 연산자(440)는 XOR 연산을 수행할 수 있다. 일 실시예에서는 암호화 및 복호화 과정을 빠르게 수행하기 위해서 XOR 연산자(440)를 예를 들어, 64 bit 어셈블러에 의해 구현할 수 있다.
일 실시예에 따른 암호화 장치는 암호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록의 미리 설정된 위치(예를 들어, 맨 앞의 1Kbyte 부분, 또는 가운데(맨 끝)의 1Kbyte 부분)에 해당하는 서브 블록에 대한 암호화 결과 및 암호화 키를 이용하여 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 암호화할 수 있다.
암호화 장치는 해당 블록의 이전 블록의 서브 블록에 대한 암호화 결과인 출력 비트열과 해당 블록의 서브 블록의 입력 비트열의 XOR 연산을 통해 암호화된 비트열, 다시 말해 암호화된 서브 블록을 출력할 수 있다.
일 실시예에서, 암호화할 1 Kbyte 크기의 서브 블록들(211, 221, 231)은 AES 블록 암호화 알고리즘을 이용하여 16 byte의 기본 블록 단위로 암호화될 수 있다. 이때 암호화 장치는 구조적인 특징이 유지되지 않는 이전 기본 블록을 현재 기본 블록을 암호화 하는데 사용할 수 있다. 예를 들어, 헤더(header)와 같이 콘텐츠 (파일)의 맨 앞 부분(서브 블록)은 대부분 비슷한 내용을 포함하므로 복수 개의 블록들 중 첫 번째 블록의 암호화를 위해 랜덤하게 생성된 초기화 벡터(IV)를 이용할 수 있다. 일 실시예에서는 첫 번째 블록의 암호화에 초기화 벡터를 이용함으로써 서브 블록과 같은 암호화 키를 사용하여 암호화 하더라도 암호화된 결과가 완전히 달라지도록 할 수 있다.
각 큰 블록(10KB짜리)의 첫 기본 블록은 전 큰 블록의 마지막 기본 블록을 평문의 형태 그대로 암호화에 사용할 수 있다. 여기서, '전 큰 블록의 마지막 기본 블록을 평문의 형태 그대로 암호화에 사용'한다는 것은 예를 들어, 10Kbyte 크기의 두 번째 블록의 서브 블록에 포함된 16 byte 크기의 첫 번째 기본 블록이 이전 블록(첫번째 블록)의 서브 블록에 포함된 16byte 크기의 마지막 기본 블록을 그대로 암호화에 사용한다는 의미로 이해될 수 있다.
일 실시예에 따른 암호화 방법은 다음의 수학식 1과 같이 표현할 수 있다.
여기서, 는 i 번째 암호문(또는 i 번째 암호화된 서브 블록), 는 i-1 번째 암호문(또는 i-1 번째 암호화된 서브 블록)을 나타낸다. 는 i 번째 평문(또는 i 번째 블록의 서브 블록)을, 는 암호화 키 K를 이용한 블록 암호화 알고리즘(또는 암호화 모듈(430))을 나타낸다.
예를 들어, 암호화할 블록의 범위에 포함된 블록이 복수 개의 블록들 중 첫 번째 블록인 경우, 암호화 장치는 미리 설정된 초기화 벡터(410) 및 암호화 키(420)를 이용하여 첫 번째 블록의 서브 블록(211)을 암호화할 수 있다. 이때, 초기화 벡터(410)는 랜덤하게 생성될 수 있다. 보다 구체적으로, 암호화 장치는 우선, 암호화 키(420) 및 암호화 모듈(430)을 이용하여 초기화 벡터(410)를 (410-1)로 암호화할 수 있다. 암호화 장치는 암호화 결과(410-1)와 서브 블록(211)과의 XOR 연산을 통해 암호화된 서브 블록(211-1)을 출력할 수 있다.
암호화할 블록의 범위에 포함된 적어도 하나의 블록이 복수 개의 블록들 중 두 번째 블록인 경우, 암호화 장치는 암호화 키(421) 및 블록 암호화 모듈(430)를 이용하여 이전 블록의 서브 블록(211)에 대한 암호화 결과(211-1)를 (211-2)로 암호화할 수 있다. 암호화 장치는 암호화 결과(211-2)와 서브 블록(221)과의 XOR 연산을 통해 암호화된 서브 블록(221-1)을 출력할 수 있다. 이때, 이전 블록의 서브 블록에 대한 암호화 결과(예를 들어, 221-1) 및 이전 블록의 서브 블록에 대한 암호화 결과를 암호화 키 및 블록 암호화 모듈을 이용하여 암호화한 결과(221-2)는 서로 동일한 길이를 가질 수 있다.
또한, 암호화할 블록의 범위에 포함된 적어도 하나의 블록이 복수 개의 블록들 중 세 번째 블록인 경우, 암호화 장치는 암호화 키(422) 및 블록 암호화 모듈(430)를 이용하여 이전 블록의 서브 블록(221)에 대한 암호화 결과(221-1)를 (221-2)로 암호화할 수 있다. 암호화 장치는 암호화 결과(221-2)와 서브 블록(231)과의 XOR 연산을 통해 암호화된 서브 블록(231-1)을 출력할 수 있다.
일 실시예에 따른 암호화 장치는 암호화할 블록의 범위에 포함된 모든 서브블록들에 대하여 전술한 암호화 과정을 반복 수행할 수 있다.
암호화 키(420,421,422)는 예를 들어, 256 bit 길이의 랜덤 바이트 스트림(random byte stream)으로, 암호화 키(420), 암호화 키(421), 및 암호화 키(422)는 모두 동일한 값에 해당할 수 있다. 암호화 키는 암호화 장치 및 복호화 장치에서 동일하게 이용될 수 있다.
일 실시예에 따른 암호화 방법은 암호화된 결과물이 원래 콘텐츠(데이터)의 구조적 특성을 가지고 있지 않기 때문에 구조적 특성으로 그 내용을 유추할 수 있는 이미지나 영상의 암호화에 효과적이다.
또한, 일 실시예에 따른 암호화 방법은 콘텐츠 전체를 암호화하는 것이 아니라, 사용자가 선택한 암호화 레벨에 따라 복수 개의 블록들로 분할된 콘텐츠 중 암호화할 블록의 범위를 결정함으로써 스크린 엑스 재생 방식의 특성에 부합하는 실시간 복호화 및 탐색이 가능해야 하며, 빠르고 효율적으로 콘텐츠 재생 또한 가능하게 한다.
도 5는 일 실시예에 따른 복호화 방법을 나타낸 흐름도이다. 도 5를 참조하면, 일 실시예에 따른 복호화 장치는 암호화된 복수 개의 블록들을 포함하는 암호화된 콘텐츠를 수신한다(510). 복수 개의 블록들은 복수 개의 서브 블록들을 포함한다.
복호화 장치는 기 암호화된 콘텐츠에 대응하는 암호화 키, 초기화 벡터 및 암호화 레벨을 포함하는 키 파일을 수신한다(520). 키 파일은 전술한 암호화 키, 초기화 벡터 및 암호화 레벨 이외에도 원본 파일의 크기를 더 포함할 수 있다. 키 파일을 예를 들어, XML(eXtensible Markup Language)로 작성될 수 있다.
키 파일의 일 예는 다음과 같다.
<?xml version="1.0" encoding="UTF-8"?>
<KeyInfo>
<Key>26bea8a28182285c27f00ac9f30ed2a84599189f2f09dc335a1c83698ee010da</Key>
<Initializer>1bdc3fcc8b2cc51b1754e976b13afbaa</Initializer>
<Size>3950391333</Size>
<CryptLevel>1</CryptLevel>
</KeyInfo>
여기서, Key는 암호화 키를, Initializer 는 초기화 벡터(IV)를, Size 는 원본 파일의 크기를 나타내고, CryptLevel 는 암호화 단계를 나타낸다.
복호화 장치는 암호화 레벨을 기초로, 암호화된 복수 개의 블록들 중 복호화할 블록의 범위를 결정한다(530). 복호화 장치는 키 파일에 포함된 암호화 레벨에 따라 복호화할 블록의 범위를 결정할 수 있다. 복호화 장치는 암호화된 복수 개의 블록들 중 암호화 레벨에 대응하는 위치에 있는 블록에 기초하여 복호화할 블록의 범위로 결정할 수 있다.
복호화 장치는 초기화 벡터 및 암호화 키를 이용하여 복호화할 블록의 범위에 포함된 적어도 하나의 블록을 복호화한다(540). 복호화 장치는 복호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록의 미리 설정된 위치에 해당하는 암호화된 서브 블록 및 암호화 키를 이용하여 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 복호화할 수 있다. 복호화 장치가 적어도 하나의 블록을 복호화하는 방법은 도 6을 참조하여 구체적으로 설명한다.
도 6은 일 실시예에 따른 복호화 방법을 설명하기 위한 도면이다. 도 6을 참조하면, 암호화된 서브 블록들(211-1, 221-1, 231-1)이 초기화 벡터(IV)(610), 암호화 키(620,621,622), 블록 암호화에 기반한 암호화 모듈(630) 및 XOR 연산자(640)를 통해 서브 블록들(211, 221, 231)로 복호화되는 과정이 도시된다.
초기화 벡터(IV)(610)는 암호화 시에 사용된 초기화 벡터(IV)(410)과 동일하고, 암호화 키(620,621,622) 또한 암호화 키(420,421,422)와 동일한 것일 수 있다. 마찬가지로 암호화 모듈(630) 및 XOR 연산자(640) 또한 암호화 모듈(430) 및 XOR 연산자(440)와 동일한 것일 수 있다.
일 실시예에 따른 복호화 장치는 복호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록의 미리 설정된 위치(예를 들어, 맨 앞의 1Kbyte)에 해당하는 암호화된 서브 블록 및 암호화 키를 이용하여 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 복호화할 수 있다.
일 실시예에 따른 복호화 방법은 다음의 수학식 2와 같이 표현할 수 있다.
예를 들어, 복호화할 블록의 범위에 포함된 적어도 하나의 블록이 복수 개의 블록들 중 첫 번째 블록인 경우, 복호화 장치는 초기화 벡터(610) 및 암호화 키(620)를 이용하여 첫 번째 블록의 암호화된 서브 블록(211-1)을 복호화할 수 있다. 보다 구체적으로, 복호화 장치는 우선, 암호화 키(620) 및 암호화 모듈(630)를 이용하여 초기화 벡터(610)를 (610-1)로 암호화할 수 있다. 복호화 장치는 암호화 결과(610-1)와 첫 번째 블록의 암호화된 서브 블록(211-1)과의 XOR 연산을 통해 첫 번째 블록의 암호화된 서브 블록(211-1)을 서브 블록(211)으로 복호화할 수 있다.
복호화할 블록의 범위에 포함된 적어도 하나의 블록이 두 번째 블록인 경우, 복호화 장치는 암호화 키(621) 및 블록 암호화 모듈(630)을 이용하여 이전 블록의 암호화된 서브 블록(211-1)을 (211-2)로 암호화할 수 있다. 복호화 장치는 암호화 결과(211-2)와 적어도 하나의 블록의 암호화된 서브 블록(221-1)과의 XOR 연산을 통해 적어도 하나의 블록의 암호화된 서브 블록(221-1)을 서브 블록(221)으로 복호화할 수 있다.
또한, 복호화할 블록의 범위에 포함된 적어도 하나의 블록이 세 번째 블록인 경우, 복호화 장치는 암호화 키(622) 및 블록 암호화 모듈(630)을 이용하여 이전 블록의 암호화된 서브 블록(221-1)을 암호화할 수 있다. 복호화 장치는 암호화 결과(211-2)와 적어도 하나의 블록의 암호화된 서브 블록(221-1)과의 XOR 연산을 통해 적어도 하나의 블록의 암호화된 서브 블록(221-1)을 서브 블록(221)으로 복호화할 수 있다.
일 실시예에 따른 복호화 방법은 암호화 방법과 마찬가지로 암호화 연산과 XOR 연산만으로 수행되므로 별도의 복호화 모듈이 없이도 콘텐츠를 복호화할 수 있다. 상술한 복호화 단계는 병렬적으로 처리될 수도 있다.
도 7은 일 실시예에 따른 암호화 장치의 블록도이다. 도 7을 참조하면, 일 실시예에 따른 암호화 장치(700)는 입력 인터페이스(710), 프로세서(720), 통신 인터페이스(730) 및 메모리(740)를 포함한다. 입력 인터페이스(710), 프로세서(720), 통신 인터페이스(730) 및 메모리(740)는 통신 버스(705)를 통해 서로 연결될 수 있다.
입력 인터페이스(710)는 콘텐츠에 대한 암호화 레벨을 수신한다. 입력 인터페이스(710)는 예를 들어, 암호화 장치의 디스플레이(미도시)를 통해 제공되는 입력 인터페이스(710)를 통해 사용자로부터 입력된 콘텐츠에 대한 암호화 레벨을 수신할 수 있다. 이때, 콘텐츠에 대한 암호화 레벨은 사용자의 선택에 따라 예를 들어, 제1단계부터 제10 단계까지 다양하게 설정될 수 있다.
실시예에 따라서, 암호화 장치(700)는 입력 인터페이스(710) 대신에 통신 인터페이스(730)를 통하여 콘텐츠에 대한 암호화 레벨을 수신할 수도 있다.
프로세서(720)는 콘텐츠를 복수 개의 블록들로 분할하고, 입력 인터페이스(710)를 통해 수신한 암호화 레벨을 기초로, 복수 개의 블록들 중 암호화할 블록의 범위를 결정한다. 이때, 블록들은 복수 개의 서브 블록들을 포함한다.
프로세서(720)는 암호화할 블록의 범위에 포함된 적어도 하나의 블록을 암호화한다.
통신 인터페이스(730)는 암호화할 콘텐츠를 수신할 수 있다. 또한, 통신 인터페이스(730)는 프로세서(720)에서 암호화된 적어도 하나의 블록을 포함하는 콘텐츠, 다시 말해 암호화된 콘텐츠를 전송한다.
메모리(740)는 암호화 하고자 하는 콘텐츠를 저장할 수 있다. 또는 메모리(740)는 입력 인터페이스(710)에 의해 수신된 콘텐츠에 대한 암호화 레벨을 저장할 수 있다. 이 밖에도, 메모리(740)는 프로세서(720)에 의해 암호화된 적어도 하나의 블록을 포함하는 콘텐츠, 다시 말해 암호화된 콘텐츠를 저장할 수 있다.
메모리(740)는 예를 들어, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), DDR RAM(Double data rate synchronous dynamic random access memory) 또는 다른 고속 액세스 고체 상태 메모리 장치 등과 같은 고속 랜덤 액세스 메모리(high-speed random access memory)를 포함할 수 있다. 메모리(740)는 휘발성 메모리 및 비휘발성 메모리를 포함할 수 있다. 메모리(740)는 프로세서(720)로부터 원격에 위치하는 적어도 하나의 저장 장치를 선택적으로 포함할 수 있다.
이 밖에도, 프로세서(720)는 도 1 내지 도 4를 통해 전술한 적어도 하나의 방법 또는 적어도 하나의 방법에 대응되는 알고리즘을 수행할 수 있다. 프로세서(720)는 프로그램을 실행하고, 암호화 장치(700)를 제어할 수 있다. 프로세서(720)에 의하여 실행되는 프로그램 코드는 메모리(740)에 저장될 수 있다.
암호화 장치(700)는 예를 들어, 사용자의 스마트 폰, 각종 웨어러블 디바이스, 기타 컴퓨팅 장치, 및 프로젝터(projector)를 포함할 수 있다. 또는 암호화 장치(700)는 예를 들어, 단일의 서버 컴퓨터 또는 이와 유사한 시스템이거나, 또는 하나 이상의 서버 뱅크들(server banks) 또는 그 외 다른 배열들로 배열되는 복수의 서버들일 수 있다. 암호화 장치(700)는 단일 시설에 놓일 수도 있고, 혹은 많은 서로 다른 지리적 위치들 간에 분산된 서버 "클라우드(cloud)"일 수도 있다.
도 8은 일 실시예에 따른 복호화 장치의 블록도이다. 도 8을 참조하면, 일 실시예에 따른 복호화 장치(800)는 통신 인터페이스(810), 프로세서(820) 및 메모리(830)를 포함한다. 통신 인터페이스(810), 프로세서(820) 및 메모리(830)는 통신 버스(805)를 통해 서로 연결될 수 있다.
통신 인터페이스(810)는 암호화된 복수 개의 블록들을 포함하는 암호화된 콘텐츠를 수신한다. 또한, 통신 인터페이스(810)는 암호화된 콘텐츠에 대응하는 암호화 키, 초기화 벡터 및 암호화 레벨을 포함하는 키 파일을 수신한다. 이때, 암호화된 콘텐츠는 예를 들어, 암호화 장치(700)에 의해 암호화된 것일 수 있다.
또한, 통신 인터페이스(810)는 프로세서(820)에서 복호화된 적어도 하나의 블록을 포함하는 콘텐츠를 전송한다.
프로세서(820)는 키 파일에 포함된 암호화 레벨을 기초로, 암호화된 복수 개의 블록들 중 복호화할 블록의 범위를 결정한다. 프로세서(820)는 초기화 벡터 및 암호화 키를 이용하여 복호화할 블록의 범위에 포함된 적어도 하나의 블록을 복호화한다.
메모리(830)는 통신 인터페이스(810)를 통해 수신한 키 파일 및/또는 암호화된 콘텐츠를 저장할 수 있다. 또는 메모리(830)는 프로세서(820)에서 복호화된 적어도 하나의 블록을 포함하는 콘텐츠를 저장할 수 있다.
이 밖에도, 프로세서(820)는 도 5 내지 도 6을 통해 전술한 적어도 하나의 방법 또는 적어도 하나의 방법에 대응되는 알고리즘을 수행할 수 있다. 프로세서(820)는 프로그램을 실행하고, 복호화 장치(800)를 제어할 수 있다. 프로세서(820)에 의하여 실행되는 프로그램 코드는 메모리(830)에 저장될 수 있다.
전술한 암호화 장치(700)와 마찬가지로, 복호화 장치(800) 또한 예를 들어, 사용자의 스마트 폰, 각종 웨어러블 디바이스, 기타 컴퓨팅 장치, 및 프로젝터(projector)를 포함할 수 있다. 또는 복호화 장치(800)는 예를 들어, 단일의 서버 컴퓨터 또는 이와 유사한 시스템이거나, 또는 하나 이상의 서버 뱅크들(server banks) 또는 그 외 다른 배열들로 배열되는 복수의 서버들일 수 있다. 복호화 장치(800)는 단일 시설에 놓일 수도 있고, 혹은 많은 서로 다른 지리적 위치들 간에 분산된 서버 "클라우드(cloud)"일 수도 있다.
일 실시예에서는 암호화 장치(700)와 복호화 장치(800)를 구분하여 설명하였으나, 실시예에 따라서, 암호화 장치(700) 및 복호화 장치(800)가 통합된 하나의 암복호화 장치에 의해 상술한 동작들이 수행될 수도 있다.
전술한 동작들은 예시적인 사항에 해당하며, 실시예들은 전술한 동작으로부터 다양하게 변형될 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 중앙 처리 장치(Central Processing Unit; CPU), 그래픽 프로세싱 유닛(Graphics Processing Unit; GPU), ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 주문형 집적 회로(Application Specific Integrated Circuits; ASICS), 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 비록 한정된 도면에 의해 실시예들이 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (20)
- 콘텐츠에 대한 암호화 레벨을 수신하는 단계;
상기 콘텐츠를 복수 개의 블록들-상기 블록들은 복수 개의 서브 블록들을 포함함-로 분할하는 단계;
상기 암호화 레벨을 기초로, 상기 복수 개의 블록들 중 암호화할 블록의 범위를 결정하는 단계; 및
상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록을 암호화하는 단계
를 포함하고,
상기 적어도 하나의 블록을 암호화하는 단계는
상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록(previous block)의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과 및 암호화 키를 이용하여 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 암호화하는 단계
를 포함하는, 암호화 방법. - 제1항에 있어서,
상기 암호화할 블록의 범위를 결정하는 단계는
상기 복수 개의 블록들 중 상기 암호화 레벨에 대응하는 위치에 있는 블록에 기초하여 상기 암호화할 블록의 범위를 결정하는 단계
를 포함하는, 암호화 방법. - 삭제
- 제1항에 있어서,
상기 암호화 키는
256 비트 길이의 랜덤 바이트 스트림(random byte stream)을 포함하는, 암호화 방법. - 제1항에 있어서,
상기 서브 블록을 암호화하는 단계는
상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록이 상기 복수 개의 블록들 중 첫 번째 블록인 경우,
미리 설정된 초기화 벡터 및 상기 암호화 키를 이용하여 상기 첫 번째 블록의 미리 설정된 위치에 해당하는 서브 블록을 암호화하는 단계
를 포함하는, 암호화 방법. - 제5항에 있어서,
상기 첫 번째 블록의 상기 서브 블록을 암호화하는 단계는
상기 암호화 키를 이용하여 상기 초기화 벡터를 제1 암호화하는 단계; 및
상기 제1 암호화된 초기 벡터와 상기 첫 번째 블록의 상기 서브 블록과의 XOR 연산을 통해 상기 첫 번째 블록의 상기 서브 블록을 제2 암호화 하는 단계
를 포함하는, 암호화 방법. - 제5항에 있어서,
상기 초기화 벡터는 랜덤하게 생성되는, 암호화 방법. - 제1항에 있어서,
상기 서브 블록을 암호화하는 단계는
상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록이 상기 복수 개의 블록들 중 첫 번째 블록인 아닌 경우,
상기 암호화 키를 이용하여 상기 이전 블록의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과를 제3 암호화하는 단계; 및
상기 제3 암호화 결과와 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록과의 XOR 연산을 통해 상기 적어도 하나의 블록의 서브 블록을 제4 암호화하는 단계
를 포함하는, 암호화 방법. - 제8항에 있어서,
상기 제3 암호화하는 단계는
상기 암호화 키 및 AES 알고리즘을 이용하여 상기 이전 블록의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과를 제3 암호화하는 단계
를 포함하는, 암호화 방법. - 제8항에 있어서,
상기 이전 블록의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과 및 상기 제3 암호화 결과는 서로 동일한 길이를 가지는, 암호화 방법. - 제1항에 있어서,
상기 콘텐츠는
멀티미디어 콘텐츠, 다면 콘텐츠 및 텍스트 중 적어도 하나를 포함하는, 암호화 방법. - 암호화된 복수 개의 블록들- 상기 블록들은 복수 개의 서브 블록들을 포함함-을 포함하는 암호화된 콘텐츠를 수신하는 단계;
상기 암호화된 콘텐츠에 대응하는 암호화 키, 초기화 벡터 및 암호화 레벨을 포함하는 키 파일(key file)을 수신하는 단계;
상기 암호화 레벨을 기초로, 상기 암호화된 복수 개의 블록들 중 복호화할 블록의 범위를 결정하는 단계; 및
상기 초기화 벡터 및 상기 암호화 키를 이용하여 상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록을 복호화하는 단계
를 포함하고,
상기 적어도 하나의 블록을 복호화하는 단계는
상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록의 미리 설정된 위치에 해당하는 암호화된 서브 블록 및 상기 암호화 키를 이용하여 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 복호화하는 단계
를 포함하는, 복호화 방법. - 제12항에 있어서,
상기 복호화할 블록의 범위를 결정하는 단계는
상기 암호화된 복수 개의 블록들 중 상기 암호화 레벨에 대응하는 위치에 있는 블록에 기초하여 상기 복호화할 블록의 범위로 결정하는 단계
를 포함하는, 복호화 방법. - 삭제
- 제12항에 있어서,
상기 서브 블록을 복호화하는 단계는
상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록이 상기 복수 개의 블록들 중 첫 번째 블록인 경우,
상기 초기화 벡터 및 상기 암호화 키를 이용하여 상기 첫 번째 블록의 미리 설정된 위치에 해당하는 암호화된 서브 블록을 복호화하는 단계
를 포함하는, 복호화 방법. - 제15항에 있어서,
상기 첫 번째 블록의 상기 서브 블록을 복호화하는 단계는
상기 암호화 키를 이용하여 상기 초기화 벡터를 암호화하는 단계; 및
상기 암호화된 초기화 벡터와 상기 첫 번째 블록의 상기 암호화된 서브 블록과의 XOR 연산을 통해 상기 첫 번째 블록의 상기 암호화된 서브 블록을 복호화하는 단계
를 포함하는, 복호화 방법. - 제12항에 있어서,
상기 서브 블록을 복호화하는 단계는
상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록이 상기 복수 개의 블록들 중 첫 번째 블록인 아닌 경우,
상기 암호화 키를 이용하여 상기 이전 블록의 미리 설정된 위치에 해당하는 암호화된 서브 블록을 제5 암호화하는 단계; 및
상기 제5 암호화 결과와 상기 적어도 하나의 블록의 미리 설정된 위치에해당하는 암호화된 서브 블록과의 XOR 연산을 통해 상기 적어도 하나의 블록의 암호화된 서브 블록을 복호화하는 단계
를 포함하는, 복호화 방법. - 하드웨어와 결합되어 제1항 내지 제2항, 제4항 내지 제13항, 제15항 내지 제17항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램.
- 콘텐츠에 대한 암호화 레벨을 수신하는 입력 인터페이스;
상기 콘텐츠를 복수 개의 블록들- 상기 블록들은 복수 개의 서브 블록들을 포함함-로 분할하고, 상기 암호화 레벨을 기초로, 상기 복수 개의 블록들 중 암호화할 블록의 범위를 결정하며, 상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록을 암호화하는 프로세서; 및
상기 암호화된 적어도 하나의 블록을 포함하는 콘텐츠를 전송하는 통신 인터페이스
를 포함하고,
상기 프로세서는
상기 암호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록의 미리 설정된 위치에 해당하는 서브 블록에 대한 암호화 결과 및 암호화 키를 이용하여 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 암호화하는, 암호화 장치. - 암호화된 복수 개의 블록들- 상기 블록들은 복수 개의 서브 블록들을 포함함-을 포함하는 암호화된 콘텐츠 및 상기 암호화된 콘텐츠에 대응하는 암호화 키, 초기화 벡터 및 암호화 레벨을 포함하는 키 파일을 수신하는 통신 인터페이스; 및
상기 암호화 레벨을 기초로, 상기 암호화된 복수 개의 블록들 중 복호화할 블록의 범위를 결정하고, 상기 초기화 벡터 및 상기 암호화 키를 이용하여 상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록을 복호화하는 프로세서
를 포함하고,
상기 프로세서는
상기 복호화할 블록의 범위에 포함된 적어도 하나의 블록의 이전 블록의미리 설정된 위치에 해당하는 암호화된 서브 블록 및 상기 암호화 키를 이용하여 상기 적어도 하나의 블록의 미리 설정된 위치에 해당하는 서브 블록을 복호화하며,
상기 통신 인터페이스는
상기 복호화된 적어도 하나의 블록을 포함하는 콘텐츠를 전송하는, 복호화 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20170032364 | 2017-03-15 | ||
KR1020170032364 | 2017-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180105545A KR20180105545A (ko) | 2018-09-28 |
KR101991664B1 true KR101991664B1 (ko) | 2019-06-21 |
Family
ID=63721419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170064766A KR101991664B1 (ko) | 2017-03-15 | 2017-05-25 | 블록 암호화에 기초한 콘텐츠의 암호화 및 복호화 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101991664B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102481024B1 (ko) * | 2021-07-22 | 2022-12-23 | 주식회사 티엔젠 | 데이터 암호화를 위해 수행되는 데이터 처리 방법, 장치, 시스템 및 컴퓨터 프로그램 |
KR20230139647A (ko) * | 2022-03-28 | 2023-10-05 | 주식회사 아이서티 | 데이터 암호화 및 복호화 시스템, 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002190798A (ja) * | 2000-12-20 | 2002-07-05 | Nec Corp | 暗号化装置および復号化装置 |
KR100551992B1 (ko) * | 2003-03-25 | 2006-02-20 | 소프트포럼 주식회사 | 어플리케이션 데이터의 암호화 및 복호화 방법 |
JP2006345036A (ja) * | 2005-06-07 | 2006-12-21 | Konica Minolta Business Technologies Inc | 画像処理装置及び画像記憶方法 |
KR101521616B1 (ko) | 2014-02-24 | 2015-05-20 | (주)헤리트 | Iot 환경에서의 효율적인 보안전송을 위한 선택적 암호화 장치 및 방법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2402024B (en) * | 2003-05-19 | 2005-07-13 | Motorola Inc | Processor,method,transmitter and terminal for use in communications |
-
2017
- 2017-05-25 KR KR1020170064766A patent/KR101991664B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002190798A (ja) * | 2000-12-20 | 2002-07-05 | Nec Corp | 暗号化装置および復号化装置 |
KR100551992B1 (ko) * | 2003-03-25 | 2006-02-20 | 소프트포럼 주식회사 | 어플리케이션 데이터의 암호화 및 복호화 방법 |
JP2006345036A (ja) * | 2005-06-07 | 2006-12-21 | Konica Minolta Business Technologies Inc | 画像処理装置及び画像記憶方法 |
KR101521616B1 (ko) | 2014-02-24 | 2015-05-20 | (주)헤리트 | Iot 환경에서의 효율적인 보안전송을 위한 선택적 암호화 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20180105545A (ko) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11563556B2 (en) | Architecture and instruction set for implementing advanced encryption standard (AES) | |
KR102363264B1 (ko) | 하드웨어로 보호되는 디지털 권한 관리를 구비한 미디어 디코딩 제어 | |
US9450748B2 (en) | Decryption of content including partial-block discard | |
WO2010055658A1 (ja) | コンテンツ復号処理装置、コンテンツ復号処理方法及び集積回路 | |
US8391475B2 (en) | Method and apparatus for advanced encryption standard (AES) block cipher | |
JP2002244929A (ja) | ディジタルコピー方法及びディジタルコンテンツの記録装置 | |
US9197407B2 (en) | Method and system for providing secret-less application framework | |
JP2008283672A (ja) | 複数モードでのaes暗号化または復号の単一命令での実行 | |
US20130129079A1 (en) | System And Method For Decryption Of Content Including Disconnected Encryption Chains | |
KR101991664B1 (ko) | 블록 암호화에 기초한 콘텐츠의 암호화 및 복호화 방법 및 장치 | |
US20070168284A1 (en) | Management of encrypted storage media | |
JP6811625B2 (ja) | ファイル中継装置及びファイル中継プログラム | |
US9294276B2 (en) | Countering server-based attacks on encrypted content | |
JP2011123229A (ja) | プログラムコード暗号化装置及びプログラム | |
JP4708914B2 (ja) | 解読化方法 | |
WO2008110971A2 (en) | Encryption and decryption of auxiliary data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |