KR20000052392A - 정보 처리 장치, ic 카드 - Google Patents

정보 처리 장치, ic 카드 Download PDF

Info

Publication number
KR20000052392A
KR20000052392A KR1019990053692A KR19990053692A KR20000052392A KR 20000052392 A KR20000052392 A KR 20000052392A KR 1019990053692 A KR1019990053692 A KR 1019990053692A KR 19990053692 A KR19990053692 A KR 19990053692A KR 20000052392 A KR20000052392 A KR 20000052392A
Authority
KR
South Korea
Prior art keywords
data
surplus
processing means
value
bit
Prior art date
Application number
KR1019990053692A
Other languages
English (en)
Other versions
KR100693239B1 (ko
Inventor
오오끼마사루
후꾸자와야스꼬
오꾸하라스스무
가미나가마사히로
Original Assignee
가나이 쓰토무
가부시키가이샤 히타치세이사쿠쇼
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가나이 쓰토무, 가부시키가이샤 히타치세이사쿠쇼 filed Critical 가나이 쓰토무
Publication of KR20000052392A publication Critical patent/KR20000052392A/ko
Application granted granted Critical
Publication of KR100693239B1 publication Critical patent/KR100693239B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record 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/067Record 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/07Record 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record 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/067Record 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/07Record 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/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • G06K19/07309Means for preventing undesired reading or writing from or onto record carriers
    • G06K19/07363Means 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment 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/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms 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/0806Details of the card
    • G07F7/0813Specific details related to card security
    • G07F7/082Features insuring the integrity of the data on or in the card
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms 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/10Mechanisms 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/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • 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
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • 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/7247Modulo masking, e.g. A**e mod (n*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/7252Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction
    • 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
    • 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/721Modular inversion, reciprocal or quotient calculation
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Supply And Distribution Of Alternating Current (AREA)

Abstract

IC 카드용 칩에서의 처리 데이터와 IC 카드용 칩의 소비 전류의 관련성을 줄인다.
IC 카드용 칩의 처리 순서를 랜덤하게 바꾸거나, 쓸모없는 더미 처리를 추가하는 것에 의해, 처리 데이터와 IC 카드용 칩의 소비 전류의 관련성을 줄인다.
IC 카드용 칩에서의 처리 데이터와 IC 카드용 칩의 소비 전류와의 관련성을 줄이는 것을 가능하게 한다.

Description

정보 처리 장치, IC 카드{INFORMATION PROCESSING APPARATUS AND IC CARD}
본 발명은 정보 처리 장치, 특히 기밀성이 높은 IC 카드 등의 내탬퍼 장치에 관한 것이다.
IC 카드는 주로 손쉽게 리라이트되지 않는 정보의 유지나 기밀 정보인 암호 키를 사용한 데이터의 암호화나 암호문의 복호화를 실행하기 위해 사용되는 장치이다. IC 카드는 전원을 갖고 있지 않으므로, 리더 라이터에 꽂으면, 전원의 공급을 받고, 동작가능하게 된다. 동작 가능하게 되면, 리더 라이터에서 커맨드를 받아서, 커맨드에 따라, 데이터의 전송을 실행한다. IC 카드의 일반적인 해설은 옴사 출판 전자정보통신학회편 수택순일저 「IC 카드」 등에 있다.
IC 카드의 구성은 도 1에 도시한 바와 같이, 카드(101) 상에 IC 카드용 칩(102)을 탑재한 것이다. 일반적으로, IC 카드는 접점을 갖고, 접점을 통하여 리더 라이터에서 전원의 공급이나 리더 라이터와의 데이터 통신을 실행한다.
IC 카드용 칩의 구성은 기본적으로 마이크로컴퓨터와 같은 구성이다. 그의 구성은 도 2에 도시한 바와 같이, 중앙 연산 장치(201), 기억 장치(204), 입출력 포트(207), 코프로세서(202)로 이루어진다. 중앙 처리 장치(201)는 논리 연산이나 산술 연산 등을 실행하는 장치이고, 기억 장치(204)는 프로그램이나 데이터를 저장하는 장치이다. 입출력 포트는 리더 라이터와 통신을 실행하는 장치이다. 코프로세서는 잉여 연산을 실행하기 위한 특별한 연산 장치이고, 비대칭 암호인 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 카드용 칩 중에서, 어떻게 동작하고 있는 가 알 가능성을 시사하고 있다.
도 5는 IC 카드용 칩의 1사이클에서의 소비 전류의 파형을 나타낸 것이다. 처리하고 있는 데이터에 의존하여, 전류 파형이 (501)이나 (502)와 같이 다르다. 이와 같은 차는 버스(203)를 흐르는 데이터나 중앙 연산 장치(201)에서 처리하고 있는 데이터에 의존하여 생긴다.
코프로세서(202)는 중앙연산장치와 병렬로 긴 데이터, 예를 들면 512 비트의 잉여 연산을 실행할 수 있다. 그를 위해, 중앙 연산 장치의 소비 전류와는 다른 소비 전류 파형을 긴 시간, 관측할 수 있다. 그 특징적인 파형을 관측하면, 코프로세서의 동작 회수를 용이하게 측정할 수 있다. 코프로세서의 동작 회수가 암호 키와 어떤 관계가 있으면, 코프로세서의 동작 회수에서 암호 키를 추정할 수 있을 가능성이 있다.
또한, 코프로세서에서의 연산 내용이 암호 키에 의존한 치우침이 있으면, 그치우침이 소비 전류에서 구해지고, 암호 키가 추정될 가능성이 있다.
중앙 연산 장치에서도 마찬가지이다. 암호 키의 비트 값은 정해져 있으므로, 처리하는 데이터를 변경하여, 소비 전류를 관측하는 것에 의해, 암호 키의 비트 값의 영향을 관측할 수 있을 가능성이 있다. 이들 소비 전류의 파형을 통계적으로 처리하는 것에 의해, 암호 키를 추정할 수 있을 가능성이 있다.
본 발명의 목적은 IC 카드용 칩에서의 데이터 처리와 소비 전류의 관련성을 줄이는 것이다. 소비 전류와 칩의 처리와의 관련성이 줄면, 관측한 소비 전류의 파형에서 IC 카드 칩 내에서의 처리나 암호 키의 추측이 관란하게 된다. 본 발명의 착안점은 IC 카드 칩에서의 처리 순서를 랜덤하게 하는 것이나 더미 처리를 삽입하는 것에 의해, 소비 전류의 파형에서 처리나 암호 키의 추측을 곤란하게 하는 것이다.
도 1은 IC 카드의 하드웨어 구성을 도시한 도면.
도 2는 IC 카드용 칩내의 하드웨어 구성을 도시한 도면.
도 3은 DES의 전체 처리 흐름을 도시한 도면.
도 4는 DES의 f 함수의 처리 흐름을 도시한 도면.
도 5는 소비 전류의 파형을 도시한 도면.
도 6은 정상 데이터와 비트 반전 데이터의 데이터 구조를 도시한 도면.
도 7은 암호 키와 선택적 전치 결과와 배타적 논리합의 처리를 도시한 도면.
도 8은 정상 E 전치 서브데이터를 최초에 처리하는 루틴을 도시한 도면.
도 9는 비트 반전 E 전치 서브데이터를 최초에 처리하는 루틴을 도시한 도면.
도 10은 S 박스 처리를 도시한 도면.
도 11은 정상 배타적 논리합의 실행 결과를 최초에 처리하는 루틴을 도시한 도면.
도 12는 비트 반전 배타적 논리합의 실행 결과를 최초에 처리하는 루틴을 도시한 도면.
도 13은 P 전치 처리를 도시한 도면.
도 14는 정상 S 박스 처리 데이터를 최초에 처리하는 루틴을 도시한 도면.
도 15는 비트 반전 S 박스 처리 데이터를 최초에 처리하는 루틴을 도시한 도면.
도 16은 P 전치 행렬을 도시한 도면.
도 17은 S 박스 테이블을 사용하여 S 박스 변환 처리하는 루틴을 도시한 도면.
도 18은 RSA의 처리 루틴을 도시한 도면.
도 19는 암호 키의 비트 값에 관계없이 승산 잉여 처리를 실행하도록 변경한 RSA 처리 루틴을 도시한 도면.
도 20은 2비트 방식의 RSA 처리 루틴을 도시한 도면.
도 21은 잉여 연산의 법의 정수배를 인가하는 것에 의해 비트값 대응 입력 데이터 멱승 잉여값을 변경하는 RSA 처리 루틴을 도시한 도면.
도 22는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리를 최초에 실행하는 RSA 처리 루틴을 도시한 도면.
도 23은 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리를 도중에 실행하는 RSA 처리 루틴을 도시한 도면.
도 24는 선택적 전치 처리를 도시한 도면.
도 25는 정상 입력 데이터를 최초에 처리하는 루틴을 도시한 도면.
도 26은 정상 입력 데이터를 최초에 처리하는 루틴을 도시한 도면.
도 27은 선택적 전치 행렬 E를 도시한 도면.
도 28은 어드레스를 사용한 데이터 처리 루틴의 호출을 설명하는 도면.
도 29는 S 박스 테이블을 도시한 도면.
도 30은 확장한 S 박스 테이블을 도시한 도면.
도 31은 잉여 연산의 법을 변형하는 처리 순서를 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
101 : IC 카드
102 : 칩
205 : 프로그램
IC 카드용 칩으로 대표되는 내탬퍼 장치는 프로그램을 저장하는 프로그램 저장부, 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하고 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지고, 정보 처리 장치로서 고려할 수 있다. 본 발명에서는 처리하고 있는 데이터와 IC 카드용 칩의 소비 전류의 관련성을 줄이기 위한 방법의 하나로서, 처리하는 데이터를 정상 처리의 데이터와 그의 비트 값을 반전한 데이터 양쪽을 사용한다. 그리고, 비트 반전의 데이터와 정상 데이터를 동일 명령에 의해, 정상 처리 데이터와 비트 값을 반전한 데이터를 처리하는 것에 의해, 데이터 버스 상의 값 등이 "0"에서 "1" 또는 "1"에서 "0"으로 되는 회수를 일정하게 한다. 데이터 버스에서는 값이 반전한 때에 전류를 크게 소비하므로, "1"과 "0"의 반전 회수가 일정하게 되는 것에 의해, 전류를 소비하는 회수가 일정하게 되고, 데이터 처리와 소비 전류의 관련성을 줄일 수 있다.
정상 데이터와 비트 반전 데이터를 마찬가지로 처리하기 위한 다른 방법으로서, 동일 루틴에서 정상 데이터와 비트 반전 데이터를 처리할 수 없는 경우는 정상 처리 명령과 같은 명령 커맨드를 갖고, 비트 반전한 데이터를 처리하는 명령을 갖는 처리 루틴을 사용한다. 또한, 항상 처리한 결과에서도 정상 데이터와 비트 반전 데이터를 생성하는 것을 실행하도록 하고, 정상 데이터와 비트 반전 데이터를 항상 마찬가지로 처리하도록 한다.
데이터 처리와 소비 전류의 관련성을 줄이는 다른 방법은 처리하는 데이터만 다른 반복 처리가 있으면, 일정 순번으로 데이터를 인출하여 처리하는 것은 아니고, 처리 순번을 랜덤하게 하는 방법이다. 또한, 다른 방법은 프로그램의 해당 처리에 영향을 주지 않는 더미 실행 처리를 넣는 것에 의해, 어디에서 무엇을 하고 있는 가가 일정하게 되지 않도록 하는 방법이다. 더미 실행 처리 수단과 반복 데어터 처리 순서를 랜덤하게 실행하는 것을 조합하는 것은 또 데이터 처리와 소비 전류의 관련성을 줄이기 위해 유효하다.
정상 데이터와 비트 반전 데이터를 사용하는 방법이나 더미 실행 처리 수단과 반복 데이터 처리 수단을 사용하는 방법은 암호 알고리즘에서 사용되는 비트 단위의 데이터를 전환하는 전치 처리 수단이나 바이트 단위의 데이터를 전환하는 환자 처리 수단의 데이터 처리와 소비 전류의 관련성을 줄이기 위해 특히 유효하다.
실제, DES 등의 전치나 환자를 사용하는 암호에서는 배타적 논리합을 사용하는 일이 많으므로, 입력 데이터와 암호 키 데이터의 배타적 논리합을 실행하는 배타적 논리합 처리 수단과 입력 데이터의 비트를 반전한 데이터와 암호 키의 배타적 논리합을 실행하는 비트 반전 데이터 배타적 논리합 처리 수단을 갖는 것은 데이터 처리와 소비 전류의 관련성을 줄이기 위해, 유효하다. 또한, 입력 데이터에 대하여 비선형의 환자를 실행하고, 환자된 결과 및 환자된 결과의 비트 값을 반전한 비트 반전 데이터를 생성하는 비선형 환자 처리 수단과 입력 데이터의 비트를 반전한 데이터에 대하여 비선형의 환자를 실행하고, 환자된 결과 및 환자된 결과의 비트 값을 반전한 비트 반전 데이터를 생성하는 비선형 환자 처리 수단을 갖는 것은 데이터 처리와 소비 전류의 관련성을 줄이므로, 유효하다. 그리고, 입력 데이터에 대하여 비선형의 전치를 실행하고, 전치된 결과 및 전치된 결과의 비트 값을 반전한 비트 반전 데이터를 생성하는 비선형 전치 처리 수단과 입력 데이터의 비트를 반전한 데이터에 대하여 비선형의 전치를 실행하고 전치된 결과 및 전치된 결과의 비트 값을 반전한 비트 반전 데이터를 생성하는 비선형 전치 처리 수단을 갖는 것은 데이터 처리와 소비 전류의 관련성을 줄이므로, 유효하다.
이들을 조합하여, 입력 데이터에 대하여 비선형의 환자를 실행하고, 환자된 결과 및 환자된 결과의 비트 값을 반전한 비트 반전 데이터를 생성하는 비선형 환자 처리 수단과 입력 데이터의 비트를 반전한 데이터에 대하여 비선형의 환자를 실행하고, 환자된 결과 및 환자된 결과의 비트 값을 반전한 비트 반전 데이터를 생성하는 비선형 환자 처리 수단, 입력 데이터에 대하여 비선형의 전치를 실행하고, 전치된 결과 및 전치된 결과의 비트 값을 반전한 비트 반전 데이터를 생성하는 비선형 전치 처리 수단, 입력 데이터의 비트를 반전한 데이터에 대하여 비선형의 전치를 실행하고, 전치된 결과 및 전치된 결과의 비트 값을 반전한 비트 반전 데이터를 생성하는 비선형 전치 처리 수단을 갖는 것은 데이터 처리와 소비 전류의 관련성을 줄이므로, 유효하다.
소인수 분해가 곤란한 것을 이용한 RSA 등의 암호에서는 입력 데이터와 암호 키를 사용하여, 멱승 연산을 반복하여 멱승 잉역 계산을 실행한다. 데이터 처리와 소비 전류의 관련성을 줄이기 위한 방법의 하나는 암호 키의 비트 값에 관계없이, 입력 데이터와 그때까지 계산한 결과를 승산 잉여하는 승산 잉여 처리 수단과 암호 키의 비트가 1이면, 승산 잉여 처리 수단의 결과를 사용하고, 0이면, 승산 잉여 처리 수단의 결과를 무시하는 승산 잉여 처리 결과 선택 처리 수단을 사용하는 것에 의해, 암호 키의 비트 값에 관계없이, 승산 잉여를 실행하는 것이다. 이와 같이 하는 것에 의해, 승산 잉여의 데이터 처리와 승산 잉여의 소비 전류의 관련성을 줄이고, 승산 잉여의 실행 회수에서 암호 키를 추정하는 것은 곤란하게 된다.
RSA에서는 복수 비트의 값에 대응하여 입력 데이터의 멱승 잉여 계산한 결과에서, 어느 비트값 대응 입력 데이터 멱승 잉여값을 구하는 비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단과 암호 키의 복수 비트의 값마다 비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단에서 계산한 비트값 대응 입력 데이터 멱승 잉여값과 그때까지 승산 잉여한 결과를 승산 잉여하는 비트값 대응 승산 잉여 계산 처리 수단을 사용하여, 성능을 개선하는 방법이 있다. 그러나, 이 방법에서는 항상 같은 비트값 대응 입력 데이터 멱승 잉여값의 조를 사용하므로, 데이터와 소비 전류의 관련성에서 암호 키를 추정할 가능성이 있다. 이것을 해결하는 방법의 하나는 비트 대응 승산 잉여 계산 처리 수단을 반복 처리하고 있는 어떤 타이밍에 있어서, 비트값 대응 입력 데이터 멱승 잉여값 변경하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단을 사용하여, 비트값 대응 입력 데이터 멱승 잉여값을 일정 회수로 변경하는 방법이다. 또한, 이 방법에서는 변경하는 방법에 의존하지만, 비트값 대응 입력 데이터 멱승 잉여값의 변경을 원래로 되돌릴 필요가 있는 경우가 있다. 그 하나의 방법은 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에서 비트값 대응 입력 데이터 멱승 잉여값에 변경을 가한 처리 결과를 변경을 가하지 않았던 값으로 되돌리는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리를 행하는 방법이다. 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에는 몇가지 방법이 있지만, 비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법의 정수배를 가하는 것도 하나의 방법이다. 다른 방법은 비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법에 있어서 곱하면 1로 되는 2개의 값 v와 u 중의 한쪽인 v 또는 v의 멱승을 해당 잉여 연산의 법에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단과 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에 있어서, v를 잉여 연산의 법으로서 곱한 회수만큼 멱승 잉여의 처리 결과에 u를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변화 처리 수단을 사용하는 방법이다. 또한, 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에서 사용하는 잉여 연산의 법 N에 있어서 곱하면 1로 되는 2개의 값으로서 2와 N+1/2를 사용하는 것은 v와 u를 간단히 구하는 방법의 하나이다. RSA와 같은 암호를 처리하기 위해, 암호 키를 M 비트의 조로서 나타내고, 그 비트가 0 또는 1인 모든 조합에 대하여, 그 값을 입력 데이터에 멱승 승산하여 비트값 대응 입력 데이터 멱승 잉여값을 구하는 비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단과 어떤 타이밍에 비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법에 있어서 곱하면 1로 되는 2개의 값 v와 u중의 한쪽인 v 또는 v의 멱승을 해당 잉역 연산의 법 N에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단, 암호 키의 복수 비트 M의 값마다 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에서 계산한 비트값 대응 입력 데이터 멱승 잉여값과 그때까지 승산 잉여한 결과를 승산 잉여하는 비트 대응 승산 잉여 계산 처리 수단, v를 잉여 연산의 법으로서 곱한 회수만큼 멱승 잉여의 처리 결과에 u를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단을 사용하는 것은 데이터 처리와 소비 전류의 관련성을 줄이므로 유효하다. 또한, 그때 어떤 타이밍에 비트값 대응 입력 데이터 멱승 잉여값에 v로서 2의 랜덤한 멱승을 해당 잉여 연산의 법 N에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단, 2를 잉여 연산의 법으로서 곱한 회수만큼 멱승 잉여의 처리 결과에 (n+1)/2를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단을 사용하면, v와 u를 간단히 구할 수 있다.
이하, 본 발명의 실시예에 대하여 도면을 참조하면서 설명한다.
도 1은 IC 카드의 외관을 도시한 것이다. IC 카드(101)는 ISO7816 규격에 의해 크기나 IC 카드의 칩(102)의 위치나 접점의 수 및 할당 등이 규정되어 있다.
도 2는 IC 카드용 칩(102)의 내부 구성이다. 구성에 대해서는 앞에서 이미 기술한 바와 같다. 본 발명은 프로그램(205)을 항상 일정하게 실행시키는 것은 아니고, 랜덤하게 동작시키거나 쓸데없는 더미 처리를 추가하거나 하여 IC 카드용 칩의 하드웨어가 소비하는 전류 파형의 재현을 곤란하게 하는 것이다.
본 실시예에서는 대칭 암호 DES(data encryption standard)와 비대칭 암호 RSA를 예로 한다. 이것은 다른 암호에도 사용할 수 있다. DES나 RSA 등의 암호에 대해서는 공립출판주식회사 강보영사저 「암호 이론 입문」 등에 기재되어 있다.
DES는 64비트의 데이터(평문이나 암호문)를 56 비트의 암호 키로, 암호화와 복호화를 실행한다. 암호화와 복호화에서 같은 암호 키를 사용하므로, 대칭 암호로 불리우고 있다. DES는 트럼프를 쳐서, 랜덤하게 하는 것과 같이, 평문(암호화되는 문)의 비트를 랜덤하게 전환 암호화이다. 데이터의 전환은 암호 키에 따라 실행한다. 복호화할 때는 암호 키에 따라 전환한 순서와 반대로 전환을 실행하여, 데이터를 원래로 되돌린다. DES의 처리에서의 전환은 비트 단위와 복수 비트 묶은 단위로 2개의 전환 방법이 있다. 전자는 전치(轉置)라 부르고, 후자는 환자(煥字)라 부른다.
도 3을 사용하여, DES의 암호화 방법을 설명한다. 암호화는 먼저 초기 전치(IP : Initisal Permutation)(301)에서 전치시킨다. 이것은 초기 전치 테이블에 따라, 비트 단위로 암호문의 64비트 데이터를 전환한다. 그 이후, 초기 전치의 역전치(IP-1)(313)까지, 일조의 조작을 16단 실행한다.
각 1단의 처리는 전단 결과의 전반이나 후반의 32비트 데이터와 암호 키를 입력으로 하여 f함수(303)으로 부르는 처리를 실행하고, 그 출력을 전단의 나머지 절반의 비트를 사용하여 배타적 논리합(305)을 취하는 조작을 실행한다. 암호 키도 전환이 실행된다. 암호 키에 대하여, 먼저 PC-1이라고 하는 테이블을 사용한 선택 전치 PC-1(302)가 실행된다. 그후, PC-2라고 하는 테이블을 사용한 선택 전치 PC-2(304)를 실행하고, 암호 키의 전환을 실행한다. 다음 단에서는 28 비트씩을 RS 테이블에 따라 순회시켜 사용한다.
f함수(303)의 처리를 도 4에 나타낸다. 먼저, f함수로의 입력문을 선택적 전치 행렬 E에 따라, 선택적 전치를 실행한다(402). 이어서, 선택적 전치를 실행한 입력 데이터와 암호 키의 배타적 논리합을 취하고(403), S 박스의 처리를 실행하고(404), P 전치 처리를 실행한다(405). S 박스의 처리는 (403)의 배타적 논리합의 처리 결과인 48 비트부터 6비트씩 인출하고, S 박스 테이블의 행 번호와 열 번호를 구하고, 4비트의 데이터를 생성하는 처리이다. 각 S 박스 테이블은 6비트마다의 데이터 위치에 의해 다르다. P 전치 처리는 P 전치 테이블에 따라 32 비트의 비트 위치를 전환하는 조작이다.
처리 순서가 동일하면, 데이터에 의존하여 소비 전류 파형의 치우침이 나오므로, 본 발명에서는 도 4의 처리를 실행마다 처리 순서를 변경하는 랜덤한 처리를 추가하는 것을 실행한다.
도 24를 사용하여, 선택적 전치 처리(402)에 대하여 설명한다. 선택적 전치라 함은 f함수에 입력되는 입력 데이터를 선택적 전치 행렬 E에 의해, 비트 위치의 치환과 입력 데이터를 32비트에서 48비트로 확대하는 것이다. 선택적 전치 행렬 E(2701)를 도 27에 나타낸다. 왼쪽위(2702)에서 오른쪽아래(2703)으로 세어서, 입력 데이터의 제32, 1, 2, ...., 32, 첫 번째 비트를 출력의 제1번째부터 제48번째 비트로 한다.
선택적 전치 처리의 순서를 설명하기 전에, 본 실시예에 있어서의 선택적 데이터 전치에서 사용하는 데이터에 대하여 설명한다. f 함수에 입력되는 데이터는 도 6에 도시한 바와 같이, 앞의 처리에서 정상 데이터(602)와 그의 비트(603)를 반전한 비트 반전 데이터의 조로서 입력된다. 이와 같은 조로 취급하면, 항상 "0" 비트의 수와 "1" 비트의 수는 일정하게 된다. 예를 들면, 정상 데이터의 비트가 "111100"이면, 비트 반전 데이터는 "11000011"로 되고, 정상 데이터와 그의 비트 반전 데이터의 조에서의 "0" 비트는 수는 8이고, "1" 비트의 수, 즉 허밍 웨이트는 8이다. 그 때문에, 정상 데이터와 그의 비트 반전 데이터를 조로, 데이터 버스(203)에 전송하면, 조에 있어서의 "0"과 "1"의 비트 수가 항상 일정하게 되므로, 데이터의 의존성이 소비 전류에 반영되지 않는다고 하는 특징이 있다. 예를 들면, 데이터 버스(203)가 프리챠지 버스이면, 데이터를 전송하는 준비로서, 일단 데이터 버스의 값을 "1"이나 "0"으로 채우고, 그후 데이터를 전송한다. 이 경우, 항상 프리챠지 상태에서는 버스의 값이 같은 값으로 되어 있으므로, 정상 데이터와 그의 비트 반전 데이터를 조로 데이터 전송한 경우, "1"에서 "0" 또는 "0"에서 "1"로 값이 변하는 수는 프리챠지 상태 전후에, 일정하게 되고, 데이터에 의한 소비 전류 의존성이 줄어든다. 만일, 데이터 버스가 프리챠지 상태를 갖지 않고, 스테틱 버스이면, 비트의 반전은 앞의 데이터 값에 의존하지만, 전송하는 데이터의 허밍 웨이트가 항상 일정하므로, 전송하는 데이터에 의한 전류 소비 의존성은 적다. 적어도, 정상 데이터 만으로는 허밍 웨이트가 일정하지 않으므로, 그의 전류 소비 의존성이 생긴다. 정상 데이터와 그의 비트 반전 데이터의 조를 한번에 데이터 전송하고, 허밍 웨이트를 맞추면, 전송하는 데이터에 의한 전류 소비 의존성은 준다.
선택적 전치 처리의 순서를 도 24에 도시한다.
선택적 전치 처리는 입력 데이터의 32비트를 6비트 단위로 처리하고, 48비트의 데이터를 생성한다. 처리되는 데이터는 정상 입력 데이터와 그의 비트 반전 입력 데이터이고, 2바이트로 실현되고, 각각의 바이트에 8비트씩 저장되어 있다. 선택적 전치 처리에서는 통상 선택적 전치 행렬 E의 나란한 순서로 처리한다. 그러나, 거기에서는 데이터의 처리 순서가 항상 일정하므로, 소비 전류의 파형으로부터 처리되고 있는 데이터가 추측될 가능성이 있다. 그 때문에, 본 실시예에서는 실행 순서를 랜덤하게 하고, 또한 랜덤하게 더미 처리를 추가하고, 처리 순서가 일정하게 되지 않도록 한다. 처리 순서가 랜덤하게 되는 것에 의해, 데이터와 소비 전류의 의존성을 줄일 수 있다.
본 실시예의 선택적 전치 처리에서는 실행 플래그를 클리어한다(2402). 이 실행 플래그는 각 비트가 반복 처리의 처리 단위로 처리가 종료하고 있으면 "1"이고, 미처리이면 "0"이다. 실행 플래그의 모든 비트가 "1"이면, 처리를 종료한다(2403). 그렇지 않으면, 처리를 계속하고, 난수를 인출한다(2404). 난수는 IC 카드용 칩이 난수 생성 장치를 갖고 있으면, 그 장치에서 난수를 인출하는 또 하나의 방법이다. 그이외의 방법으로서, 소프트적으로 의사 난수를 만드는 것도 가능하다(공립출판주식회사 강본영사저 「암호 논리 입문」61페이지에서 86페이지).
반복 단위에서의 어떤 처리를 행하는 가를 난수에 의해 실행 인덱스를 정한다(2405). 예를 들면, 선택적 전치 행렬 E를 행마다 처리하는 것이면, 실행 인덱스는
로 된다. 난수를 0x07에서 하위 3비트를 인출하고, 그값을 8로 나누고, 그 나머지를 처리하는 행번호로 한다. 만일, 비트 단위이면,
로 된다. 난수의 하위 5비트를 인출하고, 그값을 32로 나누고, 그 나머지를 처리하는 비트의 번호로 한다. 실행 인덱스는 난수로 부터만 정해지므로, 순번은 랜덤하게 되고, 또한 모든 처리를 마친 데이터를 선택하는 일도 있을 수 있다. 본 실시예에서는 데이터 처리와 소비 전류의 파형의 의존 관계를 줄이기 위해, 이 성질을 적극적으로 이용하고 있다.
이어서, 실행 플래그의 대응하는 비트에 처리마침을 나타내기 위해 "1"로 한다(2406). 하나의 수단으로서, 2개의 방법이 있다.
상기 수학식 1에서 실행 인덱스의 비트 위치의 비트를 "1"로 하고, 상기 수학식 2에서 실행 플래그와 배타적 논리합을 취하는 것에 의해, 실행 플래그의 해당 비트를 "1"로 한다.
이상의 처리에 의해, 반복 처리 중의 처리 단위가 난수에 의해 랜덤하게 선택되므로, 처리 단위의 순서가 일정하게 되지 않는다. 그 때문에, 데이터 처리와 소비 전류의 의존성이 없게 되고, 처리나 암호 키의 추측을 곤란하게 한다. 또한, 실행하는 반복 단위는 랜덤하게 선택하므로, 같은 처리를 한번이상 처리할 가능성이 있다. 이것은 처리 시간을 일정하게 하지 않으므로, 데이터 처리와 소비 전류의 의존성을 알아내는 것을 더욱 어렵게 한다.
이어서, 실행 인데스로 선택된 반복 처리 단위에서의 하나의 처리에 대하여 기술한다. 이것은 선택적 전치 행렬 E를 행마다 처리의 하나의 행의 처리나 선택적 전치 행렬 E를 비트마다 처리의 하나의 비트 처리에 대응한다. 먼저, 실행 인덱스에 따라, 처리해야할 정상 입력 데이터와 비트 반전 입력 데이터를 인출한다(2407). 본 실시예에서는 정상 입력 데이터이외에 반전 입력 데이터도 마찬가지로 선택적 전치 처리를 실행한다. 그때, 정상 입력 데이터와 비트 반전 입력 데이터가 어느것이라도 같은 순서로 처리되지 않도록, 순서를 랜덤화한다. 그를 위해, 난수를 인출하고(2408), 어드레스 변위를 계산한다(2409). 그 어드레스 변위에서 호출하는 루틴의 어드레스를 구하고(2410), 루틴을 호출한다(2411).
어드레스 변위를 사용하여 데이터 처리 루틴을 호출하는 하나의 실시예를 도 28을 사용하여 설명한다. 메모리(2801) 상에 정상 입력 데이터를 최초에 처리하는 루틴의 어드레스(2802)과 비트 반전 입력 데이터를 최초에 처리하는 루틴의 어드레스(2803)을 저장한다. 2개의 어드레의 차는 어드레스 변위이다. 어드레스를 저장하는 단위를 2바이트로 하면, 2409의 어드레스 변위의 계산 방법의 하나는 이하와 같이 된다.
이것은 난수의 최하위 비트를 인출하고, 그것을 2배한다. 루틴을 호출하는 어드레스는 선택적 전치 루틴의 어드레스가 기록되어 있는 데이터 영역의 베이스 어드레스(2802)에 어드레스 변위를 더한다. 이 예에서는 베이스 어드레스에는 정상 데이터를 최초에 처리하는 루틴의 어드레스(2802)가 기록되고, 베이스 어드레스 + 2바이트의 어드레스에는 비트 반전 입력 데이터를 최초에 처리하는 루틴의 어드레스(2803)가 기록되어 있다. 난수의 최하위 비트가 "0"이면, 어드레스 변위는 0로 되고, 정상 입력 데이터를 최초에 처리하는 루틴의 어드레스(2802)가 선택되고, 정상 입력 데이터를 최초에 처리하는 루틴(2804)이 호출된다. 난수의 최하위 비트가 "1"이면, 어드레스 변위는 2로 되고, 비트 반전 입력 데이터를 최초에 처리하는 루틴의 어드레스(2803)가 선택되고, 비트 반전 입력 데이터를 최초에 처리하는 루틴(2804)이 호출된다.
난수에 의해, 어드레스 변위를 계산하기 위해, 정상 입력 데이터를 최초에 처리하는 루틴이나 비트 반전 입력 데이터를 최초에 처리하는 루틴이 랜덤하게 선택되고, 정상 입력 데이터와 비트 반전 입력 데이터가 어느것이라도 같은 순서로 처리되지 않게 된다. 그 결과, 정상 입력 데이터와 비트 반전 입력 데이터의 처리와 소비 전류 파형의 의존 관계가 없게 된다.
정상 입력 데이터를 최초에 처리하는 루틴은 도 25에 도시한 바와 같이, 정상 입력 데이터의 선택적 전치를 실행하고(2502), 이어서 비트 반전 입력 데이터의 선택적 전치를 실행한다(2503). 비트 반전 입력 데이터를 최초에 처리하는 루틴은 도 26에 도시한 바와 같이 비트 반전 입력 데이터의 선택적 전치를 실행하고(2602), 이어서 정상 입력 데이터의 선택적 전치를 실행한다(2603). 실제 선택적 전치를 실행하는 처리 루틴(2806)은 각각의 루틴에서 또 호출되고, 대응하는 비트의 선택적 전치가 실행된다. 그리고, 비트 반전 입력 데이터의 선택적 전치(2503) 또는 (2602)에서는 정상 데이터를 선택적 전치를 실행한 결과의 비트 반전한 데이터를 생성한다. 이것은 선택적 전치가 비트 위치의 전치이므로, 정상 데이터와 비트 반전 데이터의 비트 반전 관계는 유지되기 때문이다. 정상 데이터와 비트 반전 데이터의 저장 방법은 도 6에 나타낸 바와 같이, 조로 되도록 저장한다. 이렇게 하는 것에 의해, 데이터 전송시의 데이터와 소비 전류의 관련성을 적게 할 수 있다.
이상의 처리에 의해, 반복 처리해야할 데이터의 하나의 처리가 끝나면, (2403)으로 리턴한다. 모든 데이터를 처리하지 않았으면, 난수에 따라 다른 처리해야할 데이터를 랜덤하게 선택하고, 처리를 반복한다. 난수를 사용해서만 처리해야할 데이터를 정하고 있으므로, 같은 데이터를 처리하는 일도 있다. 선택적 전치 처리에서는 같은 데이터에 대하여 두 번이상 반복하여도 문제가 일어나지 않는다.
이상 설명한 바와 같이, 본 실시예의 선택적 전치 처리에 있어서 설명한 정상 입력 데이터와 비트 반전 입력 데이터는 청구항 1의 「정상 데이터와 그의 비트 반전 데이터의 조」의 실시예이다. 또한 도 25의 정상 입력 데이터를 최초에 처리하는 루틴 또는 도 26의 비트 반전 입력 데이터를 최초에 처리하는 루티은 루틴 중에 정상 데이터의 처리 순서와 비트 반전의 처리 순서를 갖고 있고, 청구항 3의 「정상 데이터 명령 및 비트 반전 데이터 명령 처리 수단」의 실시예이다. 또한, 도 25의 정상 입력 데이터를 최초에 처리하는 루틴 또는 도 26의 비트 반전 입력 데이터를 최초에 처리하는 루틴은 정상 입력 데이터의 선택적 전치를 실행한 결과를 작성함과 동시에 그 결과를 비트 반전한 결과도 생성한다. 이것은 청구항 4의 「비트 반전 데이터 생성 수단」의 실시예의 하나이다. 데이터 처리 루틴(2806)은 선택적 전치 처리에서는 실제로 그 처리를 행하는 루틴이고, 정상 데이터에서도 비트 반전 데이터에서도 사용되는 루틴이다. 이것은 청구항 2의 「정상 데이터 및 비트 반전 데이터 처리 수단」의 하나의 실시예이다. 또한, 실행 플래그와 난수에 의해 처리 순서를 랜덤하게 바꾸는 순서(2402에서 2405)는 청구항 5의 「반복 랜덤 실행 처리 수단」의 하나의 실시예이다. 실행 플래그와 난수에 의해 모든 처리를 마친 데이터도 랜덤하게 2번이상 처리를 행하는 순서(2402에서 2406)는 청구항 6의 「더미 실행 처리 수단」의 하나의 실시예이다. 그리고, 실행 플래그와 난수를 사용한 처리 순서(2402)에서 (2406)는 더미 처리와 반복 랜덤 처리를 동시에 실현하고 있으므로, 청구항 7의 「더미 실행 및 반복 랜덤 실행 처리 수단」의 실시예의 하나이기도 하다. 도 24에서 기술한 선택적 전치에서 기술한 처리는 청구항 8의 전형적인 실시예이다.
이어서, 선택적 전치를 실행한 입력 데이터와 암호 키의 배타적 논리합 처리(403)의 실시예에 대하여 기술한다. 이 처리의 기본적인 흐름은 도 24를 사용하여 모두 설명한 선택적 전치의 처리 순서와 대락 같다. 주로 다른 점은 (710)에서의 호출 어드레스의 계산이 배타적 논리합의 루틴의 베이스 어드레스에 따르고 있는 것이다. 배타적 논리합 처리는 선택적 전치 처리에서 작성된 2개의 데이터를 처리한다. 하나는 정상 입력 데이터를 선택적 전치한 정상 E 전치 데이터이고, 또 하나는 비트 반전 입력 데이터를 선택적 전치한 비트 반전 E 전치 데이터이다. 이들은 도 6에 나타낸 형식으로 저장되고, 인출할 때는 정상 데이터와 비트 반전 데이터의 쌍을 한번에 인출한다. 비트 반전 E 전치 데이터는 정상 E 전치 데이터의 비트 반전으로 되어 있다. 정상 E 전치 데이터와 암호 키는 모두 48비트이다. 또한, 다음의 처리인 S 박스 처리가 6비트 단위의 처리이므로, 배타적 논리합 처리에서는 6비트 단위의 처리를 행하는 일이 많고, 1비트 단위로 배타적 논리합 처리의 실행도 가능하다. 전자에서는 적어도 8회의 반복 처리(703에서 711)가 필요하고, 후자에서는 적어도 48회의 반복 처리(703에서 711)가 필요하다.
정상 E 전치 서브데이터를 최초에 처리하는 루틴에서는 정상 E 전치 서브데이터와 암호 서브키의 배타적 논리합을 최초에 실행하고(802), 비트 반전 E 전치 서브데이터와 암호 서브키의 배타적 논리합을 후에 실행한다(803). 비트 반전 E 전치 서브 데이터를 최초에 처리하는 루틴에서는 실행 순서가 역전한다(902와 903).
정상 E 전치 서브 데이터와 암호 서브 키의 배타적 논리합의 결과와 비트 반전 E 전치 서브 데이터와 암호 서브 키의 배타적 논리합은 비트 반전의 관계로 되어 있다. 이것은 정상 데이터와 비트 반전 데이터를 같은 암호 서브 키와 배타적 논리합을 실행하였으므로, 비트 반전의 관계가 보존되어 있기 때문이다.
정상 E 전치 서브 데이터를 최초에 처리하는 루틴(801)과 비트 반전 E 전치 서브 데이터를 최초에 처리하는 루틴(901)은 정상 데이터와 암호 키 데이터의 배타적 논리합과 비트 반전 데이터의 배타적 논리합을 실행하므로, 청구항 10의 실시예이다.
이어서, S 박스의 처리(404)에 대하여 기술한다. 본 실시예에서의 S 박스의 처리도 기본적인 흐름은 도 24의 선택적 전치의 처리와 유사한 흐름이다.
S 박스의 최초에 S 박스의 처리의 개시를 랜덤하게 하기 위해, 난수를 인출하고(1002), 난수값에 따라 더미 처리를 실행한다(1003). 이 더미 처리는 루프 처리가 없는 루프를 난수값만 반복하는 처리라도 좋다. 난수값에 따라, 루프의 회수가 다르므로, S 박스의 처리 개시가 랜덤하게 되고, 데이터 처리와 소비 전류의 파형 의존성이 적게 된다.
실행 플래그와 난수를 사용한 처리 순서의 랜덤화와 더미 처리를 추가하는 처리(1004에서 1013)는 선택적 전치 처리의 (2402)에서 (2411)의 처리와 같다. S 박스 처리는 E 전치 데이터와 암호 키의 배타적 논리합의 결과를 사용하여 실행한다. 암호 키와 선택적 전치의 실행 결과의 배타적 논리합 처리(403)의 실행 결과도 도 6과 같은 정상 데이터와 비트 반전 데이터 쌍의 배열로 이루어진 데이터이다. 실행 인덱스를 갖는 배타적 논리합의 실행 결과를 인출할 때(1009)는 마찬가지로 쌍의 데이터를 인출한다. 정상 배타적 논리합의 실행 결과를 최초에 처리하는 루틴(1101)과 비트 반전 배타적 논리합의 실행 결과를 최초에 처리하는 루틴(1201)은 난수로 랜덤으로 부른다.
S 박스의 처리는 배타적 논리합의 실행 결과의 6비트마다 S 박스 테이블의 어드레스를 계산하여(1702), S 박스의 변환 결과인 4비트의 데이터를 구한다(1703). 어드레스의 계산은 6비트의 제1비트와 제6비트의 2비트로 행번호를 구하고, 제2비트에서 제5비트의 4비트로 열암호를 구한다.
S 박스 테이블은 8개이다. 각각의 S 박스 테이블은 배타적 논리합을 처리한 결과의 6비트씩의 변환에 사용한다. 통상의 1번째 S 박스 테이블(2901)의 1열째에서 4열째, 1행째에서 4행째의 데이터를 도 29에 도시한다. 본 실시예에서는 도 30과 같이 S 박스 테이블을 비트 반전 데이터도 구하도록 확장한다. 도 30에서의 표시 범위는 같지만, S 박스 테이블의 요소를 2개의 필드로 확장한다. 제1필드(열의 좌측 필드, 예를 들면 3004)는 도 29의 S 박스 테이블의 요소 데이터를 저장하고, 제2필드(열 우측의 필드, 예를 들면 3005)는 제1필드의 데이터의 비트 반전 데이터를 저장한다.
정상 배타적 논리합의 실행 결과를 최초에 처리하는 루틴(1101)에서는 먼저 정상 배타적 논리합의 실행 결과에서 확장한 S 박스 테이블을 사용하고, 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터를 구한다(1102). 이어서, 비트 반전 배타적 논리합의 실행 결과에서 확장한 S 박스 테이블을 사용하고, 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터를 구한다(1103). 비트 반전 배타적 논리합의 실행 결과를 사용하여, S 박스 처리를 하고 있으므로, (1103)의 처리 결과는 사용하지 않는다. 그러나, 데이터 처리와 소비 전류의 관련성을 줄이기 위해, 더미 처리로서 실행한다. 비트 반전 배타적 논리합의 실행 결과를 최초에 처리하는 루틴(1201)에서는 처리 순서가 반대로 되고, 마찬가지로 비트 반전 배타적 논리합의 실행 결과로 부터의 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터는 사용되지 않는다. 다음 P 전치 처리로 넘어가는 데이터는 정상 배타적 논리합의 실행 결과를 사용한 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터이다.
배타적 논리합의 실행 결과에서 확장한 S 박스 테이블을 사용하여, 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터를 구하는 데는 먼저 배타적 논리합의 실행 결과의 6비트에서 S 박스 테이블의 어드레스를 계산한다(1702). 이어서, 확장한 S 박스 테이블(3001)의 정상 S 박스 처리 데이터를 제1필드에서 구하고, 비트 반전 S 박스 처리 데이터를 제2필드에서 구한다(1703).
S 박스 처리에서의 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터는 청구항 1의 「정상 데이터 및 비트 반전 데이터의 조」의 실시예의 하나이다. 또한, 확장 S 박스 테이블(3001)을 사용하여, 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터를 생성하는 처리(1703)는 청구항 4의 「비트 반전 데이터 생성 수단」의 실시예이기도 하다. 비트 반전 배타적 논리합의 실행 결과에서 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터를 구하는 S 박스 테이블을 사용하여 S 박스 변환 결과를 계산하는 처리(1103과 1202)는 정상 데이터가 아니고, 비트 반전 데이터를 처리하는 것에 의해, 정상 데이터도 비트 반전 데이터도 마찬가지로 처리를 하는 것에 의해, 데이터 처리와 소비 전류의 의존성을 줄이는 것이다. 이것은 청구항 3의 「정상 데이터 명령 및 비트 반전 데이터 명령 처리 수단」의 실시예의 하나이다. S 박스 처리는 6비트 단위의 비트 단위가 아니고 환자 처리이므로, 청구항 9의 실시예이다. 정상 배타적 논리합의 실행 결과를 최초에 처리하는 루틴(1101) 또는 비트 반전 배타적 논리합의 실행 결과를 최초에 처리하는 루틴(1201)은 정상 데이터에 대하여 환자를 실행하고, 환자의 결과와 그의 비트 반전한 결과를 생성하고, 또한 비트 반전 데이터에 대하여 환자를 실행하고, 환자의 결과와 그의 비트 반전한 결과를 생성하므로, 청구항11의 실시예이다.
P 전치 처리(405)에 대하여 도 13을 사용하여 설명한다. P 전치 처리도 선택적 전치 처리(2401)와 같다. 다른 점은 P 전치 행렬(도 16의 1601)을 사용하고 있는 것이다.
S 박스 처리에서는 도 6의 데이터 형식으로 정상 S 박스 처리 데이터와 비트 반전 S 박스 처리 데이터가 넘어온다. 정상 S 박스 처리 데이터를 최초에 처리하는 루틴(1401)에서는 정상 S 박스 처리 데이터의 P 전치를 실행하고(1402), 이어서 비트 반전 S 박스 처리 데이터의 P 전치를 실행한다(1403). 비트 반전 S 박스 처리 데이터를 최초에 처리하는 루틴(1502)에서는 순서가 반대로 되어 있다. P 전치는 비트의 위치 전환을 위해, 비트 반전 S 박스 처리 데이터의 처리 결과인 비트 반전 P 전치 처리 데이터는 정상 S 박스 처리 데이터의 처리 결과인 정상 P 전치 처리 데이터의 비트 반전의 관계로 되어 있다. (1401)과 (1501)은 청구항 12의 실시예이다.
이상, f함수의 처리(402에서 405)의 실시예를 나타냈다. 이것은 청구항13의 실시예이다. 본 실시예에서는 데이터 처리의 순서의 랜덤화, 더미 처리의 추가, 정상 데이터나 비트 반전 데이터를 사용하는 것에 의해, 데이터 처리와 IC 카드 칩이 소비하는 전류의 관련성을 알아내기 어렵게 하고, 소비 전류의 파형을 관측하여도 암호 키의 추정을 곤란하게 할 수 있다.
이어서, RSA를 위한 실시예를 설명한다. RSA는 소인수 분해가 곤란한 것을 이용한 암호 알고리즘이다. 암호화 및 복호화에서는 다른 키를 사용하므로, 비대칭 암호 알고리즘이라고 불리운다. 암호화도 복호화도 이상의 멱승 잉여의 계산을 사용한다.
a = b mod n은 a-b가 n으로 나뉘어지는 것을 나타낸다. 복호화할 때 x 는 암화문에서 e는 기밀 키이고, y가 복호화된 평문이다. 멱승 잉여의 계산은 승산 잉여를 사용하여 계산할 수 있다. IC 카드에서는 멱승 잉여를 고속으로 계산할 수 있으므로, 승산 잉여를 계산할 수 있는 코프로세서를 갖고 있는 것이다. 승산 잉여는 다음의 수학식 이다.
멱승 잉여를 승산 잉여를 사용하여 계산하는 방법을 도 18에 나타낸다. 이 계산 방법은 예를 들면, 공립출판주식회사 강본영사저 「암호 이론 입문」의 94페이지에 나타내어져 있다. 기밀 키인 정수 e의 2진수 전개를 e = e0 e1 e2....e(w-1)로 한다. 즉, 2진수 전개한 결과(이하, e의 비트라 함)는 e를 2진수로 나타낸 비트열로된다. y의 초기값을 1로 하고(1802), e의 최상위의 비트에서 y를 n의 법으로 이승 잉여하고(1805), 해당 비트의 값이 "1"이면, y에 n의 법으로 x를 멱승 잉여한다(1807). "0"이면, (1807)의 처리는 스킵한다. (1805)에서 (1807)의 처리를 e의 최상위 비트에서 최하위 비트까지 계산한다.
도 18의 처리 순서에서는 e의 비트가 "1"이면, 코프로세서가 2회 움직이고, "0"이면 1회밖에 움직이지 않으므로, 코프로세서의 움직임을 관측하면, 기밀 키의 e를 추정할 수 있다. e를 2진수 전개한 비트에 관계없이 코프로세서의 동작 회수를 같게 하면, 코프로세서의 움직임을 관측하는 것만으로는 기밀 키를 추정하는 것이 곤란하게 된다.
도 19에 코프로세서의 동작 회수를 같게 하여, 기밀 키를 추정하는 것이 곤라한 한 멱승 잉여의 처리 순서를 도시한다. 본 실시예에서는 기밀 키 e의 비트 값에 관계없이, y에 x를 승산 잉여한다(1906). 그 대신 e의 비트가 "1"이면, 그 결과를 y에 놓는다(1906). 그렇지 않으면, y를 그대로 사용한다(1909). 이것을 e의 최하위 비트까지 계속 처리한다. 본 실시예에서는 e의 비트값에 관계없이, 코프로세서의 동작 회수가 같으므로, 소비 전류 파형에서 코프로세서의 움직임을 관측하여도, 기밀 키 e의 비트값은 알 수 없다. 본 실시예에서는 청구항14의 실시예이다. 청구항14의 승산 잉여 처리 수단은 (1906)으로서 실현되어 있고, 승산 잉여 처리 결과 선택 처리 수단은 (1907)에서 (1909)에 의해 실현되어 있다.
도 19에 도시한 멱승 잉여 계산을 계산하는 방법보다 고속 방법으로서, 도 20에 도시한 방법이 있다. 공립출판주식회사 강본영사저 「암호 이론 입문」의 95페이지에 기재되어 있는 어디션·체인이라고 하는 방법을 사용한 것이다. 이것은 도 19에 도시한 방법이 e의 1비트씩 처리한 것에 대하여, 복수 비트를 모아서 처리하는 방법이다. 도 20에 도시한 방법은 2비트를 모아서 나타낸 도면이다. 먼저, 멱승 승산되는 암호문 x의 0승, 1승, 2승, 3승한 결과를 구한다(2002). 이어서, y를 1로 초기화하고(2003), 그리고 최후 비트까지 처리하지 않았으면(2004), y를 2회 2승 잉여를 실행한다. 이것은 y의 값을 2비트분 상위의 자리로 시프트하는 것에 대응한다. 그리고, e의 상위 2비트씩부터 인출하여, 그것이 "0", "1", "10", "11"의 값에 따라, (2010), (2011), (2012), (2013)의 처리를 실행한다. 각각의 처리에서는 e의 2비트의 값에 의해, 멱승 잉여 계산의 도중 결과가 저장되어 있는 y에 t[0]에서 t[3]까지의 해당하는 값이 멱승 잉여된다. 예를 들면, (2012)의 처리는 e의 비트가 "10"의 경우로, y에 x의 2승 잉여 결과인 t[2]를 곱한다. 그후, 최후 비트를 처리할때까지, (2004)에서 (2013)까지의 처리를 반복한다. 또한, 최후에 e가 1비트만 남은 경우는 그 1비트분은 도 18이나 도 19의 처리를 실행한다.
도 20에서는 e의 2비트가 어느 값이라도, 코프로세서는 (2005)에서 2회, (2010)에서 (2013)의 어느 것인가가 1회를 실행하므로, 합계 같은 3회 동작한다. 그 때문에, 코프로세서의 동작을 관측하는 것만으로는 e의 비트를 추정하는 것은 곤란하다. 또한, 도 19의 처리에서는 1비트의 처리를 하기 위해, 2회 코프로세서가 움직였지만, 도 20의 처리에서는 2비트를 처리하기 위해, 3회 코프로세서가 동작하고 있고, 1비트당 1. 5회 코프로세서가 동작한다. 그 때문에, 도 20의 2비트 방식 쪽이 도 19의 1비트 방식에 비하여, 약 25 % 고속이다. 여기서, 처리 시간이 코프로세서의 동작 회수에 비례하는 이유는 도 20도 도 19의 처리 대부분이 코프로세서에 의한 연산으로 처리 시간을 소비하고 있기 때문이다.
그러나, 스텝(2010)에서 스텝(2013)에서의 t[0]에서 t[3]은 e의 2비트마다의 처리로 매회 같은 값을 사용하므로, 데이터와 소비 전류의 파형 관련을 알면, e의 비트를 추정할 우려가 있다.
본 발명에서는 t[0]에서 t[3]까지의 값을 멱승 잉여 연산 중에 변경하는 것에 의해, 데이터와 소비 전류의 파형 관련성을 줄이는 것이다. 도 21을 사용하여, 실시예의 하나를 설명한다. 도 21과 도 20의 차이는 도 20의 처리 흐름에 (2105)와 (2106)이 추가된 것이다. 도 21의 실시예는 멱승 잉여를 실행하기 위해 e를 2비트씩 반복처리 중에, 어느 회수마다 t[i]까지의 값을 변경한다. (2105)에서는 반복이 일정한 회수를 처리하였는 가를 조사한다. 그러면, (2106)에서 t[i]의 값을 변경한다. (2105)에서의 일정 회수로서, e의 자리를 20으로 나눈 값이 고려된다. 이것은 2비트 처리를 실행하고 있으므로, t[i]의 값을 10회 변경하는 것에 대응한다. 또한, 임의의 자리를 넘었을 때에 t의 값을 변경하는 것도 가능하다. t[i] 값의 변경 방법은 여러 가지 방법이 있다. 본 발명의 본질은 멱승 잉여를 실행하기 위한 반복 중에 t[i]의 값을 변경하는 것이다. (2106)에서는 t[i]에 잉여 연산의 법인 n에 난수를 곱하여 더하는 것에 의해, t[i]의 값을 변경한다. 이것은 다음과 같이 실행한다.
변경된 t[i]는 (2112)에서 (2115)의 어느것인가의 처리로 다음과 같이 y와 n을 법으로 하여 승산 잉여된다.
이 처리에서 r * n의 영향은 계산에서 없어지지 않게 된다. 이것은 r * n mod n이 제로이기 때문이다. 즉, r * n은 n으로 나누어지기 때문이다. t[i]은 t[i]와 다른 값이므로, 어떤 회수마다 (2112)부터 (2115)에서 사용되고 있는 t[i]가 변하므로, 데이터와 소비 전류의 파형 관련성을 줄일 수 있다. 본 실시예는 청구항 15의 실시예이다. 청구항 15의 「비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단」은 (2102)이고, 「비트 대응 승산 잉여 계산 처리 수단」은 (2108)에서 (2115)이다. 「비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단」은 (2105)와 (2106)으로 실현되어 있다. 또한, 본 실시예는 청구항 17의 실시예이기도 하다. 실시예 17의 「비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법의 정수배를 가하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단」은 (2106)으로서 실현되어 있다.
「비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단」으로서의 다른 실시예로서, 잉여 연산의 법에 곱하는 값으로서 2의 임의의 수 r의 멱승의 값을 사용하는 방법이다. 2의 멱승을 사용하는 것에 의해, 법 N에 2의 r승을 곱하는 처리가 용이하게 된다. 법 N에 2의 r승을 곱하는 것은 법 N을 r 비트분 왼쪽으로 시프트하는 것 만으로, 2의 r승을 곱하는 것과 등가로 된다. 일반적으로, 법 N은 100비트에서 1000비트까지의 정수이므로, 법N과 통상의 난수 r의 곱셈은 처리 시간이 걸린다. 시프트 조작은 곱셈에 비하여 매우 고속이다. 또한, 2의 멱승이 아니고, 2의 8승의 멱승을 사용하면, 시프트가 1비트 시프트가 아니고, 8비트 시프트, 즉 1바이트 시프트로 되고, 비트의 시프트보다 더 고속으로 실현할 수 있다. 1바이트 왼쪽으로의 시프트는 데이터를 1바이트 왼쪽에 두는 것에 상당하고, 시프트 처리가 아니고, 데이터 이동 명령으로 실현할 수 있기 때문이다. 본 실시예는 청구항 22의 실시예이다.
t[i] 값의 변경 방법으로서, 다른 실시예를 도 22를 사용하여 설명한다. 도 22에서 변경 방법은 t[i]를 변경할 때에 다음의 수학식 과 같이 어떤 값을 승산 잉여하여 변경한다.
그리고, 멱승 잉여가 종료한 때에 곱한 값의 n의 법에서의 역수를 곱한분 만큼 곱하는 것에 의해 원래로 복원하는 방법이다.
여기서,
이다. 이것은 이하의 수학식 에 나타낸 바와 같이, 도중에 v를 곱한 회수만큼 u를 곱하여, 원래로 복원한다고 하는 방법이다.
y는 도중에 v를 곱하고 있으므로, y가 k로 v를 멱승 잉여된 값이다. y는 y에 u를 k로 멱승 잉여한 것을 곱한 것이고, 수학식 15를 사용하는 것에 의해 결과는 y mod n으로 된다.
처리의 흐름을 도 22로 설명한다. 먼저, (2204)에서 법n의 잉여 연산으로 v와 그의 역수인 u를 구한다. 그리고 (2207)에서 v가 일정하게 되지 않도록, v를 변형한다. 변형의 한 방법은 난수를 구하고, 그 난수로 v를 멱승 잉여한다. 또 일정 회수마다 v를 멱승하는 수를 늘리는 것도 한 방법이다. 그의 값을 t[i]에 승산 잉여(2208)한다. 그리고, e의 비트의 처리가 끝났으면, u를 사용하여, v의 조작을 무효로 하는 연산을 실행하고, 올바른 y의 값을 구한다(2218). n을 미리 알고 있고, 또한 미리 정해진 난수를 사용한 경우, u를 v를 곱한 회수만큼 곱한 결과 s를 미리 구하여 둘 수 있다. 그 값 s를 사용하여,
로 하고, y의 원래의 값을 계산할 수 있다. 이것은 수학식 17의 조작과 같다.
본 실시에는 청구항 18의 실시예이다. 청구항 18의 「비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법에 있어서 곱하면 1로 되는 2개의 값 v와 u 중의 한쪽인 v 또는 v의 멱승을 해당 잉여 연산의 법에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단」은 (2204)와 (2207), (2208)에서 실현되어 있다. 또한, 본 실시예에서는 청구항 16의 실시예이기도 하다. 청구항 16의 「비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단」의 실시예는 (2218)이다.
이어서, 도 23의 처리에서, 「비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단」을 e의 비트를 모두 계산한 후가 아니고, e의 비트의 계산 도중에 실행하는 실시예를 나타낸다. 도 23의 처리에서는 (2302)에서 (2317)까지의 처리는 도 22의 (2202)에서 (2217)까지의 처리와 같다. (2218)에 상당하는 처리를 (2318), (2314)에서 (2317)의 어느것인가를 실행한 후에 실행한다. 예를 들면, (2308)에서 t[i]에 v를 승산 잉여한 경우, 그 조작을 매회 원래로 복원하는 경우는
을 실행하면 좋다. 이것은 (2314)부터 (2317)에서 y에 곱해져 있는 t[i]는 원래 t[i]의 v를 곱한 것이기 때문이다.
(2308)에서 수학식 20가 같이 t[i]는 변형되어 있고, (2314)에서 (2317)의 어느것인가에서는 수학식 21이 실행된다. 그 결과를 사용하여, (2318)에서 수학식 22의 처리를 실행하고, 원래의 결과를 도출한다.
또한, 효율적으로 실행하기 위해서는 매회 v를 곱한 것을 복원하는 것이 아니고, 일정 회수마다 v를 곱한 것을 복원하여도 좋다. 그때는 수학식 19의 u를 일정 회수 v를 곱한 것을 복원하는 값을 선택하고 수학식 19를 일정 회수 마다 계산하도록 하면 좋다.
도 23에 있어서, v로서 (n+1)/2를 사용하고, u로서 2를 사용한다. v와 u는 n을 법으로 하는 잉여 연산에서 역수의 관계에 있다. 즉, v * u mod = 1이다. (2307)의 변형 처리로서, 최초 일정 회수의 반복 처리에서는
그 이후의 반복 처리에서는
를 사용한다.
그리고, (2318)에서 v가 (n+1)/2일때의 계산을 3회마다 되돌리면,
로 되고, 2 ** 85로 된다. 수학식 25는 도 23의 처리에서는 2비트 처리를 사용하고 있으므로, v를 y에 곱하는 것은 2비트마다밖에 실행하고 있지 않으므로, 직전에 (2314)부터 (2317)에서 v를 곱하고 있는 것을 원래로 복원하기 위한 수학식 이다. 그리고, (2318)에서는 3회마다
을 계산하면, t[i]에 (n+1)/2를 곱한 조작은 원래로 복원한다. (2307)에서 v가 수학식 24를 사용하여, ((n+1)/2) ** 2로 변형되었으면, 수학식 25는
로 되고, (2 ** 2) ** 85 = 2 * 170으로 된다. 그리고 (2318)에서는 3회마다
을 계산하면, t[i]에 ((n+1)/2) ** 2를 곱한 조작은 원래로 돌아간다. 수학식 25나 수학식 27은 v로서 (n+1)/2를 사용하므로, 미리 값을 계산하여 둘 수 있다. 도 23에서는 e를 2비트씩 처리하는 방식으로 기술하였지만, 도 21이나 도 22, 도 23에서 기술한 방식은 e를 1비트씩 처리하는 방식이나 3비트 또는 4비트마다 처리하는 방식에도 적용할 수 있다.
도 23의 (2318)은 청구항 16의 「비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단」을, e의 비트를 모두 처리한 후 모아서 실행하는 것이 아니고, 도중에 실행하는 실시예이다. v = (n+1)/2와 u = 2를 사용한 수학식 21에서 수학식 28의 실시예는 청구항 19의 실시예이다. 도 22 및 도 23의 처리는 청구항 20의 실시예이다. 청구항 20의 「비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단」은 (2202) 또는 (2302)의 처리이다. 청구항 20의 「비트값 대응 입력 데이터 멱승 잉역값 변경 처리 수단」은 (2207)과 (2208) 또는 (2307)과 (2308)에서 실현되어 있다. 청구항 20의 「비트 대응 승산 잉여 계산 처리 수단」은 (2210)에서 (2217) 또는 (2310)에서 (2317)에서 실현되어 있다. 청구항 20의 「입력 데이터 멱승 잉여값 변경 역변환 처리 수단」은 (2218) 또는 (2318)에서 실현되어 있다.
도 21부터 도 23에서 기술한 실시예는 RSA에 따른 실시예이지만, 잉여 연산을 사용한 그밖의 암호, 예를 들면 엘가망 암호에도 마찬가지로 적용할 수 있다. 도 21에서 도 23에 도시한 「비트값 대응 입력 데이터 멱승 잉역 계산 처리 수단」, 「비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단」은 보다 일반적인 잉여 연산에도 적용할 수 있으므로, 청구항 26에서 청구항 33까지의 실시예이기도 하다. 또한, 청구항 15에서 청구항22까지는 공립출판주식회사 강본영사저 「암호 이론 입문」의 95페이지에 기재되어 있는 어디션·체인이라고 하는 방법을 베이스로 하였지만, 통상의 1비트마다 승산 잉여를 실행하는 멱승 잉여 연산에도 물론 사용할 수 있다.
잉여 연산에서의 데이터와 소비 전류 파형의 관련성은 승산 잉여 연산의 승수와 피승수만이 아니고, 법 N의 값에도 의존하고 있다. 법 N의 값과 소비 전류 파형의 관련성을 피하는 것이 중요한 정보를 외부로 누출하지 않기 위해 필요하게 된다. RSA 등의 암호 처리에서는 다음과 같은 계산이 빈번히 나온다.
이것을 일반화하면, 다음의 잉여 계산으로 된다.
이것은 a를 n으로 나눈 나머지가 y인 것을 나타내고 있고, 다음의 등식과 등가이다.
이 양변에 임의의 수 r을 곱하면, 다음과 같이 된다.
이것을 잉여 계산의 수학식 으로 정리하면,
로 된다. 즉, 법 N을 r배하고, 우변의 a를 r배하면, 좌변도 r배로 되는 것을 나타내고 있다. 법 N의 데이터와 소비 전류의 관련성을 없애기 위해서는 법 N을 변형하는 것이 하나의 방법이다. 수학식 33에서 법 N에 r을 곱하여, 또한 우변의 a를 r배하고, 잉여 연산을 하고, 그 결과를 r로 나누면, 원래의 y를 구할 수 있는 것을 나타내고 있다. 이와 같이 하는 것에 의해, 법 N의 값과 소비 전류의 관련성을 숨길 수 있다. 이것은 특히 「중국인의 잉여 정리」(공립출판주식회사 강본영사저 「암호 이론 입문」의 96페이지)를 사용하여 RSA의 계산을 실행할 때에 법 N의 소인수 p와 q를 사용한 잉여 계산에 있어서 p와 q의 정보를 은폐하므로 유효하다.
도 31에 그 처리 순서를 나타낸다. 먼저 법 N을 변형하기 위해 법 N에 곱하는 값r을 구한다(3102). 이어서, 법 N을 변형하기 위해 N을 r배 한다(3103). 그리고, 우변의 값도 r배하고(3104), 잉여 연산을 실행한다(3105). 그리고, 결과를 원래로 되돌리기 위해, 연산 결과를 r로 나눈다(3106).
도 31의 (3103)은 청구항 23의 잉여 연산의 법을 변경하는 잉여 연산법 변경 처리 수단이고, (3104)는 잉여 연산의 우변 값을 변경하는 잉여 연산 우변 변경 처리 수단이고, (3106)은 잉여 연산법 변경 처리 수단에서 변경한 잉여 연산의 법을 변경전의 계산 결과로 되돌리는 잉여 연산법 변경 처리 역변환 처리 수단의 실시예이다. 도 31에서는 청구항 32에 나타낸 바와 같이 잉여 연산의 법과 잉여 연산의 우변을 변경하는 수단으로서, 임의의 수 r을 곱하고 있다. 그리고, 잉여 연산법 변경 처리 역변환 처리 수단에서는 r로 나누는 것을 사용하고 있다.
법 N 등을 변형하는 r로서, 2의 멱승을 사용하면, 법 N과 우변의 값의 r배 처리는 멱승분 N을 좌로 시프트하면 좋다. 그리고, 잉여 연산의 결과를 r로 나누는 처리는 그 값을 우로 시프트하는 것만으로 좋고, 곱셈이나 나눗셈이 나오지 않으므로, 고속으로 연산할 수 있다. 또한, 2의 8승의 멱승을 r로서 사용하면, 곱셈이나 나눗셈은 시프트 명령이 아니고, 데이터 이동 명령으로 되어, 보다 고속으로 실현할 수 있다. 본 실시예는 청구항25의 실시예이다.
본 발명에 의하면, IC 카드 칩에서의 처리 순서를 랜덤하게 하는 것이나 더미 처리를 삽입하는 것, 처리 데이터를 변형하는 것에 의해, 소비 전류의 파형에서 처리나 암호 키의 추측이 곤란하게 된다.

Claims (34)

  1. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지는 정보 처리 장치에 있어서,
    정상 처리 데이터와 그의 비트의 값을 반전한 데이터로 이루어진 정상 데이터 및 비트 반전 데이터의 조를 데이터로서 갖는 것을 특징으로 하는 정보 처리 장치.
  2. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지는 정보 처리 장치에 있어서,
    동일 명령으로, 정상 처리 데이터와 그의 비트의 값을 반전한 데이터를 처리하는 정상 데이터 및 비트 반전 데이터 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  3. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지는 정보 처리 장치에 있어서,
    정상 처리 명령과 같은 명령 커맨드를 갖고, 또한 정상 처리 명령에 있어서 처리되는 데이터의 비트의 값을 반전한 데이터를 처리하는 명령을 갖는 정상 데이터 명령 및 비트 반전 데이터 명령 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  4. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지는 정보 처리 장치에 있어서,
    정상 처리 결과의 비트의 값을 반전한 데이터를 결과로서 생성하는 비트 반전 데이터 생성 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  5. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로서 다른 처리 데이터를 복수 반복하여 처리하는 반복 데이터 처리 수단을 포함하는 정보 처리 장치에 있어서,
    반복 데이터 처리 수단을 랜덤하게 실행하는 반복 랜덤 실행 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  6. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지는 정보 처리 장치에 있어서,
    프로그램 내에 프로그램의 해당 처리에 영향을 주지 않는 더미 실행 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  7. 제5항 또는 제6항에 있어서,
    더미 실행 처리 수단과 반복 데이터 처리 수단을 랜덤하게 실행하는 더미 실행 및 반복 랜덤 실행 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    비트 단위의 데이터를 교체하는 전치(轉置) 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  9. 제1항 내지 제7항 중 어느 한 항에 있어서,
    바이트 단위의 데이터를 교체하는 환자(換字) 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  10. 제1항 내지 제7항 중 어느 한 항에 있어서,
    입력 데이터와 암호 키 데이터의 배타적 논리합을 실행하는 배타적 논리합 처리 수단과 입력 데이터의 비트를 반전한 데이터와 암호 키의 배타적 논리합을 실행하는 비트 반전 데이터 배타적 논리합 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  11. 제1항 내지 제7항 중 어느 한 항에 있어서,
    입력 데이터에 대하여 비선형의 환자(換字)를 실행하고, 환자된 결과 및 환자된 결과의 비트의 값을 반전한 비트 반전 데이터를 생성하는 비선형 환자 처리 수단과
    입력 데이터의 비트를 반전한 데이터에 대하여 비선형의 환자를 실행하고, 환자된 결과 및 환자된 결과의 비트의 값을 반전한 비트 반전 데이터를 생성하는 비선형 환자 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  12. 제1항 내지 제7항 중 어느 한 항에 있어서,
    입력 데이터에 대하여 비선형의 전치(轉置)를 실행하고, 전치된 결과 및 전치된 결과의 비트의 값을 반전한 비트 반전 데이터를 생성하는 비선형 전치 처리 수단과,
    입력 데이터의 비트를 반전한 데이터에 대하여 비선형의 전치를 실행하고, 전치된 결과 및 전치된 결과의 비트의 값을 반전한 비트 반전 데이터를 생성하는 비선형 전치 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  13. 제1항 내지 제7항 중 어느 한 항에 있어서,
    입력 데이터와 암호 키 데이터의 배타적 논리합을 실행하는 배타적 논리합 처리 수단,
    입력 데이터를 반전한 데이터와 암호 키의 배타적 논리합을 실행하는 비트 반전 데이터 배타적 논리합 처리 수단,
    입력 데이터에 대하여 비선형의 환자를 실행하고, 환자된 결과 및 환자된 결과의 비트의 값을 반전한 비트 반전 데이터를 생성하는 비선형 환자 처리 수단,
    입력 데이터의 비트를 반전한 데이터에 대하여 비선형의 환자를 실행하고, 환자된 결과 및 환자된 결과의 비트의 값을 반전한 비트 반전 데이터를 생성하는 비선형 환자 처리 수단,
    입력 데이터에 대하여 비선형의 전치를 실행하고, 전치된 결과 및 전치된 결과의 비트의 값을 반전한 비트 반전 데이터를 생성하는 비선형 전치 처리 수단, 및
    입력 데이터의 비트를 반전한 데이터에 대하여 비선형의 전치를 실행하고, 전치된 결과 및 전치된 결과의 비트의 값을 반전한 비트 반전 데이터를 생성하는 비선형 전치 처리 수단
    을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  14. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지고, 데이터 처리 수단으로서 입력 데이터와 암호 키를 사용하여, 멱승 승산을 반복해서 멱승 잉여 계산을 실행하는 수단을 갖는 데이터 처리 수단을 포함하는 정보 처리 장치에 있어서,
    암호 키의 비트의 값에 관계없이 입력 데이터와 그때까지 계산한 결과를 승산 잉여하는 승산 잉여 처리 수단과, 암호 키의 비트가 1이면 승산 잉여 처리 수단의 결과를 사용하고, 0이면 승산 잉여 처리 수단의 결과를 무시하는 승산 잉여 처리 결과 선택 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  15. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지고, 데이터 처리 수단으로서 복수 비트의 값에 대응하여 입력 데이터의 멱승 잉여 계산한 결과인 비트값 대응 입력 데이터 멱승 잉여값을 구하는 비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단과, 암호 키의 복수 비트의 값마다 비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단에서 계산한 비트값 대응 입력 데이터 멱승 잉여값과 그때까지 승산 잉여한 결과를 승산 잉여하는 비트 대응 승산 잉여 계산 처리 수단을 갖는 입력 데이터와 암호 키를 사용하여 멱승 잉여 계산을 실행하는 데이터 처리 수단을 포함하는 정보 처리 장치에 있어서,
    비트 대응 승산 잉여 계산 처리 수단을 반복 처리하고 있는 어떤 타이밍에 있어서, 비트값 대응 입력 데이터 멱승 잉여값을 변경하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  16. 제15항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에서 비트값 대응 입력 데이터 멱승 잉여값에 변경을 가한 처리 결과를 변경하지 않은 값으로 되돌리는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  17. 제15항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법의 정수배를 가하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단을 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  18. 제17항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법에 있어서 곱하면 1이 되는 2개의 값 v와 u 중의 한쪽인 v 또는 v의 멱승을 해당 잉여 연산의 법에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단과,
    비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에 있어서, v를 잉여 연산의 법으로서 곱한 회수만큼, 멱승 잉여의 처리 결과에 u를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단
    을 비트값 대응 입력 데이터 멱승 잉여값 변경부와 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  19. 제18항에 있어서,
    상기 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단은, 잉여 연산의 법 N에 있어서 곱하면 1로 되는 2개의 값으로서, 2와 N+1/2를 사용하는 것을 특징으로 하는 정보 처리 장치.
  20. 제18항에 있어서,
    암호 키를 M비트의 조로서 나타내고, 그의 비트가 0 또는 1인 모든 조합에 대하여, 그의 값을 입력 데이터에 멱승 승산하여 비트값 대응 입력 데이터 멱승 잉여값을 구하는 비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단,
    어떤 타이밍에, 비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법에 있어서 곱하면 1로 되는 2개의 값 v와 u 중의 한쪽인 v 또는 v의 멱승을 해당 잉여 연산의 법 N에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단,
    암호 키의 복수 비트 M의 값마다, 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에서 계산한 비트값 대응 입력 데이터 멱승 잉여값과 그때까지 승산 잉여한 결과를 승산 잉여하는 비트 대응 승산 잉여 계산 처리 수단,
    v를 영여 연산의 법으로서 곱한 회수만큼, 멱승 잉여의 처리 결과에 u를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단을 갖는 것을 특징으로 하는 정보 처리 장치.
  21. 제20항에 있어서,
    어떤 타이밍에, 비트값 대응 입력 데이터 멱승 잉여값에 v로서 2의 랜덤한 멱승을 해당 잉여 연산의 법 N에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단,
    2를 잉여 연산으로 법으로서 곱한 회수만큼, 멱승 잉여의 처리 결과에 (n+1)/2를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단
    을 갖는 것을 특징으로 하는 정보 처리 장치.
  22. 제17항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값에 2의 임의수의 멱승 또는 2의 8승의 임의수의 멱승을 잉여 연산의 법에 곱한 수를 더하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단을 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  23. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지고, 데이터 처리 수단으로서 잉여 연산을 실행하는 데이터 처리 수단을 갖는 정보 처리 장치에 있어서,
    잉여 연산의 법을 변경하는 잉여 연산법 변경 처리 수단,
    잉여 연산의 우변의 값을 변경하는 잉여 연산 우변 변경 처리 수단, 및
    잉여 연산법 변경 처리 수단에서 변경한 잉여 연산의 법을 변경전의 계산 결과로 되돌리는 잉여 연산법 변경 처리 역변환 처리 수단
    을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  24. 제23항에 있어서,
    상기 잉여 연산법 변경 처리 수단과 잉여 연산 우변 변경 처리 수단, 잉여 연산법 변경 처리 역변환 처리 수단에서,
    법의 변경 수단으로서, 정수배를 곱하는 잉여 연산법 변경 처리 수단과,
    잉여 연산의 결과를 잉여 연산법 변경 처리 수단에서 사용한 정수(整數)를 잉여 연산의 우변의 값에 곱하는 잉여 연산 우변 변경 처리 수단,
    계산 결과로 되돌리는 수단으로서, 잉여 연산의 결과를 잉여 연산법 변경 처리 수단에서 사용한 정수로 나누는 잉여 연산법 변경 처리 역변환 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  25. 제24항에 있어서,
    상기 잉여 연산법 변경 처리 수단과 잉여 연산 우변 변경 처리 수단, 잉여 연산법 변경 처리 역변환 처리 수단에서,
    정수배로서 2의 임의수의 멱승 또는 2의 8승의 임의수의 멱승을 사용하는 잉여 연산법 변경 처리 수단과
    잉여 연산의 우변의 값을, 잉여 연산법 변경 처리 수단에서 사용한 정수배로서 2의 임의수의 멱승 또는 2의 8승의 임의수의 멱승으로 곱하는 잉여 연산 우변 변경 처리 수단,
    계산 결과로 되돌리는 수단으로서, 잉여 연산의 결과를 잉여 연산법 변경 처리 수단에서 사용한 정수배로서 2의 임의수의 멱승 또는 2의 8승의 임의수의 멱승으로 나누는 잉여 연산법 변경 처리 역변환 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  26. 프로그램을 저장하는 프로그램 저장부와 데이터를 보존하는 데이터 저장부를 갖는 기억 장치와 프로그램에 따라 소정의 처리를 실행하여 데이터 처리를 행하는 중앙 연산 장치를 갖고, 프로그램은 중앙 연산 장치에 실행의 지시를 부여하는 처리 명령으로 구성되는 하나이상의 데이터 처리 수단으로 이루어지고, 데이터 처리 수단으로서 잉여 연산을 실행하는 데이터 처리 수단을 갖는 정보 처리 장치에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값을 변경하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  27. 제26항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에서 비트값 대응 입력 데이터 멱승 잉여값에 변경을 가한 처리 결과를 변경하지 않은 값으로 되돌리는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단을 데이터 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  28. 제26항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법의 정수배를 가하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단을 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  29. 제28항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값에, 잉여 연산의 법에 있어서 곱하면 1로 되는 2개의 값 v와 u 중의 한쪽인 v 또는 v의 멱승을 해당 잉여 연산의 법에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단과,
    비트값 대응 입력 데이터 멱승 잉역값 변경 처리 수단 v를 잉여 연산의 법으로서 곱한 회수만큼 멱승 잉여의 처리 결과에 u를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단을 비트값 대응 입력 데이터 멱승 잉여값 변경부와 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  30. 제29항에 있어서,
    상기 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에서, 잉여 연산의 법 N에 있어서 곱하면 1로 되는 2개의 값으로서 2와 N+1/2를 사용하는 것을 특징으로 하는 정보 처리 장치.
  31. 제29항에 있어서,
    암호 키를 M비트의 조로서 나타내고, 그의 비트가 0 또는 1인 모든 조합에 대하여, 그의 값을 입력 데이터에 멱승 승산하여 비트값 대응 입력 데이터 멱승 잉여값을 구하는 비트값 대응 입력 데이터 멱승 잉여 계산 처리 수단과,
    어떤 타이밍에 비트값 대응 입력 데이터 멱승 잉여값에 잉여 연산의 법에 있어서 곱하면 1로 되는 2개의 값 v와 u 중의 한쪽인 v 또는 v의 멱승을 해당 잉여 연산의 법 N에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단과,
    암호 키의 복수 비트 M의 값마다, 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단에서 계산한 비트값 대응 입력 데이터 멱승 잉여값과 그때까지 승산 잉여한 결과를 승산 잉여하는 비트 대응 승산 잉여 계산 처리 수단 v를 잉여 연산의 법으로서 곱한 회수만큼 멱승 잉여의 처리 결과에 u를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단을 갖는 것을 특징으로 하는 정보 처리 장치.
  32. 제31항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값에, v로서 2의 랜덤한 멱승을 해당 잉여 연산의 법 N에 있어서 곱하는 것을 실행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단,
    2를 잉여 연산의 법으로서 곱한 회수만큼, 멱승 잉여의 처리 결과에 (n+1)/2를 잉여 연산의 법으로서 곱하는 처리를 행하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 역변환 처리 수단을 갖는 것을 특징으로 하는 정보 처리 장치.
  33. 제26항에 있어서,
    비트값 대응 입력 데이터 멱승 잉여값에, 2의 임의수의 멱승 또는 2의 8승의 임의수의 멱승을 잉여 연산의 법에 곱한 수를 더하는 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단을 비트값 대응 입력 데이터 멱승 잉여값 변경 처리 수단으로서 갖는 것을 특징으로 하는 정보 처리 장치.
  34. 제1항 내지 제33항 중 어느 한 항에 있어서,
    상기 정보 처리 장치는 IC 카드인 것을 특징으로 정보 처리 장치.
KR1019990053692A 1998-11-30 1999-11-30 정보 처리 장치, ic 카드 KR100693239B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP10338779A JP2000165375A (ja) 1998-11-30 1998-11-30 情報処理装置、icカード
JP1998-338779 1998-11-30

Publications (2)

Publication Number Publication Date
KR20000052392A true KR20000052392A (ko) 2000-08-25
KR100693239B1 KR100693239B1 (ko) 2007-03-12

Family

ID=18321392

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990053692A KR100693239B1 (ko) 1998-11-30 1999-11-30 정보 처리 장치, ic 카드

Country Status (6)

Country Link
US (1) US6839847B1 (ko)
EP (1) EP1006492A1 (ko)
JP (1) JP2000165375A (ko)
KR (1) KR100693239B1 (ko)
CN (1) CN1182460C (ko)
TW (1) TW466393B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100442218B1 (ko) * 2001-01-30 2004-07-30 미쓰비시 덴키 시스템 엘에스아이 디자인 가부시키가이샤 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
KR100743804B1 (ko) * 2000-01-08 2007-07-30 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 처리 장치 및 그 동작 방법

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305453A (ja) 1999-04-21 2000-11-02 Nec Corp 暗号化装置,復号装置,および暗号化・復号装置
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
GB0023699D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Executing a combined instruction
FR2818847A1 (fr) * 2000-12-26 2002-06-28 St Microelectronics Sa Circuit logique a polarite variable
JP3977592B2 (ja) * 2000-12-28 2007-09-19 株式会社東芝 データ処理装置
DE10101956A1 (de) * 2001-01-17 2002-07-25 Infineon Technologies Ag Verfahren zur Erhöhung der Sicherheit einer CPU
JP2002247025A (ja) * 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
JP4188571B2 (ja) 2001-03-30 2008-11-26 株式会社日立製作所 情報処理装置の演算方法および耐タンパ演算攪乱実装方式
JP3844116B2 (ja) * 2001-04-16 2006-11-08 株式会社ルネサステクノロジ 暗号化・復号化装置とicカード
FR2824209B1 (fr) * 2001-04-30 2003-08-29 St Microelectronics Sa Brouillage d'un calcul mettant en oeuvre une fonction modulaire
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
DE10129241B4 (de) * 2001-06-18 2008-04-30 Infineon Technologies Ag Multifunktionaler Rechner
DE10146804A1 (de) * 2001-09-22 2003-04-10 Philips Corp Intellectual Pty Verfahren und Schaltungsanordnung zum Ansteuern eines Displays sowie Chipkarte mit Display
US7248696B2 (en) * 2002-09-12 2007-07-24 International Business Machines Corporation Dynamic system bus encryption using improved differential transitional encoding
KR100456599B1 (ko) * 2002-11-12 2004-11-09 삼성전자주식회사 병렬 디이에스 구조를 갖는 암호 장치
JP2004212828A (ja) * 2003-01-08 2004-07-29 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
EP1457858A1 (fr) * 2003-03-14 2004-09-15 SCHLUMBERGER Systèmes Procédé de sécurisation d'un ensemble électronique à cryptoprocesseur
JP4565314B2 (ja) * 2004-03-12 2010-10-20 ソニー株式会社 信号処理回路および方法
US8296577B2 (en) 2004-06-08 2012-10-23 Hrl Laboratories, Llc Cryptographic bus architecture for the prevention of differential power analysis
JP2006025366A (ja) * 2004-07-09 2006-01-26 Sony Corp 暗号化装置及び半導体集積回路
JP2006054568A (ja) * 2004-08-10 2006-02-23 Sony Corp 暗号化装置、復号化装置、および方法、並びにコンピュータ・プログラム
KR100706787B1 (ko) 2004-11-29 2007-04-11 삼성전자주식회사 향상된 보안 기능을 갖는 스마트 카드
JP4634788B2 (ja) * 2004-12-17 2011-02-16 株式会社東芝 暗号演算回路と、該暗号演算回路を有する情報処理装置及びicカード
JP4529719B2 (ja) * 2005-02-16 2010-08-25 ソニー株式会社 信号処理回路
US7743977B2 (en) * 2005-02-28 2010-06-29 Broadcom Corporation Method and system for random data access for security applications
KR100623063B1 (ko) * 2005-05-04 2006-09-13 인하대학교 산학협력단 강제 충돌 기능을 갖는 알에프아이디 태그 및알에프아이디 시스템과 알에프아이디 태그 정보 보호방법
US7372290B2 (en) 2005-10-04 2008-05-13 Stmicroelectronics, Inc. System and method for using dummy cycles to mask operations in a secure microcontroller
WO2007046402A1 (ja) 2005-10-19 2007-04-26 Matsushita Electric Industrial Co., Ltd. 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路
JP2006260589A (ja) * 2006-04-19 2006-09-28 Sony Corp データ通信システム、情報処理装置および方法、並びにプログラム
CN101366231A (zh) * 2006-11-09 2009-02-11 松下电器产业株式会社 密码运算处理电路
EP1936527A1 (fr) * 2006-12-18 2008-06-25 Gemplus Procédé permettant de faire varier le nombre d'exécution de contre-mesures dans un code exécuté
CN101542557A (zh) 2007-05-30 2009-09-23 松下电器产业株式会社 信息安全装置
DE102008023912A1 (de) * 2008-05-16 2009-11-19 Siemens Aktiengesellschaft Verfahren und Speichervorrichtung zum Bereitstellen eines kryptografischen Schlüssels
JP2010008883A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 暗号用演算装置、暗号用演算方法及びプログラム
EP2180631A1 (en) * 2008-10-24 2010-04-28 Gemalto SA Cryptographic algorithm fault protections
JP5407352B2 (ja) * 2009-01-19 2014-02-05 富士通株式会社 復号処理装置、復号処理プログラム、復号処理方法
US8583944B1 (en) * 2010-08-04 2013-11-12 Xilinx, Inc. Method and integrated circuit for secure encryption and decryption
KR101344402B1 (ko) * 2010-08-12 2013-12-26 한국전자통신연구원 Rsa 서명 방법 및 장치
WO2012090289A1 (ja) * 2010-12-27 2012-07-05 富士通株式会社 暗号処理装置および方法
DE102012025416A1 (de) * 2012-12-21 2014-06-26 Giesecke & Devrient Gmbh Verfahren zum Betreiben eines portablen Datenträgers sowie ein solcher portabler Datenträger
CN104794813B (zh) * 2014-01-16 2018-09-04 浙江融创信息产业有限公司 Ic卡发卡系统、读写机具、黑白名单处理方法及装置
DE102014001647A1 (de) * 2014-02-06 2015-08-06 Infineon Technologies Ag Operation basierend auf zwei Operanden
JP6379852B2 (ja) * 2014-08-22 2018-08-29 大日本印刷株式会社 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム
FR3038473B1 (fr) * 2015-06-30 2017-08-11 Oberthur Technologies Procede de traitement cryptographique de donnees et programme d'ordinateur associe
EP3267354A1 (en) * 2016-07-04 2018-01-10 Gemalto Sa Secure loading of secret data to non-protected hardware registers
US11863304B2 (en) * 2017-10-31 2024-01-02 Unm Rainforest Innovations System and methods directed to side-channel power resistance for encryption algorithms using dynamic partial reconfiguration
CN111104169B (zh) * 2017-12-29 2021-01-12 上海寒武纪信息科技有限公司 指令列表调度方法、装置、计算机设备及存储介质
JP6973677B1 (ja) * 2021-03-22 2021-12-01 富士電機株式会社 逆数算出方法、装置、およびプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2617976B1 (fr) * 1987-07-10 1989-11-10 Thomson Semiconducteurs Detecteur electrique de niveau logique binaire
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
FR2728981A1 (fr) * 1994-12-28 1996-07-05 Gemplus Card Int Procede pour la mise en oeuvre d'un protocole de communication a cle privee entre deux dispositifs de traitement
US5572736A (en) * 1995-03-31 1996-11-05 International Business Machines Corporation Method and apparatus for reducing bus noise and power consumption
FR2745924B1 (fr) * 1996-03-07 1998-12-11 Bull Cp8 Circuit integre perfectionne et procede d'utilisation d'un tel circuit integre
JP3822707B2 (ja) 1997-05-08 2006-09-20 株式会社ルネサステクノロジ Icカード
US5917754A (en) * 1997-05-21 1999-06-29 Atmel Corporation Semiconductor memory having a current balancing circuit
US6219291B1 (en) * 2000-05-01 2001-04-17 Advanced Technology Materials, Inc. Reduction of data dependent power supply noise when sensing the state of a memory cell

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100743804B1 (ko) * 2000-01-08 2007-07-30 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 처리 장치 및 그 동작 방법
KR100442218B1 (ko) * 2001-01-30 2004-07-30 미쓰비시 덴키 시스템 엘에스아이 디자인 가부시키가이샤 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
US7024560B2 (en) 2001-01-30 2006-04-04 Renesas Technology Corp. Power-residue calculating unit using Montgomery algorithm

Also Published As

Publication number Publication date
JP2000165375A (ja) 2000-06-16
CN1182460C (zh) 2004-12-29
EP1006492A1 (en) 2000-06-07
US6839847B1 (en) 2005-01-04
KR100693239B1 (ko) 2007-03-12
CN1255692A (zh) 2000-06-07
TW466393B (en) 2001-12-01

Similar Documents

Publication Publication Date Title
KR100693239B1 (ko) 정보 처리 장치, ic 카드
US6408075B1 (en) Information processing equipment and IC card
US6986054B2 (en) Attack-resistant implementation method
KR100674550B1 (ko) 정보 처리 장치
US6968354B2 (en) Tamper-resistant modular multiplication method
US6269163B1 (en) Enhanced block ciphers with data-dependent rotations
CN101194457B (zh) 随机模数化多项式约简方法及其硬件
US6666381B1 (en) Information processing device, information processing method and smartcard
US20080019509A1 (en) Scalar multiplication method with inherent countermeasures
JP4199937B2 (ja) 耐タンパー暗号処理方法
JP4909403B2 (ja) 安全にデータを求める方法
Hutter et al. NaCl’s crypto_box in hardware
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
Oder Efficient and side-channel resistant implementation of lattice-based cryptography
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
JP3945497B2 (ja) 情報処理装置、icカード
JP4003723B2 (ja) 情報処理装置、耐タンパ処理装置
AU2005203004B2 (en) Information processing device, information processing method and smartcard
JP2008224830A (ja) 耐タンパーベキ乗演算方法
JP2004078976A (ja) 情報処理装置、耐タンパ処理装置
Ptácek Power analysis of AES

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120223

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130227

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee