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

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

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

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

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

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

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

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

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

אם הרדיו לא תומך בהגדרה של הביט של 'המסגרת בהמתנה' באופן דינמי, ייתכן שהרדיו יסרוק את ממשק ה-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 להגדרות ה-comp 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 (מונה עם 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 Security, האלגוריתמים לגיבוב 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 for mbedTLS.