VMAC یک الگوریتم رمز گذاری قطعه ای مبتنی بر کد اصالت سنجی پیام است که با استفاده از یک درهم ساز جهانی که توسط تد کروتز و وی دای در آوریل ۲۰۰۷ پیشنهاد شده‌است. این الگوریتم برای عملکرد بالا طراحی‌شده توسط یک آنالیز صوری طراحی شده‌است.

VMAC برای داشتن کارایی استثنایی در نرم‌افزار روی معماری‌های پردازنده ۶۴ بیتی طراحی شده‌است، در حالی که همچنان روی معماری‌های ۳۲ بیتی عمل می‌کند.

سرعت اندازه‌گیری شده با سرعت یک - نیم پردازنده در هر بایت (cpb) روی معماری‌های ۶۴ بیتی، زیر پنج (cpb) روی پردازنده‌های ۳۲ بیتی، و حدود ۱۰ (cpb) روی معماری‌های ۳۲ بیتی جاسازی‌شده‌است. یک متغیر وابسته به VMAC که برای معماری‌های ۳۲ بیتی بهینه شده‌است توسط UMAC داده شده‌است.

بررسی اجمالی
------------

VMAC یک MAC در سبک ویگمن و کارتر است. تابع سریع «جهانی» هش برای هش کردن پیام ورودی M به یک رشته کوتاه استفاده می‌شود. این رشته کوتاه سپس با اضافه کردن یک صفحه شبه تصادفی ترکیب می‌شود و نتیجه آن برچسب VMAC است. امنیت بستگی به ارسال کننده و گیرنده که به اشتراک می‌گذارند یک تابع هش مخفی به‌طور تصادفی انتخاب شده و پد شبه تصادفی دارد. این کار با استفاده از تابع هش کلید دار شده h و تابع شبه تصادفی f به دست می‌آید. یک برچسب با انجام محاسبات ایجاد می‌شود.

```
Tag = HK1(M) + FK2(Nonce)
```

که در آن K1 و K2 کلیدهای تصادفی مخفی هستند که توسط فرستنده و گیرنده مشترک است و Nonce مقداری است که با هر برچسب تولید شده تغییر می‌کند. گیرنده باید بداند که کدام nonce توسط فرستنده استفاده شده‌است، بنابراین باید از برخی از روش‌های هماهنگ سازی nonces استفاده شود. این کار می‌تواند با ارسال صریح nonce به همراه پیام و برچسب یا توافق بر سر استفاده از برخی مقدار غیر تکراری دیگر مانند شماره دنباله انجام شود. nonce نیازی ندارد مخفی نگه‌داشته شود، اما باید دقت شود تا اطمینان حاصل شود که در طول عمر VMAC کلید، یک nonce متفاوت با هر پیام استفاده می‌شود.

VMAC از تابعی به نام VHASH (که در این سند مشخص شده‌است) استفاده می‌کند، به عنوان تابع درهم ساز کلید دار H و از یک تابع شبه تصادفی F استفاده می‌کند که اجرای پیش‌فرض آن از رمز بلوکی AES استفاده می‌کند. VMAC اجازه می‌دهد طول هر تگ ۶۴ بیتی را تا چند تا اندازه بلوک رمز بلوکی قابل‌استفاده شود. هنگامی که از AES استفاده می‌کنید، این به این معنی است که VMAC می‌تواند برچسب‌های ۶۴ یا ۱۲۸ بیتی را تولید کند.

تئوری MACهای وگمن کارتر و تجزیه و تحلیل VMAC نشان می‌دهد که اگر کسی "VMAC" را با کلیدها و لنت‌های واقعاً تصادفی "فوری" کند، این احتمال وجود دارد که یک مهاجم (حتی محاسبه نشده و بدون محدودیت) برچسب صحیحی را برای پیام‌های مورد نظر خود تولید کند. برچسب صحیح که برای پیام‌های انتخابی کمتر از ۱/۲۶۰ یا ۱/۲۱۲۰ باشد وقتی برچسب‌ها دارای طول ۶۴ یا ۱۲۸ بیت هستند، به ترتیب تولید می‌کند. هنگامی که یک مهاجم N جعل را انجام می‌دهد، احتمال گرفتن یک یا چند برچسب درست به صورت خطی به کمتر از N/260 یا N/2120 افزایش می‌یابد. در اجرای کاربردی VMAC، با استفاده از AES برای تولید کلیدها و لنتها، این احتمالات جعل با مقدار کمی مربوط به امنیت AES افزایش می‌یابد. تا زمانی که AES امن باشد، این اصطلاح افزودنی کوچک برای هرگونه حمله عملی ناچیز است. برای اطلاعات بیشتر به مشخصات مراجعه کنید. تجزیه و تحلیل امنیت VMAC توسط نویسندگان وی دای و تد کروتز انجام شده‌است.

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

* ج
* C ++
* پایتون

منابع
-----

1. ↑  T. Krovetz and W. Dai (2007). "VMAC: Message Authentication Code using Universal Hashing". *CFRG Working Group*. IETF. Retrieved 2010-08-12.
2. ↑  J. Carter; M. Wegman (1977). "Universal classes of hash functions". *Proceedings of the ninth annual ACM symposium on Theory of Computing*. ACM: 106–112.
3. ↑  J. Carter; M. Wegman (1981). "New hash functions and their use in authentication and set equality". *Journal of Computer and System Sciences*. **22**: 265–279. doi:10.1016/0022-0000(81)90033-7.
4. ↑  T. Krovetz (2006). "Message authentication on 64-bit architectures" (PDF). *Lecture Notes in Computer Science, Proceedings of the 13th international conference on selected areas in cryptography*. Springer-Verlag: 327–341. ISSN 0302-9743.
5. ↑
6. ↑
7. ↑  "Crypto++: vmac.h Source File". *www.cryptopp.com*.
8. ↑  "Crypto++: vmac.cpp Source File". *www.cryptopp.com*.
9. ↑

پیوند به بیرون
--------------

* VMAC: کد احراز هویت پیام با استفاده از هشینگ جهانی - پیش نویس اینترنت
* صفحه اصلی VMAC
* ورود ویکی به Cryptolounge VMAC
* پیش نویس اینترنت VMAC: کد احراز هویت پیام با استفاده از هشینگ جهانی