Bagaimana saya bisa mengkonfirmasi bahwa binari di Ubuntu saya berasal dari kode sumber yang seharusnya?

25

Seperti 99% pengguna, saya menginstal Ubuntu dari binari yang sudah jadi.

Bagaimana saya bisa memverifikasi diri saya bahwa binari itu sebenarnya dari kode sumber asli dari Ubuntu?

Akan lebih baik untuk memverifikasi bahwa NSA / seseorang belum berkolaborasi dengan Ubuntu atau Linode (penyedia VPS saya) untuk mengacaukan binari. Jika kita dapat memverifikasi binari, mereka juga tidak akan mencoba ini sejak awal karena akan mudah untuk memanggilnya.

mark1111
sumber
Anda dapat melihat kode sumber, menggunakan apt-get source, atau menggunakannya untuk mengkompilasi kode Anda sendiri. Lihat pertanyaan ini: askubuntu.com/questions/28372/…
Wilf
4
Mungkin bermanfaat: Bagaimana cara memverifikasi bahwa file yang diinstal paket cocok dengan aslinya? (Debian, tetapi harus cukup dekat agar dapat diterapkan ke Ubuntu)
CVn
@ MichaelKjörling Saya mencari versi kami dari pertanyaan itu ...
Braiam
1
@Braiam Saya pikir dalam kasus ini Debian / Ubuntu tidak membuat banyak perbedaan. Apa tidak membuat perbedaan adalah tujuan dari pertanyaan; yang ditautkan di atas bertujuan terutama untuk mendeteksi file yang rusak di beberapa titik setelah instalasi, sedangkan yang ini tampaknya bertujuan untuk mendeteksi file yang diganti atau diubah secara jahat, atau file biner yang tidak cocok dengan kode sumber yang dimaksudkan. Masalah berbeda, itulah sebabnya saya memberi tag pada tautan itu hanya "mungkin bermanfaat".
CVn
3
Menariknya, saya pikir bahkan Gentoo sepenuhnya menghindari masalah ini: di sana, Anda harus memercayai arsip kode sumber yang diunduh. Gunakan tanda tangan kriptografi yang Anda inginkan; jika Anda tidak dapat mempercayai bahwa apa yang ditandatangani adalah asli dan bahwa itulah yang seharusnya, tidak ada yang perlu dilakukan.
CVn

Jawaban:

36

Anda dapat mengunduh kode sumber dan mengompilasinya sendiri. Tapi tunggu - pertama Anda harus memeriksa kode sumber itu, karena jika Canonical berkolaborasi dengan NSA, mereka mungkin telah memasukkan beberapa kode di suatu tempat untuk memungkinkan keylogger atau sesuatu yang dapat diaktifkan dari jarak jauh.

Begitu...

  1. setelah mengunduh kode sumber,
  2. Anda harus memeriksa semua kode,
  3. dan kemudian kompilasi!

Tapi tunggu - bisakah Anda mempercayai kompiler ?

SPRBRN
sumber
15
"Bisakah kamu mempercayai kompiler?" Saat itulah Anda pergi bersinggungan dan membaca pertanyaan Bagaimana mengkompilasi kompiler C dari awal, kemudian kompilasi Unix / Linux dari awal (dan jawaban terkait).
CVn
17
Tetapi bisakah Anda mempercayai perangkat keras Anda? Mungkin Anda juga harus membangun komputer dari awal, dan di situlah Anda mengalami beberapa masalah ...
Thomas
Dan bisakah Anda memercayai hypervisor yang menjalankan VM Anda?
Fernando Correia
1
Saya tidak mengira mungkin ada gunanya dalam mengkompilasi sumber pada beberapa kompiler serupa dari penulis yang berbeda dan memeriksa output untuk perbedaan. Tetapi bagaimana Anda tahu bahwa penulisnya bukan entitas yang sama di bawah alias? Atau lebih mungkin, bagaimana jika semua penyusun itu memiliki leluhur korup yang sama? Dan tidak ada yang akan membantu masalah kepercayaan perangkat keras.
Tertarik
6
Tapi tunggu - dapatkah Anda percaya bahwa askubuntu tidak difilter atau sepenuhnya dikendalikan oleh NSA untuk menghindari memberi tahu Anda semua area yang berpotensi dikompromikan?
TheZ
9

Jika Anda tidak mau menerima "karena Ubuntu mengatakan demikian", maka Anda tidak bisa.

fkraiem
sumber
2
Saya akan menambahkan bahwa Anda dapat [mencoba] memverifikasi apakah binari pada sistem khusus Anda cocok dengan binari asli Ubuntu dengan membandingkan checksum. Tentu saja, rootkit yang tepat tidak akan mudah terdeteksi dari dalam sistem dalam hal apa pun.
Peteris
2
Itu hanya berfungsi jika Anda percaya bahwa "binari Ubuntu asli" tidak dirusak. Dengan kata lain, jika Anda menerima bahwa itu bagus karena Ubuntu mengatakannya. ;)
fkraiem
5

