KR101639587B1 - 암호 시스템 - Google Patents

암호 시스템 Download PDF

Info

Publication number
KR101639587B1
KR101639587B1 KR1020107021855A KR20107021855A KR101639587B1 KR 101639587 B1 KR101639587 B1 KR 101639587B1 KR 1020107021855 A KR1020107021855 A KR 1020107021855A KR 20107021855 A KR20107021855 A KR 20107021855A KR 101639587 B1 KR101639587 B1 KR 101639587B1
Authority
KR
South Korea
Prior art keywords
function
result
white
implementation
cryptographic
Prior art date
Application number
KR1020107021855A
Other languages
English (en)
Other versions
KR20100138986A (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 이르데토 비.브이.
Publication of KR20100138986A publication Critical patent/KR20100138986A/ko
Application granted granted Critical
Publication of KR101639587B1 publication Critical patent/KR101639587B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Abstract

암호 시스템(100)은 함수의 화이트-박스 구현(102); 암호 알고리즘의 구현(104); 및 함수의 결과 및 암호 알고리즘의 결과에 따라 암호적으로 프로세싱된 데이터를 확립하기 위한 결합 연산의 구현(106)을 포함한다. 결합 연산은 암호 알고리즘의 결과를 함수의 결과와 결합하는 것을 포함한다. 대안적으로, 결합 연산은 함수의 결과를 수신된 데이터 엘리먼트와 결합하여 결합 결과를 획득하고 결합 결과에 암호 알고리즘을 적용하는 것을 포함한다.

Description

암호 시스템{CRYPTOGRAPHIC SYSTEM}
본 발명은 암호 시스템 및 암호 프로세싱 방법에 관한 것이다.
요즘에, 콘텐트(content)는 점점 예를 들면, 인터넷, 브로드캐스트 매체(broadcast medium), 또는 CD 또는 DVD와 같은 디지털 데이터 캐리어(digital data carrier)에 의해 이용자들에게 디지털 포맷(digital format)으로 이용가능하게 된다. 텔레비전(television)들, 셋톱 박스(settop box)들, 및 오디오 장비와 같은, 소비자 전자 장치(Consumer electronics; CE) 제품들에는 이러한 디지털 콘텐트들을 렌더링(rendering)하는 디지털 데이터 프로세싱 능력들이 구비된다.
디지털 권리 관리 시스템이 합법적인 이용자들로의 디지털 콘텐트의 분배를 제어하기 위하여 도입되었다. 전형적으로, 디지털 권리 관리 시스템은 합법적인 이용자들만이 콘텐트를 복호화하도록 하는 암호화 기술을 이용한다. 소비자 디바이스들에서의 이와 같은 암호화 기술들의 구현은 공격자가 키(key)의 값을 찾아내는 것을 더 어렵게 하기 위하여 모호화될 수 있다. 많은 상이한 종류들의 애플리케이션들에 대해 통용되는 암호(cipher)들의 예들은 DES, AES, RSA, 및 WO9967918에서 개시된 방법이다.
디지털 권리 관리 시스템들에서의 키 핸들링(key handling)에 관하여, 재생을 위해 미디어 플레이어(media player)는 라이센스 데이터베이스(license database)로부터 복호화 키를 검색해야 한다. 그 후, 미디어 플레이어는 암호화된 콘텐트의 복호화을 위해 이 복호화 키를 메모리의 어딘가에 저장해야 한다. 이것은 키에 대한 공격에 대한 2개의 옵션(option)들을 공격자에게 제공한다. 첫째로, 라이센스 데이터베이스 액세스 함수의 리버스 엔지니어링(reverse engineering)은 공격자가 모든 라이센스 데이터베이스들로부터 자산 키(asset key)들을 검색하도록 할 수 있다. 둘째로, 콘텐트 복호화 동안 메모리로의 액세스들의 관측에 의하여, 자산 키를 검색하는 것이 가능하다. 2개의 경우들 모두에서, 키가 손상되는 것으로 간주된다.
소프트웨어 구현된 암호화 시스템(software implemented cryptographic system)들의 분야에서, 위조 방지 소프트웨어 제품들에 대한 필요성이 공격자들이 암호화 키들을 획득하는 것 및 인증되지 않은 복제를 행하는 것을 방지하는 모호화 기술(obfuscation technique)들을 발생시켰다. 이러한 모호화 기술들 중 하나는 암호 알고리즘(cryptographic algorithm)의 화이트-박스 구현(white-box implementation)을 제공하는 것을 포함한다. 암호 알고리즘들의 화이트-박스 구현들은 화이트-박스 공격, 즉, 공격자가 프로세서에 의해 실행된 명령들 중 일부 또는 모두를 관측할 수 있는 공격에 대해 암호 알고리즘의 내부 동작들 중 일부 또는 모두를 숨기는 구현들이다. 일부 경우들에서, 공격자는 동작 환경들을 통한 어떤 형태의 제어를 가지는데, 이는 공격자가 암호 동작들 중 적어도 일부를 관측하도록 하고, 실행 동안 알고리즘에서 이용된 암호 키 중 적어도 일부를 식별하도록 한다. 예를 들면, 공격자는 디버깅 환경(debugging environment) 또는 가상 기계 내부에서 상기 구현을 실행함으로써, 모든 동작들을 관측하고, 데이터 버퍼(data buffer)들을 조작하고, 실행 흐름을 모니터링(monitoring)할 수 있다.
다른 경우들에서, 공격자는 동작 환경이 암호 알고리즘의 실행 동안 상기 구현의 부분 또는 데이터 버퍼들의 콘텐트들의 부분을 '누설' 또는 누출하도록 할 수 있다. 예를 들면, 공격자는 암호 구현의 부분들을 추출하기 위하여 버퍼 오버플로우 공격(buffer overflow attack)을 이용할 수 있다. 권리 부분이 추출되는 경우에, 공격자는 자신이 암호 보호 중 일부 또는 모두를 원상태로 돌리도록 하는 상기 구현에서의 암호 키 또는 특정 세팅들을 습득할 수 있다.
화이트-박스 구현들은 암호 알고리즘의 내부 동작들 중 일부 또는 모두, 특히 키 데이터를 숨긴다. 이것은 다양한 방식들로 행해질 수 있다. 화이트-박스 구현들을 생성하기 위한 대중적인 기술은 개별적인 단계들이라기보다는 오히려, 합성(composition)들을 나타내는 랜덤 전단사(random bijection)들과의 암호 알고리즘에서의 인코딩 테이블(encoding table)들의 결합을 이용하는 것이다. 복호화 키 및 복호화 알고리즘이 하나의 모놀리식 블록(monolithic block)으로 효율적으로 변화된다. 이 블록의 단일 부분은 키 또는 알고리즘의 내부 동작들에 관한 임의의 키를 드러내지 않는다. 실제로, 전체 화이트-박스 구현이 제공될 때, 이용된 복호화 키 또는 원래 알고리즘을 리버스 엔지니어링하기가 매우 어렵다. 예를 들면, 유럽 특허 출원 일련 번호 08155798.5(대리인 문서 PH010099)에서 개시된 또 다른 기술은 RSA와 같은 암호 알고리즘들에서의 지수(exponent)의 모호화이다.
현재, 화이트-박스 구현들은 제한된 수의 암호들에 대해서만 공지된다. 2002년 8월 15-16일에 Canada, St.John's Newfoundland에서의 Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002에서 Stanley Chow, Philip Eisen, Harold Johnson, 및 Paul C. Van Oorschot에 의한 "White-Box Cryptography and an AES Implementation"(이하에서 "Chow 1"이라고 칭해짐) 및 2002년 11월 18일에 USA, Washington DC에서의 Digital Rights Management: ACM CCS-9 Workshop, DRM 2002에서 Stanley Chow, Philip Eisen, Harold Johnson, 및 Paul C. Van Oorschot에 의한 "A White-Box DES Implementation for DRM Applications"(이하에서 "Chow 2"라고 칭해짐)은 특히 AES 및 DES로서 공지된 암호 알고리즘들에 대하여 암호 알고리즘들의 화이트-박스 구현들을 생성하는 방법들을 개시한다.
본 발명의 목적은 암호 시스템 및 암호 프로세싱 방법을 제공하는 것이다.
암호 알고리즘의 화이트-박스 구현을 생성하는 더 유연한 방식을 갖는 것이 유용할 것이다. 이 관심사를 더 양호하게 다루기 위하여, 본 발명의 제 1 양태에서,
함수의 화이트-박스 구현;
암호 알고리즘의 구현; 및
함수의 결과 및 암호 알고리즘의 결과에 따라 암호적으로 프로세싱된 데이터를 확립하기 위한 결합 연산의 구현을 포함하는 암호 시스템이 제공된다.
화이트-박스 구현 때문에, 함수에 의해 규정된 맵핑(mapping)이 공격자에 의해 용이하게 발견될 수 없다. 결과적으로, 함수의 화이트-박스 구현에 적절한 값들을 공급함으로써, 공격자가 예측하기 어려운 값들의 시퀀스(sequence)가 생성될 수 있다. 암호 알고리즘의 결과를 화이트-박스 구현의 결과와 결합함으로써, 공격자가 암호 시스템을 파괴하기가 더 어려워진다. 실제로, 암호 알고리즘의 강도는 화이트-박스 구현의 보안 속성들로 강화된다.
암호 알고리즘 자체의 화이트-박스 구현을 제공하는 것은 필요하지 않다. 암호 알고리즘은 예를 들면, RSA에 기초할 수 있다.
함수는 바람직하게는, 비헤이비어(behavior)가 함수의 화이트-박스 구현의 입력들 및 출력들을 모니터링(monitoring)함으로써 예측하기 어려운 함수이다. 함수는 예를 들면, DES 또는 AES와 같은 부가적인 암호 알고리즘을 포함할 수 있다. 이와 같은 경우에, 함수의 화이트-박스 구현은 부가적인 암호 알고리즘의 화이트-박스 구현을 포함한다. 대안적으로, 함수는 해시 함수(hash function) 또는 랜덤 생성기일 수 있다. 이와 같은 경우에, 함수의 화이트-박스 구현은 경우에 따라서, 해시 함수 또는 랜덤 생성기의 화이트-박스 구현을 포함한다.
결합 연산자는 예를 들면, 어떤 양의 정수(k)에 대하여 XOR 연산 또는 2k 모듈로 덧셈(addition modulo 2k)을 포함할 수 있다. 결합 연산은 화이트-박스 구현으로서 구현될 수 있거나 구현되지 않을 수 있다.
지금 공지되어 있거나 미래에 고안된 다른 화이트-박스 기술들이 또한 이용될 수 있을지라도, 화이트-박스 구현을 생성하기 위한 상술된 기술들이 이용될 수 있다. 바람직하게는, 화이트-박스 구현은 크기가 너무 작지 않고, 공격자가(알고리즘에 의해 이용된 키를 포함하는) 구현의 임의의 부분을 가지는 경우에, 공격자가 이로부터 화이트-박스 구현의 주제인 함수의 기능적으로 정확한 버전을 얻기 어려운 속성을 갖는다. 이 가정은 화이트-박스 구현들에서 종종 가정되는 것, 즉, 공격자가 환경을 통한 완전한 제어를 갖는다는 것보다 더 약하다. 바람직하게는, 화이트-박스 구현의 부분으로부터, 공격자는 근원적인 키 또는 랜덤 생성기의 경우에, 이용된 시드(seed)를 얻을 수 없다. 일부 화이트-박스 기술들, 예를 들면, 인코딩 테이블들의 결합의 상술된 이용이 공격자가 환경을 통한 완전한 제어를 가지는 화이트-박스 공격들을 저항하도록 설계된다. 이와 같은 기술들이 본 발명의 목적들에 적합하지만, 본 발명에 또한 적합한 다른 더 용이한 화이트-박스 기술들이 존재한다. 일례로서, AES의 화이트-박스 구현을 생성할 때, 비-선형 인코딩에 의해 각각의 룩-업 테이블(look-up table)의 입력 및 출력을 인코딩하는 것으로 충분할 수 있다. 선형 인코딩들에 의해 XOR 연산에 앞서서 룩-업 테이블들의 출력(및, 이에 대응하여, 또한 XOR 연산 다음에 룩-업 테이블의 입력들)을 인코딩함으로써, 룩-업 테이블에 의해 XOR 연산을 구현하는 것이 본 발명의 목적을 위해 필요하지 않다.
독립 청구항들은 본 발명의 부가적인 양태들을 규정한다. 종속 청구항들은 유용한 실시예들을 규정한다.
본 발명의 이러한 양태들 및 다른 양태들이 도면을 참조하여 더 설명 및 기술될 것이다.
도 1은 암호 시스템의 일 실시예의 도면.
도 2는 암호 시스템의 또 다른 실시예의 도면.
도 3은 암호기 및 복호기를 포함하는 시스템의 도면.
도 4는 암호 프로세스를 도시한 도면.
현재, 화이트-박스 구현들은 제한된 수의 암호들(예를 들면, AES, DES, Lombok)에 대해서만 공지되어 있다. 다음은 (암호 또는 또 다른 함수의) 공지된 화이트-박스 구현의 상부에 임의의 암호(또는, 더 일반적으로, 함수)에 대한 화이트-박스 구현을 구축하기 위한 일반적인 방식의 설명을 제공한다. 화이트-박스 구현은 많은 추가적인 프로세싱 시간을 요하지 않는 방식으로 구축될 수 있다.
함수의 화이트-박스 구현, 암호 알고리즘의 구현, 및 함수의 결과 및 암호 알고리즘의 결과에 따라 암호적으로 프로세싱된 데이터를 확립하기 위한 결합 연산의 구현을 포함하는 암호 시스템이 생성될 수 있다. 결합 연산 및 함수의 화이트-박스 구현에 의하여, 전체 암호 시스템은 화이트-박스 구현이 된다. 여러 결합 연산들이 상상가능하고, 이중 일부가 도 1 내지 도 4를 이용하여 더 상세히 설명될 것이다. 도면들에 도시되지 않은 일례로서, 합성에 의해 함수 및 암호 알고리즘을 결합하는 것이 가능하다: 함수를 먼저 적용하고 나서, 암호 알고리즘을 적용하거나 또는 암호 알고리즘을 먼저 적용하고 나서 함수를 적용한다.
도 1은 암호 시스템(100)의 블록도를 도시한다. 암호 시스템은 자신이 암호적으로 프로세싱되어야 하는 데이터를 수신하기 위한 입력부(112)를 갖는다. 예를 들면, 프로세싱될 데이터는 암호화되어야 하는 평문(plain text)이거나, 복호화되어야 하는 암호문(cipher text)이다. 대안적으로, 프로세싱될 데이터는 디지털 시그너처(digital signature)가 생성되어야 하는 데이터이다. 암호 시스템(100)은 보완적인 암호 시스템(도시되지 않음)과 함께 이용될 수 있다. 시스템(100)이 암호화 시스템을 포함하는 경우에, 보완적인 암호 시스템은 복호기를 포함할 수 있다. 반면에, 시스템(100)이 대응하는 복호화 시스템을 포함하는 경우에, 보완적인 암호 시스템은 대응하는 암호화 시스템을 포함할 수 있다. 그래서, 2개의 암호 시스템들은 하나의 시스템이 다른 시스템에 의해 생성된 메시지들을 프로세싱할 수 있을 때 본 명세서에서 보완적인 시스템들이라고 칭해진다.
암호 시스템(100)은 암호 알고리즘의 구현(104)을 추가로 포함한다. 이 구현은 적어도 부분적으로 화이트-박스 구현들의 기술로부터 홀로 공지된 기술들을 이용하여 암호 알고리즘을 구현하는 것이 가능할지라도, 화이트-박스 구현일 필요는 없다. 암호 시스템(104)은 복호기 또는 암호기를 포함할 수 있다. 전형적으로, 시스템(100)이 복호화에 이용되는 경우에, 암호화 시스템(104)은 복호기를 포함한다. 대안적으로, 시스템(100)이 암호화에 이용되는 경우에, 암호 시스템(104)은 암호기를 포함한다. 암호 알고리즘의 구현(104)이 화이트-박스 구현일 필요가 없기 때문에, 이용된 암호 알고리즘을 선택할 시에 많은 프리덤(freedom)이 존재한다. 특히, 화이트-박스 구현이 공지되지 않거나, 화이트-박스 구현이 이용하기 불편한 암호 알고리즘이 적용될 수 있다.
또한, 암호 시스템(100)은 값(x)을 생성하기 위한 수단(110)을 포함한다. 이 값(x)은 예를 들면, 입력부(112)에 의해 수신되는 데이터에 대응하는 암호문으로부터 얻어질 수 있다. 또는, 이것은 미리 결정된 순간들에서 증가되는 카운터(counter)를 포함할 수 있다. 수단(110)은 바람직하게는, 보완적인 암호 시스템이 재생할 수 있는 값(x)을 생성하기 위해 배열된다. 수단은 값(x)을 보완적인 시스템과 동기화시킴으로써 배열될 수 있는데, 이는 x의 현재 값의 표현을 포함하는 메시지를 교환함으로써 성취될 수 있다.
값(x)은 함수의 화이트-박스 구현(102)에 제공될 수 있다. 이 함수는 바람직하게는, 자신의 입력들 및 출력들을 분석함으로써 매우 용이하게 이해되지 않는다. 예를 들면, 함수는 AES와 같은 암호 알고리즘을 포함한다. 대안적으로, 함수는 해시 함수 또는 랜덤 생성기 함수를 포함할 수 있다. 단독으로, 이와 같은 화이트-박스 구현을 생성하는 방식이 Chow 등으로부터 공지되어 있다.
함수의 화이트-박스 구현(102) 및 암호 알고리즘의 구현(104)에 의해 생성된 출력들은 결합 연산의 구현(106)에 의해 결합된다. 결합 연산의 구현(106)에 의해 생성된 결과는 함수의 구현(102)에 의해 생성된 결과 및 암호 알고리즘의 구현(104)에 의해 생성된 결과에 따른다. 함수의 구현(102) 및 암호 알고리즘의 구현(104)이 병렬로 동작하고 서로 독립적인 결과들을 생성하는 상황이 도 1에 도시되어 있다. 결합 연산의 구현(106)은 이러한 출력들을 단일 결과로 결합한다. 따라서, 결합 연산은 암호 알고리즘의 결과를 함수의 결과와 결합하는 것을 포함한다. 결합 연산은 바람직하게는, 함수 및 암호 알고리즘의 독립적인 결과들이 단일 결과로부터 추출될 수 없도록 한다. 예를 들면, 결과들을 결합하기 위하여 XOR 연산들, 또는 어떤 k에 대하여 어떤 값 2k 모듈로 가산이 이용된다.
결합 연산의 구현(106)의 결과가 출력부(114)에 제공된다. 출력부(114)는 예를 들면, 자신이 제공받는 결과들로부터 검색된 데이터로부터 출력 데이터 패킷들을 생성하기 위한 패키저(packager)를 포함할 수 있다. 출력부(114)는 네트워크, 예를 들면, 브로드캐스트 네트워크 또는 인터넷을 통해 수신기에 데이터를 송신하기 위한 송신기를 포함할 수 있다. 대안적으로, 출력부(114)는 데이터의 표현을 생성하기 위해 디스플레이 또는 증폭기에 구현(106)으로부터 획득된 결과를 제공하기 위해 배열될 수 있다.
도 2는 설명된 암호 시스템의 또 다른 실시예인 암호 시스템(200)을 도시한다. 암호 시스템(200)에서, 결합 연산은 함수의 결과를 수신된 데이터 엘리먼트(data element)와 결합하여 결합 결과를 획득하고, 결합 결과에 암호 알고리즘을 적용하는 것을 포함한다.
시스템(100)과 유사하게, 시스템(200)은 입력부(212), 값(x)을 생성하기 위한 수단(210), 함수의 화이트-박스 구현(202), 암호 알고리즘의 구현(204), 결합 연산의 구현(206), 및 출력부(214)를 포함한다. 그러나, 시스템(200)에서, 실행 순서가 시스템(100)에서와 상이하다. 시스템(200)은 F(C(y,G(x)))를 효율적으로 계산하며, 여기서, G는 함수를 나타내고, F는 암호 알고리즘을 나타내고, C는 결합 연산을 나타내고, y는 입력부(212)에서 획득된 값을 나타낸다. 결합 연산의 구현(206)은 입력부(212)에서 획득된 데이터를 함수의 화이트-박스 구현(202)에 의해 생성된 결과와 결합함으로써 결합 결과를 생성하고, 암호 알고리즘의 구현(204)이 결합 결과를 프로세싱하도록 한다. 이의 결과가 출력부(214)에 제공된다.
일 실시예에서, 함수의 출력의 특정 값이 제공되면, 결합 연산은 암호 알고리즘의 결과와 결합 연산의 결과 사이의 일-대-일 대응을 규정한다. 이것은 시스템이 복호기에서 데이터를 특정하게 복호화하도록 하기 때문에 예를 들면, 시스템(100 또는 200)이 데이터를 암호화하기 위해 이용되는 경우에 유용하다.
일 실시예에서, 출력부(214)는 결합 연산의 결과의 표현을 포함하는 신호를 생성하기 위한 신호 생성기를 포함한다. 이 신호는 예를 들면, 저장 수단 상에 저장될 수 있거나, 또는 수신기에 송신될 수 있다. 신호 생성기는 제 1 함수로의 입력의 표현을 신호에 포함하기 위해 배열될 수 있다. 이것은 수신자가 상이한 방식으로 이 값을 획득할 수 있는 경우에 생략될 수 있다. 결합 연산의 구현은 함수의 신호 결과를 암호 알고리즘의 복수의 결과들과 결합하기 위해 배열될 수 있다. 이것은 함수의 동일한 결과를 복수 번 재이용함으로써 효율을 개선시킨다. 따라서, 함수로의 대응하는 입력은 신호에 한 번만 포함될 필요가 있다.
화이트-박스 구현은 룩-업 테이블 및 XOR 연산을 포함할 수 있다. Chow 등에 따르면, 명시적인 XOR 연산들은 입력 및 출력 인코딩들을 이용하여 모호화되는 룩-업 테이블들로 교체된다. 효율을 개선시키기 위하여, 이러한 룩-업 테이블들은 명시적인 XOR 연산들로 교체될 수 있다. 이것이 여전히 공격자가 화이트-박스 구현의 부분으로부터 근원적인 키를 얻지 못하도록 하기 때문에, 일부 애플리케이션들에 충분한 화이트-박스 보안을 여전히 제공한다는 점이 발견되었다.
화이트-박스 구현을 하드웨어 디바이스(hardware device), 또는 특정 이용자에게 바인딩(binding)하기 위하여, 화이트-박스 구현은 아이덴티피케이션 데이터를 획득하기 위해 디바이스 및/또는 이용자를 식별하는 데이터에 액세스하기 위한 수단, 및 아이덴티피케이션 데이터에 따라 함수의 출력을 확립하기 위한 수단을 포함할 수 있다. 예를 들면, 룩-업 테이블들 중 하나 이상이 식별 데이터를 포함하도록 선택된다. 다른 룩-업 테이블들은 화이트-박스 구현에 대한 전체적인 최종 결과가 이것에 의해 변경되지 않도록 적응될 수 있다. 이 특징은 암호 시스템의 인증되지 않은 이용을 방지하도록 허용한다. 이 기술의 예들은 WO 2007/105126에 개시되었다.
도 3은 암호기(301) 및 복호기(350)의 일 실시예를 도시한다. 암호기(301)는 암호 시스템(100)에 기초하고, 복호기는 암호 시스템(200)에 기초한다. 그러나, 이것은 제한이 아니다. 예를 들면, 암호기가 암호 시스템(200)에 기초하고, 복호기가 암호 시스템(100)에 기초하는 것이 또한 가능하다. 예를 들면, 암호기(301)는 콘텐트 서버에 포함될 수 있고 오디오 또는 비디오 콘텐트를 암호화하기 위해 이용될 수 있고, 복호기(350)는 소비자 전자 디바이스에 포함되어 암호화된 콘텐트를 복호화하고 콘텐트를 재생하도록 할 수 있다. 암호기(301)와 복호기(350) 사이의 통신은 인터넷, 케이블 텔레비전 네트워크와 같은 디지털 브로드캐스트 매체, 또는 DVD 또는 블루-레이 디스크(Blue-ray disc)와 같은 제거가능한 저장 매체를 통해 발생할 수 있다. 도 1 및 도 2의 엘리먼트들과 유사한 엘리먼트들을 식별하기 위해 유사한 참조 부호들이 병기되었다. 암호기(301)는 다음을 포함한다:
- (공개 키 암호화 알고리즘, 예를 들면, RSA과 같은 암호화 알고리즘일 수 있는) 제 1 암호 알고리즘에 의해 암호화될 데이터를 획득하기 위한 입력부(112).
- 입력부(112)에서 획득된 데이터를 암호화하기 위해 배열된 제 1 암호 알고리즘의 구현(104).
- 값(x)을 생성하기 위한 수단(110). 카운터 또는 랜덤 생성기는 이를 위해 이용될 수 있다. 외부 소스(external source)로부터 값(x)을 획득하거나 암호 알고리즘의 구현(104)의 출력으로부터 이를 생성하는 것이 또한 가능하다.
- 값(x)에 적용되는 제 1 함수의 구현(102).
- 제 1 함수의 결과 및 제 1 암호 알고리즘의 결과에 따라 암호화된 데이터를 확립하기 위한 제 1 결합 연산의 구현(106).
- 제 1 결합 연산의 결과를 표현하는 정보를 복호기(350)에 제공하기 위한 출력부(114). 출력부는 또한 제 1 함수로의 입력을 표현하는 정보를 복호기(350)에 제공할 수 있다.
복호기(350)는 다음을 포함한다:
- 제 1 함수로의 입력을 표현하는 정보를 획득하기 위한 입력부(210). 이 정보는 암호기(301)의 출력부(114)로부터 수신될 수 있다. 복호기(350)에서 값들(x)을 재생하는 것이 또한 가능하다. 이 경우에, 입력부(210)는 값(x)을 생성하기 위한 수단(110)의 카피(copy)로 교체될 수 있다.
- 암호기(301)의 출력부(114)로부터 제 1 결합 연산의 결과를 표현하는 정보를 획득하기 위한 입력부(212).
- 제 1 함수로의 입력을 표현하는 정보의 적어도 일부에 기초하는 값에 제 2 함수를 적용하기 위해 배열된 제 2 함수의 구현(202). 제 2 함수는 제 1 함수와 동일할 수 있다. 그러나, 값(x)이 인코딩된 형태로 복호기(350)에 송신되는 경우에, 이 인코딩은 제 2 함수에 의해 원상태로 돌려진다.
- 제 2 함수의 결과 및 제 2 암호 알고리즘의 결과에 따라 복호화된 데이터를 확립하기 위한 제 2 결합 연산의 구현(206). 제 2 결합 연산의 구현(206)은 제 1 결합 연산(106)의 효과를 우선 원상태로 돌린다. 예를 들면, 제 1 결합 연산이 구현(102)의 출력의 구현(104)의 출력과의 승산을 포함하는 경우에, 제 2 결합 연산은 중간의 결합된 값을 획득하기 위해 입력부(212)에서 획득된 값의 제 2 함수의 구현(202)의 출력의 인버스(inverse)와의 승산을 포함할 수 있다. 그 후, 제 2 결합 함수의 구현(206)은 제 2 암호 함수의 구현(204)으로 하여금 자신의 제 2 암호 함수를 중간의 결합된 값에 적용하도록 함으로써, 복호화된 데이터를 생성한다. 이를 위해, 구현(206)은 제 2 암호 알고리즘의 구현(204)을 인보킹(invoking)하기 위한 제어 수단(도시되지 않음)을 포함할 수 있다.
- 제 1 결합 연산의 결과를 표현하는 정보의 적어도 일부로부터 생성된 데이터에 암호 알고리즘을 적용하기 위해 배열된 제 2 암호 알고리즘의 구현(204). 제 2 암호 알고리즘은 예를 들면, 제 1 암호 알고리즘을 위해 이용된 암호화 알고리즘에 대응하는 복호화 알고리즘이다.
제 1 함수의 구현(102) 또는 제 2 함수의 구현(202) 중 하나, 또는 이들 둘 모두는 인증되지 않은 위조에 대해 암호기(301) 또는 복호기(350), 또는 이들 둘 모두를 각각 안전하게 하기 위한 화이트-박스 구현들이다.
도 4는 함수의 화이트-박스 구현에 의하여 제 1 값에 함수를 적용하는 단계(402); 제 2 값에 암호 알고리즘을 적용하는 단계(404); 및 함수의 결과 및 암호 알고리즘의 결과에 따라 암호적으로 프로세싱된 데이터를 확립하기 위한 결합 연산을 적용하는 단계(406)를 포함하는 암호 프로세싱 방법을 도시한다. 도 4에 도시된 프로세싱 단계들의 순서는 단지 예이며, 제한이 아니다.
함수 F가 암호 알고리즘을 나타낸다고 하자. 다음에서, 함수 F의 화이트-박스 구현이 설명될 것이다. 예를 들면, 목적이 RSA의 암호화 알고리즘의 화이트-박스 구현을 얻는 것일 경우에, F(m)은 메시지 m과 연관된 암호문을 나타내고, 목적이 해시 함수 MD4에 대한 화이트-박스 구현을 얻는 것일 경우에, F(m)은 메시지 m과 연관된 해시 값을 나타낸다.
G가 화이트-박스 구현이 이용가능한 임의의 함수를 나타낸다고 하자. 함수 G는 전단사일 필요는 없다. 함수 G는 예를 들면, 해시 함수 또는 랜덤 생성기 함수일 수 있다. F 및 G의 도메인(domain)은 dom(F) 및 dom(G)에 의해 각각 표시되고, F 및 G의 범위는 im(F) 및 im(G)에 의해 각각 표시된다. 더욱이, n이 im(F)에서의 값들의 비트 길이라고 하고, m이 dom(G)에서의 값들의 비트 길이라고 하자.
함수 C가 규정되는데, C:im(G)×im(F)→im(F)이고, 이는 바람직하게는 자신의 제 2 인수에서 전단사이다. 바람직하게는, C는 효율적으로 계산가능하다. 예를 들면, C(x,y)=xㆍy 또는 C(x,y)=x+y이다.
다음으로, 함수 H가 도입되는데, H:dom(G)×dom(F)→dom(G)×im(F)이고, 함수 H는 H(x,y)=(x, C(G(x),F(y)))에 의해 규정된다.
함수 H는 암호 알고리즘을 규정한다. 상기 방식을 고려하여, H는 F 및 G에 의해 구축되고, H의 구현은 자신이 F의 암호 속성들 및 G의 화이트-박스 속성들을 '물려받도록' 구성될 수 있다. 결과적으로, F의 암호 강도는 G의 화이트-박스 구현의 위조-방지 속성들과 결합된다. 결과적으로, 자신의 블랙-박스 보안(black-box security)에 대하여, H는 적어도 F만큼 안전하게 될 수 있다. 또한, 자신의 화이트-박스 보안에 대하여, H는 F 및 C가 화이트-박스가 아닌 구현의 형태로 구현될 수 있을지라도, G를 적어도 부분적으로 화이트-박스 구현의 형태로 구현함으로써 화이트-박스 시큐어(white-box secure)일 수 있다. F가 출력 블록 크기(nF)를 가지는 블록 암호의 암호화 또는 복호화 알고리즘을 나타내고 G가 크기(nG)의 입력 데이터를 갖는 함수를 나타내는 경우에, 송신될 데이터는 G의 입력 데이터 및 G의 출력 둘 모두가 H에 포함되기 때문에, 크기(nF+nG)로 이루어질 수 있다. x가 상수 값에 의해 제공된다고 가정하거나, x가 복호기에서 공지된다고 가정하자. 그 다음, H의 출력을 얻기 위해 화이트-박스 구현을 구동시키는 것이 필요하지 않다. 그 다음, C 및 F의 구현들을 구동시키는 것으로 충분한데, 이는 G의 화이트-박스 구현과 비교할 때 계산 효율적일 수 있다. 더욱이, 이와 같은 경우에, 값(x)은 암호문으로부터 생략될 수 있는데, 이는 암호문의 크기를 감소시킨다. 이것은 다음 방식이 가능하도록 한다.
모든 데이터 블록이라기보다는 오히려, x를 때때로 변화시키는 것이 또한 가능하다. 이 방식으로, 성능에 대해 화이트-박스 보안을 트레이드 오프(trade off)하는 것이 가능하다. H가 암호화 알고리즘을 지정하는 경우에, 암호문이 x가 변화되었다면 H(x,y)=(x,C(G(x),F(y)))에 의해 제공될 수 있고 x가 변화되지 않았다면 단지 Hx(y)=C(G(x),F(y))에 의해 제공될 수 있다는 점을 주의하라. H가 복호화 알고리즘을 지정하는 경우에, 암호문은 x가 변화되었다면 (x,y)에 의해 제공될 수 있고, x가 변화되지 않았다면 단지 y에 의해 제공될 수 있다. x의 값들의 미리 결정된 시퀀스를 이용하거나 x가 암호문에 따르도록 하는 것이 또한 구상된다. 이것은 또한 암호기로부터 복호기로 송신될 데이터의 량을 감소시킬 것이다.
상술된 기술들 및 프로세스들이 또한 어떤 함수 D에 대하여 예를 들면, H(x,y)=(D(x),C(G(x),F(y)))를 이용하여 적용될 수 있음에 주의하라. D는 G(x)가 D(x)로부터 얻을 수 있는 속성과 함께 선택된다. 그래서, 수신 측은 그 다음, 바람직하게는, E(D(x))=G(x)에 의해 규정된 함수 E를 구현한다.
일 실시예에서, RSA의 화이트-박스 구현은 AES의 화이트-박스 구현에 기초하여 구성된다. Chow 등에 의해 설명된 AES의 화이트-박스 구현은 이 목적에 적합하지만, 또 다른 종류의 화이트-박스 구현이 또한 이용될 수 있다. RSA 및 AES가 여기서 일례로서 이용된다. 다른 함수들이 암호 함수들이든지 아니든지 간에, RSA 및 AES 대신에 대안들로서 이용될 수 있다.
함수 F가 RSA 암호화 알고리즘을 나타낸다고 하자. 결과적으로, 데이터 블록 m에 대하여, F(m)은 RSA에 따라, 데이터 블록 m과 연관된 암호문을 나타낸다. 어떤 특정 키 또는 키들의 세트가 이와 함께 이용되는 것이 가정되지만, 키 핸들링의 세부사항들은 본 명세서에서 상세히 설명되지 않는다. RSA와 같은 암호 알고리즘들에서의 암호 키들의 이용은 당업계에 공지되어 있다. 본 일 실시예에서, m의 블록 크기는 128 비트보다 작다. 그러나, 이것은 제한이 아니다. 128 비트는 AES의 블록 크기에 대응하며, 이는 AES가 또한 이 일 실시예에서 이용된다는 사실 때문에 편리하다. 본 일 실시예에서, 함수 G는 AES의 암호화 알고리즘을 나타내고, C는 GF(2128)에서의 승산, 즉, x,y∈GF(2128)에 대하여 C(x,y)=xㆍy를 나타낸다. 카운터 T가 x의 값들을 제공하기 위해 이용된다. 다음의 프로세스 단계들은 H에 따라 메시지들을 암호화하기 위해 이용된다.
어떤 미리-지정된 조건이 충족되는 경우에, 카운트 T를 증가시킨다. 예를 들면, 카운터는 K 번째 데이터 블록들 이후마다 증가될 수 있다.
다음으로, 값 γ=C(G(x),F(y))=G(x)ㆍF(y)가 계산되고, 여기서, x는 카운터 T의 값에 의해 제공되고, y는 암호화되어야 하는 데이터 블록에 의해 제공된다.
다음으로, 암호 블록이 구성된다. 카운터가 최종적인 암호화 이후에 변화되었던 경우, 또는 이것이 제 1 암호화인 경우, 또는 복호기가 카운터의 값을 인지하지 못할 확률이 있는 경우에, 암호문은 H(x,y)=(x,γ)에 의해 제공된다. 그렇지 않은 경우에, 암호문은 γ에 의해 제공된다.
이러한 단계들은 암호화되어야 하는 후속 데이터 블록들에 대해 반복된다. 이해되는 바와 같이, 암호문은 전형적으로 γ의 값들을 포함하고, 복호기가 암호기에서 이용된 바와 같은 G(x)의 동일하거나 기능적으로 등가인 값들을 이용하도록 하는 메커니즘(mechanism)이 적소에 존재하는 한, x(또는, 경우에 따라서, D(x))의 하나, 일부, 또는 모든 값들을 포함하거나 포함하지 않을 수 있다. 값 x가 카운터 T 대신에, 랜덤 값 발생기의 결과일 수 있거나 예를 들면, 어떤 해시 함수에 의하여 평문 또는 암호문으로부터 계산될 수 있다는 점이 또한 이해될 것이다.
G는 화이트-박스 구현으로서 구현될 수 있다. 이 방식으로, G를 화이트-박스 구현로서 구현함으로써 H의 구현이 화이트-박스 구현이 되도록 할 수 있다.
설명된 방식으로 암호화된 데이터를 복호화할 수 있는 복호화 프로세스는 다음과 같다.
암호문 블록이 값 x를 포함하는 경우에, 암호문 블록의 값 x를 이용하는 것으로부터 G(x)가 계산된다. 그렇지 않은 경우에, 이전에 계산된 G(x)의 값이 이용된다.
다음으로, (GF(2128)에서 (G(x)-1))를 결정한다. (G(x)-1))가 (함수 G의 인버스라기보다는 오히려) GF(2128)에서 G(x)의 인버스를 나타낸다는 점이 주의된다.
그 후, F(y)=(G(x)-1))ㆍγ를 계산한다.
다음으로, RSA의 복호화 알고리즘이 F(y)에 기초하여 평문 블록 y를 계산하기 위해 이용된다. RSA의 이와 같은 복호화 알고리즘은 당업계에 공지되어 있다. 이 단계에서, F(y)는 암호문 블록으로서 간주된다.
이 복호화 프로세스의 화이트-박스 구현을 생성하기 위하여, 공격자가 함수 G를 파괴할 수 없는 경우에 공격자가 구현을 파괴하기가 어려울 것이기 때문에, 함수 G의 화이트-박스 구현을 제공하는 것이 충분하다는 점이 주의된다.
복호화 프로세스가 카운터 T의 자신의 카피를 유지하고 카운터가 증가되는 조건을 인지하는 경우에, 값 x가 암호문에 추가될 필요가 없다. 그러므로, 이 경우에, 블록 크기가 증가되지 않는다. 카운터 대신에, 우리는 이전 암호문 블록으로부터 값 x를 또한 얻을 수 있다. 또한, 이 경우에, 값 x가 암호문에 추가될 필요가 없다.
본원에 설명된 기술들은 키를 이용하는 소프트웨어 구현에 액세스하는 공격자로부터 암호 키를 숨기기 위해 이용될 수 있다.
본 발명은 또한 본 발명을 실행하도록 적응된 컴퓨터 프로그램들, 특히 캐리어 상의 또는 캐리어에서의 컴퓨터 프로그램들로 확장됨을 알 것이다. 프로그램은 소스 코드, 오브젝트 코드(object code), 코드 중간 소스 및 부분적으로 컴파일된 형태와 같은 오브젝트 코드 형태일 수 있거나 본 발명에 따른 방법의 구현에서 이용하기 위해 적합한 임의의 다른 형태일 수 있다. 또한, 이러한 프로그램은 많은 상이한 구조적 설계들을 가질 수 있음을 알 것이다. 예를 들면, 본 발명에 따른 방법 또는 시스템의 기능성을 구현하는 프로그램 코드는 하나 이상의 서브루틴들로 세분될 수 있다. 기능성을 이들 서브루틴들 간에 분배하기 위한 많은 상이한 방식들이 당업자에게 명백할 것이다. 서브루틴들은 독립형 프로그램을 형성하기 위해 하나의 실행가능한 파일에 함께 저장될 수 있다. 이러한 실행가능한 파일은 컴퓨터 실행가능한 명령들, 예를 들면, 프로세서 명령들 및/또는 해석기 명령들(예를 들면, 자바 해석기 명령들)을 포함할 수 있다. 대안적으로, 서브루틴들 중 하나 이상 또는 전부가 적어도 하나의 외부 라이브러리 파일에 저장되어 주 프로그램에 예를 들면, 런-타임시에 정적으로 또는 동적으로 링크될 수 있다. 주 프로그램은 서브루틴들 중 적어도 하나의 서브루틴으로의 적어도 하나의 호를 포함한다. 또한, 서브루틴들은 서로에 대한 기능 호들을 포함할 수 있다. 컴퓨터 프로그램 제품에 관한 일 실시예는 개시된 방법들 중 적어도 하나의 방법의 처리 단계들 각각에 대응하는 컴퓨터 실행가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고/세분되거나 정적으로 또는 동적으로 링크될 수 있는 하나 이상의 파일들에 저장될 수 있다. 컴퓨터 프로그램 제품에 관한 또 다른 실시예는 개시된 시스템들 및/또는 제품들 중 적어도 하나의 수단 각각에 대응하는 컴퓨터 실행가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고/세분되거나 정적으로 또는 동적으로 링크될 수 있는 하나 이상의 파일들에 저장될 수 있다.
컴퓨터 프로그램의 캐리어는 프로그램을 포함할 수 있는 임의의 엔티티 또는 디바이스일 수 있다. 예를 들면, 캐리어는 ROM과 같은, 저장 매체로서 예를 들면, CD ROM 또는 반도체 ROM, 또는 자기 기록 매체로서 예를 들면, 플로피 디스크 또는 하드 디스크를 포함할 수 있다. 또한, 캐리어는 전기적 또는 광학적 케이블을 통해서 또는 라디오 또는 다른 수단에 의해 전달될 수 있는 전기적 또는 광학적 신호와 같은 송신가능한 캐리어일 수 있다. 프로그램이 이러한 신호로 구현될 때, 캐리어는 이러한 케이블 또는 다른 디바이스 또는 수단에 의해 구성될 수 있다. 대안적으로, 캐리어는 프로그램이 임베딩(embedding)된 집적 회로일 수 있고, 집적 회로는 관계된 방법을 실행하거나, 이 방법의 실행에서 이용하기 위해 적응된다.
상기 언급된 실시예들은 본 발명을 제한하기 보다는 예시하는 것이며 당업자들은 첨부된 청구항들의 범위 내에서 많은 대안적인 실시예들을 설계할 수 있을 것임에 유의한다. 청구항들에서, 괄호들 사이의 임의의 참조 부호들은 청구항을 제한하는 것으로 해석되지 않아야 한다. "포함하다(comprise)"라는 동사의 이용은 청구항에 언급된 것들 외의 엘리먼트들 또는 단계들의 존재를 배제하는 것이 아니다. 엘리먼트 앞의 부정관사("a" 또는 "an")는 이러한 복수의 엘리먼트들의 존재를 배제하지 않는다. 본 발명은 몇 개의 구별되는 엘리먼트들을 포함하는 하드웨어에 의해, 및 적합하게 프로그래밍된 컴퓨터에 의해서 구현될 수 있다. 몇 개의 수단들을 나열한 디바이스 청구항에서, 이들 수단들 중 몇몇은 하나 및 동일한 아이템의 하드웨어에 의해 구현될 수 있다. 어떤 매저들(measures)이 상호 상이한 종속 청구항들에서 인용되었다는 단순한 사실은 이들 매저들의 조합이 잇점이 있게 이용될 수 없다는 것을 나타내는 것은 아니다.
100, 104, 200: 암호 시스템 112, 212: 입력부
114, 214: 출력부 301: 암호기
350: 복호기

