web-dev-qa-db-ja.com

データ暗号化の有無にかかわらずHMAC?

少量のデータ(16/18バイト)を定期的に送信するシステムを開発中です。変更されるのは、送信ごとにインクリメントされる4バイトのカウンターだけです。データ自体は機密ではないため、暗号化は必須ではありませんが、受信者はMACアルゴリズムを使用してデータを検証する必要があるため、HMAC-SHAを選択しました。連続する送信では、データペイロードのほんの数ビットしか変化しない(カウンターの増分)という事実を踏まえると、データの暗号化なしでHMAC-SHAを使用しても安全ですか、またはこの種の実装により、攻撃者が誤ったMACを生成する可能性がありますか?

6
samuele.forconi

メッセージの整合性を確立するには、はい、HMAC-SHAで問題ありません。

懸念される可能性があるのは、メッセージが傍受され、カウンターが変更され、HMACが再生成され、変更されたメッセージが元の受信者に渡される中間者攻撃の場合です。この場合、公開鍵アルゴリズムを使用してHMACハッシュ(事実上デジタル署名)に署名し、送信者を認証することを検討できます。

編集:キーが間違った手に渡らない限り、心配する必要はありません。

2
Whome

暗号化に対する攻撃は、MACに対する攻撃ではありません。MACは、目的が異なる2つの別個のエンティティだからです。あなたは一種の質問に自分で答えました。データをスニッフィングの影響を受けやすいとは考えないので、暗号化は必要ありません。

ただし、MACの場合、他のデータの暗号化が必要になる可能性がある次の問題が発生します。

  1. キー共有:ハッシュを生成する「キー」を共有する

  2. #1のデータまたは非対称キーがデータの送信先ではなく、あなたからのものであることを第三者(否認防止)に証明する。共有されたキーを使用して偽装できるため、MACは「キー付き」ハッシュであるため、対称的な性質を持っています。

#1を解決するには、データのHMACに使用されるキーを転送するために非対称暗号化が必要です。 #2を解決したり、#1の非対称キーを検証したりするには、証明書または信頼のWebのいずれかであるPKIをセットアップする必要があります。

2
dylan7