<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=78.50.89.223</id>
	<title>formulasearchengine - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=78.50.89.223"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/wiki/Special:Contributions/78.50.89.223"/>
	<updated>2026-08-03T16:23:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.47.0-wmf.7</generator>
	<entry>
		<id>https://en.formulasearchengine.com/w/index.php?title=Coordinate_conditions&amp;diff=23488</id>
		<title>Coordinate conditions</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/w/index.php?title=Coordinate_conditions&amp;diff=23488"/>
		<updated>2013-12-29T21:39:04Z</updated>

		<summary type="html">&lt;p&gt;78.50.89.223: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In cryptography, the &#039;&#039;&#039;Password Authenticated Key Exchange by Juggling&#039;&#039;&#039; (or J-PAKE) is a [[password-authenticated key agreement]] protocol.&amp;lt;ref&amp;gt;F. Hao, P. Ryan. [http://grouper.ieee.org/groups/1363/Research/contributions/hao-ryan-2008.pdf Password Authenticated Key Exchange by Juggling]. &#039;&#039;Proceedings of the 16th International Workshop on Security Protocols, 2008.&amp;lt;/ref&amp;gt; This technique allows two parties to establish private and authenticated communication solely based  on their shared (low-entropy) password without requiring a [[Public Key Infrastructure]]. It provides mutual authentication to the key exchange, a feature that is lacking in the [[Diffie-Hellman key exchange]] protocol. The authors suggest that J-PAKE may be helpful in avoiding patents in the field.&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Two parties, Alice and Bob, agree on a group &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; with generator &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; of prime order &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; in which the discrete log problem is hard. Typically a [[Schnorr group]] is used. In general, J-PAKE can use any prime order group that is suitable for public key cryptography, including [[Elliptic curve cryptography]]. Let &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; be their shared (low-entropy) secret, which can be a password or a hash of a password (&amp;lt;math&amp;gt;s \neq 0&amp;lt;/math&amp;gt;). The protocol executes in two rounds.&lt;br /&gt;
