it-swarm-id.com

Mengapa HTTPS bukan protokol default?

Mengapa HTTP masih umum digunakan, alih-alih apa yang saya yakini HTTPS jauh lebih aman?

75
blunders

SSL/TLS memiliki sedikit overhead. Ketika Google beralih Gmail ke HTTPS (dari fitur opsional ke pengaturan default), mereka menemukan bahwa overhead CPU sekitar + 1%, dan overhead jaringan + 2%; lihat teks ini untuk detailnya. Namun, ini untuk Gmail, yang terdiri dari data pribadi, dinamis, tidak dibagi, dan dihosting di sistem Google, yang dapat diakses dari mana saja dengan latensi sangat rendah. Efek utama dari HTTPS, dibandingkan dengan HTTP, adalah:

  • Inisiasi koneksi memerlukan beberapa bolak-balik jaringan tambahan. Karena koneksi seperti itu "tetap hidup" dan digunakan kembali kapan pun memungkinkan, latensi tambahan ini dapat diabaikan ketika situs tertentu digunakan dengan interaksi berulang (seperti khas Gmail); sistem yang sebagian besar melayani konten statis mungkin menemukan overhead jaringan menjadi tidak dapat diabaikan.

  • Server proxy tidak dapat men-cache halaman yang disajikan dengan HTTPS (karena mereka bahkan tidak melihat halaman itu). Di sana lagi, tidak ada yang statis untuk di-cache dengan Gmail, tetapi ini adalah konteks yang sangat spesifik. ISP sangat menyukai caching karena bandwidth jaringan adalah kekuatan hidup mereka.

  • HTTPS adalah HTTP dalam SSL/TLS. Selama jabat tangan TLS, server menunjukkan sertifikatnya, yang harus menunjuk nama server yang dimaksud - dan ini terjadi sebelum permintaan HTTP itu sendiri dikirim ke server. Ini mencegah hosting virtual, kecuali ekstensi TLS yang dikenal sebagai Indikasi Nama Server digunakan; ini memerlukan dukungan dari klien. Secara khusus, Internet Explorer tidak tidak mendukung Indikasi Nama Server pada Windows XP (IE 7.0 dan yang lebih baru mendukungnya, tetapi hanya pada Vista dan Win7). Mengingat pangsa pasar saat ini dari sistem desktop menggunakan WinXP, orang tidak dapat berasumsi bahwa "semua orang" mendukung Indikasi Nama Server. Sebaliknya, server HTTPS harus menggunakan satu IP per nama server; status saat ini penyebaran IPv6 dan IPv4 kekurangan alamat membuat ini menjadi masalah.

  • HTTPS "lebih aman" daripada HTTP dalam arti berikut: data diautentikasi berasal dari server yang bernama, dan transfer bersifat rahasia sehubungan dengan siapa pun yang dapat menguping di telepon. Ini adalah model keamanan yang tidak masuk akal dalam banyak situasi: misalnya, ketika Anda melihat video dari Youtube, Anda tidak terlalu peduli apakah video tersebut benar-benar berasal dari youtube.com atau dari beberapa peretas yang (dengan sopan) mengirim Anda video yang ingin Anda lihat; dan video itu adalah data publik, sehingga kerahasiaan memiliki relevansi yang rendah di sini. Selain itu, otentikasi hanya dilakukan relatif terhadap sertifikat server, yang berasal dari Otoritas Sertifikasi yang diketahui oleh browser klien. Sertifikat tidak gratis, karena maksud sertifikat adalah bahwa sertifikat tersebut melibatkan identifikasi fisik pemilik sertifikat oleh CA (Saya tidak memberi tahu bahwa CA komersial menghargai sertifikat mereka secara adil; tetapi bahkan CA yang paling adil, yang dioperasikan oleh Sang Buddha sendiri, akan masih harus membebankan biaya untuk sertifikat). Komersial CA hanya akan cinta HTTPS menjadi "default". Selain itu, tidak jelas apakah model PKI yang diwujudkan oleh sertifikat X.509 benar-benar apa yang dibutuhkan "secara default" untuk Internet secara luas (khususnya ketika menyangkut hubungan antara sertifikat dan DNS - beberapa berpendapat bahwa sertifikat server harus dikeluarkan oleh pendaftar saat domain dibuat).

  • Dalam banyak jaringan perusahaan, HTTPS berarti bahwa data tidak dapat dilihat oleh penyadap, dan kategori itu mencakup semua jenis filter konten dan perangkat lunak antivirus. Menjadikan HTTPS sebagai standar akan membuat banyak administrator sistem sangat tidak senang.

