Dua profil diuji pada gateway yang sama, satu dengan enkripsi dan satu tanpa, dan yang terenkripsi tidak lebih lambat. Kadang-kadang lebih cepat, yang biasanya memicu perdebatan panjang tentang apakah pengujian dijalankan dengan benar. Hasilnya masuk akal, karena biaya sebuah paket bukan jumlah kata kriptografis dalam konfigurasi. Melainkan kumpulan operasi yang dilakukan implementasi, pada perangkat keras yang dimilikinya, atas tata letak penyangga yang dipilihnya.

Gejalanya: yang lambat bukan profil terenkripsi

Misalkan sebuah uji lama membandingkan cipher AEAD dengan mode „tanpa enkripsi“ yang masih menghitung kode autentikasi terpisah per paket. Profil kedua menyembunyikan isi muatan tetapi menyimpan hash per paket, dan pada prosesor tanpa akselerasi untuk hash itu biayanya bisa lebih tinggi daripada konstruksi terpadu yang seharusnya dikalahkannya.

Label dalam konfigurasi menyebut „enkripsi“, dan label itulah yang dilihat sebagian besar perbandingan. Jalur paket mengatakan hal lain: satu profil melakukan operasi gabungan yang prosesornya punya instruksi untuk itu, dan yang lain melakukan operasi terpisah yang tidak dimilikinya. Membaca berkas konfigurasi saja tidak akan pernah mengungkap perbedaan itu, karena kedua entri tampak seperti satu baris. Hanya mode yang dinegosiasikan dan jalur kode di belakangnya yang menjelaskan hasilnya.

Itulah seluruh penjelasannya, dan itu tidak memerlukan klaim tentang primitif mana yang secara universal lebih cepat. Keduanya bisa cepat, keduanya bisa lambat, dan urutannya bergantung pada mesin dan kodenya.

Hitung operasi, bukan label

Konstruksi AEAD, seperti dijelaskan dalam RFC 5116, memberi implementasi satu antarmuka yang mengembalikan ciphertext dan tag bersama-sama. AES-GCM adalah salah satu contohnya: enkripsi mode penghitung yang digabungkan dengan pengautentikasi Galois. Antarmuka itu tidak membuat integritas gratis; ia membuat kombinasinya terdefinisi dengan baik, dan itulah yang memungkinkan implementasi mengoptimalkan pasangan itu sebagai satu unit.

Separate authentication path:
  payload -> independent HMAC -> framed packet

AEAD path:
  payload -> authenticated encryption with tag -> framed packet

Itu sketsa pemrosesan, bukan saran konfigurasi. Yang pertama tidak memiliki kerahasiaan tetapi tetap membuang CPU untuk autentikasi, dan itulah sebabnya „matikan enkripsi“ bukan sinonim dari „matikan kerja kriptografis“.

Yang kedua bisa lebih murah karena prosesor menyediakan instruksi untuk kedua bagian: putaran AES dan perkalian tanpa-bawaan yang digunakan medan Galois. Pustaka juga memproses penyangga independen secara paralel, yang menjaga instruksi itu tetap sibuk alih-alih menunggu memori.

Apa yang sebenarnya diaktifkan mode yang dinegosiasikan

Dengan Community OpenVPN, cipher data AEAD berarti opsi auth tidak lagi menyumbang HMAC kanal data tersendiri. Referensi opsi enkripsi menjelaskan cakupan itu, dan itulah alasan dua konfigurasi yang tampak serupa dalam berkas teks bisa berbeda dalam kerja per paket.

Bacalah mode yang dinegosiasikan, bukan daftar keinginan. Daftar cipher yang diizinkan dan nama suite TLS tidak memberi tahu operasi mana yang berjalan pada muatan, dan baris cipher lama mungkin tidak menggambarkan apa yang dipilih koneksi saat ini.

openvpn --show-ciphers | head -20
sudo grep -E 'cipher|auth' /etc/openvpn/server.conf

Perintah pertama mendaftar cipher yang didukung biner, yang merupakan daftar kemampuan, bukan hasil yang dinegosiasikan. Yang kedua menunjukkan apa yang sebenarnya diminta server. Log koneksi adalah tempat untuk memastikan pilihan akhir, karena klien bisa jatuh ke sesuatu yang diizinkan server tetapi tidak dimaksudkan siapa pun.

Ukur beban kerja yang benar-benar Anda jalankan

Tolok ukur mikro kriptografis mengukur sebuah primitif dalam kondisinya sendiri. Transfer VPN juga menyalin penyangga, menjadwalkan utas atau interupsi, memeriksa kebijakan, dan melintasi jaringan. Bagian-bagian itu sering mendominasi, itulah sebabnya primitif yang lebih cepat tidak selalu menghasilkan terowongan yang lebih cepat.

openssl speed -evp aes-256-gcm
openssl speed -evp sha1

Kedua perintah itu memberi Anda perbandingan lokal kasar dari primitif pada mesin di depan Anda, dan keduanya jujur bahwa itu tolok ukur mikro. Keduanya tidak mengatakan apa pun tentang throughput terowongan Anda, dan tidak boleh pernah dikutip sebagai itu.

Lalu ukur beban kerja yang penting, dengan segala hal lain dijaga konstan: titik akhir sama, ukuran paket sama, transport sama, kebijakan kompresi sama. Jika perubahan profil juga mengubah transport atau lokasi pemrosesan, hasilnya menggambarkan bundel itu, bukan kriptografi.

Jaga juga tujuannya. Jalur data dengan kapasitas kriptografis berlebih masih bisa terikat latensi karena aplikasi menunggu perjalanan pulang-pergi, dan keuntungan kapasitas besar tidak memperbaiki protokol yang cerewet. Ukurlah konfigurasi yang didukung dan disetujui kebijakan secara keseluruhan, dan perlakukan „lebih sedikit kotak harus lebih cepat“ sebagai hipotesis sebagaimana adanya. Pertanyaan yang berguna bukanlah apakah enkripsi memakan biaya, melainkan apakah biaya itu muncul dalam pengukuran yang benar-benar Anda pedulikan.

Artikel terkait