JP2000165375A - 情報処理装置、icカード - Google Patents

情報処理装置、icカード

Info

Publication number
JP2000165375A
JP2000165375A JP10338779A JP33877998A JP2000165375A JP 2000165375 A JP2000165375 A JP 2000165375A JP 10338779 A JP10338779 A JP 10338779A JP 33877998 A JP33877998 A JP 33877998A JP 2000165375 A JP2000165375 A JP 2000165375A
Authority
JP
Japan
Prior art keywords
data
processing
bit
value
processing means
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP10338779A
Other languages
English (en)
Other versions
JP2000165375A5 (ja
Inventor
Masaru Oki
優 大木
Yasuko Fukuzawa
寧子 福澤
Susumu Okuhara
進 奥原
Masahiro Kaminaga
正博 神永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP10338779A priority Critical patent/JP2000165375A/ja
Priority to EP99123518A priority patent/EP1006492A1/en
Priority to US09/449,537 priority patent/US6839847B1/en
Priority to CNB991258312A priority patent/CN1182460C/zh
Priority to KR1019990053692A priority patent/KR100693239B1/ko
Priority to TW088120917A priority patent/TW466393B/zh
Priority to US09/525,014 priority patent/US6408075B1/en
Publication of JP2000165375A publication Critical patent/JP2000165375A/ja
Publication of JP2000165375A5 publication Critical patent/JP2000165375A5/ja
Pending legal-status Critical Current

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

Abstract

(57)【要約】 【課題】 ICカード用チップでの処理のデータとICカー
ド用チップの消費電流との関連性を減らす。 【解決手段】 ICカード用チップの処理順序をランダム
に入れ替えたり、無駄なダミー処理を追加することによ
り、処理データとICカード用チップの消費電流との関連
性を減らす。ICカード用チップでの処理のデータとICカ
ード用チップの消費電流との関連性を減らすことを可能
とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、情報処理装置、特
に、機密性の高いICカードなどの耐タンパ装置に関する
ものである。
【0002】
【従来の技術】ICカードは、主に、勝手に書き換えられ
ない情報の保持や秘密情報である暗号鍵を使ったデータ
の暗号化や暗号文の復号化を行うために使われる装置で
ある。ICカードは、電源を持っていないため、リーダラ
イタに差し込まれると、電源の供給を受け、動作可能と
なる。動作可能になると、リーダライタからコマンドを
受けて、コマンドに従い、データの転送を行う。ICカー
ドの一般的な解説は、オーム社出版電子情報通信学会編
水沢順一著「ICカード」などにある。
【0003】ICカードの構成は、図1に示すように、カ
ード101の上に、ICカード用チップ102を搭載した
ものである。一般にICカードは、接点を持ち、接点を通
して、リーダーライタから電源の供給やリーダライタと
のデータの通信を行う。
【0004】ICカード用チップの構成は、基本的にマイ
クロコンピュータと同じような構成である。その構成
は、図2に示すように、中央演算装置201、記憶装置
204、入出力ポート207、コ・プロセッサ202か
らなる。中央処理装置201は、論理演算や算術演算な
どを行う装置であり、記憶装置204は、プログラムや
データを格納する装置である。入出力ポートは、リーダ
ライタと通信を行う装置である。コ・プロセッサは、剰
余演算を行うための特別な演算装置であり、非対称暗号
であるRSAの演算などに用いられる装置である。ICカー
ド用プロセッサの中には、コ・プロセッサを持たないも
のも多くある。データバス203は、各装置を接続する
バスである。
【0005】記憶装置204は、ROM(Read Only Memor
y)やRAM(Random Access Memory)、EEPROM(Electrical E
rasable Programmable Read Only Memory)などからな
る。ROMは、変更できないメモリであり、主にプログラ
ムを格納するメモリである。RAMは自由に書き換えがで
きるメモリであるが、電源の供給が中断されると、記憶
している内容が消えてなくなる。ICカードがリーダライ
タから抜かれると電源の供給が中断されるため、RAMの
内容は、保持できなくなる。EEPROMは、電源の供給が中
断されてもその内容を保持することができるメモリであ
る。書き換える必要があり、ICカードがリーダライタか
ら抜かれても、保持するデータを格納するために使われ
る。例えば、プリペイドカードでのプリペイドの度数な
どは、使用するたびに書き換えられ、かつリーダライタ
か抜かれてもデータを保持する必要があるため、EEPROM
で保持される。
【0006】ICカードは、プログラムや重要な情報がIC
カード用チップの中に密閉されているため、重要な情報
を格納したり、カードの中で暗号処理を行うために、使
われている。ICカードでの暗号処理の解読の難しさは、
暗号アルゴリズムの解読の困難さと同じと考えられてい
た。しかし、ICカードが暗号処理を行っている時の消費
電流を観測し、解析することにより、暗号アルゴリズム
の解読より容易に暗号処理の内容や暗号鍵が推定される
可能性が示唆されている。消費電流は、リーダライタか
ら供給されている電流を測定することにより観測するこ
とができる。これは、John Wiley & sons社 W.Rankl &
W.Effing著 「Smart Card Handbook」の8.5.1.1 Passiv
e protective mechanisms(263ページ)にこのような
危険性が記載されている。
【0007】ICカード用チップを構成しているCMOSは、
出力状態が1から0あるいは0から1に変わった時に電
流を消費する。特に、データバス203のバスは、大き
な電気容量を持つため、バスの値が1から0あるいは0
から1に変わると、大きな電流が流れる。そのため、消
費電流を観測すれば、ICカード用チップの中で、何が動
作しているか分かる可能性を示唆している。
【0008】図5は、ICカード用チップの1サイクルで
の消費電流の波形を示したものである。処理しているデ
ータの依存して、電流波形が501や502のように異
なる。このような差は、バス203を流れるデータや中
央演算装置201で処理しているデータに依存して生じ
る。
【0009】コ・プロセッサ202は、中央演算装置と
並列に、長いビット、例えば、512ビットの剰余演算
を行うことができる。そのため、中央演算装置の消費電
流とは異なった消費電流波形を長い時間、観測すること
ができる。その特徴的な波形を観測すれば、コ・プロセ
ッサの動作回数を容易に測定することができる。コ・プ
ロセッサの動作回数が暗号鍵と何らかの関係があるなら
ば、コ・プロセッサの動作回数から暗号鍵を推定できる
可能性がある。
【0010】また、コ・プロセッサでの演算内容が、暗
号鍵に依存した偏りがあると、その偏りが消費電流から
求められ、暗号鍵が推定される可能性がある。
【0011】中央演算装置でも同様である。暗号鍵のビ
ットの値は決まっているため、処理するデータを変更し
て、消費電流を観測することにより、暗号鍵のビットの
値の影響が観測できる可能性がある。これらの消費電流
の波形を統計的に処理することにより、暗号鍵を推定で
きる可能性がある。
【0012】
【発明が解決しようとする課題】本発明の課題は、ICカ
ード用チップでのデータ処理と消費電流との関連性を減
らすことである。消費電流とチップの処理との関連性が
減れば、観測した消費電流の波形からICカードチップ内
での処理や暗号鍵の推測が困難になる。本発明の着眼点
は、ICカードチップでの処理手順をランダムにすること
や、ダミー処理を挿入することにより、消費電流の波形
から、処理や暗号鍵の推測を困難にするものである。
【0013】
【課題を解決するための手段】ICカード用チップに代表
される耐タンパ装置は、プログラムを格納するプログラ
ム格納部、データを保存するデータ格納部を持つ記憶装
置とプログラムに従い、所定の処理を実行し、データ処
理を行う中央演算装置を持ち、プログラムは、中央演算
装置に実行の指示を与える処理命令から構成される一つ
以上のデータ処理手段からなる、情報処理装置として考
えることができる。本発明では、処理しているデータと
ICカード用チップの消費電流の関連性を減らすための方
法の一つとして、処理するデータを正常処理のデータと
そのビットの値を反転したデータの両方を使用する。そ
して、ビット反転のデータと正常データを、同一の命令
で、正常処理のデータとビットの値を反転したデータと
を処理することにより、データバス上の値などが“0”
から“1”、あるいは“1”から“0”なる回数を一定
にする。データバスでは、値が反転したときに電流を大
きく消費するため、“1”と“0”の反転回数が一定に
なることにより、電流の消費する回数が一定になり、デ
ータ処理と消費電流の関連性を減らすことができる。
【0014】正常データとビット反転データを同じよう
に処理するための別の方法として、同一ルーチンで正常
データとビット反転データを処理できない場合は、正常
処理命令と同じ命令コマンドを有し、ビット反転したデ
ータを処理する命令を有する処理ルーチンを使用する。
さらに、常に処理した結果でも正常データとビット反転
データを生成することを行うようにし、正常データとビ
ット反転データを常に同じように処理するようにする。
【0015】データ処理と消費電流の関連性を減らす別
の方法は、処理するデータだけ異なる繰り返し処理があ
れば、一定の順番でデータを取り出し処理するのではな
く、処理順番をランダムにする方法である。また、別の
方法は、プログラムの該当処理に影響を与えないダミー
実行処理を入れることにより、どこで何をしているかが
一定にならないようにする方法である。ダミー実行処理
手段と繰り返しデータ処理手段とをランダムに実行する
ことを組み合わせることは、さらに、データ処理と消費
電流の関連性を減らすために有効である。
【0016】正常データとビット反転データを使う方法
や、ダミー実行処理手段と繰り返しデータ処理手段を使
う方法は、暗号アルゴリズムで使われるビット単位のデ
ータを入れ替える転置処理手段やバイト単位のデータを
入れ替える換字処理手段のデータ処理と消費電流の関連
性を減らすために、特に有効である。
【0017】実際、DESなどの転置や換字を使う暗号で
は、排他的論理和を使うことが多いので、入力データと
暗号鍵データの排他的論理和を行う排他的論理和処理手
段と入力データのビットを反転したデータと暗号鍵の排
他的論理和を行うビット反転データ排他的論理和処理手
段を有することは、データ処理と消費電流の関連性を減
らすために、有効である。また、入力データに対して非
線形の換字を行い、換字した結果及び換字した結果のビ
ットの値を反転したビット反転データを生成する非線形
換字処理手段と入力データのビットを反転したデータに
対して非線形の換字を行い、換字した結果及び換字した
結果のビットの値を反転したビット反転データを生成す
る非線形換字処理手段とを有することは、データ処理と
消費電流の関連性を減らすために、有効である。そし
て、入力データに対して非線形の転置を行い、転置した
結果および転置した結果のビットの値を反転したビット
反転データを生成する非線形転置処理手段と入力データ
のビットを反転したデータに対して非線形の転置を行
い、転置した結果および転置した結果のビットの値を反
転したビット反転データを生成する非線形転置処理手段
とを有することは、データ処理と消費電流の関連性を減
らすために、有効である。
【0018】それらを組み合わせて、入力データに対し
て非線形の換字を行い、換字した結果及び換字した結果
のビットの値を反転したビット反転データを生成する非
線形換字処理手段と、入力データのビットを反転したデ
ータに対して非線形の換字を行い、換字した結果及び換
字した結果のビットの値を反転したビット反転データを
生成する非線形換字処理手段、入力データに対して非線
形の転置を行い、転置した結果および転置した結果のビ
ットの値を反転したビット反転データを生成する非線形
転置処理手段、入力データのビットを反転したデータに
対して非線形の転置を行い、転置した結果および転置し
た結果のビットの値を反転したビット反転データを生成
する非線形転置処理手段とを有することは、データ処理
と消費電流の関連性を減らすために、有効である。
【0019】素因数分解が困難であることを利用したRS
Aなどの暗号では、入力データと暗号鍵を使って、べき
乗乗算を繰り返してべき乗剰余計算を行う。データ処理
と消費電流の関連性を減らすための方法の一つは、暗号
鍵のビットの値に関わらず、入力データとこれまで計算
した結果を乗算剰余する乗算剰余処理手段と、暗号鍵の
ビットが1ならば、乗算剰余処理手段の結果を使い、0
であれば、乗算剰余処理手段の結果を無視する乗算剰余
処理結果選択処理手段を使用することにより、暗号鍵の
ビットの値に関わらず、乗算剰余を行うことである。こ
のようにすることにより、乗算剰余のデータ処理と乗算
剰余の消費電流の関連性を減り、乗算剰余の実行回数か
ら、暗号鍵を推定することは困難となる。
【0020】RSAでは、複数ビットの値に対応して入力
データのべき乗剰余計算した結果であるビット値対応入
力データべき乗剰余値を求めるビット値対応入力データ
べき乗剰余計算処理手段と、暗号鍵の複数ビットの値毎
に、ビット値対応入力データべき乗剰余計算処理手段で
計算したビット値対応入力データべき乗剰余値とこれま
で乗算剰余した結果を乗算剰余するビット対応乗算剰余
計算処理手段を使い、性能を改善する方法がある。しか
し、この方法では、常に、同じビット値対応入力データ
べき乗剰余値の組を使用するため、データと消費電流に
関連性から暗号鍵を推定される可能性がある。これを解
決する方法一つは、ビット対応乗算剰余計算処理手段を
繰り返し処理しているあるタイミングにおいて、ビット
値対応入力データべき乗剰余値変更するビット値対応入
力データべき乗剰余値変更処理手段を用い、ビット値対
応入力データべき乗剰余値を一定の回数で変更する方法
である。また、この方法では、変更する方法に依存する
が、ビット値対応入力データべき乗剰余値の変更を元に
戻す必要がある場合がある。その一つの方法は、ビット
値対応入力データべき乗剰余値変更処理手段でビット値
対応入力データべき乗剰余値に変更を加えた処理結果を
変更を加えなかった値に戻すビット値対応入力データべ
き乗剰余値変更処理逆変換処理を行う方法である。ビッ
ト値対応入力データべき乗剰余値変更処理手段には、い
くつかの方法があるが、ビット値対応入力データべき乗
剰余値に剰余演算の法の整数倍を加えることも一つの方
法である。別な方法は、ビット値対応入力データべき乗
剰余値に、剰余演算の法において掛けると1になる二つ
の値vとuの中の一方であるv、あるいはvのべき乗を該当
剰余演算の法において掛けることを行うビット値対応入
力データべき乗剰余値変更処理手段とビット値対応入力
データべき乗剰余値変更処理手段において、vを剰余演
算の法として掛けた回数だけ、べき乗剰余の処理結果に
uを剰余演算の法として掛ける処理を行うビット値対応
入力データべき乗剰余値変更処理逆変換処理手段を用い
る方法である。また、ビット値対応入力データべき乗剰
余値変更処理手段で使う、剰余演算の法Nにおいて掛け
ると1になる二つの値として、2とN+1/2を使うこと
は、vとuを簡単に求める方法の一つである。RSAのよ
うな暗号を処理するために、暗号鍵をMビットの組とし
て表し、そのビットが0あるいは1であるすべての組み
合わせに対して、その値を、入力データにべき乗乗算し
てビット値対応入力データべき乗剰余値を求めるビット
値対応入力データべき乗剰余計算処理手段と、あるタイ
ミングで、ビット値対応入力データべき乗剰余値に、剰
余演算の法において掛けると1になる二つの値vとuの中
の一方であるv、あるいはvのべき乗を該当剰余演算の法
Nにおいて掛けることを行うビット値対応入力データべ
き乗剰余値変更処理手段、暗号鍵の複数ビットMの値毎
に、ビット値対応入力データべき乗剰余値変更処理手段
で計算したビット値対応入力データべき乗剰余値とこれ
まで乗算剰余した結果を乗算剰余するビット対応乗算剰
余計算処理手、vを剰余演算の法として掛けた回数だ
け、べき乗剰余の処理結果にuを剰余演算の法として掛
ける処理を行うビット値対応入力データべき乗剰余値変
更処理逆変換処理手段を使うことは、データと処理と消
費電流の関連性を減らすために有効である。また、その
時、あるタイミングで、ビット値対応入力データべき乗
剰余値に、vとして2のランダムなべき乗を該当剰余演
算の法Nにおいて掛けることを行うビット値対応入力デ
ータべき乗剰余値変更処理手段、2を剰余演算の法とし
て掛けた回数だけ、べき乗剰余の処理結果に(n+1)/2を
剰余演算の法として掛ける処理を行うビット値対応入力
データべき乗剰余値変更処理逆変換処理手段を使うと、
vとuを簡単に求めることができる。
【0021】
【発明の実施の形態】以下、本発明の実施例について図
面を参照しながら説明する。
【0022】図1はICカードの外観を示したものであ
る。ICカード101は、ISO7816の規格により大き
さや、ICカードのチップ102の位置や接点の数および
割り当てなどが規定されている。
【0023】図2は、ICカード用チップ102の内部構
成である。構成については、従来技術の説明で既に述べ
たとおりである。本発明は、プログラム205をいつも
一定に実行させるのではなく、ランダムに動作させた
り、無駄なダミー処理を追加したりして、ICカード用チ
ップのハードウェアが消費する電流波形の再現を困難に
するものである。
【0024】本実施例では、対称暗号DES(data encrypt
ion standard)と非対称暗号RSAを例にする。これは、他
の暗号にも使うことができる。DESやRSAなどの暗号につ
いては、共立出版株式会社岡本栄司著「暗号理論入門」
などに、記載されている。
【0025】DESは、64ビットのデータ(平文か暗号
文)を56ビットの暗号鍵で、暗号化と復号化を行う。
暗号化と復号化で同じ暗号鍵を使用するため、対称暗号
と呼ばれている。DESは、トランプをきって、ランダム
にするように、平分(暗号化される文)のビットをラン
ダムに入れ替え暗号化する。データの入れ替えは、暗号
鍵にしたがって行う。復号化する時は、暗号鍵に従い入
れ替えた順と逆に入れ替えを行い、データを元に戻す。
DESの処理での入れ替えは、ビット単位と複数ビットま
とまった単位での二つの入れ替え方法がある。前者は、
転置と呼び、後者は、換字と呼ぶ。
【0026】図3を用いて、DESの暗号化の方法を説明
する。暗号文は、まず、初期転置(IP:Initisal Permut
ation)301で転置させられる。これは、初期転置テー
ブルに従い、ビット単位で、暗号文の64ビットのデー
タを入れ替える。これ以降、初期転置の逆転置(IP-1)
313まで、一組の操作を16段行う。
【0027】各1段の処理は、前段の結果の前半か後半
の32ビットのデータと暗号鍵を入力としてf関数30
3と呼ばれる処理を行い、その出力を前段の残りの半分
のビットを使って排他的論理和305を取る操作を行
う。暗号鍵も、入れ替えが行われる。暗号鍵に対して、
まず、PC−1というテーブルを使った選択転置PC-1
(302)が行われる。その後、PC−2というテーブ
ルを使った選択転置PC−2 304を行い、暗号鍵の
入れ替えを行う。次の段では、28ビットづつをRSテ
ーブルにしたがって巡回させて使用する。
【0028】f関数303の処理を、図4に示す。ま
ず、f関数への入力文を選択的転置行列Eに基づいて、
選択的転置を行う(402)。次に、選択的転置を行っ
た入力データと暗号鍵との排他的論理和をとり(40
3)、Sボックスの処理を行い(404)、P転置処理
を行う(405)。Sボックスの処理は、403の排他
的論理和の処理結果である48ビットから6ビットづつ
取り出し、Sボックステーブルの行番号と列番号を求
め、4ビットのデータを生成する処理である。各Sボッ
クステーブルは、6ビットごとのデータの位置により異
なる。P転置処理は、P転置テーブルに従い、32ビッ
トのビット位置を入れ替える操作である。
【0029】処理手順が同一であれば、データに依存し
て、消費電流波形の偏りが出るため、本発明では、図4
の各処理を、実行ごとに処理手順が変更する、ランダム
な処理を追加することを行う。
【0030】図24を用いて、選択的転置処理402に
ついて説明する。選択的転置とは、f関数に入力される
入力データを選択的転置行列Eによって、ビットの位置
の置き換えと入力データを32ビットから48ビットに
拡大するものである。選択的転置行列E(2701)を
図27に示す。左上(2702)から右下(2703)
に数えて、入力データの第32、1、2、....、3
2、1番目ののビットを出力の第1番目から第48番目
のビットにする。
【0031】選択的転置処理の手順を説明する前に、本
実施例における選択的データ転置で使用するデータにつ
いて説明する。f関数に入力されるデータは、図6に示
すように、前の処理で正常データ602とそのビット6
03を反転したビット反転データの組にして入力され
る。このような組で扱うと、常に、“0”のビットの数
と“1”のビットの数は一定になる。例えば、正常デー
タのビットが、“00111100”であれば、ビット
反転データは“11000011”となり、正常データ
とそのビット反転データの組での“0”のビットの数は
8であり、“1”のビットの数、すなわちハミングウェ
イトは8である。そのため、正常データとそのビット反
転データを組で、データバス(203)に転送したなら
ば、組における“0”と“1”のビットの数が常に一定
になるため、データの依存性が消費電流に反映されない
という特徴がある。例えば、データバス203がプリチ
ャージバスであれば、データを転送する準備として、一
旦データバスの値を“1”か“0”にそろえ、その後、
データを転送する。この場合、常に、プリチャージの状
態では、バスの値が同じ値になっているため、正常デー
タとそのビット反転データを組でデータ転送した場合、
“1”から“0”あるいは、“0”から“1”に値が変
わる数は、プリチャージの状態の前後で、一定になり、
データによる消費電流依存性が減る。もし、データバス
が、プリチャージ状態を持たない、スタティックバスで
あれば、ビットの反転は、前のデータの値に依存する
が、転送するデータのハミングウェイトが常に一定のた
め、転送するデータによる電流消費依存性は少ない。少
なくとも、正常データだけでは、ハミングウェイトは一
定でないため、その電流消費依存性が生じる。正常デー
タとそのビット反転データの組を一緒にデータ転送し、
ハミングウェイトをそろえると、転送するデータによる
電流消費依存性は減る。
【0032】選択的転置処理の手順を図24に示す。
【0033】選択的転置処理は、入力データの32ビッ
トを6ビット単位で処理し、48ビットのデータを生成
する。処理されるデータは、正常な入力データとそのビ
ット反転入力データであり、2バイトで実現され、それ
ぞれのバイトに8ビットずつ格納されている。選択的転
置処理では、通常、選択的転置行列Eの並びの順に処理
する。しかし、それでは、データの処理順序が常に一定
であるため、消費電流の波形から、処理されているデー
タを推測される可能性がある。そのため、本実施例で
は、実行順序をランダムにし、かつランダムにダミー処
理を追加し、処理順序が一定にならないようにする。処
理順序がランダムになることにより、データと消費電流
の依存性を減らすことができる。
【0034】本実施例の選択的転置処理では、実行フラ
グをクリアする(2402)。この実行フラグは、各ビ
ットが繰り返し処理の処理単位で処理が終了しているな
らば、“1”であり、未処理であれば“0”である。実
行フラグのすべてのビットが“1”であるならば、処理
を終了する(2403)。そうでなければ、処理を続
け、乱数を取り出す(2404)。乱数は、ICカード用
チップが乱数生成装置を持っているならば、その装置か
ら乱数を取り出すのも一つの方法である。それ以外の方
法として、ソフト的に擬似乱数を作ることも可能である
(共立出版株式会社岡本栄司著「暗号理論入門」61ペ
ージから86ページ)。
【0035】繰り返し単位でのどの処理を実行するかを
乱数によって実行インデックスを決める(2405)。
例えば、選択的転置行列Eを行ごとに処理するのであれ
ば、実行インデックスは、 実行インデックス=(乱数 and 0x07) % 8 (式1) となる。乱数を0x07で下位3ビットを取り出し、その値
を8で割り、その余りを処理する行番号とする。もし、
ビット単位であれば、 実行インデックス=(乱数 and 0x01F) % 32 (式2) となる。乱数の下位5ビットを取り出し、その値を32
で割り、その余りを処理するビットの番号とする。実行
インデックスは、乱数だけから決まるので、順番はラン
ダムになり、かつすでに処理済みのデータを選ぶことも
ありえる。本実施例では、データ処理と消費電流の波形
の依存関係を減らすために、この性質を積極的に利用し
ている。
【0036】次に、実行フラグの対応するビットに処理
済みを示すために、“1”にする(2406)。一つの
手段として、以下の方法がある。
【0037】 K = 1を実行インデックス分だけ左にシフトする。 (式3) 実行フラグ =実行フラグ XOR K (式4) 式3で、実行インデックスのビット位置のビットを
“1”にし、式4で、実行フラグと排他的論理和を取る
ことにより、実行フラグの該当ビットを“1”にする。
【0038】以上の処理により、繰り返し処理の中の処
理の単位が乱数によってランダムに選ばれるため、処理
の単位の順序が一定になるない。そのため、データ処理
と消費電流の依存性がなくなり、処理や暗号鍵の推測を
困難にする。さらに、実行する繰り返しの単位は、ラン
ダムに選ばれるため、同じ処理を1度以上処理する可能
性がある。これは、処理時間を不定にするため、データ
処理と消費電流の依存性を見出すことをさらに難しくす
る。
【0039】次に、実行インデックスで選ばれた繰り返
し処理単位での一つの処理について述べる。これは、選
択的転置行列Eを行ごとの処理の一つ行の処理や選択的
転置行列Eをビットごとの処理の一つのビットの処理に
対応する。まず、実行インデックスに従い、処理すべき
正常入力データとビット反転入力データを取り出す(2
407)。本実施例では、正常入力データ以外に反転入
力データも同じように選択的転置処理を行う。その時、
正常入力データとビット反転入力データがいつも同じ順
序で処理されないように、順序をランダム化する。その
ために、乱数を取り出し(2408)、アドレス変位を
計算する(2409)。そのアドレス変位から呼び出す
ルーチンのアドレスを求め(2410)、ルーチンを呼
び出す(2411)。
【0040】アドレス変位を用いてデータ処理ルーチン
を呼び出す一つの実施例を図28を用いて説明する。メ
モリ(2801)上に、正常入力データを最初に処理する
ルーチンのアドレス(2802)とビット反転入力デー
タを最初に処理するルーチンのアドレス(2803)を
格納する。二つのアドレスの差がアドレス変位である。
アドレスを格納する単位が2バイトとすると、2409
のアドレス変位の計算方法の一つは以下のようになる。
【0041】 アドレス変位 = (乱数AND 0x01) * 2 (式5) これは、乱数の最下位ビットを取り出し、それを2倍す
る。ルーチンを呼び出すアドレスは、選択的転置ルーチ
ンのアドレスが書かれてあるデータ領域のベースアドレ
ス(2802)にアドレス変位を加える。この例では、
ベースアドレスには、正常データを最初に処理するルー
チンのアドレス(2802)が書かれ、ベースアドレス
+2バイトのアドレスには、ビット反転入力データを最
初に処理するルーチンのアドレス(2803)が書かれて
いる。乱数の最下位ビットが“0”であれば、アドレス
変位は0となり、正常入力データを最初に処理するルー
チンのアドレス(2802)が選択され、正常入力デー
タを最初に処理するルーチン(2804)がコールされ
る。乱数の最下位ビットが“1”であれば、アドレス変
位は2となり、ビット反転入力データを最初に処理する
ルーチンのアドレス(2803)が選択され、ビット反
転入力データを最初に処理するルーチン(2804)が
コールされる。
【0042】乱数によって、アドレス変位を計算するた
め、正常入力データを最初に処理するルーチンかビット
反転入力データを最初に処理するルーチンがランダムに
選択され、正常入力データとビット反転入力データがい
つも同じ順序で処理されないようになる。その結果、正
常入力データとビット反転入力データの処理と消費電流
波形の依存関係がなくなる。
【0043】正常入力データを最初に処理するルーチン
は、図25に示すように、正常入力データの選択的転置
を行い(2502)、次に、ビット反転入力データの選
択的転置を行う(2503)。ビット反転入力データを
最初に処理するルーチンは、図26に示すように、ビッ
ト反転入力データの選択的転置を行い(2602)、次
に、正常入力データの選択的転置を行う(2603)。
実際の選択的転置を行う処理ルーチン(2806)は、
それぞれのルーチンからさらに呼び出され、対応するビ
ットの選択的転置が行われる。そして、ビット反転入力
データの選択的転置(2503)あるいは(2602)
では、正常データを選択的転置を行った結果のビット反
転したデータを生成する。これは、選択的転置がビット
位置の転置であるため、正常データとビット反転データ
のビット反転の関係は維持されるためである。正常デー
タとビット反転データの格納方法は、図6で示したよう
に、組みになるように格納する。こうすることにより、
データ転送時のデータと消費電流の関連性を少なくする
ことができる。
【0044】以上の処理により、繰り返し処理すべきデ
ータの一つの処理が終わると、2403に戻る。すべて
のデータを処理していなければ、乱数に基づき別の処理
すべきデータをランダムに選び、処理を繰り返す。乱数
を使ってのみ処理すべきデータを決めているので、同じ
データを処理することもある。選択的転置処理では、同
じデータに対して2度以上を繰り返しても問題が起きな
い。
【0045】以上説明したように、本実施例の選択的転
置処理において説明した、正常入力データとビット反転
入力データは、請求項1の「正常データとそのビット反
転データの組」の実施例である。また、図25の正常入
力データを最初に処理するルーチンあるいは図26のビ
ット反転入力データを最初に処理するルーチンは、ルー
チンの中に、正常データの処理手順とビット反転の処理
手順を持っており、請求項3の「正常データ命令及びビ
ット反転データ命令処理手段」の実施例である。また、
図25の正常入力データを最初に処理するルーチンある
いは図26のビット反転入力データを最初に処理するル
ーチンは、正常入力データの選択的転置を行った結果を
作成すると同時に、その結果をビット反転した結果も生
成する。これは、請求項4の「ビット反転データ生成手
段」の実施例の一つでもある。データ処理ルーチン28
06は、選択的転置処理では、実際に、その処理を行う
ルーチンであり、正常データでもビット反転データでも
使用されるルーチンである。これは、請求項2の「正常
データ及びビット反転データ処理手段」の一つの実施例
である。また、実行フラグと乱数により処理順序をラン
ダムに変える手順(2402から2405)は、請求項
5の「繰り返しランダム実行処理手段」の一つの実施例
である。実行フラグと乱数によりすでに処理済みのデー
タもランダムに2度以上処理を行う手順(2402から
2406)は、請求項6の「ダミー実行処理手段」の一
つの実施例である。そして、実行フラグと乱数を使った
処理手順2402から2406は、ダミー処理と繰り返
しランダム処理を同時に実現しているため、請求項7の
「ダミー実行及び繰り返しランダム実行処理手段」の実
施例の一つでもある。図24で述べた選択的転置で述べ
た処理は、請求項8の典型的な実施例である。
【0046】次に、選択転的置を行った入力データと暗
号鍵との排他的論理和処理(403)の実施例について
述べる。この処理の基本的な流れは、図24を用いてす
でに説明した選択的転置の処理の手順とほとんど同じで
ある。主として異なっている点は、710での呼び出し
アドレスの計算が排他的論理和のルーチンのベースアド
レスに基づいていることである。排他的論理和処理は、
選択的転置処理で作成された、二つのデータを処理す
る。一つは、正常入力データを選択的転置した正常E転
置データであり、もう一つは、ビット反転入力データを
選択的転置したビット反転E転置データである。これら
は、図6に示した形式で格納し、取り出すときは、正常
データとビット反転データの対を一度に取り出す。ビッ
ト反転E転置データは正常E転置データのビット反転とな
っている。正常E転置データと暗号鍵は、ともに48ビ
ットである。また、次の処理であるSボックス処理が6
ビット単位の処理であるため、排他的論理和処理では6
ビット単位の処理を行うことが多い、1ビット単位で排
他的論理和処理の実行も可能である。前者では、少なく
とも8回の繰り返し処理(703から711)が必要で
あり、後者では、少なくとも48回の繰り返し処理(7
03から711)が必要である。
【0047】正常E転置サブデータを最初に処理するル
ーチンでは、正常E転置サブデータと暗号サブ鍵の排他
的論理和を最初に実行し(802)し、ビット反転E転
置サブデータと暗号サブ鍵の排他的論理和を後に実行す
る(803)。ビット反転E転置サブデータを最初に処
理するルーチンでは、実行順序が逆転する(902と9
03)。
【0048】正常E転置サブデータと暗号サブ鍵の排他
的論理和の結果とビット反転E転置サブデータと暗号サ
ブ鍵の排他的論理和は、ビット反転の関係になってい
る。これは、正常データとビット反転データを同じ暗号
サブ鍵と排他的論理和を実行したため、ビット反転の関
係が保存されているためである。
【0049】正常E転置サブデータを最初に処理するル
ーチン(801)とビット反転E転置サブデータを最初
に処理するルーチン(901)は、正常データと暗号鍵
データの排他的論理和とビット反転データの排他的論理
和を行うため、請求項10の実施例である。
【0050】次に、Sボックスの処理404について述
べる。本実施例でのSボックスの処理も基本的な流れ
は、図24の選択的転置の処理と似た流れである。
【0051】Sボックスの最初に、Sボックスの処理の
開始をランダムにするために、乱数を取り出し(100
2)、乱数値に従いダミー処理を実行する(100
3)。このダミー処理は、ループ処理がないループを乱
数値だけ繰り返すような処理でもよい。乱数値に従い、
ループの回数が異なるため、Sボックスの処理の開始が
ランダムになり、データ処理と消費電流の波形の依存性
が少なくなる。
【0052】実行フラグと乱数を使った処理順序のラン
ダム化とダミー処理を追加する処理(1004から10
13)は、選択的転置処理の2402から2411の処
理と同じである。Sボックス処理は、E転置データと暗
号鍵との排他的論理和の結果を使って行う。暗号鍵と選
択的転置の実行結果の排他的論理和処理(403)の実
行結果も図6のような正常データとビット反転データの
対の配列からなるデータである。実行インデックスを持
つ排他的論理和の実行結果を取り出すときは(100
9)、同様に対のデータを取り出す。正常排他的論理和
の実行結果を最初に処理するルーチン(1101)とビ
ット反転排他的論理和の実行結果を最初に処理するルー
チン(1201)は乱数でランダムに呼ばれる。
【0053】Sボックスの処理は、排他的論理和の実行
結果の6ビット毎に、Sボックステーブルのアドレスを
計算して(1702)、Sボックスの変換結果である4
ビットのデータを求める(1703)。アドレスの計算
は、6ビットの第1ビットと第6ビットの2ビットで行
番号を求め、第2ビットから第5ビットの4ビットで列
番号を求める。
【0054】Sボックステーブルは、8個ある。それぞ
れのSボックステーブルは、排他的論理和を処理した結
果の6ビットずつの変換に使用する。通常の1番目のS
ボックステーブル(2901)の1列目から4列目、1
行目から4行目のデータを図29に示す。本実施例で
は、図30のようにSボックステーブルをビット反転デ
ータも求めるように拡張する。図30での表示範囲は、
同じであるが、Sボックステーブルの要素を二つのフィ
ールドに拡張する。第1のフィールド(列の左側のフィ
ールド、例えば3004)は、図29のSボックステー
ブルの要素のデータを格納し、第2のフィールド(列の
右側のフィールド、例えば3005)は、第1のフィー
ルドのデータのビット反転データを格納する。
【0055】正常排他的論理和の実行結果を最初に処理
するルーチン(1101)では、まず、正常な排他的論
理和の実行結果から、拡張したSボックステーブルを使
い、正常Sボックス処理データとビット反転Sボックス
処理データを求める(1102)。次に、ビット反転排
他的論理和の実行結果から、拡張したSボックステーブ
ルを使い、正常Sボックス処理データとビット反転Sボ
ックス処理データを求める(1103)。ビット反転排
他的論理和の実行結果を使って、Sボックス処理をして
いるため、1103の処理結果は、使用しない。しか
し、データ処理と消費電流の関連性を減らすために、ダ
ミー処理として実行する。ビット反転排他的論理和の実
行結果を最初に処理するルーチン(1201)では、処
理順序が逆になり、同様に、ビット反転排他的論理和の
実行結果からの正常Sボックス処理データとビット反転
Sボックス処理データは、使用されない。次のP転置処
理に渡されるデータは、正常排他的論理和の実行結果を
使った正常Sボックス処理データとビット反転Sボック
ス処理データである。
【0056】排他的論理和の実行結果から拡張したSボ
ックステーブルを使って、正常Sボックス処理データと
ビット反転Sボックス処理データを求めるには、まず、
排他的論理和の実行結果の6ビットからSボックステー
ブルのアドレスを計算する(1702)。次に、拡張し
たSボックステーブル(3001)の正常Sボックス処
理データを第1のフィールドから求め、ビット反転Sボ
ックス処理データを第2のフィールドから求める(17
03)。
【0057】Sボックスの処理での正常Sボックス処理
データとビット反転Sボックス処理データは、請求項1
の「正常データ及びビット反転データの組み」の実施例
の一つである。また、拡張Sボックステーブル(300
1)を使って、正常Sボックス処理データとビット反転
Sボックス処理データを生成する処理(1703)は、
請求項4の「ビット反転データ生成手段」の実施例でも
ある。ビット反転排他的論理和の実行結果から、正常S
ボックス処理データとビット反転Sボックス処理データ
を求めるSボックステーブルを使いSボックス変換結果
を計算する処理(1103と1202)は、正常データ
ではなく、ビット反転データを処理することにより、正
常データもビット反転データも同じように処理をするこ
とにより、データ処理と消費電流の依存性を減らすもの
である。これは、請求項3の「正常データ命令及びビッ
ト反転データ命令処理手段」の実施例の一つである。S
ボックスの処理は、6ビット単位のビット単位ではない
換字処理であるので、請求項9の実施例である。正常排
他的論理和の実行結果を最初に処理するルーチン(11
01)あるいは、ビット反転排他的論理和の実行結果を
最初に処理するルーチン(1201)は、正常データに
対して換字を行い、換字の結果とそのビット反転した結
果を生成し、かつビット反転データに対して換字を行
い、換字の結果とそのビット反転した結果を生成するた
め、請求項11の実施例である。
【0058】P転置処理(405)について図13を用い
説明する。P転置処理も選択的転置処理(2401)と
同じである。異なっている点は、P転置行列(図16の
1601)を使用していることである。
【0059】Sボックス処理からは、図6のデータ形式
で、正常Sボックス処理データとビット反転Sボックス
処理データが渡される。正常Sボックス処理データを最
初に処理するルーチン(1401)では、正常Sボック
ス処理データのP転置を行い(1402)、次にビット
反転Sボックス処理データのP転置を行う(140
3)。ビット反転Sボックス処理データを最初に処理す
るルーチン(1502)では、順序が逆になっている。P
転置は、ビットの位置の入れ替えのため、ビット反転S
ボックス処理データの処理結果であるビット反転P転置
処理データは、正常Sボックス処理データの処理結果で
ある正常P転置処理データのビット反転の関係になって
いる。1401と1501は、請求項12の実施例であ
る。
【0060】以上、f関数の処理(402から405)
の実施例を示した。これは、請求項13の実施例であ
る。本実施例では、データ処理の順番のランダム化、ダ
ミー処理の追加、正常データやビット反転データを使う
ことにより、データ処理とICカードチップが消費する電
流との関連性をわかりにくくし、消費電流の波形を観測
しても暗号鍵の推定を困難にすることができる。
【0061】次に、RSAのための実施例を説明する。RSA
は、素因数分解が困難なことを利用した暗号アルゴリズ
ムである。暗号化及び復号化では、異なった鍵を使うた
めを、非対称暗号アルゴリズムと呼ばれる。暗号化も復
号化も以下のべき乗剰余の計算を使用する。
【0062】 y=x ** e mod n (式6) a = b mod nは、a - bがnで割り切れることを示す。復
号化のときは、xは、暗号文で、eは秘密鍵であり、yが
複号化された平文である。べき乗剰余の計算は、乗算剰
余を使って計算することができる。ICカードでは、べき
乗剰余を高速に計算できるために、乗算乗除を計算でき
るコ・プロセッサを持っていることがある。乗算剰余
は、以下の式である。
【0063】y = a * b mod n (式7) べき乗剰余を乗算剰余を使って計算する方法を図18に
示す。この計算方法は、例えば、共立出版株式会社岡本
栄司著「暗号理論入門」の94ページに示されている。
秘密鍵である整数eの2進数展開をe = e0 e1 e2
....... e(w-1)とする。すなわち、2進数展開した
結果(今後、eのビットという)は、eを2進数で表した
ビット列になる。yの初期値を1とし(1802)、eの
最上位のビットから、yをnの法で二乗剰余し(180
5)、該当ビットの値が“1”であれば、yにnの法でx
を乗算剰余する(1807)。“0”であれば、180
7の処理は、スキップする。1805から1807の処
理を、eの最上位のビットから最下位のビットまで計算
する。
【0064】図18の処理手順では、eのビットが
“1”であれば、コ・プロセッサが2回動き、“0”で
あれば、1回しか動かないため、コ・プロセッサの動き
を観測すれば、秘密鍵のeを推定することができる。eを
2進数展開したビットに関わらず、コ・プロセッサの動
作回数を同じにすると、コ・プロセッサの動きを観測す
るだけでは、秘密鍵を推定することが困難になる。
【0065】図19に、コ・プロセッサの動作回数を同
じにして、秘密鍵を推定することが困難にしたべき乗剰
余の処理手順を示す。本実施例では、秘密鍵eのビット
の値に関わらず、yにxを乗算剰余するする(190
6)。その代わりeのビットが“1”であれば、その結
果をyにいれる(1908)。そうでなければ、yをそ
のまま使用する(1909)。これをeの最下位ビット
まで処理を続ける。本実施例では、eのビットの値に関
わらず、コ・プロセッサの動作回数が同じであるため、
消費電流波形からコ・プロセッサの動きを観測しても、
秘密鍵eのビットの値は分からない。本実施例は、請求
項14の実施例である。請求項14の乗算剰余処理手段
は1906として実現されており、乗算剰余処理結果選
択処理手段は1907から1909によって実現されて
いる。
【0066】図19に示したべき乗剰余計算を計算する
方法より高速な方法として、図20に示す方法がある。
共立出版株式会社岡本栄司著「暗号理論入門」の95ペ
ージにて記載されているアディション・チェインという
方法を使ったものである。これは、図19に示した方法
が、eの1ビットずつの処理であったのに対し、複数ビ
ットをまとめて処理する方法である。図20に示す方法
は、2ビットをまとめて示す方法である。まず、べき乗
乗算される暗号文xの0乗、1乗、2乗、3乗した結果
を求める(2002)。次に、yを1に初期化し(20
03)、そして、最後のビットまで処理していなければ
(2004)、yを2回二乗剰余を行う。これは、yの値
を2ビット分上位の桁にシフトすることに対応する。そ
して、eの上位の2ビットずつから取り出して、それら
が“00”、“01”、“10”、“11”の値にした
がって、2010、2011、2012、2013の処
理を行う。それぞれの処理では、eの2ビットの値によ
って、べき乗剰余計算の途中結果が格納されているyにt
[0]からt[3]までの該当する値が乗算剰余される。例え
ば、2012の処理は、eのビットが“10”の場合
で、yにxの二乗剰余の結果であるt[2]を掛ける。その
後、最後のビットを処理するまで、2004から201
3までの処理を繰り返す。なお、最後にeが1ビットだ
け残った場合は、その1ビット分は図18か図19の処
理を行う。
【0067】図20では、eの2ビットがどの値でも、
コ・プロセッサーは、2005で2回、2010から2
013のどれか1回を実行するため、合計同じ3回動作
する。そのため、コ・プロセッサーの動作を観測するだ
けでは、eのビットを推定することは困難である。な
お、図19の処理では、1ビットの処理をするために、
2回コ・プロセッサーが動いたが、図20の処理では、
2ビットを処理するために、3回コ・プロセッサーが動
作しており、1ビットあたり1.5回コ・プロセッサー
が動作する。そのため、図20の2ビット方式の方が図
19の1ビットの方式に比べて、約25%高速である。
ここで、処理時間がコ・プロセッサーの動作回数に比例
する理由は、図20も図19の処理の大部分がコ・プロ
セッサーによる演算で処理時間を消費しているためであ
る。
【0068】しかし、ステップ2010からステップ2
013でのt[0]からt[3]は、eの2ビットごとの処理で
毎回同じ値を使用するため、データと消費電流の波形の
関連が分かれば、eのビットを推定される恐れがある。
【0069】本発明では、t[0]からt[3]までの値を、べ
き乗剰余演算中に変更することにより、データと消費電
流の波形の関連性を減らすものである。図21を用い
て、実施例の一つを説明する。図21と図20の違い
は、図20の処理の流れに2105と2106が追加さ
れたことである。図21の実施例は、べき乗剰余を行う
ためにeを2ビットずつ繰り返し処理中に、ある回数毎
に、t[i]までの値を変更する。2105では、繰り返し
が一定の回数を処理したかを調べる。そうであれば、2
106でt[i]の値を変更する。2105での一定の回
数として、eの桁を20で割った値が考えられる。これ
は、2ビット処理を行っているため、t[i]の値を10回
変更することに対応する。また、任意の桁を超えたとき
にtの値を変更するようにも可能である。t[i]の値の変
更方法は、いろいろな方法がある。本発明の本質は、べ
き乗剰余を行うための繰り返しの中でt[i]の値を変更す
ることである。2106では、t[i]に、剰余演算の法で
あるnに乱数を掛けて加えることにより、t[i]の値を変
更する。これは、以下のように行う。
【0070】 r = 乱数 (式8) t[i] =t[i] + r * n (式9) 変更されたt[i]は、2112から2115のどれかの処
理で、以下のようにyとnを法として乗算剰余される。
【0071】 y = y * t[i] mod n (式10) = y * (t[i] + r * n) mod n = y * t[i] mod n + r * n mod n = y * t[i] mod n この処理で、r * nの影響は計算から消えてなくなる。
これは、r * n mod nがゼロであるためである。すなわ
ち、r*nはnで割り切れるためである。t[i]は、t[i]と
異なった値のため、ある回数毎に、2112から211
5で使われているt[i]が変わるため、データと消費電流
の波形の関連性を減らすことができる。本実施例は請求
項15の実施例である。実施例15の「ビット値対応入
力データべき乗剰余計算処理手段」は2102であり、
「ビット対応乗算剰余計算処理手段」は、2108から
2115である。「ビット値対応入力データべき乗剰余
値変更処理手段」は、2105と2106で実現されて
いる。また、本実施例は、請求項17の実施例でもあ
る。実施例17の「ビット値対応入力データべき乗剰余
値に剰余演算の法の整数倍を加えるビット値対応入力デ
ータべき乗剰余値変更処理手段」は、2106として実
現されている。
【0072】「ビット値対応入力データべき乗剰余値変
更処理手段」としての別な実施例として、剰余演算の法
に掛ける値として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の実施例である。
【0073】t[i]の値の変更方法として、別の実施例を
図22を用いて説明する。図22での変更方法は、t[i]
を変更するときに、以下の式のようにある値を乗算剰余
して変更する。
【0074】 t[i] = t[i] * v mod n (式11) そして、べき乗剰余が終了したときに、掛けた値のnの
法での逆数を掛け合わせた分だけ掛けることにより元に
戻す方法である。
【0075】 k = vをべき乗剰余した回数 (式12) s = u ** k mod n (式13) y = y * s mod n (式14) ここで、u * v mod n = 1
(式15) である。これは、以下の式に示すように、途中でvを掛
けた回数だけuを掛けて、元に戻すという方法である。
【0076】 y = y * v**k mod n (式16) y = y * u**k mod n (式17) = y * v**k * u**k mod n = y * (v*u)**k mod n = y mod n * (v*u)**k mod n = y mod n * ((v*u) mod n)**k mod n = y mod n * 1 mod n = y mod n * 1 = y mod n yは、途中でvを掛けているため、yがkでvをべき乗剰余
された値である。yは、yにuをkでべき乗剰余したもの
を掛けたものであり、式15を使うことにより、結果は
y mod nとなる。
【0077】処理の流れを図22で説明する。まず、2
204で法nの剰余演算でvとその逆数であるuを求め
る。そして、2207で、vが一定にならないように、
vを変形する。変形の一つ方法は、乱数を求め、その乱
数でvをべき乗剰余する。また、一定回数毎に、vをべ
き乗する数を増やすことも一つの方法である。その値を
t[i]に乗算剰余する(2208)する。そして、eのビ
ットの処理が終わったならば、uを使って、vの操作を
無効にする演算を行い、正しいyの値を求める(221
8)。nがあらかじめわかっており、かつあらかじめ定
められた乱数を使った場合、uをvを掛けた回数だけ掛
けた結果sをあらかじめ求ておくことができる。その値
sを使って、 y = y * s mod n (式18) とし、yの元の値を計算することができる。これは、式
17の操作と同じである。
【0078】本実施例は、請求項18の実施例である。
請求項18の「ビット値対応入力データべき乗剰余値
に、剰余演算の法において掛けると1になる二つの値v
とuの中の一方であるv、あるいはvのべき乗を該当剰余
演算の法において掛けることを行うビット値対応入力デ
ータべき乗剰余値変更処理手段」は2204と220
7、2208で実現されている。また、本実施例は、請
求項16の実施例でもある。請求項16の「ビット値対
応入力データべき乗剰余値変更処理逆変換処理手段」の
実施例は、2218である。
【0079】次に、図23の処理で、「ビット値対応入
力データべき乗剰余値変更処理逆変換処理手段」をeの
ビットをすべて計算した後ではなく、eのビットの計算
途中に行う実施例を示す。図23の処理では、2302
から2317までの処理は、図22の2202から22
17までの処理と同じである。2218に相当する処理
を(2318)、2314から2317のどれかを実行
した後に行う。例えば、2308でt[i]にvを乗算剰余
した場合、その操作を毎回元に戻す場合は、y = y * u
mod n (式19)を行えばよ
い。これは、2314から2317でyに掛けられてい
るt[i]は、元にt[i]のvを掛けたものであるからであ
る。
【0080】 t[i] = t[i] * v mod n (式20) y = y * t[i] mod n (式21) = y * t[i] * v mod n y = y * u mod n (式22) = y * t[i] * v * u mod n = y * t [i] mod n 2308で式20のようにt[i]は変形されており、2314
から2317のどれかでは式21が実行される。その結
果を使い、2318で式22の処理を行い、元の式の結
果を導出する。
【0081】さらに効率的に実行するためには、毎回、
vを掛けたことを戻すのではなく、一定回数ごとにvを掛
けたことを戻してもよい。その時は、式19のuを一定
回数vを掛けたことを戻す値を選び、式19を一定回数
毎とに計算するようにすればよい。
【0082】図23において、vとして(n+1)/2を用
い、uとして2を用いる。vとuは、nを法とする剰余演
算で逆数の関係にある。すなわち、v * u mod n = 1で
ある。2307のvの変形処理として、最初の一定回数
の繰り返し処理では、 v = 1 (式23) それ以降の繰り返し処理では、 v = v * (n+1)/2 (式24) を用いる。
【0083】そして、2318で、vが(n+1)/2であると
きの計算を3回毎に戻すならば、 u = ((2**4*2)**4*2)**4*2 (式25) となり、2**85となる。式25は、図23の処理では、
2ビット処理を使っているため、vをyに掛けるのは2
ビットごとにしか行われないためと、直前に2314か
ら2317でvを掛けていることを元に戻すための式で
ある。そして、2318では、3回毎に y = y * 2**85 mod n (式26) を計算すれば、 t[i]に(n+1)/2を掛けた操作は元に戻
る。2307で、vが式24を使って、((n+1)/2)**2と
変形されたならば、式25は、 u = (((2**2)**4*2**2)**4*2**2)**4*2**2 (式27) となり、(2**2)**85 = 2*170となる。そして、2318
では、3回毎に y = y * 2**170 mod n (式28) を計算すれば、 t[i]に((n+1)/2)**2を掛けた操作は元
に戻る。式25や式27は、vとして(n+1)/2を使うた
め、あらかじめ値を計算しておく事ができる。図23で
は、eを2ビットずつ処理する方式で述べたが、図21
や図22、図23で述べた方式は、eを1ビットずつ処
理する方式や3ビットあるいは4ビットごとに処理する
方式にも適用できる。
【0084】図23の2318は、請求項16の「ビッ
ト値対応入力データべき乗剰余値変更処理逆変換処理手
段」を、eのビットをすべて処理した後まとめて実行す
るのではなく、途中で実行する実施例である。v=(n+1)/
2とu=2を使った式21から式28の実施例は、請求項1
9の実施例である。図22及び図23の処理は、請求項
20の実施例である。請求項20の「ビット値対応入力
データべき乗剰余計算処理手段」は、2202あるいは
2302の処理である。請求項20の「ビット値対応入
力データべき乗剰余値変更処理手段」は、2207と2
208、あるいは2307と2308で実現されてい
る。請求項20の「ビット対応乗算剰余計算処理手段」
は2210から2217、あるいは2310から231
7で実現されている。請求項20の「入力データべき乗
剰余値変更逆変換処理手段」は2218あるいは231
8で実現されている。
【0085】図21から図23で述べた実施例は、RS
Aに基づいた実施例であるが、剰余演算を使用したその
他の暗号、たとえばエルガマル暗号にも同様に適用でき
る。図21から図23に示した「ビット値対応入力デー
タべき乗剰余計算処理手段」、「ビット値対応入力デー
タべき乗剰余値変更処理逆変換処理手段」は、より一般
的な剰余演算にも適用できるため、請求項26から請求
項33までの実施例でもある。また、請求項15から請
求項22までは、共立出版株式会社岡本栄司著「暗号理
論入門」の95ページにて記載されているアディション
・チェインという方法をベースにしたが、通常の1ビッ
トごとの乗算剰余を行うべき乗剰余演算にもでも使うこ
とができる。
【0086】剰余演算でのデータと消費電流波形の関連
性は、乗算剰余演算の乗数と被乗数だけではなく、法N
の値にも依存している。法Nの値と消費電流波形の関連
性を隠すことが、重要な情報を外部に漏らさないために
必要となる。RSAなどの暗号処理では、以下のような
計算が頻繁に出てくる。
【0087】 y = a * b mod n (式28) これを一般化すると、以下の剰余計算となる。
【0088】 y = a mod n (式29) これは、aをnで割った余りがyであることを示してお
り、以下の等式と等価である。
【0089】 a = n * x + y (式30) この両辺に任意の数rを掛けると、以下のようになる。
【0090】 a * r = n * x * r + y * r (式31) これを剰余計算の式であらわすと y * r = (a * r) mod (r * n) (式32) となる。すなわち、法Nをr倍し、右辺のaをr倍する
と、左辺もr倍となることを示している。法Nのデータ
と消費電流の関連性を消すためには、法Nを変形するこ
とが一つの方法である。式32から、法Nにrを掛け
て、かつ右辺のaをr倍して、剰余演算をし、その結果
をrで割れば、もとのyを求めることができることを示
している。このようにすることにより、法Nの値と消費
電流の関連性を隠すことができる。これは、特に「中国
人の剰余定理」(共立出版株式会社岡本栄司著「暗号理
論入門」の96ページ)を使ってRSAの計算を行うと
きに、法Nの素因数pとqを使った剰余計算においてp
とqの情報を隠蔽するために有効である。
【0091】図31でその処理手順を示す。まず、法N
を変形するために法Nに掛ける値rを求める(310
2)。次に、法Nを変形するためにNをr倍する(31
03)。そして、右辺の値もr倍し(3104)、剰余
演算を行う(3105)。そして、結果を元に戻すため
に、演算結果をrで割る(3106)。
【0092】図31の3103は、請求項23の剰余演
算の法を変更する剰余演算法変更処理手段であり、31
04は、剰余演算の右辺の値を変更する剰余演算右辺変
更処理手段であり、3106は、剰余演算法変更処理手
段で変更した剰余演算の法を変更前の計算結果に戻す剰
余演算法変更処理逆変換処理手段の実施例である。図3
1では、請求項32に示すように剰余演算の法と剰余演
算の右辺を変更する手段として、任意の数rを掛けてい
る。そして、剰余演算法変更処理逆変換処理手段では、
rで割ることを使用している。
【0093】法Nなどを変形するrとして、2のべき乗
を用いると、法Nと右辺の値のr倍の処理は、べき乗分
Nを左にシフトすればよい。そして、剰余演算の結果を
rで割る処理はその値を右にシフトするだけでよく、掛
け算や割り算が出てこないため、高速に演算ができる。
また、2の8乗のべき乗をrとして用いると、掛け算や
割り算は、シフト命令ではなく、データ移動命令とな
り、より高速に実現できる。本実施例は、請求項25の
実施例である。
【0094】
【発明の効果】本発明によれば、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】剰余演算の法を変形する処理手順。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 奥原 進 神奈川県横浜市戸塚区戸塚町5030番地 株 式会社日立製作所ソフトウェア事業部内 (72)発明者 神永 正博 東京都国分寺市東恋ケ窪一丁目280番地 株式会社日立製作所中央研究所内 Fターム(参考) 5B035 AA13 BB09 CA29 CA38 5J104 AA41 AA47 EA04 EA08 JA13 JA28 NA08 NA09 NA35 NA40 NA42

Claims (34)

    【特許請求の範囲】
  1. 【請求項1】プログラムを格納するプログラム格納部
    と、データを保存するデータ格納部を持つ記憶装置と、
    プログラムに従い所定の処理を実行しデータ処理を行う
    中央演算装置を持ち、プログラムは、中央演算装置に実
    行の指示を与える処理命令から構成される一つ以上のデ
    ータ処理手段からなる、情報処理装置において、正常処
    理のデータとそのビットの値を反転したデータとからな
    る正常データ及びビット反転データの組みをデータとし
    て有することを特徴とする情報処理装置。
  2. 【請求項2】プログラムを格納するプログラム格納部
    と、データを保存するデータ格納部を持つ記憶装置と、
    プログラムに従い、所定の処理を実行し、データ処理を
    行う中央演算装置を持ち、プログラムは、中央演算装置
    に実行の指示を与える処理命令から構成される一つ以上
    のデータ処理手段からなる、情報処理装置において、同
    一の命令で、正常処理のデータとそのビットの値を反転
    したデータとを処理する正常データ及びビット反転デー
    タ処理手段をデータ処理手段として有することを特徴と
    する情報処理装置。
  3. 【請求項3】プログラムを格納するプログラム格納部
    と、データを保存するデータ格納部を持つ記憶装置と、
    プログラムに従い、所定の処理を実行し、データ処理を
    行う中央演算装置を持ち、プログラムは、中央演算装置
    に実行の指示を与える処理命令から構成される一つ以上
    のデータ処理手段からなる、情報処理装置において、正
    常処理命令と同じ命令コマンドを有し、かつ正常処理命
    令において処理されるデータのビットの値を反転したデ
    ータを処理する命令を有する正常データ命令及びビット
    反転データ命令処理手段をデータ処理手段として有する
    ことを特徴とする情報処理装置。
  4. 【請求項4】プログラムを格納するプログラム格納部
    と、データを保存するデータ格納部を持つ記憶装置と、
    プログラムに従い、所定の処理を実行し、データ処理を
    行う中央演算装置を持ち、プログラムは、中央演算装置
    に実行の指示を与える処理命令から構成される一つ以上
    のデータ処理手段からなる、情報処理装置において、正
    常処理の結果のビットの値を反転したデータを結果とし
    て生成するビット反転データ生成手段をデータ処理手段
    として有することを特徴とする情報処理装置。
  5. 【請求項5】プログラムを格納するプログラム格納部
    と、データを保存するデータ格納部を持つ記憶装置とプ
    ログラムに従い、所定の処理を実行し、データ処理を行
    う中央演算装置を持ち、プログラムは、中央演算装置に
    実行の指示を与える処理命令から構成される一つ以上の
    データ処理手段として、異なる処理データを複数繰り返
    して処理する繰り返しデータ処理手段を含む、情報処理
    装置において、繰り返しデータ処理手段をランダムに実
    行する繰り返しランダム実行処理手段をデータ処理手段
    として有することを特徴とする情報処理装置。
  6. 【請求項6】プログラムを格納するプログラム格納部
    と、データを保存するデータ格納部を持つ記憶装置と、
    プログラムに従い、所定の処理を実行し、データ処理を
    行う中央演算装置を持ち、プログラムは、中央演算装置
    に実行の指示を与える処理命令から構成される一つ以上
    のデータ処理手段からなる、情報処理装置において、プ
    ログラム内にプログラムの該当処理に影響を与えないダ
    ミー実行処理手段をデータ処理手段として有することを
    特徴とする情報処理装置。
  7. 【請求項7】請求項5または6に記載の情報処理装置に
    おいて、ダミー実行処理手段と繰り返しデータ処理手段
    とをランダムに実行するダミー実行及び繰り返しランダ
    ム実行処理手段をデータ処理手段として有することを特
    徴とする情報処理装置。
  8. 【請求項8】請求項1から7に記載の情報処理装置にお
    いて、ビット単位のデータを入れ替える転置処理手段を
    データ処理手段として有することを特徴とする情報処理
    装置。
  9. 【請求項9】請求項1から7に記載の情報処理装置にお
    いて、バイト単位のデータを入れ替える換字処理手段を
    データ処理手段として有することを特徴とする情報処理
    装置。
  10. 【請求項10】請求項1から7に記載の情報処理装置に
    おいて、入力データと暗号鍵データの排他的論理和を行
    う排他的論理和処理手段と入力データのビットを反転し
    たデータと暗号鍵の排他的論理和を行うビット反転デー
    タ排他的論理和処理手段をデータ処理手段として有する
    ことを特徴とする情報処理装置。
  11. 【請求項11】請求項1から7に記載の情報処理装置に
    おいて、入力データに対して非線形の換字を行い、換字
    した結果及び換字した結果のビットの値を反転したビッ
    ト反転データを生成する非線形換字処理手段と、入力デ
    ータのビットを反転したデータに対して非線形の換字を
    行い、換字した結果及び換字した結果のビットの値を反
    転したビット反転データを生成する非線形換字処理手段
    とをデータ処理手段として有することを特徴とする情報
    処理装置。
  12. 【請求項12】請求項1から7に記載の情報処理装置に
    おいて、入力データに対して非線形の転置を行い、転置
    した結果および転置した結果のビットの値を反転したビ
    ット反転データを生成する非線形転置処理手段と、入力
    データのビットを反転したデータに対して非線形の転置
    を行い、転置した結果および転置した結果のビットの値
    を反転したビット反転データを生成する非線形転置処理
    手段をデータ処理手段として有することを特徴とする情
    報処理装置。
  13. 【請求項13】請求項1から7に記載の情報処理装置に
    おいて、入力データと暗号鍵データの排他的論理和を行
    う排他的論理和処理手段と、入力データを反転したデー
    タと暗号鍵の排他的論理和を行うビット反転データ排他
    的論理和処理手段、入力データに対して非線形の換字を
    行い、換字した結果及び換字した結果のビットの値を反
    転したビット反転データを生成する非線形換字処理手
    段、入力データのビットを反転したデータに対して非線
    形の換字を行い、換字した結果及び換字した結果のビッ
    トの値を反転したビット反転データを生成する非線形換
    字処理手段、入力データに対して非線形の転置を行い、
    転置した結果および転置した結果のビットの値を反転し
    たビット反転データを生成する非線形転置処理手段、入
    力データのビットを反転したデータに対して非線形の転
    置を行い、転置した結果および転置した結果のビットの
    値を反転したビット反転データを生成する非線形転置処
    理手段、をデータ処理手段として有することを特徴とす
    る情報処理装置。
  14. 【請求項14】プログラムを格納するプログラム格納
    部、データを保存するデータ格納部を持つ記憶装置とプ
    ログラムに従い、所定の処理を実行し、データ処理を行
    う中央演算装置を持ち、プログラムは、中央演算装置に
    実行の指示を与える処理命令から構成される一つ以上の
    データ処理手段からなり、データ処理手段として、入力
    データと暗号鍵を使って、べき乗乗算を繰り返してべき
    乗剰余計算を行う手段を有するデータ処理手段を有する
    情報処理装置において、暗号鍵のビットの値に関わら
    ず、入力データとこれまで計算した結果を乗算剰余する
    乗算剰余処理手段と、暗号鍵のビットが1ならば、乗算
    剰余処理手段の結果を使い、0であれば、乗算剰余処理
    手段の結果を無視する乗算剰余処理結果選択処理手段を
    データ処理手段として有することを特徴とする情報処理
    装置。
  15. 【請求項15】プログラムを格納するプログラム格納
    部、データを保存するデータ格納部を持つ記憶装置とプ
    ログラムに従い、所定の処理を実行し、データ処理を行
    う中央演算装置を持ち、プログラムは、中央演算装置に
    実行の指示を与える処理命令から構成される一つ以上の
    データ処理手段からなり、データ処理手段として、複数
    ビットの値に対応して入力データのべき乗剰余計算した
    結果であるビット値対応入力データべき乗剰余値を求め
    るビット値対応入力データべき乗剰余計算処理手段と、
    暗号鍵の複数ビットの値毎に、ビット値対応入力データ
    べき乗剰余計算処理手段で計算したビット値対応入力デ
    ータべき乗剰余値とこれまで乗算剰余した結果を乗算剰
    余するビット対応乗算剰余計算処理手段、をもつ入力デ
    ータと暗号鍵を使ってべき乗剰余計算を行うデータ処理
    手段を有する情報処理装置において、ビット対応乗算剰
    余計算処理手段を繰り返し処理しているあるタイミング
    において、ビット値対応入力データべき乗剰余値を変更
    するビット値対応入力データべき乗剰余値変更処理手段
    をデータ処理手段として有することを特徴とする情報処
    理装置。
  16. 【請求項16】請求項15に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値変更処理手段
    でビット値対応入力データべき乗剰余値に変更を加えた
    処理結果を変更しない値に戻すビット値対応入力データ
    べき乗剰余値変更処理逆変換処理手段をデータ処理手段
    として有することを特徴とする情報処理装置。
  17. 【請求項17】請求項15に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値に剰余演算の
    法の整数倍を加えるビット値対応入力データべき乗剰余
    値変更処理手段をビット値対応入力データべき乗剰余値
    変更処理手段として有することを特徴とする情報処理装
    置。
  18. 【請求項18】請求項17に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値に、剰余演算
    の法において掛けると1になる二つの値vとuの中の一方
    であるv、あるいはvのべき乗を該当剰余演算の法におい
    て掛けることを行うビット値対応入力データべき乗剰余
    値変更処理手段とビット値対応入力データべき乗剰余値
    変更処理手段において、vを剰余演算の法として掛けた
    回数だけ、べき乗剰余の処理結果にuを剰余演算の法と
    して掛ける処理を行うビット値対応入力データべき乗剰
    余値変更処理逆変換処理手段をビット値対応入力データ
    べき乗剰余値変更部とビット値対応入力データべき乗剰
    余値変更処理逆変換処理手段として有することを特徴と
    する情報処理装置。
  19. 【請求項19】請求項18に記載の情報処理装置におい
    て、上記ビット値対応入力データべき乗剰余値変更処理
    手段は、剰余演算の法Nにおいて掛けると1になる二つ
    の値として、2とN+1/2を使うことを特徴とする情報処
    理装置。
  20. 【請求項20】請求項18に記載の情報処理装置におい
    て、暗号鍵をMビットの組として表し、そのビットが0
    あるいは1であるすべての組み合わせに対して、その値
    を、入力データにべき乗乗算してビット値対応入力デー
    タべき乗剰余値を求めるビット値対応入力データべき乗
    剰余計算処理手段と、あるタイミングで、ビット値対応
    入力データべき乗剰余値に、剰余演算の法において掛け
    ると1になる二つの値vとuの中の一方であるv、あるい
    はvのべき乗を該当剰余演算の法Nにおいて掛けること
    を行うビット値対応入力データべき乗剰余値変更処理手
    段、暗号鍵の複数ビットMの値毎に、ビット値対応入力
    データべき乗剰余値変更処理手段で計算したビット値対
    応入力データべき乗剰余値とこれまで乗算剰余した結果
    を乗算剰余するビット対応乗算剰余計算処理手段、vを
    剰余演算の法として掛けた回数だけ、べき乗剰余の処理
    結果にuを剰余演算の法として掛ける処理を行うビット
    値対応入力データべき乗剰余値変更処理逆変換処理手段
    を有することを特徴とする情報処理装置。
  21. 【請求項21】請求項20に記載の情報処理装置におい
    て、あるタイミングで、ビット値対応入力データべき乗
    剰余値に、vとして2のランダムなべき乗を該当剰余演
    算の法Nにおいて掛けることを行うビット値対応入力デ
    ータべき乗剰余値変更処理手段、2を剰余演算の法とし
    て掛けた回数だけ、べき乗剰余の処理結果に(n+1)/2を
    剰余演算の法として掛ける処理を行うビット値対応入力
    データべき乗剰余値変更処理逆変換処理手段を有するこ
    とを特徴とする情報処理装置。
  22. 【請求項22】請求項17に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値に、2の任意
    数のべき乗、あるいは2の8乗の任意数のべき乗を剰余
    演算の法に掛けた数を加えるビット値対応入力データべ
    き乗剰余値変更処理手段をビット値対応入力データべき
    乗剰余値変更処理手段として有することを特徴とする情
    報処理装置。
  23. 【請求項23】プログラムを格納するプログラム格納
    部、データを保存するデータ格納部を持つ記憶装置とプ
    ログラムに従い、所定の処理を実行し、データ処理を行
    う中央演算装置を持ち、プログラムは、中央演算装置に
    実行の指示を与える処理命令から構成される一つ以上の
    データ処理手段からなり、データ処理手段として、剰余
    演算を行うデータ処理手段を有する情報処理装置におい
    て、剰余演算の法を変更する剰余演算法変更処理手段
    と、剰余演算の右辺の値を変更する剰余演算右辺変更処
    理手段、剰余演算法変更処理手段で変更した剰余演算の
    法を変更前の計算結果に戻す剰余演算法変更処理逆変換
    処理手段、をデータ処理手段として有することを特徴と
    する情報処理装置。
  24. 【請求項24】請求項23の剰余演算法変更処理手段と
    剰余演算右辺変更処理手段、剰余演算法変更処理逆変換
    処理手段において、法の変更手段として、整数倍を掛け
    る剰余演算法変更処理手段と、剰余演算の結果を剰余演
    算法変更処理手段で使用した整数を剰余演算の右辺の値
    に掛ける剰余演算右辺変更処理手段、計算結果に戻す手
    段として、剰余演算の結果を剰余演算法変更処理手段で
    使用した整数でわる剰余演算法変更処理逆変換処理手段
    をデータ処理手段として有することを特徴とする情報処
    理装置。
  25. 【請求項25】請求項24の剰余演算法変更処理手段と
    剰余演算右辺変更処理手段、剰余演算法変更処理逆変換
    処理手段において、整数倍として2の任意数のべき乗、
    あるいは、2の8乗の任意数のべき乗を使用する剰余演
    算法変更処理手段と、剰余演算の右辺の値を、剰余演算
    法変更処理手段で使用した整数倍として2の任意数のべ
    き乗、あるいは、2の8乗の任意数のべき乗で掛ける剰
    余演算右辺変更処理手段、計算結果に戻す手段として、
    剰余演算の結果を剰余演算法変更処理手段で使用した整
    数倍として2の任意数のべき乗、あるいは、2の8乗の
    任意数のべき乗でわる剰余演算法変更処理逆変換処理手
    段、をデータ処理手段として有することを特徴とする情
    報処理装置。
  26. 【請求項26】プログラムを格納するプログラム格納
    部、データを保存するデータ格納部を持つ記憶装置とプ
    ログラムに従い、所定の処理を実行し、データ処理を行
    う中央演算装置を持ち、プログラムは、中央演算装置に
    実行の指示を与える処理命令から構成される一つ以上の
    データ処理手段からなり、データ処理手段として、剰余
    演算を行うデータ処理手段を有する情報処理装置におい
    て、ビット値対応入力データべき乗剰余値を変更するビ
    ット値対応入力データべき乗剰余値変更処理手段をデー
    タ処理手段として有することを特徴とする情報処理装
    置。
  27. 【請求項27】請求項26に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値変更処理手段
    でビット値対応入力データべき乗剰余値に変更を加えた
    処理結果を変更しない値に戻すビット値対応入力データ
    べき乗剰余値変更処理逆変換処理手段をデータ処理手段
    として有することを特徴とする情報処理装置。
  28. 【請求項28】請求項26に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値に剰余演算の
    法の整数倍を加えるビット値対応入力データべき乗剰余
    値変更処理手段をビット値対応入力データべき乗剰余値
    変更処理手段として有することを特徴とする情報処理装
    置。
  29. 【請求項29】請求項28に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値に、剰余演算
    の法において掛けると1になる二つの値vとuの中の一方
    であるv、あるいはvのべき乗を該当剰余演算の法におい
    て掛けることを行うビット値対応入力データべき乗剰余
    値変更処理手段とビット値対応入力データべき乗剰余値
    変更処理手段vを剰余演算の法として掛けた回数だけ、
    べき乗剰余の処理結果にuを剰余演算の法として掛ける
    処理を行うビット値対応入力データべき乗剰余値変更処
    理逆変換処理手段をビット値対応入力データべき乗剰余
    値変更部とビット値対応入力データべき乗剰余値変更処
    理逆変換処理手段として有することを特徴とする情報処
    理装置。
  30. 【請求項30】請求項29に記載の情報処理装置におい
    て、上記ビット値対応入力データべき乗剰余値変更処理
    手段において剰余演算の法Nにおいて掛けると1になる
    二つの値として、2とN+1/2を使うことを特徴とする情
    報処理装置。
  31. 【請求項31】請求項29に記載の情報処理装置におい
    て、暗号鍵をMビットの組として表し、そのビットが0
    あるいは1であるすべての組み合わせに対して、その値
    を、入力データにべき乗乗算してビット値対応入力デー
    タべき乗剰余値を求めるビット値対応入力データべき乗
    剰余計算処理手段と、あるタイミングで、ビット値対応
    入力データべき乗剰余値に、剰余演算の法において掛け
    ると1になる二つの値vとuの中の一方であるv、あるい
    はvのべき乗を該当剰余演算の法Nにおいて掛けること
    を行うビット値対応入力データべき乗剰余値変更処理手
    段、暗号鍵の複数ビットMの値毎に、ビット値対応入力
    データべき乗剰余値変更処理手段で計算したビット値対
    応入力データべき乗剰余値とこれまで乗算剰余した結果
    を乗算剰余するビット対応乗算剰余計算処理手段vを剰
    余演算の法として掛けた回数だけ、べき乗剰余の処理結
    果にuを剰余演算の法として掛ける処理を行うビット値
    対応入力データべき乗剰余値変更処理逆変換処理手段を
    有することを特徴とする情報処理装置。
  32. 【請求項32】請求項31に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値に、vとして
    2のランダムなべき乗を該当剰余演算の法Nにおいて掛
    けることを行うビット値対応入力データべき乗剰余値変
    更処理手段、2を剰余演算の法として掛けた回数だけ、
    べき乗剰余の処理結果に(n+1)/2を剰余演算の法として
    掛ける処理を行うビット値対応入力データべき乗剰余値
    変更処理逆変換処理手段を有することを特徴とする情報
    処理装置。
  33. 【請求項33】請求項26に記載の情報処理装置におい
    て、ビット値対応入力データべき乗剰余値に、2の任意
    数のべき乗、あるいは2の8乗の任意数のべき乗を剰余
    演算の法に掛けた数を加えるビット値対応入力データべ
    き乗剰余値変更処理手段をビット値対応入力データべき
    乗剰余値変更処理手段として有することを特徴とする情
    報処理装置。
  34. 【請求項34】上記情報処理装置は、ICカードである
    ことを特徴とする請求項1から33に記載の情報処理装
    置。
JP10338779A 1998-11-30 1998-11-30 情報処理装置、icカード Pending JP2000165375A (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP10338779A JP2000165375A (ja) 1998-11-30 1998-11-30 情報処理装置、icカード
EP99123518A EP1006492A1 (en) 1998-11-30 1999-11-25 Information processing equipment and IC card
US09/449,537 US6839847B1 (en) 1998-11-30 1999-11-29 Information processing equipment and IC card
CNB991258312A CN1182460C (zh) 1998-11-30 1999-11-30 信息处理装置与ic卡
KR1019990053692A KR100693239B1 (ko) 1998-11-30 1999-11-30 정보 처리 장치, ic 카드
TW088120917A TW466393B (en) 1998-11-30 1999-12-01 Information processing apparatus and IC card
US09/525,014 US6408075B1 (en) 1998-11-30 2000-03-14 Information processing equipment and IC card

Applications Claiming Priority (1)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2004192539A Division JP3945497B2 (ja) 2004-06-30 2004-06-30 情報処理装置、icカード

Publications (2)

Publication Number Publication Date
JP2000165375A true JP2000165375A (ja) 2000-06-16
JP2000165375A5 JP2000165375A5 (ja) 2005-05-12

Family

ID=18321392

Family Applications (1)

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

Country Status (6)

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

Cited By (23)

* 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 暗号化装置,復号装置,および暗号化・復号装置
JP2002247025A (ja) * 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
JP2002311826A (ja) * 2001-04-16 2002-10-25 Hitachi Ltd 暗号化・復号化装置、暗号化・復号化方法、データの暗号化方法及びicカード
JP2005260652A (ja) * 2004-03-12 2005-09-22 Sony Corp 信号処理回路および方法
JP2006025366A (ja) * 2004-07-09 2006-01-26 Sony Corp 暗号化装置及び半導体集積回路
JP2006054568A (ja) * 2004-08-10 2006-02-23 Sony Corp 暗号化装置、復号化装置、および方法、並びにコンピュータ・プログラム
US7024560B2 (en) 2001-01-30 2006-04-04 Renesas Technology Corp. Power-residue calculating unit using Montgomery algorithm
JP2006174274A (ja) * 2004-12-17 2006-06-29 Toshiba Corp 暗号演算回路と、該暗号演算回路を有する情報処理装置及びicカード
JP2006229485A (ja) * 2005-02-16 2006-08-31 Sony Corp 信号処理回路および信号処理方法
JP2006520565A (ja) * 2003-03-14 2006-09-07 アクサルト・エス・アー 暗号プロセッサを備える電子ユニットのセキュリティのプロセス
KR100623063B1 (ko) * 2005-05-04 2006-09-13 인하대학교 산학협력단 강제 충돌 기능을 갖는 알에프아이디 태그 및알에프아이디 시스템과 알에프아이디 태그 정보 보호방법
JP2006260589A (ja) * 2006-04-19 2006-09-28 Sony Corp データ通信システム、情報処理装置および方法、並びにプログラム
KR100706787B1 (ko) 2004-11-29 2007-04-11 삼성전자주식회사 향상된 보안 기능을 갖는 스마트 카드
WO2007046402A1 (ja) 2005-10-19 2007-04-26 Matsushita Electric Industrial Co., Ltd. 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路
KR100743804B1 (ko) * 2000-01-08 2007-07-30 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 처리 장치 및 그 동작 방법
JP2008502283A (ja) * 2004-06-08 2008-01-24 エイチアールエル ラボラトリーズ,エルエルシー 差分電力解析を妨害する命令マスクや他の手法を備えた暗号アーキテクチャ
JP2010008883A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 暗号用演算装置、暗号用演算方法及びプログラム
JP2010514032A (ja) * 2006-12-18 2010-04-30 ジェムアルト エスアー 実行済みコードにおいて対抗策の実行数を変更可能にする方法
JP2012506658A (ja) * 2008-10-24 2012-03-15 ジエマルト・エス・アー 暗号アルゴリズムの弱点保護
US8265267B2 (en) 2007-05-30 2012-09-11 Panasonic Corporation Information security device
JP2016045688A (ja) * 2014-08-22 2016-04-04 大日本印刷株式会社 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム
JP2019519866A (ja) * 2016-07-04 2019-07-11 ジエマルト・エス・アー 保護されていないハードウェアレジスタへの秘密データの安全なローディング
JP6973677B1 (ja) * 2021-03-22 2021-12-01 富士電機株式会社 逆数算出方法、装置、およびプログラム

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
ATE366443T1 (de) * 2000-05-22 2007-07-15 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
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
JP4188571B2 (ja) * 2001-03-30 2008-11-26 株式会社日立製作所 情報処理装置の演算方法および耐タンパ演算攪乱実装方式
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 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7743977B2 (en) * 2005-02-28 2010-06-29 Broadcom Corporation Method and system for random data access for security applications
US7372290B2 (en) * 2005-10-04 2008-05-13 Stmicroelectronics, Inc. System and method for using dummy cycles to mask operations in a secure microcontroller
CN101366231A (zh) * 2006-11-09 2009-02-11 松下电器产业株式会社 密码运算处理电路
DE102008023912A1 (de) * 2008-05-16 2009-11-19 Siemens Aktiengesellschaft Verfahren und Speichervorrichtung zum Bereitstellen eines kryptografischen Schlüssels
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
FR3038473B1 (fr) * 2015-06-30 2017-08-11 Oberthur Technologies Procede de traitement cryptographique de donnees et programme d'ordinateur associe
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 上海寒武纪信息科技有限公司 指令列表调度方法、装置、计算机设备及存储介质

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 (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970561B1 (en) 1999-04-21 2005-11-29 Nec Corporation Encryption and decryption with endurance to cryptanalysis
JP2000305453A (ja) * 1999-04-21 2000-11-02 Nec Corp 暗号化装置,復号装置,および暗号化・復号装置
KR100743804B1 (ko) * 2000-01-08 2007-07-30 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 처리 장치 및 그 동작 방법
US7024560B2 (en) 2001-01-30 2006-04-04 Renesas Technology Corp. Power-residue calculating unit using Montgomery algorithm
JP2002247025A (ja) * 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
WO2002086846A1 (fr) * 2001-04-16 2002-10-31 Renesas Technology Corp. Chiffrement / dispositif de dechiffrement, chiffrement / procede de dechiffrement, procede de chiffrement de donnees et carte a circuit integre
JP2002311826A (ja) * 2001-04-16 2002-10-25 Hitachi Ltd 暗号化・復号化装置、暗号化・復号化方法、データの暗号化方法及びicカード
JP2006520565A (ja) * 2003-03-14 2006-09-07 アクサルト・エス・アー 暗号プロセッサを備える電子ユニットのセキュリティのプロセス
JP2005260652A (ja) * 2004-03-12 2005-09-22 Sony Corp 信号処理回路および方法
JP4565314B2 (ja) * 2004-03-12 2010-10-20 ソニー株式会社 信号処理回路および方法
JP2012095345A (ja) * 2004-06-08 2012-05-17 Hrl Lab Llc 差分電力解析を妨害する命令マスクや他の手法を備えた暗号アーキテクチャ
JP2013141323A (ja) * 2004-06-08 2013-07-18 Hrl Lab Llc 差分電力解析を妨害する命令マスクや他の手法を備えた暗号アーキテクチャ
JP2011239461A (ja) * 2004-06-08 2011-11-24 Hrl Laboratories Llc 差分電力解析を妨害する命令マスクや他の手法を備えた暗号アーキテクチャ
JP2013167897A (ja) * 2004-06-08 2013-08-29 Hrl Lab Llc 差分電力解析を妨害する命令マスクや他の手法を備えた暗号アーキテクチャ
JP2008502283A (ja) * 2004-06-08 2008-01-24 エイチアールエル ラボラトリーズ,エルエルシー 差分電力解析を妨害する命令マスクや他の手法を備えた暗号アーキテクチャ
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カード
JP2006174274A (ja) * 2004-12-17 2006-06-29 Toshiba Corp 暗号演算回路と、該暗号演算回路を有する情報処理装置及びicカード
JP4529719B2 (ja) * 2005-02-16 2010-08-25 ソニー株式会社 信号処理回路
JP2006229485A (ja) * 2005-02-16 2006-08-31 Sony Corp 信号処理回路および信号処理方法
KR100623063B1 (ko) * 2005-05-04 2006-09-13 인하대학교 산학협력단 강제 충돌 기능을 갖는 알에프아이디 태그 및알에프아이디 시스템과 알에프아이디 태그 정보 보호방법
WO2007046402A1 (ja) 2005-10-19 2007-04-26 Matsushita Electric Industrial Co., Ltd. 情報セキュリティ装置、情報セキュリティ方法、コンピュータプログラム、コンピュータ読み取り可能な記録媒体及び集積回路
US8090957B2 (en) 2005-10-19 2012-01-03 Panasonic Corporation Information security device, information security method, computer program, computer-readable recording medium, and integrated circuit
JP2006260589A (ja) * 2006-04-19 2006-09-28 Sony Corp データ通信システム、情報処理装置および方法、並びにプログラム
JP2010514032A (ja) * 2006-12-18 2010-04-30 ジェムアルト エスアー 実行済みコードにおいて対抗策の実行数を変更可能にする方法
US8265267B2 (en) 2007-05-30 2012-09-11 Panasonic Corporation Information security device
JP2010008883A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 暗号用演算装置、暗号用演算方法及びプログラム
JP2012506658A (ja) * 2008-10-24 2012-03-15 ジエマルト・エス・アー 暗号アルゴリズムの弱点保護
JP2014197222A (ja) * 2008-10-24 2014-10-16 ジエマルト・エス・アー 暗号アルゴリズムの弱点保護
JP2017034713A (ja) * 2008-10-24 2017-02-09 ジエマルト・エス・アー 暗号アルゴリズムの弱点保護
JP2016045688A (ja) * 2014-08-22 2016-04-04 大日本印刷株式会社 電子情報記録媒体、プロセッサモジュールの処理方法、及びプロセッサモジュールの処理プログラム
JP2019519866A (ja) * 2016-07-04 2019-07-11 ジエマルト・エス・アー 保護されていないハードウェアレジスタへの秘密データの安全なローディング
JP6973677B1 (ja) * 2021-03-22 2021-12-01 富士電機株式会社 逆数算出方法、装置、およびプログラム
JP2022146258A (ja) * 2021-03-22 2022-10-05 富士電機株式会社 逆数算出方法、装置、およびプログラム

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2000165375A (ja) 情報処理装置、icカード
US6408075B1 (en) Information processing equipment and IC card
JP4317607B2 (ja) 情報処理装置、耐タンパ処理装置
US6986054B2 (en) Attack-resistant implementation method
JP3600454B2 (ja) 暗号化・復号装置、暗号化・復号方法、およびそのプログラム記憶媒体
Trichina et al. Simplified adaptive multiplicative masking for AES
Rivest et al. The RC6TM block cipher
US6269163B1 (en) Enhanced block ciphers with data-dependent rotations
CN101006677B (zh) 用于实施加密运算的方法和装置
US8473751B2 (en) Method for cryptographic data processing, particularly using an S box, and related device and software
AU782868B2 (en) Information processing device, information processing method and smartcard
JP4199937B2 (ja) 耐タンパー暗号処理方法
KR100737171B1 (ko) 아리아에 대한 전력분석공격에 대응하는 저메모리형 마스킹방법
JP5136416B2 (ja) 擬似乱数生成装置、ストリーム暗号処理装置及びプログラム
KR101506499B1 (ko) 마스킹이 적용된 seed를 이용한 암호화 방법
JP3945497B2 (ja) 情報処理装置、icカード
EP1419436B1 (en) Apparatus and method for performing a cryptographic algorithm
JP2018514816A (ja) 変形鍵を用いる高速aes
Saputra et al. Masking the energy behaviour of encryption algorithms
JP4003723B2 (ja) 情報処理装置、耐タンパ処理装置
AU2005203004B2 (en) Information processing device, information processing method and smartcard
Sharma Performance Analysis of Stream Cipher RC4 Variants: VMPC & SPRITZ
JP2004078976A (ja) 情報処理装置、耐タンパ処理装置
Ptácek Power analysis of AES
Juthamas et al. AES implementation on Smart Card

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040630

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20040630

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040630

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060926

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070206