
您是否只是「姑且」用之?
在現代網頁開發中,JWT (JSON Web Token) 已成為身份驗證的主角。多虧了優秀的函式庫,即便不深入了解內部結構,也能做出「能跑」的東西。然而,這種「姑且用之」的心態,有時可能會造成無法挽回的安全漏洞。
「JWT 到底是在保護什麼?」、「簽章(Signing)與雜湊(Hashing)有什麼不同?」
讓我們解開這些疑問,成為能充滿自信談論資訊安全的工程師。
JWT「三個碎片」扮演的角色
JWT 是由點(.)分隔出的三個部分所組成:
- 標頭 (Header):信封的封面,記錄了「是用什麼方式簽名的」。
- 載荷 (Payload):信件的內容,記錄了「是誰」以及「到何時為止」有效。
- 簽章 (Signature):證明信封中途沒被打開或內容沒被更動的「蓋章驗證」。
這裡最重要的一點是:「標頭與載荷是任何人都讀得到的」。它們僅是被 Base64 編碼,而非被加密。在載荷中放入密碼或信用卡號,就像是把信件放入透明塑膠袋而非信封中寄出。
信任的關鍵:簽章與雜湊
JWT 真正的價值在於其「完整性(Integrity)」,而支撐這一點的正是雜湊與簽章。
- 雜湊:為資料製作「數位指紋」(例如:「如果是這份資料,就會產生這個值」)。
- 簽章:用密鑰(Secret Key)在雜湊值上蓋章。如果不具備密鑰的第三方竄改了載荷中的任何一個字,它就會與簽章產生不一致,從而立刻被識破是「偽造品」。
如何派送金鑰:JWKS 的魔法
當使用公鑰驗證(如 RSA)時,驗證方該如何取得金鑰(Key)?
這時就會用到 JWKS (JSON Web Key Set)。
伺服器會在網路上公開「最新的公鑰在這裡喔!」,而驗證方則會自動去讀取它。這套機制讓系統得以在不停止運行的情況下,安全地進行金鑰的定期更新(輪換)。
在 DevToolKits 「體會」安全性
僅靠文字難以理解的概念,只要實際操作一次便能融會貫通。
- JWT 工具:在瀏覽器中安全地觀察您的 Token 是由哪些「碎片」組成的。
- JWKS 生成器:生成金鑰對,並模擬它們實際上是以何種 JSON 格式公開的。
- 雜湊生成工具:使用 SHA-256 等演算法,親眼見證資料是如何轉變成「指紋」的。
結語
資訊安全就是將「不安」轉化為「確信」的過程。
正確了解原理並使用合適的工具,您的系統將變得更強大、更值得信賴。歡迎來到這個雖然低調卻至關重要的資安世界。