FIELD OF THE DISCLOSURE This disclosure relates generally to content delivery and, more particularly, to content delivery systems and methods to operate the same.
BACKGROUND The ever increasing proliferation and/or availability of media players (e.g., personal computers, digital video recorders (DVRs), home media centers, game playing system, etc.) creates a strong demand for systems, devices and/or methods to download video, audio and/or multimedia data, files and/or assets. Today, most media devices are customized for operation with a single content delivery medium, for example, satellite, digital cable, Internet. Additionally, present media devices rely on often incompatible media file formats and transmission protocols. As such, a device that can record, for example, a movie delivered via satellite may be incapable of receiving a movie, even the same movie, via the Internet. Additionally, to reduce piracy, broadcast and/or delivery systems and media players require methods to ensure secure authorization, secure content delivery and secure content storage.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a schematic illustration of an example disclosed content delivery system.
FIGS. 2 and 3 illustrate example manners of implementing the example headend (HE) ofFIG. 1.
FIGS. 4, 5 and6 illustrate example manners of implementing the example integrated receiver/decoder (IRD) ofFIG. 1.
FIG. 7 illustrates an example encryption configuration for the example content delivery system ofFIG. 1.
FIGS. 8-10 are flowcharts representative of example processes that may be carried out to implement the example headend (HE) ofFIG. 1.
FIG. 11 illustrates an example manner of implementing the example Internet-based content server ofFIG. 1.
FIG. 12 illustrates example signal processing and content delivery paths for the example content delivery system ofFIG. 1.
FIGS. 13 and 14 illustrate example video on demand data packet gathering methods for the example content delivery system ofFIG. 1.
FIG. 15 is a flowchart representative of an example process that may be carried out to implement the example methods illustrated inFIGS. 13 and 14.
FIG. 16 illustrates an example conditional access exchange for the example pay content delivery system ofFIG. 1.
FIGS.17A-C are flowcharts representative of example processes that may be carried out to implement the example exchange ofFIG. 16.
FIG. 18 illustrates an example conditional access exchange for the example pay content delivery system ofFIG. 1.
FIGS.19A-C are flowcharts representative of example processes that may be carried out to implement the example exchange ofFIG. 18.
FIGS. 20 and 21 illustrate example conditional access exchanges for the example pay content delivery system ofFIG. 1.
FIGS.22A-C and23A-C are flowcharts representative of example processes that may be carried out to implement the example exchange ofFIGS. 20 and 21, respectively.
FIGS. 24A and 24B illustrate example conditional access exchanges for the example pay content delivery system ofFIG. 1.
FIG. 25 illustrates an example encryption configuration for the integrated receiver/decoder ofFIG. 1.
FIGS.26A-C are flowcharts representative of example processes that may be carried out to implement the example exchange ofFIGS. 24A and 24B.
FIG. 27 illustrates an example implementation of protected content delivery between the integrated receiver/decoder and the device ofFIG. 1.
FIGS. 28A and 28B illustrate an example protected content delivery exchange for the example pay delivery network ofFIG. 1.
FIGS. 29, 30 and31 are flowcharts representative of example processes that may be carried out to implement the example implementation ofFIG. 27 and/or the example exchange ofFIGS. 28A and 28B.
FIGS. 32A and 32B illustrate example secure content transfers for the example delivery system ofFIG. 1.
FIGS. 33 and 34 are flowcharts representative of example processes that may be carried out to implement the example secure content transfers ofFIGS. 32A and 32B.
FIG. 35 is a schematic illustration of an example processor platform that may be used and/or programmed to implement the example processes ofFIGS. 8-10,FIG. 15, FIGS.17A-C, FIGS.19A-C, FIGS.22A-C, FIGS.23A-C, FIGS.26A-C,FIGS. 29-31 and/orFIGS. 33-34.
DETAILED DESCRIPTION To facilitate review and understanding of the content delivery systems and methods to operate the same disclosed herein, the present patent has been organized in accordance with the following headings:
I. Content Delivery System (paragraph [0033])
II. Flexible Content Delivery (paragraph [00123])
III. Conditional Access of Broadband Content (paragraph [00143])
IV. Signed Conditional Access of Broadband Content (paragraph [00157])
V. Encrypted Conditional Access of Broadband Content (paragraph [00172])
VI. Additionally Encrypted Content Delivery (paragraph [00195])
VII. Secure Content Sharing in a Home Network (paragraph [00212])
VIII. Secure Content Transfer (paragraph [00252])
IX. Example Processor Platform (paragraph [00276])
Content delivery systems and methods to operate the same are disclosed. A disclosed example content delivery system includes a receiver station; a content server to transfer a file to a receiver via a point-to-point communication signal; and a transmission source that includes a computer readable medium to store the file containing pre-packetized content data and a controller to send the file containing the pre-packetized content data to a broadcast transmitter and to the content server.
A disclosed example apparatus includes a broadcast transmitter, a computer readable medium to store a file containing pre-packetized content data, and a controller to send the file containing the pre-packetized content data to the broadcast transmitter and to a content server, the content server to transfer the file to a receiver via at least one of a point-to-point communication path or point-to-point communication protocol. Another disclosed example apparatus includes a first interface to receive at least one of a broadcast signal representing first packetized content data, and a second interface to receive a point-to-point signal comprising second packetized content data, wherein a single packet format is used for the first packetized content data and the second packetized content data. Yet another disclosed example apparatus includes a content transport processing system to create an asset file containing at least one of pre-packetized or pre-encrypted first content data, a repository to store the asset file, and a traffic and scheduling system to route the asset file to at least one of a content delivery network or a broadcast system, and to route second content data to the broadcast system, wherein the second content data is live content data.
A disclosed example method includes receiving packetized content data, wherein the packetized content data is received via at least one of a point-to-point communication signal or a broadcast signal, and storing the received packetized content data on a storage medium, wherein a data structure used to store the received packetized content data on the storage medium does not depend on whether the packetized content data is received via the point-to-point communication signal or the broadcast signal and does not depend on whether or not the packetized content data represents a live program. Another disclosed example method includes packetizing content data, storing the packetized content data in an asset file, and sending the asset file contents to an Internet-based content server and to a broadcast transmitter. Yet another disclosed example method includes packetizing first content data, wherein the first content data is live content data, creating an asset file containing packetized second content data, wherein packetization of the second content data is implemented substantially the same as for the packetization of the first content data, forming broadcast transmission signal based on the packetized first content data, and forming an Internet signal based on the asset file.
While the following disclosure is made with respect to example DIRECTV® broadcast services and systems, it should be understood that many other delivery systems are readily applicable to disclosed systems and methods. Such systems include other wireless distribution systems, wired or cable distribution systems, cable television distribution systems, Ultra High Frequency (UHF)/Very High Frequency (VHF) radio frequency systems or other terrestrial broadcast systems (e.g., Multi-channel Multi-point Distribution System (MMDS), Local Multi-point Distribution System (LMDS), etc.), Internet-based distribution systems, cellular distribution systems, power-line broadcast systems, any point-to-point and/or multicast Internet Protocol (IP) delivery network, and fiber optic networks. Further, the different functions collectively allocated among a headend (HE), integrated receiver/decoders (IRDs) and a content delivery network (CDN) as described below can be reallocated as desired without departing from the intended scope of the present patent.
Further, while the following disclosure is made with respect to the delivery of video (e.g., television (TV), movies, music videos, etc.), it should be understood that the systems and methods disclosed herein could also be used for delivery of any media content type, for example, audio, music, data files, web pages, etc. Additionally, throughout this disclosure reference is made to data, information, programs, movies, assets, video data, etc., however, it will be readily apparent to persons of ordinary skill in the art that these terms are substantially equivalent in reference to the example systems and/or methods disclosed herein. As used herein, the term title will be used to refer to, for example, a movie itself and not the name of the movie.
I. Content Delivery System
As illustrated inFIG. 1, an example direct-to-home (DTH)system100 includes a transmission source102 (e.g., a headend (HE)102), a plurality of media sources, one of which is shown atreference numeral103, a satellite and/or satellite relay104 (i.e., satellite/relay104) and a plurality of receiver stations (e.g., integrated receiver/decoders (IRDs)), one of which is shown at reference numeral106 (i.e., IRD106), between which wireless communications are exchanged. The wireless communications may take place at any suitable frequency, such as, for example, Ku-band frequencies. As described in detail below with respect to each portion of theexample DTH system100, information provided to theHE102 from themedia source103 may be transmitted, for example, via anuplink antenna107 to the satellite/relay104, which may be at least one geosynchronous or geo-stationary satellite or satellite relay that, in turn, rebroadcasts the information over broad geographical areas on the earth that include theIRDs106. Among other things, the example HE102 ofFIG. 1 provides program material to theIRDs106 and coordinates with theIRDs106 to offer subscribers pay-per-view (PPV) program services, including billing and associated decryption of video programs, as well as non-PPV programming. To receive the information rebroadcast by the satellite/relay104, eachIRD106 is communicatively coupled to any variety of receive (i.e., downlink)antenna108.
Security of assets broadcast via the satellite/relay104 may be established by applying encryption to assets during content processing and/or during broadcast (i.e., broadcast encryption). For example, an asset can be encrypted based upon a codeword (CW) known to theHE102 and known to theIRDs106 authorized to view and/or playback the asset. In the illustratedexample DTH system100, for each asset theHE102 generates a code word packet (CWP) that includes, among other things, a time stamp, and then determines the codeword (CW) for the asset by computing a cryptographic hash of the contents of the CWP. The CWP is also broadcast to theIRDs106 via the satellite/relay104.IRDs106 authorized to view and/or playback the broadcast encrypted asset will be able to correctly determine the CW by computing a cryptographic hash of the contents the received CWP. If anIRD106 is not authorized, theIRD106 will not be able to determine the correct CW that enables decryption of the received broadcast encrypted asset. The CW may be changed periodically (e.g., every 30 seconds) by generating and broadcasting a new CWP. In an example, a new CWP is generated by updating the timestamp included in each CWP. Alternatively, a CWP could directly convey a CW either in encrypted or unencrypted form. Other examples of coordinated encryption and decryption abound, including for example, public/private key encryption and decryption.
In the illustrated example paycontent delivery system100, programs/information from themedia source103 may also be transmitted from theHE102 to theIRDs106 via a content delivery network (CDN)110. In the example ofFIG. 1, theCDN110 receives programs/information (e.g., an asset file containing a movie) from theHE102 and makes the programs/information available for download to theIRDs106 via a terrestrial communication link and/or network, such as, for example, an Internet connection and/or an Internet based network such as, for example, theInternet111.
While theInternet111 is a multipoint to multipoint communication network(s), persons of ordinary skill in the art will readily appreciate that point-to-point communications via any variety of point-to-point communication signals may be made via theInternet111. For instance, in the example system ofFIG. 1, anIRD106 downloads an asset file from theCDN110 using any variety of file transfer and/or file transfer protocol. Such file transfers and/or file transfer protocols are widely recognized as point-to-point communications, point-to-point communication signals and/or create point-to-point communication paths, even if transported via a multipoint to multipoint communication network such as theInternet111. It will be further recognized that theInternet111 may be used to implement any variety of broadcast system wherein a broadcast transmitter may transmit any variety of data and/or data packets to any number and/or variety of clients and/or receiver simultaneously. Moreover, theInternet111 may be used to simultaneously provide broadcast and point-to-point communications and/or point-to-point communication signals from any number of broadcast transmitters and/orCDNs110. Throughout the following discussions, downloading and/or transferring of asset files to anIRD106 from aCDN110 are assumed to be performed using point-to-point communications, point-to-point communication signals and/or point-to-point techniques. As discussed above, theInternet111 is only an example communications network and/or communication media by which such point-to-point communications may be made.
Theexample CDN110 ofFIG. 1 may be implemented using any of a variety of techniques and/or devices, for instance, a plurality of Linux based servers (e.g., content servers112) connected via wide bandwidth (i.e., high speed) fiber optic interconnections. Each of thecontent servers112 are connected to theInternet111 thereby making it possible for theIRDs106 to download information (e.g., a movie) from the Internet-basedcontent servers112. In the illustrated example ofFIG. 1, the Internet-basedcontent servers112 locally cache the information provided by theHE102, and anIRD106 requesting to download information from theCDN110 and/or theHE102 may be re-directed to a specific Internet-basedcontent server112 for processing and/or communication load balancing purposes. For example, an Internet uniform resource locator (URL) assigned to a movie may connect anIRD106 to particular Internet-basedcontent server112. If theparticular server112 currently has a high communication load, theserver112 may re-direct theIRD106 to another Internet-basedcontent server112 from which the movie should be downloaded. In the interest of clarity and ease of understanding, throughout this disclosure reference will be made to delivering, downloading, transferring and/or receiving information, video, data, etc. via theCDN110. However, persons of ordinary skill in the art will readily appreciate that information is actually delivered, downloaded, transferred and/or received via one of the Internet-basedcontent servers112 included in or associated with theCDN110.
In the example content delivery system100 (i.e., the example DTH system100), theCDN110 may be operated by an external vendor (i.e., theCDN110 need not be operated by the operator of the HE102). To download files from theCDN110, theIRDs106 implement, for instance, an Internet protocol (IP) stack with a defined application layer and possibly a download application provided by the CDN vendor. In the illustrated example, file transfers are implemented using standard Internet protocols (e.g., file transfer protocol (FTP), hypertext transfer protocol (HTTP), etc.). Each file received by anIRD106 is checked for completeness and integrity and, if a file is not intact, missing and/or damaged portion(s) of the file are delivered and/or downloaded again. Alternatively, the entire file is purged from theIRD106 and/or is delivered and/or downloaded again. As described below, downloads in the illustratedexample system100 may be interrupted (e.g., paused) and then resumed, at a later time, from the point where the interruption occurred. In fact, as described below in Section II and in connection withFIGS. 13-15, downloads via a first medium (e.g., satellite) may be interrupted and resumed using a second medium (e.g., Internet).
Security of assets available via theCDN110 may be established by the broadcast encryption applied to an asset before the asset is provided to theCDN110 and, thus, theCDN110 is not necessarily required to apply encryption and/or encoding to an asset. For example, theHE102 may provide to theCDN110 the CWP(s) for each broadcast encrypted asset provided to theCDN110. TheCDN110 then downloads the CWP(s) for the asset to anIRD106 such that, if theIRD106 is authorized to view and/or playback the asset, theIRD106 may correctly determine the CW(s) used to broadcast encrypt the asset. In this way, the authorization to view assets downloaded via theCDN110 is performed in substantially the same fashion as that performed for live and non-live assets broadcast via the satellite/relay104. If the security of an asset at theCDN110 is known by theCDN110 and/or theHE102 to be compromised, theHE102 and/or theCDN110 make the compromised version of the file unavailable (e.g., by purging the file at the CDN110) for download byother IRDs106 until the compromised asset is replaced by theHE102.
In another example, theCDN110 first verifies that anIRD106 is authorized to download a file before theCDN110 allows theIRD106 to download the file (i.e., theCDN110 implements a conditional access scheme). Authorization verification may be performed using any of a variety of techniques. Example authorization methods are discussed below in Section III-VI and in connection withFIGS. 16-26C. In a preferred embodiment, all authorizedIRDs106 utilize a shared secret or password that allows access to theCDN110. In particular, theCDN110 can utilize the shared secret or password to verify that anIRD106 is authorized to download assets by, for example, comparing the value of or a value representing the shared secret sent by theIRD106 to theCDN110 with the current shared secret or password. If the two match, then theIRD106 is authorized to download the asset. The shared secret or password is neither asset norIRD106 specific and is, thus, preferably updated and/or changed frequently (e.g., every minute) and broadcast via the satellite/relay104 to all authorizedIRDs106. Further, a security function (e.g., a cryptographic hash) could be applied to all or a portion of an asset's URL based on the changing shared secret or password. Preferably, to enhance security, an asset's scrambled URL is at least partially not human readable.
As discussed below in Section VI and in connection with FIGS.24A-B,25 and26A-C, theCDN110 may, of course, alternatively or additionally, apply encryption to an asset. For example, an asset may be additionally encrypted (i.e., super-encrypted) by theCDN110 such that only one of theIRDs106 is able to decrypt the asset. Further, the additionally applied encryption may implement the additional copy protection encryption that may have been applied by anIRD106 prior to storage of an asset within theIRD106.
Furthermore, theCDN110 may determine an IRD's106 general geographic location based on, for example, an IP address thereby allowing downloads to be restricted to certain geographic areas (e.g., only domestically, only North America, etc.). Additionally or alternatively, the location of anIRD106 relative to theCDN110 may be determined by measuring the round trip travel time of a ping transmitted to theIRD106. TheCDN110 may also limit the number of downloads by anyIRD106 to, for example, a maximum number of downloads per month, and may provide regular reports on download activity to theHE102.
To facilitate backchannel communications between theIRDs106 and theHE102, theIRDs106 may be communicatively coupled (e.g., via an Ethernet circuit or modem) to theHE102 via, for example, a terrestrial communication link, such as a telephone line or, preferably, theInternet111. Such communication could also be carried out via any variety of wireless and/or cellular return path from theIRD106 to theHE102 such as, for example a satellite return path via the satellite/relay104, a cellular communication network, etc. In general, backchannel communications and/or information sent from theHE102 to anIRD106 may be secured using any of a variety of techniques such as, for example, encryption. As discussed in more detail below in Sections III-VI and in connection withFIGS. 16-26C, backchannel communications may be used to conditionally authorize anIRD106 to receive, decode and/or playback content (e.g., video data) and for communicating with websites (e.g.,websites265 ofFIGS. 1 and 2) to obtain information therefrom.
Example devices114 coupled to theIRD106 include a personal computer (PC), a portable media player, a media extender, a game playing system, a media client, etc. As illustrated inFIG. 1, thedevices114 may connect directly to anIRD106 via any parallel or serial communication system, such as, for example, universal serial bus (USB) connectivity, Institute of Electrical and Electronics Engineers (IEEE)1394 (a.k.a., Firewire), or via ahome network116. To support import and/or export of secure program material betweendevices114 that support any variety of Digital Rights Management (DRM) system and anIRD106, the example HE102 of the illustrated example ofFIG. 1 is communicatively coupled to aDRM license server118. An example DRM system is implemented in accordance with the Microsoft® Windows Media®—DRM specification. Methods and apparatus for secure program transfer between anIRD106 and the devices114 (including DRM) are discussed in more detail below in Sections VIII and IX and in connection withFIGS. 27-34.
Theexample DTH system100 ofFIG. 1 may include a plurality of satellite/relays104 to provide wide terrestrial coverage, to provide additional channels and/or to provide additional bandwidth per channel. For example, each satellite/relay104 may include 16 transponders to receive program material and/or other control data from theHE102 and to rebroadcast the program material and/or other control data theIRDs106. However, using data compression and multiplexing techniques, multiple satellites/relays104 working together can receive and rebroadcast hundreds of audio and/or video channels.
In addition to the delivery of live content (e.g., a TV program) and/or information, the example HE102 ofFIG. 1 is capable of delivering, among other things, a file via theuplink antenna107, which broadcasts the information via the satellite/relay104 to theIRDs106. The file may contain any of a variety of media content types, for instance, audio or video program data (e.g., a movie, a previously recorded TV show, a music video, etc.), control data (e.g., software updates), data service information or web pages, software applications, or program guide information. In theexample system100 the delivery of a file generally includes: (a) binding network addresses to hardware locations, (b) announcing the file and (c) delivering the file. The binding of network addresses to hardware locations allows for files to be sent and received via ubiquitous network addresses, for example, an IP address and IP port number. Announcing the delivery of the file, allows theIRDs106 to rendezvous with a file broadcast via the satellite/relay104 at a pre-determined time at the network address to download the file. In particular, announcements describe, in advance, when and how individual files will be delivered. They contain sufficient information about these files to allow theIRDs106 to determine whether or not to download one or more of the files. To download a file, anIRD106 joins an IP multicast group at an IP address and pre-determined time specified in an announcement. TheIRD106 re-assembles the data file from the data transmitted to the IP multicast group as received via the receive (i.e., downlink)antenna108.
As illustrated inFIG. 1, the example paycontent delivery system100 has two primary data and/or information delivery mechanisms: (a) wireless via the satellite/relay104 and (b) via the CDN110 (e.g., Internet-based delivery). Content delivery may be implemented using a wireless broadband connection (e.g., Institute of Electrical and Electronics Engineers (IEEE) 802.16 (a.k.a. WiMAX), 802.11b, 802.11g, etc.), a broadband wired connection (e.g., Asymmetric Digital Subscriber Line (ADSL), cable modems, etc.) or, albeit at potentially a slower speed, using a modem connected to a conventional public switched telephone network (PSTN).
In the illustrated example ofFIG. 1, wireless delivery via the satellite/relay104 may simultaneously include both files (e.g., movies, pre-recorded TV shows, software updates, asset files, etc.) and/or live content, data, programs and/or information. Wireless delivery via the satellite/relay104 offers the opportunity to deliver, for example, a number of titles (e.g., movies, pre-recorded TV shows, etc.) to virtually any number of customers with a single broadcast. However, because of the limited channel capacity of the satellite/relay104, the number of titles (i.e., assets) that can be provided during a particular time period is restricted.
In contrast, Internet-based delivery via theCDN110 can support a large number of titles, each of which may have a narrower target audience. Further, Internet-based delivery is point-to-point (e.g., from an Internet-basedcontent server112 to an IRD106) thereby allowing each user of anIRD106 to individually select titles. In the illustrated example of FIG.1, allocation of a title to satellite and/or Internet-based delivery depends upon a target audience size and may be adjusted over time. For instance, a title having high demand (i.e., large initial audience) may initially be broadcast via the satellite/relay104, then, over time, the title may be made available for download via theCDN110 when the size of the target audience or the demand for the title is smaller. As discussed below in Section II and in connection withFIGS. 12-15, a title may simultaneously be broadcast via the satellite/relay104 and be made available for download from theCDN110 via theInternet111.
In theexample DTH system100, each asset (e.g., program, title, TV program, etc.) is pre-packetized and, optionally, pre-encrypted and then stored as a data file (i.e., an asset file). Subsequently, the asset file may be broadcast via the satellite/relay104 and/or sent to theCDN110 for download via the CDN110 (i.e., Internet-based delivery). In particular, if the data file is broadcast via the satellite/relay104, the data file forms at least one payload of a resultant satellite signal. Likewise, if the data file is available for download via theCDN110, the data file forms at least one payload of a resultant Internet signal.
It will be readily apparent to persons of ordinary skill in the art that even though the least one payload of a resultant signal includes the data file regardless of broadcast technique (e.g., satellite or Internet), how the file is physically transmitted may differ. In particular, transmission of data via a transmission medium (e.g., satellite, Internet, etc.) comprises operations that are: (a) transmission medium independent and b) transmission medium dependent. For example, transmission protocols (e.g., transmission control protocol (TCP)/IP, user datagram protocol (UDP), encapsulation, etc.) and/or modulation techniques (e.g., quadrature amplitude modulation (QAM), forward error correction (FEC) employed, etc.) used to transmit a file via Internet signals (e.g., over the Internet111) may differ from those used via satellite (e.g., the satellite/relay104). In other words, transmission protocols and/or modulation techniques are specific to physical communication paths, that is, they are dependent upon the physical media and/or transmission medium used to communicate the data. However, the content (e.g., a file representing a title) transported by any given transmission protocol and/or modulation is agnostic of the transmission protocol and/or modulation, that is, the content is transmission medium independent.
In the illustrated example ofFIG. 1, the same pre-packetized and, optionally, pre-encrypted, content data file that is broadcast via satellite may be available for download via Internet, and how the asset is stored, decoded and/or played back by theIRD106 is independent of whether the program was received by theIRD106 via satellite or Internet. Further, because the example HE102 ofFIG. 1 broadcasts a live program and a non-live program (e.g., a movie) by applying the same encoding, packetization, encryption, etc., how a program (live or non-live) is stored, decoded and/or played back by theIRD106 is also independent of whether the program is live or not. Thus, anIRD106 may handle the processing of content, programs and/or titles independent of the source(s) and/or type(s) of the content, programs and/or titles. In particular, example delivery configurations and signal processing for the example content delivery system ofFIG. 1 are discussed in detail below in connection withFIG. 12.
As described below in conjunction withFIGS. 4, 5 and6, theIRD106 may be one of any variety of devices, for example, a set-top box, a home media server, a home media center (HMC), a personal computer (PC) having a receiver card installed therein, etc. A display device (e.g., thedisplay420 ofFIG. 4), such as, for example, a television set or a computer monitor, is coupled to theIRD106 for displaying and/or playback of received programming. Additionally, anIRD106 may include a recorder (e.g., therecorder415 ofFIG. 4) and/or any variety of circuits, modules and/or devices collectively implementing recorder functionality used to record content received by theIRD106. Therecorder415 may be, for example, a device capable of recording information on, for instance, analog media such as videotape or computer readable digital media such as a hard disk drive (HDD) (e.g.,HDD425 ofFIGS. 4-6), a digital versatile disc (DVD), a compact disc (CD) and/or any other suitable media. Further, anIRD106 may connect to theInternet111 via any of a variety of technologies, for instance, a voice-band and/or integrated services digital network (ISDN) modem connected to a conventional PSTN, a wireless broadband connection (e.g., IEEE 802.11b, 802.11g, etc.), a broadband wired connection (e.g., ADSL, cable modems, etc.), a wired Ethernet connection (e.g., local area network (LAN), wide area network (WAN), etc.), a leased transmission facility (e.g., adigital signal level 1 circuit (a.k.a. a DS1), a fractional-DS1, etc.), etc.
FIG. 2 illustrates an example manner of implementing theHE102 ofFIG. 1. The example HE102 ofFIG. 2 includes abroadcast system205, amedia handler206 and a plurality of media sources that provide content, data and/or information (e.g.,program sources208, acontrol data source210, adata service source212, and one or more program guide data sources214). As illustrated inFIG. 2, thedata sources210,212 and/or214 may be implemented partially or wholly by theHE102 depending upon an implementation of theHE102. Theexample broadcast system205 and theuplink antenna107 form a satellite broadcast transmitter. Anexample media handler206 is discussed in more detail below in connection withFIG. 3. In one example, information (e.g., files, bitstreams, etc.) from one or more of the sources208-214 is passed by themedia handler206 to anencoder230. In the illustrated example ofFIG. 2, theencoder230 encodes the data according to the CableLabs® Video-on-Demand (VoD) encoding specification MD-SP-VOD-CEP-I01-040107 (i.e., performs asset encoding). The encoded data is then packetized into a stream of data packets by apacketizer235 that also attaches a header to each data packet to facilitate identification of the contents of the data packet such as, for example, a sequence number that identifies each data packet's location within the stream of data packets (i.e., a bitstream). The header also includes a program identifier (PID) (e.g., a service channel identifier (SCID)) that identifies the program to which the data packet belongs.
The stream of data packets (i.e., a bitstream) is then broadcast encrypted by anencrypter240 using, for example, the well-known Advanced Encryption Standard (AES) or the well-known Data Encryption Standard (DES). In an example, only the payload portion of the data packets are encrypted thereby allowing anIRD106 to filter, route and/or sort received broadcast encrypted data packets without having to first decrypt the encrypted data packets. To facilitate broadcast of the encrypted bitstream, the encrypted bitstream passes from theencrypter240 to a multiplexer andmodulator245 that, using any of a variety of techniques, multiplexes any number of encrypted bitstreams together and then modulates a carrier wave with the multiplexed encrypted bitstreams. The modulated carrier wave is then passed to any variety of uplink frequency converter and radio frequency (RF)amplifier250, which, using any of a variety of techniques, converts the modulated carrier wave to a frequency band suitable for reception by the satellite/relay104 and applies appropriate RF amplification. The up-converted and amplified signal is then routed from theuplink frequency converter250 to the uplink (i.e., transmit)antenna107 where it is transmitted towards the satellite/relay104.
While aparticular broadcast system205 is illustrated inFIG. 2, persons of ordinary skill in the art will readily appreciated that broadcast systems may be implemented using any of a variety of other and/or additional devices, components, circuits, modules, etc. Further, the devices, components, circuits, modules, elements, etc. illustrated inFIG. 2 may be combined, re-arranged, eliminated and/or implemented in any of a variety of ways. For example, multiplexing of the packetized data may be performed prior to encryption of the data packets by theexample encrypter240. In such an example configuration, theencrypter240 is configurable to selectively encrypt data packets based upon which data packet stream (e.g., media source) they are associated with.
As discussed above, content, data and/or information provided by the sources208-214 may be live, real time and/or non-real time. For example, afirst program source208 may provide a live TV program while asecond program source208 provides a previously recorded title (e.g., a movie, a music video, etc.). In the illustrated example ofFIG. 2, if a movie provided by thesecond program source208 is pre-encoded, pre-packetized and pre-encrypted, the movie may be provided by themedia handler206 directly to the example multiplexer/modulator245. In particular, theexample broadcast system205 ofFIG. 2 may be implemented and/or operated to broadcast both live and/or real time data and/or information and non-real time data and/or information. In the illustrated example ofFIG. 2, the operation and/or implementation of the multiplexer/modulator245 and the uplink frequency converter/RF amplifier250 are agnostic to whether the broadcast represents real time or non-real time data and/or information. Further, the format and/or structure of the payload of the signal being broadcast toward the satellite/relay104 by thebroadcast system205 and the transmit (i.e., uplink)antenna107 and the received by theIRD106 does not depend on whether the data and/or information is real time or non-real time. Moreover, an output of, for example, theexample packetizer235 and/or theexample encrypter240 ofFIG. 2 may be captured and/or recorded by themedia handler206 to, for example, an asset file. Like other asset files created by themedia handler206, theexample media handler206 may provide such asset files to theCDN110 for transfer to anIRD106 via theInternet111 and/or broadcast the asset file via the satellite/relay104. In this way, thebroadcast system205 may implement functionality similar and/or identical to the example video transport processing system (VTPS)320 discussed below in connection withFIG. 3.
As discussed above in connection withFIG. 1, the example HE102 may provide programs (e.g., movies, pre-recorded TV shows, etc.) to theCDN110 for delivery to anRD106. In particular, theexample media handler206 ofFIG. 2 may provide a pre-encoded, pre-packetized and, optionally, pre-encrypted bitstream to theCDN110. Further, in the illustrated example HE102 ofFIG. 2 and/or, more generally, theexample DTH system100 ofFIG. 1, how a title is pre-encoded, pre-packetized and, optionally, pre-encrypted does not depend upon whether the title will be broadcast via a satellite/relay104 or made available for download via theCDN110.
The program sources208 receive video and audio programming from a number of sources, including satellites, terrestrial fiber optics, cable, or tape. The video and audio programming may include, but is not limited to, television programming, movies, sporting events, news, music or any other desirable content. The program sources208 may provide the video and audio programming in the form of, for example, a bitstream or a file.
The control data source210 passes control data to themedia handler206 such as, for example, data representative of a list of SCIDs to be used during the encoding process, or any other suitable information.
Thedata service source212 receives data service information and web pages made up of data files, text files, graphics, audio, video, software, etc. Such information may be provided via anetwork260. In practice, thenetwork260 may be theInternet111, a local area network (LAN), a wide area network (WAN) or a PSTN. The information received from various sources is compiled by thedata service source212 and provided to themedia handler206. For example, thedata service source212 may request and receive information from one ormore websites265. The information from thewebsites265 may be related to the program information provided to themedia handler206 by theprogram sources208, thereby providing additional data related to programming content that may be displayed to a user at anIRD106.
The programguide data source214 provides information that theIRDs106 use to generate and display a program guide to a user, wherein the program guide may be a grid guide that informs the user of particular programs that are available on particular channels at particular times. The program guide also includes information that anIRD106 uses to assemble programming for display to a user. For example, if the user desires to watch a baseball game on his or herIRD106, the user will tune to a channel on which the game is offered. The program guide contains information required by anIRD106 to tune, demodulate, demultiplex, decrypt, depacketize and/or decode selected programs.
FIG. 3 illustrates another example manner of implementing theHE102 ofFIG. 1 and, in particular, an example manner of implementing themedia handler206 ofFIG. 2. While aparticular HE102 andmedia handler206 are illustrated inFIG. 3, persons of ordinary skill in the art will readily appreciated that head ends and/or media handlers may be implemented using any of a variety of other and/or additional devices, components, circuits, modules, etc. Further, the devices, components, circuits, modules, elements, etc. illustrated inFIG. 3 may be combined, re-arranged, eliminated and/or implemented in any of a variety of ways. The example HE102 ofFIG. 3 receives live or non-live video content (e.g., movies, TV shows, sporting events, etc.) from a plurality ofmedia sources305. Themedia sources305 may be, for example, any of the sources208-214 discussed above in connection withFIG. 2. Themedia sources305 deliver content to theHE102 via any of a variety of techniques, for example, satellite, tape, CD, DVD, file transfer, etc. For instance, amedia source305 first performs encoding and packaging of an asset and then transmits the packaged asset via satellite to theHE102. TheHE102 receives the packaged asset and checks to ensure the asset was delivered in its entirety without corruption. If the asset was not correctly received, theHE102 can request re-transmission. To store the received assets (packaged or not), theexample media handler206 ofFIG. 3 includes amedia library310. As illustrated inFIG. 3, live assets (e.g., a live TV program) can be routed directly from amedia source305 to thebroadcast system205 for broadcast via the satellite/relay104 to theIRDs106. Live assets may, alternatively or additionally, be recorded in amedia library310 and then converted to a pre-encoded, pre-packetized and, optionally, pre-encrypted distribution files as discussed below.
In the illustrated example HE102 ofFIG. 3 and the example paycontent delivery system100 ofFIG. 1, video content (i.e., video assets) are encoded and packaged according to the CableLabs specification for VoD content. To pre-encode and pre-package received video assets that are not received pre-encoded and pre-packaged according to the CableLabs specification for VoD content, theexample media handler206 ofFIG. 3 includes an encoder/converter312. The example encoder/converter312 ofFIG. 3 either pre-encodes an un-encoded received asset or converts/re-encodes an asset that is encoded based on another specification and/or standard. For example, an asset received via tape will require pre-encoding and pre-packaging. To store the properly pre-encoded and pre-packaged assets, the illustratedexample media handler206 includes astorage server314.
To pre-packetize the pre-encoded asset to one of any variety of formats suitable for distribution (e.g., an asset file) and, optionally, to pre-encrypt the asset file, theexample media handler206 ofFIG. 3 includes a content transport processing system such as, for example, for video content theVTPS320 comprising apacketizer322 and anencrypter324. Of course, other types of content transport processing systems may be included for other types of content data. Additionally or alternatively, a single content transport processing system capable to process multiple types of content data may be implemented. Among other things, theexample packetizer322 ofFIG. 3 pre-packetizes the pre-encoded asset. Theexample encrypter324 ofFIG. 3 pre-encrypts the pre-packetized stream according to, for example, either the AES or the DES standard. The codeword (CW) used to broadcast encrypt the pre-packetized asset is determined, as described above, by a conditional access system (CAS)350. In the illustrated example HE102 ofFIGS. 1 and 3, an asset file contains pre-encoded pre-packetized and, optionally, pre-encrypted video data. Additionally or alternatively, as discussed above in connection withFIG. 2, outputs of the broadcast system205 (e.g., an output of thepacketizer235 and/or the encrypter240) may be used to create pre-packetized and/or pre-encoded assets. For example, such outputs of thebroadcast system205 may be used to, for example, create asset files for live programs currently being broadcast by theHE102. That is, thebroadcast system205 may be used, in addition to broadcast live and non-live programs, to implement a VTPS, VTPS functionality and/or functionality similar to theVTPS320. Theexample media handler206 can handle asset files created by theVTPS320 identically to those created from outputs of thebroadcast system205. To store asset files, theexample media handler206 ofFIG. 3 includes a service management and authoring system (SMA)330.
It will be readily apparent to persons of ordinary skill in the art that content processing, that is, the processes of pre-encoding, pre-packetizing and, optionally, pre-encrypting assets to form asset files may be performed in non-real time. Preferably, content processing is implemented as an automated workflow controlled by a traffic and scheduling system (TSS)315. In particular, theTSS315 can schedule content processing for a plurality of received assets based upon a desired program lineup to be offered by theexample DTH system100 ofFIG. 1. For example, a live TV program for which a high demand for reruns might be expected could be assigned a high priority for content processing.
In the illustrated example ofFIG. 3, theSMA330 implements a store and forward system. That is theSMA330 stores all asset files (i.e., distribution files) until they are scheduled to be broadcast via satellite and/or scheduled to be transferred to theCDN110. In the example HE102 ofFIGS. 1-3, an asset is stored using the same distribution file format regardless of how the asset is to be delivered to theIRDs106. This enables the same assets to be forwarded to theIRDs106 via the satellite/relay104 or via theCDN110. To control theSMA330 and to store the distribution files, theexample SMA330 includes acontroller334 and arepository332, respectively. In the illustrated example ofFIG. 3, theSMA330 is controlled by a traffic schedule determined by theTSS315, that is, thecontroller334 operates responsive to commands received from theTSS315.
For satellite distribution, theSMA330, as instructed by theTSS315, sends an asset file to thebroadcast system205 at a scheduled broadcast time. As described above in connection withFIG. 2, thebroadcast system205 transmits the asset file via the transmit (i.e., uplink)antenna107 and the satellite/relay104. In particular, since the asset file is already pre-encoded, pre-packetized and, optionally, pre-encrypted, the asset file is only passed through the multiplexer/modulator245 and the uplink frequency converter/RF amplifier250 of theexample broadcast system205 ofFIG. 2. As also described above, live assets may be encoded, packetized and broadcast encrypted by thebroadcast system205 and will be multiplexed, modulated, up-converted and amplified using the same techniques as that applied to an asset file. In particular, a live program that is broadcast live via thebroadcast system205 results in a satellite signal that is substantially similar to a satellite signal resulting from broadcast of an asset file created from the live program.
In the illustrated example ofFIG. 3, video asset files are sent to thebroadcast system205 as a pre-encoded, pre-packetized and, optionally, pre-encrypted bitstream containing video as well as all audio and conditional access (CA) data in a single file. Video and audio are assigned default SCIDs/PIDs during content processing. Thebroadcast system205 may, thus, override the default SCID/PID assignments and may re-stamp SCID/PID data packet header entries with the correct values based on the particular satellite transponder allocated to the asset.
For Internet distribution, theSMA330, as instructed by theTSS315, sends an asset file to theCDN110 at a scheduled time via a dedicated private access line (e.g., a digital signal level 3 (DS-3) communication link, a optical carrier level 3 (OC-3) fiber optic link, etc.) or a secure virtual private network (VPN) link. In the illustrated examples ofFIGS. 1-3, theHE102 sends each asset file to theCDN110 once and all subsequent copying and distribution of the asset via theInternet111 is performed by theCDN110. Asset files received by theCDN110 are verified to ensure they are received in their entirety and with full integrity. The link between theHE102 and theCDN110 has a finite bandwidth and, thus, theTSS315 schedules delivery of assets to theCDN110 to ensure that assets are available via theCDN110 as advertised, for example, in program guide information.
To provide program guide information to theIRDs106, the example HE102 ofFIG. 3 includes the advanced program guide (APG)system335. TheAPG system335 creates and/or updates APG data that is broadcast to theIRDs106 via the broadcast system205 (i.e., via the satellite/relay104). Example APG data lists which assets are being broadcast by theHE102 and are, thus, available for recording by theIRDs106. For the listed assets, the APG data specifies a starting time, a duration, a network address, a satellite transponder identifier and a SCID/PID set. For assets available for download via theCDN110, the APG, additionally or alternatively, includes an Internet URL from which anIRD106 may download the asset.
To schedule content processing, APG data updates as well as content delivery via thebroadcast system205 and/or theCDN110, the example HE102 ofFIG. 3 includes theTSS315. For each asset the following dates (i.e., date and time) may be controlled and/or determined by the TSS315: (a) expected arrival date, (b) start of content processing, (c) end of content processing, (d) APG announcement date (i.e., from which date the asset will be visible to a customer in the APG), (e) broadcast date, (e) CDN publish date, (f) SMA purge date (i.e., date asset is removed from repository332), (g) end of availability of purchase, (h) end of viewing (i.e., date of purge from an IRD106), and (i)CDN110 purge date. TheTSS315 may control other dates as well.
In the example HE102 ofFIG. 3, each live asset is assigned to a broadcast operations control (BOC) channel by theTSS315 that denotes the physical location of a program (e.g., a satellite transponder). Likewise, delivery of asset files (i.e., distribution files) via the satellite/relay104 are also organized by BOC channel. In the illustrated examples ofFIGS. 1 and 3, the link between theHE102 and theCDN110 is broken up into sub-channels each of which is assigned a BOC channel number. By using BOC channels for both live and non-live assets (even those being broadcast via the CDN110), theTSS315 can schedule broadcast and/or delivery of all assets in the same fashion. In particular, the delivery of assets to theCDN110 is scheduled by theTSS315 like the broadcast of an asset via the satellite/relay104 (i.e., by selecting a BOC channel and time). If an example system includes more than oneCDN110, then theCDNs110 could be assigned distinct BOC channel numbers making the implementation of theTSS315 easily extendable.
To facilitate backchannel communications between theIRDs106 and theHE102, the illustrated example HE102 includes any of a variety ofbroadband interfaces340 that communicatively couples theHE102 to theIRDs106 via theInternet111. As described above, thebroadband interface340 using any of a variety of techniques may realize secure communications between theHE102 and theIRDs106. Alternatively, thebroadband interface340 provides any of a variety of modem interfaces to a PSTN. Thebroadband interface340 also facilitates interaction of theIRDs106 with aweb interface345 and/or the conditional access system (CAS)350. To allow users of theIRDs106 to subscribe to services, purchase titles, change preferences, etc., the example HE102 ofFIG. 3 includes theweb interface345. In the illustrated example, theweb interface345 using any of a variety of techniques presents one or more web based interfaces via theInternet111 and/or any variety of wireless link such as, for example, via the satellite/relay104 and receives user selections.
In theexample DTH system100 ofFIG. 1, users of theIRDs106 may be restricted from downloading assets from theCDN110 and/or from decoding or playing back assets received (either via the satellite/relay104 or the CDN110) and/or stored by an IRD106 (i.e., conditional access to content). To authorize anIRD106 for downloading, decoding and/or playback of an asset, the example HE102 ofFIG. 3 includes theCAS350. In an example, theCAS350 generates and broadcasts CWP(s) and determines the CW(s) used to broadcast encrypt each asset. In another example, theCAS350 receives an authorization request from anIRD106 via theInternet111 and thebroadband interface340, and provides an authorization response to theIRD106 via thebroadcast system205 and the satellite/relay104. Example interactions between theHE102, theCAS350, theIRDs106 and theCDN110 and/or methods to conditionally authorize downloading, decoding and/or playback of assets are discussed in more detail in Sections II-VI and in connection withFIGS. 16-26C.
In the illustrated example ofFIG. 1, users of theIRDs106 are charged for subscription services and/or asset downloads (e.g., PPV TV) and, thus, the example HE102 ofFIG. 3 includes abilling system355 to track and/or bill subscribers for services provided by the example paycontent delivery system100. For example, thebilling system355 records that a user has been authorized to download a movie and once the movie has been successfully downloaded the user is billed for the movie. Alternatively, the user may not be billed unless the movie has been viewed.
FIG. 4 illustrates an example manner of implementing the receiveantenna108 and theIRD106 ofFIG. 1. In operation, the receive antenna108 (i.e., downlink antenna108) receives signals conveying a modulated multiplexed bitstream from the satellite/relay104. Within the receiveantenna108, the signals are coupled from a reflector and feed404 to a low-noise block (LNB)405, which amplifies and frequency downconverts the received signals. The LNB output is then provided to areceiver410, which receives, demodulates, de-packetizes, de-multiplexes, decrypts and decodes the received signal to provide audio and video signals to adisplay device420 and/or arecorder415. As illustrated inFIG. 4, therecorder415 may be implemented separately from and/or within theIRD106. Thereceiver410 is responsive to user inputs to, for example, tune to a particular program.
To store received and/or recorded programs and/or assets, theexample IRD106 ofFIG. 4 includes any of a variety of storage device425 (e.g., a HDD425). TheHDD425 is used to store the packetized assets and/or programs received via the satellite/relay104 and/or theCDN110. In particular, as discussed below in connection withFIG. 12, the packets stored on theHDD425 are the same encoded and, optionally, encrypted packets created by theHE102 and transmitted via the satellite/relay104 and/or made available for download via theCDN110. To communicate with any of a variety of clients, media players, etc., the illustratedexample IRD106 includes one or more digital interfaces430 (e.g., USB, serial port, Firewire, etc.). To communicatively couple theexample IRD106 to, for instance, theInternet111 and/or thehome network116, theexample IRD106 includes anetwork interface435 that implements, for example, an Ethernet interface.
FIG. 5 is an illustration of another example manner of implementing theIRD106 ofFIG. 1. In general, circuitry, modules and/or components inside theIRD106 receive the L-band RF signals received from the satellite/relay104 via the LNB405 (FIG. 4) and convert the signals back into an original digital bitstream. Decoding circuitry, modules and/or components receive the original bitstream and perform video/audio processing operations such as de-multiplexing and decompression (i.e., decoding). One or more processor(s), microprocessor(s) or central processing unit(s) (CPU)507 of acontroller module505 controls the overall operation of theexample IRD106, including the selection of parameters, the set-up and control of components, channel selection, and many other functions of theexample IRD106 ofFIG. 5.
Specifically, theexample IRD106 ofFIG. 5 includes thecontroller module505,front end modules510, atransport module520, adisplay module530, anaudio module535, and an audio/video (A/V)output module540, an interface (I/F)module550, afront panel module560, asplitter570,8VSB tuners575, apower supply590 and theHDD425. As further shown inFIG. 5, a 27 megahertz (MHz)clock signal generator580 is also provided. Theclock generator580 generates a clock signal that is coupled to various components of theIRD106 and may be frequency-calibrated by a signal received from thetransport module520.
The examplefront end modules510 ofFIG. 5 receive the L-band RF signals received from the satellite/relay104 via the LNB405 (FIG. 4) and converts the signals back into the original digital bitstream (i.e., stream of encoded and, optionally, encrypted data packets). Among other things, thefront end modules510 implement a tuner, a demodulator and an FEC decoder. Likewise, thesplitter570 of the illustrated example may be coupled to an antenna or a cable or terrestrial broadcast system such as, for example, an analog or digital cable television broadcast system (not shown) to receive information content. Signals from thesplitter570 are coupled to thetuners575 that implement an Advanced Television Systems Committee (ATSC)/National Television System Committee (NTSC) tuner, an NTSC decoder and a vestigial side band (VSB) demodulator to convert received information into a digital bitstream. Thefront end modules510, thesplitter570, and the8VSB tuners575 are controlled by thecontroller module505 and may be implemented using any of a variety of well known techniques, devices, circuits and/or components.
Thetransport module520 receives the transport stream of digitized data packets containing video, audio, data, scheduling information, data files, and other information. As described above, the data packets contain identifying headers. To route and/or connect data packets and/or bitstreams between various components and/or devices of thetransport module520, theexample transport module520 includes astream manager521. In one example, achannel de-multiplexer522, under control of thecontroller module505, filters out packets that are not currently of interest, and thestream manager521 routes the data packets of interest through aDES decryption circuit523. In theexample DTH system100 ofFIG. 1, access control is implemented by any of a variety of techniques. For example, access control may be achieved by broadcast encrypting an asset at theHE102 based on a CW determined and/or selected by the CAS350 (FIG. 3), and sending information (e.g., a CWP) containing a CW or containing information from which anIRD106 may determine the CW such that the asset may be correctly decrypted by theDES decryption circuit523. In the illustrated example ofFIG. 5, determination of a CW from a CWP is performed by a smart card (not shown) based upon, for example, functionality (e.g., a cryptographic hash function) implemented by the smart card (not shown) and/or security data stored in the smart card and accessed via asmart card reader562 associated with thefront panel module560. In the illustrated example ofFIG. 5, secure insertion of the CW from the smart card into the DES decryption circuitry is achieved by way of a security chip (SC)524 which receives an encrypted version of the CW from the smart card. Alternatively, data packets encrypted by theHE102 using AES encryption may be decrypted using anAES decryption circuit525.
To allow additional encryption to be applied to received broadcast encrypted data packets prior to storage on theHDD425, theexample IRD106 ofFIG. 5 includes anAES encryption circuit527 that optionally applies additional encryption to the received encrypted data packets. In general, the received encrypted data packets are the same encrypted packets created by theHE102 and transmitted via the satellite/relay104 and/or made available for download via theCDN110. To decode additionally encrypted data stored on theHDD425, the illustrated example includes a secondAES decryption circuit528. Alternatively, theAES decryption circuit525 could be multiplexed to perform the decrypting operations implemented by thedecrypters525 and528. An example encryption configuration is discussed below in connection withFIG. 6. The use of additional decryption for use in the reception of additionally encrypted assets from aCDN110 are discussed in Section VI and in connection with FIGS.24A-B,25 and26A-C. Additionally, as discussed in Sections VII and VIII and in connection withFIGS. 27-34, the additional encryption and/or decryption may also be used to implement secure delivery of assets between theIRD106 andclients114 and/ormedia players114 communicatively coupled to theexample IRD106.
The authorized and decrypted data of interest, which now consists of, for example, encoded audio/video data, are, for example, forwarded to decoder dynamic random access memory (DRAM) for buffering (not shown). Thedisplay module530 and/or theaudio module535, using any of a variety of techniques and/or methods, decode the received encoded audio/video data, as needed. For example, avideo decoder532 reads the encoded video data, parses it, obtains quantized frequency domain coefficients, and then performs an inverse quantization, an inverse discrete cosine transform (DCT) and motion compensation. At this point, an image is reconstructed in the spatial domain and stored in a frame buffer (not shown). At a later time, the image is read out of the frame buffer and passed to anencoder534. Alternatively or additionally, thedisplay module530 may generate graphics that allow, for example, an electronic program guide to be displayed. Thevideo encoder534 may convert the digital video signals to, for example, an analog signal according to the NTSC standard or to another desired output protocol (e.g., a protocol defined by the ATSC), thereby allowing video to be received by the display device420 (FIG. 4) via the A/V output module540. Alternatively, received data may be used by thecontroller module505 to, for instance, configure the receiver (e.g., software downloads and/or updates), present program guide information, etc.
To communicatively couple theexample IRD106 to aHE102 and/or aCDN110, the illustratedexample interface module550 includes anetwork interface435 and/or aconventional modem551. In the example ofFIG. 5, thenetwork interface435 implements an Ethernet interface and couples theexample IRD106 to aHE102 and aCDN110 via the Internet111 (FIG. 1) and optionally to onemore clients114 and/ormedia players114 via ahome network116. For example, thenetwork interface435 may be connected to a router (not shown) that provides connectivity between theIRD106 anddevices114 connected to thehome network116 and provides a bridge to a broadband modem (e.g., an ADSL modem) (not shown) that connects theIRD106 to theInternet111. TheIRD106 may, additionally or alternatively, be connected toclients114 and/ormedia players114 via a USB interface552, aserial port interface553, a Firewire interface (not shown), etc. that also may be implemented by theinterface module550.
To receive inputs and provide outputs, the illustratedexample IRD106 includes thefront panel module560 that provides an interface between thecontroller module505 and a plurality of input and/or output devices (e.g.,devices562,564,566 and568). To read and/or write data to any of a variety of smart cards, theexample IRD106 includes thesmart card reader562. To receive user inputs and/or selections from a remote control, theIRD106 includes an infrared (IR)receiver564. In addition, support for a RF remote control, e.g. that uses UHF frequencies instead of IR frequencies, may be offered through a RF receiver module (not shown). A user may also provide inputs and/or control theexample IRD106 via one or more buttons (e.g., power on/off, play, etc.)566 physically located on theIRD106. To provide user prompts, status, date, time, etc. information to a user, the illustrated example includes any of a variety ofdisplay devices568, for example, a liquid crystal display (LCD).
Thecontroller module505 may be implemented using any of a variety of techniques, devices, components and/or circuits. Anexample controller module505 includes one of any variety of microprocessors, processors, controllers,CPUs507, an electronically erasable programmable read only memory (EEPROM)508 andflash memory509 to store, for example, machine readable instructions that may be executed by theCPU507, a static random access memory (SRAM)506 to store data and/or variables used and/or accessed by theCPU507, or other memory.
Reception of content (i.e., assets) by downloading them from aCDN110 may be performed by theexample IRD106 ofFIG. 5 using any of a variety of techniques. For example, reception and/or recording of an asset may be performed via an IP socket. In particular, based on information from APG data (e.g., an Internet URL), a connection to theCDN110 is established over which a stream of IP packets may be received. The stream of packets is processed by an IP stack executing, for example, on theCPU507 and/or thenetwork interface435 and then passed onto thetransport module520. Thetransport module520 processes the data in a substantially similar manner as data received from thefront end modules510 are processed.
Assets and/or programs received via the satellite/relay104 include a program clock reference (PCR) that may be used by thetransport module520, thedisplay module530 and/or theaudio module535 during playback of the received assets and/or programs. Assets and/or programs received from aCDN110 do not include a PCR and, thus, theIRD106 assumes the PCR is running exactly at 27 MHz and therefore runs itsinternal clock580 at its default frequency. Like assets and/or programs received via the satellite/relay104, for assets received via theCDN110, thedisplay module530 and/or theaudio module535 use presentation time stamps (PTS) to maintain appropriate frame rates and to established audio and video synchronization. In particular, theIRD106 uses the first PTS encountered to set the phase of theclock580.
FIG. 6 is a detailed illustration of athird example IRD106 having a personal computer (PC) based architecture, it being understood that theexample IRD106 ofFIG. 6 could be used in theexample DTH system100 ofFIG. 1. As shown, theexample IRD106 ofFIG. 6, which receives an input from theLNB405, includes any variety of satellite receiver card(s)602, any variety of audio/video card(s)604 and any variety of network card(s)606, each of which may be coupled to amotherboard608. The video/audio decoder card620 could, of course, be integrated with thesatellite receiver card602 and thenetwork card606 may be integrated into themotherboard608. TheIRD106 also includes any variety of smart card reader(s)562 and any variety of HDD(s)425 that may be coupled to themotherboard608 or integrated with thecards602,604 and/or606.
In one example, thesatellite receiver card602 includes afront end module510 and atransport module520. The implementation and/or interconnection of these devices are substantially the same as shown and described in conjunction withFIG. 5 and, thus, in the interest of brevity will not be repeated here. The interested reader is referred to the discussion above in connection withFIG. 5.
The audio/video decoder card604 includes an audio/video decoder630, an optional NTSC and/orATSC output driver632 and a video graphics adapter (VGA)output driver634. As described below in detail, thesatellite receiver card602 can receive and the audio/video card604 can decode the signal received from theLNB405.
In operation, an incoming signal from theLNB405 is received by thesatellite receiver card602 and passed through a series of initial processing operations including thefront end module510 and thetransport module520. Although the functional circuits within thetransport module520 are not illustrated, they may, for example, be identical to those described above in connection withFIG. 5. For example, thetransport module520 receives the transport stream or bitstream of digitized data packets containing video, audio, scheduling information, and other data. The digital packet information contains identifying headers as part of its overhead data. Under control of a main processor/controller (typically located on the motherboard608), thetransport module520 filters out received data packets that are not currently of interest. Received data packets that are of interest are routed through decryption within thetransport module510. Received data packets may also be additionally encrypted and stored, for example, by themotherboard608 on theHDD425.
Thetransport module510 passes the data to the audio/video decoder630 of the video/audio decoder card604. The authorized data of interest are stored in system RAM (not shown) for buffering, and the video/audio decoder630 retrieves the data from RAM as needed. For video data, the audio/video decoder630 reads in the encoded video data from its RAM, and, using any of a variety of techniques and/or methods, decodes the encoded video data and stores the resulting video data in a frame buffer in the video decoder's RAM. At a later time, the image may be read out of the frame buffer and passed through the display circuitry to theVGA output driver634 and optionally, to the NTSC and/orATSC output driver632, the output of which may be coupled to thedisplay device420. The display circuitry may also generate graphics and text for a graphical user interface (GUI), such as an electronic program guide, to be displayed.
Although not shown, any one or more of the cards602-608 may include one or more processors to execute machine readable instructions that may be used to implement the example methods, processes, apparatus, and/or systems described herein. Also, the allocation of memory and control functions may be arbitrarily divided between the cards602-608 of theexample IRD106 ofFIG. 6. Thus, a substantial amount, or possibly all, of the control and memory functions for operation of the disclosed system may be integrated within a single card, or alternatively, may be incorporated within thePC motherboard608.
Although theexample IRDs106 illustrated inFIGS. 4, 5 and6 are shown as having a plurality of components, circuits and/or devices that are interconnected or communicatively coupled with other components, circuits and/or devices, such interconnections are illustrated by way of example and should not be construed as limiting the manner in which they can be interconnected to implement the example methods, apparatus, and/or systems described herein. On the contrary, the components, circuits and/or devices described above in connection with the illustrated examples ofFIGS. 4-6 may be interconnected in any other suitable manner to implement the example methods, apparatus, and/or systems.
In the illustratedexample DTH system100, theHDD425 of theexample IRDs106 ofFIGS. 4-6 is partitioned into at least two partitions. A first network partition is used to store content (e.g., assets) “pushed” by theHE102 to theIRDs106 via the satellite/relay104. Such pushed content is received and stored by theIRDs106 without being selected and/or requested by a user of anIRD106. A second user partition is used to store content requested and/or selected by the user and be received via the satellite/relay104 and/or downloaded via aCDN110. A content request could be for a specific program or for a specific category of programs meeting any number of criteria, e.g. genre, actor name.
As discussed above, theexample IRDs106 ofFIGS. 4-6 are able to receive, decode and playback both live programs and non-live programs. Live programs received by anIRD106 may be recorded by theIRD106 to theHDD425 and/or may be directly decoded and played back to adisplay device420. In general, non-live programs are received and first stored in their entirety on theHDD425 before being subsequently decoded and/or played back. Alternatively, a non-live asset may be directly decoded and/or played back if it is received by theIRD106 at a rate exceeding the playback rate of the asset. As also discussed above, live and non-live programs may be recorded, stored, decoded, played back and/or otherwise manipulated identically by theIRDs106. In particular, all assets are stored on theHDD425 using a single file format.
In theexample IRDs106 ofFIGS. 4-5, reception and/or recording of live data will, in general, have a higher priority than the reception and/or recording of non-live data. For example, anIRD106 will be able to interrupt (e.g., pause) the download of an asset from a CDN110 to ensure that a live program is received, recorded and/or played back in its entirety and without interruption. Once the conflict is over, theIRD106 may resume downloading and/or reception of the non-live asset.
Since theexample IRDs106 ofFIGS. 4-6 include a connection to theInternet111, the example IRDs preferably use the Internet connection via thenetwork interface435 for back channel communications and/or callbacks to theHE102. Further, since Internet connections are typically higher speed and always on, the Internet connection may be more suitable for interactive applications, gaming, ratings measurement, etc.
Theexample IRDs106 illustrated inFIGS. 4-6 may be implemented in a same housing or in different housings. For example, anIRD106 may be implemented in a single housing as a set-top box (STB), a DVR, a HMC and/or a PC. Anotherexample IRD106 comprises a first housing that includes thefront end module510 and a PC (i.e., second housing) implementing the other portions of theexample IRD106. In this event, the content delivered from one housing to the other would be protected, e.g. using data encryption techniques.
FIG. 7 illustrates an example encryption configuration for theexample DTH system100 ofFIG. 1. At aHE102, video is broadcast encrypted by the encrypter324 (FIG. 3) or encrypter240 (FIG. 2) using, for example, a CW determined by theCAS350. Using any variety ofmultiplexer702, theHE102 may multiplex the multiplexed broadcast encrypted video with a CWP from which the CW may be determined. As discussed above, the multiplexed CWP and broadcast encrypted video may be sent via a satellite/relay104 to theIRD106 and/or made available for download by theIRD106 via aCDN110.
In the illustrated example ofFIG. 7, at theIRD106, the received broadcast encrypted video is additionally encrypted using theAES encrypter527. The additional encryption is performed using a copy protection codeword (CPCW) determined by thesecurity chip524 using, for example, unique information input to the security chip and secret information stored on the security chip. In the example ofFIG. 7, the CPCW is not known by theHE102 or anyother IRDs106. The additionally encrypted (i.e., super-encrypted) video is subsequently stored on theHDD425.
When the encrypted video stored on theHDD425 is to be played back, the encrypted video is first decrypted by the AES decrypter528 using the CPCW and then the resulting broadcast encrypted video is further decrypted using the CW by the DES decrypter523 or anAES decrypter525, depending upon the type of broadcast encryption performed by theencrypter324 or theencrypter240. Audio and data are handled in a similar manner. The decrypted data may be subsequently decoded and played back for viewing by a user of theIRD106 as described above in connection withFIG. 5.
FIGS. 8, 9 and10 illustrate flowcharts representative of example processes that may be carried out to implement the example HE102 ofFIGS. 1-3. The example processes ofFIGS. 8-10 and/or, more generally, the example HE102 may be executed by a processor, a controller and/or any other suitable processing device. For example, the example processes ofFIGS. 8-10 and/or, more generally, the example HE102 may be embodied in coded instructions stored on a tangible medium such as a flash memory, or RAM associated with a processor (e.g., theprocessor8010 shown in theexample processor platform8000 and discussed below in conjunction withFIG. 35). Alternatively, some or all of the example processes ofFIGS. 8-10 and/or, more generally, the example HE102 may be implemented using an application specific integrated circuit (ASIC), a programmable logic device (PLD), a field programmable logic device (FPLD), discrete logic, hardware, firmware, etc. Also, some or all of the example processes ofFIGS. 8-10 and/or, more generally, the example HE102 may be implemented manually or as combinations of any of the foregoing techniques, for example, a combination of firmware and/or software and hardware. Further, although the example processes ofFIGS. 8-10 are described with reference to the flowcharts ofFIGS. 8-10, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example HE102 may be employed. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined. Persons of ordinary skill in the art will appreciate that the example processes ofFIGS. 8-10 may be carried out sequentially and/or carried out in parallel by, for example, separate processing threads.
The example process ofFIG. 8 begins with theHE102 waiting for a new event such as, for example, a scheduled time for asset creation, a scheduled time to broadcast an asset, etc. (block802). If a new event time has not arrived, theHE102 continues waiting. If the scheduled time for a new event has arrived (block802) and if new event corresponds to the scheduled creation of an asset (block805), theTSS315 triggers the creation of an asset file (i.e., distribution file) by, for example, carrying out the example process described below in conjunction withFIG. 9 (block810). Once the asset file has been created (block810), control returns to block802 to await another event.
Returning to block805, if the scheduled time to create an asset has not arrived, theTSS315 determines if a scheduled time to broadcast an asset has arrived (block815). If a scheduled time to broadcast an asset has arrived (block815), theTSS315 determines if the asset is to be transmitted via the satellite/relay104 (block820). If the asset is to be transmitted via the satellite/relay102 (block820), theSMA330 configures thebroadcast system205 by, for example, carrying out the example process described below in conjunction withFIG. 10 (block825) and control proceeds to block830.
Atblock830, if the asset is to be transmitted to aCDN110, theSMA330 under the control of theTSS315 transmits the asset to theCDN110 using the assigned BOC channel of the link (block835). If the transfer is not successful (block840), theSMA330 re-transmits the asset to the CDN110 (block835). Once the asset has been successfully transmitted to the CDN110 (block840) and/or thebroadcast system205 has been configured (block825), control returns to block802 to await another new event. If the asset is not to be transmitted to a CDN110 (block830), control returns to block802 to await another new event.
The example process ofFIG. 9, generally carried out when a new video asset is received from a media source (e.g., block805 ofFIG. 8), is scheduled by theTSS315. If the video asset is not received already encoded (block905), the encoder/converter312 pre-encodes and packages the asset according to the CableLabs specification for VoD content (block910). If the asset is already encoded (block905), but is not encoded according to the house format (i.e., the CableLabs specification for VoD content) (block915), the encoder/converter312 converts/re-encodes the assets and packages the asset according to the CableLabs specification for VoD content (block920).
Once the video asset has been correctly pre-encoded and packaged according to the CableLabs specification for VoD content, thepacketizer322 pre-packetizes the pre-encoded asset (block925). If the pre-packetized pre-encoded asset is to be pre-encrypted (block930), theencrypter324 pre-encrypts the pre-packetized pre-encoded asset (block935). The broadcast encrypted or unencrypted asset is then stored, along with descriptive information (i.e., program name and/or other labels) in the repository322 (block940) and control returns to, for example, the example process ofFIG. 8.
The example process ofFIG. 10 is carried out when the scheduled time to broadcast content (i.e., an asset) via the satellite/relay104 arrives (e.g., block820 ofFIG. 8). Thebroadcast system205 is configured with the satellite transponder to be used to broadcast the asset (block1002). If the asset is live (block1005), thebroadcast system205 is configured to start encoding the asset (block1010) and to start encrypting the asset (block1015) and to start transmitting the live asset via the satellite/relay104 (block1020). Control then returns to, for example, the example process ofFIG. 8.
Returning to block1005, if the asset is not live, theSMA330 sends the asset file of the asset to the multiplexer/modulator245 of theexample broadcast system205 ofFIG. 2, thebroadcast system205 starts transmitting the non-live asset via the satellite/relay104 (block1025) and control returns to, for example, the example process ofFIG. 8.
FIG. 1 illustrates an example manner of implementing the Internet-basedcontent server112 ofFIG. 1. To connect the example Internet-basedcontent server112 with other Internet-basedcontent servers112, the example Internet-basedcontent server112 includes one of any variety ofoptical interface1105. To connect the Internet-basedcontent server112 with theInternet111, the example Internet-basedcontent server112 includes anetwork interface1110. Alternatively, the example Internet-basedcontent server112 may be connected to theInternet111 via theoptical interface1105.
To control, manage and/or configure the example Internet-basedcontent server112 ofFIG. 1, the illustrated example includes aprocessor1115. Theprocessor1115 executes coded instructions present in main memory of theprocessor1115. Theprocessor1115 may be any type of processing unit, such as a microprocessor from the Intel®, AMD®, IBM®, or SUN® families of microprocessors.
To store one or more pre-encoded, pre-packetized and, optionally, pre-encrypted asset files, the example Internet-basedcontent server112 ofFIG. 11 includes adatabase1120. Thedatabase1120 may also be used to store encryption keys, identifiers for theIRDs106 and/or authorization results.
To process content delivery requests received from theIRDs106, the illustrated example Internet-basedcontent server112 includes arequest processor1125. Therequest processor1125 uses, for example,IRD106 identifiers and/or authorization results stored in thedatabase1120 to determine is anIRD106 is allowed to download an asset file.
To encrypt or additionally encrypt an asset file prior to download to anIRD106, the example Internet-basedcontent server112 ofFIG. 11 includes anencrypter1130. Theencrypter1130 implements, for example, either the AES or the DES encryption standards.
Example usage of the Internet-basedcontent server112 ofFIG. 11 to authorize and/or securely delivery asset files to theIRDs106 are discussed below in Sections III-VI and in connection withFIGS. 16-26C.
FIG. 12 illustrates example signal processing, content delivery paths and content delivery configurations for the example content delivery system ofFIG. 1. In the illustrated example ofFIG. 12,video data1202 is encoded by, for instance, the encoder/converter312 (FIG. 3) thereby creating a block of encodeddata1205 consisting of, for example, a plurality of bytes. The encodeddata1205 is then packetized by, for instance the packetizer322 (FIG. 3) creating a plurality (i.e., stream) ofdata packets1215A,1215B and1215C each having a header H and a payload P. In the example ofFIG. 12, the plurality ofdata packets1215A-C are then broadcast encrypted by the encrypter324 (FIG. 3) creating a plurality (i.e., stream) ofencrypted data packets1218A,1218B and1218C each having the header H and an encrypted payload EP. In particular, the payload P of each of the plurality ofdata packets1215A-C are broadcast encrypted and the data packet headers H are left unencrypted. Taken together, the stream of broadcastencrypted data packets1218A,1218B and1218C constitute adata stream1219 that may be stored in an asset file in the repository332 (FIG. 3) and/or immediately transmitted via the satellite/relay104. Alternatively, encryption of thedata packets1215A-C may be skipped and, thus, thedata packets1218A-C would be substantially identical todata packets1215A-C. For simplicity the follow discussion refers to theencrypted data packets1218A-C, persons of ordinary skill in the art will readily appreciate that the signal processing and content delivery paths described below could also be used to deliver theunencrypted data packets1215A-C.
The contents of the example asset file may subsequently be made available for download via theCDN110 and, in particular, an Internet-basedcontent server112. The Internet-basedcontent server112, using any of a variety of techniques, receives and stores the example asset file. In particular, a data structure used by the Internet-basedcontent server112 to store the asset file maintains, intact, the plurality ofencrypted data packets1218A-C created and provided by theHE102. When anIRD106 downloads the example asset file, the Internet-basedcontent server112 encapsulates the plurality ofencrypted data packets1218A-C, via, for instance, anIP stack1220 into one or more IP packets that are sent to theIRD106 via the Internet111 (i.e., an Internet signal). An example IP packet1225 (i.e., Internet signal1225) includes anIP header1227 and a payload carrying one or more of the plurality ofencrypted data packets1218A-C. At anIRD106, the network interface435 (FIG. 5) receives theInternet signal1225 transmitted by theCDN110 and using, for example an IP stack and/or download application, removes theIP header1227 and passes the payload of the IP packet1225 (i.e., a data stream1230) to thetransport module520. In particular, thedata stream1230 includes a plurality of data packets1232A-C and, in the example ofFIG. 12, the received broadcast encrypted data packets1232A-C are identical, excluding, for example, transmission errors, the broadcastencrypted data packets1218A-C created by theHE102.
Additionally or alternatively, the broadcastencrypted data packets1218A-C may be immediately broadcast via the satellite/relay104 and/or the contents of the example asset file may be broadcast via the satellite/relay104 at a later time. In either case, the stream of broadcastencrypted data packets1218A-C are multiplexed and modulated by the multiplexer/modulator245 (FIG. 2) and then processed by the uplink frequency converter/RF amplifier250 (not shown) and broadcast via the transmit (i.e., uplink) antenna107 (not shown) to the satellite/relay104. In the example ofFIG. 12, theIRD106 receives asatellite signal1235 including the up-converted, modulated and multiplexed version of the stream ofencrypted data packets1218A-C. The front end module510 (FIG. 5) down-converts de-modulates and de-multiplexes the receivedsatellite signal1235 and passes the thus receiveddata stream1240 to thetransport module520. In particular, thedata stream1240 includes a plurality of received broadcast encrypted data packets1242A-C and, in the example ofFIG. 12, the broadcast encrypted data packets1242A-C are identical, excluding, for example, transmission errors, the broadcastencrypted data packets1218A-C created and broadcast by theHE102.
As illustrated in the example ofFIG. 12, theIRD106 receives the same broadcastencrypted data packets1218A-C created by theHE102. Additionally, thetransport module520 receives same the broadcastencrypted data packets1218A-C regardless of whether the content, asset and/or asset file is received via the satellite/relay104 and/or the Internet-basedcontent server112. In particular, the payload of thesatellite signal1235 and the payload of theInternet signal1225 are identical. Further, thesatellite signal1235 and theInternet signal1225 only differ in the portion(s) of thesatellite signal1235 and theInternet signal1225 that are transmission medium dependent, that is they differ only in, for example, the modulation, the uplink frequency conversion, the IP packetization, etc. applied to broadcast and/or transmit the plurality of broadcastencrypted data packets1218A-C to theIRD106. Clearly, as illustrated inFIG. 12, storage, decryption, decoding and/or playback of the received broadcast encrypted data packets1232A-C and/or1242A-C may be performed independently of how they were received.
II. Flexible Content Delivery
As described above in connection with theexample DTH system100 ofFIG. 1, theexample IRDs106 ofFIGS. 1 and 4-6 may receive a program (e.g., a TV program, a movie, a music video, etc.) via the satellite/relay104 and/or theCDN110. More specifically, as described above in connection with the illustrated example ofFIG. 12, anIRD106 receives the same plurality of encrypted and/or unencrypted data packets (e.g., theencrypted data packets1218A-C ofFIG. 12) regardless of whether the associated program is received via the satellite/relay104 and/or the CDN110 (i.e., via a satellite signal and/or an Internet signal).
As also described above, the satellite signal(s) broadcast by theHE102 represent one or more programs. In the illustrated example ofFIG. 1, the programs are broadcast at times determined by, for example, theTSS315. Reception of those programs via the satellite signal must then occur during the associated broadcast times. In contrast, programs downloaded by anIRD106 from theCDN110 may occur at a time chosen by theIRD106.
By nature, the reception of a program by a large plurality ofIRDs106 via the satellite/relay104 is bandwidth efficient. That is, a program may be broadcast once and simultaneously received by the large plurality ofIRDs106. However, because channels (i.e., transponders) are limited on the satellite/relay104, the number of programs simultaneously supported by the satellite/relay104 is correspondingly limited. Also by nature, the reception of a program by a large plurality ofIRDs106 via theCDN110 is bandwidth inefficient. In particular, each program downloaded by anIRD106 requires a separate transmission from theCDN110 to anIRD106 and, thus, downloads of a single program by a large plurality ofIRDs106 requires a correspondingly large plurality of separate transmissions.
In recognition of the above capabilities, characteristics and/or inherent advantages of theexample DTH system100 ofFIG. 1, anIRD106 preferably receives and/or acquires content via the satellite/relay104. However, because the same plurality of encrypted data packets is received via either the satellite/relay104 and/or theCDN110, anIRD106 may selectively receive all or any portion of a program from either of thesatellite relay104 and/or theCDN110.
FIG. 13 illustrates an example reception of a portion of anexample program1305 via the satellite/relay104 and another portion of theprogram1305 via theCDN110. Time in the example ofFIG. 13 progresses from left to right. In the example ofFIG. 13, theHE102 starts transmission of (i.e., broadcasting) theprogram1305 at a first point in time designated byreference numeral1310. At a later point in time designated byreference numeral1315, a user of anIRD106 selects for viewing and/or recording theprogram1305. However, betweentimes1310 and1315, abeginning portion1320 of theprogram1305 has already been broadcast and is, thus, not currently receivable by theIRD106.
In the illustrated example ofFIG. 13, theCDN110 has available for download an asset file containing theprogram1305. In particular, as discussed above in connection withFIG. 12, the asset file available for download via theCDN110 may contain the exact same plurality of encrypted and/or unencrypted data packets that theHE102 is currently broadcasting via the satellite/relay104.
To allow theIRD106 to start recording theprogram1305 attime1315 into, for example, afile1325 on theHDD425 of theIRD106, even though theHE102 is currently part way through transmission of theprogram1305 via the satellite/relay104, theIRD106 in the illustratedexample downloads1335 thebeginning portion1320 of the file from theCDN110 and startsrecording1340 the remainingportion1345 of theprogram1305 from the satellite signal. Because the same stream of encrypted data packets is receivable via the satellite/relay104 and/or theCDN110, theIRD106 can seamlessly splice at a point in the program designated byreference numeral1350 theportion1320 of the program downloaded from theCDN110 while the remainingportion1345 of theprogram1305 is recorded from the satellite signal. For instance, theIRD106 may use the sequence numbers in the headers of the encrypted data packets to assemble a complete set of encrypted data packets, that is, to ensure no data packets are duplicated or missing. Obviously, thefile1325 thus created is identical to either recording theentire program1305 from the satellite signal or downloading theentire program1305 from theCDN110.
After downloading at least some of theportion1320 from theCDN110, theIRD106 may, additionally or alternatively, immediately start displaying (i.e., decoding and playing back) theprogram1305 while simultaneously recording the portion1345 (i.e., the remainder of the program1305) from the satellite signal. Once the entire downloadedportion1320 has been displayed, the remainingportion1345 can be decoded and played back from theportion1345 recorded from the satellite signal.
If an asset file for theexample program1305 is not available via theCDN110, theIRD106 may wait for the next time theprogram1305 is broadcast. Furthermore, if theprogram1305 is intended to not be played back right away, theIRD106 may alternatively download theportion1345 now, and record theportion1320 at a later time.
FIG. 14 illustrates another example reception of a portion of anexample program1405 via the satellite/relay104 and another portion of theprogram1405 via theCDN110. As inFIG. 13, time in the example ofFIG. 14 progresses from left to right. In the example ofFIG. 14, theHE102 starts transmission of (i.e., broadcasting) theprogram1405 at a point in time designated byreference numeral1410. Also at the point intime1410, anIRD106 starts recording1412 theprogram1405 into, for example, afile1415 on theHDD425 of theIRD106 from the satellite signal broadcast by theHE102.
Starting at a later point in time designated byreference numeral1420 and continuing to a point in time designated byreference numeral1425, reception of the satellite signal by theIRD106 is inhibited by, for example bad weather. Between the point intimes1420 and1425, aportion1430 of theprogram1405 is, thus, not receivable by theIRD106 via the satellite signal. In the example ofFIG. 14, theIRD106downloads1432 the missingportion1430 of theprogram1405 from the asset file for theprogram1405 available via theCDN110 thereby allowing continued recording and/or delayed viewing of theexample program1405 at theIRD106. When the satellite signal is again receivable (e.g., a point in time designated by reference numeral1425), theIRD106 may resume recording1434 the remainder of theprogram1405 from the satellite/relay104.
Because the same stream of encrypted data packets is receivable via the satellite/relay104 and/or theCDN110, theIRD106 can seamlessly splice at points in the program designated byreference numerals1435 and1440 theportion1430 of the program downloaded from theCDN110 with the beginning and end of theprogram1405 recorded from the satellite signal (i.e., the portion of theprogram1405 received via the satellite signal prior to point in theprogram1420 and after point in the program1425). Of course, thefile1415 thus created is identical to either recording theentire program1405 from the satellite signal or downloading theentire program1405 from theCDN110.
After downloading at least some of theportion1420 from theCDN110, theIRD106 may, additionally or alternatively, immediately starting displaying (i.e., decoding and playing back) theprogram1405 while simultaneously recording the remainder of theprogram1405 including, forexample portion1430.
If an asset file for theexample program1405 is not available via theCDN110, theIRD106 may wait for the next time theprogram1405 is broadcast. Furthermore, if theprogram1405 is intended to not be played back right away, theIRD106 may alternatively record theportion1430 at a later time.
FIG. 15 illustrates a flowchart representative of an example process that may be carried out to implement theexample IRDs106 ofFIGS. 1 and 4-6 and/or, more specifically, the examples illustrated inFIGS. 13 and 14. The example process ofFIG. 15 and/or, more specifically, the example receptions illustrated inFIGS. 13 and 14 may be executed by a processor, a controller and/or any other suitable processing device. For example, the example process ofFIG. 15 and/or, more specifically, the example receptions illustrated inFIGS. 13 and 14 may be embodied in coded instructions stored on a tangible medium such as a flash memory, or RAM associated with a processor (e.g., thecontroller module505 ofFIG. 5). Alternatively, some or all of the example process ofFIG. 15 and/or, more specifically, the examples illustrated inFIGS. 13 and 14 may be implemented using an ASIC, a PLD, a FPLD, discrete logic, hardware, firmware, etc. Also, some or all of the example process ofFIG. 15 and/or, more specifically, the example receptions illustrated inFIGS. 13 and 14 may be implemented manually or as combinations of any of the foregoing techniques, for example, a combination of firmware and/or software and hardware. Further, although the example process ofFIG. 15 are described with reference to the flowchart ofFIG. 15, persons of ordinary skill in the art will readily appreciate that many other methods of implementing theexample IRDs106 ofFIGS. 1 and 4-6 and/or, more specifically, the example receptions illustrated inFIGS. 13 and 14 may be employed. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined. Persons of ordinary skill in the art will appreciate that the example processes ofFIG. 15 may be carried out sequentially and/or carried out in parallel by, for example, separate processing threads.
The example process ofFIG. 15 begins with the selection by, for example, a user of a new program for viewing and/or recording (i.e., a program different from that currently being viewed and/or recorded). TheIRD106 determines if the transmission of the new program via the satellite/relay104 has already started (block1515), that is, if a beginning portion of the new program (e.g., theexample beginning portion1320 ofFIG. 13) has already been missed. If transmission of the new program via the satellite/relay104 has already started (block1515), theIRD106 starts recording the remainder of the new program from the satellite signal (e.g., theexample portion1345 ofFIG. 13) (block1520) and downloads and records the missed beginning portion from the CDN110 (block1525). If the new program is to be viewed, theIRD106 begins playback of the new program starting with the beginning portion downloaded from theCDN110 and continues with the remainder portion received via the satellite signal. Control then proceeds to block1545 to monitor for a satellite interruption.
Returning to block1515, if the new program has not already started, theIRD106 waits for the start of the new program (block1535). When the new program starts (block1535), theIRD106 starts recording and/or playback of the new program received via the satellite signal (block1540).
Atblock1545, after recording from the satellite has begun at eitherblock1520 orblock1540, theIRD106 determines if reception of an ongoing satellite signal is interrupted. If no interrupt occurs (block1545), theIRD106 determines if downloading of the program has completed via theCDN110 and/or the satellite signal (block1547). If download of the program has not completed (block1547), control returns to block1545 to monitor for a satellite signal interruption. If recording of the program has completed (block1547), control returns from the example machine executable instructions ofFIG. 15.
Returning to block1545, if a satellite signal interruption occurs, theIRD106 starts downloading and recording the missing (i.e., interrupted) portion of the program (e.g., theexample missing portion1430 ofFIG. 14) from the CDN110 (block1550). TheIRD106 continues downloading the program from theCDN110 until the reception of the satellite signal resumes (block1555). When reception of the satellite signal resumes (block1555), theIRD106 resumes playback and/or recording of the program via the satellite signal (block1560). Control then returns to block1545 to check for another interruption. If atblock1555 reception of the satellite signal does not resume, if theIRD106 checks if recording of the new program has completed (block1557). If recording is not complete, theIRD106 continues recording the program from theCDN110 and control returns to block1555 to monitor for the satellite signal to resume. If recording of the program is complete (block1557), control returns from the example machine executable instructions ofFIG. 15.
The downloading from theCDN110 of any missing and/or beginning portion(s) continues in parallel to recording via the satellite signal, if necessary, to complete reception and recording of the selected program. Of course, if the interruption occurs during a recording for later playback, the downloading and recording of the missing portion of the program need not occur simultaneously with the reception of the satellite signal.
III. Conditional Access of Broadband Content
As described above in connection with theexample DTH system100 ofFIG. 1, theexample IRDs106 ofFIGS. 1 and 4-6 may receive a program (e.g., a TV program, a movie, a music video, an asset file, etc.) via the satellite/relay104 and/or theCDN110. In an example described above in connection with the illustrated example ofFIG. 7, anIRD106 utilizes existing encryption and/or authorization implemented by theexample DTH system100 to authorize the decryption and/or playback of programs downloaded via theCDN110. In particular, theIRD106 uses CWP(s) to determine if theIRD106 is authorized to decrypt and/or playback a program.
To facilitate more efficient utilization of theCDN110 and/or theInternet111 and/or to reduce costs associated with operating the example paycontent delivery system100 ofFIG. 1, a download of a program may be authorized prior to download. In particular, anIRD106 may first request an authorization to download a program and, if the download is authorized, then download the program. That is the paycontent delivery system110 implements a conditional access scheme whereby authorization to download content is based upon a condition (e.g., information provided by the IRD106). By authorizing before download, unauthorized downloads and the costs associated with downloads may be reduced. For example, the vendor of theCDN110 may charge the operator of theHE102 for each program download regardless of whether or not theIRD106 is able to successfully decrypt the program (i.e., playback the program). In particular, anIRD106 which is not authorized to download a program will be unable to download the program, thereby reducing the likelihood and/or motivation for content pirates using, for example, Internet connections from anywhere in the world to exploit the example paycontent delivery system100.
Multiple methods may be implemented to pre-authorize program downloads. An example method is described below in connection withFIGS. 16 and 17A-C. Additional and/or alternative methods are described in Sections IV-VI in connection withFIGS. 18-26C.
FIG. 16 illustrates an example conditional access exchange that may be implemented to authorize a download of an asset prior to download. In the illustrated example ofFIG. 16, a user of anIRD106 selects a program (e.g., a movie, a TV program, a music video, etc.) for download via theCDN110. TheIRD106 sends an authorization request1605 (e.g., via an authorization request message) to theHE102. The CAS350 (FIG. 3) determines if theIRD106 is authorized to download the program and, if the download is authorized, sends authorization information1610 (e.g., via an authorization message) to theCDN110. If, in the example ofFIG. 16, theHE102 determines that anIRD106 is not authorized to download the program, theHE102 does not send authorization information to theCDN110 and sends an authorization rejection response to the IRD106 (not shown). Alternatively or additionally, theHE102 may sendauthorization information1610 to theCDN110 that indicates that theIRD106 is not authorized to download the program. In the illustrated example ofFIG. 16, theauthorization request1605 may be communicated via existing communication paths within the example paycontent delivery system100 ofFIG. 1 such as, for instance, via back-channel communications (e.g., via the Internet111).
TheCDN110 stores theauthorization information1610 in, for example, the database1120 (FIG. 11). When theIRD106 sends a content request1615 (e.g., via a content request message) to theCDN110, the request processor1125 (FIG. 11) determines if theIRD106 is authorized to download the requested program based on authorization information stored in, for instance, thedatabase1120. In particular, if theIRD106 is authorized to download the program, then therequest processor1125 is able to locate theauthorization information1610 for theIRD106 and the requested program. If theIRD106 is authorized to download the program, theCDN110 transmits1620 the program (i.e., the contents of the asset file for the program) to theIRD106.
After and/or during download, theIRD106 may decrypt and/or playback the program as described above in connection withFIG. 7. In particular, theIRD106 may utilize CWP(s) received in a satellite signal and/or received from theCDN110 to determine CW(s) that may be used to correctly decrypt those received data packets that are encrypted. Further, as also described above in connection withFIG. 7, theIRD106 may additionally encrypt the downloaded program prior to storage on the HDD425 (FIG. 5).
In an example, theauthorization request1605 may contain information that theHE102 may use to verify the identity of theIRD106. For example, an identification number for a smart card inserted in the smart card reader562 (FIG. 5), an identification number of theIRD106, a periodically or aperiodically changing number received by theIRD106 in a satellite signal broadcast by theHE102, etc. Of course, other examples abound.
Additionally or alternatively, thecontent request1615 is cryptographically enhanced. For example, any of a variety of cryptographic hashes could be applied to thecontent request1615 prior to transmission. For instance, the IP address of theIRD106 may be used to scramble thecontent request1615 to prevent “copy” and/or “replay” type piracy attacks. If theCDN110 is unable to correctly decipher thecontent request message1615 theCDN110 ignores thecontent request1615 and/or returns an error message. Thecontent request1615 may include a periodically or aperiodically changing number received by theIRD106 in a satellite signal broadcast by theHE102 to verify that theIRD106 is currently part of the example paycontent delivery system100 ofFIG. 1. Further,authorization information1610 received from theHE102 may expire some period of time (e.g., 24 hours) after theauthorization information1610 is received.
FIGS.17A-C illustrate flowcharts representative of example processes that may be carried out by theHE102, theIRDs106 and theCDN110, respectively, to implement the example conditional access exchange ofFIG. 16 and/or, more generally, the example paycontent delivery system100 ofFIG. 1. The example processes of FIGS.17A-C may be executed by a processor, a controller and/or any other suitable processing device. For example, the example processes of FIGS.17A-C may be embodied in coded instructions stored on a tangible medium such as a flash memory, or RAM associated with a processor (e.g., theprocessor8010 shown in theexample processor platform8000 and discussed below in conjunction withFIG. 35). Alternatively, some or all of the example processes of FIGS.17A-C may be implemented using an ASIC, a PLD, a FPLD, discrete logic, hardware, firmware, etc. Also, some or all of the example processes of FIGS.17A-C may be implemented manually or as combinations of any of the foregoing techniques, for example, a combination of firmware and/or software and hardware. Further, although the example processes of FIGS.17A-C are described with reference to the flowcharts of FIGS.17A-C, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example conditional access exchange ofFIG. 16 and/or, more generally, theexample DTH system100 may be employed. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined. Persons of ordinary skill in the art will appreciate that the example processes of FIGS.17A-C may be carried out sequentially and/or carried out in parallel by, for example, separate processing threads.
The example process ofFIG. 17A begins with anIRD106 waiting until a user selects a program for viewing and/or playback (block1702). When a program selection is received (block1702), theIRD106 generates and sends an authorization request (e.g., theauthorization request1605 ofFIG. 16) to the HE102 (block1705). The authorization request, as discussed above, may contain information that verifies the identity of theIRD106. TheIRD106 then sends a content request (e.g., thecontent request1615 ofFIG. 16) to the CDN110 (block1710). As also discussed above, the content request may be cryptographically enhanced and/or include information that theCDN110 may use to verify that theIRD106 is a member of the example paycontent delivery system100.
If the download is authorized (block1715), theIRD106 downloads the program from the CDN110 (block1720) and control returns to block1702 to await another program selection. Authorization may be determined by, for example, the start of reception (i.e., download) of the program from theCDN110. TheCDN110 may, alternatively, send an authorization response message to theIRD106 prior to the start of the download or send an authorization rejection message to theIRD106. TheIRD106 may also use a timeout to determine that the download was not authorized. If authorization is rejected or download doesn't start, theIRD106 presents, for example, an authorization denied message to the user (block1725) and control returns to block1702 to wait for another program selection. Alternatively, theIRD106 may retry, one or more times, the authorization request (block1705) and/or content request (block1710). In particular, one retry of the content request (block1710) may be beneficial to ensure that theCDN110 had adequate time to receive and process authorization information provided by theHE102. Alternatively, theIRD106 may wait a period of time before sending the content request message (block1710).
The example process ofFIG. 17B begins with theHE102 waiting to receive an authorization request (e.g., theauthorization request1605 ofFIG. 16) (block1730). If an authorization request is received (block1730), the CAS350 (FIG. 3) determines based on, for example, identifying information in the authorization request, if download of the program is authorized (block1735). If the download is authorized (block1740), theHE102 sends authorization information (e.g., theauthorization information1610 ofFIG. 16) to the CDN110 (block1745) and control returns to block1730 to await another authorization request. If the download is not authorized (block1740), an authorization rejection message may be sent (not shown) and control returns to block1730 to await another authorization request.
The example process ofFIG. 17C begins with theCDN110 waiting until a new event occurs (block1760). Example new events include receiving authorization information and/or receiving a content request. If a new event occurs (block1760), theCDN110 determines if authorization information (e.g., theauthorization information1610 ofFIG. 16) is received (block1765). If authorization information is received (block1765), theCDN110 stores the authorization information in, for example, the database1120 (FIG. 11) (block1770) and control returns to block1760 to await another new event.
If a content request is received (e.g., thecontent request1615 ofFIG. 16) (block1775), the request processor1125 (FIG. 11) determines, as described above, if theIRD106 is authorized to download the program (block1780). If theIRD106 is authorized to download the program (block1785), theCDN110 transfers the program to the IRD106 (block1790) and control returns to block1760 to wait for another new event. If no authorization is available, an authorization denied message may be sent (not shown).
IV. Signed Conditional Access of Broadband Content
As described above in Sections I and III, to facilitate more efficient utilization of theCDN110 and/or theInternet111 and/or to reduce costs associated with operating the example paycontent delivery system100 ofFIG. 1, a download of a program may be authorized prior to download. In particular, anIRD106 may first request an authorization to download a program and, if the download is authorized, the download may proceed. Multiple methods may be implemented to pre-authorize program downloads. An example method is described below in connection withFIGS. 18 and 19A-C. Additional and/or alternative methods are described in Sections III, V-VI in connection withFIGS. 16-17C and20-26C.
FIG. 18 illustrates an example conditional access exchange that may be implemented to authorize a download of an asset prior to download. In the illustrated example ofFIG. 18, a user of anIRD106 selects a program (e.g., a movie, a TV program, a music video, an asset file, etc.) for download via theCDN110. In response to the selection, theIRD106 sends an authorization request1805 (e.g., via an authorization request message) to theHE102. The CAS350 (FIG. 3) determines if theIRD106 is authorized to download the program and, if the download is authorized, signs and sends an authorization1810 (e.g., via a signed authorization message) to theIRD106. If, in the example ofFIG. 18, theHE102 determines that anIRD106 is not authorized to download the program, theHE102 sends an authorization rejection response (not shown) to theIRD106. TheHE102 sends to theCDN110, for example, a secret key1812 that may be used by theCDN110 to verify the signed authorization1810 (e.g., via a key message).
Theauthorization1810 may be signed using any of a variety of techniques such as, for example, theauthorization1810 may be signed using a secret key (e.g., the secret key1812) known to both the CAS350 (FIG. 3) and theCDN110, theauthorization1810 may be signed using a private signing key for which theCDN110 knows a corresponding public checking key, etc. In the illustrated example ofFIG. 18, theauthorization request1805 and the signedauthorization response1810 may be communicated via existing communication paths within the example paycontent delivery system100 ofFIG. 1. In particular, theauthorization request1805 may be transmitted as discussed above via back-channel communications (e.g., via the Internet111) and the signedauthorization1810 may be transmitted via the satellite/relay104 and/or via theInternet111.
TheIRD106 then sends a content request1815 (e.g., via a content request message) and a corresponding signed authorization1820 (e.g., via a signed authorization message) to theCDN110. In the example ofFIG. 18, the signedauthorization1820 sent to theCDN110 is the signedauthorization1810 received from theHE102. In response to thecontent request1815 and the signedauthorization1820, the request processor1125 (FIG. 11) determines if theIRD106 is authorized to download the requested program based on the signedauthorization1820. TheCDN110 may verify the authenticity of the signedauthorization1820 using any of a variety of techniques such as, for example, using the secret key used by theHE102 to sign theauthorization1810, using a public checking key, etc. In the example ofFIG. 18, theHE102 delivers to theCDN110, via any of a variety of secure means, secret keys and/or public checking keys for verifying signed authorizations1820 (e.g., the secret key1812). If theIRD106 is authorized to download the program (i.e., theCDN110 is able to successfully verify the signed authorization1820), theCDN110 transmits1825 the program (i.e., the contents of the asset file for the program) to theIRD106.
After and/or during download, theIRD106 may decrypt and/or playback the program as described above in connection withFIG. 7. In particular, theIRD106 may utilize CWP(s) received in a satellite signal and/or received from theCDN110 to determine CW(s) that may be used to correctly decrypt those received data packets that are encrypted. Further, as also described above in connection withFIG. 7, theIRD106 may additionally encrypt the downloaded program prior to storage on the HDD425 (FIG. 5).
In an example, theauthorization request1805 may contain information that theHE102 may use to verify the identity of theIRD106. For example, an identification number for a smart card inserted in the smart card reader562 (FIG. 5), an identification number of theIRD106, a periodically or aperiodically changing number received by theIRD106 in a satellite signal broadcast by theHE102, etc. Of course, other examples abound.
Additionally or alternatively, thecontent request1815 and/or the signedauthorization1820 may be cryptographically enhanced. For example, any of a variety of cryptographic hashes could be applied to thecontent request1815 and/or the signedauthorization1820 prior to transmission. For instance, the IP address of theIRD106 may be used to scramble thecontent request1815 to prevent “copy” and/or “replay” type piracy attacks. If theCDN110 is unable to correctly decipher thecontent request message1815 theCDN110 ignores thecontent request1815 or returns an error message. Thecontent request1815 may include a periodically or aperiodically changing number received by theIRD106 in a satellite signal broadcast by theHE102 to verify that theIRD106 is currently part of the example paycontent delivery system100 ofFIG. 1.
FIGS.19A-C illustrate flowcharts representative of example processes that may be carried out by theIRDs106, theHE102 and theCDN110, respectively, to implement the example conditional access exchange ofFIG. 18 and/or, more generally, the example paycontent delivery system100 ofFIG. 1. The example processes of FIGS.19A-C may be executed by a processor, a controller and/or any other suitable processing device. For example, the example processes of FIGS.19A-C may be embodied in coded instructions stored on a tangible medium such as a flash memory, or RAM associated with a processor (e.g., theprocessor8010 shown in theexample processor platform8000 and discussed below in conjunction withFIG. 35). Alternatively, some or all of the example processes of FIGS.19A-C may be implemented using an ASIC, a PLD, a FPLD, discrete logic, hardware, firmware, etc. Also, some or all of the example processes of FIGS.19A-C may be implemented manually or as combinations of any of the foregoing techniques, for example, a combination of firmware and/or software and hardware. Further, although the example processes of FIGS.19A-C are described with reference to the flowcharts of FIGS.19A-C, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example conditional access exchange ofFIG. 18 and/or, more generally, theexample DTH system100 may be employed. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined. Persons of ordinary skill in the art will appreciate that the example processes of FIGS.19A-C may be carried out sequentially and/or carried out in parallel by, for example, separate processing threads.
The example process ofFIG. 19A begins with anIRD106 waiting until a user selects a program for viewing and/or playback (block1902). When a program selection is received (block1902), theIRD106 generates and sends an authorization request (e.g., theauthorization request1805 ofFIG. 18) to the HE102 (block1906). The authorization request, as discussed above, may contain information that verifies the identity of theIRD106. TheIRD106 then waits for an authorization response (e.g., the signedauthorization response1810 ofFIG. 18) from the HE102 (block1910). In an example, upon sending the authorization request (block1906), theIRD106 starts a count down timer. When the timer expires atblock1910, theIRD106 ceases waiting for a response from theHE102, displays a rejection message (block1918) and control returns to block1902 to wait for another program selection.
When an authorization response is received (block1910), theIRD106 based upon information in the authorization response determines if the requested download is authorized (block1914). If the download is not authorized (block1914), theIRD106 presents, for example, an authorization denied message to the user (block1918) and control returns to block1902 to wait for another program selection.
If the download is authorized (block1914), theIRD106 sends a content request (e.g., thecontent request1815 ofFIG. 18) to the CDN110 (block1922) and sends the signed authorization received from theHE102 at block1910 (e.g., the signedauthorization1820 ofFIG. 18) to the CDN110 (block1926). As also discussed above, the content request and/or the signed authorization may be cryptographically enhanced and/or include information that theCDN110 may use to verify that theIRD106 is a member of the example paycontent delivery system100. TheIRD106 then downloads the program from the CDN110 (block1928) and control returns to block1902 to await another program selection.
The example process ofFIG. 19B begins with theHE102 sending a secret key (e.g., thesecret key1812 ofFIG. 18) to the CDN110 (block1929). TheHE102 then waits to receive an authorization request (e.g., theauthorization request1805 ofFIG. 18) (block1930). If an authorization request is received (block1930), the CAS350 (FIG. 3) determines based on, for example, identifying information in the authorization request, if download of the program is authorized (block1935). If the download is authorized (block1940), theHE102 signs and sends an authorization (e.g., the signedauthorization1810 ofFIG. 18) to the IRD106 (block1945) and control returns to block1930 to await another authorization request. If the download is not authorized (block1940), theHE102 sends an authorization rejection (block1950) to theIRD106 and control returns to block1930 to await another authorization request.
The example process ofFIG. 19C begins with theCDN110 waiting to receive a secret key (e.g., thesecret key1812 ofFIG. 18) from the HE102 (block1954). When a secret key is received (block1954), theCDN110 stores the secret key (block1958) and then waits to receive a content request (block1960).
When a content request is received (e.g., thecontent request1815 ofFIG. 18) (block1960), the request processor1125 (FIG. 11) waits to receive a signed authorization (e.g., the signedauthorization1820 ofFIG. 18) (block1965). If a timeout occurs while waiting for the signed authorization, theCDN110 sends a rejection response to the IRD106 (block1985) and control returns to block1960 to wait for another new event. When both a content request and a corresponding signed authorization are received (block1965) and theCDN110 has stored the secret key, therequest processor1125 determines, as described above, if theIRD106 is authorized to download the program (block1970). In particular, therequest processor1125 verifies the authenticity of the signed authorization. In an example, upon receiving a content request (block1960), therequest processor1125 starts a count down timer. When the timer expires, therequest processor1125 ceases waiting for a signed authorization from the IRD106 (block1965) and control returns to block1960 to wait for another content request.
If the signature of the authorization response is verified (block1975), theCDN110 transfers the program to the IRD106 (block1980) and control returns to block1960 to wait for another new event. If the authorization response is not verifiable (block1975), theCDN110 sends a rejection response to the IRD106 (block1985) and control returns to block1960 to wait for another new event.
V. Validated Conditional Access of Broadband Content
As described above in Sections I and III, to facilitate more efficient utilization of theCDN110 and/or theInternet111 and/or to reduce costs associated with operating the example paycontent delivery system100 ofFIG. 1, a download of a program may be authorized prior to download. In particular, anIRD106 may first request an authorization to download a program and, if the download is authorized, the download may proceed. Multiple methods may be implemented to pre-authorize program downloads. Example methods are described below in connection withFIGS. 20, 21,22A-C and23A-C. Additional and/or alternative methods are described in Sections III, IV, and VI in connection withFIGS. 16-19C,24A-B,25 and26A-C.
FIGS. 20 and 21 illustrate example conditional access exchanges that may be implemented to authorize a download of an asset prior to download. In the illustrated example ofFIG. 20, theHE102 sendsvalidation secrets2005 to anIRD106. Thevalidation secrets2005 includes any of a variety of information such as, for example, a shared secret, a public key, a private key, etc. that may be used to verify the identity of theIRD106. In particular, as described below, theIRD106 will usevalidation secrets2005 to verify its identity as part of a content request made to theCDN110.
When a user of anIRD106 selects a program (e.g., a movie, a TV program, a music video, an asset file, etc.) for download via theCDN110, theIRD106 sends a content request2015 (e.g., via a content request message) and any of a variety of validation data2020 (e.g., via a validation data message) to theCDN110. An examplevalidation data message2020 includes a cryptographic signature of theIRD106 or a shared secret. In the example ofFIG. 20, thevalidation data2020 may be used to determine the authorization for the corresponding content request2015 (i.e., thevalidation data2020 is a form of an authorization message). Using any of a variety of techniques, the request processor1125 (FIG. 11) authenticates the identity of theIRD106 based on thevalidation data2020. If the identity of theIRD106 is authentic, theCDN110 transmits2025 the program (i.e., the contents of the asset file for the program) to theIRD106. After downloading the program, theIRD106 sends a download report2030 (e.g., via a download report message2030) to theHE102. If, in the example ofFIG. 20, theHE102 determines that anIRD106 is not authorized to download the program, theHE102 may send an authorization rejection response (not shown) to theIRD106.
In a presently preferred example, theIRDs106 utilize a common shared secret to authenticate themselves to theCDN110. In particular, theHE102 broadcasts a shared secret2005 that may be, for example, changed periodically or aperiodically by theHE102, to all authorizedIRDs106 as well as to the CDN110 (not shown). Preferably a portion of the content request2015 (e.g., the URL of the requested asset) is cryptographically hashed with the shared secret, thus, eliminating the need to expressly send thevalidation data2020. That is, thecontent request2015 and an authorization message containingvalidation data2020 are combined since thevalidation data2020 is used to cryptographically modify thecontent request2015.
In the illustrated example ofFIG. 21, theHE102 sends, using any of a variety of secure methods, a HE public key2102 to theCDN110. The HE public key2102 may be used by theCDN110, as discussed below, to verify information received from anIRD106. To enhance security, theHE102 may periodically change and re-distribute the HEpublic key2102.
TheIRD106 registers with theHE102 by sending a client registration2104 (e.g., a client registration message). In response to theclient registration2104, theHE102 determines aprivate key2106 and a correspondingpublic key2108 for theIRD106, sends theprivate key2106 to the IRD106 (e.g., via a private key message), and sends a certified version of thepublic key2108 to the IRD106 (e.g., via a public key message). In the example ofFIG. 21, thepublic key2108 is certified with a HE private key that corresponds to the HEpublic key2102. The certifiedpublic key2108 is passed in, for example, amessage2110 by theIRD106 to the CDN110 (e.g., via a certified public key message). Using the previously received HE public key2102, theCDN110 certifies the authenticity of thepublic key2108 received from theIRD106. Having certified thepublic key2108, theCDN110 may use thepublic key2108 to verify future information from theIRD106 that is signed with theprivate key2106. TheIRD106 may periodically repeat the above client registration process to update the public key certificate and/or to extend the expiry of the public key.
When a user of anIRD106 selects a program (e.g., a movie, a TV program, a music video, etc.) for download via theCDN110, theIRD106 sends a content request2112 (e.g., via content request message) and a client signature2114 (e.g., via a client signature message) to theCDN110 together with the previously received certifiedpublic key2108 in, for example, themessage2110. Using the certifiedpublic key2108, the request processor1125 (FIG. 11) authenticates the identity of theIRD106 and/or the authenticity of thecontent request2112. If the identity of theIRD106 and/or thecontent request2112 is authentic, theCDN110 transmits2120 the program (i.e., the contents of the asset file for the program) to theIRD106. At some point after downloading the program, theIRD106 sends a download report2130 (e.g., via a download report message2130) to theHE102. Additionally or alternatively, theCDN110 may, at some point, transmit a download report to the HE102 (not shown). Such download reports may be compared with, for example, download usage report(s)2135 provided periodically or aperiodically to theHE102 by theCDN110. If, in the example ofFIG. 21, theCDN110 determines that anIRD106 is not authorized to download the program, theCDN110 may send an authorization rejection response (not shown) to theIRD106.
In the illustrated examples ofFIGS. 20 and 21, information between theHE102 and theIRD106 may be communicated via existing communication paths within the example paycontent delivery system100 ofFIG. 1. For example, theclient registration2104 may be transmitted using any of a variety of secure methods via theInternet111. Theprivate key2106 and/or thepublic key2108 may also be delivered using any of a variety of secure methods via theInternet111. Alternatively, theprivate key2106 and/or thepublic key2108 may be delivered via the satellite/relay104 using existing broadcast security andIRD106 addressing techniques.
In the examples ofFIGS. 20 and 21, after and/or during download, theIRD106 may decrypt and playback the program as described above in connection withFIG. 7. In particular, theIRD106 may utilize CWP(s) received in a satellite signal and/or received from theCDN110 to determine CW(s) that may be used to correctly decrypt the received encrypted data packets. Further, as also described above in connection withFIG. 7, theIRD106 may additionally encrypt the downloaded program prior to storage on the HDD425 (FIG. 5).
FIGS.22A-C and23A-C illustrate flowcharts representative of example processes that may be carried out by theHE102, theIRDs106 and theCDN110, respectively, to implement the example conditional access exchanges ofFIGS. 20 and 21, respectively, and/or, more generally, the example paycontent delivery system100 ofFIG. 1. The example processes of FIGS.22A-C and23A-C may be executed by a processor, a controller and/or any other suitable processing device. For example, the example processes of FIGS.22A-C and23A-C may be embodied in coded instructions stored on a tangible medium such as a flash memory, or RAM associated with a processor (e.g., theprocessor8010 shown in theexample processor platform8000 and discussed below in conjunction withFIG. 35). Alternatively, some or all of the example processes of FIGS.22A-C and23A-C may be implemented using an ASIC, a PLD, a FPLD, discrete logic, hardware, firmware, etc. Also, some or all of the example processes of FIGS.22A-C and23A-C may be implemented manually or as combinations of any of the foregoing techniques, for example, a combination of firmware and/or software and hardware. Further, although the example processes of FIGS.22A-C and23A-C are described with reference to the flowcharts of FIGS.22A-C and23A-C, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example conditional access exchange ofFIGS. 20 and 21, respectively, and/or, more generally, theexample DTH system100 may be employed. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined. Persons of ordinary skill in the art will appreciate that the example processes of FIGS.22A-C and23A-C may be carried out sequentially and/or carried out in parallel by, for example, separate processing threads.
The example process ofFIG. 22A begins with anIRD106 determining if new validation secrets were received (block2204). If validation secrets were not received (block2204), theIRD106 continues to wait. If validation secrets (e.g., thevalidation secrets2005 ofFIG. 20) are received (block2204), theIRD106 stores the validation secrets (e.g., a shared secret) (block2206).
Once validation secrets have been received (block2204) and stored (block2206), theIRD106 determines if a user selected a program for viewing and/or playback (block2208). If a program selection was made (block2208), theIRD106 generates and sends a content request (e.g., thecontent request2015 ofFIG. 20) to the CDN110 (block2210) and sends the validation data (e.g., thevalidation data2020 ofFIG. 20) to the CDN110 (block2212). TheIRD106 then downloads the program from the CDN110 (block2214), sends a download report (e.g., thedownload report2030 ofFIG. 20) to the HE102 (block2216) and control returns to block2208 to await a new program selection.
Alternatively, as discussed above, the content request sent at block2210 may contain additionally information useable to authorize theIRD106 to download the program and, thus, theIRD106 may skip sending the validation data (block2212). For example, theIRD106 may receive a shared secret via the satellite/relay104 and then use the shared secret to scramble the content request (block2210).
The example process ofFIG. 22B begins with theHE102 sending validation secrets (e.g., a shared secret, thevalidation secrets2005 ofFIG. 20) to the IRD106 (block2230). TheHE102 then waits to receive a download report (e.g., thedownload report2030 ofFIG. 20) (block2232). If a download report is received (block2232), the billing system355 (FIG. 3) updates the billing record for the IRD106 (block2234) and control returns to block2232 to await another download report.
The example process ofFIG. 22C begins with theCDN110 waiting to receive a content request (block2266). When a content request (e.g., thecontent request2015 ofFIG. 20) is received (block2266), theCDN110 waits to receive validation data (block2268). If a timeout occurs while waiting to receive the validation data (block2268), theCDN110 notifies theIRD106 by, for example, sending a download rejection (block2276) and control returns to block2266 to await another new content request. When validation data (e.g., thevalidation data2020 ofFIG. 20) is received (block2268), theCDN110 verifies the authenticity of the content request based on the validation data (block2270). If the content request is authentic (block2272), theCDN110 starts transferring the program (block2274) and control returns to block2266 to await another content request. If the content request is not authentic (block2272), theCDN110 notifies theIRD106 by, for example, sending a download rejection (block2276) and control returns to block2266 to await another new content request.
Alternatively, instead of receiving the validation data (block2268), the received content request (block2266) could be de-scrambled using the current shared secret to verify the authorization and/or authenticity of the content request (block2270).
The example process ofFIG. 23A begins with anIRD106 sending a client registration (e.g., theclient registration message2104 ofFIG. 21) to the HE102 (block2302). TheIRD106 then waits to receive the private key (e.g., theprivate key2106 ofFIG. 21) and the certified public key (e.g., thepublic key2108 ofFIG. 21) from the HE102 (block2304). When the keys are received (block2304), theIRD106 stores the keys (block2306). TheIRD106 may, of course, use a timeout to abandon waiting to receive the keys (block2304).
TheIRD106 waits until a user selects a program for viewing and/or playback (block2310). When a program selection is received (block2310), theIRD106 generates a content request. TheIRD106 signs the content request with the private key of the IRD106 (block2312), and sends the signed content request (e.g., thecontent request2112 ofFIG. 21) and client signature (e.g., theclient signature2114 ofFIG. 21) to the CDN110 (block2314). TheIRD106 also sends the certified public key (e.g., the certifiedpublic key2110 ofFIG. 21) to the CDN110 (block2315). TheIRD106 then downloads the program from the CDN110 (block2316), sends a download report to the HE102 (block2317) and control returns to block2310 to await another program selection.
In an example, upon sending the content request (block2312) and/or the signature (block2314), and/or the certified public key (block2315) theIRD106 starts a count down timer. When the timer expires, theIRD106 ceases waiting for the download to start (block2316) and control returns to block2310 to wait for another program selection. Alternatively, theIRD106 may receive a message from theCDN110 indicating that authorization failed.
The example process ofFIG. 23B begins with theHE102 sending a HE public key (e.g., the HEpublic key2102 ofFIG. 21) to theCDN110. TheHE102 then waits to receive a client registration (e.g., theclient registration2104 ofFIG. 21) (block2332). If a client registration is received (block2332), the CAS350 (FIG. 3) determines based on, for example, identifying information in the client registration a private key (e.g., theprivate key2106 ofFIG. 21) (block2334) and a corresponding public key (e.g., thepublic key2108 ofFIG. 21) (block2336). TheHE102 sends the private and the certified pubic key to the IRD106 (block2338). Later, when a download report is received (block2340), the billing system355 (FIG. 3) updates the billing record for the IRD106 (block2342) and control returns to block2340 to await another download report from theIRD106. As discussed above, the billing report may be received from theIRD106 and/or theCDN110. The example process illustrated inFIG. 23B is repeated for eachIRD106 in the example network ofFIG. 1.
The example process ofFIG. 23C begins with theCDN110 waiting to receive a HE public key (e.g., the HEpublic key2102 ofFIG. 21) from the HE102 (block2350). When the HE public key is received (block2350), theCDN110 stores the HE public key (block2352).
TheCDN110 waits to receive a content request from an IRD106 (block2354). If a content request (e.g., thecontent request2112 ofFIG. 21) is received (block2354), theCDN110 waits for a client signature to be received from the IRD106 (block2356). If a timeout occurs while waiting for the client signature (block2356), theCDN110 notifies theIRD106 by, for example, sending an authorization failed response (block2370). If a client signature (e.g., theclient signature2114 ofFIG. 21) is received (block2356), theCDN110 determines if a certified public key (e.g., the certifiedpublic key2110 ofFIG. 21) has been received from the IRD106 (block2358). If a timeout occurs while waiting for the certified public key (block2358), theCDN110 notifies theIRD106 by, for example, sending an authorization failed response (block2370). If a certified public key is received (block2358), theCDN110 verifies the public key received from theIRD106 using the stored headend public key (block2360). If the public key received from theIRD106 is not certified (block2362), theCDN110 notifies theIRD106 by, for example, sending an authorization failed response (block2370).
If a certified public key was received and certification verified (block2362), theCDN110 verifies the authenticity of the content request based on the client signature using the certified public key (block2364). If the content request is authentic (block2366), theCDN110 starts transferring the requested content (block2368) and control returns to block2354 to await another content request. If the content request is not authentic (block2366), theCDN110 notifies theIRD106 by, for example, sending a download rejection (block2370) and control returns to block2354 to wait for another content request.
VI. Additionally Encrypted Broadband Content Delivery
As described above in Sections I and III, to facilitate more efficient utilization of theCDN110 and/or theInternet111 and/or to reduce costs associated with operating the example paycontent delivery system100 ofFIG. 1, a download of a program may be authorized prior to download. In particular, anIRD106 may first request an authorization to download a program and, if the download is authorized, the download may proceed. Multiple methods may be implemented to pre-authorize program downloads. An example method is described below in connection with FIGS.24A-B,25 and26A-C. Additional and/or alternative methods are described in Sections III-V in connection withFIGS. 16-23C.
FIGS. 24A and 24B illustrate example conditional access exchanges that may be implemented to authorize a download of an asset prior to download. In the illustrated example ofFIG. 24A, a user of anIRD106 selects a program (e.g., a movie, a TV program, a music video, an asset file, etc.) for download via theCDN110. TheIRD106 sends an authorization request2405 (e.g., via an authorization request message2405) to theHE102. The CAS350 (FIG. 3) determines if theIRD106 is authorized to download the program. If theIRD106 is authorized, theCAS350 determines a key for additional encryption that will be applied to the already broadcast encrypted asset file prior to delivery to theIRD106. TheHE102 then sends the encryption key2407 (e.g., via a key message) to theIRD106. TheHE102 then sends authorization information and the encryption key2410 (e.g., via an authorization message) to theCDN110. If, in the example ofFIG. 24A, theHE102 determines that anIRD106 is not authorized to download the program, theHE102 does not send authorization information to theCDN110 and sends an authorization rejection response to the IRD106 (not shown). Alternatively or additionally, theHE102 may sendauthorization information2410 to theCDN110 that indicates that theIRD106 is not authorized to download the program.
In the illustrated example ofFIG. 24A, theauthorization request2405 and/or theencryption key2407 is preferably communicated via a secure communication path (i.e., encrypted) within the example paycontent delivery system100 ofFIG. 1 such as, for instance, via secure back-channel communications (e.g., via the Internet111). For instance, as illustrated inFIG. 24A, theencryption key2407 is encrypted before being sent to theIRD106. Alternatively, theencryption key2407 may be sent over a non-secure path relying instead on the nature of the point-to-point communication path established via theInternet111 between theIRD106 and theHE102 for security. In another example, theencryption key2407 is provided to theIRD106 by theCDN110 at the time of download.
TheCDN110 stores the authorization information and theencryption key2410 in, for example, the database1120 (FIG. 11). When theIRD106 sends a content request2415 (e.g., via a content request message2415) to theCDN110, the request processor1125 (FIG. 11) determines if theIRD106 is authorized to download the requested program based on authorization information stored in, for instance, thedatabase1120. In particular, if theIRD106 is authorized to download the program, then therequest processor1125 is able to locate theauthorization information2410 for theIRD106 and the requested program. If theIRD106 is authorized to download the program, the encrypter1130 (FIG. 11) additionally encrypts the already broadcast encrypted asset file using theencryption key2410 and theCDN110transfers2420 the additionally encrypted asset (i.e., the additionally encrypted contents of the asset file for the program) to theIRD106.
After and/or during download, theIRD106 may decrypt and playback the program as described below in connection withFIG. 25. In particular, theIRD106 may use the encrypted key2407 and utilize CWP(s) received in a satellite signal and/or received from theCDN110 to determine CW(s) that correctly decrypt the received doubly encrypted data packets. For instance, as illustrated inFIG. 25, since the received asset file is already additionally encrypted (i.e., super-encrypted) by theCDN110 with theencryption key2407, theIRD106 may directly store the downloaded asset file onto the HDD425 (FIG. 5). During subsequent decrypting and playback of the downloaded asset file, theIRD106 utilizes theencryption key2407 as the CPCW for the asset. Alternatively or additionally, as illustrated inFIG. 25, theIRD106 may immediately decrypt and playback the downloaded asset file using theencryption key2407 as the CPCW for the asset.
FIG. 24B illustrates an alternative example conditional access exchange that may be implemented to authorize a download of an asset prior to download. The illustrated example exchange ofFIG. 24B proceeds similarly to the example exchange illustrated inFIG. 24A. Thus, the description of identical portions ofFIG. 24A will not be repeated here. Instead, the interested reader is referred back to the corresponding description ofFIG. 24A. To facilitate this process, like operations have been numbered with like reference numerals inFIGS. 24A and 24B.
In the illustrated example ofFIG. 24B, instead of theHE102 sending theencryption key2407 to theIRD106, theHE102 sends aseed2450 to theIRD106. Like the key2407 ofFIG. 24A, theseed2450 is preferably communicated via a secure communication path or, alternatively, theseed2450 may be sent over a non-secure path relying instead on the nature of a point-to-point communication path established via theInternet111. As discussed below in connection withFIG. 25, and in additional detail inFIG. 27, theIRD106 uses theseed2450 received from theHE102 and a family key (FK) to determine a CPCW which may be used to decrypt and playback thesuper-encrypted asset file2420 received from theCDN110. TheHE102, knowing the method and FK used by theIRD106 to determine the CPCW, also determines the CPCW and sends the CPCW to theCDN110 with theauthorization information2410. Like the example exchange ofFIG. 24A, theCDN110 uses the key2410 (i.e., the CPCW) to additionally encrypt the asset file prior to transferring the asset file to theIRD106. Family keys are discussed in more detail below in connection withFIG. 27.
FIG. 25 illustrates an example encryption configuration for theexample IRD106 ofFIG. 1. The example configuration ofFIG. 25 may be used to receive, record, decrypt and/or playback additionally encrypted asset files received from a CDN110 via, for instance, one of the example exchanges ofFIG. 24A or24B. In the illustrated example ofFIG. 25,super-encrypted video data2505 is received from theCDN110. Since thecontent2505 is already additionally encrypted (i.e., it has already had copy protection encryption applied), thesuper-encrypted content2505 may directly stored on theHD425 without theIRD106 applying any additional encryption. As discussed in more detail in connection withFIG. 27, during decryption and playback of thecontent2505, thesecurity chip524 either decrypts and uses the encrypted key2407 (FIG. 24A) or uses the seed2450 (FIG. 24B) to determine, for thecontent2505, a correspondingCPCW2510. For example, thesecurity chip524 may decrypt an encrypted encryption key2407 using a secret that is unique to and embedded within thesecurity chip524 to determine theCPCW2510. Alternatively, thesecurity chip524 scrambles the seed with a FK to obtain theCPCW2510. In the illustrated examples of FIGS.24A-B and25, theCPCW2510 is the same code word used by theCDN110 to additionally encrypt thesuper-encrypted video data2505. In the illustrated examples of FIGS.24A-B, the code word is provided to theCDN110 in the authorization andkey message2410.
In the example ofFIG. 25, theCPCW2510 is provided to and used by the AES decrypter528 to decrypt the additionallyencrypted data2505 thereby obtaining broadcastencrypted video data2515. The broadcastencrypted video data2515 may be further decrypted by the DES/AES decrypter523/525 using CW(s)2520. As also discussed in more detail below in connection withFIG. 27, in the illustrated example ofFIG. 25, the CW(s)2520 are determined from encrypted CW(s) (ECW(s))2525 provided to thesecurity chip524 by asmart card2530. The ECW(s) are encrypted versions of CW(s) received from theHE102 via one or more CWP(s)2535. Thesecurity chip524 decrypts the ECW(s)2525 and provides the CW(s)2520 to the DES/AES decrypter523/525. The DES/AES decrypter523/525, in turn, decrypts the broadcastencrypted video data2515 to obtainunencrypted video data2540.
In the examples ofFIGS. 24A and 24B, theauthorization request2405 may contain information that theHE102 may use to verify the identity of theIRD106. For example, an identification number for thesmart card2530 inserted in the smart card reader562 (FIG. 5), an identification number of theIRD106, a periodically or aperiodically changing number received by theIRD106 in a satellite signal broadcast by theHE102, etc. Of course, other examples abound.
Additionally or alternatively, theexample content request2415 ofFIGS. 24A and 24B may be cryptographically enhanced. For example, any of a variety of cryptographic hashes could be applied to thecontent request2415 prior to transmission. For instance, the IP address of theIRD106 may be used to scramble thecontent request2415 to prevent “copy” and/or “replay” type piracy attacks. If theCDN110 is unable to correctly decipher thecontent request message2415 theCDN110 ignores thecontent request2415 and/or returns an error message (not shown). Thecontent request2415 may include a periodically or aperiodically changing number received by theIRD106 in a satellite signal broadcast by theHE102 to verify that theIRD106 is currently part of the example paycontent delivery system100 ofFIG. 1. Further,authorization information2410 received from theHE102 may expire some period of time (e.g., 24 hours) after theauthorization information2410 is received.
FIGS.26A-C illustrate flowcharts representative of example processes that may be carried out by theIRDs106, theHE102 and theCDN110, respectively, to implement the example conditional access exchanges ofFIGS. 24A and 24B, the example encryption configuration ofFIG. 25 and/or, more generally, the example paycontent delivery system100 ofFIG. 1. The example processes of FIGS.26A-C may be executed by a processor, a controller and/or any other suitable processing device. For example, the example processes of FIGS.26A-C may be embodied in coded instructions stored on a tangible medium such as a flash memory, or RAM associated with a processor (e.g., theprocessor8010 shown in theexample processor platform8000 and discussed below in conjunction withFIG. 35). Alternatively, some or all of the example processes of FIGS.26A-C may be implemented using an ASIC, a PLD, a FPLD, discrete logic, hardware, firmware, etc. Also, some or all of the example processes of FIGS.26A-C may be implemented manually or as combinations of any of the foregoing techniques, for example, a combination of firmware and/or software and hardware. Further, although the example processes of FIGS.26A-C are described with reference to the flowcharts of FIGS.26A-C, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example conditional access exchanges of FIGS.24A-B, the example configuration ofFIG. 25 and/or, more generally, theexample DTH system100 may be employed. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined. Persons of ordinary skill in the art will appreciate that the example processes of FIGS.26A-C may be carried out sequentially and/or carried out in parallel by, for example, separate processing threads.
The example process ofFIG. 26A begins with anIRD106 waiting until a user selects a program for viewing and/or playback (block2602). When a program selection is received (block2602), theIRD106 generates and sends an authorization request (e.g., theauthorization request2405 ofFIG. 24A or24B) to the HE102 (block2605). The authorization request, as discussed above, may contain information that verifies the identity of theIRD106. TheIRD106 waits to receive either an, optionally encrypted, encryption key (e.g., theencryption key2407 ofFIG. 24A) or a seed (e.g., theseed2450 ofFIG. 24B) (block2607). If a timeout occurs while waiting for the encryption key or seed, a rejection message is displayed (block2625) and controls returns to block2602 to wait for another program selection. When the encryption key or the seed is received (block2607), theIRD106 either decrypts the received encrypted encryption key or determines the encryption key from the seed, and then stores the encryption key (block2609). TheIRD106 then sends a content request (e.g., thecontent request2415 of FIGS.24A-B) to the CDN110 (block2610). As also discussed above, the content request may be cryptographically enhanced and/or include information that theCDN110 may use to verify that theIRD106 is a member of the example paycontent delivery system100.
If the download is authorized (block2615), theIRD106 downloads the program from the CDN110 (block2620) and decrypts the downloaded program for playback using the received encryption key (block2622). Control then returns to block2602 to await another program selection. Authorization may be determined by, for example, the start of reception (i.e., download) of the program from theCDN110. TheCDN110 may, alternatively, send an authorization response message to theIRD106 prior to the start of the download. TheIRD106 may also use a timeout to determine that the download was not authorized. If neither an authorization response nor download start occurs, theIRD106 presents, for example, an authorization denied message to the user (block2625) and control returns to block2602 to wait for another program selection. Alternatively, theIRD106 may retry, one or more times, the authorization request (block2605) and/or content request (block2610). In particular, one retry of the content request (block2610) may be beneficial to ensure that theCDN110 had adequate time to receive and process authorization information provided by theHE102. Alternatively, theIRD106 may wait a period of time before sending the content request message (block2610).
The example process ofFIG. 26B begins with theHE102 waiting to receive an authorization request (e.g., theauthorization request2405 ofFIG. 24A or24B) (block2630). If an authorization request is received (block2630), the CAS350 (FIG. 3) determines based on, for example, identifying information in the authorization request, if download of the program is authorized (block2635). If the download is authorized (block2640), theHE102 determines a seed (e.g., theseed2450 ofFIG. 24B) and/or, as described above, an encryption key (e.g., theencryption key2407 ofFIG. 24A) (block2645) and sends authorization information and the encryption key (e.g., the authorization information and key2410 ofFIG. 24A or24B) to the CDN110 (block2647). TheHE102 then sends either the seed or the encryption key to the IRD106 (block2649) and control returns to block2630 to await another authorization request. If the download is not authorized (block2640), theHE102 sends, for example, an authorization denied message (block2652) and control returns to block2630 to await another authorization request.
The example process ofFIG. 26C begins with theCDN110 waiting until a new event occurs (block2660). Example new events include receiving authorization information and/or receiving a content request. If a new event occurs (block2660), theCDN110 determines if authorization information and an encryption key (e.g., the authorization information and key2410 ofFIG. 24A or24B) were received from a HE102 (block2665). If authorization information and an encryption key were received (block2665), theCDN110 stores the authorization information and the encryption key in, for example, the database1120 (FIG. 11) (block2670) and control returns to block2660 to await another new event.
If a content request is received from an IRD106 (e.g., thecontent request2415 ofFIG. 24A or24B) (block2675), the request processor1125 (FIG. 11) determines, as described above, if theIRD106 is authorized to download the program (block2680). If theIRD106 is authorized to download the program (block2685), the encrypter1130 (FIG. 11) additionally encrypts the asset file for the requested content based on the encryption key (block2690), theCDN110 transfers the additionally encrypted asset file to the IRD106 (block2695) and control returns to block2660 to wait for another new event. If theIRD106 is not authorized to download the program (block2685), theCDN110 sends, for example, an authorization denied message to the IRD106 (block2697) and control returns to block2660 to wait for another new event.
VII. Secure Content Sharing in a Home Network
As described above in connection with theexample DTH system100 ofFIG. 1, a media server106 (e.g., theexample IRD106 of FIGS.1 and/or4-6) may receive secure content (i.e., encrypted content) via the satellite/relay104 and/or theCDN110, and may securely provide that content to one or more clients114 (i.e., devices114) communicatively coupled to themedia server106. In particular, encryption information (e.g., CWP(s)) and/or content is received by thecontent server106 and/or delivered to thecontent server106 as described above in Sections I-VI in connection withFIGS. 1-26C. In a presently disclosed example, theclients114 support content delivery and/or protection in a method substantially similar to that implemented by themedia server106.
FIG. 27 illustrates an example implementation of protected content delivery within a home network of the examplepay delivery network100 ofFIG. 1. For instance, protected content is delivered between amedia server106 and aclient114 communicatively coupled, as discussed above in connection withFIGS. 1 and 4-6, to themedia server106. In the example ofFIG. 27, themedia server106 and theclient114 belong to a home domain with themedia server106 serving as a gateway between theHE102 and theclient114. In the illustrated example ofFIG. 27, protected content2705 (i.e., encrypted content2705) that has been delivered to and/or downloaded by themedia server106 may be securely provided and/or delivered to theclient114. In the illustrated example ofFIG. 27, the protectedcontent2705 is broadcast encrypted at theHE102 using, for example, DES/AES encryption, such that only authorized subscribers of the broadcast service can decrypt the protectedcontent2705. In the example ofFIG. 27, the received broadcast encryptedcontent2705 is additionally protected (i.e., super encrypted) by the AES encrypter527 such that only an authorizedclient114 associated with themedia server106 is able to correctly decrypt thesuper-encrypted content2710.
In the example ofFIG. 27, the broadcast system HE102 provides encryption information (i.e., encrypted keys) to themedia server106 and theclient114 that themedia server106 and/or theclient114 each use to determine a first encryption secret (i.e., a CW) used by theHE102 to broadcast encrypt the protectedcontent2705. Themedia server106 and/or theclient114 use the determined first encryption secret to decrypt the protectedcontent2705. TheHE102 further provides additional encryption information (i.e., additional encrypted keys) used by themedia server106 to determine a second encryption secret (i.e., a CPCW) used by themedia server106 to super-encrypt the protectedcontent2705 and used by themedia server106 and/or theclient114 to later decrypt thesuper-encrypted content2710. If more than one CW is used by theHE102 to broadcast encrypt the protectedcontent2705, themedia server106 and/or theclient114 determine additional encryption secrets from the encrypted keys and use the additional encryption secrets to decrypt the protectedcontent2705. TheHE102 not only controls, as discussed above, secure delivery of content from theHE102 to the media server106 (i.e., an IRD106) but also controls secure content delivery between themedia server106 and the client114 (i.e., a device114). Further, the protected content is delivered and/or stored throughout the path from theHE102 via themedia server106 to theclient114 in an encrypted form and, thus, provides a continuous chain of digital rights protection.
Alternatively, as discussed above in connection with FIGS.24A-B and25, the protectedcontent2705 received at themedia server106 may be additionally encrypted (i.e., super-encrypted) by aCDN110. If the protectedcontent2705 is received super-encrypted at themedia server106, themedia server106 can directly store thesuper-encrypted content2705 on theHDD425 without the AES encrypter527 applying additional encryption. In this alternative example, the broadcast system HE102 provides encryption information (i.e., encrypted keys) to themedia server106 and theclient114 that themedia server106 and/or theclient114 each use to determine a first encryption secret (i.e., a CPCW) used by themedia server106 and/or theclient114 to decrypt thesuper-encrypted content2705. The broadcast system HE102 further provides additional encryption information (i.e., additional encrypted keys) to themedia server106 and theclient114 that themedia server106 and/or theclient114 each use to determine one or more additional encryption secrets (i.e., CW(s)) used by themedia server106 and/or theclient114 to decrypt the broadcast encrypted video formed by the decryption of thesuper-encrypted content2705 with the determined first encryption secret.
In the illustrated example ofFIGS. 1 and 27, each security chip (e.g., the security chip524) in amedia server106 and/orclient114 is identified by a unique receiver identifier (RID) (e.g., a RID2718) and contains a unique secret (US) (e.g., a US2780) embedded during manufacturing. The RID may be used by other devices (e.g., the HE102) to identify theserver106 and/or theclient114. In response to a registration request containing a RID, theHE102 sends, for a registered and authorizedmedia server106 orclient114, one or more conditional access packets (CAPs) that contain encryption information. In the example ofFIG. 27, CAPs are sent to themedia server106 and, as discussed below, themedia server106 is responsible for passing along to aclient114 the encryption information for theclient114. In the illustrated examples ofFIGS. 1 and 27, the operator of theHE102 manufactures, sells, and/or otherwise provides the security chips and, thus, knows the valid combinations of RID and US values. Further, theHE102 maintains and accesses a table of RID and US values.
An example CAP is a RID message (MSG)2712 associating a RID with a Family Key (FK) and a Pairing Key (PK). In the examples ofFIGS. 1 and 27, the FK and PK sent in aRID MSG2712 are encrypted using the US associated with the RID of the receivingmedia server106 orclient114, for example, the RID2718 or aRID*2720, respectively. That is,HE102 provides encrypted versions of the FK and the PK unique to each of themedia server106 and theclient114. In the example ofFIG. 27, themedia server106 and the associatedclients114 share a FK and PK, but eachRID MSG2712 contains a uniquely encrypted version of the FK and PK. For example, an encrypted FK (EFK)2714 (i.e., a first encrypted version of the FK) encrypted for themedia server106 will be encrypted using the unique secret (US)2780, contained within thesecurity chip524 and associated with the RID2718, for themedia server106 and will not be decryptable by anothermedia server106 or anyclient114. Likewise, an encrypted FK (EFK*)2716 (i.e., a second encrypted version of the FK) encrypted for theclient114 will be encrypted using the US2785 of theclient114. In the example ofFIGS. 1 and 27, themedia server106 is aware of the RID(s) (e.g., the RID*2720) for each of its associatedclients114.
Another example CAP is a PEK MSG that contains, for thesmart card2730, a personal entitlement key (PEK) that thesmart card2730 may use to encrypt received CWP(s)2722 prior to storing the received CWP(s)2722 on theHDD425. Likewise, thesmart card2730 may use the PEK to decrypt previously encrypted and stored received CWP(s)2722.
Another example CAP for thesmart card2730 is a PK MSG2723 containing the PK. In the illustrated example ofFIGS. 1 and 27, thesmart card2730 extracts CW(s) from the received CWP(s)2722. Thesmart card2730 then uses the PK received in the PK MSG2723 to encrypt the thus received CW(s) forming encrypted CW(s) (ECW(s)) that are sent to thesecurity chip524. In turn, thesecurity chip524 may use the US2780 to decrypt theEPK2726, and the decryptedEPK2726 to obtain the CW(s)2732 from the ECW(s)2738.
In the illustrated example ofFIG. 27, theHE102 provides at least aRID MSG2712 for amedia server106 or aclient114 when themedia server106 or theclient114 is registered. TheHE102 determines if themedia server106 or theclient114 is authorized to receive protected content and, if authorized, sends aRID MSG2712 for themedia server106 or theclient114 to themedia server106. It will be readily apparent to persons of ordinary skill in the art that the example CAPs discussed above may be split or combined. Further, CAPs may be used to convey contain different and/or additional encryption information to that discussed above.
To store encryption information received in aRID MSG2712, theexample media server106 ofFIG. 27 includes a table2725. The table2725 may be stored in any computer readable device, for example, theHDD425, the SRAM506 (FIG. 5), etc. An example table2725 contains, for themedia server106 and each registered client114 (i.e., for each RID), an EFK and an encrypted PK (EPK) (e.g.,EPK2726 or EPK*2728). When, for instance, the EFK*2716 and the EPK*2728 are required by theclient114, the media server106 (e.g., the CPU507 (FIG. 5) may look up, based upon the RID*2720 of theclient114, the EFK*2716 and the EPK*2728 for theclient114, and send the EFK*2716 and the EPK*2728 to theclient114. In the examples ofFIGS. 1 and 27, theHE102 may change the values of PK and/or FK from time to time. To properly decrypt and playback recorded content, theIRD106 requires the same PK and FK values that were used for recording. Thus, the example RID table2725 ofFIG. 27 contains new and old values ofEPK2726,EFK2714, EPK*2728 and EFK*2716, allowing themedia server106 to look up the appropriate values, based upon the time when a program was recorded.
As described above, eachCWP2722 contains information that may be used by thesmart card2730 to determine aCW2732 used by theHE102 to broadcast encrypt a portion of theencrypted video2705. Received CWP(s)2722 may be stored and/or utilized by theexample IRD106 ofFIGS. 1 and 27 using any of a variety of methods. In an example, received CWP(s)2722 are encrypted by thesmart card2730 with a PEK received in a PEK MSG and then stored on theHDD425. During playback, the encrypted CWP(s)2722 can be obtained from theHDD425 and then decrypted by thesmart card2730 to obtain the CWP(s)2722, and then further processed by thesmart card2730 to determine the CW(s)2732. The CW(s)2732 may then be encrypted with a PK and the ECW(s)2738 are provided to thesecurity chip524. Thesecurity chip524 decrypts the ECW(s)2738 to obtain the CW(s)2732.
In another example, the CWP(s)2722 may be encrypted by theIRD106 using other encryption keys such as, for example, aCPCW2734. Alternatively, theIRD106 stores received CWP(s)2722 on theHDD425 without first encrypting them. In a further example, thesmart card2730 determines the CW(s)2732 from the CWP(s)2732 at recording time, uses a PK received in a PK MSG2723 to encrypt the CW(s)2732, and then theIRD106 stores the resulting ECW(s)2738 on theHDD425. During playback, the security chip524 (or the smart card2730) obtains the ECW(s)2738 from theHDD425 and thesecurity chip524 decrypts them with the PK to obtain the CW(s)2732.
In yet another example, thesmart card2730 obtains CW(s)2732 from received CWP(s)2722 at recording time, and then encrypts them with a PK to form ECW(s)2738. The resultant ECW(s)2738 and the CWP(s)2722 are then encrypted with a PEK and stored on theHDD425. During playback, thesmart card2730 obtains the encrypted ECW(s)2738 from theHDD425, decrypts them using the PEK, and provides the ECW(s)2738 to thesecurity chip524. Thesecurity chip524 then decrypts them using the PK to obtain the CW(s)2732. Other examples abound.
In the examples ofFIGS. 1 and 27, when themedia server106 plays back received and/or storedvideo data2705, thesecurity chip524 and/or thesmart card2730 using, for instance, one of the example methods described above, obtains the CW(s)2732 for the program being played back. Thesecurity chip524 then provides the CW(s)2732 to the DES/AES decrypter523/525. The DES/AES decrypter523/525 subsequently uses the CW(s)2732 to decrypt the broadcast encrypted video.
To determine theCPCW2734 that may be used to additionally encrypt (i.e., super-encrypt) the broadcastencrypted video2705 and/or to decryptsuper-encrypted video2710, a security device (e.g., the security chip524) obtains theEFK2714 from the table2725, decrypts theEFK2714 based on the US2780, and then scrambles (i.e., encrypts, decrypts or cryptographically hashes) aseed number2736 with the decryptedEFK2714 to form theCPCW2734. Anexample seed number2736 is the content identifier for the broadcastencrypted video2705. Otherexample seed numbers2736 include a random number, an encrypted key or encrypted CPCW delivered from theHE102.
When, for instance, theclient114 requests content (e.g., the content2705) from the media server106 (e.g., via a content request message), themedia server106 obtains the ECW(s)2738 for the requestedcontent2705 from thesmart card2730. Themedia server106 provides to theclient114 the ECW(s)2738, the EFK*2716, the EPK*2728, theseed number2736 for the requested content, and thesuper-encrypted content2710. In the example ofFIG. 27, the file on theHDD425 for thesuper-encrypted content2710 is simply transferred to theclient114 via, for instance, the interface module550 (FIG. 5) using any of a variety of file transfer techniques. For example, the file may be transferred to aclient114 using FTP via the network interface435 (FIG. 5) and the home network116 (FIG. 1). In particular, in the examples ofFIGS. 1 and 27, no encryption and/or decryption are applied to the file prior to and/or during sending the file to theclient114.
Similarly to that described above for themedia server106, theclient114 determines theCPCW2734 and CW(s)2732 that may be used to decrypt thesuper-encrypted content2710. In particular, a security device (e.g., a security chip2740) uses the US*2785 to decrypt both the received EFK*2716 and the received EPK*2728. Thesecurity chip2740 then scrambles the receivedseed number2736 with the decrypted EFK*2716 to determineCPCW2734 that may be used by anAES decrypter2745 to decrypt thesuper-encrypted video2710. Thesecurity chip2740 also decrypts the received ECW(s)2738 using decrypted EPK*2728 to obtain the CW(s)2732 that may be used by a DES/AES decrypter2750 to further decrypt the output of the decrypter2745 (i.e., broadcast encrypted video).
An example implementation of aclient114 may utilize substantially similar components, devices and/or modules to those used to implement theexample IRDs106 illustrated inFIGS. 4-6. For instance, thesecurity chip2740, theAES decrypter2745 and the DES/AES decrypter2750 may be identical to thesecurity chip524,AES decrypter528, and the DES/AES decrypter523/525 of theexample IRDs106, respectively. Further, anexample client114 may not contain all the elements of theexample media servers106 ofFIGS. 4-6. For instance, anexample client114 is implemented without thefront end modules510, thesplitter570, thetuners575, the AES encrypter527 and thesmart card reader562.
FIGS. 28A and 28B illustrate an example protected content delivery exchange for the examplepay delivery network100 ofFIG. 1. The illustrated example exchange ofFIGS. 28A and 28B proceeds similarly to the example implementation discussed above in connection withFIG. 27. To facilitate ease of understanding, like elements have been numbered with like reference numerals inFIGS. 27 and 28A-B.
Turning toFIG. 28A, in response to a registration request for a media server106 (not shown), theHE102 determines the authorization for themedia server106 and generates the FK, PK and PEK keys for the home domain. TheHE102 sends aPK MSG2810 for thesmart card2730 that contains the PK for themedia server106 and a PEK MSG2814 for thesmart card2730 that contains the PEK. TheHE102 also sends aRID MSG2816 to the authorizedmedia server106 that includes the RID2718, theEPK2726, and theEFK2714. Themedia server106 updates and/or stores, based upon the RID2718, theEPK2726 and theEFK2714 in the table2725. Likewise, in response to a registration request from a client114 (not shown), theHE102 determines the authorization for theclient114 and sends aRID MSG2818 to themedia server106 containing the RID*2720, EFK*2716 and EPK*2728. The information received in theRID MSG2818 is likewise stored by themedia server106 in the table2725. From time to time the example HE102 ofFIGS. 1 and 28A may generate new values of the FK, PK and PEK and send them to themedia server106 as described above. Theexample media server106 ofFIGS. 1, 27 and28A indexes the received FK, PK and PEK values according to time period and stores them in the RID table2725.
Thesecurity chip524 decrypts theEFK2714 indicated withreference numeral2820 and uses the decryptedEFK2714 to scramble theseed number2736 indicated withreference numeral2822 to obtain theCPCW2734 indicated withreference numeral2824. Theencrypter527 uses theCPCW2734 to encrypt the received broadcastencrypted video2705 indicated withreference numeral2826 and stores thesuper-encrypted video2710 on theHDD425 as indicated withreference numeral2827. When CWP(s)2722 are received by themedia server106 as indicated withreference numeral2828, themedia server106 and/or thesmart card2730, using any of the methods described above, processes, handles and/or stores the received CWP(s)2722. In the example ofFIG. 28A, thesmart card2730 encrypts the CWP(s)2722 with the PEK received in, for example, the PEK MSG2814, and stores the encrypted CWP(s)2722 on theHDD425 as indicated withreference numeral2829.
Continuing withFIG. 28B when theclient114 sends a content request and the RID*2720 to themedia server106 as indicated withreference numeral2830. At themedia server106, the CPU507 (FIG. 5) uses the received RID*2720 of theclient114 as indicated withreference numeral2831 to lookup in the table2725 the EFK*2716 and the EPK*2728 as indicated withreference numeral2832. Using any of the methods described above, thesmart card2730 and/or thesecurity chip524 obtain and/or determine the ECW(s)2738. In the illustrated example ofFIG. 28A, thesmart card2730 obtains encrypted CWP(s)2722 stored on theHDD425 as designated withreference numeral2833. Thesmart card2730 then uses the PEK to decrypt the encrypted CWP(s)2722 to determine the CW(s)2732 from the CWP(s), encrypts the CW(s)2732 with the PK, and sends the ECW(s)2738 to theCPU507 as indicated withreference numeral2834. The media server106 (e.g., the CPU507) then sends theseed number2736, the ECW(s)2738, the EPK*2728, and the EFK*2716 to theclient114 as indicated withreference numeral2836. As indicated byreference numeral2838, themedia server106 also sends thesuper-encrypted video2710 to theclient114.
At theclient114, thesecurity chip2740 decrypts the EFK*2716 using the US*2785 and uses the decrypted EFK*2716 and theseed number2736 to determine the CPCW2734 (indicated with reference numeral2840) that thedecrypter2745 uses to decrypt thesuper-encrypted video2710. Thesecurity chip2740 also uses the US*2785 to decrypt the EPK*2728 and uses the decrypted EPK*2728 to decrypt the ECW(s)2738 as indicated byreference numeral2842. Thedecrypter2750 uses the decrypted ECW(s)2738 (i.e., the CW(s)2732) to further decrypt the broadcastencrypted video2844 output by thedecrypter2745 to obtain the requestedunencrypted content2846.
In the illustrated examples ofFIGS. 1, 27 and28A-B the PK and/or the FK and/or the PEK may be updated and/or changed. In particular, the table2725 may store a current EPK (e.g., EPK*2728) and a current EFK (e.g., EFK*2716) for eachmedia server106 and eachclient114 as well as a future EPK and future EFK. For example, when anew EFK2714 is received via aRID MSG2712, theRID MSG2712 indicates when thenew EFK2714 is to become active, and, at the indicated time, theold EFK2714 is expired and thenew EFK2714 is utilized for future content delivery between themedia server106 and theclient114. If the FK is updated, one or moreold EFK2714 and/or EFK*2716 values may be retained by themedia server106 to allow themedia server106 and/or theclient114 to correctly decrypt the previouslysuper-encrypted content2710 stored on theHDD425 that depends upon the current or previous FK for decryption. Alternatively, previoussuper-encrypted content2710 may be decrypted and re-super encrypted.
In another example, the value of the PEK is updated with a new PEK MSG2814. The PEK MSG2814 indicates when the new PEK is to become active. If the PEK is updated, one or more old PEK values may be retained by thesmart card2730 in order to correctly decrypt the previously encrypted CWP(s)2722 stored on theHDD425. Alternately, one or moreold PEK MSGs2714 may be retained by theIRD106.
In yet another example, theHE102 updates the value of the PK by sending anew PK MSG2810 to thesmart card2730 and sending a new EPK (e.g.,EPK2726, EPK*2728) containing the new PK to themedia server106 and/or theclient114 via one or more RID MSGs. Thesmart card2730 may determine when to begin using the new PK, or it may be instructed from theHE102 in thePK MSG2810 or via the CWP(s)2722. In an example, the new PK is used to encrypt the CW(s)2732 at playback time, so that previous PK values are not required, and the PK values can change frequently. In another example, the PK is used to encrypt the CW(s)2732 at recording time, and the resulting ECW(s)2738 are stored on theHDD425. In this example, themedia server106 retains one or moreold EPK2726 and/or EPK*2728 values to allow themedia server106 and/or theclient114 to correctly decrypt the broadcast-encrypted content2710 stored on theHDD425. In yet another example, all or part of the PK value is required by thesmart card2730 to obtain the CW(s)2732 from the CWP(s)2722, such as where the PK may have a common portion that is shared amongst all authorized subscribers during a particular period of time, so that thesmart card2730 retains the new PK and one or more old PK values to obtain the CW(s)2732 for correct viewing of the live broadcast or the recorded content. In this example, previous values of PK,EPK2726 and/or EPK*2728 are required to correctly decrypt content from theHDD425.
Themedia server106 may also contain unencrypted content on theHDD425 such as, for example, equipment demonstrations, advertisements, instructions, etc. In the example systems ofFIGS. 1, 27 and28A-B, themedia server106 may provide such unencrypted content to anyclient114, even anunauthorized client114. In particular, the unencrypted content may be sent by themedia server106 to aclient114 in the clear (i.e., without any applied encryption and/or security).
FIGS. 29, 30 and31 illustrate flowcharts representative of example processes that may be carried out by themedia server106, theclient114 and theHE102, respectively, to implement the example implementation ofFIG. 27, the example exchange of FIGS.28A-B and/or, more generally, the example paycontent delivery network100 ofFIG. 1. The example processes ofFIGS. 29-31 may be executed by a processor, a controller and/or any other suitable processing device. For example, the example processes ofFIGS. 29-31 may be embodied in coded instructions stored on a tangible medium such as a flash memory, or RAM associated with a processor (e.g., theprocessor8010 shown in theexample processor platform8000 and discussed below in conjunction withFIG. 35). Alternatively, some or all of the example processes ofFIGS. 29-31 may be implemented using an ASIC, a PLD, a FPLD, discrete logic, hardware, firmware, etc. Also, some or all of the example processes ofFIGS. 29-31 may be implemented manually or as combinations of any of the foregoing techniques, for example, a combination of firmware and/or software and hardware. Further, although the example processes ofFIGS. 29-31 are described with reference to the flowcharts ofFIGS. 29-31, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example implementation ofFIG. 27, the example exchange of FIGS.28A-B and/or, more generally, the illustrated example ofFIG. 1 may be employed. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined. Persons of ordinary skill in the art will appreciate that the example processes ofFIGS. 29-31 may be carried out sequentially and/or carried out in parallel by, for example, separate processing threads.
The example process ofFIG. 29 begins with amedia server106 waiting for a new event such as, for example, a request for content from aclient114 to occur (block2902). When a new event occurs (block2902), themedia server106 determines the type of the new event.
If the new event (block2902) is a selection, for example, by a user of themedia server106, to record a selected program (block2910), a security device (e.g., the security chip524) generates, as described above, from theEFK2714 and, for example, acontent identifier2736 for the selected program, a CPCW2734 (block2912). The AES encrypter527 (FIG. 5 or27) then starts additionally encrypting (i.e., super-encrypting) the received broadcast encrypted video2705 (block2914) and themedia server106 starts storing thesuper-encrypted video2710 on, for example, the HDD425 (block2916). The super-encrypting (block2914) and the storing (block2916) continue until recording of the selected program is complete and/or recording is canceled and/or interrupted. Methods for continuing to record a selected program during interruptions and/or recording a selected program for which broadcast has already started are discussed in Section II and in connection withFIGS. 13-15. Control then returns to block2902 to await another new event.
If the new event (block2902) is a request for content from a client114 (block2920), a security device (e.g., theCPU507 associated with the media server106 (FIG. 5)) determines if theclient114 is authorized (block2921). For example, themedia server106 may check to see that theclient114 has a valid EPK*2728 and a valid EFK*2716 in the table2725. If theclient114 is not authorized (block2921), themedia server106 sends a rejection response (e.g., a message) to the client114 (block2922) and control returns to block2902 to wait for another new event.
If the client is authorized (block2921), a possibly different security device (e.g., the smart card2730) decrypts the encrypted CWP(s)2722 stored on, for example, theHDD425, and determines the corresponding CW(s)2732 (block2923). Thesmart card2730 then encrypts the CW(s)2732 with the PK to form the ECW(s)2738 (block2924). Any of the other methods described above for obtaining ECW(s)2738 may additionally or alternatively be implemented. Themedia server106 obtains, based on the RID*2720 of theclient114, the EFK*2716 and the EPK*2728 from, for instance, the table2725 (block2926). Themedia server106 sends thecontent identifier2736 for the requested content, the ECW(s)2738, the EPK*2726 and the EFK*2716 to the client114 (block2928) and then transfers the requestedcontent2710 from theHDD425 to the client114 (block2930).
If the new event (block2902) is the receipt of another CWP2722 (block2940), a security device (e.g., the smart card2730) encrypts the received CWP2722 (block2942) and stores theencrypted CWP2722 in, for example, the HDD425 (block2944) and control returns to block2902 to await a new event. Any of the other methods described above for processing, handling and/or storing received CWP(s)2722 may additionally or alternatively be implemented.
If the new event (block2902) is receipt of a RID MSG2712 (block2960), a security device (e.g., theCPU507 associated with the media server106) updates the table2725 with the information received in the RID MSG2712 (block2962) and control returns to block2902 to await a new event.
If the new event (block2902) is receipt of aPK MSG2712 or a PEK MSG (block2970), a security device (e.g., the smart card2730) updates the encryption information (e.g., the PK or the PEK) stored in thesmart card2730 with the new and/or additional encryption information received in the PK MSG2723 or PEK MSG (block2972) and control returns to block2902 to await a new event.
The example process ofFIG. 30 begins with aclient114 waiting for a user of theclient114 to select a program for viewing (block3002). When a selection is made (block3002), theclient114 sends a content request (e.g., therequest2830 ofFIG. 28B) to a media server106 (block3004) and then waits to receive encryption information and thesuper-encrypted video2710 from the media server106 (block3006). Example encryption information includes acontent identifier2736 for the requested content, the ECW(s)2738 for the requested content, the EPK*2728 and the EFK*2716. If a timeout occurs while waiting for encryption information or super-encrypted video2710 (block3006), then an error message is displayed (block3007) and control returns to block3002 to await a new event.
When the encryption information and the super-encrypted video is received (block3006), a security device (e.g., the security chip2740) decrypts the received EPK*2726 and EFK*2716 (block3008). Thesecurity chip2740 then determines theCPCW2734 from the decrypted EFK*2716 and the content identifier (i.e., the seed) (block3010) and determines the CW(s)2732 from the decrypted EPK*2726 and the ECW(s)2738 (block3012). Thedecrypter2745 decrypts the receivedsuper-encrypted video2710 with the CPCW2734 (block3014) and then thedecrypter2750 further decrypts the resultant broadcast encrypted video with the CW(s)2732 (block3016). Theclient114 then decodes and displays the selected program for the user (block3018) and control returns to block3002 to await another selection.
The example process ofFIG. 31 begins with aHE102 waiting for a request to register anew media server106 or a new client114 (block3102). When a registration request is received (block3102), the CAS350 (FIG. 3) determines if thenew media server106 orclient114 is authorized to join the content delivery network100 (block3104). If themedia server106 or theclient114 is not authorized (block3104), theHE102 sends a rejection response to the requestingmedia server106 or client114 (block3105). Control returns to block3102 to wait for another registration request.
If themedia server106 orclient114 is authorized (block3104), theCAS350 determines if the registering device is a media server106 (block3106). If the registering device is a server (block3106), theCAS350 determines a PK, a FK and a PEK (block3108) and sends the PK and PEK to the smart card2730 (block3110).
TheCAS350 encrypts the FK of the home domain with the US (e.g., US2780 or US2785) associated with the RID (e.g., the RID2718 or the RID*2720) of the registering device and encrypts the PK of the home domain with the US (e.g., US2780 or US2785) associated with the RID of the registering device (block3112). TheCAS350 creates a RID MSG containing the encrypted FK and the encrypted PK (block3114) and sends the RID MSG to themedia server106 or, for a registeringclient114, to amedia server106 to which theclient114 is communicatively coupled (block3116). Control then returns to block3102 wait for another registration request.
VIII. Secure Content Transfer
As described above in connection with theexample DTH system100 ofFIG. 1, a content server106 (e.g., theexample IRD106 of FIGS.1 and/or4-6) may receive secure content (i.e., encrypted content) via the satellite/relay104 and/or theCDN110, and may securely exchange content with one ormore devices114 communicatively coupled to thecontent server106. In particular, encryption information (e.g., a CWP) and/or content is received by thecontent server106 and/or delivered to thecontent server106 as described above in Sections I-VI and in connection withFIGS. 1-26C. In a presently disclosed example, the devices114 (i.e., DRM clients114) support media files protected with any variety of digital rights management (DRM) technology such as, for example, Microsoft® Windows Media® DRM technology. In the illustrated example ofFIG. 1, thecontent server106 may transfer content to and/or from theDRM clients114.
FIGS. 32A and 32B illustrate example secure content transfers that may be implemented to securely transfer protected content between acontent server106 and aDRM client114. The illustrated example exchange ofFIG. 32A is begun when any variety ofcontent transfer initiation3205 is detected and/or determined. Examplecontent transfer initiations3205 include: when aDRM client114 is communicatively coupled to thecontent server106; when aDRM client114 sends a content request to thecontent server106; when a content transfer request and/or command is received at thecontent server106 from, for instance, theclient114, theHE102, theDRM license server118, via theInternet111, etc.; via any variety of menu and/or interface provided by thecontent server106 and/or theDRM client114 to a user of theDRM client114 and/or thecontent server106; a content management application executing on thecontent server106; etc. While the following discussion illustrates the flow of content to theDRM client114 from thecontent server106, persons of ordinary skill in the art will readily appreciate that the disclosed methods and apparatus may be used to transfer content from theDRM client114 to thecontent server106. In response to the detected and/or determinedcontent transfer initiation3205 and using any of a variety of communication paths and/or techniques discussed above, thecontent server106 sends a content transfer authorization request to theHE102 and, in particular, to the key server350 (i.e., CAS350 (FIG. 3)) as signified withreference numeral3210.
Based on the contents of the contenttransfer authorization request3210, thekey server350 identifies thecontent server106, theDRM client114 and the requested content (e.g., movie title). Thekey server350 also determines an entitlement key (KE) (i.e., an encryption key or secret) for the secure content transfer.
Thekey server350 sends to the DRM license server118 a contenttransfer license request3220, and the KE as indicated withreference numeral3225. Anexample license request3220 includes content identifier information (e.g., song title),DRM client114 identification information, payment information, etc. Thekey server350 also sends, as signified byreference number3230, DRM requirements for the requested license such as, for example, expiration date, number of playbacks, etc.
If the content transfer is allowable, the exampleDRM license server118 ofFIG. 32A: responds with a license that includes the KE and the requirements embedded within. In the example ofFIG. 32A the determination of whether the content transfer is allowable is made at theDRM license server118 to which thecontent server106 is communicatively coupled directly and/or indirectly. As discussed below, the determination may, additionally or alternatively, be made at thecontent server106 in an example where theDRM license server118 is implemented by and/or within thecontent server106. In the example ofFIG. 32, the license with the embedded KE is provided to thekey server350 as indicated withreference numeral3235 and is then forwarded via, for example, the satellite/relay104 as indicated withreference numeral3240 to thecontent server106. In particular, thekey server350, using methods discussed above, securely delivers the license with the embedded KE to thecontent server106. Additionally, thekey server350, using methods discussed above, encrypts the KE and securely delivers the encrypted KE to thecontent server106 as indicated withreference numeral3242. For instance, thekey server350 may encrypt the KE with the US2780 (FIG. 27) of thecontent server106. Thecontent server106, in turn provides the license with the embedded KE, as indicated with reference numeral3245, to theDRM client114. Alternatively, as discussed above in connection withFIGS. 24B and 25, instead of thekey server106 sending theencrypted KE3242 to thecontent server106, thekey server350 may send a seed that thecontent server106 may use in conjunction with a decrypted EFK2714 (FIG. 27) to determine the KE. Additionally or alternatively, as discussed above in connection withFIGS. 27 and 28A-B, thecontent server106 may select a random number as a seed number to use in conjunction with a decryptedEFK2714, for determining the value of KE for encrypting the transferred content, and which seed number thecontent server106 may send to thekey server350 for determining the value ofKE3225 to send to theDRM license server118. An example seed number that depends on the content itself is a hash of the content data and is, for example, computed by thecontent server106 and sent to thekey server350. Another example seed number that depends on the content is based on a number, such as, for example, a content identifier, known at thekey server350 and/or thecontent server106, so that a KE based on the seed is unique for each piece of unique content delivered by thecontent server106. Additionally and alternatively, the seed number used by thecontent server106 and thekey server350 may be based on the digital rights license terms, and/or a hash thereof, so that a KE based on the seed is unique for each category of licensed content delivered by thecontent server106. Even though a seed number based the content itself, on a content identifier and/or license terms may be the same atdifferent content servers106, a resulting KE will be unique due to the different US2780 and/or decryptedEFK2714 at eachcontent server106. Furthermore, if desired, the resulting KE value may be the same for two ormore content servers106 that are part of a same home network and which share a same decryptedEFK2714 value, i.e., the same FK distributed by theCAS350 as described above with reference toFIGS. 27-31.
In the illustrated examples ofFIGS. 1 and 32A-B, thecontent server106 uses the receivedencrypted KE3242 and/or a KE determined from a receivedseed3242 to encrypt the content to be transferred. For example, for super-encrypted content stored on the HDD425 (FIG. 5) thecontent server106 decrypts the super-encrypted content with the CPCW and CW as discussed above inFIG. 7, and then uses theencrypter527 and, more generally, the transport module520 (FIG. 5) to encrypt the content with the KE prior to transferring (i.e., sending) the encrypted content to theDRM client114. In another example, for content currently being streamed to themedia server106 via the satellite/relay104 and/or theCDN110, themedia server106 decrypts the received encrypted content with the CW and then encrypts the resultant unencrypted content with the KE before securely transferring (i.e., streaming or copying) the content to theDRM client114. As discussed below, the KE is provided to theDRM client114 such that theDRM client114 can correctly decrypt and view the securely transferred content. Only alicensed DRM client114 can extract the embedded KE used to encrypt the content.
In the illustrated example ofFIG. 32A, once thecontent server106 provides the license with the embedded KE3245 to theDRM client114, thecontent server106 and theDRM client114 transfer the content as shown withreference numeral3255. For example, thecontent server106 sends thecontent3255 that has been encrypted with the KE to theDRM client114 and, having received the license and the embedded KE3245, theDRM client114 is able to successfully decrypt the receivedencrypted content3255. TheDRM client114 may further store the received license3245 andencrypted content3255 for later decryption and playback, if permitted by the DRM requirements in the license3245.
A contenttransfer authorization request3210 may be sent not only in response to acontent transfer initiation3205, but additionally or alternatively to, for example, register and/or obtain a content transfer authorization for a current, new and/oradditional DRM client114. Moreover, a contenttransfer authorization request3210 could be used to obtain anencrypted KE3242 applicable to the transfer of one or more type(s) of content such as, for example, all broadcast television shows, a subscription movie channel, etc. In such examples, theencrypted KE3242 received by thecontent server106 may be valid for a period of time such as, for example, a month. Such time period enabledencrypted KE3242 may be periodically or aperiodically renewed by theHE102 and/or at the request of theDRM client114, thecontent server106 and/or a user. For such time period enabled encryptedKEs3242, when acontent transfer initiation3205 is detected, thecontent server106 may check to see if a validencrypted KE3242 is available for the content and/or content type to be transferred. If a validencrypted KE3242 is available, thecontent server106 encrypts the content to be transferred and transfers the encrypted content without first sending a contenttransfer authorization request3210 to theHE102. Further still, as discussed above, the license and embedded KE3245 provided to theDRM client114 may be valid for a period of time and may be periodically or aperiodically renewed by theHE102 and/or at the request of theDRM client114, thecontent server106 and/or a user. Such renewals include the issuance of a fresh license valid for an extended period and the same KE and license terms as the expired license, so that existing encrypted content available to theDRM client114 may continue to be viewed via theDRM client114 for the extended period. The same KE may be derived from a stored seed value, or a seed value based on the content itself, a content identifier and/or license terms may be regenerated in order to determine the same KE for license renewal. Furthermore, if a license is shared among many current and future content programs (such as all broadcast television shows, or all movies on a subscription movie channel) then a renewed license may be delivered to theDRM client114 on a periodic basis, allowing current and/or future programs to be delivered to thatclient114 under the protection of the original and renewed license.
Additionally or alternatively, thecontent server106 may provide to thekey server350 any variety of random number such as, for example, a seed that thecontent server106 uses to generate the key3225 and that thekey server350 uses to determine the key3225 that it provides to theDRM license server118. In this fashion, thekey server350 may skip the providing of theencrypted KE3242 to thecontent server106 illustrated in the example ofFIG. 32A.
FIG. 32B illustrates an alternative example secure content transfer that may be implemented to securely transfer protected content between acontent server106 and aDRM client114. The illustrated example exchange ofFIG. 32B proceeds similarly to the example exchange illustrated inFIG. 32A. Thus, the description of identical portions ofFIG. 32A will not be repeated here. Instead, the interested reader is referred back to the corresponding description ofFIG. 32A. To facilitate this process, like operations have been numbered with like reference numerals inFIGS. 32A and 32B.
In the illustrated example ofFIG. 32B, theDRM license server118 is able to communicate with theDRM client114 via theInternet111. Thus, thelicense server118 may send the license and the KE to theDRM client114 via theInternet111 as indicated withreference numeral3240. Having received theencrypted KE3242, determined the KE from aseed3242 and/or a previously received applicableencrypted KE3242, thecontent server106 may, as discussed above, encrypt the requested content and (pre-)transfer the encrypted content to theDRM client114 as indicated withreference numeral3255. In the illustrated example ofFIG. 32B, theDRM client114 will be unable to correctly decrypt theencrypted content3255 until theDRM client114 receives a valid content transfer license with the embedded KE from theDRM license server118.
It will be readily apparent to persons of ordinary skill in the art that alternative secure content transfer exchanges to those illustrated inFIGS. 32A and 32B may be implemented. For example, the license and key3240 may be delivered from theDRM license server118 and/or thekey server350 to thecontent server106 via theInternet111, thecontent server106 may determine the KE and communicate via theInternet111 with theDRM license server118 to obtain the license, the license and the KE may be sent separately from thekey server305 to thecontent server106, thecontent server106 may determine the KE and the DRM requirements and generate and/or sign the license, etc. Other examples abound.
In the illustrated example ofFIGS. 32A and 32B, theDRM license server118 and theDRM client114 may be implemented by any variety of devices capable of supporting any of a variety of DRM technologies.Example DRM clients114 include a PC, a portable media player, a media extender, a game playing system, etc.
While in the illustrated examples ofFIGS. 32A and 32B theDRM license server118 is implemented separately from thecontent server106, it will be readily apparent to persons of ordinary skill in the art that thecontent server106 may implement theDRM license server118 using any variety of methods and/or techniques. When thecontent server106 implements theDRM license server118, thecontent server106 generates and/or determines the license and embedded key3235 for the detectedcontent transfer initiation3205 and provides the same to theDRM client114 as indicated with reference numeral3245 inFIG. 32A. As described above, the license and embedded key3235 may be determined using an applicable new and/or previous KE and/or seed determined and/or obtained by thecontent server106 and/or determined and/or provided by thekey server350. As also described above, a seed may be a random number and/or be determined from the content itself, a content identifier and/or license terms using, for example, a cryptographic hash. Moreover, in such an example implementation, the contenttransfer authorization request3210 may be skipped if thecontent server106 is able to determine the authorization for the detectedcontent transfer initiation3205 based on a previously determined and/or received KE and/or seed. Furthermore, in such an example implementation where a license may be generated by a DRM license server associated with a content server, the content license may be renewed via the Internet by a remoteDRM license server118 in communication with the remotekey server350, where the license and embedded key as indicated withreference numeral3240 inFIG. 32B, may be determined using an applicable previous KE and/or seed determined and/or obtained by and/or from thecontent server106 and/or determined and/or provided by thekey server350.
FIGS. 33 and 34 illustrate flowcharts representative of example processes that may be carried out by thecontent server106 and thekey server350, respectively, to implement the example exchanges ofFIGS. 32A and 32B and/or, more generally, theexample system100 ofFIG. 1. The example processes ofFIGS. 33 and 34 may be executed by a processor, a controller and/or any other suitable processing device. For example, the example processes ofFIGS. 33 and 34 may be embodied in coded instructions stored on a tangible medium such as a flash memory, or RAM associated with a processor (e.g., theprocessor8010 shown in theexample processor platform8000 and discussed below in conjunction withFIG. 35). Alternatively, some or all of the example processes ofFIGS. 33 and 34 may be implemented using an ASIC, a PLD, a FPLD, discrete logic, hardware, firmware, etc. Also, some or all of the example processes ofFIGS. 33 and 34 may be implemented manually or as combinations of any of the foregoing techniques, for example, a combination of firmware and/or software and hardware. Further, although the example processes ofFIGS. 33 and 34 are described with reference to the flowcharts ofFIGS. 33 and 34, persons of ordinary skill in the art will readily appreciate that many other methods of implementing thecontent server106 and thekey server350, respectively, to implement the example exchanges ofFIGS. 32A and 32B and/or, more generally, theexample system100 ofFIG. 1 may be employed. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined. Persons of ordinary skill in the art will appreciate that the example processes ofFIGS. 33 and 34 may be carried out sequentially and/or carried out in parallel by, for example, separate processing threads.
The example process ofFIG. 33 begins with acontent server106 waiting to detect and/or determine a content transfer initiation (block3305). When a content transfer is initiated (block3305), thecontent server106 determines if an applicable encrypted KE is available for the content to be transferred (block3307). If an applicable encrypted KE is not available (block3307), thecontent server106 sends a content transfer authorization request to the key server350 (block3310) and waits to receive an encrypted KE or a seed from which the KE can be determined (block3315).
When the KE or the seed is received (block3315), a security device (e.g., thesecurity chip524 ofFIG. 5) decrypts the received encrypted KE using the US2780 or determines the KE from the seed and theEFK2714 and the US2780 (FIG. 27), respectively (block3320). For a transfer of content to theDRM client114, thecontent server106 encrypts the requested content with the KE (block3325) and starts sending the encrypted content to the DRM client114 (block3330). The transfer of the encrypted content continues until the transfer is complete, is cancelled or interrupted. Returning to block3315, if the KE or the seed has not been received, thecontent server106 continues waiting. If a timeout occurs while waiting for the KE or the seed (block3315), control returns to block3305 to await another content transfer initiation. Additionally, thecontent server106 may display any variety of content transfer error message when a timeout occurs.
Returning to block3307, if an applicable encrypted KE is available, a security device (e.g., thesecurity chip524 ofFIG. 5) decrypts the received encrypted KE using the US2780 or determines the KE from the seed and theEFK2714 and the US2780 (FIG. 27), respectively (block3320). For a transfer of content to theDRM client114, thecontent server106 encrypts the requested content with the KE (block3325) and starts sending the encrypted content to the DRM client114 (block3330). The transfer of the encrypted content continues until the transfer is complete, is cancelled or interrupted.
Having started sending the encrypted content to the DRM client114 (block3330), thecontent server106 determines if an applicable license for the transferred content was previously received (i.e., available) (block3332). If an applicable license is not available (block3332), thecontent server106 waits to receive a license with the embedded KE from the key server350 (block3335). When a license (e.g., thelicense3240 ofFIG. 32A) is received (block3335), thecontent server106 forwards the license with the embedded KE to the DRM client114 (block3340). Control returns to block3305 to wait for another transfer request. If the license is not received (block3335), thecontent server106 continues waiting. If a timeout occurs while waiting (block3335), thecontent server106 stops waiting for the license. Such a timeout may facilitate an exchange where theDRM license server118 provides the license and key to theDRM client114 via, for instance, the Internet111 (e.g., seeFIG. 32B).
Returning to block3332, if an applicable license is available, thecontent server106 forwards the license with the embedded KE to the DRM client114 (block3340). Control returns to block3305 to wait for another transfer request.
The example process ofFIG. 34 begins with thekey server350 waiting to receive a content transfer authorization request from a content server106 (block3405). When a content transfer authorization request (e.g., the contenttransfer authorization request3210 ofFIG. 32A or32B) is received (block3405), thekey server350 identifies thecontent server106 and the requestingDRM client114 from, for example, information contained in the transfer request (block3410). Thekey server350 then generates a KE for the secure content transfer (block3415), and identifies the requested content (block3420).
Thekey server350 sends a content transfer license request to the DRM license server118 (block3425), sends the KE to the DRM license server118 (block3430) and sends the requirements for the content transfer to the DRM license server118 (block3435). Thekey server350 encrypts and securely sends the KE to the content server106 (block3440). Alternatively, thekey server350 may send a seed from which the KE may be determined by the content server106 (block3440). Thekey server350 then determines, using any of a variety of techniques, if theDRM license server118 will provide the license with the embedded key to theDRM client114 via, for instance, the Internet111 (block3445). If theDRM license server118 will provide the license and key to the DRM client114 (block3445) it does so (block3447) and control returns to block3405 to wait for another transfer request.
If thekey server350 is to forward the license and key to the DRM client114 (block3445), thekey server350 waits to receive the license from the DRM license server118 (block3450). When a license is received from the DRM license server118 (block3450), thekey server350 forwards (i.e., sends) the license with the embedded key to the content server106 (block3455). Control returns to block3405 to wait for another transfer request. If the license is not received (block3450), thekey server350 continues waiting. If a timeout occurs while waiting for the license (block3450), thekey server350 stops waiting for the license. Control then returns to block3405 to wait for another transfer request. Additionally, thekey server350 may send an error message to thecontent server106 when a timeout occurs.
While the example flowcharts ofFIGS. 33 and 34 illustrate processes that may be carried out by thecontent server106 and thekey server350, respectively, to implement the example exchanges ofFIGS. 32A and 32B, persons of ordinary skill in the art will readily appreciate that the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, sub-divided, or combined to implement all or some of the alternatives discussed above in connection withFIGS. 32A and 32B. For example: (a) instead of thekey server106 sending theencrypted KE3242 to thecontent server106, thekey server350 may send a seed that thecontent server106 may use in conjunction with a decrypted EFK2714 (FIG. 27) to determine the KE; (b) thecontent server106 may receive, select and/or determine a seed number to use in conjunction with a decryptedEFK2714, for determining the value of KE for encrypting the transferred content, and thekey server350 may receive, select and/or determine the same seed number for determining the value ofKE3225 to send to theDRM license server118; (c) thekey server350 andDRM license server118 may renew a license where thekey server350 determines the encryption key that was used by thecontent server106 for an earlier content transfer, and theDRM license server118 renews the license, and sends it to theclient114 via theInternet111 or via thecontent server106, where the earlier license may have been generated by aremote license server118 and/or by thecontent server106; (d) theDRM license server118 may be implemented by and/or within thecontent server106. Other examples abound as may be recognized by persons of ordinary skill in the art.
IX. Example Processor Platform
FIG. 35 is a schematic diagram of anexample processor platform8000 that may be used and/or programmed to carry out the example processes illustrated inFIGS. 8-10 to implement the example HE102 ofFIGS. 1-3, the example process illustrated inFIG. 15 to implement the example methods illustrated inFIGS. 13 and 14, the example processes illustrated in FIGS.17A-C to implement the example exchange ofFIG. 16, the example processes illustrated in FIGS.19A-C to implement the example exchange ofFIG. 18, the example processes illustrated in FIGS.22A-C and23A-C to implement the example exchange ofFIGS. 20 and 21, respectively, the example processes illustrated in FIGS.26A-C to implement the example exchanges ofFIGS. 24A and 24B, the example processes illustrated inFIGS. 29-31 to implement the example implementation ofFIG. 27 and/or the example exchange of FIGS.28A-B, and/or the example processes illustrated inFIGS. 33-34 to implement the example secure content transfer ofFIGS. 32A and 32B. For example, theprocessor platform8000 can be implemented by one or more general purpose microprocessors, microcontrollers, etc.
Theprocessor platform8000 of the example ofFIG. 35 includes a general purposeprogrammable processor8010. Theprocessor8010 executes codedinstructions8027 present in main memory of the processor8010 (e.g., within a random access memory (RAM)8025). Theprocessor8010 may be any type of processing unit, such as a microprocessor from the Intel®, AMD®, IBM®, or SUN® families of microprocessors. Theprocessor8010 may carry out, among other things, the example processes illustrated inFIGS. 8-10,FIG. 15, FIGS.17A-C, FIGS.19A-C, FIGS.22A-C, FIGS.26A-C,FIGS. 29-31 and/orFIGS. 33-34.
Theprocessor8010 is in communication with the main memory (including a read only memory (ROM)8020 and the RAM8025) via abus8005. TheRAM8025 may be implemented by dynamic random access memory (DRAM), Synchronous DRAM (SDRAM), a hard disk drive, flash memory and/or any other type of RAM device. TheROM8020 may be implemented by flash memory and/or any other desired type of memory device. Access to thememory8020 and8025 is typically controlled by a memory controller (not shown) in a conventional manner.
Theprocessor platform8000 also includes aconventional interface circuit8030. Theinterface circuit8030 may be implemented by any type of well-known interface standard, such as an external memory interface, serial port, general purpose input/output, etc.
One ormore input devices8035 and one ormore output devices8040 are connected to theinterface circuit8030. Theinput devices8035 andoutput devices8040 may be used, for example, to implement interfaces between theHE102 and theCDN110, theHE102 and theIRDs106, theCDN110 and theIRDs106, and/or between components, devices and/or circuits implementing theHE102, theCDN110 and/or theIRDs106.
Although certain example methods, apparatus and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the appended claims either literally or under the doctrine of equivalents.