HTTPS 相關(guān)的系列知識

Https 加密

參考: Nginx 下部署 HTTPS 與安全調(diào)優(yōu)
《圖解HTTP》第七章

關(guān)鍵字:
"公鑰" "私鑰"
"數(shù)字簽名"(digital signature)
"數(shù)字證書"(digital certificate)
"證書中心"(certificate authority,簡稱CA)
"摘要"(digest)

什么是 Https

Https 并不是一種新的被發(fā)明出來的協(xié)議, 而是 HTTP 協(xié)議與 SSL 協(xié)議組合而成為保證敏感數(shù)據(jù)安全傳輸?shù)囊环N方法.

了解Https之前你需要知道的

對稱加密之XOR加密

參考 阮一峰:XOR加密簡介(私以為文章最后以密碼的存儲為例極為不合適, 僅參考XOR的實現(xiàn)即可)

XOR異或運算, 符號 ^, 相同為假,相異為真。1011^1000 = 0011。
對同一字符連續(xù)使用使用兩次 XOR 就會返回這個值本身。

實現(xiàn)方式:

// 第一次 XOR
1010 ^ 1111 // 0101

// 第二次 XOR
0101 ^ 1111 // 1010

作用:

#有要加密傳輸?shù)男畔essage
key = random()
secret = XOR(message, key)
message = XOR(secret, key)

只要雙方都知道 相同的key 就可以加密傳輸數(shù)據(jù), 這就是 對稱加密。

非對稱加密之RSA

參考《計算是怎樣跑起來的》10.4 章節(jié)

非對稱加密對稱加密 類似, 但是 非對稱加密 雙方所擁有的 key 是不同的。

作用:

#有要加密傳輸?shù)男畔essage
secret = 私鑰加密(message)
message = 公鑰解密(secret)

#公鑰私鑰反過來也是可以的
secret = 公鑰加密(message)
message = 私鑰解密(secret)

實現(xiàn)方式是數(shù)學(xué)上 素數(shù)、乘方、取模的一些神奇魔法,我們致敬但不做深究。

數(shù)字簽名

作用: 以保證自己內(nèi)容不被篡改
方法如下:

摘要 = hash(內(nèi)容)
數(shù)字簽名 = 私鑰加密(摘要)
發(fā)送(內(nèi)容 + 數(shù)字簽名)   #可以保證自己內(nèi)容不被篡改

原理: 別人使用你的 公鑰 才能解密數(shù)字簽名,成功解密證明這個數(shù)字簽名是由作者生成的,之后對內(nèi)容進行hash,對比該hash與解密出的hash是否相同,這一步保證了數(shù)據(jù)不被篡改。

Https 的實現(xiàn)方式

客戶端-服務(wù)端-CA三方的通信

上圖展示了服務(wù)器通過可信任的第三方機構(gòu), 發(fā)布自己公鑰的過程. 之后服務(wù)器和客戶端會使用非對稱加密的方式安全的交換對稱加密的 key, 之后也會一直以對稱加密的方式去傳輸數(shù)據(jù), 而不再使用更加耗費計算機資源的非對稱加密.

為什么需要證書中心

因為服務(wù)器公鑰要發(fā)布出去,而且要保證發(fā)布的公鑰就是自己公鑰. 這一點就需要一個可信任的第三方機構(gòu)做保證.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容