Table of Contents
Over-the-air עדכונים הפכו ליכולת בסיסית עבור מערכות משובצות הפועלות בתחום.ללא יכולת לעדכן קושחה מרחוק, מכשירים נותרו פגיעים לפגמים ביטחוניים, סובלים באגים שגורמים ביצועים מעוותים, וחוסר התכונות שמונעות מהם תחרותיות.עבור מערכות הפעלה משובצות – החל ממערכות ניהול משאבים, לעתים קרובות משולבות עמוק – יישום teOTA הוא אתגר טכני ודרישות עסקיות אמינות באמצעות נהלים קריטיים, כדי לבנות את הטוב ביותר.
מה הם tecasts ולמה הם חשובים?
עדכוני OTA מאפשרים קושחה, תוכנת יישומים, תצורה ואפילו מערכת ההפעלה עצמה להיות מעודכנת על רשת אלחוטית - סלולרי, Wi-Fi, Bluetooth, LoRaWAN, או לוויין - מבלי לדרוש גישה פיזית למכשיר.בתעשיות כמו IoT תעשייתי, רכב, מכשירים רפואיים ומערכות בית חכמות, מכשירים לעתים קרובות פרוסים במקומות מרוחקים או בלתי נגישים.
מעבר לנוחות, עדכוני OTA חיוניים עבור:
- (ב) ⁇ :0) סודיות תיקון: ⁇ 1 ⁇ Vulnerabilities במערכת ההפעלה או היישום ניתן לתקן במהירות, צמצום חלון החשיפה.
- (FLT:0) שיפור תזונתי: 1FLT:1 יכולות חדשות ניתן להוסיף לאחר דיסוימנט, להאריך את מחזור חיי המוצר.
- (ב) ניתן לתקן את הדברים: 0 (בלטינית:0) בעיות המופיעות רק בייצור ללא זיכרון יקר.
- (ב) ניתן ליישם באופן אוטומטי את כל המכשירים בצי.
עם זאת, OTA עדכונים גם מציגים סיכונים.עדכון כושל יכול "לרוקן" מכשיר, נתונים מושחתים או לפתוח חורים ביטחוניים.לכן, מערכת OTA מעוצבת היטב חייבת לטפל באמינות, בביטחון ובמגבלות רוחב פס בו זמנית.
אדריכלות: OTA Update Architecture
מערכת OTA כוללת מספר רכיבים אינטראקציה, כל אחד עם אחריות ספציפית.הבנת רכיבים אלה הוא הצעד הראשון לקראת יישום חזק.
ה Bootloader
ה-חולטר הוא הקוד הראשון שפועל כאשר מכשיר מסתמך על העדכונים של OTA, ה-Glockloader חייב לתמוך בשני פונקציות חיוניות:
- (ב) עיין באמינות ובאותנטיות של הקושחה החדשה לפני ביצועה.
- (FLT:0) מנגנון Fallback:FLT:1 אם הקושחה החדשה לא תחולל או נחשב לא חוקי, המגף חוזר לגרסה טובה ידועה. Common designs כוללים A/B (dual-bank) חריצים, שם המגף מחליף בין שני עותקים, או חריץ יחיד עם מחיצה.
עדכון Server
השרת מאחסן תמונות קושחה, metadata (הסחה, בדיקות, מפתחות חתימה), ואדריכלות משלוח לצי.זה יכול גם לטפל ברישום המכשיר, אכיפה מדיניות (למשל, רולטים ממולאים), ודיווחו על פתרונות קוד פתוח פופולריים כוללים פתרונות קוד פתוח פופולריים כוללים:0Eclipse hawkBitFLT:1 ו-FLT2MendercioF, בעוד LT5F7, כמו LT5:
לקוח עדכון
הפעלת המכשיר המוטבע, הלקוח מנהל את התקשורת עם השרת, מוריד את דמי העדכון, אימות האותנטיות שלו, כותב אותו למיקום האחסון המתאים, וגורם למגרשחול ליישם את העדכון.הלקוח חייב לפעול באופן חזק אפילו בתנאים רשתיים עניים, אובדן חשמל, או סוללה נמוכה.
תשתיות אבטחה
אבטחה אינה ניתנת להשגה, לפחות, מערכות OTA חייבות ליישם:
- חתימה: ההרחבה 1 [ה] כל תמונה של קושחה חתומה דיגיטלית באמצעות מפתח פרטי, והמכשיר מאמת את החתימה באמצעות מפתח ציבורי מותקן מראש.
- (ב) ,0) ,נצלב: 1 (או MQTTS מעל TLS) מגן על ערוץ ההורדה מ-Eavesdropping ו- tampering.
- (ב) [ה]החול: [ה] [ה]]: [ה']'[ה]'[ה]'[ה]'[דרוש מקור] [ה']'[דרוש מקור]']
- (FLT:0) אחסון מאובטח עבור מפתחות: FLT:1מחישים פרטיים על מפתחות חתימה יש לאחסן בחומרה (HSM, TPM) או במודולים תוכנה עמידים בטמפר.
ניהול אחסון
(המכשירים המוחזקים יש זיכרון פלאש מוגבל.מערכת ה-OTA חייבת לנהל ביעילות את אחסון הקושחה הנוכחית, את העדכון ההורדה ואת עותקים גיבוי.זה כרוך לעתים קרובות חלוקת הבזק לשני בנקים (A/B) או באמצעות חלוקת התאוששות ייעודית.
צעדים ליישום OTA Updates in Embedded OS
יישום OTA עדכונים דורש גישה שיטתית המכסה את כל מה שמתכנן מברשות לנטרטור רחב צי.למטה הם השלבים הקריטיים, מאורגנים לשלבים מעשיים.
עיצוב ה Bootloader for Update Management
ה-חולטר הוא הבסיס של כל מערכת OTA.אחריות העיקרית שלה היא להחליט איזו תמונה קושחה לרוץ ולאפשר את תהליך העדכון.
- (FLT:0)Choose בין עדכוני A/B לבין יחיד-slot עם התאוששות.Felo1 A/B (dual-bank) הוא תקן הזהב: שני עותקים של הקושחה מאוחסנים; אחד פעיל, השני הוא מעודכן.אם התמונה החדשה לא תחולל, המגף חוזר אוטומטית אל העותק הישן יותר.
- (FLT:0) עיבוד metadata מעקב אחר מטבוליזם 1 (FLT:1) המטען צריך לשמור על אזור metadata (למשל, דף פלאש שמור) המאחסן את מעמדו של כל מרווח: "אקטיבי", "עדכון מתמשך", "עדכון מתמשך", "מופץ", "מצומצוע" (החומר") זה מעודכן על ידי הלקוח במהלך זרימת העדכון.
- (FLT:0)Add Cryptographicthenve.FLT:1, המגף חייב לבדוק את החתימה הדיגיטלית של תמונת הקושחה לפני ההמראה. Verification ניתן לעשות באמצעות הצפנה ציבורית (RSA, ECDSA) עם בדיקת חיזה (SHA-256).
- (FLT:0)Provide a Fallback timer.veFLT:1) לאחר יישום עדכון, המגף קובע "מוכן עלחול כושל" (למשל, 10 שניות) אם הקושחה החדשה אינה אותתת הצלחה בחלון זה, המגף חוזר לחריץ הקודם.
2. בנה שירות Scalable Update Server
השרת מנהל את הפצת קושחה לאלפי מכשירים פוטנציאליים.
- ניהול גירסה:0 (Firmware: FLT:1ir Store all הגרסאות המשוחררות עם metadata (מחרוזת הסחה, תאריך שחרור, תאימות חומרה, מערכת ההפעלה).
- מדיניות FLT:0 (Rollout Policy: FLT:1) יישום רולטים ממותקים - למשל, לדחוף עדכונים ל-5% מהצי, ואז להגדיל בהדרגה אם לא דווח על בעיות.
- (FLT:0) Authentication and Authorization: FIRLT:1 מכשירים חייבים לאמת (למשל, באמצעות X.509 תעודות או מפתחות מראש) לפני שהם יכולים לבקש או להוריד עדכון.זה מונע מלקוחות לא מורשים מנקים רוחב פס או גישה לקושחה פרטית.
- (FLT:0) משלוח יעיל:FLT:1ir להשתמש CDNs או שרתים אזוריים כדי להפחית את השקיפות. תמיכה להורדה חוזרת (בקשות טווח HTTP) כך שהמכשירים יכולים להימשך לאחר ירידה ברשת.
- (FLT:0)Error logging וניתוח:FreaLT:1) לאסוף את הטלמטים הזמניים (Success, כישלונות, זיהוי המכשיר) כדי לזהות גרסאות קושחה בעייתיות או מכשירים עם בעיות קישוריות.
פיתוח לקוח Update
הלקוח פועל על המכשיר המוטבע ואינטראקציה עם השרת.העיצוב שלו חייב לקחת בחשבון את הזיכרון המוגבל של המכשיר, CPU ותקציב כוח.
- (FLT:0) מחיקה לעומת דחיפה.FLT:1 רוב המערכות המשובצות משתמשות בבדיקה תקופתית (למשל, כל שעה או יום) כדי לבדוק עדכונים, כי שמירה על קשר מתמשך (MQTT/CoAP) מנקזת סוללות.הלקוח שולח את הגרסה הקושחית הנוכחית לשרת; השרת מגיב עם "ללא עדכון" או קושחה חדשה.
- (FLT:0) ,Lowload andאימות.FLT:1, הלקוח מוריד את תמונת הקושחה על פני HTTPS, אימות החתימה והבדיקה באופן מצטבר (הזרם) כדי להימנע מאחסון כל המטען ב- RAM.It כותב את הנתונים הגולמיים ישירות לפלאש הלא פעיל (B אם הוא פעיל).
- (ב) לאחר כתיבתו של ה-FLT:0Write היושרה.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.10.
- (FLT:0) הפרעות ההילה.FLT:1ir אם הכוח אבד במהלך הורדה או הבזק כתיבת, הלקוח חייב לחזור ממחסום (אם השרת תומך במגוון) או להפעיל מחדש את ההורדה.
יישום אבטחה Robust Security
אבטחה היא תהליך מעוות.הצנרת עדכון OTA היא וקטור התקפה ראשוני; עדכון מסוכן יכול לתת תוקף מלא שליטה על כל מכשיר בצי.
- (FLT:0) חתימות קריפטוגרפיים של כל תמונה קושחה.ראהFLT ( 1:1) חתומה על התמונה בעת בניית זמן עם מפתח פרטי מוגן חומרה.המגרש של המכשיר ו / או הלקוח לאמת את החתימה נגד מפתח ציבורי נשרף לתוך המכשיר בייצור (או באופן מאובטח לאחר מכן).
- (FLT:0) קידוד העדכון.FIRLT:1 למרות ש-HTTPs מאובטח התחבורה, הצפיפה את תמונת הקושחה עצמה (למשל, עם AES) מוסיפה שכבה נוספת: אם תוקף מקבל את התמונה מהשרת, הם לא יכולים להפוך את ה--rexiener אותה ללא מפתח ספציפי של המכשיר.
- (FLT:0)Enforce Secureחול.FLT:1 ודא כי המגף מאמת את הקושחה הפעילה בכל כוח על, לא רק לאחר עדכון.זה מונע תוקף מ התקנת קוד זדוני לצמיתות על ידי הבזק באמצעות ממשק אחר (JTAG, UART).
- (FLT:0) ביטול וסיבוב מפתח.FLT:1 אם מפתח חתימה נפגע, עליך להיות מסוגל לבטל אותו.מכשירים צריך לבדוק רשימת ביטול תעודה (CRL) או להשתמש בשרשרת חתימה מפתח המאפשרת עדכונים לא מקוון לעגן האמון.
- (FLT:0)Rate Limiting and anomalyזיהוי.Build.cioFLT:1) השרת צריך לזהות דפוסים חריגים של עדכון (למשל, מכשיר אחד המבקש את אותו עדכון מאות פעמים) ו- throttle או Blacklist המכשיר.
מבחן OTA Update Process Thoroughly
מכיוון ש-OTA מעדכנת חומרה ממוקדת, בדיקות הן דבר חשוב ביותר.סימלוט כל תרחיש כשלון שניתן לדמיין.
- אובדן כוח בכל שלב: FLT:1 קיצוץ כוח במהלך הורדה, במהלך כתיבת פלאש, במהלך אימות עומסי החיוב, ולאחר הקושחה החדשה מתחילה להבטיח את המכשיר תמיד לכדי מצב טוב.
- (FLT:0Networkהפרעות:FLT:1) מבחן עם רוחב פס נמוך, עצלות גבוהה, אובדן החבילה, וניתוק פתאומי.
- (FLT:0Corruptקוש: 1) להאכיל את הלקוח תמונה עם חתימה שגויה, בדיקת רע או נתונים מחוסנים.הלקוח חייב לדחות את זה ולהכניס את הטעות מבלי להשפיע על הקושחה הפעילה.
- (ב) תרחישים של רולבק: 1:1 לאחר עדכון "מצוע", באופן ידני מזרקת באג שגורם לקושחה חדשה להתרסק.
- (FLT:0) עוקץ רחב: 1FearLT 1 (מבחן) עם קבוצת מכשירים קטנה קודם כל, רכזי מעקב כדי להבטיח לא תוקפנות לפני לדחוף לצי המלא.
שיטות טובות לייצור OTA Systems
מעבר ליישום הבסיסי, שיטות הפעולה הבאות עוזרות להבטיח שמערכת ה- OTA שלך אמינה בקנה מידה.
שימוש ב-A/B Updates with Atomic Switching
A / B (dual-bank) עדכונים הם הגישה האמינה ביותר עבור מכשירים משובצים שאינם יכולים לסבול זמן קצר.עדכון מוחל על חריץ לא פעיל בעוד הטבלה פעילה ממשיכה לרוץ. רק לאחר התמונה החדשה נכתבת לחלוטין ואומת עושה את חריצים החלפת המערכת ו-boot.אם התמונה החדשה אינה מחוסמת, המכפלה חוזרת מיד ל-Savr הישן. זה מאפשר גם אפס-Timedown אם עדיין תומך במערכות הגירה רבות (למרות שעדיין לא רצויות).
אימוץ דלתא / עדכונים שונים
במקום לשלוח תמונה קושחה מלאה בכל פעם, העדכונים של דלה מאמתים את ההבדל בין הקושחה הנוכחית והחדשנית ושולחים רק את התקנון הזה.כלי כמו FLT:0bsdiffigtureFLT:1 או FLT:2 מנוע העדכון של גוגל PH3 יכול ליצור כתמים שהם לעתים קרובות 80-95% קטן יותר מאשר התמונה המלאה.
שלב רולטס ו- Monitor בזמן אמת
לעולם אל תדחוף עדכון ל-100% מהמכשירים באופן מיידי.ר.ר.ל.ר., 5%, 20%, 50%, 100%) עם תקופת קירור בין השלבים.במהלך כל שלב, לפקח על מדדי מפתח: עדכון קצב ההצלחה, קצב ההצלחה של האתחול, דוחות ההתרסקות, ושינויים בקישוריות.אם שלב מראה עלייה בכישלונות, לעצור את הרוטאאוט ולחקור לפני ההליכים.
יישום כלב שמירה במשרד החדש
לאחר האתחול הראשון מקושחה חדשה, המטען (או תסריט סטארט-אפ) צריך להגדיר שעון כלב כי יש לנקות את הקושחה החדשה בתוך חלון קצר (למשל, 60 שניות) אם הקושחה תלה, התרסקות, או לא לנקות את כלב השמירה, ה-חול מניח שהוא שבור וחוזר.
מספק דרך בטוחה "Factory איפוס"
גם עם עיצוב OTA מושלם, מכשירים יכולים להיכנס למצב בלתי ניתן להתגלות (למשל, אזור מטען מחוספס מושחת) מנגנון התאוששות פיזי - כגון כפתור שנערך במהלך איפוס, קונסולה סדרתית, או תמונה שיקום ייעודית מוגש על פני ערוץ משני - צריך להיות מתועד למקרים נדירים שבהם התאוששות OTA נכשל.
תוצאות Log and Analyse Update
כל ניסיון עדכון צריך ליצור יומני על המכשיר (אם אישורי אחסון) ולשלוח תוצאות טלמטורי לשרת. Logs צריך לכלול: מזהה המכשיר, גרסה ישנה, גרסה חדשה, עדכון התחל / סיומות, גודל להורדה, כוח רשת אחרון-seen, וכל קודים שגיאה. Analysing נתונים אלה מסייע לך לזהות גרסאות קושחה בעייתיות, בקבוקי מתכת רשת או בעיות חומרה ספציפיות.
מסקנה
יישום OTA עדכונים במערכות הפעלה משובצות אינו משימה טריוויאלית, אבל זה יותר ויותר הכרחי עבור כל מוצר שצפוי לחיות בתחום במשך יותר מכמה חודשים. המפתח הוא לטפל במערכת העדכון כמרכיב ראשון של קושחה של המכשיר שלך - תוכנן עם אותו הקפדה כמו לוגיקה יישום.