TLS証明書でハッシュアルゴリズム(SHA-1など)が果たす役割は次のとおりです。
したがって、ハッシュコリジョンを生成しようとすることにより、SHA-1証明書を持つサイトになりすましてSHA-1ダイジェストを攻撃することを決定したとしましょう。
彼らがWebサイトの実際の公開鍵と同じSHA-1ダイジェストを生成する別の値を見つけた場合、彼らは何を得ましたか?
CAによって署名されているように見える証明書を偽造できるようになりましたが、実際の公開鍵の代わりにXが含まれていますが、Xに対応する秘密鍵がなければ、これは役に立たないのではないでしょうか。
RSAを解読する必要があります。 Xに一致する秘密キーを見つけることは、サブジェクトの公開キーを直接攻撃するのと同じくらい実行不可能ではないでしょうか?
つまり、ハッシュによってセキュリティが強化された場合はどうなるのでしょうか。そうでなければ、SHA-1の減価はそれほど大したことにならないでしょう。 RSAのような公開鍵暗号化は入力が大きい場合は遅いため、主にパフォーマンス上の理由からハッシュがデジタル署名で使用されると思いました。
彼らがWebサイトの実際の公開鍵と同じSHA-1ダイジェストを生成する別の値を見つけた場合、彼らは何を得ましたか?
MD5を扱っているとしましょう。 SHA-1攻撃はまだ進行中の作業であり、MD5で可能な攻撃とほぼ同じ行に従うと思います。
MD5では、(特定の境界内で)ハッシュ衝突を生成する2つの異なる値を作成することが可能です。ただし、これは、任意の入力データとそのデータのハッシュ値だけが与えられた場合にハッシュ衝突を作成できることを意味するものではありません。
あなたの例では、MD5またはSHA1で署名された証明書を取得して偽物を作成することはできないことを意味します。したがって、CA内で作成された内部CA証明書はそれほど危険にさらされません。ただし、特別にフォーマットされた証明書をCAに送信し、署名が検証されるように署名済みデータを変更することは可能です。
したがって、証明書を要求するのと同じ組織が攻撃を行っている組織です。これは、彼らがすでに秘密鍵を取得していることを意味します。したがって、公開鍵を置き換えることは可能ですが、あまり意味がありません。
だから彼らは何ができるのか。まあ、それは証明書内の「いくつかの他の情報」についてです。これは、情報を要求する組織によって変更できます。基本的に、彼らは彼らが欲しいものをそこに置くことができます。これは、特定のドメインの証明書がanotherドメインの証明書になる可能性があることを意味します。証明書は、他の証明書の作成に使用できる証明書になる可能性があります(ただし、パスの長さの制約により、この問題が緩和される場合があります)。
言い換えると、認証局はハッシュに署名します。ハッシュは他のデータに有効な場合があります。認証局は、それが署名している証明書をもう知りません!ユーザーとして、攻撃者が秘密鍵を保持した状態で、happy.attacker.com用に作成された有効な署名を持つmail.google.comの証明書を取得する可能性があります。つまり、Googleとまったく通信していない可能性があります。
誤解:
ハッシュ関数は、サブジェクトの公開鍵に適用されます。
いいえ、明示的な信頼を必要とする証明書の属性に適用されます(この例ではドメイン名も同様です)。公開鍵だけではありません。
次に、CAは秘密鍵を使用してハッシュ出力を暗号化します。
いいえ、署名の生成は暗号化ではありません。 RSAの場合もmodular exponentiationを使用しますが、これは暗号化と同じではありません。 RSA仕様(PKCS#1)でさえ、署名の生成と暗号化を区別します。
その暗号化の出力とその他の情報が証明書になります。
その一部の情報は非常に重要であり、その多くは公開鍵とともに署名されています。有効期間、発行者、公開鍵、署名、件名、鍵の使用法、パスの長さの制約、失効関連情報はすべて非常に重要です。
したがって、ハッシュコリジョンを生成しようとすることにより、SHA-1証明書を持つサイトになりすましてSHA-1ダイジェストを攻撃することを決定したとしましょう。
これでも、約2 ^ 159回の操作が必要です。ですから、真面目な研究者がこれを試みることはありそうにありません。
CAによって署名されているように見える証明書を偽造できるようになりましたが、実際の公開鍵の代わりにXが含まれていますが、Xに対応する秘密鍵がなければ、これは役に立たないのではないでしょうか。
はい、そうです。そして実際には、公開鍵は単一の値Xで構成されておらず、X5.09証明書内でASN.1/DERエンコードされた係数と指数で構成されています。したがって、Xはかなり具体的な構造を持つ必要があります。この方法で証明書を破ろうとした場合(既に上で確立されているように、これは実行不可能です)。そのため、キーを特定のXに置き換えるだけで役に立ちます。
ただし、署名された鍵と証明書のエンコーディングには、追加情報が含まれている場合があります。これは攻撃者によって悪用される可能性があり、実際に実際のMD5攻撃を実行する必要があります。
RSAのような公開鍵暗号化は入力が大きい場合は遅いため、主にパフォーマンス上の理由からハッシュがデジタル署名で使用されると思いました。
いいえ、パフォーマンス上の理由だけではありません。 RSAにはパディングが必要です。パディングが必要なため、メッセージのキー(モジュラス)サイズよりも約11バイト少なくなります。古いPKCS#1 v1.5パディングが使用されている場合に備えて。一般的に、署名された属性はそれよりも大きくなります。その場合は、ハッシュ方式を使用してデータを圧縮する必要があります。別の公開鍵アルゴリズムであるECDSAは、実際にはデータを暗号化できません。
一般に、ハッシュ方式は、署名アルゴリズムの構成オプションと考えるのがよいでしょう。つまり、署名アルゴリズムの整数部です。これは、さまざまな規格で指定されている方法でもあります。
CAによって署名されているように見える証明書を偽造できるようになりましたが、実際の公開鍵の代わりにXが含まれています
丁度。彼らは、攻撃者自身のサブジェクトと自分の公開鍵を含む証明書を作成しました。そしてもちろん、攻撃者はこのハッキングされた証明書に対応する秘密鍵も持っています。
これを使用して、新しく作成された証明書のサブジェクトと一致する任意のサーバーになりすますことができます。または、中間者攻撃を実行してトラフィックを傍受し、さらにはトラフィックを変更することもできます。ただし、元の証明書で保護されている接続を受動的に探知して復号することはできません。