<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 采用閃存的微控制器在代碼發(fā)布中的代碼保護

采用閃存的微控制器在代碼發(fā)布中的代碼保護

作者: 時(shí)間:2011-02-10 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/187630.htm

在如今競爭激烈的市場(chǎng)中,保護公司的知識產(chǎn)權(IP)是最高優(yōu)先級的事項之一。多年的開(kāi)發(fā)可能產(chǎn)生了包含很多商業(yè)秘密或專(zhuān)有算法的設計。隨著(zhù)基于的微控制器得到更多地應用并集成了更多的特性,許多公司摒棄傳統的一次性可編程(OTP)微控制器(MCU),轉而采用。

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

保護

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

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

簡(jiǎn)單密碼

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

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

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

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

傳輸方法

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

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

COP8系列的另一個(gè)特性是可以采用軟件陷阱以引導恢復機制。它執行操作碼0x00,可將這個(gè)操作碼編程到所有未用單元。如果這個(gè)操作碼被執行,操作將從軟件陷阱向量開(kāi)始,使裝載程序重新評估固件的完整性。這是一個(gè)容錯的好特性。不管什么原因,代碼被破壞,裝載程序將得到控制,以便讓技術(shù)人員(或用戶(hù))重新裝載固件。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 閃存 代碼 發(fā)布 代碼保護

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>