Media player embodiments and secure playlist packaging

A system identifies a playlist comprising at least one reference to content. The system provides a digital signature to the playlist. The digital signature links the playlist to a creator of the playlist. The system authenticates an application rendering the content using the digital signature. The system receives a command to render the playlist using the application.

BACKGROUND

Conventional computer systems allow for the production and distribution of multimedia data, including video, audio and image data. Such production is increasing at a phenomenal rate due to the growing popularity of the Internet, the growing affordability of personal computers capable of efficiently processing multimedia data to provide a pleasing experience for users, as well as the fact that multimedia data is far superior to text-only data in conveying content-rich information.

People now access and use multimedia data in numerous ways. One way that people access multimedia data is over a network. For example, people using web browsers on personal computers now access multimedia data by surfing the World Wide Web via the Internet. Countless numbers of content providers link multimedia data to web pages accessible by people using web browsers. Today, persons using web browsers can access a web page from a web server operated by a content provider to view video clips, listen to audio clips, or view images made available by the content provider.

When a client requests a piece of media content such as digital video, audio, or some other sampled content from a server, the client typically provides the global address of the content in the form of a Uniform Resource Locator (URL). A server then accesses the content and sends or “streams” it to the client as a continuous data stream.

There are various file formats for streaming media content and composite media streams. Regardless of the streaming file format used, an individual data stream may contain a sequence of digital data sets or units. The units can represent an image, sound, or some other stimuli that is perceived by a human to be continuously varying. The client can render the units individually, or in sequence, to reproduce the original stimuli. For example, a video data stream includes a sequence of digitally specified graphics frames that are rendered in sequence to produce a moving picture.

A playlist file, for conventional systems, can contain information such as whether to play certain pieces of media content more than one time, which pieces of media content to play, the order in which to play referenced media content, and the like. Playlist files also can contain references to one or more media streams and describe how pieces of media are to be combined. Playlists do not contain the actual media data, but rather references to the media data. As a result, playlist files are typically small, generally only containing text, and are generally easy and computationally inexpensive to modify. References to a single piece of media may appear in many playlist files.

Conventional playlist files have the effect of combining several individual pieces of media content into one single complex piece of content, and they are important to providers of streaming media. They allow content providers to combine advertisements with other content, and therefore build a business based on advertising revenue. They allow Internet radio stations to create a playlist of broadcast songs. They also allow providers to brand their content by attaching previews or radio-station identifiers before or after the content.

Conventional playlists are implemented either on a client or on a server such as when the client implements a playlist, the playlist is typically downloaded from a server such as a Web server, a file server, and/or the like. The client interprets the playlist file to present a series of requests to one or more servers to access at least a portion of the content represented in the playlist. A server is generally not aware whether the client is requesting content based on a corresponding reference in the currently executed client-side playlist file or whether the client obtains the reference from a source other than a playlist. This is because, from the server's perspective, use of a client-side playlist is indistinguishable from a client communicating a number of non-playlist generated requests to the server to play several different pieces of content one after the other.

SUMMARY

Conventional technologies for securing (e.g., providing security with respect to) playlists and/or corresponding content referenced by the playlists suffer from a variety of deficiencies. In particular, conventional technologies related to playlists are limited in that conventional technologies do not prevent viewers of content, for example, videos in the playlist, from bypassing advertisements when viewing videos within the playlist.

Typically, conventional playlists contain both videos and advertisements with the intent that viewers of the playlist will be exposed to advertisements when viewing the videos as referenced within the playlists. Advertisers pay to have advertisements placed within playlists. Such advertisers therefore want to ensure that viewers of the playlists view the advertisements when playing back content as specified by the playlist.

As mentioned above, conventional technologies have been used to embed or integrate the advertisements into corresponding videos to ensure that advertisements are viewed by a corresponding client that downloads the content for viewing. However, conventional playlists can be easily modified or created to contain references only to URLs of videos and not URLs of advertisements.

Also, technologically advanced viewers may attempt to create their own playlists from video references obtained from playlists. Conventional technologies do not provide the security to ensure the integrity of a playlist, nor do they prevent persons from utilizing references in the conventional playlist to bypass advertisements in a playlist for purposes of viewing only desirable video content.

Embodiments disclosed herein significantly overcome prior art deficiencies and provide a system, method, apparatus, etc. to execute or implement a packaging process that protects the integrity of one or more playlists and/or corresponding content by providing a bi-directional binding between the content as specified in a corresponding playlist and a creator of the playlist. Such embodiments can be used to ensure that the video content cannot be played outside the context of executing a corresponding playlist created by a publisher or author.

Additionally, embodiments herein can provide real time authentication of a video manager (e.g., a decryption process) and a corresponding media player application to ensure that only authorized video rendering applications are able to play the video(s) as specified within the playlist.

It should be noted that the use of the term content refers to data such as video data, audio data, etc. Example embodiments disclosed herein that reference video as an example of multimedia content are not intended to be limiting as embodiments herein can be applied to any type of content.

During creation of a playlist according to embodiments herein, a certification authority provides a credential to the playlist creator. For example, a certification authority provides a registered user (e.g., playlist creator) a corresponding public key and a private key. Thus, the certification authority can be an entity that issues digital certificates for use by parties such as the playlist creator.

In one embodiment, the playlist creator is also “tied” to an application that is capable of rendering the video for a corresponding viewer. For example, a playlist can contain one or more URLs referencing videos and advertisements. The videos (e.g., multimedia content as referenced) in the playlist can be encrypted via the playlist creator and/or use of a policy server.

In one embodiment, the policy server aids in security management. For example, the policy server supports a policy that is used during an encryption process for encrypting the videos as specified by references in the playlist. A policy can be, in effect, a rule or set of rules that are applied to the playlist. A policy is added to the encrypted videos allowing anonymous user access. The policy can require that the media player application (for viewing of the multimedia content), and the video manager (on which the media player application operates) be authenticated. In such an embodiment, the policy server provides a content encryption key that is processed with a public key contained within the credential provided to the playlist creator. Additionally, the policy server can return a content decryption key that is encrypted using the public key of the video manager. The content playback manager (e.g., video manager) maintains the corresponding private key to decrypt the encrypted key for decrypting content as referenced by pointers in the playlist.

In one embodiment, a digital signature can be added and/or associated with the playlist. Additionally, in an example embodiment, the processes as described herein can compute a value (e.g. a hash) for each encrypted video. The computed hash values for the video content can be embedded into the digital signature or included in the playlist.

In an example embodiment, since the advertisements may change depending on a respective user utilizing a playlist to play back multimedia content, hashes for certain referenced content such as advertisements may not be included in the digital signature, even though the playlist may include a number of URLs (e.g., URLs to advertisements) that are used when creating a corresponding digital signature associated with the playlist.

When attempting to execute the playlist, a respective software process can be used to verify the digital signature associated with the playlist. If the content as specified by the playlist is downloaded in real time over the network, the digital signature ensures that the URLs in the playlist haven't been modified by unauthorized parties. If the video has been downloaded and stored locally, the digital signature ensures that the hash of the (encrypted) video matches with the hash (of the encrypted video) that is embedded in the digital signature of the playlist.

Software processes associated with a media player can be used to communicate with a policy server to authenticate the media player application. The video manager verifies signature information associated with the media player application, and returns the signature information to the policy server. The policy server then verifies that the media player application matches the application specified in the policy.

The policy server also can verify that the version of the video manager is an acceptable version. For example, if the version of the video manager is determined to be an acceptable version by the policy server, the policy server can encrypt a content key with a video manager version key associated with the video manager (e.g., the video manager version key can be stored in the video manager), providing implicit authentication of the video manager. This real time authentication of the video manager and the application ensures that only desired application(s) are able to play the video and/or corresponding multimedia content. The video manager then decrypts the content key, and processes the content key with a public key associated with the digital signature to obtain one or more video decrypting keys. The one or more video decrypting keys can then be used to decrypt the videos (as specified by the playlist). Accordingly, the media player application operating on the video manager can play the video content obtained from a local or remote source.

If any of the validation steps fail, then the playlist is not rendered within the media player application operating on the video manager to playback the multimedia content as specified by the playlist.

Other embodiments disclosed herein include any type of computerized device, workstation, handheld or laptop computer, or the like configured with software and/or circuitry (e.g., a processor) to process any or all of the method operations disclosed herein. In other words, a computerized device such as a computer or a data communications device or any type of processor that is programmed or configured to operate as explained herein is considered an embodiment disclosed herein.

Other embodiments disclosed herein include software programs to perform the steps and operations summarized above and disclosed in detail below. One such embodiment comprises a computer program product that has a computer-readable medium including computer program logic encoded thereon that, when performed in a computerized device having a coupling of a memory and a processor, programs the processor to perform the operations disclosed herein. Such arrangements are typically provided as software, code and/or other data (e.g., data structures) arranged or encoded on a computer readable medium such as an optical medium (e.g., CD-ROM), floppy or hard disk or other a medium such as firmware or microcode in one or more ROM or RAM or PROM chips or as an Application Specific Integrated Circuit (ASIC). The software or firmware or other such configurations can be installed onto a computerized device to cause the computerized device to perform the techniques explained as embodiments disclosed herein.

Note also that embodiments herein include a computer readable media comprising a data structure for a playlist, the data structure comprising: a playlist including at least one reference to content; a signed certificate including security information for use by a media player application to render the content referenced by the playlist; and a digital signature for use by the media player application to verify the playlist prior to playback of content referenced by the playlist.

It is to be understood that the system disclosed herein may be embodied strictly as a software program, as software and hardware, or as hardware alone. The embodiments disclosed herein, may be employed in data communications devices and other computerized devices and software systems for such devices such as those manufactured by Adobe Systems Incorporated of San Jose, Calif.

DETAILED DESCRIPTION

FIG. 1is an example diagram illustrating creation and playback of content according to embodiments herein. In general, computer system110-1can be operated by a corresponding user (such as a creator, publisher, author, etc.) to create one or more media files (e.g., so-called playlists) via playlist manager187. As will be discussed in due course below, computer system110-2enables playback of content as specified in a corresponding playlist120via content playback manager125(i.e., a video manager) and/or media player application135.

More specifically, to provide security with respect to a corresponding playlist120and/or content associated with a publisher, the publisher (e.g., one or more entities) associated with computer system110-1obtains a private key186and public key185from certification authority190. Distribution of the public key185and the private key186can be contingent upon the publisher registering to create one or more playlists120with an appropriate authority distributing software such as playlist manager187.

