يا هبر.
أريد أن أقدم لكم مشروعًا صغيرًا في
لقد قمت بعمل مشروع على التخزين المخفي للمعلومات في نظام الملفات (كذلك خ.س).
يمكن استخدام هذا لسرقة المعلومات السرية لأغراض تعليمية.
تم اختيار نظام Linux FS قديم جدًا كنموذج أولي
تطبيق
اعتبارات التنفيذ
إذا كان من الجيد "إثارة" معيار ext2 ، فيمكننا استبدال ذلك في FS هناك ما يسمى
إذا قمت بتخزين المعلومات المخفية بدون تشفير ، فعندئذ ، على الرغم من أنها ضبابية في FS ، فإنها ستظل واضحة للغاية ، خاصة إذا كان المبرمج يعرف ما الذي يبحث عنه. لذلك ، تقرر تشفير جميع كتل الملف المصدر. اخترت تشفير الكتلة
لفصل الكتل الضرورية عن جميع الكتل الأخرى عند القراءة ، تقرر إضافة علامة خاصة لكل كتلة في بداية الكتلة. تم تشفير هذه العلامة بناءً على رقم الكتلة في الملف المصدر. سمحت هذه الحيلة على الفور ليس فقط بالعثور على الكتل الصحيحة ، ولكن أيضًا لمعرفة ترتيبها الصحيح.
المبدأ العام للنظام.
اكتب الخوارزمية
النقاط:
- أولاً ، اكتب بعض المعلومات إلى نظام الملفات الأصلي ؛
- حذف هذه المعلومات (ليس بالضرورة كلها) ؛
- قسّم الملف لإخفائه في كتل من نفس الطول عن طريق إضافة علامة ؛
- تشفير هذه الكتل ؛
- ضع الكتل المشفرة في كتل FS فارغة.
لعشاق المخططات الانسيابية
يوجد أدناه مخطط كتلة لخوارزمية التسجيل. تستقبل الخوارزمية أربعة ملفات كمدخلات:
-صورة نظام الملفات القابل للتغيير ؛
- ملف خاضع لإخفاء المعلومات ؛
-ملف مع مفتاح تشفير لـ AES ؛
-ملف بعلامة.
وتجدر الإشارة على الفور إلى أن هذه الخوارزمية لها عيب واحد: بعد كتابة الملف إلى FS ، ممنوع اكتب شيئًا جديدًا إلى FS ، نظرًا لأن أي معلومات جديدة يمكن أن تدخل في الكتل التي خصصناها لملفنا المضغوط ، على الرغم من أن هذا يفتح أيضًا إمكانية "التستر بسرعة على الآثار".
لكن من الواضح تمامًا كيف يمكن إصلاح ذلك: من الضروري إعادة كتابة الخوارزمية لكتابة الكتل إلى FS. هذه مهمة مفهومة ولكنها تستغرق وقتًا طويلاً بشكل لا يصدق.
بالنسبة لـ Proof Of Consept ، لم أقم بتنفيذ هذا.
ستكون النتيجة التغييرات التالية في FS ، هذا ما يبدو عليه FS قبل إخفاء المعلومات (تم تسجيل ملف صوتي مسبقًا).
وهذا هو شكل FS مع المعلومات المضغوطة بالفعل.
خوارزمية القراءة
النقاط:
- بمعرفة المفتاح وطريقة إنشاء العلامات ، قم بتكوين العلامات N الأولى ، مع ضمان أن يكون N مضروبًا في طول كتلة نظام الملفات أكبر من طول الملف المضغوط ؛
- ابحث عن الكتل في FS بدءًا من العلامات ؛
- فك تشفير الكتل المتلقاة وعلامات منفصلة ؛
- قم بتجميع الكتل الناتجة بالترتيب الصحيح واحصل على الملف المصدر.
لعشاق المخططات الانسيابية
يوجد أدناه مخطط كتلة لخوارزمية التسجيل. تستقبل الخوارزمية ثلاثة ملفات كمدخلات:
- نظام ملفات الصور ؛
-ملف مع مفتاح تشفير لـ AES ؛
-ملف بعلامة.
بعد تشغيل البرنامج ، يظهر ملف القراءة ، والذي سيكون الملف المستخرج من FS الخفي ، إذا تم تحديد المفتاح أو العلامة بشكل غير صحيح ، فسيكون ملف القراءة فارغًا.
(لمحبي الجمال ، لا يمكنك التداخل ليس فقط في الملف ، ولكن "العنوان" الذي يحتوي على معلومات التعريف: اسم الملف ، الحقوق ، وقت التعديل الأخير ، إلخ.)
إطلاق التشغيل الآلي
للراحة ، تمت كتابة نصوص bash التي تعمل على التشغيل التلقائي على Linux (تم اختبارها على Ubuntu 16.04.3 LTS).
دعنا نلقي نظرة على الإطلاق خطوة بخطوة.
سجل:
- sudo Copy_Flash.sh "DEVICE" - احصل على صورة FS من DEVICE (فلاش) ؛
- ./Write.sh "FILE" "KEY" "MARKER" - إنشاء بيئة افتراضية ، وتنزيل المكتبات الضرورية وتشغيل نص الكتابة ؛
- sudo ./Write_Flash.sh "DEVICE" - إعادة كتابة FS المعدل إلى DEVICE.
القراءة:
- sudo Copy_Flash.sh "DEVICE" - احصل على صورة FS من DEVICE (فلاش) ؛
- ./Read.sh "KEY" 'MARKER "- إنشاء بيئة افتراضية ، وتنزيل المكتبات الضرورية وتشغيل البرنامج النصي للقراءة ؛
- في الدليل الحالي ، افتح ملف القراءة - هذه هي المعلومات المضغوطة.
اختتام
ربما تحتاج طريقة إخفاء المعلومات هذه إلى التحسين واختبارها وتوسيع نطاقها لتشمل أنظمة الملفات الأكثر شيوعًا مثل
لكن الغرض من هذا العمل هو إظهار المبدأ الذي يمكن من خلاله تنفيذ التخزين الخفي للمعلومات في نظام الملفات.
بمساعدة مثل هذه الخوارزميات ، يمكنك تخزين المعلومات بلا خوف ، وإذا كان من الممكن ، بمعرفة المفتاح ، اختراق مثل هذا النظام ليس عن طريق البحث الشامل (ولكن من خلال خوارزمية طويلة جدًا) ، ثم بدون معرفة المفتاح ، هذا النظام يبدو لي أنه مستقر تمامًا ، ومع ذلك ، قد يكون هذا بمثابة سبب لمقال منفصل.
يتم تنفيذ جميع التعليمات البرمجية في الإصدار 3.5.2 من Python.
(نعم ، نعم ، أعلم أنه بالنسبة لنسخة الإنتاج ، يجب أن تكتب شيئًا "سريعًا" ، على سبيل المثال ، في C 😉)
في هذا التنفيذ ، يجب ألا يتجاوز حجم ملف الإدخال لإخفاء البيانات 1000 كيلوبايت.
أريد أن أشكر المستخدم
المصدر: www.habr.com