&lt;br /&gt;
;Round 1: Alice selects &amp;lt;math&amp;gt;x_1 \in_R [0, q-1]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x_2 \in_R (0, q-1]&amp;lt;/math&amp;gt; and sends out &amp;lt;math&amp;gt;g^{x_1}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;g^{x_2}&amp;lt;/math&amp;gt; together with the [[Zero-knowledge proofs]] (using for example [[Schnorr signature]]) for the proof of the exponents &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt;. Similarly, Bob selects &amp;lt;math&amp;gt;x_3 \in_R [0, q-1]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x_4 \in_R (0, q-1]&amp;lt;/math&amp;gt; and sends out &amp;lt;math&amp;gt;g^{x_3}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;g^{x_4}&amp;lt;/math&amp;gt; together with the [[Zero-knowledge proofs]] for the proof of the exponents &amp;lt;math&amp;gt;x_3&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;x_4&amp;lt;/math&amp;gt;. The above communication can be completed in one round as neither party depends on the other. When it finishes, Alice and Bob verify the received [[Zero-knowledge proofs]] and also check &amp;lt;math&amp;gt;g^{x_2}, g^{x_4} \neq 1&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
;Round 2: Alice sends out &amp;lt;math&amp;gt;A = g^{(x_1 + x_3 + x_4) x_2 s}&amp;lt;/math&amp;gt; and a [[Zero-knowledge proof]] for the proof of the exponent &amp;lt;math&amp;gt;x_2 s&amp;lt;/math&amp;gt;. (Note Alice actually derives a new public key using &amp;lt;math&amp;gt;g^{x_1 + x_3 + x_4}&amp;lt;/math&amp;gt; as the generator). Similarly, Bob sends out &amp;lt;math&amp;gt;B = g^{(x_1 + x_2 + x_3) x_4 s}&amp;lt;/math&amp;gt; and a [[Zero-knowledge proof]] for the proof of the exponent &amp;lt;math&amp;gt;x_4 s&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After Round 2, Alice computes &amp;lt;math&amp;gt;K = (B/g^{x_2 x_4 s})^{x_2} = g^{(x_1 + x_3) x_2 x_4 s}&amp;lt;/math&amp;gt;. Similarly, Bob computes &amp;lt;math&amp;gt;K = (A/g^{x_2 x_4 s})^ {x_4} = g^{(x_1 + x_3) x_2 x_4 s}&amp;lt;/math&amp;gt;. With the same keying material &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;, Alice and Bob can derive a session key using a [[Cryptographic hash function]]: &amp;lt;math&amp;gt;\kappa = H(K)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The two-round J-PAKE protocol is completely symmetric. This helps significantly simplify the security analysis. For example, the proof that one party does not leak any password information in the data exchange must hold true for the other party based on the symmetry. This reduces the number of the needed security proofs by half. &lt;br /&gt;
&lt;br /&gt;
In practice, it is more likely to implement J-PAKE in three flows since one party shall normally take the initiative. This can be done trivially without loss of security. Suppose Alice initiates the communication by sending to Bob: &amp;lt;math&amp;gt;g^{x_1}, g^{x_2}&amp;lt;/math&amp;gt; and Zero-knowledge proofs. Then Bob replies with: &amp;lt;math&amp;gt;g^{x_3}, g^{x_4}, B = g^{(x_1 + x_2 + x_3) x_4 s}&amp;lt;/math&amp;gt; and Zero-knowledge proofs. Finally, Alice sends to Bob: &amp;lt;math&amp;gt;A = g^{(x_1 + x_3 + x_4) x_2 s}&amp;lt;/math&amp;gt; and a Zero-knowledge proof. Both parties can now derive the same session key.&lt;br /&gt;
&lt;br /&gt;
Depending on the application requirement, Alice and Bob may perform an optional key confirmation step. There are several ways to do it. A simple method described in [[SPEKE (cryptography)|SPEKE]] works as follows: Alice sends to Bob &amp;lt;math&amp;gt;H(H(\kappa))&amp;lt;/math&amp;gt;, and then Bob replies with &amp;lt;math&amp;gt;H(\kappa)&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;{{cite journal | first = David | last = Jablon | title = Strong Password-Only Authenticated Key Exchange | journal = Computer Communication Review | publisher = ACM SIGCOMM | volume = 26 | issue = 5 | pages = 5–26 |date=October 1996 | url =  http://www.jablon.org/passwordlinks.html#Jab96 | doi = 10.1145/242896.242897}}&amp;lt;/ref&amp;gt; Alternatively,  Alice and Bob can realize explicit key confirmation by using the newly constructed session key to encrypt a known value (or a random challenge). [[Encrypted key exchange|EKE]], [[Kerberos (protocol)|Kerberos]] and [[Needham-Schroeder]] all attempt to provide explicit key confirmation by exactly this method.&lt;br /&gt;
&lt;br /&gt;
==Security properties==&lt;br /&gt;
&lt;br /&gt;
The J-PAKE protocol is provably secure, fulfilling the following properties&amp;lt;ref&amp;gt;F. Hao, P. Ryan. [http://eprint.iacr.org/2010/190.pdf J-PAKE: Authenticated Key Exchange Without PKI]. &#039;&#039;Springer Transactions on Computational Science XI, Special Issue on Security in Computing, Part II, Vol. 6480, pp. 192-206, 2010.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
# Off-line dictionary attack resistance - It does not leak any password verification information to a passive/active attacker.&lt;br /&gt;
# Forward secrecy - It produces session keys that remain secure even when the password is later disclosed.&lt;br /&gt;
# Known-key security - It prevents a disclosed session key from affecting the security of other sessions.&lt;br /&gt;
# On-line dictionary attack resistance - It limits an active attacker to test only one password per protocol execution.&lt;br /&gt;
&lt;br /&gt;
==The protocol design==&lt;br /&gt;
&lt;br /&gt;
The J-PAKE protocol is designed by combining random public keys in such a structured way to achieve a vanishing effect if both parties supplied exactly the same passwords. This is somehow similar to the [[Anonymous veto network]] protocol design. The essence of the idea, however, can be traced back to [[David Chaum]]&#039;s original [[dining cryptographers problem | Dining Cryptographers]] network protocol,&amp;lt;ref&amp;gt;David Chaum. [http://dx.doi.org/10.1007/BF00206326  The Dining Cryptographers Problem: Unconditional Sender and Recipient Untraceability] Journal of Cryptology, vol. 1, No, 1, pp. 65-75,  1988&amp;lt;/ref&amp;gt; where binary bits are combined in a structured way to achieve a vanishing effect.&lt;br /&gt;
&lt;br /&gt;
==The implementation==&lt;br /&gt;
&lt;br /&gt;
J-PAKE has been implemented in [[OpenSSL]] and [[OpenSSH]] as an experimental authentication protocol. It has also been implemented in [[Network Security Services|NSS]] and is used by [[Firefox Sync]].  Since February 2013, J-PAKE has been added to the lightweight API in [[Bouncycastle]] (1.48 and onwards).&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.links.org/?p=393 A prototype demo of J-PAKE in C]&lt;br /&gt;
* [http://haofeng66.googlepages.com/JPAKEDemo.java A prototype demo of J-PAKE in Java]&lt;br /&gt;
* [http://homepages.cs.ncl.ac.uk/feng.hao/files/EllipticCurveJPAKEDemo.java An example of implementing J-PAKE using Elliptic Curve]&lt;br /&gt;
* [http://www.lightbluetouchpaper.org/2008/05/29/j-pake J-PAKE: From Dining Cryptographers to Jugglers]&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Password Authenticated Key Exchange By Juggling}}&lt;br /&gt;
[[Category:Cryptography]]&lt;br /&gt;
[[Category:Cryptographic protocols]]&lt;/div&gt;</summary>
		<author><name>78.50.89.223</name></author>
	</entry>
</feed>