Pertama-tama, cobalah untuk memahami bagaimana SSL (HTTPS) dan otentikasi HTTP bekerja.
Metode otentikasi HTTP biasa (Intisari, Dasar, dan segala bentuk + skema otentikasi berbasis cookie yang dapat Anda terapkan di atas HTTP) semuanya tidak aman sendiri, karena mereka mengirim informasi otentikasi kurang lebih dalam teks yang jelas. Apakah data di bidang POST atau header, dan apakah pengkodean base64 diterapkan, tidak masalah sama sekali dalam hal ini, kata sandi jelas terlihat oleh siapa pun yang memiliki akses ke lalu lintas jaringan. Ini berarti bahwa otentikasi HTTP melalui saluran yang tidak terpercaya tidak berharga: yang diperlukan seorang penyerang untuk membaca kata sandi Anda adalah mengendus jaringan kecil.
SSL mengimplementasikan saluran komunikasi yang aman melalui saluran yang pada dasarnya tidak aman. Ini berfungsi, kira-kira, sebagai berikut:
- Server mengirimkan sertifikat yang ditandatangani
- Klien memvalidasi sertifikat terhadap daftar kunci penandatanganan yang dikenal baik; tanda tangan sertifikat dapat dirantai, sehingga setiap simpul mengatakan "jika tanda tangan yang menandatangani saya baik, maka saya juga", tetapi pada akhirnya, rantai harus diselesaikan ke salah satu dari segelintir otoritas tepercaya yang telah dikonfigurasi ulang pada klien.
- Klien menggunakan kunci enkripsi publik server untuk mengirim rahasia bersama
- Server mendekripsi rahasia bersama menggunakan kunci privat (karena hanya server yang sah yang memiliki kunci privat, server lain tidak akan dapat mendekripsi rahasia bersama)
- Klien mengirimkan data permintaan aktual, dienkripsi menggunakan rahasia bersama
- Server mendekripsi data permintaan, lalu mengirim respons terenkripsi
- Klien mendekripsi respons dan menyajikannya kepada pengguna.
Perhatikan beberapa poin penting di sini:
- Rantai sertifikat memungkinkan klien untuk memastikan bahwa server yang mereka ajak bicara adalah yang asli, bukan seseorang yang memotong permintaan mereka. Inilah sebabnya mengapa Anda harus membeli sertifikat SSL asli, dan mengapa browser memberikan peringatan menakutkan kepada Anda ketika Anda menekan situs yang menggunakan sertifikat yang tidak valid, kedaluwarsa, atau salah: semua enkripsi di dunia tidak membantu jika Anda berbicara dengan orang yang salah.
- Enkripsi publik / pribadi yang digunakan untuk bertukar rahasia memastikan bahwa komunikasi yang berhasil hanya akan berfungsi antara pasangan klien dan server ini: paket jaringan sniffed akan dienkripsi, dan mereka akan memerlukan kunci pribadi server untuk mendapatkan data.
- Enkripsi simetris digunakan untuk sebagian besar permintaan, karena memiliki overhead kinerja yang jauh lebih rendah daripada enkripsi kunci privat / publik. Kunci (rahasia bersama) dipertukarkan menggunakan enkripsi kunci publik / publik, karena itu adalah satu-satunya cara untuk melakukannya dengan cara yang aman (kecuali mengangkutnya melalui saluran terpisah, seperti layanan kurir).
Jadi jelas, ada beberapa overhead yang terlibat, tapi itu tidak seburuk yang Anda kira - itu sebagian besar pada skala di mana "melemparkan lebih banyak perangkat keras padanya" adalah respons yang tepat, kecuali Anda sedang mempersiapkan lalu lintas dalam jumlah sangat besar ( pikirkan Google atau Facebook). Dalam keadaan normal, yaitu penggunaan aplikasi web biasa, overhead SSL dapat diabaikan, dan akibatnya, segera setelah Anda memiliki data rahasia sama sekali, yang terbaik adalah menjalankan semuanya melalui SSL, termasuk sumber daya. SSL juga satu-satunya cara untuk mengamankan lalu lintas HTTP; metode lain sama sekali tidak terstandarisasi dan dengan demikian tidak didukung secara luas, dan Anda sama sekali tidak ingin menerapkan hal-hal ini sendiri, karena jujur, itu terlalu mudah untuk salah paham.
TL; DR: Ya, SSL + Otentikasi Dasar adalah ide yang bagus, ya, Anda memerlukan server yang aman (dan sertifikat yang valid ), ya, itu akan memperlambat segalanya, tetapi tidak, ini bukan sesuatu yang perlu dikhawatirkan sekarang.