JP2005141160A - セキュア・プロセッサ - Google Patents
セキュア・プロセッサ Download PDFInfo
- Publication number
- JP2005141160A JP2005141160A JP2003380114A JP2003380114A JP2005141160A JP 2005141160 A JP2005141160 A JP 2005141160A JP 2003380114 A JP2003380114 A JP 2003380114A JP 2003380114 A JP2003380114 A JP 2003380114A JP 2005141160 A JP2005141160 A JP 2005141160A
- Authority
- JP
- Japan
- Prior art keywords
- key
- register
- instruction
- bit
- signature
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
【課題】汎用機能を持ち、なおかつ、セキュリティ機能(すなわち鍵データの安全保管とディジタル署名計算の高速化)も持つプロセッサの提供。
【解決手段】一般用と署名演算用の命令を有するセキュア・プロセッサ100内に、不揮発性の鍵レジスタ130に、鍵データが格納されている。鍵ビット参照カウンタ152は1023から0まで、順次デクリメントする。この鍵ビット参照カウンタ152の内容により、ビット指定ゲート154から、鍵レジスタ130に格納されているKデータが順次1ビットづつ指定され、逐次署名演算に使用される。鍵Kを格納する鍵レジスタ130から他へデータを転送する語データ並列伝送経路を設けていない。
このようなハードウェア構造からして、鍵データを生の形で直接外部へ出すことは不可能である。
【選択図】図1
【解決手段】一般用と署名演算用の命令を有するセキュア・プロセッサ100内に、不揮発性の鍵レジスタ130に、鍵データが格納されている。鍵ビット参照カウンタ152は1023から0まで、順次デクリメントする。この鍵ビット参照カウンタ152の内容により、ビット指定ゲート154から、鍵レジスタ130に格納されているKデータが順次1ビットづつ指定され、逐次署名演算に使用される。鍵Kを格納する鍵レジスタ130から他へデータを転送する語データ並列伝送経路を設けていない。
このようなハードウェア構造からして、鍵データを生の形で直接外部へ出すことは不可能である。
【選択図】図1
Description
本発明は、汎用マイクロプロセッサのアーキテクチャ(論理構成)に関し、特に、デジタル署名等のセキュリティ技術にも用いられるマイクロプロセッサのアーキテクチャに関する。
コンピュータ誕生以来約60年の間、プロセッサの機能・性能の向上は100万倍のオーダーにも達する。改善の主たる担い手は素子・回路の機能・性能の改善による。その次の副たる担い手は、アーキテクチャの改善である。そのアーキテクチャ面での改善も殆どが性能向上に向けられてきた。最近20年間程度ではごく一部で、信頼性向上や電力低減のためのアーキテクチャ改善もあった。しかしながら、セキュリティ改善のために行われたアーキテクチャ改善の例はない。
ただし、セキュリティ改善の目的のために公開鍵暗号計算(例えばRSA暗号計算)専用のプロセッサが使用されている例はある。それはIBM,富士通,松下通信,NTTデータ等のセキュリティ専用プロセッサである。これは署名演算や暗号計算だけを引き受ける専用の付加プロセッサである。別に汎用の主プロセッサが存在することが前提である。これらは、もともと専用プロセッサ全体が署名演算・暗号計算だけしか受け付けない機能限定プロセッサであるから、鍵データを他目的に使われる危険も容易に避けられる。
なお、RSAによる暗号計算のアルゴリズムについては、例えば、非特許文献1に示した文献を参考にされたい。
Cetin Kaya Koc "High-Speed RSA Implementation Vresion 2.0" RSA Data Security, Inc. 1994(ftp://ftp.rsasecurity.com/pub/pdfs/tr201.pdf)
ただし、セキュリティ改善の目的のために公開鍵暗号計算(例えばRSA暗号計算)専用のプロセッサが使用されている例はある。それはIBM,富士通,松下通信,NTTデータ等のセキュリティ専用プロセッサである。これは署名演算や暗号計算だけを引き受ける専用の付加プロセッサである。別に汎用の主プロセッサが存在することが前提である。これらは、もともと専用プロセッサ全体が署名演算・暗号計算だけしか受け付けない機能限定プロセッサであるから、鍵データを他目的に使われる危険も容易に避けられる。
なお、RSAによる暗号計算のアルゴリズムについては、例えば、非特許文献1に示した文献を参考にされたい。
Cetin Kaya Koc "High-Speed RSA Implementation Vresion 2.0" RSA Data Security, Inc. 1994(ftp://ftp.rsasecurity.com/pub/pdfs/tr201.pdf)
本発明の目的は、汎用機能を持ち、なおかつ、セキュリティ機能(すなわち鍵データの安全保管とディジタル署名計算の高速化)も持つプロセッサの提供である。
上述の目的を達成するために、本発明は、鍵データを格納した不揮発性メモリで構成される鍵レジスタと、該鍵レジスタに格納された鍵データを1ビットづつ参照するために、ビット位置を示す鍵カウンタと、デジタル署名に用いるダイジェスト・データを格納するダイジェスト・レジスタと、前記鍵カウンタにより参照された1ビットの鍵データが0のときは前記ダイジェスト・レジスタの内容を1、1のときは前記ダイジェスト・レジスタの内容をそのまま出力するゲートとを備え、一般命令とともに、前記鍵レジスタ、前記鍵カウンタ、及び前記ダイジェスト・レジスタを操作して前記ダイジェスト・データからデジタル署名を求めるための複数の署名専用命令を有することを特徴とするセキュア・プロセッサである。
これにより、汎用機能を持ち、不揮発性メモリの鍵レジスタに格納した鍵データを直接的には読めないため、セキュリティ機能も持つプロセッサを提供することができる。
このプロセッサの走行モードとして、一般モードとセキュリティ・モードを有し、前記セキュリティ・モードを表示するセキュリティ・レジスタを備えるとともに、前記セキュリティ・モードをセットする一般命令及びリセットする署名専用命令を有し、前記一般命令は一般モードのときに有効となり、前記署名専用命令はセキュリティ・モードのときに有効となるとすることもできる。
これにより、汎用機能を持ち、不揮発性メモリの鍵レジスタに格納した鍵データを直接的には読めないため、セキュリティ機能も持つプロセッサを提供することができる。
このプロセッサの走行モードとして、一般モードとセキュリティ・モードを有し、前記セキュリティ・モードを表示するセキュリティ・レジスタを備えるとともに、前記セキュリティ・モードをセットする一般命令及びリセットする署名専用命令を有し、前記一般命令は一般モードのときに有効となり、前記署名専用命令はセキュリティ・モードのときに有効となるとすることもできる。
前記セキュリティ・モード設定命令は、前記セキュリティ・レジスタをセットすると同時に、前記鍵カウンタを初期設定し、前記署名専用命令は、署名計算を鍵レジスタの1ビット分実行する命令の実行と同時に鍵カウンタをデクリメントして、順次ビットごとの署名計算が進行し、前記鍵カウンタが0のときのみにセキュリティ・モードをリセットする構成とし、一旦、デジタル署名の演算過程に入ると、終了するまで(鍵カウンタが0となるまで)、演算過程から抜けられず、演算過程の中間結果からプログラムにより鍵データを推定することを不可能としている。
前記ダイジェスト・レジスタに設定されたダイジェスト・データが少なくとも「2n」(n=1,2,…)ではないことを検出する手段を備え、前記セキュリティ設定命令は、「2n」ではないことを条件に、前記鍵カウンタを初期設定して、鍵データを間接的にも読み出すことができないようにしてもよい。
セキュア・プロセッサには、主メモリに接続しており、前記署名専用命令は、前記デジタル署名を求める演算の演算結果を、前記主メモリの特定の領域のみに格納して、デジタル署名演算の最終結果を前の演算結果に上書きする構成として、中間結果を主メモリに残すことを不可能としてもよい。
上述のセキュア・プロセッサを組み込んだICカードでは、署名演算をICカード内で実行でき、鍵データをICカード外部に取り出す必要がなく、署名演算を安全に実行することができる。また、鍵データをICカードからプログラムにより外部に取り出すことは不可能である。
前記ダイジェスト・レジスタに設定されたダイジェスト・データが少なくとも「2n」(n=1,2,…)ではないことを検出する手段を備え、前記セキュリティ設定命令は、「2n」ではないことを条件に、前記鍵カウンタを初期設定して、鍵データを間接的にも読み出すことができないようにしてもよい。
セキュア・プロセッサには、主メモリに接続しており、前記署名専用命令は、前記デジタル署名を求める演算の演算結果を、前記主メモリの特定の領域のみに格納して、デジタル署名演算の最終結果を前の演算結果に上書きする構成として、中間結果を主メモリに残すことを不可能としてもよい。
上述のセキュア・プロセッサを組み込んだICカードでは、署名演算をICカード内で実行でき、鍵データをICカード外部に取り出す必要がなく、署名演算を安全に実行することができる。また、鍵データをICカードからプログラムにより外部に取り出すことは不可能である。
本発明のセキュア・プロセッサは、汎用性とセキュリティ機能の二律背反性を新しいアーキテクチャを考案することによって解決している。
上述のセキュア・プロセッサが用いられている個人認証用のICカードの主たる機能は署名演算である。本発明のセキュア・プロセッサを用いることにより、セキュリティ機能で署名演算を行うばかりでなく、キャッシュカード機能、クレジットカード機能、改竄防止機能、通行料金支払い機能、予約チケット機能、等々の応用に対して、異なる汎用の応用プログラムをプロセッサの上で走行することにより、対応することができる。
上述のセキュア・プロセッサが用いられている個人認証用のICカードの主たる機能は署名演算である。本発明のセキュア・プロセッサを用いることにより、セキュリティ機能で署名演算を行うばかりでなく、キャッシュカード機能、クレジットカード機能、改竄防止機能、通行料金支払い機能、予約チケット機能、等々の応用に対して、異なる汎用の応用プログラムをプロセッサの上で走行することにより、対応することができる。
個人認証において、セキュリティ機能を突き詰めていくと、個人鍵データを署名演算にのみ使えるようにし、他のあらゆる操作を拒否するようにすることに行き着く。これを実現するために、本発明のセキュア・プロセッサは大きく分類して2つの構成を有している。
A:個人鍵データが署名演算等において使われるときは、上位から順番に1ビットづつ参照される動作のみで、他の動作はない。このことに着目して、個人鍵を主メモリや汎用レジスタではなく、独自の不揮発性専用レジスタに格納する。そして、その専用レジスタには、全データを外部から読み取るパスはなくする。上位から順に1ビットづつ参照する演算のためのパスのみを作る。
B:セキュア・プロセッサにおいて、従来のプロセッサには存在しなかったセキュリティ・モードと称するモードを導入する。これはプログラム走行の環境を制約する条件でもある。セキュリティ・モードにおいては通常の命令語は命令として解読されない。署名演算でのみ使用される特殊な命令語のみが命令として機能する。
これらの手法によって、本発明のセキュア・プロセッサは、如何なるプログラムによっても個人鍵データを外部へ漏洩せしめることは不可能となる。
以下に、図面を用いて、上述のA,Bの両機能を備えたセキュア・プロセッサの構成例を詳しく説明する。
A:個人鍵データが署名演算等において使われるときは、上位から順番に1ビットづつ参照される動作のみで、他の動作はない。このことに着目して、個人鍵を主メモリや汎用レジスタではなく、独自の不揮発性専用レジスタに格納する。そして、その専用レジスタには、全データを外部から読み取るパスはなくする。上位から順に1ビットづつ参照する演算のためのパスのみを作る。
B:セキュア・プロセッサにおいて、従来のプロセッサには存在しなかったセキュリティ・モードと称するモードを導入する。これはプログラム走行の環境を制約する条件でもある。セキュリティ・モードにおいては通常の命令語は命令として解読されない。署名演算でのみ使用される特殊な命令語のみが命令として機能する。
これらの手法によって、本発明のセキュア・プロセッサは、如何なるプログラムによっても個人鍵データを外部へ漏洩せしめることは不可能となる。
以下に、図面を用いて、上述のA,Bの両機能を備えたセキュア・プロセッサの構成例を詳しく説明する。
<プロセッサの構成>
図1は、セキュア・プロセッサの実施形態の1例を示すブロック図である。図2は、セキュア・プロセッサ内の鍵レジスタ部分のブロック図である。図3は、実施形態のセキュア・プロセッサの命令フォーマットである。図4は、セキュア・プロセッサのオペコード(OPコード:命令コード)例である。
図1は、セキュア・プロセッサの実施形態の1例を示すブロック図である。図2は、セキュア・プロセッサ内の鍵レジスタ部分のブロック図である。図3は、実施形態のセキュア・プロセッサの命令フォーマットである。図4は、セキュア・プロセッサのオペコード(OPコード:命令コード)例である。
<セキュア・プロセッサの内部構成>
図1に示したプロセッサ100は、署名演算のために、なるべく長い語長(64ビット)を有し、16倍長語までの計算が1個の命令できる。また、主メモリ200とのアドレス単位も語単位(64ビット単位)である。主メモリの容量は、64ビット×64K語(512KB=4Mbits)である。これらについては、後で詳しく説明する。
なお、以下に説明するセキュア・プロセッサの語単位として、64ビットを用いた構成としているが、これは、鍵データとの署名演算から、なるべく長い語長を選択したためであり、演算速度等やハードウェア量との関係から、決定すればよい事項である。
図1に示したプロセッサ100は、署名演算のために、なるべく長い語長(64ビット)を有し、16倍長語までの計算が1個の命令できる。また、主メモリ200とのアドレス単位も語単位(64ビット単位)である。主メモリの容量は、64ビット×64K語(512KB=4Mbits)である。これらについては、後で詳しく説明する。
なお、以下に説明するセキュア・プロセッサの語単位として、64ビットを用いた構成としているが、これは、鍵データとの署名演算から、なるべく長い語長を選択したためであり、演算速度等やハードウェア量との関係から、決定すればよい事項である。
(セキュア・プロセッサ内部構成の説明)
図1のCPU100内には、命令レジスタ(IS:InStruction Register)143,メモリデータ・レジスタ(MD:Memory Data Register)144,プログラム・カウンタ(PC:Program Counter)145,F−オペランド・カウンタ(FC:F-operand Counter)146,T−オペランド・カウンタ(TC:T-operand Counter)147が用意されている。これらは、主メモリ200との間にあり、主メモリ200から、命令やデータを読み出したり、書き込んだりするためのレジスタである。
プログラム・カウンタ(PC)145の内容により、主メモリ200から命令レジスタ(IS)143に、図3(a)に示すフォーマット(64ビット)の命令が読み出される。この命令により、図3(a)のMFやMTのフィールドで指定されたアドレスモード(図3(b)参照)に従って、F−オペランド・カウンタ146,T−オペランド・カウンタ147にアドレス等が設定され、主メモリ200からメモリデータ・レジスタ(MD)144にデータが読み出されたり、メモリデータ・レジスタ144(MD)内のデータが主メモリ200に書き込まれたりする。
図1のCPU100内には、命令レジスタ(IS:InStruction Register)143,メモリデータ・レジスタ(MD:Memory Data Register)144,プログラム・カウンタ(PC:Program Counter)145,F−オペランド・カウンタ(FC:F-operand Counter)146,T−オペランド・カウンタ(TC:T-operand Counter)147が用意されている。これらは、主メモリ200との間にあり、主メモリ200から、命令やデータを読み出したり、書き込んだりするためのレジスタである。
プログラム・カウンタ(PC)145の内容により、主メモリ200から命令レジスタ(IS)143に、図3(a)に示すフォーマット(64ビット)の命令が読み出される。この命令により、図3(a)のMFやMTのフィールドで指定されたアドレスモード(図3(b)参照)に従って、F−オペランド・カウンタ146,T−オペランド・カウンタ147にアドレス等が設定され、主メモリ200からメモリデータ・レジスタ(MD)144にデータが読み出されたり、メモリデータ・レジスタ144(MD)内のデータが主メモリ200に書き込まれたりする。
倍長演算命令では、図3のLフィールドに指定された語長分、F−オペランド・カウンタ146やT−オペランド・カウンタ147は、インクリメント(1づつ増加)されて、オペランドが主メモリ200から次々に読み出されるか書き込まれることで、16倍長語までの処理が1個の命令できる。
汎用演算器(ALU:Arithmetic and Logic Unit)164は、一般的な演算(加算,減算,論理演算等)を行う演算器であり、乗算器(MPY:MultiPlY unit)162は、64ビット×64ビットの掛け算を行う演算器である。
PFレジスタ(Program Status Flag)148は、命令の実行によりセットされる4ビットのフラグであり、図4−1(a),図4−2(b)に示されているオペコード表のPSWの項に示されているものがセットされる。オペコード表のPSW(Program Status Word)のN,Z,V,Cは、それぞれ、負(Negative),ゼロ(Zero),オーバーフロー(oVerflow),キャリ(Carry)を示している。
演算用レジスタ(R0〜RF)110は、一般用の演算命令等で用いられる汎用のレジスタである。この汎用レジスタを用いる演算命令は、図3(a)のMF又はMTに図3(b)のレジスタ直接を指定して、F又はTオペランドのフィールドにレジスタ番号を指定する。バッファ・レジスタ(B0,B1)141,142は、演算途中の結果等を格納しておくレジスタである。
上述の命令の動作や各レジスタの機能は、詳しくは、図3に示した命令のフォーマットと図4−1,図4−2のオペコード表(命令コード表)等を参照されたい。図4−1(a)及び図4−2(b)はオペコード表であり、図4−2(c)は、オペコード表のフィールドごとに使用されている記号の説明であり、図4−2(d)は、オペコード表の動作の項の表記の説明であり、図4−2(e)は、図4−2(c),(d)の*で示していることの補足説明である。
オペコード表のOP,SOP,MF,MT,L,F,T,Sの各項は、図3(a)(b)の命令フォーマットの説明と図4−2(c)の記号の説明を参照されたい。また、ニモニックは、命令の略号であり、今後、各命令を参照するときは、このニモニックを使用している。各命令の動作は、動作の項に記載されている。属性は、命令の分類で、例えば、SFTはシフト命令、ADDは加算命令、SUBは減算命令、BITはビット処理命令、MOVは移動命令、JMPはジャンプ命令、LINKはサブルーティンコール命令、BRはPSWによるブランチ命令を示している。なお、SVC命令は、スーババイザ・コール命令で、図1に示していないITフラグをセットしている。RITはスーババイザ・コール命令のリターン命令で、ITフラグをリセットしている。
なお、上述のオペコード表の中に、以下で説明する署名演算用の命令も含まれている。これらの命令については、後で説明する。
汎用演算器(ALU:Arithmetic and Logic Unit)164は、一般的な演算(加算,減算,論理演算等)を行う演算器であり、乗算器(MPY:MultiPlY unit)162は、64ビット×64ビットの掛け算を行う演算器である。
PFレジスタ(Program Status Flag)148は、命令の実行によりセットされる4ビットのフラグであり、図4−1(a),図4−2(b)に示されているオペコード表のPSWの項に示されているものがセットされる。オペコード表のPSW(Program Status Word)のN,Z,V,Cは、それぞれ、負(Negative),ゼロ(Zero),オーバーフロー(oVerflow),キャリ(Carry)を示している。
演算用レジスタ(R0〜RF)110は、一般用の演算命令等で用いられる汎用のレジスタである。この汎用レジスタを用いる演算命令は、図3(a)のMF又はMTに図3(b)のレジスタ直接を指定して、F又はTオペランドのフィールドにレジスタ番号を指定する。バッファ・レジスタ(B0,B1)141,142は、演算途中の結果等を格納しておくレジスタである。
上述の命令の動作や各レジスタの機能は、詳しくは、図3に示した命令のフォーマットと図4−1,図4−2のオペコード表(命令コード表)等を参照されたい。図4−1(a)及び図4−2(b)はオペコード表であり、図4−2(c)は、オペコード表のフィールドごとに使用されている記号の説明であり、図4−2(d)は、オペコード表の動作の項の表記の説明であり、図4−2(e)は、図4−2(c),(d)の*で示していることの補足説明である。
オペコード表のOP,SOP,MF,MT,L,F,T,Sの各項は、図3(a)(b)の命令フォーマットの説明と図4−2(c)の記号の説明を参照されたい。また、ニモニックは、命令の略号であり、今後、各命令を参照するときは、このニモニックを使用している。各命令の動作は、動作の項に記載されている。属性は、命令の分類で、例えば、SFTはシフト命令、ADDは加算命令、SUBは減算命令、BITはビット処理命令、MOVは移動命令、JMPはジャンプ命令、LINKはサブルーティンコール命令、BRはPSWによるブランチ命令を示している。なお、SVC命令は、スーババイザ・コール命令で、図1に示していないITフラグをセットしている。RITはスーババイザ・コール命令のリターン命令で、ITフラグをリセットしている。
なお、上述のオペコード表の中に、以下で説明する署名演算用の命令も含まれている。これらの命令については、後で説明する。
以上説明した構成は、通常の汎用マイクロ・プロセッサの構成と同様のものである。これらは、このセキュア・プロセッサが応用される分野に応じて、変更することができる。例えば、64ビット/語の構成を生かすために、以下の署名演算で用意されているmod演算に有効な命令を、暗号計算用に一般用の命令として用意してもよい。
<署名演算に関する構成>
以下に説明する構成は、セキュア・プロセッサの署名演算に密着している構成例である。
以下に説明する構成は、セキュア・プロセッサの署名演算に密着している構成例である。
(鍵データ漏洩防止)
さて、セキュリティ機能のひとつの目的は、鍵データK漏洩の防止である。図1において、鍵データは、不揮発性メモリ(例えばROM)で構成された鍵レジスタ(K0〜KF:Key register)130に格納されている。鍵レジスタ130には、各ユーザの例えばRSAの秘密鍵データ(1024ビット)が書き込まれている。この不揮発性メモリへの鍵の書き込みは、例えば外部から専用のライタにより書き込むことで行っても良い。
RSA公開鍵方式でのディジタル署名演算の方式では、鍵Kの値は1ビットづつ上位ビットから参照して、別の乗算へ反映させる必要があり、これが唯一の使用方法である。従って、この目的のために、図2のような、鍵レジスタ130から1ビットづつ選択して参照する鍵参照回路を設けている。なお、これらの回路を用いたデジタル署名演算のアルゴリズムについては、後で詳しく説明する。
さて、セキュリティ機能のひとつの目的は、鍵データK漏洩の防止である。図1において、鍵データは、不揮発性メモリ(例えばROM)で構成された鍵レジスタ(K0〜KF:Key register)130に格納されている。鍵レジスタ130には、各ユーザの例えばRSAの秘密鍵データ(1024ビット)が書き込まれている。この不揮発性メモリへの鍵の書き込みは、例えば外部から専用のライタにより書き込むことで行っても良い。
RSA公開鍵方式でのディジタル署名演算の方式では、鍵Kの値は1ビットづつ上位ビットから参照して、別の乗算へ反映させる必要があり、これが唯一の使用方法である。従って、この目的のために、図2のような、鍵レジスタ130から1ビットづつ選択して参照する鍵参照回路を設けている。なお、これらの回路を用いたデジタル署名演算のアルゴリズムについては、後で詳しく説明する。
図2の鍵参照回路において、鍵ビット参照カウンタ(KC:Key-bit reference Counter)152は1023から0まで、順次デクリメントする。この鍵ビット参照カウンタ152の内容により、ビット指定ゲート154から、鍵レジスタ130に格納されているKデータが順次1ビットづつ指定されて参照される。図2からも分かるように、鍵Kを格納する鍵レジスタ130から他へデータを転送する語データ並列伝送経路を設けていない。図1に示すように、ビット指定ゲート154からの参照出力は、ダイジェスト・レジスタ120の出力選択ゲート156にのみ使用される。このように、図1,図2に示されているハードウェア構造からして、鍵データを生の形で直接外部へ出すことは不可能である。
図1のダイジェスト・レジスタ(D0〜D2:Digest register)120は、64ビット×3のレジスタであり、デジタル署名の処理のために、デジタル署名を付加するための本文から抽出されたダイジェスト・データ(特徴データ)を格納するためのレジスタである。
デジタル署名の処理を行う前に、本文の3語長分のダイジェストを作成し、主メモリ200に格納しておく。ダイジェストは、本文のビット構成如何にかかわらず160ビット程度まで圧縮攪拌され(たとえばハッシュ関数SHA-1によって)ランダムなビット構成となっている。しかしながら、このダイジェスト・データを故意に2のような単純な値に設定することもできる。すると、署名計算結果から鍵Kの値を逆算される危険が発生する。これを防止するためにダイジェスト・レジスタの内容が「2n」(n=1,2,…)のような単純な値ではないことを検知する必要がある。セキュア・プロセッサでは、単純な値ではないことを「有効パターン」と呼んで署名計算開始の条件としている。 図4−1のオペコード表で、DMVと表記されている命令により、Fフィールドで指定されている主メモリ200のアドレスに格納されている3語長分のダイジェストをダイジェスト・レジスタ(Dレジスタ)120に格納する。
Dレジスタ120には、ビットパターン検知ゲート(図示せず)が付属している。ビットパターン検知ゲートは、Dレジスタ120の全160ビットを16ビットづつ10ブロックに区分し、すべてのブロックが少なくとも1個の”1”を持つかを検知している。これにより、格納したデータが「有効パターン」であるかを検出している。
上述した鍵参照回路で読み出された1ビットの鍵データは、Dレジスタ120から読み出したダイジェスト・データDに対して、D判定ゲート156により反映している。これについては、後述する署名演算で説明する。
デジタル署名の処理を行う前に、本文の3語長分のダイジェストを作成し、主メモリ200に格納しておく。ダイジェストは、本文のビット構成如何にかかわらず160ビット程度まで圧縮攪拌され(たとえばハッシュ関数SHA-1によって)ランダムなビット構成となっている。しかしながら、このダイジェスト・データを故意に2のような単純な値に設定することもできる。すると、署名計算結果から鍵Kの値を逆算される危険が発生する。これを防止するためにダイジェスト・レジスタの内容が「2n」(n=1,2,…)のような単純な値ではないことを検知する必要がある。セキュア・プロセッサでは、単純な値ではないことを「有効パターン」と呼んで署名計算開始の条件としている。 図4−1のオペコード表で、DMVと表記されている命令により、Fフィールドで指定されている主メモリ200のアドレスに格納されている3語長分のダイジェストをダイジェスト・レジスタ(Dレジスタ)120に格納する。
Dレジスタ120には、ビットパターン検知ゲート(図示せず)が付属している。ビットパターン検知ゲートは、Dレジスタ120の全160ビットを16ビットづつ10ブロックに区分し、すべてのブロックが少なくとも1個の”1”を持つかを検知している。これにより、格納したデータが「有効パターン」であるかを検出している。
上述した鍵参照回路で読み出された1ビットの鍵データは、Dレジスタ120から読み出したダイジェスト・データDに対して、D判定ゲート156により反映している。これについては、後述する署名演算で説明する。
(セキュリティ・モード)
さて、上述した鍵レジスタ130や鍵参照回路のハードウェア構造からして鍵データKを生の形で外部へ出すことは不可能なことは自明である。残る問題は上記の計算の中で間接的に使用される鍵データのビット毎の値を計測され、集められるかどうかである。観測対象が複雑な署名処理の最終結果(全1024ビット)ならば、それはディジタル署名データであるから鍵データの推測は実用上不可能であることは知られている。そこで各個別の1ビット毎にモンゴメリー乗算結果からKの値(0または1)を推測されないようにするための他の防護策を次に説明する。
さて、上述した鍵レジスタ130や鍵参照回路のハードウェア構造からして鍵データKを生の形で外部へ出すことは不可能なことは自明である。残る問題は上記の計算の中で間接的に使用される鍵データのビット毎の値を計測され、集められるかどうかである。観測対象が複雑な署名処理の最終結果(全1024ビット)ならば、それはディジタル署名データであるから鍵データの推測は実用上不可能であることは知られている。そこで各個別の1ビット毎にモンゴメリー乗算結果からKの値(0または1)を推測されないようにするための他の防護策を次に説明する。
署名演算を他の普通の計算と区別し、署名演算の途中で使用される命令を署名以外の目的に悪用されないように防護するために、セキュア・プロセッサでは、プログラム走行モードを普通モードとセキュリティ・モードとに区分している。どちらのモードで走行中かをセキュリティフラグ・レジスタ(SFレジスタ:Security Flag register)149で示している。
図1のSFレジスタ149にはSF3,SF2,SF1,SF0の4ビットがあるが、当面使うのはSF0のみである。
(1)SF0=0:普通モード
応用プログラム部分、パソコン交信部分、圧縮計算(ダイジェスト・データを得る)部分
(2)SF0=1:署名モード
署名演算実行中(後で説明する図5のフローチャート部分)
命令セットの中で、一般的命令は、セキュリティ・フラグSF0が0でないと有効に働かない。命令セットの一部に署名演算の途中でのみ使用される命令を用意する。これらの命令はSF0=1でないと有効に働かない。なお、SF0のマッチングがとれないときは無動作NOP命令と同じになる。図4−1(a),図4−2(b)のオペコード表で、「動作」の欄に[SF=1]と表示がある命令がこの命令に該当し、SIE,KCJ,ADO,SCMP,SSB,MLS,MDK,MLD,MLL,MLH,MLPの各命令である。なお、MLS,MDK,MLD,MLL,MLH,MLPの命令は、演算結果を格納するための先頭アドレスを指定するSフィールドを有しており、他の命令とフォーマットが異なっている。
図1のSFレジスタ149にはSF3,SF2,SF1,SF0の4ビットがあるが、当面使うのはSF0のみである。
(1)SF0=0:普通モード
応用プログラム部分、パソコン交信部分、圧縮計算(ダイジェスト・データを得る)部分
(2)SF0=1:署名モード
署名演算実行中(後で説明する図5のフローチャート部分)
命令セットの中で、一般的命令は、セキュリティ・フラグSF0が0でないと有効に働かない。命令セットの一部に署名演算の途中でのみ使用される命令を用意する。これらの命令はSF0=1でないと有効に働かない。なお、SF0のマッチングがとれないときは無動作NOP命令と同じになる。図4−1(a),図4−2(b)のオペコード表で、「動作」の欄に[SF=1]と表示がある命令がこの命令に該当し、SIE,KCJ,ADO,SCMP,SSB,MLS,MDK,MLD,MLL,MLH,MLPの各命令である。なお、MLS,MDK,MLD,MLL,MLH,MLPの命令は、演算結果を格納するための先頭アドレスを指定するSフィールドを有しており、他の命令とフォーマットが異なっている。
SF0=1を設定する命令(図4−1(a):SIG)は、必ず同時に、KC=03FF(=1023d),0000〜000F番地の1024ビットデータ=0000‥‥0001に設定する。SIG命令は、ダイジェスト・レジスタ120の内容が有効パターンでないと有効に働かない。これは、ダイジェスト・レジスタ120に”2”と設定されて、2KmodNから鍵Kを逆算されることを防ぐ。
署名演算の途中で使用する計算結果の格納箇所は、以下の主メモリの上位64番地の固定番地を使用している。
(1) 0000〜000F 16番地(1024ビットデータ)
(2) 0010〜001F 16番地(1024ビットデータ)
(3) 0020〜002F 16番地(1024ビットデータ)
(4) 0030〜003F 16番地(1024ビットデータ)
計算結果が1024ビットの場合は(1)0000〜000F番地の16番地へ格納される。計算結果が2048ビットの場合は(1)(2)0000〜001Fの32番地へ格納される。計算結果を一旦退避させたいときは、(3)(4)0020〜003Fへ退避させることのみできる。なお、SF0=1が解除されてSF0=0になったあとでは、普通のMOV命令(図4−1(a)参照)等で上述の上位固定番地の内容を他番地へ移せる。
(1) 0000〜000F 16番地(1024ビットデータ)
(2) 0010〜001F 16番地(1024ビットデータ)
(3) 0020〜002F 16番地(1024ビットデータ)
(4) 0030〜003F 16番地(1024ビットデータ)
計算結果が1024ビットの場合は(1)0000〜000F番地の16番地へ格納される。計算結果が2048ビットの場合は(1)(2)0000〜001Fの32番地へ格納される。計算結果を一旦退避させたいときは、(3)(4)0020〜003Fへ退避させることのみできる。なお、SF0=1が解除されてSF0=0になったあとでは、普通のMOV命令(図4−1(a)参照)等で上述の上位固定番地の内容を他番地へ移せる。
そして、署名演算が終了するまで、即ち、鍵カウンタKCがゼロとなるまで、SF0をリセットする命令(SIE)を動作させることができない(図4−1(a)参照)。これについては後で詳しく説明する。
この結果、ビット毎の計算結果は固定の番地のみへどんどん集積し、ビットごとの途中結果は外部へ取り出すことはできず、最後の全ビット積算結果のみ外部へ取り出せる。
この結果、ビット毎の計算結果は固定の番地のみへどんどん集積し、ビットごとの途中結果は外部へ取り出すことはできず、最後の全ビット積算結果のみ外部へ取り出せる。
(署名演算)
RSA公開鍵システムにおけるディジタル署名は、DKmodN (D:ダイジェスト・データ,K:鍵,N:特定の整数)を計算することである。
DKmodNを一個の巨大な特殊命令で扱うことは、セキュリティ上は望ましいものの、ハードウェア資源上得策でないので、通常の命令と同程度の大きさの特殊命令を複数個用意して実行する。すると、それらの特殊命令の使い方を変えて、鍵Kを外部へ漏洩する悪意のプログラムを構成できる可能性も発生する。これを防護するのが上述したセキュリティ機能である。このセキュリティ機能を利用する、DKmodNの計算をおこなう手順を、図5のフローチャートを用いて説明する。図5のフローチャートは、バイナリ法(Binary Method)のアルゴリズムで処理する場合であり、詳しくは、例えば上記の非特許文献1(2.3 The Binary Method (p.10〜p.11))を参照されたい。なお、手順中のAはメモリ0000〜000F番地の内容である。
RSA公開鍵システムにおけるディジタル署名は、DKmodN (D:ダイジェスト・データ,K:鍵,N:特定の整数)を計算することである。
DKmodNを一個の巨大な特殊命令で扱うことは、セキュリティ上は望ましいものの、ハードウェア資源上得策でないので、通常の命令と同程度の大きさの特殊命令を複数個用意して実行する。すると、それらの特殊命令の使い方を変えて、鍵Kを外部へ漏洩する悪意のプログラムを構成できる可能性も発生する。これを防護するのが上述したセキュリティ機能である。このセキュリティ機能を利用する、DKmodNの計算をおこなう手順を、図5のフローチャートを用いて説明する。図5のフローチャートは、バイナリ法(Binary Method)のアルゴリズムで処理する場合であり、詳しくは、例えば上記の非特許文献1(2.3 The Binary Method (p.10〜p.11))を参照されたい。なお、手順中のAはメモリ0000〜000F番地の内容である。
図5のフローチャートにおいて、初期設定(S312)に必要な、1→SF0,1→A,1023→KCの3つの初期動作を1個の命令(SIG命令)で行っている。そして、署名演算のサブルーティンに入る。
ただし、SFをセットするためには、ダイジェスト・レジスタ120の内容が有効パターンであることが条件となる。有効パターンとは、160ビットあるダイジェスト・レジスタ内のデータが十分に撹拌され、圧縮されたデータであることを言う。16ビット×10の16ビット毎に少なくとも1個は1があることをハードウェア的に検知する。SF0=1となったあとは ダイジェスト・レジスタ120内のデータ変更はできない。
ただし、SFをセットするためには、ダイジェスト・レジスタ120の内容が有効パターンであることが条件となる。有効パターンとは、160ビットあるダイジェスト・レジスタ内のデータが十分に撹拌され、圧縮されたデータであることを言う。16ビット×10の16ビット毎に少なくとも1個は1があることをハードウェア的に検知する。SF0=1となったあとは ダイジェスト・レジスタ120内のデータ変更はできない。
さて、初期化のあと、A2modNを計算する(S314)。最初は、A=1である。
つぎに、A×DmodNを計算する(S316)。Dは、以下のようにKc(鍵K中の、鍵カウンタ(KC)152で指示された位置のビット)の値によって2通りの値をとる。
Dは、ダイジェスト・レジスタD120から読み出されたダイジェスト・データDと、鍵レジスタ130から鍵カウンタ(KC)152により読み出されたKcとから、ハードウェア・ゲート156で作られる。図4−2(b)のオペコード表では、MDK命令であり、鍵カウンタのデクレメントと上述のDを得ることを同時に行う命令である。
問題の鍵Kは、直接には表面に現れないが、間接的にA×D KmodN→AのDに影響を与える。外部に絶対に漏洩させてはならないKが、間接的に関与する部分はA×D KmodNの計算部分である。
つぎに、A×DmodNを計算する(S316)。Dは、以下のようにKc(鍵K中の、鍵カウンタ(KC)152で指示された位置のビット)の値によって2通りの値をとる。
問題の鍵Kは、直接には表面に現れないが、間接的にA×D KmodN→AのDに影響を与える。外部に絶対に漏洩させてはならないKが、間接的に関与する部分はA×D KmodNの計算部分である。
これを鍵Kの長さ分、即ち、鍵カウンタKC152が零となるまで(S318でYES)、鍵カウンタKC152をデクレメントして(S320)、2つのmod計算(S314.S316)を行う。鍵カウンタKC152が零となると、SF0を零にリセットして、この署名演算のサブルーティンから抜けることができる(SIE命令)。
特定の領域に格納される計算途中の演算結果は、次々に上書きされ、署名演算が終了すると、最終結果として署名されたデータが格納されている。
特定の領域に格納される計算途中の演算結果は、次々に上書きされ、署名演算が終了すると、最終結果として署名されたデータが格納されている。
上述のmod計算(S314.S316)の部分は、乗算命令を中心とする複数ステップがループする構造になっている。modNの演算は、通常ならば割り算となるが、モンゴメリー乗算と呼ばれる計算手順を使って多数の乗算と1回の減算で実行する。モンゴメリー乗算のアルゴリズムについては、モンゴメリー乗算については、非特許文献1(3.8 Montgomery's Method p.46〜p.47)を参照されたい。
(モンゴメリー乗算の手順)
AD KmodN をモンゴメリー乗算で求めると、次のような式となる(式中の減算Nは引けないときはそのまま)。
上記の式に現れるR,R*,N*は、いずれもNが与えられた最初の設定時に同時に導出できる定数である。実用上のRSA公開鍵システムでは、公開パラメータNは1024ビット長に固定されているので、R,R*,N*は下記となる。
・R=21024=100000‥‥000
(Rのデータビット長は1025ビットになる。)
・R*=R2modN=22048modN
(modNをとるから、R*のデータビット長は1024ビット以下である。)
・NN*=γR−1を満足するようにN*を計算する。γは任意の整数である。
(N*のデータビット長は1024かまたはそれ以下となる。)
式の形の上ではRによる除算が3箇所、modRが3箇所存在するが、Rの値が特殊な形の21024なのでビット操作で済ませられる。
AD KmodN をモンゴメリー乗算で求めると、次のような式となる(式中の減算Nは引けないときはそのまま)。
・R=21024=100000‥‥000
(Rのデータビット長は1025ビットになる。)
・R*=R2modN=22048modN
(modNをとるから、R*のデータビット長は1024ビット以下である。)
・NN*=γR−1を満足するようにN*を計算する。γは任意の整数である。
(N*のデータビット長は1024かまたはそれ以下となる。)
式の形の上ではRによる除算が3箇所、modRが3箇所存在するが、Rの値が特殊な形の21024なのでビット操作で済ませられる。
上述の式を求めるための手順は、網掛け部分が同じであるので、以下の通りである。
(01) AR*を求める。
乗算、結果は Max.2048ビットである。
(02) AR*N*を求めると、2048ビットでもオーバーフローするので、AR*modRを先に求める(下位Lビットの抽出)。上半分の1024ビットを捨てる。
(03) (02)×N*を求める。乗算結果は最大2048ビットである。
(04) (03)modR を求める(下位Lビットの抽出)。上半分の1024ビットを捨てる。
(05) (04)×Nを求める。乗算結果は最大2048ビットである。
(06) (01)+(05) を求める。加算結果は最大2049ビットである。
(07) (06)/Rを求める(下位Lビットの0の除去)。下半分の1024ビットを捨てる。
(08) (07)−Nを求める。これをXとする。減算は、正負判定して選択して行う。
(09) (08)×Dを求める(ここでKcが影響する)。乗算の結果は、1024+160=1184ビットである。
(10) (09)N*を求めると2048ビットでもオーバーフローするので、(09)modRを先に求める(下位Lビットの抽出)。下半分の1024ビットを取り出す。
(11) (10)×N*を求める。乗算結果は最大2048ビットである。
(12) (11)modRを求める(下位Lビットの抽出)。下半分の1024ビットを取り出す。
(13) (12)×Nを求める。乗算結果は最大2048ビットである。
(14) (09)+(13)を求める。加算結果は最大2049ビットである。
(15) (14)/Rを求める(下位Lビットの除去)。下半分の1024ビットを捨てる。
(16) (15)−Nを求める。減算は、正負判定して選択する。
なお、上述の(08)および(16)「正負判定して選択する」としているのは、減算結果が正ならばそのままの値を答えとし、減算結果が負ならば、その値を捨てて、減算する前の値を答えとすることを意味する。
(01) AR*を求める。
乗算、結果は Max.2048ビットである。
(02) AR*N*を求めると、2048ビットでもオーバーフローするので、AR*modRを先に求める(下位Lビットの抽出)。上半分の1024ビットを捨てる。
(03) (02)×N*を求める。乗算結果は最大2048ビットである。
(04) (03)modR を求める(下位Lビットの抽出)。上半分の1024ビットを捨てる。
(05) (04)×Nを求める。乗算結果は最大2048ビットである。
(06) (01)+(05) を求める。加算結果は最大2049ビットである。
(07) (06)/Rを求める(下位Lビットの0の除去)。下半分の1024ビットを捨てる。
(08) (07)−Nを求める。これをXとする。減算は、正負判定して選択して行う。
(09) (08)×Dを求める(ここでKcが影響する)。乗算の結果は、1024+160=1184ビットである。
(10) (09)N*を求めると2048ビットでもオーバーフローするので、(09)modRを先に求める(下位Lビットの抽出)。下半分の1024ビットを取り出す。
(11) (10)×N*を求める。乗算結果は最大2048ビットである。
(12) (11)modRを求める(下位Lビットの抽出)。下半分の1024ビットを取り出す。
(13) (12)×Nを求める。乗算結果は最大2048ビットである。
(14) (09)+(13)を求める。加算結果は最大2049ビットである。
(15) (14)/Rを求める(下位Lビットの除去)。下半分の1024ビットを捨てる。
(16) (15)−Nを求める。減算は、正負判定して選択する。
なお、上述の(08)および(16)「正負判定して選択する」としているのは、減算結果が正ならばそのままの値を答えとし、減算結果が負ならば、その値を捨てて、減算する前の値を答えとすることを意味する。
上述の式を、図4−1(a),図4−2(b)に示したオペコード表の命令で行う場合を、図6(a)に示す。図6(a)に表れた記号の意味は図6(b)に示されている。
図6(a)で示されているように、上述の手順は、全て、図4−1および図4−2に示されている、セキュリティ・モードであるときに動作する命令で、計算することができる。
図6(a)で示されているように、上述の手順は、全て、図4−1および図4−2に示されている、セキュリティ・モードであるときに動作する命令で、計算することができる。
<ICカードへの応用>
セキュア・プロセッサをICカードに応用した場合について、図7を用いて説明する。
さて、ディジタル署名は、上述したように、対象メッセージから作成したダイジェストデータに対して、個人鍵で暗号化することで生成される。図7(a)は現在用いられている認証ICカード310を示している。現在用いられている認証用ICカード310は、ICカード310に個人の鍵データが書き込まれている。メッセージ送り主は、パソコン320に付属するカードリーダ(図示せず)へ乗せ、パソコン320の表示画面上の署名動作を示すボタン等をクリックして起動する。すると、認証用ICカード310から個人の鍵データが読み出され、パソコン320内でディジタル署名が生成され、メッセージ本体とペアになってインターネット330経由で相手先へ送られる。署名演算がすむとICカードをリーダから取り除くことで署名動作全体が終了する。
この動作において、署名演算をどこで実施するかでセキュリティレベルが違ってくる。図7(a)に示す現在の方法では、個人鍵データがパソコンの中に移るわずかな時間の間にも、盗聴されたりコピーされたりする危険が有りうる。
図7(b)に示すセキュア・プロセッサを組み込んだICカード315の場合は、署名演算能力を有するので、ICカード315に対象メッセージを取り込み、ICカード315内で署名演算を実施する。ICカード315に取り込むデータは、ダイジェスト・データでもよい。ICカード315からパソコン320へ送られて出てくるのは、ディジタル署名結果であり、鍵データではない。ICカード内で、署名演算を行っているために、鍵データを外部に読み出す必要はなく、上記の危険性はない。署名結果から鍵を逆算することは天文学的時間を要する。
しかも、セキュア・プロセッサICカード315の場合は如何なるプログラム手段を講じても(ウイルス、クラッカーすべてを含め)鍵データそのものをICカードから外部へ取り出すこと、コピーすること、計測すること、その他観察行為すべてが難しく、不可能である。
セキュア・プロセッサをICカードに応用した場合について、図7を用いて説明する。
さて、ディジタル署名は、上述したように、対象メッセージから作成したダイジェストデータに対して、個人鍵で暗号化することで生成される。図7(a)は現在用いられている認証ICカード310を示している。現在用いられている認証用ICカード310は、ICカード310に個人の鍵データが書き込まれている。メッセージ送り主は、パソコン320に付属するカードリーダ(図示せず)へ乗せ、パソコン320の表示画面上の署名動作を示すボタン等をクリックして起動する。すると、認証用ICカード310から個人の鍵データが読み出され、パソコン320内でディジタル署名が生成され、メッセージ本体とペアになってインターネット330経由で相手先へ送られる。署名演算がすむとICカードをリーダから取り除くことで署名動作全体が終了する。
この動作において、署名演算をどこで実施するかでセキュリティレベルが違ってくる。図7(a)に示す現在の方法では、個人鍵データがパソコンの中に移るわずかな時間の間にも、盗聴されたりコピーされたりする危険が有りうる。
図7(b)に示すセキュア・プロセッサを組み込んだICカード315の場合は、署名演算能力を有するので、ICカード315に対象メッセージを取り込み、ICカード315内で署名演算を実施する。ICカード315に取り込むデータは、ダイジェスト・データでもよい。ICカード315からパソコン320へ送られて出てくるのは、ディジタル署名結果であり、鍵データではない。ICカード内で、署名演算を行っているために、鍵データを外部に読み出す必要はなく、上記の危険性はない。署名結果から鍵を逆算することは天文学的時間を要する。
しかも、セキュア・プロセッサICカード315の場合は如何なるプログラム手段を講じても(ウイルス、クラッカーすべてを含め)鍵データそのものをICカードから外部へ取り出すこと、コピーすること、計測すること、その他観察行為すべてが難しく、不可能である。
Claims (6)
- 鍵データを格納した不揮発性メモリで構成される鍵レジスタと、
該鍵レジスタに格納された鍵データを1ビットづつ参照するために、ビット位置を示す鍵カウンタと、
デジタル署名に用いるダイジェスト・データを格納するダイジェスト・レジスタと、
前記鍵カウンタにより参照された1ビットの鍵データが0のときは前記ダイジェスト・レジスタの内容を1、1のときは前記ダイジェスト・レジスタの内容をそのまま出力するゲートとを備え、
一般命令とともに、前記鍵レジスタ、前記鍵カウンタ、及び前記ダイジェスト・レジスタを操作して前記ダイジェスト・データからデジタル署名を求めるための複数の署名専用命令を有する
ことを特徴とするセキュア・プロセッサ。 - 請求項1に記載のセキュア・プロセッサにおいて、
プロセッサの走行モードとして、一般モードとセキュリティ・モードを有し、
前記セキュリティ・モードを表示するセキュリティ・レジスタを備えるとともに、前記セキュリティ・モードをセットする一般命令及びリセットする署名専用命令を有し、
前記一般命令は一般モードのときに有効となり、前記署名専用命令はセキュリティ・モードのときに有効となることを特徴とするセキュア・プロセッサ。 - 請求項2に記載のセキュア・プロセッサにおいて、
前記セキュリティ・モード設定命令は、前記セキュリティ・レジスタをセットすると同時に、前記鍵カウンタを初期設定し、
前記署名専用命令は、署名計算を鍵レジスタの1ビット分実行する命令の実行と同時に鍵カウンタをデクリメントして、順次ビットごとの署名計算が進行し、前記鍵カウンタが0のときのみにセキュリティ・モードをリセットすることを特徴とするセキュア・プロセッサ。 - 請求項3に記載のセキュア・プロセッサにおいて、
前記ダイジェスト・レジスタに設定されたダイジェスト・データが少なくとも「2n」(n=1,2,…)ではないことを検出する手段を備え、
前記セキュリティ設定命令は、「2n」ではないことを条件に、前記鍵カウンタを初期設定することを特徴とするセキュア・プロセッサ。 - 請求項3又は4に記載のセキュア・プロセッサにおいて、
セキュア・プロセッサには、主メモリに接続しており、
前記署名専用命令は、前記デジタル署名を求める演算の演算結果を、前記主メモリの特定の領域のみに格納して、デジタル署名演算の最終結果を前の演算結果に上書きすることを特徴とするセキュア・プロセッサ。 - 請求項1〜5のいずれかに記載のセキュア・プロセッサを組み込んだICカード。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003380114A JP2005141160A (ja) | 2003-11-10 | 2003-11-10 | セキュア・プロセッサ |
US10/578,258 US20070055872A1 (en) | 2003-11-10 | 2004-11-09 | Secure processor |
PCT/JP2004/016589 WO2005045789A1 (ja) | 2003-11-10 | 2004-11-09 | セキュア・プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003380114A JP2005141160A (ja) | 2003-11-10 | 2003-11-10 | セキュア・プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005141160A true JP2005141160A (ja) | 2005-06-02 |
JP2005141160A5 JP2005141160A5 (ja) | 2005-11-04 |
Family
ID=34567220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003380114A Pending JP2005141160A (ja) | 2003-11-10 | 2003-11-10 | セキュア・プロセッサ |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070055872A1 (ja) |
JP (1) | JP2005141160A (ja) |
WO (1) | WO2005045789A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011104822A1 (ja) * | 2010-02-23 | 2011-09-01 | 富士通株式会社 | 電子署名装置および電子署名方法 |
WO2022127348A1 (en) * | 2020-12-16 | 2022-06-23 | International Business Machines Corporation | Method and system for on demand control of hardware support for software pointer authentification in a computing system |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070016767A1 (en) * | 2005-07-05 | 2007-01-18 | Netdevices, Inc. | Switching Devices Avoiding Degradation of Forwarding Throughput Performance When Downloading Signature Data Related to Security Applications |
US8127009B2 (en) | 2006-06-30 | 2012-02-28 | Pinder Howard G | Renewable conditional access |
US8250656B2 (en) * | 2007-11-21 | 2012-08-21 | Mikhail Y. Vlasov | Processor with excludable instructions and registers and changeable instruction coding for antivirus protection |
DE102008021567B4 (de) * | 2008-04-30 | 2018-03-22 | Globalfoundries Inc. | Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel |
US8898089B2 (en) * | 2008-06-24 | 2014-11-25 | Visa U.S.A. Inc. | Dynamic verification value system and method |
CN113330423A (zh) * | 2019-02-11 | 2021-08-31 | 惠普发展公司,有限责任合伙企业 | 固件指令的删除 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2618002B1 (fr) * | 1987-07-10 | 1991-07-05 | Schlumberger Ind Sa | Procede et systeme d'authentification de cartes a memoire electronique |
FR2718311A1 (fr) * | 1994-03-30 | 1995-10-06 | Trt Telecom Radio Electr | Dispositif de mise en Óoeuvre d'un système de signature de message et carte à puce comportant un tel dispositif. |
US5999626A (en) * | 1996-04-16 | 1999-12-07 | Certicom Corp. | Digital signatures on a smartcard |
GB9626241D0 (en) * | 1996-12-18 | 1997-02-05 | Ncr Int Inc | Secure data processing method and system |
US6466668B1 (en) * | 1998-01-28 | 2002-10-15 | Hitachi, Ltd. | IC card equipped with elliptical curve encryption processing facility |
US6378072B1 (en) * | 1998-02-03 | 2002-04-23 | Compaq Computer Corporation | Cryptographic system |
WO1999067909A2 (en) * | 1998-06-03 | 1999-12-29 | Cryptography Research, Inc. | Secure modular exponentiation with leak minimization for smartcards and other cryptosystems |
US7032100B1 (en) * | 1999-12-17 | 2006-04-18 | Koninklijke Philips Electronics N.V. | Simple algorithmic cryptography engine |
US20010054147A1 (en) * | 2000-04-04 | 2001-12-20 | Richards Ernest S. | Electronic identifier |
US7165178B2 (en) * | 2000-08-14 | 2007-01-16 | Identrus Llc | System and method for facilitating signing by buyers in electronic commerce |
US7195154B2 (en) * | 2001-09-21 | 2007-03-27 | Privasys, Inc. | Method for generating customer secure card numbers |
KR100436814B1 (ko) * | 2001-12-20 | 2004-06-23 | 한국전자통신연구원 | 아이씨카드용 알에스에이 암호 연산 장치 |
JP2004054128A (ja) * | 2002-07-23 | 2004-02-19 | Sony Corp | 暗号化装置 |
-
2003
- 2003-11-10 JP JP2003380114A patent/JP2005141160A/ja active Pending
-
2004
- 2004-11-09 WO PCT/JP2004/016589 patent/WO2005045789A1/ja active Application Filing
- 2004-11-09 US US10/578,258 patent/US20070055872A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011104822A1 (ja) * | 2010-02-23 | 2011-09-01 | 富士通株式会社 | 電子署名装置および電子署名方法 |
JP5559865B2 (ja) * | 2010-02-23 | 2014-07-23 | 富士通株式会社 | 電子署名装置および電子署名方法 |
WO2022127348A1 (en) * | 2020-12-16 | 2022-06-23 | International Business Machines Corporation | Method and system for on demand control of hardware support for software pointer authentification in a computing system |
US12008149B2 (en) | 2020-12-16 | 2024-06-11 | International Business Machines Corporation | Method and system for on demand control of hardware support for software pointer authentification in a computing system |
Also Published As
Publication number | Publication date |
---|---|
WO2005045789A1 (ja) | 2005-05-19 |
US20070055872A1 (en) | 2007-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
May et al. | Random register renaming to foil DPA | |
Ryan | Hardware-backed heist: Extracting ECDSA keys from qualcomm's trustzone | |
Moghimi et al. | Medusa: Microarchitectural data leakage via automated attack synthesis | |
Wang et al. | Covert and side channels due to processor architecture | |
US8781111B2 (en) | System and methods for side-channel attack prevention | |
Aciiçmez et al. | On the power of simple branch prediction analysis | |
JP6707024B2 (ja) | 非対称マスク済み乗算 | |
US7770024B2 (en) | Security message authentication instruction | |
JP4909403B2 (ja) | 安全にデータを求める方法 | |
JP4885458B2 (ja) | 電力分析攻撃に安全な基本演算装置および方法 | |
EP2300952B1 (en) | A method for adapting and executing a computer program and computer program product and computer architecture therefor | |
TWI449392B (zh) | 軟體執行的隨機化 | |
US20100232603A1 (en) | Decryption processor and decryption processing method | |
EP2211265A1 (en) | Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method | |
TWI403144B (zh) | 隨機化模數減化方法及其硬體 | |
TWI512610B (zh) | 利用模數的特殊形式之模組約化 | |
JP2005141160A (ja) | セキュア・プロセッサ | |
CN1739094B (zh) | 防止隐蔽信道攻击的整数除法方法 | |
JP2009502070A (ja) | 永久データハードウェアインテグリティ | |
US8347110B2 (en) | Protecting a program interpreted by a virtual machine | |
US7639796B2 (en) | Method for secure integer division or modular reduction against hidden channel attacks | |
Fournier et al. | Cache based power analysis attacks on AES | |
Tillich et al. | Implementation and evaluation of an SCA-resistant embedded processor | |
WO2022135686A1 (en) | Method for securing a computing device from memory corruption and computing device | |
Joye et al. | A protected division algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050909 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050909 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090203 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090623 |