کد اصالت‌سنجی پیام
در رمزنگاری، یک کد اصالت سنجی پیام یا کد احراز هویت پیام عبارتست از تکهٔ کوچکی از اطلاعات که برای اصالت سنجی یک پیام استفاده می‌شود.
یک الگوریتم 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 را تعریف می‌کنند.مانند: استانداردهای ISO/IEC 9797-1 و ISO/IEC 9797-2 مدل‌ها و الگوریتم‌های عمومی را تعریف می‌کنند که با هر قطعه رمز یا تابع درهم ساز و طیف گسترده‌ای از پارامترهای مختلف ، می‌توانند مورد استفاده قرار گیرند. این مدل‌ها و پارامترها امکانی را فراهم می‌کنند که الگوریتم‌های بسیار دقیق با انتصاب پارامترها تعریف شوند. برای مثال، الگوریتم FIPS PUB 113 از لحاظ عملی برابر است با ISO/IEC 9797-1 ،الگوریتم MAC 1 با روش پوشش 1 و یک الگوریتم قطعه رمز DES.پیام به همراه کد به گیرنده مورد نظر ارسال می‌شود.