بنية الماسح
بنية الماسح
ماسح DuoKey PQC هو أداة سطر أوامر أصلية مكتوبة بلغة Rust مبنية على Tokio وClap وRustls. يُشحَن بوصفه ملفاً ثنائياً واحداً مع 10 أوامر مسح، وتنفيذ متوازٍ عبر Rayon، ومخرجات بتنسيقات JSON وYAML وHTML وطرفية ANSI وCycloneDX CBOM.
بنية ماسح PQC
واجهة CLI عالية الأداء مبنية على Rust لاكتشاف التشفير ما بعد الكمي وتقييم المخاطر
ماسحات البنية التحتية
إدخال/إخراج غير متزامنالماسحات المتقدمة
قابل للتوسيعتقييم الجاهزية لـ PQC
جرد تشفيري كامل مع تسجيل درجات الضعف الكمي وخارطة طريق للترحيل
تدفق البيانات على المستوى العالي
يتبع كل مسح خط الأنابيب الخماسي المراحل نفسه، من استدعاء سطر الأوامر وصولاً إلى مخرجات التقرير.
تحليل سطر الأوامر (clap 4.5)
يستدعي المستخدم أحد الأوامر الفرعية العشرة (filesystem وdomain وagent وnetwork وserve وci وsourcecode وcompliance وservicenow وcbom). يحلّل Clap الوسائط ويتحقق من المدخلات ويوجّهها إلى الماسح المقابل.
تنفيذ الماسح
يجمع الماسح المحدد البيانات التشفيرية الخام -- مصافحات TLS وملفات الشهادات وأنماط التعليمات البرمجية المصدرية وبيانات KMS السحابية الوصفية أو مفاتيح مضيف SSH. تستخدم الماسحات Tokio للإدخال/الإخراج غير المتزامن وRayon لاجتياز الملفات المتوازي على المعالج.
طبقة المحلّل (PEM / DER / PKCS#12)
تُغذّى البيانات الخام إلى محلّلات خاصة بالتنسيق لـ PEM وDER وPKCS#12 ومخزن شهادات Windows وCBOM، والتي تستخرج بيانات الشهادة الوصفية وخوارزميات المفاتيح ومخططات التوقيع باستخدام حزمتَي x509-parser وschannel.
تقييم المخاطر (0-10)
يمر كل اكتشاف محلَّل عبر محرك تقييم المخاطر، الذي يعيّن درجة مخاطر كمّية من 0 إلى 10، ويُخطّطها إلى مستوى خطورة (من حرجة إلى معلوماتية)، ويعيّن أولوية (من P0 إلى P4)، ويولّد أسباباً وتوصيات قابلة للقراءة البشرية.
تنسيق المخرجات
تُسلسَل ScanResult المُقيَّمة بواسطة مُنسِّق المخرجات المختار -- JSON أو YAML أو HTML أو طرفية ANSI أو CycloneDX 1.7 CBOM -- وتُكتَب إلى ملف أو stdout.
تُهيّئ نقطة دخول الملف الثنائي بيئة تشغيل Tokio غير المتزامنة مع مُشترِك tracing للتسجيل المُهيكَل. جميع عمليات الماسح غير متزامنة أولاً، مع نقل التحليل المرتبط بالمعالج إلى مجمّعات خيوط Rayon.
التسلسل الهرمي للوحدات
يُنظَّم الماسح في مجموعة من المجالات الوظيفية المركّزة، لكل منها مسؤولية واحدة.
| المجال | المسؤولية |
|---|---|
| CLI | 10 أوامر فرعية لـ Clap -- filesystem وdomain وagent وnetwork وserve وci وsourcecode وcompliance وservicenow وcbom |
| Core | بنى البيانات المركزية (Finding وScanResult وRiskAssessment) ومحرك تقييم المخاطر الكمّية |
| Scanners | جامعو البيانات لنظام الملفات والنطاق/TLS والوكيل والشبكة والتعليمات البرمجية المصدرية وKMS السحابي وSSH وFortinet والتقاط الحزم والنطاقات الفرعية |
| Parsers | محلّلات التنسيق لـ PEM وDER وPKCS#12 ومخزن شهادات Windows (schannel) وCycloneDX CBOM |
| Output | مولّدات التقارير -- JSON وYAML وطرفية ANSI وHTML وتصدير CycloneDX 1.7 CBOM |
| Server | خادم ويب Axum 0.7 مع واجهة برمجة تطبيقات REST ودعم WebSocket ومصادقة (OIDC / مفتاح API) |
| Compliance | أكثر من 8 أطر امتثال، وتحليل الفجوات، وإنشاء التقارير (HTML/PDF/JSON) |
| Integrations | واجهة برمجة تطبيقات ServiceNow REST مع حوادث تلقائية ومزامنة CMDB؛ تكامل JFrog Artifactory |
| Configuration | أوضاع المصادقة وCORS وتحديد المعدل والتحقق من المدخلات |
| Entrypoint | نقطة دخول Tokio غير المتزامنة، تهيئة tracing، توجيه CLI |
أوامر سطر الأوامر
بُني سطر الأوامر باستخدام ماكرو derive في Clap 4.5. يُخطَّط كل أمر فرعي إلى ماسح أو خدمة مخصصة.
| الأمر | الوصف |
|---|---|
| filesystem | مسح المسارات المحلية بحثاً عن الشهادات ومخازن المفاتيح (PEM وDER وPKCS#12 وJKS) |
| domain | الاتصال بنقاط نهاية TLS عبر Rustls وفحص المصافحات ومجموعات الشيفرات والشهادات |
| agent | مخزون تشفيري على مستوى النظام -- الشهادات ومخازن المفاتيح ومفاتيح SSH وKMS السحابي |
| network | التقاط شبكة سلبي لحركة المرور التشفيرية (غير مُنفّذ بعد) |
| serve | بدء خادم ويب Axum الذي يعرض نقاط نهاية REST API وWebSocket |
| ci | وضع خط أنابيب CI/CD مع مخرجات SARIF لـ GitHub Actions وGitLab CI وAzure DevOps |
| sourcecode | تحليل ثابت مع أكثر من 150 قاعدة كشف عبر 8 لغات برمجة |
| compliance | تشغيل فحوص الامتثال مقابل أكثر من 8 أطر تنظيمية وإنشاء تحليل الفجوات |
| servicenow | دفع الاكتشافات إلى ServiceNow -- إنشاء الحوادث تلقائياً والمزامنة مع CMDB |
| cbom | تحليل أو إنشاء فاتورة مواد التشفير CycloneDX 1.7 |
بنى البيانات الأساسية
تتشارك جميع نتائج المسح نموذج البيانات نفسه. يضمن هذا مخرجات متسقة بغض النظر عن الماسح الذي أنتج البيانات.
يمثّل Finding أصلاً تشفيرياً واحداً اكتُشف أثناء المسح.
| الحقل | النوع | الوصف |
|---|---|---|
| id | String | مُعرّف فريد للاكتشاف |
| finding_type | Enum | Certificate أو Keystore أو Key أو ConfigFile أو SshKey |
| source | String | الماسح الذي أنتج هذا الاكتشاف |
| location | String | مسار الملف أو عنوان URL أو اسم المضيف حيث عُثر على الأصل |
| certificate | Option<CertificateInfo> | بيانات الشهادة الوصفية المحلَّلة (الموضوع والمُصدِر والخوارزمية وحجم المفتاح والصلاحية) |
| keystore | Option<KeystoreInfo> | تنسيق مخزن المفاتيح والإدخالات المحتواة |
| risk_assessment | RiskAssessment | تقييم المخاطر الكمّية والتوصيات |
| tls_info | Option<TlsInfo> | إصدار بروتوكول TLS ومجموعة الشيفرات وتفاصيل المصافحة |
يُقيَّم كل اكتشاف من حيث القابلية للاختراق الكمّي بواسطة محرك تقييم المخاطر.
| الحقل | النوع | الوصف |
|---|---|---|
| quantum_vulnerable | bool | ما إذا كان الأصل يستخدم خوارزميات قابلة للكسر بواسطة الحواسيب الكمّية |
| quantum_risk_score | f64 (0-10) | 0 = بدون مخاطر (PQC خالص)، 10 = الحد الأقصى للمخاطر (RSA-1024 وDSA-1024) |
| severity | Enum | حرجة أو عالية أو متوسطة أو منخفضة أو معلوماتية |
| priority | Enum | P0 (فوري) وP1 (عاجل) وP2 (مخطط له) وP3 (مراقبة) وP4 (معلوماتي) |
| reasons | Vec<String> | تفسيرات قابلة للقراءة البشرية للدرجة المعيّنة |
| recommendations | Vec<String> | خطوات قابلة للتنفيذ لمعالجة الثغرة |
تُخطَّط درجات المخاطر إلى الأولويات: P0 (الدرجة 9-10، مثل RSA-1024 وتوقيعات MD5) وP1 (7-8، مثل RSA-2048 وSHA-1) وP2 (5-6، مثل RSA-3072) وP3 (2-4، مثل RSA-4096 وECDSA P-384) وP4 (0-1، مثل الخوارزميات الهجينة أو PQC الخالصة).
بنية المخرجات ذات المستوى الأعلى التي تُرجعها كل عملية مسح.
| الحقل | النوع | الوصف |
|---|---|---|
| scan_metadata | ScanMetadata | إصدار الماسح ووضع المسح والتاريخ واسم المضيف والمدة بالثواني |
| findings | Vec<Finding> | جميع الأصول التشفيرية المُكتشَفة أثناء المسح |
| summary | ScanSummary | الأعداد المُجمَّعة حسب الخطورة ونوع الاكتشاف والخوارزمية |
| recommendations | Vec<String> | إرشادات المعالجة ذات المستوى الأعلى بناءً على جميع الاكتشافات |
وحدات الماسح
كل ماسح هو مكوّن مكتفٍ ذاتياً يجمع البيانات التشفيرية الخام من مصدر محدد. الماسحات غير متزامنة (tokio) وتستخدم rayon لاجتياز الملفات المتوازي حيثما ينطبق ذلك.
يجتاز الأدلة بشكل تكراري باستخدام حزمة walkdir، ويكتشف ملفات الشهادات ومخازن المفاتيح حسب الامتداد والبايتات السحرية. يدعم تنسيقات PEM وDER وPKCS#12 وJKS. تُعالَج الملفات بواسطة محلّل التنسيق المقابل.
استراتيجية الكشف:
- مطابقة امتداد الملف (
.pemو.crtو.cerو.derو.p12و.pfxو.jksو.key) - كشف توقيع البايتات السحرية للتنسيقات الثنائية
- عمق دليل قابل للتكوين وأنماط استبعاد
- إدخال/إخراج ملفات متوازٍ عبر مجمّع خيوط Rayon
يتصل بنقاط نهاية TLS باستخدام عميل قائم على rustls 0.23. يلتقط مصافحة TLS الكاملة بما في ذلك إصدار البروتوكول والتفاوض على مجموعة الشيفرات وسلسلة شهادة الخادم ومعاملات تبادل المفاتيح. يدعم تعداد النطاقات الفرعية عبر تكامل WhoisXML API.
يُجري مخزوناً تشفيرياً على مستوى النظام يجمع النتائج من ماسحات فرعية متعددة: شهادات نظام الملفات، ومخزن شهادات Windows (عبر حزمة schannel)، ومفاتيح مضيف SSH، وبيانات KMS السحابية الوصفية (لـ AWS KMS وAzure Key Vault وGCP Cloud KMS).
محرك تحليل ثابت مع أكثر من 150 قاعدة كشف تغطي 8 لغات برمجة. يجتاز أشجار المصدر ويطبّق مطابقة الأنماط القائمة على التعبيرات النمطية لكشف استدعاءات الدوال التشفيرية الضعيفة (مثل RSA_generate_key وECDSA_sign والمفاتيح المُضمَّنة).
القدرات:
- تعريفات أنماط الكشف (الخوارزمية واسم الدالة والخطورة)
- محرك اجتياز الملفات ومطابقة القواعد
- تنسيق مخرجات SARIF لتكامل CI/CD
- موصّلات لمستودعات GitHub وGitLab وAzure DevOps
طبقة المحلّل
تحوّل المحلّلات البيانات الثنائية أو النصية الخام إلى كائنات CertificateInfo وKeystoreInfo مُهيكَلة. تُستدعى بواسطة الماسحات وهي خاصة بالتنسيق.
| المحلّل | الحزمة | التنسيقات المُعالَجة |
|---|---|---|
| PEM | x509-parser | شهادات مُرمَّزة بـ Base64 ومفاتيح خاصة وطلبات CSR |
| DER | x509-parser | شهادات X.509 مُرمَّزة بشكل ثنائي (.der و.cer) |
| PKCS#12 | x509-parser | حزم شهادة/مفتاح محمية بكلمة مرور (.p12 و.pfx) |
| مخزن شهادات Windows | schannel | مخزنا شهادات LocalMachine وCurrentUser على Windows |
| CBOM | serde | فاتورة مواد التشفير CycloneDX (مدخلات JSON) |
محرك تقييم المخاطر
يقيّم محرك تقييم المخاطر كل اكتشاف على مقياس قابلية اختراق كمّي من 0 إلى 10. يراعي التقييم عائلة الخوارزمية وحجم المفتاح ومخطط التوقيع والعوامل السياقية.
| نطاق الدرجة | الأولوية | الخطورة | أمثلة الخوارزميات |
|---|---|---|---|
| 9 - 10 | P0 (فوري) | حرجة | RSA-1024 وDSA-1024 وتوقيعات MD5 وDES و3DES |
| 7 - 8 | P1 (عاجل) | عالية | RSA-2048 وECDSA P-256 وتوقيعات SHA-1 |
| 5 - 6 | P2 (مخطط له) | متوسطة | RSA-3072 وDiffie-Hellman 2048 بت |
| 2 - 4 | P3 (مراقبة) | منخفضة | RSA-4096 وECDSA P-384 وECDSA P-521 |
| 0 - 1 | P4 (معلوماتي) | معلوماتية | ML-KEM وML-DSA وSLH-DSA وخوارزميات PQC الهجينة |
مُنسِّقات المخرجات
يوفر الماسح خمس واجهات خلفية للمخرجات. يحدد علم --format في سطر الأوامر أي مُنسِّق يعرض ScanResult.
| التنسيق | حالة الاستخدام |
|---|---|
| JSON | مخرجات قابلة للقراءة الآلية لخطوط الأنابيب وواجهات برمجة التطبيقات والتكاملات |
| YAML | مخرجات مُهيكَلة قابلة للقراءة البشرية لإدارة التكوين |
| الطرفية (ANSI) | مخرجات وحدة تحكم مُرمَّزة بالألوان مع إبراز الخطورة للاستخدام التفاعلي |
| HTML | تقارير HTML مكتفية ذاتياً للمشاركة مع أصحاب المصلحة |
| CycloneDX CBOM | تصدير فاتورة مواد التشفير CycloneDX 1.7 |
ينتج وضع CI (أمر ci) مخرجات SARIF، وهي مختلفة عن مُنسِّقات المخرجات القياسية. يتكامل SARIF مباشرةً مع GitHub Code Scanning وGitLab SAST وAzure DevOps.
خادم ويب Axum
يبدأ أمر serve خادم ويب Axum 0.7.
- REST API -- نقاط نهاية لبدء عمليات المسح واسترداد النتائج وإدارة التكوين
- WebSocket -- بث تقدّم المسح في الوقت الفعلي إلى العملاء المتصلين
- المصادقة -- أوضاع OIDC ومفتاح API
- CORS -- سياسة عبر المصادر قابلة للتكوين للوحات المعلومات القائمة على المتصفح
- تحديد المعدل -- تقييد الطلبات لمنع إساءة الاستخدام
محرك الامتثال
يقيّم محرك الامتثال اكتشافات المسح مقابل أكثر من 8 أطر تنظيمية وصناعية.
| المكوّن | الغرض |
|---|---|
| المُدقِّق | يقيّم الاكتشافات مقابل قواعد خاصة بالإطار |
| الأطر | تعريفات الأطر -- NIST وBSI TR-02102 وCNSA 2.0 وPCI DSS وFIPS 140-3 وETSI وISO 27001 وSOC 2 |
| محلّل الفجوات | يحدد الفجوات بين الوضع الحالي وحالة الامتثال المستهدفة |
| مولّد التقارير | ينتج تقارير الامتثال بتنسيقات HTML وPDF وJSON |
| محلّل PDF | يستخرج المتطلبات من ملفات PDF لسياسات المؤسسة المخصصة |
التكاملات
يدفع اكتشافات المسح إلى ServiceNow عبر واجهة برمجة تطبيقات REST. يدعم الإنشاء التلقائي للحوادث لاكتشافات P0/P1، ومزامنة CMDB للأصول التشفيرية المُكتشَفة، وسير عمل المزامنة المجدولة. يُشغّل أمر servicenow في سطر الأوامر دورة مسح ودفع كاملة.
القدرات:
- تكامل واجهة برمجة تطبيقات REST لدفع بيانات الثغرات
- الإنشاء التلقائي للحوادث بناءً على عتبات الخطورة
- مزامنة CMDB لمخزون الأصول التشفيرية
- تكرار مزامنة قابل للتكوين (مستمر، مجدول، عند الطلب)

تعرض لوحة معلومات ServiceNow الأصول المعرّضة للمخاطر الكمّية حسب الخطورة وحالة الامتثال وتقدّم المعالجة.
التبعيات الرئيسية
| الحزمة | الإصدار | الغرض |
|---|---|---|
| tokio | 1.x | بيئة تشغيل غير متزامنة لعمليات الإدخال/الإخراج المتزامنة |
| clap | 4.5 | تحليل وسائط سطر الأوامر مع ماكرو derive |
| serde / serde_json / serde_yaml | 1.x | التسلسل وإلغاء التسلسل لـ JSON وYAML وملفات التكوين |
| rustls | 0.23 | تنفيذ عميل TLS لمسح النطاق (بدون تبعية OpenSSL) |
| x509-parser | 0.16+ | تحليل شهادات X.509 وقوائم إبطال الشهادات CRL |
| walkdir | 2.x | الاجتياز التكراري للأدلة لمسح نظام الملفات |
| rayon | 1.x | المعالجة المتوازية للبيانات المرتبطة بالمعالج (تحليل الملفات ومطابقة القواعد) |
| reqwest | 0.12+ | عميل HTTP لواجهات برمجة تطبيقات KMS السحابية وServiceNow وتكاملات موفري git |
| axum | 0.7 | إطار عمل ويب غير متزامن لأمر serve (REST + WebSocket) |
| tracing | 0.1 | التسجيل المُهيكَل والتشخيصات |
| schannel | 0.1 | الوصول إلى مخزن شهادات Windows عبر واجهة برمجة تطبيقات SChannel |
لا يوجد للماسح أي تبعية على OpenSSL. تستخدم عمليات TLS rustls، ويستخدم تحليل الشهادات x509-parser. يلغي هذا فئة كاملة من ثغرات سلسلة التوريد ويبسّط عمليات البناء عبر المنصات.
مبادئ البنية
ملف ثنائي واحد
يُشحَن بوصفه ملفاً تنفيذياً أصلياً واحداً لكل منصة. لا تبعيات وقت تشغيل، ولا JVM، ولا مُفسِّر Python. مجرد نسخ وتشغيل.
غير متزامن أولاً
تستخدم جميع عمليات الإدخال/الإخراج الشبكية Tokio غير المتزامن. تُنقَل الأعمال المرتبطة بالمعالج (تحليل الملفات ومطابقة القواعد) إلى مجمّعات خيوط Rayon لأقصى إنتاجية.
بدون OpenSSL
TLS بلغة Rust الخالصة عبر Rustls وx509-parser. لا تبعيات لمكتبات C للعمليات التشفيرية.
ماسحات معيارية
كل أمر مسح هو وحدة مستقلة. يمكن إضافة ماسحات جديدة دون تعديل التعليمات البرمجية الحالية.