(58)【調査した分野】(Int.Cl.,DB名)
請求項1において、前記複数のICチップは同一のレイアウトを有し、互いに±90°または180°回転され、及び/または、互いの素子面又は基板面を対向させて積層される、
半導体装置。
【発明を実施するための形態】
【0016】
1.実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0017】
〔1〕<多重化&素子面が他チップで被覆されたチップで比較検証>
本願において開示される代表的な実施の形態は、複数のICチップ(1〜3;4〜6;7_1〜7_3)が積層されて、暗号計算を含むデータ処理を実行可能な半導体装置(100)であって、以下のように構成される。
【0018】
複数のICチップは、同一の暗号計算(50_1〜50_3)を並列に実行して(S1)それぞれの計算結果(51_1〜51_3)を算出する。
【0019】
前記複数のICチップのうちの1個のICチップ(2;5;7_2)は、他のICチップによって素子面が被覆され、且つ、前記複数のICチップに対応する前記複数の計算結果を互いに比較し(S2,S3)、その比較結果に基づいて後続のデータ処理(S4,S5)の内容を制御する(53)。
【0020】
これにより、平準化技術の採用が適切でない高速な暗号計算を含むデータ処理において、半導体チップにおける機能ブロックのレイアウトを知った上での特定箇所への攻撃、例えばマイクロプロービングやレーザー照射によるフォールトインジェクション、電磁波解析等に対する耐タンパ性を向上することができる。
【0021】
〔2〕<比較検証を行うICチップの表裏両面を他のチップが覆う積層>
項1において、前記1個のICチップ(2;5;7_2)の前記素子面とは逆の面が、さらに他のICチップによって被覆されるように積層される。
【0022】
これにより、比較検証を行うICチップは、裏面からのフォールトインジェクションに対する耐性も高められる。
【0023】
〔3〕<セキュリティ最優先の対応処理>
項2において、前記1個のICチップは、前記複数の計算結果のうち、少なくとも1個が他の計算結果と異なるとき、攻撃に対応する処理を開始する。
【0024】
これにより、セキュリティを最も優先する対応処理が実行される。
【0025】
〔4〕<故障と攻撃を区別する対応処理>
項2において、前記1個のICチップは、前記複数の計算結果のうち、少なくとも1個が他の計算結果と異なるとき、当該異なる計算結果を出力したICチップに再度前記暗号計算を実行させる。再計算結果が当初の計算結果と同じ値のときには、故障に対応する処理を開始し、再計算結果が当初の計算結果と異なる値のときには、攻撃に対応する処理を開始する。
【0026】
これにより、故障と攻撃とを区別して、それぞれに適した対応処理が実行される。例えばソフトエラーを攻撃と誤って判断して、本来は無用な攻撃対応処理が実行されるのを防止することができる。
【0027】
〔5〕<中央層のチップについて、故障と攻撃とを区別する対応処理>
項2において、前記1個のICチップは、自身の計算結果が他の計算結果と異なるとき、再度前記暗号計算を実行する。当該ICチップは、再計算結果が当初の計算結果と同じ値のときには、故障に対応する処理を開始し、再計算結果が当初の計算結果と異なる値のときには、攻撃に対応する処理を開始する。当該ICチップは、前記複数の計算結果のうち、自身以外の少なくとも1個のICチップによる計算結果が他の計算結果と異なるとき、攻撃に対応する処理を開始する。
【0028】
これにより、故障と攻撃とを区別して、それぞれに適した対応処理が実行される。例えばソフトエラーを攻撃と誤って判断して、本来は無用な攻撃対応処理が実行されるのを防止することができる。
【0029】
〔6〕<同一機能で異なるレイアウトのチップを積層>
項1から項5のうちのいずれか1項において、前記複数のICチップは、同一の回路構成を有し、前記暗号計算を実行する回路の配置が、平面視で互いに異なる位置にレイアウトされる。
【0030】
これにより、積層された複数チップに対して一括して行う攻撃に対する耐タンパ性を向上させることができる。同一機能のチップ内の配置(レイアウト)がずれて積層されるため、積層構造を貫通する攻撃による影響が、異なる機能を実行する回路が実装される箇所に及ぶので、多重化と比較検証により、攻撃を検知することができるからである。
【0031】
〔7〕<同一レイアウトのチップを回転and/or裏返して積層>
項1から項5のうちのいずれか1項において、前記複数のICチップは同一のレイアウトを有し、互いに±90°または180°回転され、及び/または、互いの素子面又は基板面を対向させて積層される。
【0032】
これにより、項6と同様に、積層された複数チップに対して一括して行う攻撃に対する耐タンパ性を向上させることができ、さらに、チップコストを低減することができる。ここで、「±90°」、「180°」は、数学的厳密な当該角度を意味するものではなく、工業的に許容される誤差を含む角度である。
【0033】
〔8〕<回転and/or線対称の電極配置>
項7において、前記複数のICチップのそれぞれは、それぞれに機能を有する複数の端子(21〜25)を有し、同じ機能の端子が、同一の点を中心として、±90°または180°回転された位置、或いは、ICチップの辺に平行な直線を中心(軸)とした対称の位置のうちの少なくとも1ヵ所に配置される。
【0034】
これにより、複数のICチップはインターポーザの介在させることなく互いにTSVで接続することができる。ここで、「同一の点」、角度「±90°」、「180°」、「平行な直線」、「中心(軸)」、「対称」とは、それぞれの用語が持つ数学的に厳密な意味を規定するものではなく、それぞれ工業的に許容される誤差を含む。即ち、ICチップが±90°または180°回転されて積層されたとき、または、裏返して積層されたときに、同一の機能を持つ端子どうしが電気的に接続され、その導通が保証できる範囲でのずれは許容される。
【0035】
〔9〕<VDD/GND/IO/CLOCK/RESET端子>
項8において、前記複数の端子は、複数の電源端子(21)と複数の接地端子(22)と1個又は複数のデータ入出力端子(23)と1個又は複数のクロック端子(24)と1個又は複数のリセット端子(25)を含む。
【0036】
これにより、各チップは必要最小限の端子で接続される。
【0037】
〔10〕<TSV接続>
項1から項9のうちのいずれか1項において、前記複数のICチップはそれぞれ基板を貫通する電極を有し、前記電極どうしが互いに電気的に接続される。
【0038】
これにより、各チップはTSVで互いに接続される。インターポーザを介在させてもよい。
【0039】
〔11〕<TSV積層された3チップ多重化&中央層のチップで比較検証>
本願において開示される代表的な実施の形態は、それぞれが基板を貫通するTSV電極を有する3個のICチップ(1〜3;4〜6;7_1〜7_3)が積層される、半導体装置(100)であって、以下のように構成される。
【0040】
第1のICチップ(3;6;7_3)上に第2のICチップ(2;5;7_2)がそれぞれのTSV電極が互いに接続されて積層され、前記第2のICチップ上に第3のICチップ(1;4;7_1)がそれぞれのTSV電極が互いに接続されて積層される。
【0041】
前記第1、第2及び第3のICチップは同一のデータ処理をそれぞれ実行してそれぞれの処理結果を算出し、前記第2のICチップは、前記第1、第2及び第3のICチップに対応する処理結果を互いに比較し、その比較結果に基づいて後続のデータ処理の内容を制御する(53)。
【0042】
これにより、平準化技術の採用が適切でない高速な暗号計算を含むデータ処理において、半導体チップにおける機能ブロックのレイアウトを知った上での特定箇所への攻撃、例えばマイクロプロービングやレーザー照射によるフォールトインジェクション、電磁波解析等に対する耐タンパ性を向上することができる。第1と第3のICチップ(3と1;6と3;7_3と7_1)に挟まれる第2のICチップ(2;5;7_2)は、素子面と基板面の両面が、積層される他のICチップによって覆われているので、特定の機能ブロックを狙った攻撃を受けたときには、それを覆う第1と第3のICチップのうちの少なくとも一方にも影響が及ぶため、処理結果の比較検証によって攻撃を検知することができる。
【0043】
〔12〕<少なくとも2チップが並列に実行>
項11において、前記第1、第2及び第3のICチップは、前記同一のデータ処理を少なくとも2チップずつ並列に実行する。
【0044】
これにより、処理負荷が分散され、消費電力解析を困難にすることができる。
【0045】
〔13〕<AES暗号を構成するラウンドごとに多重化を設定>
項12において、前記データ処理は、暗号処理を構成する一連のラウンドのうちの一部のラウンドである。
【0046】
これにより、一連のラウンドで構成される、例えばAES暗号の処理において、多重化による保護をラウンドごとに設定することができる。
【0047】
〔14〕<暗号処理は多重化/通常処理は並列処理による高速化>
項11において、前記第1、第2及び第3のICチップは、前記データ処理が暗号処理(50)のときには、同一の暗号処理(50_1〜50_3)をそれぞれ実行してそれぞれの処理結果(51_1〜51_3)を算出し、前記第2のICチップは、前記第1、第2及び第3のICチップに対応する処理結果を互いに比較(53)する。前記第1、第2及び第3のICチップは、前記データ処理が暗号処理以外のときには、当該データ処理をそれぞれ異なるデータ処理に分けて並列に実行する。
【0048】
これにより、暗号化処理に対する耐タンパ性を向上させることができる一方、通常処理についての処理性能を並列処理によって向上することができる。
【0049】
〔15〕<最も高い耐タンパ性が求められる処理を中間層のICチップに割り当て>
本願において開示される代表的な実施の形態は、複数のICチップ(1〜3;4〜6;7_1〜7_3;8〜10;11〜13)が積層されて、暗号計算を含むデータ処理を実行可能な半導体装置(100)であって、以下のように構成される。
【0050】
前記複数のICチップのうち、他のICチップによって素子面が被覆される1個の中間層のICチップ(2;5;7_2;9;12)に、前記データ処理に含まれる処理のうち最も高い耐タンパ性が求められる処理を実行させる。
【0051】
これにより、最も高い耐タンパ性が要求される処理が、外部からの攻撃から守られる。中間層のチップはその素子面が他のチップにより覆われているので、半導体チップにおける機能ブロックのレイアウトを知った上での特定箇所への攻撃、例えばマイクロプロービングやレーザー照射によるフォールトインジェクション、電磁波解析等に対する耐タンパ性を向上することができる。
【0052】
〔16〕<複数チップで多重化&中間層のICチップで比較検証>
項15において、前記複数のICチップは、同一の暗号計算(50_1〜50_3)を並列に実行してそれぞれの計算結果(51_1〜51_3)を算出し、前記中間層のICチップは、前記複数のICチップに対応する前記複数の計算結果を互いに比較し(S2,S3)、その比較結果に基づいて後続のデータ処理の内容(S4,S5)を制御する(53)。
【0053】
これにより、多重系において最も高い耐タンパ性が求められる、並列処理の結果を比較検証する処理が、最もセキュリティの高い中間層のICチップに割り当てられ、半導体装置全体としての耐タンパ性を向上することができる。
【0054】
〔17〕<中間層のICチップで秘密鍵演算>
項15において、前記データ処理は前記暗号計算を含み、前記中間層のICチップに前記暗号計算を実行させ、他のICチップには他の処理を実行させる。
【0055】
これにより、最も高い耐タンパ性が求められる暗号計算が、最もセキュリティの高い中間層のICチップに割り当てられ、半導体装置全体としての耐タンパ性を向上することができる。
【0056】
〔18〕<中間層のICチップで署名の処理>
項15において、前記データ処理は前記暗号計算として署名の処理と証明書の認証処理とを含み、前記中間層のICチップに前記署名の処理を実行させ、他のICチップには前記証明書の認証処理を含む他の処理を実行させる。
【0057】
これにより、最も高い耐タンパ性が求められる署名の処理が、最もセキュリティの高い中間層のICチップに割り当てられ、半導体装置全体としての耐タンパ性を向上することができる、一方、高速性が要求される証明書の認証処理が他のICチップに割り当てられる。暗号処理において署名は秘密鍵を用いるため秘匿度が高いのに対して、証明書の認証は一般に公開鍵を用いるため情報の秘匿度が比較的低い一方、証明書の発行数の増加に伴って高速な処理が求められる。
【0058】
〔19〕<中間層のICチップの表裏両面を他のチップが積層>
項15から項18のうちのいずれか1項において、前記中間層のICチップの前記素子面とは逆の面が、さらに他のICチップによって被覆されるように積層される。
【0059】
これにより、中間層のICチップは、裏面からのフォールトインジェクションに対する耐性も高められ、複数のICチップの中で最も高い耐タンパ性がさらに高くされる。
【0060】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0061】
〔実施形態1〕<積層チップで並列処理&素子面が覆われたチップで比較検証>
図1は、実施形態1に係る半導体装置100の実装例を示す模式図である。半導体装置100は同一の半導体チップ(ICチップ,Chip_A,Chip_B,Chip_C)1〜3を3層に重ねた構造を取る。ここで使用するICチップChip_A(1),Chip_B(2),Chip_C(3)は、例えば、それぞれがCPU30_1〜30_3とROM31_1〜31_3とRAM32_1〜32_3とを含んで構成されるデバイスである。Chip_C(3)が最も下の層(段)に配置され、その素子面にChip_B(2)が、さらにその素子面にChip_A(1)が、順次積層され、互いにシリコン基板貫通電極(TSV:Through Silicon Via)20によって接続される。特に制限されないが、ICチップChip_A(1),Chip_B(2),Chip_C(3)は、例えば、公知のCMOS(Complementary Metal-Oxide-Semiconductor field effect transistor)LSIの製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【0062】
図2は、半導体装置100を構成する各チップの動作例を示す説明図である。
【0063】
3個のICチップChip_A(1),Chip_B(2),Chip_C(3)は同じ暗号計算を並列処理するように多重化されており、その計算結果は中間層のICチップChip_B(2)で互いに比較検証されることにより、マイクロプロービングやレーザーなどによるフォールトインジェクションを伴う攻撃があったときには、それを検出してその攻撃に対する処理に進む。即ち、ICチップChip_A(1),Chip_B(2),Chip_C(3)は、同一の暗号計算(50_1〜50_3)を並列に実行してそれぞれの計算結果(51_1〜51_3)を算出する。3個のICチップのうちの中間層のChip_B(2)は、3個のICチップChip_A(1),Chip_B(2),Chip_C(3)に対応する計算結果(51_1〜51_3)を比較検証53する、即ち、計算結果(51_1〜51_3)を互いに比較し、その比較結果に基づいて後続のデータ処理(S4,S5)の内容を制御する。なお、全体のタイムマネージメント52は、Chip_B(2)が行うとよい。
【0064】
これにより、平準化技術の採用が適切でない高速な暗号計算を含むデータ処理において、半導体チップにおける機能ブロックのレイアウトを知った上での特定箇所への攻撃、例えばマイクロプロービングやレーザー照射によるフォールトインジェクション、電磁波解析等に対する耐タンパ性を向上することができる。
【0065】
3個のICチップChip_A(1),Chip_B(2),Chip_C(3)は同じ暗号計算を並列処理するように多重化されているので、本来、同じ計算結果を出力するはずである。マイクロプロービングやレーザーなどによるフォールトインジェクションを伴う攻撃があったときには、そのうちのいくつかが、誤った計算結果を出力する。3個のICチップを使って3重化すると、その3個のICチップ全てに同時に同じ故障を注入するフォールトインジェクションは実際上不可能に近いので、3つの計算結果を互いに比較することにより、攻撃があったことを検知することができ、攻撃に対処するために適切な処理に移行することができる。しかしながら、3個の計算結果を比較検証する回路に直接故障が注入されると、これを外部からの攻撃として検出することが困難になる場合がある。そこで、本実施形態では、比較検証の機能を中間層のICチップChip_B(2)に割り当てる。中間層のICチップChip_B(2)が3チップのうちで最も高い耐タンパ性を持っているからである。中間層のICチップChip_B(2)は、素子面を上層のICチップChip_A(1)で覆われ、基板面を下層のICチップChip_C(3)で覆われている。そのため、中間層のICチップChip_B(2)に対するマイクロプロービングやレーザー照射によるフォールトインジェクションは、攻撃が表面からであれば上層のICチップChip_A(1)に対しても、又は攻撃が裏面からであれば下層のICチップChip_C(3)に対しても必ず影響があり、3個の同じ計算結果を出力することはできないものと考えられるからである。このように、フォールトインジェクションがあったときには、それを的確に検知して攻撃に対処する処理に移行することができるので、フォールトインジェクションを伴う消費電力解析や電磁波解析などのサイドチャネル攻撃に対抗するために、処理や回路を必ずしも平準化する必要がない。
【0066】
本実施形態では、3チップによって3重化する例を示したが、2チップによる2重化であってもよい。このとき、比較検証の機能を持たせるICチップは、素子面が他のICチップで覆われたICチップとするのが好適である。裏面(基板面)からはマイクロプロービングは不可能であり、レーザーによるフォールトインジェクションも、基板によってレーザー光が吸収、散乱を受けることから、精度が低くなるため、これらの攻撃に対して耐タンパ性を比較的高く保つことができるからである。また4チップ以上を積層した多重化を採用してもよい。このとき、4チップを並列動作させ、4個の処理結果を比較検証するように構成しても良いし、2個ずつ並列動作させて2個ずつの処理結果を比較検証するように構成してもよい。またさらには、3チップを上述のように3並列動作させ3個の処理結果を比較検証するように構成し、その他のチップにはセキュリティを要求されない通常処理を並列に実行させてもよい。
【0067】
3個のICチップChip_A(1),Chip_B(2),Chip_C(3)は、同一チップであると好適である。ただし、電極(TSV)の配置(レイアウト)が異なっていてもよい。チップを±90°あるいは180°回転させたり、裏返して素子面どうし、或いは基板面どうしを貼り合せるように、積層してもよい。詳しくは実施形態3で後述する。このとき、3個のICチップChip_A(1),Chip_B(2),Chip_C(3)は、同一チップであるので、同一の処理を同時に開始すれば同時に同じ計算結果(処理結果)を得ることができるはずだからである。また、同一チップとすることにより、半導体製造工程におけるマスク枚数を減らすことができるなどの量産効果により、コストを低減することができる。
【0068】
3個のICチップChip_A(1),Chip_B(2),Chip_C(3)がそれぞれTSVを有し、さらにそのTSVが積層されるICチップ間で互いに接続される例を示したが、チップ間にはインターポーザを挿入して、レイアウトが互いにずれているTSVどうしが接続されるように構成しても良い。また、TSVに代えてワイヤーボンディング等によってチップ間を接続してもよい。
【0069】
<タイムマネージメント>
図3は、半導体装置100を構成する各チップによる暗号計算の動作例を示す説明図である。横軸を時間とし、縦軸方向に各チップChip_A(1),Chip_B(2),Chip_C(3)による暗号計算の内容とCPU負荷が示される。暗号計算の一例として、共通鍵暗号方式の1つであるAES−128(Advanced Encryption Standard -128)を取り上げている。AES−128は、ラウンド(Round)1〜10の暗号化操作で構成される。
図3は、AES−128のラウンド処理にタイムマネージメントを適応した動作例である。
【0070】
図2で説明した、Chip_B(2)で作成されたタイムマネージメント52に則り、時刻t1にChip_B(2)とChip_C(3)でラウンド1〜5の処理を開始する。時刻t2にラウンド5までの処理を終了して、Chip_C(3)の処理を中断し、Chip_A(1)のラウンド1〜5の処理を開始する。Chip_B(2)、そのままラウンド6〜10の処理を実施する。時刻t3にChip_B(2)のラウンド10の処理が終了し処理結果B(51_2)を生成する。同じく時刻t3に、中断していたChip_C(3)はラウンド6〜10の処理を開始する。Chip_A(1)は時刻t3にラウンド5までの処理を終了して、ラウンド6〜10の処理を開始する。Chip_A(1)とChip_C(3)は時刻t4にラウンド10までの処理を終了し、それぞれ処理結果A(51_1)と処理結果C(51_3)とを生成する。
【0071】
Chip_B(2)は3個のチップの中で最も処理が早く終了するので、Chip_A(1)、Chip_B(2)及びChip_C(3)の処理結果A、B及びC(51_1〜51_3)が出揃うまで待機し、出揃った時刻t4から比較検証53を開始する。このようなタイムマネージメントを行う事で、CPUの処理負荷を分散し、消費電流解析を困難にする事が可能となる。CPUの主な処理負荷は、時刻t1〜t5は暗号処理であり、時刻t1以前と時刻t4以降は別の処理によるものであるが、時刻t1以前と時刻t4以降にダミーの処理(負荷)を追加してCPUの処理負荷を平準化してもよい。これにより、消費電力解析をより困難にすることができる。
【0072】
上述の説明から明らかなように、本実施形態でいうところの「同じ暗号計算を並列処理する」は、必ずしも同時に並列処理することを要件とはしていない。同じ暗号計算が異なるチップでそれぞれ処理されればよい。同時に並列処理されればデータ処理全体の処理時間を短縮することができ、高速化に資する一方、
図3に例示するように、CPU負荷を分散することにより、消費電流を平準化することができ、消費電力解析などに対する耐タンパ性を向上することができる。
【0073】
<比較検証>
図4は、比較検証53の動作例を示すフローチャートである。3チップ並列の暗号計算処理を行なう(S1)。
図3に例示するように、CPUの処理負荷を平準化するために同時ではない並列処理を行なっても良いし、同時並列の暗号化処理を行なっても良い。Chip_A(1)とChip_C(3)のそれぞれの暗号処理の結果である、処理結果A(51_1)と処理結果C(51_3)とが揃った時点で、Chip_A(1)の処理結果A(51_1)とChip_C(3)の処理結果C(51_3)とを比較する(S2)。Chip_A(1)の処理結果A(51_1)とChip_C(3)の処理結果C(51_3)とが異なる場合には不正対応処理(S5)に進む。Chip_A(1)の処理結果A(51_1)とChip_C(3)の処理結果C(51_3)とが等しい場合には次の判断(S3)に進み、その結果(処理結果A(51_1)=処理結果C(51_3))とChip_B(2)の処理結果B(51_2)と比較する(S3)。処理結果A(51_1)=処理結果C(51_3)とChip_B(2)の処理結果B(51_2)とが異なる場合には不正対応処理(S5)に進む。3個のチップChip_A(1)、Chip_B(2)及びChip_C(3)のそれぞれの暗号処理の結果、処理結果A(51_1)、処理結果B(51_2)及び処理結果C(51_3)が全て等しいときには、通常の処理に戻る(S4)。
【0074】
3個のチップChip_A(1)、Chip_B(2)及びChip_C(3)のそれぞれの暗号処理の結果、処理結果A(51_1)、処理結果B(51_2)及び処理結果C(51_3)のうちの少なくとも1個が他の処理結果と異なるときには、不正な攻撃を受けたものと判断して不正対応処理(S5)に進む。不正対応処理(S5)は、攻撃に対応する処理であり、例えば、秘匿とする情報を守るために、RAM32とROM31のデータを消去する等の処理を行なう。さらに外部にサーバー等の管理装置が接続される場合には、攻撃を受けている或いは受けた事実をその管理装置宛てに報告するように構成してもよい。
【0075】
<不正対応処理>
不正対応処理(S5)は、セキュリティポリシーに基づいて適切に設計される。セキュリティポリシーには、セキュリティを最重要視するセキュリティ重視型から、できる限り通常の処理を継続させるように配慮された機能重視型まで、様々な変形例がある。多重化された並列処理において他と異なる処理結果が検出されたとしても、必ずしもサイドチャネル攻撃を受けたとは限らないからである。他と異なる処理結果を生じる原因としては、他に、許容範囲外の温度など動作環境による一時的あるいは恒久的な故障、電源ノイズや電磁的ノイズ、アルファ線によるソフトエラーなどが考えられる。一時的な故障やソフトエラーの場合に、通常処理に復帰するフローを備えてもよいし、恒久的な故障の場合でもROMに記憶される秘匿されるべき情報が温存されるフローを備えてもよい。これは、半導体装置100が搭載される機器に応じて適切に規定されるセキュリティポリシーに基づいて規定される。
【0076】
図5は、不正対応処理の内容についての説明図である。セキュリティ重視型の一例と、機能重視型の一例が示される。それぞれ、3個のチップChip_A(1)、Chip_B(2)及びChip_C(3)のそれぞれの暗号処理の結果、処理結果A(51_1)、処理結果B(51_2)及び処理結果C(51_3)が、他のチップの処理結果と同一であるか異なるかによって場合分けし、それぞれの場合の処理を内容が例示される。
【0077】
セキュリティ重視型において、Chip_A(1)、Chip_B(2)及びChip_C(3)の処理結果A(51_1)、処理結果B(51_2)及び処理結果C(51_3)が全て同一の場合には、正常動作であるとして次の通常処理へ進む(
図4ではS4)。Chip_A(1)またはChip_C(3)の処理結果A(51_1)または処理結果C(51_3)の一方が他の2チップの処理結果と異なる場合には、攻撃があったものと判断して処理を中断し、異常終了報告を行う。Chip_B(2)の処理結果B(51_2)が他の2チップの処理結果と異なる場合には、Chip_B(2)に再処理を実行させる。3チップ全てに再処理を実行させてもよい。これにより、再処理の実行中も消費電力が平準化され消費電力解析を伴う攻撃に対する耐タンパ性を維持することができる。再処理後の処理結果B(51_2)が再処理前の処理結果B(51_2)と同じ値で、他の2チップの処理結果と異なる場合には、故障と判断し故障報告を行う。再処理後の処理結果B(51_2)が再処理前の処理結果B(51_2)と異なる値の場合には、攻撃と判断して処理を中断し、異常終了報告を行う。
【0078】
3チップが積層されている場合には、表面または裏面のチップ、この例ではChip_A(1)とChip_C(3)は、フォールトインジェクションに対して比較的弱いのに対して、表面または裏面のチップに影響を与えることなく中間層のChip_B(2)のみにフォールトインジェクションを行うことは、技術的難度が高い。そのため、中間層のChip_B(2)の処理結果B(51_2)が他の2チップの処理結果と異なる場合には、故障である可能性が高いため、再処理を実行して確認している。恒久的な故障の場合は生成される処理結果B(52_2)が同じ値となると考えられるので、同じ値で他の2チップの処理結果と異なる場合には、故障と判断する。一方、フォールトインジェクションの場合には、同じ値の故障を注入することは一般的には不可能であるので、再処理の結果が異なる値で他の2チップの処理結果と異なる場合には、攻撃と判断して処理を中断し、異常終了報告を行うのである。
【0079】
中間層のChip_B(2)の処理結果B(51_2)が他の2チップの処理結果と異なる場合にも、他のChip_A(1)またはChip_C(3)の処理結果A(51_1)または処理結果C(51_3)の一方が他の2チップの処理結果と異なる場合と同様に、直ちに、攻撃があったものと判断して処理を中断し、異常終了報告を行ってもよい。
【0080】
機能重視型においても、Chip_A(1)、Chip_B(2)及びChip_C(3)の処理結果A(51_1)、処理結果B(51_2)及び処理結果C(51_3)が全て同一の場合には、正常動作であるとして次の通常処理へ進む(
図4ではS4)。Chip_A(1)、Chip_B(2)またはChip_C(3)の処理結果A(51_1)、処理結果B(51_2)または処理結果C(51_3)のうちの1個が他の2チップの処理結果と異なる場合には、異なる処理結果を出力したチップに再処理を実行させる。3チップ全てに再処理を実行させても良い。これにより、再処理の実行中も消費電力が平準化され消費電力解析を伴う攻撃に対する耐タンパ性を維持することができる。再処理を実行したチップにおいて、再処理後の処理結果が再処理前の処理結果と同じ値で、他の2チップの処理結果と異なる場合には、故障と判断し故障報告を行う。3チップのうちの1チップに恒久的な故障が発生した場合を想定した対処である。一方、再処理後の処理結果が再処理前の処理結果と異なる値の場合には、攻撃と判断して処理を中断し、異常終了報告を行う。
【0081】
攻撃に対処するための処理では、秘匿されるべき情報を守るために、例えばRAMとROMのデータを消去する等の処理を行なうが、故障に対処するための処理では、ROMに格納される情報は、秘匿されるべき情報であっても温存される。ただし、これは一例であって、秘匿されるべき情報の消去と温存の判断は、半導体装置100が搭載される機器ごと、アプリケーションごとのセキュリティポリシーによって、規定されるべきものである。
【0082】
〔実施形態2〕<同一機能×異なるレイアウト>
図6は、実施形態2に係る半導体装置100の実装例を示す模式図である。半導体装置100は、半導体チップ(ICチップ,Chip_D,Chip_E,Chip_F)4〜6を3層に重ねた構造を取る。Chip_F(6)が最も下に配置され、その素子面上にChip_E(5)が、さらにその素子面上にChip_D(4)が、順次積層され、互いにシリコン基板貫通電極(TSV)20によって接続される。ICチップChip_D(4),Chip_E(5),Chip_F(6)は、
図1に示した実施形態1の半導体装置と同様に、それぞれが同一機能を有し、例えばそれぞれがCPU30_4〜30_6とROM31_4〜31_6とRAM32_4〜32_6とを含んで構成されるデバイスであるが、それぞれに搭載される機能ブロックの配置(レイアウト)が異なる。
【0083】
サイドチャネル攻撃には、チップから漏れ出る電磁波を解析し、攻撃個所を特定する手法が存在している。これは、計算を行う際に、CPUにより多くの電力が供給されるため、そこから漏れ出る電磁波もそれに比例して大きくなる事を利用している。
【0084】
図6に示されるように、積層される各ICチップChip_D(4),Chip_E(5),Chip_F(6)において、各CPU30_4〜30_6が配置(レイアウト)される位置を互いに異なるように積層することにより、チップから漏れ出る電磁波の強度が面内で平準化され、CPU30_4〜30_6の位置を特定することを困難にし、前述の攻撃に対する耐性を高めることができる。
【0085】
実施形態2に係る半導体装置100も、並列動作、比較検証及び不正対応処理については、実施形態1と同様に動作させることができるので、これらの動作についての説明は省略する。
【0086】
図6には、各CPU30_4〜30_6の配置が著しく異なるように図示されるが、必ずしも完全に異なる位置とする必要はなく、一部が重なるように配置してもよい。各CPU30_4〜30_6の重なるように配置することで、攻撃者は攻撃する部位の特定が困難となる。また、積層された複数チップに対して一括して行う攻撃に対する耐タンパ性を向上させることができる。同一機能のチップ内の配置(レイアウト)がずれて積層されるため、積層構造を貫通する攻撃による影響が、回路面では異なる機能を実行する箇所に及ぶので、多重化と比較検証により、攻撃を検知することができるからである。
【0087】
〔実施形態3〕<同一機能×同一レイアウト×チップの回転and/or裏返し>
図7は、実施形態3に係る半導体装置100の実装例を示す模式図である。半導体装置100は、同一の半導体チップ(ICチップ,Chip_D,Chip_E,Chip_F)7_1〜7_3を3層に重ねた構造を取る。Chip_F(7_3)が最も下に配置され、その上にChip_E(7_2)が、さらにその上にChip_D(7_1)が、順次積層され、互いにシリコン基板貫通電極(TSV)20によって接続される。ICチップChip_D(7_1),Chip_E(7_2),Chip_F(7_3)は、それぞれが同一機能、同一レイアウトを有する同一チップであるが、回転し、裏返し、又は裏返した上でさらに回転して積層することにより、同一機能を持つ回路ブロックの表面から見たときの相対的な配置が、チップ毎に異なるようにすることができる。
【0088】
これにより、実施形態2と同様に、攻撃対象の部位の特定を困難にし、積層された複数チップに対して一括して行う攻撃に対する耐タンパ性を向上させることができる。さらに、積層される各チップが同一のチップとされるので、チップコストを低減することができる。
【0089】
ここで、同一機能、同一レイアウトを有する同一チップを、回転し、裏返し、又は裏返した上でさらに回転して積層するときにも、同一機能の電極が同じ位置に配置されように構成すると、インターポーザを介在させることなく、または、直線的に接続するだけの簡単な構造のインターポーザを介在させるだけで、上下の同一機能の電極を互いに接続することができる。
【0090】
図8〜
図11に各チップにおける電極配置の例を示す。暗号計算を含むデータ処理を行なう半導体装置が搭載されるデバイスの一例としてICカードがある。ICカードについて、電極を含むインターフェース仕様は標準規格によって規定されており、例えば国際標準規格ISO/IEC7816−2には、ICカードは、電極として電源(VDD)、接地(GND)、データ入出力(I/O)、クロック(Clock)及びリセット(Reset)の5個の電極を備えるように規定されている。一般に端子数が多い程、セキュリティレベル(耐タンパ性)が低下すると考えられるので、必要最小限の端子数で構成するのが良い。
図8〜
図11において、電源(VDD)、接地(GND)、データ入出力(I/O)、クロック(Clock)及びリセット(Reset)は、それぞれ丸付きの1から5まで数字で示される。データ入出力(I/O)の電極は、1チップ内に複数設けられるが、これは多ビットのデータ入出力を並列に行う電極ではなく、機能的に全く同一の1ビットシリアルのデータ入出力(I/O)の電極が電気的に並列に設けられているものである。
【0091】
図8は、各チップにおける電極の第1の配置例を示すレイアウト図である。
【0092】
左辺には、VDD21_1、GND22_1、I/O23_1、Clock24_1、Reset25_1、Clock24_2、I/O23_2、GND22_2、VDD21_2が順次配置される。
【0093】
右辺には、VDD21_3、GND22_3、I/O23_3、Clock24_3、Reset25_3、Clock24_4、I/O23_4、GND22_4、VDD21_4が順次配置される。
【0094】
上辺には、VDD21_1、GND22_5、I/O23_5、Clock24_5、Reset25_5、Clock24_6、I/O23_6、GND22_6、VDD21_3が順次配置される。
【0095】
下辺には、VDD21_2、GND22_7、I/O23_7、Clock24_7、Reset25_7、Clock24_8、I/O23_8、GND22_8、VDD21_4が順次配置される。
【0096】
左辺の各電極は、チップが+90°回転されたときに上辺のそれぞれ同一機能電極と同じ位置に重なり、チップが−90°回転されたときに下辺のそれぞれ同一機能電極と同じ位置に重なり、180°回転されたときに右辺のそれぞれ同一機能電極と同じ位置に重なるように配置されている。即ち、VDD21_1、GND22_1、I/O23_1、Clock24_1、Reset25_1は、+90°回転したときに、VDD21_3、GND22_6、I/O23_6、Clock24_6、Reset25_5に重なり、−90°回転したときに、VDD21_2、GND22_7、I/O23_7、Clock24_7、Reset25_7に重なる。180°回転したときには、VDD21_4、GND22_4、I/O23_4、Clock24_4、Reset25_3に重なる。
【0097】
左辺の各電極は、チップが上下の辺の中心線を対称に裏返されたときには、右辺のそれぞれ同一機能電極と同じ位置に重なり、チップが左右の辺の中心線を対称に裏返されたときには、同じ左辺のそれぞれ同一機能電極と同じ位置に重なるように配置されている。即ち、VDD21_1、GND22_1、I/O23_1、Clock24_1、Reset25_1は、チップが上下の辺の中心線を対称に裏返して積層されたときに、VDD21_3、GND22_3、I/O23_3、Clock24_3、Reset25_3に重なる。チップが左右の辺の中心線を対称に裏返して積層されたときには、同じ左辺のVDD21_2、GND22_2、I/O23_2、Clock24_2、Reset25_1に重なる。
【0098】
他の辺の各電極についても同様であり、また、チップを裏返した上に±90°又は180°の回転した後に積層する場合にも、同様に、同じ機能を持つ電極が同じ位置になるように、配置(レイアウト)されている。各チップは正方形とされていても、電極配置のみが正方形とされチップは正方形から外れた形状であってもよい。全ての電極が±90°又は180°回転した後に同一機能を持つ電極と重なるように配置されるためには、全ての電極が同一の点を中心として、±90°または180°回転された位置に配置されれば良い。また、チップを裏返して積層したときに全ての電極が同一機能を持つ電極と重なるように配置されるためには、全ての電極がチップの辺(正確には電極が配列される線)に平行な直線を中心(軸)とした対称の位置に配置されるとよい。電極の配置がチップの辺と並行でない場合は、電極の配列に平行な直線を中心(軸)とした対称の位置に配置されればよい。各電極に例示される機能は例示的なもので、順序は任意に規定される。ここで、「同一の点」、角度「±90°」、「180°」、「平行な直線」、「中心(軸)」、「対称」等の用語は、それぞれが持つ数学的に厳密な意味を規定するものではなく、それぞれ工業的に許容される誤差を含む。即ち、ICチップが±90°または180°回転されて積層されたとき、または、裏返して積層されたときに、同一の機能を持つ端子どうしが電気的な導通が保証できる範囲でのずれは許容される。
【0099】
図9は、各チップにおける電極の第2の配置例を示すレイアウト図である。縦方向にVDD21_9、GND22_9、I/O23_9、Clock24_9、Reset25_9、Clock24_10、I/O23_10、GND22_10、VDD21_10が順次配置される。横方向にVDD21_11、GND22_11、I/O23_11、Clock24_11、Reset25_9、Clock24_12、I/O23_12、GND22_12、VDD21_12が順次配置される。縦方向の各電極の間隔と横方向の各電極の間隔は等しくされ、互いに直交するように、十字状に配置列されている。このとき、チップが±90°回転されたときには、縦方向の各電極は横方向の同一機能を持つ各電極と重なり、180°回転したときには、縦方向どうし、横方向どうしの各電極で、同一機能を持つ各電極と重なる。また、上下又は左右方向に裏返した場合にも同様に、同一機能を持つ各電極と重なるように配置されている。
【0100】
電極の十字状の配置は、チップの中央であってもよいが、必ずしも中央である必要はなく、チップの各辺と垂直・平行の位置関係にある必要はない。
【0101】
各電極に例示される機能は例示的なもので、順序は任意に規定されるが、中央に配置される電極はチップ内で1個のみである。電源インピーダンスを下げるために、電源(VDD)と接地(GND)電極の数は多い方がよく、データ入出力(I/O)とクロック(Clock)もインピーダンスは低い方が良いので、相対的にリセット(Reset)を割り当てるのが好適である。中心点には電極を配置せず、十字状の4辺全てにそれぞれ5個ずつ配置してもよい。
【0102】
チップを裏返して積層することを考慮しない場合には、
図10と
図11のように、チップの回転にのみ対応する電極配置を採用することができる。
【0103】
図10は、各チップにおける電極の第3の配置例を示すレイアウト図である。
【0104】
上辺にはVDD21_13、GND22_13、I/O23_13、Clock24_13、Reset25_13が順次配置される。右辺にはVDD21_14、GND22_14、I/O23_14、Clock24_14、Reset25_14が順次配置される。下辺にはVDD21_15、GND22_15、I/O23_15、Clock24_15、Reset25_15が順次配置される。左辺にはVDD21_16、GND22_16、I/O23_16、Clock24_16、Reset25_16が順次配置される。各辺の5個の電極は他の辺の5個の電極と同じ間隔で配置されている。チップが+90°回転されたときに、上辺、右辺、下辺及び左辺の各電極は、それぞれ右辺、下辺、左辺及び上辺の同一機能の電極と同じ位置に重なり、−90°回転されたときには、それぞれ左辺、上辺、右辺及び下辺の同一機能の電極と同じ位置に重なり、180°回転されたときには、それぞれ下辺、左辺、上辺及び右辺の同一機能の電極と同じ位置に重なるように配置されている。
【0105】
図8に示した第1の配置例と比較して、電極数を少なく抑えることができるので、端子数(電極数)によってチップサイズが制約される場合には、チップサイズを小さくすることができる。
【0106】
図11は、各チップにおける電極の第4の配置例を示すレイアウト図である。
【0107】
上辺にはVDD21_17、GND22_17、I/O23_17、Clock24_17が、右辺にはVDD21_18、GND22_18、I/O23_18、Clock24_18が、下辺にはVDD21_19、GND22_19、I/O23_19、Clock24_19が、左辺にはVDD21_20、GND22_20、I/O23_20、Clock24_20が配置される。Reset25_17は中央に1個だけ配置され、各辺の4個の電極は他の辺の4個の電極と同じ間隔、同じ順序で配置されている。チップが+90°回転されたときに、上辺、右辺、下辺及び左辺の各電極は、それぞれ右辺、下辺、左辺及び上辺の同一機能の電極と同じ位置に重なり、−90°回転されたときには、それぞれ左辺、上辺、右辺及び下辺の同一機能の電極と同じ位置に重なり、180°回転されたときには、それぞれ下辺、左辺、上辺及び右辺の同一機能の電極と同じ位置に重なるように配置されている。
【0108】
図10に示した第4の配置例と比較して、リセット電極を1個にした分だけ電極数を少なく抑えることができるので、端子数(電極数)によってチップサイズが制約される場合には、チップサイズをさらに小さくすることができる。
【0109】
〔実施形態4〕<暗号化処理を行なうチップを中間層に積層>
本願明細書に開示される技術思想は、複数のICチップを積層して構成した半導体装置100において、中間層のチップ、即ち素子面が他のチップで覆われているチップに、全体のデータ処理のうち最も高い耐タンパ性が求められる処理を割り当てるものである。実施形態1〜3では全体のデータ処理を暗号計算として多重化し、その処理結果を比較検証する機能が最も高い耐タンパ性を必要とされるので、その比較検証の機能を中間層のチップに割り当てるものである。データ処理全体を更に広い範囲で捉えれば、暗号計算を含むデータ処理において、暗号計算を最も高い耐タンパ性を必要とされるとして中間層のチップに割り当て、他の処理を他のチップに割り当てることができる。
【0110】
図12は、実施形態4に係る半導体装置100の実装例を示す模式図である。半導体装置100は、半導体チップ(ICチップ,Chip_G,Chip_H,Chip_I)8〜10を3層に積層した構造を取る。Chip_I(10)が最も下に配置され、その上にChip_H(9)が、さらにその上にChip_G(8)が、順次積層され、互いにシリコン基板貫通電極(TSV)20によって接続される。ICチップChip_G(8),Chip_H(9),Chip_I(10)は、実施形態1〜3の半導体装置とは異なり、それぞれに割り付けられる機能に適する回路構成を備えている。最上層のICチップChip_G(8)は、バス33_8を介して接続されるサブCPU30_8と暗号アクセラレータ34_8とを備える。中間層のICチップChip(9)は、互いにバス33_9によって接続される、メインCPU30_9とROM31_9とRAM32_9とを備える。最下層のICチップ(10)は、互いにバス33_10によって接続される、サブCPU30_10とインターフェース35_10とを備える。その他の機能ブロックは、できる限り上下層のチップに搭載されるのが好適である。
【0111】
メインCPU30_9とROM31_9とRAM32_9とを備える中間層のICチップChip_H(9)に、最も高い耐タンパ性が求められる暗号計算を実行させるように構成し、他の処理を他のICチップChip_GとChip_I(8と10)に割り当てる。高いセキュリティを必要としないデバイス及びデータ処理を上層と下層のICチップChip_GとChip_I(8と10)に配置する事により、攻撃者の対象となる暗号処理を行う中間層のICチップChip_H(9)への物理的なアクセスが困難となる。そのため、特にマイクロプロービングや、故障注入に耐性を持つデバイスが実現可能となる。
【0112】
〔実施形態5〕<署名(Sign)処理を行なうチップを中間層に積層>
図13は、実施形態5に係る半導体装置の実装例を示す模式図である。半導体装置100は、半導体チップ(ICチップ,Chip_J,Chip_K,Chip_L)11〜13を3層に重ねた構造を取る。Chip_L(13)が最も下に配置され、その上にChip_K(12)が、さらにその上にChip_J(11)が、順次積層され、互いにシリコン基板貫通電極(TSV)20によって接続される。ICチップChip11〜13は、それぞれバス33_11〜33_13を介して接続される、CPU30_11〜30_13、ROM31_11〜31_13、RAM32_11〜32_13、暗号アクセラレータ34_12〜34_13を備える。同一機能を備えていても良いし、それぞれ異なる機能を備えてもよい。
【0113】
半導体装置100を同一機能、異なるレイアウトの3チップを積層して構成する場合には、実施形態2の構成が適用可能であり、同一機能、同一レイアウトの3チップを積層して構成する場合には、実施形態3の構成が適用可能である。
【0114】
自動車の情報通信における態様である、V2X(Vehicle to X; Vehicle to Infrastructure, Personal, etc…)では、高速な証明書の認証が求められている。証明書の認証(Verify)処理は一般的に公開鍵を用いるため、情報の秘匿度が低い。また、周囲の対象となる自動車やインフラからブロードキャストで証明書が送付されるため、非常に多くの検証を行う必要がある。一方で自車が送付する証明書の署名(Sign)の処理は一定間隔で送付するものの、認証(Verify)と比較して非常に少ない計算回数となる。
図13は、検証回数が多くなる認証(Verify)の機能を持たせたICチップChip_J(11)とChip_L(13)とを上段と下段に配し、署名(Sign)の処理を行う機能を持たせたICチップChip_K(12)を中段(中間層)に配した構成となっている。応用例としては、V2Xにおける認証(Verify)/署名(Sign)の例を示しているが、セキュリティレベルの要求が低い機能を持たせたICチップを上下段(上層と下層)に配置し、秘匿性が高い機能を持たせたICチップを中段(中間層)に配置する事が可能である。
【0115】
〔実施形態6〕<パッケージ形態>
図14は、
図8〜
図11に図示される1から5の数字で示される各電極端子(電源(VDD)、接地(GND)、データ入出力(I/O)、クロック(Clock)及びリセット(Reset))に、それぞれ電気的に接続された金属よりなる外部接続端子(TVDD、TGND、TI/O、TClock、TReset)、及び、各電極端子(電源(VDD)、接地(GND)、データ入出力(I/O)、クロック(Clock)及びリセット(Reset))とは非接続(non−connect)の外部接続端子(TNC)を有する樹脂封止型半導体装置140を裏面側から見た場合の斜視図を示している。
【0116】
半導体装置140は、P−VQFN(Plastic Very fine Quad Flat Non−leaded package)形半導体装置とされている。例えば、半導体装置140は、
図1,
図6,
図7、
図12に示される3つの半導体チップ1〜3、上記半導体チップを搭載するチップ搭載部(タブ)、インナリード(外部接続端子(TVDD、TGND、TI/O、TClock、TReset,TNC))、ならびに、金線や銅線などからなる金属配線(ボンディングワイヤ)が、モールド装置によるモールド形成を利用し、熱硬化性の封止樹脂によって封止され、4辺(第1辺A,第2辺B,第3辺C,第4辺D)を有する矩形状のパッケージ(封止部)141として形成される。
【0117】
特に制限されないが、半導体装置140裏面には、142で示されるアルミニューム等の金属板が、耐タンパ性を向上する目的で設けられても良い。
【0118】
パッケージ141における2辺(第1辺A,第3辺C)には、複数の外部接続端子(TVDD、TGND、TI/O、TClock、TReset,TNC)が設けられ、パッケージ141における実装面から側面にかけて露出して形成されている。複数の外部接続端子(TVDD、TGND、TI/O、TClock、TReset,TNC)の表面には、たとえば、電解めっきなどによるはんだめっきが施されている。外部接続端子(TVDD、TGND、TI/O、TClock、TReset,TNC)は、半導体装置140のプリント配線基板への実装時、プリント配線基板に形成された接続電極とされるランド電極に、それぞれ電気的に接続される。
【0119】
当業者にとって容易に理解されるので、詳細な図示はしないが、
図8〜
図11に図示される1から5の数字で示される各電極端子(電源(VDD)、接地(GND)、データ入出力(I/O)、クロック(Clock)及びリセット(Reset))は、例えば、チップ(Chip_A)上に設けられた電源(VDD)、接地(GND)、データ入出力(I/O)、クロック(Clock)及びリセット(Reset)のおのおの接続用電極パッドに、電気的に接続されている。これらの電気的な接続は、例えば、チップ1(Chip_A)上に形成される複数の金属配線層およびその間に形成される複数の層間絶縁層からなる多層配線構造により、行われる。
【0120】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0121】
例えば、各チップがCPU及びROM,RAMを備えて暗号計算を行う例を主に示したが、これをハードウェアの暗号アクセラレータに置き換えてもよい。