從產品角度看密碼學的發展過程

2 評論 3012 瀏覽 33 收藏 7 分鐘

從產品角度看密碼學的發展過程

在產品經理眼中任何產品的形成都是基于用戶需求,脫離用戶需求的產品終究會被淘汰,任何產品的形成和發展都是在不斷的滿足用戶的需求,密碼學的發展過程也是如此。計算機網絡的初衷就數據共享,然而數據共享過程中的信息安全顯得尤為重要,密碼學發展了起來。

下面就以一個小例子講述密碼學的發展過程:

A和B通過網絡進行數據通訊,信息內容完全暴露在網絡當中,任何人都可以獲取數據內容。如圖C就是一個信息盜竊者。

圖片 1

此時,網絡使用者A,B產生了需求:信息內容不能被其他人獲取。

于是產生了非對稱加密方式,非對稱加密就是通信雙方通信過程中,消息發送者利用一個叫做密鑰的東西對消息進行加密,而消息接收者同樣需要應用這個密鑰對消息進行解密。其他人即使盜取了加密的信息,在沒有密鑰的情況下,不能通過任何方式獲得消息內容。目前比較成熟的對稱加密算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。有了對稱加密后A與B的通信過程如下圖

圖片 2

如圖,非對稱加密基本滿足了網絡使用者的需求,即使C盜取了網絡數據,也不能獲得A,B的消息內容。但是這種方式產生了一個新的問題,A,B間的密鑰如何傳遞,如果密鑰在傳遞過程中被C盜取,那之后的基于對稱加密算法的通信仍是不安全的。

此時產生了新的需求,就是要安全的傳遞密鑰,不能被其他人獲取,也就是說通信過程中的第一條信息一定要確保安全。顯然此時仍使用對稱加密是無論如何都不能滿足需求的。因為C隨時可以盜取新的密鑰解密加密的密鑰。于是,非對稱算法應運而生,在非對稱加密算法中,密鑰是成對出現,稱為公鑰和私鑰,公鑰公布于網絡當中,私鑰自己保存。使用公鑰加密的消息只能通過私鑰解密,使用私鑰加密的消息只能通過公鑰解密,目前成熟的非對稱加密算法主要有RSA、Elgamal、背包算法、Rabin、D-H、ECC等。

此時A,B的傳遞密鑰的過程變為,A利用B的公鑰對消息加密,B接受到加密的消息后利用B的私鑰對消息進行解密,獲取消息內容。如圖所示:

圖片 3

至此密鑰的傳遞過程完成。即使C拿到了加密后的密匙,由于C沒有B的私鑰,所以無法解密消息內容。上述過程看似完美,但仍然存在兩個重大問題:

  1. B的公鑰由誰保管,如果C冒充此人將自己的公鑰發送給A,而B使用了C的公鑰加密通信密鑰,那么C盜取消息后便可利用自己的私鑰解密消息內容獲得通信密鑰。
  2. 由于B的公鑰公布于網絡,任何人都可以獲取,那么C冒充A利用B的公鑰加密通信密鑰傳遞給B,B解密后利用該密鑰進行信息加密,那么C便可輕松的獲取消息的內容。

對于第1個問題的解決方法就是找到一個公認的第三方組織,保管注冊用戶的公鑰。如果A需要B的公鑰,就可以通過第三方拿到B的公鑰。這樣 第一問題就解決了,如果你非要說如果C黑掉了第三方組織怎么辦?我只能說那就沒得辦了,密碼學揪到最后沒有安全性可言。

而第2個問題的解決方法要引入一個叫做信息摘要的東西,信息摘要也稱為數字指紋,網絡中任何小到一個字母a,或是一個1000G的文件都有自己獨一無二的數字指紋。常見的提取數字指紋的算法就是md5, 通過md5算法。信息摘要經過加密就是我們常說的數字簽名。接下來我們談談如何利用信息摘要解決問題2。

解決問題2的根本就在于如何證明B接受到的消息的確是A傳輸的??梢阅嬗蒙鲜龅倪^程利用A的公鑰證明A就是A!聽起來有點拗口,下面詳細說一下通信的過程。

A的加密過程:

  1. A使用B的公鑰加密信息M內容。
  2. 提取信息M的數字摘要。
  3. 利用自己的私鑰加密M(數字簽名)。
  4. 然后將這兩部同時傳遞給B。

而B接受到消息后處理過程如下,

  1. 利用B的私鑰解密消息,獲得消息內容M。
  2. 提取M的數字指紋。
  3. 利用A的公鑰提取解密數字簽名。
  4. 對比提取的消息摘要和解密的數字簽名,如果相同,說明消息的確來自于A。

至此A將密鑰安全的傳遞到了B,后續就可以使用密鑰進行通信了。這也是Https的工作過程。

最后圖解:

圖片 4

 

本文由 @某塵土1001 原創發布于人人都是產品經理?,未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. :mrgreen:

    來自北京 回復
    1. 你估計是筆誤吧。。?!癇的公鑰由誰保管,如果C冒充此人將自己的公鑰發送給A,而B使用了C的公鑰加密通信密鑰,那么C盜取消息后便可利用自己的私鑰解密消息內容獲得通信密鑰?!边@句不對啊親,改成“B的公鑰由誰保管,如果C冒充此人將自己的公鑰發送給A,而A使用了C的公鑰加密通信信息,那么C盜取消息后便可利用自己的私鑰解密消息內容獲得通信內容?!焙竺嬉粭l同理,你應該說的是冒充接受者跟冒充發送者吧。

      來自山東 回復