JP2009543234A - System for protecting sensitive data from user code within a register window architecture - Google Patents

System for protecting sensitive data from user code within a register window architecture Download PDF

Info

Publication number
JP2009543234A
JP2009543234A JP2009518674A JP2009518674A JP2009543234A JP 2009543234 A JP2009543234 A JP 2009543234A JP 2009518674 A JP2009518674 A JP 2009518674A JP 2009518674 A JP2009518674 A JP 2009518674A JP 2009543234 A JP2009543234 A JP 2009543234A
Authority
JP
Japan
Prior art keywords
window
supervisor
transition
stack
user
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
JP2009518674A
Other languages
Japanese (ja)
Inventor
デイヴィッド ウィリアム ファンク,
サイモン ロバート ワルムズリー,
カイア シルバーブルック,
バリー ガウク,
Original Assignee
シルバーブルック リサーチ ピーティワイ リミテッド
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 シルバーブルック リサーチ ピーティワイ リミテッド filed Critical シルバーブルック リサーチ ピーティワイ リミテッド
Publication of JP2009543234A publication Critical patent/JP2009543234A/en
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/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • G06F21/608Secure printing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Abstract

【課題】プロセッサのレジスタウィンドウアーキテクチャ内でスーパーバイザモードデータをユーザコードから保護するための優れたシステムを得る。
【解決手段】プロセッサのレジスタウィンドウアーキテクチャ内でスーパーバイザモードデータをユーザコードから保護するためのシステムが提供される。このシステムは、スーパーバイザモードからユーザモードに遷移する際、無効ウィンドウマスクの確保されたウィンドウのために設定される無効ウィンドウビットに加えて、少なくとも1つの無効ウィンドウビットをアーキテクチャの無効ウィンドウマスク内に設定する。その追加のビットは、スーパーバイザデータウィンドウとユーザデータウィンドウとの間の遷移ウィンドウのために設定される。
【選択図】図5
An excellent system is provided for protecting supervisor mode data from user code within a register window architecture of a processor.
A system is provided for protecting supervisor mode data from user code within a register window architecture of a processor. When transitioning from supervisor mode to user mode, this system sets at least one invalid window bit in the invalid window mask of the architecture in addition to the invalid window bit set for a window with an invalid window mask reserved. To do. That additional bit is set for the transition window between the supervisor data window and the user data window.
[Selection] Figure 5

Description

本発明は、組込型コンピュータシステムを有する電子装置に関する。本発明は、装置メーカーのソフトウェア設計の下流における柔軟性を依然として持たせたまま、主にセキュリティを改善し、コンピュータシステムをソフトウェアの悪質な不正使用から保護するために開発された。   The present invention relates to an electronic device having an embedded computer system. The present invention was developed primarily to improve security and protect computer systems from malicious unauthorized use of software while still providing flexibility downstream of the device manufacturer's software design.

[関連出願の相互参照]
本発明に関する様々な方法、システム、及び装置は、本発明の出願人又は譲受人によって出願された、以下の米国特許/米国特許出願に開示されている。

Figure 2009543234

Figure 2009543234

Figure 2009543234

これらの出願及び特許の開示を、参照により本明細書に組み込む。 [Cross-reference of related applications]
Various methods, systems and devices relating to the present invention are disclosed in the following US patents / US patent applications filed by the assignee or assignee of the present invention.
Figure 2009543234

Figure 2009543234

Figure 2009543234

The disclosures of these applications and patents are incorporated herein by reference.

現在、組込型コンピュータシステムを有する電子装置は日常生活の一部である。このような装置の例には、現金自動預払機(automatic teller machines:ATMs)、移動電話、プリンタ、コピー機、手持ち式計算機、電子レンジ、テレビ、DVDプレイヤー、洗濯機、手持ち式ゲーム機などがある。概して、組込型コンピュータシステムは、それ自体はコンピュータではない機能を提供するのが特徴である。   Currently, electronic devices with embedded computer systems are part of everyday life. Examples of such devices include automatic teller machines (ATMs), mobile phones, printers, copiers, handheld calculators, microwave ovens, televisions, DVD players, washing machines, handheld game machines, and the like. is there. In general, embedded computer systems are characterized by providing functions that are not themselves computers.

一般に、組込型システムは、特殊用途ハードウェアと、リアルタイムオペレーティングシステム(real−time operating system:RTOS)をサポートするプロセッサ(CPU)とを含む。このシステムは、特定のシステムのための要求を満たすように適合された特殊用途ソフトウェアでプログラムされる。典型的には、組込型システムのために書かれたソフトウェアは「ファームウェア」と呼ばれる。電子装置はエラーなしに長年継続して動作することが期待されるので、ファームウェアはコンピュータ用のソフトウェアよりも通常厳格に開発されテストされる。   In general, embedded systems include special purpose hardware and a processor (CPU) that supports a real-time operating system (RTOS). This system is programmed with special purpose software adapted to meet the requirements for a particular system. Typically, software written for embedded systems is called “firmware”. Because electronic devices are expected to operate continuously for many years without error, firmware is usually developed and tested more strictly than software for computers.

組込型コンピュータシステムの明らかな操作上の諸利点の他に、様々な製品ラインの製造と販売に関して提供される多くの利点がある。新しい製品が市場に出されると、それぞれのバージョンが、その特定のバージョンに見合う価格を有する異なるバージョンの製品を発売することがしばしば望ましい。例えば、第1の製品は機能Xを有することができ、第2の製品は機能X,Y,及びZを有することができる。   In addition to the obvious operational advantages of an embedded computer system, there are many advantages offered with respect to the manufacture and sale of various product lines. As new products are put on the market, it is often desirable to release different versions of each product with a price that is commensurate with that particular version. For example, a first product can have function X and a second product can have functions X, Y, and Z.

製造について言えば、第1の製品専用の生産ラインを設け、また第2の製品専用の別の生産ラインを設けることは割高である。すべての製品内に、機能X、Y、及びZをサポートするための必要なハードウェアを含む、単一の製品タイプを製造する方が割安である。この場合、様々な製品ラインが、その組込型ファームウェアによって差別化されうる。ハードウェアと比較して、ファームウェアは様々な製品間を差別化するための更に割安な手段を提供する。更に、ファームウェアによって、ユーザは新しい装置を買わずに自分の装置をアップグレードできようになる。例えば、アップグレードを提供するために、許可されたインターネットダウンロードをパーソナルコンピュータ経由で使用でき、それにより購入当初は機能Xしかなかった製品内で機能YとZができるようになる。   In terms of manufacturing, it is expensive to provide a production line dedicated to the first product and another production line dedicated to the second product. It is cheaper to produce a single product type that includes the necessary hardware to support functions X, Y, and Z within all products. In this case, the various product lines can be differentiated by their embedded firmware. Compared to hardware, firmware provides a cheaper way to differentiate between various products. In addition, the firmware allows users to upgrade their devices without buying new devices. For example, to provide an upgrade, authorized Internet downloads can be used via a personal computer, thereby enabling functions Y and Z within a product that initially had only function X.

しかし、組込型ファームウェア特有の問題は、ハッカー、又は不正なファームウェアアップグレードを持ちかける意図的な著作権侵害者からの悪質な攻撃を受けやすいことである。例えば、不正なファームウェアアップグレードはインターネット上で自由に配布されることがあり、ユーザは自分の装置を無料でアップグレードできる。   However, a problem unique to embedded firmware is that it is susceptible to malicious attacks from hackers or intentional pirates who carry out unauthorized firmware upgrades. For example, unauthorized firmware upgrades may be freely distributed over the Internet, and users can upgrade their devices for free.

この問題を回避する1つの方法は、アップグレードを提供するためにファームウェア自体を介するのではなく、装置内の認証チップを介することである。プリンタ環境における認証チップ(「QAチップ」)の使用は、以下に記載の我々の以前の出願において説明されており、その内容を参照により本明細書に組み込む。

Figure 2009543234

我々の以前の出願において説明したように、プリンタプラットフォーム内のQAチップは、安全な環境で数々の機能を実行する。印刷カートリッジ内のQAチップは、許可された方法でのみプリンタの操作を許可するように使用されうる。例えば、プリンタAは1分あたり10ページを印刷するよう許可され、プリンタBは1分あたり30ページを印刷するよう許可されうる。それぞれのプリンタ内のハードウェアは同一だが、QAチップがそれぞれのプリンタを差別化することができる。更に、QAチップがそれぞれのプリンタのデータを安全で認証された方法で格納するので、信頼できる供給源によってしかアップグレード又は置き換えできない。したがって、QAチップは無許可のユーザからの攻撃に対する保護を提供する。 One way to avoid this problem is through an authentication chip in the device, rather than through the firmware itself to provide an upgrade. The use of an authentication chip (“QA chip”) in a printer environment is described in our earlier application described below, the contents of which are incorporated herein by reference.
Figure 2009543234

As explained in our previous application, the QA chip in the printer platform performs a number of functions in a secure environment. The QA chip in the print cartridge can be used to allow operation of the printer only in an authorized manner. For example, printer A can be authorized to print 10 pages per minute and printer B can be authorized to print 30 pages per minute. Although the hardware in each printer is the same, the QA chip can differentiate each printer. Furthermore, since the QA chip stores the data for each printer in a secure and authenticated manner, it can only be upgraded or replaced by a reliable source. Thus, the QA chip provides protection against attacks from unauthorized users.

インクカートリッジに装着されたQAチップは、カートリッジ内に含まれるインクが特定の供給源からのもの、又は特定の品質であって、それにより印字ヘッドを傷める不正インクは確実に使用され得ないことを保証するために使用されうる。同様に、同じQAチップが、カートリッジ内の最初のインク量と、そのインクを使用して印刷されたドット数とを参照して決定された、カートリッジ内に残っている「バーチャルインク」の量を、そのメモリ内に動的に格納するために使用されうる。「バーチャルインク」の量は、プリンタのためにセキュリティ機構を提供し、インクカートリッジの不正な補充を防ぐ。つまり、印刷する前にプリンタ内のファームウェアがインクカートリッジのQAチップと通信し、「バーチャルインク」の量が不十分な場合、プリンタは印刷しない。このようにして、インクの質を保証することができ、不正な補充による低品質のインクを使用して印字ヘッドを傷める危険性が最小限になる。   The QA chip mounted on the ink cartridge ensures that the ink contained in the cartridge is from a specific source or of a specific quality, so that illegal ink that damages the print head cannot be used reliably. Can be used to guarantee. Similarly, the same QA chip determines the amount of “virtual ink” remaining in the cartridge, determined with reference to the initial amount of ink in the cartridge and the number of dots printed using that ink. Can be used for dynamic storage in that memory. The amount of “virtual ink” provides a security mechanism for the printer and prevents unauthorized refilling of the ink cartridge. That is, if the firmware in the printer communicates with the QA chip of the ink cartridge before printing and the amount of “virtual ink” is insufficient, the printer does not print. In this way, the quality of the ink can be assured and the risk of damaging the print head using low quality ink with improper replenishment is minimized.

QAチップは、電子装置の不正使用を防ぐための優れた手段を提供する。しかし、QAチップのセキュリティは、チップと通信する組込型システム内のファームウェアに依存する。最も果敢なハッカーがファームウェアを変更し、装置内のQAチップとの通信を無効にできることが考えられる。この場合、QAチップによって提供されるセキュリティは危険にさらされてしまう。上述の例では、インクカートリッジ上のQAチップの存在に関係なく、インクカートリッジの不正な補充が可能である。   QA chips provide an excellent means for preventing unauthorized use of electronic devices. However, the security of the QA chip depends on the firmware in the embedded system that communicates with the chip. It is conceivable that the most daring hacker can change the firmware and disable communication with the QA chip in the device. In this case, the security provided by the QA chip is compromised. In the above example, the ink cartridge can be illegally replenished regardless of the presence of the QA chip on the ink cartridge.

