کد اصالت سنجی پیام نوعی از ریاضیات کاربردی است.
در رمزنگاری، یک **کد اصالت سنجی پیام** یا **کد احراز هویت پیام** (به انگلیسی: MAC، کوته‌نوشت Message authentication code) عبارتست از تکهٔ کوچکی از اطلاعات که برای اصالت سنجی یک پیام استفاده می‌شود.

یک الگوریتم MAC - که گاهی تابع درهم ساز رمزنگاری شده نامیده می‌شود - یک کلید رمز و یک پیام دلخواه را به عنوان ورودی برای اصالت سنجی دریافت می‌کند و یک MAC را – که گاهی از آن به عنوان برچسب نیز یاد می‌شود – به عنوان خروجی تحویل می‌دهد.

مقدار MAC هم‌زمان از صحت دادهٔ پیام و اصالت آن محافظت می‌کند. بدین ترتیب که فرد دارای کلید رمز می‌تواند هرگونه تغییرات را در محتوای پیام تشخیص دهد.

امنیت
-----

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

الگوریتم MAC با امضای دیجیتال تفاوت دارد، چرا که مقادیر MAC تولید شده توسط فرستنده و گیرنده تنها با استفاده از یک کلید ایجاد می‌شود. و این بدان معناست که فرستنده و گیرنده باید پیش از برقرار کردن ارتباط، روی یک کلید یکتا توافق کنند، همان‌طور که در رمزگذاری متقارن انجام می‌شود. به همین دلیل، MAC ویژگی عدم انکار را - که توسط امضای دیجیتال برای کلید رمز به اشتراک گذاشته شده در سطح شبکه ارائه می‌شود، پشتیبانی نمی‌کند: هر کاربر که بتواند یک MAC را راستی آزمایی کند، می‌تواند برای دیگر پیام‌ها نیز MAC تولید کند. در مقابل، یک امضای دیجیتال با استفاده از کلید خصوصی تولید می‌شود، که رمزگذاری نامتقارن می‌باشد. از آنجا که به این کلید خصوصی فقط دارندهٔ آن دسترسی دارد، امضای دیجیتال ثابت می‌کند که یک سند توسط همان دارندهٔ کلید خصوصی امضا شده است؛ بنابراین امضای دیجیتال از ویژگی عدم انکار پشتیبانی می‌نماید.

کدهای صحت پیام
--------------

عبارت کد صحت پیام (MIC) اغلب و مخصوصاً در ارتباطات – جایی که MAC به عنوان سرنام Media Access Control استفاده می‌شود - به جای MAC به کار برده می‌شود. گرچه برخی از نویسندگان MIC را با معنایی متفاوت از MAC به کار می‌برند؛ در استفاده آن‌ها از عبارت MIC، از کلیدهای رمز استفاده نمی‌شود. این کمبود بدین معناست که هر MIC مورد نظر برای سنجش صحت پیام باید رمزگذاری شود یا در غیر این صورت در برابر مداخلات محافظت شود. الگوریتم‌های MIC چنین هستند که اگر یک پیام چندین بار به آن‌ها داده شود، با فرض استفاده از همان الگوریتم، همواره یک MIC تولید می‌شود. برعکس، الگوریتم‌های MAC این‌گونه طراحی شده‌اند که برای یک پیام واحد، همان کلید رمز و همان بردار ارزش دهی اولیه، همان الگوریتم MAC یکسان تولید کند.

الگوریتم MIC از کلیدهای رمز استفاده نمی‌کند، بنابراین نسبت به MAC قابلیت اعتماد بسیار کمتری برای صحت پیام ایجاد می‌کند.

از آنجا که MAC از کلیدهای رمز استفاده می‌کند، لزوماً برای ارائهٔ همان سطح از اطمینان، نیاز به رمزگذاری ندارد.

پیاده‌سازی
----------

الگوریتم‌های MAC را می‌توان از روی دیگر بنیان‌های رمزنگاری ایجاد کرد مثل توابع درهم ساز رمزنگاری (HMAC) یا الگوریتم‌های قطعه رمز (OMAC, CBC-MAC , PMAC). اگر چه بسیاری از الگوریتم‌های MAC سریع مانند UMAC و VMAC بر مبنای درهم‌سازی جهانی (universal hashing) ساخته شده‌اند.

استانداردها
-----------

استانداردهای گوناگونی وجود دارد که الگوریتم‌های MAC را تعریف می‌کنند. مانند:

* FIPS PUB 113 اصالت سنجی دادهٔ کامپیوتری – الگوریتمی بر مبنای DES تعریف می‌کند.
* ISO/IEC 9797-1 مکانیزم‌هایی که از یک قطعه رمز استفاده می‌کنند.
* ISO/IEC 9797-2 مکانیزم‌هایی که از یک تابع درهم ساز اختصاصی استفاده می‌کنند.

استانداردهای ISO/IEC 9797-1 و ISO/IEC 9797-2 مدل‌ها و الگوریتم‌های عمومی را تعریف می‌کنند که با هر قطعه رمز یا تابع درهم ساز و طیف گسترده‌ای از پارامترهای مختلف، می‌توانند مورد استفاده قرار گیرند. این مدل‌ها و پارامترها امکانی را فراهم می‌کنند که الگوریتم‌های بسیار دقیق با انتصاب پارامترها تعریف شوند. برای مثال، الگوریتم FIPS PUB 113 از لحاظ عملی برابر است با ISO/IEC 9797-1، الگوریتم MAC 1 با روش پوشش ۱ و یک الگوریتم قطعه رمز DES.

منابع
-----

1. IEEE 802.11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications
2. Fred B Schneider, Hashes and Message Digests, Cornell University
3. FIPS PUB 113 Computer Data Authentication
4. Federal Information Processing Standards Publications, Withdrawn
5. FIPS Listed by Number

پیام به همراه کد به گیرنده مورد نظر ارسال می‌شود.

منابع
-----

1. ↑  استالینگز، ویلیام. *مبانی امنیت شبکه*. علوم رایانه. شابک ۹۷۸-۹۶۴-۸۹۹۶-۳۸-۸. پارامتر `|تاریخ بازیابی=` نیاز به وارد کردن `|پیوند=` دارد (کمک)