<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id">
	<id>https://wiki.unissula.ac.id/index.php?action=history&amp;feed=atom&amp;title=Salsa20</id>
	<title>Salsa20 - Riwayat revisi</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.unissula.ac.id/index.php?action=history&amp;feed=atom&amp;title=Salsa20"/>
	<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Salsa20&amp;action=history"/>
	<updated>2026-09-16T13:41:26Z</updated>
	<subtitle>Riwayat revisi halaman ini di wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Salsa20&amp;diff=7585&amp;oldid=prev</id>
		<title>Maintenance script: Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Salsa20&amp;diff=7585&amp;oldid=prev"/>
		<updated>2026-08-24T18:07:28Z</updated>

		<summary type="html">&lt;p&gt;Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi&lt;/p&gt;
&lt;a href=&quot;https://wiki.unissula.ac.id/index.php?title=Salsa20&amp;amp;diff=7585&amp;amp;oldid=7185&quot;&gt;Lihat perubahan&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Salsa20&amp;diff=7185&amp;oldid=prev</id>
		<title>Maintenance script: Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 25535552; atribusi sumber disertakan.</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Salsa20&amp;diff=7185&amp;oldid=prev"/>
		<updated>2026-08-24T17:44:17Z</updated>

		<summary type="html">&lt;p&gt;Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 25535552; atribusi sumber disertakan.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Halaman baru&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Salsa20&amp;#039;&amp;#039;&amp;#039; dan saudara terdekatnya, &amp;#039;&amp;#039;&amp;#039;ChaCha&amp;#039;&amp;#039;&amp;#039;, adalah [[penyandian aliran]] yang dikembangkan oleh [[Daniel J. Bernstein]]. Salsa20, sandi aslinya, didesain pada tahun 2005, lalu dikumpulkan ke [[eSTREAM]] oleh Bernstein. ChaCha adalah perubahan dari Salsa20 yang dipublikasikan pada tahun 2008. Ia menggunakan fungsi ronde baru yang meningkatkan penghamburan dan meningkatkan kinerja pada beberapa arsitektur.&lt;br /&gt;
