Gembok hijau mengungkap: bagaimana cara kerja jabat tangan SSL?
Diterbitkan: 2022-08-16Setiap hari ketika menjelajahi Web dengan keamanan dalam pikiran Anda, Anda berpikir tentang gembok hijau terkenal di dekat alamat URL situs web di browser Anda dan versi HTTPS dari protokol transfer data. Dalam artikel ini, kita akan menemukan mengapa HTTPS benar-benar aman dan bagaimana komunikasi dilindungi dari penyadapan oleh pihak ketiga.
Pertama, kami akan memperkenalkan secara singkat dua konsep kriptografi dasar: tanda tangan digital dan enkripsi, kami akan menyelami proses yang disebut handshake SSL , yang dilakukan sebelum klien dan server mulai bertukar komunikasi dan digunakan untuk membangun konteks kriptografi yang aman. Kami akan menyelesaikan dengan informasi tentang cara meningkatkan keamanan lebih banyak lagi dengan langkah opsional yang disebut otentikasi sertifikat klien.
Kriptografi kunci publik 101: Pasangan Kunci
Temui Alice dan Bob, dua orang yang memutuskan untuk menggunakan metode kriptografi untuk bertukar pesan pribadi mereka dengan aman. Pilihan pertama yang harus mereka hadapi adalah di antara dua jenis kriptografi yang berbeda: kriptografi kunci simetris dan asimetris (juga disebut kripto kunci publik).
Tapi tunggu, kunci apa ini ? Pada dasarnya, kita dapat menyederhanakan bahwa kunci adalah urutan karakter acak. Kita dapat menggunakan urutan ini untuk mengubah (melakukan operasi kriptografi tertentu) pada sebuah pesan – kita akan mempelajarinya segera.
Kriptografi kunci simetris
Saat menggunakan kripto kunci simetris, pengirim membuat kunci dan kemudian menggandakannya untuk penerima. Pengirim menyimpan kunci asli, dan duplikat dikirimkan ke penerima. Kunci yang sama digunakan untuk operasi kripto di kedua ujung komunikasi.
Dan apa keuntungan dan kerugian utama dari kriptografi kunci simetris?
kelebihan | Kontra |
operasi kripto yang lebih cepat – hanya satu kunci yang digunakan | kunci sensitif terancam dicegat selama transfer dari pengirim ke penerima |
pengaturan lebih sederhana, lebih mudah dipahami | setelah kunci dikompromikan, komunikasi juga terganggu di kedua ujungnya |
Kriptografi kunci asimetris
Saat menggunakan kripto kunci asimetris, pengirim dan penerima menghasilkan pasangan kunci – kunci publik dan kunci pribadi. Kunci secara matematis digabungkan satu sama lain untuk bekerja sama dalam berbagai operasi kripto. Baik pengirim dan penerima menyimpan kunci pribadi mereka dengan aman, tetapi mereka dapat bertukar kunci publik tanpa tindakan pencegahan khusus. Mereka bahkan dapat menggunakan semacam "halaman kuning kunci publik" - server kunci publik untuk mengirim kunci publik mereka agar dapat diakses oleh siapa saja.
Apa pro dan kontra dari kriptografi kunci asimetris?
kelebihan | Kontra |
kunci pribadi sensitif tidak pernah meninggalkan lingkungan pengirim | kinerja operasi kripto yang lebih rendah |
ketika kunci pribadi dikompromikan di salah satu ujung komunikasi, ujung lainnya masih aman | permainan berakhir ketika kunci pribadi hilang |
lebih banyak operasi kriptografi tersedia |
Karena penyiapan kripto asimetris lebih aman, Alice dan Bob memutuskan untuk melakukannya! Sekarang mereka dapat memanfaatkannya dan mulai berpikir untuk memastikan keamanan dan integritas komunikasi.
Kriptografi kunci publik 101: Enkripsi
Ketika Alice mengirim pesan ke Bob, dia ingin memastikan bahwa tidak ada orang lain yang dapat melihat apa isinya. Dia memutuskan untuk mengenkripsi pesan. Untuk mencapai itu, Alice harus terlebih dahulu mendapatkan kunci publik Bob baik dari server kunci atau langsung dari Bob melalui saluran komunikasi. Setelah Alice mendapatkan kuncinya, dia dapat menerapkan operasi enkripsi menggunakan kunci publik Bob pada pesan yang ingin dia kirim.
Secara umum, dalam proses ini, pesan diambil oleh algoritma kriptografi (alias cipher) dalam blok (paling umum) dan beberapa operasi bit antara pesan dan kunci dilakukan, menghasilkan output yang merupakan pesan terenkripsi (alias ciphertext) . Ketika Bob mendapatkan pesan terenkripsi, dia adalah satu-satunya orang yang dapat mendekripsi dengan kunci pribadinya.
Catatan:
- Enkripsi pesan – pengirim mengenkripsi pesan dengan kunci publik penerima
- Dekripsi pesan – penerima mendekripsi pesan dengan kunci pribadi mereka
Kriptografi kunci publik 101: Tanda tangan
Selain mencegah konten pesan terungkap, sama pentingnya untuk dapat mengonfirmasi identitas pengirim dan memverifikasi jika pesan tidak diubah. Tanda tangan digital (objek terpisah yang dilampirkan pada pesan) digunakan tepat untuk dua alasan ini.
Alice pertama menggunakan algoritma hashing untuk mengembangkan pesan hash untuk menghasilkan tanda tangannya. Hashing adalah menghitung fungsi matematika satu arah pada pesan yang menghasilkan output nilai tetap yang lebih pendek – berbeda untuk input yang berbeda. Kemudian dia menggunakan kunci pribadinya untuk mengenkripsi (menandatangani) hash yang dihasilkan.
Selanjutnya, ketika Bob menerima pesan dan tanda tangan, dia dapat mendekripsi tanda tangan terlebih dahulu menggunakan kunci publik Alice. Ketika itu berhasil, dia tahu bahwa tanda tangan itu benar-benar dihasilkan oleh Alice (jika tidak, dekripsi dengan kunci publiknya akan gagal).
Kedua, Bob dapat mengambil pesan dan melakukan hash menggunakan algoritma yang sama dengan yang dimiliki Alice sebelumnya dan mengkonfirmasi bahwa hash pesannya sama dengan yang dihasilkan oleh Alice. Ketika hash cocok, dia tahu bahwa pesan itu tidak dirusak.
Catatan:
- Menghasilkan tanda tangan – pengirim mengenkripsi (menandatangani) hash pesan dengan kunci pribadinya dan membuat tanda tangan
- Memverifikasi tanda tangan – penerima pertama-tama mendekripsi hash pesan dari tanda tangan dan memeriksa apakah hash yang dihitung olehnya cocok dengan hash dari tanda tangan
- Enkripsi dan tanda tangan dapat digunakan secara terpisah , tetapi untuk keamanan tertinggi, keduanya biasanya digabungkan. Oleh karena itu, sebagian besar fungsi kripto yang dapat Anda temui disebut encryptSignMessage() , decryptVerifyMessage() , dll.
Saya harap Anda tidak kesulitan mengikuti kisah Alice & Bob. Biarkan saya mengilustrasikan seluruh aliran sekali lagi untuk memastikan semuanya jelas dan untuk meringkas semuanya.

