自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

通信安全:哈希、加密、證書(shū)、簽名、密鑰協(xié)商、ECDH、TLS、DTLS

安全 應(yīng)用安全
哈希也叫散列,是把任意長(zhǎng)度的輸入通過(guò)散列算法變換成固定長(zhǎng)度的輸出,該輸出就是散列值,也叫摘要(Digest)。

[[278618]]

 通信風(fēng)險(xiǎn)

  1. 竊聽(tīng)風(fēng)險(xiǎn)(eavesdropping):第三方可以獲知通信內(nèi)容。
  2. 篡改風(fēng)險(xiǎn)(tampering):第三方可以修改通信內(nèi)容。
  3. 冒充風(fēng)險(xiǎn)(pretending):第三方可以冒充他人身份參與通信。

風(fēng)險(xiǎn)防范

  1. 信息加密傳輸,第三方無(wú)法竊聽(tīng)。
  2. 增加校驗(yàn)機(jī)制,一旦被篡改,通信雙方會(huì)立刻發(fā)現(xiàn)。
  3. 配備身份證書(shū),防止身份被冒充。

​哈希(Hash)

哈希也叫散列,是把任意長(zhǎng)度的輸入通過(guò)散列算法變換成固定長(zhǎng)度的輸出,該輸出就是散列值,也叫摘要(Digest)。

通信安全:哈希、加密、證書(shū)、簽名、密鑰協(xié)商、ECDH、TLS、DTLS

哈希是一種壓縮映射,通常不可逆

這種轉(zhuǎn)換是一種壓縮映射。也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,所以不可能從散列值來(lái)確定唯一的輸入值,但如果輸出的位數(shù)足夠,不同輸入散列成相同輸出的概率非常非常小。

簡(jiǎn)單的說(shuō),散列就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的過(guò)程。

散列是不可逆的,也就是無(wú)法通過(guò)輸出還原輸入,此特性常被用于密碼保存。

SHA-512、MD5等都是著名的散列函數(shù),MD5生成的散列碼是128位,甚至MD5就是哈希的同名詞,你可以通過(guò)網(wǎng)站:https://passwordsgenerator.net/sha512-hash-generator/ 在線計(jì)算哈希。

散列有什么用?

  1. 散列可用于保存密碼,明文保存密碼是危險(xiǎn)的。通常我們把密碼哈希加密之后保存,這樣即使泄漏了密碼,因?yàn)槭巧⒘泻蟮闹?,也沒(méi)有辦法推導(dǎo)出密碼明文(字典攻擊難以破解)。驗(yàn)證的時(shí)候,只需要對(duì)密碼(明文)做同樣的散列,對(duì)比散列后的輸出和保存的密碼散列值,就可以驗(yàn)證同一性。
  2. 可用于驗(yàn)證下載文件的完整性以及防篡改,比如網(wǎng)站提供安裝包的時(shí)候,通常也同時(shí)提供md5值,這樣用戶下載之后,可以重算安裝包的md5值,如果一致,則證明下載到本地的安裝包跟網(wǎng)站提供的安裝包是一致的,網(wǎng)絡(luò)傳輸過(guò)程中沒(méi)有出錯(cuò)。

加密

加密就是把明文變成密文的過(guò)程,解密就是反方向把密文變成明文。

比如著名的凱撒密碼,就是把每個(gè)字對(duì)應(yīng)到另一個(gè),這樣的話,只要有密碼本,就能對(duì)照完成加解密。比如最簡(jiǎn)單的,對(duì)于英文26個(gè)字母,每個(gè)字母右移3個(gè),abc變成def,這也是一種加密,當(dāng)然這種加密很簡(jiǎn)單,很容易被破譯。

而諸如AES(高級(jí)加密標(biāo)準(zhǔn))、3DES(三重?cái)?shù)據(jù)加密算法)則被公認(rèn)為很難破解,不過(guò)山東大學(xué)女教授王小云很厲害,破解了MD5和SHA-1,迫使加密標(biāo)準(zhǔn)升級(jí),最終當(dāng)上了院士。

