Saya tahu tidak ada satu jawaban yang sulit dan cepat, tetapi adakah perkiraan perkiraan urutan umum untuk biaya overhead enkripsi SSL dibandingkan komunikasi soket yang tidak dienkripsi? Saya hanya berbicara tentang pemrosesan comm dan waktu kawat, tidak termasuk pemrosesan tingkat aplikasi.
Memperbarui
Ada pertanyaan tentang HTTPS versus HTTP , tapi saya tertarik melihat lebih rendah di tumpukan.
(Saya menggantikan frase "urutan besarnya" kebingungan menghindari; saya menggunakan itu sebagai jargon resmi bukan dalam arti CompSci resmi Tentu saja jika saya. Telah bersungguh-sungguh secara resmi, sebagai geek benar saya akan berpikir biner daripada desimal! ;-)
Memperbarui
Per permintaan dalam komentar, anggap kita sedang berbicara tentang pesan berukuran baik (kisaran 1k-10k) melalui koneksi persisten. Jadi pengaturan koneksi dan overhead paket bukan masalah yang signifikan.
sumber
Jawaban:
Urutan besarnya: nol.
Dengan kata lain, Anda tidak akan melihat throughput Anda dipotong setengah, atau apa pun seperti itu, ketika Anda menambahkan TLS. Jawaban untuk pertanyaan "duplikat" sangat berfokus pada kinerja aplikasi, dan bagaimana perbandingannya dengan overhead SSL. Pertanyaan ini khusus mengecualikan pemrosesan aplikasi, dan berupaya membandingkan non-SSL dengan SSL saja. Meskipun masuk akal untuk mengambil pandangan global tentang kinerja ketika mengoptimalkan, bukan itu yang ditanyakan oleh pertanyaan ini.
Overhead utama SSL adalah jabat tangan. Di situlah kriptografi asimetris yang mahal terjadi. Setelah negosiasi, cipher simetris yang relatif efisien digunakan. Itu sebabnya sangat membantu untuk mengaktifkan sesi SSL untuk layanan HTTPS Anda, di mana banyak koneksi dilakukan. Untuk koneksi yang berumur panjang, "efek akhir" ini tidak begitu penting, dan sesi tidak begitu berguna.
Inilah anekdot yang menarik. Saat Google beralih Gmail untuk menggunakan HTTPS, tidak diperlukan sumber daya tambahan; tidak ada perangkat keras jaringan, tidak ada host baru. Itu hanya meningkatkan beban CPU sekitar 1%.
sumber
I second @erickson: Denda kecepatan transfer data murni dapat diabaikan. CPU modern mencapai throughput crypto / AES beberapa ratus MBit / s. Jadi kecuali Anda menggunakan sistem sumber daya terbatas (ponsel) TLS / SSL cukup cepat untuk menyimpan data.
Namun perlu diingat bahwa enkripsi membuat caching dan load balancing jauh lebih sulit. Ini mungkin menghasilkan penalti performa yang sangat besar.
Tetapi pengaturan koneksi benar-benar menjadi penghenti acara bagi banyak aplikasi. Pada bandwidth rendah, kehilangan paket tinggi, koneksi latensi tinggi (perangkat seluler di pedesaan) bolak-balik tambahan yang diperlukan oleh TLS mungkin membuat sesuatu lambat menjadi sesuatu yang tidak dapat digunakan.
Misalnya, kami harus menghapus persyaratan enkripsi untuk akses ke beberapa aplikasi web internal kami - aplikasi yang tidak dapat digunakan jika digunakan dari Cina.
sumber
Dengan asumsi Anda tidak menghitung pengaturan koneksi (seperti yang Anda tunjukkan dalam pembaruan Anda), itu sangat tergantung pada sandi yang dipilih. Overhead jaringan (dalam hal bandwidth) akan diabaikan. Overhead CPU akan didominasi oleh kriptografi. Di Core i5 ponsel saya, saya dapat mengenkripsi sekitar 250 MB per detik dengan RC4 pada satu inti.
(RC4 adalah apa yang harus Anda pilih untuk kinerja maksimum.)AES lebih lambat, memberikan "hanya" sekitar 50 MB / s. Jadi, jika Anda memilih cipher yang benar, Anda tidak akan berhasil membuat satu core saat ini sibuk dengan overhead crypto bahkan jika Anda memiliki jalur 1 Gbit yang sepenuhnya digunakan. [ Sunting : RC4 tidak boleh digunakan karena tidak lagi aman. Namun, dukungan perangkat keras AES sekarang ada di banyak CPU, yang membuat enkripsi AES sangat cepat pada platform semacam itu.]Namun, pembentukan koneksi berbeda. Bergantung pada implementasinya (mis. Dukungan untuk TLS start palsu), itu akan menambah pulang-pergi, yang dapat menyebabkan keterlambatan yang nyata. Selain itu, crypto yang mahal terjadi pada koneksi pertama (CPU yang disebutkan di atas hanya dapat menerima 14 koneksi per core per detik jika Anda dengan bodohnya menggunakan kunci 4096-bit dan 100 jika Anda menggunakan kunci 2048-bit). Pada koneksi berikutnya, sesi sebelumnya sering digunakan kembali, menghindari crypto yang mahal.
Jadi, untuk meringkas:
Transfer pada koneksi yang dibuat:
Pembentukan koneksi pertama:
Perusahaan koneksi selanjutnya:
sumber