不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學習啦>學習電腦>網絡知識>網絡技術>

如何正確地使用加密與認證技術(4)

時間: 恒輝636 分享

  0x04 認證

  如上所述,認證旨在提供信息的完整性(我們指顯著抗篡改能力),而這證明它來自預期的源(真實性)。這樣做的典型方法是,為信息計算一個密鑰散列消息認證碼(HMAC的簡稱),并將信息與它連結。

  function hmac_sign($message, $key)

  {

  return hash_hmac('sha256', $message, $key) . $message;

  }

  function hmac_verify($bundle, $key)

  {

  $msgMAC = mb_substr($bundle, 0, 64, '8bit');

  $message = mb_substr($bundle, 64, null, '8bit');

  return hash_equals(

  hash_hmac('sha256', $message, $key),

  $msgMAC

  );

  }

  重要的是,這里使用一個適當的哈希工具,如HMAC,而不僅僅是一個簡單的散列函數。

  function unsafe_hash_sign($message, $key)

  {

  return md5($key.$message) . $message;

  }

  function unsafe_hash_verify($bundle, $key)

  {

  $msgHash = mb_substr($bundle, 0, 64, '8bit');

  $message = mb_substr($bundle, 64, null, '8bit');

  return md5($key.$message) == $msgHash;

  }

  我在這兩個函數名前面加了unsafe,是因為它們還是易受到一些缺點的危害:

  Timing Attacks

  Chosen Prefix Attacks on MD5 (PDF)

  Non-strict equality operator bugs (largely specific to PHP)

  現在,我們有點接近我們強大的對稱加密認證的目標。目前仍有幾個問題,如:

  如果我們的原始信息以空字節(jié)結尾會發(fā)生什么?

  有沒有一個比mcrypt擴展庫默認使用的更好的填充策略?

  由于使用AES,有哪些通信方面是易受攻擊的?

  幸運的是,這些問題在現有的加密函數庫中已有了解答。我們強烈推薦你使用現有的庫,而不是寫自己的加密功能。對于PHP開發(fā)人員來說,你應該使用defuse/php-encryption(或者libsodium)。

如何正確地使用加密與認證技術(4)

0x04 認證 如上所述,認證旨在提供信息的完整性(我們指顯著抗篡改能力),而這證明它來自預期的源(真實性)。這樣做的典型方法是,為信息計算一個密鑰
推薦度:
點擊下載文檔文檔為doc格式
168319