محصولات و سرویسهای IoT کماکان در حال رشد و رونق هستند، به طوری که انتظار میره بیشتر اشیاء متصل باشن و به سرویسهای دیجیتال ابری مجهز باشن. البته، تأمین امنیت دستگاههای اینترنت اشیا هم بسیار اهمیت داره.
همهمون خبرهایی در مورد هک و ایجاد ناامنی در تجهیزات یا دستگاههای اینترنت اشیا چیزهایی شنیدیم. چیزی که باعث میشه شرایط از این هم بدتر بشه اینه که هر چی محصولتون موفقتر باشه، هکرها توجهشون بیشتر بهش جلب میشه.
در این مقاله بهترین و مهمترین روشها برای تأمین امنیت محصولات اینترنت اشیا رو معرفی و بررسی میکنیم. پس همراه من باشید.
توضیح مختصری دربارۀ رمزنگاری
اگر قراره در سرویسها و محصولات اینترنت اشیا مشارکت داشته باشین، بهتون توصیه میکنیم حتماً در مورد رمزنگاری مطالعه و تحقیق کنین.
رمزنگاری تقریباً در همه جنبههای امنیت اینترنت اشیا نقش مهمی ایفا میکنه. در ادامه برخی اصطلاحات پر کاربرد در حوزه رمز نگاری رو با هم مرور میکنیم.
اصطلاحات پر کاربرد در حوزه رمزنگاری
- رمزنگاری: تغییر دادهها به منظور پنهان کردن محتوای اصلیاش. از این روش برای اطمینان از یکپارچگی و احراز هویت هم استفاده میشه.
- کلید رمزنگاری: یک مقدار عددیه که در عملیاتهای رمزنگاری ازش استفاده میشه. هر چی این کلید بزرگتر باشه، رمزنگاری قویتره.
- رمزنگاری متقارن: برای رمزنگاری و رمزگشاییِ دادهها از یک کلید یکسان استفاده میشه. به همین دلیل، طرفیت باید کلید رو با هم به اشتراک بذارن. این روش به خاطر کارایی که داره کماکان در بخش زیادی از ارتباطات استفاده میشه.
- رمزنگاری نامتقارن: برای رمزنگاری داده از یک کلید و برای رمزگشایی اون از یک کلید دیگه استفاده میشه. این دو تا کلید یک جفت کلید خصوصی و عمومی ایجاد میکنن. کلید خصوصی رو اصلاً نباید با دیگران به اشتراک گذاشت. این روش رمزنگاری اهمیت زیادی در عملیات احراز هویت داره.
- گواهی: یک مجموعه داده که موجودیت رو از جمله کلید عمومی و سایر اطلاعات رو بصورت منحصر بهفرد شناسایی میکنن. این گواهی برای اینکه اصالتش تأئید بشه به صورت دیجتال امضا میشه.
- هش (Hash): الگوریتمی که یک رشته از بیتها (مثل دادههای گواهی) رو رو به یک رشته از بیتها با طول ثابت نگاشت میکنه. هش یک مقدار منحصر بهفرد کوتاهتره که بر مبنای یک مجموعه داده بزرگتر محاسبه میشه. اگر کوچکترین تغییری در داده ورودی ایجاد بشه، تغییر بزرگی در هش اتفاق میفته.
- امضای دیجیتال: در نتیجۀ تغییر دادهها به واسطه عملیات رمزنگاری ( نظیر هش)، اگر به درستی اجرا بشه، یکپارچگی دادهها و احراز هویت مبداً تأیید میشه. معمولاً، شما کلید عمومی رو از صادرکننده گواهی دریافت میکنین که گواهی رو امضا کرده، امضا رو رمزگشایی کرده و اون رو با هشی مقایسه کرده که شما اونو بر مبنای دادههای گواهی محاسبه کردین. اگر این دو تا با هم مطابقت داشته باشن، یعنی مشکلی وجود نداره.
- صادرکننده گواهی: یک موجودیت مورد اطمینان که گواهیها رو صادر و باطل میکنه. صادرکنندههای گواهی، گواهیها رو امضا میکنن.
اینکه رمزنگاری چقدر تأثیرگذاره بستگی به توان محاسباتی حملات brute force داره. به عبارت دیگه، مدت زمان زیادی طول میکشه تا هکر تمامی کلیدهای احتمالی رو امتحان کنه تا کلید صحیح رو پیدا کنه و بتونه دادههای شما رو رمزگشایی کنه.
راهکار 1 : هویت ایمن
هویت ایمن چیست؟
دستگاهها و سرویسها ابری سیستم اینترنت اشیا باید به هم اعتماد داشته باشن. این اعتماد زیربنای تمامی تعاملات اوناست. هویت ایمن مدرکی منحصر به فرد و غیرقابل انکار هست که هویت دستگاه یا سرویس رو مشخص میکنه. سرویسها و دستگاهها یک هویت اثبات کردنی و منحصر به فرد دارن که به صورت یک گواهی هست. سرویسها و دستگاهها با این هویت میتونن به سایر بخشهای سیستم که بهشون اجازه داده شده دسسترسی پیدا کنن.
کارکرد هویت ایمن
هویت دستگاه همون گواهی منحصر به فرد به علاوۀ کلید عمومیه. این گواهی رو یک صادرکننده گواهی مورد اعتماد امضا میکنه که شامل یک سری اطلاعات در مورد دستگاه هست، برای مثال، نام و شماره شناسایی (serial number) منحصر به فردش. همچنین این گواهی کلید عمومی دستگاه و کلید خصوصی دستگاه (که سری هست و هیچوقت نباید به اشتراک گذاشت) رو هم شامل میشه. وقتی که دستگاه میخواد به سرویس ابری وصل بشه، گواهی هویتی خودش رو ارائه میده. سرویس ابری هم امضای گواهی رو چک میکنه و اصالت اون رو تأیید میکنه. بیشتر سیستمهای اینترنت اشیا از فرمت x509 برای گواهیهاشون استفاده میکنن که دقیقاً همون فرمتی هست که برای هویت وبسایتها ایمن استفاده میشه.
خیلی از سیستمهای امبدد قابلیتهای خاصی برای ایجاد گواهیها و ذخیره گواهیهای هویتی دارن. این قابلیتها معمولاً بخشی از سیستمهایی هستن که با نام Root-of-Trust شناخته میشن. علاوه بر این، ارائهدهندگان سرویسهای ابری ابزارها و زیرساختهایی برای امضای گواهیهای دستگاه ارائه میدن که در دستگاه تعبیه میشن. به این عملیات مهیاسازی (provisioning) میگن. برای مثال، AWS زیرساختهایی برای دستگاههای مهیاسازی با AWS IoT Core ارائه میده.
چرا هویت ایمن اهمیت داره؟
سیستمهای اینترنت اشیا با تکیه به این هویت خاص، قابل تأیید و غیرقابل انکارِ دستگاهها تا حد زیادی میتونن مطمئن بشن که همتاهای غیرمجاز یا تعاملات غیرمجاز اتفاق نمیفتن.
راهکار 2 : ارتباط ایمن
ارتباط ایمن چیست؟
دستگاههای اینترنت اشیا باید بتونن به صورت ایمن از طریق اینترنت با سایر دستگاهها ارتباط برقرار کنن. ارتباط ایمن معمولاً بر این سه تا اصل استواره:
- حریم شخصی: یعنی دیگران نتونن به پیامهای ارسال و دریافتی دسترسی داشته باشن.
- یکپارچگی: هکرها نتونن پیامها رو دستکاری کنن و اونا رو به عنوان پیامهای معتبر جا بزنن.
- احراز هویت: هویت دریافتکنندگان و ارسالکنندگان پیامها تأیید بشه.
طریقه کارکرد
به خاطر اینکه ارتباطات در اینترنت در زیرساختهای عمومی اتفاق میفتن، همه میتونن دادههایی که بین طرفین رد و بدل میشه رو ببینن. اگر دادهها رمزنگاری بشن نامفهوم میشن و به لحاظ ریاضی نمیشه اونا رو بدون کلید رمزگشایی کرد. فقط فرستنده و گیرنده باید متوجه دادهها بشن. کاربران غیرمجاز نباید متوجه دادهها بشن و به عبارتی دادهها باید مبهم باشن.
برای اینکه دیگران نتونن با سیستمتون ارتباط برقرار کنن (a man-in-the-middle attack) هر کدوم از طرفین باید بتونن از هویت طرف مقابل مطمئن بشن. این کار رو میشه از طریق تأیید گواهی هویت انجام داد. فقط یک نقطه انتها یا endpoint معتبر با یک گواهی معتبر میتونه فرایند احراز هویت رو با موفقیت پشت سر بذاره؛ این گواهی رو هم یک صادرکننده گواهی دارای صلاحیت حتماً باید امضا کنه.
بیشتر سیستمهای اینترنت اشیا از TLS استفاده میکنن که امنیت وبسایتها بر مبنای اون استواره. به عنوان مثال، میتونیم سیستم عامل محبوب دستگاههای اینترنت اشیا یعنی AWS FreeRTOS رو نام ببریم که شامل یک کتابخانه سوکتهای ایمن میشه و بر مبنای mbedTLS از ARM هست که یک کتابخانه متن باز TLS محسوب میشه.
اهمیت ارتباط ایمن
سیستمی که حریم خصوصی، یکپارچگی و احراز هویت رو در ارتباطاتش تضمین میکنه در مقابل فعالیتهای غیرمجاز مثل استراق سمع، دستکاری، هایجک سیستم یا انکار سرویس، خیلی ایمنتر هستن.
راهکار 3 : فضای ذخیرهسازی ایمن
فضای ذخیرهسازی ایمن چیست؟
سیستمهای اینترنت اشیا باید از اطلاعات حساس محافظت کنن و اونا رو مخفی نگه دارن. این سیستمها باید محرمانه باشن.
فضای ذخیرهسازی ایمن به تکنیکهای مختلفی میگن که ازشون برای ایمن نگه داشتن داده و جلوگیری از دسترسی غیرمجاز به اونا استفاده میشه. فضای ذخیرهسازی ایمن به این معنیه که دادهها رو به شکلی رمزنگاری کنیم که اگر فرد غیرمجازی بهشون دسترسی پیدا کرد، نتونه متوجه محتوای دادهها بشه. این دادهها هم دیتاهای ذخیره شده در دستگاهها و هم در فضای ابری رو شامل میشه. فضای ذخیرهسازی ایمن به این معنیه که کلیدهای رمزنگاری رو در صندوقهایی نگه داریم که کسی غیر از موتورهای رمزنگاری نتونه بهشون دسترسی پیدا کنه.
طریقه کارکرد
خیلی از سیستمهای امبدد قابلیتهای امنیتی ضعیفی برای مثل حفاظت فلش، فضای ذخیرهسازی با کد رمزنگاری، فایل سیستمهای رمزنگاری شده و نظارت بر یکپارچگی داده برای فضای ذخیرهسازی ایمن به کار میبندن. ESP32 flash encryption شرکت Espressif یک نمونه از این راهکارهاست. ارائهدهندگان سرویسهای ابری فضای ذخیرهسازی با شی رمزنگاری شده، پایگاهدادههای رمزنگاری شده و سرویسهای مدیریت کلید ارائه میدن. دسترسی به سیستمها و سرویسها از طریق راهکارهای امنیتی مربوط به احراز هویت کاربر کنترل میشه. قابلیتهای رمزنگاریِ AWS S3 object storage و AWS RDS که از کلیدهایی استفاده میکنن که در AWS Key Management Service یا AWS Secrets Manager ذخیره شدن نمونههایی از این قابلیتها هستن.
چرا فضای ذخیرهسازی ایمن اهمیت داره؟
به دلایل زیادی باید از دادهها محافظت کنیم. دادههای حساس از جمله دادههای مربوط به مالکیت فکری، شبکه، سایر اطلاعات کاربری امنیتی، دادههای مشتریان و غیره در سیستمهای اینترنت اشیا ذخیره میشن. پیادهسازی و اجرای تکنیکهای فضای ذخیرهسازی ایمن بهمون کمک میکنن تا مانع حملات احتمالی هکرها (مثل معکوس کردن کد مهندسی، انتقال بدافزار، کلون کردن غیرقانونی دستگاهها، جعل دستگاهها و نشت دادههای مشتریان) بشیم.
راهکار 4 : بوت ایمن
بوت ایمن چیست؟
بوت ایمن که گاهی بهش بوت Trusted هم میگن به فرایندی گفته میشه که در اون ویژگیهای نرمافزاری که قراره در دستگاه اجرا بشه ( که بهش boot up هم میگن) با ویژگیهای شناختهشده مقایسه میشن تا مطمئن بشن یکپارچه و قابل اعتماد هستن. همه این کارها قبل از اینکه سیستم نرمافزار رو اجرا کنه انجام میشه.
طریقه کارکرد بوت ایمن چگونه است؟
کارکرد این راهکار هم شبیه فرایند امضا و تأیید گواهیهاست. یک هش بر مبنای دادهها محاسبه میشه و در فلش مموری (کد) دستگاه بارگذاری میشه. این هش خاص هست و اگر تغییری در کد فلش ایجاد بشه باعث میشه هش خیلی تغییر کنه.
در مرحله بعد، هش رو یکی از طرفین مورد اعتماد طی فرایند رمزنگاری امضا میکنه و بعد هم کلید عمومی این فرد مورد اعتماد در دستگاه ذخیره میشه. وقتی دستگاه روشن میشه، امضا رو رمزگشایی میکنه و اونا رو با هش که بر مبنای فلش مموری محاسبه شده بود مقایسه میکنه تا از یکپارچگی و اصالت اون مطمئن بشه. اگر امضا و هش با هم طابقت داشته باشن، کد بدون هیچ مشکلی میتونه اجرا بشه. اگر با هم مطابقت نداشته باشن، احتمالاً یک تغییر غیرمجاز اتفاق افتاده و دستگاه در حالت safe mode قرار میگیره. بوت ایمن معمولاً در چند مرحله انجام میشه. هر کدوم از این مراحل به صورت مجزا امضا و تایید میشن. برنامه کوچکی به نام bootloader بخش بزرگی از این کار رو انجام میده.
Espressif ESP32 و چند تا از برنامههای اینترنت اشیا مثل Nordic nRF52840 ،Infineon PSoC 64 و NXP LPC55S69 از بوت ایمن پشتیبانی میکنن.
چرا بوت ایمن اهمیت داره؟
تأمین امنیت فرایند بوت در مقابل حملات بدافزار دستگاه های اینترنت اشیا محافظت میکنه. اگر هکری بتونه از سایر قابلیتهای امنیتی رد بشه و تغییرات خودشو رو در سفتافزار سیستم اعمال کنه، الگوریتم بوت ایمن جلوی اون رو میگیره.
راهکار 5 : بهروزرسانی ایمن OTA سفتافزار
بهروزرسانی ایمن OTA سفتافزار چیست؟
بهروزرسانی ایمن که بهش Over-The-Air (OTA) یا Firmware update Over The Air (FOTA) هم میگن فرایندی هست که طی اون سفتافزار از راه دور در دستگاهها بهروزرسانی میشه که اغلب هم از طریق ارتباط بیسیم انجام میشه. برای اینکه بشه به بهترین نحو این کار رو انجام داد به امکانات امنیتی اساسی نیازه که قبلاً راجع بهشون صحبت کردیم و همچنین زیرساخت اضافی و لاجیک.
شرح کارکرد بهروزرسانی OTA
وقتی دستگاهها در کارخونه ساخته میشن، اطلاعات کاربری امنیتی دریافت میکنن و با سروریس بهروزرسانی ثبت میشن که نشون بده مجاز به دریافت بهروزرسانی هستن. این اطلاعات کاربری امنیتی و ثبت باید با هویت خاص دستگاه مطابقت داشته باشن. اگر بعدها دستگاه به مشکل خورد ( برای مثال، هکری بهش حمله کرد) اطلاعات ثبتش رو میشه باطل کرد.
سفتافزاری که در دستگاه استفاده میشه در فرایند رمزنگاری امضا میشه. وقتی بهروزرسانی در دسترس باشه، برای دستگاهها اعلان ارسال میشه. این پیام یا اعلان، محل فایل بهروزرسانی برای دانلود رو نشون میده. دستگاه در زمان مناسب، فایل بهروزرسانی رو دانلود میکنه، تأییدش میکنه و اون رو در فلش مموریش بارگذاری میکنه. بعد دستگاه reset میشه و بوت ایمن برای تأیید و راهاندازی نرمافزار جدید اجرا میشه. معمولاً دستگاهها یک کپی بکآپ سفتافزار رو ذخیره میکنن که اگه مشکلی در روند بهروزرسانی نرمافزار پیش اومد بتونن ازش استفاده کنن. با این حال، اگر سفتافزار قدیمی در دستگاه اجرا میشه باید تشخیص داده بشه و کارهایی که میتونه انجام بده رو محدود کنیم تا بتواند از حملات roll back که در اون هکرها سفتافزار رو به نسخههای قدیمی برمیگردونن، جلوگیری کنه.
به عنوان مثال، AWS از Secure Updates با سروریس AWS FreeRTOS OTA Update Manager و AWS IoT Jobs پشتیبانی میکنه.
چرا بهروزرسانی OTA مهمه؟
با بهروزرسانی ایمن خیلی سریع میتونین به تهدیدات امنیتی در حال ظهور و patch software دستگاهها که مشتریان ازشون استفاده میکنن واکنش نشون بدین. با بهروزرسانی ایمن، علاوه بر اینکه میتونین مشکلات رو سریع رفع کنین، میتونین برنامه رو به طور مداوم ارتقا بدین تا رضایت مشتریان رو جلب کنین.
جمعبندی
حمله به سیستمهای IoT یا اینترنت اشیا میتونه تا حد زیادی بر روی درآمدتون تاثیر منفی بزاره. گزارشها حاکی از اینه که شرکتها بعد از حمله سایبری 25 درصد از درآمدشون رو از دست میدن. علاوه بر این، حمله فقط به یک دستگاه اینترنت اشیا برای سازمانها مبلغ چند صد هزار دلار هزینه داره. مطمئنا این واقعیت دردناکی برای مدیران کسبوکارها است. با این حال، ارزشی که محصولات و سرویسهای IoT برای کسبوکارها به ارمغان میارن بالاست و به همین دلیل در تعداد زیاد عرضه میشن.
در این مقاله فهرستی از مهمترین راهکارهای امنیتی برای محصولات IoT رو باهم مرور کردیم. اگر محصولتون به این راهکارها مجهز نیست، ممکنه در معرض حملات سایبری قرار بگیرین!
خوشبختانه، این صنعت تو چند سال گذشته شاهد پیشرفتهای زیادی در زمینه تأمین امنیت دستگاههای اینترنت اشیا بوده و به نحوی که به آسونی نشه بهشون حمله کرد. پیادهسازی قابلیتهای امنیتی هر سال برای تولیدکنندگان محصول کمتر و کمتر میشه.