The specification generally relates to biometrics, cryptography and cybersecurity used to secure financial transactions, financial information, healthcare information, and infrastructure such as satellites, financial exchanges, the Internet, electrical grid, power plants and defense systems. The specification relates to machines, methods and systems that secure and support this infrastructure and execute transactions.
In the following figures, although they may depict various examples of the invention, the invention is not limited to the examples depicted in the figures.
In regard to
In the prior art, companies and inventors have tried to hide and protect cryptography keys, codes and other user credentials. The extensive development of the Internet, wireless connectivity and the development of malware has made mobile phones, personal computers, server computers, and tablet computers such as the IPad vulnerable to cyberattacks based on cybersecurity methods in the prior art. On page 233, the book (Author: Joseph Menn, ISBN-10: 1586487485), Fatal System Error states that the amount of losses due to cybersecurity breaches is about $1 trillion per year!
Practical applications dependent on computer security use cryptography keys, cryptography codes—such as one-time passcodes—and other user credentials to protect the secrecy, authenticity and integrity of these applications. In some applications, cryptography keys and/or cryptography codes and/or user credentials help secure confidential data such as financial information, financial transactions, and infrastructure (e.g. the electrical grid, irrigation systems, power plants, defense systems and other critical infrastructure). Confidentiality, authenticity, integrity, authorization and accounting are needed in a cybersecurity system and rely on cryptography keys, cryptography codes—such as one-time passcodes—and other user credentials to protect them.
In some embodiments, cryptography keys, cryptography codes—such as one-time passcodes—and other user credentials are used to secure transaction information and securely transfer money from one account to another. In some embodiments, cryptography keys, cryptography codes—such as one-time passcodes—and other user credentials are used to help secure the execution of a stock or derivative transaction.
The prior art has attempted to generate (e.g. derive) an invariant from a biometric template or a print, that can be used as a security key or security code. In the prior art, U.S. Pat. No. 5,991,408 describes a method(s) of deriving a clique (graph) from fingerprint minutiae and then using this graph to help create a key. This method(s) was unsuccessful due to the variability of the fingerprint minutiae extracted from biometric prints coming from the same finger.
Other attempts to generate an invariant from a biometric have been unsuccessful. In some of these unsuccessful attempts, they have attempted to build or implement a function or transformation from the biometric template to a structure that is representative of the cryptography key or code. In some cases, this structure is used to create a cryptography key or code. In a mathematical representation, these unsuccessful approaches sometimes generate a key K from a biometric B; in other words, B is converted to K(B), which means the key K is derived from biometric print B or biometric template B. This approach has been unsuccessful. When two distinct biometric templates or prints B1 and B2 are acquired from the same person, usually B1≠B2; the prior art has been unsuccessful at finding a reliable conversion method that satisfies K(B1)=K(B2). Overall, the complexity of biometric variability has made it difficult for this approach in the prior art to successfully and consistently generate an invariant.
Although various embodiments of the invention may have been motivated by various deficiencies with the prior art, which may be discussed or alluded to in one or more places in the specification, the embodiments of the invention do not necessarily address any of these deficiencies. In other words, different embodiments of the invention may address different deficiencies that may be discussed in the specification. Some embodiments may only partially address some deficiencies or just one deficiency that may be discussed in the specification, and some embodiments may not address any of these deficiencies.
Biometric authentication, using fingerprints, multiple fingers, handprints, face prints, retinal scans and voice recognition, may be used as a means of granting access to an individual, for example, to use a device or gain entry to a building, car, computer, airport, website, a bank account, execute a financial transaction, access a military installation, read or obtain confidential information, execute a legal agreement, authenticate a decision, or another entity. Biometric authentication can be used as an alternative to the use of key(s), code(s), user credential(s) or combination or as method of identifying the user. Access may be in any of a number of forms. For example, access may be in a physical form, such as permitting the user to open a auto door, or it may be electronic in nature, such as granting access to a PC, starting an automobile engine, accessing an online database, executing a financial transaction, executing a legal agreement, or executing an action or using a resource on infrastructure such as the electrical grid, a power plant or SIPRnet.
In an embodiment, cryptography keys, cryptography codes—such as one-time passcodes—and other user credentials are used to help secure transactions that are executed on a financial exchange. In an embodiment, the financial exchange is NASDAQ. In an embodiment, the financial exchange is the New York stock exchange. In an embodiment, the financial exchange is the London International Financial Futures and Options Exchange. In an embodiment, the financial exchange is the Chicago Board of Trade. In an embodiment, the financial exchange is the Tokyo Stock Exchange. In an embodiment, the financial exchange is the Hong Kong stock exchange. In an embodiment, the financial exchange is the OTC (over the counter) derivatives market. In an embodiment, a network of computers as shown in
In an embodiment, in order to grant access to an individual or provide user preferences, the device or system should have the fingers or hand print (or other biometric template) stored in a way that makes possible a comparison between a stored template and the individual's finger (e.g., any representation of the fingerprint). In an embodiment, this comparison is represented and computed by one or more transformations.
The biometric prints may be obtained in different ways depending on the type of biometric, the type of sensor and the device (e.g. mobile phone, PC) that contains the sensor or that is connected to the sensor. In an embodiment, in order for the biometric print(s) or template(s) to be stored, the individual either enrolls through the use of hardware that acts as a biometric sensor. In an embodiment, a touch sensitive screen on a mobile phone or an IPad may serve as a biometric sensor. This kind of screen could obtain part of a hand print, multiple fingers or a fingerprint. In an embodiment, the microphone on an IPhone, Android or other phone may serve as a biometric sensor for voice prints. In an embodiment, the camera on a phone may be used as a biometric sensor for a face print or ear print. In an embodiment a specialized sensor may be integrated into the device. In an embodiment, this may be a fingerprint sensor. In an embodiment, this specialized sensor may be a camera or lens that is an iris sensor.
In some embodiments, using a biometric sensor, an individual may place his/her body part near the sensor, or near the hardware that serves as a biometric sensor. After the image is obtained, in some embodiments, a features extraction algorithm is used to locate features on the image or biometric print. After the extraction is finished, the features from one biometric print are matched with features from one or more biometric prints that were obtained during enrollment—also called setup. If the features match well, then the user is allowed access. In an embodiment, the quality of the match is determined by a match score. If the features do not match well, then the user is denied access. This process of allowing or denying access is called authentication. In an embodiment, one or more transformations are generated from the authentication.
During authentication, the frequency with which an enrolled and valid user's biometric print is rejected as a match is known as the False Reject Rate (FRR); the frequency with which an imposter's biometric print is erroneously accepted as a match is known as the False Acceptance Rate (FAR). In an embodiment, during authentication, a useful goal of a feature matching method is to reduce the FRR and also to reduce the FAR.
In this specification, there are method, system and machine embodiments described for protecting biometric data, algorithms, cryptography keys, codes, dynamic identity and user credentials on security devices and security systems. In an embodiment, the device that needs security may be portable or mobile. In some embodiments, the device may be a smart card, a flash drive, a tablet computer (IPad), a mobile phone (IPhone, an Android Phone or blackberry) or a personal computer. In some of these embodiments that are placed on off-the-shelf commercial products, there may be additional hardware or software added to help with security.
In an embodiment, biometric sensors and PIN/Password input devices are on the outside of the mobile security device as shown in
In an embodiment, the device is a mobile phone as shown in
In an embodiment, the secure area 250 is on the same chip that executes an operating system but it is functionally separate. In terms of functionally separate, in an embodiment, there is not any connection or access from the biometric sensor or data input device or secure area to the part of the chip running an operating system. In an embodiment, the secure area 250 is not connected to the network and not connected to the Internet. In an embodiment, the biometric sensor in 302 of
The method of protecting information is designed to be independent of the type of biometrics and the type of sensor. In an embodiment, biometric sensor in 302 of
In an embodiment, biometric sensor in device 202 of
In an embodiment, secure area 250 in
In an embodiment, the authentication or the construction of secure cryptography keys and codes may use one or more of each: “what you know” (Password, PIN, Passphrase, picture or personal information), “what you are” (biometrics), and “what you have” (the mobile security device). In an embodiment, “what you know” may be a birthday, a street address, a place, a home, a name of a person or special place, or other knowledge that is uniquely known by a person.
In an embodiment, dynamic identity codes are generated on a device such as the devices shown in
Although the authentication may sometimes be described using one type of biometric print or template as an example, other items may be used for one of the factors in authentication, such as face prints, iris scans, toe prints, fingerprints, handprints, more than one finger at a time that uses part or all of each finger, voice prints, and ear prints. In an embodiment, a factor used for authentication may be any item that is unique. In an embodiment a factor used for authentication is one that is difficult to fabricate, guess, find by trial and error, and/or compute. In an embodiment, an authentication factor may be a visual pattern as shown in
In an embodiment, the biometric print acquisition may use multiple fingers and the acquisition is connected to a secure area on a chip. In an embodiment, the biometric print acquisition may use face prints and the acquisition is connected to a secure area on a chip. In an embodiment, the biometric print acquisition may use voice prints and the acquisition is connected to a secure area on a chip. In an embodiment, the biometric acquisition may occur on a touch sensitive screen of a mobile phone. In an embodiment, dynamic identity is at least partly derived from the biometric prints.
Each of the above embodiments may be used separately from one another in combination with any of the other embodiments. All of these embodiments may be used together.
Vocabulary
The word administrator broadly refers to a computer or possibly another electronic device, or person that grants a particular user access to its resources or enables a particular event (e.g., a financial transaction, or landing a plane at an airport, and so on).
The identity code, denoted as R, is a sequence of symbols. An example of a identity code with 16 symbols is Pwt4uH9xBL49 Cp5M and a identity code with punctuation and other symbols may also be used. An example with 32 symbols is $8*@LM&sv7D-n3j5!{bi6+x=:R&4Q9AZ% There is at least one unique identity code for each dynamic identity. The identity code is created during enrollment and securely given to the administrator.
The passcode, denoted as P, is a sequence of symbols. An example of an alphanumeric passcode with 8 symbols is Y3dP9xwB and an example with 16 symbols including punctuation and other symbols is (ia@kLe892J%pms+
Each time a user successfully authenticates on a device (e.g.
The dynamic identity, denoted as G, is stored in the user's secure memory and enables the device to quickly create a one-time passcode. G is also stored securely by the administrator so that the administrator can verify a passcode that the user submits.
V is used to represent “something that is known” (in other words, “what is known”) that other people or devices do not know. In some embodiments, V is something that is known” only within the secure area but not known outside the secure area. (See
The symbol B is used to represent “what you are”. It could be biometric information extracted from one or more biometric prints or biometric templates. B may be in the form of a single number, a sequence of numbers or a sequence of bits or another representation of some biometric information.
The symbol h is used to represent a function. In some embodiments, h may be a Boolean function. In an embodiment, h may be a one-way function or one-way method. (One-way methods are described below.)
The symbol T is used to represent a transformation between two biometric templates coming from the same person and similar parts of the body.
In an embodiment, the invariant is something that does not change. In an embodiment, the invariant is at least partially generated (e.g., derived) from the biometric templates and a transformation between the biometric templates (in this specification, the word “derive” can be used in place of “generate” in any place to obtain a more specific embodiment). In an embodiment, a transformation or transformations help perform an authentication of the user.
In an embodiment, computer instructions execute a transformation between two or more biometric templates, whose execution helps generate (e.g. in this specification, the word “derive” can be used in place of generate) an invariant: in an embodiment, one or more of these transformations generating the invariant help authenticate the person. In an embodiment, the invariant is not generated until after a valid authentication of the person.
In an embodiment, a transformation between two or more biometric prints coming from the same person helps generate an invariant. In an embodiment, a transformation—between two or more biometric prints coming from the same person—is derived from the authentication of the biometric prints. In an embodiment, computer instructions execute the authentication of a biometric print and the transformation is derived during this execution of computer instructions. In an embodiment, when a biometric print acquired during authentication is determined invalid the transformation derived from the authentication generates an invalid invariant.
In an embodiment, the biometric prints may be different at more than 100 distinct points. In an embodiment, the biometric prints may be different at more than 1,000 distinct points. In an embodiment, the biometric prints may be different at more than 10,000 distinct points.
In an embodiment, the transformation T may be a transformation between two face prints from the same person and the transformation is used to help generate an invariant.
In an embodiment, a transformation T is executed between two or more patterns that are not derived from biometric templates or biometric images.
The horizontal rules are shown in
In an embodiment, the patterns can be created by computer instructions that may be described as deterministic. In an embodiment, the computer instructions execute a transformation between the patterns that generates an invariant. An invariant is a relationship between the patterns that does not change despite the fact that similar patterns may be different at a number of different points.
In an embodiment, randomness or noise may be used along with the computer instructions to generate a pattern. In an embodiment, two or more patterns having a relationship such that an invariant can be derived (e.g. invariant relationship) may be different at more than 1,000 distinct points. In an embodiment, two or more patterns having an invariant relationship may be different at more than 10,000 distinct points. In an embodiment, two or more patterns having an invariant relationship may contain an image recognizable by a person. In an embodiment, the recognizable image contributes to part of the invariant that is generated.
In an embodiment, a pattern may be stored on a flash drive. In an embodiment, the pattern may be stored on a driver's license card or passport. In an embodiment, the pattern may be encoded with different colors as shown in
In an embodiment, the invariant is generated from two or more patterns and transformation(s) between the patterns. An example of a transformation between patterns is shown in
In an embodiment, the transformation may be a diffeomorphism. Some examples of a diffeomorphism are shown in
In an embodiment, the transformation T is a continuous function. In an embodiment, the transformation T is a discrete function. In an embodiment, T is not a function. In an embodiment, T is a relation between two biometric prints or templates. In an embodiment, T is a relation between two biometric prints or biometric templates but not a function. In an embodiment, the transformation T may be an affine transformation between two templates.
In an embodiment, the transformation T is represented by one or more functions or one or more relations. In an embodiment transformation T between biometric prints or templates uses one or more functions and one or more relations. In an embodiment transformation T between two patterns uses one or more functions and one or more relations.
In an embodiment, the transformation T is represented by at least two or more affine functions. In an embodiment, the transformation T is represented by at least two or more discrete functions. In an embodiment, computer instructions execute at least two or more discrete functions which generate a relationship between two or more patterns: in an embodiment, the invariant is generated at least partly by a relationship among the patterns.
In an embodiment, the transformation T is executed by digital computer program instructions. In an embodiment, computer program instructions that compute the transformation are executed on a computer chip with an ARM architecture, www.arm.com. In an embodiment, computer instructions execute a transformation on an Intel computer chip. In an embodiment, this computer instructions execute a transformation on a mobile phone as shown in
In an embodiment, the matching of biometric templates occurs with affine transformation maps.
A hash function, denoted Φ, is a function that accepts as its input argument an arbitrarily long string of bits (or bytes) and produces a fixed-size output. In other words, a hash function maps a variable length message m to a fixed-sized output, Φ(m). SHA-512 has an output size of 512 bits.
A hash function may be one of the SHA-3 candidates, which are currently being evaluated. A candidate hash function is BLAKE <http://en.wikipedia.org/wiki/BLAKE_(hash_function)>. Another candidate hash function is GrØstl <http://en.wikipedia.org/wiki/Grøstl>. Another candidate hash function is JH <http://en.wikipedia.org/wiki/JH_(hash_function)>. Another candidate hash function is Keccak <http://en.wikipedia.org/wiki/Keccak>. Another candidate hash function is Skein <http://en.wikipedia.org/wiki/Skein_(hash_function)>. Any one of these hash functions may be used in embodiments described in this specification. Alternatively, other hash functions may be used in embodiments.
An ideal hash function is a function Φ whose output is uniformly distributed in the following way: Suppose the output size of Φ is n bits. If the message m is chosen randomly, then for each of the 2n possible outputs z, the probability that Φ(m)=z is 2−n.
One-way hash functions are desirable. A one-way function Φ has the property that given an output value z, it is computationally extremely difficult to find a message m, such that Φ(mz)=z. In other words, a one-way function Φ is a function, that can be easily computed, but that its inverse Φ−1 is extremely difficult to compute. Suppose G denotes a string or sequence of bits. Φk denotes that the one-way function Φ is applied k times to input G. For example, when k=3, then Φk(G) means Φ(Φ(Φ(G))).
Enrollment or setup refers to when one or more users enter “what they are” and “what they know” into “what they have” the device so that they only have access to the device. During enrollment, in the secure module, after enough of “what you are”—for example, satisfactory biometric templates—have been obtained, two or more biometric templates may be encrypted on a chip. In an embodiment, “what you know”, may also be acquired. In an embodiment, a password, PIN or passphrase or a visual or auditory pattern may be used to help create cryptography keys, or codes or user credentials, or encrypt other keys that encrypt the proprietary executable code on the mobile security device.
Elliptic Curve Cryptography
This section describes Elliptic Curve Cryptography (ECC) that in some embodiments may be used as a public key cryptography to securely encrypt and transfer keys, codes, data or transaction information. It may also be used in an embodiment to encrypt one-time passcodes. The Diffie-Hellman assumption holds for elliptic curves of the form y2=x3+ax+b. Find a point Q such that Q=SP for some integer S such that 0<S<n where n is the order of P.
ECC Encryption Steps:
Input: Public key (P, Q) and plaintext message M
ECCA Decryption Steps:
Input: Public key (P, Q), output (R, C) and secret key S
Keys and Codes Resistant to Cyberattacks
Machines and methods are presented for protecting keys and codes using one, two or more factor authentication. If the security device—for example, mobile phone shown in FIG. 18—is captured in the field and subsequently reverse engineered, the purpose here is to hinder an adversary or thief from reading confidential or classified data, building a duplicate system, capturing or duplicating the cryptography keys, capturing or duplicating the codes, capturing or duplicating one-time passcodes and capturing or duplicating any other items that should be kept secret.
In an embodiment, the following steps are executed to enroll a user to gain access to a security system or utilize the system's resources or carry out a transaction. An example of a system's resources or infrastructure is shown in
Step 1. User presents authentication factor(s) one or more times to the device.
Step 2. On the device computer program instructions are executed that determine whether authentication factors are acceptable.
Step 3. If authentication factors are accepted, then computer program instructions store information on the device, which is derived from the authentication factors. The stored information on the device is used during authentication to generate an invariant.
Examples of devices mentioned in steps 1, 2 and 3 are shown in
In an embodiment, the following steps are executed to generate an invariant during authentication.
In an embodiment, biometric information, denoted B is created during enrollment. In an embodiment, “something that is known” V is generated during enrollment to hinder attempts to computer or guess an invariant. In an embodiment, V may generated at least partially from passphrase/password/PIN information, denoted as J, obtained during enrollment. In an embodiment, V may generated at least partially from one or more patterns as shown in
Information J from keypad 404 or keypad 506 in
In an embodiment, hidden information X may have physical barriers surrounding it to hinder reverse engineering from capturing or reading X. In
In an embodiment, to hinder attacks or security breaches, “something that is known” V is generated only after a valid authentication and immediately erased from memory after being used. In an embodiment, the algorithms that generate V use biometric noise from the sensor to increase the entropy in V. In an embodiment, the computer instructions that generate V execute one or more one-way functions. In an embodiment, V may have an entropy of 10,000 bits. In an embodiment, V may have an entropy of greater than 10 million bits. In an embodiment, V may have an entropy greater than (10 to the 50th power) bits i.e. greater than 1050 bits.
As mentioned, in an embodiment, T represents a transformation between two biometric templates or prints (e.g.
In embodiments, a desirable goal is to make B and V mathematically intractable to guess or reconstruct. To hinder these guessing or reconstruction attacks, an invariant w is generated so that the security system uses the B and V information obtained immediately after authentication to derive the correct keys or codes. In this specification, the symbol K will denote key(s) or code(s) or user credential(s) that should remain secret and is (are) not stored on the device. In an embodiment after authentication, K is derived as K=h(V, T) where h is some function. In an embodiment, h may be a one-way function or one-way method. In an embodiment, h may use a one-way method from public/private key cryptography such as elliptic curve cryptography or RSA. In an embodiment, Φ may be a one-way function or one-way method. In an embodiment, Φ may use a one-way method from public/private key cryptography such as elliptic curve cryptography or RSA.
In an embodiment, K may be computed as K=Φ(V*T) where * is concatenation. In an embodiment, K may be computed as K=Φ(T*X) where * is concatenation. In an embodiment, K may be computed as K=h(T, X).
In an embodiment w may be computed as w=Φ(K). In some other embodiments where only a biometric factor is used, w can be computed as w=Φ(Φ(T)) or w=Φ(h(T)). In still other embodiments where only “what you know” is used as a factor, w can be computed as w=(Φ(Φ(V)) or computed as w=Φ(h(V)).
In an embodiment where two or more factors are used, then a numeric conversion function a may be applied to the passphrase, password or PIN. In other words, let J denote the passphrase, password or PIN, then α(J) is a positive integer. In an embodiment, the function α is chosen so that e=α(J) is large enough such that it takes about one second to compute on the Φe on the chip in the device where biometric and cryptographic computations take place. This may help with mathematically intractability when reverse engineering attacks are attempted. In these embodiments, U=Φe(w) is stored on the chip in the mobile device where biometric and cryptographic computations take place.
Let S1 be the transformation map between the biometric template just authenticated and the first template obtained during enrollment; let S2 be the transformation map between the biometric template just authenticated and the second template obtained during enrollment. In an embodiment, these templates are encrypted. On the device, in an embodiment, the transformation difference, S2−S1, is computed. In other embodiments, the transformation difference may be S2∘(S1)−1. Then Z=Φe+1(h(V, S2−S1)) is computed.
Observe that if T=S2−S1, then for embodiments satisfying:
In an embodiment, these computations are executed by computer instructions inside a single chip. In an embodiment, these computations occur in a secure area of the chip that is functionally distinct from the part of the chip that executes an operating system. In an embodiment, this chip may be in a mobile phone as shown in
Sometimes an acquired biometric print is similar to a snowflake since rarely if ever are two biometric prints identical. Consequently, the transformations S1 and S2 resulting from authentication may be different from transformation T which was computed during enrollment of the user on the device. Because of this snowflake effect, S2−S1 will sometimes be different from T.
Observe that if T=S2 for authentication to be valid, the new biometric print B matched with the two biometric templates B1 and B2 obtained during enrollment. S1 is the transformation computed by matching authentication template or print B with template or print B1. S2 is the transformation map computed by matching authentication template B with B2. Since the matches are good, despite the snowflake effect, T is close to S2−S1; otherwise, a valid authentication would not have occurred. (See
In an embodiment, biometric templates (prints) B1 and B2 are stored on the device in an encrypted or obfuscated format. In an embodiment, h(V, S2−S1+Δ) is computed for some values Δ. The computer instructions compute Δ such that Φe+1(h(V, S2−S1+Δ) equals the U that is stored in memory. This indicates to the security system that with high probability h(V, S2−S1+Δ) is the same as K. In an embodiment, this enables a person's identity to create a key, code or user credential K without storing K on the device.
In an embodiment, one biometric template (print) B1 is stored on a device. In these embodiments, during authentication a transformation T is constructed that matches authentication template B with stored template B1. In these embodiments, during enrollment (setup), biometric template (print) B2 was obtained and was used to create transformation S from biometric B1 to biometric B2. Similar to as described above, during enrollment U is derived from transformation S and stored in the memory of the device. In an embodiment, during authentication, the computer program instructions compute Δ such that Φe+1(h(V, T·Δ)) equals the U that is stored in memory of the device. In an embodiment, during authentication, the computer program instructions compute Δ such that (De+1(h(V, T·Δ)) equals the U that is stored in memory of the device where · indicates a composition of transformation and Δ is close to the identity transformation. In an embodiment, during authentication, the computer program instructions search for Δ such that Φe+1(h(V, Δ·T)) equals the U that is stored in memory of the device where · indicates a composition of transformations and Δ is close to the identity transformation on the space of biometric templates (prints) or patterns. In an embodiment, during authentication, the computer program instructions search for Δ such that Φ(h(V, Δ·T)) or Φ(V, Δ·T)) or h(V, Δ·T)) or Φ(h(V, T·Δ)) or h(V, T·Δ)) or Φ(V, T·Δ) equals U.
In these embodiments, the use of only one biometric B1 stored on the device, may help hinder attempts to guess the key, code or user credentials. In these embodiments, biometric B2 is used during enrollment but not stored on the device after enrollment is completed. In an embodiment, this enables a person's identity to create a key, code or user credential K without storing K on the device.
In these embodiments, the identity of the user mathematically brands the device or chip inside the device with the user's identity so that it is difficult to guess or derive the key, code or some confidential user credential. In an embodiment, the confidential user credential could be or contain some biometric or other information that is unique to the person who has access to (owns) the device.
If the one-way function or method of Φ is a 1 to 1 function, the probability of a collision is 0%. For current one-way hash functions that are approved by the NSA or NIST, Φ is close to being 1 to 1. This property is generally considered desirable in a one-way method or hash function. In cryptography, this is sometimes referred to as function Φ has a low probability of having collisions.
In the small chance that there is a collision, for small Δ, for all Δ such that Uv=Φe+1(h(V, S2−S1+Δ)) then each prospective K=h(V, S2−S1+Δ) can be checked to see if it can decrypt the data or open access. This is one method for resolving collisions. In these computation, the value of K and U depend on transformation difference S2−S1. In these computations, the value of K and U depend on “something that is known” V. In this computation, the value of K and U depend on transformation Δ which is close to the identity transformation.
As shown in
PROTECTING IDENTITY WITH DYNAMIC CODES In these embodiments, a person's identity is protected with dynamic codes. A passcode P is determined so that it is dependent on information that is not stored permanently on the device. In an embodiment, this device may be a mobile phone. In an embodiment, this can be accomplished so that it is mathematically intractable to calculate the next one-time passcode P even if the attacker reverse engineers the current dynamic identity G and reverse engineers the proprietary algorithm(s) executing on the security device.
Protecting Identity with Dynamic Codes Enrollment
In an embodiment, there are two separate items that are computed during enrollment and then securely transmitted to the administrator. One item is called an external invariant w. In an embodiment w may be derived as w=Φ(h(V, T)). In an embodiment, w may be computed as w=Φ(Φ(V*T)) where * represents concatenation. In still other embodiments where only a biometric factor is used, w can be computed as w=Φ(Φ(T)) or w=Φ(h(T)). In some embodiments where only “what you know” is used as a factor, w may be computed as w=Φ(Φ(V)) or computed as w=Φ(h(V)).
In embodiments where the external invariant w is transmitted to the administrator, the value U=Φ(w) may be stored on a mobile device which the person possesses. In an embodiment, this device is a mobile phone. In an embodiment where two or more factors are used, then a numeric conversion function a may be applied to the Passphrase, Password or PIN. In other words, let V denote the Passphrase, Password or PIN, then α(V) is a positive integer. In an embodiment, the function α is chosen so that e=α(V) is large enough such that it takes about one second to compute on the Φe on the chip in the mobile security device where biometric and cryptographic computations take place. This may help with mathematically intractability in a reverse engineering situation. In these embodiments, U=Φe(w) is stored on a chip in the mobile device where biometric and cryptographic computations are executed on this chip.
In an embodiment, the first dynamic identity G may be computed on the mobile security device and administrator as G=Φ(R). In other embodiments, the first dynamic identity G may be computed as Φk(w) where k is some positive integer. The second item is the identity code R. There are number of different ways to compute an unpredictable R. We explain how to do this in a broader context of creating a code or key C. C may represent a identity code, a cryptography key,
Generating Keys and Codes with Hash Functions
There are different methods that may be used for hashing iris prints, face prints, collections of fingers, hand prints, fingerprints and other kinds of input such as passphrases, passwords, PINS, visual pictures, names. As an alternative to biometric data, the input to a hashing function can even be another code.
Different types of methods of hashing are appropriate for different sizes of keys and codes, and different types of biometric print information that is passed to the hash function. One method is to take two different biometric prints and apply a hash function Φ to each print. As the method shown here is independent of the particular one-hash function, the symbol Φ denotes a one-way hash function whose output value is m bits. In an embodiment, Φ is the hash function SHA-512 and m=512 bits. In an embodiment, Φ one of the one-hash functions described previously.
Each application of Φ to one or more biometric print(s) or a subsection of a biometric print produces an output value of m bits. With two biometric prints, these bits are concatenated together to create a 2m-bit code, called C. Another method is to use two different sections S1 and S2 of a single acquired biometric prints, and produce a 2m-bit key or code, C, by concatenating Φ(S1) and Φ(S2).
This can be used to create codes larger than 2m bits long. Divide one or more acquired biometric prints into n sections: S1, S2, . . . , Sn. Then concatenate the bits Φ(S1), Φ(S2), . . . , Φ(Sn). This creates a code C that is 2 mn bits in length. For example, if the acquired biometric print is divided into 10 sections and m=1024, then this method would create a code with 10,240 bits. In another embodiment, with 10,240 bits for the code C, then compute C=Φ(S1)⊕Φ(S2) . . . ⊕Φ(Sn) where ⊕ represents the exclusive- or operation.
Depending on the size of the identity code R, the biometric prints obtained during enrollment can be divided into sections. If a m bit identity code R is to be obtained, then in an embodiment, R=Φ(S1)⊕Φ(S2) . . . ⊕Φ(Sn) is useful to compute an unpredictable R. In other embodiments that use two factor authentication, R may be computed as R=Φ(V)⊕Φ(S1)⊕Φ(S2) . . . ⊕Φ(Sn).
Secure Transmission
In an embodiment, R and w are securely transmitted to the administrator. In an embodiment, the Elliptic Curve Cryptography is used to encrypt the identity code R and an external invariant w and securely transmit them to the administrator. In an embodiment, R and w may be given directly to the administrator in the same physical place, such as at a bank, or the identity code may be mailed or electronically transmitted to the administrator if enrollment is accomplished remotely.
User Identity Creating a Code for Authentication
After a valid authentication occurs, Step 0.) the user module sends a request—that includes the user module's user ID and a number m indicating which passcode to submit—to the administrator. In an embodiment, the user module utilizes ECC cryptography to encrypt this request and send to the administrator.
Step 1.) The administrator receives the passcode request and with user_id retrieves the orbit number L(user_id) of the last passcode received from this particular user with user_id. If m>L(user_id), then in one embodiment, the admin sends a request back to the user module for passcode with orbit number n such that n>m. In an embodiment, the admin utilizes ECC cryptography to encrypt this request and send back to the user module.
In an embodiment, if m≦L(user_id), then the administrator terminates the authentication and access request. In an embodiment, error checking is used to make sure m was not changed on its route to the administrator. In an embodiment, the administrator sends an error back to the user module.
Step 2.) The user module receives the request to compute passcode with index number n. These steps are executed in the secure module of the mobile security device.
Step 1.) The dynamic identity G and U are retrieved from a secure non-volatile memory.
Step 2.) Let S1 be the transformation map between the biometric template just authenticated and the first encrypted one retrieved from flash; let S2 be the transformation map between the biometric template just authenticated and the second encrypted one retrieved from flash. On the mobile security device, compute the transformation map difference, S2−S1, and then Z=Φe+1(h(V, S2−S1)).
Step 3.) A range of ZΔ values are tested whereby nearby values close to S2−S1 denoted as S2−S1+Δ are chosen. This means ZΔ=Φe+1(h(V, S2−S1+Δ)) is computed and compared to U in memory. In this computation, the value of ZΔ depends on transformation difference S2−S1. In this computation, the value of ZΔ depends on “something that is known” V. In this computation, the value of ZΔ depends on transformation Δ which is close to the identity transformation.
If U=ZΔ, for this Δ, then the next one-time passcode is computed as P=Φ(h(V, S2−S1+Δ)*G) where * represents concatenation. In other embodiments where w is computed as w=Φ(V*T)) then value ZΔ=Φe+2(V*(S2−S1+Δ)) is computed for each small value of Δ.
Step 4.) The dynamic identity G is changed to a new value. G is set equal to the new value f(G), where there are an infinite number of functions that f could be. The function f will be referred to as the perturbing function. One possible perturbing function f could add Φ(G) to G. Another possible perturbing function f could add 1 to G and permute the order of the symbols in G using some randomly chosen permutation. f could be a function constructed from a dynamical system.
Step 5.) In an embodiment, the one-time passcode P may be submitted directly to the administrator. Or during Internet or wireless transmission, P can be encrypted with ECCA for additional security to hinder a “capture and resubmit” attack.
Passcode Verification By The Administrator The following steps are executed by the administrator:
Step 1.) The administrator receives the passcode P and the user id I from the user.
Step 2.) The user id I is used to retrieve the corresponding dynamic identity G and external invariant w from a database, a hash function Φ is applied to w*G, denoted as Φ(w*G), and Φ(w*G) is compared to P.
Step 3.) During one comparison, if Φ(w*G) equals P, then the passcode submitted by the user is valid, and the dynamic identity is set equal to a new value f(G), where f is one of the perturbing functions discussed above.
Reducing User Error and Hindering Replay Attacks
If a user is reading the one-time passcode from a display, sometimes the user may incorrectly read it or write it down. Or the user may forget to record the one-time password, or type it into a keyboard incorrectly. In other embodiments, the one-time passcode may be transmitted wirelessly, but there is a transmission error. Or the Internet service is malfunctioning.
In any of these cases, the user may repeat authentication, and compute a new one-time passcode. When this happens, an optional feature enables the administrator to accept this new passcode even though the administrator is expecting to receive the next passcode.
The administrator works around user error by executing the following steps: Step 1.) The administrator receives the passcode P and the user id I from the user.
Step 2.) The administrator uses I to retrieve the dynamic identity GI and the corresponding external invariant wI. The administrator computes with a one-way hash function Φ the value Φ(w*GI), and compares it to P.
Step 3.) If Φ(w*GI) does not equal P, a temporary dynamic identity GT is set equal to f(GI), where f is the perturbing function.
In an embodiment, a timestamp can be associated with a one-time passcode. If the current time is later than the associated timestamp, when the passcode is submitted to the administrator, then this one-time passcode has expired. In this case, the passcode is invalid. Consequently, the administrator would deny access for this particular passcode submitted.
Transformations Between Biometric Templates & Prints
In an embodiment, a feature matching method may be used for deriving one or more transformations between biometric prints (templates) during enrollment (setup) and these one or more transformations help generate an invariant based on the biometric prints or templates. In an embodiment, a feature matching method is executed during authentication. In an embodiment, a feature matching method may be used for deriving one or more transformations between biometric prints (templates) during biometric authentication and these one or more transformations help generate an invariant based on the biometric prints or templates. In an embodiment, a transformation difference computed from one or more transformations may help derive an invariant.
In some cases, the feature matching method may not only help improve the average quality of the originally enrolled biometric print images, but may also serve to reduce an individual's FRR during authentication. The feature matching method may use any of a number of techniques to ensure that a good quality image has been acquired by the sensor. In one embodiment, two distinct biometric print images obtained during enrollment can be considered of good quality if their matching score is above a certain threshold. A sufficiently high matching score qualifies these biometric prints as valid enrollment images for the purpose of matching a biometric print sensed at a later time when requesting access. (A description of features is given below.) Two biometric prints obtained during enrollment which do not have a sufficiently high matching score may be discarded. In an embodiment, a biometric print obtained during enrollment with at least a minimum number of features that match corresponding features from a distinct biometric print obtained during enrollment, may be considered of good quality and subsequently stored. In an embodiment, this good quality is based on different transformations being close enough so that an invariant can be generated based on the transformation(s). In an embodiment, the transformation difference between transformations is close to the identity transformation so that an invariant can be generated based on one or more transformations.
In an embodiment, stored biometric print information obtained during enrollment is used for comparison against a biometric print obtained during authentication.
The word “feature” may be used to denote a valley ending or a valley bifurcation. The white rectangle at the bottom and left part of
A feature may also be a cross-foliation of a biometric print. A cross-foliation may represented by a starting pixel point, (x, y, θ)=(120, 58, 90°) with orientation and a finite sequence such as [−1, −1, −1, 1, 1, 1, 1, 1, 1, −1, −1, −1, −1, 1, 1, 1, 1, 1, 1]. The number 120 is the x-coordinate of the first pixel and the number 58 represents the y-coordinate. The last coordinate, 90°, indicates the direction of the cross-foliation. In the standard trigonometry of the unit circle, 90°, points up along the y-axis. Consequently, pixel (120, 58) is labeled with −1, pixel (120, 57) is labeled with −1, pixel (120, 56) is labeled with −1, pixel (120, 55) is labeled with 1, pixel (120, 54) is labeled with 1, and so on. (To avoid confusion, observe that in bitmap coordinate systems, the y-coordinates sometimes decrease as you move up along the y-axis. This is the opposite of what is taught in high school Algebra.) Each −1 indicates that the corresponding pixel is in a biometric print valley and each 1 indicates that the corresponding pixel is on a biometric print ridge. The length of a finite sequence may range from 10 pixels to greater than 200 pixels, depending on parameters such as the resolution of the sensor, the resolution of the pre-processing of enhanced image, speed of the processor, and so on.
In addition, a feature may be a crossover, which is a structure on the biometric print where two valleys cross each other. A feature can also be a loop, which is a valley that curves at least as much as a horseshoe shape. The loop can even be a complete loop and curve as much as a circle. A loop is sometimes near the core of the biometric print. A complex feature is two or more features or simple features composed together. In addition to simple features, complex features can also be matched between two biometric prints.
In an embodiment, a feature can be the location of lines in the hand or the shape of the lines in the hand as shown in
In an embodiment a feature may be a shape in the iris as shown in
In
In regard to notation, the x and y coordinates of a feature p are denoted as p(x) and p(y) and the orientation of a feature is denoted as p(θ). When a subscript is used for the feature, then we use p1(θ). The distance between two features is denoted as D(p1, p2). In an embodiment, there may be a z coordinate and the coordinate of the feature p is denoted as p(z).
In regard to matching collections of features on a print, the goal is to find a transformation that best matches corresponding features between two different biometric prints. A locally affine transformation is a rotation by θ, followed by (function composition) a translation by the vector (a, b). A locally affine transformation from a region of biometric print A to a region of biometric print B is shown in
Consequently, a locally affine transformation T may be represented by the three parameters (a, b, θ) and a region A. An affine transformation may be computed starting with one subset of features {p1, p2, p3, . . . , ps} selected from a biometric print and comparing them to another subset of features {q1, q2, q3, . . . , qs} selected from a distinct biometric print. In an embodiment, s is two, but s may be larger.
Below are some embodiments with s=2. The parameters of the transformation T are computed so that F(p1)=q1 and F(p2)=q2
Solving for T=(a, b, θ). Example 1: p1=(0, 0), p2=(0, 1), q1=(3, 2), q2=(2, 2). θp=arctangent(p2(x)−p1(x), p2(y)−p1(y))=arctangent(0, 1)=90°. θq=arctangent(q2(x)−q1(x), q2(y)−q1(y))=arctangent(0, −1)=180°. θ=θq−θp=90 degrees. In example 1, Rθ(p1)=(0, 0) and Rθ(p2)=(−1, 0). The average translation is: (a, b)=(q1−Rθ(p1)+q2−Rθ(p2))/2. Then (a, b)=0.5*[(q1(x)−Rθ(p1(x)), q1(y)−Rθ(p1(y))+(q2(x)−Rθ(p2(x)), q2(y)−Rθ(p2(y)))]=0.5* [(3, 2)+(3, 2)]=(3, 2).
Example 2: p1=(0, 0), p2=(3, 4), q1=(−1, 4), q2=(−6, 4). θp=arctangent (p2(x)−p1(x), p2(y)−p1(y))=arctangent(3, 4)=53.13°. θq=arctangent (q2(x)−q1(x), q2(y)−q1(y))=arctangent(−5, 0)=180°. θ=θq−θp=(180°*−53.13°)=126.87°. In example 2, Rθ(p1)=(0, 0) and Rθ(p2)=(−5, 0). The average translation is (a, b)=(q1−Rθ(p1)+q2−Rθ(p2))/2=0.5*[(q1(x)−Rθ(p1(x)), q1(y)−Rθ(p1(y))+(q2(x)—Rθ(p2(0, q2(y)−Rθ(p2(y)))]=0.5*[(−1, 4)+(−1, 4)]=(−1, 4).
Example 3: p1=(0, 0), p2=(−3, −2), q1=(1, 2), q2=(3, 5). θp=arctangent (p2(x)−p1(x), p2(y)−p1(y))=arctangent(−3, −2)=213.69°. θq=arctangent (q2(x)−q1(x), q2(y)−q1(y))=arctangent(2, 3)=56.31°. θ=θq−θp=(56.31°−213.69°) 32−157.38*=202.62°. In this example, Rθ(p1)=(0, 0) and Rθ(p2)=(2, 3). The average translation is (a, b)=(q1−Rθ(p1)+q2−Rθ(p2))/2. Thus, (a, b)=0.5*[(q1(x)−Rθ(p (x)), q1(y)−Rθ(p1(y))+(q2(x)−Rθ(p2(x)), q2(y)−Rθ(p2(y)))]=0.5*[(1, 2)+(3−2, 5−3)]=(1, 2).
In an embodiment, the following feature pair conditions may help in feature matching.
Angle conditions after solving for transformation T=(a, b, θ):
The angles match—meaning they are almost the same:
|pi(θ)+α−qj(θ)|<δθ and |pk(θ)+α−ql(θ)|<δθ 1.)
Distance conditions after solving for (a, b, θ):
The distances match—meaning they are almost the same.
D(T(pi),qj)<δ1 2.)
D(T(pk),ql)<δ2 3.)
|D(pi,pk)−D(qj,ql)|<δ12 4.)
In an embodiment, δ1=δ2. In an embodiment, δ12=2δ1
In an embodiment, where the biometric print has valleys, a valley count condition after solving for (a, b, θ) is the following. The valley counts match—meaning they are the same or almost the same.
|V(pi,pk)−V(qj,ql)|<NV 5.)
The notation V(pi, pk) denotes the number of valleys between features pi and pk. For example, in
Below is an embodiment describing computer instructions that search feature pairs and compute transformations for matching feature pairs.
Suppose K is the number of transformations T to store.
As mentioned before, in an embodiment an affine transformation may be used. An affine transformation may be described by three parameters, (a, b, θ). Two affine transformations T=(a1, b1, θ1) and G=(a2, b2, θ2) are close if the three inequalities hold:
|a1−a2|<δa
|b1−b2|<δb
|θ1−θ2|<δe
where δa, δb, and δe are small positive constants. The value of δa, δb, and δe may depend on the dimensions of the biometric print images, and the likelihood that an image could be distorted by a strange placement or sweeping of the finger on the sensor. δa, δb may range from 1 to 6 and δe may range from 5 degrees to 40 degrees.
In an embodiment, from these K best transformations, the largest number of these transformations that are close is chosen. The composite biometric match score S may be computed by summing these matching scores.
If (S>match score authentication threshold) accept authentication biometric print else reject authentication biometric print. As an example, if the number of these transformations is five and their respective matching scores are 208, 125, 102, 91 and 234. Then S=208+125+102+91+234=760. If the “match score authentication threshold” is 600, then the biometric print submitted during authentication is accepted. In an alternative embodiment, the scores may multiplied. The parameter “match score authentication threshold” is chosen based on the requirements of the application and the quality of the data. For example, the “match score authentication threshold” may be larger in a military application versus for a person gaining access to their ITunes account.
In an embodiment randomness may be used to select feature pairs which helps compute transformations between biometric prints or templates. In this case, not all of the feature pairs may be searched. This may be useful when execution speed is important, or to help address false minutiae. In an embodiment, the processor may be less expensive: in an embodiment, a smart card chip may be used. In one embodiment, the method randomly selects some of the feature pairs, so that the maximum number of pairs In one embodiment, set Z=the maximum number of feature pairs. The value of Z places an upper bound on the amount of computation that is performed.
In an embodiment, computer instructions initialize a collection of distinct random numbers {r1, r2, . . . , rZ} such that each 0≦ri<Z and ri≠rk when i≠k. In some cases a random number may be used to generate {r1, r2, . . . , rZ} In this alternative, the computation is the same as the computation shown previously except the features chosen from {p1, p2 . . . , pm} are selected using the random numbers {ri, r2, . . . , rZ}.
In an embodiment, each biometric print may be separated into local regions. In this case, a different local transformation may be computed between each pair of corresponding regions in biometric print (template) A and biometric print (template) B. In these embodiments, local transformations match corresponding features between two biometric prints, because sometimes biometric print images suffer from translational and rotational deformations. These deformations can be a result of environmental factors such as the index of refraction of light, temperature changes, moisture changes. These deformations can be a result of the geometry and placement or orientation of the body part such as fingers, fingerprint, iris, face or hand. These deformations can be a result of changes in the biometric sensor. And in some cases some of these factors may contribute to deformations in the biometric print or template that is acquired. In an embodiment, the transformation between biometric templates is a collection of locally affine transformations over different regions of the biometric print.
This application claims priority benefit of U.S. Provisional Patent Application Ser. No. 61/461,479, entitled “Protecting Codes, Keys and User Credentials with External Identity,” filed Jan. 16, 2011, which is incorporated herein by reference. This application claims priority benefit of U.S. Provisional Patent Application Ser. No. 61/461,455, entitled “Protecting Codes, Keys and User Credentials with External Identity and Hidden Information,” filed Jan. 18, 2011, which is incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
3950733 | Cooper et al. | Apr 1976 | A |
4555796 | Sakoe | Nov 1985 | A |
4961005 | Salam | Oct 1990 | A |
5060263 | Bosen et al. | Oct 1991 | A |
5148514 | Arima et al. | Sep 1992 | A |
5216752 | Tam | Jun 1993 | A |
5303328 | Masui et al. | Apr 1994 | A |
5325464 | Pechanek et al. | Jun 1994 | A |
5343554 | Koza et al. | Aug 1994 | A |
5402492 | Goodman et al. | Mar 1995 | A |
5479570 | Imagawa et al. | Dec 1995 | A |
5481644 | Inazumi | Jan 1996 | A |
5481672 | Okuno et al. | Jan 1996 | A |
5604801 | Dolan et al. | Feb 1997 | A |
5612683 | Trempala et al. | Mar 1997 | A |
5623548 | Akiyama et al. | Apr 1997 | A |
5659626 | Ort et al. | Aug 1997 | A |
5724425 | Chang et al. | Mar 1998 | A |
5768382 | Schneier et al. | Jun 1998 | A |
5799098 | Ort et al. | Aug 1998 | A |
5802199 | Pare, Jr. et al. | Sep 1998 | A |
5809143 | Hughes | Sep 1998 | A |
5825880 | Sudia et al. | Oct 1998 | A |
5832466 | Feldgajer | Nov 1998 | A |
5848403 | Gabriner et al. | Dec 1998 | A |
5887140 | Itsumi et al. | Mar 1999 | A |
5903225 | Schmitt et al. | May 1999 | A |
5920642 | Merjanian | Jul 1999 | A |
5923756 | Shambroom | Jul 1999 | A |
5926555 | Ort et al. | Jul 1999 | A |
5930780 | Hughes et al. | Jul 1999 | A |
5933516 | Tu et al. | Aug 1999 | A |
5940825 | Castelli et al. | Aug 1999 | A |
6169771 | Shou et al. | Jan 2001 | B1 |
6256619 | Grichnik | Jul 2001 | B1 |
6260031 | Schaffer et al. | Jul 2001 | B1 |
6292586 | Kawakami et al. | Sep 2001 | B1 |
6341372 | Datig | Jan 2002 | B1 |
6470261 | Ng et al. | Oct 2002 | B1 |
6493686 | Francone et al. | Dec 2002 | B1 |
6532541 | Chang et al. | Mar 2003 | B1 |
6601053 | Schaffer et al. | Jul 2003 | B1 |
6651049 | Agrawal et al. | Nov 2003 | B1 |
6704757 | Ohmi et al. | Mar 2004 | B1 |
6751621 | Calistri-Yeh et al. | Jun 2004 | B1 |
6810118 | Martin | Oct 2004 | B1 |
6868525 | Szabo | Mar 2005 | B1 |
6928368 | Bulla, Jr. et al. | Aug 2005 | B1 |
6934938 | May et al. | Aug 2005 | B2 |
6950696 | Björling et al. | Sep 2005 | B2 |
7162032 | Brekne | Jan 2007 | B2 |
7623468 | Panigrahy et al. | Nov 2009 | B2 |
20020038294 | Matsugu | Mar 2002 | A1 |
20020059154 | Rodvold | May 2002 | A1 |
20030183878 | Tajiri et al. | Oct 2003 | A1 |
20030212645 | Schaffer et al. | Nov 2003 | A1 |
20040162795 | Dougherty et al. | Aug 2004 | A1 |
20050075702 | Shafer | Apr 2005 | A1 |
20060236226 | Meijer et al. | Oct 2006 | A1 |
20060245225 | Vorbach | Nov 2006 | A1 |
20070014394 | Harder et al. | Jan 2007 | A1 |
20070061777 | Vashi et al. | Mar 2007 | A1 |
20070245154 | Akkermans et al. | Oct 2007 | A1 |
20080178002 | Hirata et al. | Jul 2008 | A1 |
20100199092 | Andrus et al. | Aug 2010 | A1 |
20100322485 | Riddiford | Dec 2010 | A1 |
Number | Date | Country |
---|---|---|
1 280 094 | Jan 2003 | EP |
1 865 442 | Dec 2007 | EP |
WO 2006055767 | May 2006 | WO |
WO 2008010773 | Jan 2008 | WO |
WO 2012097362 | Jul 2012 | WO |
Number | Date | Country | |
---|---|---|---|
20120185698 A1 | Jul 2012 | US |
Number | Date | Country | |
---|---|---|---|
61461479 | Jan 2011 | US | |
61461455 | Jan 2011 | US |