رمزنگاری شتاب‌زده پودینگ

**رمزنگاری شتاب‌زدهٔ پودینگ**  دارای یک بلوک رمز با اندازۀ متغیر می‌باشد که توسط ریچادر اسکروپل (Richard Schroepol) طراحی شد. این طرح در مسابقهٔ انتخاب استانداردهای رمزنگاری پیشرفته ایالات متحدهٔ آمریکا (AES) نامزد ناموفقی بود. این بلوک رمز یک سری ویژگی‌های خاصی دارد. از جمله ویژگی‌های آن متغیر بودن اندازهٔ ورودی بلوک و طول کلید می‌باشد و همچنین شامل یک پارامتر ورودی اضافی به نام " spice " به عنوان یک ثانویه و کلید غیرمخفی می‌باشد.

رمزنگاری شتاب‌زده پودینگ به‌طور انحصاری تنها کاندید AES توسط رمزنگاران ایالات متحدهٔ آمریکا طراحی شده بود.

## رمزنگاری
رمزنگاری شتاب‌زده پودینگ شامل پنج زیر گروه متفاوت رمزنگاری است:
بندانگشتی
# کوچک - HPC بیت ۰–۳۵
# کوتاه - HPC بیت ۳۶–۶۴
# متوسط - HPC بیت ۶۵–۱۲۸
# بلند - HPC بیت ۱۲۹–۵۱۲
# گسترش داده شده - HPC بیت 513+ bits

الگوریتم در داخل رمزنگاری شتاب‌زدهٔ پودینگ همه از 64HPC بیتی استفاده شد و این رمز برای اجرا بر روی دستگاه‌های ۶۴ بیتی طراحی شده است، به طوری‌که به آسانی می‌توان عملیات ساده را روی کلمات ۶۴ بیتی انجام دهد.

### توسعه کلیدی
رمزنگاری شتاب‌زده می‌تواند یک کلید (از هر تعداد بیت) برای هر کدام از پنج زیر گروه رمزنگاری را بگیرد. این رمز خود از یک جدول [//en.wikipedia.org/w/index.php?title=Wikipedia:New_user_landing_page&page=Key+table کلید بیت] (۲۵۶کلمه ۶۴ بیتی) استفاده می‌کند. برای استخراج کلید از این جدول کلیدی از الگوریتم توسعهٔ کلیدی استفاده می‌کنند:
# سه کلمهٔ اول [0]kx[2] , kx[1] ,k بر پایهٔ ثابت‌ها تنظیم می‌شود. زیر گروه رمزنگاری و طول کلید،[1]kx با یک ضرب محاسبه می‌شود و عملیات‌ها ی دیگر با اضافه کردن یا کمی تغییر کار می‌شود.
# هر واژهٔ پیوندی،[1]kx با استفاده از یک فرمول بازگشتی کار آمد از سه کلمهٔ پیشین تعیین می‌شود.
# بیت‌های کلید XORED در بیت‌های جدول کلیدی قرار دارند. از [0]kx آغاز کرده و تا زمانی که همۀ بیت‌های کلید استفاده شوند (کلیدهایی که بلندتر از۸٬۱۹۲ بیت می‌باشند، از روش پیچیده‌تری استفاده می‌کند).
# تعداد زیادی از جدول کلیدی که ساخته شده عبور می‌کتتد در هر بار یک تابع" stirring " برای هر کلمهٔ جدول کلیدی اعمال می‌شود. به دنبال آن تابع " stirring " از هشت متغیر داخلی استفاده می‌کند و همین‌طور از عملیات بیتی منطقی، عملیات تغییر بیت و عملیات افزودن و کاستن استفاده می‌کند.

در هر بار استفاده از تابع " stirring " یک کلمه در جدول کلیدی را بر اساس مقادیر پیشین یا مقادیر کلمات دیگر یا متغیرهای داخلی عملکرد" stirring " تغییر می‌دهد. (به‌طور پیش فرض سه عبور کلی وجود دارد).

### رمز گذاری و رمز گشایی
* هر کدام ار زیر گروه‌های رمز گذازی از الگوریتم‌های متفاوتی استفاده می‌کنند ولی با این حال دارای یک سری شباهت‌های کلی می‌باشند.

برای تعیین رمزنگاری از سه ورودی استفاده می‌شود:
# متن ساده (از چند کلمهٔ ۶۴ بیتی به اضافهٔ " fragment ")
# spice (همان پارامتر ورودی اضافی) (هشت کلمهٔ ۶۴ بیتی به همراه مقدار پیش فرض)
# جدول کلیدی

عملیاتی که در داخل رمز انجام می‌شود، شامل " stirring " می‌باشد، به طوری که برای هر کدام ترکیبی از متغیرهای داخلی در راه‌های مختلف با مقادیری از جدول کلیدی و پارامتر ورودی اضافی (spice) در فاصله‌های منظم می‌باشد. HPC کوتاه همچنین دارای دو جایگزین ثابت است و HPC کوچک شامل زیر گروه‌های رمزی خاصی می‌باشند.

رمزگشایی شامل لغو مراحل رمزگذاری یک به یک می‌باشد. بسیاری از این رمزگذاری‌ها به راحتی با انجام عملیات لغو شده‌اند. (به عنوان مثال *s*0 = *s*0 + *s*1 با استفاده از محاسبه ی*s*0 = *s*0− *s*1 محاسبه می‌شود) عملیات دیگری را که برای خنثی کردن استفاده می‌شود پیچیده‌تر است که برخی از این ایده‌ها شامل موارد زیر می‌باشد:
* عملیاتی مانند (*x* = *x* (*x*>> 17 که در دو مرحله محاسبه می‌شد:
# *x*>> 17) *x* = *x)* که به دنبال آن
# *(x* = *x (x>> 34*
* این رمز جستجوهایی را که به ارزش‌های جدول کلیدی وابسته است، استفاده می‌کند که می‌تواند انجام نشود و از آنجایی که این جستجو تنها به هشت بیت از یک متغیر بستگی دارد و هنگامی که لازم است که ارزش‌ها را که در جدول کلیدی قرار دارند، در رمزگشایی بررسی کنیم، هشت بیت آخر که مقدار یک نقطه پیش از محاسبه قابل پیش‌بینی است، حتی زمانی که در این عملیات نتوان بدون ارزش کلیدی آن را حذف کرد. به عنوان مثال اگر جستجوی k بر اساس هشت بیت آخر باشد، هنگامی که می‌خواهیم یک مرحله مانند (*x* = *x(k <<8* لغو کنیم، می‌توانیم k را جستجو کنیم با توجه به این که هشت بیت آخر از x با این عملیات بدون تغییرند.

رمزنگاری شتاب‌زده پودینگ همچنین می‌تواند برای رمز گذاری مقادیری را که در محدوده‌ای قرار دارند که رشته‌ها با تعداد بیتی برابر منتقل نشود. برای مثال می‌تواند یک عدد ۰ تا N را با تولید یک عدد دیگر از ۰ تا N رمزگذاری کند، این کار را با استفاده از کوچک‌ترین زیرگروه رمزی که بتواند ورودی را به عنوان یک رشته بیتی اداره کند انجام می‌دهد و آن را از ورودی به عنوان یک رشته بیت بارگذاری کند تا زمانی که خروجی در محدوده مناسب باشد.

### عملکرد
ریچارد اسکروپل ادعا کرد که سریع‌ترین نامزد برای AES در یک معماری بیتی بود. همچنین او ادعا کرد که دو برابر سریع‌تر از نزدیک‌ترین رقیبان خود، DFC. و سه برابر سریع‌تر از دیگر کاندیدها بود و عملکرد آن بر روی یک دستگاه بیت مناسب بود. اما نظرات دیگران این دیدگاه را پشتیبانی نمی‌کند. به عنوان مثال، تجزیه اسکروپل و همکارانش، کد پدینگ شتاب‌زده ۴ بهترین (۳۷۶ سیکل) را در دستگاه ۶۴ بیتی رتبه‌بندی کرد، هرچند برای Rijndael و Twofish، عملکرد تنها برآورد شد. در یک پنتیوم ۳۲ بیتی، رمزنگاری پودینگ شتاب‌زده توسط Schneier et al. در ۱۶۰۰ چرخه ساعت، ۱۰ بهترین از ۱۵ نامزد. Schneier و همکاران و اسکروپل اشاره کرد که سرعت رمزگذاری به‌طور قابل ملاحظه‌ای بر روی دستگاه ۳۲ بیتی تأثیر می‌گذارد، زیرا استفاده سنگینی از عملیات ۶۴ بیتی، به ویژه تغییر بیت‌ها می‌کنند.

راه‌اندازی کلید رمز شگفت‌انگیز پدینگ به عنوان ۱۲۰۰۰۰ سیکل در پنتیوم نسبتاً کند بود.

این رمز برای عملکرد در کارت‌های هوشمند مورد انتقاد قرار گرفت. به‌طور خاص، برخی از نظرات اشاره به مشکل نگه داشتن بیش از 2KB RAM برای جدول کلیدی است، داشتند.

## جستارهای وابسته
## منابع

رده:رمزنگاری قطعه‌ای
رده:مقاله‌های نیازمند پیوند