Methods, systems and computer program products are provided which allow for generation and authentication of rsa encrypted values by utilizing a combination of entity specific information such as biometric information and by incorporating information about the secret seeds into the cryptographic values p and q utilized to encrypt the information. Thus, authentication of an encrypted message may be achieved without requiring storage of the secret seed values utilized to generate the cryptographic values. Furthermore the present invention assures that users with different entity specific information utilize different p and q values.

Patent
   6928163
Priority
Jul 20 1999
Filed
Jul 20 1999
Issued
Aug 09 2005
Expiry
Jul 20 2019
Assg.orig
Entity
Large
8
14
all paid
17. A method of authenticating an rsa cryptographic value comprising the steps of:
recovering two candidate prime values utilizing a rsa public modulus (N) and a private signature exponent (d);
establishing a first of two prime values as a first candidate cryptographic value (p′) and the second of the two prime values as a second candidate cryptographic value (q′);
recovering first and second candidate seed values Wp′ and Wq′ from the first and second candidate cryptographic values p′ and q′ and from the third publicly known seed value IV;
generating first and second rsa cryptographic values p″ and q″ utilizing Wp′ and Wq′ and IV; and
comparing p′ and p″ and q′ and q″ to authenticate the rsa cryptographic values.
24. A system for authenticating a message, comprising:
means for recovering two candidate prime values utilizing a rsa public modulus (n) and a private signature exponent (d) of the encrypted message;
means for establishing a first of two prime values as a first candidate cryptographic value (p′) and the second of the two prime values as a second candidate cryptographic value (q′);
means for recovering first and second candidate seed values Wp′ and Wq′ from the first and second candidate cryptographic values p′ and q′ and from the third publicly known seed value IV;
means for generating first and second rsa cryptographic values p″ and q″ utilizing Wp′ and Wq′ and IV; and
means for comparing p′ and p″ and q′ and q″ to authenticate the message.
27. A computer program product for authenticating an rsa cryptographic value, comprising:
a computer readable storage medium having computer readable program code embodied in said medium, said computer readable program code comprising:
computer readable code which recovers two candidate prime values utilizing a rsa public modulus (n) and a private signature exponent (d) of the encrypted message;
computer readable code which establishes a first of the two prime values as a first candidate cryptographic value (p′) and the second of the two prime values as a second candidate cryptographic value (q′);
computer readable code which recovers first and second candidate seed values Wp′ and Wq′ from the first and second candidate cryptographic values p′ and q′ and from the third publicly known seed value IV;
computer readable code which generates first and second rsa cryptographic values p″ and q″ utilizing Wp′ and Wq′ and IV; and
computer readable code which compares p′ and p″ and q′ and q″ to authenticate the message.
1. A method of generating rsa cryptographic values, the method comprising the steps of:
obtaining entity specific information (B) about a user;
obtaining a first secret seed value (Wp) and a second secret seed value (Wq);
obtaining a third, publicly known, randomization value (IV) having a first portion (IVp) and a second portion (IVq);
dividing a potential range of rsa encryption values into a first interval and a second interval;
generating a first initial value (XXp) based on the first secret seed value (Wp), the second secret seed value (Wq) and the first portion of the third randomization value (IVp);
mapping the first initial value to an entity specific segment of the first interval utilizing the obtained entity specific information (B) to provide a mapped first initial value (Xp);
selecting a first user dependent rsa cryptographic value (p) from the entity specific segment of the first interval utilizing the mapped first initial value as a starting point for a search for the first user dependent rsa cryptographic value;
generating a second initial value (XXq) based on the first user dependent rsa cryptographic value (p), the second secret seed value (Wq) and the first portion of the third randomization value (IVq);
mapping the second initial value to an entity specific segment of the second interval utilizing the obtained entity specific information to provide a mapped second initial value (Xq);
selecting a second user dependent rsa cryptographic value (q) from the entity specific segment of the second interval utilizing the mapped second initial value as a starting point for a search for the second user dependent rsa cryptographic value; and
generating an rsa cryptographic key value for use in encrypting data utilizing the first and second user dependent rsa cryptographic values p and q.
22. A system for generating an rsa cryptographic, utilizing entity specific information (B) about a user, a first secret seed value (Wp) and a second secret seed value (Wq), and a third, publicly known, randomization value (IV) having a first portion (IVp) and a second portion (IVq), comprising:
means for dividing a potential range of rsa encryption values into a first interval and a second interval;
means for generating a first initial value (XXp) based on the first secret seed value (Wp), the second secret seed value (Wq) and the first portion of the third randomization value (IVp);
means for mapping the first initial value to an entity specific segment of the first interval utilizing the obtained entity specific information (B) to provide a mapped first initial value (Xp);
means for selecting a first user dependent rsa cryptographic value (p) from the entity specific segment of the first interval utilizing the mapped first initial value as a starting point for a search for the first user dependent rsa cryptographic value;
means for generating a second initial value (XXq) based on the first user dependent rsa cryptographic value (p), the second secret seed value (Wq) and the first portion of the third randomization value (IVq);
means for mapping the second initial value to an entity specific segment of the second interval utilizing the obtained entity specific information to provide a mapped second initial value (Xq);
means for selecting a second user dependent rsa cryptographic value (q) from the entity specific segment of the second interval utilizing the mapped second initial value as a starting point for a search for the second user dependent rsa cryptographic value; and
means for generating an rsa cryptographic key value for use in encrypting data utilizing the first and second user dependent rsa cryptographic values p and q.
25. A computer program product for generating an rsa cryptographic value, utilizing entity specific information (B) about a user, a first secret seed value (Wp) and a second secret seed value (Wq), and a third, publicly known, randomization value (IV) having a first portion (IVp) and a second portion (IVq), comprising:
a computer readable storage medium having computer readable program code embodied in said medium, said computer readable program code comprising:
computer readable code which divides a potential range of rsa encryption values into a first interval and a second interval;
computer readable code which generates a first initial value (XXp) based on the first secret seed value (Wp), the second secret seed value (Wq) and the first portion of the third randomization value (IVp);
computer readable code which maps the first initial value to an entity specific segment of the first interval utilizing the obtained entity specific information (B) to provide a mapped first initial value (Xp);
computer readable code which selects a first user dependent rsa cryptographic value (p) from the entity specific segment of the first interval utilizing the mapped first initial value as a starting point for a search for the first user dependent rsa cryptographic value;
computer readable code which generates a second initial value (XXq) based on the first user dependent rsa cryptographic value (p), the second secret seed value (Wq) and the first portion of the third randomization value (IVq);
computer readable code which maps the second initial value to an entity specific segment of the second interval utilizing the obtained entity specific information to provide a mapped second initial value (Xq); and
computer readable code which selects a second user dependent rsa cryptographic value (q) from the entity specific segment of the second interval utilizing the mapped second initial value as a starting point for a search for the second user dependent rsa cryptographic value.
2. A method according to claim 1, further comprising the step of generating auxiliary prime divisors corresponding to the first user dependent rsa cryptographic value (p) and the second user dependent rsa cryptographic value (q).
3. A method according to claim 2, wherein the auxiliary prime divisors are generated based upon the first secret seed value (Wp), the second secret seed value (Wq) and the third randomization value (IV).
4. A method according to claim 3, wherein p0 is a publicly known prime number whose length is at least n bits and g is a public generator, and wherein the step of generating auxiliary prime divisors comprises the steps of:
concatenating the first secret seed value (Wp), the second secret seed value (Wq) and the third randomization value (IV) so as to provide an exponent value (X);
determining an initial random value by determining Y=gX(modp0);
selecting initial prime search values from the initial random value;
setting the most significant bit of the initial prime search values to “1” to provide final prime search values; and
selecting as the prime divisors the smallest prime value greater than or equal to the final prime search values.
5. A method according to claim 4, further comprising the steps of:
selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if the length of at least one of the prime divisors is greater than the length of the final prime search values; and
re-generating the prime divisors if the length of at least one of the prime divisors is greater than the length of the final prime search values.
6. A method according to claim 4, wherein the initial prime search values have a first length if a public encryption exponent (e) has an odd value and a second length of the public encryption exponent (e) has an even value.
7. A method according to claim 5, wherein the first length is 120 bits and the second length is 118 bits.
8. A method according to claim 1, wherein the entity specific segments comprise the segments [A+(B(C−A))/2b, A+((B+1)(C−A))/2b] wherein A and C are the endpoints of the respective intervals and the entity specific information comprises b bits.
9. A method according to claim 8, wherein the rsa cryptographic values comprise n bits and wherein the first interval comprises rsa cryptographic values from the set of [√{square root over (2)}(2n−1),2n−+2n−3/2] and the second interval comprises rsa cryptographic values from the set of [2n−1+2n−3/2, 2n].
10. A method according to claim 9, wherein the binary size of the rsa cryptographic values are 2n, a size m is n−b−2 and wherein the step of mapping the first initial value comprises the steps of:
linearly mapping the first initial value to a entity specific segment of the first interval utilizing the obtained entity specific information (B) utilizing the linear mapping function G 1 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 2 n - 1 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 ; and
selecting as the mapped first initial value (Xp) the integer value which is not greater than the first initial value (XXp)mapped utilizing the mapping function G1,U; and
wherein the step of mapping the second initial value comprises the step of linearly mapping the second initial value to a entity specific segment of the second interval utilizing the obtained entity specific information (B) utilizing the linear mapping function; and
selecting as the mapped second initial value (Xq) the integer value which is not greater than the second initial value (XXq)mapped utilizing the mapping function G2,U.
11. A method according to claim 1, wherein the entity specific information is biometric information.
12. A method according to claim 1, wherein the entity specific information is a globally unique user identification.
13. A method according to claim 1, further comprising the steps of:
determining if a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval;
selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval;
determining if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval;
selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval; and
restarting the cryptographic value generation utilizing the first and second secret seed values and third randomization value if either a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval or if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval.
14. A method according to claim 1 further comprising the steps of: determining if 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value;
selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value;
determining if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value;
selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value; and
restarting the cryptographic generation utilizing the first and second secret seed values and third randomization value if either 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value or if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value.
15. A method according to claim 1, wherein the step of generating a first initial value comprises the steps of:
mixing a concatenation of Wq and IVq utilizing a publicly known mixing function;
concatenating Wp and IVp; and
EXCLUSIVE-ORing the mixed concatenation of Wq and IVq and the concatenation Wp and IVp to provide the first initial value (XXp); and
wherein the step of generating a second initial value comprises the steps of:
EXCLUSIVE ORing p and IVp;
mixing the EXCLUSIVE OR of p and IVp utilizing the publicly known mixing function;
concatenating Wq and IVq; and
EXCLUSIVE-ORing the mixed EXCLUSIVE OR of p and IVp and the concatenation of Wq and IVq to provide the second initial value (XXq).
16. A method according to claim 1, further comprising the step of authenticating generated candidate rsa cryptographic values.
18. A method according to claim 17, further comprising the step of determining that the rsa cryptographic values arc not authentic if p′ and q′ are values outside the user defined segments of the first and second intervals.
19. A method according to claim 17, wherein the first of the two prime numbers is a smaller of the two prime numbers.
20. A method according to claim 17, wherein the step of recovering first and second candidate seed values Wp′ and Wq′ from the first and second candidate cryptographic values p′ and q′ and from the third publicly known seed value IV comprises the steps of:
inverse mapping the second candidate value q′ to provide a first initial value Sq;
EXCLUSIVE ORing the first candidate cryptographic value p′ and IVp;
mixing the EXCLUSIVE OR of the first candidate cryptographic value p′ and IVp with the publicly known mixing function;
EXCLUSIVE ORing the mixed EXCLUSIVE OR of the first candidate cryptographic value p′ and IVp with IVq to provide a first known value (Nq) having a length (j);
determining if a value corresponding to the j least significant bits of Sq is less than the first known value Nq;
EXCLUSIVE ORing the n−j most significant bits of the mixed concatenation of the first candidate cryptographic value p′ and IVp with the n−j most significant bits of Sq if the value corresponding to the j least significant bits of the first subsequent value is not less than the first known value Nq, to provide the second candidate seed value;
EXCLUSIVE-ORing the n−j most significant bits of the mixed concatenation of the first candidate cryptographic value p′ and IVp with 1 subtracted from the value corresponding to the n−j most significant bits of Sq if the value corresponding to the j least significant bits of the first subsequent value is less than the first known value Nq, to provide the second candidate seed value;
inverse mapping the first candidate value p′ to provide a second initial value Sp;
concatenating the second candidate seed value and IVq;
mixing the concatenation of the second candidate seed value and IVq with the publicly known mixing function;
EXCLUSIVE ORing the mixed concatenation of the second candidate seed value and IVq with IVp to provide a second known value Np having a length (j);
determining if a value corresponding to the j least significant bits of Sp is less than the second known value Np;
EXCLUSIVE ORing the n−j most significant bits of the mixed concatentation of the second candidate seed value and IVq with the n−j most significant bits of Sp if value corresponding to the j least significant bits of the second subsequent value is not less than the second known value Np, to provide the first candidate seed value;
EXCLUSIVE ORing the n−j most significant bits of the mixed concatenation of the second candidate seed value and IVq with 1 subtracted from the value corresponding to the n−j most significant bits of Sp if the value corresponding to the j least significant bits of the second subsequent value is less than the second known value Np, to provide the first candidate seed value.
21. A method according to claim 20, wherein j is 256 bits.
23. A system according to claim 22, further comprising means for authenticating generated candidate rsa cryptographic values.
26. A computer program product according to claim 25, further comprising computer readable code which authenticates generated candidate rsa cryptographic values.
28. A system according to claim 22, further comprising means for generating auxiliary prime divisors corresponding to the first user dependent rsa cryptographic value (p) and the second user dependent rsa cryptographic value (q).
29. A system according to claim 28, wherein the auxiliary prime divisors are generated based upon the first secret seed value (Wp), the second secret seed value (Wq) and the third randomization value (IV).
30. A method according to claim 29, wherein p0 is a publicly known prime number whose length is at least n bits and g is a public generator, and wherein the means for generating auxiliary prime divisors comprises:
means for concatenating the first secret seed value (Wp), the second secret seed value (Wq) and the third randomization value (IV) so as to provide an exponent value (X);
means for determining an initial random value by determining Y=gX(modp0);
means for selecting initial prime search values from the initial random value;
means for setting the most significant bit of the initial prime search values to “1” to provide final prime search values; and
means for selecting as the prime divisors the smallest prime value greater than or equal to the final prime search values.
31. A system according to claim 30, further comprising:
means for selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if the length of at least one of the prime divisors is greater than the length of the final prime search values; and
means for re-generating the prime divisors if the length of at least one of the prime divisors is greater than the length of the final prime search values.
32. A system according to claim 30, wherein the initial prime search values have a first length if a public encryption exponent (e) has an odd value and a second length of the public encryption exponent (e) has an even value.
33. A system according to claim 31, wherein the first length is 120 bits and the second length is 118 bits.
34. A system according to claim 22, wherein the entity specific segments comprise the segments [A+(B(C−A))/2b,A+((B+1)(C−A))/2b] wherein A and C are the endpoints of the respective intervals and the entity specific information comprises b bits.
35. A method according to claim 34, wherein the rsa cryptographic values comprise n bits and wherein the first interval comprises rsa cryptographic values from the set of [√{square root over (2)}(2n−1),2n−+2n−3/2] and the second interval comprises rsa cryptographic values from the set of [2n−1+2n−3/2, 2n].
36. A system according to claim 35, wherein the binary size of the rsa cryptographic values are 2n, a size m is n−b−2 and wherein the means for mapping the first initial value comprises:
means for linearly mapping the first initial value to a entity specific segment of the first interval utilizing the obtained entity specific information (B) utilizing the linear mapping function G 1 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 2 n - 1 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 ; and
means for selecting as the mapped first initial value (Xp) the integer value which is not greater than the first initial value (XXp)mapped utilizing the mapping function G1,U; and
wherein the means for mapping the second initial value comprises means for linearly mapping the second initial value to a entity specific segment of the second interval utilizing the obtained entity specific information (B) utilizing the linear mapping function G 2 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 n - 1 + 2 n - 3 / 2 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 ; and
means for selecting as the mapped second initial value (Xq) the integer value which is not greater than the second initial value (XXq)mapped utilizing the mapping function G2,U.
37. A system according to claim 22, further comprising:
means for determining if a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval;
means for selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval;
means for determining if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval;
means for selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval; and
means for restarting the cryptographic value generation utilizing the first and second secret seed values and third randomization value if either a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval or if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval.
38. A system according to claim 22 further comprising:
means for determining if 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value;
means for selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value;
means for determining if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value;
means for selecting at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value; and
means for restarting the cryptographic generation utilizing the first and second secret seed values and third randomization value if either 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value or if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value.
39. A system according to claim 22, wherein the means for generating a first initial value comprises:
means for mixing a concatenation of Wq and IVq utilizing a publicly known mixing function;
means for concatenating Wp and IVp; and
means for EXCLUSIVE-ORing the mixed concatenation of Wq and IVq and the concatenation Wp and IVp to provide the first initial value (XXp); and
wherein the means for generating a second initial value comprises:
means for EXCLUSIVE ORing p and IVp;
means for mixing the EXCLUSIVE OR of p and IVp utilizing the publicly known mixing function;
means for concatenating Wq and IVq; and
means for EXCLUSIVE-ORing the mixed EXCLUSIVE OR of p and IVp and the concatenation of Wq and IVq to provide the second initial value (XXq).
40. A system according to claim 24, further comprising means for determining that the rsa cryptographic values are not authentic if p′ and q′ are values outside the user defined segments of the first and second intervals.
41. A system according to claim 24, wherein the first of the two prime numbers is a smaller of the two prime numbers.
42. A system according to claim 24 wherein the means for recovering first and second candidate seed values Wp′ and Wq′ from the first and second candidate cryptographic values p′ and q′ and from the third publicly known seed value IV comprises:
means for inverse mapping the second candidate value q′ to provide a first initial value Sq;
means for EXCLUSIVE ORing the first candidate cryptographic value p′ and IVp;
means for mixing the EXCLUSIVE OR of the first candidate cryptographic value p′ and IVp with the publicly known mixing function;
means for EXCLUSIVE ORing the mixed EXCLUSIVE OR of the first candidate cryptographic value p′ and IVp with IVq to provide a first known value (Nq) having a length (j);
means for determining if a value corresponding to the j least significant bits of Sq is less than the first known value Nq;
means for EXCLUSIVE ORing the n−j most significant bits of the mixed concatenation of the first candidate cryptographic value p′ and IVp with the n−j most significant bits of Sq if the value corresponding to the j least significant bits of the first subsequent value is not less than the first known value Nq, to provide the second candidate seed value;
means for EXCLUSIVE ORing the n−j most significant bits of the mixed concatenation of the first candidate cryptographic value p′ and IVp with 1 subtracted from the value corresponding to the n−j most significant bits of Sq if the value corresponding to the j least significant bits of the first subsequent value is less than the first known value Nq, to provide the second candidate seed value;
means for inverse mapping the first candidate value p′ to provide a second initial value Sp;
means for concatenating the second candidate seed value and IVq;
means for mixing the concatenation of the second candidate seed value and IVq with the publicly known mixing function;
means for EXCLUSIVE ORing the mixed concatenation of the second candidate seed value and IVq with IVp to provide a second known value Np having a length (j);
means for determining if a value corresponding to the j least significant bits of Sp is less than the second known value Np;
means for EXCLUSIVE ORing the n−j most significant bits of the mixed concatentation of the second candidate seed value and IVq with the n−j most significant bits of Sp if value corresponding to the j least significant bits of the second subsequent value is not less than the second known value Np, to provide the first candidate seed value; and
means for EXCLUSIVE ORing the n−j most significant bits of the mixed concatenation of the second candidate seed value and IVq with 1 subtracted from the value corresponding to the n−j most significant bits of Sp if the value corresponding to the j least significant bits of the second subsequent value is less than the second known value Np, to provide the first candidate seed value.
43. A computer program product according to claim 25, further comprising computer program code which generates auxiliary prime divisors corresponding to the first user dependent rsa cryptographic value (p) and the second user dependent rsa cryptographic value (q).
44. A computer program product according to claim 43, wherein the auxiliary prime divisors are generated based upon the first secret seed value (Wp), the second secret seed value (Wq) and the third randomization value (IV).
45. (previously presented)A computer program product according to claim 44, wherein p0 is a publicly known prime number whose length is at least n bits and g is a public generator, and wherein the computer program code which generates auxiliary prime divisors comprises:
computer program code which concatenates the first secret seed value (Wp), the second secret seed value (Wq) and the third randomization value (IV) so as to provide an exponent value (X);
computer program code which determines an initial random value by determining Y=gX(modp0);
computer program code which selects initial prime search values from the initial random value;
computer program code which sets the most significant bit of the initial prime search values to “1” to provide final prime search values; and
computer program code which selects as the prime divisors the smallest prime value greater than or equal to the final prime search values.
46. A computer program product according to claim 45, further comprising:
computer program code which selects at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if the length of at least one of the prime divisors is greater than the length of the final prime search values; and
computer program code which re-generates the prime divisors if the length of at least one of the prime divisors is greater than the length of the final prime search values.
47. A computer program product according to claim 45, wherein the initial prime search values have a first length if a public encryption exponent (e) has an odd value and a second length of the public encryption exponent (e) has an even value.
48. A computer program product according to claim 46, wherein the first length is 120 bits and the second length is 118 bits.
49. A computer program product according to claim 25, wherein the entity specific segments comprise the segments [A+(B(C−A))/2b, A+((B+1)(C−A))/2b] wherein A and C are the endpoints of the respective intervals and the entity specific information comprises b bits.
50. A computer program product according to claim 49, wherein the rsa cryptographic values comprise n bits and wherein the first interval comprises rsa cryptographic values from the set [√{square root over (2)}(2n−1),2n−1+2n−3/2] and the second interval comprises rsa cryptographic values from the set of [2n−1+2n−3/2].
51. A computer program product according to claim 50, wherein the binary size of the rsa cryptographic values are 2n, a size m is n−b−2 and wherein the computer program code which maps the first initial value comprises:
computer program code which linearly maps the first initial value to a entity specific segment of the first interval utilizing the obtained entity specific information (B) utilizing the linear mapping function G 1 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 2 n - 1 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 ; and
computer program code which selects as the mapped first initial value (Xp) the integer value which is not greater than the first initial value (XXp)mapped utilizing the mapping function G1,U; and
wherein the computer program code which maps the second initial value comprises computer program code which linearly maps the second initial value to a entity specific segment of the second interval utilizing the obtained entity specific information (B) utilizing the linear mapping function G 2 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 n - 1 + 2 n - 3 / 2 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 ; and
computer program code which selects as the mapped second initial value (Xq) the integer value which is not greater than the second initial value (XXq)mapped utilizing the mapping function G2,U.
52. A computer program product according to claim 25, further comprising:
computer program code which determines if a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval;
computer program code which selects at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval;
computer program code which determines if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval;
computer program code which selects at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval; and
computer program code which restarts the cryptographic value generation utilizing the first and second secret seed values and third randomization value if either a candidate for p is considered outside the range of rsa cryptographic values in the entity specific segment of the first interval or if a candidate for q is considered outside the range of rsa cryptographic values in the entity specific segment of the second interval.
53. A computer program product according to claim 25 further comprising:
computer program code which determines if 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value;
computer program code which selects at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value;
computer program code which determines if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value;
computer program code which selects at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) and a new third randomization value (IV) if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value; and
computer program code which restarts the cryptographic generation utilizing the first and second secret seed values and third randomization value if either 216−1 candidates for p have been rejected in selecting the first user dependent rsa cryptographic value or if 216−1 candidates for q have been rejected in selecting the second user dependent rsa cryptographic value.
54. A computer program product according to claim 25, wherein the computer program code which generates a first initial value comprises:
computer program code which mixes a concatenation of Wq and IVq utilizing a publicly known mixing function;
computer program code which concatenates Wp and IVp; and
computer program code which EXCLUSIVE-ORs the mixed concatenation of Wq and IVq and the concatenation Wp and IVp to provide the first initial value (XXp); and
wherein the computer program code which generates a second initial value comprises:
computer program code which EXCLUSIVE ORs p and IVp;
computer program code which mixes the EXCLUSIVE OR of p and IVp utilizing the publicly known mixing function;
computer program code which concatenates Wq and IVq; and
computer program code which EXCLUSIVE-ORs the mixed EXCLUSIVE OR of p and IVp and the concatenation of Wq and IVq to provide the second initial value (XXq).
55. A computer program product according to claim 27, further comprising computer program code which determines that the rsa cryptographic values are not authentic if p′ and q′ are values outside the user defined segments of the first and second intervals.
56. A computer program product according to claim 27, wherein the first of the two prime numbers is a smaller of the two prime numbers.
57. A computer program product according to claim 27 wherein the computer program code which recovers first and second candidate seed values Wp′ and Wq′ from the first and second candidate cryptographic values p′ and q′ and from the third publicly known seed value IV comprises:
computer program code which inverse maps the second candidate value q′ to provide a first initial value Sq;
computer program code which EXCLUSIVE ORs the first candidate cryptographic value p′ and IVp;
computer program code which mixes the EXCLUSIVE OR of the first candidate cryptographic value p′ and IVp with the publicly known mixing function;
computer program code which EXCLUSIVE ORs the mixed EXCLUSIVE OR of the first candidate cryptographic value p′ and IVp with IVq to provide a first known value (Nq) having a length (j);
computer program code which determines if a value corresponding to the j least significant bits of Sq is less than the first known value Nq;
computer program code which EXCLUSIVE ORs the n−j most significant bits of the mixed concatenation of the first candidate cryptographic value p′ and IVp with the n−j most significant bits of Sq if the value corresponding to the j least significant bits of the first subsequent value is not less than the first known value Nq, to provide the second candidate seed value;
computer program code which EXCLUSIVE ORs the n−j most significant bits of the mixed concatenation of the first candidate cryptographic value p′ and IVp with 1 subtracted from the value corresponding to the n−j most significant bits of Sq if the value corresponding to the j least significant bits of the first subsequent value is less than the first known value Nq, to provide the second candidate seed value;
computer program code which inverse maps the first candidate value p′ to provide a second initial value Sp;
computer program code which concatenates the second candidate seed value and IVq;
computer program code which mixes the concatenation of the second candidate seed value and IVq with the publicly known mixing function;
computer program code which EXCLUSIVE ORs the mixed concatenation of the second candidate seed value and IVq with IVp to provide a second known value Np having a length (j);
computer program code which determines if a value corresponding to the j least significant bits of Sp is less than the second known value Np;
computer program code which EXCLUSIVE ORs the n−j most significant bits of the mixed concatentation of the second candidate seed value and IVq with the n−j most significant bits of Sp if value corresponding to the j least significant bits of the second subsequent value is not less than the second known value Np, to provide the first candidate seed value; and
computer program code which EXCLUSIVE ORs the n−j most significant bits of the mixed concatenation of the second candidate seed value and IVq with 1 subtracted from the value corresponding to the n−j most significant bits of Sp if the value corresponding to the j least significant bits of the second subsequent value is less than the second known value Np, to provide the first candidate seed value.

