(57)【要約】  ソフトウェア流通及びソフトウェア起動の使用の統計情報の収集のための柔軟且つ安全なツールをソフトウェア開発者に提供するべく、エンドユーザー演算装置（コンピュータ）上におけるソフトウェア起動及びその状態の更なる追跡用のシステム及び方法を開発した。方法は、（ａ）取得確認を入手するステップと、（ｂ）ライセンスを要求するステップと、（ｃ）ライセンスを発行し、且つ、エンドユーザーに供給するステップであって、ライセンスは、サーバーにより、プライベートキーによって保護され、且つ、プライベートキーは、クライアントにおいて保存されてはいない、ステップと、（ｄ）ユーザーのコンピュータ上におけるライセンスの検証ステップと、（ｅ）ユーザーのコンピュータ上においてライセンスを保存するステップと、（ｆ）起動状態の定期的追跡ステップと、（ｇ）ユーザーのライセンスに伴う別の動作ステップと、という論理ステップから構成されており、ライセンスを検証するステップは、アプリケーションと関連するクライアントにおいて、なんらの変更をも伴うことなしに、サーバーから受け取られたライセンスを検証するステップと、ライセンスをクライアントに保存するステップと、を有する。
2020524836.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェア起動及びライセンス追跡用の方法であって、
（ａ）前記ソフトウェアの取得と関連する取得確認を入手し、且つ、前記取得確認をソフトウェア起動及びライセンス付与と関連するサーバーに提供するステップと、
（ｂ）前記ソフトウェアを使用するべくクライアントが認可されるためのライセンスを要求するステップであって、前記ライセンスは、サーバーにより、プライベートキーによって保護されており、且つ、前記プライベートキーは、前記クライアントにおいて保存されてはいない、ステップと、
（ｃ）前記ライセンスを発行し、且つ、クライアントに提供するステップと、
（ｄ）前記ライセンスを前記クライアントにおいて検証するステップと、
（ｅ）前記ライセンスを前記クライアントにおいて保存するステップと、
（ｆ）定期的に、前記ライセンスの起動状態を追跡するステップと、
（ｇ）前記ライセンスの前記起動状態に基づいて、前記クライアントにおいて前記ライセンスに対して動作を実行するステップであって、前記ライセンスを前記クライアントにおいて検証する前記ステップは、アプリケーションと関連する前記クライアントにおいて、なんらの変更をも伴うことなしに、前記サーバーから受け取られた前記ライセンスを検証し、且つ、前記ライセンスを前記クライアントに保存するステップを有する、ステップと、
を有する方法。
【請求項２】
前記取得確認は、起動キー及び前記サーバーと関連するデータベース内のレコードのうちの少なくとも１つを有し、且つ、更には、前記サーバーは、前記ソフトウェアライセンス用の前記取得確認を交換するための命令をユーザーに提供している請求項１に記載の方法。
【請求項３】
前記取得確認は、直接販売、第三者のリセラーを介した販売、並びに、オンライン又は物理的媒体上のボックスバージョンを介した流通のうちの１つによって入手される請求項１に記載の方法。
【請求項４】
前記取得確認は、（ａ）前記取得確認を生成する前記サーバーと関連するユニフォームリソースロケータ（ＵＲＬ）、（ｂ）複数の取得確認のバルク生成、並びに、（ｃ）前記取得確認の単一生成のうちの少なくとも１つによって生成される請求項１に記載の方法。
【請求項５】
前記ＵＲＬによって生成される前記取得確認は、
前記取得確認を取得するべくウェブページアクセスをユーザーに提供するステップと、
前記ユーザーと関連する必要とされる情報を受け取るステップと、
前記アプリケーションの購入に成功した場合に、前記ユーザーの前記必要とされる情報を前記サーバーに提供するステップであって、前記アプリケーションの注文情報は、前記サーバーにおいて保存され、且つ、前記取得確認は、サーバーによって生成され、且つ、取得情報を前記ユーザーに提供するステップと、
前記アプリケーションの購入に成功しなかった場合に、前記アプリケーションの前記購入に成功しなかったという通知を前記ユーザーに提供するステップと、
を有する請求項４に記載の方法。
【請求項６】
前記取得確認は、暗号化を伴うことなしに、ユーザーに提供される請求項１に記載の方法。
【請求項７】
ログイン及びパスワード情報の一意のペアの提供、セキュリティキーによって保護された前記サーバーとの間の安全な接続の確立、並びに、前記サーバーとの間の接続の確立及びユーザーを識別するパラメータの送信のうちの１つ又は複数により、前記取得確認の生成と関連する前記サーバー内のレコードを生成するステップと、前記ユーザーが識別を提供した後に、前記アプリケーションの前記取得に関する情報を前記サーバー内において保存するステップと、を更に有する請求項１に記載の方法。
【請求項８】
前記（ｃ）ステップ及び前記（ｄ）ステップは、
ユーザーから前記取得確認を受け取るステップと、
前記クライアントが、前記ライセンスの要求を生成し、且つ、前記サーバーに提供するステップと、
前記サーバーが、起動が前記取得確認について許容されているかどうかを判定するステップと、
前記起動が許容されている場合に、前記サーバーが、前記ユーザーの識別情報に基づいてライセンスを発行し、且つ、前記ライセンスのファイルを前記ユーザーに提供するステップと、
を有する請求項１に記載の方法。
【請求項９】
前記取得確認は、前記アプリケーションのインストールによって認識される規定された添え字を有するパターンを使用して生成された１つ又は複数の起動キーを有し、且つ、ユーザーが情報を前記サーバーに提供するためのフォームの表示をトリガすることになり、前記アプリケーションのベンダは、その独自のパターンに基づいて前記パターンを判定することができる請求項１に記載の方法。
【請求項１０】
前記ライセンスは、前記アプリケーションのバンドルＩＤ、前記クライアントの１つ又は複数の識別子、及びランダムに生成されたストリングのうちの少なくとも１つと関連するパラメータを含むように生成されている請求項１に記載の方法。
【請求項１１】
前記検証するステップは、前記サーバー上において生成された前記ライセンスの検証を実行するステップを更に有し、前記ライセンスは、デジタル署名を生成するべく、一意である、且つ、安全である、前記プライベートキーによって署名され、且つ、前記デジタル署名は、前記クライアントにおいて前記ソフトウェアのパブリックキーによって更に検証され、前記ソフトウェアは、ベンダアプリケーションを有する請求項１に記載の方法。
【請求項１２】
ソフトウェア起動及びライセンス追跡用の動作を実行するように構成された一時的ではないコンピュータ可読媒体であって、前記動作は、
（ａ）前記ソフトウェアの取得と関連する取得確認を入手し、且つ、前記取得確認をソフトウェア起動及びライセンス付与と関連するサーバーに提供するステップと、
（ｂ）前記ソフトウェアを使用するべくクライアントが認可されるためのライセンスを要求するステップと、
（ｃ）前記ライセンスを発行し、且つ、クライアントに提供するステップであって、前記ライセンスは、サーバーにより、プライベートキーによって保護されており、且つ、前記プライベートキーは、前記クライアントにおいて保存されてはいない、ステップと、
（ｄ）前記ライセンスを前記クライアントにおいて検証するステップと、
（ｅ）前記ライセンスを前記クライアントにおいて保存するステップと、
（ｆ）定期的に、前記ライセンスの起動状態を追跡するステップと、
（ｇ）前記ライセンスの前記起動状態に基づいて、前記クライアントにおいて前記ライセンスに対して動作を実行するステップであって、前記ライセンスを前記クライアントにおいて検証する前記ステップは、アプリケーションと関連する前記クライアントにおいて、なんらの変更をも伴うことなしに、前記サーバーから受け取られた前記ライセンスを検証し、且つ、前記ライセンスを前記クライアントに保存するステップを有する、ステップと、
を有する、一時的ではないコンピュータ可読媒体。
【請求項１３】
前記取得確認は、
前記取得確認を取得するべくウェブページアクセスをユーザーに提供するステップと、
前記ユーザーと関連する必要とされる情報を受け取るステップと、
前記アプリケーションの購入に成功した場合に、前記ユーザーの前記必要とされる情報を前記サーバーに提供するステップであって、前記アプリケーションの注文情報は、前記サーバーにおいて保存され、且つ、前記取得確認は、サーバーによって生成され、且つ、取得情報を前記ユーザーに提供するステップと、
前記アプリケーションの購入に成功しなかった場合に、前記アプリケーションの前記購入に成功しなかったという通知を前記ユーザーに提供するステップと、
により、ＵＲＬによって生成される請求項１２に記載の方法。
【請求項１４】
前記取得確認は、暗号化を伴うことなしに、ユーザーに提供される請求項１２に記載の一時的ではないコンピュータ可読媒体。
【請求項１５】
ログイン及びパスワード情報の一意のペアの提供、セキュリティキーによって保護された前記サーバーとの間の安全な接続の確立、並びに、前記サーバーとの間の接続の確立及びユーザーを識別するパラメータの送信のうちの１つ又は複数により、前記取得確認の生成と関連する前記サーバー内のレコードを生成するステップと、前記ユーザーが識別情報を提供した後に、前記アプリケーションの前記取得に関する情報を前記サーバー内において保存するステップと、を更に有する請求項１２に記載の一時的ではないコンピュータ可読媒体。
【請求項１６】
前記（ｃ）ステップ及び前記（ｄ）ステップは、
ユーザーから前記取得確認を受け取るステップと、
前記クライアントが、前記ライセンスの要求を生成し、且つ、前記サーバーに提供するステップと、
前記サーバーが、起動が前記取得確認について許容されているかどうかを判定するステップと、
前記起動が許容されている場合に、前記サーバーが、前記ユーザーの識別情報に基づいてライセンスを発行し、且つ、前記ライセンスのファイルを前記ユーザーに提供するステップであって、前記取得確認は、前記アプリケーションのインストールによって認識される規定された添え字を有するパターンを使用して生成された１つ又は複数の起動キーを有し、且つ、前記ユーザーが情報を前記サーバーに提供するためのフォームの表示を起動することになり、前記アプリケーションのベンダは、その独自のパターンに基づいて前記パターンを判定することができる、ステップと、
を有する請求項１２に記載の一時的ではないコンピュータ可読媒体。
【請求項１７】
前記検証するステップは、前記サーバーに基づいて生成された前記ライセンスの検証を実行するステップを更に有し、前記ライセンスは、デジタル署名を生成するべく、一意である、且つ、安全である、前記プライベートキーによって署名され、且つ、前記デジタル署名は、前記クライアントにおいて、前記ソフトウェアのパブリックキーによって更に検証され、前記ソフトウェアは、ベンダアプリケーションを有する請求項１２に記載の一時的ではないコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野は、ソフトウェア起動用のシステム及び方法に関する。
【背景技術】
【０００２】
現時点において、ソフトウェア起動の様々な関連技術の方法が存在している。ソフトウェア起動の関連技術の方法の大部分は、インターネット接続を必要としている。但し、ソフトウェア起動におけるインターネット接続の使用は、様々な問題及び欠点をもたらす可能性がある。例えば、限定を伴うことなしに、認可されていない（例えば、違法な）ソフトウェア使用の問題が存在している。ソフトウェア起動の方法が、関連技術のものよりも洗練されたものにならない限り、違法なソフトウェア使用のセキュリティ及び防止の関連技術の問題は、ソフトウェア起動の分野において残されたままとなる。
【０００３】
いくつかの関連技術の方式は、ライセンスの検証を実行し、且つ、ライセンスの検証が完了したら、誤ったパラメータ情報を正しいパラメータ情報によって置換する、誤ったパラメータ情報を含むフェイクライセンスファイルを生成するアプリケーションと関連するクライアントを含む、ラインセンス用の検証技法を使用しうる。但し、この方式は、様々な問題及び欠点を有しうる。例えば、限定を伴うことなしに、フェイクライセンス方式は、ライセンスファイルのコンテンツが、（サーバーサイドではなく）クライアントの機械上において生成されるものと仮定している。従って、ｋｅｙｇｅｎアプリケーションが、ベンダアプリケーションを破るなんらの必要性を伴うことなしに、ベンダアプリケーションが生成するのと同様の方式により、このようなファイルを生成しうる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、エンドユーザー用の起動プロセスの単純化、認可されていない（例えば、違法な）ソフトウェア使用を防止するための起動プロセスのそれぞれのステップにおける起動の方法の保護、並びに、新しいコンピュータや偶発的に失われた起動番号などの際のソフトウェアの再起動などのいくつかの予想されていない課題に関係する顧客サポート問合せの数を減少させるための将来における起動状態の追跡、という態様を対象としている。
【課題を解決するための手段】
【０００５】
起動プロセスにおける第１ステップは、アプリケーションを取得するステップである。アプリケーションの取得ステップは、購入、無償譲渡、又はベンダによって定義された任意のその他の方法を通じて発生しうる。ユーザーは、アプリケーションの取得の確認を受け取らなければならない。このアプリケーションの取得の確認は、（限定を伴うことなしに）（ａ）ソフトウェア開発者によって提供される起動キー―例えば、シンボルの一意の組合せ、或いは、（ｂ）特定のユーザーに接続された起動システムのデータベース内のレコード、の形態において存在することができる。
【０００６】
このアプリケーションの取得ステップは、様々な方法によって実行することができる。例えば、限定を伴うことなしに、ソフトウェアは、オンラインストアにおける購入されたソフトウェアであってもよく、供給は、限定を伴うことなしに、ＯＥＭ供給セットと関連するソフトウェアを含む、ＣＤ、ＤＶＤ、又はＵＳＢドライブを含む、物理的な媒体上において発生しうる。これらのアプリケーションの取得のモードのそれぞれは、取得確認の準拠性の設定と関連する別個のメカニズムを有し、且つ、ラインセンスの発行が基づくべき規則の組をも有する。
【０００７】
取得確認は、起動番号を含むことができる。一方において、取得確認は、人間が解読可能なものであってもよく、これにより、発生可能な誤りの数が低減されうる。他方において、取得確認は、力任せ検索を防止するべく、十分に長い。これに加えて、（限定を伴うことなしに）ウェブページ上の又は電子メール内のボタンに対する選択又はクリック動作を含む、ユーザー動作によってソフトウェアを起動する選択肢を開発者がユーザーに提供することを許容する「ＵＲＬによる起動」方式も開発されている。
【０００８】
特定のユーザーと関連する起動システムのデータベース内のレコードを１つ又は複数の方式によって開始することができる。例えば、限定を伴うことなしに、起動システムのデータベース内のレコードは、（ａ）オンライン又はオフラインストア内におけるソフトウェアの購入の後に、或いは、（ｂ）起動システムの管理者によって手動により、開始することができる。ユーザーは、ソフトウェアライセンスを取得するために、識別情報を提供しなければならない。識別情報は、限定を伴うことなしに、（ａ）ログイン識別子とパスワードの一意のペア、（ｂ）起動サーバーによって提供されるセキュリティキーによって保護された起動サーバーに対する安全な接続の確立、或いは、（ｃ）ユーザーの確実な識別を許容する、起動システムの管理者によって定義された方法を含むことができる。
【０００９】
起動システムのデータベース内のレコードの開始の後の、次のステップは、ラインセンスに対する要求を生成する、というものである。このステップは、インターネット接続を必要としている。この例示用の実装形態によれば、所定のプロトコルが提供されている。更には、データが起動サーバー上において処理される方式の構造も提供されている。ユーザーのコンピュータからの要求は、限定を伴うことなしに、（ａ）アプリケーションバンドルＩＤ（例えば、特定のフォーマットにおける製品名）、（ｂ）バンドルバージョン（例えば、製品バージョン）、（ｃ）現時点の起動のために維持されているデータの更なる組、（ｄ）ユーザーのアカウント識別子（例えば、電子メールアドレス）、（ｅ）一意のコンピュータ識別子用の２つの値、（ｆ）取得確認、（ｇ）ユーザーの氏名、（ｈ）セキュリティを向上させるためのランダムデータのブロック、（ｉ）サーバーサイドにおいてデータをオープンするためのパスワード、並びに、（ｊ）エラーメッセージ用の言語、のうちの１つ又は複数を含むデータを含みうる。
【００１０】
ライセンスに対する要求が生成されたら、第３のステップは、ライセンスを発行し、且つ、ユーザーに供給するステップであり、ライセンスは、サーバーにより、プライベートキーによって保護されており、且つ、プライベートキーは、クライアントにおいて保存されてはいない。ライセンス要求が受け取られた後に、サーバーは、起動要求が正しい場合には、ライセンスを発行し、且つ、そうでない場合には、エラーメッセージを送信する。サーバーの応答は、（ａ）エラーコード（例えば、成功の場合の０）、（ｂ）エラーメッセージ又は暗号化されたライセンス、（ｃ）ソフトウェアのプライベートキーを使用して生成される、ラインセンスファイルの署名又はエラーメッセージ、という情報を含む。
【００１１】
ソフトウェアライセンスがエンドユーザーのコンピュータに供給された後に、ソフトウェアライセンスは、アプリケーションと関連するクライアントにおいて、なんらの変更をも伴うことなしに、サーバーから受け取られたラインセンスを検証し、且つ、ライセンスをクライアントに保存することによる検証に合格することを要する。ライセンスファイルは、ユーザーのコンピュータファイルシステム上の特定の場所に書き込まれる。ライセンスの有効性は、アプリケーションの最初の起動の後に、アプリケーションのインストールの最中に、アプリケーションの試用期間が終了した後の最初の起動の最中に、或いは、当業者には理解されうるその他の適切な状況において、チェックされる。ライセンスの出元の検証（例えば、パブリックキーによる検証）及び完全性の確認が完了した後に、ユーザーは、ソフトウェアによる作業を開始することができる。
【００１２】
起動の状態は、定期的に起動サーバーに送信される。報告の規則は、開発者が定義することができる。起動状態は、例えば、再起動が許容されている場合のソフトウェアの再起動などの、開発者によって定義された様々な状態に応じて、トリガすることができる。
【００１３】
又、例示用の実装形態は、（例えば、起動サーバーサイドからの）リモートにおける方式及び（例えば、ユーザーによって開始される）直接的な方式の両方における、ライセンスの無効化の可能性をも対象としている。
【図面の簡単な説明】
【００１４】
【図１】例示用の一実装形態によるクライアント及びサーバーを含むプロトコルの例示用のプロセスを示す。
【図２】例示用の実装形態による第１プロトコルの一例を示す。
【図３】例示用の実装形態による第２プロトコルの一例を示す。
【図４】例示用の一実装形態によるサーバーを含むプロトコルの例示用のプロセスを示す。
【図５】例示用の一実装形態によるクライアントを含むプロトコルの例示用のプロセスを示す。
【図６】いくつかの例示用の実施形態に適した例示用の環境を示す。
【図７】いくつかの例示用の実装形態において使用される外部ホストと関連する例示用の演算装置を有する例示用の演算環境を示す。
【発明を実施するための形態】
【００１５】
本明細書において記述されている主題は、例示用の実装形態によって教示されている。わかりやすさを目的として、且つ、主題の曖昧化を回避するべく、様々な詳細事項が省略されている。以下に示されている例は、ソフトウェア起動及びライセンス追跡用の構造及び機能を対象としている。
【００１６】
本明細書において使用されている用語は、当業者にとってのその平易な且つ通常の意味を有するものと理解されたい。用語は、例として定義されている場合があるが、提供されている定義に限定されるものではない。例えば、限定を伴うことなしに、「ユーザー」又は「エンドユーザー」は、認可された方式によって（例えば、適法に）ソフトウェアの複写を取得した、且つ、演算装置上において適切に動作するようにソフトウェアを構成した、人物などの、エンティティを含みうる。更には、「開発者」又は「ベンダ」は、論理的に完成されたコンピュータプログラムなどの、ソフトウェアの１つ又は複数の複写を流通させる、人物又は法人などの、エンティティであってよい。これに加えて、「ソフトウェアインストール」は、コンピュータプログラムが、開発者によって意図された方式によって動作するようにする方式により、ユーザーと関連するユーザー演算装置上において配置されたコンピュータプログラムの複写である。
【００１７】
これに加えて、「起動」は、ソフトウェアインストールの適法性（ソフトウェアインストールが認可されているかどうか）を確認する、且つ、（存在する場合には）開発者によって定義された任意の機能的制限を除去する、手順又は手順の組を含みうる。「試用」は、ユーザーがソフトウェアに習熟した状態となるために実行される制限された機能を伴う、ソフトウェアインストールの使用のタイプを含みうる。又、「取得確認」は、ソフトウェアを適法に使用するためのユーザーの権限を確認するデジタルエンティティ（例えば、認可）であり、且つ、取得プロセス（例えば、購入、無償譲渡、又はこれらに類似したもの）が完了した後に、ユーザーに提供されなければならない。
【００１８】
これに加えて、「起動番号」又は「起動キー」は、取得確認のタイプとして使用される、人間が解読可能な組合せ（例えば、英数シンボル）であってよい。更には、「ライセンス」は、ソフトウェアインストールが特定のコンピュータ装置上において使用されうるかどうかを識別するべく使用されるデータを含むコンピュータファイルを含みうる。「ライセンスタイプ」は、ソフトウェア使用の異なる条件を生成するべく開発者によってセットアップされる、ライセンス生成用の規則の組を含みうる。これらの規則は、限定を伴うことなしに、ソフトウェア使用の期間（例えば、１年、６か月、終生）、可能な再起動の回数、提供対象の特定の機能、などを含みうる。
【００１９】
更には、「起動サーバー」又は「サーバー」は、ユーザーの演算装置との関係における、且つ、ソフトウェアインストールの起動のための必要な動作を実行する、リモート演算装置である。例示用の実装形態によれば、サーバーは、当業者には既知のハードウェアを含みうる。又、「バンドルＩＤ」は、エンドユーザーのコンピュータのオペレーティングシステムによって判読可能である、特別なフォーマットにおけるアプリケーション識別子である。
【００２０】
例示用の実装形態の態様は、エンドユーザー用の起動プロセスの単純化、認可されていない（例えば、違法な）ソフトウェアの使用を防止するための起動プロセスのそれぞれのステップにおける起動の方法の保護、新しいコンピュータや偶発的に失われた起動番号などの際のソフトウェアの再起動などのいくつかの予想されていない課題に関係する顧客サポート問合せの数を減少させるための将来における起動状態の追跡、を対象としている。
【００２１】
上述の関連技術のセキュリティギャップを克服するべく、例示用の実装形態は、非対称なデジタル署名の方式を対象としている。更に詳しくは、例示用の実装形態は、それぞれのベンダアプリケーション用のキーの一意のペア、すべてのベンダアプリケーションにおいて統合されたパブリックキー、並びに、サーバーサイドにおいて安全に保存されたプライベートキーを使用している。サーバーにおいて配置されたプライベートキーを保護するべく、例示用の実装形態は、（限定を伴うことなしに）、サーバーがインターネットに接続されていない場合の、内部サーバーのみが利用可能である隔離されたストレージシステム、暗号化された接続を確立するためのＳＳＬの使用、並びに、クラウドの実質的に隔離されたセクションを提供するためのＡＷＳ仮想プライベートクラウドサービスの使用、を含む、様々な技法及び方法を使用することができる。
【００２２】
違法なアクセスから保護するためのネットワークファイアウォールの使用
サーバーが、対応する要求を受け取った際に、サーバーは、ライセンスファイルのコンテンツを生成し、且つ、一意の保護されたプライベートキーにより、ライセンスファイルに署名する。従って、サーバーは、デジタル署名を生成している。一意の保護されたプライベートキーを有する署名済みのライセンスファイルは、すべてのベンダアプリケーションにおいて固有のものである。
【００２３】
ベンダアプリケーションは、デジタル署名を有するライセンスファイルを受け取り、且つ、ユーザーの機械（例えば、クライアント）上において保存している。不良な行為者（例えば、ハッカー）が、悪意を有する行為を試みた（例えば、ラインセンスファイルを変更するための試みを決定した、或いは、フェイクライセンスを生成するべく試みた）場合には、このラインセンスファイルの署名検証が、ベンダアプリケーションサイドにおいて、失敗する。従って、ライセンスファイルのコンテンツが無効となり、且つ、ベンダアプリケーションは、（例えば、ベンダアプリケーションをクラッキングするための）悪意を有する試みに対する耐性を有する。
【００２４】
これらの及びその他の態様を実現するべく、限定を伴うことなしに、図１において示されているように、起動プロセスを含む、プロセス１００において、様々なステップを実行することができる。１０１において、ユーザーは、アプリケーションを取得している。更には、１０３において、ユーザーは、様々なモードのうちの１つにより、アプリケーションの取得の確認を受け取っている。アプリケーションの取得のモードのそれぞれは、取得確認の準拠性の設定と関連する別個のメカニズムと、ライセンスの発行が基づくべき規則の組と、を有する。取得確認は、起動番号を含みうると共に、人間が解読可能なものであってよいが、起動確認を判定するための認可されていない人物による力任せ検索を防止するべく、十分に長い。更には、例示用の実装形態による「ＵＲＬによる起動」方式は、ユーザー動作によってソフトウェアを起動するための選択肢を開発者がユーザーに提供することを許容することができる。
【００２５】
１０５において、特定のユーザーと関連する起動システムのデータベース内のレコードを開始することができる。ユーザーは、１０７において、ソフトウェアライセンスを取得するための識別情報を提供しなければならない。起動システムのデータベース内のレコードの開始の後に、１０９において、ラインセンスに対する要求が、所定のプロトコルによって生成されている。このプロトコルによれば、ライセンスは、サーバーにおいて生成され、且つ、安全なプライベートキーによって署名されている。１０９において、ラインセンスに対する要求が生成されたら、１１１において、ライセンスがユーザーに提供され、且つ、１１３において、ユーザーが、デジタル署名と共に、ライセンスを受け取り、且つ、ライセンスファイルをユーザー装置において保存している。
【００２６】
ライセンス要求が上述のように受け取られた後に、サーバーは、１１５において、起動が正しいかどうかを判定し、且つ、起動要求が正しい場合には、１１９において、ライセンスを発行し、且つ、そうではない場合には、１１７において、エラーメッセージを送信している。１１９において、ソフトウェアライセンスがエンドユーザーのコンピュータに供給された後に、ソフトウェアライセンスは、検証に合格することを要する。ライセンスファイルは、ユーザーのコンピュータファイルシステム上の特定の場所に書き込まれる。アプリケーションが稼働するのに伴って、１２１において、サーバーから受け取られたライセンスを変更することなしに、ライセンスの有効性がチェックされるが、署名されたライセンスファイルを変更する、或いは、フェイクライセンスを生成する、試みが実施された場合には、この試みは、ベンダサイドにおいて失敗することになり、ラインセンスファイルのコンテンツは、ベンダアプリケーションがクラッキングされないように、無効になる、ことに留意されたい。ライセンスの出元の検証及び完全性の確認の後に、ソフトウェアインストールは完了しており、且つ、１２３において、ソフトウェアは、使用の準備が完了している。起動の状態は、起動サーバーに定期的に送信される。更には、ライセンスは、リモートにおいて、或いは、直接的に、無効化することもできる。
【００２７】
以下、様々な動作の更なる詳細について更に詳細に説明する。
【００２８】
取得確認の入手
認可された方式によって（例えば、適法に）ソフトウェアを使用するべく、ユーザーは、取得確認を受け取らなければならない。このような取得確認は、限定を伴うことなしに、（ａ）起動キー（例として、例えば、ソフトウェア開発者によって提供されるシンボルの一意の組合せ）、或いは、（ｂ）特定のユーザーと接続された起動システムのデータベース内のレコード、を含む、様々な形態において存在しうる。取得を完了した後に、ソフトウェアライセンス用の取得確認を交換する方法についての命令をユーザーに提供しなければならない。
【００２９】
上述のように、ユーザーは、取得確認（例えば、起動番号）を入手しなければならない。ソフトウェアベンダは、
直接的販売（例えば、ベンダのウェブサイト上のオンライン販売を介した、或いは、直接的なベンダの小売りアウトレットを通じた、直接的なもの）、
第三者のリセラー及びパートナーを介した販売、
オンライン又は物理的媒体（例えば、ＣＤ、ＵＳＢスティック、又はＳＤカード）上のボックスバージョンを介した流通など、
という起動番号の流通の１つ又は複数の異なる選択肢を有しうる。
【００３０】
上述の流通方法は、取得確認の入手の異なる方法及びシーケンスを必要としうる。いくつかのケースにおいては、取得確認は、支払が受け取られたら即座にオンデマンドで提供することが可能であり、その他のケースにおいては、いくつかの物理的媒体上において提供されるべく、多数の事前生成された起動番号の提供が必要となりうる。それぞれのケースにおいて、ベンダは、（例えば、マーケティング及び分析を目的として）起動番号が生成された状態と関連する、より多くの情報（例えば、パートナー、マーケティングキャンペーン、データ、カウント、及びその他の状態）について知っていなければならない。
【００３１】
例示用の実装形態は、
ＵＲＬによる生成―取得確認に対するそれぞれの要求は、起動サーバーと関連する特定のＵＲＬ上にリダイレクトされることになる。完全且つ正しく構築された要求のケースにおいては、サーバーは、取得確認によって応答することになる。
「バルク」生成―サーバーは、有限量の起動番号を生成し、これらの起動番号は、「そのままの状態」で、ソフトウェアディストリビュータに提供されるか、或いは、ユーザーの全体を通じて拡散される。
単一生成―この取得確認を生成する方法は、そのほとんどが、１つの取得確認の生成が必要とされている際などの、試験及びサポートを目的として使用される。
という取得確認生成の少なくとも３つの基本的メカニズムを含む。
【００３２】
取得確認は、暗号化を伴うことなしに、「そのままの状態」で、サーバーによって送信することができる。
【００３３】
ＵＲＬによる生成
この方法は、１つ又は複数の取得確認に対する要求を含む。この方法は、直接的なオンライン購入の際に使用される可能性が最も高いが、アプリケーションを取得するその他のモードにおいて使用することもできる。図２は、ＵＲＬによる生成に基づいて起動コードを要求するプロセスの例示用の実装形態２００を示している。図２には、ユーザーワークステーション２０１、支払システム２０３、及び起動サーバー２０５が開示されている。但し、これは、当業者には理解されるように、本発明の範囲を逸脱することなしに、その他の実装形態によって置換することができる。
【００３４】
１．ユーザーが、購入ページ（例えば、開発者のウェブサイト、或いは、第三者のウェブリソース、或いは、製品を購入するなんらかの方法）を訪問している（２０７）。
【００３５】
２．ユーザーが、自身の氏名、電子メールアドレス、電話番号、製品の量、ソフトウェア使用の持続時間などのような、必要とされる情報を提供している（２０７）。
【００３６】
３．購入に成功した場合には、ビリングシステムが、特定のＡＰＩにより、収集された情報をソフトウェアベンダのサーバーに送信し、注文情報が、起動サーバーにおいて保存され、且つ、起動キーが生成される（２０９、２１１ａ、２１１ｂ）。
【００３７】
４．ユーザーが、起動サーバーから起動キーを取得しており、この起動キーは、記述されている電子メールに送信されると共に／又は、購入ページ上において表示される（２１３、２１５）。
【００３８】
５．なんらかの理由から、支払を完了させることができない場合には、ユーザーは、更なる動作（ビリング情報の再入力、銀行口座のチェック、後での試みなど）のための命令と共に、トランザクションを完了させることができないことについて通知される（２１７）。
【００３９】
バルク生成
別の例示用の実装形態においては、物理的媒体（ＣＤ、ＵＳＢ）の、会員、リセラー、又は製作者、という関係者のために多数のコードを提供するべく、「バルク」起動を利用することができる。
【００４０】
この例示用の実装形態においては、ソフトウェアベンダは、（例えば、事前に）、必要とされるマーケティングパラメータ又は契約の条件（例えば、２０１７年１２月２５日まで使用されるべく、５００個のライセンスがＲｅｓｅｌｌ  ＬＬＣに提供される）により、特定量の起動番号を生成することができる。
【００４１】
この例示用の実装形態においては、注文のブランクレコードを有するデータベースが生成され、且つ、開発者は、起動番号の特定のパターンを記述することができる。アプリケーションは、自身の個人的なデータ（名前及び電子メールアドレス）についてエンドユーザーに問い合わせることになる。従って、注文レコードは、ソフトウェアが起動された後に、入力されることになる。
【００４２】
単一生成
この選択肢は、顧客サポートのみならず、販促又は試験を目的として、実装することができる。
【００４３】
この例示用の実装形態によれば、ソフトウェアベンダは、サーバー上の特別な管理者パネルを介して起動コードを生成し、且つ、次いで、このコードを顧客又は必要とされる関係者に送信している。次いで、注文レコードは、管理者によって入力される。
【００４４】
起動システムのデータベース内におけるレコードの生成
以下、ソフトウェア取得の後の起動システムのデータベース内におけるレコードの生成の動作について説明する。ユーザーは、起動システム上における自分自身の識別を要することに留意されたい。これは、（限定を伴うことなしに）、
ログインとパスワード情報の固有のペアを提供することによる、
起動サーバーによって提供される、（例えば、暗号化された）セキュリティキーによって保護された、起動サーバーとの間の安全な接続を確立することによる、
起動サーバーとの間の接続を確立し、且つ、（例えば、第三者サービスからのセッション識別子、或いは、起動システム管理者によって定義された任意のその他のパラメータ、を提供することにより）ユーザーの確実な識別を許容するパラメータを送信することによる、
方法のうちの１つ又は複数により、実行することができる。
【００４５】
ユーザーが起動システム上において自分自身を識別した後に、ソフトウェア取得に関する情報は、起動システムデータベース内においてレコードとして保存されることになる。
【００４６】
ライセンスの発行
ユーザーが取得確認を受け取った後に、ユーザーは、制限を伴うことなしにソフトウェアを使用するべく、ライセンスを要求しなければならない。
【００４７】
ライセンスの発行のプロセスは、取得確認のそれぞれのタイプについて類似している。相違点は、
アプリケーションの内部において起動番号を入力することによる、
ＵＲＬ方式によってアプリケーションを起動することによる、
起動システム上において認証することによる、
ログイン及びパスワードの固有のペアを提供することによる、
予め提供されたセキュリティキーによって保護された起動サーバーとの間の安全な接続を確立することによる、
起動サーバーとの間の接続を確立し、且つ、（例えば、第三者サービスからのセッション識別子、或いは、起動システム管理者によって定義された任意のその他のパラメータ、を提供することによる）ユーザーの確実な識別を許容するパラメータを送信することによる、
というユーザーがライセンスを受け取るための取得確認を提供する方法にある。
【００４８】
以下、ライセンス要求のプロセス３００が、開示され、且つ、図３において示されている。図３に示されているように、ユーザー演算装置（例えば、ワークステーション）３０１、アプリケーションサイドの動作空間３０３（例えば、ユーザーによって制御された装置）、及びサーバーサイドの空間（例えば、データベースを有するサーバー）３０５が提供されている。動作は、限定を伴うことなしに、以下を含む。
【００４９】
１．ユーザーが、上述の方法の１つにより、取得確認を提供している（３０７）。
【００５０】
２．ソフトウェアが、ライセンス要求を生成し、且つ、ライセンス要求を起動サーバーに送信している（３０８）。
【００５１】
３．起動が、この取得確認について許容されているかどうかを起動サーバーがチェックしている（例えば、起動サーバーが、データベース内の起動番号レコード内において「アクティブ」なパラメータについてサーチすることができる）（３０９）。
【００５２】
４．ｙｅｓである（即ち、起動が許容されている）場合に、起動サーバーは、識別情報に基づいてライセンスを発行し（３１１）、且つ、応答をライセンスファイルを収容するアプリケーションに送信する（３１７）。
【００５３】
５．ライセンスファイルが、起動システムのアプリケーションサイド部分による検証において合格する（３１９）。
【００５４】
６．ユーザーが、起動に成功したと通知されている（３２１）。
【００５５】
７．起動サーバーが、エラーが起動プロセスにおいて発生した（例えば、３０９においてライセンスの発行が許容されておらず、且つ、ライセンスが３１３の前に発行されていない）と判定した場合に、起動サーバーは、エラーコード及びメッセージをアプリケーションに、且つ、従って、ユーザーに、返送する（３１５）。その一方で、３０９においてライセンスの発行が許容されてはいないが、ライセンスが３１３の前に発行されていると起動サーバーが判定した場合には、プロセスは、上述のように、３１７において予め発行されたライセンスを送信するべく継続する。
【００５６】
８．ソフトウェアが、エラーに対処するための更なる動作（例えば、起動コードの有効性のチェックや顧客サポートへのコンタクトなど）に関する命令により、エラータイプについてユーザーに通知している（３２３）。
【００５７】
サーバーに対する要求の数を減少させるべく、且つ、ユーザーの入力要件を単純化するべく、起動キー用のパターン認識システムを本例示用の実装形態に従って実装した。更に詳しくは、起動キーが、特定のパターンを使用することによって生成され、これが、ソフトウェアインストールによって認識され、且つ、特定の動作についてソフトウェアインストールをトリガすることになる。例えば、限定を伴うことなしに、特定の添え字を有する起動キーが、ユーザーに対して個人的なデータを要求するためのフォームの表示を開始することができる。ベンダは、その独自のパターン及び振る舞いにマッチングするように、特定のパターン及びソフトウェアインストールの振る舞いをセットアップすることができる。
【００５８】
ソフトウェアが起動サーバー上において登録された後に、起動サーバーは、ライセンスの署名のために、プライベート及びパブリックキーのペアを発行する。プライベートキーは、サーバー上において保存され、且つ、ライセンスがアプリケーションに送信される前に、それぞれのライセンスに署名するべく、使用される。パブリックキーは、起動システムのアプリケーションサイド部分に統合されており、且つ、更に後述するように、ライセンス署名を検証するべく、後から使用される。
【００５９】
起動要求に成功した後に、ライセンスが、起動サーバー上において生成される。そのパラメータの１つとして、ライセンスは、以下のアプリケーション識別子に基づいて生成されたハッシュを含む。
【００６０】
アプリケーションのバンドルＩＤ
オペレーティングシステム上においてユーザーを認証するべく使用される（限定を伴うことなしに）ユーザー名でありうるユーザーの演算装置（例えば、ハードウェア）の１つ又は複数の識別子、ネットワークインターフェイスカードのＭＡＣアドレス、ハードディスクドライブ又は半導体ドライブ、マザーボード識別子、或いは、当業者には既知でありうるその他の識別子、及び、
ラインセンスに含まれることになる、ランダムに生成されたストリング（例えば、「ｓａｌｔ」）
【００６１】
ライセンスファイルをエンドユーザーに送信する前に、ライセンスファイルは、対称暗号化アルゴリズムにより、暗号化され、且つ、起動サーバー上におけるソフトウェア登録の際に発行されるプライベートキーに基づいて、サーバー署名によって署名される。
【００６２】
再起動
ハードウェアの変更（例えば、新しいコンピュータへの変更）の後にソフトウェア使用を継続するための必要性によって生成されるサポート問合せの数を減少させるべく、例示用の実装形態による再起動システムを実装した。
【００６３】
起動番号が発行された際に、起動番号は、有限数の可能な起動を有する。例えば、ユーザーが、なんらかの理由から、自身のコンピュータ装置上においてソフトウェアインストールを無効化し、且つ、その同一のコンピュータ装置上において、ソフトウェアを起動するべく、同一の起動番号を再度使用した場合には、古いライセンスが発行されることになる。
【００６４】
その一方で、ユーザーが演算装置を変更した場合には、ユーザーは、同一の起動番号を使用してソフトウェアを起動する能力を依然として有する。可能な再起動の数に関する情報は、起動サーバー上において保存されている。起動サーバーは、規定された期間（例えば、限定を伴うことなしに、既定で６か月）が経過したら、１つの更なる再起動を自動的に追加する。その結果、ユーザーは、演算装置又はオペレーティングシステムを変更した場合に、ソフトウェアを再起動することができることになる。
【００６５】
ライセンスの検証
ソフトウェアインストールを完全な機能状態にするには、ライセンスがユーザーコンピュータ上において利用可能であることをチェックし、且つ、その有効性を検証する必要がある。検証は、（ａ）ライセンスの出元（例えば、ライセンスが正しいサーバーによって発行されたかどうか）、（ｂ）ライセンスがこのコンピュータに対して発行されたかどうか（例えば、ライセンスが正しいコンピュータに対して発行されたかどうか）、並びに、（ｃ）ラインセスが失効していないかどうか、というパラメータのチェックから構成されている。
【００６６】
関連技術においては、検証プロセスは、ハッカーが、コードに進入可能でありうる、且つ、アプリケーションをクラッキングするべく必要な情報を受け取ることが可能でありうる、期間である。このリスクに対処するべく、例示用の実装形態は、いくつかのメカニズムを含む。
【００６７】
ライセンスチェックが必要であるが、ライセンスチェックがまだ実行されていない、時点において（これらの時点は、例えば、アプリケーションの起動として、アップグレードとして、或いは、なんらかの特定の動作を実行するために、開発者によって定義されうる）、起動システムのアプリケーションサイドは、サーバーから受け取られるのに伴って、ライセンスを変更することなしに、ライセンスを検証し、且つ、検証済みのライセンスをクライアントサイド又はユーザー機械において保存する。内部進入の場合に、認可されていない人物（例えば、ハッカー）によるデータの取得が防止される。
【００６８】
更に詳しくは、且つ、上述のように、上述の関連技術セキュリティギャップを克服するべく、例示用の実装形態は、非対称方式のデジタル署名を対象としている。更に詳しくは、例示用の実装形態は、すべてのベンダアプリケーション内において統合されたパブリックキーと、サーバーサイドにおいて安全に保存されているプライベートキーと、というそれぞれのベンダアプリケーション用のキーの一意のペアを使用している。
【００６９】
サーバーが対応する要求を受け取った際に、サーバーは、ライセンスファイルのコンテンツを生成し、且つ、一意の保護されたプライベートキーにより、ライセンスファイルに署名している。従って、サーバーは、デジタル署名を生成している。一意の保護されたプライベートキーを有する署名済みのライセンスファイルは、すべてのベンダアプリケーションにおいて固有のものである。
【００７０】
ベンダアプリケーションは、デジタル署名を有するライセンスファイルを受け取り、且つ、ユーザーの機械（例えば、クライアント）上において保存している。不良な行為者（例えば、ハッカー）が、悪意を有する行為を試みた（例えば、ライセンスファイルを変更するための試みを決定した、或いは、フェイクラインセンスを生成するべく試みた）場合には、このラインセンスファイルの署名検証が、ベンダアプリケーションサイドにおいて、失敗する。従って、ライセンスファイルのコンテンツが無効となり、且つ、ベンダアプリケーションは、（例えば、ベンダアプリケーションをクラッキングするための）悪意を有する試みに対する耐性を有する。
【００７１】
従って、ハッカーによるライセンスデータの取得を防止するニーズが存在しておらず、その理由は、上述のように、この発生が不可能であるからである。ライセンスデータは、（ネットワークＭＡＣアドレス又は連番のような機械固有の識別情報を使用することにより）それぞれのマシンごとに一意に生成され、且つ、サーバー上において保存されたプライベートキーによって署名されている。従って、ライセンスデータは、別の機械においては、使用又はアクセスすることができない。
【００７２】
ライセンスチェックが必要とされるのに伴って、起動システムのアプリケーションサイド部分は、ライセンスが利用可能であるかどうかを判定するべく、予め定義されたストレージをチェックしている。
【００７３】
まず、起動システムのアプリケーションサイド部分は、上述のように、アプリケーションシステムのアプリケーションサイド部分に統合されたパブリックキーを使用することにより、サーバー署名をチェックしている。サーバー署名が、パブリックキーの使用に基づいて有効である場合には、起動システムは、対称暗号解読用のキーを受け取る。次いで、ライセンスの第２部分が、この暗号解読キーを使用することにより、暗号解読される。暗号解読に成功した結果として、ライセンス情報が受け取られる。
【００７４】
次のステージは、特定のコンピュータ用のライセンスの有効性をチェックするステップである。このチェックを実行するべく、起動システムのアプリケーションサイドは、
アプリケーションのバンドルＩＤ、
演算装置の１つ又は複数の識別子、
「ライセンス」内において保存されている「ｓａｌｔ」ストリング、
というパラメータを使用することにより、ハッシュストリングを生成する。
【００７５】
生成されたハッシュストリングは、ライセンス内において保存されているストリングをマッチングしていることを要する。マッチングが存在していない場合には、ライセンスがその特定のコンピュータ及び／又はその特定のアプリケーションについては有効ではないものと判定される。
【００７６】
次のステップとして、起動システムのアプリケーションサイド部分は、ライセンスパラメータを現時点のシステム及びアプリケーション状態と比較することにより、ライセンスが失効していないことを確認するべく、チェックする。ライセンスタイプに応じて、以下のパラメータを比較することができる。
ａ）現時点のシステム時間との間のライセンス失効時間、
ｂ）現時点のシステム時間との間のライセンス加入終了時間、
ｃ）現時点のアプリケーションバージョンとの間のライセンス失効バージョン、
ｄ）現時点のアプリケーションバージョンとの間のライセンスベータのみフラグ
【００７７】
これに加えて、起動システムのアプリケーションサイド部分は、ライセンスを検証するべく、要求を起動サーバーに定期的に送信することもできる。要求は、起動識別子及びユーザーのワークステーションを識別するべく必要とされる情報を含みうる。ライセンスが有効であると依然として判定される場合には、サーバーは、同一のライセンスによって応答する。但し、ライセンスがもはや有効ではないと判定された場合には、サーバーは、エラーメッセージによって応答する。この方法は、失効時間がサーバーシステム時間によって検証されていることから、ユーザーのワークステーションのシステム時間を使用してライセンス持続時間を延長することによる操作を防止している。
【００７８】
アプリケーションサイド部分のセキュリティ
起動システムのアプリケーションサイド部分は、起動サーバーにおいて登録されたそれぞれのアプリケーションごとに、一意に生成されている。セキュリティを目的として、起動システムのアプリケーションサイド部分のプログラミングコードの関数、メソッド、及び変数は、不明瞭化されている（例えば、人間が解読できないようになっている）。
【００７９】
不明瞭化される対象の関数は、特別なマーカーによってマーキングされ、且つ、コンパイルの際に、その名前が、予め定義されたアルファベットのランダムなもの（通常、これは、大文字及び小文字、並びに、数字という英数シンボルを含む）に置換されている。それぞれのアプリケーションごとに、不明瞭化された名前は一意である。
【００８０】
セキュリティを向上させるための別のメカニズムは、実行時にメモリ内の宛先アドレスを変更する関数を使用することによるものである。更に詳しくは、プログラムコードのコンパイルの際に、ラインセス検証に使用される関数は、意図的に誤ったパラメータを返すが、ソフトウェアがライブ動作中である際には、これらの関数は、正しいパラメータを返すことになる関数を収容したメモリ内のアドレスにリダイレクトされる。これらの関数は、リバースエンジニアリングのケースにおいて、ソフトウェアハッカーが、これらの関数が実際に実行する内容を判定することができなくなるように、コンパイルの際にランダムに命名されている。又、このメカニズムは、開発者によって定義される、ライセンスチェックが必要とされる時点において、実装することもできる。
【００８１】
例示用の実装形態によれば、開発者には、動作の際に、関数の名前が提供されてはおらず、且つ、開発者は、この情報を必要としてはいない。例えば、限定を伴うことなしに、開発者は、ソフトウェアプログラム（例えば、コード）を記述することができると共に、次いで、アプリケーションがコンパイルされる際に、関数は、セキュリティ対策として、関数の名前に基づいて関数を判定することが可能とならないように、疑似ランダムに命名されている（即ち、不明瞭化されている）。
【００８２】
ライセンスのリモート無効化
ユーザーが返金を要求し、且つ、返金が許可された場合には、ユーザーは、ソフトウェアを使用する権限を失う。従って、ライセンスをリモートで無効にするメカニズムを有する必要がある。又、このメカニズムは、ユーザーが、毎月又は毎年、ソフトウェアについて支払う必要がある際に、加入料金計画を処理するべく、使用される。例えば、ユーザーは、取消の肯定的な通知の提供を伴うことなしに、ソフトウェアを更新しないことを単純に選択することができる。
【００８３】
又、ライセンスが、加入料金の返金又は未払（例えば、更新）に起因して、サーバー上において有効ではないものとマーキングされている場合には、ライセンスは、起動システムのアプリケーションサイド部分上においてマーキングされることになり、且つ、ユーザーは、支払が確認される時点まで、アプリケーションを使用することができなくなる。
【００８４】
アプリケーションサイドにおけるライセンスの無効化
これに加えて、開発者は、アプリケーションの内部においてライセンスを無効化するための機能を追加することが可能でありうる。ユーザーがライセンスの無効化を開始した後に、起動システムのアプリケーションサイドは、要求をサーバーサイドに送信する。相応して、サーバーは、無効化されたものとしてマーキングされた、その特定のワークステーション用のライセンスによって応答する。この手順は、ユーザーが、別のワークステーション上におけるソフトウェアの使用を所望しているケースにおいて有用である。ユーザーは、第１ワークステーション上においてライセンスの無効化を開始することが可能であり、且つ、第２の（例えば、別の）ワークステーション上においてアプリケーションを起動するべく、必要とされるステップを反復することができる。
【００８５】
ライセンスとしてのアプリケーションストアのレシートの使用
ベンダがアプリケーションを販売した場合に（例えば、Ａｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅを介したもの及びその他の供給源を介したものの両方）、起動サーバーは、ライセンスとしてアプリケーションストアのレシートをマッチングさせる能力を有する。
【００８６】
例えば、限定を伴うことなしに、ユーザーがアプリケーションストア（例えば、Ａｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅ）を介してアプリケーションを購入した場合に、購入に関する情報が、パブリックＡＰＩを介して、起動サーバーに送信される。ユーザーが自身の演算装置上においてソフトウェアを再起動する必要がある場合には、ソフトウェアインストールが、起動されたものとして認識されることになり、且つ、ラインセスが自動的に発行されることになる。
【００８７】
例示用のプロセス
図４は、例示用の実装形態による、且つ、図１〜図３の上述の開示を含む、サーバー上において実行されるプロセス４００を示している。４０１において、ユーザーが、アプリケーションを取得し、且つ、様々なモードのうちの１つによってアプリケーションの取得の確認を受け取った後に、特定のユーザーと関連する起動システムのデータベース内のレコードが、サーバーサイドにおいて開始されている。更には、４０３において、サーバーは、ソフトウェアライセンスを取得するべく、識別情報及びライセンス要求をユーザーから受け取っている。起動システムのデータベース内におけるレコードの開始の後に、４０５において、ライセンスに対する要求が、所定のプロトコルにより、生成されている。このプロトコルに従って、ライセンスは、サーバーにおいて生成され、且つ、安全なプライベートキーによって署名される。１０９において、ライセンスに対する要求が生成されたら、４０７において、デジタル署名を有するライセンスがユーザーに提供され、且つ、ライセンスファイルがユーザー装置において保存される。
【００８８】
ライセンス要求が上述のように受け取られた後に、４０９において、サーバーは、起動が正しいかどうかを判定し、且つ、起動要求が正しい場合に、４１３において、ライセンスを発行し、且つ、そうでない場合には、４１１において、エラーメッセージを送信する。４１３において、ソフトウェアライセンスがエンドユーザーのコンピュータに供給された後に、ソフトウェアライセンスは、４１５において、サーバーから受け取られたライセンスを変更することなしに、検証に合格することを要するが、署名されたライセンスファイルを変更する、或いは、フェイクライセンスを生成する、試みが実施された場合には、この試みは、ベンダサイドにおいて失敗することになり、ラインセンスファイルのコンテンツは、ベンダアプリケーションがクラッキングされないように、無効になることに留意されたい。ライセンスファイルは、ユーザーのコンピュータファイルシステム上の特定の場所に書き込まれる。アプリケーションが稼働するのに伴って、４１５において、ライセンスの有効性がチェックされる。ライセンスの出元の検証及び完全性の確認の後に、ソフトウェアインストールは完了しており、且つ、ソフトウェアは、ユーザーによって使用されてもよい。起動の状態は、起動サーバーによって定期的に受け取られている。更には、ライセンスは、リモートにおいて、或いは、起動サーバーによって直接的に、無効化されてもよい。
【００８９】
図５は、例示用の実装形態による、且つ、図１〜図３の上述の開示を含む、サーバー上において実行されるプロセス５００を示している。５０１において、ユーザーが、アプリケーションを取得している。更には、５０３において、ユーザーは、様々なモードのうちの１つにより、アプリケーションの取得の確認を受け取っている。
【００９０】
上述のように、アプリケーションの取得のモードのそれぞれは、取得確認の準拠性の設定と関連する別個のメカニズム及びライセンスの発行が基づくべき規則の組を有する。取得確認は、起動番号を含むことができると共に、人間が判読可能なものであってよいが、力任せ検索を防止するべく、十分に長い。更には、例示用の実装形態による「ＵＲＬによる起動」方式により、ユーザー動作によってソフトウェアを起動する選択肢を開発者がユーザーに提供することを許容することもできる。
【００９１】
５０５において、ユーザーが、識別情報及びソフトウェアライセンスを取得するための要求を提供している。ライセンスに対する要求が、上述のように、デジタル署名により、サーバーによって生成されたら、５０７において、ユーザーは、ライセンスを受け取り、且つ、ライセンスファイルは、ユーザー装置において保存される。
【００９２】
５０７において、ライセンス要求が受け取られた後に、サーバーは、起動が正しいかどうかを判定し、且つ、ユーザーは、起動要求が正しい場合には、５１３において、ライセンスの発行を受け取り、或いは、そうでない場合には、５１１において、エラーメッセージを受け取る。５１３において、ソフトウェアライセンスがエンドユーザーのコンピュータによって受け取られた後に、ソフトウェアライセンスは、検証に合格することを要する。ライセンスは、サーバーから受け取られたライセンスを変更することなしに、ユーザーの装置上において書き込まれるが、署名済みのライセンスファイルを変更する、或いは、フェイクライセンスを生成する、試みが実施された場合には、この試みは、ベンダサイドにおいて失敗することになり、ライセンスファイルのコンテンツは、ベンダアプリケーションがクラッキングされないように、無効となることに留意されたい。ライセンスファイルは、ユーザーのコンピュータファイルシステム上の特定の場所に書き込まれる。アプリケーションが稼働するのに伴って、ライセンスの有効性がチェックされる。ライセンスの出元の検証及び完全性の確認の後に、ソフトウェアインストールが完了し、且つ、５１５において、ソフトウェアは、使用する準備が完了している。起動の状態は、起動サーバーに定期的に送信される。更には、ライセンスは、リモートにおいて、或いは、サーバーによって直接的に、無効化されてもよい。
【００９３】
いくつかの例においては、図１〜図５において示されている上述のプロセスは、異なる、更に少ない又は多い数の、ブロックによって実装することができる。プロセスは、媒体上において保存されることが可能であり、１つ又は複数の演算装置の１つ又は複数のプロセッサ上に読み込まれることが可能であり、且つ、コンピュータ実装された方法として実行されることが可能である、コンピュータ実行可能命令として実装することができる。
【００９４】
例示用の環境
図６は、いくつかの例示用の実装形態に適した例示用の環境を示している。環境６００は、装置６０５〜６４５を含み、且つ、これらのそれぞれは、例えば、（例えば、有線及び／又は無線接続による）ネットワーク６６０を介して、少なくとも１つの装置に通信自在に接続されている。いくつかの装置は、１つ又は複数のストレージ装置６３０及び６４５に通信自在に接続することができる。
【００９５】
１つ又は複数の装置６０５〜６４５の一例は、それぞれ、図７及び図８において以下において説明する演算装置７０５及び／又は８０５であってよい。装置６０５〜６４５は、限定を伴うことなしに、コンピュータ６０５（例えば、ラップトップ演算装置）、モバイル装置６１０（例えば、スマートフォン又はタブレット）、テレビ６１５、車両と関連する装置６２０、サーバーコンピュータ６２５、演算装置６３５〜６４０、ストレージ装置６３０及び６４５を含むことができる。
【００９６】
いくつかの実装形態においては、装置６０５〜６２０は、ユーザー装置６２５〜６４５と見なされてもよく、これらは、以上において、且つ、図３〜図５との関係において、説明したサーバーと関連する装置であってよい。
【００９７】
例えば、限定を伴うことなしに、１つ又は複数の装置６２５〜６４５によってサポートされたネットワーク上のユーザー装置６０５又は６１０を有するユーザーは、ユーザー装置６０５又は６１０を使用することにより、アプリケーションを取得してもよく、ライセンスを要求してもよく、ライセンスを受け取ってもよく、且つ、ソフトウェアを使用してもよい。サーバーは、図１〜図５との関係において上述したプロセスに従って、装置６２５〜６４５を使用することにより、上述の動作を実行することができる。
【００９８】
例示用の演算環境
図７は、いくつかの例示用の実装形態において使用されている外部ホストと関連する例示用の演算装置を有する例示用の演算環境を示している。演算環境７００内の演算装置７０５は、１つ又は複数の処理ユニット、コア、又はプロセッサ７１０、メモリ７１５（例えば、ＲＡＭ、ＲＯＭ、及び／又はこれらに類似したもの）、内部ストレージ７２０（磁気、光、半導体ストレージ、及び／又は有機的なもの）、並びに／或いは、Ｉ／Ｏインターフェイス７２５を含むことが可能であり、これらの任意のものは、情報を通信するべく、通信メカニズム又はバス７３０上において結合することが可能であり、或いは、演算装置７０５内において組み込むことができる。
【００９９】
演算装置７０５は、入力／ユーザーインターフェイス７３５及び出力装置／インターフェイス７４０に通信自在に結合することができる。入力／ユーザーインターフェイス７３５及び出力装置／インターフェイス７４０の１つ又は両方は、有線又は無線インターフェイスであってよく、且つ、着脱自在であってよい。入力／ユーザーインターフェイス７３５は、入力を提供するべく使用されうる、物理的な又は仮想的なものである、任意の装置、コンポーネント、センサ、又はインターフェイスであってよい（例えば、ボタン、タッチスクリーンインターフェイス、キーボード、ポインティング／カーソルコントロール、マイクロフォン、カメラ、ブライユ、モーションセンサ、光学読取機、及び／又はこれらに類似したもの）。出力装置／インターフェイス７４０は、ディスプレイ、テレビ、モニタ、プリンタ、スピーカ、ブライユ、又はこれらに類似したものを含むことができる。いくつかの例示用の実装形態においては、入力／ユーザーインターフェイス７３５及び出力装置／インターフェイス７４０は、演算装置７０５と共に組み込むことが可能であり、或いは、これに物理的に結合することができる。その他の例示用の実装形態においては、その他の演算装置が、演算装置７０５用の入力／ユーザーインターフェイス７３５及び出力装置／インターフェイス７４０として機能してもよく、或いは、これらの機能を提供してもよい。
【０１００】
演算装置７０５の例は、限定を伴うことなしに、高度な可動性を有する装置（例えば、スマートフォン、車両内の装置、及びその他の機械、人間及び動物によって携行される装置、並びに、これらに類似したもの）、モバイル装置（例えば、タブレット、ノートブック、ラップトップ、パーソナルコンピュータ、携帯型テレビ、ラジオ、及びこれらに類似したもの）、並びに、移動するように設計されてはいない装置（例えば、デスクトップコンピュータ、その他のコンピュータ、情報キオスク、その内部において埋め込まれた且つ／又はそれに結合された１つ又は複数のプロセッサを有するテレビ、ラジオ、並びに、これらに類似したもの）を含むことができる。
【０１０１】
演算装置７０５は、同一又は異なる構成の１つ又は複数の演算装置を含む、任意の数のネットワーク接続されたコンポーネント、装置、及びシステムとの通信のために、（例えば、Ｉ／Ｏインターフェイス７２５を介して）外部ストレージ７４５及びネットワーク７５０に通信自在に結合することができる。演算装置７０５又は任意の接続された演算装置は、サーバー、クライアント、シンサーバー、汎用機械、特殊目的機械、又は別のラベルとして機能していてもよく、サービスを提供していてもよく、或いは、このように呼称されてもよい。
【０１０２】
Ｉ／Ｏインターフェイス７２５は、音声において、且つ／又は、データネットワーク上において、無線通信を促進する無線通信コンポーネント（図示されてはいない）を含むことができる。無線通信コンポーネントは、１つ又は複数のアンテナを有するアンテナシステム、無線システム、ベースバンドシステム、又はこれらの任意の組合せを含むことができる。高周波（ＲＦ：Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）信号は、無線システムの管理下において、アンテナシステムにより、無線で送信及び受信されてもよい。
【０１０３】
Ｉ／Ｏインターフェイス７２５は、限定を伴うことなしに、接続されたコンポーネント、装置、及び演算環境７００内のネットワークの少なくともすべてとの間において情報を伝達するべく、任意の通信又はＩ／Ｏプロトコル又は規格（例えば、Ｅｔｈｅｒｎｅｔ、８０２．１１ｘ、ユニバーサルシステムバス、ＷｉＭａｘ、モデム、セルラーネットワークプロトコル、及びこれらに類似したもの）を使用する有線及び／又は無線インターフェイスを含むことができる。ネットワーク７５０は、任意のネットワーク又はネットワークの組み合わせであってよい（例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、電話ネットワーク、セルラーネットワーク、衛星ネットワーク、及びこれらに類似したもの）。
【０１０４】
演算装置７０５は、一時的な媒体及び一時的ではない媒体を含む、コンピュータ使用可能又はコンピュータ可読媒体を使用することが可能であると共に、これらを使用して通信することができる。一時的な媒体は、送信媒体（例えば、金属ケーブル、光ファイバ）、信号、搬送波、及びこれらに類似したものを含む。一時的ではない媒体は、磁気媒体（例えば、ディスク及びテープ）、光媒体（例えば、ＣＤ−ＲＯＭ、デジタルビデオディスク、Ｂｌｕ−ｒａｙディスク）、半導体媒体（例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリ、半導体ストレージ）、並びに、その他の不揮発性ストレージ又はメモリを含む。
【０１０５】
演算装置７０５は、いくつかの例示用の演算環境においては、技法、方法、アプリケーション、プロセス、又はコンピュータ実装可能命令を実装するべく、使用することができる。コンピュータ実行可能命令は、一時的な媒体から取得することが可能であり、且つ、一時的ではない媒体上において保存することが可能であり、且つ、これから取得することができる。実行可能命令は、任意のプログラミング、スクリプト、及び機械言語のうちの１つ又は複数に由来するものであってよい（例えば、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ、Ｖｉｓｕａｌ  Ｂａｓｉｃ、Ｐｙｔｈｏｎ、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ、及びその他のもの）。
【０１０６】
１つ又は複数のプロセッサ７１０は、ネイティブの又は仮想的な環境において、任意のオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）（図示されてはいない）の下において稼働することができる。ロジックユニット７６０、アプリケーションプログラミングインターフェイス（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）ユニット７６５、入力ユニット７７０、出力ユニット７７５、取得確認及びユーザー要求レビューユニット７８０、ライセンス発行判定７８５、ライセンス生成ユニット７９０、並びに、異なるユニットが、互いに、ＯＳとの間において、且つ、（図示されてはいない）その他のアプリケーションとの間において、通信するためのユニット間通信メカニズム７９５を含む１つ又は複数のアプリケーションを配備することができる。例えば、取得確認及びユーザー要求レビューユニット７８０、ライセンス発行判定７８５、及びライセンス生成ユニット７９０は、図１〜図５に示されている１つ又は複数のプロセスを実装することができる。記述されているユニット及び要素は、設計、機能、構成、又は実装形態において変更することが可能であり、且つ、提供されている説明に限定されるものではない。
【０１０７】
いくつかの例示用の実装形態においては、情報又は実行命令は、ＡＰＩユニット７６５によって受け取られた際に、１つ又は複数のその他のユニット（例えば、ロジックユニット７６０、入力ユニット７７０、出力ユニット７７５、取得確認及びユーザー要求レビューユニット７８０、ライセンス発行判定７８５、及びライセンス生成ユニット７９０）に伝達されてもよい。
【０１０８】
例えば、入力ユニット７７０が、ユーザーから、アプリケーションを取得するための命令、ライセンス要求、或いは、その他のこのようなユーザーのやり取りなどの、入力を受け取った後に、入力ユニット７７０は、データ取得確認及びユーザー要求レビューユニット７８０と通信するべく、ＡＰＩユニット７６５を使用することができる。例えば、取得確認及びユーザー要求レビューユニット７８０は、上述のように、ライセンスの発行を要するかどうかに関する判定を下すことができる。
【０１０９】
取得確認及びユーザー要求レビューユニット７８０は、ライセンスの発行を要するかどうかに関する出力を提供するために、ＡＰＩユニット７６５を介して、ライセンス発行判定７８５とやり取りすることができる。ＡＰＩユニット７６５を使用することにより、取得確認及びユーザー要求レビューユニット７８０は、上述のように、ライセンスを生成すると共にライセンスをユーザーに提供するべく、ライセンス生成ユニット７９０とやり取りすることができる。
【０１１０】
いくつかの例においては、ロジックユニット７６０は、上述のいくつかの例示用の実装形態において、ユニットの間の情報フローを制御するように、且つ、ＡＰＩユニット７６５、入力ユニット７７０、出力ユニット７７５、取得確認及びユーザー要求レビューユニット７８０、ライセンス発行判定７８５、及びライセンス生成ユニット７９０によって提供されるサービスを制御するように、構成することができる。例えば、ロジックユニット７６０により、単独で、或いは、ＡＰＩユニット７６５との関連において、１つ又は複数のプロセス又は実装形態のフローを制御することができる。
【０１１１】
例示用の実装形態は、様々な利益及び利点を有しうる。例えば、限定を伴うことなしに、ハッカーが機密情報を取得する又はアプリケーションを使用するリスクのみならず、ソフトウェアの開発者への情報漏洩のリスクを低減するべく、向上したセキュリティが、ライセンス起動及び検証プロセスにおいて提供される。
【０１１２】
以上、いくつかの例示用の実装形態について図示及び記述したが、これらの例示用の実装形態は、本明細書において記述されている主題について当業者に伝達するべく、提供されたものである。本明細書において記述されている主題は、記述されている例示用の実施形態への限定を伴うことなしに、様々な形態において実装されうることを理解されたい。本明細書において記述されている主題は、これらの具体的に定義又は記述されている事物を伴うことなしに、或いは、記述されてはいないその他の又は異なる要素又は事物を伴って、実施することができる。当業者は、添付の請求項及びその均等物において定義されている本明細書において記述されている主題を逸脱することなしに、これらの例示用の実装形態に対して変更が実施されうることを理解するであろう。
【図１】
2020524836.tif 000003
【図２】
2020524836.tif 000004
【図３】
2020524836.tif 000005
【図４】
2020524836.tif 000006
【図５】
2020524836.tif 000007
【図６】
2020524836.tif 000008
【図７】
2020524836.tif 000009
【国際調査報告】
2020524836.tif 000010
2020524836.tif 000011