從產(chǎn)品角度看密碼學(xué)的發(fā)展過程

從產(chǎn)品角度看密碼學(xué)的發(fā)展過程
在產(chǎn)品經(jīng)理眼中任何產(chǎn)品的形成都是基于用戶需求,脫離用戶需求的產(chǎn)品終究會被淘汰,任何產(chǎn)品的形成和發(fā)展都是在不斷的滿足用戶的需求,密碼學(xué)的發(fā)展過程也是如此。計(jì)算機(jī)網(wǎng)絡(luò)的初衷就數(shù)據(jù)共享,然而數(shù)據(jù)共享過程中的信息安全顯得尤為重要,密碼學(xué)發(fā)展了起來。
下面就以一個小例子講述密碼學(xué)的發(fā)展過程:
A和B通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通訊,信息內(nèi)容完全暴露在網(wǎng)絡(luò)當(dāng)中,任何人都可以獲取數(shù)據(jù)內(nèi)容。如圖C就是一個信息盜竊者。
此時(shí),網(wǎng)絡(luò)使用者A,B產(chǎn)生了需求:信息內(nèi)容不能被其他人獲取。
于是產(chǎn)生了非對稱加密方式,非對稱加密就是通信雙方通信過程中,消息發(fā)送者利用一個叫做密鑰的東西對消息進(jìn)行加密,而消息接收者同樣需要應(yīng)用這個密鑰對消息進(jìn)行解密。其他人即使盜取了加密的信息,在沒有密鑰的情況下,不能通過任何方式獲得消息內(nèi)容。目前比較成熟的對稱加密算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。有了對稱加密后A與B的通信過程如下圖
如圖,非對稱加密基本滿足了網(wǎng)絡(luò)使用者的需求,即使C盜取了網(wǎng)絡(luò)數(shù)據(jù),也不能獲得A,B的消息內(nèi)容。但是這種方式產(chǎn)生了一個新的問題,A,B間的密鑰如何傳遞,如果密鑰在傳遞過程中被C盜取,那之后的基于對稱加密算法的通信仍是不安全的。
此時(shí)產(chǎn)生了新的需求,就是要安全的傳遞密鑰,不能被其他人獲取,也就是說通信過程中的第一條信息一定要確保安全。顯然此時(shí)仍使用對稱加密是無論如何都不能滿足需求的。因?yàn)镃隨時(shí)可以盜取新的密鑰解密加密的密鑰。于是,非對稱算法應(yīng)運(yùn)而生,在非對稱加密算法中,密鑰是成對出現(xiàn),稱為公鑰和私鑰,公鑰公布于網(wǎng)絡(luò)當(dāng)中,私鑰自己保存。使用公鑰加密的消息只能通過私鑰解密,使用私鑰加密的消息只能通過公鑰解密,目前成熟的非對稱加密算法主要有RSA、Elgamal、背包算法、Rabin、D-H、ECC等。
此時(shí)A,B的傳遞密鑰的過程變?yōu)?,A利用B的公鑰對消息加密,B接受到加密的消息后利用B的私鑰對消息進(jìn)行解密,獲取消息內(nèi)容。如圖所示:
至此密鑰的傳遞過程完成。即使C拿到了加密后的密匙,由于C沒有B的私鑰,所以無法解密消息內(nèi)容。上述過程看似完美,但仍然存在兩個重大問題:
- B的公鑰由誰保管,如果C冒充此人將自己的公鑰發(fā)送給A,而B使用了C的公鑰加密通信密鑰,那么C盜取消息后便可利用自己的私鑰解密消息內(nèi)容獲得通信密鑰。
- 由于B的公鑰公布于網(wǎng)絡(luò),任何人都可以獲取,那么C冒充A利用B的公鑰加密通信密鑰傳遞給B,B解密后利用該密鑰進(jìn)行信息加密,那么C便可輕松的獲取消息的內(nèi)容。
對于第1個問題的解決方法就是找到一個公認(rèn)的第三方組織,保管注冊用戶的公鑰。如果A需要B的公鑰,就可以通過第三方拿到B的公鑰。這樣 第一問題就解決了,如果你非要說如果C黑掉了第三方組織怎么辦?我只能說那就沒得辦了,密碼學(xué)揪到最后沒有安全性可言。
而第2個問題的解決方法要引入一個叫做信息摘要的東西,信息摘要也稱為數(shù)字指紋,網(wǎng)絡(luò)中任何小到一個字母a,或是一個1000G的文件都有自己獨(dú)一無二的數(shù)字指紋。常見的提取數(shù)字指紋的算法就是md5, 通過md5算法。信息摘要經(jīng)過加密就是我們常說的數(shù)字簽名。接下來我們談?wù)勅绾卫眯畔⒄鉀Q問題2。
解決問題2的根本就在于如何證明B接受到的消息的確是A傳輸?shù)???梢阅嬗蒙鲜龅倪^程利用A的公鑰證明A就是A!聽起來有點(diǎn)拗口,下面詳細(xì)說一下通信的過程。
A的加密過程:
- A使用B的公鑰加密信息M內(nèi)容。
- 提取信息M的數(shù)字摘要。
- 利用自己的私鑰加密M(數(shù)字簽名)。
- 然后將這兩部同時(shí)傳遞給B。
而B接受到消息后處理過程如下,
- 利用B的私鑰解密消息,獲得消息內(nèi)容M。
- 提取M的數(shù)字指紋。
- 利用A的公鑰提取解密數(shù)字簽名。
- 對比提取的消息摘要和解密的數(shù)字簽名,如果相同,說明消息的確來自于A。
至此A將密鑰安全的傳遞到了B,后續(xù)就可以使用密鑰進(jìn)行通信了。這也是Https的工作過程。
最后圖解:
本文由 @某塵土1001 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理?,未經(jīng)許可,禁止轉(zhuǎn)載。
你估計(jì)是筆誤吧。。?!癇的公鑰由誰保管,如果C冒充此人將自己的公鑰發(fā)送給A,而B使用了C的公鑰加密通信密鑰,那么C盜取消息后便可利用自己的私鑰解密消息內(nèi)容獲得通信密鑰。”這句不對啊親,改成“B的公鑰由誰保管,如果C冒充此人將自己的公鑰發(fā)送給A,而A使用了C的公鑰加密通信信息,那么C盜取消息后便可利用自己的私鑰解密消息內(nèi)容獲得通信內(nèi)容。”后面一條同理,你應(yīng)該說的是冒充接受者跟冒充發(fā)送者吧。