メインコンテンツへ
セキュリティ

HMAC(Hash-based Message Authentication Code)の主な目的として正しいものはどれか。

ア.メッセージを暗号化して第三者による盗聴を防止する。
イ.公開鍵インフラ(PKI)を利用してメッセージの送信者を認証する。
ウ.メッセージを圧縮して通信帯域を節約する。
エ.共有秘密鍵とハッシュ関数を組み合わせてメッセージの完全性と認証を提供する。正解

解説

HMACは「合言葉(共有鍵)入りのハンコ(ハッシュ)」。合言葉を知っている人だけが正しいハンコを押せるので、「このメッセージは確かにあなたが送った、改ざんもされていない」を同時に証明できる。

なぜ エ が正解か

エが正解。HMAC = H(K XOR opad || H(K XOR ipad || M))。KはHMACキー(共有秘密鍵)、Hはハッシュ関数(SHA-256等)、Mはメッセージ。①メッセージ完全性:受信側が同じキーでHMACを計算し一致確認→改ざん検出②認証:共有キーを知る者だけがHMACを生成できる。TLS/HTTPSのMAC、JWT署名(HS256)等に使用される。

なぜ ア は間違いか

HMACはメッセージを暗号化しない。メッセージ本文は平文のまま(完全性確認のためのタグを付加する)。盗聴対策にはAES等の暗号化が必要。

なぜ イ は間違いか

公開鍵インフラを使わず共有秘密鍵方式(対称)。非対称(PKI)認証はデジタル署名(RSA/ECDSA)の仕組み。

なぜ ウ は間違いか

圧縮は全く異なる目的。HMACの出力はメッセージより長くなることもある(認証タグを追加するから)。

出典: AI生成問題(学習用)