高通OTA升級方案介紹

高通OTA升級方案介紹

  • 1. 高通LE OTA
    • 1.1 背景
    • 1.2 Recovery系統
  • 2. SDX12 OTA方案
  • 3 OTA包的加密

3UK Penetration Test對于OTA升級也有嚴格的安全要求,下面是幾條用例要求:

Firmware: A sufficiently strong signing key MUST be in use. Signing keys MUST be at least 2048-bits in the case of RSA. Certificate/key expiry SHOULD be no later than 10 years from creation (if applicable). Signing keys SHOULD NOT use deprecated digests, for example SHA1
固件:必須使用一個足夠強的簽名密鑰。在RSA的情況下,簽名密鑰必須至少是2048位。證書/密鑰有效期不應晚于創建后的10年(如果適用)。簽名密鑰不應該使用已棄用的摘要,例如SHA1
Firmware: Firmware (inc bootloader) MUST be downloaded securely - all firmware servers SHALL mandate TLS 1.2 or greater. Clear-text protocol such as HTTP MUST NOT be permitted.
固件:固件(inc bootloader)必須安全下載-所有固件服務器必須要求TLS 1.2或更高版本。明文協議,如HTTP絕對不允許。
Firmware: Firmware (inc. bootloader) MUST be encrypted using a NIST recognised authenticated cipher, for example AES-256-GCM or asymmetric cryptography. Salts and IV's SHALL be unique, IV's SHOULD NOT be reused. Encoding schemes (without a key) SHOULD NOT be used. Firmware MUST be signed and encrypted.
固件:固件(inc. bootloader)必須使用NIST認可的認證密碼進行加密,例如AES-256-GCM或非對稱加密。鹽和 IV是唯一的, IV不能重復使用。不應該使用編碼方案(沒有密鑰)。固件必須簽名和加密。

按照要求,必須對ota固件包進行加密,以防止由升級包文件在下載過程中被截獲導致系統文件被他人獲取,甚至被他人篡改或替換導致不安全,進而造成無法估量的損失。

比如當前高通X12平臺使用的是未加密的傳輸方式,在服務器端放置約定好名稱的ota固件包,設備端輪詢檢測,當檢測到有可用的ota固件包,則直接下載升級,存在較大的安全隱患

1. 高通LE OTA

1.1 背景

高通MDM、MSM平臺提供了基本的升級功能,大概都以開源的Android升級設計實現作為基礎,對其代碼進行移植,適配到自身平臺上。從差分包制作工具,升級過程,都有一套完整的方案,并且所涉及到的工具和代碼均完全開放,因此該方案的可塑性也更大。其中包括統一的用于安裝升級包的Recovery系統,編譯OTA底包專屬框架,和處理底包制作升級包的腳本和工具等。

由于該方案中各個文件的PATCH 基于文件系統而來,因此很難在bootloader 階段實現(無法掛載文件系統),所以在分區設計上,除了預留存放差分包,備份文件的空間外,還需要添加專門的分區(kernel, bootloader,filesystem)以供FOTA 使用,而該分區必須獨立于正常運行時的分區。這也就導致了該方案在硬件(FLASH,DDR)要求比較高。

在LE 的FOTA 方案中,升級程序作為一個應用程序運行,升級包則是一個標準的zip 文件(命名為ota 文件),升級過程則是解析升級包中指定的腳本文件,并根據解析到的內容引用對應的功能模塊,從而完成整個升級過程。

1.2 Recovery系統

這里就不得不提recovery系統。Recovery系統是升級功能的載體,是一個包含文件系統相關操作的最小系統。OTA的安裝過程,或是Nand、EMMC原始分區的讀寫,或是文件系統之上的文件操作。此外,MSM平臺上,恢復出廠設置的功能,也是以Recovery系統為載體。

Recovery系統對升級包的安裝,可以看作是一系列自動化的實現。在OTA升級中,相對應Recovery系統,習慣把正常啟動的系統叫主系統(Main System)。下面通過一張簡圖,把各個概念融合一起,描述整體Recovery系統和主系統的關系。
在這里插入圖片描述
以MDM平臺項目為例。Kernel部分,兩個系統完全一致,只是主系統有主系統的Boot分區,Recovery有Recovery分區,其中燒入的鏡像完全一致。到system部分,主系統和Recovery系統有各自的rootfs,主要區別在兩個系統的掛載和加載的進程服務不一樣。Recovery系統區別于主系統的一點,是在啟動后,init進程會拉起bin/recovery,這就是recovery service,由這個recovery service來完成安裝包的解析安裝。

在主系統和Recovery系統之間,還有一個cache分區,這個分區是專門為Recovery系統規劃的。這個分區的作用是主系統與Recovery之間的文件共享。升級包從主系統中置于cache分區,recovery通過此分區讀取升級包,Recovery的日志也會通過文件方式存儲在這個分區。

以上是Recovery系統的基本流程,Recovery服務中安裝升級包的具體過程,在此不做贅述,可參考代碼:apps_proc/bootable/recovery/recovery.c:main(int argc, char** argv)。

2. SDX12 OTA方案

X12 OTA升級使用的是高通平臺通用的FOTA方案,基本可以總結以下幾個步驟:

  1. 本地制作差分包,并上傳到遠端OTA服務器
  2. x12啟動OTA client線程去在固定間隔時間訪問OTA服務器
  3. 當OTA服務器上有可用OTA 包,則校驗包是否完整、版本號是否符合預期
  4. 若3中校驗OK,則下載OTA包到本地
  5. 下載完成后重啟進入recovery模式
  6. recovery模式啟動后會先檢測是否存在OTA包,存在則解壓包并使用包中的工具打patch
  7. 升級完成后設置成功標記并重啟進入boot模式
  8. 升級完成

流程圖如下:
在這里插入圖片描述
X12原本的OTA升級流程中僅有對OTA包的校驗,針對的是其完整性和合法性,并沒有安全性的保障,如黑客可以通過特殊方式篡改OTA包,并上傳到OTA服務器上,就會存在極大的安全隱患。針對這一問題,我們在X12 OTA流程中增加了相關加解密,最大可能保證包的安全性。

3 OTA包的加密

按照行業規范,設備固件升級(OTA 遠程或本地升級)前應先對固件包進行完整性哈希得到固件包摘要,再使用公私鑰方式對摘要進行合法性簽名和驗簽,確認升級包完整性與合法性再進行更新,以防止固件包被篡改或替換。固件升級包完整性哈希應采用安全的哈希算法,完整性憑據應在設備與服務端的加密通信通道內傳輸。
在這里插入圖片描述
我們按照這個思路對x12的OTA流程做了優化,增加OTA包加解密流程:

  1. 本地制作差分包,對差分包使用openssl工具進行-aes-256-cbc加密,并上傳到遠端OTA服務器
  2. x12啟動OTA client線程去在固定間隔時間訪問OTA服務器
  3. 當OTA服務器上有可用OTA 包,則校驗包是否完整、版本號是否符合預期
  4. 若 3 中校驗OK,則下載OTA包到本地
  5. 下載完成后,再使用openssl工具解密,解密后再重啟進入recovery模式
  6. recovery模式啟動后會先檢測是否存在OTA包,存在則解壓包并使用包中的工具打patch
  7. 升級完成后設置成功標記并重啟進入boot模式
  8. 升級完成

下面是OTA包加解密的腳本:

#!/bin/sh
filename=$1
input=${filename:0-3}
#echo $input
dec_name=${filename%.*}
#echo $dec_name
if [ "$input" = "aes" ] ; thenopenssl enc -d -aes-256-cbc -in "$1" -out "$dec_name" -K E05A84ED2068B3DEE402304AD12F4A40E27DCFC8DF33FA58E335BEBB5978B7B4 -iv E27DCFC8DF33FA58E335BEBB5978B7B4elif [ "$input" = "zip" ] || [ "$input" = "ota" ] ; thenopenssl enc -aes-256-cbc -in "$filename" -out "$filename".aes -K E05A84ED2068B3DEE402304AD12F4A40E27DCFC8DF33FA58E335BEBB5978B7B4 -iv E27DCFC8DF33FA58E335BEBB5978B7B4elseecho "文件名不存在或不支持此類文件類型!!!"fi

通過上面的方式,我們就完成了OTA包的加密,也可以根據需要去客制化加密方式、加密密鑰、初始向量。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162600.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

了解消息隊列的五大痛點

文章字數:400字,建議閱讀時間:3分鐘,閱讀難度:中等。 解決消息隊列的五大痛點 在分布式系統中,消息隊列(MQ)是一種重要的組件,它能夠幫助我們處理并發和異步的問題。然…

visionOS空間計算實戰開發教程Day 6 拖拽和點擊

在之前的學習中我們在空間中添加了3D模型,但在初始擺放后就無法再對其進行移動或做出修改。本節我們在??Day 5??顯示和隱藏的基礎上讓我們模型可以實現拖拽效果,同時對純色的立方體實現點擊隨機換色的功能。 首先是入口文件,無需做出改變…

Linux反彈SHell與檢測思路

免責聲明 文章僅做經驗分享用途,利用本文章所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,作者不為此承擔任何責任,一旦造成后果請自行承擔!!! 反彈shell payload在線生成 https://www.chinabaiker.com/Hack-Tools/ Online - Reverse Shell G…

Talk | UCSB博士生宋珍巧:基于人工智能的功能性蛋白質設計

本期為TechBeat人工智能社區第549期線上Talk。 北京時間11月22日(周三)20:00,UC Santa Barbara博士生—宋珍巧的Talk已準時在TechBeat人工智能社區開播! 她與大家分享的主題是: “基于人工智能的功能性蛋白質設計”,介紹了如何利用機器學習算…

linux下文件夾上有個鎖或者x 如何去除

發現linux下文件夾上有個鎖或者x 如何去除 原因 權限問題 解決方法 sudo chmod 777 filename 去除當前文件夾以及所有子文件夾 sudo chmod -R 777 filename

itext - PDF模板套打

項目需求:獲取列表數據之后直接將數據生成一個pdf。因此需要使用到 itext 對pdf進行直接操作。 環境配置 需要為pdf添加文字域,因此需要安裝Adobe Acrobat 準備一個空的PDF文件,如果有現成的模板更好 依賴配置,我們使用itext的7版…

python數據結構與算法-14_樹與二叉樹

樹和二叉樹 前面我們講了兩種使用分治和遞歸解決排序問題的歸并排序和快速排序,堆排序先就此打住,因為涉及到樹的概念,所以我們先來講講樹。 講完了樹之后后面我們開始介紹一種有用的數據結構堆(heap), 以及借助堆來實現的堆排序…

python命令行 引導用戶填寫ssh登錄信息

字多不看,直接體驗: 待補充 演示代碼 # -*- coding:UTF-8 -*- """ author: dyy contact: douyaoyuan126.com time: 2023/11/23 9:20 file: 引導用戶填寫ssh接口信息.py desc: xxxxxx """# region 引入必要的依賴 impor…

【圖像分類】基于深度學習的垃圾分類系統的設計與實現(ResNet網絡,附代碼和數據集)

寫在前面: 首先感謝兄弟們的關注和訂閱,讓我有創作的動力,在創作過程我會盡最大能力,保證作品的質量,如果有問題,可以私信我,讓我們攜手共進,共創輝煌。(專欄訂閱用戶訂閱專欄后免費提供數據集和源碼一份,超級VIP用戶不在服務范圍之內,不想訂閱專欄的兄弟們可以私信…

LORA 教程

1 什么是LoRa 2 LoRa調制解調技術 3 什么是loraWAN 4 LoRa和LoRaWAN詳細介紹 5 LoRaWAN 物理層(PHY)詳解 6 LoRaWAN MAC幀格式詳解 7 LoraWAN MAC控制命令詳解 8 LoRaWAN 設備入網流程詳解(OTAA和ABP) 9 LoRaWAN 自適…

el-table表格排序(需要后端判別),el-table導出功能(向后端發送請求)

&#xff08;1&#xff09;表格排序 &#xff08;2&#xff09;簡單的table導出功能&#xff08;需要后臺支撐&#xff09;必須要有iframe &#xff08;3&#xff09;頁面所有代碼&#xff1a; <template><div class"mainContainer"><el-form:model&…

golang學習筆記——將 channel 用作通信機制

文章目錄 將 channel 用作通信機制Channel 語法無緩沖 channel緩沖 channelschannel 與 goroutine緩沖 channels 示例多路復用 將 channel 用作通信機制 golang學習筆記——將 channel 用作通信機制 golang學習筆記——并發計算斐波納契數 Go 中的 channel 是 goroutine 之間…

使用Pytorch從零開始構建DCGAN

在本文中&#xff0c;我們將深入研究生成建模的世界&#xff0c;并使用流行的 PyTorch 框架探索 DCGAN&#xff08;生成對抗網絡 (GAN) 的一種變體&#xff09;的實現。具體來說&#xff0c;我們將使用 CelebA 數據集&#xff08;名人面部圖像的集合&#xff09;來生成逼真的合…

網絡安全等級保護收費標準?

不同省份價格會略有不同&#xff0c;二級等保一般不低于5萬元;三級等保不低于9萬元&#xff0c;個別省份也可能7萬也能辦理&#xff0c;根據企業實際情況和省市選定的代理機構確定。 等級保護二級? 第二級等保是指信息系統受到破壞后&#xff0c;會對公民、法人和其他組織的合…

刷到一個很騷氣的 Go 錯誤處理新提案

在比較一段長的時間里&#xff0c;Go 的錯誤處理已經沒有什么特別的進展和新改進了。看著已經到了瓶頸期。 今天在 GitHub 上學習時&#xff0c;看到 Go 社區里有人提了個錯誤處理的優化提案《proposal: Go 2: Error-Handling Paradigm with !err Grammar Sugar》&#xff0c;…

《YOLOv8創新改進》專欄指導書冊 手把手創新教程

&#x1f680;&#x1f680;&#x1f680;YOLOv8改進專欄&#xff1a;http://t.csdnimg.cn/hGhVK 學姐帶你學習YOLOv8&#xff0c;從入門到創新&#xff0c;輕輕松松搞定科研&#xff1b; 本專欄為訂閱者提供答疑服務&#xff0c;每一篇提供源代碼和詳細的每一個步驟改進地方。…

Navicat 技術指引 | 適用于 GaussDB 的模型功能

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持對 GaussDB 主備版的管理和開發功能。它不僅具備輕松、便捷的可視化數據查看和編輯功能&#xff0c;還提供強大的高階功能&#xff08;如模型、結構同步、協同合作、數據遷移等&#xff09;&#xff0c;這…

工業交換機具備哪些功能?

在工業網絡中&#xff0c;工業交換機起著至關重要的作用&#xff0c;具備多樣功能和廣泛的應用。 1、工業交換機的作用是實現不同網絡設備之間的互聯。它能夠連接各種不同類型的設備&#xff0c;如計算機、服務器、傳感器和監控設備&#xff0c;實現設備間的相互通信和數據傳輸…

應用高斯高通濾波器提取圖像輪廓

任務要求&#xff1a; 圖為HALCON中的例圖“tooth_rim”&#xff0c;請用高斯高通濾波器提取圖像的輪廓。 任務分析&#xff1a; 圖像的邊緣對應頻譜的高頻部分&#xff0c;可以通過構造一個高頻濾波器&#xff0c;過濾掉圖像的低頻部分&#xff0c;從而得到圖像的邊緣。HALC…

蘋果怎么關閉懸浮球?讓我來解答您的疑惑!

懸浮球是蘋果設備上的一種可進行自定義的快捷操作功能&#xff0c;它可以位于手機屏幕的任意位置&#xff0c;以浮動的方式顯示。然而&#xff0c;有時候懸浮球對某些朋友來說可能會變得多余&#xff0c;那么蘋果怎么關閉懸浮球呢&#xff1f;接下來&#xff0c;小編將為大家揭…