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

2 評(píng)論 3199 瀏覽 33 收藏 7 分鐘

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

在產(chǎn)品經(jīng)理眼中任何產(chǎn)品的形成都是基于用戶需求,脫離用戶需求的產(chǎn)品終究會(huì)被淘汰,任何產(chǎn)品的形成和發(fā)展都是在不斷的滿足用戶的需求,密碼學(xué)的發(fā)展過(guò)程也是如此。計(jì)算機(jī)網(wǎng)絡(luò)的初衷就數(shù)據(jù)共享,然而數(shù)據(jù)共享過(guò)程中的信息安全顯得尤為重要,密碼學(xué)發(fā)展了起來(lái)。

下面就以一個(gè)小例子講述密碼學(xué)的發(fā)展過(guò)程:

A和B通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通訊,信息內(nèi)容完全暴露在網(wǎng)絡(luò)當(dāng)中,任何人都可以獲取數(shù)據(jù)內(nèi)容。如圖C就是一個(gè)信息盜竊者。

圖片 1

此時(shí),網(wǎng)絡(luò)使用者A,B產(chǎn)生了需求:信息內(nèi)容不能被其他人獲取。

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

圖片 2

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

此時(shí)產(chǎn)生了新的需求,就是要安全的傳遞密鑰,不能被其他人獲取,也就是說(shuō)通信過(guò)程中的第一條信息一定要確保安全。顯然此時(shí)仍使用對(duì)稱加密是無(wú)論如何都不能滿足需求的。因?yàn)镃隨時(shí)可以盜取新的密鑰解密加密的密鑰。于是,非對(duì)稱算法應(yīng)運(yùn)而生,在非對(duì)稱加密算法中,密鑰是成對(duì)出現(xiàn),稱為公鑰和私鑰,公鑰公布于網(wǎng)絡(luò)當(dāng)中,私鑰自己保存。使用公鑰加密的消息只能通過(guò)私鑰解密,使用私鑰加密的消息只能通過(guò)公鑰解密,目前成熟的非對(duì)稱加密算法主要有RSA、Elgamal、背包算法、Rabin、D-H、ECC等。

此時(shí)A,B的傳遞密鑰的過(guò)程變?yōu)椋珹利用B的公鑰對(duì)消息加密,B接受到加密的消息后利用B的私鑰對(duì)消息進(jìn)行解密,獲取消息內(nèi)容。如圖所示:

圖片 3

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

  1. B的公鑰由誰(shuí)保管,如果C冒充此人將自己的公鑰發(fā)送給A,而B(niǎo)使用了C的公鑰加密通信密鑰,那么C盜取消息后便可利用自己的私鑰解密消息內(nèi)容獲得通信密鑰。
  2. 由于B的公鑰公布于網(wǎng)絡(luò),任何人都可以獲取,那么C冒充A利用B的公鑰加密通信密鑰傳遞給B,B解密后利用該密鑰進(jìn)行信息加密,那么C便可輕松的獲取消息的內(nèi)容。

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

而第2個(gè)問(wèn)題的解決方法要引入一個(gè)叫做信息摘要的東西,信息摘要也稱為數(shù)字指紋,網(wǎng)絡(luò)中任何小到一個(gè)字母a,或是一個(gè)1000G的文件都有自己獨(dú)一無(wú)二的數(shù)字指紋。常見(jiàn)的提取數(shù)字指紋的算法就是md5, 通過(guò)md5算法。信息摘要經(jīng)過(guò)加密就是我們常說(shuō)的數(shù)字簽名。接下來(lái)我們談?wù)勅绾卫眯畔⒄鉀Q問(wèn)題2。

解決問(wèn)題2的根本就在于如何證明B接受到的消息的確是A傳輸?shù)???梢阅嬗蒙鲜龅倪^(guò)程利用A的公鑰證明A就是A!聽(tīng)起來(lái)有點(diǎn)拗口,下面詳細(xì)說(shuō)一下通信的過(guò)程。

A的加密過(guò)程:

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

而B(niǎo)接受到消息后處理過(guò)程如下,

  1. 利用B的私鑰解密消息,獲得消息內(nèi)容M。
  2. 提取M的數(shù)字指紋。
  3. 利用A的公鑰提取解密數(shù)字簽名。
  4. 對(duì)比提取的消息摘要和解密的數(shù)字簽名,如果相同,說(shuō)明消息的確來(lái)自于A。

至此A將密鑰安全的傳遞到了B,后續(xù)就可以使用密鑰進(jìn)行通信了。這也是Https的工作過(guò)程。

最后圖解:

圖片 4

 

本文由 @某塵土1001 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理?,未經(jīng)許可,禁止轉(zhuǎn)載。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. :mrgreen:

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

      來(lái)自山東 回復(fù)