استفاده از رمزنگاری داده ها یکی از موارد امنیتی هستش که در بخش های مختلف مورد استفاده قرار میگیره. یکی از بخش هایی که از این رمزنگاری استفاده میشه ، استفاده از اون برای محافظت از دیسک ها هستش. یعنی افراد با رمز کردن کل محتوای هاردشون ، از داده های خودشون محافظت میکنن. در این حالت صرفا فردی که پسورد رمزگشایی هارد رو داره ، میتونه به محتوای داده ها دسترسی داشته باشه.
این تکنیک علاوه بر اینکه دسترسی افراد رو محدود میکنه ، در صورتیکه سیستمون به سرقت بره هم امکان دسترسی به داده ها رو نمیده.
اغلب سیستم عامل ها از رمزنگاری کامل دیسک، full disk encryption یا FDE ، پشتیبانی میکنن مثلا در لینوکس LUKS رو داریم ، در اپل FileVault و در ویندوز BitLocker .
BitLocker یه محصول انحصاری برای مایکروسافت هستش و بنابراین ما دسترسی به کدهای اون نداریم. البته الگوریتمی که استفاده میکنه، AES و مدهای block encryption اش یعنی CBC و XTS ، بصورت عمومی در دسترس هستن و مورد ارزیابی قرار گرفتن.
اما این ارزیابی ها به خودی خود امنیت و ایمنی رو تضمین نمیکنن. چرا که در دنیای رمزنگاری ، الگوریتم هایی بودن که براساس فرمولهای ریاضی اثبات شدن ، اما پس از اجرای نادرست ، آسیب پذیر بودن. حملات side-channel از جمله حملاتی هستن که این الگوریتمهارو تحت شعاع قرار میدن.
با ارائه BitLocker برخی کاربران از این ویژگی استفاده کردن و برخی به سمت ابزارهای متن باز مانند TrueCrypt رفتن.
اما این استفاده با مشکلاتی روبرو شد. مشخص شد که بروزرسانی های ویندوز (feature update) با روشهای مختلف رمزگذاری دیسک که از سوی فروشندگان مستقل از مایکروسافت میان، ناسازگاره. علت اون هم این بود که برخی از بروزرسانی ها از WinPE استفاده میکردن که خودش یه سیستم عامله و بنابراین مانند ویندوزهای کلاسیک برای رمزگشایی نیاز به درایورهای اختصاصی داره تا رمزگذاری رو درک کنه.
با این مشکلات برخی از کاربران همچنان انتخابشون ، برنامه های متن باز بود. فقط هنگام بروزرسانی ، سیستم رو از حالت رمزنگاری خارج میکردن و بعد بروزرسانی دوباره به حالت رمزگذاری شده در می آوردن.
این روش در سازمانهای بزرگ با هاردهای مکانیکی 2 اینچی جواب نمیداد. چون این فرایند ممکن بود تا 24 ساعت زمان ببره. بنابراین کاربران دوباره به سمت BitLocker اومدن و این ابزار گزینه انتخابیشون شد.
البته امروز دیگه اون مشکلات WinPE وجود نداره اما خیلی سخته که محیط بزرگ مبتنی بر ویندوزی رو هم پیدا کنید که از BitLocker استفاده نکنه.
BitLocker چطوری کاری میکنه :
BitLocker اساسا یه درایور سطح پایینه. سه تا کلید اینجا برای ما مهمه :
- کلید Full Volume Encryption Key (FVEK) : این کلید برای رمزگذاری و رمزگشایی استفاده میشه و توسط VMK رمز میشه.
- کلید Volume Master Key (VMK) : این کلید توسط KP رمز میشه.
- کلید Key Protector (KP) : پسورد یا TPM
مراحل رمزگذاری و رمزگشایی اینجوریه که :
- کاربر با وارد کردن داده های مورد نیاز (پسورد یا کارتهای سخت افزاری و … ) ، VMK یا TPM رو فراهم میکنه.
- کلید VMK میره و کلید FVEK رو رمزگشایی میکنه.
- کلید FVEK هم امکان رمزگذاری و رمزگشایی دیسک رو فراهم میکنه.
باگ طراحی کجاست :
در فرایند بروزرسانی ، ممکنه ما امکان رمزگشایی دیسک نداشته باشیم. برای مثال :
- پس از بروزرسانی بایوس ، TPM تشخیص میده که سیستم دستکاری شده و در نتیجه کلید VMK رو ارائه نمیده.
- WinPEممکنه نتونه با TPM ارتباط بگیره و در نتیجه نمیتونه کلید VMK رو بدست بیاره.
برای اینکه بدونیم BitLocker چطوری این شرایط مدیریت میکنه روند بروزرسانی در ویندوز 10 رو باید دنبال کنیم.
شکل بالا نشون دهنده یه بروزرسانی هستش که در اون :
- کل دیسک با BitLocker رمز شده و الگوریتم هم XTS-AES-128 هستش. (پاورشل بالا)
- ویندوزی که داریم Windows 10 Professional با نسخه 1903 build 18362.449 هستش. (پنجره winver)
- فرایند دانلود ویندوز 20H2 تموم شده و میخواد که سیستم رو ریستارت کنید.
- در درایو C ، یه فایل بنام secret.txt وجود داره که برای دسترسی بهش نیازه که پسورد BitLocker رو بدونید (پاورشل پایین)
با استفاده از ابزار bdeinfo به بررسی BitLocker می پردازیم.
ابزار نشون میده که دو تا KP وجود داره :
- Password : که رمز عبور ماست.
- Recovery password : که کلید بازیابی ماست.
در انتها هم نشون میده که volume قابل رمزگشایی نیست و امنه.
حالا این بررسی رو مجدد زمانیکه ویندوز ازمون میخواد سیستم رو ریستارت کنیم انجام میدیم :
خب همونطور که میببنید ، یه KP جدید هم اضافه شده بنام Clear key ، که برای رمزگذاری یه کپی دیگه از کلید VMK مورد استفاده قرار میگیره ، در نتیجه ما میتونیم دیسک رو رمزگشایی کنیم.
همونطور که میبنید ، فایلها قابل دسترس هستن. علاوه بر این میشه با ابزار dislocker کلید FVEK رو هم بدست آورد.
ویندوز در حقیقت در این مرحله پروسس Bitlocker رو ساسپندد میکنه. البته به کاربر هم هشداری نمیده که داده هاش محافظت نمیشن. در ادامه با ریستارت، ویندوز فرایند بروزرسانی رو ادامه میدیم :
بعد از تکمیل بروزرسانی دوباره متادیتای Bitlocker رو بررسی میکنیم و میبینیم که KP آخری حذف شده :
اگه کسی در فرایند بروزرسانی ، بتونه کلید FVEK رو بدست بیاره ، دیگه بدون نیاز به پسورد و … (بعد بروزرسانی و … ) میتونه کل دیسک رو رمزگشایی کنه.
این مشکل یه باگ طراحی هست و آسیب پذیری نیست. در حقیقت این روند نرمال کار BitLocker و بروزرسانی ویندوز هستش.