KR100674550B1 - 정보 처리 장치 - Google Patents
정보 처리 장치 Download PDFInfo
- Publication number
- KR100674550B1 KR100674550B1 KR1020060076642A KR20060076642A KR100674550B1 KR 100674550 B1 KR100674550 B1 KR 100674550B1 KR 1020060076642 A KR1020060076642 A KR 1020060076642A KR 20060076642 A KR20060076642 A KR 20060076642A KR 100674550 B1 KR100674550 B1 KR 100674550B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- disturbance
- processing
- processed
- modified
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K13/00—Conveying record carriers from one station to another, e.g. from stack to punching mechanism
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/10—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
- G07F7/1008—Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/067—Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
- G06K19/07—Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
- G06K19/073—Special arrangements for circuits, e.g. for protecting identification code in memory
- G06K19/07309—Means for preventing undesired reading or writing from or onto record carriers
- G06K19/07363—Means for preventing undesired reading or writing from or onto record carriers by preventing analysis of the circuit, e.g. dynamic or static power analysis or current analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
- G06Q20/341—Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
- G07F7/0806—Details of the card
- G07F7/0813—Specific details related to card security
- G07F7/082—Features insuring the integrity of the data on or in the card
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accounting & Taxation (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Abstract
여기에 개시된 발명의 과제는 IC 카드용 칩 내에서의 데이터 처리 내용과 IC 카드용 칩의 소비 전류와의 관련성을 줄이는데 있다.
그 과제의 해결 수단은 다음과 같다. IC 카드용 칩의 입력 데이터 처리를 행하기 전에 그 데이터에 변형 처리를 가함으로써, 처리 데이터와 IC 카드용 칩의 소비 전류와의 관련성을 줄인다. 그 변형 처리가 끝난 후에 변형 데이터에 역변형 처리를 실시함으로써 옳은(correct) 처리 결과를 얻는다.
교란용 데이터, 변형 데이터, 처리 완료 변형 데이터, 데이터 변형 처리 수단, 변형 데이터 처리 수단
Description
도 1은 공지의 IC 카드의 하드웨어 구성의 구성예를 나타내는 도면.
도 2는 공지의 IC 카드용 칩 내의 하드웨어 구성예를 나타내는 도면.
도 3은 IC 카드의 소비 전류의 파형의 예를 나타내는 도면.
도 4는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 하나의 교란용 데이터를 사용한 데이터 변형의 순서를 나타내는 도면.
도 5는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 상자에서 두개의 교란용 데이터를 사용한 데이터 변형의 순서를 나타내는 도면.
도 6은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 연속으로 두개의 교란용 데이터를 사용한 데이터 변형의 순서를 나타내는 도면.
도 7은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 교란용 데이터의 데이터 처리를 미리 계산해두는 데이터 변형의 순서를 나타내는 도면.
도 8은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 두개의 교란용 데이터의 역변형을 통합한 데이터 변형의 순서를 나타내는 도면.
도 9는 본 발명의 한 실시예를 설명하기 위한 도면으로서, DES의 전체 처리의 흐름을 나타내는 도면.
도 10은 본 발명의 한 실시예를 설명하기 위한 도면으로서, DES의 f 함수의 처리의 흐름을 나타내는 도면.
도 11은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 변형 처리 a를 설명하기 위한 도면.
도 12는 본 발명의 한 실시예를 설명하기 위한 도면으로서, IP 처리를 설명하기 위한 도면.
도 13은 본 발명의 한 실시예를 설명하기 위한 도면으로서, PC-1 처리를 설명하기 위한 도면.
도 14는 본 발명의 한 실시예를 설명하기 위한 도면으로서, PC-2 처리를 설명하기 위한 도면.
도 15는 본 발명의 한 실시예를 설명하기 위한 도면으로서, LS 처리를 설명하기 위한 도면.
도 16은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 선택적 전치 E 처리를 설명하기 위한 도면.
도 17은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 선택적 전치 E 처리 결과와 암호키의 XOR 처리를 설명하기 위한 도면.
도 18은 본 발명의 한 실시예를 설명하기 위한 도면으로서, S 박스 처리를 설명하기 위한 도면.
도 19는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 전치 P 처리를 설명하기 위한 도면.
도 20은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 전치 P 처리와 전단의 결과의 XOR 처리를 설명하기 위한 도면.
도 21은 본 발명의 한 실시예를 설명하기 위한 도면으로서, IP-1 처리를 설명하기 위한 도면.
도 22는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 역변형 처리를 설명하기 위한 도면.
도 23은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 변형 S 박스의 테이블의 작성 순서를 설명하기 위한 도면.
도 24는 본 발명의 한 실시예를 설명하기 위한 도면으로서, i번째의 변형 S박스 테이블 작성 루틴을 설명하기 위한 도면.
도 25는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 1번째의 S 박스 테이블을 나타내는 도면.
도 26은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 1번째의 S 박스 테이블의 데이터를 변형한 테이블을 나타내는 도면.
도 27은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 1번째의 S 박스 테이블의 배치를 변형한 테이블을 나타내는 도면.
도 28은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 선택적 전치 E 테이블을 나타내는 도면.
도 29는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 전치 P 테이블을 나타내는 도면.
도 30은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 교란용 데이터의 암호화 처리를 나타내는 도면.
도 31은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 교란용 데이터의 암호화용 데이터의 변형 계산 처리를 나타내는 도면.
도 32는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 교란용 데이터의 복호화 처리를 나타내는 도면.
도 33은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 오리지널 테이블의 예.
도 34는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 도 33의 내용을 변형한 테이블을 나타내는 도면.
도 35는 본 발명의 한 실시예를 설명하기 위한 도면으로서, 도 34의 테이블의 배치를 변형한 테이블을 나타내는 도면.
도 36은 본 발명의 한 실시예를 설명하기 위한 도면으로서, 변형 처리 b를 나타내는 도면.
도 37은 본 발명의 한 실시예를 설명하기 위한 도면으로서, IP 전치 테이블을 나타내는 도면.
*도 38은 본 발명의 한 실시예를 설명하기 위한 도면으로서, PC-1 선택적 전치 테이블을 나타내는 도면.
<도면의 주요 부분에 대한 부호의 설명>
1002: E 선택적 전치
1003: 암호키 및 E 선택적 전치의 배타적 논리 OR
1004: S 박스 처리
1005: P 전치 처리
본 발명은 정보 처리 장치에 관한 것으로, 특히 기밀성이 높은 IC 카드 등의 내탬퍼 장치(tamper resistance equipment)로서 사용하여 적합한 정보 처리 장치에 관한 것이다.
IC 카드는 주로 멋대로 재기록되지 않은 정보의 보존이나 비밀 정보인 암호키를 사용한 데이터의 암호화나 암호문의 복호화를 행하는데 사용되는 장치이다.
IC 카드는 전원을 가지고 있지 않기 때문에 리더 라이터에 삽입하면, 전원의 공급을 받아 동작 가능해진다. 동작 가능해지면, 리더 라이터로부터 커맨드를 받아서 커맨드에 따라 데이터의 전송을 행한다.
IC 카드의 구성은, 도 1에 도시한 바와 같이, 카드(101) 상에 IC 카드용 칩(102)을 탑재한 것이다. 일반적으로, IC 카드는 접점을 가지며, 접점을 통하여 리더 라이터로부터 전원의 공급이나 리더 라이터와의 데이터의 통신을 행한다.
IC 카드용 칩의 구성은 기본적으로 마이크로 컴퓨터와 동일한 구성이다. 그 구성은, 도 2에 도시한 바와 같이, 중앙 연산 장치(201), 기억 장치(204), 입출력 포트(207), 코프로세서(202)로 이루어진다. 중앙 연산 장치(201)는 논리 연산이나 산술 연산 등을 행하는 장치이며, 기억 장치(204)는 프로그램이나 데이터를 저장하는 장치이다. 입출력 포트는 리더 라이터와 통신을 행하는 장치이다. 코프로세서는 잉여 연산(modular calculus)을 행하기 위한 특별한 연산 장치이며, 비대칭 암호인 RSA의 연산 등에 이용되는 장치이다. IC 카드용 프로세서의 중에는 코프로세서를 갖지 않은 것도 많이 있다. 데이터 버스(203)는 각 장치를 접속하는 버스이다.
기억 장치(204)는 ROM(Read Only Memory)나 RAM(Random Access Memory), EEPROM(Electrical Erasable Programmable Read Only Memory) 등으로 이루어진다. ROM은 변경할 수 없는 메모리이며, 주로 프로그램을 저장하는 메모리이다. RAM은 자유롭게 재기록이 가능한 메모리이지만, 전원의 공급이 중단되면, 기억하고 있는 내용이 없어진다. IC 카드가 리더 라이터로부터 빠져나가면 전원의 공급이 중단되기 때문에, RAM의 내용은 유지할 수 없게 된다. EEPROM은 전원의 공급이 중단되어도 그 내용을 유지할 수 있는 메모리이다. 재기록할 필요가 있으며 IC 카드가 리더 라이터로부터 빠져나가도 보존하는 데이터를 저장하기 위해서 사용된다. 예를 들면, 선불 카드에서의 선지불의 횟수 등은 사용할 때마다 재기록되며 리더 라이터가 빠져나가도 데이터를 보존할 필요가 있기 때문에 EEPROM에서 보존된다.
IC 카드는, 프로그램이나 중요한 정보가 IC 카드용 칩 내에 밀폐되어 있기 때문에, 중요한 정보를 저장하거나 카드 내에서 암호 처리를 행하기 위해서 사용되고 있다. IC 카드에서의 암호 처리의 해독의 어려움은 암호 알고리즘의 해독의 곤란과 동일하도록 생각되어 왔다. 그러나, IC 카드가 암호 처리를 행할 때의 소비 전류를 관측하고 해석함으로써 암호 알고리즘의 해독에 의해 용이하게 암호 처리의 내용이나 암호키가 추정될 가능성이 시사되고 있다. 소비 전류는 리더 라이터로부터 공급되고 있는 전류를 측정함으로써 관측할 수 있다. 이러한 위험성은 John Wiley & sons사 W. Rankl & W. Effing저 「Smart Card Handbook」의 8.5.1.1 Passive protective mechanisms(263 페이지)에 기재되어 있다.
IC 카드용 칩을 구성하고 있는 CMOS는 출력 상태가 1에서 0 혹은 0에서 1로 변할 때 전류를 소비한다. 특히 데이터 버스(203)의 버스는 큰 전기용량을 갖기 때문에, 버스의 값이 1에서 0 혹은 0에서 1로 변하면 큰 전류를 소비한다. 그 때문에, 소비 전류를 관측하면 IC 카드용 칩 내에서 무언가가 동작하고 있는지 알 수 있을 가능성을 시사하고 있다.
도 3은 IC 카드용 칩의 1사이클에서의 소비 전류의 파형을 나타낸 것이다. 처리하는 데이터에 의존하여, 전류 파형이 301이나 302와 같이 다르다. 이러한 차는 버스(203)를 흐르는 데이터나 중앙 연산 장치(201)에서 처리하는 데이터에 의존하여 생긴다.
16비트의 프리차지 버스에 데이터를 전송하는 경우를 생각한다. 프리차지 버스는 데이터 전송전에 모든 버스의 값을 "0"으로 갖추는 버스이다. 이 버스에 값은 상이하지만 "1"의 비트의 수가 동일한 데이터, 예를 들면, "1"의 비트의 수가 2인 16진수로 "88"과 "11"을 전송한 경우, 전류 파형은 거의 동일한 파형이 된다. 이 이유는 "0"에서 "1"로 변화한 비트의 수가 동일하기 때문에 동일하게 전류를 소 비하고 동일한 전류 파형이 되었기 때문이다. 혹시 "1"의 비트의 수가 1개 다른 데이터 예를 들면, "1"의 비트의 수가 3인 "89"나 "19"를 전송한 경우, "1"의 비트의 수가 2인 데이터와는 소비 전류가 다르다. 이것은 3비트 만큼 버스의 값이 "0"에서 "1"로 변하기 때문에, 그 만큼의 전류가 소비된다. 그 때문에, 앞의 2비트가 변화한 데이터에 비하여 소비 전류가 1비트분 커진다. 일반적으로 "1"의 비트수가 많을수록 전류 파형은 커진다는 규칙성이 있다. 이 규칙성으로부터 전송되는 데이터를 추정할 수 있다.
도 3의 전류 파형은 버스뿐만 아니라 IC 카드용 칩을 구성하고 있는 구성요소가 소비하는 전류의 총합이다. 그러나, IC 카드용 칩과 같은 마이크로 컴퓨터에서는 주로 버스에 데이터가 전송되는 페이즈, 주로 CPU가 연산을 하는 페이즈, 레지스터에 데이터를 기록하는 페이즈 등으로 분리되어 있다. 그 때문에, 페이즈에 주목하면, 주로 어느 부분에 기인한 소비 전류의 차이인지를 알 수 있으며, 그 부분에서의 데이터 조작을 추정할 수 있다.
구체적인 명령으로 어떻게 차가 생기는지를 다음과 같은 좌측 시프트 명령을 예로 들어 설명한다.
이 명령은 레지스터(1)의 내용을 좌측 시프트하고, 레지스터의 비트열이 좌측으로 시프트하고, 최상위 비트의 값이 캐리어로서 컨디션 코드 레지스터로 들어 가는 명령이다. 레지스터 R1의 최상위 비트가 데이터 버스를 경유하여, 컨디션 코드 레지스터에 전송되기 때문에, 전류 파형의 크기를 비교하면 최상위의 비트가 "0"인지 "1"인지를 식별할 가능성이 있다. 혹시 R1에 중요한 데이터가 입력되면, 그 데이터가 1비트이지만, "0"인지 "1"인지를 알 수 있을 가능성이 있다. 특히, DES와 같은 암호 처리에서는 암호키를 시프트하는 조작이 빈발한다. 이 시프트 조작할 때에 암호키의 데이터를 추정할 수 있는 전류 파형이 생기며, 암호키를 추정될 위험성이 있다.
이것은 코프로세서(202)의 연산에서도 동일하다. 연산 내용이 암호키에 의존한 기울기가 있으면, 그 기울기가 소비 전류로부터 구해져 암호키가 추정될 가능성이 있다.
본 발명의 과제는 IC 카드용 칩에서의 데이터 처리와 소비 전류와의 관련성을 줄이는 것이다. 소비 전류와 칩의 처리와의 관련성이 감소하면, 관측한 소비 전류의 파형으로부터 IC 카드칩 내에서의 처리나 암호키의 추측이 곤란해진다. 본 발명의 착안점은 IC 카드칩으로 처리하는 데이터를 변형하여 처리함으로써 소비 전류의 파형으로부터 처리나 암호키의 추측을 곤란하게 하는 것이다.
IC 카드용 칩에 대표되는 내탬퍼 장치는 프로그램을 저장하는 프로그램 저장부와, 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와, 프로그램에 따라서 소정의 처리를 실행하고, 데이터 처리를 행하는 중앙 연산 장치를 가지며, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나 이상의 데이터 처리 수단으로 이루어지는 정보 처리 장치로서 생각할 수 있다. 본 발 명은 처리하고 있는 데이터와 IC 카드용 칩의 소비 전류의 관련성을 줄이기 위한 방법으로서, 처리하는 데이터를 교란용 데이터로 변형하고, 데이터의 처리를 변형한 데이터로 처리하고, 처리 후, 교란용 데이터를 사용하여 역변형하고, 옳은 처리 결과를 구하는 것이다. 데이터 처리 후에 사용하는 교란 데이터는 필요하다면, 데이터 처리와 동일한 처리를 행한 처리 종료의 교란용 데이터를 사용한다. 또한, 교란용 데이터는 데이터 처리마다 랜덤하게 설정한다. 이와 같이 함으로써 데이터 처리에서 본래의 데이터를 사용하지 않고, 매회 다른 변형한 데이터를 사용할 수 있다. 그 때문에, 전류 파형으로부터 데이터를 추정하는 것을 곤란하게 한다.
구체적으로는 우선, 교란용 데이터 Xi를 작성하고 데이터 D1을 변형하고 변형 데이터 H1을 작성한다. 변형의 방법에는 배타적 논리합이나 가산, 승산 등이 있다. 데이터 처리에서는 변형 데이터 H1을 사용하여 데이터 처리를 행하고 처리 완료 변형 데이터 H2를 생성한다. 원래는 데이터 D1을 사용하는 것이지만, 여기서는 변형 데이터 H1을 사용하고 있기 때문에, 변형 데이터 H1을 처리하는 전류 파형으로부터 데이터 D1의 데이터를 추정하는 것은 곤란하다. 변형 데이터 H1은 처리마다 다른 교란용 데이터 Xi로 변형되기 때문에, 매회 다른 데이터로 된다. 그 때문에, 변형 데이터 H1을 처리하는 전류 파형도, 매회 다른 파형이 되며, 그 파형으로부터 변형 데이터 H1을 추정하여도 의미가 없게 된다.
교란용 데이터 Xi도 데이터 D1과 동일하게 데이터 처리를 할 필요가 있는 경우는 교란용 데이터 Xi를 입력으로 하고, 데이터 처리를 행하여 처리 완료 교란용 데이터 Xo를 작성한다. 그리고, 처리 완료 교란용 데이터 Xo를 사용하여 처리 완 료 변형 데이터 H2를 처리하고, 입력 데이터 D1을 입력 데이터 처리 수단에서 처리한 결과인 처리 완료 데이터 D2를 얻는다.
데이터 변형의 방법이 다른 것을 사용할 필요가 있는 경우 등으로는 데이터 변형을 연결하여 실행할 필요가 있는 경우가 있다. 그 경우는 데이터 변형, 변형 데이터 처리, 교란용 데이터 처리, 데이터 역변형 처리를 조합함으로써 본래의 데이터를 데이터 처리하지 않도록 데이터 변형을 연속시킨다.
본 발명은 암호 알고리즘에서의 데이터를 교체하는 전치나 환자 혹은 테이블의 억세스 등의 정보 은폐에 사용할 수 있다. 데이터의 교체인 경우는 배타적 논리합을 데이터 변형으로 사용하는 데이터 처리에 있어서, 변형한 데이터와 교란용 데이터를 동일하게 처리하고, 항상, 변형한 데이터와 교란용 데이터를 배타적 논리합을 실행하면, 본래의 데이터를 얻을 수 있게 변형 처리를 행하는 것이 유효한 방법 중 하나이다.
본 발명의 대표적인 구성 중 하나는 다음과 같다. 프로그램을 저장하는 프로그램 저장부, 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라서 데이터 처리를 행하는 중앙 연산 장치를 가지며 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령이며, 하나 이상의 데이터 처리 수단을 구비하고, 하나의 데이터 처리 수단이 그 입력 데이터를 처리하고 처리 완료 데이터를 출력하는 입력 데이터 처리 수단을 구비하는 정보 처리 장치에 있어서,
교란용 데이터 Xi를 이용하여 입력 데이터 D1을 변형함으로써 변형 데이터 H1을 작성하는 데이터 변형 처리 수단과, 상기 입력 데이터 처리 수단에서 상기 입 력 데이터 D1에 실시하는 연산 처리 OP1 대신에 상기 연산 처리 OP1을 상기 변형 데이터 H1에 대하여 행함으로써 처리 완료 변형 데이터 H2를 작성하는 변형 데이터 처리 수단과, 상기 연산 처리 OP1을 상기 교란용 데이터 Xi에 대하여 행함으로써 처리 완료 교란용 데이터 Xo를 작성하는 교란용 데이터 처리 수단과, 상기 처리 완료 교란용 데이터 Xo를 이용하여 처리 완료 변형 데이터 H2에 대하여 연산 처리 OP2를 행함으로써, 상기 입력 데이터 D1에 실시하는 연산 처리 OP1을 실시한 결과인 처리 완료 데이터 D2를 얻는 데이터 역변형 처리 수단을 갖는 것을 특징으로 하는 정보 처리 장치가 개시된다.
여기서, 상기 OP1은 예를 들면, 후술하는 도 4에 도시하는 실시예에서의 처리를 대응하고 있다. 이에 대하여, 상기 OP1'는, 예를 들면, 후술하는 도 5에 도시하는 실시예에서의 교란 데이터(2)의 처리(510 내지 513과 516 내지 520)가 대응하고 있다. 다른 청구항에 기재된 OP1, OP1'도 마찬가지로 푸는 것이 가능하다.
이하, 본 발명의 실시예에 대하여 도면을 참조하면서 설명한다.
도 1은 IC 카드의 외관을 나타낸 것이다. IC 카드(101)는 ISO7816의 규격에 의해 크기나 IC 카드의 칩(102)의 위치나 접점의 수 및 할당 등이 규정되어 있다.
도 2는 IC 카드용 칩(102)의 내부 구성이다. 구성에 대해서는 종래 기술의 설명에서 이미 진술한 그대로이다. 본 발명은 프로그램(205)으로 처리하는 데이터에 교란을 가함으로써, 처리 중에 생기는 IC 카드용 칩의 하드웨어가 소비하는 전류 파형으로부터 진짜 데이터의 추정을 곤란하게 하는 것이다.
기본적인 생각을 다음 간단한 명령열을 예로 들어 설명한다.
수학식 2는 레지스터 R1의 값을 좌측으로 논리적으로 루프시키는 명령이다. 최상위 비트가 최하위 비트로 이동한다. 그 결과는 레지스터 R1에 저장된다. 그 결과와 레지스터 R2의 내용을 배타적 논리합하고, 그 결과가 레지스터 R2에 저장되는 명령열이다. 이러한 명령은 DES와 같은 암호 알고리즘에서는 빈번하게 출현한다. 수학식 2와 3에서는, 처리하는 데이터를 그대로 취급하고 있으므로 데이터의 내용에 의해서 전류 파형의 크기를 바꾼다. 그 때문에 전류 파형을 관측함으로써 데이터를 추정할 가능성이 있다.
수학식 2와 3의 명령으로 처리하는 데이터를 직접 취급하지 않도록 아래와 같은 명령열로 변경한다.
여기에서, X1과 X2는 멋대로 선택한 난수이며 교란용 데이터이다. 수학식 4와 5에서는, 레지스터 R1과 R2에 난수 X1과 X2의 배타적 논리합을 행하고, 진짜 데이터의 변형을 행하는 변형 처리이다. 수학식 6과 7은 수학식 2와 3과 동일한 데이터 처리이지만 변형 처리를 행하였기 때문에, R1과 R2의 값은 진짜 데이터의 값과는 다른 데이터로 된다. 수학식 8과 9는 교란용 데이터 자체의 데이터 처리를 행하는 것이다. 수학식 10에서 교란용 데이터의 처리 결과와 수학식 7의 처리 결과를 배타적 논리합함으로써, 진짜 데이터로 되돌리는 역변형 처리이다. 이것은 청구항 7의 실시예이다.
이것을 구체적인 수치로 값의 변화를 나타내면 아래와 같다. R1과 R2를 이 하의 값으로 한다.
수학식 2의 결과의 R1의 값은 아래와 같다.
그리고, 수학식 3의 처리 결과는 아래와 같다.
다음에, 본 발명의 변형을 행한 경우에 대해서 나타낸다. 우선, 교란용 데이터를 아래와 같다. 레지스터 R1과 R2의 값은 동일한 것으로 한다.
수학식 4와 5를 처리한 결과, 레지스터 R1과 R2의 값은 아래와 같다.
수학식 6과 7을 처리한 결과의 레지스터 R1과 R2의 값은 아래와 같다.
수학식 8과 9에서, 교란용 데이터 X1, X2도 동일하게 데이터 처리한 결과는 아래와 같다.
그리고 수학식 10의 역변환 처리한 결과, 진짜 데이터를 그대로 취급한 처리 결과는, 수학식 14와 동일한 결과를 얻을 수 있다.
이 예에서 나타낸 바와 같이, 변형 처리를 행하고 변형한 데이터도 교란용 데이터도 동일한 데이터 처리를 행하고, 그 결과를 사용하여 역변형함으로써 원래의 값을 구할 수 있다. 그리고, 데이터 처리에서는, 진짜 데이터가 사용되지 않기 때문에, 그 전류 파형을 보더라도 처리하고 있는 변형 데이터는 추정할 수 있지만, 진짜 데이터를 추정하는 것은 곤란하다.
위에서 구체적인 수치로 나타낸 예를 보다 일반적인 형식으로 나타낸다. 실제의 처리를 아래와 같게 한다.
이것은 i개의 입력 Input을 입력하고 처리 f를 행하고, j개의 출력 Output을 출력하는 처리이다. 수학식 2와 3의 예에서는, R1과 R2의 두개의 입력이며, 출력은 하나이며 R2에 저장되어 있던 예이다. 수학식 24의 처리 중 전류 파형으로부터 처리되는 데이터를 추정하는 것을 곤란하게 하기 때문에 아래와 같이 행한다.
수학식 25는 교란용 데이터 X(i)를 사용하여 입력 데이터 Input(i)를 변형하 고, 변형한 입력 데이터 InputX(i)를 작성하는 변형 처리이다. h는 변형 조작이다. 수학식 26은 변형한 입력 데이터를 사용하여 데이터 처리를 행하는 데이터 처리이다. 수학식 27은 교란용 데이터를 입력 데이터와 동일하도록 처리하는 교란용 데이터 처리이다. 수학식 28은 변형한 입력 데이터의 데이터 처리 결과 OutputX(j)와 교란용 데이터의 처리 결과 Xoutput(j)를 변형의 역변환을 행하는 역변형 처리이다. g는 역변형 조작이다.
앞의 예에서는 수학식 4와 5가 수학식 25의 처리에 대응하고 변형 조작 h는 배타적 논리합이다. 수학식 6과 7은 수학식 26이 변형된 입력 데이터의 데이터 처리에 대응한다. 수학식 8과 9는 수학식 27의 교란용 데이터의 데이터 처리이다. 수학식 10은 수학식 28의 역변형 처리이다. 변형 조작 g는 배타적 논리합이다.
변형 조작 h와 역변형 조작 g를 무엇으로 선택할지는 데이터 처리 f의 특성으로 결정된다. 수학식 2와 3의 처리에서는, 배타적 논리합이 변형 조작 h이며, 역변형 조작 g이기도 하다. 이것은 시프트 조작이나 XOR 조작 등은 배타적 논리합을 변형 조작 h로서 선택함으로써, 역변형 조작 g도 배타적 논리합을 선택할 수 있다. 배타적 논리합은 동일한 데이터의 배타적 논리합을 취하였으면 논리적 제로가 되며 배타적 논리합을 취한 조작이 없어지기 때문이다.
데이터 처리 f가 가감산이면 변형 조작 h에 가산 혹은 감산을 선택하고, 역변형 조작에 감산 혹은 가산을 선택할 수 있다. 예를 들면,
과 같은 조작은 아래와 같은 변형 처리를 행한다.
변형한 입력 데이터를 처리함으로써 변형한 입력 데이터의 처리 결과를 얻을 수 있다.
교란용 데이터와 동일하게 데이터 처리를 행한다.
그리고 역변형 처리를 행한다.
올바른 출력 데이터를 구할 수 있다. 이것은 가감산의 연산에서는 어느 값 을 가산하여 연산하고, 최후의 결과에 감산한 값을 감산하면 옳은 결과가 구해지기 때문이다. 이것은 청구항 8과 청구항 9의 실시예이다.
데이터 처리 f가 승제산이면 변형 조작 h에 승산 혹은 제산을 선택하고, 역변형 조작에 제산 혹은 승산을 선택함으로써, 변형 처리와 역변형 처리를 실현할 수 있다. 이 이유는 가감산과 동일하며 승제산의 연산에서는 어느 값을 승산(제산)하여 연산하고, 최후의 결과에 승산(제산)한 값을 제산(승산)하면 옳은 결과가 구해지기 때문이다. 이것은 청구항 10과 청구항 11의 실시예이다.
데이터 처리 f가 잉여 연산의 가감산이면, 변형 조작 h에 계수 N의 정수배의 가감산을 선택할 수 있다. 예를 들면, 이하와 같은 가감 잉여 연산을 생각한다.
입력 Input(i)를 아래와 같이 변형한다.
그리고, 변형한 입력 데이터를 사용하여 가감 잉여 연산을 행한다.
이 수학식은 수학식 37을 사용함으로써,
이라고 변형할 수 있다. 그리고, 잉여 연산의 특징인
을 사용함으로써 수학식 39의 2번째의 괄호 내의 값은 0이 되며 수학식 39는,
이 된다. 즉, 변형한 입력 데이터의 연산 결과는 본래의 연산 결과와 동일하다. 이것은 잉여 연산의 특징을 사용함으로써, 교란용 데이터의 데이터 처리와 역변형 처리가 불필요한 예이다. 이것은 교란 데이터의 데이터 처리의 결과가,
이 원래 0이 되기 때문에, 교란용 데이터의 데이터 처리와 역변형 처리가 불필요하기 때문이다. 이것은 청구항 12의 실시예이다.
데이터 처리 f가 잉여 연산의 승산이면, 변형 조작 h에 계수 N의 정수배에 1을 더한 것을 사용할 수 있다. 예를 들면, 이하와 같은 승산 잉여 연산을 생각한 다.
입력 Input(i)를 아래와 같이 변형한다.
그리고, 변형한 입력 데이터를 사용하여 승산 잉여 연산을 행한다.
이 식은 수학식 44를 사용함으로써,
으로 변형할 수 있다. 그리고, 잉여 연산의 특징인
을 사용함으로써, 수학식 46은,
이 된다. 즉, 변형한 입력 데이터의 연산 결과는 진짜 연산 결과와 동일하다. 이것도 잉여 연산의 특징을 사용함으로써 교란 데이터의 데이터 처리와 역변형 처리가 불필요한 예이다.
또한, 데이터 처리 f가 잉여 연산의 승산이면 변형 조작 h에 있는 수 X와 계수 N에 대하여 역수인 Y를 사용할 수도 있다.
이러한 수가 간단한 것으로 하며, X가 2이며, Y가 (N+1)/2인 것이 있다. 이것은 변형 조작으로서 X를 걸어두고 역변형으로 X를 건 횟수만큼 Y를 걺으로써 진짜 처리 결과를 구하는 것이다. 예를 들면, 이하와 같은 가감 잉여 연산을 생각한다.
입력 Input(i)을 아래와 같이 변형한다.
그리고, 변형한 입력 데이터를 사용하여 가감 잉여 연산을 행한다.
그리고, 역변형 처리 g로서 X를 건 횟수만큼 Y를 건 것을 선택하면 OutputX에 역변형 처리 g를 조작함으로써 옳은 결과를 얻을 수 있다.
수학식 53에서는 수학식 49의 성질을 사용하였다. 이 예에서는 교란용 데이터의 데이터 처리는 불필요하지만, 교란용 데이터를 건 횟수만큼 계수 N에서 그 역수를 역변형 처리에서 걸면 옳은 결과를 얻을 수 있다. 이것은 청구항 13과 청구항 14의 실시예이다.
지금까지는 데이터 처리 f가 데이터 조작인 예였지만, 테이블로부터의 데이터 추출 조작을 교란하는 것도 전류 파형으로부터 데이터를 추정시키지 않기 때문에 필요하다. 테이블의 데이터의 교란과 테이블의 어드레스의 교란에 관한 실시예에 대하여, 도 33의 테이블로부터 데이터를 추출하는 예를 이용하여 설명한다.
도 33의 테이블의 데이터를 교란용 데이터 X1에서 배타적 논리합을 취한다. 여기서 교란용 데이터로서 "9"를 선택하고 테이블의 값과 9와의 배타적 논리합을 실행한다. 그 결과가 도 34의 테이블이다. 다음에, 테이블의 어드레스를 교란하기 위해서, 행번호와 교란용 데이터 X2로서 선택한 "3"과의 배타적 논리합을 실행하고, 열번호와 교란용 데이터 X3으로서 선택한 "2"와의 배타적 논리합을 실행하고, 테이블을 재배열한다. 그 결과가 도 35이다. 원래의 테이블인 도 33의 테이블의 1행 2열째의 데이터(3301)인 "0"은 교란용 데이터 X1과 배타적 논리합을 실행 한 결과, 도 34의 테이블에서는 "9"(3401)가 된다. 그리고, 행번호와 열번호를 교란용 데이터 X2와 교란용 데이터 X3과 각각 배타적 논리합을 실행한 결과, 3401은 3501의 장소로 옮긴다. 테이블로부터의 데이터 추출 조작을 교란하기 위해서 이러한 테이블을 작성해둔다.
어드레스 계산까지 이미 교란용 데이터 Y1과 Y2로 각각 행번호 변수 Gyou와 열번호 변수 Retsu가 배타적 논리합으로 변형되어 있는 것으로 한다. 즉, 옳은 행번호 Gyou와 열번호 Retsu는 Y1과 Y2를 Gyou와 Retsu에 배타적 논리합을 실행하지 않으면 얻어지지 않는다고 한다. 그것은 아래와 같은 관계이다.
그러나, 이 역변형 처리를 행하여 도 33의 테이블을 사용하는 것은 참된 어드레스 데이터를 사용하기 때문에, 전류 파형으로부터 어드레스 데이터가 추정될 가능성이 있다. 그래서, 우선 도 35의 테이블을 만들 때에 행번호와 열번호를 교란하기 위해서 사용한 교란용 데이터 X2와 교란용 데이터 X3을 이용한다.
그리고, 지금까지 사용해온 교란용 데이터의 역변형 처리를 행한다.
이렇게 함으로써 실제의 행번호나 열번호가 사용되지 않기 때문에, 전류 파형으로부터 그 값을 추정하는 것은 곤란하다. GyouX2와 RetsuX3을 사용하여 도 35의 테이블 TableX1X2X3을 참조하여 DataX1을 추출한다.
도 35의 테이블은 이미 교란용 데이터 X1에서 변형되고 있기 때문에, 이 이후는 교란용 데이터를 X1로서 처리를 행한다. 수학식 56 내지 60까지의 처리에서 참인 데이터를 사용하지 않고 있다. 이것은 청구항 16과 청구항 17의 실시예이다.
일정한 처리마다, 테이블의 데이터의 교란용 데이터 X1이나 행번호의 교란용 데이터 X2, 열번호의 교란용 데이터 X3을 랜덤하게 생성하고, 테이블을 변형해둔다. 이렇게 함으로써, 처리마다 테이블이 변형되기 때문에, 전류 파형으로부터 데이터를 추정하는 것은 곤란하다.
이상, 교란용 데이터의 종류와 데이터의 변형의 방법에 대하여 설명해왔다. 다음에, 그 처리 순서를 나타낸다. 도 4에 기본적인 교란용 데이터를 사용한 정보 은폐 순서의 실시예에 대하여 나타낸다.
도 4는 기본적인 순서이다. 교란용 데이터 생성 수단에서 교란용 데이터 Xi를 생성한다(401). 이 일반적인 방법으로는 난수 발생기나 의사 난수(Pseudo random number)를 사용하여 필요한 길이의 난수를 생성하는 방법이 있다. 다음에, 데이터 변형 처리 수단(406)에서 입력 데이터 D1을 교란용 데이터 Xi(405)로 변형하고 변형 데이터 H1(407)을 생성한다. 변형 방법은 먼저 말한 것과 같이, 배타적 논리합이나 가감산, 승제산 등이 있다. 그리고, 변형 데이터 H1을 사용하여 데이터 처리를 변형 데이터 처리 수단(408)에서 행하고, 처리 완료 변형 데이터 H2를 생성한다. 한편, 교란용 데이터 Xi는 입력 데이터와 동일한 데이터 처리를 교란용 데이터 처리 수단(403)에서 행하고, 처리 완료의 교란용 데이터 Xo(404)를 작성한다. 그리고, 교란용 데이터 Xo와 처리 완료 변형 데이터 H2를 사용하여, 데이터 역변형 처리 수단(410)에서 참인 처리 완료 데이터 D2(411)를 구한다. 데이터 변형 처리 수단(406)이나 데이터 역변형 처리 수단(410)의 방법에는 이미 설명한 배타적 논리합이나 가감산, 승제산, 잉여 연산 등이 있다. 이것은 청구항 1의 실시예이다.
도 5의 실시예는 교란용 데이터를 두개 사용한 예이며 제1 교란용 데이터를 사용한 정보 은폐 처리 중에 제2 교란용 데이터를 사용한 정보 은폐 처리가 포함된경우이다. 주된 흐름은 도 4의 실시예와 동일하다. 제1 교란용 데이터로 변형된 변형 데이터 H1(507)을 데이터 처리하고, 그 처리 결과인 처리 완료 변형 데이터 H2(509)에 제2 교란용 데이터 X2i를 사용하여 제2 데이터 변형 처리 수단(510)에서 변형을 행하여 처리 완료 변형 데이터 H3(511)을 작성한다. 그 데이터를 제2 변형 데이터 처리 수단(512)에서 데이터 처리를 행하여 처리 완료 변형 데이터 H4를 생성하고, 제2 교란용 데이터의 역변환을 제2 데이터 역변형 처리 수단(520)에서 행하여 처리 완료 변형 데이터 H5(521)를 생성한다. 그리고, 제1 교란용 데이터의 역변환을 제1 데이터 역변형 처리 수단(514)에서 행하여 참인 처리 완료 데이터 D2(515)를 구한다. 변형으로 배타적 논리합을 사용한 예는 아래와 같다.
여기서 f1과 f2는 데이터 처리 조작이다. 이 예와 같이, 제2 데이터 처리 f2에서 별도의 데이터 D2를 사용하는 경우에, 그 데이터 D2를 제2 교란용 데이터로 변형하여 사용하는 경우에, 본 실시예의 처리 순서를 사용하면 유효하다. 이것은 청구항 2의 실시예이다.
도 6의 실시예도 교란용 데이터를 두개 사용한 예이다. 도 5의 실시예와의 큰 차이는 제1 교란용 데이터를 사용한 정보 은폐 처리와 제2 교란용 데이터를 사 용한 정보 은폐 처리가 연결되는 경우이다. 그리고, 제1 교란용 데이터에 의한 변환을 복귀하는 역변형 처리 전에 제2 교란용 데이터로 변형해두고, 참인 데이터를 사용한 처리를 은폐하기 위한 순서이다. 제1 교란용 데이터로 변형된 변형 데이터 H1(609)은 제1 변형 데이터 처리 수단(610)에서 데이터 처리를 행하여 그 처리 완료 변형 데이터 H2(611)를 제2 변형 데이터 작성 수단(612)으로 제2 교란용 데이터를 사용하여 변형하여 처리 완료 변형 데이터 H3(613)을 생성한다. 그리고, 제1 교란용 데이터의 역변환을 제1 데이터 역변형 처리 수단(605)에서 행한다. 그 처리 결과인 처리 완료 변형 데이터 H4(606)를 사용하여 제2 변형 데이터 처리 수단(614)에서 행하여 처리 완료 변형 데이터 H5(615)를 생성한다. 그리고, 제2 데이터 역변형 처리 수단(616)에서 역변환을 행하여 참된 처리 완료 데이터 D2(617)를 생성한다. 변형으로 배타적 논리합을 사용한 예는 아래와 같다.
이것은 처리 조작이 복수 있으며, 교란용 데이터를 복수 사용할 필요가 있는 경우에 유효하다. 이것은 청구항 3의 실시예이다.
도 7의 실시예는 교란용 데이터의 면으로부터는 데이터 처리를 미리 계산해두고 처리를 효율화하는 것이다. 미리, 교란용 데이터 처리 수단에서 처리 완료 교란용 데이터 Xo를 생성하고(703), 처리 완료 교란용 데이터 기록 수단(706)에서 기록해둔다. 처리 중에는 데이터 역변형 처리 수단(713)에서는 기록해둔 처리 완료 교란용 데이터(714)를 판독하여 사용한다. 이것은 동일한 데이터 처리를 몇회나 실행하는 경우에는 효율면에서 유효하다. 그러나, 교란용 데이터가 몇회나 사용되기 때문에, 정보의 은폐성에 있어서 도 4의 실시예와 같이 교란용 데이터를 매회 변경하는 쪽이 유효하다. 이것은 처리 속도와 정보 은폐성의 상충관계(trade-off)로부터 결정된다. 이것은 청구항 5의 실시예이다.
도 8의 실시예는 제1과 제2의 교란용 데이터의 역변형을 통합하여 행하고 그 후 그 결과를 사용하여 데이터의 역변형을 행하는 것이다. 제1과 제2의 교란용 데이터는 각각 제1 교란용 데이터 처리 수단(803)과 제2 교란용 데이터 처리 수단(807)에서 처리 완료 교란용 데이터 X1o와 X2o가 만들어진다. 이들의 데이터를 데이터 역변형 통합 수단에서 통합하여 통합 처리 완료 교란용 데이터 Xo를 생성한다. 그 데이터를 사용하고, 제1 변형 데이터 처리(814) 및 제2 변형 데이터 처리(818)를 처리한 결과인 처리 완료 변형 데이터 H4(819)의 역변형 처리 수단(820)에서 행하여 참인 처리 완료 데이터 D2를 생성한다. 이것은 개별로 역변형하는 경우보다도 처리 완료 교란용 데이터를 통합하고, 그 후, 통합하여 변형 처리를 행하는 방법이다. 역변형 처리에 처리 시간이 걸리는 경우에 유효하다. 이것은 청구항 4의 실시예이다.
다음에, 데이터 암호 DES(data encryption standard)를 예로 든 실시예에 대하여 설명한다. 본 발명은 다른 암호에도 사용할 수 있다.
DES는 64비트의 데이터(평문 또는 암호문)를 56비트의 암호키로 암호화와 복호화를 행한다. 암호화와 복호화로 동일한 암호키를 사용하기 때문에, 대칭 암호라고 한다. DES는 트럼프를 자르고, 랜덤하게 하도록 평문(plaintext ; 암호화되는 문장)의 비트를 랜덤하게 교체 암호화한다. 데이터의 교체는 암호키에 따라서 행한다. 복호화할 때는 암호키에 따라서 교체한 순서와 반대로 교체를 행하고 데이터를 원래대로 복귀한다. DES의 처리에서의 교체는 비트 단위와 복수 비트를 모은 단위에서의 두개의 교체 방법이 있다. 전자는 전치(permutation process)라고 부르며, 후자는 환자(substitution process)라고 부른다.
도 9를 이용하여 DES의 암호화의 방법을 설명한다. 변형 처리 a(901)와 변형 처리 b(904), 역변형 처리(916)는 본 발명에 관한 것이며, DES의 본래의 암호 처리에는 관계가 없다. 암호문은 우선, 초기 전치(IP : Initial Permutation ; 902)로 전치된다. 이들은 초기 전치 테이블에 따라서 비트 단위로 암호문의 64비트의 데이터를 교체한다. 이 이후, 초기 전치의 역전치(IP-1 ; 916)까지 일조의 조작을 16단 행한다.
각 1단의 처리는 전단의 결과의 전반 또는 후반의 32비트의 데이터와 암호키를 입력으로 하여 f함수(903)라고 불리는 처리를 행하고, 그 출력을 전단의 나머지의 반정도의 비트를 사용하여 배타적 논리합(909)을 취하는 조작을 행한다. 암호키도 교체가 행해진다. 암호키에 대하여 우선 PC-1이라는 테이블을 사용한 선택적 전치 PC-1(905)가 행해진다. 그 후, PC-2라는 테이블을 사용한 선택 전치 PC-2(908)를 행하고, 암호키의 교체를 행한다. 다음 단에서는 28비트씩을 LS 테이블에 따라서 순회(round)시켜서 사용한다.
*본 실시예에서는, IP 처리 전에 평문을 변형하기 위한 변형 처리 a(901)와 암호키를 변형하기 위한 변형 처리 b(904), 그리고, 마지막으로 역변형하는 처리(916)를 추가한다. 변형 처리 a(901)는 평문을 변형하고 IP 처리(902)나 f 함수(903)의 처리에서, 평문 그 자체를 처리하는 것은 아니고 변형한 평문을 처리함으로써 그 처리의 전류 파형으로부터 평문의 데이터를 추정할 수 없도록 하는 것이다. 변형 처리 b(904)는 PC-1 처리(905)나 LS 처리(907), PC-2 처리(908), f 함수(903)에서 암호키 그 자체를 처리하는 것은 아니고 변형한 암호키를 처리함으로써, 그 처리의 전류 파형으로부터 암호키의 추정을 곤란하게 하는 것이다.
f 함수(303)의 처리를 도 10에 도시한다. 우선, f 함수로의 입력문을 선택적 전치 행렬 E에 기초하여 선택적 전치를 행한다(1002). 다음에, 선택적 전치를 행한 입력 데이터와 암호키와의 배타적 논리합을 취하고(1003), S 박스의 처리를 행하고(1004), P 전치 처리를 행한다(1005). S 박스의 처리는 1003의 배타적 논리합의 처리 결과인 48비트로부터 6비트씩 추출하고, 8개의 S 박스 테이블의 행번호와 열번호를 구하고 4비트의 데이터를 생성하는 처리이다. 각 S 박스 테이블은 6비트마다 나타내고 있는 데이터의 위치에 의해 다르다. P 전치 처리는 P 전치 테이블에 따라서 32비트의 비트 위치를 교체하는 조작이다.
변형 처리 a(901)와 변형 처리 b(902)는 기본적으로 동일한 처리이다. 도 11을 이용하여 변형 처리 a의 평문의 변형 데이터의 작성 처리에 대하여 설명한다. 교란용 데이터 X1을 랜덤하게 생성한다. 이것은 DES의 암호화(혹은 복호화) 처리마다 난수 발생기 또는 의사 난수를 사용하여 생성한다(1102). 매회 다른 교란용 데이터를 사용한다. 다음에 교란용 데이터 X1과 평문 P를 XOR(배타적 논리합)을 실행하고, 변형 평문(변형한 평문)PX1을 생성한다(1103). DES의 경우는, 평문은 64비트이지만, 생성하는 난수는 64비트 또는 8비트라도 상관없다. 그러나, 64비트 이하이면 확장하는 것과 같은 것을 행하고, 64비트의 교란용 데이터 X1을 생성할 필요가 있다. 생성한 난수가 8비트이면, 그것을 8회 되풀이하여 64비트의 교란용 데이터 X1을 생성하여도 좋다. 여기서, 배타적 논리합(XOR)을 사용했기 때문에, 교란용 데이터 X1과 변형 평문 PX1을 XOR하면 평문 P가 생성된다. 이것은 청구항 6의 실시예이기도 하다.
변형 처리 b(904)의 암호키의 변형 데이터의 작성 순서를 도 36에 도시한 바와 같다. 평문과 교란용 데이터 X1 대신에 암호키 K와 교란용 데이터 X2를 이용하고 있는 점이 도 11의 실시예와 다른 것뿐이다. DES에서는 암호키는 평문과 동일한 64비트이다. 처리에서 변형된 암호키 KX2가 생성된다.
다음에 IP 처리(902)에 대하여 설명한다. IP 처리는 도 37에 도시하는 테이블에 따라서 평문 64비트의 열을 교체하는 것이다. 테이블에 따라서 출력의 제1 비트는 입력의 제58 비트, 출력의 제2 비트는 입력의 제50 비트, 출력의 제64 비트는 입력의 제7 비트와 교체한다. 본 실시예에서의 IP 처리를 도 12를 이용하여 설 명한다. 우선, 변형 평문 PX1을 IP 처리하고, IP 처리 완료 변형 평문 PX1IP를 생성한다(1202). 비트의 교체는 도 37의 테이블에 따른다. 다음에 교란용 데이터 X1도 동일하게 IP 처리하고, IP 처리 완료 교란용 데이터 X1IP를 생성한다(1203). IP 처리 완료 변형 평문 PX1IP와 IP 처리 완료 교란용 데이터 X1IP란 배타적 논리합을 취하면, 평문을 IP 처리한 결과를 생성할 수 있다. 이것은 IP 처리가 비트의 이동이기 때문에, 교란용 데이터도 변형 평문 PX1과 동일하게 이동하였기 때문에, 비트마다 배타적 논리합을 실행하면 참된 데이터를 구한다는 관계가 유지되기 때문이다. IP 처리의 하위 32비트가 제1단의 f 함수(903)와 제2단의 배타적 논리합에 사용되며, 상위 32비트는 배타적 논리합(909)의 입력이 된다. 이것은 청구항 1, 청구항 7, 청구항 18, 청구항 20의 실시예이다.
IP 처리에서는, 변형 평문 PX1의 비트의 값은 원래의 평문의 비트의 값과 다르기 때문에, IP 처리의 전류 파형을 보아도 평문의 데이터를 추정하는 것은 곤란하다. "1"의 비트의 수에 의해서 소비 전류는 커지지만, 변형 평문에서의 "1"의 비트의 수는 평문의 "1"의 비트의 수와 아무런 관계는 없다. 그 때문에, 전류 파형의 크기로부터 평문의 데이터를 추정하는 것은 곤란하다. 이와 같이, 평문을 교란용 데이터로 변형함으로써, 처리 중 전류 파형을 관측하여도 원래의 데이터를 추정하는 것이 곤란하게 할 수 있다.
PC-1 처리는 IP 처리와 거의 동일하다. 도 38의 PC-1용 변환 테이블을 사용하고 64비트의 암호키를 패리티 비트의 8비트를 제거하여 56비트로 하며 비트의 순서를 교체하는 것이다. 도 38의 테이블의 견해는 도 37의 테이블의 보는 방법과 동일하다. PC-1 처리 완료의 변형 암호키 KX2PCl과 PC-1 처리 완료의 교란용 데이터 X2PC1은 배타적 논리합을 실행하면, 옳은 PC-1 처리 완료의 암호키를 구한다.
LS 처리는 PC-1 처리에서 생성된 58비트의 키를 우측과 좌측으로 28 비트씩에 나누어서 각각 LS 테이블에 따라서 좌측으로 1비트 혹은 2비트 시프트하는 것이다. 실시예를 도 15를 이용하여 설명한다. 우선, 1502에서 PC-1 처리 완료 변형 암호키 KX2PC1한 결과를 LS 처리하여 PC-1 및 LS 처리 완료 변형 암호키 KX2PC1LS를 생성하고, 1503에서 PC-1 처리 완료 교란용 데이터 X2PC1한 결과를 LS 처리하여 PC-1 및 LS 처리 완료 교란용 데이터 X2PC1LS를 생성한다. LS 처리도 비트 위치의 교체이기 때문에, PC-1 및 LS 처리 완료 변형 암호키KX2PC1LS와 PC-1 및 LS 처리 완료 교란용 데이터 X2PC1LS의 배타적 논리합을 실행하면 참된 LS를 처리한 암호키의 결과가 얻어진다. LS 처리에서도 교란용 데이터를 사용하였기 때문에, 실제로 조작되어 있는 데이터는 참된 암호키와는 다르기 때문에 전류 파형을 관측하여도 암호키의 추정은 곤란하다.
PC-2처리는 LS의 처리 결과의 56비트를 PC-2 테이블에 따라서 48비트에 제약형 전치한다. 1402에서 PC-1 및 LS 처리 완료 변형 암호키 KX2PC1LS를 PC-2 처리하여 PC-1 및 LS, PC-2 처리 완료 변형 암호키 KX2PClLSPC2를 생성한다. 1403에서 PC-1 및 LS 처리 완료 교란용 데이터 X2PC1LS를 PC-2 처리하여 PC-1 및 LS, PC-2 처리 완료 교란용 데이터 X2PC1LSPC2를 생성한다. 기본적으로는 테이블을 사용한 전치이기 때문에, PC-1 처리와 기본적으로 동일하다.
다음에, f 함수(903)의 처리에 대하여 설명한다. f 함수는, 도 10에 도시한 바와 같이, 선택적 전치 E 처리(1002), 암호키와 선택적 전치의 실행 결과의 배타적 논리합(1003), S 박스 처리(1004), P 전치 처리(1005)로 이루어진다.
선택적 전치 E 처리에 대하여 도 16을 이용하여 설명한다. 선택적 전치 E는 IP 처리와 동일하게 도 28의 전치 테이블을 사용하여 비트의 열을 변경하는 것이다. 1602에서 IP 처리 완료 변형 평문 PXIP를 선택적 전치 E 처리하고, IP 처리 및 E 전치 처리 완료 변형 평문 PXIPE를 생성한다. 그리고, 1603에서 IP 처리 완료 교란용 데이터 XIP를 선택적 전치 E 처리하고, IP 처리 및 E 전치 처리 완료 교란용 데이터 XIPE를 생성한다. IP 처리나 PC-1 처리와 동일하게, IP 처리 및 E 전치 처리 완료 변형 평문 PXIPE와 IP 처리 및 E 전치 처리 완료 교란용 데이터 XIPE를 배타적 논리합을 취하면, 옳은 IP 처리 및 E 전치 처리 완료 평문을 구한다. 또한, 전치 E 테이블을 사용하여 비트에 넣을지를 행할 때도 비트의 값은 변형되어 있는 비트의 값이므로, 그 처리의 전류 파형을 보아도 참된 데이터를 추정하는 것은 곤란하다.
다음에, f 함수에서의 2번째의 처리인 암호키와 선택적 전치의 실행 결과의 배타적 논리합의 처리를 행한다. 이 처리에 대하여, 도 17을 이용하여 설명한다. 1702에서는 평문으로부터 생성한 IP 처리 및 E 전치 처리 완료 변형 평문 PXIPE와, 암호키로부터 생성한 PC-1 및 LS, PC-2 처리 완료 변형 암호키 KX2PC1LSPC2를 XOR하고, S 박스 처리의 입력이 되는 48비트의 S 박스 입력 데이터 SinputX를 작성한다. 다음에, 1703에서는, 평문용 교란용 데이터로부터 생성한 IP 처리 및 E 전치 처리 완료 교란용 데이터 XIPE와, 암호키용 교란용 데이터로부터 생성한 PC-1 및 LS, PC-2 처리 완료 교란용 데이터 X2PC1LSPC2를 XOR하고, S 박스 입력 데이터 SinputX용 교란 데이터인 S 박스 입력 데이터 교란용 데이터 XSinput를 생성한다. 배타적 논리합의 성질로부터 S 박스 입력 데이터 교란용 데이터 XSinput은 두개의 교란용 데이터(PC-1 및 LS, PC-2 처리 완료 교란용 데이터 X2PC1LSPC2와, PC-1 및 LS, PC-2 처리 완료 교란용 데이터 X2PC1LSPC2)를 XOR 함으로써 생성할 수 있다. 이것을 간단한 예로 나타낸다. 여기에서, 평문을 P로 키를 K, 그 변형 평문을 PX1, 변형키를 KX2로 한다. 이들의 관계는 수학식 63과 64이다. X1과 X2는, 평문과 키의 교란용 데이터이다.
그렇다면, P과 K의 배타적 논리합을 실행한 결과를 Z로 하면, PX1과 PX2의 배타적 논리합을 실행한 결과 Z1과 Z의 관계는 아래와 같다.
즉, Z1을 참된 데이터로 복귀하기 위한 교란용 데이터로서 P와 K의 교란용 데이터를 배타적 논리합을 사용하면 된다는 것을 알 수 있다. 암호키와 선택적 전치의 실행 결과를 배타적 논리합하는 처리에서는 S 박스 입력 데이터 SinputX의 교란용 데이터로서 평문용 교란용 데이터로부터 생성한 IP 처리 및 E 전치 처리 완료 교란용 데이터 XIPE와, 암호키용 교란용 데이터로부터 생성한 PC-1 및 LS, PC-2 처리 완료 교란용 데이터 X2PC1LSPC2를 XOR하여 생성한 S 박스 입력 데이터 교란용 데이터 XSinput을 사용하면 된다는 것을 알 수 있다. 이것은 청구항 18의 실시예이다.
다음에, S 박스의 처리에 대하여 도 18을 이용하여 설명한다. S 박스 입력 데이터 SinputX로부터 6비트씩 추출하여 8개의 S 박스에 대하여 처리를 행한다. DES에서 사용되는 1번째의 S 박스를 도 25에서 도시한다. 8개의 S 박스의 형식은 동일하지만 각각 필드의 데이터가 다르다. 각각의 S 박스의 처리에서는, 우선, S 박스 입력 데이터 Sinput의 상위 1번째의 6비트의 서브 데이터 SubSinputX(i)를 추출한다(1805). 미리 작성해둔 S 박스를 변형한 변형 S 박스 테이블의 어드레스 교란용 데이터 Xsa(i)와 SubSinputX(i)를 XOR하여 SubSinputXXsa(i)를 생성한다 (1806). 그 SubSinputXsa(i)를 S 박스 입력 데이터 교란용 데이터 XSinput의 상위 i번째의 6비트와 XOR하여 SubSinputXsa(i)를 생성한다(1807). SubSinputXsa(i)는 i번째의 S 박스를 추출하기 위한 진짜 어드레스 데이터에 대하여 어드레스 교란용 데이터 Xsa(i)가 배타적 논리합된 값이다. SubSinputX(i)와 XSinput(i)를 배타적 논리합(XOR)하면, 그것은 참인 데이터로 되돌아가는 것이므로, XSinput(i)과 배타적 논리합하기 전에 SubSinputX(i)와 Xsa(i)의 배타적 논리합을 행하고, 그 후로 XSinput(i)를 배타적 논리합(XOR)을 실행한다. 이에 따라, 진짜 데이터의 처리를 행할 필요가 없어지며, 그 전류 파형으로부터 데이터를 추정하는 것이 곤란해졌다. 다음에, SubSinputXsa(i)를 사용하여 변형 S 박스 테이블의 어드레스를 계산한다(1808). 본래의 S 박스의 테이블을 참조하기 위한 어드레스가 변형되기 때문에, 테이블을 미리 변형해둘 필요가 있다. 계산한 어드레스를 기초로 변형 S 박스 테이블 S(i)로부터 S 박스 출력 데이터 SoutputX3(i)을 추출한다(1809). 그리고, 동시에 S 박스의 출력 데이터 SoutputX3(i)용 교란용 데이터 X3(i)를 추출한다(1810). 8개의 S 박스를 처리하고 SoutputX3(i)과 X3(i)을 i를 1 내지 8까지의 데이터를 각각 연결함으로써 SoutputX3과 X3을 생성한다. 이 이후는 처리 데이터는 SoutputX3이 되며 교란용 데이터는 X3이 된다.
다음에, 변형 S 박스 테이블의 생성 방법에 대하여 도 23과 도 24를 이용하여 설명한다. 여기의 S 박스에서 S(i) 박스용 어드레스 교란용 데이터 Xsa(i)와 데이터 교란용 데이터 X3(i)를 작성한다(2306). Xsa(i)는 6비트이며, X3(i)는 4비트이다. 교란용 데이터 X3은 4비트씩 작성한 X3(i)를 8개 모은 32비트의 데이터이 다. 다음에, 변형 S(i) 박스 테이블 작성 루틴을 호출한다(2307). i번째의 변형 S 박스 테이블 작성 루틴의 처리를 도 24에서 설명한다. k는 행번을 지정하고, l은 열 번호를 지정한다. k행 l열의 처리는 2408로부터 2413이다. 1번째의 S 박스의 테이블은 도 25에 도시한 그대로이다. 우선, i번째의 오리지널의 S 박스의 행번호 k 열번호(1)의 데이터 d를 추출한다(2408). 그리고, 그 데이터 d와 교란용 데이터 X3(i)를 배타적 논리합을 취하고 그것을 d2로 한다(2409). 이것은 교란용 데이터를 "7"로 하면, 원래 S 박스의 데이터(2504)에 대하여 그 결과는 2604가 된다. 이것을 모든 필드에 행하면 도 26과 같다. 도 26의 테이블은 도 25의 1번째의 S 박스의 데이터에 대하여 교란용 데이터를 "7"로서 배타적 논리합을 취한 것이다.
다음에 어드레스의 교란을 행한다. 우선 Xsa1을 Xsa(i)의 상위 1비트와 하위 1비트로부터 만든 2비트로 하고, Xsa2를 Xsa(i)의 상위 2비트로부터 5비트까지로 만든 4비트의 데이터로 한다. 이것은 S 박스의 어드레스의 계산 방법에 유래하고 있다. 그리고, 도 26의 행 번호와 열 번호를 각각 k와 l로 하면, 각각 Xsa1과 Xsa2를 배타적 논리합을 행한다(2412). 새롭게 가능한 행번호와 열번호를 k2와 l2로 하면, i번째의 변형 S 박스 테이블 S(i)의 k2행 12열에 데이터 d2를 저장한다(2413). 이 처리의 예를 도 27에 도시한다. 도 27은 도 26의 행과 열에 대하여 교란용 데이터로서 "2"와 "9"를 선택하여 작성한 것이다. 알기쉽게, 행과 열의 데이터의 위치는 그대로 하여 행과 열의 번호만을 변경하고 있다. 도 25에서, 3행 1열의 데이터(12 ; 2504)는 도 27에서는 1행 8열로 옮기고, 값이 11로 변형되어 있 다. 이 예에서는 데이터의 교란용 데이터는 "7"이며 어드레스용 교란 데이터는 행이 "2"이며 열이 "9"이다. 이와 같이 하여 8개의 S 박스를 변형한다. 본 실시예에서는 이 처리는 DES의 최초에 행해둔다. 변형한 S 박스 테이블은 DES의 16단으로 사용한다. 이것은 청구항5의 실시예이기도 하다.
S 박스의 처리가 종료하면 처리 데이터는 32비트의 SoutputX3가 되며, 교란용 데이터는 32비트의 X3이 된다. 이것이 f 함수의 최후의 처리인 전치 P 처리(1005)의 입력이 된다. 전치 P 처리를 도 19를 이용하여 설명한다. S 박스의 출력인 SinputX3을 전치 P하여 SinputX3P를 생성한다(1902). SinputX3의 교란용 데이터 X3을 전치 P하여 X3P를 생성한다(1903). 전치 P에 사용하는 테이블은 도 29와 같다. 이 테이블의 사용 방법도 IP 처리의 테이블과 동일하다.
f 함수의 처리가 끝나면, 전치 P 처리와 전단의 결과의 XOR을 행한다(909나 914). 이것은 우선 S 박스의 결과를 전치 P한 SinputX3P와 전단의 결과를 XOR 한다(2002). 그리고, X3P와 전단의 교란용 데이터 X를 XOR한다(2003). 이 XOR의 처리는 선택적 전치 E 처리 결과와 암호키의 XOR 처리(1701)와 동일하다.
DES에서는 마지막으로 IP-1 처리(915)를 행한다. 이 처리를 도 21에 도시한다. IP-1 처리는 IP 처리와 유사한 것과 같은 비트의 열의 교체 처리이며, IP 테이블 대신에 IP-1 테이블을 사용한다(2102). 지금까지의 처리 결과를 IP-1 처리하고 마찬가지로 교란용 데이터 X를 IP-1 처리한다(2103).
마지막으로, 옳은 처리 결과로 복귀하기 위해서, 역변형 처리를 행한다(916). 역변형 처리를 도 22에 도시한다. IP-1 처리 결과를 IP-1 처리한 교란 용 데이터 X에서 XOR함으로써 옳은 결과를 구한다. 여기서, 처음으로 변형되어 있지 않은 옳은 처리 결과가 얻어진다.
지금까지 처리되는 데이터의 은폐에 대하여 진술해왔지만, 교란용 데이터도 은폐할 필요가 있는 경우가 있다. 기본적 생각은 교란용 데이터를 교란용의 교란용 데이터 XR과 배타적 논리합을 취하여 변형하는 것이다. 다만, XR은 고정으로 해두고 미리 비트 위치의 교체 등을 계산하여 역변형을 위한 XRo를 구해둔다. 그리고, 교란용 데이터가 필요해질 때, XRo를 사용하여 원래의 교란용 데이터를 구함으로써 교란용 데이터의 변형과 역변형의 실시와 효율화를 꾀한다. 우선, 암호키용 교란용 데이터를 예로 들어 설명한다. 도 30의 처리는 암호키용 교란용 데이터를 교란용의 교란용 데이터 XR에서 배타적 논리합을 취하는 변형 조작이다. 변형 처리 b(3601)에서 교란용 데이터 X2를 생성한 후에 도 30의 교란용 데이터의 변형 처리를 행한다. 암호키용의 교란용 데이터 X2는 PC-1 처리나 LS 처리, PC-2 처리를 받는다. 이들은 미리 결정된 비트의 위치의 교체이므로, 미리 결정되고 있는 값 XR에 대하여, PC-2처리까지 실행할 때의 교란용 데이터 XRo를 구해두고 기록해둔다(3102 내지 3105). PC-2 처리한 후에, 1403에서 생성한 PC-1 및 LS, PC-2 처리 완료 교란용 데이터 X2PC1LSPC2에 기록해둔 교란용 데이터 XRo를 XOR하여(3202), 본래의 PC-1 및 LS, PC-2 처리 완료 교란용 데이터 X2PC1LSPC2를 구할 수 있다. 이와 같이 함으로써, 교란용 데이터도 은폐할 수 있다. 여기서, 교란용의 교란용 데이터 XR과 그 처리 종료 교란 변형 데이터 XRo는 동일한 데이터를 사용하여도 좋다.
DES에서의 실시예는 암호화이지만, DES의 알고리즘은 복호화라도 거의 동일하기 때문에, 본 실시예는 거의 변경하지 않고 적용할 수 있다. 또한, DES 이외의 암호 알고리즘도 전치 처리나 환자 처리, 잉여 연산을 많이 사용하고 있기 때문에 본 발명을 적용하고, 데이터를 변형하고 전류 파형으로부터 본래의 데이터를 추정하는 것을 곤란하게 할 수 있다.
본 발명에 따르면, IC 카드 칩에서의 처리 데이터를 변형함으로써, 소비 전류의 파형으로부터 처리나 암호키의 추측을 곤란하게 된다.
Claims (16)
- 데이터를 연산하는 연산 장치와,데이터 및 프로그램을 기억하는 기억 장치와,상기 연산 장치가 상기 기억 장치에 액세스하기 위한 데이터 버스를 구비하고,상기 연산 장치가 상기 프로그램을 실행함으로써,제1 교란용 데이터를 생성하는 교란용 데이터 생성 처리와,제2 교란용 데이터를 생성하는 교란용 데이터 생성 처리와,입력 데이터를 상기 제1 교란용 데이터를 이용하여 암호화하여 변형 데이터를 출력하는 제1 데이터 변형 처리와,상기 변형 데이터에 소정의 처리인 제1 처리를 행하고, 처리 결과인 제1 처리 완료 변형 데이터를 출력하는 제1 변형 데이터 처리와,상기 제1 교란용 데이터에 상기 제1 처리를 행하고, 처리 결과인 제1 처리 완료 교란용 데이터를 출력하는 제1 교란용 데이터 처리와,상기 제1 처리 완료 변형 데이터를, 상기 제2 교란용 데이터를 이용하여 더 암호화하여 제2 처리 완료 변형 데이터를 출력하는 제2 데이터 변형 처리와,상기 제2 처리 완료 변형 데이터에 소정의 처리인 제2처리를 행하고, 처리 결과인 제3 처리 완료 변형 데이터를 출력하는 제2 변형 데이터 처리와,상기 제2 교란용 데이터에 상기 제2 처리를 행하고, 처리 결과인 제2 처리 완료 교란용 데이터를 출력하는 제2 교란용 데이터 처리와,상기 제2 처리 완료 교란용 데이터를 이용하여, 상기 제3 처리 완료 변형 데이터를 복호화한 처리 결과인 처리 완료 변형 데이터를 출력하는 제2 데이터 역변형 처리와,상기 제1 처리 완료 교란용 데이터를 이용하여, 상기 처리 완료 변형 데이터를 더 복호화하고 처리 결과인 처리 완료 데이터를 출력하는 제1 데이터 역변형 처리를 행하는 것을 특징으로 하는 정보 처리 장치.
- 데이터를 연산하는 연산 장치와,데이터 및 프로그램을 기억하는 기억 장치와,상기 연산 장치가 상기 기억 장치에 액세스하기 위한 데이터 버스를 구비하고,상기 연산 장치가, 상기 프로그램을 실행함으로써,제1 교란용 데이터를 생성하는 교란용 데이터 생성 처리와,제2 교란용 데이터를 생성하는 교란용 데이터 생성 처리와,입력 데이터를 상기 제1 교란용 데이터를 이용하여 암호화하여 변형 데이터를 출력하는 제1 데이터 변형 처리와,상기 변형 데이터에 소정의 처리인 제1 처리를 행하고, 처리 결과인 제1 처리 완료 변형 데이터를 출력하는 제1 변형 데이터 처리와,상기 제1 교란용 데이터에 상기 제1 처리를 행하고, 처리 결과인 제1 처리 완료 교란용 데이터를 출력하는 제1 교란용 데이터 처리와,상기 제1 처리 완료 변형 데이터를 상기 제2 교란용 데이터를 이용하여 더 암호화하여 제2 처리 완료 변형 데이터를 출력하는 제2 데이터 변형 처리와,상기 제1 처리 완료 교란용 데이터를 이용하여, 상기 제2 처리 완료 변형 데이터를 복호화하고 처리 결과인 제1 처리 완료 변형 데이터를 출력하는 제1 데이터 역변형 처리와,상기 제1 처리 완료 변형 데이터에 소정의 처리인 제2 처리를 행하고, 처리 결과인 제2 처리 완료 변형 데이터를 출력하는 제2 변형 데이터 처리와,상기 제2 교란용 데이터에 상기 제2 처리를 행하고, 처리 결과인 제2 처리 완료 교란용 데이터를 출력하는 제2 교란용 데이터 처리와,상기 제2 처리 완료 교란용 데이터를 이용하여, 상기 제2 처리 완료 변형 데이터를 더 복호화하고 처리 결과인 처리 완료 데이터를 출력하는 제2 데이터 역변형 처리를 행하는 것을 특징으로 하는 정보 처리 장치.
- 데이터를 연산하는 연산 장치와,데이터 및 프로그램을 기억하는 기억 장치와,상기 연산 장치가 상기 기억 장치에 액세스 하기 위한 데이터 버스를 구비하고,상기 연산 장치가, 상기 프로그램을 실행함으로써,제1 교란용 데이터를 생성하는 교란용 데이터 생성 처리와,제2 교란용 데이터를 생성하는 교란용 데이터 생성 처리와,입력 데이터를 상기 제1 교란용 데이터를 이용하여 암호화하여 변형 데이터를 출력하는 제1 데이터 변형 처리와,상기 변형 데이터에 소정의 처리인 제1 처리를 행하고, 처리 결과인 제1 처리 완료 변형 데이터를 출력하는 제1 변형 데이터 처리와,상기 제1 교란용 데이터에 상기 제1 처리를 행하고, 처리 결과인 제1 처리 완료 교란용 데이터를 출력하는 제1 교란용 데이터 처리와,상기 제1 처리 완료 변형 데이터를 상기 제2 교란용 데이터를 이용하여 더 암호화하여 제2 처리 완료 변형 데이터를 출력하는 제2 데이터 변형 처리와,상기 제2 처리 완료 변형 데이터에 소정의 처리인 제2 처리를 행하고, 처리 결과인 제3 처리 완료 변형 데이터를 출력하는 제2 변형 데이터 처리와,상기 제2 교란용 데이터에 상기 제2 처리를 행하고, 처리 결과인 제2 처리 완료 교란용 데이터를 출력하는 제2 교란용 데이터 처리와,상기 제1 처리 완료 교란용 데이터와 상기 제2 처리 완료 교란용 데이터를 통합하고, 통합 처리 완료 교란용 데이터를 출력하는 데이터 역변환 통합 처리와,상기 통합 처리 완료 교란용 데이터를 이용하여, 상기 제3 처리 완료 변형 데이터를 복호화하고 처리 결과인 처리 완료 데이터를 출력하는 데이터 역변환 처리를 행하는 것을 특징으로 하는 정보 처리 장치.
- 제1항 또는 제2항에 있어서,상기 제1 및 제2 교란용 데이터 생성 처리에 있어서, 상기 제1 및 제2 교란용 데이터로서 난수를 사용하는 것을 특징으로 하는 정보 처리 장치.
- 제1항 또는 제2항에 있어서,상기 제1 및 제2 데이터 변형 처리는, 교란용 데이터와의 배타적 논리합 연산을 행하는 처리이고,상기 제1 및 제2 데이터 역변형 처리는, 상기 처리 완료 교란용 데이터와의 배타적 논리합 연산을 행하는 처리인 것을 특징으로 하는 정보 처리 장치.
- 제1항 또는 제2항에 있어서,상기 제1 및 제2 데이터 변형 처리는, 상기 교란용 데이터와의 가감산을 행하는 처리이고,상기 제1 및 제2 데이터 역변형 처리는, 상기 처리 완료 교란용 데이터와의 가감산을 행하는 처리인 것을 특징으로 하는 정보 처리 장치.
- 제1항 또는 제2항에 있어서,상기 제1 및 제2 데이터 변형 처리는, 상기 교란용 데이터와의 승제 연산을 행하는 처리이고,상기 제1 및 제2 데이터 역변형 처리는, 상기 처리 완료 교란용 데이터와의 승제 연산의 결과를 상기 처리 완료 데이터로서 출력하는 처리인 것을 특징으로 하는 정보 처리 장치.
- 제1항 또는 제2항에 있어서,상기 제1 및 제2 데이터 변형 처리는, 교란용 데이터와의 배타적 논리합 연산을 행하는 처리이고,상기 제1 및 제2 처리는, 전치 처리 또는 환자 처리이며,상기 제1 및 제2 데이터 역변형 처리는, 상기 처리 완료 교란용 데이터와의 배타적 논리합 연산을 행하는 처리인 것을 특징으로 하는 정보 처리 장치.
- 데이터를 연산하는 연산 장치와,데이터 및 프로그램을 기억하는 기억 장치와,상기 연산 장치가 상기 기억 장치에 액세스하기 위한 데이터 버스를 구비하고,상기 연산 장치가, 상기 프로그램을 실행함으로써,교란용 데이터를 생성하는 교란용 데이터 생성 처리와,상기 교란용 데이터를 이용한 소정의 처리에 의하여, 상기 데이터가 저장되어 있는 어드레스를 새로운 어드레스인 교란 어드레스로 변경하고, 상기 교란 어드 레스에 상기 데이터를 다시 저장하는 처리와,상기 교란용 데이터를 이용한 상기 소정의 처리에 의하여, 상기 어드레스로부터 상기 교란 어드레스를 생성하고, 상기 데이터에 액세스하는 처리를 행하는 것을 특징으로 하는 정보 처리 장치.
- 제9항에 있어서,상기 교란용 데이터 생성 처리에 있어서, 상기 교란용 데이터로서 난수를 사용하는 것을 특징으로 하는 정보 처리 장치.
- 제9항에 있어서,상기 교란용 데이터는 데이터 처리마다 랜덤하게 설정되는 것을 특징으로 하는 정보 처리 장치.
- 제9항에 있어서,상기 소정의 처리는, 상기 교란용 데이터와의 배타적 논리합 연산을 행하는 처리인 것을 특징으로 하는 정보 처리 장치.
- 데이터를 연산하는 연산 장치와,데이터 및 프로그램을 기억하는 기억 장치와,상기 연산 장치가 상기 기억 장치에 액세스하기 위한 데이터 버스를 구비하 고,상기 연산 장치가, 상기 프로그램을 실행함으로써,제1 교란용 데이터를 생성하는 제1 교란용 데이터 생성 처리와,제2 교란용 데이터를 생성하는 제2 교란용 데이터 생성 처리와,상기 제1 교란용 데이터를 이용하여 소정의 처리인 제1 처리를 행하고, 상기 데이터가 저장되어 있는 어드레스 정보를 새로운 어드레스인 제1 교란 어드레스 정보로 하며, 상기 제1 교란 어드레스 정보가 나타내는 상기 기억 장치의 메모리 어드레스에 상기 데이터를 다시 저장하는 처리와,상기 제2 교란용 데이터를 이용하여, 소정의 처리인 제2 처리를 행하고, 상기 데이터가 저장되어 있는 어드레스 정보로부터 제2 교란 어드레스 정보를 생성하는 처리와,상기 제1 교란용 데이터를 이용하여, 상기 제1 처리를 행하고, 상기 제2 교란 어드레스 정보로부터 제3 교란 어드레스 정보를 생성하는 처리와,상기 제3 교란 어드레스 정보를 이용한 소정의 처리와,상기 제2 교란용 어드레스 데이터를 이용하여 상기 제2 처리를 행함으로써, 상기 제3 교란 어드레스 정보로부터 상기 제1 교란 어드레스 정보를 생성하고, 상기 데이터에 액세스하는 처리를 행하는 것을 특징으로 하는 정보 처리 장치.
- 제13항에 있어서,상기 제1 및 제2 교란용 데이터 생성 처리에 있어서, 제1 및 제2 교란용 데이터로서 각각 난수를 사용하는 것을 특징으로 하는 정보 처리 장치.
- 제13항에 있어서,상기 제1 및 제2 교란용 데이터는 데이터 처리마다 랜덤하게 설정되는 것을 특징으로 하는 정보 처리 장치.
- 제13항에 있어서,상기 제1 및 제2 처리는, 각각 제1 및 제2 교란용 데이터와의 배타적 논리합 연산을 행하는 처리인 것을 특징으로 하는 정보 처리 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35415698A JP4317607B2 (ja) | 1998-12-14 | 1998-12-14 | 情報処理装置、耐タンパ処理装置 |
JPJP-P-1998-00354156 | 1998-12-14 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990057028A Division KR100726903B1 (ko) | 1998-12-14 | 1999-12-13 | 정보 처리 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060105691A KR20060105691A (ko) | 2006-10-11 |
KR100674550B1 true KR100674550B1 (ko) | 2007-01-29 |
Family
ID=18435672
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990057028A KR100726903B1 (ko) | 1998-12-14 | 1999-12-13 | 정보 처리 장치 |
KR1020060076642A KR100674550B1 (ko) | 1998-12-14 | 2006-08-14 | 정보 처리 장치 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019990057028A KR100726903B1 (ko) | 1998-12-14 | 1999-12-13 | 정보 처리 장치 |
Country Status (7)
Country | Link |
---|---|
US (2) | US6631471B1 (ko) |
EP (1) | EP1011081B1 (ko) |
JP (1) | JP4317607B2 (ko) |
KR (2) | KR100726903B1 (ko) |
CN (1) | CN1200392C (ko) |
DE (1) | DE69906022T2 (ko) |
TW (1) | TW517189B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150107331A (ko) * | 2014-03-14 | 2015-09-23 | 국방과학연구소 | 시계열 데이터베이스의 프라이버시 보호에서 상관 관계 보존을 위한 노이즈 생성 방법 및 장치 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8457302B1 (en) * | 1998-05-18 | 2013-06-04 | Giesecke & Devrient Gmbh | Access-controlled data storage medium |
FR2789776B1 (fr) * | 1999-02-17 | 2001-04-06 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete |
FR2799851B1 (fr) * | 1999-10-14 | 2002-01-25 | Gemplus Card Int | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type rsa |
DE19963408A1 (de) * | 1999-12-28 | 2001-08-30 | Giesecke & Devrient Gmbh | Tragbarer Datenträger mit Zugriffsschutz durch Schlüsselteilung |
DE19963407A1 (de) * | 1999-12-28 | 2001-07-12 | Giesecke & Devrient Gmbh | Tragbarer Datenträger mit Zugriffsschutz durch Nachrichtenverfremdung |
FR2808360B1 (fr) * | 2000-04-28 | 2002-06-28 | Gemplus Card Int | Procede de contre mesure dans un microcircuit mettant en oeuvre le procede et carte a puce comportant ledit microcircuit |
EP1496420B1 (de) * | 2000-05-22 | 2007-07-04 | Infineon Technologies AG | Sicherheits-Datenverarbeitungseinheit sowie dazugehöriges Verfahren |
FR2810480B1 (fr) * | 2000-06-20 | 2002-11-15 | Gemplus Card Int | Traitement de donnees avec une cle |
US20020021801A1 (en) * | 2000-07-13 | 2002-02-21 | Takeshi Shimoyama | Computing apparatus using an SPN structure in an F function and a computation method thereof |
JP2002247025A (ja) * | 2001-02-22 | 2002-08-30 | Hitachi Ltd | 情報処理装置 |
US7376235B2 (en) * | 2002-04-30 | 2008-05-20 | Microsoft Corporation | Methods and systems for frustrating statistical attacks by injecting pseudo data into a data system |
US7555122B2 (en) * | 2002-12-04 | 2009-06-30 | Wired Communications LLC | Method for elliptic curve point multiplication |
JP4626148B2 (ja) * | 2004-01-07 | 2011-02-02 | 株式会社日立製作所 | 復号または署名作成におけるべき乗剰余算の計算方法 |
KR20060081847A (ko) * | 2005-01-10 | 2006-07-13 | 삼성전자주식회사 | 비밀키를 보호하는 스마트 카드 및 그것의 방법 |
TWI290426B (en) * | 2005-02-03 | 2007-11-21 | Sanyo Electric Co | Encryption processing circuit |
EP1840732A1 (en) * | 2006-03-31 | 2007-10-03 | Axalto SA | Protection against side channel attacks |
JP5050454B2 (ja) * | 2006-09-01 | 2012-10-17 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム |
JP4960044B2 (ja) | 2006-09-01 | 2012-06-27 | 株式会社東芝 | 暗号処理回路及びicカード |
US7607351B2 (en) * | 2007-06-26 | 2009-10-27 | General Electric Company | Acoustic impact detection and monitoring system |
US9742555B2 (en) * | 2008-09-25 | 2017-08-22 | Nokia Technologies Oy | Encryption/identification using array of resonators at transmitter and receiver |
KR101715027B1 (ko) * | 2009-03-10 | 2017-03-22 | 이르데토 비.브이. | 입력 의존형 인코딩들을 이용한 화이트-박스 암호화 시스템 |
JP5198526B2 (ja) | 2010-09-21 | 2013-05-15 | 株式会社東芝 | 暗号化装置および復号装置 |
US8635467B2 (en) | 2011-10-27 | 2014-01-21 | Certicom Corp. | Integrated circuit with logic circuitry and multiple concealing circuits |
US8334705B1 (en) | 2011-10-27 | 2012-12-18 | Certicom Corp. | Analog circuitry to conceal activity of logic circuitry |
TWI591533B (zh) | 2016-11-25 | 2017-07-11 | 慧榮科技股份有限公司 | 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置 |
CN112597071B (zh) * | 2020-12-09 | 2024-03-26 | 北京地平线机器人技术研发有限公司 | 数据存储方法、获取方法、装置、电子设备以及介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3798360A (en) * | 1971-06-30 | 1974-03-19 | Ibm | Step code ciphering system |
FR2590284B1 (fr) * | 1985-11-20 | 1996-07-12 | Guilhem Christian | Procede de plissage d'une piece souple, application a l'habillage d'objets, moyens de mise en oeuvre et produits obtenus |
DE3621241C1 (de) * | 1986-06-25 | 1987-06-25 | Freudenberg Carl Fa | Verfahren zur Herstellung eines Dichtringes mit einer Dichtlippe |
US5341423A (en) * | 1987-02-06 | 1994-08-23 | General Electric Company | Masked data transmission system |
FR2638869B1 (fr) * | 1988-11-10 | 1990-12-21 | Sgs Thomson Microelectronics | Dispositif de securite contre la detection non autorisee de donnees protegees |
CA2037857C (en) | 1990-03-20 | 2001-01-16 | Roy Allen Griffin, Iii | Prevention of determination of time of execution of predetermined data processing routine in relation to occurrence of prior observable external event |
JPH0433020A (ja) * | 1990-05-24 | 1992-02-04 | Nec Corp | 機密保持機能を備えた半導体集積回路 |
FR2728980B1 (fr) | 1994-12-30 | 1997-01-31 | Thomson Csf | Dispositif de securisation de systemes d'information organises autour de microprocesseurs |
DE19505097C1 (de) * | 1995-02-15 | 1996-06-05 | Siemens Ag | Verschlüsselungsvorrichtung |
US5727062A (en) * | 1995-07-06 | 1998-03-10 | Ritter; Terry F. | Variable size block ciphers |
US5724428A (en) * | 1995-11-01 | 1998-03-03 | Rsa Data Security, Inc. | Block encryption algorithm with data-dependent rotations |
FR2745924B1 (fr) | 1996-03-07 | 1998-12-11 | Bull Cp8 | Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre |
US5745577A (en) * | 1996-07-25 | 1998-04-28 | Northern Telecom Limited | Symmetric cryptographic system for data encryption |
US7587044B2 (en) * | 1998-01-02 | 2009-09-08 | Cryptography Research, Inc. | Differential power analysis method and apparatus |
US6304658B1 (en) * | 1998-01-02 | 2001-10-16 | Cryptography Research, Inc. | Leak-resistant cryptographic method and apparatus |
US6185304B1 (en) * | 1998-02-23 | 2001-02-06 | International Business Machines Corporation | Method and apparatus for a symmetric block cipher using multiple stages |
CA2333095C (en) * | 1998-06-03 | 2005-05-10 | Cryptography Research, Inc. | Improved des and other cryptographic processes with leak minimization for smartcards and other cryptosystems |
JP3600454B2 (ja) * | 1998-08-20 | 2004-12-15 | 株式会社東芝 | 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体 |
JP2003524916A (ja) * | 1998-09-30 | 2003-08-19 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 暗号処理を実行するための符号化方法 |
US6408075B1 (en) * | 1998-11-30 | 2002-06-18 | Hitachi, Ltd. | Information processing equipment and IC card |
JP2001024414A (ja) * | 1999-07-09 | 2001-01-26 | Asahi Glass Co Ltd | 自動車用ガラスアンテナ |
JP2001244414A (ja) * | 2000-02-29 | 2001-09-07 | Nippon Telegr & Teleph Corp <Ntt> | 半導体集積回路 |
-
1998
- 1998-12-14 JP JP35415698A patent/JP4317607B2/ja not_active Expired - Fee Related
-
1999
- 1999-12-10 US US09/458,018 patent/US6631471B1/en not_active Expired - Fee Related
- 1999-12-13 KR KR1019990057028A patent/KR100726903B1/ko not_active IP Right Cessation
- 1999-12-13 TW TW088121816A patent/TW517189B/zh not_active IP Right Cessation
- 1999-12-14 EP EP99124934A patent/EP1011081B1/en not_active Expired - Lifetime
- 1999-12-14 DE DE69906022T patent/DE69906022T2/de not_active Expired - Lifetime
- 1999-12-14 CN CNB991267079A patent/CN1200392C/zh not_active Expired - Fee Related
-
2000
- 2000-03-20 US US09/528,995 patent/US6615354B1/en not_active Expired - Fee Related
-
2006
- 2006-08-14 KR KR1020060076642A patent/KR100674550B1/ko not_active IP Right Cessation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150107331A (ko) * | 2014-03-14 | 2015-09-23 | 국방과학연구소 | 시계열 데이터베이스의 프라이버시 보호에서 상관 관계 보존을 위한 노이즈 생성 방법 및 장치 |
KR101589038B1 (ko) | 2014-03-14 | 2016-01-27 | 국방과학연구소 | 시계열 데이터베이스의 프라이버시 보호에서 상관 관계 보존을 위한 노이즈 생성 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
JP2000182012A (ja) | 2000-06-30 |
KR20000052458A (ko) | 2000-08-25 |
KR100726903B1 (ko) | 2007-06-11 |
JP4317607B2 (ja) | 2009-08-19 |
EP1011081B1 (en) | 2003-03-19 |
US6615354B1 (en) | 2003-09-02 |
TW517189B (en) | 2003-01-11 |
CN1258057A (zh) | 2000-06-28 |
KR20060105691A (ko) | 2006-10-11 |
DE69906022T2 (de) | 2004-01-08 |
DE69906022D1 (de) | 2003-04-24 |
CN1200392C (zh) | 2005-05-04 |
US6631471B1 (en) | 2003-10-07 |
EP1011081A1 (en) | 2000-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100674550B1 (ko) | 정보 처리 장치 | |
KR100693239B1 (ko) | 정보 처리 장치, ic 카드 | |
JP4188571B2 (ja) | 情報処理装置の演算方法および耐タンパ演算攪乱実装方式 | |
JP3926532B2 (ja) | 情報処理装置、情報処理方法、及びカード部材 | |
US6408075B1 (en) | Information processing equipment and IC card | |
EP1308885B1 (en) | Information processing and encryption unit | |
CN101006677B (zh) | 用于实施加密运算的方法和装置 | |
JP4199937B2 (ja) | 耐タンパー暗号処理方法 | |
JP4668985B2 (ja) | ホモグラフィックマスキングにより暗号アセンブリを保護する方法 | |
KR20080113277A (ko) | 프로그램 난독화시스템, 프로그램 난독화장치 및 프로그램 난독화방법 | |
US6845159B1 (en) | Processing method and apparatus for converting information from a first format into a second format | |
CN100393029C (zh) | 在使用密钥密码学算法的电子元件中的防范方法 | |
JP4153665B2 (ja) | 同一の秘密鍵の暗号アルゴリズムを使用して1つまたは複数の電子装置を保護する方法、当該方法の使用および当該電子装置 | |
EP1606685B1 (en) | Security process for an electronic unit including a cryptoprocessor | |
JP4003723B2 (ja) | 情報処理装置、耐タンパ処理装置 | |
JP3945497B2 (ja) | 情報処理装置、icカード | |
JP2004078976A (ja) | 情報処理装置、耐タンパ処理装置 | |
AU2005203004B2 (en) | Information processing device, information processing method and smartcard | |
JP2006174274A (ja) | 暗号演算回路と、該暗号演算回路を有する情報処理装置及びicカード | |
WO2000021240A1 (en) | Processing method and apparatus for converting information from a first format into a second format |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120105 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20130111 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |