إخفاء المعلومات عن طريق الملفات: إخفاء البيانات مباشرة في القطاعات

مقدمة قصيرة

إخفاء المعلومات، إذا كان أي شخص لا يتذكر، هو إخفاء المعلومات في بعض الحاويات. على سبيل المثال، في الصور (ناقش هنا и هنا). يمكنك أيضًا إخفاء البيانات في جداول الخدمة لنظام الملفات (تمت الكتابة عن هذا هنا)، وحتى في حزم خدمة بروتوكول TCP. لسوء الحظ، كل هذه الأساليب لها عيب واحد: من أجل "إدراج" المعلومات بشكل غير محسوس في الحاوية، فأنت بحاجة إلى خوارزميات صعبة تأخذ في الاعتبار خصوصيات البنية الداخلية للحاوية. وتنشأ مشاكل تتعلق بمقاومة الحاوية للتلاعب: على سبيل المثال، إذا قمت بتحرير الصورة بشكل طفيف، فسيتم فقدان المعلومات المخفية.

هل من الممكن الاستغناء عن الخوارزميات الماكرة والتلاعب الدقيق بالبيانات بطريقة أو بأخرى، مع الاستمرار في ضمان وظائف الحاوية ومستوى مقبول من أمان البيانات المخفية؟ بالنظر إلى المستقبل، سأقول - نعم، يمكنك ذلك! سأقدم حتى فائدة.

تفاصيل دموية للطريقة

الفكرة الأساسية بسيطة مثل ضربة على الجبهة: هناك مناطق على القرص لا يكتب إليها نظام التشغيل أبدًا (أو يكتب فيها في حالات نادرة). لتجنب الحاجة إلى البحث عن هذه المناطق باستخدام خوارزميات ماكرة، سنستخدم التكرار - أي أننا سنكرر معلوماتنا المخفية عدة مرات عبر جميع قطاعات القرص. بعد ذلك، وفوق كل هذا الروعة، يمكنك إنشاء الأقسام الضرورية وتنسيق أنظمة الملفات وكتابة الملفات وتثبيت أنظمة تشغيل - ومع ذلك، سيتم حفظ جزء من البيانات السرية ويمكن استرجاعها، وسيساعدنا النسخ المتكرر ضع الأصل كله معًا من القطع.

ميزة هذه الطريقة واضحة: نحن لا نعتمد على تنسيق الملف، أو حتى على نوع نظام الملفات المستخدم.

أعتقد أن العيوب واضحة أيضًا:

  • لا يمكن تغيير البيانات السرية إلا عن طريق إعادة كتابة القرص بالكامل، ثم إعادة إنشاء المحتوى المرئي للمستخدم. ومع ذلك، لا يمكنك استخدام البرنامج الذي يعيد إنشاء القرص من صورة: فهو سيقوم أيضًا بإعادة إنشاء البيانات السرية السابقة.
  • كلما زاد حجم البيانات السرية، زاد احتمال فقدان بعض المعلومات.
  • يمكن أن يستغرق استرداد البيانات من القرص وقتًا طويلاً. من عدة دقائق إلى عدة أيام (الأقراص الحديثة كبيرة الحجم).

الآن دعنا ننتقل إلى التفاصيل.

من الواضح أنه إذا قمت ببساطة بتشويه البيانات السرية في جميع أنحاء القرص، فسيتم إخفاؤها فقط عن العين المجردة. إذا قمت بتجهيز نظرتك، على سبيل المثال، بمحرر القرص، فسوف تظهر البيانات بكل مجدها. لذلك، سيكون من الجيد تشفير البيانات حتى لا تظهر. سنقوم بالتشفير ببساطة، ولكن بذوق رفيع: باستخدام خوارزمية aes256-cbc. سنطلب من المستخدم مفتاح التشفير ونسمح له بالتوصل إلى كلمة مرور جيدة.

والسؤال التالي هو كيف يمكننا التمييز بين البيانات "الجيدة" والبيانات السيئة. هنا سوف يساعدنا المجموع الاختباري، ولكن ليس بسيطا، ولكن SHA1. و ماذا؟ إنها جيدة بما يكفي للبوابة، لذا فهي تناسبنا أيضًا. تقرر: نقوم بتزويد كل جزء من المعلومات المخزنة بمجموع اختباري، وإذا تطابق بعد فك التشفير، فهذا يعني أن فك التشفير كان ناجحًا.