The present application is related to commonly assigned U.S. patent application Ser. No. 09/324,418, entitled “METHODS, SYSTEMS AND COMPUTER PROGRAM PRODUCTS FOR GENERATING USER-DEPENDENT CRYPTOGRAPHIC KEYS,” the disclosure of which is incorporated herein by reference as if set forth fully. The present application is also related to commonly assigned U.S. patent application Ser. No. 09/324,308, entitled “METHODS, SYSTEMS AND COMPUTER PROGRAM PRODUCTS FOR GENERATING USER-DEPENDENT RSA KEYS,” the disclosure of which is incorporated herein by reference as if set forth fully.

The present invention relates to cryptography and more particularly to the generation of cryptographic key values for RSA asymmetric cryptosystems.

Asymmetric (or public) key cryptosystems use two different keys that are not feasibly derivable from one another, one for encryption and another for decryption. A person wishing to receive messages, generates a pair of corresponding encryption and decryption keys. The encryption key is made public, while the corresponding decryption key is kept secret. Anyone wishing to communicate with the receiver may encrypt a message using the receiver's public key. Only the receiver may decrypt the message, since only he has the private key. Asymmetric-key cryptosystems may also be used to provide for digital signatures, in which the sender encrypts a signature message using his private key. Because the signature message can only be decrypted with the sender's public key, the recipient can use the sender's public key to confirm that the signature message originated with the sender. One of the best-known asymmetric-key cryptosystems is the RSA, named for its originators Rivest, Shamir and Adleman. One version of RSA is defined by ANSI Standard X9.31-1998.

