0Pricing
Cryptology Academy · Pelajaran

Kerangka Kerja Protokol Noise

Jelajahi Noise—kerangka kerja untuk membangun jabat tangan kriptografi khusus yang digunakan dalam WireGuard, WhatsApp, dan Lightning.

Kerangka Kerja Protokol Noise 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 Kerangka Noise

Kerangka Protokol Noise (Trevor Perrin, 2016; revisi saat ini 2018) adalah kerangka untuk membangun protokol saluran aman menggunakan sekumpulan kecil primitif dan bahasa pola. Alih-alih menetapkan satu protokol, Noise mendefinisikan kosakata pola jabat tangan yang menjelaskan urutan operasi DH dan susunannya. Setiap pola Noise yang valid dapat diwujudkan dengan fungsi DH konkret (Curve25519 atau Curve448), fungsi sandi (AESGCM atau ChaChaPoly), dan fungsi hash (SHA-256, SHA-512, BLAKE2). Noise digunakan dalam WireGuard, WhatsApp, Signal (sebagai dasar X3DH), Lightning Network, dan I2P.

Peran dan Kunci Noise

Setiap jabat tangan Noise memiliki pemrakarsa (I) dan pihak penjawab (R). Setiap pihak dapat memiliki dua jenis kunci: statis (kunci identitas jangka panjang, dilambangkan dengan s/S) dan sementara (dibuat baru untuk setiap sesi, dilambangkan dengan e/E). Huruf kecil menunjukkan kunci pihak lokal; huruf besar menunjukkan kunci publik pihak jarak jauh. Pola Noise menentukan kunci mana yang dikirim (sebagai teks biasa atau terenkripsi) dan operasi DH mana yang dilakukan. Sebagai contoh, "e" berarti "kirim kunci publik sementara saya"; "es" berarti "lakukan DH(kunci_sementara_saya, kunci_statis_pihak_jarak_jauh)". Setiap keluaran DH dicampurkan ke keadaan hash jabat tangan yang terus diperbarui.

Keadaan Simetris Noise

Inti Noise adalah SymmetricState, yang mempertahankan tiga nilai: ck (kunci rantai, diinisialisasi dengan hash nama protokol), h (hash jabat tangan, yaitu hash transkrip yang terus diperbarui), dan k (kunci enkripsi saat ini). MixKey(input) menjalankan HKDF(ck, input) untuk memperbarui ck dan k. MixHash(data) melakukan hash terhadap data lalu mencampurkannya ke h. EncryptAndHash(plaintext) mengenkripsi dengan k dan mencampurkan teks tersandi ke h. DecryptAndHash(ciphertext) mendekripsi dan mencampurkan teks tersandi ke h. Hash jabat tangan h menyediakan pengikatan transkrip — setiap perubahan oleh penyerang terhadap pesan apa pun mengubah h sehingga dekripsi gagal. Di akhir jabat tangan, Split() menghasilkan dua CipherStates terpisah untuk mengirim dan menerima.

Pola Noise_XX

Noise_XX adalah pola autentikasi timbal balik yang paling umum digunakan. Pola ini menyediakan autentikasi kunci statis timbal balik, dengan kunci statis kedua pihak dikirimkan selama jabat tangan. Polanya: (1) -> e (pemrakarsa mengirim kunci publik sementara). (2) <- e, ee, s, es (pihak penjawab mengirim kunci sementara, melakukan DH(e,e) dan DH(e,s_resp), lalu mengirim kunci statis terenkripsi). (3) -> s, se (pemrakarsa mengirim kunci statis terenkripsi dan melakukan DH(s_init, e_resp)). Setelah langkah 3, kedua pihak telah mencampurkan tiga keluaran DH ke dalam kunci sesi: ee (kerahasiaan ke depan), es (autentikasi server), se (autentikasi klien). Kunci sesi tidak bergantung pada kompromi kunci jangka panjang apa pun setelah sesi berakhir.

Pola Noise_IK (WireGuard)

WireGuard menggunakan pola yang diturunkan dari Noise_IK, dengan pemrakarsa yang telah mengetahui kunci statis pihak penjawab sebelumnya. (1) -> e, es, s, ss (pemrakarsa mengirim kunci sementara, melakukan DH(e, S_resp), mengirim kunci statis terenkripsi, dan melakukan DH(s_init, S_resp)). (2) <- e, ee, se (pihak penjawab mengirim kunci sementara, melakukan DH(e_resp, e_init), dan melakukan DH(e_resp, S_init)). Pola IK menyediakan penyembunyian identitas bagi pemrakarsa (kunci statisnya dienkripsi menggunakan kunci statis pihak penjawab pada langkah 1) dan penyelesaian dalam satu RTT. WireGuard menambahkan stempel waktu di dalam muatan pemrakarsa yang terenkripsi untuk mencegah pemutaran ulang. Inilah yang memberi WireGuard kesederhanaan khasnya: jabat tangan VPN lengkap dalam dua paket UDP.

Hash Jabat Tangan Noise dan Pengikatan Saluran

Hash jabat tangan h di akhir jabat tangan Noise adalah hash transkrip yang mencakup setiap pesan yang dikirim. Nilai ini berfungsi sebagai nilai pengikatan saluran — kedua pihak menghitung h yang sama, dan protokol pihak ketiga apa pun yang ingin terikat pada sesi Noise dapat menyertakan h sebagai nilai sekali pakai atau ID saluran. Hal ini memungkinkan autentikasi gabungan: langkah autentikasi sertifikat bergaya TLS dapat dijalankan setelah jabat tangan Noise, dengan mengikat sertifikat ke sesi tertentu melalui h. Pengikatan saluran mencegah serangan penerusan kredensial, yaitu ketika kredensial autentikasi dari satu sesi diputar ulang terhadap sesi lain. Split() menyediakan h kepada aplikasi bersama kunci sesi.

Pola Tertunda dan Mekanisme Cadangan Noise

Noise mendukung pola tertunda untuk situasi ketika pemrakarsa belum mengetahui kunci statis pihak penjawab sebelumnya. Noise_NX (pemrakarsa tidak memiliki kunci statis; pihak penjawab mengirimkan kuncinya) serupa dengan TLS satu arah. Noise_XX menangani kasus ketika kedua pihak perlu bertukar kunci. Noise_IK dapat beralih ke Noise_XXfallback jika tebakan pemrakarsa terhadap kunci statis pihak penjawab ternyata salah (misalnya setelah rotasi kunci). Pola cadangan memungkinkan pihak penjawab memberi sinyal "Anda menggunakan kunci yang salah; ini kunci publik baru saya" tanpa mengungkapkan kepada pengamat luar bahwa mekanisme cadangan digunakan — sehingga ketertutupan protokol tetap terjaga.

Noise dalam WhatsApp dan Signal

WhatsApp dan Signal menggunakan Noise_XX untuk membangun saluran aman antara klien dan server. Protokol biner WhatsApp menggunakan Noise_XX dengan Curve25519, ChaChaPoly, dan SHA-256. Kunci statis klien adalah kunci identitas jangka panjangnya. Setelah jabat tangan Noise, lapisan aplikasi menjalankan autentikasi tambahan (pendaftaran Signal, verifikasi nomor telepon). Kesepakatan kunci X3DH (Extended Triple Diffie-Hellman) melakukan empat operasi DH untuk menetapkan rahasia bersama antara dua pengguna melalui pertukaran pesan asinkron — ini bukan pola Noise standar, tetapi menggunakan konsep pencampuran DH yang serupa. Double Ratchet kemudian mengambil alih untuk enkripsi pesan yang berkelanjutan.

Noise versus TLS

Noise dan TLS 1.3 mengatasi masalah yang sama (pertukaran kunci terautentikasi) dengan filosofi yang berbeda. TLS 1.3 adalah satu protokol dengan rangkaian sandi, format sertifikat (X.509), dan ekstensi yang telah ditetapkan. Protokol ini dirancang untuk peramban web dan server — satu protokol yang cocok untuk hampir semua kebutuhan. Noise adalah sebuah kerangka: tidak menentukan format sertifikat, PKI, atau pengikatan transportasi. Hal ini membuat Noise lebih kecil (seluruh implementasi Noise pada WireGuard berukuran kurang dari 400 baris kode) dan lebih mudah dianalisis secara formal, tetapi mengharuskan aplikasi menangani pengelolaan identitas secara terpisah. Noise lebih disukai untuk sistem tertutup (aplikasi-ke-server, VPN) yang tidak memerlukan PKI; TLS lebih sesuai untuk sistem terbuka (web) yang memerlukan interoperabilitas sertifikat.

