(57)【要約】【課題】  複数の回路ブロックと、これらの回路ブロック間を互いに接続する内部の信号線とを有しているにも拘わらず、上記各回路ブロック間を伝送されるデータが消費電力解析によって推定される可能性を軽減可能な半導体装置、および、ＩＣカードを実現する。【解決手段】  ＩＣカード１は、複数の回路ブロック１１〜１４と、これらの回路ブロック間を互いに接続する内部のデータバス２１とを備えている。上記回路ブロックのうち、出力側となるＣＰＵブロック１１には、伝送しようとするデータを、データの変化の量が、より一様になるように、予め定められた符号化方法で符号化して、上記データバス２２の信号線２１ａへ出力する符号化回路４１が設けられ、入力側となるコプロセッサブロック１２には、上記信号線２１ａを介して伝送される符号化されたデータを復号する復号回路４２が設けられている。【選択図】  図１
2006279868.tif 000002
【特許請求の範囲】
【請求項１】
複数の回路ブロックと、これらの回路ブロック間を互いに接続する内部の信号線とを有する半導体装置において、
上記回路ブロックのうち、出力側となる回路ブロックには、伝送しようとするデータを、データの変化の量が、より一様になるように、予め定められた符号化方法で符号化して、上記信号線へ出力する符号化回路が設けられ、
上記回路ブロックのうち、入力側となる回路ブロックには、上記信号線を介して伝送される符号化されたデータを復号する復号回路が設けられていることを特徴とする半導体装置。
【請求項２】
上記符号化回路は、伝送しようとするデータをマンチェスター符号化して出力することを特徴とする請求項１記載の半導体装置。
【請求項３】
上記符号化回路には、伝送しようとするデータとクロック信号とを、排他的論理和、または、その否定演算を行う論理回路が設けられていることを特徴とする請求項２記載の半導体装置。
【請求項４】
上記復号回路には、上記信号線からのデータ信号と、上記クロック信号と同期したクロック信号との排他的論理和、または、その否定演算を行う論理回路が設けられていることを特徴とする請求項３記載の半導体装置。
【請求項５】
上記入力側および出力側の回路ブロックの一方は、中央演算装置ブロックであり、他方は、暗号演算処理を行うコプロセッサブロックであることを特徴とする請求項１記載の半導体装置。
【請求項６】
上記信号線は、各回路ブロックをバス接続するバスを構成する信号線であることを特徴とする請求項１記載の半導体装置。
【請求項７】
上記出力側となる回路ブロックには、相補型の回路からなり、上記信号線を駆動する駆動回路を備えていることを特徴とする請求項１記載の半導体装置。
【請求項８】
請求項１〜７のいずれか１項に記載の半導体装置を備えるＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内部の信号線を介して各回路ブロック間を伝送されるデータが、消費電力解析によって推定される可能性を軽減可能な半導体装置、および、それを備えるＩＣカードに関するものである。
【背景技術】
【０００２】
ＩＣカードは、内部に半導体回路を有し、暗号処理をはじめとして、種々の演算処理を行うことができるため、磁気カードと比較して、より安全に情報を格納することができる。したがって、例えば、秘密情報を格納して個人を認証する用途など、安全であることが求められる用途での普及が見込まれている。
【０００３】
一方で、ＩＣカードの内部へアクセスすることなく、内部の情報を盗み出す攻撃手法も考案されており、これらの１つとして、内部回路の処理に応じて消費電力が変化することに着目し、内部処理と消費電力との相関を取り、消費電力を解析することによって、内部処理を推定する方法も考案されている。なお、この攻撃方法の代表的な手法としては、ＳＰＡ（Simple Power Analysis:単純電力解析）や、ＤＰＡ（Differential Power Analysis:電力差分解析）などが挙げられる。
【０００４】
これらの攻撃方法は、ＩＣカードの内部へ物理的にアクセスしようとする攻撃方法とは異なって、ＩＣカードに対して、外的な操作を全く必要とせずに行われるため、ＩＣカードが攻撃を検出して情報の漏洩を防止する処理を行うことが難しい。
【０００５】
このため、例えば、後述する特許文献１では、ＣＰＵと一緒にオンチップされたコプロセッサユニットが、演算メモリの記憶領域を任意に指定可能なポインタを有する構成が記載されている。
【０００６】
上記構成では、コプロセッサユニットが上記ポインタを有しているため、演算メモリの一の記憶領域から他の記憶領域へのデータ転送を、アドレスポインタの設定値変更によって実現できる。ここで、上記演算メモリの記憶容量は、剰余演算データを複数組格納可能な記憶容量に設定されているので、所定の演算データについて、コプロセッサユニット内で演算メモリから剰余演算器に転送することが可能になる。
【０００７】
これにより、コプロセッサユニットが、ＣＰＵ制御により、演算データを、外部のＲＡＭから逐次受取ったり、コプロセッサユニットが、演算結果を周期的にＣＰＵ制御で外部のＲＡＭへ転送したりする回数を抑制でき、コプロセッサユニットのデータの外部転送を少なくすることができる。この結果、データ転送時間の短縮できると共に、データ転送による電流波形の解析に基づくデータハッキングを抑制できる。
【特許文献１】特開２００４−１２９０３３（公開日：2004年４月２２日）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の構成でも、回数は抑制されているものの、上記演算メモリへ最初のデータおよび暗号鍵を書き込むとき、または、演算が完了して、演算後のデータを読み出すときには、上記ＣＰＵとコプロセッサユニットとの間で、バスを介するデータ伝送が行われる。
【０００９】
したがって、これらの時点の消費電力を解析することによって、ＣＰＵとコプロセッサユニットとの間で伝送されるデータを推定することは不可能ではなく、さらなる安全性の向上が求められている。
【００１０】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、複数の回路ブロックと、これらの回路ブロック間を互いに接続する内部の信号線とを有しているにも拘わらず、上記各回路ブロック間を伝送されるデータが消費電力解析によって推定される可能性を軽減可能な半導体装置、および、それを備えるＩＣカードを実現することにある。
【課題を解決するための手段】
【００１１】
本発明に係る半導体装置は、上記課題を解決するために、複数の回路ブロックと、これらの回路ブロック間を互いに接続する内部の信号線とを有する半導体装置において、上記回路ブロックのうち、出力側となる回路ブロックには、伝送しようとするデータを、データの変化の量が、より一様になるように、予め定められた符号化方法で符号化して、上記信号線へ出力する符号化回路が設けられ、上記回路ブロックのうち、入力側となる回路ブロックには、上記信号線を介して伝送される符号化されたデータを復号する復号回路が設けられていることを特徴としている。
【００１２】
上記構成では、上記信号線を介して、回路ブロック間をデータが伝送される際、当該データは、符号化回路によって符号化された後で伝送される。したがって、上記信号線上には、符号化されたデータ、すなわち、元のデータと比較して、データの変化量が、より一様になったデータが伝送される。
【００１３】
ここで、信号線を介する、回路ブロック間のデータ伝送が行われる場合、回路ブロック内でデータ伝送する場合と比較して、信号線の容量が大きくなるため、より大きな駆動能力の回路で信号線を駆動する必要があり、信号線を伝送されるデータが変化する際には、大きな電力を消費してしまう。したがって、上記信号線にデータをそのまま流す構成では、半導体装置の消費電力は、データに依存して変化してしまう。この結果、上記信号線に直接アクセスできないように半導体装置を構成したとしても、半導体装置の消費電力を解析して、信号線を流れるデータを推定する攻撃が可能になってしまう。
【００１４】
これに対して、上記構成では、元のデータと比較して、データの変化量が、より一様になったデータが伝送されるので、半導体装置の消費電力の、データに対する依存性は減少する。この結果、上記各回路ブロック間を伝送されるデータが、上記消費電力解析によって推定される可能性を軽減できる。
【００１５】
なお、上記構成では、入力側となる回路ブロックに復号回路が設けられているので、出力側となる回路ブロックが、符号化したデータを出力しても、入力側となる回路ブロックは、何ら支障なく、符号化前のデータ（元のデータ）を把握でき、何ら支障なく、上記各回路ブロック間のデータ伝送を行うことができる。
【００１６】
また、上記構成に加えて、上記符号化回路は、伝送しようとするデータをマンチェスター符号化して出力してもよい。さらに、上記構成に加えて、上記符号化回路には、伝送しようとするデータとクロック信号とを、排他的論理和、または、その否定演算を行う論理回路が設けられていてもよい。また、上記構成に加えて、上記復号回路には、上記信号線からのデータ信号と、上記クロック信号と同期したクロック信号との排他的論理和、または、その否定演算を行う論理回路が設けられていてもよい。
【００１７】
当該構成によれば、１ビットのデータが、マンチェスター符号化によって符号化され、”０”は、”０１”に、”１”は、”１０”に符号化される。これにより、各データビット中には、必ず信号変化が起こるため、消費電力の変化もより一様になる。この結果、上記各回路ブロック間を伝送されるデータが、上記消費電力解析によって推定される可能性をさらに軽減できる。
【００１８】
さらに、マンチェスター符号化によって符号化する符号化回路は、上記の論理回路によって実現できるため、クロックサイクルを消費せず、しかも、簡単な回路構成の符号化回路を実現できる。また、その復号回路は、上記の論理回路によって実現できるため、例えば、ＰＬＬ回路などによって同期を取る回路とは異なって、符号化されたデータから同期を取る必要がなく、同期検出回路を省略できる。この結果、復号回路も比較的簡単な回路構成で実現できる。
【００１９】
また、上記構成に加えて、上記入力側および出力側の回路ブロックの一方は、中央演算装置ブロックであり、他方は、暗号演算処理を行うコプロセッサブロックであってもよい。
【００２０】
ここで、中央演算装置ブロックと、暗号演算処理を行うコプロセッサブロックとの間は、例えば、暗号化のためのパラメータや処理対象のデータなど、重要なデータが伝送されることが多く、そのデータが第三者に推定されると、当該第三者に暗号化したデータが傍聴されたり、半導体装置と同一の処理を実施可能な半導体装置が不正に製造されて、第三者が正規のユーザに成りすましたりできるようになってしまう。
【００２１】
これに対して、上記構成では、上記中央演算装置ブロックとコプロセッサブロックとの間を伝送されるデータが、上記消費電力解析によって推定される可能性が軽減されている。この結果、上記暗号化したデータが不所望に傍聴される可能性や成りすましが行われる可能性を低減できる。
【００２２】
また、上記構成に加えて、上記信号線は、各回路ブロックをバス接続するバスを構成する信号線であってもよい。
【００２３】
ここで、上記信号線がバス接続されている構成では、各回路ブロック間を接続するための信号線の総数を削減できる一方で、信号線の容量負荷が大きくなりがちである。したがって、上記信号線上に、そのままのデータを出力すると、当該データに依存して、より大きな消費電力の変動が発生してしまう。この結果、当該構成では、上記消費電力解析による推定が行いやすい。
【００２４】
これに対して、上記構成では、信号線を流れるデータが符号化されているので、各回路ブロック間をバス接続しているにも拘わらず、上記各回路ブロック間を伝送されるデータが、上記消費電力解析によって推定される可能性を軽減できる。
【００２５】
さらに、上記構成に加えて、上記出力側となる回路ブロックには、相補型の回路からなり、上記信号線を駆動する駆動回路を備えていてもよい。
【００２６】
ここで、相補型の回路からなる駆動回路によって、信号線を駆動している場合、比較的大きな駆動電流を比較的簡単な回路構成で得ることができる一方で、信号線を流れるデータが変化する際に、当該相補型の回路の貫通電流によって、より大きな電力が消費される。したがって、上記信号線上に、そのままのデータを出力すると、当該データに依存して、より大きな消費電力の変動が発生してしまう。この結果、当該構成では、上記消費電力解析による推定が行いやすい。
【００２７】
これに対して、上記構成では、信号線を流れるデータが符号化されているので、上記出力側となる回路ブロックに相補型の回路からなる駆動回路が設けられているにも拘わらず、上記各回路ブロック間を伝送されるデータが、上記消費電力解析によって推定される可能性を軽減できる。
【００２８】
また、本発明に係るＩＣカードは、上記課題を解決するために、上記いずれかの半導体装置を備えていることを特徴としている。ここで、上記構成の半導体装置は、上記各回路ブロック間を伝送されるデータが、上記消費電力解析によって推定される可能性を軽減できる。したがって、より安全なＩＣカードを実現できる。
【発明の効果】
【００２９】
本発明によれば、元のデータと比較して、データの変化量が、より一様になるように符号化された後で、データが伝送されるので、半導体装置の消費電力の、データに対する依存性を減少させることができ、上記各回路ブロック間を伝送されるデータが、上記消費電力解析によって推定される可能性を軽減できる。この結果、ＩＣカードをはじめとして、種々の用途に使用される半導体装置として、広く好適に用いることができる。
【発明を実施するための最良の形態】
【００３０】
本発明の一実施形態について図１ないし図７に基づいて説明すると以下の通りである。すなわち、本実施形態に係る半導体装置は、消費電力のデータ依存性を低減できるため、例えば、暗号化または暗号解読処理を行う装置として、好適に使用できる。なお、当該装置を含む装置としては、ＩＣカードをはじめとして、種々の装置が挙げられるが、以下では、当該装置が、ＩＣカードである場合を例にして説明する。
【００３１】
すなわち、本実施形態に係るＩＣカード１には、図２に示すように、半導体装置としてのＩＣ（Integrated Circuit）２が設けられており、当該ＩＣ２は、複数の回路ブロック１１〜１４と、それらの間を接続するバスとして、データ信号を伝送するデータバス２１と、アドレス信号および制御信号を伝送するアドレス＆コントロールバス２２とを備えている。
【００３２】
図２の例では、上記各回路ブロックとして、ＩＣ２全体を制御するＣＰＵ（Central Processing Unit ）ブロック１１と、例えば、数値演算や暗号化または符号化処理など、予め定められた定型の処理を行うコプロセッサブロック１２と、ＩＣカード１の外部との入出力を制御するＩＯ回路ブロック１３と、上記各バス２１・２２を介して、これらのブロック１１〜１３によって読み書きされるメモリブロック１４とが設けられている。また、上記ＣＰＵブロック１１は、上記各バス２１・２２を介して、上記コプロセッサブロック１２およびＩＯ回路ブロック１３を読み書きすることもでき、例えば、暗号演算などの処理の開始や、処理のためのデータ（パラメータや処理対象）をコプロセッサブロック１２へ書き込んで、コプロセッサブロック１２へ処理を指示したり、入出力の開始や、入出力のためのパラメータ（例えば、入出力すべきデータのアドレス範囲など）をＩＯ回路ブロック１３へ書き込んで、ＩＯ回路ブロック１３へ入出力を指示したりできる。なお、上記コプロセッサブロック１２の処理が暗号演算の場合、上記データとしては、鍵データや、平文などが挙げられる。また、処理後に読み出されるデータとしては、例えば、復号化された暗号文などが挙げられる。
【００３３】
また、上記ＩＣカード１は、例えば、メモリブロック１４として、上記空気に触れるとデータが破壊されるメモリ回路を採用したり、例えば、プローブなど、通常とは異なる端子が接続されたことを検出して、データを破壊する回路などを設けたりして、ＩＣカード１内部へのアクセスを防止している。
【００３４】
さらに、上記コプロセッサブロック１２では、演算処理のアルゴリズムが、消費電力と内部処理との相関を抑制するように設定されている。一例として、コプロセッサブロック１２は、演算メモリの記憶領域を任意に指定可能なポインタを備えている（いずれも図示せず）。当該構成では、コプロセッサブロック１２が上記ポインタを有しているため、演算メモリの、ある記憶領域から他の記憶領域へのデータ転送を、アドレスポインタの設定値変更によって実現できる。また、上記演算メモリの記憶容量は、剰余演算データを複数組格納可能な記憶容量に設定されている。この結果、所定の演算データについて、コプロセッサブロック１２内で演算メモリから剰余演算器に転送できる。
【００３５】
これにより、コプロセッサブロック１２が、ＣＰＵブロック１１の制御によって、演算データを、外部のメモリブロック１４から逐次受取ったり、コプロセッサブロック１２が、ＣＰＵブロック１１の制御に従って、演算結果を周期的に外部のメモリブロック１４へ転送したりする回数を抑制でき、コプロセッサブロック１２のデータの外部転送を削減している。この結果、データ転送時間の短縮できると共に、データ転送による電流波形の解析に基づくデータハッキングを抑制できる。
【００３６】
ここで、上記各回路ブロック１１〜１４間のデータ伝送は、各回路ブロック１１〜１４内のデータ伝送と比較すると、伝送距離が長くなっているため、データを伝送する信号線の負荷が大きくなっている。したがって、回路ブロック１１〜１４の内部回路と、信号線（上記のバス２１・２２など）との間には、図１に示すように、出力装置としての出力バッファ回路（駆動回路）３１、あるいは、入力装置としての入力バッファ回路３２が設けられている。なお、出力バッファ回路３１は、各回路ブロック１１〜１４のうちの出力側の回路ブロック（図の例では、ＣＰＵブロック１１）、より詳細には、データを出力する内部回路３３と、各バス２１・２２を構成する信号線（例えば、２１ａ）との間に設けられている。また、入力バッファ回路３２は、入力側の回路ブロック（図の例では、コプロセッサブロック１２）、より詳細には、バス２１・２２を構成する信号線（例えば、２１ａ）と、内部回路３４との間に設けられている。
【００３７】
上記出力バッファ回路３１の出力段は、例えば、ＣＭＯＳ構造の回路、あるいは、相補動作型のエミッタフォロワ回路など、相補型の回路によって構成されており、当該出力バッファ回路３１の駆動能力は、内部回路３３・３４の駆動能力と比較して、上記信号線２１ａを介したデータ伝送に充分な程度に大きく設定されている。また、上記入力バッファ回路３２の回路構成も、信号線２１ａを介して伝送されるため、信号の波形が鈍ったとしても、正しく、信号の値を弁別できるように、時定数等が設定されている。
【００３８】
これにより、各回路ブロック１１〜１４同士の間の距離が、それぞれの内部回路同士より長くなっていたとしても、各回路ブロック１１〜１４は、何ら支障なく、データを伝送できる。
【００３９】
なお、本実施形態では、各回路ブロック１１〜１４が互いにバス接続されており、各信号線（２１ａなど）に、全回路ブロック１１〜１４が接続されているため、信号線２１ａが、各回路ブロック１１〜１４を１対１に接続する構成と比較して、負荷が高くなっている。したがって、上記出力バッファ回路３１の駆動能力も、１対１の場合よりも大きく設定されている。
【００４０】
ただし、上記のように、出力バッファ回路３１および入力バッファ回路３２が構成されているため、各回路ブロック１１〜１４の内部回路同士でデータ伝送する場合と比較して、各回路ブロック１１〜１４間のデータ伝送する場合、より大きな消費電力が必要になる。また、後述する比較例のように、伝送すべきデータを、そのまま信号線２１ａ上を伝送すると、消費電力が、伝送されるデータに依存して変化してしまう。
【００４１】
これに対して、本実施形態に係るＩＣカード１では、上記出力側の内部回路３３からデータバス２１の信号線２１ａまでの間（図の例では、内部回路３３と出力バッファ回路３１との間）に、データ変化の量（何ビットのデータが変化したか）がより均一になるような（より好ましくは、データ変化の量が均一になるような）符号化方法で符号化する符号化回路４１が設けられている。また、上記信号線２１ａから上記入力側の内部回路３４までの間（図の例では、入力バッファ回路３２と内部回路３４との間）に、上記符号化回路４１によって符号化されたデータを復号する復号回路４２が設けられている。
【００４２】
本実施形態では、上記符号化方法として、例えば、クロック信号を用いたマンチェスター符号化方法が採用されており、上記符号化回路４１は、内部回路３３からのデータＤ１と、クロック信号ＣＬＫとの排他的論理和の否定を算出して、上記出力バッファ回路３１へ出力するＸＮＯＲ回路５１により実現されている。これにより、上記データＤ１に代えて、符号化データＤａが、データバス２１の信号線２１ａ上を伝送される。
【００４３】
また、上記復号回路４２は、入力バッファ回路３２からのデータＤａとクロック信号ＣＬＫとの排他的論理和の否定を算出して出力するＸＮＯＲ回路６１と、上記クロック信号ＣＬＫの示すタイミングで、ＸＮＯＲ回路６１の出力Ｄｂを保持するラッチ回路６２とを備えている。本実施形態では、ラッチ回路６２が、Ｄ−ＦＦ（フリップフロップ）によって実現されており、クロック信号ＣＬＫの立ち上がりタイミングで、上記出力Ｄｂをラッチしている。
【００４４】
上記構成では、出力側の内部回路３３が図３に示すようなデータＤ１（例えば、１、０、１、１、１、０、０）を伝送しようとする場合、符号化回路４１は、上述した回路構成によって、当該データＤ１をデータＤａに符号化する。これにより、データバス２１の信号線２１ａ上には、符号化後のデータＤａが出力される。一方、復号回路４２のＸＮＯＲ回路６１は、図３に示すように、データＤａを復号して、データＤｂを生成し、ラッチ回路６２が、データＤｂを波形調整して、そのタイミングをクロック信号ＣＬＫに合わせる。これにより、復号回路４２は、位相が１クロック周期分遅れている以外は、内部回路３３が伝送しようとしたデータＤ１と同一内容のデータ信号Ｄ２（この例では、１、０、１、１、１、０、０）を出力できる。なお、図では、説明の便宜上、各回路４１・４２による遅延や信号線２１ａの伝送遅延などは省略している。
【００４５】
これにより、上記信号線２１ａには、データＤ１とは異なるデータＤａが伝送されているにも拘わらず、入力側の内部回路３４には、上記出力側の内部回路３３が伝送しようとしたデータＤ２（＝Ｄ１）が入力される。この結果、内部回路３３から内部回路３４には、正しくデータＤ１（＝Ｄ２）が伝送されている。
【００４６】
ここで、比較例として、図４に示すように、上記符号化回路４１および復号回路４２を省略した構成では、図５に示すように、伝送しようとするデータＤが、そのまま信号線２１ａを伝送されるため、ＩＣカード１の消費電力は、伝送すべきデータＤに応じて変化してしまう。
【００４７】
より詳細には、ｔ１〜ｔ２の期間、および、ｔ３〜ｔ４の期間は、伝送すべきデータＤが変化しているため、上記両バッファ回路３１・３２の消費電力は、比較的高いレベルに保たれ、それに伴なって、ＩＣカード１の消費電力も、比較的高いレベルＰ１に保たれている。一方、ｔ２〜ｔ３の期間は、伝送すべきデータＤが変化していないため、上記両バッファ回路３１・３２の消費電力は、比較的低いレベルに抑えられ、それに伴なって、ＩＣカード１の消費電力も、比較的低いレベルＰ２に保たれている。
【００４８】
この結果、上記データバス２１がＩＣカード１の内部に設けられ、外部からは、当該データバス２１の信号に直接はアクセスできないようにＩＣカード１が構成されているにも拘わらず、上記のように、ＩＣカード１の消費電力がデータＤに依存して変化するため、ＩＣカード１の消費電力解析によって、データバス２１を伝送されるデータＤが推定される虞れがある。
【００４９】
これに対して、本実施形態では、上記符号化回路４１および復号回路４２が設けられているため、図３に示すように、データＤ１の値、および、データＤ１が変化するか否かに拘わらず、符号化後のデータＤａは、頻繁に変化し、クロック周期内で、必ず１回は、変化する。
【００５０】
これにより、上記両内部回路３３・３４間を図５と同じデータＤ１（＝Ｄ）が伝送されているにも拘わらず、上記両バッファ回路３１・３２の消費電力は、常に略一定のレベルに保たれ、それに伴なって、ＩＣカード１の消費電力も、略一定のレベルＰ３に保たれている。
【００５１】
例えば、図５では、ｔ１〜ｔ２の期間およびｔ３〜ｔ４の期間の消費電力Ｐ１と、ｔ２〜ｔ３の期間の消費電力Ｐ２とは互いに異なっていたのに対して、本実施形態では、ｔ２〜ｔ３の期間中も、データＤａが変化している。したがって、図６に示すように、ＩＣカード１の消費電力は、ｔ２〜ｔ３の間も、比較的高いレベルに保たれ、ＩＣカード１の消費電力は、ｔ１〜ｔ４の間、略一定のレベルＰ３に固定されている。
【００５２】
この結果、図４の構成とは異なって、データ転送による消費電力のデータ依存性を低減させることができ、消費電力波形とデータとの相関を取ることを困難にできるので、ＩＣカード１の消費電力解析による上記データＤ１の推定（例えば、ＤＰＡなどによる推定）を困難にできる。これにより、消費電力解析による内部動作を暴露する攻撃から、内部の情報を守ることができ、より安全なＩＣカード１を実現できる。
【００５３】
一例として、コプロセッサブロック１２が暗号演算を行う場合の動作を、図７に基づいて説明すると、以下の通りである。なお、暗号演算方式としては、例えば、ＲＳＡ暗号方式、ＤＥＳ暗号方式など、種々の方式を採用できるが、以下では、一例として、コプロセッサブロック１２がＲＳＡ暗号方式の暗号演算を行う場合について説明する。
【００５４】
すなわち、図７に示すステップ１（以下では、Ｓ１のように略称する）において、コプロセッサブロック１２は、暗号演算の前処理として、データバス２１を介して、ＣＰＵブロック１１から暗号演算のためのパラメータとして、Ａ、Ｂ、Ｎおよびｉを受け取って、図示しないレジスタなどの記憶装置に格納する。
【００５５】
次に、コプロセッサブロック１２は、Ｓ２、Ｓ３およびＳ４において、それぞれ、Ａ＝Ａ2 ｍｏｄ  Ｎ、Ａ＝（Ａ・Ｂ）ｍｏｄ  Ｎ、ｉ＝ｉ−１の演算を行う。さらに、コプロセッサブロック１２は、Ｓ５において、ｉが０か否かを判定し、ｉが０になるまでの間（当該Ｓ５にてNOの場合）、上記Ｓ２からＳ５の処理を繰り返す。
【００５６】
一方、ｉが０になると（上記Ｓ５にてYES の場合）、コプロセッサブロック１２は、Ｓ６において、暗号演算の後処理として、例えば、演算結果Ａを、上記データバス２１を介して、ＣＰＵブロック１１に伝えたり、メモリブロック１４に書き込むなどの処理を行う。これにより、コプロセッサブロック１２は、与えられたデータを暗号化することができる。
【００５７】
ところが、この場合、上記Ｓ１において、上記データバス２１上を、暗号演算のパラメータとして、Ａ、Ｂ、Ｎおよびｉが伝送されているため、上述した消費電力解析によって、これらのデータが推定されると、ＩＣカード１が外部に暗号化されたデータを出力したとしても、正規の通信相手とは異なる第三者によって、元のデータ（平文）が推測される虞れがある。また、上記パラメータが判明すると、ＩＣカード１と同一の応答を行う不正なＩＣカードを作成できるので、第三者がＩＣカード１の代わりに当該不正なＩＣカードを利用して、正規のＩＣカード１のユーザに成りすましたりすることができる。
【００５８】
これに対して、本実施形態の構成では、上述したように消費電力解析による上記各パラメータの推定を防止できる。この結果、第三者による上記平文の推測（傍聴）や成りすましを防止でき、より安全なＩＣカード１を実現できる。
【００５９】
なお、上記では、符号化回路４１および復号回路４２が、排他的論理和の否定演算を行う論理回路として、ＸＮＯＲ回路５１・６１を備えている場合を例示したが、これらの回路５１・６１に代えて、各回路の出力論理を反転して、排他的論理和を出力するＸＮＯＲ回路を設けても同様の効果が得られる。
【００６０】
また、上記では、コプロセッサブロック１２が演算メモリの記憶領域を任意に指定可能なポインタを備えている場合について説明したが、これに限るものではない。暗号演算処理を行うコプロセッサブロックであれば、上記のように符号化することによって、各回路ブロック間に伝送されるデータの変化に起因する消費電力の変化を抑制できるので、同様の効果が得られる。
【００６１】
ただし、本実施形態のように、コプロセッサブロック１２における演算処理のアルゴリズムが、消費電力と内部処理との相関を抑制するように設定されていれば、データの変化に起因する消費電力の変化だけではなく、内部処理の変化に起因する消費電力の変化も防止できるので、さらに安全性を向上できる。
【００６２】
さらに、上記では、ＩＣカード１内部へのアクセスを防止するための構成を備えている場合を例にして説明したが、これに限るものではない。ただし、本実施形態のように、ＩＣカード１内部へのアクセスを防止するための構成を備え、耐タンパ性を有していれば、消費電力解析による攻撃だけではなく、ＩＣカード１内部へアクセスすることによる攻撃にも対処できるので、さらに安全性を向上できる。
【００６３】
なお、上記では、符号化回路４１がマンチェスター符号化する場合を例にして説明したが、これに限るものではない。例えば、ＣＭＩ符号化方法、具体的には、データが０であれば、０を１に変更し、１であれば、出力データが０または１になるように符号化する方法など、他の符号化方法を採用してもよい。伝送しようとするデータを、データの変化の量が、より一様になるように符号化する方法であれば、同様の効果が得られる。
【００６４】
ただし、本実施形態のように、マンチェスター符号化する場合には、各データビット中には、必ず信号変化が起こるため、消費電力の変化もより一様になる。この結果、上記各回路ブロック間を伝送されるデータが、上記消費電力解析によって推定される可能性をさらに軽減できる。
【産業上の利用可能性】
【００６５】
本発明によれば、元のデータと比較して、データの変化量が、より一様になるように符号化された後で、データが伝送されるので、半導体装置の消費電力の、データに対する依存性を減少させることができ、上記各回路ブロック間を伝送されるデータが、上記消費電力解析によって推定される可能性を軽減できる。この結果、ＩＣカードをはじめとして、種々の用途に使用される半導体装置として、広く好適に用いることができる。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施形態を示すものであり、ＩＣカードのデータバス近傍の要部構成を示す回路図である。
【図２】上記ＩＣカードの要部構成を示すブロック図である。
【図３】上記ＩＣカードの各部の信号波形を示す波形図である。
【図４】比較例と示すものであり、上記ＩＣカードから符号化回路および復号回路を削除した構成において、データバス近傍の要部構成を示す回路図である。
【図５】上記データバスを伝送される信号波形とＩＣカードの消費電力との時間変化を示す波形図である。
【図６】上記データバスを伝送される信号波形とＩＣカードの消費電力との時間変化を示す波形図である。
【図７】上記ＩＣカードに設けられたコプロセッサブロックの動作を示すフローチャートである。
【符号の説明】
【００６７】
１    ＩＣカード
２    ＩＣ（半導体装置）
１１    ＣＰＵブロック（回路ブロック、中央演算装置ブロック）
１２    コプロセッサブロック（回路ブロック）
１３    ＩＯ回路ブロック（回路ブロック）
１４    メモリブロック（回路ブロック）
２１    データバス（バス）
２１ａ  信号線
３１    出力バッファ回路（駆動回路）
４１    符号化回路
４２    復号回路
【図１】
2006279868.tif 000003
【図２】
2006279868.tif 000004
【図３】
2006279868.tif 000005
【図４】
2006279868.tif 000006
【図５】
2006279868.tif 000007
【図６】
2006279868.tif 000008
【図７】
2006279868.tif 000009