RSA is widely used in many cryptographic systems. RSA gets its security from the difficulty of factoring large prime numbers. The RSA public and private keys are derived from two randomly selected large prime numbers.

The general way to derive the two RSA keys is as follows. First choose two random large prime numbers p and q. Compute N=p×q, which is referred to as the public modulus. Then randomly choose the public key e such that e and (p−1)×(q−1) are relatively prime. Finally, compute the private key d such that d=e−1mod((p−1)×(q−1)). RSA encryption and decryption formulas are straightforward. To encrypt a message m, compute c=me mod N, where c is the ciphertext. To decrypt c, compute m=cd mod N.

It has been suggested that two users with different moduli might have a common prime factor in their moduli, either by accident or because of a poor design (design flaw) in the system. If N1=p1×q1 and N2=p2×q2, where p1=p2, then it is easy to find p1 or p2 given N1 and N2, i.e., an efficient algorithm exists to find the common factor p1 or p2 given N1 and N2. If such a common prime factor were to exist, and this fact were discovered, then it would also be an easy matter to factor each modulus into its prime factors. This, of course, would allow the private keys to be computed from the corresponding public keys, and hence for the security of the keys to be compromised.

One of the drawbacks of the existing methods for RSA key generation is that six seed values may need to be stored in case an audit will be performed. These seeds will demonstrate that the primes were indeed generated at random and that the user was not trying to choose the primes with some peculiar properties. Such saving of seed values may result in a security exposure as the seed values could be illicitly obtained and used to generate the RSA key values. In commonly assigned United States Patent Application entitled “METHOD, SYSTEM AND APPARATUS FOR GENERATING SELF-VALIDATING PRIME NUMBERS” filed Jul. 10, 1998, Ser. No. 09/114,024, the disclosure of which is incorporated herein by reference, a scheme was developed that incorporated the knowledge of the seeds into the primes themselves. Therefore, the seeds need not be stored in order to pass an audit. However, the generated primes were not necessarily unique and could not be associated with a particular user.

