當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀]包裝信息可能包含:指定目標(biāo)設(shè)備、代碼版本、大小、日期和其它對(duì)用戶有用的信息。這個(gè)信息可警告操作員正在使用一個(gè)較低版本的固件,從而會(huì)使設(shè)備的部分性能降低,或者正在裝載一個(gè)不支持的指定設(shè)備。在如今競(jìng)爭(zhēng)激烈

包裝信息可能包含:指定目標(biāo)設(shè)備、代碼版本、大小、日期和其它對(duì)用戶有用的信息。這個(gè)信息可警告操作員正在使用一個(gè)較低版本的固件,從而會(huì)使設(shè)備的部分性能降低,或者正在裝載一個(gè)不支持的指定設(shè)備。

在如今競(jìng)爭(zhēng)激烈的市場(chǎng)中,保護(hù)公司的知識(shí)產(chǎn)權(quán)(IP)是最高優(yōu)先級(jí)的事項(xiàng)之一。多年的開發(fā)可能產(chǎn)生了包含很多商業(yè)秘密或?qū)S兴惴ǖ脑O(shè)計(jì)。隨著基于閃存的微控制器得到更多地應(yīng)用并集成了更多的特性,許多公司摒棄傳統(tǒng)的一次性可編程(OTP)微控制器(MCU),轉(zhuǎn)而采用閃存。

閃存允許在生產(chǎn)線的終點(diǎn)進(jìn)行實(shí)時(shí)編程,也允許在生產(chǎn)之后修改代碼。但是如果通過(guò)因特網(wǎng),公司將面臨IP將泄漏給競(jìng)爭(zhēng)者的問(wèn)題。應(yīng)該采用各種方法來(lái)控制更新授權(quán)許可,并在泄漏產(chǎn)品的IP的情況下, 提供現(xiàn)場(chǎng)更新。

代碼保護(hù)

保護(hù)現(xiàn)場(chǎng)配置的軟件產(chǎn)品的方法很多,采用哪種方法取決于供應(yīng)商希望保護(hù)什么。大多數(shù)軟件保護(hù)機(jī)制是防止對(duì)程序或數(shù)據(jù)進(jìn)行未經(jīng)授權(quán)的復(fù)制。如今復(fù)制文件非常容易,通過(guò)因特網(wǎng)能很快地找到許多拷貝。當(dāng)固件是某個(gè)硬件平臺(tái)的一部分時(shí),保護(hù)固件中包含的IP通常比保護(hù)對(duì)文件的拷貝更重要。當(dāng)然,如果固件更新需要購(gòu)買,那么保護(hù)拷貝也很重要。

另一個(gè)問(wèn)題涉及基于微控制器產(chǎn)品破解密碼的性能。RSA和DES標(biāo)準(zhǔn)對(duì)性能和存儲(chǔ)器的要求都很高。不幸的是,大多數(shù)的微控制器在這兩方面的資源都有限,從而要求不同的加密和解密方法。我們必須提供一種通用的或者針對(duì)特定設(shè)備的密鑰方案。

簡(jiǎn)單密碼

循環(huán)碼(Rolling-code)產(chǎn)生器已在車庫(kù)門鎖、安全進(jìn)出卡等多種設(shè)備上應(yīng)用多年。圖1顯示簡(jiǎn)單的循環(huán)碼產(chǎn)生器是如何工作的。一組具有相同時(shí)鐘信號(hào)的雙穩(wěn)態(tài)觸發(fā)器串聯(lián)連接,其輸出端有各種抽頭。在給出的例子中,Q2端沒(méi)有被使用,其余的輸出端連接唯一的OR功能端口,該端口在每個(gè)時(shí)鐘信號(hào)沿得到新的輸入位??赡墚a(chǎn)生的組合數(shù)目取決于觸發(fā)器的個(gè)數(shù)和接到OR函數(shù)端口的抽頭個(gè)數(shù)。

通常將幾個(gè)觸發(fā)器的輸出用作循環(huán)鑰匙碼。實(shí)際應(yīng)用時(shí)(如作在車庫(kù)門鎖),使用一個(gè)完全相同的發(fā)生器來(lái)測(cè)試鑰匙碼。隨著新碼被不斷地使用,會(huì)發(fā)生整個(gè)序列重復(fù)出現(xiàn)的情況,這可能是在千萬(wàn)或幾億個(gè)鑰匙碼之后。這時(shí)就不能再使用它了。在用于車庫(kù)門鎖的情況下,它可以防止罪犯用無(wú)線接收機(jī)盜聽并簡(jiǎn)單地重現(xiàn)鑰匙碼以開門。

在代碼加密的情況下,觸發(fā)器的輸出與被加密或解密的數(shù)據(jù)被送到另外一個(gè)OR函數(shù)端口(圖2中的A1)。數(shù)據(jù)的每個(gè)字節(jié)、字或雙字都與選中的觸發(fā)器端口進(jìn)行OR運(yùn)算,再加上用戶特定另外函數(shù)。那個(gè)函數(shù)可以簡(jiǎn)單到只加上一個(gè)常數(shù)。這個(gè)過(guò)程必須是可逆的,所以用戶定義的函數(shù)不是隨機(jī)的。由安置觸發(fā)器抽頭決定的密碼和由移位寄存器的初態(tài)、所選定的種子一起提供了加密和解密的算法??砂凑沾袛?shù)字的方法拆分這些密碼,以向特定設(shè)備提供唯一的密碼。也就是說(shuō),設(shè)備的串行號(hào)碼僅提供一半的密碼信息,制造商保留其余密碼信息。很明顯,這種方案存在著多種排列。

在固件更新是向全球發(fā)布時(shí),例如,適用所有產(chǎn)品的錯(cuò)誤的更新,可以使用一個(gè)特別的串行碼。解密引擎首先嘗試用全球碼,-----可能是一個(gè)特殊數(shù)字圖樣。如果全球碼沒(méi)有解密出正確的校驗(yàn)和,才使用唯一的密碼。它可以告訴裝載程序:加密的源文件包含了什么類型的固件更新數(shù)據(jù)。

傳輸方法

很明顯,產(chǎn)品內(nèi)必須要有某種解碼引擎和代碼裝載程序。這里討論的技術(shù)可以用COP8微控制器來(lái)解釋。該目標(biāo)控制器是包含32KB閃存和1KB RAM的COP8CBR。 對(duì)于現(xiàn)場(chǎng)可更新的設(shè)備,必須注意這樣一個(gè)說(shuō)明以防止誤解:微控制器必須具有一邊運(yùn)行程序一邊對(duì)閃存進(jìn)行編程的能力。不能用把控制器保持在重新設(shè)置狀態(tài)或者要求外部編程來(lái)更新存儲(chǔ)著程序的閃存。解碼和裝載程序必須駐留在控制器內(nèi)部,并且完全可靠。COP8閃存產(chǎn)品能滿足這些要求。

固件的裝載程序是一個(gè)代碼模塊,它在重新設(shè)置后運(yùn)行,并能判斷本次裝載是否有效。如果發(fā)現(xiàn)被裝載的代碼無(wú)效,裝載程序就進(jìn)入裝載模式(LOAD MODE),直到有能夠操作的固體程序??赏ㄟ^(guò)控制器提供的物理層接口來(lái)實(shí)現(xiàn)這點(diǎn)。COP8可使用串口。如果當(dāng)前代碼是有效的,裝載程序會(huì)把控制交給固件應(yīng)用程序的入口。

COP8系列的另一個(gè)特性是可以采用軟件陷阱以引導(dǎo)恢復(fù)機(jī)制。它執(zhí)行操作碼0x00,可將這個(gè)操作碼編程到所有未用單元。如果這個(gè)操作碼被執(zhí)行,操作將從軟件陷阱向量開始,使裝載程序重新評(píng)估固件的完整性。這是一個(gè)容錯(cuò)的好特性。不管什么原因,代碼被破壞,裝載程序?qū)⒌玫娇刂?,以便讓技術(shù)人員(或用戶)重新裝載固件。[!--empirenews.page--]

裝載程序使用數(shù)據(jù)包,數(shù)據(jù)包有數(shù)據(jù)頭和校驗(yàn)和以驗(yàn)證傳輸。如果數(shù)據(jù)包傳輸?shù)搅丝刂破鞑⑶倚r?yàn)和是正確的,則裝載程序把它交給解碼引擎(如果它是加密的)。在加密數(shù)據(jù)的內(nèi)部有另外一個(gè)密碼校驗(yàn)和,這給解密引擎一個(gè)驗(yàn)證密碼信息的手段。它將首先應(yīng)用通用碼并測(cè)試校驗(yàn)和,如果失敗,則利用來(lái)自串行數(shù)字的唯一密碼重試。如果再次失敗,則告訴裝載程序固件對(duì)這個(gè)設(shè)備無(wú)效。這也可防止代碼被未經(jīng)授權(quán)的篡改和意外損壞。

如果解密引擎成功地解碼數(shù)據(jù), 它將把數(shù)據(jù)交給在閃存中對(duì)實(shí)際閃存塊進(jìn)行編程的程序例程。當(dāng)然,對(duì)于不同產(chǎn)家,這個(gè)程序是不同的,在后面的設(shè)計(jì)實(shí)例中將給出COP8的程序。這個(gè)程序保留了一個(gè)128字節(jié)的RAM用于更新閃存。當(dāng)然,這塊RAM在裝載程序完成后可以存放應(yīng)用程序的數(shù)據(jù)。

設(shè)計(jì)實(shí)例

圖3是一個(gè)具備解密功能的固件裝載程序的流程圖。裝載程序使用在編程器和系統(tǒng)模擬程序中廣泛使用的修改版Intel HEX數(shù)據(jù)格式。這將使應(yīng)用程序現(xiàn)有架構(gòu)支持標(biāo)準(zhǔn)并易于使用。裝載固件程序用COP8匯編語(yǔ)言編寫,以簡(jiǎn)少代碼,并利用器件全部的閃存特性。

