US20110213990A1 - Apparatus and method for content protection using one-way buffers - Google Patents
Apparatus and method for content protection using one-way buffers Download PDFInfo
- Publication number
- US20110213990A1 US20110213990A1 US13/104,795 US201113104795A US2011213990A1 US 20110213990 A1 US20110213990 A1 US 20110213990A1 US 201113104795 A US201113104795 A US 201113104795A US 2011213990 A1 US2011213990 A1 US 2011213990A1
- Authority
- US
- United States
- Prior art keywords
- memory
- content
- access
- reserved range
- agent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 title abstract description 48
- 230000002093 peripheral effect Effects 0.000 claims abstract description 41
- 238000012546 transfer Methods 0.000 claims abstract description 15
- 239000003795 chemical substances by application Substances 0.000 claims description 47
- 230000008569 process Effects 0.000 description 21
- 238000013461 design Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000004044 response Effects 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 230000035755 proliferation Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
- G06F21/126—Interacting with the operating system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
Definitions
- One or more embodiments relate generally to the field of integrated circuit and computer system design. More particularly, one or more of the embodiments relate to method(s) and apparatus for content protection using one-way buffers.
- cryptography provides a technique for keeping information secret, for determining that that information has not been tampered with and for determining who authored pieces of information.
- Public/private key systems encrypt information prior to transmission using a public key of the recipient that is decrypted using a private key that is only known to the recipient of the encrypted information.
- the sensitive information arrives at its destination, the information is often decrypted and stored in a clear format. In other words, the sensitive information is generally not maintained in a secure format at its destination.
- a rogue agent could possibly gain access to the PC and access the sensitive information.
- FIG. 1 is a block diagram illustrating a computer system for content protection using one-way buffers, in accordance with one embodiment.
- FIG. 2 is a block diagram illustrating a memory layout including a one-way virtual local buffer, in accordance with one embodiment.
- FIG. 3 is a block diagram illustrating a computer system for audio content protection using one-way buffers, in accordance with one embodiment.
- FIG. 4 is a block diagram illustrating a memory map including a virtual local buffer, in accordance with one embodiment.
- FIG. 5 is a block diagram illustrating a computer system for video content protection, in accordance with one embodiment.
- FIG. 6 is a diagram illustrating a memory map including a virtual local buffer, in accordance with one embodiment.
- FIG. 7 is a flowchart illustrating a method for content protection using a one-way buffer, in accordance with one embodiment.
- FIG. 8 is a flowchart illustrating a method for encrypting content prior to the storage of the content within a one-way buffer, in accordance with one embodiment.
- FIG. 9 is a flowchart illustrating a method for decrypting content read from a one-way buffer according to a direct memory access request issued by a peripheral device, in accordance with one embodiment.
- FIG. 10 is a flowchart illustrating a method for allocating a one-way buffer within a reserved range of memory for a peripheral device, in accordance with one embodiment.
- FIG. 11 is a flowchart illustrating a method for establishing a one-way buffer within a reserved range of memory, in accordance with one embodiment.
- FIG. 12 is a block diagram illustrating various design representations or formats for simulation, emulation and fabrication of a design using the disclosed techniques.
- the method includes storage of content decrypted by a host processor within a reserved range of memory.
- this content is required for playback by a peripheral device and thus requires the host processor to decrypt the received encrypted content to enable playback by the peripheral device.
- content is transferred from the reserved range of memory to a peripheral device or a device driver of the peripheral device.
- access to the reserved range of memory consists of write-only access by the host processor and read-only access by the peripheral device.
- decrypted content is stored within a reserved range of memory that is not accessible by malicious software.
- the content prior to storage of the content within the reserved range of memory, the content is re-encrypted prior to transfer to the peripheral device.
- logic is representative of hardware and/or software configured to perform one or more functions.
- examples of “hardware” include, but are not limited or restricted to, an integrated circuit, a finite state machine or even combinatorial logic.
- the integrated circuit may take the form of a processor such as a microprocessor, application specific integrated circuit, a digital signal processor, a micro-controller, or the like.
- FIG. 1 is a block diagram illustrating a computer system 100 for providing content protection using a one-way buffer, in accordance with one embodiment.
- a “one-way buffer” refers to a reserved range of memory that is unknown to the operating system (OS), wherein access to the reserved range of memory is limited to a host agent and a request agent; the host agent is assigned write-only access and the request agent is assigned read-only access to the reserved range of memory.
- a host processor host agent
- the “one-way buffer” may be referred to as a virtual local buffer (VLB), which stores the decrypted content.
- VLB virtual local buffer
- the term “content” includes, but is not limited to, digital audio content, digital video content or other like digital content, which is desirable for playback or viewing by a user.
- computer system 100 may comprise a processor system interconnect (e.g., front-side bus (FSB)) 104 for communicating information between a host processor (CPU) 102 and a chipset 110 .
- processor system interconnect e.g., front-side bus (FSB)
- FTB front-side bus
- chipset e.g., the term “chipset” is used to describe collectively, the various devices coupled to CPU 102 to perform desired system functionality.
- the term “interconnect” is defined to include a point-to-point interconnection between devices, including a multi-drop bus where more than two chips are joined to the same semiconductor or other like interconnect for enabling communication between the various devices and components on a motherboard.
- chipset 110 includes a memory controller for enabling read-access and write-access from main memory 122 , which is coupled to chipset 110 via interconnect 124 .
- main memory 122 refers to both volatile random access memory (RAM), in which data must be periodically refreshed, such as dynamic RAM (DRAM) and volatile RAM, in which data is not periodically refreshed, such as, for example, static random access memory (SRAM).
- main memory 122 may include, but is not limited to, DRAM, SRAM, synchronous DRAM (SDRAM), double data rate (DDR), SDRAM (DDR-SDRAM), Rambus DRAM (RDRAM) or any device capable of supporting high-speed volatile storage of data.
- chipset 110 is coupled to peripheral devices 170 ( 170 - 1 , . . . , 170 -N) via peripheral interconnect 112 ( 112 - 1 , . . . , 112 -N).
- peripheral device may include any input/output (I/O) device including, but not limited to, graphics, such as a monitor, a hard drive, CDROM, audio device or other like peripheral device.
- the CPU 102 may be referred to as a “host agent” and peripheral devices 170 may be referred to as “request agents.”
- an “agent” refers to any device or component coupled to chipset 110 , which may arbitrate for ownership of an interconnect coupling the device to chipset 110 to request some system functionality, such as reading or writing to main memory 122 .
- chipset 110 may include an integrated memory controller for handling read and write access to main memory 122 , as requested by the various agents coupled to chipset 110 .
- a memory controller may be integrated within CPU 102 such that main memory 122 is coupled directly to CPU 102 via an interconnect.
- chipset 110 includes virtual local buffer (VLB) snooper 140 , as well as programmed input/output (I/O) (PIO) redirect block 130 .
- VLB virtual local buffer
- I/O programmed input/output
- such components may be included within a memory controller of chipset 110 .
- components 130 and 140 of chipset 110 may be integrated within a memory controller provided by CPU 102 .
- a user of system 100 may desire playback of content using a peripheral device 170 .
- the content may be received from a content provider within a storage device in an encrypted form using a cryptographic key provided with the storage device. Details regarding decryption of the received content are not described herein to avoid obscuring details of the invention, but may be performed by trusted decryption software using conventional decryption techniques while remaining within the embodiments described.
- playback of content using a peripheral device 170 requires decryption of the content and storage of that content within a buffer accessible by a controller within the peripheral device or an I/O controller provided by chipset 110 .
- this controller requires the decrypted content to be stored within a data buffer accessible by the controller or a device driver associated with the peripheral device.
- decrypted content within the data buffers can easily be read by malicious software to gain access to the decrypted content.
- a virtual local buffer (VLB) 190 is assigned to a peripheral device to securely store decrypted content.
- VLB snooper block 140 detects the setting of the base address register (BAR) by plug-and-play software to a range not mapped to main memory to provide a memory address space above top of memory 182 .
- VLB snooper block 140 maps the assigned memory address space to a reserved range of memory to establish VLB 190 , as shown in FIG. 2 , in accordance with one embodiment.
- VLB 190 is contained within a reserved range of memory that is unknown by the operating system (OS), and is protected by a memory controller to prohibit access thereto by malicious software, as well as other system components.
- OS operating system
- VLB 190 is configured as a one-way buffer within a reserved range of memory, in which read-only access is granted to only a request agent (peripheral device 170 - 1 ) and write-only access is granted to only a host agent (CPU 102 ). Accordingly, in one embodiment, playback of content by a peripheral device 170 - 1 requires decryption of such content using CPU 102 .
- CPU 102 may be referred to as a “host agent,” which is performing decryption of content for a peripheral device, such as peripheral device 170 - 1 .
- the decryption software executing with CPU 102 would store decrypted content to data buffers within main memory and assigned to the respective peripheral device.
- trusted decryption software executing within CPU 102 directs CPU 102 to decrypt encrypted content received from a manufacturer.
- the protected decryption software directs the CPU to perform a programmed I/O transfer of the decrypted content to a portion of a memory address space assigned to a peripheral device that is to playback the decrypted content.
- the trusted decryption software may issue a memory allocation request to the OS to request a memory buffer. In response, the OS allocates a portion of memory for the trusted decryption software and provides a base address and a size of the buffer to the trusted decryption software.
- the trusted decryption software may communicate this information to chipset 110 by storing the base address and size of the buffer within a configuration register (not shown) of chipset 110 .
- chipset 110 may direct, for example, an integrated memory controller to configure the assigned range of memory as a one-way buffer to form VLB 192 below the top of memory 182 , wherein write-access to the buffer is limited to the CPU and read-access is limited to the peripheral device.
- chipset 110 directs a memory controller to map the assigned memory range to VLB 190 .
- a programmed I/O (PIO) redirect block 130 detects that the CPU is performing a programmed I/O transfer to an assigned portion of a memory address space that is mapped to a reserved range of memory including VLB 190 / 192 .
- the decrypted content is stored within VLB 190 / 192 to prohibit access to the decrypted content by malicious software or other rogue agents.
- PIO redirect blocks maps buffers allocated to trusted decryption software to VLB 190 or converts the buffers into a one-way buffer as VLB 192 , below top of memory 182 .
- PIO redirect block 130 in addition to redirecting the decrypted content includes local encrypt/decrypt block 132 to re-encrypt the decrypted content using a session key generated by, for example, a memory controller.
- the use of a session key prohibits the need for non-volatile storage to store the session key.
- the peripheral device requests content from VLB 190 using a device driver of the peripheral device that is granted bus master access, which enables the device driver to directly access main memory 122 via chipset 110 .
- the chipset ignores a direct memory access (DMA) request to VLB 190 unless a device ID associated with the DMA requests matches a device ID assigned read-only access to VLB 190 .
- DMA direct memory access
- FIG. 3 is a block diagram illustrating computer system 200 for audio content protection using a one-way buffer, in accordance with one embodiment.
- audio controller 260 acts as a DMA engine for providing decrypted content to audio codec 270 , which decodes audio content for playback by speakers 272 .
- VLB snooper 240 detects the setting of a base address register (BAR) of audio codec 270 to assign a memory address space to audio codec 270 .
- BAR base address register
- snooper 240 establishes a virtual local buffer or VLB 290 within a reserved range of memory, as illustrated in FIG. 4 , by memory map 280 .
- a range of memory provided by an OS in response to a memory allocation request may be converted into a one-way buffer as VLB 292 , below the top of memory 282 .
- CPU 202 issues a programmed I/O transfer of the decrypted content to the assigned memory address space of audio codec 270 .
- PIO redirection block 230 redirects the decrypted content to a one-way buffer or VLB 290 within a reserved range of memory that is not accessible by malicious software.
- VLB 290 / 292 is referred to as a one-way buffer since a host agent, or CPU 202 , and a request agent, or audio controller 260 , are the only components of computer system 200 with access to VLB 290 / 292 .
- CPU 202 is limited to write-only access of VLB 290 / 292
- audio codec 270 is limited to read-only access of VLB 290 / 292 .
- local encrypt/decrypt block 232 re-encrypts decrypted content from CPU 202 prior to storage with VLB 290 / 292 .
- local encrypt/decrypt blocks 232 In response to a DMA request from a device driver of audio codec 270 , local encrypt/decrypt blocks 232 also decrypts content read from VLB 290 / 292 prior to transfer of the content to audio codec 270 for playback via speakers 272 .
- a length of VLB 290 / 292 is configured to reduce the frequency required for populating of VLB 290 / 292 by CPU 202 to enable playback by audio codec 270 of the audio content via speakers 272 .
- VLB 290 / 292 is sized to enable a six-channel audio system with 32-bit samples and 96 kilo samples per second to store 115 kilobytes or a 50-millisecond buffer.
- the local encrypt/decrypt block 232 re-encrypts content prior to storage within VLB 290 / 292 to provide additional security.
- the encryption key, or session key, used to encrypt and decrypt the content can be generated by memory controller (MC) 220 and changed frequently. Accordingly, the encryption key is not burnt into MC 220 , for example, by a manufacturer, to avoid the need for non-volatile storage since the key is never exposed. Accordingly, such additional encryption prohibits the snooping of the memory interconnect 224 or the reading of VLB 290 / 292 via dual ported, dual in-line memory modules (DIMM).
- DIMM dual ported, dual in-line memory modules
- FIG. 5 is a block diagram of a computer system 300 for video content protection using a one-way buffer according to one embodiment.
- the chipset 310 is coupled to graphics block 350 .
- graphics block 350 includes, but is not limited to, an accelerated graphics port (AGP) or other follow on graphics port, to provide graphics support to computer system 300 .
- graphics block 350 includes a video controller 360 coupled to video codec 370 for playback of visual content via display 372 .
- video codec 370 includes logic for decoding of decrypted video content, as well as embedded audio content, for playback of video and sound via display 372 , which includes speakers (not shown).
- VLB snooper 340 detects the setting of a base address register (BAR) of video codec 370 to assign a memory address space to video codec 370 .
- BAR base address register
- snooper 340 establishes a virtual local buffer or VLB 390 within a reserved range of memory, as illustrated in FIG. 6 , by memory map 380 .
- a range of memory provided by an OS in response to a memory allocation request may be converted into a one-way buffer as VLB 392 , below the top of memory 382 .
- the trusted decryption software directs CPU 302 to decrypt received encrypted content from a content provider.
- the decrypted content is provided to video controller 360 via a programmed I/O transfer to a memory address space assigned to the video code 370 .
- PIO redirect block 330 redirects the decrypted content to VLB 390 / 392 within the reserved range of memory.
- the video codec 370 may issue a DMA request to chipset 310 . If the device ID associated with the video codec 370 matches the device ID assigned read-only access to VLB 390 / 392 , chipset 310 provides content read from VLB 390 to video codec 370 for playback via display 372 .
- local encrypt/decrypt block 332 may be used to provide additional security to store encrypted content within VLB 390 / 392 using a session encryption key, which is changed frequently to obviate the need for non-volatile storage of the session key or burning of the session key during manufacture of computer system 300 .
- Procedural methods for implementing embodiments of the invention are now described.
- FIG. 7 is a flowchart illustrating a method for content protection using a one-way buffer, in accordance with one embodiment.
- process block 420 it is determined whether a programmed I/O transfer of decrypted content is detected that is directed to an assigned portion of a memory address space.
- process block 422 it is determined whether the assigned portion of the memory address space is mapped to a reserved range of memory, including for example, a one-way or virtual local buffer, in accordance with one embodiment.
- the programmed I/O transfer of the decrypted content is redirected to a buffer within the reserved range of memory, for example, as illustrated with reference to FIGS. 1-6 .
- the buffer within the reserved range of memory is limited to one-way access by a host agent, which is granted write-only access to the buffer, and a request agent, which is granted read-only access to the buffer.
- a direct memory access request (DMA) is issued by a request agent e.g., a peripheral device).
- DMA direct memory access request
- the request agent is assigned read-only access to the reserved range of memory. If the request agent has access to the reserved range of memory, at process block 480 , content is transferred from the buffer to the request agent to enable playback of the content for a user via the request agent.
- FIG. 8 is a flowchart illustrating a method 432 for encryption of decrypted content prior to storage of the decrypted content within a one-way, or virtual local buffer, located within a reserved range of memory, in accordance with one embodiment.
- a session key is generated to encrypt the content. In one embodiment, this may be performed using an encryption/decryption block, for example, as shown in FIGS. 1 , 3 and 5 .
- the content associated with the programmed I/O transfer is encrypted using the generated session key.
- the decrypted content is re-encrypted content and stored into a VLB buffer within the reserved range of memory.
- such encryption may be performed to provide additional security to prohibit snooping of a memory interconnect between a chipset and main memory, as well as access to such content via a dual-ported, dual in-line memory module (DIMM).
- DIMM dual-ported, dual in-line memory module
- FIG. 9 is a flowchart illustrating a method 460 for decrypting content read from a VLB, or one-way buffer, in response to a DMA request issued by a request agent with read-only access to the VLB, or one-way buffer, in accordance with one embodiment.
- a device ID associated with the request agent is identified.
- FIG. 10 is a flowchart illustrating a method 401 for establishing a virtual local, or one-way buffer, for storage of content to provide protection of the content, in accordance with one embodiment, for example, as performed by VLB snooper block as shown in FIGS. 1 , 3 and 5 .
- process block 402 it is determined whether a memory allocation request by a device driver associated with a peripheral device is detected. Once detected, at process block 404 , it is determined whether a device ID of the peripheral device matches a device ID assigned read-only access to the reserved range of memory. If a match is detected, at process block 406 , memory allocated to the device driver is mapped to a reserved range of memory. Once mapped, the one-way buffer is generated by granting read-only access of the buffer to the device driver at process block 408 and granting write-only access of the buffer to a host processor at process block 409 , in accordance with one embodiment.
- the OS allocates a portion of memory for the trusted decryption software and provides a base address and a size of the buffer to the trusted decryption software.
- the trusted decryption software may communicate this information to a chipset (e.g., chipset 110 of FIG. 1 ) by storing the base address and size of the buffer within a configuration register (not shown) of chipset 110 .
- chipset 110 may direct, for example, an integrated memory controller to configure the assigned range of memory as a one-way buffer to form VLB 192 below the top of memory 182 , wherein write-access to the buffer is limited to the CPU and read-access is limited to the peripheral device.
- FIG. 11 illustrates a flowchart including a method 410 for establishing a one-way buffer, or VLB, for temporary storage of decrypted content to enable playback by a peripheral device or request agent according to one embodiment.
- VLB one-way buffer
- it is determined whether setting of a base address register to a range not mapped to memory by plug-and-play software is detected. Once detected, at process block 414 , the range is mapped to a reserved range of memory.
- a one-way buffer is established by configuring the reserved range of memory to provide write-only access to a host processor, or host agent, and read-only access to a peripheral device or request agent.
- FIG. 12 is a block diagram illustrating various representations or formats for simulation, emulation and fabrication of a design using the disclosed techniques.
- Data representing a design may represent the design in a number of manners.
- the hardware may be represented using a hardware description language, or another functional description language, which essentially provides a computerized model of how the designed hardware is expected to perform.
- the hardware model 510 may be stored in a storage medium 500 , such as a computer memory, so that the model may be simulated using simulation software 520 that applies a particular test suite 530 to the hardware model to determine if it indeed functions as intended.
- the simulation software is not recorded, captured or contained in the medium.
- a circuit level model with logic and/or transistor gates may be produced at some stages of the design process.
- the model may be similarly simulated some times by dedicated hardware simulators that form the model using programmable logic. This type of simulation taken a degree further may be an emulation technique.
- reconfigurable hardware is another embodiment that may involve a machine readable medium storing a model employing the disclosed techniques.
- the data representing the hardware model may be data specifying the presence or absence of various features on different mask layers or masks used to produce the integrated circuit.
- this data representing the integrated circuit embodies the techniques disclosed in that the circuitry logic and the data can be simulated or fabricated to perform these techniques.
- the data may be stored in any form of a machine readable medium.
- An optical or electrical wave 560 modulated or otherwise generated to transport such information, a memory 550 or a magnetic or optical storage 540 , such as a disk, may be the machine readable medium. Any of these mediums may carry the design information.
- the term “carry” e.g., a machine readable medium carrying information
- the set of bits describing the design or a particular of the design are (when embodied in a machine readable medium, such as a carrier or storage medium) an article that may be sealed in and out of itself, or used by others for further design or fabrication.
- systems 100 , 200 and 300 include a single CPU ( 102 , 202 , 302 ) for other embodiments, a multiprocessor system (where one or more processors may be similar in configuration and operation to the CPUs 102 , 202 and 302 described above) may benefit from the content protect using a one-way buffer of various embodiments.
- systems 100 , 200 and 300 may include a single CPU ( 102 , 202 , 302 ) with multiple processor cores.
- the multiple processor cores may each include an integrated memory controller or a single memory controller may be shared by the multiple processor cores.
- a different type of system or a different type of computer system such as, for example, a server, a workstation, a desktop computer system, a gaming system, an embedded computer system, a blade server, etc., may be used for other embodiments.
Abstract
Method and apparatus for content protection using one-way buffers. In one embodiment, the method includes storage of content decrypted by a host processor within a reserved range of memory. In one embodiment, a peripheral device requires the host processor to decrypt the received content for playback by the peripheral device. The decrypted content is stored within a reserved range of memory that is not accessible by malicious software. Hence, content is transferred from the reserved range of memory to a device driver of the peripheral device. In one embodiment, access to the reserved range of memory consists of write-only access by the host processor and read-only access by the peripheral device. In one embodiment, prior to storage of the content within the reserved range of memory, the content is re-encrypted prior to storage and decryption prior to transfer to the peripheral device. Other embodiments are described and claimed.
Description
- The present application claims priority from and is a divisional of U.S. patent application Ser. No. 11/128,526, filed on May 13, 2005, entitled “AN APPARATUS AND METHOD FOR CONTENT PROTECTION USING ONE-WAY BUFFERS”, issued as U.S. Pat. No. 7,941,860, which is hereby incorporated herein by reference in its entirety and for all purposes.
- One or more embodiments relate generally to the field of integrated circuit and computer system design. More particularly, one or more of the embodiments relate to method(s) and apparatus for content protection using one-way buffers.
- The proliferation of the Internet has led to the creation of a new form of commerce, generally referred to as Internet, or electronic, commerce (e-commerce). E-commerce enables users to sell and purchase items from a worldwide community connected via the Internet. This added simplicity, coupled with the continually reduced costs and increasing processor speed of modern day computers, has led to the inclusion of a personal computer (PC) in many homes throughout the world. Unfortunately, the proliferation of PCs within homes throughout the world, as well as the use of such PCs for e-commerce, often results in the storage of sensitive information within a computer.
- As a result, computer users become susceptible to rogue agents, which may desire to gain access to secure information loaded in their personal computers. To combat the various rogue agents from gaining access to the secure information, many computer systems employ some form of cryptography to prevent access to sensitive information. As known to those skilled in the art, cryptography provides a technique for keeping information secret, for determining that that information has not been tampered with and for determining who authored pieces of information.
- One form of cryptography involves public/private key systems. Public/private key systems encrypt information prior to transmission using a public key of the recipient that is decrypted using a private key that is only known to the recipient of the encrypted information. However, once the sensitive information arrives at its destination, the information is often decrypted and stored in a clear format. In other words, the sensitive information is generally not maintained in a secure format at its destination. As a result, during operation of a PC, a rogue agent could possibly gain access to the PC and access the sensitive information.
- Furthermore, the proliferation of e-commerce has led to the availability of media applications, such as motion pictures and music, which may be downloaded to a PC for one time use or for use for a predetermined period of time. Unfortunately, without some mechanism for protecting the contents of such media applications from access by rogue agents, e-commerce involving media applications may be prohibitive to the media providers. As a result, media content, providers may be reluctant to create high quality media for content providing applications when such content may be susceptible to rogue agents.
- The various embodiments of the present invention are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which:
-
FIG. 1 is a block diagram illustrating a computer system for content protection using one-way buffers, in accordance with one embodiment. -
FIG. 2 is a block diagram illustrating a memory layout including a one-way virtual local buffer, in accordance with one embodiment. -
FIG. 3 is a block diagram illustrating a computer system for audio content protection using one-way buffers, in accordance with one embodiment. -
FIG. 4 is a block diagram illustrating a memory map including a virtual local buffer, in accordance with one embodiment. -
FIG. 5 is a block diagram illustrating a computer system for video content protection, in accordance with one embodiment. -
FIG. 6 is a diagram illustrating a memory map including a virtual local buffer, in accordance with one embodiment. -
FIG. 7 is a flowchart illustrating a method for content protection using a one-way buffer, in accordance with one embodiment. -
FIG. 8 is a flowchart illustrating a method for encrypting content prior to the storage of the content within a one-way buffer, in accordance with one embodiment. -
FIG. 9 is a flowchart illustrating a method for decrypting content read from a one-way buffer according to a direct memory access request issued by a peripheral device, in accordance with one embodiment. -
FIG. 10 is a flowchart illustrating a method for allocating a one-way buffer within a reserved range of memory for a peripheral device, in accordance with one embodiment. -
FIG. 11 is a flowchart illustrating a method for establishing a one-way buffer within a reserved range of memory, in accordance with one embodiment. -
FIG. 12 is a block diagram illustrating various design representations or formats for simulation, emulation and fabrication of a design using the disclosed techniques. - A method and apparatus for content protection using one-way buffers are described. In one embodiment, the method includes storage of content decrypted by a host processor within a reserved range of memory. In one embodiment, this content is required for playback by a peripheral device and thus requires the host processor to decrypt the received encrypted content to enable playback by the peripheral device. Accordingly, content is transferred from the reserved range of memory to a peripheral device or a device driver of the peripheral device. In one embodiment, access to the reserved range of memory consists of write-only access by the host processor and read-only access by the peripheral device. Accordingly, decrypted content is stored within a reserved range of memory that is not accessible by malicious software. In one embodiment, prior to storage of the content within the reserved range of memory, the content is re-encrypted prior to transfer to the peripheral device.
- In the following description, numerous specific details such as logic implementations, sizes and names of signals and buses, types and interrelationships of system components, and logic partitioning/integration choices are set forth in order to provide a more thorough understanding. It will be appreciated, however, by one skilled in the art that the invention may be practiced without such specific details. In other instances, control structures and gate level circuits have not been shown in detail to avoid obscuring the invention. Those of ordinary skill in the art, with the included descriptions, will be able to implement appropriate logic circuits without undue experimentation.
- In the following description, certain terminology is used to describe features of the invention. For example, the term “logic” is representative of hardware and/or software configured to perform one or more functions. For instance, examples of “hardware” include, but are not limited or restricted to, an integrated circuit, a finite state machine or even combinatorial logic. The integrated circuit may take the form of a processor such as a microprocessor, application specific integrated circuit, a digital signal processor, a micro-controller, or the like.
-
FIG. 1 is a block diagram illustrating acomputer system 100 for providing content protection using a one-way buffer, in accordance with one embodiment. As described herein, a “one-way buffer” refers to a reserved range of memory that is unknown to the operating system (OS), wherein access to the reserved range of memory is limited to a host agent and a request agent; the host agent is assigned write-only access and the request agent is assigned read-only access to the reserved range of memory. In one embodiment, a host processor (host agent) performs decryption of received content to enable playback of the content by a peripheral device (request agent). As further described herein, the “one-way buffer” may be referred to as a virtual local buffer (VLB), which stores the decrypted content. As described herein, the term “content” includes, but is not limited to, digital audio content, digital video content or other like digital content, which is desirable for playback or viewing by a user. - Representatively,
computer system 100 may comprise a processor system interconnect (e.g., front-side bus (FSB)) 104 for communicating information between a host processor (CPU) 102 and achipset 110. As described herein, the term “chipset” is used to describe collectively, the various devices coupled toCPU 102 to perform desired system functionality. As described herein, the term “interconnect” is defined to include a point-to-point interconnection between devices, including a multi-drop bus where more than two chips are joined to the same semiconductor or other like interconnect for enabling communication between the various devices and components on a motherboard. - In one embodiment,
chipset 110 includes a memory controller for enabling read-access and write-access frommain memory 122, which is coupled tochipset 110 viainterconnect 124. As described herein,main memory 122 refers to both volatile random access memory (RAM), in which data must be periodically refreshed, such as dynamic RAM (DRAM) and volatile RAM, in which data is not periodically refreshed, such as, for example, static random access memory (SRAM). As described herein,main memory 122 may include, but is not limited to, DRAM, SRAM, synchronous DRAM (SDRAM), double data rate (DDR), SDRAM (DDR-SDRAM), Rambus DRAM (RDRAM) or any device capable of supporting high-speed volatile storage of data. - Representatively,
chipset 110 is coupled to peripheral devices 170 (170-1, . . . , 170-N) via peripheral interconnect 112 (112-1, . . . , 112-N). As described herein, the term “peripheral device” may include any input/output (I/O) device including, but not limited to, graphics, such as a monitor, a hard drive, CDROM, audio device or other like peripheral device. As described herein, theCPU 102 may be referred to as a “host agent” andperipheral devices 170 may be referred to as “request agents.” As described herein, an “agent” refers to any device or component coupled tochipset 110, which may arbitrate for ownership of an interconnect coupling the device tochipset 110 to request some system functionality, such as reading or writing tomain memory 122. - In one embodiment,
chipset 110 may include an integrated memory controller for handling read and write access tomain memory 122, as requested by the various agents coupled tochipset 110. However, in an alternate embodiment, a memory controller may be integrated withinCPU 102 such thatmain memory 122 is coupled directly toCPU 102 via an interconnect. In one embodiment,chipset 110 includes virtual local buffer (VLB) snooper 140, as well as programmed input/output (I/O) (PIO)redirect block 130. In one embodiment, such components may be included within a memory controller ofchipset 110. In an alternate embodiment,components chipset 110 may be integrated within a memory controller provided byCPU 102. - In one embodiment, a user of
system 100 may desire playback of content using aperipheral device 170. The content may be received from a content provider within a storage device in an encrypted form using a cryptographic key provided with the storage device. Details regarding decryption of the received content are not described herein to avoid obscuring details of the invention, but may be performed by trusted decryption software using conventional decryption techniques while remaining within the embodiments described. - Conventionally, playback of content using a
peripheral device 170 requires decryption of the content and storage of that content within a buffer accessible by a controller within the peripheral device or an I/O controller provided bychipset 110. Conventionally, this controller requires the decrypted content to be stored within a data buffer accessible by the controller or a device driver associated with the peripheral device. Unfortunately, decrypted content within the data buffers can easily be read by malicious software to gain access to the decrypted content. - Accordingly, as illustrated in
FIG. 2 , in one embodiment, a virtual local buffer (VLB) 190, or one-way buffer, is assigned to a peripheral device to securely store decrypted content. In one embodiment, VLB snooper block 140 (FIG. 1 ) detects the setting of the base address register (BAR) by plug-and-play software to a range not mapped to main memory to provide a memory address space above top ofmemory 182. In one embodiment, VLB snooper block 140 (FIG. 1 ) maps the assigned memory address space to a reserved range of memory to establishVLB 190, as shown inFIG. 2 , in accordance with one embodiment. In one embodiment,VLB 190 is contained within a reserved range of memory that is unknown by the operating system (OS), and is protected by a memory controller to prohibit access thereto by malicious software, as well as other system components. - In one embodiment,
VLB 190 is configured as a one-way buffer within a reserved range of memory, in which read-only access is granted to only a request agent (peripheral device 170-1) and write-only access is granted to only a host agent (CPU 102). Accordingly, in one embodiment, playback of content by a peripheral device 170-1 requires decryption of suchcontent using CPU 102. As described herein,CPU 102 may be referred to as a “host agent,” which is performing decryption of content for a peripheral device, such as peripheral device 170-1. According to conventional techniques, the decryption software executing withCPU 102 would store decrypted content to data buffers within main memory and assigned to the respective peripheral device. - In one embodiment, trusted decryption software executing within
CPU 102 directsCPU 102 to decrypt encrypted content received from a manufacturer. In one embodiment, the protected decryption software directs the CPU to perform a programmed I/O transfer of the decrypted content to a portion of a memory address space assigned to a peripheral device that is to playback the decrypted content. In an alternative embodiment, the trusted decryption software may issue a memory allocation request to the OS to request a memory buffer. In response, the OS allocates a portion of memory for the trusted decryption software and provides a base address and a size of the buffer to the trusted decryption software. - In accordance with this embodiment, the trusted decryption software may communicate this information to
chipset 110 by storing the base address and size of the buffer within a configuration register (not shown) ofchipset 110. In accordance with this embodiment,chipset 110 may direct, for example, an integrated memory controller to configure the assigned range of memory as a one-way buffer to form VLB 192 below the top ofmemory 182, wherein write-access to the buffer is limited to the CPU and read-access is limited to the peripheral device. In an alternative embodiment,chipset 110 directs a memory controller to map the assigned memory range toVLB 190. - In one embodiment, a programmed I/O (PIO)
redirect block 130 detects that the CPU is performing a programmed I/O transfer to an assigned portion of a memory address space that is mapped to a reserved range ofmemory including VLB 190/192. In one embodiment, rather than transmitting the decrypted content to data buffers withinmain memory 122 that are accessible by any peripheral device, the decrypted content is stored withinVLB 190/192 to prohibit access to the decrypted content by malicious software or other rogue agents. In an alternative embodiment, PIO redirect blocks maps buffers allocated to trusted decryption software toVLB 190 or converts the buffers into a one-way buffer as VLB 192, below top ofmemory 182. - In one embodiment,
PIO redirect block 130, in addition to redirecting the decrypted content includes local encrypt/decrypt block 132 to re-encrypt the decrypted content using a session key generated by, for example, a memory controller. In one embodiment, the use of a session key prohibits the need for non-volatile storage to store the session key. In one embodiment, the peripheral device requests content fromVLB 190 using a device driver of the peripheral device that is granted bus master access, which enables the device driver to directly accessmain memory 122 viachipset 110. In one embodiment, the chipset ignores a direct memory access (DMA) request toVLB 190 unless a device ID associated with the DMA requests matches a device ID assigned read-only access toVLB 190. -
FIG. 3 is a block diagram illustratingcomputer system 200 for audio content protection using a one-way buffer, in accordance with one embodiment. Conventionally,audio controller 260 acts as a DMA engine for providing decrypted content toaudio codec 270, which decodes audio content for playback byspeakers 272. In one embodiment,VLB snooper 240 detects the setting of a base address register (BAR) ofaudio codec 270 to assign a memory address space toaudio codec 270. In response to setting of the BAR,snooper 240 establishes a virtual local buffer orVLB 290 within a reserved range of memory, as illustrated inFIG. 4 , bymemory map 280. In an alternative embodiment, a range of memory provided by an OS in response to a memory allocation request may be converted into a one-way buffer as VLB 292, below the top ofmemory 282. - Accordingly, in contrast to conventional techniques, which store the decrypted content within data buffers of
main memory 222 that are accessible by malicious software,CPU 202 issues a programmed I/O transfer of the decrypted content to the assigned memory address space ofaudio codec 270. In response,PIO redirection block 230 redirects the decrypted content to a one-way buffer orVLB 290 within a reserved range of memory that is not accessible by malicious software. - As indicated above,
VLB 290/292 is referred to as a one-way buffer since a host agent, orCPU 202, and a request agent, oraudio controller 260, are the only components ofcomputer system 200 with access toVLB 290/292. Specifically,CPU 202 is limited to write-only access ofVLB 290/292 andaudio codec 270 is limited to read-only access ofVLB 290/292. In one embodiment, local encrypt/decrypt block 232 re-encrypts decrypted content fromCPU 202 prior to storage withVLB 290/292. In response to a DMA request from a device driver ofaudio codec 270, local encrypt/decrypt blocks 232 also decrypts content read fromVLB 290/292 prior to transfer of the content toaudio codec 270 for playback viaspeakers 272. - In one embodiment, a length of
VLB 290/292 is configured to reduce the frequency required for populating ofVLB 290/292 byCPU 202 to enable playback byaudio codec 270 of the audio content viaspeakers 272. In one embodiment, for example,VLB 290/292 is sized to enable a six-channel audio system with 32-bit samples and 96 kilo samples per second to store 115 kilobytes or a 50-millisecond buffer. - In one embodiment, the local encrypt/
decrypt block 232 re-encrypts content prior to storage withinVLB 290/292 to provide additional security. The encryption key, or session key, used to encrypt and decrypt the content can be generated by memory controller (MC) 220 and changed frequently. Accordingly, the encryption key is not burnt intoMC 220, for example, by a manufacturer, to avoid the need for non-volatile storage since the key is never exposed. Accordingly, such additional encryption prohibits the snooping of the memory interconnect 224 or the reading ofVLB 290/292 via dual ported, dual in-line memory modules (DIMM). -
FIG. 5 is a block diagram of acomputer system 300 for video content protection using a one-way buffer according to one embodiment. Representatively, thechipset 310 is coupled to graphics block 350. In one embodiment, graphics block 350 includes, but is not limited to, an accelerated graphics port (AGP) or other follow on graphics port, to provide graphics support tocomputer system 300. Representatively, graphics block 350 includes avideo controller 360 coupled tovideo codec 370 for playback of visual content viadisplay 372. - In one embodiment,
video codec 370 includes logic for decoding of decrypted video content, as well as embedded audio content, for playback of video and sound viadisplay 372, which includes speakers (not shown). In one embodiment,VLB snooper 340 detects the setting of a base address register (BAR) ofvideo codec 370 to assign a memory address space tovideo codec 370. In response to setting of the BAR,snooper 340 establishes a virtual local buffer orVLB 390 within a reserved range of memory, as illustrated inFIG. 6 , bymemory map 380. In an alternative embodiment, a range of memory provided by an OS in response to a memory allocation request may be converted into a one-way buffer as VLB 392, below the top ofmemory 382. - In the embodiment described, the trusted decryption software directs
CPU 302 to decrypt received encrypted content from a content provider. In one embodiment, the decrypted content is provided tovideo controller 360 via a programmed I/O transfer to a memory address space assigned to thevideo code 370. In response to the programmed I/O transfer byCPU 302,PIO redirect block 330 redirects the decrypted content toVLB 390/392 within the reserved range of memory. As thevideo codec 370 is granted bus master access, thevideo codec 370 may issue a DMA request tochipset 310. If the device ID associated with thevideo codec 370 matches the device ID assigned read-only access toVLB 390/392,chipset 310 provides content read fromVLB 390 tovideo codec 370 for playback viadisplay 372. - As described above, local encrypt/
decrypt block 332 may be used to provide additional security to store encrypted content withinVLB 390/392 using a session encryption key, which is changed frequently to obviate the need for non-volatile storage of the session key or burning of the session key during manufacture ofcomputer system 300. Procedural methods for implementing embodiments of the invention are now described. -
FIG. 7 is a flowchart illustrating a method for content protection using a one-way buffer, in accordance with one embodiment. Atprocess block 420, it is determined whether a programmed I/O transfer of decrypted content is detected that is directed to an assigned portion of a memory address space. When the transfer is directed to an assigned portion of a memory address space, atprocess block 422, it is determined whether the assigned portion of the memory address space is mapped to a reserved range of memory, including for example, a one-way or virtual local buffer, in accordance with one embodiment. If the memory address space is mapped to the reserved range of memory, atprocess block 430, the programmed I/O transfer of the decrypted content is redirected to a buffer within the reserved range of memory, for example, as illustrated with reference toFIGS. 1-6 . - As described above, the buffer within the reserved range of memory, referred to as a VLB or one-way buffer, is limited to one-way access by a host agent, which is granted write-only access to the buffer, and a request agent, which is granted read-only access to the buffer. Accordingly, at
process block 440, it is determined whether a direct memory access request (DMA) is issued by a request agent e.g., a peripheral device). When such is detected, atprocess block 450, it is determined whether the request agent is assigned read-only access to the reserved range of memory. If the request agent has access to the reserved range of memory, atprocess block 480, content is transferred from the buffer to the request agent to enable playback of the content for a user via the request agent. -
FIG. 8 is a flowchart illustrating amethod 432 for encryption of decrypted content prior to storage of the decrypted content within a one-way, or virtual local buffer, located within a reserved range of memory, in accordance with one embodiment. Atprocess block 434, a session key is generated to encrypt the content. In one embodiment, this may be performed using an encryption/decryption block, for example, as shown inFIGS. 1 , 3 and 5. Atprocess block 436, the content associated with the programmed I/O transfer is encrypted using the generated session key. Atprocess block 438, the decrypted content is re-encrypted content and stored into a VLB buffer within the reserved range of memory. As indicated above, such encryption may be performed to provide additional security to prohibit snooping of a memory interconnect between a chipset and main memory, as well as access to such content via a dual-ported, dual in-line memory module (DIMM). -
FIG. 9 is a flowchart illustrating amethod 460 for decrypting content read from a VLB, or one-way buffer, in response to a DMA request issued by a request agent with read-only access to the VLB, or one-way buffer, in accordance with one embodiment. Atprocess block 462, a device ID associated with the request agent is identified. Once identified, atprocess block 464, it is determined whether the device ID of the request agent matches a device ID associated with the reserved range of memory. If a match is detected, atprocess block 466, content read from the buffer, in response to the DMA request issued by the request agent, is decrypted. Once decrypted, atprocess block 468, the DMA request is responded to with the decrypted content. -
FIG. 10 is a flowchart illustrating amethod 401 for establishing a virtual local, or one-way buffer, for storage of content to provide protection of the content, in accordance with one embodiment, for example, as performed by VLB snooper block as shown inFIGS. 1 , 3 and 5. Atprocess block 402, it is determined whether a memory allocation request by a device driver associated with a peripheral device is detected. Once detected, atprocess block 404, it is determined whether a device ID of the peripheral device matches a device ID assigned read-only access to the reserved range of memory. If a match is detected, atprocess block 406, memory allocated to the device driver is mapped to a reserved range of memory. Once mapped, the one-way buffer is generated by granting read-only access of the buffer to the device driver atprocess block 408 and granting write-only access of the buffer to a host processor atprocess block 409, in accordance with one embodiment. - In an alternative embodiment, the OS allocates a portion of memory for the trusted decryption software and provides a base address and a size of the buffer to the trusted decryption software. In accordance with this embodiment, the trusted decryption software may communicate this information to a chipset (e.g.,
chipset 110 ofFIG. 1 ) by storing the base address and size of the buffer within a configuration register (not shown) ofchipset 110. In accordance with this embodiment,chipset 110 may direct, for example, an integrated memory controller to configure the assigned range of memory as a one-way buffer to form VLB 192 below the top ofmemory 182, wherein write-access to the buffer is limited to the CPU and read-access is limited to the peripheral device. -
FIG. 11 illustrates a flowchart including amethod 410 for establishing a one-way buffer, or VLB, for temporary storage of decrypted content to enable playback by a peripheral device or request agent according to one embodiment. Atprocess block 412, it is determined whether setting of a base address register to a range not mapped to memory by plug-and-play software is detected. Once detected, atprocess block 414, the range is mapped to a reserved range of memory. Atprocess block 416, a one-way buffer is established by configuring the reserved range of memory to provide write-only access to a host processor, or host agent, and read-only access to a peripheral device or request agent. -
FIG. 12 is a block diagram illustrating various representations or formats for simulation, emulation and fabrication of a design using the disclosed techniques. Data representing a design may represent the design in a number of manners. First, as is useful in simulations, the hardware may be represented using a hardware description language, or another functional description language, which essentially provides a computerized model of how the designed hardware is expected to perform. Thehardware model 510 may be stored in astorage medium 500, such as a computer memory, so that the model may be simulated usingsimulation software 520 that applies aparticular test suite 530 to the hardware model to determine if it indeed functions as intended. In some embodiments, the simulation software is not recorded, captured or contained in the medium. - Additionally, a circuit level model with logic and/or transistor gates may be produced at some stages of the design process. The model may be similarly simulated some times by dedicated hardware simulators that form the model using programmable logic. This type of simulation taken a degree further may be an emulation technique. In any case, reconfigurable hardware is another embodiment that may involve a machine readable medium storing a model employing the disclosed techniques.
- Furthermore, most designs at some stage reach a level of data representing the physical placements of various devices in the hardware model. In the case where conventional semiconductor fabrication techniques are used, the data representing the hardware model may be data specifying the presence or absence of various features on different mask layers or masks used to produce the integrated circuit. Again, this data representing the integrated circuit embodies the techniques disclosed in that the circuitry logic and the data can be simulated or fabricated to perform these techniques.
- In any representation of the design, the data may be stored in any form of a machine readable medium. An optical or
electrical wave 560 modulated or otherwise generated to transport such information, amemory 550 or a magnetic oroptical storage 540, such as a disk, may be the machine readable medium. Any of these mediums may carry the design information. The term “carry” (e.g., a machine readable medium carrying information) thus covers information stored on a storage device or information encoded or modulated into or onto a carrier wave. The set of bits describing the design or a particular of the design are (when embodied in a machine readable medium, such as a carrier or storage medium) an article that may be sealed in and out of itself, or used by others for further design or fabrication. - It will be appreciated that, for other embodiments, a different system configuration may be used. For example, while the
systems CPUs systems - Having disclosed embodiments and the best mode, modifications and variations may be made to the disclosed embodiments while remaining within the scope of the embodiments as defined by the following claims.
Claims (6)
1. An apparatus, comprising:
a controller to redirect a host agent transfer of decrypted content from an assigned portion of a memory address space to a buffer within a reserved range of memory if the assigned portion of the memory address space is mapped to the reserved range of memory and to transfer content from the buffer to a request agent.
2. The apparatus of claim 1 , wherein the controller is to encrypt the decrypted content prior to storage within the reserved range of memory.
3. The apparatus of claim 1 , wherein the controller is to detect a direct memory access request issued by the request agent and to decrypt encrypted content read from the reserved range of memory prior to transfer of the content to the request agent if the request agent is assigned read-only access to the reserved range of memory.
4. The apparatus of claim 1 , wherein the controller is to detect a memory allocation request issued by the request agent, to map memory allocated to the request agent to the reserved range of memory, to grant read-only access of the reserved range of memory to the request agent and to grant write-only access to the reserved range of memory to the host agent.
5. The apparatus of claim 2 , wherein the controller is to generate a session key to encrypt the decrypted content received from the host agent.
6. The apparatus of claim 1 , wherein the apparatus is a chipset, the host agent is a host processor, the request agent is a peripheral device and the controller is a memory controller.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/104,795 US20110213990A1 (en) | 2005-05-13 | 2011-05-10 | Apparatus and method for content protection using one-way buffers |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/128,526 US7941860B2 (en) | 2005-05-13 | 2005-05-13 | Apparatus and method for content protection using one-way buffers |
US13/104,795 US20110213990A1 (en) | 2005-05-13 | 2011-05-10 | Apparatus and method for content protection using one-way buffers |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/128,526 Division US7941860B2 (en) | 2005-05-13 | 2005-05-13 | Apparatus and method for content protection using one-way buffers |
Publications (1)
Publication Number | Publication Date |
---|---|
US20110213990A1 true US20110213990A1 (en) | 2011-09-01 |
Family
ID=37420355
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/128,526 Expired - Fee Related US7941860B2 (en) | 2005-05-13 | 2005-05-13 | Apparatus and method for content protection using one-way buffers |
US13/104,795 Abandoned US20110213990A1 (en) | 2005-05-13 | 2011-05-10 | Apparatus and method for content protection using one-way buffers |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/128,526 Expired - Fee Related US7941860B2 (en) | 2005-05-13 | 2005-05-13 | Apparatus and method for content protection using one-way buffers |
Country Status (1)
Country | Link |
---|---|
US (2) | US7941860B2 (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090113500A1 (en) * | 2007-10-24 | 2009-04-30 | Gita Technologies Ltd. | Secure implementation of network-based sensors |
US20090319773A1 (en) * | 2006-08-29 | 2009-12-24 | Waterfall Security Solutions Ltd | Encryption-based control of network traffic |
US20100275039A1 (en) * | 2007-01-16 | 2010-10-28 | Waterfall Security Solutions Ltd | Secure archive |
US9268957B2 (en) | 2006-12-12 | 2016-02-23 | Waterfall Security Solutions Ltd. | Encryption-and decryption-enabled interfaces |
US9369446B2 (en) | 2014-10-19 | 2016-06-14 | Waterfall Security Solutions Ltd. | Secure remote desktop |
US9419975B2 (en) | 2013-04-22 | 2016-08-16 | Waterfall Security Solutions Ltd. | Bi-directional communication over a one-way link |
US9635037B2 (en) | 2012-09-06 | 2017-04-25 | Waterfall Security Solutions Ltd. | Remote control of secure installations |
US9762536B2 (en) | 2006-06-27 | 2017-09-12 | Waterfall Security Solutions Ltd. | One way secure link |
US10356226B2 (en) | 2016-02-14 | 2019-07-16 | Waaterfall Security Solutions Ltd. | Secure connection with protected facilities |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4667108B2 (en) * | 2005-04-11 | 2011-04-06 | パナソニック株式会社 | Data processing device |
US20070239996A1 (en) * | 2006-03-20 | 2007-10-11 | Cromer Daryl C | Method and apparatus for binding computer memory to motherboard |
EP2145335A4 (en) * | 2007-04-12 | 2010-09-08 | Trustwave Corp | System and method for detecting and mitigating the writing of sensitive data to memory |
US7649452B2 (en) * | 2007-06-29 | 2010-01-19 | Waterfall Solutions Ltd. | Protection of control networks using a one-way link |
US8826037B2 (en) * | 2008-03-13 | 2014-09-02 | Cyberlink Corp. | Method for decrypting an encrypted instruction and system thereof |
US8209509B2 (en) * | 2008-05-13 | 2012-06-26 | Atmel Corporation | Accessing memory in a system with memory protection |
US8707054B2 (en) * | 2008-12-18 | 2014-04-22 | Nxp B.V. | Establishing a secure memory path in a unitary memory architecture |
US8225061B2 (en) | 2009-07-02 | 2012-07-17 | Apple Inc. | Method and apparatus for protected content data processing |
EP2795503A4 (en) * | 2011-12-21 | 2015-08-26 | Intel Corp | Secure direct memory access |
US9076001B1 (en) * | 2012-02-06 | 2015-07-07 | Marvell International Ltd. | Method and apparatus for implementing a secure content pipeline |
US9158942B2 (en) | 2013-02-11 | 2015-10-13 | Intel Corporation | Securing display output data against malicious software attacks |
US10261748B2 (en) * | 2015-12-18 | 2019-04-16 | Intel Corporation | Technologies for protecting audio data with trusted I/O |
US10719447B2 (en) * | 2016-09-26 | 2020-07-21 | Intel Corporation | Cache and compression interoperability in a graphics processor pipeline |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10649925B2 (en) * | 2018-05-16 | 2020-05-12 | Microsoft Technology Licensing, Llc | Indirect data return from memory controller logic |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5926775A (en) * | 1997-10-08 | 1999-07-20 | National Instruments Corporation | Mini driver software architecture for a data acquisition system |
US20020002541A1 (en) * | 2000-06-30 | 2002-01-03 | Williams Eddie H. | Online digital content library |
WO2002025416A2 (en) * | 2000-09-20 | 2002-03-28 | Intel Corporation | Method and apparatus to improve the protection of information presented by a computer |
US20030233524A1 (en) * | 2002-06-12 | 2003-12-18 | Poisner David I. | Protected configuration space in a protected environment |
US6775779B1 (en) * | 1999-04-06 | 2004-08-10 | Microsoft Corporation | Hierarchical trusted code for content protection in computers |
US20040177263A1 (en) * | 2002-05-06 | 2004-09-09 | Sobel William E. | Alteration of module load locations |
US20050198404A1 (en) * | 2004-03-05 | 2005-09-08 | Takahiro Kawakami | Semiconductor device and electronic apparatus |
US7076625B2 (en) * | 2003-07-09 | 2006-07-11 | Hitachi Global Storage Technologies | Multimedia storage device having digital write-only area |
US7167934B1 (en) * | 2003-09-09 | 2007-01-23 | Microsoft Corporation | Peripheral device data transfer protocol |
US7278031B1 (en) * | 2001-05-10 | 2007-10-02 | Best Robert M | Secure distribution of portable game software |
US7401230B2 (en) * | 2004-03-31 | 2008-07-15 | Intel Corporation | Secure virtual machine monitor to tear down a secure execution environment |
US7461268B2 (en) * | 2004-07-15 | 2008-12-02 | International Business Machines Corporation | E-fuses for storing security version data |
-
2005
- 2005-05-13 US US11/128,526 patent/US7941860B2/en not_active Expired - Fee Related
-
2011
- 2011-05-10 US US13/104,795 patent/US20110213990A1/en not_active Abandoned
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5926775A (en) * | 1997-10-08 | 1999-07-20 | National Instruments Corporation | Mini driver software architecture for a data acquisition system |
US6775779B1 (en) * | 1999-04-06 | 2004-08-10 | Microsoft Corporation | Hierarchical trusted code for content protection in computers |
US20020002541A1 (en) * | 2000-06-30 | 2002-01-03 | Williams Eddie H. | Online digital content library |
US7007304B1 (en) * | 2000-09-20 | 2006-02-28 | Intel Corporation | Method and apparatus to improve the protection of information presented by a computer |
WO2002025416A2 (en) * | 2000-09-20 | 2002-03-28 | Intel Corporation | Method and apparatus to improve the protection of information presented by a computer |
US7278031B1 (en) * | 2001-05-10 | 2007-10-02 | Best Robert M | Secure distribution of portable game software |
US20040177263A1 (en) * | 2002-05-06 | 2004-09-09 | Sobel William E. | Alteration of module load locations |
US20050022002A1 (en) * | 2002-06-12 | 2005-01-27 | Poisner David I. | Protected configuration space in a protected environment |
US20030233524A1 (en) * | 2002-06-12 | 2003-12-18 | Poisner David I. | Protected configuration space in a protected environment |
US7076625B2 (en) * | 2003-07-09 | 2006-07-11 | Hitachi Global Storage Technologies | Multimedia storage device having digital write-only area |
US7167934B1 (en) * | 2003-09-09 | 2007-01-23 | Microsoft Corporation | Peripheral device data transfer protocol |
US20050198404A1 (en) * | 2004-03-05 | 2005-09-08 | Takahiro Kawakami | Semiconductor device and electronic apparatus |
US7401230B2 (en) * | 2004-03-31 | 2008-07-15 | Intel Corporation | Secure virtual machine monitor to tear down a secure execution environment |
US7461268B2 (en) * | 2004-07-15 | 2008-12-02 | International Business Machines Corporation | E-fuses for storing security version data |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9762536B2 (en) | 2006-06-27 | 2017-09-12 | Waterfall Security Solutions Ltd. | One way secure link |
US8635441B2 (en) | 2006-08-29 | 2014-01-21 | Waterfall Security Solutions Ltd. | Encryption-based control of network traffic |
US20090319773A1 (en) * | 2006-08-29 | 2009-12-24 | Waterfall Security Solutions Ltd | Encryption-based control of network traffic |
US9268957B2 (en) | 2006-12-12 | 2016-02-23 | Waterfall Security Solutions Ltd. | Encryption-and decryption-enabled interfaces |
US9116857B2 (en) * | 2007-01-16 | 2015-08-25 | Waterfall Security Solutions Ltd. | Secure archive |
US8756436B2 (en) * | 2007-01-16 | 2014-06-17 | Waterfall Security Solutions Ltd. | Secure archive |
US20140244780A1 (en) * | 2007-01-16 | 2014-08-28 | Waterfall Security Solutions Ltd. | Secure Archive |
US20150326546A1 (en) * | 2007-01-16 | 2015-11-12 | Waterfall Security Solutions Ltd. | Secure Archive |
US9519616B2 (en) * | 2007-01-16 | 2016-12-13 | Waterfall Security Solution Ltd. | Secure archive |
US20100275039A1 (en) * | 2007-01-16 | 2010-10-28 | Waterfall Security Solutions Ltd | Secure archive |
US8793302B2 (en) | 2007-10-24 | 2014-07-29 | Waterfall Security Solutions Ltd. | Secure implementation of network-based sensors |
US20090113500A1 (en) * | 2007-10-24 | 2009-04-30 | Gita Technologies Ltd. | Secure implementation of network-based sensors |
US8223205B2 (en) | 2007-10-24 | 2012-07-17 | Waterfall Solutions Ltd. | Secure implementation of network-based sensors |
US9635037B2 (en) | 2012-09-06 | 2017-04-25 | Waterfall Security Solutions Ltd. | Remote control of secure installations |
US9419975B2 (en) | 2013-04-22 | 2016-08-16 | Waterfall Security Solutions Ltd. | Bi-directional communication over a one-way link |
US9369446B2 (en) | 2014-10-19 | 2016-06-14 | Waterfall Security Solutions Ltd. | Secure remote desktop |
US10356226B2 (en) | 2016-02-14 | 2019-07-16 | Waaterfall Security Solutions Ltd. | Secure connection with protected facilities |
Also Published As
Publication number | Publication date |
---|---|
US7941860B2 (en) | 2011-05-10 |
US20060259431A1 (en) | 2006-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7941860B2 (en) | Apparatus and method for content protection using one-way buffers | |
KR101954733B1 (en) | System-on-chip processing secured contents and mobile device comprising the same | |
US7650645B1 (en) | Trusted bus transactions | |
JP4489030B2 (en) | Method and apparatus for providing a secure boot sequence within a processor | |
TWI715619B (en) | Processor, method and system for hardware enforced one-way cryptography | |
JP5036187B2 (en) | Flexible licensing architecture for content rights management systems | |
TWI545436B (en) | Integrated circuit and method for secure memory management | |
US10740466B1 (en) | Securing interfaces of a compute node | |
TWI493951B (en) | Systems and methods for protecting symmetric encryption keys | |
US6704872B1 (en) | Processor with a function to prevent illegal execution of a program, an instruction executed by a processor and a method of preventing illegal execution of a program | |
US8689349B2 (en) | Information flow tracking and protection | |
EP2580704B1 (en) | Methods and apparatuses for securing playback content comprising sensitive and non-sensitive data | |
US10180913B1 (en) | Secure virtual access for real-time embedded devices | |
US20130205139A1 (en) | Scrambling An Address And Encrypting Write Data For Storing In A Storage Device | |
US20130166922A1 (en) | Method and system for frame buffer protection | |
EP2107486A2 (en) | Method and apparatus for providing a secure display window inside the primary display | |
NO332664B1 (en) | Procedure for Using a Rights Template to Obtain a Signed Rights Mark (SRL) for Digital Content in a Digital Rights Management System | |
TWI809026B (en) | Integrated circuit (ic) system, method for an integrated circuit (ic) system and non-transitory computer readable medium for managing a set of cryptographic keys in an encrypted system | |
JP2010140470A (en) | Method and apparatus for secure processing of confidential content within virtual machine of processor | |
TWI662838B (en) | Method, device, and system for protecting and securely delivering media content | |
US9418220B1 (en) | Controlling access to memory using a controller that performs cryptographic functions | |
JP2010267135A (en) | Memory controller | |
JP2006244486A (en) | Method for forming right of use for item on bases of access right and computer readable medium | |
US11748493B2 (en) | Secure asset management system | |
US20070180249A1 (en) | Methods and apparatus for content control using processor resource management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |