http和https是WEB服務(wù)中兩種重要的通信協(xié)議吏颖,http默認(rèn)使用80端口及皂,https則使用443端口對(duì)數(shù)據(jù)加密傳輸弦赖。https通俗來(lái)說(shuō)就是http+ssl,也就是在SSL層對(duì)數(shù)據(jù)進(jìn)行加解密彬伦。關(guān)于https的原理滔悉,先從兩種常見(jiàn)的加密算法說(shuō)起。
對(duì)稱(chēng)加密算法
什么是對(duì)稱(chēng)加密算法
使用同一秘鑰對(duì)信息進(jìn)行加解密的方法叫做對(duì)稱(chēng)加密算法单绑。常見(jiàn)的對(duì)稱(chēng)加密算法主要有DES回官、3DES、AES搂橙、Blowfish歉提。
對(duì)稱(chēng)加密算法的工作過(guò)程
整體過(guò)程如下,發(fā)送方使用秘鑰對(duì)明文進(jìn)行加密区转,密文通過(guò)網(wǎng)絡(luò)傳輸給接收方苔巨,接收方使用同一秘鑰對(duì)密文進(jìn)行解密。
對(duì)稱(chēng)加密算法的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)是算法公開(kāi)蜗帜、計(jì)算量小恋拷、加密速度快、加密效率高厅缺。缺點(diǎn)是因?yàn)槭褂猛粋€(gè)秘鑰蔬顾,如果一方丟失加密信息就不安全了
非對(duì)稱(chēng)加密算法
非對(duì)稱(chēng)加密算法需要兩個(gè)密鑰來(lái)進(jìn)行加密和解密,這兩個(gè)密鑰是公開(kāi)密鑰(public key湘捎,簡(jiǎn)稱(chēng)公鑰)和私有密鑰(private key诀豁,簡(jiǎn)稱(chēng)私鑰)。如果使用公鑰進(jìn)行加密窥妇,就只能用私鑰解密舷胜;如果用私鑰加密,就只能用公鑰進(jìn)行解密活翩。常見(jiàn)算法有RSA烹骨、Elgamal、背包算法材泄、Rabin沮焕、D-H、ECC(橢圓曲線加密算法)拉宗。
非對(duì)稱(chēng)加密算法的工作流程
公鑰加密峦树,私鑰解密主要用于通信。 發(fā)送方用接收方的公鑰進(jìn)行加密旦事,接收方用自己的私鑰對(duì)密文解密得到明文魁巩。
私鑰加密(簽名),公鑰解密(驗(yàn)證),主要用于數(shù)字簽名姐浮。發(fā)送方用特殊的Hash算法將明文生成固定長(zhǎng)度的摘要谷遂,利用自己的私鑰對(duì)摘要進(jìn)行加密,這個(gè)過(guò)程就是簽名单料。接收方利用發(fā)送方的公鑰解密埋凯,同事也對(duì)明文Hash生成摘要点楼,比對(duì)驗(yàn)證。這種方式可以保證發(fā)送方的身份不可抵賴(lài)白对。
非對(duì)稱(chēng)加密算法的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)是保密性好掠廓,缺點(diǎn)是加密解密時(shí)間過(guò)長(zhǎng),速度慢
Https
Https綜合了對(duì)稱(chēng)加密算法和非對(duì)稱(chēng)加密算法的優(yōu)缺點(diǎn)甩恼。對(duì)消息的主體使用對(duì)稱(chēng)加密算法提高加密效率蟀瞧,對(duì)于容易導(dǎo)致安全問(wèn)題的對(duì)稱(chēng)加密算法使用的秘鑰進(jìn)行非對(duì)稱(chēng)加密。簡(jiǎn)化過(guò)程如下圖所示条摸。
- 客戶端發(fā)送自己的SSL版本及支持的加密算法
- 服務(wù)端從其中選定一個(gè)返回回去
- 服務(wù)端返回CA證書(shū)悦污,證書(shū)包含了公鑰,證書(shū)頒發(fā)的機(jī)構(gòu)钉蒲,有效時(shí)間等
- 客戶端驗(yàn)證證書(shū)的合法性
- 客戶端驗(yàn)證通過(guò)后生成一個(gè)隨機(jī)的Key切端,并用服務(wù)端提供的公鑰進(jìn)行加密,發(fā)送給服務(wù)器
- 服務(wù)端使用自己的私鑰解密獲取到客戶端提供的key準(zhǔn)備進(jìn)行對(duì)稱(chēng)加密顷啼。
- 服務(wù)端通過(guò)解密后的key對(duì)消息進(jìn)行加密踏枣,將內(nèi)容傳輸給客戶端,客戶端解密后獲取消息钙蒙。