Cryptology Academy · Pelajaran

Desain Salsa20 & ChaCha20

Pelajari quarter-round ChaCha20 dan kecepatannya pada perangkat keras seluler.

Pelajaran 3 dari 413 langkah

Desain Salsa20 & ChaCha20 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.

Selamat Datang

ChaCha20 adalah sandi aliran dominan dalam sistem modern—digunakan dalam TLS 1.3, WireGuard, Signal, dan banyak sistem lainnya. Mari kita menguraikan rancangannya yang elegan.

Asal-Usul ChaCha20

Daniel J. Bernstein merancang Salsa20 pada 2005, lalu menyempurnakannya menjadi ChaCha20 pada 2008. Awalan 'Cha' menunjukkan 8 peningkatan difusi tambahan. Distandarkan dalam RFC 7539 (2015) dan RFC 8439 (2018).

Keadaan ChaCha20

ChaCha20 beroperasi pada matriks 4×4 yang terdiri dari kata 32 bit (total 512 bit): - Kata 0–3: konstanta ('expa', 'nd 3', '2-by', 'te k') - Kata 4–11: kunci 256 bit (8 kata) - Kata 12: penghitung blok 32 bit - Kata 13–15: nonce 96 bit

Putaran Seperempat

Operasi inti ChaCha20—putaran seperempat pada (a,b,c,d): a+=b; d^=a; d<<<= 16 c+=d; b^=c; b<<<= 12 a+=b; d^=a; d<<<= 8 c+=d; b^=c; b<<<= 7 Penjumlahan-Pemutaran-XOR (ARX). Tidak memerlukan S-box—cepat pada semua perangkat keras.

20 Putaran

ChaCha20 menerapkan 20 putaran: putaran kolom dan putaran diagonal secara bergantian, masing-masing dengan 4 putaran seperempat. 8 putaran = ChaCha8 (cepat), 12 putaran = ChaCha12 (seimbang). ChaCha20 adalah pilihan aman bawaan.

Pembangkitan Aliran Kunci

1. Inisialisasi keadaan dari kunci + nonce + penghitung 2. Terapkan 20 putaran putaran seperempat 3. Tambahkan keadaan awal ke keadaan yang diputar (mencegah pembalikan) 4. Keluarkan blok aliran kunci berukuran 64 bita 5. Tambah penghitung untuk blok berikutnya

Manfaat Keamanan ARX

Sandi ARX (Penjumlahan, Pemutaran, XOR) secara alami memiliki waktu konstan pada sebagian besar CPU. Tidak adanya pencarian tabel berarti tidak ada kanal samping waktu cache. Hal ini penting untuk implementasi yang aman.

Kinerja ChaCha20

Tanpa AES-NI: ChaCha20 sekitar 3× lebih cepat daripada AES-CBC. Pada ponsel (ARM Cortex-A): ChaCha20 adalah pilihan yang lebih cepat. Dengan AES-NI (x86 modern): AES-GCM lebih cepat. TLS 1.3 menyertakan keduanya.

Salsa20 vs ChaCha20

ChaCha20 menyempurnakan Salsa20 dengan difusi yang lebih baik pada putaran awal—lebih tahan terhadap kriptanalisis diferensial. Inisialisasi keadaannya berbeda. Keduanya aman; ChaCha20 adalah standar saat ini.

ChaCha20 dalam Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) ct = ChaCha20Poly1305(key).encrypt(nonce, b'hello', None)

XChaCha20: Nilai Sekali Pakai yang Diperluas

ChaCha20 menggunakan nilai sekali pakai sepanjang 96 bit. XChaCha20 memperluasnya menjadi 192 bit menggunakan fungsi HChaCha20. Nilai sekali pakai yang lebih panjang memungkinkan pembuatan secara acak tanpa kekhawatiran akan benturan. libsodium menggunakan XChaCha20-Poly1305.

Pemeriksaan Singkat

Mengapa desain ARX ChaCha20 menghilangkan kanal samping berbasis waktu cache?

Ringkasan

ChaCha20 elegan dan aman. Selanjutnya, kita melihat penerapannya dalam TLS 1.3 sebagai AEAD ChaCha20-Poly1305.
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 “Desain Salsa20 & ChaCha20” gratis?

Ya — teks lengkap “Desain Salsa20 & ChaCha20” 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 “Desain Salsa20 & ChaCha20”?

Pelajari quarter-round ChaCha20 dan kecepatannya pada perangkat keras seluler. 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 “Desain Salsa20 & ChaCha20” 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. Konsep Sandi Aliran & PRNG
  2. RC4: Desain, Kelemahan & Serangan terhadap WEP
  3. Desain Salsa20 & ChaCha20
  4. AEAD ChaCha20-Poly1305 dalam TLS 1.3
← Kembali ke Cryptology Academy