質問: sha1シグネチャを持つルートcaがリスクではない理由 たとえば、sha1ハッシュ署名を持つルートcaがあるverisignのwebサイトを見てみましょう。衝突を見つけるためのものであると誤解しましたが、verisignルートcaになりすまして、ブラウザまたはosによって信頼される中間証明書を生成してからサーバー証明書を生成する可能性があります。 https://www.entrust.com/need-sha-2-signed-root-certificates/ の状態: つまり、ソフトウェアはルート証明書の公開鍵を直接信頼するため、ルート証明書の署名は検証されません。ルート証明書は自己署名されており、権限を与えられた別のエンティティによって署名されていません。ルート証明書は、オペレーティングシステムまたはブラウザ開発者が管理するルート証明書プログラムを通じて権限を取得します。 そして、googleリンクを参照します: https://security.googleblog.com/2014/09/gradually-sunsetting-sha-1.html 注:信頼されたルート証明書のsha-1ベースの署名は問題ではありません。tlsクライアントは、ハッシュの署名ではなく、idによってそれらを信頼するためです。 私が新しいブラウザの作者であると仮定します-superuserbrowser。ブラウザに同梱されているルート証明書がハッシュ署名以外のものであることを他にどのように信頼できますか?sha1署名のあるルートcaが「問題ではない」のはなぜですか?
回答: 衝突を見つけるためのものであると誤解しましたが、verisignルートcaになりすまして、ブラウザまたはosによって信頼される中間証明書を生成してからサーバー証明書を生成する可能性があります。 あなたは間違っている。署名自体のセキュリティに関しては: 証明書の署名は、信頼チェーンを構築するために、その証明書の発行者を検証するために使用されます。ルートcaは、事前に信頼されている(つまり、osのトラストストアに格納されている)ため、信頼チェーンの信頼できる端であるため、ルートcaの発行者を検証する必要はなく、ルートcaの署名は問題にならない。また、弱いハッシュアルゴリズムで署名されたルートcaを使用して新しい証明書を作成する場合: 別の証明書に署名する(つまり、リーフまたは中間証明書を作成する)には、caの秘密鍵が必要です。証明書が自己署名されている(つまり、取得しようとしている秘密鍵を使用して署名されている)場合でも、証明書の公開鍵と一致する秘密鍵は、証明書の発行者によって発行された署名から取得できません。証明書への署名は、最初に不可逆ハッシュアルゴリズムを使用して証明書の重要な部分をハッシュし、次に発行者の秘密鍵で「暗号化」することによって行われます。新しい証明書の署名に必要な秘密鍵を取得するには、暗号化(rsaまたはecc)を攻撃する必要があります。つまり、ハッシュされた証明書を「暗号化」するときに同じ署名になる鍵を見つけます。ただし、rsa/ecc署名はまだ壊れていないため、秘密鍵を抽出できず、この鍵を使用して新しい証明書を生成できません。この証明書で署名された新しい証明書を作成する別の方法は、同じハッシュ値になる証明書を作成することです。ただし、sha-1は衝突攻撃に対して脆弱です(つまり、同じ出力を持つ2つの入力を見つけます)が(md5とは対照的に)現在、プリイメージ攻撃(特定の出力の入力を見つける)に対して脆弱ではありません。つまり、この攻撃ベクトルも失敗します。