1. 程式人生 > >公鑰密鑰理解

公鑰密鑰理解

數字 密碼 狀態 傳輸安全 中一 程序 rect vertica 隨機

公鑰密鑰理解

公開密鑰加密英語:Public-key cryptography),也稱為非對稱加密英語:asymmetric cryptography),是密碼學的一種算法,它需要兩個密鑰,一個是公開密鑰,另一個是私有密鑰;一個用作加密的時候,另一個則用作解密。使用其中一個密鑰把明文加密後所得的密文,只能用相對應的另一個密鑰才能解密得到原本的明文;甚至連最初用來加密的密鑰也不能用作解密。由於加密和解密需要兩個不同的密鑰,故被稱為非對稱加密;不同於加密和解密都使用同一個密鑰的對稱加密。雖然兩個密鑰在數學上相關,但如果知道了其中一個,並不能憑此計算出另外一個;因此其中一個可以公開,稱為公鑰,任意向外發布;不公開的密鑰為私鑰,必須由用戶自行嚴格秘密保管,絕不通過任何途徑向任何人提供,也不會透露給要通信的另一方,即使他被信任。

基於公開密鑰加密的特性,它還提供數字簽名的功能,使電子文件可以得到如同在紙本文件上親筆簽署的效果。

加密

如果任何人使用公鑰加密明文,得到的密文可以通過不安全的途徑(如網絡)發送,只有對應的私鑰持有者才可以解密得到明文;其他人即使從網絡上竊取到密文及加密公鑰,也無法(在數以年計的合理時間內)解密得出明文。典型例子是在網絡銀行或購物網站上,因為客戶需要輸入敏感消息,瀏覽器連接時使用網站服務器提供的公鑰加密並上傳數據,可保證只有信任的網站服務器才能解密得知消息,不必擔心敏感個資因為在網絡上傳送而被竊取。

在現實世界上可作比擬的例子是,一個傳統保管箱,開門和關門都是使用同一條鑰匙,這是對稱加密;而一個公開的郵箱,投遞口是任何人都可以寄信進去的,這可視為公鑰;而只有郵箱主人擁有鑰匙可以打開郵箱,這就視為私鑰。

技術分享圖片

非對稱加密往往需要密碼學安全偽隨機數生成器的協助來產生一對密鑰

其中一個可以隨便公開,稱為公鑰;另一個不公開,稱為私鑰,必須由用戶自行嚴格秘密保管,絕不通過任何途徑向任何人提供

加密過程

在數學上,

  1. 愛麗絲與鮑伯事先互不認識,也沒有可靠安全的溝通渠道,但愛麗絲現在卻要通過不安全的互聯網向鮑伯發送信息
  2. 愛麗絲撰寫好原文,原文在未加密的狀態下稱之為明文
  3. 鮑伯使用密碼學安全偽隨機數生成器產生一對密鑰,其中一個作為公鑰為
  4. 鮑伯可以用任何方法發送公鑰
  5. 愛麗絲用公鑰
  6. 愛麗絲可以用任何方法傳輸密文
  7. 鮑伯收到密文,用私鑰
  8. 由於伊夫沒有得到鮑伯的私鑰
  9. 如果愛麗絲丟失了她自己撰寫的原文

技術分享圖片

在非對稱加密中,愛麗絲使用鮑伯的公鑰加密明文,得到密文,而只有鮑伯因為持有私鑰才可以解密,得到明文

數字簽名

相反,如果某一用戶使用他的私鑰加密明文,任何人都可以用該用戶的公鑰解密密文;由於私鑰只由該用戶自己持有,故可以肯定該文件必定出自於該用戶;公眾可以驗證該用戶發布的數據或文件是否完整、中途有否曾被篡改,接收者可信賴這條信息確實來自於該用戶,該用戶亦無法抵賴,這被稱作數字簽名,大部分國家已經立法承認數字簽名擁有等同傳統親筆簽名的法律效力。公鑰可以通過數字證書認證機構簽授的電子證書形式公布,接收者通過信任鏈形成一套完整的公開密鑰基礎建設。例如,從網上下載的安裝程序,一般都帶有程序制作者的數字簽名,可以證明該程序的確是該作者(公司)發布的而不是第三方偽造的且未被篡改過(身份認證/驗證)。而在網絡銀行或購物網站,一般也會使用HTTPS,讓客戶確認他們不是連接到偽冒網站。

公鑰密鑰理解