Kriptografide, SP-network ya da koyma-değiştirme ağı(SPN), AES (Rijndael), 3-Way, Kuznyechik, PRESENT, SAFER, SHARK, ve Square gibi gibi blok şifreleme algoritmalarında kullanılan bir dizi bağlantılı matematiksel işlemdir.
Böyle bir ağ, şifresiz metin bloğunu ve anahtarı girdi olarak alır ve şifreli metin bloğu üretmek için yerine-koyma kutularına(S-boxes) ve yerini-değiştirme kutularına(P-boxes) "tur" veya "katmanlar" gibi birkaç değişen uygular. S-kutuları ve P-kutuları blok halindeki giriş bitlerini çıkış bitlerine dönüştürür. Bu dönüşümlerin, donanımda, özel veya(XOR) ve bitsel rotasyon gibi performans gösterecek operasyonlar olması yaygındır. Anahtar, her turda, genellikle ondan türetilen "raund anahtarlar" biçiminde tanıtılmaktadır. (Bazı tasarımlarda, S-kutuları anahtara göre değişir.)
Şifre çözme işlemi sadece işlemi tersine çevirerek yapılır (S-kutuları ve P-kutularının tersini kullanarak ve yuvarlak anahtarları ters sırayla uygulayarak).
Bir S-kutusu, küçük bir bitler bloğunu (S-kutusunun girişi) başka bir bitler bloğu (S-kutusunun çıkışı) ile değiştirir. Bu yerine koyma, tersine çevrilebilirliği (dolayısıyla şifre çözme) sağlamak için bire bir olmalıdır. Özellikle, çıkış uzunluğu girişin uzunluğu ile aynı olmalıdır (sağdaki resim 4 girişli ve 4 çıkışlı S-kutularına sahiptir),örneğin S-kutularından farklı olarak, aynı zamanda, uzunluğu, DES (Veri Şifreleme Standardı) 'da olduğu gibi değiştirebilir. Bir S-kutusu genellikle basitçe bitlerin bir yer değiştirmesi değildir. Aksine, iyi bir S-kutusu, bir giriş bitini değiştirmenin, çıkış bitlerinin yaklaşık yarısını (veya bir çığ etkisi) değiştirebilme özelliğine sahip olacaktır. Ayrıca her çıktı bitinin her giriş bitine bağlı olacağı özelliğine sahip olacaktır.
P-kutusu, tüm bitlerin bir permütasyonudur: bir turdaki tüm S-kutularının çıkışlarını alır, bitlerin yerini değiştirir ve onları bir sonraki turun S-kutularına besler. İyi bir P-kutusu, herhangi bir S-kutusunun çıkış bitlerinin olabildiğince çok sayıda S-kutu girişine dağıtılma özelliğine sahiptir.
Her turda, raund anahtar (anahtardan bazı basit işlemlerle elde edilir, örneğin S-Kutusu ve P-Kutusu kullanarak), tipik olarak XOR gibi bir grup işlemi kullanılarak birleştirilir.
Tek bir tipik S-kutusu veya tek bir P-box'ın çok fazla kriptografik kuvveti yoktur: Bir S-kutusu bir yerine koyma şifresi olarak düşünülebilirken, bir P-kutusu bir yer değiştirme şifresi olarak düşünülebilir. Bununla birlikte, S-ve P-kutularının birkaç dönüşümlü turları ile iyi tasarlanmış bir SP ağı, Shannon'un karışıklık ve yayılma özelliklerini zaten karşılamaktadır:
- Bu nedenle, bu S-kutularının tüm çıktıları birkaç bit ve daha sonra değiştirilir. Birkaç tur yaparken, her bit birkaç kez ileri ve geri değişmektedir, bu nedenle, sonuna kadar, şifleli metin yalancı bir şekilde tamamen değişmiştir.Özellikle rastgele seçilmiş bir input bloğu için eğer i-th bitini çevirirse, j-th çıktı bitinin değişme olasılığı, herhangi bir i ve j için yaklaşık bir yarısıdır, bu Katı Çığ Kriteri(Strict Avalanche Criterion) olarak bilinir.Tam tersi, eğer biri şifreli metnin bir bitini değiştirirse, sonrasında şifreyi çözmeye çalışırsa, sonuç orijinal düz metinden tamamen farklı bir mesajdır — SP şifreleri kolayca şekillendirilemez. Karışıklık nedeni yayılma ile aynıdır: anahtarın bir bitini değiştirmek, yuvarlak anahtarların birkaçını değiştirir ve her yuvarlak anahtardaki her değişiklik, tüm bitlerin üzerine yayılır, şifreli metni çok karmaşık bir şekilde değiştirir. Bir saldırgan bir şekilde bir şifreli metne karşılık gelen bir şifresiz metin (bir bilinen şifresiz metin saldırısı veya daha kötüsü, seçilmiş bir şifresiz metin veya seçilmiş şifreli metin saldırısı) elde etse bile, karışıklık ve yayılma, saldırganın anahtarı elde etmesini zorlaştırır.
Her ne kadar S-kutularını kullanan bir Feistel ağı (DES gibi) SP ağlarına oldukça benzer olsa da, ya bu ya da bazı durumlarda daha uygulanabilir olan bazı farklılıklar vardır. Belirli bir miktarda karışıklık ve yayılma için, bir SP ağının daha fazla "yapısal paralellik" özelliği vardır ve bu nedenle - çok sayıda yürütme birimine sahip bir CPU verilir - bir Feistel ağından daha hızlı hesaplanabilir. Birkaç yürütme birmine sahip CPU'lar -en akıllı kartlar gibi- bu yapısal paralellik avantajından yararlanamazlar. Ayrıca SP şifreleri S-kutularının tersine çevrilmesini gerektirir (şifre çözme işlemini gerçekleştirmek için); Feistel iç fonksiyonları böyle bir kısıtlamaya sahip değildir ve tek yönlü fonksiyonlar olarak yapılandırılabilir.