WO2004079547A2 - Customized execution environment and operating system capable of supporting same - Google Patents
Customized execution environment and operating system capable of supporting same Download PDFInfo
- Publication number
- WO2004079547A2 WO2004079547A2 PCT/US2004/006788 US2004006788W WO2004079547A2 WO 2004079547 A2 WO2004079547 A2 WO 2004079547A2 US 2004006788 W US2004006788 W US 2004006788W WO 2004079547 A2 WO2004079547 A2 WO 2004079547A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- control
- operating system
- partition
- resources
- services
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Definitions
- Embodiments of the present invention generally relate to the field of application execution environments and operating systems. More particularly, embodiments of the present invention relate to (i) application execution environments that are highly tuned for a particular class of hardware instruction set architectures and that employ the protective features of those instruction sets to reduce security vulnerabilities; and (ii) enhancement of a general-purpose operating system to function as a symbiotic partner with one or more application execution environments.
- I O input/output
- Such drivers also are permitted to execute at the highest privilege level provided by the processor.
- the amount of code comprised by the drivers usually is larger than the code for operating system kernels themselves.
- Other elements implement abstractions built on top of the operating system lcernel and I/O drivers. These include file systems, network stacks, synchronization primitives, signaling mechanisms, sockets interfaces, graphical user interfaces, and various libraries of system services. These elements combine with operating system kernels and I/O drivers to provide an interface to application programs that can be realized on many different hardware platforms.
- More powerful addressing protection capabilities such as those offered by PA-RISC ® and the Itanium ® systems, remain entirely unused by ULW operating systems. And for highly secure systems, in particular, there is compelling need to use such finer-grained memory protection capabilities, beyond those that are common to every manufacturer's processors. Support for such capabilities simply is unavailable from any of the ULW general-purpose operating systems, thereby making more difficult the construction of operating systems that can be highly secure. In ULW systems, for example, it is known to be unsafe to store cipher keys and cipher keying materials in main memory for long periods of time, 1 ' 2 even though this can be done safely using the protection capabilities provided by the Itanium architecture in the manner described in this Application.
- a computer architecture that includes at least the explicit instruction level parallelism and protection capabilities of the Itanium 2 processors shall be referred to herein as a "Parallel Protected Architecture" (PPA).
- PPA Parallel Protected Architecture
- the first category of abstraction consensus provided by the ULW operating systems like the hardware LCD consensus, also results in the collection of functional shortcomings which may be referred to herein as the SM effect. While the generally accepted operating system abstractions are suitable for a significant and broad class of applications, they are not ideal in every case. No computing structure can be all things to all applications. But having to map all applications into the generally accepted ULW API abstractions flies in the face of this fact. In important cases, the ULW operating system abstractions prevent full use of underlying hardware performance and protection capabilities.
- Figure 1 is an example of a computer system with which embodiments of the present invention may be utilized.
- Figures 2A and 2B conceptually illustrate partitioning of system resources.
- Figure 3 conceptually illustrates the relationships among an SGPOS, system resources, and C 2 E 2 s according to one embodiment of the present invention.
- Figure 4 is a simplified flow diagram conceptually illustrating SGPOS boot processing, C 2 E 2 initialization, and SGPOS processing according to one embodiment of the present invention.
- Figure 5 is a simplified block diagram conceptually illustrating SGPOS boot processing and C 2 E 2 initialization according to one embodiment of the present invention.
- Figure 6A conceptually illustrates a computer system configured to provide secure web server functionality according to one embodiment of the present invention in which the SGPOS retains control of a partition of system resources.
- Figure 6B conceptually illustrates a computer system configured to provide secure web server functionality according to an alternative embodiment of the present invention in which the SGPOS is placed in a dormant state and surrenders complete control of system resources to a CE .
- Figure 7 conceptually illustrates the relationships among the services within a CE 2 according to one embodiment of the present invention.
- Figure 8 A is a diagram of the page access rights that may be specified in an Itanium embodiment of the present invention.
- Figure 8B is a diagram of the contents of a protection key register in an
- Figure 9 A conceptually illustrates the organization of physically addressed sections of code or data by a first generation general-purpose operating system, such as the DOS operating system for the IBM System/360.
- Figure 9B conceptually illustrates the organization of virtually addressed sections of code or data, and their mappings to physical pages, by traditional general- purpose operating systems, such as the ULW systems.
- Figure 10 A conceptually illustrates the mapping of virtually and physically addressed pages in an Itanium embodiment of the present invention.
- Figure 1 OB is an example illustrating an actual organization of physical pages according to one Itanium embodiment of the present invention.
- Figures 11A and IIB are simplified diagrams of the pages, with associated protection settings, allocated for software stacks and Register Save Engine stacks in an Itanium embodiment of the present invention.
- Figure 12 is a simplified diagram of the entry vector associated with an application in an Itanium embodiment of the present invention.
- Figure 13 is a simplified diagram conceptually illustrating application logic flow using a priority commutator, according to one embodiment of the present invention.
- Figure 14 is a flow diagram of call authentication as implemented in an Itanium embodiment of the present invention.
- Figure 15 is a diagram showing local and global mappings of virtually addressed resources in a multiprocessor embodiment of the present invention.
- Figure 16 is a flow diagram illustrating the software secure I/O hardware control service in an Itanium embodiment of the present invention.
- Figure 17A is a flow diagram illustrating secure boot processing for an Itanium embodiment of the present invention.
- Figure 17B is a flow diagram illustrating CE 2 phase 2 loader processing for an Itanium embodiment of the present invention.
- FIG 17C is a flow diagram illustrating CE 2 initialization processing for an Itanium embodiment of the present invention.
- SUMMARY Methods and techniques for implementing a custom execution environment (CE 2 ) a related loader, and an operating system for supporting CE 2 s are described.
- a determination is made with respect to which system resources of a computer system, if any, are to remain under control of a resident operating system of the computer system and which of the system resources are to be placed under control of one or more CE s.
- the system resources are then partitioned among the resident operating system and the one or more CE 2 s by associating one or more partitions of the system resources with the one or more CE 2 s.
- a CE 2 includes code and data sections of an application and code and data sections of a set of system services.
- the set of system services has direct and full control of a set of hardware resources of a computer system containing one or more processors implementing a parallel protected architecture.
- Embodiments of the present invention seek to provide high- performance application execution environments that function on hardware platforms employing one or more "Parallel Protected Architecture" (PPA) processors, such as Intel Itanium 2 processors.
- PPA Parallel Protected Architecture
- Application execution environments implemented in accordance with the teachings provided herein may provide maximum performance and eliminate security vulnerabilities.
- Embodiments of the present invention seek to provide a general-purpose operating system with the new abilities to initialize, support and/or coexist with one or more custom execution environments.
- a general-purpose operating system may be evolved into a SGPOS that enables it to offer a set of application software execution environments providing not only those abstractions supported by the general-purpose operating system itself, but also those offered by one or a plurality of custom execution environments (CE s) in which: (1) each CE constitutes the execution environment for a single application, and exclusively manages a subset of the hardware resources allocated to it by the SGPOS; (2) the semantics within each CE 2 can be independent of, and are no longer limited by, the set of general-purpose abstractions provided by the general-purpose operating system; (3) the semantics within each CE 2 can be customized to the needs solely of the application to be executed within that environment; (4) the semantics within each CE can achieve desired properties not readily achievable within the constraints of the abstractions provided by the general-purpose operating system itself, such as minimum computational overheads, linear multiprocessor scalability, and elimination of vulnerabilities to attacks against its integrity and security; (5) within a CE 2 , full use can be made of available hardware
- a SGPOS includes a means to partition system resources, a means to initialize and invoke a customized execution environment, a means to isolate the SGPOS and the customized execution environment and protect them from each other, a means to communicate between a partition of the system resources remaining under the control of the SGPOS and a partition of the system resources under the control of the customized execution environment, and a means to reincorporate system resources relinquished by the customized execution environment as it shuts down, and to return full control of reincorporated system resources to the SGPOS.
- the SGPOS may transfer full control of at least one of the partitions to a separate customized execution environment.
- the customized execution environment then has direct access and control over the system resources within its partition. That is, there are no operating system abstractions interposed between the customized execution environment and the system resources allocated to the customized execution environment.
- the customized execution environment may implement a computational and/or I/O structure that is simpler, is tuned for a particular application, and can take advantage of certain processor or other system resource features that are not exploited by the SGPOS.
- the customized execution environment need not duplicate general-purpose capabilities already present in the SGPOS, but rather may focus solely upon the software structure best suited to its specific application. It then can obtain general-purpose services by communicating with the SGPOS.
- the customized execution environment may obtain system administration, control of peripheral devices outside of its partition, system boot and configuration initialization, partitioning of system resources, non-critical operating system services, and services supplied by a user application running under the SGPOS, etc. from the SGPOS via a communication channel maintained between the partitions of the SGPOS and the customized execution environment.
- application execution environments may exercise complete control over a hardware platform, or may exercise complete control over a first partition of the system resources while operating concurrently with an operating system which has surrendered control of said first or more partitions of system resources to one or more concurrent application execution environments, while the operating system itself continues to manage a second partition of system resources.
- the application execution environment may be referred to as a "Custom Execution Environment” (CE 2 ); in the latter case the application execution environment may be referred to as a “Concurrent Custom Execution Environment” (C 2 E 2 ) and the operating system that has surrendered control of said first partition of system resources to the CE 2 may be referred to as a "Symbiotic General-Purpose Operating System” (SGPOS).
- CE 2 Customer Execution Environment
- C 2 E 2 Concurrent Custom Execution Environment
- SGPOS Symbiotic General-Purpose Operating System
- Embodiments of the present invention include various steps, which will be described below. The steps may be performed by operator configuration, hardware components, or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps. Alternatively, the steps may be performed by a combination of operator configuration, hardware, software, and/or firmware. Embodiments of the present invention may be provided as a computer program product, which may include a machine-readable medium having stored thereon instructions that may be used to program a computer (or other electronic devices) to perform a process.
- the machine-readable medium may include, but is not limited to, magnetic disks, floppy diskettes, optical disks, compact disc read-only memories (CD-ROMs, CD-Rs, CD-RWs), digital versatile disks (DVD-ROM, DVD+RW), and magneto-optical disks, ROMs, random access memories (RAMs), erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), magnetic or optical cards, flash memory, or other type of media / machine-readable medium suitable for storing electronic instructions.
- embodiments of the present invention may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer to a requesting computer by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
- a communication link e.g., a modem or network connection
- the following terms are defined by computer architectures such as the Intel Itanium® architecture, the Hewlett Packard PA-RISC® architecture, or the IBM PowerPC® architecture, and by hardware platforms based upon processors that implement these architectures. Some of the terms are unique to the Itanium architecture.
- the term "physical address” denotes an encoded numeric value used by hardware directly to access a specific location within a hardware platform's physical memory.
- virtual address denotes an encoded numeric value used indirectly to access a specific location within a hardware platform's memory. Before accessing the memory, this address first is translated into a physical address, by a translation that software may specify (by means provided by a processor architecture) and processor hardware executes, before accessing the physical memory.
- region denotes a larger encoded numeric value that replaces a smaller encoded numeric value specified in a fixed number of high order bits of a virtual address.
- region denotes a larger encoded numeric value that replaces a smaller encoded numeric value specified in a fixed number of high order bits of a virtual address.
- the larger value is 24 bits in length, and the smaller value is 3 bits in i length. The replacement occurs whenever processor hardware translates a virtual address into a physical address.
- region register denotes a hardware register containing the larger encoded value used when the processor hardware translates a virtual address into a physical address.
- page denotes a contiguous area of memory identified by its first address (“page address”) and its size (number of bytes). Allowable page sizes, often including 4KB bytes or 8KB bytes, are defined by each processor architecture. Translations of virtual addresses to physical addresses occur for the fixed size page containing the virtual address.
- virtual page denotes a page addressed by the virtual address system software has specified for it.
- access rights denotes wliich types of accesses to memory by a processor are allowed or not allowed.
- the types of access are "read” meaning the processor may read the contents of memory, "write” meaning the processor may write the contents into memory, and "execute” meaning the processor may execute the contents of memory as an instruction". Disallowed accesses generate a hardware interruption.
- PK protection key
- PTK protection key register
- the term "hardware privilege level” denotes the current level of privilege at which a processor is executing. Many architectures define two such levels of privilege; others, such as the Itanium architecture define four such levels. Executing at a lower privilege level restricts the instructions that may be executed without causing an interruption.
- PLO hardware privilege levels defined by the Itanium architecture. PLO is the highest privilege level; PL3 is the lowest privilege level, (opposite of PL numeric label).
- EPC page denotes a virtual page within wliich an enter protected code (epc) instruction may raise the hardware privilege level.
- TLB translation lookaside buffer
- interruption denotes an occurrence where a processor halts the normal sequence of instruction execution, and directs control to system software that determines what has occurred and what needs to be done about it.
- interrupt denotes an interruption that occurs as the result of a system event, such as completion of an elapsed timer interval or signal from an I/O adapter, rather than as the result of execution of a particular instruction.
- register save engine denotes a facility in Itanium processors that saves, restores, and renames the "stacked" general registers (R32-R127) to give software the appearance of an unlimited number of general registers.
- register save engine stack denotes the memory used by the RSE to save and restore general registers.
- SWS software stack
- section denotes a collection of software code or data images that are linked together and located together in memory.
- BSS denotes a data section that occupies memory that is to be cleared when loaded into memory.
- the memory that comprises BSS pages I also called a "heap”.
- entity vector denotes a vector of instruction sequences, each of which corresponds to a particular system event and is set to direct control to the proper code should the corresponding event occur.
- EFI extensible firmware interface
- hardware platforms incorporating Intel Pentium or Itanium processors. This is the interface used by operating system of other executable environment loaders.
- boot services denotes a set of services provided by the EFI firmware when booting a system and loading an operating system or other control program.
- the term "monarch processor” denotes the particular processor executing the EFI firmware. In a multi-processor system, the monarch processor does most the early work, then, when the system is ready, activates the other processors.
- interruption service routine denotes software that executes while interruptions remain disabled following occurrence of an interrupt.
- deferred interruption service routine denotes software that executes as a result of the occurrence of an interrupt, but in the normal execution context, after interruptions are once again enabled.
- GUI denotes a graphical user interface, such as that provided by an Internet browser or Microsoft Windows® operating system.
- digital signature or "cryptographic digital signature” denotes the result of computing a cryptographic hash value, such as SHA-1, over a specific body of encoded data, then encrypting the hash value using a private key. Given the same body of encoded data, re-computing the hash value, and decrypting the digital signature using the corresponding public key, will produce the identical value if the encoded data remains the same.
- a cryptographic hash value such as SHA-1
- connection or “coupled” and related terms are used in an operational sense and are not necessarily limited to a direct physical connection or coupling.
- C 2 E 2 generally refers to a Customized Execution Environment that coexists with a general-purpose operating system and shares at least a means of communication with the general-purpose operating system.
- CE 2 Customerized Execution Environment
- CE 2 generally refers to a customized operating environment itself, in which there is provided a set of system services implemented in software having direct access and full control over a portion of system resources.
- CE 2 s are quite distinct from an operating system or specialized operating system and depending upon the particular embodiment may include one or more of the following features:
- a CE 2 may comprise both statically linked system code and data modules and application code and data modules; b. A CE 2 may lack the capability to load or to load and execute any other application c.
- the functional capabilities of a CE 2 may be strictly limited only to those services required by a particular application or small set of applications; d.
- a CE 2 typically falls far short of the capabilities expected of an operating system; specifically, in one embodiment, applications are limited to a single thread of execution in each processor controlled by the CE 2 ; e.
- the services interfaces of a CE 2 may be simple and specialized for each of one or a small set of particular applications, rather than being comprised by a more complex and general Application Programming Interface (API) for abroad class of applications.
- API Application Programming Interface
- Management strategies for system resources within a CE 2 sometimes differ entirely from those strategies adopted by traditional general- purpose operating systems; g. A CE 2 may utilize hardware capabilities not supported by a general- purpose or symbiotic general-purpose operating system; h. A CE 2 may make substantial use of hardware capabilities not well utilized by a general-purpose or symbiotic general-purpose operating system. i. The services provided to the application within a CE 2 may be designed to enable an application far more easily to recover and continue from a system error. j. According to one embodiment of the present invention, a general- purpose operating system at least temporarily relinquishes control of all or a portion of system resources associated with a computer system to one or more CE 2 s.
- a CE 2 may be booted on hardware directly.
- a general-purpose operating system may launch a CE 2 without ever taking control over the portion of system resources to be controlled by the CE 2 .
- both the general-purpose operating system and one or more CE 2 s may be booted into distinct hardware partitions such as those provided in the Hewlett Packard Superdome platform.
- CE s are typically specialized for a particular hardware platform.
- a CE 2 is non-portable and there are no general- purpose operating system abstractions interposed between the customized execution environment and the system resources allocated to the customized execution environment.
- system services provided by a CE will implement a simplified computational structure and/or an I/O structure that are tuned for a particular application.
- a CE 2 may take advantage of certain processor or other system resource features that are not exploited by the general-purpose operating system.
- a tuned CE 2 is provided to support a web edge engine, such as a web server, secure web server, proxy server, secure proxy server or other application or communication servers, to allow the web edge engine to drive the utilization of network connections as close as possible to 100%.
- offload board generally refers to a separate plug-in board, such as a separate plug-in board that may support higher level interfaces and employ additional processing cycles to deal with higher volume network or other processing loads. In one embodiment, such a board may be employed solely to assist in securely booting.
- PPA Parallel Protected Architecture
- SGPOS Sesmbiotic General-Purpose Operating System
- an operating system such as one of the principal general- purpose operating systems, which has been enhanced to include one or more of the following capabilities: (1) a mechanism to manage the resources of a computer system in cooperative partnership with one or more CE 2 s; (2) a mechanism to partition/compartmentalize system resources and transfer control of one or more partitions of system resources, including processors, physical memory, storage devices, virtual memory identifier values, I/O devices, and/or exception delivery, to one or more CE 2 s; and (3) a mechanism to allow communications between partitions of systems resources.
- SGPOSs might remain portable or could become specialized for a particular hardware platform.
- system resources generally refers, individually or collectively, to computational resources and/or other resources of a computer system, such as processors, physical memory, storage devices, virtual memory identifier values, input/output (I/O) devices, exception delivery and the like.
- web engine and “web edge engine” generally refer to hardware, firmware and/or software that support one or more web protocols.
- web protocols generally refers to current and future application layer networking protocols, including, but not limited to HyperText Transfer Protocol (HTTP), Secure HTTP (S-HTTP), Secure Sockets Layer (SSL),
- HTTP HyperText Transfer Protocol
- S-HTTP Secure HTTP
- SSL Secure Sockets Layer
- TCP Transport Control Protocol
- IP Internet Protocol
- TLS Transport Layer Security
- XML Extensible Markup Language
- SOAP Simple Object Access Protocol
- UDDI Universal Description, Discovery, and Integration
- DHTTP Dynamic Hossion Initiation Protocol
- HTTP/NG File Transfer Protocol
- FTP Trivial File Transfer Protocol
- TFTP Trivial File Transfer Protocol
- COPS Common Open Policy Service
- FANP Finger User Information Protocol
- IMAP4 Internet Message Access Protocol rev 4
- IP CD Internet Message Access Protocol version 4revl
- ISAKMP Internet Message Access Protocol version 4revl
- NTP Network Time Protocol
- POP3 Post Office Protocol version 3
- Radius Radius
- RLOGIN Real-time Streaming Protocol
- web resource generally refers to a network data object or service that can be identified by a Universal Resource Identifier (URI).
- web server generally refers to hardware, firmware and/or software that supports one or more web protocols and serves web resources, such as web pages and the output of web applications, to web users. Examples ' of currently available web servers include Apache available from The Apache
- Secure64TM web edge engines seek to offer the world's best performance and the world's best security. Secure64 web edge engines will scale seamlessly from appliances employing single or dual processors, to full web servers employing hundreds of processors and concurrently executing customer applications and dynamic content generators. Advanced content acceleration and cryptographic security and privacy protections will be provided throughout the product line. (SECURE64 is a trademark of Secure64 Software Corporation of Englewood, Colorado).
- Secure64 web edge engines will support a wide range of current and future web protocols. While for convenience, embodiments of the present invention are described herein with reference to exemplary web edge engines, such as application servers, web servers and proxy servers, the enabling technologies described herein are broad based, and widely applicable to a variety of other network products, including, but not limited to: content accelerators, caching accelerators, firewalls, smart routers, filters, gateways, firewalls, and tunnels. In addition, for sake of brevity, embodiments of the present invention are described with reference to specific computer architectures, such as the Itanium architecture that provides explicit instruction level parallelism and protection capabilities. Nevertheless, embodiments of the present invention are equally applicable to various other current or future computer architectures that support minimum Parallel Protected Architecture features. Design Principles
- the CE 2 relies upon the structure of a single-threaded application to control and balance the distribution of computational cycles to the application's various responsibilities.
- Computational resource sharing is at the granularity of a processor, rather than at the finer granularity of: a thread within a plurality of tasks within a plurality of processors.
- the system relies upon application and system control functions, each controlling one or more processors, to distribute and coordinate the work.
- Direct use of the Itanium atomic synchronization instructions provides the means for applications to synchronize such control.
- Current system utilization can be raised extensively by concurrently servicing several lGB/sec Ethernet connections.
- a recent study reported 95% central processing unit (CPU) utilization for concurrently servicing four 1 Giga-bit (GB)/sec connections on a two processor, 3 MHz Xeon system. When 10 GB/sec connections emerge, traditional system structures will be unable to cope with the resulting system overheads.
- ком ⁇ онентs At all privilege levels of the CE 2 architecture, software code images and data must be organized into protection domains called compartments. Data and instruction accesses within a compartment are enabled by the presence of a corresponding Itanium "Protection IDs" (PIDs). The contents of a protection ID register also can be set to prevent read, write, and execute access, in any combination, to code and data within a compartment. Compartmentalization provides strong security properties, as well as isolation of programming bugs that heretofore were untraceable.
- CE 2 design practices include specification and enforcement of minimum required access privileges for all code and data images within the system. Thus, code images may be executed, but never read or written. This makes it impossible for an attacker to gain or exploit access by modifying executable code.
- Software stacks may be read or written, but never executed. This makes it impossible for an attacker to execute a malicious payload from a software stack. Data areas may be read-only, write-only, or both readable and writable, regardless of the privilege level of the executing code. But data areas never can be executable. This makes it impossible for malicious code to be executed from a data area. Itanium RSE stacks will occupy memory that requires the highest privilege level to be read or written. All call return addresses will be saved in RSE stacks. This makes it impossible for an attacker to hijack control by modifying a call return address.
- Data areas and software stacks at no time will have execute permission. They will be set to write permission when being initialized, and then to read-only or to read- write permission as specified by the application. These permissions will be fully operative only when the corresponding protection ID does not disable the one or more of them. Thus, a data area may be read- write for some sections of code, and, at the same time, read-only for different sections of code. Separate software stack pages will be employed for each privilege level.
- RSE stacks have read- write permission, but with these permissions limited to privilege level zero (PLO). Pages of the RSE stack are contiguously allocated for each privilege level; access to these pages is protected by using a distinct protection ID for each privilege level. Scanning for circumventing application register instructions at manufacturing time can eliminate any executable code that might circumvent this protection. 12. Reserve PLO for Platform Mechanism Control Codes that Must Use Privileged Instructions.
- Privileged instructions are essential for the service's correct function. Only such services, called “Platform Control Services” (PCSs), shall execute in a compartment at PLO. Code executing at PLO, is able to exert complete control over the hardware. There is no defense whatsoever against malice in PLO code. It follows that such code must be minimized and known to be correct at the hardware instruction level.
- a CE 2 design permits installation, configuration, self-test, and operation in less than 30 minutes. Administration may be performed via a network interface in a different computer. Operator graphical user interfaces (GUIs) must permit easily understood inspection and modification of configuration parameters, and continuous monitoring of system load and performance.
- GUIs graphical user interfaces
- the interface from a systems administrator or operator will be secured by cryptographic authentication.
- Two- or three-factor identity authentication, conducted over an SSL connection may be employed.
- a separate token-pair or token-triple may be required to furnish root keys and initial random number seed data to the system.
- CE 2 Provide services within a CE 2 that enable an application, in the event of a system error, readily to determine the cause of the event, to log the occurrence of the event, to restore a operational state, and to resume processing or restart itself.
- a simple reset-and-restart system service should be provided.
- An exemplary computer system 100 representing an exemplary server, such as a 2-way HP Server rxl600, a 4-way HP Server rx5670, an HP Server rx2600, or the like, with which various features of the present invention may be utilized, will now be described with reference to Figure 1.
- the computer system 100 comprises a bus 130 or other communication means for communicating data and control information, and one or more processors 105, such as Intel® Itanium® or Itanium 2 processors, coupled with bus 130.
- Computer system 100 further comprises a random access memory (RAM) or other dynamic storage device (referred to as main memory 115), coupled to bus 130 for storing information and instructions to be executed by processor(s) 105.
- Main memory 115 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor(s) 115.
- main memory 115 may be partitioned via a region-identifier-based memory partitioning mechanism. The resulting partitions may be assigned to one or more processors for exclusive access by such processors using a hardware-based isolation mechanism, such as associating areas of memory with protection keys.
- Computer system 100 also comprises a read only memory (ROM) 120 and/or other static storage device coupled to bus 130 for storing static information, such as cryptographic digital signatures associated with initial code and data images of one or more CE 2 s, customized applications, and operating system, and instructions for processor(s) 105.
- ROM read only memory
- a mass storage device 125 such as a magnetic disk or optical disc and its corresponding drive, may also be coupled to bus 130 for storing information and instructions, such as an operating system loader, an operating system, one or more customized applications and associated CE s, initialization files, etc.
- One or more communication ports 110 may also be coupled to bus 130 for supporting network connections and communication of information to/from the computer system 100 by way of a Local Area Network (LAN), Wide Area Network (WAN), the Internet, or the public switched telephone network (PSTN), for example.
- the communication ports 110 may include various combinations of well-known interfaces, such as one or more modems to provide dial up capability, one or more 10/100 Ethernet ports, one or more Gigabit Ethernet ports (fiber and/or copper), one or more network protocol offload boards, or other well-known network interfaces commonly used in internetwork environments.
- the computer system 100 may be coupled to a number of other network devices, clients, and/or servers via a conventional network infrastructure, such as an enterprise's Intranet and/or the Internet, for example.
- operator and administrative interfaces 135, such as a display, keyboard, and a cursor control device, may also be coupled to bus 130 to support direct operator interaction with computer system 100.
- Other operator and administrative interfaces can be provided through network connections connected through communication ports 110.
- removable storage media 140 such as one or more external or removable hard drives, tapes, floppy disks, magneto-optical discs, compact disk-readonly memories (CD-ROMs), compact disk writable memories (CD-R, CD-RW), digital versatile discs or digital video discs (DVDs) (e.g., DVD-ROMs and
- DVD+RW DVD+RW
- Zip disks or USB memory devices, e.g., thumb drives or flash cards, maybe coupled to bus 130 via corresponding drives, ports or slots.
- USB memory devices e.g., thumb drives or flash cards
- Figures 2A and 2B conceptually illustrate partitioning of system resources.
- the rows represent exemplary hardware resources
- the columns represent operating environments
- the Xs identify to which operating environment a particular hardware resource or portion of such resources are allocated.
- the Xs in a particular column represent the partition of system resources allocated to the corresponding operating environment.
- the SGPOS has been allocated one or more processor units, one or more banks/ranges of memory, one or more peripheral devices and associated adapter cards and one or more sets of logical resources. That is, a partition of system resources comprising the aforementioned lists of resources has been identified for the exclusive use of the SGPOS. Similarly, in this example, a partition of system resources comprising one or more processor units, one or more banks/ranges of memory, one or more LAN adapter cards and one or more sets of logical resources has been identified and allocated for the exclusive use of the C 2 E 2 !. Finally, the C 2 E 2 has been allocated for its exclusive use and management, one or more processor units, one or more banks/ranges of memory, one or more peripheral devices and associated adapter cards, and one or more sets of logical resources.
- a particular type of hardware resource may be allocated to more than one operating environment, there is no requirement that such resources be divided equally.
- an X in the Processors row for each of the SGPOS, C 2 E 2 ⁇ , and C 2 E 2 columns indicates at least one processor unit (typically a whole processor) is partitioned or allocated to that particular operating environment, but the number of processor units partitioned to each operating environment is independent of the number partitioned to the others except for the fact that all of the operating environments are drawing from the same limited pool of available hardware resources.
- system resources be divided into uniform or equally provisioned partitions with respect to any individual system resource or collection of system resources.
- partitions may be static or dynamic.
- the number and/or type of logical and physical system resources associated with a particular partition may be dynamically reallocated to address needs of the CE 2 s or SGPOS or in response to the launching of a new CE 2 or termination of an existing CE 2 , as examples.
- the resident operating system may remain active and a secure- platform interface may be employed to provide the desired level of isolation among partitions, such as the combined-hardware-and-software secure-platform interface described in US Patent Application No. 10/118,646 entitled “Secure Machine Platform that Interfaces to Operating Systems and Customized Control Programs” published on December 19, 2002 as Publication No. 2002/0194389 Al, (the "'646 application") which is hereby incorporated by reference in its entirety.
- Hardware partitioning capabilities such as those provided by the HP Superdome platform provide still a third alternative to effect full isolation among partitions. With these means partitions maybe statically configured by a system administrator, rather than be constructed dynamically by the SGPOS. Although the partitions are less readily modified, the isolation can be fully enforced by hardware.
- the partitioning of system resources depicted in Figure 2B is representative of a particular state of system resource allocation in which the SGPOS is dormant. Since the SGPOS has no processor units allocated to it, it cannot be running any processes. Other system resource allocation configurations are also consistent with the SGPOS being dormant. For example, when no system resources are allocated to the SGPOS (when the SGPOS column is empty), the SGPOS is dormant and one or more CE 2 (s) would have exclusive control and management of the system resources. Conversely, when the columns associated with the C E (s) are empty, such as during boot processing or after termination of the C 2 E 2 (s) and release of their partitions back to the SGPOS, then the SGPOS has exclusive control and management of the system resources.
- Figure 3 conceptually illustrates relationships among an SGPOS 320, system resource partitions 310, and a C 2 E 2 330 according to one embodiment of the present invention.
- embodiments of the present invention support the creation of a secure operating environment that is separate and distinct from the resident operating system.
- a portion of system resources is assigned to the secure operating environment and placed under its direct and exclusive control. Remaining portions of the system resources may be assigned to one or more other secure operating environments and/or retained by the resident operating system.
- the resident operating system may surrender control of substantially all of the system resources of a computer system and place them under the full control of a secure operating environment.
- a computer system 300 is conceptually illustrated after partitioning and allocation of its resources into two system resource partitions 310, i.e., SGPOS resources 321 and C 2 E 2 resources 331. While for ease of discussion and simplicity only two partitions of system resources are illustrated, it is to be understood that embodiments of the present invention are equally applicable to an arbitrary number of partitions allocated to an arbitrary number of SGPOSs and/or CE 2 s. Additionally, while each column could comprise multiple possibly mutually isolated partitions, for purposes of this discussion, each column will be discussed as if it were a single partition.
- the vertical double-ended arrows represent communications between layers within a partition (e.g., intra- partition communications) while the horizontal double-ended arrows represent means of communication between the partitions (i.e., inter-partition communications).
- the means of communication provided for inter-partition communications may allow communications (1) among all partitions, (2) strictly between partitions remaining under the control of the SGPOS 320 and partitions under control of a CE 2 , such as C E 330, or (3) controlled according to other criteria.
- the inter-partition communications is illustrated in the present embodiment as taking place between applications, it is worth noting that such communications may involve or be via services provided by the SGPOS Kernel Mode Services 324 and services provided by the non-portable customized control and services 332.
- inter-partition communication may be employed for multiple purposes, including system initialization, configuration, and control; system debugging and monitoring; communication with network control and monitoring systems such as HP's OpenView or IBM's Tivoli; invocation of operating system, application (e.g., user application or customized application), or CE 2 services from a different environment; and shifting the allocation of hardware and/or logical resources among CE 2 (s) and/or the SGPOS 320.
- Inter-partition communications may be implemented by various well-known techniques, such as: shared virtual memory, shared one-way virtual memories (one environment only can write; the other only can read), remote procedure call, software interruptions, and internal messages.
- the simplified conceptual representation depicted in Figure 3 is illustrative of the multiple levels of abstractions that are typically logically interposed between applications, such as arbitrary user applications 328, and the underlying system resources, such as SGPOS resources 321, in conventional operating systems, such as the ULW operating systems.
- Abstractions such as virtual memories, tasks, files and file systems, sockets and sockets interfaces, network stacks, etc., implemented by user mode services 326, kernel mode services 324 and OS kernel 322, are a significant contributing factor to unacceptably high overhead for performance-critical applications, such as high performance web engines.
- CE 2 s such as C 2 E 2 330
- C 2 E 2 330 may avoid consensus high overhead constructs and abstractions in favor of implementing computational and/or I/O structure that are simplified and optimized for a particular hardware platform and/or application.
- the non-portable customized control and services 332 offered by C 2 E 2 330 may directly control C 2 E 2 resources 331, the underlying system resources 310 allocated for exclusive use and control by C 2 E 2 330, and may take advantage of certain processor or other system resource features that are not exploited by the SGPOS 320.
- CE 2 s such as C 2 E 2 330
- general-purpose capabilities such as system administration, system boot and configuration initialization, and partitioning of system resources, and generation of web content that are already present in the SGPOS 320
- the C 2 E 2 s may rely on the SGPOS to provide such general-purpose capabilities.
- system resource partitions 310 i.e., SGPOS resources 321 and C 2 E 2 resources 331, are depicted as equal sized boxes, potentially implying identical characteristics, there is no requirement that the system resources of the computer system 300 be divided into uniform or equally provisioned partitions with respect to any individual system resource or collection of system resources.
- one partition may include X processors, Y MB of physical memory, and Z I/O devices while another partition may include R processors, S KB of physical memory, and T I/O devices.
- the system resource partitions 310 may be static or dynamic.
- Figure 4 is a flow diagram illustrating SGPOS processing according to one embodiment of the present invention.
- the SGPOS includes means to mange the system resources of a computer system in cooperative partnership with one or more CE 2 s.
- the SGPOS also includes means to partition system resources, including, but not limited to, processors, physical memory and storage devices, virtual memory identifier values, I/O devices, and exception delivery. These means also cover the case in which all or substantially all system resources are transferred to one or more CE s. In this case, the SGPOS remains in a state of passivity until such time as a CE returns control of a partition of resources to the SGPOS.
- the SGPOS further includes means to initialize and invoke a CE 2 , to inform the CE of the system resources and/or system management duties being placed under its direct and full control, and to employ hardware isolation and protection mechanisms to protect the SGPOS environment from CE 2 s.
- these means also include the ability to extend a chain of trust into the CE 2 s, by validating the initial code and data images of the CE 2 s, associated non-portable customized control and services, and customized applications, using cryptographic digital signatures.
- the SGPOS processing generally breaks down into a pre-CE 2 stage (before any CE 2 s are operational) and a CE 2 operational stage (during which at least one CE is running and retains control of a portion of system resources).
- the pre-CE stage is represented by blocks 410 through 440 and the CE 2 operational stage is represented by a loop among blocks 440 through 480.
- the pre-CE 2 stage involves allocating available system resources among the SGPOS and one or more CE 2 s and launching the one or more CE 2 s.
- the SGPOS (1) responds to requests from the one or more CE s, (2) potentially reallocates system resources, initializes and launches new or reestablished CE 2 s, and (3) reincorporates system resources relinquished by CE 2 s.
- SGPOS processing commences at block 410 where system boot is performed.
- System boot processing typically includes performing processor self-test routines and executing firmware instructions stored in a ROM to cause an operating system loader program to be read from a mass storage device and executed.
- the system boot process maybe a normal boot in which the SGPOS relinquishes a subset of system resources or all system resources to one or more CE 2 s.
- the system boot process may be a partial boot in which the SGPOS never obtains control over system resources to be controlled by the CE 2 s.
- the SGPOS and one or more CE 2 s are part of a secure system. In a secure system, it is important to know that the software image controlling the system resources is complete, correct, and has not been subjected to any alteration or other form of tampering. Consequently, in such an embodiment, the system boot is a secure boot process to support the extension of a chain of trust into the CE 2 s.
- Figure 19 of the '646 application illustrates a secure boot process based upon digital signatures.
- the initial firmware image digital signature is validated by hardware.
- the digital signature of each subsequent firmware or software image is validated by its preceding firmware or software image before control is passed to that subsequent image. In this manner, a chain of trust can be constructed, rooted in the initial firmware image, and extending through every image of firmware, operating system software, and application software.
- the SGPOS receives information regarding one or more C E s that are to receive control of a portion of the system resources.
- the SGPOS may read an initialization file or partition descriptor that identifies the desired allocation of system resources and the code images of non-portable customized control and services for the one or more C 2 E 2 s.
- the partition descriptor information may be provided by way of operator directives.
- the images for the C 2 E 2 s and associated non-portable customized control and services may be loaded and authenticated by validating the digital signatures of the software images.
- the SGPOS partitions system resources in accordance with the partition descriptor and then isolates those of the system resources that are to remain under its control to protect the SGPOS resources, if any, from the C 2 E 2 (s).
- the C 2 E 2 the C 2 E 2
- the SGPOS provides interrupt handlers for all interrupt requests originating from within its partition. Based on the system resources retained by the SGPOS, the SGPOS may disable interrupts, update appropriate interrupt vectors, and then enable interrupts. For example, interrupt vectors associated with external interrupt requests corresponding to hardware system resources partitioned to the SGPOS maybe updated in the interrupt vector table to identify an address of an appropriate interrupt handler routine in the SGPOS 's partition, while interrupt vectors associated with external interrupt requests corresponding to hardware system resources partitioned to a CE 2 may be masked or otherwise temporarily disabled until the CE 2 makes appropriate changes to the interrupt vector table to direct such interrupt requests to an appropriate handler routine in its partition.
- the SGPOS may also reconfigure I/O.
- such reconfiguration includes forming appropriate associations between reserved areas of main memory in the SGPOS partition with memory-mapped I/O devices in the SGPOS partition.
- a network device may be reconfigured so that data written to the device via a reserved area of main memory addresses is copied by memory mapping hardware to corresponding device controller memory addresses, and data read from the device via a reserved areas of main memory addresses is loaded into designated processor registers by the memory mapping hardware. Similar 9
- I/O reconfiguration may be performed by the CE (s) during their initialization processing.
- isolation of the system resources to be retained by the SGPOS may be achieved by utilizing one or more of the hardware or software isolation and protection capabilities discussed earlier, such as quiesceing the SGPOS, employing a secure-platform interface, or utilizing hardware platform partitioning.
- the SGPOS fences off memory resources and other system resources that are to be used exclusively by the SGPOS or otherwise limits access to
- the SGPOS may allocate physical memory and sets of region identifiers to the CE 2 (s) and set memory attributes accordingly to associate the regions of memory with the corresponding system resources that are to be placed under the control of the CE 2 (s).
- memory will be partitioned into pages (i.e., memory pages).
- a memory page is a basic unit of memory with respect to I/O operations, virtual- memory-to-physical-memory mapping, isolation and protection attributes, and other types of operating system activities.
- exclusive domains may be enforced with region identifier and protection-key-based memory partitions.
- region identifier allocation, protection identifier allocation, memory page access rights values, and protection-key-based memory partitions particular virtually addressed areas of memory, such as groups of discontiguous or contiguous memory pages, can be effectively associated with one or more processors that are to be placed under the control of one or more CE s.
- memory protection domains maybe implemented as described in Witchel et al., "Mondrian Memory Protection", October 2002, ASPLOS-X, Tenth International Conference on Architectural Support for Programming Languages and Operating Systems.
- the SGPOS transfers full control of one partition of system resources to a C 2 E 2 by invoking the C 2 E 2 and communicating to the C 2 E 2 the system resources being placed under its control. According to this example, it is the C 2 E 2 's responsibility to appropriately secure its own partition by isolating itself from the SGPOS and other C 2 E 2 s that may concurrently run within other system resource partitions.
- one or more C E s are operating and processing loops among blocks 440 through 480 until all C 2 E 2 s terminate and SGPOS processing is terminated.
- the SGPOS may be placed in a dormant state after it has initialized and launched one or more CE 2 s. In the present embodiment however, after initializing and launching one or more C 2 E 2 s, the SGPOS continues to decision block 450 and remains responsive to C 2 E 2 and operator requests.
- the SGPOS determines that nature of an outside request
- the SGPOS in response to a request from a C 2 E 2 , the SGPOS prepares the
- the SGPOS allocates system resources for the new C 2 E 2 and then proceeds to block 440.
- the SGPOS in response to return of system resources initiated by a C 2 E 2 , the SGPOS, with the cooperation of the C 2 E 2 , reincorporates the system resources into those under its control.
- the SGPOS and C 2 E 2 may reintegrate interrupts and pass responsibility for subsequent management of I/O devices to the SGPOS by reconfiguring I/O.
- FIG. 5 is a simplified block diagram conceptually illustrating SGPOS boot
- a multiprocessor server 500 In this simplified view of a multiprocessor server 500, only two processors (i.e., SGPOS processor 510 and C 2 E 2 processor 515), a mass storage device 520, such as an internal hard drive, and memory 560 are shown.
- the mass storage device 520 stores instructions and data for at least one SGPOS 540, at least one customized application 530, and at least one C 2 E 2 550 that implements a computational and/or I/O structure that is tuned for the customized application 530 and takes advantage of certain processor or other system resource features that are not exploited by the SGPOS 540.
- the mass storage device 520 also stores digital signatures 545 and 546 for the SGPOS loader and the SGPOS images, a digital signature 535 for the customized application 530, a digital signature 555 for the C 2 E 2 550, and an optional initialization file or partition descriptor 541 for communicating to the SGPOS 540 information about the existence and system resource requirements of C 2 E 2 550 and providing information regarding partition configuration.
- the SGPOS processor 510 and C E processor 515 may use the same operating system image or boot independently (e.g., separately load an operating system loader program and the same or different operating system images as well as verify digital signatures 545 and 546 for the SGPOS loader and SGPOS images).
- One processor, the SGPOS processor 510 may remain under the full control of the
- the SGPOS 540 and the other processor, the C E processor 515 may be placed under the full control of the C 2 E 2 550.
- the SGPOS 540 and C 2 E 2 will typically each isolate their respective system resource partitions, including, for example, memory ranges 570 and 580, using hardware isolation.
- memory 560 is represented as a number of pages (e.g., memory page 565).
- Various advanced memory protection architectures provide isolation mechanisms, such as region identifiers, protection identifiers, and memory page access rights.
- An appropriate identifier value 566 may be associated with a memory page to assign it to a particular system resource partition.
- Such identifier values may be directly incorporated as fields within the data structures that describe the virtual mappings to the memory pages, as well as recorded in associated memory control data structures. While in this example images are loaded from a local storage device, in alternative embodiments, such as in an environment in which a computer system is booted over a network (e.g., an IP network) without access to an internal hard disk, it is contemplated that one or more of the images could be provided via communications ports from one or more network accessible storage devices.
- a network e.g., an IP network
- FIG. 6A conceptually illustrates a computer system 600 configured to provide a secure high-performance processing environment for a web server according to one embodiment of the present invention in which the SGPOS 625 retains control of a partition 629 of system resources.
- the system configuration depicted is illustrative of an exemplary multi-partition configuration that is supported by the existence of appropriate hardware-based isolation features in the processor, associated chipset or an intermediate interface, such as the secure-platform interface discussed above, interposed between the operating environments (e.g., the operating system and CE 2 (s)) and the system resources.
- the operating environments e.g., the operating system and CE 2 (s)
- platform hardware partitioning or a more typical single-partition configuration such as that illustrated in Figure 6B, is expected to be the configuration of choice for secure systems.
- the computer system 600 is conceptually illustrated after allocation of its system resources 610 (in accordance with the processing described with reference to Figure 4 and Figure 5, for example) between partition 629 associated with SGPOS 625 which provides services to a dynamic content generator 620, and partition 639 associated with CE 2 635, which provides services to a secure web server 630.
- the CE 2 635 is not limited to the portability constraints imposed on the SGPOS 625 and general- purpose operating systems as a whole, it can implement a computational and/or 17O structure that are simplified and optimized for the particular underlying hardware platform (e.g., one or more Intel Itanium 2 processors and associated chipsets) and/or a particular customized application (e.g., a secure proxy server or a secure web server 630).
- a particular underlying hardware platform e.g., one or more Intel Itanium 2 processors and associated chipsets
- a particular customized application e.g., a secure proxy server or a secure web server 630.
- the present example illustrates one possible system configuration, which when employing future hardware isolation capabilities or current hardware platform partitioning, allows web server security and performance to be enhanced while maintaining the ability to run other customer applications by supporting the concurrent and cooperative execution of a resident operating system, the SGPOS 625, and an operating environment, the CE 635, that is separate from the resident operating system.
- Figure 6B conceptually illustrates a computer system 600 configured to provide a secure high-performance processing environment for a web server 630 according to an alternative embodiment of the present invention.
- the system configuration depicted is illustrative of a possible system configuration in which the resident operating system, after initializing and launching the CE 2 635, surrenders complete control of all or substantially all of the system resources 611 to the CE 2 635 and is then placed in a dormant state from which it can be revived upon release of the system resources 611 by the CE 2 635.
- Either hardware platform partitioning or a system configuration in which the SGPOS 625 is quiesced and full control of all or substantially all of the system resources 611 is placed in one or more CE 2 s, are expected to be the predominate configurations until the anticipated hardware-based isolation features are both available and achieve industry acceptance.
- current or future advanced memory protection architectures such as region identifiers, protection identifiers, and memory page access rights, may be used as discussed above. Addressing and Memory Management
- Figure 9 A conceptually illustrates the organization of physically addressed sections of code or data by a first generation general-purpose operating system, such as the DOS operating system for the IBM System/360. Sections 910-950 were placed contiguously in physical memory 900.
- Figure 9B conceptually illustrates the organization of virtually addressed sections 910-950 of code or data, and their mappings (as illustrated by the arrows) to physical pages 908, by traditional general-purpose operating systems, such as the ULW systems.
- operating systems for nearly all pages, select a relatively small, fixed page size (illustrated by dotted-lines 960), often 4KB (4096 bytes) or 8KB (8192 bytes), and cover larger virtually addressed sections of code or data by using many such contiguously addressed pages 910-950.
- Each of the pages 910-950 may be mapped to any one of the physical pages 908 (P0-P11).
- Traditional operating systems also may employ a smaller number of much larger pages for specific purposes, such as mapping an entire section of an operating system or a display buffer.
- a CE 2 operates entirely in virtual addressing mode.
- the use of pages as illustrated in Figures 10A and 10B is quite different from that employed by traditional general-purpose operating systems.
- the virtual address translation parameters for each page also are specified by the Itanium architecture to include two types of memory access protection.
- the first access protection is called “Page Access Rights” (AR), encoded by a three-bit access type field and a two-bit page privilege level field as shown in the access rights table 800 in Figure 8A. These fields limit permissible memory accesses to the page to defined subsets of read, write, and execute actions at particular privilege levels 830.
- the second access protection is called a "Protection Key” (PK).
- a protection key is 24 bits in length in an Itanium 2 processor, providing 16,777,216 distinct key values.
- PLRs Protection Key Registers
- Values in the PKRs 850 can be set only by code operating at the highest privilege level (PLO) of the processor.
- the values in the PKRs 850 include a protection key 860, three bits 870, 872, and 874 which, when set, disable all execute, read, and write accesses respectively to the page, and a valid bit 880.
- ARs and PKs, together with processor privilege level (PL) can be used to enforce fine-grained access control to all pages in memory.
- pages can be grouped into compartments, each identified and protected by a distinct PK value, in which execute-only, read-only, and write-only accesses can be controlled in any combination for each page.
- TLBs Translation Lookaside Buffers
- a TLB contains a page's virtual and physical page addresses, and all associated translation parameters such as ARs and PKs. If the processor hardware accesses a virtual address that is not then contained in a TLB, a "TLB miss" occurs, and hardware and/or software must (1) find the translation for that virtual address from a set of tables in memory that specify virtual-to-physical translations; (2) insert the needed translation into a TLB; and (3) re-execute the memory reference instruction. For Itanium embodiments of the present invention the miss sometimes can be handled entirely by hardware, and, at other times, a software exception occurs requiring software to resolve the TLB miss.
- TLBs are complex and highly optimized hardware, modern processors have only a limited number of TLBs - perhaps ⁇ 100 for instruction virtual addressed page translations and ⁇ 100 for data virtual addressed page translations. For systems using 4KB or 8KB pages, this limited number of TLBs restricts the memory that can be addressed without a TLB miss to -400KB or -800KB respectively. For physical memories reaching a few gigabytes in size, and on-chip caches reaching 3, 6, 9, or more megabytes, TLB misses can be expected to occur frequently. For the Itanium embodiment of the present invention, the CE 2 pages are organized as follows, and TLB misses can be eliminated entirely.
- the Itanium 2 processor implements 11 page sizes: 4KB, 8KB, 16KB, 64KB, 256KB, 1MB, 4MB, 16MB, 256MB, 1GB, and 4GB.
- the physical memory map is determined, according to one embodiment, the physical memory is organized into lists of the largest possible page size, using only the nine page sizes of 16KB or larger. The largest possible pages are allocated for application BSS working storage. This storage is set to zero when the CE 2 is initialized. Some 16KB pages normally are allocated for sections of software and Intel Architecture-64 (IA-64) "Register Save Engine” (RSE) stacks, unless larger pages are required by a particular CE 2 application. Finally, single or up to three pages are allocated to contain each of the system and application code and data sections comprised by the CE .
- Figure 10B is an excerpt illustrating an actual organization of physical pages according to one Itanium embodiment of the present invention.
- the physical page organizations for three separate contiguous ranges of physical addresses are shown in 1070-1090. Each line shows the physical address and size of the organization that results in the largest possible pages.
- the physical page addresses are hexadecimal numbers. If during allocation of physical pages for code and data sections a particular page size in the page lists is exhausted, the next larger page is partitioned into four pages of the next smaller size, recursively if needed.
- Each page is assigned the desired AR and PK values, resulting in a set of compartments, in each of which may be executable code pages and/or data pages. This minimizes the number of pages required, and provides fine-grained access control to each compartment and page.
- FIG. 10A conceptually illustrates the mapping of virtually and physically addressed pages in an Itanium embodiment of the present invention. Except for the cases where contiguous virtual addresses are required between particular pages, such as software stack pages, where each contiguous page must have a different access privilege level, each page is assigned a virtual address that begins on a large aligned boundary, such as one-gigabyte or four-gigabytes.
- FIG. 10A For four-gigabyte virtual address alignments.
- a four-gigabyte alignment permits any of the eleven page sizes supported by the Itanium 2 processor to be mapped to any such virtual address boundary. It also means that one cannot in a loop address beyond the boundaries of a page smaller than 4GB without causing an addressing exception.
- virtually addressed pages 1010-1050 each begin at a four-gigabyte boundary and extend to the corresponding dashed line.
- Page 1040 a 4GB page beginning at virtual address (N+3)x4GB, there is no dashed line.
- Virtually addressed pages 1010-1050 are mapped to physically addressed pages 1010-1050 within physical memory 1008. Each virtual page is mapped to a physical page of exactly the same size as shown by the arrows.
- FIGS. 11A and IIB are simplified diagrams of the pages, with associated protection settings, allocated for SWSs and RSESs in an Itanium embodiment of the present invention.
- SWS virtual addresses 1100 grow from the top of the stack, at the highest virtual address toward lower virtual addresses.
- the SWS in the present example comprises a set of pages 1110-1140 suitably sized for the requirements of the particular application or set of particular applications that execute within a particular CE 2 .
- these 16KB pages 1110-1140 are assigned contiguous virtual addresses shown by the arrows pointing to pages 1110-1140.
- each privilege section 1110, 1120, 1130 and 1140 of the SWS requires only a single page, in other cases, each privilege section may include up to 3 virtually addressed pages 4 . All privilege sections 1110- 1140 have read-write, but never execute, access rights at their respective hardware privilege levels, PL3 for
- FIG. 11 A also illustrates the mappings of the virtually addressed SWS pages 1100 (1110-1140) to physical pages 1108 (P0-P5) as shown by the arrows.
- an RSE stack comprises a set of pages 1115-1145 sized suitably for the requirements of a particular application or set of applications that execute within a particular CE .
- these 16KB pages 1115-1145 are assigned contiguous virtual addresses shown by the arrows pointing to pages 1115-1145.
- the required privilege level is set to PLO for all RSE privilege sections 1115-1145. All RSE privilege sections 1115-1145 have read- write, but never execute, access rights at PLO.
- the privilege level for accessing RSE stack pages 1105 is a separate privilege level from that of executing code. This is discussed in more detail below.
- each privilege section 1115, 1125, 1135 and 1145 of the RSE stack requires only a single page
- each privilege section may include up to 3 virtually addressed pages. Access to the more privileged pages of the RSE is controlled by assigning distinct protection key values to each privilege level.
- the contents of the PKRs are modified to restrict RSES page accesses only to authorized privilege levels.
- the lowest virtually addressed privilege section 1115 will be protected by a PK present in a PKR for all privilege levels.
- the next higher virtually addressed privilege section 1125 is protected by a PK present in a PKR only for code operating at PL2, PLl, or PLO.
- the subsequently higher virtually addressed privilege section 1135 is protected by a PK present in a PKR only for code operating at PLl or PLO.
- the highest virtually addressed privilege section 1145 is protected by a PK present in a PKR only for PLO.
- Figure 1 IB also illustrates the mappings of the virtually addressed RSE pages 1105 (1115-1145) to physical pages 1118 (P0-P5) as shown by the arrows.
- the system code may be designed to clean registers containing sensitive values prior to returning to less privileged code.
- registers For Itanium processors, up to six registers can be cleared in a single cycle. Normally, by employing otherwise unused instruction slots register clearing can be accomplished without requiring more than a few extra cycles.
- a separate SWS and/or RSES may be allocated for interruption control flow within the system.
- interruption confrol flow can be deferred until control returns to an appropriate privilege level, no separate SWS or RSE stack may be required.
- interruption code at a lower privilege level may be invoked as a system injected call at the lower privilege level, prior to returning normal control to the lower privilege level. In this manner, the single SWS and RSES can be used both for normal and for interruption processing.
- the privilege level for access to RSE stack pages is contained in a separate Itanium application register named the "Register Stack Configuration Register” (AR.RSC), and the virtual address to which the next register engine store will take place is contained in an Itanium application register named the "RSE Backing Store Pointer for Memory Stores” (AR.BSPSTORE).
- AR.RSC Register Stack Configuration Register
- AR.BSPSTORE RSE Backing Store Pointer for Memory Stores
- the instructions to modify the AR.RSC and AR.BSPSTORE application registers can be executed at PL3, the lowest hardware privilege.
- the AR.RSC mode field is set non-zero, any attempt to modify the AR.BSPSTORE register generates a detectable hardware exception.
- the protection strategy adopted for a CE 2 is to initialize the AR.RSC privilege level to PLO, and the AR.RSC mode field to 0x3. Because the CE 2 construction process has visibility to all executable code, the executable code will be scanned to assure the absence of any non-PLO instructions that would modify the AR.RSC or AR.BSPSTORE registers.
- Memory allocation CE services are provided to allocate and free working memory within the BSS data pages, uninitialized read-write data pages.
- BSS data pages are assigned contiguous virtual addresses. They are set to zero when the CE 2 is first loaded.
- the virtual address assignment strategy for pages permits the very largest pages to be used to compose the heap.
- For each CE 2 an allocation-unit size for allocating virtual memory within the heap is selected that is suitable for the application. This allocation-unit size may differ for each application.
- the service calls to allocate and free memory deal only with contiguous multiples of this defined allocation-unit size.
- the data structures controlling virtual memory allocation within the heap are maintained in an entirely separate page, and can be made very compact.
- the bookkeeping data structure for allocation of each allocation unit sized chunk of memory required only 2.5 bits.
- the isolated heap allocation control data structure cannot be contaminated by any stores in the application, and can be used to determine the exact memory allocation state in the event that an application finds it necessary to undertake recovery and resume measures.
- a CE provides only a single thread for application execution on each processor. No other application scheduling or dispatching mechanism is provided. The single thread of execution on each processor persists as control on a particular processor flows back and forth among the application code and more privileged system service codes. This single thread also persists as control flow passes to exception handling routines, interrupt service routines, and deferred interrupt service routines within the application and system components.
- the application component of a CE is responsible for scheduling and controlling its work, whether executing on a single processor or executing on more than one processor.
- the application itself is responsible for coordination and synchronization among these processors.
- Such synchronization may be accomplished by direct use of the atomic operations provided by the hardware (such as the Itanium exchange, compare-and- exchange, or fetch-and-add hardware instructions), or by a software-defined lock hierarchy implemented by employing the atomic instructions.
- the atomic instructions may occur in assembly language subroutines, or may be specified using compilers that permit in-line assembly language statements. As shown in Figure 15, each processor may have its own software and RSE stacks 1501, 1502 and 1511, 1512.
- Memory addressability to each page can be local to a specific processor 1504 and 1514 or shared among all processors 1505, 1508 and 1515, 1518.
- Application code images also can be local to a specific processor or shared among all processors 1503 and 1513. System services code normally would be shared by all processors 1506,
- System service data also maybe local or shared 1507, 1517.
- Figure 15 also illustrates the mappings of virtual addresses in two processors 1500 and 1510 to physical pages 1520 (P0-P10).
- FIG. 13 is a simplified diagram conceptually illustrating application logic flow using a priority commutator, according to one embodiment of the present invention.
- decision block 1310 a determination is made regarding the occurrence of a network I/O event. If a network I/O even has occurred, control flows to block 1320 where the necessary processing required as a result of the network I/O event occurs. Once the state is set to show that such processing has completed, control from block 1320 returns to decision block 1310. It is for this reason that this control flow structure is referred to as a "priority" commutator. It causes the processing for the highest priority event, if present, to be performed first.
- decision block 1330 a determination is made regarding the occurrence of a timer tick. If a timer tick has occurred, control flows to block 1340 where the necessary processing required as a result of the timer tick occurs. Once the state is set to show that such processing has completed, control from block 1340 returns to decision block 1310.
- decision block 1350 a determination is made regarding the issuance of an operator command. If an operator command has been issued, control flows to block 1360 where the necessary processing required as a result of the command occurs. Once the state is set to show that such processing has completed, control from block 1360 returns to decision block 1310.
- the above events are illustrative of a larger set of potential occurrences.
- the control flow logic illustrated by blocks 1310-1360 in the above examples maybe continued for all such events that may occur for a particular CE 2 .
- the decision pattern continues for application tasks. In the present example, only two such tasks, called high priority and low priority are shown. An application normally would have many additional tasks.
- decision block 1365 a determination is made regarding the presence of a high priority task on the application work queue. If such a task is present, control flows to block 1370 where the necessary processing occurs. Once the state is set to show that such processing has completed, control from block 1370 returns to decision block 1310.
- Single-thread control structures such as the one illustrated in Figure 13, permit an application to deal both with normal application tasks as well as tasks that occur as a result of events external to the application. Similar structures normally also may be employed at other privilege levels of the system. Such structures also enable an application to contain sections that are entered only as a result of the occurrence of exceptions or interrupts.
- Such interruptions include those that occur at regular elapsed time intervals of a system clock, those that occur as a result of completion or other signals resulting from one or more I/O operations, those that occur as a result of a system operator command, and those that occur as a result of a detected system error.
- the application section is invoked soon after the occurrence of the interruption.
- the application normally would set the minimal control state and status information needed to cause its work-scheduling algorithm, once the application resumed normal processing, to deal more fully with the consequences of the event.
- the application normally would perform necessary recovery processing, calling upon any needed CE 2 system services, to restore a working application state, or possibly would invoke a reset-and-restart system service.
- the application code image is prefixed by a CE 2 vector of instructions called an "Entry Vector" (EV).
- EV Entry Vector
- Each slot in the EV corresponds to a particular exception, interrupt, operator confrol signal, or other system event.
- the instructions in each position of the EV send confrol to the proper point in the application or system for handling the event.
- Each EV is tailored for a specific application. If, for example, an application section has been provided to respond to operator commands, the instructions in the corresponding EV entry would send confrol to that application section.
- One defined EV entry is used to begin execution of the application; another is provided to cause the application to terminate; others send control to application sections that must respond to exceptions and/or interrupts. If no application action is provided for a particular EV entry, a default system action may be taken.
- Figure 12 is a simplified diagram of an EV associated with an application in an Itanium embodiment of the present invention.
- the instructions comprised by the EV 1210 are prefixed to the application code 1230, and the complete application code section 1220 is comprised by 1210 and 1230.
- Application data sections, such as application data section 1240, occupy completely separate pages.
- the EV entries 1211-1218 in EV code 1210 are intended solely to indicate the types of EV entries that may occur. They are shown in no particular order.
- an application wishes to be notified of the elapsed time every five seconds, it first would call the CE 2 timer service specifying the five second interval and an identifying tag for the event; the instructions to send control to the application's code section for handling a timer tick already would be present in the EV.
- control will flow to the timer interval EV entry 1213.
- This entry 1213 would direct control to the specified application timer tick handling section.
- This timer tick handling section would identify the event, using the tag supplied when the application requested timer notifications, and update the application internal confrol state accordingly.
- control returns from the timer tick handling section the system then would return control to normal application processing, and control state set by the timer tick handling section then can influence the application execution flow appropriately.
- applications can field signals that indicate some system and/or application malfunction, and attempt corrective action. This can be done through system calls that specify the specific signals to be caught, and the application code that is to be invoked when a corresponding signal occurs.
- Application recovery typically involves entering a process of unwinding the application control stack, one or multiple steps at a time, and executing required recovery code at some of these steps. Good practice is at some point to log the occurrence of the event.
- the application must be able to (1) correct its state and continue processing; or (2) re-launch a different copy of itself, passing sufficient information to enable the new copy to continue; or (3) give up and exit.
- CE 2 applications normally would be designed to make every effort to recover and continue operation. In the worst possible case, applications would be designed to enter an operational state that would not propagate the failure to any other systems.
- a caching proxy server for example, if unable to restore normal cache processing, the server might fail to a pass-through mode that enabled web accesses to continue, albeit at a reduced throughput level; alternatively, the server might be designed to reset and restart itself.
- CE 2 system services are designed to facilitate application recover-and- continue processing.
- EV entry 1212 is provided to deliver a "must recover" entry to the application.
- the fundamental simplicity and understandability of the structure of an Itanium embodiment of a CE 2 is an advantage in designing application recover-and-continue strategies.
- the hardware protection principles assure that both application and system executable code sections have not been altered. The same is true of all read-only data sections. Memory page allocation is static; the nature and protection of each mapped page is precisely known.
- the software and RSE stack structures are well understood, and can be adjusted or reinitialized by simple system services. I/O operations critical to the application can be resynchronized with the application, and continued or restarted.
- the BSS memory allocation state always can be determined exactly when deciding whether to continue using the heap or to reinitialize it. No elaborate stack unwinding process is required. An application simply can record sufficient information to enable it to determine the course of action to take if it must recover and continue, or if it must reset and restart.
- Figure 7 conceptually illustrates the relationships among the services within a CE 2 700 according to one embodiment of the present invention.
- system control like application control, is based upon the same, simple, single thread per processor. Execution of the application, including calls to system services 750, occurs on this thread.
- System services 750 include:
- Platform Control Services 740 These services are the only services that execute at PLO, the highest processor privilege level. The use of one or more privileged hardware instructions is essential for the function of these services. Some of these services operate only at system initialization time; others are invoked when interruptions occur; and still others are callable.
- platform control services 740 comprise: a.
- System initialization - Figures 17B and 17C are flow diagrams illustrating CE 2 loading and initialization for an Itanium embodiment of the present invention.
- Running in the monarch boot processor allocates physical memory pages (1740); establishes virtual address mappings and page protection states for code, data, stack, and heap pages (1745); moves section images to the proper physical pages (1750); zeros heap pages (1755); reads the latest physical memory map key, exits EFI boot services, and transfers control to the CE 2 initialization services (1760 and 1765); zeros the physical page occupied by the CE 2 loader (1770); sets hardware platform and configuration options via firmware calls (1775); running in the monarch processor, establishes virtual address mapping and page protection states for code, data, stack, and heap pages; transitions to virtual addressing (1780); configures interruption steering to processors; calibrates timers using information supplied by the firmware; initializes I/O controllers, offload boards, or other plug-in boards; and wakes up any other processors (1785).
- Running in the non- monarch processors establishes virtual address mapping and page protection states for code, data, stack, and heap pages; sets processor configuration and options via firmware calls; and calibrates timers using information supplied by the firmware (1790).
- Running on all processors establish processor state; direct confrol to each system service initialization entry point, such as those to initialize any I/O adapters, any offload boards, and any other separate plug-in boards, externally acquire cryptographic keying and random state, send status messages to installation management systems; and finally pass control to the CE 2 application, Software restart control - reports the restart event; temporarily disables interruptions, halts I/O operations and reinitializes any I/O adapters, any offload boards, and any other separate plug-in boards; reinitializes stacks; resets system state, with or without clearing heap memory; and restarts the application.
- Memory control - handles TLB misses if all pages cannot simultaneously be covered by the available TLBs; manages protection IDs and access permission disables in protection key registers.
- Process control - Running in each processor: initializes the state of the execution thread; activates the execution thread; checkpoints the execution thread; activates system deferred interruption service routines (DISRs); resumes the execution thread after an interruption; halts the execution thread; resets and/or restarts the execution thread; provides linkage services used when calling across privilege levels, returning across privilege levels, and when dispatching exception handling routines, interrupt service routines, and delayed interrupt service routines; authenticates calls.
- ISRs ISRs
- DISRs deferred interrupt service routines
- I/O hardware control issues all actual memory-mapped reads and writes to I/O controllers; translates all memory virtual addresses used by I/O drivers to correct physical addresses; translates I/O physical address back to virtual for use by I/O drivers. See the further discussion below.
- System state control reads and returns system state information to lower privileged system debugging services. No modification to system state via debuggers is permitted.
- system control services 730 comprise: a. Timer control services - returns elapsed time signals to application via the application EV; manage multiple signal requests, returning each signal after the proper elapsed time. Each signal is tagged with an identifier that permits the application to correlate the signal with a ' particular timer event. b. Debug and monitoring control services - returns system state and operational statistics; While operating, CE 2 system components each will maintain various measures of system activity. This system service returns a snapshot of these measures. c.
- Operator interface control services activated when operator requests are recognized; responds to requests asking for system status; initiates operator related EV actions when operator directives are received. It is envisioned that operator requests will be entered via a GUI on a browser that is maintaining an SSL session with the CE 2 . This GUI will be capable of displaying system configuration settings and status. Operator directives may change the configuration settings, using interfaces such as "Apply” or "Save” buttons in a manner familiar to GUI users.
- Crypto services perform cryptographic services for the system and application; services include key generation and management, cryptographically strong random number generation; cryptographic hash functions, digital signatures, message authentication codes, and both symmetric and asymmetric cipher operations.
- TCP/IP offload driver or TCP/IP stack services provides TCP/IP communications, either within one or more CE 2 processors or employing a TCP/IP offload board; In both cases, the interfaces to the application are at a generalized "socket" level that permits , asynchronous operations and notification; data handling is based upon a "zero move” goal; when data movement cannot be avoided, it is combined with other processing, such as compression, decompression, enciphering, or deciphering.
- I/O driver services control the I/O adapters for the required system I/O; operate solely with virtual addresses; use platform I/O services for actual communication with I/O hardware; this prevents physical address attacks originating from an I O driver.
- System monitoring services periodically update a display of system status, including metrics such as load, throughput, and hardware utilization information.
- Application Services 720 These services operate at PL2, the second lowest hardware privilege level. Presently, there is only one defined application service. In the future it is envisioned that other application services might emerge at this level of the system. One possible future service, for example, would be a service that permits an application to surrender control of the processor thread to another background application until the occurrence of a specified event.
- Memory allocation services allocate and free memory from the application's heap memory; the size of the memory allocated always is a multiple of a fixed allocation unit, such as 4K bytes or 8K bytes or
- the allocation unit can be set for a particular application.
- the data structures used to keep track of the memory allocation can be made very compact. These data structures reside in totally separate memory and cannot be contaminated by wild memory stores within the application.
- system services 750 are limited to those essential for a particular application; and the services are implemented in the simplest, fastest, and most secure possible manner. I/O services are provided only for those devices required by the application. To those skilled in the art, it is evident that Itanium embodiments of the present invention would permit processor control to be generalized for simple preemptive or non-preemptive multitasking - among a fixed set of applications and provided by expanded application, system, and platform services. But unless and until a particular application finds it unavoidable to organize itself in that manner, a single thread of execution on each processor suffices. Application calls to system services 750, and returns from system services
- EPC Itanium page access rights
- the Itanium page access rights can be set to a TLB.ar 810 value of 7.
- branching to such a page can cause the current processor privilege level 830 to be raised (PL numerical level reduced) to the value set in the TLB.pl field 820 for the page.
- One or more EPC pages may be employed in one Itanium embodiment of the present invention to effect such privilege level transitions.
- a 32-byte aligned entry point is defined in this page for each service call that must execute at a higher hardware privilege level than that of the caller.
- each defined entry point in the EPC page may consist of two bundles (each containing three instructions), separated by a cycle break.
- the hardware epc (enter protected code) instruction is effective only when executed within an EPC page and, when executed in such a page, raises the hardware privilege level as specified by the EPC page's TLB.pl field 820.
- the epc instruction must occupy the third instruction slot in the first bundle. The first and second instructions in this bundle must be able to execute at the old hardware privilege level.
- the second bundle must contain a branch to a non-EPC page in its third instruction position and in its first and/or second instruction positions have instructions that will cause an exception if the epc instruction in the first bundle had not previously executed. All other instructions in the EPC page should be set to cause a privilege exception. This practice assures that only correct privilege transitions can be made.
- a hardware interruption may occur prior to execution of the first EPC page bundle of instructions, or between execution of the first and second EPC page bundles of instructions. This makes it impossible to determine solely from the hardware privilege level saved at the point of interruption whether the execution had fully transitioned to a full platform confrol service state. This, in turn, leads to uncertainty as to how to restore state when returning from an interruption.
- an interrupted privilege level of PLO would not reliably indicate whether execution at the point of interruption still was using an application stack or had switched to a kernel stack.
- an interrupted privilege level of PLO would not reliably indicate the state needing to be restored to the protection key registers when returning from the interruption.
- interruptions are disabled by executing an rsm (reset system mask) instruction in the second EPC page bundle; (2) the remainder of the transition to the higher privilege state occurs while interruptions remain disabled; (3) interruptions are re-enabled only after a flag indicating completion of the transition is set in a register accessible only to PLO code; and (4) this flag is used to determine the state to be restored when returning from the interruption; the flag itself, of course, is modified to indicate the return state before the actual return.
- the call first is directed to the proper entry point in an EPC page, as just described.
- the branch instruction in the second bundle at the entry point in the EPC page forwards control to linkage service platform control code.
- the linkage service code first sets any additional system state needed for the code operating at the higher hardware privilege level. Such modifications might include modifications to protection key registers, or supplying parameters to the designated platform control service. When calling a cryptographic function, for example, this would be the point at which a protection key register would be set to enable access to the cryptographic key data page(s).
- the higher privileged code is entered in such a manner that, upon return, confrol again passes through the linkage service code. For the cryptographic function example, this would be the point at which the protection key enabling access to the cryptographic key material would be invalidated.
- Linkage service also has the opportunity upon a return to direct control to code that must be invoked due to the occurrence of an interrupt, before returning back to the original caller.
- This mechanism is used to invoke DISR and other EV routines.
- linkage services (1) preserves sufficient state to enable control later to return to the caller; (2) executes the call to the DISR or other EV routine; and (3) upon return from the DISR or EV routine, restores the saved system state and returns to the original caller.
- Hardware interruptions generally fall into two distinct classes.
- the first which may be referred to herein as "Exceptions,” are those interruptions that occur as a result of executing a particular instruction. These interruptions occur synchronously with execution of the instruction causing the exception.
- the second which may be referred to herein as “Interrupts” are those interruptions that may occur at an arbitrary point in time, usually as timer or I/O interruptions. Both types of interruptions are handled by the same hardware mechanism, but the software deals with the two classes of interruptions in quite different manners.
- the platform interruption and linkage services immediately direct confrol to an EV entry at the same hardware privilege level, or to other system code, first to deal with the exception and then to return.
- the system first may have to invoke one or more ISRs, DISRs, and also will attempt to handle all other pending interrupts, including their associated ISRs and DISRs, before returning control to the point of interruption.
- Linkage service saves the system state needed later to return to the point of the exception. It then makes a call to the EV routine or other system exception handling code. Upon return from the exception handling code, linkage service restores state and returns to the point of exception. For interrupts, it is possible that at the point the interrupt occurred the system may have been executing at any of the hardware privilege levels. Interruption control services and linkage service then cooperate first to direct control to one or more interrupt service routines. ISRs execute while further interruptions remain disabled, and may be limited to executing only at some hardware privilege levels, such as PLl and PLO. During ISR execution, ISRs normally set state to cause an associated deferred interruption service routine to execute later.
- ISRs execution is carried out using a different software stack and a different RSE stack. Control is switched to these stacks by the interrupt service routines, and the ISR routines are invoked. While executing, the ISR routines may call other system services, using a separate EPC page that may be called only by ISR routines. Once the ISR routines for a particular interrupt have been executed, the interrupt services look for another pending interrupt. If another interrupt is found, interrupt and linkage services proceed to execute the ISR routines for that new interrupt. Processing continues in this manner until all pending interrupts are processed. Once all ISR functions have been executed, the normal software and RSE stacks are restored, control returns through linkage service, and interruptions are re-enabled. Before finally returning to the actual point of interruption, linkage services first directs control to each of the DISR routines that have been activated by the state set by corresponding ISRs.
- the structure is predicated upon the facts that (1) code images reside in execute-only pages; (2) all code images have been authenticated by a cryptographic digital signature; (3) the CE 2 loader itself also has been authenticated by a digital signature; (4) the CE 2 loader is able to scan all executable code in order to validate digital signatures and detect instructions that might compromise the RSE; (5) the CE 2 loader also is able to identify all calls to privileged services; and (6) the CE loader can supply random information at load time to assist in the authentication.
- Macros are provided both to C programmers and to assembly language programmers to be used for making critical service calls. These macros generate a code skeleton with a recognizable pattern that can be detected by the CE 2 loader. The skeleton also permits identification of the particular critical service being called.
- One defined service call has the function of simply registering that program control flow reached a particular point in a program. A parameter of this call is an integer denoting a nesting level. A second parameter of this call is a 64-bit random number that is generate by and written into an Itanium instruction by the CE 2 loader.
- Another defined service call has the function of simply erasing an earlier program control flow registration entry.
- a parameter to this call may be a virtual pointer to the registration call whose registration is to be erased.
- this call may have only a nesting level parameter.
- Other critical service calls have an integer parameter that will be used to identify the particular call.
- the loader will generate this integer parameter and insert it into the executable instructions, and will build a table of all service calls, with the entry for this particular call located at the entry identified by this integer.
- a second parameter is a virtual pointer to a back-dominating regisfration or function call.
- a back dominating call is a call that always will have executed earlier in the program flow that eventually reaches the present call.
- each service call identifies a back dominating call to assure that the flow of control reached the critical service call via a legitimate program path.
- a third parameter is another 64-bit random number generated by the loader and inserted into the machine instructions.
- a fourth parameter specifies the disposition of the back dominator registration.
- the CE 2 loader will supply the required random numbers to the registration calls, and an identifying integer value to each critical service call.
- the loader then generates a table of authorized calls that will be used by the platform linkage services to authenticate the calls.
- the random number supplied by the loader When a registration call occurs, the random number supplied by the loader will be written into a path identification table, at the nesting level specified by the registration call. When a de-regisfration call occurs the random number previously written in the path identification table, at the nesting level specified by the registration call, will be set to zero, indicating that no path is currently registered. When a function call occurs, the integer identifier parameter will be used to access the call table generated by the loader.
- the call table entry will contain: (1) the virtual return address of the function call; (2) the random number registered by the specified back dominator call; (3) the nesting level in the path table specified for the back-dominating registration; (4) a second random number generated by the CE 2 loader; and (5) a parameter specifying the disposition of the back dominator registration entry.
- this parameter might be supplied with the call rather than being part of the call table.
- FIG. 14 is a flow diagram of call authentication as implemented in an Itanium embodiment of the present invention. According to this embodiment, authentication of a critical service call proceeds in the following steps:
- the EPC processing described earlier occurs at block 1410. This raises the hardware privilege level to PLO, disables interruptions, and transfers control to linkage services. 2. At block 1420, linkage services sets the privilege state flag to indicate that processing has transitioned from the previous hardware privilege level. It then may set any PKRs required by the more privileged service being called.
- the actual virtual return address is compared with the virtual return address from the call table at decision block 1430. If the addresses differ, the authentication fails (1470).
- the random number from the call table entry is compared with the random number at the designated nesting level in the path table (1440). If the numbers differ, the authentication fails (1470).
- the platform linkage service If the authentication has failed, the platform linkage service generates an error event (1480) that can be reported to the system or application. For this level of error severity, the application normally would enter a degraded operation state or execute a software reset-and-restart system service call. 6.
- the call table is modified as specified by the disposition parameter from the call table entry (1450). Dispositions normally would include: no modification; delete the back dominator registration; replace the back dominator registration by the call table random number; insert the call table random number at the next nesting level in the path table; or other application-dependent dispositions. In general, dispositions can be tailored for each application. Once disposition processing has completed, control is directed to the called service (1460).
- CE 2 I/O services A guiding principle for the design of CE 2 I/O services is "zero move.” This implies that I/O will whenever possible avoid the use of internal system buffers or of any intermediate buffer. If data moves are unavoidable, they if possible will be combined with other processing of the data- such as compression, decompression, encryption, or decryption. Embodiments of the present invention will employ CE I/O services adhering to this basic principle.
- a second guiding principle is that I/O services will be offered only for the types of I/O required by the particular application being supported by the CE 2 .
- This is in contrast to the approach adopted by ULW systems - providing a structure able to accommodate a continuously growing population of I/O drivers and file systems to permit an application to utilize the operating system abstractions to execute I/O functions on any suitable I/O device.
- This is not to denigrate the principles employed by ULW systems. They are important and highly successful. It is simply to emphasize the fact that the objectives of maximum simplicity, fastest possible speed, and freedom from security vulnerabilities may lead one to different conclusions.
- Packets may arrive in a wide variety of orders: some may signify the beginning of a new connection; others may contain the complete data payload of a request or response; still others may contain only a portion of a request or response; some payloads may require compression or decompression and encryption or decryption, as well as integrity validation; others may be intermediate packets used as elements of the formalities of a particular protocol; and still others may have been sent maliciously, with the intent force a system failure or to swamp a system and prevent it from performing its designated function.
- Preferred Itanium embodiments of the present invention are expected to adopt one of two possible approaches for handling network traffic.
- the first approach is to provide the leanest network protocol stack and simplest possible drivers for the network interface controllers (NICs) built into or plugged into a particular hardware platform. These drivers may support extended and asynchronous extensions of "socket-like" protocols, and need not support any protocols beyond those essential for a particular application.
- the second approach is to employ one or more separate plug- in boards, such as a functional offload board, which may support higher level interfaces and employ additional processing cycles to deal with higher volume network loads, or a board designed solely to assist in securely booting. In both cases, the designs will be guided by the "zero move" principle.
- I/O drivers execute at the highest hardware privilege mode of the system. There is no defense whatever against malice in one or more of these drivers. Because I/O drivers presently must work with physical addresses when instructing and communicating with I/O controllers, any protections provided by hardware virtual addressing mechanisms are readily circumvented.
- FIG. 16 is a flow diagram illustrating the software secure I/O hardware confrol service in an Itanium embodiment of the present invention.
- the approach taken to secure I/O drivers in preferred Itanium embodiments of the present invention is to:
- the memory organization of Itanium embodiments of the present invention permits translations to be done in either direction - the Itanium tpa (translate to physical address) instruction can be used in one direction; a binary search of the starting physical addresses of the pages allocated for I/O buffers can be used in the other.
- This design approach in effect, defines an enforced software interface that requires and enables I/O drivers to function using only virtual memory addresses. This prevents I/O drivers from using physical memory addresses, and closes the security exposure from malicious I/O drivers.
- critical secret data such as cryptography keys and keying materials, secure policy data bases, and random data safely can reside in virtual memory compartments for long periods of time.
- Booting securely means that when control first is passed to an operating system loader, or to a CE 2 loader, the implementer of the loader may rely upon the fact that when the loader begins to execute it has full control of the system, that its integrity is assured (the code has not been altered in any manner), and that the execution path to the loader passed only through firmware code modules whose integrity also was assured.
- One possible embodiment for booting securely is described in US Patent Application No. 10/118,646 (“the '646 Application") entitled "Secure Machine Platform that Interfaces to Operating Systems and Customized Control Programs" published on December 19, 2002 as Publication No. 2002/0194389 Al, which is hereby incorporated by reference in its entirety.
- Itanium embodiments of the present invention will employ loaders that can extend a chain of trust. Once hardware platforms can boot securely, this can result in a 9 9 secure boot and load of an operating system and concurrent CE , or solely of a CE .
- an EFI utility can be provided to compute and print out cryptographic hashes of the internal monarch processor firmware and of a small, first phase of a CE loader.
- the hash values computed by this utility can be recorded in human readable form, or transmitted to a management system.
- this utility can be executed again to produce hashes that can be compared with the original values before booting the CE 2 . This is a reasonable check of the integrity of the system internal firmware and 9 the CE loader.
- the utility and CE system can be distributed on CD-ROMs, which must be kept securely.
- a version of the utility can be run under the operating system to cross check the values produced by the EFI version. This is an approach that raises confidence in the CE 2 loader, but falls short of establishing a new root of trust. 2. If the system contains a separate plug-in board that can be a bus master and can contain a customized read-only program, a root of trust may be established for a small, first phase of a CE loader in accordance with Figure 17A. In this example, the small, first phase of the CE 2 loader is loaded by the EFI firmware at block 1705. Once loaded, the first phase may send a first signal to the separate plug-in board, then enter a first infinite loop executing in uncached memory (1710).
- the separate plug-in board then first may scan the system firmware and verify its digital signature, then read the code image of the first phase of the CE 2 loader and verify its digital signature. Once these signatures are verified, the separate plug-in board next may write one or more instructions into uncached memory, finally over-writing the first infinite loop branch to terminate the infinite loop (1715).
- the instructions written by the separate plug-in board may include instructions to access a random number provided within the instructions written to memory by the separate plug-in board (1715), to send a second signal including this random number to the separate plug-in board, and to enter a second infinite loop (1720).
- the separate plug-in board then may time the duration between writing the instruction to terminate the first infinite loop and receiving the second signal.
- a sufficiently small duration and the receipt of the just-supplied random number indicate that the instructions written by the separate plug-in board, to terminate the first infinite loop and continue, are executing (1725). If these conditions are met, the separate plug-in board next writes instructions to terminate the second infinite loop (1725); other instructions written by the separate plug-in board at the same time call the firmware to load a second and last phase of the CE 2 loader at a fixed physical address; validate the digital signature of said second phase of the CE 2 loader (1730); and transfer control to said second phase
- This, in effect, means that the loaded image of the full loader has no constant digital signature.
- the signature will be different for each physical load address.
- This problem may be avoided for a small first phase of a CE 2 loader, by making its code sufficiently simple. Once the first phase has been validated, it then can instruct EFI to load the full second phase of a CE 2 loader to be loaded at a specific physical address, which then permits the first phase to validate the digital signature of the second phase.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
Description
Claims
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA2517442A CA2517442C (en) | 2003-03-04 | 2004-03-04 | Customized execution environment and operating system capable of supporting same |
EP04717471A EP1599800A4 (en) | 2003-03-04 | 2004-03-04 | Customized execution environment and operating system capable of supporting same |
JP2006509176A JP2007524896A (en) | 2003-03-04 | 2004-03-04 | Customized execution environment and operating system capable of supporting the environment |
AU2004216723A AU2004216723B2 (en) | 2003-03-04 | 2004-03-04 | Customized execution environment and operating system capable of supporting same |
IL170581A IL170581A (en) | 2003-03-04 | 2005-08-30 | Customized execution environment and operating system capable of supporting same |
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US45184803P | 2003-03-04 | 2003-03-04 | |
US60/451,848 | 2003-03-04 | ||
US49787003P | 2003-08-25 | 2003-08-25 | |
US60/497,870 | 2003-08-25 | ||
US10/789,783 US7509644B2 (en) | 2003-03-04 | 2004-02-27 | Operating system capable of supporting a customized execution environment |
US10/794,995 US7509639B2 (en) | 2003-03-04 | 2004-03-04 | Customized execution environment |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2004079547A2 true WO2004079547A2 (en) | 2004-09-16 |
WO2004079547A3 WO2004079547A3 (en) | 2004-10-14 |
Family
ID=32931344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2004/006788 WO2004079547A2 (en) | 2003-03-04 | 2004-03-04 | Customized execution environment and operating system capable of supporting same |
Country Status (7)
Country | Link |
---|---|
US (2) | US7509644B2 (en) |
EP (1) | EP1599800A4 (en) |
JP (1) | JP2007524896A (en) |
AU (1) | AU2004216723B2 (en) |
CA (1) | CA2517442C (en) |
IL (1) | IL170581A (en) |
WO (1) | WO2004079547A2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011238277A (en) * | 2006-09-21 | 2011-11-24 | Intel Corp | High integrity firmware |
JP2013041626A (en) * | 2012-11-26 | 2013-02-28 | Ricoh Co Ltd | Information processor and information protection method |
CN107004099A (en) * | 2014-11-26 | 2017-08-01 | 惠普发展公司,有限责任合伙企业 | Prevention is attacked in memory |
Families Citing this family (128)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478141B2 (en) * | 2003-06-26 | 2009-01-13 | Intel Corporation | Accessing firmware of a remote computer system using a remote firmware interface |
DE10340861A1 (en) * | 2003-09-04 | 2005-04-07 | Infineon Technologies Ag | A processor circuit and method for associating a logic chip with a memory chip |
US7734932B2 (en) * | 2003-11-10 | 2010-06-08 | Broadcom Corporation | System and method for securing executable code |
US7784063B2 (en) * | 2004-01-09 | 2010-08-24 | Hewlett-Packard Development Company, L.P. | Method and apparatus for system caller authentication |
US20050188173A1 (en) * | 2004-02-24 | 2005-08-25 | Robert Hasbun | Physical domain separation |
EP1815683A2 (en) * | 2004-04-16 | 2007-08-08 | Digital Accelerator Corporation | Method and apparatus for delivering consumer entertainment services accessed over an ip network |
EP1594279A1 (en) * | 2004-05-07 | 2005-11-09 | Hewlett-Packard Development Company, L.P. | Access control in a web application using event filtering |
US20060036755A1 (en) * | 2004-05-07 | 2006-02-16 | Abdullah Ibrahim S | Meta-protocol |
US20060010446A1 (en) * | 2004-07-06 | 2006-01-12 | Desai Rajiv S | Method and system for concurrent execution of multiple kernels |
EP1617587A1 (en) * | 2004-07-12 | 2006-01-18 | International Business Machines Corporation | Method, system and computer program product for privacy-protecting integrity attestation of computing platform |
US7971255B1 (en) * | 2004-07-15 | 2011-06-28 | The Trustees Of Columbia University In The City Of New York | Detecting and preventing malcode execution |
KR20060014600A (en) * | 2004-08-11 | 2006-02-16 | 삼성전자주식회사 | Apparatus and methods for checking the change of data stored in the external storage |
US7802110B2 (en) | 2004-08-25 | 2010-09-21 | Microsoft Corporation | System and method for secure execution of program code |
US7302547B2 (en) * | 2004-09-30 | 2007-11-27 | Hewlett-Packard Development Company, L.P. | Method and system for supporting virtual mappings for shared firmware |
US8260917B1 (en) * | 2004-11-24 | 2012-09-04 | At&T Mobility Ii, Llc | Service manager for adaptive load shedding |
US7734741B2 (en) * | 2004-12-13 | 2010-06-08 | Intel Corporation | Method, system, and apparatus for dynamic reconfiguration of resources |
JP4357442B2 (en) * | 2005-03-23 | 2009-11-04 | 株式会社東芝 | Plan execution device, plan execution method and program |
US7924848B2 (en) * | 2005-05-18 | 2011-04-12 | International Business Machines Corporation | Receive flow in a network acceleration architecture |
US7617538B2 (en) * | 2005-06-30 | 2009-11-10 | Microsoft Corporation | Configuration information protection using cost based analysis |
US8838974B2 (en) * | 2005-07-15 | 2014-09-16 | The Mathworks, Inc. | System and method for verifying the integrity of read-only components in deployed mixed-mode applications |
US20070033592A1 (en) * | 2005-08-04 | 2007-02-08 | International Business Machines Corporation | Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors |
US7856618B2 (en) | 2005-08-04 | 2010-12-21 | International Business Machines Corporation | Adaptively generating code for a computer program |
US8468361B2 (en) * | 2005-09-21 | 2013-06-18 | Broadcom Corporation | System and method for securely provisioning and generating one-time-passwords in a remote device |
WO2007036072A1 (en) * | 2005-09-29 | 2007-04-05 | Intel Corporation | Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment |
DE102005048029B4 (en) * | 2005-10-06 | 2009-03-12 | Infineon Technologies Ag | Compiler and method for compiling |
US20070118804A1 (en) * | 2005-11-16 | 2007-05-24 | Microsoft Corporation | Interaction model assessment, storage and distribution |
US20070143315A1 (en) * | 2005-12-21 | 2007-06-21 | Alan Stone | Inter-partition communication in a virtualization environment |
US8316344B2 (en) | 2005-12-30 | 2012-11-20 | Sap Ag | Software model deployment units |
US8402426B2 (en) | 2005-12-30 | 2013-03-19 | Sap Ag | Architectural design for make to stock application software |
US8396731B2 (en) | 2005-12-30 | 2013-03-12 | Sap Ag | Architectural design for service procurement application software |
US8448137B2 (en) * | 2005-12-30 | 2013-05-21 | Sap Ag | Software model integration scenarios |
US8380553B2 (en) | 2005-12-30 | 2013-02-19 | Sap Ag | Architectural design for plan-driven procurement application software |
US8176317B2 (en) * | 2006-01-19 | 2012-05-08 | Helius, Inc. | System and method for multicasting IPSec protected communications |
US7845005B2 (en) * | 2006-02-07 | 2010-11-30 | International Business Machines Corporation | Method for preventing malicious software installation on an internet-connected computer |
US8214296B2 (en) * | 2006-02-14 | 2012-07-03 | Microsoft Corporation | Disaggregated secure execution environment |
US20070192824A1 (en) * | 2006-02-14 | 2007-08-16 | Microsoft Corporation | Computer hosting multiple secure execution environments |
US8442850B2 (en) | 2006-03-30 | 2013-05-14 | Sap Ag | Providing accounting software application as enterprise services |
US7721284B2 (en) * | 2006-04-27 | 2010-05-18 | Microsoft Corporation | Deployment of multiple embedded operating system components |
US8695102B2 (en) * | 2006-05-01 | 2014-04-08 | International Business Machines Corporation | Controlling execution of executables between partitions in a multi-partitioned data processing system |
EP1865435A1 (en) * | 2006-06-06 | 2007-12-12 | Texas Instruments France | Enhanced exception handling |
US9804861B2 (en) * | 2006-06-09 | 2017-10-31 | Paypal, Inc. | Configurable interfaces |
US8756607B2 (en) * | 2006-08-14 | 2014-06-17 | Lsi Corporation | Method and system for creating and utilizing virtual hardware resources |
WO2008055270A2 (en) | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Writing to asymmetric memory |
CN101636717B (en) * | 2007-03-27 | 2013-07-17 | 富士通株式会社 | Grid processing control apparatus |
US8984265B2 (en) * | 2007-03-30 | 2015-03-17 | Intel Corporation | Server active management technology (AMT) assisted secure boot |
US8479208B2 (en) * | 2007-03-30 | 2013-07-02 | Intel Corporation | System partitioning to present software as platform level functionality including mode logic to maintain and enforce partitioning in first and configure partitioning in second mode |
US7904493B2 (en) * | 2007-03-30 | 2011-03-08 | Sap Ag | Method and system for object age detection in garbage collection heaps |
US8356286B2 (en) * | 2007-03-30 | 2013-01-15 | Sap Ag | Method and system for providing on-demand profiling infrastructure for profiling at virtual machines |
US8667471B2 (en) | 2007-03-30 | 2014-03-04 | Sap Ag | Method and system for customizing profiling sessions |
US20080243970A1 (en) * | 2007-03-30 | 2008-10-02 | Sap Ag | Method and system for providing loitering trace in virtual machines |
US8522209B2 (en) * | 2007-03-30 | 2013-08-27 | Sap Ag | Method and system for integrating profiling and debugging |
US8336033B2 (en) * | 2007-03-30 | 2012-12-18 | Sap Ag | Method and system for generating a hierarchical tree representing stack traces |
US8601469B2 (en) * | 2007-03-30 | 2013-12-03 | Sap Ag | Method and system for customizing allocation statistics |
US8341733B2 (en) * | 2007-06-20 | 2012-12-25 | International Business Machines Corporation | Creating secured file views in a software partition |
JPWO2009004674A1 (en) * | 2007-06-29 | 2010-08-26 | 東芝ストレージデバイス株式会社 | Storage device, disk device, write determination method, control device |
US8424078B2 (en) * | 2007-11-06 | 2013-04-16 | International Business Machines Corporation | Methodology for secure application partitioning enablement |
US7996648B2 (en) | 2007-12-19 | 2011-08-09 | Microsoft Corporation | Coupled symbiotic operating systems |
US8447657B2 (en) | 2007-12-31 | 2013-05-21 | Sap Ag | Architectural design for service procurement application software |
US8775824B2 (en) * | 2008-01-02 | 2014-07-08 | Arm Limited | Protecting the security of secure data sent from a central processor for processing by a further processing device |
US8458658B2 (en) * | 2008-02-29 | 2013-06-04 | Red Hat, Inc. | Methods and systems for dynamically building a software appliance |
US9092243B2 (en) | 2008-05-28 | 2015-07-28 | Red Hat, Inc. | Managing a software appliance |
US10657466B2 (en) * | 2008-05-29 | 2020-05-19 | Red Hat, Inc. | Building custom appliances in a cloud-based network |
US8868721B2 (en) | 2008-05-29 | 2014-10-21 | Red Hat, Inc. | Software appliance management using broadcast data |
US8220053B1 (en) * | 2008-06-26 | 2012-07-10 | Trend Micro, Inc. | Shadow copy-based malware scanning |
US20090327741A1 (en) * | 2008-06-30 | 2009-12-31 | Zimmer Vincent J | System and method to secure boot uefi firmware and uefi-aware operating systems on a mobile internet device (mid) |
US8316211B2 (en) * | 2008-06-30 | 2012-11-20 | Intel Corporation | Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts |
US9286080B2 (en) * | 2008-07-02 | 2016-03-15 | Hewlett-Packard Development Company, L.P. | Memory management for hypervisor loading |
WO2010008707A1 (en) * | 2008-07-17 | 2010-01-21 | Lsi Corporation | Systems and methods for installing a bootable virtual storage appliance on a virtualized server platform |
JP4538066B2 (en) * | 2008-08-26 | 2010-09-08 | 株式会社東芝 | Random number generator |
US8843742B2 (en) | 2008-08-26 | 2014-09-23 | Hewlett-Packard Company | Hypervisor security using SMM |
US8401928B2 (en) | 2008-09-18 | 2013-03-19 | Sap Ag | Providing supplier relationship management software application as enterprise services |
JP4576452B2 (en) * | 2008-11-06 | 2010-11-10 | イーソル株式会社 | Operating system and information processing apparatus |
US9210173B2 (en) | 2008-11-26 | 2015-12-08 | Red Hat, Inc. | Securing appliances for use in a cloud computing environment |
US8401908B2 (en) | 2008-12-03 | 2013-03-19 | Sap Ag | Architectural design for make-to-specification application software |
US8671035B2 (en) | 2008-12-11 | 2014-03-11 | Sap Ag | Providing payroll software application as enterprise services |
US8341602B2 (en) * | 2009-01-29 | 2012-12-25 | Microsoft Corporation | Automated verification of a type-safe operating system |
US9588803B2 (en) | 2009-05-11 | 2017-03-07 | Microsoft Technology Licensing, Llc | Executing native-code applications in a browser |
EP2452297A4 (en) | 2009-07-10 | 2014-05-28 | Certicom Corp | System and method for managing electronic assets |
US8914812B2 (en) * | 2010-01-08 | 2014-12-16 | International Business Machines Corporation | Controlling operations according to another system's architecture |
US8850573B1 (en) * | 2010-04-14 | 2014-09-30 | Google Inc. | Computing device with untrusted user execution mode |
US9323921B2 (en) | 2010-07-13 | 2016-04-26 | Microsoft Technology Licensing, Llc | Ultra-low cost sandboxing for application appliances |
US8903705B2 (en) | 2010-12-17 | 2014-12-02 | Microsoft Corporation | Application compatibility shims for minimal client computers |
US9384071B2 (en) | 2011-03-31 | 2016-07-05 | Solarflare Communications, Inc. | Epoll optimisations |
US8850417B2 (en) * | 2011-04-15 | 2014-09-30 | International Business Machines Corporation | Method and framework for invisible code rewriting |
US9495183B2 (en) | 2011-05-16 | 2016-11-15 | Microsoft Technology Licensing, Llc | Instruction set emulation for guest operating systems |
US8677374B2 (en) | 2011-09-14 | 2014-03-18 | International Business Machines Corporation | Resource management in a virtualized environment |
US9413538B2 (en) | 2011-12-12 | 2016-08-09 | Microsoft Technology Licensing, Llc | Cryptographic certification of secure hosted execution environments |
US9389933B2 (en) * | 2011-12-12 | 2016-07-12 | Microsoft Technology Licensing, Llc | Facilitating system service request interactions for hardware-protected applications |
KR101867960B1 (en) * | 2012-01-05 | 2018-06-18 | 삼성전자주식회사 | Dynamically reconfigurable apparatus for operating system in manycore system and method of the same |
US8544082B2 (en) | 2012-01-05 | 2013-09-24 | Lenovo (Singapore) Pte. Ltd. | Security reuse in hybrid information handling device environments |
US9182970B2 (en) * | 2012-03-30 | 2015-11-10 | Lenovo (Singapore) Pte. Ltd. | Methods for creating device preload via manufacturing and cloud content |
US9934044B2 (en) * | 2012-03-30 | 2018-04-03 | Lenovo (Singapore) Pte. Ltd. | Methods for customizing an operating system at an information handling device |
WO2014031540A1 (en) * | 2012-08-20 | 2014-02-27 | Cameron Donald Kevin | Processing resource allocation |
WO2014046974A2 (en) | 2012-09-20 | 2014-03-27 | Case Paul Sr | Case secure computer architecture |
WO2013004854A2 (en) * | 2012-09-26 | 2013-01-10 | Nxp B.V. | Processing system |
US9135436B2 (en) * | 2012-10-19 | 2015-09-15 | The Aerospace Corporation | Execution stack securing process |
US9208113B2 (en) | 2013-01-15 | 2015-12-08 | Apple Inc. | Deferred inter-processor interrupts |
US9391881B2 (en) * | 2013-02-20 | 2016-07-12 | Ip Technology Labs, Llc | System and methods for dynamic network address modification |
US10007554B2 (en) * | 2013-03-13 | 2018-06-26 | Microsoft Technology Licensing, Llc | Task scheduling based on user interaction |
WO2014150478A1 (en) * | 2013-03-15 | 2014-09-25 | Insyde Software Corp. | System and method for managing and diagnosing a computing device equipped with unified extensible firmware interface (uefi)-compliant firmware |
US9811364B2 (en) * | 2013-06-13 | 2017-11-07 | Microsoft Technology Licensing, Llc | Thread operation across virtualization contexts |
KR101535792B1 (en) * | 2013-07-18 | 2015-07-10 | 포항공과대학교 산학협력단 | Apparatus for configuring operating system and method thereof |
US10095868B2 (en) * | 2013-11-13 | 2018-10-09 | Via Technologies, Inc. | Event-based apparatus and method for securing bios in a trusted computing system during execution |
US9547767B2 (en) * | 2013-11-13 | 2017-01-17 | Via Technologies, Inc. | Event-based apparatus and method for securing bios in a trusted computing system during execution |
US20150220736A1 (en) * | 2014-02-04 | 2015-08-06 | Dell Products, Lp | Continuous Memory Tamper Detection Through System Management Mode Integrity Verification |
SG11201604890WA (en) * | 2014-02-07 | 2016-08-30 | Oracle Int Corp | Cloud service custom execution environment |
DE102015211458A1 (en) * | 2015-06-22 | 2016-12-22 | Robert Bosch Gmbh | A method and apparatus for securing a program counter structure of a processor system and for monitoring the handling of an interrupt request |
US9785783B2 (en) * | 2015-07-23 | 2017-10-10 | Ca, Inc. | Executing privileged code in a process |
US9578054B1 (en) | 2015-08-31 | 2017-02-21 | Newman H-R Computer Design, LLC | Hacking-resistant computer design |
SG10201507834SA (en) * | 2015-09-21 | 2017-04-27 | Yokogawa Electric Corp | Mobile based on collaborative and interactive operations with smart mobile devices |
US9992238B2 (en) * | 2015-11-11 | 2018-06-05 | International Business Machines Corporation | Proxy based data transfer utilizing direct memory access |
CA3005949C (en) | 2015-12-15 | 2022-08-02 | Jan Jaeger | Protection key management and prefixing in virtual address space legacy emulation system |
SG10201602449PA (en) * | 2016-03-29 | 2017-10-30 | Huawei Int Pte Ltd | System and method for verifying integrity of an electronic device |
US10216498B2 (en) * | 2016-05-13 | 2019-02-26 | Tibco Software Inc. | Custom-built process engine with minimal memory and disk resource consumption |
US10241832B2 (en) * | 2016-06-20 | 2019-03-26 | Steering Solutions Ip Holding Corporation | Runtime determination of real time operating systems task timing behavior |
US10884952B2 (en) * | 2016-09-30 | 2021-01-05 | Intel Corporation | Enforcing memory operand types using protection keys |
EP3532970B1 (en) * | 2016-10-25 | 2021-12-01 | Michael Ratiner | A system and method for securing electronic devices |
US10108800B1 (en) * | 2017-01-10 | 2018-10-23 | Gbs Laboratories, Llc | ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods |
US11366887B2 (en) * | 2017-03-09 | 2022-06-21 | Fingerprint Cards Anacatum Ip Ab | Biometric authentication |
US10887290B2 (en) * | 2017-09-01 | 2021-01-05 | Orion Labs | Operating environment partitioning for securing group communication device resources |
WO2020005857A1 (en) * | 2018-06-24 | 2020-01-02 | Hex Five Security, Inc. | Configuring, enforcing, and monitoring separation of trusted execution environments |
US11171983B2 (en) * | 2018-06-29 | 2021-11-09 | Intel Corporation | Techniques to provide function-level isolation with capability-based security |
US11741196B2 (en) | 2018-11-15 | 2023-08-29 | The Research Foundation For The State University Of New York | Detecting and preventing exploits of software vulnerability using instruction tags |
US11288373B2 (en) * | 2019-04-11 | 2022-03-29 | Baidu Usa Llc | Boot failure recovery scheme for hardware-based system of autonomous driving vehicles |
US11080059B1 (en) * | 2020-03-30 | 2021-08-03 | Sandisk Technologies Llc | Reducing firmware size and increasing firmware performance |
US11636186B1 (en) * | 2021-12-17 | 2023-04-25 | Richard Fishman | Location-based augmented reality (AR) administration and management |
US12045326B2 (en) * | 2022-07-14 | 2024-07-23 | Dell Products L.P. | Secured communication protocol layer for authenticated hardware data access |
US12050943B1 (en) * | 2023-05-17 | 2024-07-30 | Red Hat, Inc. | Targeted unprivileged port configuration |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4467409A (en) * | 1980-08-05 | 1984-08-21 | Burroughs Corporation | Flexible computer architecture using arrays of standardized microprocessors customized for pipeline and parallel operations |
DE3689287T2 (en) * | 1985-02-18 | 1994-05-26 | Nippon Electric Co | Data processing equipment. |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
US5421006A (en) * | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
US5918050A (en) * | 1995-05-05 | 1999-06-29 | Nvidia Corporation | Apparatus accessed at a physical I/O address for address and data translation and for context switching of I/O devices in response to commands from application programs |
US5659750A (en) * | 1995-05-15 | 1997-08-19 | Nvidia Corporation | Apparatus for context switching of input/output devices in responses to commands from unprivileged application programs |
US5826085A (en) * | 1995-07-12 | 1998-10-20 | Oracle Corporation | Object oriented computer interface supporting interactive networked applications |
US5937185A (en) * | 1996-09-11 | 1999-08-10 | Creative Technology, Inc. | Method and system for device virtualization based on an interrupt request in a DOS-based environment |
GB9626241D0 (en) * | 1996-12-18 | 1997-02-05 | Ncr Int Inc | Secure data processing method and system |
US5835734A (en) * | 1997-03-07 | 1998-11-10 | California Institute Of Technology | Electronic processing and control system with programmable hardware |
US5991803A (en) * | 1997-03-28 | 1999-11-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Decoupling service creation environment from service logic execution environment |
US6131165A (en) * | 1998-06-18 | 2000-10-10 | Sun Microsystems, Inc. | Permit for controlling access to services in protected memory systems |
US6154842A (en) * | 1998-10-13 | 2000-11-28 | Motorola, Inc. | Method and system for reducing time and power requirements for executing computer-readable instruction streams in an execution environment having run-time security constraints |
EP1161716B1 (en) * | 1999-02-15 | 2013-11-27 | Hewlett-Packard Development Company, L.P. | Trusted computing platform |
US6470442B1 (en) * | 1999-07-30 | 2002-10-22 | International Business Machines Corporation | Processor assigning data to hardware partition based on selectable hash of data address |
JP2001290665A (en) * | 2000-04-11 | 2001-10-19 | Nec Software Hokuriku Ltd | Processor system |
US7028305B2 (en) * | 2001-05-16 | 2006-04-11 | Softricity, Inc. | Operating system abstraction and protection layer |
US7073059B2 (en) * | 2001-06-08 | 2006-07-04 | Hewlett-Packard Development Company, L.P. | Secure machine platform that interfaces to operating systems and customized control programs |
US7093265B1 (en) * | 2001-09-21 | 2006-08-15 | Lsi Logic Corporation | Method and apparatus for providing highly-transparent, host-based multi-pathing support |
US20030110205A1 (en) * | 2001-12-07 | 2003-06-12 | Leith Johnson | Virtualized resources in a partitionable server |
US6715085B2 (en) * | 2002-04-18 | 2004-03-30 | International Business Machines Corporation | Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function |
US7350211B2 (en) * | 2002-09-23 | 2008-03-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Middleware application environment |
US20060031672A1 (en) * | 2004-08-03 | 2006-02-09 | Soltis Donald C Jr | Resource protection in a computer system with direct hardware resource access |
-
2004
- 2004-02-27 US US10/789,783 patent/US7509644B2/en not_active Expired - Fee Related
- 2004-03-04 EP EP04717471A patent/EP1599800A4/en not_active Withdrawn
- 2004-03-04 CA CA2517442A patent/CA2517442C/en not_active Expired - Fee Related
- 2004-03-04 WO PCT/US2004/006788 patent/WO2004079547A2/en active Application Filing
- 2004-03-04 AU AU2004216723A patent/AU2004216723B2/en not_active Ceased
- 2004-03-04 US US10/794,995 patent/US7509639B2/en not_active Expired - Fee Related
- 2004-03-04 JP JP2006509176A patent/JP2007524896A/en active Pending
-
2005
- 2005-08-30 IL IL170581A patent/IL170581A/en not_active IP Right Cessation
Non-Patent Citations (1)
Title |
---|
See references of EP1599800A4 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011238277A (en) * | 2006-09-21 | 2011-11-24 | Intel Corp | High integrity firmware |
JP2013041626A (en) * | 2012-11-26 | 2013-02-28 | Ricoh Co Ltd | Information processor and information protection method |
CN107004099A (en) * | 2014-11-26 | 2017-08-01 | 惠普发展公司,有限责任合伙企业 | Prevention is attacked in memory |
EP3224759A4 (en) * | 2014-11-26 | 2018-05-30 | Hewlett-Packard Development Company, L.P. | In-memory attack prevention |
Also Published As
Publication number | Publication date |
---|---|
EP1599800A4 (en) | 2009-05-27 |
US20040177342A1 (en) | 2004-09-09 |
US7509639B2 (en) | 2009-03-24 |
EP1599800A2 (en) | 2005-11-30 |
WO2004079547A3 (en) | 2004-10-14 |
US7509644B2 (en) | 2009-03-24 |
AU2004216723B2 (en) | 2007-12-06 |
JP2007524896A (en) | 2007-08-30 |
IL170581A (en) | 2010-12-30 |
US20040177243A1 (en) | 2004-09-09 |
AU2004216723A1 (en) | 2004-09-16 |
CA2517442A1 (en) | 2004-09-16 |
CA2517442C (en) | 2011-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2517442C (en) | Customized execution environment and operating system capable of supporting same | |
US11200080B1 (en) | Late load technique for deploying a virtualization layer underneath a running operating system | |
US10977074B2 (en) | Secure identification of execution contexts | |
US9989043B2 (en) | System and method for processor-based security | |
US7073059B2 (en) | Secure machine platform that interfaces to operating systems and customized control programs | |
Jin et al. | Architectural support for secure virtualization under a vulnerable hypervisor | |
US8839239B2 (en) | Protection of virtual machines executing on a host device | |
West et al. | A virtualized separation kernel for mixed-criticality systems | |
US20020194496A1 (en) | Multiple trusted computing environments | |
US20040230794A1 (en) | Techniques to support hosting of a first execution environment by a second execution environment with protection for the first execution environment | |
US20020065776A1 (en) | Method and process for virtualizing file system interfaces | |
CN111651778A (en) | Physical memory isolation method based on RISC-V instruction architecture | |
WO2015108675A1 (en) | Threat-aware microvisor | |
KR20180099682A (en) | Systems and Methods for Virtual Machine Auditing | |
WO2009151888A2 (en) | Secure virtualization system software | |
US10108800B1 (en) | ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods | |
Jin et al. | H-svm: Hardware-assisted secure virtual machines under a vulnerable hypervisor | |
Sensaoui et al. | An in-depth study of MPU-based isolation techniques | |
Gu et al. | Enclavisor: A hardware-software co-design for enclaves on untrusted cloud | |
Ushakov et al. | Trusted hart for mobile RISC-V security | |
Cheruvu et al. | IoT software security building blocks | |
Koutroumpouchos | A security evaluation of TrustZone based trusted execution environments | |
Espenlaub | Design of the SPEEDOS operating system kernel | |
Wan | Hardware-Assisted Security Mechanisms on Arm-Based Multi-Core Processors | |
Colp | Eliminating the long-running process: Separating code and state |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): BW GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 2517442 Country of ref document: CA |
|
WWE | Wipo information: entry into national phase |
Ref document number: 170581 Country of ref document: IL Ref document number: 2004216723 Country of ref document: AU |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2006509176 Country of ref document: JP Ref document number: 2124/CHENP/2005 Country of ref document: IN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2004717471 Country of ref document: EP |
|
ENP | Entry into the national phase |
Ref document number: 2004216723 Country of ref document: AU Date of ref document: 20040304 Kind code of ref document: A |
|
WWP | Wipo information: published in national office |
Ref document number: 2004216723 Country of ref document: AU |
|
WWP | Wipo information: published in national office |
Ref document number: 2004717471 Country of ref document: EP |