WO2005060147A1 - Block ciphering system, using permutations to hide the core ciphering function of each encryption round - Google Patents

Block ciphering system, using permutations to hide the core ciphering function of each encryption round Download PDF

Info

Publication number
WO2005060147A1
WO2005060147A1 PCT/IB2004/052607 IB2004052607W WO2005060147A1 WO 2005060147 A1 WO2005060147 A1 WO 2005060147A1 IB 2004052607 W IB2004052607 W IB 2004052607W WO 2005060147 A1 WO2005060147 A1 WO 2005060147A1
Authority
WO
WIPO (PCT)
Prior art keywords
function
functions
cascade
digital signal
executing
Prior art date
Application number
PCT/IB2004/052607
Other languages
French (fr)
Inventor
Paulus M. H. M. A. Gorissen
Joachim A. Trescher
Antonius A. M. Staring
Willem C. Mallon
Menno A. Treffers
Original Assignee
Koninklijke Philips Electronics N.V.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics N.V. filed Critical Koninklijke Philips Electronics N.V.
Priority to JP2006543679A priority Critical patent/JP4884976B2/en
Priority to US10/596,336 priority patent/US8023651B2/en
Priority to MXPA06006464A priority patent/MXPA06006464A/en
Priority to CN2004800362647A priority patent/CN1890914B/en
Priority to AT04799288T priority patent/ATE509442T1/en
Priority to EP04799288A priority patent/EP1712032B1/en
Priority to BRPI0417450-0A priority patent/BRPI0417450A/en
Publication of WO2005060147A1 publication Critical patent/WO2005060147A1/en
Priority to KR1020067011425A priority patent/KR101079565B1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Definitions

  • 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.
  • the user 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.
  • 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 Fig. 1, where a media player 100 includes a core player 100 and several format- specific plug-ins (shown are plug-ins 120, 122 and 124).
  • the core player 100 may, for example, provide the user interface for controlling the player.
  • Each plug-in includes a respective decoder. It may send the decoded content directly to rendering HW/SW, such as a sound-card, or pass it on to the core player 100 for further processing.
  • a secure plug-in is used that not only decodes the content in the specific format but also decrypts the content. This is illustrated in Fig.2, where the encrypted content is first fed through a decryptor 230 and next the decrypted content is fed through the format-specific decoder 220.
  • the decryptor 230 may receive a decryption key/license from a license database 210.
  • 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.
  • the algorithm can be described as a function cascade f N °---°f x (x) , where function /, represents the functionality of round i .
  • Most block algorithms are Feistel networks. In such networks, the input data block JC of even length n is n divided in two halves of length — , usually referred to as L and R. So, the input x fed to the
  • a method of providing a digital signal processing function / to an executing device in an obfuscated form includes: selecting a set of 2N invertible permutations p, , l ⁇ i ⁇ 2N ; calculating a set of N functions g , where g, is functionally equivalent to calculating a set of N - 1 functions h t , where h, is functionally equivalent to
  • P2ll °P2,-2 > f ⁇ 2 ⁇ i ⁇ N ' > equipping the executing device with an execution device function cascade that includes y N °h N ° y N _ x ° h N _ x °...°y , where y , ... , N are function parameters (for example, ED X ( > intersect..., y N ) ⁇ y N ° h N o y N _ ⁇ h N _ ⁇ ... y ⁇ ), providing the functions g x , ...
  • the constituent functions f are provided in an encapsulated form as g, , where g, is functionally equivalent to ⁇ °f, ° p 2l - ⁇ , for 1 ⁇ ? ⁇ N .
  • the functions p, used for the encapsulation are also hidden by being supplied in the form of h, which is a multiplied version of ⁇ )_ x ° p 2l _ 2 , for 2 ⁇ i ⁇ N .
  • the execution function device cascade may form the core functionality of a media player, where the set g x , ... , g N enables the player to execute a function cascade containing /j up to and including f N .
  • the dependent claims 2 and 3 show two respective alternative embodiments for protecting the (functional) beginning of the function cascade.
  • the execution device function cascade starts with p x l , for example
  • security is increased by extending the function cascade with a starting function / 0 that aids in hiding p x ⁇ x .
  • f 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
  • the chosen sequence of permutations p is unique for the device.
  • the function cascade is supplied to the execution device not only in an obfuscated form but also in a personalized form.
  • 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 g x , ... , g N .
  • 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.
  • the functions g x ,...,g N form a plug-in for the program. If the program itself is a plug-in, then the functions g x , ... , g N are in effect a plug-in for the plug-in.
  • g N may be embedded in the same program as the execution device function cascade.
  • 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 f, , where
  • g is functionally equivalent to p 2 ⁇ ) ° f ° p 2i _ x , for 1 ⁇ i ⁇ N ; h j is functionally equivalent to p 2 _ x °p 2lêt 2 for l ⁇ i ⁇ N; and p, is an invertible permutation, for l ⁇ i ⁇ 2N .
  • P I °P 2I and r ⁇ is functionally equivalent to p 2 ,- ⁇ l °P ,2,- ⁇ > providing to the executing device the functions g x , ... , g N ; and in the executing device, executing ED j (loader ⁇ (g x ,...,g N )) -
  • the functions f are obfuscated in the form of the functions g x ,...,g N in the same way as described for claim 1.
  • the functions g i ⁇ ...,g N 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 g, to corresponding device specific functions that can be fed to the execution device cascade.
  • the loader function uses conversion functions l J t and r that are based on a set sequence of permutations that are not revealed.
  • the functions g 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 DND.
  • Fig.1 shows a block diagram of a prior art plug-in based decoding
  • Fig.2 shows a block diagram of a prior art based decryption
  • Fig.3 shows a block diagram of a prior art integrated decryption/decoding system
  • Fig.4 shows the obfuscating according to the invention
  • Fig.5 shows a simple example of obfuscation
  • Fig.6 shows a block diagram of a system according to the invention
  • Fig.7 shows a further embodiment of a system according to the invention
  • Fig.8 illustrates anonymous obfuscation according to the invention
  • Fig.9 illustrates an alternative embodiment for anonymous obfuscation.
  • Fig.3 shows a block diagram of prior art system in which the invention may be employed.
  • content typically Audio andor video content
  • the medium may be the same for each player.
  • the medium may be of any suitable type, e.g. audio CD, DVD, solid state, etc.
  • the content on the medium is copy protected, preferably by being encrypted under using an encryption algorithm, such as a Feistel cipher.
  • the storage medium may include information relating the decryption key.
  • the storage medium may include information 312 (such as an identifier) that enables the player to retrieve the information, for example by downloading it from a server in the Internet.
  • the decryption key is created in a secure module 320 by using a key-specific key 322 and the information 312 to calculate 324 the decryption key 326.
  • the decryption key is the received 332 in a second module 330.
  • the second module 330 decrypts 334, decodes 336 and renders 338 the content 314 of the medium 310.
  • Fig.4 illustrates the method according to the invention.
  • a digital signal processing function/ is provided to an executing device in an obfuscated form.
  • the function/ includes a function cascade including a plurality of signal processing functions , l ⁇ i ⁇ N .
  • the core of the function cascade may be formed by EC, (x) ⁇ f N ° • • • • o f ⁇ (x) .
  • the function cascade may be any digital signal processing function.
  • the function cascade includes a cipher.
  • the function/ may represent the i round (i>0) of a Feistel cipher.
  • 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.
  • a set of N-l functions is calculated, where h x is functionally equivalent to ° P 21 - 2 » f° r 2 ⁇ ⁇ N .
  • / 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 executing device is equipped with the execution device function cascade that includes y N °h N ° y N _ x h N _ ° ...
  • y x , ... , y N are function parameters. This is shown in Fig.4 as a sequence of functions h H , h N _ x , ... , ⁇ 410.
  • An exemplary execution device function cascade is ED (y ...,y N ) ⁇ y M ° N ° y N _ x ° h N _ x °...°y x .
  • the functions g x ,-.-,g N are provided to the executing device. This is shown in Fig.4 as a sequence of functions g N ,g N ⁇ ,...,g x 420.
  • the execution device function cascade is applied to the functions g, , ... , g N .
  • This function can then be applied to the digital signal input x. Taking a look at a middle part of the chain like h l+x °g, °h t > this gives:
  • K °g l 0 P2I1 ° ⁇ i ° P ° f, ° A ° P2I1 ° P 2 ,-2 ⁇ P2 1 ° f, ° P2-2 ⁇
  • the firat d Ieast 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 f N ° ⁇ • - o / (x) without having access to any of the functions/. These functions are thus obfuscated. In preferred embodiments, options are given for dealing with the beginning and ending of the chain.
  • the resulting total signal processing function in the executing device may be ED X (g, g N ) ⁇ p 2N x _ x °f N °--'°f i (x)°p i .
  • the tetmpi can be eliminated by using an execution device function cascade that includes y N ° N y N _ x o h N _ ⁇ o ... o y ⁇ o p ⁇ ⁇ .
  • p x 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 ), (for example, FC 2 (x) ⁇ f N °---°f ⁇ a f 0 (x))-
  • the execution device function cascade then includes y N °h N ⁇ > y N _ x h N _ x o,..oy l oS x , ⁇ ox example (ED 3 0>, y N ) ⁇ y N h N y N i oh N _ x 0...0 y oS, ) , where S, is functionally equivalent to A -1 ° /o • hi ⁇ s a m e individual terms p x ⁇ ⁇ and fo need not be revealed, but only the multiplicated form ?, -1 °f Q exists.
  • the execution device function cascade may include P 2N °y N ° h N °y N - ⁇ ° t 0 ---° y ⁇ ( ⁇ S,ED 4 (y x ,...,y N ) ⁇ p 2N °y N °h N °y N _ h N _ x °...°y x ).
  • the function cascade may end with a further signal processing function fif+ ⁇ , (for example, EC 3 (JC) ⁇ f N+x 0 f N 0 ---°f l (x))-
  • the execution device function cascade then includes S 2 y N oh N ⁇ > y N _ o h N _ x °...°y x (e.g., ED 5 (y x ,...,y N ) ⁇ S 2 y N oh N °y N _ x °h N _ °...°y x ) , where S 2 is functionally equivalent Fig.6 illustrates a system in which the invention may be employed.
  • the system 600 includes a server 610 and at least one executing device 620.
  • the server may be implemented on a conventional computer platform, for example on a platform used as a server, such as a web server, or file server.
  • the server includes a processor 612.
  • the processor 612 is operated under control of a program.
  • the program may be permanently embedded in the processor in an embedded storage, like embedded ROM, but may also be loaded from a background storage, such as a hard disk (not shown).
  • the processor 612 Under control of the program, the processor 612: • selects the set of 2N invertible permutations p, , l ⁇ i ⁇ lN ; • calculates the set of N functions g, , where g, is functionally equivalent to , l o - r °A,- ⁇ > for ! ⁇ *' ⁇ ; and • calculates the set of N-l functions h, , where h, is functionally equivalent to A ⁇ ,-. °A,- 2 > for 2 ⁇ t ⁇ ; N.
  • the permutations may be selected (e.g. randomly or pseudo-randomly) chosen from a very large set of permutations that may be stored in a (preferably secure) storage (not shown).
  • the server may also use a suitable program to generate the permutations. It is well-known how to create invertible permutations and this will not be described here any further. Additionally, the server includes means 614 for equipping the executing device with an execution device function cascade that includes y N ° N ⁇ > y N _ ⁇ o h N _ x °...°y x , where y utilizat ... , y N are the function parameters. The server may do this in any suitable form. For example, in a factory the terms h, may be stored in a storage module of the executing device during the manufacturing of the executing device 620. Fig.6 shows that the terms are downloaded through the Internet 630 directly to the executing device 620. The server 610 also includes means 616 for providing the functions g x ,...,g N to the executing device 620.
  • the functions g incorporate the respective functions / .
  • the functions / may be chosen specifically for the digital signal input x .
  • each video title may be encrypted with a corresponding encryption function (e.g. using a same cipher but with a content specific key).
  • the server 610 may also include the software for controlling the processor 612 to encrypt the content 640 and supply the encrypted content 642 to a distribution medium, e.g. for distribution on a storage medium or through a communication medium like the Internet.
  • the executing device 620 includes means 626 for obtaining the functions g, , ... , g N 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).
  • the processor 622 loads the execution device function cascade and applies the loaded execution device function cascade to the functions g, , ... , g N , for example by executing ED (g, , ... , g M ) .
  • 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.
  • the cascade may have been pre-stored during manufacturing in a storage, reducing the loading to a straightforward memory read access.
  • the executing device 620 includes means 624 for retrieving the cascade (or the terms of the cascade), for example, through the Internet 630 or from the medium 650.
  • the executing device 620 may retrieve encrypted content 652 from the medium 650, and decrypt this using the processor 622.
  • the processor may also decode the decrypted content.
  • Fig.7 shows a preferred embodiment wherein the execution device function cascade is provided to the executing device 620 embedded in a software program 710 for execution by the processor 622.
  • the software program 710 may be a plug-in for a program like a media player.
  • the means 614 of Fig.7 may supply this plug-in 710 via the Internet (e.g. item 630 of Fig.7) or embed it directly into the executing device 620 during manufacturing.
  • the functions g x ,...,g N are supplied to the executing device 620 in the form of a plug-in for the program 710.
  • the functions g , ... , g N are effectively a plug-in for a plug-in.
  • the functions g, ,... , g N are provided to the executing device 620 by embedding the functions g ,...,g N in the software program 710 by applying the execution device function cascade to the function parameters g, , ... , g N .
  • the program 710 embeds both the functions h, and g, .
  • each executing device and/or user of the executing device is unique and identified by a unique identity (e.g., a unique number ). In the system and method according to the invention, it is ensured that the sequences g, and h, are unique for the involved party.
  • the server stores (in a secure way) the unique set/sequence for each unique identity.
  • 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.
  • a signal processing function cascade is supplied to executing devices in an obfuscated way.
  • the same set/sequence of permutations may be used or a device-specific set/sequence may be used.
  • 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.
  • the method includes selecting a set of 2N invertible permutations ?,, where 1 ⁇ / ⁇ 2N and calculating a set of N functions g, , where g, is functionally equivalent to
  • the method includes selecting for each executing device, each identified by a unique index/, a corresponding set and/or sequence of 2N invertible permutations p , 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/ a corresponding set of N-l functions h , where h ⁇ _, is functionally equivalent to A ,2 ⁇ - ⁇ ° h ⁇ - ⁇ f° r 2 ⁇ / ⁇ N and equipping each executing device/ with a respective execution device function cascade ED ⁇ (y x ,...,y N ) that includes y N o h J>N ° y N _ ° h N _ °...°y x .
  • This device-specific set h )Jt does not match the obfuscated function cascade, that can 'unlock' a reference player that uses set h, .
  • each executing device is provided with the same functions g, , ... , g N .
  • the executing device then executes ED J (loader J (g x ,...,g N )) .
  • loade ⁇ ,...,g N effectively converts the anonymous key g ⁇ ,...,g N into a device-specific key that optimally matches the execution device function cascade ED ) (y ,...,y N ) .
  • loader J (g x ,...,g N ) (g JiX ,g j 2 ,--- > g JtN )
  • the concept of using an anonymous obfuscated key and a device-specific loader is also illustrated in Fig.8.
  • the anonymous player Pl-R 810 incorporates the functions h,.
  • the anonymous player Pl-R can be unlocked by the corresponding key K-R 812 that includes the obfuscated signal processing functions / in the form of the set g, .
  • the anonymous player Pl-R is not disclosed to any party.
  • Each party is instead provided with a unique, device-specific player, shown are players Pl-1 830 and Pl-2 840.
  • the common key K-R is provided to all parties. However, this common key does not match the specific players.
  • each party is also provided with a device-specific key loader K-L, shown are 820 and 825.
  • the loader 820, 825 is used to convert the anonymous key K-R 812 into a device-specific key K-j..
  • loader K-L includes the functions l M , and r J>t .
  • a device-specific loader is used.
  • the loader may be the same, but fed with the device-specific functions / and r .
  • Fig.9 being fed with/, , and ⁇ , converts the anonymous key K-R 812 into the device-specific key 832 for device 1; being fed with 2 , and r 2 , converts the anonymous key
  • the device-specific players 830, 840 are then unlocked using the device-specific key sets h ⁇ , 832 and 842, respectively.
  • the phrase 'key' and 'player' is interchangeable since two chains of functions intre-lock.
  • the example of Fig.4 illustrates both chains as keys. In an analogous way, it could also be illustrated as two interlocking players.
  • the anonymous player 810 (incorporating gN,.- » gi) may advantageously be provided to each executing device through broadcasting andor distribution on a storage medium with a same content for each executing device, simply because this player is the same for each device.
  • 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/ 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: h j , l j , ⁇ ,o ⁇ r .
  • the 'one-to-one communication channel' may be achieved in any suitable way.
  • the server downloads the device-specific information via a secure link (e.g. SSL) using Internet.
  • SSL secure link
  • the function/ may be a decryption function based on a Feistel cipher network and each of the signal processing functions/ is a respective Feistel decryption round function.
  • 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.
  • 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.
  • 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.
  • the carrier may be constituted by such cable or other device or means.
  • 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.

