Skip to content
All writing Part 02 of 07 · 一次 JWT 稽核背後的七個盲點
Engineering · 2 min read

對稱與非對稱簽章:選擇的依據

HS256 共享一把密鑰,同時簽章和驗證。RS256 用兩把。選哪個取決於一個問題:驗證方能不能擁有簽章能力?

簽章證明誰建立了 token。它不隱藏 token。兩種簽章方式各有不同的信任模型。

對稱 (HS256) 一把共享密鑰 secret "abc123" 簽章 AND 驗證 非對稱 (RS256) 私鑰 + 公鑰 私鑰 (保密) 公鑰 (公開) 只能簽章 只能驗證

對稱 (HS256):HMAC + SHA-256。一把密鑰。簽章方和驗證方共享它。密鑰一漏,任何人都能偽造 token。

非對稱 (RS256):RSA + SHA-256。兩把鑰匙。私鑰簽章,公鑰驗證。公鑰可以公開,因為它不能簽章。

HS256(對稱)RS256(非對稱)
金鑰數量1 把共享密鑰2 把(私鑰 + 公鑰)
誰能簽章任何持有密鑰的人只有私鑰持有者
誰能驗證任何持有密鑰的人任何持有公鑰的人
適用情境所有服務彼此信任驗證方不能擁有簽章能力

稽核中的發現: 朋友的 side project 用 HS256。auth-service、lobby-service、game-server 共享一把 JWT_SECRET。這行得通,lobby 和 game-server 只驗證,不簽章。但如果未來有外部服務需要驗證 token,就得換成 RS256。

「選對稱還是非對稱,只看一個問題:驗證方能不能擁有簽章能力?」

參考來源

回到總覽:一次 JWT 稽核背後的七個盲點 · JWT 是什麼 · 演算法混淆與 none 攻擊

Tags #jwt #security #authentication
// connect

Be brave | Be wise | Be grateful

21 BreakinCode

// elsewhere
LinkedInMedium (lang: en)Youtube
wh:~$William Hung· © 2026 Taipei · GMT+8 · Available for collaboration