ソフトウェアインストールにおけるデジタル証明書(署名)の検証


2

ソフトウェアがオペレーティングシステムによってインストールされている場合、デジタル証明書(署名)の検証中に正確に何が起こるかを知る必要があります。私はこれが非対称鍵プロセスであることを理解しており、私は秘密鍵/公開暗号化プロセスに関する実用的な知識を持っています。

インターネットで検索していくつかの文書を見つけましたが、次の質問に対する答えが得られないようです(これらのうちのいくつかはそれほど知的ではないかもしれません)。

  • ソフトウェアがインストールされているとき、誰が(OSの代わりに)ソフトウェア発行者から公開鍵(デジタル署名)を取得しますか?誰がここに連絡されますか?反対側にデーモンはありますか?それともリポジトリがありますか?
  • インターネットに接続していない場合はどうなりますか?この場合、検証プロセスはどのように行われますか?
  • 有名なソフトウェア会社の名前を使用してソフトウェアが誤って署名されていてインストールしようとした場合、どのCA(認証局)に連絡して保護されますか?プロセスは自動ですか、それとも私(インストーラー)が手動でプロセスを実行する必要がありますか?
  • ソフトウェアベンダーの公開鍵はインストール後にローカルに保存されますか?どこ?これらを見ることができますか?
  • 私のブラウザは、ソフトウェアの署名検証プロセスにおいて何らかの役割を果たしますか?またはブラウザが気になる https サイトのみ?

あなたの答えは一般的なものにしてください(OSに依存しない)。あなたがいくつかの特定のソフトウェアに言及する必要があるならば、私の好みの順序はその順序でUbuntuとウィンドウズのそれらです。

回答:


2

これはオペレーティングシステムに大きく依存するので、一般的な答えはありません。

Arch Linuxでは パッケージはPGPを使って署名されています - オリジナルの作者(ソースコードのみを提供している人)ではなく、 包装業者 (誰がソースコードをプログラムにコンパイルし、そして署名されたパッケージを作成します)。

署名は、パッケージデータベース内に残りのパッケージ情報と共に保存されます。 (サードパーティ製パッケージの場合 - あなたがダウンロードしたときに .pkg.tar.xz ファイル - 署名は1秒以内になります .pkg.tar.xz.sig データベース自体に署名することはできますが、通常はそうではありません。

pacman Arch Linuxでは、の鍵に対する署名を検証します。 /etc/pacman/gnupg.d (を使用して管理 pacman-key ;署名者の鍵をまだ持っていない場合は、署名者の鍵をダウンロードするよう要求します。 キーサーバー 。中心となる「認証局」はありません - PGPはWeb of Trustアルゴリズムを使用しており、誰かの鍵の有効性は他の人がその鍵に署名した内容によって異なります。 (例えば、すべての公式開発者キーは5つの「マスターキー」によって署名され、マスターキーは「信頼できる」とマークされているため、すべての開発者キーもパッケージマネージャによって信頼されます。システム、 archlinux-keyring パッケージ。)

PGPでは、CAが存在しないため、鍵はその所有者のみが失効させることができます。新しい署名や失効について調べるには、キーサーバーからキャッシュされたキーを定期的に更新する必要があります。 gpg --refresh-keys あなた自身のキーリングのためにこれをします pacman-key --refresh-keys パッケージの検証に使用されるキーリングを更新します。

Ubuntuでは 、PGPも使用されていますが、多少異なります。パッケージ自体はほとんど署名されず、パッケージデータベース内のハッシュサムに対してのみ検証されます。これは自動プロセス(「Debianアーカイブ自動署名キー」または「John Smith用のランチパッドPPA」などのキーを使用)によって署名されます。 。

署名はローカルの鍵リングに対しても検証されます( /etc/apt/trusted.gpg、を使用して維持 apt-key ) - しかしArchとは異なり、Ubuntuパッケージマネージャは鍵の署名を無視して信頼します。 すべて そのキーリングのキー、つまり自動的にキーをダウンロードすることはなく、キーを更新する必要もありません。オフィシャルキーは、さまざまな場所にプレインストールされています。 foo-keyring パッケージ( debian-keyring これらのキーの1つが無効にされた場合、アップデートされたパッケージはそれを削除します。

Windowsの場合 つまり、プログラムは「Authenticode」を使って署名することができます。これは基本的にコード署名に使われるX.509です。署名と署名者自身の証明書は、プログラムの内部に埋め込まれています。 .exe ファイル。 (X.500はかつて持っていた当初の計画にもかかわらず、PGPとは異なり、X.509には鍵サーバーがないため、証明書を添付する必要があります。) Linuxとは異なり、ほとんどのWindowsプログラムは作成者によってコンパイルされた形式で配布されているため、.exeファイルは作成者によって直接署名されています。

発行者の証明書は、信頼できる認証局のローカルデータベースに対して検証されます。 Windowsでは、あなたはそれを見ることができます certmgr.msc - 含まれる証明書は、CAからの要求に従ってマイクロソフトによって決定されます。 (注:おそらく、Windows 7は必要なときに必要なCA証明書をダウンロードできるので、証明書マネージャーのリストは不完全な可能性があります。)

署名の検証中に、Windowsは発行者のOCSPサーバーに連絡して、証明書がまだ失効していないかどうかを確認します。 (OCSPサーバアドレスは通常、発行者の証明書の一部です。)つまり、失効は最初に証明書を発行したのと同じCAによって処理されます。 (注:デフォルトでOCSPチェックが有効になっているかどうかはわかりません。有効にするか無効にするかのオプションがあります。 コントロールパネル→インターネット→詳細設定→セキュリティ 場合によっては、マイクロソフトは既知の偽の証明書を「信頼できない」とマークし、CAリストの定期的な更新と同じ方法で配布します。に certmgr.msc この方法でいくつかの証明書が失効したことがわかります。

一部のブラウザ(OperaやFirefoxなど)には、独自のCA証明書データベースがあります。これらはWindowsでは使用されていません。一方、Internet ExplorerとGoogle Chromeは同じWindowsデータベースを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.