Abstract

In a system (600), a server (610) provides a digital signal processing function ƒ to an executing device (620) in an obfuscated form. The function ƒ includes a function cascade of signal processing functions f1 , 1≤ i ≤ N to formula (I). The server includes a processor (612) for selecting a set of 2N invertible permutations pi,, 1≤i≤ 2N; calculating a set of N functions g, , where g, is functionally equivalent to formula (II) for 1≤i≤N ; and calculating a set of N-1 functions h, , where h, is functionally equivalent to formula (III) for 2≤ i≤ N. The server includes means (614) for equipping the executing device with an execution device function cascade that includes formula (IV), where y1 , ... , yN are function parameters to formula (V), and means (616) for providing the functions g1, , ... gN to the executing device. The executing device includes means (626) for obtaining the functions g1,..., gN and a processor (622) for loading the execution device function cascade and applying the loaded execution device function cascade to the functions g1,...,gN (e.g.,ED,(g1,...,gN)).

Description

BLOCK CIPHERING SYSTEM, USING PERMUTATIONS TO HIDE THE CORE CIPHERING FUNCTION OF EACH ENCRYPTION ROUND
FIELD OF THE INVENTION 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.
BACKGROUND OF THE INVENTION 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 Fig. 1, where a media player 100 includes a core player 100 and several format- specific plug-ins (shown are plug-ins 120, 122 and 124). The core player 100 may, for example, provide the user interface for controlling the player. Each plug-in includes a respective decoder. It may send the decoded content directly to rendering HW/SW, such as a sound-card, or pass it on to the core player 100 for further processing. For secure rendering, a secure plug-in is used that not only decodes the content in the specific format but also decrypts the content. This is illustrated in Fig.2, where the encrypted content is first fed through a decryptor 230 and next the decrypted content is fed through the format-specific decoder 220. The decryptor 230 may receive a decryption key/license from a license database 210. 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-lth round is the input of the Ith round. Thus, for a system with N rounds the algorithm can be described as a function cascade fN °---°fx(x) , where function /, represents the functionality of round i . Most block algorithms are Feistel networks. In such networks, the input data block JC of even length n is n 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>Rϋ). The Ith round (z>0) performs the function f, , where f, is defined as ((A-., ,.,)) = (*,-,>( -t ®))> , Kt is a subkey used in the z* round and F is an arbitrary round function. SUMMARY OF THE INVENTION 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 f, , 1 < i ≤ N , for processing a digital signal input x to yield a digital signal output (for example, FCX (x) ≡fN °-"°fι(x) ), includes: selecting a set of 2N invertible permutations p, , l ≤ i ≤ 2N ; calculating a set of N functions g , where g, is functionally equivalent to calculating a set of N - 1 functions ht , where h, is functionally equivalent to
P2ll °P2,-2 > fθτ 2 ≤ i ≤ N '> equipping the executing device with an execution device function cascade that includes yN °hN ° yN_x ° hN_x °...°y , where y , ... , N are function parameters (for example, EDX ( >„..., yN ) ≡ yN ° hN o yN_χ hN_χ ... yχ), providing the functions gx , ... , gN to the executing device; and in the executing device, applying the execution device function cascade to the functions gl}...,gN (for example, EDX ( ,...,£*)) . According to the invention the constituent functions f, are provided in an encapsulated form as g, , where g, is functionally equivalent to ρ °f, ° p2l-\ , for 1 < ? < N . The functions p, used for the encapsulation are also hidden by being supplied in the form of h, which is a multiplied version of ρ )_x ° p2l_2 , for 2 < i ≤ N . By executing the functions g, and h, in the execution device in an interleaved manner (as for example is illustrated in Fig.4) the functionality of the function cascade is achieved without /, being directly recognizable.
In particular, if ft represents a round function of a Feistel cipher, the round key that is embedded in the round function is not directly recognizable. The obfuscated delivery of f, increases security. The execution function device cascade may form the core functionality of a media player, where the set gx , ... , gN enables the player to execute a function cascade containing /j up to and including fN . 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 px l , for example
ED2(yx,...,yN) = yN °hN °yN_x ° ι °—° i ° '• Applying this to gx,...,gN, gives as a functional start of the function sequence executed in the device:
■■•og2 oh2 °gx op 1
Figure imgf000006_0001
.-op;1 o/2 ofl t in this way the execution device explicitly executes fx . In the embodiment of claim 3, security is increased by extending the function cascade with a starting function /0 that aids in hiding px ~x . The function cascade may, for example, be FC2 x) = fN o • • ■ o fχ o f0 (x) . The execution device function cascade starts with a function Sx , for example ED3 (yι,---,yN) = yN ° N ° yN_x ° hN_x °...oyχ oSx , where Sj is functionally equivalent to p 1 f0. Since S, only represents px ~ in a form multiplied with f0 , px ~x can not be retrieved from the execution device in a direct way such as reading certain memory locations.
Preferably, f0 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 p, 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 gx , ... , 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 gx,...,gN form a plug-in for the program. If the program itself is a plug-in, then the functions gx , ... , 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 gx , ... , 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 f, , where
1 < i ≤ N , for processing a digital signal input x to yield a digital signal output (for example, EC, (x) ≡fN o... ofl (x) \ by: loading an execution device function cascade that includes N °hN N_χ o hN_x °...°yx, where yx,...,yN are function parameters, loading a set of functions gx , ... , gN ; applying the execution device function cascade to the set of functions gι,---,gN ; where: g, is functionally equivalent to p2 ~) ° f ° p2i_x , for 1 ≤ i ≤ N ; hj is functionally equivalent to p2 _x °p2l2 for l ≤ i ≤ N; and p, is an invertible permutation, for l ≤ 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 /; , where 1 < / N , for processing a digital signal input x to yield a digital signal output ( for example, EC, (x) ≡ fN °---°fι(x) ), includes: selecting a set of 2N invertible permutations p, , where 1 < i ≤ 2N ; calculating a set of N functions g, , where g, is functionally equivalent to selecting for each device j a corresponding set and or sequence of 2N invertible permutations p} i , that is unique for the device andor a user of the device; calculating for each executing device j a corresponding set of N-l functions , , where hJ t is functionally equivalent to p~]2,_x ° pj ,-2 fox l ≤ i ≤ N; equipping each executing device/ with a respective execution device function cascade ED} (yx,.--,yN) that includes yN °h N ° yN_x ° hj N_x °...°yt ; equipping each executing device j with a respective loader function loaderj(xx,...,xN) = (lj X °x °rJtl,... j N °xN °r,>JV), where / , is functionally equivalent to
P I °P2I and rΛ, is functionally equivalent to p2,-\ l °P ,2,-ι > providing to the executing device the functions gx , ... , gN ; and in the executing device, executing EDj (loader } (gx,...,gN)) - The functions f are obfuscated in the form of the functions gx,...,gN in the same way as described for claim 1. The functions gi }...,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 g, to corresponding device specific functions that can be fed to the execution device cascade. The loader function uses conversion functions lJ t and r that are based on a set sequence of permutations that are not revealed. According to the measure of the dependent claim 12, the functions g, 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 DND. These and other aspects of the invention are apparent from and will be elucidated with reference to the embodiments described hereinafter.
BRIEF DESCRIPTION OF THE DRAWINGS In the drawings: Fig.1 shows a block diagram of a prior art plug-in based decoding; Fig.2 shows a block diagram of a prior art based decryption; Fig.3 shows a block diagram of a prior art integrated decryption/decoding system; Fig.4 shows the obfuscating according to the invention; Fig.5 shows a simple example of obfuscation; Fig.6 shows a block diagram of a system according to the invention; Fig.7 shows a further embodiment of a system according to the invention; Fig.8 illustrates anonymous obfuscation according to the invention; and Fig.9 illustrates an alternative embodiment for anonymous obfuscation.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT Fig.3 shows a block diagram of prior art system in which the invention may be employed. In the example of Fig.3 content (typically Audio andor video content) is distributed on a medium 310. The medium may be the same for each player. The medium may be of any suitable type, e.g. audio CD, DVD, solid state, etc. The content on the medium is copy protected, preferably by being encrypted under using an encryption algorithm, such as a Feistel cipher. The storage medium may include information relating the decryption key. Alternatively, the storage medium may include information 312 (such as an identifier) that enables the player to retrieve the information, for example by downloading it from a server in the Internet. The decryption key is created in a secure module 320 by using a key-specific key 322 and the information 312 to calculate 324 the decryption key 326. The decryption key is the received 332 in a second module 330. The second module 330 decrypts 334, decodes 336 and renders 338 the content 314 of the medium 310. Fig.4 illustrates the method according to the invention. A digital signal processing function/is provided to an executing device in an obfuscated form. The function/ includes a function cascade including a plurality of signal processing functions , l ≤ i ≤ N . For example the core of the function cascade may be formed by EC, (x) ≡ fN ° • • • o fχ (x) . It should be noted that here the conventional mathematical notation is used: S ° f(x) - S (/( )) • I*1 principle, the function cascade may be any digital signal processing function. In a preferred embodiment, the function cascade includes a cipher. For example, the function/ may represent the i round (i>0) of a Feistel cipher. In such a case,/ is defined as: f, (L^x ® Rl_x) ^Rl_x ®(Ll_x ΘF(Rl_x,Kl)), where K, is a subkey used in the Ith round and E is an arbitrary round function. According to the invention, a set of 2N invertible permutations p„ 1 < i < 2N is selected. Next, a set of N functions g, is calculated, where g, is functionally equivalent to
P21 °fι ° P21-1 , for 1 < / < N . In this context with functionally equivalent is meant that if g, is applied to a same input (e.g. x) the same outcome is achieved as when p~j 0 0 p2ι l is applied to that input, for each allowed value of the input. The composite functions p2] , / , and p2l_x are not separately visible, g, provides the black box functionality of p2l °f ° p2l_x . Fig. 5 illustrates this approach for very simple one-dimensional functions. In this example,
P4(x) = x+3. Thus
Figure imgf000010_0001
g2ω = A1 ° 2 °ΛW-= 1 ° 2(E3W) = ^1 ° 2(f) = A,(f+3) = ( +3)2. Itiswell- kno wn from the field of computer compiler building how the black box functionality of p2 ~ l o / o p2ι l 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-l functions is calculated, where hx is functionally equivalent to ° P21-2 » f°r 2 < < N . Using the simple example of Fig.5, hj, (x) = p { O p2 x) = 3 • p2 x) h3(x) = Ps1 o p (x) = p ( ) . Using these definitions, part of the execution device cascade that hides f2 would be:
Figure imgf000010_0002
= (p l ( /X )) o (p2 x) + 3)2 = p~l (I/(JP2 (x) + 3)2 ) = Psl (p2 (x) + 3) . It can be observed that this is indeed functionally equivalent to p •*> f2 ° p2 (x) • Thus, the executing device that has executed this cascade has executed f2 without having explicit knowledge of f2 . In a further example, N=2, and / and^ are each evaluated to a respective mapping table given by: /:{ 0 -> 3, 1 -> 1, 2 -> 6, 3 -> 2, 4 -> 7, 5 -> 5, 6 -> 4, 7 -> 0, 8 -> 8 }, ft : { 0 -> 4, 1 -> 1 , 2 -> 5 , 3 -> 7, 4 -> 6, 5 -> 2, 6 -> 0, 7 -> 8, 8 -> 3 } .
In this example,/ 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: px\ { 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, -> 1, 7 -> 4, 8 -> 6 } For this example the following three inverse permutations are used: p~x : { 0 -> 6, 1 -> 7, 2 -> 5, 3 -> 3, 4 -> 4, 5 -> 8, 6 -> 1 , 7 -> 2, 8 -> 0 } p;1 : { 0 -> 5, 1 -> 3, 2 -> 6, 3 -> 0, 4 -> 8, 5 -> 1, 6 -> 4, 7 -> 2, 8 -> 7 } p-χ : { 0 -> 1, 1 -> 6, 2 -> 3, 3 -> 0, 4 -> 7, 5 -> 2, 6 -> 8, 7 -> 4, 8 -> 5 }
Giving these functions, ^ x) = p~x °pz(x) is then given as: h2: { 0 -> 7, 1 -> 4, 2 -> 2, 3 -> 0, 4 -> 8, 5 -> 6, -> 5, 7 -> 3, 8 -> 1 }. For example, pi maps 0 to 8 and p~l maps 8 to 7. Thus, f^ (0) = p x °p2( ) = 7.
Similarly, g, (x) = p2 l °fι °px (x) is given by: gi: { 0 -> 8, 1 -> 5, 2 -> 7, 3 -> 6, 4 -> 3, 5 -> 4, 6 -> 1, 7 -> 0, 8 -> 2 } and g2 (x) = p'x <>f2 op3 (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_x hN_ ° ... o yχ 5 where yx , ... , yN are function parameters. This is shown in Fig.4 as a sequence of functions hH , hN_x , ... , ^ 410. An exemplary execution device function cascade is ED (y ...,yN) ≡yM ° N ° yN_x ° hN_x °...°yx . Furthermore, the functions gx,-.-,gN are provided to the executing device. This is shown in Fig.4 as a sequence of functions gN,gN^,...,gx 420. In the executing device, the execution device function cascade is applied to the functions g, , ... , gN . This gives, for example, the total signal processing function ££>, (g„ ... , gN ) in the executing device. This function can then be applied to the digital signal input x. Taking a look at a middle part of the chain like hl+x °g, °ht > this gives:
K °gl 0 = P2I1 ° Λi ° P ° f, ° A ° P2I1 ° P2,-2 ~ P2 1 ° f, ° P2-2 ■ The firat d Ieast 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 fN ° ■ • - o / (x) without having access to any of the functions/. 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 EDX (g, gN) ≡ p2N x _x °fN °--'°fi(x)°pi . For example, the tetmpi can be eliminated by using an execution device function cascade that includes yN ° N yN_x o hN_χ o ... o yχ o pχ ~ . For example, ED2 (yx , ... , yN) a y^ o hv ° yy_, <> i ° — ° Λ ° A"1 • Preferably, the term p x 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 ), ( for example, FC2 (x) ≡ fN °---°fι af0(x))- The execution device function cascade then includes yN °hN <> yN_x hN_x o,..oyl oSx , ϊox example (ED30>, yN) ≡yN hN yN i ohN_x 0...0 y oS, ) , where S, is functionally equivalent to A-1 ° /o • hi ^ήs a me individual terms px~γ and fo need not be revealed, but only the multiplicated form ?,-1 °fQ exists. Preferably,/) 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 Pw-\ • For example, the execution device function cascade may include P2N °yN °h N °yN-ι ° t 0---° y\ (^S,ED4(yx,...,yN) ≡ p2N °yN °hN °yN_ hN_x °...°yx). To better protect p2N , the function cascade may end with a further signal processing function fif+ι , ( for example, EC3 (JC) ≡ fN+x 0fN 0---°fl(x))- The execution device function cascade then includes S2 yN ohN <> yN_ o hN_x °...°yx (e.g., ED5(yx,...,yN) ≡ S2 yN ohN °yN_x °hN_ °...°yx) , where S2is functionally equivalent
Figure imgf000012_0001
Fig.6 illustrates a system in which the invention may be employed. The system 600 includes a server 610 and at least one executing device 620. The server may be implemented on a conventional computer platform, for example on a platform used as a server, such as a web server, or file server. The server includes a processor 612. The processor 612 is operated under control of a program. The program may be permanently embedded in the processor in 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 612: • selects the set of 2N invertible permutations p, , l ≤ i ≤ lN ; • calculates the set of N functions g, , where g, is functionally equivalent to ,l o- r °A,-ι> for ! ≤ *' ≤ ; and • calculates the set of N-l functions h, , where h, is functionally equivalent to A~,-. °A,-2 > for 2 < t <; N. The permutations may be selected (e.g. randomly or pseudo-randomly) chosen from a very large set of permutations that may be stored in a (preferably secure) storage (not shown). The server may also use a suitable program to generate the permutations. It is well-known how to create invertible permutations and this will not be described here any further. Additionally, the server includes means 614 for equipping the executing device with an execution device function cascade that includes yN ° N <> yN_χ o hN_x °...°yx , where y„ ... , yN are the function parameters. The server may do this in any suitable form. For example, in a factory the terms h, may be stored in a storage module of the executing device during the manufacturing of the executing device 620. Fig.6 shows that the terms are downloaded through the Internet 630 directly to the executing device 620. The server 610 also includes means 616 for providing the functions gx,...,gN to the executing device 620.
The functions g, incorporate the respective functions / . The functions / may be chosen specifically for the digital signal input x . For example, each video title may be encrypted with a corresponding encryption function (e.g. using a same cipher but with a content specific key). To this end, the server 610 may also include the software for controlling the processor 612 to encrypt the content 640 and supply the encrypted content 642 to a distribution medium, e.g. for distribution on a storage medium or through a communication medium like the Internet. The executing device 620 includes means 626 for obtaining the functions g, , ... , 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 g, , ... , gN , for example by executing ED (g, , ... , gM) . 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 Fig.6, the executing device 620 includes means 624 for retrieving the cascade (or the terms of the cascade), for example, through the Internet 630 or from the medium 650. Similarly, the executing device 620 may retrieve encrypted content 652 from the medium 650, and decrypt this using the processor 622. The processor may also decode the decrypted content. Fig.7 shows a preferred embodiment wherein the execution device function cascade is provided to the executing device 620 embedded in a software program 710 for execution by the processor 622. Same numbers in Fig.7 refers to the same items as used in Fig.6. The software program 710 may be a plug-in for a program like a media player. Thus, the means 614 of Fig.7 may supply this plug-in 710 via the Internet (e.g. item 630 of Fig.7) or embed it directly into the executing device 620 during manufacturing. In an embodiment, the functions gx,...,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 g , ... , gN are effectively a plug-in for a plug-in.
Alternatively, the functions g, ,... , gN are provided to the executing device 620 by embedding the functions g ,...,gN in the software program 710 by applying the execution device function cascade to the function parameters g, , ... , gN . In this way, the program 710 embeds both the functions h, and g, . 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 ). In the system and method according to the invention, it is ensured that the sequences g, and h, are unique for the involved party. This can be achieved by obtaining the unique identity/ of the executing device and/or user of the executing device a respective set of 2N invertible permutations p, 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 ), 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 ?,, where 1 < / < 2N and calculating a set of N functions g, , where g, is functionally equivalent to
A;' ° fι ° Ai-i , for 1 < < N . Now additionally, the method includes selecting for each executing device, each identified by a unique index/, a corresponding set and/or sequence of 2N invertible permutations p , 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/ a corresponding set of N-l functions h , where h} _, is functionally equivalent to A,2ι-ι ° h ι-ι f°r 2 < / < N and equipping each executing device/ with a respective execution device function cascade ED} (yx,...,yN) that includes yN o hJ>N ° yN_ ° h N_ °...°yx . This device-specific set h)Jt , however, does not match the obfuscated function cascade, that can 'unlock' a reference player that uses set h, . This latter set/player set is not made available to any executing device. Instead, the executing device/ is equipped with a respective loader function loaderJ(xx,...,xff) = (lj X χ o j lj N χN °rJ>N), where / is functionally equivalent to
A,2ι ° A>/ andr J,i *s functionally equivalent to p2l_x ~l ° pJy2l-\ • As before, each executing device is provided with the same functions g, , ... , gN . The executing device then executes EDJ(loaderJ(gx,...,gN)) . In this formula loade ^,...,gN) effectively converts the anonymous key gι,...,gN into a device-specific key that optimally matches the execution device function cascade ED) (y ,...,yN) . Using the definition that loaderJ(gx,...,gN) = (gJiX,gj 2,--->gJtN) , the z-th component of loader j(gx,...,gN) is g = lj ι ogι orJJ . Using the definitions given above, this gives gj,, = Aj.2, ° A, ° A",1 ° f, ° AM ° AM "1 ° Pj#-ι > mat can be rewritten as g, , = p~ l ° / o ^ 2 . This is the same as using a device-specific set sequence of permutations, where the device- specific set h eliminates the permutations. The concept of using an anonymous obfuscated key and a device-specific loader is also illustrated in Fig.8. The anonymous player Pl-R 810 incorporates the functions h,. The anonymous player Pl-R can be unlocked by the corresponding key K-R 812 that includes the obfuscated signal processing functions / in the form of the set g, . The anonymous player Pl-R is not disclosed to any party. Each party is instead provided with a unique, device-specific player, shown are players Pl-1 830 and Pl-2 840. The common key K-R is provided to all parties. However, this common key does not match the specific players. Therefore, each party is also provided with a device-specific key loader K-L, shown are 820 and 825. The loader 820, 825 is used to convert the anonymous key K-R 812 into a device-specific key K-j.. To this end, loader K-L; includes the functions lM, and rJ>t. As is shown in Fig.8, in principle, a device-specific loader is used. As is further illustrated in Fig.9, in fact, the loader may be the same, but fed with the device-specific functions / and r . In the example of Fig.9, being fed with/, , and η , converts the anonymous key K-R 812 into the device-specific key 832 for device 1; being fed with 2 , and r2 , converts the anonymous key
812 into the key 842 for device 2. The device-specific players 830, 840 are then unlocked using the device-specific key sets h^ , 832 and 842, respectively. It will be appreciated that in these examples, the phrase 'key' and 'player' is interchangeable since two chains of functions intre-lock. The example of Fig.4 illustrates both chains as keys. In an analogous way, it could also be illustrated as two interlocking players. It will now be understood that the anonymous player 810 (incorporating gN,.-» gi) may advantageously be provided to each executing device through broadcasting andor 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/ 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 , lj,ι,oε r . 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/ is a respective Feistel decryption round function. In such a case, each of the permutations/?, 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}) = (θx {x),Qy ( ) , where
Qx (x) θ Qx (y) = Qx {x® y) and Qy (x) θ Qy (y) = Qy (x®y). If these conditions are met, the functions/ 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 / ((Z. _, , 2? )) = (Rt_x ,(£,_, θ F(Rt_x , K, ))\ can be seen as / = swap o involutaryF , with the definitions swap ((JC, y}) = swap ((y, x ) and involutaryF (( JC, y)) = (JC, y θ F(x)) . It then holds that swap'1 = swap and involutaryF x = 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.

Claims

CLAIMS:
1. A method of providing a digital signal processing function/to an executing device in an obfuscated form; the function/including a function cascade including a plurality of signal processing functions/, 1 ≤ i ≤ N , for processing a digital signal input x to yield a digital signal output (for example, EC, (x) ≡ fN ° • • • ° / (x) ), the method including: selecting a set of 2N invertible permutations p„ l ≤ i ≤ IN ; calculating a set of N functions g,, where g, is functionally equivalent to
P2, °f, 0P >-ι> ϊQ l ≤ i ≤ N >' calculating a set of N-l functions h, , where h, is functionally equivalent to
Figure imgf000019_0001
equipping the executing device with an execution device function cascade that includes yN °hN yN_χ ohN_x °...°yx, where yx , ... , yN are function parameters(for example, E ,( '„..., viV) *≡ ^ °AiV o^JV_1 o^_1 o...oyχ), providing the functions g ,...,gN to the executing device; and in the executing device, applying the execution device function cascade to the functions g, , ... , gN (for example, EDX (g ...,gN)) .
1. A method of providing a digital signal processing function/as claimed in claim 1, wherein the execution device function cascade includes
Figure imgf000019_0002
(for example, ED2 (yx, ... , yN) ≡ yN hN o yN_χ ° i ° • • • ° Λ ° A"' ) •
3. A method of providing a digital signal processing function/as claimed in claim 1, wherein the function cascade starts with a further signal processing function ) ( for example, FC (x) ≡ fN • • ■ o / o /0 (x) ) and the execution device function cascade includes
Figure imgf000019_0003
(for example, EDs(y ,...,yN) ≡ yN °hN yN_ ohu_x °...°yx °S ), where S, is functionally equivalent to ρx ~ ° f0.
4. A method of providing a digital signal processing function/as claimed in claim 1 , wherein the execution device function cascade includes
Aw ° yN ° K ° J -i ° V-i ° • • • ° ( or example ED4(yx,..., yN) ≡ p2N »yN ohN °yN_x °hN_x °...°;μ,
5. A method of providing a digital signal processing function/as claimed in claim 1 , wherein the function cascade ends with a further signal processing function/r+i,
( for example, EC3 (JC) ≡ fN+x ° # ° • • ■ ° / (JC) ) and the execution device function cascade includes
S2 °yN °hN oyN_l ohN_χ o...oyl
(for example, ED5 (yx,...,yN) ≡ S2 oyN ohN ° yN_x ° i ° • • • ° ) > where S2 is functionally equivalent to fN+x °p2N.
6. A method of providing a digital signal processing function/as claimed in claim 1, including obtaining a unique identity of the executing device and/or user of the executing device; the set and or sequence of 2N invertible permutations ?,- being unique for the obtained identity.
7. A method as claimed in claim 1 , wherein the step of equipping the executing device with the execution device function cascade includes providing the execution device function cascade embedded in a software program for execution by a processor in the executing device.
8. A method as claimed in claim 7, wherein the step of providing the functions g, , ... , gN to the executing device includes providing the functions g, , ... , gN in the form of a plug-in for the program.
9. A method as claimed in claim 7, wherein the step of providing the functions gx,...,gM to the executing device includes embedding the functions g, , ... , gN in the software program by applying the execution device function cascade to the function parameters gx,...,gN .
10. A computer program product operative to cause a processor in an execution device to execute a digital signal processing flmction/mcluding a function cascade including a plurality of signal processing functions , where 1 ≤ < N , for processing a digital signal input x to yield a digital signal output (for example, EC, (JC) ≡ fN ° • • ° / (x) ), by: loading an execution device function cascade that includes yN °hN yN_χ o hN_x ° ... ° yx , where v, , ... , yN are function parameters, loading a set of functions g, , ... , gN ; applying the execution device function cascade to the set of functions g,,...,gw ; where: g, is functionally equivalent to p2) °f o p_χ , for 1 < i ≤ N ; ht is functionally equivalent to ?2,"_, ° ?2,_2 for 2 < < N ; and /?, is an invertible permutation, for l ≤ i ≤ N .
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 , 1 ≤ / ≤ N , for processing a digital signal input x to yield a digital signal output (for example, FCx(x) ≡ fN o...ofχ (x) ); the server including a processor (612) for, under control of a program: selecting a set of 2N invertible permutations/?,, l ≤ i ≤ IN; calculating a set of N functions g, , where g, is functionally equivalent to p2 ~) o / o p2ι l , for 1 < / < N ; and calculating a set of N-l functions ht , where ht is functionally equivalent to p2 _x p_2 , for l ≤ i ≤ N ; and means (614) for equipping the executing device with an execution device function cascade that includes yN °hN <> yN_χ o hN_ o,..oyχ , where y , ... , yN are function parameters (for example, EDX (yx,...,yN) ^yN °hN yN_ o hN_x ° ... ° y ) , and means (616) for providing the functions gx,...,gN to the executing device; and the executing device (620) including: means (626) for obtaining the functions g, , ... , 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 gx,...,gN (for example, EDX (gx,...,gN)) .
12. An execution device (620) for use in the system as claimed in claim 11 ; the executing device including: means (626) for obtaining the functions gx,...,gN from the server; and a processor (622) for, under control of a program, applying the execution device function cascade to the functions g ,...,gN (for example, EDX (gx,...,gN)) and applying the applied device function cascade to the digital signal input x.
13. A method of providing a digital signal processing function/to a plurality of executing devices, each identified by a unique index/, in an obfuscated, anonymous form; the function/including a function cascade including a plurality of signal processing functions/, where 1< i <2V, for processing a digital signal input x to yield a digital signal output ( for example, EC, (JC) ≡ fN ° • • • ° /(JC) ), the method including: selecting a set of 2N invertible permutations/?,, where l ≤ i ≤ IN; calculating a set of N functions g, , where g, is functionally equivalent to /?2-- °/ o/?2,_, , l < ; < N ; selecting for each device/ a corresponding set and/or sequence of 2N invertible permutations p , that is unique for the device and/or a user of the device; calculating for each executing device/ a corresponding set of N-l functions h} , , where hJf is functionally equivalent to A~ 2 ° A.2'-2 for 2 ≤ z ≤ 2V ; equipping each executing device/ with a respective execution device function cascade
Figure imgf000022_0001
°hj °yN_ °hj N_x °...°yx ; equipping each executing device/ with a respective loader function loader ^(JC,, ..., ) = (l °xx orJ ,...,lJJfN orj N) , where/ , is functionally equivalent to ?~ 2, °p2l and r, , is functionally equivalent to A -1 ° Pj.2,-\ '■> providing to the executing device the functions g, , ... , gN ; and in the executing device, executing ED} (loader } (gx,...,gN)) .
14. A method of providing a digital signal processing function/as claimed in claim 13, including providing gx,...,gN to each executing device through broadcasting and/or distribution on a storage medium with a same content for each executing device.
15. A method of providing a digital signal processing function/as claimed in claim 14, including also providing the digital signal input JC to each executing device through broadcasting and/or distribution on a storage medium with a same content for each executing device.
16. A method of providing a digital signal processing function/as claimed in claim 13, including providing to executing device/ through a one-to-one communication channel and/or a storage medium with a device-specific content at least one the following sets of corresponding functions: hJih I r .
17. A method of providing a digital signal processing function/as claimed in claim 1 or 13, wherein the function/is a decryption function based on a Feistel cipher network and each of the signal processing functions is a respective Feistel decryption round function.
18. A method of providing a digital signal processing function/as claimed in claim 17, wherein each of the permutations /?, is a Feistel transformer where a function Q operating on a sequential pair <x, y> is a Feistel transformer if there exist invertible functions Qx md Qy and β((x, v)) = (& (*), β (v)), here Qx (x)®Qx (y) = Qx (x®y) d Qy (x)®Qy (y) = Qy (x®y)
19. 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 , where 1 < z < N , for processing a digital signal input x to yield a digital signal output (for example, EC, (x) ≡ fN o • ■ • o (x) ), the method including: loading an execution device function cascade that is unique for the execution device and that includes yN o hjN o yN_x o hjN_x °...°yx> where •„..., yN are function parameters, loading a loader function loaderj(xx,...,xN) ≡ (ljX °x °rjX,...,l N °xN°rJJtt) , loading a set of functions g, , ... , gN ; applying the loader function to the set of functions gx,...,gN yielding a set of functions g),ι,..., gJtN and applying the execution device function cascade to the set of functions g,, -, gj,N, where: g, is functionally equivalent to p2 o / o p2ι χ , fox l≤i≤N; p, is an invertible permutation, for 1 < i ≤ N ; h is
Figure imgf000024_0001
° P l-2 fox l≤i≤N; I is functionally equivalent to p~x 2l o p ; r is functionally equivalent to p2l_~x °P,- ', and Pj , are invertible permutations, for l≤i≤ IN , being unique for the device and/or a user of the device.
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/; the function/including a function cascade including a plurality of signal processing functions/, where l≤i≤N , fox processing a digital signal input x to yield a digital signal output ( for example, (FCx(x)≡fNo...ofl(χ)); the server including a processor for, under control of a program: selecting a set of 2N invertible permutations /?„ where l≤i≤lN ; calculating a set of N functions g; , where g, is functionally equivalent to p2] ° / ° p2,_x , for l≤i≤N; selecting for each device/ a corresponding set and/or sequence of 2N invertible permutations pJt , that is unique for the device and/or a user of the device; calculating for each executing device/ a corresponding set of N-l functions h , where hJt, is functionally equivalent to /?J2,_, ° pja,_2 fox l≤i≤N; equipping each executing device/ with a respective execution device function cascade EDj (yx,...,yN) that includes yN o hjN yN_χ o hJ>N_x °...°yx; equipping each executing device/ with a respective loader function loaderJ(xl,...,xN) = (ljX χl orjX,...,lJ<N χN °rjN) , where , , is functionally equivalent to
PJOI °P2I and/* is functionally equivalent to AM-1 ° A.2'-ι » an<^ providing to the executing device the functions g, , ... , gN ; and each executing device j, means for obtaining the functions g, 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 ° yN_ ° jjf_x o...o χ, where yx , ... , yN are function parameters, loading a loader function loaderj(x,...,xN) ≡ (ljXχ orjX,...,ljNN rJJf) , applying the loader function to the set of functions gi,..., gN yielding a set of functions gjX ,...,gjN; and applying the execution device function cascade to the set of functions gjX,...,gjN
21. An execution device for use in the system as claimed in claim 20; where the executing device is identified by a unique index/; and includes: means for obtaining the functions g, , ... , 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_χ o hjjf_x °...°yx, where yx , ... , yN are function parameters, loading a loader function loaderJ{xχ t...txlt) s (/, , °x, orJJL,...,lJιlf °xN o^), applying the loader function to the set of functions g, , ... , g N yielding a set of functions gj X ,...,gj ; and applying the execution device function cascade to the set of functions
Figure imgf000026_0001
where: g, is functionally equivalent to p2 ~, °f o p_χ , fox l ≤ i ≤ N ; p, is an invertible permutation, for 1 ≤ z" ≤ N ; hj , is functionally equivalent to A>2,_ι ° A.21-2 for 2 ≤ / < N ; lj , is functionally equivalent to p~ 2l °p2l ; r is functionally equivalent to /?2;_,-1 <> A,2 » an^ p are invertible permutations, for l ≤ i ≤ N , being unique for the device and/or a user of the device.
PCT/IB2004/052607 2003-12-11 2004-11-30 Block ciphering system, using permutations to hide the core ciphering function of each encryption round WO2005060147A1 (en)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP2006543679A JP4884976B2 (en) 2003-12-11 2004-11-30 Block encryption system using permutation to conceal the core encryption function of each encryption round
US10/596,336 US8023651B2 (en) 2003-12-11 2004-11-30 Block ciphering system, using permutations to hide the core ciphering function of each encryption round
MXPA06006464A MXPA06006464A (en) 2003-12-11 2004-11-30 Block ciphering system, using permutations to hide the core ciphering function of each encryption round.
CN2004800362647A CN1890914B (en) 2003-12-11 2004-11-30 Block ciphering system, using permutations to hide the core ciphering function of each encryption round
AT04799288T ATE509442T1 (en) 2003-12-11 2004-11-30 BLOCK CIPHERIZER SYSTEM USING PERMUTATIONS TO HIDE THE CORE CIPHERIZER FUNCTION OF EACH ENCRYPTION ROUND
EP04799288A EP1712032B1 (en) 2003-12-11 2004-11-30 Block ciphering system, using permutations to hide the core ciphering function of each encryption round
BRPI0417450-0A BRPI0417450A (en) 2003-12-11 2004-11-30 method and system for providing a digital signal processing function and execution device
KR1020067011425A KR101079565B1 (en) 2003-12-11 2006-06-09 Block ciphering system using permutations to hide the core ciphering function of each encryption round

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP03104643 2003-12-11
EP03104643.6 2003-12-11

Publications (1)

Publication Number Publication Date
WO2005060147A1 true WO2005060147A1 (en) 2005-06-30

Family

ID=34684571

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2004/052607 WO2005060147A1 (en) 2003-12-11 2004-11-30 Block ciphering system, using permutations to hide the core ciphering function of each encryption round

Country Status (10)

Country Link
US (1) US8023651B2 (en)
EP (1) EP1712032B1 (en)
JP (2) JP4884976B2 (en)
KR (1) KR101079565B1 (en)
CN (1) CN1890914B (en)
AT (1) ATE509442T1 (en)
BR (1) BRPI0417450A (en)
MX (1) MXPA06006464A (en)
RU (1) RU2370897C2 (en)
WO (1) WO2005060147A1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007105126A2 (en) 2006-03-10 2007-09-20 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function
JP2007298847A (en) * 2006-05-02 2007-11-15 Kddi Corp In-program data protection device, protection method, and program
WO2008007305A2 (en) * 2006-07-12 2008-01-17 Koninklijke Philips Electronics N.V. Method and system for obfuscating a gryptographic function
WO2008142633A1 (en) * 2007-05-22 2008-11-27 Koninklijke Philips Electronics N.V. Data security
EP2173056A1 (en) * 2008-09-04 2010-04-07 Gemplus Method for countermeasure in an electronic component using a secret key algorithm
US8023651B2 (en) 2003-12-11 2011-09-20 Irdeto B.V. Block ciphering system, using permutations to hide the core ciphering function of each encryption round

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060107282A (en) * 2005-04-07 2006-10-13 엘지전자 주식회사 Data reproducing method, data recording/reproducing player and data transmitting method
EP2393292A1 (en) * 2010-06-01 2011-12-07 Nagravision S.A. A method and apparatus for decrypting encrypted content
EP2405650A1 (en) * 2010-07-09 2012-01-11 Nagravision S.A. A method for secure transfer of messages
US9111072B1 (en) 2011-08-23 2015-08-18 Tectonic Labs, LLC Anti-reverse engineering unified process
WO2014096117A1 (en) * 2012-12-21 2014-06-26 Koninklijke Philips N.V. Computing device configured with a table network
CN103595539B (en) * 2013-11-26 2016-08-24 南开大学 Retain the encryption method of the numeric type personally identifiable information of form
US10075290B2 (en) * 2013-12-20 2018-09-11 Koninklijke Philips N.V. Operator lifting in cryptographic algorithm
US9405919B2 (en) * 2014-03-11 2016-08-02 Qualcomm Incorporated Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers
US10184974B2 (en) * 2015-09-22 2019-01-22 Raytheon Company Systems and methods for determining whether a circuit is operating properly
US11070358B2 (en) 2015-12-15 2021-07-20 Koninklijke Philips N.V. Computation device and method
CN107517206A (en) * 2017-08-18 2017-12-26 北京北信源软件股份有限公司 A kind of method, apparatus of secure communication, computer-readable recording medium and storage control

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4751733A (en) * 1985-05-15 1988-06-14 Thomson-Csf Substitution permutation enciphering device
WO1999008411A2 (en) * 1997-08-08 1999-02-18 Jonathan Stiebel New operation for key insertion with folding
US6377687B1 (en) * 1997-07-29 2002-04-23 Lucent Technologies Inc. Methods and apparatus for enhanced CMEA employing enhanced transformations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3463963B2 (en) * 1994-04-28 2003-11-05 日本電信電話株式会社 Software analysis protection method
US5699512A (en) 1994-04-28 1997-12-16 Nippon Telegraph And Telephone Corp. Software analysis protection method for changing the software pattern on the memory of a user terminal
US5838794A (en) * 1996-01-11 1998-11-17 Teledyne Electronic Technologies Method and apparatus for inter-round mixing in iterated block substitution systems
US5949884A (en) * 1996-11-07 1999-09-07 Entrust Technologies, Ltd. Design principles of the shade cipher
US6668325B1 (en) 1997-06-09 2003-12-23 Intertrust Technologies Obfuscation techniques for enhancing software security
JP2001067270A (en) * 1999-08-27 2001-03-16 Nippon Telegr & Teleph Corp <Ntt> Contents sharing management system and contents protecting method and recording medium where the method is recorded
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
JP4884976B2 (en) 2003-12-11 2012-02-29 イルデト・コーポレート・ビー・ヴイ Block encryption system using permutation to conceal the core encryption function of each encryption round

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4751733A (en) * 1985-05-15 1988-06-14 Thomson-Csf Substitution permutation enciphering device
US6377687B1 (en) * 1997-07-29 2002-04-23 Lucent Technologies Inc. Methods and apparatus for enhanced CMEA employing enhanced transformations
WO1999008411A2 (en) * 1997-08-08 1999-02-18 Jonathan Stiebel New operation for key insertion with folding

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8023651B2 (en) 2003-12-11 2011-09-20 Irdeto B.V. Block ciphering system, using permutations to hide the core ciphering function of each encryption round
JP2009529819A (en) * 2006-03-10 2009-08-20 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Data processing system integrity
WO2007105126A3 (en) * 2006-03-10 2007-11-15 Koninkl Philips Electronics Nv Method and system for obfuscating a cryptographic function
WO2007105126A2 (en) 2006-03-10 2007-09-20 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function
US8479016B2 (en) 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
JP2007298847A (en) * 2006-05-02 2007-11-15 Kddi Corp In-program data protection device, protection method, and program
WO2008007305A2 (en) * 2006-07-12 2008-01-17 Koninklijke Philips Electronics N.V. Method and system for obfuscating a gryptographic function
WO2008007305A3 (en) * 2006-07-12 2008-03-06 Koninkl Philips Electronics Nv Method and system for obfuscating a gryptographic function
CN101491000B (en) * 2006-07-12 2011-12-28 耶德托公司 Method and system for obfuscating a cryptographic function
US8700915B2 (en) 2006-07-12 2014-04-15 Irdeto Corporate B.V. Method and system for verifying authenticity of at least part of an execution environment for executing a computer module
WO2008142633A1 (en) * 2007-05-22 2008-11-27 Koninklijke Philips Electronics N.V. Data security
US20100215173A1 (en) * 2007-05-22 2010-08-26 Irdeto B.V. Data security
US9025765B2 (en) 2007-05-22 2015-05-05 Irdeto B.V. Data security
EP2173056A1 (en) * 2008-09-04 2010-04-07 Gemplus Method for countermeasure in an electronic component using a secret key algorithm

Also Published As

Publication number Publication date
EP1712032A1 (en) 2006-10-18
EP1712032B1 (en) 2011-05-11
RU2370897C2 (en) 2009-10-20
KR101079565B1 (en) 2011-11-04
JP4884976B2 (en) 2012-02-29
RU2006120479A (en) 2007-12-27
US20080285744A1 (en) 2008-11-20
US8023651B2 (en) 2011-09-20
MXPA06006464A (en) 2006-08-23
BRPI0417450A (en) 2007-04-10
ATE509442T1 (en) 2011-05-15
KR20060123298A (en) 2006-12-01
CN1890914A (en) 2007-01-03
JP2007514193A (en) 2007-05-31
CN1890914B (en) 2011-07-27
JP2012037904A (en) 2012-02-23
JP5453367B2 (en) 2014-03-26

Similar Documents

Publication Publication Date Title
JP5453367B2 (en) Block encryption system using permutation to conceal the core encryption function of each encryption round
EP1807965B1 (en) Method, server and computer readable medium for obfuscating a cryptographic function
US9654280B2 (en) White-box cryptographic system with input dependent encodings
US20170286685A1 (en) Method and system for verifying authenticity of at least part of an execution environment for executing a computer module
EP2044724B1 (en) Tamper resistance of a digital data processing unit
JP5355554B2 (en) Updating encryption key data
JP2010515945A (en) Tracking a copy of the implementation
EP1997265A2 (en) Integrity of a data processing system
US9025765B2 (en) Data security

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200480036264.7

Country of ref document: CN

AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2004799288

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2006543679

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: PA/a/2006/006464

Country of ref document: MX

WWE Wipo information: entry into national phase

Ref document number: 10596336

Country of ref document: US

Ref document number: 2006120479

Country of ref document: RU

Ref document number: 1020067011425

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 2520/CHENP/2006

Country of ref document: IN

WWP Wipo information: published in national office

Ref document number: 2004799288

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020067011425

Country of ref document: KR

ENP Entry into the national phase

Ref document number: PI0417450

Country of ref document: BR