據我所知,我必須保證私鑰的安全并公布公鑰,這樣任何人都可以用公鑰對任何資料進行加密,而我可以用自己的私鑰(無人擁有)進行解密。
問題是,如果我公布私鑰并保留公鑰呢?該演算法似乎再次奏效:任何人都用私鑰(已公布)鎖定資料,但沒有人擁有公鑰(由我保管)。
是什么讓公鑰成為了公鑰?什么安全和重要的資料存盤在私鑰上,而我不應該給任何人看呢?
uj5u.com熱心網友回復:
對于一個完整的加密 解密(或簽名 驗證)程序,你總是需要兩把鑰匙。一個用于加密/簽名,另一個用于解密/驗證。你在哪種操作中使用哪種密鑰(原則上)無關緊要,只要你在反面操作中使用相應的另一種密鑰。
因此,讓我們假設你使用像openssl這樣的工具來生成一個密鑰對A和B。
當涉及到發布其中的一個密鑰時,我們必須考慮到兩個方面
數學。從純數學的角度來看(暫時不考慮安全問題),你公開哪一個密鑰和保持哪一個密鑰是不相關的。所有的行程都將以任何方式作業。
decrypt(encrypt(data, A), B) == data == decrypt(encrypt(data, B), A)
verify(sign(data, A), B) == OK == verify(sign(data, B), A)/code>
安全性。當我們考慮到安全性時,通過數字簽名證明你的身份是可能的,如果你使用一個密鑰,其他人不可能知道。對于某些加密系統來說,有可能從密鑰A推匯出密鑰B,即存在一個函式,使
A = f(B)
但反之亦然,也就是說,沒有一個函式能使
B = f(A)
因此,當你知道B時,你也知道A,但如果你只知道A,你就沒有可能得出B。
因此,B被稱為私鑰,必須保持私有,A是公鑰,可以公布。
uj5u.com熱心網友回復:
取決于系統的使用,公鑰可能是 "眾所周知的"。 例如,對于RSA,公鑰只是你的模數加上公共指數65537,而私鑰是模數加上私人指數(這是真正的秘密)。 因此,知道私鑰的人也基本默認知道公鑰。 大多數基于橢圓曲線的系統也是如此。
。在理論上,人們可以制造一個 RSA 風格的系統,其中公共指數也很難確定(例如一個隨機生成的足夠位元的值,不可猜測),在這種情況下,它將是更對稱的,但這不是該系統通常設定的方式。 在任何情況下,知道密鑰基礎的秘密引數(RSA中模數的因子)的人可以很容易地從私鑰中確定公鑰,或從公鑰中確定私鑰。
在 Diffie-Hellman 這樣的系統中,公鑰實際上是通過一個眾所周知的演算法從私鑰中推匯出來的(除了私鑰本身,沒有任何秘密引數),所以在這種情況下,密鑰根本不是對稱的,任何知道私鑰的人都可以輕松地確定公鑰。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/317209.html
標籤:
