HMAC-SHA1認証

HMAC-SHA1の仕組みを解説。SHA-1の衝突攻撃にもかかわらず認証に安全である理由、TOTP/HOTPでの役割、HMAC-SHA256への移行時期を学びます。

HMAC

詳細な説明

HMAC-SHA1はSHA-1ハッシュ関数をHMAC構造内で使用して160ビット(20バイト)の認証コードを生成します。注目すべき点として、SHA-1自体は衝突耐性が破られていますが、HMAC-SHA1は認証目的では安全とされています。この区別は重要でよく誤解されます。

HMAC-SHA1がまだ安全な理由:

HMACのセキュリティは基盤ハッシュの擬似乱数関数(PRF)特性に依存し、衝突耐性には依存しません。SHA-1に対する既知の攻撃は衝突耐性を悪用しますが、HMACでは攻撃者が秘密鍵を知らずにタグを偽造する必要があります。HMAC-SHA1に対する実用的な攻撃は実証されていません。

HMAC-SHA1が活発に使用されている場面:

HMAC-SHA1はTOTP(Time-based One-Time Password、RFC 6238)とHOTP(HMAC-based One-Time Password、RFC 4226)のデフォルトアルゴリズムです。これらはGoogle AuthenticatorやAuthyなどの二要素認証アプリを支えています。OAuth 1.0はリクエスト署名にHMAC-SHA1を使用します。

移行の考慮事項:

HMAC-SHA1は理論的に安全ですが、多くの組織はHMAC-SHA256への移行を選択しています。コンプライアンスフレームワーク(PCI-DSS、FIPS 140-3)がSHA-256を要求する場合があり、自動セキュリティスキャナーがコンテキストに関係なくSHA-1の使用をフラグします。また、将来SHA-1のPRF破壊攻撃が発見された場合の緊急対応を事前に回避できます。

実装の注意:

TOTP互換性のためにはHMAC-SHA1を具体的に使用する必要があります。認証アプリがそれを期待するためです。ただし、RFC 6238は両者が対応する場合のSHA-256やSHA-512での代替もTOTPに定義しています。出力は20バイトで、OTPアプリケーションでは動的切り詰めにより6桁または8桁のコードが抽出されます。

ユースケース

HMAC-SHA1はTOTP/HOTP(Google Authenticator、Authy)による二要素認証を支え、レガシーシステムのOAuth 1.0リクエスト署名にも使用されています。

Try It — Hash Generator

フルツールを開く