KR20130093557A - 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법 - Google Patents

적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법 Download PDF

Info

Publication number
KR20130093557A
KR20130093557A KR1020130015544A KR20130015544A KR20130093557A KR 20130093557 A KR20130093557 A KR 20130093557A KR 1020130015544 A KR1020130015544 A KR 1020130015544A KR 20130015544 A KR20130015544 A KR 20130015544A KR 20130093557 A KR20130093557 A KR 20130093557A
Authority
KR
South Korea
Prior art keywords
encryption
command
instruction
key
encrypted
Prior art date
Application number
KR1020130015544A
Other languages
English (en)
Inventor
모아메드 까루미
알랭 뒤랑
다비드 아레씨오
마르끄 좌
Original Assignee
톰슨 라이센싱
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 톰슨 라이센싱 filed Critical 톰슨 라이센싱
Publication of KR20130093557A publication Critical patent/KR20130093557A/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/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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Abstract

적어도 하나의 암호화 명령어(J)를 포함하는 소프트웨어 애플리케이션의 제1 장치(110) 및 제2 장치(120)에 의한 협력 실행. 제1 장치(110)는 제1 암호화 명령어(J)를 획득하고(S10); 세션 키 k2를 생성하고(S11; S20); 제1 암호화 명령어(J)를 암호화하고(S11; S21); 대칭 알고리즘 및 제1 키 k1를 사용하여 세션 키 k2를 암호화하고(S11; S22); 그리고 암호화된 제1 암호화 명령어 및 암호화된 세션 키 k2를 제2 장치(220)에 전송한다(S12; S23). 제2 장치(220)는 제1 키 k1를 사용하여 암호화된 세션 키 k2를 암호 해독하고(S13; S24); 암호화된 제1 암호화 명령어를 암호 해독하여 제1 암호화 명령어(J)를 획득하고(S13; S25); 제3 키 kpre를 사용하여 제1 암호화 명령어를 암호 해독하여 명령어(I)를 획득하고(S14; S26); 대칭 암호화 알고리즘 및 세션 키 k2를 사용하여 명령어(I)를 암호화하여 제2 암호화 명령어(M)를 획득하고(S15; S27); 그리고 제2 암호화 명령어(M)를 제1 장치(210)에 전송한다(S15; S28). 제1 장치(210)는 세션 키 k2를 사용하여 제2 암호화 명령어(M)를 암호 해독하여 명령어(I)를 획득하고(S17; S29); 명령어(I)를 실행한다(S18; S30).

Description

