(57)【要約】  【課題】  Ｉ２Ｃバスで生じる通信を認証し、通信が正当であることを保証する機能を提供する。  【解決手段】  本発明により、認証された通信（トランザクション）を標準的なＩ２Ｃバス上で、既存のＩ２Ｃデバイスを修正する必要なく、行なうことが可能になる。前記バスで行われる読み・書きのトランザクションは、認証エージェントと共有秘密鍵とにより認証される。前記トランザクションの合法性の検証を可能にすることに加えて、前記Ｉ２Ｃトランザクションの認証は、ベースボード管理コントローラ（ＢＭＣ）がエラーを敏速に見つけ出して特定できるようにすることによって、バスおよびバス上のデバイスの信頼性および保守サービス性を高める。【選択図】  図１
2007174628.tif 000002
【特許請求の範囲】
【請求項１】
Ｉ２Ｃマスタと少なくとも１つのＩ２Ｃバス上の１つ又は複数のＩ２Ｃデバイス間のトランザクションを認証するためのシステムであって、
第１のＩ２Ｃバスに結合されるとともに、前記第１のＩ２Ｃバスで起こるすべてのトランザクションを監視し、不適切なトランザクションを識別し、前記不適切なトランザクションの識別を前記Ｉ２Ｃマスタに伝えるように構成されている認証エージェント、
を有するシステム。
【請求項２】
前記認証エージェントが、
前記第１のＩ２Ｃバスに結合されたハッシュ・エンジンであって、前記第１のＩ２Ｃバスで起こる各トランザクションで暗号ハッシュを実行して、トランザクション毎に認証ハッシュ値を作成するハッシュ・エンジンと、
前記第１のＩ２Ｃバスおよび前記ハッシュ・エンジンに結合されたハッシュ・レジスタであって、前記各認証ハッシュ値を、Ｉ２Ｃマスタが開始した前記第１のＩ２Ｃバス上のトランザクション毎に前記Ｉ２Ｃマスタが作成した検証ハッシュ値と比較して、それによって前記比較の結果が、前記認証エージェントにより監視される前記トランザクションのうちの特定の１つが適切なトランザクションであるか不適切なトランザクションであるかを判断するために前記認証エージェントにより使用される、ハッシュ・レジスタと、
を有する、請求項１に記載のシステム。
【請求項３】
前記認証エージェントが、
前記第１のＩ２Ｃバスに結合されていて、前記ＢＭＣから受信した暗号鍵を保存するキー・レジスタと、
前記キー・レジスタおよび前記ハッシュ・レジスタに結合された復号化エンジンであって、前記キー・レジスタ内に保存された前記暗号鍵を使用して、前記第１のＩ２Ｃバスから受信した各トランザクションのハッシュを復号化する復号化エンジンと、
をさらに有する、請求項２に記載のシステム。
【請求項４】
前記認証エージェントと前記第１のＩ２Ｃバスとに結合されたタイマであって、前記第１のＩ２Ｃバスでトランザクションが起こることなく所定の時間が経過するとタイムアウト信号を前記認証エージェントに送信するように構成されて、それによって前記認証エージェントが、前記タイマから前記タイムアウト信号を受信すると、前記ＢＭＣにタイムアウト・イベント信号を送信するように構成されているタイマ
をさらに有する、請求項３に記載のシステム。
【請求項５】
前記ＢＭＣと前記Ｉ２Ｃバスの各々との間に結合されていて、前記Ｉ２Ｃバスの各々がそこに専用の認証エージェントを結合させているＩ２Ｃマルチプレクサをさらに含む、請求項４に記載のシステム。
【請求項６】
ベースボード管理コントローラ（ＢＭＣ）と少なくとも１つのＩ２Ｃバス上の１つまたは複数のＩ２Ｃデバイスのためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、前記第１のＩ２Ｃバスで起こるすべてのトランザクションを監視し、不適切なトランザクションを識別し、前記不適切なトランザクションの識別を前記ＢＭＣに送信するように構成されたコンピュータ可読プログラム・コードを有するコンピュータ可読プログラム・コードを
有する、コンピュータ・プログラム。
【請求項７】
前記第１のＩ２Ｃバスで起こる各トランザクションで暗号ハッシュを実行して、各トランザクション毎に認証ハッシュ値を作成するコンピュータ可読プログラム・コードと、
始められた前記第１のＩ２Ｃバス上のトランザクション毎に、前記各認証ハッシュ値を、前記ＢＭＣが作成した検証ハッシュ値と比較して、それによって前記比較の結果が、前記監視されるトランザクションのうち特定の１つが適切なトランザクションであるか不適切なトランザクションであるかを判断するために、使用される、コンピュータ可読プログラム・コードと、
をさらに有する、請求項６に記載のコンピュータ・プログラム。
【請求項８】
前記ＢＭＣから受信された暗号鍵を保存するコンピュータ可読プログラム・コードと、
前記キー・レジスタに保存された前記暗号鍵を使用して、前記第１のＩ２Ｃバスから受信された各トランザクションのハッシュを復号化するコンピュータ可読プログラム・コードと、
をさらに含む、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記第１のＩ２Ｃバスでトランザクションが起こることなく所定の時間が経過するとタイムアウト信号を作成するように構成されているコンピュータ可読プログラム・コードと、
前記タイムアウト信号を受信すると、タイムアウト・イベント信号を前記ＢＭＣに送信するように構成されているコンピュータ可読プログラム・コードと、
をさらに含む、請求項８に記載のコンピュータ・プログラム。
【請求項１０】
ベースボード管理コントローラ（ＢＭＣ）と少なくとも１つのＩ２Ｃバス上の１つまたは複数のＩ２Ｃデバイス間のトランザクションを認証する方法であって、
前記第１のＩ２Ｃバスで起こるすべてのトランザクションを監視する手段と、
不適切なトランザクションを識別する手段と、
前記不適切なトランザクションの識別を前記ＢＭＣに送信する手段と、
を有する、方法。
【請求項１１】
前記第１のＩ２Ｃバスで起こる各トランザクションで暗号ハッシュを実行して、トランザクション毎に認証ハッシュ値を作成する手段と、
前記各認証ハッシュ値を、前記ＢＭＣが開始した前記第１のＩ２Ｃバス上のトランザクション毎に、前記ＢＭＣが作成した検証ハッシュ値と比較し、それによって前記比較の結果が、前記監視されるトランザクションのうちの特定の１つが適切なトランザクションであるか不適切なトランザクションであるかを判断するのに使用される、手段と、
をさらに有する、請求項１０に記載の方法。
【請求項１２】
前記ＢＭＣから受信された暗号鍵をキー・レジスタ内に保存する手段と、
前記キー・レジスタ内に保存された前記暗号鍵を使用して、前記第１のＩ２Ｃバスから受信された各トランザクションのハッシュを復号化する手段と、
をさらに有する、請求項１１に記載の方法。
【請求項１３】
前記第１のＩ２Ｃバスでトランザクションが起こることなく所定の時間が経過するとタイムアウト信号を発出する手段と、
前記タイムアウト信号が発出されるとタイムアウト・イベント信号を前記ＢＭＣに送信する手段と、
をさらに有する、請求項１２記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的に、Ｉ２Ｃバスで生じる通信分野に関するものである。
【背景技術】
【０００２】
通常ＩＩＣまたはＩ２Ｃバスと呼ばれるｉｎｔｅｒ‐ＩＣバスは、システム内の集積回路間に通信リンクを提供するコントロール・バスである。現在、Ｉ２Ｃ通信チャネルを保護する標準的な方法は存在しないので、Ｉ２Ｃ通信を使用しているシステムは、保護されていないあらゆるシステムと同様に、攻撃や改ざんを受けやすい。一例として、多少技術に習熟したアタッカならば、例えばサーバのようなＩ２Ｃバスを使用している機械をこっそりと開き、一般に入手可能なＩ２Ｃ書込みツールを前記Ｉ２Ｃバスにインストールすることができるであろう。前記Ｉ２Ｃ書込みツールにより、バス上のトラフィックは監視または（コンピュータのセキュリティ分野では、監視はしばしばこのように呼ばれるのだが）「スヌープする」ことが可能になる。これにより、前記アタッカは、バス上のリソースがどのようにすれば有効になるのか、或いは無効になるのかを究明することが可能になる。この情報が用意されると、前記アタッカは前記Ｉ２Ｃバスで行われる正当なトランザクションを複製することができる（かくしてこれが正当なトランザクションそのものとして現れる）。
【０００３】
Ｉ２Ｃバスがそのように容易に攻撃され得る１つの理由は、これがきちんと定義された開放型バスであり、バス上で複数のマスタが合法的に存在して平穏理に共存できることにある。先行技術の複数マスタの環境下では、各マスタは、他のマスタにより開始されたトランザクションがバス上で起こっていることは認識しているが、これらの他のトランザクションが合法的なトランザクションであるのか、あるいは侵入者が始めた「異常な」トランザクションであるのかが判断できない。単一マスタの環境下では、前記マスタは発生している他の任意のトランザクション（すなわち前記単一マスタにより開始されたのではないトランザクション）を検出し、そのようなトランザクションが異常であるという想定の下に動作するように前記マスタをプログラムすることができるが、技術に習熟したアタッカならば前記マスタにより開始されたトランザクションを修正することができ、しかもそのような修正は察知できないであろう。このように、アタッカは基本的にはユーザが気づかないように前記Ｉ２Ｃバス上で通信することができる。これにより、異常なマスタが前記バスに侵入して前記バス上のデバイスと通信し、それらのデバイス上にあるデータの変更または読取りあるいはその両方を、これらの事件が起ったことを知らせる全体システムがないままに行うことが可能になる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従って、Ｉ２Ｃバスで生じる通信を認証して、前記通信が合法的であることを保証する機能を有することが望まれる。
【課題を解決するための手段】
【０００５】
本発明によって、認証された通信（トランザクション）を、既存のＩ２Ｃデバイスの修正を必要とすることなく、標準的なＩ２Ｃバス上で行うことが可能になる。前記バス上で行われる読み・書きのトランザクションは、認証エージェントと共有秘密鍵とにより認証される。前記トランザクションの合法性の検証を可能にすることに加えて、前記Ｉ２Ｃトランザクションの前記認証は、ベースボード管理コントローラ（ＢＭＣ）がエラーを敏速に見つけ出して特定できることによって、バスおよびバス上のデバイスの信頼性および保守サービス性を高めている。
【０００６】
好適な実施形態において、秘密鍵は前記ＢＭＣと前記認証エージェント間で共有される。前記ＢＭＣおよび前記認証エージェントは、前記バス上で送信されるデータに対して暗号ハッシュを別々に実行し、前記ＢＭＣにより作成された前記ハッシュ値は、同じトランザクション・データについて前記認証エージェントにより作成された前記ハッシュ値と比較される。一致すればエラーのない真のトランザクションであることを表し、一致しなければトランザクションが不当またはエラーであることを表す。前記秘密鍵の使用により、アタッカが前記バス上のトランザクションを偽って認証することが防止される。
【発明を実施するための最良の形態】
【０００７】
図１は本発明の基本的アーキテクチャを示すブロック図である。図１を参照すると、Ｉ２Ｃマスタ、例えばＢＭＣ１０２が、Ｉ２Ｃバス１０６を経由してＩ２Ｃデバイス１０４に結合されている。これらの要素は、Ｉ２Ｃシステムの代表的なアーキテクチャを有している。単一のＩ２Ｃデバイスのみが示されているが、通常は同じＩ２Ｃバス上に複数のＩ２Ｃデバイスが存在する。
【０００８】
本発明によれば、認証エージェント１１０は、前記Ｉ２Ｃバス１０６で通信しているすべてのデバイスと通信し合えるように前記Ｉ２Ｃバス１０６に結合されている。認証エージェント１１０は、その最も基本的な形式では、キー・レジスタ１１２と、復号化エンジン１１３と、ハッシュ・レジスタ１１４と、ハッシュ・エンジン１１６とを有する。認証エージェント１１０は前記Ｉ２Ｃバス上のすべてのデバイスと通信することができるとともに、前記Ｉ２Ｃバス上の他のデバイスがこの認証エージェントと通信し合えるようにそれ自体がアドレス指定可能になっている。
【０００９】
図１に示す実施形態において、前記ＢＭＣ１０２は、Ｉ２Ｃコントローラと不揮発性記憶装置１０８双方を同じＢＭＣ内に含む、例えば複数の入出力チャネルを備えたマイクロコンピュータなどの汎用ＣＰＵ（図示せず）を含んでいる。好適な実施形態において、前記ＣＰＵは共有鍵暗号ハッシュ・アルゴリズム（例えば共有システムについて、前記保存された秘密鍵を用いている対称鍵暗号で前記ハッシュの暗号化が後に続いて起こる暗号ハッシュである。公開鍵システムについては、前記保存された秘密鍵を用いている公開鍵暗号で前記ハッシュの暗号化が後に続いて起こる暗号ハッシュなど）を実施できなければならず、あるいは、前記ＢＭＣは、これらの業務を実行するために、特殊目的のハードウェア（例えば前記ハッシュを実行する専用のロジックおよび前記暗号化を実行する専用のロジック）を保有していなければならない。暗号ハッシング技術は当業界では周知であり、本発明では任意の周知のハッシング技術またはアーキテクチャ、あるいはその両方を使用することができる。エラー・シグナル・バス１１８は、認証エージェント１１０によるエラー検出を送信するために、ＢＭＣ１０２と認証エージェント１１０とを接続する。
【００１０】
前記認証エージェント１１０はＩ２Ｃバス１０６上に存在しており、前記バスで行われるすべてのＩ２Ｃのトランザクションを検出し監視する。本発明に関しては、「反復スタート条件」といわれるＩ２Ｃプロトコルの機能が利用される。前記反復スタート条件により、バス・マスタ、例えばＢＭＣ１０２は、前記バス制御の再調停なしに継続的に新規トランザクションを開始することができる。したがって、前記バス・マスタはバス制御の持続中、新規のトランザクションを同じデータで望みどおり何度でも発出することができる。
【００１１】
標準的なスタート条件により、前記Ｉ２ＣマスタはＩ２Ｃバス上のＩ２Ｃデバイスでトランザクションを開始し、この特定のＩ２Ｃデバイスに対するトランザクションの終了時に、前記トランザクションを終了させる停止条件を設定することなく反復スタート条件を発出するとともに、前記目標デバイスを反復送信でアドレスするのではなく、前記トランザクションが行われているＩ２Ｃバス上にある前記認証エージェントへの書込みトランザクションを開始する。前記反復スタート条件を用いることにより、２つの別々のバス・トランザクションではなく、単一の連続的な反復トランザクションが起きる。反復スタート・トランザクションが使用されて、複数マスタの環境下でデータおよびハッシュ値の適切なグループ化が保証される。反復スタート・トランザクションが使用されない場合、競合マスタが、ハッシュ書込み段階中にＩ２Ｃ調停を得ること、したがって検証プロセスを破壊することがあり得る。
【００１２】
反復スタート・トランザクションの使用は、Ｉ２Ｃデバイス（例えばＩ２Ｃ・ＮＶＲＡＭ）にアクセスする反復スタート・トランザクションの使用を妨げるものではない。前記認証エージェントが、反復スタート・トランザクションに続くトランザクションの対象でない場合、前記認証エージェントは継続して前記バスをスヌープし、追加のアドレスとデータとを使用して前記ハッシュの計算を継続する。前記認証エージェントは、読み・書きを混在させる前記反復スタート・トランザクションを、単に読出しまたは書込みを行うトランザクションと同じように処理する必要がある。本発明のＢＭＣは、これらの反復スタート読み・書きトランザクションを正しくハッシングするように構成されている。
【００１３】
前記認証エージェントは前記バスで生じるトランザクション全体をスヌープする（例えば、マスタからＩ２Ｃデバイスに送信された同一データを受信する）ので、同じ情報に基づくハッシュ値をハッシュ・エンジン１１６により作成することができる。送信が合法的であったと仮定すれば、前記ＢＭＣはそのすべての情報を作成したデバイスであるので、その情報に基づいてハッシュを作成することもできる。次に、前記ＢＭＣはその秘密鍵により前記ハッシュを暗号化し、前記暗号化されたハッシュを前記認証エージェントに送信する。その後、前記認証エージェントは前記ハッシュを復号化エンジン１１３により復号化し、前記ハッシュ・レジスタは前記２つのハッシュ値を、例えば２つの入力が同じ場合には第１のデジタル値を発出し、２つの入力が同じでない場合には第２のデジタル値を発出する二投入論理ゲートなどの周知の比較法を用いて比較する（すなわち、前記認証エージェントにより作成されたハッシュ値が、ＢＭＣから受信されたハッシュ値と比較される）ように構成されている。前記認証エージェントにより計算されたハッシュ値がＢＭＣにより計算されたハッシュ値と異なる場合には、異常なデバイスが送信を開始したか、送信中にエラーが出たかのいずれかであることが知られている。いずれの場合にも、これは知るに値する貴重な情報である。次に、前記認証エージェントは前記エラーを、エラー・チャネル１１８を経由して送信する。次に前記ＢＭＣは適切な処置、すなわち送信を再送するとか、機密保護違反が生じた場所を探し出すなどの処置をとることができる。仮に、読出しまたは書込みトランザクションがバスで起こり（したがって、前記バスを監視する前記認証エージェントによりスヌープされていて）、前記認証エージェントが前記トランザクションに関して前記ＢＭＣが計算したハッシュ値を受信しない場合には、前記認証エージェントはエラーの生じたことを、エラー・チャネル１１８を経由して前記ＢＭＣへ送信する。
【００１４】
前記認証エージェントおよびＢＭＣは、各バイトの転送に含まれる情報のみを使用してハッシュを計算する必要がある。ＳＴＡＲＴ、ＳＴＯＰ、およびＡＣＫ／ＮＡＣＫのビットは、前記ハッシュの計算に使用してはならない。さらに、前記認証エージェントは、そのハッシュの計算にハッシュ送信トランザクションを含めてはならない。
【００１５】
同じハッシュ・アルゴリズムが前記ＢＭＣと前記認証エージェントの両方に使用される。前記ＢＭＣおよび認証エージェントは、公開鍵暗号方式、あるいはその他任意の周知の暗号技術を選択的に利用して、前記ハッシュを暗号化および復号化することができる。前記ＢＭＣは、公開鍵方法を使用するために、公開鍵と秘密鍵の組を作成することができる。前記公開鍵は前記認証エージェントのキー・レジスタへ送信することができ、前記ＢＭＣは前記秘密鍵を保持する。前記ＢＭＣは、トランザクションの前記ハッシュを計算した後、その秘密鍵を使用して前記ハッシュを暗号化する。次に、前記認証エージェントは前記ＢＭＣの公開鍵を使用して前記ハッシュを復号化する。
【００１６】
上述の実施形態は、Ｉ２Ｃバスで生じるトランザクションを認証できるようにするためのシステムを提供するが、これは先行技術のシステムを越える重要な改良である。ところが、技術に習熟したアタッカなら、認証エージェント１１０が提供する不正検出を回避しようとしてそれを前記Ｉ２Ｃバス１０６から切断することができる。本発明の好適な実施形態によれば、図１のシステムは、前記Ｉ２Ｃバス１０６と前記認証エージェント１１０間で結合された「ウォッチドッグ」・タイマ１２０を追加して構成することができる（タイマ１２０は、オプションであることを示す点線を用いて表示されている）。前記タイマ１２０は、前記認証エージェント１１０が所定の時間枠内にＩ２Ｃトランザクションを受信しない場合には、前記認証エージェント１１０がエラー・チャネル１１８上の前記ＢＭＣ１０２にエラーを表示するように構成されている。例えば、単一の有効トランザクションの長さよりも長い一時停止が前記タイマにより検出されると、前記システムは問題を表示するように構成することができる。
【００１７】
技術に習熟したアタッカならば、前記ＢＭＣ１０２と前記認証エージェント１１０間のエラー・チャネル１１８を切断または送信偽装することもできる。この種の攻撃に応戦するために、好適な実施形態では、前記ＢＭＣ１０２は定期的に無作為なデータを前記認証エージェント１１０にアドレス指定して送信するように構成されている。前記認証エージェント１１０は、この無作為なデータを受理してもそれに対する処置を実行しないように構成されている。次に、前記ＢＭＣ１０２はハッシュを計算して暗号化し、それを通常の方式で前記認証エージェントに送信するが、前記ＢＭＣ１０２は定期的に、送信前に前記ハッシュ値を意図的に破壊する。前記認証エージェント１１０は、破壊された可能性のあるハッシュを復号化し、これを通常のものと比較して、エラーを適宜前記エラー・チャネル１１８に送信する。前記ＢＭＣ１０２は、認証エージェントが作成したハッシュが正確であるか、あるいは不正確であるかを「知っている」ので、前記エラー・チャネル１１８についての適切なエラー応答を予測するであろう。この攻撃の筋書きでは、前記認証エージェント１１０と前記ＢＭＣ１０２間の前記エラー・チャネル１１８が既に切断または送信偽装されているので、そのようなエラー信号は前記ＢＭＣに受信されず、あるいは不正確なエラー信号が前記ＢＭＣに受信され、前記ＢＭＣは問題の発生を想定して修正処置を取るであろう。
【００１８】
図２は、単一のＩ２Ｃバスを複数のＩ２Ｃバスに分割できるようにするために、Ｉ２Ｃマルチプレクサ２０３を使用することを示す。この構成では、複数の認証エージェント２１０Ａ、２１０Ｂ、…２１０ｎが前記Ｉ２Ｃバスに、前記Ｉ２Ｃマルチプレクサ２０３から分割されたＩ２Ｃバス２０６Ａ、２０６Ｂ、…２０６ｎの各々につき１つずつ接続されている。各認証エージェントは、各認証エージェントと前記ＢＭＣ間で通信パス（２１８Ａ、２１８Ｂ、…２１８ｎ）を確立させて、エラー・メッセージを送信できるようにする必要がある。さらに、各認証エージェントは、それに関連するＩ２Ｃバスのタップをオフにして、Ｉ２Ｃバス上でスヌープしハッシング用データを受信できるようにする必要がある。Ｉ２Ｃマルチプレクサ２０３から発している前記Ｉ２Ｃバス２０６Ａ、２０６Ｂ、…２０６ｎの各パスの作用は、図１に関して上述したものと基本的に同じである。図２には示していないが、図１に示すタイマを、必要に応じて各認証エージェント用に含めることができる。
【００１９】
図３は、本発明による書込みトランザクションで実行されるステップを全体として示すフローチャートである。前記プロセスが始まり、ステップ３０２で前記Ｉ２Ｃマスタは、その秘密鍵（ＨＭＡＣ認証用）と、目標のＩ２Ｃデバイスのアドレスと、前記目標のＩ２Ｃデバイスに送信されるデータとを用いてハッシュ値を計算する。次に、前記Ｉ２Ｃマスタはその秘密鍵で前記ハッシュを暗号化する。前記Ｉ２Ｃマスタはステップ３０４において、目標のＩ２Ｃデバイスで前記書込みトランザクションを開始する。
【００２０】
前記認証エージェントはステップ３０６で、前記トランザクションをスヌープし、その秘密鍵と前記トランザクション情報（アドレスおよびデータ）とを用いてハッシュ値を計算する。Ｉ２Ｃマスタはステップ３０８で、前記認証エージェントをアドレス指定して反復スタート・トランザクションをＩ２Ｃバス上で実行し、ステップ３０２で作成された前記Ｉ２Ｃマスタによる計算済みハッシュを書き込む。前記Ｉ２Ｃマスタが、前記認証エージェントをアドレス指定してこれと通信する際に否定確認コード（ＮＡＫ）を受信した場合（ステップ３０９）には、エラー判別のためにステップ３１４に進まなければならない。ＮＡＫが受信されない場合には、前記認証エージェントはステップ３１０において、その鍵でＩ２Ｃマスタのハッシュ値を復号化し、そのハッシュ値をこの認証エージェントが算出したハッシュ値と比較する。
【００２１】
ステップ３１２で、前記ハッシュ値が一致しないか、または、ハッシュが、前記トランザクションがＳＴＯＰコマンドで終了するまでに前記認証エージェントに受信されなかったと判断される場合、前記プロセスはステップ３１４に進み、前記トランザクションは問題があると見なされ、調査が開始される。前記調査が単純なエラーの存在を示すと、前記トランザクションは再送される。前記調査が機密保護違反の危険性を示すと、前記違反を是正する措置を取ることができる。単純なエラーは、全トランザクションを完了し、エラー・チャネルを経由してエラーを受信する前記ＢＭＣにより表示される。機密保護違反は、前記ＢＭＣが関連トランザクションを発出することなしに、エラー・チャネルを経由してエラーを受信することによって表示される。プロセスはその後、下記のステップ３１８に直接進む。
【００２２】
ステップ３１２でハッシュ値が一致すると判断されれば、前記トランザクションはステップ３１６で認証され、救済的な処置は必要にならない。次に、プロセスはステップ３１８に進み、前記バス上で発出されている付加的なトランザクションが存在するか否かについて判断が行われる。前記トランザクションが存在する場合には、プロセスはステップ３０２に戻り、存在しない場合には、前記プロセスは終了する。
【００２３】
図４は、本発明による読出しトランザクションにおいて実行されるステップを、全体として示すフローチャートである。前記プロセスが始まり、ステップ４０２で前記Ｉ２Ｃマスタは、前記目標のＩ２Ｃデバイスをアドレス指定し、前記目標のＩ２Ｃデバイスからのデータの読出しを実行する。ステップ４０４で、前記認証エージェントは前記読出しトランザクションをスヌープし、その秘密鍵（あるいは、「ハッシュ＋暗号化」認証が使用中であれば、認証エージェントはハッシュ演算を実行できる）と前記スヌープされた情報とを用いてハッシュ値を計算する。ステップ４０６で、前記Ｉ２Ｃマスタは、そのハッシュを、その秘密鍵と、そこからデータが読み出された前記Ｉ２Ｃデバイスのアドレスと、そこから読み出されたデータとによって計算する。次に、前記Ｉ２Ｃマスタはその鍵を用いて前記ハッシュを暗号化する。ステップ４０８で、前記Ｉ２Ｃマスタは、前記認証エージェントをアドレス指定して、反復スタート・トランザクションをＩ２Ｃバス上で実行し、前記Ｉ２Ｃマスタによる計算済みハッシュを書き込む。前記Ｉ２Ｃマスタが、前記認証エージェントをアドレス指定してこれと通信する際にＮＡＫを受信した場合（ステップ４０９）には、エラー判定のためにステップ４１４に進まなければならない。
【００２４】
ステップ４０９でＮＡＫが前記Ｉ２Ｃマスタに受信されない場合、ステップ４１０では、前記認証エージェントが前記Ｉ２Ｃマスタのハッシュを復号化し、その結果をその計算済みハッシュ値と比較する。ステップ４１２では、一致が存在しないか、または、前記トランザクションがＳＴＯＰコマンドで終了するまでにハッシュが前記認証エージェントに受信されなかったと判断されると、前記トランザクションには問題があると判断され、前記問題の調査が開始される（ステップ４１４）。ステップ４１２で一致があると判断されれば、前記トランザクションは認証される（ステップ４１６）。
【００２５】
ステップ４１８では、送信されるべき任意の付加的トランザクションが存在するか否かが判断される。付加的トランザクションが存在する場合、前記プロセスはステップ４０２に戻る。付加的トランザクションが存在しなければ、前記プロセスは終了する。
【００２６】
好適な実施形態において、本発明の認証エージェントは、共有鍵復号化エンジン、暗号ハッシュ・エンジン、ハッシュ・レジスタ、および追記型の不揮発性キー・レジスタを含むマイクロコントローラを有することができる。必要に応じて、マイクロコントローラの代わりにＣＰＬＤ、ＡＳＩＣ、またはＦＰＧＡを使用することができる。前記追記型のレジスタは復号化エンジン用の鍵として使用され、読取りはできない。前記デバイスは任意で、前記キー・レジスタのコンテンツを消去するクリア・ピンまたはレジスタ・ビットを実装することができる。前記ハッシュ・エンジンは、共有鍵（ＨＭＡＣ認証用）と前記Ｉ２Ｃバスからのデータとを使用してハッシュ値を算出する。前記ハッシュ値は前記ハッシュ・レジスタ内に保存される。図２に示すように、Ｉ２Ｃマルチプレクサが前記ＢＭＣと前記Ｉ２Ｃスレーブの間に位置する場合、前記認証エージェントは、保護されるデバイスと同一のＩ２Ｃバス上に存在しなければならない。これにより、前記スレーブ・デバイスに対する無許可トランザクションが回避される。
【００２７】
前記暗号ハッシュ・アルゴリズムは、秘密鍵を使用して、前記ハッシュ出力が前記Ｉ２Ｃデータ単独の検査、すなわちＨＭＡＣ認証によっては、容易に再現できないようにすることが好ましい。
【００２８】
動作に先立ち、初期化プロセスを実行して、前記システムは操作用に設定しなければならない。前記システムは、前記ＢＭＣが前記Ｉ２Ｃバス上のプレーン・テキストの鍵を送信するので、物理的に安全な環境で初期化するべきである。例示の初期化プロセスにおいて、前記ＢＭＣはまず前記認証エージェントを初期化するコマンドを受信する。このコマンドには、すべての通信に使用される共有秘密鍵が含まれている。前記ＢＭＣは、この鍵をその不揮発性記憶装置内に保存する。次に前記ＢＭＣは、前記全ての付属認証エージェントの追記型レジスタにこの鍵を書込むプロセスに進む。次に、前記ＢＭＣは、（図３および図４に関して上述したように）Ｉ２Ｃデバイスに対する少なくとも１つの認証済みトランザクションを各バス上で実行することにより、認証エージェントのすべての鍵が適切に書き込まれたことを検証する。認証中にエラーが検出されると、前記認証エージェントの鍵は消去されプログラムが再作成される。前記全ての認証エージェントが検証された後、前記システムは正常操作可能な状態になっている。
【００２９】
別法として、前記ＢＭＣコードおよび認証エージェントはその設計に秘密鍵を組み込ませることができる。これにより前記初期化手続がなくなる。ただし、前記鍵がコード更新できていないことを、周知の方法を使って確認するよう留意しなければならないであろう。
【００３０】
上述のステップは、ハードウェアにおいて、または周知の標準的なプログラミング技術を用いて、あるいはその両方で実施することができる。上述の実施形態の新規性は特定のプログラミング技術にあるのではなく、記述の結果を達成するために記述したステップを使用することにある。本発明を具現化するソフトウェア・プログラミング・コードは代表的には、例えば前記ＢＭＣの永続記憶装置のようなある種の永続記憶装置に保存されている。クライアント／サーバ環境においては、そのようなソフトウェア・プログラミング・コードはサーバ関連の記憶装置に保存することができる。前記ソフトウェア・プログラミング・コードは、例えばＦＤ、またはハード・ドライブ、またはＣＤ‐ＲＯＭなどのデータ処理システムで使用する様々な周知のメディアのいずれにも具現化することができる。前記コードはそのようなメディアで配布することができるか、もしくは、或るコンピュータ・システムのメモリまたは記憶装置から、他のコンピュータ・システムに接続されたある種のネットワークを介して、そのような他のシステムのユーザの使用のために、ユーザに配布することもできる。ソフトウェア・プログラム・コードを物理的メディア上で具現化する技術および方法、またはネットワークを経由してソフトウェア・コードを配布する技術および方法、あるいはその両方は周知であって、本明細書ではそれ以上論じない。
【００３１】
説明図中の各要素、および説明図中の要素の組み合わせは、前記特定の機能またはステップを実行する汎用目的または特殊目的あるいはその両方の、ハードウェア基盤のシステムにより、あるいは、汎用目的または特殊目的あるいはその両方の、ハードウェアとコンピュータ命令の組み合わせにより、実施できることは理解されるであろう。
【００３２】
これらのプログラム命令は、前記プロセッサ上で実行される前記プログラム命令によって前記説明図で記述された機能を実行する手段が付与されるように、機械を製造するプロセッサに提供される。前記コンピュータ・プログラム命令は、一連の操作ステップがコンピュータで実行されるプロセスを産み出すプロセッサによって実行されるように前記プロセッサによって実施され、それによって前記プロセッサ上で実行される前記命令が、前記説明図で特定された機能を実施するステップを提供するようになっている。したがって前記図面は、前記特定の機能を実行する手段の組み合わせと、前記特定の機能を実行するステップの組み合わせと、前記特定の機能を実行するプログラム命令手段とに対応している。
【００３３】
本発明を、その具体的な好ましい実施形態に関して説明したが、当業者には様々な変更および修正を提案することができるとともに、本発明が、添付の請求項の特許請求範囲に含まれるような変更や修正を網羅することが意図されている。
【図面の簡単な説明】
【００３４】
【図１】本発明の基本的アーキテクチャを示すブロック図である。
【図２】単一のＩ２Ｃバスを複数のＩ２Ｃバスに分割できるようにするＩ２Ｃマルチプレクサの使用を示す。
【図３】本発明による書込みトランザクションにおいて実行されるステップを全体として示すフローチャートである。
【図４】本発明による読出しトランザクションにおいて実行されるステップを全体として示すフローチャートである。
【符号の説明】
【００３５】
１０２  ＢＭＣ
１０４  Ｉ２Ｃデバイス
１０８  不揮発性ストレージ
１１０  認証エージェント
１１２  キー・レジスタ
１１３  復号化エンジン
１１４  ハッシュ・レジスタ
１１６  ハッシュ・エンジン
１１８  エラー・チャネル
１２０  タイマ
【図１】
2007174628.tif 000003
【図２】
2007174628.tif 000004
【図３】
2007174628.tif 000005
【図４】
2007174628.tif 000006