gr-PHYSEC: وحدة GNU Radio لأمن الطبقة الفيزيائية
توفر وحدة GNU Radio هذه إمكانات بصمة القناة لتطبيقات أمن الطبقة الفيزيائية باستخدام نماذج التعلم العميق.
الميزات
- بصمة القناة: استخراج خصائص القناة الفريدة من عينات IQ
- تكامل التعلم العميق: يستخدم نماذج مدرّبة (QExtractor.h5) لاستخراج الميزات
- تكميم الميزات: تحويل الميزات المستخرجة إلى قيم ثنائية
- تضخيم الخصوصية: تطبيق التجزئة التشفيرية (SHA3-512) لتوليد المفاتيح
- المعالجة في الوقت الفعلي: معالجة عينات IQ في الوقت الفعلي من أجهزة SDR
- دعم نماذج متعددة: دعم كل من معماريتي TripletNet وQuadrupletNet
المتطلبات
- GNU Radio 3.10+
- Python 3.8+
- TensorFlow 2.x
- NumPy
- Hashlib (مدمج)
التثبيت
1. استنساخ المستودع
git clone <your-repo-url>/gr-PHYSEC.git
cd gr-PHYSEC
2. إنشاء دليل البناء
3. التهيئة والبناء
4. التثبيت
sudo make install
sudo ldconfig
5. التحقق من التثبيت
يجب أن ترى فئة جديدة [PHYSEC] مع PHYSEC Fingerprint Block.
الاستخدام
GNU Radio Companion (GRC)
- افتح GNU Radio Companion
- ابحث عن فئة
[PHYSEC]
- اسحب وأفلت
PHYSEC Fingerprint Block
- قم بتهيئة المعاملات:
- Model Path: المسار إلى ملف QExtractor.h5 الخاص بك
- Model Type: اختر بين "quadruplet" أو "triplet"
- Spectrogram Size: حجم FFT (الافتراضي: 512)
- Sample Rate: معدل عينات SDR بالهرتز
- Center Frequency: التردد المركزي لـ SDR بالهرتز
- Key Length: طول المفتاح المطلوب بالبتات
نص Python
from gnuradio import gr
from gnuradio import PHYSEC
# Create decoupled PHYSEC blocks
spectrogram = PHYSEC.spectrogram_block(
vector_size=512,
sample_rate=1e6,
center_freq=2.4e9
)
feature_extractor = PHYSEC.feature_extraction_block(
model_path="/path/to/QExtractor.onnx"
)
feature_quantizer = PHYSEC.feature_quantization_block(
threshold_type="mean"
)
parity_generator = PHYSEC.parity_generation_block(
key_length=512
)
reconciler = PHYSEC.reconciliation_block(
key_length=512
)
privacy_amplifier = PHYSEC.privacy_amplification_block()
مثال مخطط التدفق
راجع examples/decoupled_physic_example.grc للحصول على مخطط تدفق كامل يستخدم كتل PHYSEC المفصولة.
معاملات الكتل
كتلة Spectrogram
| Parameter | Type | Default | Description |
|---|
model_path | string | - | المسار إلى ملف نموذج ONNX |
كتلة Feature Quantization
| Parameter | Type | Default | Description |
|---|
threshold_type | string | "mean" | طريقة العتبة: "mean" أو "median" أو "zero" |
كتلة Parity Generation
| Parameter | Type | Default | Description |
|---|
key_length | int | 512 | طول المفتاح الثنائي لتوليد التكافؤ |
كتلة Reconciliation
| Parameter | Type | Default | Description |
|---|
key_length | int | 512 | طول المفتاح الثنائي للمطابقة |
كتلة Privacy Amplification
| Parameter | Type | Default | Description |
|---|
| No parameters required | - | - | يطبّق تجزئة SHA3-512 |
المدخلات/المخرجات
كتلة Spectrogram
- Input: عينات IQ المركبة من SDR
- Output: بيانات مخطط الطيف (204×31 قيمة float)
- Input: بيانات مخطط الطيف (204×31 قيمة float)
- Output: متجه الميزات (512 قيمة float)
كتلة Feature Quantization
- Input: متجه الميزات (512 قيمة float)
- Output: ميزات ثنائية (512 قيمة uint8)
كتلة Parity Generation
- Input: ميزات ثنائية (512 قيمة uint8)
- Output: بتات التكافؤ (string)
كتلة Reconciliation
- Input: ميزات ثنائية + بتات التكافؤ
- Output: مفتاح ثنائي مُطابَق (string)
كتلة Privacy Amplification
- Input: ميزات ثنائية (512 قيمة uint8)
- Output: المفتاح التشفيري النهائي (128 بايت)
تنسيق الرسالة
تحتوي رسالة إخراج البصمة على:
{
"fingerprint": "generated_hash_string",
"block_count": 123,
"sample_rate": 1000000.0,
"center_freq": 2400000000.0,
"spectrogram_size": 512
}
خط أنابيب المعالجة
- جمع عينات IQ: تخزين عينات IQ الواردة مؤقتًا باستخدام Stream to Vector
- إنشاء مخطط الطيف: تحويل عينات IQ إلى مخطط طيف باستخدام STFT، وتطبيع RMS، واقتصاص التردد
- استخراج الميزات: استخدام نموذج ONNX لاستخراج ميزات القناة
- تكميم الميزات: تحويل الميزات إلى قيم ثنائية باستخدام عتبات قابلة للتهيئة
- توليد التكافؤ: توليد بتات تكافؤ Reed-Solomon لتصحيح الأخطاء
- مطابقة المفاتيح: تصحيح الأخطاء باستخدام بتات التكافؤ
- تضخيم الخصوصية: تطبيق تجزئة SHA3-512 لتوليد المفتاح النهائي
- الإخراج: اتصال قائم على التدفق بين الكتل
متطلبات النموذج
يجب أن يقوم نموذج ONNX الخاص بك بما يلي:
- قبول شكل الإدخال:
(batch, 204, 31) لبيانات مخطط الطيف
- إخراج متجهات ميزات بطول 512
- أن يكون متوافقًا مع ONNX Runtime
- دعم إدخال/إخراج float32
استكشاف الأخطاء وإصلاحها
المشكلات الشائعة
- النموذج غير موجود: تأكد من صحة المسار إلى QExtractor.h5
- أخطاء TensorFlow: تحقق من تثبيت TensorFlow وتوافقه
- مشكلات الذاكرة: قلّل spectrogram_size لاستخدام ذاكرة أقل
- الأداء: استخدم تسريع GPU إذا كان متاحًا
إخراج التصحيح
توفر الكتلة معلومات تصحيح موسّعة:
- إخراج وحدة التحكم لحالة المعالجة
- منافذ الرسائل للنتائج الوسيطة
- معالجة الأخطاء برسائل إعلامية
التطوير
إضافة ميزات جديدة
- عدّل الكتلة المتخصصة المناسبة (مثل
spectrogram_block.py)
- حدّث تعريف كتلة GRC المقابل في
grc/
- أعد بناء الوحدة
- اختبر باستخدام الأمثلة
الاختبار
شغّل النص المثالي:
cd examples
python3 fingerprint_example.py
الترخيص
هذا المشروع مرخّص بموجب ترخيص GPL-3.0-or-later.
المساهمة
- اعمل Fork للمستودع
- أنشئ فرعًا للميزة
- أجرِ تغييراتك
- أضف اختبارات إن أمكن
- أرسل طلب سحب
الدعم
للمشكلات والأسئلة:
- راجع قسم استكشاف الأخطاء وإصلاحها
- راجع ملفات الأمثلة
- افتح مشكلة على المستودع
- تواصل مع فريق التطوير
شكر وتقدير
- مبني على أبحاث بصمة قناة PHYSEC
- يستخدم TensorFlow لاستدلال التعلم العميق
- يتكامل مع GNU Radio لمعالجة SDR