Prinsip Desain Protokol Aman
Terapkan prinsip Abadi-Needham, kebaruan, dan sasaran autentikasi untuk merancang protokol yang tahan terhadap serangan yang telah diketahui.
Prinsip Desain Protokol Aman adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.
Model Penyerang Dolev-Yao
Perancangan protokol aman mengasumsikan penyerang yang mengendalikan jaringan sepenuhnya. Model Dolev-Yao (1983) menetapkan bahwa penyerang dapat mencegat, membaca, menunda, memutar ulang, menghapus, dan mengubah pesan apa pun yang sedang dikirim. Penyerang dapat membuat pesan yang tidak dapat dibedakan dari pesan pihak yang jujur. Penyerang dapat menyusun pesan baru dari komponen pesan yang telah diketahui. Penyerang tidak dapat mematahkan primitif kriptografi (mendekripsi tanpa kunci atau memalsukan tanda tangan). Yang penting, kemampuan komputasi penyerang terbatas — berjalan dalam waktu polinomial — tetapi penyerang mengendalikan semua saluran komunikasi. Keamanan protokol berarti mencapai tujuan autentikasi dan kerahasiaan bahkan terhadap penyerang yang kuat ini, dengan hanya mengandalkan kesulitan komputasi dari primitif yang mendasarinya.
Prinsip Abadi-Needham
Abadi dan Needham (1994) merangkum pelajaran praktis perancangan protokol ke dalam serangkaian prinsip. (1) Setiap pesan harus menjelaskan maksudnya: penafsiran pesan harus mandiri, bukan bergantung pada konteks. (2) Kondisi bagi suatu entitas untuk mengambil tindakan harus dinyatakan secara eksplisit dalam protokol. (3) Jika identitas suatu entitas penting, identitas tersebut harus dinyatakan secara eksplisit dalam pesan. (4) Jelaskan dengan tegas alasan enkripsi digunakan: enkripsi memberikan kerahasiaan, sedangkan penandatanganan memberikan autentikasi — jangan gunakan enkripsi sebagai pengganti penandatanganan. (5) Pesan harus dienkripsi pada lapisan protokol yang memerlukan kerahasiaannya. Prinsip-prinsip ini mencegah banyak kelemahan jenis NS.
Kebaruan: Nilai Sekali Pakai dan Stempel Waktu
Serangan pemutaran ulang termasuk kerentanan protokol yang paling umum. Mekanisme kebaruan memastikan bahwa pesan yang diterima baru saja dibuat, bukan diputar ulang dari sesi lama. Ada dua pendekatan: (1) Nilai sekali pakai (angka yang digunakan ONCE) — mekanisme tantangan-respons ketika penerima mengirim nilai acak dan mengharapkan nilai tersebut dicantumkan kembali dalam respons. Respons harus memuat nilai tersebut dalam bentuk terenkripsi atau bertanda tangan sehingga rekaman lama tidak dapat memenuhi tantangan. (2) Stempel waktu — kedua pihak menyertakan waktu saat ini; pesan dengan stempel waktu yang sudah kedaluwarsa ditolak. Stempel waktu memerlukan jam yang tersinkronisasi (Kerberos mengizinkan perbedaan waktu 5 menit). Nilai sekali pakai lebih disukai ketika sinkronisasi jam tidak tersedia; stempel waktu menyederhanakan verifikasi tanpa status.
Pemisahan Kunci: Kunci Berbeda untuk Tujuan Berbeda
Penggunaan kunci kriptografi yang sama untuk beberapa tujuan menimbulkan interaksi berbahaya. Jika kunci K digunakan untuk enkripsi dan autentikasi sekaligus, penyerang dapat memasukkan teks tersandi yang dibuat khusus ke mekanisme autentikasi untuk mengambil informasi. TLS 1.3 menghindari hal ini secara ketat melalui HKDF-Expand-Label dengan label berbeda untuk setiap kunci yang diturunkan: "c hs traffic" (jabat tangan klien), "s hs traffic" (jabat tangan server), "c ap traffic" (aplikasi klien). Sekalipun kunci jabat tangan dikompromikan, kunci aplikasi yang diturunkan dari cabang HKDF yang berbeda tetap aman. Perancangan protokol harus memeriksa setiap kunci untuk menemukan risiko penggunaannya dalam beberapa tujuan dan menurunkan kunci terpisah untuk tujuan yang terpisah.
Pengikatan Autentikasi ke Sesi
Kredensial autentikasi harus diikat ke sesi tertentu tempat kredensial tersebut digunakan. Tanpa pengikatan ini, kredensial yang diperoleh dalam satu sesi dapat diputar ulang pada sesi lain. Teknik: (1) Sertakan pengenal sesi dalam data yang ditandatangani atau diberi MAC. (2) Sertakan transkrip DH dalam tanda tangan (pendekatan STS). (3) Gunakan kunci sesi yang diturunkan dari HKDF untuk menghasilkan MAC atas identitas (pendekatan SIGMA). Pesan Selesai TLS 1.3: MAC(server_finished_key, transcript_hash) — MAC mencakup seluruh transkrip, sehingga pemutaran ulang pesan Selesai dari sesi lain gagal. Pengikatan inilah yang mencegah serangan lintas sesi yang ditemukan pada varian awal Kerberos dan NS.
Hak Istimewa Minimum dan Pengungkapan Informasi Minimal
Protokol hanya boleh mengungkapkan informasi minimum yang diperlukan untuk fungsinya. Ungkapkan identitas hanya kepada pihak yang membutuhkannya. Jangan sertakan nomor seri sertifikat atau pengenal yang memungkinkan sesi ditautkan ke identitas, kecuali diwajibkan. TLS 1.3 mengenkripsi sertifikat server, berbeda dengan TLS 1.2 yang mengirimkannya dalam teks terang, sehingga informasi yang tersedia bagi penyadap pasif berkurang. ESNI (SNI Terenkripsi, kini ECH — Client Hello Terenkripsi) mengenkripsi indikasi nama server untuk menyembunyikan server mana yang sedang dihubungi klien. Pengungkapan informasi minimal juga merupakan prinsip desain token: klaim JWT hanya boleh berisi hal-hal yang diperlukan untuk otorisasi, bukan catatan identitas lengkap.
Pertahanan terhadap Serangan Penurunan Versi
Negosiasi versi merupakan permukaan serangan yang umum: penyerang menghapus atau mengubah ClientHello untuk memaksa kedua pihak menggunakan versi protokol yang lebih lama dan lebih lemah. Pertahanan: (1) Negosiasi versi terautentikasi — sertakan versi yang dinegosiasikan dalam transkrip bertanda tangan (pesan Selesai TLS mencakup ClientHello, termasuk versinya). (2) Penanda penurunan versi — TLS 1.3 menetapkan byte khusus dalam nilai acak ServerHello saat menurunkan versi ke TLS 1.2 agar klien dapat mendeteksi penurunan tersebut. (3) Pencegahan intoleransi versi — server harus menolak ClientHello yang formatnya tidak valid tanpa diam-diam kembali ke versi yang lebih rendah. (4) SCSV — TLS_FALLBACK_SCSV memberi tahu server bahwa klien mencoba lagi dengan versi yang lebih rendah, sehingga server dapat menolak pengembalian versi yang tidak sah.
Komitmen Transkrip dan Ketidakmalleabilitas
Pesan protokol harus terikat sejak pertukaran pertama. Ketidakmalleabilitas berarti penyerang tidak dapat mengubah teks sandi atau tanda tangan lalu membuatnya tetap valid dalam konteks yang berbeda. AEAD menyediakan ketidakmalleabilitas teks sandi — perubahan apa pun akan membuat tag autentikasi tidak valid. Pada tingkat protokol, hashing transkrip memastikan bahwa pertukaran pesan Selesai di akhir jabat tangan mengikat setiap pesan yang dikirim. Hal ini mencegah serangan potong-dan-tempel: menyisipkan pesan dari dua sesi berbeda tidak dapat menghasilkan nilai Selesai yang valid untuk salah satu sesi. Skema komitmen (komitmen hash) memperluas prinsip ini ke alur protokol yang memerlukan komitmen awal sebelum pengungkapan.
Kejelasan Mesin Status
Protokol kompleks sering gagal pada batas-batas mesin status. Jika transisi status ambigu — apa yang terjadi jika pesan 3 tiba sebelum pesan 2? Bagaimana jika tipe pesan yang tidak terduga tiba? — implementasi dapat berbeda, sehingga tercipta ketidakkonsistenan yang dapat dieksploitasi penyerang. Spesifikasi protokol harus mendefinisikan: mesin status lengkap, termasuk semua status dan transisi yang valid; perilaku terhadap masukan yang tidak terduga, yaitu menolak dengan kesalahan tertentu atau mengabaikannya secara diam-diam; batas waktu dan batas pengiriman ulang; serta pembersihan sesi. SSL/TLS secara historis mengalami perbedaan implementasi dalam mesin status — CVE-2014-0160 (Heartbleed) pada dasarnya merupakan kegagalan mesin status ketika permintaan detak jantung diproses dalam status yang batas memorinya tidak diterapkan dengan benar.
Komposabilitas dan Desain Protokol Modular
Protokol kriptografis jarang digunakan sendirian. Protokol AKE menetapkan kunci sesi, yang kemudian digunakan oleh protokol lapisan aplikasi. Jika AKE dan protokol aplikasi dirancang secara terpisah tanpa mempertimbangkan komposabilitas, interaksinya dapat merusak keamanan. Kerangka Komposabilitas Universal (UC) (Canetti, 2001) menyediakan model ketat untuk komposisi protokol: suatu protokol aman menurut UC jika tetap aman ketika dikomposisikan secara sembarang dengan protokol lain yang juga aman menurut UC. TLS 1.3, Signal, dan Noise mengupayakan keamanan yang dapat dikomposisikan. Secara praktis: gunakan pengikatan kanal, yaitu ekspor hash transkrip, untuk menghubungkan sesi AKE dengan autentikasi aplikasi berikutnya sehingga mencegah penerusan kredensial antar-sesi yang dibentuk oleh protokol AKE yang sama.
Antipola Umum dalam Desain Protokol
Perancang protokol berulang kali melakukan jenis kesalahan yang sama. (1) Membuat kriptografi sendiri: mengimplementasikan sandi blok, MAC, atau derivasi kunci kustom tanpa tinjauan sejawat. (2) Kepercayaan implisit: menganggap sumber pesan berdasarkan konteks jaringan, bukan berdasarkan bukti kriptografis. (3) Keamanan opsional: menjadikan enkripsi atau autentikasi dapat dikonfigurasi, yang pada akhirnya menyebabkan penurunan versi. (4) Token berumur panjang tanpa pencabutan: menerbitkan JWT atau kunci sesi dengan masa berlaku panjang tanpa mekanisme pencabutan. (5) Mengabaikan kanal kesalahan: tidak mengautentikasi pesan kesalahan memungkinkan penyerang menyisipkan kesalahan untuk memengaruhi perilaku protokol. (6) Menggunakan enkripsi untuk autentikasi: mengenkripsi data tidak mengautentikasi sumbernya tanpa MAC atau tanda tangan.
Kuis Prinsip Desain Protokol
Menurut prinsip Abadi-Needham, mengapa pesan harus menyertakan identitas pengirim secara eksplisit ketika identitas tersebut penting?
Ringkasan Desain Protokol Aman
Desain protokol aman menerapkan prinsip-prinsip yang telah ditetapkan: model penyerang Dolev-Yao, yaitu penyerang yang mengendalikan jaringan; prinsip Abadi-Needham, yaitu identitas eksplisit dan pesan mandiri; kesegaran melalui nilai sekali pakai atau stempel waktu; pemisahan kunci melalui HKDF dengan label berbeda; pengikatan kredensial autentikasi ke sesi; pengungkapan informasi minimal; pencegahan penurunan versi melalui autentikasi transkrip; ketidakmalleabilitas melalui AEAD dan perhitungan hash transkrip; mesin status yang jelas dengan penanganan kesalahan yang ditentukan; serta komposabilitas melalui bukti keamanan model UC. Pelanggaran terhadap prinsip-prinsip ini merupakan sumber hampir setiap kerentanan kriptografis tingkat protokol yang diketahui.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Prinsip Desain Protokol Aman” gratis?
Ya — teks lengkap “Prinsip Desain Protokol Aman” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Prinsip Desain Protokol Aman”?
Terapkan prinsip Abadi-Needham, kebaruan, dan sasaran autentikasi untuk merancang protokol yang tahan terhadap serangan yang telah diketahui. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cryptology Academy?
Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Prinsip Desain Protokol Aman” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?
Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Protokol Needham-Schroeder dan Serangan
- Protokol Station-to-Station (STS)
- Kerangka Kerja Protokol Noise
- Prinsip Desain Protokol Aman