組込型コンピュータシステムに対してこのような果敢な攻撃が行われることはなさそうに見えるかもしれない。しかし、プリンタ市場において、詰め替え用不正インクの売上高は数百万ドル産業になりつつあり、プリンタに内蔵されたどのようなセキュリティシステムに対する悪質な攻撃へのかなりの動機をも与えている。プリンタメーカーの立場から言えば、プリンタで低品質のインクを使用すると、印刷の質が悪くなり印字ヘッドの寿命を縮め、プリンタ市場における信用と評判に計り知れない損害を与える可能性がある。   It may seem unlikely that such a bold attack will be made against an embedded computer system. However, in the printer market, sales of refill fraudulent inks are becoming a multi-million dollar industry, providing considerable incentives to malicious attacks against any security system built into the printer. From the printer manufacturer's point of view, using low-quality ink in the printer can result in poor print quality, shorten the life of the printhead, and immeasurable damage to the reputation and reputation in the printer market.

したがって、悪質な攻撃からのセキュリティを改善した組込型コンピュータシステムを有する電子装置を提供することが望ましい。   Accordingly, it is desirable to provide an electronic device having an embedded computer system that has improved security from malicious attacks.

ファームウェアアップグレードを行うための、又は代替の中核RTOSを装置メーカーの下流でインストールさえするための柔軟性を持たせることができる電子装置を提供することが更に望ましい。   It is further desirable to provide an electronic device that can have the flexibility to perform firmware upgrades or even install an alternative core RTOS downstream of the device manufacturer.

ピクトブリッジプリンタ内のファームウェアをアップグレードするための簡単な方法を提供することが更に望ましい。   It is further desirable to provide a simple method for upgrading firmware in a PictBridge printer.

米国特許出願第11/014769号(2004年12月12日出願)US Patent Application No. 11/014769 (filed December 12, 2004)

第1の態様では、組込型コンピュータシステムを備える電子装置が提供され、前記装置がリアルタイムオペレーティングシステム(RTOS)をサポートするプロセッサを備え、前記プロセッサがユーザモード及びスーパーバイザモードをサポートし、前記コンピュータシステムが、前記装置内の必須のハードウェアを直接制御するコード部分だけがスーパーバイザモードで実行されるようにプログラムされている。   In a first aspect, an electronic device comprising an embedded computer system is provided, the device comprising a processor that supports a real time operating system (RTOS), the processor supporting a user mode and a supervisor mode, the computer system However, only the part of the code that directly controls the essential hardware in the device is programmed to run in supervisor mode.

本明細書では、「必須のハードウェア」は、装置が重要な機能を実行するために必須のハードウェアコンポーネントを意味するために使用される。例えば、プリンタの場合、必須のハードウェアは、印字ヘッド内のノズル作動装置を作動させるための駆動回路を含むことができるが、LCDディスプレイはプリンタが印刷できるために必須ではないので、プリンタ上のLCDディスプレイは含まない。   As used herein, “essential hardware” is used to mean hardware components that are essential for a device to perform important functions. For example, in the case of a printer, the essential hardware can include a drive circuit to operate a nozzle actuator in the print head, but an LCD display is not essential for the printer to print, so on the printer LCD display is not included.

本明細書では、「コード部分」という用語は、特定の機能を実行するコードの何らかの部分を意味するために使用される。コード部分は、スレッド又はプロセスの一部の場合がある。   As used herein, the term “code portion” is used to mean any portion of code that performs a particular function. The code portion may be part of a thread or process.

ユーザモード及びスーパーバイザモードをサポートするプロセッサは、コンピュータ分野ではよく知られている。スーパーバイザモード内で実行しているコードは、もともとそのコードを書いた人など、特権を持った人によってのみアクセスされうる。一方、ユーザモード内で実行しているコードは、特権に関係なく誰によってもアクセス及び修正されうる。   Processors that support user mode and supervisor mode are well known in the computer field. Code running in supervisor mode can only be accessed by a privileged person, such as the person who originally wrote the code. On the other hand, code executing in user mode can be accessed and modified by anyone regardless of privileges.

ユーザモード及びスーパーバイザモードをサポートするプロセッサの例には、SPARC(商標)プロセッサがある。このようなプロセッサは、コンピュータ上で実行している、バグの出る可能性のあるアプリケーションから、オペレーティングシステムの中核(又はカーネル)を保護するように設計されている。オペレーティングシステムの中核がスーパーバイザモードで実行していると、ユーザモードで実行している特定のアプリケーションがたとえクラッシュしても、そのオペレーティングシステムは実行し続けることができる。これにより、ユーザモードで実行している他のアプリケーションが、オペレーティングシステム上で実行し続けることができることが確実になる。このようにオペレーティングシステムの中核を保護することによって、バグの出るアプリケーションでコンピュータ全体がクラッシュする危険性が最小限になる。つまり、アプリケーションとオペレーティングシステムの中核との間に分離がある。   An example of a processor that supports user mode and supervisor mode is the SPARC ™ processor. Such processors are designed to protect the core (or kernel) of the operating system from potentially buggy applications running on the computer. If the core of the operating system is running in supervisor mode, the operating system can continue to run even if a particular application running in user mode crashes. This ensures that other applications running in user mode can continue to run on the operating system. By protecting the core of the operating system in this way, the risk of crashing the entire computer with buggy applications is minimized. That is, there is a separation between the application and the core of the operating system.

本発明では、ユーザモード及びスーパーバイザモードをサポートするプロセッサが、非組込型コンピュータシステムにおける従来の使用とは異なる方法で用いられる。本発明の組込型コンピュータシステムは、装置内の必須のハードウェアを直接制御するコード部分だけがスーパーバイザモードで実行され、残りのコード部分がユーザモードで実行されるようにプログラムされる。   In the present invention, a processor that supports user mode and supervisor mode is used in a manner different from conventional use in non-embedded computer systems. The embedded computer system of the present invention is programmed so that only the code portion that directly controls the essential hardware in the device is executed in supervisor mode and the remaining code portion is executed in user mode.

特定のコード部分(装置内の必須のハードウェアを制御する)をスーパーバイザモードで実行することの主な利点は、これらのコード部分は、装置メーカーによって一度ファイナライズされると修正できないことである。したがって、メーカー又はライセンシーは、装置がどのように操作されうるかの最終的な制御を保有する。   The main advantage of running certain code portions (which control the required hardware in the device) in supervisor mode is that these code portions cannot be modified once finalized by the device manufacturer. Thus, the manufacturer or licensee has ultimate control over how the device can be operated.

例えば、プリンタメーカーは、印字ヘッドと給紙機構を直接制御するコード部分に、プリンタが1分あたり10ページだけを印刷するようにプログラムできる。このコード部分はスーパーバイザモードで保護されているので、ハッカーがコードを修正し、自分のプリンタをアップグレードすることは不可能である。   For example, the printer manufacturer can program the printer to print only 10 pages per minute in the code portion that directly controls the print head and paper feed mechanism. Because this code part is protected in supervisor mode, it is impossible for hackers to modify the code and upgrade their printers.

任意選択で、コンピュータシステムは、前記装置内の必須のハードウェアを直接制御しないコード部分が、ユーザモードで実行されるようにプログラムされる。任意選択で、RTOSの中核がユーザモードで実行される。このように組込型コンピュータシステムをプログラミングすることの利点は2つある。まず、スーパーバイザモード内のコード量が最小限に維持され、この不変のコード内に存在するバグの危険性を最小限にする。次に、RTOSと必須でないアプリケーションをユーザモードで実行させることによって、認可を受けたプリンタメーカー又は販売代理店、元のプリンタメーカーの下流部門が、自分が選択したオペレーティングシステム上の自分の要求に特化した、独自のファームウェアを開発する機会がある。例えば、認可を受けたプリンタメーカーは、LCDディスプレイのフォーマットを変更し、好ましいオペレーティングシステムを使用してこれをプログラムしたい場合がある。本発明によれば、認可を受けたプリンタメーカーは、装置内のQAシステムのセキュリティが脅かされることなく、これを行う柔軟性を有する。   Optionally, the computer system is programmed such that portions of code that do not directly control the required hardware in the device are executed in user mode. Optionally, the core of RTOS is executed in user mode. There are two advantages to programming an embedded computer system in this way. First, the amount of code in supervisor mode is kept to a minimum, minimizing the risk of bugs present in this immutable code. Next, by running the RTOS and non-essential applications in user mode, the authorized printer manufacturer or distributor, or the downstream department of the original printer manufacturer, specializes in their requirements on the operating system of their choice. There is an opportunity to develop customized firmware. For example, an approved printer manufacturer may want to change the LCD display format and program it using the preferred operating system. In accordance with the present invention, authorized printer manufacturers have the flexibility to do this without compromising the security of the QA system in the device.

任意選択で、必須のハードウェアを直接制御するコード部分を、そのコード部分を識別するトラップを介して、ユーザモードで実行しているアプリケーションから呼び出せるように、コンピュータシステムがプログラムされる。それぞれが個々の必須のハードウェアを直接制御している複数のコード部分を、個々のコード部分を識別する個々のトラップを介して、ユーザモードで実行しているアプリケーションからそれぞれ独立に呼び出せるようにすることができる。   Optionally, the computer system is programmed so that code portions that directly control the required hardware can be called from applications running in user mode via traps that identify the code portions. Allows multiple code portions, each directly controlling individual required hardware, to be called independently from an application running in user mode via individual traps that identify individual code portions be able to.

特定のコード部分をユーザモードから呼び出せることの利点は、それにより特定の操作シーケンスを装置にプログラミングするのに更なる柔軟性がもたらされることである。ユーザモードアプリケーションは、認可を受けた装置メーカーによってプログラムされることもあり、或いはインターネットからダウンロードできるアップグレードを介して入手可能なことさえある。例えば、プリンタのユーザは、「5000ページ、フルカラー」を印刷するデフォルトオプションを有したい場合がある。組込型システム内にプログラムされた印刷ジョブアプリケーションはユーザモードで実行するため、このユーザは、このデフォルトオプションを有するように自分のファームウェアをアップグレードできる。   The advantage of being able to call a specific code portion from the user mode is that it gives more flexibility to program a specific sequence of operations into the device. User mode applications may be programmed by authorized device manufacturers, or even available through upgrades that can be downloaded from the Internet. For example, a printer user may want to have a default option to print “5000 pages, full color”. Since the print job application programmed in the embedded system runs in user mode, the user can upgrade his firmware to have this default option.

任意選択で、必須ハードウェアを直接制御するコード部分が、ハードウェアの操作前に装置内の少なくとも1つの認証チップと通信する。認証チップ(又は「QAチップ」)が操作を許可する。例えば、コード部分が、プリンタに許可された印刷速度をQAチップに尋ねることがある。QAチップはこの情報(例えば、1分あたり10ページ)をコンピュータシステムに返し、許可された印刷速度での印刷を開始できる。このようにして、装置の許可を受けた操作は、装置内のファームウェアへの悪質な攻撃によって脅かされることなく、QAチップを介して安全に制御されうる。   Optionally, the code portion that directly controls the required hardware communicates with at least one authentication chip in the device prior to operation of the hardware. The authentication chip (or “QA chip”) permits the operation. For example, the code portion may ask the QA chip for the printing speed allowed for the printer. The QA chip returns this information (eg, 10 pages per minute) to the computer system and can start printing at the permitted printing speed. In this way, operations authorized by the device can be safely controlled via the QA chip without being threatened by a malicious attack on the firmware in the device.

任意選択で、最初の認証チップは、前記装置の消耗コンポーネントと関連付けられる。電子装置内の消耗コンポーネントの例には、インクカートリッジ、トナー、紙、電池などがある。最初の認証チップは、消耗コンポーネントに関する静的及び/又は動的データを含むことができる。例えば、静的データは、消耗コンポーネントの供給源、バッチ番号、質(例えば、インクの色)、初期量などに関することができる。動的データは、消耗コンポーネントの現在の量(例えば、インクの残量)、又は質(例えば、温度)に関することができる。   Optionally, an initial authentication chip is associated with the consumable component of the device. Examples of consumable components in electronic devices include ink cartridges, toner, paper, batteries, and the like. The initial authentication chip can include static and / or dynamic data regarding the consumable component. For example, static data can relate to the source of consumable components, batch number, quality (eg, ink color), initial quantity, and the like. The dynamic data can relate to the current amount of consumable components (eg, ink level) or quality (eg, temperature).

