Multiparty Key Exchange
20210377009 · 2021-12-02
Inventors
Cpc classification
H04L9/0838
ELECTRICITY
H04L9/3093
ELECTRICITY
H04L9/085
ELECTRICITY
H04L9/3066
ELECTRICITY
H04L9/0825
ELECTRICITY
H04L2209/46
ELECTRICITY
H04L9/302
ELECTRICITY
International classification
H04L9/08
ELECTRICITY
Abstract
This invention pertains to secure communications between multiple parties and/or secure computation or data transmission between multiple computers or multiple vehicles. This invention provides a secure method for three or more parties to establish one or more shared secrets between all parties. In some embodiments, there are less than 40 parties and in other embodiments there are more than 1 million parties that establish a shared secret. In some embodiments, establishing a shared secret among multiple parties provides a method for a secure conference call. In some embodiments, a shared secret is established with multiple computer nodes across the whole earth to help provide a secure Internet infrastructure that can reliably and securely route Internet traffic. In some embodiments, a shared secret is established so that self-driving vehicles may securely communicate and securely coordinate their motion to avoid collisions. In some embodiments, a shared secret is established with multiple computer nodes that participate as a network, performing blockchain computations.
Claims
1. An information system comprising: a first party generating, by a system, one or more private keys, wherein the one or more private keys of the first party include a machine-generated random sequence of characters of the first party that is generated automatically, by the system; the first party computing, by the system, one or more public keys by applying mathematical operations to the one or more private keys; the first party sending, by the system, one or more of its public keys to a second party; a the second party generating, by the system, one or more private keys; the second party computing, by the system, one or more public keys by applying mathematical operations to the second party's one or more private keys; the second party sending, by the system, one or more of its the second party's public keys to the first party; the first party receiving, by the system, the second party's one or more public keys; the first party applying, by the system, mathematical operations between the first party's one or more private keys and the second party's one or more public keys; the mathematical operations resulting in a shared secret for the first party; the second party receiving, by the system, the first party's one or more public keys; the second party applying, by the system, mathematical operations between the second party's one or more private keys and the first party's one or more public keys; the mathematical operations resulting in a shared secret for the second party; the first party transforming, by the system, the shared secret for the first party to one or more multiparty private keys that are distinct from the first party's private keys and distinct from the second party's private keys; the first party computing, by the system, one or more multiparty public keys by applying mathematical operations to information that includes at least the one or more multiparty private keys, the mathematical operations only including operations upon information that is available to the second party; the first party sending, by the system, the one or more multiparty public keys to a third party that is distinct from the first party and distinct from the second party; wherein the computing of the one or more public keys by the first party is performed by a first machine of the system, the first machine having a first processor system and a first memory system, the first processor system including a first set of one or more processors; and wherein the computing of the one or more public keys by the second party is performed by a second machine of the system, second machine having a processor system and a second memory system, the second processor system including a second set of one or more processors; wherein each of the one or more multiparty public keys has a size, and the size increases slower than linearly as a function of the number of participants that exchange one or more multiparty public keys.
2. The system of claim further comprising: wherein said mathematical operations are group operations, derived from an elliptic curve.
3. The system of claim further comprising: wherein said mathematical operations are lattice operations.
4. The system of claim further comprising: wherein said mathematical operations are Goppa code operations or McEliece group operations.
5. The system of claim further comprising: the first party sending one or more public keys to a location outside of a sending system of the first party.
6. The system claim further comprising: at least one party is a sensor or at least one party uses at least one sensor.
7. The system of claim wherein a non-deterministic system contributes to the generation of the first party's private keys.
8. The system of claim further comprising: the non-deterministic system is based at least on a behavior of photons.
9. The system of claim further comprising: emitting said photons from a light emitting diode.
10. An information system comprising: a first party generating, by a system, one or more private keys, wherein the one or more private keys of the first party include a machine-generated random sequence of characters of the first party that is generated automatically, by the system; the first party computing, by the system, one or more public keys by applying mathematical operations to the one or more private keys; the first party sending, by the system, one or more of its public keys to a second party; a the second party generating, by the system, one or more private keys; the second party computing, by the system, one or more public keys by applying mathematical operations to the second party's one or more private keys; the second party sending, by the system, one or more of its the second party's public keys to the first party; the first party receiving, by the system, the second party's one or more public keys; the first party applying, by the system, mathematical operations between the first party's one or more private keys and the second party's one or more public keys; the mathematical operations resulting in a shared secret for the first party; the second party receiving, by the system, the first party's one or more public keys; the second party applying, by the system, mathematical operations between the second party's one or more private keys and the first party's one or more public keys; the mathematical operations resulting in a shared secret for the second party; the first party transforming, by the system, the shared secret for the first party to one or more multiparty private keys that are distinct from the first party's private keys and distinct from the second party's private keys; the first party computing, by the system, one or more multiparty public keys by applying mathematical operations to information that includes at least the one or more multiparty private keys, the mathematical operations only including operations upon information that is available to the second party; the first party sending, by the system, the one or more multiparty public keys to a third party that is distinct from the first party and distinct from the second party; wherein the computing of the one or more public keys by the first party is performed by a first machine of the system, the first machine having a first processor system and a first memory system, the first processor system including a first set of one or more processors; and wherein the computing of the one or more public keys by the second party is performed by a second machine of the system, second machine having a processor system and a second memory system, the second processor system including a second set of one or more processors; wherein each of the one or more multiparty public keys has a size, and the size does not increase faster than linearly as a function of the number of participants that share the one or more multiparty public keys.
11. The system of claim further comprising: wherein said mathematical operations are group operations, derived from an elliptic curve.
12. The system of claim further comprising: wherein said mathematical operations are lattice operations.
13. The system of claim further comprising: wherein said mathematical operations are Goppa code operations or McEliece group operations.
14. The system of claim further comprising: the first party sending one or more public keys to a location outside of a sending system of the first party.
15. The system claim further comprising: at least one party is a sensor or at least one party uses at least one sensor.
16. A machine-implemented method comprising: a first party generating one or more private keys, wherein the one or more private keys of the first party include a machine-generated random sequence of characters of the first party that is generated automatically, by the machine; the first party computing, by the machine, one or more public keys by applying mathematical operations to the one or more private keys; the first party sending, by the machine, one or more of its public keys to a second party; a the second party generating, by the machine, one or more private keys; the second party computing, by the machine, one or more public keys by applying mathematical operations to the second party's one or more private keys; the second party sending, by the machine, one or more of its the second party's public keys to the first party; the first party receiving, by the machine, the second party's one or more public keys; the first party applying, by the machine, mathematical operations between the first party's one or more private keys and the second party's one or more public keys; the mathematical operations resulting in a shared secret for the first party; the second party receiving, by the machine, the first party's one or more public keys; the second party applying, by the machine, mathematical operations between the second party's one or more private keys and the first party's one or more public keys; the mathematical operations resulting in a shared secret for the second party; the first party transforming, by the machine, the shared secret for the first party to one or more multiparty private keys that are distinct from the first party's private keys and distinct from the second party's private keys; the first party computing, by the machine, one or more multiparty public keys by applying mathematical operations to information that includes at least the one or more multiparty private keys, the mathematical operations only including operations upon information that is available to the second party; the first party sending, by the machine, the one or more multiparty public keys to a third party that is distinct from the first party and distinct from the second party; wherein the computing of the one or more public keys by the first party is performed by a first machine, the first machine having a first processor system and a first memory, the first processor system including a first set of one or more processors; and wherein the computing of the one or more public keys by the second party is performed by a second machine, second machine having a second processor system and a second memory system, the second processor system including a second set of one or more processors; wherein each of the one or more multiparty public keys has a size, and the size does not increase faster than linearly as a function of the number of participants that share the one or more multiparty public keys.
17. The machine-implemented method of claim further comprising: wherein said mathematical operations are group operations, derived from an elliptic curve.
18. The machine-implemented method of claim further comprising: wherein said mathematical operations are lattice operations.
19. The machine-implemented method of claim further comprising: wherein said mathematical operations are Goppa code operations or McEliece group operations.
20. The machine-implemented method of claim further comprising: the first party sending one or more public keys to a location outside of a sending system of the first party.
21. The machine-implemented method claim further comprising: at least one party is a sensor or at least one party uses at least one sensor.
22. The machine-implemented method of claim further comprising: a non-deterministic process contributes to the generation of the first party's private keys.
Description
6 BRIEF DESCRIPTION OF DRAWINGS
[0016] In the following drawings, although they may depict various examples of the invention, the invention is not limited to the examples depicted in the drawings.
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
7 DETAILED DESCRIPTION
7.1 Information Terms and Definitions
[0031] In this specification, “party” refers to any number of objects or entities that participate in a multiparty key exchange. A “party” may be a device such as a USB device or smartcard. A “party” may be any number of possible devices or computing environments, where private keys and public keys are generated, sent, received and computed. A “party” may be a computer node in an Internet infrastructure, a computer processor chip in a mobile phone, a computer acting as domain name server, a computer acting as a proxy, a computer chip in an embedded environment, a computer running a Linux operating system, a computer running Apple OS, a router. A “party” may refer to a computing environment operating inside a drone. A “party” may refer to a single quantum computer.
[0032] In this specification, “multiparty” refers to two or more parties. In some embodiments, “multiparty” may refer to four parties called Alice, Bob, Fred and Haley. In some embodiments, “multiparty” may refer to one thousand (i.e., 1,000) parties. In some embodiments, “multiparty” may refer to one million (i.e., 1,000,000) parties. In some embodiments, “multiparty” may refer to one billion (i.e., 1,000,000,000) parties. When there are a small number of participants in a multiparty key exchange, the human names Alice, Bob, Ella, Fred, Joanne and Kate are used even though each name may refer to one of the aforementioned devices or computing environments. When there is a multiparty exchange that involves a large number of participants, the symbols P.sub.1, P.sub.2, . . . , P.sub.n may be used instead of human names. Thus, P.sub.1 is a symbol that refers to the first party involved in a multiparty key exchange. P.sub.2 is a symbol that refers to the second party involved in a multiparty key exchange. P.sub.3 is a symbol that refers to the third party involved in a multiparty key exchange. P.sub.n is a symbol that refers to the nth party involved in a multiparty key exchange. In an embodiment, the number of distinct parties may be greater than one thousand so that n>1,000. In another embodiment, the number of distinct parties may be greater than one million so that n>1,000,000. In embodiments that have a smaller number of parties, the human names are often used. For example, in a 4-party exchange, the names Alice, Bob, Ella and Fred are used.
[0033] In this specification, the term “key” is a type of information and is a value or collection of values to which one or more operations are performed. In some embodiments, one or more of these operations are cryptographic operations. {0, 1}.sup.n is the set of all bit-strings of length n. When a public key is represented with bits, mathematically a n-bit key is an element of the collection {0, 1}.sup.n which is the collection of strings of 0's and 1's of length n. For example, the string of 0's and 1's that starts after this colon is a 128-bit key: 01100001 11000110 01010011 01110001 11000101 10001110 11011001 11010101 01011001 01100100 10110010 10101010 01101101 10000111 10101011 00010111. In an embodiment, n=3000 so that a key is a string of 3000 bits. In some embodiments, a public key is larger than 10 million bits.
[0034] In other embodiments, a public key may be a sequence of values that are not represented as bits. Consider the set {A, B, C, D, E}. For example, the string that starts after this colon is a 40-symbol key selected from the set {A, B, C, D, E}: ACDEB AADBC EAEBB AAECB ADDCB BDCCE ACECB EACAE. In an embodiment, a key could be a string of length n selected from {A, B, C, D, E}.sup.n. In an embodiment, n=700 so that the key is a string of 700 symbols where each symbol is selected from {A, B, C, D, E}.
[0035] In this specification, the term “public key” refers to any kind of public key used in public key cryptography. In an embodiment, “public key” refers to an RSA public key. (For RSA, see reference with Rivest as an author.) In an embodiment, “public key” refers to an elliptic curve public key. (See references
with authors Silverman, Edwards and Montgomery.) In an embodiment, “public key” refers to a McEliece public key. (See reference
with McEliece as an author.) In an embodiment, “public key” refers to a lattice-based public key.
[0036] In this specification, the term “size” of the key refers to the number of bits that represent the key. If a public key is represented in hexadecimal, then each symbol in {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} has a size of 8 (eight) bits, and, for example, the size of F3 is sixteen (16 decimal) bits. The size of the hexadecimal public key F3 A2 34 79 03 BC C0 1E 16 39 7D 99 47 DF 28 54 is two hundred and fifty six (256 decimal) bits.
[0037] If n is the number of participants in a multiparty key exchange, then the function f(n)=3n is a linear function of the number of participants (number of parties) in a multiparty key exchange. If k.sub.1 and k.sub.2 are constants then function f.sub.k.sub.
[0038] For example, in an embodiment, there are 1 billion sensors on our satellites circling the earth, and the sensors want to establish a shared secret. This is not possible with the prior art because the public key sizes become too big to support a multiparty key exchange with 1 billion participants. In an embodiment, a sensor is an antenna or contains an antenna. In an embodiment, a sensor is a microphone or contains a microphone. In an embodiment, a sensor is a speaker or contains a speaker. In an embodiment, a sensor is a camera or contains a camera. In an embodiment, a sensor is a video camera or contains a video camera. In an embodiment, a sensor is a light emitter or contains a light emitter. In an embodiment, a sensor is a Geiger counter or contains a Geiger counter. In an embodiment, a sensor is a gravity meter or contains a gravity meter. In an embodiment, a sensor is a barometer or contains a barometer. In an embodiment, a sensor can detect and measure pressure. In an embodiment, a sensor contains one or more chlorophyll molecules. In an embodiment, a sensor contains one or more mirrors. In an embodiment, a sensor contains one or more photodetectors.
[0039] In this specification, the term “multiparty” public key refers to a public key derived from two or more parties. In this specification, the term “multiparty” private key refers to a private key derived from two or more parties. In this specification, the term “multiparty” shared secret refers to a shared secret derived from two or more parties.
[0040] In some embodiments, multiparty public key(s) 109 in
[0041] In some embodiments, public key(s) 104 are RSA public key(s), which is a well-known public key cryptography . RSA is described from the perspective of Alice. Alice chooses two huge primes p.sub.A and q.sub.A. Alice computes n.sub.A=p.sub.Aq.sub.A and a random number r.sub.A which has no common factor with (p.sub.A−1)(q.sub.A−1). In other words, 1 is the greatest common divisor of r.sub.A and (p.sub.A−1)(q.sub.A−1). he Euler-phi function is defined as follows. If k=1, then ϕ(k)=1; if k>1, then ϕ(k) is the number positive integers i such that i<k and i and k are relatively prime. Relatively prime means the greatest common divisor of i and k is 1. The positive integer e.sub.A is randomly selected such that e.sub.A is relatively prime to ϕ(n.sub.A).
[0042] Alice computes ϕ(n.sub.A)=n.sub.A+1−p.sub.A−q.sub.A. Alice computes the multiplicative inverse of r.sub.A modulo ϕ(n.sub.A); the multiplicative inverse is d.sub.A=e.sub.A.sup.−1 modulo ϕ(n.sub.A). Alice makes public her public key (n.sub.A, r.sub.A): that is, the two positive integers (n.sub.A, r.sub.A) are Alice's public key.
[0043] In an embodiment, random generator 128 generates r.sub.1 . . . r.sub.p which is input to private key instructions 124. In an embodiment that hides RSA public keys, private key instruction 124 use r.sub.1 . . . r.sub.p to find two huge primes p.sub.A and q.sub.A and a random number r.sub.A relatively prime to (p.sub.A−1)(q.sub.A−1).
[0044] In an embodiment, random generator 128 and private key instructions 124 generate two huge primes p.sub.A and q.sub.A; compute n.sub.A=p.sub.Aq.sub.A; and randomly choose e.sub.A that is relatively prime to ϕ(n.sub.A). In an embodiment, private key instructions 124 compute d.sub.A=e.sub.A.sup.−1 modulo ϕ(n.sub.A). In an embodiment, an RSA private key is (n.sub.A, d.sub.A). In an embodiment that hides RSA public keys, public key instructions 126 compute RSA public key (n.sub.A, r.sub.A). In an embodiment, positive integer n.sub.A is a string of 4096 bits and r.sub.A is a string of 4096 bits.
[0045] In this specification, the term “location” may refer to geographic locations and/or storage locations. A particular storage location may be a collection of contiguous and/or noncontiguous locations on one or more machine readable media. Two different storage locations may refer to two different sets of locations on one or more machine-readable media in which the locations of one set may be intermingled with the locations of the other set.
[0046] In this specification, the term “machine-readable medium” refers to any non-transitory medium capable of carrying or conveying information that is readable by a machine. One example of a machine-readable medium is a computer-readable medium. Another example of a machine-readable medium is paper having holes that are detected that trigger different mechanical, electrical, and/or logic responses. The term machine-readable medium also includes media that carry information while the information is in transit from one location to another, such as copper wire and/or optical fiber and/or the atmosphere and/or outer space.
[0047] In this specification, the term “process” refers to a series of one or more operations. In an embodiment, “process” may also include operations or effects that are best described as non-deterministic. In an embodiment, “process” may include some operations that can be executed by a digital computer program and some physical effects that are non-deterministic, which cannot be executed by a digital computer program and cannot be performed by a finite sequence of processor instructions.
[0048] In this specification, the machine-implemented processes implement algorithms and non-deterministic processes on a machine. The formal notion of “algorithm” was introduced in Turing's work and refers to a finite machine that executes a finite number of instructions with finite memory. In other words, an algorithm can be executed with a finite number of machine instructions on a processor. “Algorithm” is a deterministic process in the following sense: if the finite machine is completely known and the input to the machine is known, then the future behavior of the machine can be determined. In contrast, there is hardware that can measure quantum effects from photons (or other physically non-deterministic processes), whose physical process is non-deterministic. The recognition of non-determinism produced by quantum randomness and other quantum embodiments is based on decades of experimental evidence and statistical testing. Furthermore, the quantum theory—derived from the Kochen-Specker theorem and its extensions
—predicts that the outcome of a quantum measurement cannot be known in advance and cannot be generated by a Turing machine (digital computer program). As a consequence, a physically non-deterministic process cannot be generated by an algorithm: namely, a sequence of operations executed by a digital computer program.
[0049] Some examples of physically non-deterministic processes are as follows. In some embodiments that utilize non-determinism, photons strike a semitransparent mirror and can take two or more paths in space. In one embodiment, if the photon is reflected by the semitransparent mirror, then it takes on one bit value b ∈ {0, 1}; if the photon passes through by the semitransparent mirror, then the non-deterministic process produces another bit value 1−b. In another embodiment, the spin of an electron may be sampled to generate the next non-deterministic bit. In still another embodiment, a protein, composed of amino acids, spanning a cell membrane or artificial membrane, that has two or more conformations can be used to detect non-determinism: the protein conformation sampled may be used to generate a non-deterministic value in {0, . . . n−1} where the protein has n distinct conformations. In an alternative embodiment, one or more rhodopsin proteins could be used to detect the arrival times of photons and the differences of arrival times could generate non-deterministic bits. In some embodiments, a Geiger counter may be used to sample non-determinism
[0050] In this specification, the term “photodetector” refers to any type of device or physical object that detects or absorbs photons. A photodiode is an embodiment of a photodetector. A phototransistor is an embodiment of a photodetector. A rhodopsin protein is an embodiment of a photodetector.
7.2 Information System
[0051]
[0052] Information system 100 may be a system for transmitting multiparty public key(s). Multiparty public key(s) 104 refers to information that is intended for a multiparty key exchange. In some embodiments, multiparty public key(s) 104 are intended to be delivered to another location, software unit, machine, person, or other entity.
[0053] In some embodiments, multiparty public key(s) 104 may serve as part of a multiparty key exchange. In an embodiment, multiparty public key(s) 104 may be transmitted wirelessly between satellites. Multiparty public key(s) 104 may be represented in analog form in some embodiments and may be represented in digital form. In an embodiment, the public key(s) may be one or more RSA public keys based on huge prime numbers. In an another embodiment, the public key(s) may be one or more elliptic curve public keys, computed from an elliptic curve over a finite field.
[0054] In information system 100, private keys 103 are used to help compute multiparty public key(s) 104. Multiparty public key(s) 104 may be a collection of multiple, blocks of information, an entire sequence of public keys, a segment of public keys, or any other portion of one or more public keys. When there is more than one public key, multiparty public keys 104 may be computed from distinct commutative groups, as described in section For example, one commutative group may be based on an elliptic curve over a finite field; another commutative group may be based on multiplication modulo, as used in RSA; another commutative group may be based on Goppa codes; another commutative group may be based on lattices.
[0055] Multiparty sending instructions 106 may be a series of steps that are performed on multiparty public keys 104. In one embodiment, the term “process” refers to one or more instructions for sending machine 102 to execute the series of operations that may be stored on a machine-readable medium. Alternatively, the process may be carried out by and therefore refer to hardware (e.g., logic circuits) or may be a combination of instructions stored on a machine-readable medium and hardware that cause the operations to be executed by sending machine 102 or receiving machine 112. Public key(s) 104 may be input for multiparty sending instructions 106. The steps that are included in multiparty sending instructions 106 may include one or more mathematical operations and/or one or more other operations.
[0056] As a post-processing step, one-way hash function 948 may be applied to a sequence of random events such as quantum events (non-deterministic) generated by non-deterministic generator 642 in
[0057] In
[0058] Sending machine 102 may be an information machine that handles information at or is associated with a first location, software unit, machine, person, sender, or other entity. Sending machine 102 may be a computer, a phone, a mobile phone, a telegraph, a satellite, or another type of electronic device, a mechanical device, or other kind of machine that sends information. Sending machine 102 may include one or more processors and/or may include specialized circuitry for handling information. Sending machine 102 may receive public key(s) 104 from another source (e.g., a transducer such as a microphone which is inside mobile phone 402 or 502 of
[0059] Sending machine 102 may implement any of the multiparty key exchange methods described in this specification. In some embodiments, receiving/sending machine 122, shown in
[0060] Transmission path 110 is the path taken by multiparty public key(s) 109 to reach the destination to which multiparty public key(s) 109 were sent. Transmission path 110 may include one or more networks, as shown in
[0061] Receiving machine 112 may be an information machine that handles information at the destination of an multiparty public key(s) 109. Receiving machine 112 may be a computer, a phone, a telegraph, a router, a satellite, or another type of electronic device, a mechanical device, or other kind of machine that receives information. Receiving machine 112 may include one or more processors and/or specialized circuitry conFlG.d for handling information, such as multiparty public key(s) 109. Receiving machine 112 may receive multiparty public key(s) 109 from another source and/or reconstitute all or part of multiparty public key(s) 109. Receiving machine 112 may implement any of the multiparty key exchange methods described in this specification and is capable of receiving any multiparty public keys from sending machine 102 and multiparty sending instructions 106.
[0062] In one embodiment, receiving machine 112 only receives public keys 109 from transmission path 110, while multiparty sending instructions 106 is implemented manually and/or by another information machine. In another embodiment, receiving machine 112 implements multiparty receiving instructions 116 that reproduces all or part of public key(s) 104, referred to as multiparty public key(s) 114 in
[0063] Receiving machine 112 may be identical to sending machine 102. For example, receiving machine 112 may receive 104 from another source, produce all or part of multiparty public key(s) 104, and/or implement multiparty sending instructions 106. Similar to sending machine 102, receiving machine 112 may create random private keys and compute unpredictable multiparty public key(s). Receiving machine 112 may transmit the output of multiparty receiving instructions 116, via transmission path 110 to another entity and/or receive multiparty public key(s) 109 (via transmission path 110) from another entity. Receiving machine 112 may present public key(s) 109 for use as input to multiparty receiving instructions 116.
7.3 Processor, Memory and Input/Output Hardware
[0064] Information system 200 illustrates some of the variations of the manners of implementing information system 100. Sending machine 202 is one embodiment of sending machine 101. Sending machine 202 may be a secure USB memory storage device as shown in 3A. Sending machine 202 may be an authentication token as shown in
[0065] Sending machine 202 or sending machine 400 may communicate wirelessly with computer 204. In an embodiment, computer 204 may be a call station for receiving multiparty public key 109 from sending machine 400. A user may use input system 254 and output system 252 of sending machine (mobile phone) 400 to transmit multiparty public key to a receiving machine that is a mobile phone. In an embodiment, input system 254 in
[0066] Computer 204 is connected to system 210, and is connected, via network 212, to system 214, system 216, and system 218, which is connected to system 220. Network 212 may be any one or any combination of one or more Local Area Networks (LANs), Wide Area Networks (WANs), wireless networks, telephones networks, and/or other networks. System 218 may be directly connected to system 220 or connected via a LAN to system 220. Network 212 and system 214, 216, 218, and 220 may represent Internet servers or nodes that route multiparty public key(s) 109 received from sending machine 400 shown in
[0067] In
[0068] In an embodiment, multiparty sending instructions 106 and multiparty receiving instructions 116 execute in a secure area of processor system 258 of
[0069] In an embodiment, specialized hardware in processor system 258 may be embodied as an ASIC (application specific integrated circuit) that computes SHA-1 and/or SHA-512 and/or Keccak and/or BLAKE and/or JH and/or Skein that help execute the HMAC function in processes and
An ASIC chip can increase the execution speed and protect the privacy of multiparty sending instructions 106 and multiparty receiving instructions 116.
[0070] In an embodiment, input system 254 of
[0071] In an embodiment, memory system 256 of
7.4 Non-Deterministic Generators
[0072]
[0073]
[0074] The emission times of the photons emitted by the LED experimentally obey the energy-time form of the Heisenberg uncertainty principle. The energy-time form of the Heisenberg uncertainty principle contributes to the non-determinism of random number generator 128 because the photon emission times are unpredictable due to the uncertainty principle. In
[0075] In
[0076] A photodiode is a semiconductor device that converts light (photons) into electrical current, which is called a photocurrent. The photocurrent is generated when photons are absorbed in the photodiode. Photodiodes are similar to standard semiconductor diodes except that they may be either exposed or packaged with a window or optical fiber connection to allow light (photons) to reach the sensitive part of the device. A photodiode may use a PIN junction or a p-n junction to generate electrical current from the absorption of photons. In some embodiments, the photodiode may be a phototransistor.
[0077] A phototransistor is a semiconductor device comprised of three electrodes that are part of a bipolar junction transistor. Light or ultraviolet light activates this bipolar junction transistor. Illumination of the base generates carriers which supply the base signal while the base electrode is left floating. The emitter junction constitutes a diode, and transistor action amplifies the incident light inducing a signal current.
[0078] When one or more photons with high enough energy strikes the photodiode, it creates an electron-hole pair. This phenomena is a type of photoelectric effect. If the absorption occurs in the junction's depletion region, or one diffusion length away from the depletion region, these carriers (electron-hole pair) are attracted from the PIN or p-n junction by the built-in electric field of the depletion region. The electric field causes holes to move toward the anode, and electrons to move toward the cathode; the movement of the holes and electrons creates a photocurrent. In some embodiments, the amount of photocurrent is an analog value, which can be digitized by a analog-to-digital converter. In some embodiments, the analog value is amplified before being digitized. The digitized value is what becomes the random number. In some embodiments, a one-way hash function 648 or 658 may also be applied to post-process the raw random bits to produce private keys used by processes and
In some embodiments, a one-way hash function may be applied using one-way hash instructions 664 to the random digitized output of non-deterministic generator 642 before executing private key(s) instructions 124, used by processes
and
[0079] In an embodiment, the sampling of the digitized photocurrent values may converted to threshold times as follows. A photocurrent threshold θ is selected as a sampling parameter. If a digitized photocurrent value i.sub.1 is above θ at time t.sub.1, then t.sub.1 is recorded as a threshold time. If the next digitized photocurrent value i.sub.2 above θ occurs at time t.sub.2, then t.sub.2 is recorded as the next threshold time. If the next digitized value i.sub.3 above θ occurs at time t.sub.3, then t.sub.3 is recorded as the next threshold time.
[0080] After three consecutive threshold times are recorded, these three times can determine a bit value as follows. If t.sub.2−t.sub.1>t.sub.3−t.sub.2, then non-deterministic generator 642 or 652 produces a 1 bit. If t.sub.2−t.sub.1<t.sub.3−t.sub.2, then non-deterministic generator 642 or 652 produces a 0 bit. If t.sub.2−t.sub.1=t.sub.3−t.sub.2, then no random bits are produced. To generate the next bit, non-deterministic generator 642 or 652 continues the same sampling steps as before and three new threshold times are produced and compared.
[0081] In an alternative sampling method, a sample mean μ is established for the photocurrent, when it is illuminated with photons. In some embodiments, the sampling method is implemented as follows. Let i.sub.1 be the photocurrent value sampled at the first sampling time. i.sub.1 is compared to μ. ϵ is selected as a parameter in the sampling method that is much smaller number than μ. If i.sub.1 is greater thanμ+ϵ, then a 1 bit is produced by the non-deterministic generator 642 or 652. If i.sub.1 is less than μ−ϵ, then a 0 bit is produced by non-deterministic generator 642 or 652. If i.sub.1 is in the interval [μ−ϵ. μ+ϵ], then NO bit is produced by non-deterministic generator 642 or 652.
[0082] Let i.sub.2 be the photocurrent value sampled at the next sampling time. i.sub.2 is compared to μ. If i.sub.2 is greater than μ+ϵ, then a 1 bit is produced by the non-deterministic generator 642 or 652. If i.sub.2 is less than μ−ϵ, then a 0 bit is produced by the non-deterministic generator 642 or 652. If i.sub.2 is in the interval [μ+ϵ], then NO bit is produced by the non-deterministic generator 642 or 652. This alternative sampling method continues in the same way with photocurrent values i.sub.3, i.sub.4, and so on. In some embodiments, the parameter ϵ is selected as zero instead of a small positive number relative to μ.
[0083] Some alternative hardware embodiments of random number generator 128 (
[0084] In some embodiments, the seek time of a hard drive can be used as non-deterministic generator as the air turbulence in the hard drive affects the seek time in a non-deterministic manner. In some embodiments, local atmospheric noise can be used as a source of randomness. For example, the air pressure, the humidity or the wind direction could be used. In other embodiments, the local sampling of smells based on particular molecules could also be used as a source of randomness.
[0085] In some embodiments, a Geiger counter may be used to sample non-determinism and generate randomness. In these embodiments, the unpredictability is due to radioactive decay rather than photon emission, arrivals and detection.
7.5 One-Way Hash Functions
[0086] In . A computation that takes 10.sup.101 computational steps is considered to have computational intractability of 10.sup.101.
[0087] More details are provided on computationally intractable. In an embodiment, there is an amount of time T that encrypted information must stay secret. If encrypted information has no economic value or strategic value after time T, then computationally intractable means that the number of computational steps required by all the world's computing power will take more time to compute than time T. Let C(t) denote all the world's computing power at the time t in years.
[0088] Consider an online bank transaction that encrypts the transaction details of that transaction. Then in most embodiments, the number of computational steps that can be computed by all the world's computers for the next 30 years is in many embodiments likely to be computationally intractable as that particular bank account is likely to no longer exist in 30 years or have a very different authentication interface.
[0089] To make the numbers more concrete, the 2013 Chinese supercomputer that broke the world's computational speed record computes about 33,000 trillion calculations per second . If T=1 one year and we can assume that there are at most 1 billion of these supercomputers. (This can be inferred from economic considerations, based on a far too low 1 million dollar price for each supercomputer. Then these 1 billion supercomputers would cost 1,000 trillion dollars.). Thus, C(2014)×1 year is less than 10.sup.9×33×10.sup.15×3600×24×365=1.04×10.sup.33 computational steps.
[0090] As just discussed, in some embodiments and applications, computationally intractable may be measured in terms of how much the encrypted information is worth in economic value and what is the current cost of the computing power needed to decrypt that encrypted information. In other embodiments, economic computational intractability may be useless. For example, suppose a family wishes to keep their child's whereabouts unknown to violent kidnappers. Suppose T=100 years because it is about twice their expected lifetimes. Then 100 years×C(2064) is a better measure of computationally intractible for this application. In other words, for critical applications that are beyond an economic value, one should strive for a good estimate of the world's computing power.
[0091] One-way functions that exhibit completeness and a good avalanche effect or the strict avalanche criterion are preferable embodiments: these properties are favorable for one-way hash functions. The definition of completeness and a good avalanche effect are quoted directly from
[0092] If a cryptographic transformation is complete, then each ciphertext bit must depend on all of the plaintext bits. Thus, if it were possible to find the simplest Boolean expression for each ciphertext bit in terms of plaintext bits, each of those expressions would have to contain all of the plaintext bits if the function was complete. Alternatively, if there is at least one pair of n-bit plaintext vectors X and X.sub.i that differ only in bit i, and f(X) and f(X.sub.i) differ at least in bit j for all {(i, j): 1<i, j≤n}, the function f must be complete. [0093] For a given transformation to exhibit the avalanche effect, an average of one half of the output bits should change whenever a single input bit is complemented. In order to determine whether a m×n (m input bits and n output bits) function f satisfies this requirement, the 2.sup.m plaintext vectors must be divided into 2.sup.m−1 pairs, X and X.sub.j such that X and X.sub.j differ only in bit i. Then the 2.sup.m−1 exclusive-or sums V.sub.i=f (X) ⊕f(X.sub.i) must be calculated. These exclusive-or sums will be referred to as avalanche vectors, each of which contains n bits, or avalanche variables. [0094] If this procedure is repeated for all i such that 1≤i≤m and one half of the avalanche variables are equal to 1 for each i, then the function f has a good avalanche effect. Of course this method can be pursued only if m is fairly small; otherwise, the number of plaintext vectors becomes too large. If that is the case then the best that can be done is to take a random sample of plaintext vectors X, and for each value i calculate all avalanche vectors V. If approximately one half the resulting avalanche variables are equal to 1 for values of i, then we can conclude that the function has a good avalanche effect.
[0095] A hash function, also denoted as Φ, is a function that accepts as its input argument an arbitrarily long string of bits (or bytes) and produces a fixed-size output of information. The information in the output is typically called a message digest or digital fingerprint. In other words, a hash function maps a variable length m of input information to a fixed-sized output, Φ(m), which is the message digest or information digest. Typical output sizes range from 160 to 512 bits, but can also be larger. 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 2.sup.n possible outputs z, the probability that Φ(m)=z is 2.sup.−n. In an embodiment, the hash functions that are used are one-way.
[0096] A good one-way hash function is also collision resistant. A collision occurs when two distinct information elements are mapped by the one-way hash function Φ to the same digest. Collision resistant means it is computationally intractable for an adversary to find collisions: more precisely, it is computationally intractable to find two distinct information elements m.sub.1, m.sub.2 where m.sub.1≠m.sub.2 and such that Φ(m.sub.1)=Φ(m.sub.2).
[0097] A number of one-way hash functions may be used to implement one-way hash function 148. In an embodiment, SHA-512 can implement one-way hash function 148, designed by the NSA and standardized by NIST . The message digest size of SHA-512 is 512 bits. Other alternative hash functions are of the type that conform with the standard SHA-384, which produces a message digest size of 384 bits. SHA-1 has a message digest size of 160 bits. An embodiment of a one-way hash function 148 is Keccak
. An embodiment of a one-way hash function 148 is BLAKE
. An embodiment of a one-way hash function 148 is Gr∅stl
An embodiment of a one-way hash function 148 is JH
. Another embodiment of a one-way hash function is Skein
.
7.6 Algebraic Groups
[0098] In this section, some terms and definitions about algebraic groups are described that are relevant to various embodiments, including the mathematical operations applied and/or computed in these embodiments. It is helpful to review the mathematical definition of a group. A group G is a set with a binary operation * such that the following four properties hold: [0099] I. Binary operation * is closed on G. This means a*b lies in G for all elements a and b in G. [0100] II. Binary operation * is associative. That is, a*(b*c)=(a*b)*c for all elements a, b, and c in G. [0101] III. There is a unique identity element e in G, where a*e=e*a=a. [0102] IV. Each element a in G has a unique inverse denoted as a.sup.−1. This means a*a.sup.−1=a.sup.−1*a=e.
[0103] Group G is a commutative group when a*b=b*a for every pair of elements a and b selected from G. The product g*g is denoted as g.sup.2; g*g*g*g*g is denoted as g.sup.5. Sometimes, the binary operation * will be omitted so that a*b is expressed as ab.
[0104] The integers {. . . , −2, −1, 0, 1, 2, . . . } with respect to the binary operation + (integer addition) are an example of an infinite commutative group. It is commutative because m+n=n+m for any two integers m and n. 0 is the identity element. For example, the inverse of 5 is −5 and the inverse of −107 is 107.
[0105] The set of permutations on n elements {1, 2, . . . , n}, denoted as S.sub.n, is an example of a finite group with n! elements where the binary operation is function composition. Each element of S.sub.n is a function p: {1, 2, . . . , n}.fwdarw.{1, 2, . . . , n} that is 1 to 1 and onto. In this context, p is called a permutation. The identity permutation e is the identity element in S.sub.n, where e(k)=k for each k in {1, 2, . . . , n}.
[0106] If H is a non-empty subset of a group G and H is a group with respect to the binary group operation * of G, then H is called a subgroup of G. H is a proper subgroup of G if H is not equal to G (i.e., H is a proper subset of G). G is a cyclic group if G has no proper subgroups.
[0107] Define A.sub.n=.sub.n−[0]={[1], . . . , [n−1]}; in other words, A.sub.n is the integers modulo n with equivalence class [0] removed. If n=5, [4]*[4]=[16 mod 5]=[1] in (
.sub.5, *) Similarly, [3]*[4]=[12 mod 5]=[2] in (
.sub.5, *). Let (a, n) represent the greatest common divisor of a and n. Let U.sub.n={[a] ∈ A.sub.n: (a, n)=1}. Define binary operator on U.sub.n as [a]*[b]=[ab], where ab is the multiplication of positive integers a and b. Then (U.sub.n, *) is a finite, commutative group.
[0108] Suppose g lies in group (G, *). This multiplicative notation works as follows: g.sup.2=g*g. Also g.sup.3=g*g*g; g.sup.6=g*g*g*g*g*g and so on. In section this multiplicative notation (superscripts) is used in the description of multiparty key exchanges.
[0109] There are an infinite number of finite groups and an infinite number of these groups are huge. The notion of huge means the following: if 2.sup.1024 is considered to be a huge number based on the computing power of current computers, then there are still an infinite number of finite, commutative groups with each group containing more than 2.sup.1024 elements.
7.7 Elliptic Curve Group Operations
[0110] For elliptic curves the mathematical operations—derived from the Weierstrauss curve—are as follows: [0111] 1. Select two geometric points p.sub.1, p.sub.2 on the Weierstrauss curve. [0112] 2. Draw a line through these two points p.sub.1 and p.sub.2. [0113] 3. Compute the new intersection point of the line with the Weierstrauss curve. [0114] 4. Reflects this new intersection point about the y axis, resulting in the point p.sub.new=p.sub.1*p.sub.2 [0115] 5. The new point p.sub.new is the result of the mathematical operations on points p.sub.1 and p.sub.2.
[0116] In the special case, when the two points are the same point (i.e., p.sub.1=p.sub.2), the mathematical operations consist of the following. A tangent line to the Weierstrauss curve at p.sub.1 is computed. Then a new intersection point with the tangent line and the Weierstrauss curve is computed. Then a reflection is applied to this new intersection point, resulting in p.sub.new.
[0117] In another embodiment, elliptic curve computations are performed on an Edwards curve over a finite field. When the field K does not have characteristic two, an Edwards curve is of the form: x.sup.2+y.sup.2=1+dx.sup.2y.sup.2, where d is an element of the field K not equal to 0 and not equal to 1. For an Edwards curve of this form, the binary operator * is defined as
where the elements of the group are the points (x.sub.1, y.sub.1) and (x.sub.2, y.sub.2). The definition of * defines elliptic curve computations that form a commutative group. For more information on Edwards curves, refer to the math journal paper .
[0118] In an alternative embodiment, elliptic curve computations are performed on a Montgomery curve over a finite field. Let K be the finite field over which the elliptic curve is defined. A Montgomery curve is of the form By.sup.2=x.sup.3+Ax.sup.2+x , for some field elements A, B chosen from K where B(A.sup.2−4)≠0. For more information on Montgomery curves, refer to the publication .
7.8 Goppa Code Operations
[0119] Goppa codes are covered in Chapter 8 of reference . This section summarizes how Goppa codes and the mathematical operations described below can used in a public-key cryptosystem, conceived by McEliece
. As of this time, this McEliece public-key cryptosystem is considered resistant to known quantum computing algorithms.
[0120] Corresponding to each irreducible polynomial of degree t over GF(2.sup.m), there exists a binary irreducible Goppa code of length n=2.sup.m, such that the Goppa code's dimension k≥n−tm. Furthermore, this Goppa code is capable of correcting any pattern with t or fewer errors. Moreover, there exists a fast algorithm for decoding these Goppa codes: the run time is O(nt). This fast algorithm is called Patterson's algorithm. See problem 8.18 in reference .
[0121] Suppose that the information system chooses a large enough value of n and t, and then randomly selects an irreducible polynomial of degree t over GF(2.sup.m). The value
is close to the probability that a randomly selected polynomial of degree t is irreducible. There is a fast algorithm for testing irreducibility, shown in chapter 6 of reference . Next, the information system (Alice) computes a k×n generator matrix G for the code which is canonical, for example, row-reduced echelon form.
[0122] After generating G, Alice's information system scrambles G by randomly selecting a dense k×k nonsingular matrix S and randomly selecting an n×n permutation matrix P. Next, Alice's information system computes G′=S*G*P, where * represents matrix multiplication. The result G′ generates a linear code with the same rate and minimum distance as the code generated by G. Matrix G′ is called the public generator matrix and acts as Alice's public key.
[0123] Alice transmits her public key G′ to Bob. Bob is able to encrypt his plaintext data using the following encryption algorithm, along with Alice's public key G′.
[0124] McEliece Encryption Algorithm. [0125] 1. Bob divides the plaintext data into k-bit blocks. [0126] 2. Suppose u is a plaintext block that Bob wishes to securely send to Alice. Bob computes the vector x=u*G′+z, where G′ is a public generator matrix, and z is a randomly generated random vector of length n and weight t. Bob keeps z local. [0127] 3. Bob transmits encrypted data x to Alice.
[0128] Alice can efficiently recover u by performing the following decryption algorithm.
[0129] McEliece Decryption Algorithm. [0130] 1. Alice computes x′=x*P.sup.−1, where P.sup.−1 is the inverse of permutation matrix P. [0131] 2. x′ is a codeword for the Goppa code previously chosen. Alice executes Patterson's algorithm to help compute u′=u*S [0132] 3. Alice recovers u by computing u=u′*S.sup.−1, where S.sup.−1 is the inverse matrix of the nonsingular matrix S, randomly selected by her information system.
7.9 Lattice Operations
[0133] This section describes lattices and how public keys can be computed from mathematical operations based on lattices. In some embodiments, the binary operation of vector addition on a lattice makes the lattice into a commutative group. The symbol represents the real numbers. The symbol
represents the integers.
[0134] Let L be subset of points of the vector space .sup.n that contains the origin (0, 0, . . . , 0). Then the set L is a lattice if it satisfies the following two conditions. [0135] 1. L is a group with vector addition as its binary operation. [0136] 2. There exists an r>0, such that for each point x in L, the open ball with center x and radius r contains no other points of L besides x.
[0137] It is well-known that if L is a lattice in an n-space (n-dimensional vector space) then there exists k linearly independent vectors v.sub.1, v.sub.2 . . . v.sub.k with k≤n such that L consists of all points of the form
m.sub.1v.sub.1+m.sub.2v.sub.2+ . . . +m.sub.kv.sub.k
where each m.sub.i is an integer.
[0138] Let .sub.q.sup.m×n be the set of all n rows of m tuples of integers modulo q. The following math operations make up a public cryptographic system, called LWE (i.e., Learning with Errors) based on lattices. The errors are assigned according to the noise distribution χ such that
with high probability.
[0139] LWE Key-Pair Generation. [0140] 1. n is the input parameter for Alice. [0141] 2. A in .sub.q.sup.m×n is randomly selected by Alice and is open to the public. A is an n×m matrix with entries in
.sub.q, selected according to a uniform distribution. [0142] 3. Alice selects e in
.sub.q.sup.m, according to a uniform distribution. [0143] 4. Alice's secret s is randomly selected in
.sub.q.sup.n, according to a uniform distribution. [0144] 5. Alice's key pair is (p, s), with public key p=(A, s.sup.T*A+e.sup.T). Note s.sup.T*A is vector s.sup.T multiplied by matrix A. Expression s.sup.T is the transpose of vector s. Expression e.sup.T is the transpose of vector e.
[0145] LWE Encryption with the Public Key. [0146] 1. Bob receives as input Alice's public key (A, b.sup.T) and plaintext message m in {0, 1}. [0147] 2. Bob randomly samples m-bit vector r in {0, 1}.sup.m and computes ciphertext
7.10 Multiparty Key Exchange
[0148] Multiparty Process 1. A 4-Party Key Exchange [0149] Step 1. Alice, Bob, Haley and Fred agree on a common generator g in commutative group (G, *). [0150] Alice, Bob, Haley and Fred agree on a shared secret transformation function Γ. [0151] Shared secret transformation function Γ maps a shared secret to a multiparty private key. [0152] Step 2. Alice generates her private key a. [0153] Bob generates his private key b. [0154] Haley generates her private key h. [0155] Fred generates his private key f. [0156] Step 3. Haley uses commutative group operation * to compute her public key g.sup.h from her private key h and generator g. [0157] Alice computes her public key g.sup.a from her private key a. [0158] Bob computes his public key g.sup.b from his private key b. [0159] Fred computes his public key g.sup.f from his private key f. [0160] Step 4. Fred sends his public key g.sup.f to Haley. [0161] Bob sends his public key g.sup.b to Alice. [0162] Alice sends her public key g.sup.a to Bob. [0163] Haley sends her public key g.sup.h to Fred. [0164] Step 5. Bob receives Alice's public key g.sup.a. [0165] Haley receives Fred's public key g.sup.f. [0166] Fred receives Haley's public key g.sup.h. [0167] Alice receives Bob's public key g.sup.b. [0168] Step 6. Fred computes shared secret g.sup.hf with private key f and Haley's public key. [0169] Alice computes shared secret g.sup.ba with private key a and Bob's public key. [0170] Haley computes shared secret g.sup.fh with private key h and Fred's public key. [0171] Bob computes shared secret g.sup.ab with private key b and Bob's public key. [0172] Step 7. Bob transforms his shared secret g.sup.ab to multiparty private key α.sub.b=Γ(g.sup.ab). [0173] Fred transforms his shared secret g.sup.hf to multiparty private key η.sub.f=Γ(g.sup.hf). [0174] Alice transforms her shared secret g.sup.ba to multiparty private key β.sub.a=Γ(g.sup.ba). [0175] Haley transforms her shared secret g.sup.fh to multiparty private key ε.sub.h=Γ(g.sup.fh). [0176] Step 8. Bob computes his multiparty public key g.sup.α.sup.
[0188] In an embodiment, Γ is a Turing computable function. Because Γ is a function, Bob's multiparty private key α.sub.b=Γ(g.sup.ab) equals Alice's multiparty private key β.sub.a=Γ(g.sup.ba). Similarly, Haley's multiparty private key ε.sub.h=Γ(g.sup.fh) equals Fred's multiparty private key η.sub.f=Γ(g.sup.hf). Because the multiparty private keys satisfy α.sub.b=β.sub.a and ε.sub.h=η.sub.f and G is a commutative group, the resulting 4 shared secrets are equal: g.sup.β.sup.
[0189]
[0190] In an embodiment of step 9, Bob sends multiparty public key g.sup.α.sup.
[0191] In an embodiment of step 9, Haley sends multiparty public key g.sup.ε.sup.
[0192] In an embodiment of step 9, Alice sends multiparty public key g.sup.β.sup.
[0193] In an embodiment of step 9, Fred sends multiparty public key g.sup.η.sup.
[0194] In an embodiment, shared secret transformation function Γ, executed in private key instructions 124, is implemented with a MAC (e.g., HMAC or
) or one-way hash function and then a projection function. The projection function assures that the resulting multiparty private key has the appropriate number of bits with respect to group (G, *).
[0195] In an embodiment of multiparty process Alice, Bob, Haley and Fred's steps are performed in receiving/sending machine 122. In an embodiment, each of Alice, Bob, Fred and Haley's non-deterministic generators 942 (
[0196] In an embodiment of multiparty process Alice's shared secret instructions 130 (
[0197] In an embodiment of multiparty process Bob's shared secret instructions 130 (
[0198] In an embodiment of multiparty process Fred's shared secret instructions 130 (
[0199] In an embodiment of multiparty process Haley's shared secret instructions 130 (
[0200] In an embodiment of multiparty process Alice, Bob, Haley and Fred's steps are performed in receiving machine 112 by multiparty receiving instructions 116. In an embodiment of multiparty process
Alice, Bob, Haley and Fred's steps are performed in sending machine 102 by multiparty sending instructions 116.
[0201] In some embodiments of multiparty process private key instructions 124, multiparty public key instructions 126 and shared secret instructions 130 execute elliptic curve computations over a finite field; in other words, (G, *) is an elliptic curve group. In other embodiments of process private key instructions 124, multiparty public key instructions 126 and shared secret instructions 130 are computed with RSA cryptography. In some embodiments, private key instructions 124, multiparty public key instructions 126 and shared secret instructions 130 compute McEliece cryptography
based on Goppa codes
.
[0202] Multiparty Process 2. A n-Party Key Exchange [0203] Step 1. n parties P.sub.1, P.sub.2, . . . , P.sub.n agree on generator g in commutative group (G, *). [0204] Parties P.sub.1, P.sub.2, . . . , P.sub.n agree on a shared secret transformation function Γ. [0205] Shared secret transformation function Γ maps a shared secret to a multiparty private key. [0206] Step 2. Party P.sub.1 generates her private key a.sub.1. [0207] Party P.sub.2 generates her private key a.sub.2. [0208] . . . [0209] Party P.sub.n generates her private key a.sub.n. [0210] Step 3. Party P.sub.1 uses commutative group operation * to compute her public key g.sup.a.sup.
[0255] The expression [x] is the smallest integer greater than x. For example, [51/10]=6. The n-party exchange description assumes the number of parties n is even. When n is odd, the multiparty exchange is similar.
[0256] In embodiments of multiparty processes and
generator g is an element of a commutative group (G, *) with a huge order. In some embodiments, G is a cyclic group and the number of elements in G is a prime number. In an embodiment, generator g has an order o(g)>10.sup.80. In another embodiment, generator g has an order o(g) greater than 10.sup.1000.
[0257] In an embodiment of multiparty process party P.sub.i's non-deterministic generator 942 produces input for private key instructions 124 which compute private key a.sub.i. In an embodiment, party P.sub.i's multiparty public key instructions 126 compute her public key as g.sup.a.sup.
party P.sub.i's steps are performed in receiving machine 112. In an embodiment of multiparty process
party P.sub.i's steps are performed in sending machine 102.
[0258] In some embodiments of multiparty process private key instructions 124, multiparty public key instructions 126 and shared secret instructions 130 execute elliptic curve computations over a finite field; in other words, (G, *) is an elliptic curve group. In other embodiments of multiparty process private key instructions 124, multiparty public key instructions 126 and shared secret instructions 130 are computed with RSA cryptography. In some embodiments, private key instructions 124, multiparty public key instructions 126 and shared secret instructions 130 compute McEliece cryptography
, based on Goppa codes
.
[0259] In some embodiments of multiparty process party P.sub.1 instructions are executed inside of machine 210, as shown in
parties P.sub.1, P.sub.2, . . . P.sub.n transmit their public keys across network 212, as shown in
7.11 Secure Conference Call
[0260] In an embodiment of multiparty process or
three or more parties make a voice or video conference call so that any outsiders may not listen or eavesdrop on their voice conversation. Encryption/decryption instructions 134 encrypt video and voice data before it is transmitted between the conference call parties. In an embodiment, encryption/decryption instructions are executed inside of mobile phone 400 and mobile phone 500, as shown in
[0261] In an embodiment, shared secret key(s) 132 stores the shared secret α.sub.1,2, . . . ,n established between parties P.sub.1, P.sub.2, . . . , P.sub.n. In an embodiment, as shown in
7.12 Secure Self-Driving Vehicles
[0262] In some embodiments of multiparty process a multiparty key exchange can help protect a network of autonomous self-driving automobiles, trucks or flying vehicles. As shown in
and transmits multiparty public keys to other self-driving vehicles and vice versa to establish one or more shared secrets between all valid self-driving vehicles. In some embodiments, the shared secret(s) established by the valid self-driving vehicles helps prevent a rogue vehicle or rogue communication from an unauthorized vehicle or unauthorized person, or unauthorized computer from subverting the communication or driving directions of the self-driving vehicles. This can help prevent catastrophic events such as two self-driving vehicles crashing due to subverted communications and/or a self-driving vehicle hitting one or more pedestrians. In some instances, an unauthorized computer may attempt to transmit malware that is installed as a software update, such that the malware subverts the driving instructions executed by processor system 258 (
[0263] In an embodiment, shared secret key(s) 132 stores the shared secret(s) α.sub.1,2, . . . ,n established between parties P.sub.1, P.sub.2, . . . , P.sub.n. Transformation function Γ maps α.sub.1,2, . . . ,n to a shared symmetric cryptographic key and a shared authentication key among parties P.sub.1, P.sub.2, . . . , P.sub.n. Using encryption/decryption instructions 134, parties P.sub.1, P.sub.2, . . . , P.sub.n encrypt each vehicle's data and communications with the symmetric cryptographic key and sign the data and communications with the authentication key before sending them to the other self-driving vehicles via transmission path 110.
[0264] Although the invention(s) have been described with reference to specific embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the true spirit and scope of the invention. In addition, modifications may be made without departing from the essential teachings of the invention.
REFERENCES
[0265] [1] Dan Boneh, Craig Gentry and Brent Waters. Collusion Resistant Broadcast Encryption With Short Ciphertexts and Private Keys. [0266] [2] Simon Kochen and Ernst P. Specker. The Problem of Hidden Variables in Quantum Mechanics. Journal of Mathematics and Mechanics (now Indiana Univ. Math Journal) 17 No. 1, 59-87, 1967. [0267] [3] John Conway and Simon Kochen. The Strong Free Will Theorem. Notices of the American Mathematical Society. 56(2), 226-232, February 2009. [0268] [4] Alan M. Turing. On computable numbers, with an application to the Entscheidungsproblem. Proc. London Math. Soc. Series 2 42 (Parts 3 and 4), 230-265, 1936. A correction, ibid. 43, 544-546, 1937. [0269] [5] Wikipedia. Transmission Control Protocol/Internet Protocol. [0270] [6] Stephen Cook. The P VS NP Problem.
[0271] [7] Klint Finley. Chinese Supercomputer Is Still the World's Most Powerful. Wired Magazine. Nov. 18, 2013. [0272] [8] A. F. Webster and S. E. Tavares. On the Design of S-Boxes. Advances in Cryptology. CRYPTO 85 Proceedings. LNCS 218. Springer, 523-534, 1986. [0273] [9] Mihir Bellare, Ran Canetti and Hugo Krawczyk. Keying Hash Functions for Message Authentication. Advances in Cryptology—Crypto 96 Proceedings. LNCS 1109, N. Koblitz ed., Springer, 1996. [0274] [10] Guido Bertoni, Joan Daemen, Michael Peeters, Gilles Van Assche. Keccak Reference 3.0 2011.
[0275] [11] Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn, Christian Winnerlein. BLAKE.
[0276] [12] Praveen Gauravaram, Lars Knudsen, Krystian Matusiewicz, Florian Mendel, Christian Rechberger, Martin Schläffer, and Soren S. Thomsen. Grostl—a SHA-3 candidate.
[0277] [13] Hongjun Wu. The Hash Function JH. 2011.
[0278] [14] Niels Ferguson, Stefan Lucks, Bruce Schneier, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas, Jesse Walker. The Skein Hash Function Family. 2010.
[0279] [15] NIST. FIPS-180-2: Secure Hash Standard, August 2002.
[0280] [16] Mark Wegman and J. Lawrence Carter. New Hash Functions and Their Use in Authentication and Set Equality. Journal of Computer and System Sciences. 22, 265-279, 1981. [0281] [17] E. R. Berlekamp. Algebraic Coding Theory. New York, McGraw-Hill, 1968. [0282] [18] L. K. Grover. A fast quantum mechanical algorithm for database search. Proceedings of the 28th Annual ACM Symposium on the Theory of Computing. May 1996. [0283] [19] D. Bernstein. Grover vs. McEliece. Post-Quantum Cryptography. LNCS 6061, Springer, 73-80, 2010. [0284] [20] Robert J. McEliece. The Theory of Information and Coding. Reading, MA, Addison-Wesley, 1977. [0285] [21] Robert J. McEliece. A public-key cryptosystem based on algebraic coding theory, JPL DSN Progress Report 42-44, pages 114-116, 1978.
[0286] [22] Sherman Stein and Sandor Szabo. Algebra and Tiling. Homomorphisms in the Service of Geometry. Mathematical Association of America, 1994. [0287] [23] R. L. Rivest, A. Shamir, and L. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM. 21, 120-126, 1978. [0288] [24] Joseph H. Silverman and John Tate. Rational Points on Elliptic Curves. Springer-Verlag, 1992. [0289] [25] Harold Edwards. A normal form for elliptic curves. Bulletin of the American Mathematical Society. 44: 393-422, April, 2007. [0290] [26] Peter Montgomery. Speeding the Pollard and Elliptic Curve Methods of Factorization. Mathematics of Computation 48 (177): 243-264, 1987. [0291] [27] A. J. Menezes, P. C. van Oorshot, and S. A. Vanstone. Handbook of Applied Cryptography. CRC Press, NY, 1997. [0292] [28] Serge Vaudenay. Secure Communications over Insecure Channels Based on Short Authenticated Strings. Advances in Cryptology—CRYPTO 2005. 309-326, 2005.