Certificate TransparencyがSCTを証明書に埋め込む不正な認証局の問題を解決する方法を理解しようとしています。ログは追加専用であり、サーバーは証明書が実際にログに記録されたことを「証明」できることを理解しています。
私が不正なCAであり、証明書を発行するだけでなく、いくつかのログにも記録したいとします。誰も気にしないドメイン名の証明書を作成し(foobar.com
など)、事前証明書をログに送信します。その後、SCTを取り戻すことができます。次に、ポイズンエクステンションを削除し、別のドメイン名(たとえば、Paypal.com
)をSANフィールドに追加して、証明書を発行します。
これを防ぐメカニズムはありますか? CTログをスキャンしても、私がPaypal.com
の証明書を発行したことはわかりませんが、ブラウザーはその証明書を信頼しているはずであり、証明書をログに送信したと信じています。
CTの目的は、CAが許可されていない証明書を発行しないようにすることです。これを防ぐためのベースライン要件があると確信しています。CAがこれを実行すると、信頼されたルートから削除されます。しかし、これを防ぐための暗号的に安全な方法はありますか?
推測:うまくいきません。一部のCAが非標準の墨消しスキームを使用しようとしたときも同じです。 -これは、実際に別の証明書を発行しながら1つの証明書を送信する特定のバリアントです。これは、実際に確認する必要のあるブラウザによって検出されました。 -> 私のサイトでは証明書の透明性が有効になっていますが、Chromeは引き続きNET :: ERR_CERTIFICATE_TRANSPARENCY_REQUIRED を表示しています)
-CTの実施はブラウザ次第です。また、AFAIKはChromeでのみ必要です。ただし、CT =すべての要件は、Chrome 2017年10月の場合)が差し迫っています。参照: https://groups.google.com/a/chromium.org/forum/m/#!topic/ct-policy/78N3SMcqUGw
あなたが書いた:
CTの目的は、CAが許可されていない証明書を発行しないようにすることです。
そうではありません。目的は予防ではなく説明責任です。 CAはいつでも任意のドメインの証明書を発行できます。その部分はCTによって変更されません。
ゲームチェンジャーとは、不正な証明書が発行されると、次の2つのいずれかが発生する可能性があることです。
彼ら自身の言葉で:
証明書の透過性により、認証局によって誤って発行されたSSL証明書、または他の方法では攻撃できない認証局から悪意を持って取得されたSSL証明書を検出できます。また、不正になり、悪意を持って証明書を発行している認証局を特定することもできます。
はい、あなたが説明したシナリオをキャッチすることは可能です。
証明書チェーン全体がログに保存されるため、これが可能になります。質問は、「これを行う責任があるのはどちらの当事者か?」です。そして「彼らはそれをどのように行うのですか?」
主な責任は、依拠当事者であるクライアント(私の解釈であり、標準には記載されていません)が何かに依存する前に適切に確認することです。
RFC 6962ドキュメント に基づく、それがどのように起こるかについての私の再構成(解釈?)
クライアントが3aおよび3bを実行すると、詐欺が検出されると思います。 CTログとSCTの役割は、クライアント(証明書所有者とCT監査人を含む)が情報を利用できるようにすることで停止し、そのような不正を早期に検出できるようにします。
説明したシナリオで証明書所有者が共謀していない場合、証明書が所有者に配信され、所有者が証明書をCTログに送信するとすぐに問題が検出されます。証明書に署名の不一致があります。
証明書の所有者が共謀している場合でも、準拠しているブラウザー(クライアント)がこのチェックを行うと、証明書でのデータの変更方法に応じて、3aまたは3bで検出されます。