Semua ini adalah alasan mengapa HTTPS tidak selalu merupakan ide yang baik sebagai protokol default untuk Web. Namun, mereka bukan alasan mengapa HTTPS bukan, saat ini, protokol default untuk Web; HTTPS bukan default hanya karena HTTP ada lebih dulu.

68
Thomas Pornin

Meskipun ada jawaban bagus yang sudah diberikan, saya percaya bahwa satu aspek diabaikan sejauh ini.

Ini dia: Plain HTTP adalah protokol default untuk web karena sebagian besar informasi di web tidak memerlukan keamanan.

Saya tidak bermaksud meremehkan pertanyaan, atau masalah keamanan beberapa situs web/aplikasi. Tetapi kadang-kadang kita bisa lupa berapa banyak lalu lintas web:

  • hanya berisi informasi publik sepenuhnya
  • atau memiliki sedikit atau tanpa nilai
  • atau di mana memiliki lebih banyak pengunjung dilihat sebagai meningkatkan nilai situs (media berita, efek jaringan situs)

Beberapa contoh cepat, saya yakin Anda dapat dengan cepat membuat lebih banyak di pikiran Anda:

  • Hampir semua situs web perusahaan, kadang-kadang disebut "situs brosur", mendaftar informasi publik tentang perusahaan.
  • Hampir semua media berita, blog, stasiun TV, dll yang telah memilih dukungan iklan sebagai strategi monetisasi utama mereka.
  • Layanan yang dapat menawarkan login dan personalisasi tambahan, tetapi yang juga membagikan konten mereka secara gratis kepada siapa saja yang menjelajah secara anonim (YouTube fx).
31
Jesper M
  • Ini menempatkan lebih banyak beban CPU pada server, terutama untuk konten statis.
  • Lebih sulit melakukan debug dengan paket capture
  • Itu tidak mendukung server virtual berbasis nama
5
Mike Scott

Http selalu default. Awalnya https tidak diperlukan untuk apa pun, itu cukup banyak tambahan yang ditempel karena keamanan yang jelas diperlukan dalam beberapa keadaan.

Bahkan sekarang, ada begitu banyak situs web yang tidak memerlukan https sehingga masih belum menjadi argumen yang meyakinkan untuk mengganti http sepenuhnya.

Dengan mekanisme yang semakin efektif untuk menjalankan koneksi aman TLS, overhead CPU menjadi jauh lebih sedikit masalah.

5
Rory Alsop

Tidak ada yang menunjukkan masalah jelas yang muncul karena menggunakan http sebagai default, bukan https.

Hampir tidak ada yang mengganggu untuk menulis uri penuh ketika meminta sumber daya yang perlu dienkripsi dan/atau ditandatangani untuk berbagai keperluan.

Ambil gmail sebagai contoh, ketika pengguna mengunjungi gmail.com, mereka sebenarnya mengunjungi protokol default http, daripada https. Pada titik ini keamanan telah gagal dalam skenario di mana musuh menyadap lalu lintas. Mengapa? Karena memungkinkan untuk menghapus html dari permintaan https, dan mengarahkannya ke http.

Jika https sebenarnya adalah protokol default, sesi Anda ke situs web akan terlindungi.

Untuk pertanyaan mengapa http dipilih lebih dari https, berbagai jawaban di atas berlaku. Dunia belum siap untuk penggunaan enkripsi secara luas.

5

