(57)【特許請求の範囲】
【請求項１】
開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置の第１プロセッサと、前記顧客装置の第２プロセッサと、前記サーバ装置の第３プロセッサとによって実行される認証方法であって、
前記第１プロセッサは、
顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成し、
前記アプリケーションの有効期限と、前記共通鍵を難読化した難読化共通鍵とを含むライセンス情報を前記サーバ装置から受信し、
前記ライセンス情報を前記顧客装置に送信し、
前記第２プロセッサは、
前記ライセンス情報を前記開発者装置から受信し、
前記顧客装置がオンラインのとき、前記サーバ装置で管理する第１時刻を取得し、前記顧客装置がオフラインのとき、前記顧客装置で管理する第２時刻を取得し、
前記取得処理で取得した、前記第１時刻または前記第２時刻が前記ライセンス情報に含まれる前記有効期限を満たすとき、前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出し、
前記共通鍵を用いて前記暗号化アプリケーションを復号し、
前記第３プロセッサは、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行し、
前記ライセンス情報を前記開発者装置に送信し、
前記顧客装置から前記第１時刻の取得要求があったとき、前記第１時刻を前記顧客装置に送信する
ことを特徴とする認証方法。
【請求項２】
開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置の第１プロセッサと、前記顧客装置の第２プロセッサと、前記サーバ装置の第３プロセッサとによって実行される認証方法であって、
前記第１プロセッサは、
顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成し、
前記共通鍵を難読化した難読化共通鍵を含むライセンス情報を前記サーバ装置から受信し、
前記ライセンス情報を前記顧客装置に送信し、
前記第２プロセッサは、
前記ライセンス情報を前記開発者装置から受信し、
前記顧客装置がオンラインのとき、前記アプリケーションの使用頻度及び使用地域の少なくとも一方を前記サーバ装置に通知し、
前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出し、
前記共通鍵を用いて前記暗号化アプリケーションを復号し、
前記第３プロセッサは、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行し、
前記ライセンス情報を前記開発者装置に送信し、
前記顧客装置から前記アプリケーションの使用頻度及び使用地域の少なくとも一方の通知を受信する
ことを特徴とする認証方法。
【請求項３】
前記第３プロセッサは、
顧客名及び有効期限の少なくとも一方を含む情報を用いて、前記共通鍵を難読化した難読化共通鍵を生成し、
前記ライセンス情報は、さらに、
前記難読化共通鍵の生成処理において用いられた、前記顧客名及び前記有効期限の少なくとも一方を含み、
前記第２プロセッサは、
前記難読化共通鍵の生成処理において用いた、前記顧客名及び前記有効期限の少なくとも一方を含む情報を用いて、前記難読化共通鍵から前記共通鍵を取り出す
ことを特徴とする請求項１または２に記載の認証方法。
【請求項４】
前記第３プロセッサは、
顧客名及び有効期限の少なくとも一方を含む情報を用いて、電子署名を生成し、
前記ライセンス情報は、さらに、
前記電子署名の生成処理において用いられた、前記顧客名及び前記有効期限の少なくとも一方と、前記電子署名とを含み、
前記第２プロセッサは、
前記電子署名を用いて、前記ライセンス情報に含まれる、前記顧客名及び前記有効期限の少なくとも一方の正当性を判定する
ことを特徴とする請求項１から３のいずれか一つに記載の認証方法。
【請求項５】
前記サーバ装置は、
前記ライセンス情報が有効か否かを管理し、
前記第２プロセッサは、
前記顧客装置がオンラインのとき、前記開発者装置から受信した前記ライセンスファイルが有効か否かを問い合わせる
ことを特徴とする請求項１から４のいずれか一つに記載の認証方法。
【請求項６】
前記暗号化アプリケーションは、
前記暗号化アプリケーションを復号する復号ソフトと共に顧客に配布され、
前記第２プロセッサは、
前記暗号化アプリケーションを実行するとき、前記復号ソフトを動的に呼び出すことにより、前記取り出し処理と、前記復号処理とを含む処理を実行する
ことを特徴とする請求項１から５のいずれか一つに記載の認証方法。
【請求項７】
前記ライセンス情報は、さらに、
前記アプリケーションに含まれる機能を限定する機能情報を含み、
前記第２プロセッサは、
前記開発者装置から受信した前記ライセンス情報に含まれる前記機能情報に応じて、前記復号したアプリケーションが有する機能の実行を限定する
ことを特徴とする請求項１から６のいずれか一つに記載の認証方法。
【請求項８】
開発者装置と、サーバ装置と、顧客装置とがネットワークを介して接続される認証システムにおいて、
前記開発者装置は、
顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成する作成部と、
前記アプリケーションの有効期限と、前記共通鍵を難読化した難読化共通鍵とを含むライセンス情報を前記サーバ装置から受信する第１受信部と、
前記ライセンス情報を前記顧客装置に送信する第１送信部と、
を備え、
前記顧客装置は、
前記ライセンス情報を前記開発者装置から受信する第２受信部と、
前記顧客装置がオンラインのとき、前記サーバ装置で管理する第１時刻を取得し、前記顧客装置がオフラインのとき、前記顧客装置で管理する第２時刻を取得する取得部と、
前記取得部が取得した、前記第１時刻または前記第２時刻が前記ライセンス情報に含まれる前記有効期限を満たすとき、前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出す取出部と、
前記共通鍵を用いて前記暗号化アプリケーションを復号する復号部と、
を備え、
前記サーバ装置は、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行する生成部と、
前記ライセンス情報を前記開発者装置に送信する処理と、前記顧客装置から前記第１時刻の取得要求があったとき、前記第１時刻を前記顧客装置に送信する処理と、を実行する第２送信部と、
を備えることを特徴とする認証システム。
【請求項９】
開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、
前記開発者装置は、
顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成する作成部と、
前記共通鍵を難読化した難読化共通鍵を含むライセンス情報を前記サーバ装置から受信する第１受信部と、
前記ライセンス情報を前記顧客装置に送信する第１送信部と、
を備え、
前記顧客装置は、
前記ライセンス情報を前記開発者装置から受信する第２受信部と、
前記顧客装置がオンラインのとき、前記アプリケーションの使用頻度及び使用地域の少なくとも一方を前記サーバ装置に通知する通知部と、
前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出す取出部と、
前記共通鍵を用いて前記暗号化アプリケーションを復号する復号部と、
を備え、
前記サーバ装置は、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行する生成部と、
前記ライセンス情報を前記開発者装置に送信する第２送信部と、
前記顧客装置から前記アプリケーションの使用頻度及び使用地域の少なくとも一方の通知を受信する第３受信部と、
を備えることを特徴とする認証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムに関する。
【背景技術】
【０００２】
例えばセキュリティーソフトウェアや文書編集ソフトウェア等の各種アプリケーションソフトウェアは、かつては個別に店舗で販売されていたが、インターネットの普及とその通信速度及び容量等の向上に伴い、ネットを介してダウンロードされて提供されることが主流となってきた。しかしながら、購買したソフトウェアが特定の装置のみで利用されることを担保するために、プロダクトキー等の購買したソフトウェアに１対１に対応した固有情報が与えられることについては変わらない。すなわち、その固有情報が、利用装置に接続可能な特定のハードウェア（典型的にはＵＳＢ（ＵＳＢドングル））で提供されている。
【０００３】
また、昨今のように、各種アプリケーションソフトウェアがダウンロードされて提供される場合には、購買されたアプリケーションのグレードや使用できる期間等の使用条件をいわゆるライセンス情報として提供して、柔軟性のあるアプリケーションの提供が可能になってきた。
【０００４】
関連する技術として、特許文献１がある。当該文献においては、パッケージソフトウェアと、ライセンス情報とその電子署名からなるライセンスファイルとがネットを介して、ソフトウェアメーカーからユーザーに提供され、一方、ライセンス情報が格納されたＵＳＢドングルで提供されている。そして、電子署名に基づいて、ネットを介して提供されたライセンス情報とＵＳＢドングル内のライセンス情報を照合し、認証が成立すれば、当該ユーザーは、提供されたパッケージソフトウェアをライセンス情報が示す範囲内で使用することが可能となる。ここで、特に、特許文献１においては、ライセンス情報がＸＭＬで記述されることと、そのライセンス情報に電子署名が付されることが特徴となっている（特許文献１参照）。
【０００５】
また、関連する他の技術として、特許文献２がある。当該文献においては、ハードウェアとして、ソフトウェア提供サーバ（１３０）、ユーザー端末機（１１０）、及びドングル形態のトークン（１２０）が記述され、ユーザーが正式に特定ソフトウェアを購入した場合にはトークン（１２０）が提供され、ユーザーは、そのトークン（１２０）を自己の端末機（１１０）に接続した状態で、サーバ（１３０）から当該ソフトウェアをダウンロードする。その際、サーバ（１３０）は、ユーザー端末機（１１０）にトークン（１２０）が接続されているか否かを検証し、接続されている場合には、自身とトークン（１２０）との間で相互認証されるか否かを確認する。相互認証が確認された場合には、サーバ（１３０）は、当該ソフトウェアの使用を許可するためのセキュレットを暗号化してトークン（１２０）に転送する。
【０００６】
そして、ユーザーが購入したソフトウェアをユーザー端末機（１１０）にて使用する際には、まず、ユーザー端末機（１１０）が、購入したソフトウェアを駆動するためのセキュレットが、接続されたトークン（１２０）内に存在するか否かを確認する。そして、存在する場合、ユーザー端末機（１１０）は、トークン（１２０）に、セキュレットを実行させるための実行命令を転送する。実行命令を受け取ったトークン（１２０）は、該当するセキュレットをメモリに読み込んできて実行し、その実行結果をユーザー端末機（１１０）に返送する。ユーザー端末機（１１０）に実行結果が返されると、ユーザー端末機（１１０）は、当該ソフトウェアの実行を開始する（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−１４６２７９号公報
【特許文献２】特表２０１２−５１４２７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来技術のアプリケーションソフトウェアの提供の手続きにおいては、ドングルや紙面等の非デジタル情報媒体をその一部に介しているのが実情である。
【０００９】
本発明は上述のような事情から為されたものであり、本発明の目的は、ドングルや紙面等の非デジタル情報媒体を介すことなく、電子通信のみのやりとりでも、高度なセキュリティが担保できるアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の認証方法は、開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置の第１プロセッサと、前記顧客装置の第２プロセッサと、前記サーバ装置の第３プロセッサとによって実行される認証方法であって、前記第１プロセッサは、顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成し、前記アプリケーションの有効期限と、前記共通鍵を難読化した難読化共通鍵とを含むライセンス情報を前記サーバ装置から受信し、前記ライセンス情報を前記顧客装置に送信し、前記第２プロセッサは、前記ライセンス情報を前記開発者装置から受信し、前記顧客装置がオンラインのとき、前記サーバ装置で管理する第１時刻を取得し、前記顧客装置がオフラインのとき、前記顧客装置で管理する第２時刻を取得し、前記取得処理で取得した、前記第１時刻または前記第２時刻が前記ライセンス情報に含まれる前記有効期限を満たすとき、前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出し、前記共通鍵を用いて前記暗号化アプリケーションを復号し、前記第３プロセッサは、前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行し、前記ライセンス情報を前記開発者装置に送信し、前記顧客装置から前記第１時刻の取得要求があったとき、前記第１時刻を前記顧客装置に送信することを要旨とする。
【００１１】
また、上記目的を達成するため、本発明の認証方法は、開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置の第１プロセッサと、前記顧客装置の第２プロセッサと、前記サーバ装置の第３プロセッサとによって実行される認証方法であって、前記第１プロセッサは、顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成し、前記共通鍵を難読化した難読化共通鍵を含むライセンス情報を前記サーバ装置から受信し、前記ライセンス情報を前記顧客装置に送信し、前記第２プロセッサは、前記ライセンス情報を前記開発者装置から受信し、前記顧客装置がオンラインのとき、前記アプリケーションの使用頻度及び使用地域の少なくとも一方を前記サーバ装置に通知し、前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出し、前記共通鍵を用いて前記暗号化アプリケーションを復号し、前記第３プロセッサは、前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行し、前記ライセンス情報を前記開発者装置に送信し、前記顧客装置から前記アプリケーションの使用頻度及び使用地域の少なくとも一方の通知を受信することを要旨とする。
【００１２】
ここで、上記２項それぞれにおいて、前記第３プロセッサは、顧客名及び有効期限の少なくとも一方を含む情報を用いて、前記共通鍵を難読化した難読化共通鍵を生成し、前記ライセンス情報は、さらに、前記難読化共通鍵の生成処理において用いられた、前記顧客名及び前記有効期限の少なくとも一方を含み、前記第２プロセッサは、前記難読化共通鍵の生成処理において用いた、前記顧客名及び前記有効期限の少なくとも一方を含む情報を用いて、前記難読化共通鍵から前記共通鍵を取り出すことが好適である。
【００１３】
また、上記３項それぞれにおいて、前記第３プロセッサは、顧客名及び有効期限の少なくとも一方を含む情報を用いて、電子署名を生成し、前記ライセンス情報は、さらに、前記電子署名の生成処理において用いられた、前記顧客名及び前記有効期限の少なくとも一方と、前記電子署名とを含み、前記第２プロセッサは、前記電子署名を用いて、前記ライセンス情報に含まれる、前記顧客名及び前記有効期限の少なくとも一方の正当性を判定することが好適である。
【００１４】
また、上記４項それぞれにおいて、前記サーバ装置は、前記ライセンス情報が有効か否かを管理し、前記第２プロセッサは、前記顧客装置がオンラインのとき、前記開発者装置から受信した前記ライセンスファイルが有効か否かを問い合わせることが好適である。
【００１５】
また、上記５項それぞれにおいて、前記暗号化アプリケーションは、前記暗号化アプリケーションを復号する復号ソフトと共に顧客に配布され、前記第２プロセッサは、前記暗号化アプリケーションを実行するとき、前記復号ソフトを動的に呼び出すことにより、前記取り出し処理と、前記復号処理とを含む処理を実行することが好適である。
また、上記６項それぞれにおいて、前記ライセンス情報は、さらに、前記アプリケーションに含まれる機能を限定する機能情報を含み、前記第２プロセッサは、前記開発者装置から受信した前記ライセンス情報に含まれる前記機能情報に応じて、前記復号したアプリケーションが有する機能の実行を限定することが好適である。
【００１６】
また、上記目的を達成するため、本発明の認証システムは、開発者装置と、サーバ装置と、顧客装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置は、顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成する作成部と、前記アプリケーションの有効期限と、前記共通鍵を難読化した難読化共通鍵とを含むライセンス情報を前記サーバ装置から受信する第１受信部と、前記ライセンス情報を前記顧客装置に送信する第１送信部と、を備え、前記顧客装置は、前記ライセンス情報を前記開発者装置から受信する第２受信部と、前記顧客装置がオンラインのとき、前記サーバ装置で管理する第１時刻を取得し、前記顧客装置がオフラインのとき、前記顧客装置で管理する第２時刻を取得する取得部と、前記取得部が取得した、前記第１時刻または前記第２時刻が前記ライセンス情報に含まれる前記有効期限を満たすとき、前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出す取出部と、前記共通鍵を用いて前記暗号化アプリケーションを復号する復号部と、を備え、前記サーバ装置は、前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行する生成部と、前記ライセンス情報を前記開発者装置に送信する処理と、前記顧客装置から前記第１時刻の取得要求があったとき、前記第１時刻を前記顧客装置に送信する処理と、を実行する第２送信部と、を備えることを要旨とする。
【００１７】
また、上記目的を達成するため、本発明の認証システムは、開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置は、顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成する作成部と、前記共通鍵を難読化した難読化共通鍵を含むライセンス情報を前記サーバ装置から受信する第１受信部と、前記ライセンス情報を前記顧客装置に送信する第１送信部と、を備え、前記顧客装置は、前記ライセンス情報を前記開発者装置から受信する第２受信部と、前記顧客装置がオンラインのとき、前記アプリケーションの使用頻度及び使用地域の少なくとも一方を前記サーバ装置に通知する通知部と、前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出す取出部と、前記共通鍵を用いて前記暗号化アプリケーションを復号する復号部と、を備え、前記サーバ装置は、前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行する生成部と、前記ライセンス情報を前記開発者装置に送信する第２送信部と、前記顧客装置から前記アプリケーションの使用頻度及び使用地域の少なくとも一方の通知を受信する第３受信部と、を備えることを要旨とする。
【発明の効果】
【００１８】
本発明のアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムによれば、ライセンスの情報に、少なくとも顧客名の情報を含ませているので、ドングルや紙面等の非デジタル情報媒体を介すことなく、電子通信のみのやりとりでも、高度なセキュリティが担保できる。
【００１９】
特に、ライセンスの情報に、アプリケーションソフトウェアを暗号化するための任意の共通鍵に対して、少なくとも顧客名の情報を施して変換させて得られた難読化された共通鍵の情報を含ませるようにしたので、ライセンスの情報の顧客名が、悪意のある第三者に書き変えられた場合、その難読化された共通鍵の情報に基づき、元の共通鍵を得ようとしても真正な共通鍵は得られないので、暗号化されたアプリケーションソフトウェアの復号化には成功しない。
【００２０】
また、顧客の装置に送られた暗号化されたアプリケーションソフトウェアの実行時には、その認証に、ネットワークとのオンライン又はオフラインに応じた融通性のある処理を行うことができる。
【図面の簡単な説明】
【００２１】
【図１】本発明のアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムの実施の形態における顧客装置１、開発者装置２、及びライセンスサーバ３の相互間の手順の流れを示す図である。
【図２】開発者装置２を所有する開発者が、ライセンスサーバ３及び開発者装置２に予め行っておく処理を説明するための図である。
【図３】ライセンスサーバ３で作成されるプロダクトテーブルの例を示す図である。
【図４】プロダクトファイルＰＦを受信した開発者装置２が、当該プロダクトファイルＰＦに基づいて行う処理を説明するための図である。
【図５】ライセンスサーバ３で作成されるライセンステーブルの例を示す図である。
【図６】顧客装置１における、暗号化後アプリケーションＥＡＰの実行について説明するための図である。
【図７】顧客装置１における、暗号化後アプリケーションＥＡＰの実行について説明するための図である。
【図８】本発明の実施の形態の前提たる技術的環境を示す図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。
本発明の実施の形態においては、アプリケーションソフトウェアを提供する者（アプリケーションプロバイダー）を「開発者」、アプリケーションソフトウェアの提供を受ける者を「顧客」と称することとするが、これらは典型的な呼称なだけであって、これらの呼称に本発明が限定を受けることはない。
【００２３】
図８を参照して、本発明の実施の形態における技術的環境としては、顧客の操作する顧客装置１と、開発者が操作する開発者装置２と、ライセンスサーバ３とは、典型的には、インターネット４を介して相互に接続されている。なお、「ライセンスサーバ」という名称も、典型例であって、本発明を限定するものではない。本発明を解釈するにあたっては、その機能で判断するべきものである。
【００２４】
顧客装置１、開発者装置２、及びライセンスサーバ３は、例えば、コンピュータ装置であり、制御装置（processor）、主記憶装置（ＲＡＭ：Random Access Memory）、補助記憶装置（ハードディスク、フラッシュメモリ等）、入出力装置（キーボード、マウス、表示装置等）、通信装置、読取り装置等で構成される。顧客装置１、開発者装置２、及びライセンスサーバ３では、各種プログラムが、主記憶装置に展開されつつ、制御装置により処理される。また、各々の通信装置は、顧客装置１、開発者装置２、及びライセンスサーバ３を、他の装置と通信可能に接続させる。更に、顧客装置１、開発者装置２、及びライセンスサーバ３の各制御装置に、各種処理を実行させるプログラムは、外部記録媒体、例えば、ＳＤメモリカード（SD Memory Card）、ＦＤ（Floppy Disk）、ＣＤ（Compact Disk）、ＤＶＤ（Digital Versatile Disk）、ＢＤ（Blu-ray Disk：登録商標）、及びフラッシュメモリ等を介して、上記補助記憶媒体に格納される。
【００２５】
図１は、本発明のアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムの実施の形態における顧客装置１、開発者装置２、及びライセンスサーバ３の相互間の手順の流れを示す図である。なお、当該図面において、上から下に向けて時系列となっている。図２は、開発者装置２を所有する開発者が、ライセンスサーバ３及び開発者装置２に予め行っておく処理を説明するための図である。
【００２６】
まず、図２を参照し、開発者が、ライセンスサーバ３及び開発者装置２に予め行っておく処理を説明する。開発者は、ライセンスサーバ３に対しては、アプリケーションソフトウェアを共通鍵暗号化方式で暗号化するための共通鍵を難読化するためのアルゴリズムと、そのアルゴリズムに基づくプログラムを配布しておく。また、開発者は、開発者装置２に対しては、暗号化ツール（開発者装置２内では暗号化ツール２１）を配布しておく。この暗号化ツールは、任意のアプリケーションソフトウェアを暗号化するためのプログラムと、復号化用ダイナミックリンクライブラリＤＬＬとを含んでおり、その復号化用ダイナミックリンクライブラリＤＬＬは、上述の共通鍵を難読化するためのアルゴリズムと、暗号化後のアプリケーションソフトウェアを復号化するためのプログラムとからなっている。
【００２７】
次に、図１を参照して、顧客が任意のアプリケーションソフトウェアを開発者から購入する手順を説明する。そこで、まず、顧客は、購入したいアプリケーションソフトウェアの開発者に対して、自己の顧客装置１により、少なくとも製品（プロダクト）名を指定して購入希望の旨（購入要求）を伝達する。顧客からの当該購入要求は開発者装置２に受け付けられ、次に、その開発者装置２は、そのプロダクト名を指定しつつ、ライセンスサーバ３に対して、プロダクトファイルＰＦを要求する。それに応答して、ライセンスサーバ３は、開発者装置２に対してプロダクトファイルＰＦを送信する。そのプロダクトファイルＰＦには、指定されたプロダクト名と、テキスト表示された任意の共通鍵が含まれる。この共通鍵は、上述のように、アプリケーションソフトウェアを共通鍵暗号化方式で暗号化するときに使用する鍵である。プロダクトファイルＰＦの例を下に示す。
--- product file ---
プロダクト名：  PRODUCT0
共通鍵：        30DF54B681E2E94D4C21E3EC73459039EBCF379F19FED05CEA
B1CFB1A6CDAD9F
なお、プロダクトファイルＰＦは、顧客に配布するわけではなく開発者のみが使用するため、共通鍵としてこのように生の値をそのまま送ってもよいが、ライセンスサーバ３への不正アクセスを考慮して、公開鍵暗号化方式により難読化しておくことが好ましい。
【００２８】
なお、図１、図２、及び図８においては、説明の便宜上、一のライセンスサーバに対して開発者が一として記載されているが、無論現実には、一のライセンスサーバ３に対して、１つ又は複数のアプリケーションソフトウェアを開発する開発者が複数存在することは言うまでもない。かかる技術的環境においては、ライセンスサーバ３は、新たな開発者からプロダクトファイルＰＦの要求があってプロダクトファイルＰＦを返信するごとに、図３に示すようなテーブルを作成して管理しておくことが好適である。
【００２９】
図４は、プロダクトファイルＰＦを受信した開発者装置２が、当該プロダクトファイルＰＦに基づいて行う処理を説明するための図である。
開発者装置２には、図１に示すように、暗号化前アプリケーションＡＰが格納されているが、図２を参照して説明したように、開発者から予め暗号化ツール２１が配布格納されている。そこで、まず、暗号化前アプリケーションＡＰについて説明すると、暗号化前アプリケーションＡＰは、図４（ｂ）に示すように、暗号化前プログラム、リソース、及びエントリーポイントからなり、エントリーポイントが、プログラムの始点を指し示している。
【００３０】
図４（ａ）を参照して、プロダクトファイルＰＦを受信した開発者装置２は、その暗号化ツール２１により、プロダクト名により指定された暗号化前アプリケーションＡＰを、プロダクトファイルＰＦに含まれる共通鍵を使用して暗号化処理する。この暗号化されたアプリケーションを（暗号化後アプリケーションＥＡＰ）は、復号化用ダイナミックリンクライブラリＤＬＬと共に出力される。同図（ｃ）は、暗号化後アプリケーションＥＡＰを説明するための図である。同図に示すように、暗号化後アプリケーションＥＡＰは、暗号化前アプリケーションＡＰの構成に対してスタブプログラムが加わる構成となっており、エントリーポイントがスタブプログラムの始点を指し示し、スタブプログラムがアプリケーションプログラムの始点を指し示すようになっている。また、スタブプログラムが復号化用ダイナミックリンクライブラリＤＬＬを呼び出す構成となっている。
【００３１】
このように、アプリケーションソフトウェアは暗号化されて顧客に提供されるため、バイナリデータに対してなされるような書き換えやその解析によるハッキングを防止することができる。なお、採用される共通鍵暗号化方式としては、ＡＥＳ（Advanced Encryption Standard）が典型であるが、その他の共通鍵暗号化方式でもよい。
【００３２】
図１に戻り、開発者装置２において生成された暗号化後アプリケーションＥＡＰと復号化用ダイナミックリンクライブラリＤＬＬとは、購入要求に係る顧客の顧客装置１に配布される。
【００３３】
次に、顧客装置１に暗号化後アプリケーションＥＡＰ及び復号化用ダイナミックリンクライブラリＤＬＬを受け取った顧客は、その顧客装置１により、有効期限を指定しつつ、開発者に対して、暗号化後アプリケーションＥＡＰを復号するためのライセンスを要求する。開発者装置２に当該顧客からライセンス要求を受け取った開発者は、その開発者装置２により、顧客名、プロダクト名、及び有効期限を指定しつつ、ライセンスサーバ３に対してライセンスファイル（ライセンスの情報）要求を行う。
【００３４】
開発者装置２からライセンスファイル要求を受け取ったライセンスサーバ３は、開発者装置２に対してライセンスファイルＬＦを送信する。そのライセンスファイルＬＦには、プロダクト名、有効期限、顧客名、難読化された共通鍵、及び電子署名が含まれる。ライセンスサーバ３からライセンスファイルＬＦを受け取った開発者装置２は、そのライセンスファイルＬＦを顧客装置１にメール等で送信する。このとき、メール等の通信で送れる理由は、以下説明する難読化された共通鍵や電子署名を備えたからである。なお、顧客名と有効期限の両方を含ませるのではなく、顧客名の情報のみでもよい。
【００３５】
まず、難読化された共通鍵について説明する。ライセンスファイルＬＦは顧客に配布されるため、共通鍵は秘匿される必要がある。また、顧客名や有効期限が第三者により故意に書き換えられた場合には、アプリケーションの暗号化の解除を不能にする必要がある。従って、本発明の実施の形態においては、ライセンスファイルＬＦに含ませる共通鍵を、生のテキストデータではなく、それに対して特定の処理を施すことにより、難読化する。その特定の処理（図２で説明した、共通鍵を難読化するためのアルゴリズム）としては、難読化前の共通鍵と、顧客名とのデータ間、又は、難読化前の共通鍵と、顧客名及び有効期限とのデータ間で排他的論理和（Exclusive OR）をとり、そのあとＳＢＯＸ（substitution box）などのルックアップテーブルを通したり、順番を入れ替えたりする。なお、排他的論理和ではなく、それらのバイト値の加減算でもよい。また、難読化前の共通鍵を別の共通鍵で暗号化してもよい。そのときには、その別の共通鍵は、復号化用ダイナミックリンクライブラリＤＬＬに含ませて顧客装置１に送っておくことができる。また、難読化前の共通鍵を開発者装置２に固有の秘密鍵で暗号化し、対応する公開鍵をもって顧客装置１で復号化させるようにしてもよい。そのときにも、その公開鍵は、復号化用ダイナミックリンクライブラリＤＬＬに含ませて送ることができる。
【００３６】
次に、電子署名について説明する。ここでの電子署名は、顧客名と有効期限の情報に基づくものである。従って、かかる電子署名により、顧客名と有効期限の情報の改ざんを検出することができる。電子署名の具体的作成においては、顧客名と有効期限の情報をＳＢＯＸなどのルックアップテーブルやＳＨＡ（Secure Hash Algorithm）などのハッシュ関数に通し、ライセンスファイルＬＦに記載されている値との一致をとることで行える。また、ＲＳＡやＤＳＡ（Digital Signature Algorithm）などの一般的な電子署名アルゴリズムを使用してもよい。
【００３７】
通信途中等で不正にライセンスファイルＬＦを取得した者が、その顧客名を書き変えてアプリケーションソフトウェアを使用しようとした場合、上述のように、顧客名及び有効期限についての電子署名を採用したので、後述の認証の際に、認証されない。また、上述のように、共通鍵に対して、少なくとも顧客名の情報を組み入れて、難読化（書き変え）をしているので、ライセンスファイルＬＦ内の顧客名の情報が書き変えられた場合、その書き変えられた情報に基づいて元の共通鍵を復元しようとしても、正しい共通鍵は復元できないので、暗号化後アプリケーションＥＡＰの復号化は不可能となる。
【００３８】
ライセンスファイルＬＦの例を下に示す。
--- license file ---
プロダクト名：        PRODUCT0
有効期限：            2016/12/31
顧客名：              AB** Corporation
難読化された共通鍵：  374E7EB28CFE0F38B0E174913A2D3277260BC5A9B1035
C098B39FF4C9C17B30C
電子署名：            7912A040D1CE675FCC0977D4968A24ECDC4F236A8FD8
C55618830FD3ADA1E938E38CBC3D5CB7581743316FC9C
BC75AD4711A67DD372FBA952E8830E147B4534
【００３９】
なお、ライセンスサーバ３は、開発者からライセンスファイルＬＦの要求を受けるごとに、図５に示すように、顧客とライセンスファイルＬＦとの対応関係をテーブルとして確保しておくことが好適である。ここで、テーブル内の“利用停止フラグ”は、後述する認証の際に、送られてきたプロダクト名及び顧客名の情報に基づき、対応するアプリケーションソフトウェアの暗号化を解除してもよいか否かを示す情報である。なお、難読化された共通鍵及び電子署名の項目は、ライセンスの再発行が想定されないのであれば、省略できる。
【００４０】
次に、顧客が開発者から購入した、暗号化されたアプリケーションソフトウェアの、顧客装置１における実行について説明する。なお、顧客は、暗号化後アプリケーションＥＡＰが格納された顧客装置１内のフォルダと同じフォルダにライセンスファイルＬＦを格納しておくことで、その暗号化後アプリケーションＥＡＰを復号化して実行することができる、という構成にしておくことが好適である。
【００４１】
図６及び図７は、顧客装置１における、暗号化後アプリケーションＥＡＰの実行について説明するための図である。図６（ａ）は、図４（ｃ）に示した構成に、ライセンスファイルＬＦを加えて、実行時の説明のために書き変えた図である。図６（ｂ）及び図７は、それぞれ、スタブプログラム及復号化用ダイナミックリンクライブラリＤＬＬの処理手順を示すフローチャートである。
【００４２】
暗号化後アプリケーションＥＡＰに対して起動が掛かると、まず、エントリーポイントで指し示されたスタブプログラムが走り始める。図６（ｂ）を参照して、スタブプログラムは、復号化用ダイナミックリンクライブラリＤＬＬを呼び出す（ステップＳ１１）。図７を参照して、呼び出された復号化用ダイナミックリンクライブラリＤＬＬは（ステップＳ２１において肯定判定）、ライセンスファイルＬＦの認証を行う（ステップＳ２２）。
【００４３】
具体的には、ライセンスファイルＬＦに含まれる電子署名に基づき、顧客名と有効期限の正当性（真正）を判定する。電子署名作成後に、ライセンスファイルＬＦの顧客名又は有効期限が改ざんされた場合には、電子署名の判定が否定される。加えて、ネットワークとオンラインで接続されている場合には、ライセンスサーバ３に対して、ライセンスファイルＬＦの有効性を問い合わせる。ライセンスサーバ３は、自身のライセンステーブル内の“利用停止フラグ”のON/OFFをみることにより、返答を行う。また、有効期限内か否かの判定においては、ネットワークとオフラインの場合には、オフラインでも可能なように、顧客装置１自身の時刻を参照することにより有効性を判定する。一方、オンラインの場合には、ライセンスサーバ３の時刻を参照して行うことにより、より強固な正当性の判定を実現する。また、開発者が顧客の不正な使用を検出できる手段として、オンラインの場合には、当該アプリケーションソフトウェアの使用状況や使用地域をライセンスサーバ３に通知するようにする。
【００４４】
ステップＳ２２におけるライセンスファイルＬＦの認証の結果、認証が否定的であった場合（ステップＳ２３において否定判定）には、エラー処理を介して、暗号化後アプリケーションＥＡＰの復号化が許可されない旨が通知される（ステップＳ２４）。一方、認証が肯定的であった場合（ステップＳ２３において肯定判定）には、復号化用ダイナミックリンクライブラリＤＬＬは、ライセンスファイルＬＦから難読化された共通鍵を読み出し、難読化の処理と逆の処理をその難読化された共通鍵に施すことにより、元の共通鍵を復元する（ステップＳ２５）。復号化用ダイナミックリンクライブラリＤＬＬは、その復元した元の共通鍵を用いて、暗号化後アプリケーションＥＡＰを復号化する（ステップＳ２６）。ここで、難読化の処理のアルゴリズムは第三者には不明であるので、ライセンスファイルＬＦ内の難読化された共通鍵の情報が不正に搾取されても、元の共通鍵を復元することは困難である。また、その難読化の処理には、正規の顧客名及び有効期限の情報が組み込まれているので、その後、ライセンスファイルＬＦのそれらの情報が書き変えられても、上記復号化の段階で復号できないか、又は復号化できても復号化後のアプリケーションは正常に動作しない。なお、電子署名が付されている場合には、その認証が成功すれば、顧客名及び有効期限の情報は不正に書き変えられていないと判定でき、上述の難読化された共通鍵の復元処理においても、元の共通鍵が復元できると考えられるが、何らかの理由で、電子署名の判定を通過してしまった場合に、このように二重に判定することにより、ライセンスファイルＬＦ内の情報の保護が強固となる。
【００４５】
図６（ｂ）のスタブプログラムの処理に戻り、復号化用ダイナミックリンクライブラリＤＬＬによる復号化処理が終了すると（ステップＳ１２において肯定判定）、スタブプログラムは、制御を復号化されたプログラムの先頭にジャンプさせることにより、アプリケーションソフトウェアを実行させる（ステップＳ１３）。
【００４６】
なお、１つのアプリケーションに、選択可能な複数の機能レベルが設定できる場合、顧客が購入要求時に指定した機能レベルで当該アプリケーションの機能を予め限定したものを、顧客に配布するようにしてもよいが、外からの指定に基づき機能レベルの自動設定が可能な１つのアプリケーションを各顧客に配布し、アプリケーションプログラムが実行時に顧客に応じてその機能レベルの自動設定を行うようにしてもよい。そのときには、顧客は、購入要求時又はライセンス要求時にその機能レベルの情報も提供し、ライセンスサーバ３は、ライセンスファイルＬＦにその機能レベルの情報も加えておき、アプリケーションプログラムは、復号化用ダイナミックリンクライブラリＤＬＬを介してその情報を取得したり、又はＡＰＩ（Application Programing Interface）経由で取得したりすることもできる。
【００４７】
なお、上述のように暗号化後プログラムの復号化処理を復号化用ダイナミックリンクライブラリＤＬＬに行わせたのは、Ｃ言語で開発できるという利点があるためである。スタブプログラムによっても可能ではあるが、Ｃ言語を使用できないためその分メンテナンスコストは上がってしまう。
【００４８】
なお、上述の実施の形態においては、暗号化されたアプリケーションソフトウェアは、ネットワークを介して開発者から顧客に渡されているが、ＣＤ等の媒体を介してもよい。
【００４９】
以上のように、アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムにおける実施形態によれば、ライセンスの情報に、少なくとも顧客名の情報を含ませているので、ドングルや紙面等の非デジタル情報媒体を介すことなく、電子通信のみのやりとりでも、高度なセキュリティが担保できる。
【００５０】
特に、ライセンスファイルＬＦに、アプリケーションソフトウェアを暗号化するための共通鍵に対して、少なくとも顧客名の情報を施して変換させて得られた難読化された共通鍵の情報を含ませるようにしたので、ライセンスファイルＬＦの顧客名が、悪意のある第三者に書き変えられた場合、その難読化された共通鍵の情報に基づき、元の共通鍵を得ようとしても真正な共通鍵は得られないので、暗号化されたアプリケーションソフトウェアの復号化には成功しない。
【００５１】
また、顧客装置１に送られた暗号化されたアプリケーションソフトウェアの実行時には、その認証に、ネットワーク４とのオンライン又はオフラインに応じた融通性のある処理を行うことができる。
【産業上の利用可能性】
【００５２】
本発明のアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムは、例えば、任意の者が自身のパーソナルコンピュータで使用したい各種アプリケーションソフトウェアをその開発者のホームページや販売サイトから入手する場合の技術である。
【符号の説明】
【００５３】
１  顧客装置
２  開発者装置
２１  暗号化ツール
３  ライセンスサーバ
４  インターネット
ＰＦ  プロダクトファイル
ＬＦ  ライセンスファイル
ＡＰ  暗号化前アプリケーション
ＥＡＰ  暗号化後アプリケーション
ＤＬＬ  復号化用ダイナミックリンクライブラリ
【図１】
0006796861.tif 000002
【図２】
0006796861.tif 000003
【図３】
0006796861.tif 000004
【図４】
0006796861.tif 000005
【図５】
0006796861.tif 000006
【図６】
0006796861.tif 000007
【図７】
0006796861.tif 000008
【図８】
0006796861.tif 000009