적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법{SYSTEM, DEVICES AND METHODS FOR COLLABORATIVE EXECUTION OF A SOFTWARE APPLICATION COMPRISING AT LEAST ONE ENCRYPTED INSTRUCTION}
본 발명은 일반적으로 암호화에 관한 것으로서, 구체적으로는 협력 처리를 위한 보안 프로토콜에 관한 것이다.
이 섹션은 아래에서 설명되고/거나 주장되는 본 발명의 다양한 측면에 관련된 것일 수 있는 다양한 기술의 양태들을 독자에게 소개하기 위한 것이다. 이러한 설명은 본 발명의 다양한 양태들을 더 잘 이해하게 하기 위한 배경 정보를 독자에게 제공하는데 도움이 될 것이라고 확신한다. 따라서, 종래 기술의 인정이 아닌, 이러한 관점에서 이 내용을 읽어야 한다는 점이 이해되어야 한다.
공지의 보안 문제는 소프트웨어 애플리케이션을 저장하는 오리지널 서포트(original support)를 소지하지 않고는 소프트웨어 애플리케이션이 적절히 실행될 수 없도록 보장하는 방법에 관한 것이다.
통상적인 종래 기술의 보호는 소프트웨어 애플리케이션을 그 배포에 사용되는 서포트에 바인딩(binding)하는 것에 있다. 바인딩 메커니즘은 일반적으로 서포트에 특정된 여러 정보(서포트 ID, 서포트 키 등)에 기반한다. 그러나, 이 방법은 애플리케이션이 신뢰할 수 없는 플랫폼에서 동작하려는 경우에 특히 불충분하다.
그러므로, 제1 장치가 일부 공유 데이터의 협력 처리 동안 제2 장치의 존재를 체크하게 하는 프로토콜, 즉 예를 들어 애플리케이션을 실행하는 컴퓨터가 애플리케이션의 적절한 실행에 필요한 일종의 동글(dongle)이 있는 것을 보장하는 프로토콜에 대한 필요성이 있다는 점이 이해될 것이다.
WO 2009/095493호는 소형 장치의 존재를 체크하기 위한 다음의 프로토콜을 설명한다.
1. 소프트웨어 제조사는 소프트웨어 제조사에게만 공지된 키 및 알고리즘을 사용하는 소프트웨어 애플리케이션의 적어도 일부 명령어를 사전 암호화하는데, 즉 J = Epre{kpre}(I)이다. 그 후, 암호화된 소프트웨어 애플리케이션은 배포 서포트(distribution support)에 복사된다.
2. 대응하는 암호 해독 모듈 Epre -1 및 키 kpre는 배포 서포트에 솔더링된 회로에는 알려지지만, 소프트웨어 애플리케이션에는 알려지지 않는다. 이로 인해, 명령어 J = Epre{kpre}(I)는 호스트에서 실행되는 애플리케이션에 의해 암호 해독될 수 있는데, 이는 그대로 실행되면 부정확하고 잘못된 연산을 초래한다. 예를 들어, 이는 복사의 경우일 것이다.
3. 애플리케이션은 데이터를 서포트에 전송하고, 보호된 명령어 J를 실행할 필요가 있을 때마다 이 회로를 사용한다.
이 프로토콜은 흥미롭지만 여전히 사전 공격(dictionary attack)에 취약하다. 이는 공격자가 호스트와 배포 서포트 사이의 통신 버스에 대해 염탐할 수 있으면 특히 그러하다.
가능한 대안은 표준 공개 키 암호 방식 메커니즘(standard public key cryptography mechanism)의 사용이다. 예를 들어, 게임 콘솔과 회로 사이에 보안 인증 채널이 설정될 수 있는데, 이로써 임의의 통신 염탐을 방지할 것이다. 그러나 이는 회로의 비용을 극단적으로 증가시킬 것인데, 공개 키 암호 방식 알고리즘을 안전하고 효율적으로 구현할 필요가 있기 때문이다. 특히, 공개 키 암호 방식의 이용은 하드웨어만을 사용한 구현을 방지한다.
설명된 2가지 방법 사이에 있는 솔루션이 WO 2005/064433호에서 발견되는데, 여기서는 컴퓨터가 동글의 공개 키(public key)를 사용하여 암호화된 정적 데이터를 검색하고, 공개 키를 사용하여 암호화된 난수 값을 생성하고, 암호화된 정적 데이터 및 난수 값을 동글에 전송한다. 동글은 자신의 개인 키(private key)를 사용하여 이들 아이템을 암호 해독하고, 난수 값을 암호화 키로 사용하여 정적 데이터를 암호화하고, 재암호화된 정적 데이터를, 정적 데이터를 암호 해독하여 사용하는 컴퓨터에 반환한다. 솔루션이 잘 작동하는 동안에는, 상당한 자원 소비가 있는데, 비대칭 암호화를 사용할 뿐 아니라 각각의 동글마다 특별히 정적 데이터를 암호화하기 때문이라는 점이 이해될 것이다.
이에 따라, 종래 기술의 단점을 극복할 수 있는 솔루션에 대한 필요성이 있을 수 있다는 점이 이해될 것이다. 본 발명은 이러한 솔루션을 제공한다.
제1 양태에서, 본 발명은 비암호화 명령어의 암호화인 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행에 참여하는 제1 방법에 관한 것이다. 제1 장치는 제1 암호화 명령어를 획득하고; 세션 키를 생성하고; 대칭 암호화 알고리즘 및 제1 키를 사용하여 세션 키를 암호화하고; 제1 암호화 명령어 및 암호화된 세션 키를 제2 장치로 전송하고; 세션 키를 사용하여 비암호화 명령어의 암호화인 제2 암호화 명령어를 제2 장치로부터 수신하고; 대칭 암호화 알고리즘 및 세션 키를 사용하여 제2 암호화 명령어를 암호 해독하여 비암호화 명령어를 획득하고; 비암호화 명령어를 실행한다.
제1 실시예에서, 제1 장치는 제1 암호화 명령어를 제2 장치로 전송하기 전에 슈퍼 암호화한다.
제2 양태에서, 본 발명은 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행에 참여하는 제2 방법에 관한 것이다. 제2 장치는 제1 암호화 명령어 및 암호화된 세션 키를 제1 장치로부터 수신하고 - 세션 키는 대칭 암호화 알고리즘 및 제1 키를 사용하여 암호화됨 -; 제1 키를 사용하여 암호화된 세션 키를 암호 해독하고; 대칭 암호화 알고리즘 및 제3 키를 사용하여 제1 암호화 명령어를 암호 해독하여 명령어를 획득하고; 대칭 암호화 알고리즘 및 세션 키를 사용하여 명령어를 암호화하여 제2 암호화 명령어를 획득하고; 제2 암호화 명령어를 제1 장치로 전송한다.
제1 실시예에서, 제1 암호화 명령어는 슈퍼 암호화되어 수신되고, 제2 장치는 암호화된 제1 암호화 명령어의 슈퍼 암호화를 더 암호 해독한다.
제3 양태에서, 본 발명은 비암호화 명령어의 암호화인 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행에 참여하도록 구성된 제1 장치에 관한 것이다. 제1 장치는 제1 암호화 명령어를 획득하고; 세션 키를 생성하고; 대칭 암호화 알고리즘 및 제1 키를 사용하여 세션 키를 암호화하고; 제1 암호화 명령어 및 암호화된 세션 키를 제2 장치로 전송하고; 세션 키를 사용하여 비암호화 명령어의 암호화인 제2 암호화 명령어를 제2 장치로부터 수신하고; 대칭 암호화 알고리즘 및 세션 키를 사용하여 제2 암호화 명령어를 암호 해독하여 명령어를 획득하고; 명령어를 실행하도록 구성된 프로세서를 포함한다.
제1 실시예에서, 프로세서는 제1 암호화 명령어를 제2 장치로 전송하기 전에 슈퍼 암호화하도록 더 구성된다.
제4 양태에서, 본 발명은 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행에 참여하도록 구성된 제2 장치에 관한 것이다. 제2 장치는 제1 암호화 명령어 및 암호화된 세션 키를 제1 장치로부터 수신하고 - 세션 키는 대칭 암호화 알고리즘 및 제1 키를 사용하여 암호화됨 -; 제1 키를 사용하여 암호화된 세션 키를 암호 해독하고; 대칭 암호화 알고리즘 및 제3 키를 사용하여 제1 암호화 명령어를 암호 해독하여 명령어를 획득하고; 대칭 암호화 알고리즘 및 세션 키를 사용하여 명령어를 암호화하여 제2 암호화 명령어를 획득하고; 제2 암호화 명령어를 제1 장치로 전송한다.
제1 실시예에서, 프로세서는 슈퍼 암호화된 제1 암호화 명령어를 수신하고, 암호화된 제1 암호화 명령어의 슈퍼 암호화를 암호 해독하여 제1 암호화 명령어를 획득하도록 구성된다.
본 발명의 바람직한 특징들은 첨부된 도면들을 참조하여, 비제한적인 예시에 의해 설명될 것이다.
도 1은 본 발명에 따른 소프트웨어 애플리케이션을 실행하기 위한 일반적인 방법을 예시한다.
도 2는 본 발명의 바람직한 실시예에 따라 소프트웨어 애플리케이션을 실행하는 방법을 예시한다.
도 3은 본 발명의 바람직한 실시예에 따라 소프트웨어 애플리케이션의 협력 실행을 위한 시스템을 예시한다.
도 4는 본 발명의 바람직한 실시예에 따른 프로세서의 블록도를 예시한다.
도 5는 본 발명의 바람직한 실시예에 따른 블록 암호 회로(block cipher circuit)의 블록도를 예시한다.
본 발명의 주요한 발명적 아이디어는 사전 암호화 메커니즘에 적합한 실시간 보호 메커니즘(live protection mechanism)을 사용하는 것이다.
다시 말해, 데이터 전송 중에 버스를 보호하기 위한 보호 메커니즘이 사용된다. 바람직하게, 호스트에서 실행되는 데이터 버스 보호 메커니즘은 배포 서포트에 바람직하게 결합된 회로가 있는 경우에만 (호스트에 의해 또한 부분적으로 실행되는) 비보호 연산이 작동하는 방식으로 설계된다. 이를 위해, 보호 메커니즘의 일부는 회로에 의해 구현된 하드웨어 모듈과 호스트 사이에 공유되는데, 즉 이 회로는 소프트웨어 애플리케이션에 알려지지 않은 암호 해독 방법을 포함한다. 제안된 보호는 하드웨어/소프트웨어 구현 및 성능 측면에서 실제로 효율적이다.
호스트 CPU에 의해 실행되도록 의도된 소프트웨어 애플리케이션은 제1 버스 암호화 모듈 E1 및 (바람직하게는 대칭인) 키 k1 및 제2 버스 암호 해독 모듈 D2를 포함한다. 소프트웨어 애플리케이션은 또한 실행될 수 있기 전에 암호 해독될 필요가 있는 적어도 하나의 암호화된(심지어 사전 암호화된) 명령어 J를 포함한다. 소프트웨어 애플리케이션을 저장하는 배포 서포트는 제1 버스 암호 해독 모듈 D1 및 제1 버스 암호화 모듈의 키에 대응하는 키 k1 (즉, 대칭 암호화의 경우 동일한 키이고 비대칭 암호화의 경우 키 쌍 중 '다른' 키) 및 제2 버스 암호화 모듈 E2가 있는 회로를 포함한다. 회로는 제3 암호 해독 모듈 Dpre 및 고정된 제3 키 kpre를 더 포함하는데, 이들은 사전 암호화를 암호 해독할 수 있게 한다. 제3 키 kpre에 대응하는 암호화 키를 사용하여 소프트웨어 제공자에 의한 소프트웨어 애플리케이션의 배포 전에 적어도 하나의 암호화 명령어 J가 암호화되었다는 점이 이해될 것이며, 회로는 암호 해독만을 할 수 있지만 소프트웨어 제공자는 암호화와 암호 해독 모두를 할 수 있는 것이 바람직하다.
바람직하게, 키 k1은 회로와 호스트에 의해 미리 결정되어 공유된다. 이것은 호스트 CPU에 의해 실행되는 소프트웨어 애플리케이션에서는 바람직하게는 불명확하게 된다(obfuscated). 또한, 호스트와 회로만이 암호화 알고리즘의 하나의 “방향” 즉, 암호화 또는 암호 해독을 수행할 수 있으며, 이 "방향”은 호스트와 회로에 대해 상이한 것이 바람직하다.
도 1은 본 발명에 따라 소프트웨어 애플리케이션을 실행하는 일반적인 방법을 예시한다. 소프트웨어 애플리케이션이 암호화된 명령어 J를 실행하기 위한 것인 경우, (소프트웨어 애플리케이션을 실행하는) 호스트 CPU(110)는,
a. 암호화 명령어 J를 판독하고(S10);
b. 제1 버스 암호화 모듈 E1 및 키 k1을 사용하여 난수 k2 및 암호화 명령어 J의 조합을 암호화하여 제1 전송 값 L, 즉 L = E1{k1}(J∥k2)을 획득하고(S11);
c. 제1 전송 값 L을 회로(120)에 전송한다(S12).
제1 전송 값 L을 수신하면, 회로(120)는,
d. 제1 버스 암호 해독 모듈 D1 및 키 k1을 사용하여 L을 암호 해독하여 난수 k2 및 암호화 명령어 J를 획득하고(S13);
e. 제3 암호 해독 모듈 Dpre 및 제3 키 kpre를 사용하여 J를 암호 해독하여 명령어 I를 획득하고(S14);
f. 제2 버스 암호화 모듈 E2 및 (키로서 작동하는) 난수 k2를 사용하여 명령어 I를 암호화하여 제2 전송 값 M, 즉 M= E2{k2}(I)을 획득하고(S15);
g. 제2 전송 값 M을 호스트(110)에 전송한다(S16).
마지막으로, 소프트웨어 애플리케이션은 k2를 알고 있고, 버스 암호 해독 모듈 D2를 더 포함하기 때문에, I = D2{k2}(M)를 계산함으로써 명령어 I를 완전히 획득할 수 있으며(S17), 그 후 호스트는 명령어 I를 실행할 수 있다(S18).
알 수 있는 바와 같이, 난수 k2는 암호화 형태 및 재암호화 형태로 명령어를 위한 세션 키로서 역할을 할 수 있다. (바람직하게는 암호화된 난수 k2와 함께) 완전히 전송되는 암호화 명령어 J의 슈퍼 암호화 없이 일반적인 방법이 수행될 수 있다는 점이 이해될 것이며, 이는 결국 단계 d에서의 암호 해독은 난수 k2만을 제공한다는 것을 의미한다.
암호화가 반복 시마다 생성되는 새로운 난수에 기반하기 때문에, 본 발명의 프로토콜이 보안성을 상당히 개선할 수 있는데, 이는 재전송 공격(replay attack)이 저지된다는 것을 의미한다.
호스트 애플리케이션 환경이 신뢰받을 수 없기 때문에, 소프트웨어 애플리케이션의 제1 암호화 연산은 화이트 박스(white-box)로 구현되어 코드로부터의 키 k1의 추출을 방지하는 것이 바람직하다. 또한, 바람직하게 k2는 상대방이 합리적인 비용으로 검색하는 것을 방지하는 방법으로 보호된다. 예시적인 조치는 CPU가 온칩 하드웨어 난수 생성기를 사용하여 새로운 키 값을 (파워-업 시에) 생성하여 탬퍼-프루프 키 레지스터(tamper-proof key register)에 저장하는 것이다.
예를 들어, 복수의 보호되는 명령어를 가짐으로써 소프트웨어 애플리케이션의 실행 중에 규칙적으로 프로토콜이 사용되는 방식으로 소프트웨어 애플리케이션이 보호되는 것이 바람직하다.
또한, 호스트가 외부 회로를 사용하고 있지 않을 때마다, 버스 관찰 분석을 복잡하게 만들기 위해 랜덤 더미 액세스(random dummy access)를 생성하는 것이 바람직하다.
제1 실시예
도 2는 본 발명에 따라 소프트웨어 애플리케이션을 실행하는 방법을 예시한다. 소프트웨어 애플리케이션은 예를 들어, 특정 주소 또는 소프트웨어 코드의 데이터 섹션에 위치하는 적어도 하나의 암호화된 소프트웨어 명령어를 포함한다. 소프트웨어 애플리케이션이 암호화 명령어 J를 실행하기 위한 것인 경우, 소프트웨어 애플리케이션을 실행하는 호스트 CPU(110)는,
a. 난수 k2를 생성하고(S20),
b. k2를 J와 XOR 연산하여 제1 전송 값 L1 = J
Figure pat00001
k2를 획득하고(S21);
c. 제1 버스 암호화 모듈 E1 및 키 k1을 사용하여 난수 k2를 암호화하여 제2 전송 값 L2 = E1{k1}(k2)를 획득하고(S22),
d. 제1 전송 값 및 제2 전송 값 커플(L1, L2)을 회로(120)에 전송한다(S23).
커플(L1, L2)의 수신 시에, 회로(120)는,
e. 제1 버스 암호 해독 모듈 D1 및 k1을 사용하여 L2를 암호 해독하여 난수 k2를 획득하고(S24);
f. J = L1
Figure pat00002
k2를 계산하고(S25);
g. 제3 암호 해독 모듈 Dpre 및 제3 키 kpre를 사용하여 J를 암호 해독하여 명령어 I를 획득하고(S26);
h. 명령어 I와 k2 사이의 XOR 연산을 계산하여 제3 전송 값 M, M = I
Figure pat00003
k2를 획득하고(S27);
i. 제3 전송 값 M을 호스트에 전송한다(S28).
마지막으로, 애플리케이션은 k2를 알고 있기 때문에, I = M
Figure pat00004
k2를 계산함으로써 명령어 I를 완전히 획득할 수 있으며(S29), 그 후 호스트는 명령어 I를 실행할 수 있다(S30).
변형예에서, 암호화 명령어 J는 호스트로부터 회로로 완전히 전송되는데, 이는 L1 = J이고, 단계 b와 단계 f가 수행되지 않는다는 것을 의미한다.
도 3은 본 발명의 바람직한 실시예에 따라 소프트웨어 애플리케이션의 협력 실행을 위한 시스템을 예시한다. 시스템(200)은 호스트(210) 및 보조 장치(220)를 포함한다.
호스트(210)는 실제적으로 임의의 타입의 처리 장치일 수 있으며, 바람직하게는 개인용 컴퓨터 또는 게임 콘솔일 수 있다. 바람직하게, 호스트(210)는 ROM(211), RAM(212), 적어도 하나의 프로세서(213), 및 보조 장치(220)와 상호 작용하는데 적합한 인터페이스(214)를 포함한다. ROM(211)은 네이티브 소프트웨어(native software)(2111)를 저장하지만, RAM(212)은 AES와 같은 블록 암호(2151) 및 다수의 암호화 명령어(2152)의 화이트 박스 구현을 포함하는 (유리하게는 보조 장치(220)로부터 다운로드되는) 소프트웨어 애플리케이션(215)을 저장한다. 프로세서(213)는 네이티브 소프트웨어(2111) 및 소프트웨어 애플리케이션(215)을 실행하는데 적합하다.
보조 장치(220), 유리하게 RFID는 호스트(210)와의 통신을 위한 인터페이스(221), 앞서 설명된 적어도 2개의 키 k1 및 kpre에 대한 액세스를 갖는 프로세서("블록 암호 회로(block cipher circuit”)(222), 및 비휘발성 메모리(223)를 포함한다. 보조 장치(220)가 2개의 상이한 블록 암호를 각각의 키마다 하나씩 구현할 수도 있다는 점에 주목해야 한다. 블록 암호 회로(222)는 인터페이스(221) 및 비휘발성 메모리(223)에 기능적으로 연결된다.
실행 중에, 소프트웨어 애플리케이션(215)은 비휘발성 메모리(223)에 데이터를 저장하거나 이로부터 데이터를 검색할 수 있다.
도 4에 예시된 바와 같이, 호스트 CPU(213)는 소프트웨어를 실행하기 위한 코어 CPU(2131)를 포함한다. 난수 k2를 생성하고, E1을 사용하여 k2 및 J를 암호화하고, 암호화를 인터페이스(214)에 전송하는 데이터 버스 보호 기능이 CPU 캐시(2132)에 탑재된다. CPU 캐시(2132)로부터 k2를 수신하고, 인터페이스(214)로부터 암호화 명령어 M = k2
Figure pat00005
I를 수신하고, I = k2
Figure pat00006
M을 계산함으로써 완전히 명령어 I를 획득하고, 그 후 코어 CPU(2131)가 명령어 I를 실행할 수 있는 데이터 버스 암호 해독 기능이 CPU 레지스터(2133)에 탑재된다.
소프트웨어 애플리케이션의 배포 전에, 적어도 하나의 명령어가 암호화된다. 이것은 바람직하게는, 동일한 키 하에서 동일한 입력에 대한 2개의 상이한 암호화를 갖기 위해 확률적 암호화(probabilistic encryption)를 사용함으로써 획득된다.
소프트웨어 애플리케이션은 임의의 적절한 배포 메커니즘(예를 들어, 인터넷, 광학 매체, 또는 보조 장치(220) 내부)을 사용하여 호스트(210)에 전달될 수 있다. 소프트웨어 애플리케이션이 예를 들어, 인터넷을 통해 배포되는 경우, 소프트웨어 애플리케이션이 적절히 실행되도록 보조 장치(220)가 사용자에게 어떻게든 전달되어야 한다.
바람직하게, 소프트웨어 애플리케이션은 비밀 키 k1을 갖는 AES 암호 해독 모듈의 화이트 박스 구현을 포함한다. 애플리케이션은 또한 암호화 명령어 세트를 포함한다.
제2 실시예
여기에서, 명령어들은 각각의 명령어 Ii를 암호화된 난수 값 E(Ri)와 XOR 연산, 즉 Ii
Figure pat00007
E(Ri)을 수행함으로써 암호화된다. 암호화 명령어는 대응하는 난수 값과 함께 저장되어 일 세트의 n개의 암호화 명령어들을 제공한다.
{(I0
Figure pat00008
E(R0); R0);...
(Ii
Figure pat00009
E(Ri); Ri);...
(In
Figure pat00010
E(Rn); Rn)}
명령어 I의 길이가 64비트이고, 난수 값 Ri, k2, 및 k3의 길이 또한 64비트라고 가정하면, 호스트 프로토콜은 다음과 같이 구현될 수 있다. 알고리즘 E1 및 Epre는 ECB 모드로 구현된 128비트 AES 암호화이다. 키 k1 하의 E1은 화이트 박스 구현되고, (암호 해독 알고리즘 D2뿐 아니라) 암호화 알고리즘 E2는 2개의 난수 값 k2 및 k3을 사용하여 XOR 연산으로서 구현된다.
Figure pat00011
대응하는 보조 장치 프로토콜은 다음과 같이 구현된다.
Figure pat00012
변수들이 상이한 명칭을 갖는 경우에도 프로토콜 부분들은 일치한다는 점이 이해될 것인데, 이는 프로토콜이 그대로 작동하는 경우, 예를 들어 k2 및 k’2가 동일하다는 점을 반영하는 것이지만, 이 경우가 그 경우인지를 보조 장치가 아는 것은 불가능하다. (이하, 도 5에서 동일 내용은 그대로 적용됨)
보조 장치의 경우, 비휘발성 메모리(223)는 호스트에 의해 용이하게 판독될 수 있지만, 블록 암호 회로(223)는 탬퍼-프루프된다고 가정한다. 도 5는 본 발명의 제2 실시예에 따른 블록 암호 회로의 블록도를 예시한다.
Menezes, van Oorschot, 및 Vanstone에 의해 설명되는 AES 구현예는 3,595개의 게이트가 있는 칩이다. 128 비트의 암호화는 약 1000개의 클럭 사이클을 요구한다. 2개의 암호화 단계가 프로토콜에 필요하기 때문에, 주어진 라운드는 데이터를 처리하는데 약 2000개의 클럭 사이클을 요구한다.
이에 따라, 본 발명은 보조 장치의 존재를 인증하고 체크하기 위한 경량 프로토콜을 제공한다는 점이 이해될 것이다.
성능 관점에서, 다음과 같은 이점이 있을 수 있다.
- 교환되는 메시지 및 그 내용의 개수가 최소이다. 64비트 명령어 및 AES 블록 암호화를 사용하면, 교환되는 바이트 수는 32바이트(L1 + L2 + M)이다.
- 프로토콜에 단 2개의 패스(pass)가 있다.
- 양측 즉, 호스트를 위한 1개의 블록 암호화 및 보조 장치를 위한 2개의 블록 암호화 모두에 대해 계산 복잡도가 낮다.
보안 관점에서,
- 프로토콜 키 및 화이트박스 구현이 소프트웨어 애플리케이션 사이에 상이할 수 있다는 점에서, 프로토콜이 갱신될 수 있다.
- 더 중요하게, 데이터 전송 중에 버스를 염탐하는 상대방에 의한 재전송 공격 및 사전 공격에 대항할 수 있기 때문에 프로토콜이 안전하다. 프로토콜은 버스 관찰 분석에 영향을 받지 않는다.
- 프로토콜은 좋은 가격/보안 트레이드-오프를 제공하며, 이로써 현재 애플리케이션을 보호하는데 사용될 수 있다.
앞서 설명된 암호화 명령어는 DVD 또는 CD-ROM과 같은 배포 서포트로부터 판독될 수 있지만, 인터넷 상의 서버와 같은 외부 소스로부터 수신된 신호로부터 판독될 수도 있다. 또한, 이 설명에서, 암호화 명령어는 예를 들어 (세션 키 k2를 보호하는데 사용되는 것과 같은) ‘보통의 암호화’ 및 (예를 들어, op 코드들의 순열(permutation)에 의한) 불명료화를 포함하는 넓은 의미의 표현의 암호화를 사용하여 암호화되며, 키는 불명료화를 실행 취소하는 방법에 관한 '명령어들'에 대응한다.
명세서, (적절한 경우) 청구항, 및 도면에 개시된 각각의 특징은 독립적이거나 임의의 적절한 조합으로 제공될 수 있다. 하드웨어로 구현되는 것으로서 설명된 특징들은 소프트웨어로 구현될 수 있으며, 그 반대일 수도 있다. 청구항에 표시된 참조 부호는 단지 예시적인 것이며, 청구항의 범위에 제한적인 영향을 미치지 않는다.

Claims (8)

  1. 비암호화 명령어(I)의 암호화인 적어도 하나의 암호화 명령어(J)를 포함하는 소프트웨어 애플리케이션의 협력 실행에 참여하는 제1 방법으로서, 제1 장치(210)에서,
    제1 암호화 명령어(J)를 획득하는 단계(S10);
    세션 키 k2를 생성하는 단계(S11; S20);
    대칭 암호화 알고리즘 및 제1 키 k1을 사용하여 상기 세션 키 k2를 암호화하는 단계(S11; S22);
    상기 제1 암호화 명령어 및 상기 암호화된 세션 키 k2를 제2 장치(220)에 전송하는 단계(S12; S23);
    상기 세션 키 k2를 사용한 상기 비암호화 명령어(I)의 암호화인 제2 암호화 명령어(M)를 상기 제2 장치(220)로부터 수신하는 단계(S16; S28);
    상기 대칭 암호화 알고리즘 및 상기 세션 키 k2를 사용하여 상기 제2 암호화 명령어(M)를 암호 해독함으로써 상기 비암호화 명령어(I)를 획득하는 단계(S17; S29); 및
    상기 비암호화 명령어(I)를 실행하는 단계(S18; S30)
    를 포함하는 제1 방법.
  2. 제1항에 있어서, 상기 제1 암호화 명령어(J)를 슈퍼 암호화하는 단계를 더 포함하며, 상기 제1 암호화 명령어는 슈퍼 암호화되어 상기 제2 장치(220)로 전송되는 제1 방법.
  3. 적어도 하나의 암호화 명령어(J)를 포함하는 소프트웨어 애플리케이션의 협력 실행에 참여하는 제2 방법으로서, 제2 장치(220)에서,
    제1 암호화 명령어 및 암호화된 세션 키 k2를 제1 장치(210)로부터 수신하는 단계(S12; S23) - 상기 세션 키 k2는 대칭 암호화 알고리즘 및 제1 키 k1을 사용하여 암호화됨 -;
    상기 제1 키 k1을 사용하여 상기 암호화된 세션 키 k2를 암호 해독하는 단계(S13; S24);
    상기 대칭 암호화 알고리즘 및 제3 키 kpre를 사용하여 상기 제1 암호화 명령어를 암호 해독함으로써 명령어(I)를 획득하는 단계(S14; S26);
    상기 대칭 암호화 알고리즘 및 상기 세션 키 k2를 사용하여 상기 명령어(I)를 암호화함으로써 제2 암호화 명령어(M)를 획득하는 단계(S15; S27); 및
    상기 제2 암호화 명령어(M)를 상기 제1 장치(210)로 전송하는 단계(S15; S28)
    를 포함하는 제2 방법.
  4. 제3항에 있어서, 상기 제1 암호화 명령어는 슈퍼 암호화되어 수신되며, 상기 제2 장치는 상기 암호화된 제1 암호화 명령어의 슈퍼 암호화를 더 암호 해독하는 제2 방법.
  5. 비암호화 명령어(I)의 암호화인 적어도 하나의 암호화 명령어(J)를 포함하는 소프트웨어 애플리케이션의 협력 실행에 참여하는 제1 장치(210)로서,
    프로세서(213)를 포함하며,
    상기 프로세서는,
    제1 암호화 명령어(J)를 획득하고;
    세션 키 k2를 생성하고;
    대칭 암호화 알고리즘 및 제1 키 k1을 사용하여 상기 세션 키 k2를 암호화하고;
    상기 제1 암호화 명령어 및 상기 암호화된 세션 키 k2를 제2 장치(120)에 전송하고;
    상기 세션 키 k2를 사용한 상기 비암호화 명령어(I)의 암호화인 제2 암호화 명령어(M)를 상기 제2 장치(120)로부터 수신하고;
    상기 대칭 암호화 알고리즘 및 상기 세션 키 k2를 사용하여 상기 제2 암호화 명령어(M)를 암호 해독함으로써 상기 명령어(I)를 획득하고;
    상기 명령어(I)를 실행하도록 구성되는 제1 장치.
  6. 제5항에 있어서, 상기 프로세서는 상기 제1 암호화 명령어(J)를 슈퍼 암호화하도록 또한 구성되며, 상기 제1 암호화 명령어(J)는 슈퍼 암호화되어 상기 제2 장치로 전송되는 제1 장치.
  7. 적어도 하나의 암호화 명령어(J)를 포함하는 소프트웨어 애플리케이션의 협력 실행에 참여하는 제2 장치(220)로서,
    프로세서(222)를 포함하며,
    상기 프로세서는,
    제1 암호화 명령어 및 암호화된 세션 키 k2를 제1 장치(110)로부터 수신하고 - 상기 세션 키 k2는 대칭 암호화 알고리즘 및 제1 키 k1을 사용하여 암호화됨 -;
    상기 제1 키 k1을 사용하여 상기 암호화된 세션 키 k2를 암호 해독하고;
    상기 대칭 암호화 알고리즘 및 제3 키 kpre를 사용하여 상기 제1 암호화 명령어를 암호 해독함으로써 명령어(I)를 획득하고;
    상기 대칭 암호화 알고리즘 및 상기 세션 키 k2를 사용하여 상기 명령어(I)를 암호화함으로써 제2 암호화 명령어(M)를 획득하고;
    상기 제2 암호화 명령어(M)를 상기 제1 장치(110)로 전송하도록 구성되는 제2 장치.
  8. 제7항에 있어서, 상기 프로세서는 슈퍼 암호화된 상기 제1 암호화 명령어를 수신하고, 상기 암호화된 제1 암호화 명령어의 슈퍼 암호화를 암호 해독하여 상기 제1 암호화 명령어(J)를 획득하도록 구성되는 제2 장치.
KR1020130015544A 2012-02-14 2013-02-13 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법 KR20130093557A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP12305163.3 2012-02-14
EP12305163.3A EP2629223A1 (en) 2012-02-14 2012-02-14 System, devices and methods for collaborative execution of a software application comprising at least one encrypted instruction

Publications (1)

Publication Number Publication Date
KR20130093557A true KR20130093557A (ko) 2013-08-22

Family

ID=47666062

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130015544A KR20130093557A (ko) 2012-02-14 2013-02-13 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법

Country Status (5)

Country Link
US (1) US20140140504A1 (ko)
EP (2) EP2629223A1 (ko)
JP (1) JP2013175179A (ko)
KR (1) KR20130093557A (ko)
CN (1) CN103258152A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016039556A1 (en) * 2014-09-12 2016-03-17 Samsung Sds Co.,Ltd. Apparatus and method for data encryption

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201418815D0 (en) * 2014-10-22 2014-12-03 Irdeto Bv Providing access to content
CN104320248A (zh) * 2014-11-14 2015-01-28 中国建设银行股份有限公司 一种系统间密钥同步的方法及系统
WO2016112338A1 (en) * 2015-01-08 2016-07-14 Intertrust Technologies Corporation Cryptographic systems and methods
WO2017096599A1 (zh) * 2015-12-10 2017-06-15 深圳市大疆创新科技有限公司 安全通信系统、方法及装置
US11362824B2 (en) * 2018-05-25 2022-06-14 Intertrust Technologies Corporation Content management systems and methods using proxy reencryption
CN111865565B (zh) * 2019-04-24 2022-05-06 云丁智能科技(北京)有限公司 秘钥管理方法、智能设备、服务器和移动终端
CN112434322A (zh) * 2020-12-03 2021-03-02 深圳市欢太科技有限公司 数据加密方法、装置、计算机设备及计算机可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2149944A (en) * 1983-11-14 1985-06-19 Softnet Inc Software distribution
WO2005064433A1 (en) * 2003-12-22 2005-07-14 Koninklijke Philips Electronics N.V. Software execution protection using an active entity
US7697691B2 (en) * 2004-07-14 2010-04-13 Intel Corporation Method of delivering Direct Proof private keys to devices using an on-line service
US7668313B2 (en) * 2005-10-31 2010-02-23 Texas Instruments Incorporated Recipient-encrypted session key cryptography
US8532293B2 (en) * 2007-09-27 2013-09-10 The Directv Group, Inc. Method and system for securely providing and storing content in a multiple dwelling unit system
EP2243100B1 (en) 2008-02-01 2016-01-27 Thomson Licensing Copy-protected software cartridge

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016039556A1 (en) * 2014-09-12 2016-03-17 Samsung Sds Co.,Ltd. Apparatus and method for data encryption

Also Published As

Publication number Publication date
JP2013175179A (ja) 2013-09-05
CN103258152A (zh) 2013-08-21
US20140140504A1 (en) 2014-05-22
EP2629223A1 (en) 2013-08-21
EP2629225A1 (en) 2013-08-21

Similar Documents

Publication Publication Date Title
CN110214440B (zh) 计算系统,传送受保护数据的方法和可读存储介质
JP6030103B2 (ja) データ保護装置及びその方法
CN100592683C (zh) 来自数字权利管理加密解密器的受保护的返回路径
JP5184489B2 (ja) 命令レベルのソフトウェア暗号化のための方法及び装置
KR20130093557A (ko) 적어도 하나의 암호화 명령어를 포함하는 소프트웨어 애플리케이션의 협력 실행을 위한 시스템, 장치, 및 방법
US8000467B2 (en) Data parallelized encryption and integrity checking method and device
US7835521B1 (en) Secure keyboard
CN106888080B (zh) 保护白盒feistel网络实施方案以防错误攻击
JPH09270785A (ja) 情報処理装置
CN105009597A (zh) 作为阻止密钥恢复攻击的对策的用于发射器-接收器配对的主密钥加密功能
KR102383829B1 (ko) 안전하게 메시지를 교환하기 위한 방법, 이 방법을 구현하기위한 장치 및 시스템
US20130077782A1 (en) Method and Apparatus for Security Over Multiple Interfaces
KR20120079639A (ko) 화이트박스 암호 테이블을 이용한 콘텐츠 보호 장치, 콘텐츠 암호화 및 복호화 장치
CN106888081B (zh) 白盒实施方案内中间值的宽编码
US7636441B2 (en) Method for secure key exchange
CN110868291B (zh) 一种数据加密传输方法、装置、系统及存储介质
US20160182227A1 (en) S-Box In Cryptographic Implementation
CN105468940A (zh) 软件保护方法及装置
CN112035860A (zh) 文件加密方法、终端、装置、设备及介质
Sharma et al. Secure file storage on cloud using hybrid cryptography
US8085932B2 (en) Secure distribution of data or content using keyless transformation
US11336425B1 (en) Cryptographic machines characterized by a Finite Lab-Transform (FLT)
JP2007515723A (ja) アクティブなエンティティを使用するソフトウェア実行保護
CN107278357B (zh) 密码系统和方法
KR101790948B1 (ko) Drm 서비스 제공 장치 및 방법, drm 서비스를 이용한 콘텐츠 재생 장치 및 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid