
مسح قواعد الأكواد بحثًا عن تشفير معرض للخطر أمام الحوسبة الكمية. كشف RSA، ECDSA، Ed25519، ECDH قبل Q-Day. إخراج CycloneDX CBOM + SARIF.
مسح قواعد الأكواد للكشف عن التشفير المعرض للخطر من الحواسيب الكمومية. احصل على صورة واضحة لما يحتاج إلى الترحيل قبل Q-Day.

يكتشف pqaudit استخدام RSA وECDSA وEd25519 وECDH وDH وغيرها من الخوارزميات التي تتعطل بفعل خوارزمية شور. كما يحدد استخدامات PQC التي تم ترحيلها بالفعل (ML-KEM، ML-DSA، SLH-DSA) حتى تتمكن من تتبع تقدم الترحيل. الإخراج كنص قابل للقراءة البشرية، أو JSON، أو CycloneDX CBOM، أو SARIF لفحص كود GitHub، أو تقرير HTML مستقل.
في 31 مارس 2026، نشرت Google بحثًا يوضح أن كسر ECDSA-256 يتطلب 20 مرة أقل من الكيوبتات مما كان مقدرًا سابقًا — حوالي 1,200 كيوبت منطقي وأقل من 500,000 كيوبت فيزيائي. تفرض CNSA 2.0 التابعة لوكالة الأمن القومي الأمريكية PQC للأنظمة الأمنية الوطنية الجديدة بحلول عام 2027. نافذة الترحيل مفتوحة ولكنها تغلق.
npx pqaudit ./my-project
أو التثبيت عالميًا:
npm install -g pqaudit
pqaudit ./my-project
# فحص الدليل الحالي، إخراج قابل للقراءة البشرية
pqaudit .
# عرض النتائج الحرجة والعالية فقط
pqaudit ./src --severity high
# إنشاء CycloneDX CBOM
pqaudit . --format cbom --output cbom.json
# إنشاء SARIF لفحص كود GitHub
pqaudit . --format sarif --output results.sarif
# وضع CI — كود خروج 1 إذا كانت هناك نتائج حرجة/عالية
pqaudit . --ci
# عرض جميع النتائج بما في ذلك مطابقات التعليقات منخفضة الثقة
pqaudit . --min-confidence 0
# عرض كل ظهور بدلاً من ضمها لكل ملف
pqaudit . --no-dedupe
# تخطي فحص التبعيات
pqaudit . --no-deps
# استخدام قواعد مخصصة
pqaudit . --rules ./my-rules.yaml
# فحص نقاط نهاية TLS/SSH للكشف عن التشفير المعرض للخطر الكمومي
pqaudit . --scan-endpoint api.example.com:443 --scan-endpoint git.example.com:22
# فحص نقاط النهاية فقط (بدون فحص الكود)
pqaudit --scan-endpoint example.com:443 --scan-endpoint example.com:22
| العلم | الوصف | الافتراضي |
|---|---|---|
-f, --format <format> | تنسيق الإخراج: text، json، cbom، sarif، html | text |
-o, --output <file> | كتابة الإخراج إلى ملف | stdout |
-s, --severity <level> | الحد الأدنى من الخطورة: critical، high، medium، low، safe | safe |
--min-confidence <0-100> | تصفية النتائج أقل من عتبة الثقة هذه | 50 |
--no-dedupe | عرض كل التكرارات بدلاً من ضمها لكل ملف | التجميع مفعل |
--no-deps | تخطي فحص التبعيات | فحص التبعيات |
--include <patterns...> | أنماط glob لتضمينها | جميع ملفات المصدر |
--exclude <patterns...> | أنماط glob إضافية لاستبعادها | node_modules, dist, إلخ. |
--rules <path> | مسار ملف YAML للقواعد المخصصة | القواعد المضمنة |
--scan-endpoint <endpoints...> | نقاط نهاية TLS/SSH لفحصها (host:port) | لا شيء |
--network-timeout <ms> | مهلة اتصال الشبكة | 5000 |
--ci | كود خروج 1 إذا كانت هناك نتائج حرجة أو عالية | إيقاف |
pqaudit — ماسح جاهزية التشفير ما بعد الكمومي
تم الفحص: ./my-project
غير جاهز لـ PQC — تم اكتشاف تشفير معرض للخطر الكمومي
الملفات المفحوصة: 65 | النتائج: 12
حرجة: 7 عالية: 2 متوسطة: 1 منخفضة: 0 آمنة: 2
--- حرجة (7) ---
[!!] Ed25519 — تواقيع Ed25519 — معرضة لخوارزمية شور (14 ظهور)
src/crypto/signing.ts:14
> import { sign, verify } from "@noble/ed25519";
الإصلاح: ML-DSA-65 (FIPS 204) أو هجين Ed25519+ML-DSA-65
الثقة: 98% | الجهد: معتدل | عبر: ast
[!!] RSA — توقيع RSA — معرض للتحليل الكمومي (3 ظهور)
src/auth/jwt.ts:42
> jwt.sign(payload, key, { algorithm: "RS256" });
الإصلاح: ML-DSA-65 (FIPS 204)
الثقة: 96% | الجهد: معقد | عبر: ast
[!!] ECDSA — الشهادة تستخدم مفتاح ECDSA 256-bit — معرضة لخوارزمية شور
tls://api.example.com:443
> مفتاح ECDSA 256-bit، TLSv1.3
الإصلاح: خوارزميات شهادة ما بعد الكمومي عند توفرها
الثقة: 100% | الجهد: معقد | عبر: network
...
| الخوارزمية | التهديد | البديل |
|---|---|---|
| RSA (أي حجم مفتاح) | خوارزمية شور | ML-KEM-768 / ML-DSA-65 |
| ECDSA / Ed25519 | شور على المنحنيات الإهليلجية | ML-DSA-65 (FIPS 204) |
| ECDH / X25519 / DH | شور على تبادل المفاتيح | ML-KEM-768 (FIPS 203) |
| DSA | خوارزمية شور | ML-DSA-65 (FIPS 204) |
| الخوارزمية | التهديد | البديل |
|---|---|---|
| AES-128 | جروفر يقلل إلى 64-bit | AES-256 |
| TLS 1.0/1.1، SSLv3 | بروتوكولات مهملة | TLS 1.3 |
| SSH (مكتشف عبر الشبكة) | تبادل مفاتيح DH/ECDH | تبادل مفاتيح هجين PQ |
ML-KEM (Kyber)، ML-DSA (Dilithium)، SLH-DSA (SPHINCS+)، AES-256، ChaCha20-Poly1305، SHA-256، SHA-3
ينشئ فاتورة مواد تشفيرية متوافقة مع CycloneDX 1.6. كل نتيجة تشفيرية تصبح مكون crypto-asset مع cryptoProperties ومستويات أمان كمومية NIST ومواقع الأدلة.
pqaudit . --format cbom --output cbom.json
ينشئ إخراج SARIF 2.1.0 متوافق مع فحص كود GitHub. الرفع عبر github/codeql-action/upload-sarif.
pqaudit . --format sarif --output results.sarif
ملف HTML مستقل مع لوحة تحكم مرئية — تحليل الخطورة، درجة جاهزية PQC، وجدول النتائج. لا تبعيات خارجية، يعمل دون اتصال.
pqaudit . --format html --output report.html
name: PQC Audit
on: [push, pull_request]
jobs:
pqaudit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
- run: npx pqaudit . --format sarif --output pqaudit.sarif --ci
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: pqaudit.sarif
category: pqaudit
يتحقق pqaudit من ملفات البيان للحصول على مكتبات التشفير المعروفة عبر خمسة أنظمة بيئية:
| النظام البيئي | ملفات البيان | أمثلة على الحزم |
|---|---|---|
| npm | package.json | @noble/ed25519، node-rsa، jsonwebtoken، ethers |
| Rust | Cargo.toml | ed25519-dalek، rsa، ring، p256، pqcrypto |
| Go | go.mod | golang.org/x/crypto، cloudflare/circl |
| Python | requirements.txt، pyproject.toml | cryptography، pycryptodome، paramiko |
| Java | build.gradle، pom.xml | BouncyCastle، Google Tink |
المكتبات الآمنة لـ PQC (@noble/post-quantum، pqcrypto، cloudflare/circl) يتم وضع علامة عليها كـ آمنة لتتبع المخزون.
يتم تعريف القواعد في YAML:
- id: MY_CUSTOM_RULE
description: "نمط مخصص معرض للخطر الكمومي"
severity: critical
category: signature
algorithm: MyAlgo
replacement: ML-DSA-65
effort: complex
languages: ["javascript", "typescript"]
patterns:
- "myVulnerableFunction\\("
- "import.*myVulnerableLib"
انظر CONTRIBUTING.md للحصول على مخطط القواعد الكامل وكيفية تقديم قواعد جديدة.
يقوم pqaudit بفحص ملفات التكوين للكشف عن إعدادات التشفير المعرضة للخطر الكمومي:
sshd_config/ssh_configيتم كشف ملفات التكوين بدون امتداد (Dockerfile، sshd_config، ssh_config) تلقائيًا وفحصها.
فحص نقاط نهاية TLS و SSH الحية للكشف عن تكوينات التشفير المعرضة للخطر الكمومي:
pqaudit --scan-endpoint api.example.com:443 --scan-endpoint git.example.com:22
نقاط نهاية TLS (أي منفذ، أو حدد tls://host:port):
نقاط نهاية SSH (المنفذ 22 يتم كشفه تلقائيًا، أو حدد ssh://host:port):
نتائج الشبكة لديها ثقة 100% (حقائق ملاحظة، وليس مطابقات نمطية) وتظهر جنبًا إلى جنب مع نتائج الكود في جميع تنسيقات الإخراج.
يستخدم pqaudit أربع طرق للكشف:
مخطط له:
انظر CONTRIBUTING.md للحصول على إرشادات حول تقديم القواعد وإصلاحات الأخطاء والميزات الجديدة.
MIT