Protection of application secrets
AssigneeMicrosoft Corporation
InventorBlair B. Dillaway
Life of this patent
Estimating the term…
Loading patent…
AssigneeMicrosoft Corporation
InventorBlair B. Dillaway
Estimating the term…
A method and system for securely storing, managing, and sending critical application data (application secrets) are disclosed. The invention provides an application program interface (API) through which applications (code components) can request a secure store component (SSC) store an application secret, retrieve an application secret, and send an application secret from one code component to another. The SSC encrypts and stores the application secrets using a symmetric cipher algorithm with a key derived by combining machine-specific entropy and evidence associated with the application (or code component), using a mechanism such as a hashing function. When an application requests the SSC to return a stored application secret, the SSC decrypts the secret using a key derived from machine-specific entropy and evidence associated with the application requesting the secret. A secret owning application can also request the SSC to create an object storing the encrypted secret, evidence associated with an intended recipient, and evidence associated with the owning application, in order to send the application secret to another code component.
A method of encrypting data, comprising steps of:
A method of retrieving protected data, comprising steps of:
A method of securely communicating a first application's data to a second application, comprising steps of:
A data structure stored on a computer readable medium, comprising:
A computer, comprising:
An application program interface (API), comprising:
A method for storing application secrets, comprising steps of:
A method for retrieving previously encrypted and stored data, comprising steps of:
Dependencies are inferred from the claim text.
From the US filing history. Foreign family members aren’t listed.
Backward citations are indexed for grants only.
Protecting access to data via a platform, e.g. using keys or access control rules: to a single file or object, e.g. in a secure envelope,…
Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords: generation of secret information…
Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords: escrow, recovery or storing of secret…
Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for…: file…
Term end not estimated
The invention relates generally to computer systems. More specifically, the invention relates to protecting information critical to an application's functionality by encrypting data based on machine-specific entropy and application-specific evidence, and securely communicating the protected information from one code component to another.
The rapid emergence of Internet applications based on multi-tier architectures with componentized code has created a need for heightened computer security. That is, software applications are no longer stored in and executed from a single monolithic file. Instead, applications are created from multiple components, potentially running on multiple machines, and delivered and executed across multiple networks. As computer systems increasingly rely on these distributed system and network architectures, computer software must increasingly protect secrets critical to the application's functionality, including cryptographic keying material, passwords, and message digests (or hashes) used to verify the integrity and authenticity of one piece of computer software to another.
For example, with reference to FIG. 3, a server 301 running internet web server software (e.g., Internet Information Server) communicates with local client machines 303-309, each running a web browser (e.g., Microsoft Internet Explorer®). In many cases the client needs to know it is talking with the right web server before providing payment information for an electronic purchase. Typically, this is handled by creating a secure SSL communications channel with server authentication. This creates a problem for the developer of the Internet web server software. SSL authentication requires storage of a private cryptographic key for this purpose, along with a public server X509 certificate. This private key needs to be kept hidden and only made available for use in Internet web service authentication. If a hostile entity can compromise this key, they can impersonate the service and potentially cause significant harm to the clients and to the service owner's business. However, current operating systems and virtual machine environments do not support hiding such secrets such that only a single application can use them. The result is that each application developer must come up with his or her own approach to hiding such secrets or accept a potentially serious risk that must be mitigated using deployment and administrative procedures.
The foregoing summary, as well as the following detailed description, may be better understood when read in conjunction with the accompanying drawings, in which like reference numerals identify like elements, and which are included by way of example, and not by way of limitation with regard to the claimed invention.
FIG. 1 illustrates a schematic diagram of an exemplary general-purpose digital computing environment that may be used to implement various aspects of the present invention.
FIG. 2 illustrates a block diagram of a computer readable medium according to one or more aspects of the invention.
Aspects of the present invention use a combination of machine-specific entropy and application-specific evidence to securely manage and communicate critical application information stored in an encrypted data store. One or more aspects of the invention are applicable to any general purpose computing platform capable of running a variety of operating systems, virtual machines; and applications, including PCs running WINDOWS®, LINUX®, MacOS®, or SOLARIS® brand operating systems and the like, as well as PDA devices, Tablet PCs, pen-based computers, and other data processing systems. FIG. 1 illustrates a schematic diagram of an exemplary conventional general-purpose digital computing environment that may be used to implement various aspects of the present invention. In FIG. 1, a computer 100 includes a processing unit 110, a system memory 120, and a system bus 130 that couples various system components including the system memory to the processing unit 110. The system bus 130 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory 120 includes read only memory (ROM) 140 and random access memory (RAM) 150.
A basic input/output system 160 (BIOS), containing the basic routines that help to transfer information between elements within the computer 100, such as during start-up, is stored in the ROM 140. The computer 100 also includes a hard disk drive 170 for reading from and writing to a hard disk (not shown), a magnetic disk drive 180 for reading from or writing to a removable magnetic disk 190, and an optical disk drive 191 for reading from or writing to a removable optical disk 192, such as a CD ROM or other optical media. The hard disk drive 170, magnetic disk drive 180, and optical disk drive 191 are connected to the system bus 130 by a hard disk drive interface 192, a magnetic disk drive interface 193, and an optical disk drive interface 194, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules, and other data for the personal computer 100. It will be appreciated by those skilled in the art that other types of computer readable media that may store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the example operating environment.
A number of program modules may be stored on the hard disk drive 170, magnetic disk 190, optical disk 192, ROM 140, or RAM 150, including an operating system 195, one or more application programs 196, other program modules 197, and program data 198. A user may enter commands and information into the computer 100 through input devices, such as a keyboard 101 and a pointing device 102. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices often are connected to the processing unit 110 through a serial port interface 106 that is coupled to the system bus 130, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). Further still, these devices may be coupled directly to the system bus 130 via an appropriate interface (not shown). A monitor 107 or other type of display device is also connected to the system bus 130 via an interface, such as a video adapter 108. In addition to the monitor 107, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. As one example, a pen digitizer 165 and accompanying pen or user input device 166 are provided in order to digitally capture freehand input. The pen digitizer 165 may be coupled to the processing unit 110 via the serial port interface 106 and the system bus 130, as shown in FIG. 1, or through any other suitable connection. Furthermore, although the digitizer 165 is shown apart from the monitor 107, the usable input area of the digitizer 165 may be co-extensive with the display area of the monitor 107. Further still, the digitizer 165 may be integrated in the monitor 107, or may exist as a separate device overlaying or otherwise appended to the monitor 107.