In a system, a server provides a digital signal processing function ƒ to an executing device in an obfuscated form. The function ƒ includes a function cascade of signal processing functions ƒi, 1≦i≦N (e.g., FC1(x)≡ƒn∘ . . . ∘ƒ1(x)). The server includes a processor for selecting a set of 2n invertible permutations pi, 1≦i≦2N; calculating a set of n functions gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N; and calculating a set of N−1 functions hi, where hi is functionally equivalent to p2i−1−1∘p2i−2, for 2≦i≦N. The server equips the executing device with an execution device function cascade that includes yn∘hn∘yN−1∘hN−1∘ . . . ∘y1, where y1, . . . , yn are function parameters (e.g., ED1(y1, . . . , yn)≡yn∘hn∘yN−1∘hN−1∘ . . . ∘y1), and provides the functions g1, . . . gn to the executing device. The executing device obtains the functions g1, . . . , gn and a processor for loading the execution device function cascade and applying the loaded execution device function cascade to the functions g1, . . . , gn (e.g., ED1(g1, . . . , gn)).
|
10. A computer program product stored on a non-transitory computer readable storage medium that is operative to cause a processor in an execution device to execute a digital signal processing function ƒ including a function cascade including a plurality of signal processing functions fi, where 1≦i≦N, for processing a digital signal input x to yield a digital signal output, by:
performing the following steps by at least one processor of the execution device:
loading an execution device function cascade that includes yn∘hn∘yN−1∘hN−1∘ . . . ∘y1, where y1, . . . , yn are function parameters,
loading a set of functions g1, . . . , gn;
applying the execution device function cascade to the set of functions g1, . . . , gn;
where:
gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N;
hi is functionally equivalent to p2i−1−1∘p2i−2, for 2≦i≦N; and
pi is an invertible permutation, for 1≦i≦2N.
1. A method of providing a digital signal processing function ƒ to an executing device having at least one processor in an obfuscated form; the function ƒ including a function cascade including a plurality of signal processing functions ƒi, 1≦i≦N, for processing a digital signal input x to yield a digital signal output, the method including:
performing the following steps by at least one processor of the executing device:
selecting a set of 2n invertible permutations pi, 1≦i≦2N;
calculating a set of n functions gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N;
calculating a set of N−1 functions hi, where hi is functionally equivalent to p2i−1−1∘p2i−2, for 2≦i≦N;
equipping the executing device with an execution device function cascade that includes yn∘hn∘yN−1∘hN−1∘ . . . ∘y1, where y1, . . . , yn are function parameters,
providing the functions g1, . . . , gn to the executing device; and
in the executing device, applying the execution device function cascade to the functions g1, . . . , gn, wherein the execution of the gi and hi functions by the executing device in an interleaved manner enables the functionality of the execution device function cascade to be achieved without function ƒ being directly recognizable.
19. A computer program product stored on a non-transitory computer readable storage medium that is operative to cause a processor in an execution device j to execute a digital signal processing function ƒ including a function cascade including a plurality of signal processing functions ƒi, where 1≦i≦N, for processing a digital signal input x to yield a digital signal output, the method including:
performing the following steps by at least one processor of the execution device:
loading an execution device function cascade that is unique for the execution device and that includes yn∘hj,n∘yN−1∘hj,N−1∘ . . . ∘y1, where y1, . . . , yn are function parameters,
loading a loader function
loaderj(x1, . . . , xn)≡(lj,1∘x1∘rj,l, . . . , lj,n∘xn∘rj,n), loading a set of functions
g1, . . . , gn;
applying the loader function to the set of functions g1, . . . , gn yielding a set of functions gj,1, . . . , gj,n and applying the execution device function cascade to the set of functions gj,1, . . . , gj,n, where:
gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N;
pi is an invertible permutation, for 1≦i≦N;
hj,i is functionally equivalent to pj,2i−1−1∘pj,2i−2 for 2≦i≦N;
lj,i is functionally equivalent to pj,2i−1∘p2i;
rj,i is functionally equivalent to p2i−1−1∘pj,2i−1; and
pj,i are invertible permutations, for 1≦i≦2N, being unique for the device and/or a user of the device.
13. A method of providing a digital signal processing function ƒ to a plurality of executing devices, each identified by a unique index j, in an obfuscated, anonymous form; the function ƒ including a function cascade including a plurality of signal processing functions ƒi, where 1≦i≦N, for processing a digital signal input x to yield a digital signal output the method including:
performing the following steps by at least one processor:
selecting a set of 2n invertible permutations pi, where 1≦i≦2N;
calculating a set of n functions gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, 1≦i≦N;
selecting for each device j a corresponding set and/or sequence of 2n invertible permutations pj,i, that is unique for the device and/or a user of the device;
calculating for each executing device j a corresponding set of N−1 functions hj,i, where hj,i is functionally equivalent to pj,2i−1−1∘pj,2i−2 for 2≦i≦N;
equipping each executing device j with a respective execution device function cascade EDj(y1, . . . , yn) that includes yn∘hj,n∘yN−1∘hj,N−1∘ . . . ∘y1;
equipping each executing device j with a respective loader function loaderj(x1, . . . , xn)=(lj,1∘x1∘rj,1, . . . , lj,n∘xn∘rj,n), where lj,i, is functionally equivalent to pj,2i−1∘p2i and rj,i is functionally equivalent to p2i−1−1∘pj,2i−1;
providing to the executing device the functions g1, . . . , gn; and
in the executing device, executing EDj(loaderj(g1, . . . , gn)).
11. A system for providing a digital signal processing function ƒ to an executing device in an obfuscated form; the system including a server (610) and an executing device (620); the function ƒ including a function cascade including a plurality of signal processing functions ƒi, 1≦i≦N, for processing a digital signal input x to yield a digital signal output;
the server including a processor (612) for performing the following steps, under control of a program:
selecting a set of 2n invertible permutations pi, 1≦i≦2N;
calculating a set of n functions gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N; and
calculating a set of N−1 functions hi, where hi is functionally equivalent to p2i−1−1∘p2i−2, for 2≦i≦N; and
means (614) for equipping the executing device with an execution device function cascade that includes yn∘hn∘yN−1∘hN−1∘ . . . ∘y1, where y1, . . . , yn are function parameters, and
means (616) for providing the functions g1, . . . , gn to the executing device; and
the executing device (620) including:
means (626) for obtaining the functions g1, . . . , gn from the server; and
a processor (622) for, under control of a program, loading the execution device function cascade and applying the loaded execution device function cascade to the functions g1, . . . , gn, wherein the execution of the gi and hi functions by the executing device in an interleaved manner enables the functionality of the execution device function cascade to be achieved without function ƒ being directly recognizable.
20. A system for providing a digital signal processing function ƒ to a plurality of executing devices, in an obfuscated, anonymous form; the system including a server and a plurality of executing devices, each identified by a unique index j; the function ƒ including a function cascade including a plurality of signal processing functions ƒi, where 1≦i≦N, for processing a digital signal input x to yield a digital signal output;
the server including a processor for performing the following steps, under control of a program:
selecting a set of 2n invertible permutations pi, where 1≦i≦2N;
calculating a set of n functions gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N;
selecting for each device j a corresponding set and/or sequence of 2n invertible permutations pj,i, that is unique for the device and/or a user of the device;
calculating for each executing device j a corresponding set of N−1 functions hj,i, where hj,i is functionally equivalent to pj,2i−1−1∘pj,2i−2 for 2≦i≦N;
equipping each executing device j with a respective execution device function cascade EDj(y1, . . . , yn) that includes yn∘hj,n∘yN−1∘j,hN−1∘ . . . ∘y1;
equipping each executing device j with a respective loader function loaderj(x1, . . . , xn)=(lj,1∘x1∘rj,1, . . . , lj,n∘xn∘rj,n), where lj,i is functionally equivalent to pj,2i−1∘p2i and rj,i is functionally equivalent to p2i−1−1∘pj,2i−1; and
providing to the executing device the functions g1, . . . , gn; and
each executing device j,
means for obtaining the functions g1, . . . , gn from the server; and
a processor for, under control of a program:
loading an execution device function cascade that is unique for the execution device and that includes yn∘j,hn∘yN−1∘hj,N−1∘ . . . ∘y1, where y1, . . . , yn are function parameters,
loading a loader function
loaderj(x1, . . . , xn)≡(lj,1∘x1∘rj,1, . . . , lj,n∘xn∘rj,n)
applying the loader function to the set of functions g1, . . . , gn yielding a set of functions gj,1, . . . , gj,n; and
applying the execution device function cascade to the set of functions gj,1, . . . , gj,n.
2. A method of providing a digital signal processing function ƒ as claimed in
3. A method of providing a digital signal processing function ƒ as claimed in
4. A method of providing a digital signal processing function ƒ as claimed in
5. A method of providing a digital signal processing function ƒ as claimed in
6. A method of providing a digital signal processing function ƒ as claimed in
7. A method as claimed in
8. A method as claimed in
9. A method as claimed in
12. An execution device (620) for use in the system as claimed in
means (626) for obtaining the functions g1, . . . , gn from the server; and
a processor (622) for, under control of a program, applying the execution device function cascade to the functions g1, . . . , gn and applying the applied device function cascade to the digital signal input x.
14. A method of providing a digital signal processing function ƒ as claimed in
15. A method of providing a digital signal processing function ƒ as claimed in
16. A method of providing a digital signal processing function ƒ as claimed in
17. A method of providing a digital signal processing function ƒ as claimed in
18. A method of providing a digital signal processing function ƒ as claimed in
21. An execution device for use in the system as claimed in
means for obtaining the functions g1, . . . , gn from the server; and
a processor for, under control of a program:
loading an execution device function cascade that is unique for the execution device and that includes yn∘hj,n∘yN−1∘hj,N−1∘ . . . ∘y1, where y1, . . . , yn are function parameters,
loading a loader function loaderj(x1, . . . , xn)≡(lj,1∘x1∘rj,1, . . . , lj,n∘xn∘rj,n)
applying the loader function to the set of functions g1, . . . , gn yielding a set of functions gj,1, . . . , gj,n; and
applying the execution device function cascade to the set of functions gj,1, . . . , gj,n where:
gi is functionally equivalent to p2i−1∘ƒi∘p2i−1 for 1≦i≦N;
pi is an invertible permutation, for 1≦i≦N;
hj,i is functionally equivalent to pj,2i−1−1∘pj,2i−2 for 2≦i≦N;
lj,i is functionally equivalent to pj,2i−1∘p2i;
rj,i is functionally equivalent to p2i−1−1∘pj,2i−1; and
pj,i are invertible permutations, for 1≦i≦2N, being unique for the device and/or a user of the device.
|
The invention relates to a method of providing a cascaded signal processing function to an execution device in a secure and/or personalized way. The invention also relates to a system for providing a cascaded signal processing function to an execution device in a secure and/or personalized way. The invention further relates to an execution device for executing a cascaded signal processing function provided in a secure and/or personalized way.
The Internet provides users with convenient and ubiquitous access to digital content. Because of the potential of the Internet as a powerful distribution channel, many CE products strive to interoperate with the PC platform—the predominant portal to the Internet. The use of the Internet as a distribution medium for copyrighted content creates the compelling challenge to secure the interests of the content provider. In particular it is required to warrant the copyrights and business models of the content providers. Control of the playback software is one way to enforce the interests of the content owner including the terms and conditions under which the content may be used. In particular for the PC platform, the user must be assumed to have complete control to the hardware and software that provides access to the content and unlimited amount of time and resources to attack and bypass any content protection mechanisms. As a consequence, content providers must deliver content to legitimate users across a hostile network to a community where not all users can be trusted. The general approach in digital rights management for protected content distributed to PCs is to encrypt the digital content (for instance using DES) and to store the decryption key (or the “license”) in a so-called License database on the PC's hard disk. Digital content on the PC is typically rendered using media players, such as Microsoft's Media Player, Real's RealOne Player, Apple's QuickTime player. Such players can load for a specific content format a respective plug-in for performing the format-specific decoding. Those content formats may include AVI, DV, Motion JPEG, MPEG-1, MPEG-2, MPEG-4, WMV, Audio CD, MP3, WMA, WAV, AIFF/AIFC, AU, etc. The player and plug-in structure is illustrated in
The largest vulnerability of digital rights management relying on encryption is the key distribution and handling. For playback, a software player has to retrieve a decryption key from the license database, it then has to store this decryption key somewhere in memory for the decryption of the encrypted content. This leaves an attacker two options for an attack of the key handling in a software player: firstly, reverse engineering of the license database access function could result in a black box software (i.e., the attacker does not have to understand the internal workings of the software function) capable of retrieving asset keys from all license databases. Secondly, by observation of the accesses to memory used during content decryption it is possible to retrieve the asset key.
Typically digital rights management systems use an encryption technique based on block ciphers that process the data stream in blocks using a sequence of encryption/decryption steps, referred to as rounds. The output of i−1th round is the input of the ith round. Thus, for a system with N rounds the algorithm can be described as a function cascade ƒN∘ . . . ∘ƒ1(x), where function ƒi represents the functionality of round i. Most block algorithms are Feistel networks. In such networks, the input data block x of even length n is divided in two halves of length
usually referred to as L and R. So, the input x fed to the first round is given as x=L0,R0. The ith round (i>0) performs the function ƒi, where ƒi is defined as
ƒi(Li−1,Ri−1)=Ri−1,(Li−1⊕F(Ri−1,Ki)),
Ki is a subkey used in the ith round and F is an arbitrary round function.
It is an object of the invention to provide a better protection of cascaded signal processing functions such as Feistel networks.
To meet the object of the invention, a method of providing a digital signal processing function ƒ to an executing device in an obfuscated form, where the function ƒ includes a function cascade including a plurality of signal processing functions ƒi, 1≦i≦N, for processing a digital signal input x to yield a digital signal output (for example, FC1(x)≡ƒN∘ . . . ∘ƒ1(x)), includes:
selecting a set of 2N invertible permutations pi, 1≦i≦2N;
calculating a set of N functions gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N;
calculating a set of N−1 functions hi, where hi is functionally equivalent to p2i−1−1∘p2i−2, for 2≦i≦N;
equipping the executing device with an execution device function cascade that includes yN∘hN∘yN−1∘hN−1∘ . . . ∘y1, where y1, . . . , yN are function parameters (for example, ED1(y1, . . . , yN)≡yN∘hN∘yN−1∘hN−1∘ . . . ∘y1),
providing the functions g1, . . . , gN to the executing device; and
in the executing device, applying the execution device function cascade to the functions g1, . . . , gN (for example, ED1(g1, . . . , gN)).
According to the invention the constituent functions ƒi are provided in an encapsulated form as gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N. The functions pi used for the encapsulation are also hidden by being supplied in the form of hi which is a multiplied version of p2i−1−1∘p2i−2, for 2≦i≦N. By executing the functions gi and hi in the execution device in an interleaved manner (as for example is illustrated in
The dependent claims 2 and 3 show two respective alternative embodiments for protecting the (functional) beginning of the function cascade. In the embodiment of claim 2, the execution device function cascade starts with p1−1, for example ED2(y1, . . . , yN)=yN∘hN∘yN−1∘hN−1∘ . . . ∘y1∘p1−1. Applying this to g1, . . . , gN, gives as a functional start of the function sequence executed in the device: . . . ∘g2∘h2∘g1∘p1−1= . . . ∘p3−1∘ƒ2∘p2∘p2−1∘ƒ1∘p1∘p1−1= . . . ∘p3−1∘ƒ2∘ƒ1, in this way the execution device explicitly executes ƒ1. In the embodiment of claim 3, security is increased by extending the function cascade with a starting function ƒ0 that aids in hiding p1−1. The function cascade may, for example, be FC2(x)=ƒN∘ . . . ∘ƒ1∘ƒ0(x). The execution device function cascade starts with a function S1, for example ED3(y1, . . . , yN)=yN∘hN∘yN−1∘hN−1∘ . . . ∘y1∘S1, where S1 is functionally equivalent to p1−1∘ƒ0. Since S1 only represents p1−1 in a form multiplied with ƒ0, p1−1 can not be retrieved from the execution device in a direct way such as reading certain memory locations. Preferably, ƒ0 is a global secret.
The dependent claims 4 and 5 show two respective alternative embodiments for protecting the (functionally) ending of the function cascade in a manner analogous to claims 2 and 3
According to the measure of the dependent claim 6, the chosen sequence of permutations pi is unique for the device. In this way, the function cascade is supplied to the execution device not only in an obfuscated form but also in a personalized form. For example, if the function cascade represents a Feistel cipher with embedded decryption key, cryptanalytic or brute force attacks may result in obtaining the black box functionality of g1, . . . , gN. This broken functionality would then only work in combination with the corresponding execution device function cascade and not with any other execution device. This significantly limits the impact of a successful attack.
According to the measure of the dependent claim 7, the execution device function cascade is embedded in a program, for example in the form of a media player or a plug-in for a media player. The execution device is thus provided with secure, personalized software.
According to the measure of the dependent claim 8, the functions g1, . . . , gN, form a plug-in for the program. If the program itself is a plug-in, then the functions g1, . . . , gN are in effect a plug-in for the plug-in. As an alternative, according to the measure of the dependent claim 9, the functions g1, . . . , gN may be embedded in the same program as the execution device function cascade.
To meet an object of the invention, a computer program product operative to cause a processor in an execution device to execute a digital signal processing function ƒ including a function cascade including a plurality of signal processing functions ƒ1, where 1≦i≦N, for processing a digital signal input x to yield a digital signal output (for example, FC1(x)≡ƒN∘ . . . ∘ƒ1(x)), by:
loading an execution device function cascade that includes yN∘hN∘yN−1∘hN−1∘ . . . ∘y1, where y1, . . . , yN are function parameters,
loading a set of functions g1, . . . , gN;
applying the execution device function cascade to the set of functions g1, . . . , gN; where:
gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N;
hi is functionally equivalent to p2i−1−1∘p2i−2 for 2≦i≦N; and
pi is an invertible permutation, for 1≦i≦2N.
To meet an object of the invention, a method of providing a digital signal processing function ƒ to a plurality of executing devices, each identified by a unique index j, in an obfuscated, anonymous form; the function ƒ including a function cascade including a plurality of signal processing functions ƒi, where 1≦i≦N, for processing a digital signal input x to yield a digital signal output (for example, FC1(x)≡ƒN∘ . . . ∘ƒ1(x)), includes:
selecting a set of 2N invertible permutations pi, where 1≦i≦2N;
calculating a set of N functions gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N;
selecting for each device j a corresponding set and/or sequence of 2N invertible permutations pj,i, that is unique for the device and/or a user of the device;
calculating for each executing device j a corresponding set of N−1 functions hj,i, where hj,i, is functionally equivalent to pj,2i−1−1∘pj,2i−2 for 2≦i≦N;
equipping each executing device j with a respective execution device function cascade EDj(y1, . . . , yN) that includes yN∘hj,N∘yN−1∘hj,N−1∘ . . . ∘y1;
equipping each executing device j with a respective loader function loaderj(x1, . . . , xN)=(lj,1∘x1∘rj,1, . . . , lj,N∘xN∘rj,N), where lj,i is functionally equivalent to pj,2i−1∘p2i and rj,i is functionally equivalent to p2i−1−1∘pj,2i−1;
providing to the executing device the functions g1, . . . , gN; and
in the executing device, executing EDj(loaderj(g1, . . . , gN)).
The functions ƒi are obfuscated in the form of the functions g1, . . . , gN in the same way as described for claim 1. The functions g1, . . . , gN are the same for each device and can be seen as corresponding to one default/anonymous device. The execution devices are equipped with a device specific (“personalized”) execution device cascade. A device specific loader function is used to convert the respective anonymous functions gi to corresponding device specific functions that can be fed to the execution device cascade. The loader function uses conversion functions lj,i and rj,i that are based on a set/sequence of permutations pj,i that are not revealed.
According to the measure of the dependent claim 12, the functions gi can be supplied to all devices in a same way, for example, using broadcasting or on a storage medium, such as a CD-ROM or DVD.
These and other aspects of the invention are apparent from and will be elucidated with reference to the embodiments described hereinafter.
In the drawings:
ƒi(Li−1⊕Ri−1)=Ri−1⊕(Li−1⊕F(Ri−1,Ki)),
where Ki is a subkey used in the ith round and F is an arbitrary round function.
According to the invention, a set of 2N invertible permutations pi, 1≦i≦2N is selected. Next, a set of N functions gi is calculated, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N. In this context with functionally equivalent is meant that if gi is applied to a same input (e.g. x) the same outcome is achieved as when p2i−1∘ƒi∘p2i−1 is applied to that input, for each allowed value of the input. The composite functions p2i−1, ƒi, and p2i−1 are not separately visible. gi provides the black box functionality of p2i−1∘ƒi∘p2i−1.
Thus
It is well-known from the field of computer compiler building how the black box functionality of p2i−1∘ƒi∘p2i−1 can be achieved using so-called partial evaluation. Chapter 1 “Partial Evaluation and Automatic Program Generation” by N. D. Jones, C. K. Gomard, and P. Sestoft describes the concept of partial evaluation. This will not be described in more detail here. It will be appreciated that the digital signal input x is a multi-dimensional parameter, for example of 64 or 128 bit block/vector, to be able to perform a useful permutation. According to the invention, a set of N−1 functions hi is calculated, where hi is functionally equivalent to p2i−1−1∘p2i−2, for 2≦i≦N. Using the simple example of
It can be observed that this is indeed functionally equivalent to p5−1∘ƒ2∘p2(x). Thus, the executing device that has executed this cascade has executed ƒ2 without having explicit knowledge of ƒ2.
In a further example, N=2, and ƒ1 and ƒ2 are each evaluated to a respective mapping table given by:
ƒ1: {0→3, 1→1, 2→6, 3→2, 4→7, 5→5, 6→4, 7→0, 8→8},
ƒ2: {0→4, 1→1, 2→5, 3→7, 4→6, 5→2, 6→0, 7→8, 8→3}.
In this example, ƒ1 is an invertible function that converts a number between 0 and 8 to a number between 0 and 8, e.g. value 0 is converted to value 3, value 1 to 1, value 2 to 6, etc. The following four respective permutations are used in this example:
p1: {0→5, 1→3, 2→1, 3→7, 4→0, 5→6, 6→2, 7→8, 8→4}
p2: {0→8, 1→6, 2→7, 3→3, 4→4, 5→2, 6→0, 7→1, 8→5}
p3: {0→3, 1→5, 2→7, 3→1, 4→6, 5→0, 6→2, 7→8, 8→4}
p4: {0→3, 1→0, 2-5, 3→2, 4→7, 5→8, 6→1, 7→4, 8→6}
For this example the following three inverse permutations are used:
p2−1: {0→6, 1→7, 2→5, 3→3, 4→4, 5→8, 6→1, 7→2, 8→0}
p3−1: {0→5, 1→3, 2→6, 3→0, 4→8, 5→1, 6→4, 7→2, 8→7}
p4−1: {0→1, 1→6, 2→3, 3→0, 4→7, 5→2, 6→8, 7→4, 8→5}
Giving these functions, h2(x)=p3−1∘p2(x) is then given as:
h2: {0→7, 1→4, 2→2, 3→0, 4→8, 5→6, 6→5, 7→3, 8→1}.
For example, p2 maps 0 to 8 and p3−1 maps 8 to 7. Thus, h2(0)=p3−1∘p2(0)=7. Similarly, g1(x)=p2−1∘ƒ1∘p1(x) is given by:
g1: {0→8, 1→5, 2→7, 3→6, 4→3, 5→4, 6→1, 7→0, 8→2}
and g2(x)=p4−1∘ƒ2∘p3(x) is given by:
g2: {0→4, 1→3, 2→5, 3-6, 4→1, 5→7, 6→2, 7→0, 8→8}
The executing device is equipped with the execution device function cascade that includes yN∘hN∘yN−1∘hN−1∘ . . . ∘y1, a where y1, . . . , yN are function parameters. This is shown in
Taking a look at a middle part of the chain like hi+1∘gi∘hi, this gives: hi+1∘gi∘hi=p2i+1−1∘p2i∘p2i−1∘ƒi∘p2i−1∘p2i−1−∘p2i−1=p2i+1−1∘ƒi∘p2i−2. The first and least term of this expression will be eliminated by the respective g terms. The total outcome is that the executing device executes a function that includes the function cascade ƒN∘ . . . ∘ƒ1(x) without having access to any of the functions ƒi. These functions are thus obfuscated.
In preferred embodiments, options are given for dealing with the beginning and ending of the chain. Without any further measures, the resulting total signal processing function in the executing device may be ED1(g1, . . . , gN)≡p2N−1−1∘ƒN∘ . . . ∘ƒ1(x)∘p1. For example, the term p1 can be eliminated by using an execution device function cascade that includes yN∘hN∘yN−1∘hN−1∘ . . . ∘y1∘p1−1. For example, ED2(y1, . . . , yN)≡yN∘hN∘yN−1∘hN−1∘ . . . ∘y1∘p1−1. Preferably, the term p1−1 is kept secure in the executing device. A preferred way of doing this is to extend the function cascade with a further signal processing function ƒ0, (for example, FC2(x)≡ƒN∘ . . . ∘ƒ1∘ƒ0(x)). The execution device function cascade then includes yN∘hN∘yN−1∘hN−1∘ . . . ∘y1∘S1, for example (ED3(y1, . . . , yN)≡yN∘hN∘yN−1∘hN−1∘ . . . ∘y1∘S1), where S1 is functionally equivalent to p1−1∘ƒ0. In this way the individual terms p1−1 and ƒ0 need not be revealed, but only the multiplicated form p1−1∘ƒ0 exists. Preferably, ƒ0 is a global secret, i.e. known to the parties that need to known it but not distributed any further. Global secrets in itself are known and ways of communicating global secretes in a secure way are also known and will not be discussed here any further.
In a corresponding way, measures can be taken for dealing with the term p2N−1−1. For example, the execution device function cascade may include p2N∘yN∘hN∘yN−1∘hN−1∘ . . . ∘y1 (e.g, ED4(y1, . . . , yN)≡p2N∘yN∘hN∘yN−1∘hN−1∘ . . . ∘y1). To better protect p2N, the function cascade may end with a further signal processing function ƒN+1, (for example, FC3(x)≡ƒN+1∘ƒN∘ . . . ∘ƒ1(x)). The execution device function cascade then includes S2∘yN∘hN∘yN−1∘hN−1∘ . . . ∘y1 (e.g., ED5(y1, . . . , yN)≡S2∘yN∘hN∘yN−1∘hN−1∘ . . . ∘y1), where S2 is functionally equivalent to ƒN+1∘p2N.
Additionally, the server includes means 614 for equipping the executing device with an execution device function cascade that includes yN∘hN∘yN−1∘hN−1∘ . . . ∘y1, where y1, . . . , yN are the function parameters. The server may do this in any suitable form. For example, in a factory the terms hi may be stored in a storage module of the executing device during the manufacturing of the executing device 620.
The executing device 620 includes means 626 for obtaining the functions g1, . . . , gN from the server 610. These means cooperate with the means 616 of the server and will not be described further. The executing device 620 further includes a processor 622. The processor may be of any suitable type, such as a processor known from personal computers or an embedded microcontroller. The processor 622 is operated under control of a program. The program may be permanently embedded in the processor 622 using an embedded storage, like embedded ROM, but may also be loaded from a background storage, such as a hard disk (not shown). Under control of the program, the processor 622 loads the execution device function cascade and applies the loaded execution device function cascade to the functions g1, . . . , gN, for example by executing ED1(g1, . . . , gN). The resulting signal processing function may then be applied to the signal input x (e.g. content received from a medium). The processor 622 may load the execution device function cascade in any suitable form. For example, the cascade may have been pre-stored during manufacturing in a storage, reducing the loading to a straightforward memory read access. In the example of
In an embodiment, the functions g1, . . . , gN are supplied to the executing device 620 in the form of a plug-in for the program 710. In the case where the program 710 is already a plug-in, the functions g1, . . . , gN are effectively a plug-in for a plug-in. Alternatively, the functions g1, . . . , gN are provided to the executing device 620 by embedding the functions g1, . . . , gN in the software program 710 by applying the execution device function cascade to the function parameters g1, . . . , gN. In this way, the program 710 embeds both the functions hi and gi.
In an embodiment, each executing device and/or user of the executing device is unique and identified by a unique identity (e.g., a unique number j). In the system and method according to the invention, it is ensured that the sequences gi and hi are unique for the involved party. This can be achieved by obtaining the unique identity j of the executing device and/or user of the executing device a respective set of 2N invertible permutations pi that is unique for the obtained identity. Similarly, using the same set of permutations, a unique sequence of the permutations may be chosen. Both techniques (choosing a different set of permutations or a different sequence of permutations) may be combined. Preferably, the server stores (in a secure way) the unique set/sequence for each unique identity. In this way, each software media player in a personal computer can be supplied with a unique plug-in for decrypting and/or decoding a media title. The medium it self need not be unique. The encrypted content only depends on the encryption functions, not on the unique set/sequence of permutations. By regularly (e.g. at start-up of the media player) checking whether the software corresponds to the identity and only executing the software if a match can be established it can be ensured that no player software can be executed on a PC to which it does not belong. If inadvertently a hacker manages to obtain the device-specific permutations they can only be used on the involved PC, possible also for content protected with a different encryption (resulting in different functions ƒi), but not on different platforms.
Above a method and system have been described wherein a signal processing function cascade is supplied to executing devices in an obfuscated way. For each device the same set/sequence of permutations may be used or a device-specific set/sequence may be used. In the remainder an preferred approach is described for achieving a device-specific set/sequence by distributing the signal function cascade (‘key’) in an obfuscated way that is the same for each device and using a conversion routine (‘loader’) that converts the common key to a device-specific key. The ‘common key’ is created in much the same way as described before. The common key can in principle ‘unlock’ a reference player or anonymous player that, however, in this embodiment is not executed by any actual executing device. As before, the method includes selecting a set of 2N invertible permutations pi, where 1≦i≦2N and calculating a set of N functions gi, where gi is functionally equivalent to p2i−1∘ƒi∘p2i−1, for 1≦i≦N. Now additionally, the method includes selecting for each executing device, each identified by a unique index j, a corresponding set and/or sequence of 2N invertible permutations pj,i, that is unique for the device and/or a user of the device. This set is used to provide each device a unique ‘player’. This unique player is formed by calculating for each executing device j a corresponding set of N−1 functions hj,i, where hj,i is functionally equivalent to pj,2i−1−1∘pj,2i−2 for 2≦i≦N and equipping each executing device j with a respective execution device function cascade EDj(y1, . . . , yN) that includes yN∘hj,N∘yN−1∘hj,N−1∘ . . . ∘y1. This device-specific set hj,i, however, does not match the obfuscated function cascade, that can ‘unlock’ a reference player that uses set hi. This latter set/player set is not made available to any executing device. Instead, the executing device j is equipped with a respective loader function loaderj(x1, . . . , xN)=(lj,1∘x1∘rj,1, . . . , lj,N∘xN∘rj,N), where lj,i is functionally equivalent to pj,2i−1∘p2i and rj,i is functionally equivalent to p2i−1−1∘pj,2i−1. As before, each executing device is provided with the same functions g1, . . . , gN. The executing device then executes EDj(loaderj(g1, . . . , gN)). In this formula loaderj(g1, . . . , gN) effectively converts the anonymous key g1, . . . , gN into a device-specific key that optimally matches the execution device function cascade EDj(y1, . . . , yN). Using the definition that loaderj(g1, . . . , gN)=(gj,1, gj,2, . . . , gj,N), the i-th component of loaderj(g1, . . . , gN) is gj,i=lj,i∘gi∘rj,i. Using the definitions given above, this gives gj,i=pj,2i−1∘p2i∘p2i−1∘ƒi∘p2i−1∘p2i−1−1∘pj,2i−1, that can be rewritten as gj,i=pj,2i−1∘ƒi∘pj,2i−1. This is the same as using a device-specific set/sequence of permutations, where the device-specific set hj,i eliminates the permutations.
The concept of using an anonymous obfuscated key and a device-specific loader is also illustrated in
It will now be understood that the anonymous player 810 (incorporating gN, . . . , g1) may advantageously be provided to each executing device through broadcasting and/or distribution on a storage medium with a same content for each executing device, simply because this player is the same for each device. Similarly, the digital signal input x to be processed by each executing device can be distributed through broadcasting and/or distribution on a storage medium with a same content for each executing device. The loader-specific aspects are preferably provided to executing device j through a ‘one-to-one communication channel’ and/or a storage medium with a device-specific content with at least one the following sets of corresponding functions: hj,i, lj,i, or rj,i. The ‘one-to-one communication channel’ may be achieved in any suitable way. Preferably, the server downloads the device-specific information via a secure link (e.g. SSL) using Internet.
As described above, the function ƒ may be a decryption function based on a Feistel cipher network and each of the signal processing functions ƒi is a respective Feistel decryption round function. In such a case, each of the permutations pi is preferably a Feistel transformer where a function Q operating on a sequential pair <x, y> is a Feistel transformer if there exist invertible functions Qx and Qy and Q(x,y)=Qx(x),Qy(y), where Qx(x)⊕Qx(y)=Qx(x⊕y) and Qy(x)⊕Qy(y)=Qy(x⊕y). If these conditions are met, the functions ƒi can be optimally hidden. In practice, it can be shown that many such Feistel transformers exist, giving ample room for device-specific choices of permutations. The definition of the Feistel transformer is based on the insight that using the definitions given above a Feistel round ƒi(Li−1,Ri−1)=Ri−1,(Li−1⊕F(Ri−1,Ki)) can be seen as ƒi=swap∘involutaryF, with the definitions swap(x,y)=swap(y,x) and involutaryF(x,y)=x,y⊕F(x). It then holds that swap−1=swap and involutaryF−1=involutaryF.
It will be appreciated that the invention also extends to computer programs, particularly computer programs on or in a carrier, adapted for putting the invention into practice. The program may be in the form of source code, object code, a code intermediate source and object code such as partially compiled form, or in any other form suitable for use in the implementation of the method according to the invention. The carrier be any entity or device capable of carrying the program. For example, the carrier may include a storage medium, such as a ROM, for example a CD ROM or a semiconductor ROM, or a magnetic recording medium, for example a floppy disc or hard disk. Further the carrier may be a transmissible carrier such as an electrical or optical signal that may be conveyed via electrical or optical cable or by radio or other means. When the program is embodied in such a signal, the carrier may be constituted by such cable or other device or means. Alternatively, the carrier may be an integrated circuit in which the program is embedded, the integrated circuit being adapted for performing, or for use in the performance of, the relevant method.
It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be able to design many alternative embodiments without departing from the scope of the appended claims. In the claims, any reference signs placed between parentheses shall not be construed as limiting the claim. Use of the verb “comprise” and its conjugations does not exclude the presence of elements or steps other than those stated in a claim. The article “a” or “an” preceding an element does not exclude the presence of a plurality of such elements. The invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In the device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.
Staring, Antonius Adriaan Maria, Mallon, Willem Charles, Gorissen, Paulus Mathias Hubertus Mechtildus Antonius, Trescher, Joachim Artur, Treffers, Menno Anne
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
4751733, | May 15 1985 | Thomson-CSF | Substitution permutation enciphering device |
5838796, | Jan 11 1996 | Teledyne Technologies Incorporated | Statistically optimized bit permutations in interated block substitution systems |
5949884, | Nov 07 1996 | Entrust Technologies, Ltd. | Design principles of the shade cipher |
WO2005060147, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Nov 30 2004 | Irdeto BV | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Date | Maintenance Schedule |
Jan 25 2014 | 4 years fee payment window open |
Jul 25 2014 | 6 months grace period start (w surcharge) |
Jan 25 2015 | patent expiry (for year 4) |
Jan 25 2017 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 25 2018 | 8 years fee payment window open |
Jul 25 2018 | 6 months grace period start (w surcharge) |
Jan 25 2019 | patent expiry (for year 8) |
Jan 25 2021 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 25 2022 | 12 years fee payment window open |
Jul 25 2022 | 6 months grace period start (w surcharge) |
Jan 25 2023 | patent expiry (for year 12) |
Jan 25 2025 | 2 years to revive unintentionally abandoned end. (for year 12) |