Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
about-hmac — HMACの実装例と説明 | Kitploit
ツール/GitHubGitHub/password123456/about-hmac
暗号化認証学習と教育APIセキュリティ
GitHubpassword123456/about-hmac

about-hmac

HMACの実装例と説明

リポジトリを見る
2172年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

HMACについて

made-with-python Python Versions Hits

Flaskを使用したPythonでの基本的なHMAC(ハッシュベースのメッセージ認証コード)の実装例。

HMACとは?!

ハッシュベースのメッセージ認証コード(HMAC)は、サーバーとクライアントにそれぞれ、その特定のサーバーとその特定のクライアントのみが知る秘密鍵を提供します。クライアントは、リクエストデータを秘密鍵でハッシュ化し、それをリクエストの一部として送信することで、リクエストごとに一意のHMAC(ハッシュ)を作成します。HMACがメッセージ認証コード(MAC)よりも安全な理由は、鍵とメッセージが別々のステップでハッシュ化されることにあります。

img

例

(1) クライアントからサーバーへのリクエスト

  • クライアントがサーバーにリクエストを送信する際、以下のヘッダーを含めます:

  • X-Authorization-Content-HMAC: HMACハッシュ (リクエストURI全体、現在のUnixタイムスタンプ(UTC)、HMAC秘密鍵)

  • X-Authorization-Timestamp: クライアントの現在のUnixタイムスタンプ(UTC)

(request)
GET /example/users?user=test&institutionID=999&signature=7e745d74b69b7f62e8e2 HTTP/1.1
Host: example.com
X-Authorization-Content-HMAC: 1c73495878ccea24af9dd281a4c883c40a3551ba799d30f4ad7d9afb6a60fbd4
X-Authorization-Timestamp: 1711662980

[ クライアントリクエスト処理 ]

  • クライアントはリクエストを準備し、サーバーに送信します。
  • サーバーはHMACの整合性とタイムスタンプの有効性を検証してリクエストを検証します。
  • 検証が成功した場合、サーバーはリクエストを処理します。失敗した場合、エラーレスポンスを送信します。

(2) サーバーからクライアントへのレスポンス

  • サーバーが有効なリクエストに応答する際、以下のヘッダーを含めます:

  • X-Response-Content-HMAC: HMACハッシュ (レスポンスボディ全体、現在のUnixタイムスタンプ(UTC)、HMAC秘密鍵)

  • X-Response-Content-TimeStamp: 現在のUnixタイムスタンプ(UTC)

(response)
HTTP/2 200 OK
Date: Fri, 29 Mar 2024 06:50:49 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 52
X-Response-Content-HMAC: 529c33aac3e33bf2a95d534f8b3ac61dee2ed79232d729e571dc669417a1a2ae
X-Response-Content-TimeStamp: 1711663027
Connection: close

{"result": "ok", "users": "test", "sub": 2840345654}

[ レスポンス処理 ]

  • サーバーはレスポンスデータを準備し、クライアントに送信します。
  • (追加) 必要に応じて、クライアントはレスポンスデータのHMAC整合性を検証できます。
  • 検証が失敗した場合、クライアントはレスポンスデータを拒否します。
Server response HMAC verification successful
--------------
Response timestamp: 2024-03-29T09:25:31
Current time: 2024-03-29T09:25:31
Time difference: 0

補足

  • GETとPOSTの使用に関する厳格なルールはありませんが、セキュリティ上の理由からPOSTが一般的に推奨されています。GETリクエストを使用すると、すべてのクエリ文字列がWebアクセスログに記録される可能性があります。
  • 一貫性を確保しタイムゾーン関連の問題を回避するために、タイムスタンプ情報には常にUTC Unixタイムスタンプを使用してください。
  • HMAC計算の範囲は異なる場合があります。通常はレスポンスボディ全体のハッシュ化を行いますが、特にレスポンスボディが大きい場合はデータの選択的ハッシュ化も可能です。
  • HMACアルゴリズム(例:Hmac-SHA256、Hmac-SHA512)と秘密鍵の長さの選択は、セキュリティ要件とベストプラクティスに基づく必要があります。

リプレイリクエストの防止

  • サーバーは処理済みリクエストをメモリ(例:Redis)に保存し、特定の時間枠内で繰り返されるリクエストを破棄することで、リプレイ攻撃を防ぐことができます。
  • さらに、サーバーはクライアントがリクエストヘッダーで送信したタイムスタンプヘッダー(X-Authorization-Timestamp)を現在のサーバー時刻と比較することで、リプレイ攻撃の防止を強化できます。タイムスタンプが特定の時間枠外にある場合、サーバーはリクエストを破棄できます。

そして...

これが役に立ったと思われたら、「スター」🌟を付けてさらなる改善を支援してください。

ツールをダウンロード