
تحتوي مكتبة Paranoid على تطبيقات لفحوصات نقاط الضعف المعروفة في القطع الأثرية التشفيرية.
يتحقق مشروع Paranoid من نقاط الضعف المعروفة في القطع الأثرية التشفيرية مثل المفاتيح العامة والتوقيعات الرقمية والأرقام العشوائية الزائفة بشكل عام. تحتوي هذه المكتبة على تطبيقات وتحسينات لأعمال قائمة منشورة في الأدبيات. أظهرت الأعمال القائمة أن توليد هذه القطع الأثرية كان معيبًا في بعض الحالات. فيما يلي بعض الأمثلة على المنشورات التي تستند إليها المكتبة.
الهدف هو زيادة الثقة في حالات استخدام التشفير داخل Google وخارجها.
عند التعامل مع التشفير غير المتماثل، تكون القطع الأثرية التشفيرية عادةً:
باستخدام Paranoid، يمكن اختبار أي قطعة أثرية تشفيرية، لكن دافعه الأساسي هو اكتشاف استخدام الصناديق السوداء العتادية أو البرمجية الضعيفة من طرف ثالث. وبالتالي، يمكن استخدام Paranoid حتى عندما لا نكون قادرين على فحص الكود المصدري (الحالة 3 المذكورة أعلاه).
يهدف المشروع إلى اكتشاف الثغرات المعروفة وغير المعروفة على حد سواء. على سبيل المثال، يحاول تحديد الثغرات الناتجة عن أخطاء البرمجة أو استخدام مولّدات أرقام عشوائية احتكارية ضعيفة. اكتشاف الثغرات الجديدة أصعب بالطبع من اكتشاف الثغرات المعروفة. قد تتطلب مثل هذه الاكتشافات مجموعات كبيرة من القطع الأثرية، أو قد تعثر على القطع الضعيفة فقط باحتمالية منخفضة.
لذلك، نحن مهتمون جدًا بتلقي الملاحظات ومعرفة المكتبة التشفيرية التي ولّدت القطع الأثرية التشفيرية الضعيفة (انظر الدعوة للمساهمات ). المشروع في تطور مستمر. بعد التعرف على التطبيقات الضعيفة، تتمثل الخطة في تحليلها وإضافة اكتشافات تستهدفها.
توثيق الفحوصات المنفذة حاليًا موجود في docs. سيتم إثراء التوثيق بمزيد من المحتوى بمرور الوقت.
لمعرفة كيفية استخدام الفحوصات، يمكنك الاطلاع على مجلد examples أو اختبارات الوحدة (ملفات *test.py). توضح الأمثلة اختبار قطع أثرية تشفيرية مختلفة.
استنسخ المستودع:
$ git clone https://github.com/google/paranoid_crypto.git && cd paranoid_crypto
ملاحظة: تم اختبار الأوامر أدناه على إصدار Debian المستقر (bookworm). تأكد من استخدام python3.11 أو أحدث.
ثبّت التبعيات:
$ sudo apt update && sudo apt install python3 python3-full python3-pip python3-pybind11 python3-fpylll python3-gmpy2 protobuf-compiler
أنشئ بيئة افتراضية وفعّلها:
$ python3 -m venv --system-site-packages ~/paranoid-venv
$ source ~/paranoid-venv/bin/activate
ملاحظة: إذا كنت تعرف ما تفعله، يمكنك بدلاً من ذلك تخطي الخطوة التالية واستخدام خيار --break-system-packages مع pip.
ثبّت حزمة بايثون paranoid_crypto:
$ python3 -m pip install .
للتحقق من نجاح التثبيت، يمكنك تشغيل اختبارات الوحدة. على سبيل المثال:
$ cd paranoid_crypto && python3 -m unittest discover -b -p "*test.py"
.................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 305 tests in 314.660s
OK
بدلاً من ذلك، إذا كنت تريد تشغيله داخل حاوية، يمكنك استخدام Dockerfile المرفق كما هو موضح أدناه.
ملاحظة: تأكد من تثبيت docker.
بعد استنساخ المستودع، أنشئ صورة docker:
$ docker build -t paranoid-img .
أنشئ الحاوية وابدأها:
$ docker run --name paranoid-container -it paranoid-img
paranoid-user@6191368b26b8:~$
للتحقق من نجاح التثبيت، يمكنك تشغيل اختبارات الوحدة. على سبيل المثال:
paranoid-user@6191368b26b8:~$ cd paranoid_crypto && python3 -m unittest discover -b -p "*test.py"
.................................................................................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 305 tests in 307.555s
OK
على غرار الأعمال المنشورة الأخرى، كنا نحلل القطع الأثرية التشفيرية من Certificate Transparency (CT)، الذي يسجّل شهادات مواقع الويب الصادرة منذ عام 2013 بهدف جعلها شفافة وقابلة للتحقق. تحتوي قاعدة بياناته على أكثر من 7 مليارات شهادة حتى سبتمبر 2022. بالنسبة لفحوصات Paranoid للمفاتيح العامة EC وتوقيعات ECDSA، لم نعثر حتى الآن على أي قطع أثرية ضعيفة في CT. أما بالنسبة لفحوصات المفاتيح العامة RSA ذات الخطورة العالية أو الحرجة، فلدينا النتائج التالية:
كانت بعض هذه الشهادات منتهية الصلاحية أو ملغاة بالفعل. أما بالنسبة لتلك التي كانت لا تزال نشطة (معظمها من فحص CheckGCD)، فقد أبلغنا سلطات التصديق بها على الفور لإلغائها.
تم تطوير هذه المكتبة وصيانتها بواسطة أعضاء فريق أمان Google، ولكنها ليست منتج Google مدعومًا رسميًا. إذا كنت ترغب في المساهمة، فيرجى قراءة CONTRIBUTING وإرسال طلبات السحب إلينا. يمكنك أيضًا الإبلاغ عن الأخطاء أو تقديم طلبات ميزات.
إذا استخدمت Paranoid في بحثك، يمكنك الاستشهاد به باستخدام BibTeX التالي:
@software{Barbosa_Bleichenbacher_Paranoid_Crypto_2022,
author = {Barbosa, Pedro and Bleichenbacher, Daniel},
license = {Apache-2.0},
month = {8},
title = {{Paranoid Crypto}},
url = {https://github.com/google/paranoid_crypto},
year = {2022}
}
| اسم الاختبار | CVEs ذات الصلة المحتملة | الخطورة | عدد القطع الأثرية الضعيفة |
|---|
| CheckOpensslDenylist | CVE-2008-0166 | SEVERITY_CRITICAL | 3989 |
| CheckROCA | CVE-2017-15361 | SEVERITY_HIGH | 2875 |
| CheckGCD | - | SEVERITY_CRITICAL | 1860 |
| CheckFermat | CVE-2022-26320 | SEVERITY_CRITICAL | 36 |
| CheckContinuedFractions | - | SEVERITY_CRITICAL | 16 |
| CheckBitPatterns | - | SEVERITY_CRITICAL | 6 |
| CheckPermutedBitPatterns | - | SEVERITY_CRITICAL | 6 |
| CheckKeypairDenylist | CVE-2021-41117 | SEVERITY_CRITICAL | 4 |
| CheckPollardpm1 | - | SEVERITY_CRITICAL | 1 |