Rsa
從密碼片語(具有足夠的熵)確定性地生成 RSA 公鑰/私鑰對?
是否可以從密碼片語確定性地生成公共/私有 RSA 密鑰對?
通過密鑰拉伸密碼(而不是隨機數據源)提供(密鑰生成)算法數據是否足夠且強大?
額外學分:
是否可以從一個公共密碼和一個私人密碼生成一對密鑰,以便只能從公共密碼生成公鑰?(私鑰可以同時使用。)
(我正在嘗試解決使用 RSA 密鑰作為粘貼/交換的東西的困難。)
是的,可以從密碼片語確定性地生成公共/私有 RSA 密鑰對。即使是可以通過的安全性,密碼片語也必須通過密鑰拉伸函式處理,例如Scrypt(或更為人所知但不太 推薦的 PBKDF2),並且 salt(至少,使用者 id)必須輸入密鑰拉伸函式;然後可以將輸出用作 RSA 密鑰生成的種子材料。這適用於任何公鑰密碼系統。
當假設對手可以訪問受(未知的、密鑰拉伸的)密碼保護的私鑰文件時,安全性等同於您在例如 PGP/GPG 中的安全性。但是,也有缺點:
- 一種是放棄在正常實踐中通過不公開私鑰文件而獲得的相當程度的安全 性;第一道防線失去了,只剩下(延伸的)密碼;
- 在保持相同密鑰的情況下無法更改密碼片語以及只需要密碼片語的優點;
- 密鑰對生成方法應保持靜態;任何更改都會以不同的密鑰對結束;這排除了定期增加密碼拉伸參數以考慮硬體進度(同時保持相同的密鑰和只需要密碼的優勢);
- 因此,多年來使用相同公鑰的安全性與現在可接受的使用速度之間存在非常困難的折衷;
- 順便說一句,由於 RSA 密鑰生成時間的可變性(至少通過標準技術),某些密碼片語/密鑰在解密或簽名時將需要比其他密碼更多的時間。
不,傳統公鑰密碼系統的公鑰(不是基於與某些伺服器的通信)目前不可能從一個典型的人類願意記住的東西(也許是 80 位價值)中(重新)生成熵,大約 24 位數字或 3 個電話號碼),更不用說來自典型人類可以選擇的密碼片語,也沒有其他資訊。
在 RSA 中 $ n $ -位模,我們可以將公鑰減少到大約 $ n/2 $ 有一個很好的論點的位,它不會降低安全性,或者 $ n/3 $ 沒有任何論據表明它會降低安全性的位(請參閱this question),但顯然不會更進一步。其他公鑰密碼系統(如 ECDSA)具有更緊湊的公鑰以實現同等安全性,但仍比 80 位限制高出數倍,因此記憶不切實際,甚至從紙上鍵入也很痛苦。我強烈懷疑我們能否擁有一個公鑰小於 160 位的合理安全的公鑰密碼系統。