電子装置はいくつかの消耗コンポーネントを必要とする場合がある。したがって、装置は、それぞれが個々の消耗コンポーネントと関連付けられている複数の最初の認証チップを備えることができる。   An electronic device may require several consumable components. Thus, the apparatus can comprise a plurality of initial authentication chips, each associated with an individual consumable component.

任意選択で、電子装置はプリンタであり、消耗コンポーネントはそれぞれの最初の認証チップを有するインクカートリッジである。インクカートリッジ上の認証チップは、特定の条件、例えば(i)関連付けられている認証チップを介して決定された通り、所定のタイプのインクカートリッジがプリンタにロードされた場合のみ印刷する、及び/又は(ii)関連付けられている認証チップを介して決定された通り、所定のインク量がインクカートリッジ内に残っている場合のみ印刷する、が満たされた場合のみ、印刷を許可するために使用されうる。前述のように、これらの認証メカニズムは、プリンタメーカーにプリンタ内で使用されるインクの質に関する保証を提供し、それによりプリンタ市場におけるメーカーの評判を保つ。   Optionally, the electronic device is a printer and the consumable component is an ink cartridge having a respective first authentication chip. The authentication chip on the ink cartridge prints only when a predetermined type of ink cartridge is loaded into the printer, as determined via certain conditions, eg, (i) the associated authentication chip, and / or (Ii) can be used to allow printing only if a predetermined amount of ink remains in the ink cartridge, as determined via the associated authentication chip, is satisfied . As mentioned above, these authentication mechanisms provide a guarantee to the printer manufacturer regarding the quality of the ink used in the printer, thereby preserving the manufacturer's reputation in the printer market.

任意選択で、第2の認証チップは、消耗コンポーネントと関連付けられていない装置の本体内に位置付けられる。例えば、第2の認証チップはプリンタの印刷エンジン内、又は印刷エンジン上に装着されうる。第2の認証チップは、所定の速度で印刷するなどの、装置の特定の操作を許可するために使用されうる。   Optionally, the second authentication chip is located within the body of the device that is not associated with the consumable component. For example, the second authentication chip can be mounted in or on the print engine of the printer. The second authentication chip can be used to allow certain operations of the device, such as printing at a predetermined speed.

第2の態様では、ピクトブリッジプリンタ内のファームウェアをアップグレードするためのシステムが提供され、そのシステムは、
組込型コンピュータシステムを有するピクトブリッジプリンタと、
前記組込型コンピュータシステムと通信するためのメモリスティックとを備え、前記メモリスティックは、前記組込型コンピュータシステムのためのファームウェアアップグレードを含む。
In a second aspect, a system for upgrading firmware in a PictBridge printer is provided, the system comprising:
A PictBridge printer having an embedded computer system;
A memory stick for communicating with the embedded computer system, the memory stick including a firmware upgrade for the embedded computer system.

第3の態様では、ピクトブリッジプリンタの組込型コンピュータシステムのためのファームウェアアップグレードを含むメモリスティックが提供される。   In a third aspect, a memory stick is provided that includes a firmware upgrade for an embedded computer system of a PictBridge printer.

第4の態様では、ピクトブリッジプリンタ内のファームウェアをアップグレードするためのシステムが提供され、前記システムが、
組込型コンピュータシステムを有するピクトブリッジプリンタと、
前記組込型コンピュータシステムと通信するためのデジタルカメラとを備え、前記カメラが前記組込型コンピュータシステムのためのファームウェアアップグレードを含む。
In a fourth aspect, a system for upgrading firmware in a PictBridge printer is provided, the system comprising:
A PictBridge printer having an embedded computer system;
A digital camera for communicating with the embedded computer system, the camera including a firmware upgrade for the embedded computer system.

第5の態様では、ピクトブリッジプリンタの組込型コンピュータシステムのためのファームウェアアップグレードを含むデジタルカメラが提供される。   In a fifth aspect, a digital camera is provided that includes a firmware upgrade for a pictobridge printer embedded computer system.

ピクトブリッジは、カメラ映像機器工業会(Camera & Imaging Products Association:CIPA)からの、直接印刷のための業界のオープンスタンダードである。ピクトブリッジによって、カメラをコンピュータに接続せずに、デジタルカメラからプリンタで映像を直接印刷することが可能になる。単一のUSBケーブルを使用して、ピクトブリッジ対応のプリンタをピクトブリッジ対応のカメラに接続することによって、ユーザは自分のカメラを使用して簡単に印刷設定を制御し、パーソナルコンピュータを使用せずに高画質の写真を得られる。ピクトブリッジ印刷の主な利点は、ユーザ、及び特に複雑な写真アプリケーションソフトウェアが障壁になる場合があるユーザにとって簡単であることである。   PictBridge is an industry open standard for direct printing from the Camera & Imaging Products Association (CIPA). PictBridge makes it possible to print video directly from a digital camera with a printer without connecting the camera to a computer. By using a single USB cable to connect a PictBridge-compatible printer to a PictBridge-compatible camera, users can easily control print settings using their own camera without using a personal computer. High quality photos can be obtained. The main advantage of PictBridge printing is that it is simple for the user and especially for users where complex photo application software can be a barrier.

ピクトブリッジは、カメラ内の組込型コンピュータシステムとプリンタとの間の通信に依存する。これらの組込型コンピュータシステムは、パーソナルコンピュータの写真アプリケーションに効果的に取って代わり、更に、ユーザにとって操作を簡単にする。   PictBridge relies on communication between the embedded computer system in the camera and the printer. These embedded computer systems effectively replace personal computer photographic applications and further simplify operation for the user.

時々、ピクトブリッジプリンタ内のファームウェアをアップグレードする必要がある場合がある。例えば、追加の印刷オプションが要求される場合もあり、販売中の新しいピクトブリッジ対応カメラと互換性を持つようにファームウェアをアップグレードする必要がある場合もある。   Sometimes it may be necessary to upgrade the firmware in the PictBridge printer. For example, additional printing options may be required, and firmware may need to be upgraded to be compatible with new Pictobridge compatible cameras on sale.

従来のデジタルカメラシステムでは、パーソナルコンピュータの写真アプリケーションのためのソフトウェアアップグレードは、インターネットからのダウンロード、又はCDを介して提供される。しかし、多くのピクトブリッジプリンタユーザは、そもそもコンピュータを所有していない場合がある。コンピュータを所有するユーザにとっては、インターネットから自分のパーソナルコンピュータに新しいソフトウェアをダウンロードし、ピクトブリッジプリンタを自分のパーソナルコンピュータに接続することによってピクトブリッジプリンタをアップグレードする複雑さは、重大な障壁になる可能性が高い。結局ピクトブリッジユーザは一般に、その簡単さのためと、パーソナルコンピュータを必要としないために、このシステムに魅力を感じるのである。   In conventional digital camera systems, software upgrades for personal computer photo applications are provided via download from the Internet or CD. However, many PictBridge printer users may not have a computer in the first place. The complexity of upgrading a Pictbridge printer by downloading new software from the Internet to your personal computer and connecting the Pictbridge printer to your personal computer can be a significant barrier for users who own computers High nature. After all, PictBridge users are generally attracted to this system because of its simplicity and because it does not require a personal computer.

本発明の主な利点は、ユーザにとって簡単なことである。メモリスティックをピクトブリッジプリンタのUSBポートに差し込むのに、コンピュータスキルは必要ない。したがって、プリンタのファームウェアアップグレードは、プリンタを不正確にアップグレードするリスク又は怖れなしに、誰にでも自信を持って実行されうる。   The main advantage of the present invention is simplicity for the user. No computer skills are required to insert the memory stick into the USB port of the PictBridge printer. Thus, printer firmware upgrades can be performed with confidence by anyone without the risk or fear of inaccurately upgrading the printer.

本明細書では、「メモリスティック」という用語は、どのような携帯型不揮発性デジタルメモリ装置をも意味するために使用される。   As used herein, the term “memory stick” is used to mean any portable non-volatile digital memory device.

メモリスティック又はカメラは、標準的なUSBコネクタを介して組込型コンピュータシステムと通信できる。   The memory stick or camera can communicate with the embedded computer system via a standard USB connector.

任意選択で、メモリスティック又はカメラは、プリンタがまだあるアップグレードを有していないことを検出すると、そのファームウェアアップグレードをプリンタに自動的にダウンロードするように構成される。   Optionally, the memory stick or camera is configured to automatically download the firmware upgrade to the printer when it detects that the printer does not yet have an upgrade.

任意選択で、携帯型不揮発性デジタルメモリ装置は、メモリスティックである。   Optionally, the portable non-volatile digital memory device is a memory stick.

カメラは、ファームウェアアップグレードがすでにメモリ内にプログラムされた状態で販売されている場合がある。或いは、カメラは外部の供給源からファームウェアアップグレードを受信することができる。例えば、次に接続されるときにカメラがプリンタをアップグレードできるように、ファームウェアアップグレードをカメラにダウンロードするために、メモリスティックを使用することができる。   Cameras may be sold with firmware upgrades already programmed into memory. Alternatively, the camera can receive a firmware upgrade from an external source. For example, a memory stick can be used to download a firmware upgrade to the camera so that the camera can upgrade the printer the next time it is connected.

第6の態様では、第1の態様のプロセッサなど、プロセッサのレジスタウィンドウアーキテクチャ内でスーパーバイザモードデータをユーザコードから保護するためのシステムが提供され、このシステムは、スーパーバイザモードからユーザモードに遷移する際、無効ウィンドウマスクの確保されたウィンドウのために設定される無効ウィンドウビットに加えて、少なくとも1つの無効ウィンドウビットをアーキテクチャの無効ウィンドウマスク内に設定するステップを含み、その追加のビットは、スーパーバイザデータウィンドウとユーザデータウィンドウとの間の遷移ウィンドウのために設定される。   In a sixth aspect, a system is provided for protecting supervisor mode data from user code within a register window architecture of a processor, such as the processor of the first aspect, when the system transitions from supervisor mode to user mode. In addition to an invalid window bit set for an invalid window mask reserved window, setting at least one invalid window bit in the invalid window mask of the architecture, the additional bits comprising supervisor data Set for the transition window between the window and the user data window.

無効ウィンドウマスク内の追加の無効ウィンドウビットの位置は、遷移ウィンドウにおけるウィンドウオーバーフロー及びアンダーフローとは無関係に維持される。   The position of the additional invalid window bits within the invalid window mask is maintained independent of window overflow and underflow in the transition window.

別々のスーパーバイザモードスタック及びユーザモードスタックが提供されてよく、別々のスーパーバイザモードスタック及びユーザモードスタックは、スーパーバイザモードだけがアクセス可能なメモリ、及びユーザモードがアクセス可能なメモリ内に、それぞれ別々に格納される。   Separate supervisor mode and user mode stacks may be provided, and the separate supervisor mode and user mode stacks are stored separately in memory accessible only to supervisor mode and in memory accessible to user mode, respectively. Is done.

現在のスタックポインタは、ユーザモードからスーパーバイザモードへ、及びスーパーバイザモードからユーザモードへの遷移が発生するたびに、スーパーバイザスタックとユーザスタックとの間をスイッチされうる。   The current stack pointer can be switched between the supervisor stack and the user stack each time a transition from user mode to supervisor mode and from supervisor mode to user mode occurs.

任意選択で、遷移ウィンドウに関する情報は、遷移ウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際、スーパーバイザスタック内に記録される。   Optionally, information about the transition window is recorded in the supervisor stack upon window overflow and underflow in the transition window.

任意選択で、ウィンドウスタックは、スーパーバイザモードだけがアクセス可能なメモリ内に格納され、遷移ウィンドウに関する情報は、遷移ウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際、ウィンドウスタック内に記録される。   Optionally, the window stack is stored in memory accessible only to supervisor mode, and information about the transition window is recorded in the window stack upon window overflow and underflow in the transition window.

任意選択で、非遷移ウィンドウの情報は、非遷移ウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際、ウィンドウスタック内に記録される。   Optionally, non-transition window information is recorded in the window stack upon window overflow and underflow in non-transition windows.

