ChaCha is a modification of Salsa20 published in 2008.
ChaCha adalah perubahan dari Salsa20 yang dipublikasikan pada tahun 2008.
The core function maps a 256-bit key, a 64-bit nonce, and a 64-bit counter to a 512-bit block of the key stream (a Salsa version with a 128-bit key also exists).
Tugas utamanya adalah pemetaan sebuah kunci 256 bit, sebuah nonce 64 bit, dan sebuah pencacah 64 bit ke blok aliran kunci 512 bit (ada pula versi Salsa yang menggunakan kunci 128 bit).
This gives Salsa20 and ChaCha the unusual advantage that the user can efficiently seek to any position in the key stream in constant time.
Hal ini memberikan Salsa20 dan Chaca keuntungan, yaitu pengguna dapat langsung menuju ke lokasi tertentu dalam aliran kunci dalam waktu tetap (konstan).
Salsa20 offers speeds of around 4–14 cycles per byte in software on modern x86 processors, and reasonable hardware performance.
Salsa20 menawarkan kecepatan 4–14 siklus per bita dalam perangkat lunak pada prosesor x86 dan kinerja perangkat keras yang cukup.
It is not patented, and Bernstein has written several public domain implementations optimized for common architectures.
Sandi ini tidak dipatenkan, bahkan Bernstein telah menulis beberapa implementasi dalam domain publik yang dioptimalkan untuk arsitektur pada umumnya.
Using only add-rotate-xor operations avoids the possibility of timing attacks in software implementations.
Penggunaan operasi tambah-putar-XOR menghindari peluang serangan pewaktuan dalam penerapan perangkat lunak.
The internal state is made of sixteen 32-bit words arranged as a 4×4 matrix.
Status internalnya terdiri dari 16 kata 32 bit yang disusun dalam matriks 4×4.
In other words, applying the reverse operations would produce the original 4×4 matrix, including the key.
Dengan kata lain, operasi yang dibalik bisa menghasilkan matriks 4×4 asal, termasuk kuncinya.
(This same technique is widely used in hash functions from MD4 through SHA-2.)
(Teknik ini juga dipakai dalam fungsi hash dari MD4 sampai SHA-2.)
Salsa20 performs 20 rounds of mixing on its input.
Salsa20 melakukan 20 ronde pencampuran dari inputnya.
However, reduced-round variants Salsa20/8 and Salsa20/12 using 8 and 12 rounds respectively have also been introduced.
Namun, pengurangan ronde pada varian Salsa20/8 dan Salsa20/12 dengan 8 dan 12 ronde juga dikenalkan.
The Aumasson et al. paper also attacks ChaCha, achieving one round fewer (for 256-bit ChaCha6 with complexity 2139, ChaCha7 with complexity 2248, and 128-bit ChaCha6 within 2107) but claims that the attack fails to break 128-bit ChaCha7.
juga menyerang ChaCha dan berhasil hingga satu ronde lebih sedikit: untuk 256 bit, ChaCha6 dengan kompleksitas 2139 dan ChaCha7 dengan kompleksitas 2248.
Like Salsa20, ChaCha's initial state includes a 128-bit constant, a 256-bit key, a 64-bit counter, and a 64-bit nonce (in the original version; as described later, a version of ChaCha from RFC 7539 is slightly different), arranged as a 4×4 matrix of 32-bit words.
Seperti Salsa20, status awal ChaCha terdiri dari 128 bit tetapan, 256 bit kunci, 64 bit pencacah, dan 64 bit nilai yang hanya dipakai sekali (nonce) dan ditata sebagai matriks 4×4 dari kata 32 bit.
ChaCha replaces the Salsa20 quarter-round QR(a, b, c, d) with: a +b; d ^a; d <<<16; c +d; b ^c; b <<<12; a +b; d ^a; d <<<8; c +d; b ^c; b <<<7; Notice that this version updates each word twice, while Salsa20's quarter round updates each word only once.
ChaCha mengganti seperempat ronde Salsa20 QR(a, b, c, d) dengan berikut: a +b; d ^a; d <<<16; c +d; b ^c; b <<<12; a +b; d ^a; d <<<8; c +d; b ^c; b <<<7; Perhatikan bahwa versi ini memperbarui tiap kata dua kali, sedangkan seperempat ronde Salsa20 hanya memperbarui tiap kata sekali.
On average, after changing 1 input bit the Salsa20 quarter-round will change 8 output bits while ChaCha will change 12.5 output bits.
Rata-rata, setelah mengganti satu bit input, seperempat ronde Salsa20 akan mengganti 8 bit keluaran, sedangkan ChaCha akan mengganti 12,5 bit keluaran.
Like Salsa20, ChaCha arranges the sixteen 32-bit words in a 4×4 matrix.
Seperti Salsa20, ChaCha menata enam belas kata 32 bit dalam matriks 4×4.
// column 3 QR(3, 7, 11, 15) // column 4 // Even round QR(0, 5, 10, 15) // diagonal 1 (main diagonal) QR(1, 6, 11, 12) // diagonal 2 QR(2, 7, 8, 13) // diagonal 3 QR(3, 4, 9, 14) // diagonal 4 ChaCha20 uses 10 iterations of the double round.
kolom 3 QR(3, 7, 11, 15) // kolom 4 // Ronde genap QR(0, 5, 10, 15) // diagonal 1 (diagonal utama) QR(1, 6, 11, 12) // diagonal 2 QR(2, 7, 8, 13) // diagonal 3 QR(3, 4, 9, 14) // diagonal 4 Berikut penerapan ChaCha20 dalam C/C++.
ChaCha is the basis of the BLAKE hash function, a finalist in the NIST hash function competition, and its faster successors BLAKE2 and BLAKE3.
ChaCha adalah dasar dari fungsi hash BLAKE, salah satu finalis dalam kompetisi fungsi hash NIST, dan turunan BLAKE2/3 yang diatur agar jauh lebih cepat.
It also defines a variant using sixteen 64-bit words (1024 bits of state), with correspondingly adjusted rotation constants.
Ia juga menentukan varian dengan enam belas kata 64 bit (1024 bit status) dengan tetapan rotasi yang sesuai.