從產品角度看密碼學的發(fā)展過程
從產品角度看密碼學的發(fā)展過程
在產品經理眼中任何產品的形成都是基于用戶需求,脫離用戶需求的產品終究會被淘汰,任何產品的形成和發(fā)展都是在不斷的滿足用戶的需求,密碼學的發(fā)展過程也是如此。計算機網絡的初衷就數據共享,然而數據共享過程中的信息安全顯得尤為重要,密碼學發(fā)展了起來。
下面就以一個小例子講述密碼學的發(fā)展過程:
A和B通過網絡進行數據通訊,信息內容完全暴露在網絡當中,任何人都可以獲取數據內容。如圖C就是一個信息盜竊者。
此時,網絡使用者A,B產生了需求:信息內容不能被其他人獲取。
于是產生了非對稱加密方式,非對稱加密就是通信雙方通信過程中,消息發(fā)送者利用一個叫做密鑰的東西對消息進行加密,而消息接收者同樣需要應用這個密鑰對消息進行解密。其他人即使盜取了加密的信息,在沒有密鑰的情況下,不能通過任何方式獲得消息內容。目前比較成熟的對稱加密算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。有了對稱加密后A與B的通信過程如下圖
如圖,非對稱加密基本滿足了網絡使用者的需求,即使C盜取了網絡數據,也不能獲得A,B的消息內容。但是這種方式產生了一個新的問題,A,B間的密鑰如何傳遞,如果密鑰在傳遞過程中被C盜取,那之后的基于對稱加密算法的通信仍是不安全的。
此時產生了新的需求,就是要安全的傳遞密鑰,不能被其他人獲取,也就是說通信過程中的第一條信息一定要確保安全。顯然此時仍使用對稱加密是無論如何都不能滿足需求的。因為C隨時可以盜取新的密鑰解密加密的密鑰。于是,非對稱算法應運而生,在非對稱加密算法中,密鑰是成對出現,稱為公鑰和私鑰,公鑰公布于網絡當中,私鑰自己保存。使用公鑰加密的消息只能通過私鑰解密,使用私鑰加密的消息只能通過公鑰解密,目前成熟的非對稱加密算法主要有RSA、Elgamal、背包算法、Rabin、D-H、ECC等。
此時A,B的傳遞密鑰的過程變?yōu)?,A利用B的公鑰對消息加密,B接受到加密的消息后利用B的私鑰對消息進行解密,獲取消息內容。如圖所示:
至此密鑰的傳遞過程完成。即使C拿到了加密后的密匙,由于C沒有B的私鑰,所以無法解密消息內容。上述過程看似完美,但仍然存在兩個重大問題:
- B的公鑰由誰保管,如果C冒充此人將自己的公鑰發(fā)送給A,而B使用了C的公鑰加密通信密鑰,那么C盜取消息后便可利用自己的私鑰解密消息內容獲得通信密鑰。
- 由于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的加密過程:
- A使用B的公鑰加密信息M內容。
- 提取信息M的數字摘要。
- 利用自己的私鑰加密M(數字簽名)。
- 然后將這兩部同時傳遞給B。
而B接受到消息后處理過程如下,
- 利用B的私鑰解密消息,獲得消息內容M。
- 提取M的數字指紋。
- 利用A的公鑰提取解密數字簽名。
- 對比提取的消息摘要和解密的數字簽名,如果相同,說明消息的確來自于A。
至此A將密鑰安全的傳遞到了B,后續(xù)就可以使用密鑰進行通信了。這也是Https的工作過程。
最后圖解:
本文由 @某塵土1001 原創(chuàng)發(fā)布于人人都是產品經理?,未經許可,禁止轉載。
你估計是筆誤吧。。?!癇的公鑰由誰保管,如果C冒充此人將自己的公鑰發(fā)送給A,而B使用了C的公鑰加密通信密鑰,那么C盜取消息后便可利用自己的私鑰解密消息內容獲得通信密鑰?!边@句不對啊親,改成“B的公鑰由誰保管,如果C冒充此人將自己的公鑰發(fā)送給A,而A使用了C的公鑰加密通信信息,那么C盜取消息后便可利用自己的私鑰解密消息內容獲得通信內容?!焙竺嬉粭l同理,你應該說的是冒充接受者跟冒充發(fā)送者吧。