(57)【要約】【課題】剰余演算の高速化に寄与するデータプロセッサを提供することにある。【解決手段】ＣＰＵ（２）と一緒にオンチップされたコプロセッサユニット（７）は演算メモリ（２１）の記憶領域を任意に指定可能なポインタ（２２）を有するから、演算メモリの一の記憶領域から他の記憶領域へのデータ転送をアドレスポインタの設定値変更によって実現できる。前記演算メモリは剰余演算データを複数組格納可能な記憶容量を持つから、所定の演算データについてコプロセッサユニット内で演算メモリから剰余演算器に転送することが可能になる。よって、演算データをＣＰＵ制御により外部のＲＡＭ（４）から逐次受取ったり、演算結果を周期的にＣＰＵ制御で外部のＲＡＭへ転送したりする、データの外部転送を少なくすることができ、データ転送時間の短縮、データ転送による電流波形の解析に基づくデータハッキングの抑制を達成する。【選択図】　　　　図１
2004129033.tif 000002
【特許請求の範囲】
【請求項１】
中央処理ユニットと、コプロセッサユニットと、ワークＲＡＭとを有し、
前記コプロセッサユニットは、剰余演算器と、前記剰余演算器に剰余演算データを供給し且つ剰余演算器から剰余演算結果データを入力することが可能な演算メモリと、前記演算メモリの記憶領域を任意に指定可能なポインタとを有することを特徴とするデータプロセッサ。
【請求項２】
中央処理ユニットと、コプロセッサユニットと、ワークＲＡＭとを有し、
前記コプロセッサユニットは、剰余演算器と、演算メモリと、ポインタとを有し、
前記演算メモリは、前記剰余演算器に剰余演算データを供給し且つ剰余演算器から剰余演算結果データを入力することが可能であって、剰余演算データを複数組格納可能な記憶容量を持ち、
前記ポインタは、前記演算メモリの記憶領域を任意に指定可能であることを特徴とするデータプロセッサ。
【請求項３】
前記コプロセッサユニットは暗号演算が可能であることを特徴とする請求項１又は２に記載のデータプロセッサ。
【請求項４】
前記剰余演算データには秘密鍵のデータを含むことを特徴とする請求項３に記載のデータプロセッサ。
【請求項５】
前記ポインタは前記メモリの記憶領域を指定する値が前記中央処理ユニットによって設定可能な複数のポインタレジスタから成ることを特徴とする請求項請求項１又は２に項記載のデータプロセッサ。
【請求項６】
ＣＰＵと、コプロセッサユニットと、ワークＲＡＭと、外部とデータの入出力を行なうためのアンテナとを合成樹脂に封入されて備え、
前記外部との間では暗号化したデータの入出力が行われ、
前記コプロセッサユニットは、剰余演算器と、演算メモリと、ポインタとを有し、
前記演算メモリは、前記剰余演算器に剰余演算データを供給し且つ剰余演算器から剰余演算結果データを入力することが可能であて、剰余演算データを複数組格納可能な記憶容量を持ち、
前記ポインタは、前記演算メモリの記憶領域を任意に指定可能であることを特徴とするＩＣカード。
【請求項７】
ＣＰＵと、コプロセッサユニットと、ワークＲＡＭを合成樹脂に封入されて備え、前記合成樹脂の表面に外部とデータの入出力を行なうための外部端子が露出され、
前記外部との間では暗号化されたデータの入出力が行われ、
前記コプロセッサユニットは、剰余演算器と、演算メモリと、ポインタとを有し、
前記演算メモリは、前記剰余演算器に剰余演算データを供給し且つ剰余演算器から剰余演算結果データを入力することが可能であて、剰余演算データを複数組格納可能な記憶容量を持ち、
前記ポインタは、前記演算メモリの記憶領域を任意に指定可能であることを特徴とするＩＣカード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、剰余演算機能を備えたデータプロセッサ及びＩＣカードに関し、例えば剰余乗算演算及びべき乗剰余演算等の剰余演算によって暗号化及び復号を行なうことが可能なＩＣカード用マイクロコンピュータに適用して有効な技術に関する。
【０００２】
【従来の技術】
ＩＣカード用マイクロコンピュータに内蔵されている剰余演算可能なコプロセッサは、例えば古典的に知られている暗号の基本演算であるＷ＝ＡＢｍｏｄＮの演算を行なう。演算に必要な値は、Ａ，Ｂ，Ｎであり、数百ビットから数千ビットに及ぶ大きな数であり、一つの演算アルゴリズムに従えば、ＡＢｍｏｄＮによる剰余演算の答えをＷに格納し、Ｗの値をＡに代入して演算を繰り返す。演算においては、それらの値Ａ，Ｂ，Ｎ，Ｗはレジスタに格納される。
【０００３】
特許文献１には、そのようなコプロセッサユニットをオンチップして暗号化及び復号を行なうことが可能なマイクロコンピュータについて記載がある。ここではコプロセッサユニットはレジスタ又はＲＡＭからデータをロードしてＡ＝ＡＢｍｏｄＮの剰余演算を行なう。その他に、信号処理プロセッサを設けたＩＣカードについて記載された文献として特許文献２乃至５が有る。
【０００４】
【特許文献１】
特開平１０−２１０５７号公報（図３）
【特許文献２】
特開平１０−６９２２２号公報（図４）
【特許文献３】
特開平１１−１１０５０４号公報（図１）
【特許文献４】
特開平１１−２８８２１５号公報（図１）
【特許文献５】
特開２００１−２３０７７１号公報（図１）
【０００５】
【発明が解決しようとする課題】
本発明者は暗号演算を行なうコプロセッサユニットについて検討した。例えば前記基本演算においてレジスタＷにＡＢｍｏｄＮの演算結果を格納した後にそれをレジスタＡに上書きコピーする演算処理を繰返す場合、データを上書きするためにＣＰＵとの間でのデータ転送に時間がかかってしまう。その上、データを転送する時に、その演算アルゴリズムや特定のデータ転送径路に応じた特徴的な電流波形が現れ、その波形から演算データを解読される虞がある。このようなデータハッキングにより暗号鍵が盗まれたりして、ＩＣカード等のセキュリティーが低下し、ユーザに損害の及ぶ可能性がある。
【０００６】
本発明の目的は、剰余演算の高速化に寄与するデータプロセッサを提供することにある。
【０００７】
本発明の別の目的は、剰余演算によって生ずる電流波形の解析に基づくデータハッキングを抑制することができるデータプロセッサを提供することにある。
【０００８】
本発明の更に別の目的は、データハッキングによるセキュリティー低下を抑制することができるＩＣカードを提供することにある。
【０００９】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１０】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１１】
第１の観点によるデータプロセッサは、中央処理ユニット（ＣＰＵとも記す）と、コプロセッサユニットと、ワークＲＡＭとを有する。前記コプロセッサユニットは、剰余演算器と、前記剰余演算器に剰余演算データを供給し且つ剰余演算器から剰余演算結果データを入力することが可能な演算メモリと、前記演算メモリの記憶領域を任意に指定可能なポインタとを有する。これにより、例えば暗号文を暗号鍵、例えば秘密鍵を用いて剰余演算しその演算結果に対して繰返し剰余演算を行なう復号アルゴリズムなどにおいて、「Ｗ＝ＡＢｍｏｄＮ」による次の演算のためにＷのデータ格納領域からＡのデータ格納領域にデータＷを転送しなくても、Ｗのデータ格納領域のアドレスポインタをＡのデータ格納領域のアドレスポインタの値に変更すれば対応でき、データ転送時間を短縮することができる。
【００１２】
第２の観点によるデータプロセッサは、上記に加え、前記演算メモリは、剰余演算データを複数組格納可能な記憶容量を持つ。これにより、秘密鍵などの特定の剰余演算データを複数組前記コプロセッサ内部の演算メモリに格納し、これを演算ＲＡＭからバスを経由せずに剰余演算器にロードすれば、秘密鍵などの特定の剰余演算データをワークＲＡＭ等からバス経由で毎回規則的に剰余演算器にロードすることを要せずに暗号文の復号処理等を行なうことができ、前記データロードによる電流波形の解析に基づくデータハッキングを抑制することができる。
【００１３】
本発明の具体的な形態として、前記コプロセッサユニットは暗号演算を行なうものであってよい。このとき、前記剰余演算データには例えば秘密鍵のデータを含むことになる。前記メモリの記憶領域を指定する値が前記ＣＰＵによって設定可能な複数のポインタレジスタによって前記ポインタを構成すれば、コプロセッサユニットに対する演算データのアドレシングをＣＰＵが行なうといアーキテクチャを採用できる。コプロセッサユニット独自のアドレシングモードを設けなくても済む。
【００１４】
本発明に係るＩＣカードは、ＣＰＵと、コプロセッサユニットと、ワークＲＡＭと、外部とデータの入出力を行なうためのアンテナとを合成樹脂に封入されて備え、前記外部との間では暗号化したデータの入出力が行われる。前記コプロセッサユニットには第１又は第２の観点の手段を採用すればよい。これにより非接触インタフェースのＩＣカードにおいてデータハッキングによるセキュリティー低下を抑制することができる。外部インタフェースは、前記アンテナに代えて、前記合成樹脂の表面に外部とデータの入出力を行なうための外部端子がを露出させ、接触インタフェースを採用してもよい。
【００１５】
【発明の実施の形態】
図１には本発明に係るデータプロセッサの一例としてマイクロコンピュータが例示される。同図に示されるマイクロコンピュータ１は、特に制限されないが、所謂ＩＣカードマイコンと称されるマイクロコンピュータである。同図に示されるマイクロコンピュータ１は、単結晶シリコンなどの１個の半導体基板若しくは半導体チップにＣＭＯＳなどの半導体集積回路製造技術によって形成される。
【００１６】
マイクロコンピュータ１は、ＣＰＵ２、ワークＲＡＭとしてのＲＡＭ（ランダム・アクセス・メモリ）４、タイマ５、ＥＥＰＲＯＭ（エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ）６、コプロセッサユニット７、クロック生成回路９、マスクＲＯＭ（リード・オンリ・メモリ）１０、システムコントロールロジック１１、入出力ポート（Ｉ／Ｏポート）１２、データバス１３、及びアドレスバス１４を有する。
【００１７】
前記マスクＲＯＭ１０はＣＰＵ２の動作プログラム（暗号化プログラム、復号プログラム、インタフェース制御プログラム等）及びデータを格納するのに利用される。前記ＲＡＭ４はＣＰＵ２のワーク領域又はデータの一時記憶領域とされ、例えばＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）若しくはＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）から成る。前記ＣＰＵ２は、マスクＲＯＭ１０から命令をフェッチし、フェッチした命令をデコードし、デコード結果に基づいてオペランドフェッチやデータ演算を行う。コプロセッサユニット７はＣＰＵ２の制御に従ってＲＳＡや楕円曲線暗号演算における剰余演算処理などを行う。Ｉ／Ｏポート１２は２ビットの入出力端子Ｉ／Ｏ１，Ｉ／Ｏ２を有し、データの入出力と外部割り込み信号の入力に兼用される。Ｉ／Ｏポート１２はデータバス１３に結合され、データバス１３には前記ＣＰＵ２、ＲＡＭ４、タイマ５、ＥＥＰＲＯＭ６、及びコプロセッサユニット７等が接続される。マイクロコンピュータ１においてＣＰＵ２がバスマスタモジュールとされ、前記ＲＡＭ４、タイマ５、ＥＥＰＲＯＭ６、マスクＲＯＭ１０及びコプロセッサユニット７に接続されるアドレスバス１４にアドレス信号を出力可能にされる。システムコントロールロジック１１はマイクロコンピュータ１の動作モードの制御及び割り込み制御を行い、更に暗号鍵の生成に利用する乱数発生ロジックを有する。／ＲＥＳ（記号／はこれが付された信号がロウイネーブルの信号であることを意味する）はマイクロコンピュータ１に対するリセット信号である。マイクロコンピュータ１はリセット信号／ＲＥＳによってリセット動作が指示されると、内部が初期化され、ＣＰＵ２はＥＥＰＲＯＭ６のプログラムの先頭番地から命令実行を開始する。クロック生成回路９は外部クロック信号ＣＬＫを受けて内部クロック信号ＣＫを生成する。マイクロコンピュータ１は内部クロック信号ＣＫに同期動作される。
【００１８】
前記ＥＥＰＲＯＭ６は、電気的に消去処理及び書込み処理が可能にされ、個人を特定するために用いられるＩＤ情報などのデータを格納する領域として用いられる。ＥＥＰＲＰＭ６に代えてフラッシュメモリ或は高誘電体メモリなどを採用してもよい。図１に示されるマイクロコンピュータ１は外部との情報入出力及び動作電源の入力は図示を省略する電極パッド等の外部端子を介して行なう。
【００１９】
図２にはマイクロコンピュータ１の別の例が示される。同図に示されるマイクロコンピュータ１は、図１のマイクロコンピュータと外部インタフェース手段が相違される。すなわち図２のマイクロコンピュータは図示を省略するアンテナに接続可能なアンテナ端子ＴＭＬ１，ＴＭＬ２を有するＲＦ部（高周波部）１５を備える。ＲＦ部（高周波部）１５は前記アンテナが所定の電波（例えばマイクロ波）を横切ることによって生ずる誘導電流を動作電源として電源電圧Ｖｃｃを出力し、該所定の電波の周波数に対応して生ずる誘導電流を基にした内部クロック信号ＣＫ、該所定の電波に重なって受け渡されるデータをＲＦ部１５で分離した内部データ、さらにリセット信号／ＲＥＳ、の夫々を生成し、アンテナから非接触で情報の入出力を行なう。Ｉ／Ｏポート１２は外部と入出力すべき情報をＲＦ部（高周波部）１５とやり取りする。
【００２０】
ここで、前記コプロセッサユニット７による暗号演算について説明する。暗号技術の一つとしてＲＳＡ暗号のような公開鍵暗号技術が有る。例えば、送信者はメッセージＭに対して「Ｃ＝ＭｅｍｏｄＮ」による符号化で暗号文Ｃを形成し、受信者は暗号文Ｃに対して、「Ｍ＝ＣｄｍｏｄＮ」による復号でメッセージＭを得る。上記符号化におけるパラメータｅ，Ｎは公開とされ、上記復号におけるｄは非公開とされる。前記符号化及び復号のための演算式は、べき乗剰余演算であり、代表的に「ＸＹｍｏｄＮ」（Ｘ，Ｙ，Ｎは正の整数）と記述する事ができる。「ｍｏｄ」は剰余演算を意味し、べき乗剰余演算「ＸＹｍｏｄＮ」は、Ｘ・Ｙ　をＮで除算した余りを解とするものである。この場合、前記値Ｙが秘密鍵などの暗号鍵とされる。
【００２１】
ここで前記Ｘ，Ｙ，Ｎは、通常１００ビット〜２０００ビット程度の非常に大きな数が使用されるため、「ＸＹｍｏｄＮ」を高速に実行するために、図３に示すアルゴリズム１のように、自乗の剰余乗算「Ａ２ｍｏｄＮ」及び剰余乗算「ＡＢｍｏｄＮ」の形態に分解することができる。
【００２２】
図３のアルゴリズム１において、ｎはＹのビット数に対応され、ｅｎ，ｅｎ−１，・・・，ｅ１はＹの２進数表現である。このアルゴリズムは、概略的には、自乗の剰余乗算「Ａ２ｍｏｄＮ」及び剰余乗算「ＡＢｍｏｄＮ」を組み合わせて実行され、ｅｎ，ｅｎ−１，・・・ｅ１における論理値１の個数をｒ（ｅ）とすると、前記自乗の剰余乗算「Ａ２ｍｏｄＮ」にｎ−１回、前記剰余乗算「ＡＢｍｏｄＮ」にｒ（ｅ）−１回の演算が繰り返し行われることになる。このようにアルゴリズム１による暗号演算を行うにはコプロセッサユニット７は「ＡＢｍｏｄＮ」の剰余演算機能が実現されていればよい。
【００２３】
図３のアルゴリズム１によるバイナリー法の処理フローが図４に例示される。図４に示されるように、Ｙの値により、各剰余乗算間に３通りの時間ｔ１、ｔ２、ｔ３が発生する。コプロセッサユニット７の消費電流はＣＰＵ２の消費電流に比べて大きいため、この部分の電流波形を観測することによりコプロセッサユニット７の動作タイミングが容易に判明し、ＴＡ法やＳＰＡ法によりＹの値（暗号鍵）をハッキングされてしまう可能性がある。要するに、図５に例示するように、その時間ｔ１、ｔ２、ｔ３の現われ方によってＹの値、即ちｅｉ＝１又はｅｉ＝０が類推可能になってしまう。
【００２４】
尚、前記ハッキング手法の一つであるＳＰＡ（Ｓｉｍｐｌｅ　Ｐｏｗｅｒ　Ａｎａｌｙｓｉｓ）法は演算命令の違い、あるいは処理されているデータの違いにより生じる消費電流波形の違いから、暗号鍵や処理されているデータを解析する方法である。ＴＡ（Ｔｉｍｉｎｇ　Ａｔｔａｃｋ）法は処理時間の違いを利用して実行内容や暗号鍵を推定する方法である。
【００２５】
図６にはＲＳＡ暗号演算の別のアルゴリズム２が例示される。前記アルゴリズム１はＹの値を１ビットづつ判定している（ステップＳ１）。図６のアルゴリズム２はＹの値を２ビットづつ処理する２ビット処理のアルゴリズムである。図７の処理フローのステップＳ２において、（ｅｉ，ｅｉ−１）の２ビットの値に応じてＢにロードする値が選択される。Ｙの値を２ビットずつ処理することで、コプロセッサユニットの実行時間の短縮化とＴＡ法／ＳＰＡ法によるハッキング対策を目指すことができる。２ビット処理のアルゴリズムでは、図７の処理フロー及び図８のタイミングチャートに示されるように、常に「Ａ２ｍｏｄＮ」、「Ａ２ｍｏｄＮ」、「ＡＢｍｏｄＮ」の繰り返しなので、処理時間や電流波形が一定になる。そのため、電流波形からＹの２ビット処理値を推定するのは困難になる。また演算の回数も、図３，４のバイナリ法だと平均で１．５ｎ回（ｎ：Ｙのビット数）、最高で２ｎ回かかっていたのが、２ビット処理だと常に１．５ｎ回で済むため、動作時間の短縮にもつながる。
【００２６】
図９には前記アルゴリズム１による暗号演算が可能なコプロセッサユニット７の一例が示される。コプロセッサユニット７は剰余演算器２０、演算メモリ２１、アドレスポインタ２２、データバッファ２３及び制御回路２４を有する。前記制御回路２４はＣＰＵ２より暗号処理のための剰余演算等の演算コマンドを受取り、これを解読することによってアドレスポインタ２２、演算メモリ２１及び剰余演算器２０の動作を制御する。
【００２７】
前記剰余演算器２０は、例えば「Ｗ＝ＡＢｍｏｄＮ」の剰余演算を行う。前記演算メモリ２１は、前記剰余演算器２０に剰余演算データを供給し且つ剰余演算器２０から剰余演算結果データを入力することが可能なＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）等のメモリによって構成され、演算データＷ、Ａ、Ｂ、Ｎを格納可能とされる。図９において演算メモリ２１は、演算データＷ、Ａ、Ｂ、Ｎを格納するメモリアレイ（ＡＲＹ）３０、アドレス信号をデコードして演算データＷ、Ａ、Ｂ、Ｎの記憶領域のアドレシングを行うアドレスデコーダ（ＡＤＥＣ）３１、アドレシングされた記憶領域に対するリード動作と書込み動作を行う書込み読み出し回路（ＲＷ、入出力回路）３２、及びタイミングジェネレータ（ＴＧ）３３を備える。書込み読み出し回路（ＲＷ）３２はメモリデータバス２５に接続され、ここに、剰余演算器２０及びデータバッファ２３が接続される。データバッファ２３はデータバス１３とメモリデータバス２５との間のインタフェース、そして制御回路２４とデータバス１３との間のインタフェースを行う。
【００２８】
前記アドレスポインタ２２は、ポインタレジスタＰｗ、Ｐａ、Ｐｂ、ＰｎとセレクタＳＥＬによって構成される。ポインタレジスタＰｗは演算データＷの格納場所を指定するアドレス情報がＣＰＵ２によって格納される。他のポインタレジスタＰａ、Ｐｂ、Ｐｎも同様に対応する演算データＡ、Ｂ、Ｎの格納場所を指定するアドレス情報がＣＰＵ２によって格納される。演算メモリ２１におけるデータＡ、Ｂ、Ｎ、Ｗのそれぞれの記憶領域の大きさはポインタレジスタＰｗ、Ｐａ、Ｐｂ、Ｐｎに設定されるアドレスによって相違される。例えば、演算データは１０２４ビットであったりする。剰余演算器２０も６４ビットのブロック単位で演算を行う構成であったり、或は１０２４ビット単位で演算可能な多倍長演算器であったりする。更に演算データのビット数についても暗号化の強度に応じて相違される。演算メモリ２１はそれらの点が考慮されており、例えばメモリアレイ３０は演算データＡ、Ｂ、Ｎ、Ｗとして考えられる最大データ長を考慮した記憶容量をもつ。多倍長演算が行われる場合にはポインタレジスタＰｗ、Ｐａ、Ｐｂ、Ｐｎに設定されるアドレス値はアドレスエリアのスタートアドレスを指定すればよい。ブロック単位で演算を行う場合にはスタートアドレスと共にブロックデータサイズ毎のブロックデータ数、或はスタートアドレスと共にエンドアドレス又はエリアのサイズを規定するオフセット情報を指定すればよい。ブロックデータ数やオフセット情報は制御回路２４の図示を省略する制御レジスタにセットしてタイミングジェネレータ３３に与えるようにしてもよい。
【００２９】
セレクタＳＥＬはポインタレジスタＰｗ、Ｐａ、Ｐｂ、Ｐｎの出力を選択する。選択されたポインタレジスタＰａ、Ｐｗ、Ｐｂ、Ｐｎの値によって演算メモリ２１がアドレシングされる。例えば演算メモリ２１のアドレスマッピングは図１０に例示されるようにＨ’ＦＦＥ０００〜Ｈ’ＦＦＥ１ＦＦとされる。ポインタレジスタＰａ、Ｐｗ、Ｐｂ、ＰｎはＨ’ＦＦＦＦ９７〜Ｈ’ＦＦＦＦ９Ｅに割当てられる。ポインタレジスタＰａ、Ｐｗ、Ｐｂ、Ｐｎに設定されるアドレス値に従って演算データＷ、Ａ、Ｂ、Ｎの格納されるメモリの領域Ｅｗ、Ｅａ、Ｅｂ、Ｅｎが決定される。このようにポインタレジスタＰａ、Ｐｗ、Ｐｂ、Ｐｎの設定値次第で、演算メモリ２１に対するデータの格納領域を容量とマッピングアドレスの双方でプログラマブルに決定することができる。この点で、図１１に示されるように、演算データＷ、Ａ、Ｂ、Ｎに対してその記憶領域Ｒａ，Ｒｗ，Ｒｂ，Ｒｎを固定的に割当てた構成とは相違される。
【００３０】
図９の構成により、「Ｗ＝ＡＢｍｏｄＮ」による剰余演算の繰返しにおいて、データＷの値を次のデータＡの領域に上書きしたい時、データＡの領域Ｅａを指しているポインタＰａの値をデータＷの領域Ｅｗを指す値に入れかえるだけで処理を行うことができできる。その結果、データ送信が不要となり、演算速度を短縮できる。さらに、コプロセッサユニット７による動作電流波形の例が図１２に示される。前述の通り、ポインタＰａ、Ｐｗが指し示すアドレスを入れかえることで、従来のコプロセッサユニットで必要であった演算結果データの規則的なデータ転送が不要になり、その結果として、図１３に例示されるような特徴的なブロック転送電流の波形は見られなくなり、暗号鍵の解読が困難となる。図１３のブロック転送電流は、例えばＣＰＵ２がデータＷをエリアＲｗから順次リードしてエリアＲａにライトする転送動作によって得られる電流波形である。
【００３１】
図９の比較例として、図１１に代表されるように演算データ領域固定の構成を採用したコプロセッサユニットは例えば図１４のように構成され、アドレスポインタＦＰａ、ＦＰｗ、ＦＰｂ、ＦＰｎは論理回路によって固定値を出力するようにされる。この比較例に係るコプロセッサユニットでは、ポインタＦＰａ、ＦＰｗ、ＦＰｂ、ＦＰｎの値が演算メモリの特定領域Ｒａ、Ｒｗ、Ｒｂ、Ｒｎに固定されている。よって、図１５に例示されるように、例えば、固定されているそれぞれの領域Ｒａ、Ｒｗ、Ｒｂ、Ｒｎよりも演算データのビット長が短かった場合には、アクセス不要な領域に対してもアクセスが行なわれ、処理に無駄を生ずることになる。図９のコプロセッサユニット７の場合には演算データ長に合わせてポインタレジスタＰａ、Ｐｗ、Ｐｂ、Ｐｎの設定値を変えれば、そのような無駄なアクセスの虞はない。要するに、演算データをスケーラブルに演算メモリ２１に格納することができる。これにより、不要な領域にアクセスする事はない。例えば図１６に例示されるように、演算データによっては、データをつめて格納する事ができ、無駄なメモリアクセスを行わずに済み、更に、演算メモリ２１の領域を有効に活用することできる。
【００３２】
図１７には前記アルゴリズム２による暗号演算に最適なコプロセッサユニット７の一例が示される。図９との相違点は演算メモリ２１に対する演算データ領域の確保の仕方である。その前提は図９の構成に比べて、演算メモリ２１は剰余演算のためのメモリ領域として、演算対象とし得る演算データの最大データ長と、演算データを指定するポインタの数から決まる記憶容量以上の容量を持つことである。図１７の例に則して説明すると、データＢの格納領域として一つのデータＢの４倍のデータ領域を確保可能に記憶容量が増加されている。即ち、データＡ、Ｎ、Ｗのデータを格納可能な領域Ｅａ、Ｅｎ、Ｅｗの他に、データＢの記憶領域として領域Ｅｂ０、Ｅｂ１、Ｅｂ２、Ｅｂ３を確保可能な容量が設けられている。演算データＢ０，Ｂ１，Ｂ２，Ｂ３が対応する記憶領域Ｅｂ０、Ｅｂ１、Ｅｂ２、Ｅｂ３にストアされた状態で前記アルゴリズム２による演算を行うとき、演算途中で順次ポインタＰｂの設定値をＥｂ０、Ｅｂ１、Ｅｂ２、Ｅｂ３の領域を示すように変更すれば、データＢをその都度ＣＰＵ２のアクセス制御によってＲＡＭ４からデータバス１３経由でデータ転送することを要しない。
【００３３】
前述の通りアルゴリズム２では、４種類のデータＢ（Ｂ０，Ｂ１，Ｂ２，Ｂ３）に対してコプロセッサユニット７で演算を行わなければならず、図１４の比較例のように役割の決まった必要最小限のレジスタＲｗ，Ｒａ，Ｒｂ，Ｒｎしか持たない構成では、データＢを格納するレジスタの値を入れ替える処理が必要である。この処理はＣＰＵ制御でＲＡＭ４からデータバス経由のデータ転送を要するから、第１に、演算処理の全体的な処理速度低下の原因となり、第２に、そのようなデータ転送に際して生じる電流波形が統計的に観測されることで、コプロセッサユニット内部で演算している演算の種類が判別され、暗号鍵が解読される虞を生ずる。図１７の構成では、演算に必要なデータは演算メモリ２１に格納され、ポインタの指すアドレスを変えるだけで剰余演算器２０へデータを供給することがができるので、データ転送の必要がなく、暗号鍵の解読の手掛かりとなるブロック転送電流も発生しない。図１８には演算処理時間が短縮され、ブロック電流の発生も抑止される動作状態が時間軸上に示されている。
【００３４】
図１９には接触インタフェース形式のＩＣカード４０の外観が例示される。合成樹脂から成るカード基板４１には、特に制限されないが、電極パターンによって形成された外部端子４２が表面に露出され、前記図１のマイクロコンピュータ１が埋め込まれている。前記電極パターンにはマイクロコンピュータ１の対応する外部端子が結合される。
【００３５】
図２０には非接触インタフェース形式のＩＣカード４５の外観が例示される。合成樹脂から成るカード基板４１には、特に制限されないが、アンテナ４６と前記図２のマイクロコンピュータ１が埋め込まれている。図２のマイクロコンピュータ１のアンテナ端子ＴＭＬ１，ＴＭＬ２にはアンテナ４６が結合される。
【００３６】
前記ＩＣカード４０，４５を例えば電子マネーシステムで利用するとき、前記ＥＥＰＲＯＭ６には金額データやパスワードなどが暗号化されて格納され、電子マネーを利用するときパスワードや金額情報が復号され、復号された情報を用いて正当な利用か否かが判定され、必要な金額が銀行に送金され、或いは別のＩＣカードに所要の金額が転送される。
【００３７】
また、前記ＩＣカード４０、４５が携帯電話機に装着されて使用されるとき、前記ＥＥＰＲＯＭ６には使用者の電話番号、ＩＤ番号、課金情報等が暗号化されて格納され、電話を利用するときそれら情報が復号され、復号された情報を用いて正当な利用か否かが判定され、使用度数に応じて課金情報が更新され、再度暗号化される。
【００３８】
上記ＩＣカード４０、４５によれば、前記マイクロコンピュータ１の作用により、データハッキングによるセキュリティー低下を抑制することができる。
【００３９】
以上本発明者によってなされた発明を具体的に説明したが本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。
【００４０】
例えば以上の説明では、現在、公開暗号方式として一般に用いられているＲＳＡ暗号を適用した。本発明はそのようなＲＳＡ暗号による処理を行うものに限定されない。ＲＳＡ暗号は、暗号解読を困難にするために１０２４ビット以上という長い鍵を使用しなければならず、データ格納領域、処理速度の問題から、新しい暗号方式が開発されてきている。ＲＳＡ暗号に変わる有力な暗号として、楕円曲線暗号がある。楕円曲線暗号をＲＳＡ暗号と比較すると、鍵長１６３ビットの楕円曲線暗号は鍵長１０２４ビットのＲＳＡ暗号と同等の暗号強度があり、しかも計算時間は楕円曲線暗号の方がＲＳＡ暗号よりも早いという利点がある。楕円曲線暗号では通常、剰余乗算「ＡＢｍｏｄＮ」、「Ａ２ｍｏｄＮ」の他に、剰余加算減算「（Ａ＋Ｂ）ｍｏｄＮ」、「（Ａ−Ｂ）ｍｏｄＮ」をコプロセッサユニットで演算すると計算が高速に行える。楕円曲線暗号の場合もＲＳＡ暗号同様に演算データの転送が必要になるが、この演算データの転送が暗号解読の手掛かりにならないようにするには、図９又は図１７で説明したアドレスポインタレジスタ方式の上記コプロセッサユニット７を用いれば良い。
【００４１】
本発明において剰余演算は「Ａ２ｍｏｄＮ」、「ＡＢｍｏｄＮ」等の剰余乗算だけでなく、楕円曲線暗号に見られる剰余加算減算「（Ａ＋Ｂ）ｍｏｄＮ」、「（Ａ−Ｂ）ｍｏｄＮ」等であってよいことは言うまでもない。
【００４２】
本発明に係るマイクロコンピュータのような半導体データ処理装置はＩＣカード用にＳＯＣ（シリコン・オン・チップ）として搭載するのだけでなく、ＩＣカードのリーダ・ライタ側に適用することも可能である。
【００４３】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００４４】
すなわち、コプロセッサユニットは演算メモリの記憶領域を任意に指定可能なポインタを有するから、演算メモリの一の記憶領域から他の記憶領域へのデータ転送をアドレスポインタの設定値変更によって実現できる。更に、前記演算メモリは剰余演算データを複数組格納可能な記憶容量を持つから、所定の演算データについてコプロセッサユニット内で演算メモリから剰余演算器に転送することが可能になる。したがって、演算データをＣＰＵ制御により外部のＲＡＭから逐次受取ったり、演算結果を周期的にＣＰＵ制御で外部のＲＡＭへ転送したりするためのデータの外部転送を少なくすることができ、データ転送時間の短縮、コプロセッサユニット外部でのデータ転送による電流波形の解析に基づくデータハッキングの抑制を達成することができる。
【図面の簡単な説明】
【図１】本発明に係るデータプロセッサの一例であるマイクロコンピュータを例示するブロック図である。
【図２】マイクロコンピュータの別の例を示すブロック図である。
【図３】ＲＳＡ暗号演算を実現するアルゴリズム１を例示する説明図である。
【図４】図３のアルゴリズム１の処理フローを例示するフローチャートである。
【図５】図４の処理フローによる処理時間ｔ１、ｔ２、ｔ３の現われ方によってｅｉ＝１又はｅｉ＝０が類推可能になる処理の様子を示したタイミングチャートである。
【図６】ＲＳＡ暗号演算の別のアルゴリズム２を例示する説明図である。
【図７】図６のアルゴリズム２の処理フローを例示するフローチャートである。
【図８】アルゴリズム２による処理のタイミングチャートである。
【図９】アルゴリズム１による暗号演算が可能なコプロセッサユニットの詳細な一例を示すブロック図である。
【図１０】演算メモリのアドレスマッピングを例示する説明図である。
【図１１】演算データに対してその記憶領域を固定的に割当てた比較例に係る演算メモリの領域説明図である。
【図１２】図９のコプロセッサユニットを用いたときの動作電流波形を例示する説明図である。
【図１３】ＣＰＵがデータＷをエリアＲｗから順次リードしてエリアＲａにライトする転送動作によって得られるブロック転送電流の電流波形を例示する説明図である。
【図１４】アドレスポインタを論理回路により固定値出力として演算メモリの演算データ領域を固定にした比較例に係るコプロセッサユニットを例示する説明図である。
【図１５】演算メモリの記憶領域が固定になっている比較例において演算データのビット長が短いときアクセス不要な領域に対してもアクセスが行なわれることを模式的に示した説明図である。
【図１６】記憶領域可変の演算メモリでは演算データのビット長が短いときはデータをつめて格納する事により無駄なメモリアクセスを行わずに済むことを模式的に示した説明図である。
【図１７】アルゴリズム２による暗号演算に最適なコプロセッサユニットを例示するブロック図である。
【図１８】図１７の構成において演算処理時間が短縮され、ブロック電流の発生も抑止される動作状態を例示する波形図である。
【図１９】接触インタフェース形式のＩＣカードの外観を例示する平面図である。
【図２０】非接触インタフェース形式のＩＣカードの外観を例示する平面図である。
【符号の説明】
１　マイクロコンピュータ
２　ＣＰＵ
４　ＲＡＭ
６　ＥＥＰＲＯＭ
１０　マスクＲＯＭ
１２　Ｉ／Ｏポート
１３　データバス
１４　アドレスバス
１５　ＲＦ部
２０　剰余演算器
２１　演算メモリ
２２　アドレスポインタ
Ｅａ，Ｅｂ，Ｅｗ，Ｅｎ，Ｅｂ０，Ｅｂ１，Ｅｂ２，Ｅｂ３　　Ｐａ，Ｐｂ，Ｐｗ，Ｐｎで指定された演算データの記憶領域
２３　データバッファ
２４　制御回路
３０　メモリアレイ
４０　ＩＣカード
４１　カード基板
４２　外部端子
４５　ＩＣカード
４６　アンテナ
【図１】
2004129033.tif 000003
【図２】
2004129033.tif 000004
【図３】
2004129033.tif 000005
【図４】
2004129033.tif 000006
【図５】
2004129033.tif 000007
【図６】
2004129033.tif 000008
【図７】
2004129033.tif 000009
【図８】
2004129033.tif 000010
【図９】
2004129033.tif 000011
【図１０】
2004129033.tif 000012
【図１１】
2004129033.tif 000013
【図１２】
2004129033.tif 000014
【図１３】
2004129033.tif 000015
【図１４】
2004129033.tif 000016
【図１５】
2004129033.tif 000017
【図１６】
2004129033.tif 000018
【図１７】
2004129033.tif 000019
【図１８】
2004129033.tif 000020
【図１９】
2004129033.tif 000021
【図２０】
2004129033.tif 000022