KR20110014630A - 지수 불명료화 - Google Patents

지수 불명료화 Download PDF

Info

Publication number
KR20110014630A
KR20110014630A KR1020107027196A KR20107027196A KR20110014630A KR 20110014630 A KR20110014630 A KR 20110014630A KR 1020107027196 A KR1020107027196 A KR 1020107027196A KR 20107027196 A KR20107027196 A KR 20107027196A KR 20110014630 A KR20110014630 A KR 20110014630A
Authority
KR
South Korea
Prior art keywords
value
exponent
identifying
index
values
Prior art date
Application number
KR1020107027196A
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 KR20110014630A publication Critical patent/KR20110014630A/ko

Links

Images

Classifications

    • 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/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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7238Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction
    • 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

지수를 불명료하게 하는 방법이 제공된다. 방법은 암호화 프로세스에서 이용될 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1을 성립시키는 값 λ을 식별하는 단계(304)를 포함한다. 방법은 λ보다 큰 불명료한 지수 y를 식별하는 단계(306) 및 불명료한 지수 y를 나타내는 정보를 제공하는 단계(308)를 추가로 포함한다. 방법은 a < λ인 키 값 a를 확립하는 단계, 양의 정수 b를 선택하는 단계, y = a + bλ을 계산하는 단계를 포함한다.

Description

