fbpx
维基百科

數字簽名算法

数字签名算法(DSA)是用于数字签名的联邦信息处理标准之一,基于模算数离散对数的复杂度。DSA是Schnorr和ElGamal签名方案的变体。

美国國家標準技術研究所(NIST)于1991年提出将DSA用于其数字签名标准(DSS),并于1994年将其作为FIPS 186采用。[2]已对初始规范进行了四次修订。DSA已获得专利,但NIST已将此专利在全球范围内買斷式授權

DSA的椭圆曲线密码学版本是ECDSA

概述 编辑

DSA算法工作在框架公钥加密模算数离散对数问题,这被认为是难解问题。该算法使用由公钥私钥组成的密钥对。私钥用于生成消息的数字签名,并且可以通过使用签名者的相应公钥来验证这种签名。数字签名提供信息鉴定(接收者可以验证消息的来源),完整性(接收方可以验证消息自签名以来未被修改)和不可否认性(发送方不能错误地声称它们没有签署消息)。

操作 编辑

DSA 演算法包含了四種操作:金鑰生成、金鑰分發、簽章、驗證

金鑰生成 编辑

金鑰生成包含兩個階段。第一階段是演算法參數的選擇,可以在系統的不同使用者之間共享,而第二階段則為每個使用者計算獨立的金鑰組合。

參數選擇 编辑

  • 選擇經核可的 密碼雜湊函式  ,在原版的 DSS(Digital Signature Standard)中,  總是使用 SHA-1,而目前的 DSS 已核可更為安全的 SHA-2 作為雜湊函式。[1][2] 假如長度   大於模數長度  ,則雜湊函式的輸出只有最左邊的   位元會被使用。
  • 選擇金鑰長度  ,原版的 DSS 限制   必須為 512 到 1024 之間 64 的倍數,NIST 800-57 建議使用長度為 2048 的金鑰。[3]
  • 選擇模數長度   使得   FIPS 186-4 規定   必須為 (1024, 160)、(2048, 224)、(2048, 256) 或 (3072, 256) 其中一種。[1]
  • 選擇長度為   位元的質數  
  • 選擇長度為   位元的質數   使得    的倍數。
  •   隨機選擇  
  • 計算  ,當   時需要重新產生不同的  ,通常會使用  ,即使數值很大時仍然可以非常有效率的計算這個 模幂

演算法參數為 ( ,  ,  ),可被不同的使用者共享。

使用者金鑰 编辑

給定一套演算法參數後,第二階段會為每位使用者計算獨立金鑰組合:

  •   選擇隨機整數  
  • 計算  

其中   是私鑰、  是公鑰。

金鑰分發 编辑

簽章者需要透過可信任的管道發佈公鑰  ,並且安全地保護   不被其他人知道。

簽章流程 编辑

訊息   簽名流程如下:

  •   隨機選擇整數  
  • 計算  ,當出現   狀況時重新選擇隨機數  
  • 計算  ,當出現   狀況時重新選擇隨機數  

簽章為   組合

計算    旨在為不同訊息建立獨立的金鑰,計算  模幂是這個演算法中最耗資源的部分,但這可在不知道訊息的前提下進行計算。 第二耗運算資源的部分是計算   模反元素,同樣也能在不知道訊息的前提下進行計算,這可以用擴展歐幾里得演算法費馬小定理   求得。

驗證簽章 编辑

透過以下步驟可以驗證   是訊息   的有效簽章:

  • 驗證   
  • 計算  
  • 計算  
  • 計算  
  • 計算  

只有在   時代表簽章是有效的

實作 编辑

下列密碼學函式庫有提供 DSA 的支援:

  • OpenSSL
  • GnuTLS
  • wolfCrypt
  • Crypto++
  • cryptlib英语cryptlib
  • Botan英语Botan (programming library)
  • Bouncy Castle英语Bouncy Castle (cryptography)
  • libgcrypt英语libgcrypt
  • Nettle英语Nettle (cryptographic library)

