<?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=Digital_Signature_Algorithm</id>
	<title>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=Digital_Signature_Algorithm"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Digital_Signature_Algorithm&amp;action=history"/>
	<updated>2026-05-08T00:10:54Z</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=Digital_Signature_Algorithm&amp;diff=4341882&amp;oldid=prev</id>
		<title>imported&gt;Folkezoft: /* Implementations */ Tag non-HTML Bare URLs using AutoWikiBrowser</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Digital_Signature_Algorithm&amp;diff=4341882&amp;oldid=prev"/>
		<updated>2025-12-17T08:47:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Implementations: &lt;/span&gt; Tag non-HTML Bare URLs using &lt;a href=&quot;https://en.wikipedia.org/wiki/AutoWikiBrowser&quot; class=&quot;extiw&quot; title=&quot;wikipedia:AutoWikiBrowser&quot;&gt;AutoWikiBrowser&lt;/a&gt;&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 08:47, 17 December 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-l12&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&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;DSA is covered by {{US patent|5231668}}, filed July 26, 1991 and now expired, and attributed to David W. Kravitz,&amp;lt;ref&amp;gt;[http://www.certicom.com/index.php/dr-david-kravitz Dr. David W. Kravitz] {{webarchive |url= https://web.archive.org/web/20130109092551/http://www.certicom.com/index.php/dr-david-kravitz |date= January 9, 2013 }}&amp;lt;/ref&amp;gt; a former [[National Security Agency|NSA]] employee. This patent was given to &amp;quot;The United States of America as represented by the [[United States Secretary of Commerce|Secretary of Commerce]], Washington, D.C.&amp;quot;, and NIST has made this patent available worldwide royalty-free.&amp;lt;ref&amp;gt;Werner Koch. [https://lists.gnupg.org/pipermail/gnupg-devel/1997-December/014123.html &amp;quot;DSA and patents&amp;quot;]&amp;lt;/ref&amp;gt; [[Claus P. Schnorr]] claims that his {{US patent|4995082}} (also now expired) covered DSA; this claim is disputed.&amp;lt;ref&amp;gt;{{cite web|url=http://csrc.nist.gov/groups/SMA/ispab/documents/94-rpt.txt|archive-url=https://web.archive.org/web/20090826042831/http://csrc.nist.gov/groups/SMA/ispab/documents/94-rpt.txt|url-status=dead|archive-date=26 August 2009|date=26 August 2009|title=1994 Annual Report of CSSPAB}}&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;DSA is covered by {{US patent|5231668}}, filed July 26, 1991 and now expired, and attributed to David W. Kravitz,&amp;lt;ref&amp;gt;[http://www.certicom.com/index.php/dr-david-kravitz Dr. David W. Kravitz] {{webarchive |url= https://web.archive.org/web/20130109092551/http://www.certicom.com/index.php/dr-david-kravitz |date= January 9, 2013 }}&amp;lt;/ref&amp;gt; a former [[National Security Agency|NSA]] employee. This patent was given to &amp;quot;The United States of America as represented by the [[United States Secretary of Commerce|Secretary of Commerce]], Washington, D.C.&amp;quot;, and NIST has made this patent available worldwide royalty-free.&amp;lt;ref&amp;gt;Werner Koch. [https://lists.gnupg.org/pipermail/gnupg-devel/1997-December/014123.html &amp;quot;DSA and patents&amp;quot;]&amp;lt;/ref&amp;gt; [[Claus P. Schnorr]] claims that his {{US patent|4995082}} (also now expired) covered DSA; this claim is disputed.&amp;lt;ref&amp;gt;{{cite web|url=http://csrc.nist.gov/groups/SMA/ispab/documents/94-rpt.txt|archive-url=https://web.archive.org/web/20090826042831/http://csrc.nist.gov/groups/SMA/ispab/documents/94-rpt.txt|url-status=dead|archive-date=26 August 2009|date=26 August 2009|title=1994 Annual Report of CSSPAB}}&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 1993, Dave Banisar managed to get confirmation, via a [[Freedom of Information Act (United States)|FOIA]] request, that the DSA algorithm hasn&#039;t been designed by the NIST, but by the NSA.&amp;lt;ref&amp;gt;{{Cite web |date=2020-02-29 |title=The RISKS Digest Volume 14 Issue 59 |volume=14 |issue=59 |url=https://catless.ncl.ac.uk/Risks/14/59 |access-date=2023-10-03 |archive-date=2020-02-29 |archive-url=https://web.archive.org/web/20200229145033/https://catless.ncl.ac.uk/Risks/14/59 |url-status=bot: unknown |last1=Neumann |first1=Peter G. }}&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 1993, Dave Banisar managed to get confirmation, via a [[Freedom of Information Act (United States)|FOIA]] request, that the DSA algorithm hasn&#039;t been designed by the NIST, but by the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[National Security Agency|&lt;/ins&gt;NSA&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;.&amp;lt;ref&amp;gt;{{Cite web |date=2020-02-29 |title=The RISKS Digest Volume 14 Issue 59 |volume=14 |issue=59 |url=https://catless.ncl.ac.uk/Risks/14/59 |access-date=2023-10-03 |archive-date=2020-02-29 |archive-url=https://web.archive.org/web/20200229145033/https://catless.ncl.ac.uk/Risks/14/59 |url-status=bot: unknown |last1=Neumann |first1=Peter G. }}&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;[[OpenSSH]] announced that DSA was going to be removed in 2025. The support was entirely dropped in version 10.0.&amp;lt;ref&amp;gt;{{cite web |title=OpenSSH announces DSA-removal timeline [LWN.net] |url=https://lwn.net/Articles/958048/ |website=lwn.net |access-date=11 January 2024}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |title=OpenSSH version 10.0. release notes |url=https://www.openssh.com/txt/release-10.0 |access-date=21 April 2025}}&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;[[OpenSSH]] announced that DSA was going to be removed in 2025. The support was entirely dropped in version 10.0.&amp;lt;ref&amp;gt;{{cite web |title=OpenSSH announces DSA-removal timeline [LWN.net] |url=https://lwn.net/Articles/958048/ |website=lwn.net |access-date=11 January 2024}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |title=OpenSSH version 10.0. release notes |url=https://www.openssh.com/txt/release-10.0 |access-date=21 April 2025}}&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-l106&quot;&gt;Line 106:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 106:&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;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;{{Unreferenced section|date=June 2024}}&lt;/del&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;Below is a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;non-exhaustive &lt;/ins&gt;list of cryptographic libraries that provide support for DSA:&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;Below is a list of cryptographic libraries that provide support for DSA:&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;* [[Botan (programming library)|Botan]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;{{Cite web |title=Public Key Cryptography — Botan |url=https://botan.randombit.net/handbook/api_ref/pubkey.html |access-date=2025-12-15 |website=botan.randombit.net}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[Botan (programming library)|Botan]]&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;* [[Bouncy Castle (cryptography)|Bouncy Castle]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;{{Cite web |title=Bouncy Castle Releases Java 1.81 and C# .NET 2.6.1 |url=https://www.bouncycastle.org/resources/bouncy-castle-releases-java-1-81-and-c-net-2-6-1/ |access-date=2025-12-15 |website=Bouncycastle |language=en-US}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[Bouncy Castle (cryptography)|Bouncy Castle]]&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;* [[cryptlib]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;https://cryptlib.com/downloads/manual.pdf {{Bare URL PDF|date=December 2025}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[cryptlib]]&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;* [[Crypto++]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;{{Cite web |title=Digital Signature Algorithm - Crypto++ Wiki |url=https://www.cryptopp.com/wiki/Digital_Signature_Algorithm#:~:text=Digital%20Signature%20Algorithm%20(DSA)%20is,in%20a%20multiple%20of%20PRIME_LENGTH_MULTIPLE%20. |access-date=2025-12-15 |website=www.cryptopp.com}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[Crypto++]]&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;* [[libgcrypt]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;{{Cite web |title=Cryptographic Functions (The Libgcrypt Reference Manual) |url=https://www.gnupg.org/documentation/manuals/gcrypt/Cryptographic-Functions.html#:~:text=Libgcrypt%20supports%20digital%20signatures%20using,hash%20hash-algo%20block%20)) |access-date=2025-12-15 |website=www.gnupg.org}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[libgcrypt]]&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;* [[Nettle (cryptographic library)|Nettle]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;{{Cite web |title=Nettle: a low-level cryptographic library |url=https://www.lysator.liu.se/~nisse/nettle/nettle.html#DSA |access-date=2025-12-15 |website=www.lysator.liu.se}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[Nettle (cryptographic library)|Nettle]]&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;* [[OpenSSL]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;{{Cite web |title=dsa - OpenSSL Documentation |url=https://docs.openssl.org/1.0.2/man3/dsa/ |access-date=2025-12-15 |website=docs.openssl.org}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[OpenSSL]]&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;* [[wolfCrypt]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;{{Cite web |title=wolfSSL User Manual {{!}} Chapter 10: wolfCrypt Usage Reference {{!}} Docs |url=https://wolfssl.jp/docs-3/wolfssl-manual/ch10/ |access-date=2025-12-15 |website=wolfSSL |language=ja}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[wolfCrypt]]&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;* [[GnuTLS]]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;ref&amp;gt;{{Cite web |title=Public key algorithms (GnuTLS 3.8.10) |url=https://www.gnutls.org/manual/html_node/Public-key-algorithms.html#:~:text=1%20Key%20generation.%20All%20supported%20key%20types,Ed25519,%20Ed448)%20can%20be%20generated%20with%20GnuTLS. |access-date=2025-12-15 |website=www.gnutls.org}}&amp;lt;/ref&amp;gt;&lt;/ins&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;* [[GnuTLS]]&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;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;==See also==&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;==See also==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Folkezoft</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Digital_Signature_Algorithm&amp;diff=3199546&amp;oldid=prev</id>
		<title>imported&gt;ClueBot NG: Reverting possible vandalism by Kennedylaurynlucy to version by Felix755. Report False Positive? Thanks, ClueBot NG. (4425228) (Bot)</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Digital_Signature_Algorithm&amp;diff=3199546&amp;oldid=prev"/>
		<updated>2025-09-25T12:50:41Z</updated>

		<summary type="html">&lt;p&gt;Reverting possible vandalism by &lt;a href=&quot;/wiki143/index.php?title=Special:Contributions/Kennedylaurynlucy&quot; title=&quot;Special:Contributions/Kennedylaurynlucy&quot;&gt;Kennedylaurynlucy&lt;/a&gt; to version by Felix755. &lt;a href=&quot;/wiki143/index.php?title=WP:CBFP&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:CBFP (page does not exist)&quot;&gt;Report False Positive?&lt;/a&gt; Thanks, &lt;a href=&quot;/wiki143/index.php?title=WP:CBNG&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:CBNG (page does not exist)&quot;&gt;ClueBot NG&lt;/a&gt;. (4425228) (Bot)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:50, 25 September 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>imported&gt;ClueBot NG</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Digital_Signature_Algorithm&amp;diff=39879&amp;oldid=prev</id>
		<title>imported&gt;Felix755: typo: remove unnecessary &#039;is&#039;</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Digital_Signature_Algorithm&amp;diff=39879&amp;oldid=prev"/>
		<updated>2025-05-28T09:42:08Z</updated>

		<summary type="html">&lt;p&gt;typo: remove unnecessary &amp;#039;is&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Digital verification standard}}&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Digital Signature Algorithm&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;DSA&amp;#039;&amp;#039;&amp;#039;) is a [[Public-key cryptography|public-key cryptosystem]] and [[Federal Information Processing Standards|Federal Information Processing Standard]] for [[digital signature]]s, based on the mathematical concept of [[modular exponentiation]] and the [[Discrete logarithm|discrete logarithm problem]]. In a digital signature system, there is a keypair involved, consisting of a private and a public key. In this system a signing entity that declared their public key can generate a signature using their private key, and a verifier can assert the source if it verifies the signature correctly using the declared public key. DSA is a variant of the [[Schnorr signature|Schnorr]] and [[ElGamal signature scheme|ElGamal]] signature schemes.&amp;lt;ref name=&amp;quot;schneier&amp;quot;&amp;gt;{{cite book|last=Schneier|first=Bruce|date=1996|title=Applied Cryptography|publisher=Wiley |url=https://archive.org/details/Applied_Cryptography_2nd_ed._B._Schneier|isbn=0-471-11709-9}}&amp;lt;/ref&amp;gt;{{rp|486}} &lt;br /&gt;