對(duì)稱加密

對(duì)稱加密就是加解密的密鑰是一樣的,優(yōu)點(diǎn)是快,這也是傳統(tǒng)的加密方式,像AES、3DES都是對(duì)稱加密。

非對(duì)稱加密

非對(duì)稱加密用于加解密的密鑰不一樣,有2個(gè)密鑰,公鑰和私鑰,公鑰可以公開(kāi),私鑰妥善保管。RSA、ECC(橢圓曲線加密算法)、DH(密鑰交換算法)這些都是非對(duì)稱加密。

非對(duì)稱加密很慢,有多慢?相比對(duì)稱加密慢1000倍,因?yàn)槁?,所以它常用于密鑰協(xié)商(Handshake),協(xié)商出會(huì)話密鑰后,再用對(duì)稱密鑰加密通信數(shù)據(jù)。

1976年,Whitfield Diffie和Martin Hellman首次提出了非對(duì)稱加密的概念,該算法被稱為Diffie-Hellman密鑰交換。然后在1978年,麻省理工學(xué)院的Ron Rivest,Adi Shamir和Leonard Adleman發(fā)表了RSA 算法。這些都可以被視為非對(duì)稱加密的基礎(chǔ)。

非對(duì)稱加密也稱為公鑰基礎(chǔ)結(jié)構(gòu),又稱PKI。非對(duì)稱加密的提出是密碼學(xué)上的一次革命,影響深遠(yuǎn)。

非對(duì)稱加密算法用私鑰加密,用公鑰解密,或者用公鑰加密,用私鑰解密。

證書(shū)

證書(shū)就是為了證明我是我,比如你要訪問(wèn)中國(guó)銀行網(wǎng)站,但中行官網(wǎng)如何證明它是中行官網(wǎng)呢?答案就是數(shù)字證書(shū)。

CA是數(shù)字證書(shū)中心,服務(wù)器需要找CA做認(rèn)證,讓CA給自己頒布數(shù)字證書(shū),數(shù)字證書(shū)內(nèi)一般包含服務(wù)的一些信息、以及服務(wù)器的公鑰,通過(guò)CA的私鑰加密后,產(chǎn)生的數(shù)字證書(shū),因?yàn)镃A的權(quán)威性,且它的公鑰天下皆知,所以,如果你能用CA的公鑰解開(kāi)證書(shū),那便可證明該證書(shū)一定是CA頒發(fā)的,要不然它不會(huì)有CA的私鑰,也便沒(méi)法產(chǎn)生可用CA公鑰解密的證書(shū)。

所以,由此可見(jiàn),數(shù)字證書(shū)用到了非對(duì)稱加密。

數(shù)字簽名

日常生活中也有簽名,每個(gè)人的筆跡是不一樣的,你刷卡消費(fèi)后在賬單簽上大名,服務(wù)員校驗(yàn)過(guò)之后保存下來(lái),你哪天賴賬,便可以有簽名為證,因?yàn)閯e人寫(xiě)的字跟你的筆跡終有差別。

那數(shù)字簽名是什么呢?比如a發(fā)一封email,接收方怎么證明這封信是a寫(xiě)的?

本質(zhì)上,數(shù)字簽名也是利用了非對(duì)稱加密。

前面講了,非對(duì)稱加密有公鑰和私鑰,如果發(fā)生方用私鑰加密,然后接收方用發(fā)送方的公鑰可以解密,那便可以證明是從某發(fā)送方發(fā)送的,因?yàn)閯e人拿不到你的私鑰,也便無(wú)法用你的私鑰加密,你不能抵賴。

數(shù)字簽名通常先對(duì)內(nèi)容算哈希,產(chǎn)生內(nèi)容摘要,再用私鑰加密,得到簽名。

密鑰協(xié)商

下面舉一個(gè)例子來(lái)說(shuō)明這幾個(gè)問(wèn)題:

張三有2把鑰匙,一把公鑰,公告天下,一把私鑰,妥善保管,只有自己知道,很明顯,非對(duì)稱加密。

李四給張三寫(xiě)信,寫(xiě)完之后,用張三的公鑰加密,通過(guò)郵局寄給張三,即使郵遞員拆開(kāi)信封看,他也看不懂,因?yàn)閮?nèi)容是密文,只有張三的密鑰才能解密。

張三收到信后,用私鑰解密,可以正常閱讀。

現(xiàn)在張三要給李四回信,寫(xiě)完后,用hash函數(shù)生成摘要digest。

然后張三,再用私鑰對(duì)摘要加密,生成數(shù)字簽名signature。

然后把簽名附在信的下面,一起發(fā)給李四。

過(guò)程是:信明文 -> hash -> digist -> 私鑰加密 -> signature。

李四收到回信后,用張三的公鑰對(duì)數(shù)字簽名解密,得到摘要,由此證明,信確實(shí)是張三發(fā)出的,為什么?因?yàn)槿绻皇菑埲l(fā)的,那寫(xiě)信的人就沒(méi)有張三私鑰,用別的私鑰加密得到的簽名,是無(wú)法用張三的公鑰解開(kāi)的。

李四,再對(duì)信的內(nèi)容做hash,得到摘要,與上一步得到的摘要對(duì)比,如果一致,則證明信的內(nèi)容沒(méi)有被修改過(guò),信的內(nèi)容是完整的。

復(fù)雜的情況出現(xiàn)了。

王五,用自己的公鑰替換李四保存的張三的公鑰,也就是王五欺騙了李四,李四誤把王五的公鑰當(dāng)張三的公鑰,這樣一來(lái),王五就能冒充張三給李四寫(xiě)信(王五用自己的私鑰加密)。

問(wèn)題是什么?問(wèn)題是李四不能確信自己保存的公鑰真的是張三的公鑰。如果客戶端電腦上存的工商銀行官網(wǎng)的公鑰,實(shí)際上是騙子公司的公鑰,那就麻煩大了。

怎么破?讓張三去認(rèn)證中心CA(Certificate Authority),為公鑰做認(rèn)證,怎么做呢?CA中心用自己的私鑰,對(duì)張三的公鑰和其他相關(guān)信息一起加密,生成數(shù)字證書(shū)(Digital Certificate)。

張三拿到數(shù)字證書(shū)后,以后給李四回信,在簽名的同時(shí),附帶上數(shù)字證書(shū)。

李四收到信之后,從CA的公鑰解開(kāi)數(shù)字證書(shū),取出張三的公鑰(一定是真的),然后就能放心的愉快的按之前的流程解開(kāi)簽名了。

數(shù)字證書(shū)加入后,核心區(qū)別就是張三的公鑰不再保存在李四處,而是通過(guò)數(shù)字證書(shū)下發(fā)。

為什么數(shù)字證書(shū)里的張三的公鑰一定是真的呢?因?yàn)镃A是權(quán)威機(jī)構(gòu),假設(shè)全世界就一家(其實(shí)不止,但也不多),它的公鑰天下盡知,就是固定的串,所以能用CA公鑰解開(kāi)的證書(shū),一定是CA頒布的,因?yàn)镃A用它的私鑰加密產(chǎn)生的證書(shū)。很明顯,非對(duì)稱加密能用于證明我是我。

密鑰交換算法

著名的DH密鑰交換算法,這個(gè)算法很有意思,也很巧妙,簡(jiǎn)而言之,就是通信雙方交換一點(diǎn)信息(不怕被偷看到),然后就在兩端,分布產(chǎn)生出一個(gè)相同的密鑰,神奇啊。

有一個(gè)很有意思的例子。

通信安全:哈希、加密、證書(shū)、簽名、密鑰協(xié)商、ECDH、TLS、DTLS

