موضوع مقاله: کد اصالت‌سنجی پیام سی‌بی‌سی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # کد اصالت‌سنجی پیام سی‌بی‌سی | مقدمه: در رمزنگاری، یک کد اصالت‌سنجی زنجیره رمز-قطعه (CBC-MAC) یک روش ساخت کد اصالت‌سنجی پیام از یک رمز قالبی است. | ## بخش 1: کد اصالت‌سنجی پیام سی‌بی‌سی | در این روش پیام با استفاده از یک الگوریتم رمز قالبی در مد CBC رمز می‌شود و زنجیره‌ای از قالب‌ها به وجود می‌آورد به طوری که هر قالب به رمزنگاری صحیح قالب قبلی وابسته است. این وابستگی داخلی تضمین می‌کند که تغییر هر یک از بیت‌های متن اصلی باعث ایجاد تغییری در آخرین قالب رمز شده می‌شود که نمی‌توان بدون اطلاع از کلید رمز قالبی آن را پیش‌بینی یا خنثی کرد. شکل زیر محاسبۀ CBC-MAC یک پیام شامل قالب‌های را با استفاده از کلید مخفی و رمز قالبی نشان می‌دهد. به همین دلیل، هر کلید باید تنها برای پیام‌های با طول ثابت و مشخّص مورد استفاده قرار گیرد. دلیل این امر این است که مهاجمی که زوج‌های صحیح پیام-برچسب (همان CBC-MAC) دو پیام و را می‌داند می‌تواند پیام سوم را به گونه‌ای تولید کند که MAC آن نیز باشد. این کار به سادگی با XOR کردن اولین قالب با و سپس الحاق و تغییر یافته و تولید انجام می‌شود. حضور این برچسب در پیام جدید باعث از بین رفتن کامل اثر MAC قالب‌های پیام می‌شود: و در نتیجه برچسب پیام برابر است. سه راه‌حل اصلی اصلاح CBC-MAC و امن ساختن آن برای پیام‌های با طول متغیّر عبارتند از: ۱)جداسازی کلید ورودی-طول ۲)الحاق طول به ابتدای قالب‌ها ۳)رمز کردن آخرین قالب. در این حالت، هم‌چنین توصیه می‌شود که از مد عملیات متفاوتی، برای مثال، CMAC یا HMAC برای حفظ صحت و جامعیّت پیام‌های با طول متغیّر استفاده شود. الحاق طول به ابتدای قالب‌ها یک راه قرار دادن طول پیام در اولین قالب است؛ ثابت شده‌است که CBC-MAC تا وقتی که دو پیامی که پیشوند یکدیگر هستند استفاده نشوند امن است و الحاق طول به ابتدای قالب‌ها حات خاص آن است. این مسئله در حالتی که طول پیام در آغاز محاسبات نامعلوم است می‌تواند گیج‌کننده باشد. در مقایسه با بقیۀ روش‌های توسعۀ CBC-MAC به پیام‌های با طول متغیر که بیان شد، رمز کردن آخرین قالب دارای این مزیت است که نیازی به دانستن طول پیام تا پایان محاسبات نیست. روش‌های حمله هم‌چون بسیاری از طرح‌های رمزنگاری، استفاده خام از رمزها و دیگر پروتکل‌ها حملات را ممکن می‌سازد، که باعث کاهش کارایی حفاظت رمزنگاری (یا حتی بلااستفاده ساختن آن) می‌شود. ما در این‌جا حملاتی که به علّت استفادۀ نادرست از CBC-MAC ممکن می‌شوند را بیان می‌کنیم. | ## بخش 2: کد اصالت‌سنجی پیام سی‌بی‌سی | استفاده از کلید یکسان برای رمزنگاری و اصالت‌سنجی یک اشتباه متداول استفادۀ مجدد از کلید برای رمزنگاری CBC و CBC-MAC است. گرچه در حالت کلّی استفادۀ مجدد از یک کلید برای اهداف متفاوت تکنیک نامناسبی است، در این حالت خاص این اشتباه به حملۀ اعجاب‌انگیزی می‌انجامد: فرض کنید Alice می‌خواهد قالب‌های رمزشدۀ را به Bob بفرستد. در حین فرآیند انتقال، Eve می‌تواند در هر یک از قالب‌های رمزشدۀ تغییر ایجاد کند و هر یک از بیت‌های آن را به انتخاب خود تغییر دهد، به طوری که آخرین قالب، ، دست‌نخورده باقی بماند. بدون لطمه‌خوردن به کلیّت مسئله و برای تأمین اهداف این مثال فرض می‌کنیم بردار اولیه که در فرآیند رمزنگاری مورد استفاده قرار گرفته یک بردار تمام صفر است. Bob پیام را دریافت می‌کند و ابتدا آن را با معکوس کردن فرآیند رمزنگاری که Alice اعمال کرده روی قالب‌های رمزشدۀ رمزگشایی می‌کند. در حین فرآیند انتقال، Eve می‌تواند در هر یک از قالب‌های رمزشدۀ تغییر ایجاد کند و هر یک از بیت‌های آن را به انتخاب خود تغییر دهد، به طوری که آخرین قالب، ٰ، دست‌نخورده باقی بماند. Bob ابتدا پیامی که دریافت کرده را با استفاده از کلید مخفی به اشتراک گذاشته شدۀ رمزگشایی می‌کند و متن متناظر با آن را به دست می‌آورد. توجه کنید که همۀ متن به دست آمده با نسخۀ اصلی که Alice فرستاده متفاوت خواهد بود، زیرا Eve همۀ متن رمز شده به جز آخرین قالب آن را تغییر داده است. به بیان دقیق‌تر، متن نهایی، ، با متن اصلی که Alice فرستاده، ، متفاوت است؛ با وجود یکسان‌بودن ، است و در نتیجه با XOR کردن قالب رمز شدۀ قبلی با رمز گشایی شدۀ متن متفاوت به دست می‌آید: . برچسب پیام جدید، ، برابر است با: توجه کنید که این عبارت معادل است با: که همان است: در نتیجه داریم: . دیدیم که Eve توانست متن رمزشده را در حین انتقال تغییر دهد (بدون اینکه لزومأ اطّلاعی از متن اصلی متناظر با آن داشته باشد) به طوری که یک پیام کاملأ متفاوت، ، تولید شود که برچسب این پیام با برچسب پیام اصلی مطابقت می‌کرد و Bob از این که محتویات پیام در فرایند انتقال تغییر کرده اطلاعی نداشت. طبق تعریف، یک کد اصالت‌سنجی پیام آسیب دیده‌است اگر بتوانیم یک پیام متفاوت (یک دنباله از زوج متن‌های ) که همان برچسب پیام قبلی، ، را تولید می‌کند بیابیم به طوری که باشد. اگر در عوض از کلیدهای متفاوت و برای مراحل رمزنگاری و اصالت‌سنجی استفاده کنیم، این حمله خنثی می‌شود. به هر حال، به علت استفادۀ MAC از یک کلید متفاوت ، نمی‌توانیم فرایند رمزگشایی را در مرحلۀ بعدی محاسبۀ کد اصالت‌سنجی پیام خنثی کنیم و همان برچسب را تولید کنیم؛ اکنون هر تغییر یافته به وسیلۀ در فرایند CBC-MAC به رمز می‌شود. | ## بخش 3: کد اصالت‌سنجی پیام سی‌بی‌سی | این مثال هم‌چنین نشان می‌دهد که یک CBC-MAC نمی‌تواند به عنوان یک تابع یک طرفۀ مقاوم در برابر برخورد مورد استفاده قرار گیرد: در صورتی که کلید داده شده باشد به سادگی می‌توان پیام متفاوتی تولید کرد که به همان برچسب فشرده شود. بردار اوّلیه با مقادیر متغیّر منگام رمزنگاری داده با استفاده از یک رمز قالبی در مد زنجیره رمز-قطعه (یا مد دیگر)، به طور معمول یک بردار اولیه برای اولین مرحلۀ فرایند رمزنگاری معرفی می شود. به طور معمول لازم است که این بردار به طور تصادفی انتخاب شود و برای هیچ کلید مخفی داده شده که رمز قالبی تحت آن عمل می‌کند تکرار نشود. این شرایط با تضمین این‌که متن‌های یکسان به متن‌های رمزشدۀ یکسان رمز نمی‌شوند امنیت معنایی را برقرار می‌سازد و به مهاجم اجازه می‌دهد استنباط کند که رابطه‌ای وجود دارد. هنگام محاسبۀ کد اصالت‌سنجی پیام، مثلأ به وسیلۀ CBC-MAC، استفاده از یک بردار اولیه یک بردار حملۀ ممکن است. به هر حال، هنگام اجرای رمزنگاری و رمزگشایی، مستلزمیم بردار اولیه را در متن بفرستیم - معمولاً به عنوان قالبی که بلافاصله قبل از اولین قالب رمزشده می‌آید - به طوری که اولین قالب متن با موفقیت رمزگشایی و بازیابی می شود. هنگام محاسبۀ MAC، مستلزمیم بردار اولیه اولیه را در متن به طرف مقابل بفرستیم که آن‌ها بتوانند تحقیق کنند که برچسب پیام با مقداری که محاسبه کرده‌اند مطابقت می‌کند. اگر اجازه بدهیم بردار اولیه به طور دلخواه انتخاب شود، اولین قالب متن می‌تواند تغییر کند (و پیام متفاوتی قرستاده شود) ولی همان برچسب را تولید کند. هنگام محاسبۀ برچسب پیام برای CBC-MAC، فرض کنید بردار اولیۀ را به گونه‌ای انتخاب می‌کنیم که محاسبۀ MAC با شروع شود. برای هر بیت تغییر یافته در ، بیت متناظر با آن در بردار اولیه را تغییر می‌دهیم تا بردار اولیۀ تولید شود. از آن‌جا که بیت‌های متن اصلی و بردار اولیه در مکان‌های یکسان تغییر کرده‌اند، تغییر در مرحلۀ اول خنثی می شود، با این معنا که ورودی رمز قالبی همان خواهد بود. اکر آزادی انتخاب بردار اولیه حذف شود و همۀ اجراهای CBC-MAC روی یک بردار اولیۀ خاص ثابت شوند (معمولاً یک بردار تمام صفر، اما در تئوری، هر چیزی می‌تواند باشد مشروط بر این‌که با همۀ پیاده‌سازی‌ها سازگار باشد)، این حمله نمی‌تواند پیشروی کند. | ## جمع‌بندی | استاندارد‌هایی که الگوریتم را تعریف می‌کنند اصالت‌سنجی داده‌های کامپیوتری یک (هم‌اکنون منسوخ) یک استاندارد دولت آمریکاست که الگوریتم CBC-MAC را با استفاده از DES به‌عنوان رمز‌قالبی تعیین می‌کند.