کد اصالت‌سنجی پیام سی‌بی‌سی
امنیت پیام‌های با طول ثابت و متغیّر > استفاده از کلید یکسان برای رمزنگاری و اصالت‌سنجی

یک اشتباه متداول استفادۀ مجدد از کلید  k برای رمزنگاری CBC و CBC-MAC است. گرچه در حالت کلّی استفادۀ مجدد از یک کلید برای اهداف متفاوت تکنیک نامناسبی است، در این حالت خاص این اشتباه به حملۀ اعجاب‌انگیزی می‌انجامد:
فرض کنید Alice می‌خواهد قالب‌های رمزشدۀ  C=C_{1}\ ||\ C_{2}\ ||\ \dots \ ||\ C_{n} را به Bob بفرستد. در حین فرآیند انتقال، Eve می‌تواند در هر یک از قالب‌های رمزشدۀ  C_{1},\dots ,C_{n-1} تغییر ایجاد کند و هر یک از بیت‌های آن را به انتخاب خود تغییر دهد، به طوری که آخرین قالب،  C_{n}، دست‌نخورده باقی بماند. بدون لطمه‌خوردن به کلیّت مسئله و برای تأمین اهداف این مثال فرض می‌کنیم بردار اولیه که در فرآیند رمزنگاری مورد استفاده قرار گرفته یک بردار تمام صفر است.
Bob پیام را دریافت می‌کند و ابتدا آن را با معکوس کردن فرآیند رمزنگاری که Alice اعمال کرده روی قالب‌های رمزشدۀ  C=C_{1}\ ||\ C_{2}\ ||\ \cdots \ ||\ C_{n} رمزگشایی می‌کند. در حین فرآیند انتقال، Eve می‌تواند در هر یک از قالب‌های رمزشدۀ  C_{1},\dots ,C_{n-1} تغییر ایجاد کند و هر یک از بیت‌های آن را به انتخاب خود تغییر دهد، به طوری که آخرین قالب، ٰ C_{n}، دست‌نخورده باقی بماند. سپس نسخۀ تغییر یافتۀ او، به‌جای نسخۀ اصلی Alice به Bob تحویل داده می‌شود.
Bob ابتدا پیامی که دریافت کرده را با استفاده از کلید مخفی به اشتراک گذاشته شدۀ  K رمزگشایی می‌کند و متن متناظر با آن را به دست می‌آورد. توجه کنید که همۀ متن به دست آمده با نسخۀ اصلی که Alice فرستاده متفاوت خواهد بود، زیرا Eve همۀ متن رمز شده به جز آخرین قالب آن را تغییر داده است. به بیان دقیق‌تر، متن نهایی،  P_{n}'، با متن اصلی که Alice فرستاده،  P_{n}، متفاوت است؛ با وجود یکسان‌بودن  C_{n}،  C_{n-1}'\not =C_{n-1} است و در نتیجه با XOR کردن قالب رمز شدۀ قبلی با رمز گشایی شدۀ  C_{n} متن متفاوت به  P_{n}' دست می‌آید:  P_{n}'=C_{n-1}'\oplus E_{K}^{-1}(C_{n}).
سپس Bob برچسب اصالت‌سنجی همۀ متن‌هایی که رمزگشایی کرده‌است را با استفاده از CBC-MAC محاسبه می‌کند. برچسب پیام جدید،  t'، برابر است با:
t'=E_{K}(P_{n}'\oplus E_{K}(P_{n-1}'\oplus E_{K}(\dots \oplus E_{K}(P_{1}'))))
توجه کنید که این عبارت معادل است با:
t'=E_{K}(P_{n}'\oplus C_{n-1}')
که همان  C_{n} است:
t'=E_{K}(C_{n-1}'\oplus E_{K}^{-1}(C_{n})\oplus C_{n-1}')=E_{K}(E_{K}^{-1}(C_{n}))=C_{n}
در نتیجه داریم:  t'=C_{n}=t.
دیدیم که Eve توانست متن رمزشده را در حین انتقال تغییر دهد (بدون اینکه لزومأ اطّلاعی از متن اصلی متناظر با آن داشته باشد) به طوری که یک پیام کاملأ متفاوت،  P'، تولید شود که برچسب این پیام با برچسب پیام اصلی مطابقت می‌کرد و Bob از این که محتویات پیام در فرایند انتقال تغییر کرده اطلاعی نداشت. طبق تعریف، یک کد اصالت‌سنجی پیام آسیب دیده‌است اگر بتوانیم یک پیام متفاوت (یک دنباله از زوج متن‌های  P') که همان برچسب پیام قبلی،  P، را تولید می‌کند بیابیم به طوری که  P\not =P' باشد. بدین ترتیب پروتکل اصالت‌سنجی پیام آسیب دیده‌است و Bob فریب داده شده و باور می‌کند که Alice پیامی برای او فرستاده است در حالی که Alice پیام را تولید نکرده‌است.
اگر در عوض از کلیدهای متفاوت  K_{1} و  K_{2} برای مراحل رمزنگاری و اصالت‌سنجی استفاده کنیم، این حمله خنثی می‌شود. از رمزگشایی بلوک‌های رمز شدۀ تغییر یافتۀ  C_{i}' رشتۀ متن  P_{i}' به دست می‌آید. به هر حال، به علت استفادۀ MAC از یک کلید متفاوت  K_{2}، نمی‌توانیم فرایند رمزگشایی را در مرحلۀ بعدی محاسبۀ کد اصالت‌سنجی پیام خنثی کنیم و همان برچسب را تولید کنیم؛ اکنون هر  P_{i}' تغییر یافته به وسیلۀ  K_{2} در فرایند CBC-MAC به  MAC_{i}\not =C_{i}' رمز می‌شود.
این مثال هم‌چنین نشان می‌دهد که یک CBC-MAC نمی‌تواند به عنوان یک تابع یک طرفۀ مقاوم در برابر برخورد مورد استفاده قرار گیرد: در صورتی که کلید داده شده باشد به سادگی می‌توان پیام متفاوتی تولید کرد که به همان برچسب فشرده شود.