Ubuntu menawarkan cara yang nyaman untuk mengkompilasi paket di komputer Anda sendiri. Namun, tidak ada cara untuk memeriksa bahwa executable dalam paket biner yang Anda unduh telah diperoleh dari kode sumber itu. Proses penandatanganan yang digunakan oleh Ubuntu mengurangi risiko gangguan pihak ketiga dengan paket secara substansial, tetapi Anda masih harus percaya bahwa tidak ada kode berbahaya yang ditambahkan sebelum kompilasi yang tidak tercermin dalam kode sumber yang dapat diunduh.

Alasannya adalah bahwa sangat sulit untuk mendapatkan binari yang sama persis seperti yang ada dalam paket yang dikompilasi, karena ini tergantung pada versi kompiler yang tepat, opsinya, dan mungkin ada juga beberapa path atau variabel lingkungan yang dikompilasi ke dalam biner. Jadi, Anda tidak akan dapat memperoleh biner yang sama persis saat mengkompilasi sendiri, yang akan "memverifikasi" biner yang diunduh.

Sebenarnya ada komunitas riset kecil di sekitar masalah ini - bagaimana membuat kompilasi dapat diulang.

Karena itu, perbandingan manual dari biner yang diunduh dan yang dikompilasi sendiri dapat mendeteksi kode yang ditambahkan / dimodifikasi, sehingga akan berisiko bagi seseorang yang menawarkan binari dan kode sumber untuk menyembunyikan sesuatu dalam binari, karena hal ini dapat dideteksi.

Tapi kemudian ada juga masalah mempercayai kompiler, seperti yang telah disebutkan ...

DCTLib
sumber
4

Ini adalah masalah yang sulit untuk membuat binari yang sama persis pada dua mesin yang berbeda. Proyek TOR melakukan ini sebagai bagian rutin dari pembangunan mereka. Ada deskripsi bagaimana mereka melakukannya. Debian dan Fedora tampaknya memiliki proyek yang memungkinkan distribusi ini, tetapi mereka masih dalam tahap awal. Sepertinya tidak ada pekerjaan yang dilakukan di Ubuntu .

Untuk mereproduksi Paket biner Ubuntu Anda perlu mereproduksi lingkungan yang dibuat sedekat mungkin. Untuk mulai dengan itu, Anda harus terlebih dahulu mencari tahu di mana dan bagaimana paket ini dikompilasi. Sepertinya informasi itu tidak mudah ditemukan.

Josef
sumber
Detail spesifik apa?
Josef
Abaikan saya, bingung dengan pos berbeda :)
Tim
0

Memeriksa dengan MD5 Ubuntu. Jika MD5 yang Anda dapatkan dari file Anda cocok dengan yang diterbitkan oleh Ubuntu maka tidak ada yang merusak peralihan binari.

YoMismo
sumber
Ini bukan pertanyaan OP. Dia khawatir kode sumber yang didistribusikan oleh Ubuntu tidak sama dengan binari yang didistribusikan oleh Ubuntu. Dengan kata lain, mereka mengatakan "ini adalah sumbernya," tetapi sumber tempat mereka membangun binari sebenarnya memiliki beberapa kode tambahan yang diperkenalkan NSA. Dia tidak khawatir biner telah dirusak setelah dibangun.
John Chrysostom
OP memposting: "Bagaimana saya bisa memverifikasi diri saya bahwa binari itu sebenarnya dari kode sumber asli dari Ubuntu?" Jawabannya adalah untuk pertanyaan itu. Yang lain konyol, siapa yang tahu kalau kernel Linux belum dirusak oleh siapa pun (NSA atau siapa pun?) Dengan mudah, unduh kodenya, bacalah dan begitu Anda senang mengompilasinya sendiri. Selain itu, jawaban saya adalah untuk pertanyaan yang telah saya salin di awal komentar ini.
YoMismo
Anda belum menjawab pertanyaan yang Anda kutip. Menggunakan MD5 hanya memungkinkannya memverifikasi bahwa binari di komputernya cocok dengan binari di server. Mereka TIDAK membiarkannya memverifikasi bahwa binari yang dia unduh dikompilasi dari sumber yang disediakan Ubuntu. Sekarang, saya setuju bahwa pertanyaannya konyol karena alasan Anda (dan orang lain) telah menyatakan. Tapi itu pertanyaannya.
John Chrysostom
0

Itu adalah pekerjaan yang sulit, saya pikir kepercayaan di sini lebih baik daripada pekerjaan yang rumit ini. Tapi pertanyaannya Bisakah Anda percaya?

Karena perangkat lunak open source memberikan banyak kebebasan bagi pengguna untuk mengubah kode, Anda tidak dapat mempercayai siapa pun.

Mari kita membuat skenario untuk tujuan ini, saya ingin memeriksa itu Ubuntu == source code, tunggu. Mengapa Anda tidak mencoba membandingkan paket dengan sumbernya?

  1. Buat paket biner untuk Ubuntu dari sumber.
  2. membandingkan paket biner yang dibangun sendiri dengan yang diterbitkan oleh distribusi.
  3. Gunakan sumber apt-get -b untuk mengunduh sumber.

Tetapi bagi saya membandingkan dengan baik memberi Anda hasil yang sedikit berbeda karena stempel waktu yang berbeda, lingkungan, tetapi apakah itu membuktikan bahwa itu bukan dari kode sumber!

nux
sumber