任意選択で、それぞれのレジスタウィンドウに、ゼロから始まりセーブするたびに単調に増加する一意の数値ラベルが割り当てられる。確保されたウィンドウに割り当てられた現在のラベルのレコードは、確保されたウィンドウのローカルレジスタ内で保持され、そのレコードは、確保されたウィンドウでウィンドウオーバーフロー及びアンダーフローが発生するとアップデートされる。ラベルは現在のウィンドウポインタに基づいて計算されうる。   Optionally, each register window is assigned a unique numeric label that starts at zero and increases monotonically with each save. The record of the current label assigned to the reserved window is held in the local register of the reserved window, and the record is updated when window overflow and underflow occur in the reserved window. The label can be calculated based on the current window pointer.

任意選択で、確保されたウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際、ラベルは少なくともウィンドウスタック内の確保されたウィンドウのスタックポインタのレコードにインデックスを付けるために使用される。   Optionally, on window overflow and underflow in a reserved window, the label is used to index at least the record of the reserved window's stack pointer in the window stack.

任意選択で、ラベルは、それぞれのウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際、ウィンドウスタック内のそれぞれのウィンドウのスタックポインタのレコードにインデックスを付けるために使用される。   Optionally, the label is used to index the stack pointer record of each window in the window stack upon window overflow and underflow in each window.

スーパーバイザコードからユーザコードへ遷移する際、呼出し関数は現在のウィンドウポインタを、遷移ウィンドウの後ろに位置するユーザウィンドウに動かし、少なくとも現在のウィンドウから確保されたウィンドウまでのスーパーバイザコードデータを含むウィンドウ内のレジスタを上書きするためにセーブを発行できる。   When transitioning from supervisor code to user code, the calling function moves the current window pointer to the user window located behind the transition window and contains at least the supervisor code data from the current window to the reserved window. A save can be issued to overwrite the register.

呼出し関数は、現在のウィンドウから確保されたウィンドウまでのすべてのウィンドウ、又はスーパーバイザコードデータを含むプロセッサのすべてのレジスタ内のレジスタを上書きできる。遷移ウィンドウ内のレジスタは、遷移ウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際、上書きされうる。   The calling function can overwrite registers in all windows from the current window to the reserved window, or in all registers of the processor that contain supervisor code data. Registers in the transition window can be overwritten upon window overflow and underflow in the transition window.

ユーザコードからスーパーバイザコードに遷移する場合、ウィンドウアンダーフロートラップルーチンが、現在のウィンドウポインタを遷移ウィンドウより前にあるスーパーバイザウィンドウに動かすために復元を発行できる。   When transitioning from user code to supervisor code, the window underflow trap routine can issue a restore to move the current window pointer to the supervisor window before the transition window.

組込型コンピュータシステムを有するプリンタの透視図である。1 is a perspective view of a printer having an embedded computer system. FIG. 組込型コンピュータシステムの様々な構成要素とプリンタハードウェアとの間の相互関係を示す図である。FIG. 2 illustrates the interrelationship between various components of an embedded computer system and printer hardware. 組込型コンピュータシステムのプロセッサによって実装されたレジスタウィンドウアーキテクチャを示す図である。FIG. 2 illustrates a register window architecture implemented by a processor of an embedded computer system. スーパーバイザモードとユーザモードとの間のモードスイッチを示す図である。It is a figure which shows the mode switch between supervisor mode and user mode. 遷移ウィンドウを使用しているスーパーバイザモードとユーザモードとの間のモードスイッチを示す図である。FIG. 6 illustrates a mode switch between supervisor mode and user mode using a transition window.

以下、本発明の具体的な実施形態を、図面を参照して詳細に説明する。
ユーザモード及びスーパーバイザモードを有する組込型システム
図1は本発明を実施するプリンタ2を示す。メディア供給トレイ3は、印刷エンジン(プリンタケーシング内に隠されている)によって印刷されるように、メディア8を支えて供給する。メディア8の印刷されたシートは、印刷エンジンから送られ、メディア出力トレイ4に集められる。ユーザインターフェース5はLCDタッチスクリーンであり、ユーザがプリンタ2の操作を制御できるようにする。プリンタ2は、プリンタの操作全体を制御する組込型コンピュータシステム(図示せず)を備える。
Hereinafter, specific embodiments of the present invention will be described in detail with reference to the drawings.
Embedded System with User Mode and Supervisor Mode FIG. 1 shows a printer 2 embodying the present invention. The media supply tray 3 supports and supplies the media 8 to be printed by a print engine (hidden in the printer casing). Printed sheets of media 8 are sent from the print engine and collected in the media output tray 4. The user interface 5 is an LCD touch screen that allows the user to control the operation of the printer 2. The printer 2 includes an embedded computer system (not shown) that controls the entire operation of the printer.

図2を参照すると、組込型コンピュータシステム10、並びに組込型コンピュータシステム10とプリンタハードウェア及び他の外部構成要素との相互関係が概略的に示してある。組込型コンピュータシステム10は、ユーザモード及びスーパーバイザモードをサポートするプロセッサ11を備える。プロセッサ11は、必須の印刷ハードウェア13を制御するコード部分12をスーパーバイザモードでのみ実行する。必須の印刷ハードウェア13としては、ノズル作動装置を作動させるための駆動回路、供給機構を駆動するモータなどを含むことができる。中核のRTOS14を含む他のすべてのコードはユーザモードで実行される。   Referring to FIG. 2, the embedded computer system 10 and the interrelationship between the embedded computer system 10 and the printer hardware and other external components are schematically shown. The embedded computer system 10 includes a processor 11 that supports a user mode and a supervisor mode. The processor 11 executes the code portion 12 that controls the essential printing hardware 13 only in the supervisor mode. The essential printing hardware 13 can include a drive circuit for operating the nozzle operating device, a motor for driving the supply mechanism, and the like. All other code, including the core RTOS 14, is executed in user mode.

ユーザモードで実行しているアプリケーション15は、コード部分12を呼び出すトラップを介してプリンタ動作を間接的に制御する。このようにして、プリンタが正確にどのように操作されるかについて、多少の柔軟性をなお許容しながら、コード部分12の保全性が保護される。   The application 15 running in the user mode indirectly controls the printer operation via a trap that calls the code portion 12. In this way, the integrity of the code portion 12 is protected while still allowing some flexibility in how exactly the printer is operated.

コード部分12は、プリンタ内の印刷エンジンQAチップ16a、及び1つ又は複数のインクカートリッジQAチップ16bと通信している。必須の印刷ハードウェア13の何らかの操作の前に、その操作の許可を要求するために、コード部分12がQAチップ16a及び16bと通信する。   The code portion 12 is in communication with a print engine QA chip 16a and one or more ink cartridge QA chips 16b in the printer. Before any operation of the required printing hardware 13, the code portion 12 communicates with the QA chips 16a and 16b to request permission for that operation.

印刷エンジンQAチップ16aは、許可された印刷速度(例えば、1分あたり30ページ)をプログラムされている。この情報はコード部分12に返され、必須の印刷ハードウェア13は許可された印刷速度に従って操作される。   The print engine QA chip 16a is programmed with an allowed printing speed (eg, 30 pages per minute). This information is returned to the code portion 12 and the required printing hardware 13 is operated according to the permitted printing speed.

インクカートリッジQAチップ16bは、インクの残量を含む、インクに関する情報をプログラムされている。例えば、インクカートリッジQAチップ16bがカートリッジ内にインクが残っていないという情報を返すと、コード部分12は必須の印刷ハードウェア13を操作することを許可されず、印刷が中止される。   The ink cartridge QA chip 16b is programmed with information about ink including the remaining amount of ink. For example, if the ink cartridge QA chip 16b returns information that no ink remains in the cartridge, the code portion 12 is not permitted to operate the essential printing hardware 13 and printing is stopped.

コード部分12はスーパーバイザモードでのみ実行されるので、権限のない人がこれらのコード部分を修正することは不可能であり、したがって、必須の印刷ハードウェア13の操作を変更すること、又はQAチップ16a及び16bによって提供されるセキュリティを無効にすることは不可能である。   Since code portions 12 are executed only in supervisor mode, it is impossible for an unauthorized person to modify these code portions, thus changing the operation of essential printing hardware 13 or the QA chip. It is impossible to override the security provided by 16a and 16b.

一方、LCDディスプレイ5などの必須でないハードウェア18を制御するコード部分17は、ユーザモードで実行される。コード部分17は、中核のRTOS14とともに、必須でないハードウェアの操作における柔軟性、及び所望のオペレーティングシステムを選択する際の柔軟性さえも提供するために、いかなる許可特権もなしに修正されうる。   On the other hand, the code portion 17 that controls the non-essential hardware 18 such as the LCD display 5 is executed in the user mode. The code portion 17, along with the core RTOS 14, can be modified without any authorization privileges to provide flexibility in the operation of non-essential hardware and even flexibility in selecting the desired operating system.

組込型システム10を前述の通り配置すると、すべてのプリンタアップグレード及びインク補充がQAチップ16a及び16bを介して確実に制御されうる。印刷エンジンQAチップ16aは、許可されたインターネットダウンロード又はメモリスティックを介して印刷速度アップグレード19を受信できる。同様に、インク補充QAチップ20は、許可されたインク補充の間インクカートリッジQAチップ16bと通信できるので、インクカートリッジQAチップ16bは信頼できる供給源からの補充が行われたことがわかる。許可されたインク補充動作は、特許文献1に詳細に説明されており、その内容を参照により本明細書に組み込む。   When the embedded system 10 is arranged as described above, all printer upgrades and ink refills can be reliably controlled via the QA chips 16a and 16b. The print engine QA chip 16a can receive the print speed upgrade 19 via an authorized Internet download or memory stick. Similarly, the ink refill QA chip 20 can communicate with the ink cartridge QA chip 16b during the permitted ink refill, so that the ink cartridge QA chip 16b has been refilled from a reliable source. The permitted ink replenishment operation is described in detail in Japanese Patent Application Laid-Open No. H10-228707, the contents of which are incorporated herein by reference.

ファームウェアアップグレード
前述の通り、プリンタ2のための組込型システム10内のファームウェアの大半は、許可されたプリンタ操作のセキュリティを脅かすことなく修正又はアップグレードできる。一部のファームウェアアップグレードは、ユーザによって行うことができる。
Firmware Upgrade As noted above, most of the firmware in the embedded system 10 for the printer 2 can be modified or upgraded without compromising the security of authorized printer operation. Some firmware upgrades can be performed by the user.

図2を参照すると、メモリスティック30又はカメラ31によってファームウェアアップグレードを行うことができる。メモリスティック30又はカメラ31は、そのメモリ内にファームウェアアップグレードを含み、組込型システムがアップグレードを必要とすることを検出すると、自動的にアップグレードを組込型システム10にダウンロードする。   Referring to FIG. 2, the firmware upgrade can be performed by the memory stick 30 or the camera 31. The memory stick 30 or camera 31 includes a firmware upgrade in its memory and automatically downloads the upgrade to the embedded system 10 when it detects that the embedded system requires an upgrade.

メモリスティック30の場合、ユーザはメモリスティックをピクトブリッジプリンタのUSBポートに差し込むだけである。   In the case of the memory stick 30, the user simply plugs the memory stick into the USB port of the PictBridge printer.

カメラ31の場合、ユーザは、カメラをピクトブリッジプリンタのUSBポートを介して正常にピクトブリッジプリンタに接続するだけである。アップグレードがメモリ内に備えられた状態でカメラを購入した場合、ユーザはファームウェアアップグレードが行われたことにさえ気付かないかもしれない。或いは、ファームウェアアップグレードをカメラのメモリ内にダウンロードするためにメモリスティック30を使用することができ、カメラ31は、次にプリンタ2に接続されるときに、組込型システム10内のファームウェアをアップグレードするために使用することができる。   In the case of the camera 31, the user simply connects the camera normally to the PictBridge printer via the USB port of the PictBridge printer. If the camera is purchased with the upgrade in memory, the user may not even be aware that a firmware upgrade has occurred. Alternatively, the memory stick 30 can be used to download firmware upgrades into the memory of the camera, and the camera 31 upgrades the firmware in the embedded system 10 the next time it is connected to the printer 2. Can be used for.

