0Pricing
Cryptology Academy · Pelajaran

Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce

Pahami cara penggunaan ulang nonce dalam GCM dan mode lainnya dapat sepenuhnya membahayakan kerahasiaan teks tersandi.

Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Tujuan Nonce dalam Kriptografi

Nonce (angka yang digunakan sekali) memastikan bahwa pesan teks biasa yang sama, jika dienkripsi dua kali, menghasilkan teks tersandi yang berbeda. Hal ini penting untuk keamanan semantik: penyerang yang mengamati banyak teks tersandi tidak memperoleh informasi tentang apakah teks tersebut mengenkripsi teks biasa yang sama atau berbeda. Dalam cipher aliran dan cipher blok mode CTR, nonce menjadi dasar pembangkitan aliran kunci, sehingga nonce sangat penting bagi keamanan.

Nonce GCM sebagai Inisialisasi Penghitung

Dalam AES-GCM, nonce 96 bit digunakan untuk menginisialisasi penghitung bagi enkripsi mode CTR dan juga berkontribusi pada penghitungan autentikasi GHASH. Nilai penghitung untuk setiap blok AES diperoleh dengan menaikkan nilai nonce. Jika dua enkripsi menggunakan nonce dan kunci yang sama, keduanya menghasilkan aliran kunci yang sama, sehingga XOR teks tersandi keduanya sama dengan XOR teks biasa keduanya.

Penggunaan Ulang Nonce yang Membawa Bencana dalam GCM

Dua teks tersandi GCM yang dienkripsi dengan pasangan (kunci, nonce) yang sama memiliki XOR yang sama dengan XOR teks biasanya. Jika penyerang mengetahui salah satu teks biasa (hal yang umum dalam skenario teks biasa terpilih), penyerang dapat segera memulihkan teks biasa lainnya. Bahkan tanpa teks biasa yang diketahui, XOR teks tersandi mengungkap pola bahasa dan dapat diserang dengan teknik pencocokan fragmen tebakan. Ini adalah salah satu pola penyalahgunaan paling merusak dalam kriptografi.

Pemulihan Kunci Autentikasi akibat Penggunaan Ulang Nonce

Penggunaan ulang nonce GCM memiliki konsekuensi merusak lainnya selain pemulihan teks biasa. Kunci autentikasi GHASH H diturunkan hanya dari kunci enkripsi. Jika dua pesan berbagi pasangan (kunci, nonce), penyerang dapat menyelesaikan persamaan polinomial untuk memulihkan H. Dengan mengetahui H, penyerang dapat memalsukan tag autentikasi GCM yang valid untuk teks tersandi sembarang, sehingga sepenuhnya merusak integritas pesan.

Konstruksi Nonce TLS 1.3

TLS 1.3 mengambil pelajaran dari risiko penggunaan ulang nonce dalam implementasi TLS 1.2. TLS 1.3 menghasilkan nonce GCM dengan melakukan XOR pada IV tulis 12 byte, yang diturunkan dari jabat tangan, dengan nomor urutan 8 byte yang diperluas dengan nol menjadi 12 byte. Karena nomor urutan bertambah untuk setiap rekaman, setiap rekaman menggunakan nonce yang unik. Hal ini menghilangkan risiko pembangkitan nonce acak sekaligus memastikan keunikan nonce melalui mekanisme nomor urutan.

Gambaran Umum Serangan Pemutaran Ulang

Serangan pemutaran ulang menangkap pesan atau token autentikasi yang valid lalu mengirimkannya kembali untuk mencapai efek penipuan. Contohnya adalah memutar ulang transaksi perbankan untuk menagih dua kali, memutar ulang respons autentikasi yang valid untuk menyamar sebagai pengguna, atau memutar ulang perintah bertanda tangan ke perangkat. Penyerang tidak perlu memahami atau mengubah pesan; cukup mengirim ulang data yang ditangkap untuk melancarkan serangan.

Stempel Waktu untuk Mencegah Pemutaran Ulang

Menyertakan stempel waktu dalam pesan terautentikasi memberikan perlindungan terhadap pemutaran ulang. Penerima hanya menerima pesan dalam jendela waktu singkat (misalnya, 5 menit dari stempel waktu yang diklaim). Pesan yang diputar ulang dari beberapa jam lalu berada di luar jendela dan ditolak. Stempel waktu harus diautentikasi (di dalam HMAC atau data tambahan AEAD) agar penyerang tidak dapat mengubahnya supaya tampak baru.

