Cryptology Academy · Pelajaran

ProVerif: Verifikasi Protokol Otomatis

Tentukan dan verifikasi properti jabat tangan TLS dengan ProVerif.

Pelajaran 3 dari 412 langkah

ProVerif: Verifikasi Protokol Otomatis adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Apa Itu ProVerif?

ProVerif (Bruno Blanchet, 2001) adalah pemeriksa protokol kriptografi otomatis. ProVerif menerima protokol yang dideskripsikan dalam kalkulus pi terapan dan secara otomatis menentukan properti kerahasiaan serta autentikasi.

Cara Kerja ProVerif

ProVerif menerjemahkan protokol menjadi klausa Horn dan menerapkan algoritme berbasis resolusi untuk menurunkan hal-hal yang dapat dipelajari penyerang. Jika fakta kerahasiaan dapat diturunkan, protokol tersebut telah ditembus; jika tidak, protokol tersebut terbukti aman.

Bahasa Masukan ProVerif

Protokol dideskripsikan secara deklaratif: mendeklarasikan saluran, tipe, fungsi (enc, dec, sign, verify), persamaan (dec(enc(m,k),k)=m)), dan proses yang berkomunikasi melalui saluran.

Mendeklarasikan Primitif Kriptografi

Contoh deklarasi ProVerif:

(* Symmetric encryption *)
fun senc(bitstring, key): bitstring.
fun sdec(bitstring, key): bitstring.
equation forall m: bitstring, k: key; sdec(senc(m, k), k) = m.

(* Asymmetric encryption *)
fun pk(skey): pkey.
fun aenc(bitstring, pkey): bitstring.
fun adec(bitstring, skey): bitstring.
equation forall m: bitstring, sk: skey; adec(aenc(m, pk(sk)), sk) = m.

Menulis Proses Protokol Sederhana

Modelkan Alice dan Bob sebagai proses paralel:

(* Alice sends nonce to Bob, encrypted *)
let Alice(skA: skey, pkB: pkey) =
  new na: nonce;
  out(c, aenc((na, pk(skA)), pkB));
  in(c, m: bitstring);
  let nb = adec(m, skA) in
  out(c, aenc(nb, pkB)).

(* Main process: run attacker with full channel control *)
process
  new skA: skey; new skB: skey;
  out(c, pk(skA)); out(c, pk(skB));  (* publish public keys *)
  (Alice(skA, pk(skB)) | Bob(skB, pk(skA)))

Menyatakan Kueri Keamanan

ProVerif memeriksa kueri seperti:

(* Secrecy: attacker cannot learn na *)
query attacker(na).

(* Authentication: if Bob completes, Alice started *)
query event(BobFinished(nb)) ==> event(AliceStarted(nb)).

Menafsirkan Keluaran ProVerif

ProVerif menghasilkan "RESULT ... adalah benar" (terbukti aman) atau "RESULT ... adalah salah" dan mencetak jejak serangan sebagai contoh tandingan yang menunjukkan pesan penyerang. Jejak tersebut menunjukkan secara tepat cara serangan itu bekerja.

Memverifikasi TLS 1.3 dengan ProVerif

Bhargavan dkk. (2016) menggunakan ProVerif untuk menganalisis model TLS 1.3. Mereka menemukan dan melaporkan serangan terhadap mekanisme penyambungan kembali 0-RTT, yang diperbaiki sebelum RFC tersebut difinalisasi.

Keterbatasan: Aproksimasi dan Perulangan

ProVerif menggunakan aproksimasi berlebih: ProVerif mungkin melaporkan serangan palsu (mengatakan "salah" ketika protokol sebenarnya aman), tetapi tidak pernah melewatkan serangan nyata. Sesi protokol yang tidak berbatas mungkin tidak berhenti — ProVerif menguraikan perulangan secara heuristik.

Saat ProVerif Mengatakan "Tidak Dapat Dibuktikan"

Jika ProVerif tidak dapat menentukan hasil dalam aproksimasinya, ProVerif menghasilkan "CANNOT TIDAK DAPAT DIBUKTIKAN." Ini bukan bukti bahwa protokol tidak aman — artinya alat tersebut telah kehabisan kemampuan heuristiknya. Tamarin mungkin berhasil dalam kasus seperti ini.

Uji Pemahaman

Apa arti keluaran ProVerif "RESULT ... adalah salah" untuk kueri kerahasiaan?

Ringkasan Pelajaran

ProVerif mengotomatiskan verifikasi protokol menggunakan resolusi klausa Horn. Protokol ditulis dalam kalkulus pi terapan dengan persamaan kriptografi. Kueri menanyakan kerahasiaan dan autentikasi. Salah berarti terbukti aman; benar berarti telah ditembus (dengan jejak serangan). Keterbatasan: aproksimasi mungkin menghasilkan "tidak dapat dibuktikan."

Gratis untuk memulai

Belajar Cryptology Academy dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
67
Pelajaran
261

Pertanyaan yang Sering Diajukan

Apakah pelajaran “ProVerif: Verifikasi Protokol Otomatis” gratis?

Ya — teks lengkap “ProVerif: Verifikasi Protokol Otomatis” 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 “ProVerif: Verifikasi Protokol Otomatis”?

Tentukan dan verifikasi properti jabat tangan TLS dengan ProVerif. 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 3 dari 4.

Berapa lama pelajaran “ProVerif: Verifikasi Protokol Otomatis” 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

  1. Mengapa Pembuktian Informal Tidak Cukup
  2. Model Penyerang Dolev-Yao & Kripto Simbolis
  3. ProVerif: Verifikasi Protokol Otomatis
  4. Tamarin & Pembuktian Komputasional
← Kembali ke Cryptology Academy