説明

画像処理装置、改ざん検出システム、及び、検出方法

【課題】APIを用いるアプリケーションプログラムの実行時に、アプリケーションプログラムが改ざんされていることを検出することを目的とする。
【解決手段】アプリケーション開発用にAPIを公開している情報処理装置は、アプリケーションから呼び出される可能性のあるAPIを示すAPI情報を記憶しておき、自装置の外部のアプリケーションから、処理の要求を受け付けたときに、受け付けた処理において呼び出されるAPIを検出し、検出したAPIが、前記API情報によって示されていない場合は、当該APIの呼び出しを行わない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションプログラムの改ざん検出に関する。
【背景技術】
【0002】
近年、コピー機は多機能化が進み、いわゆる、複合機(以下、「MFP(Multi Function Peripheral)」という。)が主流となっている。
【0003】
これらの機能は、数々のアプリケーションプログラムをMFPに組み込むことで実現されており、これらのアプリケーションプログラムは、MFPが備えているAPI(Application Program Interface)を用いて開発されている。
【0004】
MFP製造業者の中には、新たな機能の開発、及び、現在搭載されている機能の拡張等のために、備えているAPI(Application Program Interface)を公開しているものが在る。
【0005】
APIを公開することで、数多くのアプリケーションプログラム開発業者が、様々なアプリケーションプログラムを開発することが容易となり、より高機能で、より使いやすい機能がMFPに搭載することができるようになるという利点がある。
【0006】
しかし、アプリケーションプログラム開発業者が開発したアプリケーションプログラムを無条件にMFPに搭載するのはセキュリティの面から問題があることから、様々な技術が提案されている。
【0007】
例えば、アプリケーションプログラム毎に、使用できるAPIを制限する技術が提案されている(特許文献1等参照)。
【0008】
具体的には、MFPが備えているコマンド(API)毎に許可レベルを定めておき、アプリケーションプログラムは自身に与えられたレベルキーに応じた許可レベルのコマンドのみを使用できる。
【0009】
また、別の技術として、アプリケーションプログラムが有する認証キーに基づいて肯定的な認証がなされたときのみMFPはそのアプリケーションプログラムを実行するという技術がある。MFP製造業者は、予めアプリケーションプログラムを検証し、合格したもの、例えば、不適切なAPIが用いられていないもの等にのみ認証キーを与える。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2006−344146号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかし、MFP製造業者が認証キーを与えた後に、アプリケーションプログラムを変更した場合、又は、市場において改変された場合等には、認証キーは正当なキーであることからアプリケーションプログラムは実行されてしまうことになる。
【0012】
そこで、本発明は、APIを用いるアプリケーションプログラムの実行時に、アプリケーションプログラムが改ざんされていることを検出することを目的とする。
【課題を解決するための手段】
【0013】
上記目的を達成するために、本発明の一形態に係る画像処理装置は、アプリケーションプログラムが呼び出すことができる1又は複数のAPIを公開している画像処理装置であって、1又は複数のアプリケーションプログラムそれぞれが呼び出すことを許可されているAPIを示すAPI情報を、アプリケーションプログラム毎に記憶しているAPI情報記憶手段と、自装置の外部のアプリケーションプログラムから、APIの呼び出し要求を受け付ける要求受付手段と、前記要求受付手段で受け付けた要求において呼び出されるAPIが、前記外部のアプリケーションプログラムと対応付けて記憶されているAPI情報によって示されていない場合は、当該APIの呼び出しを抑止する制御手段とを備える。
【発明の効果】
【0014】
上記構成の画像処理装置は、APIを用いるアプリケーションプログラムの実行時に、アプリケーションプログラムが改ざんされていることを検出することができる。
【図面の簡単な説明】
【0015】
【図1】改ざん検出システムの全体的な構成の例を示す図である。
【図2】MFPのハードウェア構成の例を示す図である。
【図3】アプリケーションプログラムの開発からMFPに搭載するまでの手順、及び、MFPに搭載するまでに用いる機能ブロックの例を示す図である。
【図4】ユーザ端末及びMFPの機能的構成の例を示すブロック図である。
【図5】アプリケーションの実行処理の例を示す図である。
【図6】API抽出リストの構成及び内容の例を示す図である。
【図7】APIリストの構成及び内容の例を示す図である。
【図8】認証データの構成及び内容の例を示す図である。
【図9】アプリケーション一覧画面の例を示す図である。
【図10】認証データ生成装置における認証データ生成処理を示すフローチャートである。
【図11】アプリケーションの登録処理を示すフローチャートである。
【図12】MFPにおけるアプリケーション実行処理を示すフローチャートである。
【図13】変形例のAPIリストの構成及び内容の例を示す図である。
【発明を実施するための形態】
【0016】
<実施形態>
<概要>
実施形態のMFPでは、MFPに搭載されているアプリケーションプログラムにおいて実行される可能性のあるAPIの名称を、アプリケーションプログラム毎に記憶しておく。「API」とは、MFPに搭載するアプリケーションプログラムを開発する場合に使用できる命令及び関数等にアクセスするためのインタフェースをいい、その命令及び関数等の1つ1つを「API」と呼ぶこともある。ここでは、関数等の1つ1つを「API」というものとする。
【0017】
そして、アプリケーションプログラムの実行中に、記憶してある名称以外の名称のAPIが呼び出された場合には、そのAPIの実行を行わずに、アプリケーションプログラムの実行を中止する。
【0018】
ここで、記憶してある名称のAPIは、MFP製造業者が認証キーを与えるために検証したアプリケーションプログラムで用いられていたAPIである。すなわち、これらのAPIは、アプリケーションプログラムで呼び出すことをMFP製造業者が許可したAPIであるといえる。
【0019】
従って、認証キーが付与された後に、新たなAPIを用いるような変更がなされたアプリケーションプログラムの実行は出来ないことになる。
【0020】
但し、認証キーを付与された時に使用していたAPIを用いるような変更は許されることになる。すなわち、別のAPIを呼び出さない修正やバージョンアップを行っただけでは、MFP製造業者に認証キーを新たに申請する必要がないという利点がある。また、MFP製造業者にとっては、呼び出されたくないAPIは呼び出されることがないので、認証キーを付与した際に意図していたセキュリティは確保することができ、認証キーを与えるための検証作業を何度も行うことがないという利点がある。
【0021】
以下、本発明の実施形態の改ざん検出システム100について、図面を用いて説明する。
【0022】
<構成>
図1は、改ざん検出システム100の全体的な構成の例を示す図である。
【0023】
改ざん検出システム100は、ユーザ端末1000、ユーザ端末1001、ユーザ端末1002、MFP2000、及び、認証データ生成装置3000を有する。尚、図1では、3台のユーザ端末と1台のMFPとを含むこととしているが、それぞれ1台以上であればよい。また、認証データ生成装置3000は1台としているが、1台以上であればよい。
【0024】
ユーザ端末1000、ユーザ端末1001及びユーザ端末1002は、いわゆる、パソコン等の端末装置であり、ディスプレイ、キーボード等のインタフェースを備え、MFP2000に印刷ジョブを送信したり、MFP2000からの要求に応じてアプリケーションプログラムを実行したりする。
【0025】
MFP2000は、一般に複合機と呼ばれ、コピー機能、ファックス機能、ネットワークプリンティング機能、スキャナ機能及びボックス機能等の機能を集約した装置である。MFP2000は、ユーザからアプリケーションプログラムの実行指示を受けると、ユーザ端末1000と連携して処理を行う。
【0026】
認証データ生成装置3000は、いわゆる、パソコン等の端末装置であり、ディスプレイ、キーボード等のインタフェースを備え、アプリケーションプログラムを読み込み、アプリケーションプログラム用の認証データを生成する。この認証データがMFP2000によって肯定的に認証された場合にのみ、アプリケーションプログラムをMFP2000に登録して実行することが可能となる。
【0027】
次に、MFP2000のハードウェア構成について説明する。
【0028】
図2は、MFP2000のハードウェア構成の例を示す図である。MFP2001及びMFP2002も同様の構成を有する。
【0029】
MFP2000は、CPU(Central Processing Unit)20a、RAM(Random Access Memory)20b、ROM(Read Only Memory)20c、ハードディスク20d、制御用回路20e、操作パネル20f、通信インタフェース20g、印刷装置20h及びICカードリーダ20i等によって構成される。
【0030】
制御用回路20eは、ハードディスク20d、操作パネル20f、通信インタフェース20g、印刷装置20h及びICカードリーダ20i等を制御するための回路である。
【0031】
操作パネル20fは、タッチパネル方式の表示パネルであって、ユーザに対してメッセージ又は指示を与えるための画面、ユーザが所望する処理の種類及び処理条件を入力するための画面及びCPU20aで実行された処理の結果を示す画面等を表示する。また、ユーザは、操作パネル20fの所定の位置に触れることによってMFP2000に対して指示を与えたり処理条件の指定を行ったり、パスワード等を入力することができる。このように、操作パネル20fは、MFP2000を操作するユーザのユーザインタフェースの役割を果たしている。
【0032】
また、通信インタフェース20gは、通信回線を介して認証データ生成装置3000等の装置とTCP/IP(Transmission Control Protocol/Internet Protocol)で通信を行うためのNIC(Network Interface Card)又はモデム等である。
【0033】
印刷装置20hは、ユーザ端末1000等から取得した印刷ジョブの印刷データに基づいて再現される画像を用紙に印刷する装置である。
【0034】
ICカードリーダ20iは、ICカードからユーザID等のデータを読み取るICカードリーダ装置である。
【0035】
以下、改ざん検出システム100において実行される機能を2つに分けて説明する。アプリケーションを開発してMFP2000に搭載する場合と、MFP2000に搭載されたアプリケーションを実行する場合との2つである。
【0036】
<アプリケーションを搭載する場合>
図3を用いて、アプリケーションプログラムの開発からMFP2000に搭載するまでの手順を説明するとともに、MFP2000に搭載するまでに用いる各装置の機能を説明する。
【0037】
まず、アプリケーションプログラム開発業者(以下、「ベンダー」という。)は、アプリ開発装置4000においてアプリケーションプログラム4010を開発する。このアプリケーションプログラムは、MFP2000が提供するAPIを使用するものである。
【0038】
次に、ベンダーは、開発したアプリケーションプログラム4010のソースコードをMFP製造業者に渡して検証を依頼する(矢印10参照)。
【0039】
MFP製造業者は、認証データ生成装置3000において、認証データ3210を生成してベンダーに渡す。
【0040】
ここで、認証データ生成装置3000は、API抽出部3100及び認証データ生成部3200を有する。
【0041】
API抽出部3100は、アプリケーションプログラム4010が呼び出しているAPIを抽出する機能を有する。
【0042】
具体的には、API抽出部3100は、アプリケーションプログラム4010のソースコードに、コメント等としてではなく、実行するために記載されているAPIの名称を抽出する。
【0043】
認証データ生成部3200は、API抽出部3100が抽出したAPIの名称、及び、認証に必要な情報を含んだ認証データ3210を生成する機能を有する。認証データ3210の詳細は、<データ>の項で説明する。
【0044】
MFP製造業者は、生成した認証データ3210を暗号化してベンダーに渡す。例えば、DES(Data Encryption Standard)、AES(Advanced Encryption Standard)等の方式を用いて暗号化する。
【0045】
暗号化した認証データ3210(以下、「暗号化認証データ3210」という。)を渡されたベンダーは、渡された暗号化認証データ3210を組み込んだアプリケーションプログラム4011を販売する(矢印11参照)。
【0046】
アプリケーションプログラムを購入したユーザは、購入したアプリケーションプログラム4011をユーザ端末1000にインストールし、アプリケーションをMFP2000に登録する(矢印12参照)。アプリケーションプログラム4011によって実現できる機能を「アプリケーション」といい、MFP2000で実行することができるようにすることを「登録」という。
【0047】
実施形態では、アプリケーションプログラム4011が登録用のプログラムを含んでおり、そのプログラムを実行して実現される登録ツール1450によって、アプリケーションの登録処理を行う。
【0048】
登録処理において、アプリケーションプログラム4011内の暗号化認証データ3210がMFP2000に送信され、MFP2000によって肯定的な認証がなされた場合に、アプリケーションプログラム4011の実行に必要な情報、例えば、ユーザ端末1000のIPアドレス等、及び、必要に応じてプログラム等がMFP2000に記憶される。
【0049】
ここで、MFP2000は、アプリ認証部2810を含むアプリ登録部2800を有する。尚、図3では、MFP2000が備える機能のうち、登録処理に関係する機能のみを記載している。
【0050】
アプリ登録部2800は、ユーザ端末1000の登録ツール1450から登録要求を受け、アプリケーションをMFP2000に登録する機能を有する。アプリ登録部2800は、登録要求を受信する際、暗号化認証データ3210も受信する。この暗号化認証データ3210が、アプリ認証部2810により肯定的な認証がなされた場合にのみ、アプリ登録部2800はアプリケーションの登録処理を行う。
【0051】
実施形態では、登録処理として次の3つの処理を行う。
【0052】
1つ目は、アプリケーションの名称等をMFP2000の操作パネル20f(図2参照)に表示するためのデータ、例えば、アプリケーション名をユーザ情報記憶部5000に記憶する。実施形態では、ユーザが登録したアプリケーションの名前等を、ユーザIDに対応させて記憶している。
【0053】
2つ目は、アプリケーションで使用されているAPIの名称をAPIリスト記憶部5200に記憶する。実施形態では、APIの名称を示すリストがアプリケーションプログラム毎に記憶されている。
【0054】
3つ目は、アプリケーションを実行する際に必要な情報等、例えば、MFP2000側で実行する処理を記述したアプリケーションプログラム等を、アプリケーションプログラム4011から受信し、アプリ記憶部5100に記憶する。アプリケーションプログラム4011から取得する情報の内容は、それぞれのアプリケーションによって異なる。
【0055】
アプリ認証部2810は、暗号化認証データ3210を認証し、認証結果をアプリ登録部2800に渡す機能を有する。
【0056】
具体的には、アプリ認証部2810は、認証データ生成装置3000が認証データ3210を暗号化した鍵と同じ鍵を記憶しており、その鍵を用いて暗号化認証データ3210を復号する。その鍵と、復号した認証データ3210に含まれる認証キーとが同じである場合に、認証データは正当なデータであると判断して、肯定的な認証結果をアプリ登録部2800に渡す。
【0057】
<アプリケーションを実行する場合>
次に、図4を用いて、MFP2000に搭載されたアプリケーションを実行する場合に用いる各装置の機能を説明する。
【0058】
図4は、ユーザ端末1000、及び、MFP2000の機能的構成の例を示すブロック図である。
【0059】
ユーザ端末1000〜ユーザ端末1002(図1参照)は、本発明に係る機能について同様の機能を備える。従って、ここではユーザ端末1000を説明する。
【0060】
ユーザ端末1000は、通信部1100、送信データ生成部1200、受信データ解析部1300、アプリケーション1400、登録ツール1450、及び、アプリケーションプログラム記憶部1500を有する。
【0061】
以下に説明するユーザ端末1000の各部の機能の一部又は全部は、ユーザ端末1000が備えるメモリに格納されているプログラムが、ユーザ端末1000が備えるCPUにより実行されることで実現される。
【0062】
通信部1100は、MFP2000と通信する機能を有する。具体的には、MFP2000から処理の要求等を受信したり、処理の結果等を送信したりする。実施形態では、MFP2000とのやり取りは、例えば、XML形式のデータ(以下、「XMLデータ」という。)で行うものとする。
【0063】
アプリケーション1400は、アプリケーションプログラム記憶部1500から、アプリケーションプログラムを読み出して実行することで実現されるアプリケーションを示す。
【0064】
登録ツール1450は、アプリケーションプログラム記憶部1500から、登録用のプログラムを読み出して実行することで実現される登録ツールを示す。
【0065】
送信データ生成部1200は、アプリケーション1400から指示されてMFP2000に送信するXMLデータを生成する機能を有する。
【0066】
また、受信データ解析部1300は、MFP2000から受信したXMLデータを解析し、解析結果に応じてアプリケーション1400に指示等を出す機能を有する。
【0067】
この送信データ生成部1200及び受信データ解析部1300は、実際には、アプリケーションプログラムの一部として記述されている場合もある。
【0068】
アプリケーションプログラム記憶部1500は、ユーザによってインスロールされたアプリケーションプログラム4011(図3参照)を記憶しておく機能を有する。
【0069】
MFP2000は、通信部2100、送信データ生成部2200、受信データ解析部2300、アプリケーション2400、操作部2500、ログイン情報認証部2600、アプリ選択部2700、アプリ登録部2800、ユーザ情報記憶部5000、アプリ記憶部5100、APIリスト記憶部5200、及び、APIプログラム記憶部5300を有する。
【0070】
以下に説明するMFP2000の各部の機能の一部又は全部は、MFP2000のハードディスク20d等のメモリに格納されているプログラムが、CPU20aにより実行されることで実現される。
【0071】
通信部2100は、ユーザ端末1000と通信する機能を有する。具体的には、ユーザ端末1000に処理の要求等を送信したり、処理の結果等を受信したりする。実施形態では、ユーザ端末1000とのやり取りは、例えば、XML形式のデータで行うものとする。
【0072】
アプリケーション2400は、アプリ記憶部5100から、アプリケーションプログラムを読み出して実行することで実現されるアプリケーションを示す。
【0073】
送信データ生成部2200は、アプリケーション2400から指示されてユーザ端末1000に送信するXMLデータを生成する機能を有する。
【0074】
受信データ解析部2300は、ユーザ端末1000から受信したXMLデータを解析し、解析結果に応じてアプリケーション2400に指示等を出す機能を有する。
【0075】
この送信データ生成部2200及び受信データ解析部2300は、実際には、アプリケーションプログラムの一部として記述されている場合もある。
【0076】
操作部2500は、操作パネル20f及びICカードリーダ20iを含み、操作に応じた表示画面を操作パネル20f表示し、ユーザからの指示を取得する機能を有する。
【0077】
また、操作部2500は、MFP2000を使用しようとするユーザから、ログイン情報、具体的には、ユーザIDを取得する機能を有する。詳細には、かざされたICカードからICカードリーダ20iが読み取ったユーザIDを取得する。
【0078】
ログイン情報認証部2600は、ユーザ情報記憶部5000が記憶しているユーザに関する情報であるユーザ情報を参照して、ログイン情報を認証する機能を有する。ログイン情報認証部2600は、ユーザ情報にログイン情報が登録されていれば肯定的な認証結果とし、登録されていなければ否定的な認証結果とする。認証結果は、操作部2500に通知する。
【0079】
アプリ選択部2700は、ログイン情報で示されるユーザがインストールしたアプリケーションの名称を操作パネル20fに表示し、ユーザによって選択されたアプリケーション名を取得し、選択した名称のアプリケーションを起動する機能を有する。
【0080】
アプリ登録部2800は、ユーザ端末1000の登録ツール1450から登録要求を受け、アプリケーションをMFP2000に登録する機能を有する(図3及び図3の説明参照)。
【0081】
ユーザ情報記憶部5000は、ユーザに関する情報であるユーザ情報を記憶しておく機能を有する。具体的には、MFP2000を使用する権限を有するユーザのユーザID、及び、ユーザIDと対応付けて当該ユーザがインストールしたアプリケーション名等を記憶している。アプリ選択部2700は、このユーザIDと対応付けて記憶しているアプリケーション名等を参照して、アプリケーション一覧を操作パネル20fに表示する。
【0082】
アプリ記憶部5100は、ユーザがインストールしたアプリケーションを実行するために必要なプログラム、データ等を記憶しておく機能を有する。
【0083】
APIリスト記憶部5200は、登録されたアプリケーションで使用されているAPIの名称を示すリストを、アプリケーション毎に記憶しておく機能を有する。
【0084】
APIプログラム記憶部5300は、登録されたアプリケーションを実行する際に必要な情報等、例えば、ユーザ端末1000のIPアドレス、MFP2000側で実行する処理を記述したアプリケーションプログラム、実行に必要なデータ等を記憶しておく機能を有する。
【0085】
ここで、図5に、アプリケーションの実行の例を示す。
【0086】
図5では、3つのアプリケーションの例を示している。
【0087】
1つ目は、MFP2000のスキャナ機能を用いてスキャンしたデータを、ユーザ端末1000の任意のディレクトリ下に記憶させるアプリケーション「スキャンデータ保存アプリ」である。
【0088】
このアプリケーションでは、ユーザ端末1000の所定のディレクトリ構造をMFP2000の操作パネル20fに表示するためにAPI「API02」を使用し、用紙に印刷されている画像をスキャンするためにAPI「API03」を使用している。また、MFP2000のスキャンデータ記憶部が記憶しているスキャンデータを読み出すAPI「API01」を使用している。従って、「API01」、「API02」及び「API03」以外のAPIが呼び出された時は、アプリケーションプログラムが改ざんされていることになる。
【0089】
2つ目は、認証サーバ1010に認証情報を送信して、認証結果を受信するアプリケーション「認証アプリ」である。
【0090】
このアプリケーションでは、MFP2000のAPIを使用しない。従って、何らかのAPIが呼び出されたら、アプリケーションプログラムが改ざんされていることになる。
【0091】
3つ目は、印刷ジョブ蓄積サーバ装置1020から読み出して印刷するアプリケーション「プルプリントアプリ」である。
【0092】
このアプリケーションでは、印刷ジョブ蓄積サーバ装置1020の印刷ジョブ記憶部が記憶している印刷ジョブの識別子の一覧をMFP2000の操作パネル20fに表示するためにAPI「API02」を使用し、印刷ジョブを印刷するためにAPI「API04」を使用している。従って、「API02」及び「API04」以外のAPIが呼び出された時は、アプリケーションプログラムが改ざんされていることになる。
【0093】
<データ>
以下、本実施形態の改ざん検出システム100で用いる主なデータについて図6〜図8を用いて説明する。
【0094】
図6は、API抽出リスト3110の構成及び内容の例を示す図である。
【0095】
このAPI抽出リスト3110は、認証データ生成装置3000のAPI抽出部3100(図3参照)がAPIを抽出する際に、作業メモリに作成される。
【0096】
API抽出リスト3110は、使用有無3111及びAPI名3112で構成され、MFP2000が公開しているAPI1つに対してこの構成の1レコードが登録されている。
【0097】
使用有無3111は、API名3112で示されるAPIを使用しているか否かを示す。「○」は、使用されていることを示し、「×」は使用されていないことを示す。
【0098】
API名3112は、APIの名称を示す。
【0099】
API抽出部3100は、API抽出リスト3110のレコードにAPI名3112として設定されているAPIの名称を、アプリケーションプログラムのソースコードから検索する。検索されたAPIの名称の記載が、APIを実行させるための記載である場合は、そのレコードの使用有無3111として「○」を設定する。ソースコードにAPIの名称が記載されていない、又は、記載されていても実行させるためではない、例えば、コメントとして記載してある等の場合は、「×」を設定する。
【0100】
API抽出部3100は、API抽出リスト3110の全レコードについて、この処理を行う。
【0101】
図7は、APIリスト5210の構成及び内容の例を示す図である。
【0102】
このAPIリスト5210は、認証データ生成装置3000の認証データ生成部3200(図3参照)によって生成され、認証データ3210に含まれる。
【0103】
APIリスト5210は、番号5211及びAPI名5212で構成され、アプリケーション毎に1つ作成される。
【0104】
番号5211は、レコードの番号を示す。すなわち、API名5212で示されるAPIの番号を示す。
【0105】
API名5212は、APIの名称を示す。
【0106】
このAPIリスト5210は、API抽出リスト3110の使用有無3111として「○」が設定されているレコードに、API名3112として設定されているAPIの名称を抽出して生成したものである。
【0107】
従って、API名5212が示すAPIの名称は、アプリケーションプログラムのソースコードにおいて、実行させる形式で記載されているものである。すなわち、そのアプリケーションが実行された場合に、呼び出される可能性があるAPIを示している。
【0108】
図8は、認証データ3210の構成及び内容の例を示す図である。
【0109】
この認証データ3210は、認証データ生成装置3000の認証データ生成部3200(図3参照)によって生成される。
【0110】
認証データ3210は、項目3211及び内容3212で構成され、アプリケーション毎に1つ作成される。
【0111】
項目3211は、認証データ3210に含まれる項目を示す。
【0112】
内容3212は、項目3211で示される項目の内容を示す。
【0113】
例えば、項目3211「アプリ名称」は、この認証データ3210が付与されたアプリケーションプログラムを実行した場合のアプリケーションの名称を示す。項目3211「ベンダー名称」は、アプリケーションプログラムを作成したベンダーの名称を示し、項目3211「アプリ概要」は、アプリケーションの内容を示す。項目3211「有効期限」は、この認証データ3210の有効期限を示す。
【0114】
また、項目3211「認証キー」は、この認証データ3210の正当性を確認するために参照するデータである。また、この「認証キー」で示される鍵を用いて、認証データ3210を暗号化する。
【0115】
項目3211「API情報」は、この認証データ3210が付与されたアプリケーションプログラムで用いられているAPIを示す情報である。内容3212としてAPIリスト5210(図7参照)が設定される。
【0116】
<表示画面>
以下、本実施形態の改ざん検出システム100で用いる表示画面について図9を用いて説明する。ここで説明する表示画面は、MFP2000の操作パネル20fに表示される画面例である。
【0117】
図9は、アプリケーション一覧画面2520の例を示す図である。
【0118】
このアプリケーション一覧画面2520には、ログインしたユーザが登録したアプリケーションの名称及び機能の一覧が表示される。ユーザは、カーソルを移動して実行したいアプリケーションを選択する。図9では、アプリ名が「AP−Scan」のアプリケーションがカーソル2521で選択されている。ここで、「OK」ボタンを押下すると、選択されたアプリケーションが起動される。
【0119】
<動作>
以下、実施形態の改ざん検出システム100の動作について、図10〜図12を用いて説明する。
【0120】
ここでは、次の3つの処理について説明する。
【0121】
1つ目は、認証データ生成装置3000における認証データ3210を生成する処理である。2つ目は、アプリケーションをMFP2000に登録する処理である。3つ目は、MFP2000においてアプリケーションを実行する処理である。
【0122】
<認証データ生成処理>
図10は、認証データ生成装置3000(図3参照)における認証データ3210を生成する処理を示すフローチャートである。
【0123】
ベンダーは、アプリケーションプログラム4010のソースコード(以下、単に「ソースコード」という。)をMFP製造業者に渡して、認証データの付与を依頼する。ソースコードを渡す方法は、ネットワークを経緯して渡す、プログラムを記録した記録媒体を渡す等、いかなる方法であってもよい。アプリケーションプログラム4010が複数のソースコードから成る場合は、すべてのソースコードを渡す。
【0124】
MFP製造業者は、渡されたソースコードを認証データ生成装置3000の作業メモリに記憶させ、インタフェースを介してAPI抽出部3100にAPIの抽出を指示する。
【0125】
API抽出部3100は、作業メモリからソースコードを読み込む(ステップS100)。
【0126】
次に、API抽出部3100は、API抽出リスト3110(図6参照)の全のレコードの使用有無3111として「×」を設定する。API名3112は、予め設定されているものとする。
【0127】
API抽出部3100は、API抽出リスト3110の最初のレコードから最後のレコードまで順に(ステップS140:Yes)、API名3112として設定されているAPIの名称を、アプリケーションプログラムのソースコードから検索する(ステップS110)。
【0128】
APIの名称が検索された場合であって、APIを実行させるための記載である場合は(ステップS120:Yes)、そのレコードの使用有無3111として「○」を設定する(ステップS130)。
【0129】
ソースコードにAPIの名称が記載されていない、又は、記載されていても実行させるためではない、例えば、コメントとして記載してある等の場合は(ステップS120:No)、何も設定しない。すなわち、「×」のままとする。
【0130】
API抽出リスト3110の最後のレコードまで処理したAPI抽出部3100は(ステップS140:No)、次のソースコードが作業メモリに記憶されている場合は(ステップS150:Yes)、ステップS110〜ステップS140の処理を繰り返す。
【0131】
すべてのソースコードからAPIの名称の抽出処理を行ったAPI抽出部3100は、API抽出リスト3110を認証データ生成部3200に渡す。
【0132】
API抽出リスト3110を渡された認証データ生成部3200は、API抽出リスト3110から使用有無3111として「○」が設定されているレコードの、API名3112として設定されているAPIの名称を抜き出してAPIリスト5210を生成する(ステップS160)。
【0133】
APIリスト5210を生成した認証データ生成部3200は、生成したAPIリスト5210を認証データ3210の項目3211「API情報」の内容3212として設定する。また、認証データ生成部3200は、認証データ3210の他の項目3211「アプリ名称」等のそれぞれの内容3212にデータを設定し、認証データ3210を生成する(ステップS170)。
【0134】
認証データ3210を生成した認証データ生成部3200は、認証データ3210の項目3211「認証キー」の内容3212として設定されている鍵を用いて、生成した認証データ3210を暗号化する(ステップS180)。
【0135】
MFP製造業者は、暗号化された認証データ3210をベンダーに渡す。
【0136】
<アプリケーション登録処理>
図11は、アプリケーションをMFP2000に登録する処理を示すフローチャートである。
【0137】
ユーザは、ユーザ端末1000のインタフェースを介して、登録ツール1450を起動し、登録するMFP2000を指定する(ステップS200)。
【0138】
登録ツールは、指定されたMFP2000に、アプリケーションプログラム4011に含まれている暗号化認証データ3210を送信して登録を要求する(ステップS210)。
【0139】
MFP2000は、暗号化認証データ3210及び登録要求を受信すると、アプリ登録部2800に暗号化認証データ3210を渡して、登録を依頼する。
【0140】
依頼を受けたアプリ登録部2800は、内部に鍵を用いて暗号化認証データ3210を復号する(ステップS220)。復号した認証データ3210の項目3211「認証キー」の内容3212として設定されている認証キーが、復号に用いた鍵と同じである場合には、認証データは正当なデータであると判断して肯定的な認証結果とする。内容3212として設定されている認証キーが、復号に用いた鍵と異なる場合に、認証データは正当でないデータであると判断して否定的な認証結果とする。また、項目3211「有効期限」の内容3212として設定されている日時が、現在、すなわち、認証時の日時よりも前である場合には、否定的な認証結果とする。
【0141】
アプリ認証部2810は、認証結果をアプリ登録部2800に渡す。また、認証結果が肯定的である場合には、復号した認証データ3210もアプリ登録部2800に渡す。
【0142】
認証結果を受け取ったアプリ登録部2800は、認証結果が否定的であった場合には(ステップS230:NG)、登録処理を終了し、ユーザ端末1000のその旨通知する。
【0143】
一方、認証結果が肯定的であった場合には(ステップS230:OK)、アプリ登録部2800は、認証データ3210の項目「API情報」の内容3212として設定されているAPIリスト5210を、アプリ記憶部5100に記憶させる(ステップS240)。
【0144】
その後、アプリ登録部2800は、認証データ3210の項目「アプリ名称」の内容3212として設定されているアプリケーションの名称等をユーザ情報記憶部5000に記憶する。この際、登録を要求してきたユーザの識別子(ユーザID)と対応付けて記憶する。また、登録されたアプリケーションを実行する際に必要な情報等を、ユーザ端末1000の登録ツール1450から取得する(ステップS250、ステップS260)。
【0145】
<アプリケーション実行処理>
図12は、MFP2000においてアプリケーションを実行する処理を示すフローチャートである。点線で囲った処理は、起動されたアプリケーションが行う処理であり、アプリケーション毎に異なる。ここでは、改ざん検出処理に関する処理を中心に記載している。従って、実際には、ここで記載した処理以外の処理も行われている。
【0146】
ユーザは、MFP2000を使用するためにログインを行う。具体的には、ユーザが携帯するICカードを、MFP2000に備えられているICカードリーダ20iにかざす。
【0147】
かざされたICカードからユーザIDを読み取ったICカードリーダ20iは、読み取ったユーザIDを操作部2500に渡す(ステップS300)。
【0148】
ユーザIDを受け取った操作部2500は、受け取ったユーザIDをログイン情報認証部2600に渡して認証を依頼する。
【0149】
依頼されたログイン情報認証部2600は、渡されたユーザIDが、MFP2000を使用する権限を有するユーザを示すユーザIDとしてユーザ情報記憶部5000に記憶されているかを確認する。
【0150】
記憶されている場合、ログイン情報認証部2600は肯定的に認証されたと判断し、記憶されていない場合、否定的に認証されたと判断し、その認証結果を操作部2500に返す。
【0151】
認証結果を受け取った操作部2500は、認証結果が否定的であった場合は処理を終了し、認証結果が肯定的であった場合はログインを受け付け、操作パネル20fに初期画面を表示する。
【0152】
ここで、操作部2500は、ユーザが初期画面においてアプリケーション一覧を表示する操作を行ったことを検知した場合、アプリ選択部2700にユーザIDを渡して、アプリケーション一覧画面2520(図9参照)を表示するよう依頼する。
【0153】
依頼を受けたアプリ選択部2700は、ユーザIDと対応付けて記憶してあるアプリケーションの名称等をユーザ情報記憶部5000から読み出して、アプリケーション一覧画面2520を操作パネル20fに表示する(ステップS310)。
【0154】
ここで、ユーザは、実行したいアプリケーションを選択する。具体的には、実行したいアプリケーションの名称にカーソル2521を移動し、「OK」ボタンを押下する。
【0155】
例えば、図9では、アプリケーションの名称が「AP−Scan」のアプリケーションが選択されている。
【0156】
アプリケーションが選択されたことを検出した操作部2500は、選択されたアプリケーションの名称をアプリ選択部2700に通知する(ステップS320)。
【0157】
通知を受けたアプリ選択部2700は、通知されたアプリケーションの名称が示すアプリケーション2400を起動する(ステップS330)。
【0158】
アプリケーション2400は、ユーザ端末1000側のアプリケーション1400を起動する等、必要に応じて初期処理を行う(ステップS340)。
【0159】
初期処理を終えたアプリケーション2400は、ユーザ端末1000に要求する処理を示すXMLデータの生成を送信データ生成部2200に指示し、通信部2100を介してユーザ端末1000に送信する。
【0160】
ユーザ端末1000の受信データ解析部1300は、通信部1100を介して受信したXMLデータを解析し、解析内容に応じてアプリケーション1400に処理を依頼する。
【0161】
アプリケーション1400は、処理に応じてMFP2000が公開するAPIを実行させるためのXMLデータの生成を送信データ生成部1200に指示し、通信部1100を介してMFP2000に送信する。
【0162】
MFP2000の通信部2100を介してXMLデータを受信した受信データ解析部2300は、XMLデータを解析し、呼び出されているAPIを検出する。
【0163】
APIが呼び出されていない場合(ステップS350:No)、受信データ解析部2300は、XMLデータが示す指示をアプリケーション2400に指示する。
【0164】
指示を受けたアプリケーション2400は、処理を行う。
【0165】
一方、APIが呼び出されている場合(ステップS350:Yes)、受信データ解析部2300は、そのAPIの名称がAPIリスト5210に登録されているかを確認する。具体的には、そのAPIの名称が、アプリケーション2400の名称と対応付けてAPIリスト記憶部5200に記憶されているAPIリスト5210の、API名5212として設定されているかを確認する。受信データ解析部2300は、そのAPIの名称が設定されている場合は登録されていると判断し、設定されていない場合は登録されていないと判断する。
【0166】
そのAPIの名称がAPIリスト5210に登録されていると判断した場合(ステップS360:Yes)、受信データ解析部2300は、そのAPIを実行するようアプリケーション2400に指示を出す。指示を受けたアプリケーション2400は、そのAPIを実行する(ステップS370)。
【0167】
アプリケーション2400の処理が終わるまで(ステップS380:No)、ステップS350〜ステップS370の処理を繰り返し、処理が終了したら(ステップS380:Yes)、アプリケーション2400は終了処理を行い、アプリケーション2400を終了する(ステップS390)。
【0168】
一方、ステップS360の処理において、そのAPIの名称がAPIリスト5210に登録されていないと判断した場合(ステップS360:No)、受信データ解析部2300は、エラーメッセージをユーザ端末1000に対して送信し(ステップS372)、アプリケーション2400に終了処理を行わせ、アプリケーション2400を終了させる(ステップS390)。
【0169】
例えば、図5のアプリケーション「スキャンデータ保存アプリ」を実行する場合を例に取ると、アプリケーション「スキャンデータ保存アプリ」が実行されている間に、「API99」という名称のAPIを実行させるようなXMLデータを受信した場合、受信データ解析部2300は、エラーメッセージをユーザ端末1000に対して送信し、アプリケーション「スキャンデータ保存アプリ」を終了させる。
<補足>
以上、本発明の実施形態について説明したが、本発明は上記形態に限らず、以下のようにしてもよい。
(1)実施形態では、APIの名称によって、アプリケーションで呼び出すことが出来るか否かを判断することとしているが、他の条件であってもよい。
【0170】
例えば、APIの名称だけでなく、パラメータの設定値が所定範囲内である場合にのみ、そのAPIを呼び出すことができることとしてもよい。
【0171】
図13に、APIリスト5220の構成及び内容の例を示す。APIリスト5220は、APIリスト5210に、第1パラメータ5223、第2パラメータ5224及び第3パラメータ5225を追加したものである。
【0172】
第1パラメータ5223は、第1パラメータで指定可能なデータの範囲を示している。第2パラメータ5224及び第3パラメータ5225も、同様である。また、「−」は、パラメータが無い、又は、指定可能な範囲が課されていないパラメータであることを示している。
【0173】
例えば、API名5212「API001」のレコードの第2パラメータ5224として「0/1/2」が設定されているので、「0」、「1」、「2」のうちのいずれかを設定することが可能である。従って、「3」が設定された場合は、そのAPIを呼び出すことができない。
【0174】
このAPIリスト5220の第1パラメータ5223等として設定している値は、認証データ生成装置3000のAPI抽出部3100がソースコードからAPIの名称を抽出する際に、同時に抽出する。すなわち、検証時のアプリケーションプログラムにおいてAPIを呼び出す場合にどのような値をパラメータに設定しているかを抽出しておく。そして、実行時に、その値から外れた値をパラメータとして設定したAPIは実行されないようにする。
【0175】
図10の示した認証データ生成処理では、あるAPIの名称をソースコードから検索する場合、APIの名称を検出したら、その後のソースコードは検索しないこととしている。しかし、パラメータの設定範囲を抽出する場合は、ソースコードの最後まで検索してパラメータの設定範囲を抽出する必要がある。
(2)実施形態では、ユーザ端末1000とMFP2000との間の通信は、XML形式のデータを用いることとしているが、他のデータ形式であってもよい。MFP2000側で、呼び出されているAPIを検出できればよい。
(3)実施形態では、APIリスト5210を含んだ認証データ3210を暗号化することとしているが、APIリスト5210を暗号化し、暗号化したAPIリスト5210を認証データ3210に含ませることとしてもよい。また、認証データ3210の認証の方法は、実施形態の例に限られない。
(4)実施形態では、ソースコードに含まれるAPIの名称を抽出することとしているが、他の方法を用いてもよい。
【0176】
例えば、APIに識別コードを振っておき、その識別コードを第1パラメータに設定してAPIを呼び出すこととする。そして、その識別コードを抽出し、API名5212に識別コードを設定したAPIリスト5210を作成することとしてもよい。
【0177】
また、実施形態では、実行時に呼び出すことができる個々のAPIをAPIリスト5210で管理しているが、APIをグループ化して、グループ単位で管理することとしてもよい。例えば、データを読み出すAPIであれば、いずれのAPIでも呼び出し可能とする等である。
【0178】
また、ソースコードから抽出するAPIは、特定のAPIのみに限ることとしてもよい。例えば、適切に実行されなかった場合の影響が大きいAPIである。
(5)改ざん検出システムは、図3等の各装置の構成要素の全部又は一部を、1チップ又は複数チップの集積回路で実現してもよい。
(6)改ざん検出システムは、図3等の各装置の構成要素の全部又は一部を、コンピュータのプログラムで実現してもよいし、その他どのような形態で実施してもよい。
【0179】
コンピュータプログラムの場合、メモリカード、CD−ROM等いかなる記録媒体に書き込まれたものをコンピュータに読み込ませて実行させる形にしてもよいし、ネットワークを経由してプログラムをダウンロードして実行させる形にしてもよい。
【符号の説明】
【0180】
100 改ざん検出システム
20h 印刷装置
20f 操作パネル
100 改ざん検出システム
1000 1001 1002 ユーザ端末
1010 認証サーバ
1020 印刷ジョブ蓄積サーバ装置
1100 2100 通信部
1200 2200 送信データ生成部
1300 2300 受信データ解析部
1400 2400 アプリケーション
1450 登録ツール
1500 アプリケーションプログラム記憶部
2500 操作部
2520 アプリケーション一覧画面
2521 カーソル
2600 ログイン情報認証部
2700 アプリ選択部
2800 アプリ登録部
2810 アプリ認証部
3000 認証データ生成装置
3100 API抽出部
3110 API抽出リスト
3200 認証データ生成部
3210 認証データ
4000 アプリ開発装置
4010 4011 アプリケーションプログラム
5000 ユーザ情報記憶部
5100 アプリ記憶部
5200 APIリスト記憶部
5210 5220 APIリスト
5300 APIプログラム記憶部