Nomor Urutan untuk Mencegah Pemutaran Ulang

Nomor urutan memberikan perlindungan yang lebih kuat terhadap pemutaran ulang daripada stempel waktu karena dapat mendeteksi bukan hanya pemutaran ulang lama, tetapi juga pengiriman duplikat dan pengiriman di luar urutan. Penerima mempertahankan nomor urutan berikutnya yang diharapkan dan jendela geser nomor yang baru-baru ini terlihat. Setiap pesan harus memiliki nomor urutan dalam jendela yang dapat diterima dan belum pernah terlihat sebelumnya. TLS menggunakan nomor urutan untuk mencegah pemutaran ulang rekaman dalam suatu sesi.

Membangkitkan Nonce yang Aman

Untuk AES-GCM, strategi pembangkitan nonce yang direkomendasikan bagi nonce acak adalah menggunakan 96 bit dari pembangkit bilangan semu-acak yang aman secara kriptografis (CSPRNG). Dengan nonce acak 96 bit, probabilitas tabrakan menurut batas ulang tahun mencapai 2^-32 setelah 2^32 enkripsi, yaitu sekitar 4 miliar enkripsi. Untuk aplikasi bervolume tinggi, beralihlah ke nonce berbasis penghitung atau gunakan AEAD lain, seperti XChaCha20-Poly1305 dengan nonce 192 bit, untuk memperluas batas aman.

Nonce Deterministik: Pengelolaan Penghitung

Nonce deterministik berbasis penghitung menghindari masalah batas ulang tahun, tetapi memerlukan pengelolaan status yang cermat. Penghitung harus disimpan secara persisten di antara pemuatan ulang aplikasi; penghitung yang kembali ke nol saat dimulai ulang segera menciptakan penggunaan ulang nonce dengan kunci yang sama. Penghitung harus diperbarui secara atomik sebelum nonce digunakan, bukan sesudahnya. Untuk sistem terdistribusi, nonce berbasis penghitung memerlukan koordinasi agar dua simpul tidak menggunakan nilai penghitung yang sama.

XChaCha20-Poly1305 untuk Nonce yang Lebih Besar

XChaCha20-Poly1305 memperluas nonce ChaCha20-Poly1305 dari 96 menjadi 192 bit. Dengan nonce acak 192 bit, probabilitas tabrakan menurut batas ulang tahun dapat diabaikan bahkan setelah 2^96 enkripsi, yaitu jumlah pesan yang sangat besar hingga tidak masuk akal. Hal ini membuat pembangkitan nonce acak aman tanpa kekhawatiran praktis terkait batas ulang tahun. crypto_secretbox milik libsodium (XSalsa20-Poly1305) menggunakan nonce 192 bit untuk alasan yang sama.

Konsekuensi Penggunaan Ulang Nonce GCM

Jika dua teks tersandi GCM dihasilkan menggunakan kunci dan nonce yang sama, apa yang dapat dipulihkan penyerang?

Ringkasan Nonce dan Serangan Pemutaran Ulang

Ringkasan penggunaan ulang nonce: nonce memastikan keunikan teks tersandi, penggunaan ulang nonce GCM mengungkap XOR teks biasa dan merusak autentikasi melalui pemulihan H, TLS 1.3 menggunakan XOR nomor urutan dengan IV untuk menjamin keunikan nonce, serangan pemutaran ulang mengirimkan kembali pesan valid tanpa perubahan, stempel waktu dan nomor urutan dalam pesan terautentikasi mencegah pemutaran ulang, gunakan nonce acak 96 bit untuk GCM dengan memperhatikan batas ulang tahun atau gunakan XChaCha20 untuk ruang nonce acak yang lebih besar.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce” gratis?

Ya — teks lengkap “Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce” 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 “Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce”?

Pahami cara penggunaan ulang nonce dalam GCM dan mode lainnya dapat sepenuhnya membahayakan kerahasiaan teks tersandi. 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 2 dari 4.

Berapa lama pelajaran “Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce” 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. Serangan Padding Oracle secara Mendalam
  2. Serangan Pemutaran Ulang dan Kerentanan Penggunaan Ulang Nonce
  3. Serangan Pewaktuan pada Kode Tingkat Aplikasi
  4. Pola Penyalahgunaan Kriptografi Teratas
← Kembali ke Cryptology Academy