JP2022122553A - 画像形成装置、その制御方法、およびプログラム - Google Patents

画像形成装置、その制御方法、およびプログラム Download PDF

Info

Publication number
JP2022122553A
JP2022122553A JP2021019870A JP2021019870A JP2022122553A JP 2022122553 A JP2022122553 A JP 2022122553A JP 2021019870 A JP2021019870 A JP 2021019870A JP 2021019870 A JP2021019870 A JP 2021019870A JP 2022122553 A JP2022122553 A JP 2022122553A
Authority
JP
Japan
Prior art keywords
application program
control code
image forming
encrypted
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021019870A
Other languages
English (en)
Inventor
岳史 木暮
Takeshi Kogure
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2021019870A priority Critical patent/JP2022122553A/ja
Priority to US17/575,709 priority patent/US20220253521A1/en
Publication of JP2022122553A publication Critical patent/JP2022122553A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • H04L9/16Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]

Abstract

【課題】画像形成装置のパフォーマンスへの影響を抑制しつつ、アプリケーションプログラムからの機密情報の漏えいを効果的に防止する画像形成装置、制御方法及びプログラムを提供する。【解決手段】画像形成装置の制御方法において、画像形成装置のロード手段は、ロードするスクリプトファイルの制御コードの暗号化の有無を判定する。ロードしようとしている制御コードが暗号化されている場合(S801:成功)、復号に使用する暗号鍵の署名検証S802により暗号鍵の完全性を確認する。暗号鍵の署名検証が成功(S802:成功)した場合、コード検証処理として非暗号化スクリプトのダイジェスト検証S804により制御コードの完全性を確認する。ロード手段は、鍵情報の完全性を確認されている場合であっても制御コードの完全性が確認されない場合には、ロードしようとしている暗号化された制御コードのロードまたは復号を実行しない。【選択図】図8

Description

