The present disclosure relates generally to anti-piracy and, more specifically, to content protection in token-based delivery platforms.
A form of piracy, known as content delivery network (CDN) leeching, has become a prominent problem for video service providers relying on over-the-top (OTT) content delivery. Pirates engaging CDN leeching typically share tokens that provide access to content within the service provider's delivery infrastructure. With these tokens, users of the pirate service can directly fetch data from a CDN. This not only allows illegal users to access content without subscribing but also results in legitimate OTT service providers unwittingly covering the delivery costs for pirates. Furthermore, the quality of the “pirate stream” matches that of the legitimate service, thus exacerbating the problem by increasing churn from the legitimate services. Despite the implementation of authentication tokens and Digital Rights Management (DRM), OTT video streaming services have struggled to curb the rise of CDN leeching.
So that the present disclosure can be understood by those of ordinary skill in the art, a more detailed description may be had by reference to aspects of some illustrative embodiments, some of which are shown in the accompanying drawings.
In accordance with common practice the various features illustrated in the drawings may not be drawn to scale. Accordingly, the dimensions of the various features may be arbitrarily expanded or reduced for clarity. In addition, some of the drawings may not depict all of the components of a given system, method, or device. Finally, like reference numerals may be used to denote like features throughout the specification and figures.
Numerous details are described in order to provide a thorough understanding of the example embodiments shown in the drawings. However, the drawings merely show some example aspects of the present disclosure and are therefore not to be considered limiting. Those of ordinary skill in the art will appreciate that other effective aspects and/or variants do not include all of the specific details described herein. Moreover, well-known systems, methods, components, devices, and circuits have not been described in exhaustive detail so as not to obscure more pertinent aspects of the example embodiments described herein.
To address content delivery network (CDN) leeching, methods, devices, and systems described herein introduce a degree of randomness to the behavior of server(s) (e.g., server(s) hosting CDN(s)) in token-based delivery platforms. Token-based delivery platforms use tokens to facilitate content access and tokens are often reused for multiple consecutive requests. In some embodiments, even if a token is valid, the server(s) choose to reject a request with a certain probability, referred to hereinafter as the probability of rejection (PoR). In some embodiments, the server(s) obtain a random number within the [0,1] range from a uniform distribution and compare it to the PoR to determine whether to randomly reject a request with a valid token. In some embodiments, when a valid token is rejected due to the described randomized token rejection process, the server(s) insert it into a list of recently randomly rejected tokens. Any future requests using a token from this list will be rejected.
In accordance with various embodiments, a randomized content access control method is performed at one or more servers that include one or more processors and non-transitory memory, e.g., server(s) hosting a CDN. The server(s) receive a request for content from a client device, wherein the request includes an access token granted to a client associated with the client device. The server(s) then obtain a probability of rejection and a randomized probability upon validating the access token and determine whether to reject the request based on comparing the access token and rejected tokens and comparing the probability of rejection and the randomized probability. The server(s) also record the access token to the rejected tokens upon determining to reject the request.
As described above, many token-based content delivery platforms (also referred to hereinafter as “token-based delivery platforms”) use tokens to facilitate content access and the tokens are reused for multiple consecutive content requests. A token (also referred to hereinafter as “an authorization token”, “a content delivery network (CDN) token”, or “an access token”) is a small digital object that encodes the requirements for granting access to a resource. It is often attached to content requests from the client to the CDN server to give access to resources.
Token-based delivery platforms typically involve multiple entities, e.g., the content provider (and/or the video service provider), the client, and the CDN server, etc. The client triggers the generation of a new token by sending some data related to its next request(s) to the content provider. The content provider validates the request(s) and issues an encrypted and integrity-protected token, typically relying on some cryptographic primitives. The client then sends the token alongside its request(s) to the CDN server, which (i) decrypts the token, (ii) validates the integrity of the token, (iii) checks whether the requirements of the token are met, and (iv) grants access if all checks pass. In some embodiments, crypto-secrets necessary for performing these tasks are exchanged among the multiple entities and managed at the configuration level. Tokens thus provide a light-weight optional security layer without compromising the streaming scalability, which is the baseline purpose of CDN servers.
Existing access tokens typically have fixed expiration times. More generally, the community distinguishes short-lived tokens, which either have a short expiration time or refer to a small number of consecutive assets, and long-lived tokens, which either have a long expiration time or refer to a long series of consecutive assets. There is an intrinsic trade-off between the token expiration delay set by the token issuer (typically the content provider and/or the video service provider) and the computational burden incurred onto the token verifier (typically a CDN) to verify the token, as illustrated in
Due to current infrastructure constraints, the long-lived tokens have been the prevailing implementation in the industry to date, and the expiration period of a long-lived token is often set to last the duration of a viewing session, e.g., up to 24 hours. Unfortunately, such designs lower the bar for piracy, as pirate providers only have to share their legally acquired token to grant access to a potentially large population of pirate users. From a security perspective, it is therefore desirable to reduce the token time-to-live (TTL) to make piracy more difficult. Indeed, due to the short expiration time of shared tokens, pirates have to republish tokens on a regular basis to maintain the quality of their service.
Some in the industry attempt to standardize a way to refresh a token, such as using a temporary HTTP redirect to return to the control plane (e.g., serves owned by the service provider and/or the content provider) or providing the CDN with some crypto secrets required to renew a token. This grants the ability to CDNs to check access rights for a subset of requests within a viewing session, e.g., checking media segment requests. While an in-progress specification developed by such efforts regulates how to enforce an access token, it is left to the CDN configuration to detail which requests will have their access token enforced. As such, while efforts aim to streamline a token update mechanism that is inherently required as soon as one considers reducing the TTL of a token, previously existing access token authorization and renewing mechanisms are static configurations aimed at striking a trade-off between computational cost and token life duration. Inherently, such static configurations have undesirable side effects, such as peak transactions per second (TPS), when token generation becomes periodical (based on the time to live of the token) rather than ephemeral. For instance, when a football match starts at 8 pm, many viewers tune it around the same time, creating a peak TPS for the initial token requests. If nothing else is done, assuming that the service issues access tokens with a 15-minute TTL, the majority of viewers return at about the same time to renew their expired tokens, thus creating a periodical peak TPS for the token generation service.
Regardless of using short-lived or long-lived tokens, as shown in
For example, assuming a PoR is set to 1 for 10,000, e.g., PoR=1/10000, and very long-lived tokens are used for content access. On average, a user emits one request every 2 second, thus emitting 15*(60/2)=450 requests with the same token. A legitimate user thus only has 4.4% chance to have her token randomly rejected within 15 minutes.
In comparison, when a group of 5,000 pirate viewers collectively emits 5000*(60/2)=150000 requests in 1 minute with the same token, the group would face 99.9999% chance of having their shared token randomly rejected within a single minute.
In some embodiments, the control plane 203 is hosted on one or more servers operated by a content provider and/or a service provider. Similarly, the CDN 204 is hosted on one or more servers with one or more processors and one or more non-transitory memory. In some embodiments, the control plane 202 includes a token management system 208 for checking client identities and privileges, sharing encryption keys with the CDN, and/or issuing tokens upon verifying the client identities and privileges. The CDN 204, on the other hand, includes a token verifier 210 to share encryption keys with the control plane 202, verify tokens, and/or caching token semantics.
As will be described in further detail below, in some embodiments, the token-based delivery platform 200 includes a communication path between the control plane 203 and the CDN 204. Through the communication path, statistics (e.g., CDN capacities), settings (e.g., PoR configured for the CDN 204), and/or policies (e.g., whether to allow adjustments to the PoR) are exchanged between the control plane 203 and the CDN 204 for configuring and updating the PoR at the server(s) hosting the CDN 204.
As explained above, many token-based delivery platforms have separate sub-systems, and tokens are used to carry information from the authentication stage to the resource access stage. Over-the-top (OTT) streaming often operates on token-based delivery platforms, where user authentication is carried out by one sub-system, e.g., the control plane 203, and the resource service is performed in another sub-system, e.g., the CDN 204. In
To make piracy more challenging, in some embodiments, the CDN 204 includes a token verifier 210 that maintains PoR settings as well as a recently rejected token table and performs probabilistic rejection tests for rejecting tokens. As described above, when the token verifier 210 randomly rejects tokens based on the PoR settings, the probability of a reused token being rejected increases rapidly. In some embodiments, the leak identification system 220 facilitates the identification of the leak, e.g., user N 201-N at client device N 202-N. In some embodiments, the leak identification system 220 records the frequency of token updates. When the leak 201-N (also known as “a pirate provider”) frequently requests updated tokens due to frequent rejections by the token verifier 210, in accordance with various embodiments, the leak identification system 220 isolates such users whose token renewal schedule significantly deviates from statistical expectations and takes actions to prevent piracy, e.g., no longer providing tokens to such users.
It should be noted that the token management system 208, the leak identification system 220, and the token verifier 210 can include appropriate hardware, software, firmware, and/or virtual machines to perform the operations attributed to the element herein. In some embodiments, a plurality of servers supporting the token management system 208, the leak identification system 220, and the token verifier 210 can be on different devices, at different locations, or co-located on one or more devices but configured as different instances, e.g., as virtualized instances in a cloud platform running on top of the processor(s) of one or more servers. In particular, the token management system 208, the leak identification system 220, and the token verifier 210 can be distributed over the control plane 203 and the CDN 204. For example, subcomponents of the token management system 208 and the leak identification system 220 can be distributed over the servers hosting the control plane 203 and the CDN 204 so that the token rejections by the CDN 204 can be reported to the control plane 203 via the communication path to facilitate the leak identification. The control plane 203 can then aggregate the rejection information for leak identification. In another example, subcomponents of the token verifier 210 can be distributed so that via the communication path, statistics of the CDN 204 can be reported to the control plane 203 to facilitate token management. The control plane 204 can then configure the tokens based on the statistics when issuing and managing tokens to the client devices 202.
In some embodiments, the PoR is set at the server level so that the token verifier 210 obtains the PoR value from the servers 310 (e.g., server 1 310-1, server 2 310-2, . . . , server N 310-N, etc.) when performing the probabilistic rejection test in response to receiving a content request with a token. For instance, the CDN 204 can be the main entity to statistically configures the PoR at the servers 310 associated with the CDN 204. In some embodiments, the PoR is a variable that the CDN 204 globally configures based at least in part on the number of received requests, the time of the day, and the type of streaming service, etc.
For example, when server 1 310-1 is busy serving clients, including user 1 201-1 at client device 1 202-1, the CDN 204 configures server 1 310-1 with a low PoR-1 value for load reduction. In another example, during prime-time evening hours, the CDN 204 configures server 2 310-2 with a high PoR-2 value. Based at least in part on the higher PoR-2 value, the probabilistic rejection test unit 320 is more likely to reject content requests from clients, such as user 2 201-2 at client device 2 202-2 during busy media consumption hours. In yet another example, having identifying the type of streaming service provided by server N 310-N, e.g., a popular channel streamed to clients including user 3 201-3 at client device 3 201-3, the CDN 204 configures a high PoR-3 value for higher protection against CDN leeching.
When the PoR is statically conveyed at the CDN configuration level, the PoR impacts various consuming devices equally. For instance, PoR-1 affects all client devices requesting content from server 1 310-1; PoR-2 affects all client devices requesting content from server 2 310-2; and PoR-3 affects all client devices requesting content from server 3 310-3, etc. When associated with short-lived tokens, the randomized token rejection smoothens the token renewal requests schedule, as it compels users to renew their tokens more evenly over time, thereby alleviating the aforementioned peak TPS issue associated with short-lived tokens.
In some embodiments, instead of or in addition to having the CDN 204 configure the PoR at the server level, the PoR is conveyed from the control plane 203 and updated dynamically over time. In some embodiments, in one direction, the CDN 204 sends statistics of the CDN 204, e.g., the number of content requests, the type of content requested, identifiers of content requesters frequently being rejected, CDN processing capacity, network bandwidth, etc. Based on such statistics and/or policies, the control plane 203 sets and updates the PoR for the servers 310 of the CDN 204. In some embodiments, in one direction, the control plane 203 sends the PoR to the CDN 204 as part of the settings and/or policies over the communication path between the control plane 203 and the CDN 204. By having the bidirectional communication path, in the case of the CDN 204 not having sufficient computational resources for token processing and PoR value extraction, configuring a nominal PoR or a baseline PoR for the server(s) 310 by the control plane 203 reduces the overhead for the CDN 204.
For example, the control plane 203 can update PoR value(s) for the server(s) 310 based on the schedule of the linear service when a service provider wants to relax the CDN access verification overnight with a low PoR and enforce stricter access verification on weekends during prime time with a high PoR. In another example, the control plane 203 can update PoR value(s) for the server(s) 310 based on the number of TPS to limit the variation of token renewal requests, e.g., lowering the PoR in response to increasing TPS. By setting and/or updating the PoR, the number of token requests that the control plane 203 receives stays stable, thus preventing TPS peaks for token generation services. In yet another example, based on the service popularity of the services provided by the CDN, the control plane 203 increases the PoR so that more popular TV shows are protected with stricter access verification.
In some embodiments, instead of or in addition to configuring the PoR at the CDN server level by the CDN 204 and/or the control plane 203, the PoR is conveyed within the access token itself. In some embodiments, the server(s) 310 extract the PoR from the access token upon receiving the content request. This allows the token issuer(s) (e.g., the content provider and/or the server provider at the control plane 203) to enforce different PoRs for different groups of users and adjust the behavior of the content access at the CDN 204 on a more granular basis. For example, upon obtaining intelligence reports indicating that certain geographic region(s) and/or user(s) are more prone to piracy, the control plane 203 can assign tokens with a higher PoR in response to token requests from such region(s) and/or user(s) to enforce stricter access control. In another example, the token issuer can adjust the PoR according to the business value of shows, so that a high PoR value protects high-valued shows (e.g., sport events), and a low PoR value protects less valuable content.
To control the PoR setting in the tokens, in some embodiments, the token issuer(s) configure one or more properties of a token. When the token is used for requesting content, the CDN 204 extracts the one or more properties from the token and derives the PoR for the probabilistic rejection test. In some embodiments, the one or more properties include, but are not limited to, a nominal PoR value, a geographic location associated with the token requester, a network address associated with the token requester, an issuance timestamp, and/or an expiration timestamp, etc.
For example, the token can include an indication of the geographic location of the token requester, e.g., determined from the IP address associated with the token request. Upon receiving the content request along with the token, the CDN 204 can estimate the geographic location of the content requester based on the IP address associated with the content request. The CDN 204 can then derive the PoR based on policies that set the PoR value proportional to the distance between the geographic area of the token and the geographic location of the content requester. The further the distance, the more likely the token has been shared by the pirate token sharing system 205 (
In some embodiments, the probabilistic rejection test unit 320 obtains a nominal PoR value, e.g., from a token attached to a content request and/or from the server 310 serving the content request, and adjusts the PoR value according to policies and/or properties of the token. For example, the control plane 203 can communicate to the CDN 204 a policy for avoiding frequent rejections of content requests with newly issued tokens. In particular, the policy enables the CDN 204 to set the PoR value to zero when the current timestamp at the time of receiving the content request is within a threshold from the issuance timestamp of the token attached to the content request. Otherwise, the nominal PoR, whether extracted from the token or by server configuration, is used by the probabilistic rejection test unit 320 for content access control. In yet another example, when the token includes both issuance and expiration timestamps, the CDN 204 can adjust the PoR by increasing it from 0 to 1 between these two timestamps, e.g., PoR=(time_now−issuance_time)/(expiration_time−issuance_time), PoR=1/(expiration_time−time_now), or PoR=PoR_nominal/(expiration_time−time_now), etc.
It should be noted that the exemplary control plane 203 and the exemplary CDN 204 can include more, less, and/or different elements than shown in
In this example, without loss of generality, the probabilistic rejection test at the CDN 204 fails at some point for a request from pirate 2 even though the token is still valid at that point. As described above with reference to
Continuing the process in
Though
In some embodiments, the communication buses 604 include circuitry that interconnects and controls communications between system components. The memory 606 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM or other random access solid state memory devices; and, in some embodiments, include non-volatile memory, such as one or more magnetic disk storage devices, optical disk storage devices, flash memory devices, or other non-volatile solid state storage devices. The memory 606 optionally includes one or more storage devices remotely located from the CPU(s) 602. The memory 606 comprises a non-transitory computer readable storage medium. Moreover, in some embodiments, the memory 606 or the non-transitory computer readable storage medium of the memory 606 stores the following programs, modules and data structures, or a subset thereof including an optional operating system 630, a storage module 635, a PoR configuration unit 640, a token verifier 642, a reporting unit 648, and a token issuer 650. In some embodiments, one or more instructions are included in a combination of logic and non-transitory memory. The operating system 630 includes procedures for handling various basic system services and for performing hardware dependent tasks.
In some embodiments, the storage module 635 is configured to store and/or manage recently rejected tokens 637 (e.g., the recently rejected tokens 330 in
In some embodiments, the PoR configuration unit 640 is configured to configure the PoR values to be used in the probabilistic rejection tests. As described above with reference to
In some embodiments, the token verifier 642 validates tokens received along with content requests, e.g., checking access conditions for the requested content specified in the token are met, etc. In some embodiments, the token verifier 642 includes a probabilistic rejection test unit 644 (e.g., the probabilistic rejection test unit 320,
In some embodiments, the reporting unit 648 is configured to facilitate leak identification by the leak identification system 220 (
In some embodiments, the token issuer 650 generates new tokens in response to a token renewal request. In some embodiments, rejecting tokens and/or requests by the token verifier 642 causes tokens to be renewed, e.g., the rejection triggering the client to contact the control plane to refresh the token as shown in
Although the storage module 635, the PoR configuration unit 640, the token verifier 642, the reporting unit 648, and the token issuer 650 are illustrated as residing on a single computing device 600, it should be understood that in other embodiments, any combination of the PoR configuration unit 640, the token verifier 642, the reporting unit 648, and the token issuer 650 can reside in separate computing devices in various embodiments. For example, in some embodiments, each of the PoR configuration unit 640, the token verifier 642, the reporting unit 648, and the token issuer 650 resides on a separate computing device.
Moreover,
While various aspects of implementations within the scope of the appended claims are described above, it should be apparent that the various features of implementations described above may be embodied in a wide variety of forms and that any specific structure and/or function described above is merely illustrative. Based on the present disclosure one skilled in the art should appreciate that an aspect described herein may be implemented independently of any other aspects and that two or more of these aspects may be combined in various ways. For example, an apparatus may be implemented and/or a method may be practiced using any number of the aspects set forth herein. In addition, such an apparatus may be implemented and/or such a method may be practiced using other structure and/or functionality in addition to or other than one or more of the aspects set forth herein.
It will also be understood that, although the terms “first,” “second,” etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first device could be termed a second device, and, similarly, a second device could be termed a first device, which changing the meaning of the description, so long as all occurrences of the “first device” are renamed consistently and all occurrences of the “second device” are renamed consistently. The first device and the second device are both devices, but they are not the same device.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the claims. As used in the description of the embodiments and the appended claims, the singular forms “a”, “an”, and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
As used herein, the term “if”′ may be construed to mean “when” or “upon” or “in response to determining” or “in accordance with a determination” or “in response to detecting”, that a stated condition precedent is true, depending on the context. Similarly, the phrase “if it is determined [that a stated condition precedent is true]” or “if [a stated condition precedent is true]” or “when [a stated condition precedent is true]” may be construed to mean “upon determining” or “in response to determining” or “in accordance with a determination” or “upon detecting” or “in response to detecting” that the stated condition precedent is true, depending on the context.