지수 불명료화{EXPONENT OBFUSCATION}
본 발명은 지수 값을 불명료(obfuscate)하게 하는 것에 관한 것이다. 또한, 본 발명은 멱법(exponentiation) 연산을 실행하는 것에 관한 것이다. 또한, 본 발명은 암호화 알고리즘(cryptographic algorithm)의 일부인 멱법에 관한 것이다.
최근에 예를 들면, 인터넷, 브로드캐스트 매체에 의해서, 또는 CD나 DVD와 같은 디지털 데이터 캐리어에 의해서 이용자들은 콘텐트(content)를 디지털 형식으로 점점 더 이용할 수 있게 되었다. 텔레비젼들, 셋톱 박스들, 및 오디오 장비와 같은 소비자 전자장치(CE) 제품들은 이들 디지털 콘텐트들을 렌더링(rendering)하는 디지털 데이터 처리 능력들을 갖추고 있다.
저작권이 있는 콘텐트에 대해 인터넷 및 그외 디지털 분배 미디어의 이용은 콘텐트 제공업자의 이익을 보장해야 하는 과제를 야기하였다. 특히 콘텐트 제공업자들의 저작권과 비즈니스 모델들을 보증하기 위해 기술적 수단을 이용할 수 있게 하는 것이 바람직하다. 점점 더, CE 디바이스들은 적합한 소프트웨어가 로딩된 프로세서를 이용하여 동작된다. 이러한 소프트웨어는 오디오 및/또는 비디오와 같은 디지털 콘텐트의 렌더링(재생)을 위한 기능의 주요 부분을 포함할 수 있다. 재생 소프트웨어의 제어는 콘텐트를 이용할 수 있는 기간 및 조건들을 포함하여 콘텐트 소유자의 이익을 집행하는 한 방법이다. 통상적으로 많은 CE 플랫폼들(PC 및 PDA를 제외한)이 폐쇄되어 이용되나, 요즘에는 점점 더 플랫폼들은 적어도 부분적으로 개방되어 컴퓨터 프로그래머들에게 소프트웨어를 검사하여 소프트웨어를 수정할 수 있게 하고 있다. 개인용 컴퓨터들을 포함한 이러한 개방형 시스템들에서, 일부 이용자들을 콘텐트로의 액세스를 제공하는 하드웨어 및 소프트웨어에 대해 완전히 제어할 수 있을 것으로 추정할 수 있다. 또한, 일부 이용자들은 임의의 콘텐트 보호 메커니즘들을 공격하여 우회할 매우 많은 시간 및 리소스들(resources)을 갖고 있을 수 있다. 결국, 콘텐트 제공업자들은 모든 이용자들 또는 디바이스들이 신뢰될 수 있는 것인 아닌 집단에 적대적인 네트워크를 거쳐 콘텐트를 합법적 이용자들에 분배해야 한다.
합법적 이용자들에게 디지털 콘텐트의 분배를 제어하기 위해 디지털 권한 관리 시스템들이 도입되었다. 전형적으로, 디지털 권한 관리 시스템들은 합법적 이용자들만이 콘텐트를 복호할 수 있게 하는 암호화 기술을 이용한다. 소비자 디바이스들에서 이러한 암호들의 구현은 공격자가 키 값을 찾아내기가 더 어렵게 하기 위해 불명료하게 만들어질 수 있다. 많은 서로 다른 종류들의 애플리케이션들(applications)을 위해 일반적으로 이용되는 암호들의 예들은 DES, AES, RSA, 및 WO9967918에 개시된 방법이다.
키 취급에 관련하여, 재생을 위해서 미디어 플레이어는 라이센스 데이터베이스로부터 복호 키를 가져와야 한다. 이어서 암호화된 콘텐트의 복호를 위해 메모리 내 어떤 곳에 이 복호 키를 저장해야 한다. 이것은 공격자에게 키에 공격할 2가지 선택사항을 제공한다. 첫 번째로, 라이센스 데이터베이스 액세스 기능의 역 엔지니어링은 모든 라이센스 데이터베이스들로부터 자산 키들을 공격자가 취할 수 있게 할 수도 있을 것이다. 두 번째로, 콘텐트 복호 동안에 메모리에 액세스들을 관찰함으로써 자산 키를 취하는 것이 가능하다. 두 경우에 키는 위태롭게 된 것으로 간주된다.
"White-Box Cryptography and an AES Implementation", by Stanley Chow, Philip Eisen, Harold Johnson, and Paul C. Van Oorschot, in Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, August 15-16, 2002, 및 "A White-Box DES Implementation for DRM Applications", by Stanley Chow, Phil Eisen, Harold Johnson, and Paul C. van Oorschot, in Digital Rights Management: ACM CCS-9 Workshop, DRM 2002, Washington, DC, USA, November 18, 2002(이하, 이들 두 간행물들을 총괄하여 "Chow"라 언급될 것이다)은 키의 테이블들의 인코딩을 개개의 단계들이 아니라 구성들을 나타내는 랜덤 전단사들(bijections)에 조합에 의해서 키를 감추게 하고 이를 내장된 애플리케이션에 넣어둠으로써 암호화 경계를 확장한 방법들을 개시한다.
Chow에 개시된 기술들은 소프트웨어를 완전히 디버그(debug)할 수 있는 사람에게 암호화 키를 노출시킴이 없이 소프트웨어로 암호화 동작들을 실행하는 것을 가능하게 한다. Chow의 기법에서, 암호화 키는 수학적 연산이 아니라 룩업 테이블들을 이용함으로써 감추어져, 결국 수학적 연산들의 피연산자들은 그대로 저장될 필요가 없다. 이들 테이블들은 이들을 더 불명료해지게 만들기 위해서 랜덤 전단사들을 이용하여 인코딩(encoding)될 수 있다. 한 테이블의 인코딩은 또 다른 테이블의 인코딩에 의해 원래대로 돌려놓을 수 있고, 또는 프로그램 내 다른 어떤 곳에서 원래대로 돌려놓을 수도 있다. 그러나, 모든 연산들이 룩업 테이블에 의해 쉽게 표현되는 것은 아니다.
더 넓은 범위의 연산들을 불명료하게 하는 방법을 취하는 것이 잇점이 있을 것이다.
이 문제를 더 잘 해결하기 위해서, 본 발명의 제 1 양태에서,
암호화 프로세스에서 멱법의 지수 값들로서 이용될 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1 을 성립시키는 값 λ을 식별하는 단계;
λ보다 큰 불명료한 지수 y를 식별하는 단계; 및
불명료한 지수 y를 나타내는 정보를 제공하는 단계를 포함하는, 지수를 불명료하게 하는 방법이 제시된다.
이에 따라 멱법을 계산하는데 엄격히 필요한 것보다 큰 불명료한 지수 y가 제공된다. 본 발명의 이 면은 λ보다 작은 지수에 대해서, λ보다 크고 멱법을 실행할 때 동일 결과를 주는 대응하는 지수 값들이 존재한다는 통찰을 이용한다. 이 특성을 이용하여, 지수 값은 요망되는 만큼 크게 할 수 있고, 이것은 조사 및 무단 복제에 대해 지수 값을 더욱 불명료해지게 할 수 있기 때문에 잇점이 있다.
멱법 xλ = 1은 유한 대수 구조에서 실행될 수 있고 예를 들면, 모듈로 n이 실행될 수 있으며, 여기에서 대수 구조는 요소들 {0,1,...n-1}을 포함한다.
불명료한 지수 y를 나타내는 정보가 암호화 프로세스에서 이용하기 위해 제공될 수 있다. 예를 들면, 불명료한 지수 y는 암호화 시스템을 포함하는 디바이스에 제공될 수 있다. 불명료한 지수 y를 디바이스에 제공함으로써, 디바이스를 후속되는 멱법 연산들에서 지수 y를 이용하게 할 수 있다. 이러한 암호화 시스템은 예를 들면, RSA와 같은 비대칭 암호를 이행한다. 일 실시예에서, 불명료한 지수 y는 비대칭 암호의 비밀 키에 따른다. 이것은 비밀 키를 더 낫게 보호할 수 있게 한다.
본 발명의 또 다른 양태에서,
x는 n 요소들을 가지는 세트의 요소로서, 멱법의 기수 x를 식별하기 위한 기수 식별 수단;
상기 세트의 모든 요소들
Figure pct00001
에 대해서 λ > 0 및
Figure pct00002
임을 성립시키는 값 λ보다 큰 지수 y를 나타내는 데이터를 식별하기 위한 지수 식별 수단; 및
y의 멱에 대한 x의 결과를 계산하여 멱법의 결과를 얻음으로써 암호화 알고리즘의 적어도 일부를 실행하기 위한 멱승기를 포함하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템이 제시된다.
지수는 이의 크기를 증가시킴으로써 불명료하게 되었다. 이것은 λ보다 작은 임의의 지수
Figure pct00003
에 대해서, λ보다 크고 멱법의 동일 결과를 주는 대응하는 지수 값 y이 발견될 수 있다는 통찰에 기초한다. 결국, 이 큰 값 y는
Figure pct00004
대신 이용될 수 있으면서도 멱법의 동일 결과를 제공할 수 있다. 결국, 멱법은 멱법을 실행하는 디바이스에 비교적 작은 값
Figure pct00005
을 제공함이 없이 실행될 수 있다. y의 비트 표현은 전형적으로
Figure pct00006
의 비트 표현보다 크다. 또한, 이러한 값 y는 예를 들면, 충분히 큰 배수의 λ를 지수
Figure pct00007
에 더함으로써, 임의의 주어진 크기보다 크게 되게 선택될 수 있다. 값 y는 요망되는 만큼 크게 선택될 수 있기 때문에, 이의 대응하는 비트 표현도 멱법의 결과를 변경함이 없이, 요망되는 만큼 크게 될 수 있다. 이것은 값 y을 복사하는 것을 더 어렵게 한다. 이것은 암호에 대한 키에 비트들의 수가 증가될 수 있게 하며, 이것은 암호에 의해 제공된 보안성을 증가시킨다. 멱법에 대한 이러한 수법은 예를 들면, 비대칭 암호의 화이트-박스 구현을 생성하기 위해 채용될 수 있다.
일 실시예에서, 시스템은 지수 값 x에 값 β를 곱하고, 상기 멱법의 결과에 β-y를 곱하기 위한 수단을 포함한다. 이들 2개의 곱셈들은 기수 x의 값들 및 멱법 xy의 결과를 불명료하게 하기 위해 이용될 수 있다. 곱셈들은 멱승기의 입력 및/또는 출력을 모니터함으로써 x 및/또는 xy의 실제 값들을 공격자가 발견하는 것을 방지하기 위해서, 멱법 연산을 이용하는 데이터 처리 시스템의 다른 모듈들 내, 다른 어떤 곳에서 실행될 수 있다.
일 실시예에서, 지수
Figure pct00008
에 더해질 λ의 배수를 적합하게 선택함으로써, 불명료한 지수의 비트 표현에 규정된 비트 스트링 s가 포함될 수 있다. 이것은 패스워드들, 해시 값들, 또는 하드웨어 식별자들과 같은 현존의 정보에 관계된 정보를 지수를 나타내는 정보에 포함시킬 수 있게 한다. 멱법을 실행하는 시스템은 상기 현존 정보에 액세스함으로써 비트 스트링 s를 가져오게 프로그래밍될 수 있다. 지수를 나타내는 정보의 나머지 부분은 예를 들면, 서버에 의해 제공될 수도 있다.
본 발명의 다른 양태들은 독립 청구항들에 규정된다. 종속 청구항들은 잇점있는 실시예들을 규정한다.
본 발명의 이들 및 다른 양태들은 도면을 참조하여 더 자세히 설명되고 기술될 것이다.
도 1은 멱법을 실행하기 위한 시스템의 도면.
도 2는 멱법을 실행하는 프로세스를 도시한 도면.
도 3은 지수 값을 생성하는 프로세스를 도시한 도면.
도 4는 지수 값을 생성하기 위한 시스템을 도시한 도면.
도 5는 하드웨어 아키텍처를 도시한 도면.
암호화 알고리즘의 화이트-박스 구현은 암호화 키가 공격자로부터 감추어질 수 있는 소프트웨어 구현이다. 공격자는 구현에 완전히 액세스할 수 있고 실행환경에 대해 완전히 제어할 수 있는 것으로 가정될 수 있다. 값
Figure pct00009
가 공격자로부터 감추어지게 하여, x를 변수로 해서 멱법
Figure pct00010
을 구현하는 기법이 있다면 잇점이 있을 것이다.
Figure pct00011
가 키로부터 얻어진 이러한 멱법을 RSA가 포함하기 때문에, 이러한 기법은 예를 들면, RSA의 화이트-박스 구현을 얻기 위해 이용될 수 있다.
Chow 등은 대응 블록 암호들 AEC 및 DES에 대한 화이트-박스 구현을 제시한다. Chow 등에 의해 채용된 착안은 다른 대칭 블록 암호들의 화이트-박스 구현들을 얻기 위해 어느 정도는 이용될 수 있다. 그러나, 예를 들면, RSA 및 ElGamal과 같은 비대칭 암호들의 화이트-박스 구현들을 얻기 위해 Chow 등에 개시된 방법들을 이용하기는 어렵다. 본 설명에서는 멱법
Figure pct00012
의 화이트-박스 구현을 얻기 위한 기법이 개시되며, 여기서
Figure pct00013
는 상수일 수 있고 x는 변수일 수 있다. 이러한 멱법은 예를 들면, ElGamal 공개 키 암호에서 일어난다. 가장 빈번히 이용되는 공개 키 암호 RSA도 멱법에 기초한다. 메시지 m의 암호화는 c = me mod n을 계산하는 것에 대응하며, 값들 e 및 n은 공개 키에 의해 주어진다. 암호 텍스트 c의 복호는 m = cd mod n을 계산하는 것에 대응하며, 여기에서 값 d는 비밀 키에 의해 주어지고, 값 n은 소수들 p 및 q에 대한 pㆍq에 의해 주어지며 값 d는 e 및 n의 인수분해로부터 계산될 수 있다. 두 멱법들에서 지수 값은 일정하지 않으나 메시지의 콘텐트들에 따르는 것에 유의한다. 결국, 값
Figure pct00014
가 공격자로부터 감추어지게, x를 변수로 하여 멱법
Figure pct00015
를 구현하는 수법이 필요해진다. 이것은 예를 들면, RSA의 암호화 및 복호측 둘 다의 화이트-박스 구현을 얻을 수 있게 한다. 또한, RSA 서명 수법의 서명 생성 및 서명 검증 루틴들은 이러한 수법에 기초하여 화이트-박스화될 수 있다.
도 1은 멱법을 실행하기 위한 시스템(100)의 실시예를 도시한 것이다. 시스템(100)에 의해 실행되는 멱법은 불명료한 지수를 가질 수 있다. 이러한 시스템은 예를 들면, 디지털 권한 관리(DRM), 또는 암호화 암호화를 이용하여 보호되는 콘텐트를 처리할 수 있는 디바이스에 구축될 수 있다. 예로서의 디바이스들은 음악 플레이어, 셋톱 박스, 디지털 튜너, 디지털 텔레비전, DVD 플레이어이다. 실시예는 멱법의 지수를 비교적 큰 데이터 표현(예를 들면, 상당수의 비트들)에 의해 표현할 수 있게 하며, 이는 시스템을 노출시키려는 사람이 큰 데이터 표현을 작은 데이터 표현으로 대체하는 것을 어렵게 만든다. 시스템은 예를 들면, 소프트웨어에 의해서, 개인용 컴퓨터에 구현될 수도 있다.
시스템은 멱법 연산의 기수를 나타내는 데이터를 수신하기 위한 기수 입력부(108)를 포함할 수 있다. 이 기수 입력부(108)는 예를 들면, 암호화된 콘텐트의 디지털 콘텐트 스트림을 수신하기 위해 배열될 수 있다. 그러나, 이것은 한정이 아니다. 대안적으로, 기수 입력부(108)는 예를 들면, 디지털 서명 데이터를 포함해서, 암호화 트랜잭션 데이터 또는 식별 데이터를 수신하기 위해 배열될 수도 있다. 기수 입력부(108)는 수신된 데이터에 대한 사전-처리 연산들을 실행할 수도 있는데, 예를 들면, 데이터는 파싱(parsing)되고 비암호화된 데이터 부분들은 암호화된 데이터 부분들과는 다르게 취급될 수 있다. 데이터는 예를 들면, 착탈가능한 매체, 하드디스크와 같은 내부 저장 수단, 또는 RAM으로부터, 또는 케이블, 위성(예를 들면, DVB-S를 이용하여), 또는 인터넷과 같은 네트워크 연결로부터 가져올 수 있다. 비암호화된 데이터는 또 다른 모듈(도시되지 않음)에 보내질 수 있다. 암호화된 데이터는 기수 식별 수단(102)에 보내질 수 있다.
기수 식별 수단(102)은 기수 입력부(108)로부터 지수 값 x를 나타내는 데이터를 수신한다. 이 데이터는 멱법의 기수 x를 식별하기 위해 이용된다. 예를 들면, 기수 식별 수단(102)은 이러한 값 x를 기수 입력부(108)로부터 수신한다. 대안적으로, 기수 식별 수단은 지수 값 x을 포함한 데이터 필드를 식별하기 위해 기수 입력부(108)로부터 수신된 데이터를 파싱한다. 지수 값 x는 전형적으로 곱셈 연산이 규정되는, 일반적으로 유한구조인, 대수 구조로부터의 멤버(member)이다. 이 곱셈 연산은 멱법을 실행할 때 적용한다.
시스템은 지수 입력부(110)를 추가로 포함한다. 이 입력부(110)는 기수 입력부(108)와 유사한 방법으로 데이터를 가져온다. 지수 입력부(110)는 이의 입력을 기수 입력부(108)와 동일한 데이터 소스로부터, 또는 다른 데이터 소스로부터 얻을 수 있다. 이것은 애플리케이션에 따른다. 예를 들면, 업데이트된 키들을 수시로 지수 입력부(110)에 보내는 별도의 키 서버가 제공될 수도 있다. 지수 입력부(110)는 몇 가지 사전 처리 단계들을 실행할 수 있고, 이 설명에 기술된 것보다 더 많은 기능을 갖고 있을 수 있다. 그러나, 지수 입력부(110)는 이의 입력에 기초하여 지수에 관계된 데이터를 생성하고, 이 데이터를 지수 식별 수단(104)에 보낸다.
지수 식별 수단(104)은 지수 y를 나타내는 데이터를 식별하기 위해 배열된다. 데이터는 지수 입력부(110)으로부터 및/또는 후술하는 하나 이상의 다른 소스들(112)로부터 수신된 데이터에서 식별될 수 있다. 지수 식별 수단(104)은 식별된 데이터로부터 지수 y의 실체 값을 추출할 수도 있다. 예를 들면, 지수 식별 수단(104)으로부터 수신된 데이터는 규정된 방법으로, 다른 소스(들)(112)로부터 얻어진 데이터와 결합될 수도 있다. 지수 식별 수단(104)은 비교적 큰 지수 값들 y를 식별하기 위해 배열된다. 여기에서는 기수 식별 수단(102)에 의해 식별된 지수 값들 x에 대해서, xλ = 1을 성립시키는 값 λ이 존재하는 것으로 가정된다. 지수 식별 수단(104)은 값 λ보다 큰 지수 값 y을 식별하기 위해 배열된다. 이를 위해서, 큰 지수 값 y를 저장하기 위해서 충분히 큰 저장 위치가 제공될 수 있다. 또한, 식별 수단(104)은 λ보다 큰 지수 y의 값들이 지수 입력부(110) 및/또는 다른 소스(112)로부터 수신될 수 있게 함으로써, 이러한 큰 값들을 수신할 수 있다. 이들 값들 y은 암호화 보안 면에서 지수 값을 크게 하는 것이 잇점이 있을 수 있으므로, λ보다 10 배 이상 클 수도 있다. 식별된 지수 값들 y의 비트 길이도 λ의 비트 길이보다 10배 이상 클 수도 있다.
기수 식별 수단(102)에 의해 식별된 기수 x와 지수 식별 수단(104)에 의해 식별된 지수 y는 멱승기(106)에 제공될 수 있다. 이러한 멱승기는 y의 멱에 대해 지수 값 x를 계산할 수 있다. 이 계산은 공지된 방법으로 실행될 수 있다. 예를 들면, 비교적 큰 지수 값 y을 가진 멱법을 효율적인 방법으로 계산하기 위해, 공지된 제곱 및 곱셈 알고리즘이 채용될 수도 있다. 멱승기(106)는 λ보다 큰 지수 값들 y를 취급하는데에도 적합하다. 멱승기(106)를 이들 큰 지수 값들을 취급하는데 적합하게 하기 위해서, 더 큰 메모리 위치가 이용될 수도 있고 및/또는 큰 지수들 y를 가진 멱법들을 계산하기에 특히 적합한 알고리즘이 채용될 수도 있다. 멱법의 결과, 즉 xy의 결과는 후-처리 유닛(post-processing unit)(114)에 제공되고, 이는 멱법의 결과의 추가 처리를 적용할 수 있다. 이러한 후-처리 유닛(114)는 애플리케이션에 따를 수 있고, 시스템에서 추가 처리를 위해서 멱승기(106)로부터 얻어진 데이터를 준비할 수 있다. 예를 들면, 멱법의 결과가 복호된 멀티미디어 콘텐트를 포함한다면, 이러한 추가 처리는 디스플레이 및/또는 오디오 시스템에 비디오 및/또는 오디오 콘텐트의 렌더링을 포함할 수 있다. 후-처리 유닛(114)는 예를 들면, 이러한 렌더링을 실행하기 위해 시스템의 나머지에 의해 취급될 수 있는 형식으로 멱법 연산의 하나 이상의 결과들을 배열할 수도 있다.
일 실시예에서, 지수 식별 수단(104)에 의해 식별된 데이터는 하나 이상의 값들 y1,...,ym을 나타낼 수 있고, m ≥ 1이며, 멱승기는 값들 y1,...,ym에 따라 복수의 멱법들을 실행하기 위해 배열되며, 복수의 멱법들은 y의 멱에 대한 x의 계산의 중간 단계들을 형성한다. 예를 들면, 데이터는 일련의 하나 이상의 지수들 y1,...,ym,을 나타낼 수 있고, m ≥ l이며, 일련의 지수들의 곱
Figure pct00016
은 y와 같다. 이러한 경우에, 멱승기는 적어도 2가지 서로 다른 방법들로 멱법을 계산할 수 있는데, 첫째는 먼저 y를 얻기 위해서 곱
Figure pct00017
을 계산할 수 있고, 이어서 요망되는 결과를 얻기 위해서 단일 멱법 xy을 실행한다. 이 경우, 비교적 큰 지수 값 y을 가진 멱법이 계산되어야 한다. 두번째로 z1 = x 및
Figure pct00018
에 따라 복수의 멱법들을 계산할 수 있다. 이것은 큰 지수 값을 가진 멱법을 실제로 계산함이 없이 zm +1 = xy이 된다.
일 실시예에서, 기수 입력부(108)에, 또는 기수 입력부(108)에 데이터를 제공하는 시스템의 부분에는 규정된 값 g에 값 β을 곱함으로써 x를 계산하기 위한 수단이 제공된다. 규정된 값 g은 예를 들면, 복호될 암호화된 콘텐트에 따를 수 있다. 이렇게 하여, 시스템, 특히 유닛들(102, 104, 106)의 데이터 흐름들을 모니터할 수 있는 공격자는 값 g를 볼 수 없다. 유사하게, 후-처리 유닛(114)에, 또는 시스템 내 다른 어떤 곳에, 멱법의 결과를 β-y로 곱하기 위한 수단이 제공될 수 있다. 이것은 값
Figure pct00019
가 된다. 이에 따라, 기수 식별 수단(102), 지수 식별 수단(104), 및 멱승기(106)에서 값 g 또는 gy를 노출시킴이 없이 gy이 계산될 수 있다.
지수 y를 나타내는 데이터의 적어도 일부는 특정 디바이스 및/또는 이용자에 고유한, 또는 일 그룹의 디바이스들 및/또는 이용자들에 고유한 정보로부터 얻어질 수 있다. 이러한 정보는 예를 들면, 하드웨어 식별자, 이용자 식별자, 또는 하드웨어 특징(이를테면 프로세서의 클럭 주파수 또는 디스크 액세스 시간)에 기초할 수 있다. 수단(112)은 지수 y를 나타내는 데이터의 적어도 일부를 제공하기 위해 제공될 수 있다. 수단(112)은 이러한 데이터가 제공되는 메모리 위치에 액세스하여 데이터를 지수 식별 수단(104)에 제공하는 배열될 수 있다. 또한, 수단(112)은 관계된 데이터의 해시 값을 계산하고 해시 값을 지수 식별 수단(104)에 제공하기 위해 배열될 수도 있다. 해시 값은 예를 들면, 복호될 일부 콘텐트의 해시 값, 또는 컴퓨터 프로그램 코드일 수 있다. 이것은 지수 데이터를 비교적 큰 데이터 청크에 의존하게 만들 수 있게 한다. 수단(112)은 예를 들면, 디바이스에 보내진 제어 명령을 통해, 하드디스크 또는 프로세서와 같은 하드웨어 디바이스의 하드웨어 ID를 포함하는 메모리 위치에 액세스하기 위해 배열될 수 있다. 이것은 다른 시스템들은 멱법에서 틀린 지수 y가 이용되게 하는 다른 하드웨어 식별자를 갖고 있기 때문에, 다른 시스템들에서 멱법을 성공적으로 실행하는 것을 더 어렵게 만든다.
멱법 연산은 RSA 복호 및 암호화에서 중요한 단계이다. 이들 단계들은 개시된 기술들을 이용하여 불명료해질 수 있다. 또한, RSA에서 키는 지수 값 y에 밀접히 관계된다. 개시된 기술들은 지수를 큰 값 및/또는 복수의 값들을 이용하여 표현할 수 있게 하는데, 이것은 지수를 저장하는데 필요한 비트들의 총 수를 더 크게 만든다. 또한, 키를 모르는 공격자가 더 작고 동일 멱법 결과들을 제공하는 대응하는 지수 값을 찾는 것은 어렵다. 결국, 더 많은 비트들을 포함하는 더 큰 키들은 RSA 및 다른 암호화 알고리즘들과 함께 이용될 수 있다. RSA에서와 같이, 복호 키는 흔히 가장 비밀이고 큰 크기가 잇점인 키이며, 개시된 바와 같은 멱법은 RSA 복호 시스템에서 잇점이 있게 실행될 수 있다.
개시된 기술들은 PDA, 음악 플레이어, 디지털 튜너, 등과 같은 소비자 전자장치 디바이스에 포함될 수 있다. 이들은 리버스 엔지니어링(reverse engineering)하기가 어렵고 무단 복제 및/또는 분배를 방지할 수 있는 디지털 권한 관리 기술들을 제공한다. 또한, 개시된 기술들은 트랜잭션 처리, 디지털 서명들, 및 그외 암호화 처리 및 시스템에서 이용될 수도 있다.
도 2는 불명료한 지수를 가지는 멱법을 실행하는 방법을 도시한 것이다. 방법은 예를 들면, 암호화된 데이터 패킷의 수신에 응하여, 또는 이용자 명령에 응하여, 단계(200)에서 시작된다. 단계(202)에서, 멱법의 기수 x가 식별된다. 단계(204)에서, 지수 y를 나타내는 데이터가 식별된다. 지수 y는 λ > 0 및 xλ = 1을 성립시키는 값 λ보다 크다. 단계(206)에서, 암호화 알고리즘의 적어도 일부는 y의 멱에 대해 x를 계산하여 멱법의 결과를 얻음으로써 실행된다. 프로세스는 단계(208)에서 끝나며 새로운 지수 값 x를 처리하기 위해 단계(200)에서 시작하여, 반복될 수도 있다.
도 3은 암호화 프로세스에서 이용하기 위해 지수를 불명료하게 하는 방법을 도시한 것이다. 단계(302)에서, 암호화 프로세스의 멱법 연산의 지수 값
Figure pct00020
이 식별될 수 있다. 예를 들면, 공지된 바와 같이, 암호화 키를 선택하기 위해 키 생성기가 이용될 수 있다. 지수 값
Figure pct00021
는 키에 따를 수 있다. 예를 들면, 지수 값
Figure pct00022
는 키와 같을 수도 있다.
단계(304)에서, 대수 구조의 복수의 요소들 x에 대해 λ > 0 및 xλ = 1임을 성립시키는 값 λ이 확립된다. xλ = 1인 복수의 요소들 x은 암호화된 메시지들에서 이용될 수 있는 잠재적 값들을 포함한다. 지원될 수 있는 메시지들에서 큰 융통성이 있도록, 대수 구조의 모든 x에 대해서 xλ = 1 이 성립하는 값 λ이 확립될 수 있고, 여기서 대수 구조는 곱셈 모듈로 N을 가진 세트 {0, 1, 2, 3,..., N - 1}일 수 있다. 이러한 값 λ은 공지된 방법으로 계산될 수 있다.
단계(306)에서, 불명료한 지수 y가 식별되는데, 여기서
Figure pct00023
이며, b는 양의 정수이다. 예를 들면,
Figure pct00024
및 λ는 단계들(302, 304)에 의해 확립될 수 있고, b는 불명료한 지수 y의 요망되는 대략적 비트 길이에 대응하는 한 범위의 값들로부터 무작위로 선택된 양의 정수일 수 있다.
단계(308)에서, 불명료한 지수 y를 나타내는 정보가 제공된다. 예를 들면, 암호화된 콘텐트와 함께 착탈가능한 매체에 저장되거나, 디지털 네트워크를 통해 클라이언트 디바이스에 송신된다. 또한, 지수 값(예를 들면, 암호화된 콘텐트)를 나타내는 정보는 클라이언트 디바이스에 제공될 수 있다.
단계(310)에서, 프로세스가 종료한다. 예를 들면, 새로운 키가 생성되고 있을 때, 단계(300)에서 다시 개시될 수 있다.
m ≥ 1인 하나 이상의 값들 y1..., ym을 확립하는 것이 가능하며, 값들 y1..., ym은 값들 y1..., ym에 따라 복수의 멱법들을 실행함으로써 y의 멱에 대한 멱법을 계산할 수 있게 하며, 복수의 멱법들은 y의 멱에 대한 x의 계산의 중간 단계들을 형성한다. 이렇게 하여, 불명료는 비교적 작은 지수 값들 y1..., ym을 이용하여 실행될 수 있다. 예를 들면, 복수의 값들 y1..., ym이 선택되며, m ≥ 1이고, 일련의 지수들의 곱
Figure pct00025
은 y과 같다. 불명료한 지수 y를 나타내는 정보는 복수의 값들 y1..., ym의 적어도 일부를 나타낼 수도 있다. 또 다른 예에서, 값들 y1..., ym 및 z1..., zm은 제공되고, 여기서
Figure pct00026
이다.
비트 스트링 s를 식별하고, 불명료한 지수 y의 비트 표현이 비트 스트링 s를 포함하게 b를 선택하는 것이 가능하다. 이것은 이하 더 상세히 설명될 것이다. 예를 들면, 클라이언트 디바이스의 하드웨어 식별자 또는 이름 또는 패스워드를 특히 이 클라이언트 또는 이용자를 위해 준비된 지수 값에 포함시키게 하기 위해 이용될 수 있다.
클라이언트의 하드웨어 식별자가 이미 클라이언트 디바이스에 알려져 있고, 이용자 이름 또는 패스워드가 이용자에 의해 제공될 수 있기 때문에, 그에 대응하는 데이터의 부분을 클라이언트 디바이스에 송신하는 것은 필요하지 않다. 결국, 지수 값을 나타내는 정보를 송신할 때는 비트 스트링 s는 생략될 수 있다.
일 실시예에서, 불명료한 지수 y를 식별하는 단계(306)는 λ의 k배, 즉 kλ를 확립하는 것을 포함하며, y는 λ가 아니라 kλ에 기초하여 결정된다. 예를 들면, y 값은 kλ까지의 범위에서, 이용되는 암호화 암호에 의해 부과되는 제약들 내에서, 무작위로 선택된다. RSA의 경우에, 암호화 키 e가 주어졌을 때, 복호 키 d는 eㆍd = 1 mod λ를 해결함으로써 통상적으로 발견될 수 있다. 그러나, 이 일 실시예에서, λ는 kλ로 대체되고, 따라서 복호 키 d는 eㆍd = 1 mod kλ를 해결함으로써 발견된다. 이에 따라 값 d은 더 커지게 되고, 이것은 RSA에서 지수로서 이용될 수 있다.
도 4는 암호화 프로세스에서 이용하기 위해 지수 y를 불명료하게 하기 위한 시스템을 도시한 것이다. 이러한 시스템은 암호화 프로세스의 멱법 연산의 지수 값
Figure pct00027
을 식별하기 위한 지수 값 식별 수단(402)을 포함할 수 있다. 시스템은 암호화 프로세스에서 이용할 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1임을 성립시키는 값 λ을 식별하기 위한 지수 하한 식별 수단(도시되지 않음)을 포함할 수 있다. 시스템은 불명료한 지수 y를 확립하기 위한 오퍼스케이터(obfuscator)(404)를 포함할 수 있고, 여기서
Figure pct00028
이며, b는 양의 정수이다. 시스템은 불명료한 지수 y를 나타내는 정보를 디바이스에 제공하기 위한 지수 제공기(406)를 추가로 포함할 수 있다. 이러한 지수 제공기(406)는 예를 들면, 디바이스에 송신되는 데이터 스트림에 지수 값 y를 포함할 수 있다. 오퍼스케이터(404)는 키 제공기(408)로부터 지수 값
Figure pct00029
및/또는 값 λ을 수신하기 위해 배열될 수 있다. 이러한 키 제공기(408)는 예를 들면, 각각의 이용자 또는 클라이언트 디바이스를 위한 키를 유지하는 데이터베이스를 포함할 수 있다. 오퍼스케이터는 예를 들면, 난수 생성기(410)로부터 값 b를 수신하게 배열될 수도 있다.
대안적으로, 큰 지수를 직접 생성하고 이로부터
Figure pct00030
및 λ를 계산하는 것도 가능하다.
도 5는 방법들 및 시스템들 중 하나 이상을 소프트웨어 프로그램으로써 구현하는데 적합한 하드웨어 아키텍처의 예를 도시한 것이다. 프로그램은 메모리(506)에 저장될 수 있는 복수의 기계 판독가능 명령들을 포함할 수 있다. 실행시, 이들 명령들은 프로세서(502)에 로딩되어 실행된다. 통신 포트(508)는 예를 들면, 지수 및/또는 기수를 나타내는 데이터를 교환하기 위해 서버와 통신하기 위해 제공된다. 대안적으로, 데이터는 예를 들면, 플래시 메모리 또는 DVD 디스크인 착탈가능한 매체(510)로부터 판독되거나 이에 기입될 수 있다. 입력부(504)는 예를 들면, 하나의 암호화된 콘텐트의 재생을 시작하게 하고 중지시키기 위해 이용자로부터 지령들을 수신하게 배열된다. 이러한 지령들은 여기에 개시된 방법들 중 하나 이상의 개시를 유발할 수 있다. 디스플레이(512) 및/또는 증폭기(도시되지 않음)는 프로그램의 상태에 관해 이용자에게 피드백을 제공하고, 및/또는 예를 들면, 복호된 콘텐트를 이용자에게 렌더링하기 위해 제공될 수 있다.
도면들에 도시된 것들은 여기에 개시된 시스템들 및 방법들의 가능한 설계들의 스케치들을 나타낼 뿐이다. 이들은 한정이 아니다. 예를 들면, 처리 단계들은 여전히 동일 기능을 제공하면서도, 복수의 모듈들 및/또는 유닛들에 대해 다르게 분배될 수 있다.
곱셈 연산을 가진 어떤 대수 구조 G에서 멱법
Figure pct00031
을 고찰한다(예를 들면, RSA를 위한 링). 이 멱법에서, x는 변수일 수 있다. 간단하게 하기 위해서, x는 G의 임의의 요소일 수 있는 것으로 가정한다. 본 발명은 x가 G의 부분세트에서 취해지는 경우로 쉽게 확장한다. 또한, Ω를 모든 x ∈ G에 대해 xΩ = 1이 되게 하는 것으로 놓는다. 예를 들면, G가 그룹이라면(RSA에선 그렇지 않다), Ω은 그룹 G의 차수로서 규정될 수 있다. 그러면 멱법
Figure pct00032
는 임의의 정수 b에 대해서 멱법
Figure pct00033
과 같다.
또한, 임의의 m ≥ 1에 대해서 값들이
Figure pct00034
이 어떤 정수 b에 대해서
Figure pct00035
을 만족하는 것으로 한다. 다음을 통해
Figure pct00036
를 계산하는 것이 가능하다.
Figure pct00038
은 반드시
Figure pct00039
와 동일한 비트 길이인 것은 아닌 것에 유의한다.
지수
Figure pct00040
를 저장하기 위해 요구되는 비트 길이가
Figure pct00041
에서 어떤 길이
Figure pct00042
로 증가되게 하는
Figure pct00043
를 선택하는 것이 가능하다. 여기에서,
Figure pct00044
이다.
Figure pct00045
가 키로부터 얻어진다면, 이것은 키가 어떤 크기까지 커질 수 있음을 의미한다. 그러나, 이것은 지수 및/또는 키의 크기를 증가시키는 유일한 방법이 아니다.
Figure pct00046
을 값들
Figure pct00047
을 명시하는 비트 스트링이라 놓는다. 임의의 사전에 명시된 스트링(예를 들면, 하드웨어 또는 이용자 식별자)가
Figure pct00048
에 포함되게 하는 값들
Figure pct00049
을 선택하는 것이 가능하다.
소프트웨어 프로그램으로부터
Figure pct00050
의 계산에 관한 지식을 공격자가 추출하지 못하게 하기 위해서, 계산을 분리된 프로그램으로서 갖추는 대신에 프로그램의 나머지에 계산을 결부시키는 것이 바람직할 수 있다. 이러한 결부는 바람직하게는 멱법 연산의 입력 및/또는 출력을 인코딩하는 것을 수반한다. 이렇게 하여, 내장된 애플리케이션의 콘텍스트 밖에서 성공적으로 멱법 연산을 적용하기는 더 어렵다. 또한, 예를 들면, 디버거로 멱법의 입력 및/또는 출력값들을 모니터함으로써 유용한 정보를 얻기는 더 어렵다.
Figure pct00051
(또는, 유사하게,
Figure pct00052
)을 계산하기 위한 멱법 루틴은 이러한 면에서 예를 들면, 다음의 방법으로 주변 프로그램에 결부될 수 있다. 주변 프로그램에서 βㆍx는 어떤 임의의 값 β에 대해 계산된다. 이어서 멱법 루틴은 z 대신에
Figure pct00053
을 계산한다. 이를 보상하기 위해서, 주변 프로그램은 멱법 루틴의 결과를 상수
Figure pct00054
로 곱한다. 이들 곱셈들은 예를 들면, Chow 등의 입력 및 출력 인코딩들과 유사하게, 곱셈을 다른 처리 단계와 결합하는 룩업 테이블들을 이용하는 불명료화 방법으로 실행될 수 있다.
위에 언급된 특성들은 m의 값에 관계없이 적용되는데, 즉 이들은 임의의 m ≥ 1에 대해 적용된다.
다음에서, RSA의 복호 알고리즘의 화이트 박스 구현이 기술된다. 이 설명에서 RSA 복호의 예가 상세히 설명될지라도, 이것은 한정이 아니다. 개시된 기술들은 예를 들면, 유사한 방식으로 RSA 암호화를 실행하기 위해 적용될 수도 있다. 또한, 기술들은 서로 다른 종류들의 암호화, 복호, 및 디지털 서명 애플리케이션들을 포함한 다른 암호화 알고리즘들에 적용될 수도 있다.
RSA 공개 키 암호는 키 생성, 암호화, 및 복호를 위한 몇가지 프로세스들을 규정한다. 이들 프로세스들을 다음에 요약한다. 키 생성은 다음의 단계들을 포함할 수 있다.
1. 각각의 개략적으로 동일 크기인 2개의 큰 무작위(및 서로 구별되는) 소수들 p 및 q를 생성한다.
2. n = pㆍq를 계산한다.
3. Φ = (p - 1)(q - 1)을 계산한다.
4. gcd(e, Φ) = 1이 되게 하는 무작위 정수 e, 1 < e < Φ을 선택한다. 이 설명에서, gcd는 가장 큰 공약수를 의미한다.
5. eㆍd = 1 mod Φ가 되게 하는 유일무이의 정수 d, 1 < d < Φ를 계산한다.
6. 공개 키가 (n,e)에 의해 주어진다.
7. 비밀 키가 d에 의해 주어진다.
암호화는 다음의 단계들을 포함할 수 있다.
8. 평문 메시지 m를 식별한다.
9. 메시지 m을 정수 x, 0 < x < n로서 표현한다.
10. 암호 텍스트는 c = xe mod n에 의해 주어진다.
복호는 다음의 단계들을 포함할 수 있다.
11. 암호문 메시지 c를 식별한다.
12. 정수 x는 x = cd mod n에 의해 주어진다.
13. 평문 메시지 메시지 m은 x로 표현된 메시지이다.
위에 단계 3에서 Φ의 규정이 주어진다면, 임의의 0 < x < n에 대해서, xφ = 1 mod n이다. 예로서, Φ = (p - 1)(q - 1)는 1024 비트 값이라고 가정한다. 이어서, 지수 d는 기껏해야 1024 비트들을 갖는다. Ω = Φ를 이용하면, 지수 d는 K > 1024로 임의의 크기의 스트링에 감추어질 수 있다. 먼저, 이것은 m = 1인 경우에 대해 기술된다. 다음에, m = 2의 경우가 기술된다. m = 1 및 m = 2 경우들의 설명에 비추어 m > 2 경우를 구현하는 방법은 당업자에게 명백할 것이다.
m = 1인 경우, 조건
Figure pct00055
Figure pct00056
으로서 나타낼 수 있다. 간단하게 하기 위해서,
Figure pct00057
라 규정한다. 이것은 xd mod n은 xy mod n을 통해 구현될 수 있음을 의미한다. 규정된 비트 길이 K를 갖는 표현을 가진 y를 발견하는 것이 가능하다(여기에서, 표현은 최상위 부분에 선두 제로들을 포함하지 않으며 K는 d의 비트 길이보다 크다). 값 y는 b가 다음을 만족한다면 K-비트 값이다.
Figure pct00058
이것을 알기 위해서, b의 이러한 선택에 의해 지수 d + bΩ이 다음을 만족함을 관찰한다.
2K-1 ≤ d + bΩ ≤ 2K - 1
그러므로, 값 y = d + bΩ에 연관된 바이너리 스트링은 K 비트로 구성된다. 결국, 지수 d는 더 큰 K-비트 스트링 y에 감추어 졌다.
y에 임의의 비트 스트링을 포함시키는 것이 가능하다. l ≤ K - r인 l 비트의 사전에 명시된 스트링을 고찰한다. 이러한 스트링 l은 지수 y를 명시하는 비트 스트링에 포함될 수 있다. s를, 포함시키고자 하는 l 비트들의 비트 스트링에 연관된 수라 놓는다. l = K - r이라고 가정한다. l < K - r이라면, 어떤 임의의 비트들은 예를 들면, 스트링 앞에 및/또는 스트링 다음에 추가될 수 있다.
값 S는 r 제로 비트들을 s의 최하위 측에 추가함으로써 - 즉, 이들 r 제로 비트들은 S의 최하위 비트들이 된다 - K 비트 값으로 확장시킴으로써 s로부터 얻어질 수 있다. x < Ω 인 임의의 값 S + x의 바이너리 표현은 s 에 대한 바이너리 스트링, 즉 포함시키고자 하는 바이너리 스트링으로 시작할 수 있는 것에 유의한다.
Figure pct00059
를 규정한다. 결국, d + bΩ ≤ S < d + (b + 1)Ω이며, 이에 따라 x < Ω에 대해서 d + bΩ = S + x이다. 그러므로, 지수 y = d + bΩ의 바이너리 표현은 바이너리 스트링 s로 시작한다.
m = 2이라면, 조건
Figure pct00060
Figure pct00061
으로서 나타낼 수 있다. 이것은 xd mod n 이 다음과 같이 계산될 수 있음을 의미한다.
먼저,
Figure pct00062
을 계산한다.
다음에,
Figure pct00063
을 계산한다. 이 결과는 xd mod n이다.
Figure pct00064
Figure pct00065
의 총 비트 길이를
Figure pct00066
인 임의의 K까지 증가시키는 것이 요망되는 것으로 가정한다. 이것은
Figure pct00067
을 만족시키는 값들
Figure pct00068
Figure pct00069
을 선택함으로써 행해질 수 있다. 이것은 예를 들면, 다음 단계들을 이용하여 행해질 수 있다.
Figure pct00070
을 만족시키는 임의의 K-r 비트 값으로서
Figure pct00071
을 선택한다. 이러한 값
Figure pct00072
을 발견하는 것은 이 설명에 비추어, 당업자의 범위 내에 있다.
Figure pct00073
을 만족시키는 값
Figure pct00074
를 계산한다.
Figure pct00075
의 값은 다음처럼 계산될 수 있다. 유클리드의 알고리즘을 이용하여,
Figure pct00076
을 만족하는 값 c를 계산한다. 값
Figure pct00077
Figure pct00078
로서 계산될 수 있고, 이와 같이 하여 얻어진 값들
Figure pct00079
Figure pct00080
Figure pct00081
를 만족시키기 때문이다.
Figure pct00082
은 K-r 비트 값이며
Figure pct00083
는 r비트 값일 수 있다. 그러므로, xd mod n의 계산을 위해 이용되는 지수들을 저장하기 위한 저장 요건은 K까지 증가하였다.
위의 단계들은 m = 2의 경우에 대해서, 더 큰 스트링에 지수 d를 감추는 방법을 기술한다.
일 실시예에서, 사전에 명시된 비트 스트링은 화이트-박스 구현의 지수에 포함된다.
Figure pct00084
Figure pct00085
Figure pct00086
Figure pct00087
를 명시하는 비트 스트링으로 변환하는 함수로서
Figure pct00088
을 규정한다.
Figure pct00089
의 자명한 선택은
Figure pct00090
Figure pct00091
에 연관된 비트 스트링들을 단순히 연결하는 함수이다. 에서, gcd(s, Ω) = 1인 길이 K-r 비트들의 비트 스트링 s는 s와 같게
Figure pct00093
을 선택함으로써 포함될 수 있다.
Figure pct00094
인 값들
Figure pct00095
에 지수
Figure pct00096
를 감추는 것이 가능하며, 여기에서 Ω는 을 만족시킨다. 이렇게 하여, 지수를 저장하는데 필요한 저장 공간을
Figure pct00098
비트들에서
Figure pct00099
비트들로 증가시키는 것이 가능하다. 일부 애플리케이션들에서, 일단 K 비트 벡터(
Figure pct00100
)를 갖게 되면, 공격자가 이 K비트 벡터의 저장 크기를 감소시키는 것은 어렵다(예를 들면, 공격자가 근간이 되는 k 비트 지수
Figure pct00101
를 추출하는 것을 원하지 않을 수 있다). 화이트-박스 구현이 "내-간결성(resistant to compaction)"라고 말함으로써 이 특성을 언급할 수도 있다. (a + bΩ)mod(cㆍΩ)이
Figure pct00102
보다 작지만 기능적으로는 동일하기 때문에, K 비트 벡터(
Figure pct00103
)을 저장하기 위해 필요한 저장 공간을 감소시키기 위해서, c ≤ b인 값 cㆍΩ을 찾는 것만으로 충분함에 유의한다.
몇 개의 비트들을 가진 지수의 표현을 찾고자 하는 공격자는 K-비트 벡터 (
Figure pct00104
) 외에도, 자신의 임의로 추가의 정보를 가질 수도 있다. 예를 들면, RSA의 비밀 (복호) 지수 d를 감추기 위해서 (
Figure pct00105
)이 이용되는 경우를 고찰한다. 그러면 공격자는 전형적으로 공개 (암호화) 지수 e에 액세스할 수 있다. 이들 값들은
Figure pct00106
을 만족한다.
그러므로, 전술한 바로부터, 내-간결성이 되게 하기 위해서, RSA 화이트-박스 구현의 요망되는 특성은 다음과 같게 된다:
Figure pct00107
인 공개 값 e 및 비밀 값들
Figure pct00108
을 갖추면, c ≤ b인 값 cㆍΩ을 공격자가 찾는 것은 여전히 어렵다.
더 일반적인 확립에서, RSA의 맥락 밖에서, 다음이 관측될 수 있다.
지수
Figure pct00109
가 값들
Figure pct00110
에 감추어지는 것으로 가정한다(따라서,
Figure pct00111
이다). 또한, 공격자가
Figure pct00112
으로 어떤 함수 f를 계산할 수 있다고 가정한다. 그러면, 내-간결성이 되게 하기 위해서, 공격자가 c ≤ b인 값 cㆍΩ을
Figure pct00113
로부터 얻는 것이 어렵다는 것은 요망되는 특성이다.
RSA의 위에 언급된 예에서, 함수 f는
Figure pct00114
에 의해 주어질 수 있는 것에 유의한다.
일반적인 확립으로 돌아가면, c ≤ b인 이러한 값 cㆍΩ을 공격자가 얻을 수도 있을 2가지 수법들이 식별될 수 있다.
cㆍΩ을 찾기 위한 제 1 수법은 다음과 같다. 가정에 의해서, 공격자는 어떤 값
Figure pct00115
을 얻을 수 있다. 이제, 공격자는 다음과 같이 되게하는 값들 β1, β2 을 얻을 수 있는 것으로 가정한다.
Figure pct00116
(1)
Figure pct00117
(2)
이것은 어떤 값 c에 대해서 β2 = cㆍΩ이 생기게 한다. 값들 β1, β2이 c ≤ b이게 하는 값들이라면, β2는 c ≤ b인 값 cㆍΩ이다. 즉, β2는 다음과 같은 지수를 찾기 위해 이용될 수 있다.
Figure pct00118
여기서
Figure pct00119
이다.
c ≤ b인 cㆍΩ를 찾기 위한 제 2 수법은 다음과 같다. 제 2 수법에서, 2개의 서로 다른, 그러나 기능적으로는 동일한 화이트-박스 구현들
Figure pct00120
Figure pct00121
은 c ≤ b인 cㆍΩ를 찾기 위해 이용될 수 있다. 이들 기능적으로 등가인 화이트-박스 구현들은
Figure pct00122
Figure pct00123
가 생기게 한다.
Figure pct00124
Figure pct00125
에 함수 f를 적용하면 각각
Figure pct00126
Figure pct00127
에 대해서 값들
Figure pct00128
Figure pct00129
이 된다. 이들 두 값들에 대해서 다음이 성립한다. 어떤 값 c에 대해서,
Figure pct00130
이다.
c ≤ min(b1,b2)이라면, 화이트-박스 구현의 더 감소가 얻어진다. RSA 예에 대해서 효과적인 공격에 대해서,
Figure pct00131
을 만족하는 k는 존재하지 않을 것임에 유의한다. 그러므로,
Figure pct00132
는 값
Figure pct00133
을 복수회
Figure pct00134
에 더함으로써 얻어지지 않을 것이다.
위에 기술된 2가지 공격은 다음과 같이 공격에 대응될 수 있다. (1) 및 (2)를 만족하는 값들 β1, β2을 갖는 것이 공격의 토대이므로, 공격자가 이들 값들을 얻을 수 있는 것을 방지한다. 이러한 β1, β2을 찾는 것을 어렵게 만들기 위한 수법은 소수로
Figure pct00135
의 인수분해는 큰 소수만을 포함하는 것을 조심해야 한다(바람직하게 값
Figure pct00136
는 소수이다). 또한, Ω의 인수분해가 적어도 하나의 큰 소수를 포함한다면 잇점이 있다. 이러한 면에서, 소수는 암호적으로 안전하다면 충분히 큰 것으로 간주될 수 있다. 즉 상기 큰 소수들의 크기에 대해 부과되는 제약들은 RSA와 같은 암호화 알고리즘에서 이용되는 암호적으로 안전한 소수들에 일반적으로 부과되는 제약들과 유사하다.
더 일반적 말하여, 암호화 프로세스에서 이용될 요소 x는 n 요소들을 가지는 대수 구조의 요소들일 수 있다. 예를 들면, RSA에서, 복호기 지수로서 이용될 때, 지수 y는 값 e에 대해서 eㆍy = 1 mod n을 만족할 수 있다. 이 경우, 어떤 값
Figure pct00137
에 대해서
Figure pct00138
이다. 이러한 값
Figure pct00139
λ는 공격자에 의해 발견될 수도 있다. 불명료한 지수 y를 식별하는 단계(306)는 λ를 소수들로 인수분해가 적어도 하나의 큰 소수를 포함하고 소수들로
Figure pct00140
의 인수분해가 큰 소수들만을 포함한다는 것을 만족하는 y를 선택하는 것을 포함할 수 있다. 이러한 큰 소수들은 예를 들면, 일반적인 컴퓨터 시스템들에서 전역 탐색을 방지하는데 충분히 큰 소수들이며, 예를 들면, 소수들은 적어도 64비트를 포함한다.
본 발명은 발명을 실행하게 한 컴퓨터 프로그램들, 특히 캐리어 상에 또는 캐리어 내에 컴퓨터 프로그램들로 확장됨을 알 것이다. 프로그램은 소스 코드, 목적 코드, 코드 중간 소스 및 부분적으로 컴파일된 형태와 같은 목적 코드 형태일 수 있고 또는 본 발명에 따른 방법의 구현에서 이용하는데 적합한 임의의 다른 형태일 수 있다. 또한, 이러한 프로그램이 많은 서로 다른 구조적 설계들을 취할 수 있음을 알 것이다. 예를 들면, 본 발명에 따른 방법 또는 시스템의 기능을 구현하는 프로그램 코드는 하나 이상의 서브루틴들로 세분될 수 있다. 기능을 이들 서브루틴들 간에 분배하는 많은 서로 다른 방법들이 당업자에게 명백할 것이다. 서브루틴들은 독립형 프로그램을 형성하기 위해 한 실행가능한 파일에 함께 저장될 수도 있다. 이러한 실행가능한 파일은 컴퓨터 실행가능한 명령들, 예를 들면, 프로세서 명령들 및/또는 해석기 명령들(예를 들면, 자바 해석기 명령들)을 포함할 수 있다. 대안적으로, 서브루틴들 중 하나 이상 또는 전부가 적어도 하나의 외부 라이브러리 파일에 저장되어 주 프로그램에 예를 들면, 런-타임시 정적으로 연결되거나 아니면 동적으로 연결된다. 주 프로그램은 서브루틴들 중 적어도 하나의 서브루틴로의 적어도 하나의 호출을 포함한다. 또한, 서브루틴들은 서로로의 기능 호출들을 포함할 수 있다. 컴퓨터 프로그램 제품에 관한 실시예는 개시된 방법들 중 적어도 하나의 방법의 처리단계들 각각에 대응하는 컴퓨터 실행가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고/세분되거나 정적으로 아니면 동적으로 연결될 수 있는 하나 이상의 파일들에 저장될 수 있다. 컴퓨터 프로그램 제품에 관한 또 다른 실시예는 개시된 시스템들 및/또는 프로그램물들 중 적어도 하나의 수단 각각에 대응하는 컴퓨터 실행가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고 정적으로 아니면 동적으로 연결될 수 있는 하나 이상의 파일들에 저장될 수 있다.
컴퓨터 프로그램의 캐리어는 프로그램을 실을 수 있는 임의의 실체 또는 디바이스일 수 있다. 예를 들면, 캐리어는 ROM과 같은 저장매체로서 예를 들면, CD ROM 또는 반도체 ROM, 또는 자기 기록 매체로서 예를 들면, 플로피 디스크 또는 하드디스크를 포함할 수 있다. 또한, 캐리어는 전기적 또는 광학적 케이블을 통해서 또는 라디오 또는 그외 수단에 의해 전달될 수 있는 전기적 또는 광학적 신호와 같은 송신가능한 캐리어일 수 있다. 프로그램이 이러한 신호로 실현될 때, 캐리어는 이러한 케이블 또는 그외 디바이스 또는 수단에 의해 구성될 수 있다. 대안적으로, 캐리어는 프로그램이 내장된 집적 회로일 수 있고, 집적회로는 관계된 방법을 실행하거나, 또는 이 방법의 실행에서 이용하도록 한 것이다.
위에 언급된 실시예들은 발명을 제한하기보다는 예시하는 것이며 당업자들은 첨부된 청구항들의 범위 내에서 많은 대안적 실시예들을 설계할 수 있을 것임에 유의한다. 청구항들에서, 괄호 내 임의의 참조부호들은 청구항을 한정하는 것으로 해석되지 않을 것이다. "포함하다(comprise)"라는 동사의 이용은 청구항에 언급된 것들 외의 요소들 또는 단계들의 존재를 배제하는 것이 아니다. 요소 앞의 부정관사("a" 또는 "an")는 이러한 복수의 요소들의 존재를 배제하지 않는다. 본 발명은 몇 개의 구별되는 요소들을 포함하는 하드웨어에 의해서, 그리고 적합히 프로그램된 컴퓨터에 의해서 구현될 수 있다. 몇 개의 수단들을 나열한 디바이스 청구항에서, 이들 수단들 중 몇몇은 하나의 동일한 하드웨어에 의해 실현될 수 있다. 어떤 조치들이 상호 서로 다른 종속 청구항들에 인용되었다는 단순한 사실은 이들 조치들의 조합이 잇점이 있게 이용될 수 없다는 것을 나타내는 것은 아니다.
100: 시스템 102: 기수 식별 수단
104: 지수 식별 수단 106: 멱승기
108: 기수 입력부 110: 지수 입력부
114: 후-처리 유닛 404: 오퍼스케이터
406: 지수 제공기 408: 키 제공기
410: 난수 생성기 502: 프로세서
506: 메모리 508: 통신 포트
512: 디스플레이

