با وجود افزایش تعداد حملات شبکه به دستگاه های اینترنت اشیا، امنیت سیستم عامل اغلب در موقعیت ثانویه قرار می گیرد. همانطور که مهاجمان به پشته سیستم نفوذ می کنند و فرآیند بوت و پیکربندی سخت افزار زیرین را هدف قرار می دهند، انتخاب معماری حافظه به یک تصمیم کلیدی در ایجاد یک زنجیره اعتماد قابل تایید تبدیل شده است.
بنابراین، اطمینان از امنیت میانافزار مستلزم آن است که هر جزء قبل از اجرا مورد تأیید رمزگذاری قرار گیرد. این مسیر با یک بوت لودر غیرقابل تغییر شروع می شود که وظیفه بارگیری و تایید سیستم عامل اصلی را بر عهده دارد. با این حال، فناوری حافظه مورد استفاده در هر مرحله ممکن است منجر به آسیبپذیری میانافزار در برابر تغییرات غیرمجاز شود.
فلش مموری داخلی و خارجی
مکان فیزیکی حافظه غیرفرار مورد استفاده برای ذخیره سیستم عامل یکی از مهم ترین عوامل در مدل های تهدید دستگاه است. مهندسان سفتافزار باید بین فلش تعبیهشده روی تراشه (eFlash) و ماژولهای فلش خارجی که از طریق رابطهای سریالی مانند SPI یا QSPI متصل هستند، انتخاب کنند.
حافظه فلش تعبیه شده معمولاً مستقیماً روی میکروکنترلرها یا تراشه های SoC ادغام می شود. این معماری بالاترین سطح امنیت فیزیکی را فراهم می کند زیرا هیچ اتوبوس خارجی برای دستکاری مهاجمان در دسترس نیست. حتی دسترسی به حافظه داخلی فلش توسط رجیسترهای اختصاصی و بیت های قفل کنترل می شود.
علاوه بر این، حافظه فلش تعبیه شده از حفاظت خواندن دائمی پشتیبانی می کند. با اتصال کوتاه فیوزهای ایمنی تخصصی، توسعهدهندگان میتوانند رابطهای اشکالزدایی JTAG یا SWD را غیرفعال کنند تا از تغییر تصاویر میانافزار توسط هکرها جلوگیری شود. با این حال، همانطور که SoC ها به سمت گره های کوچکتر حرکت می کنند، این فناوری با چالش های مقیاس پذیری قابل توجهی مواجه است.
در مقابل، فلش مموری خارجی خارج از پردازنده اصلی قرار می گیرد و از طریق یک رابط سریال پرسرعت ارتباط برقرار می کند. این انتخاب معماری ظرفیت ذخیره سازی را آسان می کند، اما سطح حمله سیستم را نیز گسترش می دهد. هر داده ای که بین پردازنده و فلش مموری خارجی منتقل می شود ذاتاً در برابر تهدیداتی مانند استراق سمع، حملات مرد وسط و دستکاری فیزیکی آسیب پذیر است.
برای مقابله با این خطرات، مهندسان سیستم عامل باید اقدامات حفاظتی سخت افزاری و نرم افزاری را اجرا کنند. بسیاری از دستگاه های حافظه فلش خارجی NOR مجهز به پین فیزیکی حفاظت از نوشتن هستند. هنگامی که پین در یک ولتاژ خاص قرار می گیرد، منطق داخلی تراشه از اجرای هر گونه دستور پاک کردن یا نوشتن جلوگیری می کند.
شکل 1: حافظه فلش سریال امن NOR W77Q32JWSSIR TR Winbond Electronics دارای قابلیت های رمزگذاری کانال ارتباطی پیچیده ای است. (منبع تصویر: Winbond Electronics)
با این حال، اگر اطلاعات قابل خواندن باشد، قفل کردن حافظه فلش کافی نیست. در طول اجرا، مهاجمان همچنان می توانند به آدرس و گذرگاه داده دسترسی داشته باشند. این آسیبپذیری باعث توسعه دستگاههای فلش ایمن تخصصی، از جمله مکانیسمهای مبتنی بر سختافزار، کانالهای ارتباطی رمزگذاریشده، و شمارندههای یکنواخت برای جلوگیری از حملات بازگشتی شده است.
با این حال، اگر معماری ذخیره سازی اشتباه انتخاب شود، دستگاه عیوب اساسی به جا می گذارد که نمی توان آنها را به طور کامل توسط وصله های نرم افزاری برطرف کرد. به عنوان مثال، طرح هایی که سیستم عامل را در EEPROM خارجی بدون رمزگذاری یا تأیید ذخیره می کنند، همیشه در برابر مهاجمان سخت افزاری آسیب پذیر هستند. برعکس، انتخاب یک حافظه با محدودیت های بیش از حد ممکن است بر عملکرد آن تأثیر بگذارد.
بنابراین، مهندسان باید بهترین شیوه ها و تکنیک های طراحی را برای به حداکثر رساندن امنیت سیستم عامل از طریق معماری حافظه درک کنند.
بهترین روش ها برای طراحی امن سیستم عامل ذخیره سازی
هنگام طراحی یک مسیر ذخیره سازی سیستم عامل امن از راه اندازی تا زمان اجرا، مهندسان سیستم عامل باید اصول زیر را رعایت کنند:
1. ریشه اعتماد مبتنی بر سخت افزار
اجرا باید همیشه از مناطق حافظه تغییرناپذیر شروع شود. به عنوان مثال، رام بوت یا بخش فلش دائمی ایمن باید حاوی کدی باشد تا تمام سیستم عامل دیگر را تأیید کند. این تضمین می کند که مهاجمان نمی توانند با دستکاری رمز عبور اولیه، تأیید را دور بزنند.
2. از امضاهای رمزگذاری شده استفاده کنید
بوت لودر امن را طوری پیکربندی کنید که فقط تصاویر سیستم عامل امضا شده با کلیدهای خصوصی قابل اعتماد را اجرا کند. به این ترتیب، حتی اگر مهاجمان بتوانند به حافظه دسترسی داشته باشند و بیت ها را اصلاح کنند، می توانند از کدهای غیرمجاز جلوگیری کنند. در صورت نیاز به محرمانه بودن، سیستم عامل ذخیره شده را می توان رمزگذاری کرد.
3. از ویژگی های امنیتی سخت افزاری استفاده کنید
اگر معماری سیستم از حافظه خارجی استفاده میکند، مهندسان باید دستگاههایی را انتخاب کنند که از امنیت سختافزاری پشتیبانی میکنند، مانند محافظت از رمز عبور داخلی یا رمزگذاری ساده. اگرچه این دستگاه ها ممکن است به اندازه اجزای امنیتی کامل قوی نباشند، اما لایه دیگری از محافظت را اضافه می کنند.
شکل 2: Macronix از حافظه فلش سریال NOR MX25L3233FM2I-08Q 32 مگابایتی با رابط جانبی سریال پشتیبانی می کند. (منبع تصویر: Macronix)
4. سیستم عامل و داده ها را ایزوله کنید
ناحیه حافظه را سازماندهی کنید و حساس ترین کدها را جدا کنید. در MCU، دستورالعملهای روتین حیاتی را در یک قسمت حافظه امن قرار دهید. حتی سفتافزار، اگر توسط سختافزار پشتیبانی شود، میتواند برخی از بانکهای حافظه فلش را بهعنوان فقط اجرایی یا فقط خواندنی علامتگذاری کند.
5. طرح به روز رسانی سیستم عامل امنیتی
اطمینان حاصل کنید که فرآیند بهروزرسانی خود تأیید شده است (مثلاً نیاز به امضای بسته بهروزرسانی). اگر طراحی از فضای ذخیرهسازی خارجی برای بهروزرسانیهای موقت استفاده میکند، باید همان تدابیر امنیتی ذخیرهسازی سفتافزار اصلی اتخاذ شود.

