CAルート証明書がすべてSHA-1で署名されるのはなぜですか(SHA-1は非推奨であるため)


67

SSL証明書はSHA-1を使用してもう署名できないことを理解しています。それでも、すべてのCAルート証明書はSHA-1で署名されています(ほとんど)。「おばあちゃんのSSLショップ」で信頼されなくなった同じアルゴリズムが、世界で最も安全な証明書としては問題ないということですか?

何か不足していますか?(キーの使用法?キーのサイズ?)


9
「すべて」のCAルート証明書がSHA1であることは事実ではありません。
グレッグアスキュー

5
ルート証明書は、世界観での仮定を開始するようなものです。彼らを信頼するには信仰が必要です。
ロイティンカー

cogito ergo sumを除いて@RoyTinker (根本的な疑念を参照してください、そしてそれは答えです:デカルトの懐疑論)?
ニックT


6
@NickT:安全にプレイする-cogito ergo cogito ;-)
tonysdg

回答:


106

ルートCA証明書の署名は、それらを検証する必要がないため、重要ではありません。それらはすべて自己署名されています。

ルートCA証明書を信頼する場合、その署名を検証する必要はありません。信頼できない場合、その署名は価値がありません。

編集:以下に非常に関連性の高いコメントがあります。私は彼らをコピーしたり言い直したり、著者の代わりに彼らの功績を称えたりすることに抵抗を感じています。しかし、この答えに説明を追加してくれる人を歓迎します。


3
なぜ署名されるのかという疑問をもたらします
リチャードティングル

42
システムは署名されていない証明書をサポートしていないためです。
停止ハーミングモニカ

クラック可能なルート証明書に関する懸念は、「ルート証明書の入手元がわからない」ことではなく、「この証明書を解読して使用できるのは誰なのかわからない」ようです。好きなものに署名します。」そして、あなたの答えから、2つ(証明書と証明書署名)は別々の懸念事項であり、証明書自体は適切に安全で解読できないと思われますか?
デウィモーガン

20
「検証する必要はありません」よりもさらに先に進みます。証明書チェーンの署名の目的は、上位の機関が下位の機関を認証することです。ルートCAの場合、定義により上位の権限はないため(「ルート」の意味)、証明書に署名できる人はいません。前述のように、証明書に署名する必要があり、ルートCAは「ダミー」署名で署名されているため、最も簡単な方法は自己署名です。そのため、検証する必要がないだけでなく、ルートCAの署名を検証するというアイデアは無意味です。
ヨルグWミットタグ

13
@DewiMorganクライアントは(自己)署名ではなく証明書自体を信頼するため、ハッシュ衝突でルート証明書を「クラック」することはできません。秘密鍵を回復する必要があります。これは、ハッシュアルゴリズムではなく、RSAに対する攻撃です。
zwol

46

一日の終わりに、ルート証明書は自己署名されます。それ以外のエンティティによって署名されることはありません。ルート証明書は、信頼できる発行元のブラウザーリストに送信したり、Windowsの信頼できる発行元のデフォルトリストに挿入するためにMicrosoftに受け入れられるなどのアウトオブバンドプロセスを通じて信頼を取得します。

これらの証明書(およびそれらに自己署名した会社)は、署名だけでなく他の方法で徹底的に吟味されています(おそらく、願わくば)。


2
言うまでもなく、ルート証明書を更新するには、その帯域外プロセスを再度実行する必要があります。
-Kaithar

4
「申し立てによると、うまくいけば」+1
ネイサンオスマン

6

これが重要な唯一のケースは、ルートがSHA-1によって署名されている場合、SHA-1によって取り消すことができるということです。つまり、SHA-1を攻撃できる人は、ルートの失効を構築できます。そして、私はブラウザがそれを持続する方法を知らないことを絶対に確信しています。ダサいよ。


1
これは興味深い考えですが、これがこのように機能するとは思わない。私の推測では、各エージェントには独自の動作がありますが、開発者は、失効リストを使用してルート証明書の失効を管理するという考えを持っているとは思いません。少なくとも、これがいくつかのケースで機能する場合、それはソフトウェアの取り消しの抽象化によるものであり、開発者による意図的なものではないでしょう。
ピーターOehlert

1

この1上の注意点として、SOME CAは、すでにとにかくSHA256へのルート証明書と中間証明書を更新してきました。

昨年GlobalSignがコード署名証明書を更新するときに証明書を更新していたことを知っているので、それらにも新しいチェーンを追加する必要がありました。

どの特定の証明書が更新され、どの証明書が更新されたかを確認できますが、ここでレガシーSHA1証明書を残しました=> 1

お役に立てば幸いです。


0

ルートCAの場合、自己署名に関係なく、CRTにバンドルされているCAの公開キーを信頼します。

生の公開鍵.PEMの代わりに.CRTファイル形式を使用してCAを記述すると、CA名などの詳細をバンドルできます(ただし、署名は価値がありません)


-1

あります時代は、ほとんどが2006またはそれ以前の、非常に古い、既に任意の新しい証明書のブラウザが受け入れる固定SHA1のルート証明書を信頼され、ではなく。FirefoxとChromeが1桁でバージョン管理されていたことを覚えていますか?

ルートCAが、Not Beforeを2014年以降に設定したSHA1証明書を使用する場合、証明書は失敗します。実際の日付制限は、ブラウザーまたは他のアプリケーションによって異なります。WebCA cabforumは、数年前にこれを明らかにしました。これを自分でテストしてください:

  1. SHA1で署名されたプライベートルート認証局インフラストラクチャを作成し、rootSHA1と呼びます
  2. rootSHA1に、ルートにチェーンされた証明書で証明書を発行する「発行」CAまたは「中間」CAを作成させます。IntermediateSHA256と呼びます。
  3. CAを発行するIntermediateSHA256に、sha256以上のハッシュで署名された証明書を生成させます。webServerSHA256と呼びます。
  4. webServerSHA256をwebServerSHA56.mydomain.comにインストールします。
  5. rootSHA1、intermediateSHA256、およびwebServerSHA256証明書をGoogle Chromeの適切な場所にインストールします。ルートを信頼されたルート証明機関と証明書チェーンを持つ他の機関にインストールします。
  6. Google Chromeをhttps://webServerSHA256.mydomain.com/に移動し、webServerSHA256に緑色の南京錠がないことを確認します。テストは失敗します。

これはまったく間違っています。中間証明書(およびEE./leaf証明書)にはSHA2が必要ですが、ルートには必要ありません。Google独自の証明書チェーンは、プライベートCA(Google Internet Authority G3)を介してGlobalSign Root CA R2(SHA1)に接続され、Chromeで(当然のことながら)受け入れられます。
dave_thompson_085

はい、これらのピン留めされたSHA1証明書は受け入れられますが、独自の信頼されたルート証明書ストアに追加しても、新しいSHA1ルート証明書は受け入れられません。私の答えにテストケースを追加しました。
rjt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.