ユーザコード及びスーパーバイザコードのための無効ウィンドウマスク構成
すべてのスーパーバイザコードをユーザコードから保護することによって、更なるセキュリティが提供される。これにより、ユーザコードが機密データを読み取り、コンピュータシステムにスーパーバイザモード内の任意のコードを実行させ、プリンタの作動用ハードウェア及びソフトウェアへの不正なアクセス及び修正ができるようになる可能性が排除される。
Invalid window mask configuration for user code and supervisor code Further security is provided by protecting all supervisor code from user code. This eliminates the possibility of user code reading confidential data and allowing the computer system to execute arbitrary code in supervisor mode, allowing unauthorized access to and modification of printer operating hardware and software. The

プロセッサ11はデータを操作するためのレジスタウィンドウアーキテクチャを実装する。例えば、プロセッサはSPARC(商標)アーキテクチャを実装しているLEON CPUである。プロセッサ11内では、ユーザコードは、整数ユニットワーキングレジスタ(「r」レジスタ)、乗除算レジスタ(Yレジスタ)、プログラムカウンタ(PC及びnPC)、及びハードウェアウォッチポイントにアクセス可能である。したがって、これらのレジスタは、スーパーバイザモードとユーザモードとの間のどちらの方向の遷移においても機密データを保持してはいけない。   The processor 11 implements a register window architecture for manipulating data. For example, the processor is a LEON CPU that implements the SPARC ™ architecture. Within processor 11, user code can access integer unit working registers ("r" registers), multiplication and division registers (Y registers), program counters (PC and nPC), and hardware watchpoints. Therefore, these registers must not hold sensitive data in either direction transition between supervisor mode and user mode.

印刷エンジンの「r」レジスタは、8個のグローバル32ビットレジスタ及び各セット内に16個の32ビットレジスタがある8セットのレジスタを有する。レジスタセットは、プロセッサ11がレジスタのうちの24個を見るウィンドウを有するように配置されている。閲覧されている現在のウィンドウは、CWP(Current Window Pointer)などの、そのウィンドウへのポインタによって決定される。上記の数のレジスタ及びレジスタセットは例示的なものに過ぎず、異なる数のレジスタ及びレジスタセットが使用されうることが理解されるべきである。例えば、SPARC(商標)アーキテクチャは、2から32までの数のレジスタセットの設定が可能である。   The print engine's “r” register has 8 global 32-bit registers and 8 sets of registers with 16 32-bit registers in each set. The register set is arranged so that the processor 11 has a window for viewing 24 of the registers. The current window being viewed is determined by a pointer to that window, such as CWP (Current Window Pointer). It should be understood that the above numbers of registers and register sets are exemplary only, and different numbers of registers and register sets may be used. For example, the SPARC ™ architecture can have as many as 2 to 32 register sets.

ウィンドウが8個のみの場合、この深さ以上の関数呼出し及びトラップはレジスタウィンドウにオーバーフローを引き起こし、このオーバーフローは、無効ウィンドウマスク並びにオーバーフロー及びアンダーフロートラップの組合せを使用することによって処理される。例えば、無効ウィンドウマスクは、SPARC(商標)アーキテクチャで使用されるWIM(Windows Invalid Mask)のこともある。オーバーフロー及びアンダーフローハンドラは、無限の数のレジスタウィンドウの錯覚を与えるために使用される。   If there are only 8 windows, function calls and traps beyond this depth will cause the register window to overflow, which is handled by using an invalid window mask and a combination of overflow and underflow traps. For example, the invalid window mask may be WIM (Windows Invalid Mask) used in the SPARC ™ architecture. Overflow and underflow handlers are used to give the illusion of an infinite number of register windows.

従来、無効ウィンドウマスクは、1ウィンドウあたり1ビットを含み、ビットセットを有する新しいウィンドウに移動するための命令が発行されるとオーバーフロー及びアンダーフロートラップが生成され、その新しいウィンドウを無効と指定する。   Traditionally, the invalid window mask contains one bit per window, and overflow and underflow traps are generated when an instruction is issued to move to a new window with a bit set, designating the new window as invalid.

例えば、現在のウィンドウをウィンドウNからウィンドウ(N−1)に移動するためのセーブ命令が発行されると、プロセッサはまず無効ウィンドウマスクのビット(N−1)を検査する。そのビットが設定されると、そのウィンドウは無効であり、したがってプロセッサはウィンドウを変更せずウィンドウオーバーフロートラップを生成する。同様に、現在のウィンドウをウィンドウNからウィンドウ(N+1)に移動するための復元命令が発行されると、プロセッサはまず無効ウィンドウマスクのビット(N+1)を検査する。そのビットが設定されると、そのウィンドウは無効であり、したがってプロセッサはウィンドウを変更せずウィンドウアンダーフロートラップを生成する。   For example, when a save instruction is issued to move the current window from window N to window (N-1), the processor first checks the invalid window mask bit (N-1). If the bit is set, the window is invalid, so the processor does not change the window and generates a window overflow trap. Similarly, when a restore instruction is issued to move the current window from window N to window (N + 1), the processor first checks the invalid window mask bit (N + 1). If the bit is set, the window is invalid, so the processor does not change the window and generates a window underflow trap.

割り込みなどのトラップが発生するとそのマスクは無視されるため、構わずウィンドウを回転させ、トラップが発生する際、使用したレジスタが確実に上書きされないようにするために1つのウィンドウを無効として確保するのが通常である。したがって、従来、無効ウィンドウマスクは利用可能なウィンドウ、即ち本実施形態では7個、の終端を示す1ビットセットの値を有し、1つのウィンドウをトラップのために確保する。   When a trap such as an interrupt occurs, the mask is ignored. Therefore, the window is rotated, and when a trap occurs, one window is reserved as invalid to ensure that the used register is not overwritten. Is normal. Thus, conventionally, the invalid window mask has a value of 1 bit set indicating the end of available windows, ie, seven in this embodiment, and reserves one window for trapping.

例えば、現在のウィンドウを確保されたウィンドウに回転させるセーブ命令の結果、オーバーフロートラップが取られると、トラップハンドラが最も古いウィンドウをメモリに保存し、無効マスクをセーブされたウィンドウの現在の地点に回転させ、それにより以前確保されたウィンドウを使用のために解放する。例えば、現在のウィンドウを確保されたウィンドウに回転させる復元命令の結果としてアンダーフロートラップが取られると、その逆が発生する。   For example, if an overflow trap is taken as a result of a save instruction that rotates the current window to a reserved window, the trap handler saves the oldest window in memory and rotates the invalid mask to the current point of the saved window. Thereby freeing a previously reserved window for use. For example, if an underflow trap is taken as a result of a restore instruction that rotates the current window to a reserved window, the reverse occurs.

それぞれのレジスタセットは16個のレジスタを有し、8個の「内部」レジスタと8個の「ローカル」レジスタを備える。しかし、ウィンドウは24個のレジスタを見るので、残りのレジスタは8個の「外部」レジスタである。したがって、ウィンドウはそのセットを通じて循環するときに、プロセッサ11は近傍のセットからいくつかのレジスタを見る。これは図3に示してあり、その図では「外部」レジスタは次に低いウィンドウの「内部」レジスタに対応する。したがって、たとえオーバーフロー及びアンダーフローの際でも、所与のウィンドウは次に高いウィンドウの「外部」レジスタ、及び次に低いウィンドウの「内部」レジスタを修正できる。   Each register set has 16 registers, with 8 “internal” registers and 8 “local” registers. However, since the window sees 24 registers, the remaining registers are 8 "external" registers. Thus, as the window cycles through the set, processor 11 sees some registers from the neighboring set. This is illustrated in FIG. 3, where the “external” register corresponds to the next lower window “internal” register. Thus, a given window can modify the “external” register of the next higher window and the “inner” register of the next lower window, even on overflow and underflow.

したがって、適切な処置を講じない限り、ユーザモードウィンドウは、スーパーバイザモードウィンドウを含む近傍のウィンドウのデータの一部を読み取り修正することができる。ユーザコードがレジスタウィンドウ内を通じて循環し、値を読み取り修正することさえできる可能性がある。これは図4に示してあり、この図ではスーパーバイザモードからユーザモードへのスイッチが示してある。図に示すように、スーパーバイザコードはユーザコードを呼び出す前にウィンドウ7及び6を使用していたが、後ろに移動してスーパーバイザデータを読み取り/修正するためにユーザコードが複数の命令を発行することを止めるものが何もない。   Thus, unless appropriate action is taken, the user mode window can read and modify some of the data in nearby windows including the supervisor mode window. User code may cycle through the register window and even read and modify values. This is illustrated in FIG. 4, where the switch from supervisor mode to user mode is shown. As shown, the supervisor code used windows 7 and 6 before calling the user code, but the user code issues multiple instructions to move back and read / modify supervisor data There is nothing to stop.

場合によっては、これは、スーパーバイザコードのレジスタをユーザがアクセス可能なメモリ内に格納する場合、ユーザコードはそれらの値を容易に上書きしてレジスタが復元される際スーパーバイザコードが見る値を調整し、又は、たとえスーパーバイザコードのレジスタがスーパーバイザだけがアクセス可能なメモリ内に格納されても、ユーザコードは「外部」レジスタの値を修正し、場合によってはコードをだまして不適切な位置からレジスタを復元させる、などの例につながる場合がある。   In some cases, this means that if the supervisor code registers are stored in user-accessible memory, the user code can easily overwrite those values to adjust the values that the supervisor code sees when the registers are restored. Or, even if the supervisor code register is stored in memory accessible only by the supervisor, the user code modifies the value of the “external” register, and in some cases tricks the code into misregistering the register It may lead to an example such as restoring.

本実施形態では、スーパーバイザコード、ひいては機密データへのこれらの潜在的なセキュリティ脅威が、少なくとも1つの追加ビットを設定するための無効ウィンドウマスクを構成するプロセッサ11によって実装されたシステムを提供することによって最小限になる。これは、追加のオーバーフロー及びアンダーフロートラップを、即ちスーパーバイザモードとユーザモードとの間の遷移において生成させる、従来の確保されたウィンドウの後ろの無効ウィンドウを示す。   In this embodiment, by providing a system in which these potential security threats to supervisor code, and thus sensitive data, are implemented by a processor 11 that configures an invalid window mask for setting at least one additional bit. Minimize. This shows an invalid window behind a conventional reserved window that causes additional overflow and underflow traps to be generated at the transition between supervisor mode and user mode.

これらの追加トラップを容易にするために、スーパーバイザコードデータ及びユーザコードデータのために別々のスタックが使用される。遷移が発生すると、現在のスタックポインタ、例えば%o6は、スーパーバイザスタックとユーザスタックとの間でスイッチされる。スーパーバイザスタックはスーパーバイザモードだけがアクセス可能なメモリ内に格納され、ユーザスタックはユーザモードがアクセス可能な、又はユーザモードだけがアクセス可能なメモリ内に格納される。   To facilitate these additional traps, separate stacks are used for supervisor code data and user code data. When a transition occurs, the current stack pointer, eg,% o6, is switched between the supervisor stack and the user stack. The supervisor stack is stored in a memory accessible only by the supervisor mode, and the user stack is stored in a memory accessible by the user mode or accessible only by the user mode.

追加ビットの設定は、スーパーバイザウィンドウとユーザウィンドウとの間に遷移ウィンドウを提供し、スーパーバイザレジスタ内に格納された機密データがユーザコードによってアクセス可能でないことを確実にする。これは図5に示してあり、この図では、ユーザコードを呼び出す前にスーパーバイザコードが追加の2つのウィンドウ分下に移動し、中間ウィンドウを無効ウィンドウマスク内で無効と示した。このウィンドウは、ユーザコードがウィンドウを通じて後ろに移動するために複数の命令を発行する場合、ウィンドウ5で無効ウィンドウにヒットするとトラップを生成するので、遷移における障壁を示す。   Setting the extra bit provides a transition window between the supervisor window and the user window to ensure that sensitive data stored in the supervisor register is not accessible by the user code. This is illustrated in FIG. 5, in which the supervisor code has moved down two additional windows before calling the user code, indicating the intermediate window as invalid in the invalid window mask. This window presents a barrier in transition, because if the user code issues multiple instructions to move backward through the window, it will generate a trap if it hits an invalid window in window 5.