Alice和Bob要協(xié)商出一個(gè)公共的顏色,他們可以交換信息,但交換的信息,可以被偷看到,怎么辦?既能協(xié)商出公共顏色,又不能讓別人知道呢。

首先,他們有公共的顏色,都是1毫升黃色。

然后Alice挑選一個(gè)私密的紅色,Bob選綠色,都是1毫升。只有自己知道,不會(huì)告訴別人。

然后Alice把黃色和紅色混合在一起,Bob把黃色和綠色混合在一起,各為2毫升。

然后,他們把自己混合后的2毫升顏色液體,發(fā)給對(duì)方。

然后,用自己的一毫升私密顏色液體,跟從對(duì)方那里收到的2毫升液體,混合,下面就是見(jiàn)證奇跡的顏色的時(shí)刻,他們得到了相同的顏色,而第三方并不能通過(guò)偷看他們傳遞的數(shù)據(jù)知道他們最終得到的顏色(基于一個(gè)假設(shè),圖里有說(shuō)明)。

密鑰交換算法的原理跟這個(gè)差不多,網(wǎng)上有大量的資料講述這個(gè)問(wèn)題,我覺(jué)得理解了上面的例子,再看ECDH便也不難了。

眾所周知http是互聯(lián)網(wǎng)協(xié)議,但是它不夠安全,所以后面有改進(jìn)版的https,其實(shí)就是多了一個(gè)TLS,這個(gè)是傳輸層加密,本質(zhì)上,就是通過(guò)handshake,協(xié)商出一個(gè)會(huì)話密鑰,后面的數(shù)據(jù)傳遞,都用這個(gè)密鑰做對(duì)稱加解密。

我們經(jīng)常講安全通道,其實(shí)也就是協(xié)商出一個(gè)會(huì)話密鑰,他并不神秘。胡亂放幾張圖片吧。

為了減少這幾個(gè)RTT,又想了各種辦法,然后復(fù)用連接的話,就可以做到0RTT,1RTT了。

通信安全:哈希、加密、證書(shū)、簽名、密鑰協(xié)商、ECDH、TLS、DTLS
通信安全:哈希、加密、證書(shū)、簽名、密鑰協(xié)商、ECDH、TLS、DTLS
通信安全:哈希、加密、證書(shū)、簽名、密鑰協(xié)商、ECDH、TLS、DTLS
通信安全:哈希、加密、證書(shū)、簽名、密鑰協(xié)商、ECDH、TLS、DTLS
通信安全:哈希、加密、證書(shū)、簽名、密鑰協(xié)商、ECDH、TLS、DTLS

就說(shuō)這些吧,最后拋幾個(gè)名詞,有興趣自行百度學(xué)習(xí):DTLS,HMAC,AEAD,重放攻擊,放大攻擊,是不是很高端?

 

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2019-11-21 14:58:34

哈希加密安全

2019-09-23 12:16:02

通信安全加密哈希

2023-03-26 23:53:49

TLSgRPC通信

2021-04-28 09:21:41

惡意軟件TLS加密通信

2011-11-02 12:12:01

量子安全通信安全

2014-06-13 14:27:46

2022-05-25 09:52:36

車聯(lián)網(wǎng)通信安全SSL/TLS

2019-05-06 10:21:09

加密密鑰云安全云計(jì)算

2024-05-08 08:16:11

2010-03-23 11:41:47

2019-03-12 11:29:04

加密云安全密鑰

2016-11-10 23:51:41

2009-12-31 10:35:35

金融公司加密服務(wù)TLS

2019-07-08 12:19:24

TLS網(wǎng)絡(luò)安全密鑰

2009-11-04 14:23:13

金融公司加密服務(wù)加密標(biāo)準(zhǔn)

2024-04-01 00:00:00

SSL證書(shū)開(kāi)源

2016-05-18 09:52:20

2011-03-14 15:06:49

SQL Server 安全

2018-03-30 15:12:00

安全密鑰加密

2021-01-22 05:51:56

Java前端數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)