Cookie署名は、cookie値に暗号署名を追加してその整合性と真正性を確保するセキュリティ技術です。サーバーがブラウザにcookieを送信する際、cookie値にハッシュベースのメッセージ認証コード(HMAC)を追加します。この署名はサーバーのみが知っている秘密鍵を使用して作成されます。ブラウザがcookieを返送する際、サーバーは署名を検証してcookieが改ざんされていないことを確認できます。

HMAC-SHA1署名はどのように機能しますか?

HMAC(ハッシュベースのメッセージ認証コード)は、暗号ハッシュ関数と秘密鍵を組み合わせて一意の署名を生成します。Cookie署名の場合、プロセスは以下のように機能します:

  1. 署名: 元のcookie値がHMAC-SHA1アルゴリズムを使用して秘密鍵と組み合わされ、署名が生成されます。最終的な署名付きcookie形式はvalue.signatureです。署名はbase64urlエンコードされます。

  2. 検証: 署名付きcookieを受け取る際、サーバーは元の値と署名を抽出し、同じ秘密鍵を使用して予想される署名を再計算し、タイミング攻撃を防ぐためにタイミングセーフな比較を使用して比較します。

署名なしのcookieはユーザーまたは悪意のあるスクリプトによって簡単に変更される可能性があります。ユーザーはセッションID、ユーザーロール、またはcookieに保存されている他の機密データを変更できます。署名付きcookieは、値の変更を検出可能にすることでこれを防ぎます。値が変更されると、署名は無効になります。

ツール説明

このツールを使用すると、HMAC-SHA1署名を使用してcookie値に署名および署名を解除でき、人気のあるcookie-signature npmパッケージ形式と互換性があります。cookie値と秘密鍵を入力して署名付きcookieを生成するか、署名付きcookieを貼り付けて元の値を抽出および検証します。

cookieに署名する:

入力(署名なし) 秘密鍵 出力(署名付き)
user123 my-secret-key user123.SNk0sCiCAuZ5cwj0lNdJfUgwqU4
session_abc app-secret session_abc.sBzU4FZRe3BfgNWZQB4viGTH37A

cookieの署名を解除する:

入力(署名付き) 秘密鍵 出力(署名なし)
test.sOx9vuKRxxXdUOK0uLcAQ4CIORo password test

無効な署名検出:

間違った秘密鍵またはcookieの改ざんされた値でcookieの署名を解除しようとすると、ツールは「無効な署名」エラーを表示します。

機能

  • HMAC-SHA1を使用してcookieに署名 - 任意の秘密鍵を使用
  • 署名付きcookieの署名を解除して検証 - 元の値を抽出
  • タイミングセーフな比較 - 検証中のタイミング攻撃を防止
  • 互換性のある形式 - Node.js cookie-signatureパッケージと互換
  • ブラウザベース - Web Crypto APIを使用した処理。データはサーバーに送信されません

ユースケース

  • Express.jsセッションのテスト: Express セッションcookieが適切に署名され、秘密鍵でデコードできることを確認
  • 認証の問題のデバッグ: 署名付きcookieから元の値を抽出して、ログインまたはセッションの問題をトラブルシューティング
  • セキュリティ監査: Webアプリケーションでcookie署名が正しく機能していることを確認
  • 暗号化の学習: HMACベースのcookie署名が実際にどのように機能するかを理解
  • 移行テスト: 秘密鍵を変更またはフレームワーク間で移行する際のcookie互換性を確保