In general, mechanisms for differentiating between users are known. For example, a particular individual can be identified or verified through a user identifier (such as a globally unique name) or biometric data (such as fingerprint, hand geometry, iris pattern, facial features, voice characteristics, handwriting dynamics, earlobe characteristics, etc.).

As is well known to those having skill in the art, biometric information is one or more behavioral and/or physiological characteristics of an individual. Biometric identification and/or verification uses a data processing system to enable automatic identification and/or verification of identity by computer assessment of a biometric characteristic. In biometric verification, biometric information is verified for a known individual. In biometric identification, biometric information for an individual is compared to known biometric information for many individuals in order to identify the individual.

Biometric identification/verification systems, methods and computer program products can measure one or more of the following behavioral and/or physiological characteristics of an individual: fingerprint, hand geometry, iris pattern, facial features, voice characteristics, handwriting dynamics, earlobe characteristics and keystroke dynamics. Other biometric characteristics may be used. Applications using biometric technologies include biometric check cashing machines, payment systems that substitute biometric data for personal identification numbers, access control systems that use biometric data, biometric employee time and attendance recording and biometric passenger control for transportation. Many other applications may utilize biometric information for identification and/or verification. See the publications entitled “Biometrics, Is it a Viable Proposition for Identity Authentication and Access Control”, to Kim, Computers & Security, Vol. 14, 1995, pp. 205-214; “A Robust Speaker Verification Biometric”, to George et al., Proceedings, the IEEE 29th International Carnahan Conference on Security Technology, Oct. 1995, pp. 41-46; “On Enabling Secure Applications Through Off-line Biometric Identification”, to Davida et al., Proceedings of the IEEE Computer Society Symposium on Research in Security and Privacy, 1998, pp. 148-157; and “Biometric Encryption: Information Privacy in a Networked World”, to Brown et al., EDI Forum: The Journal of Electronic Commerce, v. 10, No. 3, 1997, pp. 37-43. However, while biometric identification and user identification may allow for identification of users, these existing uses may not allow for authentication of the source of encryption keys.

In the above cited Davida et al. publication, in Section 5.2, it was proposed that biometrics could be used with or as keys. However, Davida et al. assumes that the biometric information is secret information. Furthermore, Davida et al. may not work for any size key and describes a procedure which may not allow for pre-computing information for generation of a key value. Furthermore, the proposal of Davida et al. may allow two users to generate the same key values and, thus, does not assure that the generated keys are disjoint.

In light of the above discussion, a need exists for improvements in the generation of encryption keys for RSA cryptosystems so as to allow authentication of user's generated values without requiring storage of the secret seed values.

In view of the above discussion, it is an object of the present invention to provide cryptographic keys which may be authenticated.

A further object of the present invention is to provide for the generation of cryptographic keys which may be audited to determine the user who generated the cryptographic keys.

A further object of the present invention is to provide RSA keys which satisfy the requirements of the ANSI Standard X9.31-1998.

Yet another object of the present invention is to provide RSA keys which are disjoint for different users.

These and other objects of the present invention may be provided by methods, systems and computer program products which generate an RSA cryptographic value utilizing user specific information (B) about a user, a first secret seed value (Wp), a second secret seed value (Wq) and a third, publicly known, randomization value (IV) having a first portion (IVp) and a second portion (IVq). A potential range of RSA cryptographic values are divided into a first interval and a second interval and a first initial value (XXp) is generated based on the first secret seed value (Wp), the second secret seed value (Wq) and the first portion of the third randomization value (IVp). The first initial value is mapped to a user specific segment of the first interval utilizing the obtained user specific information (B) to provide a mapped first initial value (Xp). A first user dependent RSA cryptographic value (p) is selected from the user specific segment of the first interval utilizing the mapped first initial value as a starting point for a search for the first user dependent RSA key value. A second initial value (XXq) is generated based on the first user dependent RSA encryption value (p), the second secret seed value (Wq) and the first portion of the third randomization value (IVq). The second initial value is mapped to a user specific segment of the second interval utilizing the user specific information to provide a mapped second initial value (Xq). A second user dependent RSA cryptographic value (q) is then generated from the user specific segment of the second interval utilizing the mapped second initial value as a starting point for a search for the second user dependent RSA cryptographic value.

In a further embodiment of the present invention, auxiliary prime divisors corresponding to the first user dependent RSA key value (p) and the second user dependent RSA key value (q) are also generated based upon the first secret seed value (Wp), the second secret seed value (Wq) and the third randomization value (IV).

In such a case, where p0 is a publicly known prime number whose length is at least n bits (where p and q have a length of n bits) and g is a public generator, the auxiliary prime divisors may be generated by concatenating the first secret seed value (Wp), the second secret seed value (Wq) and the third randomization value (IV) so as to provide an exponent value (X). An initial random value is then generated by determining Y=gx(modp0) so as to provide initial prime search values. The most significant bit of the initial prime search values is set to “1” to provide final prime search values. The auxiliary prime divisors are then selected as the smallest prime value greater than or equal to the final prime search values. Furthermore, a new first secret seed value (Wp), a new second secret seed value (Wq) or a new third randomization value (IV) may be selected if the length of at least one of the prime divisors is greater than the length of the final prime search values. In such a case, the prime divisors are regenerated if the length of at least one of the prime divisors is greater than the length of the final prime search values.

