شرکت ممیزی امنیتی Kudelski Security ابزاری به نام Shufflecake منتشر کرده است که به شما امکان میدهد سیستمهای فایل مخفی پراکنده در فضای آزاد موجود در پارتیشنهای موجود و غیرقابل تشخیص از دادههای باقیمانده تصادفی ایجاد کنید. پارتیشن ها به گونه ای ایجاد می شوند که بدون دانستن کلید دسترسی، اثبات وجود آنها حتی در هنگام انجام تجزیه و تحلیل پزشکی قانونی دشوار است. کد برنامه های کاربردی (shufflecake-userland) و ماژول هسته لینوکس (dm-sflc) به زبان C نوشته شده و تحت مجوز GPLv3 توزیع شده است که باعث می شود ماژول کرنل منتشر شده در هسته اصلی لینوکس به دلیل ناسازگاری با مجوز GPLv2 که هسته تحت آن عرضه می شود.
این پروژه به عنوان یک راه حل پیشرفته تر از Truecrypt و Veracrypt برای مخفی کردن داده هایی که نیاز به محافظت دارند، قرار می گیرد، که دارای پشتیبانی بومی برای پلتفرم لینوکس است و به شما امکان می دهد تا حداکثر 15 پارتیشن مخفی را روی دستگاه قرار دهید، تو در تو در داخل یکدیگر قرار دهید تا تجزیه را گیج کنید. از وجود آنها اگر استفاده از Shufflecake به خودی خود یک راز نباشد، همانطور که می توان برای مثال با وجود ابزارهای مربوطه در سیستم قضاوت کرد، تعداد کل پارتیشن های مخفی ایجاد شده را نمی توان تعیین کرد. پارتیشن های مخفی ایجاد شده را می توان به صلاحدید کاربر فرمت کرد تا هر سیستم فایلی را در خود جای دهد، به عنوان مثال ext4، xfs یا btrfs. هر پارتیشن به عنوان یک دستگاه بلوک مجازی جداگانه با کلید باز کردن قفل خاص خود در نظر گرفته می شود.
برای اشتباه گرفتن ردیابیها، پیشنهاد میشود از مدل رفتار «انکار قابل قبول» استفاده شود، که ماهیت آن این است که دادههای ارزشمند به عنوان لایههای اضافی در بخشهای رمزگذاریشده با دادههای کم ارزش پنهان میشوند و نوعی سلسله مراتب پنهان بخشها را تشکیل میدهند. در صورت فشار، صاحب دستگاه می تواند کلید پارتیشن رمزگذاری شده را فاش کند، اما ممکن است پارتیشن های دیگری (تا 15 سطح تو در تو) در این پارتیشن مخفی باشد و تعیین وجود آنها و اثبات وجود آنها مشکل ساز است.
پنهان کردن با ساخت هر پارتیشن به عنوان مجموعه ای از برش های رمزگذاری شده که در موقعیت های تصادفی روی دستگاه ذخیره سازی قرار می گیرند، به دست می آید. زمانی که فضای ذخیره سازی اضافی در پارتیشن مورد نیاز است، هر تکه به صورت پویا ایجاد می شود. برای دشوارتر کردن تجزیه و تحلیل، برش هایی از بخش های مختلف متناوب می شوند، به عنوان مثال. بخش های کیک مختلط به مناطق به هم پیوسته مرتبط نیستند و برش های همه بخش ها مخلوط می شوند. اطلاعات مربوط به برش های استفاده شده و رایگان در یک نقشه مکان مرتبط با هر پارتیشن ذخیره می شود که توسط یک هدر رمزگذاری شده ارجاع داده می شود. کارت ها و هدر رمزگذاری شده اند و بدون دانستن کلید دسترسی، از داده های تصادفی قابل تشخیص نیستند.
هدر به شکاف هایی تقسیم می شود که هر کدام بخش و برش های مربوط به خود را مشخص می کند. شکافها در هدر انباشته شده و به صورت بازگشتی به هم مرتبط میشوند - شکاف فعلی حاوی کلید رمزگشایی پارامترهای بخش قبلی در سلسلهمراتب است (بخشی که کمتر پنهان شده است)، که اجازه میدهد از یک رمز عبور برای رمزگشایی تمام بخشهای کمتر پنهان مرتبط با آن استفاده شود. بخش انتخاب شده هر پارتیشن کمتر پنهان، برشهای پارتیشنهای تودرتو را آزاد میداند.
بهطور پیشفرض، تمام زیربخشهای Shufflecake دارای اندازه قابل مشاهده یکسان با بخش سطح بالا هستند. به عنوان مثال، اگر سه پارتیشن در یک دستگاه 1 گیگابایتی وجود داشته باشد، هر یک از آنها به عنوان یک پارتیشن 1 گیگابایتی برای سیستم قابل مشاهده خواهد بود و کل فضای دیسک موجود بین همه پارتیشن ها به اشتراک گذاشته می شود - اگر اندازه کل داده های ذخیره شده بیشتر شود. اندازه واقعی دستگاه، شروع خواهد شد یک خطای I/O پرتاب می شود.
بخشهای تودرتو که باز نیستند در تخصیص فضا شرکت نمیکنند، یعنی. تلاش برای پر کردن یک پارتیشن سطح بالا منجر به خرد شدن دادهها در پارتیشنهای تودرتو میشود، اما نشان دادن حضور آنها را از طریق تجزیه و تحلیل اندازه دادههایی که میتوان در پارتیشن قبل از شروع خطا قرار داد، ممکن نمیسازد. فرض بر این است که پارتیشنهای بالایی حاوی دادههای تغییرناپذیر برای منحرف کردن توجه هستند و هرگز به طور جداگانه استفاده نمیشوند، و کار منظم همیشه با آخرین بخش تودرتو انجام میشود، خود این طرح نشان میدهد که حفظ راز وجود مهمتر است. داده ها نسبت به از دست دادن این داده ها).
در واقع، 15 پارتیشن Shufflecake همیشه ایجاد میشود - رمز عبور کاربر به پارتیشنهای استفاده شده متصل میشود و پارتیشنهای استفاده نشده با یک رمز عبور تصادفی تولید میشوند (ممکن است بفهمیم چند پارتیشن واقعاً استفاده شدهاند). هنگامی که پارتیشنهای Shufflecake مقداردهی اولیه میشوند، دیسک، پارتیشن یا دستگاه بلوک مجازی اختصاص داده شده برای قرار دادن آنها با دادههای تصادفی پر میشود، که شناسایی ابردادهها و دادههای Shufflecake را در برابر پسزمینه عمومی غیرممکن میسازد.
اجرای Shufflecake عملکرد نسبتاً بالایی دارد، اما به دلیل وجود سربار، در مقایسه با رمزگذاری دیسک بر اساس زیرسیستم LUKS تقریباً دو برابر کندتر است. استفاده از Shufflecake همچنین منجر به هزینه های اضافی برای RAM و فضای دیسک برای ذخیره داده های سرویس می شود. مصرف حافظه 60 مگابایت در هر پارتیشن و فضای دیسک 1% از حجم کل تخمین زده شده است. برای مقایسه، تکنیک WORAM، از نظر هدف مشابه، منجر به کاهش سرعت 5 تا 200 برابری با کاهش 75 درصدی فضای قابل استفاده دیسک می شود.
جعبه ابزار و ماژول هسته فقط روی دبیان و اوبونتو با هسته های 5.13 و 5.15 (پشتیبانی شده در اوبونتو 22.04) آزمایش شده است. خاطرنشان می شود که پروژه همچنان باید به عنوان یک نمونه اولیه در نظر گرفته شود که نباید برای ذخیره داده های مهم استفاده شود. در آینده، ما قصد داریم بهینه سازی های بیشتری را برای عملکرد، قابلیت اطمینان و امنیت انجام دهیم و همچنین امکان بوت شدن از پارتیشن های Shufflecake را فراهم کنیم.
منبع: opennet.ru