遷移ウィンドウ(複数の場合がある)の位置は、オーバーフロー及びアンダーフローが発生するときに維持される。これは、トラップが発生したときに遷移ウィンドウに関する情報をスーパーバイザスタック内に格納することによって、又はこの同じ情報を、スーパーバイザモードだけがアクセス可能なメモリ内に維持される別々のウィンドウスタック内に格納することによって行われる。このようにして、遷移ウィンドウに関する情報は無効ウィンドウマスク内、又は遷移ウィンドウ自体のレジスタ内には格納されない。したがって、この情報はユーザコードによってアクセスされることはできず、それにより、遷移ウィンドウの「外部」又は「内部」レジスタ内に格納されたスーパーバイザコードデータを保護する。   The position of the transition window (s) is maintained when overflow and underflow occur. This can be done by storing information about the transition window in the supervisor stack when the trap occurs, or this same information in a separate window stack that is maintained in memory accessible only to supervisor mode. Is done by. In this way, information about the transition window is not stored in the invalid window mask or in the register of the transition window itself. Therefore, this information cannot be accessed by user code, thereby protecting the supervisor code data stored in the “external” or “internal” registers of the transition window.

スーパーバイザモードが入力されるたびにオーバーフローが発生する可能性が、スーパーバイザスタックのオーバーフローを防ぐために検査され、それにより他のスーパーバイザコードデータの上書きを防ぐ。このようなオーバーフローは、同じトラップを発行するトラップによって呼び出される関数をユーザがインストールする結果として発生する場合があるので、場合によっては大きなネスティング、又は、実行するためのチックの期間よりも長い時間のかかる、タイマーチックで呼び出される関数を引き起こし、それにより継続的な割り込みのネスティングを引き起こす。   The possibility of overflow every time the supervisor mode is entered is checked to prevent supervisor stack overflow, thereby preventing overwriting of other supervisor code data. Such an overflow may occur as a result of the user installing a function that is called by a trap that issues the same trap, so in some cases a large nesting or longer time than a tick period to execute It causes such a function to be called on a timer tick, thereby causing continuous interrupt nesting.

例えば、呼出し関数及びユーザコードがスーパーバイザコードを呼び出すためにトラップを発行するため、確保されたウィンドウがスーパーバイザウィンドウの最上位で回転される場合、スーパーバイザコードデータの更なる保護が必要である。新しい確保されたウィンドウ内のすべての「内部」及び「ローカル」レジスタを、そのレジスタを以前の状態のためにメモリに保存後、トラップが0(例えば、%g0)で上書きするように構成することよって、及び、トラップがすべての使用済みレジスタウィンドウを後の状態のために返す前に上書きするように構成することによって、この保護が達成される。   For example, if the reserved window is rotated at the top of the supervisor window because the calling function and user code issue a trap to call the supervisor code, further protection of the supervisor code data is required. Configure all “internal” and “local” registers in the new reserved window so that the trap will overwrite with 0 (eg,% g0) after saving the registers to memory for the previous state Thus, this protection is achieved by configuring the trap to overwrite all used register windows before returning for later state.

すべての使用済みレジスタウィンドウを上書きすることに関して、トラップから返されたコードの共通のピースが使用されてよく、そこでコードが、現在のウィンドウから(及び、現在のウィンドウを含む)確保されたウィンドウ(すでに上書きされた)まで(しかし、確保されたウィンドウを含まない)、すべてのレジスタウィンドウを上書きする。或いは、使用されるとわかっている、又はスーパーバイザコードデータを含むとわかっているウィンドウの数を上書きするコードが使用されうる。   With respect to overwriting all used register windows, a common piece of code returned from the trap may be used, where the code is reserved from the current window (and includes the current window) ( Overwrite all register windows (but do not include reserved windows) until already overwritten). Alternatively, code can be used that overrides the number of windows known to be used or known to contain supervisor code data.

ユーザコードがスーパーバイザモードをトラップ経由で呼び出すので、関連付けられているトラップルーチンは、トラップからの戻りアドレスを記憶するように構成される。SPARC(商標)アーキテクチャが採用される場合、トラップルーチンは、以前のプロセッサ状態レジスタ(processor state register:PSR)を記憶することもできる。これは、トラップルーチンのために割り当てられた新しいレジスタウィンドウの「ローカル」レジスタ内で行われる。このため、隣接する遷移ウィンドウが2つあるということは決してなく、即ち、それぞれの遷移ウィンドウは少なくとも1つのスーパーバイザウィンドウ、即ち、トラップからの戻りアドレスを保持するために使用されるウィンドウによって先行される。   Since the user code invokes supervisor mode via a trap, the associated trap routine is configured to store the return address from the trap. If the SPARC ™ architecture is employed, the trap routine can also store a previous processor state register (PSR). This is done in the “local” register of the new register window allocated for the trap routine. For this reason, there are never two adjacent transition windows, ie each transition window is preceded by at least one supervisor window, ie the window used to hold the return address from the trap. .

ハードウェア又はファームウェア内のどちらかで実行される、オーバーフロー及び遷移ウィンドウのスタックを維持する例示的なシステムを、SPARC(商標)アーキテクチャを採用するプロセッサ11に関連して説明する(同様のシステムがアンダーフローにも適用可能である)。   An exemplary system that maintains a stack of overflow and transition windows, running either in hardware or firmware, will be described in connection with a processor 11 employing the SPARC ™ architecture (similar systems under It is also applicable to flows).

1.それぞれのスレッドが、遷移ウィンドウについての情報を格納するための関連付けられたスタックを有する。   1. Each thread has an associated stack for storing information about the transition window.

2.スーパーバイザコードは、ユーザコードを呼び出したいときはいつでも、関数(callUserFunction)への呼出し命令を発行し、以下の引数をとる:
(i)呼び出される関数のアドレスは、%o0内:
(ii)現在のユーザ(スーパーバイザではない)スタックポインタは%o1内で、呼出し元は正確なユーザスタックポインタを渡すよう準備しなければならない:
・ ここで割り込みルーチンがユーザ関数を呼び出し、トラップルーチンは、現在のスレッドコンテキストから読み取るユーザスタックポインタを使用するか、又は割り込みのための、別個の専用ユーザスタックが使用される。後者の場合、共通のスタックを共用する場合スレッド間のコンテキストスイッチは不可能なので、コンテキストスイッチ呼出しはこれらの呼出しの間は使用禁止である;
・ ここで非割り込みトラップルーチンがユーザ関数を呼び出し、そのトラップルーチンが、現在のスレッドコンテキストから読み出したユーザスタックポインタを使用する。
2. Whenever the supervisor code wants to call user code, it issues a call instruction to the function (callUserFunction) and takes the following arguments:
(I) The address of the function to be called is in% o0:
(Ii) The current user (not supervisor) stack pointer is in% o1, and the caller must be prepared to pass the correct user stack pointer:
The interrupt routine now calls the user function and the trap routine uses a user stack pointer that reads from the current thread context, or a separate dedicated user stack for interrupts is used. In the latter case, context switch calls are disabled during these calls because context switching between threads is not possible when sharing a common stack;
A non-interrupt trap routine now calls a user function, which uses the user stack pointer read from the current thread context.

(iii)%o2から%o5で、最大4つのパラメータがユーザ関数に渡される。%o6は現在のフレームポインタを(スーパーバイザスタック上に)含み、現在のフレームポインタは、オーバーフローが発生した場合以前のスーパーバイザウィンドウが保存される場所なので、維持されなければならない。したがって、callUserFunctionは以下のように構成される:
・ セーブを発行し、CWPを遷移ウィンドウに動かす。これは関数の引数が、遷移ウィンドウの%i7が、callUserFunctionを呼び出した、呼出し命令のアドレスを含む(呼出し命令がそこに置いたため)、「内部」レジスタ内にあることも意味する;
・ 引数を含む「内部」レジスタを、呼び出される関数及びユーザスタックポインタを含む「外部」レジスタにコピーする;
・ 現在のウィンドウ(遷移ウィンドウになっている)を、WIM内で無効としてマークする;
・ %yレジスタ及びグローバルレジスタを、この遷移ウィンドウ内の「ローカル」及び「内部」レジスタ内に保存する;
・ 他のセーブ、例えば「セーブ%i1、−104、%o6」を発行し、遷移ウィンドウの後ろの現在のウィンドウを動かし、前述のコピーされた引数は現在「内部」レジスタにあることを意味する;
・ 現在のウィンドウから(すでに上書きされた)確保されたウィンドウまで(しかし確保されたウィンドウは含まない)すべてのウィンドウを上書きする。しかし、現在のウィンドウを上書きする際、引数のために使用される「内部」レジスタは上書きされない;
・ いかなる古いスーパーバイザデータも保護する、%yレジスタ及びグローバルレジスタを上書きする;
・ ユーザモードにスイッチする;
・ 要求されたユーザ関数の引数を%i2〜%i5から%o0〜%o3にコピーする;
・ ユーザ関数を呼び出す;
・ ユーザ関数が戻った後、ユーザ関数からの戻り値であり、現在は遷移ウィンドウの%o0内にある、現在のウィンドウの%o0を%i0にコピーする;
・ %o0をコピーしたので、復元を発行し、これは遷移ウィンドウのためのWIMの無効ビットセットにヒットすることになり、アンダーフロートラップルーチンが引き継ぐことを意味する。復元命令後のコードは、その復元がトラップを引き起こしたはずなので、実行されるべきではない。そのコードが実行されるべき場合、ユーザコードはすべての保存命令が復元命令と一致しないことを意味する。これは、バグ又は悪質な攻撃のためである。したがって、プロセッサ11はリセット又はコードが復元命令まで再び分岐されるまで停止され、予期されるトラップに出会うまでレジスタウィンドウを連続的に展開する。
(Iii) From% o2 to% o5, up to four parameters are passed to the user function. % O6 contains the current frame pointer (on the supervisor stack), and the current frame pointer must be maintained because it is where the previous supervisor window is saved if an overflow occurs. Therefore, callUserFunction is constructed as follows:
Issue a save and move CWP to the transition window. This also means that the function argument% i7 of the transition window is in the "internal" register, containing the address of the calling instruction that called the callUserFunction (because the calling instruction placed there);
Copy the “internal” register containing the arguments to the “external” register containing the function to be called and the user stack pointer;
Mark the current window (which is a transition window) as invalid in WIM;
Save the% y and global registers in the “local” and “internal” registers in this transition window;
Issue another save, eg "Save% i1, -104,% o6", move the current window behind the transition window, meaning that the above copied argument is now in the "internal"register;
Overwrite all windows from the current window to a reserved window (already overwritten) (but not including a reserved window). However, when overwriting the current window, the “internal” registers used for the arguments are not overwritten;
Protect any old supervisor data, overwrite% y registers and global registers;
Switch to user mode;
Copy the requested user function arguments from% i2 to% i5 to% o0 to% o3;
Call user functions;
After the user function returns, copy the current window's% o0 to% i0, which is the return value from the user function and is currently in% o0 of the transition window;
Since we copied% o0, we issue a restore, which means that we hit the invalid bit set in WIM for the transition window, which means that the underflow trap routine takes over. The code after the restore instruction should not be executed because the restore should have caused a trap. If the code is to be executed, the user code means that all save instructions do not match the restore instruction. This is due to bugs or malicious attacks. Thus, the processor 11 stops until the reset or code is branched again to the restore instruction and continuously expands the register window until an expected trap is encountered.

