網絡安全最新課程大綱
感興趣可留言
一、什麼是 SQL 注入攻擊
概述
攻擊者在 HTTP 請求中注入惡意的 SQL 代碼,伺服器使用參數建構資料庫 SQL 指令時,惡意SQL 被一起構造,并在資料庫中執行。
注入方法
使用者登入,輸入使用者名 lianggzone,密碼 ‘ or ‘1’=’1 ,如果此時使用參數構造的方式,就會出現
select * from user where name = ‘lianggzone’ and password = ‘’ or ‘1’=‘1’
不管使用者名和密碼是什麼内容,使查詢出來的使用者清單不為空。如何防範 SQL 注入攻擊使用預編譯的 PrepareStatement 是必須的,但是一般我們會從兩個方面同時入手。
Web端預防
- 有效性檢驗。
- 限制字元串輸入的長度。
服務端預防
- 不用拼接 SQL 字元串。
- 使用預編譯的 PrepareStatement。
- 有效性檢驗。(為什麼服務端還要做有效性檢驗?第一準則,外部都是不可信的,防止攻擊者繞過 Web 端請求)
- 過濾 SQL 需要的參數中的特殊字元。比如單引号、雙引号。
二、什麼是 XSS 攻擊
概述
跨站點腳本攻擊,指攻擊者通過篡改網頁,嵌入惡意腳本程式,在使用者浏覽網頁時,控制使用者浏覽器進行惡意操作的一種攻擊方式。
如何防範 XSS 攻擊
- 前端,服務端,同時需要字元串輸入的長度限制。
- 前端,服務端,同時需要對 HTML 轉義處理。将其中的”<”,”>”等特殊字元進行轉義編碼。
預防XSS 的核心是必須對輸入的資料做過濾處理。
三、CSRF 攻擊
概述
跨站點請求僞造,指攻擊者通過跨站請求,以合法的使用者的身份進行非法操作。可以這麼了解 CSRF 攻擊:攻擊者盜用你的身份,以你的名義向第三方網站發送惡意請求。CRSF 能做的事情包括利用你的身份發郵件,發短信,進行交易轉賬,甚至盜取賬号資訊。
如何防範CSRF 攻擊
- 安全架構,例如 Spring Security。
- token機制:在 HTTP 請求中進行 token 驗證,如果請求中沒有 token 或者 token 内容不正确,則認為 CSRF 攻擊而拒絕該請求。
- 驗證碼:通常情況下,驗證碼能夠很好地遏制 CSRF 攻擊,但是很多情況下,出于使用者體驗考慮,驗證碼隻能作為一種輔助手段,而不是最主要的解決方案。
- referer 識别:在 HTTP Header 中有一個字段 Referer,它記錄了 HTTP 請求的來源位址。如果 Referer 是其他網站,就有可能是 CSRF 攻擊,則拒絕該請求。但是,伺服器并非都能取到 Referer。很多使用者出于隐私保護的考慮,限制了 Referer 的發送。在某些情況下,浏覽器也不會發送 Referer,例如 HTTPS 跳轉到 HTTP。
- 驗證請求來源位址;
- 關鍵操作添加驗證碼;
- 在請求位址添加 token 并驗證。
四、檔案上傳漏洞
概述
檔案上傳漏洞,指的是使用者上傳一個可執行的腳本檔案,并通過此腳本檔案獲得了執行服務端指令的能力。
許多第三方架構、服務,都曾經被爆出檔案上傳漏洞,比如很早之前的 Struts2,以及富文本編輯器等等,可被攻擊者上傳惡意代碼,有可能服務端就被人黑了。如何防範檔案上傳漏洞
如何防範檔案上傳攻擊
- 判斷檔案類型。在判斷檔案類型的時候,可以結合使用 MIME Type,字尾檢查等方式。因為對于上傳檔案,不能簡單地通過字尾名稱來判斷檔案的類型,因為攻擊者可以将可執行檔案的字尾名稱改為圖檔或其他字尾類型,誘導使用者執行。
- 對上傳的檔案類型進行白名單校驗,隻允許上傳可靠的類型。
- 上傳的檔案需要進行重新命名,使攻擊者無法猜想上傳檔案的通路路徑,将極大地增加攻擊成本,同時向shell.php.rar.ara 這種檔案,因為重命名而無法成功實施攻擊。
- 限制上傳檔案的大小。
- 單獨設定檔案伺服器的域名。
五、DDos 攻擊
概述
用戶端向服務端發送請求連結資料包,服務端向用戶端發送确認資料包,用戶端不向服務端發送确認資料包,伺服器一直等待來自用戶端的确認沒有徹底根治的辦法,除非不使用 TCP
DDos 預防:
- 限制同時打開 SYN 半連結的數目
- 縮短 SYN 半連結的 Time out 時間
- 關閉不必要的服務
重要協定分布圖
六、arp 協定
概述
位址解析協定,即 ARP(Address Resolution Protocol),是根據 IP 位址擷取實體位址的一個TCP/IP 協定。
- 發送 ARP 請求的以太網資料幀 廣播 到以太網上的每個主機,ARP 請求幀中包含了目的主機的 IP 位址。
- 目的主機收到了該 ARP 請求之後,會發送一個 ARP 應答,裡面包含了目的主機的 MAC 位址。
ARP 協定工作原理
- 每個主機都會在自己的 ARP 緩沖區中建立一個 ARP 清單,以表示 IP 位址和 MAC 位址之間的對應關系。
- 主機(網絡接口)新加入網絡時(也可能隻是 mac 位址發生變化,接口重新開機等), 會發送免費 ARP 封包把自己 IP 位址與 Mac 位址的映射關系廣播給其他主機。
- 網絡上的主機接收到免費 ARP 封包時,會更新自己的 ARP 緩沖區。将新的映射關系更新到自己的 ARP 表中。
- 某個主機需要發送封包時,首先檢查 ARP 清單中是否有對應 IP 位址的目的主機的 MAC位址,如果有,則直接發送資料,如果沒有,就向本網段的所有主機發送 ARP 資料包,該資料包包括的内容有:源主機 IP 位址,源主機 MAC 位址,目的主機的 IP 位址等。
當本網絡的所有主機收到該 ARP 資料包時:
- 首先檢查資料包中的 IP 位址是否是自己的 IP 位址,如果不是,則忽略該資料包。
- 如果是,則首先從資料包中取出源主機的 IP 和 MAC 位址寫入到 ARP 清單中,如果已經存在,則覆寫。
- 然後将自己的 MAC 位址寫入 ARP 響應包中,告訴源主機自己是它想要找的 MAC位址。
源主機收到 ARP 響應包後。将目的主機的 IP 和 MAC 位址寫入 ARP 清單,并利用此資訊發送資料。如果源主機一直沒有收到 ARP 響應資料包,表示 ARP 查詢失敗。ARP 高速緩存(即 ARP 表)是 ARP 位址解析協定能夠高效運作的關鍵
如何防範ARP攻擊
1、MAC位址綁定
使網絡中每一台計算機的IP位址與硬體位址一一對應,不可更改。
2、使用靜态ARP緩存
用手工方法更新緩存中的記錄,使ARP欺騙無法進行。
3、使用ARP伺服器
通過該伺服器查找自己的ARP轉換表來響應其他機器的ARP廣播。確定這台ARP伺服器不被黑。
4、使用ARP欺騙防護軟體:
如ARP防火牆
5、及時發現正在進行ARP欺騙的主機并将其隔離
6、使用最新版本DNS伺服器軟體并及時安裝更新檔
7、關閉DNS伺服器的遞歸功能
DNS伺服器利用緩存中的記錄資訊回答查詢請求或是DNS伺服器通過查詢其它伺服器獲得查詢資訊并将它發送給客戶機,這兩種查詢方式稱為遞歸查詢,這種查詢方式容易導緻DNS欺騙。
8、限制區域傳輸範圍
限制域名伺服器做出響應的位址、限制域名伺服器做出響應的遞歸請求位址、限制送出請求的位址。
9、限制動态更新
10、采用分層的DNS體系結構
11、檢查源代碼
如果發生了URL重定向,就一定會發現。不過,檢查使用者連接配接的每一個頁面的源代碼對普通使用者來說是不切實際的想法。
12、確定應用有效和能适當地跟蹤使用者
無論是使用cookie還是會話ID,都應該確定要盡可能的長和随機。
七、RARP工作原理
反向位址轉換協定,網絡層協定,RARP 與 ARP 工作方式相反。RARP 使隻知道自己硬體位址的主機能夠知道其 IP 位址。RARP 發出要反向解釋的實體位址并希望傳回其 IP位址,應答包括能夠提供所需資訊的 RARP 伺服器發出的 IP 位址。
原理:
- 網絡上的每台裝置都會有一個獨一無二的硬體位址,通常是由裝置廠商配置設定的MAC位址。主機從網卡上讀取 MAC 位址,然後在網絡上發送一個 RARP 請求的廣播資料包,請求 RARP伺服器回複該主機的 IP 位址。
- RARP 伺服器收到了 RARP 請求資料包,為其配置設定 IP 位址,并将 RARP 回應發送給主機。
- PC1 收到 RARP 回應後,就使用得到的 IP 位址進行通訊。
八、dns 工作原理
将主機域名轉換為 ip 位址,屬于應用層協定,使用 UDP 傳輸。
過程:
總結:浏覽器緩存,系統緩存,路由器緩存,IPS 伺服器緩存,根域名伺服器緩存,頂級域名伺服器緩存,主域名伺服器緩存。
兩種查詢方式
- 主機向本地域名伺服器的查詢一般都是采用遞歸查詢。
- 本地域名伺服器向根域名伺服器的查詢的疊代查詢。
- 當使用者輸入域名時,浏覽器先檢查自己的緩存中是否有這個域名映射的 ip 位址,如果有解析結束。
- 若沒命中,則檢查作業系統緩存(如 Windows 的 hosts)中有沒有解析過的結果,有解析結束。
- 若無命中,則請求本地域名伺服器解析( LDNS)。
- 若 LDNS 沒有命中就直接跳到根域名伺服器請求解析。根域名伺服器傳回給 LDNS一個 主域名伺服器位址。
- 此時 LDNS 再發送請求給上一步傳回的 gTLD( 通用頂級域), 接受請求的 gTLD 查找并傳回這個域名對應的 Name Server 的位址
- Name Server 根據映射關系表找到目标 ip,傳回給 LDNS
- LDNS 緩存這個域名和對應的 ip, 把解析的結果傳回給使用者,使用者根據 TTL 值緩存到本地系統緩存中,域名解析過程至此結束
DNS攻擊
DNS攻擊防範
- 安全更新:及時更新所有相關軟體和作業系統更新檔,并確定所有裝置都有最新版本的安全防護軟體。
- 配置正确的權限:隻給予必要使用者相應權限,并禁止使用弱密碼進行登入。
- 加密傳輸:使用加密技術(例如SSL / TLS)來保護敏感資料在傳輸過程中不受幹擾或洩露。
- 多層次驗證機制: 在登入系統前先經過多重身份驗證, 以此增強賬戶安全性
- 增加容錯機制: 對于核心業務建立冷備和熱備,在一旦發生故障時,可以快速切換到備份系統上,降低業務中斷的風險。
九、rip的工作原理
RIP 動态路由選擇協定(網絡層協定)
RIP 是一種基于距離矢量(Distance-Vector)算法的協定,它使用跳數(Hop Count)作為度量來衡量到達目的網絡的路由距離。RIP 通過 UDP 封包進行路由資訊的交換,使用的端口号為 520。
工作原理:
RIP 路由協定用“更新(UNPDATES)”和“請求(REQUESTS)”這兩種分組來傳輸資訊的。每個具有 RIP 協定功能的路由器每隔 30 秒用 UDP520 端口給與之直接相連的機器廣播更新資訊。并且在(用“路程段數”(即“跳數”)作為網絡距離的尺度。每個路由器在)給相鄰路由器發出路由資訊時,都會給每個路徑加上内部距離
路由器的收斂機制:
任何距離向量路由選擇協定(如 RIP)都有一個問題,路由器不知道網絡的全局情況,路由器必須依靠相鄰路由器來擷取網絡的可到達資訊。由于路由選擇更新資訊在網絡上傳播慢,距離向量路由選擇算法有一個慢收斂問題,這個問題将導緻不一緻性産生。
RIP 較少路由收斂機制帶來的問題:
- 記數到無窮大機制:RIP 協定允許最大跳數為 15。大于 15 的目的地被認為是不可達。當路徑的跳數超過 15,這條路徑才從路由表中删除。
- 水準分割法:路由器不向路徑到來的方向回傳此路徑。當打開路由器接口後,路由器記錄路徑是從哪個接口來的,并且不向此接口回傳此路徑。
- 破壞逆轉的水準分割法:忽略在更新過程中從一個路由器擷取的路徑又傳回該路由器
- 保持定時器法:防止路由器在路徑從路由表中删除後一定的時間内(通常為 180 秒)接受新的路由資訊。保證每個路由器都收到了路徑不可達資訊
- 觸發更新法: 當某個路徑的跳數改變了,路由器立即發出更新資訊,不管路由器是否到達正常資訊更新時間都發出更新資訊。
RIP的特點
- 由于15跳為最大值,RIP 隻能應用于小規模網絡;
- 收斂速度慢;
- 根據跳數選擇的路由,不一定是最優路由。
OSPF 協定?OSPF 的工作原理
OSPF(Open Shortest Pass First,開放最短路徑優先協定),是一個最常用的内部網管協定,是一個鍊路狀态協定。(網絡層協定,)
原理:
OSPF 多點傳播的方式在所有開啟 OSPF 的接口發送 Hello 包,用來确定是否有 OSPF 鄰居,若發現了,則建立 OSPF 鄰居關系,形成鄰居表,之後互相發送 LSA(鍊路狀态通告)互相通告路由,形成 LSDB(鍊路狀态資料庫)。再通過 SPF 算法,計算最佳路徑(cost 最小)後放入路由表
十、TCP 與 UDP 差別
- TCP 面向連接配接(如打電話要先撥号建立連接配接)提供可靠的服務;UDP 是無連接配接的,即發送資料之前不需要建立連接配接,;UDP 盡最大努力傳遞,即不保證可靠傳遞。(由于 UDP 無需建立連接配接,是以 UDP 不會引入建立連接配接的時延,TCP 需要在端系統中維護連接配接狀态,比如接受和發送緩存,擁塞控制,序号與确認号的參數等,故 TCP 會比 UDP 慢)
- UDP 具有較好的實時性,工作效率比 TCP 高,适用于對高速傳輸和實時性有較高的通信或廣播通信。
- 每一條 TCP 連接配接隻能是一對一的;UDP 支援一對一,一對多,多對一和多對多的互動通信
- UDP 分組首部開銷小,TCP 首部開銷 20 位元組;UDP 的首部開銷小,隻有 8 個位元組。
- TCP 面向位元組流,實際上是 TCP 把資料看成一連串無結構的位元組流;UDP 是面向封包的(一次傳遞一個完整的封包,封包不可分割,封包是 UDP 資料報處理的最小機關)。
- UDP 适合一次性傳輸較小資料的網絡應用,如 DNS,SNMP 等
什麼是三次握手四次揮手?tcp 為什麼要三次握手?
為了防止已失效的連接配接請求封包段突然又傳送到了服務端,因而産生錯誤
第一次握手:建立連接配接時,用戶端發送 syn 包(syn=j)到伺服器,并進入 SYN_SEND 狀态,等待伺服器确認;
第二次握手:伺服器收到 syn 包,必須确認客戶的 SYN(ack=j+1),同時自己也發送一個SYN 包(syn=k),即 SYN+ACK 包,此時伺服器進入 SYN_RECV 狀态;
第三次握手:用戶端收到伺服器的 SYN+ACK 包,向伺服器發送确認包 ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入 ESTABLISHED 狀态,完成三次握手。
完成三次握手,用戶端與伺服器開始傳送資料
四次揮手
用戶端先發送 FIN,進入 FIN_WAIT1 狀态,用來關閉 Client 到 Server 的資料傳送服務端收到 FIN,發送 ACK,進入 CLOSE_WAIT 狀态,用戶端收到這個 ACK,進入 FIN_WAIT2狀态
服務端發送 FIN,進入 LAST_ACK 狀态,用來關閉 Server 到 Client 的資料傳送用戶端收到 FIN,發送 ACK,進入 TIME_WAIT 狀态,服務端收到 ACK,進入 CLOSE 狀态(等待 2MSL 時間,約 4 分鐘。主要是防止最後一個 ACK 丢失。)
第一次揮手:主動關閉方發送一個 FIN,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方:我已經不 會再給你發資料了(當然,在 fin 包之前發送出去的資料,如果沒有收到對應的 ack 确認封包,主動關閉方依然會重發這些資料),但是,此時主動關閉方還可 以接受資料。
第二次揮手:被動關閉方收到 FIN 包後,發送一個 ACK 給對方,确認序号為收到序号+1(與SYN 相同,一個 FIN 占用一個序号)。
第三次揮手:被動關閉方發送一個 FIN,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也發送完了,不會再給你發資料了。
第四次揮手:主動關閉方收到 FIN 後,發送一個 ACK 給被動關閉方,确認序号為收到序号+1,至此,完成四次揮手。
十一、GET 和 POST 的差別
get 是擷取資料,post 是修改資料
get 把請求的資料放在 url 上, 以?分割 URL 和傳輸資料,參數之間以&相連,是以 get 不太安全。而 post 把資料放在 HTTP 的包體内(requrest body)get 送出的資料最大是 2k( 限制實際上取決于浏覽器), post 理論上沒有限制。
GET 産生一個 TCP 資料包,浏覽器會把 http header 和 data 一并發送出去,伺服器響應 200(傳回資料); POST 産生兩個 TCP 資料包,浏覽器先發送 header,伺服器響應 100 continue,浏覽器再發送 data,伺服器響應 200 ok(傳回資料)。
GET 請求會被浏覽器主動緩存,而 POST 不會,除非手動設定。
GET 是幂等的,而 POST 不是幂等的
Cookies 和 session 差別
Cookie 和 Session 都是用戶端與伺服器之間保持狀态的解決方案
- 存儲的位置不同,cookie:存放在用戶端,session:存放在服務端。Session 存儲的資料比較安全
- 存儲的資料類型不同
- 兩者都是 key-value 的結構,但針對 value 的類型是有差異的cookie:value 隻能是字元串類型,session:value 是 Object 類型
3. 存儲的資料大小限制不同
cookie:大小受浏覽器的限制,很多是 4K 的大小, session:理論上受目前記憶體的限制,
4,生命周期的控制
cookie 的生命周期當浏覽器關閉的時候,就消亡了
- cookie 的生命周期是累計的,從建立時,就開始計時,20 分鐘後,cookie 生命周期結束,
- session 的生命周期是間隔的,從建立時,開始計時如在 20 分鐘,沒有通路 session,那麼 session 生命周期被銷毀
十二、session 的工作原理
session 的工作原理是用戶端登入完成之後,伺服器會建立對應的 session,session 建立完之後,會把 session 的 id 發送給用戶端,用戶端再存儲到浏覽器中。這樣用戶端每次通路伺服器時,都會帶着 sessionid,伺服器拿到 sessionid 之後,在記憶體找到與之對應的 session這樣就可以正常工作了。
十三、一次完整的 HTTP 請求過程
- 域名解析
- 發起 TCP 的 3 次握手
- 建立 TCP 連接配接後發起 http 請求
- 伺服器響應 http請求,浏覽器得到 html 代碼
- 浏覽器解析 html 代碼,并請求 html 代碼中的資源(如 js、css、圖檔等)浏覽器對頁面進行渲染呈現給使用者。
十四、HTTPS 和 HTTP 的差別
- HTTP 協定傳輸的資料都是未加密的,也就是明文的,是以使用 HTTP 協定傳輸隐私資訊非常不安全, HTTPS 協定是由 SSL+HTTP 協定建構的可進行加密傳輸、身份認證的網絡協定,要比 http 協定安全。
- https 協定需要到 ca 申請證書,一般免費證書較少,因而需要一定費用。
- http 和 https 使用的是完全不同的連接配接方式,用的端口也不一樣,前者是 80,後者是 443。https://www.cnblogs.com/mywe/p/5407468.html
十五、OSI的七層模型
- 實體層:利用傳輸媒體為資料鍊路層提供實體連接配接,實作比特流的透明傳輸。
- 資料鍊路層:接收來自實體層的位流形式的資料,并封裝成幀,傳送到上一層
- 網絡層:将網絡位址翻譯成對應的實體位址,并通過路由選擇算法為分組通過通信子網選擇最适當的路徑。
- 傳輸層:在源端與目的端之間提供可靠的透明資料傳輸
- 會話層:負責在網絡中的兩節點之間建立、維持和終止通信
- 表示層:處理使用者資訊的表示問題,資料的編碼,壓縮和解壓縮,資料的加密和解密
- 應用層:為使用者的應用程序提供網絡通信服務
十六、http 長連接配接和短連接配接的差別
在 HTTP/1.0 中預設使用短連接配接。也就是說,用戶端和伺服器每進行一次 HTTP 操作,就建立一次連接配接,任務結束就中斷連接配接。而從 HTTP/1.1 起,預設使用長連接配接,用以保持連接配接特性。什麼是 TCP粘包/拆包?發生原因?解決方案 一個完整的業務可能會被 TCP 拆分成多個包進行發送,也有可能把多個小的包封裝成一個大的資料包發送,這個就是 TCP 的拆包和粘包問題。
原因:
- 應用程式寫入資料的位元組大小大于套接字發送緩沖區的大小.
- 進行MSS 大小的 TCP分段。( MSS=TCP 封包段長度-TCP 首部長度)3. 以太網的 payload 大于 MTU進行 IP 分片。( MTU 指:一種通信協定的某一層上面所能通過的最大資料包大小。)
解決方案:
- 消息定長。
- 在包尾部增加回車或者空格符等特殊字元進行分割
- 将消息分為消息頭和消息尾。
- 使用其它複雜的協定,如 RTMP 協定等。
十七、TCP 如何保證可靠傳輸?
- 三次握手。
- 将資料截斷為合理的長度。應用資料被分割成 TCP 認為最适合發送的資料塊(按位元組編号,合理分片)
- 逾時重發。當 TCP 發出一個段後,它啟動一個定時器,如果不能及時收到一個确認就重發
- 确認應答:對于收到的請求,給出确認響應
- 校驗和:校驗出包有錯,丢棄封包段,不給出響應
- 序列号:對失序資料進行重新排序,然後才交給應用層
- 丢棄重複資料:對于重複資料 , 能夠丢棄重複資料
- 流量控制。TCP 連接配接的每一方都有固定大小的緩沖空間。TCP 的接收端隻允許另一端發送接收端緩沖區所能接納的資料。這将防止較快主機緻使較慢主機的緩沖區溢出。擁塞控制。當網絡擁塞時,減少資料的發送。
- 校驗和
- 序列号
- 确認應答
- 逾時重傳
- 連接配接管理
- 流量控制
- 擁塞控制
十八、常見的狀态碼
- 200:OK 用戶端請求成功 403 Forbidden //伺服器收到請求,但是拒絕提供服務
- 404:Not Found //請求資源不存在,eg:輸入了錯誤的 URL
- 500:Internal Server Error //伺服器發生不可預期的錯誤 URI 和 URL 的差別 URI,統一資源辨別符,用來唯一的辨別一個資源。URL 可以用來辨別一個資源,而且還指明了如何定位這個資源。
十九、什麼是 SSL
SSL 代表安全套接字層。它是一種用于加密和驗證應用程式(如浏覽器)和 Web 伺服器之間發送的資料的協定。身份驗證 , 加密 Https 的加密機制是一種共享密鑰加密和公開密鑰加密并用的混合加密機制。
SSL/TLS 協定作用
- 認證使用者和服務,加密資料,維護資料的完整性的應用層協定加密和解密需要兩個不同的密鑰,故被稱為非對稱加密;
- 加密和解密都使用同一個密鑰的 對稱加密。優點在于加密、解密效率通常比較高 HTTPS 是基于非對稱加密的, 公鑰是公開的
- 用戶端向伺服器端發起 SSL 連接配接請求;
- 伺服器把公鑰發送給用戶端,并且伺服器端儲存着唯一的私鑰
- 用戶端用公鑰對雙方通信的對稱秘鑰進行加密,并發送給伺服器端
- 伺服器利用自己唯一的私鑰對用戶端發來的對稱秘鑰進行解密,
- 進行資料傳輸,伺服器和用戶端雙方用公有的相同的對稱秘鑰對資料進行加密解密,
可以保證在資料收發過程中的安全,即是第三方獲得資料包,也無法對其進行加密,解密和篡改。
數字簽名
因為數字簽名、摘要是證書防僞非常關鍵的武器。“摘要”就是對傳輸的内容,通過 hash算法計算出一段固定長度的串。然後,在通過 CA 的私鑰對這段摘要進行加密,加密後得到的結果就是“數字簽名”
SSL/TLS 協定的基本思路是采用公鑰加密法,也就是說,用戶端先向伺服器端索要公鑰,然後用公鑰加密資訊,伺服器收到密文後,用自己的私鑰解密。
如何保證公鑰不被篡改?
将公鑰放在數字證書中。隻要證書是可信的,公鑰就是可信的。
公鑰加密計算量太大,如何減少耗用的時間?
每一次對話(session),用戶端和伺服器端都生成一個"對話密鑰"(session key),用它來加密資訊。由于"對話密鑰"是對稱加密,是以運算速度非常快,而伺服器公鑰隻用于加密"對話密鑰"本身,這樣就減少了加密運算的消耗時間。
(1) 用戶端向伺服器端索要并驗證公鑰。
(2) 雙方協商生成"對話密鑰"。
(3) 雙方采用"對話密鑰"進行加密通信。上面過程的前兩步,又稱為"握手階段"(handshake)。
SSL 工作過程
A:用戶端,B:伺服器端
- 協商加密算法:A 向 B 發送 SSL 版本号和可選加密算法,B 選擇自己支援的算法并告知 A
- 伺服器鑒别:B 向 A 發送包含公鑰的數字證書,A 使用 CA 公開釋出的公鑰對證書進行驗證
- 會話密鑰計算:A 産生一個随機秘密數,用 B 的公鑰進行加密後發送給 B,B 根據協商的算法産生共享的對稱會話密鑰并發送給 A.
- 安全資料傳輸:雙方用會話密鑰加密和解密它們之間傳送的資料并驗證其完整性
二十、TCP 對應的應用層協定
FTP:定義了檔案傳輸協定,使用 21 端口.
Telnet:它是一種用于遠端登陸的端口,23 端口
SMTP:定義了簡單郵件傳送協定,伺服器開放的是 25 号端口。
POP3:它是和 SMTP 對應,POP3 用于接收郵件。
HTTP
UDP 對應的應用層協定
DNS:用于域名解析服務,用的是 53 号端口
SNMP:簡單網絡管理協定,使用 161 号端口
TFTP(Trival File Transfer Protocal):簡單檔案傳輸協定,69