Claims (14)

  1. 컴퓨터에 의해 구현되는 암호 프로세싱 방법에 있어서:
    함수의 화이트-박스 구현에 의해 제 1 값에 상기 함수를 적용하는 단계로서, 아이덴티피케이션 데이터(identification data)를 획득하기 위해 디바이스 및/또는 이용자를 식별하는 데이터에 액세스하는 단계 및 상기 아이덴티피케이션 데이터에 따라 상기 함수의 출력을 확립하는 단계를 포함하는 상기 함수의 화이트-박스 구현에 의해 제 1 값에 상기 함수를 적용하는 단계;
    제 2 값에 암호 알고리즘을 적용하는 단계; 및
    상기 함수의 결과 및 상기 암호 알고리즘의 결과에 따라 암호적으로 프로세싱된 데이터를 확립하기 위한 결합 연산을 적용하는 단계로서, 상기 암호 알고리즘의 결과를 상기 함수의 결과와 결합하는 단계를 포함하는 상기 결합 연산을 적용하는 단계를 포함하는, 암호 프로세싱 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 함수의 결과의 특정 값이 제공되면, 상기 결합 연산은 상기 암호 알고리즘의 결과와 상기 결합 연산의 결과 사이의 일-대-일 대응을 규정하는, 암호 프로세싱 방법.
  5. 제 1 항에 있어서,
    상기 결합 연산의 결과의 표현을 포함하는 신호를 생성하는 단계를 추가로 포함하는, 암호 프로세싱 방법.
  6. 제 5 항에 있어서,
    상기 신호를 생성하는 단계는 제 1 함수로의 입력의 표현을 상기 신호에 포함하는 단계를 포함하는, 암호 프로세싱 방법.
  7. 제 6 항에 있어서,
    상기 결합 연산을 적용하는 단계는 상기 함수의 단일 결과를 상기 암호 알고리즘의 복수의 결과들과 결합하는 단계를 포함하는, 암호 프로세싱 방법.
  8. 제 7 항에 있어서,
    제 2 함수의 복수의 결과들 및 제 1 함수로의 입력을 표현하는 값을 포함하는 신호를 생성하는 단계를 추가로 포함하는, 암호 프로세싱 방법.
  9. 제 1 항에 있어서,
    상기 화이트-박스 구현은 룩-업 테이블(look-up table) 및 XOR 연산을 포함하는, 암호 프로세싱 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 프로세서로 하여금 제 1 항 또는 제 4 항 내지 제 9 항 중 어느 한 항에 따른 상기 방법을 실행하도록 하기 위한 명령들을 포함하는 컴퓨터 프로그램이 기록된 컴퓨터 판독가능한 기록매체.
  14. 제 1 항 또는 제 4 항 내지 제 9 항 중 어느 한 항에 따른 상기 방법을 실행하도록 구성되는 시스템.
KR1020107021855A 2008-03-05 2009-03-02 암호 시스템 KR101639587B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EP08152276 2008-03-05
EP08152276.5 2008-03-05
EP08159061 2008-06-26
EP08159061.4 2008-06-26

Publications (2)

Publication Number Publication Date
KR20100138986A KR20100138986A (ko) 2010-12-31
KR101639587B1 true KR101639587B1 (ko) 2016-07-14

Family

ID=40651466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107021855A KR101639587B1 (ko) 2008-03-05 2009-03-02 암호 시스템

Country Status (7)

Country Link
US (1) US9710623B2 (ko)
EP (1) EP2255317B1 (ko)
JP (2) JP2011514091A (ko)
KR (1) KR101639587B1 (ko)
CN (1) CN102016871B (ko)
CA (1) CA2717625C (ko)
WO (1) WO2009109884A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120072011A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 무결성 검증이 가능한 데이터 암호장치, 복호장치 및 방법
KR101906225B1 (ko) 2011-11-30 2018-12-10 삼성전자 주식회사 복호장치와, 복호장치의 암호문 복호화 방법
JP6078555B2 (ja) 2012-01-09 2017-02-08 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 鍵駆動の難読化を用いる仮想マシンデバイス及び方法
FR2992083B1 (fr) * 2012-06-19 2014-07-04 Alstom Transport Sa Calculateur, ensemble de communication comportant un tel calculateur, systeme de gestion ferroviaire comportant un tel ensemble, et procede de fiabilisation de donnees dans un calculateur
BR112015014470A2 (pt) * 2012-12-21 2017-07-11 Koninklijke Philips Nv compilador configurado para compilar um programa de computador, dispositivo de computação configurado para executar um programa de computador compilado por um compilador, método para executar um programa de computador compilado por um compilador e programa de computador
US9009495B2 (en) * 2013-06-28 2015-04-14 Envieta, LLC High speed cryptographic combining system, and method for programmable logic devices
US9363075B2 (en) 2013-10-18 2016-06-07 International Business Machines Corporation Polymorphic encryption key matrices
WO2015149827A1 (en) * 2014-03-31 2015-10-08 Irdeto B.V. Obfuscated performance of a predetermined function
US9485226B2 (en) * 2014-04-28 2016-11-01 Nxp B.V. Method for including an implicit integrity or authenticity check into a white-box implementation
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
US10412054B2 (en) 2014-06-24 2019-09-10 Nxp B.V. Method for introducing dependence of white-box implementation on a set of strings
KR102311340B1 (ko) * 2015-01-15 2021-10-15 한국전자통신연구원 암호화 장치 및 방법
US9665699B2 (en) * 2015-03-13 2017-05-30 Nxp B.V. Implementing padding in a white-box implementation
IN2015DE01753A (ko) * 2015-06-11 2015-08-28 Pradeep Varma
CN105426702A (zh) * 2015-10-26 2016-03-23 李晖 基于安卓操作系统的应用程序加密解密方法和装置
US10171234B2 (en) * 2015-12-16 2019-01-01 Nxp B.V. Wide encoding of intermediate values within a white-box implementation
GB201522315D0 (en) 2015-12-17 2016-02-03 Irdeto Bv Securing webpages, webapps and applications
EP3467808B1 (en) 2016-05-23 2020-04-08 Sony Corporation Encryption device, encryption method, decryption device, and decryption method
KR101933649B1 (ko) * 2016-05-27 2018-12-28 삼성에스디에스 주식회사 화이트박스 암호 알고리즘을 이용한 공개키 암호화를 위한 장치 및 방법
US11748297B2 (en) 2019-04-26 2023-09-05 Csub Auxiliary For Sponsored Programs Administration Reconfigurable security hardware and methods for internet of things (IOT) systems
JP7383985B2 (ja) 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
KR102301243B1 (ko) * 2020-06-15 2021-09-13 주식회사 스틸리언 화이트박스 암호를 이용한 데이터 암호화/복호화 방법 및 장치

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10161535A (ja) * 1996-12-05 1998-06-19 Yamaha Corp 暗号通信装置
EP1038370B1 (en) 1998-06-25 2006-09-06 Koninklijke Philips Electronics N.V. Synchronous stream cipher
US6351539B1 (en) * 1998-09-18 2002-02-26 Integrated Device Technology, Inc. Cipher mixer with random number generator
JP2003513490A (ja) * 1999-10-25 2003-04-08 サイファーマンクス コンサルタンツ リミテッド 意図しないサイド・チャネル信号の分析によるデータ抜取りに耐性のデータ処理方法
EP1440535B1 (en) * 2001-10-03 2011-01-05 Nxp B.V. Memory encrytion system and method
JP3650611B2 (ja) * 2002-06-13 2005-05-25 一浩 宮本 暗号化及び復号化するためのプログラム
US20040083373A1 (en) * 2002-10-28 2004-04-29 Perkins Gregory M. Automatically generated cryptographic functions for renewable tamper resistant security systems
GB0229894D0 (en) 2002-12-21 2003-01-29 Ibm Methods, apparatus and computer programs for generating and/or using conditional electronic signatures and/or for reporting status changes
WO2006012638A2 (en) * 2004-07-29 2006-02-02 Vadium Technology, Inc. Techniques to strengthen one-time pad encryption
EP1646174A1 (en) * 2004-10-07 2006-04-12 Axalto SA Method and apparatus for generating cryptographic sets of instructions automatically and code generation
JP4593618B2 (ja) * 2005-03-08 2010-12-08 パナソニック株式会社 パケット送信装置
US7769165B2 (en) * 2005-10-14 2010-08-03 Microsoft Corporation Semi-public white-box cipher
US8479016B2 (en) 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
BRPI0714242A2 (pt) * 2006-07-12 2013-01-29 Koninkl Philips Electronics Nv sistema e mÉtodo para aumentar a resistÊncia Á adulteraÇço de uma unidade de processamento de dados digitais, e, produto de programa de computador
CN101491000B (zh) 2006-07-12 2011-12-28 耶德托公司 用于混淆密码函数的方法和系统
WO2008018303A1 (fr) * 2006-08-10 2008-02-14 Nec Corporation Dispositif de chiffrage de bloc équipé d'une fonction d'ajustement, procédé et programme
WO2008059420A2 (en) * 2006-11-17 2008-05-22 Koninklijke Philips Electronics N.V. Cryptographic method for a white-box implementation
EP2104987A2 (en) * 2007-01-11 2009-09-30 Koninklijke Philips Electronics N.V. Tracing copies of an implementation
US8160247B2 (en) * 2007-09-27 2012-04-17 Adobe Systems Incorporated Providing local storage service to applications that run in an application execution environment
US8600047B2 (en) 2008-05-07 2013-12-03 Irdeto Corporate B.V. Exponent obfuscation
US8966285B2 (en) * 2011-01-10 2015-02-24 Apple Inc. Securing implementation of a cryptographic process having fixed or dynamic keys

Also Published As

Publication number Publication date
JP2014180061A (ja) 2014-09-25
JP2011514091A (ja) 2011-04-28
CN102016871A (zh) 2011-04-13
JP6017501B2 (ja) 2016-11-02
US20110116625A1 (en) 2011-05-19
US9710623B2 (en) 2017-07-18
CA2717625C (en) 2018-09-25
WO2009109884A1 (en) 2009-09-11
CA2717625A1 (en) 2009-09-11
KR20100138986A (ko) 2010-12-31
EP2255317B1 (en) 2013-05-15
EP2255317A1 (en) 2010-12-01
CN102016871B (zh) 2017-11-07

Similar Documents

Publication Publication Date Title
KR101639587B1 (ko) 암호 시스템
JP5355554B2 (ja) 暗号用鍵データの更新
US8543835B2 (en) Tamper resistance of a digital data processing unit
JP5688528B2 (ja) 入力に依存する符号化を用いたホワイトボックス暗号システム
CN101536398B (zh) 用于白盒实现的加密方法
EP2252932B1 (en) White-box implementation
US8600047B2 (en) Exponent obfuscation
WO2003065639A2 (en) System and method of hiding cryptographic private keys
JP5496880B2 (ja) データセキュリティ
JP2008141368A (ja) 暗号化装置、データ配信装置及びデータ蓄積装置

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
N231 Notification of change of applicant
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant