(57)【要約】【課題】機密情報を処理するシステムにおいて、ソフトウェアの不正改竄やなりすましによる機密情報処理用LSIの使用を防ぐと共に、バスを流れるデータをプローブ等を用いた解析から保護する。【解決手段】機密情報処理用LSIにおいて、LSI１００２を制御するソフトウェアを比較器１００８における改竄検出と、比較器１０２０における認証処理を行うことにより、ソフトウェアの正当性を確認し、不正なソフトウェアによる機密情報処理用LSIの使用を防止する。また、認証処理で用いた乱数を元としたセッション鍵１０３５、１０３８をLSIとソフトウェアの双方で共有し、そのセッション鍵を用いた暗号化通信を行うことにより、バスを流れるデータを保護する。【選択図】  図１０
2005157930.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウエアを格納するメモリと、前記メモリより前記ソフトウエアを読み出して実行するCPUと、前記ソフトウエアの改竄を検出する改竄検出回路と前記ソフトウエアの認証を行う認証処理回路の少なくとも一方の回路を有するとともに前記ソフトウエアにより機密情報を処理する回路を有するLSIとを備え、
前記LSIは前記ソフトウェアに対して前記改竄検出回路または前記認証処理回路により改竄検出と認証の少なくとも一方の処理を行い、その結果に基づいて前記LSIが前記LSIの動作を決定することを特徴とする機密情報処理システム。
【請求項２】
改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、前記LSI内の前記機密情報入出力端子の動作を停止する請求項１記載の機密情報処理システム。
【請求項３】
改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、LSI内の機密情報入出力端子の動作を開始する請求項１記載の機密情報処理システム。
【請求項４】
改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、LSI内の機密情報を処理する回路の動作を停止する請求項１記載の機密情報処理システム。
【請求項５】
改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、LSI内の機密情報を処理する回路の動作を開始する請求項１記載の機密情報処理システム。
【請求項６】
ソフトウエアは実装前に予めハッシュ値を求められその結果を暗号化した第１の暗号化ハッシュ値を持ち、
改竄検出回路は第１の復号鍵を用いて前記第１の暗号化ハッシュ値を復号する第１の復号回路を有し、前記ソフトウエアの実行時に前記ソフトウェアの第１のハッシュ値を作成するハッシュ作成回路を有し、前記第１の暗号化ハッシュ値を前記第1の復号回路を用いて復号した値と前記第１のハッシュ値を比較することにより前記ソフトウェアの改竄を検出する第１の比較器を有する請求項１記載の機密情報処理システム。
【請求項７】
ソフトウエアは、実装前に、所定の位置に第１の定数を連結しソフトウェア暗号鍵で暗号化されており、
改竄検出回路は、第２の定数を有するとともに、ソフトウェア復号鍵を用いて前記ソフトウェアを復号し前記所定の位置より第１の比較値を取り出すソフトウェア復号回路を有し、前記第１の比較値を前記第２の定数と比較することによりソフトウェアの改竄を検出する第２の比較器を有する請求項１記載の機密情報処理システム。
【請求項８】
認証処理回路は、第１の乱数を生成する第1の乱数生成回路を有し、第1の共有鍵を用いて前記第1の乱数に対して第1の一方向関数処理を行う第1の回路を有し、さらに第３の比較器を有し、
ソフトウエアは、共有鍵を用いて前記第１の乱数に対して第1の一方向関数処理を行う第1の機能を有し、
前記第３の比較器は、前記認証処理回路で第1の一方向関数処理を行った結果得られる第２の比較値と、前記ソフトウェアにおいて前記認証処理回路から入力された前記第１の乱数に対して前記第1の一方向関数処理を行った結果得られる第３の比較値とを比較することにより前記ソフトウェアを認証する請求項１記載の機密情報処理システム。
【請求項９】
認証処理回路は、第２の共有鍵を用いて第２の一方向関数処理を行う第２の回路を有するとともに、第４の比較器を有し、
ソフトウエアは、共有鍵を用いて第２の一方向関数処理を行う第２の機能および第２の乱数を生成する第１の乱数生成機能を有し、
前記第４の比較器は、前記ソフトウェア内で前記第１の乱数生成機能で生成された前記第２の乱数に対して前記第２の一方向関数処理を行った結果得られる第４の比較値と、前記認証処理回路において前記ソフトウェアから入力された前記第２の乱数に対して前記第２の回路により前記第２の一方向関数処理を行った結果得られる第５の比較値とを比較することにより前記ソフトウェアを認証する請求項１記載の機密情報処理システム。
【請求項１０】
認証処理回路は、第２の乱数生成回路を有するとともに、第３の共有鍵を用いて第３の一方向関数処理を行う第３の回路を有し、さらに第５の比較器を有し、前記第２の乱数生成回路は第３の乱数を生成し、
ソフトウエアは、共有鍵を用いて第３の一方向関数処理を行う第３の機能、第２の乱数生成機能、および与えられた二つの値を比較する第１の比較機能を有し、前記第２の乱数生成機能は第４の乱数を生成し、
前記第５の比較器は、前記第３の乱数に対して前記認証処理回路の前記第３の回路において前記第３の一方向関数処理を行った結果である第６の比較値と、前記第３の乱数に対して前記ソフトウェアにおいて前記第３の機能により前記第３の一方向関数処理を行った結果である第７の比較値とを比較し、
前記第１の比較機能は、前記第４の乱数に対して前記ソフトウェア内で前記第３の一方向関数処理を行った結果である第８の比較値と、前記第４の乱数に対して前記認証処理回路の前記第３の回路において前記第３の一方向関数処理を行った結果である第９の比較値とを比較し、もってLSIとソフトウェアが相互に認証する請求項１記載の機密情報処理システム。
【請求項１１】
改竄が検出されず、かつ、認証に失敗しなかった場合にLSIとソフトウェアとの間で乱数を元とした共通の第１のセッション鍵を生成し、前記第１のセッション鍵を用いた暗号化通信を行う請求項１記載の機密情報処理システム。
【請求項１２】
第１のセッション鍵を用いた暗号化通信を行う際に、通信回数を計測する第１のカウンタを有し、一定の回数の通信が行われると新たな乱数の生成を促す第１の乱数再発行信号を生成する第１の乱数再発行信号生成回路を有し、第１のセッション鍵の更新を可能とする請求項１１記載の機密情報処理システム。
【請求項１３】
一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、第１のセッション鍵リセット信号を生成してLSIおよびソフトウェアで保持していた第１のセッション鍵をそれぞれ異なった値にリセットするリセット信号生成回路を有する請求項１２記載の機密情報処理システム。
【請求項１４】
一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、ＬＳＩ内の機密情報入出力端子の動作を停止する通信回路停止信号を生成する回路を有する請求項１２記載の機密情報処理システム。
【請求項１５】
ソフトウエアは実装前に予めハッシュ値を求められその結果を暗号化した第１の暗号化ハッシュ値を持ち、
改竄検出回路は第１の復号鍵を用いて前記第１の暗号化ハッシュ値を復号する第１の復号回路を有し、前記ソフトウエアの実行時に前記ソフトウェアの第１のハッシュ値を作成するハッシュ作成回路を有し、前記第１の暗号化ハッシュ値を前記第1の復号回路を用いて復号した値と前記第１のハッシュ値を比較することにより前記ソフトウェアの改竄を検出する第１の比較器を有し、その結果により動作が停止・開始される回路を認証処理回路とし、
前記認証処理回路は、第２の乱数生成回路を有するとともに、第３の共有鍵を用いて第３の一方向関数処理を行う第３の回路を有し、さらに第５の比較器を有し、前記第２の乱数生成回路は第３の乱数を生成し、
この場合に前記ソフトウエアは、共有鍵を用いて第３の一方向関数処理を行う第３の機能、第２の乱数生成機能、および与えられた二つの値を比較する第１の比較機能を有し、前記第２の乱数生成機能は第４の乱数を生成し、
前記第５の比較器は、前記第３の乱数に対して前記認証処理回路の前記第３の回路において前記第３の一方向関数処理を行った結果である第６の比較値と、前記第３の乱数に対して前記ソフトウェアにおいて前記第３の機能により前記第３の一方向関数処理を行った結果である第７の比較値とを比較し、
前記第１の比較機能は、前記第４の乱数に対して前記ソフトウェア内で前記第３の一方向関数処理を行った結果である第８の比較値と、前記第４の乱数に対して前記認証処理回路の前記第３の回路において前記第３の一方向関数処理を行った結果である第９の比較値とを比較し、もってLSIとソフトウェアが相互に認証し、その認証処理の結果により動作が開始・停止される回路を暗号化通信を行う回路とし、
前記暗号化通信を行う回路は、改竄が検出されず、かつ、認証に失敗しなかった場合にLSIとソフトウェアとの間で乱数を元とした共通の第１のセッション鍵を生成し、前記第１のセッション鍵を用いた暗号化通信を行い、
前記暗号化通信を行う際に、通信回数を計測する第１のカウンタを有し、一定の回数の通信が行われると新たな乱数の生成を促す第１の乱数再発行信号を生成する第１の乱数再発行信号生成回路を有し、第１のセッション鍵の更新を可能とし、
さらに、一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、第１のセッション鍵リセット信号を生成してLSIおよびソフトウェアで保持していた第１のセッション鍵をそれぞれ異なった値にリセットするリセット信号生成回路を有する請求項１記載の機密情報処理システム。
【請求項１６】
改竄検出回路と認証処理回路の少なくとも一方の回路と、ＣＰＵが実行するソフトウエアにより機密情報を処理する回路を備え、前記ソフトウエアに対して前記改竄検出回路または前記認証処理回路により改竄検出と認証の少なくとも一方の処理を行い、その結果に基づいて動作または不動作を決定することを特徴とするＬＳＩ。
【請求項１７】
機密情報入出力端子を有し、改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、前記機密情報入出力端子の動作を停止する請求項１６記載のＬＳＩ。
【請求項１８】
機密情報入出力端子を有し、改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、前記機密情報入出力端子の動作を開始する請求項１６記載のＬＳＩ。
【請求項１９】
改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、機密情報を処理する回路の動作を停止する請求項１６記載のＬＳＩ。
【請求項２０】
改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、機密情報を処理する回路の動作を開始する請求項１６記載のＬＳＩ。
【請求項２１】
ソフトウエアは実装前に予めハッシュ値を求められその結果を暗号化した第１の暗号化ハッシュ値を持ち、
改竄検出回路は第１の復号鍵を用いて前記第１の暗号化ハッシュ値を復号する第１の復号回路を有し、前記ソフトウエアの実行時に前記ソフトウェアの第１のハッシュ値を作成するハッシュ作成回路を有し、前記第１の暗号化ハッシュ値を前記第1の復号回路を用いて復号した値と前記第１のハッシュ値を比較することにより前記ソフトウェアの改竄を検出する第１の比較器を有する請求項１６記載のＬＳＩ。
【請求項２２】
ソフトウエアは、実装前に、所定の位置に第１の定数を連結しソフトウェア暗号鍵で暗号化されており、
改竄検出回路は、第２の定数を有するとともに、ソフトウェア復号鍵を用いて前記ソフトウェアを復号し前記所定の位置より第１の比較値を取り出すソフトウェア復号回路を有し、前記第１の比較値を前記第２の定数と比較することによりソフトウェアの改竄を検出する第２の比較器を有する請求項１６記載のＬＳＩ。
【請求項２３】
認証処理回路は、第１の乱数を生成する第1の乱数生成回路を有し、第1の共有鍵を用いて前記第1の乱数に対して第1の一方向関数処理を行う第1の回路を有し、さらに第３の比較器を有し、
ソフトウエアは、共有鍵を用いて前記第１の乱数に対して第1の一方向関数処理を行う第1の機能を有し、
前記第３の比較器は、前記認証処理回路で第1の一方向関数処理を行った結果得られる第２の比較値と、前記ソフトウェアにおいて前記認証処理回路から入力された前記第１の乱数に対して前記第1の一方向関数処理を行った結果得られる第３の比較値とを比較することにより前記ソフトウェアを認証する請求項１６記載のＬＳＩ。
【請求項２４】
認証処理回路は、第２の共有鍵を用いて第２の一方向関数処理を行う第２の回路を有するとともに、第４の比較器を有し、
ソフトウエアは、共有鍵を用いて第２の一方向関数処理を行う第２の機能および第２の乱数を生成する第１の乱数生成機能を有し、
前記第４の比較器は、前記ソフトウェア内で前記第１の乱数生成機能で生成された前記第２の乱数に対して前記第２の一方向関数処理を行った結果得られる第４の比較値と、前記認証処理回路において前記ソフトウェアから入力された前記第２の乱数に対して前記第２の回路により前記第２の一方向関数処理を行った結果得られる第５の比較値とを比較することにより前記ソフトウェアを認証する請求項１６記載のＬＳＩ。
【請求項２５】
認証処理回路は、第２の乱数生成回路を有するとともに、第３の共有鍵を用いて第３の一方向関数処理を行う第３の回路を有し、さらに第５の比較器を有し、前記第２の乱数生成回路は第３の乱数を生成し、
ソフトウエアは、共有鍵を用いて第３の一方向関数処理を行う第３の機能、第２の乱数生成機能、および与えられた二つの値を比較する第１の比較機能を有し、前記第２の乱数生成機能は第４の乱数を生成し、
前記第５の比較器は、前記第３の乱数に対して前記認証処理回路の前記第３の回路において前記第３の一方向関数処理を行った結果である第６の比較値と、前記第３の乱数に対して前記ソフトウェアにおいて前記第３の機能により前記第３の一方向関数処理を行った結果である第７の比較値とを比較し、
前記第１の比較機能は、前記第４の乱数に対して前記ソフトウェア内で前記第３の一方向関数処理を行った結果である第８の比較値と、前記第４の乱数に対して前記認証処理回路の前記第３の回路において前記第３の一方向関数処理を行った結果である第９の比較値とを比較し、もってソフトウェアに対して相互認証する請求項１６記載のＬＳＩ。
【請求項２６】
改竄が検出されず、かつ、認証に失敗しなかった場合にソフトウェアとの間で乱数を元とした共通の第１のセッション鍵を生成し、前記第１のセッション鍵を用いた暗号化通信を行う請求項１６記載のＬＳＩ。
【請求項２７】
第１のセッション鍵を用いた暗号化通信を行う際に、通信回数を計測する第１のカウンタを有し、一定の回数の通信が行われると新たな乱数の生成を促す第１の乱数再発行信号を生成する第１の乱数再発行信号生成回路を有し、第１のセッション鍵の更新を可能とする請求項２６記載のＬＳＩ。
【請求項２８】
一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、第１のセッション鍵リセット信号を生成してＬＳＩおよびソフトウエアで保持していた第１のセッション鍵をそれぞれ異なった値にリセットするリセット信号生成回路を有する請求項２７記載のＬＳＩ。
【請求項２９】
一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、ＬＳＩ内の機密情報入出力端子の動作を停止する通信回路停止信号を生成する回路を有する請求項２７記載のＬＳＩ。
【請求項３０】
ソフトウエアは実装前に予めハッシュ値を求められその結果を暗号化した第１の暗号化ハッシュ値を持ち、
改竄検出回路は第１の復号鍵を用いて前記第１の暗号化ハッシュ値を復号する第１の復号回路を有し、前記ソフトウエアの実行時に前記ソフトウェアの第１のハッシュ値を作成するハッシュ作成回路を有し、前記第１の暗号化ハッシュ値を前記第1の復号回路を用いて復号した値と前記第１のハッシュ値を比較することにより前記ソフトウェアの改竄を検出する第１の比較器を有し、その結果により動作が停止・開始される回路を認証処理回路とし、
前記認証処理回路は、第２の乱数生成回路を有するとともに、第３の共有鍵を用いて第３の一方向関数処理を行う第３の回路を有し、さらに第５の比較器を有し、前記第２の乱数生成回路は第３の乱数を生成し、
この場合に前記ソフトウエアは、共有鍵を用いて第３の一方向関数処理を行う第３の機能、第２の乱数生成機能、および与えられた二つの値を比較する第１の比較機能を有し、前記第２の乱数生成機能は第４の乱数を生成し、
前記第５の比較器は、前記第３の乱数に対して前記認証処理回路の前記第３の回路において前記第３の一方向関数処理を行った結果である第６の比較値と、前記第３の乱数に対して前記ソフトウェアにおいて前記第３の機能により前記第３の一方向関数処理を行った結果である第７の比較値とを比較し、
前記第１の比較機能は、前記第４の乱数に対して前記ソフトウェア内で前記第３の一方向関数処理を行った結果である第８の比較値と、前記第４の乱数に対して前記認証処理回路の前記第３の回路において前記第３の一方向関数処理を行った結果である第９の比較値とを比較し、もってLSIとソフトウェアが相互に認証し、その認証処理の結果により動作が開始・停止される回路を暗号化通信を行う回路とし、
前記暗号化通信を行う回路は、改竄が検出されず、かつ、認証に失敗しなかった場合にLSIとソフトウェアとの間で乱数を元とした共通の第１のセッション鍵を生成し、前記第１のセッション鍵を用いた暗号化通信を行い、
前記暗号化通信を行う際に、通信回数を計測する第１のカウンタを有し、一定の回数の通信が行われると新たな乱数の生成を促す第１の乱数再発行信号を生成する第１の乱数再発行信号生成回路を有し、第１のセッション鍵の更新を可能とし、
さらに、一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、第１のセッション鍵リセット信号を生成してLSIおよびソフトウェアで保持していた第１のセッション鍵をそれぞれ異なった値にリセットするリセット信号生成回路を有する請求項１６記載のＬＳＩ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化技術を用いて機密情報の漏洩を防止する機密情報処理システムおよびLSIに関するものである。
【背景技術】
【０００２】
機密情報処理装置の構成例を図１に示す。機密情報処理装置101は、CPU102、I/Oインタフェース103、メモリ104、機密情報処理用LSI105とそれらをつなぐバス106を備えた機密情報処理システムである。このような機密情報処理システムにおいて、機密情報の漏洩を防ぐために対策を施さなければならない主な問題は、ソフトウェアの不正改竄やなりすましによる機密情報の漏洩、機密情報処理用LSI105への不正アクセスによる機密情報の漏洩、機密情報処理用LSI105とCPU102との間のバス106を観測されることによる機密情報の漏洩、の３点であった。
【０００３】
従来、ソフトウェアの不正改竄やなりすましによる機密情報の漏洩を防ぐ装置として、機密情報処理の実行にあたりCPU102で動作中のソフトウェアの一部に対して機密情報処理用LSI105において改竄検出を行い、改竄が検出されると改竄検出をCPU102に知らせることにより不正なソフトウェアの実行による機密情報漏洩を防止する装置が知られている（特許文献１参照）。
【０００４】
また、ソフトウェアに耐タンパ処理を施すことによりソフトウェアの改竄による機密情報の漏洩を防止するTRSと呼ばれる技術も知られている。これは、ソフトウェアの実装に際して、暗号化・復号化やダミーコードの挿入などの特殊な方法を用いることにより、ソフトウェアの解読や改竄を困難にする技術である。
【０００５】
次に、機密情報処理用LSI105への不正アクセスによる機密情報の漏洩を防ぐための手段として、機密情報処理に必要となる機密情報（例えば暗号鍵）を記憶するレジスタを、外部からアクセスできないレジスタにした機密情報処理用LSI105がある。
【０００６】
さらに、機密情報処理用LSI105とCPU102との間のバス106を観測されることによる機密情報の漏洩を防ぐための手段として、機密情報処理用LSI１０５CPU１０２との間で固定鍵を用いた暗号化通信を行う機密情報処理装置が知られている。
【特許文献１】特開平１１−３９１５６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、従来の技術には次のような問題があった。
【０００８】
機密情報処理の実行にあたりCPU102で動作中のソフトウェアの一部に対して機密情報処理用LSI105において改竄検出を行い改竄が検出されると改竄検出をCPU102に知らせることにより不正なソフトウェアの実行による機密情報漏洩を防止する装置（特許文献１参照）においては、機密情報処理専用LSI105は、ソフトウェアの不正改竄を検出した場合、改竄の検出をCPU102に知らせるだけであり、その後のエラー処理はCPU102によって判断されるため、再度の改竄およびアタックが可能であるという問題があった。
【０００９】
また、機密情報処理用LSIとCPUとの間で固定鍵を用いた暗号化通信を行う方法では、暗号鍵として一定の値である固定鍵を用いているため長期の観測により鍵が推定されてしまい、暗号化通信を解読されてしまう恐れがあるという問題があった。
【００１０】
これらの問題に鑑み、本発明は、機密情報処理システムとして、不正なソフトウェアの実行による機密情報処理用LSIの利用を防止することを課題とする。
【００１１】
また、本発明は、機密情報処理用LSIとCPUとの間の機密情報通信を保護することを課題とする。
【課題を解決するための手段】
【００１２】
この発明の機密情報処理システムは、ソフトウエアを格納するメモリと、メモリよりソフトウエアを読み出して実行するCPUと、ソフトウエアの改竄を検出する改竄検出回路とソフトウエアの認証を行う認証処理回路の少なくとも一方の回路を有するとともにソフトウエアにより機密情報を処理する回路を有するLSIとを備え、
LSIはソフトウェアに対して改竄検出回路または認証処理回路により改竄検出と認証の少なくとも一方の処理を行い、その結果に基づいてLSIがLSIの動作を決定することを特徴とするものである。
【００１３】
上記構成において、改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、LSI内の機密情報入出力端子の動作を停止する。
【００１４】
上記構成において、改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、LSI内の機密情報入出力端子の動作を開始する。
【００１５】
上記構成において、改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、LSI内の機密情報を処理する回路の動作を停止する。
【００１６】
上記構成において、改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、LSI内の機密情報を処理する回路の動作を開始する。
【００１７】
上記構成において、ソフトウエアは実装前に予めハッシュ値を求められその結果を暗号化した第１の暗号化ハッシュ値を持ち、
改竄検出回路は第１の復号鍵を用いて第１の暗号化ハッシュ値を復号する第１の復号回路を有し、ソフトウエアの実行時にソフトウェアの第１のハッシュ値を作成するハッシュ作成回路を有し、第１の暗号化ハッシュ値を前記第1の復号回路を用いて復号した値と第１のハッシュ値を比較することによりソフトウェアの改竄を検出する第１の比較器を有する。
【００１８】
上記構成において、ソフトウエアは、実装前に、所定の位置に第１の定数を連結しソフトウェア暗号鍵で暗号化されており、
改竄検出回路は、第２の定数を有するとともに、ソフトウェア復号鍵を用いてソフトウェアを復号し所定の位置より第１の比較値を取り出すソフトウェア復号回路を有し、第１の比較値を第２の定数と比較することによりソフトウェアの改竄を検出する第２の比較器を有する。
【００１９】
上記構成において、認証処理回路は、第１の乱数を生成する第1の乱数生成回路を有し、第1の共有鍵を用いて第1の乱数に対して第1の一方向関数処理を行う第1の回路を有し、さらに第３の比較器を有し、
ソフトウエアは、共有鍵を用いて第１の乱数に対して第1の一方向関数処理を行う第1の機能を有し、
第３の比較器は、認証処理回路で第1の一方向関数処理を行った結果得られる第２の比較値と、ソフトウェアにおいて認証処理回路から入力された第１の乱数に対して第1の一方向関数処理を行った結果得られる第３の比較値とを比較することによりソフトウェアを認証する。
【００２０】
上記構成において、認証処理回路は、第２の共有鍵を用いて第２の一方向関数処理を行う第２の回路を有するとともに、第４の比較器を有し、
ソフトウエアは、共有鍵を用いて第２の一方向関数処理を行う第２の機能および第２の乱数を生成する第１の乱数生成機能を有し、
第４の比較器は、ソフトウェア内で第１の乱数生成機能で生成された第２の乱数に対して第２の一方向関数処理を行った結果得られる第４の比較値と、認証処理回路においてソフトウェアから入力された第２の乱数に対して第２の回路により第２の一方向関数処理を行った結果得られる第５の比較値とを比較することによりソフトウェアを認証する。
【００２１】
上記構成において、認証処理回路は、第２の乱数生成回路を有するとともに、第３の共有鍵を用いて第３の一方向関数処理を行う第３の回路を有し、さらに第５の比較器を有し、第２の乱数生成回路は第３の乱数を生成し、
ソフトウエアは、共有鍵を用いて第３の一方向関数処理を行う第３の機能、第２の乱数生成機能、および与えられた二つの値を比較する第１の比較機能を有し、第２の乱数生成機能は第４の乱数を生成し、
第５の比較器は、第３の乱数に対して認証処理回路の第３の回路において第３の一方向関数処理を行った結果である第６の比較値と、第３の乱数に対してソフトウェアにおいて第３の機能により第３の一方向関数処理を行った結果である第７の比較値とを比較し、
第１の比較機能は、第４の乱数に対してソフトウェア内で第３の一方向関数処理を行った結果である第８の比較値と、第４の乱数に対して認証処理回路の第３の回路において第３の一方向関数処理を行った結果である第９の比較値とを比較し、もってLSIとソフトウェアが相互に認証する。
【００２２】
上記構成において、改竄が検出されず、かつ、認証に失敗しなかった場合にLSIとソフトウェアとの間で乱数を元とした共通の第１のセッション鍵を生成し、第１のセッション鍵を用いた暗号化通信を行う。
【００２３】
上記構成において、第１のセッション鍵を用いた暗号化通信を行う際に、通信回数を計測する第１のカウンタを有し、一定の回数の通信が行われると新たな乱数の生成を促す第１の乱数再発行信号を生成する第１の乱数再発行信号生成回路を有し、第１のセッション鍵の更新を可能とする。
【００２４】
上記構成において、一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、第１のセッション鍵リセット信号を生成してLSIおよびソフトウェアで保持していた第１のセッション鍵をそれぞれ異なった値にリセットするリセット信号生成回路を有する。
【００２５】
上記構成において、一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、ＬＳＩ内の機密情報入出力端子の動作を停止する通信回路停止信号を生成する回路を有する。
【００２６】
上記構成において、ソフトウエアは実装前に予めハッシュ値を求められその結果を暗号化した第１の暗号化ハッシュ値を持ち、
改竄検出回路は第１の復号鍵を用いて第１の暗号化ハッシュ値を復号する第１の復号回路を有し、ソフトウエアの実行時にソフトウェアの第１のハッシュ値を作成するハッシュ作成回路を有し、第１の暗号化ハッシュ値を前記第1の復号回路を用いて復号した値と第１のハッシュ値を比較することによりソフトウェアの改竄を検出する第１の比較器を有し、その結果により動作が停止・開始される回路を認証処理回路とし、
認証処理回路は、第２の乱数生成回路を有するとともに、第３の共有鍵を用いて第３の一方向関数処理を行う第３の回路を有し、さらに第５の比較器を有し、第２の乱数生成回路は第３の乱数を生成し、
この場合にソフトウエアは、共有鍵を用いて第３の一方向関数処理を行う第３の機能、第２の乱数生成機能、および与えられた二つの値を比較する第１の比較機能を有し、第２の乱数生成機能は第４の乱数を生成し、
第５の比較器は、第３の乱数に対して認証処理回路の第３の回路において第３の一方向関数処理を行った結果である第６の比較値と、第３の乱数に対してソフトウェアにおいて第３の機能により第３の一方向関数処理を行った結果である第７の比較値とを比較し、
第１の比較機能は、第４の乱数に対してソフトウェア内で第３の一方向関数処理を行った結果である第８の比較値と、第４の乱数に対して認証処理回路の第３の回路において第３の一方向関数処理を行った結果である第９の比較値とを比較し、もってLSIとソフトウェアが相互に認証し、その認証処理の結果により動作が開始・停止される回路を暗号化通信を行う回路とし、
暗号化通信を行う回路は、改竄が検出されず、かつ、認証に失敗しなかった場合にLSIとソフトウェアとの間で乱数を元とした共通の第１のセッション鍵を生成し、第１のセッション鍵を用いた暗号化通信を行い、
暗号化通信を行う際に、通信回数を計測する第１のカウンタを有し、一定の回数の通信が行われると新たな乱数の生成を促す第１の乱数再発行信号を生成する第１の乱数再発行信号生成回路を有し、第１のセッション鍵の更新を可能とし、
さらに、一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、第１のセッション鍵リセット信号を生成してLSIおよびソフトウェアで保持していた第１のセッション鍵をそれぞれ異なった値にリセットするリセット信号生成回路を有する。
【００２７】
この発明のＬＳＩは、改竄検出回路と認証処理回路の少なくとも一方の回路と、ＣＰＵが実行するソフトウエアにより機密情報を処理する回路を備え、ソフトウエアに対して改竄検出回路または認証処理回路により改竄検出と認証の少なくとも一方の処理を行い、その結果に基づいて動作または不動作を決定することを特徴とするものである。
【００２８】
上記構成において、機密情報入出力端子を有し、改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、機密情報入出力端子の動作を停止する。
【００２９】
上記構成において、機密情報入出力端子を有し、改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、機密情報入出力端子の動作を開始する。
【００３０】
上記構成において、改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、機密情報を処理する回路の動作を停止する。
【００３１】
上記構成において、改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、機密情報を処理する回路の動作を開始する。
【００３２】
上記構成において、ソフトウエアは実装前に予めハッシュ値を求められその結果を暗号化した第１の暗号化ハッシュ値を持ち、
改竄検出回路は第１の復号鍵を用いて第１の暗号化ハッシュ値を復号する第１の復号回路を有し、ソフトウエアの実行時にソフトウェアの第１のハッシュ値を作成するハッシュ作成回路を有し、第１の暗号化ハッシュ値を前記第1の復号回路を用いて復号した値と第１のハッシュ値を比較することによりソフトウェアの改竄を検出する第１の比較器を有する。
【００３３】
上記構成において、ソフトウエアは、実装前に、所定の位置に第１の定数を連結しソフトウェア暗号鍵で暗号化されており、
改竄検出回路は、第２の定数を有するとともに、ソフトウェア復号鍵を用いてソフトウェアを復号し所定の位置より第１の比較値を取り出すソフトウェア復号回路を有し、第１の比較値を第２の定数と比較することによりソフトウェアの改竄を検出する第２の比較器を有する。
【００３４】
上記構成において、認証処理回路は、第１の乱数を生成する第1の乱数生成回路を有し、第1の共有鍵を用いて第1の乱数に対して第1の一方向関数処理を行う第1の回路を有し、さらに第３の比較器を有し、
ソフトウエアは、共有鍵を用いて第１の乱数に対して第1の一方向関数処理を行う第1の機能を有し、
第３の比較器は、認証処理回路で第1の一方向関数処理を行った結果得られる第２の比較値と、ソフトウェアにおいて認証処理回路から入力された第１の乱数に対して第1の一方向関数処理を行った結果得られる第３の比較値とを比較することによりソフトウェアを認証する。
【００３５】
上記構成において、認証処理回路は、第２の共有鍵を用いて第２の一方向関数処理を行う第２の回路を有するとともに、第４の比較器を有し、
ソフトウエアは、共有鍵を用いて第２の一方向関数処理を行う第２の機能および第２の乱数を生成する第１の乱数生成機能を有し、
第４の比較器は、ソフトウェア内で第１の乱数生成機能で生成された第２の乱数に対して第２の一方向関数処理を行った結果得られる第４の比較値と、認証処理回路においてソフトウェアから入力された第２の乱数に対して第２の回路により第２の一方向関数処理を行った結果得られる第５の比較値とを比較することによりソフトウェアを認証する。
【００３６】
上記構成において、認証処理回路は、第２の乱数生成回路を有するとともに、第３の共有鍵を用いて第３の一方向関数処理を行う第３の回路を有し、さらに第５の比較器を有し、第２の乱数生成回路は第３の乱数を生成し、
ソフトウエアは、共有鍵を用いて第３の一方向関数処理を行う第３の機能、第２の乱数生成機能、および与えられた二つの値を比較する第１の比較機能を有し、第２の乱数生成機能は第４の乱数を生成し、
第５の比較器は、第３の乱数に対して認証処理回路の第３の回路において第３の一方向関数処理を行った結果である第６の比較値と、第３の乱数に対してソフトウェアにおいて第３の機能により第３の一方向関数処理を行った結果である第７の比較値とを比較し、
第１の比較機能は、第４の乱数に対してソフトウェア内で第３の一方向関数処理を行った結果である第８の比較値と、第４の乱数に対して認証処理回路の第３の回路において第３の一方向関数処理を行った結果である第９の比較値とを比較し、もってソフトウェアに対して相互認証する。
【００３７】
上記構成において、改竄が検出されず、かつ、認証に失敗しなかった場合にソフトウェアとの間で乱数を元とした共通の第１のセッション鍵を生成し、第１のセッション鍵を用いた暗号化通信を行う。
【００３８】
上記構成において、第１のセッション鍵を用いた暗号化通信を行う際に、通信回数を計測する第１のカウンタを有し、一定の回数の通信が行われると新たな乱数の生成を促す第１の乱数再発行信号を生成する第１の乱数再発行信号生成回路を有し、第１のセッション鍵の更新を可能とする。
【００３９】
上記構成において、一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、第１のセッション鍵リセット信号を生成してＬＳＩおよびソフトウエアで保持していた第１のセッション鍵をそれぞれ異なった値にリセットするリセット信号生成回路を有する。
【００４０】
上記構成において、一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、ＬＳＩ内の機密情報入出力端子の動作を停止する通信回路停止信号を生成する回路を有する。
【００４１】
上記構成において、ソフトウエアは実装前に予めハッシュ値を求められその結果を暗号化した第１の暗号化ハッシュ値を持ち、
改竄検出回路は第１の復号鍵を用いて第１の暗号化ハッシュ値を復号する第１の復号回路を有し、ソフトウエアの実行時にソフトウェアの第１のハッシュ値を作成するハッシュ作成回路を有し、第１の暗号化ハッシュ値を前記第1の復号回路を用いて復号した値と第１のハッシュ値を比較することによりソフトウェアの改竄を検出する第１の比較器を有し、その結果により動作が停止・開始される回路を認証処理回路とし、
認証処理回路は、第２の乱数生成回路を有するとともに、第３の共有鍵を用いて第３の一方向関数処理を行う第３の回路を有し、さらに第５の比較器を有し、第２の乱数生成回路は第３の乱数を生成し、
この場合にソフトウエアは、共有鍵を用いて第３の一方向関数処理を行う第３の機能、第２の乱数生成機能、および与えられた二つの値を比較する第１の比較機能を有し、第２の乱数生成機能は第４の乱数を生成し、
第５の比較器は、第３の乱数に対して認証処理回路の第３の回路において第３の一方向関数処理を行った結果である第６の比較値と、第３の乱数に対してソフトウェアにおいて第３の機能により第３の一方向関数処理を行った結果である第７の比較値とを比較し、
第１の比較機能は、第４の乱数に対してソフトウェア内で第３の一方向関数処理を行った結果である第８の比較値と、第４の乱数に対して認証処理回路の第３の回路において第３の一方向関数処理を行った結果である第９の比較値とを比較し、もってLSIとソフトウェアが相互に認証し、その認証処理の結果により動作が開始・停止される回路を暗号化通信を行う回路とし、
暗号化通信を行う回路は、改竄が検出されず、かつ、認証に失敗しなかった場合にLSIとソフトウェアとの間で乱数を元とした共通の第１のセッション鍵を生成し、第１のセッション鍵を用いた暗号化通信を行い、
暗号化通信を行う際に、通信回数を計測する第１のカウンタを有し、一定の回数の通信が行われると新たな乱数の生成を促す第１の乱数再発行信号を生成する第１の乱数再発行信号生成回路を有し、第１のセッション鍵の更新を可能とし、
さらに、一定の回数の通信が行われた場合に第１の乱数再発行信号の生成と同時に、第１のセッション鍵リセット信号を生成してLSIおよびソフトウェアで保持していた第１のセッション鍵をそれぞれ異なった値にリセットするリセット信号生成回路を有する。
【発明の効果】
【００４２】
この発明の機密情報処理システムによれば、LSI内の改竄検出回路で行われる改竄検出の結果や認証処理回路で行われる認証処理の結果により、ソフトウェアが改竄されていたり、なりすまされていたりすることが判明した場合にLSI内の回路の動作を停止する、あるいは、ソフトウェアが改竄されておらず正当なソフトウェアであることが判明した場合にLSI内の回路の動作を開始する。
【００４３】
このため、ソフトウェアが不正なソフトウェアであった場合は、LSIを動作させることができず、不正なソフトウェアによる機密情報処理用LSIの利用を防止することが可能となる。
【００４４】
また、ソフトウェアが不正なソフトウェアであった場合はLSIを制御することができないため不正なソフトウェアの実行による機密情報の漏洩を防止することが可能となると共に、第１のセッション鍵による暗号化通信を行うため、バスを流れる機密データを保護することができる。第１のセッション鍵は、乱数を元としているため、固定鍵を使用した暗号化通信と異なり鍵の値が変更されるため、プローブを用いてバスを観測しても鍵を推測することが困難であり機密情報の漏洩を防止することが出来、また、万一鍵が推測された場合でも、鍵は認証が行われるたびに変更されるので機密情報の漏洩は最小限に止められる。
【００４５】
さらに、第１のセッション鍵を一定の通信回数ごとに更新することにより、求められるセキュリティ強度に応じた頻度での鍵の更新が可能となる。
【発明を実施するための最良の形態】
【００４６】
以下、本発明の実施形態を図を参照しながら説明する。
【００４７】
図１は、本発明の実施形態に共通な機密情報処理装置101の構成を示したものである。CPU102、I/Oインタフェース103、メモリ104、そして機密情報処理用LSI105がバス106によって相互に接続されている。なお、本実施形態では、これらがそれぞれ別々に機密情報処理装置に備えた構成をとっているが、これらのうちのいくつか、あるいは全てが一つのLSIに組みこまれて構成されていても構わない。図１の装置101において、機密情報処理用LSI105を用いて機密情報処理を行うソフトウェアをCPU102がメモリ104から読み込み実行する。機密情報処理用LSI105による改竄検出と認証処理において改竄が検出されず、認証に成功すれば、ソフトウェアは、機密情報処理用LSI105を用いて機密情報を処理することが可能となる。
【００４８】
図２に示すように、機密情報処理用LSI301は、４つのブロックを含んでいる。ソフトウェア改竄検出ブロック302は、ソフトウェアの改竄検出に関連した回路により構成されており、また、認証ブロック303は、ソフトウェアの認証処理に関連した回路により構成されており、また暗号化通信ブロック304は、暗号化通信に関連した回路より構成されており、機密情報処理ブロック305は、機密情報処理に関連した回路により構成されている。なお、各ブロックの詳細な構成例については、後述の第１から第４の各実施形態に示す。
【００４９】
図３は、各実施形態に共通の機密情報処理用LSI105の動作を示すフローチャートである。機密情報処理ソフトウェアが、機密情報処理用LSI105を用いて機密情報を処理しようとする際、まず、機密情報処理用LSI105のソフトウェア改竄検出ブロック302により機密情報処理ソフトウェアの改竄検出が行われる(ステップ401)。その結果(ステップ402)、改竄が検出された場合は、認証ブロックの動作を停止(ステップ403)し処理を終了する(ステップ404)。また、改竄が検出され無かった場合は、認証ブロック303の動作を開始する(ステップ405)。
【００５０】
次に、認証ブロック303において認証処理が行われ(ステップ406)、その結果(ステップ407)、認証に失敗した場合には、暗号化通信ブロック304の動作を停止し(ステップ408)処理を終了する(ステップ409)。また、認証に成功した場合には、暗号化通信ブロック304の動作を開始する(ステップ410)。
【００５１】
暗号化通信ブロック304では、機密情報処理用LSI105と機密情報処理ソフトウェアの双方でセッション鍵が生成され(ステップ411)、通信回数を記録するカウンタを初期化(ステップ412)した後、セッション鍵を用いた暗号化通信が開始される(ステップ413)。通信が続いている場合(ステップ414)、通信ごとにカウンタの値をアップして行き(ステップ415)、カウンタが所定の値になった場合には(ステップ416)、再度認証処理を行い、セッション鍵を更新することによって、適当な頻度での鍵の更新を実現しながら暗号化通信を行い、全ての通信を終えたら処理を終了する(ステップ417)。
【００５２】
以上が、各実施形態に共通の機密情報処理用LSIの動作となる。以下、第１の実施形態、第２の実施形態、第３の実施形態、第４の実施形態について図を交えながら詳細に説明する。
（第１の実施形態）
第１の実施形態の構成は図１で表される。メモリ104には、図５で示すように、機密情報処理用LSI105を利用して機密情報処理を行う機密情報処理ソフトウェア501と、実装時に図４に示すように機密情報処理ソフトウェア451（501）のハッシュ値を求めて(452)その結果を秘密鍵453を用いて暗号化(454)した暗号化ハッシュ値455が記憶されている(502)。なお、機密情報処理ソフトウェア501は、改竄検出制御部503、認証制御部504、暗号化通信制御部505、処理コマンド部506を含んでいる。
【００５３】
図６は、機密情報処理ソフトウェア501を読み込んで実行するCPU601の動作、および機密情報処理用LSI602の構成と動作を示しており、機密情報処理ソフトウェア501を実行すると機密情報処理607が行われる。
【００５４】
機密情報処理ソフトウェア501の実行にあたり、CPU601は改竄検出制御部503をメモリ104から読み込み実行する。改竄検出制御部503を実行すると、CPU601は、まず、メモリ104上の暗号化ハッシュ値502を読み込み(603)、機密情報処理用LSI602へ入力する。入力された暗号化ハッシュ値603は、機密情報処理用LSI602の復号化回路604において、機密情報処理用LSI602内に記憶されている秘密鍵605によって復号され、正答ハッシュ値606となる。
【００５５】
また、CPU601は、メモリ104上の改竄検出制御部503、認証制御部504、暗号化通信制御部505、処理コマンド部506を順次、機密情報処理用LSI602に入力する。機密情報処理用LSI602においては、それらの入力から、ハッシュ関数回路608においてハッシュ値609を求める。
【００５６】
機密情報処理用LSI602においてハッシュ値609が得られると、比較器610において、正答ハッシュ値606とハッシュ値609の値を比較することにより、機密情報処理ソフトウェア501の改竄検出を行う。両値が一致すれば、改竄が検出されなかったことになり、イネーブル/ディセーブル信号611がイネーブルとなり、機密情報処理用LSI602は機密情報処理用LSI602内の認証ブロック612の動作を開始する。また、もし両値が異なれば、改竄が検出されたことになり、イネーブル/ディセーブル信号611がディセーブルとなり、機密情報処理用LSI602は、認証ブロック612の動作を停止する。
【００５７】
認証ブロック612の動作が開始されると、乱数生成回路613において、機密情報処理用LSI602外部のノイズを元とした乱数種614を入力として、乱数615が生成される。生成された乱数615は、CPU601に出力される。CPU601では、機密情報処理ソフトウェア501の認証制御部504をメモリ104から読み込み、認証制御部504内に組み込まれた共有鍵616を用いて、乱数615に一方向関数処理617を行い、その結果を比較値618として機密情報処理用LSI602に出力する。
【００５８】
また、機密情報処理用LSI602においては、一方向関数処理を行う回路619において、機密情報処理用LSI602内に記憶されている共有鍵620を用いて、乱数615に対して一方向関数処理を行い、その結果を比較値621として、比較器622に入力する。
【００５９】
比較器622において、CPU601から入力された比較値618と、比較値621とを比較することにより、認証処理を行う。両値が一致すれば、機密情報処理用LSI602が機密情報処理ソフトウェア501を認証したとして、イネーブル/ディセーブル信号623がイネーブルとなり、機密情報処理用LSI602は機密情報処理用LSI602内の暗号化通信ブロック624の動作を開始する。また、もし両値が異なれば、認証に失敗したことになり、イネーブル/ディセーブル信号623がディセーブルとなり、機密情報処理用LSI602は、暗号化通信ブロック624の動作を停止する。
【００６０】
暗号化通信ブロック624の動作が開始されると、一方向関数処理を行う回路625において、共有鍵620を用いて、比較値621に対して一方向関数処理を行い、その結果をセッション鍵626とする。また、CPU601においては、メモリ104から機密情報処理ソフトウェア501の暗号化通信制御部505を読み込み、比較値618に対して、共有鍵616を用いて一方向関数処理627を行い、その結果をセッション鍵628とする。暗号化通信ブロック624が動作している場合は、認証に成功しているため、セッション鍵626とセッション鍵628は同じ値となる。
【００６１】
メモリ104上の処理コマンド部506のコマンドおよび処理データ507は、順次CPU601に読み込まれ、セッション鍵628を用いて暗号化629が行われた後、機密情報処理用LSI602に入力される。機密情報処理用LSI602においては、機密情報入出力端子630を通して入力された暗号化コマンド、暗号化データを、暗号化/復号化回路631においてセッション鍵626を用いて復号し、復号したコマンド、データを機密情報処理用LSI602内の機密情報処理回路632に入力することにより、機密情報の処理を行う。
【００６２】
あるいは、機密情報処理回路632からの出力データを、暗号化/復号化回路631においてセッション鍵626を用いて暗号化し、機密情報入出力端子630を通してCPU601に出力し、CPU601において、セッション鍵628を用いた復号化629を行い、CPU601にて機密情報の処理を行う。
【００６３】
このような暗号化通信を行う際、機密情報処理用LSI602に設けられたカウンタ633によって通信の回数をカウントする。カウンタ633の値と機密情報処理用LSI602内に記憶されていたリミット値634とを比較器635で比較し、両値が一致した場合、乱数再発行信号636が乱数再発行信号生成回路637において生成されると共に、リセット信号生成回路638において、リセット信号639およびリセット信号640が生成される。乱数再発行信号636は、乱数生成回路613に入力され、その結果、乱数615が再生成される。また、リセット信号639は、機密情報処理用LSI602内のセッション鍵626をリセットする。さらに、リセット信号640はCPU601に出力され、それを受けたCPU601は、セッション鍵628をリセットする。この際、両セッション鍵626,628を、機密情報処理ソフトウェア501および機密情報処理用LSI602にそれぞれ予め定められた異なった値にリセットすることにより、両セッション鍵は異なった値となる。
【００６４】
この後、CPU601においては認証制御部504を実行し、機密情報処理用LSI602においては認証ブロック612の動作を再実行することにより、認証処理が再度行われ、セッション鍵626,628が更新される。
【００６５】
なお、第１の実施形態では、認証処理を行う際の一方向関数処理617,619に用いた共有鍵と、セッション鍵を生成する際の一方向関数処理627,625に用いた共有鍵を同一のものとしたが、それぞれ異なった共有鍵であっても構わない。
【００６６】
また、認証ブロック612の構成は、暗号化通信ブロック624の動作を制御できるように構成されていればよく、第1の実施形態における認証ブロック612の構成要素の一部が認証ブロック外にあっても構わず、また、他の構成要素が認証ブロックに含まれていても構わない。
【００６７】
また、暗号化通信ブロック624は、暗号化通信ブロック624が動作しないと同一のセッション鍵による暗号化通信が行えないように構成されていればよく、第１の実施形態における暗号化通信ブロック624の構成要素の一部が暗号化通信ブロック外にあっても構わず、また、他の構成要素が含まれていても構わない。
【００６８】
また、第１の実施形態においては、リセット信号639,640の発生時に、セッション鍵626,628をそれぞれ予め定められた値にリセットしているが、他の値、例えば乱数などを用いてそれぞれ異なる値にリセットしても構わない。
【００６９】
以上のように、第１の実施形態においては、機密情報処理ソフトウェア501のハッシュ値を求めることにより改竄検出を行うと共に、機密情報処理用LSI602で生成した乱数615を元にした認証処理を行い、不正なソフトウェアによる機密情報処理用LSI602の使用を防止している。また、認証処理に用いた乱数615を元にセッション鍵626,628を生成してLSI602とCPU601間で暗号化通信を行うことにより、機密情報処理用LSI602とCPU601間の機密情報通信を保護している。
【００７０】
第１の実施形態においては、機密情報処理用LSI602内で認証処理で用いる乱数615を生成しているため、乱数生成をハードウェアで行っており、乱数が不正に操作される可能性が低く信頼性が高い。このため機密性の向上につながっている。
【００７１】
また、改竄検出にハッシュを用いているため、実装するソフトウェアに特別な処理を必要とせず、ソフトウェアの実装が容易である。さらに、セッション鍵626,628を用いた暗号化通信の回数がリミット値634と一致するとセッション鍵626,628をリセットしているため、リセット時に暗号化通信ブロック624の動作の開始・停止制御を伴わず、制御が容易となっている。
（第２の実施形態）
第２の実施形態の構成は図１で表される。メモリ104には、図５で示すように、機密情報処理用LSI105を利用して機密情報処理を行う機密情報処理ソフトウェア501と、実装時に図4に示すように機密情報処理ソフトウェア451（501）のハッシュ値を求めて(452)その結果を秘密鍵453を用いて暗号化(454)した暗号化ハッシュ値455が記憶されている(502)。なお、機密情報処理ソフトウェア501は、改竄検出制御部503、認証制御部504、暗号化通信制御部505、処理コマンド部506を含んでいる。
【００７２】
図７は、機密情報処理ソフトウェア501を読み込んで実行するCPU701の動作、および機密情報処理用LSI702の構成と動作を示しており、機密情報処理ソフトウェア501を実行すると機密情報処理707が行われる。
【００７３】
機密情報処理ソフトウェア501の実行にあたり、CPU701は改竄検出制御部503をメモリ104から読み込み実行する。改竄検出制御部503を実行すると、CPU701は、まず、メモリ104上の暗号化ハッシュ値502を読み込み(703)、機密情報処理用LSI702へ入力する。入力された暗号化ハッシュ値703は、機密情報処理用LSI702の復号化回路704において、機密情報処理用LSI702内に記憶されている秘密鍵705によって復号され、正答ハッシュ値706となる。
【００７４】
また、CPU701は、メモリ104上の改竄検出制御部503、認証制御部504、暗号化通信制御部505、処理コマンド部506を順次、機密情報処理用LSI702に入力する。機密情報処理用LSI702においては、それらの入力から、ハッシュ関数回路708においてハッシュ値709を求める。
【００７５】
機密情報処理用LSI702においてハッシュ値709が得られると、比較器710において、正答ハッシュ値706とハッシュ値709の値を比較することにより、機密情報処理ソフトウェア501の改竄検出を行う。両値が一致すれば、改竄が検出されなかったことになり、イネーブル/ディセーブル信号711がイネーブルとなり、機密情報処理用LSI702は機密情報処理用LSI702内の認証ブロック712の動作を開始する。また、もし両値が異なれば、改竄が検出されたことになり、イネーブル/ディセーブル信号711がディセーブルとなり、機密情報処理用LSI702は、認証ブロック712の動作を停止する。
【００７６】
CPU701において、改竄検出制御部503の実行を終えると、次に、認証制御部504をメモリ104から読み込み実行する。認証制御部504においては、機密情報処理装置101のノイズを元とした乱数種713を元に乱数生成714を行い、乱数715が生成される。CPU701においては、認証制御部504に組み込まれた共有鍵716を用いて、乱数715に一方向関数処理717を行いその結果を比較値718として機密情報処理用LSI702に出力する。
【００７７】
また、乱数715は、CPU701から機密情報処理用LSI702に入力され、一方向関数処理を行う回路719において、機密情報処理用LSI702内に記憶されている共有鍵720を用いて乱数715に対して一方向関数処理を行い、その結果を比較値721として比較器722に入力する。
【００７８】
比較器722において、CPU701から入力された比較値718と、比較値721とを比較することにより、認証処理を行う。両値が一致すれば、機密情報処理用LSI702が機密情報処理ソフトウェア501を認証したとして、イネーブル/ディセーブル信号723がイネーブルとなり、イネーブル/ディセーブル制御回路724によりイネーブル/ディセーブル信号725がイネーブルとなって、機密情報処理用LSI702は機密情報処理用LSI702内の暗号化通信ブロック726および機密情報入出力端子727の動作を開始する。また、もし両値が異なれば、認証に失敗したことになり、イネーブル/ディセーブル信号723がディセーブルとなり、イネーブル/ディセーブル制御回路724によりイネーブル/ディセーブル信号725がディセーブルとなって、機密情報処理用LSI702は、暗号化通信ブロック726および機密情報入出力端子727の動作を停止する。
【００７９】
暗号化通信ブロック726の動作が開始されると、一方向関数処理を行う回路728において、共有鍵720を用いて、比較値721に対して一方向関数処理を行い、その結果をセッション鍵729とする。また、CPU701においては、メモリ104から機密情報処理ソフトウェア501の暗号化通信制御部505を読み込み、比較値718に対して、共有鍵716を用いて一方向関数処理730を行い、その結果をセッション鍵731とする。暗号化通信ブロック726が動作している場合は、認証に成功しているため、セッション鍵729とセッション鍵731は同じ値となる。
【００８０】
メモリ104上の処理コマンド部506のコマンドおよび処理データ507は、順次CPU701に読み込まれ、セッション鍵731を用いて暗号化732が行われた後、機密情報処理用LSI702に入力される。機密情報処理用LSI702においては、機密情報入出力端子727を通して入力された暗号化コマンド、暗号化データを、暗号化/復号化回路733においてセッション鍵729を用いて復号し、復号したコマンド、データを機密情報処理用LSI702内の機密情報処理回路734に入力することにより、機密情報の処理を行う。
【００８１】
あるいは、機密情報処理回路734からの出力データを、暗号化/復号化回路733においてセッション鍵729を用いて暗号化し、機密情報入出力端子727を通してCPU701に出力し、CPU701において、セッション鍵731を用いた復号化732を行い、CPU701にて機密情報の処理を行う。
【００８２】
このような暗号化通信を行う際、機密情報処理用LSI702に設けられたカウンタ735によって通信の回数をカウントする。カウンタ735の値と機密情報処理用LSI702内に記憶されていたリミット値736とを比較器737で比較し、両値が一致した場合、乱数再発行信号738が乱数再発行信号生成回路739において生成される。また、ディセーブル信号生成回路740においてディセーブル信号741が生成され、イネーブル/ディセーブル制御回路724によりイネーブル/ディセーブル信号725がディセーブルとなって、暗号化通信ブロック726および機密情報入出力端子727の動作が停止される。
【００８３】
この後、CPU701においては認証制御部504を実行し、機密情報処理用LSI702においては認証ブロック712の動作を再実行することにより、認証処理が再度行われ、セッション鍵729,731が更新される。
【００８４】
なお、第２の実施形態では、認証処理を行う際の一方向関数処理717,719に用いた共有鍵と、セッション鍵を生成する際の一方向関数処理730,728に用いた共有鍵を同一のものとしたが、それぞれ異なった共有鍵であっても構わない。
【００８５】
また、認証ブロック712の構成は、暗号化通信ブロック726の動作を制御できるように構成されていればよく、第２の実施形態における認証ブロック712の構成要素の一部が認証ブロック外にあっても構わず、また、他の構成要素が認証ブロックに含まれていても構わない。
【００８６】
また、暗号化通信ブロック726は、暗号化通信ブロック726が動作しないと同一のセッション鍵による暗号化通信が行えないように構成されていればよく、第２の実施形態における暗号化通信ブロック726の構成要素の一部が暗号化通信ブロック外にあっても構わず、また、他の構成要素が暗号化通信ブロックに含まれていても構わない。
【００８７】
以上のように、第２の実施形態においては、機密情報処理ソフトウェア501のハッシュ値を求めることにより改竄検出を行うと共に、機密情報処理ソフトウェア501で生成した乱数715を元にした認証処理を行い、不正なソフトウェアによる機密情報処理用LSI702の使用を防止している。また、認証処理に用いた乱数715を元にセッション鍵(729,731)を生成してLSI702とCPU701間で暗号化通信を行うことにより、機密情報処理用LSI702とCPU701間の機密情報通信を保護している。
【００８８】
第２の実施の形態においては、機密情報処理ソフトウェア501において乱数715を生成しているため、機密情報処理用LSIの実装が容易となっており、かつ、面積を減らすことが出来る。
【００８９】
また、改竄検出にハッシュを用いているため、実装するソフトウェアに特別な処理を必要とせず、ソフトウェアの実装が容易である。さらに、セッション鍵731,729を用いた暗号化通信の回数がリミット値736と一致すると暗号化通信ブロック726および機密情報入出力端子727の動作を停止しているため、認証処理が再度行われている間に誤って通信が行われることがなく、機密性の向上につながっている。
（第３の実施形態）
第３の実施形態の構成は図１で表される。メモリ104には、図５で示すように、機密情報処理用LSI105を利用して機密情報処理を行う機密情報処理ソフトウェア501と、実装時に図4に示すように機密情報処理ソフトウェア451(501)のハッシュ値を求めて(452)その結果を秘密鍵453を用いて暗号化(454)した暗号化ハッシュ値455が記憶されている(502)。なお、機密情報処理ソフトウェア501は、改竄検出制御部503、認証制御部504、暗号化通信制御部505、処理コマンド部506を含んでいる。
【００９０】
図８は、機密情報処理ソフトウェア501を読み込んで実行するCPU801の動作、および機密情報処理用LSI802の構成と動作を示しており、機密情報処理ソフトウェア501を実行すると機密情報処理807が行われる。
【００９１】
機密情報処理ソフトウェア501の実行にあたり、CPU801は改竄検出制御部503をメモリ104から読み込み実行する。改竄検出制御部503を実行すると、CPU801は、まず、メモリ104上の暗号化ハッシュ値502を読み込み(803)、機密情報処理用LSI802へ入力する。入力された暗号化ハッシュ値803は、機密情報処理用LSI802の復号化回路804において、機密情報処理用LSI802内に記憶されている秘密鍵805によって復号され、正答ハッシュ値806となる。
【００９２】
また、CPU801は、メモリ104上の改竄検出制御部503、認証制御部504、暗号化通信制御部505、処理コマンド部506を順次、機密情報処理用LSI802に入力する。機密情報処理用LSI802においては、それらの入力から、ハッシュ関数回路808においてハッシュ値809を求める。
【００９３】
機密情報処理用LSI802においてハッシュ値809が得られると、比較器810において、正答ハッシュ値806とハッシュ値809の値を比較することにより、機密情報処理ソフトウェア501の改竄検出を行う。両値が一致すれば、改竄が検出されなかったことになり、イネーブル/ディセーブル信号811がイネーブルとなり、機密情報処理用LSI802は機密情報処理用LSI802内の認証ブロック812の動作を開始する。また、もし両値が異なれば、改竄が検出されたことになり、イネーブル/ディセーブル信号811がディセーブルとなり、機密情報処理用LSI802は、認証ブロック812の動作を停止する。
【００９４】
認証ブロック812の動作が開始されると、乱数生成回路813において、機密情報処理用LSI802の外部のノイズを元とした乱数種814を入力として、乱数815が生成される。生成された乱数815は、CPU801に出力される。CPU801では、機密情報処理ソフトウェア501の認証制御部504をメモリ104から読み込み、認証制御部504内に組み込まれた共有鍵816を用いて、乱数815に一方向関数処理817を行い、その結果を比較値818として機密情報処理用LSI802に出力する。
【００９５】
また、機密情報処理用LSI802においては、一方向関数処理を行う回路819において、機密情報処理用LSI802内に記憶されている共有鍵820を用いて、乱数815に対して一方向関数処理を行い、その結果を比較値821として、比較器822に入力する。
【００９６】
比較器822において、CPU801から入力された比較値818と、比較値821とを比較することにより、認証処理を行う。両値が一致すれば、機密情報処理用LSI802が機密情報処理ソフトウェア501を認証したとして、イネーブル/ディセーブル信号823がイネーブルとなり、機密情報処理用LSI802は機密情報処理用LSI802内の暗号化通信ブロック824の動作を開始する。また、もし両値が異なれば、認証に失敗したことになり、イネーブル/ディセーブル信号823がディセーブルとなり、機密情報処理用LSI802は、暗号化通信ブロック824の動作を停止する。
【００９７】
また、CPU801において、改竄検出制御部503の実行を終えると、次に、認証制御部504をメモリ104から読み込み実行する。認証制御部504においては、機密情報処理装置101のノイズを元とした乱数種825を元に乱数生成826を行い、乱数827が生成される。CPU801においては、認証制御部504に組み込まれた共有鍵816を用いて、乱数827に一方向関数処理828を行いその結果を比較値829とする。また、乱数827は、CPU801から機密情報処理用LSI802に入力され、一方向関数処理を行う回路831において、機密情報処理用LSI802内に記憶されている共有鍵820を用いて乱数827に対して一方向関数処理を行い、その結果を比較値832としてCPU801に入力する。
【００９８】
CPU801では、機密情報処理用LSI802から入力された比較値832と、比較値829とで比較処理830を行うことにより、認証処理を行う。両値が一致すれば、機密情報処理ソフトウェア501が機密情報処理用LSI802を認証したとして、イネーブル/ディセーブル情報833がイネーブルとなり、CPU801は暗号化通信制御部505をメモリ104から読み込み(834)実行する。また、もし両値が異なれば、認証に失敗したことになり、イネーブル/ディセーブル情報833がディセーブルとなり、暗号化通信制御部505は実行されず、CPU801は処理を終了する。
【００９９】
暗号化通信制御部834が実行されると、CPU801においては、比較値818と比較値829の排他的論理和(835)の結果に対して、共有鍵816を用いて一方向関数処理836を行い、その結果をセッション鍵837とする。
【０１００】
一方、暗号化通信ブロック824の動作が開始されると、一方向関数処理を行う回路838において、比較値821と比較値832の排他的論理和(839)の結果に対して、共有鍵820を用いて一方向関数処理を行い、その結果をセッション鍵840とする。暗号化通信ブロック824及び暗号化通信制御部834が共に動作している場合は、相互認証に成功しているので、両セッション鍵(837,840)は同じ値となる。
【０１０１】
メモリ104上の処理コマンド部506のコマンドおよび処理データ507は、順次CPU801に読み込まれ、セッション鍵837を用いて暗号化841が行われた後、機密情報処理用LSI802に入力される。機密情報処理用LSI802においては、機密情報入出力端子842を通して入力された暗号化コマンド、暗号化データを、暗号化/復号化回路843においてセッション鍵840を用いて復号し、復号したコマンド、データを機密情報処理用LSI802内の機密情報処理回路844に入力することにより、機密情報の処理を行う。
【０１０２】
あるいは、機密情報処理回路844からの出力データを、暗号化/復号化回路843においてセッション鍵840を用いて暗号化し、機密情報入出力端子842を通してCPU801に出力し、CPU801において、セッション鍵837を用いた復号化841を行い、CPU801にて機密情報の処理を行う。
【０１０３】
このような暗号化通信を行う際、機密情報処理用LSI802に設けられたカウンタ845によって通信の回数をカウントする。カウンタ845の値と機密情報処理用LSI802内に記憶されていたリミット値846とを比較器847で比較し、両値が一致した場合、乱数再発行信号848,849が乱数再発行信号生成回路850において生成されると共に、リセット信号生成回路851において、リセット信号852,853が生成される。乱数再発行信号848は、乱数生成回路813に入力され、その結果、乱数815が再生成され、乱数再発行信号849は、CPU801に入力され、それを受けたCPU801は乱数生成826を再実行する。また、リセット信号852は、機密情報処理用LSI802内のセッション鍵840をリセットする。さらに、リセット信号853はCPU801に入力され、それを受けたCPU801は、セッション鍵837をリセットする。この際、両セッション鍵837,840を、機密情報処理ソフトウェア501、機密情報処理用LSI802にそれぞれ予め定められた異なった値にリセットすることにより、両セッション鍵は異なった値となる。
【０１０４】
この後、CPU801においては認証制御部504を実行し、機密情報処理用LSI802においては認証ブロック812の動作を再実行することにより、認証処理が再度行われ、セッション鍵837,840が更新される。
【０１０５】
なお、第３の実施形態では、認証処理を行う際の一方向関数処理817,819に用いた共有鍵と、同じく認証処理を行う際の一方向関数処理828,831に用いた共有鍵、セッション鍵を生成する際の一方向関数処理836,838に用いた共有鍵を同一のものとしたが、それぞれ異なった共有鍵であっても構わない。
【０１０６】
また、認証ブロック812の構成は、暗号化通信ブロック824の動作を制御できるように構成されていればよく、第３の実施形態における認証ブロック812の構成要素の一部が認証ブロック外にあっても構わず、また、他の構成要素が認証ブロックに含まれていても構わない。
【０１０７】
また、暗号化通信ブロック824は、暗号化通信ブロック824が動作しないと同一のセッション鍵による暗号化通信が行えないように構成されていればよく、第３の実施形態における暗号化通信ブロック824の構成要素の一部が暗号化通信ブロック外にあっても構わず、また、他の構成要素が暗号化通信ブロックに含まれていても構わない。
【０１０８】
また、第３の実施形態においては、リセット信号852,853の発生時に、セッション鍵837,840をそれぞれ予め定められた値にリセットしているが、他の値、例えば乱数などを用いてそれぞれ異なる値にリセットしても構わない。
【０１０９】
また、第３の実施形態においては、セッション鍵の生成にあたり、比較値の排他的論理和835,839をとっているが、排他的論理和でなく和や積など他の2入力1出力の関数であっても構わない。
【０１１０】
以上のように、第３の実施形態においては、機密情報処理ソフトウェア501のハッシュ値を求めることにより改竄検出を行うと共に、機密情報処理用LSI802で生成した乱数815とCPU801で生成した乱数827とを元にした相互認証処理を行い、不正なソフトウェアによる機密情報処理用LSI802の使用を防止している。また、認証処理に用いた乱数815,827を元にセッション鍵837,840を生成してLSI802とCPU801間で暗号化通信を行うことにより、機密情報処理用LSI802とCPU801間の機密情報通信を保護している。
【０１１１】
第３の実施の形態においては、機密情報処理用LSI802とCPU801の双方で乱数を生成し相互認証を行っているため、万一、不正な機密情報処理用LSIを用いて機密情報処理ソフトウェア501のもつ機密情報を得ようとしても認証に失敗し得ることが出来ず、機密性が向上している。
【０１１２】
また、改竄検出にハッシュを用いているため、実装するソフトウェアに特別な処理を必要とせず、ソフトウェアの実装が容易である。さらに、セッション鍵837,840を用いた暗号化通信の回数がリミット値846と一致するとセッション鍵837,840をリセットしているため、リセット時に暗号化通信ブロック824の動作の開始・停止制御を伴わず、制御が容易となっている。
（第４の実施形態）
第４の実施形態の構成は図１で表される。メモリ104には、図９で示すように、機密情報処理用LSI105を利用して機密情報処理を行う機密情報処理ソフトウェアを暗号化した暗号化機密情報処理ソフトウェア901が記憶されている。暗号化機密情報処理ソフトウェア901は、実装前の機密情報処理ソフトウェア902に定数903を連結し(904)、CBC共有鍵905を用いてCBC暗号化(906)したものである。暗号化機密情報処理ソフトウェア901は、暗号化された状態で、改竄検出制御部907、認証制御部908、暗号化通信制御部909、処理コマンド部910、定数911を含んでいる。
【０１１３】
図１０は、暗号化機密情報処理ソフトウェア901を読み込んで実行するCPU1001の動作、および機密情報処理用LSI1002の構成と動作を示しており、暗号化機密情報処理ソフトウェア901を実行すると機密情報処理1003が行われる。
【０１１４】
暗号化機密情報処理ソフトウェア901の実行にあたり、CPU1001は改竄検出制御部907をメモリ104から読み込み実行する。改竄検出制御部907を実行すると、CPU1001は、メモリ104上の改竄検出制御部907、認証制御部908、暗号化通信制御部909、処理コマンド部910および定数911を順次、機密情報処理用LSI1002に入力する。機密情報処理用LSI1002においては、それらの入力をCBC共有鍵1004を用いてCBC復号化回路1005において復号し、復号された定数部を分離して取り出す(1006)。そして、取り出された定数部と定数1007とを比較器1008において比較することにより、暗号化機密情報処理ソフトウェア901の改竄検出を行う。両値が一致すれば、改竄が検出されなかったことになり、イネーブル/ディセーブル信号1009がイネーブルとなり、機密情報処理用LSI1002は機密情報処理用LSI1002内の認証ブロック1010の動作を開始する。また、もし両値が異なれば、改竄が検出されたことになり、イネーブル/ディセーブル信号1009がディセーブルとなり、機密情報処理用LSI1002は、認証ブロック1010の動作を停止する。
【０１１５】
認証ブロック1010の動作が開始されると、乱数生成回路1011において、機密情報処理用LSI1002の外部のノイズを元とした乱数種1012を入力として、乱数1013が生成される。生成された乱数1013は、CPU1001に出力される。CPU1001では、暗号化機密情報処理ソフトウェア901の認証制御部908をメモリ104から読み込み、認証制御部908内に組み込まれた共有鍵1014を用いて、乱数1013に一方向関数処理1015を行い、その結果を比較値1016として機密情報処理用LSI1002に出力する。
【０１１６】
また、機密情報処理用LSI1002においては、一方向関数処理を行う回路1017において、機密情報処理用LSI1002内に記憶されている共有鍵1018を用いて、乱数1013に対して一方向関数処理1017を行い、その結果を比較値1019として、比較器1020に入力する。  比較器1020において、CPU1001から入力された比較値1016と、比較値1019とを比較することにより、認証処理を行う。両値が一致すれば、機密情報処理用LSI1002が暗号化機密情報処理ソフトウェア901を認証したとして、イネーブル/ディセーブル信号1021がイネーブルとなり、機密情報処理用LSI1002は機密情報処理用LSI1002内の暗号化通信ブロック1022の動作を開始する。また、もし両値が異なれば、認証に失敗したことになり、イネーブル/ディセーブル信号1021がディセーブルとなり、機密情報処理用LSI1002は、暗号化通信ブロック1022の動作を停止する。
【０１１７】
また、CPU1001において、改竄検出制御部907の実行を終えると、次に、認証制御部908をメモリ104から読み込み実行する。認証制御部908においては、機密情報処理装置101のノイズを元とした乱数種1023を元に乱数生成1024を行い、乱数1025が生成される。CPU1001においては、認証制御部908に組み込まれた共有鍵1014を用いて、乱数1025に一方向関数処理1026を行いその結果を比較値1027とする。
【０１１８】
また、乱数1025は、CPU1001から機密情報処理用LSI1002に入力され、一方向関数処理を行う回路1029において、機密情報処理用LSI1002内に記憶されている共有鍵1018を用いて乱数1025に対して一方向関数処理を行い、その結果を比較値1030としてCPU1001に入力する。
【０１１９】
CPU1001では、機密情報処理用LSI1002から入力された比較値1030と、比較値1027との比較処理1028を行い、認証処理を行う。両値が一致すれば、暗号化機密情報処理ソフトウェア901が機密情報処理用LSI1002を認証したとして、イネーブル/ディセーブル情報1031がイネーブルとなり、CPU1001は暗号化通信制御部909(1032)をメモリ104から読み込み実行する。また、もし両値が異なれば、認証に失敗したことになり、イネーブル/ディセーブル情報1031がディセーブルとなり、暗号化通信制御部1032は実行されず、CPU1001は処理を終了する。
【０１２０】
さらに、CPU1001においては、比較値1016と比較値1027の排他的論理和1033の結果に対して、共有鍵1014を用いて一方向関数処理1034を行い、その結果をセッション鍵1035とする。
【０１２１】
一方、機密情報処理用LSI1002においては、一方向関数処理を行う回路1036において、比較値1019と比較値1030の排他的論理和1037の結果に対して、共有鍵1018を用いて一方向関数処理を行い、その結果をセッション鍵1038とする。認証に成功していれば、両セッション鍵1035,1038は同じ値となる。
【０１２２】
メモリ104上の処理コマンド部910のコマンドおよび処理データ912は、順次CPU1001に読み込まれ、セッション鍵1035を用いて暗号化1039が行われた後、機密情報入出力処理1040を経て出力され、機密情報処理用LSI1002に入力される。機密情報処理用LSI1002においては、機密情報入出力端子1041を通して入力された暗号化コマンド、暗号化データを、暗号化/復号化回路1042においてセッション鍵1038を用いて復号し、復号したコマンド、データを機密情報処理用LSI1002内の機密情報処理回路1043に入力することにより、機密情報の処理を行う。
【０１２３】
あるいは、機密情報処理回路1043からの出力データを、暗号化/復号化回路1042においてセッション鍵1038を用いて暗号化し、機密情報入出力端子1041を経て、機密情報入出力処理1040を通してCPU1001に入力され、セッション鍵1035を用いた復号化1039を行い、CPU1001にて機密情報の処理を行う。
【０１２４】
このような暗号化通信を行う際、機密情報処理用LSI1002に設けられたカウンタ1044によって通信の回数をカウントする。カウンタ1044の値と機密情報処理用LSI1002内に記憶されていたリミット値1045とを比較器1046で比較し、両値が一致した場合、乱数再発行信号1047,1048が乱数再発行信号生成回路1049において生成されると共に、リセット信号生成回路1050において、リセット信号1051,1052が生成される。乱数再発行信号1047は、乱数生成回路1011に入力され、その結果、乱数1013が再生成され、乱数再発行信号1048は、CPU1001に入力され、それを受けたCPU1001は乱数生成(1024)を再実行する。また、リセット信号1051は、機密情報処理用LSI1002内のセッション鍵1038をリセットする。さらに、リセット信号1052はCPU1001に入力され、それを受けたCPU1001は、セッション鍵1035をリセットする。この際、両セッション鍵(1035,1038)を、暗号化機密情報処理ソフトウェア901、機密情報処理用LSI1002にそれぞれ予め定められた異なった値にリセットすることにより、両セッション鍵は異なった値となる。
【０１２５】
この後、CPU1001においては認証制御部908を実行し、機密情報処理用LSI1002においては認証ブロック1010の動作を再実行することにより、認証処理が再度行われ、セッション鍵1035,1038が更新される。
【０１２６】
なお、第４の実施形態では、認証処理を行う際の一方向関数処理1015,1017に用いた共有鍵と、同じく認証処理を行う際の一方向関数処理1026,1029に用いた共有鍵、セッション鍵を生成する際の一方向関数処理1034,1036に用いた共有鍵を同一のものとしたが、それぞれ異なった共有鍵であっても構わない。
【０１２７】
また、第４の実施形態では、実装前ソフトウェア902に定数903を連結して暗号化する際、CBC暗号化906を行っているが、CBC暗号でなく他の暗号アルゴリズムを用いても構わない。そして、暗号化機密情報処理ソフトウェア901における定数911の位置を処理コマンド部910の後としているが、定数911は他の場所にあっても構わないし、また、複数あっても構わない。
【０１２８】
また、認証ブロック1010の構成は、暗号化通信ブロック1022の動作を制御できるように構成されていればよく、第４の実施形態における認証ブロック1010の構成要素の一部が認証ブロック外にあっても構わず、また、他の構成要素が認証ブロックに含まれていても構わない。
【０１２９】
また、暗号化通信ブロック1022は、暗号化通信ブロック1022が動作しないと同一のセッション鍵による暗号化通信が行えないように構成されていればよく、第４の実施形態における暗号化通信ブロック1022の構成要素の一部が暗号化通信ブロック外にあっても構わず、また、他の構成要素が含まれていても構わない。
【０１３０】
また、第４の実施形態においては、リセット信号1051,1052の発生時に、セッション鍵1038,1035をそれぞれ予め定められた値にリセットしているが、他の値、例えば乱数などを用いてそれぞれ異なる値にリセットしても構わない。
【０１３１】
また、第４の実施形態においては、セッション鍵の生成にあたり、比較値の排他的論理和1033,1037をとっているが、排他的論理和でなく和や積など他の2入力1出力の関数であっても構わない。
【０１３２】
以上のように、第４の実施形態においては、暗号化機密情報処理ソフトウェア901を復号し定数911を取り出すことにより改竄検出を行うと共に、機密情報処理用LSI1002で生成した乱数1013とCPU1001で生成した乱数1025とを元にした相互認証処理を行い、不正なソフトウェアによる機密情報処理用LSI1002の使用を防止している。また、認証処理に用いた乱数1013,1025を元にセッション鍵1038,1035を生成してLSI1002とCPU1001間で暗号化通信を行うことにより、機密情報処理用LSI1002とCPU1001間の機密情報通信を保護している。
【０１３３】
第４の実施の形態においては、機密情報処理用LSI1002とCPU1001の双方で乱数を生成し相互認証を行っているため、万一、不正な機密情報処理用LSI1002を用いて機密情報処理ソフトウェア1001のもつ機密情報を得ようとしても認証に失敗し得ることが出来ず、機密性が向上している。
【０１３４】
また、暗号化/復号化による改竄検出を用いており、改竄検出時に用いる比較用の値（定数1007)を予め機密情報処理用LSI1002に記憶しておくことができ、機密情報処理用LSI1002への入力を減らすことにより、機密性の向上が図られている。さらに、セッション鍵1035,1038を用いた暗号化通信の回数がリミット値1045と一致するとセッション鍵1035,1038をリセットしているため、リセット時に暗号化通信ブロック1022の動作の開始・停止制御を伴わず、制御が容易となっている。
【０１３５】
以上、第1の実施形態、第２の実施形態、第３の実施形態、第４の実施形態について説明した。
【０１３６】
なお、各実施形態において、リミット値634,736,846,1045 を予め機密情報処理用LSIに記憶された値としているが、外部から入力された値であっても構わない。また、乱数種614,713,814,825,1012,1023をノイズを元としたものとしているが他のものであっても構わない。また、バス106を各データ共通のものとしているが、一部あるいは全てのデータに対して専用のバスを設けても構わない。
【０１３７】
以上のように本発明によると、機密情報処理を伴うソフトウェアと機密情報処理を行うLSIとの間で認証と改竄検出を行い、その結果に基づいてLSIが自LSI内の回路の動作の開始・停止を制御することにより不正なソフトウェアの実行による機密情報の漏洩を防ぐと共に、認証で用いた乱数を元とする値からセッション鍵を生成することにより、ソフトウェアとLSIとの間で適当な期間で更新される共有鍵を用いた暗号化通信を行い、プローブなどを用いたバスの観測による機密情報の漏洩を防ぎ、機密性の高い機密情報処理システム及びLSIを実現することができる。
【０１３８】
なお、この発明において、改竄検出の結果として改竄が検出された場合、あるいは認証処理の結果として認証に失敗した場合に、LSI内の機密情報入出力端子の動作を停止し、あるいは機密情報を処理する回路の動作を停止し、そして、改竄検出の結果として改竄が検出されなかった場合、あるいは認証処理の結果として認証に成功した場合に、LSI内の機密情報入出力端子の動作を開始し、あるいは機密情報を処理する回路の動作を開始してもよい。
【産業上の利用可能性】
【０１３９】
この発明にかかる機密情報処理システムおよびLSIは、不正なソフトウェアの実行等による機密情報の漏洩を防ぐことができる等の効果を有し、機密性の高い機密情報処理システムおよびLSIとして有用である。
【図面の簡単な説明】
【０１４０】
【図１】機密情報処理装置の構成を示す図である。
【図２】本発明で用いられる機密情報処理用LSIの主な構成を示した図である
【図３】本発明で用いられる機密情報処理用LSIの動作のフローチャートを示した図である。
【図４】本発明の第1の実施形態、第2の実施形態、第3の実施形態で用いられる機密情報処理ソフトウェアの暗号化ハッシュ値の導出過程を示した図である。
【図５】本発明の第1の実施形態、第2の実施形態、第3の実施形態で用いられる機密情報処理ソフトウェアの構成およびメモリの内容を示した図である。
【図６】本発明の第1の実施形態に係る機密情報処理システムの動作および機密情報処理用LSIの構成を示す図である。
【図７】本発明の第2の実施形態に係る機密情報処理システムの動作および機密情報処理用LSIの構成を示す図である。
【図８】本発明の第3の実施形態に係る機密情報処理システムの動作および機密情報処理用LSIの構成を示す図である。
【図９】本発明の第４の実施形態で用いられる機密情報処理ソフトウェアの構成およびメモリの内容を示した図である。
【図１０】本発明の第4の実施形態に係る機密情報処理システムの動作および機密情報処理用LSIの構成を示す図である。
【符号の説明】
【０１４１】
１０１  機密情報処理装置
１０２  ＣＰＵ
１０４  メモリ
１０５  機密情報処理用ＬＳＩ
１０６  バス
３０１  機密情報処理用ＬＳＩ
３０２  ソフトウェア改竄検出ブロック
３０３  認証ブロック
３０４  暗号化通信ブロック
３０５  機密情報処理ブロック
５０１  機密情報処理ソフトウェア
５０２  暗号化ハッシュ値
５０３  改竄検出制御部
５０４  認証制御部
５０５  暗号化通信制御部
５０６  処理コマンド部
５０７  処理データ部
６０１  ＣＰＵ
６０２  機密情報処理用ＬＳＩ
６０３  暗号化ハッシュ値
６０４  復号化回路
６０５  秘密鍵
６０８  ハッシュ関数処理回路
６１０  比較器
６１１  イネーブル/ディセーブル信号
６１３  乱数生成回路
６１５  乱数
６１６  共有鍵
６１７  一方向関数処理
６１９  一方向関数処理回路
６２０  共有鍵
６２２  比較器
６２３  イネーブル/ディセーブル信号
６２４  暗号化通信ブロック
６２５  一方向関数処理回路
６２６  セッション鍵
６２７  一方向関数処理
６２８  セッション鍵
６２９  暗号化/復号化
６３１  暗号化/復号化回路
６３２  機密情報処理回路
６３７  乱数再発行信号生成回路
６３８  リセット信号生成回路
７０１  ＣＰＵ
７０２  機密情報処理用ＬＳＩ
７０４  復号化回路
７０８  ハッシュ関数処理回路
７１１  イネーブル/ディセーブル信号
７１４  乱数生成処理
７１７  一方向関数処理
７１９  一方向関数処理回路
７２３  イネーブル/ディセーブル信号
７２４  イネーブル/ディセーブル制御回路
７２５  イネーブル/ディセーブル信号
７２６  暗号化通信ブロック
７２８  一方向関数処理回路
７３０  一方向関数処理
７３２  暗号化/復号化処理
７３３  暗号化/復号化回路
７４０  ディセーブル信号生成回路
７４１  ディセーブル信号
８０１  ＣＰＵ
８０２  機密情報処理用ＬＳＩ
８０４  復号化回路
８０８  ハッシュ関数処理回路
８１１  イネーブル/ディセーブル信号
８１３  乱数生成回路
８１７  一方向関数処理
８１９  一方向関数処理回路
８２３  イネーブル/ディセーブル信号
８２４  暗号化通信ブロック
８２６  乱数生成処理
８２８  一方向関数処理
８３０  比較処理
８３１  一方向関数処理回路
８３３  イネーブル/ディセーブル信号
８３４  暗号化通信制御部
８３５  排他的論理和処理
８３６  一方向関数処理
８３８  一方向関数処理回路
８３９  排他的論理和回路
８４１  暗号化/復号化処理
８４３  暗号化/復号化回路
８５０  乱数再発行信号生成回路
８５１  リセット信号生成回路
９０１  暗号化機密情報処理ソフトウェア
９０２  実装前機密情報処理ソフトウェア
９０３  定数
９０４  連結処理
９０５  ＣＢＣ共有鍵
９０６  ＣＢＣ暗号化処理
９１１  定数
１００１  ＣＰＵ
１００２  機密情報処理用ＬＳＩ
１００３  機密情報処理
１００４  ＣＢＣ共有鍵
１００５  ＣＢＣ復号化回路
１００６  分割回路
１００７  定数
１００９  イネーブル/ディセーブル信号
１０１１  乱数生成回路
１０１５  一方向関数処理
１０１７  一方向関数処理回路
１０２１  イネーブル/ディセーブル信号
１０２２  暗号化通信ブロック
１０２４  乱数生成処理
１０２６  一方向関数処理
１０２８  比較処理
１０２９  一方向関数処理
１０３１  イネーブル/ディセーブル信号
１０３２  暗号化通信制御部
１０３３  排他的論理和処理
１０３４  一方向関数処理
１０３６  一方向関数回路
１０３７  排他的論理和回路
１０３９  暗号化/復号化処理
１０４０  機密情報入出力処理
１０４１  機密情報入出力端子
１０４２  暗号化/復号化回路
【図１】
2005157930.tif 000003
【図２】
2005157930.tif 000004
【図３】
2005157930.tif 000005
【図４】
2005157930.tif 000006
【図５】
2005157930.tif 000007
【図６】
2005157930.tif 000008
【図７】
2005157930.tif 000009
【図８】
2005157930.tif 000010
【図９】
2005157930.tif 000011
【図１０】
2005157930.tif 000012