「無法還原為原始資料」的強大之處

在儲存密碼時,若直接將其放入資料庫是非常危險的。這時我們會用到 雜湊 (Hashing)

雜湊與 HMAC:學習資訊安全基礎概念與活用方法

雜湊是指「將輸入的資料轉換成一段絕對無法還原的複雜字串」。雖然這聽起來可能不太方便,但這種「單程票」的特性,正是保護我們數位生活的盾牌。

雜湊與 HMAC:看似相近卻不相同

在資訊安全的討論中常會出現這兩個術語,讓我們簡單整理一下:

1. 雜湊 (Hashing):採取資料的「指紋」

  • 角色:確認資料是否「正確」。
  • 特點:同樣的資料產生的雜湊值絕對相同,但無法從雜湊值推測出原始資料。
  • 用途:密碼儲存(僅將雜湊值存入資料庫)、檔案竄改檢查。

2. HMAC:確認資料的「封印」

  • 角色:確認資料是否「來自獲得授權的人」。
  • 特點:在雜湊過程中結合了「密鑰 (Secret Key)」。
  • 用途:API 請求驗證、Webhook 簽章。由於只有知道金鑰的人才能進行正確的運算,因此能防止冒充攻擊。

守護安全的智慧

技術日新月異,過去的「安全」在現今可能變得「力有未逮」。請記住目前的標準做法:

  • 演算法的選擇:現在的標準是 SHA-256SHA-512。過去主流的 MD5 或 SHA-1 已有被運算攻破的風險,因此在新系統中應避免使用。
  • 鹽 (Salt) 的魔法:並非直接雜湊密碼,而是在運算前依據每位使用者加入不同的「香料(隨機字串)」。如此一向,即使多位使用者使用相同的密碼,產生的雜湊值也會截然不同,讓攻擊者更加頭痛。

實際操作,親身「體會」原理

「雜湊值長什麼樣子?」、「更改金鑰後 HMAC 會如何變動?」
歡迎使用本站的 雜湊與 HMAC 產生器 來滿足您的好奇心。

輸入資料,看著 SHA-256 長字串瞬間出現;輸入金鑰,見證 HMAC 產生劇變。透過親眼觀察這些變化,那些抽象的「安全」概念,將會化為您實實在在的知識。

常見問題

雜湊與加密有什麼不同?

差別在於能不能還原。加密只要有金鑰就能還原成原始資料,雜湊則是單向的,無法還原。密碼之所以用雜湊儲存就是這個原因。不過「無法還原」不等於「安全」:短密碼仍可透過暴力嘗試逐一雜湊比對而被猜中,因此還需要加鹽與速度較慢的雜湊函式。

bcrypt 的成本因子該怎麼選?

以在您實際使用的伺服器上,一次雜湊耗時約 100~250 毫秒為基準。數值每加 1,計算量就變成兩倍,所以請在實機測量後決定。硬體會越來越快,適當值也會隨之上升,因此不要設定一次就放著不管,建議每隔幾年重新檢視。

該用 SHA-256 還是 SHA-3?

一般的完整性驗證用 SHA-256 就足夠,目前並沒有已知的實用攻擊。SHA-3 是以不同內部結構準備的替代方案,並不是因為 SHA-256 變得危險才出現。不過無論哪一種,都不該用於儲存密碼,因為兩者都被設計得很快,反而有利於暴力破解。

密碼以外的機密資料也能用雜湊嗎?

視用途而定。若目的是「隱藏值本身,但仍要比對是否一致」,雜湊是有效的。但像電子郵件這類候選範圍有限的值,即使雜湊過也可能透過比對被反推出來。這種情況請加上鹽,或一開始就選擇加密。

結語

資訊安全是在看不見的地方默默守護我們的守護神。
了解雜湊與 HMAC 的原理,是與該守護神建立良好關係的第一步。不必想得太複雜,不如先從用工具「動手玩玩看」開始吧?