GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menyediakan File Asc Memastikan Saya Mengunduh Kode Sumber yang Dimaksud?

Saya menginstal cmake dari situs web cmake.org dan mereka menyediakan dua file yang saya yakini dimaksudkan untuk memverifikasi unduhan kode sumber cmake-3.11.0-rc3.tar.gz

Pada halaman yang sama, mereka memiliki tautan untuk mengunduh cmake-3.11.0-rc3-SHA-256.txt file dan cmake-3.11.0-rc3-SHA-256.txt.asc berkas

Yang saya tidak mengerti adalah:

  1. Bagaimana file asc dari sumber yang sama (cmake.org) memastikan integritas kode sumber? Jika kode sumber yang ditawarkan oleh situs tersebut disusupi, tidak bisakah penyerang juga menyusupi file asc?
  2. Apakah saya tidak memerlukan kunci publik untuk benar-benar memverifikasi unduhan kode sumber? Dan saya pikir file asc seharusnya menjadi kunci publik. Namun, ketika saya mencoba mengimpor file asc dengan

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

    Saya mendapatkan pesan kesalahan yang mengatakan “tidak ada data OpenPGP yang valid ditemukan”

Jawaban yang Diterima:

Lihat di dalam .asc file, Anda akan melihatnya dimulai dengan:

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

Jadi ini adalah Tanda Tangan PGP . Itu berarti ia menandatangani beberapa konten dengan beberapa kunci PGP tertentu.

1) Konten

Berdasarkan namanya, isinya adalah file .txt , ini adalah daftar file yang sesuai dengan perangkat lunak untuk diunduh dan setiap file memiliki hash yang sesuai.

2) Tanda tangan

Jika Anda meluncurkan gpg pada kedua file tersebut, inilah hasilnya:

$ 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

Jadi bagaimana semuanya bekerja? Anda seharusnya memiliki kunci 2D2CEF1034921684 di gantungan kunci lokal Anda. Bagaimana Anda mendapatkannya, dan yang lebih penting Anda memastikan Anda mendapatkan yang tepat? (id itu sendiri tidak cukup). Di sinilah web model kepercayaan OpenPGP berlangsung. Akan terlalu panjang untuk merincinya di sini, tetapi singkatnya, idealnya, Anda mendapatkan akses ke kunci di luar pita dan Anda memiliki sarana untuk mengautentikasinya… atau untuk mengautentikasi beberapa kunci lain dari seseorang yang Anda kenal yang telah mengautentikasi kunci lainnya. Dan/Atau Anda menemukannya online di satu atau beberapa tempat, diamankan dengan HTTPS (dengan sertifikat dan CA yang Anda percayai), dan idealnya dengan DNSSEC.

Jika Anda memiliki kunci publik, dan Anda memercayainya untuk menjadi baik dan tidak palsu (dan biasanya itu sesuai dengan pengembang perangkat lunak dari alat yang Anda coba unduh), perintah di atas menunjukkan kepada Anda bahwa .txt file belum dirusak. Dan pada gilirannya ini memberi Anda hash dari semua file arsip, sehingga Anda dapat mengunduhnya dan menjalankan kembali algoritme hash (SHA256 seperti yang tertulis dalam nama file) dan membandingkannya dengan nilai yang disimpan dalam file.

Terkait:Apa gunanya menambahkan baris baru ke akhir file?

Jika seseorang telah menyusup ke server dan mengubah beberapa arsip, seperti yang Anda katakan sendiri, bisa juga mengubah .txt file dengan hash baru sehingga Anda dapat yakin bahwa file memang cocok.
Namun pihak ketiga ini tidak akan dapat menghasilkan .asc yang tepat file dengan tanda tangan PGP (pada gpg --verify Anda akan mendapatkan kesalahan tentang tanda tangan yang tidak valid), karena untuk melakukannya ia perlu memiliki akses ke kunci pribadi yang seharusnya diamankan dengan baik dan tidak disimpan di server web.
Dan jika itu menghasilkannya dengan kunci lain Anda akan melihatnya karena Anda tidak akan mempercayai kunci yang tidak dikenal ini.

Tapi tentu saja seluruh model akan runtuh jika kunci itu sendiri disusupi.


Linux
  1. Bagaimana Cara Kerja Perintah Tee??

  2. Bagaimana Perintah Xdg-open Mengetahui Aplikasi Yang Digunakan Untuk Membuka File?

  3. Bagaimana Perintah Sed '1!g;h;$!d' Membalikkan Isi File?

  1. Bagaimana perintah stat menghitung blok file?

  2. Bagaimana cara menambahkan output ke file?

  3. Bagaimana cara membaca kode sumber perintah shell?

  1. Bagaimana cara RSYNC satu file?

  2. Bagaimana cara ACL menghitung izin efektif pada suatu file?

  3. Bagaimana cara kerja antarmuka loopback