(57)【要約】      （修正有）【課題】アプリケーションのセキュリティ管理を管理者に適切に行わせることができるアプリケーション実行装置を提供する。【解決手段】ＭＦＰは、Ｊａｖａ（登録商標）アプリケーションのインストールの開始が指示された際に当該Ｊａｖａアプリケーションの逆アセンブルを実行する。また、ＭＦＰは、Ｊａｖａアプリケーションが利用する暗号モジュールの種別を逆アセンブル済みのＪａｖａアプリケーションに基づいて判別し、判別結果をアプリケーション情報画面３００の暗号利用状況３０７により通知する。【選択図】図３
2019185543.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションにおける暗号機能を実現するための複数の暗号モジュールを備えるアプリケーション実行装置であって、
前記アプリケーションのインストールを開始する要求を受け付けた際に当該アプリケーションをソースコードに変換する逆アセンブルを実行する逆アセンブル実行手段と、
前記アプリケーションの暗号機能を実現する暗号モジュールの種別を逆アセンブル済みのアプリケーションに基づいて判別する判別手段と、
前記判別手段による判別結果の通知制御を行う通知制御手段とを備えることを特徴とするアプリケーション実行装置。
【請求項２】
前記通知制御手段は、前記アプリケーションに関する情報の表示要求を受け付けた際に前記判別結果を表示する制御を行うことを特徴とする請求項１記載のアプリケーション実行装置。
【請求項３】
特定の規格に準拠する規格準拠暗号モジュール及び前記特定の規格に準拠しない規格非準拠暗号モジュールを備え、
前記通知制御手段は、前記暗号機能を実現するために前記規格非準拠暗号モジュールを用いるアプリケーションの実行指示を受け付けた際に警告を通知する制御を行うことを特徴とする請求項１又は２記載のアプリケーション実行装置。
【請求項４】
特定の規格に準拠する規格準拠暗号モジュール及び前記特定の規格に準拠しない規格非準拠暗号モジュールを備え、
前記暗号機能を実現するために前記規格非準拠暗号モジュールを用いるアプリケーションの利用を禁止することを特徴とする請求項１又は２記載のアプリケーション実行装置。
【請求項５】
アプリケーションにおける暗号機能を実現するための複数の暗号モジュールを備えるアプリケーション実行装置と、前記アプリケーション実行装置と通信を行う通信装置とを備える暗号モジュール情報通知システムであって、
前記アプリケーション実行装置へ前記アプリケーションのインストールを開始する要求を受け付けた際に当該アプリケーションをソースコードに変換する逆アセンブルを実行する逆アセンブル実行手段と、
前記アプリケーションの暗号機能を実現する暗号モジュールの種別を逆アセンブル済みのアプリケーションに基づいて判別する判別手段と、
前記判別手段による判別結果の通知制御を行う通知制御手段とを備えることを特徴とする暗号モジュール情報通知システム。
【請求項６】
前記逆アセンブル実行手段は、前記通信装置に設けられることを特徴とする請求項５記載の暗号モジュール情報通知システム。
【請求項７】
前記通知制御手段は、前記アプリケーションに関する情報の表示要求を受け付けた際に前記判別結果を表示する制御を行うことを特徴とする請求項５又は６記載の暗号モジュール情報通知システム。
【請求項８】
特定の規格に準拠する規格準拠暗号モジュール及び前記特定の規格に準拠しない規格非準拠暗号モジュールを備え、
前記通知制御手段は、前記暗号機能を実現するために前記規格非準拠暗号モジュールを用いるアプリケーションの実行指示を受け付けた際に警告を通知する制御を行うことを特徴とする請求項５乃至７のいずれか１項に記載の暗号モジュール情報通知システム。
【請求項９】
特定の規格に準拠する規格準拠暗号モジュール及び前記特定の規格に準拠しない規格非準拠暗号モジュールを備え、
前記暗号機能を実現するために前記規格非準拠暗号モジュールを用いるアプリケーションの利用を禁止することを特徴とする請求項５乃至７のいずれか１項に記載の暗号モジュール情報通知システム。
【請求項１０】
アプリケーションにおける暗号機能を実現するための複数の暗号モジュールを備えるアプリケーション実行装置にインストールされたアプリケーションの暗号機能を実現する暗号モジュールに関する暗号モジュール情報通知方法であって、
前記アプリケーション実行装置へ前記アプリケーションのインストールを開始する要求を受け付けた際に当該アプリケーションをソースコードに変換する逆アセンブルを実行する逆アセンブル実行ステップと、
前記アプリケーションの暗号機能を実現する暗号モジュールの種別を逆アセンブル済みのアプリケーションに基づいて判別する判別ステップと、
前記判別ステップにおける判別結果の通知制御を行う通知制御ステップとを有することを特徴とする暗号モジュール情報通知方法。
【請求項１１】
アプリケーションにおける暗号機能を実現するための複数の暗号モジュールを備えるアプリケーション実行装置にインストールされたアプリケーションの暗号機能を実現する暗号モジュールに関する暗号モジュール情報通知方法をコンピュータに実行させるプログラムであって、
前記暗号モジュール情報通知方法は、
前記アプリケーション実行装置へ前記アプリケーションのインストールを開始する要求を受け付けた際に当該アプリケーションをソースコードに変換する逆アセンブルを実行する逆アセンブル実行ステップと、
前記アプリケーションの暗号機能を実現する暗号モジュールの種別を逆アセンブル済みのアプリケーションに基づいて判別する判別ステップと、
前記判別ステップにおける判別結果の通知制御を行う通知制御ステップとを有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション実行装置、暗号モジュール情報通知システム、暗号モジュール情報通知方法、及びプログラムに関する。
【背景技術】
【０００２】
コピー機能、プリント機能、スキャン機能、及びＦＡＸ送受信機能等の標準機能の他に、機能を拡張可能なアプリケーション実行装置としてのＭＦＰ(Multi Function Peripheral)が知られている。ＭＦＰは、機能を拡張するためのアプリケーション（以下、「拡張アプリケーション」という。）を外部装置等から取得し、取得した拡張アプリケーションをインストールする。ＭＦＰでは、ユーザによる拡張アプリケーションの実行指示に応じて当該拡張アプリケーションをＪａｖａＶＭ（Java Virtual Machine）等の所定の実行環境で動作させる。
【０００３】
ところで、ＭＦＰでは、拡張アプリケーションを実行する際に、第三者への情報漏洩やデータの改ざんを防止するために、暗号化処理が行われることがある。暗号化処理は、例えば、ＳＳＬ／ＴＬＳ通信における暗号化通信や、画像データのバックアップにおけるバックアップデータの暗号化処理である。このような暗号化処理を行うために、ＭＦＰには、暗号化機能及び復号化機能を備えたソフトウェアモジュールである暗号モジュールが予め組み込まれている。ＭＦＰには、特定のセキュリティレベルを担保する暗号化処理を実施可能な暗号モジュールとして、例えば、ＦＩＰＳ１４０−２に準拠する規格準拠暗号モジュールが組み込まれている。ＦＩＰＳ１４０−２は、暗号に関する標準規格であり、安全な暗号アルゴリズムを正しく実装していることを認証するための規格である。規格準拠暗号モジュールを用いた暗号化処理では、ＲＣ４やＲＳＡ１０２４等の脆弱と見做される暗号アルゴリズムが使用されない。一方、ＭＦＰは、比較的古い業務システムとの連携が要求され、一部のアプリケーションにおいてＲＣ４やＲＳＡ１０２４が必要となる場合がある。このような場合に対応して、ＭＦＰには、規格準拠暗号モジュールの他に、ＦＩＰＳ１４０−２に準拠しない規格非準拠暗号モジュールも組み込まれている。ＭＦＰでは、アプリケーション毎に使用する暗号モジュールが切り替えられる（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１３３８１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のＭＦＰでは、上述した暗号モジュールの切り替えがＭＦＰの内部処理で行われていた。このため、従来では、ＭＦＰの管理者は、特定のセキュリティレベルが要求されるアプリケーションの暗号化処理において規格準拠暗号モジュールが使用されていることを確認することができない。その結果、ＭＦＰの管理者が各アプリケーションのセキュリティ管理を適切に行うことができないという問題が生じる。
【０００６】
本発明の目的は、アプリケーションのセキュリティ管理を管理者に適切に行わせることができるアプリケーション実行装置、暗号モジュール情報通知システム、暗号モジュール情報通知方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明のアプリケーション実行装置は、アプリケーションにおける暗号機能を実現するための複数の暗号モジュールを備えるアプリケーション実行装置であって、前記アプリケーションのインストールを開始する要求を受け付けた際に当該アプリケーションをソースコードに変換する逆アセンブルを実行する逆アセンブル実行手段と、前記アプリケーションの暗号機能を実現する暗号モジュールの種別を逆アセンブル済みのアプリケーションに基づいて判別する判別手段と、前記判別手段による判別結果の通知制御を行う通知制御手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、アプリケーションのセキュリティ管理を管理者に適切に行わせることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係るアプリケーション実行装置としてのＭＦＰの構成を概略的に示すブロック図である。
【図２】図１のＭＦＰのソフトウェア構成を概略的に示すブロック図である。
【図３】図２のＪａｖａアプリ管理部によって表示制御されるアプリケーション情報画面の一例を示す図である。
【図４】図２のプロバイダ定義ファイルの一例を示す図である。
【図５】図１のＭＦＰによって実行されるインストール処理の手順を示すフローチャートである。
【図６】図１のＨＤＤに記憶される暗号利用状況の一例を示す図である。
【図７】図１の操作部に表示される設定画面の一例を示す図である。
【図８】図１のＭＦＰによって実行されるアプリ制御処理の手順を示すフローチャートである。
【図９】図２のＪａｖａアプリ管理部によって表示制御されるアプリケーション情報画面の一例を示す図である。
【図１０】図２のＪａｖａアプリ管理部によって表示制御される警告画面の一例を示す図である。
【図１１】本発明の実施の形態に係る暗号モジュール情報通知システムの構成を概略的に示すブロック図である。
【図１２】図１１の暗号モジュール情報通知システムのソフトウェア構成を概略的に示すブロック図である。
【図１３】図１１の暗号モジュール情報通知システムによって実行されるインストール処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
【００１１】
図１は、本発明の実施の形態に係るアプリケーション実行装置としてのＭＦＰ１００の構成を概略的に示すブロック図である。図１において、ＭＦＰ１００は、制御部１０１、操作部１０７、プリンタ１０９、及びスキャナ１１１を備える。制御部１０１は、操作部１０７、プリンタ１０９、及びスキャナ１１１と接続されている。また、制御部１０１は、ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、ＨＤＤ１０５、操作部Ｉ／Ｆ１０６、プリンタＩ／Ｆ１０８、スキャナＩ／Ｆ１１０、ＦＡＸ  Ｉ／Ｆ１１２、及びネットワークＩ／Ｆ１１３を備える。ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、ＨＤＤ１０５、操作部Ｉ／Ｆ１０６、プリンタＩ／Ｆ１０８、スキャナＩ／Ｆ１１０、ＦＡＸ  Ｉ／Ｆ１１２、及びネットワークＩ／Ｆ１１３はシステムバス１１４を介して互いに接続されている。
【００１２】
ＭＦＰ１００には、コピー機能、スキャン機能、及び通信機能等の標準機能が予め組み込まれている。また、ＭＦＰ１００では、後述する図２のＪａｖａアプリケーション２０１をインストールすることで、上記Ｊａｖａアプリケーション２０１に対応する機能を拡張可能である。さらに、ＭＦＰ１００は、ＬＡＮケーブル（不図示）を介して接続されたネットワーク上の外部装置（不図示）に対し、ＭＦＰ１００にインストールされた後述するＪａｖａアプリケーション２０１の管理機能を提供する。制御部１０１はＭＦＰ１００全体の動作を制御する。ＣＰＵ１０２は、ＲＯＭ１０３に記憶されたプログラムを読み出し、読取制御や送信制御等の制御を行う。ＲＡＭ１０４は、ＣＰＵ１０２の主メモリとして、また、各データの一時記憶領域として用いられる。ＨＤＤ１０５は、画像データやプログラムを記憶する。操作部Ｉ／Ｆ１０６は、操作部１０７及び制御部１０１を接続する。操作部１０７は、ＭＦＰ１００の各種設定を行う設定画面を表示する。また、操作部１０７は、ユーザによる指示を受け付ける。プリンタＩ／Ｆ１０８は、プリンタ１０９及び制御部１０１を接続する。プリンタＩ／Ｆ１０８は、例えば、制御部１０１から取得した画像データをプリンタ１０９に転送する。プリンタ１０９は、プリンタＩ／Ｆ１０８から転送された画像データに基づいて印刷処理を行う。スキャナＩ／Ｆ１１０は、スキャナ１１１及び制御部１０１を接続する。スキャナ１１１は、原稿を読み取って得た情報に基づいてスキャン画像データを生成する。スキャナ１１１は、上記スキャン画像データをスキャナＩ／Ｆ１１０を介して制御部１０１に送信する。ＦＡＸ  Ｉ／Ｆ１１２は、制御部１０１を電話線（不図示）に接続する。ＦＡＸ  Ｉ／Ｆ１１２は、上記電話線を介してＦＡＸデータの送受信を行う。ネットワークＩ／Ｆ１１３は、制御部１０１を上記ＬＡＮケーブルに接続する。ネットワークＩ／Ｆ１１３は、上記ＬＡＮケーブルを介して接続されたネットワーク上の外部装置とデータ通信を行う。例えば、ネットワークＩ／Ｆ１１３は、ＬＡＮケーブルを介して接続されたネットワーク上の外部装置から印刷指示を受信し、また、印刷指示に対する応答を送信する。
【００１３】
図２は、図１のＭＦＰ１００のソフトウェア構成を概略的に示すブロック図である。図２において、ＭＦＰ１００は、ソフトウェアモジュールの動作環境として、ＶＭ環境及びネイティブ環境の２つの階層を有する。ＭＦＰ１００では、インストールされたＪａｖａアプリケーション２０１をＶＭ環境で動作させ、また、ＭＦＰ１００に予め組み込まれたネイティブアプリケーション２１１をネイティブ環境で動作させる。
【００１４】
ＶＭ環境において、ＪａｖａＶＭ２００は、ＭＦＰ１００の機能を拡張するためにインストールされたＪａｖａアプリケーション２０１をＪａｖａアプリ管理部２０２（通知制御手段）の指示に基づいてＣＰＵ１０２に実行させる。Ｊａｖａアプリケーション２０１は、Ｊａｖａ言語で記述されプログラムがＪａｖａ固有のバイトコードに変換されたモジュールである。ＣＰＵ１０２は、上記バイトコードに変換された状態のＪａｖａアプリケーション２０１を実行して上記Ｊａｖａアプリケーション２０１に対応する機能を実現可能である。一方、ＣＰＵ１０２は、上記バイトコードに変換された状態のＪａｖａアプリケーション２０１に対し、Ｊａｖａアプリケーション２０１の詳細な機能を把握するための機能解析を行うことができない。なお、本実施の形態では、説明を容易にするために、図２にＪａｖａアプリケーション２０１を１つのみ示すが、ＭＦＰ１００は、複数の異なる種別のＪａｖａアプリケーションをインストール可能である。Ｊａｖａアプリ管理部２０２は、ＭＦＰ１００にインストール済みのＪａｖａアプリケーションに関する管理機能を、外部装置（不図示）に対し、ネットワークＩ／Ｆ１１３を介して提供する。例えば、Ｊａｖａアプリ管理部２０２は、管理機能要求（表示要求）を行った外部装置の表示部（不図示）に、図３のアプリケーション情報画面３００を表示させる。
【００１５】
アプリケーション情報画面３００は、アプリケーション名３０１、アプリケーションの状態３０２、暗号利用状況３０７、入力欄３０８、及びインストールボタン３０９を備える。アプリケーション名３０１には、ＭＦＰ１００にインストール済みのＪａｖａアプリケーションの名称が表示される。アプリケーションの状態３０２には、ＭＦＰ１００にインストール済みのＪａｖａアプリケーションの状態が表示される。さらに、アプリケーションの状態３０２には、ＭＦＰ１００にインストール済みの各Ｊａｖａアプリケーションの開始指示や停止指示を行うための操作ボタンが表示される。例えば、インストール済みのＪａｖａアプリケーションであるファイル送信アプリが実行中である場合、上記ファイル送信アプリのアプリケーションの状態３０２には、図３に示すように、実行中を示す開始３０３が表示される。さらに、上記ファイル送信アプリのアプリケーションの状態３０２には、図３に示すように、ファイル送信アプリの実行の停止指示を行うための停止ボタン３０４が表示される。
【００１６】
一方、インストール済みのＪａｖａアプリケーションであるコピーアプリが停止中である場合、上記コピーアプリのアプリケーションの状態３０２には、図３に示すように、停止中を示す停止３０５が表示される。さらに、上記コピーアプリのアプリケーションの状態３０２には、図３に示すように、コピーアプリの実行の開始指示を行うための開始ボタン３０６が表示される。このように、ユーザはアプリケーション情報画面３００から、ＭＦＰ１００にインストール済みのＪａｖａアプリケーションに関する情報の確認や、Ｊａｖａアプリケーションの実行に関する指示を行うことができる。また、ユーザはアプリケーション情報画面３００から、外部装置に格納されたＪａｖａアプリケーションをＭＦＰ１００にインストールする処理の開始指示を行うことができる。例えば、ユーザがＪａｖａアプリケーション２０１の格納場所を示すファイルパスを入力欄３０８に入力し、さらにインストールボタン３０９を選択すると、Ｊａｖａアプリケーション２０１が外部装置からＭＦＰ１００に送信される。ＭＦＰ１００は、受信したＪａｖａアプリケーション２０１をＨＤＤ１０５に格納する。また、ＭＦＰ１００は、Ｊａｖａアプリ管理部２０２によってＪａｖａアプリケーション２０１のインストールを開始する。
【００１７】
図２に戻り、逆アセンブル実行部２０３は、Ｊａｖａアプリ管理部２０２の指示に基づいてＪａｖａアプリケーション２０１に逆アセンブルを施す。逆アセンブルでは、Ｊａｖａアプリケーション２０１がＪａｖａ固有のバイトコードからＪａｖａ言語で記述されたＪａｖａコード（ソースコード）に変換される。これにより、ＣＰＵ１０２は、Ｊａｖａアプリケーション２０１の詳細な機能を把握するための機能解析を実施可能となる。逆アセンブル済みのＪａｖａアプリケーション２０１はＨＤＤ１０５に記憶される。
【００１８】
ＪａｖａＶＭ２００には、Ｊａｖａアプリケーション２０１に暗号機能を提供するソフトウェアモジュールとして複数の暗号プロバイダが予め組み込まれている。具体的に、ＪａｖａＶＭ２００には、ＦＩＰＳ暗号プロバイダ２０４及びｎｏｎＦＩＰＳ暗号プロバイダ２０５が組み込まれている。ＦＩＰＳ暗号プロバイダ２０４は、ＦＩＰＳ１４０−２に準拠するＦＩＰＳ暗号モジュール２０９（規格準拠暗号モジュール）を用いた暗号機能を提供する。ＦＩＰＳ１４０−２は、暗号に関する標準規格であり、安全な暗号アルゴリズムを正しく実装していることを認証するための規格である。ｎｏｎＦＩＰＳ暗号プロバイダ２０５は、ＦＩＰＳ１４０−２に準拠しないｎｏｎＦＩＰＳ暗号モジュール２１０（規格非準拠暗号モジュール）を用いた暗号機能を提供する。ここで、ＭＦＰ１００では、暗号機能を利用する際、セキュリティの観点において、ＦＩＰＳ暗号モジュール２０９を使用するのが好ましい。しかし、ＦＩＰＳ暗号モジュール２０９は、利用可能な暗号アルゴリズムが限られるので、ＭＦＰ１００は、例えば、ＲＣ４といった危殆化した暗号アルゴリズムを利用する外部装置と暗号化通信を行うことができない。すなわち、ＭＦＰ１００において使用可能な暗号モジュールがＦＩＰＳ暗号モジュール２０９のみであると、通信相手が制限されてしまうという問題が生じる。これに対し、ＭＦＰ１００では、ＦＩＰＳ暗号モジュール２０９及びｎｏｎＦＩＰＳ暗号モジュール２１０の両方が組み込まれ、暗号機能を利用するアプリケーション毎に暗号モジュールが切り替えられる。なお、本実施の形態では、２つの暗号プロバイダがＪａｖａＶＭ２００に組み込まれている場合について説明するが、３つ以上の暗号プロバイダがＪａｖａＶＭ２００に組み込まれていても良い。
【００１９】
ＪａｖａＶＭ２００は該ＪａｖａＶＭ２００の起動時に、プロバイダ定義ファイル２０６に設定された暗号プロバイダを１つずつ呼び出す。プロバイダ定義ファイル２０６には、図４に示すように、ＭＦＰ１００に予め組み込まれた全ての暗号プロバイダの名称及び優先順位が設定されている。ＪａｖａＶＭ２００に呼び出された暗号プロバイダは、ＪａｖａＶＭ２００に登録される。このとき、プロバイダ定義ファイル２０６に基づいて、呼び出された暗号プロバイダに対応する優先順位も登録される。例えば、図４のプロバイダ定義ファイル２０６に基づいて、ＦＩＰＳ暗号プロバイダ２０４が優先順位１で登録され、また、ｎｏｎＦＩＰＳ暗号プロバイダ２０５が優先順位２で登録される。ＪａｖａＶＭ２００では、登録された暗号プロバイダがＪａｖａアプリケーション２０１に暗号機能を提供可能である。
【００２０】
Ｊａｖａアプリケーション２０１は、暗号機能を利用する際にＪａｖａ暗号部２０７に暗号機能の利用要求を行う。暗号機能の利用要求では、使用する暗号プロバイダを指定可能である。例えば、ｎｏｎＦＩＰＳ暗号プロバイダ２０５を指定した暗号機能の利用要求を受信した場合、Ｊａｖａ暗号部２０７は、ｎｏｎＦＩＰＳ暗号プロバイダ２０５を呼び出す。ｎｏｎＦＩＰＳ暗号プロバイダ２０５は、Ｎａｔｉｖｅ暗号部２０８を介してｎｏｎＦＩＰＳ暗号モジュール２１０を用いた暗号機能をＪａｖａアプリケーション２０１に提供する。一方、暗号プロバイダが指定されない暗号機能の利用要求を受信した場合、Ｊａｖａ暗号部２０７は、ＪａｖａＶＭ２００に登録された各暗号プロバイダの優先順位に従って、例えば、優先順位が最上位のＦＩＰＳ暗号プロバイダ２０４を呼び出す。ＦＩＰＳ暗号プロバイダ２０４は、Ｎａｔｉｖｅ暗号部２０８を介してＦＩＰＳ暗号モジュール２０９を用いた暗号機能をＪａｖａアプリケーション２０１に提供する。なお、ＶＭ環境とネイティブ環境の間の関数呼び出しでは、ＪＮＩ（Java Native Interface）が利用される。
【００２１】
ネイティブ環境では、ネイティブアプリケーション２１１が実行される。ネイティブアプリケーション２１１は、例えば、Ｃ言語で記述されたプログラムが機械語コードに変換されたネイティブコードで構成される。ネイティブアプリケーション２１１は、コピー、プリント、スキャン、ＦＡＸ送受信等の標準機能を実行する。ネイティブアプリケーション２１１が暗号機能を利用する場合、Ｎａｔｉｖｅ暗号部２０８を介してｎｏｎＦＩＰＳ暗号モジュール２１０又はＦＩＰＳ暗号モジュール２０９が用いられる。
【００２２】
図５は、図１のＭＦＰ１００によって実行されるインストール処理の手順を示すフローチャートである。図５の処理は、ＣＰＵ１０２がＲＯＭ１０３に格納されたプログラムを実行することによって行われる。図５の処理は、ユーザが外部装置に表示されたアプリケーション情報画面３００からアプリケーションのインストールの開始を指示した際に実行される。図５の処理は、一例として、ユーザが外部装置からＪａｖａアプリケーション２０１のインストールの開始を指示し、外部装置からＪａｖａアプリケーション２０１が送信されたことを前提とする。ＭＦＰ１００は、上記Ｊａｖａアプリケーション２０１を受信すると、受信したＪａｖａアプリケーション２０１をＨＤＤ１０５に格納し、その後、Ｊａｖａアプリ管理部２０２にＪａｖａアプリケーション２０１のインストール指示を行う。
【００２３】
図５において、ＣＰＵ１０２は、Ｊａｖａアプリ管理部２０２にＪａｖａアプリケーション２０１のインストール指示を行う（ステップＳ５０１）。次いで、ＣＰＵ１０２は逆アセンブル実行部２０３により、Ｊａｖａアプリケーション２０１に逆アセンブルを施す（ステップＳ５０２）。これにより、Ｊａｖａアプリケーション２０１はバイトコードからＪａｖａコードに変換され、ＣＰＵ１０２がＪａｖａアプリケーション２０１の機能解析を実施可能となる。なお、逆アセンブル済みのＪａｖａアプリケーション２０１はＨＤＤ１０５に記憶される。次いで、ＣＰＵ１０２はＪａｖａアプリ管理部２０２により、ＨＤＤ１０５に記憶された逆アセンブル済みのＪａｖａアプリケーション２０１の機能解析を行う。ＣＰＵ１０２は、解析結果に基づいてＪａｖａアプリケーション２０１が暗号機能を利用するアプリケーションであるか否かを判別する。具体的に、ＣＰＵ１０２は、Ｊａｖａアプリケーション２０１が暗号ＡＰＩの呼び出しを行うか否かを判別する（ステップＳ５０３）。ＭＦＰ１００では、暗号機能を利用するアプリケーションが暗号ＡＰＩの呼び出しを行う。
【００２４】
ステップＳ５０３の判別の結果、Ｊａｖａアプリケーション２０１が暗号ＡＰＩの呼び出しを行わないとき、ＣＰＵ１０２は、Ｊａｖａアプリケーション２０１の暗号利用状況として、「暗号利用なし」をＨＤＤ１０５に記憶する（ステップＳ５０４）。次いで、ＣＰＵ１０２は、Ｊａｖａアプリケーション２０１のインストールを開始し（ステップＳ５０５）、本処理を終了する。
【００２５】
ステップＳ５０３の判別の結果、Ｊａｖａアプリケーション２０１が暗号ＡＰＩの呼び出しを行うとき、ＣＰＵ１０２は、上記解析結果に基づいてＪａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号ＡＰＩの呼び出しを行うか否かを判別する（ステップＳ５０６）。ＭＦＰ１００では、ｎｏｎＦＩＰＳ暗号モジュール２１０による暗号機能を利用するアプリケーションがｎｏｎＦＩＰＳ暗号ＡＰＩの呼び出しを行う。
【００２６】
ステップＳ５０６の判別の結果、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号ＡＰＩの呼び出しを行うとき、ＣＰＵ１０２はＪａｖａアプリケーション２０１の暗号利用状況として、「ｎｏｎＦＩＰＳ」をＨＤＤ１０５に記憶する（ステップＳ５０７）。次いで、ＣＰＵ１０２はステップＳ５０５以降の処理を行う。
【００２７】
ステップＳ５０６の判別の結果、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号ＡＰＩの呼び出しを行わないとき、ＣＰＵ１０２は、上記解析結果に基づいてＪａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号プロバイダ２０５指定の暗号ＡＰＩの呼び出しを行うか否かを判別する（ステップＳ５０８）。
【００２８】
ステップＳ５０８の判別の結果、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号プロバイダ２０５指定の暗号ＡＰＩの呼び出しを行うとき、ＣＰＵ１０２はステップＳ５０７以降の処理を行う。ステップＳ５０８の判別の結果、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号プロバイダ２０５指定の暗号ＡＰＩの呼び出しを行わないとき、ＣＰＵ１０２はＪａｖａアプリケーション２０１の暗号利用状況として、「ＦＩＰＳ」をＨＤＤ１０５に記憶する（ステップＳ５０９）。このようにして本実施の形態では、逆アセンブル済みのＪａｖａアプリケーション２０１に基づいてＪａｖａアプリケーション２０１の暗号機能の要否やＪａｖａアプリケーション２０１が使用する暗号モジュールの種別が判別される。また、判別結果がＪａｖａアプリケーション２０１の暗号利用状況としてＨＤＤ１０５に記憶される。例えば、ＦＩＰＳ暗号モジュール２０９による暗号機能を利用するファイル送信アプリ、ｎｏｎＦＩＰＳ暗号モジュール２１０による暗号機能を利用するプリントアプリ、及び暗号機能を利用しないコピーアプリがそれぞれＭＦＰ１００にインストールされると、図６に示すように、各アプリの暗号利用状況がＨＤＤ１０５に記憶される。各アプリの暗号利用状況は、外部装置から管理機能要求を受け付けた際に外部装置の表示部にアプリケーション情報画面３００の暗号利用状況３０７として表示される。次いで、ＣＰＵ１０２はステップＳ５０５以降の処理を行う。
【００２９】
上述した実施の形態によれば、Ｊａｖａアプリケーション２０１のインストールの開始が指示された際に当該Ｊａｖａアプリケーション２０１の逆アセンブルが実行される。また、Ｊａｖａアプリケーション２０１が使用する暗号モジュールの種別が逆アセンブル済みのＪａｖａアプリケーション２０１に基づいて判別され、判別結果である暗号利用状況が通知される。これにより、ＭＦＰ１００の管理者は、Ｊａｖａアプリケーション２０１における暗号機能で用いられる暗号モジュールを確認することができ、もって、ＭＦＰ１００にインストールされたアプリケーションのセキュリティ管理を適切に行うことができる。
【００３０】
また、上述した実施の形態では、Ｊａｖａアプリケーション２０１の管理機能要求を受け付けた際に暗号利用状況が表示される。これにより、ＭＦＰ１００の管理者が所望するタイミングで暗号利用状況をＭＦＰ１００の管理者に知らせることができる。
【００３１】
以上、本発明について、上述した実施の形態を用いて説明したが、本発明は上述した実施の形態に限定されるものではない。例えば、ＭＦＰ１００にインストールされたＪａｖａアプリケーション２０１の動作を制御するための動作制御情報をユーザに設定させても良い。
【００３２】
ここで、ＦＩＰＳ１４０−２の準拠を要求するような高いセキュリティレベルの環境で利用されるＭＦＰ１００では、ｎｏｎＦＩＰＳ暗号モジュールがユーザによって不用意に使用されないように制御する必要がある。これに対応して、本実施の形態では、ＭＦＰ１００にインストールされたＪａｖａアプリケーション２０１の動作制御情報を図７の設定画面７００からユーザに設定させる。設定画面７００は操作部１０７に表示される。設定画面７００は、禁止ボタン７０１、警告ボタン７０２、許可ボタン７０３、及びＯＫボタン７０４を備える。禁止ボタン７０１、警告ボタン７０２、許可ボタン７０３の何れかが設定された状態でＯＫボタン７０４がユーザに選択されると、設定されたボタンを示す情報がＪａｖａアプリケーション２０１の動作制御情報としてＨＤＤ１０５に記憶される。なお、本実施の形態では、ＭＦＰ１００に異なる種別の複数のＪａｖａアプリケーションがインストールされている場合、ユーザは設定画面７００を操作して、ＭＦＰ１００にインストール済みの各Ｊａｖａアプリケーションの動作制御情報を設定可能である。
【００３３】
図８は、図１のＭＦＰ１００によって実行されるアプリ制御処理の手順を示すフローチャートである。図８の処理も、ＣＰＵ１０２がＲＯＭ１０３に格納されたプログラムを実行することによって行われる。図８の処理は、ＭＦＰ１００が外部装置から該ＭＦＰ１００にインストール済みのＪａｖａアプリケーションの管理機能要求を受け付けた際に実行される。図８の処理では、一例として、Ｊａｖａアプリケーションであるファイル送信アプリ、プリントアプリ、及びコピーアプリがＭＦＰ１００にインストール済みであることを前提とする。ＨＤＤ１０５には、図６の暗号利用状況が既に記憶され、設定画面７００で設定された各Ｊａｖａアプリケーションの動作制御情報もＨＤＤ１０５に記憶されている。
【００３４】
図８において、ＣＰＵ１０２は、インストール済みのＪａｖａアプリケーションの中から一のＪａｖａアプリケーションを特定し、特定した一のＪａｖａアプリケーションの暗号利用状況が「ｎｏｎＦＩＰＳ」であるか否かを判別する（ステップＳ８０１）。
【００３５】
ステップＳ８０１の判別の結果、上記暗号利用状況が「ｎｏｎＦＩＰＳ」であるとき、ＣＰＵ１０２は、ＨＤＤ１０５に記憶された一のＪａｖａアプリケーションの動作制御情報を取得する。次いで、ＣＰＵ１０２は、取得した動作制御情報が禁止ボタン７０１を示すか否かを判別する（ステップＳ８０２）。
【００３６】
ステップＳ８０２の判別の結果、動作制御情報が禁止ボタン７０１を示すとき、ＣＰＵ１０２は、上記一のＪａｖａアプリケーションを開始不可能なアプリケーションとして記憶し（ステップＳ８０３）、後述するステップＳ８０７の処理を行う。開始不可能なアプリケーションとして記憶されたＪａｖａアプリケーションは、例えば、図９（ａ）のプリントアプリのように、アプリケーション情報画面３００のアプリケーションの状態３０２に、開始不可ボタン９０１が表示される。ユーザが開始不可ボタン９０１を押下しても、ＭＦＰ１００はプリントアプリを実行しない。
【００３７】
ステップＳ８０２の判別の結果、動作制御情報が禁止ボタン７０１を示さないとき、ＣＰＵ１０２は、動作制御情報が警告ボタン７０２を示すか否かを判別する（ステップＳ８０４）。
【００３８】
ステップＳ８０４の判別の結果、動作制御情報が警告ボタン７０２を示すとき、ＣＰＵ１０２は、上記一のＪａｖａアプリケーションを、警告画面を表示するアプリケーションとして記憶し（ステップＳ８０５）、後述するステップＳ８０７の処理を行う。警告画面を表示するアプリケーションとして記憶されたＪａｖａアプリケーションは、例えば、図９（ｂ）のプリントアプリのように、アプリケーション情報画面３００のアプリケーションの状態３０２に、警告確認ボタン９０２が表示される。ユーザが警告確認ボタン９０２を押下すると、外部装置の表示部には図１０の警告画面１０００が表示される。警告画面１０００には、メッセージ１００１、開始ボタン１００２、及び停止ボタン１００３が表示される。メッセージ１００１は、上記プリントアプリの実行の意思を確認するメッセージである。開始ボタン１００２がユーザに選択されると、ＭＦＰ１００は、上記プリントアプリの実行を開始する。停止ボタン１００３がユーザに選択されると、外部装置の表示部の表示が警告画面１０００から図９（ｂ）のアプリケーション情報画面３００に遷移する。
【００３９】
ステップＳ８０４の判別の結果、動作制御情報が警告ボタン７０２を示さないとき、又はステップＳ８０１の判別の結果、特定した一のＪａｖａアプリケーションの暗号利用状況が「ｎｏｎＦＩＰＳ」でないとき、ＣＰＵ１０２は、上記一のＪａｖａアプリケーションを開始可能なアプリケーションとして記憶する（ステップＳ８０６）。開始可能なＪａｖａアプリケーションとして記憶されたＪａｖａアプリケーションは、例えば、図３のコピーアプリのように、アプリケーション情報画面３００のアプリケーションの状態３０２に、開始ボタン３０６が表示される。次いで、ＣＰＵ１０２は、インストール済みの全てのＪａｖａアプリケーションの処理を完了したか否かを判別する（ステップＳ８０７）。
【００４０】
ステップＳ８０７の判別の結果、インストール済みの何れかのＪａｖａアプリケーションの処理を完了しないとき、ＣＰＵ１０２はステップＳ８０１の処理に戻る。ステップＳ８０７の判別の結果、インストール済みの全てのＪａｖａアプリケーションの処理を完了したとき、ＣＰＵ１０２は本処理を終了する。
【００４１】
上述した実施の形態では、暗号機能を実現するためにｎｏｎＦＩＰＳ暗号モジュール２１０を使用するＪａｖａアプリケーションの実行指示を受け付けた際に警告が通知される。これにより、ｎｏｎＦＩＰＳ暗号モジュール２１０を用いた暗号化処理が意図せずに実行されるのを抑制することができる。
【００４２】
また、上述した実施の形態では、暗号機能を実現するためにｎｏｎＦＩＰＳ暗号モジュール２１０を使用するＪａｖａアプリケーションの利用が禁止される。これにより、ｎｏｎＦＩＰＳ暗号モジュール２１０を用いた暗号化処理が意図せずに実行されるのを確実に防止することができる。
【００４３】
なお、上述した実施の形態では、アプリケーション情報画面３００や警告画面１０００が外部装置の表示部に表示される場合について説明したが、アプリケーション情報画面３００や警告画面１０００はＭＦＰ１００の操作部１０７に表示されても良い。
【００４４】
また、上述した実施の形態では、Ｊａｖａアプリケーション２０１の逆アセンブルをＭＦＰ１００以外の他の装置が行っても良い。
【００４５】
図１１は、本発明の実施の形態に係る暗号モジュール情報通知システム１１００の構成を概略的に示すブロック図である。
【００４６】
図１１において、暗号モジュール情報通知システム１１００は、ＭＦＰ１１０１及びサーバ１１０２を備える。ＭＦＰ１１０１は、図１のＭＦＰ１００と同様のハードウェア構成であり、ＬＡＮケーブル（不図示）を介して接続されたネットワーク上のサーバ１１０２とデータ通信を行う。サーバ１１０２は、ＣＰＵ１１０３、ＲＡＭ１１０４、ＨＤＤ１１０５、入力部１１０６、出力部１１０７、及びネットワークＩ／Ｆ１１０８を備える。ＣＰＵ１１０３、ＲＡＭ１１０４、ＨＤＤ１１０５、入力部１１０６、出力部１１０７、及びネットワークＩ／Ｆ１１０８はシステムバス１１０９を介して互いに接続されている。
【００４７】
ＣＰＵ１１０３はＨＤＤ１１０５に記憶されたプログラムを読み出して各種制御を行う。ＲＡＭ１１０４はＣＰＵ１１０３の主メモリとして、また、各データの一時記憶領域として用いられる。ＨＤＤ１１０５はデータやプログラムを記憶する。入力部１１０６はユーザによる指示を受け付ける。出力部１１０７は設定画面等を表示する。ネットワークＩ／Ｆ１１０８は、サーバ１１０２をＬＡＮケーブル（不図示）に接続する。ネットワークＩ／Ｆ１１０８は、上記ＬＡＮケーブルを介して接続されたネットワーク上の外部装置とデータ通信を行う。ネットワークＩ／Ｆ１１０８は、例えば、ＭＦＰ１１０１からＪａｖａアプリケーション２０１を受信する。
【００４８】
図１２は、図１１の暗号モジュール情報通知システム１１００のソフトウェア構成を概略的に示すブロック図である。図１２（ａ）は、ＭＦＰ１１０１のソフトウェア構成を示す。図１２（ｂ）は、サーバ１１０２のソフトウェア構成を示す。
【００４９】
ＭＦＰ１１０１は、図１２（ａ）に示すように、図２に示すモジュールのうち、逆アセンブル実行部２０３以外のモジュールを備える。一方、サーバ１１０２は、図１２（ｂ）に示すように、ソフトウェアモジュールとして、逆アセンブル実行部１２０１及び暗号利用状況判定部１２０２を備える。サーバ１１０２のソフトウェアモジュールの処理は、サーバ１１０２のＣＰＵ１１０３がＨＤＤ１１０５に格納されたプログラムを実行することによって行われる。逆アセンブル実行部１２０１は、ＭＦＰ１００から受信したＪａｖａアプリケーション２０１に逆アセンブルを施す。暗号利用状況判定部１２０２は、Ｊａｖａアプリケーション２０１の暗号利用状況を判定する。
【００５０】
図１３は、図１１の暗号モジュール情報通知システム１１００によって実行されるインストール処理の手順を示すフローチャートである。図１３の処理は、ＭＦＰ１００のＣＰＵ１０２がＲＯＭ１０３に格納されたプログラムを実行することによって行われる。また、図１３の処理は、サーバ１１０２のＣＰＵ１１０３がＨＤＤ１１０５に格納されたプログラムを実行することによって行われる。図１３の処理も、ユーザが外部装置に表示されたアプリケーション情報画面３００からアプリケーションのインストールの開始を指示した際に実行される。図１３の処理は、一例として、ユーザが外部装置からＪａｖａアプリケーション２０１のインストールの開始を指示し、外部装置からＭＦＰ１１０１にＪａｖａアプリケーション２０１が送信されたことを前提とする。ＭＦＰ１１０１は、Ｊａｖａアプリケーション２０１を受信すると、受信したＪａｖａアプリケーション２０１をＨＤＤ１０５に格納し、その後、ＭＦＰ１１０１のＪａｖａアプリ管理部２０２にＪａｖａアプリケーション２０１のインストール指示を行う。
【００５１】
図１３において、ＭＦＰ１１０１のＣＰＵ１０２はステップＳ５０１の処理を行う。次いで、ＣＰＵ１０２は、ネットワークＩ／Ｆ１１３を介してサーバ１１０２にＪａｖａアプリケーション２０１を送信する（ステップＳ１３０１）。
【００５２】
サーバ１１０２がＭＦＰ１１０１からＪａｖａアプリケーション２０１を受信すると、ＣＰＵ１１０３は逆アセンブル実行部１２０１により、Ｊａｖａアプリケーション２０１に逆アセンブルを施す（ステップＳ１３０２）。これにより、ＣＰＵ１１０３は、逆アセンブル済みのＪａｖａアプリケーション２０１に基づいてＪａｖａアプリケーション２０１の機能解析を実施可能となる。なお、逆アセンブル済みのＪａｖａアプリケーション２０１は、ＨＤＤ１１０５に記憶される。次いで、ＣＰＵ１１０３は、暗号利用状況判定部１２０２により、逆アセンブル済みのＪａｖａアプリケーション２０１の機能解析を行う。次いで、ＣＰＵ１１０３は、解析結果に基づいてＪａｖａアプリケーション２０１が暗号ＡＰＩの呼び出しを行うか否かを判別する（ステップＳ１３０３）。
【００５３】
ステップＳ１３０３の判別の結果、Ｊａｖａアプリケーション２０１が暗号ＡＰＩの呼び出しを行わないとき、ＣＰＵ１１０３は、Ｊａｖａアプリケーション２０１の暗号利用状況として、「暗号利用なし」をＨＤＤ１１０５に記憶する（ステップＳ１３０４）。次いで、ＣＰＵ１１０３は後述するステップＳ１３０９以降の処理を行う。
【００５４】
ステップＳ１３０３の判別の結果、Ｊａｖａアプリケーション２０１が暗号ＡＰＩの呼び出しを行うとき、ＣＰＵ１１０３は、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号ＡＰＩの呼び出しを行うか否かを判別する（ステップＳ１３０５）。
【００５５】
ステップＳ１３０５の判別の結果、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号ＡＰＩの呼び出しを行うとき、ＣＰＵ１１０３は、Ｊａｖａアプリケーション２０１の暗号利用状況として、「ｎｏｎＦＩＰＳ」をＨＤＤ１１０５に記憶する（ステップＳ１３０６）。次いで、ＣＰＵ１１０３は後述するステップＳ１３０９以降の処理を行う。
【００５６】
ステップＳ１３０５の判別の結果、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号ＡＰＩの呼び出しを行わないとき、ＣＰＵ１１０３は、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号プロバイダ２０５指定の暗号ＡＰＩの呼び出しを行うか否かを判別する（ステップＳ１３０７）。
【００５７】
ステップＳ１３０７の判別の結果、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号プロバイダ２０５指定の暗号ＡＰＩの呼び出しを行うとき、ＣＰＵ１１０３はステップＳ１３０６以降の処理を行う。ステップＳ１３０７の判別の結果、Ｊａｖａアプリケーション２０１がｎｏｎＦＩＰＳ暗号プロバイダ２０５指定の暗号ＡＰＩの呼び出しを行わないとき、ＣＰＵ１１０３は、Ｊａｖａアプリケーション２０１の暗号利用状況として、「ＦＩＰＳ」をＨＤＤ１１０５に記憶する（ステップＳ１３０８）。次いで、ＣＰＵ１１０３は、ＨＤＤ１１０５に記憶されたＪａｖａアプリケーション２０１の暗号利用状況をＭＦＰ１００に送信する（ステップＳ１３０９）。
【００５８】
Ｊａｖａアプリケーション２０１の暗号利用状況を受信したＭＦＰ１１０１のＣＰＵ１０２は、Ｊａｖａアプリケーション２０１の名称及び暗号利用状況をＨＤＤ１０５に記憶する（ステップＳ１３１０）。ＨＤＤ１０５に記憶された暗号利用状況は、ＭＦＰ１１０１が外部装置から管理機能要求を受け付けた際に外部装置の表示部にアプリケーション情報画面３００の暗号利用状況３０７として表示される。次いで、ＣＰＵ１０２はステップＳ５０５以降の処理を行う。
【００５９】
上述した実施の形態では、サーバ１１０２がＪａｖａアプリケーション２０１に逆アセンブルを施す。これにより、ＭＦＰ１１０１に逆アセンブル実行部が搭載されていなくても、ＭＦＰ１１０１にインストールされたＪａｖａアプリケーション２０１の暗号利用状況を通知することができる。
【００６０】
なお、上述した実施の形態では、Ｊａｖａアプリケーション２０１の逆アセンブルの実行の他に、Ｊａｖａアプリケーション２０１の暗号機能の要否やＪａｖａアプリケーション２０１が利用する暗号モジュールの種別の判別をサーバ１１０２が行っているが、これに限られない。例えば、サーバ１１０２がＪａｖａアプリケーション２０１に逆アセンブルを施し、ＭＦＰ１１０１がＪａｖａアプリケーション２０１の暗号機能の要否やＪａｖａアプリケーション２０１が利用する暗号モジュールの種別の判別をサーバ１１０２が行っても良い。
【００６１】
本発明は、上述の実施の形態の１以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、該システム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６２】
１００、１１０１  ＭＦＰ
２０１  Ｊａｖａアプリケーション
２０２  Ｊａｖａアプリ管理部
２０３、１２０１  逆アセンブル実行部
２０９  ＦＩＰＳ暗号モジュール
２１０  ｎｏｎＦＩＰＳ暗号モジュール
１０００  警告画面
１１００  暗号モジュール情報通知システム
１１０２  サーバ
【図１】
2019185543.tif 000003
【図２】
2019185543.tif 000004
【図３】
2019185543.tif 000005
【図４】
2019185543.tif 000006
【図５】
2019185543.tif 000007
【図６】
2019185543.tif 000008
【図７】
2019185543.tif 000009
【図８】
2019185543.tif 000010
【図９】
2019185543.tif 000011
【図１０】
2019185543.tif 000012
【図１１】
2019185543.tif 000013
【図１２】
2019185543.tif 000014
【図１３】
2019185543.tif 000015