(57)【特許請求の範囲】
【請求項１】
第２のコンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）によって第１のコンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）の同一性を検証する方法であって、
前記２のコンピュータが、
・前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に用意されているプログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から受け取るステップであって、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出され、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））である、前記受け取るステップと、
・前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記受け取ったプログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するステップと
を含む方法。
【請求項２】
第１のコンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）の同一性を第２のコンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）に対して開示する方法であって、
前記１のコンピュータが、
・信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に用意されているプログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から前記メッセージ・レシーバ・プログラム（Ｓ）に送るステップを含み、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出され、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））であり、前記プログラム固有識別子（Ｈ（Ｄ））が、前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを前記メッセージ・レシーバ・プログラム（Ｓ）側で検証可能である、方法。
【請求項３】
第２のコンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）を使用して第１のコンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）の同一性を検証する方法であって、
前記１のコンピュータが、
・前記メッセージ・オリジネータ・プログラム（Ｄ）を使用して、信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）にプログラム固有識別子（Ｈ（Ｄ））を用意するステップであって、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出され、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））である、前記用意するステップと
・前記メッセージ・オリジネータ・プログラム（Ｄ）を使用して、前記プログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から前記メッセージ・レシーバ・プログラム（Ｓ）に送るステップと、
前記２のコンピュータが、
・前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記メッセージを受け取るステップと、
・前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記受け取ったプログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するステップと
を含む方法。
【請求項４】
メッセージ・レシーバ・プログラム（Ｓ）が、その後、応答メッセージ・オリジネータ・プログラムになり、
第２のコンピュータが、
・前記信頼コンピューティング基盤（ＴＣＢ）によって前記応答メッセージ・オリジネータ・プログラムに用意されている応答プログラム固有識別子（Ｈ（Ｓ））と、
・前記プログラム固有識別子（Ｈ（Ｄ））が既知として検証されたかどうかの肯定応答と
を含む応答メッセージを前記応答メッセージ・オリジネータ・プログラム（Ｄ）に送る、請求項１ないし３のいずれか一項に記載の方法。
【請求項５】
前記１のコンピュータが、
秘密暗号鍵（ｋ-1）の使用によって、プログラム固有識別子（Ｈ（Ｄ））またはメッセージもしくはその両方に署名するステップをさらに含む、請求項１ないし３のいずれか一項に記載の方法。
【請求項６】
前記２のコンピュータが、
秘密暗号鍵（ｋ-1）の使用によって、プログラム固有識別子（Ｈ（Ｄ））またはメッセージもしくはその両方に署名するステップをさらに含む、請求項４に記載の方法。
【請求項７】
前記メッセージが追加のプログラム固有識別子（Ｈ（Ｇ））をさらに含み、前記追加のプログラム固有識別子（Ｈ（Ｇ））が、秘密暗号鍵（ｋ-1）の使用によって署名される、請求項６に記載の方法。
【請求項８】
前記２のコンピュータが、
前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、公開暗号鍵（ｋ）の使用する、請求項１ないし３のいずれか一項に記載の方法。
【請求項９】
前記１のコンピュータが、
信頼コンピューティング基盤（ＴＣＢ）を使用して、事前に格納されたプログラム固有識別子を含むリストを使用し、
前記２のコンピュータが、
前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記プログラム固有識別子（Ｈ（Ｄ））が前記事前に格納されたプログラム固有識別子の１つと同一であるかどうかを検証する、請求項１ないし３のいずれか一項に記載の方法。
【請求項１０】
前記２のコンピュータが、
前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、事前に格納されたプログラム固有識別子を含むリストを使用し、
前記２のコンピュータが、
前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記プログラム固有識別子（Ｈ（Ｄ））が前記事前に格納されたプログラム固有識別子の１つと同一であるかどうかを検証する、請求項１ないし３のいずれか一項に記載の方法。
【請求項１１】
前記２のコンピュータが、
前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記プログラム固有識別子（Ｈ（Ｄ））が既知として検証されない場合に、拒否メッセージを送る、請求項１ないし３のいずれか一項に記載の方法。
【請求項１２】
前記メッセージ・オリジネータ・プログラム（Ｄ）と前記メッセージ・レシーバ・プログラム（Ｓ）は、ネットワークを介して接続可能であり、前記第１のコンピュータ及び前記第２のコンピュータのそれぞれが信頼コンピューティング基盤（ＴＣＢ）を有し及び前記信頼コンピューティング基盤を使用してプログラム固有暗号識別子を用意する、請求項１ないし３のいずれか一項に記載の方法。
【請求項１３】
前記一方向ハッシュ関数が、ＭＤ５、ＳＨＡ−１、またはＳｎｅｆｒｕである、請求項１ないし３のいずれか一項に記載の方法。
【請求項１４】
第２のコンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）と第１のコンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）との同一性を検証する装置であって、
・メッセージ・レシーバ・プログラム（Ｓ）を格納した第２のコンピュータのメモリと、
・メッセージ・オリジネータ・プログラム（Ｄ）を格納した第１のコンピュータのメモリと、
・計算手段と、
・信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に用意されているプログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から受け取るレシーバ・モジュールであって、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））である、前記レシーバ・モジュールと、
・前記受け取ったプログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するベリファイヤ・モジュールと
を含み、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出される、前記装置。
【請求項１５】
第２のコンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）と第１のコンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）との同一性を開示する装置であって、
・メッセージ・レシーバ・プログラム（Ｓ）を格納した第２のコンピュータのメモリと、
・メッセージ・オリジネータ・プログラム（Ｄ）を格納した第１のコンピュータのメモリと、
・計算手段と、
・プログラム固有識別子（Ｈ（Ｄ））を作成するためのジェネレータ・モジュールを含む信頼コンピューティング基盤（ＴＣＢ）であって、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））である、前記信頼コンピューティング基盤（ＴＣＢ）と、
・前記プログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から送る送信モジュールであって、前記送信されたプログラム固有識別子（Ｈ（Ｄ））が、前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを前記メッセージ・レシーバ・プログラム（Ｓ）側で検証可能である、前記送信モジュールと
を含み、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出される、前記装置。
【請求項１６】
コンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）使用して前記コンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）の同一性を検証する方法であって、
前記コンピュータが、
・前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に用意されているプログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から受け取るステップであって、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出され、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））である、前記受け取るステップと、
・前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記受け取ったプログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するステップと
を含む、前記方法。
【請求項１７】
コンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）の同一性を前記コンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）に対して開示する方法であって、
前記コンピュータが、
・信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に用意されているプログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から前記メッセージ・レシーバ・プログラム（Ｓ）に送るステップを含み、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出され、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））であり、前記プログラム固有識別子（Ｈ（Ｄ））が、前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを前記メッセージ・レシーバ・プログラム（Ｓ）側で検証可能である、前記方法。
【請求項１８】
コンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）によって前記コンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）の同一性を検証する方法であって、
前記コンピュータが、
・前記メッセージ・オリジネータ・プログラム（Ｄ）を使用して、信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）にプログラム固有識別子（Ｈ（Ｄ））を用意するステップであって、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出され、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））であり、前記用意するステップと、
・前記メッセージ・オリジネータ・プログラム（Ｄ）を使用して、前記プログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から前記メッセージ・レシーバ・プログラム（Ｓ）に送るステップと、
・前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記メッセージを受け取るステップと、
・前記メッセージ・レシーバ・プログラム（Ｓ）を使用して、前記受け取ったプログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するステップと
を含む、前記方法。
【請求項１９】
コンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）と前記コンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）との同一性を検証する装置であって、
・メッセージ・レシーバ・プログラム（Ｓ）を格納した前記コンピュータのメモリと、
・メッセージ・オリジネータ・プログラム（Ｄ）を格納した前記コンピュータのメモリと、
・計算手段と、
・信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に用意されているプログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から受け取るレシーバ・モジュールであって、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））である、前記レシーバ・モジュールと、
・前記受け取ったプログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するベリファイヤ・モジュールと
を含み、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出される、前記装置。
【請求項２０】
コンピュータ上で実行されるメッセージ・レシーバ・プログラム（Ｓ）と前記コンピュータ上で実行されるメッセージ・オリジネータ・プログラム（Ｄ）との同一性を開示する装置であって、
・メッセージ・レシーバ・プログラム（Ｓ）を格納した前記コンピュータのメモリと、
・メッセージ・オリジネータ・プログラム（Ｄ）を格納した前記コンピュータのメモリと、
・計算手段と、
・プログラム固有識別子（Ｈ（Ｄ））を作成するためのジェネレータ・モジュールを含む信頼コンピューティング基盤（ＴＣＢ）であって、前記信頼コンピューティング基盤は、メッセージ・オリジネータ・プログラム（Ｄ）からの要求に応答して、前記ハッシュ関数を前記メッセージ・オリジネータ・プログラム（Ｄ）に適用し、そのハッシュ関数の結果が前記プログラム固有識別子（Ｈ（Ｄ））である、前記信頼コンピューティング基盤（ＴＣＢ）と、
・前記プログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から送る送信モジュールであって、前記送信されたプログラム固有識別子（Ｈ（Ｄ））が、前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを前記メッセージ・レシーバ・プログラム（Ｓ）側で検証可能である、前記送信モジュールと
を含み、前記プログラム固有識別子（Ｈ（Ｄ））は、メッセージ・オリジネータ・プログラム（Ｄ）に一方向ハッシュ関数である暗号関数（Ｈ）を適用することによって導出される、前記装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ上のプログラムおよびアプリケーションのセキュアかつ信頼される処理に関する。具体的には、本発明は、別のプログラムに対してプログラムを識別する機構に関する。
【０００２】
【従来の技術】
従来のコンピュータおよびコンピュータ・システム、特に定義済みネットワーク内の接続されたシステムは、システム管理者によって管理される。現在使用されているアクセス制御機構は、システム管理者によって決定されるセキュリティ・ポリシーに基づいて、ユーザを互いに分離することに焦点を合わせている。一部のシステム、主に軍用システムは、より微細な粒度のアクセス制御ポリシーを可能にして、個々のユーザの異なる態様の分離を可能にしているが、これらのシステムは、その複雑さのゆえに管理者にとって非現実的に高価になっている。その結果、これらのシステムのアクセス制御機構は、広く採用されてはいない。
【０００３】
さまざまなデータベースおよびＪａｖａで使用可能なアクセス制御方式は、データおよびオブジェクトのより微細な粒度の制御を提供するが、システム・レベルでのアクセス制御の一般的な問題を解決しない。
【０００４】
ほとんどのパーソナル・コンピュータ（ＰＣ）は、セキュリティの問題を十分に解決することができない。ＤＯＳ、Ｗｉｎｄｏｗｓ、およびＭａｃＯＳを含むＰＣオペレーティング・システムは、大量のウィルス、トロイの木馬、および他の悪意のあるソフトウェア（マルウェアとも称する）によって襲撃されてきた。そのようなマルウェアの公開および使用は、本質的に、破壊行為の１形態であり、その危険性は、インターネットの使用に伴って増大する。
【０００５】
経済的に意味のあるトランザクションでそのようなシステムが使用される場合、攻撃者にとってはるかに大きい利益があり、したがって、はるかに大きい誘因がある。したがって、セキュリティの必要は絶対的であり、これによって適当なアクセス制御機構の必要が生じる。
【０００６】
ＰＤＡと略されることもある携帯情報端末などのハンド・ヘルド・デバイスは、そのフォーム・ファクタおよび使用法の特性から、多くのe-commerceアプリケーションでの使用に非常に望ましいものになっている。残念ながら、現在のＰＤＡオペレーティング・システムは、e-commerceアプリケーションに必要なセキュリティを提供しない。ＰＤＡが、強力な汎用計算装置であるという事実そのもののゆえに、ＰＤＡは攻撃に対して脆弱である。ＰＤＡに基づくe-commerceシステムは、すべての範囲の攻撃に対して潜在的に脆弱であり、このために、スマートカードなどのＰＤＡに含まれる他のシステムも危険にさらされる可能性がある。
【０００７】
一般に、システム管理者は、特定のプログラムまたはユーザをどれほど信頼できるかを決定しなければならない。この決定には、プログラムを特権付きでインストールするためにどれほどの信頼が必要であるかを決定する際の、システムにある情報リソースの価値の検討が含まれる。システム管理者が、システムおよび特権を継続的に更新しなければならないことが短所である。
【０００８】
米国特許第３９９６４４９号明細書は、コンピュータにロードされるオペレーティング・システムが有効であるかどうかを判定するオペレーティング・システム認証機構に関する。オペレーティング・システムに固有のユーザの識別コードまたは秘密鍵と、有効なオペレーティング・システムおよび識別コードの所定の関数であるベリファイヤ値が、それぞれ記憶される。ロードされるオペレーティング・システムと識別コードの関数であるハッシュ関数が、認証機構によって生成される。オペレーティング・システムをロードした後に、ハッシュ関数を認証値として使用し、ベリファイヤ値と比較して、ロードされるオペレーティング・システムの認証性を判定する。
【０００９】
米国特許第５１１３４４２号明細書に、複数のユーザの間でアクセス権を制御する方法およびこの方法を使用するオペレーティング・システムが記載されている。各ユーザは、素数であるユーザ識別番号を与えられ、各セキュア・オブジェクトは、そのセキュア・オブジェクトに対する同一のアクセス権を有する全ユーザのユーザ識別番号の積である値を含むアクセス・コードを与えられる。セキュア・オブジェクトへのアクセスを求めるユーザによる要求に応答して、そのセキュア・オブジェクトのアクセス・コードを、要求元ユーザのユーザ識別番号で割る。要求されたセキュア・オブジェクトへのユーザのアクセス権は、除算の結果が０の剰余をもたらすかどうかに基づいて決定される。
【００１０】
用語集
以下は、以下の説明の理解を助けるための略式の定義である。
【００１１】
ハッシュ関数とは、任意の長さのバイナリ・ストリングをある固定長のバイナリ・ストリングにマッピングする、計算的に効率的な関数である。
【００１２】
一方向ハッシュ関数とは、可変長のメッセージＭまたは何らかのデータを受け取り、ハッシュまたは固有識別子とも称する固定長の値を作る関数である。固有識別子を与えられて、その固有識別子を用いてメッセージを見つけることは、計算的に実行不可能である。実際、その固有識別子を用いてメッセージＭに関する有用な情報を判定することはできない。言い換えると、そのような固有識別子を作成する時間は、固有識別子から可変長メッセージを再構成する時間よりかなり短い。さらに、２つの同一の固有識別子を見つける時間は、１つの固有識別子を作成する時間よりかなり長い。
【００１３】
信頼コンピューティング基盤（ＴＣＢ）とは、それらの組合せがセキュリティ・ポリシを実施する責任を負うハードウェア、ファームウェア、およびソフトウェアを含むコンピュータ・システム内の保護機構の完全性を指す。
【００１４】
【発明が解決しようとする課題】
本発明の目的は、従来技術の短所を克服することである。
【００１５】
本発明のもう１つの目的は、コンピュータ・システムまたは分散システムでのプログラムのセキュア・アクセス制御の機構を提供することである。
【００１６】
本発明のもう１つの目的は、システム管理者を必要としないアクセス制御機構を提供することである。
【００１７】
本発明のもう１つの目的は、スプーフ不能であり、したがってセキュアな形で動作するアクセス制御機構を提供することである。
【００１８】
本発明のもう１つの目的は、コンピュータ上のプログラムの同一性を、同一のまたは異なるコンピュータ上の別のプログラムに対して検証する方法および装置を提供することである。
【００１９】
【課題を解決するための手段】
本発明の目的は、同封の独立請求項で規定される特徴によって達成される。さらに有利な実施形態は、めいめいの従属請求項に示されている。
【００２０】
本発明は、コンピュータまたは分散コンピュータでのセキュア・アクセス制御のための一般的で柔軟な機構を提供する。コンピュータに言及する時には、すべての種類のコンピュータが、ＴＣＢと省略される信頼コンピューティング基盤を有することを意味する。そのようなコンピュータは、ネットワークのメンバとすることができ、複数のセキュア・ドメインまたはセキュア・アプリケーションをサポートすることができる。
【００２１】
本発明の基本概念は、コンピュータが、暗号関数すなわち、一方向ハッシュ関数とも称する暗号チェックサムを使用して、プログラム固有の暗号識別子または省略形でプログラム固有識別子を自動的に生成し、これを用いてアクセス制御機構の基礎を形成することである。これらのプログラム固有識別子は、プログラムの名前とみなすことができ、プログラムにハッシュ関数を適用することによって得られる。出力のプログラム固有識別子は、ハッシュ値とも称するが、オンザフライで格納、キャッシュ記憶、または導出することができる、特定のプログラムについて実質的に一意の値である。一般に、名前は、信頼コンピューティング基盤によって、より詳細にはオペレーティング・システムによって用意される。暗号関数は、少なくとも以下の判断基準を満たす。そのような固有識別子を作成する時間が、固有識別子からプログラムまたはその一部を再構成する時間よりかなり短い。さらに、２つの同一の固有識別子を見つける時間が、１つの固有識別子を作成する時間よりかなり長い。
【００２２】
この機構は、次の形で稼動する。メッセージ・オリジネータ・プログラムが、その派生名を含むメッセージを、メッセージ・レシーバ・プログラムに送る。名前は、オペレーティング・システムによって与えられ、送出中または転送中にメッセージに追加することができる。メッセージを受け取った後に、名前は、メッセージ・レシーバ・プログラムまたは信頼コンピューティング基盤もしくはその両方に既知であるかどうかを検証される。それを行うことによって、特殊な要求を含めることができるメッセージを、検証に応じて受け入れるか拒否することができる。メッセージに対する応答について、メッセージ・レシーバ・プログラムは、いわゆる応答メッセージ・オリジネータ・プログラムに変化する、すなわち、メッセージ・レシーバ・プログラムが、メッセージ・オリジネータ・プログラムになり、その固有名を用いてメッセージ応答を送る。
【００２３】
プログラムとは、アプリケーション・プログラム、Ｊａｖａベース・プログラム、または仮想マシンなど、コンピュータ上で稼動することができるすべての種類のコードまたはソフトウェアと理解される。
【００２４】
本発明の機構は、スプーフ可能でない、簡単に実施されるなど、複数の長所を示す。名前が信頼コンピューティング基盤によって自動的に作成されるので、システム管理者の仕事は冗長になる。複数のドメインまたはアプリケーションが、セキュアでないプログラムによって攻撃可能にならずに同一のコンピュータ上で稼動することができるので、一般に、コンピュータの信頼性を劇的に高めることができ、コンピュータを安全で信頼性のある装置にすることができる。
【００２５】
本発明の機構を使用することによって、疑わしいプログラムおよび攻撃プログラムなどの、制御されず、潜在的にセキュアでないプログラムが、コンピュータの制御を奪うことができず、機密のプログラムおよびアプリケーションに干渉することができなくなる。
【００２６】
一方で、プログラム固有識別子すなわちプログラム固有名が、メッセージ・レシーバ・プログラムに既知であり、もう一方で、受入または肯定応答と、メッセージ・オリジネータ・プログラムに既知の応答プログラム固有識別子を含む応答メッセージが送られる場合に、両方のプログラムがお互いを信頼することができ、これによって、メッセージ・レシーバ・プログラムが、メッセージ・オリジネータ・プログラムと進んでインターオぺレートするという長所が生ずる。両方のプログラムの間の信頼される通信を簡単にセット・アップすることができる。
【００２７】
上述のプログラム固有識別子は、メッセージ・オリジネータ・プログラムに第１ハッシュ関数を適用することによって導出可能であり、応答プログラム固有識別子は、メッセージ・レシーバ・プログラムに第２ハッシュ関数を適用することによって導出可能である。これが有利であることがわかる。というのは、一般に、さまざまなハッシュ関数を適用して、プログラム固有識別子を作成することができ、したがって、この機構が特殊なタイプのハッシュ関数に制限されないからである。唯一の前提は、通信をセット・アップするために、プログラム固有識別子が、メッセージ・レシーバ・プログラムに既知でなければならないことである。
【００２８】
それにもかかわらず、適用されるハッシュ関数を、同一にすることもでき、これによって、ＭＤ５またはＳＨＡ−１などの一方向ハッシュ関数が適用可能になる。そのようなハッシュ関数は、周知であり、信頼性のある形で動作し、ユーザまたは計算時間全般に著しい影響を及ぼすことなく、ミリ秒単位の時間で処理することができるすなわち、プログラムに適用することができる。
【００２９】
ハッシュ関数ジェネレータは、プログラム固有識別子が、信頼コンピューティング基盤によって自動的に導出され、用意されるように、この信頼コンピューティング基盤内で実施されなければならない。基礎となるセキュリティ・ポリシに基づいて、攻撃者は、信頼コンピューティング基盤を迂回することも密かに傷つけることもできない。
【００３０】
プログラム固有識別子またはメッセージもしくはその両方が、秘密暗号鍵の使用によって署名されるならば有利である。それを行うことによって、異なるプログラムの間の相互信頼を、簡単に確立し、セット・アップすることができる。さらに、任意の信頼関係を作成することができ、これによって、ユーザが何も構成しなくてよいことが特に有利である。
【００３１】
秘密暗号鍵によって署名された追加のプログラム固有識別子を、メッセージ内で送る場合も有利である。というのは、メッセージ・レシーバ・プログラムが、開発者によって、保護された形で管理可能になり、これによって、追加の信頼されるプログラムをインストールでき、それを用いて信頼されるドメインまたは信頼されるアプリケーションを簡単にセットアップできるからである。言い換えると、同一の開発者から来る異なるプログラムが、お互いを信頼し、相互信頼関係を作成することができる。
【００３２】
メッセージ・レシーバ・プログラムまたは信頼コンピューティング基盤もしくはその両方が、公開暗号鍵を有することができ、それを用いて応答に署名することができる。これは、要求側プログラムであるメッセージ・オリジネータ・プログラムが、正しく記述されている場合に、メッセージ・レシーバ・プログラムまたは信頼コンピューティング基盤もしくはその両方が、ユーザによって許可された文書についてのみ署名を生成することを暗示する。
【００３３】
プログラム固有識別子が、リストまたはデータベースに事前に格納される場合、この識別子への高速アクセスをもたらすことができ、したがって高速の検証をもたらすことができる。これは、信頼されるプログラム固有識別子が、信頼コンピューティング基盤内で配布またはインストールされる場合、またはコンピュータが初めて初期化される時にも有利である。
【００３４】
プログラム固有識別子が、メッセージ・レシーバ・プログラムまたは信頼コンピューティング基盤に未知である場合には、メッセージまたは要求が拒否され、たとえばメッセージ・オリジネータ・プログラムに０が返される。これは、メッセージ・オリジネータ・プログラムが、信頼されるプログラムではなく、疑わしいか危険である可能性があることを暗示する。そのようなプログラムについて、特殊なドメインを作成することができる。しかし、やはり、決定的な点は、そのようなプログラムが、他のものすなわち、たとえば信頼されるプログラム、関係する文書、またはコンピュータ上のプライベートな記録に干渉できないことである。
【００３５】
【発明の実施の形態】
全般的に図面を参照し、特に図１を参照して、暗号関数を使用する、コンピュータのためのアクセス制御機構の本質的特徴を下で詳細に説明する。まず、一般的な点を扱う。
【００３６】
ハッシュ関数
ハッシュ関数は、任意の長さのバイナリ・ストリングをある固定長のバイナリ・ストリングにマッピングする、計算的に効率的な関数である。
【００３７】
一方向ハッシュ関数
一方向ハッシュ関数とは、可変長のメッセージを受け取り、固定長のハッシュまたは値を作る関数である。したがって、ｈ＝Ｈ（Ｍ）であり、ここで、Ｈは一方向ハッシュ関数、Ｍはメッセージ、ｈはメッセージＭのハッシュ値である。
【００３８】
ハッシュｈを与えられて、そのハッシュを有するメッセージＭを見つけることは、計算的に実行不可能である。実際に、そのハッシュを用いてメッセージＭに関する有用な情報を判定することはできない。いくつかの一方向ハッシュ関数の場合、同一のハッシュを作る２つのメッセージを判定することも、計算的に実行不可能である。さらに、一方向ハッシュ関数は、暗号関数と同様に、公開または秘密とすることができる。ＭＤ５、ＳＨＡ−１、およびＳｎｅｆｒｕが、公開一方向ハッシュ関数の例である。
【００３９】
そのような一方向ハッシュ関数が、任意のプログラムとすることができるプログラムＥに適用される場合に、出力のハッシュ値ｈは、実質的に一意の値になり、これをプログラム固有識別子とも呼ぶ。このプログラム固有識別子は、特定のプログラムＥに与えられた名前とみなすこともできる。言い換えると、プログラムＥは、バイト・ストリームＥ＝｛ｂ0、ｂ1、ｂ2、…｝と見なすことができるが、これをその実質的に一意の名前Ｈ（Ｅ）と関連付けることができる。プログラムＥが実行される時には、プログラムＥは、ラベルＨ（Ｅ）を用いて実行される。プログラムＥによって作成される永続データは、プログラムＥからのみアクセス可能であり、やはり名前Ｈ（Ｅ）をもつ。
【００４０】
たとえば上で述べた一方向ハッシュ関数ＳＨＡ−１を使用すると、２つの同一のプログラム固有識別子が見つかる確率は、約１対２80であり、所与のプログラムに対して同一のプログラム固有識別子を有する別のプログラムが見つかる確率は、約１対２160である。
【００４１】
信頼コンピューティング基盤（ＴＣＢ）
信頼コンピューティング基盤（ＴＣＢと略記する場合もある）とは、それらの組合せがセキュリティ・ポリシを実施する責任を負うハードウェア、ファームウェア、およびソフトウェアを含むコンピュータ・システム内の保護機構の完全性を指す。オペレーティング・システムは信頼コンピューティング基盤の一部である。セキュリティ・ポリシは、信頼コンピューティング基盤を迂回または密かに傷つけることができない、すなわち、攻撃に対してセキュアであることを必要とする。
【００４２】
本発明のアクセス制御機構は、一般に、コンピュータ内およびコンピュータ・システム内で使用することができる。コンピュータに言及する時には、ローカル・ネットワークのメンバになることができるすべての種類の装置を意味する。装置の例が、ラップトップ・コンピュータ、ワークパッド、ノードパッド、携帯情報端末（ＰＤＡ）、ノートブック・コンピュータおよび他のウェアラブル・コンピュータ、デスクトップ・コンピュータ、コンピュータ端末、ネットワーク接続されたコンピュータ、インターネット端末および他の計算システム、セットトップ・ボックス、キャッシュ・レジスタ、バー・コード・スキャナ、ＰＯＳ端末、キオスク・システム、セルラ電話、ポケットベル、腕時計、ディジタル時計、バッジ、スマートカード、および他のハンドヘルド・デバイスおよび組込装置である。検討される他の装置には、ヘッドセット、ヒューマン・インターフェース・デバイス（Human Interface Device、ＨＩＤ）準拠周辺機器、データ・アクセス・ポイントおよびボイス・アクセス・ポイント、カメラ、プリンタ、ファクシミリ機、キーボード、ジョイスティック、調理器具、工具、煙検出器または炎検出器などのセンサ、および事実上あらゆる他のディジタル装置が含まれる。
【００４３】
本発明に関連して使用することができるウェアラブル・コンピュータの他の例が、「スモール・ウォレット（smart wallet）」コンピュータ、宝石、または衣類などのコンピュータ様ハードウェアを備えた所持品である。「スモール・ウォレット」コンピュータのほかに、ウェアラブル・コンピュータの多数の他の変形形態がある。「ベルト」コンピュータは、ユーザが移動中に文書のサーフィン、口述筆記、および編集を行えるようにする、そのような変形形態である。もう１つの例が、小学生の携帯情報端末に相当する子供のコンピュータである。子供のコンピュータは、宿題を保持し、計算を実行し、子供が宿題を管理するのを助けることができる。子供のコンピュータは、他の子供のコンピュータとインターフェースして共同作業を促進することができ、教師のコンピュータにアクセスして宿題またはフィードバックをダウンロードすることができる。ウェアラブル・デバイスまたはポータブル・デバイス、オフィス・ツールまたはオフィス機器、家庭のツールまたは機器、自動車内で使用するシステム、または、公共の場で使用するシステム（自動販売機、券売機、自動預金支払機）を、本発明に関連して使用することができる。
【００４４】
本発明の理解を助けるために、図１に、コンピュータ２の高水準ブロック図を示す。
【００４５】
コンピュータ２には、１つまたは複数の中央処理装置（ＣＰＵ）６、ランダム・アクセス・メモリ（ＲＡＭ）８、および入出力（Ｉ／Ｏ）インターフェース１０などのハードウェア構成要素４が含まれる。コンピュータ２には、オペレーティング・システム２０も含まれる。２次ストレージ装置１２（ハード・ディスクなど）、入力装置１４（キーボード、マウス、タッチ・スクリーン、マイクロフォン、赤外線受信器、またはＲＦ受信器など）、表示装置１６（モニタ、またはＬＣＤディスプレイなど）、および出力装置１８（プリンタ、赤外線送信器、またはＲＦ送信器など）などのさまざまな周辺装置が、コンピュータ２に接続される。スマートカード・デバイスも、入出力装置１４、１８に結合することができる。複数のプログラム２２、２４、および２６が、コンピュータ２内で実行される。プログラム２２、２４、および２６は、コンピュータ２内で順次実行することができるが、コンピュータ・システム２内で並列に実行されることが好ましい。
【００４６】
ハードウェア構成要素４およびオペレーティング・システム２０が、セキュアで信頼されるコンピューティングの基礎を構成する信頼コンピューティング基盤ＴＣＢを形成する。信頼コンピューティング基盤内に、プログラム固有識別子を作成するジェネレータ・モジュール２１が実施される。このジェネレータ・モジュール２１は、基本的に、ソフトウェアならびにハードウェアで実施することができる暗号関数ジェネレータ２１である。ハッシュ関数、好ましくは上で述べた一方向ハッシュ関数の適用によるハッシュ値の生成は、プロセッサにとって時間を消費しないので、暗号関数ジェネレータ２１は、オペレーティング・システム２０自体の中で実施することができる。実質的に一意の値を出力するものであれば、どの暗号関数でも適する。
【００４７】
図１に関連して説明したコンピュータ２の構造は、以下の実施形態で使用することができる、基礎となる装置とみなされる。
【００４８】
さらに図２を参照するが、図２は、メッセージの交換を示す高水準概略図である。いくつかの基本を、以下で説明する。メッセージ・オリジネータ・プログラムＤが、別のプログラム、ここではメッセージ・レシーバ・プログラムＳとの通信を求めている。メッセージ・レシーバ・プログラムＳは、１つまたは複数のプログラム固有識別子を知っている。これらの識別子は、事前に記憶するかキャッシュ記憶することができ、オペレーティング・システム２０に既知にすることもできる。まず、メッセージ・オリジネータ・プログラムＤが、メッセージ・レシーバ・プログラムＳに、メッセージ内で要求ｍを送る。これによって、オペレーティング・システム２０の一部としてのジェネレータ・モジュール２１が、メッセージ・オリジネータ・プログラムＤからプログラム固有識別子Ｈ（Ｄ）を導出し、Ｈ（Ｄ）、ｍという符号を付された矢印によって示されるように、このプログラム固有識別子Ｈ（Ｄ）をメッセージに追加する。
【００４９】
一般に、オペレーティング・システム２０は、メッセージ・オリジネータ・プログラムによってメッセージ・レシーバ・プログラムに送られるすべての要求に、メッセージ・レシーバ・プログラムによって検証または識別することができるメッセージ・オリジネータ・プログラムのめいめいのプログラム固有識別子を追加する。
【００５０】
図を簡単にするために、ジェネレータ・モジュール２１は、図２に図示されていない。プログラム固有識別子Ｈ（Ｄ）は、メッセージ・オリジネータ・プログラムＤから事前に格納することもできる。プログラム固有識別子Ｈ（Ｄ）および要求ｍを含むメッセージを受け取った後に、メッセージ・レシーバ・プログラムＳは、プログラム固有識別子Ｈ（Ｄ）の抽出を試み、これを既知の識別子を用いて検証する。プログラム固有識別子Ｈ（Ｄ）が、メッセージ・レシーバ・プログラムＳに既知である（これを箱Ｓ内のＨ（Ｄ）によって示す）場合には、メッセージ・レシーバ・プログラムＳは、メッセージ・オリジネータ・プログラムＤとのその後の通信を受け入れる。そのために、メッセージ・レシーバ・プログラムＳは、応答ｎおよびそのプログラム固有識別子Ｈ（Ｓ）（応答プログラム固有識別子Ｈ（Ｓ）とも称する）を含む応答メッセージを、箱Ｓから箱Ｄへの矢印によって示されるように、メッセージ・オリジネータ・プログラムＤに送る。それに関して、応答プログラム固有識別子Ｈ（Ｓ）は、オペレーティング・システム２０によって供給される。メッセージ・オリジネータ・プログラムＤおよびメッセージ・レシーバ・プログラムＳは、ネットワークを介して接続可能な異なるコンピュータまたはシステム上で実行することができるので、各プログラムＤおよびＳは、プログラム固有識別子を提供する各プログラムの信頼コンピューティング基盤を有することができる。ネットワークへの接続は、ワイヤ、赤外線、無線などの当技術分野で既知の手段によって提供される。
【００５１】
以下では、本発明のさまざまな例示的実施形態を説明する。
【００５２】
図３に、鍵を使用する購入シナリオの概略図を示す。信頼コンピューティング基盤に基づき、それと共にオペレーティング・システム２０上で、ここでブラウズＢ、表示Ｄ、および署名Ｓと呼ぶ、コンパートメント内の複数のプログラムまたはアプリケーションが稼動する。この実施形態の基礎になる概念は、誰でも何かを要求することができなければならないということである。表示Ｄおよび署名Ｓは、セキュア・コンパートメント内で稼動し、したがって、信頼できるが、ブラウズＢはそうではないので、ブラウズＢまたは他のプログラムは、表示Ｄに要求を送ることができる。
【００５３】
たとえば、署名が必要な時には、文書がセキュア・コンパートメントの表示Ｄおよび署名Ｓに渡され、表示、許可、および署名生成が行われる。この方式のセキュリティは、署名Ｓおよび表示Ｄのコンパートメントと、それがユーザに情報を表示する能力と、署名コンパートメントが表示Ｄからの要求を受け入れる能力だけに依存する。署名Ｓは、箱Ｓ内に示されている署名鍵ｋへのアクセスだけを必要とする。
【００５４】
ユーザにデータを表示する表示Ｄコンパートメントの能力は、２つの主な前提すなわち、コンパートメントに表示Ｄに対するリソース・ロックを含めることができることと、データ自体が単一の明瞭に定義された意味を有することを有する。表示Ｄをロックする能力は、トロイの木馬の脅威を減らすのに有用である。システム・リソースに対する排他ロックの許可によって、悪意を持ったコードが、システムをソフト的またはハード的のいずれかでロックし、これによってサービス拒否攻撃を計画的に実施できるようになる。すべてのシステム・ロックがソフト・ロックになることを強制できると仮定すると、この脅威は、人の関心を引かなくなる。したがって、主な問題は、システムが十分な数のリソースをロックできなければならないということになる。これらのリソースには、ディスプレイ、タッチ・スクリーン、さまざまな他のＩ／Ｏデバイス、メモリ・ページなどが含まれる。
【００５５】
署名Ｓは、その鍵ｋを保護でき、管理できなければならず、文書に署名する要求がブラウズＢからのものであることを保証できなければならない。これらのデータの保護および管理は、これらのデータが、署名の外部インターフェースを介してのみ他のコンパートメントからアクセス可能にならなければならないことを意味する。これによって、システムのいくつかの低水準特性が暗示される。すなわち、システムは、メモリへの生のアクセスを許可してはならず、メッセージの保全性（ＩＰＣ）が維持されなければならず、システム・リソースへのアクセスが、完全な特権を使用しないことである。
【００５６】
上で説明した、コンパートメントごとのプログラム固有識別子を生成する方式を使用することによって、命名システムが提供され、その結果、コンパートメントの間に明瞭に定義された相違が存在することになる。
【００５７】
ユーザが、品目を選択し、購入したいと思っていると仮定する。品目は、ブラウザＢを使用して選択することができ、このブラウザＢは、図１に関して示したコンピュータに基づくことができるＰＤＡ（携帯情報端末）上で稼動するＷＡＰ（Wireless Applications Protocol）のブラウザである。ブラウザは、信頼されないユーザによって供給される複合データを操作する極度に洗練されたソフトウェアである。しかし、ブラウザＢが、支払い許可の条件について表示Ｄおよび署名Ｓに渡される要求を生成することが可能である。そのため、ブラウザＢは、メッセージ内の文書に署名する要求ｍを表示Ｄに送り、これによって、オペレーティング・システム２０が、要求ｍにブラウザＢのプログラム固有識別子Ｈ（Ｂ）を付加する。これは、Ｈ（Ｂ）、ｍという符号を付された矢印によって示されている。
【００５８】
ブラウザＢと比較して小さいソフトウェアである表示Ｄは、Ｈ（Ｄ）、ｍという符号を付された矢印によって示されるように、要求ｍをそのプログラム固有識別子Ｈ（Ｄ）と共に転送する。署名コンパートメントである署名Ｓは、スマートカードとすることができるが、それが知っているプログラム固有識別子を用いて受け取ったメッセージを検証する。プログラム固有識別子Ｈ（Ｄ）が、署名Ｓに既知である（これは箱ＳのＨ（Ｄ）によって示される）時には、要求ｍが受け入れられる。さらに、表示Ｄが、正しく記述されている場合には、署名Ｓは、ユーザによって許可された文書だけについて署名を生成する。
【００５９】
鍵ｋの下での要求ｍに対する署名を、ｋ-1と表す。署名Ｓは、要求ｍに署名し、それをそのプログラム固有識別子と共に表示Ｄに送る。これは、Ｈ（Ｓ）、ｋ-1ｍという符号を付された矢印によって示されている。さらに、表示Ｄは、Ｈ（Ｄ）、ｋ-1ｍという符号を付された矢印によって示されているように、そのプログラム固有識別子と共に、署名された要求をブラウザＢに渡す。
【００６０】
図４に、ハッシュを使用するアクセス制御を有するファイル・システム・オブジェクトの概略図を示す。当然、異なるアプリケーション（以下ではオブジェクトとも称する）が、データを共用する必要がある。図４には、永続オブジェクトすなわち、オブジェクトＡ、オブジェクトＦ、およびオブジェクトＧが示されており、オブジェクトＡおよびオブジェクトＧは、信頼されるオブジェクトであるオブジェクトＦに接続されている。さらに、オブジェクトＦは、オブジェクトＡの項目だけを有するアクセス制御リスト４０を有する。オブジェクトＦは、それぞれＨ（Ａ）、ｒ（ｎ1）およびＨ（Ｇ）、ｒ（ｎ2）という符号を付された、オブジェクトＦに向かう矢印によって示されるように、どちらもがめいめいのプログラム固有識別子Ｈ（Ａ）およびＨ（Ｇ）を伴う２つの読取要求ｒ（ｎ1）およびｒ（ｎ2）を受け取る。第１の要求ｒ（ｎ1）は、オブジェクトＡから来るものであり、オブジェクトＦのアクセス制御リスト４０に現れる。これは、許可され、Ｈ（Ｆ）、ｄ1という符号を付された矢印によって示されるように、オブジェクトＦによってｄ1が返される。第２の要求ｒ（ｎ2）は、オブジェクトＧから来るものであり、オブジェクトＦのアクセス制御リスト４０には現れない。したがって、第２の要求ｒ（ｎ2）は拒否され、Ｈ（Ｆ）、０という符号を付された矢印によって示されるように、ヌルが返される。読取特権と書込特権について異なるアクセス制御リストを保持することができる。
【００６１】
一般に、豊富なメソッドのセットを有するより複雑なオブジェクトＦが、同一のタイプの構成を使用して、所望のアクセス制御ポリシを実施することができる。
【００６２】
図４には、信頼されるオブジェクトの集合を更新することが許可されない静的セットアップが示されているが、図５に、図４の構成に基づく、動的セットアップのためのファイル・システム・オブジェクトを示す。
【００６３】
図５の構成は、ディジタル署名を使用して更新することができる。したがって、オブジェクトＦは、箱Ｆに示されているように、公開鍵Ｋを有する。オブジェクトＦおよびオブジェクトＧは、第１オペレーティング・システム４２に基づき、オブジェクトＣとも称するヘルパ・アプリケーションは、当技術分野で既知のチャネル４６によって接続される第２オペレーティング・システム４４に基づく。第１オペレーティング・システム４２は、ユーザ側で稼動し、第２オペレーティング・システム４４は、開発者または信頼される当事者側で稼動する。オブジェクトＣは、オブジェクトＦへのｋ-1Ｈ（Ｇ）の配布に使用され、このｋ-1は秘密鍵であり、オブジェクトＦは、署名の有効性を検証し、オブジェクトＧのプログラム固有識別子Ｈ（Ｇ）をアクセス制御リスト４０に追加する。めいめいの矢印によって示されるように、オブジェクトＧからオブジェクトＦへのＨ（Ｇ）、ｒ（ｎ1）などのアクセス要求が、オブジェクトＦによって許可されるようになり、オブジェクトＦは、Ｈ（Ｆ）、ｄ1を返す。
【００６４】
この構成は、署名が有効である限り、ディジタル署名を担持するものが信頼される必要はないという事実に依存する。
【００６５】
まさにこの事実を使用して、ヘルパ・アプリケーションを使用する任意の複雑さを有する信頼関係をセット・アップすることができる。
【００６６】
図６は、オブジェクトＡとオブジェクトＧの間の相互信頼（ＭＴ）関係をセット・アップするのに、ここでもオブジェクトＣであるヘルパ・アプリケーションを使用する実施形態の概略図を示す。オブジェクトＡおよびＧの両方が、それぞれオブジェクトＡおよびＧの下に示されているように、公開鍵ｋおよびそれ自体の固有のアクセス制御リストを有する。ヘルパ・アプリケーションとしてオブジェクトＣを使用すると、オブジェクトＣは、そのプログラム固有識別子Ｈ（Ｃ）と共にｋ-1Ｈ（Ｇ）をオブジェクトＡに配布し、オブジェクトＡは、署名の有効性を検証し、そのアクセス制御リストにプログラム固有識別子Ｈ（Ｇ）を追加する。その一方で、オブジェクトＣは、そのプログラム固有識別子Ｈ（Ｃ）と共にｋ-1Ｈ（Ａ）をオブジェクトＧに配布し、オブジェクトＧは、署名の有効性を検証し、そのアクセス制御リストにプログラム固有識別子Ｈ（Ａ）を追加する。その後の通信について、オブジェクトＡは、オブジェクトＧに直接に連絡でき、その逆も可能である。というのは、オブジェクトＡおよびＧが、箱ＡおよびＧの間の破線によって示されるように、お互いを知り、信頼するからである。
【００６７】
図６に関連して説明した方式は、鍵、証明書、開発者登録などの御しにくいヒエラルキーを必要とする従来のコード署名と同一ではない。この方式は、コード署名を使用してシステム特権を判定するのではなく、開発者ソフトウェア仲間の証明書として署名を使用する。
【００６８】
これが有用になる可能性がある例が、銀行が、共通鍵を共用することを望む複数の支払方式を有する場合である。個々の構成要素を、個別に更新することができる。
【００６９】
下の実施形態で、暗号関数に基づくアクセス制御機能を使用する、ディジタル署名を使用する支払システムの設計を説明する。このシステムは、ＷＡＰ自体のセキュリティに依存せずにＷＡＰを介して使用されるように設計されている。下記で、複数のステップを示す。
【００７０】
グローバル・セットアップ
銀行の初期セットアップは、非常に侵入的ではない。というのは、銀行が、装置を作成したものすなわち、ＰＤＡまたはコンピュータの製造業者と連絡する必要がないからである。
【００７１】
１．銀行は、個々のユーザ鍵に署名するための公開鍵／秘密鍵対を生成する。この鍵対を、ｍｋ／ｍｋ-1と表す。これは、銀行のマスタ鍵またはその派生物とすることができる。
【００７２】
２．銀行が、銀行のアプリケーション・スイートへのメンバシップを識別するための公開鍵／秘密鍵対を生成する。この鍵対を、ａｋ／ａｋ-1と表す。
【００７３】
３．銀行が、公開鍵ｍｋおよびａｋを含む署名プログラムＳを記述する。
【００７４】
４．さらに、銀行が、図３に関連して説明したものなどの表示プログラムＤを記述する。このプログラムは、署名されるもの、たとえば、払受人、金額、日付、および説明などを、その簡単な説明として受け入れる。表示プログラムＤは、その後、物理表示装置をロックし、その後、必要な情報をユーザに表示する。ユーザが同意する場合には、表示プログラムＤは、ロックを解放し、図３に関連して述べたものなどの条件が署名プログラムＳに渡される。
【００７５】
５．銀行は、図６に関連して示したように、ａｋ-1Ｈ（Ｄ）を計算し、これをヘルパまたは登録プログラムＣに配置する。
【００７６】
個々のセットアップ
銀行が、ユーザ用の鍵を生成し、配布することを望むと仮定する。
【００７７】
１．ユーザＵのそれぞれについて、銀行が、鍵対ｕｋ／ｕｋ-1と、署名された鍵対ｍｋ-1（ｕｋ／ｕｋ-1）を担持するアプリケーションＣＵとを生成する。
【００７８】
２．銀行が、ユーザＵに表示プログラムＤ、署名プログラムＳ、登録プログラムＣ、およびアプリケーションＣＵを提供する。アプリケーションＣＵだけが、ユーザＵに依存し、秘密を必要とする唯一の構成要素である。銀行は、秘密を何らかの形で分割することを望む場合がある。
【００７９】
３．その後、ユーザＵが、上のステップで述べたアプリケーションをインストールし、システムが、めいめいのプログラム固有識別子Ｈ（Ｄ）、Ｈ（Ｓ）、Ｈ（Ｃ）、およびＨ（ＣＵ）に対応する４つの新しいセキュリティ・ドメインを自動的にセット・アップする。
【００８０】
４．ユーザＵが、アプリケーションＣＵを実行し、アプリケーションＣＵが、ｍｋ-1（ｕｋ／ｕｋ-1）を含むメッセージを署名プログラムＳに送る。署名プログラムＳは、鍵ｍｋを使用して、ｕｋ／ｕｋ-1が有効なユーザ鍵であることを検証する。その後、アプリケーションＣＵが、登録プログラムＣを呼び出し、アプリケーションＣＵ自体はもはや不要なのでそれ自体を削除する。登録プログラムＣは、ａｋ-1Ｈ（Ｄ）を含むメッセージを署名プログラムＳに送る。次に、署名プログラムＳが、ａｋを使用して、表示プログラムＤが信頼されるアプリケーションであるかどうかを検証する。したがって、署名プログラムＳは、表示プログラムＤを信頼する。
【００８１】
アプリケーションまたはプログラムは、ＷＡＰブラウザとして、署名の生成を望む時に、表示および承認のためにテキストまたは文書を表示プログラムＤに渡す。ユーザＵが承認する場合には、その要求が、署名プログラムＳに渡され、署名プログラムＳがそれに署名する。署名プログラムＳは、要求が信頼される表示プログラムＤから来たので、その要求がユーザの望みを反映していることを知る。署名は、最終的に、最初のアプリケーションに返される。
【００８２】
銀行が、たとえばホーム・バンキング用などの、署名プログラムＳによって信頼される新しいアプリケーションＮを生成することを望む場合には、銀行は、ａｋ-1Ｈ（Ｎ）を担持するヘルパ・アプリケーションＣ’を生成するだけでよい。
【００８３】
スマートカード
銀行が、スマートカードを使用して、ユーザの鍵対の秘密部分を保護することを望む場合には、「個々のセットアップ」を次のように変更することができる。
【００８４】
１．ユーザＵsのそれぞれについて、銀行が、鍵対ｕｋ／ｕｋ-1を生成し、それをスマートカードに格納する。この鍵対ｕｋ／ｕｋ-1に、銀行のマスタ鍵を用いて署名することができるｍｋ-1（ｕｋ／ｕｋ-1）。
【００８５】
２．銀行が、ユーザＵsに、少なくとも表示プログラムＤおよび登録プログラムＣを供給する。
【００８６】
３．その後、ユーザＵsが、上のステップで述べたアプリケーションをインストールし、システムが、めいめいのプログラム固有識別子Ｈ（Ｄ）およびＨ（Ｃ）に対応する２つの新しいセキュリティ・ドメインを自動的にセット・アップする。
【００８７】
４．ユーザＵsが、登録プログラムＣを実行し、登録プログラムＣが、ａｋ-1Ｈ（Ｄ）を含むメッセージをスマートカードに送る。スマートカードは、ａｋを使用して、表示プログラムＤが信頼されるアプリケーションであることを検証し、したがって、以後、表示プログラムＤを信頼する。
【００８８】
表示プログラムＤが、スマートカードに要求を送る時には、その要求が、表示プログラムＤのプログラム固有識別子Ｈ（Ｄ）と共に配布される。
【００８９】
開示された実施形態のいずれもが、１つまたは複数の図示または説明された他の実施形態と組み合わせることができる。これは、実施形態の１つまたは複数の特徴についても可能である。
【００９０】
本発明は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組合せで実現することができる。あらゆる種類のコンピュータ・システムまたは、本明細書で説明した方法を実行するように適合された他の装置が、適する。ハードウェアおよびソフトウェアの通常の組合せは、ロードされ実行される時に本明細書で説明した方法を実行するようにコンピュータ・システムを制御するコンピュータ・プログラムを伴う汎用コンピュータ・システムとすることができる。本発明は、本明細書で説明した方法の実施形態を可能にするすべての特徴を含み、コンピュータ・システムにロードされた時にこれらの方法を実行することができる、コンピュータ・プログラム製品で実施することもできる。
【００９１】
この文脈でのコンピュータ・プログラム手段またはコンピュータ・プログラムは、情報処理能力を有するシステムに、直接に、または、ａ）別の言語、コード、または表記への変換と、ｂ）異なる材料形態での再生産との一方または両方の後にのいずれかで、特定の機能を実行させることを意図された命令のセットの、あらゆる言語、コード、または表記での表現を意味する。
【００９２】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００９３】
（１）メッセージ・レシーバ・プログラム（Ｓ）によってメッセージ・オリジネータ・プログラム（Ｄ）の同一性を検証する方法であって、
・信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に供給された、プログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から受け取るステップと、
・前記受け取ったプログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するステップと
を含む方法。
（２）メッセージ・レシーバ・プログラム（Ｓ）に対してメッセージ・オリジネータ・プログラム（Ｄ）の同一性を開示する方法であって、
・信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に供給されたプログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から前記メッセージ・レシーバ・プログラム（Ｓ）に送ることであって、上記プログラム固有識別子（Ｈ（Ｄ））が、それが前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを前記メッセージ・レシーバ・プログラム（Ｓ）側で検証可能である、送ること
を含む方法。
（３）メッセージ・レシーバ・プログラム（Ｓ）によってメッセージ・オリジネータ・プログラム（Ｄ）の同一性を検証する方法であって、
・信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）にプログラム固有識別子（Ｈ（Ｄ））を供給するステップと、
前記プログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から前記メッセージ・レシーバ・プログラム（Ｓ）に送るステップと、
・前記メッセージ・レシーバ・プログラム（Ｓ）側で前記メッセージを受け取るステップと、
・前記受け取ったプログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するステップと
を含む方法。
（４）メッセージ・レシーバ・プログラム（Ｓ）が、その後、応答メッセージ・オリジネータ・プログラムになり、
・上記信頼コンピューティング基盤（ＴＣＢ）によって前記応答メッセージ・オリジネータ・プログラムに供給された応答プログラム固有識別子（Ｈ（Ｓ））と、
・上記プログラム固有識別子（Ｈ（Ｄ））が既知として検証されたかどうかの肯定応答と
を含む応答メッセージをメッセージ・オリジネータ・プログラム（Ｄ）に送る、上記（１）ないし（３）のいずれか一項に記載の方法。
（５）好ましくはハッシュ関数、より好ましくはＭＤ５またはＳＨＡ−１などの一方向ハッシュ関数である暗号関数（Ｈ）をメッセージ・オリジネータ・プログラム（Ｄ）に適用することによって導出される実質的に一意の暗号識別子が、プログラム固有識別子（Ｈ（Ｄ））として使用される、上記（１）ないし（３）のいずれか一項に記載の方法。
（６）異なるプログラムの間の信頼を確立するために、秘密暗号鍵（ｋ-1）の使用によって、プログラム固有識別子（Ｈ（Ｄ））またはメッセージもしくはその両方に署名するステップをさらに含む、上記（１）ないし（３）のいずれか一項に記載の方法。
（７）上記メッセージが、さらに、追加プログラムの信頼関係でのメンバシップを確立するために、秘密暗号鍵（ｋ-1）の使用によって署名される、追加のプログラム固有識別子（Ｈ（Ｇ））を含む、上記（６）に記載の方法。
（８）上記メッセージ・レシーバ・プログラム（Ｓ）が、公開暗号鍵（ｋ）を有する、上記（１）ないし（３）のいずれか一項に記載の方法。
（９）上記メッセージ・レシーバ・プログラム（Ｓ）または信頼コンピューティング基盤（ＴＣＢ）もしくはその両方が、事前に格納されたプログラム固有識別子を含むリストを使用し、前記メッセージ・レシーバ・プログラム（Ｓ）が、上記プログラム固有識別子（Ｈ（Ｄ））が前記事前に格納されたプログラム固有識別子の１つと同一であるかどうかを検証する、上記（１）ないし（３）のいずれか一項に記載の方法。
（１０）上記メッセージ・レシーバ・プログラム（Ｓ）が、上記プログラム固有識別子（Ｈ（Ｄ））が既知として検証されない場合に、拒否メッセージを送る、上記（１）ないし（３）のいずれか一項に記載の方法。
（１１）上記メッセージ・オリジネータ・プログラム（Ｄ）およびメッセージ・レシーバ・プログラム（Ｓ）が、異なるシステム上で実行され、ネットワークを介して接続可能であり、それぞれが、プログラム固有暗号識別子を提供するためのその信頼コンピューティング基盤（ＴＣＢ）を有する、上記（１）ないし（３）のいずれか一項に記載の方法。
（１２）コンピュータ上で実行される時に、上記（１）ないし（１１）のいずれか一項に記載のステップを実行するプログラム・コード手段を含むコンピュータ・プログラム。
（１３）コンピュータ上で実行される時に、上記（１）ないし（１１）のいずれか一項に記載の方法を実行する、コンピュータ可読媒体に格納されたプログラム・コード手段を含むコンピュータ・プログラム製品。
（１４）コンピュータ上でメッセージ・レシーバ・プログラム（Ｓ）によってメッセージ・オリジネータ・プログラム（Ｄ）の同一性を検証する装置であって、
・計算手段と、
・信頼コンピューティング基盤（ＴＣＢ）によって前記メッセージ・オリジネータ・プログラム（Ｄ）に供給されたプログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から受け取るレシーバ・モジュールと、
・前記プログラム固有識別子（Ｈ（Ｄ））が前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを検証するベリファイヤ・モジュールと
を含む装置。
（１５）コンピュータ上でメッセージ・レシーバ・プログラム（Ｓ）によってメッセージ・オリジネータ・プログラム（Ｄ）の同一性を開示する装置であって、
・計算手段と、
・プログラム固有識別子（Ｈ（Ｄ））を作成するためのジェネレータ・モジュールを含む信頼コンピューティング基盤（ＴＣＢ）と、
・前記プログラム固有識別子（Ｈ（Ｄ））を含むメッセージを前記メッセージ・オリジネータ・プログラム（Ｄ）から送るセンダ・モジュールであって、前記プログラム固有識別子（Ｈ（Ｄ））が、それが前記メッセージ・レシーバ・プログラム（Ｓ）に既知であるかどうかを前記メッセージ・レシーバ・プログラム（Ｓ）側で検証可能である、センダ・モジュールと
を含む装置。
【図面の簡単な説明】
【図１】コンピュータ・システムのブロック図である。
【図２】本発明によるメッセージの交換を示す概略図である。
【図３】鍵を使用する購入シナリオを示す概略図である。
【図４】ハッシュを使用するアクセス制御を有するファイル・システム・オブジェクトを示す概略図である。
【図５】ディジタル署名を使用する動的セットアップのための、図４のファイル・システム・オブジェクトを示す図である。
【図６】相互信頼関係をセット・アップするのにヘルパ・アプリケーションを使用する実施形態を示す概略図である。
【符号の説明】
２  コンピュータ
４  ハードウェア構成要素
６  中央処理装置（ＣＰＵ）
８  ランダム・アクセス・メモリ（ＲＡＭ）
１０  入出力（Ｉ／Ｏ）インターフェース
１２  ２次ストレージ装置
１４  入力装置
１６  表示装置
１８  出力装置
２０  オペレーティング・システム
２１  ジェネレータ・モジュール
２２  プログラム
２４  プログラム
２６  プログラム
４０  アクセス制御リスト
４２  第１オペレーティング・システム
４４  第２オペレーティング・システム
４６  チャネル
【図１】
0003731867.tif 000002
【図２】
0003731867.tif 000003
【図３】
0003731867.tif 000004
【図４】
0003731867.tif 000005
【図５】
0003731867.tif 000006
【図６】
0003731867.tif 000007