همه چیز درباره ریموت کنترلهای هاپینگ کد(Hopping Code) یا (Rolling Code)
مقدمه
امنیت همیشه و در همهی اعصار، مقولهی مهم و قابل توجهای بوده است.نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده که با فراگیر شدن اینترنت و گردش آزاد اطلاعات، امنیت بیش از پیش موردتوجه قرار گرفته و تبدیل به یک مسئلهی حساس و حیاتی شده است.
تصور کنید اگر تلگرام دارای یک باگ اساسی باشد و هکرها بتوانند به اطلاعات میلیونها کاربر تلگرام دسترسی پیدا کنند، چه فاجعهای رخ میدهد یا اگر هکرها بتوانند کنترل نیروگاههای یک کشور را در دست بگیرند آن وقت است که فاجعهای در ابعاد ملی و انسانی رقم خواهد خورد (البته واضح است که منظور ما از هکر، هکرهای کلاهسیاه هستند).
در این مقاله، به بررسی امنیت انواع ریموت کنترل خواهیم پرداخت.
معرفی اجمالی ریموت هاپینگ کد
وقتی قرار باشد برای درب ورودی منزل یا مغازه، ریموت کنترل نصب کنید، همه ریموتهای هاپینگ را پیشنهاد میدهند و استدلال میکنند که این ریموتها از امنیت بیشتری نسبت به ریموتهای کدفیکس و کدلرن برخوردار هستند. قبلاً در پست ریموت کدلرن و چگونگی دکد بررسی کردیم که ریموتهای کدلرن و یا کد فیکس چطور کار میکنند؛
مثلاً ریموتهای کدلرن دارای یک کد 20 بیتی منحصربهفرد هستند که تکتک ریموتها را از هم تفکیک میکند یا در ریموتهای کدفیکس شما میتوانید با تعیین حالت 8 عدد پایه، کد موردنظر خود را ایجاد کنید.
اما ریموتهای هاپینگ چطور کار میکنند که قادر هستند امنیت بیشتری را تامین کنند. آیا واقعاً ریموتهای هاپینگ دارای امنیت بیشتری هستند؟
متأسفانه با جستجو در وب فارسی جز اینکه ریموتهای هاپینگ دارای امنیت بیشتری هستند چیزی دستگیرتان نمیشود. حتی تولیدکنندگان این نوع ریموت کنترل در داخل کشور نیز مقالهای در خصوص امنیت آنها منتشر نکردهاند که جای تأمل دارد!
چرا این نوع ریموتها امنیت بالاتری دارند؟ سازوکار آنها به چه صورت است که امنیت بیشتری را تأمین میکنند؟ در این مقاله به این سؤالات پاسخ خواهیم داد.
چگونگی هک ریموتهای کدلرن و کدفیکس
ریموتهای کد لرن و کد فیکس هر دو دارای یک شناسهی منحصربهفرد هستند که ریموت شما را از دیگر ریموتها جدا میکند. این شناسهی منحصربهفرد در ریموتهای کدفیکس (PT2262) با تغییر وضعیت پایهها، قابلتغییر است (عکس زیر ). این مسئله باعث شده که این نوع ریموتها (کد فیکس) در دستهای با امنیت پایینتر، حتی نسبت به ریموتهای کدلرن قرار بگیرند.
ریموت کدفیکس (CodeFix)
فرض کنید شما از این مدل ریموت برای دزدگیر ماشین خود استفاده میکنید. اگر سارق بتواند نحوهی اتصال پایهها را متوجه شود (راههای مختلفی برای این مسئله وجود دارد که وارد جزئیات نمیشویم.) با خرید یک ریموت از همین مدل و تغییر پایههای موردنظر مطابق ریموت شما، بهراحتی و بدون دردسر میتواند دزدگیر ماشین شما را کنترل کند.
اصلاً فرض کنیم نحوهی اتصال پایهها را نداشته باشد! IC – PT2262 که در این ریموتها استفاده میشود، از 8 پایه برای آدرسدهی استفاده میکند که در مجموع با توجه به سه حالته بودن هر بیت (متصل به مثبت – متصل به منفی و بدون اتصال) قادر است تقریباً 6500 حالت مختلف را ایجاد کند. اگر دستگاهی بسازیم که حالتهای مختلف را ایجاد کند و هر حالت 3 ثانیه تداوم داشته باشد، بهراحتی در مدتزمان 5 ساعت می تواند کد ریموت موردنظر را پیدا کند.
در گذشته از این نوع ریموت برای درب ساختمانها و مغازهها استفاده میشده که خوشبختانه دیگر استفاده نمیشود.
ریموت کدلرن (CodeLearn)
در مورد ریموتهای کدلرن، مسئله مقداری متفاوت است. کد منحصربهفرد توسط کارخانهی تولیدکننده، در IC ریموت قرار میگیرد و کاربر نمیتواند آن را تغییر دهد.
همین تغییر کوچک بهخودیخود باعث میشود که امنیت بهمراتب بالاتر برود؛ چرا که افراد نمیتوانند با دستکاری در مدار ریموت، آن را مثل ریموتهای دیگر تغییر دهند. همچنین کد مذکور 20 بیتی شده است که قادر است 1048576 حالت مختلف ایجاد کند.
ولی همچنان راه هک کردن آنها مسدود نشده است. هکرها می توانند پروتکل ارسال ریموت را شبیهسازی کنند و اگر بخواهند از طریق سناریو بالا (سعی و خطا) برای هک ریموت استفاده کنند، مدتزمانی در حدود 36 روز لازم است تا با تست کردن کدهای مختلف به کد موردنظر برسند.
این احتمالاً در بدترین حالت است ولی خب باز امکانپذیر است. از طرفی هکر میتواند در شنود سیگنال ارسالی ریموت شما، آن را Decode کند و کد صحیح را بهدست بیاورد! این راه زیاد زمانبر نیست و فقط کافی است هکر در زمان درست در جای درست باشد.
این ریموت (کد لرن) نیز از امنیت بالایی برخوردار نیست و متأسفانه بخش بزرگی از ریموتهای درب منازل، از این نوع استفاده میکنند.
نکته :هک کردن همیشه نیاز به خلاقیت دارد. اینکه بتوانیم راهی که توسط سازنده دیده نشده را پیدا کنیم و با استفاده از آن سیستم را دور بزنیم، علاوه بر دانش کافی در خصوص نحوهی کارکرد و عملکرد سیستم، نیاز به خلاقیت نیز دارد. هکر واقعی انسان خلاقی است و در خصوص امنیت هیچوقت نمیتوان با اطمینان صحبت کرد. خوشبختانه بیشتر افراد که خود را هکر مینامند هکر واقعی نیستند و از نرمافزارها و ابزارهایی که توسط افراد دیگر ایجاد شدهاند و از راههای کشفشده توسط هکران واقعی استفاده میکنند و به سیستمهای مختلف نفوذ میکنند و خود را هکر مینامند. این توضیحات برای این ارائه شد که بگوییم قطعاً کسی با این توضیحاتِ مختصر هکر نمیشود و قادر به هک سیستمهای کنترلی شما نخواهد بود، مگر اینکه از قبل هکر بوده باشد. |
ریموتهای هاپینگ کد
سؤالی که مطرح میشود، این است که ریموتهای هاپینگ چه قابلیتی دارند که باعث میشود امنیت بیشتری در پروتکل آن وجود داشته باشد؟
قبل از هر اقدامی، برای اینکه بررسیها بر اساس واقعیت باشد، تعدادی ریموت هاپینگ از بازار تهیه کردیم. دو عدد از آنها را باز کردیم و چیپست و مدار آنها را موردبررسی قرار دادیم:
چیپ مورداستفاده در هر دو مدل ریموت بالا ،HCS301 بود که تولید شرکت Microchip است. آی سی مذکور داری یک EEPROM داخلی است (در ادامه کاربرد آن را توضیح میدهیم) که قابلیت پروگرام شدن توسط کاربر را دارا است.
یکی از ریموتها درگاه مناسبی برای پروگرام شدن دارد (عکس زیر) و دیگری متأسفانه فاقد چنین درگاهی است که واقعاً امیدوارم که چیپ، قبل از استفاده، پروگرام شده باشد.
امنیت در ریموتهای هاپینگ کد
رولینگ کد (Rolling Code) یا (آنطور که در بازار شناخته میشود) هاپینگ کد (Hopping Code) ، از الگوریتمی استفاده میکند که در مقابل حملات تکرار (Replay attack) مقاوم است.
نوع حملاتی که در موارد قبلی ذکر کردیم از این نوع حمله بودند؛ یعنی یا با شنود و یا با سعی و خطا، تلاش میکردیم کد صحیح را بدست آوریم، ولی این نوع ریموت در مقابل این نوع حملات مقاوم است. اما چطور؟
HCS301 چیپست؟
یکKeeLoq Encoder میباشد که قابلیت کدگذاری دادههای ارسالی را با استفاده از پروتکل KeeLoq دارد.
سیستم کدگذاری Keeloq ، از یک کلید 64 بیتی برای رمزگذاری داده استفاده میکند. در واقع پروگرام شدن IC به خاطر تنظیم همین کلید است. کاربر میتواند کلید مورد نظر خود را برای دادههای ارسالی توسط ریموت تنظیم کند، به صورتی که فقط گیرندهی موردنظر ما که کلید را دارد، قادر به دکد دادههای دریافتی از ریموت باشد.
اما این رمزگذاری چطور به بالا رفتن امنیت کمک میکند؟ برای روشن شدن قضیه به عکس زیر دقت کنید:
همانطور که در عکس میبینید، کدهای ارسالی از سمت ریموت، دارای سه بخش مجزا هستند:
- بخش ابتدایی که طبق دیتاشیت 6 بیت است و حاوی 4 بیت وضعیت کلیدهای فشرده است و 2 بیت هم وضعیت ریموت را گزارش میکنند (مثل ضعیف شدن باطری).
- 28 بیت ادامه، سریال ریموت است. این بخشها کدگذاری نشده است و بهراحتی میتوان آنها را شبیهسازی کرد.
- 32 بیت بعد حاوی اطلاعات کدگذاری شده است. این 32 بیت باعث ایجاد تفاوت چشمگیری در امنیت این نوع ریموتها شده است. کدگذاری با استفاده از 64 بیت دادهی ذخیرهشده در EEPROM صورت میگیرد.
همانطور که در عکس فوق مشخص است، دادههای کدگذاری شده، حاوی 16 بیت شمارنده و 10 بیت DISC (که خود شامل بیتهای دیگری است) و 4 بیت هم وضعیت کلیدهای ریموت هستند. اما این دادهها چطور به امنیت کمک خواهند کرد؟
شاید مهمترین بخش وجود شمارنده در دادههای ارسالی از ریموت است. شمارنده با هر بار فشرده شدن کلید، یک واحد اضافه میشود. اگر کلید کدگذاری تنظیم شده باشد، هر گیرندهای که دادهها را دریافت میکند، قادر به رمزگشایی بخش کدگذاری شده نیست و نمیتواند دادههای آن را استخراج کند.
نحوه عملکرد ریموت های کدلرن و هاپینگ کد
برای روشنتر شدن موضوع سعی میکنیم مثال فوق در خصوص ریموتهای کدلرن را با استفاده از این نوع ریموت تشریح کنیم:
فرض کنید یک هکر با دستگاه مناسب مشغول شنود سیگنالهای ارسالی از ریموت شما است و باز فرض کنید کانتر ریموت شما، مقدار 10 را دارد. دادههای ارسالی توسط گیرنده دریافت میشود و دزدگیر غیرفعال میشود. هنگام پیاده شدن، کلید ریموت را برای فعال کردن دزدگیر فشار میدهید، مقدار کانتر 11 میشود، کد ارسال و دزدگیر فعال میشود. هکر برای غیرفعال کردن دزدگیر ماشین، کد اول را دوباره شبیهسازی و ارسال میکند. اگر ماشین شما از تکنولوژی ریموتهای کدلرن و کدفیکس استفاده میکرد ، دزدگیر غیرفعال میشد .
اما در مورد ریموتهای هاپینگ این اتفاق نمیافتد. دستگاه سیگنال ارسالی شده هکر را دریافت می کند ، سپس قسمت کد شده را Decode و مقدار Counter را از آن استخراج میکند. بله مقدار آن 10 است. آخرین کدی که دریافت شده 11 بوده، پس مقدار 10 را غیرواقعی شناسایی میکند و به آن اهمیتی نمیدهد. هکر اگر بخواهد دزدگیر را غیرفعال کند باید کدی را ارسال کند که مقدار کانتر آن 12 باشد ولی چنین کاری مقدور نیست؛ چرا که کلید رمزگذاری را ندارد و نمیتواند دادهها را استخراج کند.
این چنین است که این نوع ریموتها در مقابل هک شدن مقاومت بیشتری دارند ولی یادتان باشد: هیچ کاری غیرممکن نیست، حتی غیرممکن! 😉
هشدار جدی
متاسفانه برخی از تولید کنندگان. ریموت کنترلهای هاپینگ را بدون تعیین کلید کدگذاری مورد استفاده و فروش قرار میدهند. که باعث میشود با وجود تکنولوژی بالا، بهسادگی قابل هک شدن باشند و هیچ گونه امنیتی را برای شما تأمین نمیکنند. خرید یک گاوصندوق با تکنولوژی روز دنیا برای محافظت از اسناد کافی نیست. باید درب گاوصندوق را نیز قفل کنید تا کارایی داشته باشد!
در صورت نیاز به راهنمایی و دریافت مشاوره می توانید از کارشناسان مجموعه اَکتیوآلارم سوالات خود را بپرسید.