作者TKB5566 (= =)
看板talk
標題[偷可] 網路安全-HTTP驗證、HTTPS、JWT
時間Mon Jan 8 19:16:34 2024
前面說過HTTP是應用層最普遍的傳輸協定,針對用戶的身分驗證,
HTTP具備了基本驗證與摘要驗證。
基本驗證就是伺服器一般使用帳密驗證的方式。
而
摘要驗證,則是比較複雜一點;瀏覽器在要發送用戶資訊(例如帳密)之時,
並不直接對伺服器發送用戶帳密,而是
1
先對伺服器發送一個「準備要發送用戶訊息」的請求,
2
伺服器接收到這個請求,會回傳一個nonce給瀏覽器。
3
瀏覽器接收到這個nonce,
才會將用戶帳密(密碼會事先用hash演算法,轉成hash code)、這個nonce、
其他相關資訊,先使用hash演算法計算出一串hash code,
再將這串hash code,以及用戶帳號,傳送給伺服器。
4
所以
伺服器接收到的,就是由nonce計算出來的一串hash code、用戶帳號。
5
這時伺服器可以根據用戶帳號,取出存在於資料庫,對應的密碼hash code。
然後拿著這段密碼hash code,跟自身早先給予的nonce,以及其他用戶資訊,計算出
另一串hash code。接著拿這段新計算出來的hash code,跟接收到的hash code來比對。
6
若兩串hash code的比對結果是一樣的,表示兩串hash code的組成是一模一樣,
由於不同input(input是密碼hash code、nonce、用戶資訊)
產生兩串相同hash code的機率是趨近於0,
而且hash code還可以透過加鹽的方式讓這個趨近於0的機率變的更低。因此,兩串相同的
hash code,就表示有著相同的密碼hash code、相同的nonce、相同的用戶資訊......
7
由此即可證明
用戶的資訊,確實是屬於某個合法(用戶資料有存在於資料庫)的用戶。
這就是HTTP摘要驗證。
-----------------------------------------
那什麼是HTTPS呢?就是將HTTP訊息本體,用SSL/TLS這個方式來加密。透過對HTTP訊息
加密,即可對用戶機敏資訊做到資安三要素的機密性。
---------------------------------------
那什麼是
JWT?就是一種在用戶登入系統後,用於驗證用戶在網路中身分的工具。
其實要做到用戶登入系統後的身分驗證,可以使用HTTP Session即可。
但HTTP Session主要是用於同一系統內的身分驗證。
若是跨系統的身分驗證,則最好使用JWT。
JWT本身是在用戶成功登入系統後,由伺服器經過其私鑰加密,再分發給瀏覽器的。
之後瀏覽器若要再次發送用戶資訊,就只需要發送JWT這個代表用戶資訊的訊息,
傳送到伺服器後,由伺服器的公鑰來解密,即可辨識出JWT這個用戶資訊。
因為是跨系統傳送JWT的,多個系統都需要對JWT解密,故解開JWT的密鑰必須是公鑰。
而加解密的技術,通常用的是RSA演算法。這就是JWT的概況。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.45.43 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/talk/M.1704712596.A.B81.html
※ 編輯: TKB5566 (101.12.45.43 臺灣), 01/08/2024 19:17:45
→ show6669: 對 一般網站https 就夠了 01/08 19:41
→ TKB5566: 終於有人捧場了 我好感動QQ 01/08 19:48
→ show6669: ?? 01/08 20:32