Claims (15)

  1. 지수(exponent)를 불명료하게 하는 방법에 있어서:
    암호화 프로세스에서 멱법(exponentiation)의 지수 값들로서 이용될 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1 을 성립시키는 값 λ을 식별하는 단계(304);
    λ보다 큰 불명료한 지수 y를 식별하는 단계(306); 및
    상기 암호화 프로세스에서 이용하기 위해 상기 불명료한 지수 y를 나타내는 정보를 제공하는 단계(308)를 포함하는, 지수를 불명료하게 하는 방법.
  2. 제 1 항에 있어서,
    상기 불명료한 지수를 식별하는 단계(306)는:
    Figure pct00141
    인 키 값
    Figure pct00142
    를 확립하는 단계;
    양의 정수 b를 선택하는 단계; 및
    Figure pct00143
    을 계산하는 단계를 포함하는, 지수를 불명료하게 하는 방법.
  3. 제 1 항에 있어서,
    하나 이상의 값들 y1,..., ym을 확립하는 단계를 추가로 포함하고, m ≥ 1이고, 상기 값들 y1,..., ym은 y의 멱에 대한 x의 계산의 중간 단계들을 형성하는 적어도 복수의 멱법들을 나타내는, 지수를 불명료하게 하는 방법.
  4. 제 2 항에 있어서,
    상기 암호화 프로세스에서 이용될 복수의 요소들 x는 n 요소들을 가지는 대수 구조의 요소들이고, 상기 불명료한 지수 y는 n보다 큰, 지수를 불명료하게 하는 방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    비트 스트링(bit string) s를 식별하는 단계; 및
    상기 불명료한 지수 y 또는 상기 값들 y1,..., ym의 비트 표현이 상기 비트 스트링 s를 포함하도록 상기 불명료한 지수 y 또는 상기 값들 y1,..., ym을 선택하는 단계를 추가로 포함하는, 지수를 불명료하게 하는 방법.
  6. 제 2 항에 있어서,
    상기 값 λ을 식별하는 단계(304)는 λ의 소수들(prime numbers)로의 인수분해(factorization)가 적어도 64 비트들의 적어도 하나의 소수를 포함하도록 상기 값 λ을 선택하는 단계를 포함하고,
    상기 불명료한 지수 y를 식별하는 단계(306)는 eㆍy = 1 mod λ에 의해 규정된 값 e 및
    Figure pct00144
    에 의해 규정된 값
    Figure pct00145
    에 대해서,
    Figure pct00146
    의 소수들로의 인수분해가 적어도 64 비트들의 소수들만을 포함하는 것을 만족하는 상기 불명료한 지수 y를 선택하는 단계를 포함하는, 지수를 불명료하게 하는 방법.
  7. 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템에 있어서:
    상기 멱법의 기수(base) x를 식별하기 위한 기수 식별 수단(102)으로서, x는 n 요소들을 가지는 세트의 요소인, 상기 기수 식별 수단(102);
    상기 세트의 모든 요소들
    Figure pct00147
    에 대해서 λ > 0 및
    Figure pct00148
    임을 성립시키는 값 λ보다 큰 지수 y를 나타내는 데이터를 식별하기 위한 지수 식별 수단(104); 및
    y의 멱에 대한 x의 결과를 계산하여 상기 멱법의 결과를 얻음으로써 암호화 알고리즘의 적어도 일부를 실행하기 위한 멱승기(exponentiator)(106)를 포함하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템.
  8. 제 7 항에 있어서,
    미리 결정된 값에 값 β를 곱함으로써 x를 계산하기 위한 수단; 및
    상기 멱법의 결과에 β-y를 곱하기 위한 수단을 추가로 포함하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템.
  9. 제 7 항에 있어서,
    디바이스 또는 이용자를 식별하는 데이터로부터 상기 지수 y를 나타내는 데이터의 적어도 일부를 얻기 위한 수단(112)을 추가로 포함하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템.
  10. 제 7 항에 있어서,
    상기 암호화 알고리즘은 적어도 부분적으로 RSA에 기초하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템.
  11. 제 7 항에 따른 상기 시스템을 포함하는, 소비자 전자장치 디바이스.
  12. 불명료한 지수를 가지는 멱법을 실행하는 방법에 있어서:
    상기 멱법의 기수 x를 식별하는 단계(202)로서, x는 n 요소들을 가지는 세트의 요소인, 상기 멱법의 기수 x 식별 단계(202);
    지수 y를 나타내는 데이터를 식별하는 단계(204)로서, 상기 지수 y는 상기 세트의 모든 요소들
    Figure pct00149
    에 대해서 λ > 0 및
    Figure pct00150
    임을 성립시키는 값 λ보다 큰, 상기 데이터 식별 단계(204); 및
    y의 멱에 대한 x의 결과를 계산하여 상기 멱법의 결과를 얻음으로써 암호화 알고리즘의 적어도 일부를 실행하는 단계(206)를 포함하는, 불명료한 지수를 가지는 멱법을 실행하는 방법.
  13. 지수를 불명료하게 하기 위한 시스템에 있어서:
    암호화 시스템에 의해 멱법의 기수 값들로서 처리될 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1임을 성립시키는 값 λ을 식별하기 위한 지수 하한 식별 수단;
    λ보다 큰 불명료한 지수 y를 식별하기 위한 오퍼스케이터(obfuscator)(404); 및
    상기 암호화 시스템에 상기 불명료한 지수 y를 나타내는 정보를 제공하기 위한 지수 제공기(406)를 포함하는, 지수를 불명료하게 하기 위한 시스템.
  14. 암호화 키를 포함하는 신호에 있어서,
    상기 암호화 키는 암호화 프로세스에서 이용될 복수의 요소들 x에 대해 λ > 0 및 xλ = 1임을 성립시키는 값 λ보다 큰 지수 y를 나타내는 데이터를 포함하는, 암호화 키를 포함하는 신호.
  15. 프로세서로 하여금 제 1 항 또는 제 2 항에 따른 상기 방법을 실행하게 하기 위한 명령들을 포함하는, 컴퓨터 프로그램 제품.
