مدهای کاری رمزهای قطعه‌ای

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در رمزنگاری، مدهای کاری رویه‌هایی هستند که استفاده مکرر و امن از رمزگذاری قطعه‌ای تحت یک تک کلید را ممکن می‌سازند. یک رمزنگاری قطعه‌ای به خودی خود تنها رمزگذاری یک تک قطعه داده از طول قطعه رمز را اجازه می‌دهد. وقتیکه یک پیغام با طول متغیر را به سمت هدف ارسال می‌کنیم، داده ابتدا باید به قطعه‌های مجزای رمزگذاری تقسیم شود. معمولا، آخرین قطعه باید با استفاده از طرح افزونگی‌گذاری[۱] بسط داده شود تا به اندازه طول قطعه رمزگذاری برسد. یک مد کاری رمزگذاری هر کدام از این قطعه‌ها توضیح می‌دهد، و به طور کلی از تصادفی‌سازی استفاده می‌کند که برای انجام کاملا امن این کار، مبتنی بر یک ارزش ورودی افزوده، که معمولا بردار اولیه خوانده می‌شود، می‌باشد.

مدهای کاری در درجه اول برای رمزنگاری و احراز هویت تعریف شدند. از نظر تاریخی، مدهای رمزنگاری به طور گسترده در رابطه با خصوصیات انتشار خطاهایشان تحت سناریوهای مختلف اطلاح داده مورد مطالعه قرار گرفتند. سپس در رابطه با یکپارچگی داده توسعه پیدا کرد. برخی از مدهای امروزی رمزنگاری و احراز هویت را به صورت کارآمدی ترکیب کرده‌اند که به عنوان مدهای رمزنگاری احراز هویت شده[۲] شناخته می‌شوند.

بردار مقداردهی اولیه[ویرایش]

یک بردار مقداردهی اولیه قطعه‌ای از بیت هاست که در بسیاری از مدها برای تصادفی کردن رمزنگاری استفاده می‌شود که موجب تولید متن‌های رمزشده متمایز، بدون نیاز به فرآیند کند تولید مجدد کلید، می‌شود. حتی اگر همان متن آشکار چندین بار رمز شده باشد. یک بردار مقداردهی اولیه[۳] (آی‌وی، IV) نیازمندی‌های امنیتی متفاوتی نسبت به کلید دارد، بنابراین آی‌وی معمولا نیازی ندارد که مخفی باشد. به هر حال، در بسیاری از موارد، این بسیار اهمیت دارد که یک آی‌وی تحت یک کلید مشابه هرگز مجددا استفاده نشود. برای CBC و CFB، استفاده کردن مجدد از یک آی‌وی برخی از اطلاعات را در مورد اولین قطعه متن آشکار، و درباره هرگونه پیشوند مشترکی که بین دو پیغام به اشتراک گذاشته می‌شود، نشت می‌دهد. برای OFB و CTR، استفاده مجدد از یک آی‌وی امنیت را به طور کامل از بین می‌برد. در مود CBC، هچنین آی‌وی بایستی در زمان رمزگذاری غیرقابل پیشبینی باشد؛ به طور خاص، عمل (سابقا) رایج استفاده مجدد از آخرین قطعه متن رمزشده پیغام به عنوان آی‌وی برای پیغام جدید ناامن است (به طور مثال این متد توسط SSL 2.0 استفاده می‌شد). اگر یک مهاجم پیش از آنکه متن آشکار بعدی را مشخص کند؛ آی‌وی را بداند (یا قطعه قبلی متن رمزشده را)، او می‌تواند حدس خود را درباره متن آشکار برخی از قطعه‌ها که با همان کلید قبلا رمز شده بودند، امتحان کند (این حمله به نام حمله TLS CBC IV شناخته می‌شود).

به عنوان یک مورد خاص، اگر متن‌های آشکار همیشه به اندازه کافی کوچک باشند که در یک قطعه جا شوند (بدون افزونگی‌گذاری)، آنگاه در برخی از مودها (EBC، CBC، PCBC)، استفاده مجدد از آی‌وی تنها دو متن آشکار یکسان را نشت می‌دهد. این مسئله می‌تواند در مواردی مفید باشد که کسی امید دارد بتواند بدون رمزگشایی یا ذخیره کردن یک درهم ساز به طور جداگانه، شباهت را تست کند

افزونگی گذاری[ویرایش]