【特許請求の範囲】
【請求項1】
アプリケーションプログラムが呼び出すことができる1又は複数のAPI(Application Program Interface)を公開している画像処理装置であって、
1又は複数のアプリケーションプログラムそれぞれが呼び出すことを許可されているAPIを示すAPI情報を、アプリケーションプログラム毎に記憶しているAPI情報記憶手段と、
自装置の外部のアプリケーションプログラムから、APIの呼び出し要求を受け付ける要求受付手段と、
前記要求受付手段で受け付けた要求において呼び出されるAPIが、前記外部のアプリケーションプログラムと対応付けて記憶されているAPI情報によって示されていない場合は、当該APIの呼び出しを抑止する制御手段と
を備えることを特徴とする画像処理装置。
【請求項2】
アプリケーションプログラムと対応付けられている認証情報であって、当該アプリケーションプログラムが呼び出すことを許可されているAPIを示す情報を含む認証情報の認証を行う認証手段と、
前記認証手段が行った認証が肯定的であった場合に、当該認証情報に含まれているAPI情報を、当該アプリケーションと対応付けて前記API記憶手段に記憶させるAPI情報取得手段とを備え、
前記要求受付手段は、前記認証手段によって肯定的な認証が行われた認証情報と対応付けられているアプリケーションプログラムから、APIの呼び出し要求を受け付け、
前記API情報は、前記認証情報を生成する際に、当該認証情報と対応付けられているアプリケーションプログラムから呼び出されているAPIを示す情報である
請求項1に記載の画像処理装置。
【請求項3】
前記API情報は、更に、APIのパラメータとして設定できるデータを示すパラメータ条件を含み、
前記制御手段は、前記検出手段で検出したAPIが、前記API情報によって示されていない場合、又は、前記検出手段で検出したAPIのパラメータとして設定されているデータが前記パラメータ条件を満たさない場合は、当該APIの呼び出しを抑止する
請求項1又は2に記載の画像処理装置。
【請求項4】
アプリケーションプログラムから呼び出すことができる1又は複数のAPIを公開している画像処理装置を含む改ざん検出システムであって、
アプリケーションプログラムから呼び出されているAPIを抽出し、抽出したAPIを示すAPI情報を含んだ認証情報であって、当該アプリケーションプログラムと対応付けた認証情報を生成する認証情報生成手段を備え、
前記画像処理装置は、
自装置の外部から前記認証情報を取得し、取得した前記認証情報を認証する認証手段と、
前記認証手段が肯定的な認証を行った場合に、当該認証情報に含まれているAPI情報を前記アプリケーションプログラムと対応付けてAPI情報記憶手段に記憶させるAPI情報取得手段と、
前記認証手段が肯定的な認証を行った認証情報と対応付けられているアプリケーションプログラムから、APIの呼び出し要求を受け付ける要求受付手段と、
前記要求受付手段で受け付けた要求において呼び出されるAPIが、前記API情報によって示されていない場合は、当該APIの呼び出しを抑止する制御手段とを備える
ことを特徴とする改ざん検出システム。
【請求項5】
アプリケーションプログラムが呼び出すことができる1又は複数のAPIを公開しており、1又は複数のアプリケーションプログラムそれぞれが呼び出すことを許可されているAPIを示すAPI情報を、アプリケーションプログラム毎に記憶しているAPI情報記憶手段を備える画像処理装置に、アプリケーションプログラムの改ざんを検出させる検出方法であって、
自装置の外部のアプリケーションプログラムから、APIの呼び出し要求を受け付けさせ、
受け付けた要求において呼び出されるAPIが、前記外部のアプリケーションプログラムと対応付けて記憶されているAPI情報によって示されていない場合は、当該APIの呼び出しを抑止させる
検出方法。
【請求項6】
アプリケーションプログラムが呼び出すことができる1又は複数のAPIを公開しており、1又は複数のアプリケーションプログラムそれぞれが呼び出すことを許可されているAPIを示すAPI情報を、アプリケーションプログラム毎に記憶しているAPI情報記憶手段を備える画像処理装置に、アプリケーションプログラムの改ざんを検出させるコンピュータプログラムであって、
自装置の外部のアプリケーションプログラムから、APIの呼び出し要求を受け付ける要求受付処理を実行させ、
前記要求受付処理で受け付けた要求において呼び出されるAPIが、前記外部のアプリケーションプログラムと対応付けて記憶されているAPI情報によって示されていない場合は、当該APIの呼び出しを抑止する制御処理を実行させる
コンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2011−233049(P2011−233049A)
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願番号】特願2010−104530(P2010−104530)
【出願日】平成22年4月28日(2010.4.28)
【出願人】(303000372)コニカミノルタビジネステクノロジーズ株式会社 (12,802)
【Fターム(参考)】