
प्रमाणित रूप से सुरक्षित भाषाई स्टेग्नोग्राफी जो रोटेशन रेंज-कोडिंग के माध्यम से LLM-उत्पन्न पाठ में गुप्त संदेश छिपाती है। इसमें embed, extract, और round-trip verification स्क्रिप्ट शामिल हैं।
रोटेशन रेंज-कोडिंग (RRC) स्टेगानोग्राफी — एक कुशल और प्रमाणित रूप से सुरक्षित भाषाई स्टेगानोग्राफिक विधि जो बड़े भाषा मॉडलों द्वारा उत्पन्न प्राकृतिक-भाषा पाठ में गुप्त संदेशों को एम्बेड करती है।
पेपर: Efficient Provably Secure Linguistic Steganography via Range Coding
| चरण | विवरण |
|---|---|
| एम्बेड (एल्गोरिदम 3) | गुप्त संदेश को एक दशमलव मान में बदलें और LM के प्रायिकता वितरण और PRNG-जनित ऑफसेट द्वारा निर्देशित एक सिकुड़ते अंतराल के भीतर इसे पुनरावृत्त रूप से रोटेट करें। प्रत्येक रोटेशन चरण एक टोकन उत्पन्न करता है। |
| निकालें (एल्गोरिदम 4) | स्टेगोटेक्स्ट पर LM को पुनः चलाकर अंतराल सीमाएँ प्राप्त करें, फिर मूल दशमलव मान पर वापस रिवर्स-रोटेट करें और इसे बाइनरी में बदलें। |
रोटेशन तंत्र सामान्य रेंज-कोडिंग स्टेगानोग्राफी की दो समस्याओं को हल करता है:
.
├── RRC_embed.py # एम्बेडिंग (एल्गोरिदम 3)
├── RRC_extract.py # निकालना (एल्गोरिदम 4)
├── test_roundtrip.py # स्व-निहित एंड-टू-एंड सत्यापन स्क्रिप्ट
├── requirements.txt # Python निर्भरताएँ
└── README.md
निर्भरताएँ स्थापित करें:
pip install -r requirements.txt
राउंड-ट्रिप परीक्षण meta-llama/Llama-2-7b-hf का उपयोग करता है और CPU/CUDA पर चलता है:
python test_roundtrip.py
अपेक्षित आउटपुट:
>>> Step 3: Verification
Original: 10110011001010111010011100101011...
Extracted: 10110011001010111010011100101011...
✅ SUCCESS — extracted message matches perfectly!
एक प्रॉम्प्ट्स फ़ाइल 0.Prompts.tsv तैयार करें जिसमें कॉलम idx और text हों, फिर चलाएँ:
python RRC_embed.py \
--language_model meta-llama/Llama-3.1-8B \
--bit_length 128 \
--key 42 \
--top_k -1
python RRC_extract.py \
--language_model meta-llama/Llama-3.1-8B \
--bit_length 128 \
--key 42 \
--input_file 1.RC_decimal_Llama-3.1-8B_bit128.tsv
⚠️ महत्वपूर्ण: प्रेषक और प्राप्तकर्ता को सही निष्कर्षण के लिए समान भाषा मॉडल, कुंजी, बिट लंबाई और top-k सेटिंग का उपयोग करना चाहिए।
RRC_embed.pyRRC_extract.pyPython का Decimal प्रकार % ऑपरेटर के लिए छोटा विभाजन का उपयोग करता है, जो ऋणात्मक शेषफल लौटा सकता है (उदाहरण: Decimal('-19672') % Decimal('65536') → 45864 के बजाय -19672)। यह कार्यान्वयन एक decimal_mod हेल्पर का उपयोग करता है जो गारंटी देता है कि परिणाम हमेशा [0, m) में हो:
def decimal_mod(a, m):
return a - m * (a / m).to_integral_value(rounding=ROUND_FLOOR)
⚠️ विश्वसनीय गुप्त निष्कर्षण के लिए, CUDA गैर-नियतिवाद से बचने के लिए कुछ संचालन (sort, cumsum) को float64 परिशुद्धता पर CPU पर ऑफलोड किया जाता है। यह गारंटीड एनकोड-डीकोड स्थिरता के लिए कुछ गति का व्यापार करता है।
| तर्क | डिफ़ॉल्ट | विवरण |
|---|
--language_model | meta-llama/Llama-3.1-8B | HuggingFace मॉडल पहचानकर्ता |
--bit_length | 128 | गुप्त संदेश की बिट्स में लंबाई |
--top_k | -1 | Top-k ट्रंकेशन; -1 = पूर्ण शब्दावली |
--key | 42 | सममित कुंजी K (PRNG बीज) |
--part / --part_max | 0 / 2 | बड़े प्रॉम्प्ट सेट पर समानांतर निष्पादन के लिए |
| तर्क | डिफ़ॉल्ट | विवरण |
|---|
--language_model | meta-llama/Llama-3.1-8B | एम्बेडिंग मॉडल से मेल खाना चाहिए |
--bit_length | 128 | एम्बेडिंग सेटिंग से मेल खाना चाहिए |
--top_k | -1 | एम्बेडिंग सेटिंग से मेल खाना चाहिए |
--key | 42 | एम्बेडिंग कुंजी से मेल खाना चाहिए |
--input_file | (आवश्यक) | एन्कोडर से TSV का पथ |