HMAC 驗證
HMAC 驗證
定義
Hash-based Message Authentication Code,使用密鑰與雜湊函數對訊息進行認證的機制。文章中的 SHA-256 簽章是 HMAC 概念的簡化實作——將密鑰與訊息串接後直接計算 Hash,而非使用標準 HMAC 算法(HMAC-SHA256)。
關鍵數據點(附來源)
- 文章使用的是「密鑰 + 欄位直接串接後 SHA-256」的方式,而非嚴格的 HMAC-SHA256。(api-security-design-connection-key)
- 標準 HMAC 會對密鑰做 padding 和兩次 Hash,安全性略高於直接串接。
- 台灣金流業者的做法也多為直接串接(非標準 HMAC),但在實務上已足夠。
前提與局限性
- 直接串接可能受到 length extension attack,標準 HMAC 不受此影響。
- 對於大多數 Web 應用場景,直接串接的安全性已足夠。
- 需要雙方約定相同的欄位順序與分隔符。
衝突標記
- 文章中的實作嚴格來說不是 HMAC,而是簡化版的密鑰雜湊。在低風險場景下差異可忽略,但高安全需求場景應使用標準 HMAC-SHA256。
關聯概念
- [[請求簽章]]
- [[重送攻擊防禦]]
- [[API 金鑰管理]]