Salsa20: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
S Rifqi (bicara | kontrib)
penerjemahan dari en:Salsa20
 
Mauliddinnm (bicara | kontrib)
Fitur saranan suntingan: 3 pranala ditambahkan.
 
(4 revisi perantara oleh 3 pengguna tidak ditampilkan)
Baris 15:
| ukuran blok =
| ukuran status = 512 bit
| struktur = [[Penyandian blok#ARX (add-rotate-XOR, tambah-putar-XOR)|ARX]] (tambah-putar-XOR)
| ronde = 20
| kecepatan = 3,91 siklus per bita pada Intel Core 2 Duo<ref name="Salsa20">{{cite web |url=https://cr.yp.to/snuffle.html |author=Daniel J. Bernstein |date=16 Mei 2013 |title=Snuffle 2005: the Salsa20 encryption function}}</ref>
Baris 22:
'''Salsa20''' dan saudara terdekatnya, '''ChaCha''', 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.<ref name="ChaCha">{{cite web |url=https://cr.yp.to/chacha/chacha-20080128.pdf |last=Bernstein |first=Daniel |date=28 Januari 2008 |title=ChaCha, a variant of Salsa20 |access-date=3 Juni 2018}}</ref>
 
Kedua penyandian tersebut dibangun dari [[fungsi acak semu]] berdasarkan operasi [[Penyandian blok#ARX (add-rotate-XOR, tambah-putar-XOR)|tambah-putar-XOR]] (ARX). Tugas utamanya adalah pemetaan sebuah [[Ukuran kunci|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). 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]]<ref name="Salsa20" /> 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.<ref>{{cite web |url=https://cr.yp.to/salsa20/speed.html |title=Salsa20: Software speed |date=11 Mei 2007}}</ref>
 
== Struktur ==
Secara internal, penyandian ini menggunakan penjumlahan per bit dengan (⊕ atau XOR), penjumlahan 32 bit dengan [[Aritmetika modular|mod]] 2<sup>32</sup> (⊞), dan operasi [[geseran melingkar]] berjarak tetap (<<<). Penggunaan operasi [[Penyandian blok#ARX (add-rotate-XOR, tambah-putar-XOR)|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.
 
{| class="wikitable"
Baris 145:
| ukuran blok =
| ukuran status = 512 bit
| struktur = [[Penyandian blok#ARX (add-rotate-XOR, tambah-putar-XOR)|ARX]] (tambah-putar-XOR)
| ronde = 20
| kecepatan = 3,95 siklus per bita pada Intel Core 2 Duo<ref name="ChaCha" />
Baris 187:
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.<ref name="ChaCha" />
 
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.<ref>{{cite web |url=https://eden.dei.uc.pt/~sneves/chacha/chacha.html |last=Neves |first=Samuel |date=7 Oktober 2009 |title=Faster ChaCha implementations for Intel processors |access-date=7 September 2016 |quote=two of these constants are multiples of 8; this allows for a 1 instruction rotation in Core2 and later Intel CPUs using the '''pshufb''' instruction |archive-date=2017-03-28 |archive-url=https://web.archive.org/web/20170328105321/https://eden.dei.uc.pt/~sneves/chacha/chacha.html |dead-url=yes }}</ref> 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.<ref name="ChaCha" /> Seperti Salsa20, ChaCha menata enam belas kata 32 bit dalam matriks 4×4. Berikut indeks elemen matriks dari 0 sampai 15.
 
{| class="wikitable"
Baris 200:
|}
 
ChaCha20 menggunakan 10 perulangan ronde ganda.<ref>{{cite web |url=https://datatracker.ietf.org/doc/rfc7539/ |authors=Y. Nir (Check Point), A. Langley (Google Inc.) |date=Mei 2015 |title=ChaCha20 and Poly1305 for IETF Protocols: RFC 7539}}</ref>. Ronde ganda ChaCha adalah sebagai berikut:
 
// Ronde ganil
Baris 208:
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
Baris 264:
* {{en}} [https://cr.yp.to/snuffle/spec.pdf Salsa20 specification] (PDF)
* {{en}} [https://cr.yp.to/snuffle/812.pdf Salsa20/8 and Salsa20/12] (PDF)
* {{en}} [http://www.ecrypt.eu.org/stream/salsa20pf.html The eSTREAM Project: Salsa20] {{Webarchive|url=https://web.archive.org/web/20160405085821/http://www.ecrypt.eu.org/stream/salsa20pf.html |date=2016-04-05 }}
* {{en}} [https://cr.yp.to/chacha.html The ChaCha family of stream ciphers]
* {{en}} [https://ianix.com/pub/salsa20-deployment.html Salsa20 Usage & Deployment]
 
{{penyandiankriptografi aliran}}
 
[[Kategori:Penyandian aliran]]