EP2044517A1 - System for protecting sensitive data from user code in register window architecture - Google Patents
System for protecting sensitive data from user code in register window architectureInfo
- Publication number
- EP2044517A1 EP2044517A1 EP06760841A EP06760841A EP2044517A1 EP 2044517 A1 EP2044517 A1 EP 2044517A1 EP 06760841 A EP06760841 A EP 06760841A EP 06760841 A EP06760841 A EP 06760841A EP 2044517 A1 EP2044517 A1 EP 2044517A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- window
- supervisor
- transition
- user
- stack
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
- G06F21/608—Secure printing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/74—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2105—Dual mode as a secondary aspect
Definitions
- This invention relates to an electronic device having an embedded computer system. It has been developed primarily for improving security and protecting the computer system from malicious software tampering, whilst still allowing flexibility in software design downstream of the device manufacturer.
- an embedded system contains special-purpose hardware and a processor (CPU) supporting a real-time operating system (RTOS).
- the system is programmed with special-purpose software tailored to meet the requirements for that particular system.
- software written for an embedded system is referred to as 'firmware'. Since electronic devices are expected to run continuously for many years without errors, firmware is usually developed and tested more rigorously than software for computers.
- a first product may have Feature X
- a second product may have Features X, Y and Z.
- an inherent problem with embedded firmware is that it is susceptible to malicious attack from hackers or willful copyright infringers offering unauthorized firmware upgrades.
- an unauthorized firmware upgrade may be freely distributed over the Internet, allowing users to upgrade their devices free of charge.
- QA chip(s) in a printer perform an array of functions in a secure environment.
- a QA chip in a print cartridge may be used to allow operation of the printer only in a licensed manner.
- a printer A may be licensed to print at 10 pages per minute, while a printer B may be licensed to print at 30 pages per minute.
- the hardware in each printer is identical, but the QA chip allows each printer to be differentiated.
- the QA chip since the QA chip stores its data in a secure, authenticated fashion, it can only be upgraded or replaced by an authentic source. Hence, the QA chip provides protection against attack from unlicensed users.
- a QA chip mounted on an ink cartridge may be used to guarantee that the ink contained in the cartridge is from a particular source or of a particular quality, thereby ensuring that incorrect ink, which may damage the printhead, cannot be used.
- the same QA chip may similarly be used to store dynamically in its memory a quantity of 'virtual ink' remaining in the cartridge, determined with reference to the initial quantity of ink in the cartridge and the number of dots printed using that ink.
- the quantity of 'virtual ink' provides a security mechanism for the printer and prevents unauthorized refilling of ink cartridges - the firmware in the printer communicates with the ink cartridge QA chip before printing and if the amount of 'virtual ink' is insufficient, the printer will not print. In this way, the quality of ink can be assured and risk of damaging the printhead using low quality ink from an unauthorized refill is minimized.
- QA chips provide an excellent means for preventing unauthorized uses of electronic devices.
- the security of QA chips relies on firmware in the embedded system communicating with the chip. It is conceivable that the most determined hacker may be able to modify the firmware and override its communication with QA chip(s) in the device. In this scenario, the security provided by the QA chip would be compromised. In the above example, unauthorized refills of ink cartridges would be possible, irrespective of the presence of a QA chip on the ink cartridge.
- an electronic device comprising an embedded computer system, said device comprising a processor supporting a real-time operating system (RTOS), said processor supporting user and supervisor modes, wherein said computer system is programmed such that only code portions directly controlling essential hardware in said device are run in supervisor mode.
- RTOS real-time operating system
- essential hardware is used to mean hardware component(s) which are essential for the device to perform its primary function.
- the essential hardware may include drive circuitry for actuating nozzle actuators in a printhead, but does not include an LCD display on the printer, since an LCD display is not essential for the printer to be able to print.
- code portion is used to mean any portion of code which performs a specific function.
- a code portion may be part of a thread or a process.
- Processors supporting user and supervisor modes are well known in the computer art. Code running in supervisor mode can only be accessed by a person with special privileges, such as the person who wrote the code originally. By contrast, code running in user mode can be accessed and modified by any person, irrespective of their privileges.
- An example of a processor, which supports user and supervisor modes, is the SPARCTM processor. Such processors were designed to protect a core (or kernel) of an operating system from potentially buggy applications running on a computer.
- the operating system can continue to run, even if a particular application running in user mode has crashed. This ensures that other applications running in user mode can continue running on the operating system.
- the risk of crashing the whole computer with a buggy application is minimized - there is a separation between applications and the core of the operating system.
- the processor supporting user and supervisor modes is employed in a different manner from its conventional use in non-embedded computer systems.
- the embedded computer system of the present invention is programmed so that only code portions directly controlling essential hardware in the device are run in supervisor mode, with the remainder of code portions being run in user mode.
- a major advantage of running certain code portions (which control essential hardware in the device) in supervisor mode is that these code portions cannot be modified once they have been finalized by the device manufacturer. Hence, the manufacturer, or a licensee, retains ultimate control over how the device may be operated.
- a printer manufacturer may program into code portions directly controlling a printhead and paper feed mechanism that the printer should only print at 10 pages per minute. Since this code portion is protected in supervisor mode, it is not possible for a hacker to modify the code and upgrade his printer.
- the computer system is programmed such that code portions not directly controlling essential hardware in said device are run in user mode.
- a core of the RTOS is run in user mode.
- the advantages of programming the embedded computer system in this way are twofold. Firstly, the amount of code in supervisor mode is kept to a minimum, which minimizes the risk of bugs being present in this immutable code. Secondly, by having the RTOS and non-essential applications running in user mode, there is an opportunity for a licensed printer manufacturer or distributor, downstream of the original printer manufacturer, to develop its own firmware specific to its requirements on an operating system of its choice.
- a licensed printer manufacturer may wish to change the format of an LCD display and he may wish to program this using his preferred operating system, hi accordance with the present invention, a licensed printer manufacturer has the flexibility to do this, without the security of a QA system in the device being compromised.
- the computer system is programmed such that a code portion directly controlling essential hardware is callable from an application running in user mode via a trap identifying that code portion.
- a plurality of code portions, each directly controlling respective essential hardware may each be independently callable from an application running in user mode via a respective trap identifying a respective code portion.
- User mode applications may be programmed by a licensed device manufacturer or may even be available via an upgrade, downloadable from the Internet. For example, a printer user may wish to have a default option of printing '5000 pages, full color'. He is able to upgrade bis firmware to have this default option, because the print job application(s) programmed into the embedded system run in user mode.
- the code portion directly controlling essential hardware communicates with at least one authentication chip in the device before an operation of the hardware.
- the authentication chip (or 'QA chip') authorizes the operation.
- the code portion may ask the QA chip for the authorized print speed for that printer.
- the QA chip returns this information (e.g. 10 pages per minute) to the computer system and printing at the authorized print speed can commence. Li this way, licensed operation of the device can be controlled securely via the QA chip, without being compromised by a malicious attack on firmware in the device.
- a first authentication chip is associated with a consumable component of said device.
- consumable components in electronic devices include ink cartridges, toner, paper, batteries etc.
- the first authentication chip may contain static and/or dynamic data relating to the consumable component.
- static data may relate to a source, batch number, quality (e.g. ink color), initial quantity etc. of the consumable component.
- Dynamic data may relate to a current quantity (e.g. amount of remaining ink) or quality (e.g. temperature) of the consumable component.
- An electronic device may require several consumable components. Accordingly, the device may comprise a plurality of first authentication chips, each one of the first authentication chips being associated with a respective consumable component.
- the electronic device is a printer and the consumable component is an ink cartridge having a respective first authentication chip.
- the authentication chip on an ink cartridge may be used to authorize printing only if certain conditions have been met e.g. (i) printing only when an ink cartridge of a predetermined type, as determined via the associated authentication chip, is loaded in the printer; and/or (ii) printing only when a predetermined amount of ink, as determined via the associated authentication chip, is remaining in the ink cartridge.
- these authentication mechanisms provide a printer manufacturer with assurances regarding the quality of ink used in its printers, thereby preserving the manufacturer's reputation in the printer market.
- a second authentication chip is positioned in a body of the device, which is not associated with a consumable component.
- a second authentication chip may be mounted in or on a print engine for a printer.
- the second authentication chip may be used to authorize certain operations of the device, such as printing at a predetermined speed.
- a system for upgrading firmware in a PictBridge printer comprising: a PictBridge printer having an embedded computer system; and a memory stick for communicating with said embedded computer system, wherein said memory stick contains a firmware upgrade for said embedded computer system.
- a memory stick containing a firmware upgrade for an embedded computer system of a PictBridge printer.
- a system for upgrading firmware in a PictBridge printer comprising: a PictBridge printer having an embedded computer system; and a digital camera for communicating with said embedded computer system, wherein said camera contains a firmware upgrade for said embedded computer system.
- a digital camera containing a firmware upgrade for an embedded computer system of a PictBridge printer.
- PictBridge is an industry open standard from the Camera & Imaging Products Association (CIPA) for direct printing. It allows images to be printed directly from digital cameras to a printer, without having to connect the camera to a computer. By connecting a PictBridge-enabled printer to a PictBridge-enabled camera using a single USB cable, users can easily control print settings using their camera and produce high quality photos without using a PC.
- CIPA Camera & Imaging Products Association
- a major advantage of PictBridge printing is its simplicity for the user, and especially those users for whom complex photo application software may be a barrier.
- PictBridge relies on communication between embedded computer systems in the camera and printer. These embedded computer systems effectively replace PC photo applications and, moreover, simplify operability for the user.
- PictBridge printer From time to time, it may be necessary to upgrade firmware in a PictBridge printer. For example, additional printing options may be required or it may be necessary to upgrade firmware so that it is compatible with new PictBridge-enabled cameras on the market.
- software upgrades for PC photo applications are provided via internet downloads or CD.
- PictBridge printer users may not own a computer in the first place. For those that do own a computer, the complexity of downloading new software onto their PC from the internet and upgrading their PictBridge printer by connecting it to their PC is likely to be a significant barrier. After all, PictBridge users are generally attracted to this system, because of its simplicity and because it obviates the need for a PC.
- a major advantage of the present invention is its simplicity for the user. Insertion of a memory stick into a USB port of a PictBridge printer requires no computer skills. Therefore, firmware upgrades of a printer may be confidently performed by anyone without risk or fear of upgrading the printer incorrectly.
- memory stick is used to mean any portable non- volatile digital memory device.
- the memory stick or camera may communicate with the embedded computer system via standard USB connectors.
- the memory stick or camera is configured to download automatically a firmware upgrade to the printer if it detects that the printer does not already have that upgrade.
- the portable non- volatile digital memory device is a memory stick.
- the camera may be sold with the firmware upgrade already programmed into its memory.
- the camera may receive the firmware upgrade from an external source.
- a memory stick may be used to download the firmware upgrade to the camera so that the camera can upgrade the printer when it is next connected.
- a system for protecting supervisor mode data from user code in a register window architecture of a processor such as the processor of the first aspect, the system comprising, when transitioning from supervisor mode to user mode, setting at least one invalid window bit in the invalid window mask of the architecture additional to the invalid window bit set for the reserved window of the invalid window mask, the additional bit being set for a transition window between supervisor and user data windows.
- the position of the additional invalid window bit in the invalid window mask is maintained independent of window overflows and underflows at the transition window.
- Separate supervisor mode and user mode stacks may be provided, where the separate supervisor mode and user mode stacks are respectively stored in supervisor mode- only and user mode accessible memory.
- the current stack pointer may be switched to between the supervisor and user stacks whenever a transition from user mode to supervisor mode and from supervisor mode to user mode occurs.
- information on the transition window is recorded in the supervisor stack upon window overflow and underflow at the transition window.
- a window stack is stored in the supervisor mode-only accessible memory, with the information on the transition window being recorded in the window stack upon window overflow and underflow at the transition window.
- information on non-transition windows is recorded in the window stack upon window overflow and underflow at the non-transition windows.
- a unique numerical label is assigned to each register window starting from zero and increasing monotonically for every save.
- a record of the current label - assigned to the reserved window may be held in the local registers of the reserved window, with the record being updated as window overflows and underflows occur at the reserved window.
- the labels may be calculated based on the current window pointer.
- the labels are used to index a record of at least the stack pointer of the reserved window in the window stack upon window overflow and underflow at the reserved window.
- the labels are used to index a record of the stack pointers of each window in the window stack upon window overflow and underflow at each window.
- the call function may issue saves to bring the current window pointer to the user window positioned after the transition window and overwrite the registers in at least the windows containing supervisor code data from the current window to the reserved window.
- the call function may overwrite the registers in all of the windows from the current window to the reserved window or all the registers of the processor containing supervisor code data.
- the registers in the transition window may be overwritten upon window overflow and underflow at the transition window.
- the window underflow trap routine may issue restores to bring the current window pointer to the supervisor window preceding the transition window.
- Figure 1 is a perspective view of a printer having an embedded computer system
- Figure 2 is a diagram showing the interrelationship between various components of the embedded computer system and printer hardware.
- Figure 3 illustrates a register window architecture implemented by a processor of the embedded computer system
- Figure 4 illustrates a mode switch between supervisor and user modes
- Figure 5 illustrates a mode switch between supervisor and user modes employing a transition window.
- Figure 1 shows a printer 2 embodying the present invention.
- Media supply tray 3 supports and supplies media 8 to be printed by a print engine (concealed within a printer casing).
- Printed sheets of media 8 are fed from the print engine to a media output tray 4 for collection.
- User interface 5 is an LCD touch screen and enables a user to control the operation of the printer 2.
- the printer 2 comprises an embedded computer system (not shown), which controls the overall operation of the printer.
- the embedded computer system 10 comprises a processor 11, which supports user and supervisor modes.
- the processor 11 runs code portions 12 controlling essential printing hardware 13 in supervisor mode only.
- the essential printing hardware 13 may comprise drive circuitry for actuating nozzle actuators, motors driving a feed mechanism etc. All other code is run in user mode, including the core RTOS 14.
- the code portions 12 are 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 essential printing hardware 13, the code portions 12 communicate with the QA chips 16a and 16b to request authorization for that operation.
- the print engine QA chip 16a is programmed with an authorized print speed ⁇ e.g. 30 pages per minute). This information is returned to the code portions 12 and the essential printing hardware 13 is operated in accordance with the authorized print speed.
- the ink cartridge QA chip 16b is programmed with information regarding the ink, including an amount of remaining ink. If, for example, the ink cartridge QA chip 16b returns information that no ink is remaining in the cartridge, then the code portions 12 are not authorized to operate the essential printing hardware 13 and printing is aborted. Since the code portions 12 are run in supervisor mode only, it is not possible for an unauthorized person to modify these code portions and, hence, it is not possible to change the operation of essential printing hardware 13 or override the security provided by the QA chips 16a and 16b.
- code portions 17 controlling non-essential hardware 18, such as the LCD display 5, are run in user mode.
- These code portions 17, together with the core RTOS 14, can be modified without any authorization privileges, to provide flexibility in operation of non-essential hardware and even flexibility in selecting a desired operating system.
- the print engine QA chip 16a may receive a print speed upgrade 19 via an authorized internet download or memory stick.
- an ink refill QA chip 20 may communicate with the ink cartridge QA chip 16b during an authorized ink refill, so that the ink cartridge QA chip 16b knows a refill from an authentic source has taken place.
- Authorized ink refill operations are described in detail in our earlier US patent application no. 11/014,769 (filed on December 12, 2004), the contents of which is hereby incorporated by reference.
- firmware in the embedded system 10 for printer 2 may be modified or upgraded without compromising the security of licensed printer operations. Some firmware upgrades may be provided by the user.
- a firmware upgrade may be provided by a memory stick 30 or a camera 31.
- the memory stick 30 or camera 31 contains the firmware upgrade in its memory and automatically downloads the upgrade to the embedded system 10 if it detects that the embedded system requires upgrading.
- the user simply plugs the memory stick into a USB port of a PictBridge printer.
- the user simply connects the camera to a Pictbridge printer via its USB port in the normal way. The user may even be unaware that a firmware upgrade has taken place if the camera was purchased with the upgrade contained in its memory.
- the memory stick 30 may be used to download a firmware upgrade into the camera's memory, and the camera 31 used to upgrade firmware in the embedded system 10 when the camera is next connected to the printer 2.
- supervisor code Further security is provided by protecting all supervisor code from user code. This removes the possibility of user code reading sensitive data and having the computer system execute arbitrary code in supervisor mode, which could allow unauthorized access to, and modification of, the operational hardware and software of the printer.
- the processor 11 implements a register window architecture to manipulate data.
- the processor is a LEON CPU implementing SPARCTM architecture.
- the Integer Unit working registers 'r' registers
- the Multiply/Divide register Y register
- the Program Counters PC and nPC
- these registers must not hold sensitive data across transitions between supervisor and user modes, in either direction.
- the 'r' registers of the print engine have eight global 32-bit registers and eight sets of registers with sixteen 32-bit registers in each set.
- the register sets are arranged such that the processor 11 has a window that sees 24 of the registers.
- the current window being viewed is determined by a pointer to that window, such as a Current Window Pointer (CWP).
- WBP Current Window Pointer
- the above number of registers and register sets are merely exemplary, and a different number of registers and registers sets may be used.
- SPARCTM architecture allows a configurable number of register sets from two to 32.
- the invalid window mask may, for example, be the Windows Invalid Mask (WIM) used in SPARCTM architecture.
- WIM Windows Invalid Mask
- Overflow and underflow handlers are used to give the illusion of an unbounded number of register windows.
- an 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 which has its bit set, designating it as invalid.
- the processor when a save instruction is issued to move the current window from window N to window N-I, the processor first checks bit N-I of the invalid window mask. If that bit is set, the window is invalid, such that the processor does not change windows but generates a window overflow trap. Similarly, when a restore instruction is issued to move the current window from window N to window N+l , the processor first checks bit N+l of the invalid window mask. If that bit is set, the window is invalid, such that the processor does not change windows but generates a window underflow trap.
- the invalid window mask conventionally has a value with one bit set, which marks the end of the available windows, i.e., seven in the present embodiment, and reserves one window for a trap.
- the trap handler When an overflow trap is taken, e.g., as a result of a save instruction rotating the current window to a reserved window, the trap handler saves the oldest window to memory, rotates the invalid mask to now point to that saved window, and thereby frees up the previously reserved window for use.
- an underflow trap is taken, e.g., as a result of a restore instruction rotating the current window to a reserved window.
- Each register set has 16 registers, comprising eight "in” registers and eight "local” registers. However, the window sees 24 registers, the remaining registers being eight “out” registers. Thus, as the window cycles through the sets, the processor 11 sees some registers from the adjacent set. This is illustrated in Figure 3, where the "out” registers correspond to the "in” registers of the next lowest window. Thus, a given window can modify the "out” registers of the next highest window and the "in” registers of the next lowest window, even upon overflow and underflow.
- a user mode window is able to read and modify some of the data in adjacent windows including supervisor mode windows. It may even be possible for the user code to cycle through the register windows, reading and modifying the values.
- Figure 4 in which a switch from supervisor mode to user mode is shown. As can be seen, the supervisor code had been using windows 7 and 6 before calling the user code, however there is nothing stopping the user code from issuing multiple instructions to move back and read/modify the supervisor data.
- supervisor stacks are used for supervisor code data and user code data.
- the current stack pointer e.g., %o6
- the supervisor stack is stored in supervisor mode-only accessible memory and the user stack is stored in user mode accessible or user mode-only accessible memory.
- the setting of the additional bit provides a transition window between supervisor and user windows which ensures that sensitive data stored in the supervisor registers is not accessible to user code. This is illustrated in Figure 5 where, before calling user code, the supervisor code moved down an extra two windows and marked the intermediate window invalid in the invalid window mask. This window represents a barrier at the transition because if the user code issues multiple instructions to move back through the windows, it will generate a trap when it hits the invalid window at window 5.
- the location of the transition window (there may be more than one) is maintained as overflows and underflows occur. This is done by either storing information on the transition window(s) in the supervisor stack as traps occur, or storing this same information in a separate window stack, which is maintained in supervisor mode-only accessible memory. In this way, information about the transition windows is not stored in the invalid window mask or in the registers of the transition window itself. Accordingly, this information cannot be accessed by user code, thereby protecting the supervisor code data stored in the "out" or "in” registers of the transition window.
- code which overwrites the number of windows known to be used or known to contain supervisor code data can be used. Because the user code calls the supervisor mode by way of a trap, the associated trap routine is configured to remember the return addresses from the trap. It may also remember the previous processor state register (PSR) when SPARCTM architecture is employed. This is done in the "local" registers of the new register window allocated for the trap routine. Given this, there will never be two adjacent transition windows, i.e., every transition window will be preceded by at least one supervisor window, namely the window used to hold the return addresses from the trap.
- PSR processor state register
- supervisor code Whenever supervisor code wants to call user code, it issues a call instruction to a function ('callUserFunction'), which takes the following arguments: (i) The address of the function to be called, in %oO. (ii) The current user (NOT supervisor) stack pointer in %ol, where the caller must arrange to pass a correct user stack pointer:
- the trap routine could either use the user stack pointer read from the current thread context or a separate, dedicated user stack for the interrupt is used. In the latter case, context-switch calls are disabled during these calls because it is not possible to context-switch between threads if they share a common stack;
- callUserFunction is configured to:
- the window overflow trap routine determines if the window to be saved to memory is already marked as invalid in the WIM:
- the trap routine therefore saves the window's registers to memory as normal, and pushes a "normal" record onto the window stack, after checking for stack overflow (as described above). This record only needs to be a single flag indicating that this is a "normal” record.
- transition window's frame pointer i.e. %i6, the return address from callUserFunction which is read from transition window's %i7 and the %y register and global register values saved 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 the transition window is saved. After doing these saves, the transition window's registers must be overwritten (as described above).
- the window underflow trap routine does the following: • Looks at the WIM to see if more than one bit is set. If more than one bit is set, it means that the window just encountered is a transition window. This is because the reserved window is always the first invalid window in the downward direction, such that encountering a different invalid window in the upward direction can only mean that that window is a transition window.
- the trap routine is configured to:
- the trap routine is configured to:
- the window stack is used to record flags related to the type of window being stored, i.e., a "transition" record for a transition window and a "normal” record for a non-transition window.
- a transition record for a transition window
- a normal record for a non-transition window.
- each used register window is labeled and the %o6 value is stored on register overflow to be used for the corresponding restore, hi this way, on occurrence of overflows and underflows it is known whether a register window belongs to user mode or supervisor mode, upon checking and validation of the %o6 value.
- the labels are allocated, for example, as unique numerical labels for every possible register window for a thread of execution, starting from zero and increasing monotonically for every save and/or function.
- the labels are used similar to the flag records described above by keeping a record of where the labels are as overflows and underflows occur. That is, a record may be kept of the current label assigned to the reserved window, and the reserved window's window number. This is updated whenever the overflow and underflow routines shift the reserved window, where an overflow increments the label and an underflow decrements the label.
- the reserved window's label is set to eight, and its window number to zero.
- This record could be kept in some thread-specific supervisor RAM or it could be held in the "local" registers of the reserved window (which is inaccessible to user code), hi this case, the underflow and overflow traps shift the value as they, shift the reserved window.
- the labels can also be used to access an additional state for each register window at overflow and underflow events.
- the additional state contains the saved stack pointer, e.g., %o6, for the window and the mode of the window.
- the mode identifies whether the window is executing in supervisor mode, and can additionally identify whether the window is executing in an interrupt and mode change.
- the additional state information is accessed by indexing a record of the stack pointer and mode in the window stack when overflows and underflows occur as part of the label record. This can be done for the reserved window only, as described above, or for all of the register windows, hi this way, restores across transitions between user and supervisor modes can be identified and handled differently than restores which remain in user mode, for example in the manner described above. Thereby, protecting the supervisor mode sensitive data from user code access.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
- Storage Device Security (AREA)
Abstract
Description
Claims
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 (2)
| Publication Number | Publication Date |
|---|---|
| EP2044517A1 true EP2044517A1 (en) | 2009-04-08 |
| EP2044517A4 EP2044517A4 (en) | 2010-08-25 |
Family
ID=38922824
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP06760841A Withdrawn EP2044517A4 (en) | 2006-07-10 | 2006-07-10 | SYSTEM FOR PROTECTING USER SENSITIVE DATA IN A REGISTER WINDOW ARCHITECTURE |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP2044517A4 (en) |
| JP (1) | JP2009543234A (en) |
| WO (1) | WO2008006130A1 (en) |
Family Cites Families (7)
| 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 |
| JP3595028B2 (en) * | 1995-06-20 | 2004-12-02 | 富士通株式会社 | Real-time OS processing method |
| 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 |
| JP4956891B2 (en) * | 2004-07-26 | 2012-06-20 | 富士通株式会社 | Arithmetic processing apparatus, information processing apparatus, and control method for arithmetic processing apparatus |
-
2006
- 2006-07-10 EP EP06760841A patent/EP2044517A4/en not_active Withdrawn
- 2006-07-10 JP JP2009518674A patent/JP2009543234A/en active Pending
- 2006-07-10 WO PCT/AU2006/000971 patent/WO2008006130A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| EP2044517A4 (en) | 2010-08-25 |
| WO2008006130A1 (en) | 2008-01-17 |
| JP2009543234A (en) | 2009-12-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7984257B2 (en) | System for protecting supervisor mode data from user code | |
| KR102836890B1 (en) | Transition Disable Indicator | |
| JP7467856B2 (en) | Image forming apparatus and consumable cartridge | |
| JP4939382B2 (en) | Information processing apparatus and program execution control method thereof | |
| US20070300207A1 (en) | Boot Validation System and Method | |
| JP2009053901A (en) | Printer | |
| US20100277536A1 (en) | Electronic device having essential hardware authentication | |
| JP2001306170A (en) | Image processing apparatus, image processing system, method of restricting use of image processing apparatus, and storage medium | |
| WO1999059049A1 (en) | Protected storage device for computer system | |
| JP3978521B2 (en) | Game machine | |
| JP4584044B2 (en) | Semiconductor device | |
| US20080010637A1 (en) | Pictbridge printer firmware upgrades via camera | |
| US20060036800A1 (en) | Process management method and image forming apparatus | |
| EP2044517A1 (en) | System for protecting sensitive data from user code in register window architecture | |
| JP2008176608A (en) | Data backup device and data backup method | |
| US20080010636A1 (en) | Pictbridge printer firmware upgrades via memory stick | |
| US8689320B2 (en) | Image forming apparatus with hard disk drive securely formatted | |
| US6415351B1 (en) | Switching access to a flash memory from an IC card, after downloading is complete, while the power is still on | |
| JP4545496B2 (en) | Electrical equipment | |
| JP4865064B2 (en) | Semiconductor device | |
| JPH0223427A (en) | Personal computer | |
| JP4418942B2 (en) | Game machine | |
| JP4266995B2 (en) | Image forming apparatus | |
| JP2008009799A (en) | Image forming device | |
| JP4491660B2 (en) | Image forming apparatus |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| 17P | Request for examination filed |
Effective date: 20090206 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
| AX | Request for extension of the european patent |
Extension state: AL BA HR MK RS |
|
| A4 | Supplementary search report drawn up and despatched |
Effective date: 20100726 |
|
| RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06F 13/00 20060101ALI20100720BHEP Ipc: G06F 9/46 20060101AFI20100720BHEP |
|
| RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06F 13/00 20060101ALI20110131BHEP Ipc: G06F 9/46 20060101AFI20110131BHEP |
|
| 17Q | First examination report despatched |
Effective date: 20110218 |
|
| DAX | Request for extension of the european patent (deleted) | ||
| RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: ZAMTEC LIMITED |
|
| RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: ZAMTEC LIMITED |
|
| RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: MEMJET TECHNOLOLGY LIMITED |
|
| RAP1 | Party data changed (applicant data changed or rights of an application transferred) |
Owner name: MEMJET TECHNOLOGY LIMITED |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
| 18D | Application deemed to be withdrawn |
Effective date: 20160111 |