PROVISION OF DIGITAL CONTENT VIA A COMMUNICATION NETWORK

20230041783 · 2023-02-09

    Inventors

    Cpc classification

    International classification

    Abstract

    Methods and apparatus are disclosed for enabling digital content from a content provider (12, 5 14) to be provided via a communication network (10) from intermediate digital content stores (16) to user-devices (18). According to one aspect, the method comprises the content provider (12, 14) providing digital content encrypted using a cryptographic encryption key to an intermediate digital content store (16), the cryptographic encryption key being a public key of a key-pair and having an associated private key. In response to a request from a user-device (18) to the content provider (12, 14) for the digital content, a cryptographic session key is shared between the content provider (12, 14) and the requesting user-device (18). The content provider (12, 14) provides to the intermediate digital content store (16) the cryptographic re-encryption key and indications of the requested digital content and of the user-device (18).

    Claims

    1. A method for enabling digital content from a content provider to be provided via a communication network from intermediate digital content stores to user-devices, the method comprising: the content provider providing digital content encrypted using a cryptographic encryption key to an intermediate digital content store, the cryptographic encryption key being a public key of a key-pair and having an associated private key; and in response to a request from a user-device to the content provider for said digital content: sharing a cryptographic session key between the content provider and the requesting user-device via the communication network, the cryptographic session key enabling encryption and decryption of data exchanged during a communication session between the content provider and the requesting user-device via the communication network; the content provider generating a cryptographic re-encryption key in dependence on a cryptographic decryption key and on the private key associated with the cryptographic encryption key such that content encrypted using the cryptographic encryption key then re-encrypted using the cryptographic re-encryption key may be decrypted using the cryptographic decryption key; and the content provider providing to the intermediate digital content store the cryptographic re-encryption key and indications of the requested digital content and of the user-device in respect of which the digital content has been requested, whereby to enable the encrypted digital content provided to the intermediate digital content store to be re-encrypted after receipt at the intermediate digital content store using the cryptographic re-encryption key, and whereby to enable the re-encrypted digital content to be provided by the intermediate digital content store to the requesting user-device via the communication network; characterised in that the cryptographic decryption key in dependence on which the cryptographic re-encryption key is generated is the cryptographic session key that has been shared between the content provider and the requesting user-device.

    2. A method according to claim 1 wherein the content provider provides encrypted digital content items to the intermediate digital content store prior to receiving requests from user-devices for said digital content items.

    3. A method according to claim 1 wherein the content provider provides a particular encrypted digital content item to the intermediate digital content store in response to receiving a request from a user-device for said particular digital content item.

    4. A method according to claim 1 wherein the step of sharing the cryptographic session key between the content provider and the requesting user-device is performed in response to receipt by the content provider of a request from the user-device according to a current version of a Transport Layer Security protocol.

    5. A method according to claim 1 wherein the step of sharing the cryptographic session key between the content provider and the requesting user-device comprises negotiating the cryptographic session key according to a current version of a Transport Layer Security protocol.

    6. A method according to claim 1 wherein the step of generating the cryptographic re-encryption key comprises generating the cryptographic re-encryption key using a cryptographic convolution of the cryptographic decryption key and the private key associated with the cryptographic encryption key.

    7. A method according to claim 1 wherein the step of generating the cryptographic re-encryption key comprises generating the cryptographic re-encryption key using a homomorphic encryption function.

    8. A method according to claim 1, the method enabling digital content from the content provider to be provided via the communication network from one or more of a plurality of intermediate digital content stores to one or more of a plurality of user-devices.

    9. A method according to claim 1 wherein the cryptographic session key is a private key not shared with the intermediate digital content store.

    10. A method according to claim 1 wherein the cryptographic session key is a private key shared only between the content provider and the requesting user-device.

    11. Apparatus for enabling digital content from a content provider to be provided via a communication network from intermediate digital content stores to user-devices, the apparatus comprising a content provider and an intermediate digital content store, wherein: the content provider is configured to provide digital content encrypted using a cryptographic encryption key to the intermediate digital content store, the cryptographic encryption key being a public key of a key-pair and having an associated private key; the content provider further being configured to perform the following in response to a request from a user-device to the content provider for said digital content: share a cryptographic session key between itself and the requesting user-device via the communication network, the cryptographic session key enabling encryption and decryption of data exchanged during a communication session between the content provider and the requesting user-device via the communication network; generate a cryptographic re-encryption key in dependence on a cryptographic decryption key and on the private key associated with the cryptographic encryption key such that content encrypted using the cryptographic encryption key then re-encrypted using the cryptographic re-encryption key may be decrypted using the cryptographic decryption key; and provide to the intermediate digital content store the cryptographic re-encryption key and indications of the requested digital content and of the user-device in respect of which the digital content has been requested, whereby to enable the encrypted digital content provided to the intermediate digital content store to be re-encrypted after receipt at the intermediate digital content store using the cryptographic re-encryption key, and whereby to enable the re-encrypted digital content to be provided by the intermediate digital content store to the requesting user-device via the communication network; characterised in that the cryptographic decryption key in dependence on which the cryptographic re-encryption key is generated is the cryptographic session key that has been shared between the content provider and the requesting user-device.

    12. A computer program element comprising computer program code to, when loaded into a computer system and executed thereon, cause the computer to perform the steps of a method as claimed in claim 1.

    Description

    BRIEF DESCRIPTION OF THE DRAWINGS

    [0055] A preferred embodiment of the present invention will now be described with reference to the appended drawings, in which:

    [0056] FIG. 1 shows the primary entities involved in an embodiment of the invention;

    [0057] FIG. 2 illustrates a process for implementing an embodiment of the invention; and

    [0058] FIG. 3 is a block diagram of a computer system suitable for the operation of embodiments of the present invention.

    DESCRIPTION OF PREFERRED EMBODIMENTS OF THE INVENTION

    [0059] With reference to the accompanying figures, methods, apparatus and systems according to preferred embodiments will be described.

    [0060] Referring to FIG. 1, this shows the primary entities involved in the present embodiment. These are as follows: [0061] One or more CDN operators 14 from which end-users will request content; [0062] One or more CDN caches 16 usually located in a network operator's network 10; and [0063] A number of end-users 18 requesting the digital content (i.e. data, generally in an encrypted form) from the CDN operators 14.

    [0064] It will be noted that the content which end-users 18 may request from CDN operators 14 need not and usually will not originate from the CDN operators themselves (although it may do). There would generally be one or more “original” content providers 12 who may supply content to the CDN operators 14, but the manner in which this interaction is performed is not of particular importance to the present description as this may be performed using known techniques, so for the purposes of the present description, the CDN operators 14 will generally be regarded as the actual Content Providers since they are generally more “directly” performing the role of Content Provision in relation to the interactions to be described.

    [0065] There would generally be a many-to-many relationship between all these entities, e.g. each CDN operator 14 will generally use multiple caches 16 (possibly in multiple network operators' networks 10), with multiple end-users 18, and each end-user 18 can request data from multiple CDN operators, but the present embodiment will be described primarily with reference to one CDN operator 14 acting in a role as the (direct) Content Provider in order to provide content via one CDN cache 16 to an end-user 18 who has requested that content. It is generally immaterial in the present context whether the content in question to be provided by the CDN operator 14 in question via the CDN cache 16 in question to the end-user 18 in question has in fact previously been supplied to the CDN operator 14 by an “original” content provider 12 or not, or whether the user's initial request for the content in question was conveyed directly to the “original” content provider 12 or to the CDN operator 14 acting in its role as the (direct) Content Provider.

    [0066] FIG. 2 illustrates a process for implementing the present embodiment. For simplicity of illustration the process shows that the encrypted content is pushed by the CDN operator to the CDN cache but the present technique is also applicable in respect of embodiments in which when an End-User 14 requests content that has not been pre-cached, this causes the CDN cache 16 to request that content from the CDN Operator 14, the CDN Operator 14 then encrypting the content in question “on-the-fly” before sending it to the CDN cache 16.

    [0067] The process according to the present embodiment is as follows (on the basis that the content in question has already been supplied in this case (at a preliminary step s19) by an “original” content provider 12 to the CDN operator 14): [0068] 1. In step s20, the CDN Operator 14 encrypts the content with a “public” key pk_o. (NB The CDN Operator would generally keep this “public” key secret as it prevents third parties from generating fake content. This key is only called “public” in this instance because it is intended for asymmetric key encryption which uses public-private pairs of keys. In this case the same key generation algorithms are used to generate a private-private pair of asymmetric keys, comprising the operator's “public” key pk_o and its associated private key sk_o.) [0069] 2. In step s21, the CDN Operator 14 sends the encrypted content to the CDN cache 16. The content will be stored with a unique content identifier “content_id”, [0070] 3. In step s22, the CDN cache 16 stores the encrypted content with content_id. [0071] 4. In step s23, the End-User 18 makes an HTTP request to the CDN Operator 14 (noting that the request could in some embodiments be made to the “original” content provider 12) using the TLS protocol. A TLS shared private key sk_u is negotiated for the user to use. [0072] 5. In step s24, the CDN Operator 14 generates a third secret key sk_tx from a cryptographic convolution of the operator's and user's shared private key sk_u and the operator's private key sk_o. (As above, this step could in some embodiments be performed instead by the “original” content provider 12.) [0073] 6. In step s25, the CDN Operator 14 sends third secret key sk_tx to the CDN cache 16 together with instructions to send the content with the applicable content_id to the end-user 18 in question. [0074] 7. In step s26, the CDN cache 16 re-encrypts the already once-encrypted content with the third secret key sk_tx. [0075] 8. In step s27, the CDN cache 16 sends the re-encrypted content to the End-User 18. [0076] 9. In step s28, the End-User 18 decrypts the content using the shared private key sk_u negotiated with the CDN Operator 14 in step s23 (as described in Stage 4 above). The End-User 18 is now able to access, and if appropriate, play the content.

    [0077] [NB In the above example, the operation performed in step s24 (Stage 5 as set out above) in order to generate the third secret key “sk_tx” is a cryptographic convolution of the CDN operator's and the user's shared private key sk_u and the CDN operator's own private key sk_o, which is an example of a “homomorphic” encryption function as discussed earlier, but it will be appreciated that the operation to generate the third secret key “sk_tx” may involve other functions of the CDN operator's and user's shared private key sk_u and the CDN operator's private key sk_o].

    [0078] In this embodiment, the shared private key sk_u (i.e. the key shared between the CDN operator and the user) is the key shared anyway between the CDN operator (or original content provider) and the user for the purposes of the TLS handshake or other such (direct or indirect) communication between the CDN operator (or original content provider) and the user. It will be noted that this would not generally be shared with the network operator or other such intermediate entity responsible for operating the CDN cache 16. The shared private key sk_u need not be the TLS shared private key itself, but is preferably a key that would be shared anyway between the CDN operator and the user for reasons other than the generation of the third secret key sk_tx. This not only makes efficient use of computing and communication resources but avoids the need to set up an additional exchange process.

    [0079] Preferred embodiments may be implemented using a variety of cryptographic algorithms, preferably homomorphic encryption algorithms such as (for example) the Elliptic Curve Cryptography algorithms from the 1998 BBS paper discussed earlier (i.e. “BBS Proxy Re-Encryption” by Blaze, Bleumer and Strauss), but other encryption algorithms may be used.

    [0080] Code such as that shown below may be used in relation to implementations such as the presently-described embodiment: [0081] #!/usr/bin/env python3 [0082] from npre import bbs98 [0083] pre=bbs98.PRE( ) [0084] sk_o=pre.gen_priv(dtype=bytes) #CDN Operators private key [0085] pk_o=pre.priv2pub(sk_o) #CDN Operators public key—although can be kept secret [0086] sk_u=pre.gen_priv(dtype=bytes) #Session private key shared between CDN operator and user [0087] pk_u=pre.priv2pub(sk_u) #User public key not used here [0088] print (“CDN operators private key=”,sk_o, “\n”) [0089] print (“CDN operators \“public\” key but should be kept private so no one can generate fake content=”,pk_o, “\n”) [0090] print (“CDN operator and end-users shared secret key=”,sk_u, “\n”) [0091] print (“End-users public key (not used)=”,pk_u, “\n”) [0092] msg=b‘Hello World’ [0093] print (“Original Content“,msg.decode(‘utf-8’),”\n”); [0094] cache=pre.encrypt(pk_o, msg) #CDN operator encodes with secret public key [0095] print (“Cached content”,cache,“\n”); [0096] txkey=pre.rekey(sk_o,sk_u) #CDN operator calculates transmission key for cache to send data to end-user. Note normal TLS uses a shared symmetric key so this is just as secure. CDN operator passes this txkey to the cache along with details of content to play to end-user. [0097] txmsg=pre.reencrypt(txkey, cache) #Message cache sends to user [0098] print (“Txmsg”,txmsg,“\n”); [0099] finalmsg=pre.decrypt (sk_u, txmsg) #End-user decodes with private key shared with CDN operator [0100] print (“Decoded content=”,finalmsg.decode(‘utf-8’),“\n”)

    [0101] FIG. 3 is a block diagram of a computer system suitable for the operation of embodiments of the present invention. A central processor unit (CPU) 302 is communicatively connected to a data store 304 and an input/output (I/O) interface 306 via a data bus 308. The data store 304 can be any read/write storage device or combination of devices such as a random access memory (RAM) or a non-volatile storage device, and can be used for storing executable and/or non-executable data. Examples of non-volatile storage devices include disk or tape storage devices. The I/O interface 306 is an interface to devices for the input or output of data, or for both input and output of data. Examples of I/O devices connectable to I/O interface 306 include a keyboard, a mouse, a display (such as a monitor) and a network connection.

    [0102] Insofar as embodiments of the invention described are implementable, at least in part, using a software-controlled programmable processing device, such as a microprocessor, digital signal processor or other processing device, data processing apparatus or system, it will be appreciated that a computer program for configuring a programmable device, apparatus or system to implement the foregoing described methods is envisaged as an aspect of the present invention. The computer program may be embodied as source code or undergo compilation for implementation on a processing device, apparatus or system or may be embodied as object code, for example.

    [0103] Suitably, the computer program is stored on a carrier medium in machine or device readable form, for example in solid-state memory, magnetic memory such as disk or tape, optically or magneto-optically readable memory such as compact disk or digital versatile disk etc., and the processing device utilises the program or a part thereof to configure it for operation. The computer program may be supplied from a remote source embodied in a communications medium such as an electronic signal, radio frequency carrier wave or optical carrier wave. Such carrier media are also envisaged as aspects of the present invention.

    [0104] It will be understood by those skilled in the art that, although the present invention has been described in relation to the above described example embodiments, the invention is not limited thereto and that there are many possible variations and modifications which fall within the scope of the invention.

    [0105] The scope of the invention may include other novel features or combinations of features disclosed herein. The applicant hereby gives notice that new claims may be formulated to such features or combinations of features during prosecution of this application or of any such further applications derived therefrom. In particular, with reference to the appended claims, features from dependent claims may be combined with those of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in the specific combinations enumerated in the claims.