In a still further embodiment, the initial prime search values have a first length if a public encryption exponent (e) has an odd value and a second length if the public encryption exponent (e) has an even value. In particular, the first and second lengths are fixed, and preferably fixed so that the first length is 120 bits and the second length is 118 bits.

In further embodiments of the present invention, the user specific segments comprise the segments [A+(B(C−A))/2b, A+((B+1)(C−A))/2b] wherein A and C are the endpoints of the respective intervals and the user specific information comprises b bits. In particular, where the RSA cryptographic values comprise n bits, the first interval may comprise RSA cryptographic values from the set of [√{square root over (2)}(2n−1),2n−1+2n−3/2] and the second interval may comprise RSA cryptographic values from the set of [2n−1+2n−3/2,2n]. Also, where the binary size of the RSA values are 2n and a size m is n−b−2, then the mapping may be achieved by linearly mapping the first initial value to a user specific segment of the first interval utilizing the obtained user specific information (B) utilizing the linear mapping function G 1 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 2 n - 1 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 .
The mapped first initial value (Xp) is then selected as the largest integer value which is not greater than the first initial value (XXp)mapped utilizing the mapping function G1,U. Similarly, the second initial value may be linearly mapped to a user specific segment of the second interval utilizing the obtained user specific information (B) by utilizing the linear mapping function. G 2 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 n - 1 + 2 n - 3 / 2 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 .
The mapped second initial value (Xq) is the selected as the largest integer value which is not greater than the second initial value (XXq)mapped utilizing the mapping function G2,U.

In a particular embodiment of the present invention, the user specific information is biometric information. The user specific information may also be a globally unique user identification.

In another embodiment of the present invention, if a candidate for p is considered outside the range of RSA cryptographic values in the user specific segment of the first interval then at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) or a new third randomization value (IV) is selected. If a candidate for q is considered outside the range of RSA key values in the user specific segment of the second interval then at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) or a new third randomization value (IV) is also selected. In either case, the value generation is restarted. Similarly, if 216−1 candidates for p have been rejected in selecting the first user dependent RSA cryptographic value or if 216−1 candidates for q have been rejected in selecting the second user dependent RSA cryptographic value, then at least one of a new first secret seed value (Wp), a new second secret seed value (Wq) or a new third randomization value (IV) is selected and value generation restarted.

In one embodiment of the present invention, the first initial value is generated by mixing the concatenation of Wq and IVq utilizing a publicly known mixing function, concatenating Wp and IVp and EXCLUSIVE-ORing the mixed concatenation of Wq and IVq and the concatenation Wp and IVp to provide the first initial value (XXp). The second initial value is generated by EXCLUSIVE ORing p and IVp, mixing the EXCLUSIVE OR of p and IVp utilizing the publicly known mixing function, concatenating Wq and IVq and EXCLUSIVE-ORing the mixed EXCLUSIVE OR of p and IVp and the concatenation Wq and IVq to provide the second initial value (XXq).

Furthermore, the generated RSA cryptographic values p and q may subsequently be authenticated based on the cryptographic values themselves. Such authentication may be accomplished by recovering two candidate prime values utilizing the RSA public modulus (n) and the private signature exponent (d) and establishing a first of the two prime values as a first candidate key value (p′) and the second of the two prime values as a second candidate key value (q′). First and second candidate seed values Wp′ and Wq′ are recovered from the first and second candidate key values p′ and q′ and from the third publicly known seed value IV. First and second RSA key values p″ and q″ are then generated utilizing Wp′ and Wq′ and IV and compared with p′ and q′ to authenticate the cryptographic values. The recovered p′ and q′ may also be determined to not be authentic if p′ and q′ are values outside the user defined segments of the first and second intervals. The first of the two prime numbers is a smaller of the two prime numbers.

In a particular embodiment of the present invention, the first and second candidate seed values Wp′ and Wq′ are recovered from the first and second candidate key values p′ and q′ and from the third publicly known seed value IV by inverse mapping the second candidate value q′ to provide a first initial value Sq. The first candidate key value p′ and IVp are EXCLUSIVE ORed, and the EXCLUSIVE OR of the first candidate key value p′ and IVp mixed with the publicly known mixing function. The mixed EXCLUSIVE OR of the first candidate key value p′ and IVp is EXCLUSIVE ORed with IVq to provide a first known value having a length (j). It is then determined if the value corresponding to the j least significant bits of Sq are less than the first known value. The n−j most significant bits of the mixed concatenation of the first candidate key value p′ and IVp is EXCLUSIVE ORed with the n−j most significant bits of Sq if the value corresponding to the j least significant bits of the Sq is less than the first known value to provide the second candidate seed value or with 1 subtracted from the value corresponding to the n−j most significant bits of Sq if the value corresponding to the j least significant bits of the first subsequent value are not less than the first known value to provide the second candidate seed value. The first candidate value p′ is also inverse mapped to provide a second initial value Sp. The second candidate seed value is concatenated with IVq and mixed with the publicly known mixing function. The mixed concatenation of the second candidate seed value and IVq is EXCLUSIVE ORed with IVp to provide a second known value having a length (j). It is then determined if the value corresponding to the j least significant bits of Sp are less than the second known value and the n−j most significant bits of the mixed concatenation of the second candidate seed value and IVq are EXCLUSIVE ORed with the n−j most significant bits of Sp if the value corresponding to the j least significant bits of Sp are less than the second known value to provide the first candidate seed value and with 1 subtracted from the value corresponding to the n−j most significant bits of Sp if the value corresponding to the j least significant bits of Sp are not less than the second known value to provide the first candidate seed value.

By mapping a user specific range of values onto the potential range of prime values, the present invention can guarantee that different users will select prime values from different ranges. Thus, the range of prime values from which an RSA prime is selected may be used to authenticate and audit the prime after generation. If a prime is not from the user specific range mapped onto the range of potential prime values, then the key value was not from the user corresponding to the user specific information.

As will further be appreciated by those of skill in the art, the present invention may be embodied as methods, apparatus/systems and/or computer program products.

FIG. 1 is diagram of a data processing system that can be used with the present invention;

FIG. 2 is a detailed view of a data processing system that can be used with the present invention;

FIG. 3 is a flowchart illustrating operations for user specific encryption according to an embodiment of the present invention;

FIG. 4 is a flowchart illustrating authentication/auditing of an encrypted message according to one embodiment of the present invention;

FIG. 5 is diagram illustrating the division of the key space and the assignment of user specific subspaces for an RSA encryption technique according to the present invention;

FIG. 6 is a flowchart illustrating operations according to one embodiment of the present invention for generating auxiliary prime values;

FIG. 7 is a flowchart illustrating operations according to one embodiment of the present invention for generating prime values p and q for use in RSA encryption; and

FIG. 8 is a flow chart illustration operations for recovering secret seed values from p and q values for an encoded message.

The present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout.

The present invention can be embodied as systems, methods, or a computer program products for generating a user-dependent RSA cryptographic primes and keys which are unique. Furthermore, the present invention may also provide for verification of encrypted data without requiring a user to store the secret seed values which may expose the seed values to being discovered. As will be appreciated by those of skill in the art, the present invention can take the form of an entirely hardware embodiment, an entirely software (including firmware, resident software, micro-code, etc.) embodiment, or an embodiment containing both software and hardware aspects. Furthermore, the present invention can take the form of a computer program product on a computer-usable or computer-readable storage medium having computer-usable or computer-readable program code means embodied in the medium for use by or in connection with an instruction execution system. In the context of this document, a computer-usable or computer-readable medium can be any means that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.

The computer-usable or computer-readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a nonexhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, and a portable compact disc read-only memory (CD-ROM). Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner if necessary, and then stored in a computer memory.

Referring now to FIG. 1, an exemplary embodiment of a computer system 30 in accordance with the present invention typically includes input devices 32, such as a keyboard or keypad 31, a microphone 42 and/or preferably, a biometric information input device 35. The computer system 30 also preferably includes a display 34 and a memory 36 that communicate with a processor 38. The computer system 30 may further include a speaker 44 and an I/O data port(s) 46 that also communicate with the processor 38. The I/O data ports 46 can be used to transfer information between the computer system 30 and another computer system or a network (e.g., the Internet). FIG. 1 also illustrates that computer system 30 may include a storage device 40 which communicates with memory 36 and processor 38. Such a storage device may be any type of data storage device as described above. These components are included in many conventional computer systems (e.g., desktop, laptop, or handheld computers) and their functionality is generally known to those skilled in the art.

Furthermore, while the present invention is described with respect to the computer system 30, as will be appreciated by those of skill in the art, the present invention may be incorporated into many other devices where RSA cryptographic primes and/or keys are generated and/or authenticated and, thus, may comprise an embedded function in many other devices. Thus, the present invention should not be construed as limited to use in computer systems such as illustrated in FIG. 1 but may be incorporated in any device having sufficient processing capabilities to carry out the operations described below.

