web-dev-qa-db-ja.com

ルートCAが期限切れになると、コード署名証明書はどうなりますか?

これまでのところ明確です:コード署名証明書自体の有効期限が切れると、タイムスタンプで署名された場合に備えて、署名されたコードが検証/受け入れられます。そうでない場合、署名されたコードも期限切れになります。

しかし、私のCA自体が期限切れになった場合はどうなりますか(ルートCA、つまり発行CA)。

  • タイムスタンプが付けられていても、コードは受け入れられますか?
  • 期限切れのルート証明書と発行CA証明書がまだ存在している必要がありますか(信頼されたルートCA証明書ストアなど)?これは私の仮定ですが、CAが降格されても、署名されたものを実行するクライアントはCAを信頼する必要がありますか?そうしないと、信頼チェーンが壊れますよね?
  • CRLまたはAIAの欠如は問題を引き起こしますか?
9
dr_pepper285

しかし、私のCA自体が期限切れになった場合はどうなりますか(ルートCA、つまり発行CA)。

文字通り、何も。それについてもう少し詳しく説明しましょう。

署名にタイムスタンプが付けられていない場合、署名は次の条件を満たす限り有効です。

  • データは改ざんされていません
  • 署名証明書は有効期限です
  • チェーン内のどちらの証明書も取り消されていません
  • ルート証明書は信頼されています

署名証明書の有効期限が切れた、失効した、または何らかの方法で無効になった場合、署名は無効と見なされます。簡潔でシンプル。

デジタル署名のタイムスタンプの目的は、署名されたコンテンツの信頼を拡張することです。署名証明書は短期間有効であり、基本的な信頼設定は長期間の(おそらくアーカイブされた)署名には適していません。通常(タイムスタンプなし)、署名証明書が更新されるたびに署名を再作成する必要があります。それはどこにも行かない方法です。

タイムスタンプをデジタル署名に追加すると、信頼条件が次のリストに変更されます。

  • データは改ざんされていません
  • 署名証明書* was *署名時に有効な時間:署名時間は署名証明書の有効期間内です
  • どちらの証明書も取り消されなかった* before *署名の生成
  • 署名とタイムスタンプの両方の証明書は、信頼されたルートCAにチェーンされます(それらの時間の有効性に関係なく、トラストストアにある必要があります)。

ここでの変更点:署名は、関連する証明書の有効期限が切れた後も有効のままです。つまり、署名とタイムスタンプ証明書のチェーン全体が(ルート証明書とともに)期限切れになる可能性があり、信頼を失うことはありません。チェーン内の証明書は取り消すことができます。唯一の要件:証明書が失効した場合、失効時間(CRLから取得)は、署名の作成後の時間に設定する必要があります(署名時間はタイムスタンプによって識別されます)。前の文は、どちらの証明書も署名時に取り消されなかったことを証明するために、署名されたCRLが必要であることを意味します。

これが、最近のWindowsシステムが古くなって期限切れのルート証明書を出荷する理由です。それらは古い署名を検証するために引き続き使用され、タイムスタンプが付けられます。

しばらく前に私はこの件についてより詳細に説明するブログ投稿を書きました: デジタル署名とタイムスタンプ

12
Crypt32