(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024051537
(43)【公開日】2024-04-11
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06F 21/62 20130101AFI20240404BHJP
H04L 9/08 20060101ALI20240404BHJP
G06F 21/60 20130101ALI20240404BHJP
【FI】
G06F21/62
H04L9/08 A
G06F21/60 320
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022157755
(22)【出願日】2022-09-30
(71)【出願人】
【識別番号】320012037
【氏名又は名称】ラピステクノロジー株式会社
(74)【代理人】
【識別番号】110001025
【氏名又は名称】弁理士法人レクスト国際特許事務所
(72)【発明者】
【氏名】熊木 大輔
(57)【要約】
【課題】CPUのアクセスによる暗号鍵の漏洩を抑制することが可能な半導体装置を提供する。
【解決手段】半導体装置は、第1のデータバスと、暗号鍵を生成し、生成した暗号鍵を読出要求に応じて第1のデータバスに送出する暗号鍵生成部と、読出要求を暗号鍵生成部に供給する第1の制御部と、読出要求に応じて第1のデータバスに送出された暗号鍵を保持しこれ用いてデータを暗号化して暗号データを生成する暗号処理部と、第1のデータバスと独立した第2のデータバスと、暗号処理部の暗号データを取得して第2のデータバスに送出する第2の制御部と、を含む。暗号処理部は第2のデータバスを介した第2の制御部からのアクセスを検出する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1のデータバスと、
暗号鍵を生成し、生成した前記暗号鍵を読出要求に応じて前記第1のデータバスに送出する暗号鍵生成部と、
前記読出要求を前記暗号鍵生成部に供給する第1の制御部と、
前記読出要求に応じて前記第1のデータバスに送出された前記暗号鍵を保持しこれ用いてデータを暗号化して暗号データを生成する暗号処理部と、
前記第1のデータバスと独立した第2のデータバスと、
前記暗号処理部の前記暗号データを取得して前記第2のデータバスに送出する第2の制御部と、
を含み、
前記暗号処理部は前記第2のデータバスを介した前記第2の制御部からのアクセスを検出することを特徴とする半導体装置。
【請求項2】
前記暗号処理部が前記第2のデータバスを介した前記第2の制御部からのアクセスを検出した場合、前記第2の制御部が、動作可能である第1の状態から動作不能である第2の状態に移行することを特徴とする請求項1に記載の半導体装置。
【請求項3】
前記第2の制御部が前記第2の状態にある際に、前記暗号処理部の前記暗号データを取得して前記第2のデータバスに送出する第3の制御部をさらに含むことを特徴とする請求項2に記載の半導体装置。
【請求項4】
前記暗号処理部は、
前記暗号処理部が前記暗号鍵を有していることを示す第1のフラグと、
前記第2の制御部から前記第2のデータバスを介してアクセスが有ったことを示す第2のフラグと、
前記第3の制御部から前記第2のデータバスを介してアクセスが有ったことを示す第3のフラグと、を保持するレジスタを有し、
前記暗号処理部は、前記第1のフラグを検出すると共に、前記第2のフラグ及び前記第3のフラグの少なくとも一方を検出することによって前記アクセスの検出をすることを特徴とする請求項3に記載の半導体装置。
【請求項5】
前記暗号処理部は、前記第1のフラグ及び前記第2のフラグを検出した場合、前記第2の制御部を、動作可能とする第1の状態から動作不能とする第2の状態に移行させることを特徴とする請求項4に記載の半導体装置。
【請求項6】
前記暗号処理部は、前記第1のフラグ及び前記第3のフラグを検出した場合、前記第3の制御部を、動作可能とする第3の状態から動作不能とする第4の状態に移行させ、半導体装置自体を動作不能とすることを特徴とする請求項5に記載の半導体装置。
【請求項7】
前記暗号処理部は、
通常動作時の通常電圧値と、
前記暗号処理部が前記暗号鍵を有していることを示す第1の電圧値と、
前記第2の制御部から前記第2のデータバスを介してアクセスが有ったことを示す第2の電圧値と、
前記第3の制御部から前記第2のデータバスを介してアクセスが有ったことを示す第3の電圧値と、のいずれかの電圧値の電圧に動作電圧を調整する電圧調整部を有し、
前記暗号処理部は、前記第1の電圧値を検出すると共に、前記第2の電圧値及び前記第3の電圧値の少なくとも一方を検出することによって前記アクセスの検出をすることを特徴とする請求項3に記載の半導体装置。
【請求項8】
前記暗号処理部は、前記第1の電圧値で動作している状態で前記第2の制御部からの前記アクセスを検出した場合、前記第2の電圧値に変動して動作し、前記第2の制御部を、動作可能とする第1の状態から動作不能とする前記第2の状態に移行させることを特徴とする請求項7に記載の半導体装置。
【請求項9】
前記暗号処理部は、前記第1の電圧値で動作している状態で前記第3の制御部からの前記アクセスを検出した場合、前記第3の電圧値に変動して動作し、前記第3の制御部を、動作可能とする第3の状態から動作不能とする第4の状態に移行させ、半導体装置自体を動作不能とすることを特徴とする請求項8に記載の半導体装置。
【請求項10】
前記暗号処理部は、前記第2のデータバスを介した前記第2の制御部からのアクセスを検出した場合、前記第1のデータバスを介して受けた前記暗号鍵を消去することを特徴とする請求項1から9のいずれか1項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置、特にデータを暗号化するための暗号鍵を記憶する半導体装置に関する。
【背景技術】
【0002】
一般的な無線通信システム等では通信データは暗号化されて送受信される。該システムでは、ハッキング等の危険性が残る領域(ノーマル領域)と区別して、暗号化に用いるデータや暗号鍵等を保存、管理するための高度なセキュリティを確保した部分(秘匿対象領域であるセキュア領域)が必要である。また、外部から当該システムに不正なアクセスがあった場合でも秘匿対象である暗号鍵を守りつつ通信を継続することが必要であり、さらに、不正なアクセスがあった時はシステム停止できることも必要である。
【0003】
特許文献1と特許文献2には、セキュア領域にバス、DMAC(Direct Memory Access Controller)、RAM(Random Access Memory)を追加して暗号化処理の中にCPU(Central Processing Unit)を含ませない半導体装置が開示されている。特許文献3には、情報処理装置においてCPUを複数用いて、不正アクセスがあった場合はシステム停止する構成が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2019-121955号公報
【特許文献2】特開2019-118064号公報
【特許文献3】特開2015-171008号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、従来技術では、暗号鍵は秘匿対象であるにも関わらず、CPUが不正読み出しした時に容易に漏洩してしまい、かつCPUによる異常な動作が継続する問題があった。
【0006】
そこで、本発明は、以上の従来技術の問題点に鑑みなされたものであり、CPUのアクセスによる暗号鍵の漏洩を抑制することが可能な半導体装置を提供することを目的の一つとしている。
【課題を解決するための手段】
【0007】
本発明に係る半導体装置は、第1のデータバスと、
暗号鍵を生成し、生成した前記暗号鍵を読出要求に応じて前記第1のデータバスに送出する暗号鍵生成部と、
前記読出要求を前記暗号鍵生成部に供給する第1の制御部と、
前記読出要求に応じて前記第1のデータバスに送出された前記暗号鍵を保持しこれ用いてデータを暗号化して暗号データを生成する暗号処理部と、
前記第1のデータバスと独立した第2のデータバスと、
前記暗号処理部の前記暗号データを取得して前記第2のデータバスに送出する第2の制御部と、
を含み、
前記暗号処理部は前記第2のデータバスを介した前記第2の制御部からのアクセスを検出することを特徴とする。
【発明の効果】
【0008】
本発明によれば、セキュア領域のデータバス、DMAC及びRAMを追加して、暗号化処理中にCPUを含ませない構成や、CPUからのアクセスがあった場合の該アクセスの検知を暗号処理部自体で行う構成や、同場合にて暗号処理部で暗号鍵を消去する処理を行う構成等により、例えば、無線通信システムにおける通信データの暗号化に使われる暗号鍵の秘匿性を向上できる。
【図面の簡単な説明】
【0009】
【
図1】本発明に係る第1の実施例の半導体装置に含まれるマイクロコンピュータ100の構成を示すブロック図である。
【
図2】第1の実施例のマイクロコンピュータ100内で行われるセキュアDMAC18による、乱数生成部13から暗号鍵EKYを、セキュアRAM16から平文PLTを読み出す様子を表すブロック図である。
【
図3】第1の実施例のマイクロコンピュータ100内で行われるセキュアDMAC18による、暗号鍵EKYと平文PLTを暗号処理部12へ転送する様子を表すブロック図である。
【
図4】第1の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、レジスタRGTのフラグFG1をセットする様子を表すブロック図である。
【
図5】第1の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、暗号化演算の実行と暗号化演算完了のセキュアDMAC18への通知の様子を表すブロック図である。
【
図6】第1の実施例のマイクロコンピュータ100内で行われるセキュアDMAC18による、暗号処理部12からの暗号文を読み出して、これをセキュアRAM16並びにCPU14に転送する様子を表すブロック図である。
【
図7】第1の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、CPU14が暗号処理部12にアクセスした際の暗号鍵EKYを消去する様子を表すブロック図である。
【
図8】第1の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、CPU14の暗号処理部12へのアクセス後におけるレジスタRGTのフラグFG1、FG2をセットする様子を表すブロック図である。
【
図9】第1の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、CPU14の暗号処理部12へのアクセス後におけるCPU14、CPU17へ状態の変更指令をする様子を表すブロック図である。
【
図10】第2の実施例のマイクロコンピュータ100内で行われるセキュアDMAC18による、暗号処理部12からの暗号文を読み出して、これをセキュアRAM16並びにCPU17に転送する様子を表すブロック図である。
【
図11】第2の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、CPU17が暗号処理部12にアクセスした際の暗号鍵EKYを消去する様子を表すブロック図である。
【
図12】第2の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、CPU17の暗号処理部12へのアクセス後におけるレジスタRGTのフラグFG1、FG3をセットする様子を表すブロック図である。
【
図13】第2の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、CPU17の暗号処理部12へのアクセス後におけるCPU17へ状態の変更指令をする様子を表すブロック図である。
【
図14】本発明に係る第3の実施例の半導体装置に含まれるマイクロコンピュータ100の構成を示すブロック図である。
【
図15】第3の実施例のマイクロコンピュータ100内で行われる暗号処理部12における電圧調整部VRGが暗号処理部12の動作電圧を調整する場合の該動作電圧Vの経時変化を説明するグラフである。
【
図16】第3の実施例のマイクロコンピュータ100内で行われるセキュアDMAC18による、乱数生成部13から暗号鍵EKYを、セキュアRAM16から平文PLTを読み出す様子を表すブロック図である。
【
図17】第3の実施例のマイクロコンピュータ100内で行われるセキュアDMAC18による、暗号鍵EKYと平文PLTを暗号処理部12へ転送する様子を表すブロック図である。
【
図18】第3の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、CPU14が暗号処理部12にアクセスした際の暗号鍵EKYを消去する様子を表すブロック図である。
【
図19】第3の実施例のマイクロコンピュータ100内で行われるセキュアDMAC18による、乱数生成部13から暗号鍵EKYを、セキュアRAM16から平文PLTを読み出す様子を表すブロック図である。
【
図20】第3の実施例のマイクロコンピュータ100内で行われるセキュアDMAC18による、暗号鍵EKYと平文PLTを暗号処理部12へ転送する様子を表すブロック図である。
【
図21】第3の実施例のマイクロコンピュータ100内で行われる暗号処理部12による、CPU17が暗号処理部12にアクセスした際の暗号鍵EKYを消去する様子を表すブロック図である。
【発明を実施するための形態】
【0010】
以下、図面を参照しつつ本発明による実施例について詳細に説明する。なお、実施例において、実質的に同一の機能及び構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0011】
(第1の実施例)
図1は、本発明に係る第1の実施例の半導体装置に含まれるマイクロコンピュータ100の構成を示すブロック図である。
【0012】
マイクロコンピュータ100は、暗号処理部12、乱数生成部13(暗号鍵生成部)、CPU14、RAM15、セキュアRAM16、CPU17及びセキュアDMAC18(第1の制御部)を有する。
【0013】
更に、マイクロコンピュータ100は、データ転送に使用する2系統のデータバスBS9(第1のデータバス)及びデータバスBS1(第2のデータバス)を含む。マイクロコンピュータ100は、外部接続された機器とのデータ通信が可能であり、当該データバスBS1を介して各種データの送信又は受信を行う。
【0014】
データバスBS1には、暗号処理部12、乱数生成部13、CPU14(第2の制御部)、RAM15、及びCPU17(第3の制御部)がノーマル領域として接続されている。
【0015】
データバスBS9は、データバスBS1には接続されておらず、且つマイクロコンピュータ100の外部からのアクセス不可な独立したバスである。データバスBS9は暗号処理部12及び乱数生成部13、並びに、秘匿性を要求されるセキュア領域のセキュアRAM16及びセキュアDMAC18に接続されている。
【0016】
暗号処理部12は、受信した暗号化前の平文データ片(以下、単に平文ともいう)を、暗号鍵を用いて暗号化して暗号文データ片(以下、単に暗号文ともいう)を生成し、これをデータバスに送出する。また、暗号処理部12は、暗号処理部の状態を表すレジスタRGTを含む。
【0017】
レジスタRGTには、該状態を表すフラグFG1(第1のフラグ)、FG2(第2のフラグ)、FG3(第3のフラグ)が保持されている。
【0018】
フラグFG1は秘匿対象データの暗号鍵が暗号処理部12に有ることを示し、フラグFG1には暗号鍵が受信され存在する場合には論理レベル1、暗号鍵が存在ない場合には論理レベル0の2値のフラグが保持される。フラグFG1はセキュアRAM16から暗号処理部12が暗号鍵を受け付けた場合に論理レベル1に書き換えられる。
【0019】
フラグFG2は、暗号処理部12にCPU14から不正読み出しがあったことを示し、不正読み出しがあった場合には論理レベル1、不正読み出しがない場合には論理レベル0の2値のフラグがレジスタRGTに保持される。
【0020】
フラグFG3は、暗号処理部12にCPU17から不正読み出しがあったことを示し、不正読み出しがあった場合には論理レベル1、不正読み出しがない場合には論理レベル0の2値のフラグがレジスタRGTに保持される。
【0021】
なお、暗号処理部12は、データバスを介して受け付けた暗号文を、暗号鍵を用いて復号することにより、暗号化前の平文を復元することができる。
【0022】
乱数生成部13は、所定の一定周期で乱数値が変化する乱数を生成し、これをデータバスBS9に送出する。
【0023】
CPU14は、マイクロコンピュータ100の中央演算処理装置であり、所定の記憶部(図示せず)に格納されているプログラムに従った各種の演算、或いはデータ転送を行う。
【0024】
RAM15は、データ書き込みが可能な記憶素子であり、CPU14によってデータの書込又は読出が行われる。
【0025】
セキュアRAM16は、セキュアDMAC18からのデータ書込アクセスに応じて、データバスBS9を介して受け付けたデータを記憶する。また、セキュアRAM16は、セキュアDMAC18からのデータ読出アクセスに応じて、自身に記憶されているデータを読み出し、これをデータバスBS9に送出する。セキュアRAM16は、CPU14からのデータ読出アクセスは受け付けない。セキュアRAM16はデータバスBS9に接続された書き込み可の記憶素子であり、セキュアDMAC18によってデータの読み出し、書き込みが実行される。また、セキュアRAM16は、CPU14とCPU17によるセキュアRAM16へのデータの書き込みのみが実行(片矢印)できるセキュア領域として扱われる。
【0026】
セキュアDMAC18は、データバスBS9に接続されたダイレクトメモリアクセスコントローラであり、暗号処理部12、乱数生成部13、セキュアRAM16の間のデータ転送を実行する。セキュアDMAC18とCPU14は、第1の専用線DL1で結ばれ互いに通信可能である。
【0027】
CPU17は、マイクロコンピュータ100に追加された中央演算処理装置である。CPU17は、所定の記憶部(図示せず)に格納されているプログラムに従った各種の演算、或いは、暗号処理部12や乱数生成部13とのデータ転送、データバスBS1にあるデータの演算、転送を実行する。セキュアDMAC18とCPU17は、第2の専用線DL2で結ばれ互いに通信可能である。
【0028】
CPU17は常時コールドスタンバイ状態にあり、CPU14が暗号処理部12へ不正読み出しした状態を検出した時に起動する。例えば、CPU14から暗号処理部12に不正アクセスがあった場合、暗号処理部12は、該不正アクセスを検知し、CPU14をスリープ状態にさせ、CPU17を起動する(アクティブ状態とする)ことでCPU17がCPU14の動作処理を引き継ぐ。これにより、マイクロコンピュータ100の通信等の動作を継続することができる。
【0029】
上記した構成により、マイクロコンピュータ100は、所定の記憶部(図示せず)に格納されているプログラムに従って、上記した暗号鍵を用いた平文の暗号化処理などを含む各種のデータ処理を行うことができる。
【0030】
本実施例では、暗号鍵を暗号処理部12に置いて、その暗号鍵を使って暗号処理を実行する時にCPU14から暗号鍵を読み出すことができないようにする。該CPU14から不正読み出し(アクセス)があった際でも、セキュア領域のセキュアRAMから転送された暗号鍵を使って暗号処理部12が暗号処理を実行している場合、暗号処理部12はフラグを立て、暗号鍵を消去することによって、該CPU14からの不正読み出しを抑制することができる。また、暗号処理部12がCPU14のアクセスを検知してスリープ状態にある別のCPU17をアクティブ状態へ遷移してCPU14の処理を引き継ぎ、通信等を継続することができる。さらに、スリープ状態からアクティブ状態になった別のCPU17から不正読み出しがある場合にはシステム全体を停止して不正動作を完全に防止することができる。
【0031】
したがって、不正なアクセスが行われても、マイクロコンピュータ100で運用されている暗号鍵の漏洩を抑制することが可能となる。
【0032】
(動作の説明)
図2~
図6により通常の暗号処理を説明する。前提として、CPU14は、データバスBS1にある暗号すべき平文を、データバスBS1を介してセキュアRAM16へデータ書き込みを実行(片矢印)する。アクティブ状態のCPU14は平文のセキュアRAM16へのデータの書き込みの完了を、第1の専用線DL1を介してセキュアDMAC18に通知する。
【0033】
まず、
図2に示すように、セキュアDMAC18は太線矢印に示すように乱数生成部13から暗号鍵EKYを読み出す。また、セキュアDMAC18は太線矢印に示すようにセキュアRAM16から平文PLTを読み出す。
【0034】
まず、
図3に示すように、セキュアDMAC18は太線矢印に示すように暗号鍵EKYと平文PLTを、データバスBS9を介して暗号処理部12へ転送する。
【0035】
次に、
図4に示すように、暗号処理部12がレジスタRGTのフラグFG1を論理レベル「1」にセットして、秘匿対象データである暗号鍵EKYが暗号処理部12に有ることを明示する。
【0036】
次に、
図5に示すように、暗号処理部12は暗号化演算を実行して暗号文CPTを生成する。暗号処理部12は暗号化演算完了(暗号文生成)信号を、データバスBS9(又は、図示しない専用線)を介してセキュアDMAC18に通知する。
【0037】
次に、
図6に示すように、セキュアDMAC18は、データバスBS9を介して暗号文CPTを暗号処理部12から読み出した後にこれをセキュアRAM16へ転送するとともに、セキュアDMAC18は暗号文CPTを、第1の専用線DL1を介してCPU14に転送する。これにより、CPU14は暗号文CPTを取得する。
【0038】
ここからは、
図4に示す暗号処理部12がレジスタRGTのフラグFG1を論理レベル「1」にセットしている状態(暗号鍵存在)で、CPU14から暗号処理部12にアクセス(不正読み出し)がある場合の動作を
図7~
図9により説明する。
【0039】
図7に示すように、CPU14は暗号処理部12にアクセスして、その暗号鍵EKYを読み出そうとする。すると、暗号処理部12はアクセスを検知し、レジスタRGTのフラグFG1を論理レベル「1」にセットされているので、暗号鍵EKYを消去する。これにより、CPU14からの暗号鍵EKYの読み出しが不可能になる。
【0040】
次に、
図8に示すように、暗号処理部12は、レジスタRGTのフラグFG1を論理レベル「0」にセットして暗号鍵EKYが暗号処理部12に無いこと、並びに同フラグFG2を論理レベル「1」にセットしてCPU14からの暗号処理部12へのアクセス(不正読み出し)があったことを明示する。
【0041】
次に、
図9に示すように、暗号処理部12は、スリープ信号(Sleep設定)を、データバスBS1(又は、図示しない専用線)を介してCPU14に指令する。これと共に、暗号処理部12は起動信号(Active設定)を、データバスBS1(又は、図示しない専用線)を介してスリープ状態のCPU17に指令する。これにより、CPU14はアクティブ状態からスリープ状態へ遷移すると共に、コールドスタンバイで待機していたCPU17はスリープ状態からアクティブ状態へ遷移する。CPU17はCPU14のキャッシュからの内容コピーによりCPU14から動作状態を引き継ぐので、例えば、マイクロコンピュータ100の通信等のCPU14の動作をCPU17が継続することができる。
【0042】
(効果の説明)
従来は、一般的に、揮発性の記憶素子のRAMに暗号鍵を置き、これからCPUが暗号鍵を暗号処理部へ転送することで、その暗号鍵を使って暗号処理部が暗号処理を実行する。この時にCPUは暗号処理部から読み出し可能であったので、CPUによる不正読み出しで暗号鍵が漏洩する可能性があった。
【0043】
しかしながら、以上説明した通り第1の実施例によれば、従来の回路構成に、CPU17と、セキュア領域であるデータバスBS9、セキュアRAM16、セキュアDMAC18を追加することで以下の効果が期待できる。
【0044】
セキュアDMAC18は乱数生成部13から秘匿するべき暗号鍵を読み出し、暗号処理部12へ転送するときに暗号処理部12はフラグをセットする。これにより、暗号処理部12は暗号処理を実行する時にCPU14からの読み出しをできないようにすることできる。また、暗号処理部12は、CPU14が不正読み出ししてきた時の暗号鍵を消去と、そのフラグをリセットと、CPU14からの不正読み出しフラグのセットと、CPU14のスリープ状態へのセットと、コールドスタンバイのCPU17のアクティブ状態へのセットとを実行して、CPU14からの不正読み出しを回避しつつ、CPU17で処理を継続できるようにする。
【0045】
(第2の実施例)
第2の実施例は第1の実施例と構成が同一である。第2の実施例は、第1の実施例の
図9に示したマイクロコンピュータ100の状態から、スリープ状態のCPU14の代わりアクティブ状態のCPU17が継続して動作処理を行う。よって、以下では第2の実施例の第1の実施例とは異なる状態の動作を説明する。
【0046】
第2の実施例はアクティブ状態のCPU17が通常の暗号処理をする場合、暗号文CPTを生成までは第1の実施例と動作は同一である。その後、第2の実施例と動作において、
図10に示すように、セキュアDMAC18は、暗号文CPTを暗号処理部12から読み出し、セキュアRAM16へ転送する。これと共に、セキュアDMAC18は暗号文CPTを、第2の専用線DL2を介してCPU17に転送する。これにより、CPU17は暗号文CPTを取得する。
【0047】
図10に示すように、暗号鍵EKYが暗号処理部12に有るので暗号処理部12がレジスタRGTのフラグFG1を論理レベル「1」にセットされ、且つCPU14からアクセス(不正読み出し)された状態なので同フラグFG2を論理レベル「1」にセットされている。
【0048】
次に、CPU17から暗号処理部12にアクセス(不正読み出し)がある場合の暗号処理を
図11により説明する。
【0049】
図11に示すように、CPU17は暗号処理部12にアクセスして、その暗号鍵EKYを読み出そうとする。すると、暗号処理部12はアクセスを検知し、レジスタRGTのフラグFG3を論理レベル「1」にセットされているので、暗号鍵EKYを消去する。これにより、CPU17からの暗号鍵EKYの読み出しが不可になる。
【0050】
次に、
図12に示すように、暗号処理部12がレジスタRGTのフラグFG1を論理レベル「0」にセットして暗号鍵EKYが暗号処理部12に無いこと、並びに同フラグFG3を論理レベル「1」にセットして、CPU17からの暗号処理部12へのアクセス(不正読み出し)があったことを明示する。
【0051】
次に、
図13に示すように、暗号処理部12は、スリープ信号(Sleep設定)を、データバスBS1(又は、図示しない専用線)を介してCPU17に指令する。これにより、CPU17はアクティブ状態からスリープ状態へ遷移する。
【0052】
(効果の説明)
以上説明した通り、第2の実施例によれば、CPU14からの不正読み出しがあったことを示すフラグがセットされている状態でCPU17からの不正読み出しがあった場合、暗号処理部12は、暗号鍵を消去、フラグをリセット、CPU17からの不正読み出しフラグをセットして、CPU14、CPU17の両方をスリープ状態にする。これにより、システム全体(半導体装置自体)を停止して不正な動作を完全に防止することができる。
【0053】
(第3の実施例)
第3の実施例では、第1の実施例のレジスタRGTの代わりにレジスタRGTのフラグFG1~FG3の機能発揮する動作電圧を調整する電圧調整部VRGを暗号処理部12に設けた以外、第1の実施例と構成は同一である。よって、第3の実施例の第1の実施例とは異なる構成の動作のみを説明する。
【0054】
図14は、第3の実施例の半導体装置に含まれるマイクロコンピュータ100の構成を示すブロック図である。
図15は、電圧調整部VRGが暗号処理部12の動作電圧を調整する場合の該動作電圧Vの経時変化を説明するグラフである。
【0055】
図15に示すように、電圧調整部VRGは、暗号処理部12に供給される、通常動作時の通常電圧値Vnrと、暗号処理部12が暗号鍵を有していることを示す第1の電圧値V1stと、CPU14からデータバスBS1を介してアクセスが有ったことを示す第2の電圧値V2ndと、CPU17からデータバスBS1を介してアクセスが有ったことを示す第3の電圧値V3rdと、のいずれかの電圧値の電圧に動作電圧を調整する。
【0056】
図14に示す暗号処理部12は、電圧調整部VRG第1の電圧値V1stを検出すると共に、第2の電圧値V2nd及び第3の電圧値V3rdの少なくとも一方を検出する機能を有する。
【0057】
図14に示す暗号処理部12は、第1の電圧値V1stで動作している状態でCPU14からのアクセスを検出した場合、第2の電圧値V2ndに変動して動作し、CPU14を、動作可能とする第1の状態から動作不能とする第2の状態に移行させる機能を有する。
【0058】
図14に示す暗号処理部12は、第1の電圧値V1stで動作している状態でCPU17からのアクセスを検出した場合、第3の電圧値V3rdに変動して動作し、CPU17を、動作可能とする第3の状態から動作不能とする第4の状態に移行させ、マイクロコンピュータ100を含む半導体装置を動作不能とする機能を有する。
【0059】
図16、
図17に示すように、通常動作時は「通常動作電圧(通常電圧値Vnr)」で動作する。セキュアDMAC18が乱数生成部13から暗号鍵を読み出し、暗号処理部12へ転送(暗号処理部12に暗号鍵を格納)し、さらにセキュアDMAC18はセキュアRAM16から平文を読み出し、暗号処理部12に転送する。この時、暗号処理部12は、動作電圧を通常電圧値Vnrから
図15に示す第1の電圧値V1stへ下げる。
【0060】
図18に示すように、さらにこの状態でCPU14から不正読み出しがあると、暗号処理部12の電圧を
図15に示す第2の電圧値V2ndに下げる。CPU14はアクティブ状態からスリープ状態へ遷移後、コールドスタンバイで待機していたCPU17はスリープ状態からアクティブ状態へ遷移する。
【0061】
さらに、CPU17がアクティブ状態にある時に、
図19、
図20に示すように、セキュアDMAC18は、暗号鍵を乱数生成部13から読み出し、暗号処理部12へ転送する。これと共に、セキュアDMAC18はセキュアRAM16から平文を読み出し、暗号処理部12に転送して暗号処理部12の電圧を第1の電圧値V1stに上げる。
【0062】
図21に示すように、この状態でCPU17から不正読み出しがあると、暗号処理部12の電圧を
図15に示す第3の電圧値V3rd(0V)に下げる。この時に暗号処理部12に保持されていた暗号鍵は消去されて暗号処理部12は動作を停止する。またCPU17はアクティブ状態からスリープ状態へ遷移してマイクロコンピュータ100全体が停止する。
【0063】
本実施例により、CPU14、CPU17の両方がスリープ状態に遷移してシステム停止状態になった時に、暗号処理部12の動作電圧が0Vになるので暗号鍵の漏洩リスクをより低くすることができる。
【0064】
以上のように、これらの実施例によって、以下の効果が期待できる。
1.暗号鍵を使って暗号処理部12で暗号処理する時だけCPU14からの暗号処理部12の読み出しが不可能になる。
2.CPU14から暗号処理部12の不正読み出しがある場合に暗号処理部12の暗号鍵を消去することができる。
3.CPU14から暗号処理部12に不正読み出しがある際、CPU14をスリープ状態に、コールドスタンバイのCPU17をアクティブ状態にそれぞれ遷移させて、CPU14の不正読み出しを回避しつつCPU17により処理を継続することができる。
4.暗号鍵を使って暗号処理部12で暗号処理する時だけアクティブ状態のCPU17からの暗号処理部12の読み出しが不可能になる。
5.アクティブ状態のCPU17から不正読み出しがあると暗号処理部12の暗号鍵を消去することができる。
6.CPU14がスリープ状態の場合でCPU17から不正読み出しがあると、CPU17をスリープ状態に遷移させて、CPU14、CPU17の両方をスリープ状態にすることでシステム全体を停止して不正な動作を完全に防止することができる。
【0065】
これらの実施例は暗号化回路、CPU、RAM、ROMを搭載する標準的なマイコンシステム、LSI全てに適用可能である。
【符号の説明】
【0066】
データバスBS9(第1のデータバス)
乱数生成部13(暗号鍵生成部)
セキュアDMAC18(第1の制御部)
暗号処理部12(暗号処理部)
データバスBS1
CPU14(第2の制御部)
CPU17(第3の制御部)
第1のフラグFG1
第2のフラグFG2
レジスタRGT
第3のフラグFG3
通常電圧値Vnr
第1の電圧値V1st
第2の電圧値V2nd
第3の電圧値V3rd
電圧調整部VRG
マイクロコンピュータ100
第1の専用線DL1
第2の専用線DL2