&lt;br /&gt;
Kedua penyandian tersebut dibangun dari [[fungsi acak semu]] berdasarkan operasi [[Penyandian blok#ARX|tambah-putar-XOR]] (ARX). Tugas utamanya adalah pemetaan sebuah [[Ukuran kunci|kunci]] 256 bit, sebuah &amp;#039;&amp;#039;nonce&amp;#039;&amp;#039; 64 bit, dan sebuah pencacah 64 bit ke blok aliran kunci 512 bit (ada pula versi Salsa yang menggunakan kunci 128 bit). Hal ini memberikan Salsa20 dan Chaca keuntungan, yaitu pengguna dapat langsung menuju ke lokasi tertentu dalam aliran kunci dalam waktu tetap (konstan). Salsa20 menawarkan kecepatan 4–14 siklus per bita dalam [[perangkat lunak]] pada prosesor [[x86]] dan kinerja [[perangkat keras]] yang cukup. Sandi ini tidak dipatenkan, bahkan Bernstein telah menulis beberapa implementasi dalam [[domain publik]] yang dioptimalkan untuk arsitektur pada umumnya.&lt;br /&gt;
&lt;br /&gt;
== Struktur ==&lt;br /&gt;
Secara internal, penyandian ini menggunakan penjumlahan per bit dengan (⊕ atau XOR), penjumlahan 32 bit dengan [[Aritmetika modular|mod]] 2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt; (⊞), dan operasi [[geseran melingkar]] berjarak tetap (&amp;lt;&amp;lt;&amp;lt;). Penggunaan operasi [[Penyandian blok#ARX|tambah-putar-XOR]] menghindari peluang [[serangan pewaktuan]] dalam penerapan perangkat lunak. Status internalnya terdiri dari 16 kata 32 bit yang disusun dalam matriks 4×4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Status internalnya terdiri dari delapan kata untuk kunci, dua kata untuk letak aliran, dua kata untuk nilai yang dipakai sekali (&amp;#039;&amp;#039;nonce&amp;#039;&amp;#039;; intinya bit-bit tambahan untuk letak aliran), dan empat kata tetapan:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kata-kata tetapan berbunyi &amp;quot;expand 32-byte k&amp;quot; dalam ASCII (empat kata tersebut adalah &amp;quot;expa&amp;quot;, &amp;quot;nd 3&amp;quot;, &amp;quot;2-by&amp;quot;, dan &amp;quot;te k&amp;quot;). Ini adalah contoh [[bilangan tanpa tujuan khusus]]. Inti operasi dalam Salsa20 adalah seperempat ronde &amp;lt;code&amp;gt;QR(a, b, c, d)&amp;lt;/code&amp;gt; yang menerima empat kata sebagai masukan dan menghasilkan empat kata:&lt;br /&gt;
&lt;br /&gt;
 b ^= (a + d) &amp;lt;&amp;lt;&amp;lt; 7;&lt;br /&gt;
 c ^= (b + a) &amp;lt;&amp;lt;&amp;lt; 9;&lt;br /&gt;
 d ^= (c + b) &amp;lt;&amp;lt;&amp;lt; 13;&lt;br /&gt;
 a ^= (d + c) &amp;lt;&amp;lt;&amp;lt; 18;&lt;br /&gt;
&lt;br /&gt;
Ronde bernomor ganjil menerapkan &amp;lt;code&amp;gt;QR(a, b, c, d)&amp;lt;/code&amp;gt; kepada tiap kolom dalam matriks 4×4, sedangkan ronde bernomor genap menerapkannya kepada tiap baris. Dua ronde berturutan (ronde kolom dan ronde baris) disebut sebagai ronde ganda:&lt;br /&gt;
&lt;br /&gt;
 // Ronde ganjil&lt;br /&gt;
 QR( 0,  4,  8, 12)	// kolom 1&lt;br /&gt;
 QR( 5,  9, 13,  1)	// kolom 2&lt;br /&gt;
 QR(10, 14,  2,  6)	// kolom 3&lt;br /&gt;
 QR(15,  3,  7, 11)	// kolom 4&lt;br /&gt;
 // Ronde genap&lt;br /&gt;
 QR( 0,  1,  2,  3)	// baris 1&lt;br /&gt;
 QR( 5,  6,  7,  4)	// baris 2&lt;br /&gt;
 QR(10, 11,  8,  9)	// baris 3&lt;br /&gt;
 QR(15, 12, 13, 14)	// baris 4&lt;br /&gt;
&lt;br /&gt;
Berikut penerapan Salsa20 dalam C/C++.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pada baris terakhir, larik yang telah tercampur ditambahkan, kata demi kata, ke larik asal untuk mendapatkan blok aliran kunci 64 bita. Hal ini penting karena ronde pencampuran ini dengan sendirinya bisa dibalik (&amp;#039;&amp;#039;invertible&amp;#039;&amp;#039;). Dengan kata lain, operasi yang dibalik bisa menghasilkan matriks 4×4 asal, termasuk kuncinya. Penambahan larik yang telah tercampur ke asalnya membuatnya tidak mungkin untuk memulihkan input. (Teknik ini juga dipakai dalam fungsi hash dari [[MD4]] sampai [[SHA-2]].)&lt;br /&gt;
&lt;br /&gt;
Salsa20 melakukan 20 ronde pencampuran dari inputnya. Namun, pengurangan ronde pada varian Salsa20/8 dan Salsa20/12 dengan 8 dan 12 ronde juga dikenalkan.&lt;br /&gt;
&lt;br /&gt;
== Analisis kriptografi Salsa20 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Varian ChaCha ==&lt;br /&gt;
&lt;br /&gt;
Pada tahun 2008, Bernstein memublikasikan keluarga &amp;#039;&amp;#039;&amp;#039;ChaCha&amp;#039;&amp;#039;&amp;#039; yang bersaudara dengan Salsa dan bertujuan untuk meningkatkan penghamburan per ronde sekaligus memiliki kinerja yang sama atau lebih baik. Makalah Aumasson dkk. juga menyerang ChaCha dan berhasil hingga satu ronde lebih sedikit: untuk 256 bit, ChaCha6 dengan kompleksitas 2&amp;lt;sup&amp;gt;139&amp;lt;/sup&amp;gt; dan ChaCha7 dengan kompleksitas 2&amp;lt;sup&amp;gt;248&amp;lt;/sup&amp;gt;. Untuk 128 bit, ChaCha6 dalam 2&amp;lt;sup&amp;gt;107&amp;lt;/sup&amp;gt; juga tercapai, tetapi mengeklaim bahwa serangan tersebut gagal memecahkan ChaCha7 128 bit.&lt;br /&gt;
&lt;br /&gt;
Seperti Salsa20, status awal ChaCha terdiri dari 128 bit tetapan, 256 bit kunci, 64 bit pencacah, dan 64 bit nilai yang hanya dipakai sekali (&amp;#039;&amp;#039;nonce&amp;#039;&amp;#039;) dan ditata sebagai matriks 4×4 dari kata 32 bit. Namun, ChaCha menata ulang beberapa kata dalam status awalnya:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tetapan yang dipakai sama dengan Salsa20 (&amp;quot;expand 32-byte k&amp;quot;). ChaCha mengganti seperempat ronde Salsa20 &amp;lt;code&amp;gt;QR(a, b, c, d)&amp;lt;/code&amp;gt; dengan berikut:&lt;br /&gt;
&lt;br /&gt;
 a += b; d ^= a; d &amp;lt;&amp;lt;&amp;lt;= 16;&lt;br /&gt;
 c += d; b ^= c; b &amp;lt;&amp;lt;&amp;lt;= 12;&lt;br /&gt;
 a += b; d ^= a; d &amp;lt;&amp;lt;&amp;lt;= 8;&lt;br /&gt;
 c += d; b ^= c; b &amp;lt;&amp;lt;&amp;lt;= 7;&lt;br /&gt;
&lt;br /&gt;
Perhatikan bahwa versi ini memperbarui tiap kata dua kali, sedangkan seperempat ronde Salsa20 hanya memperbarui tiap kata sekali. Selain itu, seperempat ronde ChaCha menghamburkan perubahan lebih cepat. Rata-rata, setelah mengganti satu bit input, seperempat ronde Salsa20 akan mengganti 8 bit keluaran, sedangkan ChaCha akan mengganti 12,5 bit keluaran.&lt;br /&gt;
&lt;br /&gt;
Seperempat ronde ChaCha memiliki jumlah pertambahan, XOR, dan geseran melingkar yang sama dengan seperempat ronde Salsa20. Namun, karena dua geseran melingkar kelipatan 8, ada pengoptimalan pada beberapa arsitektur, termasuk x86. Terlebih lagi, pemformatan input telah ditata untuk mendukung pengoptimalan penerapan [[SSE]] yang efisien. Alih-alih pergantian ronde kolom dan ronde baris, yang dipakai adalah pergantian ronde kolom dan diagonal. Seperti Salsa20, ChaCha menata enam belas kata 32 bit dalam matriks 4×4. Berikut indeks elemen matriks dari 0 sampai 15.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ChaCha20 menggunakan 10 perulangan ronde ganda. Ronde ganda ChaCha adalah sebagai berikut:&lt;br /&gt;
&lt;br /&gt;
 // Ronde ganil&lt;br /&gt;
 QR(0, 4,  8, 12)	// kolom 1&lt;br /&gt;
 QR(1, 5,  9, 13)	// kolom 2&lt;br /&gt;
 QR(2, 6, 10, 14)	// kolom 3&lt;br /&gt;
 QR(3, 7, 11, 15)	// kolom 4&lt;br /&gt;
 // Ronde genap&lt;br /&gt;
 QR(0, 5, 10, 15)	// diagonal 1 ([[diagonal utama]])&lt;br /&gt;
 QR(1, 6, 11, 12)	// diagonal 2&lt;br /&gt;
 QR(2, 7,  8, 13)	// diagonal 3&lt;br /&gt;
 QR(3, 4,  9, 14)	// diagonal 4&lt;br /&gt;
&lt;br /&gt;
Berikut penerapan ChaCha20 dalam C/C++.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ChaCha adalah dasar dari [[BLAKE (fungsi hash)|fungsi hash BLAKE]], salah satu finalis dalam kompetisi fungsi hash NIST, dan turunan BLAKE2/3 yang diatur agar jauh lebih cepat. Ia juga menentukan varian dengan enam belas kata 64 bit (1024 bit status) dengan tetapan rotasi yang sesuai.&lt;br /&gt;
&lt;br /&gt;
=== Adopsi ChaCha20 ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Lihat pula ==&lt;br /&gt;
* [[Speck (penyandian)|Speck]], penyandian tambah-putar-XOR yang dikembangkan oleh NSA&lt;br /&gt;
&lt;br /&gt;
== Referensi ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pranala luar ==&lt;br /&gt;
*  [https://cr.yp.to/snuffle.html Snuffle 2005: the Salsa20 encryption function]&lt;br /&gt;
*  [https://cr.yp.to/snuffle/spec.pdf Salsa20 specification] (PDF)&lt;br /&gt;
*  [https://cr.yp.to/snuffle/812.pdf Salsa20/8 and Salsa20/12] (PDF)&lt;br /&gt;
*  [http://www.ecrypt.eu.org/stream/salsa20pf.html The eSTREAM Project: Salsa20]&lt;br /&gt;
*  [https://cr.yp.to/chacha.html The ChaCha family of stream ciphers]&lt;br /&gt;
*  [https://ianix.com/pub/salsa20-deployment.html Salsa20 Usage &amp;amp; Deployment]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sumber dan atribusi ==&lt;br /&gt;
&lt;br /&gt;
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=Salsa20&amp;amp;oldid=25535552 Wikipedia bahasa Indonesia], revisi 25535552 (2024-04-07T06:50:09Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Mohon gunakan konten ini secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>