このQ & A https://security.stackexchange.com/questions/33123/hotp-with-as-hmac-hashing-algoritme-a-hash-from-the-sha-2-family

HMAC-SHA1のセキュリティは、衝突への耐性に依存しないと言っていますか?彼らは、HOTPまたはHMAC-SHA1に関して具体的に言っていますか?

HMAC-SHA1を使用してドキュメントの整合性を検証し、衝突を見つけた場合は、ドキュメントに変更を加えることができますよね?

http://tools.ietf.org/html/rfc2104#section-6

RFCでさえ、衝突に対する耐性があると述べています関連する

ここに示すメッセージ認証メカニズムのセキュリティは、ハッシュ関数Hの暗号化プロパティによって異なります:衝突検出への耐性(初期値が秘密でランダムであり、攻撃者が関数の出力を明示的に利用できない場合に限定)、および単一ブロックに適用された場合のHの圧縮関数のメッセージ認証プロパティ

ここで何が欠けていますか?

コメント

  • 質問には混乱があるようです。HMAC-SHA1はドキュメントの署名に使用されません(少なくとも、通常は使用されません。は、キー入力がシークレットであるというHMACの標準的な仮定は、'以降は保持できません。署名の検証手順は公開されています)。 その答えは非常に良いと思います。
  • @ fgrieu-用語を間違えたと思います-手話を書いたとき、整合性を保護するためにメッセージ認証ダイジェストを生成して実際に作成されました。衝突の場合、メッセージを変更して同じMACを保持できるので、問題ですよね?
  • HMAC-MD5は暗号化されたデータを認証するために安全であると考えられていますか??この質問はMD5ではなくSHA1に関するものですが、答えはほぼ同じです。
  • ' SHAに対する原像攻撃があるかどうかは、かなり確信しています。 -1これは爆発します。

回答

この回答の最初のセクションでは、ハードウェアまたは/およびアルゴリズムの改善により、 Xiaoyun Wang、Yiqun Lisa Yin、HongboYuと同様の方法でSHA-1の衝突を示すことが日常的に可能になりました。 s攻撃、またはマークスティーブンスの攻撃。これは公に達成されました 2017年の初めに、明らかに実現可能でした(この作業は、ビットコインマイニングに費やされたハッシュ作業のほんの数時間に相当しますが、それに使用されるハードウェアはできません。 SHA-1への攻撃のために再利用されます。

質問で考慮されていることとは反対に、攻撃者がコウイングしないことを 許可しません。ドキュメントに検出されない変更を加えるためのHMAC-SHA-1キー。これには、攻撃者が後で変更する意思のあるドキュメントを準備できるかどうかも含まれます。

1つの説明は、検討しているSHA-1への衝突攻撃には次の状態の知識が必要であるということです。 SHA-1チェーン変数、およびキーを知らないHMACの攻撃者は、メッセージがHMACに存在するラウンドの反復の両端にキーが入力されることにより、その知識を奪われます。 HMACを破壊するには、SHA-1のラウンド関数をさらに深く破壊する必要があります。偶然ではありませんが、M。Bellareの NMACとHMACの新しい証明:セキュリティ衝突耐性なし は、HMACのセキュリティが、対応するハッシュの衝突耐性に必要なものよりもラウンド関数のプロパティが弱いと仮定して保持されることを示しています。

攻撃者は HMACキーを知っているため、後で変更する意思のあるドキュメントを準備します。このドキュメントは、MACを変更せずに変更できます。ただし、攻撃者はHMACキーを保持しているため、「HMACの中断とは見なされません。


コメント SHA-1を使用すべきでないのはいつですか?

衝突耐性が必要なアプリケーションでは、SHA-1をすぐに段階的に廃止することをお勧めします(画像として:終了したらすぐに立ち去ってください)煙がないときに火災警報器が鳴る建物)。これには、整合性チェックのためのハッシュや、一部でも他の人が作成したドキュメント(つまりほとんどのドキュメント)のデジタル署名が含まれます。 SHA-1の使用を継続することで運用上の大きなメリットがある場合は、メッセージの敵が影響を与える可能性のある部分の前に、敵が予測できないものを挿入することで、安全に例外にすることができます。たとえば、証明書の要求時に予測できない証明書のシリアル番号を適用することで、認証局は内部署名にSHA-1を使用して証明書を安全に発行できます。

この最初のセクションで説明したように答え、HMAC-SHA-1の鍵が秘密であると想定されている限り、HMAC-SHA-1はSHA-1を使用しているため、安全でないという兆候はありません。キーが公開されていると見なされる場合、またはそのリークが、キーの開示後に作成されたメッセージを含め、HMACの衝突耐性が依然として必要である操作上の可能性と見なされる場合は、前の段落で説明した予防措置が適用されます。

コメント

  • では、SHA1を使用すべきでないのはいつですか。つまり、SHA1で問題が発見されたため、どこで使用できなくなりますか?
  • '通常は離れることをお勧めします(" walk "。とはいえ、HMAC-SHA1の固有の構造は、基盤となるPRFの衝突耐性に依存しない、HMACのセキュリティ証明により、(秘密鍵を想定して)安全に使用できると考えられています。疑わしい場合は、SHA-2に移動してください。
  • @ StephenTouset-ええ、わかりました。ただし、離れたり離れたりするのではなく、逃げる必要があるSHA-1の使用法はありますか。
  • いいえ、そうでない場合はアドバイスになります。 SHA-1 'の衝突耐性は、現時点では理論的な意味でのみ壊れています。既知の衝突はまだ見つかっていませんが、現在の最善の攻撃は実現可能性の限界にあります。

回答

HMAC-MD5またはHMAC-SHA1がまだ安全であると人々が言うとき、それらは「PRFおよびMACとしてまだ安全である」ことを意味します。

ここでの重要な仮定は、キーが攻撃者に知られていないということです。

$$ \ mathrm {HMAC} = \ mathrm {hash}(k_2 | \ mathrm {hash}(k_1 | m))$$

  • 可能性攻撃1:「多くのキーに有効な」ユニバーサル衝突を見つけます。

    HMACを使用すると、メッセージは直接ハッシュされませんが、プレフィックスとして$ k_1 $が付けられます。これは、攻撃者がハッシュしないことを意味します。メッセージの開始時のハッシュの内部状態を知る。ほとんどの選択肢で衝突するメッセージを見つけるのは$ k_1 $です 1

  • 潜在的な攻撃2:キーを回復する

    これを成功させるには、ハッシュ関数は単なる衝突よりもはるかに大きなブレークを必要とします。これは、最初の原像攻撃に似ており、MD5とSHA1の両方で引き続き強力な特性です。

一方、攻撃者が知っているキーを使用し、攻撃者が基になるハッシュ(任意のIVの場合)で衝突を見つけることができる場合、これらのターンHMACの衝突に。したがって、キーなしのシナリオでセキュリティが必要な場合は、SHA2などの衝突耐性のあるハッシュを使用し、HMACをまったく使用しないことを検討してください。


1 そうではないと思います計算上無制限の攻撃者でも可能ですが(現実的なメッセージサイズの場合)、それを証明することは困難です。

コメント

  • では、SHA1を使用すべきでないのはいつですか。つまり、SHA1で問題が発見されると、どこで使用できなくなりますか?
  • @ user93353前述のように、HMAC-SHA1のセキュリティは、不明なキーに依存します。キーがない場合、または攻撃者に知られている場合、SHA1での衝突が脅威になります。ただし、より良い代替手段が利用できるため、SHA1を新しい設計で使用することはめったにありません。
  • キーが攻撃者に知られている場合は、SHA2でさえも使用されます。問題になりますか?
  • @ user93353達成したい内容によって異なります。もちろん、キーなしのハッシュはMACではありません。
  • @ CodesInChaos-HMAC-SHA1はキーがわかっている場合にのみ問題が発生しますが、キーがわかっている場合わかっていますが、これはHMACハッシュ操作で問題になりますよね?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です