Based on information provided by a corresponding publisher, each playlist120produced by the publisher can specifically define a media playback experience. For example, a given playlist120can specify playback details such as what content to play to a user on playback, an order of when to play content as specified in the playlist to the user, which advertisements to play during playback, timing, animations, transitions, etc. In other words, the playlist120can include references (e.g., URLs, pointers, etc.) to locally or remotely stored content155(e.g., content155-1, content155-2, content155-3, etc.) such as playable media content retrieved locally from computer system110-2or retrieved by computer system110-2from a remote source and played back on media player application135. Accordingly, when executed, the playlist120can specify content from one or more different local or remote sources.

As discussed below, one way to reference content in a playlist is use of URLs that point to a location of corresponding content in a network although any suitable method for pointing to content can be used.

In one embodiment, playlists are created according to a markup language (e.g., an XML-based format such as Synchronized Multimedia Integration Language) in which tags are assigned to different matter included in the playlist120. A corresponding media player uses the tagged information in the playlist120to interpret what content to play back and how to present it to a viewer.

Via playlist manager187, each playlist120can include a signed certificate181associated with the publisher that creates the playlist120. For example, the playlist manager187can create a signed certificate181associated with the publisher for inclusion and/or associated with the playlist120.

The computer system110-1creates the signed certificate181via first applying a hash function to the publisher's public key185to produce a resulting hash value. The computer system110-1then applies a private key (e.g., Adobe's private key) associated with content playback manager125and/or media player application135to the resulting hash value (e.g., hashed public key value). As will be discussed below, the content playback manager125has Adobe's corresponding public key for decrypting signed certificate181to obtain the publisher's hashed public key value and/or the public key185associated with the publisher.

In addition to creation and inclusion of the signed certificate181in playlist120, the publisher at computer system110-1can create and include digital signature information182associated with the playlist120. For example, in one embodiment, the publisher creates the digital signature182by applying a hash function to the playlist120and, thereafter, encrypting the resulting value (i.e., the hashed playlist value) with private key186associated with the publisher. As further discussed below, content playback manager125can be encoded to include Adobe's corresponding public key to verify the signed certificate181during playback. Accordingly, creation of a digital signature for inclusion in a given playlist can include applying a private key186of the playlist creator to a calculated hashcode value derived from applying a hash function to the given playlist120.

Note that both playlist manager187and content playback manager125can have access to (or be encoded with) the same hash functions. Also, the playlist manager187, the content playback manager125, and the media player application135may be combined as a single piece of software that supports creation as well as playback of playlists. Of course, the playlist manager187and the content playback manager125can be maintained as separate pieces of code for execution on respective computer systems.

The above disclosure describes creation of a playlist120for defining a viewing experience. Note that playlist manager187can provide an added level of playback security with respect to the playlist120by encrypting content155(e.g., content155-1, content155-2, content155-3, etc.) referenced by the playlist120. For example, the playlist manager187can encrypt content155-1via use of a first encryption key; encrypt content155-2via use of a second encryption key; encrypt content155-3via use of a third encryption key; and so on.

Note that certain content such as advertisements as referenced in the playlist120may not be encrypted. Accordingly, the playlist can include references to both encrypted and unencrypted types of content. As an added level of security, note that the playlist manager187can apply a hash function to each segment content155and include such a hashcode value in the playlist120. Upon playback by the media player application135, the content playback manager125can verify the integrity of the content segments by applying the hash function to the retrieved content (either the encrypted or unencrypted content) and checking that a hashcode value produced at the content playback manager125matches the hashcode value included in the playlist120.

The playlist manager187provides notification to computer system110-3that the content155has been encrypted. For example, in yet further embodiments, the playlist manager187notifies computer system110-3(e.g., a server) of information that can be used to generate a decryption key to decrypt encrypted content155. For example, as mentioned above, the playlist manager187can encrypt content such as content155-1via an encryption key. Such a key can be selected or provided by the publisher. The publisher has a corresponding decryption key that can be used to decrypt the encrypted content155-1. Each segment of content155can be encrypted using a different encryption key.

In this example embodiment, the playlist manager187applies a hash function to its public key185to produce a hashed public key value. The hashed public key value is XOR'ed with the corresponding decryption key (which will be used for decrypting encrypted content155) to produce a resulting VALUE. In other words, to produce VALUE1, the playlist manager187XORs the hashed public key value of the publisher with the decryption key for decrypting content155-1; to produce VALUE2, the playlist manager187XORs the hashed public key value of the publisher with the decryption key for decrypting content155-2; to produce VALUE3, the playlist manager187XORs the hashed public key value of the publisher with the decryption key for decrypting content155-3; and so on.

The playlist manager187notifies the policy server145of the produced VALUE for each segment of content155that is encrypted. As mentioned above, this process is repeated for each encrypted segment of content. As will be discussed below in more detail, the content playback manager125and/or media player application135will obtain the appropriate VALUE from policy server145to produce a decryption key for decrypting and playback of content155.

As mentioned above, computer system110-2enables playback of media content. For example, computer system110-2can include media player application135for displaying content155as specified by a corresponding playlist120. The playlist120provides a mapping of content that is to be played by acknowledgment to a viewer. Among other functions, content playback manager125enables execution of a playlist120(e.g., a file referencing playable content) by the media player application135.

Note that computer system110-2can be configured to retrieve a corresponding playlist120(e.g., a file) from different sources such as RSS feeds or other distribution points such as remote websites over the Internet. The publisher can make the playlist120available via storage of the playlist in a publicly accessible repository over a network.

