Patent Publication Number: US-8527756-B2

Title: Security device and building block functions

Description:
RELATED APPLICATION INFORMATION 
     The present application is a 35 USC §371 application of PCT/IL2006/001133, filed on 27 Sep. 2006 and entitled “Security Device and Building Block Functions”, which was published in the English language with International Publication Number WO 2007/039896, and which claims the benefit of priority based on U.S. Provisional Patent Application Ser. No. 60/724,342, filed 6 Oct. 2005, entitled, “Security Device and Building Block Functions”. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to securing content on a computer, and more particularly, to securing content on a computer using a security device, such as a dongle or a smart card. 
     BACKGROUND OF THE INVENTION 
     U.S. Pat. No. 5,182,770 to Medveczky, et al., describes an integrated software piracy prevention system incorporating several characteristic identification codes identifying installation and software components. A separate security device is attached to and in communication with the protected computer system. It is interactively queried regarding proper authorization of the current user. This approach provides economical tracking of licensees and their use of sophisticated programs. 
     U.S. Pat. No. 5,857,025 to Anderson, et al., describes using a device and method using a split processor based architecture to provide physical security of critical information by implementing a required protocol before releasing critical information. The critical information is used as a key to a cryptographic algorithm. A chaotic cryptographic algorithm is also provided including a defined key space employing six parameters of a Lorenzian system of equations. 
     U.S. Pat. No. 6,088,450 to Davis, et al., describes a wireless authentication system to control an operating state of a node being a computer, door control mechanism or any multi-state product based on the proximity of an authorized user to the node. The wireless authentication system comprises a security device implemented within the computer and a user authentication token (“token”) in possession of the authorized user. A Challenge/Response protocol is configured between the security device and the token. The first successful Challenge/Response message exchange between the security device and the token places the node in an operational state allowing the authorized user access to the contents and/or networked resources of the node. Later Challenge/Response message exchanges are set to occur periodically to check whether the authorized user possessing the token has left the node unattended thereby causing the node to be placed in a non-operational state. 
     The FROG block cipher (see tecapro.com/aesfrog.html) is a block cipher which hides the exact sequence of primitive operations even though the cipher itself is known. When other ciphers use the secret key only as data (which are combined with the plaintext to produce the ciphertext) FROG uses the key both as data and as instructions on how to combine these data. In effect an expanded version of the key is used by FROG as a program. FROG itself operates as an interpreter that applies this key-dependent program on the plaintext to produce the ciphertext. 
     The disclosures of all references mentioned above and throughout the present specification, as well as the disclosures of all references mentioned in those references, are hereby incorporated herein by reference. 
     SUMMARY OF THE INVENTION 
     The present invention seeks to provide an improved method and system of using a security device, such as a dongle or smart card, in order to secure content consumption on a general purpose computer or other content rendering device. 
     The term “render”, as in “content rendering device”, in all of its grammatical forms, as used herein in the present specification and claims, is understood to refer to any appropriate mechanism or method of making content palpable to one or more of the senses. In particular and without limiting the generality of the foregoing, “render” refers not only to display of video content but also to playback of audio content. 
     There is thus provided in accordance with a preferred embodiment of the present invention a method of securing content, the method including establishing communication between a secure module source and a content rendering device, loading a dynamically generated pseudo-unique secure module to the content rendering device from the secure module source, establishing communication between the secure module source and the dynamically generated pseudo-unique secure module, and transferring a decryption key from the secure module source to the dynamically generated pseudo-unique secure module, thereby enabling decryption of encrypted content, the encrypted content being encrypted according to the decryption key. 
     Further in accordance with a preferred embodiment of the present invention the secure module source includes a security device. 
     Still further in accordance with a preferred embodiment of the present invention the secure module source includes a remote server. 
     Additionally in accordance with a preferred embodiment of the present invention the method includes establishing a first secure authenticated channel for secure communication between the secure module source and the content rendering device. 
     Moreover in accordance with a preferred embodiment of the present invention the method includes establishing a second secure authenticated channel for secure communication between the secure module source and the dynamically generated pseudo-unique secure module. 
     Further in accordance with a preferred embodiment of the present invention the content rendering device also includes a secure software agent. 
     Still further in accordance with a preferred embodiment of the present invention the establishing the first secure authenticated channel includes establishing the first secure authenticated channel between the secure module source and the secure software agent. 
     Additionally in accordance with a preferred embodiment of the present invention the content rendering device includes a general purpose computer. 
     Moreover in accordance with a preferred embodiment of the present invention the content rendering device includes a set top box (STB). 
     Further in accordance with a preferred embodiment of the present invention the content rendering device includes a digital video recorder (DVR). 
     Still further in accordance with a preferred embodiment of the present invention the content rendering device includes a DVD player. 
     Additionally in accordance with a preferred embodiment of the present invention the dynamically generated pseudo-unique secure module includes a sequence of software primitives, each one of the sequence of software primitives being capable of being sequentially executed, and an output from a first one of the plurality of software primitives includes an input to a second one of the plurality of software primitives. 
     Moreover in accordance with a preferred embodiment of the present invention the dynamically generated pseudo-unique secure module is produced by providing a plurality of software primitives to the secure module source, and combining a sequence of software primitives from among the plurality of software primitives in order to form the dynamically generated pseudo-unique secure module, wherein each software primitive from among the plurality of software primitives includes a software primitive which can be sequentially executed, and an output from a first one of the plurality of software primitives includes an input to a second one of the plurality of software primitives. 
     There is also provided in accordance with another preferred embodiment of the present invention a method of securing content, the method including establishing communication between a secure module source and a content rendering device, loading a dynamically generated pseudo-unique secure module to the content rendering device from the secure module source, establishing communication between the secure module source and the dynamically generated pseudo-unique secure module, and transferring a decryption key from the secure module source to the dynamically generated pseudo-unique secure module, thereby enabling decryption of encrypted content, the encrypted content being encrypted according to the decryption key, wherein the dynamically generated pseudo-unique secure module includes a sequence of software primitives, each one of the sequence of software primitives being capable of being sequentially executed, and an output from a first one of the plurality of software primitives includes an input to a second one of the plurality of software primitives. 
     Further in accordance with a preferred embodiment of the present invention the dynamically generated pseudo-unique secure module is produced by providing a plurality of software primitives to the secure module source, and combining a sequence of software primitives from among the plurality of software primitives in order to form the dynamically generated pseudo-unique secure module, wherein each software primitive includes a software primitive which can be sequentially executed, and an output from a first one of the plurality of software primitives includes an input to a second one of the plurality of software primitives. 
     There is also provided in accordance with still another preferred embodiment of the present invention a method of constructing a dynamically generated pseudo-unique secure module, the method including providing a plurality of software primitives to a secure module source, and combining a sequence of software primitives from among the plurality of software primitives in order to form a secure module, wherein each software primitive includes a software primitive which can be sequentially executed, and an output from a first one of the plurality of software primitives includes an input to a second one of the plurality of software primitives. 
     Further in accordance with a preferred embodiment of the present invention the method includes receiving an initial input, inputting the initial input to the first one of the plurality of software primitives, sequentially inputting the output from a prior one of the plurality of software primitives to a next one of the plurality of software primitives until a final one of the plurality of software primitives produces a final output, and outputting the final output. 
     Still further in accordance with a preferred embodiment of the present invention the secure module produces a result based, at least in part, on the initial input. 
     Additionally in accordance with a preferred embodiment of the present invention the result is also based, at least in part, on an order of the plurality of software primitives. 
     Moreover in accordance with a preferred embodiment of the present invention at least one of the software primitives includes a hash function. 
     Further in accordance with a preferred embodiment of the present invention all of the software primitives including the plurality of software primitives must be used in order to form the secure module. 
     Still further in accordance with a preferred embodiment of the present invention each one of the plurality of software primitives must be used once and only once in order to form the secure module. 
     Additionally in accordance with a preferred embodiment of the present invention each one of the plurality of software primitives may be used more than once in order to form the secure module. 
     Moreover in accordance with a preferred embodiment of the present invention any subset of the software primitives including the plurality of software primitives may be used in order to form the secure module. 
     Further in accordance with a preferred embodiment of the present invention a minimum number of the software primitives including the plurality of software primitives are used in order to form the secure module. 
     Still further in accordance with a preferred embodiment of the present invention the secure module is operative to decrypt an encrypted message. 
     Additionally in accordance with a preferred embodiment of the present invention the encrypted message includes content. 
     Moreover in accordance with a preferred embodiment of the present invention the secure module source includes a security device. 
     Further in accordance with a preferred embodiment of the present invention the secure module source includes a remote server. 
     There is also provided in accordance with still another preferred embodiment of the present invention an apparatus for securing content, the apparatus including a first communication mechanism operative to establish communication between a secure module source and a content rendering device, a dynamically generated pseudo-unique secure module loader operative to load a dynamically generated pseudo-unique secure module to the content rendering device from the secure module source, a second communication mechanism operative to establish communication between the secure module source and the dynamically generated pseudo-unique secure module, and a decryption key transferring mechanism operative to transfer a decryption key from the secure module source to the dynamically generated pseudo-unique secure module, thereby enabling decryption of encrypted content, the encrypted content being encrypted according to the decryption key. 
     There is also provided in accordance with still another preferred embodiment of the present invention an apparatus for securing content, the apparatus including a first communication mechanism operative to establish communication between a secure module source and a content rendering device, a dynamically generated pseudo-unique secure module loader operative to load a dynamically generated pseudo-unique secure module to the content rendering device from the secure module source, a second communication mechanism operative to establish communication between the secure module source and the dynamically generated pseudo-unique secure module, and a decryption key transferring mechanism operative to transfer a decryption key from the secure module source to the dynamically generated pseudo-unique secure module, thereby enabling decryption of encrypted content, the encrypted content being encrypted according to the decryption key, wherein the dynamically generated pseudo-unique secure module includes a sequence of software primitives, each one of the sequence of software primitives being capable of being sequentially executed, and an output from a first one of the plurality of software primitives includes an input to a second one of the plurality of software primitives. 
     There is also provided in accordance with still another preferred embodiment of the present invention a system for constructing a dynamically generated pseudo-unique secure module, the system including a plurality of software primitives included at a secure module source, and a combiner for combining a sequence of software primitives from among the plurality of software primitives in order to form a secure module, wherein each software primitive from plurality of software primitives among the includes a software primitive which can be sequentially executed, and an output from a first one of the plurality of software primitives includes an input to a second one of the plurality of software primitives. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present invention will be understood and appreciated more fully from the following detailed description, taken in conjunction with the drawings in which: 
         FIG. 1  is a simplified block diagram illustration of a security system constructed and operative in accordance with a preferred embodiment of the present invention; 
         FIG. 2  is a simplified illustration diagramming communication between the secure module source and a content rendering device of  FIG. 1 ; and 
         FIGS. 3-5  are simplified flowchart diagrams of preferred methods of operation of the system of  FIG. 1 . 
     
    
    
     DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT 
     Reference is now made to  FIG. 1 , which is a simplified block diagram illustration of a security system constructed and operative in accordance with a preferred embodiment of the present invention. The system of  FIG. 1  comprises a secure module source  10 , a secure software agent  20 , and a secure module  30 . 
     The secure module  30  preferably comprises a dynamically generated pseudo-unique software module which is dynamically loaded or appended by the secure software agent  20  at run time. For example and without limiting the generality of the foregoing, the secure module  30  preferably comprises an operation system independent and execution location independent code fragment. 
     The secure module  30  is preferably sent by the secure module source  10  to a secure software agent  20  comprised in a general purpose computer or other content rendering device  40 . In some preferred embodiments of the present invention, the secure module source  10  preferably comprises a security device. For example and without limiting the generality of the foregoing, the secure device may comprise a dongle, as is known in the art. 
     In alternative preferred embodiments of the present invention, the secure module source  10  preferably comprises a remote server. For example and without limiting the generality of the foregoing, the remote server may comprise a broadcast headend or a content provider. If the secure module source  10  is connected to the remote server, the secure module source  10  preferably communicates with the content rendering device  40  over a LAN or a global network, such as, but not limited to, the Internet. 
     Non-limiting examples of a content rendering device include such devices as a general purpose computer, a set top box (STB), a digital video recorder (DVR), and a DVD player. The secure software agent  20  is operatively associated with “media player”-like software, or, in some preferred embodiments, a codec of the “media player”-like software comprised on the computer or content rendering device. 
     Those skilled in the art will appreciate that, in general, key distribution typically preferably occurs between security devices or secure servers. The present invention, in preferred embodiments thereof, preferably enables a method of transfer of content encryption keys from the secure module source  10  to the content rendering device  40 . 
     It is further appreciated that a software application designed to play content on the content rendering device  40  may preferably comprise a software application. In such a case, upon arrival of the secure module  30  from the secure module source  10 , the secure module  30  then enables the software application, enabling use of the content rendering device  40 . 
     A preferred method of forming the secure module  30  is now described. The secure module  30  preferably comprises a pseudo-unique security function. The pseudo-unique security function is preferably constructed utilizing a plurality of software primitives available to the secure module source  10 . Each primitive of the plurality of software primitives is preferably capable of being combined with any other of the plurality of software primitives. For example and without limiting the generality of the foregoing, each primitive can be executed sequentially. A subset or sequence of the plurality of primitives is preferably combined in a random or pseudo-random fashion in order to comprise the secure module  30 . For example and without limiting the generality of the foregoing, each primitive of the plurality of software primitives may comprise a well known hash function with a specific initial value. 
     The software primitives can be used in any order at all and may be repeated. For example, if there are five software primitives, A, B, C, D, and E, and up to five software primitives must be combined in order to comprise the secure module  30 , and not all of the primitives need to be used, the secure module  30  may comprise, for instance:
         ACDBE;   D;   AEA; and   EBAAC.       

     It is appreciated that combining individual primitives from among the plurality of software primitives as described herein can produce a very large number of combinations of primitives. For example and without limiting the generality of the foregoing, if there are 32 primitives available to the security device, and each one of the 32 primitives should be used once and only once, and the order the 32 primitives are used in does not matter, there are 32! possible combinations of primitives. 
     In some embodiments of the present invention, some of the plurality of software primitives available to, and stored on, the secure module source  10  are preferably encrypted, while others of the plurality of software primitives available to the secure module source  10  are preferably not encrypted. The encrypted primitives are preferably encrypted using different encryption keys, and are either encrypted in such a fashion that the encryption keys are preferably not available to the secure module source  10  itself, but are preferably stored at a central authority, such as a broadcast headend. Alternatively, the encrypted software primitives are preferably locally encrypted. Thus, in the event of a reverse engineering attack on the security device, it will preferably be very difficult to discover a full set of the software primitives. In some preferred embodiments of the present invention, when the secure module source  10  needs to assemble a secure module  30  to be sent to the secure software agent  20 , the secure module source  10  preferably receives all the required decryption keys from the central authority. In the event that the secure module source  10  receives all of the required decryption keys from the central authority, the secure module source  10  preferably uses the decrypted primitives for secure module  30  construction. If, for some reason, no decryption key is available, the secure module source  10  preferably uses only unencrypted primitives for secure module  30  construction. It is appreciated that the required decryption keys are preferably securely delivered from the central authority under the protection of an appropriate secure delivery scheme, such as a conditional access system. 
     It is appreciated that the secure module  30  is preferably able to perform other security functions in addition to content decryption, as described above. For example and without limiting the generality of the foregoing, in addition to content decryption, the secure module  30  is preferably also able to perform at least: key management and calculation; content decoding; and license enforcement. 
     The secure module source  10  preferably episodically shuffles the plurality of software primitives such that software primitives that were once encrypted become non-encrypted, and software primitives which were non-encrypted become encrypted using the same key provided by the central authority. 
     It is also appreciated that certain individual primitives among the plurality of software primitives may preferably comprise functions producing the same result, but comprising different programming code, and thus comprising different programming code patterns (also known in the art as “code signatures”). 
     The secure module  30 , when sent to the content rendering device  40 , will preferably communicate with the secure module source  10 , and negotiate for a delivery of the content encryption key. The secure module  30  also preferably comprises executable computer code operative to decrypt encrypted content. The secure module  30  still further preferably comprises content access business rules, for example and without limiting the generality of the foregoing, a content expiration date, after which the content may no longer be consumed. An executable portion of the secure module  30  will therefore preferably be different, or pseudo-unique, for each content encryption key transfer. Therefore, it is necessary to intercept or steal and reverse engineer each individual secure module  30  for each individual content key. 
     In order to complicate any attempts at reverse engineering the security module  30 , the secure module source  10  preferably allows a limited time window for the secure module  30  to run. The secure module source  10  preferably limits response time by running an internal timer. It is appreciated that the internal timer preferably comprises a secure timer. The secure module  30  must prove to the secure module source  10  that the secure module  30  has finished running, preferably by presenting a result of a calculation to the secure module source  10  before the termination of the limited time window. In the event that the secure module  30  fails to present the result of the calculation to the secure module source  10  before the termination of the limited time window, the secure module source  10  will not return the encryption key. 
     Returning to the discussion of  FIG. 1 , in a first stage of communication between the secure module source  10  and the content rendering device  40 , a first level secure authenticated channel (SAC)  50  is preferably established between the secure software agent  20  and the secure module source  10 . Then, via the first level SAC  50 , the secure module  30 , comprising the pseudo-unique security function is uploaded from the secure module source  10  to the content rendering device  40 . 
     In a second stage of communication between the secure module source  10  and the content rendering device  40 , a second level SAC  60  is preferably established between the secure module  30  comprised in the content rendering device  40  and the secure module source  10 , using the pseudo-unique security function as described herein. 
     Those skilled in the art will appreciate that the secure module source  10  preferably constructs, for its own use, exactly the same pseudo-unique security function as the content rendering device  40  is using in the secure module  30 , in order to enable the secure module source  10  to properly communicate with the secure module  30 . 
     After the second level SAC  60  is established between the secure module source  10  and the secure module  30 , the secure module source  10  preferably is able to provide at least one content decryption key to the secure module  30 . The secure module  30  preferably either performs or controls decryption of content. 
     Reference is now additionally made to  FIG. 2 , which is a simplified illustration diagramming communication between the secure module source  10  and a content rendering device  40  of  FIG. 1 . 
     In a first stage of communication between the secure module source  10  and the content rendering device  40 , a communication handshake preferably takes place (step  210 ). Specifically, the secure module source  10  establishes communication with the secure software agent  20  comprised in the content rendering device  40 . Upon completion of the handshake, the first level SAC  50  is established between the secure module source  10  and the secure software agent  20  (step  220 ). Once the first level SAC  50  is established, the secure module  30  is uploaded from the secure module source  10  to the content rendering device  40  (step  230 ). 
     Once the secure module  30  is uploaded from the secure module source  10  to the content rendering device  40 , the secure module source  10  communicates directly with the secure module  30 . During the first stage of communication between the secure module source  10  and the secure module  30 , a communication handshake preferably takes place (step  240 ). Upon completion of the handshake, the second level SAC  60  is preferably established between the secure module source  10  and the secure module  30  (step  250 ). The secure module source  10  preferably securely transfers the least one content decryption key to the secure module  30  (step  260 ). Upon receipt of the at least one content decryption key by the secure module  30 , the secure module  30  is preferably able to decrypt encrypted content  70  (step  270 ), thereby producing clear content  80 , for rendering by the content rendering device  40 . 
       FIGS. 3-5  are simplified flowchart diagrams of preferred methods of operation of the system of  FIG. 1 . The methods of  FIGS. 3-5  are believed to be self explanatory in light of the above discussion. 
     It is appreciated that software components of the present invention may, if desired, be implemented in ROM (read only memory) form. The software components may, generally, be implemented in hardware, if desired, using conventional techniques. 
     It is appreciated that various features of the invention which are, for clarity, described in the contexts of separate embodiments may also be provided in combination in a single embodiment. Conversely, various features of the invention which are, for brevity, described in the context of a single embodiment may also be provided separately or in any suitable subcombination. 
     It will be appreciated by persons skilled in the art that the present invention is not limited by what has been particularly shown and described hereinabove. Rather the scope of the invention is defined only by the claims which follow: