應用密碼學
原像抗性
把雜湊函數想像成一台工業絞肉機:拿到香腸,你無法還原出那頭牛。原像抗性指的正是這種單向性。給定一個雜湊值 y,任何有效率的演算法都不應能找到任何訊息 x 使得 H(x) = y。函數正向計算很容易,反向計算則不可行。
有兩種常被混淆的版本。第一原像抗性:僅從輸出 y 出發,找出某個雜湊到它的 x。第二原像抗性:給定特定訊息 x1,找出不同的 x2 使得 H(x2) = H(x1)。對一個理想的 n 位元雜湊而言,暴力破解這兩種性質都約需 2^n 次運算——對 SHA-256 來說即 2^256,遠遠超出任何可想像的電腦能力。請注意這比找出碰撞困難得多,後者依生日界僅需約 2^(n/2),因為攻擊者可以自由選擇兩個輸入。
區塊鏈處處仰賴原像抗性。地址是公鑰的雜湊,因此公開地址並不會洩漏金鑰;雜湊時間鎖定合約把資金鎖在 H(secret) 之後,只有持有祕密者能領取;工作量證明則是一場受限的原像搜尋,要找出讓區塊雜湊低於目標值的 nonce。一旦雜湊失去原像抗性,以地址為基礎的保護、承諾揭露方案與 PoW 謎題都將瓦解。
原像抗性並不蘊含碰撞抗性,反之一般亦然——一個雜湊可能具備其中一種而缺另一種。穩健的設計會同時追求全部三種性質(第一原像、第二原像、碰撞)。
另见