KR1020107027196A 2008-05-07 2009-05-05 지수 불명료화 KR20110014630A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP08155798.5 2008-05-07
EP08155798 2008-05-07

Publications (1)

Publication Number Publication Date
KR20110014630A true KR20110014630A (ko) 2011-02-11

Family

ID=40745816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107027196A KR20110014630A (ko) 2008-05-07 2009-05-05 지수 불명료화

Country Status (7)

Country Link
US (1) US8600047B2 (ko)
EP (2) EP2669789A3 (ko)
JP (2) JP2011520150A (ko)
KR (1) KR20110014630A (ko)
CN (1) CN102099780B (ko)
CA (1) CA2736898A1 (ko)
WO (1) WO2009136361A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710623B2 (en) 2008-03-05 2017-07-18 Irdeto B.V. Cryptographic system
US20100150343A1 (en) * 2008-12-15 2010-06-17 Nxp B.V. System and method for encrypting data based on cyclic groups
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
US10235506B2 (en) 2015-05-05 2019-03-19 Nxp B.V. White-box modular exponentiation
US10089500B2 (en) 2015-09-25 2018-10-02 Intel Corporation Secure modular exponentiation processors, methods, systems, and instructions
KR101933649B1 (ko) 2016-05-27 2018-12-28 삼성에스디에스 주식회사 화이트박스 암호 알고리즘을 이용한 공개키 암호화를 위한 장치 및 방법
US10270598B2 (en) 2016-08-26 2019-04-23 Intel Corporation Secure elliptic curve cryptography instructions
FR3063857B1 (fr) * 2017-03-08 2020-02-14 Safran Identity & Security Procede de signature electronique d'un document avec une cle secrete predeterminee
US11895230B2 (en) * 2019-01-24 2024-02-06 Nec Corporation Information processing apparatus, secure computation method, and program
US20230134216A1 (en) * 2021-11-03 2023-05-04 Arris Enterprises Llc White-box processing for encoding with large integer values

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2101124T3 (es) * 1991-11-05 1997-07-01 Thomson Multimedia Sa Metodo, aparatos emisor y receptor para explotacion por modulo.
JP2570136B2 (ja) * 1993-10-28 1997-01-08 日本電気株式会社 鍵生成装置
US5991415A (en) * 1997-05-12 1999-11-23 Yeda Research And Development Co. Ltd. At The Weizmann Institute Of Science Method and apparatus for protecting public key schemes from timing and fault attacks
AU2557399A (en) * 1998-01-02 1999-07-26 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
JP4460772B2 (ja) 1998-06-25 2010-05-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 同期ストリーム暗号
FR2800478B1 (fr) 1999-10-28 2001-11-30 Bull Cp8 Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique
DE10042234C2 (de) 2000-08-28 2002-06-20 Infineon Technologies Ag Verfahren und Vorrichtung zum Durchführen einer modularen Exponentiation in einem kryptographischen Prozessor
FR2818846B1 (fr) * 2000-12-22 2004-03-05 Gemplus Card Int Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie
JP2004004341A (ja) 2002-05-31 2004-01-08 Toshiba Corp べき乗剰余計算装置、べき乗剰余計算方法及びプログラム
DE10304451B3 (de) * 2003-02-04 2004-09-02 Infineon Technologies Ag Modulare Exponentiation mit randomisiertem Exponenten
JP5249053B2 (ja) * 2006-03-10 2013-07-31 イルデト・コーポレート・ビー・ヴイ データ処理システムの完全性

