مترجم+مفسّر: اشتق_مفتاح_مرور (PBKDF2) + اشتق_مفتاح (HKDF) — المرحلة ٢ من توسيع مكتبة التشفير#217
Merged
Merged
Conversation
…SHA256) — المرحلة ٢ من توسيع مكتبة التشفير يضيف اشتقاق مفاتيح بطيء الحساب من كلمات المرور (PBKDF2, RFC 8018) واشتقاق مفاتيح فرعيّة من سرّ مشترك (HKDF, RFC 5869)، مبنيّان محليًّا فوق SHA-256/HMAC ذاتيّي التنفيذ (لا OpenSSL/libsodium)، مطابقان حرفيًّا بين المفسّر (C++) والمترجم (LLVM+C). مُتحقَّقان: PBKDF2 عبر تحقّق تفاضليّ بين hashlib.pbkdf2_hmac وبناء HMAC يدويّ مستقلّ (7 حالات)، HKDF مباشرة مقابل شعاعات RFC 5869 الملحق أ.
راجعت أميليا الكود قبل الدفع ووجدت أنّ نسخة المترجم (وقت التشغيل C) كانت تستبدل عدد_التكرارات<=0 بـ1 وطول HKDF<=0 بـ32 صامتًا بدل رفضهما كما يفعل المفسّر — تباعُد سلوكيّ حقيقيّ يُخالف توثيق SoT. كما أُضيف حدّ RFC 5869 §2.3 الأقصى لطول HKDF (8160 بايت = 255×32) الذي كان غائبًا في كلا المحرّكين (عدّاد الكتلة بايت واحد يلتفّ صامتًا فوقه). وُثِّق التباعد المتبقّي في آليّة الإبلاغ عن الخطأ (استثناء بالمفسّر مقابل stderr بالمترجم) في crypto.yaml، بنفس نمط التباعد الموثَّق سلفًا لـفك_تشفير.
|
📚 تذكير مزامنة دليل المطوّرين هذا الـPR يلمس مصادر موثَّقة في دليل المطوّرين. راجع الفصول الآتية وحدّثها إن تغيّر سلوكها، ثم ثبّت البصمات هناك (
بندٌ في معيار الإنجاز. تذكيرٌ آليّ — لا يحجب الدمج. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
الملخّص
المرحلة ٢ من RFC توسيع مكتبة التشفير (
sadlang-rfcs/text/0000-توسيع-مكتبة-التشفير.md)، بعد دمج المرحلتين ٠ (عشوائي_آمن) و١ (بلايك3/هاش_مفتاح، #214/#215).يضيف دالّتين جديدتين لوحدة
تشفير:اشتق_مفتاح_مرور(كلمة_مرور, ملح, عدد_التكرارات)— PBKDF2-HMAC-SHA256 (RFC 8018)، اشتقاق بطيء الحساب عمدًا من كلمة مرور، يُرجع مفتاحًا 32 بايت (سلسلة hex من 64 حرفًا).اشتق_مفتاح(سرّ_مشترك, ملح, سياق_الاستخدام, الطول)— HKDF-SHA256 (RFC 5869)، اشتقاق مفاتيح فرعيّة مستقلّة من سرّ مشترك واحد.كلتاهما ذاتيّتا التنفيذ بالكامل (SHA-256/HMAC مبنيّان محليًّا من الصفر، لا OpenSSL/libsodium)، مطابقتان حرفيًّا في الخوارزميّة بين المفسّر (C++) والمترجم (LLVM + وقت تشغيل C مضمَّن + رابط أندرويد).
التحقّق
hashlib.pbkdf2_hmac(بايثون) وبناء HMAC يدويّ مستقلّ وفق RFC 8018، عبر 7 حالات (تكرار واحد/عدّة كتل ناتج/كلمة مرور فارغة/بايتات صفريّة) — تطابق تامّ.157/158أُعيد حسابهما عبر البرنامج المرجعيّ نفسه (لا شعاعات مكتوبة يدويًّا من الذاكرة — درس من محاولة أولى فاشلة هذه الجولة).مراجعة أميليا (قبل الدفع)
راجعة مستقلّة كشفت 3 علل حقيقيّة، أُصلحت جميعًا في الـcommit الثاني:
عدد_التكرارات<=0/الطول<=0صامتًا (1/32) بدل الرفض كالمفسّر — تباعُد سلوكيّ حقيقيّ يخالف توثيق SoT. أُصلح: رفض صريح (stderr + سلسلة فارغة) في كلا نسختَي C.فك_تشفيرالموثَّق سلفًا).البناء والاختبار
sad-run.exe/sad-build.exe) — نظيف، بلا تحذيرات جديدة.compiler_driver_android_linker.cppتجاوزت حدّ MSVC C2026 (16380 حرفًا) بعد إضافة كتلة KDF — قُسِّمت إلى سلسلتين متتاليتين (rt_file << R"(...)"مرّتين) عند حدّ دالّة نظيف، بنفس نمط إصلاح المرحلة ١.04_تشفير: 9/9 اختبار، 3/3 جولة burn-in، 100% تكافؤ مزدوج بين المفسّر والمترجم.المتبقّي من RFC
شفّر_موثّق/فك_تشفير_موثّق(ChaCha20-Poly1305 AEAD).لا دمج بلا إذن صريح.