Preventing persistent storage of cryptographic information using signaling
Claim Score by NHIP
Abstract
Organizations maintain and generate large amounts of sensitive information using computer hardware resources and services of a service provider. Furthermore, there is a need to be able to delete large amounts of data securely and quickly by encrypting the data with a key and destroying the key. To ensure that information stored remotely is secured and capable of secure deletion, cryptographic keys used by the organization should be prevented from being persistently stored during serialization operations. Signaling methods are used to notify virtual machine instances of serialization events in order to prevent keying material from being stored persistently.

Term
7.1 yearsto projected expiry
Projected expiry 12 November 2033, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
20 claims: 3 independent, 17 dependent
- 1A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by one or more processors of a computer system, cause the computer system to at least:execute a hypervisor that controls interaction between a computer system instances and physical hardware of the system;expose two functions to the computer system instances, the two functions including at least: a first function that causes one or more cryptographic keys maintained by the computer system instances to be unavailable for inclusion in serialization data;and a second function that restores the one or more cryptographic keys to the computer system instances;determine that a serialization event is to occur;cause the hypervisor to signal the computer system instance that the serialization event is scheduled to occur by at least calling the first function, prior to the serialization event such that one or more cryptographic keys contained in the computer system instance is made unavailable for inclusion in serialization data;and generate serialization data lacking the one or more cryptographic keys as a result of the first function having been called.
- 5Broadest claimClaim Score 67, broad(NHIP)A system, comprising:one or more processors;memory that includes instructions that, when executed by the one or more processors, cause the system to: execute a hypervisor and a guest computer system;expose at least two functions to the guest computer system, the at least two functions comprising at least: a first function of the at least two functions configured to cause a cryptographic key contained by the guest computer system to be unavailable during serialization events;and a second function of the at least two functions configured to restore the cryptographic key to the guest computer system;signal to the guest computer system that serialization will occur by at least causing the guest computer system to execute the first function;and provide the cryptographic key to the guest computer system by at least calling the second function.
- 13A computer-implemented method, comprising:under the control of one or more computer systems configured with executable instructions, exposing, to a computer system instance, at least two functions, the at least two functions comprising: a first function configured to cause sensitive information contained in memory of the computer system instance to be unavailable for inclusion in serialization data;and a second function configured to restore the sensitive information to the computer system instance;detecting, by a hypervisor, that an event will occur which will expose sensitive information of the computer system instance;signaling the event will occur to the computer system instance by at least calling the first function;and at a time after signaling the event will occur, generating serialization data based at least in part on the computer system instance.
Independent claims3
76 paragraphs in 4 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
0001This application is a continuation of U.S. patent application Ser. No. 14/078,351, filed Nov. 12, 2013, entitled “PREVENTING PERSISTENT STORAGE OF CRYPTOGRAPHIC INFORMATION USING SIGNALING,” which incorporates by reference for all purposes the full disclosure of co-pending U.S. patent application Ser. No. 14/078,336, filed Nov. 12, 2013, entitled “PREVENTING PERSISTENT STORAGE OF CRYPTOGRAPHIC INFORMATION,” co-pending U.S. patent application Ser. No. 14/078,360, filed Nov. 12, 2013, entitled “SECURE DATA DESTRUCTION IN A DISTRIBUTED ENVIRONMENT USING KEY PROTECTION MECHANISMS,” and its continuation, co-pending U.S. patent application Ser. No. 14/981,804, filed Dec. 28, 2015, entitled “SECURE DATA DESTRUCTION IN A DISTRIBUTED ENVIRONMENT USING KEY PROTECTION MECHANISMS.”
BACKGROUND
0002The security of computing resources and associated data is of high importance in many contexts. As an example, organizations often utilize networks of computing devices to provide a robust set of services to their users. Networks often span multiple geographic boundaries and often connect with other networks. An organization, for example, may support its operations using both internal networks of computing resources and computing resources managed by others. Computers of the organization, for instance, may communicate with computers of other organizations to access and/or provide data while using services of another organization. In many instances, organizations configure and operate remote networks using hardware managed by other organizations, thereby reducing infrastructure costs and achieving other advantages. With such configurations of computing resources, ensuring that access to the resources and the data they hold is secure can be challenging, especially as the size and complexity of such configurations grow.
0003In this type of distributed computing resource environment, a variety of operations such as serialization, may expose sensitive information to risks during storage and transmission over networks. Customers of the service provider may execute computer system instances on hardware of the service provider and these instances may contain sensitive information. Serialization of instances may jeopardize the sensitive information contained in the instance, by causing the information to be stored persistently. These types of risks can create difficulties in managing secret information of a customer that is contained in instances.
BRIEF DESCRIPTION OF THE DRAWINGS
0004Various embodiments in accordance with the present disclosure will be described with reference to the drawings, in which:
0005<figref idref="DRAWINGS">FIG. 1</figref> shows a diagram illustrating various aspects of the present disclosure;
0006<figref idref="DRAWINGS">FIG. 2</figref> shows a diagram illustrating various aspects of the present disclosure;
0007<figref idref="DRAWINGS">FIG. 3</figref> shows an illustrative example of a device with which various embodiments can be practiced;
0008<figref idref="DRAWINGS">FIG. 4</figref> shows an illustrative example of a device with which various embodiments can be practiced;
0009<figref idref="DRAWINGS">FIG. 5</figref> shows a diagram illustrating various aspects of the present disclosure;
0010<figref idref="DRAWINGS">FIG. 6</figref> shows an illustrative example of a process for processing a request in accordance with at least one embodiment;
0011<figref idref="DRAWINGS">FIG. 7</figref> shows an illustrative example of a process for processing a request in accordance with at least one embodiment;
0012<figref idref="DRAWINGS">FIG. 8</figref> shows an illustrative example of a process for processing a request in accordance with at least one embodiment;
0013<figref idref="DRAWINGS">FIG. 9</figref> shows an illustrative example of a process for processing a request in accordance with at least one embodiment;
0014<figref idref="DRAWINGS">FIG. 10</figref> shows an illustrative example of a process for processing a request in accordance with at least one embodiment; and
0015<figref idref="DRAWINGS">FIG. 11</figref> illustrates an environment in which various embodiments can be implemented.
DETAILED DESCRIPTION
0016In the following description, various embodiments will be described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will also be apparent to one skilled in the art that the embodiments may be practiced without the specific details. Furthermore, well-known features may be omitted or simplified in order not to obscure the embodiment being described.
0017Techniques described and suggested herein relate to enhancements for data security in a manner that reduces risks associated with data transmission and/or storage. In various embodiments, plaintext cryptographic keys (also referred to simply as keys) are prevented from being written to persistent memory when various actions are performed on resources provided by a computing resource service provider (hereinafter service provider). Users of a service provider (and users of distributed systems, in general) may have large amounts of distributed data (e.g., data stored in more than one location over a network or several interconnected computers) which may make deleting this data difficult. Generally for the purpose of efficiency and security, it may be desirable to encrypt this data with one or more keys. Then once the data is to be deleted, the user may simply destroy the keying material. Destroying the keying material for encrypted data may be equivalent to destroying the data itself, since encrypted data is indecipherable without the corresponding keying material.
0018In various embodiments, the data described above may be generated, managed or stored using virtual machine instances (also referred to as instances). These instances may be executed using resources operated by the service provider. Techniques described herein are also applicable to physical computer systems, such as desktop computers. Aspects of the present disclosure may be used to protect the keys of various other computer systems that may have keying material exposed due to serialization or transmission over a network. These computer systems may have plaintext representations of various keys used to encrypt data for storage or other operations that may require data protection. In order to preserve the user's ability to delete the keying material and other sensitive data, thereby ensuring destruction of the data, plaintext representations of the keying material used by the virtual machine instances must not be written to persistent storage. Through a hypervisor, the user may indicate keying material or other sensitive information to be deleted and the hypervisor may selectively delete the keying material or other sensitive information directly. Preventing persistent storage of keys may also help ensure the user's data security. Various serialization events may occur during the operation of the instances that may lead to writing keys to storage or transmission of keying material. Generally, serialization may include the translation of one or more data structures of a computer system into a format suitable for persistent data storage. A command to execute serialization may be generated automatically such as when performing periodic snapshots, or a command may be generated explicitly such as by an instance requesting suspension.
0019In various embodiments, users of the service provider may operate one or more computer systems. The computer systems may incorporate resources or services of the service provider to perform various operations. The users may employ one or more cryptographic keys in order to keep information secret and may not wish to expose the keys to the service provider or any other third party, thereby exposing the user's secret information. Various techniques may be used to ensure the information is kept secret. For instance, the user's computer system may register function calls with the service provider, the function call may operate to ensure plaintext copies of the keys are not written to persistent storage or transmitted over a network and copies of the keys are restored to the computer system when required. A first function may be registered to delete copies of the keys from computer system memory before it is serialized and a second function may be registered to restore copies of the keys to the computer system memory when the computer system is deserialized. Various signaling methods may be used to signal to the computer system that a serialization event will occur and allow the computer system to take the necessary steps to protect any cryptographic keys that may be contained in memory.
0020In various other embodiments, the computer system or a system of the service provider, may designate a particular area of memory for key storage and ensure the memory area is not serialized during one or more serialization operations. Furthermore, a signaling method may be used to indicate to the computer system that a serialization event will occur, and a time out period may be used to allow the computer system time to ensure that no plaintext representations of the keys are outside the designated memory area. The service provider may also encrypt the designated area of memory before one or more serialization operations of the particular serialization event occurs in order to ensure that secret information is not exposed. In order to ensure that keying material is not exposed to the service provider or another party, various security modules may be used, such as a Trusted Platform Module (TPM) or Hardware Security Module (HSM). These types of cryptographic key management devices may generate keying material for the computer systems and restore the keying material during deserialization. The security modules may be operated by the user or the service provider and may be virtualized in various embodiments. The service provider may also maintain an audit log in order to track actions performed and ensure that serialized data lacks any plaintext representations of keys used by instances.
0021<figref idref="DRAWINGS">FIG. 1</figref> is an illustrative example of an environment <b>100</b> illustrating various aspects of the present disclosure. As noted above, techniques described herein are applicable to ensuring data destruction and data security using cryptographic keys. Accordingly, <figref idref="DRAWINGS">FIG. 1</figref> shows a computer system instance <b>102</b> with one or more cryptographic keys stored in memory of the instance. The computer system instance may be managed by a hypervisor (also referred to as a virtual machine manager or virtual machine monitor), with the hypervisor operated by the service provider. At some point in time during the operation of the computer system instance a serialization event <b>104</b> may be detected. In various other embodiments, the hypervisor or some other service of the service provider may determine that a serialization event will occur. The serialization event <b>104</b> may be, for example, a snapshot of the computer system. Snapshots may be performed at periodic intervals (e.g. as periodic backups), the keys may be removed from instance memory prior to the snapshot and restored after the snapshot operation is complete, so as to prevent serialization of the keys. The serialization event <b>104</b> may cause instance data <b>110</b> to be written persistently to storage <b>108</b>. At some point in time before serialization event <b>104</b>, one or more various techniques may be used to ensure that the one or more cryptographic keys stored in memory of instance <b>102</b> are not included in instance data <b>110</b> when it is written to storage <b>108</b>.
0022A hypervisor managing the instance <b>102</b>, in various embodiments, exposes one or more functions to the instance <b>102</b> in order to enable instance <b>102</b> to delete cryptographic material before instance data is serialized. The hypervisor may call one or more functions before serializing the data. Furthermore, the hypervisor may wait for a response from the instance <b>102</b> indicating that the keys have been deleted before proceeding with serialization. A timeout period (also referred to as a grace period), for the response from the instance <b>102</b> may be set such that at the end of the timeout period the instance is serialized even if no response has been received. The keys of the instance <b>102</b> may also be encrypted in order to protect secret information during serialization. The keys may be encrypted by the hypervisor during serialization, the instance before serialization or some other suitable system of the service provider. The hypervisor may also communicate with the instance <b>102</b> and establish an area of memory which the hypervisor will not serialize during serialization of the instance <b>102</b>.
0023At some point in time after the serialization event <b>104</b> is completed, the computer system instance may be deserialized using instance data <b>110</b> retrieved from storage <b>108</b>. Using the example above, at some point in time after the snapshot is created the computer system instance may be launched using the created snapshot. The instance data <b>110</b> may not contain the one or more cryptographic keys contained in memory of instance <b>102</b> and in order for the instance <b>106</b> to function as it did before the serialization event <b>104</b>, the keys must be restored. The instance <b>106</b> may be responsible for restoring the one or more cryptographic keys, or the hypervisor may replace the keys before launching the instance <b>106</b>. In various embodiments, a security module may be used to manage the one or more keys of the instance. For example, the HSM or TPM may be used to restore keys when the instance <b>106</b> is launched. For example, once all the instance data <b>110</b> is retrieved from storage <b>108</b> and loaded into memory, the hypervisor may transmit a request to an HSM to restore the keys of the instance <b>106</b>.
0024<figref idref="DRAWINGS">FIG. 2</figref> is an illustrative example of an environment <b>200</b> illustrating, various aspects of the present disclosure. Accordingly, <figref idref="DRAWINGS">FIG. 2</figref> shows computer systems (also referred to as a physical host) <b>202</b> and <b>218</b>, may be a physical host or other suitable computing device located in one or more data centers. Computer system <b>202</b> may be in a distinct geographic location from computer system <b>218</b>. For example, computer system <b>202</b> may be in a different legal jurisdiction from computer system <b>218</b>. Physical hosts <b>202</b> and <b>218</b> may each operate multiple virtual machines <b>204</b> and <b>216</b>, although for clarity only one is shown. The physical hosts <b>202</b> and <b>218</b> may manage the virtual machine with a hypervisor <b>208</b>. The hypervisors <b>206</b> and <b>222</b> may control the guest operating systems (also referred to as a guest computer system) <b>208</b> and <b>220</b> interactions with the hardware of the physical host <b>202</b> and <b>218</b>. The physical hosts <b>202</b> and <b>218</b> may be connected to a server <b>212</b> over a network <b>210</b>. The server may contain one or more storage devices <b>214</b> (for clarity only one is shown) that may be used in various embodiments of the present disclosure, for serializing data corresponding to the guest operating systems <b>206</b> and <b>220</b>.
0025During serialization operations, cryptographic keys of the guest operating systems <b>208</b> and <b>220</b> may be written persistently to storage device <b>214</b> and transmitted over network <b>210</b>. To ensure protection of the cryptographic keys, various techniques described above may be used. For example, the hypervisors <b>206</b> may signal to the guest operating system <b>208</b> that serialization of data corresponding to the guest operating system will occur. The guest operating system <b>208</b> may then perform one or more operations to protect cryptographic keys contained in the guest operating system. The one or more operations may include deleting the cryptographic keys or encrypting cryptographic keys with a separate key. In various embodiments, the hypervisor <b>206</b> does not signal the guest operating system <b>208</b>. For example, at some point during execution of the guest operating system <b>208</b>, the hypervisor <b>206</b> and the guest operating system <b>208</b> may coordinate a particular area of memory which will be excluded from serialization during any serialization events. The particular area of memory may be virtual memory addressed by the virtual machine instance or physical memory of the underlying hardware executing the virtual machine instance.
0026<figref idref="DRAWINGS">FIG. 3</figref> is an illustrative, simplified block diagram of an example device <b>300</b> that may be used to practice at least one embodiment of the present disclosure. In various embodiments, the device <b>300</b> may be used to implement any of the systems illustrated herein and described above, such as the physical hosts described above in connection to <figref idref="DRAWINGS">FIG. 2</figref>. For example, the system <b>300</b> may be used to execute virtual machine instances, monitor the instances, manage the instance and perform one or more serialization operations. For example, the device <b>300</b> may execute a virtual machine instance <b>302</b> for a customer and enable the virtual machine to protect secret information during serialization. Although only one virtual machine is shown in <figref idref="DRAWINGS">FIG. 3</figref> for clarity, the system may execute multiple virtual machines for one or more customers. As shown in <figref idref="DRAWINGS">FIG. 3</figref>, the device <b>300</b> may include system hardware <b>314</b>, the system hardware includes one or more central processing units <b>316</b> (also referred to as a processor for simplicity) that may be communicatively coupled to a number of subsystems, such as the memory subsystem <b>318</b>, and devices <b>326</b>. Devices may be input/output devices, optical devices, networking devices or other suitable devices.
0027The memory subsystem <b>318</b> may provide a computer-readable storage medium for storing data that may provide the functionality of at least one embodiment of the present disclosure. The data stored in the memory subsystem (programs, code modules, instructions) that, when executed by one or more processors, may provide the functionality of one or more embodiments of the present disclosure, may be stored in the memory subsystem <b>318</b>. These application modules or instructions may be executed by the one or more processors <b>316</b>. The memory subsystem <b>318</b> may additionally provide storage for serialized data, that serialized data may be generated by a virtual machine <b>302</b>. The memory subsystem <b>318</b> may comprise a disk storage subsystem <b>320</b>. The disk <b>320</b> may be used to store data generated by the virtual machine <b>302</b>, such as a serialized image of the virtual machine or information contained in the virtual disk <b>310</b> of the virtual machine <b>302</b>. An image may be used to instantiate one or more computer systems. The memory subsystem <b>318</b> may include a number of memories including Random Access Memory (RAM) <b>324</b> and Read-Only Memory (ROM) <b>322</b>.
0028The device <b>300</b> may further include a kernel <b>328</b>. The kernel may manage requests from software, such as a hypervisor <b>306</b> and translate the requests into data instructions for the central processing unit <b>316</b> and memory subsystem <b>318</b>. The hypervisor <b>306</b> may manage requests from virtual machine <b>302</b> and control virtual machine access to the underlying hardware. The hypervisor may also signal the virtual machine, using one or more interrupts <b>332</b>, according to various aspects of the present disclosure. The interrupts <b>332</b> may be used to transmit signals to the virtual machine <b>302</b>. The interrupts may be used indicate a variety of information such as information corresponding to the functions which the hypervisor exposes to the virtual machine <b>302</b>. The functions may further enable the hypervisor to coordinate with the virtual machine instance and prevent storage of the plaintext representation of the keys. The virtual machine <b>302</b> may register the exposed functions with the hypervisor <b>306</b>, registering the functions may include providing information on when to call the functions and conditions for calling the functions and continuing execution of the virtual machine instance if a function fails. This information may be stored in metadata corresponding to the virtual machine instance <b>302</b>, the metadata of the virtual machine instance may be stored in the memory subsystem <b>318</b>.
0029The hypervisor may also include one or more hardware emulators <b>330</b> and interrupts <b>332</b>, the hardware emulators may provide virtualized hardware to the virtual machine. In various embodiments, hardware emulator <b>330</b> is used to signal the virtual machine that a serialization event will occur. For example, the hypervisor <b>306</b> may use the hardware emulator <b>330</b> to create a virtual device driver and signal the virtual machine <b>302</b> using the device driver. The hypervisor <b>306</b> may be a bare metal hypervisor as shown in <figref idref="DRAWINGS">FIG. 3</figref> or a hosted hypervisor running as an application within a client operating system. The interrupts <b>332</b> may be used in signaling the guest operating system <b>308</b>.
0030As described above, the hypervisor <b>306</b> manages the virtual machine <b>302</b>. The virtual machine <b>302</b> contains virtualized hardware <b>304</b>, the virtualized hardware includes one or more virtual central processing units <b>312</b>, virtual memories <b>342</b> and virtual disks <b>310</b>. The virtual machine also executes a guest operating system <b>308</b> with one or more applications <b>334</b>. The virtual machine <b>302</b> may also contain one or more cryptographic keys <b>336</b> for use by the guest operating system <b>308</b> in protecting secret information. The virtual machine may have access to the keys <b>336</b> stored in memory and other keys stored in a security module (not shown in <figref idref="DRAWINGS">FIG. 3</figref>) or some other secure location. The keys <b>336</b> may be stored in an ephemeral key area that is guaranteed by one or more systems of the service provider, not to be written to persistent storage. The keys <b>336</b> may be stored in contiguous or non-contiguous areas of memory. The area(s) of memory may be protected by the guest operating system <b>308</b>, where the guest operating system may limit or prevent access to those memory area(s) which contain plaintext representations of cryptographic keys using a trap or other similar mechanism to control access to the memory areas. For example, access to the keys <b>336</b> by applications <b>334</b> may be limited by the guest operating system <b>308</b>. The guest operating system may intervene when an application requests read access to the keys and block the requested access. The guest operating system <b>308</b> may allow encryption or decryption using the keys. The particular areas of memory that contain encryption keys may be excluded from serialization. The particular memory areas which contain the keys <b>336</b>, may be determined by the guest operating system <b>308</b> or the hypervisor <b>306</b>. The hypervisor <b>306</b> or some other service responsible for serializing the virtual machine <b>302</b> may exclude the ephemeral key area or keys <b>336</b> from serialized data during a serialization event.
0031<figref idref="DRAWINGS">FIG. 4</figref> is an illustrative, simplified block diagram of an example device <b>400</b> that may be used to practice at least one embodiment of the present disclosure. In various embodiments, the device <b>400</b> may be used to implement a variety of the systems illustrated herein, such as the hardware security module described below in connection to <figref idref="DRAWINGS">FIG. 5</figref>. For example, the system <b>400</b> may be used to manage cryptographic keys, such as restoring key state after an instance is resumed or providing a master key for encrypting instance data. As shown in <figref idref="DRAWINGS">FIG. 4</figref>, the device <b>400</b> may include one or more processors <b>402</b> that may be configured to communicate with and are operatively coupled to a number of peripheral subsystems via a bus subsystem <b>404</b>. These peripheral subsystems may include a storage subsystem <b>406</b>, comprising a memory subsystem <b>408</b> and a file storage subsystem <b>410</b>, one or more input devices <b>412</b>, one or more output devices <b>414</b>, a network interface <b>416</b>, a security module <b>424</b>, comprising a memory subsystem <b>430</b> and one or more cryptographic processors <b>432</b>.
0032The bus subsystem <b>404</b> may provide a mechanism for enabling the various components and subsystems of system <b>400</b> to communicate with each other as intended. Although the bus subsystem <b>404</b> is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple busses.
0033The network interface <b>416</b> may provide an interface to other systems and networks. The network interface <b>416</b> may serve as an interface for receiving and transmitting data to and from other systems from system <b>400</b>. For example, the network interface <b>416</b> may allow the security module to communicate with various components of device <b>300</b> described above, such as the hypervisor <b>306</b> or the guest operating system <b>308</b>, in order to retrieve one or more keys for use with the virtual machine instance. For example, as will be illustrated in <figref idref="DRAWINGS">FIG. 5</figref>, the hypervisor may request the one or more keys of the guest operating system to be restored when the instance is deserialized. Additionally, the guest operating system may submit a request to the security module to have copies of cryptographic keys restored. The network interface <b>416</b> may also facilitate the receipt and/or transmission of data on other networks, such as an organizations intranet.
0034The input devices <b>412</b> may include one or more buttons, a keyboard, pointing devices such as an integrated mouse, trackball, touchpad, or graphics tablet, a scanner, a barcode scanner, a fingerprint scanner, a retinal scanner, a touch screen incorporated into the display, audio input devices such as voice recognition systems, microphones and other types of input devices. In general, use of the term input device is intended to include all possible types of devices and mechanisms for inputting information to the system <b>400</b>.
0035The output devices <b>414</b> may include a display subsystem, a printer or non-visual displays such as audio output devices, etc. The display subsystem may be a Cathode Ray Tube (CRT), a flat-panel device such as a Liquid Crystal Display (LCD), Light Emitting Diode (LED) display or a projection or other display device. In general, use of the term output device is intended to include all possible types of devices and mechanisms for outputting information from the system <b>400</b>. The output devices <b>414</b> may be used, for example, to present user interfaces to facilitate user interaction with applications performing processes described herein and variations therein, when such interaction may be appropriate.
0036The storage subsystem <b>406</b> may provide a computer-readable storage medium for storing the basic programming and data constructs that may provide the functionality of at least one embodiment of the present disclosure. The applications (programs, code modules, instructions) that, when executed by one or more processors, may provide the functionality of one or more embodiments of the present disclosure and may be stored in the storage subsystem <b>406</b>. These application modules or instructions may be executed by the one or more processors <b>402</b>. The storage subsystem <b>406</b> may additionally provide a repository for storing data used in accordance with the present disclosure. The storage subsystem <b>406</b> may comprise of a memory subsystem <b>408</b> and a file/disk storage subsystem <b>410</b>.
0037The memory subsystem <b>408</b> may include a number of memories including a main RAM <b>418</b> for storage of instructions and data during program execution and a ROM <b>420</b> in which fixed instructions may be stored. The file storage subsystem <b>410</b> may provide a non-transitory persistent (non-volatile) storage for program and data files, and may include a hard disk drive, a floppy disk drive along with associated removable media, a Compact Disk Read-Only Memory (CD-ROM) drive, an optical drive, removable media cartridges and other like storage media.
0038The security module <b>424</b> includes a memory subsystem <b>430</b>, including a main RAM <b>428</b> for storage of instructions and data during program execution and a ROM <b>426</b> in which fixed cryptographic information or program instructions may be stored, such as a root key or user private key. The device <b>400</b> may also store keys in RAM <b>428</b> for temporary cryptographic processing. The cryptographic information stored in the memory subsystem <b>430</b> or the one or more cryptographic processors <b>432</b> may be used to generate cryptographic keys for use with one or more virtual machines. The one or more cryptographic processors may be used to accelerate cryptographic processing in the device and may include a random number generator, RSA key generator, SHA-1 hash generator and an encryption-decryption-signature engine. User credentials of a virtual machine or guest operating system may be stored temporarily in the memory subsystem <b>430</b> for use in authentication with the service provider and/or restoring cryptographic keys. The security module may maintain key information for the one or more virtual machines, such that if the keys are deleted or encrypted during serialization the key may be restored.
0039<figref idref="DRAWINGS">FIG. 5</figref> is an illustrative example of an environment <b>500</b> illustrating various aspects of the present disclosure. Accordingly, <figref idref="DRAWINGS">FIG. 5</figref> shows a client <b>502</b> communicating with one or more virtual machine instances <b>506</b> over a network <b>504</b>, such as the interne. The virtual machines <b>506</b> may be offered as a service of the service provider and the customer may manage various aspects of the virtual machines through a management console operated by the service provider. The management console provides the customer with an interface to manage resources and services provided by the service provider, such as virtual machine instances. For example, a customer through the management console may communicate directly with a hypervisor and instantiate a virtual machine instance. The virtual machine instances <b>506</b> may be connected to various systems to enable protection of cryptographic keys in accordance with the present disclosure. A key protection system <b>510</b> may include a hardware security module <b>508</b>, a log <b>514</b> and a storage device <b>512</b>. The log <b>514</b> may be used to create an audit log to ensure that the cryptographic keys of the virtual machines have not been exposed.
0040During operation of the virtual machine instances <b>506</b>, a serialization event may be detected and one or more operations may be performed to prevent plaintext representations of keys contained in the virtual machines from being stored persistently. For example, as described above in connection with <figref idref="DRAWINGS">FIG. 3</figref>, the hypervisor <b>306</b> may call a function that when performed by the guest operating system <b>308</b>, may delete the keys <b>336</b> stored in memory. Information corresponding to the function called by the hypervisor, operations performed by the guest operating system, information indicating whether the operations performed were completed successfully or any other information suitable for determining the keys have not been exposed may be written to the log <b>514</b>. The log <b>514</b> may be signed by the service provider, using the service provider private key. The log <b>514</b> may also be used to ensure data destruction, to be discussed in further detail below in connection to <figref idref="DRAWINGS">FIG. 10</figref>. The storage device <b>512</b> may be used to store information about the instance <b>506</b> or serialized instance data. In various embodiments, the storage device <b>512</b> contains data to be decrypted or encrypted by the hardware security module <b>508</b> also referred to as a cryptographic key management module.
0041The hardware security module <b>508</b> may be a physical device connected in a data center operated by the service provider or the hardware security module may be virtualized and executed as a service of the service provider. The hardware security module <b>508</b> may securely store keys for one or more instances <b>506</b> without sharing the keys with other instances or clients. In various embodiments, key management techniques are used by the hardware security module to manage encryption keys throughout the key lifecycle (generation, secure use, storage, escrow and destruction). For example, using key management techniques, the client <b>502</b> may effectively delete a large data set from storage device <b>512</b> by submitting a request to the hardware security module <b>508</b> to destroy the key used to encrypt the data set.
0042The hardware security module <b>508</b> may be logically separate from the other systems and services of the service provider to ensure confidentiality and protection of the keys. In various embodiments, the client <b>502</b> or the virtual machine instances <b>506</b> may store generated keys using another system or service and store the generated keys securely in the hardware security module <b>508</b>. The keys stored in the hardware security module may only be accessed using valid credentials. The hardware security module may validate the provided credentials using a variety of techniques and prevent access to keys by parties who have not been validated. In various embodiments, the hardware security module <b>508</b> generates keys and performs encryption and decryption using the keys within the hardware security module without the keys ever leaving the hardware security module, enabling the hardware security module to control, store and use the encryption keys without the keys being copied.
0043In various embodiments, data destruction is accomplished by destroying keys that are stored in the hardware security module and have never left the protected boundary of the hardware security module. The techniques described in the present disclosure are directed to key handling and preventing persistent storage of plaintext keys, and any chain of keys that may be encrypted by a master key stored in the hardware security module, data destruction of large data sets can be accomplished simply by destroying a single master key stored in the hardware security module. Hardware security modules may prevent keys from leaving the protected boundaries and may not be copied, enabling the master key stored in the hardware security module to be safely destroyed, thereby destroying the data encrypted by the master key.
0044The hardware security module may also be used to restore keys during deserialization of an instance. For example, the hypervisor may provide the hardware security module with credential information for a virtual machine instance being launched from a snapshot. If the snapshot has been encrypted by the hardware security module using a master key, the snapshot may be decrypted before launching the instance. Furthermore, if the keys inside the memory of the instance have been deleted or encrypted before serialization, the hardware security module may restore the instance keys as well. During serialization of instances, instance data may be written to storage device <b>512</b> and the hardware security module <b>508</b> may encrypt the entirety of the instance data or just a particular area of the instance data. For example, as described above, if the instance stores all of the keying material in a particular area of memory, the hardware security module may only encrypt that particular area of the memory.
0045<figref idref="DRAWINGS">FIG. 6</figref> shows an illustrative example of process <b>600</b> which may be used to prevent exposure of plaintext cryptographic keys. The process <b>600</b> may be performed by any suitable system, such as by the device as described in connection with <figref idref="DRAWINGS">FIG. 3</figref> and/or an appropriate component thereof, such as by the hypervisor <b>306</b>. Returning to <figref idref="DRAWINGS">FIG. 6</figref>, in an embodiment, the process <b>600</b> includes detecting a serialization event for a virtual machine instance <b>602</b>. For example, the hypervisor may detect that a serialization event, such as migration, has been initiated. Once a serialization of an instance is detected <b>602</b> a signal may be sent to the instance, enabling the instance to perform one or more operations to protect keys that may be stored in memory of the instance, such as implementing a delete key function <b>604</b>. The delete key function may be registered with the hypervisor ahead of time such that once a serialization event is detected <b>602</b> the hypervisor may call the delete key function, thereby signaling the instance to implement the functions. In various embodiments, if the instance does not register callback functions, the hypervisor may proceed with a serialization event <b>606</b> without calling an instance function. Other signaling methods may be used to send signals in accordance with the present disclosure. For example, the hypervisor may send a signal to the instance using a special network port, a hardware interrupt signal, a unique pattern of input on a virtualized hardware device (e.g., USB port), instance metadata, exposing a uniform resource locator to the instance or any other suitable method for signaling an instance. Once the signal is received, the instance may destroy keys stored in instance memory by implementing the delete keys function. The hypervisor may use a grace period to allow the instance time to perform one or more operations before serialization of the instance data <b>606</b>. In other embodiments, the instance may signal the hypervisor that the serialization of the instance may proceed <b>606</b>, the instance may use any of the signaling methods as described above.
0046In various embodiments, the signal may include operations that when performed by the hypervisor, expose the one or more functions to the instance that allow the instance to register the one or more functions. At least one of the functions of the one or more functions being called just before the instance is serialized and at least one other function of the one or more functions being called just after the instance is serialized. The function may also be registered at some point in time before the serialization event is detected <b>602</b>. At the time of registering these functions (also referred to as callback functions), the instance may also specify whether the hypervisor or some other system or service of the service provider should prevent the instance from being serialized in the event that the one or more of the functions times out or otherwise does not complete (e.g., block snapshot or migration on failure of the delete keys functions), or if the hypervisor should complete the serialization even if one or more of the functions do not complete. Returning to <figref idref="DRAWINGS">FIG. 6</figref>, process <b>600</b> may detect completion of the serialization event <b>608</b>. For example, the hypervisor may receive notification from one or more services of the service provider that an image of the instance has successfully been written to disk. As described above, process <b>600</b> may be modified to require a response from the instance, however the process <b>600</b> may proceed without a response from the instance as a result of a grace period expiring. Upon completion of the one or more function calls executed before serialization, the response from the instance may be another function call indicating the delete keys function call was completed successfully.
0047Information regarding the instance and whether to proceed without receiving a response from the instance may be written to metadata corresponding to the instance. At some point in time after the hypervisor has detected completion of the serialization events <b>608</b>, the hypervisor may cause the virtual machine instance to implement one or more functions to restore keys <b>610</b>, such as restore keys function. For example, information regarding the instance registering the callback functions may be stored as a new data item in the instance metadata so that the hypervisor may check the metadata when restoring an instance to know whether or not the hypervisor is responsible for calling one or more functions to restore keys to the instance when reconstituting the instance. Information written into the metadata may include information about registered functions, location of keys, memory location for one or more keys, security module that manages the instance keys or other information usable with the techniques described in the present disclosure. Functions may be called by the hypervisor or other system of the service provider but may be executed by the instance <b>610</b>. For example, the hypervisor may call a function signaling to the instance to delete keys stored in memory before serialization, and the function may be executed by the instance in order to protect the keys from exposure to the service provider. Information written into the metadata of the instance may indicate operations to be performed by the hypervisor or some other system in order to enable the instance to retrieve its keys. For example, an operation may be performed to restore an instance, the hypervisor may check the metadata to determine if the instance previously registered one or more functions with the hypervisor and if the one or more functions had been completed for the last serialization operation. If the instance had registered one or more functions and the registered functions were completed successfully, then the hypervisor may restore the instance and call any functions that may be registered to execute before handing over control to the instance.
0048<figref idref="DRAWINGS">FIG. 7</figref> shows an illustrative example of process <b>700</b> which may be used to prevent exposure of plaintext cryptographic keys. The process <b>700</b> may be performed by any suitable system, such as by the device as described in connection with <figref idref="DRAWINGS">FIG. 3</figref> and/or an appropriate component thereof, such as by the hypervisor <b>306</b>. Returning to <figref idref="DRAWINGS">FIG. 7</figref>, in an embodiment, the process <b>700</b> includes detecting a serialization event for a virtual machine instance <b>702</b>. Once the serialization event has been detected <b>702</b> by the hypervisor, the hypervisor may the send a signal to the virtual machine <b>704</b> for which the serialization event was detected. The signal <b>704</b> may be sent using any of the signaling methods described above. For example, the signal <b>704</b> may be an interrupt sent by the hypervisor through a device driver of the instance. The hypervisor may then determine if a response from the instance is required <b>706</b>. The hypervisor may make the determination by checking the metadata of the instance. If there is no information indicating that a response is required, the process <b>700</b> may wait for a timeout period <b>712</b> and then proceed with serializing the virtual machine instance <b>708</b>. The timeout period <b>712</b> may enable the virtual machine to perform, prior to serialization, one or more operations to ensure that plaintext representations of encryption keys stored in the virtual machine's memory are not written to persistent storage when the instance is serialized <b>708</b>.
0049If a response to the signal <b>704</b> is required, process <b>700</b> may wait for a response to be received <b>714</b>. If a response is received <b>714</b>, process <b>700</b> may continue and serialize the virtual machine instance <b>708</b>. If no response is received, process <b>700</b> may determine if a timeout period has expired <b>722</b>. The timeout period may enable the virtual machine instance to perform operations in order to protect cryptographic keys and return a response to the hypervisor. In various embodiments, the timeout period may be set by the hypervisor when the virtual machine instance registers the delete keys function as described above. In numerous variations of process <b>700</b>, the instance may allow serialization <b>708</b> to proceed at the expiration of the timeout period <b>722</b> regardless of the hypervisor receiving a response <b>714</b>. In other variations to process <b>700</b>, checking if a response has been received at step <b>714</b> may include an indication that the virtual machine instance was unable to perform one or more operations required to protect the cryptographic keys from being written persistently to storage and the serialization event must be canceled <b>720</b>. Returning to <figref idref="DRAWINGS">FIG. 7</figref>, during the timeout period <b>722</b>, if a response is received <b>714</b> the hypervisor may permit the serialization event to proceed <b>708</b>. If no response is received <b>714</b> during the timeout period <b>722</b>, the hypervisor may cancel the serialization event <b>720</b>.
0050Once the virtual machine has been serialized <b>708</b>, the instance may be relaunched. The hypervisor may, during restoration of the instance, check the instance metadata to determine if the keys for the instance should be restored <b>710</b> by the hypervisor. If the hypervisor is responsible for restoring the keys to the instance, the hypervisor may call the restore key function <b>716</b> before handing control over to the instance. If the hypervisor is not responsible for restoring the keys to the instance, the hypervisor may launch the instance and hand over control to the instance <b>718</b> without calling the restore keys function. In this case, the instance itself may be responsible for restoring its own keys.
0051<figref idref="DRAWINGS">FIG. 8</figref> shows an illustrative example of process <b>800</b> which may be used to prevent exposure of plaintext cryptographic keys. The process <b>800</b> may be performed by any suitable system, such as by the device as described in connection with <figref idref="DRAWINGS">FIG. 3</figref> and/or an appropriate component thereof, such as by the virtual machine <b>302</b>. Returning to <figref idref="DRAWINGS">FIG. 8</figref>, in an embodiment, the process <b>800</b> includes transmitting encryption keys to a security module <b>802</b>, such as a hardware security module. The instance may transmit the encryption keys as a result of receiving a signal from the hypervisor as described above. The security module may use a master key to wrap the encryption key. Wrapping the encryption key includes encrypting the plaintext version of the encryption key with another key. The instance may then receive the wrapped encryption key from the security module <b>804</b>. The wrapped key may be stored in the memory of the instance and the instance may then delete or otherwise destroy any plaintext copies of the encryption key that may still be in memory <b>806</b>. The security module in various embodiments, generates an audit log indicating that the received encryption keys have been securely encrypted and the log may be signed by the service provider, the customer, the instance or some combination thereof using the entities' corresponding private key.
0052In various embodiments, the instance may signal the hypervisor that the keys have been secured and allow the serialization of the instance to continue. After the serialization event the security module may receive the wrapped key <b>808</b>. The hypervisor may transmit the encrypted key to the security module as an operation during restoration of the instance. In other embodiments, the instance may be responsible for restoring the key and transmit the key to the security module <b>808</b>. The security module may decrypt the encryption key and transmit the plaintext copy of the encryption key to the instance <b>810</b>. The security module may generate a log of activities performed in unwrapping the encryption key and transmitting it to the instance.
0053<figref idref="DRAWINGS">FIG. 9</figref> shows an illustrative example of process <b>900</b> which may be used to prevent exposure of plaintext cryptographic keys. The process <b>900</b> may be performed by any suitable system, such as by the device as described in connection with <figref idref="DRAWINGS">FIG. 3</figref> and/or an appropriate component thereof, such as by the virtual machine <b>302</b>. Returning to <figref idref="DRAWINGS">FIG. 9</figref>, in an embodiment, the process <b>900</b> includes receiving a signal for a hypervisor indicating that a serialization event will occur <b>902</b>. The signal may be any of the signaling methods or function registrations as described above. Once the signal has been received <b>902</b>, the instance may delete all local copies of the encryption keys <b>904</b> in order to prevent the keys from being stored persistently or transmitted over a network in plaintext form. In various embodiments, other operations may be performed that produce a similar result as deleting the encryption keys. For example, the instance may have previously registered a function (e.g., the delete keys function), the hypervisor may signal the instance <b>902</b> by calling the previously registered function. The instance may then perform operations corresponding to the function called by the hypervisor. For example, the instance may request from a security module encryption of one or more keys <b>904</b>. Other techniques described in the present disclosure may be used to ensure that the plaintext keys are not exposed. For example, the instance may move the keys to the ephemeral area of memory described above, so that the keys are not serialized during execution of the serialization event. Determining the location of the ephemeral area of memory may be accomplished by coordinating the memory location with the hypervisor at some point during execution of the instance. In numerous variations of process <b>900</b>, the instance may ignore the signal and allow serialization of the instance data without regard to keys that may be stored in memory.
0054The instance, once the operation has been performed <b>904</b>, may signal a response <b>906</b> to the hypervisor or other system of the service provider indicating that operations to prevent exposure of plaintext keys <b>904</b> have been completed and serialization may proceed. In various embodiments, the response <b>906</b> may indicate that one or more operations to protect the keys stored in memory have failed and serialization may not proceed. The response <b>906</b> may also indicate that more time is required to complete operations to protect the keys stored in memory. The response to the hypervisor <b>906</b> may be transmitted using any of the signaling methods as described above. For example, the instance may send an interrupt to the hypervisor through a virtual device driver.
0055<figref idref="DRAWINGS">FIG. 10</figref> shows an illustrative example of process <b>1000</b> which may be used to delete or destroy data which has been encrypted with a cryptographic key. The process <b>1000</b> may be performed by any suitable system, such as by the device as described in connection with <figref idref="DRAWINGS">FIG. 3</figref> and/or an appropriate component thereof, such as by the hypervisor <b>306</b>. Returning to <figref idref="DRAWINGS">FIG. 10</figref>, in an embodiment, the process <b>1000</b> includes receiving an indication of data which is to be destroyed <b>1002</b>. The indication may be received outside of the virtual machine instance, such as at the hypervisor responsible for managing the instance. For example, one or more systems of the service provider may receive a request from a customer and determine, based at least in part on the request, the hypervisor responsible for managing the virtual machine corresponding to the data which is to be destroyed. The request may then be transmitted directly to the hypervisor responsible for the virtual machine instance, without providing the request to the virtual machine instance. The request may then be processed directly by the hypervisor without issuing commands to the virtual machine instance. The indication may include information corresponding to data encryption keys used to encrypt the data, information corresponding to sensitive data or information corresponding to the cryptographic management module controlling the data encryption keys. The indication may be generated by the customer interacting directly with the hypervisor or through a management console, as described above in reference to <figref idref="DRAWINGS">FIG. 5</figref>. In various other embodiments, the indication of data to be deleted includes only information corresponding to the data encryption key which is to be destroyed. Returning to <figref idref="DRAWINGS">FIG. 10</figref>, once an indication of the data to be destroyed has been received, the process <b>1000</b> may continue and one or more systems of the service provider, such as the cryptographic key management module, may determine the one or more data encryption keys used to encrypt the data. For example, the cryptographic management module may be queried to determine the data encryption keys used to encrypt data corresponding to the virtual machine requesting the data to be destroyed.
0056Once the data encryption keys have been determined <b>1004</b>, an audit log may then be examined to determine that plaintext representations of the data encryption keys have not been exposed. The audit log may be any log information such as the audit log <b>514</b> described above in connection with <figref idref="DRAWINGS">FIG. 5</figref>. The audit log may be traced by the virtual machine instance requesting that the data be destroyed. The cryptographic management module controlling the data encryption key, a service of the service provider, the virtual machine instance or some other system suitable for parsing information from an audit log may perform a trace of the audit log. In numerous variations of process <b>1000</b>, if a trace of the audit log is unable to indicate conclusively that the cryptographic key has not been exposed during operation, a notification may be sent to the customer indicating that the cryptographic key may have been exposed. For example, the audit log may indicate that a serialization event occurred for a particular virtual machine without protecting the cryptographic keys contained in the virtual machine's memory and a message may be sent to the customer indicating that the cryptographic keys may have been exposed during serialization. If a trace of the audit log does not indicate that the encryption keys have not been exposed, the encrypted data may then be deleted directly using any of the techniques described in the present disclosure, such as overwriting the encrypted data with other data.
0057Returning to <figref idref="DRAWINGS">FIG. 10</figref>, if it is determined that the encryption keys have not been exposed <b>1006</b>, the keys or other sensitive data may then be selectively deleted or otherwise destroyed <b>1008</b>. The data may be deleted or otherwise destroyed <b>1008</b> by overwriting the keys with random data, non-random data, zeros, ones or other suitable information. For example, if an ephemeral area of memory is used, as described above, the guest operating system may overwrite the memory area with random or non-random information thereby deleting the keys contained in the memory area. The hypervisor or some other system of the service provider may cause the data to be deleted directly from the memory of the virtual machine instance. The hypervisor may also control the virtual machine instance in order to have the virtual machine instance delete the data. For example, the user through the management console may select data to be deleted, one or more systems of the service provider may determine an encryption key used to encrypt the data and the hypervisor may delete the encryption key from the memory of the virtual machine instance associated with the user. In various other embodiments, encryption keys stored in volatile memory may be destroyed by cutting the power to the volatile memory. If the encryption keys are contained in a cryptographic security module, the cryptographic security module may delete the key in accordance with its inherent capabilities. Deleting the encryption key may render the data encrypted with the particular encryption keys indecipherable.
0058<figref idref="DRAWINGS">FIG. 11</figref> illustrates aspects of an example environment <b>1100</b> for implementing aspects in accordance with various embodiments. As will be appreciated, although a web-based environment is used for purposes of explanation, different environments may be used, as appropriate, to implement various embodiments. The environment includes an electronic client device <b>1102</b>, which can include any appropriate device operable to send and receive requests, messages or information over an appropriate network <b>1104</b> and convey information back to a user of the device. Examples of such client devices include personal computers, cell phones, handheld messaging devices, laptop computers, tablet computers, set-top boxes, personal data assistants, embedded computer systems, electronic book readers and the like. The network can include any appropriate network, including an intranet, the Internet, a cellular network, a local area network or any other such network or combination thereof. Components used for such a system can depend at least in part upon the type of network and/or environment selected. Protocols and components for communicating via such a network are well known and will not be discussed herein in detail. Communication over the network can be enabled by wired or wireless connections and combinations thereof. In this example, the network includes the Internet, as the environment includes a web server <b>1106</b> for receiving requests and serving content in response thereto, although for other networks an alternative device serving a similar purpose could be used as would be apparent to one of ordinary skill in the art.
0059The illustrative environment includes at least one application server <b>1108</b> and a data store <b>1110</b>. It should be understood that there can be several application servers, layers or other elements, processes or components, which may be chained or otherwise configured, which can interact to perform tasks such as obtaining data from an appropriate data store. Servers, as used herein, may be implemented in various ways, such as hardware devices or virtual computer systems. In some contexts, servers may refer to a programming module being executed on a computer system. As used herein the term “data store” refers to any device or combination of devices capable of storing, accessing and retrieving data, which may include any combination and number of data servers, databases, data storage devices and data storage media, in any standard, distributed or clustered environment. The application server can include any appropriate hardware and software for integrating with the data store as needed to execute aspects of one or more applications for the client device, handling some (even a majority) of the data access and business logic for an application. The application server may provide access control services in cooperation with the data store and is able to generate content such as text, graphics, audio and/or video to be transferred to the user, which may be served to the user by the web server in the form of HyperText Markup Language (“HTML”), Extensible Markup Language (“XML”) or another appropriate structured language in this example. The handling of all requests and responses, as well as the delivery of content between the client device <b>1102</b> and the application server <b>1108</b>, can be handled by the web server. It should be understood that the web and application servers are not required and are merely example components, as structured code discussed herein can be executed on any appropriate device or host machine as discussed elsewhere herein. Further, operations described herein as being performed by a single device may, unless otherwise clear from context, be performed collectively by multiple devices, which may form a distributed system.
0060The data store <b>1110</b> can include several separate data tables, databases or other data storage mechanisms and media for storing data relating to a particular aspect of the present disclosure. For example, the data store illustrated may include mechanisms for storing production data <b>1112</b> and user information <b>1116</b>, which can be used to serve content for the production side. The data store also is shown to include a mechanism for storing log data <b>1114</b>, which can be used for reporting, analysis or other such purposes. It should be understood that there can be many other aspects that may need to be stored in the data store, such as page image information and access rights information, which can be stored in any of the above listed mechanisms as appropriate or in additional mechanisms in the data store <b>1110</b>. The data store <b>1110</b> is operable, through logic associated therewith, to receive instructions from the application server <b>1108</b> and obtain, update or otherwise process data in response thereto. In one example, a user, through a device operated by the user, might submit a search request for a certain type of item. In this case, the data store might access the user information to verify the identity of the user and can access the catalog detail information to obtain information about items of that type. The information then can be returned to the user, such as in a results listing on a web page that the user is able to view via a browser on the user device <b>1102</b>. Information for a particular item of interest can be viewed in a dedicated page or window of the browser. It should be noted, however, that embodiments of the present disclosure are not necessarily limited to the context of web pages, but may be more generally applicable to processing requests in general, where the requests are not necessarily requests for content.
0061Each server typically will include an operating system that provides executable program instructions for the general administration and operation of that server and typically will include a computer-readable storage medium (e.g., a hard disk, RAM, ROM, etc.) storing instructions that, when executed by a processor of the server, allow the server to perform its intended functions. Suitable implementations for the operating system and general functionality of the servers are known or commercially available and are readily implemented by persons having ordinary skill in the art, particularly in light of the disclosure herein.
0062The environment in one embodiment is a distributed computing environment utilizing several computer systems and components that are interconnected via communication links, using one or more computer networks or direct connections. However, it will be appreciated by those of ordinary skill in the art that such a system could operate equally well in a system having fewer or a greater number of components than are illustrated in <figref idref="DRAWINGS">FIG. 11</figref>. Thus, the depiction of the system <b>1100</b> in <figref idref="DRAWINGS">FIG. 11</figref> should be taken as being illustrative in nature and not limiting to the scope of the disclosure.
0063The various embodiments further can be implemented in a wide variety of operating environments, which in some cases can include one or more user computers, computing devices or processing devices which can be used to operate any of a number of applications. User or client devices can include any of a number of general purpose personal computers, such as desktop, laptop or tablet computers running a standard operating system, as well as cellular, wireless and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system also can include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices also can include other electronic devices, such as dummy terminals, thin-clients, gaming systems and other devices capable of communicating via a network.
0064Various embodiments of the present disclosure utilize at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially-available protocols, such as Transmission Control Protocol/Internet Protocol (“TCP/IP”), protocols operating in various layers of the Open System Interconnection (“OSI”) model, File Transfer Protocol (“FTP”), Universal Plug and Play (“UpnP”), Network File System (“NFS”), Common Internet File System (“CIFS”) and AppleTalk. The network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network and any combination thereof.
0065In embodiments utilizing a web server, the web server can run any of a variety of server or mid-tier applications, including Hypertext Transfer Protocol (“HTTP”) servers, FTP servers, Common Gateway Interface (“CGP”) servers, data servers, Java servers and business application servers. The server(s) also may be capable of executing programs or scripts in response to requests from user devices, such as by executing one or more web applications that may be implemented as one or more scripts or programs written in any programming language, such as Java®, C, C# or C++, or any scripting language, such as Perl, Python or TCL, as well as combinations thereof. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase® and IBM®.
0066The environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device can include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (“CPU” or “processor”), at least one input device (e.g., a mouse, keyboard, controller, touch screen or keypad) and at least one output device (e.g., a display device, printer or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices and solid-state storage devices such as RAM″ or ROM, as well as removable media devices, memory cards, flash cards, etc.
0067Such devices also can include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device, etc.) and working memory as described above. The computer-readable storage media reader can be connected with, or configured to receive, a computer-readable storage medium, representing remote, local, fixed and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules, services or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or web browser. It should be appreciated that alternate embodiments may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets) or both. Further, connection to other computing devices such as network input/output devices may be employed.
0068Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as, but not limited to, volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer-readable instructions, data structures, program modules or other data, including RAM, ROM, Electrically Erasable Programmable Read-Only Memory (“EEPROM”), flash memory or other memory technology, Compact Disc Read-Only Memory (“CD-ROM”), digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices or any other medium which can be used to store the desired information and which can be accessed by the system device. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
0069The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.
0070Other variations are within the spirit of the present disclosure. Thus, while the disclosed techniques are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions and equivalents falling within the spirit and scope of the invention, as defined in the appended claims.
0071The use of the terms “a” and “an” and “the” and similar referents in the context of describing the disclosed embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms “comprising,” “having,” “including” and “containing” are to be construed as open-ended terms (i.e., meaning “including, but not limited to,”) unless otherwise noted. The term “connected,” when unmodified and referring to physical connections, is to be construed as partly or wholly contained within, attached to or joined together, even if there is something intervening. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein and each separate value is incorporated into the specification as if it were individually recited herein. The use of the term “set” (e.g., “a set of items”) or “subset” unless otherwise noted or contradicted by context, is to be construed as a nonempty collection comprising one or more members. Further, unless otherwise noted or contradicted by context, the term “subset” of a corresponding set does not necessarily denote a proper subset of the corresponding set, but the subset and the corresponding set may be equal.
0072Conjunctive language, such as phrases of the form “at least one of A, B, and C,” or “at least one of A, B and C,” unless specifically stated otherwise or otherwise clearly contradicted by context, is otherwise understood with the context as used in general to present that an item, term, etc., may be either A or B or C, or any nonempty subset of the set of A and B and C. For instance, in the illustrative example of a set having three members used in the above conjunctive phrase, “at least one of A, B, and C” and “at least one of A, B and C” refers to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such conjunctive language is not generally intended to imply that certain embodiments require at least one of A, at least one of B and at least one of C to each be present.
0073Operations of processes described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. Processes described herein (or variations and/or combinations thereof) may be performed under the control of one or more computer systems configured with executable instructions and may be implemented as code (e.g., executable instructions, one or more computer programs or one or more applications) executing collectively on one or more processors, by hardware or combinations thereof. The code may be stored on a computer-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. The computer-readable storage medium may be non-transitory.
0074The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate embodiments of the invention and does not pose a limitation on the scope of the invention unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the invention.
0075Preferred embodiments of this disclosure are described herein, including the best mode known to the inventors for carrying out the invention. Variations of those preferred embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate and the inventors intend for embodiments of the present disclosure to be practiced otherwise than as specifically described herein. Accordingly, the scope of the present disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the scope of the present disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.
0076All references, including publications, patent applications and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.
Contents4
13 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13
Every citation, both waysCites: the store holds 0 of 1
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US10628607B2 | Cited by | United States of America | Search report |
| US2018025177A1 | Cited by | United States of America | Search report |
| US11321192B2 | Cited by | United States of America | Search report |
| US12399732B2 | Cited by | United States of America | Search report |
| GB2628502A | Cited by | United Kingdom | Search report |
| US2023195490A1 | Cited by | United States of America | Search report |
| US11164182B2 | Cited by | United States of America | Applicant |
| WO2018044946A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11841824B2 | Cited by | United States of America | Applicant |
| EP3507701A4 | Cited by | European Patent Office (EPO) | Search report |
| US10547441B2 | Cited by | United States of America | Applicant |
| US2019213089A1 | Cited by | United States of America | Search report |
| US11874805B2 | Cited by | United States of America | Applicant |
| US11487701B2 | Cited by | United States of America | Applicant |
| US11372824B2 | Cited by | United States of America | Applicant |
| US11914485B2 | Cited by | United States of America | Applicant |
| US2019213089A1 | Cited by | United States of America | Search report |
| US11915314B2 | Cited by | United States of America | Applicant |
| US2022006792A1 | Cited by | United States of America | Search report |
| US11880334B2 | Cited by | United States of America | Applicant |
| WO2023110653A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11611540B2 | Cited by | United States of America | Search report |
| US10719484B2 | Cited by | United States of America | Applicant |
| US11249940B2 | Cited by | United States of America | Applicant |
| Taleb, "EASE: EPC as a Service to Ease Mobile Core Network Deployment over Cloud", 2015, IEEE, pg. 78-88 | Non-patent | – | Pre-grant |
11 members in 1 office
Priority claims18
| Document | Office | Kind | Date |
|---|---|---|---|
| 201314078336 | United States of America | A | |
| 201314078336 | United States of America | A | |
| 201314078351 | United States of America | A | |
| 201314078351 | United States of America | A | |
| 201314078360 | United States of America | A | |
| 201314078360 | United States of America | A | |
| 201514981804 | United States of America | A | |
| 201514981804 | United States of America | A | |
| 201614992980 | United States of America | A | |
| 14078336 | – | – | – |
| 14078360 | – | – | – |
| 14981804 | – | – | – |
| 14078351 | – | – | – |
| US201314078336 | – | – | – |
| US201314078351 | – | – | – |
| US201314078360 | – | – | – |
| US201514981804 | – | – | – |
| US201614992980 | – | – | – |
Members11
| Document | Office | Kind | |
|---|---|---|---|
| US9231923B1 | United States of America | B1 | |
| US9235714B1 | United States of America | B1 | |
| US2016112387A1 | United States of America | A1 | |
| US2016127336A1 | United States of America | A1 | |
| US9680808B2 | United States of America | B2 | |
| US9705855B2 | United States of America | B2 | |
| US2017272417A1 | United States of America | A1 | |
| US2018069844A1 | United States of America | A1 | |
| US10178077B2 | United States of America | B2 | |
| US10223538B1 | United States of America | B1 | |
| US10616194B2 | United States of America | B2 |
50 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Response to Reasons for AllowanceREAS | REAS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Terminal Disclaimer FiledDIST | DIST | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Email NotificationEML_NTR | EML_NTR | |
| Application ready for PDX access by participating foreign officesCCRDY | CCRDY | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Email NotificationEML_NTR | EML_NTR | |
| Application Is Now CompleteCOMP | COMP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Application Dispatched from OIPEOIPE | OIPE | |
| FITF set to YES - revise initial settingFTFS | FTFS | |
| Interview Summary - Examiner Initiated - TelephonicEXET | EXET | |
| Cleared by L&R (LARS)L128 | L128 | |
| Referred to Level 2 (LARS) by OIPE CSRL198 | L198 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Patent Term Adjustment - Ready for ExaminationPTA.RFE | PTA.RFE | |
| PTO/SB/69-Authorize EPO Access to Search ResultsSREXR141 | SREXR141 | |
| Applicants have given acceptable permission for participating foreignAPPERMS | APPERMS | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Initial Exam Team nnIEXX | IEXX |
1 recorded assignment at the USPTO, latest first
- Now
Now: Held by
AMAZON TECHNOLOGIES INC - 2016-01-11
Assignment of assignors interest.
Ownership change- From
- DOANE ANDREW JFITZGERALD ROBERT ERICCIGNETTI TODD LAWRENCE
and 1 moreShow fewer
BRANDWINE ERIC JASON - To
- AMAZON TECHNOLOGIES INC
Recorded 2016-01-11, Signed 2013-12-12
4 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication
- 20160127336
- Publication, DOCDB
- 2016127336
- Publication, EPODOC
- US2016127336
- Application
- 14992980
- Application, DOCDB
- 201614992980
- Application, EPODOC
- US201614992980
Titles
- English
- PREVENTING PERSISTENT STORAGE OF CRYPTOGRAPHIC INFORMATION USING SIGNALING
Patent term adjustment
- A delay
- +3 daysthe office missed an examination deadline
- Applicant delay
- −181 days
- Net adjustment
- 0 days
Classification
- CPC, 7
- G06F21/6218
- H04L63/061
- G06F2221/2101
- G06F9/4812
- G06F2221/2143
- G06F9/45558
- G06F21/602
- IPC, 3
- H04L29 06
- G06F9 455
- G06F9 48
- USPC, 1
- 713171000