- Alice ingin mengirim pesan ke Bob
- Alice mengambil kunci pribadinya dan menghasilkan tanda tangan
- Alice mengambil kunci publik Bob dan mengenkripsi pesan
- Alice mengirim pesan ke Bob
- Bob mengambil kunci publik Alice dan memverifikasi tanda tangannya
- Bob menggunakan kunci pribadinya untuk mendekripsi pesan
Baiklah, cukup teorinya. Sekarang mari kita lihat bagaimana semua ini digunakan di HTTPS!

Jabat Tangan SSL
Tolong katakan halo
Ketika klien memulai koneksi ke server, pertama-tama penting untuk membuat pengenalan yang tepat untuk membangun konteks kriptografi untuk sisa komunikasi. Ini dapat dilakukan pada langkah HTTPS CONNECT, jauh sebelum mengurai header dan badan permintaan. Semuanya dimulai dengan klien mengirim pesan halo klien .
Yang terpenting, pesan tersebut berisi algoritme kripto yang dipahami klien dan beberapa materi tambahan, seperti algoritme kompresi yang didukung, versi protokol, id sesi, dll. Karena server suka bersikap sopan, ia juga merespons dengan pesan halo server yang terutama berisi sertifikat server dengan kunci publik server (ya, prosesnya didasarkan pada kriptografi kunci publik – metode yang sama yang dipilih Alice dan Bob).
Otoritas sertifikat
Sekarang saatnya untuk menyambut tamu berikutnya di panggung: otoritas sertifikat (CA). Namanya terdengar serius – tetapi itu hanya entitas pihak ketiga dengan banyak kredit jalanan yang pada dasarnya dianggap dapat dipercaya di seluruh dunia. Entitas tersebut dapat memvalidasi identitas server dan menempatkan tanda tangan digital mereka bersama dengan sertifikat server (mirip dengan Alice saat mengirim pesan kepada Bob).
Verifikasi sertifikat
Sekarang mari kita lihat judul gembok hijau di sebelah alamat URL browser Anda.
Setiap klien web memiliki daftar paket kunci publik otoritas sertifikat yang terkenal dan tepercaya . Anda mungkin ingat bahwa di awal artikel, saya menyebutkan bahwa tanda tangan dibuat menggunakan kunci pribadi pengirim dan dapat diverifikasi menggunakan kunci publik pengirim. Nah, inilah tepatnya yang dilakukan klien . Itu melewati daftar CA tepercaya yang dibundel dan memeriksa apakah tanda tangan sertifikat server milik salah satu CA tepercaya. Jika ya, ia menerima sertifikat – dan saat itulah gembok berubah menjadi hijau .
Tapi itu hanya langkah pertama, yang belum ada hubungannya dengan keamanan. Siapa pun dapat menyalin sertifikat kunci publik apa pun, meletakkannya di server dan menyajikannya ke klien penghubung, bukan?
Setelah klien memverifikasi sertifikat server, itu membuat kunci simetris untuk mengenkripsi komunikasi. Tapi, seperti yang saya sebutkan di awal, masalah dengan kunci simetris adalah mereka rentan untuk dicegat selama transportasi. Pada langkah ini, klien dan server tidak memiliki konteks kriptografi yang sama. Jadi klien mengirimkan kunci simetris ke server, tetapi pertama-tama mengenkripsinya dengan kunci publik server. Kemudian server menerimanya dan membutuhkan kemampuan untuk mendekripsi untuk membuat koneksi yang aman.
Oleh karena itu, bahkan jika seseorang menunjukkan sertifikat kunci publik yang dicuri , ini adalah langkah yang akan gagal. Kunci pribadi yang valid yang terikat ke kunci publik sertifikat server sangat penting untuk mendekripsi kunci simetris. Tentu saja, ini bukan masalah untuk server yang sah karena memiliki kunci pribadi yang disimpan dengan aman. Ini dapat digunakan untuk mendekripsi kunci simetris dan mengenkripsi komunikasi lebih lanjut.
Jadi, kesimpulannya, handshake SSL adalah proses di mana jenis kriptografi simetris dan asimetris digunakan . Pada awalnya, pasangan kunci asimetris memulai koneksi dan menyediakan cara yang aman bagi kunci simetris untuk berjalan. Seperti yang kami tunjukkan di awal, operasi kriptografi simetris lebih cepat, jadi menggunakannya untuk seluruh komunikasi setelah penyiapan bermanfaat. Selain itu, setelah koneksi aman dibuat, koneksi tersebut akan digunakan kembali hingga masa berlakunya habis, sehingga penyiapan kunci asimetris tidak dilakukan sebelum setiap permintaan klien.
Perlu juga disebutkan bahwa dalam kehidupan nyata, sertifikat tidak ditandatangani langsung oleh CA tepercaya paling terkenal (disebut root ). Namun, CA root menandatangani sertifikat perantara, yang akhirnya menandatangani sertifikat server – sehingga menciptakan rantai sertifikat, yang diperiksa oleh klien penghubung hingga tanda tangan yang valid terpenuhi. Ini tentu saja memberikan keamanan yang lebih baik – ketika salah satu CA perantara disusupi, hal itu memengaruhi lebih sedikit orang.
Validasi sertifikat klien
Sekarang, ada satu langkah opsional yang dapat kami sebutkan secara singkat, karena kami memiliki semua pengetahuan yang diperlukan untuk memahaminya. Server dapat dikonfigurasi untuk meminta dan memvalidasi sertifikat klien setelah membuat koneksi aman untuk mencapai keamanan tambahan.
Itu bekerja dengan cara yang sama – tetapi kali ini, klien mengirimkan sertifikat mereka , dan server memeriksa daftar otoritas sertifikat tepercaya dan memverifikasinya. Perlu juga dicatat bahwa server berada di bawah kendali pengembang (berlawanan dengan klien, yaitu browser web atau sistem operasi seluler), sehingga pengembang backend dapat dengan mudah mengubah daftar sertifikat tepercaya.
Jaringan perusahaan biasanya menggunakan mekanisme ini. Paling sering, sertifikat klien dibuat oleh sistem manajemen perangkat yang diinstal pada perangkat karyawan dan ditandatangani dengan sertifikat root yang dibuat perusahaan. Sertifikat yang sama juga ditambahkan ke lingkungan backend. Dengan cara ini, backend perusahaan dapat dengan mudah memverifikasi sertifikat saat klien terhubung.

Mari menelusuri solusi backend kami
Baca lebih banyakSekarang, untuk meringkas, mari kita lihat diagram untuk keseluruhan aliran:

Ringkasan
Anda telah mencapai akhir artikel! Mudah-mudahan, Anda sudah memahami mekanisme implementasi pengaturan enkripsi di HTTPS dan metode aplikasi proses penandatanganan dan enkripsi.
Karena Anda tahu cara kerjanya, Anda tentu harus merasa lebih percaya diri tentang enkripsi data. Namun, penting untuk diingat bahwa gembok hijau di browser Anda belum menjamin keamanan . Dalam konteks yang sensitif terhadap keamanan, Anda juga harus memeriksa sertifikat dengan cermat. Seperti yang mereka katakan, diperingatkan adalah dipersenjatai!