(57)【特許請求の範囲】
【請求項１】
データの真正性を検証するためにコンピュータシステムで実行される方法であって、
コンピュータシステムが、少なくとも一つのデータファイルと一つの署名ファイルとを通信手段を用いて受け取るステップであって、該少なくとも一つのデータファイルと該署名ファイルとは分離されており、該署名ファイルは、該少なくとも一つのデータファイルのそれぞれに対応する少なくとも一つの識別子と、一つの電子署名とを含む、ステップと、
前記コンピュータシステムが、記憶手段に記憶された前記署名ファイルを署名アルゴリズムを用いて検証することで該署名ファイルの真正性を判断する、ステップと、
前記コンピュータシステムが、前記署名ファイルが真正であると判断された場合に、記憶手段に記憶された前記少なくとも一つのデータファイルの真正性を判断するステップであって、
前記データファイルをロードし、ロードされた前記データファイルに対して識別子アルゴリズムを使って該データファイルに対応する識別子を導出するサブステップと、
前記導出された識別子と前記署名ファイル内の前記識別子とを比較するサブステップと、
前記導出された識別子と前記署名ファイル内の前記識別子とが一致した場合に、これらの識別子に対応する前記データファイルを、署名されたものとしてマーキングするサブステップと、
を前記データファイルの各々に対して実行する、ステップと、
前記少なくとも一つのデータファイルが、セキュリティレベルが設定されたアプレットを含んでいる場合に、前記署名ファイルが真正であると判断されると、前記コンピュータシステムが該アプレットに検証済のアプレットとしてブランドを付けるステップと、
前記コンピュータシステムが、前記ブランドが付けられたアプレットを動作させるステップと、
前記コンピュータシステムが、前記アプレットがセキュリティチェックを駆動させるか否かを決定するステップと、
を含み、
前記セキュリティチェックは、前記コンピュータシステムが前記ブランドと前記セキュリティレベルとを比較する第１サブステップと、その比較により前記アプレットのセキュリティが満たされていると判定された場合に前記コンピュータシステムが前記アプレットの動作を許可し、該セキュリティが満たされていないと判定された場合に前記コンピュータシステムが該動作を許可しない第２サブステップとを含む、
方法。
【請求項２】
前記少なくとも一つのデータファイルの真正性を判断するステップは、前記導出された識別子と前記署名ファイル内の前記識別子とが一致しない場合に、前記データファイルを無視するサブステップと、前記データファイルのロードを中止するサブステップと、ユーザに警告するサブステップとの群から選択された少なくとも一つのサブステップを該データファイルの各々に対して実行する、
請求項１に記載の方法。
【請求項３】
前記署名アルゴリズムは、キー付きのアルゴリズムである、
請求項１に記載の方法。
【請求項４】
前記署名アルゴリズムは、メッセージダイジェストアルゴリズム及びＲＳＡ暗号化アルゴリズムを組み合わせたものと、ＤＳＡアルゴリズムと、からなる群から選択されるアルゴリズムである、
請求項３に記載の方法。
【請求項５】
前記導出された識別子と前記署名ファイル内の前記識別子とを比較する前記ステップは、一方向ハッシュ関数アルゴリズムを用いて一つ以上の前記識別子を生成するサブステップを更に含む、
請求項１に記載の方法。
【請求項６】
前記導出された識別子と前記署名ファイル内の前記識別子とを比較する前記ステップは、サイクリック冗長性チェックサムアルゴリズムを用いて一つ以上の前記識別子をチェックするサブステップを更に含む、
請求項１に記載の方法。
【請求項７】
前記署名ファイルは、テキスト、ファイルの名前、ファイル作成者、ファイルバージョン、ファイル日付及びファイルのレート付けからなる群から選択された追加のデータを含む、
請求項１に記載の方法。
【請求項８】
前記識別子は、一方向ハッシュ関数アルゴリズム及びサイクリック冗長性チェックサムアルゴリズムのうちの一つを用いて生成される、
請求項１に記載の方法。
【請求項９】
前記少なくとも一つのデータファイルと一つの署名ファイルとを受け取る前記ステップは、該データファイルと前記署名ファイルとをネットワーク接続されたコンピュータシステム間で転送するサブステップを更に含む、
請求項１に記載の方法。
【請求項１０】
前記セキュリティレベルが、サイト証明と、ソフトウェア配布者の識別子と、サイト名とのうち少なくとも一つに対して設定されている、
請求項１に記載の方法。
【請求項１１】
前記少なくとも一つのデータファイルが前記アプレットを含んでいる場合に、前記署名ファイルが真正であると判断されなければ、前記コンピュータシステムが未署名のデータファイルが前記コンピュータシステム上での実行に対して受け入れ可能か否かを決定するステップと、
前記コンピュータシステムが、未署名のデータファイルが前記コンピュータシステム上での実行に対して受け入れ可能でない場合に前記アプレットを停止するステップとを含む、
請求項１に記載の方法。
【請求項１２】
前記コンピュータシステムが、未署名のデータファイルが前記コンピュータシステム上での実行に対して受け入れ可能であると決定された場合に、前記アプレットに前記ブランドを付けるステップを含む、
請求項１１に記載の方法。
【請求項１３】
前記第１サブステップでは、前記コンピュータシステムがユーザによるセキュリティ設定の置き換えの入力を受け付け、
前記第２サブステップでは、受け付けられた入力に基づいて前記セキュリティが満たされていると判定された場合に前記コンピュータシステムが前記アプレットの動作を許可し、該セキュリティが満たされていないと判定された場合に前記コンピュータシステムが該動作を許可しない、
請求項１に記載の方法。
【請求項１４】
少なくとも一つのデータファイル及び一つの署名ファイルの真正性を検証する装置であって、該署名ファイルは、該少なくとも一つのデータファイルのそれぞれに対応する少なくとも一つの識別子と、一つの電子署名とを含み、
前記電子署名を処理して前記署名ファイルの真正性を判断する第１判断手段と、
前記署名ファイルが真正であると判断された場合に、前記少なくとも一つのデータファイルの真正性を判断する第２判断手段であって、前記データファイルをロードし、ロードされた前記データファイルに対して識別子アルゴリズムを使って該データファイルに対応する識別子を導出し、前記導出された識別子と前記署名ファイル内の前記識別子とを比較し、前記導出された識別子と前記署名ファイル内の前記識別子とが一致した場合に、これらの識別子に対応する前記データファイルを、署名されたものとしてマーキングする、ことを前記データファイルの各々に対して実行する、第２判断手段と、
前記少なくとも一つのデータファイルが、セキュリティレベルが設定されたアプレットを含んでいる場合に、前記署名ファイルが真正であると判断されると、該アプレットに検証済のアプレットとしてブランドを付けるブランド付け手段と、
前記ブランドが付けられたアプレットを動作させる動作手段と、
前記アプレットがセキュリティチェックを駆動させるか否かを決定する決定手段と、
を備え、
前記セキュリティチェックは、前記ブランドと前記セキュリティレベルとを比較する第１サブステップと、その比較により前記アプレットのセキュリティが満たされていると判定された場合に前記アプレットの動作を許可し、該セキュリティが満たされていないと判定された場合に該動作を許可しない第２サブステップとを含む、
装置。
【請求項１５】
前記第２判断手段は、前記導出された識別子と前記署名ファイル内の前記識別子とが一致しない場合にユーザに警告することを前記データファイルの各々に対して実行する、
請求項１４に記載の装置。
【請求項１６】
前記第１判断手段は、署名アルゴリズムを用いて前記電子署名を検証する、
請求項１４に記載の装置。
【請求項１７】
前記署名アルゴリズムは、メッセージダイジェストアルゴリズム及びＲＳＡ暗号化アルゴリズムを組み合わせたものと、ＤＳＡアルゴリズムと、からなる群から選択されるアルゴリズムである、
請求項１６に記載の装置。
【請求項１８】
前記セキュリティレベルが、サイト証明と、ソフトウェア配布者の識別子と、サイト名とのうち少なくとも一つに対して設定されている、
請求項１４に記載の装置。
【請求項１９】
データの真正性を検証するための方法をコンピュータシステムに実行させるためのプログラムが記録されたコンピュータ読み取り可能な記録媒体であって、
前記方法は、
少なくとも一つのデータファイルと一つの署名ファイルとを受け取るステップであって、該少なくとも一つのデータファイルと該署名ファイルとは分離されており、該署名ファイルは、該少なくとも一つのデータファイルのそれぞれに対応する少なくとも一つの識別子と、一つの電子署名とを含む、ステップと、
前記署名ファイルの真正性を判断するために該署名ファイルを処理するステップであって、前記電子署名を処理して該署名ファイルの真正性を判断する、ステップと、
前記署名ファイルが真正であると判断された場合に、前記少なくとも一つのデータファイルの真正性を判断するステップであって、
前記データファイルをロードし、ロードされた前記データファイルに対して識別子アルゴリズムを使って該データファイルに対応する識別子を導出するサブステップと、
前記導出された識別子と前記署名ファイル内の前記識別子とを比較するサブステップと、
前記導出された識別子と前記署名ファイル内の前記識別子とが一致した場合に、これらの識別子に対応する前記データファイルを、署名されたものとしてマーキングするサブステップと、
を前記データファイルの各々に対して実行するステップと、
前記少なくとも一つのデータファイルが、セキュリティレベルが設定されたアプレットを含んでいる場合に、前記署名ファイルが真正であると判断されると、該アプレットに検証済のアプレットとしてブランドを付けるステップと、
前記ブランドが付けられたアプレットを動作させるステップと、
前記アプレットがセキュリティチェックを駆動させるか否かを決定するステップと、
を含み、
前記セキュリティチェックは、前記ブランドと前記セキュリティレベルとを比較する第１サブステップと、その比較により前記アプレットのセキュリティが満たされていると判定された場合に前記アプレットの動作を許可し、該セキュリティが満たされていないと判定された場合に該動作を許可しない第２サブステップとを含む、
コンピュータ読取り可能な記録媒体。
【請求項２０】
前記方法は、
前記少なくとも一つのデータファイルが前記アプレットを含んでいる場合に、前記署名ファイルが真正であると判断されなければ、未署名のデータファイルが前記コンピュータシステム上での実行に対して受け入れ可能か否かを決定するステップと、
未署名のデータファイルが前記コンピュータシステム上での実行に対して受け入れ可能でない場合に前記アプレットを停止するステップとを含む、
請求項１９に記載のコンピュータ読取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に計算資源の間のデータの共有に関するものである。より詳細には、本発明は、コンピュータシステム上で処理されているデータの真正性（authenticity）を保証し（secure）また証明するための方法、装置、及び生産物に関するものである。
【０００２】
【従来の技術】
インターネットといったネットワーク化されたコンピュータ環境の人気が高くなるにつれて、共有されている情報を安全な（secure）方法でネットワーク化されたコンピュータ間において伝送する方法を用意する要求が高まってきた。例えば、インターネットのユーザがデータの形式で情報を他のユーザに送るとき、受け手のユーザにとって、受け取ったデータが何らかの方法で変質されていなかったこと、さもなければ改変されていなかったこと、を検証することが有益なことがある。さらに、受け手のユーザは、受け取ったデータが詐称者からではなく送り手ユーザから実際に送られたことを検証することが有益であることを見いだすこともある。
【０００３】
その結果、コンピュータネットワークや他のデータリンクにわたって転送されたデータのセキュリティを増す方法やアルゴリズムが、一定の成果とともに、開発されまた展開されてきた。もっと安全な方法には、データを送るに先立ってその全部または一部を暗号化し、また同様にして、送られたデータを使うに先立ってそれを復号化することを含む傾向がある。そのような暗号化や復号化の技術には、例えばコンピュータシステムを用い「署名アルゴリズム」を走らせることによって、暗号化データをデータファイルに付加し、そのデータファイル内のデータを暗号化したり、さもなければ変形したりすることを含む。
【０００４】
現在、今日使用されているいくつかの署名アルゴリズムがある。１つの著名な署名アルゴリズムは、実際には、メッセージ・ダイジェスト（Message Digest）アルゴリズムとＲＳＡ暗号アルゴリズムを組み合わせ（例えば、ＭＤ５とＲＳＡの組み合わせ、ＭＤ２とＲＳＡの組み合わせ等）である。ＲＳＡ付きのメッセージ・ダイジェストは、カルフォルニアのレッドウッド・シティ（Redwood City）にあるメッセージ・データ・セキュリティ（Message Data Security）社から入手可能である。他の有名な署名アルゴリズムは、ＤＳＡ暗号化アルゴリズムである。ＤＳＡ暗号化アルゴリズムは、米国政府から入手可能であり、署名アルゴリズムとして私的な団体によって限られた目的のために用いることができる。これらの署名アルゴリズムを、限定された詳しさで以下に説明する。
【０００５】
ＲＳＡアルゴリズム付きのメッセージ・ダイジェストは、データファイルに付加できる「電子署名（デジタル署名、digital signature）」を生成する性能（capability）を含む。電子署名は、基本的には、ユーザが受け取ったデータファイルの出所（source）が真正であることを証明できるメカニズムである。電子署名は、典型的には、関連のデータファイルに伴って、他のユーザに対して発生され、また供給されることができるデータの特別な続き（sequence）である。ほとんどの署名アルゴリズムの裏にある基本的なコンセプトは、すべてのユーザ（例えば、個人や会社や政府など）が「私的キー（private key）」や「公開キー（public key）」の両方を含む「キーの対」を有していることである。キー（鍵）は、例えば、数の続きである。私的キーは、単一のユーザに割り当てられまたそのユーザによって秘密に保たれるも独自のキーである。私的キーは、割り当てられたユーザによって使用され署名アルゴリズムを用いデータファイルのための電子署名を創り出す。それに対して、公開キーは、典型的にはすべての他のユーザに対して利用できるようにされる。公開キーは、受け取ったデータファイルに関する電子署名が真正である（例えば、その電子署名がその私的キーで創り出された）ことを検証するために、これらの他のユーザによって用いられることができる。検証プロセスは、同じ署名アルゴリズムで達成される。原理的には、このような検証プロセスは、受け取ったデータの出所の真正性において比較的高い水準の信頼度を提供できる。
【０００６】
電子署名発生アルゴリズムに加えて、データファイルが何らかの方法で変質されていなかったことの真正性を証明するために用いられるアルゴリズムも存在する。これらのアルゴリズムは、典型的には「一方向ハッシュ関数（one-way hashfunction）」として知られている。そのようなアルゴリズムの一例は、上にて紹介されたメッセージ・ダイジェストである。一方向ハッシュ関数は、通常はキーを必要としない。一方向ハッシュ関数は、典型的には、データファイルに挿入される付加的なデータを含んである。そのため、データファイルを受け取ったとき、そのハッシュ関数は、そのハッシュ関数が発生されて以来、そのデータファイル内のどのデータも改変されていないことを検証するために使用できる。しかしながら、ハッシュ関数は、誰がそれを送ったいった、関連したファイルについての何事もユーザは必ずしも推論できないという点で典型的には限定されている。多くの署名アルゴリズムが一方向ハッシュ関数を内部の構成部品として使っている点を言及しておく。
【０００７】
インターネットといった比較的にオープンでセキュリティに欠けるネットワークに対しては、受け取ったデータファイルを使うに先立ってそれらが真正であること証明することはユーザにとって有益である。そのようなデータファイルには、制限されるものではないが、コンピュータプログラム、グラフィックス、テキスト、写真、音声、ビデオ、叉はコンピュータシステム内での使用に適する他の情報などがある。データファイルのタイプがどんなものであっても、真正性の証明は、上述したような署名アルゴリズム叉は暗号化アルゴリズムの類似タイプで達成されることができる。例示によれば、もしデータファイルがソフトウェアプログラムならば、そのプログラムがユーザのコンピュータをウィルスに感染させるトロイの木馬（Trojan Horse）を含んでいると困るので、ユーザのコンピュータシステムをソフトウェアプログラムにさらすに先立ってそのプログラムが信頼できる権限者によって送られたことが真正であると証明することをユーザが望むかもしれない。そのような場合においては、送り手のユーザは上述したように、データの真正性を証明できる。
【０００８】
別な例は、受け手のユーザが、自分のコンピュータの画面に表示するに先立ってテキストファイル及び画像データファイル、叉はテキストファイル若しくは画像データファイルが真正であると証明することを望む場合である。これは、望ましくない内容を有するテキスト及び画像の表示を制御するために有効である。例えば、親たちは成人ものの主題や資料に関係する絵やテキストに対する子供が行うあらゆるアクセスを制限したいかもしれない。これは、そのデータファイル（例えば、テキストファイル叉は画像ファイル）が信頼できる出所から来たことを検証することによって達成されることできる。同様に、テキストファイルや画像ファイルの供給者は、商標や他の知的所有権の使用を制御するように認可又は真正性の「スタンプ」を与えたいかもしれない。
【０００９】
【発明が解決しようとする課題】
残念ながら、暗号化することと復号化すること、署名することと検証すること、及び／叉はハッシュ関数を生成すること、のプロセスは、送り手及び受け手のユーザのコンピュータ資源に追加の負荷をかける（place）。この負荷は、いくつかのデータファイルを送ったりまた受けたりするユーザに対して度合いが増す。例えば、ワールドワイドウェブ（World-Wide Web）として知られるインターネットの側面が成長すると、ユーザ間における多数の（multiple）データファイルの転送において激増することに至る。このような多数のデータファイルは、ＪａｖａTMアプレット（Java applet）といったオブジェクト指向のソフトウェアプロセスを構成するコンポーネント叉はオブジェクトをしばしば含む。そのような多数のデータファイルの転送の際にユーザのコンピュータ資源上にかけ得る潜在的な負荷を例示するためには、そのファイルの各々のために電子署名を検証することに関連する結果として生じる処理時間を計算することのみを必要とする。例えば、仮にＪａｖａTMアプレットが電子的に署名された（データファイルも含む）２００個ものＪａｖａTMクラスファイルを含むとすると、通常のデスクトップコンピュータ上で平均検証時間が１秒であると仮定して、ユーザはデータファイルを受けた後にアプレットを使うために約２００秒もの間待たなくてはならないでしょう。そのような時間遅れは、コンピュータネットワーク環境の効率を著しく縮小させる可能性がある。このことは、リアル（またはリアルに近い）タイムでのストリーム方式の音声叉はビデオのデータファイルといった、時間が決められた処理に関係するデータファイルに関してはまさに真実となる。
【００１０】
従って、望まれていることは、データファイルの真正性を保証しまた検証するための、特にコンピュータネットワークにわたって転送されると意図されるデータファイルについての、より効率的な方法、装置および生産物である。
【００１１】
【課題を解決するための手段】
本発明は、コンピュータネットワークをわたって転送されると意図されるデータファイルのような、データファイルの真正性を保証しまた検証するための、より効率的な方法、装置および生産物を提供する。本発明の１つの側面に従って、データの真正性を検証するための方法は識別子と署名ファイルとを含む少なくとも１つのデータファイルを提供することを伴い、この署名ファイルは電子署名だけでなく、データファイルのための識別子を含む。そして、電子署名はコンピュータシステムを使用して検証され、そのデータファイル内の識別子はコンピュータシステムを使って署名ファイル内の識別子と比較される。
【００１２】
１つの実施例として、そのデータファイルのための識別子は、少なくとも１つの証明の認証、サイト証明、ソフトウェア配布者の識別子、またはサイト名を含み、またデータの真正性を検証することは少なくとも１つの証明の認証、前記サイト証明、前記ソフトウェア配布者の識別子、前記サイト名のためのセキュリティレベルを設定することを伴う。そのような実施例においては、データファイルがコンピュータシステムにダウンロードされ、そしてそのデータファイルがアプレットでありまたその電子署名が検証されると、データの真正性の検証することは、そのアプレットへブランドを付けることとそれに応じてアプレットを動作させることを伴う。
【００１３】
本発明の別の側面では、識別子を含んだ少なくとも１つのデータファイルと、電子署名に加えてデータファイルのための識別子を含む署名ファイルとの真正性を検証するための装置は、電子署名を検証するベリファイヤ（verifier）と、データファイル内の識別子と署名ファイル内の識別子を比較するためのコンパレータ（comparator）とを含む。別の実施例においては、そのコンパレータは一方向ハッシュ関数アルゴリズムを含む。
【００１４】
本発明のさらに別の側面においては、識別子を含み、且つデータファイルのためのその識別子と電子署名とを有する署名ファイルに関連づけられる、データファイルの真正性を検証するために用意されるコンピュータシステムは、プロセッサと、プロセッサに結合されるメモリと、電子署名を検証しまたデータファイル内の識別子を署名ファイル内の識別子を比較するために用意されたベリファイヤとを含む。ある実施例においては、そのデータファイルのための識別子は証明の認証、サイト証明、ソフトウェア配布者の識別子、およびサイト名のうちの少なくとも１つを含む。そのような実施例においては、ヴェリファイヤは証明認証、サイト証明、ソフトウェア開発者の識別子、およびサイト名のうちの少なくとも１つのためのセキュリティレベルを設定するように調整されている。別の実施例では、データファイルはアプレットであり、ベリファイアはアプレットにブランドを付け、且つそのアップレットを動作させるために用意されている。
【００１５】
本発明は、データの真正性を検証するための、コンピュータで実現される方法であって、該方法は、少なくとも１つのデータファイルと署名ファイルとを受け取る工程を備え、該データファイルと該署名ファイルは別個であり、該データファイルは識別子を含み、該署名ファイルは該データファイルのための該識別子と電子署名とを含み、該方法は、該署名ファイルの真正性を判断するためにコンピュータシステムを使用して署名ファイルの処理する工程を備える。
【００１６】
本発明の方法は、該コンピュータシステムを使用して、該データファイル内の該識別子と該署名ファイル内の該識別子を比較し該データファイルの真正性を判定する工程を更に含むことができ、署名ファイルを処理する該工程は、該署名ファイルの真正性を判定するためにコンピュータシステムを使用して該電子署名を処理する工程を更に含むことができる。
【００１７】
本発明の方法は、該データファイル内の該識別子と該署名ファイル内の該識別子が一致するとき、該データファイルを署名されたものとしてマーキングする工程を更に含むことができる。
【００１８】
本発明の方法は、該データファイルの該識別子と該署名ファイルの該識別子とが一致しないとき、該データファイルを無視すること、該データファイルのロードを中止すること、及びユーザに警告すること、の群から選択される少なくとも１つを、該データファイルの該識別子と該署名ファイルの該識別子とが一致しないとき、更に含むことができる。
【００１９】
本発明の方法では、該コンピュータシステムを使用して該データファイル内の該識別子を該署名ファイルの該識別子と比較する該工程が、第２のデータファイルに対して繰り返されるようにしてもよい。
【００２０】
本発明の方法では、該電子署名を処理する該工程は、署名アルゴリズムを用いて該電子署名を検証する工程を更に含むことができ、該署名アルゴリズムはキー付きのアルゴリズムであり、該署名アルゴリズムはＤＳＡアルゴリズムとメッセージ・ダイジェスト及びＲＳＡアルゴリズムの組み合わせとから成る群から選択されることができる。
【００２１】
本発明の方法では、該識別子は、１方向ハッシュ関数アルゴリズム及びサイクリック冗長チェックサムアルゴリズムの一方を使用して発生されるようにしてもよい。
【００２２】
本発明の方法では、該データファイル内の該識別子を該署名ファイル内の該識別子と比較する工程は、１方向ハッシュアルゴリズムを用いて１つ以上の該識別子を発生する工程を更に含むことができる。
【００２３】
本発明の方法では、該データファイル内の該識別子を該署名ファイル内の該識別子と比較する該工程は、サイクリック冗長チェックサムアルゴリズムを用いて１つ以上の該識別子をチェックする工程を更に含むことができる。
【００２４】
本発明の方法では、該データファイルと該署名ファイルとを受け取る該工程は、ネットワーク接続されたコンピュータ間で該データファイルと該署名ファイルを転送する工程を、更に含むことができる。
【００２５】
本発明の方法では、該データファイル内の該識別子は、証明の認証、サイト証明、ソフトウェア配布者の識別子、及びサイト名のうちの少なくとも１つを含むことができ、当該方法は、前記証明の認証、前記サイト証明、前記ソフトウェア配布者の識別子、前記サイト名の少なくとも１つに対してセキュリティレベルの設定を含むことができる。
【００２６】
本発明の方法は、該データファイルを該コンピュータシステムにダウンロードする工程を含み、該データファイルがアプレットを備えるとき、そして該電子署名が検証されるとき、当該方法は、検証されたものとして該アプレットにブランドを付ける（brand）工程、及び該アプレットを動作させる工程を含むことができる。
【００２７】
本発明の方法は、該データファイルがアプレットを備えるとき、そして該署名が検証されないとき、当該方法は未署名のデータファイルが該コンピュータ上での実行に対して受け入れ可能か否かを決定する工程、未署名のデータファイルが前記コンピュータ上での実行に対して受け入れ可能でない場合に該アプレットを停止する工程、を含むことができる。
【００２８】
本発明の方法は、該未署名のデータファイルが前記コンピュータ上での実行に対して受け入れ可能と決定されるとき、該アプレットにブランドを付ける工程を含むことができる。
【００２９】
本発明の方法は、アプレットを動作させる工程と、該アプレットがセキュリティチェックを駆動するアクションを実行するか否かを決定する工程とを含むことができ、該セキュリティチェックは、該ブランドをセキュリティレベルと比較する工程、該セキュリティチェックが満たされるとき該アクションを許容しかつセキュリティチェックが満足されない場合該アクションを許容しない工程を含むことができる。
【００３０】
本発明の方法は、該コンピュータシステムを使用して遠隔のサイトとデータ通信の接続を確立する工程と、該サイトが安全な接続を要求しているか否かを決定する工程と、安全な接続が要求されているという決定に応じて、該サイトに対するサイト証明が妥当であるか否かを決定する工程とを含むことができる。
【００３１】
本発明は、少なくとも１つのデータファイルと署名ファイルとの真正性を検証するための装置であって、該データファイルは識別子を含み、該署名ファイルは該データファイルのための該識別子と電子署名とを含み、当該装置は電子署名を処理し該署名ファイルの真正性を決定するためのプロセッサを備え、該装置はコンピュータシステムを使用して該データファイル内の該識別子を該署名ファイル内の該識別子と比較し該データファイルの真正性を判断するためコンパレータを備え、該プロセッサは該コンピュータシステムを使用して該電子署名を処理し該署名ファイルの真正性を決定するように更に配置されている。
【００３２】
本発明の装置では、該コンピュータシステムを使用して該データファイル内の該識別子を該署名ファイル内の該識別子と比較するための該コンパレータは、該データファイルの該識別子と該署名ファイルの該識別子とが一致するとき、署名されたものとして該データをマークするためのマーカを含むことができる。
【００３３】
本発明は、データの真正性を検証する際の使用のためにコンピュータで利用できる媒体上に具体化されたコンピュータで可読なプログラムコードを有するコンピュータで利用できる媒体、を含んだコンピュータプログラム生産物であって、該プログラムは、コンピュータシステムで以下のａ）少なくとも１つのデータファイルと署名ファイルとを受け取ることであって、該データファイルは識別子を含み、該署名ファイルは該データファイルのための該識別子と電子署名を含み、ｂ）コンピュータシステムを使用して該署名ファイルを処理し該署名ファイルの真正性を判断すること、をもたらすための、コンピュータで可読なプログラムコードを含む。
【００３４】
本発明のコンピュータプログラムコード生産物は、該コンピュータシステムを使用して該データファイル内の該識別子を該署名ファイル内の該識別子と比較し該データファイルの真正性を決定するための生産物であって、該署名ファイルを処理することは該コンピュータシステムを使用して該電子署名を処理し該署名ファイルの真正性を決定することを含むことができる。
【００３５】
本発明のコンピュータプログラムコード生産物は、該コンピュータシステムを使用して該データファイル内の該識別子を該署名ファイル内の該識別子と比較することは、該データファイル内の該識別子と該署名ファイル内の該識別子とが一致するとき、該データファイルを署名されたものとしてマークすることを含むことができる。
【００３６】
本発明とそれについてのさらなる利点を、添付図面と共に以下の記述を参照することによって最もよく理解できる。
【００３７】
【発明の実施の形態】
本発明のいくつかの実施例は、任意の数のデータファイルに対して単一の電子署名のみの実施とその検証を要求することによって、出所ユーザのコンピュータシステムと受け手ユーザのコンピュータシステムとの両方にかけられた計算要求を減少させる新規の方法、装置および生産物（product）を供給する。本発明の実施例に従うと、データファイルを個々に署名する必要がない。その代わりに、１つの別個の（separate）署名ファイルが電子的に署名され後に検証されるときに署名ファイルが対応するデータファイルがこれらのデータファイルの各々に対して署名アルゴリズムを実行することなく真正性を証明できるように、その別個の署名ファイルが創り出される。ある実施例においては、署名ファイルは、転送されるべき個々のデータファイルに関連付けられた、一方向ハッシュ関数といった、「識別子」のリストを含む。そのため、署名ファイルは、基本的には、データファイルの各々のための電子署名と暗号的に同等なものである。
【００３８】
このため、本発明の１つの実施例に関して、ユーザは各データファイルのために独自の識別子を含む署名ファイルを創り出すことができる。この署名ファイルは、署名アルゴリズムを使って電子的に署名されることができる。そして、署名された署名ファイルとデータファイルとを受け手のユーザに送ることができ、そのユーザは適切な署名アルゴリズムを使ってその電子署名を検証できる。一旦、電子署名が検証されると、署名ファイル内にある識別子をデータファイル内の識別子に比較できる。与えられたデータファイル内の識別子が署名ファイル内の対応する識別子と一致するならば、真正であるとしてそのデータファイルは検証され得る。すると、受け手ユーザは、真正性について確信を持って、その検証されたデータファイルを処理することを進めることができる。その結果、電子的に署名しまた後にデータファイルの各々に対して電子署名を検証する必要がもはやないので、計算による遅れを縮小できる。
【００３９】
図１は、データ形式の情報を受け手ユーザのコンピュータシステム１４と交換するためにデータリンク１６にわたって結合された出所ユーザのコンピュータシステム１２を、ブロックダイアグラムによって表現されるものとして、ネットワーク化された計算環境１０を示す。出所ユーザのコンピュータシステム１２は、例えば、インターネットに関連づけられたウェブサーバといったサーバコンピュータの形式をとることができる。同様に、受け手ユーザのコンピュータシステム１４は、例えば、データリンク１６にわたってウェブサーバにネットワーク接続されたクライアントシステムの形式をとることができる。そのようなケースでは、データリンク１６は、したがって、インターネットや他の接続されたネットワークの一部か、または、全体を表わすことができる。データリンク１６は、また、１つ以上のローカルエリアネットワーク（ＬＡＮｓ）、広域エリアネットワーク（ＷＡＮｓ）、「イントラネット」若しくは「エクストラネット」、叉は他の同様の電子通信若しくはデータのネットワークを表わし得る。
【００４０】
図２は、図１に従う、送り手ユーザまたは受け手ユーザのいずれかが使用できる典型的なコンピュータシステム２０を示す。代わりに、コンピュータシステム２０は、コンピュータに使える生産物を介してデータを受け取ることの能力があるスタンドアロンのコンピュータであっても良い。コンピュータシステム２０は、１つ以上のプロセッサ２２、主記憶２４、２次記憶２６、１つ以上の入力／出力（Ｉ／Ｏ）デバイス２８、１つ以上のネットワーク通信デバイス３０、１つ以上のバス３２を含む。
【００４１】
プロセッサ２２は、コンピュータ命令を実行する能力を提供する。プロセッサ２２は、例えば、市場で入手できる多くのデスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、メインフレームコンピュータ内で見られるようなマイクロプロセッサ、中央処理装置（ＣＰＵ）、マイクロコントローラであり得る。また、プロセッサ２２は、特定目的コンピュータ若しくは大型フレームコンピュータ、通信交換ノード、叉は他のネットワーク化された計算デバイス内で典型的に使われるプロセッサといった従来のプロセッサ叉はカスタマイズ若しくはセミカスタマイズされたプロセッサの形式をとることもできる。プロセッサ２２は、バス３２へのデータを出力するため、またバス３２からのデータを入力するために結合されている。
【００４２】
バス３２は、２つ以上のノード間において、データを転送すること叉はさもなければデータを移動することの能力を持っている。例えば、バス３２は、共有の汎用バスの形式をとることができ、叉は特定ノード間において特定タイプのデータを転送するために専用にされることができる。バス３２は、データを転送できるノード間の経路を確立する際に使うためのインターフェース回路構成およびソフトウェアを含むことができる。プロセッサ２２といった、あるデバイスは、内部ノード間においてデータを転送するための１つ以上のバス３２を内部に含むこともできることが認識される。データは、処理済データ、アドレス、及び制御信号を含むことができる。
【００４３】
主記憶２４は典型的には、データの格納および検索のために備えている。主記憶２４は、例えば、ランダムアクセスメモリ（ＲＡＭ）叉は同様の回路であり得る。主記憶２４はバス３２を介して、プロセッサ２２といった他のデバイス叉は回路によってアクセスされ得る。
【００４４】
２次記憶２６は、典型的にはデータの付加的な格納及び検索のために備えている。２次記憶２６は、例えば、磁気ディスクドライブ、磁気テープドライブ、ＣＤＲＯＭといった光学的に読み取り可能なデバイス、ＰＣＭＣＩＡカードといった半導体メモリ、叉は同様のデバイスの形式をとることができる。２次記憶２６は、バス３２を介して、プロセッサ２２といった他のデバイス叉は回路からアクセスされ得る。２次記憶２６は、例えばその上に具現化されたコンピュータで可読なコードを有するコンピュータで利用可能な媒体を含むコンピュータプログラム生産物からデータをアクセスし叉は読むことができる。
【００４５】
入出力デバイス２８は典型的には、ユーザに対するインタフェースを提供し、それを介してデータが共有される。入出力デバイス２８は、例えば、キーボード、タブレット及び指示ペン、音声認識器及び手書き文字認識器、叉は別のコンピュータといったよく知られた他の入力装置の形式をとることができる。入出力デバイス２８は、例えば、ディスプレイモニタ、フラット・パネル・ディスプレイ、叉はプリンタの形式をとることもできる。入出力デバイス２８は、バス３２を介して、プロセッサ２２といった他のデバイス叉は回路によってアクセスされ得る。
【００４６】
ネットワーク通信デバイス３０は典型的には、他のコンピュータシステムといった他の計算資源およびデバイスへのインタフェースを提供する。ネットワーク通信デバイス３０は典型的には、データ通信リンクおよびデータ通信リンクネットワークにわたってデータ通信の標準およびプロトコルを実現するインタフェースのハードウェア及びソフトウェアを含む。例えば、ネットワーク・コネクションを用いて、プロセッサ２２はネットワークにわたってデータ（すなわち情報）を送り及び受け取ることができる。上述したデバイス及び方法は、コンピュータのハードウェア及びソフトウェアの分野の当業者には精通していることである。
【００４７】
図３（ａ）は、本発明の実施例に従う、アーカイブ（記録保管所）のデータ構造３００の実施例を示す。データ構造３００は、署名ファイル３０２といくつかのデータファイル３０４〜３１４とを含む。ファイル３０４〜３１４は、任意のデジタルビット列でもよく、例えば、ＪａｖａTMクラスファイル、画像ファイル、音声ファイル、テキストファイル、および付加的な署名ファイルであってもよい。
【００４８】
図３（ｂ）は、署名ファイル３０２の具体例である。ある実施例においては、署名ファイル３０２はヘッダファイルであることを留意すべきである。図示された実施例においては、署名ファイル３０２には、データファイル３０４〜３１４の各々のための少なくとも１つの識別子３１６を含む。オプションとして、署名ファイル３０２は、データファイル３０４〜３１４の各々のための付加的なデータ３１８も含むことができる。例えば、付加的なデータ３１８は、ファイルの名前、ファイル作成者、ファイルの日付、ファイルの版数、ファイルのレート付け（例えば、「親の指導が必要」といった映画のレート付け）、またはユーザが署名ファイル３０２内に含めたい真正性の証明される他の任意にデータについての情報を更に備える。
【００４９】
署名ファイル３０２は、識別子ＩＤ３２０と電子署名３２２とを更に含む。識別子ＩＤ３２０は、署名ファイル３０２に列記された識別子を創り出すために用いられるアルゴリズムを決定するために必要な情報を提供する。電子署名３２２は、その署名ファイルのために創り出された電子署名を表わす。もちろん、電子署名３２２の構造は、それを創り出すために用いられる署名アルゴリズムに依存する。
【００５０】
図４は、本発明の実施例に従い、１つ以上のデータファイルを発生するためのステップ４０２を含む方法４００を図示する。例えば、ステップ４０２は、テキストファイルを発生するためのテキストプログラム、音声やビデオのファイルを発生するための記録プログラム、画像もしくは映像のファイルを発生するためのグラフィックスプログラム、クラスファイルやプログラムファイルを発生するためのプログラミング言語、叉はデータファイルを発生する能力がある他の任意の機構を使用することを含むことができる。
【００５１】
ステップ４０２で１つ以上のデータファイルを発生したら、ステップ４０４はこれらのデータファイルの各々について識別子を発生する。例えば、ステップ４０４で生成された識別子は、一方向ハッシュ関数アルゴリズムによって発生されることができ、また代わりにサイクリック冗長性チェックサム（ＣＲＣ、cyclicredunduncy checksum）等の形式をとることもできる。しかしながら、一般的に一方向ハッシュ関数アルゴリズムはより大きなセキュリティに備える傾向にあり、なぜなら、そのような関数は簡単には叉は効率的には破られることができず、またさもなければリバースエンジニアされることができないからである。例として、ＭＤ５及びＳＨＡといった一方向ハッシュ関数アルゴリズムは典型的には、暗号的に安全であると考えられる。そのようなアルゴリズムは、コンピュータ科学の分野の当業者に知られるであろう。
【００５２】
次に、ステップ４０６は、ステップ４０４で発生されるような識別子を列記し、またはコンパイルする署名ファイルを創り出すことを含む。署名ファイルは、例えば、識別子を列記するテキストファイルであってもよい。オプションとして、署名ファイルは、例えば、各ファイルの名、各ファイルの著者名、ファイルの版数、ファイルの日付スタンプ、各データファイルに関係する他のデータを更に含んでもよい。ステップ４０６はさらに、データファイルからのそのようなデータを問い合わせ、たどり（トレースし、trace）、選択し、集め、叉は与える（render）１以上のプログラムを含むことができる。ステップ４０６は、例えば、バッチモードでデータファイルを処理し適当な識別子及び付加的なデータを集めることによって、実行できる。当業者は、方法４００におけるステップを促進するある方法で、署名ファイルに列記されるデータを特定的に、順番に並べ、グループ分けし、叉は配置することが、（例えば、効率の面で）有益であることを認識するであろう。例えば、識別子に加えてファイル名及び作成者をグループ分けすることは有益であろう。
【００５３】
一旦、署名ファイルが創り出されたら、ステップ４０８は署名アルゴリズムを使って署名ファイルに電子的に署名することを含む。適切な署名アルゴリズムの例示は、メッセージダイジェストアルゴリズムおよびＲＳＡ暗号化アルゴリズムを組み合わせたもの（例えば、ＲＳＡを持つＭＤ５、若しくはＲＳＡ持つＭＤ２等）、または（上記で説明した）ＤＳＡアルゴリズムを含む。ステップ４０８は、例えば、公開キー叉は私的キーを手段として署名アルゴリズムを用いて署名ファイルのための電子署名を発生することを含む（例えば、上記のシュナイヤ（Schneier）を参照せよ）。
【００５４】
ステップ４０８からの署名された署名ファイルは、次に、ステップ４１０において受け手ユーザに送られ、提供され、または利用できるようにされる。例えば、ステップ４１０は、署名された署名ファイルをデータバス、データリンク、インターネット、他のコンピュータ若しくはデータ通信のネットワーク若しくはリンクにわたって転送されることを含むことができる。加えて、ステップ４１０は例えば、署名ファイルを磁気記憶媒体や光学的記憶媒体のようなコンピュータで読み込める媒体に格納すること、及びコンピュータで読み込み可能な媒体上の署名された署名ファイルをあるコンピュータから別のコンピュータに移動することを含むことができることが認識される。
【００５５】
受け取り叉はアクセスのときに、ステップ４１２における受け手ユーザは、ステップ４１０において送られ、叉は利用できるようにされた署名された署名ファイルの真正性を検証する。ステップ４１２は例えば、キーを手段として署名アルゴリズムを用いて、署名された署名ファイル上の電子署名を検証することを含むことができる。
【００５６】
ステップ４１４は、ステップ４１２で決定されたものとして電子署名の有効性（validity）が方法４００を終了するか叉は継続するかのいずれかである決定を示す。方法４００を中断するとか叉は回避する（preempt）というように表示がされる一方で、また署名済の署名ファイルのステップ４１２におけるその検証が失敗したことを、ある方法で記録し若しくは識別し、または発する（address）別のプロセス、例えば警告若しくは通知プロセス、またはログプロセス、を呼びだすことをステップ４１４は含むことができということが認識される。
【００５７】
ステップ４１４での決定がそのファイルが正当である（すなわち、真正である）場合、プロセスは、署名ファイルからの少なくとも識別子を格納することを含むステップ４１６へ続く。本発明のある実施例においては、識別子がセキュア地帯（secure location）に格納される。セキュア地帯は、例えば受け手のコンピュータシステムのＲＡＭであってもよく、なぜならこのメモリはプロセスが終了するときに容易にクリアされるからである。代わりに、識別子はディスクドライブまたはテープドライブに格納されることもでき、そこでは識別子はある後のステージで検索できる。当業者は、いろいろなデータ記憶デバイス及び他のコンピュータシステム構成が様々な及び潜在的なセキュリティリスク（つまり、ある記憶デバイスは他よりもより安全である）を引き起こす（pose）ことを認識するであろう。また、ステップ４１４で記憶された署名ファイルの信用性を増しまた保証するために、暗号化やファイルアクセスの特権といった、さらなるセキュリティの方策（measure）を使用できることも認識できる。
【００５８】
ステップ４１６で識別子がセキュア地帯に記憶されてしまうと、次に対象のデータファイル、またはステップ４０６において署名ファイルにその識別子が列記されたデータファイルがステップ４１８に表示されるようなループに合わせて処理されることができる。ステップ４１８は、例えば、署名ファイルに列記されている識別子の数に基づいて、ステップ４２０に入る回数を繰り返し制御するカウンタ機構を含むことができる。例えば、署名ファイル列記されたｎ個の識別子がある（つまり、ロードされるべきｎ個のデータファイルがある）とならば、繰り返しループは、ｉ＝１からｉ＝ｎまで数え上げし若しくは代わりにｉ＝ｎからｉ＝１に数え上げすることができ、又は、以下に提供されるように方法４００内の残りのステップに合わせて、データファイルの全てがロードされたとき若しくはそのロードすることが試みられたときを決定する。
【００５９】
ステップ４２０は、ｉ番目のデータファイルをロードすることを含む。ステップ４２０は、例えば、ダウンロードし、アップロードし、同時通信し（broadcast）、またはさもなければｉ番目のデータファイルをある場所から別の場所に移動するいずれかのためにステップ４１０内の任意の方法を使用できる。一旦、ｉ番目のデータファイルがロードされたら、ステップ４２２は（そのデータファイルのために）適切な識別子アルゴリズムを使ってｉ番目のデータファイルのための識別子を提供し、計算し、または発生することを含むことができる。
【００６０】
次に、ステップ４２４は、ステップ４１６で格納された署名ファイル内に、ｉ番目のデータファイルに関して、列記された識別子と、ステップ４２２で提供された識別子を比較することを含む。識別子が一致すると、そのときｉ番目のデータファイルを真正であるものとして検証する。識別子が一致しないならば、そのときｉ番目のデータファイルは検証されなかったとみなす。
【００６１】
ステップ４２６は、ステップ４２４で決定されるような識別子の正当性がステップ４１８の繰り返しループを中断するか継続するかの判断を表示する。ｉ番目のデータファイルのための識別子がステップ４２４で検証されたなら、ステップ４２６は、ｉ番目のデータファイルが真正であるとして検証されたことを、マーキングし（印を付け、marking）、または何らかの方法で記録し若しくは確立することを含むステップ４２８へ進むことによって、ステップ４１８の繰り返しループを継続する。ステップ４２８は、例えば、ｉ番目のデータファイルを送り手ユーザによって署名されたものとして、修正しまたはマーキングすることを含むことができる。
【００６２】
一方、ｉ番目のデータファイルのための識別子が真正なものとしてステップ４２４で検証されることができないと、そのときステップ４２６はステップ４３０に進むことによってステップ４１８の繰り返しループを中断する。ステップ４３０は、ステップ４２８を避けまたステップ４１８に逆進するように、ある方法でステップ４１８の繰り返しループを中断することを含む。ステップ４３０は、例えばｉ番目のデータファイルを無視することを含むことができる。ステップ４３０に加えて、ｉ番目のデータファイルが真正でないことをともかく記録しまた識別するために、別のステップを方法４００に含むことができる。
【００６３】
このように、上記のデータ構造およびステップを用いて、いくつかのデータファイルを送っているユーザは、各データファイルに対して個別の電子署名を発生する必要があるというよりもむしろ、送り手ユーザが１つの署名ファイルを創り出しまたそのファイルに電子的に署名するだけでよいので、関連する処理時間を縮小できるでしょう。同様に、上記のデータ構造やステップを用いて、いくつかのデータファイルを受け取っているユーザは、関連する電子署名の暗号を解くことによって真正であるとして各データファイルを検証しなければならないというよりはむしろ、その署名ファイルの真正であることを検証するのみ必要であるので、関連する処理時間を減少できるでしょう。そのような混成の（ハイブリッドな、hybrid）検証プロセスは、署名プロセスと検証プロセスを実質的に合理化できる。その結果、データファイルは、電子署名され、そして後に短い時間で真正性が証明されまた処理される。
【００６４】
加えて、ステップ４３０は，ステップ４２４において真正性を検証するために、試みられているロードを中止するオプションのステップ４３２、及び／叉はその失敗を警告しまた警報を出すオプションのステップ４３４、へ導くことができる。一旦、ステップ４３０とオプションのステップ４３２及び／叉はステップ４３４は完了すると、方法４００はステップ４１８に戻り、その中の繰り返しループを完了する。ステップ４１８の繰り返しループが完了したら、方法４００を終了する。
【００６５】
本発明の実施例においては、署名した各認証のために、証明（certificate）が創出され、つまり署名ファイル内に列記される独自の識別子が証明として具体化される。一般的には、証明とは典型的には送り手コンピュータシステムかまたは受け手のコンピュータシステムのいずれかであるサイトが自分自身を識別するために使用できるトークンである。いくつかのサイトは１つの証明に関連付けられることができる。代わりに、いくつかの証明が１つのサイトに関連付けられことができる。
【００６６】
出所のユーザのコンピュータシステムや受け手ユーザのコンピュータシステムは、データファイルだけでなく、例えばカリフォルニア、マウンテンビューウのサンマイクロシステム（Sun Microsystems of Mountain View, California）から入手できるＪａｖａTMプログラミング言語で書かれた「アプレット」の形式であるコンピュータソフトウェアを交換するように構成されることができる。ここで使われた「アプレット」は、出所のコンピュータ又は典型的にはサーバからクライアントのマシンに伝えられる（pass）ように構成され、また例えばブラウザのような、既にクライアントにインストールされているソフトウェアと連携して実行される、ソフトウェアプログラムである。記述されている実施例では、アプレットはクラスファイルから具現化された（instantiate）ものであり、クラスファイルは、図３（ａ）に関して述べられたように、アーカイブのデータ構造にまとめられグループ化され、出所のコンピュータ、つまりサーバ、からクライアントのマシンにダウンロードされる。典型的には、アプレットは、実行するようにブラウザソフトウエア自身が構成されていない様々な計算タスクを実行することによって、ブラウザソフトエアに追加の機能を提供する。このため、アプレットをダウンロードするユーザは、そうしなければブラウザソフトエアに利用可能でない追加の機能をブラウザソフトウエアに提供できる。そのような追加の能力は、例えばデータベースに対するカスタムインタフェースを含む。
【００６７】
与えられたアプレット、例えばＪａｖａTMアプレットがアクセスできるオペレーションを制御するために、出所コンピュータおよびクライアントマシンのいずれか上で、ブラウザに関連したセキュリティマネージャを使用できる。換言すれば、セキュリティマネージャは、アプレットが実行することを許可するアクションを制御するために、またはアプレットに対する特権を拡張するために、使用されることができる。アプレットに許可されるアクションは大きく変化しうるが、一般的には、そのアクションは読むおよび書くアクションである。アプレットに関連する異なる証明およびサイトに対する許可を設定するための柔軟性をユーザに与えるために、セキュリティマネージャの内部において、異なるセキュリティレベルを実現できる。一般的に、ユーザは特別の証明若しくはサイト、または一群の証明およびサイトを選択でき、そしてそのユーザの選択に関してのセキュリティレベルを設定できる。
【００６８】
セキュリティレベルを実現するためにセキュリティマネージャを使うことは、一般的には、安全でなく、安心できず、若しくは信頼できないアプレットアクションだけでなく、どのアプレットアクションが安全であり、安心でき、若しくは信頼あできるかを、識別することにつながる。安全なアクションは、一般的には、システムセキュリティを危険にすること、またはクライアント若しくはサーバ上に格納されている情報が衝突する（corrupt）こと、に関して重大な可能性があるとみなされない。例として、安全なアクションは読み出し専用アクション、または特定のディレクトリに対する読み出し専用アクションがあり得る。一方、安全でない（unsecure）アクションは、一般的にはシステムセキュリティを違反することに関して、またはたクライアント若しくはサーバに格納されている情報に損害を与えることに関してあらゆる可能性のあるアクションである。安全でないアクションは、制限するものでないが、書き込みアクション、削除アクション、名前替アクション、および機密文書へのアクセスを要求するような読み出しアクションを含むことができる。安全でないアクションは、保護（プロテクト、protect）される遠隔サイトへの接続の確立するための要求を更に含む。
【００６９】
本発明の実施例として、ＪａｖａTMアプレットを実行できるブラウザは、例としてはＨｏｔＪａｖａTMブラウザ（カリフォルニア、マウンテンビューのサンマイクロエレクトロニクスから入手可能）といった、高セキュリティレベル、中セキュリティレベル、低セキュリティレベル、不信頼レベルを含むセキュリティレベルを持ったセキュリティマネージャを有している。高セキュリティレベルにすれば、あらゆる安心でないアクションを遮断する一方で、基本的にはアプレットは一組の安心できるアクションと共にまたは制約と共に動作することが可能になる。記述された実施例においては、高セキュリティレベルにすれば、安心でないアクション、例えば信頼できないと考えられるどのアクションに対するアクセスも拒否する一方で、アプレットが安全であるアクション、例えば信頼できると考えられるほとんどのアクションを実行することが可能になる。
【００７０】
中セキュリティレベルは、潜在的に安心でないアクションに対する認証を認める能力（ability）をユーザに提供する一方で、アプレットが安心な制約と共に動作することを可能にするために使用され得る。中セキュリティレベルを用いると、安心できる、例えば許容可能な、アクションでないかもしれないアクションをユーザインタフェースを介してユーザに警告できる。記述された実施例においては、アクティビティ（活動、activity）を記述する対話ボックスが現われ、ユーザは、実行される潜在的に安心でないアクションに対する許可を拒否することまたは認めることのいずれかを促される。低セキュリティレベルにすると、アプレットが最小の制約と共に動作し、また記述された実施例では、潜在的に安心でないアクションをユーザに警告しない。不信頼セキュリティレベルは、安心でないと知られている証明及びサイトを識別するために用いられる。
【００７１】
次に図５を参照して、本発明の実施例に従って、セキュリティマネージャにおけるセキュリティレベルを設定することと関連づけられるステップが記述される。ある実施例では、セキュリティレベルは、信頼及び検証の設定のレベルとしても知られているが、前述したように、高セキュリティレベル、中セキュリティレベル、低セキュリティレベル、及び不信頼セキュリティレベルである。セキュリティレベルは、適切なグラフィカルユーザインタフェース（GUI）の使用を通してユーザによって設定されることができるが、セキュリティレベルを設定するために任意の適切な方法を使用できることを認識すべきである。
【００７２】
セキュリティマネージャ５００においてセキュリティレベルを設定するプロセスが始まり、そしてステップ５０２で証明の認証（authority）に関するセキュリティレベルが設定される。証明の認証は、個々の証明と証明の群との両方に適用されるべき異なるセキュリティのレベル、つまり優先度を可能にする。一般的には、証明の認証は、限定されるものではないが、どのように特定の証明が使われるかを識別する情報を含む。例として、証明の認証は、ある証明が他の証明を保証しまたは真正性を証明することを可能にするために設定されることができる。
【００７３】
証明の認証のためのセキュリティレベルが設定されると、ステップ５０４でサイトの証明のためのセキュリティレベルが設定される。サイトの証明は、トランザクション処理（transaction）を成す安全なコネクション（connection）を開始するために、所与のサイトが使用できる証明である。サイトの証明のためのセキュリティレベルは、一般的に、セキュア・ソケット・レイヤ（secure socketlayer：ＳＳＬ）標準プロトコルと、安全なトランザクションが起こるべきコネクションの真正性を証明するために使用できるセキュリティの認証とを明記することを伴う。そのような安全な通信の技術が、悪漢のサイト若しくは潜在的に安全でないサイトを識別するため、またそれ故、そのようなサイトとの通信を避けることによって伝達できるより安全なチャネルを提供するために使用できる。
【００７４】
ステップ５０６では、ソフトウェア配布者のためのセキュリティレベルが設定される。イントラネットの環境においては、イントラネットは安全な環境であると通常は考えられているので、ソフトウェアは通常は証明と共に配布されない。それ故、そのような安全な環境で配布されたソフトウェアは、一般に安全であると仮定される。しかしながら、例えばインターネット環境といった、ソフトウェアが証明と共に配布される環境に関しては、その証明に関連付けられたソフトウェアコードがブラウザの実行に対して信頼できるかどうかを決定するためにその証明を使用できる。
【００７５】
サイト名のためのセキュリティレベルが、ステップ５０８で設定される。サイト名のためのセキュリティレベルの設定のプロセスは、サイトのためにセキュリティレベルが設定されるときそのセキュリティレベルはそのサイトに関連するすべてのソフトウェアに適用されるという点を除いて、ソフトウェア配布者の設定のプロセスと本質的に同じである。サイト名の許可を設定することは、一般にはシステムの資源にみだりに変更する（tamper）ほとんどないリスクと共に、証明のないソフトウェアをテストすることを可能にする。次に、証明タイプがステップ５１０で設定される。証明タイプを設定すると、どのように証明が使われるべきかを決定すること、またどのように証明が使われることを期待するかに基づいて証明のための認証を選択することを伴う。証明サイトがステップ５１０で設定された後に、セキュリティレベルの設定のプロセスが終了する。セキュリティレベルが設定される順番が、特定のセキュリティマネージャの要求に依存して大きく変わり得ることを認識すべきである。
【００７６】
ある実施例においては、セキュリティレベルを設定するために、追加の「高度な（advanced）」設定を使用できる。１つの実施例では、高度の設定は、個人の証明認証、サイト証明、ソフトウェア配布者、叉はサイト名のための特定の注文で特製にされた（カスタマイズされた、customized）セキュリティレベルをユーザが設定することを可能にするために、グラフィカルユーザインターフェース（ＧＵＩ）まはた類似したインターフェースを通してユーザが変更できる細分性（グラニュラリティ、granularity）の制御である。さらに、高度な設定は、一群の証明の認証、サイト証明、ソフトウェア配布者、またはサイト名のためのセキュリティレベルをユーザがカスタマイズすることを可能にするように構成できる。このため、高度なセッティングにすると、一般的に、セキュリティレベルを制御する際に、また全体的な証明の取り扱いの際に柔軟になる。例として、高度な設定の使用を介して、ユーザは特定のサイト証明を中セキュリティレベルに設定でき、一方ではサイト証明に関連するセキュリティ許可を読み出しアクセスのみの許容に制限することを明記できる。加えて、高度なセッティングを使用し、所与のセキュリティレベルにおける仕様を置き換え（override）でき、例えば高度なセッティングを使用し所与のセキュリティレベルでは通常は許されていないような許可を認める（grant）ことができる。
【００７７】
記述された実施例においては、高度な設定は、上述したように高セキュリティレベル、中セキュリティレベル、低セキュリティレベル、および不信頼レベルに加えて、サイト証明、例えば選択されたセキュリティレベルに加えて実施されることができるサイト証明、について特定の許可をユーザが選択することを可能にするために付加的なオプションが利用可能であるように、提供される。これらの特別な許可は、これらに限られるわけではないが、ユーザに警告メッセージを与えずにアプレットがウィンドウを開けることを許したり、警告の対話を用いまたｈ用いずにアプレットが自動的に局所的なアプリケーションを始める（launch）ことを許したり、警告の対話を与えることなしにアプレットがすべてのプロパティにアクセスすることを許したり、また警告の対話を与えることなしにアプレットが実行を開始することを許したりすることを含むことができる。
【００７８】
図６は、本発明の実施例に従った高度の設定を例示するブラウザインターフェースを図式的に表す。前に述べたように、高度な設定は、ブラウザインタフェースと共に提供されるセキュリティレベルに加えて、可能にしたり不可能にしたりできる特定の許可を選択するために使用される。ブラウザインタフェース５６０は任意の適当なブラウザインタフェース５６０であってもよいが、記述された実施例においては、ブラウザインタフェース５６０はＨｏｔＪａｖａTMブラウザの基本的な表現となっている。示されるように、ブラウザインターフェース５６０には高度な設定のディスプレイ・ウィンドウ５６４がある。ディスプレイ・ウィンドウ５６４の第１の領域５６８は、サイト及び証明５７０とサイト及び証明の群とを列記して、それらのセキュリティ許可をカスタマイズする。 "Applet Permissions"（アプレットの許可）５７２、 "File Access"（ファイルアクセス）５７４、"Network Access"（ネットワークアクセス）５７６は、カスタマイズできる許可の中にある。 記述された実施例では、選択５８０は、"File Access"（ファイルアクセス）５７４、つまりアプレットがアクセスすることを許容するファイル、に関する設定を示す。
【００７９】
第２のサブ領域５８２は、選択されたときに、選択された設定、つまり"Applet Permissions"（アプレットの許可）５７２のコマンドを使って決定される設定、を持つアプレットが読み取ることを許すファイルとディレクトリ５８４を表示する。同様に、第３のサブ領域５８８は、適切な許可を持つアプレットが書きこむことが許すファイルやディレクトリ５９０を表示している。「"Warn beforegranting access to other files"（他のファイルへのアクセスを許す前に警告せよ）」オプション５９４、叉は「"Warn when applet tries to delete a files"（アプレットがファイルを削除しようとするときに警告せよ）」オプション５９６の例のような付加的な選択可能なオプションにすると、ユーザがセキュリティオプションを更にカスタマイズすることを可能にする。
【００８０】
図７は、本発明の１つの実施例に従う、検証の設定を用いるアプレットを実行する一つのプロセスに関連付けられたステップを図示するフローチャートである。検証の設定を実施するプロセスが開始し、ステップ６０２において、アプレットは、それが実行されるべきローカルなマシンへダウンロードされる。記述された実施例においては、アプレットをダウンロードすることは、クラスファイル、それからそのアプレットが具体例をあげて示される（instantiate）ファイル、を含むアーカイブファイル、つまりアーカイブデータ構造、の少なくとも一部をダウンロードすることを伴う。そのアプレットがダウンロードされた後、署名されたアーカイブストリームがステップ６０４で受け取られる。記述された実施例においては、アーカイブストリームはＪａｖａTMアーカイブファイルに関連した電子署名を含む。
【００８１】
ステップ６０６では、その署名されたアーカイブストリーム内の署名が妥当（valid）であるか、つまり、その署名が既知の且つ受け入れ可能なものであるか、に関して決定がなされる。署名されたアーカイブストリームは前述した署名された署名ファイルの一実施例であることを認識すべきである。アーカイブストリーム内の署名が妥当であるかどうかの決定は、既知の認証を見つけるまで、署名ファイル内に認証、例えば証明、の一続き（chain）を体系的にチェックすることを伴う。そして、既知の認証が妥当性に関してチェックされる。例として、証明"Ａ"は、妥当な証明であると知られている証明"Ｂ"によって保証できる（vouch）。すると、証明"Ｂ"が妥当であると知られているので、証明"Ａ"が妥当であると決めてかかることができる。
【００８２】
決定がその署名が妥当であるということならば、プロセスフローは、アプレットに「ブランドを付ける（brand）」ステップ６０８に進む。アプレットにブランドを付けしまたはマーキングすることは、一般的にはそのアプレットに署名者を結び付ける（attach）か、または、そのアプレットの妥当性を識別するために使用できる識別子をアプレットに結び付けることを指す。一旦、アプレットに適切にブランド付けされたら、そのアプレットはステップ６１０で実行される、つまり動作する。そのアプレットが動作している中、そのアプレット内の様々なアクションが呼び出される。
【００８３】
ステップ６１２で、そのアプレットが動作を終了したかどうかに関する決定がなされる。言い換えると、そのアプレットに関連する各アクションが実行されたか、または、以下に述べるように実行することを許可されないか、のいずれかが決定される。アプレットの実行が完了したことが決定されたら、アプレットを実行するプロセスは終了する。アプレットの実行が終了していないこととが決定されると、ステップ６１４で、そのアプレットのアクションがセキュリティチェックを駆動する（trigger）かどうかが決定される。すなわち、ステップ６１４では、特定のアプレットのアクションがユーザのシステムのセキュリティに潜在的に害となる決定されたアクションの範囲に納まるかどうかの決定がなされる。そのようなアクションは、コンピュータ技術分野の当業者、特に、コンピュータセキュリティ技術の当業者とって、よく知られている。例として、ユーザのシステムセキュリティに潜在的に害であるアクションは、制限されるものではないが、制約されていない書き込みアクセス、システム資源の変更、及び他のシステムへのオープンな伝達を含む。
【００８４】
アプレットのアクションがセキュリティチェックを駆動するなら、ステップ６１６において、ステップ６０８でそのアプレット上に置かれた（place）ブランドは前にユーザによって与えられたセキュリティ設定、すなわち許可レベル、と比較される。ある実施例においては、セキュリティ設定をアプレット上のブランドと比較することは、ユーザインタフェースを介してユーザに相談することを伴う。そのような実施例においては、ユーザはセキュリティ設定の迂回路（バイパス）を正当と認めることができ、すなわち、ユーザはセキュリティ設定を置き換えし（override）特定のアクションを許し叉は否定することのいずれかができる。ステップ６１６から、プロセスの制御は、アプレットアクションのセキュリティが満足されているかどうかの決定であるステップ６１８に進む。セキュリティが満足されていると、そのアプレット上に置かれたブランドがセキュリティ設定と好ましくは照合するという事実、または、ユーザがそのアプレットのアクションを正当と認めたという事実、という理由（virtue）のいずれかに基づき、ステップ６２０でそのアプレットのアクションが許される。すると、プロセス制御はステップ６１０に戻り、そしてアプレットの実行が継続する。一方、ステップ６１８でセキュリティが満足されていないと、アプレットのアクションはステップ６２２で許可されない。アプレットのアクションが不許可にされた後、プロセス制御はアプレットの実行が継続されるステップ６１０に戻る。
【００８５】
アプレットのアクションがステップ６１４でセキュリティチェックを駆動しないと、プロセスフローはアプレットが動作することを継続するステップ６１０に戻る。プロセスフローは、アプレットが実行することを終了するか、または、現在のアプレットのアクションがセキュリティチェックを駆動するという決定がステップ６１４でなされ、その場合に前述のようにステップ６１８に進むか、のいずれかまで、ステップ６１０と６１４の間のループを継続する。
【００８６】
ステップ６０６における署名の妥当性のチェックに戻って、署名が妥当でないという決定がされると、そのアーカイブは署名されていないとみなされて、そしてプロセスのフローは、未署名のストリームを受け入れるかどうかの決定がなされるステップ６２４へ進む。記述された実施例では、未署名のストリームが受け入れられるべきかどうかの決定が、ユーザインタフェースの使用を介してユーザによってなされる。例として、署名が妥当でないけれどユーザがそのアプレットを動作させるという決定をすることができることを表示する警告の対話を用いて、ユーザを促すことができる。未署名のストリームが受け入れられるべきだという決定がなされると、プロセスフローはステップ６０８に移り、そこではアプレットは適切であるとしてブランドが付けられ、例えばそのアプレットに関連づけられるストリームが未署名であることを示すためにブランド付けされる。未署名のストリームが受け入れられるべきでないという決定がステップ６２４でなされると、そのアプレットは停止させられ、つまりステップ６２６において動作することを禁止させられて、そしてアプレットの実行プロセスは終了する。
【００８７】
次に、図８を参照して、コンピュータネットワークにわたる接続を達成することに関連するステップが、本発明の実施例に従って説明される。接続を成すプロセス７００は、望まれている接続が定義されるステップ７０２で始まる。記述された実施例では、望まれている接続を定義することは、接続が望まれているサイトのための汎用参照言語（ＵＲＬ）アドレスを特定することを伴う。接続が定義された後、ステップ７０４において、接続が望まれているサイトへ通信が確立される。
【００８８】
ステップ７０４から、プロセスの制御は、サイトが安全な接続を要求しているかに関する判断が成されるステップ７０６に進む。ある実施例では、安全な接続は当業者によって理解されているように、セキュリティソケット層（ＳＳＬ）越しの（over）接続である。安全な接続が要求されていないことが決定されると、そのサイトへの接続がステップ７０８でなされ、そして接続を達成するプロセスは完了する。
【００８９】
サイトが安全な接続を要求していることが決定されると、ステップ７１０において、そのサイトに関連するサイト証明が妥当なものであるかどうかが決定される。サイト証明が信頼されていないサイト、つまり安心でないことが既知であるサイト、に関する妥当な証明であることもあるから、妥当なサイト証明は必ずしも信頼されたサイト証明ではないことを認識すべきである。サイト証明が妥当であれば、プロセスフローはステップ７１２に進み、それはそのサイト証明が信頼できるものかどうかの決である。そのサイト証明が信頼できるという決定がなされると、プロセスフローは、そのサイトへの接続がなされるステップ７０８に進む。また、サイト証明が信頼できないという決定がなされると、ステップ７１４で、そのサイトと（ステップ７０４で）達成されていた通信は終了する。同様に、サイト証明が妥当でないという判断がステップ７１０でなされると、そのサイトとの通信はステップ７１４で終了する。
【００９０】
上述したような、本発明の実施例は、コンピュータシステムに格納されたデータを伴う様々なプロセスステップを採用している。これらのステップは物理的な量に物理的な操作（manipulation）を要求するステップである。通常、必ずしもそうではないが、これらの量は、格納されたり、転送されたり、組み合わされたり、比較されたり、その他の操作されることが可能な電気的信号または磁気的信号の形態をとっている。ときには、主に一般の用法の理由に関しては、ビット、値、要素、変数、文字、データ構造などとして、これらの信号を参照することが便利である。しかしながら、このような用語また類似の用語の全ては、適当な物理量と関連付けられるべきものであり、またこれらの物理的な量に適用される単なる便利なラベルに過ぎないことを覚えておくべきである。
【００９１】
さらに、実行される操作はしばしば、発生すること、算定する（caluculate）こと、計算する（compute）こと、マーキング、無視すること、中止すること、警報すること、検証すること、署名すること、送すること、受け取ること、創り出すこと、繰り返すこと、識別すること、動作させること、比較することといった用語で参照される。本発明の実施例の一部分を構成するオペレーションのどれかにおいては、これらのオペレーションはマシンのオペレーションである。本発明の実施例のオペレーションを実行する有効なマシンは、汎用のデジタルコンピュータか、または他の類似のデバイスを含む。どの場合でも、コンピュータを操作するオペレーションの方法と計算自体の方法との区別を心に抱くべきである。本発明の１つの実施例は、電気的または他の物理的な信号の処理においてコンピュータを操作し他の望まれた物理的な信号を発生するための方法のステップに関連する。
【００９２】
本発明の実施例はまた、これらのオペレーションを実行するための装置（apparatus）に関連する。この装置は、要求された目的のために特別に構築されたものであってもよいし、コンピュータ内に格納されたコンピュータプログラムによって選択的に起動され（activate）または再構成される汎用のコンピュータであってもよい。ここで提示されたプロセスは、本来、特定のコンピュータまたは他の装置に関連していない。特に、ここであげた技術に従って書かれたコンピュータプログラムと共にさまざまな汎用のコンピュータを使用できるし、また、もっと特殊な装置を構築し要求された方法のステップを実行することはもっと便利である。さまざまなこれらのマシンのための要求構造は、上述した記述から明らかである。
【００９３】
加えて、本発明の実施例は、さまざまなコンピュータで実施される（implemented）オペレーションを実行するためのプログラム命令を含む、コンピュータで可読な媒体にも更に関連している。この媒体およびプログラム命令は、本発明の実施例の目的のために特に設計されまた構築されたものでもよく、または、それらはコンピュータソフトウェア技術分野の当業者によく知られまた利用可能な種類のものであってもよい。コンピュータで可読な媒体の例は、制限されるものではないが、ハードディスク、フロッピーディスク、及び磁気テープといった磁気的メディア、ＣＤ−ＲＯＭディスクといった光学的メディア、光ディスク（floptical disk）といった磁気光学的メディア、並びに読み出し専用メモリデバイス（ＲＯＭ）及びランダムアクセスメモリ（ＲＡＭ）といったプログラム命令を格納しまた実行するために特に配置されたハードウェアデバイスを含む。プログラム命令の例は、コンパイラによって生成されるようなマシンコード、およびインタプリタを使ってコンピュータによって実行できる高水準コードを含むファイルを含む。
【００９４】
前述の発明は理解を明晰にする目的のためにある程度の詳しさで記述されたが、添付された特許請求の範囲の内で、ある程度の変更や変形を行うことが可能であることは明らかである。例えば、識別子や署名のアルゴリズムは、輸出の法令に合わせて、さらに選択されたり、変形されたり、使用を制限されたりする。これは、データファイルの世界的な交換を考慮するために、ネットワーク化されたコンピュータにおいては特に真実となる。
【００９５】
加えて、検証の設定を利用するアプレットを実行することに伴われるステップだけでなく、サイトへの接続を行うために伴われるステップもまた、順序変更できる。本発明の精神や範囲を離れることなく、ステップを削除したり追加したりすることが可能である。
【００９６】
さらに、いくつかのセキュリティレベルのみが記述されたが、特定のコンピュータシステムの要求に合わせて、セキュリティレベルは大きく変化できることを理解するべきである。したがって、記述された実施例は、例示的であって制限的でないものとしてとらえるべきであり、この発明はここで与えられた詳細に制限されるものではなく、以下の特許請求の範囲および等価物の全範囲によって定義されるべきである。
【００９７】
【発明の効果】
以上説明したように、データファイルの真正性を保証しまた検証するための、特にコンピュータネットワークにわたって転送されると意図されるデータファイルについての、より効率的な方法、装置および生産物が提供される。
【図面の簡単な説明】
【図１】図１は、ネットワーク化されたコンピュータ環境を表す構成図である。
【図２】図２は、図１のネットワーク化されたコンピュータ環境で使われる典型的なコンピュータシステムを表わす構成図である。
【図３】図３（ａ）は、本発明の実施例で用いられる、アーカイブのデータ構造の実施例であって、署名ファイルが含まれている構成図である。図３（ｂ）は、本発明の実施例で用いられる、署名ファイルの実施例を表わす構成図である。
【図４】図４は、署名ファイルを持ったデータ構造で使われる、本発明の実施例のフローチャートである。
【図５】図５は、本発明の実施例に合わせて、セキュリティマネージャの中にセキュリティレベルをセッティングすることに関するステップを表わすフローチャートである。
【図６】図６は、本発明の実施例に合わせた、高度セッティングを表わすブラウザインターフェースをダイアグラムで表現した構成図である。
【図７】図７は、本発明の実施例に合わせた、検証のセッティングを用いるアプレットの実行に関するステップを表わすフローチャートである。
【図８】図８は、本発明の実施例に合わせた、コンピュータネットワークを介した接続の確立に関するステップを表わすフローチャートである。
【符号の説明】
１０…計算環境、１２…送り手ユーザのコンピュータ、１６…データリンク、１４…受け手ユーザのコンピュータ、２０…コンピュータシステム、２２…プロセッサ、２４…主記憶、２６…２次記憶、２８…入出力デバイス、３０…ネットワーク通信インターフェース、３２…バス、３０２…署名ファイル、３０４…ファイル１、３０６…ファイル２、３１４…ファイルｎ、３２０…識別子ＩＤ、３２２…署名
【図１】
0004359427.tif 000002
【図２】
0004359427.tif 000003
【図３】
0004359427.tif 000004
【図４】
0004359427.tif 000005
【図５】
0004359427.tif 000006
【図６】
0004359427.tif 000007
【図７】
0004359427.tif 000008
【図８】
0004359427.tif 000009