انتشار اجرای مرجع تابع هش رمزنگاری BLAKE3 1.0

یک پیاده‌سازی مرجع از تابع هش رمزنگاری BLAKE3 1.0 منتشر شد که به دلیل عملکرد بسیار بالای محاسباتی هش آن در عین اطمینان از قابلیت اطمینان در سطح SHA-3 قابل توجه است. در آزمایش تولید هش برای یک فایل 16 کیلوبایتی، BLAKE3 با کلید 256 بیتی SHA3-256 17 برابر، SHA-256 14 برابر، SHA-512 9 برابر، SHA-1 6 برابر و BLAKE2b بهتر است - 5 بار. هنگام پردازش مقادیر بسیار زیاد داده، شکاف قابل توجهی باقی می ماند، برای مثال، هنگام محاسبه هش برای 3 گیگابایت داده تصادفی، BLAKE256 8 برابر سریعتر از SHA-1 بود. کد پیاده‌سازی مرجع BLAKE3 در نسخه‌های C و Rust تحت مجوز دو دامنه عمومی (CC0) و Apache 2.0 در دسترس است.

انتشار اجرای مرجع تابع هش رمزنگاری BLAKE3 1.0

تابع هش برای برنامه هایی مانند بررسی یکپارچگی فایل، احراز هویت پیام و تولید داده برای امضاهای دیجیتال رمزنگاری طراحی شده است. BLAKE3 برای هش کردن گذرواژه‌ها در نظر گرفته نشده است، زیرا هدف آن محاسبه هش‌ها در سریع‌ترین زمان ممکن است (برای گذرواژه‌ها، توصیه می‌شود از توابع هش آهسته yescrypt، bcrypt، scrypt یا Argon2 استفاده کنید). تابع هش مورد بررسی به اندازه داده های هش شده حساس نیست و از حملات در انتخاب برخورد و یافتن تصویر اولیه محافظت می شود.

این الگوریتم توسط متخصصان رمزنگاری معروف (جک اوکانر، ژان فیلیپ اوماسون، ساموئل نئوس، زوکو ویلکاکس-اوهرن) توسعه داده شد و توسعه الگوریتم BLAKE2 را ادامه می‌دهد و از مکانیزم Bao برای رمزگذاری درخت زنجیره بلوک استفاده می‌کند. . بر خلاف BLAKE2 (BLAKE2b، BLAKE2s)، BLAKE3 یک الگوریتم واحد را برای همه پلتفرم‌ها ارائه می‌کند که به عمق بیت و اندازه هش وابسته نیست.

افزایش عملکرد با کاهش تعداد دور از 10 به 7 و هش کردن بلوک ها به طور جداگانه در قطعات 1 کیلوبایتی به دست آمد. به گفته سازندگان، آنها اثبات ریاضی قانع‌کننده‌ای پیدا کرده‌اند که نشان می‌دهد می‌توان با حفظ همان سطح اطمینان، به جای 7 دور، با 10 دور به پایان رسید (برای وضوح، می‌توان مثالی را با مخلوط کردن میوه در مخلوط کن - بعد از 7 ثانیه ارائه داد. میوه از قبل کاملاً مخلوط شده است و 3 ثانیه دیگر بر قوام مخلوط تأثیر نمی گذارد). با این حال، برخی از محققان شک دارند و معتقدند که حتی اگر 7 راند در حال حاضر برای مقابله با همه حملات شناخته شده در هش کافی باشد، در صورت شناسایی حملات جدید در آینده، 3 دور اضافی ممکن است مفید باشد.

در مورد تقسیم به بلوک ها، در BLAKE3 استریم به قطعات 1 کیلوبایتی تقسیم می شود و هر قطعه به طور مستقل هش می شود. بر اساس هش قطعات، یک هش بزرگ بر اساس درخت مرکل باینری تشکیل می شود. این تقسیم به ما امکان می دهد مشکل موازی سازی پردازش داده ها را هنگام محاسبه هش حل کنیم - به عنوان مثال، می توانید از دستورالعمل های SIMD 4 رشته ای برای محاسبه همزمان هش های 4 بلوک استفاده کنید. توابع هش SHA-* سنتی داده ها را به صورت متوالی پردازش می کنند.

ویژگی های BLAKE3:

  • عملکرد بالا، BLAKE3 به طور قابل توجهی سریعتر از MD5، SHA-1، SHA-2، SHA-3 و BLAKE2 است.
  • امنیت، از جمله مقاومت در برابر حملات طولانی شدن پیام که SHA-2 به آن حساس است.
  • موجود در Rust، بهینه سازی شده برای دستورالعمل های SSE2، SSE4.1، AVX2، AVX-512، و NEON.
  • اطمینان از موازی سازی محاسبات در هر تعداد رشته و کانال SIMD.
  • امکان به روز رسانی تدریجی و پردازش تایید شده جریان ها.
  • استفاده در حالت های PRF، MAC، KDF، XOF و به عنوان هش معمولی.
  • یک الگوریتم واحد برای همه معماری ها، سریع در هر دو سیستم x86-64 و پردازنده های 32 بیتی ARM.

تفاوت های اصلی بین BLAKE3 و BLAKE2:

  • استفاده از ساختار درختی باینری که امکان موازی سازی نامحدود در محاسبات هش را فراهم می کند.
  • کاهش تعداد دور از 10 به 7.
  • سه حالت کار: هش، هش با کلید (HMAC) و تولید کلید (KDF).
  • به دلیل استفاده از ناحیه ای که قبلاً توسط بلوک پارامترهای کلیدی اشغال شده بود، هنگام هش کردن با یک کلید، هزینه اضافی وجود ندارد.
  • مکانیزم عملیاتی داخلی به شکل یک عملکرد با نتیجه گسترده (XOF، عملکرد خروجی قابل توسعه)، که امکان موازی سازی و موقعیت یابی (جستجو) را فراهم می کند.

منبع: opennet.ru

اضافه کردن نظر