در رمزنگاری، یک کد اصالت سنجی زنجیره رمز - قطعه ( CBC - MAC ) یک روش ساخت کد اصالت سنجی پیام از یک رمز قالبی است. در این روش پیام با استفاده از یک الگوریتم رمز قالبی در مد CBC رمز می شود و زنجیره ای از قالب ها به وجود می آورد به طوری که هر قالب به رمزنگاری صحیح قالب قبلی وابسته است. این وابستگی داخلی تضمین می کند که تغییر هر یک از بیت های متن اصلی باعث ایجاد تغییری در آخرین قالب رمز شده می شود که نمی توان بدون اطلاع از کلید رمز قالبی آن را پیش بینی یا خنثی کرد.
برای محاسبۀ CBC - MAC پیام m آن را در مد CBC با بردار اولیه صفر رمز می کنیم. شکل زیر محاسبۀ CBC - MAC یک پیام شامل قالب های m 1 ‖ m 2 ‖ ⋯ ‖ m x را با استفاده از کلید مخفی k و رمز قالبی E نشان می دهد.
در صورتی که رمز قالبی مورد استفاده امن باشد ( به عبارت دیگر یک جایگشت شبه تصادفی باشد ) ، CBC - MAC برای پیام های با طول ثابت امن خواهد بود. اما در حالت کلی، برای پیام های با طول متغیر امن نیست. به همین دلیل، هر کلید باید تنها برای پیام های با طول ثابت و مشخّص مورد استفاده قرار گیرد. دلیل این امر این است که مهاجمی که زوج های صحیح پیام - برچسب ( همان CBC - MAC ) دو پیام ( m , t ) و ( m ′ , t ′ ) را می داند می تواند پیام سوم m ″ را به گونه ای تولید کند که MAC آن نیز t ′ باشد. این کار به سادگی با XOR کردن اولین قالب m ′ با t و سپس الحاق m و m ′ تغییر یافته و تولید m ″ = m ‖ انجام می شود. هنگام محاسبۀ MAC پیام m ″ ، MAC پیام m را به روش عادی برابر t محاسبه می کنیم و در مرحلۀ محاسبۀ E K M A C ( m 1 ′ ⊕ t ) آن را با مقدار MAC اولین پیام XOR می کنیم. حضور این برچسب در پیام جدید باعث از بین رفتن کامل اثر MAC قالب های پیام m می شود: E K M A C ( m 1 ′ ⊕ t ⊕ t ) = E K M A C ( m 1 ′ ) و در نتیجه برچسب پیام m ″ برابر t ′ است.
این مشکل را نمی توان با اضافه کردن قالب طول پیام به انتهای قالب ها حل کرد. سه راه حل اصلی اصلاح CBC - MAC و امن ساختن آن برای پیام های با طول متغیّر عبارتند از: ۱ ) جداسازی کلید ورودی - طول ۲ ) الحاق طول به ابتدای قالب ها ۳ ) رمز کردن آخرین قالب. در این حالت، هم چنین توصیه می شود که از مد عملیات متفاوتی، برای مثال، CMAC یا HMAC برای حفظ صحت و جامعیّت پیام های با طول متغیّر استفاده شود.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفبرای محاسبۀ CBC - MAC پیام m آن را در مد CBC با بردار اولیه صفر رمز می کنیم. شکل زیر محاسبۀ CBC - MAC یک پیام شامل قالب های m 1 ‖ m 2 ‖ ⋯ ‖ m x را با استفاده از کلید مخفی k و رمز قالبی E نشان می دهد.
در صورتی که رمز قالبی مورد استفاده امن باشد ( به عبارت دیگر یک جایگشت شبه تصادفی باشد ) ، CBC - MAC برای پیام های با طول ثابت امن خواهد بود. اما در حالت کلی، برای پیام های با طول متغیر امن نیست. به همین دلیل، هر کلید باید تنها برای پیام های با طول ثابت و مشخّص مورد استفاده قرار گیرد. دلیل این امر این است که مهاجمی که زوج های صحیح پیام - برچسب ( همان CBC - MAC ) دو پیام ( m , t ) و ( m ′ , t ′ ) را می داند می تواند پیام سوم m ″ را به گونه ای تولید کند که MAC آن نیز t ′ باشد. این کار به سادگی با XOR کردن اولین قالب m ′ با t و سپس الحاق m و m ′ تغییر یافته و تولید m ″ = m ‖ انجام می شود. هنگام محاسبۀ MAC پیام m ″ ، MAC پیام m را به روش عادی برابر t محاسبه می کنیم و در مرحلۀ محاسبۀ E K M A C ( m 1 ′ ⊕ t ) آن را با مقدار MAC اولین پیام XOR می کنیم. حضور این برچسب در پیام جدید باعث از بین رفتن کامل اثر MAC قالب های پیام m می شود: E K M A C ( m 1 ′ ⊕ t ⊕ t ) = E K M A C ( m 1 ′ ) و در نتیجه برچسب پیام m ″ برابر t ′ است.
این مشکل را نمی توان با اضافه کردن قالب طول پیام به انتهای قالب ها حل کرد. سه راه حل اصلی اصلاح CBC - MAC و امن ساختن آن برای پیام های با طول متغیّر عبارتند از: ۱ ) جداسازی کلید ورودی - طول ۲ ) الحاق طول به ابتدای قالب ها ۳ ) رمز کردن آخرین قالب. در این حالت، هم چنین توصیه می شود که از مد عملیات متفاوتی، برای مثال، CMAC یا HMAC برای حفظ صحت و جامعیّت پیام های با طول متغیّر استفاده شود.