Also Published As

Publication number Publication date
CN102099780A (zh) 2011-06-15
US20110064215A1 (en) 2011-03-17
JP2014207717A (ja) 2014-10-30
EP2669789A3 (en) 2014-06-25
EP2669789A2 (en) 2013-12-04
JP2011520150A (ja) 2011-07-14
US8600047B2 (en) 2013-12-03
WO2009136361A1 (en) 2009-11-12
CA2736898A1 (en) 2009-11-12
EP2286330A1 (en) 2011-02-23
CN102099780B (zh) 2015-08-12

Similar Documents

Publication Publication Date Title
KR101657062B1 (ko) 화이트―박스 구현
KR20110014630A (ko) 지수 불명료화
JP5249053B2 (ja) データ処理システムの完全性
Bogdanov et al. Towards practical whitebox cryptography: optimizing efficiency and space hardness
US7634091B2 (en) System and method of hiding cryptographic private keys
EP2044724B1 (en) Tamper resistance of a digital data processing unit
EP2924677B1 (en) Splitting s-boxes in a white-box implementation to resist attacks
KR101580879B1 (ko) 암호 키 데이터를 갱신하는 시스템 및 방법, 서버 시스템, 암호 키 갱신들을 제공하는 방법 및 컴퓨터 판독가능 기록매체
KR101639587B1 (ko) 암호 시스템
EP2892175B1 (en) Secure software components anti-reverse-engineering by table interleaving
EP3127271B1 (en) Obfuscated performance of a predetermined function
EP3068067B1 (en) Implementing padding in a white-box implementation
US9025765B2 (en) Data security
JP5972181B2 (ja) 改ざん検知装置、改ざん検知方法、およびプログラム
Krishnamoorthy et al. Implementation and management of cloud security for industry 4. O-data using hybrid elliptical curve cryptography
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
E601 Decision to refuse application
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2016101000562; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20160129

Effective date: 20170621

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)