KR101054075B1 - 보호키 사용 제한 방법 및 장치 - Google Patents

보호키 사용 제한 방법 및 장치 Download PDF

Info

Publication number
KR101054075B1
KR101054075B1 KR1020080128053A KR20080128053A KR101054075B1 KR 101054075 B1 KR101054075 B1 KR 101054075B1 KR 1020080128053 A KR1020080128053 A KR 1020080128053A KR 20080128053 A KR20080128053 A KR 20080128053A KR 101054075 B1 KR101054075 B1 KR 101054075B1
Authority
KR
South Korea
Prior art keywords
counter
key
protection key
hash value
value
Prior art date
Application number
KR1020080128053A
Other languages
English (en)
Other versions
KR20100069384A (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 KR1020080128053A priority Critical patent/KR101054075B1/ko
Publication of KR20100069384A publication Critical patent/KR20100069384A/ko
Application granted granted Critical
Publication of KR101054075B1 publication Critical patent/KR101054075B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions

Abstract

본 발명은 보호키 사용 제한 방법 및 장치에 관한 것이다.
본 발명에 따르면, 암호화된 데이터 사용이 요청되면, 암호화된 데이터의 복호화를 위해 사용되는 보호키가 암호화되어 포함된 키 블랍을 신뢰플랫폼모듈에서 복호화한다. 그리고, 외부 메모리에 저장된 해당 보호키의 카운터에 대한 무결성 검증을 신뢰플랫폼모듈 내에서 해시연산을 통해 수행하고, 무결성 검증이 완료된 카운터를 사용가능횟수와 비교하여 사용가능횟수를 초과하지 않는 경우에만 복호화된 보호키의 사용을 허가하고 해당 카운터를 갱신한다.
TPM, CEK, 디지털 콘텐츠, 보호키, 카운터, 해시(hash), 증분 해시

Description

보호키 사용 제한 방법 및 장치{Method and apparatus for use restriction of Encryption Key}
본 발명은 보호키 사용 제한 방법 및 장치에 관한 것이다. 특히, 신뢰플랫폼모듈을 이용하여 디지털 콘텐츠 보호키의 사용횟수를 제한하는 방법 및 장치에 관한 것이다.
본 발명은 지식경제부 및 정보통신연구진흥원의 IT성장동력사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호: 2006-S-041-03, 차세대 모바일 단말기의 보안 및 신뢰 서비스를 위한 공통 보안 핵심 모듈 개발].
본 발명은 암호화된 디지털 콘텐츠를 복호화 할 수 있는 키(CEK)의 사용 횟수를 제한하여 사용자가 디지털 콘텐츠를 정해진 횟수 내에서만 사용할 수 있도록 함으로써 콘텐츠가 불법적으로 사용되는 것을 방지하는 방법 및 시스템에 관한 것이다.
일반적으로 디지털 콘텐츠 보호키(Contents Encryption Key, 이하 'CEK'라 칭함)는 사용자 컴퓨터에 암호화되어 저장되며, CEK를 암호화/복호화 시 사용하는 공개키/개인키 쌍은 신뢰컴퓨팅그룹(Trusted Computing Group 이하, 'TCG'라 칭함) 에서 정의한 키 관리방법에 기초해 사용자 컴퓨터에 저장된다.
한편, CEK를 복호화하기 위해 필요한 개인키는 사용자 컴퓨터에 있는 신뢰플랫폼모듈(Trusted Platform Module, 이하 'TPM'이라 칭함)에서만 사용할 수 있기 때문에, 암호화된 CEK는 사용자 컴퓨터의 TPM 내에서만 복호화가 가능하다. 따라서, 복호화된 CEK에 대한 TPM 외부에서의 사용을 허가하기 전에 CEK의 사용 허가 횟수를 검사하여 사용 가능한 경우에만 TPM 외부로 CEK를 내보내 디지털 콘텐츠를 복호화하는데 사용되도록 함으로써, 디지털 콘텐츠의 사용 횟수를 제한할 수 있다. 이를 위해, CEK를 사용할 때 마다 TPM 내에 있는 카운터(Counter)를 증가시키고, 카운터 값이 허가 횟수 이내인 경우에만 CEK를 사용할 수 있도록 허가하는 방법을 사용할 수 있다. 그러나, TPM이 가질 수 있는 카운터의 수는 제한적이나, 사용자 컴퓨터에서 필요한 CEK의 수는 제한이 없기 때문에 TPM이 제공하는 카운터만으로는 사용자 컴퓨터에서 필요한 CEK를 모두 수용할 수 없는 문제점이 발생한다.
이에 따라, 기존에는 TPM 외부의 카운터를 사용하여 CEK 사용 횟수를 카운트하고 카운터 값이 임의로 변경된 경우에 이를 탐지하는 방법이 제안되었다. 그러나, 이 방법에서는 카운터 값의 무결성 검증을 위한 정보를 이진 트리(binary tree) 형태로 유지하기 때문에 카운터 수가 많아지면 트리의 깊이(depth)가 늘어나 무결성 검증에 필요한 시간이 증가하여 디지털 콘텐츠 복호화 성능에 영향을 미칠 수 있다.
본 발명이 이루고자 하는 기술적 과제는 복호화 성능에 미치는 영향을 최소화하면서 데이터의 불법적 사용을 효과적으로 제한할 수 있는 보호키 사용 제한 방법 및 장치를 제공하는 것이다.
상기한 목적을 달성하기 위한 본 발명의 특징에 따른 보호키 사용을 제한하기 위한 장치는,
보호키, 상기 보호키의 사용가능횟수 및 카운터 번호를 포함하는 키 블랍을 저장하는 외부 메모리; 적어도 하나의 보호키에 해당하는 카운터를 저장하는 카운터 테이블; 및 상기 키 블랍을 복호화하여 상기 보호키, 상기 사용가능횟수 및 상기 카운터 번호를 획득하고, 상기 카운터 테이블에 대해 생성한 제1 해시값을 이용하여 상기 보호키에 해당하는 카운터에 대한 무결성 검증과정을 수행하며, 무결성이 검증된 상기 보호키에 해당하는 카운터의 카운터 값을 갱신하고, 상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하지 않는 경우에 상기 보호키의 사용을 허가하는 신뢰플랫폼모듈을 포함한다.
또한, 본 발명의 다른 특징에 따른 신뢰플랫폼모듈이 외부에 저장된 카운터 테이블을 이용하여 보호키의 사용을 제한하는 방법은,
외부 메모리에 저장된 키 블랍을 입력받는 단계; 상기 키 블랍으로부터 보호키, 상기 보호키에 해당하는 카운터의 사용가능횟수 및 카운터 번호를 획득하는 단계; 상기 카운터 테이블에 대해 생성한 제1 해시값을 상기 신뢰플랫폼모듈 내부에 기 저장된 제2 해시값과 비교하여 상기 보호키에 해당하는 카운터에 대한 무결성 검증과정을 수행하는 단계; 무결성이 검증된 상기 보호키에 해당하는 카운터의 카운터 값을 갱신하는 단계; 및 상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하지 않는 경우, 상기 보호키에 대한 사용을 허가하는 단계를 포함한다.
본 발명에 따르면, 암호화된 데이터를 복호화하기 위해 필요한 보호키의 사용횟수를 효과적으로 제한함으로써, 정해진 횟수 내에서만 데이터의 사용을 허가하여 데이터가 불법적으로 사용되는 것을 방지하는 효과가 있다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
이제 아래에서는 본 발명의 실시 예에 따른 보호키 사용 제한 방법 및 장치 에 대하여 도면을 참고로 하여 상세하게 설명한다.
우선, 본 발명의 실시 예를 설명하기에 앞서 TCG에서 정의한 키 보호방법에 대해 설명한다.
도 1은 TCG에서 정의한 일반적인 키 보호방법을 수행하는 시스템을 도시한 개념도이다.
도 1을 보면, 키 보호장치는 TPM(110), 키 관리부(120) 및 외부 메모리(130)를 포함한다.
TPM(110)은 내부 메모리(111)에 승인키(Endorsement Key) 및 루트키(Storage Root Key)를 저장한다. 한편, TPM(110)의 한정된 자원으로 인해 필요한 모든 키를 TPM(110)의 내부 메모리(111)에 저장할 수 없으므로, 승인키 및 루트키를 제외한 나머지 키는 암호화하여 외부 메모리(130)에 저장된다.
또한, TPM(110)은 외부 메모리(130)에 저장된 암호화된 키를 사용하기 위해 외부 메모리(130)로부터 암호화된 키를 읽어와 복호화한 뒤, 복호화된 키를 키 슬롯(key slot)(113)에 임시로 저장한다. 그리고, RSA(Rivest Shamir Adleman) 엔진(112)을 통해 개인키/공개키 쌍을 이용한 암호화 및 복호화를 수행한다.
키 관리부(120)는 외부 메모리(130)에 저장된 암호화된 키들을 관리하고, TPM(110)을 이용하여 외부 메모리(130)에 저장된 암호화된 키의 복호화를 관리한다.
외부 메모리(130)에는 승인키 및 루트키를 제외한 나머지 키들과 암호화된 데이터(132)를 저장한다. 여기서, 외부 메모리(130)는 TPM(110)과 달리 임의 접근 및 변경이 가능하므로 외부 메모리(130)에 저장되는 키들은 암호화되어 키 블랍(blob)(131) 형태로 저장된다. 여기서, 블랍은 파일 형식의 하나로서, 문자가 아닌 이진 데이터 블록을 의미한다.
도 1을 참조하여 TCG에서 정의한 일반적인 키 보호방법에 대하여 살펴보면 다음과 같다. 한편, 아래에서는 별도의 언급이 없는 한 모든 키는 비대칭 키를 의미한다.
TPM(110)은 키를 생성하면, 키의 개인키 부분, 키를 사용하기 위해 필요한 인증정보 및 암호화되지 않은 정보의 무결성 검증을 위한 값을 루트키 또는 루트키로 보호되는 다른 키를 사용하여 암호화하고, 해당 키의 공개키 부분 및 기타 정보는 암호화하지 않은 평문으로 구성한다. 그리고, 암호화된 부분과 암호화되지 않은 평문 부분을 조합하여 키 블랍(131)을 생성하고, 이를 키 관리부(120)로 전달하여 해당 키 블랍(131)이 TPM(110) 외부의 외부 메모리(130)에 저장되도록 한다.
한편, 키 블랍(131)에 포함된 공개키 부분은 평문으로 저장되므로, 어떤 데이터를 키 블랍(131)에 포함된 공개키를 사용하여 암호화하는 과정은 TPM(110) 내부에서 수행될 수도 있고, TPM(110) 외부에서 수행될 수도 있다.
그러나, 키 블랍(131)에 포함된 개인키는 암호화되어 저장되므로, 암호화된 데이터(132)를 키 블랍(131)에 포함된 개인키를 사용하여 복호화하기 위해서, TPM(110)은 해당 키 블랍(131)을 외부 메모리(130)로부터 읽어온다. 그리고, 해당 키 블랍(131)의 암호화된 부분을 복호화하고 인증정보의 검증과 암호화되지 않은 부분의 무결성 검증을 성공적으로 수행한 후, 획득한 개인키를 키 슬롯(113)에 임 시로 저장한다. 그리고, 외부 메모리(130)로부터 암호화된 데이터(132)를 읽어와 키 슬롯(113)에 저장된 개인키로 RSA 엔진(112)을 통해 복호화한다.
전술한 바와 같이 데이터 및 키를 암호화하여 저장하면, 데이터나 키의 인증정보만 안다면 횟수에 제한 없이 암호화된 데이터를 사용하는 것이 가능하다. 한편, 디지털 저작권 관리(Digital Rights Management, DRM) 시스템에서 사용자에게 디지털 콘텐츠를 전달하는 경우, 해당 디지털 콘텐츠에 대한 사용을 제한해야 하는 경우가 발생한다. 예를 들어, 사용자가 디지털 콘텐츠를 100회만 사용할 수 있도록 허가되는 경우, 전술한 방법으로 CEK를 암호화하여 저장하고 사용한다면, 사용자는 해당 CEK의 인증정보를 알고 있으므로 원하는 횟수만큼 해당 디지털 콘텐츠를 사용하는 것이 가능해진다.
따라서, 외부 메모리(130)에 암호화되어 저장된 CEK나 데이터에 대한 사용 횟수를 제한하기 위한 방법이 필요하다. 이를 위해, 본 발명의 실시 예에서는 상기 TCG에서 정의한 키 보호방법에 키의 사용횟수를 검사하는 기능을 추가하여 CEK의 사용횟수를 제한할 수 있는 방법을 제안한다. 한편, 본 발명의 실시 예에서는, TCG에서 정의한 키 보호방법에 일부 기능만을 추가하여 구현함으로써, TCG 기술을 적용한 컴퓨팅 플랫폼에서 본 발명의 실시 예를 적용하는 것이 용이하도록 구성하였다.
도 2는 본 발명의 실시 예에 따른 보호키 사용 제한 장치를 도시한 구조도이다. 한편, 본 발명의 실시 예에서는 보호키로 CEK를 예로 들어 설명하나, 본 발명은 이에 한정되는 것이 아니며 다른 보호키에도 적용이 가능하다.
도 2를 보면, 본 발명의 실시 예에 따른 보호키 사용 제한 장치는 TPM(210), 키 관리부(220), 외부 메모리(230) 및 카운터 테이블(counter table)(240)을 포함한다.
한편, 본 발명의 실시 예에 따른 TPM(210), 키 관리부(220) 및 외부 메모리(230)는 전술한 도 1의 TPM(210), 키 관리부(220) 및 외부 메모리(230)와 동일한 기능을 수행하며, 아래에서는 도 1의 각 구성요소와 동일한 기능에 대한 설명은 생략하고 본 발명의 실시 예에 따른 보호키 사용 제한 기능에 대해서만 설명한다.
TPM(210)은 암호화된 데이터의 사용요청이 발생하면, 키 관리부(220)로부터 암호화된 데이터에 해당하는 키 블랍(231)을 수신하여 복호화한 뒤 CEK를 획득한다. 그리고, 이를 키 슬롯(213)에 저장한다. 또한, 해시연산을 통해 해당 CEK의 사용횟수 제한에 사용되는 카운터의 무결성 검증을 수행한다. 즉, TPM(210)은 카운터가 갱신되기 이전에 해당 카운터가 포함된 카운터 테이블(240)에 대한 카운터 테이블 해시값을 생성하고, 생성된 카운터 테이블 해시값을 토대로 카운터의 무결성 검증을 수행한다. 이를 위해, TPM(210)은, 카운터를 갱신할 때마다 갱신된 카운터를 반영한 카운터 테이블(240)에 대해 생성한 카운터 테이블 해시값(212)을 비휘발성 메모리에 저장하고 다음 번의 카운터에 대한 무결성 검증에 사용한다. 여기서, 카운터 테이블 해시값(212)은 TPM(210)이 카운터 테이블(240)에 대한 해시값으로, TPM(210)의 초기화 단계에서는 카운터 테이블(240)에 어떠한 값도 기록되지 않은 상태에 대응하여 카운터 테이블 해시값(212)이 생성된다.
또한, TPM(210)은 카운터의 무결성이 검증되면 카운터 및 기 저장된 카운터 테이블 해시값(212)을 갱신하고, 갱신된 카운터와 해당 CEK의 사용가능횟수를 비교한다. 그리고, 갱신된 카운터가 사용가능횟수를 초과하지 않는 경우에만 키 슬롯(213)에 저장된 CEK의 사용을 허가한다. 여기서, CEK의 사용가능횟수는 키 관리부(220)로부터 입력된 키 블랍(210)으로부터 획득한다.
한편, TPM(210)은 카운터의 무결성 검증 결과 및 사용가능횟수의 초과여부를 키 관리부(220)로 전달하여, 키 관리부(220)가 수신한 정보를 토대로 카운터를 갱신하거나 삭제하도록 한다.
키 관리부(220)는 외부 메모리(210)에 저장된 암호화된 데이터의 사용요청이 발생하면, 해당 암호화된 데이터를 복호화하기 위해 필요한 CEK가 포함된 키 블랍(231)을 TPM(210)으로 전달한다.
여기서, 키 블랍(231)은 암호화된 CEK 외에 해당 CEK의 사용가능횟수 및 카운터 번호를 더 포함할 수 있다. 해당 CEK의 사용가능횟수 및 카운터 번호는 암호화되어 키 블랍(231)의 암호화된 부분에 포함되거나, 암호화되지 않은 평문 상태로 키 블랍(231)에 포함될 수 있다. 한편, 사용가능횟수 및 카운터 번호가 암호화되지 않은 경우에는, 사용가능횟수 및 카운터 번호를 이용하여 생성한 해시값이 키 블랍(231)의 암호화된 부분에 포함되어 TPM(210)에서 해당 사용가능횟수 및 카운터 번호의 변조 여부를 판단하는데 사용된다. 즉, TPM(210)은 사용가능횟수 및 카운터 번호가 암호화된 경우에는, 루트키를 이용하여 사용가능횟수 및 카운터 번호를 암호화하여 사용하고, 사용가능횟수 및 카운터 번호가 암호화되지 않은 경우에는 암호화된 해시값을 복호화하여 해당 사용가능횟수 및 카운터 번호를 이용하여 생성한 해시값과 비교함으로써 해당 사용가능횟수 및 카운터 번호를 검증하고 사용한다.
한편, 키 관리부(220)는 CEK의 사용횟수를 제한하기 위해 사용되는 카운터의무결성 검증을 위해 무결성 검증을 위한 해시연산에 필요한 데이터들을 TPM(210)으로 입력한다. 여기서, 키 관리부(220)는 해당 CEK의 사용가능횟수 및 카운터 번호가 암호화된 상태로 키 블랍(231)에 포함된 경우에는, TPM(210)이 카운터 번호를 복호화하면 이를 전달받고, 이를 토대로 무결성 검증을 위한 해시연산에 필요한 데이터들을 TPM(210)으로 전달한다. 반면에, 사용가능횟수 및 카운터 번호가 암호화되지 않은 상태로 키 블랍(231)에 포함된 경우에는, 키 블랍(231)을 TPM(210)으로 전달 시 무결성 검증을 위한 해시연산에 필요한 데이터들을 함께 TPM(210)으로 전달한다. 그리고, TPM(210)에서 해당 카운터에 대한 무결성 검증 결과 및 해당 카운터가 사용가능횟수를 초과하는지 여부에 대한 정보가 수신되면, 이를 토대로 카운터 테이블(240)에서 해당 카운터를 갱신한다.
한편, 키 관리부(220)는 카운터의 무결성 검증에 사용되는 데이터의 생성을 위해 전체 카운터 테이블(240)에 대한 카운터 테이블 해시값을 생성하여 카운터 테이블(240)과 함께 저장하고 관리한다.
외부 메모리(230)는 암호화된 데이터(232) 및 암호화된 데이터에 해당하는 키 블랍(231)을 저장한다. 여기서, 키 블랍(231)은 암호화된 부분과 암호화되지 않은 부분으로 구성되며, 암호화된 부분에는 암호화된 데이터를 복호화하기 위해 필요한 CEK를 포함하며, 해당 CEK의 사용횟수를 제한하기 위한 사용가능횟수 및 카운터 번호를 더 포함한다.
카운터 테이블(240)은 적어도 하나의 보호키에 해당하는 카운터들을 카운터 번호 별로 저장한다. 카운터 테이블(240)은 시스템 초기 설정 시에는 어떠한 데이터도 입력되지 않은 상태로 생성되며, 카운터 테이블(240)에 카운터가 추가되면 해당 카운터의 초기값은 0이 된다.
도 3은 본 발명의 실시 예에 따른 보호키 사용 제한 방법을 도시한 흐름도이다.
도 3을 보면, 암호화된 데이터(232)에 대한 사용요청이 발생하면, TPM(210)은 키 관리부(220)로부터 외부 메모리(230)에 저장된 키 블랍(231)을 입력 받는다(S101). 이에 따라, TPM(210)은 키 블랍(231)의 암호화된 부분을 복호화하고 인증정보의 검증과 암호화되지 않은 부분의 무결성 검증을 성공적으로 수행한 후, CEK 및 해당 CEK의 사용가능횟수 및 카운터 번호를 획득한다(S102). 그리고, 복호화된 CEK는 키 슬롯(213)에 저장한다. 여기서, 사용가능횟수 및 카운터 번호는 암호화된 상태 또는 암호화되지 않은 평문 상태로 키 블랍(231)에 포함될 수 있다.
이후, TPM(210)은 해당 CEK의 사용과 관련하여 카운터를 갱신하기 이전에, 키 관리부(220)로부터 해당 CEK와 관련하여 입력되는 카운터 값, 전체 카운터 테이블(240), 카운터 테이블 해시값 중 적어도 하나를 이용한 해시연산을 통해 해당 CEK의 카운터에 대한 무결성 검증과정을 수행한다(S103). 여기서, TPM(210)은 사용가능횟수 및 카운터 번호가 암호화된 상태로 키 블랍(231)에 포함된 경우에는 복호화된 카운터 번호를 키 관리부(220)로 전달하여 해시연산에 사용되는 데이터를 입력 받는다. 반면에, 사용가능횟수 및 카운터 번호가 암호화되지 않은 상태로 키 블 랍(231)에 포함된 경우에는 키 블랍(231) 수신 시 해시연산에 사용되는 데이터를 수신할 수 있다.
한편, TPM(210)은 카운터 테이블(240)에 포함된 카운터의 개수에 따라 카운터의 무결성 검증방법을 다르게 선택할 수 있다.
우선, 카운터 테이블(240)에 포함된 카운터 수가 일정 수보다 적은 경우에는 키 관리부(220)로부터 전체 카운터 테이블(240)을 입력 받는다. 그리고, 키 블랍(231)으로부터 획득한 카운터 번호와 입력 받은 전체 카운터 테이블(240)을 토대로 카운터 테이블 해시값을 생성한다. 그리고, 생성된 카운터 테이블 해시값을 기존의 카운터 테이블 해시값(212)과 비교하여 해당 카운터의 변조 여부를 확인하는 무결성 검증을 수행한다. 여기서, TPM(210)은 두 카운터 테이블 해시값이 서로 일치하면 해당 카운터가 변조되지 않았다고 판단한다.
한편, 카운터 테이블(240)에 저장된 카운터의 수가 일정 수 이상인 경우에는, 키 관리부(220)를 통해 전체 카운터 테이블(240)을 TPM(210)으로 입력하고, 이를 이용하여 카운터 테이블 해시값을 생성하기 위해 소요되는 시간이 증가하고 이로 인해 성능저하가 발생할 수 있다. 따라서, 본 발명의 실시 예에서는 카운터 테이블에 저장된 카운터의 개수가 일정 수 이상인 경우에는, 증분 해시(Incremental Hash) 방법을 사용하여 카운터 테이블 해시값을 생성한다. 여기서, 증분 해시는 어떤 데이터 X에 대한 해시값(H(X))을 이미 가지고 있는 상태에서 X의 일부가 변경되어 X′가 된 경우에 X′에 대한 해시값을 생성하기 위해 X′전체를 이용하여 해시하지 않고 X에서 변경된 부분만을 이전의 해시값(H(X)에 반영하여 H(X′)를 구하는 해시 방법을 의미한다. 한편, 이러한 증분 해시 방법은 널리 공지된 기술로서 당업자가 용이하게 실시할 수 있는 기술이므로 상세한 설명은 생략한다.
한편, 증분 해시 방법을 이용하여 해시값을 생성하는 방법은 다음의 수학식1과 같이 나타낼 수 있다.
Figure 112008086490469-pat00001
여기서, R은 랜덤함수(Random function)을 의미한다. 이러한 증분 해시 방법은 해시 연산에 소요되는 시간이 전체 데이터 크기에 비례하여 증가하지 않고, 수정된 부분의 크기에 비례해 증가하므로 해시 연산에 소요되는 시간을 줄일 수 있는 이점이 있다.
한편, 전술한 증분 해시 방법을 카운터 테이블(240)의 무결성 검증에 적용하면 다음과 같다.
우선, TPM(210)은 카운터의 무결성 검증을 위해 키 관리부(220)로부터 전체 카운터 테이블(240)이 아닌 해당 카운터의 카운터 값 및 카운터 테이블(240)에서 해당 카운터를 제외한 나머지 카운터를 이용하여 생성한 카운터 테이블 해시값을 입력 받는다. 여기서, 키 관리부(220)는 다음의 수학식 2와 같은 증분 해시 방법을 사용하여 TPM(210)으로 입력하는 카운터 테이블 해시값을 생성한다.
Figure 112008086490469-pat00002
여기서, 기존 카운터 테이블 해시값은 전체 카운터 테이블(240)에 대한 카운터 테이블 해시값으로서, 카운터 테이블(240)과 함께 저장된다.
키 관리부(220)로부터 카운터 테이블 해시값을 입력 받은 TPM(210)은 입력된 카운터 값과 카운터 테이블 해시값을 이용하여 다음의 수학식 3과 같이 카운터 테이블 해시값을 생성한다.
Figure 112008086490469-pat00003
그리고, 생성한 카운터 테이블 해시값을 기 저장된 카운터 테이블 해시값(212)과 비교하여, 해당 카운터가 변조되었는지 여부를 판단하는 무결성 검증을 수행한다. 예를 들어, 카운터 테이블(240)에 포함된 카운터 값을 임의로 사용가능횟수 이내로 변경하는 경우, 이를 입력으로 전달받은 TPM(210)은 입력값을 바탕으로 생성한 카운터 테이블 해시값과 기 저장된 카운터 테이블 해시값(212)이 일치하지 않게 되어 카운터 값이 변조되었음을 알 수 있다. 한편, 카운터 값을 임의로 변경한 후 해당 카운터를 제외한 나머지 카운터를 이용하여 생성한 카운터 테이블 해시값도 적절히 변경하여 TPM(210)으로 입력시키더라도, 다른 값으로부터 동일한 해시값을 생성하는 것이 확률적으로 불가능한 해시의 기본 특성에 따라 변조사실을 숨기는 것이 불가능하다.
한편, 본 발명의 실시 예에서는 카운터 테이블(240)에 포함된 카운터의 개수에 따라 두 가지의 무결성 검증방법을 혼용하여 사용하는 경우를 예로 들어 설명하나, 본 발명은 둘 중의 하나의 방법만으로 카운터의 무결성 검증을 수행하는 것 또 한 가능하다.
전술한 바와 같이 카운터에 대한 무결성 검증이 완료되고, 해당 카운터가 변조되지 않았다고 판단되는 경우, TPM(210)은 입력받은 해당 카운터의 카운터 값을 갱신한다(S104). 그리고, 갱신된 카운터 값이 키 블랍(231)로부터 획득한 사용가능횟수를 초과하는지 판단한다(S105).
갱신된 카운터 값이 사용가능횟수를 초과하는 경우, TPM(210)은 이를 키 관리부(220)로 전달하여 카운터 테이블(240)에서 해당 카운터를 삭제하도록 한다(S106). 그리고, 해당 카운터가 삭제된 카운터 테이블(240)에 대한 카운터 테이블 해시값을 생성하고, 기 저장된 카운터 테이블 해시값(212)을 생성된 카운터 테이블 해시값으로 갱신한다(S107).
반면에, 갱신된 카운터 값이 사용가능횟수를 초과하지 않은 경우, TPM(210)은 복호화된 CEK의 사용을 허가한다. 즉, 복호화된 CEK를 키 관리부(220)로 전달하거나, 복호화된 CEK를 이용하여 암호화된 데이터를 복호화한다. 그리고, 갱신된 카운터 값을 반영하여 카운터 테이블 해시값을 생성하고, 기 저장된 카운터 테이블 해시값(212)을 새로 생성한 카운터 테이블 해시값으로 갱신한다(S107).
또한, TPM(210)은 해당 카운터의 무결성 검증 결과를 키 관리부(220)로 전달함으로써, 키 관리부(220)에서 카운터 테이블(240)의 해당 카운터 값을 갱신하고, 필요에 따라서는 갱신된 카운터를 반영하여 카운터 테이블 해시값을 생성하여 카운터 테이블(240)과 함께 저장하도록 한다.
한편, 복호화한 CEK가 TPM(210) 외부로 전달되기를 원하지 않는 경우, 본 발 명의 실시 예에서는 복호화된 CEK를 키 슬롯(213)에 저장한 후, 키 관리부(220)를 통해 암호화된 데이터(232)를 TPM(210)으로 읽어온다. 그리고, 키 슬롯(213)에 저장된 복호화된 CEK를 이용하여 암호화된 데이터를 복호화하여 키 관리부(220)로 전달할 수도 있다. 그러나, 이 경우, 암호화된 데이터(232)의 용량이 큰 경우에는 TPM(210)으로 읽어오는데 많은 시간이 소요되고 TPM(210) 내에 해당 데이터를 저장하기 위한 메모리가 부족하게 되는 문제가 발생할 수 있다. 특히, TCG에서 정의한 TPM 규격에서 사용하는 비대칭키 암호 알고리즘은 데이터를 비대칭키로 암호화해야 하므로 대칭키 암호화 알고리즘을 사용하는 경우에 비해 복호화에 더욱 많은 시간이 소요되므로 TPM(210)으로 데이터를 읽어오는데 많은 시간을 소요하는 것이 더욱 큰 문제가 된다.
한편, 전술한 보호키 사용 제한방법은 이미 CEK에 해당하는 카운터가 카운터테이블에 존재하는 경우를 예로 든 것으로서, 카운터가 존재하지 않는 경우에는 TPM(210)은 키 관리부(220)로부터 새롭게 생성할 카운터의 번호, 카운터 테이블(240), 기존의 카운터 테이블(240)에 대한 카운터 테이블 해시값 중 적어도 하나를 입력 받는다. 그리고, 이를 토대로 새롭게 생성할 카운터를 반영한 카운터 테이블 해시값을 생성하고, 생성된 카운터 테이블 해시값으로 기 저장된 카운터 테이블 해시값(212)를 갱신한다.
또한, 본 발명의 실시 예에서는, 카운터 테이블(240)에 포함된 카운터의 삭제 요청이 발생하면, TPM(210)으로 삭제하고자 하는 카운터 번호와 해당 카운터를 제외한 나머지 카운터를 이용하여 생성한 카운터 테이블 해시값을 입력한다. 이에 따라, TPM(210)은 무결성 검증과정을 통해 해당 카운터에 대한 무결성 검증을 수행하고, 무결성 검증이 완료되면 기 저장된 카운터 테이블 해시값(212)을 입력된 카운터 테이블 해시값으로 갱신한다. 그리고, 무결성 검증 결과를 키 관리부(220)로 전달하여 키 관리부(220)로 하여금 카운터 테이블(240)에서 해당 카운터를 삭제하도록 한다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
도 1은 TCG에서 정의한 일반적인 키 보호방법을 수행하는 시스템을 도시한 개념도이다.
도 2는 본 발명의 실시 예에 따른 보호키 사용 제한 장치를 도시한 구조도이다.
도 3은 본 발명의 실시 예에 따른 보호키 사용 제한 방법을 도시한 흐름도이다.

Claims (15)

  1. 삭제
  2. 보호키 사용을 제한하기 위한 장치에 있어서,
    보호키, 상기 보호키의 사용가능횟수 및 카운터 번호를 포함하는 키 블랍을 저장하는 외부 메모리;
    적어도 하나의 보호키에 해당하는 카운터를 저장하는 카운터 테이블; 및
    상기 키 블랍을 복호화하여 상기 보호키, 상기 사용가능횟수 및 상기 카운터 번호를 획득하고, 상기 카운터 테이블에 대해 생성한 제1 해시값을 이용하여 상기 보호키에 해당하는 카운터에 대한 무결성 검증과정을 수행하며, 무결성이 검증된 상기 보호키에 해당하는 카운터의 카운터 값을 갱신하고, 상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하지 않는 경우에 상기 보호키의 사용을 허가하는 신뢰플랫폼모듈을 포함하고,
    상기 신뢰플랫폼모듈은,
    상기 키 블랍 및 상기 카운터 테이블을 상기 신뢰플랫폼모듈로 전달하고, 상기 신뢰플랫폼모듈로부터 수신되는 상기 보호키에 해당하는 카운터의 무결성 검증결과를 토대로 상기 카운터 테이블에서 상기 카운터 값을 갱신할지 여부를 결정하는 키 관리부
    를 더 포함하는 장치.
  3. 제 2항에 있어서,
    상기 신뢰플랫폼모듈은, 상기 제1 해시값과 상기 신뢰플랫폼모듈 내부에 기 저장된 제2 해시값을 비교하여 상기 무결성 검증과정을 수행하는 것을 특징으로 하는 장치.
  4. 제 3항에 있어서,
    상기 신뢰플랫폼모듈은,
    상기 키 관리부를 통해 입력되는 상기 카운터 값 및 상기 카운터 테이블을 이용하여 상기 제1 해시값을 생성하는 것을 특징으로 하는 장치.
  5. 제 3항에 있어서,
    상기 신뢰플랫폼모듈은,
    상기 키 관리부로부터 상기 카운터 테이블에서 상기 보호키에 해당하는 카운터를 제외한 나머지 카운터에 대해 증분 해시연산을 통해 생성한 제3 해시값과 상기 카운터 값을 수신하고, 상기 제3 해시값 및 상기 카운터 값을 이용한 증분 해시연산을 통해 상기 제1 해시값을 생성하는 것을 특징으로 하는 장치.
  6. 제 3항에 있어서,
    상기 제2 해시값은 이전의 무결성 검증과정에서 상기 카운터 테이블에 대해 생성한 값인 것을 특징으로 하는 장치.
  7. 제 6항에 있어서,
    상기 신뢰플랫폼모듈은, 상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하지 않는 경우, 상기 갱신된 카운터 값을 반영하여 상기 제2 해시값을 갱신하는 것을 특징으로 하는 장치.
  8. 삭제
  9. 신뢰플랫폼모듈이 외부에 저장된 카운터 테이블을 이용하여 보호키의 사용을 제한하는 방법에 있어서,
    외부 메모리에 저장된 키 블랍을 입력받는 단계;
    상기 키 블랍으로부터 보호키, 상기 보호키에 해당하는 카운터의 사용가능횟수 및 카운터 번호를 획득하는 단계;
    상기 카운터 테이블에 대해 생성한 제1 해시값을 상기 신뢰플랫폼모듈 내부에 기 저장된 제2 해시값과 비교하여 상기 보호키에 해당하는 카운터에 대한 무결성 검증과정을 수행하는 단계;
    무결성이 검증된 상기 보호키에 해당하는 카운터의 카운터 값을 갱신하는 단계; 및
    상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하지 않는 경우, 상기 보호키에 대한 사용을 허가하는 단계를 포함하고,
    상기 수행하는 단계는,
    상기 카운터 값과 상기 카운터 테이블을 입력받는 단계; 및
    상기 카운터 번호, 상기 카운터 값 및 상기 카운터 테이블을 이용하여 상기 제1 해시값을 생성하는 단계
    를 포함하는 방법.
  10. 신뢰플랫폼모듈이 외부에 저장된 카운터 테이블을 이용하여 보호키의 사용을 제한하는 방법에 있어서,
    외부 메모리에 저장된 키 블랍을 입력받는 단계;
    상기 키 블랍으로부터 보호키, 상기 보호키에 해당하는 카운터의 사용가능횟수 및 카운터 번호를 획득하는 단계;
    상기 카운터 테이블에 대해 생성한 제1 해시값을 상기 신뢰플랫폼모듈 내부에 기 저장된 제2 해시값과 비교하여 상기 보호키에 해당하는 카운터에 대한 무결성 검증과정을 수행하는 단계;
    무결성이 검증된 상기 보호키에 해당하는 카운터의 카운터 값을 갱신하는 단계; 및
    상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하지 않는 경우, 상기 보호키에 대한 사용을 허가하는 단계를 포함하고,
    상기 수행하는 단계는,
    상기 카운터 테이블에서 상기 보호키에 해당하는 카운터를 제외 생성한 나머지 카운터를 이용한 증분 해시연산을 통해 생성한 제3 해시값, 상기 카운터 값을 입력받는 단계; 및
    상기 카운터 번호, 상기 카운터 값 및 상기 제3 해시값을 이용한 증분 해시연산을 통해 상기 제1 해시값을 생성하는 단계
    를 포함하는 방법.
  11. 신뢰플랫폼모듈이 외부에 저장된 카운터 테이블을 이용하여 보호키의 사용을 제한하는 방법에 있어서,
    외부 메모리에 저장된 키 블랍을 입력받는 단계;
    상기 키 블랍으로부터 보호키, 상기 보호키에 해당하는 카운터의 사용가능횟수 및 카운터 번호를 획득하는 단계;
    상기 카운터 테이블에 대해 생성한 제1 해시값을 상기 신뢰플랫폼모듈 내부에 기 저장된 제2 해시값과 비교하여 상기 보호키에 해당하는 카운터에 대한 무결성 검증과정을 수행하는 단계;
    무결성이 검증된 상기 보호키에 해당하는 카운터의 카운터 값을 갱신하는 단계; 및
    상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하지 않는 경우, 상기 보호키에 대한 사용을 허가하는 단계를 포함하고,
    상기 수행하는 단계는,
    상기 제1 해시값과 상기 제2 해시값이 일치하면 상기 보호키에 해당하는 카운터가 변조되지 않았다고 판단하는 단계
    를 포함하는 방법.
  12. 제 9항에 있어서,
    상기 제2 해시값은,
    이전의 무결성 검증과정에서 상기 카운터 테이블에 대해 생성한 해시값인 것을 특징으로 하는 방법.
  13. 제 12항에 있어서,
    상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하지 않는 경우, 상기 갱신된 카운터 값을 반영하여 상기 제2 해시값을 갱신하는 단계
    를 더 포함하는 방법.
  14. 제 12항에 있어서,
    상기 갱신된 카운터 값이 상기 사용가능횟수를 초과하는 경우, 상기 카운터 테이블에서 상기 보호키에 해당하는 카운터를 삭제한 상태에서 생성한 제3 해시값으로 상기 제2 해시값을 갱신하는 단계
    를 더 포함하는 방법.
  15. 제 12항에 있어서,
    상기 허가하는 단계는,
    상기 보호키를 상기 신뢰플랫폼모듈 외부로 출력하는 단계인 방법.
KR1020080128053A 2008-12-16 2008-12-16 보호키 사용 제한 방법 및 장치 KR101054075B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080128053A KR101054075B1 (ko) 2008-12-16 2008-12-16 보호키 사용 제한 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080128053A KR101054075B1 (ko) 2008-12-16 2008-12-16 보호키 사용 제한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20100069384A KR20100069384A (ko) 2010-06-24
KR101054075B1 true KR101054075B1 (ko) 2011-08-03

Family

ID=42367492

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080128053A KR101054075B1 (ko) 2008-12-16 2008-12-16 보호키 사용 제한 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101054075B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102111493B1 (ko) * 2018-11-08 2020-05-15 김민식 Tpm을 활용한 신뢰 플랫폼 개발 교육을 위한 키트

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040029053A (ko) * 2001-08-28 2004-04-03 시게이트 테크놀로지 엘엘씨 데이터 저장 장치 보안 방법 및 장치
KR20080100673A (ko) * 2007-05-14 2008-11-19 삼성전자주식회사 암호화 기반의 프로세서 보안 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040029053A (ko) * 2001-08-28 2004-04-03 시게이트 테크놀로지 엘엘씨 데이터 저장 장치 보안 방법 및 장치
KR20080100673A (ko) * 2007-05-14 2008-11-19 삼성전자주식회사 암호화 기반의 프로세서 보안 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
정보보호학회지 제16권제3호, 모바일 플랫폼용 공통보안핵심 모듈 기술 (2006.06.)*

Also Published As

Publication number Publication date
KR20100069384A (ko) 2010-06-24

Similar Documents

Publication Publication Date Title
US10395012B2 (en) Media client device authentication using hardware root of trust
EP2965254B1 (en) Systems and methods for maintaining integrity and secrecy in untrusted computing platforms
US8886947B2 (en) Optimized integrity verification procedures
US7543140B2 (en) Revocation of a certificate and exclusion of other principals in a digital rights management (DRM) system based on a revocation list from a delegated revocation authority
US8171306B2 (en) Universal secure token for obfuscation and tamper resistance
US8332652B2 (en) Computing device that securely runs authorized software
JP5314016B2 (ja) 情報処理装置、暗号鍵の管理方法、コンピュータプログラム及び集積回路
KR101231561B1 (ko) 서비스 커넬 설계에 의한 보안 정책 차별화
CA2457261C (en) Tying a digital license to a user and tying the user to multiple computing devices in a digital rights management (drm) system
US7051211B1 (en) Secure software distribution and installation
US6647494B1 (en) System and method for checking authorization of remote configuration operations
JP5097130B2 (ja) 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
US20050060568A1 (en) Controlling access to data
KR100702499B1 (ko) 메시지 무결성 보증 시스템, 방법 및 기록 매체
US7571329B2 (en) Method of storing unique constant values
US20070039046A1 (en) Proof of execution using random function
KR20040094724A (ko) 멀티-토큰 실 및 실 해제
US20060253714A1 (en) Information processor, tamper-proof method, and tamper-proof program
US20080000971A1 (en) Method for customizing customer identifier
KR101054075B1 (ko) 보호키 사용 제한 방법 및 장치
JP4593207B2 (ja) ソフトウェア無線システム
CN113806785A (zh) 一种用于对电子文档进行安全保护的方法及其系统
US11748459B2 (en) Reducing software release date tampering by incorporating software release date information into a key exchange protocol
Arthur et al. Keys
CN117009926A (zh) 软件授权方法、装置和介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee