GNU/Linux >> Linux の 問題 >  >> Linux

Ascファイルを提供することで、意図したソースコードをダウンロードしていることをどのように確認できますか?

cmake.org Webサイトからcmakeをインストールしていますが、ソースコードのダウンロード cmake-3.11.0-rc3.tar.gzを検証することを目的とした2つのファイルが提供されています。

同じページに、 cmake-3.11.0-rc3-SHA-256.txtをダウンロードするためのリンクがあります。 ファイルとcmake-3.11.0-rc3-SHA-256.txt.asc ファイル

私が理解していないのは:

  1. 同じソース(cmake.org)のascファイルは、どのようにしてソースコードの整合性を保証しますか?サイトが提供するソースコードが侵害された場合、攻撃者はascファイルも侵害できませんでしたか?
  2. ソースコードのダウンロードを真に検証するために公開鍵は必要ありませんか?そして、ascファイルが公開鍵になるはずだと思いました。ただし、ascファイルをインポートしようとすると

    gpg --import cmake-3.11.0-rc3-SHA-256.txt.asc
    

    「有効なOpenPGPデータが見つかりません」というエラーが表示されます

承認された回答:

.ascの内部をご覧ください ファイルの場合、次で始まることがわかります:

 -----BEGIN PGP SIGNATURE-----

つまり、これはPGP署名です。 。これは、特定のPGPキーを使用してコンテンツに署名することを意味します。

1)コンテンツ

名前に基づくと、コンテンツはファイル .txtです。 、ダウンロードするソフトウェアに対応するファイルのリストであり、各ファイルには対応するハッシュがあります。

2)署名

gpgを起動した場合 両方のファイルで、結果は次のとおりです。

$ gpg --verify cmake-3.11.0-rc3-SHA-256.txt.asc cmake-3.11.0-rc3-SHA-256.txt
gpg: Signature made Fri Mar  9 10:29:10 2018 EST
gpg:                using RSA key 2D2CEF1034921684
gpg: Can't check signature: No public key

では、すべてはどのように機能しますか?キー2D2CEF1034921684を持っているはずです ローカルキーチェーンで。どうやってそれを手に入れますか、そしてもっと重要なことはあなたが適切なものを手に入れることを確実にすることですか? (IDだけでは不十分です)。ここで、OpenPGPのWebofTrustモデルが実行されます。ここで詳しく説明するには長すぎますが、要するに、帯域外のキーにアクセスして、それを認証する手段があります…または、自分が他のキーを認証したことがわかっている誰かの他のキーを認証する手段があります。および/または、HTTPS(信頼できる証明書とCAを使用)、理想的にはDNSSECで保護された、1つまたは複数の場所でオンラインで見つけることができます。

公開鍵を持っていて、それが適切で偽造されていないことを信頼している場合(通常、ダウンロードしようとしているツールのソフトウェア開発者に対応している場合)、上記のコマンドは.txt<を示しています。 / code> ファイルは改ざんされていません。次に、これによりすべてのアーカイブファイルのハッシュが得られるため、ダウンロードしてハッシュアルゴリズム(ファイル名に記述されているSHA256)を再実行し、ファイルに保存されている値と比較できます。

関連:ファイルの最後に新しい行を追加することのポイントは何ですか?

誰かがサーバーを危険にさらし、いくつかのアーカイブを変更した場合、あなたが言うように、 .txtも変更する可能性があります。 ファイルが一致すると信じられるように、新しいハッシュを使用してファイルを作成します。
ただし、このサードパーティは適切な .ascを生成できません。 PGP署名付きのファイル( gpg --verify 無効な署名についてエラーが発生します)。これを行うには、適切に保護され、Webサーバーに保存されていない秘密鍵にアクセスする必要があるためです。
また、別の鍵で生成された場合この不明なキーを信頼しないため、表示されます。

ただし、もちろん、キー自体が危険にさらされると、モデル全体が崩壊します。


Linux
  1. スティッキービットはどのように機能しますか?

  2. ファイルの最後に改行を追加するにはどうすればよいですか?

  3. Xdg-openコマンドは、ファイルを開くために使用するアプリケーションをどのように認識しますか?

  1. コマンドSed‘1!g; h; $!d’は、ファイルの内容をどのように逆にしますか?

  2. stat コマンドはファイルのブロックをどのように計算しますか?

  3. rm はどのように機能しますか? rm は何をしますか?

  1. sshfs の鍵ファイルを指定するにはどうすればよいですか?

  2. デフォルトのファイルマネージャを見つける方法は?

  3. ACL はファイルの有効なアクセス許可をどのように計算しますか?