我對非對稱公鑰密碼學的理解(儘管有限)是公鑰被設計為與所有人共享,而私鑰則保持私密。
假設我將本機電腦的公鑰儲存在遠端 Web 伺服器上,並且我傳送到該伺服器的加密訊息(透過我的私鑰)被也擁有我的公鑰的另一方截獲。這是否意味著他們也可以解密我的加密訊息?
如果是,這是否意味著我應該只與一方(在本例中為伺服器)共享公鑰,這違背了我對公鑰用途的理解?我的本機電腦上可以針對不同的應用程式使用不同的金鑰對嗎?
答案1
您不會將使用您的私鑰加密的資訊傳送到伺服器。當您開啟與伺服器的安全連線時,伺服器上的軟體會產生一個新的對稱加密金鑰,使用您的公鑰對其進行加密,然後將其傳送給您。然後,您使用私鑰對其進行解密,並將該對稱加密金鑰用於傳送到伺服器的資料。除了安全性方面之外,公鑰/私鑰加密過於佔用 CPU 資源,無法在所有資料傳輸中使用它 - 它通常僅用於加密其他加密金鑰或數位簽章。
答案2
有三種非常您可以使用公鑰系統執行不同的操作:
傳送私人資料:為此,您不使用自己的公鑰,而是使用來自預期目的地的公鑰。因此,只能使用他們的私鑰來解密資料。
簽署公共資料:如果您使用私鑰加密某些內容,任何人(使用您的公鑰)都可以解密並讀取它,但隨後他們知道它是你寫的,沒有被修改過。實際上,整個訊息並未加密,只有用作簽名的校驗和。
建立私人頻道:這個比較複雜,最常用的方法是Diffie-Hellman 金鑰交換協議。這種短暫的交換允許兩方產生一個共同的秘密,即使有人攔截了通信,如果他沒有私鑰之一,他也不會獲得該共享的秘密。然後,共享秘密用於加密其餘的通訊。
我認為您已經閱讀了前兩種情況的描述,但是您的問題(以及麥克·斯科特的回答)似乎是第三個。
答案3
使用公鑰,您可以加密並傳送給私鑰的持有者進行解密,但您無法使用公鑰進行解密。
您可以在一台機器上擁有許多不同的密鑰對。
答案4
SSH 對公鑰的唯一用途是確定對應私鑰持有者的身分。您對 SSH 公鑰唯一能做的就是確定合作的身份驗證代理是否持有相應的私鑰。