FIG. 2 is a more detailed block diagram of the computer system 30 that illustrates one application of the teachings of the present invention. The processor 38 communicates with the memory 36 via an address/data bus 48. The processor 38 can be any commercially available or custom microprocessor or other processing system capable of carrying out the operations of the present invention. The memory 36 is representative of the overall hierarchy of memory devices containing the software and data used to implement the functionality of the computer system 30. The memory 36 can include, but is not limited to, the following types of devices: cache, ROM, PROM, EPROM, EEPROM, flash, SRAM, and DRAM.

As shown in FIG. 2, the memory 36 may hold four major categories of software and data used in the computer system 30: the operating system 52; the application programs 54; the input/output (I/O) device drivers 58; and the data 56. The I/O device drivers 58 typically include software routines accessed through the operating system 52 by the application programs 54 to communicate with devices such as the input devices 32, the display 34, the speaker 44, the microphone 42, the I/O data port(s) 46, and certain memory 36 components. The application programs 54 comprise the programs that implement the various features of the computer system 30 and preferably include at least one application module or object for RSA key generation and/or authentication 60 which carries out the operations of the present invention as described below. Finally, the data 56 represents the static and dynamic data used by the application programs 54, operating system 52, I/O device drivers 58, and any other software program that may reside in the memory 36. As illustrated in FIG. 2, the data 56 preferably includes a secret seed value 70 and biometric or other user specific data 72. However, as will be appreciated by those of skill in the art, the secret seed values need not be maintained in memory. Furthermore, the biometric or user specific data may be publicly known. Additional intermediate data (not shown) may also be stored in memory. Furthermore, while the present invention is described as an application executing on computer system 30, as will be appreciated by those of skill in the art, the present invention may be implemented in any number of manners, including incorporation in operating system 52 or in an I/O device driver 58.

The present invention will now be described with respect to FIGS. 3, 4 and FIGS. 6 through 8. FIGS. 3, 4 and 6 through 8 are flowchart illustrations of embodiments of the present invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These program instructions may be provided to a processor to produce a machine, such that the instructions which execute on the processor create means for implementing the functions specified in the flowchart or block diagram block or blocks. The computer program instructions may be executed by a processor to cause a series of operational steps to be performed by the processor to produce a computer implemented process such that the instructions which execute on the processor provide steps for implementing the functions specified in the flowchart or block diagram block or blocks.

Accordingly, blocks of the block diagrams and/or flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, can be implemented by special purpose hardware-based systems which perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.

The present invention provides for generating and authenticating RSA cryptographic primes and/or keys using user specific information such as users' user identification (userID) data as well as users' biometric data. While userID data and biometric data are fundamentally different, the two data types have characteristics in common which may be exploited in providing user-dependent cryptographic primes and/or keys. For example, some of the differences in userID and biometric data can be identified as follows:

However, the similarities in userID and biometric data which may be utilized to provide user-dependent cryptographic keys can be identified as follows:

One potential advantage to using biometric data as the user specific information is that with biometric data, there is potentially an easy mechanism for the user to prove their identity, especially if the user carries their biometric certificate on a portable token (e.g., smart card). With a userID, the presumed or claimed identity of the user is known, however, the user to whom the key or cryptographic variable belongs will not necessarily have an easy means to prove that they are that user. A user will not always carry sufficient credentials to prove their identity (e.g., birth certificate or passport).

The present invention provides for RSA encryption which may comply with the ANSI standards. The public RSA key N that needs to be generated for RSA encryption may have a binary length of 2n. The prime numbers p and q whose product is N must be within the range √{square root over (2)}(2n−1)<p,q<2n. User-specific information, denoted by B, can be encoded in b bits of data and these data are different from one user to another. When the user-specific data is biometric information, either the “biometric sample” taken in real-time or the pre-computed reference “biometric template” of a user may be utilized. In either case it is assumed that the biometric data is constant. Biometric data need not be secret. It is further preferred that the b bits allows for expressing any fuzziness included in the biometric data, if biometrics are used as the user-specific data.

The ANSI standard requires that the primes p and q satisfy the following properties:

While p1, p2, q1 and q2 are each to be between 100 and 120 bits in length, the present invention sets these values which aids in recovering the seed values from later derived p and q values. In the present example, these values are each exactly 120 bits long if e is odd and exactly 118 bits long when e is even. The reason for choosing the slightly shorter primes when e is even is that in this case the primes p and q are selected from a sequence of numbers that differ from each other by 8p1p2 or 8q1q2, rather than by p1p2 or q1q2 in the case of an odd e. It is necessary to know what the maximum size of the step in the search procedure for p and q and this is one way to accomplish it.

FIG. 3 illustrates an embodiment of the present invention which can guarantee that two different users will generate different cryptographic values and which incorporates information about the secret seed values used in the encryption which allows for authentication of the cryptographic values without resort to stored secret seed values. As seen in FIG. 3, the user specific information, such as biometric information or a user identification, is obtained (block 300). The user-specific data B may be a binary string of length b. Also obtained are secret seed values Wp and Wq and a public randomization value IV (block 302). The secret seed values need not be obtained from a stored location but may be generated at the time of encryption. In the present description, the value of n−b−2 will be denoted as m. Both Wp and Wq are secret values, each has the length of m−256 bits. The IV parameter may be non-secret. It is used for the randomization of the entire prime generation process, so that even the same user starting with the same pair of secret values Wp and Wq will generate different primes when the IV parameter is altered. This IV value is represented as a concatenation of two binary strings, IV=IVp||IVq, where the length of each of IVp and IVq is 32 bytes (256 bits) and the length of IV is therefore 64 bytes.

As is further illustrated in FIG. 3, after obtaining the input parameters for the encryption process, the auxiliary primes p1, p2, q1 and q2 are generated from the secret seed values Wp and Wq and the public randomization value IV (block 304). The potential key space for p and q is then divided into two equal intervals I1 and I2 (block 306). An initial start value is then generated for the search for p from Wp, Wq, IVp, IVq (block 308). This initial start value XXp for p is then mapped into a user specific one of the 2b segments of the first of the intervals I1 utilizing a linear mapping function G1,U (block 310). The user specific one of the 2b segments of I1 into which the initial start value XXp is mapped is based on the user specific information such that the segments corresponding to different user specific information are disjoint. Furthermore, note that each of the 2b segments contain cryptographic values having n bits. The user-dependent cryptographic value for p is then selected utilizing conventional RSA prime search procedures, however, the value for p is selected from the subspace selected by the user specific information utilizing the mapped initial start value to start the search for p (block 312).

After generation of the prime p, the prime q is generated. An initial start value is generated for the search for q from p, Wq, IVp and IVq (block 314). This initial start value XXq for q is then mapped into a user specific one of the 2b segments of the second of the intervals I2 utilizing a linear mapping function G2,U (block 316). The user specific one of the 2b segments of I2 into which the initial start value XXq is mapped is based on the user specific information such that the segments corresponding to different user specific information are disjoint. The user-dependent cryptographic value for q is then selected utilizing conventional RSA prime search procedures, however, the value for q is selected from the subspace selected by the user specific information utilizing the mapped initial start value to start the search for q (block (318).

Operations for authentication of crytpgraphic values generated utilizing the operations of FIG. 3 are illustrated in FIG. 4. As is seen in FIG. 4, the authentication of the encrypted values does not require the secret seed values Wp and Wq as inputs and, therefore, does not require storing of more secret information than is conventionally done in RSA operations. The prime number authentication procedure uses only the RSA private signature exponent d, which has to be stored to perform the RSA signature and/or encryption operations, and the readily-available public information: the user-specific parameter B, the RSA public modulus N and the public verification exponent e. Thus, the present invention provides for the ability to authenticate encrypted information without increasing the exposure to compromise of the encryption process by the storage of additional secret values.

Turning to the operations of FIG. 4, the public exponent e, private exponent d and the public modulus N are obtained (block 400) and p and q are extracted from this information (block 402). The recovery of p and q from this information may be accomplished by conventional techniques known to those of skill in the art. One such technique is described in Section 8.2.2 of A. Menezes, P. C. Van Oorschot, and S. Vanstone, Handbook of Applied Cryptography, CRC Press, 1997. The smaller of the two recovered values is a p value and the larger one is a q value. This assumption must made because of the relative relationship of p and q based on the relationship of the first and second intervals. As will be appreciated by those of skill in the art, this relationship may be reversed or otherwise modified however it must be predefined.

After recovering p and q from the encrypted information, it is determined if p and q are from the segments of the intervals I1 and I2 which correspond to the user specific information B (block 403). If p or q are not from the corresponding user specific segments, then they are not authentic and the authentication process fails (block 410). However, if p and q are from the proper segments, then Wp and Wq are recovered from p and q and IV (block 404). Having recovered Wp and Wq, then the operations of FIG. 3 are performed to regenerate potential primes p′ and q′ (block 406). If p′ and q′ are equal to p and q (block 408) then the encrypted information is authentic and has passed authentication (block 412). If the values are not equal then the authentication process has failed (block 410).

FIGS. 6 through 8 provide further details on specific aspects of the encryption and authentication processes illustrated in FIGS. 3 and 4 and will be described with reference to FIG. 5 which is an illustration of the mapping operations of the present invention to provide user-dependent RSA primes from the interval of potential primes for an n bit prime.

FIG. 6 illustrates in more details the operations of blocks 304 of FIG. 3. As seen in FIG. 6, operations for generating the auxiliary prime values are illustrated although there may be many ways to generate the auxiliary prime factors p1, p2, q1 and q2. The choice of a particular approach is not that critical since these primes will not be used in regeneration of random seeds during the authentication process. The method of generating p1, p2, q1 and q2 should, however, guarantee a reasonable level of secrecy and randomness among the numbers that it produces.

The auxiliary primes may be generated by concatenating Wp, Wq and IV to provide a 2m bit integer X (block 500). As seen in block 502, the 2m bit integer is then used with a publicly known prime number p0 whose length is at least n bits and a public generator g generate Y as Y=gx(modp0). The length of the auxiliary primes k is then determined based on whether e is even or odd (block 504). The length k is set to 120 bits if e is odd (block 506), or 118 bits if e is even (block 508). The 4k least significant bits of Y may then be selected such that Y=( . . . ||Yp1||Yp2||Yq1||Yq2) (block 510). The most significant bit in each of these values is set to “1” (block 512) with the resulting four values being designated Xp1, Xp2, Xq1 and Xq2, respectively. The prime number p1 is the smallest prime greater than or equal to Xp1 (block 514). Values for p2, q1 and q2 are similarly determined from Xp2, Xq1 and Xq2 (block 514). It is then determined if the length of any of p1, p2, q1 or q2 is greater than k (block 516). If so, then the process aborts and starts again with one or more new randomly generated seeds Wp, Wq, IV (block 518).

FIG. 7 illustrates in further detail the operations of blocks 308 through 318 of FIG. 3. The operations of FIG. 7 begins after the potential encryption value space has been divided in the two intervals I1 and I2 as illustrated in FIG. 5. As is seen in FIG. 5, the interval I=[√{square root over (2)}(2n−1),2n] is divided into two intervals of equal lengths:
I1=[√{square root over (2)}(2n−1),2n−+2n−3/2] and I2=[2n−1+2n−3/2,2n].
For every user, the prime p will be selected from the interval I1 and the prime q from the interval I2 utilizing the operations illustrated in FIG. 7.

As is seen in FIG. 7, Wq and IVq are concatenated and the concatenated value mixed (block 600) utilizing a public mixing function. For example, the 1 to 1 mixing function described in Matyas, M., Peyravian, M., Roginsky, A., and Zunic, N., “Reversible data mixing procedure for efficient public-key encryption,” Computers & Security Vol. 17, No. 3, (265-272) 1998, which can be applied to any arbitrary n-bit input may be utilized. Wp and IVp are also concatenated (block 602) and the results XORed with the results of the mixing (block 604) to provide the initial start point XXp in the interval dU illustrated in FIG. 5. Thus, XXp=(Wp||IVp)⊕F(Wq||IVq) where F is the publicly known mixing function. If XXp is a 1 followed by m−1 zeroes, then the process aborts and starts again with the new Wp and Wq values.

XXp is then linearly mapped to a user specific segment of the first interval I1 utilizing a linear mapping function based on the user specific information (block 608). This mapping is accomplished by the interval I1 described above being divided into 2b disjoint intervals equal in length. For user U with the user-specific parameter B, the corresponding interval will be h 1 , U = [ A + B ( C - A ) 2 b , A + ( B + 1 ) ( C - A ) 2 b ] ,
where A and C are the endpoints of interval I1, i.e., A=√{square root over ( )}2(2n−1) and C=2n−1+2n−3/2. The addition “B+1” is the bit addition (mod 2b). The length of h1,U is 2 n - b - 1 ( 1 - 1 2 ) ,
which is approximately equal to 1.17×2m−1.

Thus, a linear function G1,U may be defined that maps the [2m−1,2m) interval dU that contains all integers of binary length m into h1,U. The precise formula for G1,U is as follows: G 1 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 2 n - 1 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 .

The start point Xp for the search for p may then be determined by taking the largest integer smaller than the mapped XXp value (block 608). In other words, └G1,U(XXp)┘ where ┌y┐ and └y┘ are the ceiling and the floor of y, respectively, i.e., ┌4.21┐=5 and └4.2┘=4. A value for p is then generated by evaluating up to 216−1=65,535 candidates for p utilizing the starting point Xp as the start for the search(block 610). If more than 216−1=65,535 candidates were rejected in selecting p (block 614), then the process aborts and starts again with one or more new randomly generated seeds Wp, Wq, IV (blocks 630 and 632). As described below, this limitation on the number of candidates which may be rejected in arriving at p, places bounds on the distance in the segment h1,U that p may be from Xp which facilitates the recover of Wp from p. If a p value was selected, it is then determined if the selected p is within the segment h1,U associated with the user specific information (block 614). If p is not within the segment h1,U, then the process aborts and starts again with one or more new randomly generated seeds Wp, Wq, IV (blocks 630 and 632).

Having established a value for p, the generation of a value for q begins by XORing p with IVp and then utilizing the public mixing function F to mix the result (block 616). The concatenation of Wq and IVq is then XORed with the results of the mixing (block 618) to provide the initial start point XXq in the interval dU illustrated in FIG. 5. Thus, XXq=(Wq||IVq)⊕F(p⊕IVp) where F is the publicly known mixing function. Furthermore, the XOR of two numbers that might be of a different length means that both numbers are right-justified and the XOR is taken of the least significant bits while the most significant bits are taken directly from the longer number. If XXq is a 1 followed by m−1 zeroes, then the process aborts and starts again with the new Wp and Wq values.

XXq is then linearly mapped to a user specific segment of the first interval I2 utilizing a linear mapping function based on the user specific information (block 620). This mapping maybe accomplished by the interval I2 described above being divided into 2b disjoint intervals equal in length. For user U with the user-specific parameter B, the corresponding interval will be h 2 , U = [ A + B ( C - A ) 2 b , A + ( B + 1 ) ( C - A ) 2 b ] ,
where A and C are the endpoints of interval I2, i.e., A=2n−1+2n−3/2 and C=2n. The length of h2,U is the same as that of h1,U.

Thus, a linear function G2,U may be defined that maps the [2m−1,2m) interval dU that contains all integers of binary length m into h2,U. The precise formula for G2,U is as follows: G 2 , U ( x ) = 4 ( 1 - 1 2 ) x + 2 n - 1 + 2 n - 3 / 2 + 4 ( 1 - 1 2 ) ( B - 1 ) 2 m - 1 .
The start point Xq for the search for q may then be determined by taking the largest integer smaller than the mapped XXq value (block 622). In other words, Xq=└G2,U(XXq)┘. A value for q is then selected based utilizing the starting point Xq and evaluating up to 216−1=65,535 candidates for q (block 624). If more than 216−1=65,535 candidates were rejected in selecting q (block 626), then the process aborts and starts again with one or more new randomly generated seeds Wp, Wq, IV (blocks 630 and 632). If less than 65,535, candidates were rejected in selecting q, then it is determined if the selected q is within the segment h2,U associated with the user specific information (block 628). If q is not within the segment h2,U, then the process aborts and starts again with one or more new randomly generated seeds Wp, Wq, IV (blocks 630 and 632). If q is within the segment h2,U, then the process of generating p and q is complete. The above described prime generation operations provides primes which automatically satisfy the condition |p−q|≦2n−100 as required in the ANSI standard through the selection of the intervals I1 and I2.

Thus, the present invention can provide RSA primes which are based on user specific information. These primes may then be further used to generate user-dependent RSA key values. Furthermore, because the intervals dU for users are disjoint, the resulting RSA primes will also be disjoint. By making the prime generation process dependent on user-specific data, such as a userID or biometric data, one has the ability to later prove that a generated prime and/or key belongs to a particular user. In this regard, the present invention can provide a means to “brand” a key or prime so that its rightful user can be determined. This branding feature may ensure that a user can prove that a key or prime is one belonging to, or generated in, their designated space of keys or primes and that a user cannot deny that a key or prime is one belonging to, or generated in, their designated space of keys or primes.

The operations of block 404 of FIG. 4 for the recovery of the seed values Wp and Wq will now be described in further detail with reference to FIG. 8. As is seen in FIG. 8, recovery begins by inverse mapping the q value from the user specific segment to the interval dU (block 700). The next highest integer value from the mapped value is then selected as an initial value Sq (block 702). Thus, Sq may be expressed as Sq=┌y┐, where y=G2,U−1(q). Sq may be represented as Dq′||Eq, where the length of Eq is j (i.e. 256) bits and the length of Dq′ is n−j (i.e. n−256) bits. From the definition of XXq, XXq may be represented as Mq||Nq, where Mq is an unknown (at this stage of the prime recovery) quantity and Nq is a known j (i.e. 256-bit-long) string equal to IVq⊕F(p⊕IVp). Nq is determined by XORing IVq with the mix of p XORed with IVp to provide a value of j bits in length (block 704).

Then, it is determined if the least significant j bits of Sq (i.e. Eq) are greater than or equal to Nq (block 706). If Eq≧Nq then the first n−j bits of Sq are used as Dq (i.e. Dq=Dq′) (block 708). If the least significant j bits of Sq are less than Nq (block 706) then 1 is subtracted from value corresponding to the first n−j bits of Sq and this value used as Dq(i.e. Dq=Dq′−1) (block 710). This value of Dq is the same as the n−j most significant bits of XXq. Wq is then recovered by determining Wq=Dq⊕(the n−j (i.e. 256) most significant bits of F(p⊕IVp)) (block 712).

To establish that the above procedure leads to the correct value of Wq, it is first noted that 0≦XXq−G2,U−1(Xq)<1, therefore XXq=┌y┐, where y=G2,U−1(Xq) Now, 0≦┌G2,U−1(q)┐−┌G2,U−1(Xq)┐<G2,U−1(q)−G2,U−1(Xq)+1= 1 4 ( 1 - 1 2 ) ( q - X q ) + 1 < 1 256 .
Hence 0≦Sq−XXq<2256. This justifies the establishing of Dq as either Dq′ or Dq′−1. This determination is based on the fact that q−Xq<2256 This inequality holds since q is obtained by taking no more than 216−1 steps of size q1q2 or 8q1q2 up from a number that is smaller than Xq+2240 as described above. The steps are shorter than 2240 by our choice of q1 and q2.

Having established a value for Wq, the p value is then inverse mapped from the user specific segment to the interval dU (block 714). The next highest integer value from the mapped value is then selected as an initial value Sp (block 716). Thus, Sp may be expressed as Sp=┌y┐, where y=G1,U−1(p). Sp may be represented as Dp′||Ep, where the length of Ep is j (i.e. 256) bits and the length of Dp′ is n−j (i.e. n−256) bits. From the definition of XXp, XXp may be represented as Mp||Np, where Mp is an unknown (at this stage of the prime recovery) quantity and Np is a known j (i.e. 256-bit-long) string equal to IVp⊕F(Wq||IVq). Thus, after inverse mapping p and taking the ceiling, Np is determined by XORing IVp with the mix of Wq concatenated with IVq to provide a value of j bits in length (block 718).

Then, it is determined if the least significant j bits of Sp (i.e. Ep) are greater than or equal to Np (block 720). If Ep≧Np then the first n−j bits of Sp are used as Dp (i.e. Dp=Dp′) (block 708). If the least significant j bits of Sp are less than Np (block 706) then 1 is subtracted from the first n−j bits of Sp and this value used as Dp (i.e. Dp=Dp′−1) (block 724). This value of Dp is the same as the n−j most significant bits of XXp. Wp is then recovered by determining Wp⊕(the n−j (i.e. 256) most significant bits of F(Wq||IVq)) (block 726).

To establish that the above procedure leads to the correct value of Wp, it is first noted that 0≦XXp−G1,U−1(Xp)<1, therefore XXp=┌y┐, where y=G1,U−1(Xp). Now, 0≦┌G1,U−1(p)┐−┌G1,U−1(Xp)┐<G1,U−1(p)−G1,U−1(Xp)+1= 1 4 ( 1 - 1 2 ) ( p - X p ) + 1 < 1 256 .
Hence 0≦Sp−XXp<2256. This inequality holds since p is obtained by taking no more than 216−1 steps of size p1p2 or 8p1p2 up from a number that is smaller than Xp+2240 as described above. The steps are shorter than 2240 by our choice of p1 and p2. The final determination of Wp may then be directly determined from the definition of XXp.

The present invention has also been described with reference to the use of user specific information. User specific information could be a userID or, biometric information or a combination of the two. In this regard, the present invention provides a means to “brand” a key, prime or other cryptographic value so that its rightful user can be determined. Those skilled in the art will recognize that such branding is not limited to only users, but could be used to brand a key, prime or other cryptographic value with information specific to and associated with an entity where the entity is other than a human user (i.e. entity specific information). For example, the user specific information could be used to brand information with a company identifier (companyID), thus enabling one to show that the branded value belongs to a specific company. Whereas a biometric is associated with a specific user, an identifier could be associated with a user, group, organization, company, etc., and therefore the present invention is not limited to a method of branding based only on user specific information. Thus, as used herein the term user specific information also refers to entity specific information. A human user is just an example of one type of entity.

In the drawings and specification, there have been disclosed typical preferred embodiments of the invention and, although specific terms are employed, they are used in a generic and descriptive sense only and not for purposes of limitation, the scope of the invention being set forth in the following claims.

Matyas, Jr., Stephen Michael, Zunic, Nevenko, Peyravian, Mohammad, Roginsky, Allen Leonid

Patent Priority Assignee Title
7693279, Apr 23 2003 HEWLETT-PACKARD DEVELOPMENT COMPANY L P Security method and apparatus using biometric data
7908641, Feb 04 2003 Infineon Technologies AG Modular exponentiation with randomized exponent
8218760, Feb 27 2007 Thomson Licensing Method and a device for generating compressed RSA moduli
8744074, Feb 19 2009 MAGNOLIA LICENSING LLC Method and device for countering fault attacks
8745405, Feb 17 2010 CIP, LLC Dynamic seed and key generation from biometric indicia
9077537, Nov 13 2008 International Business Machines Corporation Generating secure private keys for use in a public key communications environment
9160532, Feb 17 2010 Ceelox Patents, LLC Dynamic seed and key generation from biometric indicia
9755830, Feb 17 2010 Ceelox Patents, LLC Dynamic seed and key generation from biometric indicia
Patent Priority Assignee Title
4878246, May 02 1988 Pitney Bowes Inc. Method and apparatus for generating encryption/decryption key
4944007, Aug 19 1988 NCR Corporation Public key diversification method
5199070, Dec 18 1990 MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD Method for generating a public key
5319705, Oct 21 1992 IBM Corporation Method and system for multimedia access control enablement
5541994, Sep 07 1994 BIOSCRYPT INC Fingerprint controlled public key cryptographic system
5680460, Sep 07 1994 BIOSCRYPT INC Biometric controlled key generation
5709114, Nov 21 1994 Mas-Hamilton Group Keypad entry electronic combination lock with self-generated combination
6035398, Nov 14 1997 DIGITALPERSONA, INC Cryptographic key generation using biometric data
6065117, Jul 16 1997 International Business Machines Corporation; International Business Machines Corp Systems, methods and computer program products for sharing state information between a stateless server and a stateful client
6215874, Oct 09 1996 Activcard Ireland Limited Random number generator and method for same
6219794, Apr 21 1997 BIOSCRYPT INC Method for secure key management using a biometric
6226383, Apr 17 1996 KINGLITE HOLDINGS INC Cryptographic methods for remote authentication
6307938, Jul 10 1998 IBM Corporation Method, system and apparatus for generating self-validating prime numbers
6687375, Jun 02 1999 International Business Machines Corporation Generating user-dependent keys and random numbers
/////
Executed onAssignorAssigneeConveyanceFrameReelDoc
Jul 20 1999International Business Machines Corporation(assignment on the face of the patent)
Aug 16 1999PEYRAVIAN, MOHAMMADInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0102190683 pdf
Aug 17 1999MATYAS, JR , STEPHEN MICHAELInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0102190683 pdf
Aug 23 1999ROGINSKY, ALLEN LEONIDInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0102190683 pdf
Aug 23 1999ZUNIC, NEVENKOInternational Business Machines CorporationASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS 0102190683 pdf
Date Maintenance Fee Events
May 03 2005ASPN: Payor Number Assigned.
Jan 22 2009M1551: Payment of Maintenance Fee, 4th Year, Large Entity.
Mar 25 2013REM: Maintenance Fee Reminder Mailed.
Jul 30 2013M1552: Payment of Maintenance Fee, 8th Year, Large Entity.
Jul 30 2013M1555: 7.5 yr surcharge - late pmt w/in 6 mo, Large Entity.
Jan 13 2017M1553: Payment of Maintenance Fee, 12th Year, Large Entity.


Date Maintenance Schedule
Aug 09 20084 years fee payment window open
Feb 09 20096 months grace period start (w surcharge)
Aug 09 2009patent expiry (for year 4)
Aug 09 20112 years to revive unintentionally abandoned end. (for year 4)
Aug 09 20128 years fee payment window open
Feb 09 20136 months grace period start (w surcharge)
Aug 09 2013patent expiry (for year 8)
Aug 09 20152 years to revive unintentionally abandoned end. (for year 8)
Aug 09 201612 years fee payment window open
Feb 09 20176 months grace period start (w surcharge)
Aug 09 2017patent expiry (for year 12)
Aug 09 20192 years to revive unintentionally abandoned end. (for year 12)