3.ウィンドウオーバーフロートラップルーチンが、メモリに保存されるべきウィンドウがWIM内ですでに無効として示されているかどうかを決定する:
・ 無効と示されていない場合、それはノーマルウィンドウであることを意味する。したがって、トラップルーチンはウィンドウのレジスタをノーマルとしてメモリに保存し、スタックオーバーフローの検査後(前述の通り)、「ノーマル」レコードをウィンドウスタックに積む。このレコードは、これが「ノーマル」レコードであることを示す単一のフラッグであることだけが必要である:
・ 無効と示されている場合、それは遷移ウィンドウであることを意味する。この場合、トラップルーチンはどのレジスタもメモリに保存する必要はない。しかし、トラップルーチンが「遷移」レコードをウィンドウスタックに積む。このレコードは以下のものを含まなければならない:
・ これが「遷移」レコードであることを示すフラッグ、及び;
・ 遷移ウィンドウのフレームポインタ、即ち、%i6、遷移ウィンドウの%i7から読み取られるcallUserFunctionからの戻りアドレス、及び遷移ウィンドウ内に保存された%yレジスタとグローバルレジスタの値。%i6、%i7、%y、及びグローバルレジスタは、遷移ウィンドウが保存された後必ずしもその遷移ウィンドウ内に維持されないので、ウィンドウスタック上に保存されなければならない。これらの保存を行った後、遷移ウィンドウのレジスタは上書きされなければならない(前述の通り)。
3. The window overflow trap routine determines whether the window to be saved in memory is already indicated as invalid in the WIM:
• If it is not marked invalid, it means a normal window. Therefore, the trap routine saves the window register as normal in memory and, after checking for stack overflow (as described above), places a "normal" record on the window stack. This record need only be a single flag indicating that this is a "normal" record:
If it is shown as invalid, it means a transition window. In this case, the trap routine need not save any registers in memory. However, the trap routine puts a “transition” record on the window stack. This record must contain:
A flag indicating that this is a "transition"record; and
Transition window frame pointer, ie,% i6, the return address from callUserFunction read from% i7 of the transition window, and the values of the% y and global registers stored in the transition window. The% i6,% i7,% y, and global registers must be saved on the window stack because they are not necessarily maintained in the transition window after it is saved. After making these saves, the transition window registers must be overwritten (as described above).

4.ウィンドウアンダーフロートラップルーチンは以下のことを行う:
・ 複数のビットが設定されているか確認するためにWIMを調べる。複数のビットが設定されている場合、そのウィンドウがちょうど出会ったのは遷移ウィンドウであることを意味する。これは、確保されたウィンドウは常に、下方向において最初の無効ウィンドウだからであり、したがって、上方向において異なる無効ウィンドウに出会うことはそのウィンドウは遷移ウィンドウであることだけを意味しうる。この場合、トラップルーチンは以下のことを行うように構成される:
・ 遷移ウィンドウをWIM内で有効と示す;
・ 遷移ウィンドウの%o0を、ユーザ関数からの戻り値である%i0にコピーする;
・ 遷移ウィンドウのローカルレジスタからの%yとグローバルレジスタを復元する;
・ 現在のウィンドウポインタを、遷移ウィンドウに先立ってウィンドウに動かす。これが他の無効ウィンドウにヒットする場合、前述の通り、連続する遷移ウィンドウは不可能なので、そのウィンドウは確保されたウィンドウでなければならない。この場合、その無効ウィンドウはメモリから復元され、関連付けられているノーマルレコードがウィンドウスタックから取り出される;
・ 最初にcallUserFunctionを呼び出したスーパーバイザコードにジャンプし、そのアドレスは現在のウィンドウの%o7(この場合、遷移ウィンドウはオーバーフローによって上書きされていないので、即ち、遷移ウィンドウの%i7)を介して入手できる。
4). The window underflow trap routine does the following:
Check the WIM to see if multiple bits are set. If multiple bits are set, it means that the window just met is a transition window. This is because the reserved window is always the first invalid window in the downward direction, so encountering a different invalid window in the upward direction can only mean that the window is a transition window. In this case, the trap routine is configured to do the following:
Indicate the transition window as valid in WIM;
Copy% o0 of the transition window to% i0, which is the return value from the user function;
Restore the% y and global registers from the local register in the transition window;
• Move the current window pointer to the window prior to the transition window. If this hits another invalid window, the window must be a reserved window, as described above, since a continuous transition window is not possible. In this case, the invalid window is restored from memory and the associated normal record is taken from the window stack;
Jump to the supervisor code that originally called callUserFunction and its address is available via% o7 of the current window (in this case, the transition window is not overwritten by overflow, ie% i7 of the transition window) .

・ WIMが1つのビットセットだけを有する場合、行き当たったのは確保されたウィンドウであり、トラップはウィンドウスタックからレコードを取り出さなければならない。そのレコードが、復元されるべきウィンドウが遷移ウィンドウかどうかを示すはずである。遷移ウィンドウではない場合、トラップルーチンは単にそのウィンドウをメモリから復元し、CWPを調整し、確保されたウィンドウビットをWIM内で適切にシャッフルする。遷移ウィンドウの場合、トラップルーチンは以下のことを行うように構成される:
・ 遷移ウィンドウの%i6及び%i7、並びにスタックから取り出した遷移レコードからの%y及びグローバルレジスタを復元する;
・ 遷移ウィンドウの%o0を、ユーザ関数からの戻り値である%i0にコピーする;
・ 現在のウィンドウポインタを、遷移ウィンドウに先立ってウィンドウに動かし、確保されたウィンドウビットをWIM内で適切にシャッフルする。これによりCWPを遷移ウィンドウより前にスーパーバイザウィンドウに動かし、上記で「内部」レジスタに書かれた値が現在「外部」レジスタにあることを意味する。このウィンドウは、この時点ではまだメモリ内にあるはずである点に注意されたい;このウィンドウは復元される必要がある;
・ 保存されたスーパーバイザウィンドウに対応する「ノーマル」レコードである、次のレコードをウィンドウスタックから取り出す;
・ 「内部」及び「ローカル」レジスタを復元する、保存されたスーパーバイザウィンドウを復元する。「外部」レジスタ内の値(上からの戻り値など)は上書きされない;
・ 最初にcallUserFunctionを呼び出したスーパーバイザコードにジャンプし、そのアドレスは復元されたスーパーバイザウィンドウの%o7を介して入手できる。
If the WIM has only one bit set, it is the reserved window that has been hit and the trap must retrieve the record from the window stack. The record should indicate whether the window to be restored is a transition window. If it is not a transition window, the trap routine simply restores the window from memory, adjusts the CWP, and shuffles the reserved window bits appropriately in the WIM. For transition windows, the trap routine is configured to do the following:
Restore% i6 and% i7 of the transition window, and% y and global registers from the transition record taken from the stack;
Copy% o0 of the transition window to% i0, which is the return value from the user function;
Move the current window pointer to the window prior to the transition window and shuffle the reserved window bits appropriately in the WIM. This moves the CWP to the supervisor window before the transition window, meaning that the value written in the “internal” register above is now in the “external” register. Note that this window should still be in memory at this point; this window needs to be restored;
Retrieve the next record from the window stack, which is a “normal” record corresponding to the saved supervisor window;
Restore the saved supervisor window, restoring the “internal” and “local” registers. Values in the "external" register (such as the return value from above) are not overwritten;
Jump to the supervisor code that originally called the callUserFunction and its address is available via% o7 of the restored supervisor window.

上記の例では、ウィンドウスタックが、格納されているウィンドウのタイプ、即ち、遷移ウィンドウのための「遷移」レコード及び非遷移ウィンドウのための「ノーマル」レコードに関連するフラッグを記録するために使用される。このようにして、遷移ウィンドウの位置がオーバーフロー及びアンダーフローを通じて維持され、スーパーバイザモードとユーザモードとの間の遷移の結果、機密データがユーザコードにとってアクセス可能になるということはない。これは、トラップから返す前にすべてのレジスタウィンドウを上書きすることによって更に確実にされる。   In the example above, the window stack is used to record the flags associated with the type of window being stored, namely the “transition” record for transition windows and the “normal” record for non-transition windows. The In this way, the position of the transition window is maintained through overflow and underflow, and no confidential data is accessible to the user code as a result of the transition between supervisor mode and user mode. This is further ensured by overwriting all register windows before returning from the trap.

或いは、又は更に、それぞれの使用済みレジスタウィンドウがラベルを付けられ、対応する復元のために使用されるために、%o6値がレジスタオーバーフロー上に格納される。このようにして、オーバーフロー及びアンダーフローが発生すると、%o6値を検査及び確認して、レジスタウィンドウがユーザモードに属しているか、又はスーパーバイザモードに属しているかがわかる。   Alternatively or additionally, the% o6 value is stored on the register overflow so that each used register window is labeled and used for the corresponding restoration. In this way, when overflow and underflow occur, the% o6 value is inspected and confirmed to determine whether the register window belongs to user mode or supervisor mode.

例えば、ラベルは、実行のスレッドのための可能性のあるあらゆるレジスタウィンドウ用の一意の数値ラベルとして割り当てられ、ゼロから始まりセーブ及び/又は関数ごとに単調に増加する。ラベルは、オーバーフロー及びアンダーフローが発生するときにラベルの場所のレコードを付けることによって、前述のフラッグレコードと同様に使用される。   For example, the label is assigned as a unique numeric label for every possible register window for the thread of execution, starting from zero and increasing monotonically with each save and / or function. Labels are used in the same way as the flag records described above by attaching a label location record when overflow and underflow occur.

即ち、確保されたウィンドウに割り当てられた現在のラベル、及び確保されたウィンドウのウィンドウ番号のレコードを付けることができる。これは、オーバーフロー及びアンダーフロールーチンが確保されたウィンドウをシフトするたびにアップデートされ、オーバーフローはラベルを増加させ、アンダーフローはラベルを減少させる。   That is, a record of the current label assigned to the reserved window and the window number of the reserved window can be attached. This is updated each time the overflow and underflow routines shift the reserved window, overflow increases the label and underflow decreases the label.

例えば、スレッド初期設定時に確保されたウィンドウのラベルが8に設定され、ウィンドウ番号が0に設定される。このレコードは、何らかのスレッド特有のスーパーバイザRAM内に保持されるか、又は確保されたウィンドウ(ユーザコードはアクセスできない)の「ローカル」レジスタ内に保留されうる。この場合、アンダーフロー及びオーバーフロートラップが、確保されたウィンドウをシフトするにつれて、値をシフトする。次いで、現在のウィンドウのラベル(L)は、L=確保されたウィンドウラベル−((CWP−確保されたウィンドウ番号);(N−1)とビット単位でAND演算、Nはレジスタウィンドウの番号)として計算されうる。   For example, the window label secured at the time of thread initialization is set to 8, and the window number is set to 0. This record can be kept in some thread-specific supervisor RAM, or it can be held in the “local” register of a reserved window (user code is not accessible). In this case, underflow and overflow traps shift values as they shift the reserved window. Next, the label (L) of the current window is L = reserved window label − ((CWP−reserved window number); (N−1) and the bitwise AND operation, N is the register window number) Can be calculated as

