חלק מהתכונות המתקדמות הן אופציונליות, תלוי אם הן נתמכת בפלטפורמת חומרת היעד.
הפריים האוטומטי בהמתנה
בתקן 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:
- הגדרה של פקודת המאקרו
MBEDTLS_AES_ALT
ב-mbedTLS הספציפי למשתמש קובץ כותרת תצורה - מציינים את הנתיב של הקובץ
aes_alt.h
באמצעותMBEDTLS_CPPFLAGS
משתנה
מודול SHA256
אבטחת OpenThread מפעילה אלגוריתמים של גיבוב (hash) מסוג HMAC ו-SHA256 כדי לחשב ערך גיבוב (hash) לניהול מפתחות רשת וליצירת PSKc בהתאם ל-Thread מפרט.
כדי להשתמש בהטמעה בסיסית חלופית של מודול SHA256:
- הגדרה של פקודת המאקרו
MBEDTLS_SHA256_ALT
ב-mbedTLS הספציפי למשתמש קובץ כותרת תצורה - מציינים את הנתיב של הקובץ
sha256_alt.h
באמצעותMBEDTLS_CPPFLAGS
משתנה
פונקציות ECC
מכיוון ש-mbedTLS תומך כרגע רק בהאצת חומרה לחלקים מ-ECC
במקום את המודול כולו, אפשר לבחור ליישם כמה
פונקציות מוגדרות
path-to-mbedtls/library/ecp.c
כדי להאיץ
את הכפלת הנקודות.
Curve secp256r1 משמש באלגוריתם של חילופי המפתחות טיוטה של ECJPAKE. לכן, שיפור המהירות באמצעות חומרה צריך לתמוך לפחות ב-Weierstrass הקצרה secp256r1 עקומה. ראו האצת חומרה של CRYPTO ל-SiLabs mbedTLS כדוגמה.