⑴ 什麼是Schnorr簽名演算法
數字簽名(Digital Signature)技術是不對稱加密演算法的典型應用。數字簽名的應用過程是,數據源發送方使用自己的私鑰對數據校驗和或其他與數據內容有關的變數進行加密處理,完成對數據的合法「簽名」,數據接收方則利用對方的公鑰來解讀收到的「數字簽名」,並將解讀結果用於對數據完整性的檢驗,以確認簽名的合法性。數字簽名技術是在網路系統虛擬環境中確認身份的重要技術,完全可以代替現實過程中的「親筆簽字」,在技術和法律上有保證。在公鑰與私鑰管理方面,數字簽名應用與加密郵件PGP技術正好相反。在數字簽名應用中,發送者的公鑰可以很方便地得到,但他的私鑰則需要嚴格保密。數字簽名包括普通數字簽名和特殊數字簽名。普通數字簽名演算法有RSA、ElGmal、Fiat-Shamir、Guillou-Quisquarter、Schnorr、Ong-Schnorr-Shamir數字簽名演算法、Des/DSA,橢圓曲線數字簽名演算法和有限自動機數字簽名演算法等。特殊數字簽名有盲簽名、代理簽名、群簽名、不可否認簽名、公平盲簽名、門限簽名、具有消息恢復功能的簽名等,它與具體應用環境密切相關。
⑵ 列舉世界上一些著名的暗號
Autokey密碼
置換密碼
二字母組代替密碼 (by Charles Wheatstone)
多字母替換密碼
希爾密碼
維吉尼亞密碼
替換密碼
凱撒密碼
ROT13
仿射密碼
Atbash密碼
換位密碼
Scytale
Grille密碼
VIC密碼 (一種復雜的手工密碼,在五十年代早期被至少一名蘇聯間諜使用過,在當時是十分安全的)
⑶ 數字簽名機制 - Schnorr 機制
Schnorr機制是一種基於離散對數難題的知識證明機制,由德國數學家和密碼學家Claus-Peter Schnorr在1990年提出。這種知識證明機制具有實現簡單,驗證速度較快等優點。最開始是為Smart Card這樣的資源受限設備而設計。
經過這些年的發展,在原始的Schnorr機制上實現了多種多樣的改進與功能,實現了高性能的數字簽名,以及包括環簽名,門限簽名等復雜簽名機制。
在這里參考Schnorr的論文與其他的參考資料,分析Schnorr機制的原始機制與實現。並分析現在主流的EdDSA的實現ED25519,以及如何在Schnorr機制上建立的復雜簽名機制。
原始的Schnorr機制是一個互動式的機制。允許在任何擁有相同生成元(指在離散對數問題中)的協議參與者雙方,證明某一方擁有私鑰 而不需要直接交換它。其中雙方都擁有的生成元設為 ,證明者擁有私鑰 。驗證者從證明者處取得 ,其中 , 即公鑰。
Original Schnorr Signature的協議流程如下:
因為離散對數問題是困難的,因此驗證者不會知道 的值,驗證者僅知道由 計算得到的 。但是驗證者可以通過以下計算來驗證 是正確的:
其中 是生成元,雙方都可知, 驗證者都知道,所以驗證者可以輕松驗證化簡過的讓汪公式。
這個過程是零知識的,因為驗證者並不能得到私鑰 的值,卻可以通過計算與通訊的方式驗證證明者確實擁有私鑰 。
然而這樣互動式的過程,會導致驗證者通過"fork"的方式獲得私鑰 。驗證者只需要簡單的提供兩個不同的隨機值 ,並要求證明者計算 ,即可計算出 。這樣一來,這個過程便無法公開的驗證,因為一旦兩個驗證者相互串通,交換自己得到的值,便可以推出私鑰 。
為了解決這個問題,後大滑春續將會通過對現有的協議進行Fiat–Shamir變換,使用Random oracles改造這個演算法來使Schnorr原始的Schnorr Scheme變成可公開驗證的非互動式演算法。
上述原始Schnorr Scheme中存在的私鑰泄露問題使得演算法無法在公開的環境下使用。通過將原始的互動式協議轉變為非互動式協議可以解決這個問題。
Fiat–Shamir變換是一種利用互動式零知識證明方案創建數字簽名的方式。根據Fiat–Shamir變換,我們可以將原始方案中的證明者採用隨機數預言機(Random oracle)來代替,利用這樣的方式構造數字簽名。
隨機數預言機,即隨機數函數,是一種針對任意輸入得到的輸出之間是項目獨立切均勻分布的函數。理想的隨機數預言機並不存在,在實現中,經常採用密碼學哈希函數作為隨機數預言機。
原本的設計中,Schnorr簽滾耐名是一種互動式協議,需要一個實際存在的驗證者與參與者,而根據Fiat-Shamir轉換,可以將具體的驗證者採用隨機數預言機來代替。將驗證者替換為隨機數預言機後,外部的驗證者便無法通過交換 來推出私鑰 ,原本的 採用隨機數預言機產生的隨機數來表示。