ラベルは、オーバーフロー及びアンダーフローイベント時にそれぞれのレジスタウィンドウのための追加の状態にアクセスするためにも使用されうる。追加の状態は、保存されたスタックポインタ、例えば%o6を、ウィンドウ及びウィンドウのモードのために含む。モードはウィンドウがスーパーバイザモードで実行しているかどうか識別し、更にウィンドウが割り込み及びモード変化で実行しているかどうか識別できる。前述のフラッグレコード同様、これによりレジスタウィンドウがユーザモード又はスーパーバイザモードのどちらに属しているかに関するレコードが提供される。この場合、現在のウィンドウのためのラベルは、L=保存すべき次のラベル+((CWP+保存すべき次のラベル)N−1;(N−1)とビット単位でAND演算、Nはレジスタウィンドウの番号)として計算することができ、ここでは、「保存すべき次のラベル」変数は、次のレジスタウィンドウがオーバーフローするためのラベルを含み、オーバーフロー及びアンダーフローの順序正しい処理を補助する。 Labels can also be used to access additional states for each register window during overflow and underflow events. Additional states include a saved stack pointer, eg,% o6, for windows and window modes. The mode can identify whether the window is running in supervisor mode, and can further identify whether the window is running with interrupts and mode changes. Like the flag record described above, this provides a record as to whether the register window belongs to user mode or supervisor mode. In this case, the label for the current window is L = next label to be saved + ((CWP + next label to be saved) N−1 ; (N−1) and bitwise AND operation, N is a register Where the "next label to save" variable contains a label for the next register window to overflow, and assists in the orderly processing of overflow and underflow.

追加の状態の情報は、オーバーフロー及びアンダーフローがラベルレコードの一部として発生するときに、ウィンドウスタック内のスタックポインタ及びモードのレコードにインデックスを付けることによってアクセスされる。これは、前述の通り、確保されたウィンドウのためだけに、又はすべてのレジスタウィンドウのために行われうる。このようにして、ユーザモードとスーパーバイザモードとの間の遷移を越える復元が識別され、例えば前述の方法でユーザモード内に残るものを復元するのとは異なる方法で処理されうる。したがって、スーパーバイザモードの機密データをユーザコードのアクセスから保護する。   Additional state information is accessed by indexing the stack pointer and mode records in the window stack when overflow and underflow occur as part of the label record. This can be done only for reserved windows or for all register windows, as described above. In this way, restoration beyond the transition between user mode and supervisor mode is identified and can be handled in a different way than restoring what remains in the user mode, for example in the manner described above. Therefore, the supervisor mode confidential data is protected from user code access.

当然、本発明は単に例として説明されており、添付の特許請求の範囲によって定義される本発明の範囲内で詳細の修正がされてよいことが理解されるであろう。   Of course, it will be understood that the invention has been described by way of example only and modifications of detail may be made within the scope of the invention as defined by the appended claims.

Claims (20)

プロセッサのレジスタウィンドウアーキテクチャ内でスーパーバイザモードデータをユーザコードから保護するためのシステムであって、
スーパーバイザモードからユーザモードに遷移する際、無効ウィンドウマスクの確保されたウィンドウのために設定される無効ウィンドウビットに加えて、少なくとも1つの無効ウィンドウビットを前記アーキテクチャの前記無効ウィンドウマスク内に追加設定することを特徴とし、
前記追加設定されるビットは、スーパーバイザデータウィンドウとユーザデータウィンドウとの間の遷移ウィンドウのために設定される、システム。
A system for protecting supervisor mode data from user code within a register window architecture of a processor, comprising:
When transitioning from supervisor mode to user mode, at least one invalid window bit is additionally set in the invalid window mask of the architecture in addition to the invalid window bit set for a window with an invalid window mask reserved. It is characterized by
The additionally set bit is set for a transition window between a supervisor data window and a user data window.
前記プロセッサの前記レジスタウィンドウアーキテクチャがSPARC(商標)レジスタウィンドウアーキテクチャである、請求項1に記載のシステム。   The system of claim 1, wherein the register window architecture of the processor is a SPARC ™ register window architecture. 前記プロセッサがプリンタのための印刷エンジン内に組み込まれている、請求項1に記載のシステム。   The system of claim 1, wherein the processor is incorporated in a print engine for a printer. 前記無効ウィンドウマスク内の追加の無効ウィンドウビットの位置が、前記遷移ウィンドウにおけるウィンドウオーバーフロー及びアンダーフローとは独立して維持されている、請求項1に記載のシステム。   The system of claim 1, wherein the position of additional invalid window bits in the invalid window mask is maintained independent of window overflow and underflow in the transition window. 前記システムは、さらに、スーパーバイザモードスタックとユーザモードスタックとを別々に備える、請求項1に記載のシステム。   The system of claim 1, further comprising a supervisor mode stack and a user mode stack separately. 前記スーパーバイザモードスタックは、スーパーバイザモードだけがアクセス可能なメモリ内に格納され、前記ユーザモードスタックは、ユーザモードがアクセス可能なメモリ内に格納される、請求項5に記載のシステム。   6. The system of claim 5, wherein the supervisor mode stack is stored in memory accessible only by supervisor mode, and the user mode stack is stored in memory accessible by user mode. ユーザモードからスーパーバイザモードへの遷移が発生するたびに、現在のスタックポインタがスーパーバイザスタックにスイッチされ、
スーパーバイザモードからユーザモードへの遷移が発生するたびに、前記現在のスタックポインタがユーザスタックにスイッチされる、
請求項6に記載のシステム。
Each time a transition from user mode to supervisor mode occurs, the current stack pointer is switched to the supervisor stack,
Each time a transition from supervisor mode to user mode occurs, the current stack pointer is switched to the user stack.
The system according to claim 6.
前記遷移ウィンドウに関する情報が、前記遷移ウィンドウでのウィンドウオーバーフロー及びアンダーフローの際、前記スーパーバイザスタック内に記録される、請求項6に記載のシステム。   The system of claim 6, wherein information about the transition window is recorded in the supervisor stack upon window overflow and underflow in the transition window. 前記システムは、さらに、前記スーパーバイザモードだけがアクセス可能なメモリ内に格納されたウィンドウスタックを備え、
前記遷移ウィンドウに関する情報が、前記遷移ウィンドウでのウィンドウオーバーフロー及びアンダーフローの際、前記ウィンドウスタック内に記録される、請求項6に記載のシステム。
The system further comprises a window stack stored in memory accessible only to the supervisor mode,
The system of claim 6, wherein information about the transition window is recorded in the window stack upon window overflow and underflow in the transition window.
非遷移ウィンドウに関する情報が、前記非遷移ウィンドウでのウィンドウオーバーフロー及びアンダーフローの際、前記ウィンドウスタック内に記録される、請求項9に記載のシステム。   The system of claim 9, wherein information about non-transition windows is recorded in the window stack upon window overflow and underflow in the non-transition windows. それぞれのレジスタウィンドウに、ゼロから始まりセーブするたびに単調に増加する一意の数値ラベルが割り当てられる、請求項6に記載のシステム。   7. The system of claim 6, wherein each register window is assigned a unique numeric label that starts at zero and increases monotonically with each save. 前記確保されたウィンドウに割り当てられた現在のラベルのレコードは前記確保されたウィンドウのローカルレジスタ内で保持され、そのレコードが、前記確保されたウィンドウでウィンドウオーバーフロー及びアンダーフローが発生するとアップデートされる、請求項11に記載のシステム。   A record of the current label assigned to the reserved window is held in a local register of the reserved window, and the record is updated when window overflow and underflow occur in the reserved window; The system of claim 11. 前記スーパーバイザモードだけがアクセス可能なメモリ内に格納されたウィンドウスタックを更に備え、前記ラベルが、前記確保されたウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際、少なくとも前記ウィンドウスタック内の前記確保されたウィンドウの前記スタックポインタのレコードにインデックスを付けるために使用される、請求項11に記載のシステム。   Further comprising a window stack stored in a memory accessible only by the supervisor mode, wherein the label is at least of the reserved window in the window stack upon window overflow and underflow in the reserved window. The system of claim 11, wherein the system is used to index the stack pointer records. 前記ラベルが、それぞれのウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際、前記ウィンドウスタック内のそれぞれのウィンドウの前記スタックポインタのレコードにインデックスを付けるために使用される、請求項13に記載のシステム。   14. The system of claim 13, wherein the label is used to index a record of the stack pointer for each window in the window stack upon window overflow and underflow in each window. 前記ラベルが現在のウィンドウポインタに基づいて計算される、請求項11に記載のシステム。   The system of claim 11, wherein the label is calculated based on a current window pointer. スーパーバイザコードからユーザコードに遷移する際、呼出し関数が、前記現在のウィンドウポインタを前記遷移ウィンドウの後ろに位置する前記ユーザウィンドウに動かすためにセーブを発行し、少なくとも前記現在のウィンドウから前記確保されたウィンドウまでのスーパーバイザコードデータを含む前記ウィンドウ内の前記レジスタを上書きする、請求項1に記載のシステム。   When transitioning from supervisor code to user code, the calling function issues a save to move the current window pointer to the user window located behind the transition window, and at least the reserved from the current window. The system of claim 1, overwriting the register in the window containing supervisor code data up to the window. 前記呼出し関数が前記現在のウィンドウから前記確保されたウィンドウまでのすべてのウィンドウ内の前記レジスタを上書きする、請求項16に記載のシステム。   The system of claim 16, wherein the call function overwrites the register in all windows from the current window to the reserved window. 前記呼出し関数がスーパーバイザコードデータを含む前記プロセッサのすべてのレジスタを上書きする、請求項17に記載のシステム。   The system of claim 17, wherein the call function overwrites all registers of the processor that contain supervisor code data. 前記遷移ウィンドウ内の前記レジスタが、前記遷移ウィンドウにおけるウィンドウオーバーフロー及びアンダーフローの際に上書きされる、請求項1に記載のシステム。   The system of claim 1, wherein the register in the transition window is overwritten upon window overflow and underflow in the transition window. ユーザコードからスーパーバイザコードに遷移する際、ウィンドウアンダーフロートラップルーチンが、前記現在のウィンドウポインタを、前記遷移ウィンドウに先立って前記スーパーバイザウィンドウに動かすために復元を発行する、請求項1に記載のシステム。   The system of claim 1, wherein when transitioning from user code to supervisor code, a window underflow trap routine issues a restore to move the current window pointer to the supervisor window prior to the transition window.
JP2009518674A 2006-07-10 2006-07-10 System for protecting sensitive data from user code within a register window architecture Pending JP2009543234A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/AU2006/000971 WO2008006130A1 (en) 2006-07-10 2006-07-10 System for protecting sensitive data from user code in register window architecture

Publications (1)

Publication Number Publication Date
JP2009543234A true JP2009543234A (en) 2009-12-03

Family

ID=38922824

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009518674A Pending JP2009543234A (en) 2006-07-10 2006-07-10 System for protecting sensitive data from user code within a register window architecture

Country Status (3)

Country Link
EP (1) EP2044517A4 (en)
JP (1) JP2009543234A (en)
WO (1) WO2008006130A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH096630A (en) * 1995-06-20 1997-01-10 Fujitsu Ltd Processing method for real-time os
JP2006039815A (en) * 2004-07-26 2006-02-09 Fujitsu Ltd Multithread processor and register control method

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5083263A (en) * 1988-07-28 1992-01-21 Sun Microsystems, Inc. BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer
US5655132A (en) * 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
US6167504A (en) * 1998-07-24 2000-12-26 Sun Microsystems, Inc. Method, apparatus and computer program product for processing stack related exception traps
TWI229817B (en) * 2003-01-07 2005-03-21 Wistron Corp Kernel-mode operating system of application program and method thereof
JP4246672B2 (en) * 2004-06-03 2009-04-02 株式会社リコー Image forming apparatus and image forming apparatus control method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH096630A (en) * 1995-06-20 1997-01-10 Fujitsu Ltd Processing method for real-time os
JP2006039815A (en) * 2004-07-26 2006-02-09 Fujitsu Ltd Multithread processor and register control method

Also Published As

Publication number Publication date
WO2008006130A1 (en) 2008-01-17
EP2044517A4 (en) 2010-08-25
EP2044517A1 (en) 2009-04-08

Similar Documents

Publication Publication Date Title
US7681000B2 (en) System for protecting sensitive data from user code in register window architecture
JP5746100B2 (en) Image forming apparatus
US7249353B2 (en) Image-formation device firmware having modular upgrade capability
US20080313453A1 (en) Boot Validation in Imaging Devices
US20080010637A1 (en) Pictbridge printer firmware upgrades via camera
JP2001306170A (en) Image processing device, image processing system, method for restricting use of image processing device and storage medium
WO2012069000A1 (en) Device and method for automatic driver installation
KR20060025129A (en) Universable loader for portable electronic devices
US7577954B2 (en) Process management method and image forming apparatus
US20100277536A1 (en) Electronic device having essential hardware authentication
JP2009217331A (en) Information processor, control method for information processor, program and recording medium
JP3978521B2 (en) Game machine
JP2001256014A (en) Output system, output method to be used for the same and recording medium in which program to be executed in output system is recorded
JP2009543234A (en) System for protecting sensitive data from user code within a register window architecture
JP4930562B2 (en) Function simulation program for image processing apparatus, information processing apparatus, and recording medium
US20080010636A1 (en) Pictbridge printer firmware upgrades via memory stick
JP3989827B2 (en) Image processing apparatus, recording medium reading program, and storage medium
WO2003034212A1 (en) Software loading
JP6007646B2 (en) Printing apparatus, additional embedded software processing apparatus, and additional embedded software execution control method
JP2593007B2 (en) Program embedded device
TW201719473A (en) License management method, semiconductor device suitable for license management, and license management system
JP4491660B2 (en) Image forming apparatus
JPH0934799A (en) Data protection method
JP4973408B2 (en) Information processing apparatus and program
JP2008009494A (en) Image forming device

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110719

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120110