Support for secure objects in a computer system
Abstract
Problem to be solved.To provide software capable of assisting the prevention of information theft from a computer system by an internet-based attack and allowing an attacker to incorporate confidential data and software in the computer system into a target computer system. Provide systems and methods that can be protected from other software, including.
Solution.The method and structure in a computer system include a mechanism for supporting a secure object including code and data protected from other software in the computer system by cryptography. [Selection diagram] Fig. 3
Term
3.7 yearsto projected expiry
Projected expiry 23 June 2030, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
27 claims: 6 independent, 21 dependent
- 1コンピュータ・システム中のプロセッサであって、前記プロセッサは、暗号によって前記コンピュータ・システム中の他のソフトウエアから保護されたコードおよびデータを含む安全オブジェクトをサポートするメカニズムを含む、前記プロセッサ。
- 2前記メカニズムは、 暗号エンジンと、 前記安全オブジェクトの前記コードが前記プロセッサ上で実行さていれる間、前記安全オブジェクトのデータへのアクセスを提供するキー情報を前記暗号エンジンの中にロードする命令と、を含む、請求項1に記載のプロセッサ。
- 3前記安全オブジェクトの前記データは、前記プロセッサによって前記安全オブジェクトの前記コードが実行されている間だけアクセス可能なプライベート情報を含む、請求項1に記載のプロセッサ。
- 4前記キー情報をロードする前記命令は第一命令を含み、前記メカニズムは、前記暗号エンジン中の前記キー情報を以前の状態に復元するための第二命令をさらに含む、請求項2に記載のプロセッサ。
- 5前記安全オブジェクトの前記データはプライベート・データを含み、前記プライベート・データは、前記安全オブジェクトのコード内からアクセスされたときと、そのデータが前記プロセッサ内に在るときとだけに復号される、請求項1に記載のプロセッサ。
- 6前記メカニズムは、前記安全オブジェクトの秘匿性および完全性の両方を保護するために暗号法を用いる、請求項1に記載のプロセッサ。
- 7前記命令のフィールドから抽出された暗号化キー情報を復号して得られた前記キー情報を、前記暗号エンジン中にロードする、請求項2に記載のプロセッサ。
- 8暗号法完全性チェック・メカニズムを使って、前記安全オブジェクト・ソフトウエア以外のソフトウエアが前記暗号化キー情報を用いるのを防止する、請求項7に記載のプロセッサ。
- 9前記キー情報を前記暗号エンジン中にロードする前記命令は、他のソフトウエアから前記キー情報を保護する保護領域に格納されている、キー情報への間接参照を用いる、請求項2に記載のプロセッサ。
- 10暗号法完全性チェック・メカニズムを使って、前記安全オブジェクト・ソフトウエア以外のソフトウエアが前記間接参照を用いるのを防止する、請求項9に記載のプロセッサ。
- 11前記プロセッサによる前記コードの前記実行の間保護される、前記プロセッサに関連付けられた少なくとも一つのキャッシュをさらに含む、請求項2に記載のプロセッサ。
- 12前記コードの前記実行が割り込みされたとき前記安全オブジェクトへのアクセスを提供する暗号キー情報への間接参照を保存し、後で前記実行が再開されたとき前記間接参照を復元する、割り込みハンドラおよびオペレーティング・システム・コードの少なくとも一つをさらに含む、請求項4に記載のプロセッサ。
- 13前記安全オブジェクトは、ファイル・システム中に情報を格納しこれから取り出し、前記情報は暗号によって前記他のソフトウエアから保護される、請求項1に記載のプロセッサ。
- 14コンピュータ・システム中のプライベート情報を保護する方法であって、前記方法は、暗号によって前記コンピュータ・システム中の他のソフトウエアから保護されたコードおよびデータを含む安全オブジェクトをサポートするメカニズムを提供するステップを含む、前記方法。
- 15前記メカニズムは、 暗号エンジンと、 前記安全オブジェクトの前記コードがプロセッサ上で実行さていれる間、前記安全オブジェクトのデータへのアクセスを提供するキー情報を前記暗号エンジンの中にロードする命令と、を含む、請求項14に記載の方法。
- 16前記安全オブジェクトの前記データは、前記安全オブジェクトの前記コードが実行さていれる間だけアクセス可能なプライベート情報を含む、請求項14に記載の方法。
- 17前記メカニズムでの使用のため安全オブジェクトを生成するステップであって、前記安全オブジェクトは、前記安全オブジェクト内で処理されている間プライベート情報を復号する、前記安全オブジェクト中の命令を実行することによってだけ、復号されたフォーマットでアクセスが可能な前記プライベート情報を含む、前記生成するステップと、 前記生成された安全オブジェクトをメモリに送信するステップと、をさらに含む、請求項14に記載の方法。
- 18前記キー情報をロードする前記命令は第一命令を含み、前記メカニズムは、前記暗号エンジン中の前記キー情報を以前の状態に復元するための第二命令をさらに含む、請求項15に記載の方法。
- 19暗号化キー情報を復号することによって得られたキー情報を、前記暗号エンジン中にロードするステップをさらに含む、請求項15に記載の方法。
- 20前記安全オブジェクトとともに暗号法完全性チェック・メカニズムを用いるステップをさらに含む、請求項15に記載の方法。
- 21前記安全オブジェクトの前記実行の過程で別のオブジェクトを呼び出すステップ、および 前記安全オブジェクトの前記実行の過程で別のオブジェクトにメッセージを送信するステップ、の少なくとも一つを含む、請求項15に記載の方法。
- 22プライベート情報が第一安全オブジェクトから第二安全オブジェクトに渡されるときに前記プライベート情報を暗号化変換するステップをさらに含む、請求項21に記載の方法。
- 23請求項14に記載の前記方法を実行するマシン可読の命令のセットを有形に具現する記憶媒体。
- 24プロセッサが前記メカニズムを実行するための命令を格納する、コンピュータ・システム中のメモリ、 前記プロセッサが選択的に実行するための前記命令を格納する、前記コンピュータ・システム中のメモリ、および 前記命令を格納するための独立したディスケット、の一つを含む、請求項23に記載の記憶媒体。
- 25マシン可読の記憶媒体中に有形に具現されたデータ構造であって、前記データ構造は、暗号によってコンピュータ・システム中の他のソフトウエアから保護されたコードおよびデータを包含する安全オブジェクトを含む、前記データ構造。
- 26前記安全オブジェクトは、前記オブジェクトの前記コードがプロセッサ上で実行されている間前記安全オブジェクトのデータへのアクセスを提供するキー情報を、暗号エンジン中にロードする命令を含む、請求項25に記載のデータ構造。
- 27マシン上で実行されるマシン命令であって、暗号によって前記マシン中の他のソフトウエアから保護されたコードおよびデータを包含する安全オブジェクトをサポートするメカニズムを含む、前記マシン命令。
Independent claims27
68 paragraphs, as filed
The present invention generally relates to protecting data and software in a computer system from various forms of attack, including protection against attacks from other software in the computer system. More specifically, in one exemplary embodiment, two new machine instructions control encryption / decryption, and the sensitive software and data in the "safety object" are used by these sensitive software and data inside the CPU. It provides a mechanism to ensure that it is always encrypted except during the period it is.
The Internet is a powerful tool that has changed the world. As former chairman and CEO of IBM (IBM's registered trademark) said, "The Internet is the only one we have ever experienced to drive business, economic and social change. It's the strongest tool. "
But like many tools, this tool can be both good and bad. Every week, we hear of Internet-based attacks where systems are compromised and sensitive information is stolen.
Some of the recent news is: UK MI5: Top Company Targeted by China's Cyber Attack, (London) Times, December 3, 2007, Massive data breaches due to illegal software: A malicious computer program secretly installed on a server at Hanaford Brothers Supermarket leaks 4.2 million debit and credit card information, AP, 2008 March 28, 2014 Russian delinquents hijack PCs on a large scale, The New York Times, August 6, 2008, 8 million people are at risk of identity fraud due to the theft of credit card statements by hotel chain hackers, (UK) Daily Mail, August 25, 2008, New York Mellon Bank data breach now affects 12.5 million, Reuters, August 28, 2008, and U.S. officials accused 11 people in five countries of stealing tens of millions of credit and debit card numbers from several retailers, including TJX Companies, Reuters, August 28, 2008 ( Quoted from the New York Bank article above).
There are many other similar cases.
<p> In this way, software that helps prevent information theft from a computer system by an internet-based attack and allows an attacker to capture sensitive data and software in the computer system into the target computer system. There is a need for systems and methods that can be protected from other software, including.</p>
<p> Typical features of the present invention, in view of the above and other typical problems, drawbacks, and disadvantages of conventional systems, protect the computer system from other software in the computer system by cryptography. It is to provide a processor that includes a mechanism for supporting safety objects, including code and data.</p><p> Another typical feature of the present invention is a structure for maintaining at least one of the data and code as a cryptographically protected portion of the secure object, except when the secure object is actually being processed in the CPU. And to provide a method.</p><p> Another typical feature of the present invention is the crypto engine and the machine instructions to load the key into the crypto engine for decrypting the secure object as it enters the CPU for processing the secure object. It is to provide a mechanism to include.</p><p> Accordingly, in the first exemplary embodiment of the specification, a processor in a computer system that incorporates a mechanism that supports secure objects containing code and data that are cryptographically protected from other software in the computer system. Will be described.</p><p> Also included in the second exemplary embodiment of the present specification is a cryptographic engine for providing access to the secure object and an instruction to load the key into the cryptographic engine while the code for the secure object is running on the processor. The mechanism to do this will be explained.</p><p> Further, in the third embodiment of the present specification, a method of protecting private information and a storage medium for storing a machine-readable instruction for executing the method will be described.</p><p> In addition, a fourth exemplary embodiment of the specification describes a data structure tangibly embodied in a machine-readable storage medium that is cryptographically protected from other software in a computer system.</p><p> In addition, a fifth exemplary embodiment of the specification describes machine instructions that provide a mechanism for supporting secure objects that include code and data that are cryptographically protected from other software in a computer system.</p><p> Therefore, the present invention is always cryptographically protected, except while the private data in the data structure is being processed in the CPU in the computer system, thereby, against the private data, in the computer system. It provides new machine instructions and data structures that provide protection from other software inside.</p><p> The aforementioned and other objectives, embodiments and advantages will be better understood below by elaborating on an exemplary embodiment of the invention with reference to the drawings.</p>
<figref num="1">Shows a high-level language description of Security Object 100 that contains code and data that is cryptographically protected from other software.</figref><figref num="2">An example of a low-level implementation 200 (eg compiled version) of a safety object.</figref><figref num="3">FIG. 300 shows an exemplary block diagram 300 of a microprocessor that provides support for safety objects.</figref><figref num="4">The esm instruction format 400 used to implement the safety object is shown below.</figref><figref num="5">The handle of the esm instruction is decrypted in order to illustrate the concept 500 of the second exemplary embodiment and find the encryption / decryption key.</figref><figref num="6">A process 600 for constructing an executable file containing a safety object is shown for the first exemplary embodiment.</figref><figref num="7">A second exemplary embodiment shows another process 700 that builds an executable file containing safety objects that can be used.</figref><figref num="8">Indicates how a safety object calls or sends a message to another object.</figref><figref num="9">An exemplary hardware / information processing system 900 for incorporating the present invention is shown.</figref><figref num="10">A signal-carrying storage medium 1000 (eg, storage medium) for storing the steps of the program of the method according to the invention is shown.</figref>
Hereinafter, exemplary embodiments of the method and structure according to the invention will be described with reference to the drawings.
The present invention provides a mechanism for implementing a novel construct "safety object" that provides strong defense against software attacks. This safe object, like objects in other object-oriented programming languages, contains data and code that manipulates the data and provides access to it. Security objects exist in existing programming languages, such as Java, in that the security object's private code and data are cryptographically protected so that no other software can access the security object's private information. Different from the object to do.
Figure 1 presents an example of what the safety object 100 might look like in a high-level programming language. This safety object includes private data 101 and private methods 102, as well as methods that allow access to the safety object through its public interfaces 103, 105. Other software can use safety objects (ie, other software can "call" or "send messages" to safety objects), while other software has a public interface. Safe objects can only be accessed via 103, 105.
In secure object-based systems, private information is almost always encrypted. It is encrypted both in the paging system and in the file system while it is in memory and on disk.
Figure 2 shows what a compiled version 200 of a safe object can look like in memory.
The private information of a secure object is "unencrypted" only when: When accessed from inside the safety object Only while the information is inside the microprocessor.
Other code does not have access to the secure object's private information, so a software attack that enters the system through a vulnerability in another software module can encrypt the secure object's private information. There is no way to access the version that is not available. As shown in Figure 2, the encrypted private information can include private code and private data, which correspond to the private code 102 and private data 101 in Figure 1. ..
In an exemplary embodiment used to illustrate the concepts of the invention, the novel design is used to enter and exit public methods of safety objects, "enter secure methods" and. Includes two new instructions, "esm" and "lsm", respectively, corresponding to "leave secure method".
The esm instruction loads some cryptographic key information into a special register used to decrypt the private code and data of the secure object as it moves from memory into the microprocessor. Other data passed to this method, such as arguments, and the return address saved when the safe object is called are accessed without this encryption.
FIG. 3 is a block diagram 300 of microprocessor 301 that provides support for safety objects. This microprocessor executes code in much the same way as today's commonly used microprocessors, but (1) decrypts sensitive information as it is moved from external memory 303 into the L1 cache 304. (2) Includes a cryptographic engine 302 for encrypting sensitive information as it is moved from the L1 cache 304 to the external memory 303. This encryption is used to ensure that other software, including viruses, worms, and other "attack software," cannot obtain an unencrypted version of sensitive information.
Figure 3 also shows a block 305 in the crypto engine labeled as a "key" that holds the keys used in the encryption and decryption process. This key block could contain a set of cryptographic registers specially specified to hold these keys. The cryptographic engine 302 could be a coprocessor associated with the processor 307, or the cryptographic engine could be a function executed by the CPU processor itself.
The lsm instruction can consist only of opcodes, which restores the previous state of the special cryptographic register 305, so that when returned to a secure method, normal insecure code is executed without this encryption and decryption. it can.
In this secure object system, the keys 305 used to decrypt the secure object's private information are available for the secure object, but no other code can use these keys.
As illustrated in Figure 4, the esm instruction 400 puts the key in opcode field 401 and the special cryptographic key register in key block 305 to provide access to the object's private data. It has an operand field 402, called the "handle" of opcode field 401, which is used to load. However, the key used to decrypt the private information of the "object" must not be available to any other code, so the handle provides an indirect reference to the cryptographic key information that cannot be used by other software. This process will be described in more detail later.
Inside the secure object, private information is decrypted on the path from memory 303 to CPU 307 and encrypted on the path from CPU 307 to memory 303. This cryptography includes the integrity of the private code and data of secure objects and the cryptographic integrity value to protect their confidentiality. Thus, when hostile software, or a software bug, or a software attack from another software module "tampers" an object's private code or data, the object then accesses that code or data. When doing so, the cryptographic hardware will generate a cryptographic integrity exception.
In contrast, when a secure object updates its private data 101, the "object" key is used to update its cryptographic integrity value, and when the "object" later accesses this data, the integrity. No exception is raised. Cryptographic and decryption processes, including cryptographic integrity protection, could be performed as described in the concurrent pending applications identified above.
This integrity protection is also essential to protect the keys that provide access to the object's private information. When hostile software attempts to use the safe object's handle (which can be used in the safe object's esm instruction) with some other code, the use of this "other" code generates a cryptographic complete exception. , The execution will be terminated. Since the key is not available to the hostile software, the hostile software cannot generate code that passes the cryptographic integrity check when the key is used. And since the hostile software has no way to get or use the key other than through the handle, the hostile software has no way to gain access to the key or private information of the safety object.
In one exemplary implementation, cryptographic key information and handle-to-key mappings are stored in protected area 306, which is inaccessible to software. In this implementation, when the CPU executes an esm instruction, the CPU gets a handle from the esm instruction, maps that handle to cryptographic key information, and then puts this cryptographic key information in a special cryptographic register in key block 305. Load.
In the second exemplary implementation 500 shown in FIG. 5, the handle is designed in such a way as to eliminate the need to store the cryptographic key information of the object. In this design, the handle is an encrypted form of the key information of the secure object, which is encrypted under a special "system key" that is not available to the software. In this design, in executing the esm instruction, the CPU decrypts the handle using the above system key to obtain the key information of the object, and then loads the key information of the object into the encryption register to make the object private. Provide access to information. This system key must be further protected, but this design is more extensible because it does not need to store a large number of object keys and handle-to-object key mappings. Is high.
Details on one method of implementing this encryption, decryption, and integrity checking are given in the co-pending application identified above.
Figures 6 and 7 illustrate the process of building an executable file with safety objects for the two implementations mentioned above.
Figure 6 shows process 600 building an executable file for the first exemplary implementation. In addition to the normal compiler processing 601 in step 602, the compiler will generate esm and lsm instructions at the entry point and future return point of the safety object into the public method. Subsequent additional processing, as shown in Figure 6. Associate the esm instruction for a given object with a handle (step 603), Link the handle of the object to cryptographic key information to protect confidentiality and integrity (step 604), Encrypt the object's private code and data using the key information of each object (step 605), and Store key information and handle-to-key mappings in a protected area that is not accessible to most software but is used in the execution of esm instructions (step 606). It will be.
Figure 7 shows process 700 building an executable file for the second exemplary implementation. As in the previous case, normal compiler processing is done in step 701, and in step 702 the compiler generates esm and lsm instructions at the entry point and future return point of the safety object to the public method. It will be. However, the additional processing in this case is Generate cryptographic key information for each secure object (step 703), Encrypt the private code and data of each object using the encryption key information of that object (step 704). Encrypt the encryption key information for each object using a special "system key" (step 705), and Use the encryption form of the key information of each object as a handle in the esm instruction of that object (step 705), It will be.
This additional processing will be done in a small, carefully scrutinized and reliable program.
In the second implementation, this additional processing does not need to be performed on the system on which the executable file is operated. The additional processing may be performed on another creation machine, and then sent to a desired destination machine for execution.
When this process is complete, the safe object in the executable is "safe". They are protected from bugs in other software modules, including bugs in privileged software such as device drivers, operating systems, and hypervisors, or attacks from them. In the second implementation above, these objects are protected while they are "in transit" from the creating machine to the desired destination machine.
This design makes it possible to know that the content of a given safety object is indeed secure, without having to prove the accuracy of millions of lines of OS, middleware, and application code. This design only needs to prove the accuracy of the safety object mechanism described above and the design accuracy of a particular safety object.
[Use of safety objects] Safety objects could be used to avoid the types of security breaches described in the "Background Technology" section above. Had the confidential information been stored in a secure object, for example, the theft of 4.2 million credit and debit cards could have been avoided. No software other than the safety object itself will have a complete list available, careful design, keeping the "object" code as small as possible, and carefully scrutinizing the "object" code for software vulnerabilities. By doing so, the problem of software attacks on the code of safety objects could be minimized or avoided. As mentioned earlier, you don't have to prove the accuracy of millions of lines of application and system code, you just need to prove the accuracy of safety objects.
In addition to protecting the "objects" themselves, they also protect the routes of entry and exit to safe objects, and software attacks "eavesdrop" on these routes, collecting large amounts of sensitive information over time. You also need to make it impossible.
These routes can be protected by standard communication security mechanisms. In a "good" design, sensitive information is never vulnerable. Confidential information sent to the secure object will be protected by the communication security mechanism until it is safely inside the secure object. Similarly, sensitive information sent by a secure object will be protected by a communication security mechanism before it leaves the secure object.
With this type of design, attack software would not be able to obtain any sensitive information from the system. Attack software will not be able to obtain sensitive information that resides within the secure object, and will not be able to steal sensitive information when it is sent to or will be received by the secure object.
[Object that calls another object] Safe objects can call (or send messages to) other objects. That is, the safe object can use both a safe object and an unsafe object. An example of this is illustrated in Process 800, which is exemplified in FIG.
In this example, ProcessCardRequest 801 is a secure object that contains sensitive credit card information. ProcessCardRequest 801 calls another secure object, EncryptAndDecrypt 802, to encrypt sensitive information sent to remote systems. ProcessCardRequest 801 then calls the ordinary unsafe object SendandReceiveMsg 803 to send an already encrypted message for transmission to a remote system.
It should be noted that the object that encrypts and decrypts the confidential information must be a secure object because it needs to access the confidential information in the "unencrypted state". On the other hand, an object that sends a message to a remote system is a normal insecure object if the data it receives for transmission is already encrypted for protection during "in transit" between systems. can do. Also note that if a secure object calls another object, the cryptographic key information must be set up properly for the called object.
This example shows another aspect of the safety object. As mentioned earlier, the private information in the secure object is almost always encrypted. On the other hand, the public information in the secure object is not encrypted, that is, it is not encrypted under the secure object cryptography. If the ProcessCardRequest class has a public field for storing encrypted messages that will be passed to the remote system, that field can be passed to an unsecured SendandReceiveMsg object, which is described by the secure object's cryptography. Since it is not "disturbed", the SendandReceiveMsg object will see the same message that the ProcessCardRequest sees.
Confidential information is not vulnerable in this design. It is always protected by either secure object cryptography or communication cryptography.
Additional details Interrupts and process dispatching When an interrupt is made to a secure object, the state of the special cryptographic hardware that provides access to the secure object's private information must be preserved. Then, when the safety object resumes execution later, its state must be restored. Access to the "object" key by device drivers, or process dispatching code or other operating system level code, is not desirable as it can jeopardize the security of the "object". , Interrupt handlers and OS-level code will save and restore handles instead of keys, and loading handles into handle registers will load the appropriate key information into the cryptographic hardware. .. The current state of the crypto handle is only another element of the "process context" that must be saved and restored when a process is suspended and resumed.
Swapping, paging, and executables in the file system When a process is in memory, the private information in its secure object is encrypted as described above, and the rest of the code and data is in an unencrypted state. When swapped or paged out to disk, the process image has the same shape, i.e. the secure object is encrypted and there is no residual code and data. Therefore, safe objects are also safe when swapped or paged without any special action in the swapping or paging system.
As mentioned above, encryption, decryption, and integrity protection could be performed as described in the co-pending application identified above. However, in this case, the addresses used in encryption, decryption, and integrity checks can change because the physical addresses of the code and data can change when the process or part of the process is swapped or paged to disk. It is based on virtual addresses rather than physical addresses.
The executable in the file system has the same protection as when it is in memory, the private information in the secure object is encrypted, and the rest of the executable is not. If the file is brought into memory to spawn a new process, no special action is required.
Passing arguments and return values When one object calls another, the arguments and return values usually have to be "understandable" for both objects, and in some cases cryptographic conversion of these values may be required. is there. There are several cases to consider. 1. An ordinary unsafe object calls another ordinary unsafe object. The arguments and return values are "unencrypted" on both the calling and called objects. No conversion required. 2. A safe object calls an unsafe object. In this case, the fields in the safe object used to pass arguments to or receive a return value from that unsafe object should be public. (If the information is exposed in an unsecured object, there is no point in making it private in the secure object.) These fields will be in "unencrypted state" and therefore conversion is required. Absent. 3. An unsafe object calls a safe object. In this case, the fields in the safety object used for the passed arguments and the return value should be public. These fields will be in "unencrypted state" and therefore no conversion is required. 4. A safety object calls another safety object. In this case, the private information passed in this call must be decrypted using the key of the calling object and re-encrypted using the key of the called object. This can be done in the esm instruction. Similarly, when a return value is passed to a private field in the calling object, that information must be decrypted using the called object's key and re-encrypted using the calling object's key. This can be done in the lsm instruction.
File system I / O The secure object should also have the ability to store and retrieve private information in the file system. And this private information must remain private while in the file system. This can be done by calling a safety object from the file system to perform a safe read and a safe write to it. In addition to the file descriptor, buffer, and buflen arguments, the file system has private information that is written to the file, for example, by receiving arguments or arguments to the encryption key information with the SecureWrite method. In the meantime, it will be protected by cryptography and its confidentiality and completeness will be protected. Similarly, the SecureRead method can take an argument or set of arguments to the cryptographic key information and read it this way to validate the integrity of the private information it reads from the file system. Yeah. (This cryptographic key information could be stored in a private field or group of fields in a secure object that calls the SecureWrite and SecureRead methods.) SecureRead and SecureWrite are the "standard" of the actual file system I / O. Read and write system calls could be used to perform all required cryptographic encryption, decryption, and integrity checks. (The "address" used for encryption and decryption in file system I / O could be a few bytes at the beginning of the file.)
cache Also, the private information of secure objects should be protected if they appear to be "unencrypted" in the L1, L2, and L3 caches. In one implementation, encryption and decryption is done between the L1 and L2 caches, as shown in Figure 3. In this design, private information in the L2 or L3 cache is cryptographically protected as if it were in external memory. In this design, the private information is unencrypted in the L1 cache, so it is necessary to ensure that this plaintext private information is not available to any other software.
If the safety object is interrupted, or if the safety object makes a call to code outside the safety object, one possible way is to execute the lsm instruction only in the L1 cache (or an entry that contains private information in the L1 cache). ) Is cleared. In one multi-core design, the L1 cache (or cache group) for a given CPU core is not available to other CPU cores.
In another design, encryption and decryption is done between the CPU core and the L1 cache. In this case, the private information in L1 is encrypted as if it were in external memory, but encrypted / decrypted whenever the private information is loaded from or stored in the L1 cache. Will have to be done.
Another design could include an additional "L0.5" cache between the L1 cache and the CPU. In this design, the L1, L2, and L3 caches all contain encrypted forms of private information, and L0.5 is used for the unencrypted form of private information in the execution of secure objects, and that's it. Will provide an additional level of cache that will be used for. The contents of this L0.5 cache will be cleared when returning to the safe method, when an interrupt occurs, and when the safe method calls code outside the safe object.
Safety process As mentioned above, safety objects can be used at the process level to protect all of the process's private information for its entire lifetime, including private information that the safety object stores in or retrieves from the file system. it can. The esm instruction will set up cryptographic protection at the beginning of execution, which will be used for the life of the process. As mentioned earlier, when a process makes a call to external code, such as an operating system call, the external code is executed without accessing the key of the safe object.
[wrap up] We have described new approaches to providing strong defenses against software-based attacks. This approach is based on a new construct, a safety object, which ensures that private information is private. The private information of a safe object is protected throughout its life cycle, whether it is in memory, paged out to disk, or written to the file system. Private information is protected by cryptography from device drivers, operating systems, and other software, including privileged software such as hypervisors. This cryptography prevents other software from acquiring private information or modifying it undetected.
The ability of secure objects allows us to prove that sensitive information is indeed secure, without the need to prove the accuracy of millions of lines of operating system, middleware, and application code. It is only necessary to prove the accuracy of the mechanism for the implementation of the safety object and the accuracy of the design of a given safety object.
Safety object functionality can be added to the processor in a "backward compatible" way. All existing code can be continuously executed without modification and without any performance disadvantages. Nevertheless, writing new code that leverages the security object feature can provide much stronger security for sensitive information.
[Typical hardware implementation] As mentioned above, the microprocessor shown in FIG. 3 has been improved by incorporating two new instructions, esm and lsm, and a cryptographic register and a cryptographic engine that includes the ability to clear these registers under the above circumstances. Also behaves much like a traditional microprocessor.
FIG. 9 shows a typical hardware configuration of an information processing / computer system according to the present invention, which is preferably at least one processor or central processing unit implemented to execute esm and lsm instructions, respectively. It has a central processing unit (CPU) 910.
The CPU 910 is via system bus 912, such as random access memory (RAM) 914, read-only memory (ROM) 916, (disk unit 921 and tape drive 940, etc.). Input / Output (I / O: input / output) adapter 918 (for connecting peripheral devices to bus 912), keyboard 924, mouse 926, speaker 928, microphone 932, or other user interface device or its User interface adapter 922 for connecting combinations to bus 912, communication adapters for connecting information processing systems to data processing networks, the Internet, intranets, personal area networks (PANs), etc. The 934 and bus 912 are interconnected to a display adapter 936 for connecting to a display device 938 and / or printer 939 (such as a digital printer).
In addition to the hardware / software environment described above, another aspect of the invention includes a computer-implemented method for performing the above method. As an example, this method can be implemented in the specific environment described above.
Such a method can be carried out, for example, by operating a computer and embodying it with a digital data processing device to execute a sequence of machine-readable instructions. These instructions can be contained in various types of signal-carrying storage media.
Thus, this aspect of the invention tangibly embodies a machine-readable instruction program that can be executed by a digital data processing device incorporating the CPU910 and hardware to carry out the method of the invention. It is aimed at program products including storage media.
The signal-carrying storage medium may include RAM built into the CPU 910, for example, as represented by a high speed access storage device. Alternatively, these instructions can be included in another signal-carrying storage medium, such as the Magnetic Data Storage Diskette 1000 (FIG. 10), which the CPU 910 can directly or indirectly access.
Whether contained in the diskette 1000, in the computer / CPU910, or in another medium, these instructions (eg, conventional "hard drive" or DASD storage devices (such as RAID arrays), magnetic tapes, electronic read-only memory (eg, ROM, EPROM, or EEPROM), optical storage devices (eg, CD-ROM, WORM, DVD, digital optical tape, etc.), Used in paper punch cards or transmission media such as communication links or radios that incorporate storage devices for storing instructions in various formats, such as digital or analog, that may be used to transmit computer instructions. It can be stored on a variety of machine-readable data storage media, such as other suitable signal-carrying storage media, including devices and memory. In certain exemplary embodiments of the invention, machine-readable instructions can include software object code.
Although the present invention has been described in the context of an exemplary embodiment, those skilled in the art will recognize that it is possible to practice the present invention using modifications within the spirit and scope of the appended claims. ..
Furthermore, it should be noted that Applicant's intent is to cover the equivalent of all claim elements, even if modified during subsequent procedural processing.
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| JP2001230770A | Cites | Japan | Examiner |
| JP2001230770A | Cites | Japan | Search report |
| JP2001318787A | Cites | Japan | Search report |
| JP2001318787A | Cites | Japan | Examiner |
| JP2002232417A | Cites | Japan | Examiner |
| WO2005096120A1 | Cites | World Intellectual Property Organization (WIPO) | Search report |
| WO2005096120A1 | Cites | World Intellectual Property Organization (WIPO) | Examiner |
| JP2006018528A | Cites | Japan | Examiner |
| JP2006309766A | Cites | Japan | Search report |
| JP2006309766A | Cites | Japan | Examiner |
| JP2007233426A | Cites | Japan | Search report |
| JP2007233426A | Cites | Japan | Examiner |
| JP2007514994A | Cites | Japan | Search report |
| JP2007514994A | Cites | Japan | Examiner |
| JP2008210225A | Cites | Japan | Search report |
| JP2008210225A | Cites | Japan | Examiner |
| JPH07287514A | Cites | Japan | Search report |
| JPH07287514A | Cites | Japan | Examiner |
56 members in 8 offices
Priority claims9
| Document | Office | Kind | Date |
|---|---|---|---|
| 12492738 | United States of America | – | |
| 49273809 | United States of America | A | |
| 49273809 | United States of America | A | |
| 2010001811 | United States of America | W | |
| 2010001811 | United States of America | W | |
| 2009492738 | – | – | – |
| 2010001811 | – | – | – |
| US20090492738 | – | – | – |
| WO2010US01811 | – | – | – |
Members56
| Document | Office | Kind | |
|---|---|---|---|
| US996966A | United States of America | A | |
| WO2010151322A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US2010332843A1 | United States of America | A1 | |
| US2010332850A1 | United States of America | A1 | |
| TW201112035A | Taiwan Province of China | A | |
| CN102428473A | China | A | |
| EP2446389A1 | European Patent Office (EPO) | A1 | |
| US2012216049A1 | United States of America | A1 | |
| US2012216051A1 | United States of America | A1 | |
| GB201215241D0 | United Kingdom | D0 | |
| JP2012531663AThis record | Japan | A | |
| DE102012215196A1 | Germany | A1 | |
| US2013061058A1 | United States of America | A1 | |
| GB2494512A | United Kingdom | A | |
| US8578175B2 | United States of America | B2 | |
| GB2494512B | United Kingdom | B | |
| US2014181533A1 | United States of America | A1 | |
| US8819446B2 | United States of America | B2 | |
| JP5613232B2 | Japan | B2 | |
| US2015019876A1 | United States of America | A1 | |
| TWI471754B | Taiwan Province of China | B | |
| US8954752B2 | United States of America | B2 | |
| US9098442B2 | United States of America | B2 | |
| US2015317256A1 | United States of America | A1 | |
| US9298894B2 | United States of America | B2 | |
| US2016140329A1 | United States of America | A1 | |
| US2016171250A1 | United States of America | A1 | |
| US9372967B2 | United States of America | B2 | |
| WO2016097954A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US2016188494A1 | United States of America | A1 | |
| CN102428473B | China | B | |
| US2016253485A1 | United States of America | A1 | |
| US9471513B2 | United States of America | B2 | |
| US2016364344A1 | United States of America | A1 | |
| US2017134402A1 | United States of America | A1 | |
| US9690717B2 | United States of America | B2 | |
| US2017220809A1 | United States of America | A1 | |
| US9727709B2 | United States of America | B2 | |
| DE112015005602T5 | Germany | T5 | |
| US9846789B2 | United States of America | B2 | |
| US9864853B2 | United States of America | B2 | |
| US9875193B2 | United States of America | B2 | |
| JP2018502371A | Japan | A | |
| US2018060610A1 | United States of America | A1 | |
| US2018103046A1 | United States of America | A1 | |
| US9954875B2 | United States of America | B2 | |
| US10007793B2 | United States of America | B2 | |
| US10007808B2 | United States of America | B2 | |
| US10362045B2 | United States of America | B2 | |
| US2019260771A1 | United States of America | A1 | |
| JP6580138B2 | Japan | B2 | |
| US10628579B2 | United States of America | B2 | |
| US2020218799A1 | United States of America | A1 | |
| US10785240B2 | United States of America | B2 | |
| US11907361B2 | United States of America | B2 | |
| DE112015005602B4 | Germany | B4 |
13 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Certificate of patent or registration of utility modelJAPANESE INTERMEDIATE CODE: R150R150 | R150 | |
| First payment of annual fees (during grant procedure)JAPANESE INTERMEDIATE CODE: A61A61 | A61 | |
| Written decision to grant a patent or to grant a registration (utility model)JAPANESE INTERMEDIATE CODE: A01A01 | A01 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A821A521 | A521 | |
| Notification of resignation of power of sub attorneyJAPANESE INTERMEDIATE CODE: A7434RD14 | RD14 | |
| Decision of grant or rejection writtenTRDD | TRDD | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A821A521 | A521 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A821A521 | A521 | |
| Written amendmentJAPANESE INTERMEDIATE CODE: A523A521 | A521 | |
| Notification of acceptance of power of sub attorneyJAPANESE INTERMEDIATE CODE: A7432RD12 | RD12 | |
| Notification of reasons for refusalJAPANESE INTERMEDIATE CODE: A131A131 | A131 | |
| Report on retrievalJAPANESE INTERMEDIATE CODE: A971007A977 | A977 | |
| Written request for application examinationJAPANESE INTERMEDIATE CODE: A621A621 | A621 |
Numbers
- Publication
- 2012531663
- Publication, DOCDB
- 2012531663
- Publication, EPODOC
- JP2012531663
- Application
- 2012517492
- Application, DOCDB
- 2012517492
- Application, EPODOC
- JP20120517492
Titles2
- Japanese
- コンピュータ・システム中の安全オブジェクトに対するサポート
- English
- Support for safety objects in computer systems
Classification
- CPC, 3
- G06F21/125
- G06F21/72
- G06F21/10
- IPC, 3
- G06F21 02
- G06F21 24
- G06F21 22
Designated states4
- Regional, 4
- Zimbabwe
- Turkmenistan
- Türkiye
- Togo