図39は、本発明の実施例に該当する情報処理装置11を表す。図39の情報処理装置11は、種々のハードウェア21と、種々のソフトウェア22と、起動部23により構成される。
情報処理装置11のハードウェア21としては、CPUやROMやRAMやHDD等により構成される情報処理部、MODEMやNIC等により構成される通信部、キーボードやマウスやディスプレイ等により構成される操作表示部が存在する。
情報処理装置11のソフトウェア22としては、種々のアプリケーション31、種々のプラットフォーム32が存在する。プラットフォーム32としては、情報処理部に関する制御を行うモジュール、通信部に関する制御を行うモジュール、操作表示部に関する制御を行うモジュール、認証処理に関する制御を行うモジュール、ユーザ情報の管理に関する制御を行うモジュール、システムの管理に関する制御を行うモジュールが存在する。これらのプログラムは、UNIX(登録商標)等のOS(オペレーティングシステム)によりプロセス単位で並列的に実行される。
起動部23は、情報処理装置11の電源投入時に最初に実行される。これにより、UNIX(登録商標)等のOSが起動され、アプリケーション31やプラットフォーム32が起動される。これらのプログラムは、HDDやメモリカードに蓄積されており、HDDやメモリカードから再生されて、RAMに起動されることになる。
図39の情報処理装置11の具体例としては、主たる機能として情報処理機能を備える情報機器/従たる機能として情報処理機能を備える電気機器等が挙げられる。主たる機能として情報処理機能を備える情報機器の具体例としては、パーソナルコンピュータが挙げられる。従たる機能として情報処理機能を備える電気機器の具体例としては、近年情報処理機能の高度化が目覚しいコピー/プリンタ/スキャナ/ファクシミリ/複合機/融合機等の画像形成装置が挙げられる。以下、情報処理装置11の具体例である融合機101について説明する。
図1は、本発明の実施例に該当する融合機101を表す。図1の融合機101は、種々のハードウェア111と、種々のソフトウェア112と、融合機起動部113により構成される。
融合機101のハードウェア111としては、撮像部121と、印刷部122と、その他のハードウェア123が存在する。撮像部121は、読取原稿から画像(画像データ)を読み取るためのハードウェアである。印刷部122は、画像(画像データ)を印刷用紙に印刷するためのハードウェアである。
融合機101のソフトウェア112としては、種々のアプリケーション131と、種々のプラットフォーム132が存在する。これらのプログラムは、UNIX(登録商標)等のOS(オペレーティングシステム)によりプロセス単位で並列的に実行される。
アプリケーション131としては、コピー用のアプリケーションであるコピーアプリ141、プリンタ用のアプリケーションであるプリンタアプリ142、スキャナ用のアプリケーションであるスキャナアプリ143、ファクシミリ用のアプリケーションであるファクシミリアプリ144、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ145が存在する。
アプリケーション131は、専用のSDK(ソフトウェア開発キット)を使用して開発することができる。SDKを使用して開発したアプリケーション131をSDKアプリと呼ぶ。SDKは、プラットフォーム132の実行形式ファイル、プラットフォーム132の専用関数ライブラリ、C言語の標準関数ライブラリ、アプリケーション131のソースファイルをコンパイルすることでアプリケーション131のオブジェクトファイルを生成するコンパイラ、アプリケーション131のオブジェクトファイルを専用関数ライブラリや標準関数ライブラリにリンクさせることでアプリケーション131の実行形式ファイルを生成するリンカで構成されている。
プラットフォーム132としては、種々のコントロールサービス151、システムリソースマネージャ152、種々のハンドラ153が存在する。コントロールサービス151としては、ネットワークコントロールサービス(NCS)161、ファクシミリコントロールサービス(FCS)162、デリバリコントロールサービス(DCS)163、エンジンコントロールサービス(ECS)164、メモリコントロールサービス(MCS)165、オペレーションパネルコントロールサービス(OCS)166、サーティフィケーションコントロールサービス(CCS)167、ユーザディレクトリコントロールサービス(UCS)168、システムコントロールサービス(SCS)169が存在する。ハンドラ153としては、ファクシミリコントロールユニットハンドラ(FCUH)171、イメージメモリハンドラ(IMH)172が存在する。
NCS161のプロセスは、ネットワーク通信の仲介を行う。FCS162のプロセスは、ファクシミリのAPIを提供する。DCS163のプロセスは、蓄積文書の配信処理に関する制御を行う。ECS164のプロセスは、撮像部121や印刷部122に関する制御を行う。MCS165のプロセスは、メモリやハードディスクドライブに関する制御を行う。OCS166のプロセスは、オペレーションパネルに関する制御を行う。CCS167のプロセスは、認証処理や課金処理に関する制御を行う。UCS168のプロセスは、ユーザ情報の管理に関する制御を行う。SCS169のプロセスは、システムの管理に関する制御を行う。
アプリケーション131とプラットフォーム132の仲介を行うソフトウェア112として、仮想アプリケーションサービス(VAS)135が存在する。VAS135は、アプリケーション131をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム132をサーバとするクライアントプロセスとして動作する。VAS135は、アプリケーション131から見てプラットフォーム132を隠蔽するラッピング機能を備え、プラットフォーム132のバージョンアップによるバージョン差を吸収する役割等を担う。
融合機起動部113は、融合機101の電源投入時に最初に実行される。これにより、UNIX(登録商標)等のOSが起動され、アプリケーション131やプラットフォーム132が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。
図2は、図1の融合機101に係るハードウェア構成図である。融合機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から出力を得るためのハードウェア(表示部)である。
図3は、図1の融合機101に係る外観図である。図3には、撮像部121の位置と、印刷部122の位置と、オペレーションパネル202の位置が図示されている。図3には更に、読取原稿のセット先となる原稿セット部301と、印刷用紙の給紙先となる給紙部302と、印刷用紙の排紙先となる排紙部303が図示されている。
オペレーションパネル202は、図4のように、タッチパネル311と、テンキー312と、スタートボタン313と、リセットボタン314と、初期設定ボタン315により構成される。タッチパネル311は、タッチ操作で入力を行うためのハードウェア(タッチ操作部)であると共に、画面表示で出力を得るためのハードウェア(画面表示部)である。テンキー312は、キー操作で数字入力を行うためのハードウェアである。スタートボタン313は、ボタン操作でスタート操作を行うためのハードウェアである。リセットボタン314は、ボタン操作でリセット操作を行うためのハードウェアである。初期設定ボタン315は、ボタン操作で初期設定画面を表示させるためのハードウェアである。
原稿セット部301は、ADF(自動原稿搬送装置)321と、フラットベッド322と、フラットベッドカバー323により構成される。給紙部302は、4個の給紙トレイにより構成される。排紙部303は、1個の排紙トレイにより構成される。
(融合機起動部)
図1の融合機起動部113について説明する。
融合機起動部113は、図5のように、メモリモニタ部501と、プログラム起動部502により構成される。
図1の融合機101の電源を投入すると、メモリモニタ部501を構成するBIOSとブートローダが起動されて、これにより、UNIX(登録商標)等のOSが起動される。続いて、プログラム起動部502を構成する起動処理用プログラムが起動されて、これにより、アプリケーション131やプラットフォーム132が適宜起動される。なお、UNIX(登録商標)が起動される場合には、UNIX(登録商標)のカーネルが起動され、ルートファイルシステムが展開され、アプリケーション131やプラットフォーム132に係るファイルシステムがルートファイルシステムにマウントされることになる。
アプリケーション131やプラットフォーム132に係るマウント処理や起動処理の例を挙げておく。プログラム起動部502は、ルートファイルシステム内のetcのマスタ設定ファイル「init.conf」を読み込んで、マスタ設定ファイル内のコマンドに従ってマウント処理や起動処理を実行する。プログラム起動部502はさらに、マウントしたファイルシステム内の設定ファイル「init.conf」や「init.cnf」を読み込んで、設定ファイル内のコマンドに従ってマウント処理や起動処理を実行すると共に、マウントしたファイルシステム内の設定ディレクトリ「init.d」の設定ファイル「***.conf」や「***.cnf」を読み込んで、設定ディレクトリの設定ファイル内のコマンドに従ってマウント処理や起動処理を実行する。なお、設定ファイルの電子署名を書き込んだ認証ファイル「***.lic」を用意しておいて、プログラム起動部502が、設定ファイル内のコマンドに従ってマウント処理や起動処理を実行するのに先立って、設定ファイルの電子署名チェックを実行するようにしてもよい。
(メモリカード)
図2のメモリカード用スロット234とメモリカード235について説明する。
メモリカード用スロット234は、アプリケーション131やプラットフォーム132等のプログラムが記憶されたメモリカード235をセット(挿入)するためのスロットである。図1の融合機101においては、アプリケーション131やプラットフォーム132等のプログラムは、メモリカード用スロット234にセットされたメモリカード235等に蓄積されており、メモリカード用スロット234にセットされたメモリカード235等から再生されて、MEM−P231やMEM−C232に起動されることになる。
メモリカード235には、アプリケーション131やプラットフォーム132等のプログラムを、拡張子をmodとするmodファイル「***.mod」として各モジュール毎に記憶させておくと共に、modファイルの電子署名を、拡張子をmacとするmacファイル「***.mac」として各モジュール毎に記憶させておく。
メモリカード235には、設定ファイル(融合機起動部の欄参照)を、拡張子をcnfとするcnfファイル「***.cnf」として記憶させておくと共に、設定ファイルの電子署名を書き込んだ認証ファイル(融合機起動部の欄参照)を、拡張子をlicとするlicファイル「***.lic」として記憶させておく。
各ファイルの電子署名はここでは、MD5やSHA1等のハッシュ関数によって各ファイルから作成したメッセージダイジェストを、秘密鍵によって暗号化したものである。例えば、modファイルやcnfファイルの電子署名は、modファイルやcnfファイルから作成したメッセージダイジェストを、秘密鍵によって暗号化したものである。
各ファイルの電子署名チェックはここでは、各ファイルからMD5やSHA1等のハッシュ関数によって作成したメッセージダイジェストと、各ファイルの電子署名を公開鍵によって復号化したメッセージダイジェストとの照合をもって実行可能である。例えば、modファイルやcnfファイルの電子署名チェックは、modファイルやcnfファイルから作成したメッセージダイジェストと、macファイルやlicファイルに書き込んだ電子署名を公開鍵によって復号化したメッセージダイジェストとの照合をもって実行可能である。各ファイルの電子署名チェックは例えば、マウント処理や起動処理の一環としてプログラム起動部502が実行するようにする。
なお、メモリカード235としてSDメモリカードを採用する場合、cnfファイルの電子署名は、cnfファイルとSDシリアルIDとから作成したメッセージダイジェストを、秘密鍵によって暗号化したものでもよい。各SDメモリカードのSDシリアルIDは各SDメモリカードに固有なID(識別情報)なので、各SDメモリカードに記憶させておくlicファイルが各SDメモリカードに固有なファイルになり、SDメモリカードのコピー防止に役立つ。この場合、cnfファイルの電子署名チェックは、cnfファイルとSDシリアルIDとから作成したメッセージダイジェストと、licファイルに書き込んだ電子署名を公開鍵によって復号化したメッセージダイジェストとの照合をもって実行可能である。各SDメモリカードのSDシリアルIDは各SDメモリカードに記憶されている。
メモリカード235としては、フラッシュメモリカードの一種であるSD(Secure Digital)メモリカードを採用することにする。SDメモリカードを採用することで例えば、大容量のメモリを安価で利用できるというメリットを享受できる。なお、メモリカード用スロット234としては、SDメモリカード用スロットが採用される。
図1の融合機101には、図6のように、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は、図5のプログラム起動部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メモリカードとHDDの使用態様の具体例)
以上の説明を踏まえて、図6のSDメモリカード602(図2のメモリカード235に相当する)と図2のHDD233の使用態様の具体例について説明する。
(1)第1具体例
ここでは、図7により、SDKアプリ(図1の説明欄参照)を融合機101に入力するためのSDメモリカード602をメーカーからベンダーに配布し、ベンダーがSDKアプリを作成し、ユーザーがSDKアプリを融合機101にSDメモリカード602を使用して入力するようなビジネスモデルを具体例にして説明する。
図7AのSDメモリカード602は、市販のSDメモリカードである。
図7BのSDメモリカード602は、融合機101のメーカーから融合機101のベンダーに提供されるSDメモリカードである。図7BのSDメモリカード602は、図7AのSDメモリカード602に、SDメモリカードサービスファイル(SDserviceファイル)701や、PDIDファイル703を記憶させたものである。
図7CのSDメモリカード602は、融合機101のベンダーから融合機101のユーザーに提供されるSDメモリカードである。図7CのSDメモリカード602は、図7BのSDメモリカード602に、2個のSDKアプリファイル702(1個目をSDKアプリファイルA702A、2個目をSDKアプリファイルB702Bとする)を記憶させたものである。
図7DのSDメモリカード602は、融合機101のユーザーの元でPDID登録処理が実行されたSDメモリカードである。図7DのSDメモリカード602は、図7CのSDメモリカード602内のPDIDファイル703に、SDKアプリのPDID等を登録したものである。
SDserviceファイル701は、当該SDメモリカード602の正当性を、融合機101に確認させるためのファイルである。より詳細に言うと、当該SDメモリカード602が、融合機101にSDKアプリを入力するためのSDメモリカードとして正当であることを、融合機101に確認させるためのファイルである。SDserviceファイル701には、SDメモリカードサービスプログラム(SDservice)が格納されている。融合機101は、当該SDメモリカード602の正当性を、このSDserviceが正常に起動されることをもって確認する。SDserviceファイル701は、SDserviceの実行形式ファイルである。
SDserviceファイル701は、modファイルに該当する。よって、SDメモリカード602には、図7のように、SDserviceファイル701と共に、SDserviceファイル701の電子署名が格納されたmacファイル、SDserviceファイル701に関連するcnfファイル・licファイルが記憶されている。これにより、SDserviceファイル701の改竄が防止される。さらに、licファイルはここでは、上記したように、SDメモリカード602のSDシリアルIDが使用されて作成される。これにより、SDserviceファイル701のコピーが防止される。仮に、SDserviceファイル701をコピーしたSDメモリカードを使用しても、本来のSDメモリカードとSDシリアルIDが異なるため、licファイルに係る電子署名チェックで発見されるからである。
SDKアプリファイル702は、SDKアプリが格納されたファイルである。SDKアプリは、上記したように、専用のSDK(ソフトウェア開発キット)により作成されるアプリケーション131である。SDKアプリファイル702にはここでは、ベンダーにより作成されたSDKアプリが格納されている。SDメモリカード602には、ベンダーが自分でSDKアプリファイル702を書き込めるようにしておくものとする。SDKアプリファイル702は、SDKアプリの実行形式ファイルである。
SDKアプリファイル702には、SDKアプリファイル702であることを、融合機101に識別させるための識別コードを格納させておく。識別コードは、SDKアプリファイル702の先頭の数バイト等、SDKアプリファイル702の特定エリアに格納させておく。融合機101は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。なお、SDKアプリファイル702に識別コードを格納するための専用のツールをメーカーからベンダーに提供しておくなどして、ベンダーが自分でSDKアプリファイル702に識別コードを書き込めるようにしておくものとする。
PDIDファイル703は、SDKアプリのID(識別情報)である、SDKアプリのPDID(プロダクトID)を登録(格納)するためのファイルである。より詳細に言うと、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリのPDIDを登録するためのファイルである。融合機101は、SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリのPDIDを、当該SDメモリカード602内のPDIDファイル703に登録する「PDID登録処理」を実行する。融合機101はまた、SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリの正当性を、当該SDメモリカード602内のPDIDファイル703に当該SDKアプリのPDIDが登録されていることをもって判断する「アプリ正当性判断処理」を実行する。融合機101はそして、アプリ正当性判断処理により正当であることが判断されたSDKアプリであることを、当該SDKアプリの起動処理や起動権設定処理を実行するための条件とする。なお、SDKアプリファイル702に格納されたSDKアプリのPDIDは、当該SDKアプリファイル702から取得できるようにしておく。
PDIDファイル703には、SDKアプリのPDIDがそのまま登録されるのではなく、SDKアプリのPDIDが当該SDメモリカード602に固有な鍵(シード)で暗号化されて登録されることになる。当該鍵(暗号化用データ)はここでは、当該SDメモリカード602内のいずれかのlicファイル(SDserviceファイル701に関連するlicファイル等)が使用されて作成される鍵(licファイルのチェックサム(8ビット)等)であり、暗号鍵兼復号鍵(暗号化用データ兼復号化用データ)である。このlicファイルは、上記したように、当該SDメモリカード602のSDシリアルIDが使用されて作成されるlicファイルとする。暗号化はここでは、バイト単位での鍵とのEOR(排他的論理和)処理により実行される。このように、SDKアプリのPDIDが、鍵で暗号化されて登録されることで、PDIDファイル703の改竄が防止され、SDKアプリのPDIDが、当該SDメモリカード602に固有な鍵で暗号化されて登録されることで、PDIDファイル703のコピーが防止される。
PDIDファイル703には、整合性確認用データ711、最大アプリ数712、登録アプリ数713、PDID714が格納される。
整合性確認用データ711は、当該SDメモリカード602と当該PDIDファイル703の整合性を、融合機101に確認させるためのデータ(数バイト)である。整合性確認用データ711はここでは、当該SDメモリカード602内のいずれかのlicファイル(SDserviceファイル701に関連するlicファイル等)が使用されて作成されるデータ(licファイルのチェックサム等)である。
最大アプリ数712は、当該PDIDファイル703に登録可能なPDIDの個数の上限値(最大個数)である。すなわち、当該メモリカード602に正当に書き込み可能なSDKアプリ(SDKアプリファイル702)の個数の上限値(最大個数)である。最大アプリ数712はここでは、ベンダーにより書き込まれるSDKアプリ(SDKアプリファイル702)の個数を制限すべく、メーカーにより設定されるものとする。図7B,C,DのPDIDファイル703の最大アプリ数712としては「2個」が設定されている。最大アプリ数712は、上記のシード(鍵)で暗号化して格納しておく。
登録アプリ数713は、当該PDIDファイル703に登録されたPDIDの個数の値である。すなわち、当該メモリカード602に書き込まれた正当なSDKアプリ(SDKアプリファイル702)の個数の値である。融合機101は、上記したPDID登録処理の一環として、SDメモリカード602内のPDIDファイル703に登録されたPDIDの個数の値を、当該PDIDファイル703の登録アプリ数713として登録する。ベンダーにより書き込まれるSDKアプリ(SDKアプリファイル702)の個数を制限すべく、ベンダーにより書き込まれたSDKアプリ(SDKアプリファイル702)の個数を管理するのである。図7B,CのPDIDファイル703の登録アプリ数713としては「0個」が登録されており、図7DのPDIDファイル703の登録アプリ数713としては「2個」が登録されている。登録アプリ数713は、上記のシード(鍵)で暗号化されて登録される。なお、登録アプリ数713が「0個」の状態を「初期状態」と呼び、登録アプリ数713が「0個」以外の状態を「登録状態」と呼ぶことにする。
PDID714は、SDKアプリのPDID(プロダクトID)を登録するための登録欄である。より詳細に言うと、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリのPDIDを登録するための登録欄である。図7B,CのPDIDファイル703のPDID714には、SDKアプリのPDIDがまだ登録されておらず、図7DのPDIDファイル703のPDID714には、SDKアプリのPDID(SDKアプリファイルA702Aに格納されたSDKアプリAのPDIDと、SDKアプリファイルB702Bに格納されたSDKアプリAのPDID)がすでに登録されている。図7B,CのPDIDファイル703のPDID714には、SDKアプリのPDIDの代わりにSDKアプリのPDIDと同じデータ量のデータ「ダミーID」が格納されている。PDIDファイル703にPDIDが格納される際には、PDID714にPDIDの代わりに格納されている「ダミーID」に替わりPDIDが格納される形で、PDIDファイル703にPDIDが格納される。こうしておけば、PDIDの格納前と格納後のPDIDファイル703のデータ量のずれが原因で、上記したPDID登録処理の存在が発覚してしまうような事態が抑制される。PDID714に登録されるPDIDは、すでに説明したとおり、シード(鍵)で暗号化されて登録される。
以下、上記した「PDID登録処理」と「アプリ正当性判断処理」の具体例について説明する。
これらの処理は、VAS135(図1の説明欄参照)により実行される。図8は、VAS135により実行される処理に係るフローチャートであり、図9は、VAS135により実現される機能に係る機能ブロック図である。図1の融合機101には、図9のように、カード正当性確認部901と、シード作成部902と、PDIDファイル整合性確認部903と、PDID暗号化部911と、PDID登録部912と、PDID復号化部921と、アプリ正当性判断部922等の機能ブロックが存在する。
融合機101のSDメモリカード用スロット601にSDメモリカード602が挿入された状態で、融合機101の電源が投入されると、VAS135により図8の処理が実行されることになる。
まず最初に、カード正当性確認部901が、SDメモリカード602の正当性を確認(S11)する。より詳細に言うと、SDメモリカード602が、当該融合機101にSDKアプリを入力するためのSDメモリカードとして正当であることを、当該SDメモリカード602内のSDserviceファイル701に基づいて確認する。上記したように、SDserviceファイル701にはSDserviceが格納されており、カード正当性確認部901は、SDメモリカード602の正当性を、このSDserviceが正常に起動されることをもって確認する。正常に起動されたことの確認手法としては、SDserviceがVAS135に通知するようにしてもよいし、VAS135がSDserviceにアクセスするようにしてもよいし、SDserviceがHDD233等に書き込みをして、VAS135がこれを読み込むようにしてもよい。
続いて、S11にてSDメモリカード602が正当であると確認された場合、S13に移行(S12)して、S11にてSDメモリカード602が正当でないと確認された場合、PDID登録処理やアプリ正当性判断処理は実行されずに、VAS135による図8の全処理が終了する。
続いて、シード作成部902が、当該SDメモリカード602に固有な鍵(シード)を作成(S13)する。当該鍵はここでは、当該SDメモリカード602内のいずれかのlicファイル(SDserviceファイル701に関連するlicファイル等)が使用されて作成される鍵(licファイルのチェックサム(8ビット)等)であり、暗号鍵兼復号鍵である。シード作成部902はここでは、当該鍵(シード)931を所定のlicファイル932を使用して作成するものとする。このlicファイル932は、当該SDメモリカード602のSDシリアルIDが使用されて作成されるlicファイルとする。
続いて、PDIDファイル整合性確認部903が、当該SDメモリカード602と当該SDメモリカード602内のPDIDファイル703の整合性を、当該PDIDファイル703の整合性確認用データ711に基づいて確認(S14)する。
続いて、S14にてSDメモリカード602とPDIDファイル703が整合すると確認された場合、S16に移行(S15)して、S14にてSDメモリカード602とPDIDファイル703が整合しないと確認された場合、PDID登録処理やアプリ正当性判断処理は実行されずに、VAS135による図8の全処理が終了する。
続いて、VAS135が、当該SDメモリカード602内のPDIDファイル703が初期状態か登録状態かを、当該PDIDファイル703の登録アプリ数713に基づいて確認(S16)する。初期状態であると確認された場合、PDID登録処理(S17)とアプリ正当性判断処理(S18)とがこの順番で実行されることになる。登録状態であると確認された場合、PDID登録処理(S17)は実行されず、アプリ正当性判断処理(S18)が実行されることになる。なお、初期状態か登録状態かで場合分けをする代わりに、登録アプリ数713が最大アプリ数712未満か否かで場合分けをしてもよい。
PDID登録処理(S17)について説明する。S16に続いて、PDID登録部912は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリのPDIDを、当該SDメモリカード602内のPDIDファイル703に登録する。当該PDIDファイル703には、当該SDKアプリファイル702に格納されたSDKアプリのPDIDが、シード作成部902により作成されたシード(鍵)931でPDID暗号化部911により暗号化されて、PDID登録部912により登録される。
PDID登録処理(S17)では、PDID登録部912は、当該SDメモリカード602内のPDIDファイル703に登録されたPDIDの個数を、当該PDIDファイル703の登録アプリ数713として登録する。こうして、PDIDファイル703が初期状態から登録状態になると、S16の説明から明らかなように、次回の電源投入時には、当該SDメモリカード602についてはPDID登録処理(S17)は実行されないことになる。
アプリ正当性判断処理(S18)について説明する。S16に続いて、アプリ正当性判断部922は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリの正当性を、当該SDメモリカード602内のPDIDファイル703に当該SDKアプリのPDIDが登録されていることをもって判断する。当該PDIDファイル703には、上記したように、SDKアプリのPDIDが、シード作成部902により作成されたシード(鍵)931でPDID暗号化部911により暗号化されて登録されているため、当該PDIDは、前もって、シード作成部902により作成されたシード(鍵)931でPDID復号化部921により復号化されることになる。
融合機101は、SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリについて、アプリ正当性判断処理(S18)により正当であることが判断されたSDKアプリであることを、当該SDKアプリの起動処理や起動権設定処理を実行するための条件とする。すなわち、アプリ正当性判断処理を経由していないSDKアプリや、アプリ正当性判断処理により正当でないことが判断されたSDKアプリは、MEM−P231やMEM−C232への起動が制限されることになる。このようにして、SDメモリカード602が不正にコピーされたり使用されたりして、融合機101にプログラムが不正に入力されてしまう危険性に対処しているのである。
なお、PDID登録処理とアプリ正当性判断処理を実行するメリットの具体例としては、SDメモリカード602内のSDKアプリファイル702の差し替え防止が挙げられる。例えば、低額なSDKアプリファイル702が記憶されたSDメモリカード602を購入したユーザーが、不正コピーにより、当該SDメモリカード602内のSDKアプリファイル702を低額なものから高額なものに差し替えた場合でも、当該SDメモリカード602についてすでにPDID登録処理が実行されて、当該SDメモリカード602内のPDIDファイル703がすでに初期状態から登録状態になっていれば、アプリ正当性判断処理を通過することができないからである。SDメモリカード602へのSDKアプリファイル702の追加についても、同様のことが言える。
なお、上記のメリットは、PDIDファイル703の最大アプリ数712、すなわち、SDメモリカード602に書き込み可能なSDKアプリの個数の上限値が1個であっても2個以上であっても変わるところがない。よって例えば、1枚のSDメモリカード602へのSDKアプリの書き込みを2以上のベンダーに許すようなビジネスモデルを、上記のメリットを享受しつつ実現するようなことも可能である。例えば、ある1枚のSDメモリカード602について、ベンダーAには2個のSDKアプリの書き込みを許し、ベンダーBには1個のSDKアプリの書き込みを許すべく、その1枚のSDメモリカード602について、メーカーは最大アプリ数712を「3個」に設定するのである。
なお、ここでは、SDメモリカード602を使用して、融合機101にSDメモリカード602内のSDKアプリを入力するような態様について説明したが、SDメモリカード602を使用して、融合機101にSDKアプリをネットワークを介してダウンロードするような態様でもよい。すなわち、SDメモリカード602を、ダウンロード許可用のキーとして販売するのである。この場合、SDメモリカード602には、SDKアプリファイル702を記憶させておく必要はなく、SDservice701やPDIDファイル703を記憶させておけばよい。
以下、PDID登録処理(S17)の詳細について、図10のシーケンス図により説明する。
S11として説明したように、SDserviceファイル701に格納されたSDserviceが起動(S101)されると、SDserviceはVAS135に起動した旨を通知(S102)する。続いて、S13として説明したように、VAS135がシードを作成(S103)する。続いて、S14として説明したように、VAS135がSDメモリカード602とPDIDファイル703の整合性を確認(S104)する。S12,S15,S16の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S105)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S106)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S107)する。続いて、S17として説明したように、VAS135は、そのPDIDをシードで暗号化(S108)して、そのPDIDをPDIDファイル703に登録(S109)する。そして、VAS135がSDKアプリの仮起動を終了(S110)させる。
以下、アプリ正当性判断処理(S18)の詳細について、図11のシーケンス図により説明する。
S11として説明したように、SDserviceファイル701に格納されたSDserviceが起動(S201)されると、SDserviceはVAS135に起動した旨を通知(S202)する。続いて、S13として説明したように、VAS135がシードを作成(S203)する。続いて、S14として説明したように、VAS135がSDメモリカード602とPDIDファイル703の整合性を確認(S204)する。S12,S15,S16の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S205)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S206)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S207)する。続いて、S18として説明したように、VAS135は、PDIDファイル703に登録されたPDIDを復号化(S208)して、S207のPDIDとS208のPDIDとの照合をもってSDKアプリの正当性を判断(S209)する。
続いて、VAS135は、正当であることが判断されたSDKアプリから当該SDKアプリのアプリ情報を取得(S210)する。ここで、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを選択するための選択画面を、オペレーションパネル202に表示(S211)させることができる。そして、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを、オペレーションパネル202を操作して選択(S212)することができる。そして、VAS135は、起動権設定対象として選択されたSDKアプリのPDIDを、HDD233等(不揮発性メモリ(フラッシュメモリ等)であればよい)に登録することで、当該SDKアプリの起動権を設定(S213)する。融合機101は、SDメモリカード用スロット601に挿入されたSDメモリカード602内のSDKアプリについて、あるSDKアプリの起動権が設定されている場合、そのSDKアプリを、SDメモリカード602から適宜再生させて、MEM−P231やMEM−C232に適宜起動させる権限を有することになる。
(2)第2具体例
ここでは、図12により、SDKアプリ(図1の説明欄参照)を融合機101に入力するためのSDメモリカード602をメーカーからベンダーに配布し、ベンダーがSDKアプリを作成し、ユーザーがSDKアプリを融合機101にSDメモリカード602を使用して入力するようなビジネスモデルを具体例にして説明する。
図12AのSDメモリカード602は、市販のSDメモリカードである。
図12BのSDメモリカード602は、融合機101のメーカーから融合機101のベンダーに提供されるSDメモリカードである。図12BのSDメモリカード602は、図12AのSDメモリカード602に、SDメモリカードサービスファイル(SDserviceファイル)701や、PDIDファイル703を記憶させたものである。
図12CのSDメモリカード602は、融合機101のベンダーから融合機101のユーザーに提供されるSDメモリカードである。図12CのSDメモリカード602は、図12BのSDメモリカード602に、2個のSDKアプリファイル702(1個目をSDKアプリファイルA702A、2個目をSDKアプリファイルB702Bとする)を記憶させたものである。
図12DのSDメモリカード602は、融合機101のユーザーの元でPDID登録処理が実行されたSDメモリカードである。図12DのSDメモリカード602は、図12CのSDメモリカード602内のPDIDファイル703に、SDKアプリのPDID等を登録したものである。
SDserviceファイル701は、当該SDメモリカード602の正当性を、融合機101に確認させるためのファイルである。第1具体例と同様である。
SDKアプリファイル702は、SDKアプリが格納されたファイルである。第1具体例と同様である。
PDIDファイル703は、SDKアプリのID(識別情報)である、SDKアプリのPDIDを登録(格納)するためのファイルである。第1具体例と同様である。
PDIDファイル703には、SDKアプリのPDIDがそのまま登録されるのではなく、SDKアプリのPDIDが融合機101の各機体に固有な鍵(シード)で暗号化されて登録されることになる。当該鍵(暗号化用データ)はここでは、融合機101の各機体の機体番号が使用されて作成される鍵(機体番号のチェックサム(8ビット)等)であり、暗号鍵兼復号鍵(暗号化用データ兼復号化用データ)である。融合機101の各機体の機体番号以外の機体固有情報(MACアドレスやIPアドレス)を使用してもよい。暗号化はここでは、バイト単位での鍵とのEOR(排他的論理和)処理により実行される。このように、SDKアプリのPDIDが、鍵で暗号化されて登録されることで、PDIDファイル703の改竄が防止され、SDKアプリのPDIDが、融合機101の各機体に固有な鍵で暗号化されて登録されることで、当該SDメモリカード602を当該機体の同一機種や関連機種の他の機体等で使用することが制限される。融合機以外のコピー、プリンタ、スキャナ、ファクシミリ等の画像形成装置(情報処理装置)についても同様である。
PDIDファイル703には、整合性確認用データ711、最大アプリ数712、登録アプリ数713、PDID714が格納される。第1具体例と同様である。
以下、上記した「PDID登録処理」と「アプリ正当性判断処理」の具体例について説明する。
これらの処理は、VAS135(図1の説明欄参照)により実行される。図13は、VAS135により実行される処理に係るフローチャートであり、図14は、VAS135により実現される機能に係る機能ブロック図である。図1の融合機101には、図14のように、カード正当性確認部901と、シード作成部902と、PDIDファイル整合性確認部903と、PDID暗号化部911と、PDID登録部912と、PDID復号化部921と、アプリ正当性判断部922等の機能ブロックが存在する。
融合機101のSDメモリカード用スロット601にSDメモリカード602が挿入された状態で、融合機101の電源が投入されると、VAS135により図13の処理が実行されることになる。
まず最初に、カード正当性確認部901が、SDメモリカード602の正当性を確認(S11)する。第1具体例と同様である。
続いて、S11にてSDメモリカード602が正当であると確認された場合、S13に移行(S12)する。第1具体例と同様である。
続いて、シード作成部902が、当該融合機101に固有な鍵(シード)を作成(S13)する。当該鍵はここでは、当該融合機101の機体番号が使用されて作成される鍵(機体番号のチェックサム(8ビット)等)であり、暗号鍵兼復号鍵である。当該融合機101の機体番号以外の機体固有情報(MACアドレスやIPアドレス)を使用してもよい。シード作成部902はここでは、当該鍵(シード)933を当該融合機101の機体番号934を使用して作成するものとする。
続いて、PDIDファイル整合性確認部903が、当該SDメモリカード602と当該SDメモリカード602内のPDIDファイル703の整合性を、当該PDIDファイル703の整合性確認用データ711に基づいて確認(S14)する。第1具体例と同様である。
続いて、S14にてSDメモリカード602とPDIDファイル703が整合すると確認された場合、S16に移行(S15)する。第1具体例と同様である。
続いて、VAS135が、当該SDメモリカード602内のPDIDファイル703が初期状態か登録状態かを、当該PDIDファイル703の登録アプリ数713に基づいて確認(S16)する。初期状態であると確認された場合、PDID登録処理(S17)とアプリ正当性判断処理(S18)とがこの順番で実行されることになる。登録状態であると確認された場合、PDID登録処理(S17)は実行されず、アプリ正当性判断処理(S18)が実行されることになる。第1具体例と同様である。
PDID登録処理(S17)について説明する。S16に続いて、PDID登録部912は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリのPDIDを、当該SDメモリカード602内のPDIDファイル703に登録する。当該PDIDファイル703には、当該SDKアプリファイル702に格納されたSDKアプリのPDIDが、シード作成部902により作成されたシード(鍵)933でPDID暗号化部911により暗号化されて、PDID登録部912により登録される。第1具体例と同様である。
アプリ正当性判断処理(S18)について説明する。S16に続いて、アプリ正当性判断部922は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリの正当性を、当該SDメモリカード602内のPDIDファイル703に当該SDKアプリのPDIDが登録されていることをもって判断する。当該PDIDファイル703には、上記したように、SDKアプリのPDIDが、シード作成部902により作成されたシード(鍵)933でPDID暗号化部911により暗号化されて登録されているため、当該PDIDは、前もって、シード作成部902により作成されたシード(鍵)933でPDID復号化部921により復号化されることになる。第1具体例と同様である。
以下、PDID登録処理(S17)の詳細について、図15のシーケンス図により説明する。
S11として説明したように、SDserviceファイル701に格納されたSDserviceが起動(S101)されると、SDserviceはVAS135に起動した旨を通知(S102)する。続いて、S13として説明したように、VAS135がシードを作成(S103)する。続いて、S14として説明したように、VAS135がSDメモリカード602とPDIDファイル703の整合性を確認(S104)する。S12,S15,S16の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S105)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S106)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S107)する。続いて、S17として説明したように、VAS135は、そのPDIDをシードで暗号化(S108)して、そのPDIDをPDIDファイル703に登録(S109)する。そして、VAS135がSDKアプリの仮起動を終了(S110)させる。
以下、アプリ正当性判断処理(S18)の詳細について、図16のシーケンス図により説明する。
S11として説明したように、SDserviceファイル701に格納されたSDserviceが起動(S201)されると、SDserviceはVAS135に起動した旨を通知(S202)する。続いて、S13として説明したように、VAS135がシードを作成(S203)する。続いて、S14として説明したように、VAS135がSDメモリカード602とPDIDファイル703の整合性を確認(S204)する。S12,S15,S16の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S205)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S206)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S207)する。続いて、S18として説明したように、VAS135は、PDIDファイル703に登録されたPDIDを復号化(S208)して、S207のPDIDとS208のPDIDとの照合をもってSDKアプリの正当性を判断(S209)する。
続いて、VAS135は、正当であることが判断されたSDKアプリから当該SDKアプリのアプリ情報を取得(S210)する。ここで、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを選択するための選択画面を、オペレーションパネル202に表示(S211)させることができる。そして、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを、オペレーションパネル202を操作して選択(S212)することができる。そして、VAS135は、起動権設定対象として選択されたSDKアプリのPDIDを、HDD233等(不揮発性メモリ(フラッシュメモリ等)であればよい)に登録することで、当該SDKアプリの起動権を設定(S213)する。融合機101は、SDメモリカード用スロット601に挿入されたSDメモリカード602内のSDKアプリについて、あるSDKアプリの起動権が設定されている場合、そのSDKアプリを、SDメモリカード602から適宜再生させて、MEM−P231やMEM−C232に適宜起動させる権限を有することになる。
(3)第3具体例
ここでは、図17により、SDKアプリ(図1の説明欄参照)をメーカーに代わってベンダーが作成し、SDKアプリを融合機101に入力するためのSDメモリカード602をベンダーからユーザーに配布し、SDKアプリを融合機101にユーザーがSDメモリカード602を使用して入力するようなビジネスモデルを具体例にして説明する。
図17AのSDメモリカード602は、市販のSDメモリカードである。
図17B,CのSDメモリカード602は、融合機101のベンダーの元で、図17AのSDメモリカード602に、2個のSDKアプリファイル702(1個目をSDKアプリファイルA702A、2個目をSDKアプリファイルB702Bとする)と、PDIDファイル703とを記憶させたSDメモリカードである。ただし、図17BのSDメモリカード602は、PDID登録処理が未実行のSDメモリカードであり、図17CのSDメモリカード602は、PDID登録処理が実行済のSDメモリカードである。
PDID登録処理は、後述するように、図1の融合機101に実行させることができる。PDID登録処理は、融合機101のベンダーの元にある融合機101に実行させてもよいし、融合機101のユーザーの元にある融合機101で実行させてもよいのだが、ここで具体例として説明するビジネスモデルでは、融合機101のベンダーの元にある融合機101で実行させることにする。よって、融合機101のベンダーから融合機101のユーザーに配布されるSDメモリカード602は、図17BのSDメモリカード602ではなく、図17CのSDメモリカード602である。
なお、SDKアプリファイル702は、融合機101のベンダーにより作成されたものであり、PDIDファイル703は、図17Bのような状態で、融合機101のメーカーから融合機101のベンダーに提供されたものである。図17CのPDIDファイル703には、SDKアプリのPDID等が登録されている。
図17D1,D2のSDメモリカード602については後述する。
SDKアプリファイル702は、SDKアプリが格納されたファイルである。第1具体例と同様である。
PDIDファイル703は、SDKアプリのID(識別情報)である、SDKアプリのPDIDを登録(格納)するためのファイルである。第1具体例と同様である。SDメモリカード602には、ベンダーが自分でPDIDファイル703(メーカーからベンダーに提供されたもの)を書き込めるようにしておくものとする。ちなみに、ここで具体例として説明中のビジネスモデルでは、PDID登録処理は、ベンダーの元にある融合機101で実行されることになっており、アプリ正当性判断処理は、ユーザーの元にある融合機101で実行されることになっている。
PDIDファイル703には、SDKアプリのPDIDがそのまま登録されるのではなく、SDKアプリのPDIDが当該SDメモリカード602に固有な鍵(シード)で暗号化されて登録されることになる。当該鍵(暗号化用データ)はここでは、当該SDメモリカード602のSDシリアルIDが使用されて作成される鍵(SDシリアルIDのチェックサム(8ビット)等)であって、暗号鍵兼復号鍵(暗号化用データ兼復号化用データ)である。暗号化はここでは、バイト単位での鍵とのEOR(排他的論理和)処理により実行される。このように、SDKアプリのPDIDが、鍵で暗号化されて登録されることで、PDIDファイル703の改竄が防止され、SDKアプリのPDIDが、当該SDメモリカード602に固有な鍵で暗号化されて登録されることで、PDIDファイル703のコピーが防止される。
例えば、図17D1のように、PDID登録処理が実行されたSDメモリカード602内の全てのファイルを他のSDメモリカード602にコピーした場合、元のSDメモリカード602とSDシリアルIDが異なり鍵が合わないため、当該他のSDメモリカード602はアプリ正当性判断処理で正当でないと判断されるので、結局、融合機101で当該他のSDメモリカード602を使用することは制限される。
例えば、図17D2のように、PDID登録処理が実行されたSDメモリカード602内のSDKアプリファイル702のみを他のSDメモリカード602にコピーした場合、当該他のSDメモリカード602内にはPDIDファイル703が存在しないため、当該他のSDメモリカード602についてアプリ正当性判断処理が実行されないので、結局、融合機101で当該他のSDメモリカード602を使用することは制限される。
PDIDファイル703には、登録済確認用データ711、登録アプリ数713、PDID714が格納される。第1具体例と同様である。
登録済確認用データ711は、当該SDメモリカード602についての上記のPDID登録処理が未実行か実行済かを、融合機101に確認させるためのデータである。図17BのPDIDファイル703の登録済確認用データ711としては「未実行」が登録されており、図17CのPDIDファイル703の登録済確認用データ711としては「実行済」が登録されている。
以下、上記した「PDID登録処理」と「アプリ正当性判断処理」の具体例について説明する。
これらの処理は、VAS135(図1の説明欄参照)により実行される。図18は、VAS135により実行される処理に係るフローチャートであり、図19は、VAS135により実現される機能に係る機能ブロック図である。図1の融合機101には、図19のように、登録済確認部901と、シード作成部902と、登録済登録部903と、PDID暗号化部911と、PDID登録部912と、PDID復号化部921と、アプリ正当性判断部922等の機能ブロックが存在する。
融合機101のSDメモリカード用スロット601にSDメモリカード602が挿入された状態で、融合機101の電源が投入されると、VAS135により図18の処理が実行されることになる。
まず最初に、VAS135が、SDメモリカード602内にPDIDファイル703が存在するか否かをチェック(S11)する。SDメモリカード602内にPDIDファイル703が存在する(S11)場合、S12に移行して、SDメモリカード602内にPDIDファイル703が存在しない(S11)場合、PDID登録処理やアプリ正当性判断処理は実行されずに、VAS135による図18の全処理が終了する。
続いて、登録済確認部901が、当該SDメモリカード602についてのPDID登録処理が未実行か実行済かを、当該SDメモリカード602内のPDIDファイル703の登録済確認用データ711に基づいて確認(S12)する。PDID登録処理が未実行であると確認された(S13)場合、シード作成(S14)とPDID登録処理(S15)と登録済登録(S16)とがこの順番で実行されることになる。PDID登録処理が実行済であると確認された(S13)場合、シード作成(S14)とアプリ正当性判断処理(S17)とがこの順番で実行されることになる。ちなみに、ここで具体例として説明中のビジネスモデルでは、前者の処理(S14・S15・S16)は、ベンダーの元にある融合機101で実行されることになっており、後者の処理(S14・S17)は、ユーザーの元にある融合機101で実行されることになっている。
シード作成(S14)について説明する。S13に続いて、シード作成部902は、当該SDメモリカード602に固有な鍵(シード)を作成する。当該鍵はここでは、当該SDメモリカード602のSDシリアルIDが使用されて作成される鍵(SDシリアルIDのチェックサム(8ビット)等)であって、暗号鍵兼復号鍵である。シード作成部902はここでは、当該鍵(シード)931をSDシリアルID932を使用して作成するものとする。
PDID登録処理(S15)について説明する。S14に続いて、PDID登録部912は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリのPDIDを、当該SDメモリカード602内のPDIDファイル703に登録する。当該PDIDファイル703には、当該SDKアプリファイル702に格納されたSDKアプリのPDIDが、シード作成部902により作成されたシード(鍵)931でPDID暗号化部911により暗号化されて、PDID登録部912により登録される。
登録済登録(S16)について説明する。S15に続いて、登録済登録部903は、当該SDメモリカード602についてのPDID登録処理(S15)が実行済であることを、当該SDメモリカード602内のPDIDファイル703の登録済確認用データ711として登録する。こうして、PDIDファイル703の登録済確認用データ711が未実行から実行済になると、S13の説明から明らかなように、次回の電源投入時には、当該SDメモリカード602についてはPDID登録処理(S15)は実行されないことになる。
アプリ正当性判断処理(S17)について説明する。S14に続いて、アプリ正当性判断部922は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリの正当性を、当該SDメモリカード602内のPDIDファイル703に当該SDKアプリのPDIDが登録されていることをもって判断する。当該PDIDファイル703には、上記したように、SDKアプリのPDIDが、シード作成部902により作成されたシード(鍵)931でPDID暗号化部911により暗号化されて登録されているため、当該PDIDは、前もって、シード作成部902により作成されたシード(鍵)931でPDID復号化部921により復号化されることになる。
以下、PDID登録処理(S15)の詳細について、図20のシーケンス図により説明する。
S12として説明したように、SDメモリカード602内にPDIDファイル703が存在する場合、VAS135がPDID登録処理が未実行か実行済かを確認(S101)する。続いて、S14として説明したように、VAS135がシードを作成(S102)する。S11,S13の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S103)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S104)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S105)する。続いて、S15として説明したように、VAS135は、そのPDIDをシードで暗号化(S106)して、そのPDIDをPDIDファイル703に登録(S107)する。続いて、S16として説明したように、VAS135は、PDID登録処理が実行済であることを、PDIDファイル703の登録済確認用データ711として登録(S108)する。そして、VAS135がSDKアプリの仮起動を終了(S109)させる。
以下、アプリ正当性判断処理(S17)の詳細について、図21のシーケンス図により説明する。
S12として説明したように、SDメモリカード602内にPDIDファイル703が存在する場合、VAS135はPDID登録処理が未実行か実行済かを確認(S201)する。続いて、S14として説明したように、VAS135がシードを作成(S202)する。S11,S13の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S203)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S204)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S205)する。続いて、S17として説明したように、VAS135は、PDIDファイル703に登録されたPDIDを復号化(S206)して、S205のPDIDとS206のPDIDとの照合をもってSDKアプリの正当性を判断(S207)する。
続いて、VAS135は、正当であることが判断されたSDKアプリから当該SDKアプリのアプリ情報を取得(S208)する。ここで、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを選択するための選択画面を、オペレーションパネル202に表示(S209)させることができる。そして、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを、オペレーションパネル202を操作して選択(S210)することができる。そして、VAS135は、起動権設定対象として選択されたSDKアプリのPDIDを、HDD233等(不揮発性メモリ(フラッシュメモリ等)であればよい)に登録することで、当該SDKアプリの起動権を設定(S211)する。融合機101は、SDメモリカード用スロット601に挿入されたSDメモリカード602内のSDKアプリについて、あるSDKアプリの起動権が設定されている場合、そのSDKアプリを、SDメモリカード602から適宜再生させて、MEM−P231やMEM−C232に適宜起動させる権限を有することになる。
(4)第4具体例
ここでは、図22により、SDKアプリ(図1の説明欄参照)をメーカーに代わってベンダーが作成し、SDKアプリを融合機101に入力するためのSDメモリカード602をベンダーからユーザーに配布し、SDKアプリを融合機101にユーザーがSDメモリカード602を使用して入力するようなビジネスモデルを具体例にして説明する。
図22AのSDメモリカード602は、市販のSDメモリカードである。
図22B,図22C,図22DのSDメモリカード602は、融合機101のベンダーの元で、図22AのSDメモリカード602に、2個のSDKアプリファイル702(1個目をSDKアプリファイルA702A、2個目をSDKアプリファイルB702Bとする)と、PDIDファイル703とを記憶させたSDメモリカードである。ただし、図22BのSDメモリカード602は、PDID登録処理が未実行のSDメモリカードであり、図22CのSDメモリカード602は、第1次のPDID登録処理(SDシードによるPDID登録処理)が実行済のSDメモリカードであり、図22DのSDメモリカード602は、第2次のPDID登録処理(機体シードによるPDID登録処理)が実行済のSDメモリカードである。
PDID登録処理は、後述するように、第1次のPDID登録処理と第2次のPDID登録処理とからなり、図1の融合機101に実行させることができる。PDID登録処理は、融合機101のベンダーの元にある融合機101に実行させてもよいし、融合機101のユーザーの元にある融合機101で実行させてもよいのだが、ここで具体例として説明するビジネスモデルでは、第1次のPDID登録処理については、融合機101のベンダーの元にある融合機101で実行させ、第2次のPDID登録処理については、融合機101のユーザーの元にある融合機101で実行させることにする。よって、融合機101のベンダーから融合機101のユーザーに配布されるSDメモリカード602は、図22CのSDメモリカード602である。
なお、SDKアプリファイル702は、融合機101のベンダーにより作成されたものであり、PDIDファイル703は、図22Bのような状態で、融合機101のメーカーから融合機101のベンダーに提供されたものである。図22C,図22DのPDIDファイル703には、SDKアプリのPDID等が登録されている。
図22E1,図22E2のSDメモリカード602については後述する。
SDKアプリファイル702は、SDKアプリが格納されたファイルである。第1具体例と同様である。
PDIDファイル703は、SDKアプリのID(識別情報)である、SDKアプリのPDIDを登録(格納)するためのファイルである。第1具体例と同様である。SDメモリカード602には、ベンダーが自分でPDIDファイル703(メーカーからベンダーに提供されたもの)を書き込めるようにしておくものとする。ちなみに、ここで具体例として説明中のビジネスモデルでは、第1次のPDID登録処理は、ベンダーの元にある融合機101で、第2次のPDID登録処理は、ユーザーの元にある融合機101で、アプリ正当性判断処理は、ユーザーの元にある融合機101で実行されることになっている。
PDIDファイル703には、SDKアプリのPDIDがそのまま登録されるのではなく、第1次のPDID登録処理では、SDKアプリのPDIDが当該SDメモリカード602に固有な鍵(シード)で暗号化されて登録されることになり、第2次のPDID登録処理では、SDKアプリのPDIDが融合機101の各機体に固有な鍵(シード)で暗号化されて登録されることになる。以下、SDメモリカード602に固有なシードを「SDシード」と呼び、SDメモリカード602に固有なシードを「機体シード」と呼ぶことにする。当該SDシード(暗号化用データ)はここでは、当該SDメモリカード602のSDシリアルIDが使用されて作成される鍵(SDシリアルIDのチェックサム(8ビット)等)であって、暗号鍵兼復号鍵(暗号化用データ兼復号化用データ)である。当該機体シード(暗号化用データ)はここでは、融合機101の各機体の機体番号が使用されて作成される鍵(機体番号のチェックサム(8ビット)等)であって、暗号鍵兼復号鍵(暗号化用データ兼復号化用データ)である。融合機101の各機体の機体番号以外の機体固有情報(MACアドレスやIPアドレス)を使用してもよい。暗号化はここではいずれも、バイト単位での鍵とのEOR(排他的論理和)処理により実行される。このように、SDKアプリのPDIDが、鍵で暗号化されて登録されることで、PDIDファイル703の改竄が防止され、SDKアプリのPDIDが、当該SDメモリカード602に固有な鍵で暗号化されて登録されることで、PDIDファイル703のコピーが防止され、SDKアプリのPDIDが、融合機101の各機体に固有の鍵で暗号化されて登録されることで、当該SDメモリカード602を当該機体の同一機種や関連機種の他の機体等で使用することが制限される。融合機以外のコピー、プリンタ、スキャナ、ファクシミリ等の画像形成装置(情報処理装置)についても同様である。
例えば、図22E1のように、PDID登録処理が実行されたSDメモリカード602内の全てのファイルを他のSDメモリカード602にコピーした場合、鍵が合わないと、当該他のSDメモリカード602はアプリ正当性判断処理で正当でないと判断されるので、結局、融合機101で当該他のSDメモリカード602を使用することは制限される。
例えば、図22E2のように、PDID登録処理が実行されたSDメモリカード602内のSDKアプリファイル702のみを他のSDメモリカード602にコピーした場合、当該他のSDメモリカード602内にはPDIDファイル703が存在しないため、当該他のSDメモリカード602についてアプリ正当性判断処理が実行されないので、結局、融合機101で当該他のSDメモリカード602を使用することは制限される。
PDIDファイル703には、登録済確認用データ711、登録アプリ数713、PDID714が格納される。第1具体例と同様である。
登録済確認用データ711は、当該SDメモリカード602についての上記のPDID登録処理が未実行か第1次まで実行済か第2次まで実行済かを、融合機101に確認させるためのデータである。図22BのPDIDファイル703の登録済確認用データ711としては「未実行」が登録されており、図22CのPDIDファイル703の登録済確認用データ711としては「実行済(第1次)」が登録されており、図22DのPDIDファイル703の登録済確認用データ711としては「実行済(第2次)」が登録されている。
以下、上記した「PDID登録処理」と「アプリ正当性判断処理」の具体例について説明する。
これらの処理は、VAS135(図1の説明欄参照)により実行される。図23は、VAS135により実行される処理に係るフローチャートであり、図24は、VAS135により実現される機能に係る機能ブロック図である。図1の融合機101には、図24のように、登録済確認部901と、シード作成部902と、登録済登録部903と、PDID暗号化部911と、PDID登録部912と、PDID復号化部921と、アプリ正当性判断部922等の機能ブロックが存在する。
融合機101のSDメモリカード用スロット601にSDメモリカード602が挿入された状態で、融合機101の電源が投入されると、VAS135により図23の処理が実行されることになる。
まず最初に、VAS135が、SDメモリカード602内にPDIDファイル703が存在するか否かをチェック(S11)する。SDメモリカード602内にPDIDファイル703が存在する(S11)場合、S12に移行して、SDメモリカード602内にPDIDファイル703が存在しない(S11)場合、PDID登録処理やアプリ正当性判断処理は実行されずに、VAS135による図23の全処理が終了する。
続いて、登録済確認部901が、当該SDメモリカード602についてのPDID登録処理が未実行か第1次まで実行済か第2次まで実行済かを、当該SDメモリカード602内のPDIDファイル703の登録済確認用データ711に基づいて確認(S12)する。PDID登録処理が未実行であると確認された(S13)場合、SDシード作成(S14A)と第1次のPDID登録処理(S15A)と第1次の登録済登録(S16A)とがこの順番で実行されることになる。PDID登録処理が第1次まで実行済であると確認された(S13)場合、SDシード作成(S14A)と機体シード作成(S14B)と第2次のPDID登録処理(S15B)と第2次の登録済登録(S16B)とがこの順番で実行されることになる。PDID登録処理が第2次まで実行済であると確認された(S13)場合、機体シード作成(S14B)とアプリ正当性判断処理(S17)とがこの順番で実行されることになる。ちなみに、ここで具体例として説明中のビジネスモデルでは、1番目の処理(S14A・S15A・S16A)は、ベンダーの元にある融合機101で、2番目の処理(S14A・S14B・S15B・S16B)は、ユーザーの元にある融合機101で、3番目の処理(S14B・S17)は、ユーザーの元にある融合機101で実行されることになっている。
SDシード作成(S14A)について説明する。S13に続いて、シード作成部902は、当該SDメモリカード602に固有な鍵(SDシード)を作成する。当該SDシードはここでは、当該SDメモリカード602のSDシリアルIDが使用されて作成される鍵(SDシリアルIDのチェックサム(8ビット)等)であって、暗号鍵兼復号鍵である。シード作成部902はここでは、当該SDシード931をSDシリアルID932を使用して作成するものとする。
機体シード作成(S14B)について説明する。S13に続いて、シード作成部902は、当該融合機101に固有な鍵(機体シード)を作成する。当該機体シードはここでは、当該融合機101の機体番号が使用されて作成される鍵(機体番号のチェックサム(8ビット)等)であって、暗号鍵兼復号鍵である。当該融合機101の機体番号以外の機体固有情報(MACアドレスやIPアドレス)を使用してもよい。シード作成部902はここでは、当該機体シード933を機体番号934を使用して作成するものとする。
第1次のPDID登録処理(S15A)について説明する。S14Aに続いて、PDID登録部912は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリのPDIDを、当該SDメモリカード602内のPDIDファイル703に登録する。当該PDIDファイル703には、当該SDKアプリファイル702に格納されたSDKアプリのPDIDが、シード作成部902により作成されたSDシード931でPDID暗号化部911により暗号化されて、PDID登録部912により登録される。
第2次のPDID登録処理(S15B)について説明する。S14AとS14Bに続いて、PDID登録部912は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリのPDIDを、当該SDメモリカード602内のPDIDファイル703に登録する。当該PDIDファイル703には、当該SDKアプリファイル702に格納されたSDKアプリのPDIDが、シード作成部902により作成された機体シード933でPDID暗号化部911により暗号化されて、PDID登録部912により登録される。
第1次の登録済登録(S16A)について説明する。S15Aに続いて、登録済登録部903は、当該SDメモリカード602についての第1次のPDID登録処理(S15A)が実行済であることを、当該SDメモリカード602内のPDIDファイル703の登録済確認用データ711として登録する。こうして、PDIDファイル703の登録済確認用データ711が未実行から第1次まで実行済になると、S13の説明から明らかなように、次回の電源投入時には、当該SDメモリカード602については、第1次のPDID登録処理(S15A)は実行されず、第2次のPDID登録処理(S15B)が実行されることになる。
第2次の登録済登録(S16B)について説明する。S15Bに続いて、登録済登録部903は、当該SDメモリカード602についての第2次のPDID登録処理(S15B)が実行済であることを、当該SDメモリカード602内のPDIDファイル703の登録済確認用データ711として登録する。こうして、PDIDファイル703の登録済確認用データ711が第1次まで実行済から第2次まで実行済になると、S13の説明から明らかなように、次回の電源投入時には、当該SDメモリカード602については、第1次のPDID登録処理(S15A)も第2次のPDID登録処理(S15B)も実行されないことになる。
アプリ正当性判断処理(S17)について説明する。S14Bに続いて、アプリ正当性判断部922は、当該SDメモリカード602内のSDKアプリファイル702に格納されたSDKアプリの正当性を、当該SDメモリカード602内のPDIDファイル703に当該SDKアプリのPDIDが登録されていることをもって判断する。当該PDIDファイル703には、上記したように、SDKアプリのPDIDが、シード作成部902により作成された機体シード933でPDID暗号化部911により暗号化されて登録されているため、当該PDIDは、前もって、シード作成部902により作成された機体シード933でPDID復号化部921により復号化されることになる。
以下、第1次のPDID登録処理(S15A)の詳細について、図25のシーケンス図により説明する。
S12として説明したように、SDメモリカード602内にPDIDファイル703が存在する場合、VAS135がPDID登録処理が未実行か第1次まで実行済か第2次まで実行済かを確認(S101)する。続いて、S14Aとして説明したように、VAS135がSDシードを作成(S102)する。S11,S13の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S103)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S104)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S105)する。続いて、S15Aとして説明したように、VAS135は、そのPDIDをSDシードで暗号化(S106)して、そのPDIDをPDIDファイル703に登録(S107)する。続いて、S16Aとして説明したように、VAS135は、第1次のPDID登録処理が実行済であることを、PDIDファイル703の登録済確認用データ711として登録(S108)する。そして、VAS135がSDKアプリの仮起動を終了(S109)させる。
以下、第2次のPDID登録処理(S15B)の詳細について、図26のシーケンス図により説明する。
S12として説明したように、SDメモリカード602内にPDIDファイル703が存在する場合、VAS135がPDID登録処理が未実行か第1次まで実行済か第2次まで実行済かを確認(S201)する。続いて、S14Aとして説明したように、VAS135がSDシードを作成(S202)する。続いて、S14Bとして説明したように、VAS135が機体シードを作成(S203)する。S11,S13の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135(PDID復号化部921)は、SDシードで暗号化されてPDIDファイル703に登録されたPDIDを、SDシードで復号化(S204)する。これにより、VAS135は、SDKアプリファイル703に格納されたSDKアプリのPDIDを取得する。続いて、S15Bとして説明したように、VAS135(PDID暗号化部921・PDID登録部922)は、そのPDIDを機体シードで暗号化(S205)して、そのPDIDをPDIDファイル703に登録(S206)する。続いて、S16Bとして説明したように、VAS135(登録済登録部903)は、第2次のPDID登録処理が実行済であることを、PDIDファイル703の登録済確認用データ711として登録(S207)する。
以下、アプリ正当性判断処理(S17)の詳細について、図27のシーケンス図により説明する。
S12として説明したように、SDメモリカード602内にPDIDファイル703が存在する場合、VAS135はPDID登録処理が未実行か第1次まで実行済か第2次まで実行済かを確認(S301)する。続いて、S14Bとして説明したように、VAS135が機体シードを作成(S302)する。S11,S13の場合分け処理についても、それぞれ説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S303)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S304)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S305)する。続いて、S17として説明したように、VAS135は、機体シードで暗号化されてPDIDファイル703に登録されたPDIDを、機体シードで復号化(S306)して、S305のPDIDとS306のPDIDとの照合をもってSDKアプリの正当性を判断(S307)する。
続いて、VAS135は、正当であることが判断されたSDKアプリから当該SDKアプリのアプリ情報を取得(S308)する。ここで、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを選択するための選択画面を、オペレーションパネル202に表示(S309)させることができる。そして、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを、オペレーションパネル202を操作して選択(S310)することができる。そして、VAS135は、起動権設定対象として選択されたSDKアプリのPDIDを、HDD233等(不揮発性メモリ(フラッシュメモリ等)であればよい)に登録することで、当該SDKアプリの起動権を設定(S311)する。融合機101は、SDメモリカード用スロット601に挿入されたSDメモリカード602内のSDKアプリについて、あるSDKアプリの起動権が設定されている場合、そのSDKアプリを、SDメモリカード602から適宜再生させて、MEM−P231やMEM−C232に適宜起動させる権限を有することになる。
(5)第5具体例
ここでは、図28により、融合機101に装着されたHDD233にSDKアプリ(図1の説明欄参照)が追加(記憶)されるような使用態様、すなわち、融合機101に装着されたHDD233がSDKアプリ(図1の説明欄参照)の追加先(記憶先)として使用されるような使用態様について説明する。
図28AのHDD233は、SDKアプリ追加前のHDD233である。図28AのHDD233には、PDIDファイル703が記憶されている。
図28BのHDD233は、SDKアプリ追加後のHDD233である。図28BのHDD233は、図28AのHDD233に、2個のSDKアプリファイル702(1個目をSDKアプリファイルA702A、2個目をSDKアプリファイルB702Bとする)を追加したものである。図28BのHDD233には、2個のSDKアプリファイル702と、PDIDファイル703とが記憶されている。
図28CのHDD233は、融合機101によりPDID登録処理が実行されたHDD233である。図28CのHDD233は、図28BのHDD233内のPDIDファイル703に、SDKアプリのPDID等を登録したものである。
SDKアプリファイル702は、SDKアプリが格納されたファイルである。SDKアプリは、上記したように、専用のSDK(ソフトウェア開発キット)により作成されるアプリケーション131である。SDKアプリファイル702は例えば、SDKアプリファイル702が記憶されたSDメモリカード等のメモリカード235が使用(SDメモリカード用スロット等のメモリカード用スロット234に挿入)されて、当該HDD233に追加される。SDKアプリファイル702は、SDKアプリの実行形式ファイルである。
SDKアプリファイル702には、SDKアプリファイル702であることを、融合機101に識別させるための識別コードを格納させておく。識別コードは、SDKアプリファイル702の先頭の数バイト等、SDKアプリファイル702の特定エリアに格納させておく。融合機101は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。
PDIDファイル703は、SDKアプリのID(識別情報)である、SDKアプリのPDID(プロダクトID)を登録(格納)するためのファイルである。より詳細に言うと、当該HDD233内のSDKアプリファイル702に格納されたSDKアプリのPDIDを登録するためのファイルである。融合機101は、HDD233内のSDKアプリファイル702に格納されたSDKアプリのPDIDを、当該HDD233内のPDIDファイル703に登録する「PDID登録処理」を実行する。融合機101はまた、HDD233内のSDKアプリファイル702に格納されたSDKアプリの正当性を、当該HDD233内のPDIDファイル703に当該SDKアプリのPDIDが登録されていることをもって判断する「アプリ正当性判断処理」を実行する。融合機101はそして、アプリ正当性判断処理により正当であることが判断されたSDKアプリであることを、当該SDKアプリの起動処理や起動権設定処理を実行するための条件とする。なお、SDKアプリファイル702に格納されたSDKアプリのPDIDは、当該SDKアプリファイル702から取得できるようにしておく。
PDIDファイル703には、SDKアプリのPDIDがそのまま登録されるのではなく、SDKアプリのPDIDが融合機101の各機体に固有な鍵(シード)で暗号化されて登録されることになる。当該鍵(暗号化用データ)はここでは、融合機101の各機体の機体番号が使用されて作成される鍵(機体番号のチェックサム(8ビット)等)であり、暗号鍵兼復号鍵(暗号化用データ兼復号化用データ)である。融合機101の各機体の機体番号以外の機体固有情報(MACアドレスやIPアドレス)を使用してもよい。暗号化はここでは、バイト単位での鍵とのEOR(排他的論理和)処理により実行される。このように、SDKアプリのPDIDが、鍵で暗号化されて登録されることで、PDIDファイル703の改竄が防止され、SDKアプリのPDIDが、融合機101の各機体に固有な鍵で暗号化されて登録されることで、当該HDD233を当該機体の同一機種や関連機種の他の機体等に付け替えて使用することが制限される。融合機以外のコピー、プリンタ、スキャナ、ファクシミリ等の画像形成装置(情報処理装置)についても同様である。第1具体例や第3具体例と同様に、PDIDファイル703には、SDKアプリのPDIDが当該HDD233に固有な鍵(シード)で暗号化されて登録されるようにしてもよい。
PDIDファイル703には、最大アプリ数712、登録アプリ数713、PDID714が格納される。
最大アプリ数712は、当該PDIDファイル703に登録可能なPDIDの個数の上限値(最大個数)である。すなわち、当該HDD233に正当に追加可能なSDKアプリ(SDKアプリファイル702)の個数の上限値(最大個数)である。図28A,B,CのPDIDファイル703の最大アプリ数712としては「2個」が設定されている。最大アプリ数712は、上記のシード(鍵)で暗号化して格納しておく。
登録アプリ数713は、当該PDIDファイル703に登録されたPDIDの個数の値である。すなわち、当該HDD233に追加された正当なSDKアプリ(SDKアプリファイル702)の個数の値である。融合機101は、PDID登録処理の一環として、HDD233内のPDIDファイル703に登録されたPDIDの個数の値を、当該PDIDファイル703の登録アプリ数713として登録する。図28A,BのPDIDファイル703の登録アプリ数713としては「0個」が登録されており、図28CのPDIDファイル703の登録アプリ数713としては「2個」が登録されている。登録アプリ数713は、上記のシード(鍵)で暗号化されて登録される。なお、登録アプリ数713が「0個」の状態を「初期状態」と呼び、登録アプリ数713が「0個」以外の状態を「登録状態」と呼ぶことにする。
PDID714は、SDKアプリのPDID(プロダクトID)を登録するための登録欄である。より詳細に言うと、当該HDD233内のSDKアプリファイル702に格納されたSDKアプリのPDIDを登録するための登録欄である。図28A,BのPDIDファイル703のPDID714には、SDKアプリのPDIDがまだ登録されておらず、図28CのPDIDファイル703のPDID714には、SDKアプリのPDID(SDKアプリファイルA702Aに格納されたSDKアプリAのPDIDと、SDKアプリファイルB702Bに格納されたSDKアプリAのPDID)がすでに登録されている。図28A,BのPDIDファイル703のPDID714には、SDKアプリのPDIDの代わりにSDKアプリのPDIDと同じデータ量のデータ「ダミーID」が格納されている。PDIDファイル703にPDIDが格納される際には、PDID714にPDIDの代わりに格納されている「ダミーID」に替わりPDIDが格納される形で、PDIDファイル703にPDIDが格納される。こうしておけば、PDIDの格納前と格納後のPDIDファイル703のデータ量のずれが原因で、PDID登録処理の存在が発覚してしまうような事態が抑制される。PDID714に登録されるPDIDは、すでに説明したとおり、シード(鍵)で暗号化されて登録される。
以下、上記した「PDID登録処理」と「アプリ正当性判断処理」の具体例について説明する。
これらの処理は、VAS135(図1の説明欄参照)により実行される。図29は、VAS135により実行される処理に係るフローチャートであり、図30は、VAS135により実現される機能に係る機能ブロック図である。図1の融合機101には、図30のように、シード作成部902、PDID暗号化部911、PDID登録部912、PDID復号化部921、アプリ正当性判断部922等の機能ブロックが存在する。
融合機101に装着されたHDD233にSDKアプリファイル702が追加された状態で、融合機101の電源が投入されると、VAS135により図29の処理が実行されることになる。
まず最初に、シード作成部902が、当該融合機101に固有な鍵(シード)を作成(S11)する。当該鍵はここでは、当該融合機101の機体番号が使用されて作成される鍵(機体番号のチェックサム(8ビット)等)であり、暗号鍵兼復号鍵である。当該融合機101の機体番号以外の機体固有情報(MACアドレスやIPアドレス)を使用してもよい。シード作成部902はここでは、当該鍵(シード)933を当該融合機101の機体番号934を使用して作成するものとする。
続いて、VAS135が、当該HDD233内のPDIDファイル703が初期状態か登録状態かを、当該PDIDファイル703の登録アプリ数713に基づいて確認(S12)する。初期状態であると確認された場合、PDID登録処理(S13)とアプリ正当性判断処理(S14)とがこの順番で実行されることになる。登録状態であると確認された場合、PDID登録処理(S13)は実行されず、アプリ正当性判断処理(S14)が実行されることになる。なお、初期状態か登録状態かで場合分けをする代わりに、登録アプリ数713が最大アプリ数712未満か否かで場合分けをしてもよい。
PDID登録処理(S13)について説明する。S12に続いて、PDID登録部912は、当該HDD233内のSDKアプリファイル702に格納されたSDKアプリのPDIDを、当該HDD233内のPDIDファイル703に登録する。当該PDIDファイル703には、当該SDKアプリファイル702に格納されたSDKアプリのPDIDが、シード作成部902により作成されたシード(鍵)933でPDID暗号化部911により暗号化されて、PDID登録部912により登録される。
PDID登録処理(S13)では、PDID登録部912は、当該HDD233内のPDIDファイル703に登録されたPDIDの個数を、当該PDIDファイル703の登録アプリ数713として登録する。こうして、PDIDファイル703が初期状態から登録状態になると、S12の説明から明らかなように、次回の電源投入時には、当該HDD233についてPDID登録処理(S13)は実行されないことになる。
アプリ正当性判断処理(S14)について説明する。S12に続いて、アプリ正当性判断部922は、当該HDD233内のSDKアプリファイル702に格納されたSDKアプリの正当性を、当該HDD233内のPDIDファイル703に当該SDKアプリのPDIDが登録されていることをもって判断する。当該PDIDファイル703には、上記したように、SDKアプリのPDIDが、シード作成部902により作成されたシード(鍵)933でPDID暗号化部911により暗号化されて登録されているため、当該PDIDは、前もって、シード作成部902により作成されたシード(鍵)933でPDID復号化部921により復号化されることになる。
融合機101は、HDD233内のSDKアプリファイル702に格納されたSDKアプリについて、アプリ正当性判断処理(S14)により正当であることが判断されたSDKアプリであることを、当該SDKアプリの起動処理や起動権設定処理を実行するための条件とする。すなわち、アプリ正当性判断処理を経由していないSDKアプリや、アプリ正当性判断処理により正当でないことが判断されたSDKアプリは、MEM−P231やMEM−C232への起動が制限されることになる。このようにして、HDD233に係る不正行為が実行されて、融合機101にプログラムが不正に供給されてしまう危険性に対処しているのである。
なお、PDID登録処理とアプリ正当性判断処理を実行するメリットの具体例としては、HDD233内のSDKアプリファイル702の差し替え防止が挙げられる。例えば、低額なSDKアプリファイル702(SDKアプリ)を購入してHDD233に追加したユーザーが、不正コピーにより、当該HDD233内のSDKアプリファイル702を低額なものから高額なものに差し替えた場合でも、当該HDD233についてすでにPDID登録処理が実行されて、当該HDD233内のPDIDファイル703がすでに初期状態から登録状態になっていれば、アプリ正当性判断処理を通過することができないからである。上記のメリットは、PDIDファイル703の最大アプリ数712、すなわち、HDD233に追加可能なSDKアプリの個数の上限値が1個であっても2個以上であっても変わるところがない。
以下、PDID登録処理(S13)の詳細について、図31のシーケンス図により説明する。
まず最初に、S11として説明したように、VAS135がシードを作成(S101)する。S12の場合分け処理についても、説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S102)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S103)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S104)する。続いて、S13として説明したように、VAS135は、そのPDIDをシードで暗号化(S105)して、そのPDIDをPDIDファイル703に登録(S106)する。そして、VAS135がSDKアプリの仮起動を終了(S107)させる。
以下、アプリ正当性判断処理(S14)の詳細について、図32のシーケンス図により説明する。
まず最初に、S11として説明したように、VAS135がシードを作成(S201)する。S12の場合分け処理についても、説明したように実行される。
続いて、VAS135がSDKアプリファイル702に格納された識別コードをチェック(S202)する。VAS135は、あるファイルがSDKアプリファイル702であることを、そのファイルに識別コードが格納されていることをもって識別する。識別コードが格納されていないファイルについては、PDID登録処理やアプリ正当性判断処理は実行されない。
続いて、VAS135がSDKアプリファイル702に格納されたSDKアプリを仮起動(S203)させる。これにより、VAS135はSDKアプリから当該SDKアプリのPDIDを取得(S204)する。続いて、S14として説明したように、VAS135は、PDIDファイル703に登録されたPDIDを復号化(S205)して、S204のPDIDとS205のPDIDとの照合をもってSDKアプリの正当性を判断(S206)する。
続いて、VAS135は、正当であることが判断されたSDKアプリから当該SDKアプリのアプリ情報を取得(S207)する。ここで、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを選択するための選択画面を、オペレーションパネル202に表示(S208)させることができる。そして、融合機101の管理者は、正当であることが判断されたSDKアプリの内、起動権設定対象とするSDKアプリを、オペレーションパネル202を操作して選択(S209)することができる。そして、VAS135は、起動権設定対象として選択されたSDKアプリのPDIDを、HDD233等(不揮発性メモリ(フラッシュメモリ等)であればよい)に登録することで、当該SDKアプリの起動権を設定(S210)する。融合機101は、HDD233内のSDKアプリにつき、あるSDKアプリの起動権が設定されている場合、そのSDKアプリを、HDD233から適宜再生させて、MEM−P231やMEM−C232に適宜起動させる権限を有することになる。
(6)画像形成処理
第1,第2,第3,第4,第5具体例に関連して、図1の融合機101にて実行される画像形成処理について説明する。
図33は、VAS135により作成される画像形成処理用のパスワード941について説明するための図である。
ここでは、スキャナアプリ143は、融合機101に蓄積される画像データを読取原稿から読み取る場合、VAS135により作成されたパスワード941を当該画像データに付加し、当該画像データに「パスワードロック」を掛ける。同様に、ファクシミリアプリ144やネットワークファイルアプリ145は、融合機101に蓄積される画像データをネットワークから受信する場合、VAS135により作成されたパスワード941を当該画像データに付加し、当該画像データに「パスワードロック」を掛ける。
ここでは、プリンタアプリ142は、融合機101に蓄積された上記画像データを印刷用紙に印刷する場合、VAS135により作成されたパスワード941と当該画像データに付加されたパスワード941とを照合して、当該画像データの「パスワードチェック」を行なう。同様に、ファクシミリアプリ144やネットワークファイルアプリ145は、融合機101に蓄積された上記画像データをネットワークに送信する場合、VAS135により作成されたパスワード941と当該画像データに付加されたパスワード941とを照合して、当該画像データの「パスワードチェック」を行なう。
上記パスワード941は例えば、当該融合機101のSDメモリカードスロット601にセットされているSDメモリカード602に固有なデータとする。この場合には、ある画像データの読取処理や受信処理の終了から印刷処理や送信処理の開始までにSDメモリカード602を差し替えると、その画像データの印刷処理や送信処理が実行不可能になるので、SDメモリカード602の差し替え防止になる。SDメモリカード602に関する不正が存在するおそれがある場合には、画像形成処理までが制限されることになるので、上記具体例のメリットがより効果的になるのである。上記パスワード941の作成方法は上記具体例の鍵931の作成方法と同様であり、SDシリアルID932等が使用されて作成される。以上の事柄は、HDD233の付け替え防止についても適用可能である。
上記パスワード941は例えば、当該融合機101の機体に固有なデータとする。この場合には、画像データが蓄積されているHDD233を他の機体から当該融合機101に付け替えても、当該融合機101ではその画像データの印刷処理や送信処理は実行不可能なので、画像データが蓄積されているHDD233の付け替え防止になる。画像データの蓄積先となるHDD233に関する不正が存在するおそれがある場合には、画像形成処理までが制限されることになるので、上記具体例のメリットがより効果的になるのである。上記パスワード941の作成方法は上記具体例の鍵933の作成方法と同様であり、機体番号934等が使用されて作成される。以上の事柄は、画像データが蓄積されているSDメモリカード602の差し替え防止についても適用可能である。
図34は、上記のパスワード付加処理に係るフローチャートである。
プリンタアプリ142等が、融合機101に蓄積すべき画像データを読取原稿から読み取る又はネットワークから受信する(S101)と、VAS135が、パスワード941を作成(S102)する。続いて、プリンタアプリ142等が、VAS135により作成されたパスワード941を当該画像データに付加(S103)する事で、当該画像データにパスワードロックを掛ける。続いて、融合機101に当該画像データが蓄積される。
図35は、上記のパスワード照合処理に係るフローチャートである。
融合機101に蓄積されている画像データから印刷用紙に印刷すべき又はネットワークに送信すべき画像データが指定されると、VAS135が、パスワード941を作成(S111)する。続いて、プリンタアプリ142等が、VAS135により作成されたパスワード941と当該画像データに付加されたパスワード941とを照合(S112)する事で、当該画像データのパスワードチェックを行なう。続いて、プリンタアプリ142等が、当該画像データのパスワード照合結果が「正」であることを条件に、当該画像データを印刷用紙に印刷する又はネットワークに送信する(S113)のである。
図36は、VAS135により作成される画像形成処理用の鍵942について説明するための図である。
ここでは、スキャナアプリ143は、融合機101に蓄積される画像データを読取原稿から読み取る場合、VAS135により作成された鍵942で当該画像データを「オリジナル画像データ」から「スクランブル画像データ」に暗号化する。同様に、ファクシミリアプリ144やネットワークファイルアプリ145は、融合機101に蓄積される画像データをネットワークから受信する場合、VAS135により作成された鍵942で当該画像データを「オリジナル画像データ」から「スクランブル画像データ」に暗号化する。
ここでは、プリンタアプリ142は、融合機101に蓄積された上記画像データを印刷用紙に印刷する場合、VAS135により作成された鍵941で当該画像データを「スクランブル画像データ」から「オリジナル画像データ」に復号化する。同様にして、ファクシミリアプリ144やネットワークファイルアプリ145は、融合機101に蓄積された上記画像データをネットワークに送信する場合、VAS135により作成された鍵941で当該画像データを「スクランブル画像データ」から「オリジナル画像データ」に復号化する。
上記鍵942は例えば、当該融合機101のSDメモリカードスロット601にセットされているSDメモリカード602に固有な暗号化用データとする。この場合には、ある画像データの読取処理や受信処理の終了から印刷処理や送信処理の開始までにSDメモリカード602を差し替えると、その画像データの印刷処理や送信処理が実行不可能になるので、SDメモリカード602の差し替え防止になる。SDメモリカード602に関する不正が存在するおそれがある場合には、画像形成処理までが制限されることになるので、上記具体例のメリットがより効果的になるのである。上記鍵942の作成方法は上記具体例の鍵931の作成方法と同様で、SDシリアルID932等が使用されて作成される。以上の事柄は、HDD233の付け替え防止についても適用可能である。
上記鍵942は例えば、当該融合機101の機体に固有な暗号化用データとする。この場合には、画像データが蓄積されているHDD233を他の機体から当該融合機101に付け替えても、当該融合機101ではその画像データの印刷処理や送信処理は実行不可能なので、画像データが蓄積されているHDD233の付け替え防止になる。画像データの蓄積先となるHDD233に関する不正が存在するおそれがある場合には、画像形成処理までが制限されることになるので、上記具体例のメリットがより効果的になるのである。上記鍵942の作成方法は上記具体例の鍵933の作成方法と同様で、機体番号934等が使用されて作成される。以上の事柄は、画像データが蓄積されているSDメモリカード602の差し替え防止についても適用可能である。
図37は、上記の暗号化処理に係るフローチャートである。
プリンタアプリ142等が、融合機101に蓄積すべき画像データを読取原稿から読み取るまたはネットワークから受信する(S201)と、VAS135が、鍵942を作成(S202)する。続いて、プリンタアプリ142等が、VAS135により作成された鍵942で当該画像データを暗号化(S203)する。続いて、融合機101に当該画像データが蓄積される。
図38は、上記の復号化処理に係るフローチャートである。
融合機101に蓄積されている画像データから印刷用紙に印刷すべき又はネットワークに送信すべき画像データが指定されると、VAS135が、鍵942を作成(S211)する。続いて、プリンタアプリ142等が、VAS135により作成された鍵942で当該画像データを復号化(S212)する。続いて、プリンタアプリ142等が、当該画像データの復号化処理が「成功」したことを条件に、当該画像データを印刷用紙に印刷する又はネットワークに送信する(S213)のである。
なお、上記の画像形成処理において、同一の画像データについてパスワード941と鍵942を併用するようにしてもよい。また、上記の画像形成処理において、1台の融合機101に2枚以上のSDメモリカード602がセットされている場合、パスワード941や鍵942を特定のSDメモリカード602に固有のデータとするようにしてもよい。
(変形例)
図1の融合機101は、本発明「情報処理装置」の実施例に該当するものであり、図1の融合機101にて実行される情報処理は、本発明「情報処理方法」の実施例に該当するものである。図1のVAS135は、本発明「情報処理プログラム」の実施例に該当するものであり、図1のVAS135が記録されたSDメモリカードは、本発明「記録媒体」の実施例に該当するものである。