Menandatangani / Memeriksa kernel untuk mencegah / mendeteksi manipulasi
8
Semua partisi saya dienkripsi ( /dan /home), tetapi /bootpartisi tersebut harus tetap tidak dienkripsi dan terbuka untuk manipulasi. Saya sedang berpikir tentang hashing kernel pada bootup dan memeriksa hasilnya terhadap nilai yang tersimpan (dihasilkan pada kompilasi, disimpan pada drive terenkripsi saya) untuk melihat apakah seseorang, entah bagaimana memanipulasi kernel sejak boot terakhir (mungkin bahkan secara fisik). Apakah ada masalah dengan penulisan skrip seperti itu? Apakah sudah ada program yang melakukan ini?
Apa yang Anda cari - memverifikasi bahwa sistem operasi yang berjalan pada komputer adalah yang Anda percayai - disebut boot tepercaya . (Ini salah satu dari beberapa hal yang kadang-kadang disebut boot tepercaya). Metode yang Anda usulkan tidak mencapai tujuan ini.
Enkripsi tidak memberikan integritas atau keaslian data . Dengan kata lain, itu tidak mencegah penyerang mengubah isi disk Anda dan menggantinya dengan sistem operasi berbahaya. Sistem operasi berbahaya ini dapat dengan mudah diprogram untuk menampilkan checksum yang Anda harapkan untuk kernel yang dimuat.
Jalur serangan termudah adalah man-in-the-middle di mana penyerang menjalankan sistem operasi normal Anda di bawah semacam mesin virtual. Lapisan mesin virtual mentransmisikan input Anda ke sistem operasi yang Anda inginkan dan mengirimkan kembali output. Tapi itu juga mencatat penekanan tombol Anda (mmmm, kata sandi) di samping, mengintip kunci pribadi dari memori OS dan sebagainya.
Untuk menghindari bentuk serangan ini, Anda harus memiliki akar kepercayaan : komponen sistem yang Anda percayai karena alasan lain selain karena beberapa komponen lain dari sistem mengatakan demikian. Dengan kata lain, Anda harus memulai suatu tempat. Memulai dengan perangkat keras yang Anda miliki adalah awal yang baik; Anda bisa menjaga sistem operasi Anda pada kunci USB yang tidak meninggalkan pandangan Anda, dan tancapkan hanya pada perangkat keras yang Anda yakini cukup ( perangkat keras dapat memiliki malware !). Pikiran, jika Anda mau mempercayai komputer, Anda mungkin percaya hard disk-nya juga.
Ada solusi teknis untuk menjembatani kesenjangan antara mempercayai chip kecil dan mempercayai seluruh komputer desktop atau laptop. Beberapa PC memiliki TPM (modul platform tepercaya) yang dapat, antara lain, memverifikasi bahwa hanya sistem operasi yang diketahui yang dapat di-boot. Grub Tepercaya mendukung TPM, jadi dengan TPM plus Grub Tepercaya, Anda dapat memiliki jaminan bahwa kernel yang Anda jalankan adalah salah satu yang telah Anda setujui.
Perhatikan bahwa adopsi TPM dapat bekerja untuk atau melawan Anda. Semuanya bergantung pada siapa yang memiliki kunci. Jika Anda memiliki kunci pribadi untuk TPM Anda, maka Anda dapat mengontrol apa yang berjalan di komputer Anda. Jika hanya pabrikan yang memiliki kunci privat, itu adalah cara untuk mengubah platform serba guna menjadi alat yang terkunci.
+1 untuk referensi potensi jebakan besar TPM (alias Treacherous Computing)
Eli Heady
Anda tidak memberikan solusi aktual , cukup sebutkan frasa terkait keamanan populer. Apa yang Anda katakan tentang serangan MITM adalah ancaman yang mengabaikan gagasan utama pertanyaan OP: Menggunakan skrip verifikasi checksum yang memungkinkan sistem mem-boot hanya jika kondisi tertentu terpenuhi. Pada titik itu, tidak akan ada masalah dalam memverifikasi bahwa perangkat keras yang mendasari sebenarnya adalah apa yang seharusnya, bukan VM.
rozcietrzewiacz
-1
Kernel yang dibooting berada di memori. Anda dapat membuat skrip yang akan menemukannya /dev/memdan, mengetahui ukurannya, menghitung dan memverifikasi checksum-nya.
Anda juga dapat memiliki seluruh HD yang dienkripsi, tanpa perlu /bootpartisi dan (hampir) tidak ada cara untuk memodifikasi kernel. Bagaimana? dua cara yang bisa saya pikirkan:
Tempatkan kernel Anda pada CD, di mana komputer Anda akan boot. Ini tidak terlalu sulit; beberapa orang dilaporkan menggunakan pengaturan seperti itu beberapa tahun yang lalu - lihat posting kedua di utas forum ini .
Jika motherboard Anda didukung oleh coreboot dan memiliki ruang yang cukup untuk memuat kernel minimal, Anda bisa memiliki kernel yang diaktifkan enkripsi pada chip BIOS Anda. (Saya belum memiliki kesempatan untuk menguji, tetapi saya tidak melihat alasan mengapa ini mungkin tidak berhasil.)
Sunting: Perhatikan bahwa semua ini hanyalah langkah tunggal menuju boot "tepercaya" atau "terverifikasi" (yang ditunjuk Gilles dengan tepat). Mekanisme lengkap juga harus mempertimbangkan apa yang terjadi pada tahap bootloader dan bagaimana perangkat keras yang mendasarinya diidentifikasi. Lihat bagaimana Google Chromium OS melakukan ini .
Apakah ini akan berhasil? Saya tidak yakin; Saya tidak tahu apakah kernel memodifikasi kodenya dalam memori setelah dimulai. Saya tahu Anda tidak dapat memverifikasi modul dengan cara itu, karena modul terhubung ke kernel (mengubah beberapa alamat di sana-sini) ketika itu dimuat. Apakah ini akan memberikan properti keamanan yang diinginkan? Tidak, lihat jawaban saya. Integritas itu rumit!
Gilles 'SANGAT berhenti menjadi jahat'
Tampaknya Anda tidak membaca seluruh jawaban saya. Paragraf pertama, yang Anda rujuk, hanyalah respons langsung terhadap apa yang sebenarnya ditanyakan. Sisa jawaban saya menyajikan opsi yang mirip dengan metode yang telah Anda sebutkan, tetapi lebih baik , karena aman terhadap modifikasi kernel (tidak seperti pendrive USB).
rozcietrzewiacz
@Gilles Lupa untuk '@' Anda di komentar sebelumnya. Juga, saya baru saja memeriksa apa yang Anda tidak yakin: melakukan dump di kernel image-memori, kemudian menambahkan banyak modul, membuat dump kedua wilayah, dibandingkan - sama. Anda bisa menggunakan ini.
Kernel yang dibooting berada di memori. Anda dapat membuat skrip yang akan menemukannya
/dev/mem
dan, mengetahui ukurannya, menghitung dan memverifikasi checksum-nya.Anda juga dapat memiliki seluruh HD yang dienkripsi, tanpa perlu
/boot
partisi dan (hampir) tidak ada cara untuk memodifikasi kernel. Bagaimana? dua cara yang bisa saya pikirkan:Tempatkan kernel Anda pada CD, di mana komputer Anda akan boot. Ini tidak terlalu sulit; beberapa orang dilaporkan menggunakan pengaturan seperti itu beberapa tahun yang lalu - lihat posting kedua di utas forum ini .
Jika motherboard Anda didukung oleh coreboot dan memiliki ruang yang cukup untuk memuat kernel minimal, Anda bisa memiliki kernel yang diaktifkan enkripsi pada chip BIOS Anda. (Saya belum memiliki kesempatan untuk menguji, tetapi saya tidak melihat alasan mengapa ini mungkin tidak berhasil.)
Sunting: Perhatikan bahwa semua ini hanyalah langkah tunggal menuju boot "tepercaya" atau "terverifikasi" (yang ditunjuk Gilles dengan tepat). Mekanisme lengkap juga harus mempertimbangkan apa yang terjadi pada tahap bootloader dan bagaimana perangkat keras yang mendasarinya diidentifikasi. Lihat bagaimana Google Chromium OS melakukan ini .
sumber