SP-jaringan
Dalam kriptografi, jaringan SP, atau jaringan substitusi-permutasi (SPN), adalah serangkaian operasi matematika terkait yang digunakan dalam algoritma block cipher seperti AES (Rijndael), 3-Way, Kalyna, Kuznyechik, PRESENT, SAFER, SHARK, dan Square.
Jaringan seperti ini mengambil blok plaintext dan kunci sebagai input, dan menerapkan beberapa "putaran" atau "lapisan" kotak substitusi (S-boxes) dan kotak permutasi (P-boxes) untuk menghasilkan blok ciphertext. Kotak-S dan kotak-P mentransformasikan (sub-)blok bit masukan menjadi bit keluaran. Umumnya transformasi ini merupakan operasi yang efisien untuk dilakukan dalam perangkat keras, seperti exclusive or (XOR) dan bitwise rotation. Kunci diperkenalkan di setiap putaran, biasanya dalam bentuk "kunci putaran" yang diturunkan darinya. (Dalam beberapa desain, S-box itu sendiri bergantung pada kunci).
Dekripsi dilakukan hanya dengan membalikkan proses (menggunakan invers dari S-box dan P-box dan menerapkan kunci putaran dalam urutan terbalik).
Sebuah S-box mensubstitusi sebuah blok kecil bit (input dari S-box) dengan blok bit yang lain (output dari S-box). Substitusi ini harus satu-ke-satu, untuk memastikan invertibilitas (sehingga dekripsi). Khususnya, panjang dari output harus sama dengan panjang input (gambar di sebelah kanan memiliki S-box dengan 4 bit input dan 4 bit output), yang berbeda dengan S-box pada umumnya yang juga dapat mengubah panjangnya, seperti pada DES (Data Encryption Standard), sebagai contoh. Sebuah S-box biasanya bukan hanya permutasi bit. Sebaliknya, S-box yang baik akan memiliki sifat bahwa mengubah satu bit input akan mengubah sekitar setengah dari bit output (atau efek longsor). Ini juga akan memiliki sifat bahwa setiap bit keluaran akan bergantung pada setiap bit masukan.
Sebuah P-box adalah permutasi dari semua bit: ia mengambil output dari semua S-box dari satu putaran, mengutak-atik bit-bitnya, dan memasukkannya ke dalam S-box pada putaran berikutnya. P-box yang baik memiliki sifat bahwa bit-bit keluaran dari setiap S-box didistribusikan ke sebanyak mungkin masukan S-box.
Pada setiap putaran, kunci putaran (diperoleh dari kunci dengan beberapa operasi sederhana, misalnya, menggunakan S-box dan P-box) digabungkan dengan menggunakan beberapa operasi grup, biasanya XOR.
Sebuah kotak-S atau sebuah kotak-P saja tidak memiliki kekuatan kriptografi yang besar: sebuah kotak-S dapat dianggap sebagai sandi substitusi, sementara sebuah kotak-P dapat dianggap sebagai sandi transposisi. Akan tetapi, jaringan SP yang didesain dengan baik dengan beberapa putaran bergantian dari S- dan P-box sudah memenuhi sifat kebingungan dan difusi Shannon:
- Alasan difusi adalah sebagai berikut: Jika seseorang mengubah satu bit dari plaintext, kemudian dimasukkan ke dalam S-box, yang outputnya akan berubah pada beberapa bit, kemudian semua perubahan ini didistribusikan oleh P-box di antara beberapa S-box, maka output dari semua S-box ini kembali berubah pada beberapa bit, dan seterusnya. Dengan melakukan beberapa putaran, setiap bit berubah beberapa kali bolak-balik, oleh karena itu, pada akhirnya, ciphertext telah berubah sepenuhnya, dengan cara pseudorandom. Khususnya, untuk blok masukan yang dipilih secara acak, jika seseorang membalik bit ke-i, maka probabilitas bahwa bit keluaran ke-j akan berubah kira-kira setengahnya, untuk setiap i dan j, yang merupakan Kriteria Longsor Ketat (Strict Avalanche Criterion). Sebaliknya, jika seseorang mengubah satu bit dari ciphertext, kemudian mencoba untuk mendekripsinya, hasilnya adalah pesan yang sama sekali berbeda dari plaintext asli - Cipher SP tidak mudah berubah-ubah.
- Alasan kebingungannya persis sama dengan difusi: mengubah satu bit kunci mengubah beberapa kunci putaran, dan setiap perubahan dalam setiap kunci putaran berdifusi ke semua bit, mengubah ciphertext dengan cara yang sangat kompleks.
- Bahkan jika seorang penyerang entah bagaimana mendapatkan satu plaintext yang berhubungan dengan satu ciphertext - serangan known-plaintext, atau lebih buruk lagi, serangan chosen plaintext atau chosen-ciphertext - kebingungan dan difusi menyulitkan penyerang untuk mendapatkan kembali kuncinya.
Walaupun jaringan Feistel yang menggunakan S-box (seperti DES) sangat mirip dengan jaringan SP, ada beberapa perbedaan yang membuat jaringan ini atau itu lebih dapat diterapkan dalam situasi tertentu. Untuk jumlah kebingungan dan difusi yang diberikan, jaringan SP memiliki lebih banyak "paralelisme yang melekat" dan - mengingat CPU dengan banyak unit eksekusi - dapat dihitung lebih cepat daripada jaringan Feistel. CPU dengan sedikit unit eksekusi - seperti kebanyakan smart card - tidak dapat memanfaatkan paralelisme inheren ini. Juga cipher SP membutuhkan S-box untuk dibalik (untuk melakukan dekripsi); fungsi dalam Feistel tidak memiliki batasan seperti itu dan dapat dibangun sebagai fungsi satu arah.