以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における融合機のソフトウェア構成例を説明するための図である。図1の融合機101は、画像形成装置の一例であり、種々のハードウェア111と、種々のソフトウェア112と、融合機起動部113により構成される。
融合機101のハードウェア111としては、撮像部121と、印刷部122と、その他のハードウェア123が存在する。撮像部121は、読取原稿から画像(画像データ)を読み取るためのハードウェアである。印刷部122は、画像(画像データ)を印刷用紙に印刷するためのハードウェアである。
融合機101のソフトウェア112としては、種々のアプリケーション131と、種々のプラットフォーム132等が存在する。
アプリケーション131としては、標準アプリ141、SDKアプリケーションサービス(SAS)142、アクティベーションサービス143、インストールサービス144、CSDKアプリ145、JSKDアプリ146、及びJSDKプラットフォーム147等が存在する。
標準アプリ141は、融合機101に標準的に(出荷時に予め)実装されている各種アプリケーションの集合であり、例えば、コピー機能、プリンタ機能、スキャナ機能、及びファクシミリ機能等、融合機101の基本的な機能を実現するためのアプリケーションによって構成される。
CSDKアプリ145、及びJSKDアプリ146は、専用のSDK(ソフトウェア開発キット)を使用して開発されたアプリケーションである。すなわち、融合機101には、その出荷後に専用のSDKを使用して新たにアプリケーションを追加することができる。SDKを使用して開発されたアプリケーション131を本実施の形態ではSDKアプリという。専用のSDKとしては、C言語でアプリケーション131を開発するための「CSDK」や、Java(登録商標)言語でアプリケーション131を開発するための「JSDK」が提供される。CSDKを使用して開発したアプリケーション131を「CSDKアプリ」(CSDKアプリ145)という。また、JSDKを使用して開発したアプリケーション131を「JSDKアプリ」(JSKDアプリ146)という。
JSDKプラットフォーム147は、Java(登録商標)言語で記述されたJSDKアプリ146に対して動作環境を提供するソフトウェアであり、例えば、Java(登録商標)仮想マシン等を含む。
SAS142は、SDKアプリの起動制御,起動解除制御,インストール制御,アンインストール制御,アップデート制御等を行うソフトウェアである。すなわち、従来、Windows(登録商標)アプリケーション等においては、インストーラは、各アプリケーションに付随したものであった。しかし、融合機101では、各アプリケーションのインストール及びアンインストール等は、SAS142によって統合的に行われる。アプリケーションのインストール及びアンインストール等がSAS142によって統合されていることにより、ユーザは、アプリケーションごとに異なるインストール作業を要求されることはなく、インストール作業に対する作業負担が軽減される。
アクティベーションサービス143は、SAS142の制御のもと、SDKアプリの起動の許否判定を行うソフトウェアである。詳細については後述するが、アクティベーションサービス143は、ネットワークを介して入手されるアクティベーションキーと呼ばれるデータに基づいて許否判定を行う。
インストールサービス144は、SAS142の制御のもと、SDKアプリのインストール処理を行うソフトウェアである。インストールサービス144は、インストール処理において、SDKアプリの正当性を判定する。ここでいう正当性とは、SDKアプリが改竄されていないこと、許可された範囲を超えて利用されていない(すなわち、不正利用されていない)ことをいう。
プラットフォーム132としては、コントロールサービス151及びOS136等が存在する。
コントロールサービス151は、各種のハードウェアリソース等を制御するためのサービスを上位アプリケーション等に対して提供するソフトウェアモジュール群であり、例えば、ネットワーク通信に関するサービスを提供するためのプロセスとして起動されるネットワークコントロールサービス(NCS)161等を含む。
OS136は、UNIX(登録商標)等のいわゆるOSであり、上記各種ソフトウェアをプロセス単位で並列的に起動する。
アプリケーション131とプラットフォーム132との間には、両者の仲介を行うソフトウェア112として、仮想アプリケーションサービス(VAS)135が存在する。VAS135は、アプリケーション131をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム132をサーバとするクライアントプロセスとして動作する。VAS135は、アプリケーション131から見てプラットフォーム132を隠蔽するラッピング機能を備え、プラットフォーム132のバージョンアップによるバージョン差を吸収する役割等を担う。
融合機起動部113は、融合機101の電源投入時に最初に実行される。これにより、UNIX(登録商標)等のOS136が起動され、アプリケーション131やプラットフォーム132が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。
図2は、本発明の実施の形態における融合機のハードウェア構成例を示す図である。融合機101のハードウェア111としては、コントローラ201と、オペレーションパネル202と、ファクシミリコントロールユニット(FCU)203と、撮像部121と、印刷部122が存在する。
コントローラ201は、CPU211、ASIC212、NB221、SB222、MEM−P231、MEM−C232、HDD(ハードディスクドライブ)233、メモリカードスロット234、NIC(ネットワークインタフェースコントローラ)241、USBデバイス242、IEEE1394デバイス243、セントロニクスデバイス244により構成される。
CPU211は、種々の情報処理用のICである。ASIC212は、種々の画像処理用のICである。NB221は、コントローラ201のノースブリッジである。SB222は、コントローラ201のサウスブリッジである。MEM−P231は、融合機101のシステムメモリである。MEM−C232は、融合機101のローカルメモリである。HDD233は、融合機101のストレージである。メモリカードスロット234は、携帯可能な記録媒体の一例であるメモリカード235をセットするためのスロットである。NIC241は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス242は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス243は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス244は、セントロニクス仕様の接続端子を提供するためのデバイスである。
オペレーションパネル202は、オペレータが融合機101に入力を行うためのハードウェア(操作部)であると共に、オペレータが融合機101から出力を得るためのハードウェア(表示部)である。
(融合機起動部)
図1の融合機起動部113について説明する。
融合機起動部113は、図3のように、メモリモニタ部501と、プログラム起動部502により構成される。
図1の融合機101の電源を投入すると、メモリモニタ部501を構成するBIOSとブートローダが起動されて、これにより、UNIX(登録商標)等のOSが起動される。続いて、プログラム起動部502を構成する起動処理用プログラムが起動されて、これにより、アプリケーション131やプラットフォーム132が適宜起動される。なお、UNIX(登録商標)が起動される場合には、UNIX(登録商標)のカーネルが起動され、ルートファイルシステムが展開され、アプリケーション131やプラットフォーム132に係るファイルシステムがルートファイルシステムにマウントされることになる。
(メモリカード)
図2のメモリカード用スロット234とメモリカード235について説明する。
メモリカード用スロット234は、アプリケーション131やプラットフォーム132等のプログラムが記憶されたメモリカード235をセット(挿入)するためのスロットである。図1の融合機101においては、アプリケーション131やプラットフォーム132等のプログラムは、メモリカード用スロット234にセットされたメモリカード235等に蓄積されており、メモリカード用スロット234にセットされたメモリカード235等から再生されて、MEM−P231やMEM−C232に起動されることになる。
メモリカード235としては、フラッシュメモリカードの一種であるSD(Secure Digital)メモリカードを採用することにする。SDメモリカードを採用することで例えば、大容量のメモリを安価で利用できるというメリットを享受できる。なお、メモリカード用スロット234としては、SDメモリカード用スロットが採用される。
図1の融合機101には、図4のように、SDメモリカード用スロット601とSDメモリカード602(メモリカード用スロット234とメモリカード235に相当する)に係るソフトウェアとして、SDメモリカードアクセスドライバ(SDaccess)611と、SDメモリカードステータスドライバ(SDstates)612と、起動処理用プログラム613と、SDメモリカードチェックプログラム(SDcheck)614が存在する。
SDaccess611は、SDメモリカード602の挿入・抜出を検知する等、SDメモリカード602に対するアクセス制御を実行するドライバである。SDstates612は、SDメモリカード602の挿入・抜出・マウント・アンマウントに関する情報を管理するドライバである。起動処理用プログラム613は、図3のプログラム起動部502を構成するプログラムである。SDcheck614は、SDメモリカード602のマウント・アンマウントを実行するプログラムである。
SDメモリカード用スロット601にSDメモリカード602が挿入された場合、SDaccess611は、SDメモリカード602が挿入された事を検知(S1)すると共に、SDstates612にその事を通知(S2)する。これに応じて、SDstates612は、SDメモリカード602が挿入された旨の情報を管理することにすると共に、起動処理用プログラム613にその旨を通知(S3)する。これに応じて、起動処理用プログラム613は、SDメモリカード602のマウントを実行させるために、SDcheck614を起動(S4)させる。これに応じて、SDcheck614は、SDメモリカード602のマウントを実行(S5)すると共に、SDstates612にその事を通知(S6)する。これに応じて、SDstates612は、SDメモリカード602がマウントされた旨の情報を管理することにすると共に、起動処理用プログラム613等にその旨を通知(S7)する。
SDメモリカード用スロット601からSDメモリカード602が抜き出された場合、SDaccess611は、SDメモリカード602が抜き出された事を検知(S1)すると共に、SDstates612にその事を通知(S2)する。これに応じて、SDstates612は、SDメモリカード602が抜き出された旨の情報を管理することにすると共に、起動処理用プログラム613にその旨を通知(S3)する。これに応じて、起動処理用プログラム613は、SDメモリカード602のアンマウントを実行させるために、SDcheck614を起動(S4)させる。これに応じて、SDcheck614は、SDメモリカード602のアンマウントを実行(S5)すると共に、SDstates612にその事を通知(S6)する。これに応じて、SDstates612は、SDメモリカード602がアンマウントされた旨の情報を管理することにすると共に、起動処理用プログラム613等にその旨を通知(S7)する。
なお、SDメモリカードを採用することで、いわゆる活線挿抜が可能になるというメリットを享受できる。すなわち、SDメモリカード用スロット601にSDメモリカード602を挿入する操作と、SDメモリカード用スロット601からSDメモリカード602を抜き出す操作が、融合機101の起動後に実行可能になる。
(ライセンス管理)
以下、SDメモリカード602に記録されたアプリケーションのライセンス管理について説明する。本実施の形態では、便宜上、JSDKアプリ146及びJSDKプラットフォーム147のライセンス管理について説明する。但し、本実施の形態で説明するライセンス管理の仕組みは、これらのアプリケーションに限定されるものではなく、CSDKアプリ145等、他のアプリケーションに対しても有効である。
図5は、本発明の実施の形態におけるアプリケーションのライセンス管理の概要を説明するための図である。
図5に示されるように、SDメモリカード602によってソフトウェアの配布が行われる場合、本実施の形態では、当該アプリケーションごとにキーファイルと呼ばれるファイルが当該SDメモリカード602に記録される。キーファイルは、アプリケーションの改竄や不正利用(不正コピーや許可されていない融合機101での利用)を検知するために必要となる情報が格納されたファイルであり、格納されている情報の構成は、アプリケーションごとに同じであってもよいし、異なっていてもよい。本実施の形態では、異なる例について示す。
本実施の形態では、SDメモリカード602に、JSDKプラットフォーム147と、JSDKプラットフォーム147上で動作するJSDKアプリ146が記録されている例が示されている。キーファイル147kは、JSDKプラットフォーム147に対応するキーファイルであり、JSDKプラットフォーム147の実行コードのハッシュ値とSDメモリカード602の固有番号(以下「SDカード番号」という。)とが暗号化されて格納されている。SDカード番号は、各SDメモリカード602の所定の領域に参照可能なように記録されている。キーファイル146kは、JSDKアプリ146に対応するキーファイルであり、JSDKアプリ146の実行コードのハッシュ値と当該JSDKアプリ146の使用が許可される融合機101の機体番号とが暗号化されて格納されている。機体番号は、融合機101の機体ごとに固有の番号であり、各融合機101の所定の記録媒体に、参照可能なように記録されている。
JSDKプラットフォー147の改竄検知は、キーファイル147kに格納されているハッシュ値(以下「ハッシュ値A」という。)と、JSDKプラットフォーム147の実行コードより算出されるハッシュ値(以下「ハッシュ値B」という。)とを比較することにより行われる(S1)。すなわち、JSDKプラットフォーム147の改竄が行われた場合、ハッシュ値Aとハッシュ値Bとが一致しないため、JSDKプラットフォーム147の改竄を検知することができる。
JSDKプラットフォーム147のコピーの検知は、キーファイル147kに格納されているSDカード番号と、SDメモリカード602のSDカード番号とを比較することにより行われる(S2)。すなわち、JSDKプラットフォーム147がキーファイル147kと共に他のSDメモリカードにコピーされた場合、当該他のSDメモリカードのSDカード番号と、キーファイル147kに記録されているSDカード番号とが一致しないため、JSDKプラットフォーム147のコピーを検知することができる。
JSDKプラットフォーム147のインストール時や起動時等において、その改竄又はコピーが検知された場合に、当該インストール又は起動を中止することにより、改竄又は不正コピーされたJSDKプラットフォーム147のインストール又は起動を防止することができる。
JSDKアプリ146の改竄検知もJSDKプラットフォーム147と同じ方法により行われる。すなわち、キーファイル146kに格納されているハッシュ値と、JSDKアプリ146の実行コードより算出されるハッシュ値とを比較することにより行われる(S3)。
JSDKプラットフォーム147の不正利用の検知は、キーファイル147kに格納されている機体番号と、インストール又は起動対象となる融合機101の機体番号とを比較することにより行われる(S4)。すなわち、SDメモリカード602が、利用が許可されていない融合機101に差し込まれた場合、キーファイル146kより取得される機体番号と、当該融合機101の機体番号とが一致しないため、不正利用を検知することができる。
JSDKアプリ146のインストール時や起動時等において、その改竄又は不正利用が検知された場合に、当該インストール又は起動を中止することにより、改竄又は不正利用に係るJSDKアプリ146のインストール又は起動を防止することができる。
なお、JSDKアプリ146がSDカード番号との紐付けが行われていないのは、JSDKアプリ146は、JSDKプラットフォーム147上で動作するといった依存関係による。すなわち、JSDKアプリ146を不正コピーして動作させるためには、JSDKプラットフォーム147も不正コピーを行う必要がある。しかし、JSDKプラットフォーム147は、SDカード番号との紐付けが行われているため、異なるSDメモリカード602にコピーされた場合、起動が許可されない。そして、JSDKアプリ146は、JSDKプラットフォーム147が起動していなければ起動できない。したがって、間接的又は実質的に、JSDKアプリ146の不正コピーは防止されるのである。但し、JSDKアプリ146についても、SDカード番号との紐付けによって、単独で不正コピーの検知を可能としてもよい。この場合、キーファイル146kにもSDカード番号を格納しておき、JSDKアプリ146のインストール又は起動時に、キーファイル146kに格納されているSDカード番号とSDメモリカード602のSDカード番号とを比較するようにすればよい。
ところで、本実施の形態では、ネットワークを介したアプリケーション(JSDKプラットフォーム147及びJSDKアプリ146等)のライセンスの管理機能を実現するために、更にアクティベーションキー(Activation Key)301が用いられる。アクティベーションキー301は、使用するアプリケーションのプロダクトIDや当該アプリケーションを使用する機器(融合機101)の機体番号等を添えて申請することにより配布される。なお、図5では、アクティベーションキー301がSDメモリカード602内に保存されている例が示されているが、アクティベーションキー301は必ずしもライセンス管理の対象となるアプリケーションと同一のSDメモリカード602内に保存されている必要はなく、その保存場所は、運用形態に応じて異なる。例えば、当該アプリケーションをインストール又は実行する融合機101内に保存されていてもよいし、当該融合機101が通信可能なコンピュータに保存されていてもよい。すなわち、アクティベーションキー301は、アプリケーションがSDメモリカード602によって配布される当初より当該アプリケーションと共にSDメモリカード602に記録されて配布される必要はない。むしろ、当該ウェアのインストール後(前でもよい)に配布されるものである。また、図5では、一つのアクティベーションキー301が、JSDKプラットフォーム147及びJSDKアプリ146の双方に対応している例が示されているが、キーファイルと同様、アクティベーションキー301についても、アプリケーションごとに対応させてもよい。
アクティベーションキー301は、例えば、以下の情報を格納するファイルとして実装される。図6は、本発明の実施の形態におけるアクティベーションキーに含まれる情報の構成例を示す図である。図6において、アクティベーションキー301は、使用可能なアプリケーション情報、使用可能な機器(融合機101)の機体番号、ライセンスサーバ情報、ライセンス方式、申請者情報、使用有効期限、使用開始期限、タイムスタンプ、及びSDカード番号等の情報を含む。
使用可能なアプリケーション情報は、使用可能なアプリケーションを識別するための情報であり、例えば、当該アクティベーションキー301によって使用が可能な(使用が許可される)アプリケーションのプロダクトID及び当該アプリケーションのハッシュ値が相当する。プロダクトIDは、ソウトウェアの製品名ごとに一意なIDである。
使用可能な機器の機体番号は、アプリケーションのインストール又は起動が許可される機器(融合機101)を識別するための情報であり、例えば、当該機器の機体番号が相当する。但し、当該機器のハードウェア構成から導出されるハッシュ値等であってもよい。本実施の形態では機体番号として説明する。複数の機器で使用が許可される場合、複数の機体番号が「使用可能な機器の機体番号」として格納される。
ライセンスサーバ情報は、ライセンスサーバのアドレス情報を示す。ライセンスサーバとは、融合機101に対してアクティベーションキー301を配布するコンピュータをいう。後述されるように、本実施の形態においてライセンスサーバはそのライセンス方式に応じて、キーエントリサーバ又はアクティベーション管理サーバが相当する。
ライセンス方式は、使用可能なアプリケーションごとのライセンス方式を識別する情報である。本実施の形態においてライセンス方式には、個人利用方式、ノードロックライセンス方式及びフローティングライセンス方式があるが、これらの詳細については後述する。
申請者情報は、当該アクティベーションキー301の申請者を識別する情報である。アクティベーションキー301の設定を変更するためのユーザ名及びパスワードを含む場合もある。
使用有効期限は、使用可能なアプリケーション単位の使用有効期限を示す。
使用開始期限は、使用可能なアプリケーション単位の使用開始期限を示す。
タイムスタンプは、当該アクティベーション301の申請が認証された時刻を示す電子署名である。
SDカード番号は、使用可能なアプリケーションをSDメモリカード602と紐付けする場合に、当該SDメモリカード602のSDカード番号を示す。
図6からも明らかなように、アクティベーションキー301によってライセンスが管理されるアプリケーションと当該アクティベーションキー301とは、当該ソウトウェアのプロダクトID及びハッシュ値によって紐付けられる(図5:r1、r2)。また、当該アクティベーションキー301と、当該ソウトウェアが使用可能な融合機101とは、機体番号によって紐付けられる(図5:r3)。
以下、アクティベーションキー301を用いたライセンス管理の運用方法について、実施の形態を分けて説明する。図7は、第一の実施の形態におけるアクティベーションキーの申請及び配布の手順を説明するための図である。第一の実施の形態は、ライセンス方式が個人利用方式の場合を説明する。個人利用方式は、各ユーザが個別にライセンス(アクティベーションキー301)を取得する場合に適したライセンス方式である。
図7において、融合機101は、SDメモリカード602によって配布されたアプリケーションを使用する機器である。また、キーエントリサーバ20は、当該アプリケーションの販売元において管理されているコンピュータであり、アクティベーションキー301の生成機能を備える。
アクティベーションキー301の申請時、ユーザは、融合機101のオペレーションパネル202に表示される申請画面より、アクティベーションキー301の申請を指示する。アクティベーションキー301の申請は、SDメモリカード602によってアプリケーションが配布され、当該アプリケーションが融合機101にインストールされた後に行われる。但し、インストール前であってもよい。
ユーザによる指示に応じ、融合機101は、申請情報をキーエントリサーバ20に送信する(S11)。但し、例えば、SDメモリカード602がSDメモリカード用スロット601に挿入された際に、融合機101が自動的に申請情報を送信してもよい。申請情報には、例えば、使用するアプリケーションのプロダクトID、当該融合機101の機体番号、ライセンス方式、申請者情報、当該アプリケーションの使用有効期限、使用開始期限、及びSDカード番号等が含まれる。但し、当該アプリケーションとSDメモリカード602との紐付けを行わない場合は、SDカード番号は不要である。申請情報を構成する各項目は、ユーザによって入力されてもよいし、融合機101が、挿入されたSDメモリカード602及び当該融合機101等より取得又は判別してもよい。
キーエントリサーバ20は、申請情報を受信すると当該申請情報に基づいてアクティベーションキー301を生成し、申請元の融合機101に返信する(S12)。アクティベーションキー301の生成において、使用可能なアプリケーション情報のプロダクトID、使用可能な機器(融合機101)の機体番号、ライセンス方式、申請者情報、使用有効期限、使用開始期限、及びSDカード番号は、申請情報より転記される。使用可能なアプリケーション情報におけるアプリケーションのハッシュ値は、当該アプリケーションの実行コードに基づいてキーエントリサーバ20において生成される。キーエントリサーバ20は、当該アプリケーションの販売元であり、当該アプリケーションの実行コードが入手可能であるという前提に基づく。但し、融合機101においてハッシュ値を生成し、申請情報に含めても良い。ライセンスサーバ情報は、キーエントリサーバ20のアドレス情報が用いられる。タイムスタンプは、キーエントリサーバ20が所定のタイムスタンプサービスより取得したものが用いられる。
融合機101は、アクティベーションキー301を受信すると、当該アプリケーションのインストール又は起動時等に参照可能な場所(例えば、HDD233又は当該アプリケーションが記録されているSDメモリカード602等)に保存(登録)する。
図8は、第一の実施の形態におけるアクティベーションキーに基づくアプリケーションの起動処理を説明するための図である。以下の処理は、融合機101におけるアクティベーションサービス143等によって実行される。
ユーザが融合機101の電源を入れると(S101)、融合機101が起動する(102)。続いて、融合機101は、JSDKプラットフォーム147又はJSDKアプリ146等、自機にインストールされているアプリケーションのプロダクトIDを収集し(S103)、更に、自機の機体番号を取得する(S104)。続いて、融合機101は、自機に登録されているアクティベーションキー301によって、当該アプリケーションのライセンスの有無(起動の許否)を判定する(S105)。詳細には、アクティベーションキー301が有ること、自機の機体番号がアクティベーションキー301における使用可能な機体番号に含まれていること、当該アプリケーションのプロダクトIDがアクティベーションキー301における使用可能なアプリケーション情報に含まれていること、当該アプリケーションのハッシュ値と、アクティベーションキー301における使用可能なアプリケーション情報に含まれているハッシュ値とが一致すること、及び現時点がアクティベーションキー301における使用開始期限及び使用有効期限によって特定される期間内に含まれることが満たされれば当該アプリケーションは起動が許可される。
起動が許可されたアプリケーションについては、融合機101は、オペレーションパネル202にその旨を表示させる(S106)。例えば、起動可能なアプリケーションとして、当該アプリケーションの起動ボタンをオペレーションパネル202に表示させる。その後、ユーザから当該アプリケーションの起動指示があると(S107)、融合機101は、当該アプリケーションを起動させる(S108)。
一方、起動が許可されなかったアプリケーションについては、融合機101は、例えば、オペレーションパネル202を介して起動が許可されなかったアプリケーションの存在をユーザに通知すると共に、アクティベーションキー301の申請を促す(S109)。この際、融合機101が自動的に申請画面を表示させてもよい。申請画面において、ユーザがアクティベーションキー301の申請を指示すると(S110)、融合機101は申請情報を生成し(S111)、キーエントリサーバ20に送信する(S112)。キーエントリサーバ20は、申請情報を受信すると当該申請情報に基づいてアクティベーションキー301を生成し、申請元の融合機101に返信する(S113)。なお、ステップS110からS113における処理の詳細は、図7において説明した内容と同様である。
続いて融合機101は、新たに配布されたアクティベーションキー301によって、ステップS105と同様に当該アプリケーションのライセンスの有無(起動の許否)を確認し(S114)、起動が許可されれば、当該アプリケーションの起動の許可を通知する(S115)。その後、ユーザから当該アプリケーションの起動指示があると(S107)、融合機101は、当該アプリケーションを起動させる(S108)。
次に第二の実施の形態について説明する。第二の実施の形態でもライセンス方式が個人利用方式の場合を説明する。但し、アクティベーションキー301の申請を融合機101からではなく、ユーザのPC(Personal Computer)から行う点が第一の実施の形態と異なる。図9は、第二の実施の形態におけるアクティベーションキーの申請及び配布の手順を説明するための図である。図9中、図7と同一部分には同一符号を付し、その説明は省略する。図9において、PC40は、ユーザがアクティベーションキー301の申請に用いるためのPC(Personal Computer)である。
アクティベーションキー301の申請時、ユーザがPC40のWeb画面より申請情報を入力すると、PC40は、申請情報をキーエントリサーバ20に送信する(S22)。但し、申請時にPC40と融合機101とがオンライン状態であれば、PC40は、融合機101の機体番号等をPC40よりネットワークを介して自動的に取得し(S21)、取得された情報に基づいて申請情報を送信してもよい。
キーエントリサーバ20は、申請情報を受信すると当該申請情報に基づいてアクティベーションキー301を生成し、申請元のPC40に返信する(S23)。アクティベーションキー301の生成の仕方は、第一の実施の形態と同様である。
PC40と融合機101とがオンライン状態であれば、PC40は、受信されたアクティベーションキー301をネットワークを介して自動的に融合機101に登録する(S24)。一方、PC40と融合機101とがオフライン状態の場合は、アプリケーションが記録されたSDメモリカード602をPC40に挿入しておけばよい。この場合、PC40は、受信されたアクティベーションキー301を当該SDメモリカード602に書き込む。したがって当該SDメモリカード602は、図5に示したような状態となる。ユーザは、当該SDメモリカード602を融合機101に挿入し、アクティベーションキー301を登録する。
図10は、第二の実施の形態におけるアクティベーションキーに基づくアプリケーションの起動処理を説明するための図である。以下の処理は、融合機101におけるアクティベーションサービス143等によって実行される。図10中、図8と同一ステップには同一ステップ番号を付し、その説明は適宜省略する。
第二の実施の形態では、起動が許可されなかったアプリケーションに対するアクティベーションキー301の申請手順(S201〜S206)が第一の実施の形態と異なる。すなわち、融合機101が起動が許可されなかったアプリケーションの存在をユーザに通知すると、ユーザは、PC40を利用してアクティベーションキー301の申請を行う(S201)。PC40は、ユーザからの入力に基づいて申請情報を生成し(S202)、キーエントリサーバ20に送信する(S203)。キーエントリサーバ20は、申請情報を受信すると当該申請情報に基づいてアクティベーションキー301を生成し、申請元のPC40に返信する(S204)。PC40は、アクティベーションキー301を受信すると、当該アクティベーションキー301をSDメモリカード602に書き込む(S205)。ユーザが、当該SDメモリカード602を融合機101のSDメモリカード用スロット601に挿入すると、融合機101は、SDメモリカード602に記録された新たなアクティベーションキー301によって、ステップS105と同様に当該アプリケーションのライセンスの有無(起動の許否)を確認し(S114)、起動が許可されれば、当該アプリケーションの起動の許可を通知する(S115)。その後、ユーザから当該アプリケーションの起動指示があると(S107)、融合機101は、当該アプリケーションを起動させる(S108)。
ところで、企業等、複数の融合機101を利用するユーザにとっては、複数の融合機101に関して一括してアクティベーションキー301の申請ができれば便宜である。そこで、複数の融合機101について一括してアクティベーションキー301の申請を可能とした例を第三の実施の形態として説明する。第三の実施の形態においてライセンス方式は二つ存在する。一つは、ノードロックライセンス方式といい、もう一つはフローティングライセンス方式という。ノードロックライセンス方式では、使用する全ての融合機101の機体番号が申請され、機体に応じたライセンス管理が行われる。フローティングライセンス方式は、同時に使用する台数でライセンスを管理する方式であり、複数の融合機101に対して同一のライセンス管理が行われる。なお、ノードロックライセンス方式は、JSDKプラットフォーム147に適用し、フローティングライセンス方式は、JSDKアプリ146に適用するといったように、アプリケーションによってライセンス方式を分けてもよい。
図11は、第三の実施の形態におけるノードロックライセンス方式の場合のアクティベーションキーの申請及び配布の手順を説明するための図である。図11中、図7又は図9と同一部分には同一符号を付し、その説明は省略する。図11において、アクティベーション管理サーバ30は、融合機101のユーザ側に属し、複数の融合機101のライセンス管理を行う。なお、第三の実施の形態では、ノードロックライセンス方式又はフローティングライセンス方式の別を問わず、アクティベーション管理サーバ30によって、複数の融合機101のライセンスが管理される。
まず、アクティベーション管理サーバ30は、管理者からの指示に応じ、申請対象となる複数の融合機101よりそれぞれの機体番号を取得する(S31)。続いて、アクティベーション管理サーバ30は、複数の機体番号と使用するアプリケーションのプロダクトID等とを含む申請情報を生成し、当該申請情報をキーエントリサーバ20に送信する(S32)。これによって、複数の融合機101に対するアクティベーションキー301が一括申請される。
キーエントリサーバ20は、申請情報を受信すると、当該申請情報に基づいて複数の機体番号に対応したアクティベーションキー301を生成し、アクティベーション管理サーバ30に返信する(S33)。ここで、複数の機体番号に対応したアクティベーションキー301とは、「使用機器の機体番号」に複数の機体番号が含まれているアクティベーションキー301をいう。アクティベーション管理サーバ30は、受信したアクティベーションキー301に基づいて、それぞれの機体番号に対応したアクティベーションキー301を生成し、各融合機101に送信する(S34)。これによって各融合機101には、アクティベーションキー301が登録される。ここで、それぞれの機体番号に対応したアクティベーションキー301とは、使用機器の機体番号に一つの機体番号のみが含まれているアクティベーションキー301をいう。
このように、ノードロックライセンス方式では、アクティベーション管理サーバ30が主体となって、融合機101へのアクティベーションキーの配布(登録)が行われる。
図12は、第三の実施の形態におけるフローティングライセンス方式の場合のアクティベーションキーの申請及び配布の手順を説明するための図である。図12中、図11と同一部分には同一符号を付し、その説明は省略する。
まず、アクティベーション管理サーバ30は、管理者からの指示に応じ、申請情報をキーエントリサーバ20に送信する(S41)。この際、申請情報には、各融合機101の機体番号は含まれず、代わりに最大同時使用個数が含まれている。
キーエントリサーバ20は、申請情報を受信すると、当該申請情報に基づいて最大同時使用個数を限定したアクティベーションキー301を生成し、アクティベーション管理サーバ30に返信する(S42)。ここで、最大同時使用個数を限定したアクティベーションキー301とは、「使用機器の機体番号」の代わりに最大同時使用個数が含まれているアクティベーションキー301をいう。
融合機101は、ユーザによってアプリケーションの使用が指示されると、当該融合機101の機体番号と当該アプリケーションのプロダクトIDとを伴って、アクティベーションキー301の提供をアクティベーション管理サーバ30に要求する(S43)。アクティベーション管理サーバ30は、同時使用個数が最大同時使用個数に達しているか否かを判定する。最大同時使用個数に達していなければ当該機体番号及び当該プロダクトIDに対応したアクティベーションキー301(すなわち、使用可能なアプリケーション情報に当該プロダクトIDを含み、使用機器の機体番号に当該融合機101の機体番号を含むアクティベーションキー301)を生成し、当該融合機101に返信する(S44)。この場合、アクティベーション管理サーバ30のメモリ内で管理されている同時使用個数がインクリメントされる。一方、最大同時使用個数に達している場合、アクティベーション管理サーバ30は、アクティベーションキー301を返信しない。
アクティベーションキー301が返信された場合、融合機101において当該アクティベーションキー301に基づいて当該アプリケーションの使用の許否が判定される。使用が許可されると、ユーザは、当該アプリケーションを使用することができる。アプリケーションの使用が終了すると、融合機101は、アプリケーションの使用の終了をアクティベーション管理サーバ30に通知する(S45)。アクティベーション管理サーバ30は、使用終了通知を受けて同時使用個数を更新(デクリメント)する。なお、アクティベーションキー301が返信されない場合、融合機101は、当該アプリケーションの使用を許可しない。
このように、フローティングライセンス方式では、融合機101側が主体となって、アクティベーション管理サーバ30に使用許可の可否を問い合わせる。また、アプリケーションが使用可能な融合機101は、特定のものに限定されない。
次に、アクティベーション管理サーバ30を用いたライセンス方式におけるアプリケーションのインストール及び起動処理を説明する。
図13は、第三の実施の形態におけるJSDKプラットフォームのインストール及び起動処理を説明するためのシーケンス図である。
ユーザが、融合機101の電源スイッチをONにすると、システムの起動手順を管理する起動処理プログラム613が起動する(S301)。続いて、起動処理プログラム613は、SAS142を起動する(S302)。なお、SAS142は、出荷時より融合機101内部に格納されているため、改竄確認は行われない。
ユーザが、少なくともJSDKプラットフォーム147及びキーファイル147kが記録されたSDメモリカード602をSDメモリカード用スロット601に挿入し、SAS142によってオペレーションパネル202に表示される操作画面よりJSDKプラットフォーム147のインストールを指示すると(S303)、SAS142は、JSDKプラットフォーム147をインストールする前に改竄確認と不正利用防止確認を行う。具体的には、SAS142がJSDKプラットフォーム147の改竄確認をインストールサービス144に要求すると(S304)、インストールサービス144が改竄確認を行い、その結果をSAS142に返却する(S305)。改竄確認として、インストールサービス144は、JSDKプラットフォーム147のハッシュ値とキーファイル147kに格納されているハッシュ値とを比較し、一致すれば改竄されていないと判断し、一致しなければ改竄されていると判断する。
JSDKプラットフォーム147が改竄されていない場合、SAS142は、JSDKプラットフォーム147の不正利用確認をインストールサービス144に要求する(S306)。インストールサービス144は、SDメモリカード602のSDカード番号と、キーファイル147kに格納されているSDカード番号とを比較することにより不正利用確認を行う。すなわち、インストールサービス144は、両者が一致すれば不正利用でないと判断し、一致しなければ不正利用であると判断する。判断結果はSAS142に返却される(S308)。
不正利用でない場合又はアクティベーションキー301が登録されている場合、SAS142は、インストールサービス144に対しインストールを指示する(S309)。インストールサービス144は、SDメモリカード602に記録されているJSDKプラットフォーム147を融合機101にインストールする。
なお、改竄が検知された場合、又は不正利用が検知され、かつ、アクティベーションキー301が登録されていない場合、SAS142はJSDKプラットフォーム147のインストールを中止し、エラー画面をオペレーションパネル202に表示させる(S307又はS310)。
インストールが正常に終了した後、ユーザが、SAS142によってオペレーションパネル202に表示されている操作画面よりJSDKプラットフォーム147の起動を指示すると(S311)、SAS142は、改竄確認をインストールサービス144に要求する(S312)。ここでの改竄確認の処理内容はインストール時と同様である。改竄が検知されなかった場合、又はアクティベーションキー301が融合機101に登録されている場合は、SAS142は、不正利用確認をインストールサービス144に要求する(S313)。不正利用されていない場合、又はアクティベーションキー301が融合機101に登録されている場合は、SAS142は、アクティベーションサービス143にJSDKプラットフォーム147の使用を要求する(S316)。
なお、改竄が検知され、かつ、アクティベーションキー301が登録されていない場合、又は、不正利用が検知され、かつ、アクティベーションキー301が登録されていない場合、SAS142はJSDKプラットフォーム147の起動処理を中止し、エラー画面をオペレーションパネル202に表示させる(S315又はS317)。
JSDKプラットフォーム147の使用要求を受けたアクティベーションサービス143は、アクティベーションキー301の有効性を判断する(S318)。アクティベーションキー301の有効性とは、アクティベーションキー301自体が正当なものであるか否か、すなわち、アクティベーションキー301に基づいてJSDKプラットフォーム147の使用許否の判断を行うことの妥当性をいう。例えば、アクティベーションキー301が融合機101に登録されているか、アクティベーションキー301が改竄されていないか等が判断される。アクティベーションキー301の改竄は、アクティベーションキー301の電子署名をアクティベーションキー301に付加しておき、当該電子署名に基づいて検知すればよい。
アクティベーションキー301が無効な場合(アクティベーションキー301が登録されていない場合も含む。)、アクティベーションサービス143は、当該融合機101の機体番号とJSDKプラットフォーム147のプロダクトIDとを伴って、アクティベーションキー301の提供をアクティベーション管理サーバ30に要求する(S319)。ノードロックライセンス方式の場合、アクティベーション管理サーバ30は、当該機体番号及び当該プロダクトIDに対応するアクティベーションキー301を保持していれば、当該アクティベーションキー301をアクティベーションサービス143に返信する(S320)。また、フローティングライセンス方式の場合、アクティベーション管理サーバ30は、最大同時使用個数を超えていなければ、当該アクティベーションキー301をアクティベーションサービス143に返信し、同時使用個数をインクリメントする(S320)。続いて、アクティベーションサービス143は、アクティベーションキー301に基づいて、JSDKプラットフォーム147の使用の許否判定を行い(S321)、その判定結果をSAS142に返却する(S322)。なお、アクティベーションキー301に基づく使用の許否判定の処理内容については後述する。
使用が許可された場合、SAS142は、JSDKプラットフォーム147を起動する(S323)。使用が許可されなかった場合、SAS142は、起動処理を中止し、エラー画面をオペレーションパネル202に表示させる(S324)。
その後、SAS142が表示させている操作画面を介してユーザによってJSDKプラットフォーム147の終了が指示されると(S325)、SAS142は、JSDKプラットフォーム147を終了させる(S326)。更に、フローティングライセンス方式の場合、SAS142は、JSDKプラットフォーム147の使用終了通知をアクティベーション管理サーバ30に送信する(S327)。この場合、アクティベーション管理サーバ30は、同時使用個数をデクリメントする。
続いて、ステップS321における、アクティベーションキー301に基づくアプリケーション(図13では、JSDKプラットフォーム147)の使用の許否判定の処理内容について説明する。図14は、アクティベーションキーに基づくアプリケーションの使用の許否判定処理を説明するための図である。
まず、起動対象のアプリケーションのプロダクトIDを収集する(S321a)。続いて、当該アプリケーションのハッシュ値を算出する(S321b)。続いて、融合機101の機体番号を取得する(S321c)。続いて、収集されたプロダクトIDが、アクティベーションキー301における使用可能なアプリケーション情報に含まれているかを判定する(S321d)。当該判定が肯定的な場合、ステップS321bにおいて算出されたハッシュ値と、アクティベーションキー301における使用可能なアプリケーション情報に含まれているハッシュ値とが一致するか否かを判定する(S321e)。当該判定結果が肯定的な場合、融合機101より取得された機体番号とアクティベーションキー301における使用機器の機体番号とが一致するか否かを判定する(S321f)。当該判定結果が肯定的な場合、現時点が、アクティベーションキー301における使用開始期限及び使用有効期限によって特定される期間内に含まれているかを判定する(S321g)。当該判定結果が肯定的な場合、当該アプリケーションの使用は許可すると判定する(S321h)。一方、ステップS321dからS321gまでのいずれかの判定結果が否定的であった場合、当該アプリケーションの使用は許可しないと判定する(S321i)。
次に、JSDKアプリ146のインストール及び起動処理について説明する。図15は、第三の実施の形態におけるJSDKアプリのインストール及び起動処理を説明するためのシーケンス図である。
ユーザが、少なくともJSDKアプリ146及びキーファイル146kが記録されたSDメモリカード602をSDメモリカード用スロット601に挿入し、SAS142によってオペレーションパネル202に表示される操作画面よりJSDKアプリ146のインストールを指示すると(S401)、SAS142は、JSDKプラットフォーム147にJSDKアプリ146のインストールを指示する(S402)。
JSDKプラットフォーム147は、JSDKアプリ146をインストールする前に改竄確認と不正利用防止確認を行う。具体的には、JSDKプラットフォーム147がJSDKアプリ146の改竄確認をインストールサービス144に要求すると(S403)、インストールサービス144が改竄確認を行い、その結果をJSDKプラットフォーム147に返却する(S404)。改竄確認として、インストールサービス144は、JSDKアプリ146のハッシュ値とキーファイル146kに格納されているハッシュ値とを比較し、一致すれば改竄されていないと判断し、一致しなければ改竄されていると判断する。
JSDKアプリ146が改竄されていない場合、JSDKプラットフォーム147は、JSDKアプリ146の不正利用確認をインストールサービス144に要求する(S405)。インストールサービス144は、融合機101の機体番号と、キーファイル146kに格納されている機体番号とを比較することにより不正利用確認を行う。すなわち、インストールサービス144は、両者が一致すれば不正利用でないと判断し、一致しなければ不正利用であると判断する。判断結果はJSDKプラットフォーム147に返却される(S407)。
不正利用でない場合又はアクティベーションキー301が登録されている場合、JSDKプラットフォーム147は、インストールサービス144に対しインストールを指示する(S408)。インストールサービス144は、SDメモリカード602に記録されているJSDKアプリ146を融合機101にインストールする。
なお、改竄が検知された場合、又は不正利用が検知され、かつ、アクティベーションキー301が登録されていない場合、JSDKプラットフォーム147はJSDKアプリ146のインストールを中止し、エラー画面をオペレーションパネル202に表示させる(S406又はS409)。
インストールが正常に終了した後、ユーザが、SAS142によってオペレーションパネル202に表示されている操作画面よりJSDKアプリ146の起動を指示すると(S410)、SAS142は、JSDKプラットフォーム147に対してJSDKアプリ146の起動を指示する(S411)。JSDKプラットフォーム147は、改竄確認をインストールサービス144に要求する(S412)。ここでの改竄確認の処理内容はインストール時と同様である。改竄が検知されなかった場合、又はアクティベーションキー301が融合機101に登録されている場合は、JSDKプラットフォーム147は、不正利用確認をインストールサービス144に要求する(S413)。不正利用されていない場合、又はアクティベーションキー301が融合機101に登録されている場合は、JSDKプラットフォーム147は、アクティベーションサービス143にJSDKアプリ146の使用を要求する(S415)。
なお、改竄が検知され、かつ、アクティベーションキー301が登録されていない場合、又は、不正利用が検知され、かつ、アクティベーションキー301が登録されていない場合、JSDKプラットフォーム147はJSDKアプリ146の起動処理を中止し、エラー画面をオペレーションパネル202に表示させる(S414又はS416)。
JSDKアプリ146の使用要求を受けたアクティベーションサービス143は、アクティベーションキー301の有効性を判断する(S417)。アクティベーションキー301が無効な場合(アクティベーションキー301が登録されていない場合も含む。)、アクティベーションサービス143は、当該融合機101の機体番号とJSDKアプリ146のプロダクトIDとを伴って、アクティベーションキー301の提供をアクティベーション管理サーバ30に要求する(S418)。ノードロックライセンス方式の場合、アクティベーション管理サーバ30は、当該機体番号及び当該プロダクトIDに対応するアクティベーションキー301を保持していれば、当該アクティベーションキー301をアクティベーションサービス143に返信する(S419)。また、フローティングライセンス方式の場合、アクティベーション管理サーバ30は、最大同時使用個数を超えていなければ、当該アクティベーションキー301をアクティベーションサービス143に返信し、同時使用個数をインクリメントする(S419)。続いて、アクティベーションサービス143は、アクティベーションキー301に基づいて、JSDKアプリ146の使用の許否判定を行い(S420)、その判定結果をJSDKプラットフォーム147に返却する(S421)。アクティベーションキー301に基づく使用の許否判定の処理内容については図14において説明した通りである。
使用が許可された場合、JSDKプラットフォーム147は、JSDKアプリ146を起動する(S422)。使用が許可されなかった場合、JSDKプラットフォーム147は、起動処理を中止し、エラー画面をオペレーションパネル202に表示させる(S423)。
その後、SAS142が表示させている操作画面を介してユーザによってJSDKアプリ146の終了が指示されると(S424)、SAS142からの指示に応じて(S425)、JSDKプラットフォーム147はJSDKアプリ146を終了させる(S426)。更に、フローティングライセンス方式の場合、JSDKプラットフォーム147は、JSDKアプリ146の使用終了通知をアクティベーション管理サーバ30に送信する(S427)。この場合、アクティベーション管理サーバ30は、同時使用個数をデクリメントする。
上述したように、上記第一から第三の実施の形態において説明した融合機101によれば、アクティベーションキー301のようにアプリケーションのインストール後でもネットワークを介して入手可能な情報に基づいてアプリケーションのライセンス管理を行う。したがって、キーファイルのようにアプリケーションと共に配布される情報に基づくライセンス管理(以下「ローカルなライセンス管理」という。)に比べて、より柔軟なライセンス管理を行うことができる。例えば、SDメモリカード602によって配布されるアプリケーションが、当該SDメモリカード602に記録されているキーファイルによって特定のSDメモリカード602(SDカード番号)や特定の融合機101(機体番号)と紐付けられている場合であっても、不正目的のないユーザは、別のSDメモリカード602を購入する必要はない。すなわち、本実施の形態における融合機101によれば、使用したいアプリケーション及び使用したい環境(SDメモリカード602や融合機101等)に関する情報を添えて申請を行うことにより当該環境に応じたアクティベーションキー301を入手できれば(すなわち、ネットワークを介した簡便な操作を行えば)、新たなSDメモリカード602を購入しなくても(すなわち、物理的な媒体を改めて入手しなくても)、当該別のSDメモリカード602や当該別の融合機101において当該アプリケーションを利用することができる。
これは、アクティベーションキー301が、キーファイルに対して優先的に用いられることによる。実施の形態に即してより具体的に説明すれば、キーファイルによるアプリケーションの正当性の判断の判断結果が否定的な場合であっても、アクティベーションキー301が存在し、そのアクティベーションキー301が有効であれば、当該アクティベーションキー301によって当該アプリケーションの使用の許否が判定されることによる(例えば、図13のS313〜S321、図15のS413〜S420)。
また、本実施の形態におけるライセンス管理方法は、アプリケーションの配布媒体となるSDメモリカード602内の既存の構成要素(キーファイル等)に変更を要求しないため、キーファイルに基づくローカルなライセンス管理との互換性が保たれている。すなわち、従来のライセンス管理方式に基づいて配布されていたSDメモリカード602に記録されているアプリケーションについてもライセンス管理を行うことができる。
なお、アプリケーションの販売元は、アクティベーションキー301の配布に対して課金するようにすれば、販売利益の損失の発生を抑止することができる。課金の仕組は周知の技術を用いればよいので、その内容の詳細については本実施の形態では省略する。
ところで、上記各実施の形態では、アクティベーションキー301は、アプリケーション及び機器と紐付けられている(関連付けられている)例について説明したが、更に、ユーザとの紐付けを保持するようにしてもよい。例えば、アクティベーションキー301の申請者情報(図6参照)を、当該アクティベーションキー301によってアプリケーションの使用が許可されるユーザの識別情報(ユーザID等)として扱う。すなわち、アクティベーションキー301の申請時において申請情報に含められる申請者情報は、具体的に申請作業を行っているユーザではなく、アプリケーションを使用する一以上のユーザの識別情報を指定するようにする。この場合、アクティベーションサービス143等は、図8又は図10に代えて次のような処理を実行する。
図16は、ユーザとの紐付けを有するアクティベーションキーに基づくアプリケーションの起動処理を説明するための図である。図16中、図8と同一ステップには同一ステップ番号を付し、その説明は適宜省略する。
融合機101が起動すると、融合機101は、ユーザに対して認証情報の入力を要求する(S501)。具体的には、例えば、オペレーションパネル202に認証情報の入力を促すメッセージを表示させる。ユーザによって認証情報が入力されると(S502)、融合機101は、認証情報に基づいてユーザの認証を行う(S503)。
ここで、認証情報としては所定のものに限定されず、例えば、ユーザ名及びパスワードや、ICカード若しくは磁気カードに記録されている情報、又は生体情報(指紋情報等)等を用いても良い。ユーザ名及びパスワードの場合は、オペレーションパネル202を介して入力させればよい。ICカード若しくは磁気カードに記録されている情報、又は生体情報(指紋情報等)を用いる場合は、融合機101とUSBケーブル又はネットワークを介して接続された専用の読み取り装置より認証情報を読み取ればよい。また、当該専用の読み取り装置は、融合機101と接続されているPCに接続されていてもよい。いずれの場合であっても、融合機101には、ユーザごとに認証情報を含むユーザ情報が登録されており、ユーザ情報に含まれている認証情報と入力された認証情報との比較によって、ユーザの認証が行われる。認証が成功した場合は、ユーザ情報に含まれているユーザの識別情報(ユーザID等)が特定される。
但し、認証処理は、融合機101とネットワークを介して接続されるコンピュータ(認証サーバ)において行われても良い。この場合、融合機101は入力された認証情報を認証サーバに転送する。認証サーバには、ユーザごとのユーザ情報が登録されており、ユーザ情報に含まれている認証情報と転送された認証情報との比較によってユーザの認証が行い、その結果(認証が成功した場合は、ユーザの識別情報も含む)を融合機101に返信する。
ユーザが認証されなかった場合、融合機101は、オペレーションパネル202にその旨を表示させ、アプリケーションの起動を拒否する。(S504)。ユーザが認証された場合、融合機101は、自機にインストールされているアプリケーションのプロダクトIDを収集し(S103)、更に、自機の機体番号を取得する(S104)。続いて、融合機101は、自機に登録されているアクティベーションキー301によって、当該アプリケーションのライセンスの有無(起動の許否)を判定する(S105a)。但し、ここでは、アクティベーションキー301が有ること、自機の機体番号がアクティベーションキー301における使用可能な機体番号に含まれていること、当該アプリケーションのプロダクトIDがアクティベーションキー301における使用可能なアプリケーション情報に含まれていること、当該アプリケーションのハッシュ値と、アクティベーションキー301における使用可能なアプリケーション情報に含まれているハッシュ値とが一致すること、及び現時点がアクティベーションキー301における使用開始期限及び使用有効期限によって特定される期間内に含まれることに加え、認証の結果特定されたユーザの識別情報がアクティベーションキー301における申請者情報に含まれていることが、アプリケーションの起動が許可されるための条件とされる。なお、ユーザの識別情報として、認証情報を用いても良い。この場合、アクティベーションキー301の申請者情報には、アプリケーションの使用が許可される一以上のユーザの認証情報が登録されていればよい。
ステップS106以降の処理については、図8又は図10と同様でよいため、ここでの説明は省略する。
なお、上記各実施の形態においては、アクティベーションキー301と、当該アクティベーションキー301によって使用が許可される機器(融合機101)との紐付け(関連付け)は、機体番号によって行われる例について説明した。すなわち、アクティベーションキー301の構成情報における「使用可能な機器の機体番号」によって、アプリケーションの使用が許可される機器が識別されていた。
しかし、このことは、アクティベーションキー301と機器とを紐付ける情報(以下、「機体紐付け情報」という。)が機体番号のみに限定されることを意図するものではない。すなわち、各機器を一意に識別できる情報(各機器に固有の情報)であれば、機体番号に変えて当該情報を機体紐付け情報として用いても良い。
例えば、"生の"(すなわち、何ら変換処理が行われていない)機体番号ではなく、機体番号のハッシュ値や暗号値(暗号化した値)を用いても良い。また、機器の構成要素に対して付与された、当該構成要素ごとに固有の情報(例えば、HDDのユニークID、機器のイーサーネットカードのMAC(Media Access Control address)アドレス、機器のマザーボードのユニークID、機器のUSBデバイスのユニークID、機器のRAMのユニークID、若しくは機器にインストールされているソフトウェアの固有情報(ハッシュ値等))や、これらの情報のハッシュ値若しくは暗号値、又は機体番号やこれらの情報を任意に組み合わせた情報のハッシュ値若しくは暗号値を用いても良い。また、アクティベーションキー301を構成する情報と、上記に列挙した情報とを組み合わせた情報又は組み合わせた情報のハッシュ値若しくは暗号値を用いても良い。
この場合(生の機体番号とは異なる機体紐付け情報を適用する場合)、アクティベーションキー301を申請する際の申請情報には、当該機体紐付け情報に必要な情報を含めるようにすればよい。アクティベーションキー301を生成するキーエントリサーバ20やアクティベーション管理サーバ30は、「使用可能な機器の機体番号」(図6参照)の代わりに当該機体紐付け情報を構成情報としてアクティベーションキー301を生成すればよい。アクティベーションキー301に基づいてアプリケーションの起動の許否判定を行う機器のアクティベーションサービス143は、当該機体紐付け情報を構成する情報を当該機器より取得し、必要に応じて取得された情報のハッシュ値又は暗号値を生成した上で、アクティベーションキー301に含まれている当該機体紐付け情報との比較を行えばよい。なお、この場合、アクティベーションキー301に機体紐付け情報が含まれていることによって、アクティベーションキー301と機体紐付け情報との関連付けが実現されている。
また、上記機体紐付け情報のいずれか(生の機体番号も含む。)を暗号鍵として用いてアクティベーションキー301を暗号化することにより、アクティベーションキー301と機器との紐付けを行うようにしてもよい。
この場合(機体紐付け情報を暗号鍵として用いてアクティベーションキー301を暗号化する場合)、アクティベーションキー301を申請する際の申請情報には、当該機体紐付け情報に必要な情報を含めるようにすればよい。アクティベーションキー301を生成するキーエントリサーバ20やアクティベーション管理サーバ30は、アクティベーションキー301を当該機体紐付け情報によって暗号化すればよい。アクティベーションキー301に基づいてアプリケーションの起動の許否判定を行う機器のアクティベーションサービス143は、当該機体紐付け情報によってアクティベーションキー301を復号することで、当該アクティベーションキー301と機器との紐付けを確認すればよい。当該機体紐付け情報によってアクティベーションキー301が復号できた場合は、当該アクティベーションキー301は当該機器に対するライセンスであることが確認される。一方、復号できなかった場合は、当該アクティベーションキー301は、当該機器に対するライセンスでないことが確認される。この場合、アクティベーション301の構成情報として機体紐付け情報は含まれていなくても良い。アクティベーションキー301が機体紐付け情報によって暗号化されることで、アクティベーションキー301と機体紐付け情報との関連付けが実現されているからである。
ところで、アクティベーションサービス143及びインストールサービス144は、JSDKアプリ146として実装されてもよい。図17は、アプリケーションサービス及びインストールサービスをJSDKアプリ146として実装した場合の融合機のソフトウェア構成例を示す図である。
図中では、アクティベーションサービス143及びインストールサービス144が、JSDKアプリ146のブロック内に記されている。これは、アクティベーションサービス143及びインストールサービス144がJSDKアプリ146として実装されていることを示す。なお、アクティベーションサービス143及びインストールサービス144がJSDKアプリ146として実装された場合であっても、上記において説明した処理手順に関しては特段変わるところはない。
以上、本発明の実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。