本発明は、画像形成装置、その制御方法、およびプログラムに関する。
画像形成装置では、たとえばオプション機能の追加などのために、アプリケーションプログラムをインストールして実行可能にすることが可能となっている。
このような画像形成装置では、悪意をもって改ざんなどにより生成されたアプリケーションプログラムがインストールされて実行されてしまう可能性がある。
この場合、画像形成装置で取り扱っている機密情報が、改ざんされたアプリケーションプログラムにより読み出されて、漏えいしてしまう可能性がある。
特開2002-230511号公報 特開2009-258772号公報
そこで、特許文献1のようにアプリケーションプログラムの機密情報を守るため、アプリケーションプログラムを暗号化し、ロードする時に復号することが考えられる。
しかしながら、特許文献1のように、アプリケーションプログラムの全体を暗号化してしまうと、本来的に機密ではない情報まで暗号化されることになる。その結果、画像形成装置は、アプリケーションプログラムを実行する場合には、ロードとともに復号する処理が常に発生してしまう。画像形成装置のパフォーマンスに影響が生じる。
このため、特許文献2のように、アプリケーションプログラムの一部を暗号化することが考えられる。
しかしながら、アプリケーションプログラムの一部を暗号化した場合、悪意をもってアプリケーションプログラムが改ざんされることにより、暗号化されていない処理により、暗号化された処理の内容が読み出されてしまう可能性が残る。
このように画像形成装置では、画像形成装置のパフォーマンスへの影響を抑制しつつ、アプリケーションプログラムからの機密情報の漏えいを効果的に防止できるようにすることが求められる。
本発明に係る画像形成装置は、複数の制御コードと複数のデータによって構成されるアプリケーションプログラムを実行可能な画像形成装置であって、前記アプリケーションプログラムを構成する個々の前記制御コードを実行するためにロードするロード手段、を有し、前記アプリケーションプログラムは、複数の前記制御コードとして、暗号化されている制御コードと、暗号化されていない制御コードと、を含み、前記ロード手段は、ロードしようとしている前記制御コードが暗号化されている場合において復号に使用する鍵情報の完全性を確認する鍵情報検証手段と、ロードしようとしている前記制御コードを含む前記アプリケーションプログラムにおける前記制御コードの完全性を確認する制御コード検証手段と、を有し、前記鍵情報検証手段により前記鍵情報の完全性を確認されている場合であっても、前記制御コード検証手段により前記制御コードの完全性が確認されない場合には、ロードしようとしている暗号化された前記制御コードのロードまたは復号を実行しない。
本発明では、画像形成装置のパフォーマンスへの影響を抑制しつつ、アプリケーションプログラムからの機密情報の漏えいを効果的に防止することが可能になる。
本発明の実施形態に係る画像形成装置のハードウェア構成図である。 図1の画像形成装置のストレージに記録されているソフトウェアプログラムにより実現される、拡張アプリケーションプログラムの実行環境の説明図である。 図1の画像形成装置を含む画像処理システムにおいて、拡張アプリケーションプログラムを画像形成装置にインストールする状態の説明図である。 図2の一部として図1の画像形成装置に実現される、拡張アプリケーションプログラムを実行するためのプログラムモジュールの説明図である。 図1の画像形成装置のストレージにオプション追加される拡張アプリケーションプログラムの説明図である。 図5の拡張アプリケーションプログラムの複数のスクリプトファイルの依存関係の説明図である。 図5の拡張アプリケーションプログラムの実行制御のフローチャートである。 図7のスクリプトロード処理の詳細なフローチャートである。 図5の拡張アプリケーションプログラムのために図1の画像形成装置のストレージに記録されているデータとしての、拡張アプリケーションプログラムIDと拡張アプリケーションプログラムの開発ベンダとの対応テーブルの説明図である。 図9と関連して図1の画像形成装置のストレージに記録されているデータとしての、拡張アプリケーションプログラムの開発ベンダと開発ベンダごとの署名検証鍵との対応テーブルの説明図である。 図5の拡張アプリケーションプログラムのために図1の画像形成装置のストレージに記録されているデータとしての、鍵情報の説明図である。 図5の拡張アプリケーションプログラムのために図1の画像形成装置のストレージに記録されているデータとしての、スクリプトダイジェストの説明図である。 本実施形態を適用していない画像形成装置において生じ得る1つの課題の説明図である。 本実施形態により阻止し得る改ざんの一例の説明図である。 本実施形態により阻止し得る改ざんの他の例の説明図である。 本実施形態により阻止し得る改ざんの他の例の説明図である。
以下、本発明の実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は実施形態に記載されている構成によって限定されることはない。
図1は、本発明の実施形態に係る画像形成装置2のハードウェア構成図である。
図1の画像形成装置2は、操作部112、USBストレージ114、スキャナ170、プリンタ195、および、これらが接続されるコントローラユニット100、を有する。
コントローラユニット100は、CPU101、RAM102、ROM103、ストレージ104、画像バスI/F105、操作部I/F106、ネットワークI/F110、USBホストI/F113、およびこれらが接続されるシステムバス107、を有する。
画像バスI/F105には、画像バス108が接続される。画像バス108には、デバイスI/F120、スキャナ画像処理部180、プリンタ画像処理部190、が接続される。
デバイスI/F120には、スキャナ170およびプリンタ195が接続される。スキャナ170は、原稿の画像を読み取り、画像データを生成する。プリンタ195は、画像データを、用紙に印刷する。デバイスI/F120は、スキャナ170またはプリンタ195の処理に係る画像データを入出力する。デバイスI/F120は、画像データの同期系/非同期系の変換を行ってよい。
スキャナ画像処理部180、スキャナ170により生成された画像データを、補正、加工、編集する。
プリンタ画像処理部190は、プリント出力する画像データを、プリンタ195に応じて補正し、解像度を変換する。
画像バスI/F105は、画像処理装置のシステムバス107と、画像データを高速で転送可能な画像バス108とを接続するバスブリッジである。ここで、画像バス108は、たとえばPCIバスまたはIEEE形式のバスであってよい。
操作部I/F106は、操作部112に接続される。操作部112は、画像を表示して操作可能なタッチパネルを有してよい。この場合、操作部I/F106は、タッチパネルに表示する画像を操作部112へ出力し、タッチパネルにおけるユーザの操作による入力情報を取得してCPU101へ出力する。
ネットワークI/F110は、LANに接続される。ネットワークI/F110は、LANに接続されている他の装置との間でデータを送受する。
USBホストI/F113は、USBストレージ114に接続される。USBストレージ114は、不揮発性の半導体メモリである。USBストレージ114は、画像形成装置2に取外可能に接続される。
USBホストI/F113は、USBストレージ114と通信して、USBストレージ114にデータを格納させ、USBストレージ114からデータを取得してCPU101へ出力する。
USBホストI/F113には、USBストレージ114を含む複数のUSBデバイスが接続可能でよい。
ROM103、およびストレージ104は、不揮発性のメモリである。ROM103には、ブートプログラムが記録される。ストレージ104には、画像処理装置の制御に係るプログラム、プログラムで使用する各種のデータが記録される。ストレージ104には、画像形成装置2の処理に係る画像データが記録されてよい。
RAM102は、揮発性のメモリである。RAM102には、CPU101が実行するプログラムの展開領域、CPU101がプログラムの実行の際に使用する作業領域、画像データの一時記憶領域、などか設けられる。
CPU101は、ROM103およびストレージ104に記録されているプログラムを読み込んで実行する。これにより、CPU101は、画像形成装置2の全体的に制御する制御部として機能する。
制御部としてのCPU101は、たとえば、スキャナ170で読み取られた画像データをプリンタ195により印刷するコピー機能のための制御を実行する。
この他にもたとえば、制御部としてのCPU101は、オペレーティングシステムプログラム、アプリケーションプログラムを実行してよい。アプリケーションプログラムには、たとえば、画像形成装置2のオプション機能などのために追加される拡張アプリケーションプログラム、がある。
この他にもたとえば、USBストレージ114には、ストレージ104に追加または更新により記録するプログラムが格納されてよい。この場合、制御部としてのCPU101は、USBストレージ114のプログラムを読み込んで、ストレージ104に記録する。
図2は、図1の画像形成装置2のストレージ104に記録されているソフトウェアプログラムにより実現される、拡張アプリケーションプログラムの実行環境の説明図である。
CPU101は、オペレーティングシステムプログラムの機能としてストレージ104に記録されている仮想マシン(Virtual Machine:VM)用のプログラムを実行する。これにより、CPU101は、図2の拡張アプリケーションプログラムの実行環境を画像形成装置2に生成する。
オペレーティングシステムプログラムは、プリンタ195、FAX、スキャナ170といった画像処理装置の基本機能を実現するためのネイティブプログラム210を含む。また、オペレーティングシステムプログラムは、ネイティブプログラム210の他に、拡張アプリケーションプログラムの実行環境である仮想マシン230用のプログラムを含んでよい。
図2の拡張アプリケーションプログラムの実行環境では、オペレーティングシステムであるOS201の上で、ネイティブプログラム210、仮想マシンシステムサービス220、仮想マシン230、拡張アプリケーションプログラム240、が実行される。
ネイティブプログラム210は、プリンタ195やFAX、スキャナ170といった画像形成装置2の各部を制御するためのネイティブスレッド214と、仮想マシン230を動かすための仮想マシンスレッド215と、を有する。
仮想マシンスレッド215は、画像形成装置2で実行される仮想マシン230と対応する数で生成される。ここでは、仮想マシンスレッド215として、3つのスレッド211、212,213が生成されている。
仮想マシンシステムサービス220は、拡張アプリケーションプログラム240から共通利用されるユーティリティライブラリである。
ここでは、仮想マシンシステムサービス220として、仮想マシン230として最低限動作させる標準仮想マシンシステムサービス221と、拡張仮想マシンシステムサービス222と、が示されている。
拡張仮想マシンシステムサービス222は、画像形成装置2の各モジュールへのアクセスやOS機能を提供する。
拡張アプリケーションプログラム240は、仮想マシンシステムサービス220の機能を呼び出すことにより、画像形成装置2の各モジュールへアクセスすることができる。拡張アプリケーションプログラム240において、画像形成装置2の各モジュールへアクセスする処理を記述する必要がなくなり、開発の手間が省ける。仮想マシン230が拡張アプリケーションプログラム240のバイト制御コードで指示されているAPIを実行することで、APIに関連づけられている仮想マシンシステムサービス220が呼び出される。
標準仮想マシンシステムサービス221は、拡張アプリケーションプログラム240をロードする機能を含む。
仮想マシン230は、拡張アプリケーションプログラム240の実行環境を形成する。
仮想マシン230は、拡張アプリケーションプログラム240を制御するプログラムを理解して実行する。
拡張アプリケーションプログラム240は、必ず仮想マシン230の上で動作する。
仮想マシン230は、仮想マシン230ごとに論理的に分離されているメモリ空間により管理すめ。異なる仮想マシン230は、原則として、それらの間においてメモリ空間を共有できない。
拡張アプリケーションプログラム240ごとに仮想マシン230が生成される。拡張アプリケーションプログラム240の間において、原則として、メモリ空間を共有できない。
仮想マシン230で動作する拡張アプリケーションプログラム240は、CPU101で動作する命令とは異なり、仮想マシン230に専用の命令で動作する。この命令は、バイト制御コードという。一方で、CPU101に専用の命令は、ネイティブ制御コードという。
仮想マシン230は、バイト制御コードを逐次解釈して処理する。この場合、CPU101は、ネイティブ制御コードに基づく制御と、仮想マシン230のバイト制御コードに基づく制御とを、並列的に実行する。
仮想マシン230には、バイト制御コードをそのまま逐次解釈処理するタイプと、バイト制御コードをネイティブ制御コードに変換して実行するタイプがある。
本実施形態の仮想マシン230は前者のタイプであるが、後者のタイプであってもよい。
一般的にCPU101の種別が異なると、CPU101で動作する命令に互換性がなくなる。また、仮想マシン230が異なると、仮想マシン230で動作する命令にも互換性がなくなる。
なお、図2の仮想マシン230は、CPU101で動作するソフトウェアモジュールとして実現されている。仮想マシン230は、ハードウェアモジュールとして実現されてもよい。
仮想マシン230は、拡張アプリケーションプログラム240を実行する。
仮想マシン230は、拡張アプリケーションプログラム240のスレッドごとに生成されてもよい。
図2では、拡張アプリケーションプログラムA241は、2つのスレッドを有する。この場合、仮想マシン230として、「仮想マシンA-1」231と、「仮想マシンA-2」232と、が生成される。
拡張アプリケーションプログラムB242は、1つのスレッドを有する。この場合、仮想マシン230として、「仮想マシンB-1」233が生成される。
なお、画像形成装置2の操作部112に表示されるメインメニュー画面には、拡張アプリケーションプログラム240ごとのアイコンが表示される。
このアイコンをユーザーが選択操作すると、操作部112を通じて操作部I/F106がその操作を検知し、操作部I/F106は操作内容をCPU101へ出力する。
CPU101は、ユーザーによって選択操作された拡張アプリケーションプログラム240を起動して実行する。
図3は、図1の画像形成装置2を含む画像処理システム1において、拡張アプリケーションプログラム240を画像形成装置2にインストールする状態の説明図である。
図3の画像処理システム1は、画像形成装置2、コンピュータ装置3、および、これらが接続される通信ケーブル4、を有する。通信ケーブル4は、たとえばIEEE802.3やIEEE802.11に準拠したものでよい。
コンピュータ装置3は、拡張アプリケーションプログラム240を生成する。
コンピュータ装置3は、画像形成装置2が提供する拡張アプリケーションプログラムのインストール手段を用いて、拡張アプリケーションプログラム240のデータを、画像形成装置2へ送信する。
これにより、画像形成装置2のストレージ104には、拡張アプリケーションプログラム240がインストールされる。
図4は、図2の一部として図1の画像形成装置2に実現される、拡張アプリケーションプログラム240を実行するためのプログラムモジュールの説明図である。
図4のプログラムモジュールは、図2の拡張アプリケーションプログラム240の実行環境において生成されるものである。
サーブレットサービス404は、ネットワークI/F110を通してHTTPアクセスされた際に、そのリクエストを受け付けアクセスされたURLによってモジュールに処理を振り分けるモジュールである。
ここでのモジュールは、たとえば、拡張アプリケーションプログラム管理部402、または標準機能制御部401である。
UI制御部403は、操作部112に画面を表示し、ユーザーからの操作を受け付けて、その操作情報を適切なモジュールに通知するモジュールである。
ここでのモジュールは、たとえば、拡張アプリケーションプログラム管理部402、または標準機能制御部401である。
拡張アプリケーションプログラム管理部402は、インストールされている拡張アプリケーションプログラム240のインストール、起動などを管理するモジュールである。
拡張アプリケーションプログラム実行制御部405は、拡張アプリケーションプログラム管理部402で起動された拡張アプリケーションプログラム240の実行を制御するモジュールである。
拡張アプリケーションプログラム実行制御部405は、具体的には、仮想マシンスレッド、仮想マシン画像処理システムサービス、仮想マシン230、拡張アプリケーションプログラム240、を制御する。
標準機能制御部401は、画像形成装置2の標準機能であるコピーやFAXの制御や、その他の画像成形装置に必要な制御(たとえばUSBホストパスI/Fの制御)を行うモジュールである。
ストレージ制御部406は、画像成形装置の設定情報を記録管理するモジュールである。
上述した各モジュールは、ストレージ制御部406にアクセスすることにより、設定値を参照したり、設定値を設定したりする。
このように画像形成装置2は、複数の制御コードと複数のデータによって構成される拡張アプリケーションプログラム240を実行することが可能である。
画像形成装置2は、たとえばオプション機能の追加などのために、拡張アプリケーションプログラム240をインストールして実行することが可能である。
このような画像形成装置2では、悪意をもって改ざんなどされた拡張アプリケーションプログラム240がインストールされて実行されてしまう可能性がある。
この場合、画像形成装置2で取り扱っている機密情報が、改ざんされた拡張アプリケーションプログラム240により読み出されて、漏えいしてしまう可能性がある。
図5は、図1の画像形成装置2のストレージ104にオプション追加される拡張アプリケーションプログラム240の説明図である。
図5の拡張アプリケーションプログラム240のアーカイブ501は、拡張アプリケーションプログラム240として実行される複数の制御データを含む複数のスクリプトファイルを含む。
また、アーカイブ501は、複数のスクリプトファイルの他に、拡張アプリケーションプログラム240の真正性や完全性のための各種のデータのファイルを含む。
図5の拡張アプリケーションプログラム240を構成するファイルは、大きく5種類に分けられている。
1種類目のファイルは、拡張アプリケーションプログラム240の動作をプログラム言語で記述したスクリプトファイル502~504である。
スクリプトファイル502~504は、事前に暗号化されたスクリプトファイル503を含む。スクリプトファイル502,504は、暗号化されてないスクリプトファイルである。
スクリプトファイル503のデータは、所定の手続きによって生成された暗号鍵によって暗号化されたものである。第三者は、スクリプトファイル503の元データの内容を直接に確認することはできない。
このように拡張アプリケーションプログラム240は、拡張アプリケーションプログラム240についての複数の制御コードを含む複数のスクリプトファイルで構成される。一部のスクリプトファイルが暗号化されることにより、拡張アプリケーションプログラム240の複数の制御コードは、スクリプトの単位で一部が暗号化される。拡張アプリケーションプログラム240は、複数の制御コードとして、暗号化されている制御コードと、暗号化されていない制御コードと、を含むことになる。
暗号化されたスクリプトファイル503と、暗号化されていないスクリプトファイル502とを組み合わせることにより、それらのスクリプトファイル503に含まれる制御コードをロードして実行する際の実行パフォーマンスと機密保持とを両立できる。
2種類目のファイルは、アプリケーションプログラムで利用する画像データや表示メッセージなどを格納するリソースファイル505~506である。
3種類目のファイルは、機密情報の復号に必要な鍵情報のファイル507である。
4種類目のファイルは、スクリプトファイルの完全性を確認するためのスクリプトダイジェストのファイル508である。
スクリプトダイジェストとは、アプリケーションプログラムを構成するスクリプトの完全性の検証に使用するダイジェストをいう。
スクリプトダイジェストは、アプリケーションプログラムを構成するスクリプトに基づいて予め生成される。
スクリプトダイジェストは、スクリプトの暗号化に使用した暗号鍵により暗号化された状態で、ファイル508に記録される。
5種類目のファイルは、アプリケーションプログラムを識別するアプリケーションプログラムIDのファイル509である。
アプリケーションプログラムIDは、アプリケーションプログラムごとにユニークなIDとされる。
各種類のファイルの数は、アプリケーションプログラムによって異なる。
図6は、図5の拡張アプリケーションプログラム240の複数のスクリプトファイルの依存関係の説明図である。
一般的に、コンピュータ装置3は、拡張アプリケーションプログラム240を実行する場合、実行可能ファイルの全体を読み込んでメモリに展開してから、実行している。
画像形成装置2は、コンピュータ装置3のようにメモリの容量が潤沢にあるとは限らない。
このため、画像形成装置2では、拡張アプリケーションプログラム240の制御コードを、たとえば機能ごとの単位で複数のスクリプトファイルに分割している。また、拡張アプリケーションプログラム240の実行の際には、画像形成装置2は、スクリプトファイルごとに順番に読み込んで、制御コードを随時ロードして実行している。
これにより、画像形成装置2において、拡張アプリケーションプログラム240を実行するために必要とされるメモリを削減できる。
図6では、画像形成装置2のCPU101は、拡張アプリケーションプログラム240を実行する際に、まず、mainスクリプトファイル601をロードして実行する。
mainスクリプトファイル601をロードして実行すると、CPU101は、sub1スクリプトファイル602、sub2スクリプトファイル603、sub3スクリプトファイル604をロードして実行する。
sub1スクリプトファイル602をロードして実行すると、CPU101は、sub4スクリプトファイル605、sub5スクリプトファイル606、sub6スクリプトファイル607をロードして実行する。
sub2スクリプトファイル603をロードして実行すると、CPU101は、sub6スクリプトファイル607、sub3スクリプトファイル608をロードして実行する。
sub3スクリプトファイル604をロードして実行すると、CPU101は、sub1スクリプトファイル609、sub7スクリプトファイル610をロードして実行する。
なお、スクリプトファイルの実行順となる依存関係は、拡張アプリケーションプログラム240ごとに異なる。
また、1つの拡張アプリケーションプログラム240においても、処理内容に応じて、連鎖的にロードして実行されるスクリプトファイルの依存関係は変化する。
たとえば、mainスクリプトファイル601をロードして実行しても、CPU101は、sub1スクリプトファイル602、sub2スクリプトファイル603のみをロードして実行することがある。この場合、CPU101は、sub3スクリプトファイル604をロードして実行しない。
図7は、図5の拡張アプリケーションプログラム240の実行制御のフローチャートである。
画像形成装置2のCPU101は、拡張アプリケーションプログラム240を実行するために、図2の実行環境を実現する。
CPU101は、たとえば標準仮想マシンシステムサービス221の処理の一部として、図7の制御を実行する。
ステップS701において、CPU101は、拡張アプリケーションプログラム240において次に実行することになるスクリプトファイルをロードする。
CPU101は、ロードするスクリプトファイルが暗号化されているものである場合、それを復号する。
CPU101は、ロードしたスクリプトファイルに含まれる複数の制御コードを、RAM102に展開してよい。
ステップS702において、CPU101は、ロードしたスクリプトファイルの命令フェッチを実行する。ロードしたスクリプトファイルに含まれる未処理の制御コードは、1行ずつ順番にCPU101へ読み込まれる。
ステップS703において、CPU101は、命令が終了しているか否かを判断する。CPU101は、ロードしたスクリプトファイルに含まれる複数の制御コードを順番にフェッチする。ロードしたスクリプトファイルの最後の制御コードをフェッチすると、未処理の制御コードがなくなる。命令フェッチにより未処理の制御コードが読み込めない場合、CPU101は、命令が終了しているとして、本制御を終了する。命令が終了していない場合、CPU101は、処理をステップS704へ進める。
ステップS704において、CPU101は、フェッチした制御コードの命令種別を判断する。
ステップS705において、CPU101は、ステップS704で判断した命令種別が、ロード命令であるか否かを判断する。ロード命令である場合、CPU101は、処理をステップS701へ戻す。CPU101は、ステップS701からの処理を実行して、ロード命令に係る他のスクリプトファイルについてのロードを実行する。命令種別が、ロード命令でない場合、CPU101は、処理をステップS706へ進める。
ステップS706において、CPU101は、フェッチした命令としての制御コードを実行する。その後、CPU101は、処理をステップS702へ戻す。CPU101は、ステップS703において命令の終了を判断するまで、ステップS701においてロードしたスクリプトファイルについての複数の制御コードを実行し続ける。
このように本実施形態では、拡張アプリケーションプログラム240の実行では、拡張アプリケーションプログラム240に含まれる複数の制御コードは、スクリプトファイルの単位で随時ロードされて実行される。
CPU101は、ロード手段として、拡張アプリケーションプログラム240を構成する個々の制御コードをロードして実行することができる。
図8は、図7のスクリプトロード処理の詳細なフローチャートである。
CPU101は、図7のスクリプトファイルのロード処理S701において、ロード手段として、図8の処理を実行する。
ステップS801において、CPU101は、ロードするスクリプトファイルの制御コードが暗号化されているか否かを判断する。
これにより、CPU101は、暗号化判断手段として、ロードしようとしている制御コードのスクリプトファイルの暗号化の有無を判断できる。
暗号化されている場合、CPU101は、処理をステップS802へ進める。暗号化されていない場合、CPU101は、処理をステップS803へ進める。
ステップS802において、CPU101は、鍵検証処理として、鍵情報の署名を検証する。CPU101は、鍵情報が、アプリケーションプログラムIDのファイル509によって示されているアプリケーションプログラム向けの暗号鍵であることを検証する。
これにより、CPU101は、鍵情報検証手段として、ロードしようとしているスクリプトファイルの制御コードが暗号化されている場合において、復号に使用する鍵情報の完全性を確認できる。
検証に成功する場合、CPU101は、アプリケーションプログラム管理部に保持している秘密鍵により、鍵情報を復号し、処理をステップS804へ進める。検証に失敗してできない場合、CPU101は、処理をステップS805へ進める。
ステップS804において、CPU101は、コード検証処理として、アプリケーションプログラムを構成する複数の非暗号化スクリプトファイルのすべてに基づいて、スクリプトダイジェストの情報を使用してスクリプトの完全性を検証する。
これにより、CPU101は、制御コード検証手段として、ロードしようとしている制御コードのスクリプトファイルを含む拡張アプリケーションプログラム240について、すべてのスクリプトファイルの完全性を確認できる。CPU101は、実質的に、拡張アプリケーションプログラム240のすべての制御コードの完全性とを確認できる。
検証に成功する場合、CPU101は、処理をステップS806へ進める。検証に失敗する場合、CPU101は、処理をステップS805へ進める。
ステップS805は、ステップS802またはステップS804においてロードするスクリプトファイルの検証に失敗した場合の処理である。CPU101は、スクリプトファイルを安全に復号できないために、ロード失敗時の処理を実行する。その後、CPU101は、ロード処理を終了する。
これにより、CPU101は、鍵情報の完全性を確認されている場合であっても、制御コードの完全性が確認されない場合には、ロードしようとしている暗号化された制御コードのスクリプトファイルをロードしない。また、CPU101は、暗号化された制御コードのスクリプトファイルをロードしないので、その制御コードを実行することもない。
ステップS806は、ステップS802およびステップS804において共に、ロードするスクリプトファイルの検証に成功した場合の処理である。CPU101は、スクリプトファイルを安全に復号できることが確認できているため、実際に、スクリプトファイルのロード処理および復号処理を実行する。
CPU101は、上述したアプリケーションプログラム管理部に保持している秘密鍵を用いて、スクリプトファイルの複数の制御コードを復号する。
これにより、CPU101は、ロード手段として、鍵情報の完全性を確認されてさらに制御コードの完全性が確認されている場合においてのみ、暗号化された制御コードのスクリプトファイルをロードして復号することになる。
その後、CPU101は、ロード処理を終了する。
ステップS803は、ロードするスクリプトファイルが暗号化されていない場合の処理である。CPU101は、平文のスクリプトファイルをロードする。
これにより、CPU101は、ロード手段として、ロードしようとしている制御コードのスクリプトファイルが暗号化されていないと判断される場合には、その制御コードのスクリプトファイルをそのままロードすることになる。
その後、CPU101は、ロード処理を終了する。
図6に示すように、アプリケーションプログラムを実行する際、アプリケーションプログラムを構成する複数のスクリプトは、そのすべてが最初にまとめてロードされるのではなく、処理が必要になったスクリプトファイルが随時ロードされる。
そして、CPU101は、暗号化されている機密情報を含むスクリプトファイルをロードする場合だけ、スクリプトファィルの完全性をチェックしてから復号する。
これに対し、暗号化されていないスクリプトファイルをロードする場合、CPU101は、暗号化の有無だけをチェックして、即座にロードする。
暗号化されていないスクリプトファイルが実行できるようになるまでのロード時間は、短縮される。
アプリケーションプログラムを構成するすべてのスクリプトファイルを暗号化する場合と比べて、高速にスクリプトファイルをロードできる。
また、暗号化されているスクリプトファイルは、単に暗号鍵の署名を検証するだけでなく、さらにアプリケーションプログラムを構成する複数のスクリプトファイルの完全性を検証する。これにより、アプリケーションプログラムを構成する暗号化されていない複数のスクリプトファイルの一部が改ざんされていた場合、それを不完全であると検出できる。暗号化されているスクリプトファイルのロードを実際に実行する前にアプリケーションプログラムの不完全性を判断できる。このため、改ざんされているアプリケーションプログラムにおいて暗号化されているスクリプトファイルが復号されてしまうことを防ぐことができる。
次に、図9から図11を用いて、拡張アプリケーションプログラム240のスクリプトファイルのロードの際に使用する、拡張アプリケーションプログラム240のデータについて説明する。
図9から図11のデータは、拡張アプリケーションプログラム240の一部として、ストレージ104に記録されてよい。
CPU101は、拡張アプリケーションプログラム240を実行するためにスクリプトファイルをロードする際に、図9から図11のデータを適宜読み込んで検証に使用してよい。図9から図11のデータは、そのままの形式でストレージ104に記録されてもよいが、検証に影響が生じないように改変した状態でストレージ104に記録されてもよい。
図9は、拡張アプリケーションプログラムIDと拡張アプリケーションプログラム240の開発ベンダとの対応テーブル901の説明図である。
図9の対応テーブル901は、図5の拡張アプリケーションプログラム240のために図1の画像形成装置2のストレージ104に記録されてよい。
図9の対応テーブル901は、拡張アプリケーションプログラム240ごとの複数のレコードを有する。各レコードは、拡張アプリケーションプログラムIDと、開発ベンダのベンダ名と、を含む。
図10は、図9と関連して図1の画像形成装置2のストレージ104に記録されているデータとしての、拡張アプリケーションプログラム240の開発ベンダと開発ベンダごとの署名検証鍵との対応テーブル1001の説明図である。
図10の対応テーブル1001は、図9の対応テーブル901に含まれる開発ベンダごとのレコードを有する。各レコードは、拡張アプリケーションプログラム240の開発ベンダのベンダ名と、開発ベンダが拡張アプリケーションプログラム240の暗号化のために使用する署名検証鍵と、を含む。
CPU101は、ステップS802において暗号鍵の署名を確認する場合、図9の対応テーブル901および図10の対応テーブル1001を参照して、拡張アプリケーションプログラム240の暗号鍵の署名検証に用いる鍵情報を特定できる。
図11は、図5の拡張アプリケーションプログラム240のために図1の画像形成装置2のストレージ104に記録されているデータとしての、鍵情報507の説明図である。
図11の鍵情報507は、暗号化されているスクリプトファイルの復号に必要なランダム鍵1201と、ランダム鍵の署名検証情報1202と、を含む。署名検証情報1202は、暗号鍵の署名情報である。
これにより、CPU101は、ロード手段として、拡張アプリケーションプログラム240に含まれる鍵情報507を用いて、暗号化されている制御コードを復号できる。
CPU101は、鍵情報のランダム鍵1201を暗号鍵情報として用いて、拡張アプリケーションプログラム240のスクリプトファイルのデータを復号することにより、スクリプトファイルの制御コードを復号できる。
ランダム鍵の署名である署名検証情報1202は、拡張アプリケーションプログラム240の開発ベンダごとに管理されている署名用の鍵によって行われる。ランダム鍵の署名は、暗号鍵情報の署名を検証するために使用できる。
そして、ランダム鍵1201とランダム鍵の署名検証情報1202との2つの情報は、ストレージ104に記録されている鍵情報において、拡張アプリケーションプログラム管理部402が保持している秘密鍵と対になる公開鍵により暗号化されている。この秘密鍵と対になる公開鍵は、画像形成装置2のストレージ104に予め記憶されていてよい。これにより、CPU101は、ロード手段として、画像形成装置2のストレージ104に予め記憶されている公開鍵を用いて、署名検証情報を検証できる。
なお、ここでは署名鍵は、拡張アプリケーションプログラム240の開発ベンダごとに管理されている。署名鍵は、この他にもたとえば、拡張アプリケーションプログラム240ごとに管理されてもよい。
図12は、図5の拡張アプリケーションプログラム240のために図1の画像形成装置2のストレージ104に記録されているデータとしての、スクリプトダイジェストの説明図である。
図12には、図5と同様の拡張アプリケーションプログラム240の複数のファイルが示されている。
この場合、拡張アプリケーションプログラム240の開発ベンダは、拡張アプリケーションプログラム240を構成する複数のファイルに基づいて、完全性を確認するためにスクリプトダイジェストのデータを生成する。
図12の例では、開発ベンダは、拡張アプリケーションプログラム240を構成するスクリプトの中の、暗号化されていないすべてのスクリプトファイル1101,1103を対象として、スクリプトダイジェストのデータを生成する。スクリプトダイジェストは、拡張アプリケーションプログラム240を構成する基本的にすべてのスクリプトについての、全体的な状況を示すデータであればよい。スクリプトダイジェストは、拡張アプリケーションプログラム240を構成するすべてのスクリプトの一部についての、その全体的な状況を示すデータとしてもよい。スクリプトダイジェストには、改変が可能なすべてのスクリプトについての、その全体的な状況を示すデータとしてもよい。開発ベンダは、たとえば暗号化されていないすべてのスクリプトファイル1101,1103のサイズを加算した値を、スクリプトダイジェストのデータとして生成することができる。暗号化されて直接的に改ざんされる可能性が低いスクリプトファイル1102を除くことにより、スクリプトダイジェストの生成の際、およびスクリプトダイジェストを用いた完全性の確認の際に、処理に必要となる計算量を削減できる。
スクリプトダイジェストのデータは、スクリプトの暗号化に使用した暗号鍵により暗号化されて、拡張アプリケーションプログラム240のスクリプトダイジェストのファイルに格納される。これにより、スクリプトダイジェストのデータは、拡張アプリケーションプログラム240の一部として、拡張アプリケーションプログラム240に含まれることになる。
このように、拡張アプリケーションプログラム240は、制御コードが使用する複数のデータの1つとして、拡張アプリケーションプログラム240における制御コードの完全性を確認するためのスクリプトダイジェスト、を含む。
スクリプトダイジェストは、制御コード検証情報として、拡張アプリケーションプログラム240において暗号化されていないすべてのスクリプトのダイジェストから生成されて、鍵情報により暗号化されている。
CPU101は、制御コードのスクリプトファイルをロードする際に、制御コード検証手段として、拡張アプリケーションプログラム240のスクリプトダイジェストを用いて、制御コードの完全性を検証できる。ここで、スクリプトダイジェストは、拡張アプリケーションプログラム240において暗号化されていない改変可能なすべてのスクリプトについてのものである。すなわち、CPU101は、制御コード検証手段として、ロードしようとしている制御コードを含む拡張アプリケーションプログラム240を構成する複数の制御コードについて、制御コード検証情報を用いて完全性を確認できる。
なお、上述した処理とは異なり、開発ベンダは、拡張アプリケーションプログラム240を構成するすべてのファイルの一部である複数のファイルに基づいてスクリプトダイジェストのデータを生成してもよい。開発ベンダは、自社でのスクリプトダイジェストのデータを生成するルールにしたがって、複数のファイルに基づいてスクリプトダイジェストのデータを生成してよい。たとえば、開発ベンダは、拡張アプリケーションプログラム240に対して拡張アプリケーションプログラム240の制御において必要のないダミーのスクリプトを暗号化せずに意図的に含ませて、それをスクリプトダイジェストのデータ生成に含めないようにしてもよい。開発ベンダは、いずれにしても拡張アプリケーションプログラム240を構成する複数のスクリプトのファイルに基づいて、所定のルールにしたがって、スクリプトダイジェストのデータを生成すればよい。
次に、上述した本実施形態の画像形成装置2により防止可能な改ざんの例について説明する。
図13は、本実施形態を適用していない画像形成装置2において生じ得る1つの課題の説明図である。
図13では、画像形成装置2のストレージ104に、第一アプリ2401と、第二アプリ2402とが記録されている。
第二アプリ2402は、機密情報を使用する正規の拡張アプリケーションプログラム240である。
第二アプリ2402は、アプリケーションプログラムIDのファイル(ID2)、暗号化されていない複数のプレーンスクリプトのファイル(2-1,2-3,2-4)、暗号化されているエンクリプテッドスクリプトのファイル(2-2)、を有する。
そして、悪意のあるユーザは、第二アプリ2402をコピーして、改ざんされた第一アプリ2401を生成する。
CPU101は、画像形成装置2において第一アプリ2401が実行されると、第一アプリ2401に不正にコピーされているエンクリプテッドスクリプトのファイルをロードして復号する。これにより、第一アプリ2401のための仮想マシン230には、エンクリプテッドスクリプトの処理内容が平文展開される。悪意のあるユーザは、平文展開されている機密情報を取得できる。
本実施形態のCPU101は、エンクリプテッドスクリプトのファイルをロードする前に、図8のステップS801~ステップS804の処理を実行する。よって、CPU101は、第一アプリ2401のエンクリプテッドスクリプトのファイルをロードしなくなる。第一アプリ2401のための仮想マシン230には、エンクリプテッドスクリプトの処理内容が平文展開されない。悪意のあるユーザは、機密情報が平文展開されないために、それを取得することができない。
図14は、本実施形態により阻止し得る改ざんの一例の説明図である。
図14には、改ざんによる第一アプリ2403が、正規の第二アプリ2402と同じリソースファイル、鍵情報のファイル、スクリプトダイジェストのファイル、を備える。
本実施形態のCPU101は、エンクリプテッドスクリプトのファイルをロードする前に、図8のステップS802において、鍵情報の署名を検証する。改ざんによる第一アプリ2403の鍵情報のファイルは、正規の第二アプリ2402と同じ鍵情報のファイルであり、第一アプリ2403の開発ベンダのものと一致しなくなる。この場合、CPU101は、ステップS802において、鍵情報が、アプリケーションプログラムID(509)によって示されているアプリケーションプログラム向けの暗号鍵ではないと判断し、エンクリプテッドスクリプトのファイルをロードしない。
その結果、悪意のあるユーザは、機密情報が平文展開されないために、それを取得することができない。
図15は、本実施形態により阻止し得る改ざんの他の例の説明図である。
図14の改ざんによる第一アプリ2404において、さらにリソースファイルが偽造されている場合の例である。
この場合でも、CPU101は、ステップS804において、アプリケーションプログラムを構成する複数の非暗号化スクリプトファイルのすべてに基づいて、スクリプトダイジェストの情報を使用してスクリプトの完全性を検証し、完全ではないと判断する。
その結果、CPU101は、エンクリプテッドスクリプトのファイルをロードしない。悪意のあるユーザは、機密情報が平文展開されないために、それを取得することができない。
図16は、本実施形態により阻止し得る改ざんの他の例の説明図である。
この際、悪意のあるユーザは、第二アプリ2402のプレーンスクリプトのファイルを改ざんし、改ざんによる第一アプリ2405において、エンクリプテッドスクリプトのファイルの情報を、プレーンスクリプトを通じて取得するように改変する。
この場合でも、CPU101は、ステップS804において、アプリケーションプログラムを構成する複数の非暗号化スクリプトファイルのすべてに基づいて、スクリプトダイジェストの情報を使用してスクリプトの完全性を検証する。そしてCPU101は、改ざんによる第一アプリ2405についてスクリプトが完全性ではないと判断する。
その結果、CPU101は、エンクリプテッドスクリプトのファイルをロードしない。悪意のあるユーザは、機密情報が平文展開されないために、それを取得することができない。
以上のように、本実施形態では、ロードしようとしている制御コードが暗号化されている場合には、複数の完全性を確認する。具体的には、本実施形態では、暗号化されている制御コードを復号する場合に使用する鍵情報の完全性と、ロードしようとしている制御コードを含む拡張アプリケーションプログラム240における制御コードの完全性とを確認する。そして、本実施形態では、鍵情報の完全性を確認されている場合であっても、制御コードの完全性が確認されない場合には、ロードしようとしている暗号化された制御コードのロードまたは復号を中断して実行しない。本実施形態では、鍵情報の完全性を確認されて、さらに制御コードの完全性が確認されている場合においてのみ、暗号化された制御コードをロードして復号する。
これにより、本実施形態では、たとえば真正性を有する拡張アプリケーションプログラム240の一部が改ざんされて、その改ざん拡張アプリケーションプログラムにおいて暗号化されている制御コードがロードして復号されてしまうことを防止できる。改ざん拡張アプリケーションプログラムでは、その改ざんにより、オリジナルの拡張アプリケーションプログラム240と同じ制御コードの完全性を確認することができなくなる可能性が高い。
このように本実施形態では、拡張アプリケーションプログラム240に暗号化されていない制御コードを含めることにより画像形成装置2のパフォーマンスへの影響を抑制できる。しかも、本実施形態では、その暗号化されていない制御コードにより、拡張アプリケーションプログラム240からの機密情報の漏えいを効果的に防止できる。
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
本発明は、上述の実施の形態の1以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの1つ以上のプロセッサーがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
2 画像形成装置
101 CPU(ロード手段)
104 ストレージ
112 操作部
230 仮想マシン
240 拡張アプリケーションプログラム
502,504 暗号化されてないスクリプトファイル
503 暗号化されているスクリプトファイル
1201 ランダム鍵
1202 署名検証情報

Claims (10)

  1. 複数の制御コードと複数のデータによって構成されるアプリケーションプログラムを実行可能な画像形成装置であって、
    前記アプリケーションプログラムを構成する個々の前記制御コードを実行するためにロードするロード手段、を有し、
    前記アプリケーションプログラムは、複数の前記制御コードとして、暗号化されている制御コードと、暗号化されていない制御コードと、を含み、
    前記ロード手段は、
    ロードしようとしている前記制御コードが暗号化されている場合において復号に使用する鍵情報の完全性を確認する鍵情報検証手段と、
    ロードしようとしている前記制御コードを含む前記アプリケーションプログラムにおける前記制御コードの完全性を確認する制御コード検証手段と、を有し、
    前記鍵情報検証手段により前記鍵情報の完全性を確認されている場合であっても、前記制御コード検証手段により前記制御コードの完全性が確認されない場合には、ロードしようとしている暗号化された前記制御コードのロードまたは復号を実行しない、
    画像形成装置。
  2. 前記ロード手段は、
    ロードしようとしている前記制御コードの暗号化の有無を判断する暗号化判断手段、を有し、
    ロードしようとしている前記制御コードが前記暗号化判断手段により暗号化されていないと判断される場合には、前記制御コードをそのままロードする、
    請求項1記載の、画像形成装置。
  3. 前記アプリケーションプログラムは、前記制御コードが使用する複数の前記データとして、
    前記アプリケーションプログラムにおける前記制御コードの完全性を確認するための制御コード検証情報、を含み、
    前記制御コード検証手段は、
    ロードしようとしている前記制御コードを含む前記アプリケーションプログラムを構成する複数の前記制御コードについて、前記制御コード検証情報を用いて完全性を確認する、
    請求項1または2記載の、画像形成装置。
  4. 前記アプリケーションプログラムは、前記アプリケーションプログラムについての複数の制御コードを含む複数のスクリプトで構成され、
    前記アプリケーションプログラムの複数の制御コードは、複数の前記スクリプトの単位で一部が暗号化されている、
    請求項1から3のいずれか一項記載の、画像形成装置。
  5. 前記制御コード検証情報は、
    前記アプリケーションプログラムにおいて暗号化されていない複数の前記スクリプトのダイジェストから生成され、前記鍵情報により暗号化され、
    前記制御コード検証手段は、
    ロードしようとしている前記制御コードを含む前記アプリケーションプログラムにおいて暗号化されていない複数の前記スクリプトについて、前記制御コード検証情報を用いて完全性を確認する、
    請求項4記載の、画像形成装置。
  6. 前記アプリケーションプログラムは、前記制御コードが使用する複数の前記データとして、
    暗号化されている前記制御コードを復号するための鍵情報、を含み、
    前記ロード手段は、
    前記アプリケーションプログラムに含まれる前記鍵情報を用いて、暗号化されている前記制御コードを復号する、
    請求項1から5のいずれか一項記載の、画像形成装置。
  7. 前記鍵情報は、
    前記暗号化されている制御コードを復号するために使用する暗号鍵情報と、
    前記暗号鍵情報の署名を検証するために使用する暗号鍵の署名情報と、を含む、
    請求項6記載の、画像形成装置。
  8. 前記暗号鍵の署名情報は、前記アプリケーションプログラムの開発ベンダごとの署名用の鍵、または前記アプリケーションプログラムごとの署名用の鍵で署名されており、
    前記画像形成装置は、前記秘密鍵と対になる公開鍵を予め記憶する記憶手段、を有し、
    前記ロード手段は、
    前記画像形成装置の前記記憶手段に予め記憶されている前記公開鍵を用いて、前記暗号鍵の署名情報を検証する、
    請求項7記載の、画像形成装置。
  9. 複数の制御コードと複数のデータによって構成されるアプリケーションプログラムを実行可能な画像形成装置の制御方法であって、
    前記アプリケーションプログラムを構成する個々の前記制御コードを実行するためにロードするロード処理、を有し、
    前記アプリケーションプログラムは、複数の前記制御コードとして、暗号化されている制御コードと、暗号化されていない制御コードと、を含み、
    前記ロード処理は、
    ロードしようとしている前記制御コードが暗号化されている場合において復号に使用する鍵情報の完全性を確認する鍵検証処理と、
    ロードしようとしている前記制御コードを含む前記アプリケーションプログラムにおける前記制御コードの完全性を確認するコード検証処理と、を有し、
    前記鍵検証処理により前記鍵情報の完全性を確認されている場合であっても、前記コード検証処理により前記制御コードの完全性が確認されない場合には、ロードしようとしている暗号化された前記制御コードのロードまたは復号を実行しない、
    画像形成装置の制御方法。
  10. 複数の制御コードと複数のデータによって構成されるアプリケーションプログラムを実行可能な画像形成装置の制御方法をコンピュータに実行させるプログラムであって、
    前記画像形成装置の制御方法は、
    前記アプリケーションプログラムを構成する個々の前記制御コードを実行するためにロードするロード処理、を有し、
    前記アプリケーションプログラムは、複数の前記制御コードとして、暗号化されている制御コードと、暗号化されていない制御コードと、を含み、
    前記ロード処理は、
    ロードしようとしている前記制御コードが暗号化されている場合において復号に使用する鍵情報の完全性を確認する鍵検証処理と、
    ロードしようとしている前記制御コードを含む前記アプリケーションプログラムにおける前記制御コードの完全性を確認するコード検証処理と、を有し、
    前記鍵検証処理により前記鍵情報の完全性を確認されている場合であっても、前記コード検証処理により前記制御コードの完全性が確認されない場合には、ロードしようとしている暗号化された前記制御コードのロードまたは復号を実行しない、
    プログラム。