簡(jiǎn)單來(lái)說(shuō),Intel HEX格式是一種用ASCII編碼表示的數(shù)據(jù)記錄格式,用于向設(shè)備的存儲(chǔ)器編程對(duì)象代碼或數(shù)據(jù)。該格式由下列字段組成:使用ASCII字符0x3A或者即“:”記錄起始字段、長(zhǎng)度范圍為0x00-0xFF的數(shù)據(jù)長(zhǎng)度字段(兩個(gè)ASCII字符)、偏移字段、記錄類型字段、信息或數(shù)據(jù)字段以及校驗(yàn)和字段。每個(gè)字段都由標(biāo)準(zhǔn)的可打印ASCII字符表示。例如,“10”代表十六進(jìn)制0x10或者十進(jìn)制16,可表示長(zhǎng)度字段。實(shí)際上它的編碼是0x31、0x30,這是“0” 和“1” 的ASCII碼。因?yàn)閮?nèi)容是可打印的ASCII字符,能被文本編輯器查看,所以需要加密。

表里包括了標(biāo)準(zhǔn)的Intel HEX格式記錄類型。注意該標(biāo)準(zhǔn)只定義了6種記錄類型。為利用現(xiàn)有的結(jié)構(gòu),裝載程序采用Intel HEX 格式,并指定加密數(shù)據(jù)為一種新的記錄類型。記錄類型0x10將被用于代表加密數(shù)據(jù),這是不能變的。

代碼裝載程序也需要一個(gè)流程控制方法,以保證在下一個(gè)記錄裝載之前,寫閃存的周期已經(jīng)完成。在大多數(shù)的情況下,應(yīng)用程序會(huì)產(chǎn)生可分成16個(gè)字節(jié)一組的文件,以方使閱讀。通常閃存是以128或256字節(jié)進(jìn)行分塊,因此必須有一個(gè)裝載程序的命令要求從主機(jī)來(lái)的數(shù)據(jù)允許可變記錄大小。裝載程序必須能處理256字節(jié)的數(shù)據(jù),因?yàn)榘凑諛?biāo)準(zhǔn),這是最大的記錄大小。表的底部顯示了本例中新擴(kuò)展的記錄類型。因?yàn)镃OP8系列器件只有16位地址,無(wú)法執(zhí)行記錄類型0x02到0x05。對(duì)于具備更大閃存的處理器,例如CR16,它能直接訪問(wèn)16M字節(jié)的內(nèi)存,就需要有擴(kuò)展線性地址的記錄類型。

觀察圖3中的流程圖,重新設(shè)置后的第一個(gè)任務(wù)是檢驗(yàn)閃存的內(nèi)容。這是通過(guò)讀取各個(gè)128字節(jié)的頁(yè)面(除了位于閃存頂部的自舉驗(yàn)證代碼和裝載程序代碼)來(lái)完成的。只驗(yàn)證應(yīng)用程序的代碼這使計(jì)算校驗(yàn)和非常容易。但如果需要,它也可以包括檢測(cè)裝載程序部件。當(dāng)通過(guò)校驗(yàn)和檢查,控制就被向量轉(zhuǎn)移到應(yīng)用程序固件的入口。入口保持不變非常重要。如果它發(fā)生了移動(dòng),裝載程序會(huì)把向量轉(zhuǎn)到一個(gè)不正確的入口,并可能出現(xiàn)崩潰。另外,裝載程序可以從代碼中讀出進(jìn)入向量,把向量壓入堆棧并返回,以迫使從那個(gè)地址開始執(zhí)行。這個(gè)方案允許入口點(diǎn)可變。

如果校檢和失敗,裝載程序?qū)⒈3挚刂撇⒉粩嗟赝鳈C(jī)發(fā)送信號(hào),用硬件設(shè)計(jì)實(shí)現(xiàn)的任何手段開始裝載。裝載程序也可以控制用戶接口通知這種狀態(tài)。在調(diào)試系統(tǒng)時(shí),一個(gè)表示“固件裝載” 的簡(jiǎn)單的LED燈非常有用。

裝載程序?qū)⒊掷m(xù)地向主機(jī)請(qǐng)求記錄,直到主機(jī)通過(guò)EOF記錄表明沒(méi)有記錄了。檢測(cè)到的0x10類型記錄 將被送到解碼引擎,并適當(dāng)解碼數(shù)據(jù)。這使得實(shí)際向閃存寫數(shù)據(jù)的代碼,既可以操作加密數(shù)據(jù),也可操作對(duì)未加密數(shù)據(jù)。對(duì)開發(fā)和內(nèi)部測(cè)試來(lái)說(shuō),未加密的數(shù)據(jù)通路很有價(jià)值。當(dāng)收到EOF記錄后,所有新固件數(shù)據(jù)都被寫入閃存。然后,裝載程序把控制交還給自舉測(cè)試,以驗(yàn)證新代碼未被破壞。

如上所述,現(xiàn)場(chǎng)可更新設(shè)備可以在不曝露IP的情況下得到實(shí)現(xiàn)。使用一個(gè)簡(jiǎn)單的密碼, 制造商的固件就能得到保護(hù),客戶可以在世界各地能夠訪問(wèn)因特網(wǎng)的地方更新他們的設(shè)備。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