ستحتاج أيضًا إلى رقم الجزء والطول الإجمالي للبيانات السرية. رقم الجزء هو تتبع القطع التي قمنا بفك شفرتها بالفعل والأجزاء المتبقية. سيكون الطول الإجمالي مفيدًا لنا عند معالجة الجزء الأخير، حتى لا نكتب بيانات غير ضرورية (أي الحشو). حسنًا، نظرًا لأنه لا يزال لدينا رأس، فسنضيف اسم الملف السري هناك. سيكون مفيدًا بعد فك التشفير حتى لا تخمن كيفية فتحه.

اختبار الطريقة عمليا

للتحقق، لنأخذ الوسيلة الأكثر شيوعًا - محرك أقراص فلاش. لقد وجدت واحدة قديمة بسعة 1 جيجابايت، وهي مناسبة تمامًا للتجارب. إذا كنت، مثلي، توصلت إلى فكرة عدم إزعاج الوسائط المادية، ولكن اختبارها على ملف - صورة قرص، فسأقول على الفور: لن ينجح الأمر. عند تهيئة مثل هذا "القرص"، يقوم Linux بإنشاء الملف مرة أخرى، وسيتم ملء جميع القطاعات غير المستخدمة بالأصفار.

كجهاز يعمل بنظام التشغيل Linux، لسوء الحظ، اضطررت إلى استخدام محطة الطقس على Raspberry Pi 3 الموجود على الشرفة، ولا يوجد الكثير من الذاكرة هناك، لذلك لن نخفي الملفات الكبيرة. نحن نقتصر على الحد الأقصى لحجم 10 ميغابايت. لا فائدة أيضًا من إخفاء الملفات الصغيرة جدًا: تقوم الأداة المساعدة بكتابة البيانات على القرص في مجموعات بحجم 4 كيلو بايت. لذلك، أدناه سنقتصر على ملف بحجم 3 كيلو بايت - فهو يتناسب مع إحدى هذه المجموعات.

سنسخر من محرك الأقراص المحمول على مراحل، ونتحقق بعد كل مرحلة مما إذا كانت المعلومات المخفية قابلة للقراءة:

  1. تنسيق سريع بتنسيق FAT16 بحجم كتلة يبلغ 16 كيلو بايت. هذا ما يقدمه Windows 7 للقيام بمحرك أقراص محمول لا يحتوي على نظام ملفات.
  2. ملء محرك الأقراص المحمول بجميع أنواع القمامة بنسبة 50٪.
  3. ملء محرك الأقراص المحمول بجميع أنواع القمامة بنسبة 100٪.
  4. التنسيق "الطويل" بتنسيق FAT16 (الكتابة فوق كل شيء).

انتهى الاختباران الأولان، كما هو متوقع، بالنصر الكامل: تمكنت الأداة المساعدة من استخراج 10 ميغابايت من البيانات السرية بنجاح من محرك الأقراص المحمول. ولكن بعد امتلاء محرك الأقراص المحمول بالملفات، حدث فشل:

Total clusters read: 250752, decrypted: 158
ERROR: cannot write incomplete secretFile

كما ترون، تم فك تشفير 158 مجموعة فقط بنجاح (632 كيلو بايت من البيانات الأولية، مما يعطي 636424 بايت من الحمولة). من الواضح أنه لا توجد طريقة للحصول على 10 ميغابايت هنا، ومع ذلك، من بين هذه المجموعات هناك نسخ مكررة بشكل واضح. لا يمكنك حتى استرداد 1 ميغابايت بهذه الطريقة. ولكن يمكننا أن نضمن أننا سنستعيد 3 كيلو بايت من البيانات السرية من محرك أقراص فلاش حتى بعد تهيئته وكتابته بسعة. ومع ذلك، تظهر التجارب أنه من الممكن تماما استخراج ملف يبلغ طوله 120 كيلو بايت من محرك الأقراص المحمول هذا.

أظهر الاختبار الأخير، للأسف، أنه تمت الكتابة فوق محرك الأقراص المحمول بالكامل:

$ sudo ./steganodisk -p password /dev/sda
Device size: 250752 clusters
250700 99%
Total clusters read: 250752, decrypted: 0
ERROR: cannot write incomplete secretFile

لم تنج أي مجموعة... حزين، لكنه ليس مأساويًا! قبل التهيئة، دعونا نحاول إنشاء قسم على محرك الأقراص المحمول، وفيه نظام الملفات بالفعل. بالمناسبة، لقد جاء من المصنع بهذا التنسيق بالضبط، لذلك نحن لا نفعل أي شيء مريب.
من المتوقع تمامًا أن تكون المساحة المتوفرة على محرك الأقراص المحمول قد انخفضت قليلاً.

ومن المتوقع أيضًا أنه لا يمكن إخفاء 10 ميغابايت على قرص ممتلئ تمامًا. ولكن الآن تضاعف عدد المجموعات التي تم فك تشفيرها بنجاح!

Total clusters read: 250752, decrypted: 405

لسوء الحظ، من المستحيل تجميع ميغابايت من القطع، ولكن مائتي كيلو بايت أمر سهل.

حسنًا ، الأخبار حول الفحص الرابع الأخير ، هذه المرة مبهجة: التنسيق الكامل لمحرك الأقراص المحمول هذا لم يؤدي إلى تدمير جميع المعلومات! 4 كيلو بايت من البيانات السرية تتناسب تمامًا مع المساحة غير المستخدمة.

جدول ملخص الاختبار:

إخفاء المعلومات عن طريق الملفات: إخفاء البيانات مباشرة في القطاعات

القليل من التنظير: حول المساحة الحرة والقطاعات غير المستخدمة

إذا سبق لك أن قمت بتقسيم محرك الأقراص الثابتة الخاص بك إلى أقسام، فربما لاحظت أنه ليس من الممكن دائمًا تخصيص كل المساحة الحرة على القرص. يبدأ القسم الأول دائمًا ببعض المسافة البادئة (عادةً 1 ميجابايت، أو 2048 قطاعًا). خلف القسم الأخير، يحدث أيضًا أنه لا يزال هناك "ذيل" صغير من القطاعات غير المستخدمة. وأحيانًا تكون هناك فجوات بين الأقسام، وإن كانت نادرة.

بمعنى آخر، هناك قطاعات على القرص لا يمكن الوصول إليها أثناء العمل العادي على القرص، ولكن يمكن كتابة البيانات على هذه القطاعات! وهذا يعني قراءته أيضًا. تم ضبطه بحيث يوجد أيضًا جدول أقسام ورمز أداة تحميل التشغيل الموجودان في المنطقة الفارغة في بداية القرص.

لنأخذ استراحة من الأقسام لبعض الوقت وننظر إلى القرص من منظور علوي، إذا جاز التعبير. هنا لدينا قسم فارغ على القرص. لنقم بإنشاء نظام ملفات فيه. هل يمكننا القول أن بعض القطاعات الموجودة على القرص تظل غير ممسوحة؟

E-e-e - لفة الطبل! الجواب سيكون دائما تقريبا نعم! في الواقع، في معظم الحالات، يتلخص إنشاء نظام الملفات في كتابة بضع كتل فقط من معلومات الخدمة على القرص، وإلا فإن محتويات القسم لا تتغير.

وأيضًا - من الناحية التجريبية البحتة - يمكننا أن نفترض أن نظام الملفات لا يمكنه دائمًا شغل كل المساحة المخصصة له حتى القطاع الأخير. على سبيل المثال، من الواضح أن نظام الملفات FAT16 الذي يبلغ حجمه 64 كيلو بايت لا يمكنه شغل قسم بحجم لا يزيد عن 64 كيلو بايت بشكل كامل. في نهاية هذا القسم، يجب أن يكون هناك "ذيل" من عدة قطاعات، لا يمكن الوصول إليها لتخزين بيانات المستخدم. ومع ذلك، لا يمكن تأكيد هذا الافتراض تجريبيا.

لذلك، لتعظيم المساحة المتاحة لإخفاء المعلومات، تحتاج إلى استخدام نظام ملفات بحجم كتلة أكبر. يمكنك أيضًا إنشاء قسم، حتى لو لم يكن ذلك ضروريًا (على محرك أقراص فلاش، على سبيل المثال). ليست هناك حاجة لإنشاء أقسام فارغة أو ترك مناطق غير مخصصة - فهذا سيجذب انتباه المواطنين المهتمين.

فائدة للتجارب

يمكنك لمس الكود المصدري للأداة المساعدة هنا

للإنشاء، ستحتاج إلى إصدار Qt 5.0 أو أعلى وOpenSSL. إذا لم ينجح شيء ما، فقد تضطر إلى تعديل ملف steganodisk.pro.

يمكنك تغيير حجم المجموعة من 4 كيلو بايت إلى 512 بايت على سبيل المثال (في الملف Secretfile.h). وفي الوقت نفسه، ستزداد تكلفة معلومات الخدمة: يشغل الرأس والمجموع الاختباري مساحة ثابتة قدرها 68 بايت.

تحتاج إلى تشغيل الأداة المساعدة بالطبع باستخدام حقوق المستخدم الجذر وبحذر. لن يتم طرح أي أسئلة قبل الكتابة فوق الملف أو الجهاز المحدد!

يتمتع.

المصدر: www.habr.com

إضافة تعليق