
ترميز المدى الدوراني (RRC) لإخفاء البيانات — طريقة لغوية فعّالة وآمنة بشكل قابل للإثبات لإخفاء البيانات تدمج الرسائل السرية في نصوص اللغة الطبيعية المولّدة بواسطة نماذج اللغة الكبيرة.
الورقة: Efficient Provably Secure Linguistic Steganography via Range Coding
| الخطوة | الوصف |
|---|---|
| التضمين (Algorithm 3) | تحويل الرسالة السرية إلى قيمة عشرية وتدويرها بشكل تكراري داخل فترة تتقلص بتوجيه من توزيع الاحتمالات لنموذج اللغة وإزاحة مولّدة بواسطة PRNG. تنتج كل خطوة دوران رمزًا واحدًا. |
| الاستخراج (Algorithm 4) | إعادة تشغيل نموذج اللغة على النص المخفي لاستعادة حدود الفترة، ثم عكس التدوير للعودة إلى القيمة العشرية الأصلية وتحويلها إلى ثنائي. |
تعالج آلية التدوير مشكلتين في إخفاء البيانات عبر ترميز المدى التقليدي:
.
├── RRC_embed.py # Embedding (Algorithm 3)
├── RRC_extract.py # Extraction (Algorithm 4)
├── test_roundtrip.py # Self-contained end-to-end verification script
├── requirements.txt # Python dependencies
└── 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.pyيستخدم نوع Decimal في بايثون قسمة مبتورة مع عامل %، مما قد يُرجع بواقٍ سالبة (مثل Decimal('-19672') % Decimal('65536') → -19672 بدلاً من 45864). يستخدم هذا التنفيذ دالة مساعدة decimal_mod تضمن أن النتيجة تكون دائمًا في [0, m):
def decimal_mod(a, m):
return a - m * (a / m).to_integral_value(rounding=ROUND_FLOOR)
⚠️ لاستخراج سري موثوق، تُنقل بعض العمليات (sort، cumsum) إلى وحدة المعالجة المركزية (CPU) بدقة float64 لتجنب عدم الحتمية في CUDA. وهذا يضحي بقدر من السرعة مقابل ضمان اتساق الترميز وفك الترميز.
| الوسيط | الافتراضي | الوصف |
|---|
--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 القادم من المشفّر |