مفتاح واحد لـ MAC
تُعدّ رموز التحقق من صحة الرسائل ذات المفتاح الواحد ( OMAC ) مجموعة من رموز التحقق من صحة الرسائل ، وهي مبنية على تشفير كتلي يشبه إلى حد كبير خوارزمية CBC-MAC . ويمكن استخدامها لضمان صحة البيانات، وبالتالي سلامتها. يوجد منها إصداران:
- الاسم الأصلي لـ OMAC الصادر في فبراير 2003، والذي نادراً ما يُستخدم. [ 1 ] الاسم المفضل الآن هو "OMAC2". [ 2 ]
- [ 2 ] تحسين OMAC1، والذي أصبح توصية من المعهد الوطني للمعايير والتكنولوجيا في مايو 2005 تحت اسم CMAC . [ 3 ]
برنامج OMAC مجاني لجميع الاستخدامات: فهو غير مشمول بأي براءات اختراع. [ 4 ]
تاريخ
جوهر خوارزمية CMAC هو شكل معدل من خوارزمية CBC-MAC التي اقترحها بلاك وروغواي وحللاها تحت اسم "XCBC" [ 5 ] وقدموها إلى المعهد الوطني للمعايير والتكنولوجيا (NIST) [ 6 ] . تعالج خوارزمية XCBC بكفاءة أوجه القصور الأمنية في خوارزمية CBC-MAC، ولكنها تتطلب ثلاثة مفاتيح.
اقترح إيواتا وكوروساوا تحسينًا لخوارزمية XCBC يتطلب كمية أقل من مواد المفاتيح (مفتاح واحد فقط)، وأطلقوا على الخوارزمية الناتجة اسم One-Key CBC-MAC (OMAC) في أبحاثهم. [ 1 ] ثم قدموا لاحقًا خوارزمية OMAC1 (= CMAC)، [ 2 ] وهي نسخة محسّنة من OMAC، بالإضافة إلى تحليل أمني إضافي. [ 7 ]
الخوارزمية
![]()
لإنشاء علامة CMAC ( t ) مكونة من ℓ بت لرسالة ( m ) باستخدام تشفير كتلة مكون من b بت ( E ) ومفتاح سري ( k )، يتم أولاً إنشاء مفتاحين فرعيين مكونين من b بت ( k1 و k2 ) باستخدام الخوارزمية التالية (وهذا يكافئ الضرب في x و x2 في حقل منتهٍ GF(2b ) ). لنفترض أن ≪ يرمز إلى عامل الإزاحة إلى اليسار القياسي ، و⊕ يرمز إلى عملية XOR الثنائية .
- احسب القيمة المؤقتة k 0 = E k (0).
- إذا كانت قيمة msb( k0 ) تساوي صفرًا، فإن k1 = k0 ≪ 1، وإلا فإن k1 = ( k0 ≪ 1) ⊕ C ؛ حيث C ثابت معين يعتمد فقط على b . (وتحديدًا، C هي المعاملات غير الرئيسية لكثير الحدود الثنائي غير القابل للاختزال من الدرجة b، والذي يحتوي على أقل عدد من الآحاد: 0x1B لكتل 64 بت، و0x87 لكتل 128 بت، و 0x425 لكتل 256 بت).
- إذا كان msb( k 1 ) = 0 ، فإن k 2 = k 1 ≪ 1 ، وإلا فإن k 2 = ( k 1 ≪ 1) ⊕ C .
- إرجاع المفاتيح ( k1 ، k2 ) لعملية إنشاء رمز المصادقة (MAC ) .
كمثال بسيط، لنفترض أن b = 4 ، و C = 0011 2 ، و k 0 = E k (0) = 0101 2. عندئذٍ k 1 = 1010 2 و k 2 = 0100 ⊕ 0011 = 0111 2 .
تتم عملية إنشاء علامات CMAC على النحو التالي:
- قسّم الرسالة إلى كتل مكونة من b بت، حيث m = m1 ∥ ... ∥ mn −1 ∥ mn ، و m1 ، ... ، mn −1 هي كتل كاملة. (تُعامل الرسالة الفارغة ككتلة غير كاملة).
- إذا كانت m n كتلة كاملة فإن m n ′ = k 1 ⊕ m n وإلا فإن m n ′ = k 2 ⊕ ( m n ∥ 10...0 2 ) .
- ليكن c 0 = 00...0 2 .
- بالنسبة لـ i = 1، ...، n − 1 ، احسب c i = E k ( c i −1 ⊕ m i ) .
- c n = E k ( c n −1 ⊕ m n ′)
- الناتج t = msb ℓ ( c n ) .
تتم عملية التحقق على النحو التالي:
- استخدم الخوارزمية المذكورة أعلاه لإنشاء الوسم.
- تأكد من أن الوسم المُنشأ يساوي الوسم المُستلم.
المتغيرات
CMAC-C1 [ 8 ] هو نوع مختلف من CMAC يوفر ضمانات أمان إضافية للالتزام واكتشاف السياق .
التطبيقات
- تنفيذ بايثون : انظر إلى استخدام الدالة
AES_CMAC()في " impacket/blob/master/tests/misc/test_crypto.py "، وتعريفها في " impacket/blob/master/impacket/crypto.py " [ 9 ] - تنفيذ روبي [ 10 ]
مراجع
- 1 2 إيواتا، تيتسو؛ كوروساوا، كاورو (24-02-2003). "OMAC: خوارزمية مصادقة الرسائل CBC بمفتاح واحد". التشفير البرمجي السريع . سلسلة محاضرات في علوم الحاسوب. المجلد 2887. سبرينغر، برلين، هايدلبرغ. الصفحات 129-153 . doi : 10.1007/978-3-540-39887-5_11 . ISBN 978-3-540-20449-7.
- 1 2 3 إيواتا، تيتسو؛ كوروساوا، كاورو (2003). "OMAC: خوارزمية مصادقة الوسائط CBC ذات المفتاح الواحد - ملحق" (ملف PDF) .
في هذه المذكرة، نقترح OMAC1، وهو خيار جديد لمعاملات عائلة OMAC (انظر [4] للتفاصيل). كما نعرض متجهات الاختبار. وبناءً على ذلك، نعيد تسمية OMAC السابق إلى OMAC2. (أي أن متجهات اختبار OMAC2 قد عُرضت بالفعل في [3]). نستخدم OMAC كاسم عام لكل من OMAC1 وOMAC2.
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ↑ دوركين، موريس (2016). "توصية بشأن أوضاع تشغيل تشفير الكتلة: وضع CMAC للمصادقة" (ملف PDF) . doi : 10.6028/nist.sp.800-38b .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ↑ روغاواي، فيليب. " CMAC: غير مرخص" . تم الاطلاع عليه بتاريخ 27 مايو 2020.
بيان فيليب روغاواي بشأن وضع الملكية الفكرية لشركة CMAC
- ↑ بلاك، جون؛ روجاواي، فيليب (20 أغسطس 2000). التطورات في علم التشفير - CRYPTO 2000. سبرينغر، برلين، هايدلبرغ. الصفحات 197-215 . doi : 10.1007/3-540-44598-6_12 . ISBN 978-3540445982.
- ↑ بلاك، ج؛ روجاواي، ب. "اقتراح للتعامل مع الرسائل ذات الطول العشوائي باستخدام CBC MAC" (PDF) .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ^ إيواتا، تيتسو؛ كوروساوا ، كاورو (2003/12/08). “حدود أمنية أقوى لـ OMAC وTMAC وXCBC”. في يوهانسون، توماس؛ ميترا، سوبهاموي (محرران). التقدم في علم التشفير – INDOCRYPT 2003 . ملاحظات محاضرة في علوم الكمبيوتر. المجلد. 2904. سبرينغر برلين هايدلبرغ. ص 402 – 415. سيتيسيركس 10.1.1.13.8229 . دوى : 10.1007/978-3-540-24582-7_30 . رقم ISBN 9783540206095.
- ^ بوميك، ريتام. تشاكرابورتي، بيشواجيت؛ تشوي، وونسوك؛ دوتا، أفيجيت؛ جوفيندين، جيروم. شين ياوبين (2024). "الالتزام بأمان أجهزة MAC مع تطبيقات التركيب العام" . في ريزين ليونيد. ستيبيلا، دوغلاس (محرران). التقدم في علم التشفير – التشفير 2024 . ملاحظات محاضرة في علوم الكمبيوتر. المجلد. 14923. شام: سبرينغر نيتشر سويسرا. ص 425 – 462. دوى : 10.1007 / 978-3-031-68385-5_14 . رقم ISBN 978-3-031-68385-5.
- ↑ "Impacket عبارة عن مجموعة من فئات بايثون للعمل مع بروتوكولات الشبكة: SecureAuthCorp/impacket" . 15 ديسمبر 2018 - عبر GitHub.
- ↑ "امتداد Ruby C لدالة التجزئة المفتاحية AES-CMAC (RFC 4493): louismullie/cmac-rb" . 4 مايو 2016 - عبر GitHub.
روابط خارجية
- RFC 4493 خوارزمية AES-CMAC
- RFC 4494 خوارزمية AES-CMAC-96 واستخدامها مع IPsec
- RFC 4615 معيار التشفير المتقدم - رمز مصادقة الرسائل القائم على التشفير - دالة شبه عشوائية - 128 (AES-CMAC-PRF-128)
- اختبار OMAC عبر الإنترنت
- مزيد من المعلومات حول OMAC
- تطبيق بلغة Rust
- رموز مصادقة الرسائل
- الحقول المنتهية
