HMACについて
hidevtool の HMAC は UTF-8 テキストと秘密鍵からメッセージ認証コードを生成します。MD5、SHA-1、SHA-2 系と hex / Base64 出力を選べ、データはアップロードされません。
できること
秘密鍵の役割
秘密はメッセージと一緒にハッシュに混ざります。同じ秘密を知る相手だけが同じ MAC を再計算でき、改ざん検知と「鍵保持者由来」の示唆になります。平文 SHA では誰でも同じ digest を再計算できます。
ハッシュアルゴリズム
- HMAC-SHA256 — 現在の API / Webhook で最も一般的。
- HMAC-SHA512 / SHA-384 — 仕様が長い MAC を要求するとき。
- HMAC-SHA1 — レガシー連携。新設計では避ける。
- HMAC-MD5 — 互換のみ。新規 secret や決済には使わない。
メッセージと鍵
- メッセージも秘密も UTF-8 文字列。典型 SDK 例と同じ。
- 送受信で alg、鍵、出力エンコーディング(hex / Base64)を一致させる。
- HMAC は暗号化ではなく、内容は隠れず整合性・由来の検証。
出力エンコーディング
- Hex — 小文字。ログや JSON フィールド向け。
- Base64 — 短い。API ドキュメントの指定に合わせる。
安全に使う
- 1長くランダムな secret を使う。本番鍵を公開フロントに埋め込まない。
- 2新 API は HMAC-SHA256 以上。担当者・ベンダー変更時は鍵をローテーション。
- 3サーバーで MAC 比較は定数時間比較を推奨。
- 4無関係な製品・環境で同じ secret を使い回さない。
- 5パスワード保存は PBKDF2/bcrypt/Argon2 — HMAC 単体ではない。
よくある使い方
API リクエスト署名
ゲートウェイや決済ドキュメント通りに正規化リクエストや body digest に HMAC。
Webhook 検証
エンドポイント secret で HMAC を再計算し X-Hub-Signature 等と照合。
JWT HS* デバッグ
対称鍵 JWT 連携で HMAC-SHA256 署名が正しいか確認。
よくある質問
- HMAC は何に使う?
- API 署名、Webhook 検証、共有 secret があり改ざんを検知したい場面全般。
- なぜ secret が必要?
- secret がないと「内容が変わったか」しか分からず「誰が作ったか」は分かりません。secret で検証側は鍵保持者の MAC だけを信頼できます。
- どの alg を選ぶ?
- 既定は HMAC-SHA256。ドキュメントがレガシーで SHA-512、SHA-1、MD5 を指定する場合のみ従う。メッセージ・secret・alg・エンコーディングを変えると結果は自動更新されます。
- Hex と Base64?
- API 仕様に従う。本ツールは両方対応。ドキュメントでは hex が多く、一部 Header は Base64。
- secret はアップロードされる?
- いいえ。計算はブラウザ内のみです。