Memverifikasi paket
Isi mirror ditandatangani menggunakan kunci PGP, secara langsung atau tidak langsung. Mulai dari "root" dari distribusi Debian:
Release
, ditandatangani dengan tanda tangan terpisah Release.gpg
, berisi hash (MD5, SHA1, SHA256) dari semua indeks paket dan hash pemasang ( InRelease
sekarang menggabungkan keduanya);
- indeks paket ( misalnya ,
binary-amd64
) berisi hash (MD5 dan SHA256) dari paket.
Tanda pagar dan tanda tangan diperiksa oleh alat seperti apt-get
menggunakan kunci PGP yang disimpan pada sistem (dikelola oleh apt-key
). Jadi selama sistem penerima tetap sehat, secara default tidak ada paket yang dapat diinstal dari arsip Debian jika belum ditandatangani (secara tidak langsung) oleh kunci PGP arsip. Setiap penyusup di cermin tidak akan dapat menggantikan binari jika mereka juga tidak memiliki kendali atas kunci PGP yang relevan.
Mengontrol cermin
Ini berarti bahwa mengkompromikan arsip tidak cukup untuk benar-benar membahayakan sistem pengguna akhir; Anda juga harus berkompromi dengan kunci PGP yang sudah dipercaya sistem-sistem itu. (Sebuah konsekuensi dari ini adalah bahwa menambahkan kunci ke sistem Debian bukan sesuatu yang bisa dianggap enteng.) Itu membahas pertanyaan pertama Anda sampai batas tertentu, karena keamanan arsip tidak terlalu penting. Namun demikian, sistem kritis (di mana penandatanganan terjadi) dipantau dan diawasi secara ketat, dan sangat sedikit orang yang memiliki akses ke sana.
Harapan pemelihara
Memastikan bahwa paket-paket itu "sebenarnya adalah paket yang menurut pengelola adalah" sedikit lebih terlibat. Ini adalah jalur yang diambil oleh sebuah paket:
- paket disiapkan oleh pengelola, dan ditandatangani dengan kunci di Debian keyring ( yaitu kunci milik Pengembang Debian yang diunggah, atau Debian Maintainer, yang diunggah ke server keyring Debian dan digabung oleh tim pemeliharaan kunci);
- paket yang ditandatangani diunggah ke arsip, di mana itu diverifikasi (antara lain, kunci yang digunakan harus dalam keyring saat ini dan tidak boleh kadaluarsa, tanda tangan harus valid, dan jika paket ditandatangani oleh DM, yang DM harus memiliki izin yang relevan untuk paket tersebut);
- setiap binari yang diunggah didorong ke arsip final apa adanya (Saya menyederhanakan sedikit di sini, tapi itulah efeknya);
- setiap binari yang hilang dibangun oleh buildd dan ditandatangani oleh kunci PGP buildd, dan didorong ke arsip terakhir (yang tahu kunci buildd apa yang valid, dan memverifikasi file terhadap mereka);
- semua pembaruan ini pada akhirnya didorong ke jaringan mirror, dengan pembaruan indeks yang sesuai (yang ditandatangani seperti dijelaskan di atas).
Jika pengelola mengunggah binari bersama dengan sumber paket, ini adalah file yang akhirnya dilayani (untuk saat ini). Karena mengunggah binari sekarang opsional, lebih dan lebih umum untuk melewatkannya, dan akhirnya binari yang diunggah akan dihapus. (Ini selalu terjadi di Ubuntu.) Apakah binari lain sesuai dengan harapan pengelola tergantung pada jaringan buildd; jadi buildd juga merupakan sistem kritis, di bawah pengawasan ketat dan dengan sedikit akses manusia. Karena semua artefak ditandatangani, selalu memungkinkan untuk memverifikasi integritas file: pertama terhadap kunci pengelola, kemudian terhadap kunci buildd, dan akhirnya terhadap kunci arsip.
Seperti yang ditunjukkan oleh plugwash , tanda tangan asli tidak tersedia di mirror, dan setiap DD dapat mengunggah biner yang hilang. Tanda tangan asli dapat diambil dari arsip debian-devel-changes .
Singkatnya , sementara sistem saat ini tidak sempurna, itu memang memberikan keterlacakan untuk semua file yang dapat Anda unduh dari mirror. Ada sejumlah upaya untuk memperbaiki situasi: membangun yang dapat direproduksi (yang akan memungkinkan verifikasi independen korespondensi biner dengan sumber yang dipublikasikan), menjatuhkan biner yang disediakan pengelola ...
apt-get
memverifikasi paket menggunakan kunci pra-tempel lokal ini, karena mempercayai mereka?debian-archive-keyring
paket.apt-get
memverifikasiRelease
file menggunakan kunci itu, dan paket menggunakan hash yang terkandung dalamRelease
danPackages
file.