(57)【要約】      （修正有）【課題】多層異種コンピューティング環境におけるプログラム間で認証を行うための装置および方法を提供する。【解決手段】多層コンピューティング環境において、第１のプログラムは、動的に生成された公開／秘密鍵対を用いて、第２のプログラムを認証することができる。ユーザ情報ならびに第１のプログラムおよび第２のプログラムに関する情報を含む認証トークンを構築する。第１のプログラムは、動的に生成された秘密鍵を用いて認証トークンにデジタル署名し、認証トークンを第２のプログラムに送信する。第２のプログラムは、第１のプログラムに対応した公開鍵を用いて認証トークンを検証する。いったん検証されると、第１のプログラムは第２のプログラムに対して認証される。次いで、第２のプログラムは、第１のプログラムから受信した認証トークン内の情報を含む認証トークンを構築することによって、次層プログラムに対して認証を行うことができる。【選択図】  図１
2005158065.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、    
前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に存在する第１のプログラムと、
前記メモリ内に存在する第２のプログラムと、
公開／秘密鍵対を動的に生成する動的鍵生成機構と、
前記動的鍵生成機構によって動的に生成される公開／秘密鍵対を用いて前記第１のプログラムを前記第２のプログラムに対して認証するプログラム間認証機構と、
を備える装置。
【請求項２】
前記第１のプログラムがユーザを認証する認証機構を含む、請求項１に記載の装置。
【請求項３】
前記プログラム間認証機構が前記第１のプログラムを前記第２のプログラムに対して認証した後、前記第２のプログラムが、前記第１のプログラムがアサートした識別証から前記第２のプログラムが理解する識別証への識別証マッピングを実行する、請求項１に記載の装置。
【請求項４】
前記第１のプログラムは、前記動的鍵生成機構によって動的に生成された秘密鍵を用いて前記第１のプログラムがデジタル署名した第１の認証トークンを用いることで前記第２のプログラムに対して認証する、請求項１に記載の装置。
【請求項５】
前記第１の認証トークンが、
前記第１のプログラムによって認証されるユーザに関する情報と、  
前記第１のプログラムに関する情報と、
前記第２のプログラムに関する情報と、
前記動的鍵生成機構によって生成される前記第１のプログラムのための秘密鍵を用いた前記第１のプログラムのデジタル署名と、
を有する、請求項４に記載の装置。
【請求項６】
前記第２のプログラムが、前記第１のプログラムに対応する前記公開鍵について公開鍵当局に問合せを行うことによって前記第１の認証トークンを検証する、請求項４に記載の装置。
【請求項７】
前記第２のプログラムが、前記公開鍵当局から検索した前記第１のプログラムのための前記公開鍵を用いて前記第１のプログラムの前記デジタル署名を検証することによって前記第１の認証トークンを検証する、請求項６に記載の装置。
【請求項８】
前記第２のプログラムが、必要な場合には、前記第２のプログラムに対応する秘密鍵を用いて前記第１の認証トークンにデジタル署名して第２の認証トークンを生成し、前記第２の認証トークンを前記第１のプログラムに戻すことによって、前記第１のプログラムに対して認証を行う、請求項４に記載の装置。
【請求項９】
前記メモリ内に存在する第３のプログラムを更に備え、前記第２のプログラムが、前記第１のプログラムから受信した前記第１の認証トークンから第３の認証トークンを生成し、前記第３の認証トークンを前記第３のプログラムに送信することによって、前記第３のプログラムに対する認証を行う、請求項８に記載の装置。
【請求項１０】
前記第３のプログラムが、前記第２のプログラムに対応する前記公開鍵について公開鍵当局に問合せを行うことによって前記第３の認証トークンを検証する、請求項９に記載の装置。
【請求項１１】
プログラムが認証トークンを検証するたびに書き込まれる記録ファイルを更に有する、請求項１に記載の装置。
【請求項１２】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に存在し、ユーザを認証する認証機構を含む第１のプログラムと、
前記メモリ内に存在する第２のプログラムと、
公開／秘密鍵対を動的に生成する動的鍵生成機構と、
前記動的鍵生成機構によって生成された公開鍵を発行する公開鍵当局と、
前記動的鍵生成機構によって動的に生成される秘密鍵を用いて前記第１のプログラムがデジタル署名した第１の認証トークンを用いることで前記第１のプログラムを前記第２のプログラムに対して認証するプログラム間認証機構と、
を備える装置。
【請求項１３】
前記プログラム間認証機構が前記第１のプログラムを前記第２のプログラムに対して認証した後、前記第２のプログラムが、前記第１のプログラムがアサートした識別証から前記第２のプログラムが理解する識別証への識別証マッピングを実行する、請求項１２に記載の装置。
【請求項１４】
前記第１の認証トークンが、
前記第１のプログラムによって認証されるユーザに関する情報と、  
前記第１のプログラムに関する情報と、
前記第２のプログラムに関する情報と、
前記動的鍵生成機構によって生成された前記第１のプログラムのための秘密鍵を用いた前記第１のプログラムのデジタル署名と、
を有する、請求項１２に記載の装置。
【請求項１５】
前記第２のプログラムが、前記第１のプログラムに対応する前記公開鍵について前記公開鍵当局に問合せを行うことによって前記第１の認証トークンを検証する、請求項１２に記載の装置。
【請求項１６】
前記第２のプログラムが、前記公開鍵当局から検索した前記第１のプログラムのための前記公開鍵を用いて前記第１のプログラムの前記デジタル署名を検証することによって前記第１の認証トークンを検証する、請求項１５に記載の装置。
【請求項１７】
前記第２のプログラムが、必要な場合には、前記第２のプログラムに対応する秘密鍵を用いて前記第１の認証トークンにデジタル署名して第２の認証トークンを生成し、前記第２の認証トークンを前記第１のプログラムに戻すことによって、前記第１のプログラムに対して認証を行う、請求項１２に記載の装置。
【請求項１８】
前記メモリ内に存在する第３のプログラムを更に備え、前記第２のプログラムが、前記第１のプログラムから受信した前記第１の認証トークンから第３の認証トークンを生成し、前記第３の認証トークンを前記第３のプログラムに送信することによって、前記第３のプログラムに対する認証を行う、請求項１７に記載の装置。
【請求項１９】
前記第３のプログラムが、前記第２のプログラムに対応する前記公開鍵について公開鍵当局に問合せを行うことによって前記第３の認証トークンを検証する、請求項１８に記載の装置。
【請求項２０】
プログラムが認証トークンを検証するたびに書き込まれる記録ファイルを更に有する、請求項１２に記載の装置。
【請求項２１】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに結合されたメモリと、
前記メモリ内に存在する第１のプログラムと、
前記メモリ内に存在する第２のプログラムと、
前記メモリ内に存在する第３のプログラムと、
公開／秘密鍵対を動的に生成する動的鍵生成機構と、
前記第１のプログラムに対応する公開／秘密鍵対を用いて前記第１のプログラムによって生成された第１の認証トークンを用いることで前記第１のプログラムを前記第２のプログラムに対して認証し、また、前記第１の認証トークンにおける全情報を含む第２の認証トークンを用いて前記第２のプログラムを前記第３のプログラムに対して認証する、プログラム間認証機構と、
を備える装置。
【請求項２２】
第１のプログラムを第２のプログラムに対して認証する方法であって、
（Ａ）前記第１のプログラムのための公開／秘密鍵対を動的に生成するステップと、
（Ｂ）前記第１のプログラムが、ステップ（Ａ）において動的に生成された前記秘密鍵を用いて第１の認証トークンを生成するステップと、
（Ｃ）前記第２のプログラムが、ステップ（Ａ）において動的に生成された前記公開鍵を用いて前記第１の認証トークンを検証するステップと、
を有する方法。
【請求項２３】
前記第２のプログラムが、前記第１のプログラムのための前記公開鍵を用いて前記認証トークンにおける前記第１のプログラムのデジタル署名を検証することによって、ステップ（Ｃ）において前記第１の認証トークンを検証する、請求項２２に記載の方法。
【請求項２４】
前記第１のプログラムに対してユーザを認証するステップを更に有する、請求項２２に記載の方法。
【請求項２５】
前記第１のプログラムが表明した識別証から前記第２のプログラムが理解する識別証への識別証マッピングを実行するステップを更に有する、請求項２２に記載の方法。
【請求項２６】
前記第１の認証トークンが、
前記第１のプログラムによって認証されるユーザに関する情報と、  
前記第１のプログラムに関する情報と、
前記第２のプログラムに関する情報と、
前記動的鍵生成機構によって生成された前記第１のプログラムのための秘密鍵を用いた前記第１のプログラムのデジタル署名と、
を有する、請求項２２に記載の方法。
【請求項２７】
（Ｄ）前記第２のプログラムのための公開／秘密鍵対を動的に生成するステップと、
（Ｅ）前記第２のプログラムが、ステップ（Ｄ）において生成された前記秘密鍵を用いて前記第１の認証トークンにデジタル署名して、第２の認証トークンを生成するステップと、
（Ｆ）前記第２の認証トークンを前記第１のプログラムに戻して、前記第２のプログラムを前記第１のプログラムに対して認証するステップと、
を更に有する、請求項２２に記載の方法。
【請求項２８】
前記第２のプログラムが、前記第１の認証トークンから第３の認証トークンを生成して、前記第３の認証トークンを第３のプログラムに送信することによって、前記第３のプログラムに対する認証を行うステップ、を更に有する、請求項２２に記載の方法。
【請求項２９】
前記第３のプログラムが、ステップ（Ｄ）において生成した前記公開鍵を用いて前記第３の認証トークンを検証するステップ、を更に有する、請求項２８に記載の方法。
【請求項３０】
プログラムが認証トークンを検証するたびに書き込まれる記録ファイル、に書き込むステップを更に有する、請求項２２に記載の方法。
【請求項３１】
第１のプログラムを第２のプログラムに対して認証する方法であって、
（Ａ）前記第１のプログラムのための公開／秘密鍵対を動的に生成するステップと、
（Ｂ）前記第１のプログラムのための前記公開鍵を公開鍵当局に送信するステップと、
（Ｃ）前記第２のプログラムのための公開／秘密鍵対を動的に生成するステップと、
（Ｄ）前記第２のプログラムのための前記公開鍵を公開鍵当局に送信するステップと、
（Ｅ）前記第１のプログラムが、前記第１のプログラムのための前記秘密鍵を用いて第１の認証トークンを生成するステップと、
（Ｆ）前記第２のプログラムが、前記第１のプログラムに対応する前記公開鍵について前記公開鍵当局に問合せを行うことによって前記第１の認証トークンを検証するステップと、
を有する方法。
【請求項３２】
前記第２のプログラムが、前記公開鍵当局から検索した前記第１のプログラムのための前記公開鍵を用いて前記認証トークンにおける前記第１のプログラムのデジタル署名を検証することによって、ステップ（Ｆ）において前記第１の認証トークンを検証する、請求項３１に記載の方法。
【請求項３３】
前記第１のプログラムに対してユーザを認証するステップを更に有する、請求項３１に記載の方法。
【請求項３４】
前記第１のプログラムがアサートした識別証から前記第２のプログラムが理解する識別証への識別証マッピングを実行するステップを更に有する、請求項３１に記載の方法。
【請求項３５】
前記第１の認証トークンは、
前記第１のプログラムによって認証されるユーザに関する情報と、  
前記第１のプログラムに関する情報と、
前記第２のプログラムに関する情報と、
動的鍵生成機構によって生成された前記第１のプログラムのための秘密鍵を用いた前記第１のプログラムのデジタル署名と、
を有する、請求項３１に記載の方法。
【請求項３６】
（Ｇ）前記第２のプログラムのための公開／秘密鍵対を動的に生成するステップと、
（Ｈ）前記第２のプログラムが、ステップ（Ｇ）において生成された前記秘密鍵を用いて前記第１の認証トークンにデジタル署名して、第２の認証トークンを生成するステップと、
（Ｉ）前記第２の認証トークンを前記第１のプログラムに戻して、前記第２のプログラムを前記第１のプログラムに対して認証するステップと、
を更に有する、請求項３１に記載の方法。
【請求項３７】
前記第２のプログラムが、前記第１の認証トークンから第３の認証トークンを生成して、前記第３の認証トークンを第３のプログラムに送信することによって、前記第３のプログラムに対する認証を行うステップ、を更に有する、請求項３１に記載の方法。
【請求項３８】
前記第３のプログラムが、前記第２のプログラムに対応する前記公開鍵を用いて前記第３の認証トークンを検証するステップ、を更に備える、請求項３７に記載の方法。
【請求項３９】
プログラムが認証トークンを検証するたびに書き込まれる記録ファイル、に書き込むステップを更に有する、請求項３１に記載の方法。
【請求項４０】
第１のプログラムを第３のプログラムに対して認証する方法であって、
前記第１のプログラムに対応する公開／秘密鍵対を用いて前記第１のプログラムにより生成された第１の認証トークンを用いることで前記第１のプログラムを第２のプログラムに対して認証するステップと、
前記第１の認証トークンにおける全情報を含む第２の認証トークンを用いて前記第２のプログラムを前記第３のプログラムに対して認証するステップと、
を有する方法。
【請求項４１】
（Ａ）動的鍵生成機構によって動的に生成される公開／秘密鍵対を用いて第１のプログラムを第２のプログラムに対して認証するプログラム間認証機構と、
（Ｂ）前記プログラム間認証機構を有するコンピュータ読み取り可能信号搬送媒体と、
を有するプログラム。
【請求項４２】
前記コンピュータ読み取り可能信号搬送媒体が記録可能媒体を有する、請求項４１に記載のプログラム。
【請求項４３】
前記コンピュータ読み取り可能信号搬送媒体が伝送媒体を有する、請求項４１に記載のプログラム。
【請求項４４】
前記第１のプログラムがユーザを認証する認証機構を含む、請求項４１に記載のプログラム。
【請求項４５】
前記プログラム間認証機構が前記第１のプログラムを前記第２のプログラムに対して認証した後、前記第２のプログラムが前記第１のプログラムがアサートした識別証から前記第２のプログラムが理解する識別証への識別証マッピングを実行する、請求項４１に記載のプログラム。
【請求項４６】
前記第１のプログラムが、前記動的鍵生成機構によって動的に生成される鍵を用いて前記第１のプログラムによりデジタル署名される第１の認証トークンを用いることで前記第２のプログラムに対して認証する、請求項４１に記載のプログラム。
【請求項４７】
前記第１の認証トークンは、
前記第１のプログラムによって認証されるユーザに関する情報と、  
前記第１のプログラムに関する情報と、
前記第２のプログラムに関する情報と、
動的鍵生成機構によって生成された前記第１のプログラムのための秘密鍵を用いた前記第１のプログラムのデジタル署名と、
を有する、請求項４６に記載のプログラム。
【請求項４８】
前記第２のプログラムが、前記第１のプログラムに対応する前記公開鍵について公開鍵当局に問合せを行うことによって前記第１の認証トークンを検証する、請求項４６に記載のプログラム。
【請求項４９】
前記第２のプログラムが、前記公開鍵当局から検索した前記第１のプログラムのための前記公開鍵を用いて前記第１のプログラムの前記デジタル署名を検証することによって前記第１の認証トークンを検証する、請求項４８に記載のプログラム。
【請求項５０】
前記第２のプログラムが、必要な場合には、前記第２のプログラムに対応する秘密鍵を用いて前記第１の認証トークンにデジタル署名して第２の認証トークンを生成し、前記第２の認証トークンを前記第１のプログラムに戻すことによって、前記第１のプログラムに対して認証を行う、請求項４６に記載のプログラム。
【請求項５１】
第３のプログラムを更に備え、前記第２のプログラムが、前記第１のプログラムから受信した前記第１の認証トークンから第３の認証トークンを生成し、前記第３の認証トークンを前記第３のプログラムに送信することによって、前記第３のプログラムに対する認証を行う、請求項５０に記載のプログラム。
【請求項５２】
前記第３のプログラムが、前記第２のプログラムに対応する前記公開鍵について前記公開鍵当局に問合せを行うことによって前記第３の認証トークンを検証する、請求項５１に記載のプログラム。
【請求項５３】
プログラムが認証トークンを検証するたびに書き込まれる記録ファイルを更に有する、請求項４１に記載のプログラム。
【請求項５４】
（Ａ）公開鍵当局において動的鍵生成機構によって動的に生成される鍵を用いて第１のプログラムによってデジタル署名される第１の認証トークン、を用いることで前記第１のプログラムを第２のプログラムに対して認証するプログラム間認証機構であって、前記第１のプログラムがユーザを認証する認証機構を含む、プログラム間認証機構と、
（Ｂ）前記プログラム間認証機構を有するコンピュータ読み取り可能信号搬送媒体と、
を有するプログラム。
【請求項５５】
前記コンピュータ読み取り可能信号搬送媒体が記録可能媒体を有する、請求項５４に記載のプログラム。
【請求項５６】
前記コンピュータ読み取り可能信号搬送媒体が伝送媒体を有する、請求項５４に記載のプログラム。
【請求項５７】
前記プログラム間認証機構が前記第１のプログラムを前記第２のプログラムに対して認証した後、前記第２のプログラムは前記第１のプログラムがアサートした識別証から前記第２のプログラムが理解する識別証への識別証マッピングを実行する、請求項５４に記載のプログラム。
【請求項５８】
前記第１の認証トークンが、
前記第１のプログラムによって認証されるユーザに関する情報と、  
前記第１のプログラムに関する情報と、
前記第２のプログラムに関する情報と、
動的鍵生成機構によって生成された前記第１のプログラムのための秘密鍵を用いた前記第１のプログラムのデジタル署名と、
を有する、請求項５４に記載のプログラム。
【請求項５９】
前記第２のプログラムが、前記第１のプログラムに対応する前記公開鍵について前記公開鍵当局に問合せを行うことによって前記第１の認証トークンを検証する、請求項５４に記載のプログラム。
【請求項６０】
前記第２のプログラムが、前記公開鍵当局から検索した前記第１のプログラムのための前記公開鍵を用いて前記第１のプログラムの前記デジタル署名を検証することによって前記第１の認証トークンを検証する、請求項５９に記載のプログラム。
【請求項６１】
前記第２のプログラムが、必要な場合には、前記第２のプログラムに対応する秘密鍵を用いて前記第１の認証トークンにデジタル署名して第２の認証トークンを生成し、前記第２の認証トークンを前記第１のプログラムに戻すことによって、前記第１のプログラムに対して認証を行う、請求項５４に記載のプログラム。
【請求項６２】
第３のプログラムを更に備え、前記第２のプログラムが、前記第１のプログラムから受信した前記第１の認証トークンから第３の認証トークンを生成し、前記第３の認証トークンを前記第３のプログラムに送信することによって、前記第３のプログラムに対する認証を行う、請求項６１に記載のプログラム。
【請求項６３】
前記第３のプログラムが、前記第２のプログラムに対応する前記公開鍵について前記公開鍵当局に問合せを行うことによって前記第３の認証トークンを検証する、請求項６１に記載のプログラム。
【請求項６４】
プログラムが認証トークンを検証するたびに書き込まれる記録ファイルを更に有する、請求項５４に記載のプログラム。
【請求項６５】
（Ａ）第１のプログラムに対応する公開／秘密鍵対を用いて前記第１のプログラムにより生成された第１の認証トークンを用いることで前記第１のプログラムを第２のプログラムに対して認証し、また、前記第１の認証トークンにおける全情報を含む第２の認証トークンを用いて前記第２のプログラムを第３のプログラムに対して認証する、プログラム間認証機構と、
（Ｂ）前記プログラム間認証機構を有するコンピュータ読み取り可能信号搬送媒体と、
を有するプログラム。
【請求項６６】
前記コンピュータ読み取り可能信号搬送媒体が記録可能媒体を有する、請求項６５に記載のプログラム。
【請求項６７】
前記コンピュータ読み取り可能信号搬送媒体が伝送媒体を有する、請求項６５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・システムに関し、更に具体的には、コンピュータ・プログラム間で認証を行うための装置および方法に関する。
【背景技術】
【０００２】
現代社会においてコンピュータが広範囲に渡って急増したことによって、コンピュータが互いに通信可能なコンピュータ・ネットワークの開発が促進されている。パーソナル・コンピュータ（ＰＣ）の導入により、コンピュータは多数の人々に利用できるようになった。パーソナル・コンピュータ用のネットワークが開発され、個々のユーザは互いに通信を行うことが可能となった。このように、多数のコンピュータがネットワーク上の他のコンピュータと通信を行うことができる。
【０００３】
多くの現在のコンピューティング環境には、互いに情報をやり取りして様々なタスクを実行する異種プログラムが混在している。実際、多数のレベルまたは層（ティア）のプログラムが存在する場合がある。例えば、ユーザは、ユーザＩＤおよびパスワードを入力することによって、第１層プログラムに対する認証を行うことができる。プログラムは、ユーザが直接それによって認証される場合には、第１層プログラムである。いったんユーザが第１層プログラムに対して認証されると、ユーザは、第１層プログラムがアクセスする第２層プログラムによって提供されるサービスを要求することができる。このため、ユーザが第２層プログラムによって認証される何らかの方法がなければならない。ユーザが次の層のプログラムによって提供される機能またはサービスを呼び出すたびに、ユーザＩＤおよびパスワードの入力をユーザに要求することは、ユーザにとっては極めてわずらわしい。
【０００４】
プログラムは、もともと第１層、第２層等であるわけではないことに留意すべきである。プログラムの層レベルは、誰がそれを呼び出すか、およびいつそれが呼び出されるかによって決まる。第１層プログラムであるためには、プログラムは、ユーザからユーザＩＤおよびパスワードを受信すること等によって、ユーザを認証することができなければならない。次の層のプログラムであるために、プログラムは、別のプログラムからの要求を受けて、認証を必要とする何らかの機能を実行することができる。このため、プログラムは、そのプログラムへユーザが直接サービスを要求する時点では第１層プログラムである可能性があり、ユーザが直接第１層プログラムにより認証されて、この第１層プログラムが第２層プログラムに対して認証され、この第２層プログラムが当該プログラムによって認証されて何らかのサービスまたは機能を実行する時点では、第３層プログラムであり得る。
【０００５】
図２に、当技術分野において既知の、極めて簡単な多層システム２００を示す。ユーザ２１０は、典型的にユーザＩＤおよびパスワードを入力して、第１層プログラム１２４Ａに対して認証される。ユーザが、第２層プログラム１２４Ｂにサービスまたは機能を実行させることを求める要求を第１層プログラム１２４Ａに行った場合、ユーザは第２層プログラム１２４Ｂに対して認証されなければならない。ユーザが第２層プログラム１２４Ｂに対して認証されるためには多くの方法があり、その多くは以下で詳細に論じる。いったんユーザが第２層プログラム１２４Ｂに対して認証されると、次層プログラムは、ユーザが要求したサービスまたは機能を実行することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
第１層プログラムが次層プログラムに対する認証を行う既知の方法は、全て、機密パスワードをどこかに保存することを必要とする。機密パスワードの保存は、コンピュータ・ネットワークを管理する際に著しくオーバーヘッドを増す。パスワードは、安全な方法で安全な位置に保存されなければならないだけでなく、定期的に変更されなければならない。このため、機密パスワードを用いる既知の認証技法は、多層コンピューティング環境にとって望ましい解決策を提供しない。長期に渡って保存、共有、および維持しなければならない機密鍵を用いることなく、あるコンピュータ・プログラムがユーザを別のコンピュータ・プログラムに対して認証するための方法がなければ、コンピュータ業界は、多層コンピューティング環境において、非効率的なプログラム間認証方法を用い続けることになる。
【課題を解決するための手段】
【０００７】
多層コンピューティング環境において、第１のプログラムは、動的に生成された公開／秘密鍵対を用いて、第２のプログラムによる認証を行うことができる。ユーザ情報と第１のプログラムおよび第２のプログラムに関する情報とを含む認証トークンが構築される。次いで、第１のプログラムは、動的に生成された秘密鍵を用いて認証トークンにデジタル署名し、認証トークンを第２のプログラムに送信する。次いで、第２のプログラムは、第１のプログラムに対応した公開鍵の公開鍵当局に問合せを行うことによって、認証トークンを検証する。いったん検証されると、第１のプログラムは第２のプログラムに対して認証される。次いで、第１層プログラムは、ユーザの識別証を第２層プログラムにアサート（明示）する。次いで、第２のプログラムは、第１のプログラムから受信した認証トークン内の情報を含む認証トークンを構築することによって、次層プログラムに対する認証を行うことができる。これを、いずれかの適切な数の層まで続け、動的に生成された公開／秘密鍵対を用いて認証トークンを構築し、ユーザの交信もシステム管理者からの入力も必要とせずにプログラム間で認証を行うことができる。
【発明を実施するための最良の形態】
【０００８】
本発明の前述およびその他の特徴および利点は、添付図面に示すような、以下の本発明の好適な実施形態の更に具体的な説明から、明らかとなろう。
【０００９】
これより、本発明の好適な実施形態について、添付図面に関連付けて説明する。図面において、同様の参照符号は同様の要素を示す。
【００１０】
１．０  概説
本発明は、多層異種コンピューティング環境におけるプログラム間の認証に関する。好適な実施形態の趣旨を適切に理解することができるように、以下の考察で、当技術分野の現状を示す。
【００１１】
図２を参照すると、単純な２層コンピューティング環境２００が示されている。ユーザ２１０は、第１層プログラム１２４Ａに対して認証され、次いで、第１層プログラムに、第２層プログラム１２４Ｂが提供する何らかのアクションまたは機能を要求する。このため、第１層プログラム１２４Ａは、ユーザ２１０のために第２層プログラム１２４Ｂに対して認証を行う必要がある。当技術分野では、第１層プログラム１２４Ａが第２層プログラム１２４Ｂに対して認証を行う多くの方法がある。これらのいくつかについで以下に記載する。
【００１２】
図３を参照すると、１つの従来技術の方法３００では、全プログラムを通してユーザＩＤおよびパスワードを同期させ、次いで同一のユーザＩＤおよびパスワードを用いて各プログラムに対して認証を行う。第１のステップは、全プログラムを通してユーザＩＤおよびパスワードを同期させる（ステップ３１０）。次いで、ユーザは、第１層プログラムに対し認証を行うため、ユーザＩＤおよびパスワードを入力する（ステップ３２０）。ユーザＩＤおよびパスワードが、そのユーザについて同期したユーザＩＤおよびパスワードと一致すると仮定すると、ユーザはここで第１層プログラムに対して認証される（ステップ３３０）。ここで、ユーザは、ユーザが第２層プログラムに対して認証されることを必要とするトランザクションを要求する（ステップ３４０）。ユーザＩＤおよびパスワードは全プログラムを通して同期されているので、第１層プログラムは、ユーザから受信したものと同一のユーザＩＤおよびパスワードを用いて、第２層プログラムに対する認証を行う（ステップ３５０）。一致したと仮定すると、ユーザは第１層プログラムによって第２層プログラムに対して認証される（ステップ３６０）。同期したユーザＩＤおよびパスワードの管理は難しく、コストがかかる。更に、システム管理者によっては、不適切なツールを用いて、システムの残り部分と同期させずにある場所でパスワードを変更する可能性があり、このためシステムにおいてエラーおよび問題を引き起こす恐れがある。
【００１３】
図４に、プログラム間で認証を行うための別の従来技術の方法を、方法４００として示す。まず、全プログラムについてユーザに対応するユーザＩＤおよびパスワードを、中央位置に保存する（ステップ４１０）。次に、プログラムが別の層を呼び出す場合、中央位置からユーザＩＤおよびパスワード情報を検索するために、各プログラムを変更しなければならない（ステップ４２０）。この時点で、ユーザは、第１層プログラムに対する認証を行うため、ユーザＩＤおよびパスワードを入力することができる（ステップ４３０）。第１層プログラムは、それ自身のローカル・レジストリからそのユーザのユーザＩＤおよびパスワードを検索し、それらをユーザが入力したユーザＩＤおよびパスワードと比較する（ステップ４４０）。これら２つが一致しない場合（ステップ４５０で「いいえ」）、認証は失敗である（ステップ４５２）。ユーザＩＤおよびパスワードが一致する場合（ステップ４５０で「はい」）、ユーザは第１層プログラムに対して認証される（ステップ４６０）。次いで、ユーザは、ユーザが第１層プログラムによって第２層プログラムに対して認証されることを必要とするトランザクションを要求する（ステップ４７０）。第１層プログラムは、中央位置から第２層プログラムに必要なユーザＩＤおよびパスワードを検索し、ユーザＩＤおよびパスワードを第２層プログラムに送信する（ステップ４７２）。次いで、第２層プログラムは、第１層プログラムから受信したユーザＩＤおよびパスワードを、第２層プログラムのローカル・レジストリから検索したユーザＩＤおよびパスワードと比較する（ステプ４７４）。これらが一致しない場合（ステップ４８０で「いいえ」）、認証は失敗である（ステップ４５２）。ユーザＩＤおよびパスワードが一致する場合（ステップ４８０で「はい」）、ユーザは第１層プログラムによって第２層プログラムに対して認証される（ステップ４９０）。方法４００は、図３の方法３と同じ欠点のいくつかを有する。ユーザＩＤおよびパスワードの管理が難しく、コストがかかることである。更に、異なる層を認証する場合に、中央位置からユーザＩＤおよびパスワードを検索するため各プログラムを変更することは、特に異なるベンダからのパッケージ済みプログラムを用いる場合、難しいかまたは不可能な場合がある。更に、普通文テキストまたは復号可能な形態で中央位置にユーザＩＤおよびパスワードを有することは、認証されていない個人がこの情報にアクセスしたがるかもしれないというセキュリティ上の問題を生じる。コンピューティング環境のいずれかの小さい部分の管理者であっても、企業のどこの誰のパスワードでも知ることが可能となり得る。
【００１４】
あるプログラムを別のプログラムに対して認証する当技術分野において既知の別の方法は、デジタル証明書を用いる。図５を参照すると、方法５００は、デジタル証明書を用いてプログラム間の認証を行うことができる。まず、各プログラムごとにデジタル証明書が生成されなければならない（ステップ５１０）。次いで、セキュア・ソケット・レイヤ（ＳＳＬ：Secure Socket Layer）接続を確立する（ステップ５２０）。次いで、ユーザは、ユーザＩＤおよびパスワードを用いて第１層プログラムに対して認証を行う（ステップ５３０）。ユーザが認証されない場合（ステップ５４０で「いいえ」）、認証は失敗である（ステップ５４２）。ユーザが認証された場合（ステップ５４０で「はい」）、ユーザは第１層プログラムに対して認証される（ステップ５５０）。次いで、ユーザは、ユーザが第１層プログラムによって第２層プログラムに対して認証を行うことを必要とするトランザクションを要求する（ステップ５６０）。次いで、第１層プログラムは、ＳＳＬ上でクライアント側の認証を用いて、第１層プログラムのデジタル証明書により、第２層プログラムに対する認証を行う（ステップ５７０）。第１層プログラムが認証されない場合（ステップ５８０で「いいえ」）、認証は失敗である（ステップ５４２）。第１層プログラムが認証された場合（ステップ５８０で「はい」）、第１層プログラムの第２層プログラムに対する認証は成功である（ステップ５９０）。ここで第１層プログラムは第２層プログラムに信頼されるので、第１層プログラムは、エンド・ユーザの識別証を第２層プログラムにアサートすることができる。デジタル証明書を用いることに伴う主な問題は、それらが扱いにくく、長期に渡って管理するのはコストが高いとわかっていることである。場合によっては証明書が存在せず、証明書を得るプロセスがシステムのオーバーヘッドを増す。最後に、クライアント認証に用いられるクライアントのデジタル証明書に関連する秘密鍵も、長期間に渡ってマルチユーザの機械上で安全に保存することが難しい。
【００１５】
以下で説明する好適な実施形態は、動的に生成された公開／秘密鍵対を用いてプログラム間認証を行うことによって、長期間に渡って静的な認証情報を管理する必要性をなくすことで、先に論じた従来技術の欠点を克服する。
【００１６】
２．０  好適な実施形態の説明
本発明は、動的に生成された公開／秘密鍵対を用いてコンピュータ・プログラムが互いに認証を行う方法を提供する。この手法は、異なる対称鍵を保存、共有、および維持することに伴う管理上のオーバーヘッドを排除する。動的に生成された鍵の対は短命であるので、それらを長期に渡って安全に保存または維持する必要はない。動的に生成された鍵の対は公開／秘密鍵の対であるので、それらは予め共有する必要はない。更に、鍵対は動的に生成されるので、それらはユーザまたはシステム管理者からの入力を何も必要とせずに作成される。また、本発明は、どのプログラムが他のプログラムにアクセスしたかの記録（ログ）を構築する追跡機構も提供するが、これについては以下で更に詳細に説明する。
【００１７】
図１を参照すると、コンピュータ・システム１００は、本発明の好適な実施形態に従った装置の１つの適切な実施である。コンピュータ・システム１００は、ＩＢＭのｅＳｅｒｖｅｒ  ｉＳｅｒｉｅｓコンピュータ・システムである。しかしながら、本発明の機構および装置は、コンピュータ・システムが複雑なマルチユーザ・コンピューティング装置であるか、単一のユーザ・ワークステーションであるか、または埋め込み制御システムであるかに関わらず、いかなるコンピュータ・システムにも等しく適用されることは、当業者には認められよう。図１に示すように、コンピュータ・システム１００は、プロセッサ１１０、主メモリ１２０、大容量記憶インタフェース１３０、ディスプレイ・インタフェース１４０、ネットワーク・インタフェース１５０を備える。これらのシステム・コンポーネントは、システム・バス１６０を用いることによって相互接続されている。大容量記憶インタフェース１３０を用いて、直接アクセス記憶装置（ＤＡＳＤ）１５５等の大容量記憶装置をコンピュータ・システム１００に接続する。直接アクセス記憶装置１５５の１つの具体的な種類は、読み取り可能および書き込み可能ＣＤ−ＲＷドライブであり、これはＣＤ−ＲＷ１９５にデータを保存し、そこからデータを読み取ることができる。
【００１８】
好適な実施形態による主メモリ１２０は、データ１２１、オペレーティング・システム１２２、プログラム１２４（図１に１２４Ａ、・・・１２４Ｎとして示す）、公開鍵当局１２５、動的鍵生成機構１２６、記録ファイル１２７、およびプログラム間認証機構１２８を含む。データ１２１は、コンピュータ・システム１００におけるいずれかのプログラムへの入力またはそれからの出力として機能するいずれかのデータを表す。オペレーティング・システム１２２は、ＯＳ／４００のような、業界では既知のマルチタスキング・オペレーティング・システムである。しかしながら、本発明の精神および範囲がいずれか１つのオペレーティング・システムに限定されないことは、当業者には認められよう。プログラム１２４は、コンピュータ・システムにおけるいずれかの適切なプログラムを表す。しかしながら、本発明は、互いに通信を行う（従って認証を行う）ことを必要とする多数層のコンピュータ・プログラムを含むコンピュータ・システムにおいて特定的に適用されることに留意すべきである。図２は、多数層のプログラムを含む従来技術のコンピューティング環境２００を示す。ユーザは２１０によって表されている。ユーザは、第１層プログラム１２４Ａにより認証され、第１層プログラム１２４Ａが第２層プログラム１２４Ｂと情報をやり取りすることを求める要求をする。第２層プログラム１２４Ｂが所望の機能を実行すると、これは第１層プログラム１２４Ａに情報を戻し、次いで第１層プログラム１２４Ａがユーザ２１０に情報を戻す。図２は、多数層を含むコンピューティング環境２００の最も基本的な図である。むろん、より複雑なコンピューティング環境は、３つ以上の層のコンピュータ・プログラムを含む場合がある。
【００１９】
図１に戻ると、公開鍵当局１２５は、他のプログラムの公開鍵へアクセスを要求するプログラムに公開鍵を発行する機構である。公開／秘密鍵対は、当技術分野において一般的であり既知である。動的鍵生成機構１２６は、「信頼された」プログラムに関連する公開／秘密鍵対を動的に生成する。信頼されたプログラムとは、管理者がプログラム識別子を割り当てるものであり、管理者が公開鍵を発行する許可を与えるものであり、公開鍵当局１２５に対して信頼されたプログラムであることを証明可能なものである。動的鍵生成機構１２６は、特定のプログラムのための公開／秘密鍵対を作成し、次いで、他の信頼されたプログラムに発行するため、公開鍵を公開鍵当局１２５に送信する。秘密鍵を含むプログラムは、秘密鍵を用いて、他のプログラムに送信するデータを暗号化する。このため、プログラムの公開鍵を公開鍵当局に要求し、その公開鍵を用いてデータを復号化することによって、暗号化データがそのプログラムから来たことを検証することができる。また、公開鍵当局１２５は、プログラムのユーザ・レジストリに関連付けてエンド・ユーザを表すユーザＩＤを、信頼されたプログラムに戻すことができる。記録ファイル１２７は、ユーザが行った単一の要求に伴う全ての層を追跡することを可能とし、これによってエンド・ユーザから最後の層のプログラムまでのトランザクション全体の履歴記録を与える。
【００２０】
プログラム間認証機構１２８は、動的鍵生成機構１２６によって動的に生成された鍵対を用いた固有の方法で、プログラム１２４間の認証を行う。プログラム間認証機構１２８は、認証トークン１２９を生成し、これは、動的鍵生成機構１２６によって生成された秘密鍵を用いて署名される。次いで、認証トークン１２９は、あるプログラムによって用いられて、異なるプログラムを認証することができる。これについては、図６ないし２３を参照して以下で詳細に説明する。
【００２１】
コンピュータ・システム１００は、周知のバーチャル・アドレッシング機構を用いる。これによって、コンピュータ・システム１００のプログラムは、主メモリ１２０およびＤＡＳＤデバイス１２５等の多数の小さいストレージ構成要素にアクセスするのではなく、大きな単一のストレージ構成要素にのみアクセスするようにふるまうことができる。従って、データ１２１、オペレーティング・システム１２２、プログラム１２４、公開鍵当局１２５、動的鍵生成機構１２６、記録ファイル１２７、およびプログラム間認証機構１２８は、主メモリ１２０内に常駐するように図示するが、これらのアイテムは必ずしも全てが同時に主メモリ１２０に含まれるわけではないことは、当業者には認められよう。また、本明細書において用いる「メモリ」という言葉は、概ねコンピュータ・システム１００のバーチャル・メモリ全体を指し、コンピュータ・システム１００に結合された他のコンピュータ・システムのバーチャル・メモリを含み得ることにも留意すべきである。
【００２２】
プロセッサ１１０は、１つ以上のマイクロプロセッサおよび／または集積回路から構築することができる。プロセッサ１１０は、主メモリ１２０に保存されたプログラム命令を実行する。主メモリ１２０は、プロセッサ１１０がアクセスすることができるプログラムおよびデータを保存する。コンピュータ・システム１００が起動すると、プロセッサ１１０は、最初に、オペレーティング・システム１２２を構成するプログラム命令を実行する。オペレーティング・システム１２２は、コンピュータ・システム１００のリソースを管理する洗練されたプログラムである。これらのリソースの一部は、プロセッサ１１０、主メモリ１２０、大容量記憶インタフェース１３０、ディスプレイ・インタフェース１４０、ネットワーク・インタフェース１５０、およびシステム・バス１６０である。
【００２３】
コンピュータ・システム１００は単一のプロセッサおよび単一のシステム・バスのみを含むように図示されているが、多数のプロセッサおよび／または多数のバスを有するコンピュータ・システムを用いて本発明を実施可能であることは、当業者には認められよう。更に、好適な実施形態において用いるインタフェースは、各々、プロセッサ１１０からコンピュータ集中処理の負荷を除くために用いられる別個の完全にプログラムされたマイクロプロセッサを含む。しかしながら、本発明は、単にＩ／Ｏアダプタを用いて同様の機能を実行するコンピュータ・システムにも等しく適用されることは、当業者には認められるであろう。
【００２４】
ディスプレイ・インタフェース１４０を用いて、１つ以上のディスプレイ１６５を直接コンピュータ・システム１００に接続する。これらのディスプレイ１６５は、非インテリジェント（すなわちダム）端末または完全にプログラム可能なワークステーションとすることができ、これらを用いてシステム管理者およびユーザがコンピュータ・システム１００と通信を行うことができる。しかしながら、ディスプレイ・インタフェース１４０を設けて１つ以上のディスプレイ１６５との通信をサポートする一方、ユーザおよび他のプロセスとの必要な情報のやり取りは全てネットワーク・インタフェース１５０を介して行い得るので、コンピュータ・システム１００は必ずしもディスプレイ１６５を必要とするわけではないことに留意すべきである。
【００２５】
ネットワーク・インタフェース１５０を用いて、他のコンピュータ・システムおよび／またはワークステーション（例えば図１の１７５）を、ネットワーク１７０を介してコンピュータ・システム１００に接続する。ネットワーク接続１７０を、今日のアナログおよび／またはデジタル技法を用いて実行するか、または将来の何らかのネットワーキング機構を介して実行するかには無関係に、コンピュータ・システム１００をどのように他のコンピュータ・システムおよび／またはワークステーションに接続しても、本発明は等しく適用される。更に、多くの異なるネットワーク・プロトコルを用いてネットワークを実施することができる。これらのプロトコルは、特殊化したコンピュータ・プログラムであり、コンピュータがネットワーク１７０を介して通信を行うことを可能とする。ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）は、適切なネットワーク・プロトコルの一例である。
【００２６】
ここで留意すべき重要なこととして、本発明を充分に機能するコンピュータ・システムに関連付けてこれまで説明し、これからも説明を続けるが、本発明は、様々な形態でプログラム製品として配布することができ、更に、本発明は、その配布を実際に行うために用いられるコンピュータ読み取り可能信号搬送媒体の特定の種類には無関係に等しく適用されることは、当業者に認められよう。適切なコンピュータ読み取り可能信号搬送媒体の例には、フロッピ・ディスクおよびＣＤ−ＲＷ（例えば図１の１９５）等の記録可能型の媒体、ならびに、デジタルおよびアナログ通信リンク等の送信型の媒体が含まれる。
【００２７】
ここで図６を参照すると、好適な実施形態に従った方法６００は、第１層プログラムに対して認証を行うため、ユーザがユーザＩＤおよびパスワードを入力することによって開始する（ステップ６１０）。ユーザが適切な情報を入力したと仮定すると、ユーザは第１層プログラムに対して認証される（ステップ６２０）。次いで、ユーザは、第１層プログラムによってユーザが第２層プログラムに対して認証されることを求めるトランザクションを要求する（ステップ６３０）。これに応じて、第１層プログラムは、動的に生成された鍵対からの秘密鍵を用いて動的に生成される認証トークンを用いることで、第２層プログラムに対する認証を行う（ステップ６４０）。第２層プログラムが次層プログラムに対して認証を行う必要がない場合（ステップ６５０で「いいえ」）、方法６００は終了する。第２層プログラムが次層プログラムに対して認証を行う必要がある場合（ステップ６５０で「はい」）、第２層プログラムは次層プログラムに対して認証を行う（ステップ６６０）。好適な実施形態では、方法６００をいずれかの適切な数の層に拡張して、動的に生成された鍵対を用いて各層が次層に対する認証を実行可能であることは、当業者には認められよう。図６のステップ６４０および６６０は、図１のプログラム間認証機構１２８によって実行すると好ましいことを注記しておく。
【００２８】
図７に、好適な実施形態にしたがって図６のステップ６４０についての１つの適切な実施例を示す。第１層プログラムが第２層プログラムに対する認証を行う必要がある場合、第１層プログラムは、まず、ユーザ・トークンＵＴを構築する（ステップ７１０）。ユーザ・トークンは、好ましくはユーザに関する情報を含む。次いで、第１層プログラムは、トークン・マニフェスト（指示票）ＴＭを構築する（ステップ７２０）。トークン・マニフェストは、好ましくは、第１層プログラムに関する情報および第２層プログラムに関する情報を含む。次いで、第１層プログラムは、トークン・マニフェストをユーザ・トークンの先頭に追加することによって認証トークンＡＴ１を生成し、この結果は、第１層プログラムのために動的に生成された秘密鍵を用いてデジタル署名され、次いでデジタル署名は認証トークンの先頭に追加される（ステップ７３０）。次いで、第１層プログラムは、認証トークンＡＴを第２層プログラムに送信する（ステップ７４０）。第２層プログラムは、第１層プログラムから受信した認証トークンＡＴ１を検証する（ステップ７５０）。認証トークンＡＴ１は、第１層プログラムのユーザ・レジストリに関連付けてユーザの識別証を含むので、認証トークンＡＴ１は、エンド・ユーザの識別証を第２層プログラムにアサートする。ステップ７５０の検証を行うには、好ましくは、第２層プログラムが、認証トークンに署名するために用いた第１層プログラムの公開鍵を発行した公開鍵当局に問合せを行い、第１層プログラムのための返信された公開鍵を用いて認証トークンが第１層プログラムについて有効であるか否かを判定する。有効であれば、第１層プログラムは第２層プログラムに対して認証される（ステップ７６０）。相互認証が必要である場合（ステップ７６２で「はい」）、第２層プログラムは、第２層プログラムのために動的に生成された鍵を用いて、第１層プログラムから受信した認証トークンに署名し、新しい認証トークンＡＴ２を生成し、この新しい認証トークンを第１層プログラムに戻す（ステップ７７０）。次いで、第１層プログラムは、好ましくは第２層プログラムのための公開鍵の公開鍵当局に問合せを行い、この公開鍵を用いて認証トークンＡＴ２が第２層プログラムについて有効であるか否かを判定することによって、第２層プログラムから受信した認証トークンＡＴ２を検証する（ステップ７８０）。ステップ７８０において、認証トークンＡＴ２が検証されたと仮定すると、第２層プログラムは第１層プログラムに対して認証される（ステップ７９０）。いったんステップ７９０において第２層プログラムが第１層プログラムに対して検証されると、第２層プログラムは、第１層プログラムがアサートした識別証から、第２層プログラムが理解する識別証に、識別証マッピングを実行する（ステップ７９２）。また、相互認証が必要でない場合（ステップ７６２で「いいえ」）も、第２層プログラムはステップ７９２において識別証マッピングを実行することを注記しておく。
【００２９】
図８に、好適な実施形態にしたがって図６のステップ６６０についての１つの適切な実施例を示す。第２層プログラムが次層プログラムに対する認証を必要とする場合（ステップ６５０で「はい」）に、図６のステップ６６０は実行されるので、ステップ６４０において第１層プログラムを第２層プログラムに対して認証するために図７に示すステップがすでに実行されていると仮定する。ここで、ユーザは、第２層プログラムが第３層プログラムに対して認証を行うことを求めるトランザクションの要求を行うと仮定する。この時点で図８のステップが実行される。第２層プログラムは、第２層プログラムのために動的に生成された秘密鍵を用いてＡＴ２に署名することによって認証トークンＡＴ３を動的に生成し、ＡＴ３を第３層プログラムに送信する（ステップ８１０）。次いで、第３層プログラムは、好ましくは、第２層プログラムのための公開鍵についての公開鍵当局に問合せを行い、この公開鍵を用いて認証トークンＡＴ３が第２層プログラムについて有効であるか否かを判定することによって、第２層プログラムから受信した認証トークンＡＴ３を検証する（ステップ８２０）。ステップ８２０において認証トークンＡＴ３が検証されると仮定すると、第２層プログラムは第３層プログラムに対して認証される（ステップ８３０）。第２層プログラムと第３層プログラムとの間で相互認証が必要な場合（ステップ８４０で「はい」）、第３層プログラムは、第３層プログラムのために動的に生成された秘密鍵を用いて認証トークンＡＴ３に署名して、新しい認証トークンＡＴ４を生成し、これを第２層プログラムに戻す（ステップ８５０）。次いで、第２層プログラムは、好ましくは、第３層プログラムのための公開鍵についての公開鍵当局に問合せを行い、この公開鍵を用いて認証トークンＡＴ４が第３層プログラムについて有効であるか否かを判定することによって、第３層プログラムから受信した認証トークンＡＴ４を検証する（ステップ８６０）。ステップ８６０において認証トークンＡＴ４が検証されると仮定すると、第３層プログラムは第２層プログラムに対して認証される（ステップ８７０）。ステップ８７０で、いったん第３層プログラムが第２層プログラムに対して認証されると、第３層プログラムは第２層プログラムがアサートした識別証から第３層プログラムが理解する識別証への識別証マッピングを実行する（ステップ８８０）。また、相互認証が必要でない場合（ステップ８４０で「いいえ」）も、第２層プログラムはステップ８８０で識別証マッピングを行うことを注記しておく。
【００３０】
ここで図９を参照すると、好適な実施形態による方法９００は、各プログラムが公開鍵当局に対する認証を行うためのステップを示す。第１層プログラムは、最初にロードされた場合に公開鍵当局に対する認証を行う（ステップ９１０）。同様にして、第２層プログラムは、最初にロードされた場合に公開鍵当局に対する認証を行う（ステップ９２０）。もっと多くの層がある場合（ステップ９３０で「はい」）、各々の追加層プログラムは、そのプログラムがロードされた場合に公開鍵当局に対する認証を行う（ステップ９４０）。それらのプログラムは、いずれかの適切な手法を用いて公開鍵当局に対する認証を行うことができる。例えば、各プログラムは、機密ユーザＩＤおよびパスワードを有し、これらを用いて公開鍵当局に対する認証を行い、いったん認証されると、公開鍵当局に対する接続をオープンに維持し、認証トークンの検証に必要な公開鍵を受信するために必要に応じて公開鍵当局に問合せを行うことができる。
【００３１】
図１０の方法１０００に、最初にロードされた場合に公開鍵当局に対するプログラムの認証を行う代替案を示す。この方法において、各プログラムは、受信した認証トークンを検証するために、公開鍵当局に対して動的に認証を行う（ステップ１０１０）。この公開鍵当局による動的認証によってシステムの実行時間オーバーヘッドが増すが、機密認証情報の必要性をなくすことができる。なぜなら、各プログラムは、動的に生成された公開／秘密鍵対および受信した認証トークンを用いて、動的に公開鍵当局によって認証を行えるからである。このため、ステップ１０１０において公開鍵当局によって動的に認証を行うことに関連した追加の実行時間オーバーヘッドは、図９の方法９００において用いられる機密鍵を保存および維持しなければならないシステムには好適なことがある。
【００３２】
図１１を参照すると、好適な実施形態による方法１１００は、認証トークンを検証する際に実行されるステップを示す。このため、方法１１００は、図７のステップ７５０および７８０の間、および図８のステップ８２０および８６０の間に実行される可能性がある。最初に、公開鍵当局に問合せを行うプログラムは、認証トークンを送信したプログラムのための公開鍵を要求する（ステップ１１１０）。次いで、公開鍵当局は、送信側の公開鍵を戻す（ステップ１１２０）。送信側の公開鍵は、次いで、認証トークンを送信したプログラムによって認証トークンが署名されていることを保証するため、認証トークンを受信したプログラムによって用いられる（ステップ１１３０）。認証トークンの署名者および認証トークンの送信側が同一である場合（ステップ１１４０で「はい」）、認証トークンは検証される（ステップ１１５０）。認証トークンの署名者および認証トークンの送信側が同一でない場合（ステップ１１４０で「いいえ」）、認証トークンの検証は失敗である（ステップ１１６０）。
【００３３】
ここで、図６ないし１１の方法に関して上述した概念を例示する一例を示す。図１２を参照すると、認証トークン１２００の１つの適切な実施例が図示されている。これは、ユーザ・トークンＵＴ、トークン・マニフェストＴＭ、および、送信側に対応して動的に生成された鍵を用いた、添付のＴＭおよびＵＴに対する署名を含む。ユーザ・トークンＵＴは、ユーザに関連する情報を含むのが適切である。適切なユーザ情報の１例を図１２に示し、これは、ユーザＩＤ、ユーザＩＤの長さ、レジストリ名、およびレジストリ名の長さを含む。むろん、好適な実施形態の範囲に収まるような他の情報をユーザ・トークンＵＴに含ませることができる。
【００３４】
トークン・マニフェストＴＭは、認証トークンの送信側および認証トークンの受信側に関連する情報を含むのが適切である。トークン・マニフェストに保存される適切な情報の一例を図１２に示す。これは、送信側プログラムのプログラムＩＤ、送信側プログラムのＩＤの長さ、受信側プログラムのプログラムＩＤ、受信側プログラムのＩＤの長さ、送信側の公開鍵タイムスタンプ、受信側の公開鍵タイムスタンプ、トークン・マニフェスト・カウンタ、トークン・マニフェストの長さ、および相互認証フラグを含む。トークン・マニフェスト・カウンタは、層のレベルをカウントし、記録ファイルに情報を書き込む場合に有用な情報を提供する（図１の１２７を参照）。相互認証フラグは、セットされると、層間の相互認証を必要とする（例えば図７のステップ７６２で「はい」、および図８のステップ８４０で「はい」）。トークン・マニフェストＴＭはユーザ・トークンＵＴの先頭に追加され、次いで送信側は、動的に生成され送信側に割り当てられた送信側の秘密鍵を用いて、その結果にデジタル署名する。
【００３５】
ここで図１３を参照すると、第１層プログラムを第２層プログラムに対して認証するために用いられる見本の認証トークンＡＴ１が示されている。これは、ユーザ・トークンＵＴ、トークン・マニフェストＴＭ１、および第１層プログラム（ＦＴＰ）の署名を含む。この認証トークンＡＴ１は、図７に示し上述したＡＴ１に対応する。このため、図１３に、図７のステップ７３０で作成されたＡＴ１を示す。相互認証が必要である場合、第２層プログラムは、動的鍵生成機構によって動的に生成されたそれ自身の秘密鍵を用いてＡＴ１に署名し、これによって（図７のステップ７７０で説明したように）図１４に示すＡＴ２を生成する。第２層プログラムが第３層プログラムに対する認証を行う必要がある場合、第２層プログラムＳＴＰは最初に第１層プログラムから認証トークンＡＴ１を受信し、トークン・マニフェストＴＭ２を先頭に追加し、その結果にデジタル署名して図１５に示す新しい認証トークンＡＴ３を作成する。ＡＴ３の作成は、図８のステップ８１０に記載されている。第２層プログラムＳＴＰと第３層プログラムＴＴＰとの間の相互認証が必要である場合、第３層プログラムは、公開鍵当局によって動的に生成されたその秘密鍵を用いて、第２層プログラムから受信したＡＴ３にデジタル署名し、この結果、図１６の新しい認証トークンＡＴ４が作成され、図８のステップ８５０において第２層プログラムに戻される。第３層プログラムが第４層プログラムに対する認証を行う必要がある場合、第３層プログラムは、第２層プログラムから受信したＡＴ３に新しいトークン・マニフェストＴＭ３を追加し、公開鍵当局によって動的に生成されたその秘密鍵を用いてこれに署名することによって新しい認証トークンを発生し、この結果、図１７の新しい認証トークンＡＴ５が作成され、第４層プログラムに送信することができる。このプロセスは、いずれかの適切な数の層について継続することができる。このため、図１８に示すように、Ｎ層のプログラムが、新しいトークン・マニフェストＴＭＮを追加し、動的に生成されたその秘密鍵を用いてこれに署名することによって、（Ｎ＋１）層プログラムにより認証を行うための認証トークンＡＴＮを作成することができる。各層ごとの認証トークンは、前の層から受信した認証トークンから発生し、この結果、ユーザとエンド・ユーザとの間の全ての層からの情報を含む認証トークンが生成される。結果として、各認証トークンは、エンド・ユーザと最後の層のプログラムとの間の全トランザクションを固有に含み、こうして、この情報を記録ファイルに書き込むことができる（例えば図１の１２７）。
【００３６】
図１０の方法１０００は、ステップ１０１０において、受信した認証トークンを検証するために、公開鍵当局により動的に認証を行うステップを指す。第３層プログラムによる認証のため、第２層プログラムによって図１５の認証トークンＡＴ３を生成された。この同一の認証トークンＡＴ３を用いて、公開鍵当局に対する認証が可能である。いったん公開鍵当局がＡＴ３を検証すると、公開鍵当局は、それ自身の秘密鍵を用いてＡＴ３に署名することによって、図１９に示す新しい認証トークンＡＴ３’を作成する。次いで、第２層プログラムは、ＡＴ３’が有効であると検証することができる。同様に、第３層プログラムにより作成された図１７の認証トークンＡＴ５を用いて、同じ方法で公開鍵当局により認証を行うことができる。この例では、公開鍵当局は、ＡＴ５に署名して、ＡＴ５から、図２０に示すＡＴ５’を生成する。次いで、第３層プログラムは、認証トークンＡＴ５’が有効であるか否かを判定することができる。最も好適な実施例では、最終層プログラムのみが公開鍵当局に対する認証を行って、各層が個別に公開鍵当局に対して認証を行う実行時間オーバーヘッドを回避する。認証トークンは、ユーザと最終層プログラムとの間の各レベルについて情報を含むので、最終層プログラムは、送信側の公開鍵について公開鍵当局に問合せを行って、認証トークンの情報の全てが有効であることを検証することができる。
【００３７】
図７に戻ると、ステップ７１０はユーザ・トークンＵＴを構築する。図２１に、図７のステップ７１０の１つの可能な実施例を示し、これは、図１２に示すユーザ・トークンＵＴを生成する。ユーザＩＤが含まれ（ステップ２１１０）、エンド・ユーザが第１層プログラムに対する認証を行うために用いるレジストリ名が含まれ（ステップ２１２０）、ユーザＩＤの長さおよびレジストリ名の長さが含まれる（ステップ２１３０）。同様に、図２２は、図７のステップ７２０の１つの可能な実施例を示し、図１２に示すトークン・マニフェストＴＭを生成する。第１層プログラムの識別子が、識別子の長さと共に含まれる（ステップ２２１０）。同様に、第２層プログラムの識別子および長さが含まれる（ステップ２２２０）。第１層プログラムの公開鍵のタイムスタンプが、第２層プログラムの公開鍵のタイムスタンプと共に含まれる（ステップ２２３０）。次いで、トークン・マニフェスト・カウンタ、トークン・マニフェストの長さ、および相互認証フラグが含まれる（ステップ２２５０）。ステップ２２３０および２２４０における鍵のタイムスタンプは、動的鍵生成機構によって動的に生成された鍵対がいまだ有効であるか否かを判定する。好適な実施形態では、数分の１秒から数年まで、動的に生成された公開／秘密鍵対についていずれかの適切な持続時間に意図的に拡張する。しかしながら、最も好適な実施形態では、動的に生成された公開／秘密鍵対は、数分間、おそらくは数時間だけ有効であるのみである。古いものの期限が切れた場合、動的鍵生成機構に新しい鍵を動的に生成させる。結果として、システムでは、鍵が頻繁に変更するので、ハッカーに獲得された場合に極めて用途が限られることになる。
【００３８】
好適な実施形態の１つの重要な側面は、次層プログラムのため認証トークンを生成する際に前の層のプログラムから受信した認証トークンを用いることで、認証トークンにおいて情報を重ね合わせることである。この結果、認証トークンは、ユーザと現層との間の全てのプログラムに関連する情報を含む。これによって、記録ファイルを維持し、即ちプログラムが認証トークンを検証するたびに書き込まれる。図１に、この記録ファイル１２７を示す。上述のように、検証のため公開鍵当局に渡された認証トークン（図１５のＡＴ３または図１７のＡＴ５等）は、認証トークンを検証しているプログラムに到達するために経た経路を示す一連の情報を含む。この結果、記録ファイルのデータを用いて、システムの性能ボトルネックを決定し、プログラム間の問題をデバッグし、不正のユーザまたはプログラムが検出された場合に法的な証拠を提供する。図２３を参照すると、方法２３００は、好ましくは、図１０のステップ１０１０において公開鍵当局に対する動的な認証を行うステップの間に公開鍵当局によって実行される。最初に、送信側および認証トークンに署名したプログラムが同一であるかを保証することによって、送信側から受信した認証トークンを検証する（ステップ２３１０）。次いで、記録ファイルに、１つ以上のエントリを書き込んで、認証トークンにおける情報を表す（ステップ２３２０）。次いで、公開鍵当局は、公開鍵当局の秘密鍵を用いて受信した認証トークンに署名することによって新しい認証トークンを生成し、そして新しい認証トークンを戻す（ステップ２３３０）。公開鍵当局は、必ずしも認証トークン全体を送信しなければならないわけではなく、代わりに、単に認証トークンに対するデジタル署名を戻すことも可能であることに留意すべきである。公開鍵当局を検証することにより、方法２３００は、公開鍵当局が認証トークンに署名したことを検証することによる一般人の攻撃を防ぐ。
【００３９】
本発明によって、多数レベルのプログラムは、動的に生成された公開／秘密鍵対を用いて互いに認証することが可能となる。本発明の１つの態様は、ある層のプログラムがエンド・ユーザの識別証を次の層にアサートする機能である。このため、ユーザによって、第１層プログラムが第２層プログラムに対する認証を行なうことを求める要求がされると、これは次いで第３層プログラム等に対する認証を行わなければならないが、各レベルで、エンド・ユーザの識別証をプログラムにアサートし、プログラムは、要求されたサービスを得るために必要なアクセスをユーザが有するかを判定することができる。次層のための認証トークン情報を重ね合わせることによって、いずれの層のプログラムも、他の層に関連する認証トークンに埋め込まれた全情報にアクセスすることができる。更に、どのプログラムが他のプログラムにアクセスしたかを記録する機能は、性能の改善を識別するのに役立つ高度な分析を可能とし、高度なデバッグを可能とし、更に、ユーザまたはプログラムによる侵入が検出された場合に法的な分析を可能とする。
【００４０】
本発明の範囲内で多くの変形が可能であることは、当業者には認められよう。このため、本発明は、その好適な実施形態に関連して具体的に図示し説明したが、本発明の精神および範囲から逸脱することなく、形態および詳細においてこれらおよび他の変更を行い得ることは当業者には理解されよう。例えば、図４の方法４００に関連する従来技術の説明は、ユーザＩＤおよびパスワードを中央位置に保存する場合に生じる問題を示す。しかしながら、ユーザＩＤ（パスワードなし）は、中央位置に保存することもできる一方、好適な実施形態の動的に生成された公開／秘密鍵対を用いて認証が実行されることを注記しておく。これらおよび他の変形は、本明細書中に開示した好適な実施形態の範囲内である。
【図面の簡単な説明】
【００４１】
【図１】好適な実施形態による装置のブロック図である。
【図２】従来技術の多層コンピューティング環境の図である。
【図３】図２のコンピューティング環境の第１の従来技術の方法のフロー図であり、この方法によって、ユーザは第１層プログラムによる認証を行うことができ、第１層プログラムは第２層プログラムによる認証を行うことができる。
【図４】図２のコンピューティング環境の第２の従来技術の方法のフロー図であり、この方法によって、ユーザは第１層プログラムによる認証を行うことができ、第１層プログラムは第２層プログラムによる認証を行うことができる。
【図５】図２のコンピューティング環境の第３の従来技術の方法のフロー図であり、この方法によって、ユーザは第１層プログラムによる認証を行うことができ、第１層プログラムは第２層プログラムによる認証を行うことができる。
【図６】図２のコンピューティング環境の好適な実施形態による方法のフロー図であり、この方法によって、動的に生成された公開／秘密鍵対を用いて、ユーザは第１層プログラムによる認証を行うことができ、第１層プログラムは第２層プログラムによる認証を行うことができる。
【図７】好適な実施形態による図６のステップ６４０の１つの適切な実施例を示すフロー図である。
【図８】好適な実施形態による図６のステップ６６０の１つの適切な実施例を示すフロー図である。
【図９】各プログラムをロードした場合に各プログラムが公開鍵当局による認証を行うための、好適な実施形態による方法のフロー図である。
【図１０】受信した認証トークンを検証するために各プログラムが公開鍵当局による動的な認証を行うための、好適な実施形態による方法のフロー図である。
【図１１】別のプログラムから受信した認証トークンを検証するための、好適な実施形態による方法のフロー図である。
【図１２】好適な実施形態による認証トークンの１つの適切な実施を示す図である。
【図１３】第２層プログラムに対する認証を行うために第１層プログラムが構築する認証トークンを示す。
【図１４】第１層プログラムと第２層プログラムとの間の相互認証が必要な場合に第１層プログラムに対する認証を行うために第２層プログラムが戻す認証トークンを示す。
【図１５】第３層プログラムに対する認証を行うために第２層プログラムが構築する認証トークンを示す。
【図１６】第２層プログラムと第３層プログラムとの間の相互認証が必要な場合に第２層プログラムに対する認証を行うために第３層プログラムが戻す認証トークンを示す。
【図１７】第４層プログラムに対する認証を行うために第３層プログラムが構築する認証トークンを示す。
【図１８】第（Ｎ＋１）層プログラムによる認証を行うために第Ｎ層プログラムが構築する認証トークンを示す。
【図１９】図１５の認証トークンＡＴ３を検証のため公開鍵当局に渡す場合に公開鍵当局によって戻される認証トークンを示す。
【図２０】図１７の認証トークンＡＴ５を検証のため公開鍵当局に渡す場合に公開鍵当局によって戻される認証トークンを示す。
【図２１】図７のステップ７１０の好適な実施形態の範囲内の１つの具体的な実施例を示す方法である。
【図２２】図７のステップ７２０の好適な実施形態の範囲内の１つの具体的な実施例を示す方法である。
【図２３】好適な実施形態の範囲内の公開鍵当局が実行する方法である。
【図１】
2005158065.tif 000003
【図２】
2005158065.tif 000004
【図３】
2005158065.tif 000005
【図４】
2005158065.tif 000006
【図５】
2005158065.tif 000007
【図６】
2005158065.tif 000008
【図７】
2005158065.tif 000009
【図８】
2005158065.tif 000010
【図９】
2005158065.tif 000011
【図１０】
2005158065.tif 000012
【図１１】
2005158065.tif 000013
【図１２】
2005158065.tif 000014
【図１３】
2005158065.tif 000015
【図１４】
2005158065.tif 000016
【図１５】
2005158065.tif 000017
【図１６】
2005158065.tif 000018
【図１７】
2005158065.tif 000019
【図１８】
2005158065.tif 000020
【図１９】
2005158065.tif 000021
【図２０】
2005158065.tif 000022
【図２１】
2005158065.tif 000023
【図２２】
2005158065.tif 000024
【図２３】
2005158065.tif 000025