Techniques are provided to obfuscate seed values to produce a decryption key for a simplified content protection scheme. A first repeatable sequence is performed that encrypts a value stored in a first memory location using a value stored in the second memory location to produce an encrypted value and the value stored in the first memory location is overwritten with the encrypted value and then applying a constraining function to the value stored in the second memory location to produce a result and the value stored in the second memory location is overwritten with the result, wherein the result contains a less entropy compared an entropy level of the value in the second memory location prior to applying the constraining function. This sequence is repeated, but the values used in the first and second memory locations are used in opposite fashion. Techniques are also provided to perform the reverse operation and de-obfuscate a decryption key.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method comprising: storing a value in a first memory location; storing a value in a second memory location; performing a first repeatable sequence, the first repeatable sequence comprising: encrypting the value stored in the first memory location using the value stored in the second memory location to produce a first encrypted value and overwriting the value stored in the first memory location with the first encrypted value; applying a constraining function to the value stored in the second memory location to produce a first result and overwriting the value stored in the second memory location with the first result, wherein the first result has less entropy compared to an entropy of the value stored in the second memory location prior to applying the constraining function; encrypting the value stored in the second memory location using the value stored in the first memory location to produce a second encrypted value and overwriting the value in the second memory location with the second encrypted value; applying the constraining function to the value stored in the first memory location to produce a second result and overwriting the value stored in the first memory location with the second result, wherein the second result has less entropy compared to an entropy level of the value stored in the first memory location prior to applying the constraining function; and repeating the first repeatable sequence for a predetermined number of iterations, where the last value to be encrypted becomes a decryption key; determining a set of values for respective place values within the value stored in the first memory location that may have been changed by the constraining function; performing a second repeatable sequence, the second repeatable sequence comprising: deriving a first test key by changing one or more digits of the value stored in the first memory location corresponding to one or more of said determined set of values to a value within a range of the one or more digits of the value stored in the first memory location and overwriting the value stored in the first memory location with the first test key; decrypting the value stored in the second memory location using the first test key to produce a first decrypted value, wherein if the digits in the first decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function then storing the first decrypted value in the second memory location, and wherein if the digits in the first decrypted value corresponding to values of said determined set of values do not comprise an entropy level attainable by applying the constraining function then deriving a second test key and decrypting the value stored in the second memory location to produce a second decrypted value until all possible combinations of values within the range of the one or more digits have been used to derive the second test key, or until the digits in the second decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function and storing the second decrypted value in the second memory location; deriving a third test key by changing one or more digits of the value stored in the second memory location corresponding to one or more of said determined set of values to a value within the range of the one or more digits of the value stored in the second memory location and overwriting the value stored in the second memory location with the test key; decrypting the value stored in the first memory location using the third test key to produce a third decrypted value, wherein if the digits in the third decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function then storing the third decrypted value in the first memory location, and wherein if the digits in the third decrypted value corresponding to values of said determined set of values do not comprise an entropy level attainable by applying the constraining function then deriving a fourth test key and decrypting the value stored in the first memory location to produce a fourth decrypted value until all possible combinations of values within the range of the one or more digits have been used to derive the fourth test key, or until the digits in the fourth decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function and storing the fourth decrypted value in the first memory location; and repeating the second repeatable sequence for a predetermined number of iterations.
2. The method of claim 1 , wherein repeating the first repeatable sequence comprises repeating a first half of the first repeatable sequence one additional time.
3. The method of claim 1 , wherein encrypting the value stored in the first memory location or encrypting the value stored in the second memory location comprises using one of a block cipher, symmetric key cipher, asymmetric key cipher, and a stream cipher.
4. The method of claim 1 , further comprising: transmitting information indicative of the type of constraining function applied to values stored in the first and second memory locations and the predetermined number of iterations.
5. The method of claim 1 , further comprising: receiving information indicative of the type of constraining function to apply values stored in the first and second memory locations and the predetermined number of iterations.
6. The method of claim 1 , wherein repeating the second repeatable sequence comprises repeating a first half of the second repeatable sequence one additional time.
7. The method of claim 1 , wherein decrypting the value stored in the first memory location or decrypting the value stored in the second memory location comprises using one of a block cipher, symmetric key cipher, asymmetric key cipher, and a stream cipher.
8. A method comprising: storing a value in a first memory location; storing a value in a second memory location; determining a set of values for respective place values within the value stored in the first memory location that may have been changed by the constraining function; performing a first repeatable sequence, the first repeatable sequence comprising: deriving a first test key by changing one or more digits of the value stored in the first memory location corresponding to one or more of said determined set of values to a value within a range of the one or more digits of the value stored in the first memory location and overwriting the value stored in the first memory location with the first test key; decrypting the value stored in the second memory location using the first test key to produce a first decrypted value, wherein if the digits in the first decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function then storing the first decrypted value in the second memory location, and wherein if the digits in the first decrypted value corresponding to values of said determined set of values do not comprise an entropy level attainable by applying the constraining function then deriving a second test key and decrypting the value stored in the second memory location to produce a second decrypted value until all possible combinations of values within the range of the one or more digits have been used to derive the second test key, or until the digits in the second decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function and storing the second decrypted value in the second memory location; deriving a third test key by changing one or more digits of the value stored in the second memory location corresponding to one or more of said determined set of values to a value within the range of the one or more digits of the value stored in the second memory location and overwriting the value stored in the second memory location with the test key; decrypting the value stored in the first memory location using the third test key to produce a third decrypted value, wherein if the digits in the third decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function then storing the third decrypted value in the first memory location, and wherein if the digits in the third decrypted value corresponding to values of said determined set of values do not comprise an entropy level attainable by applying the constraining function then deriving a fourth test key and decrypting the value stored in the first memory location to produce a fourth decrypted value until all possible combinations of values within the range of the one or more digits have been used to derive the fourth test key, or until the digits in the fourth decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function and storing the fourth decrypted value in the first memory location; and repeating the second repeatable sequence for a predetermined number of iterations.
9. The method of claim 8 , wherein repeating comprises repeating a first half of the second repeatable sequence one additional time.
10. The method of claim 8 , wherein decrypting the value stored in the first memory location or decrypting the value stored in the second memory location comprises using one of a block cipher, symmetric key cipher, asymmetric key cipher, and a stream cipher.
11. The method of claim 8 , further comprising: transmitting information indicative of the type of constraining function applied to values stored in the first and second memory locations and the predetermined number of iterations.
12. The method of claim 8 , further comprising: receiving information indicative of the type of constraining function to apply values stored in the first and second memory locations and the predetermined number of iterations.
13. The method of claim 8 , further comprising: performing a second repeatable sequence, the second repeatable sequence comprising: encrypting the value stored in the first memory location using the value stored in the second memory location to produce a first encrypted value and overwriting the value stored in the first memory location with the first encrypted value; applying a constraining function to the value stored in the second memory location to produce a first result and overwriting the value stored in the second memory location with the first result, wherein the first result has less entropy compared to an entropy level of the value stored in the second memory location prior to applying the constraining function; encrypting the value stored in the second memory location using the value stored in the first memory location to produce a second encrypted value and overwriting the value in the second memory location with the second encrypted value; applying the constraining function to the value stored in the first memory location to produce a second result and overwriting the value stored in the first memory location with the second result, wherein the second result has less entropy compared to an entropy level of the value stored in the first memory location prior to applying the constraining function; and repeating the second repeatable sequence for a predetermined number of iterations.
14. The method of claim 13 , wherein repeating comprises repeating a first half of the second repeatable sequence one additional time.
15. The method of claim 13 , wherein encrypting the value stored in the first memory location or encrypting the value stored in the second memory location comprises using one of a block cipher, symmetric key cipher, asymmetric key cipher, and a stream cipher.
16. Logic encoded in one or more non-transitory, tangible media for execution and when executed, by a computer reading the media, is operable to: store a value in a first memory location; store a value in a second memory location; perform a first repeatable sequence, the first repeatable sequence comprising operation: determine a set of values for respective place values within the value stored in the first memory location that may have been changed by the constraining function; derive a first test key by changing one or more digits of the value stored in the first memory location corresponding to one or more of said determined set of values to a value within a range of the one or more digits of the value stored in the first memory location and overwriting the stored in the first memory location with the test key; decrypt the value stored in the second memory location using the first test key to produce a first decrypted value, wherein if the digits in the first decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function then storing the first decrypted value in the second memory location, and wherein if the digits in the first decrypted value corresponding to values of said determined set of values do not comprise an entropy level attainable by applying the constraining function then deriving a second test key and decrypting the value stored in the second memory location to produce a second decrypted value until all possible combinations of values within the range of the one or more digits have been used to derive the second test key, or until the digits in the second decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function and storing the second decrypted value in the second memory location; derive a third test key by changing one or more digits of the value stored in the second memory location corresponding to one or more of said determined set of values to a value within the range of the one or more digits of the value stored in the second memory location and overwriting the value stored in the second memory location with the third test key; decrypt the value stored in the first memory location using the third test key to produce a third decrypted value, wherein if the digits in the third decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function then storing the third decrypted value in the first memory location, and wherein if the digits in the third decrypted value corresponding to values of said determined set of values do not comprise an entropy level attainable by applying the constraining function then deriving a fourth test key and decrypting the value stored in the first memory location to produce a fourth decrypted value until all possible combinations of values within the range of the one or more digits have been used to derive the fourth test key, or until the digits in the fourth decrypted value corresponding to values within said determined set of values comprise an entropy level attainable by applying the constraining function and storing the fourth decrypted value in the first memory location; repeat the first repeatable sequence for a predetermined number of iterations; perform a second repeatable sequence, the second repeatable sequence comprising operation: encrypt the value stored in the first memory location using the value stored in the second memory location to produce a first encrypted value and overwriting the value stored in the first memory location with the first encrypted value; apply a constraining function to the value stored in the second memory location to produce a first result and overwriting the value stored in the second memory location with the first result, wherein the first result has less entropy compared to an entropy level of the value stored in the second memory location prior to applying the constraining function; encrypt the value stored in the second memory location using the value stored in the first memory location to produce a second encrypted value and overwriting the value in the second memory location with the second encrypted value; apply the constraining function to a value stored in the first memory location to produce a second result and overwriting the value stored in the first memory location with the second result, wherein the second result has less entropy compared to an entropy level of the value stored in the first memory location prior to applying the constraining function; and repeat the second repeatable sequence for a predetermined number of iterations.
17. The logic encoded in one or more non-transitory, tangible media executable by a computer reading the media of claim 16 , wherein the operation that repeats the first repeatable sequence further comprises repeating a first half of the first repeatable sequence one additional time and the operation that repeats the second repeatable sequence further comprises repeating a first half of the second repeatable sequence one additional time.
18. The logic encoded in one or more non-transitory, tangible media executable by a computer reading the media of claim 16 , wherein the operation that encrypts the value stored in the first memory location or encrypts the value stored in the second memory location further comprises using one of a block cipher, symmetric key cipher, asymmetric key cipher, and a stream cipher, and the operation to decrypt the value stored in the first memory location or operation to decrypt the value stored in the second memory location further comprises using one of a block cipher, symmetric key cipher, asymmetric key cipher, and a stream cipher.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
March 20, 2009
March 6, 2012
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.