حملات واقعی به میکروکنترلرها و روش مقابله در سری stm32H5
در خانواده میکروکنترلرهای STMicroelectronics سری STM32H5، واحد سختافزاری HASH یکی از پریفرالهای مهم برای کاربردهای امنیتی، رمزنگاری و احراز هویت دادهها محسوب میشود.
این پریفرال عملیات محاسبه الگوریتمهای هش را به صورت سختافزاری انجام میدهد و بار پردازشی CPU را به شدت کاهش میدهد. در پروژههایی مثل:
- Secure Boot
- بررسی صحت Firmware
- احراز هویت پیامها
- TLS/SSL
- ذخیره امن اطلاعات
- OTA Update
- سیستمهای IoT
استفاده از HASH تقریباً ضروری است.
HASH چیست؟
تابع Hash یک الگوریتم یکطرفه است که از هر حجم داده، یک خروجی با طول ثابت تولید میکند.
مثلاً:
“Hello”
↓
185F8DB32271FE25F561A6FC938B2E264306EC304EDA518007D1764826381969
اگر حتی یک بیت از ورودی تغییر کند، خروجی کاملاً متفاوت خواهد شد.
کاربرد HASH در Embedded
در سیستمهای Embedded معمولاً HASH برای این موارد استفاده میشود:
| کاربرد | توضیح |
| بررسی صحت فایل | تشخیص خرابی یا تغییر Firmware |
| Secure Boot | تایید معتبر بودن Bootloader یا Application |
| ارتباط امن | استفاده در TLS و HMAC |
| جلوگیری از دستکاری | تشخیص تغییر دادهها |
| رمزنگاری | استفاده در الگوریتمهای امنیتی |
پریفرال HASH در STM32H5
سری STM32H5 دارای شتابدهنده سختافزاری HASH است که الگوریتمهای زیر را پشتیبانی میکند:
| الگوریتم | طول خروجی |
| MD5 | 128 بیت |
| SHA1 | 160 بیت |
| SHA224 | 224 بیت |
| SHA256 | 256 بیت |
مزایای HASH سختافزاری نسبت به نرمافزاری
| HASH نرمافزاری | HASH سختافزاری |
| مصرف CPU بالا | بار پردازشی بسیار کم |
| سرعت پایینتر | بسیار سریع |
| مصرف توان بیشتر | بهینهتر |
| مناسب داده کم | مناسب فایلهای بزرگ |
در STM32H5 عملیات HASH توسط سختافزار داخلی انجام میشود و CPU فقط داده را ارسال و نتیجه را دریافت میکند.
معماری کلی HASH در STM32H5
پریفرال HASH شامل بخشهای زیر است:
- Data Input Register
- FIFO داخلی
- Engine پردازش SHA/MD5
- Digest Register
- DMA Interface
به همین دلیل میتوان دادههای حجیم را با DMA مستقیماً Hash کرد.
تفاوت HASH و Encryption
بعضی افراد HASH را با Encryption اشتباه میگیرند.
| HASH | Encryption |
| یکطرفه | دوطرفه |
| قابل بازگشت نیست | قابل Decode است |
| برای Integrity | برای Confidentiality |
نکته مهم درباره MD5 و SHA1
الگوریتمهای MD5 و SHA1 دیگر امنیت بالایی ندارند.
امروزه توصیه میشود:
- فقط از SHA256 استفاده شود
- برای پروژههای امنیتی جدید MD5 استفاده نشود
عملکرد HASH در STM32H5
سری STM32H5 به دلیل:
- فرکانس بالا
- Bus سریع
- DMA پیشرفته
- Accelerator سختافزاری
عملکرد بسیار خوبی در پردازش HASH دارد.
در کاربردهای IoT و Edge AI این موضوع اهمیت زیادی دارد.
رجیسترهای مهم HASH
اگر بخواهید بدون HAL کار کنید، رجیسترهای مهم شامل:
| رجیستر | کاربرد |
| HASH_CR | کنترل پریفرال |
| HASH_DIN | ورودی داده |
| HASH_STR | تعداد بیت معتبر |
| HASH_HR[x] | خروجی Digest |
پریفرال HASH در STM32H5 یک شتابدهنده سختافزاری بسیار مهم برای پروژههای امنیتی و صنعتی است که:
- سرعت محاسبه SHA را افزایش میدهد
- مصرف CPU را کاهش میدهد
- برای Secure Boot و Firmware Validation ایدهآل است
- در پروژههای IoT و ارتباطات امن کاربرد گسترده دارد
اگر پروژه شما شامل امنیت، OTA، شبکه یا بررسی صحت دادهها باشد، استفاده از HASH سختافزاری یکی از بهترین قابلیتهای STM32H5 محسوب میشود.
یکی از قابلیتهای بسیار مهم پریفرال HASH در میکروکنترلرهای STMicroelectronics سری STM32H5، پشتیبانی از HMAC است.
این قابلیت امکان پیادهسازی ارتباطات امنتر را در پروتکلهایی مثل:
- UART
- RS485
- Modbus
- ارتباط بین MCUها
- ماژولهای IoT
فراهم میکند.
در بسیاری از پروژههای Embedded، دادهها از طریق UART منتقل میشوند اما خود UART ذاتاً هیچ مکانیزم امنیتی داخلی ندارد. به همین دلیل ترکیب UART با HASH و HMAC میتواند نقش مهمی در جلوگیری از جعل و دستکاری دادهها داشته باشد.
مشکل امنیتی UART
UART فقط یک پروتکل انتقال داده است و:
- Encryption ندارد
- Authentication ندارد
- Integrity Check امنیتی ندارد
در نتیجه اگر فردی به باس UART دسترسی داشته باشد میتواند:
- دادهها را مشاهده کند
- Packet جعلی ارسال کند
- فرمانها را تغییر دهد
- پیامها را تکرار کند
استفاده از HASH در UART
فرض کنید یک دستگاه صنعتی این فرمان را دریافت میکند:
MOTOR=ON
اگر فقط همین متن ارسال شود، هر فردی میتواند همان دستور را جعل کند.
برای جلوگیری از تغییر داده میتوان از HASH استفاده کرد.
ساختار Packet با HASH
فرستنده ابتدا روی پیام SHA256 محاسبه میکند:
SHA256(“MOTOR=ON”)
سپس Packet به این صورت ارسال میشود:
MOTOR=ON|HASH
عملکرد گیرنده
گیرنده:
- پیام را دریافت میکند
- دوباره SHA256 محاسبه میکند
- نتیجه را با Hash دریافتی مقایسه میکند
اگر برابر نبود:
Packet Modified
مشکل HASH ساده
اگرچه HASH تغییر داده را مشخص میکند، اما هنوز امنیت کامل وجود ندارد.
چرا؟
چون مهاجم میتواند:
- پیام جدید بسازد
- Hash جدید تولید کند
- هر دو را ارسال کند
مثلاً:
MOTOR=OFF|NEW_HASH
در این حالت گیرنده متوجه جعلی بودن پیام نمیشود.
HMAC چیست؟
برای حل این مشکل از HMAC استفاده میشود.
HMAC مخفف:
Hash-based Message Authentication Code
است.
در HMAC علاوه بر داده، یک Secret Key نیز وارد محاسبات میشود.
ساختار HMAC
به جای:
HASH(DATA)
داریم:
HMAC(DATA + SECRET_KEY)
بنابراین فقط دستگاههایی که کلید مخفی را دارند میتوانند HMAC معتبر تولید کنند.
فرض کنید دو میکروکنترلر STM32 از طریق UART به هم متصل هستند.
فرستنده میخواهد فرمان زیر را ارسال کند:
VALVE=OPEN
کلید مخفی بین دو دستگاه:
MySecretKey123
ابتدا HMAC تولید میشود:
HMAC_SHA256(“VALVE=OPEN”, KEY)
سپس Packet نهایی:
VALVE=OPEN|A1B2C3…
بررسی پیام در گیرنده
گیرنده:
- پیام را جدا میکند
- دوباره HMAC محاسبه میکند
- مقدارها را مقایسه میکند
اگر برابر باشند:
Message Authentic
در غیر این صورت:
Fake Packet Detected
چرا HMAC امنتر است؟
چون مهاجم Secret Key را ندارد.
بنابراین حتی اگر:
- ساختار Packet را بداند
- الگوریتم SHA256 را بداند
- داده را ببیند
باز هم نمیتواند HMAC معتبر تولید کند.
جلوگیری از Replay Attack
فرض کنید مهاجم یک Packet معتبر را ذخیره کند و بعداً دوباره ارسال کند.
مثلاً:
VALVE=OPEN|VALID_HMAC
گیرنده چون HMAC معتبر است ممکن است دوباره فرمان را اجرا کند.
این حمله:
Replay Attack
نام دارد.
نقش CRC در کنار HMAC
خیلی از افراد تصور میکنند HMAC جای CRC را میگیرد، اما این دو کاربرد متفاوتی دارند.
| مکانیزم | کاربرد |
| CRC | تشخیص خطای نویزی |
| HMAC | جلوگیری از جعل و دستکاری |
بنابراین در UART صنعتی معمولاً هر دو استفاده میشوند.
پیادهسازی HMAC در STM32H5
پریفرال HASH در STM32H5 میتواند HMAC را به صورت سختافزاری انجام دهد.
این موضوع مزایای زیادی دارد:
- سرعت بالا
- کاهش مصرف CPU
- مناسب ارتباطات Real-Time
- مناسب FreeRTOS
- مناسب Packetهای بزرگ
پریفرال HASH در STM32H5 فقط برای محاسبه SHA256 نیست، بلکه با پشتیبانی از HMAC میتواند امنیت ارتباطات UART را نیز به شکل قابل توجهی افزایش دهد.
استفاده از HMAC باعث میشود:
- Packet جعلی قابل تشخیص باشد
- تغییر دادهها شناسایی شود
- فقط دستگاههای دارای Secret Key بتوانند پیام معتبر تولید کنند
- امنیت سیستمهای Embedded افزایش یابد
به همین دلیل HMAC یکی از مهمترین قابلیتهای امنیتی در طراحی سیستمهای صنعتی، IoT و تجهیزات Embedded مدرن محسوب میشود.


بدون نظر