KR101657062B1 - 화이트―박스 구현 - Google Patents

화이트―박스 구현 Download PDF

Info

Publication number
KR101657062B1
KR101657062B1 KR1020107021857A KR20107021857A KR101657062B1 KR 101657062 B1 KR101657062 B1 KR 101657062B1 KR 1020107021857 A KR1020107021857 A KR 1020107021857A KR 20107021857 A KR20107021857 A KR 20107021857A KR 101657062 B1 KR101657062 B1 KR 101657062B1
Authority
KR
South Korea
Prior art keywords
values
exponent
white
rti
radix
Prior art date
Application number
KR1020107021857A
Other languages
English (en)
Other versions
KR20100122107A (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 KR20100122107A publication Critical patent/KR20100122107A/ko
Application granted granted Critical
Publication of KR101657062B1 publication Critical patent/KR101657062B1/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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Generation (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

디바이스로 하여금 기수 C 및/또는 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하기 위한 시스템(200)에 있어서, 시스템은 복수의 값들 λi를 확립하기 위한 수단;
Figure 112010063088224-pct00211
을 만족하는 복수의 값들
Figure 112010063088224-pct00212
을 확립하기 위한 수단(202); 값들
Figure 112010063088224-pct00213
의 합이 x와 같음을 만족하는 복수의 값들
Figure 112010063088224-pct00214
을 확립하기 위한 수단(204); 및 디바이스에 복수의 값들
Figure 112010063088224-pct00215
을 제공하기 위한 출력부를 포함한다. 디바이스(250)는 멱법 Cx의 결과를 계산한다. 디바이스는
Figure 112010063088224-pct00216
의 파워에 대한 값들
Figure 112010063088224-pct00217
의 곱을 계산하기 위한 수단(252)을 포함한다. 디바이스는 멱법 Cx의 결과로서 곱을 이용하기 위해 배열된다.

Description

화이트―박스 구현{WHITE-BOX IMPLEMENTATION}
본 발명은 엔티티(entity)로 하여금 멱법(exponentiation)의 결과를 계산할 수 있게 하는 방법에 관한 것이다.
인터넷은 이용자들에게 디지털 콘텐트로의 편리한 액세스를 제공한다. 인터넷을 통해 소비자들에게 콘텐트를 이용할 수 있게 할 수 있는 융통성 때문에, 현재의 경향은 렌더링(rendering)될 미디어 콘텐트를 얻기 위해 인터넷에 액세스하는 능력을 소비자 전자 장치(CE) 제품들에 갖추게 하는 것이다. CE 제품들은 다음으로 국한되는 것은 아니지만 디지털 셋톱 박스들, 디지털 TV들, 게임 콘솔들, PC들, 및 점점 더 늘어나는, PDA들과 같은 휴대 디바이스들, 모바일 전화들, 및 휴대 MP3 플레이어들과 같은 모바일 저장 및 렌더링 디바이스들을 포함한다. 인터넷이 디지털 콘텐트를 분배하기 위한 유일한 매체가 아니다. 예를 들면, 위성, 육상 공중, 및/또는 케이블 네트워크들을 통한 디지털 비디오 브로드캐스트(DVB) 및 디지털 오디오 브로드캐스트(DAB)을 이용한 그외 다른 디지털 콘텐트 분배 채널들이 널리 이용된다. 저작권이 있는 콘텐트에 대해 인터넷 및 그외 디지털 분배 미디어의 이용은 콘텐트 제공업자의 이익을 보장해야 하는 과제를 야기한다. 특히 콘텐트 제공업자들의 저작권과 비즈니스 모델들을 보증하기 위해 기술 수단을 이용할 수 있게 하는 것이 바람직하다. 점점 더, CE 플랫폼들은 적합한 소프트웨어가 로딩된 프로세서를 이용하여 동작된다. 이러한 소프트웨어는 오디오 및/또는 비디오와 같은 디지털 콘텐트의 렌더링(재생)을 위한 기능의 주요 부분을 포함할 수 있다. 재생 소프트웨어의 제어는 콘텐트를 이용할 수 있는 기간 및 조건들을 포함하여 콘텐트 소유자의 이익을 집행하는 하나의 방식이다. 통상적으로 많은 CE 플랫폼들(PC 및 PDA를 제외한)이 폐쇄되도록 이용되나, 요즘에는 점점 더 플랫폼들은 적어도 부분적으로 개방되어 컴퓨터 프로그래머들이 소프트웨어를 검사하여 소프트웨어를 수정할 수 있게 하고 있다. 개인용 컴퓨터들을 포함하는 이러한 개방형 시스템들에서, 일부 이용자들을 콘텐트로의 액세스를 제공하는 하드웨어 및 소프트웨어에 대해 완전히 제어할 수 있을 것으로 추정할 수 있다. 또한, 일부 이용자들은 임의의 콘텐트 보호 메커니즘들을 공격하여 우회할 매우 많은 시간 및 리소스들을 갖고 있을 수 있다. 결국, 콘텐트 제공업자들은 모든 이용자들 또는 디바이스들이 신뢰될 수 있는 것인 아닌 집단에 적대적인 네트워크를 거쳐 콘텐트를 합법적 이용자들에 전달해야 한다.
전형적으로, 디지털 권한 관리 시스템들은 키에 따라 데이터 스트림을 처리하는 블록 암호들에 기초한 암호화 기술을 이용한다. 이러한 콘텐트는 같은 키를 이용하거나 또 다른 키를 이용하여 수신기에 의해 복호화될 수 있다. 소비자 디바이스들에서 이러한 암호들의 구현은 공격자가 키 값을 찾아내기가 더 어렵게 하기 위해 모호하게 만들어질 수 있다. 많은 상이한 종류들의 애플리케이션들을 위해 일반적으로 이용되는 암호들의 예들은 DES, AES, RSA, 및 WO9967918에 개시된 방법이다.
특별한 중대한 데이터가 이러한 이용자들로부터 감추어지게 설계된 소프트웨어 애플리케이션을 화이트-박스 구현(white-box implementation)이라고 한다. 특히, 화이트-박스 구현은 공격자가 소프트웨어 애플리케이션에 이용된 암호화 키들의 값에 대해 알기가 더 어렵게 되도록 설계될 수 있다. 전형적으로, 화이트-박스 구현들은 예를 들면, 디버거(debugger)를 이용함으로써 실행 환경을 완전히 제어할 수 있는 이용자들로부터 암호화 키들과 같은 데이터를 감추려고 한다.
키 핸들링(key handling)에 관련하여, 재생을 위해서 미디어 플레이어는 라이센스 데이터베이스로부터 복호화 키를 검색해야 한다. 이어서 암호화된 콘텐트의 복호화를 위해 메모리 내 어떤 곳에 이 복호화 키를 저장해야 한다. 이것은 공격자에게 키에 공격할 2가지 옵션들을 남겨놓는다. 첫 번째로, 라이센스 데이터베이스 액세스 기능의 역 엔지니어링은 블랙박스 소프트웨어(즉, 공격자가 소프트웨어 기능의 내부 동작들을 이해할 필요가 없다)를 갖게 하여 모든 라이센스 데이터베이스들로부터 자산 키들을 공격자가 검색할 수 있게 할 수도 있을 것이다. 두 번째로, 콘텐트 복호화 동안에 메모리로의 액세스들을 관찰함으로써 자산 키를 검색하는 것이 가능하다. 두 경우에 키는 위태롭게 된 것으로 간주된다.
Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, August 15-16, 2002에서 Stanley Chow, Philip Eisen, Harold Johnson, 및 Paul C. Van Oorschot에 의한 "White-Box Cryptography and an AES Implementation"과, Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, November 18, 2002에서 Stanley Chow, Phil Eisen, Harold Johnson, 및 Paul C. van Oorschot에 의한 "A White-Box DES Implementation for DRM Applications"(이하, 이들 두 간행물들을 총괄하여 "Chow"라 언급될 것이다)은 키의 테이블들의 인코딩의 개개의 단계들이 아니라 구성들을 나타내는 랜덤 전단사들(bijections)과의 조합 및 이를 내장 애플리케이션에 또한 푸시 아웃(push out)함으로써 암호화 경계를 확장함으로써 키를 감추기 위한 의도로 방법들을 개시한다.
Chow에 개시된 기술들은 소프트웨어를 완전히 디버그할 수 있는 사람에게 암호화 키를 노출시킴이 없이 소프트웨어에서 암호화 동작들을 실행하는 것을 가능하게 한다. Chow의 방식에서, 암호화 키는 수학적 연산이 아니라 룩-업 테이블들을 이용함으로써 감추어져, 결국 수학적 연산들의 피연산자들은 그대로 저장될 필요가 없다. 이들 테이블들은 이들을 더 애매모호하게 만들기 위해서 랜덤 전단사들을 이용하여 인코딩될 수 있다. 하나의 테이블의 인코딩은 또 다른 테이블의 인코딩에 의해 원래대로 돌려놓을 수 있거나, 프로그램 내 다른 어떤 곳에서 원래대로 돌려놓을 수도 있다. 그러나, 모든 연산들이 룩-업 테이블에 의해 쉽게 표현되는 것은 아니다.
본 발명의 목적은 엔티티로 하여금 멱법의 결과를 계산할 수 있게 하는 방법을 제공하는 것이다.
광범위한 알고리즘들에 대해 화이트-박스 구현을 생성할 수 있는 것이 잇점이 있을 것이다. 이 문제를 더 잘 해결하기 위해서, 본 발명의 제 1 양태에서, 디바이스로 하여금 기수(base) C 및 지수(exponent) x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하는 방법이 제시되고, 방법은,
멱법의 기수 C와 멱법의 지수 x를 확립하는 단계(102);
r은 정수이고 r ≥ 2인, i = 1, 2,..., r에 대해서, 복수의 값들 λi을 확립하는 단계(104);
i = 1, 2,..., r에 대해서,
Figure 112010063088224-pct00001
을 만족하는 복수의 값들
Figure 112010063088224-pct00002
을 확립하는 단계(106);
i = 1, 2,..., r에 대해서,
Figure 112010063088224-pct00003
을 만족하는 복수의 값들
Figure 112010063088224-pct00004
을 확립하는 단계(108);
디바이스에 복수의 값들
Figure 112010063088224-pct00005
을 나타내는 정보를 제공하는 단계(110);
디바이스에 복수의 값들
Figure 112010063088224-pct00006
을 나타내는 정보를 제공하는 단계(112); 및
디바이스에 의해서
Figure 112010063088224-pct00007
을 계산하는 단계(114)를 포함한다.
P= Cx이기 때문에, 방법은 디바이스가 멱법의 기수 C 및/또는 멱법의 지수 x의 정보를 얻게 할 수 없이 멱법 Cx의 결과를 계산할 수 있게 한다. 이것은 엔티티를 완전히 조사 또는 디버그하는 능력이 있는 공격자에게 기수 또는 지수를 노출시킴이 없이 신뢰되지 않는 엔티티(디바이스)에 멱법을 실행할 수 있게 한다. 기수 및 지수는 기수 및 지수가 평범한 포맷으로 엔티티에 결코 제공되지 않기 때문에, 공격자에게 노출되지 않는다. 엔티티에 제공된 정보가 멱법의 결과를 계산하는데 충분할지라도, 이 정보로부터 기수 및/또는 지수를 계산하기는 어렵거나 불가능하다. 엔티티는 값들
Figure 112010063088224-pct00008
Figure 112010063088224-pct00009
이 제공되는 것만을 필요로 한다. 이들 값들은 멱법의 결과를 계산하는데 충분하다. 그러나, C를 알아내기 위해서는
Figure 112010063088224-pct00010
및 λi의 값들을 알아야 할 것이기 때문에, 이들 값들로부터 C의 값을 알기는 어렵다. 또한, x를 알아내기 위해서
Figure 112010063088224-pct00011
및 λi의 값들을 알아야 할 것이기 때문에, x의 값을 알기가 어렵다. 결국, 복수의 값들 λi이 비밀로 유지된다면, C를 발견하거나 x를 발견하기는 어렵다. C가 공격자에 의해 알려지게 될지라도, x에 대해 알아내기가 여전히 어렵다. 이는 공격자가 x = Clog P 또는, i = 1,2,...,r에 대해서 λi= Clog
Figure 112010063088224-pct00012
를 계산해야 할 것이기 때문이고, 파라미터들 및 대수적 구조들이 어떻게 선택되는가에 따라, 이들 로가리즘들(logarithms)은 계산하기 어려운 것으로 생각된다. 예를 들면, C가 고차의 순환 그룹의 생성자라면 Clog P이 계산하기 어려운 것으로 생각된다. 멱법은 예를 들면, 암호화/복호화 알고리즘들 및 디지털 서명 생성 및/또는 유효화를 포함하는 암호화 알고리즘들에서 이용될 수 있다.
일 실시예에서, 복수의 값들 λi을 확립하는 단계는 지수 x로서 이용될 값들의 세트 V를 확립하고,
Figure 112010063088224-pct00013
이 되도록 값들 W1,W2,...,Wr의 복수의 세트들을 확립하는 단계를 포함한다. 복수의 값들
Figure 112010063088224-pct00014
를 확립하는 단계는 i =1,2,...,r에 대해서,
Figure 112010063088224-pct00015
이 되도록 값들
Figure 112010063088224-pct00016
를 선택하는 단계를 포함한다. 방법은 복수의 값들
Figure 112010063088224-pct00017
를 확립하는 단계, 복수의 값들
Figure 112010063088224-pct00018
를 나타내는 정보를 디바이스에 제공하는 단계, 및 복수의 상이한 값들
Figure 112010063088224-pct00019
에 관하여, 디바이스에 의해서
Figure 112010063088224-pct00020
을 계산하는 단계를 포함한다.
이 실시예는 동일한 기수 값 C을 갖고 효율적인 방식으로 x의 상이한 값들을 효율적으로 이용할 수 있게 한다. 이 일 실시예에서 값들 λi이 선택되는 방식은 세트 V로부터 임의의 지수 x가 λi을 변경함이 없이 이용될 수 있게 한다. 결국,
Figure 112010063088224-pct00021
의 값들은 변경되지 않은 채로 있게 되고, 이들을 다시 계산할 필요가 없다. 이것은 계산 리소스들을 절약한다.
특히 효율적인 일 실시예에서, i = 1, 2,..., r에 대해서, Wi = {0, 1}이다. 이러한 2진 표현은 효율적이고 쉬운 구현을 가능하게 한다. 이것은
Figure 112010063088224-pct00022
의 값들이 효율적으로 결정될 수 있게 한다.
본 발명의 다른 이로운 양태들은 독립 청구항들에 규정된다. 종속 청구항들은 또한 이로운 실시예들을 규정한다.
본 발명의 이들 및 다른 양태들은 도면을 참조하여 더 자세히 설명되고 기술될 것이다.
도 1은 디바이스가 멱법을 계산할 수 있게 하는 방법의 처리 단계들을 도시한 흐름도.
도 2는 데이터 흐름 및 데이터에 작용하는 처리 수단을 도시한 도면.
도 3은 키 생성의 방법을 도시한 흐름도.
도 4는 메시지 암호화 방법을 도시한 흐름도.
도 5는 암호문의 복호화의 방법을 도시한 흐름도.
도 6은 멱법
Figure 112010063088224-pct00023
을 화이트-박스하는 방법을 도시한 흐름도.
도 7은 멱법
Figure 112010063088224-pct00024
을 화이트-박스하는 방법을 도시한 흐름도.
도 8은 암호화 알고리즘의 화이트-박스 구현을 얻는 방법을 도시한 흐름도.
도 9는 복호화 알고리즘의 화이트-박스 구현을 얻는 방법을 도시한 흐름도.
도 10은 일 실시예를 도시한 도면.
화이트-박스 암호는 암호화 알고리즘의 화이트-박스 구현, 즉 이용되는 암호화 키를 공격자가 추출해 내기 어려운 소프트웨어 구현에 적합한 블록 암호이다. 이러한 화이트-박스 구현들은 AES 및 3DES와 같은, 대칭 블록 암호들을 위해 존재하는 것으로 알려져 있다. 그러나, RSA 및 EIGamal과 같은, 화이트-박스 비대칭 암호들에도 흥미가 있을 것이다. 비대칭 암호들에서의 전형적인 연산은 멱법 yx이며, 여기서 y 및 x는 둘 모두 변수 및 상수일 수 있다. 일부 블록 암호들에서, 기수 y는 다소 일정하나 지수 x는 더 자주 변한다. 이러한 블록 암호들(또는 더 일반적으로, 알고리즘들)을 화이트-박스할 때, 지수 x가 효율적으로 변경될 수 있다면 잇점이 있다. 또한, x 값이 감추어질 수 있는 yx의 구현이 제공된다면 잇점이 있을 것이다. 이 텍스트에서는 이들 잇점을 갖는 블록 암호들(또는, 더 일반적으로 알고리즘들)을 화이트-박스하는 방식이 제시된다.
여기에서 제시되는 화이트-박스 구현은 멱법의 표준 구현보다 더 커지게 될 수 있다. 또한, 공격자가 구현을 더 작아지게 하기는 어렵다. 이 속성은 소프트웨어 구현의 무단 카피 또는 분배를 방지하는데 이익이 될 수 있다.
WO 2007/105126은 AES 및 DES와 같은 대칭 블록 암호의 화이트-박스 구현에 주어진 2진 열(string)을 포함시키기 위한 방법 및 시스템을 개시한다. 이 열의 포함은 구현을 플랫폼에 결부시키나 구현을 범죄과학 수사적으로 워터마킹하기 위해 이용될 수 있다. 본 발명에서 기술된 바와 같은 화이트-박스 구현은 멱법 연산의 구현에 주어진 2진 열들을 포함시킬 수 있게 한다.
화이트-박스 구현의 잇점으로서, Chow 등은 화이트-박스 구현이 프로그램의 나머지에 효과적으로 속박될 수 있음을 언급한다. 더 정확하게는, 알고리즘의 입력값들 및/또는 출력값들에 외부 인코딩들을 적용함으로써, 공격자가 소프트웨어 프로그램으로부터 완전한 화이트-박스 구현을 쉽게 이해하고/이해하거나 추출할 수 있는 것이 방지된다. 또한, 이 기술은 이 설명에서 개시되는 바와 같이 멱법의 화이트-박스 구현에 적용될 수 있다.
이 설명에서, 예를 들면, 멱법 yx에서 값 x를 감추기 위한 방식이 개시된다. 여기에서, y는 일정할 수 있고 x는 가변할 수 있으나, 이것은 제한이 아니다. 이 값 x는 멱법을 실행하는 프로그램의 구현에 대해 완전히 제어할 수 있고 이 구현에 완전히 액세스할 수 있는 공격자에게도, 감추어진 채로 있게 된다.
도 1은 디바이스로 하여금 기수 C 및/또는 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하는 방법에 따른 처리 단계들을 도시한 흐름도이다. 도 2는 데이터의 흐름 및 이들 데이터에 작용하는 엔티티들 및 처리 수단을 도시한 도면이다. 도 1의 방법은 도 2를 또한 참조하여 기술될 것이다. 엔티티(250)가 기수 C 및/또는 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하는 방법은 예를 들면, 엔티티(200) 내에서 구현될 수 있다. 바람직하게, 엔티티(200)는 인터넷과 같은 디지털 통신 네트워크를 통해서, 또는 케이블, 공중, 및/또는 위성을 통해 디지털 통신을 이용하여 엔티티(250)를 통해 통신한다. 대안적으로 디지털 메시지들은 예를 들면, CD, DVD, 플래시 메모리 USB-스틱과 같은 착탈가능한 미디어를 통해 분배된다. 엔티티(200)는 하나 이상의 엔티티들(250)에 서비스들을 제공하는 시스템일 수 있다. 이러한 시스템은 단일 서버 컴퓨터일 수 있다. 그러나, 엔티티(200)는 다양한 컴퓨터들 및/또는 디바이스들을 포함하는 시스템일 수 있다. 엔티티(200)는 피어(peer) 엔티티(250)와 통신하는 피어 디바이스 상에 구현될 수도 있는데, 피어들은 시큐어 방식(secure way)으로 정보를 교환하기를 바란다. 엔티티(250)는 디바이스이거나 디바이스 상에서 실행되는데 적합한 소프트웨어 애플리케이션일 수 있다. 이러한 디바이스는 개인용 컴퓨터(PC), 랩탑, 개인 휴대용 정보 단말기(personal digital assistant; PDA), 셋-톱 박스, 디지털 비디오 레코더, 게이밍 콘솔, 등일 수 있다. 적합한 애플리케이션들은 미디어 플레이어들, 웹 브라우저들, 및 시큐어 트랜잭션들을 실행할 수 있는 소프트웨어를 포함한다. 엔티티(250)는 멀티미디어 콘텐트, 예를 들면, 오디오 및/또는 비디오 콘텐트를 처리하기 위해 배열될 수 있다. 엔티티(250)는 이 문서에서 개시된 멱법을 이용하여 오디오 및/또는 비디오 콘텐트를 복호화하기 위한 암호화 유닛을 포함할 수 있다. 엔티티(250)는 또한 메시지들의 지문 또는 서명과 같은 다른 종류들의 암호화 연산들을 실행하기 위해 대안적으로 배열될 수 있다.
방법은 멱법의 기수 C 및 멱법의 지수 x를 확립하는 단계(102)를 포함한다. 이들 값들 C 및 x는 방법이 적용되는 콘텍스트(context)로부터 이어질 수 있다. 예를 들면, C 및 x는 암호화 알고리즘의 상세들 및/또는 이러한 알고리즘에서 이용된 키에 따를 수 있다. 특히, 비대칭 키 암호화 알고리즘들에서, 멱법은 보통 중요한 역할을 한다. C 및 x의 값들은 데이터베이스로부터 검색될 수 있거나 데이터베이스에 저장된 데이터로부터 얻어질 수도 있는데, 예를 들면, 데이터베이스에 저장된 이용자에 대한 키는 C 및/또는 x를 계산하기 위한 입력을 형성할 수도 있다. 또한, C 및/또는 x의 값들은 고정될 수도 있는 반면, 다른 경우들에서 C 및/또는 x는 가변될 수도 있다. C 및/또는 x의 값들은 엔티티(200)에서의 메모리에 저장될 수도 있다.
방법은 r는 정수이고 r ≥ 2 인 i = 1, 2,..., r에 대해서 복수의 값들 λi를 확립하는 단계(104)를 포함한다. 이들 값들 λi은 C 및 x의 값들을 모호하게 하는 방법에서 나중에 이용된다. 값들은 미리 규정된 세트로부터 무작위로 선택될 수 있다. 또한, 큰 값의 r을 선택함으로써 보안이 증가될 수 있을 지라도, 값들 r의 수는 무작위로 선택될 수 있다. 복수의 값들 값들 λi은 엔티티(200)의 메모리에 적어도 일시적으로 저장될 수 있다.
방법은 i = 1,2,...r에 대해서,
Figure 112010063088224-pct00025
를 만족하는 복수의 값들
Figure 112010063088224-pct00026
을 확립하는 단계(106)을 포함한다. 이에 따라 이들 값들
Figure 112010063088224-pct00027
은 λi에 및 C에 종속한다. 이들은 이 기술에 공지된 멱법에 의해 계산될 수 있다. 이러한 멱법 연산은 엔티티(200)의 계산 유닛(202)에서 구현될 수 있고, 이것은 예를 들면, 컴퓨터 프로그램 명령들 및/또는 전자 회로를 포함할 수 있다.
방법은 i = 1,2,...,r에 대해서,
Figure 112010063088224-pct00028
를 만족하는 복수의 값들
Figure 112010063088224-pct00029
를 확립하는 단계(108)을 포함한다. 이에 따라 이들 값들
Figure 112010063088224-pct00030
는 값들 λi 및 x에 종속한다. 이들은 예를 들면, 가우시안 소거를 이용하거나 이 기술에 공지된 1차 방정식들(linear equation)의 해를 구하는 또 다른 방법에 의해 계산될 수 있다. 이 방법의 단계는 엔티티(200)의 또 다른 계산 유닛(204)에서 구현될 수 있다.
방법은 복수의 값들
Figure 112010063088224-pct00031
을 나타내는 정보를 엔티티(250)에 제공하는 단계(110)를 포함한다. 방법은 복수의 값들
Figure 112010063088224-pct00032
을 나타내는 정보를 엔티티(250)에 제공하는 단계(112)를 포함한다. 단계(110) 및 단계(112)에서, 위에서 언급된 통신 링크 및/또는 착탈가능한 미디어가 이용될 수도 있다. 대안적으로, 일부 값들은 엔티티(250)에서의 하드-코딩에 의해 제공될 수도 있다. 예를 들면, 엔티티(250)가 디바이스라면, 값들
Figure 112010063088224-pct00033
은 제조 시간 동안, 디바이스의 판독-전용 메모리에 저장될 수 있을 것이다. 값들이 수시로 대체되어야 한다면, 값들은 예를 들면, 펌웨어에 저장될 수 있다. 값들
Figure 112010063088224-pct00034
은 소프트웨어 애플리케이션에서 하드-코딩될 수도 있다. 값들
Figure 112010063088224-pct00035
은 엔티티(250)에 (반)영구적으로 저장될 수 있으나 많은 애플리케이션들에서 x는 매우 자주 변하며(예를 들면, 송신될 메시지에 따른다) 이러한 경우에 값들을 네트워크를 통해서 송신하고 이들을 엔티티(250)에서의 랜덤 액세스 메모리에 저장하는 것이 더 효율적일 수 있다.
방법은 엔티티(250)에 의해서,
Figure 112010063088224-pct00036
를 계산하는 단계(114)를 포함한다. 이 단계는 엔티티(250)에서 구현되며 디바이스에서의 Cx의 계산을 대신한다. C 및 x는 단계(114)에서 노출되지 않기 때문에, 엔티티(250)는 C 및/또는 x를 알지 않고는 Cx의 값을 계산할 수 있다. 이 단계(114)는 계산 유닛(252)에서 구현된다. 계산 유닛(252)는 단계(114)를 실행하기 위한 소프트웨어 모듈 또는 전기 회로를 포함할 수 있다.
방법은 예를 들면, 고정된 C 및 변수 x로 하여 이용될 수도 있다. 이를 위해서, 복수의 값들(λi)을 확립하는 단계(104)는 지수 x로서 이용될 값들의 세트(V)를 확립하고,
Figure 112010063088224-pct00037
이게 하는 값들 W1,W2,..., Wr의 복수의 세트들을 확립하는 단계를 포함한다. 복수의 값들
Figure 112010063088224-pct00038
를 확립하는 단계(108)는 i = 1, 2,..., r에 대해서,
Figure 112010063088224-pct00039
이 되도록 하는 값들
Figure 112010063088224-pct00040
을 선택하는 단계를 포함한다.
Figure 112010063088224-pct00041
의 상이한 값들을 이용하기 위해서,
Figure 112010063088224-pct00042
의 이들 상이한 값들에 관하여 다음 단계들이 실행된다: 복수의 값들
Figure 112010063088224-pct00043
을 확립하는 단계(108), 복수의 값들
Figure 112010063088224-pct00044
을 나타내는 정보를 디바이스에 제공하는 단계(112), 및 복수의 상이한 값들
Figure 112010063088224-pct00045
에 관하여, 디바이스에 의해 P를 계산하는 단계(114).
Figure 112010063088224-pct00046
이기 때문에, 임의 값
Figure 112010063088224-pct00047
Figure 112010063088224-pct00048
이 되도록 하는
Figure 112010063088224-pct00049
을 적합하게 선택함으로써 표현될 수 있다.
바람직하게, C는 승군(multiplicative group) G의 엘리먼트이며, C는 차수가 q이며, 이것은 q가 Cq = 1이 되도록 하는 가장 작은 양의 정수임을 의미한다. 또한, 바람직하게, C 및 G는 q가 충분히 크게 되도록 선택된다. 특히 q는 Clog x의 계산을 계산하기를 충분히 어렵게 한다면 충분히 크다. 계산하기가 충분히 어렵게 하는 정도를 결정할 때, 공격자가 이용할 수 있을 계산 리소스들의 량을 고려해야 한다. 예를 들면, q는 1024 비트 수이며, 예를 들면, q > 21023이다.
일 실시예에서, i = 1,2,..., r에 대해서, Wi = {0,1}이다. 이것은 예를 들면,
Figure 112010063088224-pct00050
의 적합한 값들을 찾는 것을 더 쉽게 하기 때문에, 방법을 특히 실현하기 쉽게 하고 및/또는 더 효율적이게 할 수 있는 2진 해결책이다.
일 실시예에서, 암호의 키는 예를 들면, 무작위 생성에 의해서, 또는 데이터베이스로부터 키를 검색함으로써 확립되고, 키는 엔티티(250)에 의해 이용되어야 한다. 그러나, 엔티티(250)에게 키에 대해 분명하게 알려주는 것은 바람직하지 않다. 그 다음, 방법은 엔티티(200)가 키에 따라 기수 C를 확립하고
Figure 112010063088224-pct00051
의 적합한 값들을 제공하는 단계를 포함한다. 메시지들은 암호화되고 엔티티(250)가 메시지를 복호화하기 위해 Cx를 계산할 필요가 있는 메시지에서의 지수 x의 임의의 발생은
Figure 112010063088224-pct00052
의 적합한 값들에 의해 대체된다. 결과적인, 암호화된 메시지는 엔티티(250)에 제공된다. 이것은 키에 대해 알지 않고도, 특히 C의 값을 알지 않고도, 암호의 멱법 연산에서 엔티티(250)가 기수 C와 지수 x를 이용할 수 있게 한다.
동일한 기수 C와 동일한 지수 x를 갖는 멱법 Cx를 실행해야 하는 복수의 엔티티들(250)이 있을 수 있다. 그러나, 각각의 상이한 엔티티(250)는 이 특정 엔티티(250)를 위해 의도된 데이터만을 처리할 수 있는 것이 바람직할 수 있다. 또한, 각각의 엔티티(250)는 소프트웨어 코드 및/또는 엔티티(250)에 포함되거나 저장된 데이터에 의해 고유하게 식별가능한 것이 바람직할 수 있다. 이를 위해서, 방법은 상이한 복수의 값들 λi 및/또는 상이한 값들 r을 선택하는 단계를 추가로 포함할 수 있다. 그 다음, 이들 상이한 복수의 값들은 상이한 디바이스들에 관하여, 그러나 C 및 x의 동일한 값들로 이용될 수 있다.
엔티티(250)는 복수의 값들
Figure 112010063088224-pct00053
중 적어도 일부를 나타내는 정보 및/또는 복수의 값들
Figure 112010063088224-pct00054
중 적어도 일부를 나타내는 정보를 수신하기 위해 예를 들면, 통신 링크 또는 착탈가능한 미디어를 통한 입력부를 갖는다. 이들 복수의 값들의 일부 또는 전부는 예를 들면, 1회 구성 절차에 의해서 또는 제조시 하드-와이어링(hard-wiring)에 의해 엔티티(250)에 저장될 수도 있다.
사전에 엔티티(250)에 저장되지 않은 복수의 값들
Figure 112010063088224-pct00055
Figure 112010063088224-pct00056
의 일부가 엔티티(200)에 의해 제공될 수 있다. 대안적으로, 값들
Figure 112010063088224-pct00057
Figure 112010063088224-pct00058
의 일부 또는 전부는 값 제공기(254)에 의해 제공된다. 값 제공기(254)는 예를 들면, 디바이스의 하드웨어 식별기, 생체 측정, 및/또는 이용자에 의해 입력된 패스워드를 액세스한다. 그 다음, 값 제공기(254)는 직접, 또는 데이터에 대한 변환을 실행한 후에, 값들
Figure 112010063088224-pct00059
Figure 112010063088224-pct00060
의 일부 또는 전부로서 결과적인 데이터를 이용한다.
엔티티(250)는 비대칭 암호에 따라 암호화 연산을 실행하기 위한 암호화 유닛을 포함할 수 있고, 암호화 연산은 멱법 Cx를 수반하며, 암호화 연산을 실행하기 위한 수단은 멱법 Cx의 결과로서 P를 이용하기 위해 배열된다.
엔티티(250)는 복수의 값들
Figure 112010063088224-pct00061
중 적어도 일부 및/또는 복수의 값들
Figure 112010063088224-pct00062
중 적어도 일부를 나타내는 암호화된 정보를 엔티티(200)로부터 수신하기 위해 배열된 입력부를 가질 수 있다. 이 경우 암호화 유닛은 복수의 값들
Figure 112010063088224-pct00063
중 적어도 일부 및/또는 복수의 값들
Figure 112010063088224-pct00064
중 적어도 일부를 각각 획득하기 위해 암호화된 정보를 복호화하기 위해 제공된다.
도 10은 엔티티(250)로서 작용할 수 있는 하드웨어 유닛의 블록도이다. 도면은 프로세서(1002), 프로세서(1002)로 하여금 여기 개시된 방법들 중 적어도 하나의 방법을 실행하게 하기 위한 명령들을 포함하는 컴퓨터 프로그램 제품을 저장할 수 있는 메모리(1006)을 도시한다. 유닛은 예를 들면, 버튼들, 터치 스크린, 또는 원격 제어 디바이스인 이용자 입력부(1004) 및 예를 들면, 디지털 권한 관리를 이용하여 보호되는 영화를 시작하거나, 암호화된 및/또는 디지털로 서명된 이메일 메시지를 작성하여 송신하는 이용자 상호작용을 위해 필요한 기능들을 제공하기 위한 디스플레이(1012)를 포함한다. 또한 디스플레이(1012)는 비디오를 재생하기 위해(오디오 스피커들과 조합하여) 이용될 수도 있다. 통신 포트(1008)는 위에 논의된 디지털 네트워크에 연결하고/연결하거나 착탈가능한 미디어(1010)의 리더/라이터(reader/writer)가 제공된다.
유사한 하드웨어 방식은 또한 엔티티(200)를 구현하기 위해 이용될 수 있다. 이 도면은 엔티티(200) 또는 엔티티(250)을 위한 적합한 하드웨어 구조의 일례일 뿐이며 다른 아키텍처들(architectures)이 똑같이 적합할 수 있다. 엔티티(200)는 복수의 서버들을 포함하는 서버 시스템일 수 있고, 각각의 서버는 도 10과 유사한 아키텍처를 가질 수 있다. 대개는 키 생성(기수 C가 생기게 하는) 및 메시지 암호화(지수 x가 생기게 하는)가 엔티티(200)의 서버 시스템의 상이한 서버들에서 행해진다. 키 및/또는 기수 C가 생성되는 동일한 서버 상에서
Figure 112010063088224-pct00065
의 값들을 계산하는 것이 실제적일 수 있다. 마찬가지로, 메시지가 암호화되고/암호화되거나 지수 x가 생성되는 동일 서버에서 값들
Figure 112010063088224-pct00066
을 계산하는 것이 실제적일 수 있다. λi의 값들의 생성은 예를 들면, 최소한으로 자수 업데이트하는 것을 필요로 하는 값들을 가진 서버 상에서 실행될 수 있는데 이 서버는 키 및/또는 기수 C를 생성한다. 그러나, 작업들은 하나 이상의 컴퓨터들에 임의의 방식으로 구분될 수 있다.
본 발명은 그룹들로 제한되는 것은 아니지만 H를 차수 n의 그룹으로 놓는다. 이 그룹으로부터 하나의 엘리먼트를
Figure 112010063088224-pct00067
라 하고, x를 정수들의 서브세트(V)에 대해 변수로 놓는다. 다음에서, 다음의 값을 계산할 때 화이트-박스 공격으로부터 C 및/또는 x의 정확한 값들을 어떻게 감추는가를 보인다.
Cx (1)
λ1, λ2,..., λr를 정수값들의 컬렉션(collection)이라 놓고 W1, W2,..., Wr을 정수들의 세트들이라 놓는다. 또한, 다음과 같이 이들 값들의 스팬(span)을 V라 놓는다.
Figure 112010063088224-pct00068
또한, V로부터 엘리면트 v에 대해서 fi(v)를 팩터 wi로서 규정하며 이를 λi에 곱하여 v, 즉
Figure 112010063088224-pct00069
을 획득한다.
1<= i <= r인 각각의 i에 대해서,
Figure 112010063088224-pct00070
라 규정한다.
그러면, (1)은 다음과 같이 계산될 수 있다.
Figure 112010063088224-pct00071
(2)
Cx가 이 방식으로 구현된다면, 구현은 x 대신에 입력으로서 f(x)=(f1(x),f2(x),...,fr(x))을 이용하는 것에 유의한다. 즉, 입력 x가 인코딩된다. 즉, 입력 f(x)는 x를 나타내지만 f(x)로부터 x의 실제값을 얻기는 어렵다. f(x) 및
Figure 112010063088224-pct00072
을 화이트-박스 구현에 제공함으로써, 화이트-박스 구현은 식(2)을 이용하여 Cx를 계산할 수 있게 된다. x를 명백하게 제공하는 것이 필요하지 않기 때문에, x의 값은 화이트-박스 구현의 공격자에겐 숨겨진 채로 있을 수 있다.
값들 λi이 공격자에게 알려지지 않는다면, 공격자가 C 값 및 x 값을 얻기가 어려울 수 있음을 보일 수 있다. 또한, 값들 λi은 모르고 C는 안다고 해도, 특히 H 및/또는 C가 Clog P를 계산하기 어렵게 되도록 선택된다면, x를 얻기는 여전히 어렵다. 예를 들면, H가 충분히 큰 순환 그룹이고 C가 이 그룹의 생성자라면, 로가리즘 Clog P를 계산하기는 어렵다. 로가리즘은 C의 차수가 충분히 크다면 계산하기 어려우며, C의 차수는 Cq = 1인 최소 양의 정수 q이다. 로가리즘을 계산하기 어려운 다른 예들은 당업자들에게 명백할 것이며, 이 속성은 여기 제시된 방법에 따라 멱법을 적용하는 잇점을 위해 이용될 수 있다.
(1)에서 x의 정확한 값을 감추는 것 외에도, 멱법의 제시된 화이트-박스 구현은 2진 열을 파라미터들에 포함시킬 수 있게 하는 속성이 있다. 예를 들면, 값 λi을 변경함으로써, 값
Figure 112010063088224-pct00073
도 변한다. 이 속성은 값들
Figure 112010063088224-pct00074
중 적어도 하나의 값에 특정 2진 열(예를 들면, 하드웨어 식별자로부터, 또는 컴퓨터 실행가능한 코드의 부분으로부터 얻어질)을 포함시키기 위해 이용될 수 있다. 이것은
Figure 112010063088224-pct00075
의 일부만이 예를 들면, 시큐어 서버를 통해 화이트-박스 구현에 제공되는 화이트-박스 구현을 허용할 것이며, 적어도 하나의
Figure 112010063088224-pct00076
중 적어도 일부는 화이트-박스 구현에 의한 실행 환경으로부터 추출된다. 이것은 타겟 실행 환경에 의해서만 이용될 수 있고
Figure 112010063088224-pct00077
이 의도되었던 실행 환경 밖에서는 쓸모없는
Figure 112010063088224-pct00078
의 세트를 제공하도록 허용할 것이다.
또한, 일부 λ'1, λ'2,..., λ't에 대한 함수 f'에 따라 변환되었던 값들 f'(x)를 주변 프로그램에 수신되도록 놔둠으로써 멱법 연산의 화이트-박스 구현을 주변 프로그램에 결부시키는 것이 가능하다. 그 다음, 주변 프로그램은 λ1, λ2,..., λr(t는 r과 같을 필요가 없다)에 기초하여 수신된 값들 f'(x)를 대응하는 값들 f(x)로 변환하고, 상기 후자의 값들 f(x)에 기초하여 멱법 연산을 실행한다. 더 일반적으로, 화이트-박스 구현으로의 입력은 x의 어떤 인코딩된 버전 g(x)을 포함할 수 있는데, 화이트-박스 구현은 멱법을 적용하기 전에 g(x)를 f(x)로 변환한다. 공격자는 지수 x 및/또는 기수 C에 관한 정보를 획득하기 위해서, 화이트-박스 구현 뿐만 아니라, 이 변환도 필요로 한다. 화이트-박스 구현은 하나 이상의 값들
Figure 112010063088224-pct00079
을 어떤 비밀값으로 곱하고 이 연산을 프로그램 내 다른 어떤 곳에서 원래대로 되돌림으로써 주변 프로그램에 속박될 수 있다.
이하, 상세한 실시예가 개시될 것이다. 이 실시예는 ElGamal 공개 키 암호의 일반화에 기초한다. ElGamal 공개 키 암호는 이 기술에 공지되어 있다. 간략히, 이것은 다음과 같이 기술될 수 있다.
키 생성:
생성자
Figure 112010063088224-pct00080
로 n 차수의 순환 그룹 G를 선택한다. 이러한 그룹의 일례는 한 승군의 정수들 모듈로(modulo) 큰 소수 p이다.
1 ≤
Figure 112010063088224-pct00081
≤ n-1인 랜덤 정수
Figure 112010063088224-pct00082
를 선택하고 그룹 엘리먼트
Figure 112010063088224-pct00083
를 계산한다
공개 키:
Figure 112010063088224-pct00084
사설 키:
Figure 112010063088224-pct00085
Figure 112010063088224-pct00086
인 메시지의 암호화:
1 ≤ k ≤ n-1인 랜덤 정수 k를 선택하고,
Figure 112010063088224-pct00087
Figure 112010063088224-pct00088
인 그룹 엘리먼트들을 계산한다.
암호문은
Figure 112010063088224-pct00089
에 의해 주어진다.
암호문
Figure 112010063088224-pct00090
의 복호화:
Figure 112010063088224-pct00091
를 계산한다.
메시지 m은
Figure 112010063088224-pct00092
로서
Figure 112010063088224-pct00093
에 의해 주어진다.
도 3 내지 도 5는 본 발명의 일 실시예를 도시한 것이다. 도면들은 비대칭 암호의 화이트-박스 구현을 도시한 것이다. 특히, ElGamal 공개 키 암호의 일반화의 화이트-박스 구현을 도시한 것이다. 그러나, 이 실시예는 단지 일례로서 제공된다. 본 발명은 ElGamal로 제한되거나 비대칭 암호들로 제한되지 않는다. 언급한 바와 같이, 이 일 실시예에서, ElGamal의 일반화의 화이트-박스 구현이 개시된다. 그러나, 이 일반화는 암호의 블랙-박스 보안에 반드시 영향을 미치는 것은 아니다. 즉, 암호는 최소한 오리지널 ElGamal 블록 암호 만큼 안전한 것으로 여겨진다. 일반화된 ElGamal 암호는 다음처럼 규정된다.
키 생성(도 3에서 단계(300)):
생성자
Figure 112010063088224-pct00094
로 차수 n의 순환 그룹 G를 선택한다(단계 302).
1 ≤
Figure 112010063088224-pct00095
≤ n-1인 랜덤 정수
Figure 112010063088224-pct00096
를 선택하고 그룹 엘리먼트들
Figure 112010063088224-pct00097
를 계산한다(단계(304)).
G로부터 {0, 1, 2,..., n-1}로의 함수 g를 선택한다(단계(306)). 강력한 화이트-박스 구현을 할 수 있게 하기 위해서 함수 g는 전단사일 필요는 없으나 이의 범위는 바람직하게는 커야 한다.
공개 키:
Figure 112010063088224-pct00098
, g
사설 키:
Figure 112010063088224-pct00099
단계(308)에서 공개 키 및 사설 키가 저장된다.
Figure 112010063088224-pct00100
인 메시지의 암호화(도 4에서 단계(400)):
1 ≤ kl ≤ n -l인 랜덤 정수 kl을 선택하고,
Figure 112010063088224-pct00101
인 그룹 엘리먼트를 계산한다(단계(402)).
Figure 112010063088224-pct00102
를 규정한다(단계(404)). k2 = 0이면, 상이한 kl을 선택한다(단계(406)).
그룹 엘리먼트
Figure 112010063088224-pct00103
를 계산한다(단계(408)).
암호문이
Figure 112010063088224-pct00104
에 의해 주어진다(단계(410)).
암호문
Figure 112010063088224-pct00105
의 복호화(도 5에서 500):
Figure 112010063088224-pct00106
를 계산한다(단계(502))
Figure 112010063088224-pct00107
Figure 112010063088224-pct00108
를 계산한다(각각, 단계(504) 및 단계(506)).
메시지 m은
Figure 112010063088224-pct00109
에 의해 주어진다(단계(508)).
값 k2가 감추어진 멱법 연산들
Figure 112010063088224-pct00110
(단계(408)) 및
Figure 112010063088224-pct00111
(단계(506))의 화이트-박스 구현들을 얻는 것이 가능하다.
도 6은 멱법
Figure 112010063088224-pct00112
를 화이트-박스하는 방식을 도시한 것이다(단계(408)). 도 7은 멱법
Figure 112010063088224-pct00113
를 화이트-박스하는 방식을 도시한 것이다(단계(506)). 화이트-박스하는 이들 방식들은 단지 비-제한적 예들이다. 멱법 연산
Figure 112010063088224-pct00114
이 먼저 기술될 것이다.
Figure 112010063088224-pct00115
을 0과 n-1 사이의 숫자의 2진 표현을 제공하는 비트열의 길이의 추정값이라 놓는다(단계(604)).
k2의 범위에서의 각 값(단계(606)), 즉 1과 n-1 사이의 각 값이
Figure 112010063088224-pct00116
을 갖는
Figure 112010063088224-pct00117
로서 기록될 수 있도록 값들 λ12,...λr 및 W1, W2,...,Wr를 규정한다. 이것은 예를 들면, m = r에 대해서 Wi={0,1} 및 λi= bㆍ2i에 대해 성립하고 b는 1과 n-1 사이에서 무작위로 선택된다. 이것은 함수 f(x)가 일차함수 f(x) = b-1x로서 규정되고 fi(x)가 f(x)의 i번째 비트라면 임의의 x에 대해서
Figure 112010063088224-pct00118
임을 관찰함으로써 알 수 있다.
Figure 112010063088224-pct00119
를 규정하고
Figure 112010063088224-pct00120
Figure 112010063088224-pct00121
에 의해 계산한다(단계(608)). 따라서, 멱법 연산의 화이트-박스 구현은 입력으로서 k2의 인코딩된 버전 f(k2) = b-1k2를 가지며(단계(602))
Figure 112010063088224-pct00122
를 돌려준다(단계(610)).
도 7은 멱법
Figure 112010063088224-pct00123
를 화이트-박스하는 방식을 도시한 것이다. 이것은 단지 비-제한된 예가 되도록 의도된 것이다. 상기 화이트-박스 구현과 구별하기 위해서, 상이한 표기가 이용된다:
Figure 112010063088224-pct00124
가 λi 대신 이용되고 g가 f 대신 이용된다. 세트들 Wi는 화이트-박스 구현들 둘 모두에 대해 동일할 수 있다. 즉, {0,1}일 수 있다.
1과 n-1 사이의 무작위로 선택된 정수 c에 대해
Figure 112010063088224-pct00125
를 규정한다(단계(704)). 또한, 1차 함수 g(x) = c-1x를 규정하고 gi(x)를 g(x)의 i번째 비트라 놓는다(단계(706)). 이로부터 x의 임의의 관계된 값은
Figure 112010063088224-pct00126
로서 표현될 수 있게 된다.
Figure 112010063088224-pct00127
를 규정하고
Figure 112010063088224-pct00128
Figure 112010063088224-pct00129
에 의해 계산한다(단계(708)). 따라서, 화이트-박스 구현은 입력으로서 g(k2) =c-1k2를 가지며(단계(702))
Figure 112010063088224-pct00130
를 돌려준다(단계(710)).
이들 2개의 화이트-박스된 멱법 연산들을 이용하여, 예를 들면, 일반화된 ElGamal 암호의 암호화 및 복호화 연산들의 화이트-박스 구현을 명시하는 것이 가능하다.
도 8은 암호화 알고리즘의 화이트-박스 구현을 획득하는 방법의 일례를 도시한 것이다.
1 ≤ k1 ≤ n-1 인 랜덤 정수 kl을 선택하고(단계(802)), 표준 방식으로(즉, 비-화이트-박스되는 것. 단계(804)) 그룹 엘리먼트
Figure 112010063088224-pct00131
을 계산한다. 그러나, 화이트-박스된 구현도 이용될 수 있다.
Figure 112010063088224-pct00132
또는, 등가적으로,
Figure 112010063088224-pct00133
임이 성립하는데, 이들 값들은 계산될 필요는 없다. 여기에서, f-1은 위에 단계들(404, 502)에서 이용된 함수 g에 대응한다.
Figure 112010063088224-pct00134
이라면(g가 전단사이고 선형일 때 k2 = 0과 등가임), 상이한 k1을 선택한다(단계(806)).
Figure 112010063088224-pct00135
은 표준 방식으로(즉, 비-화이트박스된다. 단계(808)) 계산된다. 그러나, 화이트-박스화된 구현도 이용될 수 있다.
Figure 112010063088224-pct00136
Figure 112010063088224-pct00137
을 통해 계산된다(단계(810)).
Figure 112010063088224-pct00138
임에 유의한다.
단계(808)의 결과를 이용하여, 그룹 엘리먼트
Figure 112010063088224-pct00139
를 계산한다(단계(812)).
암호문이
Figure 112010063088224-pct00140
에 의해 주어진다(단계(814)).
도 9는 복호화 알고리즘의 화이트-박스 구현을 획득하는 방법을 도시한 것이다.
값 c-1ㆍb이 주어진다(단계(902)). 이 값은 합성 함수
Figure 112010063088224-pct00141
을 결정하기 위해 이용된다(단계(904)).
이것은 이 합성 함수를 이용하여
Figure 112010063088224-pct00142
을 계산한다(단계(906)).
Figure 112010063088224-pct00143
은 표준 방식으로(즉, 비-화이트박스된다. 단계(908)) 계산된다. 그러나, 화이트-박스된 구현도 이용될 수 있다.
Figure 112010063088224-pct00144
Figure 112010063088224-pct00145
을 통해 계산된다(단계(910)).
메시지 m이
Figure 112010063088224-pct00146
에 의해 제공된다(단계(912)).
화이트-박스 구현에서, 키는 감추어질 수 있는데 예를 들면, 구현 내에 내장될 수 있고, 이것은 키를 대체하기가 쉽지 않을 수 있다. ElGamal의 일반화된 버전에 관하여 상기 기술된 화이트-박스 구현은 값
Figure 112010063088224-pct00147
및 함수들(g 및 f)이 쉽게 대체되지 않는 방식으로 구성될 수 있다. 또한, 값 "
Figure 112010063088224-pct00148
"이 여전히 쉽게 가변될 수 있는 방식으로 ElGamal의 일반화된 버전에 관하여 상기 기술된 화이트-박스 구현을 구성하기가 쉽다. 이러한 경우에, 도 3에 관하여 기술된, 블록 암호의 키 일반화는 바람직하게는 다음과 같이 배열된다.
값들
Figure 112010063088224-pct00149
, g 및 f은 고정된다.
공개 키:
Figure 112010063088224-pct00150
사설 키:
Figure 112010063088224-pct00151
Figure 112010063088224-pct00152
를 변경함으로써, 일반적으로 값
Figure 112010063088224-pct00153
도 변할 수 있다. 그러므로, 하나의 세트의 m 디바이스들이 주어지고 제안된 화이트-박스 구현을 이들 디바이스들 각각에 결부시키는 것이 요망된다면, 이것은 다음 방식으로 달성될 수 있다. 1 ≤ i ≤ r인 어떤 i에 대해서,
Figure 112010063088224-pct00154
의 m 개의 상이한 각각의 값들을 선택하고, m개의 각각의 연관된 값들
Figure 112010063088224-pct00155
을 계산하고 이들 m개의 각각의 연관된 값들
Figure 112010063088224-pct00156
을 예를 들면, 각각의 디바이스들의 하드웨어 식별자를 각각의 연관된 값들
Figure 112010063088224-pct00157
로 설정함으로써(또는 이들에 따라서) 각각의 m개의 디바이스들에 할당한다.
화이트-박스 구현에, 특히 디바이스에 대한
Figure 112010063088224-pct00158
및/또는
Figure 112010063088224-pct00159
의 표현에 주어진 열을 포함시키기 위해서, 다음처럼 진행할 수도 있다. 32-비트 비트열 s을 구현에 포함하도록 의도함을 가정한다. 특히,
Figure 112010063088224-pct00160
의 표현으로서 이 비트열을 이용하고자 한다. 그 다음, 예를 들면,
Figure 112010063088224-pct00161
의 첫번째 32 비트들이 s에 의해 주어지는 확률은
Figure 112010063088224-pct00162
가 무작위로 선택된다면 아마도 약 1/232가 될 것이다. 따라서, 시행착오 방식(trial-and-error approach)을 이용함으로써, 아마도 많아야 232번의 시도 후에
Figure 112010063088224-pct00163
의 첫번째 32 비트들이 비트열 s과 매칭(matching)함을 발견할 수 있다. 이러한 특징은 예를 들면, 타겟 디바이스 상에는 존재하고 바람직하게는 대부분의 또는 다른 모든 디바이스들 상에는 존재하지 않는 것으로 알려진 일부 열을 제거함으로써,
Figure 112010063088224-pct00164
및/또는
Figure 112010063088224-pct00165
을 나타내는 데이터를 특정한 타겟 디바이스에 결부시키기 위해 이용될 수 있다. 예를 들면, 어떤 열은 MAC 주소, 하드 디스크 ID, 또는 또 다른 종류의 하드웨어 식별자에 기초할 수도 있을 것이다. 또한, 열은 기계 이름에 기초할 수도 있다.
Figure 112010063088224-pct00166
및/또는
Figure 112010063088224-pct00167
을 나타내는 데이터를 특정 사람에게 결부시키기 위해서, 어떤 열은 예를 들면, 이용자 ID 또는 패스워드 또는 생체 측정에 기초할 수도 있을 것이다. 이 열을 나타낸 바와 같이 화이트-박스 구현에 포함시킴으로써, 화이트-박스 구현은 또 다른 디바이스 상에서 또는 또 다른 사람에 의해서 쉽게 이용될 수 없을 수도 있을 것이다.
본 발명은 또한 본 발명을 실행하도록 적응된 컴퓨터 프로그램들, 특히 캐리어 상의 또는 캐리어에서의 컴퓨터 프로그램들로 확장됨을 알 것이다. 프로그램은 소스 코드, 오브젝트 코드(object code), 코드 중간 소스 및 부분적으로 컴파일된 형태와 같은 오브젝트 코드 형태일 수 있거나 본 발명에 따른 방법의 구현에서 이용하기 위해 적합한 임의의 다른 형태일 수 있다. 또한, 이러한 프로그램은 많은 상이한 구조적 설계들을 가질 수 있음을 알 것이다. 예를 들면, 본 발명에 따른 방법 또는 시스템의 기능성을 구현하는 프로그램 코드는 하나 이상의 서브루틴들로 세분될 수 있다. 기능성을 이들 서브루틴들 간에 분배하기 위한 많은 상이한 방식들이 당업자에게 명백할 것이다. 서브루틴들은 독립형 프로그램을 형성하기 위해 하나의 실행가능한 파일에 함께 저장될 수 있다. 이러한 실행가능한 파일은 컴퓨터 실행가능한 명령들, 예를 들면, 프로세서 명령들 및/또는 해석기 명령들(예를 들면, 자바 해석기 명령들)을 포함할 수 있다. 대안적으로, 서브루틴들 중 하나 이상 또는 전부가 적어도 하나의 외부 라이브러리 파일에 저장되어 주 프로그램에 예를 들면, 런-타임시에 정적으로 또는 동적으로 링크될 수 있다. 주 프로그램은 서브루틴들 중 적어도 하나의 서브루틴으로의 적어도 하나의 호를 포함한다. 또한, 서브루틴들은 서로에 대한 기능 호들을 포함할 수 있다. 컴퓨터 프로그램 제품에 관한 일 실시예는 개시된 방법들 중 적어도 하나의 방법의 처리 단계들 각각에 대응하는 컴퓨터 실행가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고/세분되거나 정적으로 또는 동적으로 링크될 수 있는 하나 이상의 파일들에 저장될 수 있다. 컴퓨터 프로그램 제품에 관한 또 다른 실시예는 개시된 시스템들 및/또는 제품들 중 적어도 하나의 수단 각각에 대응하는 컴퓨터 실행가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고/세분되거나 정적으로 또는 동적으로 링크될 수 있는 하나 이상의 파일들에 저장될 수 있다.
컴퓨터 프로그램의 캐리어는 프로그램을 포함할 수 있는 임의의 엔티티 또는 디바이스일 수 있다. 예를 들면, 캐리어는 ROM과 같은, 저장 매체로서 예를 들면, CD ROM 또는 반도체 ROM, 또는 자기 기록 매체로서 예를 들면, 플로피 디스크 또는 하드 디스크를 포함할 수 있다. 또한, 캐리어는 전기적 또는 광학적 케이블을 통해서 또는 라디오 또는 다른 수단에 의해 전달될 수 있는 전기적 또는 광학적 신호와 같은 전송가능한 캐리어일 수 있다. 프로그램이 이러한 신호로 구현될 때, 캐리어는 이러한 케이블 또는 다른 디바이스 또는 수단에 의해 구성될 수 있다. 대안적으로, 캐리어는 프로그램이 임베딩(embedding)된 집적 회로일 수 있고, 집적 회로는 관계된 방법을 실행하거나, 이 방법의 실행에서 이용하기 위해 적응된다.
"난수들(random numbers)"이라는 어떤 언급은 확정적 알고리즘들에 의해 생성되는 것들과 같은 의사-난수들을 포함하는 것으로서 해석되어야 한다.
상기 언급된 실시예들은 본 발명을 제한하기 보다는 예시하는 것이며 당업자들은 첨부된 청구항들의 범위 내에서 많은 대안적인 실시예들을 설계할 수 있을 것임에 유의한다. 청구항들에서, 괄호들 사이의 임의의 참조 부호들은 청구항을 제한하는 것으로 해석되지 않아야 한다. "포함하다(comprise)"라는 동사의 이용은 청구항에 언급된 것들 외의 엘리먼트들 또는 단계들의 존재를 배제하는 것이 아니다. 엘리먼트 앞의 부정관사("a" 또는 "an")는 이러한 복수의 엘리먼트들의 존재를 배제하지 않는다. 본 발명은 몇 개의 구별되는 엘리먼트들을 포함하는 하드웨어에 의해, 및 적합하게 프로그래밍된 컴퓨터에 의해서 구현될 수 있다. 몇 개의 수단들을 나열한 디바이스 청구항에서, 이들 수단들 중 몇몇은 하나 및 동일한 아이템의 하드웨어에 의해 구현될 수 있다. 어떤 매저들(measures)이 상호 상이한 종속 청구항들에서 인용되었다는 단순한 사실은 이들 매저들의 조합이 잇점이 있게 이용될 수 없다는 것을 나타내는 것은 아니다.
200, 250: 엔티티 204, 252: 계산 유닛
254: 값 제공기 1002: 프로세서
1004: 이용자 입력부 1006: 메모리
1008: 통신 포트 1010: 착탈가능한 미디어
1012: 디스플레이

Claims (16)

  1. 멱법(exponentiation)의 화이트-박스 구현에 의해 디바이스(250)로 하여금 기수(base) C 및 지수(exponent) x를 가지는 상기 멱법 Cx의 결과를 계산할 수 있게 하는 방법에 있어서,
    적어도 하나의 컴퓨팅 디바이스를 포함하는 시스템(200)에 의해, 상기 멱법의 기수 C 및 상기 멱법의 지수 x를 확립하는 단계(102);
    상기 시스템에 의해, r은 정수이고 r ≥ 2인, i = 1, 2,..., r에 대해서, 복수의 값들 λi을 확립하는 단계(104);
    상기 시스템에 의해, i = 1, 2,..., r에 대해서,
    Figure 112015058709784-pct00228
    을 만족하는 복수의 값들
    Figure 112015058709784-pct00229
    을 확립하는 단계(106);
    상기 시스템에 의해, i = 1, 2,..., r에 대해서,
    Figure 112015058709784-pct00230
    을 만족하는 복수의 값들
    Figure 112015058709784-pct00231
    을 확립하는 단계(108);
    상기 시스템에 의해, 상기 디바이스에 상기 복수의 값들
    Figure 112015058709784-pct00232
    을 나타내는 정보를 제공하는 단계(110);
    상기 시스템에 의해, 상기 디바이스에 상기 복수의 값들
    Figure 112015058709784-pct00233
    을 나타내는 정보를 제공하는 단계(112); 및
    상기 디바이스에 의해 화이트-박스 공격으로부터 상기 기수 C 및 상기 지수 x 중 적어도 하나의 정확한 값들을 숨기는
    Figure 112015058709784-pct00234
    을 계산하는 단계(114)를 포함하는, 디바이스로 하여금 기수 C 및 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하는 방법.
  2. 제 1 항에 있어서,
    상기 복수의 값들 λi을 확립하는 단계는 상기 지수 x로서 이용될 값들의 세트(V)를 확립하고
    Figure 112010064733806-pct00268
    이도록 복수의 값들(W1, W2,...Wr)의 세트들을 확립하는 단계를 포함하고;
    상기 복수의 값들
    Figure 112010064733806-pct00269
    을 확립하는 단계는 i = 1, 2,..., r에 대해서,
    Figure 112010064733806-pct00270
    가 되도록 값들
    Figure 112010064733806-pct00271
    을 선택하는 것을 포함하고;
    상기 방법은 상기 복수의 값들
    Figure 112010064733806-pct00272
    을 확립하는 단계, 상기 복수의 값들
    Figure 112010064733806-pct00273
    을 나타내는 상기 정보를 상기 디바이스에 제공하는 단계, 및 복수의 상이한 값들
    Figure 112010064733806-pct00274
    에 관하여, 상기 디바이스에 의해 계산하는 단계를 실행하는 단계를 포함하는, 디바이스로 하여금 기수 C 및 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하는 방법.
  3. 제 2 항에 있어서,
    i = 1, 2,..., r에 대해서, Wi = {0, 1}인, 디바이스로 하여금 기수 C 및 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하는 방법.
  4. 제 1 항에 있어서,
    상기 시스템에 의해, 암호의 키를 확립하는 단계로서, 상기 키는 암호화 연산을 실행하기 위해 상기 디바이스에 의해 이용되어야 하는, 상기 암호의 키를 확립하는 단계; 및
    상기 시스템에 의해, 상기 키에 따라 상기 기수 C를 확립하는 단계를 추가로 포함하는, 디바이스로 하여금 기수 C 및 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하는 방법.
  5. 제 1 항에 있어서,
    상기 시스템에 의해, 상이한 디바이스들에 관하여 이용될 상이한 복수의 값들 λi 및 상이한 값들 r 중 적어도 하나를 선택하는 단계; 및
    상기 상이한 디바이스들에 관하여, 상기 기수 C 및 상기 지수 x에 대한 동일한 값들을 이용하고, 상기 상이한 복수의 값들 λi 및 상기 상이한 값들 r 중 적어도 하나를 이용하여 상기 복수의 값들
    Figure 112015058709784-pct00242
    을 확립하는 단계, 상기 복수의 값들
    Figure 112015058709784-pct00243
    을 확립하는 단계, 상기 복수의 값들
    Figure 112015058709784-pct00244
    을 나타내는 정보를 상기 디바이스에 제공하는 단계, 상기 복수의 값들
    Figure 112015058709784-pct00245
    을 나타내는 정보를 상기 디바이스에 제공하는 단계, 및 상기 디바이스에 의해서
    Figure 112015058709784-pct00246
    을 계산하는 단계를 실행하는 단계를 추가로 포함하는, 디바이스로 하여금 기수 C 및 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하는 방법.
  6. 기수 C 및 지수 x를 가지는 멱법 Cx의 결과를 계산하기 위해 상기 멱법의 화이트-박스 구현을 포함하는 디바이스(250)에 있어서,
    복수의 값들
    Figure 112015058709784-pct00247
    을 저장하기 위한 메모리,
    복수의 값들
    Figure 112015058709784-pct00248
    을 나타내는 정보를 수신하기 위한 입력부; 및
    Figure 112015058709784-pct00249
    을 계산하기 위한 계산 유닛(252)을 포함하고;
    상기 디바이스는 상기 멱법 Cx의 결과로서 P를 이용하기 위해 배열되고;
    상기 기수 C 및 상기 지수 x 중 적어도 하나의 정확한 값들은 화이트-박스 공격으로부터 숨겨지는, 멱법 Cx의 화이트-박스 구현을 포함하는 디바이스(250).
  7. 제 6 항에 있어서,
    상기 입력부는 또한 상기 복수의 값들
    Figure 112010064733806-pct00250
    중 적어도 일부를 나타내는 정보를 수신하기 위해 배열되는, 멱법 Cx의 화이트-박스 구현을 포함하는 디바이스(250).
  8. 제 6 항에 있어서,
    상기 디바이스의 하드웨어 식별자, 생체 측정, 및 패스워드 중 적어도 하나에 따라 상기 복수의 값들
    Figure 112010064733806-pct00251
    중 적어도 일부를 결정하기 위한 수단(254)를 추가로 포함하는, 멱법 Cx의 화이트-박스 구현을 포함하는 디바이스(250).
  9. 제 6 항에 있어서,
    비대칭 암호에 따라 암호화 연산을 실행하기 위한 암호화 유닛을 추가로 포함하고, 상기 암호화 연산은 상기 멱법 Cx을 포함하고, 상기 암호화 연산을 실행하기 위한 수단은 상기 멱법 Cx의 결과로서 P를 이용하기 위해 배열되는, 멱법 Cx의 화이트-박스 구현을 포함하는 디바이스(250).
  10. 제 6 항에 있어서,
    상기 입력부는 상기 복수의 값들
    Figure 112015058709784-pct00252
    의 적어도 일부 및 상기 복수의 값들
    Figure 112015058709784-pct00253
    의 적어도 일부 중 적어도 하나를 나타내는 암호화된 정보를 수신하기 위해 배열되고, 상기 디바이스는 상기 복수의 값들
    Figure 112015058709784-pct00254
    의 적어도 일부 및 상기 복수의 값들
    Figure 112015058709784-pct00255
    의 적어도 일부 중 적어도 하나를 각각 획득하기 위해 상기 암호화된 정보를 복호화하기 위한 암호화 유닛을 추가로 포함하는, 멱법 Cx의 화이트-박스 구현을 포함하는 디바이스(250).
  11. 제 6 항에 있어서,
    상기 디바이스는 컴퓨터, PDA, 개인용 비디오 레코더, 셋-톱 박스, 또는 게이밍 콘솔(gaming console)을 포함하는, 멱법 Cx의 화이트-박스 구현을 포함하는 디바이스(250).
  12. 제 9 항에 있어서,
    상기 암호화 유닛을 이용하여 오디오 콘텐트 및 비디오 콘텐트 중 적어도 하나를 복호화하기 위한 수단을 추가로 포함하는, 멱법 Cx의 화이트-박스 구현을 포함하는 디바이스(250).
  13. 멱법의 화이트-박스 구현에 의해 디바이스로 하여금 기수 C 및 지수 x를 가지는 상기 멱법 Cx의 결과를 계산할 수 있게 하기 위한 시스템(200)에 있어서,
    상기 멱법의 기수 C 및 상기 멱법의 지수 x를 임시로 저장하기 위한 메모리;
    r은 정수이고 r ≥ 2인, i = 1, 2,..., r에 대해서, 복수의 값들 λi을 저장하기 위한 메모리;
    i = 1, 2,..., r에 대해서,
    Figure 112015058709784-pct00256
    을 만족하는 복수의 값들
    Figure 112015058709784-pct00257
    을 확립하기 위한 계산 유닛(202);
    i = 1, 2,..., r에 대해서,
    Figure 112015058709784-pct00258
    을 만족하는 복수의 값들
    Figure 112015058709784-pct00259
    을 확립하기 위한 계산 유닛(204); 및
    상기 디바이스에 화이트-박스 공격으로부터 상기 기수 C 및 상기 지수 x 중 적어도 하나의 정확한 값들을 숨기는, 상기 복수의 값들
    Figure 112015058709784-pct00260
    을 나타내는 정보 및 상기 복수의 값들
    Figure 112015058709784-pct00261
    을 나타내는 정보를 제공하기 위한 출력부를 포함하는, 디바이스로 하여금 기수 C 및 지수 x를 가지는 멱법 Cx의 결과를 계산할 수 있게 하기 위한 시스템(200).
  14. 멱법의 화이트-박스 구현에 의해 디바이스로 하여금 기수 C 및 지수 x를 가지는 상기 멱법 Cx의 결과를 계산할 수 있게 하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능한 기록매체에 있어서,
    상기 컴퓨터 프로그램은 기계로 하여금:
    상기 멱법의 기수 C를 확립하는 단계(102);
    r은 정수이고 r ≥ 2인, i = 1, 2,..., r에 대해서, 복수의 값들 λi을 확립하는 단계(104);
    i = 1, 2,..., r에 대해서,
    Figure 112015058709784-pct00262
    를 만족하는 복수의 값들
    Figure 112015058709784-pct00263
    을 확립하는 단계(108); 및
    상기 디바이스에 화이트-박스 공격으로부터 상기 기수 C 및 상기 지수 x 중 적어도 하나의 정확한 값들을 숨기는, 상기 복수의 값들
    Figure 112015058709784-pct00264
    을 나타내는 정보를 제공하는 단계(112)를 실행하게 하기 위한 명령들을 포함하는, 컴퓨터 프로그램을 기록한 컴퓨터 판독가능한 기록매체.
  15. 멱법의 화이트-박스 구현에 의해 디바이스로 하여금 기수 C 및 지수 x를 가지는 상기 멱법 Cx의 결과를 계산할 수 있게 하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독가능한 기록매체에 있어서,
    상기 컴퓨터 프로그램은 기계로 하여금:
    상기 멱법의 지수 x를 확립하는 단계(102);
    r은 정수이고 r ≥ 2인, i = 1, 2,..., r에 대해서, 복수의 값들 λi을 확립하는 단계(104);
    i = 1, 2,..., r에 대해서,
    Figure 112015058709784-pct00265
    을 만족하는 복수의 값들
    Figure 112015058709784-pct00266
    을 확립하는 단계(106); 및
    상기 디바이스에 화이트-박스 공격으로부터 상기 기수 C 및 상기 지수 x 중 적어도 하나의 정확한 값들을 숨기는, 상기 복수의 값들
    Figure 112015058709784-pct00267
    을 나타내는 정보를 제공하는 단계(112)를 실행하게 하기 위한 명령들을 포함하는, 컴퓨터 프로그램을 기록한 컴퓨터 판독가능한 기록매체.
  16. 삭제
KR1020107021857A 2008-03-05 2009-02-27 화이트―박스 구현 KR101657062B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP08152276 2008-03-05
EP08152276.5 2008-03-05

Publications (2)

Publication Number Publication Date
KR20100122107A KR20100122107A (ko) 2010-11-19
KR101657062B1 true KR101657062B1 (ko) 2016-09-13

Family

ID=40674101

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107021857A KR101657062B1 (ko) 2008-03-05 2009-02-27 화이트―박스 구현

Country Status (9)

Country Link
US (2) US8670559B2 (ko)
EP (1) EP2252932B1 (ko)
JP (1) JP5599728B2 (ko)
KR (1) KR101657062B1 (ko)
CN (1) CN102067080B (ko)
AT (1) ATE533104T1 (ko)
CA (1) CA2717622C (ko)
TW (1) TW200945097A (ko)
WO (1) WO2009109880A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101095386B1 (ko) * 2010-04-29 2011-12-16 동국대학교 산학협력단 이산화된 카오스 함수를 이용한 암호 시스템
KR101906225B1 (ko) 2011-11-30 2018-12-10 삼성전자 주식회사 복호장치와, 복호장치의 암호문 복호화 방법
EP2803009B1 (en) * 2012-01-09 2019-11-20 Koninklijke Philips N.V. Virtual machine device having key driven obfuscation and method
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
KR101527329B1 (ko) * 2014-09-12 2015-06-09 삼성에스디에스 주식회사 데이터 암호화 장치 및 방법
WO2016050884A1 (en) 2014-09-30 2016-04-07 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
JP2018503113A (ja) * 2014-11-27 2018-02-01 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 難読化された演算を実行するための電子計算装置
BR112017012092A2 (pt) 2014-12-12 2018-01-16 Koninklijke Philips Nv dispositivo e método de geração eletrônicos, e programa de computador
EP3238366B1 (en) 2014-12-22 2019-03-13 Koninklijke Philips N.V. Electronic calculating device
US9906505B2 (en) * 2015-05-08 2018-02-27 Nxp B.V. RSA decryption using multiplicative secret sharing
US20180351918A1 (en) * 2017-06-06 2018-12-06 Nxp B.V. Method for distributing a software application and encryption program for a white-box implementation
KR102602696B1 (ko) * 2017-10-13 2023-11-16 삼성전자주식회사 암호화 장치 및 복호화 장치, 이들의 동작방법
CN108259506B (zh) * 2018-02-08 2019-04-26 上海交通大学 Sm2白盒密码实现方法
KR102319699B1 (ko) 2019-08-02 2021-11-02 국민대학교산학협력단 안티-인버전 함수를 이용한 화이트박스 암호 인코딩 장치 및 방법
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
CN114095148B (zh) * 2021-10-28 2023-09-26 重庆邮电大学 一种基于本地差分隐私保护的白盒密码加密方法
KR20230095750A (ko) 2021-12-22 2023-06-29 국민대학교산학협력단 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치
CN116668007B (zh) * 2023-08-01 2023-10-31 中电信量子科技有限公司 基于白盒sm4算法的加密通信方法、终端及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619393A (ja) * 1992-03-31 1994-01-28 Toshiba Corp 依頼計算装置
EP1038370B1 (en) * 1998-06-25 2006-09-06 Koninklijke Philips Electronics N.V. Synchronous stream cipher
US20030070074A1 (en) * 2000-03-17 2003-04-10 Avner Geller Method and system for authentication
KR100889465B1 (ko) * 2000-07-04 2009-03-20 코닌클리케 필립스 일렉트로닉스 엔.브이. 대칭-키 암호들을 위한 치환-박스
JP2002108210A (ja) * 2000-09-28 2002-04-10 Hitachi Software Eng Co Ltd 依頼計算方法
CA2369304A1 (en) * 2002-01-30 2003-07-30 Cloakware Corporation A protocol to hide cryptographic private keys
KR101089121B1 (ko) * 2005-03-31 2011-12-02 재단법인서울대학교산학협력재단 빠른 집합 검증 방법 및 그 장치
WO2007031894A2 (en) * 2005-09-15 2007-03-22 Koninklijke Philips Electronics N.V. Improved cryptographic method and system
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
WO2007126049A1 (ja) * 2006-04-28 2007-11-08 Panasonic Corporation プログラム難読化システム、プログラム難読化装置及びプログラム難読化方法
US20090119744A1 (en) * 2007-11-01 2009-05-07 Microsoft Corporation Device component roll back protection scheme
US8165286B2 (en) * 2008-04-02 2012-04-24 Apple Inc. Combination white box/black box cryptographic processes and apparatus

Also Published As

Publication number Publication date
EP2252932B1 (en) 2011-11-09
TW200945097A (en) 2009-11-01
JP2011513787A (ja) 2011-04-28
US20110150213A1 (en) 2011-06-23
US20140153716A1 (en) 2014-06-05
CA2717622C (en) 2017-10-17
WO2009109880A1 (en) 2009-09-11
CN102067080B (zh) 2015-01-28
ATE533104T1 (de) 2011-11-15
JP5599728B2 (ja) 2014-10-01
KR20100122107A (ko) 2010-11-19
CA2717622A1 (en) 2009-09-11
CN102067080A (zh) 2011-05-18
EP2252932A1 (en) 2010-11-24
US8670559B2 (en) 2014-03-11

Similar Documents

Publication Publication Date Title
KR101657062B1 (ko) 화이트―박스 구현
KR101580879B1 (ko) 암호 키 데이터를 갱신하는 시스템 및 방법, 서버 시스템, 암호 키 갱신들을 제공하는 방법 및 컴퓨터 판독가능 기록매체
JP5688528B2 (ja) 入力に依存する符号化を用いたホワイトボックス暗号システム
US8543835B2 (en) Tamper resistance of a digital data processing unit
JP5249053B2 (ja) データ処理システムの完全性
KR101639587B1 (ko) 암호 시스템
CN102099780B (zh) 指数模糊
US8023651B2 (en) Block ciphering system, using permutations to hide the core ciphering function of each encryption round
US9025765B2 (en) Data security
Rao et al. A hybrid elliptic curve cryptography (HECC) technique for fast encryption of data for public cloud security
Nithya et al. A Survey on Private Keyword Sorting and Searching Homomorphic Encryption
Dong Efficient Multiplication Architectures for Truncated Polynomial Ring

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant