This patent application is a U.S. National Phase Application under 35 U.S.C. §371 of International Application No. PCT/US2011/067032, filed Dec. 22, 2011, entitled ACTIVATION AND MONETIZATION OF FEATURES BUILT INTO STORAGE SUBSYSTEMS USING A TRUSTED CONNECT SERVICE BACK END INFRASTRUCTURE.
The field of invention relates generally to storage devices, and, more specifically, to structure and uses of secure storage.
Today, host side applications (e.g. antivirus software) use an operating system application programming interface (API) to read in data (e.g. malware definition data) from storage to detect malware. Additionally, other storage specific commands can be used to read, write, and otherwise manage stored data. For example, vendor specific commands, SMART Command Transport (SCT), negative logical block addresses (LBA), etc., can be used to process stored data. However these methods can be easily subverted by malware to give wrong information to the caller. In addition, there is no provision for configuring the methods to provide application specific protection. Furthermore, data that is stored in can easily be attacked by malware, or that stored content that is protected by digital rights management (DRM) may be copied or altered. In addition, storage coupled to a computer may offer additional services that are not easily activated in the field.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
FIG. 2AB illustrate examples of an agent that communicates information to a secure storage system using a tunnel.
FIG. 3AB illustrate example of an agent communicating information to a secure storage system using mailboxing.
In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the understanding of this description.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Storage Tunnels
As described above, malware can attack stored data and can subvert operating system calls to a storage system. Described below is a system that creates a secure tunnel between an application and a secure storage system that hides the data storage by encrypting the data communicated to the secure storage system and storing data beyond the accessibility of an operating system.
Application 144 is an application that runs in the operating system 104. One example of an application can be e-mail client, word processor, image management, media management, anti-virus, operating system functions, etc., or any other type of application as known in the art. As is known in the art, each application may interact with the storage system 106 using the filesystem 124, and driver stack 122.
In one embodiment, the storage 106 includes storage firmware 120, system-on-a-chip (SOC) 108, memory 110, and storage area 112. In one embodiment, the storage can be any type of storage known in the art (solid state drive (SSD), hard disk (HD), flash drive (FD), etc.). In one embodiment, the system-on-a-chip 108 is a chip that includes a processor and other circuits that are used to support the storage 106. An example of a SOC 108 is further described below in
In one embodiment, the storage includes a trusted application programming interface (API) 146 and a trusted system firmware 118. In one embodiment, the trusted API 146 is used by processes executing in the operating system or ISV application 130 to access the secure storage of 114 of storage area 112. In one embodiment, the secure storage 114 is not visible to the operating system through the filesystem 124 and driver stack 122. Instead the secure storage 114 is accessed using the trusted API 146. Trusted system firmware 118 is firmware that is used to manage the secure storage 114. In this embodiment, the trusted API 146 is used by local or remote entities to create a tunnel between that entity and the secure storage. A tunnel is used to securely transmit information between an entity and the secure storage. For example one embodiment, the ISV application creates a tunnel 150B via trusted API 146 and trusted system firmware 118 to secure storage 114.
In one embodiment, the secure storage 114 is used to store important data (e.g. anti-virus definition files, digital rights managed content, financial data, operating system components etc.), enabling storage features, or securely downloading data outside of the operating system, or any other types of secure storage. In one embodiment, the secure storage 114 stores data that is invisible to the operating system. For example and in one embodiment, the secure storage 114 is at storage addresses that are beyond the maximum addressable storage available to the operating system and/or applications that are accessing the storage 106 via the filesystem 124 and driver stack 122. While in one embodiment, the secure storage 114 is physically separate from the normal storage 116, in an alternate embodiment, the secure storage 114 is a partition of the normal storage 116.
In one embodiment, the storage area 112 includes secure storage 114 and normal storage 116. In one embodiment, the normal storage 116 is the storage that is accessed by the operating system 104 and has the filesystem 124 defined on top of this normal storage 116. In this embodiment, the operating system 104 accesses files and/or other data in the normal storage 116 through the driver stack 122. For example and in one embodiment, application 144 (or other applications that are operating system) can access files in the normal storage 116 via the filesystem 124 and driver stack 122.
As described above, the data in the secure storage 114 is not visible to an application except through the trusted API 146. In one embodiment, the ISV application 130 accesses the secure storage 114 using the tunnel 150B (via the anti-malware kit 132, private SDK 126, trusted API 146, and trusted system firmware 118). For example and in one embodiment, the ISV application 130 is an agent that can securely download a premium content that is managed by digital rights management using the anti-malware kit 132 and trusted ops 134. In one embodiment, the trusted ops 134 are trusted operations with secure storage 114, such as a trusted read and/or trusted write. In this embodiment, a trusted read/write means that the identity of the entity requesting the operation is known and trusted. In another embodiment, application 130 is an agent that is authorized to securely communicate data with the secure storage 114 using a tunnel as described below.
As described above, the data stored in the secure storage 114 is invisible to the operating system 104 or an application executing in the operating system 104. Thus, neither the operating system 104 nor the application 144 can view, alter, or delete the data stored in secure storage 114. In one embodiment, this scheme is used to secure data from potential malware that may want to change, alter, or delete the data stored in secure storage 114.
For example and in one embodiment, data such as the master boot record of the operating system 104 or other important operating system 104 components can be stored in the secure storage 114 and locked such that a potential malware work cannot read, alter, or delete these important operating system components. In another embodiment, important user data such as anti-virus definition data, financial data, etc. can be stored in the secure storage 114, thus preventing malicious processes (e.g., malware, virus, etc.) from accessing, altering, or deleting the important user data. In one embodiment, the user data is data that is not part of the operating system.
As described above, a tunnel can be formed between an application (e.g., ISV application 130) and the secure storage 114 through private SDK 126, trusted API 146, and trusted system firmware 118. As will be described later, this tunnel can be formed in two ways: (1) through a mailboxing scheme in which logical block addresses are set aside for communication between the application and the storage system, or (2) the tunnel can be formed based on a trusted sends and receives that are supported by the storage system. While in one embodiment, a tunnel 150A is formed between the secure storage 114 and an application running on the same computer that includes the secure storage 114, in another embodiment a tunnel 150B can be formed between the storage system with a backend server 148 that is coupled to the computer 102 across a network. In this embodiment, trusted system firmware 118 (via trusted API 146) creates its own network connection that is used to communicate information with the backend server 148. For example and in one embodiment, trusted storage firmware 118 can be used to create a tunnel such that the backend server(s) 148 can download DRM content to the secure storage 114 of storage 106. This is described further in
As described above,
In this embodiment, the agent 202 can access the data or write to the data from these LBAs by using the tunnel 210. As will be described further below, the action LBA 206 is used to communicate action requests to the storage system 204. In one embodiment, these action requests can include write, read, and/or tunnel configuration commands or other commands as known in the art for accessing or managing data in a storage system. The results of these commands are stored in the results LBA 208.
For example and in one embodiment, the agent 202 wishes to write data to the secure storage system 204. In this embodiment, the agent 202 writes a write command to the action LBA 206 and the data the agent wishes to store is written into the results LBA 208. The secure storage system 204 processes the command stored in the action LBA 206 and stores the data in into the location indicated in the action LBA 206 by redirecting the data being written to results LBA 208. In another embodiment, the agent 202 wishes to read data from secure storage system 204. In this embodiment, the agent 202 writes the read command into action LBA 206. The secure storage system 204 processes the read command and redirects the data to be read as if coming from the result LBA 208. The agent 202 reads the data from result LBA 208 to complete the read command. In one embodiment, the mailboxing based tunnel 210 can be built upon many different storage protocols (e.g., trusted send/receive, overloaded write/read, Common Storage Management Interface (CSMI), etc.). The agent communicating with the secure storage system using a mailboxing tunnel is further described
As described above, the secure storage systems can use a tunnel based on a trusted send messaging system with the agent. In
In one embodiment, the command code 306B is a code that indicates what type of command is being written to the action LBA 304. For example and in one embodiment, the command code can be a code that write, read, configure, and/or some other command code use to indicate another type of action that it would be used between an agent and a storage system for accessing or managing the data stored in the storage system. In one embodiment, the command sequence number 306C is a number that can be used to identify a specific command message. In one embodiment, the operators 306D are flags or bits that signal the firmware to take some kind of specific action associated with a given command type. In one embodiment, packet integrity 306E is data that is used to ensure the integrity of the data written to action 308A. For example and in one embodiment, the data in packet integrity 306E can be a checksum or some other form of data that ensures that the data was correctly written to action LBA 304.
In
At block 404, method 400 monitors the action LBA to determine if an action has been written to the action LBA in order to initiate an action with the secure storage system. In one embodiment, an agent writes an action (e.g. to the action LBA 304 as in
At block 504, method 500 determines if the command is a write command. In one embodiment, method 500 determines the type of command by reviewing the data in the command code field (e.g., command code field 306C as described in
If the command is not a write command, at block 506, method 500 determines if the command is read command. In one embodiment, method 500 determines if the command is a read command by interrogating the command code of the command. If so, method 500 redirects the read from the results LBA to the storage location at block 512. For example and in one embodiment, if the read command is to read data from sector 1000 of the secure storage system, method 500 decodes the command to determine that the read is from sector 1000 and also amount of data that is to be read. Method 500 redirects the incoming read of the results LBA to read the correct amount of data from sector 1000 to the results LBA. In this example, the agent that initiated the read command reads the data from the results LBA and method 500 redirects this read from the desired sector.
If the command is not a read command, at block 508, method 500 determines if the command is a configure command. If this command is a configure command, method 500 configures the tunnel according to the data in the command. If the command is not a configure tunnel command, at block 516, method 500 takes alternative action. In one embodiment, the method 500 could ignore the command, store an error code in the results LBA indicating the command is not understood, or take another action as known in the art.
As stated above, there are two different ways that the agent and a secure storage system could use a tunnel to communicate information between the agent and the secure storage system. One way, as described above, is based on mailboxing scheme that uses an action and results LBA to securely communicate information between the agent and the secure storage system. This type of scheme can be used by many different storage communication protocols as known in the art (SATA, ATA, e-SATA, Universal Serial Bus (USB), Thunderbolt, PCI, etc.). Another way is to set up a tunnel between an agent in the secure storage using trusted send and receive facility (“trusted send facility”) of the storage communication protocol. In one embodiment, the agent and the secure storage system use the trusted send facility of the secure SATA protocol to negotiate a session key between the agent and the secure storage system.
At block 604, method 600 receives a message from the agent. In one embodiment, the message includes the authentication data that identifies the message as originating from the agent and includes on authentication credentials such as the session key that can be used to decrypt the data in the message. For example and in one embodiment, the message can include the authentication data such as negotiated session and the data that is encrypted using that key. Furthermore, at block 604, methods 600 decrypts the data contained in the message so that method 600 can further process the received message.
At block 606, method 600 determines if the received message is a write message. If so, method 600 processes the write message at block 612. In one embodiment, method 600 processes the write message by determining which data is to be written and where the data is to be written to and writing that data using the location and data to be written from the message. For example and in one embodiment, if the write message indicates that the 100 bytes of data is to be written to sector 2000 of the secure storage system, method 600 retrieves the 100 bytes of data from the message payload and stores that 100 bytes of data to sector 2000 of the secure storage system. In addition and in one embodiment, method 600 sends a message back to the agent via the tunnel indicating the results of the write (e.g., success, failure, etc.).
If the received message is not a write message, at block 608, method 600 determines if the received message is a read message. If the received message is read message, at block 614, method 600 processes the read message. In one embodiment, method 600 retrieves the location of the read and that the amount of data to be read from that location. For example and in one embodiment, methods 600 receives a read message that indicates that the 200 bytes of data should be read from sector 1000 of the secure storage system. In this embodiment, method 600 would read 200 bytes of data from sector 1000. Furthermore, method 600 sends a message back to the agent with the 200 bytes of data that was read from sector 1000. In this embodiment, method 600 encrypts the data using the negotiated session key and stores this encrypted data in the message to be sent back to the agent. In addition, method 600 sends that data back to the agent using the formed message.
If the message received at block 604 was not a read message, at block 610, method 600 determines if that received message is a configure tunnel message. If the received message is a configure tunnel message, at block 616, method 600 configures the tunnel according to configuration parameters in the message. In one embodiment, after configuring the tunnel according to the received configuration tunnel message, method 600 sends a return message back to the agent indicating the success or failure of the command in that message. If the received message is not a configure tunnel message, at block 618, method 600 alternative action (e.g., drops the received message, sends a message back indicating the received message is not understood, etc.).
Lockable Storage
When in insecure areas, some users may turn off a computer's wireless network card in order to prevent being attacked by malicious hackers nearby. Similarly, with malware on a system, a user may want to be able to open untrusted files while at the same time having personal, sensitive data inaccessible or locked. Thus a “data safe mode” is useful, such as the ability to have an external switch on your laptop to lockdown key assets on a system (Operating System files, configurable data such as credit card information, passwords and other sensitive private information) or locking down key components of an operating system during boot time.
For example and in one embodiment, there can be two types of storage, a secure storage and modification locked storage. In one embodiment, the secure storage itself consists of two modes: fixed, always on secure storage that is inaccessible to normal users and hidden via normal methods of storage access (e.g., operating system calls to storage); and there is configurable secure storage in normally addressable ranges of a drive. The configurable secure storage in normally addressable ranges of the drive would be specific LBA ranges that have been configured by the user as to which parts of the drive to protect. In one embodiment, either type of secure storage disallows normal writes and reads with this type of storage whereas, authenticated reads or writes are allowed with the secure storage.
As another example and in another embodiment, for modification locked storage, anyone can read the data in that region, but only an authenticated entity (to the drive, for that region) can modify (e.g., write to) the data in that region. In this embodiment, the lockable storage would be configurable ranges of either secure storage or modification locked storage because the fixed the secure storage is inaccessible to normal users anyways. In a further embodiment and in addition to the locking storage, a physical switch (e.g., hardware switch 142 for
In one embodiment, two ways to lock the lockable storage are possible. In one embodiment, the user can initiate the lock by using a switch that is outside the control of the operating system. In this embodiment, this action creates a system interrupt that would be communicated via trusted API 146 and trusted firmware 118 to lock the lockable storage 702. As described above, this could be used to lock important user files such as antivirus data files, financial files, and personal files. The user locking mechanism is further described in
At block 804, method 800 sends a signal to the secure storage system to lock the master boot record. In one embodiment, method 800 locks the sector of the lockable storage that stores the master boot record. By locking the specific sectors that store the master boot record, these sectors (and the master boot record itself) cannot be altered via processes executing in the operating system such as malware. In another embodiment, the boot sequence is based on a user extensible firmware interface (UEFI). In this embodiment, UEFI is another way to boot up a system. UEFI is similar to the MBR-based boot up, but there is more involved. In UEFI, to boot up, there is a boot manager, which boots the system up. Fir example, UEFI boot up uses the a Globally Unique Identification (GUID) Partition Table (GPT) which is similar to a MBR, but it is a different format and rather than being a single sector (e.g., LBA 0 for MBR), a GPT takes up 34 or 35 sectors at the beginning and 34 or 35 sectors at the end of the drive. In this embodiment, method 800 would lock the relevant sectors storing the GPT at block 802.
Method 800 continues the boot strapping process and selectively locking sectors storing the operating system components, as the operating system components are no longer needed to be written to, at block 808. In one embodiment, there is a plurality of important operating system components that could be stored in lockable storage and each of these operating system components can be stored in the same or different sector of the lockable storage. The plurality of important operating system components can include the entire operating system or a subset of the operating system. As these operating system components are used and are not needed to be written to, method 800 locks the sectors associated with the operating system components. In one embodiment, method 800 locks these sectors by sending a signal to the storage system that certain sectors of the lockable storage need to be locked. In one embodiment, the method 800 sends the signals via a tunnel as described with reference to
At block 810, method 800 determines that the operating system is fully booted and that important operating system components have been locked to prevent further altering. In one embodiment, some or all of the important operating system components are further locked so as to prevent reads. In this embodiment, locking read access to the secure storage can be used to locked read access certain types of keys that the drive stores on the drive (e.g., keys that are loaded into memory (and presumably protected in memory as well) and the operating system does not want to let this key be readable from the drive anymore).
In one embodiment, the lockable storage is locked at the storage level such that any operating system command to override the unalterable status of these of sectors is ignored. In one embodiment, a write lock would maintain a table of protected regions within the firmware of the storage device (e.g., storage firmware 120 and/or trusted system firmware 118 of
At block 812, attempts to infect or otherwise alter these locked operating system files fail because the device firmware prevention modification prevents any alteration of these operating system files. In one embodiment, if a specified region of the drive is locked, the storage firmware can monitor incoming write commands for attempts to write to the “locked” LBA/LBAs and return a write error when such an attempt is made. In another embodiment, the storage firmware redirects the data in the write attempt to a special quarantine area for further analysis. In these embodiments, the normal operating system commands which would typically alter or replace these locked operating system files on the locked sectors will fail because the device firmware prevention modification overrides the storage access commands the operating system or other applications can use.
As described above, certain components of the operating system will be locked, so they can no longer be altered by normal operating system commands. While in many cases, this is a favorable situation because this disallows malware, viruses, etc. from infecting these operating system files. The problem is that there are times that these operating system files would need to be altered. In one embodiment, an operating system upgrade will likely need to alter the operating system files that are locked in a lockable storage.
Method 900 begins by receiving the command to upgrade the operating system that includes locked files storing the some or all of the operating system components. In one embodiment, the command to upgrade the operating system is from a user initiated request or an automatic service provider request to upgrade the operating system as is known in the art. At block 904, method 900 establishes a secure tunnel with the storage system. In one embodiment, the secure tunnel is a secure tunnel between the secure storage system and an agent (such as an agent performing method 900) using the mailboxing scheme or the negotiated tunnel using SATA trusted sends and receives, as described above in
As described above, there are two ways that a computer can lock data stored in the lockable storage. In one embodiment, the operating system locks data in the lockable storage during a boot sequence. In another embodiment, the user initiates a lockdown of the lockable storage to lock some or all of the user data. In one embodiment, either way to lock data can be used. In another embodiment, both ways to lock data in the lockable storage are available.
At block 1006, method 1000 receives an indication that a user lockdown has been activated. In one embodiment, a user may initiate a lockdown of lockable storage by activating a dedicated switch for the lockdown, a keyboard combo (e.g., ALT+F5, etc.), a touch sequence if using a touch user interface, or any other way to indicate a command to a computer as known in the art. At block 1008, method 1000 triggers system interrupt on the computer system, which the software on the system is listening for. In one embodiment, by triggering interrupt, method 1000 that executes a lockdown is outside of the operating system control. This is useful if malware, virus, etc., may be present on the computer system so that the malware cannot defeat the user initiated lockdown.
At block 1010, method 1000 sends a message to the storage system to perform the user lockdown. In one embodiment, method 1000 uses a tunnel between an agent executing method 1000 in the operating system to the secure storage system to perform the user lockdown. In one embodiment, method 1000 uses the tunnel as described above in
At block 1014, method 1000 executes an application in the user lockdown environment. In one embodiment, the user may initiate the lockdown, such that the user would like to execute a file or retrieve a file in an environment that may include malware, virus, or other potentially damaging software. By executing application during the user lockdown environment the data that is stored in the locked storage is prevented from being altered because the drive mechanism prevents an operating system process, (e.g., a malware, virus, etc.) from altering or deleting the data that is locked inside the lockable storage.
At block 1016, method 1000 receives an indication of the user unlock. In one embodiment, a user wants to unlock the lockable storage. At block 1018, method 1000 sends a message to the storage system to perform the user unlock. In one embodiment, method 1000 uses the tunnel between the agent that executes method 1000 and the secure storage system to perform the user unlock. At block 1020, method 1000 indicates a user lockdown has removed. In one embodiment, method 1000 removes the icon or image that is displayed on the user's display for indicating the user lockdown is in process.
Secure Download and Processing of Premium Content
Online media and streaming is a growing area and this increases the demand of having secure platforms to offer premium services to enhance end user experience and open new channels of distribution of content for content providers to help them increase their Total Available Market (TAM). Currently, personal computer (PC) platforms are not considered robust enough to allow content providers (e.g. Netflix™, movie and/or television studios, etc.) to permit download and/or stream of premium and most recent content onto a computing device (e.g., computer, set-top box, mobile device, etc., and/or any other type of device capable of receiving and/or presenting content). Content providers fear loss of intellectual property due to piracy and DRM violations. Due to these issues, content providers do not capture a sizeable chunk of customer segment that primarily uses PC platforms as their entertainment hub.
In addition, content providers and ISVs also want to make sure that their data is secure from point of origin till point of consumption, especially involving entertainment device segments offering an array of options for consumption of online and streaming content.
Described below is a system that allows content providers and ISVs to securely store and stream their content on PC and alternative platforms by enhancing the capabilities of storage platforms (e.g. premier content providers for latest movies, games, audio, books, etc.). The system would also offer to provision for secure execution by using the secure storage and tunnel capabilities of a storage platform to offer a trusted computing environment. In addition, the data path is secured from point of origin to the point of consumption through a secured tunnel, thereby minimizing the risk of snooping and DRM violation on exposed data in memory or platform.
In one embodiment, the platform agent 1104 includes an operating system 1106, where the platform agent is a computer and/or device as described above in
In one embodiment, the platform agent 1104 stores the DRM protected content to the operating system invisible secure storage 1110 using secure path 1114A. In one embodiment, the secure path 1114A is a tunnel that is formed between the platform agent 1104 and the operating system invisible secure storage 1110. An example of the tunnel is described in
At block 1204, method 1200 establishes a secure tunnel with the secure storage. In one embodiment, the secure storage is the operating system invisible storage 1110. In one embodiment, method establishes a secure tunnel with the storage as described in
Using the two tunnels, method 1200 securely executes the downloading and processing of the DRM protected content. In one embodiment, method 1200 securely downloads the DRM protected content from the system provider/ISV to the operating system invisible storage. Method 1200 further decrypts and re-encrypts the DRM protected content so that the GPU/display can process this content. Securely executing the downloading and processing of the DRM content is further described in
Method 1300 allows discovery of the DRM storage protection at block 1306. In one embodiment, the DRM storage protection is the secure storage system, as described above in
At block 1314, method 1300 stores the content specific key in the secure storage. In one embodiment, method 1300 uses a tunnel to the secure storage system to store the specific content key. At block 1316, method 1300 receives an encrypted content that corresponds to the request of the premium content. As described above, the encrypted content could be video, audio, images, book, game, software, etc., or any other type of DRM protected content. Furthermore, the retrieved content is encrypted and can be decrypted using the content specific key retrieved at block 1312. At block 1318, method 1300 stores encrypted content and associated content metadata in the secure storage. In one embodiment, method 1300 uses the tunnel between the agent that is executing method 1300 and the secure storage to securely store the encrypted content and associated metadata. In one embodiment, the metadata is data that describes the encrypted content (e.g., title, artist, author, genre, length, size, encoding, etc. and/or other parameters associated with premium content as known in the art).
A block 1320, method 1300 receives a request for encrypted content from the agent. In one embodiment, the agent is a software entity that is party to secure transactions between content providers and secure storage system. In one embodiment, the agent is further described above in
As described above, in order for a client to receive premium content, the client will need a root of trust.
In
The agent 1420 in the secure storage sends a message with drive capabilities back to the ISV/server 1404 (1412). In response, the ISV/server 1404 determines if the storage is DRM protected storage at 1414. If the storage is DRM protected storage, the ISV/server 1404 requests the provisioning key by signing the message and sending the signed message to the provisioning server 1406. In one embodiment of provisioning server 1406 provides the provisioning key. In addition, the provisioning server 1406 signs the provisioning key using the private key of the provisioning server 1406. The provisioning server 1406 may be a third party provisioning server or may belong to part of the ISV. The provisioning server 1406 sends the provisioning keys to the ISV/server 1404.
In response to receiving the provisioning keys, the ISV/server 1404 provisions the ISV public key with the provisioning key at 1418. In one embodiment, the ISV public key is unique to the client. In one embodiment, the ISV public key is unique to the ISV/server 1404 for that client. In one embodiment, the ISV/server 1406 authenticates the client 1402 and stores the public key using the agent 1420 of the secure storage 1422. In one embodiment, the ISV public key is stored in the secure storage 1422 of the client 1402. At the end of this sequence, the ISV/server store 1404 has provisioned public key into the secure storage 1422 of the client 1402 and the rest of the steps as indicated in method 1300 may be performed to download and process the premium content.
Activation and Monetization of Value-Added Storage Services
Hard drive companies are struggling to monetize features and capabilities built into their hardware. In their effort to minimize and contain their number of different models, storage companies may end up selling hardware for a lowest common denominator price, which in turn negatively impacts the storage companies' profitability. This is because storage companies cannot securely activate and/or revoke value-added storage services of devices in the field not to generate secondary revenue sources. In one embodiment, revocation transfers management rights of physical resources (e.g., storage devices) from one service provider to another. For example and in one embodiment, vendor A would revoke management services for a given device, while vendor B would activate new services for the same device. Potential value-added storage services can include additional storage enablement, anti-theft technology, secure storage, storage device encryption, etc.
Once the secure root of trust is established, an application running on the client 1502 may request a license for a value-added storage service using the agent 1508. In this embodiment, the agent 1508 sends a request to the ISV/server 1504 in response receiving a request for a value-added storage services license from that application. In one embodiment, the ISV/server 1504 forwards this request to the provisioning server 1506. The provisioning server 1506 authorizes the license request and sends this authorization back to the ISV/server 1504. The ISV/server 1504 receives the authorization from the provisioning server 1506 and issues a license for the requested value-added storage feature to the client 1502. How the agent 1508 works in association with the client is further described in
In one embodiment, manageability engine 1614 includes application applet 1616A, JVM core 1616B, JVM ISV plugin 1616C, and ISV core 1616D. In one embodiment, the client 1606 makes a request for a value-added storage service license to the application applet 1616A via the ISV core 1616D, ISV plugin 1616C, and JVM core 1616B. In one embodiment, the client 1610 uses the components 1610A-D to communicate with the manageability engine 1614 and to make a license request with the ISV/server. In one embodiment, the application applet 1616A is an application to control the license request process to the ISV/server. In one embodiment, JVM core 1616B is a Java virtual machine core as known in the art and is used to execute the application applet 1616A. In one embodiment, the JVM ISP plugin 1616C is a plug-in that runs in the manageability engines 1614 and is used to communicate data between the ISP core 1616B and the JVM core 1616D.
The ISV core 1616D, in one embodiment, is a module that communicates directly with the remote ISV/server such as remote ISV/server 1506 as described above in
If the system for enabling storage features is not supported, at block 1718, method 1700 determines that storage features are not enabled. No further action is taken. If the system for enabling storage features is supported, at block 1708, method 1700 authenticates using the public key. In one embodiment, method 1700 authenticates using the public key that was stored in the secure storage at block 1702 above. A block 1710, method 1704 receives and forwards a request for a value-added storage service to the storage authorization server. In one embodiment, the storage authorization server is the ISV/server 1504 as illustrated in
In a block 1712, method 1700 receives a license from the storage authorization server. Method 1700 stores the requested license in the secure storage at block 1714. In one embodiment, method 1700 uses a tunnel such as a tunnel as described in
Exemplary Core Architectures, Processors, and Computer Architectures
Processor cores may be implemented in different ways, for different purposes, and in different processors. For instance, implementations of such cores may include: 1) a general purpose in-order core intended for general-purpose computing; 2) a high performance general purpose out-of-order core intended for general-purpose computing; 3) a special purpose core intended primarily for graphics and/or scientific (throughput) computing Implementations of different processors may include: 1) a CPU including one or more general purpose in-order cores intended for general-purpose computing and/or one or more general purpose out-of-order cores intended for general-purpose computing; and 2) a coprocessor including one or more special purpose cores intended primarily for graphics and/or scientific (throughput). Such different processors lead to different computer system architectures, which may include: 1) the coprocessor on a separate chip from the CPU; 2) the coprocessor on a separate die in the same package as a CPU; 3) the coprocessor on the same die as a CPU (in which case, such a coprocessor is sometimes referred to as special purpose logic, such as integrated graphics and/or scientific (throughput) logic, or as special purpose cores); and 4) a system on a chip that may include on the same die the described CPU (sometimes referred to as the application core(s) or application processor(s)), the above described coprocessor, and additional functionality. Exemplary core architectures are described next, followed by descriptions of exemplary processors and computer architectures.
Exemplary Core Architectures
In-Order and Out-of-Order Core Block Diagram
In
The front end unit 1830 includes a branch prediction unit 1832 coupled to an instruction cache unit 1834, which is coupled to an instruction translation lookaside buffer (TLB) 1836, which is coupled to an instruction fetch unit 1838, which is coupled to a decode unit 1840. The decode unit 1840 (or decoder) may decode instructions, and generate as an output one or more micro-operations, micro-code entry points, microinstructions, other instructions, or other control signals, which are decoded from, or which otherwise reflect, or are derived from, the original instructions. The decode unit 1840 may be implemented using various different mechanisms. Examples of suitable mechanisms include, but are not limited to, look-up tables, hardware implementations, programmable logic arrays (PLAs), microcode read only memories (ROMs), etc. In one embodiment, the core 1890 includes a microcode ROM or other medium that stores microcode for certain macroinstructions (e.g., in decode unit 1840 or otherwise within the front end unit 1830). The decode unit 1840 is coupled to a rename/allocator unit 1852 in the execution engine unit 1850.
The execution engine unit 1850 includes the rename/allocator unit 1852 coupled to a retirement unit 1854 and a set of one or more scheduler unit(s) 1856. The scheduler unit(s) 1856 represents any number of different schedulers, including reservations stations, central instruction window, etc. The scheduler unit(s) 1856 is coupled to the physical register file(s) unit(s) 1858. Each of the physical register file(s) units 1858 represents one or more physical register files, different ones of which store one or more different data types, such as scalar integer, scalar floating point, packed integer, packed floating point, vector integer, vector floating point, status (e.g., an instruction pointer that is the address of the next instruction to be executed), etc. In one embodiment, the physical register file(s) unit 1858 comprises a vector registers unit, a write mask registers unit, and a scalar registers unit. These register units may provide architectural vector registers, vector mask registers, and general purpose registers. The physical register file(s) unit(s) 1858 is overlapped by the retirement unit 1854 to illustrate various ways in which register renaming and out-of-order execution may be implemented (e.g., using a reorder buffer(s) and a retirement register file(s); using a future file(s), a history buffer(s), and a retirement register file(s); using a register maps and a pool of registers; etc.). The retirement unit 1854 and the physical register file(s) unit(s) 1858 are coupled to the execution cluster(s) 1860. The execution cluster(s) 1860 includes a set of one or more execution units 1862 and a set of one or more memory access units 1864. The execution units 1862 may perform various operations (e.g., shifts, addition, subtraction, multiplication) and on various types of data (e.g., scalar floating point, packed integer, packed floating point, vector integer, vector floating point). While some embodiments may include a number of execution units dedicated to specific functions or sets of functions, other embodiments may include only one execution unit or multiple execution units that all perform all functions. The scheduler unit(s) 1856, physical register file(s) unit(s) 1858, and execution cluster(s) 1860 are shown as being possibly plural because certain embodiments create separate pipelines for certain types of data/operations (e.g., a scalar integer pipeline, a scalar floating point/packed integer/packed floating point/vector integer/vector floating point pipeline, and/or a memory access pipeline that each have their own scheduler unit, physical register file(s) unit, and/or execution cluster—and in the case of a separate memory access pipeline, certain embodiments are implemented in which only the execution cluster of this pipeline has the memory access unit(s) 1864). It should also be understood that where separate pipelines are used, one or more of these pipelines may be out-of-order issue/execution and the rest in-order.
The set of memory access units 1864 is coupled to the memory unit 1870, which includes a data TLB unit 1872 coupled to a data cache unit 1874 coupled to a level 2 (L2) cache unit 1876. In one exemplary embodiment, the memory access units 1864 may include a load unit, a store address unit, and a store data unit, each of which is coupled to the data TLB unit 1872 in the memory unit 1870. The instruction cache unit 1834 is further coupled to a level 2 (L2) cache unit 1876 in the memory unit 1870. The L2 cache unit 1876 is coupled to one or more other levels of cache and eventually to a main memory.
By way of example, the exemplary register renaming, out-of-order issue/execution core architecture may implement the pipeline 1800 as follows: 1) the instruction fetch 1838 performs the fetch and length decoding stages 1802 and 1804; 2) the decode unit 1840 performs the decode stage 1806; 3) the rename/allocator unit 1852 performs the allocation stage 1808 and renaming stage 1810; 4) the scheduler unit(s) 1856 performs the schedule stage 1812; 5) the physical register file(s) unit(s) 1858 and the memory unit 1870 perform the register read/memory read stage 1814; the execution cluster 1860 perform the execute stage 1816; 6) the memory unit 1870 and the physical register file(s) unit(s) 1858 perform the write back/memory write stage 1818; 7) various units may be involved in the exception handling stage 1822; and 8) the retirement unit 1854 and the physical register file(s) unit(s) 1858 perform the commit stage 1824.
The core 1890 may support one or more instructions sets (e.g., the x86 instruction set (with some extensions that have been added with newer versions); the MIPS instruction set of MIPS Technologies of Sunnyvale, Calif.; the ARM instruction set (with optional additional extensions such as NEON) of ARM Holdings of Sunnyvale, Calif.), including the instruction(s) described herein. In one embodiment, the core 1890 includes logic to support a packed data instruction set extension (e.g., AVX1, AVX2), thereby allowing the operations used by many multimedia applications to be performed using packed data.
It should be understood that the core may support multithreading (executing two or more parallel sets of operations or threads), and may do so in a variety of ways including time sliced multithreading, simultaneous multithreading (where a single physical core provides a logical core for each of the threads that physical core is simultaneously multithreading), or a combination thereof (e.g., time sliced fetching and decoding and simultaneous multithreading thereafter such as in the Intel® Hyperthreading technology).
While register renaming is described in the context of out-of-order execution, it should be understood that register renaming may be used in an in-order architecture. While the illustrated embodiment of the processor also includes separate instruction and data cache units 1834/1874 and a shared L2 cache unit 1876, alternative embodiments may have a single internal cache for both instructions and data, such as, for example, a Level 1 (L1) internal cache, or multiple levels of internal cache. In some embodiments, the system may include a combination of an internal cache and an external cache that is external to the core and/or the processor. Alternatively, all of the cache may be external to the core and/or the processor.
Specific Exemplary In-Order Core Architecture
The local subset of the L2 cache 1904 is part of a global L2 cache that is divided into separate local subsets, one per processor core. Each processor core has a direct access path to its own local subset of the L2 cache 1904. Data read by a processor core is stored in its L2 cache subset 1904 and can be accessed quickly, in parallel with other processor cores accessing their own local L2 cache subsets. Data written by a processor core is stored in its own L2 cache subset 1904 and is flushed from other subsets, if necessary. The ring network ensures coherency for shared data. The ring network is bi-directional to allow agents such as processor cores, L2 caches and other logic blocks to communicate with each other within the chip. Each ring data-path is 1012-bits wide per direction.
Processor with Integrated Memory Controller and Graphics
Thus, different implementations of the processor 2000 may include: 1) a CPU with the special purpose logic 2008 being integrated graphics and/or scientific (throughput) logic (which may include one or more cores), and the cores 2002A-N being one or more general purpose cores (e.g., general purpose in-order cores, general purpose out-of-order cores, a combination of the two); 2) a coprocessor with the cores 2002A-N being a large number of special purpose cores intended primarily for graphics and/or scientific (throughput); and 3) a coprocessor with the cores 2002A-N being a large number of general purpose in-order cores. Thus, the processor 2000 may be a general-purpose processor, coprocessor or special-purpose processor, such as, for example, a network or communication processor, compression engine, graphics processor, GPGPU (general purpose graphics processing unit), a high-throughput many integrated core (MIC) coprocessor (including 30 or more cores), embedded processor, or the like. The processor may be implemented on one or more chips. The processor 2000 may be a part of and/or may be implemented on one or more substrates using any of a number of process technologies, such as, for example, BiCMOS, CMOS, or NMOS.
The memory hierarchy includes one or more levels of cache within the cores, a set or one or more shared cache units 2006, and external memory (not shown) coupled to the set of integrated memory controller units 2014. The set of shared cache units 2006 may include one or more mid-level caches, such as level 2 (L2), level 3 (L3), level 4 (L4), or other levels of cache, a last level cache (LLC), and/or combinations thereof. While in one embodiment a ring based interconnect unit 2012 interconnects the integrated graphics logic 2008, the set of shared cache units 2006, and the system agent unit 2010/integrated memory controller unit(s) 2014, alternative embodiments may use any number of well-known techniques for interconnecting such units. In one embodiment, coherency is maintained between one or more cache units 2006 and cores 2002-A-N.
In some embodiments, one or more of the cores 2002A-N are capable of multi-threading. The system agent 2010 includes those components coordinating and operating cores 2002A-N. The system agent unit 2010 may include for example a power control unit (PCU) and a display unit. The PCU may be or include logic and components needed for regulating the power state of the cores 2002A-N and the integrated graphics logic 2008. The display unit is for driving one or more externally connected displays.
The cores 2002A-N may be homogenous or heterogeneous in terms of architecture instruction set; that is, two or more of the cores 2002A-N may be capable of execution the same instruction set, while others may be capable of executing only a subset of that instruction set or a different instruction set.
Exemplary Computer Architectures
Referring now to
The optional nature of additional processors 2115 is denoted in
The memory 2140 may be, for example, dynamic random access memory (DRAM), phase change memory (PCM), or a combination of the two. For at least one embodiment, the controller hub 2120 communicates with the processor(s) 2110, 2115 via a multi-drop bus, such as a frontside bus (FSB), point-to-point interface such as QuickPath Interconnect (QPI), or similar connection 2195.
In one embodiment, the coprocessor 2145 is a special-purpose processor, such as, for example, a high-throughput MIC processor, a network or communication processor, compression engine, graphics processor, GPGPU, embedded processor, or the like. In one embodiment, controller hub 2120 may include an integrated graphics accelerator.
There can be a variety of differences between the physical resources 2110, 2115 in terms of a spectrum of metrics of merit including architectural, microarchitectural, thermal, power consumption characteristics, and the like.
In one embodiment, the processor 2110 executes instructions that control data processing operations of a general type. Embedded within the instructions may be coprocessor instructions. The processor 2110 recognizes these coprocessor instructions as being of a type that should be executed by the attached coprocessor 2145. Accordingly, the processor 2110 issues these coprocessor instructions (or control signals representing coprocessor instructions) on a coprocessor bus or other interconnect, to coprocessor 2145. Coprocessor(s) 2145 accept and execute the received coprocessor instructions.
Referring now to
Processors 2270 and 2280 are shown including integrated memory controller (IMC) units 2272 and 2282, respectively. Processor 2270 also includes as part of its bus controller units point-to-point (P-P) interfaces 2276 and 2278; similarly, second processor 2280 includes P-P interfaces 2286 and 2288. Processors 2270, 2280 may exchange information via a point-to-point (P-P) interface 2250 using P-P interface circuits 2278, 2288. As shown in
Processors 2270, 2280 may each exchange information with a chipset 2290 via individual P-P interfaces 2252, 2254 using point to point interface circuits 2276, 2294, 2286, 2298. Chipset 2290 may optionally exchange information with the coprocessor 2238 via a high-performance interface 2239. In one embodiment, the coprocessor 2238 is a special-purpose processor, such as, for example, a high-throughput MIC processor, a network or communication processor, compression engine, graphics processor, GPGPU, embedded processor, or the like.
A shared cache (not shown) may be included in either processor or outside of both processors, yet connected with the processors via P-P interconnect, such that either or both processors' local cache information may be stored in the shared cache if a processor is placed into a low power mode.
Chipset 2290 may be coupled to a first bus 2216 via an interface 2296. In one embodiment, first bus 2216 may be a Peripheral Component Interconnect (PCI) bus, or a bus such as a PCI Express bus or another third generation I/O interconnect bus, although the scope of the present invention is not so limited.
As shown in
Referring now to
Referring now to
Embodiments of the mechanisms disclosed herein may be implemented in hardware, software, firmware, or a combination of such implementation approaches. Embodiments of the invention may be implemented as computer programs or program code executing on programmable systems comprising at least one processor, a storage system (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device.
Program code, such as code 2230 illustrated in
The program code may be implemented in a high level procedural or object oriented programming language to communicate with a processing system. The program code may also be implemented in assembly or machine language, if desired. In fact, the mechanisms described herein are not limited in scope to any particular programming language. In any case, the language may be a compiled or interpreted language.
One or more aspects of at least one embodiment may be implemented by representative instructions stored on a machine-readable medium which represents various logic within the processor, which when read by a machine causes the machine to fabricate logic to perform the techniques described herein. Such representations, known as “IP cores” may be stored on a tangible, machine readable medium and supplied to various customers or manufacturing facilities to load into the fabrication machines that actually make the logic or processor.
Such machine-readable storage media may include, without limitation, non-transitory, tangible arrangements of articles manufactured or formed by a machine or device, including storage media such as hard disks, any other type of disk including floppy disks, optical disks, compact disk read-only memories (CD-ROMs), compact disk rewritable's (CD-RWs), and magneto-optical disks, semiconductor devices such as read-only memories (ROMs), random access memories (RAMs) such as dynamic random access memories (DRAMs), static random access memories (SRAMs), erasable programmable read-only memories (EPROMs), flash memories, electrically erasable programmable read-only memories (EEPROMs), phase change memory (PCM), magnetic or optical cards, or any other type of media suitable for storing electronic instructions.
Accordingly, embodiments of the invention also include non-transitory, tangible machine-readable media containing instructions or containing design data, such as Hardware Description Language (HDL), which defines structures, circuits, apparatuses, processors and/or system features described herein. Such embodiments may also be referred to as program products.
Emulation (Including Binary Translation, Code Morphing, Etc.)
In some cases, an instruction converter may be used to convert an instruction from a source instruction set to a target instruction set. For example, the instruction converter may translate (e.g., using static binary translation, dynamic binary translation including dynamic compilation), morph, emulate, or otherwise convert an instruction to one or more other instructions to be processed by the core. The instruction converter may be implemented in software, hardware, firmware, or a combination thereof. The instruction converter may be on processor, off processor, or part on and part off processor.
While embodiments have been described which have the function of these embodiments as being performed from within the storage system (e.g., trusted API, lockable storage, downloading and managing of premium content, activation of value-added storage service, etc.), alternative embodiments of the invention may have these functions being performed in a different part of the device. For example and in one embodiment, one or more of these described functions could be performed in different hardware (chipset, a secure core of the device, secure processor, a coupled device (USB stick, etc.), etc., and/or some other hardware block) and/or in software. Also, while the flow diagrams in the Figures show a particular order of operations performed by certain embodiments of the invention, it should be understood that such order is exemplary (e.g., alternative embodiments may perform the operations in a different order, combine certain operations, overlap certain operations, etc.).
In the description above, for the purposes of explanation, numerous specific details have been set forth in order to provide a thorough understanding of the embodiments of the invention. It will be apparent however, to one skilled in the art, that one or more other embodiments may be practiced without some of these specific details. The particular embodiments described are not provided to limit the invention but to illustrate embodiments of the invention. The scope of the invention is not to be determined by the specific examples provided above but only by the claims below.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2011/067032 | 12/22/2011 | WO | 00 | 6/26/2013 |
Publishing Document | Publishing Date | Country | Kind |
---|---|---|---|
WO2013/095573 | 6/27/2013 | WO | A |
Number | Name | Date | Kind |
---|---|---|---|
5473692 | Davis | Dec 1995 | A |
5826012 | Lettvin | Oct 1998 | A |
6021510 | Nachenberg | Feb 2000 | A |
6289455 | Kocher | Sep 2001 | B1 |
6357008 | Nachenberg | Mar 2002 | B1 |
6735700 | Flint | May 2004 | B1 |
7069594 | Bolin | Jun 2006 | B1 |
7206899 | Schmisseur | Apr 2007 | B2 |
7346922 | Miliefsky | Mar 2008 | B2 |
7581250 | Sitze | Aug 2009 | B2 |
7636441 | Vembu | Dec 2009 | B2 |
7657941 | Zaitsev | Feb 2010 | B1 |
7711605 | Santeufemia | May 2010 | B1 |
7739724 | Durham et al. | Jun 2010 | B2 |
7788521 | Sim-Tang | Aug 2010 | B1 |
7975030 | Saeed et al. | Jul 2011 | B2 |
8122507 | Andruss et al. | Feb 2012 | B1 |
8219724 | Caruso et al. | Jul 2012 | B1 |
8345712 | Sood et al. | Jan 2013 | B2 |
8438618 | Eldar et al. | May 2013 | B2 |
8726007 | Chandrika | May 2014 | B2 |
8769228 | Saxena et al. | Jul 2014 | B2 |
8832813 | Cai | Sep 2014 | B1 |
8881282 | Aziz et al. | Nov 2014 | B1 |
20030055994 | Herrmann | Mar 2003 | A1 |
20030208670 | Dawkins et al. | Nov 2003 | A1 |
20040158698 | Rothman et al. | Aug 2004 | A1 |
20040236960 | Zimmer et al. | Nov 2004 | A1 |
20040255145 | Chow | Dec 2004 | A1 |
20050138404 | Weik | Jun 2005 | A1 |
20050144254 | Kameda | Jun 2005 | A1 |
20050154890 | Vembu | Jul 2005 | A1 |
20060005256 | Cox | Jan 2006 | A1 |
20060015731 | Lakshmi Narayanan | Jan 2006 | A1 |
20060052921 | Bodin et al. | Mar 2006 | A1 |
20060143362 | Li et al. | Jun 2006 | A1 |
20060174352 | Thibadeau | Aug 2006 | A1 |
20060184717 | Rothman et al. | Aug 2006 | A1 |
20060184806 | Luttmann et al. | Aug 2006 | A1 |
20060259785 | Thibadeau | Nov 2006 | A1 |
20060294589 | Achanta et al. | Dec 2006 | A1 |
20070092082 | Rush | Apr 2007 | A1 |
20070180210 | Thibadeau | Aug 2007 | A1 |
20070282751 | Zhang | Dec 2007 | A1 |
20080016313 | Murotake et al. | Jan 2008 | A1 |
20080021839 | Peinado et al. | Jan 2008 | A1 |
20080046997 | Wang | Feb 2008 | A1 |
20080098212 | Helms et al. | Apr 2008 | A1 |
20080104348 | Kabzinski et al. | May 2008 | A1 |
20080162353 | Tom et al. | Jul 2008 | A1 |
20080209193 | Zhang et al. | Aug 2008 | A1 |
20080244126 | Hundley | Oct 2008 | A1 |
20080267399 | Medvinsky et al. | Oct 2008 | A1 |
20090086978 | McAvoy et al. | Apr 2009 | A1 |
20090089863 | Vanniarajan | Apr 2009 | A1 |
20090089879 | Wang et al. | Apr 2009 | A1 |
20090150631 | Wilsey et al. | Jun 2009 | A1 |
20090165099 | Eldar | Jun 2009 | A1 |
20090172379 | Rothman | Jul 2009 | A1 |
20090178141 | Panasyuk | Jul 2009 | A1 |
20090187763 | Freericks et al. | Jul 2009 | A1 |
20090204964 | Foley | Aug 2009 | A1 |
20090222910 | Le Bihan | Sep 2009 | A1 |
20090235349 | Lai et al. | Sep 2009 | A1 |
20090293118 | Yan | Nov 2009 | A1 |
20090312093 | Walker et al. | Dec 2009 | A1 |
20100011350 | Zayas | Jan 2010 | A1 |
20100061552 | Becker | Mar 2010 | A1 |
20100083381 | Khosravi et al. | Apr 2010 | A1 |
20100106928 | Toda et al. | Apr 2010 | A1 |
20100138924 | Heim et al. | Jun 2010 | A1 |
20100154061 | Ollmann | Jun 2010 | A1 |
20100154062 | Baram | Jun 2010 | A1 |
20100154064 | Fang et al. | Jun 2010 | A1 |
20100198788 | Sim-Tang | Aug 2010 | A1 |
20100299744 | Mardiks | Nov 2010 | A1 |
20110016214 | Jackson | Jan 2011 | A1 |
20110047618 | Evans et al. | Feb 2011 | A1 |
20110078799 | Sahita | Mar 2011 | A1 |
20110107423 | Kolar Sunder et al. | May 2011 | A1 |
20110154023 | Smith et al. | Jun 2011 | A1 |
20110202751 | Kim | Aug 2011 | A1 |
20110252468 | Tas et al. | Oct 2011 | A1 |
20110277013 | Chinta | Nov 2011 | A1 |
20110289306 | Khosravi | Nov 2011 | A1 |
20120036287 | Lee | Feb 2012 | A1 |
20120054751 | Iikura | Mar 2012 | A1 |
20120060217 | Sallam | Mar 2012 | A1 |
20120117348 | Triantafillou | May 2012 | A1 |
20120136841 | Ambat et al. | May 2012 | A1 |
20120159041 | Saxena | Jun 2012 | A1 |
20130275479 | Thadikaran et al. | Oct 2013 | A1 |
20130276091 | Saxena et al. | Oct 2013 | A1 |
20130276123 | Thadikaran et al. | Oct 2013 | A1 |
20130276146 | Gilani et al. | Oct 2013 | A1 |
20130283381 | Thadikaran et al. | Oct 2013 | A1 |
20130291110 | Thadikaran et al. | Oct 2013 | A1 |
20140096260 | Triantafillou | Apr 2014 | A1 |
Number | Date | Country |
---|---|---|
2249254 | Nov 2008 | EP |
1020070030931 | Mar 2007 | KR |
1020110084693 | Jul 2011 | KR |
200400468 | Jan 2004 | TW |
201025004 | Jul 2010 | TW |
386535 | Aug 2010 | TW |
201129042 | Aug 2011 | TW |
2006124239 | Nov 2006 | WO |
2012082413 | Jun 2012 | WO |
2013048492 | Apr 2013 | WO |
2013095565 | Jun 2013 | WO |
2013095566 | Jun 2013 | WO |
2013095568 | Jun 2013 | WO |
2013095571 | Jun 2013 | WO |
2013095574 | Jun 2013 | WO |
Entry |
---|
PCT “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration”, Application No. PCT/US2011/067032 mailed Jul. 30, 2012, 10 pages. |
PCT/US2011/067032 Notification Concerning Transmittal of International Preliminary Report on Patentability, mailed Jul. 3, 2014, 7 pages. |
Office action and Search Report with summarized English translation from Taiwan Patent Application No. 101144701, mailed Oct. 22, 2014, 7 pages. |
Office action and Search Report with summarized English translation from Taiwan Patent Application No. 101144701, mailed May 29, 2015, 8 pages. |
Extended European Search Report from European Patent Application No. 11877627.7, mailed Jul. 30, 2015, 7 pages. |
Office action from U.S. Appl. No. 13/976,255, mailed Sep. 26, 2015, 41 pages. |
Final Office action from U.S. Appl. No. 13/976,255, mailed Apr. 6, 2015, 41 pages. |
Office action from U.S. Appl. No. 13/976,255, mailed Sep. 22, 2015, 28 pages. |
PCT/US2011/067034 Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, mailed Dec. 26, 2012, 8 pages. |
Office action and Search Report with English translation from Taiwan Patent Application No. 101143998, mailed Dec. 8, 2014, 12 pages. |
Office action with English translation from Taiwan Patent Application No. 101143998, mailed Jun. 29, 2015, 6 pages. |
Extended European Search Report from European Patent Application No. 11877735.8, mailed Jul. 30, 2015, 7 pages. |
“Secure Implementations of Content Protection (DRM) Schemes on Consumer Electronic Devices Contents”, May 1, 2011, XP055203999, retrieved from URL: http://www.arm.com/files/pdf/Secure—Implementation—of—Content—Protection—Schemes—on—Consumer—Electronic—Devices.pdf, retrieved on Jul. 22, 2015, pp. 6-11. |
Office action from U.S. Appl. No. 13/976,378, mailed Mar. 12, 2015, 12 pages. |
Final Office action from U.S. Appl. No. 13/976,378, mailed Jul. 16, 2015, 18 pages. |
PCT/US2011/067016 Notification of Transmittal of International Search Report and the Written Opinion of the International Searching Authority, mailed Aug. 30, 2012, 9 pages. |
PCT/US2011/067016 Notification Concerning Transmittal of International Preliminary Report on Patentability, mailed Jul. 3, 2014, 6 pages. |
Office action and Search Report with summarized English translation from Taiwan Patent Application No. 101146371, mailed Aug. 29, 2014, 12 pages. |
Office action with summarized English translation from Taiwan Patent Application No. 101146371, mailed Mar. 30, 2015, 7 pages. |
Extended European Search Report from European Patent Application No. 11878131.9, mailed Jun. 23, 201, 8 pages. |
Office action from U.S. Appl. No. 13/976,373, mailed Feb. 26, 2015, 9 pages. |
PCT/US2011/067015 Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, mailed May 8, 2012, 9 pages. |
PCT/US2011/067015 Notification Concerning Transmittal of International Preliminary Report on Patentability, mailed Jul. 3, 2014, 6 pages. |
Office action and Search Report with English translation from Taiwan Patent Application No. 101146619, mailed Mar. 3, 2015, 11 pages. |
Notice of Allowance from Taiwan Patent Application No. 101146619, mailed Sep. 4, 2015, 2 pages. |
European Search Report from European Patent Application No. 11877855.4, mailed Jul. 29, 2015, 6 pages. |
Office action from U.S. Appl. No. 13/976,382, mailed Feb. 25, 2015, 9 pages. |
Notice of Allowance from U.S. Appl. No. 13/976,382, mailed Jun. 22, 2015, 10 pages. |
PCT/US2011/067020 Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, mailed May 7, 2012, 9 pages. |
PCT/US2011/067020 Notification Concerning Transmittal of International Preliminary Report on Patentability, mailed Jul. 3, 2014, 6 pages. |
Office action and Search Report with English translation from Taiwan Patent Application No. 101144302, mailed Oct. 21, 2014, 7 pages. |
Office action and Search Report with English translation from Taiwan Patent Application No. 101144302, mailed Apr. 22, 2015, 14 pages. |
Extended European Search Report for European Patent Application No. 11878266.3, mailed Jul. 27, 2015, 9 pages. |
Office action from U.S. Appl. No. 13/976,249, mailed Feb. 25, 2015, 13 pages. |
Notice of Allowance from U.S. Appl. No. 13/976,249, mailed Jul. 7, 2015, 11 pages. |
PCT/US2011/067026 Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, mailed Jul. 31, 2012, 10 pages. |
PCT/US2011/067026 Notification Concerning Transmittal of International Preliminary Report on Patentability, mailed Jul. 3, 2014, 7 pages. |
Office action from U.S. Appl. No. 13/977,666, mailed Dec. 1, 2014, 16 pages. |
Final Office action from U.S. Appl. No. 13/977,666, mailed Apr. 24, 2015, 18 pages. |
PCT/US2011/054420 International Search Report, dated Mar. 23, 2012, 3 pages. |
PCT/US2011/054420 Written Opinion of the International Searching Authority, mailed Mar. 26, 2012, 5 pages. |
PCT/US2011/054420 Notification Concerning Transmittal of International Preliminary Report on Patentability, mailed Apr. 10, 2014, 7 pages. |
Messmer, Ellen, Disk-drive encryption gets boost from Opal standards effort, Jan. 29, 2009, Available at: http://www.networkworld.com/article/2259215/data-center/disk-drive-encryption-gets-boost-from-opal-standards-effort.html. |
Office action from U.S. Appl. No. 12/971,670, mailed Apr. 17, 2013, 15 pages. |
Final Office action from U.S. Appl. No. 12/971,670, mailed Sep. 30, 2013, 14 pages. |
Notice of Allowance from U.S. Appl. No. 12/971,670, mailed Feb. 12, 2014, 9 pages. |
PCT/US2011/063175 International Search Report, mailed May 4, 2012, 3 pages. |
PCT/US2011/063175 Written Opinion of the International Searching Authority, mailed May 4, 2012, 4 pages. |
Extended European Search Report from European Patent Application No. 11848952.5, mailed Sep. 15, 2014, 3 pages. |
“TCG Storage Security Subsystem Class: Opal”, Jan. 27, 2009, pp. 1-81, XP055050453, Retrieved from Internet: URL: http://www.trustedcomputinggroup.org/files/resource—files/88023378-1D09-3519-AD740D9CA8DFA342/Opal—SSC—1.0—rev1.0-Final.pdf. |
Number | Date | Country | |
---|---|---|---|
20130291070 A1 | Oct 2013 | US |