Discrete key generation method and apparatus
AssigneeApple Inc.
InventorsPierre Betouin, Mathieu Ciet, Augustin J. Farrugia
Life of this patent
Estimating the term…
Loading patent…
AssigneeApple Inc.
InventorsPierre Betouin, Mathieu Ciet, Augustin J. Farrugia
Estimating the term…
A computer enabled secure method and apparatus for generating a cryptographic key, to be used in a subsequent cryptographic process, where the key is to be valid only for example during a specified time period. The method uses a polynomial function which is a function of an input variable such as time, and dynamically computes the key from the polynomial. This is useful for generating decryption keys used for distribution of encrypted content, where the decryption is to be allowed only during a specified time period.
A computer enabled method to generate a key for a cryptographic process, from a variable input, the method comprising the acts of:
An apparatus to generate a key for a cryptographic process, from a variable input, comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols: transmitting and receiving…
Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords: generation of secret information…
Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy: involving…
Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication…
About 3 years 7 months of term left · ends 21 May 2030 (estimated)
This disclosure relates to data security and cryptography and key generation.
In the field of computer software and data security (which are typically cryptography related), it is often necessary to condition cryptographic key access to the result of an evaluation function. Known methods to solve this problem are based on secure conditional tests, often using hash functions.
For open computing platforms (such as personal computers) the problem is more difficult. In this case, a known solution is called branch protection. The idea is to modify the program execution flow to complicate it such that it is hard for an attacker to understand when a test is conducted, how many tests are applied, what kind of tests are done, where the tests are processed, and what is the right configuration to force the acceptation of the test. These techniques of modifying the execution flow of a program and thereby protecting the tests are part of the field of code obfuscation and code enforcement, but have the drawback of requiring many patches (at different locations) to redirect/modify the execution path.
FIG. 1 shows the present method.
FIG. 2 shows detail of an example of the present method.
FIG. 3 shows an apparatus to carry out the present method.
Assume a cryptographic key has been generated to decrypt previously encrypted data such as audio or video content (the decryption being of internal or external content to a system), or the data being a result obtained previously in the same application or a previous one, or to digitally sign a document or data or to authenticate a message. Cryptographic keys are well known for all these applications. Also, suppose this key is such that it only is to be used during a given time period.
The prior method of protecting such a key involves checking if the current time is correct as regards key access, then unpacking the key if the time is correct and finally using the key. In accordance with the invention, this is replaced by a set of solutions that proceed on evaluation functions (and that also may be protected using conventional code obfuscation techniques) for generating the correct key only if the input variable value (such as a time period) is correct, or a “bad” key otherwise. The current variable value such as time thereby is used in a function that generates the key. Each call to this key generation function produces a result key, but the validity of this result key depends on the current variable value. If for example the current range of that variable such as a time period is that during which access to the key is authorized, the generated key is the correct one, otherwise a “bad” or “fake” key is generated which will not be useful.
The present method is applicable to variable values other then time, such as incoming data including a user identification number, or other data varying over time. In one embodiment the key generated from the variable function may be used as a pre-key which in turn is decrypted using a second key, where the pre-key is a function of time. To express this logically, pre-key=f (time), then Decrypt (pre-key, sensitive key)=real key.