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

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

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

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

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

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

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

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

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

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

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

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

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

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

אם הצ'יפ של הרדיו תומך בסריקת אנרגיה/זיהוי אנרגיה, הקפידו להשבית את הלוגיקה של סריקת האנרגיה על ידי הגדרת המאקרו OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0.

האצת חומרה עבור mbedTLS

mbedTLS מגדיר מספר פקודות מאקרו בקובץ הראשי של הגדרות התצורה, mbedtls-config.h, כדי לאפשר למשתמשים להפעיל הטמעות חלופיות של AES , SHA1 , SHA2 ומודולים אחרים, כמו גם פונקציות נפרדות של מודול הקריפטוגרפיה של Elliptic (ECC) ב-GF(p). למידע נוסף, ניתן לעיין בשיפור מהירות באמצעות חומרה ב-mbedTLS.

ב-OpenThread אין אפשרות להשתמש בפקודות המאקרו האלה, ולכן כברירת מחדל, כל האלגוריתמים הקריפטוגרפיים הסימטריים כוללים אלגוריתמים של גיבוב (hash) ופונקציות ECC. להטמעות האלה נדרש זיכרון גדול ומשאבי חישוב. כדי ליהנות מביצועים אופטימליים ומחוויית משתמש טובה יותר, מומלץ להפעיל שיפור מהירות באמצעות חומרה במקום תוכנה לביצוע הפעולות שלמעלה.

כדי לאפשר שיפור מהירות באמצעות חומרה ב-OpenThread, צריך להוסיף את קובצי הכותרות של ה-mbedTLS לכותרות של הידור ot-config של הקבצים בפלטפורמה של CMakes:

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

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

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

מודול SHA256

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

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

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

פונקציות ECC

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

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