(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6796861
(24)【登録日】2020年11月19日
(45)【発行日】2020年12月9日
(54)【発明の名称】アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステム
(51)【国際特許分類】
G06F 21/10 20130101AFI20201130BHJP
H04L 9/08 20060101ALI20201130BHJP
H04L 9/32 20060101ALI20201130BHJP
G09C 1/00 20060101ALI20201130BHJP
G06F 21/64 20130101ALI20201130BHJP
【FI】
G06F21/10 350
H04L9/00 601B
H04L9/00 675B
G09C1/00 640D
G06F21/64
【請求項の数】9
【全頁数】16
(21)【出願番号】特願2017-78356(P2017-78356)
(22)【出願日】2017年4月11日
(65)【公開番号】特開2018-180854(P2018-180854A)
(43)【公開日】2018年11月15日
【審査請求日】2019年4月2日
(73)【特許権者】
【識別番号】398034168
【氏名又は名称】株式会社アクセル
(72)【発明者】
【氏名】客野 一樹
【審査官】
宮司 卓佳
(56)【参考文献】
【文献】
国際公開第2013/140774(WO,A1)
【文献】
特開平08−006784(JP,A)
【文献】
特表2014−501966(JP,A)
【文献】
特開2017−016167(JP,A)
【文献】
特開2011−023950(JP,A)
【文献】
特開2002−163578(JP,A)
【文献】
特開2005−004449(JP,A)
【文献】
米国特許第08359473(US,B1)
【文献】
特開平09−069044(JP,A)
【文献】
特開2003−029861(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/10
G06F 21/64
G09C 1/00
H04L 9/08
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置の第1プロセッサと、前記顧客装置の第2プロセッサと、前記サーバ装置の第3プロセッサとによって実行される認証方法であって、
前記第1プロセッサは、
顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成し、
前記アプリケーションの有効期限と、前記共通鍵を難読化した難読化共通鍵とを含むライセンス情報を前記サーバ装置から受信し、
前記ライセンス情報を前記顧客装置に送信し、
前記第2プロセッサは、
前記ライセンス情報を前記開発者装置から受信し、
前記顧客装置がオンラインのとき、前記サーバ装置で管理する第1時刻を取得し、前記顧客装置がオフラインのとき、前記顧客装置で管理する第2時刻を取得し、
前記取得処理で取得した、前記第1時刻または前記第2時刻が前記ライセンス情報に含まれる前記有効期限を満たすとき、前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出し、
前記共通鍵を用いて前記暗号化アプリケーションを復号し、
前記第3プロセッサは、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行し、
前記ライセンス情報を前記開発者装置に送信し、
前記顧客装置から前記第1時刻の取得要求があったとき、前記第1時刻を前記顧客装置に送信する
ことを特徴とする認証方法。
【請求項2】
開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置の第1プロセッサと、前記顧客装置の第2プロセッサと、前記サーバ装置の第3プロセッサとによって実行される認証方法であって、
前記第1プロセッサは、
顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成し、
前記共通鍵を難読化した難読化共通鍵を含むライセンス情報を前記サーバ装置から受信し、
前記ライセンス情報を前記顧客装置に送信し、
前記第2プロセッサは、
前記ライセンス情報を前記開発者装置から受信し、
前記顧客装置がオンラインのとき、前記アプリケーションの使用頻度及び使用地域の少なくとも一方を前記サーバ装置に通知し、
前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出し、
前記共通鍵を用いて前記暗号化アプリケーションを復号し、
前記第3プロセッサは、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行し、
前記ライセンス情報を前記開発者装置に送信し、
前記顧客装置から前記アプリケーションの使用頻度及び使用地域の少なくとも一方の通知を受信する
ことを特徴とする認証方法。
【請求項3】
前記第3プロセッサは、
顧客名及び有効期限の少なくとも一方を含む情報を用いて、前記共通鍵を難読化した難読化共通鍵を生成し、
前記ライセンス情報は、さらに、
前記難読化共通鍵の生成処理において用いられた、前記顧客名及び前記有効期限の少なくとも一方を含み、
前記第2プロセッサは、
前記難読化共通鍵の生成処理において用いた、前記顧客名及び前記有効期限の少なくとも一方を含む情報を用いて、前記難読化共通鍵から前記共通鍵を取り出す
ことを特徴とする請求項1または2に記載の認証方法。
【請求項4】
前記第3プロセッサは、
顧客名及び有効期限の少なくとも一方を含む情報を用いて、電子署名を生成し、
前記ライセンス情報は、さらに、
前記電子署名の生成処理において用いられた、前記顧客名及び前記有効期限の少なくとも一方と、前記電子署名とを含み、
前記第2プロセッサは、
前記電子署名を用いて、前記ライセンス情報に含まれる、前記顧客名及び前記有効期限の少なくとも一方の正当性を判定する
ことを特徴とする請求項1から3のいずれか一つに記載の認証方法。
【請求項5】
前記サーバ装置は、
前記ライセンス情報が有効か否かを管理し、
前記第2プロセッサは、
前記顧客装置がオンラインのとき、前記開発者装置から受信した前記ライセンスファイルが有効か否かを問い合わせる
ことを特徴とする請求項1から4のいずれか一つに記載の認証方法。
【請求項6】
前記暗号化アプリケーションは、
前記暗号化アプリケーションを復号する復号ソフトと共に顧客に配布され、
前記第2プロセッサは、
前記暗号化アプリケーションを実行するとき、前記復号ソフトを動的に呼び出すことにより、前記取り出し処理と、前記復号処理とを含む処理を実行する
ことを特徴とする請求項1から5のいずれか一つに記載の認証方法。
【請求項7】
前記ライセンス情報は、さらに、
前記アプリケーションに含まれる機能を限定する機能情報を含み、
前記第2プロセッサは、
前記開発者装置から受信した前記ライセンス情報に含まれる前記機能情報に応じて、前記復号したアプリケーションが有する機能の実行を限定する
ことを特徴とする請求項1から6のいずれか一つに記載の認証方法。
【請求項8】
開発者装置と、サーバ装置と、顧客装置とがネットワークを介して接続される認証システムにおいて、
前記開発者装置は、
顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成する作成部と、
前記アプリケーションの有効期限と、前記共通鍵を難読化した難読化共通鍵とを含むライセンス情報を前記サーバ装置から受信する第1受信部と、
前記ライセンス情報を前記顧客装置に送信する第1送信部と、
を備え、
前記顧客装置は、
前記ライセンス情報を前記開発者装置から受信する第2受信部と、
前記顧客装置がオンラインのとき、前記サーバ装置で管理する第1時刻を取得し、前記顧客装置がオフラインのとき、前記顧客装置で管理する第2時刻を取得する取得部と、
前記取得部が取得した、前記第1時刻または前記第2時刻が前記ライセンス情報に含まれる前記有効期限を満たすとき、前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出す取出部と、
前記共通鍵を用いて前記暗号化アプリケーションを復号する復号部と、
を備え、
前記サーバ装置は、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行する生成部と、
前記ライセンス情報を前記開発者装置に送信する処理と、前記顧客装置から前記第1時刻の取得要求があったとき、前記第1時刻を前記顧客装置に送信する処理と、を実行する第2送信部と、
を備えることを特徴とする認証システム。
【請求項9】
開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、
前記開発者装置は、
顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成する作成部と、
前記共通鍵を難読化した難読化共通鍵を含むライセンス情報を前記サーバ装置から受信する第1受信部と、
前記ライセンス情報を前記顧客装置に送信する第1送信部と、
を備え、
前記顧客装置は、
前記ライセンス情報を前記開発者装置から受信する第2受信部と、
前記顧客装置がオンラインのとき、前記アプリケーションの使用頻度及び使用地域の少なくとも一方を前記サーバ装置に通知する通知部と、
前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出す取出部と、
前記共通鍵を用いて前記暗号化アプリケーションを復号する復号部と、
を備え、
前記サーバ装置は、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行する生成部と、
前記ライセンス情報を前記開発者装置に送信する第2送信部と、
前記顧客装置から前記アプリケーションの使用頻度及び使用地域の少なくとも一方の通知を受信する第3受信部と、
を備えることを特徴とする認証システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムに
関する。
【背景技術】
【0002】
例えばセキュリティーソフトウェアや文書編集ソフトウェア等の各種アプリケーションソフトウェアは、かつては個別に店舗で販売されていたが、インターネットの普及とその通信速度及び容量等の向上に伴い、ネットを介してダウンロードされて提供されることが主流となってきた。しかしながら、購買したソフトウェアが特定の装置のみで利用されることを担保するために、プロダクトキー等の購買したソフトウェアに1対1に対応した固有情報が与えられることについては変わらない。すなわち、その固有情報が、利用装置に接続可能な特定のハードウェア(典型的にはUSB(USBドングル))で提供されている。
【0003】
また、昨今のように、各種アプリケーションソフトウェアがダウンロードされて提供される場合には、購買されたアプリケーションのグレードや使用できる期間等の使用条件をいわゆるライセンス情報として提供して、柔軟性のあるアプリケーションの提供が可能になってきた。
【0004】
関連する技術として、特許文献1がある。当該文献においては、パッケージソフトウェアと、ライセンス情報とその電子署名からなるライセンスファイルとがネットを介して、ソフトウェアメーカーからユーザーに提供され、一方、ライセンス情報が格納されたUSBドングルで提供されている。そして、電子署名に基づいて、ネットを介して提供されたライセンス情報とUSBドングル内のライセンス情報を照合し、認証が成立すれば、当該ユーザーは、提供されたパッケージソフトウェアをライセンス情報が示す範囲内で使用することが可能となる。ここで、特に、特許文献1においては、ライセンス情報がXMLで記述されることと、そのライセンス情報に電子署名が付されることが特徴となっている(特許文献1参照)。
【0005】
また、関連する他の技術として、特許文献2がある。当該文献においては、ハードウェアとして、ソフトウェア提供サーバ(130)、ユーザー端末機(110)、及びドングル形態のトークン(120)が記述され、ユーザーが正式に特定ソフトウェアを購入した場合にはトークン(120)が提供され、ユーザーは、そのトークン(120)を自己の端末機(110)に接続した状態で、サーバ(130)から当該ソフトウェアをダウンロードする。その際、サーバ(130)は、ユーザー端末機(110)にトークン(120)が接続されているか否かを検証し、接続されている場合には、自身とトークン(120)との間で相互認証されるか否かを確認する。相互認証が確認された場合には、サーバ(130)は、当該ソフトウェアの使用を許可するためのセキュレットを暗号化してトークン(120)に転送する。
【0006】
そして、ユーザーが購入したソフトウェアをユーザー端末機(110)にて使用する際には、まず、ユーザー端末機(110)が、購入したソフトウェアを駆動するためのセキュレットが、接続されたトークン(120)内に存在するか否かを確認する。そして、存在する場合、ユーザー端末機(110)は、トークン(120)に、セキュレットを実行させるための実行命令を転送する。実行命令を受け取ったトークン(120)は、該当するセキュレットをメモリに読み込んできて実行し、その実行結果をユーザー端末機(110)に返送する。ユーザー端末機(110)に実行結果が返されると、ユーザー端末機(110)は、当該ソフトウェアの実行を開始する(特許文献2参照)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−146279号公報
【特許文献2】特表2012−514277号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、従来技術のアプリケーションソフトウェアの提供の手続きにおいては、ドングルや紙面等の非デジタル情報媒体をその一部に介しているのが実情である。
【0009】
本発明は上述のような事情から為されたものであり、本発明の目的は、ドングルや紙面等の非デジタル情報媒体を介すことなく、電子通信のみのやりとりでも、高度なセキュリティが担保できるアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムを提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明の認証方法は、開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置の第1プロセッサと、前記顧客装置の第2プロセッサと、前記サーバ装置の第3プロセッサとによって実行される認証方法であって、前記第1プロセッサは、顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成し、
前記アプリケーションの有効期限と、前記共通鍵を難読化した難読化共通鍵とを含むライセンス情報を前記サーバ装置から受信し、前
記ライセンス情報を前記顧客装置に送信し、前記第2プロセッサは、
前記ライセンス情報を前記開発者装置から受信し、前記顧客装置がオンラインのとき、前記サーバ装置で管理する第1時刻を取得し、前記顧客装置がオフラインのとき、前記顧客装置で管理する第2時刻を取得し、前記取得処理で取得した、前記第1時刻または前記第2時刻が前記ライセンス情報に含まれる前記有効期限を満たすとき、
前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出し、前記共通鍵を用いて前記暗号化アプリケーションを復号し、前記第3プロセッサは、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行し、前記ライセンス情報を前記開発者装置に送信し、前記顧客装置から前記第1時刻の取得要求があったとき、前記第1時刻を前記顧客装置に送信することを要旨とする。
【0011】
また、上記目的を達成するため、本発明の認証方法は、開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置の第1プロセッサと、前記顧客装置の第2プロセッサと、前記サーバ装置の第3プロセッサとによって実行される認証方法であって、前記第1プロセッサは、顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成し、
前記共通鍵を難読化した難読化共通鍵を含むライセンス情報を前記サーバ装置から受信し、前
記ライセンス情報を前記顧客装置に送信し、前記第2プロセッサは、
前記ライセンス情報を前記開発者装置から受信し、前記顧客装置がオンラインのとき、前記アプリケーションの使用頻度及び使用地域の少なくとも一方を前記サーバ装置に通知し、
前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出し、前記共通鍵を用いて前記暗号化アプリケーションを復号し、前記第3プロセッサは、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行し、前記ライセンス情報を前記開発者装置に送信し、前記顧客装置か
ら前記アプリケーションの使用頻度及び使用地域の少なくとも一方の通知を受信することを要旨とする。
【0012】
ここで、上記2項それぞれにおいて、前記第
3プロセッサは、顧客名及び有効期限の少なくとも一方を含む情報を用いて、前記共通鍵を難読化した難読化共通鍵を生成し、前記ライセンス情報は、さらに、前記難読化共通鍵の生成処理において用いられた、前記顧客名及び前記有効期限の少なくとも一方を含み、前記第2プロセッサは、前記難読化共通鍵の生成処理において用いた、前記顧客名及び前記有効期限の少なくとも一方を含む情報を用いて、前記難読化共通鍵から前記共通鍵を取り出すことが好適である。
【0013】
また、上記3項それぞれにおいて、前記第
3プロセッサは、顧客名及び有効期限の少なくとも一方を含む情報を用いて、電子署名を生成し、前記ライセンス情報は、さらに、前記電子署名の生成処理において用いられた、前記顧客名及び前記有効期限の少なくとも一方と、前記電子署名とを含み、前記第2プロセッサは、前記電子署名を用いて、前記ライセンス情報に含まれる、前記顧客名及び前記有効期限の少なくとも一方の正当性を判定することが好適である。
【0014】
また、上記4項それぞれにおいて、前記サーバ装置は、前記ライセンス
情報が有効か否かを管理し、前記第2プロセッサは、前記顧客装置がオンラインのとき、前記開発者装置から受信した前記ライセンスファイルが有効か否かを問い合わせることが好適である。
【0015】
また、上記5項それぞれにおいて、前記暗号化アプリケーションは、前記暗号化アプリケーションを復号する復号ソフトと共に顧客に配布され、前記第2プロセッサは、前記暗号化アプリケーションを実行するとき、前記復号ソフトを動的に呼び出すことにより、前記取り出し処理と、前記復号処理とを含む処理を実行することが好適である。
また、上記6項それぞれにおいて、前記ライセンス情報は、さらに、前記アプリケーションに含まれる機能を限定する機能情報を含み、前記第2プロセッサは、前記開発者装置から受信した前記ライセンス
情報に含まれる前記機能情報に応じて、前記復号したアプリケーションが有する機能の実行を限定することが好適である。
【0016】
また、上記目的を達成するため、本発明の認証システムは、開発者装置と、サーバ装置と、顧客装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置は、顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成する作成部と、
前記アプリケーションの有効期限と、前記共通鍵を難読化した難読化共通鍵とを含むライセンス情報を前記サーバ装置から受信する第1受信部と、前
記ライセンス情報を前記顧客装置に送信する
第1送信部と、を備え、前記顧客装置は、
前記ライセンス情報を前記開発者装置から受信する第2受信部と、前記顧客装置がオンラインのとき、前記サーバ装置で管理する第1時刻を取得し、前記顧客装置がオフラインのとき、前記顧客装置で管理する第2時刻を取得する取得部と、前記取得部が取得した、前記第1時刻または前記第2時刻が前記ライセンス情報に含まれる前記有効期限を満たすとき、
前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出す取出部と、前記共通鍵を用いて前記暗号化アプリケーションを復号する復号部と、を備え、前記サーバ装置は、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行する生成部と、前記ライセンス情報を前記開発者装置に送信する処理と、前記顧客装置から前記第1時刻の取得要求があったとき、前記第1時刻を前記顧客装置に送信する
処理と、を実行する第2送信部と、を備えることを要旨とする。
【0017】
また、上記目的を達成するため、本発明の認証システムは、開発者装置と、顧客装置と、サーバ装置とがネットワークを介して接続される認証システムにおいて、前記開発者装置は、顧客に配布する、アプリケーションを共通鍵で暗号化した暗号化アプリケーションを作成する作成部と、
前記共通鍵を難読化した難読化共通鍵を含むライセンス情報を前記サーバ装置から受信する第1受信部と、前
記ライセンス情報を前記顧客装置に送信する
第1送信部と、を備え、前記顧客装置は、
前記ライセンス情報を前記開発者装置から受信する第2受信部と、前記顧客装置がオンラインのとき、前記アプリケーションの使用頻度及び使用地域の少なくとも一方を前記サーバ装置に通知する通知部と、
前記ライセンス情報に含まれる前記難読化共通鍵から前記共通鍵を取り出す取出部と、前記共通鍵を用いて前記暗号化アプリケーションを復号する復号部と、を備え、前記サーバ装置は、
前記共通鍵を難読化した難読化共通鍵を生成する処理と、前記開発者装置から前記ライセンス情報の取得要求があったとき、前記ライセンス情報を生成する処理とを実行する生成部と、前記ライセンス情報を前記開発者装置に送信する第2送信部と、前記顧客装置か
ら前記アプリケーションの使用頻度及び使用地域の少なくとも一方の通知を受信する
第3受信部と、を備えることを要旨とする。
【発明の効果】
【0018】
本発明のアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムによれば、ライセンスの情報に、少なくとも顧客名の情報を含ませているので、ドングルや紙面等の非デジタル情報媒体を介すことなく、電子通信のみのやりとりでも、高度なセキュリティが担保できる。
【0019】
特に、ライセンスの情報に、アプリケーションソフトウェアを暗号化するための任意の共通鍵に対して、少なくとも顧客名の情報を施して変換させて得られた難読化された共通鍵の情報を含ませるようにしたので、ライセンスの情報の顧客名が、悪意のある第三者に書き変えられた場合、その難読化された共通鍵の情報に基づき、元の共通鍵を得ようとしても真正な共通鍵は得られないので、暗号化されたアプリケーションソフトウェアの復号化には成功しない。
【0020】
また、顧客の装置に送られた暗号化されたアプリケーションソフトウェアの実行時には、その認証に、ネットワークとのオンライン又はオフラインに応じた融通性のある処理を行うことができる。
【図面の簡単な説明】
【0021】
【
図1】本発明のアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムの実施の形態における顧客装置1、開発者装置2、及びライセンスサーバ3の相互間の手順の流れを示す図である。
【
図2】開発者装置2を所有する開発者が、ライセンスサーバ3及び開発者装置2に予め行っておく処理を説明するための図である。
【
図3】ライセンスサーバ3で作成されるプロダクトテーブルの例を示す図である。
【
図4】プロダクトファイルPFを受信した開発者装置2が、当該プロダクトファイルPFに基づいて行う処理を説明するための図である。
【
図5】ライセンスサーバ3で作成されるライセンステーブルの例を示す図である。
【
図6】顧客装置1における、暗号化後アプリケーションEAPの実行について説明するための図である。
【
図7】顧客装置1における、暗号化後アプリケーションEAPの実行について説明するための図である。
【
図8】本発明の実施の形態の前提たる技術的環境を示す図である。
【発明を実施するための形態】
【0022】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。
本発明の実施の形態においては、アプリケーションソフトウェアを提供する者(アプリケーションプロバイダー)を「開発者」、アプリケーションソフトウェアの提供を受ける者を「顧客」と称することとするが、これらは典型的な呼称なだけであって、これらの呼称に本発明が限定を受けることはない。
【0023】
図8を参照して、本発明の実施の形態における技術的環境としては、顧客の操作する顧客装置1と、開発者が操作する開発者装置2と、ライセンスサーバ3とは、典型的には、インターネット4を介して相互に接続されている。なお、「ライセンスサーバ」という名称も、典型例であって、本発明を限定するものではない。本発明を解釈するにあたっては、その機能で判断するべきものである。
【0024】
顧客装置1、開発者装置2、及びライセンスサーバ3は、例えば、コンピュータ装置であり、制御装置(processor)、主記憶装置(RAM:Random Access Memory)、補助記憶装置(ハードディスク、フラッシュメモリ等)、入出力装置(キーボード、マウス、表示装置等)、通信装置、読取り装置等で構成される。顧客装置1、開発者装置2、及びライセンスサーバ3では、各種プログラムが、主記憶装置に展開されつつ、制御装置により処理される。また、各々の通信装置は、顧客装置1、開発者装置2、及びライセンスサーバ3を、他の装置と通信可能に接続させる。更に、顧客装置1、開発者装置2、及びライセンスサーバ3の各制御装置に、各種処理を実行させるプログラムは、外部記録媒体、例えば、SDメモリカード(SD Memory Card)、FD(Floppy Disk)、CD(Compact Disk)、DVD(Digital Versatile Disk)、BD(Blu-ray Disk:登録商標)、及びフラッシュメモリ等を介して、上記補助記憶媒体に格納される。
【0025】
図1は、本発明のアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムの実施の形態における顧客装置1、開発者装置2、及びライセンスサーバ3の相互間の手順の流れを示す図である。なお、当該図面において、上から下に向けて時系列となっている。
図2は、開発者装置2を所有する開発者が、ライセンスサーバ3及び開発者装置2に予め行っておく処理を説明するための図である。
【0026】
まず、
図2を参照し、開発者が、ライセンスサーバ3及び開発者装置2に予め行っておく処理を説明する。開発者は、ライセンスサーバ3に対しては、アプリケーションソフトウェアを共通鍵暗号化方式で暗号化するための共通鍵を難読化するためのアルゴリズムと、そのアルゴリズムに基づくプログラムを配布しておく。また、開発者は、開発者装置2に対しては、暗号化ツール(開発者装置2内では暗号化ツール21)を配布しておく。この暗号化ツールは、任意のアプリケーションソフトウェアを暗号化するためのプログラムと、復号化用ダイナミックリンクライブラリDLLとを含んでおり、その復号化用ダイナミックリンクライブラリDLLは、上述の共通鍵を難読化するためのアルゴリズムと、暗号化後のアプリケーションソフトウェアを復号化するためのプログラムとからなっている。
【0027】
次に、
図1を参照して、顧客が任意のアプリケーションソフトウェアを開発者から購入する手順を説明する。そこで、まず、顧客は、購入したいアプリケーションソフトウェアの開発者に対して、自己の顧客装置1により、少なくとも製品(プロダクト)名を指定して購入希望の旨(購入要求)を伝達する。顧客からの当該購入要求は開発者装置2に受け付けられ、次に、その開発者装置2は、そのプロダクト名を指定しつつ、ライセンスサーバ3に対して、プロダクトファイルPFを要求する。それに応答して、ライセンスサーバ3は、開発者装置2に対してプロダクトファイルPFを送信する。そのプロダクトファイルPFには、指定されたプロダクト名と、テキスト表示された任意の共通鍵が含まれる。この共通鍵は、上述のように、アプリケーションソフトウェアを共通鍵暗号化方式で暗号化するときに使用する鍵である。プロダクトファイルPFの例を下に示す。
--- product file ---
プロダクト名: PRODUCT0
共通鍵: 30DF54B681E2E94D4C21E3EC73459039EBCF379F19FED05CEA
B1CFB1A6CDAD9F
なお、プロダクトファイルPFは、顧客に配布するわけではなく開発者のみが使用するため、共通鍵としてこのように生の値をそのまま送ってもよいが、ライセンスサーバ3への不正アクセスを考慮して、公開鍵暗号化方式により難読化しておくことが好ましい。
【0028】
なお、
図1、
図2、及び
図8においては、説明の便宜上、一のライセンスサーバに対して開発者が一として記載されているが、無論現実には、一のライセンスサーバ3に対して、1つ又は複数のアプリケーションソフトウェアを開発する開発者が複数存在することは言うまでもない。かかる技術的環境においては、ライセンスサーバ3は、新たな開発者からプロダクトファイルPFの要求があってプロダクトファイルPFを返信するごとに、
図3に示すようなテーブルを作成して管理しておくことが好適である。
【0029】
図4は、プロダクトファイルPFを受信した開発者装置2が、当該プロダクトファイルPFに基づいて行う処理を説明するための図である。
開発者装置2には、
図1に示すように、暗号化前アプリケーションAPが格納されているが、
図2を参照して説明したように、開発者から予め暗号化ツール21が配布格納されている。そこで、まず、暗号化前アプリケーションAPについて説明すると、暗号化前アプリケーションAPは、
図4(b)に示すように、暗号化前プログラム、リソース、及びエントリーポイントからなり、エントリーポイントが、プログラムの始点を指し示している。
【0030】
図4(a)を参照して、プロダクトファイルPFを受信した開発者装置2は、その暗号化ツール21により、プロダクト名により指定された暗号化前アプリケーションAPを、プロダクトファイルPFに含まれる共通鍵を使用して暗号化処理する。この暗号化されたアプリケーションを(暗号化後アプリケーションEAP)は、復号化用ダイナミックリンクライブラリDLLと共に出力される。同図(c)は、暗号化後アプリケーションEAPを説明するための図である。同図に示すように、暗号化後アプリケーションEAPは、暗号化前アプリケーションAPの構成に対してスタブプログラムが加わる構成となっており、エントリーポイントがスタブプログラムの始点を指し示し、スタブプログラムがアプリケーションプログラムの始点を指し示すようになっている。また、スタブプログラムが復号化用ダイナミックリンクライブラリDLLを呼び出す構成となっている。
【0031】
このように、アプリケーションソフトウェアは暗号化されて顧客に提供されるため、バイナリデータに対してなされるような書き換えやその解析によるハッキングを防止することができる。なお、採用される共通鍵暗号化方式としては、AES(Advanced Encryption Standard)が典型であるが、その他の共通鍵暗号化方式でもよい。
【0032】
図1に戻り、開発者装置2において生成された暗号化後アプリケーションEAPと復号化用ダイナミックリンクライブラリDLLとは、購入要求に係る顧客の顧客装置1に配布される。
【0033】
次に、顧客装置1に暗号化後アプリケーションEAP及び復号化用ダイナミックリンクライブラリDLLを受け取った顧客は、その顧客装置1により、有効期限を指定しつつ、開発者に対して、暗号化後アプリケーションEAPを復号するためのライセンスを要求する。開発者装置2に当該顧客からライセンス要求を受け取った開発者は、その開発者装置2により、顧客名、プロダクト名、及び有効期限を指定しつつ、ライセンスサーバ3に対してライセンスファイル(ライセンスの情報)要求を行う。
【0034】
開発者装置2からライセンスファイル要求を受け取ったライセンスサーバ3は、開発者装置2に対してライセンスファイルLFを送信する。そのライセンスファイルLFには、プロダクト名、有効期限、顧客名、難読化された共通鍵、及び電子署名が含まれる。ライセンスサーバ3からライセンスファイルLFを受け取った開発者装置2は、そのライセンスファイルLFを顧客装置1にメール等で送信する。このとき、メール等の通信で送れる理由は、以下説明する難読化された共通鍵や電子署名を備えたからである。なお、顧客名と有効期限の両方を含ませるのではなく、顧客名の情報のみでもよい。
【0035】
まず、難読化された共通鍵について説明する。ライセンスファイルLFは顧客に配布されるため、共通鍵は秘匿される必要がある。また、顧客名や有効期限が第三者により故意に書き換えられ
た場合には、アプリケーションの暗号化の解除を不能にする必要がある。従って、本発明の実施の形態においては、ライセンスファイルLFに含ませる共通鍵を、生のテキストデータではなく、それに対して特定の処理を施すことにより、難読化する。その特定の処理(
図2で説明した、共通鍵を難読化するためのアルゴリズム)としては、難読化前の共通鍵と、顧客名とのデータ間、又は、難読化前の共通鍵と、顧客名及び有効期限とのデータ間で排他的論理和(Exclusive OR)をとり、そのあとSBOX(substitution box)などのルックアップテーブルを通したり、順番を入れ替えたりする。なお、排他的論理和ではなく、それらのバイト値の加減算でもよい。また、難読化前の共通鍵を別の共通鍵で暗号化してもよい。そのときには、その別の共通鍵は、復号化用ダイナミックリンクライブラリDLLに含ませて顧客装置1に送っておくことができる。また、難読化前の共通鍵を開発者装置2に固有の秘密鍵で暗号化し、対応する公開鍵をもって顧客装置1で復号化させるようにしてもよい。そのときにも、その公開鍵は、復号化用ダイナミックリンクライブラリDLLに含ませて送ることができる
。
【0036】
次に、電子署名について説明する。ここでの電子署名は、顧客名と有効期限の情報に基づくものである。従って、かかる電子署名により、顧客名と有効期限の情報の改ざんを検出することができる。電子署名の具体的作成においては、顧客名と有効期限の情報をSBOXなどのルックアップテーブルやSHA(Secure Hash Algorithm)などのハッシュ関数に通し、ライセンスファイルLFに記載されている値との一致をとることで行える。また、RSAやDSA(Digital Signature Algorithm)などの一般的な電子署名アルゴリズムを使用してもよい。
【0037】
通信途中等で不正にライセンスファイルLFを取得した者が、その顧客名を書き変えてアプリケーションソフトウェアを使用しようとした場合、上述のように、顧客名及び有効期限についての電子署名を採用したので、後述の認証の際に、認証されない。また、上述のように、共通鍵に対して、少なくとも顧客名の情報を組み入れて、難読化(書き変え)をしているので、ライセンスファイルLF内の顧客名の情報が書き変えられた場合、その書き変えられた情報に基づいて元の共通鍵を復元しようとしても、正しい共通鍵は復元できないので、暗号化後アプリケーションEAPの復号化は不可能となる。
【0038】
ライセンスファイルLFの例を下に示す。
--- license file ---
プロダクト名: PRODUCT0
有効期限: 2016/12/31
顧客名: AB** Corporation
難読化された共通鍵: 374E7EB28CFE0F38B0E174913A2D3277260BC5A9B1035
C098B39FF4C9C17B30C
電子署名: 7912A040D1CE675FCC0977D4968A24ECDC4F236A8FD8
C55618830FD3ADA1E938E38CBC3D5CB7581743316FC9C
BC75AD4711A67DD372FBA952E8830E147B4534
【0039】
なお、ライセンスサーバ3は、開発者からライセンスファイルLFの要求を受けるごとに、
図5に示すように、顧客とライセンスファイルLFとの対応関係をテーブルとして確保しておくことが好適である。ここで、テーブル内の“利用停止フラグ”は、後述する認証の際に、送られてきたプロダクト名及び顧客名の情報に基づき、対応するアプリケーションソフトウェアの暗号化を解除してもよいか否かを示す情報である。なお、難読化された共通鍵及び電子署名の項目は、ライセンスの再発行が想定されないのであれば、省略できる。
【0040】
次に、顧客が開発者から購入した、暗号化されたアプリケーションソフトウェアの、顧客装置1における実行について説明する。なお、顧客は、暗号化後アプリケーションEAPが格納された顧客装置1内のフォルダと同じフォルダにライセンスファイルLFを格納しておくことで、その暗号化後アプリケーションEAPを復号化して実行することができる、という構成にしておくことが好適である。
【0041】
図6及び
図7は、顧客装置1における、暗号化後アプリケーションEAPの実行について説明するための図である。
図6(a)は、
図4(c)に示した構成に、ライセンスファイルLFを加えて、実行時の説明のために書き変えた図である。
図6(b)及び
図7は、それぞれ、スタブプログラム及復号化用ダイナミックリンクライブラリDLLの処理手順を示すフローチャートである。
【0042】
暗号化後アプリケーションEAPに対して起動が掛かると、まず、エントリーポイントで指し示されたスタブプログラムが走り始める。
図6(b)を参照して、スタブプログラムは、復号化用ダイナミックリンクライブラリDLLを呼び出す(ステップS11)。
図7を参照して、呼び出された復号化用ダイナミックリンクライブラリDLLは(ステップS21において肯定判定)、ライセンスファイルLFの認証を行う(ステップS22)。
【0043】
具体的には、ライセンスファイルLFに含まれる電子署名に基づき、顧客名と有効期限の正当性(真正)を判定する。電子署名作成後に、ライセンスファイルLFの顧客名又は有効期限が改ざんされた場合には、電子署名の判定が否定される。加えて、ネットワークとオンラインで接続されている場合には、ライセンスサーバ3に対して、ライセンスファイルLFの有効性を問い合わせる。ライセンスサーバ3は、自身のライセンステーブル内の“利用停止フラグ”のON/OFFをみることにより、返答を行う。また、有効期限内か否かの判定においては、ネットワークとオフラインの場合には、オフラインでも可能なように、顧客装置1自身の時刻を参照することにより有効性を判定する。一方、オンラインの場合には、ライセンスサーバ3の時刻を参照して行うことにより、より強固な正当性の判定を実現する。また、開発者が顧客の不正な使用を検出できる手段として、オンラインの場合には、当該アプリケーションソフトウェアの使用状況や使用地域をライセンスサーバ3に通知するようにする。
【0044】
ステップS22におけるライセンスファイルLFの認証の結果、認証が否定的であった場合(ステップS23において否定判定)には、エラー処理を介して、暗号化後アプリケーションEAPの復号化が許可されない旨が通知される(ステップS24)。一方、認証が肯定的であった場合(ステップS23において肯定判定)には、復号化用ダイナミックリンクライブラリDLLは、ライセンスファイルLFから難読化された共通鍵を読み出し、難読化の処理と逆の処理をその難読化された共通鍵に施すことにより、元の共通鍵を復元する(ステップS25)。復号化用ダイナミックリンクライブラリDLLは、その復元した元の共通鍵を用いて、暗号化後アプリケーションEAPを復号化する(ステップS26)。ここで、難読化の処理のアルゴリズムは第三者には不明であるので、ライセンスファイルLF内の難読化された共通鍵の情報が不正に搾取されても、元の共通鍵を復元することは困難である。また、その難読化の処理には、正規の顧客名及び有効期限の情報が組み込まれているので、その後、ライセンスファイルLFのそれらの情報が書き変えられても、上記復号化の段階で復号できないか、又は復号化できても復号化後のアプリケーションは正常に動作しない。なお、電子署名が付されている場合には、その認証が成功すれば、顧客名及び有効期限の情報は不正に書き変えられていないと判定でき、上述の難読化された共通鍵の復元処理においても、元の共通鍵が復元できると考えられるが、何らかの理由で、電子署名の判定を通過してしまった場合に、このように二重に判定することにより、ライセンスファイルLF内の情報の保護が強固となる。
【0045】
図6(b)のスタブプログラムの処理に戻り、復号化用ダイナミックリンクライブラリDLLによる復号化処理が終了すると(ステップS12において肯定判定)、スタブプログラムは、制御を復号化されたプログラムの先頭にジャンプさせることにより、アプリケーションソフトウェアを実行させる(ステップS13)。
【0046】
なお、1つのアプリケーションに、選択可能な複数の機能レベルが設定できる場合、顧客が購入要求時に指定した機能レベルで当該アプリケーションの機能を予め限定したものを、顧客に配布するようにしてもよいが、外からの指定に基づき機能レベルの自動設定が可能な1つのアプリケーションを各顧客に配布し、アプリケーションプログラムが実行時に顧客に応じてその機能レベルの自動設定を行うようにしてもよい。そのときには、顧客は、購入要求時又はライセンス要求時にその機能レベルの情報も提供し、ライセンスサーバ3は、ライセンスファイルLFにその機能レベルの情報も加えておき、アプリケーションプログラムは、復号化用ダイナミックリンクライブラリDLLを介してその情報を取得したり、又はAPI(Application Programing Interface)経由で取得したりすることもできる。
【0047】
なお、上述のように暗号化後プログラムの復号化処理を復号化用ダイナミックリンクライブラリDLLに行わせたのは、C言語で開発できるという利点があるためである。スタブプログラムによっても可能ではあるが、C言語を使用できないためその分メンテナンスコストは上がってしまう。
【0048】
なお、上述の実施の形態においては、暗号化されたアプリケーションソフトウェアは、ネットワークを介して開発者から顧客に渡されているが、CD等の媒体を介してもよい。
【0049】
以上のように、アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムにおける実施形態によれば、ライセンスの情報に、少なくとも顧客名の情報を含ませているので、ドングルや紙面等の非デジタル情報媒体を介すことなく、電子通信のみのやりとりでも、高度なセキュリティが担保できる。
【0050】
特に、ライセンスファイルLFに、アプリケーションソフトウェアを暗号化するための共通鍵に対して、少なくとも顧客名の情報を施して変換させて得られた難読化された共通鍵の情報を含ませるようにしたので、ライセンスファイルLFの顧客名が、悪意のある第三者に書き変えられた場合、その難読化された共通鍵の情報に基づき、元の共通鍵を得ようとしても真正な共通鍵は得られないので、暗号化されたアプリケーションソフトウェアの復号化には成功しない。
【0051】
また、顧客装置1に送られた暗号化されたアプリケーションソフトウェアの実行時には、その認証に、ネットワーク4とのオンライン又はオフラインに応じた融通性のある処理を行うことができる。
【産業上の利用可能性】
【0052】
本発明のアプリケーションソフトウェアの提供及び認証方法並びにそのためのシステムは、例えば、任意の者が自身のパーソナルコンピュータで使用したい各種アプリケーションソフトウェアをその開発者のホームページや販売サイトから入手する場合の技術である。
【符号の説明】
【0053】
1 顧客装置
2 開発者装置
21 暗号化ツール
3 ライセンスサーバ
4 インターネット
PF プロダクトファイル
LF ライセンスファイル
AP 暗号化前アプリケーション
EAP 暗号化後アプリケーション
DLL 復号化用ダイナミックリンクライブラリ