حملات واقعی به  میکروکنترلرها و روش مقابله در سری 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 است که الگوریتم‌های زیر را پشتیبانی می‌کند:

الگوریتمطول خروجی
MD5128 بیت
SHA1160 بیت
SHA224224 بیت
SHA256256 بیت

مزایای 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 اشتباه می‌گیرند.

HASHEncryption
یک‌طرفهدوطرفه
قابل بازگشت نیستقابل 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

عملکرد گیرنده

گیرنده:

  1. پیام را دریافت می‌کند
  2. دوباره SHA256 محاسبه می‌کند
  3. نتیجه را با Hash دریافتی مقایسه می‌کند

اگر برابر نبود:

Packet Modified

مشکل HASH ساده

اگرچه HASH تغییر داده را مشخص می‌کند، اما هنوز امنیت کامل وجود ندارد.

چرا؟

چون مهاجم می‌تواند:

  1. پیام جدید بسازد
  2. Hash جدید تولید کند
  3. هر دو را ارسال کند

مثلاً:

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…

بررسی پیام در گیرنده

گیرنده:

  1. پیام را جدا می‌کند
  2. دوباره HMAC محاسبه می‌کند
  3. مقدارها را مقایسه می‌کند

اگر برابر باشند:

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 مدرن محسوب می‌شود.

بدون نظر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *