Melihat perkataan TLS dalam penerangan VPN dan membuat kesimpulan bahawa proksi web akan memahami trafik itu ialah jalan pintas biasa. Di dalam protokol ini rakan sejawat bertukar paket mereka sendiri, dan TLS berjalan sebagai sebahagian daripada satu saluran dalam pertukaran itu. Muatan yang penting kepada pengguna bergerak dalam format mesej yang berbeza, dan itulah sebabnya kedua-duanya tidak pernah sepadan dengan sesi HTTPS biasa.

Sampul datang dahulu

Setiap paket terowong bermula dengan pengepala protokol itu sendiri: jenis mesej, pengecam kunci dan, pada pengangkutan aliran bait, awalan panjang yang menandakan di mana paket berakhir. Pembaca yang tidak menghuraikan sampul itu tidak boleh tahu di mana medan seterusnya bermula.

outer transport (UDP datagram or TCP stream)
  -> OpenVPN header (opcode, key id, length where needed)
    -> control message (reliability wrapper, TLS exchange)
    -> data message (protected inner packet)

Lakaran itu ialah peta dan bukan jadual bait, kerana medan tepat bergantung pada jenis mesej, walaupun oktet pertama sentiasa membungkus opkod dan pengecam kunci bersama-sama. Meneka jenis mesej daripada nombor port ialah cara penyahkod akhirnya salah menamakan apa yang mereka lihat. Urutan itulah yang penting untuk diagnosis: pengangkutan, kemudian sampul protokol, kemudian salah satu daripada dua jenis kerja. Baca sampul itu sebelum membentuk pendapat tentang apa yang menyusul. Penyahkod yang bermula di tempat yang salah menghasilkan karut yang penuh keyakinan.

Lapisan kebolehpercayaan milik protokol

Mesej kawalan memerlukan penghantaran tersusun dan disahkan, dan protokol menyediakannya sendiri dengan pengesahan dan penghantaran semula. Pengesahan boleh tiba sebagai mesej sendiri atau bergerak bersama mesej kawalan lain, yang membuatkan jejak kelihatan tidak teratur bagi sesiapa yang menjangka satu pertukaran bersih.

Faedahnya ialah jabat tangan TLS mendapat pembawa yang boleh dipercayai walaupun pengangkutan luarnya UDP. Kosnya ialah satu datagram mungkin hanya mengandungi sebahagian daripada perbualan itu, jadi memperlakukannya sebagai rekod TLS tersendiri menghasilkan karut. Penyusunan semula mesti berlaku di lapisan protokol. Itulah sebabnya paket yang ditangkap jarang kelihatan seperti langkah jabat tangan yang lengkap.

Menukar pengangkutan luar kepada TCP tidak menghapuskan lapisan ini. Pengangkutan yang boleh dipercayai bermakna lebih sedikit penghantaran semula di peringkat protokol, bukan bahawa pembingkaian hilang atau trafik menjadi HTTP.

Paket data menggunakan format berbeza

Setelah sesi wujud, muatan berguna tiba sebagai mesej data yang membawa paket IP dalaman atau bingkai Ethernet. Ia dilindungi dengan kunci dan pemprosesannya sendiri, dan ia bukan rekod aplikasi TLS dalam apa jua erti yang akan diterima oleh pustaka TLS.

Pemisahan itu kelihatan dalam konfigurasi: saluran kawalan dan saluran data mempunyai tetapan sifer yang berasingan, jadi baris log yang menamakan satu tidak memberitahu apa-apa tentang yang lain. Membaca sifer kawalan yang kuat sebagai bukti sifer data yang kuat ialah kesilapan pelaporan yang biasa.

Jauhkan juga salah faham berkaitan daripada penjelasan. TLS bukan saluran kunci awam yang duduk di sebelah saluran data simetri, kerana TLS sendiri melindungi rekodnya secara simetri setelah kunci ditetapkan. Perbezaan sebenar ialah peranan dan format paket, bukan jenis kriptografi yang digunakan oleh setiap pihak.

Mengapa proksi HTTPS tidak dapat membantu

Proksi yang menamatkan TLS menjangka aliran rekod TLS dan kemudian protokol aplikasi di dalamnya. Saluran kawalan protokol ini dibawa di dalam pembingkaiannya sendiri dengan lapisan kebolehpercayaan di sekelilingnya, jadi proksi yang menamatkan membaca pembingkaian itu sebagai input rosak.

Penghantar telus yang melepaskan bait atau datagram tanpa mentafsirnya boleh berfungsi, asalkan ia tidak menulis semula atau menyusun semula aliran itu. Soalan yang perlu ditanya tentang mana-mana perantara ialah sama ada ia menghantar pengangkutan dan pembingkaian sebenar, bukan sama ada ia menyokong TLS di suatu tempat. Tanyakan itu sebelum menghabiskan satu malam pada peraturan proksi. Kebanyakan kegagalan di sini bersifat seni bina dan bukan tetapan yang hilang.

Membaca jejak dengan betul

Jangkakan pertukaran kawalan dahulu, kemudian bilangan mesej data yang jauh lebih besar, kedua-duanya berkongsi satu pengangkutan. Jika fasa kawalan selesai dan fasa data tersekat, kesalahan itu berkaitan kunci, penghalaan atau penapisan laluan data dan bukan jabat tangan. Tangkap beberapa mesej data dan periksa sama ada ia meninggalkan klien sama sekali. Pemerhatian tunggal itu membahagi carian kepada dua.

Penerangan sejarah kaedah kunci dalam dokumentasi protokol tidak membayangkan bahawa keluaran tertentu masih menyokong setiap format lama. Periksa versi yang anda jalankan sebelum membina jangkaan pada perenggan yang menerangkan bagaimana sesuatu berfungsi dahulu.

Artikel berkaitan