Klien VPN sumber terbuka: apa yang dibuktikan kod dan apa yang tidak
Repositori awam ialah bukti tentang kod sumber, bukan tentang binaan yang anda pasang atau pelayan di belakangnya. Padankan keluaran, kemudian luaskan semakan.
Kod sumber diterbitkan, lesen bersih, dan sambungan masih tidak dapat disahkan dari hujung ke hujung. Jurang itu biasa, dan ia bukan skandal. Menerbitkan kod menjadikan satu komponen boleh diperiksa oleh orang yang tidak dijemput, dan itu sifat sebenar yang luar biasa. Daripada itu tidak bermakna binari yang anda pasang datang daripada kod tersebut, atau bahawa apa-apa yang dikendalikan penyedia di sebelah sana telah disemak sama sekali.
Asingkan komponen daripada produk
Empat perkara boleh membawa label sumber terbuka, dan jarang semuanya terbuka. Aplikasi klien ialah yang dimaksudkan orang. Pelaksanaan protokol di bawahnya ialah artifak lain, kadangkala pustaka dan kadangkala kod dalam pokok. Perisian pelayan ialah yang ketiga, dan infrastruktur penyedia sendiri, portal akaun serta alat sokongan ialah yang keempat. Setiap satunya boleh terbuka atau tertutup secara berasingan.
Justeru kenyataan seperti "apl kami sumber terbuka" menerangkan item pertama dan membiarkan selebihnya tanpa jawapan, yang bukan ketidakjujuran tetapi lebih kepada gelinciran kategori. Soalan yang berguna ialah repositori mana, pada tag mana, sepadan dengan komponen yang anda bergantung padanya.
Perbezaan itu juga menjelaskan mengapa dua produk dengan klien terbuka yang sama boleh menawarkan jaminan yang sangat berbeza. Klien ialah bahagian yang boleh anda periksa; tingkah laku pengendali ialah bahagian yang perlu anda nilai dengan cara lain.
Padankan binaan yang dipasang dengan tag yang diterbitkan
Repositori ialah rekod niat; binari pada cakera anda ialah yang berjalan. Menutup jurang itu ialah latihan mekanikal, dan ia bermula dengan mengenal pasti apa sebenarnya yang dipasang, bukan apa yang diiklankan halaman muat turun.
| Component | What inspection can show | What it leaves untouched |
|---|---|---|
| Client source | How profiles, packets and optional telemetry are handled | Whether the shipped binary matches that source |
| Build output | Whether a declared build reproduces a matching artefact | Whether the source is correct or the toolchain is clean |
| Server software | What the implementation is capable of logging | What the operator actually configures and retains |
| Account and support systems | Almost nothing, unless they are separately published | Everything about how those systems treat your data |
Metadata pakej memberitahu versi dan asal usul, yang menyingkirkan kes mudah pakej lapuk atau diganti. Ia tidak memberitahu bagaimana pakej itu dikompil, dan soalan itulah yang wujud untuk dijawab oleh binaan boleh hasil semula. Binaan boleh hasil semula membolehkan pihak bebas membina semula daripada sumber yang sama dan membandingkan output bait demi bait, supaya ketidakpadanan menjadi bukti, bukan syak.
Malah padanan sempurna membuktikan kurang daripada yang diharapkan orang. Ia menunjukkan artifak sepadan dengan sumber dan resipi binaan, bukan bahawa sumber itu bebas kecacatan, dan bukan bahawa rantaian alat yang digunakan boleh dipercayai. Kedua-duanya wajar diketahui, tetapi ia dakwaan yang berbeza.
dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wgDari mana gejala biasanya bermula
Aduan yang mencetuskan bacaan ini jarang berbunyi "kod itu tertutup". Biasanya ia pemerhatian khusus: klien yang menghubungi tempat yang tidak dijangka, versi yang berbeza daripada nota keluaran, atau proses sokongan yang meminta lebih daripada yang sepatutnya diperlukan oleh terowong. Setiap titik itu menunjuk komponen yang berbeza.
Trafik rangkaian tidak dijangka daripada klien ialah persoalan kod sumber klien, dan ia boleh dijawab dengan membaca laluan kod yang membuka sambungan. Ketidakpadanan versi ialah persoalan pembungkusan. Proses sokongan yang meminta dokumen pengenalan diri ialah persoalan sistem akaun, dan tiada audit klien akan menyelesaikannya.
Menamakan komponen mengubah ketidakpercayaan kabur menjadi pemeriksaan khusus. Pemeriksaan khusus boleh dijawab, dipertikaikan atau ditutup. Alternatifnya ialah syak berterusan tanpa langkah seterusnya.
Apa yang tidak dapat dicapai oleh semakan, dan apa yang perlu dilakukan sebaliknya
Pengekalan pada pelayan penyedia di luar jangkauan klien. Begitu juga tingkah laku portal pengebilan, vendor pemeriksa penipuan atau meja sokongan yang menyimpan lampiran. Semakan klien yang diregangkan sehingga "kami mengaudit perkhidmatan itu" membuat dakwaan yang tidak disokong bukti.
Baca apa yang diterbitkan pengendali tentang pengekalan dan permintaan, catat tarikhnya, dan anggap ia sebagai kenyataan pihak berkepentingan, bukan pengukuran. Itu bentuk bukti yang lebih lemah, dan menjelaskan perbezaannya lebih berguna daripada menaikkannya semasa menceritakannya semula.
Kemudian gunakan apa yang anda ada sebagai salah satu daripada beberapa input: identiti keluaran yang dipasang, sama ada perisian itu diselenggara, bagaimana klien dikonfigurasikan, dan apa yang dikatakan pengendali tentang sistemnya sendiri. Kod terbuka menguatkan penilaian itu pada satu titik. Ia tidak menggantikan selebihnya.
Dakwaan audit harus sentiasa menamakan komponen dan versinya. Jika laporan tidak dapat menyatakan repositori dan binaan mana yang diperiksa, ia menerangkan niat, bukan produk.