SipHash
SipHash هي عائلة من الدوال شبه العشوائية القائمة على الجمع والتدوير والتبادل (ARX) والتي أنشأها جان فيليب أوماسون ودانيال جيه بيرنشتاين في عام 2012، [ 1 ] : 165 [ 2 ] استجابة لموجة من هجمات "إغراق التجزئة" لحجب الخدمة (HashDoS) في أواخر عام 2011. [ 3 ]
صُممت خوارزمية SipHash كدالة شبه عشوائية آمنة ، ويمكن استخدامها أيضًا كرمز مصادقة رسائل آمن (MAC). مع ذلك، فإن SipHash ليست دالة تجزئة عامة بدون مفتاح مثل خوارزميات التجزئة الآمنة (SHA)، ولذلك يجب استخدامها دائمًا مع مفتاح سري لضمان الأمان. بمعنى آخر، صُممت SHA بحيث يصعب على المهاجم إيجاد رسالتين X و Y بحيث يكون SHA( X ) = SHA( Y )، على الرغم من إمكانية حساب SHA( X ) لأي شخص. أما SipHash ، فتضمن أنه بعد رؤية Xᵢ و SipHash( Xᵢ , k )، لا يستطيع المهاجم الذي لا يعرف المفتاح k العثور على أي معلومات حول k أو SipHash( Y , k ) لأي رسالة Y ∉ { Xᵢ } لم يرها من قبل.
ملخص
تحسب خوارزمية SipHash رمز مصادقة رسالة بطول 64 بت من رسالة متغيرة الطول ومفتاح سري بطول 128 بت. صُممت هذه الخوارزمية لتكون فعالة حتى مع المدخلات القصيرة، بأداء يُضاهي دوال التجزئة غير المشفرة، مثل CityHash ؛ [ 4 ] : 496 [ 2 ] ويمكن استخدامها لمنع هجمات حجب الخدمة على جداول التجزئة ("إغراق التجزئة")، [ 5 ] أو لمصادقة حزم الشبكة . أُضيفت لاحقًا نسخة مُعدّلة تُنتج نتيجة بطول 128 بت. [ 6 ]
تكون دالة التجزئة غير المفهرسة، مثل SHA، مقاومة للتصادم فقط عند استخدام كامل الناتج. أما إذا استُخدمت لتوليد ناتج صغير ، مثل فهرس في جدول تجزئة ذي حجم عملي، فلا يمكن لأي خوارزمية منع التصادمات؛ إذ يكفي المهاجم أن يُجري عددًا من المحاولات يساوي عدد النواتج المحتملة.
على سبيل المثال، لنفترض أن خادم شبكة مصمم للتعامل مع مليون طلب في آن واحد. يحتفظ الخادم بسجل الطلبات الواردة في جدول تجزئة يحتوي على مليوني مدخل، مستخدمًا دالة تجزئة لربط المعلومات التعريفية لكل طلب بأحد المدخلات الممكنة في الجدول. يكفي أن يُدخل المهاجم الذي يعرف دالة التجزئة مدخلات عشوائية؛ إذ سيحمل واحد من كل مليوني مدخل قيمة تجزئة محددة. إذا أرسل المهاجم الآن بضع مئات من الطلبات، جميعها مختارة بحيث تحمل نفس قيمة التجزئة، إلى الخادم، فسيؤدي ذلك إلى عدد كبير من تصادمات التجزئة، مما يُبطئ الخادم (أو ربما يُوقفه) بتأثير مشابه لفيضان حزم بيانات بملايين الطلبات. [ 7 ]
باستخدام مفتاح غير معروف للمهاجم، تمنع دالة التجزئة المُفهرسة مثل SipHash هذا النوع من الهجمات. مع أنه من الممكن إضافة مفتاح إلى دالة تجزئة غير مُفهرسة ( HMAC تقنية شائعة)، إلا أن SipHash أكثر كفاءة بكثير.
تُحدد الدوال في عائلة SipHash بالصيغة SipHash- c - d ، حيث يُمثل c عدد الجولات لكل كتلة رسالة، و d عدد جولات الإنهاء. تُوصى باستخدام SipHash-2-4 لتحقيق أفضل أداء، وSipHash-4-8 لضمان أمان مُعتدل. تستخدم بعض اللغات SipHash-1-3 لتحسين الأداء، مع وجود خطر التعرض لهجمات حجب الخدمة (DoS) غير معروفة حتى الآن. [ 8 ]
تم إصدار التطبيق المرجعي كبرنامج يشبه البرامج المتاحة للجمهور بموجب ترخيص CC0 . [ 6 ]
الاستخدام
يتم استخدام SipHash في تطبيقات جداول التجزئة لبرامج مختلفة: [ 9 ]
تستخدم البرامج التالية SipHash بطرق أخرى:
- بيتكوين لمعرفات المعاملات القصيرة [ 22 ]
- Bloomberg BDE باعتباره أداة تجزئة كائنات C++ [ 23 ]
- نظام الملفات بين الكواكب (IPFS) لسبعة تجزئات مرشح بلوم [ 24 ]
التطبيقات
انظر أيضاً
- مرشح بلوم (تطبيق للتجزئات السريعة)
- دالة التجزئة المشفرة
- دالة التجزئة
- رمز مصادقة الرسالة
- قائمة دوال التجزئة
مراجع
- ↑ دوبراونيغ، كريستوف؛ مندل، فلوريان؛ شلافر، مارتن (29 نوفمبر 2014). "التحليل التفاضلي لـ SipHash". مجالات مختارة في علم التشفير - SAC 2014. سلسلة محاضرات في علوم الحاسوب. المجلد 8781. الصفحات 165-182 . doi : 10.1007/978-3-319-13051-4_10 . ISBN 978-3-319-13050-7تم الاطلاع عليه بتاريخ 28 فبراير 2018 .
- 1 2 جان فيليب أوماسون ودانيال ج. بيرنشتاين (18-09-2012). "SipHash: دالة عشوائية زائفة سريعة ذات مدخلات قصيرة" . أرشيف الطباعة الإلكترونية لعلم التشفير .
- ↑ لينون، مايك (28-12-2011). "ثغرة في جدول التجزئة تُمكّن من شنّ هجمات DDoS واسعة النطاق" . سيكيوريتي ويك .
- ↑ سو، وون؛ نارايانان، أشوك؛ أوران، ديفيد؛ ستاب، مارك (2013). "شبكات البيانات المسماة على جهاز توجيه". وقائع مؤتمر ACM SIGCOMM 2013 حول SIGCOMM . الصفحات 495-496 . doi : 10.1145/2486001.2491699 . ISBN 9781450320566S2CID 1457918. تاريخ الاسترجاع: 28 فبراير 2018.
يوفر SipHash [1] المقترح حديثًا توازنًا جيدًا، إذ يتميز بمقاومة التصادم وأداء مماثل للتجزئات غير المشفرة
. - ↑ أوماسون، جان فيليب؛ بيرنشتاين، دانيال جيه ؛ بوسليت، مارتن (2012-11-08). هجمات حجب الخدمة باستخدام تجزئة البيانات: الهجمات والدفاعات (ملف PDF) . منتدى أمن التطبيقات - غرب سويسرا 2012. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 2013-09-13.
- ١ ٢ "SipHash: دالة عشوائية زائفة سريعة للإدخال القصير" . ٢٠١٦-٠٨-٠١. مؤرشف من الأصل في ٢٠١٧-٠٢-٠٢ . تم الاسترجاع في ٢٠١٧-٠١-٢١ .
الملكية الفكرية: لا علم لنا بأي براءات اختراع أو طلبات براءات اختراع متعلقة بـ SipHash، ولا نخطط للتقدم بطلب للحصول على أي منها. تم إصدار الكود المرجعي لـ SipHash بموجب ترخيص CC0، وهو ترخيص شبيه بالملكية العامة.
- ↑ كروسبي، سكوت أ.؛ والاش، دان س. (6 أغسطس/آب 2003). حجب الخدمة عبر هجمات التعقيد الخوارزمي . ندوة يوزنيكس الأمنية . واشنطن العاصمة
- ↑ أوماسون، جان فيليب (veorq) (12 نوفمبر 2015). "تعليق على: تغيير Siphash لاستخدام أحد المتغيرات الأسرع للخوارزمية (Siphash13، Highwayhash) · المشكلة رقم 29754 · rust-lang/rust" . GitHub . تم الاسترجاع في 28 فبراير 2024.
أنا مصمم SipHash، ولم أغير رأيي بشأن SipHash-1-3
:-) [...] هناك "مميز "في 4 جولات [...]، أو ببساطة تحيز إحصائي يظهر عند وجود نمط اختلاف محدد في مدخلات تسلسل الجولات الأربع. لكن لا يمكنك إدخال هذا النمط في SipHash-1-3 لأنك لا تتحكم في جميع الحالات. وحتى لو تمكنت من إدخال هذا النمط، فلن يكون من الممكن استغلال التحيز على أي حال.
- ↑ أوماسون، جان فيليب؛ بيرنشتاين، دانيال ج. (2016-08-01). "SipHash: دالة عشوائية زائفة سريعة ذات مدخلات قصيرة، للمستخدمين" . مؤرشف من الأصل في 2017-02-02 . تم الاسترجاع في 2017-01-21 .
- ↑ فاغ، رود (28 فبراير 2019). "بناء: تفعيل SipHash الخاص بـ v8 لإنشاء بذور التجزئة" . Node.js. تم الاسترجاع في 21 أكتوبر 2021 - عبر GitHub .
- ↑ غو، يانغ (2019-01-09). "استخدام halfsiphash اختياريًا لتجزئة الأعداد الصحيحة" . V8 . تم الاسترجاع في 2021-10-21 .
- ↑ "مكتبة OCaml: Hashtbl" . تم الاطلاع عليه بتاريخ 17-02-2024 .
- ↑ "أمان لغة بيرل - هجمات التعقيد الخوارزمي" . متصفح بيرلدوك . 16-05-2016 . تاريخ الاسترجاع: 21-10-2021 .
- ↑ هايمز، كريستيان (27-09-2013). "PEP 456 - خوارزمية تجزئة آمنة وقابلة للتبديل" . تم الاسترجاع في 21-01-2017 .
- ↑ "الانتقال إلى SipHash-1-3 #73596" . GitHub .
- ↑ ماكفي، سامانثا (16 يوليو 2018). "تنفيذ SipHash، واستخدامه كدالة تجزئة مع قيم تجزئة 64 بت" . MoarVM . تم الاسترجاع في 16 يوليو 2018 - عبر GitHub .
- ↑ "الميزة رقم 13017: تحويل SipHash من SipHash24 إلى SipHash13 - Ruby master - نظام تتبع المشكلات في Ruby" .
- ↑ بوترينغ، لينارت (22-12-2013). "shared: switch our hash table implementation over to SipHash" . systemd . تم الاسترجاع في 21-01-2017 – عبر freedesktop.org .
- ↑ "SRC/Sys/Crypto/Siphash.h at master · openbsd/SRC" . GitHub .
- ↑ " [ base ] Index of /Head/Sys/Crypto/Siphash" .
- ↑ "استخدام siphash لجداول التجزئة · WireGuard/Wg-dynamic@360b9c8" . GitHub .
- ↑ "Compact Block Relay" . GitHub . تم الاسترجاع في 27-09-2018 .
- ↑ bslh_siphashalgorithm.h
- ↑ "Bbloom/SipHash.go at 73e3f896a4f8bbed8589df6ff5c28ebfbd728e31 · ipfs/Bbloom" . GitHub .
روابط خارجية
- جان فيليب أوماسون؛ دانيال ج. بيرنشتاين (2016-08-01). "SipHash: دالة عشوائية زائفة سريعة ذات مدخلات قصيرة - صفحة المشروع" . جيت هاب .
- جان فيليب أوماسون؛ دانيال ج. بيرنشتاين (2012-09-18). "SipHash: PRF سريع ذو مدخلات قصيرة" (PDF) .
- جان فيليب أوماسون؛ دانيال ج. بيرنشتاين (15-08-2012). "SipHash: دالة عشوائية زائفة سريعة ذات مدخلات قصيرة - شرائح العرض التقديمي" (ملف PDF) .
- جان فيليب أوماسون؛ دانيال ج. بيرنشتاين؛ مارتن بوسليت (29-12-2012). "إعادة تحميل هجمات حجب الخدمة باستخدام تقنية إغراق التجزئة: الهجمات والدفاعات" .
- "التجزئة" . كتاب أداء لغة Rust .– يصف متى لا يكون SipHash سريعًا بما فيه الكفاية
- دالة التجزئة (غير التشفيرية)
- برامج متاحة للعموم مع شفرة المصدر
- الأعمال المرخصة بموجب رخصة المشاع الإبداعي