Prior to execution of the digitally signed playlist120by a content playback manager125and/or media player application135, the content playback manager125can verify the authenticity of the playlist120and that it has not been modified since being created by the publisher. For example, the content playback manager125can apply Adobe's public key (which can be encoded in the content playback manager125) to decrypt the signed certificate181in the playlist120. Decryption of the signed certificate181produces a hash code value of the publisher's public key185and/or the value of the publisher's public key185.

To verify integrity of the playlist120, the content playback manager125applies a hash function (e.g., the same hash function as applied by the playlist manager187to the playlist120) to the playlist120to produce a hashcode value. The content playback manager125also applies a public key185to the digital signature information182to produce a decrypted digital signature value. The content playback manager125then verifies whether the produced playlist hashcode value equals the decrypted digital signature value. If so, the playlist120is authenticated and can be played via media player135. Otherwise, the content playback manager125prevents playback of the playlist120. Providing the digital signature information182along with the playlist120ensures that unauthorized persons have not tampered with the playlist120between a time of creating the playlist120and a time of execution of the playlist120by the computer system110-2.

Assume in this example that the content playback manager125passes the above verification test. The content playback manager125then attempts playback of content as specified in the playlist120to a corresponding viewer. For example, the content playback manager can initiate retrieval of encrypted and/or unencrypted content155as specified by corresponding pointers (e.g., URLs) in the playlist120.

In one embodiment, the content playback manager125applies an appropriate hash function (e.g., the same hash function that the playlist manager187used to produce the hashcode values for the content155as discussed above) to the retrieved content155. If the hashcode value for corresponding content155matches the hashcode value as produced by the playlist manager187as discussed above (a value of which can be included in the playlist120), then the content playback manager125enables playback of the content155. Accordingly, upon playback of the playlist120, the content playback manager125can retrieve a segment of content155as specified by a corresponding URL, apply a hash function to the segment of content, and play back decrypted content155as discussed above if there is an appropriate match of the newly produced hash value with a corresponding hash value included in the playlist120for that content155. Thus, if the content as specified by a URL (in a playlist120) changes over time, the content playback manager125and/or media player application135can prevent playback of the content.

As mentioned above, note that each segment of content as specified in the playlist120need not be hashed and included in playlist120. For example, advertisement content, real-time data feeds of data, etc. as specified by references in the playlist120need not be hashed and included in the digital signature information182. This enables the media player application135to play back the content as specified by the playlist120even though such content may change over time or reference content has not yet been produced.

For encrypted content155, the content playback manager125can communicate with policy server145to obtain information for decrypting the content155. As an example, assume that the content playback manager125attempts to initiate playback of content155-1as specified by URL1. In such a case, the content playback manager125notifies the policy server145of the desire to playback content155-1(as specified by URL1) for a respective viewer associated with media player135. In such an instance, the policy server145searches for the appropriate VALUE (e.g., VALUE1) associated with content155-1and forwards VALUE1 to content playback manager125via a message150.

VALUE1 (and each of other the other values) can be encrypted by policy server145and decrypted with a key known by the content playback manager125.

In one embodiment, to reproduce a decryption key for decrypting content155-1, the content playback manager125XORs VALUE1 (e.g., the information obtained from policy server145) with a hash value of the publisher's public key185. Recall that the content playback manager125can obtain the hash value of the publisher's public key185by applying the Adobe public key included in the content playback manager125to the signed certificate181received along with the playlist120. The resulting decryption key can then be used to decrypt content155-1. In a similar way, the content playback manager125can communicate with the policy server to obtain VALUE2, VALUE3, etc. to produce decryption keys for content155-2, content155-3, etc.

As previously discussed, the content playback manager125(e.g., video manager) and the media player application135operate on a computer system110-2(e.g., personal computer system, workstation, etc.).

Playback of the playlist120can be contingent upon a number of pre-conditions that must be met. For example, prior to play back of content as specified by playlist120, the content playback manager125can communicate with a policy server145to authenticate the content playback manager125and/or the media player application135. Proper authentication of the content playback manager125and/or the media player application135enables the computer system110-2to play back content as specified by the playlist120. Without proper authentication, the content playback manager125and/or media player application135can prevent playback content as specified in the retrieved playlist120.

For example, in one embodiment, the content playback manager125associated with computer system110-2supports communication with the policy server145to authenticate the content playback manager125and/or the media player application135. As previously discussed, the policy server145can operate at a remote location over a network (e.g., the Internet) such as on computer system110-3. In such an instance, the computer system110-2includes resources enabling communication over one or more networks.

The content playback manager125can verify signature information associated with the media player application135, and return the signature information to the policy server145. The policy server145verifies that the media player application135matches the media player application135specified in the policy.

In addition to verifying that the media player application135is authorized to view content155or playback playlist120, the policy server145can also verify whether the version of the content playback manager125is an acceptable software version for playing the multimedia content as specified by references (e.g., URLs) in the playlist120.

Note that although computer system110-1can be configured to provide functionality associated with playlist manager187, computer system110-2can be configured to provide functionality associated with content playback manager125, and computer system110-3can be configured to provide functionality associated with policy server145, note that each of the different functionalities as described herein can be distributed and/or provided by other resources in a communication network.

FIG. 2is a block diagram illustrating an example architecture of a computer system110(e.g., either computer system110-1or computer system110-2) that executes, runs, interprets, operates or otherwise supports execution of all or portions of media manager application240-1(e.g., software code including playlist manager application187-1and/or content playback manager application125-1) to carry out embodiments as described herein. The computer system110may be any type of computerized device such as a personal computer, workstation, portable computing device, console, laptop, network terminal or the like. As previously discussed, playlist manager application187-1enables creation of playlists and related processes. Content playback manager application125-1enables playback of content and related processes.

