<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Elliptic_Curve_Digital_Signature_Algorithm</id>
	<title>Elliptic Curve Digital Signature Algorithm - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Elliptic_Curve_Digital_Signature_Algorithm"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Elliptic_Curve_Digital_Signature_Algorithm&amp;action=history"/>
	<updated>2026-05-04T14:01:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Elliptic_Curve_Digital_Signature_Algorithm&amp;diff=4860633&amp;oldid=prev</id>
		<title>imported&gt;Paul2520: Rescuing 15 sources and tagging 0 as dead.) #IABot (v2.0.9.5</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Elliptic_Curve_Digital_Signature_Algorithm&amp;diff=4860633&amp;oldid=prev"/>
		<updated>2025-07-22T15:01:23Z</updated>

		<summary type="html">&lt;p&gt;Rescuing 15 sources and tagging 0 as dead.) #IABot (v2.0.9.5&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:01, 22 July 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l48&quot;&gt;Line 48:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 48:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Calculate &amp;lt;math&amp;gt;e = \textrm{HASH}(m)&amp;lt;/math&amp;gt;.  (Here HASH is a [[cryptographic hash function]], such as [[SHA-2]], with the output converted to an integer.)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Calculate &amp;lt;math&amp;gt;e = \textrm{HASH}(m)&amp;lt;/math&amp;gt;.  (Here HASH is a [[cryptographic hash function]], such as [[SHA-2]], with the output converted to an integer.)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Let &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; be the &amp;lt;math&amp;gt;L_n&amp;lt;/math&amp;gt; leftmost bits of &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;L_n&amp;lt;/math&amp;gt; is the bit length of the group order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.  (Note that &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; can be &#039;&#039;greater&#039;&#039; than &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; but not &#039;&#039;longer&#039;&#039;.&amp;lt;ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Let &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; be the &amp;lt;math&amp;gt;L_n&amp;lt;/math&amp;gt; leftmost bits of &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;L_n&amp;lt;/math&amp;gt; is the bit length of the group order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.  (Note that &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; can be &#039;&#039;greater&#039;&#039; than &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; but not &#039;&#039;longer&#039;&#039;.&amp;lt;ref&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Cite web |url=&lt;/ins&gt;http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|title=&lt;/ins&gt;NIST FIPS 186-4, July 2013, pp. 19 and 26 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=March 17, 2014 |archive-date=December 27, 2016 |archive-url=https://web.archive.org/web/20161227093019/http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf |url-status=live }}&lt;/ins&gt;&amp;lt;/ref&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf NIST FIPS 186-4, July 2013, pp. 19 and 26&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;&amp;lt;/ref&amp;gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Select a &amp;#039;&amp;#039;&amp;#039;cryptographically secure random&amp;#039;&amp;#039;&amp;#039; integer &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; from &amp;lt;math&amp;gt;[1, n-1]&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Select a &amp;#039;&amp;#039;&amp;#039;cryptographically secure random&amp;#039;&amp;#039;&amp;#039; integer &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; from &amp;lt;math&amp;gt;[1, n-1]&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Calculate the curve point &amp;lt;math&amp;gt;(x_1, y_1) = k \times G&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Calculate the curve point &amp;lt;math&amp;gt;(x_1, y_1) = k \times G&amp;lt;/math&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l60&quot;&gt;Line 60:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This implementation failure was used, for example, to extract the signing key used for the [[PlayStation 3]] gaming-console.&amp;lt;ref&amp;gt;[https://events.ccc.de/congress/2010/Fahrplan/attachments/1780_27c3_console_hacking_2010.pdf Console Hacking 2010 - PS3 Epic Fail] {{Webarchive|url=https://web.archive.org/web/20141215140847/http://events.ccc.de/congress/2010/Fahrplan/attachments/1780%5F27c3%5Fconsole%5Fhacking%5F2010.pdf |date=December 15, 2014 }}, page 123–128&amp;lt;/ref&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This implementation failure was used, for example, to extract the signing key used for the [[PlayStation 3]] gaming-console.&amp;lt;ref&amp;gt;[https://events.ccc.de/congress/2010/Fahrplan/attachments/1780_27c3_console_hacking_2010.pdf Console Hacking 2010 - PS3 Epic Fail] {{Webarchive|url=https://web.archive.org/web/20141215140847/http://events.ccc.de/congress/2010/Fahrplan/attachments/1780%5F27c3%5Fconsole%5Fhacking%5F2010.pdf |date=December 15, 2014 }}, page 123–128&amp;lt;/ref&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another way ECDSA signature may leak private keys is when &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is generated by a faulty [[random number generator]]. Such a failure in random number generation caused users of Android Bitcoin Wallet to lose their funds in August 2013.&amp;lt;ref&amp;gt;{{cite web|url=https://bitcoin.org/en/alert/2013-08-11-android|title=Android Security Vulnerability|access-date=February 24, 2015}}&amp;lt;/ref&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another way ECDSA signature may leak private keys is when &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is generated by a faulty [[random number generator]]. Such a failure in random number generation caused users of Android Bitcoin Wallet to lose their funds in August 2013.&amp;lt;ref&amp;gt;{{cite web|url=https://bitcoin.org/en/alert/2013-08-11-android|title=Android Security Vulnerability|access-date=February 24, 2015&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|archive-date=April 7, 2019|archive-url=https://web.archive.org/web/20190407170847/https://bitcoin.org/en/alert/2013-08-11-android|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To ensure that &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is unique for each message, one may bypass random number generation completely and generate deterministic signatures by deriving &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; from both the message and the private key.&amp;lt;ref&amp;gt;{{cite tech report|url=https://www.rfc-editor.org/rfc/rfc6979.html|title=RFC 6979 - Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)|year=2013 |doi=10.17487/RFC6979 |access-date=February 24, 2015|last1=Pornin |first1=T. |doi-access=free }}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To ensure that &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is unique for each message, one may bypass random number generation completely and generate deterministic signatures by deriving &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; from both the message and the private key.&amp;lt;ref&amp;gt;{{cite tech report|url=https://www.rfc-editor.org/rfc/rfc6979.html|title=RFC 6979 - Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)|year=2013 |doi=10.17487/RFC6979 |access-date=February 24, 2015|last1=Pornin |first1=T. |doi-access=free }}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l80&quot;&gt;Line 80:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 79:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The signature is valid if &amp;lt;math&amp;gt;r \equiv x_1 \pmod{n}&amp;lt;/math&amp;gt;, invalid otherwise.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# The signature is valid if &amp;lt;math&amp;gt;r \equiv x_1 \pmod{n}&amp;lt;/math&amp;gt;, invalid otherwise.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note that an efficient implementation would compute inverse &amp;lt;math&amp;gt;s^{-1}\,\bmod\,n&amp;lt;/math&amp;gt; only once. Also, using Shamir&#039;s trick, a sum of two scalar multiplications &amp;lt;math&amp;gt;u_1 \times G + u_2 \times Q_A&amp;lt;/math&amp;gt; can be calculated faster than two scalar multiplications done independently.&amp;lt;ref&amp;gt;{{cite web | url=http://www.lirmm.fr/~imbert/talks/laurent_Asilomar_08.pdf | title=The Double-Base Number System in Elliptic Curve Cryptography | access-date=22 April 2014}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note that an efficient implementation would compute inverse &amp;lt;math&amp;gt;s^{-1}\,\bmod\,n&amp;lt;/math&amp;gt; only once. Also, using Shamir&#039;s trick, a sum of two scalar multiplications &amp;lt;math&amp;gt;u_1 \times G + u_2 \times Q_A&amp;lt;/math&amp;gt; can be calculated faster than two scalar multiplications done independently.&amp;lt;ref&amp;gt;{{cite web | url=http://www.lirmm.fr/~imbert/talks/laurent_Asilomar_08.pdf | title=The Double-Base Number System in Elliptic Curve Cryptography | access-date=22 April 2014 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| archive-date=July 26, 2011 | archive-url=https://web.archive.org/web/20110726150643/http://www.lirmm.fr/~imbert/talks/laurent_Asilomar_08.pdf | url-status=live &lt;/ins&gt;}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Correctness of the algorithm===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Correctness of the algorithm===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l163&quot;&gt;Line 163:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 162:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Security==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Security==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In December 2010, a group calling itself &#039;&#039;fail0verflow&#039;&#039; announced the recovery of the ECDSA private key used by [[Sony]] to sign software for the [[PlayStation 3]] game console. However, this attack only worked because Sony did not properly implement the algorithm, because &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; was static instead of random. As pointed out in the [[#Signature generation algorithm|Signature generation algorithm]] section above, this makes &amp;lt;math&amp;gt;d_A&amp;lt;/math&amp;gt; solvable, rendering the entire algorithm useless.&amp;lt;ref&amp;gt;{{Cite news|last=Bendel|first=Mike|title=Hackers Describe PS3 Security As Epic Fail, Gain Unrestricted Access|publisher=Exophase.com|date=2010-12-29|url=http://exophase.com/20540/hackers-describe-ps3-security-as-epic-fail-gain-unrestricted-access/|access-date=2011-01-05}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In December 2010, a group calling itself &#039;&#039;fail0verflow&#039;&#039; announced the recovery of the ECDSA private key used by [[Sony]] to sign software for the [[PlayStation 3]] game console. However, this attack only worked because Sony did not properly implement the algorithm, because &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; was static instead of random. As pointed out in the [[#Signature generation algorithm|Signature generation algorithm]] section above, this makes &amp;lt;math&amp;gt;d_A&amp;lt;/math&amp;gt; solvable, rendering the entire algorithm useless.&amp;lt;ref&amp;gt;{{Cite news|last=Bendel|first=Mike|title=Hackers Describe PS3 Security As Epic Fail, Gain Unrestricted Access|publisher=Exophase.com|date=2010-12-29|url=http://exophase.com/20540/hackers-describe-ps3-security-as-epic-fail-gain-unrestricted-access/|access-date=2011-01-05&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|archive-date=April 7, 2019|archive-url=https://web.archive.org/web/20190407174117/https://www.exophase.com/20540/hackers-describe-ps3-security-as-epic-fail-gain-unrestricted-access/|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On March 29, 2011, two researchers published an [[International Association for Cryptologic Research|IACR]] paper&amp;lt;ref&amp;gt;{{cite web|url=http://eprint.iacr.org/2011/232|title=Cryptology ePrint Archive: Report 2011/232|access-date=February 24, 2015}}&amp;lt;/ref&amp;gt; demonstrating that it is possible to retrieve a TLS private key of a server using [[OpenSSL]] that authenticates with Elliptic Curves DSA over a binary [[Field (mathematics)|field]] via a [[timing attack]].&amp;lt;ref&amp;gt;{{cite web|url=https://www.kb.cert.org/vuls/id/536044|title=Vulnerability Note VU#536044 - OpenSSL leaks ECDSA private key through a remote timing attack|website=www.kb.cert.org}}&amp;lt;/ref&amp;gt; The vulnerability was fixed in OpenSSL 1.0.0e.&amp;lt;ref&amp;gt;{{cite web | url=http://www.openssl.org/news/changelog.html | title=ChangeLog | publisher=OpenSSL Project | access-date=22 April 2014}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On March 29, 2011, two researchers published an [[International Association for Cryptologic Research|IACR]] paper&amp;lt;ref&amp;gt;{{cite web|url=http://eprint.iacr.org/2011/232|title=Cryptology ePrint Archive: Report 2011/232|access-date=February 24, 2015&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|archive-date=December 8, 2018|archive-url=https://web.archive.org/web/20181208115720/https://eprint.iacr.org/2011/232|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt; demonstrating that it is possible to retrieve a TLS private key of a server using [[OpenSSL]] that authenticates with Elliptic Curves DSA over a binary [[Field (mathematics)|field]] via a [[timing attack]].&amp;lt;ref&amp;gt;{{cite web|url=https://www.kb.cert.org/vuls/id/536044|title=Vulnerability Note VU#536044 - OpenSSL leaks ECDSA private key through a remote timing attack|website=www.kb.cert.org&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=May 24, 2011|archive-date=April 7, 2019|archive-url=https://web.archive.org/web/20190407195622/https://www.kb.cert.org/vuls/id/536044/|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt; The vulnerability was fixed in OpenSSL 1.0.0e.&amp;lt;ref&amp;gt;{{cite web | url=http://www.openssl.org/news/changelog.html | title=ChangeLog | publisher=OpenSSL Project | access-date=22 April 2014 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| archive-date=August 9, 2020 | archive-url=https://web.archive.org/web/20200809005201/https://www.openssl.org/news/changelog.html | url-status=live &lt;/ins&gt;}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In August 2013, it was revealed that bugs in some implementations of the [[Java (programming language)|Java]] class [https://docs.oracle.com/javase/10/docs/api/java/security/SecureRandom.html SecureRandom] sometimes generated collisions in the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; value. This allowed hackers to recover private keys giving them the same control over bitcoin transactions as legitimate keys&#039; owners had,  using the same exploit that was used to reveal the PS3 signing key on some [[Android (operating system)|Android]] app implementations, which use Java and rely on ECDSA to authenticate transactions.&amp;lt;ref&amp;gt;{{cite web |title=Android bug batters Bitcoin wallets  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In August 2013, it was revealed that bugs in some implementations of the [[Java (programming language)|Java]] class [https://docs.oracle.com/javase/10/docs/api/java/security/SecureRandom.html SecureRandom] sometimes generated collisions in the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; value. This allowed hackers to recover private keys giving them the same control over bitcoin transactions as legitimate keys&#039; owners had,  using the same exploit that was used to reveal the PS3 signing key on some [[Android (operating system)|Android]] app implementations, which use Java and rely on ECDSA to authenticate transactions.&amp;lt;ref&amp;gt;{{cite web  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| url= https://www.theregister.co.uk/2013/08/12/android_bug_batters_bitcoin_wallets/ |publisher=The Register |date=12 August 2013}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|title=Android bug batters Bitcoin wallets  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|url=https://www.theregister.co.uk/2013/08/12/android_bug_batters_bitcoin_wallets/  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|publisher=The Register  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|date=12 August 2013  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=August 27, 2017 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|archive-date=August 15, 2013 &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|archive-url=https://web.archive.org/web/20130815181104/http://www.theregister.co.uk/2013/08/12/android_bug_batters_bitcoin_wallets &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|url-status=live &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This issue can be prevented by deterministic generation of k, as described by RFC 6979.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This issue can be prevented by deterministic generation of k, as described by RFC 6979.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l175&quot;&gt;Line 175:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 182:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Some concerns expressed about ECDSA:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Some concerns expressed about ECDSA:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &#039;&#039;Political concerns&#039;&#039;: the trustworthiness of [[National Institute of Standards and Technology|NIST]]-produced curves being questioned after revelations were made that the [[National Security Agency|NSA]] willingly inserts [[Backdoor (computing)|backdoors]] into software, hardware components and published standards; well-known cryptographers&amp;lt;ref&amp;gt;{{cite web|url=https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html#c1675929|title=The NSA Is Breaking Most Encryption on the Internet|website=Schneier on Security|first=Bruce|last=Schneier|date=September 5, 2013}}&amp;lt;/ref&amp;gt; have expressed&amp;lt;ref&amp;gt;{{cite web|url=http://safecurves.cr.yp.to/rigid.html|title=SafeCurves: choosing safe curves for elliptic-curve cryptography|date=Oct 25, 2013}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=https://www.hyperelliptic.org/tanja/vortraege/20130531.pdf|title=Security dangers of the NIST curves|first1=Daniel J.|last1=Bernstein|first2=Tanja|last2=Lange|author2-link=Tanja Lange|date=May 31, 2013}}&amp;lt;/ref&amp;gt; doubts about how the NIST curves were designed, and voluntary tainting has already been proved in the past.&amp;lt;ref&amp;gt;{{cite web|url=https://www.schneier.com/blog/archives/2007/11/the_strange_sto.html|title=The Strange Story of Dual_EC_DRBG|website=Schneier on Security|first=Bruce|last=Schneier|date=November 15, 2007}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=http://www.scientificamerican.com/article/nsa-nist-encryption-scandal/|title=NSA Efforts to Evade Encryption Technology Damaged U.S. Cryptography Standard|first=Larry|last=Greenemeier|publisher=Scientific American|date=September 18, 2013}}&amp;lt;/ref&amp;gt; (See also the &#039;&#039;libssh [[curve25519]] introduction&#039;&#039;.&amp;lt;ref&amp;gt;{{cite web|url=https://git.libssh.org/projects/libssh.git/tree/doc/curve25519-sha256@libssh.org.txt#n4|title=curve25519-sha256@libssh.org.txt\doc - projects/libssh.git|website=libssh shared repository}}&amp;lt;/ref&amp;gt;) Nevertheless, a proof that the named NIST curves exploit a rare weakness is still missing.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &#039;&#039;Political concerns&#039;&#039;: the trustworthiness of [[National Institute of Standards and Technology|NIST]]-produced curves being questioned after revelations were made that the [[National Security Agency|NSA]] willingly inserts [[Backdoor (computing)|backdoors]] into software, hardware components and published standards; well-known cryptographers&amp;lt;ref&amp;gt;{{cite web|url=https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html#c1675929|title=The NSA Is Breaking Most Encryption on the Internet|website=Schneier on Security|first=Bruce|last=Schneier|date=September 5, 2013&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=January 11, 2018|archive-date=December 15, 2017|archive-url=https://web.archive.org/web/20171215132353/https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html#c1675929|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt; have expressed&amp;lt;ref&amp;gt;{{cite web|url=http://safecurves.cr.yp.to/rigid.html|title=SafeCurves: choosing safe curves for elliptic-curve cryptography|date=Oct 25, 2013&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=January 11, 2018|archive-date=April 7, 2019|archive-url=https://web.archive.org/web/20190407195617/http://safecurves.cr.yp.to/rigid.html|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=https://www.hyperelliptic.org/tanja/vortraege/20130531.pdf|title=Security dangers of the NIST curves|first1=Daniel J.|last1=Bernstein|first2=Tanja|last2=Lange|author2-link=Tanja Lange|date=May 31, 2013&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=January 11, 2018|archive-date=May 28, 2019|archive-url=https://web.archive.org/web/20190528083030/https://www.hyperelliptic.org/tanja/vortraege/20130531.pdf|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt; doubts about how the NIST curves were designed, and voluntary tainting has already been proved in the past.&amp;lt;ref&amp;gt;{{cite web|url=https://www.schneier.com/blog/archives/2007/11/the_strange_sto.html|title=The Strange Story of Dual_EC_DRBG|website=Schneier on Security|first=Bruce|last=Schneier|date=November 15, 2007&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=January 11, 2018|archive-date=April 23, 2019|archive-url=https://web.archive.org/web/20190423212823/https://www.schneier.com/blog/archives/2007/11/the_strange_sto.html|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=http://www.scientificamerican.com/article/nsa-nist-encryption-scandal/|title=NSA Efforts to Evade Encryption Technology Damaged U.S. Cryptography Standard|first=Larry|last=Greenemeier|publisher=Scientific American|date=September 18, 2013&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=January 11, 2018|archive-date=December 24, 2017|archive-url=https://web.archive.org/web/20171224213856/https://www.scientificamerican.com/article/nsa-nist-encryption-scandal/|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt; (See also the &#039;&#039;libssh [[curve25519]] introduction&#039;&#039;.&amp;lt;ref&amp;gt;{{cite web|url=https://git.libssh.org/projects/libssh.git/tree/doc/curve25519-sha256@libssh.org.txt#n4|title=curve25519-sha256@libssh.org.txt\doc - projects/libssh.git|website=libssh shared repository&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=January 11, 2018|archive-date=March 23, 2019|archive-url=https://web.archive.org/web/20190323030904/https://git.libssh.org/projects/libssh.git/tree/doc/curve25519-sha256@libssh.org.txt#n4|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt;) Nevertheless, a proof that the named NIST curves exploit a rare weakness is still missing.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &#039;&#039;Technical concerns&#039;&#039;: the difficulty of properly implementing the standard, its slowness, and design flaws which reduce security in insufficiently defensive implementations.&amp;lt;ref&amp;gt;{{cite web|url=http://blog.cr.yp.to/20140323-ecdsa.html|title=How to design an elliptic-curve signature system|first=Daniel J.|last=Bernstein|date=March 23, 2014|website=The cr.yp.to blog}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &#039;&#039;Technical concerns&#039;&#039;: the difficulty of properly implementing the standard, its slowness, and design flaws which reduce security in insufficiently defensive implementations.&amp;lt;ref&amp;gt;{{cite web|url=http://blog.cr.yp.to/20140323-ecdsa.html|title=How to design an elliptic-curve signature system|first=Daniel J.|last=Bernstein|date=March 23, 2014|website=The cr.yp.to blog&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|access-date=January 11, 2018|archive-date=March 23, 2014|archive-url=https://web.archive.org/web/20140323220738/http://blog.cr.yp.to/20140323-ecdsa.html|url-status=live&lt;/ins&gt;}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Implementations ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Implementations ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Paul2520</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Elliptic_Curve_Digital_Signature_Algorithm&amp;diff=280205&amp;oldid=prev</id>
		<title>109.61.8.190 at 08:53, 8 May 2025</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Elliptic_Curve_Digital_Signature_Algorithm&amp;diff=280205&amp;oldid=prev"/>
		<updated>2025-05-08T08:53:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Cryptographic&lt;br /&gt;