&lt;br /&gt;
The [[National Institute of Standards and Technology]] (NIST) proposed DSA for use in their [[Digital Signature Standard]] (DSS) in 1991, and adopted it as FIPS 186 in 1994.&amp;lt;ref name=&amp;quot;FIPS-186&amp;quot;&amp;gt;{{cite web|url= http://www.itl.nist.gov/fipspubs/fip186.htm |title= FIPS PUB 186: Digital Signature Standard (DSS), 1994-05-19|website= qcsrc.nist.gov|url-status= dead|archive-url= https://web.archive.org/web/20131213131144/http://www.itl.nist.gov/fipspubs/fip186.htm|archive-date= 2013-12-13}}&amp;lt;/ref&amp;gt; Five revisions to the initial specification have been released. The newest specification is: [https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf FIPS 186-5]  from February 2023.&amp;lt;ref name=&amp;quot;FIPS-186-4&amp;quot; /&amp;gt; DSA is patented but NIST has made this patent available worldwide royalty-free.  Specification [https://doi.org/10.6028/NIST.FIPS.186-5 FIPS 186-5] indicates DSA will no longer be approved for digital signature generation, but may be used to verify signatures generated prior to the implementation date of that standard.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The DSA works in the framework of public-key cryptosystems and is based on the algebraic properties of [[modular exponentiation]], together with the [[Discrete logarithm#Cryptography|discrete logarithm problem]], which is considered to be computationally intractable. The algorithm uses a key pair consisting of a public key and a private key. The private key is used to generate a digital signature for a message, and such a signature can be verified by using the signer&amp;#039;s corresponding public key. The digital signature provides [[message authentication]] (the receiver can verify the origin of the message), [[Data integrity|integrity]] (the receiver can verify that the message has not been modified since it was signed) and [[non-repudiation]] (the sender cannot falsely claim that they have not signed the message).&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
In 1982, the U.S government solicited proposals for a public key signature standard. In August 1991 the [[National Institute of Standards and Technology]] (NIST) proposed DSA for use in their Digital Signature Standard (DSS). Initially there was significant criticism, especially from [[software]] companies that had already invested effort in developing digital signature software based on the [[RSA cryptosystem]].&amp;lt;ref name=&amp;quot;schneier&amp;quot;/&amp;gt;{{rp|484}} Nevertheless, NIST adopted DSA as a Federal standard (FIPS 186) in 1994. Five revisions to the initial specification have been released: FIPS 186–1 in 1998,&amp;lt;ref name=&amp;quot;FIPS-186-1&amp;quot;&amp;gt;{{cite web|url= http://csrc.nist.gov/publications/fips/fips1861.pdf|title= FIPS PUB 186-1: Digital Signature Standard (DSS), 1998-12-15|website= csrc.nist.gov|url-status= dead|archive-url= https://web.archive.org/web/20131226115544/http://csrc.nist.gov/publications/fips/fips1861.pdf|archive-date= 2013-12-26}}&amp;lt;/ref&amp;gt; FIPS 186–2 in 2000,&amp;lt;ref name=&amp;quot;FIPS-186-2&amp;quot;&amp;gt;{{cite web|url= http://csrc.nist.gov/publications/fips/archive/fips186-2/fips186-2.pdf|title= FIPS PUB 186-2: Digital Signature Standard (DSS), 2000-01-27|website= csrc.nist.gov}}&amp;lt;/ref&amp;gt; FIPS 186–3 in 2009,&amp;lt;ref name=&amp;quot;FIPS-186-3&amp;quot;&amp;gt;{{cite web|url= http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf|title= FIPS PUB 186-3: Digital Signature Standard (DSS), June 2009|website= csrc.nist.gov}}&amp;lt;/ref&amp;gt; FIPS 186–4 in 2013,&amp;lt;ref name=&amp;quot;FIPS-186-4&amp;quot;&amp;gt;{{cite web|url= http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf|title= FIPS PUB 186-4: Digital Signature Standard (DSS), July 2013|website= csrc.nist.gov}}&amp;lt;/ref&amp;gt; and FIPS 186–5 in 2023.&amp;lt;ref name=&amp;quot;FIPS-186-5&amp;quot;&amp;gt;{{cite web|url= https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf|title= FIPS PUB 186-5: Digital Signature Standard (DSS), February 2023|website= csrc.nist.gov}}&amp;lt;/ref&amp;gt; Standard FIPS 186-5 forbids signing with DSA, while allowing verification of signatures generated prior to the implementation date of the standard as a document. It is to be replaced by newer signature schemes such as [[EdDSA]].&amp;lt;ref&amp;gt;{{cite web |title=Digital Signature Standard (DSS) |url=https://csrc.nist.gov/publications/detail/fips/186/5/draft |publisher=U.S. Department of Commerce |access-date=21 July 2020 |language=en |date=31 October 2019}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DSA is covered by {{US patent|5231668}}, filed July 26, 1991 and now expired, and attributed to David W. Kravitz,&amp;lt;ref&amp;gt;[http://www.certicom.com/index.php/dr-david-kravitz Dr. David W. Kravitz] {{webarchive |url= https://web.archive.org/web/20130109092551/http://www.certicom.com/index.php/dr-david-kravitz |date= January 9, 2013 }}&amp;lt;/ref&amp;gt; a former [[National Security Agency|NSA]] employee. This patent was given to &amp;quot;The United States of America as represented by the [[United States Secretary of Commerce|Secretary of Commerce]], Washington, D.C.&amp;quot;, and NIST has made this patent available worldwide royalty-free.&amp;lt;ref&amp;gt;Werner Koch. [https://lists.gnupg.org/pipermail/gnupg-devel/1997-December/014123.html &amp;quot;DSA and patents&amp;quot;]&amp;lt;/ref&amp;gt; [[Claus P. Schnorr]] claims that his {{US patent|4995082}} (also now expired) covered DSA; this claim is disputed.&amp;lt;ref&amp;gt;{{cite web|url=http://csrc.nist.gov/groups/SMA/ispab/documents/94-rpt.txt|archive-url=https://web.archive.org/web/20090826042831/http://csrc.nist.gov/groups/SMA/ispab/documents/94-rpt.txt|url-status=dead|archive-date=26 August 2009|date=26 August 2009|title=1994 Annual Report of CSSPAB}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In 1993, Dave Banisar managed to get confirmation, via a [[Freedom of Information Act (United States)|FOIA]] request, that the DSA algorithm hasn&amp;#039;t been designed by the NIST, but by the NSA.&amp;lt;ref&amp;gt;{{Cite web |date=2020-02-29 |title=The RISKS Digest Volume 14 Issue 59 |volume=14 |issue=59 |url=https://catless.ncl.ac.uk/Risks/14/59 |access-date=2023-10-03 |archive-date=2020-02-29 |archive-url=https://web.archive.org/web/20200229145033/https://catless.ncl.ac.uk/Risks/14/59 |url-status=bot: unknown |last1=Neumann |first1=Peter G. }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[OpenSSH]] announced that DSA was going to be removed in 2025. The support was entirely dropped in version 10.0.&amp;lt;ref&amp;gt;{{cite web |title=OpenSSH announces DSA-removal timeline [LWN.net] |url=https://lwn.net/Articles/958048/ |website=lwn.net |access-date=11 January 2024}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |title=OpenSSH version 10.0. release notes |url=https://www.openssh.com/txt/release-10.0 |access-date=21 April 2025}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Operation==&lt;br /&gt;
The DSA algorithm involves four operations: key generation (which creates the key pair), key distribution, signing and signature verification.&lt;br /&gt;
&lt;br /&gt;
===1. Key generation===&lt;br /&gt;
Key generation has two phases. The first phase is a choice of &amp;#039;&amp;#039;algorithm parameters&amp;#039;&amp;#039; which may be shared between different users of the system, while the second phase computes a single key pair for one user.&lt;br /&gt;
&lt;br /&gt;
====Parameter generation====&lt;br /&gt;
* Choose an approved [[cryptographic hash function]] &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; with output length &amp;lt;math&amp;gt;|H|&amp;lt;/math&amp;gt; bits. In the original DSS, &amp;lt;math&amp;gt;H&amp;lt;/math&amp;gt; was always [[SHA-1]], but the stronger [[SHA-2]] hash functions are approved for use in the current DSS.&amp;lt;ref name=&amp;quot;FIPS-186-4&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;FIPS-180-4&amp;quot;&amp;gt;{{cite web|url=http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf|title=FIPS PUB 180-4: Secure Hash Standard (SHS), March 2012|website=csrc.nist.gov}}&amp;lt;/ref&amp;gt; If &amp;lt;math&amp;gt;|H|&amp;lt;/math&amp;gt; is greater than the modulus length &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, only the leftmost &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; bits of the hash output are used.&lt;br /&gt;
* Choose a key length &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt;. The original DSS constrained &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; to be a multiple of 64 between 512 and 1024 inclusive. NIST 800-57 recommends lengths of 2048 (or 3072) for keys with security lifetimes extending beyond 2010 (or 2030).&amp;lt;ref&amp;gt;{{cite web|url=http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf |title=NIST Special Publication 800-57 |website=csrc.nist.gov |url-status=dead |archive-url=https://web.archive.org/web/20140606050814/http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf |archive-date=2014-06-06 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Choose the modulus length &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;N &amp;lt; L&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;N \leq |H|&amp;lt;/math&amp;gt;. FIPS&amp;amp;nbsp;186-4 specifies &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; to have one of the values: (1024, 160), (2048, 224), (2048, 256), or (3072, 256).&amp;lt;ref name=&amp;quot;FIPS-186-4&amp;quot; /&amp;gt;&lt;br /&gt;
* Choose an &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;-bit prime &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Choose an &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt;-bit prime &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;p - 1&amp;lt;/math&amp;gt; is a multiple of &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Choose an integer &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; randomly from &amp;lt;math&amp;gt;\{ 2 \ldots p-2 \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Compute &amp;lt;math&amp;gt;g := h^{(p - 1)/q} \mod p&amp;lt;/math&amp;gt;. In the rare case that &amp;lt;math&amp;gt;g=1&amp;lt;/math&amp;gt; try again with a different &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;. Commonly &amp;lt;math&amp;gt;h=2&amp;lt;/math&amp;gt; is used. This [[modular exponentiation]] can be computed efficiently even if the values are large.&lt;br /&gt;
The algorithm parameters are (&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt;). These may be shared between different users of the system.&lt;br /&gt;
&lt;br /&gt;
====Per-user keys====&lt;br /&gt;
Given a set of parameters, the second phase computes the key pair for a single user:&lt;br /&gt;
* Choose an integer &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; randomly from &amp;lt;math&amp;gt;\{ 1 \ldots q-1 \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Compute &amp;lt;math&amp;gt;y := g^x \mod p&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is the private key and &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; is the public key.&lt;br /&gt;
&lt;br /&gt;
===2. Key distribution===&lt;br /&gt;
The signer should publish the public key &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;. That is, they should send the key to the receiver via a reliable, but not necessarily secret, mechanism. The signer should keep the private key &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; secret.&lt;br /&gt;
&lt;br /&gt;
===3. Signing===&lt;br /&gt;
A message &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; is signed as follows:&lt;br /&gt;
* Choose an integer &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; randomly from &amp;lt;math&amp;gt;\{ 1 \ldots q-1 \}&amp;lt;/math&amp;gt;&lt;br /&gt;
* Compute &amp;lt;math&amp;gt;r := \left(g^{k}\bmod\,p\right)\bmod\,q&amp;lt;/math&amp;gt;. In the unlikely case that &amp;lt;math&amp;gt;r=0&amp;lt;/math&amp;gt;, start again with a different random &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Compute &amp;lt;math&amp;gt;s := \left(k^{-1}\left(H(m)+xr\right)\right)\bmod\,q&amp;lt;/math&amp;gt;. In the unlikely case that &amp;lt;math&amp;gt;s=0&amp;lt;/math&amp;gt;, start again with a different random &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;.&lt;br /&gt;
The signature is &amp;lt;math&amp;gt;\left(r,s\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The calculation of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; amounts to creating a new per-message key. The modular exponentiation in computing &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; is the most computationally expensive part of the signing operation, but it may be computed before the message is known.&lt;br /&gt;
Calculating the modular inverse &amp;lt;math&amp;gt;k^{-1}\bmod\,q&amp;lt;/math&amp;gt; is the second most expensive part, and it may also be computed before the message is known. It may be computed using the [[extended Euclidean algorithm]] or using [[Fermat&amp;#039;s little theorem]] as &amp;lt;math&amp;gt;k^{q-2}\bmod\,q&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===4. Signature Verification===&lt;br /&gt;
One can verify that a signature &amp;lt;math&amp;gt;\left(r,s\right)&amp;lt;/math&amp;gt; is a valid signature for a message &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; as follows:&lt;br /&gt;
* Verify that &amp;lt;math&amp;gt;0 &amp;lt; r &amp;lt; q&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;0 &amp;lt; s &amp;lt; q&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Compute &amp;lt;math&amp;gt;  w := s^{-1} \bmod\,q&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Compute &amp;lt;math&amp;gt;u_1 := H(m) \cdot w\, \bmod\,q&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Compute &amp;lt;math&amp;gt;u_2 := r \cdot w\, \bmod\,q&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Compute &amp;lt;math&amp;gt;  v := \left(g^{u_1}y^{u_2} \bmod\,p\right) \bmod\,q&amp;lt;/math&amp;gt;.&lt;br /&gt;
* The signature is valid if and only if &amp;lt;math&amp;gt;v = r&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Correctness of the algorithm==&lt;br /&gt;
The signature scheme is correct in the sense that the verifier will always accept genuine signatures. This can be shown as follows:&lt;br /&gt;
&lt;br /&gt;
First, since &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;g=h^{(p-1)/q}~\text{mod}~p&amp;lt;/math&amp;gt;, it follows that &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;g^q \equiv h^{p-1} \equiv 1 \mod p&amp;lt;/math&amp;gt; by [[Fermat&amp;#039;s little theorem]]. Since &amp;lt;math&amp;gt;g&amp;gt;0&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; is prime, &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; must have order&amp;amp;nbsp;&amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The signer computes&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;s=k^{-1}(H(m)+xr)\bmod\,q&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
k &amp;amp; \equiv H(m)s^{-1}+xrs^{-1}\\&lt;br /&gt;
  &amp;amp; \equiv H(m)w + xrw \pmod{q}&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since &amp;lt;math&amp;gt;g&amp;lt;/math&amp;gt; has order &amp;lt;math&amp;gt;q&amp;lt;/math&amp;gt; we have&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align}&lt;br /&gt;
g^k &amp;amp; \equiv g^{H(m)w}g^{xrw}\\&lt;br /&gt;
    &amp;amp; \equiv g^{H(m)w}y^{rw}\\&lt;br /&gt;
    &amp;amp; \equiv g^{u_1}y^{u_2} \pmod{p}&lt;br /&gt;
\end{align}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the correctness of DSA follows from&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
 r &amp;amp;= (g^k \bmod\,p) \bmod\,q\\&lt;br /&gt;
   &amp;amp;= (g^{u_1}y^{u_2} \bmod\,p) \bmod\,q\\&lt;br /&gt;
   &amp;amp;= v&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sensitivity==&lt;br /&gt;
With DSA, the entropy, secrecy, and uniqueness of the random signature value &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; are critical. It is so critical that violating any one of those three requirements can reveal the entire private key to an attacker.&amp;lt;ref&amp;gt;{{cite web|url=http://rdist.root.org/2009/05/17/the-debian-pgp-disaster-that-almost-was/|title=The Debian PGP disaster that almost was|work=root labs rdist|date=18 May 2009 }}&amp;lt;/ref&amp;gt; Using the same value twice (even while keeping &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; secret), using a predictable value, or leaking even a few bits of &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; in each of several signatures, is enough to reveal the private key &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&amp;lt;ref&amp;gt;[https://rdist.root.org/2010/11/19/dsa-requirements-for-random-k-value/ DSA &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;-value Requirements]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This issue affects both DSA and Elliptic Curve Digital Signature Algorithm ([[ECDSA]]) – in December 2010, the group &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. The attack was made possible because Sony failed to generate a new random &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; for each signature.&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;
This issue can be prevented by deriving &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; deterministically from the private key and the message hash, as described by {{IETF RFC|6979}}. This ensures that &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is different for each &amp;lt;math&amp;gt;H(m)&amp;lt;/math&amp;gt; and unpredictable for attackers who do not know the private key &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, malicious implementations of DSA and ECDSA can be created where &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; is chosen in order to [[subliminal channel|subliminally]] leak information via signatures. For example, an [[offline private key]] could be leaked from a perfect offline device that only released innocent-looking signatures.&amp;lt;ref&amp;gt;{{cite arXiv|title=How Perfect Offline Wallets Can Still Leak Bitcoin Private Keys|first=Stephan|last=Verbücheln|date=2 January 2015|eprint=1501.00447|class=cs.CR}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
{{Unreferenced section|date=June 2024}}&lt;br /&gt;
Below is a list of cryptographic libraries that provide support for DSA:&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;
* [[libgcrypt]]&lt;br /&gt;
* [[Nettle (cryptographic library)|Nettle]]&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [[wolfCrypt]]&lt;br /&gt;
* [[GnuTLS]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Modular arithmetic]]&lt;br /&gt;
* [[RSA (cryptosystem)]]&lt;br /&gt;
* [[ECDSA]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf FIPS PUB 186-4: Digital Signature Standard (DSS)], the fourth (and current) revision of the official DSA specification.&lt;br /&gt;
* [https://web.archive.org/web/20140606050814/http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf Recommendation for Key Management -- Part 1: general], NIST Special Publication 800-57, p.&amp;amp;nbsp;62–63&lt;br /&gt;
&lt;br /&gt;
{{Cryptography navbox | public-key}}&lt;br /&gt;
[[Category:Public-key cryptography]]&lt;br /&gt;
[[Category:Digital signature schemes]]&lt;br /&gt;
[[Category:Digital Signature Standard]]&lt;br /&gt;
[[Category:1991 introductions]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Felix755</name></author>
	</entry>
</feed>