Keamanan Formal Noise

Pola Noise telah dianalisis secara formal dalam model keamanan eCK (Canetti-Krawczyk yang diperluas). Kobeissi, Bhargavan, dan Blanchet menganalisis Noise menggunakan Proverif dan menemukan pembuktian untuk autentikasi serta kerahasiaan kunci pada seluruh 12 pola dasar Noise. Pembuktian tersebut mengasumsikan asumsi kesulitan DH standar (Curve25519) dan keamanan fungsi AEAD serta hash yang mendasarinya. Sifat komposisional Noise (setiap DH dicampurkan secara bertahap) membuatnya lebih mudah dianalisis daripada protokol kompleks bergaya TLS dengan banyak transisi keadaan. Verifikasi kriptografis terhadap Noise memberi WireGuard dan WhatsApp keyakinan tinggi terhadap keamanan protokol mereka sebelum diterapkan.

Menerapkan Noise dengan Benar

Jebakan umum dalam implementasi Noise: (1) Kekeliruan pola — menggunakan Noise_IK ketika kunci statis pihak penjawab tidak didistribusikan sebelumnya secara andal dapat menyebabkan ketidakcocokan identitas (pemrakarsa mungkin tanpa disadari mengenkripsi menggunakan kunci yang salah). (2) Perlindungan terhadap pemutaran ulang — Noise menyediakan autentikasi, tetapi tidak menyediakan perlindungan terhadap pemutaran ulang pesan fase transportasi; nilai sekali pakai (penghitung 64-bit) harus diberlakukan dan perulangan ke awal (setelah 2^64 pesan) harus memicu penggantian kunci. (3) Integritas prolog — prolog Noise (untaian byte yang dicampurkan ke h sebelum jabat tangan dimulai) harus mencakup seluruh konteks protokol (versi, pilihan algoritma) untuk mencegah serangan penurunan tingkat. (4) Penyalahgunaan PSK — Noise mendukung ekstensi PSK untuk pencampuran kunci yang dibagikan sebelumnya; PSK harus memiliki entropi tinggi, bukan berupa kata sandi pengguna.

Kuis Kerangka Noise

Apa arti notasi pola Noise "es" dalam pola jabat tangan?

Ringkasan Kerangka Noise

Noise adalah kerangka untuk membangun protokol pertukaran kunci terautentikasi menggunakan bahasa pola operasi DH. SymmetricState mempertahankan kunci rantai (ck), hash transkrip (h), dan kunci sandi (k), yang diperbarui oleh MixKey/MixHash. Noise_XX menyediakan autentikasi timbal balik dalam 1,5 RTT; Noise_IK (WireGuard) selesai dalam 1 RTT jika kunci pihak penjawab telah diketahui. Hash jabat tangan h berfungsi sebagai pengikatan saluran. Noise telah diverifikasi secara formal untuk semua pola inti melalui Proverif. Noise lebih disukai daripada TLS untuk protokol sistem tertutup (WireGuard, WhatsApp) yang tidak memerlukan PKI. Implementasi yang benar memerlukan perlindungan terhadap pemutaran ulang, integritas prolog, dan PSK dengan entropi tinggi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kerangka Kerja Protokol Noise” gratis?

Ya — teks lengkap “Kerangka Kerja Protokol Noise” 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 “Kerangka Kerja Protokol Noise”?

Jelajahi Noise—kerangka kerja untuk membangun jabat tangan kriptografi khusus yang digunakan dalam WireGuard, WhatsApp, dan Lightning. 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 “Kerangka Kerja Protokol Noise” 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. Protokol Needham-Schroeder dan Serangan
  2. Protokol Station-to-Station (STS)
  3. Kerangka Kerja Protokol Noise
  4. Prinsip Desain Protokol Aman
← Kembali ke Cryptology Academy