少量のデータ(16/18バイト)を定期的に送信するシステムを開発中です。変更されるのは、送信ごとにインクリメントされる4バイトのカウンターだけです。データ自体は機密ではないため、暗号化は必須ではありませんが、受信者はMACアルゴリズムを使用してデータを検証する必要があるため、HMAC-SHAを選択しました。連続する送信では、データペイロードのほんの数ビットしか変化しない(カウンターの増分)という事実を踏まえると、データの暗号化なしでHMAC-SHAを使用しても安全ですか、またはこの種の実装により、攻撃者が誤ったMACを生成する可能性がありますか?
メッセージの整合性を確立するには、はい、HMAC-SHAで問題ありません。
懸念される可能性があるのは、メッセージが傍受され、カウンターが変更され、HMACが再生成され、変更されたメッセージが元の受信者に渡される中間者攻撃の場合です。この場合、公開鍵アルゴリズムを使用してHMACハッシュ(事実上デジタル署名)に署名し、送信者を認証することを検討できます。
編集:キーが間違った手に渡らない限り、心配する必要はありません。
暗号化に対する攻撃は、MACに対する攻撃ではありません。MACは、目的が異なる2つの別個のエンティティだからです。あなたは一種の質問に自分で答えました。データをスニッフィングの影響を受けやすいとは考えないので、暗号化は必要ありません。
ただし、MACの場合、他のデータの暗号化が必要になる可能性がある次の問題が発生します。
キー共有:ハッシュを生成する「キー」を共有する
#1のデータまたは非対称キーがデータの送信先ではなく、あなたからのものであることを第三者(否認防止)に証明する。共有されたキーを使用して偽装できるため、MACは「キー付き」ハッシュであるため、対称的な性質を持っています。
#1を解決するには、データのHMACに使用されるキーを転送するために非対称暗号化が必要です。 #2を解決したり、#1の非対称キーを検証したりするには、証明書または信頼のWebのいずれかであるPKIをセットアップする必要があります。