HMACはキー付きハッシュメッセージ認証コードです。同じメッセージでも異なるキーを使用すると異なる結果になるため、データが改ざんされていないことを検証すると同時に、メッセージの送信者がキーを保持していることを確認できます。API署名、Webhookコールバックの検証、ダウンロードURLの改ざん防止などで利用されています。
HMAC-SHA1、HMAC-SHA256、HMAC-SHA384、HMAC-SHA512、HMAC-SHA3-224、HMAC-SHA3-256、HMAC-SHA3-384、HMAC-SHA3-512の8種類に対応しています。SHA1は非推奨として表示され、デフォルトではSHA256を使用します。キーとメッセージはそれぞれUTF-8、Hex、Base64として個別に解析でき、出力はHexまたはBase64から選択できます。
検証モードでは定時間比較を使用し、比較処理時間の差による情報漏えいを防ぎます。結果にはダイジェスト長、メッセージ長、キー長を表示し、キーが途中で切れていないか、余分な空白が含まれていないか確認できます。JWT署名ではBase64URLが使用され、標準Base64とはパディングと2つの文字が異なるため、比較時には注意が必要です。
キーまたはメッセージをHexとして解析する際に不正な文字や奇数長がある場合は、その原因を明確に表示します。Base64の解析失敗も通知し、誤った署名結果を返しません。メッセージまたはキーが空の場合、検証時に期待するHMACが未入力の場合も、先に入力の補完を促します。
HMAC計算はすべてブラウザ上でローカルに実行されます。サーバー側の計算APIはなく、キーやメッセージがサーバーへアップロード・保存されることはありません。それでも、デバッグ時には本番環境の実キーではなくテスト用キーを使用することを推奨します。
コメント 0