Skip to content

مترجم+مفسّر: وحدة تشفير جديدة — بلايك3 + هاش_مفتاح (BLAKE3) (المرحلة ١)#215

Merged
SalehKadah merged 2 commits into
devfrom
agent/crypto-phase1-blake3-hmac
Jul 20, 2026
Merged

مترجم+مفسّر: وحدة تشفير جديدة — بلايك3 + هاش_مفتاح (BLAKE3) (المرحلة ١)#215
SalehKadah merged 2 commits into
devfrom
agent/crypto-phase1-blake3-hmac

Conversation

@SalehKadah

Copy link
Copy Markdown
Collaborator

الملخّص

المرحلة ١ من RFC توسيع مكتبة التشفير:
وحدة تشفير جديدة (منفصلة عن تأكيدات، بلا كسر توافق — استورد تشفير
يحمّل الآن الحزمتين معًا) بدالّتين ذاتيّتَي التنفيذ بالكامل (بلا
OpenSSL/libsodium):

  • بلايك3(نص) — هاش BLAKE3-256، نصّ ست عشريّ 64 حرفًا.
  • هاش_مفتاح(نص، مفتاح) — مصادقة رسالة عبر نمط BLAKE3 المُفتاح الرسميّ (لا
    HMAC تقليديّ — لا حاجة لحماية من هجمات امتداد الطول، النمط جزء أصيل من
    التصميم). مفتاح 32 بايت يُستعمَل مباشرة؛ غير ذلك يُشتقّ منه مفتاح 32 بايت
    عبر بلايك3(مفتاح) أوّلًا.

التحقّق (BLAKE3 خوارزميّة غير تافهة — شجرة Merkle مجزّأة، لا SHA-256 بسيط)

نُفِّذت في ثلاث نسخ مستقلّة يجب أن تتّفق حرفيًّا: المفسّر (C++)، وقت
تشغيل المترجم (C)، ونسخة أندرويد المنفصلة (تعلّم من درس PR #212 — لا تُنسى
هذه المرّة). التحقّق قبل الدمج:

  1. تنفيذ مرجعيّ بايثون مقابل 35 شعاعًا رسميًّا كاملًا من test_vectors.json
    (مستودع BLAKE3-team) — 0 فشل (نمطا hash وkeyed_hash).
  2. تنفيذ مرجعيّ C محمول مقابل نفس الشعاعات الـ35 عبر أطوال من 0 إلى 16384
    بايت (كتلة واحدة/عدّة كتل/عدّة قطع شجرة) — 0 فشل.
  3. الدوال الفعليّة في sad_embedded_runtime.c وbuiltin_module_crypto.cpp
    اختُبِرت تفاضليًّا مقابل المرجع المُتحقَّق — 0 تباين.
  4. اختبار طرفيّ: برنامج مُشغَّل بالمفسّر ومُصرَّف بالمترجم — ناتج
    مطابق حرفيًّا، بلايك3("") يطابق الشعاع الرسميّ.

عائق بناء عولج

إضافة كتلة BLAKE3 (~360 سطرًا) لحرف Android الخام (R"(...)") أفشلت MSVC
بـC2026 "string too big" رغم أنّ الحرف ~21.7KB فقط (تحت حدّ 65535 المُوثَّق)
— يبدو أنّ MSVC يفرض حدًّا عمليًّا أدنى للحروف الخام تحديدًا. الحلّ: تقسيمه
إلى نداءين << منفصلين بدل حرف واحد ضخم — تحقّقت أميليا بايتيًّا أنّ محتوى
الملفّ المكتوب لم يتغيّر.

التغييرات

  • language-truth/builtins/crypto.yaml (جديد) + _index.yaml — SoT لوحدة تشفير.
  • interpreter/src/builtins/builtin_module_crypto.cpp (جديد) — BLAKE3 C++.
  • tools/compiler/runtime/sad_embedded_runtime.c — BLAKE3 C + sad_blake3_hash/sad_blake3_keyed_hash.
  • tools/compiler/compiler_driver_android_linker.cpp — نفس الدوال لأندرويد (+إصلاح C2026).
  • compiler/src/frontend/builders/builtins_crypto.cpp (جديد) + SIR opcodes جديدة + مولِّد LLVM.
  • interpreter/src/builtins/builtin_registry.cppاستورد تشفير يحمّل الحزمتين (قديمة+جديدة).
  • اختباران جديدان 04_تشفير/155،156 (شعاعات BLAKE3 رسميّة + BLAKE3 keyed_hash رسميّ) + تحديث COVERAGE.md.

خطة الاختبار

  • python x.py build --config Debug نجح.
  • 04_تشفير/ كاملًا (6 ملفّات) 100% تكافؤ مزدوج، burn-in 5 جولات نظيف.
  • 01_مدمج/ (21 ملفًّا) بلا انحدار.
  • python x.py gen --check نظيف.
  • مراجعة أميليا المستقلّة قبل الدفع — تحقّقت من صحّة خوارزميّة BLAKE3 بنيويًّا (لا الثقة بالاختبارات فقط) وبايتيّة تقسيم الحرف الخام — لم تجد علّة.

…١ من RFC توسيع مكتبة التشفير)

يضيف وحدة `تشفير` (منفصلة عن `تأكيدات`، بلا كسر توافق — استورد تشفير
تحمّل الآن كلتا الحزمتين معًا) بدالّتين ذاتيّتَي التنفيذ بالكامل (بلا
OpenSSL/libsodium): بلايك3 (هاش BLAKE3) وهاش_مفتاح (مصادقة رسالة عبر
نمط BLAKE3 المُفتاح الرسميّ — أحدث وأبسط من HMAC التقليديّ، لا يحتاج
حماية من هجمات امتداد الطول).

التنفيذ (مفسّر C++ + وقت تشغيل المترجم C + نسخة أندرويد المنفصلة) مُتحقَّق
مقابل 35 شعاعًا رسميًّا من test_vectors.json (مستودع BLAKE3-team) عبر
تحقّق تفاضليّ مستقلّ قبل الدمج، بتغطية أطوال من صفر إلى 16384 بايت
(كتلة واحدة/عدّة كتل/عدّة قطع في شجرة Merkle) لكلا نمطَي الهاش والمُفتاح.

يعالج قيدًا في MSVC (C2026 "string too big") ظهر عند تكبير الحرف الخام
لوقت تشغيل أندرويد المضمَّن — يُقسَّم إلى نداءين << بدل حرف واحد ضخم،
بلا تغيير في محتوى الملفّ المكتوب.
@github-actions

Copy link
Copy Markdown

📚 تذكير مزامنة دليل المطوّرين

هذا الـPR يلمس مصادر موثَّقة في دليل المطوّرين. راجع الفصول الآتية وحدّثها إن تغيّر سلوكها، ثم ثبّت البصمات هناك (python scripts/check_sync.py --update):

بندٌ في معيار الإنجاز. تذكيرٌ آليّ — لا يحجب الدمج.

…ake3-hmac

# Conflicts:
#	tests/behavior/sections/09_المكتبة_القياسية/COVERAGE.md
@SalehKadah
SalehKadah merged commit ae219a4 into dev Jul 20, 2026
36 of 39 checks passed
@SalehKadah
SalehKadah deleted the agent/crypto-phase1-blake3-hmac branch July 20, 2026 05:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant