הטמעת תכונות מתקדמות

הצגת המקור ב-GitHub

חלק מהתכונות המתקדמות הן אופציונליות, תלוי אם הן נתמכת בפלטפורמת חומרת היעד.

הפריים האוטומטי בהמתנה

בתקן IEEE 802.15.4 מוגדרים שני סוגים של שיטות להעברת נתונים בין הורה לבין ילדים: הפצה ישירה והפצה עקיפה. השנייה תוכננה בעיקר למכשירי קצה ישנים (SED) שבהם ישנים רוב הזמן מדי פעם יוצאו לבדיקה כדי לבדוק את ההורה כדי לקבל נתונים בתור.

  • שידור ישיר – ההורה שולח מסגרת נתונים ישירות למכשיר הקצה שידור ישיר

  • העברה עקיפה – הנתונים של ההורה מאוחסנים עד שהם מתבקשים על ידי מכשיר הקצה של ההורה שידור ישיר

במקרה עקיף, מכשיר קצה צאצא צריך קודם לדגום את ההורה כדי לקבוע האם קיימים נתונים זמינים עבורו. לשם כך, הילד או הילדה שולחים נתונים בקשה, וההורה מאשר אותה. בשלב הזה, ההורה יקבע אם מכיל נתונים כלשהם למכשיר של הילד או הילדה. אם כן, תישלח חבילת נתונים לילד או לילדה המכשיר, שמאשר את קבלת הנתונים.

אם הרדיו תומך בהגדרה דינמית של הביט Frame Pending ביוצאות כדי להביע תודה ל-SED, הנהגים חייבים להטמיע את התאמה לכתובת מקור API להפעלת היכולת הזו. התכונה OpenThread משתמשת ב-API הזה כדי לציין לרדיו מעבדי SED להגדרת הביט בהמתנה של Frame (בהמתנה).

אם הרדיו לא תומך בהגדרה דינמית של הביט Frame Pending, הרדיו עלול להסתיר את כתובת ה-API של התאמת כתובת המקור כדי להחזיר OT_ERROR_NOT_IMPLEMENTED

סריקת אנרגיה/זיהוי באמצעות רדיו

לתכונה 'סריקת אנרגיה/זיהוי' נדרש שבב רדיו דגימת אנרגיה מוצגת בערוצים נבחרים ומחזירה את ערך האנרגיה שזוהה של השכבה העליונה.

אם התכונה הזו לא מוטמעת, שכבת ה-MAC של IEEE 802.15.4 שולח/מקבל בקשה/חבילת תגובה של משׂואת רשת (beacon) כדי להעריך את ערך האנרגיה בערוץ.

אם שבב הרדיו תומך ב'סריקה/זיהוי של אנרגיה', צריך להשבית את התוכנה הלוגיקה של סריקת אנרגיה באמצעות הגדרת המאקרו 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 מחילה קריפטו AES CCM (מונה עם CBC-MAC) על להצפין/לפענח את הודעות IEEE 802.15.4 או MLE ומאמתת את ההודעה את קוד השילוב. שיפור המהירות באמצעות חומרה צריך לתמוך לפחות ב-AES ECB הבסיסי מצב (ספר קוד אלקטרוני) לשיחה הפונקציונלית הבסיסית של AES CCM.

כדי להשתמש בהטמעה חלופית של מודול AES:

  1. הגדרה של פקודת המאקרו MBEDTLS_AES_ALT ב-mbedTLS הספציפי למשתמש קובץ כותרת תצורה
  2. מציינים את הנתיב של הקובץ aes_alt.h באמצעות MBEDTLS_CPPFLAGS משתנה

מודול SHA256

אבטחת OpenThread מפעילה אלגוריתמים של גיבוב (hash) מסוג HMAC ו-SHA256 כדי לחשב ערך גיבוב (hash) לניהול מפתחות רשת וליצירת PSKc בהתאם ל-Thread מפרט.

כדי להשתמש בהטמעה בסיסית חלופית של מודול SHA256:

  1. הגדרה של פקודת המאקרו MBEDTLS_SHA256_ALT ב-mbedTLS הספציפי למשתמש קובץ כותרת תצורה
  2. מציינים את הנתיב של הקובץ sha256_alt.h באמצעות MBEDTLS_CPPFLAGS משתנה

פונקציות ECC

מכיוון ש-mbedTLS תומך כרגע רק בהאצת חומרה לחלקים מ-ECC במקום את המודול כולו, אפשר לבחור ליישם כמה פונקציות מוגדרות path-to-mbedtls/library/ecp.c כדי להאיץ את הכפלת הנקודות.

Curve secp256r1 משמש באלגוריתם של חילופי המפתחות טיוטה של ECJPAKE. לכן, שיפור המהירות באמצעות חומרה צריך לתמוך לפחות ב-Weierstrass הקצרה secp256r1 עקומה. ראו האצת חומרה של CRYPTO ל-SiLabs mbedTLS כדוגמה.