بليك (دالة التجزئة)
BLAKE هي دالة تجزئة تشفيرية مبنية على خوارزمية التشفير المتدفق ChaCha لدانيال ج. بيرنشتاين ، ولكن قبل كل جولة من جولات ChaCha، تُضاف نسخة مُبدّلة من كتلة الإدخال، مُدمجة مع ثوابت الجولة باستخدام عملية XOR. وكما هو الحال في SHA-2 ، يوجد نوعان مختلفان من BLAKE يختلفان في حجم الكلمة . تعمل ChaCha على مصفوفة 4×4 من الكلمات. أما BLAKE، فتقوم بشكل متكرر بدمج قيمة تجزئة مكونة من 8 كلمات مع 16 كلمة من الرسالة، ثم تقطع نتيجة ChaCha للحصول على قيمة التجزئة التالية. يستخدم كل من BLAKE-256 و BLAKE-224 كلمات بحجم 32 بت، وينتجان أحجام تجزئة تبلغ 256 بت و224 بت على التوالي، بينما يستخدم كل من BLAKE-512 و BLAKE-384 كلمات بحجم 64 بت، وينتجان أحجام تجزئة تبلغ 512 بت و384 بت على التوالي.
تم الإعلان عن دالة التجزئة BLAKE2 ، المستندة إلى BLAKE، في عام 2012. وتم الإعلان عن دالة التجزئة BLAKE3 ، المستندة إلى BLAKE2، في عام 2020.
تاريخ
قُدِّم برنامج BLAKE إلى مسابقة NIST لدوال التجزئة من قِبَل جان فيليب أوماسون، ولوكا هينزن، وويلي ماير، ورافائيل سي-دبليو فان. في عام 2008، بلغ عدد المشاركات 51 مشاركة. وصل برنامج BLAKE إلى الجولة النهائية التي ضمت خمسة مرشحين، لكنه خسر أمام برنامج Keccak في عام 2012، والذي تم اختياره لخوارزمية SHA-3 .
الخوارزمية
مثل خوارزمية SHA-2 ، تأتي خوارزمية BLAKE بنسختين: إحداهما تستخدم كلمات 32 بت، وتُستخدم لحساب التجزئات التي يصل طولها إلى 256 بت، والأخرى تستخدم كلمات 64 بت، وتُستخدم لحساب التجزئات التي يصل طولها إلى 512 بت. يجمع تحويل الكتلة الأساسية 16 كلمة من المدخلات مع 16 متغيرًا عاملًا، ولكن يتم الاحتفاظ بـ 8 كلمات فقط (256 أو 512 بت) بين الكتل.
يستخدم جدولًا من 16 كلمة ثابتة (أول 512 أو 1024 بت من الجزء الكسري من π كأرقام لا شيء مخفي )، وجدولًا من 10 تباديل مكونة من 16 عنصرًا:
σ[0] = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 σ[1] = 14 10 4 8 9 15 13 6 1 12 0 2 11 7 5 3 σ[2] = 11 8 12 0 5 2 15 13 10 14 3 6 7 1 9 4 σ[3] = 7 9 3 1 13 12 11 14 2 6 5 10 4 0 15 8 σ[4] = 9 0 5 7 2 4 10 15 14 1 11 12 6 8 3 13 σ[5] = 2 12 6 10 0 11 8 3 4 13 7 5 15 14 1 9 σ[6] = 12 5 1 15 14 13 4 10 0 7 6 3 9 2 8 11 σ[7] = 13 11 7 14 12 1 3 9 5 0 15 4 8 6 2 10 σ[8] = 6 15 14 9 11 3 0 8 12 2 13 7 1 4 10 5 σ[9] = 10 2 8 4 7 6 1 5 15 11 9 14 3 12 13 0
تعتمد العملية الأساسية، المكافئة لربع جولة في لعبة تشا تشا، على عمود أو قطر مكون من 4 كلمات a b c d، يتم دمجه مع كلمتين من الرسالة m[]وكلمتين ثابتتين n[]. ويتم تنفيذها 8 مرات في كل جولة كاملة.
j ← σ[r%10][2×i] // حسابات الفهرس k ← σ[r%10][2×i+1] a ← a + b + (m[j] ⊕ n[k]) // الخطوة 1 (مع المدخلات) د ← (د ⊕ أ) >>> 16 ج ← ج + د // الخطوة 2 (بدون إدخال) ب ← (ب ⊕ ج) >>> 12 a ← a + b + (m[k] ⊕ n[j]) // الخطوة 3 (مع المدخلات) د ← (د ⊕ أ) >>> 8 ج ← ج + د // الخطوة 4 (بدون مدخلات) ب ← (ب ⊕ ج) >>> 7
في المثال أعلاه، rيمثل الرقم الصحيح (0-13)، iويتراوح من 0 إلى 7.
الاختلافات عن وظيفة ربع الدورة في ChaCha هي:
- تمت إضافة كلمات الرسالة.
- تم عكس اتجاهات الدوران.
يشرح جان فيليب أوماسون في "قاموس التشفير" الخاص به: "يعيد BLAKE استخدام تبديل تشفير تدفق ChaCha مع إجراء عمليات التدوير في الاتجاه المعاكس. وقد ظن البعض أنه تحسين متقدم، ولكنه في الواقع ناتج عن خطأ مطبعي في مواصفات BLAKE الأصلية". [ 2 ]
النسخة ذات 64 بت (غير الموجودة في ChaCha) متطابقة، لكن كميات الدوران هي 32 و25 و16 و11 على التوالي، وتم زيادة عدد الجولات إلى 16.
تعديلات
خلال مسابقة NIST لوظائف التجزئة، يُسمح للمشاركين بتعديل خوارزمياتهم لمعالجة المشكلات التي يتم اكتشافها. ومن بين التغييرات التي أُجريت على خوارزمية BLAKE: زيادة عدد الجولات من 10/14 إلى 14/16. يهدف هذا إلى تعزيز الأمان مع الحفاظ على السرعة.
ملخصات نموذجية
قيم التجزئة لسلسلة نصية فارغة:
بليك-224("") = 7dc5313b1c04512a174bd6503b89607aecbee0903d40a8a569c94eed بليك-256("") = 716f6e863f744b9ac22c97ec7b76ea5f5908bc5b2f67c61510bfc4751384ea7a بليك-384("") = c6cbd89c926ab525c242e6621f2f5fa73aa4afe3d9e24aed727faaadd6af38b620bdb623dd2b4788b1c8086984af8706 بليك-512("") = a8cfbbd73726062df0c6864dda65defe58ef0cc52a5625090fa17601e1eecd1b628e94f396ae402a00acc9eab77b4d4c2e852aaaa25a636d80af3fc7913ef5b8
يؤدي تغيير بت واحد إلى تغيير كل بت في الناتج باحتمالية 50%، مما يدل على تأثير الانهيار الجليدي :
BLAKE-512("The quick brown fox jumps over the lazy dog") = 1f7e26f63b6ad25a0896fd978fd050a1766391d2fd0471a77afb975e5034b7ad 2d9ccf8dfb47abbbe656e1b82fbc634ba42ce186e8dc5e1ce09a885d41f43451 BLAKE-512("The quick brown fox jumps over the lazy do f ") = a701c2a1f9baabd8b1db6b75aee096900276f0b86dc15d247ecc03937b370324a16a4ffc0c3a85cd63229cfa15c15f4ba6d46ae2e849ed6335e9ff43b764198a
(في هذا المثال، يمثل 266 بت متطابق من أصل 512 حوالي 52٪ بسبب الطبيعة العشوائية للانهيار الجليدي.)
بليك 2
BLAKE2 هي دالة تجزئة تشفيرية مبنية على BLAKE، من ابتكار جان-فيليب أوماسون، وصموئيل نيفيس، وزوكو ويلكوكس-أوهيرن ، وكريستيان وينرلين. كان الهدف من تصميمها استبدال خوارزميتي MD5 و SHA-1 ، الشائعتين الاستخدام ولكنهما غير موثوقتين، في التطبيقات التي تتطلب أداءً عاليًا في البرمجيات. أُعلن عن BLAKE2 في 21 ديسمبر 2012. [ 4 ] يتوفر تطبيق مرجعي لها بموجب ترخيص CC0 ، وترخيص OpenSSL ، وترخيص Apache 2.0 . [ 5 ] [ 6 ]
يُعدّ BLAKE2b أسرع من MD5 وSHA-1 وSHA-2 وSHA-3 على معمارية x86-64 وARM ذات 64 بت. [ 5 ] ويذكر مطوّروه أن BLAKE2 يوفر أمانًا أفضل من SHA-2، ومماثلًا لأمان SHA-3: مناعة ضدّ إطالة الطول ، وعدم إمكانية التمييز بينه وبين أوراكل عشوائي، إلخ. [ 7 ]
يقوم BLAKE2 بإزالة إضافة الثوابت إلى كلمات الرسالة من دالة جولة BLAKE، وتغيير ثابتين للدوران، وتبسيط الحشو، وإضافة كتلة المعلمات التي يتم تطبيق XOR عليها مع متجهات التهيئة، وتقليل عدد الجولات من 16 إلى 12 لـ BLAKE2b (خليفة BLAKE-512)، ومن 14 إلى 10 لـ BLAKE2s (خليفة BLAKE-256).
يدعم BLAKE2 أنماط التشفير، والتمليح، والتخصيص، وشجرة التجزئة، ويمكنه إخراج ملخصات تتراوح من 1 إلى 64 بايت لـ BLAKE2b، أو حتى 32 بايت لـ BLAKE2s. كما توجد إصدارات متوازية مصممة لزيادة الأداء على المعالجات متعددة النوى ؛ BLAKE2bp (متوازي رباعي المسارات) و BLAKE2sp (متوازي ثماني المسارات).
BLAKE2X هي عائلة من دوال الإخراج القابلة للتوسيع (XOFs). بينما يقتصر BLAKE2 على ملخصات بحجم 64 بايت، يسمح BLAKE2X بملخصات تصل إلى 256 جيجابايت. لا يُعد BLAKE2X نفسه مثالًا على دالة تجزئة، ويجب أن يستند إلى مثال فعلي لـ BLAKE2. مثال على مثال لـ BLAKE2X هو BLAKE2Xb16MiB ، وهو إصدار من BLAKE2X مبني على BLAKE2b، ينتج ملخصات بحجم 16,777,216 بايت (أو 16 ميجابايت بالضبط ، ومن هنا جاء اسم هذا المثال). [ 8 ]
تم تحديد BLAKE2b وBLAKE2s في RFC 7693. لم يتم تحديد الميزات الاختيارية التي تستخدم كتلة المعلمات (مثل إضافة الملح، والتجزئات الشخصية، وتجزئة الشجرة، وما إلى ذلك)، وبالتالي لم يتم تحديد دعم BLAKE2bp أو BLAKE2sp أو BLAKE2X. [ 9 ]
متجه البيانات الأولية
يستخدم BLAKE2b متجه تهيئة هو نفسه متجه التهيئة المستخدم بواسطة SHA-512. يتم الحصول على هذه القيم بشكل شفاف عن طريق أخذ أول 64 بت من الأجزاء الكسرية للجذور التربيعية الموجبة لأول ثمانية أعداد أولية.
IV 0 = 0x6a09e667f3bcc908 // Frac(sqrt(2)) IV 1 = 0xbb67ae8584caa73b // Frac(sqrt(3)) IV 2 = 0x3c6ef372fe94f82b // Frac(sqrt(5)) IV 3 = 0xa54ff53a5f1d36f1 // Frac(sqrt(7)) IV 4 = 0x510e527fade682d1 // Frac(sqrt(11)) IV 5 = 0x9b05688c2b3e6c1f // Frac(sqrt(13)) IV 6 = 0x1f83d9abfb41bd6b // Frac(sqrt(17)) IV 7 = 0x5be0cd19137e2179 // Frac(sqrt(19))
خوارزمية BLAKE2b
الشفرة الزائفة لخوارزمية BLAKE2b. تستخدم خوارزمية BLAKE2b كلمات بحجم 8 بايت (UInt64)، وأجزاء بحجم 128 بايت.
خوارزمية BLAKE2b المدخلات: M الرسالة المراد تجزئتها cbMessageLen: عدد، (0..2 128 ) طول الرسالة بالبايتات المفتاح مفتاح اختياري 0..64 بايت cbKeyLen: عدد، (0..64) طول المفتاح الاختياري بالبايتات cbHashLen: عدد، (1..64) طول التجزئة المطلوب بالبايتات المخرجات: التجزئة تجزئة لـ cbHashLen بايتاتقم بتهيئة متجه الحالة h باستخدام IV h 0..7 ← IV 0..7قم بمزج حجم المفتاح (cbKeyLen) وطول التجزئة المطلوب (cbHashLen) في h 0 h 0 ← h 0 xor 0x0101kknn حيث kk هو طول المفتاح (بالبايت) و nn هو طول التجزئة المطلوب (بالبايت)في كل مرة نقوم فيها بالضغط، نسجل عدد البايتات التي تم ضغطها. cBytesCompressed ← 0 cBytesRemaining ← cbMessageLen إذا تم توفير مفتاح (أي cbKeyLen > 0)، فقم بإضافة أصفار في نهايته ليصبح طوله 128 بايت (أي 16 كلمة) وأضفه إلى بداية الرسالة M إذا كان ( cbKeyLen > 0) M ← Pad(Key, 128) || M cBytesRemaining ← cBytesRemaining + 128 نهاية الشرطقم بضغط أجزاء كاملة من الرسالة بحجم 128 بايت، باستثناء الجزء الأخير. طالما أن ( cBytesRemaining > 128) قم بما يلي : نفّذ ما ... h ← Compress(h, chunk, cBytesCompressed, false) false ⇒ هذه ليست آخر قطعة نهاية الحلقةضغط البايتات الأخيرة من الجزء M ← الحصول على الـ 128 بايت التالية من الرسالة M. سنحصل على cBytesRemaining بايت (أي من 0 إلى 128 بايت). cBytesCompressed ← cBytesCompressed + cBytesRemaining. العدد الفعلي للبايتات المتبقية في الجزء M ← Pad(chunk, 128). إذا كان M فارغًا، فسنضغط أيضًا جزءًا أخيرًا من الأصفار. h ← Compress(h, chunk, cBytesCompressed, true) true ⇒ هذه هي القطعة الأخيرةالنتيجة ← أول cbHashLen بايت من متجه الحالة ذي الترتيب الصغير h نهاية الخوارزمية BLAKE2b
ضغط
تأخذ دالة الضغط جزءًا كاملاً بحجم 128 بايت من رسالة الإدخال وتدمجه في مصفوفة الحالة الجارية:
دالة ضغط المدخلات: h متجه حالة ثابت، جزء من الرسالة المراد ضغطه بحجم 128 بايت (16 كلمة مزدوجة)، t: رقم، من 0 إلى 2، 128، عدد البايتات التي تم إدخالها في عملية الضغط، IsLastBlock: قيمة منطقية، تشير إلى ما إذا كانت هذه هي الجولة الأخيرة من الضغط، المخرجات: h متجه حالة ثابت مُحدَّثقم بإعداد متجه العمل المحلي V V 0..7 ← h 0..7. يتم نسخ العناصر الثمانية الأولى من متجه الحالة الثابتة h V 8..15 ← IV 0..7. يتم تهيئة العناصر الثمانية المتبقية من IV.امزج قيمة العداد t ذي 128 بت مع V12 : V13 V12 ←V12 باستخدام عملية XOR بين Lo ( t) و Lo (64 بت من UInt128 t) V13← V13 باستخدام عملية XOR بين Hi (t) و Hi (64 بت من UInt128 t)إذا كانت هذه هي الكتلة الأخيرة ، فقم بعكس جميع البتات في V14 . إذا كانت IsLastBlock، فقم بعكس V14← V14 باستخدام XOR 0xFFFFFFFFFFFFFFFFتعامل مع كل جزء من الرسالة بحجم 128 بايت على أنه ستة عشر كلمة بحجم 8 بايت (64 بت) m m 0..15 ← جزء تُستخدم اثنتا عشرة جولة من مزج الرسائل المشفرة، حيث i من 0 إلى 11. حدد جدول مزج الرسائل لهذه الجولة. يستخدم BLAKE2b اثنتي عشرة جولة، بينما يحتوي σ على 10 مدخلات فقط. S 0..15 ← σ[i mod 10]. تستخدم الجولتان 10 و11 σ[0] وσ[1] على التوالي. ميكس(V 0 , V 4 , V 8 , V 12 , م[S 0 ], م [S 1 ]) ميكس(V 1 , V 5 , V 9 , V 13 , م[S 2 ], م [S 3 ]) مزيج(V 2 , V 6 , V 10 , V 14 , م[S 4 ], م[S 5 ]) مزيج(V 3 , V 7 , V 11 , V 15 , م[S 6 ], م[S 7 ]) ميكس(V 0 , V 5 , V 10 , V 15 , م[S 8 ], م [S 9 ]) ميكس(V 1 , V 6 , V 11 , V 12 , م[S 10 ], م[S 11 ]) مزيج(V 2 , V 7 , V 8 , V 13 , م[S 12 ], م[S 13 ]) Mix(V 3 , V 4 , V 9 , V 14 , m[S 14 ], m[S 15 ]) end forامزج النصفين العلوي والسفلي من V في متجه الحالة المستمرة h h 0..7 ← h 0..7 xor V 0..7 h 0..7 ← h 0..7 xor V 8..15النتيجة ← h نهاية الدالة ضغط
مزج
يتم استدعاء دالة المزج (Mix ) بواسطة دالة الضغط (Compress )، حيث تقوم بمزج كلمتين من الرسالة بحجم 8 بايت في حالة التجزئة. في معظم التطبيقات، تُكتب هذه الدالة مباشرةً في الكود، أو كدالة مضمنة.
مدخلات دالة المزج : V <sub>a </sub> ، V <sub> b</sub> ، V</sub>، V <sub>d</sub>: أربعة مدخلات من نوع كلمة بحجم 8 بايت من متجه العمل V <sub> x</sub>، V <sub> y </sub>: مدخلان من نوع كلمة بحجم 8 بايت من الرسالة المبطنة m. المخرجات: V<sub> a </sub>، VV<sub><sub> d</sub>: النسخ المعدلة من V<sub> a </sub>، V<sub> b</sub> ، V<sub> c</sub> ، V<sub> d</sub> V a ← V a + V b + x مع المدخل V d ← (V d xor V a ) تدوير لليمين 32 V <sub>c </sub> ← V <sub>c</sub> + V<sub> d</sub> لا يوجد مدخل V<sub> b </sub> ← (V <sub>b</sub> xor V<sub> c</sub> ) تدوير لليمين 24 V a ← V a + V b + y مع المدخل V d ← (V d xor V a ) تدوير لليمين 16 V <sub>c </sub> ← V <sub>c</sub> + V<sub> d</sub> لا يوجد مدخل V<sub> b </sub> ← (V <sub>b</sub> xor V<sub> c</sub> ) تدوير لليمين 63 النتيجة ← V a ، V b ، V c ، V d نهاية وظيفة المزج
ملخصات نموذجية
قيم التجزئة لسلسلة نصية فارغة:
BLAKE2s-224("") = 1fa1291e65248b37b3433475b2a0dd63d54a11ecc4e3e034e7bc1ef4 BLAKE2s-256("") = 69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9 BLAKE2b-384("") = b32811423377f52d7862286ee1a72ee540524380fda1724a6f25d7978c6fd3244a6caf0498812673c5e05ef583825100 BLAKE2b-512("") = 786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419 d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ce
يؤدي تغيير بت واحد إلى تغيير كل بت في الناتج باحتمالية 50%، مما يدل على تأثير الانهيار الجليدي :
BLAKE2b-512("The quick brown fox jumps over the lazy dog") = a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673 f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 BLAKE2b-512("The quick brown fox jumps over the lazy do f ") = ab6b007747d8068c02e25a6008db8a77c218d94f3b40d2291a7dc8a62090a744 c082ea27af01521a102e42f480a31e9844053f456b4b41e8aa78bbe5c12957bb
مستخدمو BLAKE2
- يستخدم Argon2 ، الفائز في مسابقة تجزئة كلمات المرور ، خوارزمية BLAKE2b
- يستخدم نظام نشر Habitat الخاص بـ Chef برنامج BLAKE2b لتوقيع الحزم [ 10 ]
- تستخدم أداة إدارة حزم FreeBSD Ports برنامج BLAKE2b
- تقوم أدوات GNU الأساسية بتنفيذ BLAKE2b في أمر b2sum الخاص بها [ 11 ]
- يسمح نظام IPFS باستخدام BLAKE2b لتجزئة الشجرة.
- يستخدم librsync مكتبة BLAKE2b [ 12 ]
- يتضمن إطار عمل بروتوكول الضوضاء ، المستخدم في واتساب وواير جارد ، BLAKE2 كخيار. [ 13 ]
- يدعم تنسيق أرشيف RAR الإصدار 5 مجموع التحقق الاختياري للملف BLAKE2sp 256 بت بدلاً من CRC-32 الافتراضي 32 بت ؛ وقد تم تنفيذه في WinRAR الإصدار 5+ [ 14 ]
- يمكن لبرنامج 7-Zip (لدعم تنسيق أرشيف RAR الإصدار 5 [ 15 ] ) إنشاء توقيع BLAKE2sp لكل ملف في واجهة مستكشف الملفات عبر قائمة السياق "CRC SHA"، واختيار '*'
- يستخدم rmlint برنامج BLAKE2b للكشف عن الملفات المكررة [ 16 ]
- يستخدم WireGuard خوارزمية BLAKE2s للتجزئة [ 17 ]
- تستخدم عملة Zcash المشفرة خوارزمية BLAKE2b في إثبات العمل Equihash ، وكدالة اشتقاق مفتاح.
- تستخدم NANO ، وهي عملة مشفرة، BLAKE2b في إثبات العمل، لتجزئة التوقيعات الرقمية وكدالة اشتقاق مفتاح [ 18 ] [ 19 ] [ 20 ]
- يستخدم Polkadot ، وهو عبارة عن سلسلة كتل متعددة، خوارزمية BLAKE2b كخوارزمية تجزئة.
- استبدلت نواة لينكس ، الإصدار 5.17، خوارزمية SHA-1 بخوارزمية BLAKE2s لتجزئة مجموعة الإنتروبيا في مولد الأرقام العشوائية . [ 21 ]
- يدعم نظام ملفات btrfs برنامج BLAKE2b للتحقق من مجموع البيانات والبيانات الوصفية.
- تستخدم مبادرة "الشبكة المفتوحة للتجارة الرقمية" ، وهي مبادرة حكومية هندية، بروتوكول BLAKE-512 لتوقيع طلبات واجهة برمجة التطبيقات (API). [ 22 ]
- يحتوي برنامج checksum ، وهو برنامج تجزئة ملفات ويندوز، على Blake2s كإحدى خوارزمياته [ 23 ].
التطبيقات
بالإضافة إلى التنفيذ المرجعي، [ 6 ] توفر مكتبات التشفير التالية تطبيقات لـ BLAKE2:
بليك 3
BLAKE3 هي دالة تجزئة تشفيرية مبنية على Bao وBLAKE2، ابتكرها جاك أوكونور، وجان فيليب أوماسون، وصامويل نيفيس، وزوكو ويلكوكس-أوهيرن . [ 25 ] أُعلن عنها في 9 يناير 2020، في مؤتمر Real World Crypto . [ 26 ]
يُعدّ BLAKE3 خوارزميةً واحدةً تتميّز بالعديد من الخصائص المرغوبة (التوازي، و XOF ، و KDF ، و PRF، و MAC )، على عكس BLAKE وBLAKE2، وهما عائلتان من الخوارزميات ذات متغيرات متعددة. يتميّز BLAKE3 ببنية شجرية ثنائية ، لذا فهو يدعم درجةً غير محدودة عمليًا من التوازي (SIMD والمعالجة المتعددة) عند توفّر مدخلات طويلة بما يكفي. تُمنح تطبيقات Rust و C الرسمية [ 27 ] ترخيصًا مزدوجًا : ترخيص الملكية العامة ( CC0 ) وترخيص Apache [ 28 ] .
صُممت خوارزمية BLAKE3 لتكون بأقصى سرعة ممكنة، وهي أسرع من BLAKE2 بعدة مرات. تعتمد وظيفة الضغط في BLAKE3 بشكل كبير على وظيفة BLAKE2، مع اختلاف رئيسي يتمثل في تقليل عدد الجولات من 10 إلى 7، وهو تغيير مبني على حجة مفادها أن أساليب التشفير السابقة متحفظة للغاية مقارنةً بسجلات تحليل التشفير الحالية. [ 29 ] بالإضافة إلى توفير التوازي، يسمح تنسيق شجرة ميركل أيضًا بالبث المُتحقق منه (التحقق الفوري) والتحديثات التزايدية. [ 27 ]
مستخدمو BLAKE3
- يدعم نظام بناء Bazel استخدام BLAKE3 كدالة تجزئة الملفات. [ 30 ]
- يستخدم Ccache هذه الخاصية في دالة التجزئة الخاصة به. [ 31 ]
- تعتمد ClickHouse على ذلك. [ 32 ]
- يدعم برنامج Total Commander تقنية BLAKE3 للتحقق من سلامة الملفات.
- يدعم نظام IPFS مرة أخرى تجزئات BLAKE3. [ 33 ]
- يدعم OpenZFS تقنية BLAKE3 بدءًا من الإصدار 2.2
- تستخدم لغة Cargo (Rust) خوارزمية BLAKE3 للتحقق من المجموع الاختباري. [ 34 ]
- ملفات Czkawka بواب https://github.com/qarmin/czkawka
- قدمت LLVM تطبيق BLAKE3. [ 35 ]
- Wasmer هو وقت تشغيل WebAssembly يستخدم تجزئة BLAKE3. [ 36 ]
- يستخدم برنامج CycloneDX، وهو برنامج لتحليل مكونات البرمجيات، هذه الخاصية كجزء من مجموعة وظائف التجزئة الخاصة به. [ 37 ]
- تستخدم Mosaic خوارزمية BLAKE3 بدلاً من SHA-512 (SHA-2) لتوقيعها Ed25519 . [ 38 ]
- يستخدم نظام التحكم في إصدارات Epic Games Lore معالج BLAKE3 لوظيفة العناوين الخاصة به. [ 39 ]
مراجع
- ↑ أوماسون، جان فيليب؛ ماير، ويلي؛ فان، رافائيل سي. دبليو. (2008). "عائلة دوال التجزئة LAKE" (ملف PDF) . في: نيبرغ، كايسا (محرر). سلسلة محاضرات في علوم الحاسوب . التشفير البرمجي السريع . المجلد 5086. سبرينغر . الصفحات 36-53 . doi : 10.1007/978-3-540-71039-4_3 . مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 17 أبريل 2025.
- ↑ أوماسون، جان فيليب (2021). قاموس التشفير: 500 معلومة شيقة لعالم التشفير الفضولي . دار نشر نو ستارش. رقم ISBN 9781718501409.
- ↑ "BLAKE2 – بديل لـ MD5/SHA-1" .
- ↑ أوويلكرونكس، زوكو (21 ديسمبر 2012). "تقديم BLAKE2 - بديل لـ SHA-3 وSHA-2 وMD5" . مؤرشف من الأصل في 5 أكتوبر 2016. تم الاطلاع عليه في 27 يناير 2016 .
- 1 2 "BLAKE2" . blake2.net .
- 1 2 "التطبيقات الرسمية لـ BLAKE2" . GitHub . تم الاطلاع عليه في 7 يوليو 2019 .
- ↑ أوماسون، جان فيليب؛ نيفيس، صموئيل؛ ويلكوكس-أوهيرن، زوكو؛ وينرلين، كريستيان (2013). "BLAKE2: أبسط وأصغر وأسرع من MD5" (ملف PDF) . أرشيف الطباعة الإلكترونية لعلم التشفير . IACR.
- ↑ "BLAKE2X" (ملف PDF) .
- ↑ سارينين، إم جيه؛ أوماسون، جيه بي (نوفمبر 2015). تجزئة التشفير BLAKE2 ورمز مصادقة الرسائل (MAC) . IETF . doi : 10.17487/RFC7693 . RFC 7693. تم الاطلاع عليه في 4 ديسمبر 2015 .
- ↑ "حول Chef Habitat" . docs.chef.io .
- ↑ "coreutils/src/blake2/" . github.com .
- ↑ "librsync/src/blake2/" . github.com .
- ↑ "الورقة البيضاء لأمن واتساب" (ملف PDF) .
- ↑ "برنامج WinRAR لضغط الملفات، أداة قوية لمعالجة ملفات RAR و ZIP" . rarsoft.com .
- ↑ "رد إيغور بافلوف على طلب أحد المستخدمين لدعم BLAKE3 في 7-Zip" . sourceforge.net .
- ↑ "rmlint — وثائق rmlint (2.8.0 Maidenly Moose)" . rmlint.readthedocs.io .
- ↑ "WireGuard: Next Generation Kernel Network Tunnel" (PDF) .
- ↑ "العمل" . docs.nano.org .
- ↑ "التوقيعات" . docs.nano.org .
- ↑ "الاشتقاق الرئيسي" . docs.nano.org .
- ↑ " مولد الأرقام العشوائية في لينكس 5.17 يشهد تحسناً في السرعة، ويتحول من SHA1 إلى BLAKE2s" . www.phoronix.com
- ↑ "توقيع المشترك - بيكن" .
- ↑ "checksum for Windows" . corz.org .
- ↑ "BLAKE3 – وظيفة واحدة، سريعة في كل مكان" (ملف PDF) . GitHub .
- ↑ "حدد إصدار سابق من Bao وضع شجرة مخصص خاص به، والذي تطور في النهاية إلى BLAKE3" . GitHub .
- ↑ "أعلنت أنا وJPA عن BLAKE3 في محادثات RWC السريعة..." Hacker News .
- 1 2 "التطبيقات الرسمية لـ BLAKE3" . GitHub . تم الاطلاع عليه بتاريخ 12 يناير 2020 .
- ↑ «هذا العمل مُتاح للاستخدام العام بموجب ترخيص CC0 1.0. أو بدلاً من ذلك، فهو مرخص بموجب ترخيص أباتشي 2.0» . GitHub .
- ↑ أوماسون، جان فيليب (2020). الإفراط في استخدام العملات المشفرة (ملف PDF) . ندوة العملات المشفرة في العالم الحقيقي.
- ↑ bazelbuild. "الإصدار 6.4.0 · bazelbuild/bazel" . GitHub . تم الاطلاع عليه بتاريخ 25-09-2025 .
- ↑ ccache. "Ccache 4.0" . تم الاطلاع عليه بتاريخ 26-10-2025 .
- ↑ كليك هاوس. "ClickHouse/rust/chcache/Cargo.toml في الفرع الرئيسي · ClickHouse/ClickHouse" . جيت هاب . تم الاسترجاع في 25-09-2025 .
- ↑ ipfs. "إضافة BLAKE3 إلى القائمة المسموح بها · المشكلة رقم 13 · ipfs/go-verifcid" . GitHub . تم الاسترجاع في 25-09-2025 .
- ↑ rust-lang. "الإصدار الأولي من التحقق من نضارة البيانات باستخدام المجموع الاختباري بواسطة Xaeroxe · طلب سحب رقم 14137 · rust-lang/cargo" . GitHub . تم الاطلاع عليه بتاريخ 25-09-2025 .
- ↑ "⚙ D121510 [ الدعم ] تقديم تطبيق دالة التجزئة BLAKE3" . reviews.llvm.org . تم الاطلاع عليه بتاريخ 25-09-2025 .
- ↑ "wasmer/lib/cache/src/hash.rs at 4f935a8c162bf604df223003e434e4f7ca253688 · wasmerio/wasmer" . GitHub . تم الاسترجاع في 25 سبتمبر 2025 .
- ↑ "مرجع بروتوكول CycloneDX الإصدار 1.6" . cyclonedx.org . تم الاطلاع عليه بتاريخ 25-09-2025 .
- ↑ "مواصفات توقيع الفسيفساء" . stevefarroll.github.io . تم الاطلاع عليه بتاريخ 30-09-2025 .
- ↑ "نظام التحكم في إصدارات لور" . lore.org . تم الاطلاع عليه بتاريخ 17-06-2026 .
روابط خارجية
- دوال التجزئة المشفرة
- وظائف الإخراج القابلة للتوسيع
- مسابقة دالة التجزئة التابعة للمعهد الوطني للمعايير والتكنولوجيا
- برامج متاحة للعموم مع شفرة المصدر
- خوارزميات التحقق من المجموع الاختباري
