پیاده سازی ویژگی های پیشرفته

مشاهده منبع در GitHub

برخی از ویژگی های پیشرفته، بسته به اینکه در پلتفرم سخت افزاری مورد نظر پشتیبانی می شوند یا نه، اختیاری هستند.

قاب خودکار در انتظار

IEEE 802.15.4 دو نوع روش انتقال داده را بین والدین و فرزند تعریف می کند: انتقال مستقیم و انتقال غیر مستقیم. دومی عمدتاً برای دستگاه‌های انتهایی خواب‌آلود (SED) طراحی شده است که بیشتر اوقات می‌خوابند و به‌طور دوره‌ای بیدار می‌شوند تا از والدین برای داده‌های در صف نظرسنجی کنند.

  • انتقال مستقیم - والدین یک قاب داده را مستقیماً به دستگاه نهایی ارسال می کند انتقال مستقیم

  • انتقال غیرمستقیم - والد داده ها را تا زمانی که دستگاه نهایی مورد نظر خود درخواست کند نگه می دارد انتقال مستقیم

در مورد غیرمستقیم، یک دستگاه پایانی فرزند ابتدا باید از والدین نظرسنجی کند تا مشخص کند که آیا داده‌ای برای آن موجود است یا خیر. برای انجام این کار، کودک یک درخواست داده ارسال می کند که والدین آن را تایید می کنند. سپس والد تعیین می کند که آیا داده ای برای دستگاه فرزند دارد یا خیر. اگر چنین است، یک بسته داده به دستگاه فرزند ارسال می کند، که دریافت داده ها را تأیید می کند.

اگر رادیو از تنظیم پویا بیت قاب در انتظار در تأییدهای خروجی به SED پشتیبانی می کند، درایورها باید API مطابق آدرس منبع را برای فعال کردن این قابلیت پیاده سازی کنند. OpenThread از این API استفاده می کند تا به رادیو بگوید که بیت در انتظار فریم را برای کدام SED تنظیم کند.

اگر رادیو از تنظیم پویا بیت قاب در انتظار پشتیبانی نمی‌کند، رادیو ممکن است آدرس منبع منطبق با API را حذف کند تا OT_ERROR_NOT_IMPLEMENTED را برگرداند.

اسکن انرژی/تشخیص با رادیو

ویژگی اسکن/تشخیص انرژی به تراشه رادیویی نیاز دارد تا انرژی ارائه شده در کانال های انتخاب شده را نمونه برداری کند و مقدار انرژی شناسایی شده را به لایه بالایی بازگرداند.

اگر این ویژگی اجرا نشود، لایه MAC IEEE 802.15.4 یک بسته Beacon Request/Response برای ارزیابی مقدار انرژی فعلی در کانال ارسال/دریافت می کند.

اگر چیپ رادیویی از اسکن/تشخیص انرژی پشتیبانی می‌کند، مطمئن شوید که منطق اسکن انرژی نرم‌افزار را با تنظیم ماکرو OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 کنید.

شتاب سخت افزاری برای mbedTLS

mbedTLS چندین ماکرو را در فایل هدر پیکربندی اصلی، mbedtls-config.h تا به کاربران اجازه دهد پیاده‌سازی‌های جایگزین AES، SHA1، SHA2، و ماژول‌های دیگر و همچنین عملکردهای جداگانه برای رمزنگاری منحنی بیضی (ECC) را روی GF فعال کنند. (p) ماژول. برای اطلاعات بیشتر به شتاب سخت افزاری mbedTLS مراجعه کنید.

OpenThread آن ماکروها را فعال نمی کند، بنابراین الگوریتم های متقارن کریپتو، الگوریتم های هش و توابع ECC همگی به طور پیش فرض از پیاده سازی نرم افزار استفاده می کنند. این پیاده سازی ها به حافظه و منابع محاسباتی قابل توجهی نیاز دارند. برای عملکرد بهینه و تجربه کاربری بهتر، توصیه می کنیم برای اجرای عملیات فوق، شتاب سخت افزاری را به جای نرم افزار فعال کنید.

برای فعال کردن شتاب سخت‌افزاری در OpenThread، فایل‌های هدر پیکربندی mbedTLS زیر باید به تعاریف کامپایل ot-config در فایل‌های CMake پلتفرم اضافه شوند:

  • پیکربندی اصلی، که تمام ماکروهای ضروری مورد استفاده در OpenThread را تعریف می کند: /openthread/third-party/mbedtls/mbedtls-config.h
  • پیکربندی خاص کاربر، که پیاده سازی های جایگزین ماژول ها و توابع را تعریف می کند: src/ platform-name -mbedtls-config.h

مثال از nrf52811.cmake :

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

ماکروهای کامنت‌شده در mbedtls-config.h اجباری نیستند و می‌توانند در فایل هدر پیکربندی خاص کاربر برای شتاب سخت‌افزاری فعال شوند.

برای مثال کامل پیکربندی خاص کاربر، فایل mbedtls_config_autogen.h را در ot-efr32 .

ماژول AES

OpenThread Security از رمزنگاری AES CCM (Counter with CBC-MAC) برای رمزگذاری/رمزگشایی پیام های IEEE 802.15.4 یا MLE استفاده می کند و کد یکپارچه سازی پیام را تأیید می کند. شتاب سخت‌افزاری حداقل باید از حالت اولیه AES ECB (کتاب کتاب کد الکترونیکی) برای تماس عملکردی پایه AES CCM پشتیبانی کند.

برای استفاده از پیاده سازی ماژول جایگزین AES:

  1. ماکرو MBEDTLS_AES_ALT را در فایل هدر پیکربندی mbedTLS مخصوص کاربر تعریف کنید
  2. با استفاده از متغیر MBEDTLS_CPPFLAGS مسیر فایل aes_alt.h را مشخص کنید.

ماژول SHA256

OpenThread Security از الگوریتم‌های هش HMAC و SHA256 برای محاسبه مقدار هش برای مدیریت کلید شبکه و تولید PSKc طبق مشخصات موضوع استفاده می‌کند.

برای استفاده از پیاده سازی ماژول اصلی SHA256 جایگزین:

  1. ماکرو MBEDTLS_SHA256_ALT را در فایل هدر پیکربندی mbedTLS مخصوص کاربر تعریف کنید.
  2. با استفاده از متغیر MBEDTLS_CPPFLAGS مسیر فایل sha256_alt.h را مشخص کنید.

توابع ECC

از آنجایی که mbedTLS در حال حاضر تنها از شتاب سخت افزاری برای بخش هایی از توابع ECC پشتیبانی می کند، نه کل ماژول، می توانید برخی از توابع تعریف شده در path-to-mbedtls /library/ecp.c را برای تسریع ضرب نقطه ECC پیاده سازی کنید.

منحنی secp256r1 در الگوریتم تبادل کلید پیش نویس ECJPAKE استفاده می شود. از این رو، شتاب سخت افزاری حداقل باید از عملیات منحنی وایرشتراس کوتاه secp256r1 پشتیبانی کند. برای مثال SiLabs CRYPTO Hardware Acceleration برای mbedTLS را ببینید.