ソフトウェアの更新が通知されるたびに、システムを定期的に更新します。これは私が詳細を知らなくても仕事をすることを信頼していることの1つですが、最近興味があります。どうすればそれを知ることができますか
- 更新をチェックするプロセスでは、正当な更新のみが表示されますか?
- 受け取ってインストールするアップデートは悪意のあるものではありませんか?
URLで自分で指定する一連のソフトウェアソースがあり、それらのソースを信頼するかどうかが私の決定であることを知っています。しかし、これらのURLを指定するとどうなりますか?
最近の一般的なことから、これらのソースの信頼性は、HTTPS/SSLに沿った何かで検証されているのではないかと思います。 e。何らかの権限に対して検証された証明書がいくつかあります。つまり、信頼できるルート証明書をどこかにインストールする必要があります(おそらくシステムに付属しています)。
さらに、パッケージはGPGなどのように暗号で署名されていると思います。
それらの仮定は正しいですか?使用されているキー/証明書はどこで検査できますか?それらが正しいものであるかどうかを確認するにはどうすればよいですか?それらが実際に使用されていることをどのように確認できますか?プロセスを多かれ少なかれ慎重にする構成オプションはありますか?また、それらのデフォルトは何ですか?既知の攻撃はありますか、それとも最近脆弱性がありますか?少し前にWindowsがそのような問題を抱えていたのを覚えているようです。
私は12.04にいますが、これはもっと一般的に答えられると思います。
承認された回答:
これは素晴らしい質問です。答えは(もちろん)かなり複雑ですが、あなたのためにそれを分解してみましょう。まず、技術的なプロセスを見てみましょう。
信頼の鎖
APTを保護するためにSSLを使用するのではなく、暗号化ハッシュ(SHA256、最近)とOpenPGP署名を使用します。これにより、信頼できないミラーを信頼でき、CAPKIを信頼する必要がなくなります。
APTのsources.list
にリポジトリを追加する場合 、apt-key
を使用して、そのPGPキーをAPTの信頼できるキーリングに追加する必要もあります。 指図。キーリングには、Ubuntuのリポジトリのキーが含まれています。また、apt-add-repository
を使用する場合 PPAを追加するコマンドを実行すると、キー(SSL経由でLaunchpadから取得)が追加されます。
信頼の鎖は次のとおりです。
- 各
sources.list
エントリはAPTをRelease
にポイントしますRelease.gpg
を含むリポジトリ内のファイル 署名(またはInRelease
として組み合わせることができます ファイル)。このファイルはリポジトリについて説明しており、APTのキーリングのキーで署名する必要があります。 Release
ファイルには、すべてのPackages
の暗号化ハッシュが含まれています およびSources
ファイル。これらには、リポジトリで利用可能なすべてのパッケージとバージョンが一覧表示されます。Packages
およびSources
ファイルには、各パッケージの暗号化ハッシュが含まれています。- パッケージ自体は署名されていません。ミラーによって署名されたリリースファイルから、彼らへの信頼の鎖があります。ただし、バイナリパッケージの構築に使用されるソースパッケージは、それらをアップロードした開発者によってPGP署名されています。
リポジトリ形式の詳細については、Debianwikiを参照してください。
このチェーンは、中間ミラーを信頼する必要がないことを意味します。インストールするパッケージは、リリースファイルが署名されたときに存在していたものと同一であると信頼できます。
sudo apt-key finger
を実行すると、APTのキーリングを検査できます。 。
Ubuntuのアーカイブキーの確認
そこに何があるべきかをどうやって知るのですか?コンピューターを信頼しない場合、コンピューター上のプログラムが嘘をつかないことを信頼することはできません(apt-key
など)。 )、そしてこの演習は無駄です。それで、これは学術的な関心から外れていると仮定し、それをアップロードした開発者によって署名されたPGPである最終的なソースパッケージからのキーリングの内容を確認しましょう。
ubuntu-keyring
をダウンロードします ソースパッケージ、およびそこにあるべきものを確認してください:
$ apt-get source ubuntu-keyring
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 20.0 kB of source archives.
Get:1 http://localhost/ubuntu/ quantal/main ubuntu-keyring 2012.05.19 (dsc) [1542 B]
Get:2 http://localhost/ubuntu/ quantal/main ubuntu-keyring 2012.05.19 (tar) [18.5 kB]
Fetched 20.0 kB in 0s (0 B/s)
dpkg-source: info: extracting ubuntu-keyring in ubuntu-keyring-2012.05.19
dpkg-source: info: unpacking ubuntu-keyring_2012.05.19.tar.gz
$ gpg --verify ubuntu-keyring_2012.05.19.dsc
gpg: Signature made Sat May 19 03:33:12 2012 SAST
gpg: using RSA key 0x393587D97D86500B
gpg: Good signature from "Colin Watson <[email protected]>"
gpg: aka "Colin Watson <[email protected]>"
gpg: aka "Colin Watson <[email protected]>"
gpg: aka "Colin Watson <[email protected]>"
$ gpg --no-default-keyring --keyring ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg --fingerprint
ubuntu-keyring-2012.05.19/keyrings/ubuntu-archive-keyring.gpg
-------------------------------------------------------------
pub 1024D/0x40976EAF437D05B5 2004-09-12
Key fingerprint = 6302 39CC 130E 1A7F D81A 27B1 4097 6EAF 437D 05B5
uid Ubuntu Archive Automatic Signing Key <[email protected]>
sub 2048g/0x251BEFF479164387 2004-09-12
pub 1024D/0x46181433FBB75451 2004-12-30
Key fingerprint = C598 6B4F 1257 FFA8 6632 CBA7 4618 1433 FBB7 5451
uid Ubuntu CD Image Automatic Signing Key <[email protected]>
pub 4096R/0x3B4FE6ACC0B21F32 2012-05-11
Key fingerprint = 790B C727 7767 219C 42C8 6F93 3B4F E6AC C0B2 1F32
uid Ubuntu Archive Automatic Signing Key (2012) <[email protected]>
pub 4096R/0xD94AA3F0EFE21092 2012-05-11
Key fingerprint = 8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
uid Ubuntu CD Image Automatic Signing Key (2012) <[email protected]>
私は何度か彼に会い、お互いの身元を確認し、お互いの鍵に署名したので、それが実際にはコリン・ワトソンの署名であることを知っています。 PGPストロングセットにキーがある場合は、彼への信頼パスを見つけることができるはずです。彼が正しいubuntu-keyring
をアップロードすることを信頼できることも知っています。 パッケージ。
Debianの場合、パッケージ(debian-keyring
)すべてのDebian開発者のPGPキーが含まれており、これを使用してソースパッケージの署名を検証できます。 Ubuntuには同等のものはありませんが、多くのUbuntu開発者はDebian開発者でもあり、すべての開発者のPGPキーはLaunchpadのプロファイルで利用できます。
その他の質問
更新が悪意のあるものではないことをどのように知ることができますか?
それは信頼に帰着します。使用するすべてのリポジトリを完全に信頼する必要があります。各リポジトリのメンテナに、マシン上でrootとして実行する権限を与えています。
Ubuntuパッケージは、Developer Membership Board(現在私がサービスを提供している)からアップロード権限を付与されているUbuntu開発者のみがアップロードできます。アップロード権を申請するには、あなたと協力し、あなたの能力があなた自身で働くことを信頼しているいくつかの既存のUbuntu開発者によって支持されなければなりません。アップロード権限がない場合、アップロードは、権限を持つ開発者が後援する必要があります(アップロードのレビューを含める必要があります)。
リリース後のアップデートについては、Ubuntuにはアップデートの内容に関する厳格なポリシーがあります。既知のバグを修正するための最小限のパッチのみを含める必要があります。パッチは、承認される前にSRU/セキュリティチームのメンバーによってレビューされます。
明らかに、PPAとサードパーティのリポジトリにはこれらすべての制限はありません。賢明であるためには、PPAの所有者を信頼する必要があります。
すべてのUbuntuおよびPPAパッケージには利用可能なソースがあるため、誰でも検査できます。
プロセスを多かれ少なかれ慎重にする構成オプションはありますか?また、それらのデフォルトは何ですか?
APTで署名の確認をオフにすることはできますが、もちろんデフォルトでオンになっています。署名されていない/信頼されていないリポジトリから何かをインストールしようとすると、aptは本当にこれを実行したいことを確認します。
既知の攻撃はありますか、それとも最近脆弱性がありますか?
1つ、Debianバグ499897を思い出します。Debianはリリースファイルに有効期限を与えることでこれを回避します。有効期限が過ぎると、信頼できなくなります。 Ubuntuはまだこれをサポートしていません。
関連:現在のワークスペースの名前を検索するにはどうすればよいですか?