
CAWODOG एक proof-of-concept परियोजना है जो दर्शाती है कि ऑफ़लाइन औद्योगिक मशीनों पर तैनात Python-आधारित AI मॉडलों की सुरक्षा कैसे की जाए। तीन क्रमिक चरणों (0 → 2) के माध्यम से, परियोजना दर्शाती है: * कैसे एक सरल Python AI एप्लिकेशन को आसानी से रिवर्स-इंजीनियर किया जा सकता है, * कैसे हमलावर पैकेज्ड बाइनरी से मॉडल निकाल सकते हैं, और * कैसे ONNX रूपांतरण, मॉडल एन्क्रिप्शन और एक अलग रनटाइम इंजन का उपयोग करके AI परिनियोजन को मज़बूत किया जाए। PoC एक चंचल डॉग-डिटेक्टर मॉडल (“Cat World Dominance Group”) का उपयोग करता है, ताकि वास्तविक औद्योगिक IP-सुरक्षा अवधारणाओं को स्पष्ट किया जा सके जो AI-संचालित नियंत्रण प्रणालियों, जैसे कि Starlinger के StarX प्लेटफ़ॉर्म, पर लागू होती हैं। यह साथ में दिए गए श्वेतपत्र “Hardening Python IP for Offline Industrial AI Deployments.” के लिए एक संदर्भ कार्यान्वयन के रूप में कार्य करता है।
CAWODOG (Cat World Dominance Group) ऑफ़लाइन औद्योगिक मशीनों पर तैनात Python-आधारित AI मॉडलों की सुरक्षा के लिए एक मनोरंजक लेकिन यथार्थवादी proof-of-concept है।
मुख्य विचार:
कुत्तों (CAWODOG का "दुश्मन") का पता लगाने वाला एक छोटा इमेज क्लासिफायर लें, उसे एक सरल ऐप में लपेटें, और फिर तैनाती को IP चोरी के विरुद्ध उत्तरोत्तर हार्डन करें।
यह PoC एक आंतरिक श्वेतपत्र के साथी के रूप में डिज़ाइन किया गया है:
ऑफ़लाइन औद्योगिक AI तैनातियों के लिए Python IP को हार्डन करना
यह रिपॉजिटरी चरण-दर-चरण प्रदर्शित करती है:
.
├── 0/ # Step 0 – Unhardened baseline
│ ├── model/ # Training + inference code
│ ├── app/ # Gradio-based web UI
│ ├── requirements.txt
│ └── (optional) build / run helpers
│
├── 1/ # Step 1 – Packaged with Nuitka (Level 1)
│ ├── app/ # Same UI, adapted entrypoint
│ ├── model/ # Same model logic as step 0
│ ├── build.sh # Nuitka onefile build script
│ └── requirements.txt
│
├── 2/ # Step 2 – Encrypted ONNX model (Level 2)
│ ├── model/ # Training + ONNX export + encryption
│ ├── engine/ # Engine module (decryption + ONNX runtime + scoring)
│ ├── app/ # UI calling the engine only
│ ├── hardening/ # Encryption key + utilities (dev only)
│ ├── build.sh # Nuitka onefile build script
│ └── requirements.txt
│
└── attacker/ # Attacker tooling (optional, for demo)
├── run_and_extract.sh # Finds Nuitka temp dir and lists contents
├── steal_model.sh # Copies model file out of extracted payload
└── use_stolen_model.py# Uses stolen model in a separate script
python -m venv .venv)git, pip, और बुनियादी कमांड-लाइन परिचितताअधिकांश चरणों के लिए आवश्यकता है:
pip install -r requirements.txt
फ़ोल्डर: 0/
लक्ष्य: एक प्रशिक्षित मॉडल और एक सरल वेब UI के साथ एक सादा Python ऐप। कोई सुरक्षा नहीं।
dog बनाम not_dogmodel_training.py) जो:
data/dog और data/not_dog को स्वतः train/validation में विभाजित करती हैmodel/models/dog_model.ptmodel_inference.py) जो:
dog_model.pt लोड करती हैapp/gradio_app.py) जो:
रिपॉजिटरी रूट से:
cd 0
python -m venv .venv
source .venv/bin/activate # on Windows: .venv\Scripts\activate
pip install -r requirements.txt
डेटा तैयार करें:
0/data/
dog/
<dog images>.jpg
not_dog/
<non-dog images>.jpg
मॉडल प्रशिक्षित करें:
python -m model.model_training
यह कुछ इस प्रकार बनाएगा:
model/models/dog_model.pt
Gradio ऐप चलाएँ:
python -m app.gradio_app
मुद्रित URL खोलें (डिफ़ॉल्ट http://127.0.0.1:7860) और इमेज के साथ परीक्षण करें।
.pt फ़ाइल) के रूप में संग्रहीत है।यह "पहले" वाली तस्वीर है।
फ़ोल्डर: 1/
लक्ष्य: Nuitka का उपयोग करके ऐप को एक एकल निष्पादन योग्य में पैकेज करें।
सुरक्षा प्रभाव: यह इसे एक उत्पाद जैसा दिखाता है, लेकिन IP की सुरक्षा नहीं करता।
app/main.py या cawodog_app.py)build.sh) जो:
--standalone और --onefile के साथ चलाती हैdog_model.pt) को बंडल में शामिल करती हैcawodog_step1_nuitka)।cd 1
source .venv/bin/activate
./build.sh
बिल्डिंग के बाद, आपको कुछ इस प्रकार मिलता है:
./cawodog_step1_nuitka
इसे चलाने से पहले की तरह Gradio UI शुरू होगा, लेकिन अब एक एकल निष्पादन योग्य से।
attacker/ का उपयोग करके)attacker फ़ोल्डर दिखाता है कि एक हमलावर कैसे:
$TMPDIR के अंतर्गत Nuitka onefile अनपैक निर्देशिका का पता लगा सकता हैdog_model.pt कॉपी कर सकता हैuse_stolen_model.py का उपयोग कर सकता हैमुख्य निष्कर्ष: स्तर 1 सार्थक सुरक्षा नहीं है। यह पैकेजिंग है, सुरक्षा नहीं।
फ़ोल्डर: 2/
लक्ष्य: मॉडल स्तर पर वास्तविक IP सुरक्षा प्रस्तुत करें।
सुरक्षा प्रभाव: प्रतिस्पर्धी केवल एक फ़ाइल कॉपी करके मॉडल का उपयोग नहीं कर सकते।
मॉडल प्रारूप रूपांतरण
dog_model.pt को dog_model.onnx में बदलें।मॉडल एन्क्रिप्शन
dog_model.onnx को AES-GCM के साथ एन्क्रिप्ट करके dog_model.enc बनाएँhardening/dev_model.key में संग्रहीत करें (PoC उद्देश्यों के लिए)इंजन एब्स्ट्रैक्शन
engine/core.py प्रस्तुत करें जो:
dog_model.enc को डिक्रिप्ट करता हैpredict_is_dog() और enemy_score() जैसे फ़ंक्शन उजागर करता हैUI ऑर्केस्ट्रेटर के रूप में
app/gradio_app.py अब कच्ची मॉडल फ़ाइलें या आंतरिक विवरण नहीं देखता।cd 2
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
मॉडल को प्रशिक्षित करें (या पुनः उपयोग करें) (चरण 0 के समान, लेकिन 2/ के अंदर):
python -m model.model_training
ONNX में एक्सपोर्ट करें:
python -m model.export_to_onnx
# produces model/models/dog_model.onnx
ONNX मॉडल को एन्क्रिप्ट करें:
python -m hardening.encrypt_model
# produces model/models/dog_model.enc and hardening/dev_model.key
Nuitka के साथ बिल्ड करें (build.sh के माध्यम से):
./build.sh
पूरा होने पर एक कुंजी मुद्रित होगी। प्रोग्राम को एन्क्रिप्टेड मॉडल लोड करने के लिए आपको पर्यावरण चर CAWODOG_MODEL_KEY_HEX को उस कुंजी पर सेट करना होगा। कोई भी भिन्न कुंजी त्रुटि का परिणाम देगी।
परिणामी onefile बाइनरी चलाएँ। UI को पहले जैसा ही व्यवहार करना चाहिए।
dog_model.enc) एन्क्रिप्टेड है।dog_model.enc को सीधे PyTorch में लोड करनायह अभी भी हार्डवेयर रूट ऑफ़ ट्रस्ट से बंधा नहीं है, और एक कुशल रिवर्स-इंजीनियर अंततः मॉडल का पुनर्निर्माण कर सकता है, लेकिन स्तर 1 की तुलना में बाधा काफी अधिक है।
यह PoC निम्न पर केंद्रित है:
यह निम्न का दावा नहीं करता:
विशिष्ट कथात्मक प्रवाह:
चरण 0 – आधार रेखा
चरण 1 – पैकेजिंग (Nuitka onefile)
attacker/ स्क्रिप्ट का उपयोग करें कि मॉडल अभी भी कितनी आसानी से चोरी हो जाता है।चरण 2 – एन्क्रिप्टेड ONNX
dog_model.enc की प्रतिलिपि बनाना अब पर्याप्त नहीं है।आप आगे के भविष्य के स्तरों पर भी चर्चा कर सकते हैं (अभी यहाँ लागू नहीं किए गए हैं):
MIT License
Copyright (c) 2025 Daniel Eder
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.