An input device116(e.g., one or more user/developer controlled devices such as a keyboard, mouse, etc.) couples to processor113through I/O interface114, and enables a user108to provide input commands, and generally control a graphical user interface that the media manager application240-1provides on the display130for creation and/or playback of playlists.

As shown in this example, the computer system110includes an interconnection mechanism111such as a data bus or other circuitry that couples a memory system112, a processor113, an input/output interface114, and a communications interface115. The communications interface115enables the computer system110to communicate with other devices (i.e., other computers) over one or more different types of networks.

The memory system112can be any suitable type of computer readable medium, and in this example, is encoded with media manager application240-1, which include a combination of playlist manager application187-1and content playback manager125-1as explained herein. Any or all portions of the media manager application240-1may be embodied as software code such as data and/or logic instructions (e.g., code stored in the memory or on another computer readable medium such as a removable disk) that supports processing functionality according to different embodiments described herein.

During operation of the computer system110, the processor113accesses the memory system112via the interconnect111in order to launch, run, execute, interpret or otherwise perform the logic instructions associated with media manager application240-1. Execution of the media manager application240-1in this manner produces processing functionality as identified by media manager process240-2. In other words, the media manager process240-2represents one or more portions or runtime instances of the media manager application240-1(or the entire media manager application240-1) performing or executing within or upon the processor113in the computerized device110at runtime. The playlist manager process187-2represents one or more portions or runtime instances of the playlist manager application187-1(or the entire playlist manager application187-1) performing or executing within or upon the processor113in the computerized device110at runtime. The content playback manager process125-2represents one or more portions or runtime instances of the content playback manager application125-1(or the entire content playback manager application125-1) performing or executing within or upon the processor113in the computerized device110at runtime.

It is noted that example configurations disclosed herein include the media manager application240-1itself or portions thereof (i.e., in the form of un-executed or non-performing logic instructions and/or data). The media manager application240-1may be stored on a computer readable medium (such as a floppy disk), hard disk, electronic, magnetic, optical, or other computer readable medium. The media manager application240-1may also be stored in a memory system112such as in firmware, read only memory (ROM), or, as in this example, as executable code in, for example, Random Access Memory (RAM). In addition to these embodiments, it should also be noted that other embodiments herein include the execution of the media manager application240-1in the processor113as the media manager process240-2. Those skilled in the art will understand that the computer system110may include other processes and/or software and hardware components, such as an operating system not shown in this example.

A display130need not be coupled directly to computer system110. For example, the media manager application240-1can be executed on a remotely accessible computerized device via the communication interface115. In this instance, a graphical user interface may be displayed locally to a user108(e.g., a publisher or user attempting to playback content as specified in a playlist) of the remote computer, and execution of the processing herein may be client-server based.

Further details of configurations explained herein will now be provided with respect to a flow chart of processing steps that show the operations disclosed herein to perform the media manager process240-2.

FIG. 3is an embodiment of the steps performed by the media manager process240-2when it identifies a playlist120comprising at least one reference to content155.

In step200, the playlist manager process187-2of media manager process240-2identifies a playlist120comprising at least one reference to content155. As previously discussed, the playlist120is comprised of references to URLs that point to content155. The content155may include, but is not limited to, videos, audio, etc. For example, the playlist120may contain a reference to a URL that points to a (video) episode of a sitcom. The URL (i.e., pointer) identifies a web site of the TV station that supplies the sitcom. Thus, playback of the playlist120enables fans of the sitcom to view a particular episode of the sitcom whenever it is convenient. Additionally, the playlist120may include other URLs that reference to additional videos that exists on the web site of the TV station, for example, additional ‘behind the scenes’ video, such as interviews with the actors of the sitcom. In an example embodiment, the playlist120containing URLs may have the following format:

In step201, the playlist manager process187-2of media manager process240-2provides a digital signature to the playlist120. As previously discussed, the digital signature information182links the playlist120to a creator of the playlist120. The playlist120is digitally signed to ensure that, when the playlist120is rendered, the integrity of the playlist120has not been tampered with. The creator of the playlist120has a credential that is associated with a certification authority. This same certification authority can be embedded in the application135in a tamper resistant manner. Thus, the content playback manager125-2can ensure that only authorized media player applications135are able to render the playlist120.

In step202, the content playback manager process125-2of media manager process240-2authenticates an media player application135attempting to render content as specified by the playlist120and corresponding referenced content155using the digital signature information182associated with the playlist120. Additionally, the content playback manager process125-2can initiate communication with the policy server145to authenticate the content playback manager125and/or the media player application135. This can prevent any unauthorized applications135from rendering the playlist120.

In step203, the content playback manager process135-2of media manager process240-2receives a command to render the content referenced in the playlist120using the media player application135. This command can be generated in response to a respective user requesting to play the playlist120. As previously discussed, the command can be received based on input with respect to a graphical user interface. In one embodiment, prior to playback of the playlist120, the media manager process240-2performs authentication between the policy server145and the content playback manager125and/or the application135. The media manager process240-2also can verify the integrity of the playlist120before playing the content155-1.

FIG. 4is an embodiment of the steps performed by the playlist manager process187-2when it identifies a playlist120comprising at least one reference to content155-1.

In step204, the playlist manager process187-2of media manager process240-2identifies a playlist120comprising at least one reference to content155. In an example embodiment, the playlist120may contain URLs that point to an assortment of videos, audio segments, etc.

In step205, the playlist manager process187-2of media manager process240-2identifies content155in the playlist120as an advertisement. In an example embodiment, a playlist120may contain URLs pointing to videos along with URLs pointing to advertisements. The playlist manager process187-2protects the integrity of the playlist120to ensure that users108view the advertisements along with the videos in the playlist120. Advertisers pay to have advertisements placed in the playlist120, and want those advertisements viewed by users playing the playlist120. For example, a playlist120for a radio station may include references to URLs containing songs. Interspersed between the songs (in the playlist120) may be references to URLs containing (audio) advertisements. The security features as described herein prevent a user from avoiding playback of the advertisements.

Alternatively or additionally, in step206, the playlist manager process187-2of media manager process240-2encrypts content155referenced in the playlist120using a policy carried out by computer systems110. In an example embodiment, the playlist manager process187-2encrypts some or all of the content specified within a playlist120. The playlist120may also contain advertisements. However, the playlist manager187may not encrypt the advertisements since these may change depending on the market in which the playlist120is rendered. For example, a playlist120containing videos and local advertisements will require different advertisements for different geological regions in which the playlist120is rendered. A playlist120containing advertisements for a car repair shop in San Francisco is only effective in the San Francisco area. When that playlist120is played in Miami, the advertisements in the playlist120may be changed to point to URLs for a real estate company in the Miami area.

FIG. 5is continuation ofFIG. 4of an embodiment of the steps performed by the playlist manager process187-2when it encrypts at least one content155-1in the playlist120using a policy.

In step207, the playlist manager process187-2of media manager process240-2provides a policy allowing anonymous user access to at least one content155-1. In an example embodiment, the policy allows anonymous access to rendering the videos within the playlist120as long as the authentication between the content playback manager125and the policy server145are successful. For example, a user108may go a video rendering web site to view video clips. The video rendering web site may have an acceptable version of a content playback manager125and media player application135. As long as the content playback manager125and media player application135authenticate with the policy server145, the user108may view the videos on the video rendering web site without signing on to that web site. The content playback manager process125-2authenticates the integrity of the playlist120, and authenticates the content playback manager125and/or media player application135.

Alternatively, in step208, the playlist manager process187-2of media manager process240-2provides a policy requiring authentication of an media player application135capable of rendering the content155-1. In an example embodiment, the policy requires that the media player application135and the content playback manager125are authenticated before the video in the playlist120can be rendered using the media player application135.

In step209, the playlist manager process187-2of media manager process240-2provides an identification of the media player application135capable of rendering at least one content155-1within the policy. The policy used to encrypt the videos in the playlist120provides the identification of the media player application135that is to be authenticated.

Alternatively, in step210, the playlist manager process187-2of media manager process240-2computes an encryption key using a credential provided to a creator of the playlist120. The encryption key is used to encrypt the content155-1. In an example embodiment, the encryption key is provided by the policy server145. The encryption key is then XOR'd with a public hash key to produce a video encrypting key. The public hash key is contained within the credential that is provided to the creator of the playlist120. Each of the videos in the playlist120is then encrypted using the video encrypting key.

FIG. 6is an embodiment of the steps performed by the playlist manager process187-2when it provides a digital signature to the playlist120.

In step211, the playlist manager process187-2of media manager process240-2provides a digital signature to the playlist120. The digital signature links the playlist120to a creator of the playlist120. The playlist120is digitally signed to ensure that, when the playlist120is rendered, the integrity of the playlist120has not been altered. The creator of the playlist120has a credential that is associated with a certification authority. This same certification authority is embedded in the media player application135in a tamper resistant manner. Thus, the playlist manager process187-2ensures that only authorized media player applications135render the playlist120.

In step212, the playlist manager process187-2of media manager process240-2computes a value associated with content155-1in the playlist120. In an example embodiment, the playlist120is digitally signed with a digital signature. At the time the digital signature is computed, the playlist manager process187-2also computes a hash of each encrypted video.

In step213, the playlist manager process187-2of media manager process240-2embeds the value in the digital signature. After computing a hash of each of the previously encrypted videos, the playlist manager process187-2embeds the hash in the digital signature. In an example embodiment, hashes of the advertisements within the playlist120are not included in the digital signature since the advertisements are expected to change over the course of time of the existence of the playlist120.

Alternatively, in step214, the playlist manager process187-2of media manager process240-2computes the digital signature using a credential provided to a creator of the playlist120. The creator of the playlist120has a credential that is associated with a certification authority. This same certification authority is embedded in the media player application135in a tamper resistant manner. Thus, the playlist manager process187-2ensures that only authorized media player applications135render the playlist120. The credential is also used to compute the digital signature.

FIG. 7is an embodiment of the steps performed by the content playback manager process125-2when it authenticates a media player application135rendering at least one content155-1using the digital signature.

In step215, the content playback manager process125-2of media manager process240-2authenticates an media player application135rendering the content155-1using the digital signature. The content playback manager process125-2initiates communication between the content playback manager125and the policy server145to authenticate the content playback manager125and/or the media player application135. This prevents any unauthorized media player applications135from rendering the playlist120.

In step216, the content playback manager process125-2of media manager process240-2initiates communication between a content playback manager125and a policy server145to authenticate at least one of:

i) the content playback manager125on which the media player application135operates, and

ii) the media player application135.

