(57)【特許請求の範囲】
【請求項１】
認証未済のプログラムは作動できないことを保証してある期間を認証子受付期間として検出する認証子受付期間検出手段、
所定のプログラムを実行するものでありかつ前記認証子受付期間において認証子送出の要求を受けたときに限り認証子を送出するプログラム実行手段、及び
前記プログラム実行手段から受け付けた認証子に基づいて一方向性関数値を演算しかつ該一方向性関数値と前記プログラム実行手段についての予め保持している保持値との対比に基づいて前記プログラム実行手段について認証すべきか否かを決定する認証手段、
を有していることを特徴とする認証システム。
【請求項２】
前記プログラム実行手段の実行するプログラムのコードは、書換えられる可能性のあるもの及び／又は前記認証手段により読出し不能であるものであることを特徴とする請求項１記載の認証システム。
【請求項３】
前記認証子受付期間は、システム・リセット時から前記認証システムのオペレーティング・システムが活性化するまでの期間であるブート期間内に規定されていることを特徴とする請求項１記載の認証システム。
【請求項４】
前記ブート期間では、ＢＩＯＳブート・ブロックは認証済みのものとして扱われ、該ＢＩＯＳブート・ブロックを含む所定の複数個のプログラムについては各プログラムがそれより１個だけ先に認証されたプログラムから認証を受ける認証連鎖が設定され、前記認証手段は、前記認証連鎖に属するプログラムを実装して認証処理を実行するものであることを特徴とする請求項３記載の認証システム。
【請求項５】
前記プログラム実行手段はハードウェアを装備し、該ハードウェアは、前記プログラム実行手段からの前記プログラム実行手段の認証子の送出を許容及び禁止する機能を装備し、さらに、該ハードウェアは、システム・リセット信号の検出開始時点より前記プログラム実行手段からの前記プログラム実行手段の認証子の送出を許容するようになっていることを特徴とする請求項３記載の認証システム。
【請求項６】
前記ハードウェアは、外部からの所定のコマンド信号の入力に伴い前記プログラム実行手段からの認証子の送出を禁止又は認証子の送出に代わるエラー信号の送出を実行するようになっていることを特徴とする請求項５記載の認証システム。
【請求項７】
前記プログラム実行手段はファームウェア素子であることを特徴とする請求項１記載の認証システム。
【請求項８】
前記プログラム実行手段の認証子は、前記プログラム実行手段が実装するプログラムのバージョンごと、前記認証システムを装備する電気機器の機種ごと、及び／又は前記認証システムを装備する電気機器ごとに、相違していることを特徴とする請求項１記載の認証システム。
【請求項９】
ファームウェアを実装するファームウェア装置において、
認証子を送出する認証子送出部、
外部の認証未済のプログラムは作動できないことを保証してある期間としての認証子受付期間であるか否かを外部入力の所定の電気信号に基づいて検出する検出部、及び
前記認証子受付期間に限り前記認証子送出部から認証子の送出を許容する送出制御部、を有していることを特徴とするファームウェア装置。
【請求項１０】
前記送出制御部は、外部からの所定のコマンド信号の入力に伴い前記認証子送出部からの認証子の送出を禁止又は認証子の送出に代わるエラー信号の送出を実行するようになっていることを特徴とする請求項９記載のファームウェア装置。
【請求項１１】
前記送出制御部は、認証装置から認証された旨の通知を受けしだい、前記認証子送出部からの認証子の送出を禁止するものであることを特徴とする請求項９記載のファームウェア装置。
【請求項１２】
認証主体コンポーネントと、該認証主体コンポーネントにより認証されてから所定の協働用コンポーネントと協働する認証対象コンポーネントとを有している電気機器において、
前記認証対象コンポーネントは、少なくともその一部が前記認証対象コンポーネントの外部からのアクセスが不可能な制御コードを内蔵するものであり、
前記認証主体コンポーネントは、前記電気機器において認証未済のプログラムは作動できないことを保証してある期間に限り、前記認証対象コンポーネントへ認証子送出要求のコマンドを送出するようになっており、
前記認証対象コンポーネントは、前記認証主体コンポーネントからの認証子送出要求コマンドに応答して認証子を送出するようになっている
ことを特徴とする電気機器。
【請求項１３】
認証主体コンポーネントと、該認証主体コンポーネントにより認証されてから所定の協働用コンポーネントと協働する認証対象コンポーネントと、前記認証主体コンポーネント及び前記認証対象コンポーネントを含む複数個のコンポーネントを統括して制御する統括制御シーケンスを実装する統括制御コンポーネントとを有している電気機器において、
前記統括制御シーケンスは、前記電気機器の電源をオンするための信号に応答して活性化され、
前記認証主体コンポーネントによる前記認証対象コンポーネントの認証は、前記統括制御シーケンスが活性化される前に済まされることを特徴とする電気機器。
【請求項１４】
認証未済のプログラムは作動できないことを保証してある期間を認証子受付期間として検出する認証子受付期間検出ステップ、
所定のプログラムを実行するプログラム実行手段に対して、前記認証子受付期間において認証子送出の要求を受けたときに限り認証子を送出させる認証子送出ステップ、及び
認証手段に対して、前記プログラム実行手段から受け付けた認証子に基づいて一方向性関数値を演算させ、該一方向性関数値と前記プログラム実行手段についての予め保持している保持値との対比に基づいて前記プログラム実行手段について認証すべきか否かを決定させる認証決定ステップ
を有していることを特徴とする認証方法。
【請求項１５】
前記プログラム実行手段の実行するプログラムのコードは、書換えられる可能性のあるもの及び／又は前記認証手段により読出し不能であるものであることを特徴とする請求項１４記載の認証方法。
【請求項１６】
前記認証子受付期間は、システム・リセット時から前記認証方法のオペレーティング・システムが活性化するまでの期間であるブート期間内に規定されていることを特徴とする請求項１４記載の認証方法。
【請求項１７】
前記ブート期間では、ＢＩＯＳブート・ブロックは認証済みのものとして扱われ、該ＢＩＯＳブート・ブロックを含む所定の複数個のプログラムについては各プログラムがそれより１個だけ先に認証されたプログラムから認証を受ける認証連鎖が設定され、前記認証手段を、前記認証連鎖に属するプログラムを実装して認証処理を実行するものとして、前記認証決定ステップを実行することを特徴とする請求項１６記載の認証方法。
【請求項１８】
前記認証子送出ステップの実行のために、前記プログラム実行手段にはハードウェアを装備させ、該ハードウェアには、前記プログラム実行手段からの前記プログラム実行手段の認証子の送出を許容及び禁止する機能を装備させ、さらに、該ハードウェアには、システム・リセット信号の検出開始時点より前記プログラム実行手段からの前記プログラム実行手段の認証子の送出を許容するように、させることを特徴とする請求項１６記載の認証方法。
【請求項１９】
前記認証子送出ステップの実行のために、前記ハードウェアには、外部からの所定のコマンド信号の入力に伴い前記プログラム実行手段からの認証子の送出を禁止又は認証子の送出に代わるエラー信号の送出を実行するように、させることを特徴とする請求項１８記載の認証方法。
【請求項２０】
前記プログラム実行手段をファームウェア素子とすることを特徴とする請求項１４記載の認証方法。
【請求項２１】
前記プログラム実行手段の認証子を、前記プログラム実行手段が実装するプログラムのバージョンごと、前記認証方法を装備する電気機器の機種ごと、及び／又は前記認証方法を装備する電気機器ごとに、相違させることを特徴とする請求項１４記載の認証方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パーソナル・コンピュータ（以下、適宜、「ＰＣ」と言う。）等の電気機器、及び該電気機器に装備される認証システム、ファームウェア装置、及び認証方法に係り、詳しくは認証子の漏洩を的確に防止できる電気機器、及び該電気機器に装備される認証システム、ファームウェア装置、及び認証方法に関するものである。
【０００２】
【従来の技術】
ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及びＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）において、ユーザが、所定のサーバからの認証を受けるために、ログ・イン時にパスワードを入力するのは公知である。そして、その場合に、認証サーバは、パスワードそのものを保持せず、パスワードに対するハッシュ関数値を演算し、この演算値と該ユーザに係る所定の保持値とを対比して、認証するか否かを決定する。このような認証システムでは、サーバが保持している、ユーザに係る保持値は、ユーザの入力するパスワードそのものではなく、該パスワードに対するハッシュ関数値であり、かつハッシュ関数は逆算不可能である。したがって、このようなハッシュ関数値がサーバから漏洩したとしても、そのハッシュ関数値を使って、認証を得ることはできないので、不正なログインを防止することができる。
【０００３】
【発明が解決しようとする課題】
ハッシュ関数を利用した従来の認証システムは、例えばＰＣに装備される節電モード制御用ファームウェアの認証への適用では、問題が残る。例えば、ＰＣへ侵入したコンピュータ・ウィルスが、ハッシュ関数値を保持している認証主体ではなく、ハッシュ関数の基となる認証子を保持している認証対象へアクセスして、認証子の読出しに成功する可能性がある。
【０００４】
また、認証対象になり得るファームウェアのプログラムは、ＰＣのＯＳ実行用プロセッサとは別の専用のプロセッサにより実行されるとともに、ＯＳ実行用プロセッサ上で実行される各種プログラムは、一般に、ファームウェアのプログラムの内容を読み出すことができない。したがって、ＯＳ実行用プロセッサが、ファームウェアのプログラムのコードを読み出して、内容に基づいて認証するか否かを決定することはできない。
【０００５】
本発明の目的は、一方向性関数生成のための認証子に基づいて認証を実施する認証システム、ファームウェア装置、電気機器、及び認証方法において、悪意のコード等が認証子の読出す可能性を低減し、かつ不正に読み出した認証子による不正な認証を防止することである。
【０００６】
【課題を解決するための手段】
本発明の認証システムは次のものを有している。
・認証未済のプログラムは作動できないことを保証してある期間を認証子受付期間として検出する認証子受付期間検出手段
・所定のプログラムを実行するものでありかつ認証子受付期間において認証子送出の要求を受けたときに限り認証子を送出するプログラム実行手段
・プログラム実行手段から受け付けた認証子に基づいて一方向性関数値を演算しかつ該一方向性関数値とプログラム実行手段についての予め保持している保持値との対比に基づいてプログラム実行手段について認証すべきか否かを決定する認証手段
【０００７】
認証期間は、認証未済のプログラムは作動できないことを保証してある期間であれば、どんな期間でもよい。すなわち、認証子受付期間は、後述のブート期間に限定されず、認証期間の始点はシステム・リセットの生成時点に限定されず、認証期間の終点はＯＳのアクティベートされた（ａｃｔｉｖａｔｅ）時点に限定されない。
【０００８】
パスワードが固定されたものに限るとするならば、認証子は、このようなパスワードに限定されず、被認証の都度、変化するものであってもよいとする。例えば、二変数関数Ｅ(Ｋ，Ｐ）及びＤ(Ｋ，Ｑ）が定義され、Ｋを固定したとき互いに逆関数（すなわちＰ＝Ｄ(Ｋ，Ｅ(Ｋ，Ｐ）））となっているとする。認証主体としての認証手段は、任意に”チャレンジ”Ｋを指定し、パスワード要求と同時にＫを認証対象としてのプログラム実行手段へ通知し、プログラム実行手段はＰ自身の代わりに”レスポンス”Ｑ＝Ｅ(Ｋ，Ｐ）を認証手段へ返す。認証手段はＰ’＝Ｄ(Ｋ，Ｑ）によりＰ’を演算する（なお、この手法は”チャレンジ・レスポンス”と呼ばれる公知の手法の”亜流”である。）。認証手段は、Ｐ’に対応する一方向性関数値Ｈ（Ｐ’）を演算する。認証手段は、演算した一方向性関数値Ｈ（Ｐ’）と、真正なＰから予め求められていて保有している一方向性関数値Ｈ（Ｐ）とを対比し、プログラム実行手段を認証するか否かを決定する。認証手段は、Ｋの値を適宜、選択でき、Ｑは、Ｋの変更に伴い、変更される。概念上、認証子は、Ｑのような変化するものも包摂するものとする。
【０００９】
本発明の認証システムは例えばＰＣ（パーソナル・コンピュータ）等の電気機器に実装される。認証システムを実装する電気機器として、ＰＣの外に、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、携帯電話、所定の家電、ゲーム機、産業用ロボット、自動販売機、ＡＴＭ、複写機、ｆａｘ機等を挙げることができる。本発明の認証システムが適用される電気機器は、概念上、１個以上のプロセッサを搭載して、プログラムを実行するものをすべて含む。認証手段は、プログラム実行手段からの認証子そのものを該プログラム実行手段について保持する保持値と対比するのではなく、プログラム実行手段からの認証子に基づいて演算した一方向性関数値と所定の保持値とを対比する。したがって、認証手段から保持値が漏洩しても、悪意のコードが、認証手段からの漏洩データに基づいて不正な認証を得る事態が有効に回避される。また、プログラム実行手段は、公開鍵方式等の演算アルゴリズムの実装を省略できるので、構造が簡単となる。
【００１０】
認証システムの一態様では、プログラム実行手段の実行するプログラムのコードは、書換えられる可能性のあるもの及び／又は認証手段により読出し不能であるものである。
【００１１】
プログラム実行手段がそのコードを書換可能なものである場合、悪意のコードがプログラム実行手段のコードを書換える危険性が高まる。プログラム実行手段がそのコードを書換可能なものである場合、プログラム実行手段の認証子又はその生成に必要なシーズ（ｓｅｅｄ）は、典型的には、電気回路部に保持することなく、ソフトウェアのコードと共に書換可能なメモリにストアされている。悪意のコード等が、プログラム実行手段の実行するプログラムのコードを書換えると、認証子又はその生成に必要なシーズも喪失又は変更されてしまい、該プログラム実行手段は真正の認証子を送出することは困難になる。通常の書換え可能な不揮発性記憶素子は、所定のブロック単位（例：１２８バイト等の複数バイト単位）で書換え可能になっており、認証子を含むブロックでは、認証子をそのままに、他のコード部のみを書換えることは困難である。また、認証子の含まれるブロックを探し出すことはメモリ構造等の相当の情報が必要となる。こうして、プログラム実行手段は、そのコードを悪意のコードにより書換えられると、真正の認証子を送出困難になり、認証手段による認証ができなくなる。
【００１２】
認証主体としての認証手段は、認証対象としてのプログラム実行手段からそのプログラム・コードを読み出して、内容に基づいて真正なプログラム実行手段であるか否か、すなわち認証するか否かを判断することもできるが、プログラム・コードを読出し不能である場合には、そのような認証は、困難である。したがって、認証子受付期間にプログラム実行手段から送出のあった認証子に基づいて認証を行うことについての意義は高まる。本発明がノート型ＰＣ等のＰＣに適用される場合、プログラム実行手段は、例えばＰＣの節電モード等の電源管理を行うプログラムを実装した組込み型コントローラ（Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ）となり、認証手段は、典型的にはＰＣのＣＰＵにより実行されるものとなる。そして、該組込み型コントローラのプログラム・コードはＰＣのＣＰＵには読み出すことができない。プログラム実行手段としての組込み型コントローラには、ＰＣの節電モード等の電源管理を行うプログラムを実装したコントローラの他に、ネットワーク・コントローラや、ハード・ディスク・ドライブのコントローラ、及びＣＤ−ＲＯＭドライブのコントローラが含まれる。なお、本明細書において、「組込み型コントローラ」と言う場合、それは専用のプロセッサを内蔵したものとして使用する。
【００１３】
認証子受付期間とは、例えば、システム・リセット時から認証システムのオペレーティング・システム（ＯＳ）が活性化する（ａｃｔｉｖａｔｅ：ＯＳが作動可能状態になること。）までの期間（以下、「ブート期間」と言う。）に含まれる期間である。コンピューティング・プラットフォーム（Ｃｏｍｐｕｔｉｎｇ  Ｐｌａｔｆｏｒｍ）のトラスト（ｔｒｕｓｔ）及びセキュリティ（ｓｅｃｕｒｉｔｙ）のオープン規格としてのＴＣＰＡ（Ｔｒｕｓｔｅｄ  ＣｏｍｐｕｔｉｎｇＰｌａｔｆｏｒｍ  Ａｌｌｉｉａｎｃｅ。詳しくはＵＲＬ：www.trustedpc.orgを参照されたい。）では、ブート期間において、所定の複数個のプログラムが所定の連鎖で読み込まれ、実行され、次々に認証されるようになっている。この連鎖の具体的順番は、ＢＩＯＳブート・ブロック（ＢＩＯＳ  Ｂｏｏｔ  Ｂｌｏｃｋ）、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）、ＯＳローダ（ＯＳ  Ｌｏａｄｅｒ）及びＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）である、最初にコードを読み出されるＢＩＯＳブート・ブロックは、書換え困難なＲＯＭに記録されており、測定用の信用コア・ルート（Ｃｏｒｅ  Ｒｏｏｔ  ｏｆ  Ｔｒｕｓｔ  ｆｏｒ  Ｍｅｓｕｒｅｍｅｎｔ）として働く。したがって、ＢＩＯＳブート・ブロックは任意の時点で常に認証済みである。好ましい認証システムでは、ブート期間では、ＢＩＯＳブート・ブロックは認証済みのものとして扱われ、該ＢＩＯＳブート・ブロックを含む所定の複数個のプログラムについては各プログラムがそれより１個だけ先に認証されたプログラムから認証を受ける認証連鎖が設定され、認証手段は、認証連鎖に属するプログラムを実装して認証処理を実行するものである。
【００１４】
好ましくは、プログラム実行手段はハードウェアを装備し、該ハードウェアは、プログラム実行手段からのプログラム実行手段の認証子の電気信号の送出を許容及び禁止する機能を装備し、さらに、該ハードウェアは、システム・リセット信号の検出開始時点よりプログラム実行手段からのプログラム実行手段の認証子の電気信号の送出を許容するようになっている。システム・リセット信号は、システム起動（該起動には、再起動も含む。）のために生じるものであり、例えばパワー・オン時に生成される。プログラム実行手段のハードウェアが、プログラム実行手段からのプログラム実行手段の認証子の送出を許容及び禁止することにより、また、プログラム実行手段のハードウェアがブート期間の開始としてのシステム・リセット信号を検出することにより、悪意のコードが、プログラム実行手段から不正に認証子を得る可能性がさらに低下する。
【００１５】
好ましくは、ハードウェアは、外部からの所定のコマンド信号の入力に伴いプログラム実行手段からの認証子の送出を禁止又は認証子の送出に代わるエラー信号の送出を実行するようになっている。「外部から」とは、典型的には、認証手段からである。「外部からの所定のコマンド信号」には、単一のコマンドに係る信号だけでなく、複数個のコマンドの特定のシーケンスに係る信号、さらに、複数個のコマンドの中から特定の複数個のコマンドの組に係る信号等も概念上、包摂される。典型的は、プログラム実行手段はファームウェア素子である。該ファームウェア素子は、そのファームウェアを実行するプロセッサを組み込まれているものであっても、プロセッサを組み込まれず、それを外付けで接続されていてもよいとする。
【００１６】
好ましくは、プログラム実行手段の認証子は、プログラム実行手段が実装するプログラムのバージョンごと、認証システムを装備する電気機器の機種ごと、及び／又は認証システムを装備する電気機器ごとに、相違している。プログラム実行手段が実装するプログラムのバージョンごと、認証システムを装備する電気機器の機種ごと、及び／又は認証システムを装備する電気機器ごとに、プログラム実行手段の認証子を相違させることにより、認証子は、プログラムのバージョン、電気機器の機種ごと、及び／又は電気機器を識別する識別子としても利用可能となる。
【００１７】
本発明によれば、ファームウェアを実装するファームウェア装置は、認証子を送出する認証子送出部、外部の認証未済のプログラムは作動できないことを保証してある期間（以下、「認証子受付期間」と言う。）であるか否かを外部入力の所定の電気信号に基づいて検出する検出部、及び認証子受付期間に限り認証子送出部から認証子の送出を許容する送出制御部、を有している。好ましくは、送出制御部は、外部からの所定のコマンド信号の入力に伴い認証子送出部からの認証子の送出を禁止又は認証子の送出に代わるエラー信号の送出を実行するようになっている。また、好ましくは、送出制御部は、認証装置から認証された旨の通知を受けしだい、認証子送出部からの認証子の送出を禁止するものである。
【００１８】
ファームウェア装置は、そのファームウェアを実行するためのプロセッサを組み込まれているものであっても、該プロセッサを外付けで接続されているものであってもよい。
【００１９】
本発明の電気機器は、認証主体コンポーネントと、該認証主体コンポーネントにより認証されてから所定の協働用コンポーネントと協働する認証対象コンポーネントとを有している。認証対象コンポーネントは、少なくともその一部が認証対象コンポーネントの外部からのアクセス不可能な制御コードを内蔵するものであり、認証主体コンポーネントは、認証対象コンポーネントへ認証主体コンポーネントの送出要求のコマンドを送出するようになっており、認証対象コンポーネントは、認証主体コンポーネントからの認証主体コンポーネントの送出要求コマンドに応答して認証主体コンポーネントを送出するようになっている。
【００２０】
認証対象コンポーネントは、その外部からは読出し困難なコードを含むので、そのコードについては、それを認証主体コンポーネントが読み出して、不正のないのものであるか否かを検証することにより、認証することは困難である。これに対処して、本発明の電気機器では、認証主体コンポーネントが、認証対象コンポーネントへ所定のコマンドを送出し、該コマンドに対する認証対象コンポーネントの応答に基づいて認証対象コンポーネントを認証するか否かを決めることによる。
【００２１】
本発明の電気機器は、認証主体コンポーネントと、該認証主体コンポーネントにより認証されてから所定の協働用コンポーネントと協働する認証対象コンポーネントと、認証主体コンポーネント及び認証対象コンポーネントを含む複数個のコンポーネントを統括して制御する制御シーケンス（以下、「統括制御シーケンス」と言う。）を実装する統括制御コンポーネントとを有している。統括制御シーケンスは、電気機器の電源をオンするための信号に応答して活性化され、認証主体コンポーネントによる認証対象コンポーネントの認証は、統括制御シーケンスが活性化される前に済まされる。
【００２２】
統括制御シーケンスとは例えばＯＳである。認証主体コンポーネントによる認証対象コンポーネントの認証が、統括制御シーケンスが活性化される前に済まされることにより、不正なコードによる認証子の不正入手が防止される。
【００２３】
統括制御シーケンスとは、例えばＰＣのＯＳである。電気機器では、それに装備されてそれぞれ独自の機能や処理を達成するプロセッサ及びプログラムについて階層化することが考えられる。下位階層のプロセッサ及びプログラムは上位階層のプロセッサ及びプログラムにより統括され、電気機器全体として秩序ある又は調和された制御が達成される。統括制御シーケンスが活性化される（ａｃｔｉｖａｔｅ）前に、すなわち、悪意あるプログラム等が作動可能になる前に、認証が済まされ、結果、認証子の漏洩等の危険性を低下させることができる。
【００２４】
本発明の認証方法は次のステップを有している。
・認証未済のプログラムは作動できないことを保証してある期間を認証子受付期間として検出する認証子受付期間検出ステップ
・所定のプログラムを実行するプログラム実行手段に対して、認証子受付期間において認証子送出の要求を受けたときに限り認証子を送出させる認証子送出ステップ
・認証手段に対して、プログラム実行手段から受け付けた認証子に基づいて一方向性関数値を演算させ、該一方向性関数値とプログラム実行手段についての予め保持している保持値との対比に基づいてプログラム実行手段について認証すべきか否かを決定させる認証決定ステップ
【００２５】
本発明の認証方法には、次の技術事項を任意の組み合わせで付加することができる。
・プログラム実行手段の実行するプログラムのコードは、書換えられる可能性のあるもの及び／又は認証手段により読出し不能であるものである。
・認証子受付期間は、システム・リセット時から認証方法のオペレーティング・システムが活性化するまでの期間（以下、「ブート期間」と言う。）内に規定されている。
・ブート期間では、ＢＩＯＳブート・ブロックは認証済みのものとして扱われ、該ＢＩＯＳブート・ブロックを含む所定の複数個のプログラムについては各プログラムがそれより１個だけ先に認証されたプログラムから認証を受ける認証連鎖が設定され、認証手段を、認証連鎖に属するプログラムを実装して認証処理を実行するものとして、認証決定ステップを実行する。
・認証子送出ステップの実行のために、プログラム実行手段にはハードウェアを装備させ、該ハードウェアには、プログラム実行手段からのプログラム実行手段の認証子の送出を許容及び禁止する機能を装備させ、さらに、該ハードウェアには、システム・リセット信号の検出開始時点よりプログラム実行手段からのプログラム実行手段の認証子の送出を許容するように、
させる。
・認証子送出ステップの実行のために、ハードウェアには、外部からの所定のコマンド信号の入力に伴いプログラム実行手段からの認証子の送出を禁止又は認証子の送出に代わるエラー信号の送出を実行するように、させる。
・プログラム実行手段をファームウェア素子とする。
・プログラム実行手段の認証子を、プログラム実行手段が実装するプログラムのバージョンごと、認証方法を装備する電気機器の機種ごと、及び／又は認証方法を装備する電気機器ごとに、相違させる。
【００２６】
【発明の実施の形態】
以下、発明の実施の形態について図面を参照して説明する。
【００２７】
図１はＰＣ（パーソナル・コンピュータ）１０へのＴＣＰＡ（ＴｒｕｓｔｅｄＣｏｍｐｕｔｉｎｇ  Ｐｌａｔｆｏｒｍ  Ａｌｌｉｉａｎｃｅ：コンピュータ・プラットフォームのトラスト及びセキュリティのオープン・スタンダード）の適用における完全性測定（ｉｎｔｅｇｒｉｔｙ  ｍｅａｓｕｒｅｍｅｎｔ）についての説明図である。図１において、Ａは認証の測定（ｍｅａｓｕｒｅｍｅｎｔ）を表し、Ｂは認証結果のストア（ｓｔｏｒｅ）を表し、Ｃは報告（ｒｅｐｏｒｔ）を表す。システム・リセットが、パワー・オン等に伴い、生じると、ブートが開始される。ブートでは、ＢＩＯＳブート・ブロック１１、ＢＩＯＳ１２、ＯＳローダ１３、及びＯＳ１４がその順番で実行される。ＢＩＯＳブート・ブロック１１、ＢＩＯＳ１２、ＯＳローダ１３、及びＯＳ１４の読出し及び実行の連鎖は認証の連鎖でもあり、各プログラムは、それより１個、先に認証を受けたプログラムから認証を受け、この後、次に読み出したプログラムを認証するか否かを決定するようになっている。すなわち、ＢＩＯＳ１２、ＯＳローダ１３及びＯＳ１４はそれそれＢＩＯＳブート・ブロック１１、ＢＩＯＳ１２及びＯＳローダ１３から認証を受ける。各プログラムの認証は認証主体が認証対象のプログラムの内容を検証することにより行われる。ＯＳ１４は、アプリケーション・ネットワーク２３の認証を行う。ＢＩＯＳブート・ブロック１１は、ＲＯＭ内に存在し、悪意のコードがそれを書換えることは不可能であるので、本来的に認証済みコードであり、ＴＣＰＡの基本要素であり、測定用の信用コア・ルート（Ｃｏｒｅ  Ｒｏｏｔ  ｏｆ  Ｔｒｕｓｔ  ｆｏｒ  Ｍｅｓｕｒｅｍｅｎｔ）の役目をもつ。ＢＩＯＳ１２は、ＯＳローダ１３以外にも、所定のハードウェア１６及びオプションＲＯＭ１７の認証も受け持つ。ＢＩＯＳブート・ブロック１１、ＢＩＯＳ１２、ＯＳローダ１３、及びＯＳ１４における認証結果はＴＰＭ（ＴｒｕｓｔｅｄＰｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）２０にストアされる。ＴＰＭは、ＴＣＰＡの基本要素であり、ＲＴＳ（Ｒｏｏｔ  ｏｆ  Ｔｒｕｓｔ  ｆｏｒ  Ｓｔｏｒａｇｅ：ルート・オブ・トラスト・フォー・ストレージ）及びＲＴＲ（Ｒｏｏｔ  ｏｆ  Ｔｒｕｓｔ  ｆｏｒ  Ｒｅｐｏｒｔｉｎｇ：ルート・オブ・トラスト・フォー・レポーティング）機能をもつチップである。ＯＳ１４は、ＴＰＭ２０からの認証結果の報告を受ける。ＰＣ１０において、システム・リセットが生じてから、ＯＳ１４が活性化されるまでの期間を「ブート期間」と呼ぶことにする。図１において、ＢＩＯＳブート・ブロック１１、ＢＩＯＳ１２、ＯＳローダ１３、ＯＳ１４及びアプリケーション・ネットワーク２３は、ＰＣ１０の本来のＣＰＵ２５により実行される。コンピュータ・ウィルス等の悪意のコードがＰＣ１０へ侵入した場合には、ユーザの意図に反して、各種データ（ファイルも含む。）の書き換え、削除等が行われてしまう。ファームウェア素子２７は、例えば、ファームウェアとともにプロセッサを組み込まれた組込み型コントローラであり、例えばＰＣ１０の節電モード等の電源管理を行う組込み型コントローラである。
【００２８】
ＣＰＵ２５は、ファームウェア素子２７に書き込まれているファームウェアを読み出すことができないので、ファームウェア素子２７のコード内容を読み出して検証することによりファームウェア素子２７を認証するか否かを決めることは困難である。したがって、ファームウェア素子２７は、ＢＩＯＳ１２、ＯＳローダ１３及びＯＳ１４の認証方式とは別の方式で認証する必要がある。
【００２９】
図２はＰＣ１０に装備される認証メカニズムの説明図である。認証手段としての認証主体３０は、ＰＣ１０のブート期間において認証済みプログラムとして作動するプログラムであり、図１のＢＩＯＳブート・ブロック１１からＯＳ１４までの認証連鎖の中に適宜挿入されてもよいし、ＢＩＯＳブート・ブロック１１、ＢＩＯＳ１２、ＯＳローダ１３及びＯＳ１４のどれかに兼務されてもよい。認証主体３０は自分が認証を受けた後のブート期間中に、認証対象３１へＰＷＤ（ｐａｓｓｗｏｒｄ：パスワード）送出要求（ＰＷＤ  Ｒｅｑｕｅｓｔ）３４を行う。認証対象３１は、ＰＷＤ送出要求３４を受け付けると、それが受理可能な期間であるか否かを判定する（Ｓ３６）。そして、Ｓ３６の判定結果がＮＯであれば、ＰＷＤ送出要求３４を拒絶する処理を実施し（Ｓ４０）、ＹＥＳであれば、認証子としてのＰＷＤ３９を送出してから（Ｓ３７）、インターフェース（Ｉ／Ｆ）をロックする（Ｓ３８）。ＰＷＤ３９の送出は、１回限りでなくてもよく、ＰＷＤ送出要求３４が受理可能な期間であれば、ＰＷＤ送出要求３４の受付の都度、ＰＷＤ送出を実行してもよい。しかし、ＰＷＤの送出回数はセキュリティ上は少ないほど良い。認証主体３０は、一方向性関数としてのハッシュ関数の演算アルゴリズムとしてのＳＨＡ１やＭＤ５等を装備し、Ｓ４３において、それらを使って、認証手段３１より送られて来たＰＷＤ３９に対するハッシュ関数値を演算する。認証主体３０は、また、認証対象３１のパスワードに対するハッシュ関数値を、予め認証対象３１に対応付けて保持しており、Ｓ４４ではこの保持中のハッシュ関数値を呼び出し、Ｓ４５では、Ｓ４３における演算値とＳ４４で呼び出した保持中のハッシュ関数値とを対比する。両者が一致すれば、認証対象３１は真正なものとして認証され、不一致であれば、認証対象３１は不正なものとして認証を拒否される。対比結果はＳ４６において所定のメモリに記録される。認証対象３１が認証されなかったときは、（ａ）認証対象３１を強制的にパワー・オフ（電源切）にして、認証対象３１を作動させなくしたり、（ｂ）認証対象３１の認証が拒否されたことをＰＣ１０のディスプレイに表示して、認証拒否に対する対応はユーザに一任させたりしてよい。
【００３０】
図３は認証対象３１に装備され認証対象３１のＰＷＤ（パスワード）の出力を制御するメカニズムの構成図である。認証対象３１は、例えば組込み型コントローラから成り、該組込み型コントローラは、ハードウェアから成るロック回路（Ｌｏｃｋ  Ｌｏｇｉｃ）５１を装備する。図３における破線枠５０内の構成は、ハードウェアから成り、ファームウェア素子への実装も可能である。ＰＣ１０のパワー・オン（電源入）やＯＳの再起動に伴い、システム・リセット信号が生成され、該システム・リセット信号はシステム・リセット検出器（Ｓｙｓｔｅｍ  Ｒｅｓｅｔ  Ｄｅｔｅｃｔｉｏｎ  Ｌｏｇｉｃ）５３により検出される。システム・リセット検出器５３の出力は負論理であり、システム・リセット検出器５３によるリセット信号の検出に伴い、ロック回路５１のＡＮＤ回路５８の出力は”０”となり、フリップ・フロップ回路５９はリセットされ、選択器（ｓｅｌｅｃｔｅｒ）６０は、０側入力のＰＷＤをデータ出力器（Ｄａｔａ  Ｏｕｔｐｕｔ  Ｌｏｇｉｃ）５５へ出力する。典型的には、選択器６０の０側入力端及び１側入力端には、それぞれＰＷＤ及びエラー指示が常時待機状態になっている。認証対象３１は、ＰＷＤの種（ｓｅｅｄ）を保持して、決定論的な論理により該種からＰＷＤを生成して、選択器６０の０側入力へ必要時に供給することもできる。システム・リセット検出器５３の出力は、システム・リセット信号の消失後、直ちに、”１”に復帰するが、フリップ・フロップ回路５９の出力としての”０”がＯＲ回路６１を介してＡＮＤ回路５８の他方へ入力されているため、フリップ・フロップ回路５９はリセット状態を維持し、選択器６０はＰＷＤを出力し続ける。一方、コマンド検出器（Ｃｏｍｍａｎｄ  Ｄｅｃｏｄｅ  Ｌｏｇｉｃ）５４は外部からのコマンドをデコードするものであり、コマンド検出器５４のデコードしたコマンドは制御シーケンス発生器５６へ送られる。制御シーケンス発生器５６の出力としてのチェック完（Ｃｈｅｃｋ  Ｄｏｎｅ）信号は正論理である。コマンド検出器５４へ入力されるコマンドの中には、（ａ）ＰＷＤのＲｅａｄ（読出し）とＬｏｃｋ（ロック）とを兼ねる”Ｒｅａｄ  ＰＷＤ”コマンド、及び（ｂ）”Ｒｅａｄ  ＰＷＤ”と”Ｌｏｃｋ”とのコマンドが別々である場合がある。（ａ）では、コマンド検出器５４が”Ｒｅａｄ  ＰＷＤ”を受け付けると、制御シーケンス発生器５６は、データ出力器５５に対し出力許可を与え、ＰＷＤの出力終了後は、データ出力器５５に対し出力許可を取り消す。そして、制御シーケンス発生器５６は、”Ｃｈｅｃｋ  Ｄｏｎｅ”信号を活性化させ、これにより、フリップ・フロップ回路５９はセット状態となり、以後、選択器６０の出力はエラー指示側に固定される。（ｂ）の場合では、コマンド検出器５４が”Ｒｅａｄ  ＰＷＤ”のコマンドを受け付けると、制御シーケンス発生器５６は、データ出力器５５に対し出力許可を与え、出力終了後は、データ出力器５５に対する出力許可を取り消す。また、コマンド検出器５４が”Ｌｏｃｋ”を受け付けると、制御シーケンス発生器５６は”Ｃｈｅｃｋ  Ｄｏｎｅ”信号を活性化させ、以後、選択器６０の出力はエラー指示側に固定する。こうして、データ出力器５５からのＰＷＤの出力は、システム・リセット信号発生から１回目のＰＷＤ送出までロック信号の受理までの期間に限定される。
【００３１】
図４は組込み型コントローラ６８の認証システムにおいて各種信号がＰＣ１０のハードウェア回路をどのように流れているかを示す図である。組込み型コントローラ６８は図２の認証対象３１の一例である。ＣＰＵ２５は、メモリーＩ／Ｏ制御器６５を介して各種メモリ装置としてのＴＰＭ２０、メイン・メモリー６６、他の周辺機器６７、組込み型コントローラ（Ｅｍｂｅｄｄｅｄ  ｃｏｎｔｒｏｌｌｅｒ）６８、及びＲＯＭ６９へ接続されている。ＲＯＭ６９は、改ざんが不可能なコード（書き換えられないコード）としての耐改ざんコード（Ｔａｍｐｅｒ  ｐｒｏｏｆ  Ｃｏｄｅ）７４、改ざんが不可能なデータ（書き換えられないデータ）としての耐改ざんデータ（Ｔａｍｐｅｒ  ｐｒｏｏｆ  Ｄａｔａ）７５、改ざん検出可能コード／データ（Ｔａｍｐｅｒ  ｅｖｉｄｅｎｔ  Ｃｏｄｅ／Ｄａｔａ）７６、及びその他（Ｏｔｈｅｒｓ）７７を含み、耐改ざんコード７４及び耐改ざんデータ７５はコアＲＴＭ（Ｃｏｒｅ  ＲＴＭ）７８を構成する。ＣＰＵ２５は、最初に、耐改ざんコード７４から認証プログラムを読み出すとともに（Ｄ１）、耐改ざんデータ７５から組込み型コントローラ６８のパスワードに対するハッシュ関数値を読み出す（Ｄ２）。次に、ＣＰＵ２５は、組込み型コントローラ６８から組込み型コントローラ６８のパスワードを受け付け（Ｄ３）、この受け付けたパスワードに対するハッシュ関数値を演算し、ハッシュ関数値とＤ２において読み出したハッシュ関数値とを対比する。そして、両者が一致していれば、組込み型コントローラ６８は真正のものであるとして、組込み型コントローラ６８を認証し、両者が不一致であれば、組込み型コントローラ６８は不正であるとして、組込み型コントローラ６８の認証を拒否する。ＣＰＵ２５は、組込み型コントローラ６８を認証した場合は、組込み型コントローラ６８へロックの指示を送出する（Ｄ４）。ＣＰＵ２５は、また、組込み型コントローラ６８についての認証結果をＴＰＭ２０に記録する（Ｄ５）。Ｅ１，２は、Ｄ１，Ｄ２におけるコード及びデータが、その改ざんが行われていないことを確認されてから、使用されることを意味する。
【００３２】
図５は認証システムの機能ブロック図である。各ブロックは、所定プログラムを実装し、それに対応の機能を実現する手段となっている。認証子受付期間検出手段９６は、認証システムにおける認証子受付期間を検出する。認証子受付期間は、例えば、システム・リセット信号が生じた時刻からＯＳが活性化される（ａｃｔｉｖａｔｅ：ＯＳが読み込まれて、作動可能状態になること。）までの期間、すなわちブート期間である。ＰＣ１０のブート期間を検出するブート期間検出手段は認証子受付期間検出手段９６の具体的態様の１つである。プログラム実行手段９７は、ＣＰＵ２５（図１）からは読出し困難な制御コードを実装している。プログラム実行手段９７の具体的態様は例えばファームウェア素子及び組込み型コントローラである。なお、組込み型コントローラにはプロセッサが組込まれているおり、ファームウェア素子には、プロセッサが必ずしも組み込まれていない。プログラム実行手段９７は、認証子受付期間検出手段９６からの入力情報に基づいて認証子受付期間を認知する。プログラム実行手段９７は、認証子受付期間に限定して認証手段９８へパスワードを例えば１回だけ送る。認証手段９８は、プログラム実行手段９７へパスワード送出要求を発行して、プログラム実行手段９７から送られて来たパスワードに対するハッシュ関数値を演算する。そして、その演算値とプログラム実行手段９７についてのハッシュ関数値として予め保持しているデータとを対比し、両者が一致するならば、プログラム実行手段９７を認証し、不一致であれば、プログラム実行手段９７の認証を拒絶する。認証手段９８の具体例としては、図１のＢＩＯＳブート・ブロック１１及びＢＩＯＳ１２等があり、ＢＩＯＳブート・ブロック１１及びＢＩＯＳ１２のコードの中に、プログラム実行手段９７の認証用のコードが挿入されてもよい。ハッシュ関数値の演算はプロセッサの負担を大幅に増大させるが、この認証システムでは、プログラム実行手段９７はハッシュ関数値の演算処理を免れる。また、認証手段９８が保持する一切のデータはコンピュータ・ウィルスやコンピュータ・ワーム等の認証手段９８の外部の悪意のコードからのアクセスにより読まれる可能性があるが、認証手段９８は、プログラム実行手段９７のパスワードそのものは保持しておらず、プログラム実行手段９７のパスワードに対するハッシュ関数値を保持しているので、悪意のコードが該ハッシュ関数値の読出しに成功しても、その基になっているパスワードは入手できないので、悪意のコードが、認証子受付期間検出手段９６に成り済まして認証を受けることが防止される。ブート期間等の認証子受付期間は、認証されたプログラム以外は、ＣＰＵ２５上で作動できず、また、プログラム実行手段９７のパスワードの送出は認証子受付期間に限られるので、ＣＰＵ２５上で作動するかもしれない悪意のコードがプログラム実行手段９７のパスワードを読み出すことが防止される。
【００３３】
図６は認証システムを実装する電気機器８０のブロック図である。認証システムを実装する電気機器８０の例として、ＰＣ１０以外に、産業用ロボット、自動販売機、ＡＴＭ（Ａｕｔｏｍａｔｅｄ−Ｔｅｌｌｅｒ  Ｍａｃｈｉｎｅ：現金自動預け入れ払い機）、複写機、及びゲーム機等が挙げられる。各コンポーネントは、所定のプログラムを実装して、該プログラムに対応する機能を実現する手段であったり、電気回路等のハードウェアであったりする。統括制御コンポーネント８１は、例えばＯＳ等の統括制御シーケンスを実現するコンポーネントであってもよい。電気機器８０が複数個のプロセッサ及び／又はプログラムを装備し、これら複数個のプロセッサ及び／又はプログラムについて階層化が行われている場合、上位の階層のプロセッサ及び／又はプログラムはそれより下位の複数個のプロセッサ及び／又はプログラムを統括することになる。統括制御コンポーネント８１は、電気機器８０の最高位の階層のコンポーネントでなくてもよいが、被統括制御コンポーネント群８５に含まれる全部のプロセッサ及び／又はプログラムに対してはそれらより上位の階層に属しているものでなくてはならない。統括制御コンポーネント８１は、例えばＯＳから成る統括制御シーケンス８２を備える。被統括制御コンポーネント群８５は、認証主体コンポーネント８８、認証対象コンポーネント８９、及び協働コンポーネント９１を含む。認証主体コンポーネント８８は、認証手段９８と同じく、例えばＢＩＯＳ及びＢＩＯＳブート・ブロック等を装備する。認証対象コンポーネント８９は、その外部からは読み取り不可能となっている制御コード９０を装備する。制御コード９０の具体例として、例えば、電気機器８０の使用状態やユーザ指示に基づいて電気機器８０の電力モードを制御するコードがある。電力モード制御の一例では、電気機器８０がノート型ＰＣ１０である場合に、バッテリの電力残量や装備機器の使用状態に基づいて電力モードをフル電力、スタンバイ、サスペンド、及びパワー・オフ等へ切替える。協働コンポーネント９１は、制御コード９０が電力モード制御のコードである場合は、例えば電力供給回路である。協働コンポーネント９１は、認証対象コンポーネント８９と協働して、電気機器８０についての所定の制御を達成する。認証主体コンポーネント８８は、認証対象コンポーネント８９の制御コード９０の少なくとも一部を読み出すことができず、したがって、認証主体コンポーネント８８は、制御コード９０から所定のコードを読み出して、それを検証することにより、認証対象コンポーネント８９を認証するか否かを決定することはできない。
【００３４】
認証主体コンポーネント８８が認証対象コンポーネント８９の認証を行う期間は、例えばブート期間であるが、これに限定されなくてもよい。認証対象コンポーネント８９は、認証主体コンポーネント８８からの認証子送出要求に対して認証子を送出する。認証主体コンポーネント８８は、認証対象コンポーネント８９からの送出認証子に基づいて認証対象コンポーネント８９が真正であるか否かを判定し、真正とした場合には認証対象コンポーネント８９を認証する。認証対象コンポーネント８９は、認証主体コンポーネント８８により認証されてから、協働コンポーネント９１と協働して、電気機器８０について所定の制御を達成する。
【００３５】
【発明の効果】
本発明によれば、認証対象としてのプログラム実行手段は、認証子受付期間認証未済のプログラムは作動できないことを保証してある期間において、認証子を送出するようになっている。したがって、悪意のコードが、不正に認証子を読み出したり、不正に取得した認証子を使って、不正な認証を受けたり、及び認証主体に成り済ましたりすることを有効に防止できる。
【図面の簡単な説明】
【図１】ＰＣへのＴＣＰＡの適用における完全性測定についての説明図である。
【図２】ＰＣに装備される認証メカニズムの説明図である。
【図３】認証対象に装備され認証対象のパスワードの出力を制御するメカニズムの構成図である。
【図４】組込み型コントローラの認証システムにおいて各種信号がＰＣのハードウェア回路をどのように流れているかを示す図である。
【図５】認証システムの機能ブロック図である。
【図６】認証システムを実装する電気機器のブロック図である。
【符号の説明】
１０    ＰＣ
１１    ＢＩＯＳブート・ブロック
１２    ＢＩＯＳ
１３    ＯＳローダ
１４    ＯＳ
２５    ＣＰＵ
２７    ファームウェア素子
３０    認証主体
３１    認証対象
８１    統括制御コンポーネント
８５    被統括制御コンポーネント群
８８    認証主体コンポーネント
８９    認証対象コンポーネント
９１    協働コンポーネント
９６    認証子受付期間検出手段
９７    プログラム実行手段
９８    認証手段
【図１】
0003863447.tif 000002
【図２】
0003863447.tif 000003
【図３】
0003863447.tif 000004
【図４】
0003863447.tif 000005
【図５】
0003863447.tif 000006
【図６】
0003863447.tif 000007