SP-ağ
Kriptografide, bir SP-network veya substitution-permutation network (SPN), AES (Rijndael), 3-Way, Kalyna, Kuznyechik, PRESENT, SAFER, SHARK ve Square gibi blok şifre algoritmalarında kullanılan bir dizi bağlantılı matematiksel işlemdir.
Böyle bir ağ, düz metnin bir bloğunu ve anahtarı girdi olarak alır ve şifreli metin bloğunu üretmek için ikame kutularının (S-kutuları) ve permütasyon kutularının (P-kutuları) birkaç dönüşümlü "turunu" veya "katmanını" uygular. S-kutuları ve P-kutuları giriş bitlerinin (alt) bloklarını çıkış bitlerine dönüştürür. Bu dönüşümlerin, özel veya (XOR) ve bitsel döndürme gibi donanımda gerçekleştirilmesi verimli olan işlemler olması yaygındır. Anahtar her turda, genellikle ondan türetilen "tur anahtarları" şeklinde tanıtılır. (Bazı tasarımlarda S-kutularının kendileri de anahtara bağlıdır).
Şifre çözme işlemi basitçe tersine çevrilerek yapılır (S-kutuları ve P-kutularının tersleri kullanılarak ve yuvarlak anahtarlar ters sırada uygulanarak).
Bir S-kutusu küçük bir bit bloğunu (S-kutusunun girişi) başka bir bit bloğuyla (S-kutusunun çıkışı) değiştirir. Tersine çevrilebilirliği (dolayısıyla şifre çözmeyi) sağlamak için bu yer değiştirme bire bir olmalıdır. Özellikle, çıkışın uzunluğu girişin uzunluğu ile aynı olmalıdır (sağdaki resimde 4 giriş ve 4 çıkış bitine sahip S-kutuları vardır), bu da örneğin DES'te (Veri Şifreleme Standardı) olduğu gibi uzunluğu da değiştirebilen genel S-kutularından farklıdır. Bir S-kutusu genellikle sadece bitlerin bir permütasyonu değildir. Daha ziyade, iyi bir S-kutusu, bir giriş bitini değiştirmenin çıkış bitlerinin yaklaşık yarısını değiştireceği (veya çığ etkisi) özelliğine sahip olacaktır. Ayrıca her bir çıkış bitinin her bir giriş bitine bağlı olması özelliğine de sahip olacaktır.
Bir P-kutusu tüm bitlerin permütasyonudur: bir turun tüm S-kutularının çıktılarını alır, bitleri permüle eder ve bunları bir sonraki turun S-kutularına besler. İyi bir P-kutusu, herhangi bir S-kutusunun çıkış bitlerinin mümkün olduğunca çok sayıda S-kutusu girişine dağıtılması özelliğine sahiptir.
Her turda, tur anahtarı (anahtardan bazı basit işlemlerle, örneğin S-kutuları ve P-kutuları kullanılarak elde edilir), tipik olarak XOR gibi bazı grup işlemleri kullanılarak birleştirilir.
Tek bir tipik S-kutusu veya tek bir P-kutusu tek başına çok fazla kriptografik güce sahip değildir: bir S-kutusu bir yer değiştirme şifresi olarak düşünülebilirken, bir P-kutusu bir aktarma şifresi olarak düşünülebilir. Bununla birlikte, S ve P kutularının birkaç dönüşümlü turunu içeren iyi tasarlanmış bir SP ağı, Shannon'un karışıklık ve yayılma özelliklerini zaten karşılamaktadır:
- Yayılmanın nedeni aşağıdaki gibidir: Eğer düz metnin bir biti değiştirilirse, bu bir S-kutusuna beslenir, bu kutunun çıkışı birkaç bitte değişir, daha sonra tüm bu değişiklikler P-kutusu tarafından birkaç S-kutusu arasında dağıtılır, dolayısıyla tüm bu S-kutularının çıkışları yine birkaç bitte değişir ve bu böyle devam eder. Birkaç tur boyunca her bit birkaç kez ileri geri değişir, bu nedenle sonunda şifreli metin sözde rastgele bir şekilde tamamen değişmiş olur. Özellikle, rastgele seçilen bir giriş bloğu için, i'inci biti çevirirseniz, j'inci çıkış bitinin değişme olasılığı, herhangi bir i ve j için yaklaşık olarak yarısıdır, bu da Sıkı Çığ Kriteridir. Bunun tam tersi olarak, eğer şifreli metnin bir biti değiştirilir ve ardından şifresi çözülmeye çalışılırsa, sonuç orijinal düz metinden tamamen farklı bir mesaj olacaktır-SP şifreleri kolaylıkla değiştirilebilir değildir.
- Karışıklığın nedeni yayılma ile tamamen aynıdır: anahtarın bir bitinin değiştirilmesi birçok yuvarlak anahtarı değiştirir ve her yuvarlak anahtardaki her değişiklik tüm bitlere yayılarak şifreli metni çok karmaşık bir şekilde değiştirir.
- Bir saldırgan bir şekilde bir şifreli metne karşılık gelen bir düz metin elde etse bile (bilinen düz metin saldırısı veya daha kötüsü, seçilen düz metin veya seçilen şifreli metin saldırısı), karışıklık ve yayılma saldırganın anahtarı kurtarmasını zorlaştırır.
S-kutularını kullanan bir Feistel ağı (DES gibi) SP ağlarına oldukça benzese de, belirli durumlarda bunu ya da bunu daha uygulanabilir kılan bazı farklılıklar vardır. Belirli bir karışıklık ve yayılma miktarı için, bir SP ağı daha fazla "doğal paralelliğe" sahiptir ve bu nedenle - birçok yürütme birimine sahip bir CPU verildiğinde - bir Feistel ağından daha hızlı hesaplanabilir. Az sayıda yürütme birimine sahip CPU'lar - çoğu akıllı kart gibi - bu doğal paralellikten yararlanamaz. Ayrıca SP şifreleri S-kutularının ters çevrilebilir olmasını gerektirir (şifre çözme işlemini gerçekleştirmek için); Feistel iç fonksiyonlarının böyle bir kısıtlaması yoktur ve tek yönlü fonksiyonlar olarak oluşturulabilir.