elasticsearch入門系列">elasticsearch入門系列
1578
2022-05-29
寫在前面
學了一年的數字簽名方案,一直都在一個點進行專研,雖然還是有所收獲,總感覺還差點感覺,上了一年研究生,還沒有對數字簽名有整體了解。導師建議我從點到面,本來想寫一篇綜述之類的,看了看大佬寫的綜述,數字簽名真的種類繁多,而且自己能力有限,寫綜述實在不知道從哪里下手,因此就想在自己博客上寫寫簽名那些事,爭取一周更一個數字簽名算法,希望通過這樣子方式,可以對數字簽名有較深了解,也希望可以結交志趣相投的朋友一起探討(本人菜鳥,求抱大腿)。
數字簽名作用
數字簽名,本質上就是一種簽名方式。古代人以手寫或者印章,指模等方式進行簽名,表示自己對簽名的內容了解且負有責任,當出現矛盾紛爭的時候可以作為證據起到法律責任(不知為啥想到了賣身契),隨著計算機發展,要求我們對數字文檔進行簽名認證,如何讓我們的簽名如同手寫印章那樣合法有效?數字簽名技術便應運而生。
數字簽名技術大多使用公鑰密碼機制,最簡單的構造即簽名者用自己私鑰進行簽名,任意驗證者使用簽名者的公鑰進行驗證。根據公鑰密碼體制可知,已知公鑰求私鑰是困難的,因此只要驗證通過,就可以認為簽名有效,因此數字簽名具有保證簽名者身份的真實性,簽名內容完整性以及一旦驗證通過,簽名不可抵賴性(概括為數字簽名的三個特性:真實性,完整性與不可抵賴性)。
數字簽名發展史
1976年,Whitfield與Martin Hellman發表歷史性文章[1],提出數字簽名的概念。
1978年,發表RSA數字簽名方案。RSA是一種很經典的數字簽名方案,在現實生活中仍有很大的應用。迄今為止,對RSA的攻擊已經很多,但都沒有對它構成真正的威脅。
1978年,Rabin發表了一次性簽名方案(OTS)[2]一次性簽名方案實現簡單,甚至可以直接用部分密鑰(與身份有關)作為簽名。每個密鑰對僅加密1bit,安全性高。缺點是成本高,效率慢。為了提高效率,提出Merkle數字簽名方案。
1984年,Elgamal發表基于離散對數問題的Elgamal數字簽名算法[3]
1984年,Adi Shamir提出基于身份的密碼技術(IBC),且給出了第一個基于身份的數字簽名方案.基于身份的密碼也稱為基于標識的密碼。
1986年Amos Fiat和Adi Shamir提出Fiat-Shamir變換[4],該變換可以將一大類身份認證轉化為數字簽名算法。(主要應用之一,可以把交互式零知識證明轉化為非交互式,化簡算法,提高效率,在數字簽名算法中應用廣泛)
1991年NIST發表數字簽名算法DSA,是對Elgamal數字簽名算法的變形
2002年ChoonCha,JungHee Cheon等利用雙線性對構造短簽名算法。
2017年NIST征集后量子公鑰算法標準化工作,后量子數字簽名方案不斷得到重視
2008年Gentry,Peikert等人提出了第一個高效安全的格簽名方案[5]
2001年,曾貴華教授提出了第一個仲裁量子簽名協議(AQS)[6]
帶屬性的數字簽名
簡單功能的數字簽名方案已經不能滿足一些特殊需求,比如電子現金,電子選取,交通等領域應用,使得數字簽名功能不斷得到完善,現介紹幾個帶屬性的數字簽名技術。
(1)盲簽名:1982年David Chaum提出盲簽名概念。盲簽名是相對于一般的數字簽名而言的概念,是指簽名人員雖然對某個消息簽了名,但他并不知道所簽消息的具體內容,也就是說對簽名人而言,消息被盲化處理過。簽名的有效性是指可以在消息去盲以后公開驗證。
(2)多重簽名:多重數字簽名即為多人同時對一份數字分檔進行簽名。多重數字簽名技術有很多應用場景,比如,夫妻共同財產的支配問題,只有兩者均同意才可以進行財產支配。多重機制可用于對于簽名有需求且對長度有敏感的應用。與多重簽名類似的簽名機制為聚合簽名。聚合簽名分為通用聚合簽名與順序聚合簽名兩種。
(3)門限簽名:提到門限簽名,不得不提秘密共享技術。很多門限簽名都是有秘密共享機制轉化而成。門限簽名是普通數字簽名的一個重要分支,是門限秘密共享技術和數字簽名的一種結合。1991年,Desmedt-Frankel首次提出了(t,n)門限簽名方案。(t,n)門限簽名方案是指由n個成員組成一個簽名群體,該群體有一對公鑰和私鑰,群體內大于等于t個合法、誠實的成員組合可以代表群體用群私鑰進行簽名,任何人可利用該群體的公鑰進行簽名驗證。這里t是門限值,只有大于等于t個合法成員才能代表群體進行簽名,群體中任何個或更少的成員不能代表該群體進行簽名,同時任何成員不能假冒其他成員進行簽名。采用門限簽名方式可以實現權力分配,避免濫用職權。
…未完待續
RSA數字簽名方案
第一個數字簽名方案,我選擇了比較經典的RSA數字簽名。在介紹這個簽名之前,首先想先介紹一下RSA加解密算法:
RSA公鑰算法(基于大整數分解難題)
(1)選取兩個不同大素數p,q
(2)計算n=pq,φ ( n ) = ( p ? 1 ) ( q ? 1 ) \varphi (n)=\left ( p-1 \right )\left ( q-1 \right )φ(n)=(p?1)(q?1),其中φ ( n ) \varphi (n)φ(n)是歐拉函數。
(3)隨機選取整數e (4)采用歐幾里得算法計算私鑰d,使得ed=1modφ ( n ) \varphi (n)φ(n)。 e,n是公鑰,d是私鑰。p,q,φ ( n ) \varphi (n)φ(n)可銷毀不可公開 RSA簽名算法 最簡單的RSA簽名算法即私鑰簽名,公鑰驗證,具體流程如下: (1)密鑰對的產生(e,d),把d傳輸給驗證者。 (2)對消息M進行處理,求其摘要,公開摘要算法。 (3)用戶用自己私鑰對摘要進行加密處理后,把摘要以及原文發送給驗證者 (4)驗證者用對方公鑰進行解密,得到摘要,計算M的摘要,看看兩個摘要是否一致,一致簽名成功,否則失敗。 這次就先介紹到這里,如有錯誤望指正! 參考文獻 [1] Diffie W., Hellman M. (1976) New Directions in Cryptography. IEEE Transactions on Information Theory. 22 (6): 644. [2]Rivest R., Shamir A., Adleman L. (1978) A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. Communications of the ACM. 21 (2): 120–126 [3]ElGamal T. (1985) A Public Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms. Advances in Cryptology. CRYPTO 1984. Lecture Notes in Computer Science, vol 196. Springer, Berlin, Heidelberg. [4]Fiat A., Shamir A. (1987) How To Prove Yourself: Practical Solutions to Identification and Signature Problems. Advances in Cryptology — CRYPTO’ 86. CRYPTO 1986. Lecture Notes in Computer Science, vol 263. Springer, Berlin, Heidelberg. [5] Craig Gentry, Chris Peikert, Vinod Vaikuntanathan. Trapdoors for hard lattices and new cryptographic constructions. In the 40th Annual ACM Symposium on Theory of Computing. ACM, 2008, 197-206. [6]Zeng G, Keitel C H. Arbitrated quantum-signature scheme[J]. Physical Review A, 2002, 65(4): 042312. AI
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。