gr-PHYSEC: भौतिक परत सुरक्षा के लिए GNU Radio मॉड्यूल
यह GNU Radio मॉड्यूल डीप लर्निंग मॉडल का उपयोग करके भौतिक परत सुरक्षा अनुप्रयोगों के लिए चैनल फिंगरप्रिंटिंग क्षमताएं प्रदान करता है।
विशेषताएं
- चैनल फिंगरप्रिंटिंग: IQ नमूनों से अद्वितीय चैनल विशेषताओं को निकालें
- डीप लर्निंग एकीकरण: फीचर निष्कर्षण के लिए प्रशिक्षित मॉडल (QExtractor.h5) का उपयोग करता है
- फीचर क्वांटाइजेशन: निकाले गए फीचर्स को बाइनरी मानों में परिवर्तित करें
- प्राइवेसी एम्प्लिफिकेशन: कुंजी निर्माण के लिए क्रिप्टोग्राफिक हैशिंग (SHA3-512) लागू करें
- रियल-टाइम प्रोसेसिंग: SDR उपकरणों से IQ नमूनों को रियल-टाइम में प्रोसेस करें
- एकाधिक मॉडल समर्थन: 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 Fingerprint Block के साथ एक नई श्रेणी [PHYSEC] दिखनी चाहिए।
उपयोग
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: Hz में SDR सैंपल रेट
- Center Frequency: Hz में 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()
उदाहरण फ्लो ग्राफ
डिकपल्ड PHYSEC ब्लॉक्स का उपयोग करने वाले पूर्ण उदाहरण फ्लो ग्राफ के लिए examples/decoupled_physic_example.grc देखें।
ब्लॉक पैरामीटर
स्पेक्ट्रोग्राम ब्लॉक
फीचर एक्सट्रैक्शन ब्लॉक
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|---|
model_path | string | - | ONNX मॉडल फ़ाइल का पथ |
फीचर क्वांटाइजेशन ब्लॉक
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|---|
threshold_type | string | "mean" | थ्रेशोल्ड विधि: "mean", "median", या "zero" |
पैरिटी जनरेशन ब्लॉक
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|---|
key_length | int | 512 | पैरिटी जनरेशन के लिए बाइनरी कुंजी की लंबाई |
रिकंसिलिएशन ब्लॉक
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|---|
key_length | int | 512 | रिकंसिलिएशन के लिए बाइनरी कुंजी की लंबाई |
प्राइवेसी एम्प्लिफिकेशन ब्लॉक
| पैरामीटर | प्रकार | डिफ़ॉल्ट | विवरण |
|---|
| कोई पैरामीटर आवश्यक नहीं | - | - | SHA3-512 हैशिंग लागू करता है |
इनपुट/आउटपुट
स्पेक्ट्रोग्राम ब्लॉक
- इनपुट: SDR से कॉम्प्लेक्स IQ नमूने
- आउटपुट: स्पेक्ट्रोग्राम डेटा (204×31 फ्लोट मान)
फीचर एक्सट्रैक्शन ब्लॉक
- इनपुट: स्पेक्ट्रोग्राम डेटा (204×31 फ्लोट मान)
- आउटपुट: फीचर वेक्टर (512 फ्लोट मान)
फीचर क्वांटाइजेशन ब्लॉक
- इनपुट: फीचर वेक्टर (512 फ्लोट मान)
- आउटपुट: बाइनरी फीचर्स (512 uint8 मान)
पैरिटी जनरेशन ब्लॉक
- इनपुट: बाइनरी फीचर्स (512 uint8 मान)
- आउटपुट: पैरिटी बिट्स (string)
रिकंसिलिएशन ब्लॉक
- इनपुट: बाइनरी फीचर्स + पैरिटी बिट्स
- आउटपुट: रिकंसाइल्ड बाइनरी कुंजी (string)
प्राइवेसी एम्प्लिफिकेशन ब्लॉक
- इनपुट: बाइनरी फीचर्स (512 uint8 मान)
- आउटपुट: अंतिम क्रिप्टोग्राफिक कुंजी (128 बाइट्स)
संदेश प्रारूप
फिंगरप्रिंट आउटपुट संदेश में शामिल है:
{
"fingerprint": "generated_hash_string",
"block_count": 123,
"sample_rate": 1000000.0,
"center_freq": 2400000000.0,
"spectrogram_size": 512
}
प्रोसेसिंग पाइपलाइन
- IQ सैंपल संग्रह: Stream to Vector का उपयोग करके आने वाले IQ नमूनों को बफर करें
- स्पेक्ट्रोग्राम निर्माण: STFT, RMS नॉर्मलाइजेशन, और फ्रीक्वेंसी क्रॉपिंग का उपयोग करके IQ नमूनों को स्पेक्ट्रोग्राम में परिवर्तित करें
- फीचर एक्सट्रैक्शन: चैनल फीचर्स निकालने के लिए 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 लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।
योगदान
- रिपॉजिटरी को फोर्क करें
- एक फीचर ब्रांच बनाएं
- अपने परिवर्तन करें
- यदि लागू हो तो परीक्षण जोड़ें
- एक पुल रिक्वेस्ट सबमिट करें
समर्थन
समस्याओं और प्रश्नों के लिए:
- समस्या निवारण अनुभाग देखें
- उदाहरण फ़ाइलों की समीक्षा करें
- रिपॉजिटरी पर एक इश्यू खोलें
- विकास टीम से संपर्क करें
आभार
- PHYSEC चैनल फिंगरप्रिंटिंग अनुसंधान पर आधारित
- डीप लर्निंग इन्फरेंस के लिए TensorFlow का उपयोग करता है
- SDR प्रोसेसिंग के लिए GNU Radio के साथ एकीकृत करता है