2019 iOS面試題大全---全方面剖析面試
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之HTTP協(xié)議
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之HTTPS扭屁、對稱加密算谈、非對稱加密
2019 iOS面試-----一個基于UDP的簡單的聊天Demo(用C語言、python料滥、GCDAsyncUdpSocket來實現(xiàn)UDP通信)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之UDP的特點然眼、UDP的報文結(jié)構(gòu)及差錯檢測
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之TCP、三次握手葵腹、四次揮手高每、代碼實現(xiàn)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之TCP進階:可靠數(shù)據(jù)傳輸、流量控制(滑動窗口)践宴、擁塞控制
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之DNS
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之Cookie和Session
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之IP協(xié)議鲸匿、IP數(shù)據(jù)報分片、IPv4編址阻肩、網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
2019 iOS面試題-----網(wǎng)絡(luò)相關(guān)之IPv6晒骇、從IPv4到IPv6的遷移
一、HTTPS和HTTP的區(qū)別
HTTPS協(xié)議 = HTTP協(xié)議 + SSL/TLS協(xié)議
SSL的全稱是Secure Sockets Layer磺浙,即安全套接層協(xié)議洪囤,是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS的全稱是Transport Layer Security撕氧,即安全傳輸層協(xié)議瘤缩。
即HTTPS是安全的HTTP。
二伦泥、HTTPS的連接建立流程
HTTPS為了兼顧安全與效率剥啤,同時使用了對稱加密和非對稱加密。在傳輸?shù)倪^程中會涉及到三個密鑰:
服務(wù)器端的公鑰和私鑰不脯,用來進行
非對稱加密
-
客戶端生成的隨機密鑰府怯,用來進行
對稱加密
如上圖,HTTPS連接過程大致可分為八步:
1防楷、客戶端訪問HTTPS連接牺丙。
客戶端會把安全協(xié)議版本號
、客戶端支持的加密算法列表、隨機數(shù)C
發(fā)給服務(wù)端冲簿。
2粟判、服務(wù)端發(fā)送證書給客戶端
服務(wù)端接收密鑰算法配件后,會和自己支持的加密算法列表進行比對峦剔,如果不符合档礁,則斷開連接。否則吝沫,服務(wù)端會在該算法列表中呻澜,選擇一種對稱算法(如AES)、一種公鑰算法(如具有特定秘鑰長度的RSA)和一種MAC算法發(fā)給客戶端惨险。
服務(wù)器端有一個密鑰對易迹,即公鑰
和私鑰
,是用來進行非對稱加密
使用的平道,服務(wù)器端保存著私鑰
睹欲,不能將其泄露,公鑰
可以發(fā)送給任何人一屋。
在發(fā)送加密算法的同時還會把數(shù)字證書
和隨機數(shù)S
發(fā)送給客戶端
3窘疮、客戶端驗證server證書
會對server公鑰進行檢查,驗證其合法性冀墨,如果發(fā)現(xiàn)發(fā)現(xiàn)公鑰有問題闸衫,那么HTTPS傳輸就無法繼續(xù)。
4诽嘉、客戶端組裝會話秘鑰
如果公鑰合格蔚出,那么客戶端會用服務(wù)器公鑰來生成一個前主秘鑰
(Pre-Master Secret,PMS)虫腋,并通過該前主秘鑰
和隨機數(shù)C骄酗、S來組裝成會話秘鑰
5、客戶端將前主秘鑰加密發(fā)送給服務(wù)端
是通過服務(wù)端的公鑰來對前主秘鑰
進行非對稱加密
悦冀,發(fā)送給服務(wù)端
6趋翻、服務(wù)端通過私鑰解密得到前主秘鑰
服務(wù)端接收到加密信息后,用私鑰解密得到主秘鑰盒蟆。
7踏烙、服務(wù)端組裝會話秘鑰
服務(wù)端通過前主秘鑰
和隨機數(shù)C、S來組裝會話秘鑰
历等。
至此讨惩,服務(wù)端和客戶端都已經(jīng)知道了用于此次會話的主秘鑰。
8寒屯、數(shù)據(jù)傳輸
客戶端收到服務(wù)器發(fā)送來的密文荐捻,用客戶端密鑰對其進行對稱解密,得到服務(wù)器發(fā)送的數(shù)據(jù)。
同理靴患,服務(wù)端收到客戶端發(fā)送來的密文仍侥,用服務(wù)端密鑰對其進行對稱解密要出,得到客戶端發(fā)送的數(shù)據(jù)鸳君。
總結(jié):
會話秘鑰
= random S + random C + 前主秘鑰
-
HTTPS連接建立過程使用
非對稱加密
,而非對稱加密
是很耗時的一種加密方式 -
后續(xù)通信過程使用
對稱加密
患蹂,減少耗時所帶來的性能損耗 -
其中或颊,
對稱加密
加密的是實際的數(shù)據(jù),非對稱加密
加密的是對稱加密所需要的客戶端的密鑰传于。
三囱挑、對稱加密和非對稱加密
1、對稱加密
用同一套密鑰來進行加密解密沼溜。
對稱加密通常有 DES,IDEA,3DES 加密算法平挑。
2、非對稱加密
用公鑰和私鑰來加解密的算法系草。
公鑰
(Public Key)與私鑰
(Private Key)是通過一種算法得到的一個密鑰對(即一個公鑰
和一個私鑰
)通熄,公鑰
是密鑰對中公開的部分,私鑰
則是非公開的部分,私鑰
通常是保存在本地找都。
用
公鑰
進行加密唇辨,就要用私鑰
進行解密;反之能耻,用私鑰
加密赏枚,就要用公鑰
進行解密(數(shù)字簽名)。由于私鑰是保存在本地的晓猛,所以
非對稱加密
相對與對稱加密
是安全的饿幅。
但非對稱加密
比對稱加密
耗時(100倍以上),所以通常要結(jié)合對稱加密
來使用。
常見的非對稱加密算法有:RSA戒职、ECC(移動設(shè)備用)诫睬、Diffie-Hellman、El Gamal帕涌、DSA(數(shù)字簽名用)
而為了確鄙惴玻客戶端能夠確認公鑰就是想要訪問的網(wǎng)站的公鑰,引入了數(shù)字證書的概念蚓曼,由于證書存在一級一級的簽發(fā)過程亲澡,所以就出現(xiàn)了證書鏈,在證書鏈中的頂端的就是根CA纫版。
關(guān)于數(shù)字證書: 數(shù)字證書詳解 - 簡書