
P-256/384/521 के साथ मामूली रूप से छोटी EC निजी कुंजियों (eMudhra कमजोर-कुंजी वर्ग) वाले प्रमाणपत्रों के लिए Certificate Transparency लॉग की निगरानी करें।
उन X.509 प्रमाणपत्रों का पता लगाएँ जिनकी elliptic-curve निजी कुंजी एक तुच्छ रूप से छोटा पूर्णांक है (छोटे d के लिए सार्वजनिक बिंदु Q = d*G) — eMudhra misissuance वर्ग। Curves: P-256, P-384, P-521।
p4mon/ — उत्पादन मॉनिटर: इन-मेमोरी Rust चेकर, CT-log tailer, systemd यूनिट्सcommon/ — targets.tsv, answers.tsv (ज्ञात-उत्तर वेक्टर)benchmarks/ — rust c cpp go डिटेक्टर कार्यान्वयनreference/ — Python डिटेक्टर और CCADB / BSGS स्वीपर| मीट्रिक | मान |
|---|---|
| स्कैन किए गए प्रमाणपत्र | ~220M sightings/day → ~11M विशिष्ट कुंजियाँ (90% क्रॉस-लॉग डीडुप्लिकेशन) |
| पाई गई कमज़ोर कुंजियाँ | 0 |
| CPU | एक कोर का ~5% (1 कोर पर हार्ड-कैप्ड, SCHED_IDLE) |
| RAM | ~580 MB (शिखर 642 MB, 1 GB कैप) |
| नेटवर्क | ~30–40 Mbit/s इनग्रेस (~300–430 GB/day); इग्रेस नगण्य |
| डिस्क I/O | ~कोई नहीं (तालिका एक बार page cache से लोड होती है; निष्कर्ष केवल हिट पर लिखे जाते हैं) |
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)। अलर्ट (find +
दैनिक) Apprise के माध्यम से उन लक्ष्यों तक पहुँचाए जाते हैं जिन्हें आप
~/.config/p4mon/apprise.txt में सूचीबद्ध करते हैं — email, ntfy, Pushover, Telegram, Slack, webhook,
आदि (देखें apprise.txt.example)। कोई LLM शामिल नहीं है। कोई लक्ष्य कॉन्फ़िगर न होने पर,
रिपोर्ट भेजने के बजाय journal में लॉग की जाती है।