یک رمز قطعه‌ای بر روی واحدهایی با اندازه ثابت(معروف به اندازه قطعه) عمل می‌کنند، اما پیغام‌ها در اندازه‌های متفاوتی از راه می‌رسند. بنابراین برخی از مدها (برای مثال ECB و CBC) نیازمند این هستند که قطعه آخر پیش از رمزگذاری افزونگی گذاری شود. چندین افزونگی گذاری نشان دهنده پایان کار است. ساده ترین روش این است که بایت‌های تهی را به متن آشکار اضافه کنیم تا زمانیکه طولش مضربی از اندازه قطعه شود، اما باید دقت شود که طول اصلی متن آشکار می‌تواند بدست آید. مانند این است که، به طور مثال، اگر متن آشکاری یک رشته به سبک C باشد، شامل هیچ بایت تهی نباشد مگر در انتهای آن. متد اصلی DES قدری پیچیده تر از این است. این متد یک تک بیت به دنبال تعداد کافی بیت صفر برای پر کردن قطعه اضافه می‌کند؛ اگر پیغام در انتهای قطعه تمام شود، یک قطعه افزونگی گذاری کامل اضافه خواهد شد. پیچیده ترین‌ها طرح‌های CBC ویژه هستند از جمله سرقت متن رمزشده یا پایان دهی قطعه باقی مانده، که هیچ متن رمزشده اضافی در هزینه برخی از پیچیدگی‌های اضافی ایجاد نمی‌کند. بروس اشنایر و نیلز فرگوسن ۲ امکان را پیشنهاد دادند، هر دو ساده: الحاق یک بایت با ارزش ۱۲۸ (هگزادسیمال ۸۰) به دنبال تعداد کافی بایت‌های صفر که برای پر مردن قطعه آخر مورد نیاز است، یا بسط دادن قطعه آخر با n بایت که ارزش همگی n باشد.

مدهای CFB، OFB و CTR برای کار کردن با پیغام‌هایی که طولشان مضربی از اندازه قطعه نیست، نیازی به تدابیر ویژه‌ای ندارند، زیرا این مدها به وسیله XOR کردن متن آشکار با خروجی قطعه رمز عمل می‌کنند. آخرین قسمت قطعه متن آشکار XOR شده که با اولین چند بایت آخرین قطعه جریان کلید[۴]، یک قطعه متن رمزشده نهایی را تولید می‌کند که با آخرین قسمت قطعه متن آشکار هم اندازه‌است. این خصوصیت رمزگذاری جریانی آن‌ها را برای برنامه‌های کاربردی ای که مستلزم برابری اندازه داده متن رمزشده رمزگذاری و داده متن آشکار اصلی هستند، و برنامه‌های کاربردی ای که داده را در جایی که اضافه کردن بایت‌های افزونگی ناخوشایند است، به صورت جریانی انتقال می‌دهند، مناسب کرده‌است.

رمزنامه الکترونیکی[ویرایش]

ساده‌ترین مود رمزنگاری مود رمزنامه الکترونیکی (ای‌سی‌بی، ECB) است. پیغام به قطعه‌ها شکسته می‌شود و هر قطعه به طور جداگانه رمزگذاری می‌شود.

Ecb encryption.png
Ecb decryption.png

نقطه ضعف این متد این است که قطعه‌های یکسان متن آشکار به قطعه‌های رمز شده یکسانی تبدیل می‌شوند. ؛ بنابراین، الگوی داده‌ای را به خوبی پنهان نمی‌کند. در برخی موارد، محرمانه بودن پیام‌های مهم را فراهم نمی‌کند. از این رو این متد برای استفاده در پروتکل‌های رمزنگاری به هیج وجه توصیه نمی‌شود.

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

تصویر اصلی
رمزگذاری شده توسط مد ای‌سی‌بی
مدهای دیگری به جز ای‌سی‌بی
تصویر سمت راست نشان می‌دهد که تصویر در صورت رمز شدن با CBC، CTR یا دیگر انواع مدهای امن تر چگونه به نظر خواهد رسید -- غیر قابل تشخیص از نویز. توجه داشته باشید که نمایش تصادفی تصویر در سمت راست این اطمینان را نمی‌دهد که تصویر کاملا امن رمزگذاری شده‌است؛ بسیاری از انواع رمزگذاری غیر امن دیگر نیز طوری طراحی شده‌اند که می‌توانند خروجی تولید کنند که کاملا شبیه حالت تصادفی به نظر برسد. '.

مد ای‌سی‌بی همچنین می‌تواند پروتکل‌هایی بدون حفظ صحت را فراهم کند که بیشتر به حمله تکرار حساس هستند، چراکه هر قطعه دقیقا به طریق یکسانی رمزگشایی می‌شود. به طور مثال، بازی ویدئویی آنلاین «دنیای فانتزی ستاره: انفجار آبی» از بلوفیش در مد ای‌سی‌بی استفاده می‌کند. پیش از آنکه کلید جابجا شود سیستم به روش‌های بسیار ساده‌ای شکسته شده بود، متقلبان بسته پیغام رمزشده «غول کشته شد» را، هرکدام به صورت یک قطعه رمزشده بلوفیش، برای بدست آوردن سریع و غیرمشروع امتیاز متربا تکرار می‌کردند.

زنجیره رمز-قطعه[ویرایش]

IBM مد عمل زنجیره رمز-قطعه (CBC) را در سال ۱۹۷۶ اختراع کرد. در مد CBC، هر قطعه از متن آشکار را با قطعه رمزشده مقدم که قبلا رمز شده‌است XOR می‌کند. به این صورت، هر قطعه رمزشده به تمام قطعات متن آشکاری که تا آن نقطه تولید شده‌اند وابسته‌است. برای منحصربفرد کردن هر پیغام، یک بردار اولیه باید در قطعه اول استفاده شود.

Cbc encryption.png
Cbc decryption.png

اگر قطعه اول اندیس ۱ داشته باشد، فرمول ریاضی رمزگذاری CBC این گونه‌است:

C_i = E_K(P_i \oplus C_{i-1}), C_0 = IV

در حالیکه فرول ریاضی برای رمزگشایی CBC این گونه‌است

P_i = D_K(C_i) \oplus C_{i-1}, C_0 = IV.

CBC متداول ترین مد عملی است که استفاده می‌شود. بزرگ ترین مشکلاتش این است که رمزگذاری ترتیبی است (به عنوان مثال نمی‌تواند موازی انجام شود)، و این که پیغام باید به مضربی از اندازه قطعه رمزشده افزونگی شود. راهی برای مواجه با مسئله آخری پیش می‌گیرند استفاده از روشی با نام سرقت متن رمزشده[۵] شناخته می‌شود. توجه داشته باشید که تغییر تنها یک بیت در متن آشکار یا بردار اولیه بر روی تمام قطعه‌های متن رمزشده بعدی تاثیر می‌گذارد. رمزگشایی با بردار اولیه نادرست اولین قطعه متن آشکار را خراب می‌کند اما قطعه‌های بعدی متن آشکار صحیح خواهند بود. این به این خاطر است که یک قطعه متن آشکار می‌تواند توسط دو قطعه مجاور متن رمزشده بازیابی شود. در نتیجه، رمزگشایی می‌تواند موازی انجام شود. توجه داشته باشید که تغییر تنها یک بیت از متن رمزشده موجب خراب شدن تمام قطعات مربوط به متن آشکار شود، و بیت مربوط به قطعه بعدی متن آشکار را معکوس می‌کند اما باقی قطعه‌های دست نخورده باقی می‌مانند.

انتشار زنجیری رمز-قطعه (PCBC)[ویرایش]

مد انتشار زنجیره رمز-قطعه یا زنجیره رمز-قطعه متن آشکار طراحی شد تا موجب تغییرات کوچکی در متن رمزشده برای انتشار نامحدود در هنگام رمزگشایی، همچنین در هنگام رمزگذاری شود.

Pcbc encryption.png
Pcbc decryption.png

الگوریتم رمزگذاری و رمزگشایی در ادامه آمده‌است:

C_i = E_K(P_i \oplus P_{i-1} \oplus C_{i-1}), P_0 \oplus C_0 = IV
P_i = D_K(C_i) \oplus P_{i-1} \oplus C_{i-1}, P_0 \oplus C_0 = IV

مهم ترین پروتکل‌هایی که PCBC در آن استفاده می‌شود نسخه ۴ پروتکل Kerberos و پروتکل WASTE است اما در موارد دیگر چندان رایج نیست. در پیغامی که با مد PCBC رمزگذاری شود، اگر دو قطعه متن رمزشده مجاور تغییر کنند، بر روی رمزگشایی سایر قطعه تاثیری نخواهد داشت. به همین دلیل از PCBC در نسخه ۵ پروتکل Kerberos استفاده نشده‌است.

بازخورد رمز (CFB)[ویرایش]

مد بازخورد رمز (CFB) بسیار شبیه CBC است، یک قطعه رمزگذاری را به یک رمزگذاری جریانی[۶] خود-همگام‌ساز تبدیل می‌کند. عملگر نیز بسیار شبیه‌است، در واقع رمز گذاری CFB را به عنوان رمزگذاری CBC برعکس می‌شناسد:

C_i = E_K (C_{i-1}) \oplus P_i
P_i = E_K (C_{i-1}) \oplus C_i
C_{0} = \ \mbox{IV}
Cfb encryption.png
Cfb decryption.png

در بالا ساده ترین روش استفاده از CFB توضیح داده شد که مانند دیگر مدهای رمزنگاری مانند CBC شامل خود-همگام سازی نیست. اگر کل یک قطعه از متن رمزشده گم شود هم CBC و هم CFB می‌توانند همگام شوند، اما اگر تنها یک بایت یا بیت گم شود دائما رمزگشایی را دور می‌اندازد! برای اینکه با گم شدن تنها یک بایت یا بیت قادر به همگام سازی باشد، یک تک بایت یا بیت باید در یک زمان رمزگذاری شوند. CFB هنگامی می‌تواند به این شکل استفاده شود که با یک ثبات چرخشی[۷] به عنوان ورودی برای قطعه رمز ترکیب شود.

منابع و پانویس‌ها[ویرایش]