(57)【要約】【課題】半導体装置における回路規模の増大を抑制しつつ、セキュリティ要件と機能安全要件とを両立させること。【解決手段】半導体装置は、複数のプロセッサにより冗長化された制御部と、対象データを記憶するメモリと、暗号化又は復号化のための暗号処理に用いる鍵を記憶するセキュアメモリと、暗号部と、制御部からの要求に応じて暗号部に対して暗号処理の指示を行うセキュアプロセッサと、制御部、メモリ、暗号部及びセキュアプロセッサを通信可能に接続する第１のバスと、セキュアメモリ、暗号部及びセキュアプロセッサを通信可能に接続する第２のバスと、を備える。制御部は、所定の誤り検出機構を介してメモリとの通信を行い、暗号部は、指示に基づいて、鍵を用いて対象データに対する暗号処理をそれぞれ独立して行う複数の暗号処理部を含み、複数の暗号処理部のそれぞれは、メモリとのデータ転送を、誤り検出機構を介して行うデータ転送部を備える。【選択図】図３
2020064332.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサにより冗長化された制御部と、
対象データを記憶するメモリと、
暗号化又は復号化のための暗号処理に用いる鍵を記憶するセキュアメモリと、
前記暗号処理を行う暗号部と、
前記制御部からの要求に応じて前記暗号部に対して前記暗号処理の指示を行うセキュアプロセッサと、
前記制御部、前記メモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する第１のバスと、
前記セキュアメモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する第２のバスと、
を備え、
前記制御部は、所定の誤り検出機構を介して前記メモリとの通信を行い、
前記暗号部は、
前記指示に基づいて、前記鍵を用いて前記対象データに対する前記暗号処理をそれぞれ独立して行う複数の暗号処理部を含み、
前記複数の暗号処理部のそれぞれは、
前記メモリとのデータ転送を、前記誤り検出機構を介して行うデータ転送部を備える、
半導体装置。
【請求項２】
前記暗号部は、
前記複数の暗号処理部のそれぞれの前記暗号処理の処理結果を比較して前記暗号処理部のいずれかの故障を検知する故障検知回路をさらに含む
請求項１に記載の半導体装置。
【請求項３】
前記複数の暗号処理部のうち第１の暗号処理部は、
自身の前記暗号処理の処理結果を、前記データ転送部を用いて前記メモリへ格納し、
前記複数の暗号処理部のうち他の暗号処理部は、
自身の前記暗号処理の処理結果を破棄する
請求項２に記載の半導体装置。
【請求項４】
前記セキュアプロセッサは、
前記指示において前記暗号部に設定した前記暗号処理に関する設定情報を前記メモリへ格納し、
前記制御部は、
前記セキュアプロセッサに対する前記要求に用いた要求情報と、前記メモリに格納された前記設定情報とに基づいて、前記セキュアプロセッサの故障を検知する
請求項１に記載の半導体装置。
【請求項５】
前記セキュアプロセッサは、
前記要求情報に含まれる前記メモリ内のアクセス先であるアドレスを、前記設定情報に含めて、前記暗号部に設定し、
前記データ転送部は、前記メモリ内の前記アドレスに対してアクセスを行う、
請求項４に記載の半導体装置。
【請求項６】
前記複数の暗号処理部のそれぞれは、
前記対象データが他の半導体装置への送信データである場合、
前記指示に基づいて、前記鍵を用いて前記対象データに対する暗号化及びメッセージ認証符号の生成を前記暗号処理として行う、
請求項１に記載の半導体装置。
【請求項７】
前記複数の暗号処理部のそれぞれは、
前記対象データが他の半導体装置からの受信データである場合、
前記指示に基づいて、前記鍵を用いて前記対象データに対する復号化及び第１のメッセージ認証符号の生成を前記暗号処理として行う、
請求項１に記載の半導体装置。
【請求項８】
前記受信データは、前記他の半導体装置において前記鍵を用いて所定のデータから暗号化された暗号データ及び生成された第２のメッセージ認証符号を含み、
前記複数の暗号処理部のうち少なくとも第１の暗号処理部は、
前記復号化された復号化データ及び前記第１のメッセージ認証符号を、前記データ転送部を用いて前記メモリへ格納し、
前記制御部は、
前記メモリに格納された前記第１のメッセージ認証符号と前記第２のメッセージ認証符号とを比較して、前記第１の暗号処理部の故障を検知する
請求項７に記載の半導体装置。
【請求項９】
前記受信データは、前記他の半導体装置において前記鍵を用いて所定のデータから暗号化された暗号データ及び生成された第２のメッセージ認証符号を含み、
前記複数の暗号処理部のうち少なくとも第１の暗号処理部は、
前記データ転送部を用いて前記メモリから取得された前記第２のメッセージ認証符号と、前記第１のメッセージ認証符号とを比較する比較器をさらに含む、
請求項７に記載の半導体装置。
【請求項１０】
前記第１の暗号処理部は、
前記復号化された復号化データ及び前記比較器による比較結果を前記データ転送部を用いて前記メモリへ格納し、
前記制御部は、
前記メモリに格納された前記比較結果が不一致を示す場合、前記復号化データを破棄する
請求項９に記載の半導体装置。
【請求項１１】
複数のプロセッサにより冗長化された制御部と、
対象データを記憶するメモリと、
暗号化又は復号化のための暗号処理に用いる鍵を記憶するセキュアメモリと、
前記暗号処理を行う暗号部と、
前記制御部からの要求に応じて前記暗号部に対して前記暗号処理の指示を行うセキュアプロセッサと、
前記制御部、前記メモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する第１のバスと、
前記セキュアメモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する第２のバスと、
を備え、
前記制御部は、
所定の誤り検出機構を介して前記メモリとの通信を行い、
前記暗号部は、
前記指示に基づいて、前記鍵を用いて前記対象データに対する前記暗号処理をそれぞれ独立して行う複数の暗号処理部を含み、
前記セキュアプロセッサは、
前記指示において前記暗号部に設定した前記暗号処理に関する設定情報を前記メモリへ格納し、
前記制御部は、
前記セキュアプロセッサに対する前記要求に用いた要求情報と、前記メモリに格納された前記設定情報とに基づいて、前記セキュアプロセッサの故障を検知する
半導体装置。
【請求項１２】
対象データを記憶するメモリと、
複数のプロセッサにより冗長化され、所定の誤り検出機構を介して前記メモリとの通信を行う制御部と、
暗号化又は復号化のための暗号処理に用いる鍵を記憶するセキュアメモリと、
前記暗号処理をそれぞれ独立して行う複数の暗号処理部を含む暗号部と、
セキュアプロセッサと、
前記制御部、前記メモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する第１のバスと、
前記セキュアメモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する第２のバスと、
を備える半導体装置の制御方法であって、
前記セキュアプロセッサが、前記制御部からの要求に応じて前記暗号部に対して前記暗号処理の指示を行い、
前記複数の暗号処理部のそれぞれが、
前記指示に基づいて、前記メモリから前記誤り検出機構を介して前記対象データを取得し、
前記鍵を用いて前記対象データに対する前記暗号処理を行い、
前記複数の暗号処理部の少なくとも１つが、
自身の前記暗号処理の処理結果を、前記誤り検出機構を介して前記メモリへ格納する
半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置及びその制御方法に関する。
【背景技術】
【０００２】
近年、半導体装置の一例であるＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）の分野では、ＥＣＵ間の通信において、悪意ある第三者による脅威を防ぐためのセキュリティ要件の重要性が増している。同時に、ＥＣＵ間の通信においては、機能不全によるリスクを管理するための機能安全要件も満たす必要がある。ここで、高いセキュリティを実現するための暗号化技術の一例として、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）が知られている。特許文献１には、ＡＥＳ回路やパリティ生成部を二重化することにより、信頼性の高いストレージシステムを実現するための技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１１５８５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１のように単にＡＥＳ回路を二重化させるだけでは、他の構成の故障を検出できないため、機能安全要件を十分に満たせない。そこで、半導体装置のうちセキュリティ機能に関連する構成の全体を二重化することも考えられるが、その場合、回路規模が増大してしまうという問題点がある。
【０００５】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態によれば、半導体装置において、複数のプロセッサにより冗長化された制御部は、所定の誤り検出機構を介してメモリとの通信を行い、暗号部は、指示に基づいて、鍵を用いて対象データに対する暗号処理をそれぞれ独立して行う複数の暗号処理部を含み、複数の暗号処理部のそれぞれは、メモリとのデータ転送を、誤り検出機構を介して行うデータ転送部を備える。
【発明の効果】
【０００７】
前記一実施の形態によれば、半導体装置における回路規模の増大を抑制しつつ、セキュリティ要件と機能安全要件とを両立させることができる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態１にかかる２つの半導体装置の間の通信の概念を示すブロック図である。
【図２】本実施形態１にかかる半導体装置の構成を示すブロック図である。
【図３】本実施形態１にかかる暗号部の内部構成を示すブロック図である。
【図４】本実施形態１にかかる送信側のメモリに格納されるデータの例を示す図である。
【図５】本実施形態１にかかるデータの暗号化、検証及び送信処理の流れを示すシーケンス図である。
【図６】本実施形態１にかかるデータの暗号化、検証及び送信処理の流れを示すシーケンス図である。
【図７】本実施形態１にかかる受信側のメモリに格納されるデータの例を示す図である。
【図８】本実施形態１にかかるデータの受信、復号化及び検証処理の流れを示すシーケンス図である。
【図９】本実施形態１にかかるデータの受信、復号化及び検証処理の流れを示すシーケンス図である。
【図１０】本実施形態２にかかる半導体装置の構成を示すブロック図である。
【図１１】本実施形態２にかかる暗号部の内部構成を示すブロック図である。
【図１２】本実施形態２にかかる受信側のメモリに格納されるデータの例を示す図である。
【図１３】本実施形態２にかかるデータの受信、復号化及び検証処理の流れを示すシーケンス図である。
【図１４】本実施形態２にかかるデータの受信、復号化及び検証処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【０００９】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１０】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１１】
ここで、以下の本実施形態にかかわる技術について補足する。まず、通信においてメッセージの真正性を確認する一つの手法としては、データ（メッセージ）の送信側でメッセージ認証符号（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ（ＭＡＣ））を付与し、受信側でＭＡＣを確認（検証）することが挙げられる。また、自動車向けのＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）の通信におけるセキュリティ要件としては、これまでメッセージの真正性が主流であった。そして、近年では、当該セキュリティ要件は、真正性に加えて機密性に関しても要求されるようになった。そこで、メッセージの真正性と機密性を同時に満たす手法として、ＡＥＳ−ＧＣＭ（Ｇａｌｏｉｓ／Ｃｏｕｎｔｅｒ  Ｍｏｄｅ）等の認証付き暗号アルゴリズムがある。ＡＥＳ−ＧＣＭは、共通鍵を用いてメッセージの暗号化とメッセージ認証を同時に行う手法である。
【００１２】
また、自動車に搭載するＥＣＵ間の通信においては、機能安全要件を満たすために通信データが故障していないかをエンドツーエンド（Ｅｎｄ  ｔｏ  Ｅｎｄ）で確認する必要がある。エンドツーエンドで通信データに故障がないかを検知する安全機構の例としては、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）やＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）／ＥＤＣ（Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  Ｃｏｄｅ）がある。但し、上述したＭＡＣを付与及び確認する手法も故障検知に用いることができる。そこで、セキュリティ要件の高い半導体装置において、ＭＡＣを付与及び確認する手法をセキュアＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）に適用する場合、セキュアＩＰ自体を安全機構の一つとして取り扱うことができる。
【００１３】
ここで、本実施形態が解決しようとするいくつかの課題について説明する。まず、機能安全要件を満たすためのデータをＥＣＵ間で通信する際に、そのデータに対してセキュアＩＰでＡＥＳ−ＧＣＭ等の認証付き暗号を適用した場合、エンドツーエンドで故障検知ができない場合がある。その理由は、認証付き暗号では、暗号化とタグ生成あるいは、復号化とタグ検証を同時に行うため、故障が起きた場合に通信が成立してしまう可能性があるためである。例えば、    暗号エンジンの故障により暗号化が不正な処理（不正確な暗号化）であったとしても、誤った暗号化処理による暗号化データに対応するタグを生成してしまう。その場合、受信側において、誤った暗号化データから（受信側で）正しく生成されたタグと、受信データに付与された、誤った暗号化データに対応して送信側で生成されたタグとが一致してしまう。よって、受信側では、タグ検証で成功し、復号処理としては正常に行えてしまうため、誤ったデータにより通信が成立してしまう場合がある。または、暗号エンジンの故障により復号化が不正な処理（不正確な復号化）であったとしても、受信データから検証用に生成されるタグが正確であれば、受信データに付与されたタグの検証に成功してしまう。そのため、復号化データが誤っていたとしても、通信が成立してしまう場合がある。
【００１４】
また、上述した特許文献１のようにＡＥＳ回路やパリティ生成を二重化してエラー検出及び訂正する方法の場合、暗号エンジンのみを二重化することとなる。しかしながら、その場合には、セキュアＩＰ内のＣＰＵ（セキュアＣＰＵ）がセキュアＩＰ外のメモリと暗号エンジンの間のデータ転送を行うため、セキュアＣＰＵが介在するデータ通信の失敗やセキュアＣＰＵ自体の故障については検知できない。
【００１５】
ここで、安全機構として、セキュアＣＰＵと暗号エンジンを含めたセキュアＩＰ全体を二重化することが考えられる。しかしながら、その場合、チップサイズ増大によるコストへの影響は大きくなる。つまり、半導体装置においてセキュリティ要件と機能安全要件を満たそうとすると、回路規模が増大するという課題が生じる。
【００１６】
また、対象データに対して認証付き暗号で処理する前に、対象データにＣＲＣを付けて故障検知を行う対策も考えられる。しかしながら、その場合、認証付き暗号のみ適用する場合に比べて、ＣＲＣの演算処理が増加するため送受信処理のオーバーヘッドが大きくなってしまう。また、暗号処理等の同一演算をプロセッサが二度実施するという、ソフトウェアによる二重化も考えられる。しかしながら、その場合でも、送受信処理のオーバーヘッドが大きくなってしまう。
【００１７】
以上のことから、以下ではこれらの課題の少なくとも一つを解決するための実施形態について説明する。
【００１８】
＜実施形態１＞
図１は、本実施形態１にかかる２つの半導体装置１及び２の間の通信の概念を示すブロック図である。半導体装置１及び２は、信号線３により接続され、相互にデータの通信が可能である。そして、半導体装置１及び２は、双方で予め保持する共通鍵を用いて通信対象のデータの暗号化（ｅｎｃｒｙｐｔｉｏｎ）及び復号化（ｄｅｃｒｙｐｔｉｏｎ）を、所定の暗号処理（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｐｒｏｃｅｓｓｉｎｇ）アルゴリズムを用いて行うことができるものとする。また、当該暗号処理アルゴリズムは、対象データからＭＡＣを生成し、また、検証することができるものとする。また、半導体装置１及び２は、同等の機能を有し、送信側と受信側を相互に入れ替わることが可能であるものとする。尚、半導体装置１及び２は、例えば、マイクロコンピュータ、ＭＣＵ（Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）、ＥＣＵ等であり、それぞれ同一又は異なる自動車に搭載されたものであってもよい。また、半導体装置１及び２は、半導体チップと呼ばれる場合もある。
【００１９】
ここで、まず、半導体装置１が、通信対象のデータに対して、前記共通鍵を用いて所定の暗号処理アルゴリズムにより暗号化して暗号化データ４２１を生成し、併せて、認証タグ４２２を生成したものとする。尚、認証タグ４２２は、メッセージ認証符号の一例である。そして、半導体装置１は、送信側として、暗号化データ４２１と認証タグ４２２とを含めた通信データ４２を、受信側である半導体装置２に対して、信号線３を介して送信する。そして、半導体装置２は、信号線３を介して通信データ４２を受信し、通信データ４２に含まれる暗号化データ４２１を、前記共通鍵を用いて所定の暗号処理アルゴリズムにより復号化して復号化データ（不図示）を生成し、併せて、検証タグ（不図示）を生成するものとする。そして、半導体装置２は、自身で生成した検証タグと、受信した通信データ４２に含まれる認証タグ４２２とを比較して、検証ができた場合に、復号化データが正常に受信できたとして、復号化データを以後の処理に用いる。
【００２０】
図２は、本実施形態１にかかる半導体装置１の構成を示すブロック図である。半導体装置１は、セキュリティ要件と機能安全要件をサポートするものである。半導体装置１は、セキュアＣＰＵ１１１、セキュアメモリ１１２、暗号部１１３、制御部１２１、メモリ１２２、及び通信ＩＦ（ＩｎｔｅｒＦａｃｅ）１２３を備える。ここで、セキュアＣＰＵ１１１、セキュアメモリ１１２及び暗号部１１３はセキュア領域１１に属し、制御部１２１、メモリ１２２、及び通信ＩＦ１２３は非セキュア領域１２に属する。尚、セキュア領域１１に属するセキュアＣＰＵ１１１、セキュアメモリ１１２及び暗号部１１３をまとめて、セキュアＩＰと呼ぶこともできる。そして、セキュアメモリ１１２を除く、セキュアＣＰＵ１１１、暗号部１１３、制御部１２１、メモリ１２２、及び通信ＩＦ１２３は、メインバス１３（第１のバス）を介して通信可能に接続される。また、セキュアＣＰＵ１１１、セキュアメモリ１１２及び暗号部１１３は、セキュアバス１４（第２のバス）を介して通信可能に接続される。つまり、非セキュア領域１２の制御部１２１等は、セキュア領域１１のセキュアメモリ１１２に直接アクセスすることができない。
【００２１】
セキュアＣＰＵ１１１は、制御部１２１からの要求に応じて暗号部１１３に対して暗号処理の指示を行うプロセッサである。セキュアＣＰＵ１１１は、暗号処理の指示に際し、セキュアメモリ１１２から鍵を読み出して、暗号部１１３に設定する。また、セキュアＣＰＵ１１１は、暗号処理の指示に際し、前記要求に含まれるメモリ１２２の入出力アドレスや暗号処理アルゴリズムの種別を含めた設定情報を暗号部１１３に設定する。また、セキュアＣＰＵ１１１は、当該設定情報をメモリ１２２に格納する。
【００２２】
セキュアメモリ１１２は、揮発性又は不揮発性の記憶装置である。セキュアメモリ１１２は、ＥＣＣ／ＥＤＣ１１２１及び記憶領域１１２２を備える。ＥＣＣ／ＥＤＣ１１２１は、誤り検出機構の一例である。ここで、「誤り検出機構」とは、「誤り検出」、又は、「誤り検出及び誤り訂正」を含む方式であるものとする。そのため、ＥＣＣ／ＥＤＣ１１２１は、記憶領域１１２２内のデータについて誤り検出又は訂正を行うものであればよい。
【００２３】
記憶領域１１２２は、鍵１１２３を記憶する。鍵１１２３は、暗号化又は復号化のための暗号処理に用いる鍵データである。ここでは、鍵１１２３は、半導体装置１及び２の間の共通鍵であるものとする。
【００２４】
暗号部１１３は、暗号処理を行う。ここで、暗号処理とは、例えば、ＡＥＳ−ＧＣＭ等の認証付き暗号アルゴリズムを用いた処理であり、データの暗号化及びタグ生成、又は、データの復号化及びタグ検証を含むものである。ただし、認証付き暗号アルゴリズムは、ＡＥＳ−ＧＣＭに限定されない。尚、暗号部１１３の内部構成は後述する。
【００２５】
制御部１２１は、複数のプロセッサにより冗長化された機能ブロックである。制御部１２１は、ＤＣＬＳ（Ｄｕａｌ  Ｃｏｒｅ  Ｌｏｃｋ  Ｓｔｅｐ）方式によりＣＰＵ１２１１及びＣＰＵ１２１２により冗長化されているものとする。そのため、制御部１２１は、機能安全要件を満たす。ＣＰＵ１２１１は、ＥＣＣ／ＥＤＣ１２１１０を有し、ＥＣＣ／ＥＤＣ１２１１０を用いてメインバス１３を介して他の構成のＥＣＣ／ＥＤＣとの間で送受信データの誤り検出又は訂正を行うことができる。また、ＣＰＵ１２１２は、ＥＣＣ／ＥＤＣ１２１２０を有し、同様に送受信データの誤り検出又は訂正を行うことができる。ＣＰＵ１２１１及び１２１２は、一方がマスタ、他方がチェッカの役割を果たし、マスタの処理の数クロック後にチェッカがマスタと同様の処理を実行し、双方の処理結果が一致した場合に、マスタによりメインバス１３を介して他の構成へアクセスする。但し、制御部１２１は、他の方式により冗長化構成としてもよい。
【００２６】
メモリ１２２は、揮発性又は不揮発性の記憶装置である。メモリ１２２は、ＥＣＣ／ＥＤＣ１２２０及び記憶領域（不図示）を備える。そのため、制御部１２１は、ＥＣＣ／ＥＤＣを介してメモリ１２２との通信を行うということができる。
【００２７】
通信ＩＦ１２３は、半導体装置１の外部、例えば、信号線３を介した半導体装置２との通信を行うインタフェースである。
【００２８】
尚、上述した各構成が用いる誤り検出機構として、ＥＣＣ／ＥＤＣの代わりに、ＣＲＣを採用してもよい。
【００２９】
図３は、本実施形態１にかかる暗号部１１３の内部構成を示すブロック図である。暗号部１１３は、暗号処理部３１と、暗号処理部３２と、コンペア部３３とを備える。暗号処理部３１及び３２のそれぞれは、セキュアＣＰＵ１１１からの暗号処理の指示に基づいて、鍵１１２３を用いて、メモリ１２２に格納された対象データに対する暗号処理をそれぞれ独立して行う。
【００３０】
暗号処理部３１は、マスタの暗号エンジンであり、記憶部３１１と、ＥＣＣ／ＥＤＣ３１２と、データ転送部３１３と、暗号演算回路３１４とを備える。記憶部３１１は、レジスタ等の記憶領域であり、セキュアＣＰＵ１１１により設定される設定情報３１１１及び鍵３１１２を記憶する。設定情報３１１１は、メモリ１２２内のアクセス先であるアドレス、及び、暗号処理の演算アルゴリズムの種別を含む。種別とは、例えば、ＡＥＳ−ＧＣＭの演算モードであるか、演算アルゴリズムの種類であってもよい。鍵３１１２は、上述した鍵１１２３が設定されたものであり、共通鍵である。尚、記憶部３１１は、保存又は更新されるデータを暗号処理部３２内の記憶部３２１へコピーする機構を備えるものとする。但し、この機構に代えて、セキュアＣＰＵ１１１が記憶部３１１及び３２１の両方に同一のデータを格納するようにしてもよい。
【００３１】
ＥＣＣ／ＥＤＣ３１２は、メインバス１３を介して他の構成のＥＣＣ／ＥＤＣとの間で送受信データの誤り検出又は訂正を行うことができる。データ転送部３１３は、セキュアＣＰＵ１１１を介さずに、メインバス１３を介して直接、他の構成とデータ転送を行う。
【００３２】
暗号演算回路３１４は、鍵３１１２を用いて設定情報３１１１に含まれる種別に応じた演算モードによりＡＥＳ−ＧＣＭの演算を行う。暗号演算回路３１４は、データ転送部３１３から取得した対象データに対してＡＥＳ−ＧＣＭの演算（暗号処理）を行う。このとき、暗号演算回路３１４は、暗号化の場合、対象データの暗号化及び認証タグの生成を暗号処理として行う。また、暗号演算回路３１４は、復号化の場合、対象データの復号化及び検証タグの生成を暗号処理として行う。そして、暗号演算回路３１４は、暗号処理の処理結果をコンペア部３３へ出力する。ここで、処理結果とは、暗号化の場合、暗号化データ及び認証タグであり、復号化の場合、復号化データ及び検証タグである。また、暗号演算回路３１４は、自身の処理結果をデータ転送部３１３へ出力し、ＥＣＣ／ＥＤＣ３１２を介して、メモリ１２２に格納する。
【００３３】
暗号処理部３２は、チェッカの暗号エンジンであり、記憶部３２１と、ＥＣＣ／ＥＤＣ３２２と、データ転送部３２３と、暗号演算回路３２４とを備える。尚、記憶部３２１と、ＥＣＣ／ＥＤＣ３２２と、データ転送部３２３と、暗号演算回路３２４とは、概ね、暗号処理部３１内の各構成と共通するため、ここでは、暗号処理部３１との違いについて説明する。記憶部３２１は、設定情報３２１１及び鍵３２１２を記憶する。ここで、設定情報３２１１及び鍵３２１２は、上述した通り、記憶部３１１において保存又は更新されたデータ、つまり、設定情報３１１１及び鍵３１１２と同一のデータである。
【００３４】
暗号演算回路３２４は、自身の処理結果をコンペア部３３へ通知するが、チェッカ用であるため暗号演算回路３１４とは異なり、自身の処理結果をデータ転送部３１３を通じてメインバス１３へは出力しない。
【００３５】
コンペア部３３は、故障検知回路の一例であり、暗号演算回路３１４及び３２４のそれぞれの暗号処理の処理結果を比較して、暗号処理部３１又は３２のいずれかの故障を検知する。コンペア部３３は、処理結果が一致した場合に故障無（故障を検知しない）、一致しなかった場合に故障有（故障を検知した）と判定する。コンペア部３３は、故障を検知した場合、少なくとも暗号部１１３の外部へその旨を出力する。例えば、コンペア部３３は、故障を検知した旨をセキュアＣＰＵ１１１、制御部１２１又は半導体装置１の外部へ出力する。尚、コンペア部３３は、故障を検知した場合、暗号演算回路３１４及び３２４へその旨を通知してもよい。
【００３６】
図４は、本実施形態１にかかる送信側の半導体装置１内のメモリ１２２（の記憶領域）に格納されるデータの例を示す図である。メモリ１２２は、機能安全関連データ４１と、暗号化データ４２１と、認証タグ４２２と、要求情報４３と、設定情報４４とを記憶する。機能安全関連データ４１は、送信対象データである平文４１１と、ＩＶ（Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｖｅｃｔｏｒ）４１２と、ＡＡＤ（Ａｄｄｉｔｉｏｎａｌ  Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｄａｔａ）４１３とを含む。尚、ＩＶ４１２とＡＡＤ４１３とは、ＡＥＳ−ＧＣＭに用いられるデータの一例であり、これらに限定されない。暗号化データ４２１及び認証タグ４２２は、暗号演算回路３１４による暗号処理（暗号化及びタグ生成）の処理結果である。要求情報４３は、制御部１２１がセキュアＣＰＵ１１１に対して平文４１１の暗号処理を要求した際に用いた情報である。要求情報４３は、例えば、機能安全関連データ４１が格納されたメモリ１２２内のアドレスや、暗号化データ４２１及び認証タグ４２２並びに設定情報４４を格納するためのメモリ１２２内のアドレスを含む。つまり、要求情報４３は、データ転送部３１３及び３２３がメモリ１２２へアクセスするための入出力アドレスを含む。また、要求情報４３は、暗号処理の演算アルゴリズムの種別を含む。設定情報４４は、セキュアＣＰＵ１１１が暗号部１１３に設定した設定情報３１１１（又は３２１１）をメモリ１２２に格納したものである。
【００３７】
図５及び図６は、本実施形態１にかかるデータの暗号化、検証及び送信処理の流れを示すシーケンス図である。まず、制御部１２１は、送信対象データである平文４１１を含む機能安全関連データ４１をメモリ１２２に格納する（Ｓ１０１）。次に、制御部１２１は、セキュアＣＰＵ１１１へ平文４１１に対する暗号化及び認証タグの生成を依頼する暗号化要求を行う（Ｓ１０２）。暗号化要求には、要求情報４３が含まれる。また、制御部１２１は、このタイミングで要求情報４３をメモリ１２２に格納してもよい。
【００３８】
セキュアＣＰＵ１１１は、暗号部１１３に対して鍵の設定を行う（Ｓ１０３）。具体的には、セキュアＣＰＵ１１１は、制御部１２１からの暗号化要求に応じて、セキュアメモリ１１２から鍵１１２３を読み出し、暗号部１１３に鍵１１２３を設定、つまり格納する。このとき、セキュアＣＰＵ１１１は、鍵１１２３を少なくとも暗号処理部３１の記憶部３１１に格納するものとする。そして、例えば上述の機構により、記憶部３１１に格納された鍵３１１２が記憶部３２１に鍵３２１２としてコピーされる。
【００３９】
続いて、セキュアＣＰＵ１１１は、制御部１２１からの暗号化要求に応じて、暗号部１１３に対して暗号化指示を行う（Ｓ１０４）。具体的には、セキュアＣＰＵ１１１は、暗号化要求に含まれる要求情報からメモリ１２２の入出力アドレスと、暗号処理の演算アルゴリズムの種別とを抽出し、設定情報として暗号化指示に含める。そして、セキュアＣＰＵ１１１は、少なくとも暗号処理部３１の記憶部３１１に設定情報３１１１を格納する。そして、例えば上述の機構により、記憶部３１１に格納された設定情報３１１１が記憶部３２１に設定情報３２１１としてコピーされる。
【００４０】
その後、暗号処理部３１及び３２は、セキュアＣＰＵ１１１からの暗号化指示に応じて、それぞれ独立して暗号処理を行う。ここでは、暗号処理部３１、３２の順として説明するが、並列処理又は数クロックの差であってもよい。
【００４１】
まず、暗号処理部３１は、暗号化指示に応じて、メモリ１２２から機能安全関連データ４１を読み出す（Ｓ１０５）。具体的には、暗号処理部３１は、データ転送部３２３を用いてＥＣＣ／ＥＤＣ３１２、メインバス１３を介して、設定情報３１１１に含まれる入力アドレスへアクセスし、メモリ１２２から機能安全関連データ４１を読み出して、暗号処理部３１内のレジスタ等に格納する。
【００４２】
次に、暗号処理部３１は、暗号化及び認証タグ生成を行う（Ｓ１０６）。具体的には、暗号演算回路３１４は、記憶部３１１から設定情報３１１１に含まれる暗号処理の演算アルゴリズムの種別を読み出し、ＡＥＳ−ＧＣＭの演算モードを特定する。また、暗号演算回路３１４は、記憶部３１１から鍵３１１２を読み出し、データ転送部３１３により取得された機能安全関連データ４１からＩＶ４１２及びＡＡＤ４１３を抽出する。そして、暗号演算回路３１４は、機能安全関連データ４１に含まれる平文４１１に対して、鍵３１１２、ＩＶ４１２及びＡＡＤ４１３を用いて、特定された演算モードによるＡＥＳ−ＧＣＭの演算を行う。このとき、暗号演算回路３１４は、平文４１１を暗号化して暗号化データを生成し、併せて、認証タグを生成する。そして、暗号演算回路３１４は、生成した暗号化データ及び認証タグを処理結果としてコンペア部３３へ出力する。
【００４３】
同様に、暗号処理部３２は、暗号化指示に応じて、メモリ１２２から機能安全関連データ４１を読み出し（Ｓ１０７）、暗号化及び認証タグ生成を行い（Ｓ１０８）、処理結果をコンペア部３３へ出力する。
【００４４】
その後、コンペア部３３は、暗号処理部３１及び３２のそれぞれから入力された処理結果を比較し、一致するか否かを判定する（Ｓ１０９）。処理結果が一致しないと判定した場合、コンペア部３３は、暗号部１１３の外部へ故障有の旨を出力する。また、コンペア部３３は、暗号演算回路３１４へも故障有の旨を出力してもよい。さらに、コンペア部３３は、暗号演算回路３２４に対して故障有の旨を出力してもよい。
【００４５】
暗号演算回路３１４は、自身が生成した暗号化データ及び認証タグをデータ転送部３１３へ出力し、ＥＣＣ／ＥＤＣ３１２を介して、メモリ１２２に格納する（Ｓ１１１）。そして、セキュアＣＰＵ１１１は、暗号部１１３による暗号処理後に、暗号部１１３から設定情報を読み出し、メモリ１２２へ格納する（Ｓ１１２）。例えば、セキュアＣＰＵ１１１は、暗号処理部３１の記憶部３１１から設定情報３１１１を読み出して、メインバス１３を介してメモリ１２２の出力アドレスに設定情報４４として格納する。
【００４６】
その後、制御部１２１は、メモリ１２２から要求情報４３及び設定情報４４を読み出し（Ｓ１１３）、要求情報４３と設定情報４４とを比較して（Ｓ１１４）、一致するか否かを判定する。一致すると判定した場合、制御部１２１は、セキュアＣＰＵ１１１が要求情報４３の要求通りに暗号処理を指示したと判定する。仮に、ステップＳ１１４において一致しない場合、セキュアＣＰＵ１１１の故障を検出できる。つまり、セキュアＣＰＵ１１１を冗長化することなく、セキュアＣＰＵ１１１に関する回路規模を増大させることなく、機能安全要件を満たすことができる。
【００４７】
そして、制御部１２１は、セキュアＣＰＵ１１１が要求通りに暗号処理を指示したと判定した場合、暗号化データ及び認証タグを半導体装置２へ送信する（Ｓ１１５）。具体的には、制御部１２１は、メモリ１２２から暗号化データ４２１及び認証タグ４２２を読み出して通信データ４２とし、半導体装置２を宛先として通信ＩＦ１２３へ出力する。これにより、通信ＩＦ１２３は、信号線３を介して通信データ４２を半導体装置２へ送信する。
【００４８】
尚、ステップＳ１０５、Ｓ１０７及びＳ１１１において、データ転送にＥＣＣ／ＥＤＣを用いているため、データ転送部３１３又は３２４に故障があれば、検出することができる。
【００４９】
続いて、通信データ４２の受信側の半導体装置２について説明する。まず、半導体装置２は、同等の構成であるため図示を省略し、以下の説明では同一の符号を付して説明し、以下では、半導体装置１と異なる点を中心に説明する。
【００５０】
図７は、本実施形態１にかかる受信側の半導体装置２内のメモリ１２２（の記憶領域）に格納されるデータの例を示す図である。メモリ１２２は、受信データ４５と、処理結果４６と、要求情報４７と、設定情報４８とを記憶する。受信データ４５は、半導体装置２が信号線３を介して半導体装置１から受信した通信データ４２である。受信データ４５は、暗号化データ４５１と認証タグ４５２とを含む。暗号化データ４５１及び認証タグ４５２は、上述した暗号化データ４２１及び認証タグ４２２と同様のデータである。処理結果４６は、復号化データ４６１と、検証タグ４６２とを含む。処理結果４６は、半導体装置２の暗号部１１３内の暗号演算回路３１４による暗号処理（復号化及び検証タグ生成）の処理結果である。要求情報４７は、半導体装置２の制御部１２１がセキュアＣＰＵ１１１に対して暗号化データ４５１の暗号処理（復号化及び検証タグの生成）を要求した際に用いた情報である。尚、要求情報４７は、上述した要求情報４３と同様の情報を含むものであってもよい。設定情報４８は、半導体装置２のセキュアＣＰＵ１１１が暗号部１１３に設定した設定情報３１１１（又は３２１１）をメモリ１２２に格納したものである。
【００５１】
図８及び図９は、本実施形態１にかかるデータの受信、復号化及び検証処理の流れを示すシーケンス図である。まず、通信ＩＦ１２３は、半導体装置１から信号線３を介して通信データ４２、つまり、暗号化データ４２１及び認証タグ４２２を受信し、メインバス１３を介してメモリ１２２に受信データ４５として格納する（Ｓ２０１）。尚、制御部１２１が通信ＩＦ１２３から受信データ４５を受け付けて、メモリ１２２に格納してもよい。
【００５２】
次に、制御部１２１は、セキュアＣＰＵ１１１へ暗号化データ４５１に対する復号化及び検証タグの生成を依頼する復号化要求を行う（Ｓ２０２）。復号化要求には、要求情報４７が含まれる。また、制御部１２１は、このタイミングで要求情報４７をメモリ１２２に格納してもよい。
【００５３】
セキュアＣＰＵ１１１は、上述したステップＳ１０３と同様に、暗号部１１３に対して鍵の設定を行う（Ｓ２０３）。
【００５４】
続いて、セキュアＣＰＵ１１１は、制御部１２１からの復号化要求に応じて、暗号部１１３に対して復号化指示を行う（Ｓ２０４）。具体的には、セキュアＣＰＵ１１１は、復号化要求に含まれる要求情報からメモリ１２２の入出力アドレスと、暗号処理の演算アルゴリズムの種別とを抽出し、設定情報として復号化指示に含める。設定情報の設定については、暗号化指示に応じた暗号部１１３内の処理と同様である。
【００５５】
その後、暗号処理部３１及び３２は、セキュアＣＰＵ１１１からの復号化指示に応じて、それぞれ独立して暗号処理を行う。ここでは、暗号処理部３１、３２の順として説明するが、並列処理又は数クロックの差であってもよい。
【００５６】
まず、暗号処理部３１は、復号化指示に応じて、メモリ１２２から暗号化データ４５１を読み出す（Ｓ２０５）。次に、暗号処理部３１は、復号化及び検証タグ生成を行う（Ｓ２０６）。具体的には、暗号演算回路３１４は、記憶部３１１から設定情報３１１１に含まれる暗号処理の演算アルゴリズムの種別を読み出し、ＡＥＳ−ＧＣＭの演算モードを特定する。また、暗号演算回路３１４は、記憶部３１１から鍵３１１２を読み出す。そして、暗号演算回路３１４は、暗号化データ４５１に対して、鍵３１１２を用いて、特定された演算モードによるＡＥＳ−ＧＣＭの演算を行う。このとき、暗号演算回路３１４は、暗号化データ４５１を復号化して復号化データを生成し、併せて、検証タグを生成する。そして、暗号演算回路３１４は、生成した復号化データ及び検証タグを処理結果としてコンペア部３３へ出力する。
【００５７】
同様に、暗号処理部３２は、復号化指示に応じて、メモリ１２２から暗号化データ４５１を読み出し（Ｓ２０７）、復号化及び検証タグ生成を行い（Ｓ２０８）、処理結果をコンペア部３３へ出力する。
【００５８】
その後、コンペア部３３は、暗号処理部３１及び３２のそれぞれから入力された処理結果を比較し、一致するか否かを判定する（Ｓ２０９）。処理結果が一致しないと判定した場合、コンペア部３３は、暗号部１１３の外部へ故障有の旨を出力する。また、コンペア部３３は、暗号演算回路３１４へも故障有の旨を出力してもよい。さらに、コンペア部３３は、暗号演算回路３２４に対して故障有無を出力してもよい。
【００５９】
暗号演算回路３１４は、自身が生成した復号化データ及び検証タグをデータ転送部３１３へ出力し、ＥＣＣ／ＥＤＣ３１２を介して、メモリ１２２に格納する（Ｓ２１１）。そして、セキュアＣＰＵ１１１は、暗号部１１３による暗号処理後に、暗号部１１３から設定情報を読み出し、メモリ１２２へ格納する（Ｓ２１２）。
【００６０】
その後、制御部１２１は、メモリ１２２から要求情報４７及び設定情報４８を読み出し（Ｓ２１３）、要求情報４７と設定情報４８とを比較して（Ｓ２１４）、一致するか否かを判定する。一致すると判定した場合、制御部１２１は、セキュアＣＰＵ１１１が要求情報４７の要求通りに暗号処理を指示したと判定する。仮に、ステップＳ２１４において一致しない場合、セキュアＣＰＵ１１１の故障を検出できる。
【００６１】
そして、制御部１２１は、ステップＳ２１４において一致すると判定した場合、メモリ１２２から認証タグ４５２及び検証タグ４６２を読み出し（Ｓ２１５）、認証タグ４５２と検証タグ４６２とを比較して（Ｓ２１６）、一致するか否かを判定する。一致すると判定した場合、制御部１２１は、受信データ４５が認証できた（認証結果がパスした）と判定する。よって、制御部１２１は、復号化データ４６１を使用して後続の処理を進めることができる。一方、ステップＳ２１６において一致しない場合、受信データ４５が認証できないため、制御部１２１は、復号化データ４６１等を破棄する。
【００６２】
このように、本実施形態では、セキュア領域１１に属するセキュアＣＰＵ１１１についてＤＣＬＳの対象外としているが、セキュリティ要件と機能安全要件を満たすことができる。そのため、セキュア領域１１全体を二重化する場合と比べて回路規模の増大を抑制し、低コストで機能安全に対応できる。
【００６３】
また、制御部１２１側で暗号処理の対象データについてＣＲＣによるエラー訂正符号の付与及び確認を行っていない。よって、ＣＲＣを処理するオーバーヘッドを抑えることができる。また、ソフトウェアによる暗号処理（暗号化又は復号化）の二重化や検算を必要としていない。よって、ソフトウェア処理のオーバーヘッドを抑えることができる。そのため、送信側及び受信側がそれぞれ一度の処理で暗号処理を完結できるため、高効率にデータ処理が可能となる。
【００６４】
以上のことから、本実施形態では、暗号エンジン部分（暗号部１１３）をＤＣＬＳ化し、各暗号エンジンにデータ転送部を設け、ＥＣＣ／ＥＤＣを付与している。そのため、機能安全関係のデータへのセキュリティサービスの適用が、低コストかつ高効率に実施することが可能となる。
【００６５】
尚、本実施形態は、次のように捉えることも可能である。まず、本実施形態は、半導体装置におけるセキュア領域１１側の故障として検出することができる。そのための一手段として、暗号処理部を冗長化し、各暗号処理部の処理結果をコンペア部により比較している。これにより、暗号エンジンによる暗号処理の故障を検知することができる。
【００６６】
他の手段として、各暗号エンジンにデータ転送部を設け、ＥＣＣ／ＥＤＣを用いて（セキュアＣＰＵを介さずに）で非セキュア領域１２側のメモリ１２２と直接データ転送を行うことである。これにより、セキュア領域１１側と非セキュア領域１２側のメモリ１２２との通信故障を検知することができる。
【００６７】
また、他の手段として、非セキュア領域１２側のプロセッサが、セキュア領域１１側のセキュアＣＰＵへ暗号処理を要求した際の要求情報をメモリ１２２に保持しておく。そして、セキュアＣＰＵが暗号エンジンに指示した際の設定情報を非セキュア領域１２側のメモリ１２２へ格納する。その後、非セキュア領域１２側のプロセッサが設定情報と要求情報との比較により、セキュアＣＰＵの検証を行う。これにより、セキュアＣＰＵを冗長化せずに、故障を検知することができる。
【００６８】
尚、本実施形態は、次のように表現することもできる。すなわち、本実施形態にかかる半導体装置は、制御部と、メモリと、セキュアメモリと、暗号部と、セキュアプロセッサと、第１のバスと、第２のバスと、を備えるものである。ここで、制御部は、複数のプロセッサにより冗長化されたものである。メモリは、対象データを記憶する。セキュアメモリは、暗号化又は復号化のための暗号処理に用いる鍵を記憶する。暗号部は、前記暗号処理を行う。セキュアプロセッサは、前記制御部からの要求に応じて前記暗号部に対して前記暗号処理の指示を行う。第１のバスは、前記制御部、前記メモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する。第２のバスは、前記セキュアメモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する。そして、前記制御部は、所定の誤り検出機構を介して前記メモリとの通信を行う。前記暗号部は、前記指示に基づいて、前記鍵を用いて前記対象データに対する前記暗号処理をそれぞれ独立して行う複数の暗号処理部を含む。前記複数の暗号処理部のそれぞれは、前記メモリとのデータ転送を、前記誤り検出機構を介して行うデータ転送部を備える。
【００６９】
これにより、セキュアプロセッサの冗長化なしにセキュア領域と非セキュア領域間の通信の不正を検知することができる。暗号処理部を冗長化しているため、例えば、制御部で暗号処理結果を比較、検証しても、暗号処理の故障を検知することが可能である。また、セキュア領域全体の冗長化と比べて回路規模の増大を抑制できる。
【００７０】
また、前記暗号部は、前記複数の暗号処理部のそれぞれの前記暗号処理の処理結果を比較して前記暗号処理部のいずれかの故障を検知する故障検知回路をさらに含むことが望ましい。このように、ハードウェア処理により比較することで、冗長化した暗号エンジン間の故障検知を高速化できる。
【００７１】
さらに、前記複数の暗号処理部のうち第１の暗号処理部は、自身の前記暗号処理の処理結果を、前記データ転送部を用いて前記メモリへ格納するとよい。そして、前記複数の暗号処理部のうち他の暗号処理部は、自身の前記暗号処理の処理結果を破棄するとよい。これにより、マスタの暗号エンジンの処理結果のみの転送となり、転送量を最小限に抑えることができる。
【００７２】
また、前記セキュアプロセッサは、前記指示において前記暗号部に設定した前記暗号処理に関する設定情報を前記メモリへ格納し、前記制御部は、前記セキュアプロセッサに対する前記要求に用いた要求情報と、前記メモリに格納された前記設定情報とに基づいて、前記セキュアプロセッサの故障を検知することが望ましい。これにより、セキュアプロセッサの冗長化なしに、故障を検知できる。
【００７３】
さらに、前記セキュアプロセッサは、前記要求情報に含まれる前記メモリ内のアクセス先であるアドレスを、前記設定情報に含めて、前記暗号部に設定し、前記データ転送部は、前記メモリ内の前記アドレスに対してアクセスを行うとよい。これにより、効率的にデータ転送を行うことができる。
【００７４】
また、前記複数の暗号処理部のそれぞれは、前記対象データが他の半導体装置への送信データである場合、前記指示に基づいて、前記鍵を用いて前記対象データに対する暗号化及びメッセージ認証符号の生成を前記暗号処理として行うことが望ましい。これにより、送信時の暗号処理についてセキュリティ要件及び機能安全要件を満たすことができる。
【００７５】
前記複数の暗号処理部のそれぞれは、前記対象データが他の半導体装置からの受信データである場合、前記指示に基づいて、前記鍵を用いて前記対象データに対する復号化及び第１のメッセージ認証符号の生成を前記暗号処理として行うことが望ましい。これにより、受信時の暗号処理についてセキュリティ要件及び機能安全要件を満たすことができる。
【００７６】
さらに、前記受信データは、前記他の半導体装置において前記鍵を用いて所定のデータから暗号化された暗号データ及び生成された第２のメッセージ認証符号を含むものとする。この場合、前記複数の暗号処理部のうち少なくとも第１の暗号処理部は、前記復号化された復号化データ及び前記第１のメッセージ認証符号を、前記データ転送部を用いて前記メモリへ格納するとよい。そして、前記制御部は、前記メモリに格納された前記第１のメッセージ認証符号と前記第２のメッセージ認証符号とを比較して、前記第１の暗号処理部の故障を検知するとよい。これにより、メッセージ認証をより適切に行うことができる。
【００７７】
尚、本実施形態は次のように表現することもできる。すなわち、本実施形態にかかる半導体装置は、制御部と、メモリと、セキュアメモリと、暗号部と、セキュアプロセッサと、第１のバスと、第２のバスと、を備えるものである。ここで、制御部は、複数のプロセッサにより冗長化されたものである。メモリは、対象データを記憶する。セキュアメモリは、暗号化又は復号化のための暗号処理に用いる鍵を記憶する。暗号部は、前記暗号処理を行う。セキュアプロセッサは、前記制御部からの要求に応じて前記暗号部に対して前記暗号処理の指示を行う。第１のバスは、前記制御部、前記メモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する。第２のバスは、前記セキュアメモリ、前記暗号部及び前記セキュアプロセッサを通信可能に接続する。そして、前記制御部は、所定の誤り検出機構を介して前記メモリとの通信を行う。前記暗号部は、前記指示に基づいて、前記鍵を用いて前記対象データに対する前記暗号処理をそれぞれ独立して行う複数の暗号処理部を含む。前記セキュアプロセッサは、前記指示において前記暗号部に設定した前記暗号処理に関する設定情報を前記メモリへ格納する。前記制御部は、前記セキュアプロセッサに対する前記要求に用いた要求情報と、前記メモリに格納された前記設定情報とに基づいて、前記セキュアプロセッサの故障を検知する。
【００７８】
これにより、セキュアプロセッサの冗長化なしにセキュア領域と非セキュア領域間の通信の故障を検知することができる。暗号処理部を冗長化しているため、例えば、制御部で暗号処理結果を比較、検証しても、暗号処理の故障を検知することが可能である。また、セキュア領域全体の冗長化と比べて回路規模の増大を抑制できる。
【００７９】
または、本実施形態は次のように表現することもできる。すなわち、本実施形態にかかる半導体装置の制御方法は、上述した半導体装置を制御するものである。そして、前記セキュアプロセッサが、前記制御部からの要求に応じて前記暗号部に対して前記暗号処理の指示を行う。そして、前記複数の暗号処理部のそれぞれが、前記指示に基づいて、前記メモリから前記誤り検出機構を介して前記対象データを取得し、前記鍵を用いて前記対象データに対する前記暗号処理を行う。その後、前記複数の暗号処理部の少なくとも１つが、自身の前記暗号処理の処理結果を、前記誤り検出機構を介して前記メモリへ格納する。これにより、上記と同様の効果を奏する。
【００８０】
＜実施形態２＞
本実施形態２は、上述した実施形態１の改良例である。本実施形態２では、暗号処理部にタグ比較器を追加したものである。尚、タグ比較器自体は必ずしも冗長化する必要はない。すなわち、前記複数の暗号処理部のうち少なくとも第１の暗号処理部は、前記データ転送部を用いて前記メモリから取得された第２のメッセージ認証符号と、前記第１のメッセージ認証符号とを比較する比較器をさらに含むものである。この場合、前記受信データは、前記他の半導体装置において前記鍵を用いて所定のデータから暗号化された暗号データ及び生成された第２のメッセージ認証符号を含むものとする。これにより、非セキュア領域１２側での認証タグ４５２と検証タグ４６２の比較処理が不要となり、実施形態１と比べてＣＰＵによるソフトウェアの処理負荷を軽減できる。
【００８１】
さらに、前記第１の暗号処理部は、前記復号化された復号化データ及び前記比較器による比較結果を前記データ転送部を用いて前記メモリへ格納し、前記制御部は、前記メモリに格納された前記比較結果が不一致を示す場合、前記復号化データを破棄するとよい。
【００８２】
ここで、本実施形態２にかかる２つの半導体装置１及び２の間の通信の概念は上述した図１と同様であるため、図示及び説明を省略する。図１０は、本実施形態２にかかる受信側の半導体装置２ａの構成を示すブロック図である。半導体装置２ａは、概ね、上述した半導体装置１及び２と同等の構成であるが、暗号部１１３ａと制御部１２１ａが変更されている。
【００８３】
図１１は、本実施形態２にかかる暗号部１１３ａの内部構成を示すブロック図である。暗号部１１３ａは、暗号処理部３１ａ、暗号処理部３２ａ及びコンペア部３３を備える。以下では、図３の暗号部１１３と異なる点を中心に説明し、他の構成は同等であるため説明を省略する。
【００８４】
暗号処理部３１ａは、暗号処理部３１との違いとして、データ転送部３１３ａ、暗号演算回路３１４ａ及びタグ比較器３１５を備える。データ転送部３１３ａは、データ転送部３１３の処理に加え、メモリ１２２から認証タグ４５２を取得し、タグ比較器３１５へ出力する。暗号演算回路３１４ａは、暗号演算回路３１４の処理に加え、生成した検証タグをタグ比較器３１５へも出力する。タグ比較器３１５は、暗号演算回路３１４が生成した検証タグと、メモリ１２２から取得した認証タグ４５２とを比較し、一致するか否かを判定する。タグ比較器３１５は、判定結果、つまりタグ比較結果をデータ転送部３１３ａへ出力し、ＥＣＣ／ＥＤＣ３１２を介して、メモリ１２２に格納する。また、タグ比較器３１５は、タグ比較結果が一致しないことを示す場合に不正有（不正を検知した）と判定し、暗号部１１３ａの外部へその旨を出力してもよい。尚、暗号演算回路３１４ａは、検証タグをデータ転送部３１３ａへ出力しなくてもよい。つまり、暗号部１１３ａは、処理結果にマスタが生成した検証タグを含めなくてもよい。
【００８５】
また、同様に、暗号処理部３２ａは、暗号処理部３２との違いとして、データ転送部３２３ａ、暗号演算回路３２４ａ及びタグ比較器３２５を備える。データ転送部３２３ａ、暗号演算回路３２４ａ及びタグ比較器３２５は、概ね、データ転送部３１３ａ、暗号演算回路３１４ａ及びタグ比較器３１５と同等である。但し、タグ比較器３２５は、タグ比較器３１５と異なり、タグ比較結果をデータ転送部３１３ａへ出力しなくてもよい。
【００８６】
図１０に戻り説明を続ける。制御部１２１ａは、制御部１２１と比べて、実行されるソフトウェアが異なっており、認証タグと検証タグとの比較を行わない。代わりに、制御部１２１ａは、メモリ１２２に格納されたタグ比較結果が不一致を示す場合、復号化データを破棄する。
【００８７】
尚、本実施形態２にかかる送信側の半導体装置も半導体装置２ａと同様の構成を用いることができる。
【００８８】
図１２は、本実施形態２にかかる受信側の半導体装置２ａ内のメモリ１２２（の記憶領域）に格納されるデータの例を示す図である。メモリ１２２は、図７との違いとして、処理結果４６ａにタグ比較結果４６３を含む。タグ比較結果４６３は、上述した通り、半導体装置２ａの暗号部１１３ａ内のタグ比較器３１５による認証タグ４５２と検証タグとの比較結果、例えば、フラグ情報である。
【００８９】
図１３及び図１４は、本実施形態２にかかるデータの受信、復号化及び検証処理の流れを示すシーケンス図である。ここで、図８のステップＳ２０１からＳ２０８までは同様であるため、図示及び説明を省略する。ステップＳ２０８の後、暗号処理部３１ａのタグ比較器３１５は、暗号演算回路３１４ａから出力された検証タグに応じて、メモリ１２２から認証タグ４５２を読み出す（Ｓ３１０）。そして、タグ比較器３１５は、認証タグ４５２と検証タグとを比較し、一致するか否かを判定する（Ｓ３１１）。タグ比較器３１５は、タグ比較結果をデータ転送部３１３ａへ出力する。
【００９０】
同様に、暗号処理部３２ａのタグ比較器３２５は、暗号演算回路３２４ａから出力された検証タグに応じて、メモリ１２２から認証タグ４５２を読み出す（Ｓ３１２）。そして、タグ比較器３２５は、認証タグ４５２と検証タグとを比較し、一致するか否かを判定する（Ｓ３１３）。仮に、ステップＳ３１１又はＳ３１３において、不一致と判定された場合、タグ比較器３１５又は３２５は、受信データ４５の認証に失敗した旨を暗号部１１３ａの外部へ出力してもよい。
【００９１】
ステップＳ３１０からＳ３１３と前後して、又は、これらと並行して、コンペア部３３は、ステップＳ２０９と同様に、暗号処理部３１ａ及び３２ａのそれぞれから入力された処理結果を比較し（Ｓ３１４）、処理結果が一致しない場合、暗号部１１３ａの外部へ故障有の旨を出力する。
【００９２】
暗号演算回路３１４は、自身が生成した復号化データをデータ転送部３１３へ出力する。そのため、データ転送部３１３は、暗号演算回路３１４から取得した復号化データ及びタグ比較器３１５から取得したタグ比較結果を、ＥＣＣ／ＥＤＣ３１２を介して、メモリ１２２に格納する（Ｓ３１６）。そして、セキュアＣＰＵ１１１は、暗号部１１３ａによる暗号処理後に、暗号部１１３ａから設定情報を読み出し、メモリ１２２へ格納する（Ｓ３１７）。
【００９３】
その後、制御部１２１は、メモリ１２２から要求情報４７及び設定情報４８を読み出し（Ｓ３１８）、要求情報４７と設定情報４８とを比較して（Ｓ３１９）、一致するか否かを判定する。一致すると判定した場合、制御部１２１は、セキュアＣＰＵ１１１が要求情報４７の要求通りに暗号処理を指示したと判定する。仮に、ステップＳ３１９において一致しない場合、セキュアＣＰＵ１１１の故障を検出できる。
【００９４】
そして、制御部１２１は、ステップＳ３１９において一致すると判定した場合、メモリ１２２からタグ比較結果４６３を読み出し（Ｓ３２０）、タグ比較結果４６３が示すフラグ情報を確認する（Ｓ３２１）。すなわち、制御部１２１は、認証タグ４５２と暗号処理部３１ａにより生成された検証タグとが一致するか否かを確認する。タグ比較結果４６３が一致を示す場合、制御部１２１は、受信データ４５が認証できた（認証結果がパスした）と判定する。よって、制御部１２１は、復号化データ４６１を使用して後続の処理を進めることができる。一方、ステップＳ３２１において一致しない場合、受信データ４５が認証できないため、制御部１２１は、復号化データ４６１等を破棄する。
【００９５】
以上のことから、本実施形態２では、実施形態１と比べてＣＰＵによるソフトウェアの処理負荷を軽減できる。
【００９６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００９７】
１  半導体装置
１１  セキュア領域
１１１  セキュアＣＰＵ
１１２  セキュアメモリ
１１２１  ＥＣＣ／ＥＤＣ
１１２２  記憶領域
１１２３  鍵
１１３  暗号部
１１３ａ  暗号部
１２  非セキュア領域
１２１  制御部
１２１ａ  制御部
１２１１  ＣＰＵ
１２１１０  ＥＣＣ／ＥＤＣ
１２１２  ＣＰＵ
１２１２０  ＥＣＣ／ＥＤＣ
１２２  メモリ
１２２０  ＥＣＣ／ＥＤＣ
１２３  通信ＩＦ
１２３０  ＥＣＣ／ＥＤＣ
１３  メインバス
１４  セキュアバス
２  半導体装置
２ａ  半導体装置
３  信号線
３１  暗号処理部
３１ａ  暗号処理部
３１１  記憶部
３１１１  設定情報
３１１２  鍵
３１２  ＥＣＣ／ＥＤＣ
３１３  データ転送部
３１３ａ  データ転送部
３１４  暗号演算回路
３１４ａ  暗号演算回路
３１５  タグ比較器
３２  暗号処理部
３２ａ  暗号処理部
３２１  記憶部
３２１１  設定情報
３２１２  鍵
３２２  ＥＣＣ／ＥＤＣ
３２３  データ転送部
３２３ａ  データ転送部
３２４  暗号演算回路
３２４ａ  暗号演算回路
３２５  タグ比較器
３３  コンペア部
４１  機能安全関連データ
４１１  平文
４１２  ＩＶ
４１３  ＡＡＤ
４２  通信データ
４２１  暗号化データ
４２２  認証タグ
４３  要求情報
４４  設定情報
４５  受信データ
４５１  暗号化データ
４５２  認証タグ
４６  処理結果
４６ａ  処理結果
４６１  復号化データ
４６２  検証タグ
４６３  タグ比較結果
４７  要求情報
４８  設定情報
【図１】
2020064332.tif 000003
【図２】
2020064332.tif 000004
【図３】
2020064332.tif 000005
【図４】
2020064332.tif 000006
【図５】
2020064332.tif 000007
【図６】
2020064332.tif 000008
【図７】
2020064332.tif 000009
【図８】
2020064332.tif 000010
【図９】
2020064332.tif 000011
【図１０】
2020064332.tif 000012
【図１１】
2020064332.tif 000013
【図１２】
2020064332.tif 000014
【図１３】
2020064332.tif 000015
【図１４】
2020064332.tif 000016