Prior to rendering the videos using the media player application135, the content playback manager125and/or media player application135must be authenticated. In addition, the videos in the playlist120must be decrypted. The policy server145provides the key to decrypt the videos. The content playback manager125initiates communication with the policy server145to obtain the key that will be used to decrypt the videos.

In step217, the content playback manager process125-2of media manager process240-2transmits, to the policy server145, signature information associated with the media player application135. The signature information is verified by the content playback manager125. In an example embodiment, the policy server145requires authentication of the media player application135and the content playback manager125, as specified in the policy that was used to encrypt the videos within the playlist120. The content playback manager125verifies the signature of the media player application135. Once the signature is verified, the content playback manager125returns the media player application's135signature information to the policy server145.

In step218, the content playback manager process125-2of media manager process240-2receives, from the policy server145, verification that the media player application135is authenticated to render the playlist120. The media player application135is authenticated based on a policy requiring authentication of an media player application135capable of rendering at least one content155-1. The policy was used to encrypt the content155-1within the playlist120. In other words, the policy server145verifies that the media player application135is the media player application135specified in the policy used to encrypt the videos.

In step219, the content playback manager process125-2of media manager process240-2receives, from the policy server145, verification that a version associated with the content playback manager125matches an acceptable version indicated by the policy used to encrypt the content155-1within the playlist120. The policy server145verifies that the version of the content playback manager125matches with a content playback manager125version specified in the policy. The verification of the content playback manager125version is included with the information received from the policy server145, indicating that the media player application135has been authenticated to render the playlist120.

In step220, the content playback manager process125-2of media manager process240-2receives, from the policy server145, an encrypted content decryption key encrypted with the version associated with the content playback manager125. In an example embodiment, if the version of the content playback manager125matches the content playback manager125version specified in the policy (that was used to encrypt the videos), the policy server145encrypts a content decryption key with a video manager version key that matches a version key embedded in the content playback manager125. This provides implicit authentication of the content playback manager125.

FIG. 8is an embodiment of the steps performed by the content playback manager process125-2when it receives a command to render content referenced in the playlist120using the media player application135.

In step221, the content playback manager process125-2of media manager process240-2receives a command to render content referenced in the playlist120using the media player application135. The media player application135operates on a content playback manager125that runs on a computer system110-2. Also operating on the computer system110-2is the content playback manager process125-2. A user108, using a graphical user interface, invokes the media player application135to render (i.e., play) the content155-1. The content playback manager process125-2performs authentication between the policy server145and the content playback manager125and/or media player application135, and also verifies the integrity of the playlist120before playing the content155-1.

In step222, the content playback manager process125-2of media manager process240-2verifies that the digital signature of the playlist120authenticates with a credential provided to a creator of the playlist120. Prior to rendering the video in the media player application135, the secure content playback manager process125-2verifies the integrity of the playlist120, linking the credential provided to a creator of the playlist120with a certification authority associated with the media player application135.

In step223, the content playback manager process125-2of media manager process240-2identifies that the content155-1is available via a network. In an example embodiment, the video to be rendered using the media player application135is downloaded real time over the network.

In step224, the content playback manager process125-2of media manager process240-2verifies an integrity of the playlist120. The content playback manager process125-2ensures that the playlist hasn't been altered.

FIG. 9is an embodiment of the steps performed by the content playback manager process125-2when it verifies that the digital signature of the playlist120authenticates with a credential provided to a creator of the playlist120.

In step225, the content playback manager process125-2of media manager process240-2verifies that the digital signature of the playlist120authenticates with a credential provided to a creator of the playlist120. Prior to rendering the video in the media player application135, the content playback manager process125-2verifies the integrity of the playlist120, linking the credential provided to a creator of the playlist120with a certification authority associated with the media player application135.

In step226, the content playback manager process125-2of media manager process240-2identifies that the content155-1is stored locally. In an example embodiment, a video has been downloaded and stored on a computer system110.

In step227, the content playback manager process125-2of media manager process240-2verifies that a first value associated with the content155-1matches a second value associated with the content155-1. The second value is included in the digital signature. In an example embodiment, the digital signature ensures that a hash of the video matches a hash that is included in the digital signature of the playlist120. During creation of the digital signature, a hash of the encrypted video was computed and embedded within the digital signature.

Alternatively, in step228, the content playback manager process125-2of media manager process240-2determines that an authentication of the playlist120has failed. In an example embodiment, authentication process between the policy server145and the content playback manager125and/or media player application135has failed.

In step229, the content playback manager process125-2of media manager process240-2rejects the command to render at least one content155-1. If any of the authentication processes (i.e., the content playback manager125and/or the media player application135) fail, then the playlist120isn't played within the media player application135.

FIG. 10is an embodiment of the steps performed by the content playback manager process125-2when it receives a command to render content referenced in the playlist120using the media player application135.

In step230, the content playback manager process125-2of media manager process240-2receives a command to render content referenced in the playlist120using the media player application135. The media player application135operates on a content playback manager125that runs on a computer system110-2. Also operating on the computer system110-2is the content playback manager process125-2. A user108, using a graphical user interface, invokes the media player application135to render (i.e., play) the content155-1. The content playback manager process125-2performs authentication between the policy server145and the content playback manager125and/or media player application135, and also verifies the integrity of the playlist120before playing the content155-1.

In step231, the content playback manager process125-2of media manager process240-2determines that a content playback manager125has decrypted an encrypted content decryption key received from a policy server145. The content playback manager125receives a content decryption key from the policy server145after authentication of the media player application135and the content playback manager125. The content playback manager125then decrypts the content decryption key.

