شبکه جانشینی جایگشت

در رمزنگاری شبکه جانشینی جایگشت (به انگلیسی: Substitution Permutation Network) مجموعه‌ای از عملگرهای ریاضی است که در الگوریتم‌های رمز قالبی مانند استاندارد رمزنگاری پیشرفته (به انگلیسی: (Advanced Encryption Standard (AES) استفاده می‌شود.
چنین شبکه‌ای به عنوان ورودی کلید k و یک قالب از متن اصلی را می‌گیرد و چندین لایه از جعبه‌های جانشینی و جعبه‌های جایگشت را به منظور به دست آوردن قالبی از متن رمزی روی آن اعمال می‌کند. جعبه‌های جانشینی و جایگشت در واقع زیرقالب‌هایی از بیت‌های ورودی را به بیت‌های خروجی تبدیل می‌کنند. اصولاً در این جعبه‌ها از عملگرهایی مانند XOR که به صورت کارا در سخت‌افزار انجام می‌شوند، استفاده می‌شود. در هر مرحله زیرکلیدی از کلید اصلی با استفاده از زمان‌بند کلید به دست می‌آید که کلید آن لایه محسوب می‌شود.
رمزگشایی به سادگی انجام می‌شود. به این صورت که جعبه‌های جانشینی و جایگشت را همراه با زیرکلیدهای هر مرحله به صورت معکوس استفاده کنیم.
یک جعبه جانشینی یک قالب کوچک از بیت‌های ورودی را به قالب دیگری از بیت‌ها تبدیل می‌کند. این جانشینی باید یک به یک باشد، تا بتوان اطمینان داشت که رمزگشایی انجام می‌شود. به طور مشخص طول خروجی جعبه جانشینی با طول ورودی آن یکسان است. (در شکل سمت راست جعبه‌های جانشینی ورودی و خروجی ۴ دارند). البته این عمومیت ندارد و جعبه‌های جانشینی وجود دارند که طول ورودی و خروجی آن‌ها یکسان نیست. یک جعبه جانشینی خوب باید دارای این خصوصیت باشد که تعویض یک بیت ورودی باعث تغییر در نیمی از بیت‌های خروجی جعبه جانشینی باشد. همچنین هر بیت خروجی چنین جعبه‌ای باید به همه بیت‌های ورودی بستگی داشته باشد.
یک جعبه جایگشت، جایگشتی از بیت‌ها فراهم می‌کند. این جعبه در هر لایه، خروجی‌های جعبه‌های جانشینی را می‌گیرد و بیت‌های آن را جایگشت می‌دهد و سپس خروجی خود را به عنوان ورودی به جعبه‌های جانشینی مرحله مرحله بعد می‌دهد. یک جعبه جایگشت خوب تا آن‌جا که ممکن است بیت‌های خروجی یک جعبه جانشینی مرحله قبل را بین چند جعبه جانشینی مرحله بعد توزیع می‌کند. در هر مرحله، کلید مرحله با خروجی جعبه جایگشت XOR می‌شود.
در این شبکه، فقط یک‌بار استفاده از جعبه جایگشت یا جعبه جانشینی از نظر امنیت مناسب نیست. یک جعبه جانشینی در واقع مانند یک سیستم رمز جانشینی عمل می‌کند در حالی‌که یک جعبه جایگشت به صورت یک سیستم رمز جابجایی عمل می‌کند. اگرچه که یک شبکه جانشینی جایگشت خوب از چندین لایه از جعبه‌های جانشینی و جعبه‌های جایگشت استفاده می‌کنند که خصوصیات آشفتگی و پخش شانون را دارند:
توضیح پخش به این صورت است: اگر یک بیت از متن اصلی را تغییر دهیم آن‌گاه ورودی یک جعبه جانشینی تغییر می‌کند و این یعنی چند بیت خروجی این جعبه جانشینی تغییر خواهد کرد؛ همه این تغییرات توسط یک جعبه جایگشت بین چندین جعبه جانشینی توزیع می‌شود؛ بنابراین خروجی جعبه‌های جانشینی در هر مرحله تغییر می‌کند و اگر چندین مرحله داشته باشیم، متن رمزشده به صورت شبه‌تصادفی به طور کامل تغییر خواهد کرد. به طور مشخص اگر یک قالب ورودی را به صورت تصادفی انتخاب کنیم و یک فلیپ در بیت i ام انجام دهیم، آن‌گاه احتمال این‌که بیت j ام خروجی تغییر کند تقریباً برابر ۱/۲ خواهد بود. (برای هر i و j). برعکس اگر یک بیت از متن رمزی را تغییر دهیم سپس سعی کنیم تا آن را رمزگشایی کنیم، متن اصلی حاصل شده با متن اصلی قبلی کاملاً تفاوت خواهد داشت.
توضیح آشفتگی نیز دقیقاً مانند پخش است: تغییر یک بیت از کلید باعث می‌شود تغییرات زیادی در زیرکلیدها اتفاق بیفتد و هر تغییر در زیرکلیدها روی همه بیت‌ها تأثیرگذار است. در نتیجه تغییر در متن رمزی به صورت خیلی پیچیده‌ای اتفاق می‌افتد.
حتی اگر یک مهاجم متن اصلی متناظر با یک متن رمزی را به دست آورد، آشفتگی و پخش به دست آوردن کلید را برای مهاجم بسیار سخت می‌کند.
اگرچه یک شبکه فایستل از جعبه‌های جانشینی به صورت کاملاً مشابهی با شبکه جانشینی جایگشت استفاده می‌کند ولی وجود تفاوت‌های دیگری در آن‌ها باعث می‌شود هر یک از این شبکه‌ها در موقعیت‌های خاصی کاربرد بیشتری داشته باشند.