(57)【特許請求の範囲】
【請求項１】
ソフトウェアにデジタル署名を行うために認証局のコンピュータシステムを使用するコンピュータ実施方法であって、
要求に含まれるソフトウェアにデジタル署名することを求める前記要求をソフトウェア開発者から受信するステップと、
前記ソフトウェア開発者に関連するセキュリティポリシーにアクセスするステップであって、前記セキュリティポリシーは、前記ソフトウェア開発者による有効な要求の基準を記述する、ステップと、
少なくとも部分的に、有効な要求の前記基準の内の１つまたは複数が満たされているか否かに基づいて、前記要求が有効であるか否かを決定するステップと、
前記要求が有効であることを示す前記決定に応答して、前記コンピュータシステムを使用して前記ソフトウェアのデジタル署名を行うステップと、
前記デジタル署名されたソフトウェアに関連する評判情報をデジタル証明書に埋め込むステップであって、前記評判情報は、前記要求が有効であるか否かの前記決定において満たされたのは、有効な要求の前記１つまたは複数の基準のどれであるのかを示し、有効な要求の前記１つまたは複数の基準は、地理位置情報であってそこから有効な要求が前記ソフトウェア開発者によって出される地理位置情報含む、ステップと、
前記デジタル署名されたソフトウェアおよび前記デジタル証明書を前記ソフトウェア開発者に提供するステップと、
を含むコンピュータ実施方法。
【請求項２】
前記要求を前記ソフトウェア開発者から受信するステップは、
前記ソフトウェア開発者によって既にデジタル署名されたソフトウェアにデジタル連署することを求める要求を受信するステップを含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記要求が有効であるか否かを決定するステップは、
前記要求を前記ソフトウェア開発者から受信した条件を識別するステップと、
前記識別した条件を、前記ソフトウェア開発者の前記セキュリティポリシーに記述された有効な要求の前記基準と比較するステップと、
前記比較に基づいて、前記要求の前記識別された条件が、前記セキュリティポリシーに記述された有効な要求の前記基準とマッチするか否かを決定するステップと、
前記要求の前記識別された条件が、前記有効な要求の前記基準とマッチすることに応答して、前記要求が有効であることを決定し、前記ソフトウェアにデジタル署名を行うステップと、
前記要求の前記識別された条件が、前記有効な要求の前記基準とマッチしないことに応答して、前記要求が変則であることを決定するステップと、
を含む、請求項１に記載のコンピュータ実施方法。
【請求項４】
前記要求が変則であるとの決定に応答してセキュリティ措置を講じるステップをさらに含み、前記セキュリティ措置は、前記要求を拒否することを含む、請求項３に記載のコンピュータ実施方法。
【請求項５】
前記要求が変則であるとの決定に応答してセキュリティ措置を講じるステップをさらに含み、前記セキュリティ措置は、前記要求が有効であることを確認するために、前記ソフトウェア開発者に連絡を取ることを含み、
前記確認は、前記ソフトウェア開発者からセキュリティ認証情報を受信することを含む、請求項３に記載のコンピュータ実施方法。
【請求項６】
前記要求の受信に応答して、前記要求が有効であることを検証するために、前記ソフトウェア開発者に関係する利害関係者に連絡を取るステップと、
前記要求が有効であることを検証する前記利害関係者からのセキュリティ認証情報が受信されるまでは、前記要求の処理を控えるステップと、
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項７】
前記ソフトウェアにデジタル連署することを求める前記要求の受信に応答して、前記ソフトウェアにデジタル署名するために前記ソフトウェア開発者による署名鍵の使用が予期されているか否かを検証するために、認証局に連絡を取るステップであって、前記署名鍵は、前記認証局によって提供される、ステップと、
前記署名鍵の前記使用が予期されていないという決定に応答して、前記署名鍵が盗まれたことを決定するステップと、
をさらに含む、請求項２に記載のコンピュータ実施方法。
【請求項８】
前記ソフトウェア開発者による有効な要求の前記基準が、有効な要求を提出する特定のマシン識別子、有効な要求を出す前記ソフトウェア開発者に関係する社員の識別子、および前記ソフトウェア開発者が有効な要求を出し得る期間の内の少なくとも１つをさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項９】
コンピュータ実行可能コードを保存する非一時的コンピュータ可読記憶媒体であって、前記コードがコンピュータプロセッサによって実行されることにより、前記コンピュータプロセッサは、
要求に含まれるソフトウェアにデジタル署名することを求める要求をソフトウェア開発者から受信するステップと、
前記ソフトウェア開発者に関連するセキュリティポリシーにアクセスするステップであって、前記セキュリティポリシーは、前記ソフトウェア開発者による有効な要求の基準を記述する、ステップと、
少なくとも部分的に、有効な要求の前記基準の内の１つまたは複数が満たされているか否かに基づいて、前記要求が有効であるか否かを決定するステップと、
前記要求が有効であることを示す前記決定に応答して、前記ソフトウェアのデジタル署名を行うステップと、
前記デジタル署名されたソフトウェアに関連する評判情報をデジタル証明書に埋め込むステップであって、前記評判情報は、前記要求が有効であるか否かの前記決定において満たされたのは、有効な要求の前記１つまたは複数の基準のどれであるのかを示し、有効な要求の前記１つまたは複数の基準は、地理位置情報であってそこから有効な要求が前記ソフトウェア開発者によって出される地理位置情報含む、ステップと、
前記デジタル署名されたソフトウェアおよび前記デジタル証明書を前記ソフトウェア開発者に提供するステップと、
を含むステップを行う、コンピュータ可読記憶媒体。
【請求項１０】
前記コードがコンピュータプロセッサによって実行されることにより、前記コンピュータプロセッサは、
前記要求を前記ソフトウェア開発者から受信した条件を識別するステップと、
前記識別した条件を、前記ソフトウェア開発者の前記セキュリティポリシーに記述された有効な要求の前記基準と比較するステップと、
前記比較に基づいて、前記要求の前記識別された条件が、前記セキュリティポリシーに記述された有効な要求の前記基準とマッチするか否かを決定するステップと、
前記要求の前記識別された条件が前記有効な要求の前記基準とマッチすることに応答して、前記要求が有効であることを決定し、前記ソフトウェアにデジタル署名を行うステップと、
前記要求の前記識別された条件が前記有効な要求の前記基準とマッチしないことに応答して、前記要求が変則であることを決定するステップと、
を含むステップをさらに行う、請求項９に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記コードがコンピュータプロセッサによって実行されることにより、前記コンピュータプロセッサは、
前記要求が変則であるとの決定に応答してセキュリティ措置を講じるステップを含むステップをさらに行い、前記セキュリティ措置は、前記要求を拒否することを含む、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記コードがコンピュータプロセッサによって実行されることにより、前記コンピュータプロセッサは、
前記要求が変則であるとの決定に応答してセキュリティ措置を講じるステップを含むステップをさらに行い、前記セキュリティ措置は、前記要求が有効であることを確認するために、前記ソフトウェア開発者に連絡を取ることを含み、
前記確認は、前記ソフトウェア開発者からセキュリティ認証情報を受信することを含む、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記コードがコンピュータプロセッサによって実行されることにより、前記コンピュータプロセッサは、
前記要求の受信に応答して、前記要求が有効であることを検証するために、前記ソフトウェア開発者に関係する利害関係者に連絡を取るステップと、
前記要求が有効であることを検証する前記利害関係者からのセキュリティ認証情報が受信されるまでは、前記要求の処理を控えるステップと、
を含むステップをさらに行う、請求項９に記載のコンピュータ可読記憶媒体。
【請求項１４】
ソフトウェアにデジタル署名を行うための認証局のコンピュータシステムであって、前記システムは、
コンピュータプロセッサと、
前記コンピュータプロセッサで実行されるように構成されたコンピュータコードを保存する非一時的コンピュータ可読記憶媒体と、
を含み、
前記コンピュータコードが実行されることにより、前記システムは、
要求に含まれるソフトウェアにデジタル署名することを求める前記要求をソフトウェア開発者から受信するステップと、
前記ソフトウェア開発者に関連するセキュリティポリシーにアクセスするステップであって、前記セキュリティポリシーは、前記ソフトウェア開発者による有効な要求の基準を記述する、ステップと、
少なくとも部分的に、有効な要求の前記基準の内の１つまたは複数が満たされたか否かに基づいて、前記要求が有効であるか否かを決定するステップと、
前記要求が有効であることを示す前記決定に応答して、前記ソフトウェアのデジタル署名を行うステップと、
前記デジタル署名されたソフトウェアに関連する評判情報をデジタル証明書に埋め込むステップであって、前記評判情報は、前記要求が有効であるか否かの前記決定において満たされたのは、有効な要求の前記１つまたは複数の基準のどれであるのかを示し、有効な要求の前記１つまたは複数の基準は、地理位置情報であってそこから有効な要求が前記ソフトウェア開発者によって出される地理位置情報含む、ステップと、
前記デジタル署名されたソフトウェアおよび前記デジタル証明書を前記ソフトウェア開発者に提供するステップと、
を含むステップを行う、コンピュータシステム。
【請求項１５】
前記コンピュータコードが実行されることにより、前記システムは、
前記要求を前記ソフトウェア開発者から受信した条件を識別するステップと、
前記識別した条件を、前記ソフトウェア開発者の前記セキュリティポリシーに記述された有効な要求の前記基準と比較するステップと、
前記比較に基づいて、前記要求の前記識別された条件が、前記セキュリティポリシーに記述された有効な要求の前記基準とマッチするか否かを決定するステップと、
前記要求の前記識別された条件が前記有効な要求の前記基準とマッチすることに応答して、前記要求が有効であることを決定し、前記ソフトウェアにデジタル署名を行うステップと、
前記要求の前記識別された条件が前記有効な要求の前記基準とマッチしないことに応答して、前記要求が変則であることを決定するステップと、
を含むステップをさらに行う、請求項１４に記載のコンピュータシステム。
【請求項１６】
前記コンピュータコードが実行されることにより、前記システムは、
前記要求が変則であるとの決定に応答してセキュリティ措置を講じるステップを含むステップをさらに行い、前記セキュリティ措置は、前記要求が有効であることを確認するために、前記ソフトウェア開発者に連絡を取ることを含み、
前記確認は、前記ソフトウェア開発者からセキュリティ認証情報を受信することを含む、請求項１５に記載のコンピュータシステム。
【請求項１７】
前記コンピュータコードが実行されることにより、前記システムは、
前記要求の受信に応答して、前記要求が有効であることを検証するために、前記ソフトウェア開発者に関係する利害関係者に連絡を取るステップと、
前記要求が有効であることを検証する前記利害関係者からのセキュリティ認証情報が受信されるまでは、前記要求の処理を控えるステップと、
を含むステップをさらに行う、請求項１５に記載のコンピュータシステム。
【請求項１８】
デジタル証明書に埋め込まれた前記評判情報は、前記デジタル署名されたソフトウェアの信頼性のレベルを示す、請求項１に記載のコンピュータ実施方法。
【請求項１９】
クライアントデバイスによる前記デジタル署名されたソフトウェアの実行は、少なくともデジタル証明書に埋め込まれた前記評判情報の部分に基づく、請求項１８に記載のコンピュータ実施方法。
【請求項２０】
デジタル証明書に埋め込まれた前記評判情報は、前記ソフトウェア開発者による有効な要求の前記基準のうちの一つに一致する、前記要求が前記ソフトウェア開発者から受信される少なくとも一つの条件を特定する、請求項１に記載のコンピュータ実施方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータセキュリティに関し、特に、認証局によるコード署名を利用した、コンピュータシステム上での悪質および／または不正なコード（すなわちマルウェア）の実行の防止に関する。
【背景技術】
【０００２】
寄生コンピュータウイルスは、一般的に、コンピュータシステムに保存された他の実行可能プログラムにウイルスコードを忍ばせることによって、コンピュータシステムを感染させる。このコードは、他のファイルおよび／またはコンピュータシステムを感染させ、コンピュータシステム上のデータを破壊し、あるいは、他の悪意のある行為を行い得る。トロイの木馬、ワーム、キーストロークグラバー（ｋｅｙｓｔｒｏｋｅ  ｇｒａｂｂｅｒ）等を含む他の種類の悪質なコードもまた、コンピュータシステムに被害を与え得る。従って、コンピュータシステム上でウイルスまたは他の悪質なコードの感染および／または実行を防止する強い願望が存在する。
【０００３】
攻撃を防止するための技術の１つは、ソフトウェアがウイルスまたは他の悪質なコードによって変更されたか否かを検出する機構を確立することである。コード署名は、変更を検出するための技術の１つである。デジタル署名されたコードは、コードが変更されたか否かを検出するためにコンピュータシステムが使用可能な値をコンピュータプログラム内に含む。従って、コード署名は、実行可能コンテンツの改ざんを防止する。
【０００４】
従来のシステムでは、ソフトウェア開発者は、コードに署名するために、署名鍵および対応するデジタル証明書を認証局（ＣＡ）から入手する。デジタル証明書は、証明書が失効するまで、ソフトウェア開発者によって使用することができる。失効時には、証明書は、証明書を発行した認証局によって更新される必要がある。しかしながら、証明書が有効な期間中は、ソフトウェア開発者は、認証局とそれ以上やり取りする必要はない。従って、署名鍵の使用は、認証局には未知のものである。
【０００５】
マルウェアの作者は、合法的なソフトウェア会社からコード署名証明書を盗み取ったり、多くの偽の商号の下で証明書を登録したりし始めた。認証局には、デジタル証明書の使用が分からないので、マルウェアの作者は、マルウェアにデジタル署名を行うために、正規の証明書を使用することができる。マルウェアにデジタル署名を行うことにより、反マルウェアシステムが、多くの場合、署名されたソフトウェアに対してより高い信頼を置き、署名されたコードは悪意のないものと見なすことから、これらのシステムが回避される。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、盗まれた、および／または悪用されたデジタル証明書によって生じる問題に対処する必要性がある。
【課題を解決するための手段】
【０００７】
上記および他の必要性は、ソフトウェアにデジタル署名を行うために認証局のコンピュータシステムを使用する、コンピュータ実施方法、コンピュータシステム、および実行可能コードを保存する非一時的コンピュータ可読記憶媒体によって満たされる。コンピュータ実施方法のある実施形態は、要求に含まれるソフトウェアにデジタル署名することを求める要求をソフトウェア開発者から受信するステップを含む。ソフトウェア開発者に関連するセキュリティポリシーにアクセスする。セキュリティポリシーは、ソフトウェア開発者による有効な要求の基準を記述する。コンピュータ実施方法は、少なくとも部分的にセキュリティポリシーに基づいて、要求が有効であるか否かを決定する。要求が有効であることを示す決定に応答して、ソフトウェアのデジタル署名が行われる。コンピュータ実施方法は、デジタル署名されたソフトウェアをソフトウェア開発者に提供する。
【０００８】
ソフトウェアにデジタル署名を行うための認証局のコンピュータシステムの実施形態は、コンピュータプロセッサと、コンピュータプロセッサで実行されるように構成されたコンピュータプログラムモジュールを保存する非一時的コンピュータ可読記憶媒体とを含む。コンピュータプログラムモジュールは、要求に含まれるソフトウェアにデジタル署名することを求める要求をソフトウェア開発者から受信するように構成された署名要求モジュールを含む。モジュールはさらに、ソフトウェア開発者に関連するセキュリティポリシーにアクセスするように構成され、セキュリティポリシーは、ソフトウェア開発者による有効な要求の基準を記述し、少なくとも部分的にセキュリティポリシーに基づいて、要求が有効であるか否かを決定するように構成された要求検証モジュールを含む。最後に、モジュールは、要求が有効であることを示す決定に応答して、ソフトウェアのデジタル署名を行い、かつデジタル署名されたソフトウェアをソフトウェア開発者に提供するように構成されたソフトウェア署名モジュールを含む。
【０００９】
コンピュータプログラム製品の実施形態は、コンピュータ実行可能コードを保存する非一時的コンピュータ可読記憶媒体を含み、このコードは、コンピュータプロセッサによって実行される際に、要求に含まれるソフトウェアにデジタル署名することを求める要求をソフトウェア開発者から受信するステップを含むステップを行う。ソフトウェア開発者に関連するセキュリティポリシーにアクセスする。セキュリティポリシーは、ソフトウェア開発者による有効な要求の基準を記述する。ステップはさらに、少なくとも部分的にセキュリティポリシーに基づいて、要求が有効であるか否かを決定するステップを含む。要求が有効であることを示す決定に応答して、ソフトウェアのデジタル署名が行われる。ステップは、デジタル署名されたソフトウェアをソフトウェア開発者に提供するステップを含む。
【００１０】
この概要に記載の特徴および利点、並びに以下の詳細な説明は、包括的なものではない。多くの追加の特徴および利点は、この図面、明細書、および特許請求の範囲を鑑みれば、当業者には明らかとなるであろう。
【図面の簡単な説明】
【００１１】
【図１】ある実施形態によるコンピュータ環境のハイレベルブロック図である。
【図２】ある実施形態による、認証局、クライアント、またはソフトウェア開発者コンピュータシステムとして使用される典型的なコンピュータを示すハイレベルブロック図である。
【図３】ある実施形態による認証局の詳細図を示すハイレベルブロック図である。
【図４】ある実施形態による、ソフトウェアに署名を行うために認証局によって行われるステップを示すフローチャートである。
【発明を実施するための形態】
【００１２】
図面は、例示のみを目的として、本発明のある実施形態を示す。当業者であれば、本明細書に記載される本発明の原理から逸脱することなく、本明細書に示される構造および方法の代替実施形態を用いることが可能であることは、以下の記載から容易に認識されるであろう。
【００１３】
図１は、ある実施形態によるコンピュータ環境１００のハイレベル図である。図１は、認証局（ＣＡ）１０１、開発者コンピュータシステム１０３、およびクライアント１０５を示す。描写を単純化および明確にするために、１つのクライアント１０５および１つの開発者システム１０３のみを図１に示している。コンピュータ環境１００の実施形態は、ネットワーク１１５に接続した、数千または数百万のクライアント１０５および／または開発者１０３、および複数のＣＡ１０１を有し得る。
【００１４】
一般的に、ＣＡ１０１は、コンピュータプログラム（時に、「ソフトウェア」または「コード」と呼ばれる）の認証、検証、および暗号化を支援するために、セキュリティ認証情報、署名鍵（秘密／公開鍵ペア）、および／または他のデータを発行および管理する団体である。ＣＡ１０１は、公開鍵に基づいた技術を用いて、秘密／公開鍵ペアを生成する。ＣＡ１０１は、ＣＡの公開鍵を用いて解読が可能な暗号化情報を含む証明書を発行する。ＣＡの公開鍵は、よく知られたものであり、かつ簡単に検証されるので、関係者らは、公開鍵を用いることにより、ＣＡ１０１によって発行された証明書が正規のものであることを検証できる。
【００１５】
ある実施形態では、ＣＡ１０１は、開発者の公開鍵を指定するソフトウェア開発者１０３に証明書を発行する。ソフトウェア開発者１０３は、ソフトウェアを開発し、開発者の秘密鍵（「署名鍵」）を用いてそれにデジタル署名を行い、開発者の公開鍵を指定するＣＡ１０１によって発行された証明書と共にソフトウェアを配布することができる。クライアント１０５等の第三者は、ＣＡの公開鍵を用いることにより、証明書を解読し、証明書がＣＡ１０１によって開発者１０３に発行されたものであり、かつ変更されていないことを検証できる。さらに、第三者は、証明書内の開発者の公開鍵を使用することにより、開発者のデジタル署名を検証し、ソフトウェアが変更されているか否かを検出することができる。従って、ＣＡ１０１によって提供される機能性により、改ざんなしに（すなわち、クライアント１０５は、どのような改ざんも検出することができる）、開発者コンピュータシステム１０３からクライアント１０５へのソフトウェアの伝達が可能となる。
【００１６】
背景のセクションに述べたように、上記環境の問題点の１つは、ソフトウェアの署名を行う際に、ソフトウェア開発者１０３がＣＡ１０１とやり取りする必要のないことである。その結果、開発者の証明書が、開発者１０３自身または開発者の秘密鍵を入手した悪意のある第三者によって悪用を受ける。この問題および他の問題に対処するために、ある実施形態では、ＣＡ１０１自体が、ソフトウェア開発者１０３から受け取ったソフトウェアに署名する。あるいは、ＣＡ１０１は、ソフトウェア開発者１０３によって署名されたソフトウェアに連署してもよい。
【００１７】
署名の一部として、ＣＡ１０１は、署名されたソフトウェアに付属される高信頼証明書を作成する。ＣＡ１０１は、ソフトウェア署名プロセスに含まれるので、ＣＡ１０１は、コード署名鍵の使用を監視し、開発者１０３からの署名要求が正規のものであるとＣＡが判断した場合のみ、高信頼証明書を発行することができる。さらに、ＣＡ１０１の一実施形態は、ソフトウェアの署名を要求している開発者１０３の評判を評価し、評価を記述した情報を証明書に埋め込む。さらに、ＣＡ１０１による連署が必要とされる一実施形態においては、ＣＡは、連署を欠いた環境１００にあるソフトウェアを識別することにより、コード署名鍵の悪用を検出することができる。
【００１８】
ある実施形態では、開発者システム１０３は、クライアント１０５で実行されるソフトウェア（すなわち、コンピュータプログラムまたはコード）を開発するために、ソフトウェア開発者によって利用される。開発者コンピュータシステム１０３は、クライアント１０５での実行に適応したソフトウェアを開発するために開発者が使用するソフトウェア開発システムモジュール（「ＳＤＳ」と呼ばれる）１０７を含む。ＳＤＳ１０７は、開発者が実行可能コードを書く、コンパイルする、リンクさせる、およびデバッグすることを可能にする機能性を含む。
【００１９】
ある実施形態では、開発者コンピュータシステム１０３は、署名要求モジュール１０９を含む。署名要求モジュール１０９は、ＣＡ１０１と通信し、ＳＤＳ１０７によって作成された完成したソフトウェアにＣＡ１０１が署名（または連署）することを要求する。開発者システム１０３のユーザは、ＣＡ１０１によって提供される安全なウェブポータルを介して、または電子メールを含む他の手段を用いて、ソフトウェア署名要求をＣＡ１０１に提出してもよい。署名要求モジュール１０９は、ＣＡ１０１によって提供されるウェブポータルを用いて自動的に自身を認証し、開発者システム１０３のユーザに対して、署名要求をＣＡ１０１に手作業で提出するように通知してもよい。
【００２０】
さらに、署名要求モジュール１０９は、署名鍵および対応するデジタル証明書を入手するために、ＣＡ１０１と通信することができる。署名要求モジュール１０９は、ＣＡ１０１または他の認証局によって提供された署名鍵を用いて、ＳＤＳ１０３を用いて開発されたソフトウェアに署名してもよい。署名要求モジュール１０９は、次に、ソフトウェアに署名するために署名要求モジュール１０９によって使用された署名鍵の使用をＣＡ１０１が承認するために、署名されたソフトウェアに連署するようにＣＡ１０１に要求してもよい。
【００２１】
ある実施形態では、署名要求モジュール１０９は、ＳＤＳ１０７に組み込まれる。あるいは、署名要求モジュール１０９は、ＳＤＳ１０７、または一旦ソフトウェアが作成されると開発者によって呼び出される別個のモジュールである。署名要求モジュール１０９は、ＳＤＳ１０７を用いて開発されたソフトウェアの全てにＣＡ１０１が署名することを自動的かつ透過的に（すなわち、開発者の介入なしに）要求する自動化プロセスとして実施されてもよい。この自動化の実施形態により、開発者側の署名されたコードを作成する負担が低減される。
【００２２】
開発者システム１０３がＣＡ１０１によって署名または連署されたソフトウェアを受け取ると、開発者システム１０３は、署名されたソフトウェアをクライアント１０５に配布することができる。開発者システム１０３は、小売店で箱入りのソフトウェアを販売する、および／またはソフトウェアをインターネットからダウンロードできるようにすること等による一般的な流通経路を介して、署名されたソフトウェアを配布してもよい。
【００２３】
ある実施形態では、クライアント１０５は、ソフトウェアアプリケーションのダウンロード、インストール、および／または実行を含む行為を行うために、一人または複数のユーザによって使用されるコンピュータである。クライアント１０５は、例えば、ウェブサーバおよびネットワーク１１５上の他のコンピュータからコンテンツを検索および表示することをユーザに許可するＭＩＣＲＯＳＯＦＴ  ＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ、  ＭＯＺＩＬＬＡ  ＦＩＲＥＦＯＸ、  ＡＰＰＬＥ  ＳＡＦＡＲＩ、またはＧＯＯＧＬＥ  ＣＨＲＯＭＥ等のウェブブラウザを含むパーソナルコンピュータでもよい。他の実施形態では、クライアント１０５は、携帯情報端末（ＰＤＡ）、携帯電話、ポケットベル、テレビの「セットトップボックス」等のコンピュータ以外のネットワーキング可能デバイスである。この説明目的で、「クライアント」という用語は、ソフトウェアアプリケーションまたはマルウェアまたは他の脅威を構成し得る他のエンティティに直面するサーバやゲートウェイ等のコンピュータも含む。例えば、クライアント１０５は、企業ネットワークおよびインターネット間に位置するネットワークゲートウェイでもよい。
【００２４】
ある実施形態では、クライアント１０５は、ソフトウェアを実行する前に、それに関連する証明書および署名を評価する。クライアント１０５は、証明書／署名に基づいて、ソフトウェアに関する信用レベル（すなわち、信頼性）を決定し、その信用レベルに基づいて、ソフトウェアを実行するか否か、およびその実行方法も決定する。例えば、ある実施形態では、ソフトウェアがＣＡ１０１によって連署されており、ＣＡからの証明書が、開発者１０３の評判が良いことを示す場合には、クライアント１０５は、追加の予防措置を取ることなく、ソフトウェアを実行する。クライアント１０５は、ソフトウェアが信頼できるソフトウェア開発者によって作成されており、従って、悪意のあるものではないことの保証として、ＣＡの署名および評判評価を扱う。ある実施形態では、クライアント１０５は、ＣＡ１０１によって連署されていないソフトウェアの実行を止めてもよい。あるいは、ソフトウェアがＣＡ１０１によって連署されていない場合、または、開発者１０３の評判が良いとは言えないことをＣＡの証明書が示す場合には、クライアント１０５は、マルウェアのスキャンを行った後にのみソフトウェアを実行する、または限定された特権でソフトウェアを実行する等の、追加の予防措置を講じてソフトウェアを実行してもよい。
【００２５】
認証局１０１、クライアント１０５、および開発者システム１０３間の通信は、ネットワーク１１５を介して行われる。ある実施形態では、ネットワーク１１５は、標準的な通信技術および／またはプロトコルを使用する。従って、ネットワーク１１５は、イーサネット、８０２．１１、ワイマックス（ＷｉＭＡＸ）、３Ｇ、デジタル加入者回線（ＤＳＬ）、非同期転送モード（ＡＴＭ）、インフィニバンド（ＩｎｆｉｎｉＢａｎｄ）、ＰＣＩ  ＥｘＡＳ（ＰＣＩ  Ｅｘｐｒｅｓｓ  Ａｄｖａｎｃｅｄ  Ｓｗｉｔｃｈｉｎｇ）等の技術を用いたリンクを含み得る。同様に、ネットワーク１１５で使用されるネットワークプロトコルは、マルチプロトコル・ラベル・スイッチング（ＭＰＬＳ）、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、ユーザ・データグラム・プロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、シンプルメール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）等を含み得る。ネットワーク１１５上でやり取りされるデータは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）等を含む技術および／またはフォーマットを使用して表すことができる。さらに、リンクの全てまたは一部は、セキュア・ソケット・レイヤー（ＳＳＬ）、トランスポート層セキュリティ（ＴＬＳ）、複数の仮想プライベート・ネットワーク（ＶＰＮ）、インターネット・プロトコル・セキュリティ（ＩＰｓｅｃ）等の従来の暗号化技術を用いて、暗号化することができる。別の実施形態では、エンティティは、上記のものに代えて、またはそれらに加えて、カスタマイズされた、および／または専用データ通信技術を用いることができる。実施形態に応じて、ネットワーク１１５は、インターネット等の他のネットワークへのリンクも含むことができる。
【００２６】
図２は、ある実施形態による、ＣＡ１０１、開発者システム１０３、および／またはクライアント１０５として機能するコンピュータ２００のハイレベルブロック図である。図示されているのは、チップセット２０４に接続された少なくとも１つのプロセッサ２０２である。チップセット２０４に同じく接続されているのは、メモリ２０６、記憶装置２０８、キーボード２１０、グラフィックスアダプタ２１２、ポインティングデバイス２１４、ネットワークアダプタ２１６である。ディスプレイ２１８は、グラフィックスアダプタ２１２に接続されている。ある実施形態では、チップセット２０４の機能性は、メモリコントローラハブ２２０およびＩ／Ｏコントローラハブ２２２によって提供される。別の実施形態では、メモリ２０６は、チップセット２０４の代わりに、プロセッサ２０２に直接接続される。
【００２７】
記憶装置２０８は、ハードドライブ、コンパクトディスク利用の読み出し専用メモリ（ＣＤ−ＲＯＭ）、ＤＶＤ、または固体メモリデバイス等の任意の非一時的コンピュータ可読記憶媒体である。メモリ２０６は、プロセッサ２０２によって使用される命令およびデータを保持する。ポインティングデバイス２１４は、マウス、トラックボール、または他の種類のポインティングデバイスでもよく、キーボード２１０と一緒に用いて、コンピュータシステム２００にデータを入力する。グラフィックスアダプタ２１２は、ディスプレイ２１８上に画像および他の情報を表示させる。ネットワークアダプタ２１６は、コンピュータシステム２００をローカルまたは広域ネットワークに接続させる。
【００２８】
当該技術分野で公知のように、コンピュータ２００は、図２に示されている構成要素とは異なる、および／または他の構成要素を有し得る。さらに、コンピュータ２００は、特定の図示された構成要素を欠いていてもよい。ある実施形態では、認証局１０１として機能するコンピュータ２００は、キーボード２１０、ポインティングデバイス２１４、グラフィックスアダプタ２１２、および／またはディスプレイ２１８を持たない。さらに、記憶装置２０８は、ローカルおよび／またはコンピュータ２００からリモートであってもよい（ストレージ・エリア・ネットワーク（ＳＡＮ）内で具体化される等）。
【００２９】
当該技術分野で公知のように、コンピュータ２００は、本明細書に記載の機能性を提供するコンピュータプログラムモジュールを実行するように適応される。本明細書において使用されるように、「モジュール」という用語は、特定の機能性を提供するために利用されるコンピュータプログラム論理を意味する。従って、モジュールは、ハードウェア、ファームウェア、および／またはソフトウェアにおいて実施され得る。ある実施形態では、プログラムモジュールは、記憶装置２０８に保存され、メモリ２０６にロードされ、プロセッサ２０２によって実行される。
【００３０】
図３は、ある実施形態によるＣＡ１０１の詳細図を示すハイレベルブロック図である。図３に示されるように、ＣＡ１０１は、互いに通信する複数のモジュールを含む。当業者であれば、ＣＡ１０１の他の実施形態が、本明細書に記載したモジュールとは異なる、および／または他のモジュールを有し得ること、およびこれらの機能性がモジュール間で異なる方法で割り振られ得ることを認識するであろう。
【００３１】
ある実施形態では、鍵データベース３０９は、ソフトウェア開発者１０３からの要求に応じて、ソフトウェアに署名するためにＣＡ１０１が使用する１つまたは複数の秘密／公開鍵ペアを保存する。当該技術分野で公知のように、鍵は、通常、ランダムまたは疑似ランダム技術に従って生成される長整数等の数値である。公開鍵暗号化は、秘密鍵／公開鍵ペアを利用する。これらの鍵は、秘密鍵を用いて暗号化されたメッセージが公開鍵を用いて解読でき、逆もまた同様にできるが、公開鍵およびメッセージを用いて（少なくとも妥当な時間内では）秘密鍵を計算することはできないように関連付けられる。ＣＡ１０１は、例えば、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ、ナップザック、ＤＳＡ、および／またはＲＳＡ鍵生成スキームを利用した技術を含む従来の技術を用いて、鍵ペアの生成を行ってもよい。
【００３２】
ポリシーデータベース３１１は、ＣＡ１０１と通信するソフトウェア開発者１０３に関するセキュリティポリシー（すなわち、プロフィール）を保存する。ある実施形態では、ソフトウェア開発者のセキュリティポリシーは、ＣＡ１０１が、ソフトウェア開発者１０３からの有効なソフトウェア署名要求を予期できる基準または条件を記述する。ソフトウェア開発者１０３は、有効なソフトウェア署名要求のデフォルト条件または条項を示す自身のセキュリティポリシーをＣＡ１０１に提供することができる。ＣＡ１０１は、ソフトウェア開発者１０３がソフトウェアに署名するようにＣＡ１０１に要求する実際の（すなわち現実の）条件の観察結果に基づいて、ソフトウェア開発者１０３のセキュリティポリシーを更新してもよい。ソフトウェア開発者１０３は、有効な署名要求の更新した条件を提供することもできる。あるいは、ソフトウェア開発者１０３は、ＣＡ１０１にセキュリティポリシーを提供しなくてもよい。セキュリティポリシーを提供しないことにより、ソフトウェア開発者１０３は、ＣＡ１０１に向けられるソフトウェア署名要求に対する制約に欠ける。従って、ＣＡ１０１は、ソフトウェア開発者１０３がソフトウェアに署名するようにＣＡ１０１に要求する条件の観測結果に基づいて、ソフトウェア開発者１０１に関するセキュリティポリシーを生成してもよい。
【００３３】
既に述べたように、セキュリティポリシーは、署名要求が、有効あるいはセキュリティポリシーに対して変則であるかを決定するために、ＣＡ１０１によって検証されなければならない具体的な条件を規定することができる。例えば、ソフトウェア開発者のセキュリティポリシーは、有効なソフトウェア署名要求をＣＡ１０１に提出し得るソフトウェア開発者１０３に関連するコンピュータシステムのマシンＩＤおよび／または社員（すなわちスタッフ）を記述し得る。セキュリティポリシーは、地理位置情報であってそこからのソフトウェア開発者の署名要求をＣＡ１０１が予期し得る地理位置情報も記述し得る。例えば、セキュリティポリシーは、米国内に位置するコンピュータシステムからの署名要求の受信のみが許可されることを示してもよい。指定された地理位置情報は、より具体的な場所であってそこからの要求はＣＡ１０１によって受信されなければならない都市名コードあるいは郵便番号等のより具体的な場所を記述することもできる。ある実施形態では、セキュリティポリシーは、ソフトウェアのビルド日時のソフトウェア開発者のスケジュールを記述することもできる。ビルド日時は、ＣＡ１０１が完成したソフトウェアに署名するようにソフトウェア開発者からの要求を受信することが予期できる期間（例えば、日、週、または月）を示す。加えて、ソフトウェア開発者は、悪質な特性に関してソフトウェアを分析することによって、提出されたソフトウェアが悪質なものではないとＣＡ１０１が検証することをそのポリシー内に示してもよい。他の実施形態では、ソフトウェア開発者のポリシーは、本明細書に記載されたもの以外の規則を包含してもよい。
【００３４】
署名要求モジュール３０１は、開発者コンピュータシステム１０３からソフトウェア署名要求を受信する。ある実施形態では、開発者コンピュータシステム１０３からの要求に含まれるソフトウェアは、無署名でもよい。あるいは、その要求に含まれるソフトウェアは、開発者コンピュータシステム１０３によって既に署名されていてもよい。従って、ソフトウェア開発者は、ＣＡ１０１がソフトウェアに連署または副署することを要求している。ある実施形態では、要求は、ＣＡ１０１によって提供される安全なウェブポータルを介して、署名要求モジュール３０１によって受信される。ソフトウェア開発者１０３は、ユーザ名およびパスワード等の認証情報を用いて、安全なウェブポータルにログインする。認証情報が検証されると、ソフトウェア開発者１０３は、署名要求モジュール３０１によって受信されるソフトウェア署名要求を提供する。あるいは、ソフトウェア署名モジュール３０１は、電子メール等の他の手段によって、要求を受信してもよい。
【００３５】
ある実施形態では、署名された／無署名のソフトウェアに加えて、署名要求は、要求の条件を記述する情報（例えばメタデータ）を含む。ある実施形態によれば、署名要求モジュール３０１は、要求自体からメタデータを入手する。例えば、署名要求モジュール３０１は、要求を提出した開発者コンピュータシステム１０３のマシンＩＤおよび／またはコンピュータシステム１０３の要求が提出された日付および時間を、要求に関連するメタデータから入手してもよい。さらに、署名モジュール３０１は、ウェブポータルであってそこから要求が提出されたウェブポータルに提供されたユーザ名および／またはパスワードを示すメタデータから、要求を提出しているユーザを識別してもよい。
【００３６】
加えて、署名要求モジュール３０１は、要求からメタデータを得てもよい。署名要求モジュール３０１は、要求の出所を示す地理位置情報等のメタデータを得てもよい。地理位置情報を決定するためには、署名モジュール３０１は、ＩＰアドレスであってそこから要求が受信されたＩＰアドレスを観察してもよい。さらに、ソフトウェアの署名要求が電子メールによって送信された場合には、署名要求モジュール３０１は、要求を提出した人の電子メールアドレスに基づいて、要求を提出しているユーザを識別してもよい。
【００３７】
ある実施形態では、署名要求モジュール３０１は、ソフトウェア開発者１０３からのソフトウェア署名要求の過去のパターンを識別する。署名要求モジュール３０１は、少なくとも部分的に識別された要求パターンに基づいて、ソフトウェア開発者のセキュリティポリシーを更新する。従って、ソフトウェア開発者システム１０３は、有効な署名要求を示すセキュリティポリシーにおいて、初期基準を規定済みの場合もあるが、署名要求モジュール３０１は、ソフトウェア開発者の実際の署名要求のパターンに従ってポリシーを変更する。例えば、ソフトウェア開発者は、有効な要求がカリフォルニアからのもののみであることをセキュリティポリシーに示していた場合もある。しかしながら、署名要求モジュール３０１は、ＣＡ１０１に対するソフトウェア開発者の署名要求の履歴に基づいて、ソフトウェア開発者からの有効な署名要求は、実際には、カリフォルニアおよびニューヨークからのものであると決定することができる。
【００３８】
ある実施形態では、要求検証モジュール３０３は、ソフトウェア開発者システム１０３から受信したソフトウェア署名要求が有効であるか変則であるかを決定する。要求検証モジュール３０３は、要求の条件がソフトウェア開発者１０３のセキュリティポリシーに示された条項と一致していれば要求が有効であると決定する。すなわち、要求検証モジュール３０３は、署名要求の条件が、開発者のセキュリティポリシーに示されるようなソフトウェア開発者１０３の一般的署名パターンに一致するか否かを識別する。要求の条件がソフトウェア開発者のセキュリティポリシーと矛盾する場合には、その要求は変則である。要求が有効または変則であるかを決定するために、要求検証モジュール３０３は、要求に関連する情報（例えばメタデータ）を、ポリシーデータベース３１１に保存されたソフトウェア開発者のセキュリティポリシーと比較する。要求の条件がソフトウェア開発者のセキュリティポリシーと一致する（すなわちマッチする）ことを示す比較に応答して、要求検証モジュール３０３は、要求が有効であると決定する。
【００３９】
例えば、ソフトウェア開発者のセキュリティポリシーは、有効な要求が米国からのもののみであって、かつ、特定のマシンＩＤからのもののみであることを示してもよい。要求検証モジュール３０３は、ソフトウェア開発者のセキュリティポリシーを、要求の出所を示す要求からのメタデータ並びに要求をＣＡ１０１に送信したソフトウェア開発者システム１０３のマシンＩＤを示すメタデータと比較する。メタデータから、要求検証モジュール３０３は、カリフォルニアからのものであり、かつ開発者のセキュリティポリシーに記載されたマシンＩＤからの要求を決定する。従って、要求検証モジュール３０３は、その要求が有効であると決定する。
【００４０】
しかしながら、要求の条件がソフトウェア開発者のセキュリティポリシーと矛盾する（すなわちマッチしない）ことを比較が示す場合には、要求検証モジュール３０３は、要求が変則であると識別する。要求が変則であることに応答して、要求検証モジュール３０３は、１つまたは複数のセキュリティ措置を行ってもよい。ある実施形態では、セキュリティ措置は、変則要求を悪意のあるものとして扱い、自動的に署名要求を拒否することを含む。従って、要求検証モジュール３０３は、ソフトウェアの署名／副署を拒む。あるいは、要求検証モジュール３０３は、変則要求を悪意のあるものとして自動的に扱わなくてもよい。代わりに、要求検証モジュール３０３は、要求を提出したソフトウェア開発者に連絡を取ることを含むセキュリティ措置を行ってもよい。ソフトウェア開発者に連絡を取ることにより、要求検証モジュール３０３は、要求が実際に有効な要求であるか否かを決定することができる。さらに、要求検証モジュール３０３は、要求を有効にするためのパスワードをソフトウェア開発者が提供することを求めてもよい。パスワードが検証されると、要求検証モジュール３０３は、その要求を有効であると見なすことができる。
【００４１】
例えば、要求が変則であると要求検証モジュール３０３が決定したことに応答して、要求検証モジュールは、要求に関するメッセージの電子メールまたは電話によって、ソフトウェア開発者１０３と連絡を取ってもよい。このメッセージは、開発者からのソフトウェア署名要求が、開発者のセキュリティポリシーと一致しなかったために変則であったことを示してもよい。例えば、開発者のセキュリティポリシーは、有効な署名要求は米国からのみ受信されるが、変則要求の出所は中国であることを示してもよい。従って、この要求は疑わしいと見なされ、ソフトウェア開発者１０３は連絡を受ける。加えて、このメッセージには、ＣＡ１０１に対してソフトウェア開発者自身が本物であることを証明するために、ソフトウェア開発者にパスワードを提供することを要求する等の、ソフトウェア開発者に対するチャレンジ質問を含んでいてもよい。次に、ＣＡ１０１がソフトウェア開発者に関連する正しいパスワードを受け取ったことに応答して、この要求は、有効であると決定される。
【００４２】
認証局１０１は、マルウェア検出モジュール３０７をさらに含む。幾つかの実施形態では、要求検証モジュール３０３は、署名要求が変則であるか否かを決定するために、マルウェア検出モジュール３０７を呼び出し、受信したソフトウェアをスキャンする。マルウェア検出モジュール３０７は、悪質な特性に関して、ソフトウェア開発者システム１０３からの署名要求に含まれるソフトウェアを分析する。すなわち、マルウェア検出モジュール３０７は、受信したソフトウェアがマルウェアである、またはマルウェアを含むかを識別する。従って、マルウェア検出モジュール３０７は、要求の条件がソフトウェア開発者のセキュリティポリシーと一致する場合であっても、悪質なソフトウェアが署名されることを防止する。悪質なソフトウェアがマルウェア検出モジュール３０７によって検出されたことに応答して、悪質なソフトウェアに関連する要求は、自動的に拒否される。悪質なソフトウェアは、マルウェアに基づくマルウェア署名を開発するために、マルウェア検出モジュール３０７によって保存されてもよい。マルウェア署名は、クライアントに保存されるアンチウイルスソフトウェアを更新するために、クライアント１０５に送信される。
【００４３】
ある実施形態では、要求検証モジュール３０３は、署名鍵が盗まれたか否かも決定する。既に署名されたソフトウェアに連署する要求を受信すると、要求検証モジュール３０３は、ソフトウェアに署名するためにソフトウェア開発者システム１０３によって使用された署名鍵を発行した既知の証明書の所有者（それ自身以外）と連絡を取る。認証局と連絡を取ることにより、要求検証モジュール３０３は、認証局が開発者システム１０３による署名鍵の使用を予期しているか否かを決定する。すなわち、要求検証モジュール３０３は、証明書の所有者が署名鍵の使用を予期していることを認証する。証明書の所有者が、１つまたは複数の自身の証明書の使用を予期していることを確認することにより、要求検証モジュール３０３は、署名鍵が盗まれたかどうかを検出することができる。
【００４４】
加えて、要求検証モジュール３０３は、開発者コンピュータシステム１０３によって提出された各署名要求を検証するために、利害関係者と連絡を取ってもよい。ある実施形態では、利害関係者は、開発者１０３の行為によって影響を受ける開発者１０３と関係する人または団体または組織である。要求検証モジュール３０３は、開発者コンピュータシステム１０３によって提出されたソフトウェア署名要求が正規のものであることを検証するために、利害関係者に連絡を取る。利害関係者は、開発者コンピュータシステムの要求の正当性を検証するパスワード等の認証情報を提供することによって、要求を検証してもよい。ある実施形態では、要求が検証されるまでは、要求検証モジュール３０３は、要求に関連するソフトウェアが署名されることを阻止することができる。すなわち、要求検証モジュール３０３は、要求の正当性が利害関係者によって検証されるまでは、要求の処理を控えることができる。
【００４５】
ソフトウェア署名モジュール３０５は、ソフトウェアにデジタル署名を行う。ある実施形態によれば、ソフトウェア署名モジュール３０５は、有効な署名要求に関連するソフトウェアにのみ署名を行う。署名を行うために、ソフトウェア署名モジュール３０５は、ソフトウェアのハッシュを計算するためのハッシュ関数を用いる。ある実施形態では、ソフトウェア署名モジュール３０５は、鍵データベース３０９からの秘密鍵を用いて、ハッシュを暗号化する。別の実施形態では、秘密鍵は、ハッシュを生成するために、ハッシュ関数自体によって利用され、これによって、ハッシュの別個の暗号化を行う必要性が排除される。
【００４６】
ソフトウェア署名モジュール３０５は、ハッシュを暗号化するために使用される秘密鍵に対応する公開鍵を指定する高信頼コード署名証明書も作成する。ある実施形態では、ソフトウェア署名モジュール３０５は、証明書内に評判情報を入れる。評判情報は、署名されたソフトウェアの信頼性および／または開発者１０３の評判を示す。評判情報は、ソフトウェア開発者の署名要求の検証中に満たされたソフトウェア開発者のセキュリティポリシーの条項および／または署名要求の提出を利害関係者が確認したことの表示を含んでいてもよい。ソフトウェア開発者のポリシーのどの条項が満たされたかに基づいてＣＡ１０１によって計算された評判スコア等の評判に関する他の表示を、証明書内に包含してもよい。
【００４７】
ある実施形態では、評判情報に基づいて、異なるレベルの信頼性を証明書内に包含してもよい。例えば、証明書が評判情報を欠く場合には、ソフトウェア署名モジュール３０５は、その証明書に「信頼できる」レベルを割り当ててもよい。ソフトウェア開発者のセキュリティポリシーは検証されていないが、ソフトウェアがＣＡ１０１によって署名／連署されている事実は、ソフトウェアが信頼できることを十分に保証する。加えて、ソフトウェアの署名に先立って、証明書に示されるソフトウェア開発者のセキュリティポリシーの条件がＣＡ１０１によって検証済みである場合には、ソフトウェア署名モジュール３０５は、証明書に「非常に信頼できる」レベルを包含してもよい。最後に、利害関係者が要求の正当性を確認し、かつＣＡ１０１が証明書に評判情報として示されるソフトウェア開発者のセキュリティポリシーの条項を検証した場合には、ソフトウェア署名モジュール３０５は、証明書に「極めて信頼できる」レベルを包含してもよい。
【００４８】
証明書の作成後に、ソフトウェア署名モジュール３０５は、暗号化されたハッシュおよび証明書を保存する。暗号化されたハッシュおよび証明書を保存することにより、ソフトウェア署名モジュール３０５は、効果的にソフトウェアに署名する。ソフトウェア署名モジュール３０５は、ソフトウェアと一緒に配布するための暗号化されたハッシュおよび証明書をソフトウェア開発者コンピュータシステム１０３に送信してもよい。
【００４９】
ある実施形態では、ＣＡ１０１は、無署名ソフトウェア検出モジュール３１３をさらに含む。無署名ソフトウェア検出モジュール３１３は、ＣＡ１０１によって署名／連署が行われていない環境１００にある署名されたソフトウェアを識別する。既に述べたように、クライアント１０５は、ＣＡ１０１によって署名／連署されたソフトウェアのみを実行することができる。無署名ソフトウェア検出モジュール３１３は、実行を拒絶された無署名ソフトウェアを示す連絡をクライアント１０５から受信してもよい。あるいは、無署名ソフトウェア検出モジュール３１３は、環境１００における無署名ソフトウェアの指摘を他の外部ソースから受信してもよい。
【００５０】
図４は、ある実施形態による、ソフトウェア開発者からの署名要求に含まれるソフトウェアに署名を行うためにＣＡ１０１によって行われるステップを示すフローチャートである。他の実施形態は、異なる順序で図示したステップを行う、および／または異なるステップまたは追加のステップを行う。さらに、これらのステップの一部は、認証局１０１以外の団体によって行うことができる。
【００５１】
ある実施形態では、ＣＡ１０１は、ソフトウェア開発者からソフトウェアの署名要求を受信する（４０１）。ＣＡ１０１は、要求を提出したソフトウェア開発者のセキュリティポリシーにアクセスする（４０３）。ＣＡ１０１は、要求の条件をソフトウェア開発者のセキュリティポリシーと比較する（４０５）。ＣＡ１０１は、要求の条件がソフトウェア開発者のセキュリティポリシーと一致するか否かに基づいて、要求が変則であるか否かを決定する（４０７）。要求の条件がセキュリティポリシーと矛盾する場合には、その要求は変則であり、ＣＡ１０１がセキュリティ措置を講じる（４０９）。セキュリティ措置は、要求を拒否する、または変則要求に関してソフトウェア開発者に連絡を取ることを含み得る。要求が有効であることに応答して、ＣＡ１０１は、ソフトウェアに署名する（４１１）。ＣＡ１０１は、署名したソフトウェアをソフトウェア開発者に返却し、要求を遂行する（４１３）。
【００５２】
署名／連署されたソフトウェアをＣＡ１０１からソフトウェア開発者が受け取ると、ソフトウェア開発者は、署名されたソフトウェアをクライアント１０５に配布する。クライアント１０５は、それを実行する前に、ソフトウェアに関連する証明書および署名を評価する。クライアント１０５は、証明書に含まれる評判情報に基づいて、ソフトウェアの信頼性レベルを決定することができる。信頼性レベルに基づいて、クライアント１０５は、信頼レベルに基づいて、ソフトウェアを実行するか否か、およびその実行方法を決定する。例えば、「極めて信頼できる」レベルは、ソフトウェアが信頼できるソフトウェア開発者によって作成されており、悪意のあるものではないことをクライアント１０５に示すことができる。従って、クライアント１０５は、予防措置を何ら講じることなく、ソフトウェアを実行することができる。
【００５３】
上記の記載は、ある実施形態による認証局１０１を説明するために包含されたものである。他の実施形態、特定の実施形態の動作、およびは、本発明の範囲を限定するものではない。本発明の範囲は、以下の特許請求の範囲によってのみ限定されるものである。上記の記載から、本発明の精神および範囲になお包含される多くの変更例が、当業者には明らかとなるであろう。
【図１】
0005598828.tif 000002
【図２】
0005598828.tif 000003
【図３】
0005598828.tif 000004
【図４】
0005598828.tif 000005