Selain alasan yang telah diberikan orang lain:

  • Pekerjaan tambahan diperlukan untuk mengatur HTTPS di server

    Administrator server harus mengkonfigurasi sertifikat untuk setiap domain. Ini melibatkan interaksi dengan otoritas sertifikat untuk membuktikan bahwa Anda adalah pemilik asli domain dan mendapatkan pembaruan sertifikat. Ini mungkin berarti secara manual menghasilkan permintaan penandatanganan sertifikat dan membeli pembaruan, atau mengatur proses otomatis untuk melakukannya (seperti certbot menggunakan Let's Encrypt). Dalam kedua kasus, ini lebih berfungsi daripada tidak menggunakan HTTPS.

  • Diperlukan alamat IP tambahan

    Ini sebenarnya bukan masalah karena dukungan SNI (Server Name Identification) meluas di browser dan perpustakaan klien SSL.

    Secara tradisional, bagaimanapun, perlu untuk menggunakan alamat IP yang berbeda untuk setiap situs yang berbeda menggunakan SSL pada server dan port tertentu. Ini tergabung dengan kemampuan untuk melakukan hosting berbasis nama (virtual hosting) - praktik yang banyak digunakan memungkinkan banyak domain berbeda di-host dari alamat IP yang sama. Dengan HTTPS, hosting berbasis nama biasa tidak berfungsi karena server akan perlu tahu apa nama host untuk ditampilkan di lapisan validasi SSL/TLS sebelum permintaan HTTP, yang berisi nama host, dapat didekripsi.

    Server Name Identification (SNI), yang secara efektif mengimplementasikan hosting berbasis nama pada lapisan SSL/TLS, menghilangkan batasan ini.

  • Lambat perubahan

    HTTPS adalah modifikasi protokol yang ada, HTTP, yang sudah sangat mengakar sebelum banyak orang mulai berpikir tentang keamanan. Begitu suatu teknologi telah menjadi mapan dan di mana-mana seperti HTTP, dibutuhkan waktu yang sangat lama bagi dunia untuk beralih ke penggantinya, bahkan jika alasan perubahannya menarik.

3
thomasrutter

Thomas telah menulis jawaban yang sangat bagus, tetapi saya pikir saya akan menawarkan beberapa alasan mengapa HTTPS tidak digunakan secara luas ...

  • Tidak diperlukan. Karena jawaban Jesper dengan jelas menunjukkan "mayoritas informasi di web tidak memerlukan keamanan". Namun, dengan semakin banyaknya pelacakan yang dilakukan oleh mesin pencari, perusahaan iklan, filter internet tingkat negara dan program "Big Brother" lainnya (mis. NSA); itu meningkatkan kebutuhan akan langkah-langkah privasi yang lebih besar.

  • Kecepatan. Seringkali terasa lambat karena perjalanan pulang-pergi tambahan dan permintaan tambahan untuk daftar pencabutan sertifikat ( OCSP dll.). Untungnya SPDY (dibuat oleh Google, dan sekarang didukung di semua browser utama), dan beberapa karya menarik dari CloudFlare membantu mengubah ini .

  • Harga sertifikat. Sebagian besar otoritas sertifikat membebankan jumlah uang yang sangat besar (ratusan dolar) untuk sebuah sertifikat. Untungnya ada pilihan gratis , tetapi ini tidak mendapatkan publisitas sebanyak (tidak yakin mengapa?).

  • Harga alamat IP. Sampai IPv6 menyebar, situs web akan menghadapi kelangkaan yang meningkat (dan dengan demikian biaya) dari alamat IPv4. SNI memungkinkan untuk menggunakan beberapa sertifikat pada satu alamat IP, tetapi tanpa dukungan SNI di Windows XP atau IE 6, sebagian besar situs masih membutuhkan alamat IP khusus untuk menyediakan SSL.

  • Peningkatan penggunaan CPU server.  Ini adalah kepercayaan umum, tetapi menurut Google " SSL/TLS tidak lagi mahal secara komputasi ".

2
Simon East

Penjelasan paling sederhana dan paling masuk akal yang saya temukan di antara rekan-rekan saya adalah selalu dilakukan dengan HTTP, mengapa mengubahnya sekarang.

Jika tidak rusak, jangan memperbaikinya.

1
blfoleyus

Jawaban sebenarnya adalah bahwa sertifikat SSL dalam bentuk mereka saat ini sulit digunakan. Mereka sangat tidak dapat digunakan sehingga mengancam keamanan sertifikat, karena orang mengambil jalan pintas untuk menyelesaikan pekerjaan. Saya mengatakan ini sebagai seseorang yang secara rutin berurusan dengan SSL 2 arah (sertifikat PKI), ketidaksesuaian tumpukan TLS yang dibuat oleh kompleksitas spesifikasi, dan jumlah kombinasi konfigurasi yang gila (batas cipher, opsi, bug perpustakaan khusus bahasa) , dll) yang disebut "TLS".

Lihat kebangkitan LetsEncrypt sebagai bukti bahwa ini benar.

Caddy adalah proyek proxy terbalik yang menggunakan LetsEncrypt. Itu dapat memperbarui sertifikat saat server berjalan, dan orang-orang menggunakan kadaluwarsa yang sangat singkat karena pembaruan otomatis.

1
Rob