apt-key add の目的は何ですか?

apt-key add の目的は何ですか?

aptからパッケージをインストールするときに、次のような操作を行うことがあることに気付きました。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \

私の理解が正しければ、ここで行うことは、 から GPG 公開鍵を取得しhttps://download.../gpgて に配置することです。次に、apt に「 からパッケージをダウンロードするときに、これらのパッケージがこの公開鍵に属する秘密鍵によって署名されていることを確認する」よう/usr/share/keyrings/docker-archive-keyring.gpgに指示します。https://download.docker.com/...

よくわかりません。反対側が Docker であると信頼している場合https://download.docker.com/.. (公開鍵を取得する場所が Docker であるため信頼しています)、そこから来るパッケージを gpg キーで検証する必要があるのはなぜですか?

自己署名証明書のように思えます。

何か見逃しているのでしょうか?

答え1

これには複数の理由があり、すべては中間者攻撃(MITM) - 具体的には、将来的にMITM攻撃や「偽のダウンロードソース」への悪意のあるリダイレクトに遭遇した場合からユーザーを保護します。あなたは良い鍵を手に入れました。


最悪の状況、つまりシステムがすでに侵害され、悪意のある人物(略して「MA」)の悪質なサイトにリダイレクトされている場合、あなたは困った状況に陥ります。また、MAのキーをダウンロードするため、この方法では保護されません。ここでのPGPキーとキーリングの保護の目的は、次のことを防ぐことではありません。未来MITM攻撃。

この例では、すでに侵害されており、どのキーが使用されているかは関係ありません。なぜなら、この時点でMAがあなたのコンピュータ、ネットワーク、データなどを制御している可能性が高いからです。しかし、最も一般的な保護シナリオは、始めるクリーンな環境/システムとそれから正規のソースからソフトウェアをインストールします。(次のセクションを参照)


ただし、侵害された環境から開始することは、キー署名が保護する「一般的なシナリオ」ではありません。最も一般的なシナリオは、クリーンなシステム、クリーンな更新、システム、使用する DNS サーバー、接続しているネットワークなどに侵害がないことです。

Docker をインストールし、実際の Docker Web サイトから Docker キーを取得します。次に Docker をインストールし、キーを検証します。

将来のある時点で、MA はインターネットへのトラフィックの流れを制御し、ユーザーを「偽の」Docker ダウンロード サイトにリダイレクトします。

MAがDockerから対応する秘密鍵とともにPGP鍵を盗まない限り、aptシステムはdownload.docker.com 一致しないご使用の環境で何か異常が発生しており、MA の「不良」リポジトリ リダイレクトからの更新が適用されない可能性があります。

これ鍵署名と鍵パーツが保護するのは、次のことです。未来すでに危険にさらされているなら、それはあなたを保護しません。何もあなたを保護しません。それは、あなたがクリーンで危険にさらされていない状態で始めるときにあなたを保護します。なる何らかの理由で侵害されました。

これは、キーのフィンガープリントを既知の適切なキー フィンガープリントと照合する必要がある理由でもあります。リポジトリの優れたプロバイダーのほとんどは、手動で検証するためのフィンガープリントをすぐに利用できるようにしているため、キーを取得して信頼するために JUST コマンドに頼る必要はありません。

関連情報