JP2021019870A 2021-02-10 2021-02-10 画像形成装置、その制御方法、およびプログラム Pending JP2022122553A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021019870A JP2022122553A (ja) 2021-02-10 2021-02-10 画像形成装置、その制御方法、およびプログラム
US17/575,709 US20220253521A1 (en) 2021-02-10 2022-01-14 Image forming apparatus capable of executing application programs, control method therefor, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021019870A JP2022122553A (ja) 2021-02-10 2021-02-10 画像形成装置、その制御方法、およびプログラム

Publications (1)

Publication Number Publication Date
JP2022122553A true JP2022122553A (ja) 2022-08-23

Family

ID=82704990

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021019870A Pending JP2022122553A (ja) 2021-02-10 2021-02-10 画像形成装置、その制御方法、およびプログラム

Country Status (2)

Country Link
US (1) US20220253521A1 (ja)
JP (1) JP2022122553A (ja)

Also Published As

Publication number Publication date
US20220253521A1 (en) 2022-08-11

Similar Documents

Publication Publication Date Title
US7634661B2 (en) Manifest-based trusted agent management in a trusted operating system environment
US7577839B2 (en) Transferring application secrets in a trusted operating system environment
US7159240B2 (en) Operating system upgrades in a trusted operating system environment
US8549313B2 (en) Method and system for integrated securing and managing of virtual machines and virtual appliances
US6647495B1 (en) Information processing apparatus and method and recording medium
US8438658B2 (en) Providing sealed storage in a data processing device
EP2420949B1 (en) Information processing system, information processing method, information processing program, computer readable medium and computer data signal
JP4093494B2 (ja) 秘密情報へのアクセスを制御するシステムおよびその方法
US20110311046A1 (en) Image Forming System, Image Forming Apparatus, and Method in which an Application is Added
US8190912B2 (en) Program development method, program development supporting system, and program installation method
US20050060568A1 (en) Controlling access to data
US20070180271A1 (en) Apparatus and method for providing key security in a secure processor
US7299363B2 (en) Method for using shared library in tamper resistant microprocessor
US20080301468A1 (en) Cryptographic Secure Program Overlays
AU2013355576A1 (en) System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
KR20030082484A (ko) 공개 키 암호화에 기초한 데이터의 저장 및 검색
KR20030082485A (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색
JP2023512428A (ja) ハードウェアエンクレーブを使用して商用オフザシェルフプログラムバイナリを盗用から保護すること
US20120124360A1 (en) Method and Apparatus for Booting a Processing System
Bornträger et al. Secure your cloud workloads with IBM Secure Execution for Linux on IBM z15 and LinuxONE III
JP2019114028A (ja) アプリ開発用環境プログラムおよび装置
JP2022122553A (ja) 画像形成装置、その制御方法、およびプログラム
KR20100065722A (ko) 데이터 보호장치 및 그 방법
US20240037217A1 (en) Digital content management through on-die cryptography and remote attestation
CN116049844A (zh) 一种可信平台模块调用方法、系统、装置及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240202