EP2340631A1 - Verfahren und system zum steuern der kodeausführung auf einem rechner mittels eines rekursiven sicherheitsprotokolls - Google Patents

Verfahren und system zum steuern der kodeausführung auf einem rechner mittels eines rekursiven sicherheitsprotokolls

Info

Publication number
EP2340631A1
EP2340631A1 EP09825588A EP09825588A EP2340631A1 EP 2340631 A1 EP2340631 A1 EP 2340631A1 EP 09825588 A EP09825588 A EP 09825588A EP 09825588 A EP09825588 A EP 09825588A EP 2340631 A1 EP2340631 A1 EP 2340631A1
Authority
EP
European Patent Office
Prior art keywords
key
bitstream
target
list
code
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
EP09825588A
Other languages
English (en)
French (fr)
Inventor
William V. Oxford
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rubicon Labs Inc
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of EP2340631A1 publication Critical patent/EP2340631A1/de
Withdrawn legal-status Critical Current

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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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/60Digital content management, e.g. content distribution

Definitions

  • This disclosure relates to a method for controlling arbitrary code execution on a general-purpose computer. Specifically, this disclosure relates to effective methods for linking the execution of code to a computing device to control the execution of the code. Even more particularly, this disclosure relates to controlling the execution of code in conjunction with the implementation of a recursive security protocol.
  • a secondary, but related problem is that of copyright control.
  • the vast majority of written, audio and visual works of art that are created today either begin or end up in digital format.
  • One of the characteristics of digital data is that it can easily be substantially exactly duplicated. This property facilitates a wide variety of inexpensive distribution mechanisms, most of which are not easily controlled.
  • the inherent inability to limit the distribution of digital content has had far-reaching implications on the field of copyright law over the last couple of decades. While certain systems and methods have been developed to control the copying and distribution of such duplicated data, one problem with these systems and methods is that they may be circumvented through the execution of certain types of software in conjunction with these systems and methods, for example, code which modifies the systems and methods, or obtains data utilized by such systems and methods.
  • Embodiments of systems and methods which provide highly specific control over the execution of general-purpose code block are disclosed. These embodiments may allow the exact circumstances under which a given code block is allowed to execute to be determined with specificity.
  • Such a control mechanism may be coupled with embodiments of a data hiding system and method, based for example, on an ordered execution of a set of code segments implemented via recursive execution.
  • an unencumbered generality as well as a level of protection against attack that surpasses many other security systems may be obtained.
  • systems and methods for conditional control over code execution are disclosed along with systems and methods for obscuring data that is used in a particular computation, while nonetheless still allowing the use of that data.
  • These systems and methods for control or obfuscation can be used in a large number of potential application areas, including the areas of security which may encompass, but are not limited to, the following: digital security, copyright control, conditional access, protection against undesirable computer viruses, etc.
  • embodiments may be utilized in conjunction with a recursive security protocol to augment such a security protocol.
  • FIGURE 1 depicts one embodiment of an architecture for content distribution.
  • FIGURE 2 depicts one embodiment of a target unit general purpose computing device.
  • FIGURE 3 depicts one embodiment of the creation of a compound key.
  • FIGURES 4A and 4B depict embodiments of the creation of digital signatures or their equivalents.
  • FIGURES 5A and 5B depict embodiments of the use of a compound key structure with a secured code block.
  • FIGURE 6 depicts one embodiment of the use of a compound message digest.
  • FIGURE 7A, 7B and 7C depict embodiments of a secured code block message.
  • FIGURE 8 depicts an embodiment of a decryption operation.
  • FIGURE 9 depicts one embodiment of the use of a compound key.
  • FIGURE 10 depicts one embodiment of the use of a compound key in the authorization of a candidate code block.
  • FIGURE 11 depicts one embodiment of a decryption operation.
  • FIGURE 12 depicts one embodiment of the validation of a code block.
  • FIGURE 13 depicts one embodiment of a decryption operation performed using a recursive security protocol.
  • FIGURE 14 depicts one embodiment of the operation of code validation .
  • FIGURE 15 depicts one embodiment of a digital signature function block.
  • One embodiment can include one or more computers communicatively coupled to a network.
  • the computer can include a central processing unit (“CPU"), at least one read-only memory (“ROM”), at least one random access memory (“RAM”), at least one hard drive (“HD”), and one or more input/output (“I/O") device(s) .
  • the I/O devices can include a keyboard, monitor, printer, electronic pointing device (such as a mouse, trackball, stylist, etc.), or the like.
  • the computer has access to at least one database over the network.
  • ROM, RAM, and HD are computer memories for storing computer instructions executable (in other which can be directly executed or made executable by, for example, compilation, translation, etc.) by the CPU.
  • the term "computer-readable medium" is not limited to ROM, RAM, and HD and can include any type of data storage medium that can be read by a processor.
  • a computer-readable medium may refer to a data cartridge, a data backup magnetic tape, a floppy diskette, a flash memory drive, an optical data storage drive, a CD-ROM, ROM, RAM, HD, or the like.
  • the computer-executable instructions may be stored as software code components or modules on one or more computer readable media (such as nonvolatile memories, volatile memories, DASD arrays, magnetic tapes, floppy diskettes, hard drives, optical storage devices, etc. or any other appropriate computer-readable medium or storage device) .
  • the computer- executable instructions may include lines of complied C++, Java, HTML, or any other programming or scripting code.
  • the functions of the disclosed embodiments may be implemented on one computer or shared/distributed among two or more computers in or across a network. Communications between computers implementing embodiments can be accomplished using any electronic, optical, radio frequency signals, or other suitable methods and tools of communication in compliance with known network protocols.
  • the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion.
  • a process, process, article, or apparatus that comprises a list of elements is not necessarily limited only those elements but may include other elements not expressly listed or inherent to such process, process, article, or apparatus.
  • "or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present) .
  • any examples or illustrations given herein are not to be regarded in any way as restrictions on, limits to, or express definitions of, any term or terms with which they are utilized. Instead, these examples or illustrations are to be regarded as being described with respect to one particular embodiment and as illustrative only. Those of ordinary skill in the art will appreciate that any term or terms with which these examples or illustrations are utilized will encompass other embodiments which may or may not be given therewith or elsewhere in the specification and all such embodiments are intended to be included within the scope of that term or terms. Language designating such nonlimiting examples and illustrations includes, but is not limited to: “for example,” “for instance,” “e.g.”, "in one embodiment . "
  • One reasonably secure, but complex mechanism includes pre-encryption of a code segment prior to its execution. Once the code segment is loaded into the processor from memory, it must be decrypted under carefully controlled circumstances and then executed in a secure fashion (in other words, it must not be modified or tampered with between the decryption operation and the subsequent execution) . This mechanism suffers from a performance inefficiency that can be incurred because the processor must wait until the code segment in question is decrypted prior to being able to begin execution.
  • This latency between the selection of a particular code segment to be executed and the actual post-decryption execution can cause many problems including, but not limited to, processor pipeline stalls and data path inefficiencies as well as providing another avenue for potential attacks (by somehow hijacking the code in between the decryption and the execution operations) .
  • This encrypted code mechanism also does nothing to protect the processor from the eventuality of a hacker who manages to properly decrypt (or who obtains a decrypted copy of) the ostensibly protected encrypted code segment. In that case, they could then run that unprotected code in a non- controlled manner, either on the target processor or on some other non-authorized processor. Thus, it is preferable to find a way to exercise control over exactly which code segments can be run on a particular processor or processors, irrespective of whether the code is distributed in the clear (i.e., in plaintext form) or in encrypted form.
  • Such a control mechanism may be coupled with embodiments of a data hiding system and method, based for example, on an explicitly ordered execution of a set of called code segments implemented in one embodiment via recursive execution.
  • embodiments of these systems and methods are utilized together an unencumbered generality as well as a level of protection against attack that surpasses many other security systems may be obtained.
  • FIGURE 1 depicts one embodiment of such a topology.
  • a content distribution system 101 may operate to distribute digital content (which may be for example, a bit stream comprising audio or video data, a software application, etc.) to one or more target units 100 (also referred to herein as endpoint devices) which comprise protocol engines.
  • digital content which may be for example, a bit stream comprising audio or video data, a software application, etc.
  • target units 100 also referred to herein as endpoint devices
  • endpoint devices also referred to herein as endpoint devices
  • These target units may be part of, for example, computing devices on a wireline or wireless network or a computer device which is not networked, such computing devices including, for example, a personal computers, cellular phones, personal data assistants, media players which may play content delivered as a bitstream over a network or on a computer readable storage media that may be delivered, for example, through the mail, etc.
  • this digital content may compose or be distributed in such a manner such that control over the execution of the digital content may be controlled and security implemented with respect to the digital content.
  • FIGURE 2 depicts an architecture of one embodiment of a target unit that is capable of controlling the execution of the digital content or implementing security protocols in conjunction with received digital content.
  • Elements of the target unit may include a set of blocks, which implement the protocol in a secure manner on a protocol engine of the target unit 100. It will be noted that while these blocks are described as hardware in this embodiment, software may be utilized to accomplish similar functionality with equal efficacy. It will also be noted that while certain embodiments may include all the blocks described herein other embodiments may utilize lesser or additional blocks.
  • the first of these blocks is a real-time clock or date/time register 102.
  • This is a free-running timer that is capable of being set or reset by a secure interaction with a central server. Since the time may be established by conducting a query of a secure time standard, it may be more convenient to have this function be on-chip.
  • Target unit 100 may also comprise random number generator 180 which may be configured to produce a sequence of sufficiently random numbers or which can then be used to supply seed values for a pseudorandom number generation system. This pseudo-random number generator can also potentially be implemented in hardware, software or in "secure" software.
  • One-Way Hash Function block 160 may be operable for implementing a hashing function substantially in hardware.
  • Another portion of the target unit 100 may be a hardware- assisted encryption/decryption system 170, which uses the target unit's 100 secret keys or public/private keys (described later) to operate on encrypted messages in order to translate them into executable code blocks or on unencrypted data to transform it into an encrypted message.
  • This decryption system 170 can be implemented in a number of ways. It should also be noted that this combination of a One-Way Hash Function and a subsequent encryption/decryption system may comprise a digital signature generator that can be used for the validation of any digital data, whether that data is distributed in encrypted or in plaintext form.
  • the speed and the security of the entire protocol may vary depending on the construction of this block, so it may be configure to be both flexible enough to accommodate security system updates as well as fast enough to allow the system to perform real-time decryption of time-critical messages.
  • I-Cache Instruction Cache
  • I-Cache Instruction Cache
  • an important characteristic of portions of this I-Cache 110 is that the data contained within certain blocks be readable only by CPU execution unit 120.
  • this particular block of I-Cache memory 130 is execute-only and may not be read from, nor written to, by any software.
  • This block of I-Cache will also be referred to as the "secured I-Cache" 130 herein.
  • the manner by which code to be executed is stored in this secured I-Cache block 130 may be by way of another block which may or may not be depicted.
  • Normal I-Cache 150 may be utilized to store code that is to be executed normally as is known in the art.
  • certain blocks may be used to accelerate the operation of a secure code block.
  • a set of CPU registers 140 may be designated to only be accessible while the CPU 120 is executing secure code or which are cleared upon completion of execution of the secure code block (instructions in the secured code block 130 referred to as secure mode), or if, for some reason the a jump to any section of code which is located in the non-secure or "normal" I-Cache or other area occurs during the execution of code stored in the secured I-Cache 130 .
  • CPU execution unit 120 may be configured to track which registers 140 are read from or written to while executing the code stored in secured code block 130 and then automatically clear these registers upon exiting the "secured execution" mode. This allows the secured code to quickly "clean-up" after itself such that only data that is permitted to be shared between two kinds of code blocks is kept intact. Another possibility is that an author of code to be executed in the secured code block 130 can explicitly identify which registers 140 are to be cleared.
  • Another potential manner for dealing with the "leaking" of data stored in registers 140 between secure and non-secure code segments is to identify a set of registers 140 which are to be used only when the CPU 120 is executing secured code. In one embodiment this may be accomplished utilizing a version of the register renaming and scoreboarding mechanism, which is practiced in many contemporary CPU designs. If the execution of a secured code block is treated as an atomic action (i.e., it is non-interruptible) may make this renaming and scoreboarding easier to implement.
  • another method which may be utilized for protecting the results obtained during the execution of a secured code block that is interrupted mid-execution from being exposed to other execution threads within a system is to disable stack pushes while a processor is operating in secured execution mode.
  • This disabling of stack pushes will mean that a secured code block is thus not interruptable in the sense that, if the secured code block is interrupted prior to its normal completion, it cannot be resumed and therefore must be restarted from the beginning.
  • the "secured execution" mode is disabled during a processor interrupt, then the secured code block may also potentially not be able to be restarted unless the entire calling chain is restarted.
  • Each target unit 100 may also have two sets of secret key constants 104; the values of neither of which are software- readable.
  • the first of these keys (the primary secret key) may be organized as a set of secret keys, of which only one is readable at any particular time. If the "ownership" of a unit is changed (for example, the equipment containing the protocol engine is sold or its ownership is otherwise transferred) , then the currently active primary secret key may be "cleared” or overwritten by a different value. This value can either be transferred to the unit in a secure manner or it can be already stored in the unit in such a manner that it is only used when this first key is cleared.
  • a secondary secret key may be utilized with the target unit 100 itself. Since the CPU 120 of the target unit 100 cannot ever access the values of either the primary or the secondary secret keys, in some sense, the target unit 100 does not even "know" its own secret keys 104. These keys are only stored and used within the security block of the target unit's CPU 120.
  • Yet another set of keys may operate as part of a temporary public/private key system (also known as an asymmetric key system or a PKI system) .
  • the keys in this pair are generated on the fly and may be used for establishing a secure communications link between similar units, without the intervention of a central server.
  • these keys may be larger in size than those of the set of secret keys mentioned above.
  • These keys may be used in conjunction with the value that is present in the on-chip timer block in order to guard against "replay attacks", among other things. Since these keys are generated on the fly, the manner by which they are generated may be dependent on the random number generation system 180.
  • one method that can be used to affect a change in "ownership" of a particular target unit is to always use the primary secret key as a compound key in conjunction with another key 107, which we will refer to as a timestamp or timestamp value, as the value of this key may be changed (in other words may have different values at different times), and may not necessarily reflect the current time of day.
  • This timestamp value itself may or may not be itself architecturally visible (i.e., it may not necessarily be a secret key) , but nonetheless it will not be able to be modified unless the target unit is operating in secured execution mode.
  • the consistent use of the timestamp value as a component of a compound key whenever the primary secret is used can produce essentially the same effect as if the primary secret key had been switched to a separate value, thus effectively allowing a "change of ownership" of a particular target endpoint unit without having to modify the primary secret key itself.
  • FIGURE 15 one embodiment of a one-way hash function block that can use the result of a digital signature operation generated in one iteration of a recursive security protocol as a seed value for the one-way hash function in a subsequent iteration is depicted.
  • the state of the target unit as far as it pertains to whether it is operating in secured execution mode or not can be reflected by the value of a hardware bit 1570 that will be referred to herein as the "Secured Mode Enabled" bit.
  • the default state of this hardware bit may be cleared (i.e., the default state of the target processor is not to be operating in secured execution mode) .
  • the interaction of this bit with the One-Way hash function hardware block 1561 in certain embodiments may be described in two parts. In the first (non-secured) case, all accesses to the Secret Hardware key 1540 are blocked, since the "Secured Mode Enabled” bit acts as a gatekeeper to only allow use of the Secret Hardware key when this hardware bit is set (for example to a "1", however it will also be noted that in certain architectures the bit may be considered “set” when it has a value of "0") .
  • the output of the Digital Signature Register 1564 is fed back to form the input "Seed" 1510 of the One-Way Hash function 1561.
  • the intermediate results of any of the oneway Hash function operations are fed back to form the seed for any subsequent one-way hash function operations.
  • This allows a running checksum equivalent of the entire calling chain of a set of nested or concatenated functions to be kept. In the case where each code block that is attempted to be executed is first evaluated with this one-way hash function prior to it being allowed to execute it the entire calling chain of any given code block can be substantially unambiguously determined with this single mechanism.
  • the entire calling chain of a particular code block can be validated prior to its secure execution without the need to utilize measures such as system-wide software or hardware validation (or attestation) operations.
  • this "Secured Mode Enabled" bit may or may not be architecturally visible to the processor, but its state may not be explicitly set by the processor.
  • This hardware bit could be reset to a default value by calling a non-secured code segment, but in one embodiment, the only manner in which this bit can be set is through direct action on the part of the hardware. In the case where the bit is architecturally visible, it can be explicitly determined whether or not the processor is operating in secured execution mode.
  • the security of such a system may be based on the security of the unique attribute of each of the receiving devices.
  • This unique attribute is typically implemented using a secret key that is known only to the distributor and the authorized recipient. While, in principle, this kind of setup can be an effective security system, the requirement that the original digital content be separately encrypted for each recipient makes the actual implementation impractical for most purposes. If it is desired that the original digital content be encrypted once and identically distributed to all potentially authorized parties, the problem then reverts back to that of data hiding.
  • These types of problems are known as the field of Broadcast Encryption.
  • such desired control may be implemented, using a simple time-dependent use of an architecturally hidden secret key or an encrypted object code block that must be decrypted in real time prior to execution.
  • the code block execution can be completely transparent to the control mechanism, which means that the execution speed should be minimally affected.
  • the code block to be run may be decrypted prior to execution, so there is most likely a concurrent loss of performance due to the latency of the decryption process.
  • the object code may be relatively safe from disassembly and is thus potentially more difficult to subvert by would-be attackers.
  • Embodiments discussed herein at a later point disclose systems and methods that can be implemented in a large continuum of possible solutions, ranging from a highly secure encrypted object code method to a relatively higher-performance, but nonetheless still quite secure selectively-available, secret key method.
  • hiding the secret key from the user of such a secret key may be accomplished in a method similar to the Harvard Architecture memory space bifurcation.
  • a secret key may be used in an encryption/decryption calculation, but never actually directly read by the processor.
  • This distinction may be enforced by limiting the encryption/decryption operations to those that are either implemented in hardware or are pre-determined software macros (also known as micro code), fixed at the design time of the hardware.
  • a hardware secret key may be used by any arbitrary code, even though it may not be able to be directly read by the processor, it can nonetheless be readily determined by simple calculations.
  • a completely legitimate and secure code segment can be nonetheless provided with bogus arguments from its calling routine that can cause it to behave in an unexpected fashion.
  • the execution thread is not necessarily protected against the return-based programming attacks described above.
  • the processor bus can be readily observed by the attacker, then the long-term observation of both correctly-executed (even though encrypted) code segments as well as the observation of exception faults caused by improperly encrypted code segments injected into the executable stream can help to reveal the encryption key using a modified dictionary attack methodology.
  • the processor performance in such a system is necessarily severely degraded over similar, but non-encrypted code systems.
  • This performance penalty can be caused by a number of issues, the most significant of which is the latency incurred by the requisite decryption of the code block between when it is fetched from memory and when it is available to be executed.
  • most modern processors use a pipelining mechanism to attempt to increase the number of instructions that can be executed in parallel (by various means), a block of encrypted code cannot be read into such a pipeline until it has first been decrypted.
  • the decryption process can potentially take much longer than the code execution itself, even with a hardware-assisted decryption.
  • Embodiments of the systems and methods described in this invention may allow the utilization of unencrypted code blocks, so the performance penalties associated with encrypted executables are thus less of an issue.
  • encrypted code blocks may still be utilized.
  • embodiments disclosed herein may have both the efficiency of plaintext executables as well as the added security of encrypted code segments utilizing the same or similar methods and systems.
  • embodiments of the security systems and methods described herein can be updated in-situ to address newly discovered security concerns as well as to add new functionality after an embodiment has already been deployed.
  • Embodiments of the invention may attain these advantages, among others, by ensuring that a "secured code segment" is validated prior to execution by means of a cryptographic hashing function.
  • This validation may be accomplished, for example, by authenticating a message digest or digital signature created for such a secured code segment.
  • a particular code block can be uniquely associated with a specific target unit or processor. This process will be referred to herein as "secured code binding", based on the fact that in certain embodiments this secured code block can be cryptographically bound to a specific target unit using the compound key based digital signature.
  • the secured code segment can be introduced into the execution pipeline prior to completing its cryptographic validation.
  • the hashing function can potentially be evaluated in parallel with the execution of the secured code segment itself (in a manner similar to speculative branch execution) .
  • the results of the secured code segment may be utilized only if the resulting message digest is determined to be genuine.
  • the results of the secured code segment may be utilized in subsequent operations, but the results themselves may be different depending on whether or not the processor is operating in secured execution mode.
  • This embodiment is substantially similar to the process described earlier for the evaluation of a compound key for use in a digital signature and can be generated by use of the hardware such as that depicted in FIGURE 15.
  • Embodiments of techniques of doubly encrypting a secret may have certain issues, if it is incorrectly used.
  • this intermediate key can be used to bypass the higher level security on any and all such systems.
  • this intermediate result is actually a "global" decryption key that, if discovered, can be used to bypass the entire security system for all substantially similar endpoint devices.
  • the old (compromised) keys may still be used if the original system is either reset back to its former state or if its former state is cloned by an impostor unit.
  • the intermediate results of the security system traversal can potentially be bypassed because, as noted earlier, the attacker could simply wait for the next lower level key to be exposed in a legitimate security system traversal and then use that intercepted key to clone a counterfeit "earlier" version of the system.
  • embodiments of systems and methods are described that can not only enforce this "inside out” execution ordering, but also can protect intermediate results from being intercepted by malicious code or other well-known security system exploits.
  • certain embodiments may utilize a means to keep intermediate keys from being exposed to higher-level (and thus, less secure) security system routines as well as to ensure the proper security stack traversal method.
  • One such method for achieving this is to use a recursive security structure, one embodiment of which is depicted in United States Patent Application No. 10/465,274, entitled “Method and System for a Recursive Security Protocol for Digital Copyright Control” by William V. Oxford filed June 19, 2003, which has since issued as United States Patent No. 7,203,844, on April 10, 2007, which is herby incorporated by reference for all purposes.
  • the stack order traversal can be designed so that it must be evaluated from the "inside out”. This means that the most recent security system additions are executed first and the system cannot be "started in the middle” (for example, as used in "return-based” programming exploits) .
  • a second advantage of a recursive system is that the addition of any updates to the security system may not change the original calling arguments at the security system itself. Accordingly, it may be more difficult to spoof the security system by using a traditional replay-based attack mechanism.
  • the compound key structure may also be protected from partial evaluation by tightly controlling accesses to a target unit's secret key in certain embodiments. For example, if the secret key is stored in an inaccessible memory location which is not architecturally visible, then it may only be accessed as a part of a particular security-related instruction or function. In certain embodiments this function or instruction is one that may not be easily reversed such as a non-trivial one-way transform. That way, even a counterfeit security system should not be able to reveal the value of the secret key.
  • the secret key may be protected as the secret key can never be used by itself as a part of a mathematical operation, but only as a part of a hashing operation either alone or along with some other datum, where only the result of the hashing function may be observable.
  • Additional mechanisms to protect the secret key may also prove useful in certain embodiments.
  • One such potential mechanism is the use of a compound key, where the target unit's secret key is tightly coupled to some other constraint or a set of additional operands.
  • secondary operand may include a separate secret key, a globally visible register (such as a timestamp or system version number), the message digest of the code that is accessing the secret key, etc. In embodiments of such a system, this last example could ensure that the secret key may only be accessed by a segment of code that is authorized to use that very same key.
  • the message digest is encrypted to form a digital signature and if the key that is used to encrypt that message digest is the secret key itself, then a circle of dependencies can be created that can ensure that the only method to access a secret key is by using a code segment that was authored by someone who already knew what that secret key was .
  • a compound key structure allows us to validate the "authority" of a piece of code that requests use of the target unit's secret key before it is allowed to use that key.
  • the difference between a "layered key” structure and a “compound key” structure is that in certain embodiments, the latter may be evaluated in an atomic fashion, which itself can be accomplished by recursive means. If it is attempted to assemble a similar structure using an iterative approach, as opposed to a recursive structure, then there may be a risk of exposing the intermediate results of the key evaluation process (and thus, potentially exposing the secret key) . This "exposure” may occur when secret keys (or their progenitors) are stored in publically available locations, such as general-purpose registers that are pushed out to main memory when an interrupt occurs (or even directly in memory itself) .
  • a potential security breakdown that may be addressed in certain embodiments is the protection of partial results when a security stack operation is interrupted in mid-evaluation and the state of the target unit's processor is then written out to main memory, where it is open to examination by outside observers.
  • this memory "exposure" heap pushes are disallowed while the processor is in secured execution mode. If that condition is enforced, then the recursive security protocol cannot be interrupted without losing its current state (since there are no intermediate arguments) .
  • a recursive security protocol the entire security protocol has been traversed when the recursion has terminated and the processor is running in secured execution mode, so there may be no more pushes of any arguments onto the heap in any case other than an interruption.
  • the security system stack traversal may not be restarted in mid-execution (i.e., the calculation must restart from the beginning) .
  • the recursive security protocol can be used in this manner to prevent any intermediate results from being stored on the system heap (and thus potentially exposed to unauthorized observers) .
  • the recursion can be signaled to terminate when the message digest of a given code segment matches that supplied with the code segment itself.
  • This methodology may be made more robust against attack if the message digest is calculated by means of a hardware hashing function.
  • a digital signature may also be utilized in certain embodiments.
  • a digital signature mechanism has the potential to provide at least two main attributes: 1) an assurance that the code segment has not been tampered with and 2) ready identification of the code segment author. However, in the case of embodiments where such a digital signature is cached in publicly visible or modifiable locations, additional security may be desired since the digital signature itself may be modified at any time and thus may not necessarily be genuine.
  • a public-key system may be used to validate the digital signature or a compound key structure (as described above) may be used to assure that the digital signature provided with the code segment in question was created by some party who was in possession of the target unit's secret key.
  • the use of that compound key may also be limited to a single endpoint or some set of endpoints.
  • both the public-key as well as the compound key approaches may be utilized in tandem. In that manner, it can be guaranteed that both the code segment is genuine as well as that the code segment is intended for the recipient of the compound digital signature . It is also may be desired, in certain embodiments to validate the security mechanisms on the target unit.
  • a hardware-generated digital signature for any one segment of the security system on the target device may be utilized, in the case where the security system is recursive, a distinct digital signature can be substantially automatically generated as the security system itself is traversed.
  • a distinct digital signature can be substantially automatically generated as the security system itself is traversed.
  • the innermost (and thus, most recent) portion of the security protocol has access to the entire environment in which it has been invoked, potentially including the calling arguments stored on the stack as well as other environmental variables that are stored in the system heap (or even elsewhere in memory) .
  • This built-in system attestation mechanism is particularly efficient as well as robust against attack since it is evaluated concurrently with the traversal of the security protocol itself.
  • a set of conditions that must be in place before the "execution phase" of the security system stack traversal may be specified.
  • these conditions can be expressed as an "intersection set" of all of the individually required security conditions. That way, when new security risks are discovered additional conditions which account for those risks may easily be put in place. These conditions can ensure that no portion of the security system will be allowed to execute until all of the conditions, both new and old, are met.
  • This "intersection set" of the various security system conditions can be achieved through the use of a compound key structure mechanism as discussed above.
  • this secret key can be considered as one of the "Roots-of-Trust" of the entire security system.
  • a hardware-based timestamp mechanism is utilized as one of the other components of the compound key, then the system can be better protected against replay attacks.
  • Such components include using a hardware-based hash calculation of the message digest of a code block as a part of the compound key in order to prevent the key from being properly evaluated if the code has been tampered with.
  • another such component may be a digital signature of some selected subset of the calling arguments of the code block to be executed, which could protect against stack overflow style attacks.
  • embodiments of a recursive security system are advantageous in certain embodiments where it is desired to ensure that all of the conditions are in place prior to beginning to evaluate a security token.
  • a recursive system with its ability to enforce of inside-out security stack traversal and limits on the visibility of intermediate results can thus provide an enhanced robustness against external attack as well as flexibility when it is desired to add more constraints on the security system evaluation in a minimally disruptive fashion.
  • the flexibility of how the digital signature is used may be increased. For example, if a code segment is allowed to pass the digital signature through the parsing process unchanged after the first iteration, then that code segment can be validated without having to specify in advance how many times the security system cycles through that particular code block. Similarly, it could be specified that the digital signature would be reset to a known "seed" state as a particular code segment is encountered. Thus, simply by supplying a single unique number (which can be stored in the clear) a unique variation of how many times and in what order the various portions of the security system are traversed may be specified. In fact, such a code validation process can be used to implement a variety of useful functions and thus, this technique does not necessarily have to be limited to the exclusive use of the security system itself.
  • a hardware-implemented version number may be utilized as one of the compound components of the digital signature evaluation. If the hardware version number is updated each time the security system is modified (and if that update is secure), then it can be ensured that the security system is matched to the target unit on which it is executing. Note that this is distinct from the time-stamping mechanism described earlier, although the two may be used together in a compound key evaluation to protect against replay attack scenarios or other violations.
  • a hardware-derived checksum such as a JTAG signature
  • the hardware implementation itself may be authenticated. This kind of mechanism could then ensure that the software and hardware are a matched pair and that the hardware is itself authentic (or has not been tampered with) .
  • the JTAG signature that is used as a part of the compound key evaluation is not directly observable (for example, it is taken from a point in the scan chain where its state is neither externally visible nor architecturally visible)
  • the difficulty of mounting a potential attack based on cloning the hardware can be increased many fold. This strategy can be made effective, for example, if the device's individual serial number is included in this scan chain .
  • a simple but yet effective method for accomplishing this could be to first replace the decryption key pointer for the code block in question with a new pointer that leads to a means for replacing the old version of the code block with the updated version and then to update the target endpoint device's timestamp register.
  • the updated timestamp register value may invalidate all of the previous digital signatures that were generated using the old value and may thus entail that the entire security system be revamped (ideally in a secure manner) to bring it up to date and to replace the old digital signatures (or keys) with new key/digital signature values and updated functionality.
  • One embodiment of such a forced update scenario may be referred to as logically equivalent to adding a layer of encryption to an otherwise directly executable code block (simply by forcing a single digital signature mismatch) .
  • the code that makes use of such a key must be designed in a manner such as to prevent these secret keys from being compromised.
  • a secured code binding mechanism to prevent the correct execution of an otherwise legitimate code block on a particular endpoint device when it is used in an unauthorized manner.
  • this secured code binding is based on the requirement that the result of applying a specific kind of hashing function to a candidate code segment must match a specially pre-determined message digest provided with that code segment before that code segment is allowed to execute.
  • This hashing function may be applied after a candidate code segment is called, but before it is allowed to execute. Once this hashing function has been initiated, any writes to that particular memory space comprising the candidate code segment may be either disabled or ignored. If the candidate code segment is located on the same chip as the CPU execution unit, such as in the CPU's instruction cache, then this may be easily implemented.
  • an I-cache may be shared between more than one processor residing on the same chip, for example, this may not be as straightforward to implement as it may seem on the surface.
  • Another potential method to prevent the code from being modified after the message digest has been computed is to configure the system such that any attempted writes to that memory space that occur after the hashing function has been initiated will cause a processor interrupt. As described above, this may reset the processor's secure execution mode to its default initial "not secure" mode. Another response to such an intrusion might be to cause the secured execution thread to be terminated with an error by initiating a memory segmentation fault, for example.
  • the hashing function utilized used in calculating the message digest for the candidate code segment may have certain properties.
  • the first property is that the hashing function may be implemented in the hardware of the target unit. This means that this function cannot be completely replaced by some other, (perhaps subverted) version of this original hardware hashing function. It should be noted that this hashing function may be supplemented by a refined version (or even a conditioned outright replacement) of the original function when desired.
  • the method for replacing the hardware hashing function with a refined version would be substantially similar to the procedure described earlier that is used to insert new layers into the security system, through a recursive definition of the security system's structure.
  • the new hashing function could replace the original function for the purposes of all subsequent security system operations, this new hashing function itself may still rely on the original hardware hashing function as the foundation of its root of trust.
  • the use of the term "conditioned outright replacement" in one embodiment, the original hardware-based root of trust may remain constant. This may be desirable in that it can be very difficult to undermine such a hardware-based security system.
  • a shortcoming in the original hardware hashing function is found after the target device has been deployed in the field; such a shortcoming can potentially be contained by using the original hashing function in a single application, where the calling arguments can be effectively limited .
  • a second property of the hardware hashing function is that it may use the architecturally invisible secret key as its seed value.
  • the message digest result of such a hardware hashing function can differ from unit to unit. This difference can be exploited in that it could result in a unique message digest for each and every target unit.
  • This property is similar in concept to that of a digital signature, but it does not necessarily require the addition of a separate encryption/decryption block to the hardware hashing function. Since the candidate code segment is then constrained to execute (at least in Secured Mode) only on units where the hardware-produced message digest matches that which is distributed with the candidate code segment a circular dependency has been created.
  • This circular dependency means that only code whose message digest has been created with the secret key of the correct target unit can actually make use of this same secret key. This property substantially impairs the ability for a would-be attacker to create a code segment which would be allowed to execute in secured mode on a target device.
  • each target unit may have a unique set of architecturally invisible secret keys.
  • some subset of these keys may be common to a number of identical devices.
  • a particular code segment can be bound to a particular class of endpoint devices with a common subset of keys, while still protecting this set of architecturally invisible secret keys that are held in common between such devices.
  • the combination of the hardware hashing function and one or more architecturally invisible secret keys may thus provide the basis for a chain of trust for a highly effective and robust recursive security protocol.
  • Digital Bitstream refers to a generic collection of digital data and thus, this term may be used interchangeably with the words Digital Content, Code Block or Digital Data Set.
  • Code Block the referenced data can be further assumed to represent an executable file, an executable script or even an algorithmic description or block of pseudocode.
  • FIGURE 3 depicts one embodiment of the creation of a compound key for digital content.
  • This compound key 310 may be created by applying encryption engine 320 to a global content key 330 (which may be provided or determined by the owner or author of the digital content) utilizing an endpoint specific hardware key 340, which may be an architecturally invisible secret key (as discussed above) associated with a particular endpoint device (target unit) .
  • the resulting compound key which is specific both to the particular endpoint and the digital content may be transmitted and stored to, and stored in that clear, on an endpoint device to which the compound key is provided.
  • FIGURE 4A depicts one embodiment of the creation of a secured digital data block structure.
  • the digital data block 410 may not be encrypted, but a digital signature 420 is formed by encrypting the message digest calculated by the Hashing Function 430 from the digital data block with one or more tokens 440 or450. These tokens may be either secret keys or publicly available data, such as a timestamp. Note that the methods employed to encrypt the data passing through the encryption engine (s)
  • 460 and 461 may or may not be identical. In the case where a secret key is used as one of the encryption keys, then it may be more difficult to forge the Digital Signature without knowledge of that secret key value. It is also instructive to note that the order of the encryption operations 460 and
  • FIGURE 4B depicts an alternate embodiment of the creation of a secured code block data structure.
  • a secret key 470 is appended to a digital data block 471 to form an overall message 480.
  • this appending action places the secret key 470 before or after the original digital data set 471, but the end result will differ if the order is changed.
  • secret key 470 should not be published along with the original digital data set 471. Therefore, the published data set would be restricted to just the digital data set 471 rather than the entire data structure 480.
  • This entire data structure 480 is then run through a hashing function 430, in essentially the same manner as shown before with respect to FIGURE 4A.
  • the final output 490 has many of the characteristics of the digital signature 420 shown in FIGURE 4A, but may not require the use of encryption engine (s) 460 or 461.
  • the result 490 of this operation will be referred to as a digital signature equivalent. It should be noted that this digital signature equivalent 490 is unique (assuming that the hashing function 430 is properly constructed) for each unique overall data structure 480.
  • FIGURE 5A depicts one embodiment of how a security system such as that described herein may be used to cryptographically bind an encrypted data block 510 to a specific decryption engine code block 562 and then to bind that combination 530 to a specific endpoint 's hardware secret key 523 using a digital signature 524 that is calculated by means of hashing function 540 and an encryption engine 561.
  • the Public Key 522 (which is constructed by encrypting the message digest 521 of the Decryption Engine Code Block 562 with the Global Content Secret Key 520) is publicly distributed along with the original encrypted data block 510 as a single concatenated data set 530.
  • the act of creating a digital signature 524 from the message digest of the combined message 530 (which comprises the original encrypted data block 510 combined with the Public Key 522) ensures that only the properly authorized endpoint devices are able to decrypt the original encrypted data block 510, and not only that, but that this decryption process can only be accomplished by using the prescribed method of Decryption Engine 562.
  • FIGURE 5B depicts a variation of the embodiment shown in Figure 5A.
  • the author of a particular encrypted message 511 can be unambiguously authenticated, but only on a specific endpoint device.
  • the original encrypted data block 511 is cryptographically bound to a specific decryption routine 562, as described above.
  • decryption routine 562 is an asymmetric encryption engine, where the input may be the author's secret private key 525, and the output would only be correctly decrypted using the author's public key.
  • the message digest 527 of asymmetric encryption routine 562 is appended along with digital signature 526 to the original encrypted digital data 511 to form an overall data structure 531.
  • Data structure 531 can then be cryptographically bound to a specific endpoint device by using that endpoint device's secret key 523, hashing function 544 and encryption engine 561 to form digital signature 528.
  • it can be ensured that the encrypted message 511 is genuine and its author is known as well as the fact that the author is in possession of the hardware secret key 523.
  • the term author as used herein does not necessarily mean the originator of data but may also refer to a licensor, distributor, or another type of entity which wishes to distribute or otherwise communicate such data.
  • FIGURE 6 depicts one embodiment of utilizing a cascaded hashing method in order to control the execution of a secured code block 620.
  • the first code block (secured code block 610) includes an embedded subroutine call to the second routine (secured code block 620) .
  • the message digest 630 computed by the hashing function 640 for secured code block 610 is dependent on the reference to secured code block 620 that is contained inside secured code block 610.
  • This message digest 630 then links the two secured code blocks together from the perspective of secured code block 610.
  • the message digest 650 may be constructed for code block 620 using hashing function 670.
  • the original message digest 630 may be used as a seed to the message digest 650 that is computed by hashing function 670. Recall that such a seed value can be implemented in many ways, but one such method is to simply concatenate the original message digest 630 to the second digital data set (for example, in this case secured code block 620) to form an overall message 660.
  • Overall message 660 is then run through hashing function 670 (which can either be identical to hashing function 640 or it can be some other independent hashing function) to form a second message digest 650, which is thus dependent on both secured code block 620 as well as the original message digest 630 (which is itself dependent on both secured code blocks 610 and 620) .
  • hashing function 670 which can either be identical to hashing function 640 or it can be some other independent hashing function
  • the order of these concatenated elements 620 and 630 may be important to the resulting message digest 650, but in the case of hashing function 670, the order of the elements comprising the overall message 660 may have no substantive impact on the security of hashing function 670.
  • This second message digest 650 can then be used in a manner substantially similar to that described above to ensure that secured code block 620 may only be executed correctly if it is called from code block 610.
  • code block 620 may actually be an exact duplicate (or equivalent reference) of code block 610, which would make this an embodiment of a recursive system.
  • the only difference between the two instantiations of the same code block may be the particular message digest that is appended to the code block in order to form the secured code block message digest.
  • FIGURE 7A depicts embodiments of the construction of a secured code block message.
  • the Encrypted Digital Data Set 711 has been encrypted using an encryption algorithm that is identified by pointer 720.
  • the data structure 730 is formed by a concatenation of Digital Data Set 711 and Pointer 720.
  • the message digest 750 of data structure 730 is generated by hashing function 740. This arrangement allows the cryptographic binding of an encrypted data set and its associated decryption routine.
  • an additional term is added to the concatenated data structure 731, namely the pointer 721 to the decryption key 760. It should be noted that this key 760 is not necessarily a hardware-based secret key as is depicted in this particular embodiment.
  • Encrypted Digital Data set 711 is created as a result of using encryption engine 770 and one or more keys 760 operating on the original unencrypted data set 710.
  • the message digest 751 is generated using Hashing Function 741 on the concatenated data structure 731.
  • Hashing Function 741 on the concatenated data structure 731.
  • additional terms may be added to the encryption chain in order to cryptographically bind the entire structure to a specific set of conditions that are to be satisfied on a given endpoint device and its unique secret hardware key 760. It is worth noting that the format and encryption status (i.e., is it encrypted or not) of the digital data sets 710 and 711 may not be relevant to this process, since these details can be inferred from the pointers 720,721.
  • FIGURE 7B depicts one possible embodiment for a basic generalized format for a Universal Cryptographic Data Structure that can thus be used in a recursive security system.
  • Embodiments of this structure may be simple and powerful, and can be implemented as a simple linked list of three basic elements; a generic data block 712, a decryption pointer 720 and a decryption key pointer 721.
  • the overall linked list is bundled together in a data structure 732.
  • one embodiment may comprise an auxiliary data structure 713 that includes some other independent, but perhaps related, data that is stored in conjunction with the overall data structure 732.
  • One embodiment of this concept might be to locate the actual decryption engine code block 771, such as that which is pointed to by pointer 720 inside the auxiliary data structure 713 of FIGURE 7.
  • Another such example could be to store the actual key value that is specified by pointer 721 inside this auxiliary data block.
  • auxiliary data blocks may be used in the process of generating a message digest or a digital signature as depicted variously in the embodiment examples presented in FIGURES 4A, 4B, 5A, 5B, 6 and 7A.
  • the ordering of the various data fields stored in a concatenated data set may have an impact on the resulting message digest (or digital signature), if the hashing function is properly designed.
  • FIGURE 7C depicts one embodiment of such a secured data block 733 which comprises only keys.
  • a data block may comprise a list of device specific keys 714, 715, 716 (or others, as desired) .
  • any of these keys may have been created using (for example) a secret key of an endpoint device 760, and an endpoint device timestamp register 790, which were encrypted using encryption engines 771 and 772 respectively.
  • encryption engines 771 and 772 should be distinct or even different and there may no fundamental limit to a certain number of these encryption operations in the encryption chain and, while the order of these operations may matter to the resulting compound keys, there is no requirement for a particular order for the encryption operations.
  • the key list pointer element 721 of the concatenated key list data structure 733 may point to yet another concatenated key list data structure 734. Since both of these data structures are of the same universal cryptographical format as depicted in FIGURE 7B, the key list data structure can be formed in a recursive manner.
  • the keys 733 for use in embodiments of such in a recursive security system may be protected in the same manner and using the same structures as any other data to which embodiments of such a security protocol may be applied and similarly, these protected keys may also be decrypted and authenticated on an endpoint device in the same manner as other data secured by embodiments of the systems and methods disclosed herein.
  • FIGURE 8 one embodiment of how a compound key may be utilized to decrypt encrypted content is depicted. This decryption operation may occur in "secured mode", as described above.
  • content 810 may be provided to an endpoint device along with a compound key 830 where the content has been initially encrypted using a global content key.
  • the compound key 830 may be created as described above in FIGURE 3.
  • the encrypted content 810 when received at an endpoint device it may be received with an associated compound key 830.
  • the compound key 830 may be decrypted inside of secured code block 860 to yield the global content key.
  • the global content key may be used, in turn, inside secured code block 860 to decrypt the original encrypted content 810 to yield decrypted content 880.
  • FIGURE 9 depicts one embodiment of how a secret key may be utilized to verify that a code block is authorized to run on a particular endpoint device before execution.
  • Candidate code block 910 for execution may be provided to an endpoint device or may be obtained by decrypting encrypted digital content which was received (for example, as depicted earlier in FIGURE 8) .
  • the endpoint device may receive a corresponding digital signature 920 corresponding to the candidate code block 910.
  • This digital signature 920 may comprise a message digest created from a code block (for example, by hashing that code block) which has been encrypted using the endpoint device hardware specific secret key 930.
  • an authentication operation may be implemented in secured mode whereby the candidate code block 910 is hashed to create a message digest (912) .
  • This message digest 912 can then be encrypted using the endpoint device hardware specific key 930 of the endpoint device (which may be accessible because the verification is occurring in secured mode) to create a digital signature that is compared with the originally supplied digital signature 920 in step 914. If this digital hardware-generated digital signature matches the received digital signature 920 corresponding to the candidate code block 910, then the candidate code block 910 may be considered verified and may be deemed executable, otherwise an exception error may occur (step 916) .
  • FIGURE 10 is a block diagram of one embodiment of how a code block may be allowed to run on a particular endpoint processor (under prescribed circumstances) in "secured execution" mode.
  • the pre-computed digital signature 1030 (which can also be referred to as an endpoint-specific decryption key) of the code block 1011 is constructed using the message digest of the code block and encrypting it with one or more of the following: the secret key 1040 of an authorized target endpoint device, the most recent timestamp value 1041 of the authorized target endpoint device, or one or more of any number of constraining conditions as described earlier (not shown in this particular embodiment) .
  • any one of these terms could also be pre-conditioned by applying a masking function to a subset of the term itself. For example, if a number of the least significant bits of the timestamp field are masked off (and thus may not be considered in the calculation of the digital signature) , then the effective granularity of that timestamp value can be easily controlled on a code-segment by code-segment basis without any changes in the hardware. This same principle can be applied to any number of the terms that are used in the calculation of the digital signature in certain embodiments.
  • the concatenated digital data set 1010 that contains code block 1011 also includes at least one decryption pointer 1012 and at least one decryption key or key list pointer 1013. Also as described before, either one of these may refer to an external data structure (such as the Endpoint Specific Digital Key or Digital Signature 1030) or to an embedded data structure that is wholly contained within the concatenated data set 1010.
  • code block 1011 is not encrypted (and is thus potentially executable on the endpoint device target processor) .
  • the decryption pointer may be null, since there is no further decryption required for the code block 1011 prior to its use.
  • its corresponding decryption key (pointer) 1013 may point to the associated endpoint or hardware-specific digital signature 1030.
  • embodiments of data structures and methods such as those depicted earlier in FIGURES 4A, 4B, 5A and 5B may be used to enforce a wide variety of authentication, cryptographic binding or other constraints on the use of an unencrypted data set such as depicted in block 1011.
  • (or decryption key) 1030 points only to the hardware secret key 1040 or alternately, only to the hardware secret key 1040 and the endpoint device timestamp register 1041, then we can determine that the security system related calls have reached the "bottom" of the calling chain and that there will be no further calls to additional layers of the security system in this particular calling chain. Thus, the security system recursion has "terminated” at this point.
  • This recursion termination condition is detected by hardware block 1050, which acts as a "gatekeeper” to selectively allow or deny access to the value of the endpoint specific hardware secret key 1040, and then only as an input component to a cryptographic function that uses output of the hardware hashing function block 1061.
  • the hardware specific secret key 1040 and the (message digest) output of hardware hashing function block 1061 are used as input arguments to encryption engines 1062 and 1063.
  • FIGURE 11 depicts one embodiment of a decryption operation which may be performed by a recursive security system.
  • This decryption operation may use a compound key to validate a secured code block that is to be used in the process of decrypting or otherwise manipulating and making use of distributed content.
  • an endpoint device may receive a data structure 1110 containing encrypted content 1111, a pointer 1112 to a decryption engine 1120 (or the decryption engine itself) and a pointer 1113 to an Endpoint-Specific Compound key 1130 (as discussed earlier with respect to FIGURE 9) . Before it is allowed to execute in secured mode, the compound decryption engine 1140 pointed to, or received, will be authenticated.
  • This authentication may be accomplished by calculating the message digest 1122 of the compound decryption engine 1140 code block using the hashing function 1121 resident in the endpoint device.
  • the hashing function 1121 is depicted as being a hardware block in this example, this hashing function 1121 may be, for example, a secured software code block that can be used in place of the endpoint device's built-in hardware hashing function, as was discussed earlier. In this case, however, the software version of the hashing function may still ultimately depend on the built-in hardware hashing function for authentication or authorization purposes, so the eventual root of trust in this case still resides with the endpoint 's built-in hardware hashing function block 1121.
  • the message digest 1122 generated by this hashing block 1121 may then be compared in step 1123 against a pre-computed message digest 1150 that corresponds to the decryption engine 1140.
  • This pre-computed message digest 1150 may for example, have been provided to the endpoint device in a secure fashion, or pre-computed and stored on the endpoint device itself. If the message digests match, then the compound decryption engine 1140 may be allowed to execute on the endpoint device (step 1125) . If the message digests are not substantially identical, then an invalid code exception may occur (step 1126) .
  • the processor of the endpoint device may then enter secured execution mode to execute the code contained in the compound decryption engine 1140.
  • the first part of this compound decryption engine 1141 may be accomplished utilizing the endpoint device's hardware-specific secret key 1131 to generate the global content specific key from the compound key (step 1132) .
  • the second decryption operation 1142 may then use the intermediate result generated by decryption operation 1141 in order to generate the decrypted content 1152 from the encrypted content 1110, using the obtained global content specific key.
  • decryption engine 1140 is depicted as a pair of decryption algorithms (1141 and 1142), it may encompass any fewer or greater number of cascaded decryption stages such that the final result of the operation of the various individual components (1141, 1142, etc.) of secured code block 1140 applied to the original encrypted data set 1110 will produce the desired decrypted content result 1152. It should also be noted that any two of these various individual decryption components may be either the same or different algorithms.
  • a compound key may be formed from the pre-computed message digest using an endpoint device specific hardware key and an endpoint specific timestamp value, in substantially the same manner as was depicted earlier with respect to FIGURES 4A, 7C and 10.
  • FIGURE 12 depicts one embodiment of the implementation of a recursive security protocol at an endpoint device. Specifically, one embodiment of the use of a set of compound keys for the validation of a secured code block as well as for the actual decryption /or other use of a distributed digital bitstream is depicted.
  • a message 1210 comprising encrypted content 1211 may be received including a pointer 1212 to a decryption engine 1240 (or the decryption engine itself), a content specific compound key 1231 (as discussed with respect to FIGURE 8) and an endpoint and time stamp specific compound key 1232.
  • the encrypted content 1211 can be loaded into memory at the endpoint device and the pointer 1212 to decryption engine 1240 may also be loaded into memory (for example, the instruction cache or secured portion of the instruction cache at the endpoint device) .
  • the decryption engine 1240 pointed to will then be authenticated. This authentication may be accomplished by computing the message digest of the encryption engine 1240 using the hashing function 1221 that is resident in the endpoint device, in a substantially similar manner as was described with respect to FIGURE 11.
  • the hardware-generated message digest may then be encrypted using an encryption engine, which may be implemented either in hardware or in software on the endpoint device, and which comprises one or more cascaded compound encryption engine stages 1224, 1225, etc. that operate on the computed message digest and one or more of the hardware specific keys or registers, such as the endpoint device hardware specific secret key 1270 or the value of the endpoint device timestamp register 1260.
  • the resulting compound digital signature 1226 that is generated may correctly correspond to the decryption engine code block 1240 and may also thus be cryptographically bound to the specific endpoint device (by using one or more encryption stages 1224, 1225 and the various secret or public variables or constants such as 1260 and 1270) .
  • this generated digital signature may optionally be further encrypted (using either the same or different encryption engines) and other constraining variables or constants in order to further limit the applicability of this compound digital signature.
  • one or more of the encryption stages may be optionally limited in order to broaden the field of potential generated compound digital signature matches.
  • the generated compound digital signature 1226 may then be compared in step 1223 against the endpoint and time stamp specific compound digital signature 1232 corresponding to that encryption engine 1240 which may have been originally provided to the endpoint device (for example, by a licensing authority as a part of the endpoint code licensing process at a prior point) .
  • the data structure may be identical whether this token 1232 is a digital signature or a key, so the terms "key” and "digital signature” may possibly be used interchangeably in those cases.
  • the processor of the endpoint device may then be allowed to run the code contained in the decryption engine code block 1240 in secured execution mode.
  • the decryption engine 1240 may then make use of the endpoint device's hardware key 1270 to generate the global content-specific key from the device-specific compound key 1231 using decryption engines 1241 or 1242.
  • the global content-specific key may thus be an intermediate result and accordingly may never be cached or otherwise made visible to any software or hardware entities other than the compound decryption engine code block 1240.
  • This global content-specific key is then used, by way of decryption engine 1243 to generate the final decrypted content 1250 from the original encrypted content 1211.
  • the generated digital signature 1226 does not substantially match the supplied digital signature 1232, then there may be several possible reasons why the mismatch may have occurred, including the case where attempts to make use of decryption engine code block 1240 are made by unauthorized parties. However, another possible reason for a mismatch may be the case where the software for decryption engine has been updated (and the endpoint's timestamp register has likewise been incremented or otherwise changed) . In this case, the two digital signatures may not match and it may be checked in step 1281 if the encryption engine code 1240 is either itself encrypted (for example) or otherwise in need of replacement.
  • the concept of adding a layer of encryption to a particular executable code block can be logically equivalent with the act of replacing an outdated version of a particular code block with a newer version of that code block. Accordingly, it can be determined if the decryption engine 1240 is itself either encrypted or otherwise in need of replacement (as indicated in step 1282), as indicated by examining one or more of the following tokens associated with that code block: the endpoint and timestamp specific compound digital signature 1232, the code block's decryption pointer (not shown) or the code block's decryption key pointer (also not shown) .
  • the code block's 1240 associated decryption pointer points to a null value, it would indicate that the encryption engine 1240 is not encrypted or otherwise outdated and thus, an exception error may result (step 1283), since the generated digital signature 1226 and the supplied digital signature 1232 are not substantially identical but there may be no other recourse for replacing the code block with a different version that may possibly produce the correct digital signature. If, however, the decryption engine code block's 1240 decryption pointer points to another code block; either another (possibly updated) encryption engine (not shown) or some other code block, then this new code block may be loaded and the authentication steps above applied to this next encryption engine (in other words, another layer of recursion may be introduced) .
  • This recursive execution mechanism may continue until it is determined that a match between an generated endpoint and time stamp specific compound digital signature 1226 and the supplied endpoint and time stamp specific compound digital signature 1232 occurs (at step 1227) or that it is determined that there is no match and the decryption engine 1240 itself is not encrypted, at which point an exception error may occur (step 1283) . If it is determined that a generated endpoint and time stamp specific compound digital signature 1226 and the supplied endpoint and time stamp specific compound digital signature 1232 match, then the recursion is terminated and may be unwound. This may entail the authentication and execution of each of the code blocks that were encountered and saved on the stack during the initial forward pass through the overall recursive calling chain. It should be noted that some or perhaps even all of these code blocks may not necessarily be encryption or decryption engines. In any case, each of these code blocks may be authenticated while the processor of the target endpoint device operates in secured execution mode.
  • an endpoint device may receive a message 1310 that may contain, among other things, encrypted content 1312 along with a content specific compound key 1316 (as discussed with respect to FIGURE 8), a pointer 1313 to an decryption engine data structure 1320 or the decryption engine itself, if it is embedded in the original message 1310 and a key list pointer 1314, that may point to a key or key list data structure 1318.
  • this data structure may include a key or key list 1316 or a digital signature 1317.
  • the decryption engine data structure 1320 may, in turn, contain an encrypted code block 1321, a subsequent decryption pointer 1322 associated with the encrypted (or alternately, obsolete and in need of replacement) decryption code block 1321 and an associated decryption key list pointer 1323.
  • the subsequent decryption pointer 1322 may point to a final decryption code block data structure 1330, which has structure substantially similar to that of decryption code block data structure 1320, except that, in the case of data structure 1330, the decryption code block 1331 is not itself in encrypted form.
  • Encrypted Content data structure 1310 is loaded into the endpoint processor's memory space in anticipation of decrypting the encrypted content 1312 contained within. Since the data structure 1310 contains a decryption pointer 1313, the associated decryption engine code block data structure 1320 is located and read into memory. Since this subsequent data structure 1320 also contains a decryption pointer 1322the decryption engine code block data structure 1330 associated with pointer 1322 is then located and loaded into memory.
  • the embedded decryption pointer 1332 in this example is determined to be a null pointer, so the target endpoint device's security system is thus able to determine that the current decryption recursion chain has terminated (as discussed, for example, in FIGURE 10) and thus, the decryption engine 1331 that was just read into memory as a part of data structure 1330 may contain an unencrypted (and thus potentially executable) code block.
  • these key list data structures 1318, 1328 and 1338 is not necessarily fixed and they may therefore be interpreted at runtime as the data structures themselves are traversed.
  • these key list data structures (1318, 1328 and 1338) may themselves include references to further decryption or subsequent interpretation by incorporating supplementary decryption pointers and key list pointers within any or all of these key list data structures (1318, 1328 and 1338) themselves, although this particular option was not pictured in the embodiment of FIGURE 13 for the sake of simplicity.
  • At least one of the key pointers 1336 in the key list data structure 1338 corresponds to a reference to the endpoint's hardware secret key 1392.
  • This reference to the endpoint's hardware secret key 1392 may be accomplished either explicitly by pointing to an appropriately reserved memory location (a location that may be specified in the processor's architecture, even though it may never be directly read by the processor and thus, not directly architecturally visible) or implicitly, by using some specially reserved value for the pointer. In either case, this reference may implemented using various means, but an example one such embodiment may be to equate the value of "0" (as distinct from the value of "null") in the key list data structure to a reference to the endpoint's hardware secret key 1392.
  • the fact that at least one part of the key list data structure refers to the endpoint's hardware secret key 1392 may further indicate that the decryption engine code block 1331 is intended to run in secured execution mode on the target endpoint device's processor.
  • the output of hardware-based digital signature generator block 1390 is compared with the value stored in data structure 1337. In the case where the two values substantially match, then the processor is allowed to enter secured execution mode.
  • hardware-based digital signature generator block 1390 may, in one embodiment, comprise one or more software-based elements, but may also incorporate at least one hardware-based security component, either directly or indirectly, as discussed earlier. That hardware component is the hardware-based hashing function that has been referenced in many of the earlier descriptions contained herein, and which comprises the overall target endpoint unit's security system root of trust.
  • decryption engine code block 1331 is allowed to run in secured execution mode, which allows the endpoint processor to potentially make use of the endpoint's hardware device-specific secret key 1392 as a part of a security-related computation (as has been described earlier herein) .
  • the value of secret key 1392 would not be available for use in such a security related computation.
  • FIGURE 13 hardware access control block 1343, which will only allow the value of secret key 1392 to pass through to subsequent use (for example in decryption engine code block 1331) if the processor is running in secured execution mode.
  • one of the input parameters to hardware access control block 1343 is the output of access control block 1341.
  • the state of hardware access control block 1343 (which is effectively the "secured execution mode enabled” indicator for decryption code block 1321) is dependent on the fact that decryption code block 1331 was also running in secured execution mode. This may be indicated by the state of the "secured execution mode enabled" indicator for decryption code block 1331 (for example, the output of hardware access control block 1341) .
  • This dependency constrains the ability of decryption engine code block 1321 to be able to run in secured execution mode only if decryption code block 1331 was also running in secured execution mode.
  • hardware access control block 1343 is used as one of the inputs to hardware access control block 1345, which is the "secured execution mode enabled” indicator for decryption code block 1311.
  • the mechanism that allows the "secured execution mode enabled” bit to be propagated back up the calling chain in the reverse direction for the purposes of authorizing the preceding parent code blocks to run in secured execution mode only if they are both authenticated properly (as will be explained in more detail with respect to FIGURE 14) and if they are supplied with authentic decryption results from properly authorized portions of the security chain from lower down in the recursive calling chain.
  • any one of several conditions may cause any of the "secured execution mode enabled" bits to be reset to a "non-secured” default state (and thus, potentially require the entire security chain to be restarted) .
  • Such conditions may include a processor interrupt or a subsequent digital signature comparison mismatch.
  • these hardware access control blocks 1341, 1343 and 1345 are depicted as separate entities for purposes of clarity in FIGURE 13, it can be seen that they may, in fact, be embodied in a single hardware unit (such as that described with respect to FIGURE 15), whose output is thus fed back as one of its own input terms.
  • the output of the highest-level or final "secured execution mode enabled" bit in the overall chain may be used as part of a control mechanism to enable or disable some externally-visible output for the target device (such as an audio or video output enable, for example) .
  • the action of decryption engine code block 1331 in step 1370 is to replace or otherwise supplement the data set stored in the decryption engine code block portion 1321 of data structure 1320 with an updated and/or properly executable version of the original data. This action may be accomplished utilizing the original data that was stored in 1321 and decrypting it with one or more decryption keys that are stored in or pointed to by key list data structure 1328.
  • decryption engine code block 1331 may be to either replace the decryption code block 1321 with an updated version or even to execute directly in place of decryption engine code block 1321.
  • decryption engine code block 1331 may first operate using various input data, including (in this embodiment) the value contained in the target endpoint device's timestamp register 1394, the target endpoint device's hardware-specific secret key 1392 (as modified by passage through hardware access control 1342) and endpoint and timestamp-specific compound digital key 1326.
  • decryption engine code block 1331 In the case where decryption engine code block 1331 is then subsequently operating as a direct replacement of decryption engine code block 1321, it may then utilize a second set of input data (for example in this embodiment, the value contained in the target endpoint device's timestamp register 1394, the target endpoint device's hardware-specific secret key 1392 (as modified by passage through hardware access control 1344) and endpoint and timestamp-specific compound digital key 1316.
  • a further action of the updated decryption engine code block 1321 in step 1371 is to replace or otherwise interpret the original encrypted content data 1312 in order to produce the desired output data 1380.
  • decryption engine code block 1321 This action may be accomplished utilizing the original data that was stored in 1312 and decrypting it with one or more decryption keys that are stored in or pointed to by key list data structure 1318. Since the actions of both decryption engine code blocks 1321 and 1331 are similar in nature, is should be evident that any of the options detailed earlier in the description of the operation of decryption engine code block 1331 are equally applicable to the operation of the updated version of decryption engine code block 1321. Also, in the case of the operation of decryption engine code block 1321, it should be noted that in some embodiments, the associated hardware access control block 1344 is distinct from hardware access control block 1342.
  • FIGURE 14 depicts one embodiment of how a recursive calling chain may be traversed and terminated and how a processor may be allowed to enter into secured execution mode using a message-digest based authentication of one or more embedded code blocks.
  • the operation of two candidate code blocks 1412 and 1422 may be explained, both of which may be contained within universal cryptographic data structures (1411 and 1421 respectively) as was discussed earlier with respect to FIGURE 7B.
  • code block data structure 1421 is represented twice in FIGURE 14. This duplication was illustrated to represent separate iterations for the sake of clarity, although it should be noted that this is exactly the same data structure in both instances.
  • a call to candidate code block 1412 may be initiated.
  • the code block data structure 1411 may be read into memory and its message digest 1441 may be computed by means of hashing function 1480 (which may be realized either wholly or partially in hardware, as was described previously) .
  • the hashing function may be given an initial seed value 1440 (which may, or may not, be set to all zeroes) .
  • this hashing function seed value feature may be implemented using one of a number of methods, but in this embodiment the seed value 1440 is known and the method by which it affects the message digest output 1441 of hashing function block 1480 is both repeatable and deterministic.
  • the processor can begin executing the code contained in code block 1412.
  • code block 1412 may not be designed to run in secured execution mode and therefore does not require the use of any of the target endpoint unit's security hardware features.
  • the processor thus begins to execute the instructions contained within code block 1412 until it reaches an embedded subroutine call that points to code block 1422.
  • code block data structure 1421 is loaded into memory and the process of generating the next message digest 1442 is repeated by the hashing function block 1480.
  • the hashing function seed value may no longer be the initial seed value 1440, but rather the previously generated result 1441.
  • the value of message digest 1442 can be seen to be deterministically dependent on the message digest of both code blocks 1411 and 1421.
  • the values of decryption pointer 1423 and those contained in the key list data structure 1428 pointed to by key list pointer 1424 may still be null, so the processor continues on in non-secured execution mode as before.
  • code block 1422 contains a recursive call (for example, a subroutine call to itself) .
  • a recursive calling structure is illustrative only and correct operation of the target endpoint device's security system may be achieved by other means, for example, be ensuring that any calls to the security system are contained within a single layer of code.
  • the recursive calling form may be relatively more secure, as detailed earlier, and may be effectively utilized to implement a security system in conjunction with the depicted embodiment .
  • the code block data structure 1421 is once again loaded into memory (for example, in most contemporary systems, the data structure 1421 may be loaded to a different physical location the second time it is fetched) and the hashing function 1480 calculates the new message digest 1443. Notice that this new message digest 1443 is dependent on the initial message digest seed value 1440, message digest 1441 (of code block 1412) as well as the message digest of two separate iterations of code block 1422.
  • the key list pointer points to a new data structure 1438, that contains a non-null digital signature value 1437.
  • This non-null value is an indicator to the security system that this iteration of code block 1422 contains a reference to the target endpoint hardware specific security system.
  • the processor in order for such a reference to operate properly, the processor must enter secured execution mode at some point.
  • the digital signature 1443 generated when code block data structure 1421 was most recently loaded into memory may then be compared to the digital signature 1437 contained within key list data structure 1438. In the case where the two values are found to be substantively similar in step 1491, then the target endpoint processor is allowed to enter secured execution mode.
  • step 1492 is to direct the processor to execute the appropriate exception error handler portion 1470 of the security system.
  • FIGURE 15 depicts one embodiment of how a digital signature generator block 1560 may be implemented in hardware in order to support the features detailed above.
  • the embodiment depicted in FIGURE 15 shows a hardware implementation of functionality similar to the functionality of the digital signature generator block depicted in FIGURE 10 and which will support the functional features that were described in operational detail, for example, with respect to FIGURES 11, 12, 13 and 14.
  • the hashing function seed register 1510 may comprise a similar functionality as that labeled as block 1440 of FIGURE 14 and it may be operable to hold the initial value that is fed to hashing function block 1561.
  • the output of hashing function block 1561 is fed as one of the inputs to the first stage 1562 of a compound encryption engine.
  • the other input to encryption engine 1562 is the output of the target endpoint device's timestamp register 1541.
  • the resulting output of the first stage encryption engine 1562 is then supplied as one of the inputs to the second stage encryption engine 1563.
  • the other input to second stage encryption engine 1563 is the output of secured execution mode access point 1566.
  • Access point 1566 is operable to pass through the value of the target endpoint 's hardware specific secret key 1540 only when the target endpoint device is either running in secured execution mode or when the "recursion terminated" condition is detected, as was detailed earlier with respect to FIGURE 14.
  • the resulting output value from second stage encryption engine 1563 is then stored in digital signature register 1564, for use in comparing this generated digital signature with the digital signatures that are supplied with the candidate code blocks (as referenced, for example, in the descriptions of FIGURES 9, 10, 11, 12 13 and 14) .
  • the output of digital signature register 1564 is gated by access point 1565, whose action is to pass through the value of digital signature register 1564 when the target endpoint device is not running in secured execution mode.
  • the output of access point 1565 is then fed back to the input of the hashing function seed register 1510 in order to create the cascaded message digest feature that was detailed in the description with respect to FIGURE 14.
  • the input to the hashing function seed register 1510 is not dependent on the value of digital signature register 1564 and can thus either be set to some initial value (as detailed in the description with respect to FIGURE 14) or by some other means (for example, such as a processor write to a specific memory location) .

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
EP09825588A 2008-11-10 2009-11-10 Verfahren und system zum steuern der kodeausführung auf einem rechner mittels eines rekursiven sicherheitsprotokolls Withdrawn EP2340631A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11311108P 2008-11-10 2008-11-10
PCT/US2009/063861 WO2010054369A1 (en) 2008-11-10 2009-11-10 Method and system for controling code execution on a computing device using recursive security protocol

Publications (1)

Publication Number Publication Date
EP2340631A1 true EP2340631A1 (de) 2011-07-06

Family

ID=42153308

Family Applications (1)

Application Number Title Priority Date Filing Date
EP09825588A Withdrawn EP2340631A1 (de) 2008-11-10 2009-11-10 Verfahren und system zum steuern der kodeausführung auf einem rechner mittels eines rekursiven sicherheitsprotokolls

Country Status (4)

Country Link
EP (1) EP2340631A1 (de)
JP (2) JP5636371B2 (de)
KR (1) KR20110106849A (de)
WO (1) WO2010054369A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683214B2 (en) * 2009-09-17 2014-03-25 Panasonic Corporation Method and device that verifies application program modules
US8468365B2 (en) * 2010-09-24 2013-06-18 Intel Corporation Tweakable encryption mode for memory encryption with protection against replay attacks
US8930676B2 (en) * 2010-12-22 2015-01-06 Via Technologies, Inc. Master core discovering enabled cores in microprocessor comprising plural multi-core dies
JP5700481B2 (ja) * 2011-06-29 2015-04-15 インテル・コーポレーション 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置
KR101380895B1 (ko) 2012-06-12 2014-04-10 한국전자통신연구원 보안 서비스 제공 장치 및 이를 이용한 보안 서비스 방법
US8984331B2 (en) * 2012-09-06 2015-03-17 Triumfant, Inc. Systems and methods for automated memory and thread execution anomaly detection in a computer network
US9753863B2 (en) * 2014-12-27 2017-09-05 Intel Corporation Memory protection with non-readable pages
US10020934B2 (en) * 2015-11-05 2018-07-10 Intel Corporation Hardware accelerator for cryptographic hash operations
WO2017083311A1 (en) * 2015-11-09 2017-05-18 Secure Content Storage Association, Llc Timed release of decryption keys for access to distributed encrypted content
DE112018000705T5 (de) 2017-03-06 2019-11-14 Cummins Filtration Ip, Inc. Erkennung von echten filtern mit einem filterüberwachungssystem
US10555210B2 (en) * 2017-03-15 2020-02-04 Qualcomm Incorporated Group indicator for code block group based retransmission in wireless communication
US10805163B2 (en) * 2018-08-21 2020-10-13 Hewlett Packard Enterprise Development Lp Identifying device types based on behavior attributes
DE102019128528A1 (de) 2019-10-22 2021-04-22 Infineon Technologies Ag Datenkryptografievorrichtungen und speichersysteme
JP7352182B2 (ja) * 2020-02-14 2023-09-28 コニカミノルタ株式会社 画像形成装置、画像処理システム、およびプログラム
US11431510B1 (en) * 2020-04-30 2022-08-30 Wells Fargo Bank, N.A. Code-sign white listing (CSWL)
CN115955309B (zh) * 2023-03-13 2023-06-02 浙江华创视讯科技有限公司 一种加密推理方法及其系统、设备、存储介质
CN117874789B (zh) * 2024-01-05 2024-09-03 张渴欣 一种动态的隐私数据加密方法和系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2514593B1 (fr) * 1981-10-09 1986-12-26 Bull Sa Procede et dispositif pour authentifier la signature d'un message signe
US6226618B1 (en) * 1998-08-13 2001-05-01 International Business Machines Corporation Electronic content delivery system
US6389403B1 (en) * 1998-08-13 2002-05-14 International Business Machines Corporation Method and apparatus for uniquely identifying a customer purchase in an electronic distribution system
JP2000155735A (ja) * 1998-11-20 2000-06-06 Mitsubishi Electric Corp ディジタルコンテンツ配布システム装置
JP3846230B2 (ja) * 2001-06-18 2006-11-15 日本ビクター株式会社 コンテンツ情報認証再生装置
HUP0401720A2 (hu) * 2001-09-27 2005-07-28 Matsushita Electric Industrial Co., Ltd. Kódoló, dekódoló, és titkos kulcsot képző eszközé és eljárás, valamint eszközkészlet szerzői jog védelmére és távközlési eszköz titkosított összeköttetés létesítésére
US7203844B1 (en) * 2002-06-20 2007-04-10 Oxford William V Method and system for a recursive security protocol for digital copyright control
JP2005346182A (ja) * 2004-05-31 2005-12-15 Fujitsu Ltd 情報処理装置、耐タンパ方法、耐タンパプログラム
US7480385B2 (en) * 2004-11-05 2009-01-20 Cable Television Laboratories, Inc. Hierarchical encryption key system for securing digital media
JP5211716B2 (ja) * 2008-01-29 2013-06-12 富士通株式会社 ファイルアクセス制御方法、ファイルアクセス制御プログラム、およびファイルアクセス制御装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2010054369A1 *

Also Published As

Publication number Publication date
JP2012508529A (ja) 2012-04-05
JP5636371B2 (ja) 2014-12-03
KR20110106849A (ko) 2011-09-29
WO2010054369A1 (en) 2010-05-14
JP2015035224A (ja) 2015-02-19

Similar Documents

Publication Publication Date Title
US9705677B2 (en) Method and system for control of code execution on a general purpose computing device and control of code execution in a recursive security protocol
JP5636371B2 (ja) 汎用コンピューティングデバイスにおけるコード実行制御および再帰的セキュリティプロトコルでのコード実行制御のための方法およびシステム
US9710617B2 (en) Method and system for a recursive security protocol for digital copyright control
EP2828759A1 (de) Verfahren und system zur isolierung von prozessbearbeitungssätzen
CA2543572C (en) Tamper-resistant trusted virtual machine
KR101457355B1 (ko) 보안 애플리케이션 실행을 제공하는 방법 및 장치
JP4689945B2 (ja) リソースアクセス方法
US20050060568A1 (en) Controlling access to data
WO2004006075A1 (ja) 開放型汎用耐攻撃cpu及びその応用システム
WO2006034151A2 (en) Digital rights management system based on hardware identification
US8656190B2 (en) One time settable tamper resistant software repository
WO2008108764A2 (en) Method and system for a recursive security protocol for digital copyright control
Aldoseri et al. Symbolic modelling of remote attestation protocols for device and app integrity on Android
KR101604892B1 (ko) 안드로이드 기반 어플리케이션의 부정사용 방지 방법 및 장치
JP2015135703A (ja) デジタル著作権制御用再帰的セキュリティプロトコルのための方法およびシステム
KR101265887B1 (ko) 보호 컴퓨팅 환경을 제공하는 방법 및 장치 내에 보호 환경을 설정하는 방법
JP2014017871A (ja) デジタル著作権制御用再帰的セキュリティプロトコルのための方法およびシステム
JP2013084294A (ja) デジタル著作権制御用再帰的セキュリティプロトコルのための方法およびシステム

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20110526

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK SM TR

AX Request for extension of the european patent

Extension state: AL BA RS

DAX Request for extension of the european patent (deleted)
RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: KRIMMENI TECHNOLOGIES, INC.

RIN1 Information on inventor provided before grant (corrected)

Inventor name: KRIMMENI TECHNOLOGIES, INC.

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: RUBICON LABS, INC.

RIN1 Information on inventor provided before grant (corrected)

Inventor name: RUBICON LABS, INC.

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN WITHDRAWN

18W Application withdrawn

Effective date: 20160412