(57)【要約】【課題】ファームウエア等の外部から読み込まれるプログラムに対する秘匿性を向上することが可能なブートプログラム、情報処理装置、情報処理システム、情報処理方法、半導体装置、およびプログラムを提供する。【解決手段】ファームウエア等の外部から読み込まれるプログラムの識別情報を取得し、当該プログラムに関して使用される複数の鍵データのうち、識別情報に応じた範囲における鍵データの使用可否を設定する。他の例として、予めメモリに記憶されている鍵データと識別情報とに基づいて生成された新たな鍵データに基づいて、識別情報に対応したファームウエアを復号する。【選択図】図３
2019212342.tif 000002
【特許請求の範囲】
【請求項１】
ファームウエアの起動前に情報処理装置のコンピュータによって実行されるブートプログラムであって、
前記コンピュータを、
ファームウエアの識別情報を取得する識別情報取得手段と、
予めメモリに記憶されている鍵データと前記識別情報とに基づいて、新たな鍵データを生成する鍵データ生成手段と、
前記生成された鍵データに基づいて、前記識別情報に対応したファームウエアを復号するファームウエア復号手段と、
前記鍵データ生成手段による鍵データの生成を無効化する鍵データ生成無効化手段と、
前記復号されたファームウエアを起動させるファームウエア起動手段として機能させる、ブートプログラム。
【請求項２】
前記ファームウエア起動手段は、前記鍵データ生成無効化手段が鍵データの生成を無効化した後に前記復号されたファームウエアを起動させる、請求項１に記載のブートプログラム。
【請求項３】
前記鍵データ生成無効化手段は、前記鍵データ生成手段による鍵生成機能を１回のみ利用可能に設定することによって、前記鍵データ生成手段による鍵データの生成を無効化する、請求項１または２に記載のブートプログラム。
【請求項４】
前記鍵データ生成無効化手段は、前記ファームウエアが復号された後に前記メモリが記憶している鍵データを使用不可に設定することによって、当該鍵データを用いた新たな鍵データの生成を無効化する、請求項３に記載のブートプログラム。
【請求項５】
前記鍵データ生成無効化手段は、前記ファームウエアが復号された後に前記鍵データ生成手段へのアクセスを不可に設定することによって、前記鍵データ生成手段による鍵データの生成を無効化する、請求項３に記載のブートプログラム。
【請求項６】
前記メモリには、前記鍵データを生成するための単一の鍵データが記憶され、
前記鍵データ生成手段は、前記メモリに記憶されている単一の鍵データと前記識別情報とに基づいて、新たな鍵データを生成する、請求項１乃至５の何れか１つに記載のブートプログラム。
【請求項７】
前記鍵データ生成手段が生成した新たな鍵データを無効化する鍵データ無効化手段として、前記コンピュータを、さらに機能させる、請求項１乃至６の何れか１つに記載のブートプログラム。
【請求項８】
前記ファームウエアを読み出す読出手段として、前記コンピュータを、さらに機能させ、
前記識別情報取得手段は、前記読み出したファームウエアの識別情報を取得する、請求項１乃至７の何れか１つに記載のブートプログラム。
【請求項９】
前記識別情報取得手段は、現時点までに起動したファームウエアの識別情報を取得する、請求項１乃至７の何れか１つに記載のブートプログラム。
【請求項１０】
前記識別情報は、前記ファームウエアに設定されているバージョンである、請求項１乃至９の何れか１つに記載のブートプログラム。
【請求項１１】
前記識別情報取得手段は、前記読出手段が読み出したファームウエアのヘッダに記述された識別情報を、前記取得したファームウエアの識別情報として取得し、
前記鍵データ生成手段は、予めメモリに記憶されている鍵データと前記ヘッダに記述された識別情報とに基づいて、新たな鍵データを生成する、請求項８に記載のブートプログラム。
【請求項１２】
ファームウエアに関して使用される鍵データを記憶する鍵データ記憶手段と、
ブートプログラムを実行する実行手段と、
前記ブートプログラムの実行にしたがって、ファームウエアの識別情報を取得する識別情報取得手段と、
前記鍵データ記憶手段に記憶されている鍵データと前記識別情報とに基づいて、新たな鍵データを生成する鍵データ生成手段と、
前記生成された鍵データに基づいて、前記識別情報に対応したファームウエアを復号するファームウエア復号手段と、
前記鍵データ生成手段による鍵データの生成を無効化する鍵データ生成無効化手段と、
前記復号されたファームウエアを起動させるファームウエア起動手段とを備える、情報処理装置。
【請求項１３】
ファームウエアに関して使用される鍵データを記憶する鍵データ記憶手段と、
ブートプログラムを実行する実行手段と、
前記ブートプログラムの実行にしたがって、ファームウエアの識別情報を取得する識別情報取得手段と、
前記鍵データ記憶手段に記憶されている鍵データと前記識別情報とに基づいて、新たな鍵データを生成する鍵データ生成手段と、
前記生成された鍵データに基づいて、前記識別情報に対応したファームウエアを復号するファームウエア復号手段と、
前記鍵データ生成手段による鍵データの生成を無効化する鍵データ生成無効化手段と、
前記復号されたファームウエアを起動させるファームウエア起動手段とを備える、情報処理システム。
【請求項１４】
ファームウエアの起動前に行われる情報処理方法であって、
ファームウエアの識別情報を取得する識別情報取得ステップと、
予めメモリに記憶されている鍵データと前記識別情報とに基づいて、新たな鍵データを生成する鍵データ生成ステップと、
前記生成された鍵データに基づいて、前記識別情報に対応したファームウエアを復号するファームウエア復号ステップと、
前記鍵データ生成ステップにおける鍵データの生成を無効化する鍵データ生成無効化ステップと、
前記復号されたファームウエアを起動させるファームウエア起動ステップとを含む、情報処理方法。
【請求項１５】
プロセッサと、
ブートプログラムを記憶する第１のメモリと、
鍵データを記憶するための第２のメモリとを備え、
前記プロセッサは、前記第１のメモリに記憶されているブートプログラムの実行により、
ファームウエアの識別情報を取得する識別情報取得手段と、
前記第２のメモリに記憶されている鍵データと前記識別情報とに基づいて、新たな鍵データを生成する鍵データ生成手段と、
前記生成された鍵データに基づいて、前記識別情報に対応したファームウエアを復号するファームウエア復号手段と、
前記鍵データ生成手段による鍵データの生成を無効化する鍵データ生成無効化手段と、
前記復号されたファームウエアを起動させるファームウエア起動手段として機能する、半導体装置。
【請求項１６】
内部プログラムを記憶するメモリを有し、当該内部プログラムの実行に続けて外部プログラムを実行する情報処理装置であって、
前記外部プログラムに関して使用される鍵データを記憶する鍵データ記憶手段と、
前記内部プログラムを実行する実行手段と、
前記外部プログラムを前記情報処理装置の外部から取得する外部プログラム取得手段と、
前記内部プログラムの実行にしたがって、前記外部プログラムの識別情報を取得する識別情報取得手段と、
前記鍵データ記憶手段に記憶されている鍵データと前記識別情報とに基づいて、新たな鍵データを生成する鍵データ生成手段と、
前記生成された鍵データに基づいて、前記識別情報に対応した外部プログラムを復号する復号手段と、
前記鍵データ生成手段による鍵データの生成を無効化する鍵データ生成無効化手段と、
前記復号された外部プログラムを起動させる起動手段とを備える、情報処理装置。
【請求項１７】
更新可能なプログラムの起動前に情報処理装置のコンピュータによって実行される更新不可能なプログラムであって、
前記コンピュータを、
前記更新可能なプログラムのバージョン情報を取得する取得手段と、
予めメモリに記憶されている鍵データと前記取得したバージョン情報とに基づいて、新たな鍵データを生成する鍵データ生成手段と、
前記生成された鍵データに基づいて、前記バージョン情報に対応した更新可能なプログラムを復号する復号手段と、
前記鍵データ生成手段による鍵データの生成を無効化する鍵データ生成無効化手段と、
前記復号された更新可能なプログラムを起動させる起動手段として機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブートプログラム、情報処理装置、情報処理システム、情報処理方法、半導体装置、およびプログラムに関し、特に例えば、ファームウエア等の最初に読み込まれるプログラムを起動することが可能なブートプログラム、情報処理装置、情報処理システム、情報処理方法、半導体装置、およびプログラムに関する。
【背景技術】
【０００２】
従来、ファームウエアを起動して動作する電子機器において、当該ファームウエアを更新して新たな機能を備える技術がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１８５７６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ファームウエアの秘匿性が失われた場合、更新後のファームウエアであっても同様に秘匿性を失うことがあり、さらなるセキュリティの向上が求められる。
【０００５】
それ故に、本発明の目的は、ファームウエア等の外部から読み込まれるプログラムに対する秘匿性を向上することが可能なブートプログラム、情報処理装置、情報処理システム、情報処理方法、半導体装置、およびプログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【０００７】
本発明のブートプログラムの一構成例は、ファームウエアの起動前に情報処理装置のコンピュータによって実行される。ブートプログラムは、識別情報取得手段および鍵使用可否設定手段としてコンピュータを機能させる。識別情報取得手段は、ファームウエアの識別情報を取得する。鍵使用可否設定手段は、ファームウエアに関して使用される複数の鍵データのうち、識別情報に応じた範囲における鍵データの使用可否を設定する。
【０００８】
上記によれば、ファームウエアの起動前に実行されるブートプログラムにより、複数の鍵データが、ファームウエアの識別情報に応じた範囲で利用可能となるため、当該識別情報に応じてファームウエアの秘匿性を確保することができる。
【０００９】
また、上記ブートプログラムは、ファームウエアを読み出す読出手段として、コンピュータを、さらに機能させてもよい。この場合、上記識別情報取得手段は、読み出したファームウエアの識別情報を取得してもよい。
【００１０】
上記によれば、読み出したファームウエアによって鍵データの秘匿性を管理することができる。
【００１１】
また、上記識別情報取得手段は、現時点までに起動したファームウエアの識別情報を取得してもよい。
【００１２】
上記によれば、現時点までに起動したファームウエアの識別情報に応じて、鍵データの秘匿性を管理することができる。
【００１３】
また、上記識別情報は、ファームウエアに設定されているバージョンでもよい。
【００１４】
上記によれば、ファームウエアのバージョンによって鍵データの秘匿性を管理することができる。
【００１５】
また、上記鍵データは、バージョン毎に異なってもよい。上記鍵使用可否設定手段は、複数の鍵データのうち、識別情報取得手段が取得したバージョンより新しいバージョンに対応する鍵データを使用不可に設定してもよい。
【００１６】
上記によれば、新しいファームウエアのバージョンに対応する鍵データの秘匿性を確保することができる。
【００１７】
また、上記鍵使用可否設定手段は、ファームウエアを起動した後では、鍵データを少なくとも使用不可から使用可に設定変更ができなくてもよい。
【００１８】
上記によれば、ファームウエアを起動した後は、鍵データが使用不可から使用可に設定変更できないため、鍵データの秘匿性をさらに向上させることができる。
【００１９】
また、上記鍵使用可否設定手段は、複数の鍵データのうち、識別情報取得手段が取得したバージョンに対応する鍵データを使用可に設定し、当該バージョンより古いバージョンに対応する鍵データの少なくとも１つを使用可に設定してもよい。
【００２０】
上記によれば、古いバージョンに対応するプログラムの復号に用いる鍵データを使用可能に設定することができ、当該プログラムの復号等の処理が可能となる。
【００２１】
また、上記識別情報取得手段は、読出手段が読み出したファームウエアのヘッダに記述された識別情報を、取得したファームウエアの識別情報として取得してもよい。上記鍵使用可否設定手段は、ヘッダに記述された識別情報に応じて鍵データの使用可否を設定してもよい。
【００２２】
上記によれば、ファームウエアのヘッダ情報を利用して、鍵データの秘匿性を管理することができる。
【００２３】
また、上記ブートプログラムは、ファームウエア復号手段として、コンピュータをさらに機能させてもよい。ファームウエア復号手段は、鍵使用可否設定手段が鍵データの使用可否を設定する前に、複数の鍵データの何れかを用いて、識別情報取得手段が取得した識別情報に対応するファームウエアを復号する。
【００２４】
上記によれば、秘匿性が確保された鍵データを用いてファームウエアが復号されるため、当該ファームウエアの秘匿性も向上させることができる。
【００２５】
本発明の情報処理装置の一構成例は、鍵データ記憶手段、実行手段、識別情報取得手段、鍵使用可否設定手段、および起動手段を備える。鍵データ記憶手段は、ファームウエアに関して使用される複数の鍵データを記憶する。実行手段は、ブートプログラムを実行する。識別情報取得手段は、ブートプログラムの実行にしたがって、ファームウエアの識別情報を取得する。鍵使用可否設定手段は、複数の鍵データのうち、識別情報に応じた範囲における鍵データの使用可否を設定する。起動手段は、鍵データの使用可否が設定された後、識別情報取得手段が取得した識別情報に対応したファームウエアを起動する。
【００２６】
上記によれば、ファームウエアの起動前に実行されるブートプログラムにより、複数の鍵データが、ファームウエアの識別情報に応じた範囲で利用可能となるため、当該識別情報に応じてファームウエアの秘匿性を確保することができる。
【００２７】
また、上記情報処理装置は、起動識別情報記憶制御手段を、さらに備えてもよい。起動識別情報記憶制御手段は、起動手段が起動したファームウエアの識別情報を不揮発性メモリに記憶する。この場合、上記識別情報取得手段は、不揮発性メモリに記憶されている識別情報を、ファームウエアの識別情報として取得してもよい。上記鍵使用可否設定手段は、不揮発性メモリに記憶されている識別情報に応じて鍵データの使用可否を設定してもよい。
【００２８】
上記によれば、現時点までに起動したファームウエアの識別情報に応じて、鍵データの秘匿性を管理することができる。
【００２９】
また、上記鍵使用可否設定手段は、不揮発性メモリに記憶されている識別情報が更新された場合、当該更新後に鍵データの使用可否を再設定してもよい。
【００３０】
上記によれば、不揮発性メモリにおいて更新された識別情報に基づいて、即時ファームウエアを起動することができる。
【００３１】
また、上記情報処理装置は、暗号化／復号手段を、さらに備えてもよい。暗号化／復号手段は、起動手段がファームウエアを起動した後、使用可に設定された鍵データを用いて入力データを暗号化または復号する。
【００３２】
上記によれば、秘匿性が確保された鍵データを用いてファームウエア以外の入力データも暗号化または復号されるため、当該入力データの秘匿性も向上させることができる。
【００３３】
また、上記情報処理装置は、プログラム復号手段を、さらに備えてもよい。プログラム復号手段は、起動手段がファームウエアを起動した後、使用可に設定された鍵データを用いて他のプログラムを復号する。
【００３４】
上記によれば、秘匿性が確保された鍵データを用いてファームウエア以外のプログラムも復号されるため、当該プログラムの秘匿性も向上させることができる。
【００３５】
また、本発明は、上記各手段を備える情報処理システムや上記各手段で行われる動作を含む情報処理方法の形態で実施されてもよい。
【００３６】
また、本発明の半導体装置の一構成例は、プロセッサ、第１のメモリ、および第２のメモリを備える。第１のメモリは、ブートプログラムを記憶する。第２のメモリは、複数の鍵データを記憶する。プロセッサは、第１のメモリに記憶されているブートプログラムの実行により、識別情報取得手段、鍵使用可否設定手段、および起動手段として機能する。識別情報取得手段は、ファームウエアの識別情報を取得する。鍵使用可否設定手段は、第２のメモリに複数の鍵データが記憶されている場合、当該鍵データのうち、識別情報に応じた範囲における鍵データの使用可否を設定する。起動手段は、鍵データの使用可否が設定された後、識別情報取得手段が取得した識別情報に対応するファームウエアを起動する。
【００３７】
上記によれば、ファームウエアの起動前に実行されるブートプログラムにより、複数の鍵データが、ファームウエアの識別情報に応じた範囲で利用可能となるため、当該識別情報に応じてファームウエアの秘匿性を確保することができる。
【００３８】
また、本発明の情報処理装置の他の構成例は、内部プログラムを記憶するメモリを有し、当該内部プログラムの実行に続けて外部プログラムを実行する。情報処理装置は、鍵データ記憶手段、外部プログラム取得手段、識別情報取得手段、鍵使用可否設定手段、および起動手段を備える。鍵データ記憶手段は、複数の鍵データを記憶する。外部プログラム取得手段は、外部プログラムを情報処理装置の外部から取得する。識別情報取得手段は、外部プログラムの識別情報を取得する。鍵使用可否設定手段は、鍵データ記憶手段に記憶された鍵データのうち、識別情報に応じた範囲における鍵データの使用可否を設定する。起動手段は、鍵データの使用可否が設定された後、取得した外部プログラムを起動する。
【００３９】
上記によれば、外部プログラムの起動前に実行される内部プログラムにより、複数の鍵データが、情報処理装置の外部から読み込まれる外部プログラムの識別情報に応じた範囲で利用可能となるため、当該識別情報に応じて外部プログラムの秘匿性を確保することができる。
【００４０】
また、本発明のプログラムの一構成例は、更新可能なプログラムの起動前に情報処理装置のコンピュータによって実行されて更新不可能である。プログラムは、取得手段および鍵使用可否設定手段として、コンピュータを機能させる。取得手段は、更新可能なプログラムのバージョン情報を取得する。鍵使用可否設定手段は、取得したバージョン情報に基づいて、更新可能なプログラムに関して使用される複数の鍵データのうち、当該バージョン情報に応じた範囲における鍵データの使用可否を設定する。
【００４１】
上記によれば、複数の鍵データが、更新可能なプログラムのバージョン情報に応じた範囲で更新不可能なプログラムの実行によって利用可能となるため、当該バージョン情報に応じて更新可能なプログラムの秘匿性を確保することができる。
【００４２】
本発明のブートプログラムの他の構成例は、ファームウエアの起動前に情報処理装置のコンピュータによって実行される。ブートプログラムは、識別情報取得手段、鍵データ生成手段、ファームウエア復号手段、鍵データ生成無効化手段、およびファームウエア起動手段として、コンピュータを機能させる。識別情報取得手段は、ファームウエアの識別情報を取得する。鍵データ生成手段は、予めメモリに記憶されている鍵データと識別情報とに基づいて、新たな鍵データを生成する。ファームウエア復号手段は、生成された鍵データに基づいて、識別情報に対応したファームウエアを復号する。鍵データ生成無効化手段は、鍵データ生成手段による鍵データの生成を無効化する。ファームウエア起動手段は、復号されたファームウエアを起動させる。
【００４３】
上記によれば、ファームウエアの起動前に実行されるブートプログラムにより、ファームウエアを復号するための鍵データが当該ファームウエアの識別情報に応じて生成されて当該ファームウエアが復号されるとともに、当該鍵データを生成する機能が無効化されるため、ファームウエアに対する秘匿性を向上することができる。
【００４４】
上記ファームウエア起動手段は、鍵データ生成無効化手段が鍵データの生成を無効化した後に復号されたファームウエアを起動させてもよい。
【００４５】
上記によれば、ファームウエアを復号するための鍵データを生成する機能が無効化された後に当該ファームウエアが復号されるため、鍵データの秘匿性を確保することができる。
【００４６】
上記鍵データ生成無効化手段は、鍵データ生成手段による鍵生成機能を１回のみ利用可能に設定することによって、鍵データ生成手段による鍵データの生成を無効化してもよい。
【００４７】
上記によれば、ファームウエアを復号するための鍵データを生成する機能を１回のみ利用可能に設定することによって、鍵データの秘匿性を確保することができる。
【００４８】
上記鍵データ生成無効化手段は、ファームウエアが復号された後にメモリが記憶している鍵データを使用不可に設定することによって、当該鍵データを用いた新たな鍵データの生成を無効化してもよい。
【００４９】
上記によれば、ファームウエアが復号された後にメモリが記憶している鍵データを使用不可に設定することによって、秘匿性を確保した状態で新たな鍵データの生成を無効化することができる。
【００５０】
上記鍵データ生成無効化手段は、ファームウエアが復号された後に鍵データ生成手段へのアクセスを不可に設定することによって、鍵データ生成手段による鍵データの生成を無効化してもよい。
【００５１】
上記によれば、鍵データを生成する機能へのアクセスを不可に設定することによって、秘匿性を確保した状態で新たな鍵データの生成を無効化することができる。
【００５２】
上記メモリには、鍵データを生成するための単一の鍵データが記憶されてもよい。この場合、上記鍵データ生成手段は、メモリに記憶されている単一の鍵データと識別情報とに基づいて、新たな鍵データを生成してもよい。
【００５３】
上記によれば、単一の鍵データを用いて、識別情報が異なる複数のファームウエアの復号が可能となる。
【００５４】
上記ブートプログラムは、鍵データ無効化手段として、コンピュータを、さらに機能させてもよい。鍵データ無効化手段は、鍵データ生成手段が生成した新たな鍵データを無効化する。
【００５５】
上記によれば、新たに生成された鍵データを無効化することによって、当該鍵データの秘匿性を確保することができる。
【００５６】
上記ブートプログラムは、ファームウエアを読み出す読出手段として、コンピュータを、さらに機能させてもよい。この場合、上記識別情報取得手段は、読み出したファームウエアの識別情報を取得してもよい。
【００５７】
上記によれば、読み出したファームウエアに応じた鍵データを生成することができる。
【００５８】
上記識別情報取得手段は、現時点までに起動したファームウエアの識別情報を取得してもよい。
【００５９】
上記によれば、現時点までに起動したファームウエアの識別情報に応じた鍵データを生成することができる。
【００６０】
上記識別情報は、ファームウエアに設定されているバージョンでもよい。
【００６１】
上記によれば、ファームウエアのバージョンに応じた鍵データを生成することができる。
【００６２】
上記識別情報取得手段は、読出手段が読み出したファームウエアのヘッダに記述された識別情報を、取得したファームウエアの識別情報として取得してもよい。上記鍵データ生成手段は、予めメモリに記憶されている鍵データとヘッダに記述された識別情報とに基づいて、新たな鍵データを生成してもよい。
【００６３】
上記によれば、ファームウエアのヘッダ情報を利用して、当該ファームウエアに応じた鍵データを生成することができる。
【００６４】
また、本発明は、上記各手段を備える情報処理装置および情報処理システムや上記各手段で行われる動作を含む情報処理方法の形態で実施されてもよい。
【００６５】
また、本発明の半導体装置の他の構成例は、プロセッサ、第１のメモリ、および第２のメモリを備える。第１のメモリは、ブートプログラムを記憶する。第２のメモリは、鍵データを記憶する。プロセッサは、第１のメモリに記憶されているブートプログラムの実行により、識別情報取得手段、鍵データ生成手段、ファームウエア復号手段、鍵データ生成無効化手段、およびファームウエア起動手段として機能する。識別情報取得手段は、ファームウエアの識別情報を取得する。鍵データ生成手段は、第２のメモリに記憶されている鍵データと識別情報とに基づいて、新たな鍵データを生成する。ファームウエア復号手段は、生成された鍵データに基づいて、識別情報に対応したファームウエアを復号する。鍵データ生成無効化手段は、鍵データ生成手段による鍵データの生成を無効化する。ファームウエア起動手段は、復号されたファームウエアを起動させる。
【００６６】
上記によれば、ファームウエアの起動前に実行されるブートプログラムにより、ファームウエアを復号するための鍵データが当該ファームウエアの識別情報に応じて生成されて当該ファームウエアが復号されるとともに、当該鍵データを生成する機能が無効化されるため、ファームウエアに対する秘匿性を向上することができる。
【００６７】
また、本発明の情報処理装置の他の構成例は、内部プログラムを記憶するメモリを有し、当該内部プログラムの実行に続けて外部プログラムを実行する。情報処理装置は、鍵データ記憶手段、実行手段、外部プログラム取得手段、識別情報取得手段、鍵データ生成手段、復号手段、鍵データ生成無効化手段、および起動手段を備える。鍵データ記憶手段は、外部プログラムに関して使用される鍵データを記憶する。実行手段は、内部プログラムを実行する。外部プログラム取得手段は、外部プログラムを情報処理装置の外部から取得する。識別情報取得手段は、内部プログラムの実行にしたがって、外部プログラムの識別情報を取得する。鍵データ生成手段は、鍵データ記憶手段に記憶されている鍵データと識別情報とに基づいて、新たな鍵データを生成する。復号手段は、生成された鍵データに基づいて、識別情報に対応した外部プログラムを復号する。鍵データ生成無効化手段は、鍵データ生成手段による鍵データの生成を無効化する。起動手段は、復号された外部プログラムを起動させる。
【００６８】
上記によれば、外部プログラムの起動前に実行される内部プログラムにより、外部プログラムを復号するための鍵データが当該外部プログラムの識別情報に応じて生成されて当該外部プログラムが復号されるとともに、当該鍵データを生成する機能が無効化されるため、外部プログラムに対する秘匿性を向上することができる。
【００６９】
また、本発明のプログラムの他の構成例は、更新可能なプログラムの起動前に情報処理装置のコンピュータによって実行されて更新不可能である。プログラムは、取得手段、鍵データ生成手段、復号手段、鍵データ生成無効化手段、および起動手段として、コンピュータを機能させる。取得手段は、更新可能なプログラムのバージョン情報を取得する。鍵データ生成手段は、予めメモリに記憶されている鍵データと取得したバージョン情報とに基づいて、新たな鍵データを生成する。復号手段は、生成された鍵データに基づいて、バージョン情報に対応した更新可能なプログラムを復号する。鍵データ生成無効化手段は、鍵データ生成手段による鍵データの生成を無効化する。起動手段は、復号された更新可能なプログラムを起動させる。
【００７０】
上記によれば、更新不可能なプログラムの実行によって、更新可能なプログラムのバージョン情報に応じた鍵データが生成されるため、当該バージョン情報に応じた鍵データを生成することができるとともに、当該鍵データを生成する機能が無効化されるため、更新可能なプログラムに対する秘匿性を向上することができる。
【発明の効果】
【００７１】
本発明によれば、複数の鍵データが、ファームウエアの識別情報や外部から読み込まれる外部プログラムの識別情報に応じた範囲で利用可能となるため、当該識別情報に応じて鍵データの秘匿性を確保することができる。
【図面の簡単な説明】
【００７２】
【図１】集積回路１を含む第１の実施形態に係る情報処理装置の一例を示すブロック図
【図２】鍵データ記憶部６の一例を示すブロック図
【図３】第１の実施形態に係る情報処理装置で行われる動作概要の第１の例を時間軸に沿って表現した図
【図４】第１の実施形態に係る情報処理装置で行われる動作概要の第２の例を時間軸に沿って表現した図
【図５】ゲームカード用集積回路１１を含む第２の実施形態に係る情報処理装置の一例を示すブロック図
【図６】鍵データ記憶部１６の一例を示すブロック図
【図７】第２の実施形態に係る情報処理装置で行われる動作概要の第３の例を時間軸に沿って表現した図
【発明を実施するための形態】
【００７３】
（第１の実施形態）
図１を参照して、本発明の第１の実施形態に係る情報処理装置について説明する。なお、図１は、集積回路１を含む情報処理装置の一例を示すブロック図である。
【００７４】
例えば、上記情報処理装置は、集積回路１を含んでいる。ここで、上記情報処理装置は、交換可能なメモリカードや光ディスク等の記録媒体内に記憶された、または、サーバや他の装置から受信されたプログラムを実行可能である。なお、上記情報処理装置は、１以上の装置によって構成されてもよく、集積回路１は、複数の装置に分散して設けられてもよい。
【００７５】
上記情報処理装置は、集積回路１の他に、ＮＡＮＤ９等が設けられている。また、集積回路１は、例えばＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）によって、１つの半導体チップ上にＣＰＵ２、暗号処理部３、ＲＯＭ４、ＳＲＡＭ５、鍵データ記憶部６、バージョン情報記憶部７、およびＮＡＮＤ  Ｉ/Ｆ８等が構成される。そして、ＣＰＵ２は、暗号処理部３、ＲＯＭ４、ＳＲＡＭ５、バージョン情報記憶部７、およびＮＡＮＤ９（ＮＡＮＤ  Ｉ/Ｆ８）との間で、データ、コマンド、アドレス等を送受信する。
【００７６】
ＣＰＵ２は、各種の情報処理を実行するための情報処理手段（コンピュータ）の一例である。ＣＰＵ２は、各種の情報処理の１つとして、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４内に設定されているデータ（ブートプログラム）を用いて、鍵データ記憶部６やバージョン情報記憶部７に対する初期設定を行う処理等を実行する機能を有する。また、ＣＰＵ２は、各種の情報処理の１つとして、ＮＡＮＤ（ＮＡＮＤ型フラッシュメモリ）９内に設定されているデータ（ファームウエア）を用いて、バージョン情報記憶部７に対する初期設定を行う処理等を実行する機能を有する。例えば、ＣＰＵ２が所定のプログラム（ブートプログラム、ファームウエア等）を実行することによって、上記機能が実現される。ＲＯＭ４およびＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５、ＮＡＮＤ９は、それぞれＣＰＵ２がアクセス可能なメモリであり、それぞれＣＰＵ２が上記処理を実行する際に用いる各種のデータを記憶する。なお、ＣＰＵ２が実行するプログラムは、ＣＰＵ２がアクセス可能な記憶装置（記憶媒体）であればどのようなものに格納されていてもよく、一例としてＲＯＭ４やＮＡＮＤ９に格納される。上記プログラムは、ＣＰＵ２を含む情報処理装置内に設けられる他の記憶装置に格納されてもよいし、ＣＰＵ２を含む情報処理装置に着脱自在に装着される記憶媒体に格納されてもよい。また、上記プログラムは、ＣＰＵ２とネットワークを介して接続される記憶装置（サーバ等）に格納されてもよい。ＣＰＵ２は、上記プログラムの一部または全部を適宜のタイミングでＳＲＡＭ５に読み出し、読み出されたプログラムを実行するようにしてもよい。
【００７７】
暗号処理部３は、暗号処理部３が用いる複数の鍵データ（例えば、共通鍵データ）を保持する鍵データ記憶部６を備えている。鍵データ記憶部６は、暗号処理部３の暗号回路内に設けられてもよいし、暗号処理部３の暗号回路外に設けられてもよい。何れの場合であっても、鍵データ記憶部６は、ＣＰＵ２から隠蔽された状態で構成される。暗号処理部３は、例えば共通鍵暗号方式を用いて入力データを暗号化および／または復号する暗号処理装置として機能する。例えば、暗号処理部３は、鍵データ記憶部６に保持された鍵データを用いて、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号方式に基づいた暗号化および／または復号が可能であり、一例としてＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）動作モード、ＣＴＲ（Ｃｏｕｎｔｅｒ）動作モード、ＥＣＢ（Ｅｌｅｃｔｒｏｎｉｃ  ＣｏｄｅＢｏｏｋ）動作モード、ＣＦＢ（Ｃｉｐｈｅｒ  ＦｅｅｄＢａｃｋ）動作モード、ＯＦＢ（Ｏｕｔｐｕｔ  ＦｅｅｄＢａｃｋ）動作モード等で動作する。なお、暗号処理部３は、ＡＥＳ暗号方式に限らず、他の暗号化方式に基づいて暗号化および／または復号する暗号処理装置であってもよい。
【００７８】
次に、図２を参照して、鍵データ記憶部６の一例について説明する。なお、図２は、鍵データ記憶部６の一例を示すブロック図である。
【００７９】
図２において、鍵データ記憶部６は、鍵データ保持部６１、使用制限レジスタ６２、および鍵選択レジスタ６３を備えている。鍵データ保持部６１は、物理解析困難なＲＯＭマクロを用いる等、耐タンパ性の高い方式を用いてｎ個の鍵データ（共通鍵データ）１〜ｎを保持する。一例として、鍵データ保持部６１は、集積回路１の製造時に鍵データ１〜ｎが保持されてもよいし、当該製造後に鍵データ１〜ｎが書き込まれる場合、ｅＦｕｓｅ（エレクトリカルフューズ）等で構成されてもよい。なお、上記ｎは、想定されるファームウエアのバージョン数に応じて設定してもよく、例えばｎ＝３２に設定してもよい。また、鍵データ保持部６１に保持されるデータは、暗号化または復号に用いられる鍵データを生成するための種となる暗号種データでもよい。
【００８０】
使用制限レジスタ６２は、鍵データ保持部６１が保持している鍵データ毎に使用可／使用不可を設定して保持する。一例として、使用制限レジスタ６２は、上記鍵データ毎に設けられたＳｔｉｃｋｙ  ｂｉｔで構成される。Ｓｔｉｃｋｙ  ｂｉｔは、リセット解除時に０に初期設定され、他の装置からのコマンドに応じて１を書き込むことはできるが、次のハードウエアリセットまで０に戻せないレジスタである。この場合、使用制限レジスタ６２の各ビットが０に設定されることよって当該使用制限レジスタ６２に対応する鍵データが使用可能であることを示し、各ビットが１に設定されることよって当該使用制限レジスタ６２に対応する鍵データが使用不可であることを示す。これによって、鍵データ保持部６１が保持している鍵データの設定が使用可から使用不可への変更が可能となり、ハードウエアリセットしない限り使用不可から使用可への変更ができない。
【００８１】
他の例として、使用制限レジスタ６２は、使用可／使用不可を設定して保持する上記鍵データ毎のレジスタと、当該レジスタへの書き込み可否を制限する設定完了レジスタとで構成される。例えば、設定未完了を意味するデータ（例えば、数値０を示すデータ）が設定完了レジスタに書き込まれている場合、上記鍵データ毎の設定を保持するレジスタへの書き込みは可能となるが、設定完了を意味するデータ（例えば、数値１を示すデータ）の書き込みが設定完了レジスタに行われると、それ以降、上記鍵データ毎の設定を保持するレジスタ全てへの書き込みができなくなる。そして、設定完了レジスタは、設定完了を意味するデータが書き込まれると、当該設定完了の解除はできない構成になっている。
【００８２】
鍵選択レジスタ６３は、暗号処理部３が選択した鍵データの種別（鍵番号）を保持する。そして、鍵選択レジスタ６３によって選択された鍵データが、使用制限レジスタ６２によって使用可に設定されている場合、暗号処理部３は、当該鍵データを鍵データ記憶部６から読み出して入力データの暗号化および／または復号する処理を行う。
【００８３】
バージョン情報記憶部７は、鍵データ記憶部６が保持している鍵データ（共通鍵データ）の数より１つ少ないビット数（すなわち、ｎ−１ビット）を有する不揮発性メモリで構成される。そして、バージョン情報記憶部７は、情報処理装置で起動した最新のファームウエアのバージョン情報（バージョン番号Ｙであり、鍵番号Ｙに対応する）を管理する。具体的には、バージョン情報記憶部７は、ＯＴＰ（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ）メモリで構成され、ｅＦｕｓｅやａｎｔｉ−Ｆｕｓｅ（アンチフューズ）等、各ビットが０＞１に書き込み可能に構成される。例えば、バージョン情報記憶部７は、４ビットの不揮発性メモリで構成される場合、０ｂ００００＞０ｂ０００１＞０ｂ００１１＞０ｂ０１１１＞０ｂ１１１１の順に一方端から順に０＞１に書き換えていく。これによって、バージョン情報記憶部７は、ファームウエアのバージョンアップによって使用可能となっている鍵番号を示すことができ、１に書き換えられたビット数によって当該鍵番号Ｙ（バージョン番号Ｙ）が示される。例えば、上述した書き換えによって、バージョン情報記憶部７は、鍵番号０＞鍵番号１＞鍵番号２＞鍵番号３＞鍵番号４を示すことができ、４ビット数で５つの鍵データの鍵番号を示すことができる。また、バージョン情報記憶部７は、各ビットが０＞１に書き込み可能に構成されることによって、バージョン情報のバージョンを古いものに戻すことができない。
【００８４】
次に、図３を参照して、情報処理装置で行われる動作概要の第１の例について説明する。なお、図３は、情報処理装置で行われる動作概要の第１の例を時間軸に沿って表現した図である。
【００８５】
図３において、ユーザが電源スイッチを手動でオンにする操作等を行うことにより情報処理装置の電源が投入されると、ＲＯＭ４に格納されたブートプログラム（ブートＲＯＭ）によるＣＰＵ２の処理（以下、ブートＲＯＭによる処理と記載する）が開始される。ここで、ブートプログラムは、他のソフトウエアからアクセスできないソフトウエアであり、情報処理装置の起動時に自動的にＣＰＵ２によって実行されるソフトウエアである。例えば、起動時に自動的に実行されるソフトウエアは、情報処理装置の電源投入後、クロック信号が安定するまで入力されるリセット信号が解除された後に最初に実行されるプログラムである。
【００８６】
ブートＲＯＭは、指定されたペリフェラル（例えば、ＮＡＮＤ９）からファームウエアのヘッダと署名とを読み込み、当該ファームウエアの認証を行う。そして、ブートＲＯＭは、上記ファームウエアが認証された場合、認証済みのファームウエアのヘッダに記述されている鍵番号Ｘを読み取る。例えば、ブートＲＯＭは、ＮＡＮＤ９に格納されている最新バージョンの認証済ファームウエアから鍵番号Ｘを取得する。ここで、上記ファームウエアは、最初に集積回路１（ＳｏＣ）の外部から読み込まれるプログラムの一例である。また、上記ファームウエアは、上記ブートプログラムの実行に続けて実行されるプログラムであってもよい。鍵番号Ｘは、ファームウエアを復号するための暗号鍵の種類を示す値であり、当該ファームウエアのバージョンを示す値としても対応させることが可能である。また、鍵番号Ｘは、鍵データ記憶部６に予め保持されている鍵データに対応している。
【００８７】
なお、後述するように、鍵データ記憶部６に予め保持されている鍵データは、ファームウエアを復号するためだけでなく、その後に実行されるプログラム（例えば、ユーザアプリケーションプログラム）や処理に用いられる入力データの復号や暗号化等に用いられてもよい。例えば、上記プログラムを復号処理するための入力データが暗号処理部３に入力された場合、暗号処理部３は、鍵番号Ｘに対応する鍵データを鍵データ記憶部６から取得し、当該鍵データを用いて入力データを復号処理して復号されたデータを出力する。
【００８８】
次に、ブートＲＯＭは、バージョン情報記憶部７から鍵番号Ｙを読み取る。上述したように、バージョン情報記憶部７は、１に書き換えられたビット数によって鍵番号Ｙを管理しており、ＣＰＵ２が１に書き換えられたビット数を検出することによって、鍵番号Ｙを求めることができる。
【００８９】
次に、ブートＲＯＭは、鍵番号Ｘと鍵番号Ｙとを比較して、上記認証済ファームウエアが最新バージョンであるか否かを判定する。例えば、ブートＲＯＭは、Ｘ＜Ｙの場合、上記認証済ファームウエアが最新バージョンでないと判定する。そして、上記認証済ファームウエアが最新バージョンでない場合、ブートＲＯＭは、当該ファームウエアの復号処理や当該ファームウエアを用いた処理への移行を禁止する。一方、ブートＲＯＭは、Ｘ≧Ｙの場合、上記認証済ファームウエアが最新バージョンであると判定する。そして、上記認証済ファームウエアが最新バージョンである場合、ブートＲＯＭは、ＮＡＮＤ９から当該ファームウエアを読み込んで当該ファームウエアを鍵番号Ｘに対応する鍵データで復号する指示を暗号処理部３に対して行う。
【００９０】
情報処理装置が電源投入された直後の状態では、使用制限レジスタ６２が全て０に初期設定されているため、鍵データ保持部６１が保持している全ての鍵データが使用可能状態になっている。暗号処理部３は、ブートＲＯＭによる復号指示に応じて、鍵データ保持部６１に保持されている鍵番号Ｘに対応する鍵データを用いて、上記認証済ファームウエアの復号処理を行う。
【００９１】
次に、ブートＲＯＭは、鍵番号Ｘと鍵番号Ｙとを比較してＸ＞Ｙの場合、すなわち現在までに情報処理装置で起動した最新のファームウエアより新しいバージョンが認証された場合（例えば、ファームウエアがアップデートされたりバージョンアップされたりした場合）、鍵番号Ｘをバージョン情報記憶部７が管理する鍵番号として更新する。これによって、バージョン情報記憶部７は、ＯＴＰメモリによって鍵番号Ｘを最新のバージョン情報として管理することになる。
【００９２】
次に、ブートＲＯＭは、鍵データ記憶部６で保持されている鍵番号Ｘ＋１以降のバージョンに対応する鍵データを無効（使用不可）に設定する。具体的には、ブートＲＯＭは、鍵番号Ｘ＋１以降の鍵データ、すなわち現時点で認証済みの最新のファームウエアに対応する鍵データより新しいバージョンで用いられる鍵データに対応する使用制限レジスタ６２に全て１を書き込むことによって、当該鍵データを全て無効化する。なお、上述したように、ブートＲＯＭによって設定された使用制限レジスタ６２の情報は、ハードウエアリセットをしない限り変更できない仕様になっている。
【００９３】
そして、ブートＲＯＭは、暗号処理部３において復号された認証済ファームウエアによる処理へ移行する。以降、ＣＰＵ２は、当該ファームウエアによる処理を行うことになる。
【００９４】
次に、図４を参照して、情報処理装置で行われる動作概要の第２の例について説明する。なお、図４は、情報処理装置で行われる動作概要の第２の例を時間軸に沿って表現した図である。
【００９５】
図４において、情報処理装置の電源が投入されると、上記第１の例と同様に、ブートＲＯＭによる処理が開始される。ブートＲＯＭは、例えばＮＡＮＤ９に格納されている最新バージョンのファームウエアの認証を行い、認証済ファームウエアのヘッダに記述されている鍵番号Ｘを読み取る。そして、ブートＲＯＭは、バージョン情報記憶部７から鍵番号Ｙを読み取る。
【００９６】
次に、ブートＲＯＭは、鍵番号Ｘと鍵番号Ｙとを比較して、上記認証済ファームウエアが最新バージョンであるか否かを判定する。そして、上記認証済ファームウエアが最新バージョンでない場合（Ｘ＜Ｙの場合）、ブートＲＯＭは、当該ファームウエアの復号処理や当該ファームウエアを用いた処理への移行を禁止する。一方、上記認証済ファームウエアが最新バージョンである場合（Ｘ≧Ｙの場合）、ブートＲＯＭは、ＮＡＮＤ９から当該ファームウエアを読み込んで当該ファームウエアを鍵番号Ｘに対応する鍵データで復号する指示を暗号処理部３に対して行う。
【００９７】
次に、ブートＲＯＭは、鍵データ記憶部６で保持されている鍵番号Ｙ＋１以降のバージョンに対応する鍵データを無効（使用不可）に設定する。上述した第１の例と比較すると明らかなように、ブートＲＯＭは、第２の例において、バージョン情報記憶部７が管理する鍵番号を更新することなく鍵データの無効化処理を行っている。また、ブートＲＯＭは、ファームウエアのヘッダに記述された鍵番号情報を用いるのではなく、バージョン情報記憶部７が管理しているバージョン情報、すなわち情報処理装置で起動した最新のファームウエアのバージョン情報（バージョン番号Ｙ、鍵番号Ｙ）に基づいて、鍵データを無効化する範囲を決定している。
【００９８】
そして、ブートＲＯＭは、暗号処理部３において復号された認証済ファームウエアによる処理へ移行し、ＣＰＵ２が当該ファームウエアによる処理（以下、ファームウエアによる処理と記載する）を開始する。
【００９９】
ファームウエアは、当該ファームウエアのヘッダに記述されている鍵番号Ｘとバージョン情報記憶部７が管理している鍵番号Ｙとを比較して、Ｘ＞Ｙの場合、すなわち現在までに情報処理装置で起動した最新のファームウエアより新しいバージョンのファームウエアが起動されている場合、鍵番号Ｘをバージョン情報記憶部７が管理する鍵番号として更新する。ここで、Ｘ＞Ｙとなる場合は、ファームウエアがアップデートされたりバージョンアップされたりすることによって、今回初めて最新バージョンのファームウエアが起動されている場合（例えば、Ｘ＝Ｙ＋１の場合）である。しかしながら、鍵データ記憶部６で保持されている鍵番号Ｙ＋１以降のバージョンに対応する鍵データを無効化されているため、当該最新バージョンＸ（すなわち、鍵番号Ｘであり、鍵番号Ｙ＋１）に対応する鍵データが使用不可に設定されている。したがって、ＣＰＵ２は、一旦ハードウエアリセットを行う。
【０１００】
ハードウエアリセットが行われた場合、上述した電源投入時からの処理を再度行う。この場合、鍵番号Ｘに対応する最新バージョンのファームウエアが再度起動されるが、バージョン情報記憶部７が管理している鍵番号も鍵番号Ｘに更新されているため、鍵データ記憶部６で保持されている鍵番号Ｘ＋１以降のバージョンに対応する鍵データが無効化される。したがって、ファームウエア再起動後においては、当該ファームウエアの最新バージョンＸ（すなわち、鍵番号Ｘ）に対応する鍵データも使用可に設定されることになる。
【０１０１】
このように、上述した第１の例および第２の例による情報処理装置の動作によれば、鍵データ記憶部６に保持されている鍵データが、ファームウエアの識別情報（バージョン情報）に応じた範囲で利用可能となるため、当該識別情報に応じて鍵データの秘匿性を確保することができる。例えば、鍵データ記憶部６に保持されている鍵データは、起動するファームウエアのバージョンより新しいバージョンに対応する鍵データが利用不可となるため、まだ起動可能となっていないファームウエアのバージョンで用いられる鍵データの秘匿性を確保することができる。また、ファームウエアのアップデートやバージョンアップが完了するまで利用できない鍵データが、当該アップデートやバージョンアップによって利用可能に設定されるため、当該アップデートやバージョンアップ前に失われていた秘匿性の回復が可能となる。さらに、ファームウエアのアップデートやバージョンアップが完了後は、当該アップデートやバージョンアップ前のバージョンのファームウエアの起動ができなくなり、秘匿性が失われたファームウエアによる処理を防止することができる。
【０１０２】
なお、上述した実施例では、これから起動するファームウエアまたは現時点までに起動したファームウエアのバージョン情報に応じた範囲を用いて、鍵データの使用可否を設定したが、当該範囲は様々な態様で設定可能である。第１の例として、上記バージョン情報より新しいバージョンに対応する鍵データ全てを使用不可に設定し、上記バージョン情報に対応するバージョンおよび当該バージョンより古いバージョンに対応する鍵データ全てを使用可能に設定する。第２の例として、上記バージョン情報より新しいバージョンに対応する鍵データ全てと所定の鍵番号に対応する鍵データ（例えば、開発用や製造用として鍵データ記憶部６に保持されている鍵データ）を使用不可に設定し、当該所定の鍵番号に対応する鍵データを除いて上記バージョン情報に対応するバージョンおよび当該バージョンより古いバージョンに対応する鍵データを使用可能に設定する。第３の例として、上記バージョン情報に対応するバージョンに対応する鍵データのみ使用可能に設定し、他の鍵データ全てを使用不可に設定する。第４の例として、上記バージョン情報より新しいバージョンに対応する鍵データ全てを使用不可および上記バージョン情報に対応するバージョンより古いバージョンに対応する鍵データ全てを使用不可に設定し、上記バージョン情報に対応するバージョンに対応する鍵データを使用可能に設定する。なお、上記バージョン情報に対応するバージョンより古いバージョンに対応する鍵データの少なくとも１つを使用不可に設定する場合、使用不可に設定する鍵データに対応する使用制限レジスタ６２を使用不可に設定してもいいし、鍵データ記憶部６で保持されている鍵データのうち、使用不可に設定する鍵データ自体をダミーデータに上書きしてもよい。後者の場合、上記バージョン情報が更新される毎に、対応する鍵データをダミーデータに上書きしていくことが考えられる。
【０１０３】
上述した実施例では、これから起動するファームウエアまたは現時点までに起動したファームウエアのバージョン情報を用いて、鍵データを使用可能にする範囲、鍵データを使用不可する範囲を設定したが、ファームウエアの他の識別情報を用いて当該範囲を設定してもかまわない。例えば、鍵データ毎に有効日時を予め設定しておき、ファームウエアに設定されている日時情報を用いて上記範囲を設定してもよい。
【０１０４】
また、上述した実施例では、リセット解除時に使用制限レジスタ６２を０に初期設定することによって、当該初期設定状態において鍵データ保持部６１が保持している鍵データ全てを使用可に設定した後、ブートＲＯＭによってファームウエアの識別情報に応じた範囲の鍵データを使用不可に設定している。しかしながら、上記初期設定状態において、鍵データ保持部６１が保持している鍵データ全てを使用不可に設定してもよい。この場合、リセット解除時に鍵データ保持部６１が保持している鍵データ全てを使用不可に設定した後、ブートＲＯＭによってファームウエアの識別情報に応じた範囲の鍵データを使用可に設定する。例えば、上記設定完了レジスタを有する使用制限レジスタ６２を用いる場合、後者の設定態様であっても同様の処理が可能となる。
【０１０５】
なお、暗号処理部３は、集積回路１（ＳｏＣ）の外部から最初に読み込まれるファームウエア（第１ファームウエアとする）以外のプログラム（例えば、当該ファームウエアの後に復号されて利用される別のファームウエア；第２ファームウエアとする）の復号を行ってもよい。この場合、第２ファームウエアは、第１ファームウエアを復号するための鍵データ（基準鍵データ）を利用して復号可能に構成することもできる。一例として、第１ファームウエア内にも別の鍵データ（第１鍵データ）を保持しておき、上記基準鍵データと当該第１鍵データとを用いて、第１拡張鍵データを生成する。そして、第２ファームウエアは、基準鍵データと第１鍵データとから生成される第１拡張鍵データを用いて、暗号処理部３で復号される。このように、上記基準鍵データを種として生成される鍵データを用いて他のプログラムも復号可能に構成することによって、上記基準鍵データの秘匿性向上対策の効果を、第１ファームウエアに対してだけでなく他のプログラムに対しても得ることができる。また、上記基準鍵データだけで全てのプログラムを復号可能に構成する場合、当該基準鍵データを解読されるだけで当該全てのプログラムの復号が可能となるが、上述したように別の鍵データも用いることによって、連鎖的に秘匿性が失われることを防止することもできる。なお、起動するファームウエアのバージョンより古いバージョンに対応する鍵データを使用可能に設定する場合、当該古いバージョンのファームウエアの起動はできなくても、当該古いバージョンに対応する他のプログラム（例えば、旧バージョンのゲームプログラム）の復号および当該プログラムを用いた処理は可能とすることができる。なお、上述した鍵データの利用は、プログラムだけでなく、当該プログラムで用いられる各種データの復号に用いられてもよい。
【０１０６】
また、バージョン情報記憶部７がＯＴＰメモリで構成される場合、データ書き込みに対する信頼性が低いことがあり得る。このような場合、バージョン情報記憶部７は、複数ビットを組として鍵番号を示してもかまわない。例えば、２つのビットを組として鍵番号を示す場合、バージョン情報記憶部７は、２つのビットともに０の場合に０であると定義され、少なくとも一方のビットが１の場合に１であると定義される。そして、上記ビットの組に１を設定する場合、ＣＰＵ２は、当該ビットの組を構成する２つのビットに対してそれぞれ１を書き込む。このように複数ビットの組が定義されることによって、バージョン情報記憶部７に１を書き込む際にいずれかのビットで書き損じが生じたとしても、他のビットに１が書き込まれれば当該書き損じによる誤動作を防止することができる。
【０１０７】
また、上述した集積回路１単体を汎用的に用いられる製品形態で製造することが考えられる。この場合、製造された集積回路１を利用する利用者によって、鍵データが書き込まれることが考えられるため、鍵データ保持部６１に鍵データを書き込んでいない状態で出荷されてもよい。このような製品形態であっても、利用者側で複数の鍵データを鍵データ保持部６１に書き込むことによって、上述した情報処理を実現することが可能となる。
【０１０８】
また、上述した説明では、暗号処理部３において、鍵データ記憶部６で管理されている鍵データを用いて、プログラム（例えば、ファームウエア）を復号する例を用いたが、当該鍵データを用いてプログラムを暗号化してもよい。プログラムを暗号化する場合であっても、上述した鍵データの管理やプログラムの識別情報（バージョン情報）による管理を行うことによって、同様の効果を得ることができる。
【０１０９】
（第２の実施形態）
図５を参照して、本発明の第２の実施形態に係る情報処理装置について説明する。なお、図５は、ゲームカード用集積回路１１を含む情報処理装置の一例を示すブロック図である。
【０１１０】
例えば、上記情報処理装置は、ゲームカード用集積回路１１を含んでいる。ここで、上記情報処理装置は、交換可能なメモリカードや光ディスク等の記録媒体内に記憶された、または、サーバや他の装置から受信されたプログラムを実行可能である。なお、上記情報処理装置は、１以上の装置によって構成されてもよく、ゲームカード用集積回路１１は、複数の装置に分散して設けられてもよい。
【０１１１】
上記情報処理装置は、ゲームカード用集積回路１１の他に、ＳｏＣ等によって構成される集積回路２０およびＮＡＮＤ２１等が設けられている。また、情報処理装置は、交換可能なゲームカード１０を装着することが可能となっている。また、ゲームカード用集積回路１１は、例えばＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：特定用途向け集積回路）によって、１つの半導体チップ上にＣＰＵ１２、復号処理部１３、ＲＯＭ１４、ＳＲＡＭ１５、鍵データ記憶部１６、バージョン情報記憶部１７、ＳｏＣ  Ｉ/Ｆ１８、およびカードＩ／Ｆ１９等が構成される。そして、ＣＰＵ１２は、復号処理部１３、ＲＯＭ１４、ＳＲＡＭ１５、バージョン情報記憶部１７、ＮＡＮＤ２１、およびゲームカード１０との間で、データ、コマンド、アドレス等を送受信する。なお、本実施例においては、ＣＰＵ１２は、ＳｏＣ  Ｉ/Ｆ１８および集積回路２０を介して、ＮＡＮＤ２１との間の送受信を行い、カードＩ／Ｆ１９を介して、ゲームカード１０との間の送受信を行う。例えば、ゲームカード用集積回路１１は、ゲームカード１０に格納されているカードデータを復号して集積回路２０へ出力したり、集積回路２０（のＣＰＵ）からの指示に応じたデータを暗号化してゲームカード１０に書き込んだりする機能を有し、情報処理装置とゲームカード１０との間のデータ送受信を管理する特定用途に利用される。なお、ゲームカード用集積回路１１は、特定用途向け集積回路の一例であって、他の用途に用いられるＡＳＩＣであってもよい。
【０１１２】
ＣＰＵ１２は、各種の情報処理を実行するための情報処理手段（コンピュータ）の一例である。ＣＰＵ１２は、各種の情報処理の１つとして、ＲＯＭ１４内に設定されているデータ（ブートプログラム）を用いて、鍵データ記憶部１６やバージョン情報記憶部１７に対する初期設定を行う処理等を実行する機能を有する。また、ＣＰＵ１２は、各種の情報処理の１つとして、ＮＡＮＤ２１内に設定されているデータ（ファームウエア）を用いて、バージョン情報記憶部１７に対する初期設定を行う処理等を実行する機能を有する。例えば、ＣＰＵ１２が所定のプログラム（ブートプログラム、ファームウエア等）を実行することによって、上記機能が実現される。ＲＯＭ１４およびＳＲＡＭ１５、ＮＡＮＤ２１は、それぞれＣＰＵ１２がアクセス可能なメモリであり、それぞれＣＰＵ１２が上記処理を実行する際に用いる各種のデータを記憶する。なお、ＣＰＵ１２が実行するプログラムは、ＣＰＵ１２がアクセス可能な記憶装置（記憶媒体）であればどのようなものに格納されていてもよく、一例としてＲＯＭ１４やＮＡＮＤ２１に格納される。上記プログラムは、ＣＰＵ１２を含む情報処理装置内に設けられる他の記憶装置に格納されてもよいし、ＣＰＵ１２を含む情報処理装置に着脱自在に装着される記憶媒体に格納されてもよい。また、上記プログラムは、ＣＰＵ１２とネットワークを介して接続される記憶装置（サーバ等）に格納されてもよい。ＣＰＵ１２は、上記プログラムの一部または全部を適宜のタイミングでＳＲＡＭ１５に読み出し、読み出されたプログラムを実行するようにしてもよい。
【０１１３】
鍵データ記憶部１６は、復号処理部１３が用いる単一の鍵データを保持している。鍵データ記憶部１６は、復号処理部１３の暗号回路内に設けられてもよいし、復号処理部１３の暗号回路外に設けられてもよい。何れの場合であっても、鍵データ記憶部１６は、ＣＰＵ１２から隠蔽された状態で構成される。
【０１１４】
バージョン情報記憶部１７は、不揮発性メモリで構成され、情報処理装置で起動した最新のファームウエアのバージョン情報（例えば、バージョン番号Ｎに対応する）を管理する。一例として、バージョン情報記憶部１７は、ＯＴＰメモリで構成され、ｅＦｕｓｅやａｎｔｉ−Ｆｕｓｅ等、各ビットが０＞１に書き込み可能に構成される。例えば、バージョン情報記憶部１７は、４ビットの不揮発性メモリで構成される場合、０ｂ００００＞０ｂ０００１＞０ｂ００１１＞０ｂ０１１１＞０ｂ１１１１の順に一方端から順に０＞１に書き換えていく。これによって、バージョン情報記憶部１７は、ファームウエアのバージョンアップによって使用可能となっているバージョン番号を示すことができ、１に書き換えられたビット数によって当該バージョン番号Ｎが示される。例えば、上述した書き換えによって、バージョン情報記憶部１７は、バージョン番号０＞バージョン番号１＞バージョン番号２＞バージョン番号３＞バージョン番号４を示すことができ、４ビット数で５つのバージョン番号を示すことができる。また、バージョン情報記憶部１７は、各ビットが０＞１に書き込み可能に構成されることによって、バージョン情報のバージョンを古いものに戻すことができない。
【０１１５】
復号処理部１３は、例えば暗号化されたファームウエアを復号する復号処理装置として機能する。例えば、復号処理部１３は、鍵データ記憶部１６に保持された単一の鍵データと復号する最新のファームウエアのバージョン情報（例えば、バージョン番号Ｎ）とを用いて新たな復号鍵データを生成し、生成した復号鍵データを用いて当該ファームウエアを復号する。例えば、復号処理部１３は、ＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ：セキュアハッシュアルゴリズム）回路を含み、鍵データ記憶部１６に保持された単一の鍵データとバージョン番号とをＳＨＡ回路に入力することによって、新たな復号鍵データを生成する。なお、上記復号鍵データを生成する際、ＡＥＳ回路を用いてもよい。なお、復号処理部１３は、ＳＨＡ方式やＡＥＳ暗号方式に限らず、他の方式に基づいて復号する復号処理装置であってもよい。
【０１１６】
次に、図６を参照して、鍵データ記憶部１６の一例について説明する。なお、図６は、鍵データ記憶部１６の一例を示すブロック図である。
【０１１７】
図６において、鍵データ記憶部１６は、鍵データ保持部１６１および使用可否レジスタ１６２を備えている。鍵データ保持部１６１は、物理解析困難なＲＯＭマクロを用いる等、耐タンパ性の高い方式を用いて単一の鍵データ（共通鍵データ）を保持する。一例として、鍵データ保持部１６１は、ゲームカード用集積回路１１の製造時に鍵データが保持されてもよいし、当該製造後に鍵データが書き込まれる場合、ｅＦｕｓｅ等で構成されてもよい。なお、後述により明らかとなるが、鍵データ保持部１６１に保持される鍵データは、ファームウエアの復号に用いられる復号鍵データを生成するための種となる暗号種データとして機能する。
【０１１８】
使用可否レジスタ１６２は、鍵データ保持部１６１が保持している鍵データに対して使用可／使用不可を設定して保持する。一例として、使用可否レジスタ１６２は、上記鍵データに対して設けられたＳｔｉｃｋｙ  ｂｉｔで構成される。使用可否レジスタ１６２におけるＳｔｉｃｋｙ  ｂｉｔは、情報処理装置の電源投入時やリセット解除時に０に初期設定され、他の装置からのコマンドに応じて１を書き込むことはできるが、次の電源投入時やハードウエアリセットまで０に戻せないレジスタである。この場合、使用可否レジスタ１６２のビットが０に設定されることよって鍵データ保持部１６１が保持している鍵データが使用可能であることを示し、当該ビットが１に設定されることよって当該鍵データが使用不可であることを示す。これによって、鍵データ保持部１６１が保持している鍵データの設定が使用可から使用不可への変更が可能となり、電源ＯＦＦして電源投入したりハードウエアリセットしたりしない限り使用不可から使用可への変更ができない。
【０１１９】
他の例として、使用可否レジスタ１６２は、使用可／使用不可を設定して保持する上記鍵データに対応するレジスタと、当該レジスタへの書き込み可否を制限する設定完了レジスタとで構成される。例えば、設定未完了を意味するデータ（例えば、数値０を示すデータ）が設定完了レジスタに書き込まれている場合、上記鍵データの設定を保持するレジスタへの書き込みは可能となるが、設定完了を意味するデータ（例えば、数値１を示すデータ）の書き込みが設定完了レジスタに行われると、それ以降、上記鍵データの設定を保持するレジスタ全てへの書き込みができなくなる。そして、設定完了レジスタは、設定完了を意味するデータが書き込まれると、次の電源投入時やハードウエアリセットまで当該設定完了の解除ができない構成になっている。
【０１２０】
次に、図７を参照して、情報処理装置で行われる動作概要の第３の例について説明する。なお、図７は、情報処理装置で行われる動作概要の第３の例を時間軸に沿って表現した図である。
【０１２１】
図７において、ユーザが電源スイッチを手動でオンにする操作等を行うことにより情報処理装置の電源が投入されると、ＲＯＭ１４に格納されたブートプログラム（ブートＲＯＭ）によるＣＰＵ１２の処理（以下、ブートＲＯＭによる処理と記載する）が開始される。ここで、ブートプログラムは、他のソフトウエアからアクセスできないソフトウエアであり、情報処理装置の起動時に自動的にＣＰＵ１２によって実行されるソフトウエアである。例えば、起動時に自動的に実行されるソフトウエアは、情報処理装置の電源投入後、クロック信号が安定するまで入力されるリセット信号が解除された後に最初に実行されるプログラムである。
【０１２２】
ブートＲＯＭは、指定されたペリフェラル（例えば、ＮＡＮＤ２１）からファームウエアのヘッダと署名とともに当該ファームウエアを読み込み、当該ファームウエアの認証を行う。そして、ブートＲＯＭは、上記ファームウエアが認証された場合、認証済みのファームウエアのヘッダに記述されているバージョン番号Ｍを読み取る。例えば、ブートＲＯＭは、集積回路２０およびＳｏＣ  Ｉ／Ｆ１８を介して、ＮＡＮＤ２１に格納されている最新バージョンの認証済ファームウエアからバージョン番号Ｍを取得する。ここで、上記ファームウエアは、最初にゲームカード用集積回路１１（ＡＳＩＣ）の外部から読み込まれるプログラムの一例である。また、上記ファームウエアは、上記ブートプログラムの実行に続けて実行されるプログラムであってもよい。この場合、上記バージョン番号Ｍは、当該プログラムのバージョンを示す値であってもよい。
【０１２３】
次に、ブートＲＯＭは、バージョン情報記憶部１７からバージョン番号Ｎを読み取る。上述したように、バージョン情報記憶部１７は、１に書き換えられたビット数によってバージョン番号Ｎを管理しており、ＣＰＵ１２が１に書き換えられたビット数を検出することによって、バージョン番号Ｎを求めることができる。
【０１２４】
次に、ブートＲＯＭは、バージョン番号Ｍとバージョン番号Ｎとを比較して、上記認証済ファームウエアが最新バージョンであるか否かを判定する。例えば、ブートＲＯＭは、Ｍ＜Ｎの場合、上記認証済ファームウエアが最新バージョンでないと判定する。そして、上記認証済ファームウエアが最新バージョンでない場合、ブートＲＯＭは、当該ファームウエアの復号処理や当該ファームウエアを用いた処理への移行を禁止する。一方、ブートＲＯＭは、Ｍ≧Ｎの場合、上記認証済ファームウエアが最新バージョンであると判定する。
【０１２５】
次に、ブートＲＯＭは、バージョン番号Ｍとバージョン番号Ｎとを比較してＭ＞Ｎの場合、すなわち現在までに情報処理装置で起動した最新のファームウエアより新しいバージョンが認証された場合（例えば、ファームウエアがアップデートされたりバージョンアップされたりした場合）、バージョン番号Ｍをバージョン情報記憶部１７が管理するバージョン番号として更新する。そして、バージョン番号が更新された後、バージョン情報記憶部１７に設けられているレジスタの設定等によって、以降の処理においてバージョン情報記憶部１７への書き込みを不可に設定してもよい。これによって、バージョン情報記憶部１７は、ＯＴＰメモリによってバージョン番号Ｍを最新のバージョン情報として管理することになる。
【０１２６】
なお、バージョン番号Ｍとバージョン番号Ｎとを比較する処理においてＭ≦Ｎの場合、バージョン情報記憶部１７に設けられているレジスタの設定等によって、以降の処理においてバージョン情報記憶部１７への書き込みを不可に設定してもよい。これによって、バージョン情報記憶部１７に格納されている情報が他の装置によって書き換えられることを防止することができる。後述により明らかとなるが、バージョン番号Ｍとバージョン番号Ｎとを比較する処理においてＭ＞Ｎの場合は、後の処理においてバージョン情報記憶部１７への書き込みが不可に設定される。
【０１２７】
次に、上記認証済ファームウエアが最新バージョンである場合、ブートＲＯＭは、バージョン番号Ｍを用いて復号鍵データを生成する指示を復号処理部１３に対して行う。情報処理装置が電源投入された直後の状態では、使用可否レジスタ１６２が０に初期設定されているため、鍵データ保持部１６１が保持している鍵データが使用可能状態になっている。復号処理部１３は、ブートＲＯＭによる復号鍵生成指示に応じて、鍵データ保持部１６１に保持されている鍵データとバージョン番号ＭとをＳＨＡ回路に入力することによって復号鍵データを生成し、復号処理部１３内（例えば、ＳＨＡ回路内）の記憶領域に書き込む。
【０１２８】
次に、ブートＲＯＭは、生成された復号鍵データを用いて、上記認証済ファームウエアの復号する指示を復号処理部１３に対して行う。そして、復号処理部１３は、ブートＲＯＭによる復号指示に応じて、復号処理部１３内に書き込まれている復号鍵データを用いて、上記認証済ファームウエアの復号処理を行う。
【０１２９】
次に、ブートＲＯＭは、復号鍵データを生成する鍵生成機能を無効化する指示を復号処理部１３に対して行う。そして、復号処理部１３は、ブートＲＯＭによる鍵生成機能無効化指示に応じて、使用可否レジスタ１６２に１を書き込むことによって、当該鍵データを用いた鍵生成機能を無効化する。なお、上述したように、ブートＲＯＭによって設定された使用可否レジスタ１６２の情報は、電源再投入やハードウエアリセットをしない限り変更できない仕様になっている。また、復号処理部１３は、復号処理部１３内の記憶領域に書き込まれた復号鍵データに他のデータを上書きすることによって、当該復号鍵データを消去する。なお、ブートＲＯＭは、復号処理部１３に設けられているレジスタの設定等によって、以降の処理において復号処理部１３へのアクセスを不可に設定することによって、復号鍵データを生成する鍵生成機能を無効化してもよい。何れの無効化処理においても、復号処理部１３において復号鍵を生成する回路（例えば、ＳＨＡ回路）がハードウエア的にリセットされない限り１回のみ使用できることになり、復号鍵生成処理の秘匿性を確保することが可能となる。なお、復号処理部１３において復号鍵を生成する回路が１回のみ使用できる他の方法によって、復号鍵データを生成する鍵生成機能を無効化してもよい。
【０１３０】
そして、ブートＲＯＭは、復号処理部１３において復号された認証済ファームウエアによる処理へ移行する。以降、ＣＰＵ１２は、当該ファームウエアによる処理を行うことになる。
【０１３１】
このように、上述した第３の例による情報処理装置の動作によれば、鍵データ記憶部１６に保持されている鍵データが１つであっても、上述した第１の例および第２の例と同様にファームウエア等の外部から読み込まれるプログラムに対する秘匿性を向上することが可能となる。また、上述した第３の例による情報処理装置は、ファームウエアがバージョンアップされた場合であっても当該ファームウエアを復号するための鍵データを１つ管理するだけとなるため、鍵データを保管するためのハードウエアコストを削減することが可能となる。また、ファームウエアを復号するための鍵を生成する機能が当該ファームウエアを復号した後に当該ファームウエアを起動する前に無効化され、生成された復号鍵も消去されるため、鍵データの秘匿性も確保することができる。また、ファームウエアのアップデートやバージョンアップが完了するまで生成されない復号鍵データが、当該アップデートやバージョンアップによって新たに生成されるため、当該アップデートやバージョンアップ前に失われていた秘匿性の回復が可能となる。さらに、ファームウエアのアップデートやバージョンアップが完了後は、当該アップデートやバージョンアップ前のバージョンのファームウエアの起動ができなくなり、秘匿性が失われたファームウエアによる処理を防止することができる。
【０１３２】
なお、上述した第３の例では、鍵データ記憶部１６に単一の鍵データを保持して複数バージョンのファームウエアに対応する例を用いたが、鍵データ記憶部１６に複数の鍵データを保持してもよい。例えば、複数の鍵データ毎に有効日時や用途を予め設定しておき、当該鍵データを用いる日時や用途に応じて使用する鍵データを切り替えることが考えられる。
【０１３３】
また、上述した第３の例では、ファームウエアを復号した後であってファームウエアを起動する前となる期間において、当該ファームウエアの復号に用いた復号鍵データを生成するための鍵生成機能を無効化したが、他のタイミングで当該鍵生成機能を無効化してもよい。例えば、ファームウエアを起動した後に、当該ファームウエアの復号に用いた復号鍵データを生成するための鍵生成機能を無効化してもよい。また、ファームウエアを復号するための復号鍵を生成した後であって当該ファームウエアを復号する前となる期間において、当該ファームウエアの復号に用いた復号鍵データを生成するための鍵生成機能を無効化してもよい。後者では、使用可否レジスタ１６２の設定によって鍵データ保持部１６１が保持している鍵データを使用不可にして鍵生成機能を無効化する場合、当該無効化後も生成された復号鍵データの利用は可能となるため、当該無効化方式を用いることによって当該ファームウエアを復号する前に鍵生成機能の無効化を行うことが可能となる。
【０１３４】
なお、上述した実施例では、電源投入時やリセット解除時に使用可否レジスタ１６２を０に初期設定することによって、当該初期設定状態において鍵データ保持部１６１が保持している鍵データを使用可に設定した後、ブートＲＯＭによってファームウエアを復号した後で鍵データを使用不可する例を記載している。しかしながら、上記初期設定状態において、鍵データ保持部１６１が保持している鍵データを使用不可に設定してもよい。この場合、電源投入時やリセット解除時に鍵データ保持部１６１が保持している鍵データを使用不可に設定した後、ブートＲＯＭによって鍵データ保持部１６１が保持している鍵データを使用可に設定する。例えば、上記設定完了レジスタを有する使用可否レジスタ１６２を用いる場合、後者の設定態様であってもファームウエアを復号した後で鍵データを使用不可にする処理が可能となる。
【０１３５】
また、バージョン情報記憶部１７がＯＴＰメモリで構成される場合、データ書き込みに対する信頼性が低いことがあり得る。このような場合、バージョン情報記憶部１７は、上述したバージョン情報記憶部７と同様に複数ビットを組としてバージョン番号を示してもかまわない。
【０１３６】
また、上述したゲームカード用集積回路１１単体を汎用的に用いられる製品形態で製造することが考えられる。この場合、製造されたゲームカード用集積回路１１を利用する利用者によって、鍵データが書き込まれることが考えられるため、鍵データ保持部１６１に鍵データを書き込んでいない状態で出荷されてもよい。このような製品形態であっても、利用者側で複数の鍵データを鍵データ保持部１６１に書き込むことによって、上述した情報処理を実現することが可能となる。
【０１３７】
また、上述した説明では、復号処理部１３において、鍵データ記憶部１６で管理されている鍵データを用いて、プログラム（例えば、ファームウエア）を復号する例を用いたが、当該鍵データを用いてプログラムを暗号化してもよい。プログラムを暗号化する場合であっても、上述した鍵データの管理やプログラムの識別情報（バージョン情報）による管理を行うことによって、同様の効果を得ることができる。
【０１３８】
また、上述した集積回路１を用いた処理と上述したゲームカード用集積回路１１とを同じ情報処理装置内で同時または異なるタイミングでそれぞれ行ってもよい。例えば、図５に示した集積回路２０において、第１の実施形態で説明した情報処理や暗号処理を行うことによって、ゲームカード用集積回路１１と集積回路２０とにおいて、ＮＡＮＤ２１に格納されているファームウエアを用いた情報処理および暗号処理を並列して行うことが可能となる。
【０１３９】
また、上述した説明では、回路やレジスタ等のハードウエア（集積回路）によって情報処理や暗号処理を制御する手段を構成したが、いわゆるソフトウエアによって当該手段を構成してもよい。例えば、上記情報処理動作や暗号処理動作を実現するプログラムを実行する制御部（ＣＰＵ）を備える手段によって、上記情報処理や暗号処理を制御する手段を構成してもよい。この場合、上記プログラムは、外部メモリ等の外部記憶媒体を通じて情報処理装置に供給されるだけでなく、有線または無線の通信回線を通じて情報処理装置に供給されてもよい。また、上記プログラムは、情報処理装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０１４０】
また、上述では、１つの集積回路１や１つのゲームカード用集積回路１１で情報処理や暗号処理を行う場合の動作を説明しているが、当該処理における動作の少なくとも一部を他の装置で行ってもかまわない。例えば、情報処理装置が他の装置（例えば、別のサーバ、他のゲーム装置、他の携帯端末）と通信可能に構成されている場合、上記処理における各動作は、当該他の装置が協働することによって実行してもよい。このように、上記処理における動作の少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。
【０１４１】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置（据置型のゲーム装置）と携帯型の情報処理装置（携帯型のゲーム装置）との間で上記動作を協働により実行することも可能となる。なお、これらのシステム形態では、上述した動作をどの装置で行うかについては特に限定されず、どのような分担をしたとしても本発明を実現できることは言うまでもない。
【０１４２】
また、上述した情報処理装置は、携帯ゲーム装置や据置型ゲーム装置であってもよく、一般的なパーソナルコンピュータ、携帯電話機、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）等のデバイスであってもかまわない。
【０１４３】
また、本発明は、以下に示す構成の情報処理装置であってもよい。
【０１４４】
本発明の情報処理装置は、ブートプログラムによって起動するファームウエアを起動して動作する。情報処理装置は、不揮発性メモリ、ファームウエア取得手段、バージョン情報取得手段、起動バージョン記憶制御手段、比較手段、および起動手段を備える。不揮発性メモリは、ビット単位で１回だけ書き換え可能である。ファームウエア取得手段は、ファームウエアを取得する。バージョン情報取得手段は、取得したファームウエアのバージョン情報を取得する。起動バージョン記憶制御手段は、起動したファームウエアの最新のバージョンを示す情報を不揮発性メモリに記憶する。比較手段は、バージョン情報取得手段が取得したバージョンと不揮発性メモリに記憶されている最新のバージョンとを比較する。起動手段は、比較手段による比較結果に基づいて、取得したファームウエアを起動する。
【０１４５】
上記によれば、起動するファームウエアのバージョンを制御することができる。
【０１４６】
また、上記起動手段は、ファームウエア取得手段が取得したファームウエアのバージョンが不揮発性メモリに記憶されている最新のバージョンと同じまたは最新のバージョンより新しいことを比較手段による比較結果が示す場合にのみ、当該ファームウエアを起動してもよい。
【０１４７】
上記によれば、古いバージョンのファームウエアが起動することを防止することができる。
【０１４８】
また、上記起動バージョン記憶制御手段は、ブートプログラムを実行するコンピュータによって実現されてもよい。
【０１４９】
また、上記起動バージョン記憶制御手段は、ファームウエアを実行するコンピュータによって実現されてもよい。
【０１５０】
また、上記不揮発性メモリは、記憶されているバージョンより新しいことを示すバージョンを示す情報のみ書換可能に構成されてもよい。
【０１５１】
また、本発明のブートプログラムは、ファームウエアの起動前に情報処理装置のコンピュータによって実行される。ブートプログラムは、第１バージョン情報取得手段、第２バージョン情報取得手段、バージョン情報比較手段、バージョン情報記憶制御手段、およびファームウエア起動手段として、コンピュータを機能させる。第１バージョン情報取得手段は、今回起動する第１ファームウエアに設定されているバージョンを示す第１バージョン情報を取得する。第２バージョン情報取得手段は、前回までに起動した最新の第２ファームウエアに設定されているバージョンを示す第２バージョン情報を不揮発性メモリから取得する。バージョン情報比較手段は、第１バージョン情報と第２バージョン情報とを比較する。バージョン情報記憶制御手段は、第１バージョン情報が第２バージョン情報より新しいことを示す場合、第１バージョン情報を不揮発性メモリに記憶されている第２バージョン情報に上書きして記憶する。ファームウエア起動手段は、第１バージョン情報が第２バージョン情報以上のバージョンを示す場合、第１ファームウエアを起動する。
【０１５２】
また、上述した暗号復号処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【０１５３】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０１５４】
以上のように、本発明は、ファームウエア等の最初に読み込まれるプログラムに対する秘匿性を向上することが可能なブートプログラム、情報処理装置、情報処理システム、情報処理方法、半導体装置、およびプログラム等として有用である。
【符号の説明】
【０１５５】
１、２０…集積回路
２、１２…ＣＰＵ
３、１３…暗号処理部
４、１４…ＲＯＭ
５、１５…ＳＲＡＭ
６、１６…鍵データ記憶部
６１、１６１…鍵データ保持部
６２…使用制限レジスタ
６３…鍵選択レジスタ
７、１７…バージョン情報記憶部
８…ＮＡＮＤ  Ｉ/Ｆ
９、２１…ＮＡＮＤ
１１…ゲームカード用集積回路
１８…ＳｏＣ  Ｉ／Ｆ
１９…カードＩ／Ｆ
１６２…使用可否レジスタ
【図１】
2019212342.tif 000003
【図２】
2019212342.tif 000004
【図３】
2019212342.tif 000005
【図４】
2019212342.tif 000006
【図５】
2019212342.tif 000007
【図６】
2019212342.tif 000008
【図７】
2019212342.tif 000009