&lt;br /&gt;
 algorithm for digital signatures}}&lt;br /&gt;
{{Use mdy dates|date=April 2012}}&lt;br /&gt;
{{confused|EdDSA}}&lt;br /&gt;
In [[cryptography]], the &amp;#039;&amp;#039;&amp;#039;Elliptic Curve Digital Signature Algorithm&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;ECDSA&amp;#039;&amp;#039;&amp;#039;) offers a variant of the [[Digital Signature Algorithm]] (DSA) which uses [[elliptic-curve cryptography]].&lt;br /&gt;
&lt;br /&gt;
==Key and signature sizes==&lt;br /&gt;
As with elliptic-curve cryptography in general, the bit [[Key size|size]] of the [[private key]] believed to be needed for ECDSA is about twice the size of the [[security level]], in bits.&amp;lt;ref&amp;gt;{{cite journal&lt;br /&gt;
| title=The Elliptic Curve Digital Signature Algorithm (ECDSA)&lt;br /&gt;
| year=1999&lt;br /&gt;
| first1=Don&lt;br /&gt;
| last1=Johnson&lt;br /&gt;
| first2=Alfred&lt;br /&gt;
| last2=Menezes&lt;br /&gt;
| citeseerx=10.1.1.38.8014&lt;br /&gt;
| journal=Certicom Research. Canada&lt;br /&gt;
}}&amp;lt;/ref&amp;gt; For example, at a security level of 80 bits&amp;amp;mdash;meaning an attacker requires a maximum of about &amp;lt;math&amp;gt;2^{80}&amp;lt;/math&amp;gt; operations to find the private key&amp;amp;mdash;the size of an ECDSA private key would be 160 bits.  On the other hand, the signature size is the same for both DSA and ECDSA: approximately &amp;lt;math&amp;gt;4 t&amp;lt;/math&amp;gt; bits, where &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; is the exponent in the formula &amp;lt;math&amp;gt;2^{t}&amp;lt;/math&amp;gt;, that is, about 320 bits for a security level of 80 bits, which is equivalent to &amp;lt;math&amp;gt;2^{80}&amp;lt;/math&amp;gt; operations.&lt;br /&gt;
&lt;br /&gt;
==Signature generation algorithm==&lt;br /&gt;
Suppose [[Alice and Bob|Alice]] wants to send a signed message to [[Alice and Bob|Bob]]. Initially, they must agree on the curve parameters &amp;lt;math&amp;gt;(\textrm{CURVE}, G, n)&amp;lt;/math&amp;gt;.  In addition to the [[Field_(mathematics)|field]] and equation of the curve, we need &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;, a base point of prime order on the curve; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is the additive order of the point &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter !! &lt;br /&gt;
|-z2*s1)/(r*(s1-s2))&lt;br /&gt;
| CURVE || the elliptic curve field and equation used&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;G&amp;#039;&amp;#039; || elliptic curve base point, a point on the curve that generates a [[Elliptic-curve_cryptography#Domain_parameters|subgroup of large prime order n]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;n&amp;#039;&amp;#039; || integer order of &amp;#039;&amp;#039;G&amp;#039;&amp;#039;, means that &amp;lt;math&amp;gt;n \times G = O&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;O&amp;lt;/math&amp;gt; is the identity element.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;d_A&amp;lt;/math&amp;gt;&lt;br /&gt;
|the private key (randomly selected)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;Q_A&amp;lt;/math&amp;gt;&lt;br /&gt;
|the public key &amp;lt;math&amp;gt;d_A \times G&amp;lt;/math&amp;gt; (calculated by elliptic curve)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&lt;br /&gt;
|the message to send&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; of the base point &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; &amp;#039;&amp;#039;&amp;#039;must be prime&amp;#039;&amp;#039;&amp;#039;. Indeed, we assume that every nonzero element of the [[Ring_(mathematics)|ring]] &amp;lt;math&amp;gt;\mathbb{Z}/n\mathbb{Z}&amp;lt;/math&amp;gt; is invertible, so that &amp;lt;math&amp;gt;\mathbb{Z}/n\mathbb{Z}&amp;lt;/math&amp;gt; must be a [[Field (mathematics)|field]]. It implies that &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; must be prime (cf. [[Bézout&amp;#039;s identity]]).&lt;br /&gt;
&lt;br /&gt;
Alice creates a key pair, consisting of a private key integer &amp;lt;math&amp;gt;d_A&amp;lt;/math&amp;gt;, randomly selected in the interval &amp;lt;math&amp;gt;[1, n-1]&amp;lt;/math&amp;gt;; and a public key curve point &amp;lt;math&amp;gt;Q_A = d_A \times G&amp;lt;/math&amp;gt;. We use &amp;lt;math&amp;gt;\times&amp;lt;/math&amp;gt; to denote [[Elliptic curve point multiplication|elliptic curve point multiplication by a scalar]].&lt;br /&gt;
&lt;br /&gt;
For Alice to sign a message &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, she follows these steps:&lt;br /&gt;
&lt;br /&gt;
# Calculate &amp;lt;math&amp;gt;e = \textrm{HASH}(m)&amp;lt;/math&amp;gt;.  (Here HASH is a [[cryptographic hash function]], such as [[SHA-2]], with the output converted to an integer.)&lt;br /&gt;
# Let &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; be the &amp;lt;math&amp;gt;L_n&amp;lt;/math&amp;gt; leftmost bits of &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;L_n&amp;lt;/math&amp;gt; is the bit length of the group order &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.  (Note that &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; can be &amp;#039;&amp;#039;greater&amp;#039;&amp;#039; than &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; but not &amp;#039;&amp;#039;longer&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;&lt;br /&gt;
[http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf NIST FIPS 186-4, July 2013, pp. 19 and 26]&amp;lt;/ref&amp;gt;)&lt;br /&gt;
# Select a &amp;#039;&amp;#039;&amp;#039;cryptographically secure random&amp;#039;&amp;#039;&amp;#039; integer &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; from &amp;lt;math&amp;gt;[1, n-1]&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Calculate the curve point &amp;lt;math&amp;gt;(x_1, y_1) = k \times G&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Calculate &amp;lt;math&amp;gt;r = x_1\,\bmod\,n&amp;lt;/math&amp;gt;. If &amp;lt;math&amp;gt;r = 0&amp;lt;/math&amp;gt;, go back to step 3.&lt;br /&gt;
# Calculate &amp;lt;math&amp;gt;s = k^{-1}(z + r d_A)\,\bmod\,n&amp;lt;/math&amp;gt;. If &amp;lt;math&amp;gt;s = 0&amp;lt;/math&amp;gt;, go back to step 3.&lt;br /&gt;
# The signature is the pair &amp;lt;math&amp;gt;(r, s)&amp;lt;/math&amp;gt;.  (And &amp;lt;math&amp;gt;(r,-s\,\bmod\,n)&amp;lt;/math&amp;gt; is also a valid signature.)&lt;br /&gt;
&lt;br /&gt;
As the standard notes, it is not only required for &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; to be secret, but it is also crucial to select different &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; for different signatures. Otherwise, the equation in step 6 can be solved for &amp;lt;math&amp;gt;d_A&amp;lt;/math&amp;gt;, the private key: given two signatures &amp;lt;math&amp;gt;(r, s)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;(r, s&amp;#039;)&amp;lt;/math&amp;gt;, employing the same unknown &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; for different known messages &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;m&amp;#039;&amp;lt;/math&amp;gt;, an attacker can calculate &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;z&amp;#039;&amp;lt;/math&amp;gt;, and since &amp;lt;math&amp;gt;s - s&amp;#039; = k^{-1}(z - z&amp;#039;)&amp;lt;/math&amp;gt; (all operations in this paragraph are done modulo &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) the attacker can find &amp;lt;math&amp;gt;k = \frac{z - z&amp;#039;}{s - s&amp;#039;}&amp;lt;/math&amp;gt;. Since &amp;lt;math&amp;gt;s = k^{-1}(z + r d_A)&amp;lt;/math&amp;gt;, the attacker can now calculate the private key &amp;lt;math&amp;gt;d_A = \frac{s k - z}{r}&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
This implementation failure was used, for example, to extract the signing key used for the [[PlayStation 3]] gaming-console.&amp;lt;ref&amp;gt;[https://events.ccc.de/congress/2010/Fahrplan/attachments/1780_27c3_console_hacking_2010.pdf Console Hacking 2010 - PS3 Epic Fail] {{Webarchive|url=https://web.archive.org/web/20141215140847/http://events.ccc.de/congress/2010/Fahrplan/attachments/1780%5F27c3%5Fconsole%5Fhacking%5F2010.pdf |date=December 15, 2014 }}, page 123–128&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Another way ECDSA signature may leak private keys is when &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is generated by a faulty [[random number generator]]. Such a failure in random number generation caused users of Android Bitcoin Wallet to lose their funds in August 2013.&amp;lt;ref&amp;gt;{{cite web|url=https://bitcoin.org/en/alert/2013-08-11-android|title=Android Security Vulnerability|access-date=February 24, 2015}}&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
To ensure that &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is unique for each message, one may bypass random number generation completely and generate deterministic signatures by deriving &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; from both the message and the private key.&amp;lt;ref&amp;gt;{{cite tech report|url=https://www.rfc-editor.org/rfc/rfc6979.html|title=RFC 6979 - Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)|year=2013 |doi=10.17487/RFC6979 |access-date=February 24, 2015|last1=Pornin |first1=T. |doi-access=free }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Signature verification algorithm==&lt;br /&gt;
For Bob to authenticate Alice&amp;#039;s signature &amp;lt;math&amp;gt;r, s&amp;lt;/math&amp;gt; on a message &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, he must have a copy of her public-key curve point &amp;lt;math&amp;gt;Q_A&amp;lt;/math&amp;gt;. Bob can verify &amp;lt;math&amp;gt;Q_A&amp;lt;/math&amp;gt; is a valid curve point as follows:&lt;br /&gt;
&lt;br /&gt;
# Check that &amp;lt;math&amp;gt;Q_A&amp;lt;/math&amp;gt; is not equal to the identity element {{mvar|O}}, and its coordinates are otherwise valid.&lt;br /&gt;
# Check that &amp;lt;math&amp;gt;Q_A&amp;lt;/math&amp;gt; lies on the curve.&lt;br /&gt;
# Check that &amp;lt;math&amp;gt;n \times Q_A = O&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
After that, Bob follows these steps:&lt;br /&gt;
&lt;br /&gt;
# Verify that {{mvar|r}} and {{mvar|s}} are integers in &amp;lt;math&amp;gt;[1, n-1]&amp;lt;/math&amp;gt;. If not, the signature is invalid.&lt;br /&gt;
# Calculate &amp;lt;math&amp;gt;e = \textrm{HASH}(m)&amp;lt;/math&amp;gt;, where HASH is the same function used in the signature generation. &lt;br /&gt;
# Let &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; be the &amp;lt;math&amp;gt;L_n&amp;lt;/math&amp;gt; leftmost bits of {{mvar|e}}.&lt;br /&gt;
# Calculate &amp;lt;math&amp;gt;u_1 = zs^{-1}\,\bmod\,n&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u_2 = rs^{-1}\,\bmod\,n&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Calculate the curve point &amp;lt;math&amp;gt;(x_1, y_1) = u_1 \times G + u_2 \times Q_A&amp;lt;/math&amp;gt;. If &amp;lt;math&amp;gt;(x_1, y_1) = O&amp;lt;/math&amp;gt; then the signature is invalid.&lt;br /&gt;
# The signature is valid if &amp;lt;math&amp;gt;r \equiv x_1 \pmod{n}&amp;lt;/math&amp;gt;, invalid otherwise.&lt;br /&gt;
&lt;br /&gt;
Note that an efficient implementation would compute inverse &amp;lt;math&amp;gt;s^{-1}\,\bmod\,n&amp;lt;/math&amp;gt; only once. Also, using Shamir&amp;#039;s trick, a sum of two scalar multiplications &amp;lt;math&amp;gt;u_1 \times G + u_2 \times Q_A&amp;lt;/math&amp;gt; can be calculated faster than two scalar multiplications done independently.&amp;lt;ref&amp;gt;{{cite web | url=http://www.lirmm.fr/~imbert/talks/laurent_Asilomar_08.pdf | title=The Double-Base Number System in Elliptic Curve Cryptography | access-date=22 April 2014}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Correctness of the algorithm===&lt;br /&gt;
It is not immediately obvious why verification even functions correctly.  To see why, denote as {{mvar|C}} the curve point computed in step 5 of verification,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;C = u_1 \times G + u_2 \times Q_A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the definition of the public key as &amp;lt;math&amp;gt;Q_A = d_A \times G&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;C = u_1 \times G + u_2 d_A \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because elliptic curve scalar multiplication distributes over addition,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;C = (u_1 + u_2 d_A) \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expanding the definition of &amp;lt;math&amp;gt;u_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u_2&amp;lt;/math&amp;gt; from verification step 4,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;C = (z s^{-1} + r d_A s^{-1}) \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Collecting the common term &amp;lt;math&amp;gt;s^{-1}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;C = (z + r d_A) s^{-1} \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expanding the definition of {{mvar|s}} from signature step 6,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;C = (z + r d_A) (z + r d_A)^{-1} (k^{-1})^{-1} \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the inverse of an inverse is the original element, and the product of an element&amp;#039;s inverse and the element is the identity, we are left with&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;C = k \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the definition of {{mvar|r}}, this is verification step 6.&lt;br /&gt;
&lt;br /&gt;
This shows only that a correctly signed message will verify correctly; other properties such as incorrectly signed messages failing to verify correctly and resistance to [[Cryptanalysis|cryptanalytic]] attacks are required for a secure signature algorithm.&lt;br /&gt;
&lt;br /&gt;
==Public key recovery==&lt;br /&gt;
Given a message {{mvar|m}} and Alice&amp;#039;s signature &amp;lt;math&amp;gt;r, s&amp;lt;/math&amp;gt; on that message, Bob can (potentially) recover Alice&amp;#039;s public key:&amp;lt;ref&amp;gt;Daniel R. L. Brown [[SECG]] SEC 1: Elliptic Curve Cryptography (Version 2.0) https://www.secg.org/sec1-v2.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Verify that {{mvar|r}} and {{mvar|s}} are integers in &amp;lt;math&amp;gt;[1, n-1]&amp;lt;/math&amp;gt;. If not, the signature is invalid.&lt;br /&gt;
# Calculate a curve point &amp;lt;math&amp;gt;R = (x_1, y_1)&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;r+n&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;r+2n&amp;lt;/math&amp;gt;, etc. (provided &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; is not too large for the [[Field_(mathematics)|field]] of the curve) and &amp;lt;math&amp;gt;y_1&amp;lt;/math&amp;gt; is a value such that the curve equation is satisfied. Note that there may be several curve points satisfying these conditions, and each different {{mvar|R}} value results in a distinct recovered key.&lt;br /&gt;
# Calculate &amp;lt;math&amp;gt;e = \textrm{HASH}(m)&amp;lt;/math&amp;gt;, where HASH is the same function used in the signature generation. &lt;br /&gt;
# Let {{mvar|z}} be the &amp;lt;math&amp;gt;L_n&amp;lt;/math&amp;gt; leftmost bits of {{mvar|e}}.&lt;br /&gt;
# Calculate &amp;lt;math&amp;gt;u_1 = -zr^{-1}\,\bmod\,n&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u_2 = sr^{-1}\,\bmod\,n&amp;lt;/math&amp;gt;.&lt;br /&gt;
# Calculate the curve point &amp;lt;math&amp;gt;Q_A = (x_A, y_A) = u_1 \times G + u_2 \times R&amp;lt;/math&amp;gt;.&lt;br /&gt;
# The signature is valid if &amp;lt;math&amp;gt;Q_A&amp;lt;/math&amp;gt;, matches Alice&amp;#039;s public key.&lt;br /&gt;
# The signature is invalid if all the possible {{mvar|R}} points have been tried and none match Alice&amp;#039;s public key.&lt;br /&gt;
&lt;br /&gt;
Note that an invalid signature, or a signature from a different message, will result in the recovery of an incorrect public key. The recovery algorithm can only be used to check validity of a signature if the signer&amp;#039;s public key (or its hash) is known beforehand.&lt;br /&gt;
&lt;br /&gt;
===Correctness of the recovery algorithm===&lt;br /&gt;
Start with the definition of &amp;lt;math&amp;gt;Q_A&amp;lt;/math&amp;gt; from recovery step 6,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;Q_A = (x_A, y_A) = u_1 \times G + u_2 \times R&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the definition &amp;lt;math&amp;gt;R = (x_1, y_1) = k \times G&amp;lt;/math&amp;gt; from signing step 4,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;Q_A = u_1 \times G + u_2 k \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because elliptic curve scalar multiplication distributes over addition,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;Q_A = (u_1 + u_2 k) \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expanding the definition of &amp;lt;math&amp;gt;u_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;u_2&amp;lt;/math&amp;gt; from recovery step 5,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;Q_A = (-z r^{-1} + s k r^{-1}) \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expanding the definition of {{mvar|s}} from signature step 6,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;Q_A = (-z r^{-1} + k^{-1} (z + r d_A) k r^{-1}) \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the product of an element&amp;#039;s inverse and the element is the identity, we are left with&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;Q_A = (-z r^{-1} + (z r^{-1} + d_A)) \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first and second terms cancel each other out,&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;Q_A = d_A \times G&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the definition of &amp;lt;math&amp;gt;Q_A = d_A \times G&amp;lt;/math&amp;gt;, this is Alice&amp;#039;s public key.&lt;br /&gt;
&lt;br /&gt;
This shows that a correctly signed message will recover the correct public key, provided additional information was shared to uniquely calculate curve point &amp;lt;math&amp;gt;R = (x_1, y_1)&amp;lt;/math&amp;gt; from signature value {{mvar|r}}.&lt;br /&gt;
&lt;br /&gt;
==Security==&lt;br /&gt;
In December 2010, a group calling itself &amp;#039;&amp;#039;fail0verflow&amp;#039;&amp;#039; announced the recovery of the ECDSA private key used by [[Sony]] to sign software for the [[PlayStation 3]] game console. However, this attack only worked because Sony did not properly implement the algorithm, because &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; was static instead of random. As pointed out in the [[#Signature generation algorithm|Signature generation algorithm]] section above, this makes &amp;lt;math&amp;gt;d_A&amp;lt;/math&amp;gt; solvable, rendering the entire algorithm useless.&amp;lt;ref&amp;gt;{{Cite news|last=Bendel|first=Mike|title=Hackers Describe PS3 Security As Epic Fail, Gain Unrestricted Access|publisher=Exophase.com|date=2010-12-29|url=http://exophase.com/20540/hackers-describe-ps3-security-as-epic-fail-gain-unrestricted-access/|access-date=2011-01-05}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On March 29, 2011, two researchers published an [[International Association for Cryptologic Research|IACR]] paper&amp;lt;ref&amp;gt;{{cite web|url=http://eprint.iacr.org/2011/232|title=Cryptology ePrint Archive: Report 2011/232|access-date=February 24, 2015}}&amp;lt;/ref&amp;gt; demonstrating that it is possible to retrieve a TLS private key of a server using [[OpenSSL]] that authenticates with Elliptic Curves DSA over a binary [[Field (mathematics)|field]] via a [[timing attack]].&amp;lt;ref&amp;gt;{{cite web|url=https://www.kb.cert.org/vuls/id/536044|title=Vulnerability Note VU#536044 - OpenSSL leaks ECDSA private key through a remote timing attack|website=www.kb.cert.org}}&amp;lt;/ref&amp;gt; The vulnerability was fixed in OpenSSL 1.0.0e.&amp;lt;ref&amp;gt;{{cite web | url=http://www.openssl.org/news/changelog.html | title=ChangeLog | publisher=OpenSSL Project | access-date=22 April 2014}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In August 2013, it was revealed that bugs in some implementations of the [[Java (programming language)|Java]] class [https://docs.oracle.com/javase/10/docs/api/java/security/SecureRandom.html SecureRandom] sometimes generated collisions in the &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; value. This allowed hackers to recover private keys giving them the same control over bitcoin transactions as legitimate keys&amp;#039; owners had,  using the same exploit that was used to reveal the PS3 signing key on some [[Android (operating system)|Android]] app implementations, which use Java and rely on ECDSA to authenticate transactions.&amp;lt;ref&amp;gt;{{cite web |title=Android bug batters Bitcoin wallets &lt;br /&gt;
| url= https://www.theregister.co.uk/2013/08/12/android_bug_batters_bitcoin_wallets/ |publisher=The Register |date=12 August 2013}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This issue can be prevented by deterministic generation of k, as described by RFC 6979.&lt;br /&gt;
&lt;br /&gt;
=== Concerns ===&lt;br /&gt;
Some concerns expressed about ECDSA:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;Political concerns&amp;#039;&amp;#039;: the trustworthiness of [[National Institute of Standards and Technology|NIST]]-produced curves being questioned after revelations were made that the [[National Security Agency|NSA]] willingly inserts [[Backdoor (computing)|backdoors]] into software, hardware components and published standards; well-known cryptographers&amp;lt;ref&amp;gt;{{cite web|url=https://www.schneier.com/blog/archives/2013/09/the_nsa_is_brea.html#c1675929|title=The NSA Is Breaking Most Encryption on the Internet|website=Schneier on Security|first=Bruce|last=Schneier|date=September 5, 2013}}&amp;lt;/ref&amp;gt; have expressed&amp;lt;ref&amp;gt;{{cite web|url=http://safecurves.cr.yp.to/rigid.html|title=SafeCurves: choosing safe curves for elliptic-curve cryptography|date=Oct 25, 2013}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=https://www.hyperelliptic.org/tanja/vortraege/20130531.pdf|title=Security dangers of the NIST curves|first1=Daniel J.|last1=Bernstein|first2=Tanja|last2=Lange|author2-link=Tanja Lange|date=May 31, 2013}}&amp;lt;/ref&amp;gt; doubts about how the NIST curves were designed, and voluntary tainting has already been proved in the past.&amp;lt;ref&amp;gt;{{cite web|url=https://www.schneier.com/blog/archives/2007/11/the_strange_sto.html|title=The Strange Story of Dual_EC_DRBG|website=Schneier on Security|first=Bruce|last=Schneier|date=November 15, 2007}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=http://www.scientificamerican.com/article/nsa-nist-encryption-scandal/|title=NSA Efforts to Evade Encryption Technology Damaged U.S. Cryptography Standard|first=Larry|last=Greenemeier|publisher=Scientific American|date=September 18, 2013}}&amp;lt;/ref&amp;gt; (See also the &amp;#039;&amp;#039;libssh [[curve25519]] introduction&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{cite web|url=https://git.libssh.org/projects/libssh.git/tree/doc/curve25519-sha256@libssh.org.txt#n4|title=curve25519-sha256@libssh.org.txt\doc - projects/libssh.git|website=libssh shared repository}}&amp;lt;/ref&amp;gt;) Nevertheless, a proof that the named NIST curves exploit a rare weakness is still missing.&lt;br /&gt;
# &amp;#039;&amp;#039;Technical concerns&amp;#039;&amp;#039;: the difficulty of properly implementing the standard, its slowness, and design flaws which reduce security in insufficiently defensive implementations.&amp;lt;ref&amp;gt;{{cite web|url=http://blog.cr.yp.to/20140323-ecdsa.html|title=How to design an elliptic-curve signature system|first=Daniel J.|last=Bernstein|date=March 23, 2014|website=The cr.yp.to blog}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
Below is a list of cryptographic libraries that provide support for ECDSA:&lt;br /&gt;
&lt;br /&gt;
* [[Botan (programming library)|Botan]]&lt;br /&gt;
* [[Bouncy Castle (cryptography)|Bouncy Castle]]&lt;br /&gt;
* [[cryptlib]]&lt;br /&gt;
* [[Crypto++]]&lt;br /&gt;
* [[Crypto API (Linux)]]&lt;br /&gt;
* [[GnuTLS]]&lt;br /&gt;
* [[libgcrypt]]&lt;br /&gt;
* [[LibreSSL]]&lt;br /&gt;
* [[mbed TLS]]&lt;br /&gt;
* [[Microsoft CryptoAPI]]&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [[wolfCrypt]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[EdDSA]]&lt;br /&gt;
* [[RSA (cryptosystem)]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
==Further reading==&lt;br /&gt;
* Accredited Standards Committee [http://www.x9.org X9], &amp;#039;&amp;#039;ASC X9 Issues New Standard for Public Key Cryptography/ECDSA&amp;#039;&amp;#039;, Oct. 6, 2020. [https://x9.org/asc-x9-issues-new-standard-for-public-key-cryptography-ecdsa/ Source]&lt;br /&gt;
* Accredited Standards Committee [http://www.x9.org X9], &amp;#039;&amp;#039;American National Standard X9.62-2005, Public Key Cryptography for the Financial Services Industry, The Elliptic Curve Digital Signature Algorithm (ECDSA)&amp;#039;&amp;#039;, November 16, 2005.&lt;br /&gt;
* Certicom Research, [https://www.secg.org/sec1-v2.pdf &amp;#039;&amp;#039;Standards for efficient cryptography, SEC 1: Elliptic Curve Cryptography&amp;#039;&amp;#039;], Version 2.0, May 21, 2009.&lt;br /&gt;
* López, J. and Dahab, R. [http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.2771 &amp;#039;&amp;#039;An Overview of Elliptic Curve Cryptography&amp;#039;&amp;#039;], Technical Report IC-00-10, State University of Campinas, 2000.&lt;br /&gt;
* [[Daniel J. Bernstein]], [http://cr.yp.to/papers/pippenger.pdf Pippenger&amp;#039;s exponentiation algorithm], 2002.&lt;br /&gt;
* Daniel R. L. Brown, &amp;#039;&amp;#039;Generic Groups, Collision Resistance, and ECDSA&amp;#039;&amp;#039;, Designs, Codes and Cryptography, &amp;#039;&amp;#039;&amp;#039;35&amp;#039;&amp;#039;&amp;#039;, 119–152, 2005.  [http://eprint.iacr.org/2002/026 ePrint version]&lt;br /&gt;
* Ian F. Blake, Gadiel Seroussi, and [[Nigel_Smart_(cryptographer)|Nigel Smart]], editors, &amp;#039;&amp;#039;Advances in Elliptic Curve Cryptography&amp;#039;&amp;#039;, London Mathematical Society Lecture Note Series 317, Cambridge University Press, 2005.&lt;br /&gt;
* {{Cite book | last1 = Hankerson | first1 = D. | last2 = Vanstone | first2 = S. | author-link2 = Scott Vanstone | last3 = Menezes | first3 = A. | author-link3 = Alfred Menezes | doi = 10.1007/b97644 | title = Guide to Elliptic Curve Cryptography | series = Springer Professional Computing | publisher = [[Springer Science+Business Media|Springer]]| location = New York| year = 2004 | isbn = 0-387-95273-X | s2cid = 720546 }}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf Digital Signature Standard; includes info on ECDSA]&lt;br /&gt;
* [https://web.archive.org/web/20160304101319/http://cs.ucsb.edu/~koc/ccs130h/notes/ecdsa-cert.pdf The Elliptic Curve Digital Signature Algorithm (ECDSA); provides an in-depth guide on ECDSA]. [https://web.archive.org/web/20100627011540/http://cs.ucsb.edu/~koc/ccs130h/notes/ecdsa-cert.pdf Wayback link]&lt;br /&gt;
&lt;br /&gt;
{{Cryptography navbox|public-key}}&lt;br /&gt;
&lt;br /&gt;
{{Bitcoin}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Elliptic Curve Dsa}}&lt;br /&gt;
[[Category:Public-key cryptography]]&lt;br /&gt;
[[Category:Elliptic curve cryptography]]&lt;br /&gt;
[[Category:Digital signature schemes]]&lt;br /&gt;
[[Category:Digital Signature Standard]]&lt;/div&gt;</summary>
		<author><name>109.61.8.190</name></author>
	</entry>
</feed>