
راقب سجلات شفافية الشهادات بحثًا عن الشهادات ذات مفاتيح EC الخاصة الصغيرة بشكل تافه (فئة المفاتيح الضعيفة eMudhra). P-256/384/521.
اكتشاف شهادات X.509 التي يكون مفتاحها الخاص على المنحنى الإهليلجي عددًا صحيحًا صغيرًا بشكل بديهي (النقطة العامة Q = d*G من أجل d صغير) — فئة الإصدار الخاطئ eMudhra. المنحنيات: P-256، P-384، P-521.
p4mon/ — المراقب الإنتاجي: فاحص Rust في الذاكرة، متتبّع سجل CT، وحدات systemdcommon/ — targets.tsv، answers.tsv (متجهات إجابات معروفة)benchmarks/ — تطبيقات الكاشف بـ rust وc وcpp وgoreference/ — كاشف Python وأدوات المسح CCADB / BSGS| المقياس | القيمة |
|---|---|
| الشهادات المفحوصة | ~220 مليون مشاهدة/يوم → ~11 مليون مفتاح مميز (إزالة تكرار 90% عبر السجلات) |
| المفاتيح الضعيفة المكتشفة | 0 |
| المعالج | ~5% من نواة واحدة (محدّد بحد أقصى 1 نواة، SCHED_IDLE) |
| الذاكرة | ~580 ميغابايت (الذروة 642 ميغابايت، الحد الأقصى 1 غيغابايت) |
| الشبكة | ~30–40 ميغابت/ثانية وارد (~300–430 غيغابايت/يوم)؛ الصادر ضئيل |
| إدخال/إخراج القرص | ~لا شيء (يُحمَّل الجدول مرة واحدة من ذاكرة التخزين المؤقت للصفحات؛ تُكتب النتائج فقط عند وجود إصابة) |
يتوسّع مع حجم إصدار CT. قيس على AWS m7g.large (aarch64)، 16 سجلًا.
cargo build --release --manifest-path p4mon/Cargo.toml
cd p4mon
curl -fsSo loglist.json https://www.gstatic.com/ct/log_list/v3/log_list.json
./target/release/p4mon build table.bin # precompute d*G, d=1..1_000_000 (~80s, once)
./target/release/p4mon selftest # known-answer gate
./target/release/p4mon cert <file> # -> WEAK d=<n> | clean
python3 ct_tail_live.py | ./target/release/p4mon stream table.bin # live tail
تفترض الوحدات أن نسخة المستودع موجودة في /home/ec2-user/p4-inventory/p4mon؛ عدّل المسارات بخلاف ذلك.
cd p4mon
python3 -m pip install --user apprise # delivery library (alerts)
mkdir -p ~/.config/p4mon && cp apprise.txt.example ~/.config/p4mon/apprise.txt
chmod 600 ~/.config/p4mon/apprise.txt # then edit: add your target URL(s)
sudo cp systemd/p4mon-*.service systemd/p4mon-*.path systemd/p4mon-*.timer /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now p4mon-ct.service p4mon-find.path p4mon-report.timer
يجلب p4mon-ct ملف loglist.json تلقائيًا إذا كان مفقودًا (ExecStartPre). تُسلَّم التنبيهات (عند الاكتشاف + اليومية) عبر Apprise إلى أي أهداف تدرجها في ~/.config/p4mon/apprise.txt — البريد الإلكتروني، ntfy، Pushover، Telegram، Slack، webhook، إلخ (انظر apprise.txt.example). لا يوجد أي نموذج لغوي كبير (LLM) في العملية. وعند عدم تكوين أي هدف، يُسجَّل التقرير في الـ journal بدلًا من إرساله.