相關條目 编辑

參考文獻 编辑

  1. ^ 1.0 1.1 FIPS PUB 186-4: Digital Signature Standard (DSS), July 2013 (PDF). csrc.nist.gov. [2021-05-01]. (原始内容 (PDF)于2016-12-27). 
  2. ^ FIPS PUB 180-4: Secure Hash Standard (SHS), March 2012 (PDF). csrc.nist.gov. [2021-05-01]. (原始内容 (PDF)于2013-02-17). 
  3. ^ (PDF). csrc.nist.gov. (原始内容 (PDF)存档于2014-06-06). 

數字簽名算法, 此條目可参照英語維基百科相應條目来扩充, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, translated, page, 标签, 数字签名算法, 是用于数字签名的联邦信息处理标准之一, 基于模算数和离散对数的复杂度,. 此條目可参照英語維基百科相應條目来扩充 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 数字签名算法 DSA 是用于数字签名的联邦信息处理标准之一 基于模算数和离散对数的复杂度 DSA是Schnorr和ElGamal签名方案的变体 美国國家標準技術研究所 NIST 于1991年提出将DSA用于其数字签名标准 DSS 并于1994年将其作为FIPS 186采用 2 已对初始规范进行了四次修订 DSA已获得专利 但NIST已将此专利在全球范围内買斷式授權 DSA的椭圆曲线密码学版本是ECDSA 目录 1 概述 2 操作 2 1 金鑰生成 2 1 1 參數選擇 2 1 2 使用者金鑰 2 2 金鑰分發 2 3 簽章流程 2 4 驗證簽章 3 實作 4 相關條目 5 參考文獻概述 编辑DSA算法工作在框架公钥加密 模算数和离散对数问题 这被认为是难解问题 该算法使用由公钥和私钥组成的密钥对 私钥用于生成消息的数字签名 并且可以通过使用签名者的相应公钥来验证这种签名 数字签名提供信息鉴定 接收者可以验证消息的来源 完整性 接收方可以验证消息自签名以来未被修改 和不可否认性 发送方不能错误地声称它们没有签署消息 操作 编辑DSA 演算法包含了四種操作 金鑰生成 金鑰分發 簽章 驗證 金鑰生成 编辑 金鑰生成包含兩個階段 第一階段是演算法參數的選擇 可以在系統的不同使用者之間共享 而第二階段則為每個使用者計算獨立的金鑰組合 參數選擇 编辑 選擇經核可的 密碼雜湊函式 H displaystyle H nbsp 在原版的 DSS Digital Signature Standard 中 H displaystyle H nbsp 總是使用 SHA 1 而目前的 DSS 已核可更為安全的 SHA 2 作為雜湊函式 1 2 假如長度 H displaystyle H nbsp 大於模數長度 N displaystyle N nbsp 則雜湊函式的輸出只有最左邊的 N displaystyle N nbsp 位元會被使用 選擇金鑰長度 L displaystyle L nbsp 原版的 DSS 限制 L displaystyle L nbsp 必須為 512 到 1024 之間 64 的倍數 NIST 800 57 建議使用長度為 2048 的金鑰 3 選擇模數長度 N displaystyle N nbsp 使得 N lt L displaystyle N lt L nbsp 且 N H displaystyle N leq H nbsp FIPS 186 4 規定 L N displaystyle L N nbsp 必須為 1024 160 2048 224 2048 256 或 3072 256 其中一種 1 選擇長度為 N displaystyle N nbsp 位元的質數 q displaystyle q nbsp 選擇長度為 L displaystyle L nbsp 位元的質數 p displaystyle p nbsp 使得 p 1 displaystyle p 1 nbsp 為 q displaystyle q nbsp 的倍數 從 2 p 2 displaystyle 2 ldots p 2 nbsp 隨機選擇 h displaystyle h nbsp 計算 g h p 1 q mod p displaystyle g h p 1 q mod p nbsp 當 g 1 displaystyle g 1 nbsp 時需要重新產生不同的 h displaystyle h nbsp 通常會使用 h 2 displaystyle h 2 nbsp 即使數值很大時仍然可以非常有效率的計算這個 模幂 演算法參數為 p displaystyle p nbsp q displaystyle q nbsp g displaystyle g nbsp 可被不同的使用者共享 使用者金鑰 编辑 給定一套演算法參數後 第二階段會為每位使用者計算獨立金鑰組合 從 1 q 1 displaystyle 1 ldots q 1 nbsp 選擇隨機整數 x displaystyle x nbsp 計算 y g x mod p displaystyle y g x mod p nbsp 其中 x displaystyle x nbsp 是私鑰 y displaystyle y nbsp 是公鑰 金鑰分發 编辑 簽章者需要透過可信任的管道發佈公鑰 y displaystyle y nbsp 並且安全地保護 x displaystyle x nbsp 不被其他人知道 簽章流程 编辑 訊息 m displaystyle m nbsp 簽名流程如下 從 1 q 1 displaystyle 1 ldots q 1 nbsp 隨機選擇整數 k displaystyle k nbsp 計算 r g k mod p mod q displaystyle r left g k bmod p right bmod q nbsp 當出現 r 0 displaystyle r 0 nbsp 狀況時重新選擇隨機數 k displaystyle k nbsp 計算 s k 1 H m x r mod q displaystyle s left k 1 left H m xr right right bmod q nbsp 當出現 s 0 displaystyle s 0 nbsp 狀況時重新選擇隨機數 k displaystyle k nbsp 簽章為 r s displaystyle r s nbsp 組合計算 k displaystyle k nbsp 和 r displaystyle r nbsp 旨在為不同訊息建立獨立的金鑰 計算 r displaystyle r nbsp 的模幂是這個演算法中最耗資源的部分 但這可在不知道訊息的前提下進行計算 第二耗運算資源的部分是計算 k 1 mod q displaystyle k 1 bmod q nbsp 模反元素 同樣也能在不知道訊息的前提下進行計算 這可以用擴展歐幾里得演算法或費馬小定理 k q 2 mod q displaystyle k q 2 bmod q nbsp 求得 驗證簽章 编辑 透過以下步驟可以驗證 r s displaystyle left r s right nbsp 是訊息 m displaystyle m nbsp 的有效簽章 驗證 0 lt r lt q displaystyle 0 lt r lt q nbsp 且 0 lt s lt q displaystyle 0 lt s lt q nbsp 計算 w s 1 mod q displaystyle w s 1 bmod q nbsp 計算 u 1 H m w mod q displaystyle u 1 H m cdot w bmod q nbsp 計算 u 2 r w mod q displaystyle u 2 r cdot w bmod q nbsp 計算 v g u 1 y u 2 mod p mod q displaystyle v left g u 1 y u 2 bmod p right bmod q nbsp 只有在 v r displaystyle v r nbsp 時代表簽章是有效的實作 编辑下列密碼學函式庫有提供 DSA 的支援 OpenSSL GnuTLS wolfCrypt Crypto cryptlib 英语 cryptlib Botan 英语 Botan programming library Bouncy Castle 英语 Bouncy Castle cryptography libgcrypt 英语 libgcrypt Nettle 英语 Nettle cryptographic library 相關條目 编辑模運算 RSA ECDSA參考文獻 编辑 1 0 1 1 FIPS PUB 186 4 Digital Signature Standard DSS July 2013 PDF csrc nist gov 2021 05 01 原始内容存档 PDF 于2016 12 27 FIPS PUB 180 4 Secure Hash Standard SHS March 2012 PDF csrc nist gov 2021 05 01 原始内容存档 PDF 于2013 02 17 NIST Special Publication 800 57 PDF csrc nist gov 原始内容 PDF 存档于2014 06 06 取自 https zh wikipedia org w index php title 数字签名算法 amp oldid 78191092, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。