In step232, the content playback manager process125-2of media manager process240-2processes the content decryption key with a public key associated with the digital signature to obtain a video decrypting key. In an example embodiment, the content playback manager process125-2, operating on the content playback manager125, XORs the content decryption key with a public key hash present in the certificate that was used to digitally sign the playlist120, to obtain a video decryption key. In an example embodiment, the certificate is passed in by the media player application135.

In step233, the content playback manager process125-2of media manager process240-2decrypts at least one content155-1using the video decrypting key. The content playback manager process125-2decrypts the video in the playlist120using the video decryption key that was obtained in step232.

In step234, the content playback manager process125-2of media manager process240-2renders at least one content155-1using the media player application135operating on the content playback manager125. Once decrypted the content playback manager process125-2renders the video in the media player application135.

FIGS. 11 and 12combine to form an example flowchart1100(e.g., flowchart1100-1and flowchart1100-2) illustrating operations associated with the playlist manager187according to embodiments herein.

In step1110, the playlist manager187creates a playlist120including at least one reference to content155.

In step1115, the playlist manager187associates a signed certificate181with the playlist120. The signed certificate181can include security information for use by media player application135to render the content155referenced by the playlist120.

In substep1120associated with step1115, the playlist manager187hashes a public key185assigned to a creator of the playlist120.

In substep1125associated with step1115, the playlist manager187applies an encryption key (e.g., Adobe's private key) to the hashed public key value to create the signed certificate181.

In substep1130associated with step1115, the playlist manager187includes the certificate with the playlist

In step1135, the playlist manager187creates a digital signature182associated with the playlist120. The digital signature can be used by the media player application135to verify the playlist120prior to playback of content155referenced by the playlist120.

In substep1140of step1135, the playlist manager187applies a set of logical operations (e.g., a hash function) to the playlist120to derive a unique value associated with the playlist120.

In substep1145of step1135, the playlist manager187generates the digital signature associated with the playlist120at least in part by encrypting the unique value associated with the playlist120via application of private key186assigned to the creator of the playlist120.

In substep1150of step1135, the playlist manager187associates the digital signature with the playlist120.

In step1155, the playlist manager187encrypts the content155as referenced by the playlist120.

In step1210, the playlist manager187utilizes unique information (e.g., the public key185) associated with a creator of the playlist120to encode a content decryption key that enables decryption of the encrypted content155as referenced by the playlist120.

In step1213, the playlist manager187produces the encoded content decryption key value based on i) a public key185assigned to a creator of the playlist120as well as ii) a corresponding decryption key for decrypting the encrypted content. Inclusion of the certificate181with the playlist121enables the media player application135and/or the content playback manager125to convert the content decryption key value back into the corresponding decryption key for decrypting the encrypted content155referenced by the playlist120.

In step1215, the playlist manager187transmits the encoded content decryption key to a server (e.g., policy server145) that, upon request of the media player application135executing the playlist120, is enabled to communicate the encoded content decryption key to the media player application135.

In step1220, the playlist manager187applies a set of logical operations (e.g., a hash function) to given content as referenced by the playlist120to produce a unique value (e.g., a hash value of the given content) associated with the given content.

In step1225, the playlist manager187includes the unique value (e.g., hash value) with the playlist120to enable the media player application135and/or the content playback manager125to verify an integrity of the given content prior to playback of the given content by the media player application135.

FIG. 13is an example flowchart1300illustrating operations associated with a content playback manager125and/or media player application135according to embodiments herein.

In step1310, the content playback manager125and/or the media player application135obtains content155as referenced by a playlist120.

In step1315, the content playback manager125and/or the media player application135initiates communications over a network to verify whether with a media player application135is an acceptable resource for playing back the content155as specified in the playlist120.

In step1320, the content playback manager125and/or the media player application135receives notification (e.g., based on a message received over a network) that the media player application135is permitted to play back the playlist120.

In step1325, prior to playback of the content155by the media player application135, the content playback manager125and/or the media player application135initiates retrieval of an encoded value (e.g., a hash value included with the playlist120) associated with content155.

In step1330, the content playback manager125and/or the media player application135applies a set of logical operations (e.g., a hash function) to the obtained content155to produce a check value at the media player application135.

In step1335, the content playback manager125and/or the media player application135compares the encoded value retrieved from the playlist120to the check value (as produced by content playback manager125) to verify integrity of the content155such as that the content was not modified since creation of the playlist120.

In step1340, the content playback manager125and/or the media player application135communicates with a server (e.g., policy server145) to obtain an encoded decryption key (e.g., one or more of values VALUE1, VALUE2, VALUE3, . . . ) associated with the content155.

In step1345, the content playback manager125and/or the media player application135transmits a request to the server. The request includes an identity of the content to be played by media player application135.

In step1350, the content playback manager125and/or the media player application135receives a reply message from the server (e.g., policy server145). The reply message includes the encoded decryption key associated with the content155.

In step1355, the content playback manager125and/or the media player application135produces a corresponding decryption key (to decrypt content155) by decoding the encoded decryption key (e.g., the VALUE received from policy server145) based at least in part on decoding information obtained from the playlist120.

In step1360, the content playback manager125and/or the media player application135utilizes the corresponding decryption key to decrypt the content155for playback by a media player application135.

While computer systems and methods have been particularly shown and described above with references to configurations thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope disclosed herein. Accordingly, the information disclosed herein is not intended to be limited by the example configurations provided above.