KR20110014630A - 지수 불명료화 - Google Patents
지수 불명료화 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 113
- 230000008569 process Effects 0.000 claims abstract description 20
- 238000004422 calculation algorithm Methods 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 238000012805 post-processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 229910052709 silver Inorganic materials 0.000 description 2
- 239000004332 silver Substances 0.000 description 2
- OAICVXFJPJFONN-UHFFFAOYSA-N Phosphorus Chemical compound [P] OAICVXFJPJFONN-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910052698 phosphorus Inorganic materials 0.000 description 1
- 239000011574 phosphorus Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/723—Modular exponentiation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public 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/302—Public 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7233—Masking, e.g. (A**e)+r mod n
- G06F2207/7238—Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
- G06F2207/7257—Random modification not requiring correction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
Abstract
지수를 불명료하게 하는 방법이 제공된다. 방법은 암호화 프로세스에서 이용될 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1을 성립시키는 값 λ을 식별하는 단계(304)를 포함한다. 방법은 λ보다 큰 불명료한 지수 y를 식별하는 단계(306) 및 불명료한 지수 y를 나타내는 정보를 제공하는 단계(308)를 추가로 포함한다. 방법은 a < λ인 키 값 a를 확립하는 단계, 양의 정수 b를 선택하는 단계, y = a + bλ을 계산하는 단계를 포함한다.
Description
본 발명은 지수 값을 불명료(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를 식별하기 위한 기수 식별 수단;
y의 멱에 대한 x의 결과를 계산하여 멱법의 결과를 얻음으로써 암호화 알고리즘의 적어도 일부를 실행하기 위한 멱승기를 포함하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템이 제시된다.
지수는 이의 크기를 증가시킴으로써 불명료하게 되었다. 이것은 λ보다 작은 임의의 지수 에 대해서, λ보다 크고 멱법의 동일 결과를 주는 대응하는 지수 값 y이 발견될 수 있다는 통찰에 기초한다. 결국, 이 큰 값 y는 대신 이용될 수 있으면서도 멱법의 동일 결과를 제공할 수 있다. 결국, 멱법은 멱법을 실행하는 디바이스에 비교적 작은 값 을 제공함이 없이 실행될 수 있다. y의 비트 표현은 전형적으로 의 비트 표현보다 크다. 또한, 이러한 값 y는 예를 들면, 충분히 큰 배수의 λ를 지수 에 더함으로써, 임의의 주어진 크기보다 크게 되게 선택될 수 있다. 값 y는 요망되는 만큼 크게 선택될 수 있기 때문에, 이의 대응하는 비트 표현도 멱법의 결과를 변경함이 없이, 요망되는 만큼 크게 될 수 있다. 이것은 값 y을 복사하는 것을 더 어렵게 한다. 이것은 암호에 대한 키에 비트들의 수가 증가될 수 있게 하며, 이것은 암호에 의해 제공된 보안성을 증가시킨다. 멱법에 대한 이러한 수법은 예를 들면, 비대칭 암호의 화이트-박스 구현을 생성하기 위해 채용될 수 있다.
일 실시예에서, 시스템은 지수 값 x에 값 β를 곱하고, 상기 멱법의 결과에 β-y를 곱하기 위한 수단을 포함한다. 이들 2개의 곱셈들은 기수 x의 값들 및 멱법 xy의 결과를 불명료하게 하기 위해 이용될 수 있다. 곱셈들은 멱승기의 입력 및/또는 출력을 모니터함으로써 x 및/또는 xy의 실제 값들을 공격자가 발견하는 것을 방지하기 위해서, 멱법 연산을 이용하는 데이터 처리 시스템의 다른 모듈들 내, 다른 어떤 곳에서 실행될 수 있다.
일 실시예에서, 지수 에 더해질 λ의 배수를 적합하게 선택함으로써, 불명료한 지수의 비트 표현에 규정된 비트 스트링 s가 포함될 수 있다. 이것은 패스워드들, 해시 값들, 또는 하드웨어 식별자들과 같은 현존의 정보에 관계된 정보를 지수를 나타내는 정보에 포함시킬 수 있게 한다. 멱법을 실행하는 시스템은 상기 현존 정보에 액세스함으로써 비트 스트링 s를 가져오게 프로그래밍될 수 있다. 지수를 나타내는 정보의 나머지 부분은 예를 들면, 서버에 의해 제공될 수도 있다.
본 발명의 다른 양태들은 독립 청구항들에 규정된다. 종속 청구항들은 잇점있는 실시예들을 규정한다.
본 발명의 이들 및 다른 양태들은 도면을 참조하여 더 자세히 설명되고 기술될 것이다.
도 1은 멱법을 실행하기 위한 시스템의 도면.
도 2는 멱법을 실행하는 프로세스를 도시한 도면.
도 3은 지수 값을 생성하는 프로세스를 도시한 도면.
도 4는 지수 값을 생성하기 위한 시스템을 도시한 도면.
도 5는 하드웨어 아키텍처를 도시한 도면.
도 2는 멱법을 실행하는 프로세스를 도시한 도면.
도 3은 지수 값을 생성하는 프로세스를 도시한 도면.
도 4는 지수 값을 생성하기 위한 시스템을 도시한 도면.
도 5는 하드웨어 아키텍처를 도시한 도면.
암호화 알고리즘의 화이트-박스 구현은 암호화 키가 공격자로부터 감추어질 수 있는 소프트웨어 구현이다. 공격자는 구현에 완전히 액세스할 수 있고 실행환경에 대해 완전히 제어할 수 있는 것으로 가정될 수 있다. 값 가 공격자로부터 감추어지게 하여, x를 변수로 해서 멱법 을 구현하는 기법이 있다면 잇점이 있을 것이다. 가 키로부터 얻어진 이러한 멱법을 RSA가 포함하기 때문에, 이러한 기법은 예를 들면, RSA의 화이트-박스 구현을 얻기 위해 이용될 수 있다.
Chow 등은 대응 블록 암호들 AEC 및 DES에 대한 화이트-박스 구현을 제시한다. Chow 등에 의해 채용된 착안은 다른 대칭 블록 암호들의 화이트-박스 구현들을 얻기 위해 어느 정도는 이용될 수 있다. 그러나, 예를 들면, RSA 및 ElGamal과 같은 비대칭 암호들의 화이트-박스 구현들을 얻기 위해 Chow 등에 개시된 방법들을 이용하기는 어렵다. 본 설명에서는 멱법 의 화이트-박스 구현을 얻기 위한 기법이 개시되며, 여기서 는 상수일 수 있고 x는 변수일 수 있다. 이러한 멱법은 예를 들면, ElGamal 공개 키 암호에서 일어난다. 가장 빈번히 이용되는 공개 키 암호 RSA도 멱법에 기초한다. 메시지 m의 암호화는 c = me mod n을 계산하는 것에 대응하며, 값들 e 및 n은 공개 키에 의해 주어진다. 암호 텍스트 c의 복호는 m = cd mod n을 계산하는 것에 대응하며, 여기에서 값 d는 비밀 키에 의해 주어지고, 값 n은 소수들 p 및 q에 대한 pㆍq에 의해 주어지며 값 d는 e 및 n의 인수분해로부터 계산될 수 있다. 두 멱법들에서 지수 값은 일정하지 않으나 메시지의 콘텐트들에 따르는 것에 유의한다. 결국, 값 가 공격자로부터 감추어지게, x를 변수로 하여 멱법 를 구현하는 수법이 필요해진다. 이것은 예를 들면, 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이며, 일련의 지수들의 곱 은 y와 같다. 이러한 경우에, 멱승기는 적어도 2가지 서로 다른 방법들로 멱법을 계산할 수 있는데, 첫째는 먼저 y를 얻기 위해서 곱 을 계산할 수 있고, 이어서 요망되는 결과를 얻기 위해서 단일 멱법 xy을 실행한다. 이 경우, 비교적 큰 지수 값 y을 가진 멱법이 계산되어야 한다. 두번째로 z1 = x 및 에 따라 복수의 멱법들을 계산할 수 있다. 이것은 큰 지수 값을 가진 멱법을 실제로 계산함이 없이 zm +1 = xy이 된다.
일 실시예에서, 기수 입력부(108)에, 또는 기수 입력부(108)에 데이터를 제공하는 시스템의 부분에는 규정된 값 g에 값 β을 곱함으로써 x를 계산하기 위한 수단이 제공된다. 규정된 값 g은 예를 들면, 복호될 암호화된 콘텐트에 따를 수 있다. 이렇게 하여, 시스템, 특히 유닛들(102, 104, 106)의 데이터 흐름들을 모니터할 수 있는 공격자는 값 g를 볼 수 없다. 유사하게, 후-처리 유닛(114)에, 또는 시스템 내 다른 어떤 곳에, 멱법의 결과를 β-y로 곱하기 위한 수단이 제공될 수 있다. 이것은 값 가 된다. 이에 따라, 기수 식별 수단(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)에서, 암호화 프로세스의 멱법 연산의 지수 값 이 식별될 수 있다. 예를 들면, 공지된 바와 같이, 암호화 키를 선택하기 위해 키 생성기가 이용될 수 있다. 지수 값 는 키에 따를 수 있다. 예를 들면, 지수 값 는 키와 같을 수도 있다.
단계(304)에서, 대수 구조의 복수의 요소들 x에 대해 λ > 0 및 xλ = 1임을 성립시키는 값 λ이 확립된다. xλ = 1인 복수의 요소들 x은 암호화된 메시지들에서 이용될 수 있는 잠재적 값들을 포함한다. 지원될 수 있는 메시지들에서 큰 융통성이 있도록, 대수 구조의 모든 x에 대해서 xλ = 1 이 성립하는 값 λ이 확립될 수 있고, 여기서 대수 구조는 곱셈 모듈로 N을 가진 세트 {0, 1, 2, 3,..., N - 1}일 수 있다. 이러한 값 λ은 공지된 방법으로 계산될 수 있다.
단계(306)에서, 불명료한 지수 y가 식별되는데, 여기서 이며, b는 양의 정수이다. 예를 들면, 및 λ는 단계들(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이고, 일련의 지수들의 곱 은 y과 같다. 불명료한 지수 y를 나타내는 정보는 복수의 값들 y1..., ym의 적어도 일부를 나타낼 수도 있다. 또 다른 예에서, 값들 y1..., ym 및 z1..., zm은 제공되고, 여기서 이다.
비트 스트링 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를 불명료하게 하기 위한 시스템을 도시한 것이다. 이러한 시스템은 암호화 프로세스의 멱법 연산의 지수 값 을 식별하기 위한 지수 값 식별 수단(402)을 포함할 수 있다. 시스템은 암호화 프로세스에서 이용할 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1임을 성립시키는 값 λ을 식별하기 위한 지수 하한 식별 수단(도시되지 않음)을 포함할 수 있다. 시스템은 불명료한 지수 y를 확립하기 위한 오퍼스케이터(obfuscator)(404)를 포함할 수 있고, 여기서 이며, b는 양의 정수이다. 시스템은 불명료한 지수 y를 나타내는 정보를 디바이스에 제공하기 위한 지수 제공기(406)를 추가로 포함할 수 있다. 이러한 지수 제공기(406)는 예를 들면, 디바이스에 송신되는 데이터 스트림에 지수 값 y를 포함할 수 있다. 오퍼스케이터(404)는 키 제공기(408)로부터 지수 값 및/또는 값 λ을 수신하기 위해 배열될 수 있다. 이러한 키 제공기(408)는 예를 들면, 각각의 이용자 또는 클라이언트 디바이스를 위한 키를 유지하는 데이터베이스를 포함할 수 있다. 오퍼스케이터는 예를 들면, 난수 생성기(410)로부터 값 b를 수신하게 배열될 수도 있다.
도 5는 방법들 및 시스템들 중 하나 이상을 소프트웨어 프로그램으로써 구현하는데 적합한 하드웨어 아키텍처의 예를 도시한 것이다. 프로그램은 메모리(506)에 저장될 수 있는 복수의 기계 판독가능 명령들을 포함할 수 있다. 실행시, 이들 명령들은 프로세서(502)에 로딩되어 실행된다. 통신 포트(508)는 예를 들면, 지수 및/또는 기수를 나타내는 데이터를 교환하기 위해 서버와 통신하기 위해 제공된다. 대안적으로, 데이터는 예를 들면, 플래시 메모리 또는 DVD 디스크인 착탈가능한 매체(510)로부터 판독되거나 이에 기입될 수 있다. 입력부(504)는 예를 들면, 하나의 암호화된 콘텐트의 재생을 시작하게 하고 중지시키기 위해 이용자로부터 지령들을 수신하게 배열된다. 이러한 지령들은 여기에 개시된 방법들 중 하나 이상의 개시를 유발할 수 있다. 디스플레이(512) 및/또는 증폭기(도시되지 않음)는 프로그램의 상태에 관해 이용자에게 피드백을 제공하고, 및/또는 예를 들면, 복호된 콘텐트를 이용자에게 렌더링하기 위해 제공될 수 있다.
도면들에 도시된 것들은 여기에 개시된 시스템들 및 방법들의 가능한 설계들의 스케치들을 나타낼 뿐이다. 이들은 한정이 아니다. 예를 들면, 처리 단계들은 여전히 동일 기능을 제공하면서도, 복수의 모듈들 및/또는 유닛들에 대해 다르게 분배될 수 있다.
곱셈 연산을 가진 어떤 대수 구조 G에서 멱법 을 고찰한다(예를 들면, RSA를 위한 링). 이 멱법에서, x는 변수일 수 있다. 간단하게 하기 위해서, x는 G의 임의의 요소일 수 있는 것으로 가정한다. 본 발명은 x가 G의 부분세트에서 취해지는 경우로 쉽게 확장한다. 또한, Ω를 모든 x ∈ G에 대해 xΩ = 1이 되게 하는 것으로 놓는다. 예를 들면, G가 그룹이라면(RSA에선 그렇지 않다), Ω은 그룹 G의 차수로서 규정될 수 있다. 그러면 멱법 는 임의의 정수 b에 대해서 멱법 과 같다.
지수 를 저장하기 위해 요구되는 비트 길이가 에서 어떤 길이 로 증가되게 하는 를 선택하는 것이 가능하다. 여기에서, 이다. 가 키로부터 얻어진다면, 이것은 키가 어떤 크기까지 커질 수 있음을 의미한다. 그러나, 이것은 지수 및/또는 키의 크기를 증가시키는 유일한 방법이 아니다.
소프트웨어 프로그램으로부터 의 계산에 관한 지식을 공격자가 추출하지 못하게 하기 위해서, 계산을 분리된 프로그램으로서 갖추는 대신에 프로그램의 나머지에 계산을 결부시키는 것이 바람직할 수 있다. 이러한 결부는 바람직하게는 멱법 연산의 입력 및/또는 출력을 인코딩하는 것을 수반한다. 이렇게 하여, 내장된 애플리케이션의 콘텍스트 밖에서 성공적으로 멱법 연산을 적용하기는 더 어렵다. 또한, 예를 들면, 디버거로 멱법의 입력 및/또는 출력값들을 모니터함으로써 유용한 정보를 얻기는 더 어렵다. (또는, 유사하게, )을 계산하기 위한 멱법 루틴은 이러한 면에서 예를 들면, 다음의 방법으로 주변 프로그램에 결부될 수 있다. 주변 프로그램에서 βㆍx는 어떤 임의의 값 β에 대해 계산된다. 이어서 멱법 루틴은 z 대신에 을 계산한다. 이를 보상하기 위해서, 주변 프로그램은 멱법 루틴의 결과를 상수 로 곱한다. 이들 곱셈들은 예를 들면, 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인 경우, 조건 은 으로서 나타낼 수 있다. 간단하게 하기 위해서, 라 규정한다. 이것은 xd mod n은 xy mod n을 통해 구현될 수 있음을 의미한다. 규정된 비트 길이 K를 갖는 표현을 가진 y를 발견하는 것이 가능하다(여기에서, 표현은 최상위 부분에 선두 제로들을 포함하지 않으며 K는 d의 비트 길이보다 크다). 값 y는 b가 다음을 만족한다면 K-비트 값이다.
이것을 알기 위해서, 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 에 대한 바이너리 스트링, 즉 포함시키고자 하는 바이너리 스트링으로 시작할 수 있는 것에 유의한다.
를 규정한다. 결국, d + bΩ ≤ S < d + (b + 1)Ω이며, 이에 따라 x < Ω에 대해서 d + bΩ = S + x이다. 그러므로, 지수 y = d + bΩ의 바이너리 표현은 바이너리 스트링 s로 시작한다.
및 의 총 비트 길이를 인 임의의 K까지 증가시키는 것이 요망되는 것으로 가정한다. 이것은 을 만족시키는 값들 및 을 선택함으로써 행해질 수 있다. 이것은 예를 들면, 다음 단계들을 이용하여 행해질 수 있다.
을 만족시키는 값 를 계산한다. 의 값은 다음처럼 계산될 수 있다. 유클리드의 알고리즘을 이용하여, 을 만족하는 값 c를 계산한다. 값 는 로서 계산될 수 있고, 이와 같이 하여 얻어진 값들 및 는 를 만족시키기 때문이다.
위의 단계들은 m = 2의 경우에 대해서, 더 큰 스트링에 지수 d를 감추는 방법을 기술한다.
일 실시예에서, 사전에 명시된 비트 스트링은 화이트-박스 구현의 지수에 포함된다. 및 를 및 를 명시하는 비트 스트링으로 변환하는 함수로서 을 규정한다. 의 자명한 선택은 및 에 연관된 비트 스트링들을 단순히 연결하는 함수이다. 에서, gcd(s, Ω) = 1인 길이 K-r 비트들의 비트 스트링 s는 s와 같게 을 선택함으로써 포함될 수 있다.
인 값들 에 지수 를 감추는 것이 가능하며, 여기에서 Ω는 을 만족시킨다. 이렇게 하여, 지수를 저장하는데 필요한 저장 공간을 비트들에서 비트들로 증가시키는 것이 가능하다. 일부 애플리케이션들에서, 일단 K 비트 벡터()를 갖게 되면, 공격자가 이 K비트 벡터의 저장 크기를 감소시키는 것은 어렵다(예를 들면, 공격자가 근간이 되는 k 비트 지수 를 추출하는 것을 원하지 않을 수 있다). 화이트-박스 구현이 "내-간결성(resistant to compaction)"라고 말함으로써 이 특성을 언급할 수도 있다. (a + bΩ)mod(cㆍΩ)이 보다 작지만 기능적으로는 동일하기 때문에, K 비트 벡터()을 저장하기 위해 필요한 저장 공간을 감소시키기 위해서, c ≤ b인 값 cㆍΩ을 찾는 것만으로 충분함에 유의한다.
몇 개의 비트들을 가진 지수의 표현을 찾고자 하는 공격자는 K-비트 벡터 () 외에도, 자신의 임의로 추가의 정보를 가질 수도 있다. 예를 들면, RSA의 비밀 (복호) 지수 d를 감추기 위해서 ()이 이용되는 경우를 고찰한다. 그러면 공격자는 전형적으로 공개 (암호화) 지수 e에 액세스할 수 있다. 이들 값들은 을 만족한다.
그러므로, 전술한 바로부터, 내-간결성이 되게 하기 위해서, RSA 화이트-박스 구현의 요망되는 특성은 다음과 같게 된다: 인 공개 값 e 및 비밀 값들 을 갖추면, c ≤ b인 값 cㆍΩ을 공격자가 찾는 것은 여전히 어렵다.
더 일반적인 확립에서, RSA의 맥락 밖에서, 다음이 관측될 수 있다.
지수 가 값들 에 감추어지는 것으로 가정한다(따라서, 이다). 또한, 공격자가 으로 어떤 함수 f를 계산할 수 있다고 가정한다. 그러면, 내-간결성이 되게 하기 위해서, 공격자가 c ≤ b인 값 cㆍΩ을 로부터 얻는 것이 어렵다는 것은 요망되는 특성이다.
일반적인 확립으로 돌아가면, c ≤ b인 이러한 값 cㆍΩ을 공격자가 얻을 수도 있을 2가지 수법들이 식별될 수 있다.
cㆍΩ을 찾기 위한 제 1 수법은 다음과 같다. 가정에 의해서, 공격자는 어떤 값 을 얻을 수 있다. 이제, 공격자는 다음과 같이 되게하는 값들 β1, β2 을 얻을 수 있는 것으로 가정한다.
및
이것은 어떤 값 c에 대해서 β2 = cㆍΩ이 생기게 한다. 값들 β1, β2이 c ≤ b이게 하는 값들이라면, β2는 c ≤ b인 값 cㆍΩ이다. 즉, β2는 다음과 같은 지수를 찾기 위해 이용될 수 있다.
c ≤ b인 cㆍΩ를 찾기 위한 제 2 수법은 다음과 같다. 제 2 수법에서, 2개의 서로 다른, 그러나 기능적으로는 동일한 화이트-박스 구현들 및 은 c ≤ b인 cㆍΩ를 찾기 위해 이용될 수 있다. 이들 기능적으로 등가인 화이트-박스 구현들은 및 가 생기게 한다.
c ≤ min(b1,b2)이라면, 화이트-박스 구현의 더 감소가 얻어진다. RSA 예에 대해서 효과적인 공격에 대해서, 을 만족하는 k는 존재하지 않을 것임에 유의한다. 그러므로, 는 값 을 복수회 에 더함으로써 얻어지지 않을 것이다.
위에 기술된 2가지 공격은 다음과 같이 공격에 대응될 수 있다. (1) 및 (2)를 만족하는 값들 β1, β2을 갖는 것이 공격의 토대이므로, 공격자가 이들 값들을 얻을 수 있는 것을 방지한다. 이러한 β1, β2을 찾는 것을 어렵게 만들기 위한 수법은 소수로 의 인수분해는 큰 소수만을 포함하는 것을 조심해야 한다(바람직하게 값 는 소수이다). 또한, Ω의 인수분해가 적어도 하나의 큰 소수를 포함한다면 잇점이 있다. 이러한 면에서, 소수는 암호적으로 안전하다면 충분히 큰 것으로 간주될 수 있다. 즉 상기 큰 소수들의 크기에 대해 부과되는 제약들은 RSA와 같은 암호화 알고리즘에서 이용되는 암호적으로 안전한 소수들에 일반적으로 부과되는 제약들과 유사하다.
더 일반적 말하여, 암호화 프로세스에서 이용될 요소 x는 n 요소들을 가지는 대수 구조의 요소들일 수 있다. 예를 들면, RSA에서, 복호기 지수로서 이용될 때, 지수 y는 값 e에 대해서 eㆍy = 1 mod n을 만족할 수 있다. 이 경우, 어떤 값 에 대해서 이다. 이러한 값 λ는 공격자에 의해 발견될 수도 있다. 불명료한 지수 y를 식별하는 단계(306)는 λ를 소수들로 인수분해가 적어도 하나의 큰 소수를 포함하고 소수들로 의 인수분해가 큰 소수들만을 포함한다는 것을 만족하는 y를 선택하는 것을 포함할 수 있다. 이러한 큰 소수들은 예를 들면, 일반적인 컴퓨터 시스템들에서 전역 탐색을 방지하는데 충분히 큰 소수들이며, 예를 들면, 소수들은 적어도 64비트를 포함한다.
본 발명은 발명을 실행하게 한 컴퓨터 프로그램들, 특히 캐리어 상에 또는 캐리어 내에 컴퓨터 프로그램들로 확장됨을 알 것이다. 프로그램은 소스 코드, 목적 코드, 코드 중간 소스 및 부분적으로 컴파일된 형태와 같은 목적 코드 형태일 수 있고 또는 본 발명에 따른 방법의 구현에서 이용하는데 적합한 임의의 다른 형태일 수 있다. 또한, 이러한 프로그램이 많은 서로 다른 구조적 설계들을 취할 수 있음을 알 것이다. 예를 들면, 본 발명에 따른 방법 또는 시스템의 기능을 구현하는 프로그램 코드는 하나 이상의 서브루틴들로 세분될 수 있다. 기능을 이들 서브루틴들 간에 분배하는 많은 서로 다른 방법들이 당업자에게 명백할 것이다. 서브루틴들은 독립형 프로그램을 형성하기 위해 한 실행가능한 파일에 함께 저장될 수도 있다. 이러한 실행가능한 파일은 컴퓨터 실행가능한 명령들, 예를 들면, 프로세서 명령들 및/또는 해석기 명령들(예를 들면, 자바 해석기 명령들)을 포함할 수 있다. 대안적으로, 서브루틴들 중 하나 이상 또는 전부가 적어도 하나의 외부 라이브러리 파일에 저장되어 주 프로그램에 예를 들면, 런-타임시 정적으로 연결되거나 아니면 동적으로 연결된다. 주 프로그램은 서브루틴들 중 적어도 하나의 서브루틴로의 적어도 하나의 호출을 포함한다. 또한, 서브루틴들은 서로로의 기능 호출들을 포함할 수 있다. 컴퓨터 프로그램 제품에 관한 실시예는 개시된 방법들 중 적어도 하나의 방법의 처리단계들 각각에 대응하는 컴퓨터 실행가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고/세분되거나 정적으로 아니면 동적으로 연결될 수 있는 하나 이상의 파일들에 저장될 수 있다. 컴퓨터 프로그램 제품에 관한 또 다른 실시예는 개시된 시스템들 및/또는 프로그램물들 중 적어도 하나의 수단 각각에 대응하는 컴퓨터 실행가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고 정적으로 아니면 동적으로 연결될 수 있는 하나 이상의 파일들에 저장될 수 있다.
컴퓨터 프로그램의 캐리어는 프로그램을 실을 수 있는 임의의 실체 또는 디바이스일 수 있다. 예를 들면, 캐리어는 ROM과 같은 저장매체로서 예를 들면, CD ROM 또는 반도체 ROM, 또는 자기 기록 매체로서 예를 들면, 플로피 디스크 또는 하드디스크를 포함할 수 있다. 또한, 캐리어는 전기적 또는 광학적 케이블을 통해서 또는 라디오 또는 그외 수단에 의해 전달될 수 있는 전기적 또는 광학적 신호와 같은 송신가능한 캐리어일 수 있다. 프로그램이 이러한 신호로 실현될 때, 캐리어는 이러한 케이블 또는 그외 디바이스 또는 수단에 의해 구성될 수 있다. 대안적으로, 캐리어는 프로그램이 내장된 집적 회로일 수 있고, 집적회로는 관계된 방법을 실행하거나, 또는 이 방법의 실행에서 이용하도록 한 것이다.
위에 언급된 실시예들은 발명을 제한하기보다는 예시하는 것이며 당업자들은 첨부된 청구항들의 범위 내에서 많은 대안적 실시예들을 설계할 수 있을 것임에 유의한다. 청구항들에서, 괄호 내 임의의 참조부호들은 청구항을 한정하는 것으로 해석되지 않을 것이다. "포함하다(comprise)"라는 동사의 이용은 청구항에 언급된 것들 외의 요소들 또는 단계들의 존재를 배제하는 것이 아니다. 요소 앞의 부정관사("a" 또는 "an")는 이러한 복수의 요소들의 존재를 배제하지 않는다. 본 발명은 몇 개의 구별되는 요소들을 포함하는 하드웨어에 의해서, 그리고 적합히 프로그램된 컴퓨터에 의해서 구현될 수 있다. 몇 개의 수단들을 나열한 디바이스 청구항에서, 이들 수단들 중 몇몇은 하나의 동일한 하드웨어에 의해 실현될 수 있다. 어떤 조치들이 상호 서로 다른 종속 청구항들에 인용되었다는 단순한 사실은 이들 조치들의 조합이 잇점이 있게 이용될 수 없다는 것을 나타내는 것은 아니다.
100: 시스템 102: 기수 식별 수단
104: 지수 식별 수단 106: 멱승기
108: 기수 입력부 110: 지수 입력부
114: 후-처리 유닛 404: 오퍼스케이터
406: 지수 제공기 408: 키 제공기
410: 난수 생성기 502: 프로세서
506: 메모리 508: 통신 포트
512: 디스플레이
104: 지수 식별 수단 106: 멱승기
108: 기수 입력부 110: 지수 입력부
114: 후-처리 유닛 404: 오퍼스케이터
406: 지수 제공기 408: 키 제공기
410: 난수 생성기 502: 프로세서
506: 메모리 508: 통신 포트
512: 디스플레이
Claims (15)
- 지수(exponent)를 불명료하게 하는 방법에 있어서:
암호화 프로세스에서 멱법(exponentiation)의 지수 값들로서 이용될 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1 을 성립시키는 값 λ을 식별하는 단계(304);
λ보다 큰 불명료한 지수 y를 식별하는 단계(306); 및
상기 암호화 프로세스에서 이용하기 위해 상기 불명료한 지수 y를 나타내는 정보를 제공하는 단계(308)를 포함하는, 지수를 불명료하게 하는 방법. - 제 1 항에 있어서,
하나 이상의 값들 y1,..., ym을 확립하는 단계를 추가로 포함하고, m ≥ 1이고, 상기 값들 y1,..., ym은 y의 멱에 대한 x의 계산의 중간 단계들을 형성하는 적어도 복수의 멱법들을 나타내는, 지수를 불명료하게 하는 방법. - 제 2 항에 있어서,
상기 암호화 프로세스에서 이용될 복수의 요소들 x는 n 요소들을 가지는 대수 구조의 요소들이고, 상기 불명료한 지수 y는 n보다 큰, 지수를 불명료하게 하는 방법. - 제 1 항 또는 제 2 항에 있어서,
비트 스트링(bit string) s를 식별하는 단계; 및
상기 불명료한 지수 y 또는 상기 값들 y1,..., ym의 비트 표현이 상기 비트 스트링 s를 포함하도록 상기 불명료한 지수 y 또는 상기 값들 y1,..., ym을 선택하는 단계를 추가로 포함하는, 지수를 불명료하게 하는 방법. - 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템에 있어서:
상기 멱법의 기수(base) x를 식별하기 위한 기수 식별 수단(102)으로서, x는 n 요소들을 가지는 세트의 요소인, 상기 기수 식별 수단(102);
상기 세트의 모든 요소들 에 대해서 λ > 0 및 임을 성립시키는 값 λ보다 큰 지수 y를 나타내는 데이터를 식별하기 위한 지수 식별 수단(104); 및
y의 멱에 대한 x의 결과를 계산하여 상기 멱법의 결과를 얻음으로써 암호화 알고리즘의 적어도 일부를 실행하기 위한 멱승기(exponentiator)(106)를 포함하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템. - 제 7 항에 있어서,
미리 결정된 값에 값 β를 곱함으로써 x를 계산하기 위한 수단; 및
상기 멱법의 결과에 β-y를 곱하기 위한 수단을 추가로 포함하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템. - 제 7 항에 있어서,
디바이스 또는 이용자를 식별하는 데이터로부터 상기 지수 y를 나타내는 데이터의 적어도 일부를 얻기 위한 수단(112)을 추가로 포함하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템. - 제 7 항에 있어서,
상기 암호화 알고리즘은 적어도 부분적으로 RSA에 기초하는, 불명료한 지수를 가지는 멱법을 실행하기 위한 시스템. - 제 7 항에 따른 상기 시스템을 포함하는, 소비자 전자장치 디바이스.
- 불명료한 지수를 가지는 멱법을 실행하는 방법에 있어서:
상기 멱법의 기수 x를 식별하는 단계(202)로서, x는 n 요소들을 가지는 세트의 요소인, 상기 멱법의 기수 x 식별 단계(202);
지수 y를 나타내는 데이터를 식별하는 단계(204)로서, 상기 지수 y는 상기 세트의 모든 요소들 에 대해서 λ > 0 및 임을 성립시키는 값 λ보다 큰, 상기 데이터 식별 단계(204); 및
y의 멱에 대한 x의 결과를 계산하여 상기 멱법의 결과를 얻음으로써 암호화 알고리즘의 적어도 일부를 실행하는 단계(206)를 포함하는, 불명료한 지수를 가지는 멱법을 실행하는 방법. - 지수를 불명료하게 하기 위한 시스템에 있어서:
암호화 시스템에 의해 멱법의 기수 값들로서 처리될 복수의 요소들 x에 대해서 λ > 0 및 xλ = 1임을 성립시키는 값 λ을 식별하기 위한 지수 하한 식별 수단;
λ보다 큰 불명료한 지수 y를 식별하기 위한 오퍼스케이터(obfuscator)(404); 및
상기 암호화 시스템에 상기 불명료한 지수 y를 나타내는 정보를 제공하기 위한 지수 제공기(406)를 포함하는, 지수를 불명료하게 하기 위한 시스템. - 암호화 키를 포함하는 신호에 있어서,
상기 암호화 키는 암호화 프로세스에서 이용될 복수의 요소들 x에 대해 λ > 0 및 xλ = 1임을 성립시키는 값 λ보다 큰 지수 y를 나타내는 데이터를 포함하는, 암호화 키를 포함하는 신호. - 프로세서로 하여금 제 1 항 또는 제 2 항에 따른 상기 방법을 실행하게 하기 위한 명령들을 포함하는, 컴퓨터 프로그램 제품.
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)
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)
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 | イルデト・コーポレート・ビー・ヴイ | データ処理システムの完全性 |
-
2009
- 2009-05-05 US US12/991,356 patent/US8600047B2/en not_active Expired - Fee Related
- 2009-05-05 KR KR1020107027196A patent/KR20110014630A/ko active IP Right Grant
- 2009-05-05 JP JP2011508041A patent/JP2011520150A/ja active Pending
- 2009-05-05 CN CN200980124757.9A patent/CN102099780B/zh not_active Expired - Fee Related
- 2009-05-05 EP EP13167524.1A patent/EP2669789A3/en not_active Ceased
- 2009-05-05 WO PCT/IB2009/051837 patent/WO2009136361A1/en active Application Filing
- 2009-05-05 EP EP09742534A patent/EP2286330A1/en not_active Ceased
- 2009-05-05 CA CA2736898A patent/CA2736898A1/en not_active Abandoned
-
2014
- 2014-08-07 JP JP2014161511A patent/JP2014207717A/ja active Pending
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) |