Plaque It!
Sponsored by: Flash of Genius |
[0001] This application claims benefit of the filing date of pending Provisional Application Nos. 60/296,958, 60/296,957, and 60/297,175, all filed Jun. 8, 2001.
[0002] The present invention relates to computer architecture, operating systems, computer system security and, in particular, to a secure machine and secure machine interface that provides secure memory-management, dispatchable object dispatching, exception handling, interrupt handling, debugging and performance monitoring, cryptographic services, and secure repository services to operating systems and customized control programs.
[0003] Computer security has become an intensely studied and vital field of research in academic, governmental, and commercial computing organizations. While manufacturers and users of computer systems have, for many years, attempted to provide secure computer systems to control access to stored data, processing resources, and other computational resources within a computer system, the considerable efforts of computer manufacturers and users have not yet successfully produced secure computer systems. Many notorious computer-system-security breaches have been widely publicized in the past few years, including theft of money from ATM systems and computer systems within financial institutions, acquisition of highly confidential and secret documents and information from governmental, commercial, and private computer systems, a number of extremely costly and damaging computer viruses spread through email and other internet-related services, and many other severe security breaches.
[0004] Computer security issues in commercial computer systems have been, to date, addressed in a largely reactive fashion. In general, security issues are recognized after production of new commercial computer systems containing potential security breaches, and are addressed through somewhat ad hoc, post-design methodologies. Security techniques generally evolve as a result of the evolution of underlying computing technologies and resources. Although various security issues can be recognized and patched in existing systems, many additional potential security issues often remain unrecognized and available for later discovery through inadvertent and unintended errors or, more commonly, through systematic probing of computer system security features by malicious users and computing entities.
[0005] The invention, to be discussed below, relates to operating systems and operating system and computer system security. To facilitate this discussion, and to facilitate further background discussion, a concise overview of computer hardware architecture and operating systems is first provided, below.
[0006]
[0007] The hardware layer
[0008] The operating system layer
[0009] Operating system routines, in a traditional computer system, run at higher priority than user-level application programs, coordinating concurrent execution of many application programs and providing each application program with a run-time environment that includes processor time, at least one area of memory addressed by an address space provided to the application program, and a variety of data input and output services, including access to memory components, peripheral devices, communications media, and other internal and external devices.
[0010] Each currently running program is executed in the context of a process, a logical entity defined by various state variables and data structures managed by the operating system. One important internal data structure managed by the operating system is one or more process queues
[0011] The application-programming and user interface layer
[0012] In early computer systems, there were no operating systems.
[0013] Operating systems arose from a desire to automate the system management related to loading and executing application programs, and from a need to provided concurrent use and interactive use of computer systems to a number of users. Operating systems were developed for mainframe computer systems, such as the IBM System/360 series.
[0014] In modern personal computer (“PC”) systems, the operating system inhabits a roughly equivalent logical position within the system.
[0015] Hardware privilege levels are used within modern operating systems to partition resources between the operating system and other routines and programs. FIGS.
[0016] Memory can also be partitioned with respect to privilege levels, as shown in
[0017] Partitioning of resources is a fundamental technique used in the design of reliable and secure operating systems, but is not, by itself, sufficient. There are many aspects of security and reliability that cannot be addressed solely through hardware-level privilege-based partitioning.
[0018] If the I/O driver is correctly written, and does not contain malicious code, the I/O driver routines only read from, and write to, the I/O buffer area
[0019] The problem illustrated in
[0020] One embodiment of the present invention provides a combined-hardware-and-software secure-platform and a combined-hardware-and-software secure-platform interface to which operating systems and customized control programs interface within a computer system. This embodiment of the present invention employs a hardware platform that provides at least four privilege levels, non-privileged instructions, non-privileged registers, privileged instructions, privileged registers, and firmware interfaces. The combined-hardware-and-software secure-platform interface conceals the privileged instructions, privileged registers, and firmware interfaces from operating systems and customized control programs, providing to operating systems and customized control programs the non-privileged instructions and non-privileged registers provided by the hardware platform as well as a set of callable software services. The callable software services provide a set of secure-platform management services for operational control of hardware resources that neither expose privileged instructions and privileged registers of the hardware nor simulate privileged instructions and privileged registers. The callable services also provide a set of security-management services, also called the secure-repository, that employ internally generated secret data, each security-management service managing internal secret data without exposing the internal secret data to any computational entity other than the security-management service itself.
[0021]
[0022]
[0023]
[0024]
[0025] FIGS.
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040] The present invention relates to computer systems and computer operating systems. More specifically, one embodiment of the present invention relates to a combined-hardware-and-software secure-platform and a combined-hardware-and-software secure-platform interface that provides a secure foundation on which one or more operating systems can be layered in order to produce secure computer systems. The combined-hardware-and-software platform and combined-hardware-and-software-platform interface represent an evolutionary step in machine/operating system interfaces. As discussed above, with reference to FIGS.
[0041] In order to describe the combined-hardware-and-software secure-platform interface, discussions of security, an example hardware platform suitable for use in the combined-hardware-and-software secure platform, and a general discussion of cryptography are presented in three following subsections. Then, in a fourth subsection, and in Appendices A and B that follow, a detailed description of the combined-hardware-and-software secure-platform interface that represents one embodiment of the present invention is discussed in detail.
[0042] Computer Security
[0043] There are many different ways to define computer security. Quite often, security problems and security deficiencies that arise in computer systems represent entire classes of problems that were initially not recognized by system designers as security issues. Properly and comprehensively defining the term “computer security” may constitute an important and even essential step in designing a secure computer system. A step in the design of the combined-hardware-and-software secure-platform interface that represents one embodiment of the present invention is the recognition that the a secure computer system encompasses at least the following nine characteristics and properties:
[0044] Availability
[0045] An available system is a system that can be trusted and relied upon to be functioning and to respond correctly whenever an end user invokes a system service. Availability can be addressed, in part, by incorporating redundant configurations of reliable hardware components within a system, and detecting and/or compensating for incorrect operation of either a hardware or software component. However, availability also may be greatly facilitated by expanding the class of detectable errors and limiting the damage resulting from the occurrence of errors.
[0046] Confidentiality
[0047] Information stored within a computer system, transmitted across a network, or residing in archival storage needs to be intelligible only to authorized parties. Confidentiality may be greatly facilitated by specifying cryptographic ciphers and protocols that can be employed to assure that the intelligibility of data and system information can be restricted solely to authorized parties via encryption of file data, paging data, communications between local system components, and communications over the Internet.
[0048] Authentication
[0049] The identities of persons, servers, clients, appliances, printing subsystems, storage subsystems, and other hardware and software components that generate and access data need to be correctly ascertained before services are provided to these entities. Authentication may be greatly facilitated by specifying the cryptographic means and protocols by which all such identities can be authenticated.
[0050] Access Control
[0051] Access to information stored within a computer system or residing in archival storage needs to be permitted only when properly authorized. Access control may be facilitated by providing a range of access control schemes.
[0052] Nonrepudiation
[0053] In E-commerce transactions, neither the sending party nor the receiving party of messages should be able to deny the existence and transmission of messages specifying and effecting a transaction. For example, means need to be provided to insure that a party sending a message ordering a shipment of “widgets” later cannot claim that the “widgets” never were ordered. Nonrepudiation is facilitated by identifying cryptographic mechanisms and protocols, such as digital signatures, that can be used to ensure that parties to a transaction are accountable.
[0054] Policy Control
[0055] Owners and administrators need to be equipped to define for systems under their control policies that govern the behavior of the security elements of those systems.
[0056] Digital Rights Protection
[0057] Secure systems need to protect digital content, particularly guarding digital images from unauthorized duplication. Examples include currency, MPEG home entertainment content, high quality images of fine art, and printed materials for limited distribution.
[0058] Privacy
[0059] The property of privacy depends upon the preceding properties, but needs additional capabilities for managing and controlling information associated with identities of persons and groups. Information private to an individual needs to be protected from unauthorized access. In some cases, even if access is authorized, the identities of individuals should not be disclosed. Features of a system that secure privacy include: (1) legitimate collection of information about individuals, in a legitimate manner, relevant to and not in excess of, the purpose for collection; (2) maintaining accurate and up-to-date information about individuals; (3) processing information about an individual fairly and lawfully, obtaining an individual's consent for retention, use, or transfer of information to third parties; (4) individuals should be entitled to access information about themselves, including the right to have such information rectified or deleted; (5) individuals need to be told what personal information is to be collected, its intended use, the responsible entity, and the choices the individual has regarding the uses of the information; (6) individuals need to be given the ability to select and/or update the choices for dealing with their personal information; and (7) means need to be provided for demonstrating to an oversight or enforcement agency that private information has been handled correctly and lawfully.
[0060] Data Integrity
[0061] Data in the custody of a computer system is a precious and critical information asset. A secure system needs to ensure that data assets are not lost or damaged, and not subjected to unauthorized falsification, deletion, forgery, permutation, or other forms of tampering. A combination of well-designed file and data base systems, systematic back up and restore procedures, and cryptographic protections for the integrity and confidentiality of the data itself are needed to assure this property.
[0062] A Modem Computer Architecture
[0063] Processors built to comply with the Intel® IA-64 computer architecture represent one fundamental hardware interface of a series of modern computer hardware platforms suitable for combination with a secure platform software layer to produce the combined-hardware-and-software secure-platform interface that represents one embodiment of the present invention.
[0064] One important register is the process status register (“PSR”)
[0065] The registers shown in
[0066] The IA-64 architecture provides a 2-bit privilege-level field in the processor status register, in turn providing for 4 privilege levels: PL0—the most privileged, kernel privilege level; PL1—the next most privileged privilege level; PL2—the next most privileged level; and PL3—the application-level privilege level.
[0067] The memory and virtual-address-translation architecture of the IA-64 computer architecture is described below, with references to FIGS.
[0068] In general, however, virtual memory addresses are encoded as 64-bit quantities.
[0069] Translation of the virtual memory address
[0070] If an entry in the TLB can be found that contains the region identifier contained within the region register specified by the region register selector field of the virtual memory address, and that contains the virtual page address specified within the virtual memory address, then the processor determines whether the virtual memory page described by the virtual memory address can be accessed by the currently executing process. The currently executing process may access the memory page if the access rights within the TLB entry allow the memory page to be accessed by the currently executing process and if the protection key within the TLB entry can be found within the protection key registers
[0071] If an entry is not found within the TLB with a region identifier and a virtual page address equal to the virtual page address within the virtual memory address and a region identifier selected by the region register selection field of a virtual memory address, then a TLB miss occurs and hardware attempts to locate the correct TLB entry from an architected mapping control table, called the VHPT, located in kernel memory. If the hardware is unable to locate the correct TLB entry from the mapping control table, a TLB fault occurs and a kernel or operating system routine is invoked in order to find the specified memory page within physical memory or, if necessary, load the specified memory page from an external device into physical memory, and then insert the proper translation as an entry into the VHPT and TLB. If, upon attempting to translate a virtual memory address to a physical memory address, the process does not find a valid protection key within the protection key registers
[0072]
[0073]
[0074] Because computer resources are partitioned according to privilege levels, processes generally access instructions and data from memory pages associated with the privilege level of the executing process or a lower privilege level, with privilege level 0 considered the highest privilege level. An executing process may be interrupted by a hardware-generated interruption, in which case an interruption handling routine is automatically invoked by the hardware to execute at privilege level 0. Once the interruption is partially or completely handled, the interruption handling routine may execute a return from interrupt (“rfi”) instruction to return execution to the point of the previously executing routine at which the interrupt occurred, lowering the CPL back down to the CPL at which the previously executing routine had been executing prior to the interruption.
[0075] The interruption process is illustrated in
[0076] There are cases when an application-program process needs to call an operating-system subroutine or function that runs at a privilege level higher than that of the application-program process. Because the PSR can be accessed and changed only by a privilege-level-0 routine, an application program executing at a lower privilege level cannot directly modify the CPL. One way to effect such a call is to execute a “break” instruction containing an encoded parameter. This instruction causes an interruption to privilege-level-0, and the parameter encoded in the break instruction can be decoded to send control to the desired privilege-level-0 function. However, the IA-64 computer architecture provides a faster mechanism by which an application-program process may invoke a privilege-level-0 process.
[0077] Cryptography
[0078] There are six basic types of cryptographic techniques: (1) symmetric (secret) key encryption; (2) asymmetric (public/private) key encryption; (3) one-way hash functions; (4) message authentication codes; (5) digital signatures; and (6) random number generators.
[0079] Encryption/Decryption
[0080] Symmetric and asymmetric key encryption both are used to scramble data so completely that an attacker lacking the correct key is unable to determine the content or meaning of the original unscrambled data. The data itself can be any form of digitized information, including letters or numbers of any language, special symbols for words or punctuation or control, or video and audio images.
[0081] The process of scrambling the data is called “encrypting,” or “enciphering” the data. The reverse operation, to unscramble the data back to its original form, is called “decrypting,” or “deciphering” the data. The original unscrambled data is called “clear text.” The scrambled data is called “cipher text.” There are many different algorithms for encrypting and decrypting. Encryption and decryption algorithms generally take two input arguments, and produce as output the encrypted or decrypted data, respectively. The first input argument is the data to be encrypted or decrypted. The second input argument is called the “key.” Best practice deems the secrecy of an encryption and decryption scheme to inhere solely in the key. Encryption and decryption can be concisely described as follows:
[0082] Symmetric Key Encryption
[0083] For symmetric key encryption, both the sender and receiver of encrypted messages employ the same secret key. For example, if the secret key were the word “applesauce”, the equations would be:
[0084] Keys normally used are long, randomized bit strings. The lengths of keys are determined by the specific symmetric cipher. The binary values of keys are generated by processes that are constructed to insure that the values are sufficiently unpredictable.
[0085] Symmetric ciphers are of two basic types: (1) block ciphers; and (2) stream ciphers. A block cipher encrypts or decrypts a single, fixed-size block at a time. The size of a block is defined by the specific block cipher. A streaming cipher generates a sequence of binary values that are XORed with the Clear-text to encrypt, or with the Cipher-text to decrypt. The size of each binary value generated by a stream cipher is defined by the specific stream cipher.
[0086] Symmetric key encryption executes at high speed. On grounds of security and performance, symmetric ciphers rank very highly. For any confidential, high-volume data interchange, symmetric key cryptography is the preferred choice, because of its high performance. The hard problem for deploying symmetric cryptography is the distribution and management of secret keys, aptly named the “Key Distribution Problem.”
[0087] The Key Distribution Problem, i.e. the definition of a process securely to distribute unique secret keys throughout a network, to every pair of persons or programs that needs to communicate in confidence, is very complex. Entire systems have been built solely to perform this function. One system developed dedicates entire servers simply to the task of being trusted third parties for distribution of secret keys.
[0088] Asymmetric Key Encryption
[0089] For asymmetric key encryption, the key used to encrypt data is a different key from that used to decrypt data. Unlike symmetric key encryption, which uses the same secret key both for encryption and decryption, asymmetric key encryption uses two different keys. The advantage of asymmetric key encryption is that only one of the keys needs to be kept private (i.e. secret). The other key can be widely known, i.e. can be made public. It is for this reason that asymmetric key encryption popularly is called “public/private” key encryption. Asymmetric ciphers greatly ameliorate problems of key distribution. Symbolically:
[0090] The most widely used asymmetric cipher is called “RSA,” an acronym composed of the first letters of the last names of its inventors. RSA operates upon very large integers modulo the product of two secret prime numbers. RSA public and private keys each are pairs of such large integers. For good security today, 1024 to 2048 bit integers are used, although some applications continue to use 512 bit integers. The cryptographic strength of RSA derives from the difficulty in factoring the product into the two secret primes.
[0091] More recent work has shown that finite groups of points lying on an “elliptic curve” provide a perhaps stronger base than RSA for asymmetric cryptography. The security of the schemes based upon elliptic curves derives from the difficulty in solving the discrete log problem over elliptic curves. (For details, see: Blake, Seroussi, Smart,
[0092] One-Way Hash Functions
[0093] One-way hash functions are algorithms that transform an arbitrary input bit stream into a fixed-size result. They are called “one-way” because, while it is straightforward to perform the hash function, it is provably impossible to compute the inverse of the hash function—that is, to compute the input bit stream given only the fixed-size hash function output.
[0094] Further, secure hash functions are designed so that, to the extent possible, the value of every bit of the output of the function is affected by the value of every bit of the input, and that for a given hash output value it is a prohibitively difficult task to find another input bit stream that would produce the identical hash function output. These properties of secure hash functions permit one reasonably to use the hash output value as an identifying “signature” or “digest” for the input bit stream. Hash function outputs are like digital fingerprints of the input bit stream.
[0095] Secure hash functions typically operate in two phases. First, the arbitrary-length input bit stream is padded in a specific manner to a multiple of a fixed block size. Usually, the bit length of the entire input stream appears as the final 64-bit value in the last 64-bit double word of the final pad block. Second, the padded input is processed a block at a time by the hash function, using output values from each block as initial input values to the processing of the next block. The combined result after processing the final block is the output of the hash function. Symbolically:
[0096] Hash functions are one of the most versatile and widely employed cryptographic tools. They are used in nearly every Internet protocol. Whenever it is necessary logically to associate a number of elements, a common practice is to concatenate the byte-strings representing the elements and hash the total result. This produces a digital fingerprint reflecting every element as well as the entire, ordered association. Hash values of documents, data structures, and code images are crucial for digital signatures.
[0097] Message Authentication Codes
[0098] Message Authentication Codes (“MACs”) are designed to protect the authentication and integrity of messages and data rather than to protect their confidentiality. A MAC is a value appended to a message or data that permits one to assure that the content of the message or data has not been modified in any way.
[0099] MACs, like symmetric key encryption, use a secret key. If it is not important to protect the content of a message, but only to insure its integrity, the secret key is used to compute a MAC, which then is appended to the message. Any party who knows the secret key can recalculate the MAC from the received message, and compare the newly calculated value with the MAC appended to the received message. If the newly computed and transmitted values match, the message has been transmitted correctly.
[0100] MACs are used in secure IP (“IPSec”) to assure that packet contents have not been modified during transmission. They also are used in transfer protocols between banks to authenticate messages. MACs also can be attached to data stored in files or databases. In all cases any one knowing the secret key can verify that the data over which the MAC was calculated has not been altered. Computations of MACs utilize symmetric key encryption over the data, or sometimes over secure hashes of the data.
[0101] Digital Signatures
[0102] Digital signatures are similar to MACs in providing a guarantee of the integrity of stored or transmitted data. But digital signatures differ from MACs with respect to the secrets employed and the distribution of those secrets.
[0103] For MACs there is a non-empty set of persons who know the secret key used to compute the MAC. Any of the people in the set can verify a MAC computed with the secret key. At the same time, any of these persons also can compute a MAC for different messages or data, or can forge a MAC for an altered message or data. All the persons who know the secret need to trust each other—both to keep the secret key secret and to employ the secret key properly.
[0104] MACs work well when there is but a single individual who holds the secret. This person can use the secret to protect his or her data and to assure its integrity. MACs also work well for sets of two persons. These folks trust each other not to reveal the secret, and can send messages back and forth knowing that the integrity of each message has not been compromised. These models fit many important situations.
[0105] Digital signatures are an integrity protection mechanism where there is but a single party who is capable of constructing the signature, but everyone then is able to verify the signature. In this model, one specified party, the sole holder of the enabling secret, becomes responsible for computing and appending the signature to the data. This is called “signing” the data. After the data has been signed, anyone can verify that the specified party, more exactly, the specified secret key, in fact did compute the signature. This model fits many important commercial and practical situations.
[0106] Digital signatures are computed by using a remarkable property of asymmetric key cryptography. Namely, digital signatures also work in reverse. In the previous section on asymmetric key cryptography we wrote symbolically:
[0107] But it turns out that the keys can be used in the reverse order, namely:
[0108] In the first case the owner of the secret key does the decrypting, and anyone can do the encrypting. In the latter case, the owner of the secret does the encrypting, and anyone can do the decrypting. The latter case is used for digital signatures.
[0109] Digital signatures can be used by themselves, or in combination with encryption designed to protect confidentiality. Often, it is not important that the data contents are confidential, but it is extremely important that the data are accurate. Digital signatures are not computed by encrypting all of the data with the private key, but rather are computed by using a private key to encrypt a secure hash of the data. In effect, we first take a digital fingerprint of the data, and then encrypt the digital fingerprint with the private key. Symbolically:
[0110] Digital signatures also are verified in two steps. First the digital fingerprint of the data contents is recomputed using the hash function. Then the appended digital signature is decrypted using the public key. If the recomputed digital fingerprint and the decrypted digital signature match, the signature has been verified.
[0111] Random Number Generators
[0112] Random numbers are employed throughout cryptographic algorithms and protocols. They are used for keys, challenge values, nonces, pre-hashing appendages for passwords, etc. Hardware devices based upon some form of physical randomness are beginning to appear. The problem with such hardware devices, of course, is testing them to assure they're operating correctly. Computational means exist for computing numbers that are sufficiently unpredictable that they can be used in lieu of truly random numbers. Such numbers are called “Pseudo-Random Numbers” (“PRNs”). Some of the pseudo-random number generation methods employ values based upon physical measurements of random events in a computer system, such as typing rates, arbitrary mouse motions, arrival times of disk I/O interrupts, etc. Others are based upon symmetric cryptography or the difficulty of hard mathematical problems such as the factoring problem. Pseudo random number generators (“PRNGs”) that produce sufficiently unpredictable values are called “Cryptographically Strong Pseudo Random Number Generators” (“CSPRNGs”).
[0113] The Secure-Platform Kernel Embodiment of the Present Invention
[0114]
[0115] One embodiment of the present invention is a combined-hardware-and-software secure-platform interface that provides a secure layer that interfaces with one or more computer operating systems and customized control programs. The combined-hardware-and-software secure platform (“SP”) allows an operating system or customized control program to directly access, via a combined-hardware-and-software secure-platform interface (“SPI”), non-privileged machine instructions and registers as well as to invoke software routines that provide control of the hardware to an operating system or customized control program without exposing the privileged machine instructions and registers. In addition, the SP and SPI provide a set of secure repository services that include, among other things, encryption and decryption services, security policy management, and other security-related services that employ internally generated, secret data, such as encryption keys in the clear, that cannot be exposed to the operating systems and customized control programs, nor to other routines of the software portion of the combined-hardware-and-software secure platform. The SPI can be thought of as a machine interface to a machine that includes not only hardware, including one or more processors, busses, memory components, and other hardware components shown in
[0116]
[0117] It is important to emphasize, in addition to the capabilities that SP provides, that the SP is quite different from an operating system or a traditional virtual machine, and the SPI is different from an operating-system interface or virtual-machine interface. A virtual machine is a software abstraction of an underlying hardware platform that either directly exposes or simulates the privileged instructions and registers and firmware interfaces of the underlying hardware platform. Virtual machines are useful in a number of situations, such as operating system development. But the SP is unlike a virtual machine interface. The SPI deliberately prevents all access to privileged instructions and registers and firmware interfaces by overlying operating systems. Moreover, the SP mechanisms provide an extensible, rich set of secure services, such as cryptographic services, that extend well beyond the scope of capabilities provided by virtual machines. SP secure services are made secure by completely compartmentalizing and isolating their code images and data from overlying operating systems and custom control programs. This compartmentalization and isolation is possible only because operating systems and custom control programs have no direct access whatsoever to privileged instructions and registers and firmware interfaces. SP encryption services, for example, are thus able to completely conceal actual values of encryption keys, and keying materials derived from encryption keys, from all operating systems, custom control programs, and application programs, while still allowing those operating systems, custom control programs, and application programs freely to employ the encryption services.
[0118] While the SP is a secure platform for operating systems, the SP does not, by itself, ensure the security of a computer system that is built upon the SP. Unlike a system control program, such as an operating system, the SP provides solely a set of callable mechanisms in addition unprivileged instructions and registers. The SP mechanisms provide basic building blocks from which a secure system can be constructed, as described below. The SP mechanisms allow an operating system to exercise sufficient control over the underlying hardware to provide full operating system services to application programs and users. But the SPI provides this functionality without exposing any privileged instructions or registers or firmware interfaces to an overlying operating system or custom control program. Internally, in the IA-64 embodiment of the invention, the SP mechanisms consistently utilize the protection capabilities of the IA-64 architecture in a manner designed to reduce vulnerabilities to virus and penetration attacks. The practices employed include: all executable code images are first validated by checking their digital signatures before they are set to be executable; executable code images never are permitted simultaneously to be both executable and writable; stacks and data areas may be read or written, but never executed; SP mechanisms are compartmentalized by the use of privilege levels and protection keys, to isolate the code and data of each mechanism from all overlying operating systems and custom control programs, and from all other SP mechanisms. Operating systems and custom control programs overlying the SP also can adopt similar memory protection practices to improve their security. But, indeed, any operating system or custom control program may fail to properly secure itself, despite being provided the tools to do so by the SP interface.
[0119] SP organizes the resources of the system into one or more disjoint, mutually isolated partitions, called “domains.” Each domain operates under the control of an operating system or custom control program. SP allocates a range of virtual memory addresses, a range of physical memory addresses, a number of logical and physical CPUs, a set of I/O devices, and a set of identifier values to each domain. In order to provide the SP services, the SP software layer needs certain specific functionality from the SP hardware layer, in addition to the non-privileged ins