《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 微波|射頻 > 設(shè)計應(yīng)用 > 采用閃存的微控制器在代碼發(fā)布中的代碼保護
采用閃存的微控制器在代碼發(fā)布中的代碼保護
摘要: 閃存允許在生產(chǎn)線的終點進行實時編程,也允許在生產(chǎn)之后修改代碼。但是如果通過因特網(wǎng),公司將面臨IP將泄漏給競爭者的問題。應(yīng)該采用各種方法來控制更新授權(quán)許可,并在泄漏產(chǎn)品的IP的情況下, 提供現(xiàn)場更新。
Abstract:
Key words :

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

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

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

代碼保護

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

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

簡單密碼

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

 

 

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

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

 

 

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

傳輸方法

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

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

COP8系列的另一個特性是可以采用軟件陷阱" title="軟件陷阱">軟件陷阱以引導(dǎo)恢復(fù)機制。它執(zhí)行操作碼" title="操作碼">操作碼0x00,可將這個操作碼編程到所有未用單元。如果這個操作碼被執(zhí)行,操作將從軟件陷阱向量開始,使裝載程序重新評估固件的完整性。這是一個容錯的好特性。不管什么原因,代碼被破壞,裝載程序?qū)⒌玫娇刂疲员阕尲夹g(shù)人員(或用戶)重新裝載固件。

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

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

設(shè)計實例

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

簡單來說,Intel HEX格式是一種用ASCII編碼表示的數(shù)據(jù)記錄格式,用于向設(shè)備的存儲器編程對象代碼或數(shù)據(jù)。該格式由下列字段組成:使用ASCII字符0x3A或者即“:”記錄起始字段、長度范圍為0x00-0xFF的數(shù)據(jù)長度字段(兩個ASCII字符)、偏移字段、記錄類型字段、信息或數(shù)據(jù)字段以及校驗和字段。每個字段都由標(biāo)準(zhǔn)的可打印ASCII字符表示。例如,“10”代表十六進制0x10或者十進制16,可表示長度字段。實際上它的編碼是0x31、0x30,這是“0” 和“1” 的ASCII碼。因為內(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ù),這是不能變的。

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

 

 

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

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

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

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧美日韩另类精品一区二区三区| 欧美一区日本一区韩国一区| 亚洲第一主播视频| 亚洲一区二区三区精品动漫| 艳女tv在线观看国产一区| 亚洲国产婷婷香蕉久久久久久| 国产亚洲精品一区二区| 国产精品亚洲综合天堂夜夜| 亚洲精品在线免费| 欧美成人中文| 亚洲欧洲一区二区三区久久| 夜夜嗨一区二区| 久久精品亚洲乱码伦伦中文| 国产偷自视频区视频一区二区| 亚洲精品久久久久久下一站 | 欧美日韩中文精品| 精品999成人| 亚洲欧美国产va在线影院| 欧美日本视频在线| 亚洲欧美激情视频在线观看一区二区三区 | 久久精品国产亚洲一区二区三区| 小黄鸭精品aⅴ导航网站入口| 国内精品国产成人| 欧美大色视频| 亚洲欧美国内爽妇网| 亚洲大胆av| 日韩午夜在线视频| 韩日精品视频一区| 欧美丝袜第一区| 一二三区精品福利视频| 国产麻豆91精品| 亚洲一区二区三区三| 国产伦精品一区二区三区高清版| 一区二区激情| 欧美亚洲一区三区| 国产网站欧美日韩免费精品在线观看 | 久色婷婷小香蕉久久| 亚洲人成免费| 久久久蜜臀国产一区二区| 一区二区不卡在线视频 午夜欧美不卡在 | 午夜在线精品偷拍| 欧美日本三级| 亚洲综合色视频| 欧美一区三区二区在线观看| 国产精品福利在线观看网址| 在线视频精品一区| 男女精品网站| 久久精品视频导航| 亚洲男人的天堂在线aⅴ视频| 国产精品自拍视频| 国产一区 二区 三区一级| 精品电影一区| 日韩一区二区久久| 午夜一区二区三区在线观看 | 亚洲精品免费一二三区| 亚洲天堂av在线免费| 性欧美办公室18xxxxhd| 亚洲美女av在线播放| 亚洲欧美综合v| 免费看的黄色欧美网站| 欧美午夜电影一区| 黄色精品一区二区| 亚洲电影专区| 欧美人成免费网站| 一本一道久久综合狠狠老精东影业 | 激情视频一区二区| 亚洲国产精品久久91精品| 亚洲国产另类 国产精品国产免费| 一本色道久久综合亚洲精品小说| 欧美在线综合| 欧美精品在欧美一区二区少妇| 毛片av中文字幕一区二区| 国产精品久久久久高潮| 激情久久久久久久久久久久久久久久| 亚洲最黄网站| 亚洲国产精品成人| 亚洲欧美日韩国产另类专区| 欧美成人高清| 国产日韩精品一区二区三区在线| 最新亚洲一区| 久久精品99国产精品| 亚洲欧美日韩第一区| 欧美精品一区二区三区蜜臀| 国模叶桐国产精品一区| 这里只有视频精品| av成人免费在线| 免费在线视频一区| 国产亚洲一级高清| 亚洲图片欧美午夜| 一区二区三区国产| 欧美wwwwww| 国内精品写真在线观看| 亚洲一区二区毛片| 亚洲午夜精品| 欧美日韩大片| 亚洲区第一页| 亚洲日本va午夜在线影院| 久久精品麻豆| 国产女人18毛片水18精品| 99在线热播精品免费99热| 99这里只有久久精品视频| 亚洲国产人成综合网站| 久久成人av少妇免费| 午夜精品久久久久99热蜜桃导演| 欧美精品福利视频| 亚洲二区免费| 亚洲欧洲精品一区| 麻豆成人在线播放| 一区二区三区在线高清| 久久国产欧美精品| 欧美自拍偷拍午夜视频| 国产精品美女在线| 亚洲视频在线视频| 亚洲一区二区三区涩| 欧美日韩三级视频| 日韩视频一区二区三区在线播放免费观看 | 亚洲精品免费一区二区三区| 老司机午夜免费精品视频| 国产综合香蕉五月婷在线| 欧美一级视频精品观看| 欧美一区二区三区在| 国产精品剧情在线亚洲| 亚洲婷婷国产精品电影人久久| 亚洲视频中文| 国产精品乱人伦一区二区| 亚洲天天影视| 欧美一区二区免费观在线| 国产精品自在欧美一区| 午夜伦欧美伦电影理论片| 久久精品国产亚洲a| 国产性猛交xxxx免费看久久| 欧美在线观看一区二区| 久久久综合香蕉尹人综合网| 狠狠色丁香久久婷婷综合丁香| 亚洲电影观看| 欧美成人激情在线| 亚洲精品国产日韩| 亚洲色图制服丝袜| 国产精品你懂的| 性视频1819p久久| 老巨人导航500精品| 亚洲国产三级| 亚洲色无码播放| 国产精品免费看| 性欧美长视频| 免费看亚洲片| 一本色道综合亚洲| 欧美一级在线亚洲天堂| 国产专区一区| 亚洲精品在线看| 国产精品久久久久久影院8一贰佰| 亚洲在线观看免费| 久久久久国产一区二区| 亚洲高清一区二| 亚洲天堂网在线观看| 国产伦精品免费视频| 亚洲高清视频一区二区| 欧美精品 日韩| 亚洲中午字幕| 欧美va亚洲va香蕉在线| 一本久久a久久精品亚洲| 欧美在线3区| 91久久精品国产91久久性色tv | 蜜桃av噜噜一区二区三区| 亚洲精品国产精品久久清纯直播| 一区二区欧美视频| 最近中文字幕日韩精品| 欧美日韩在线影院| 欧美一区二区三区四区高清 | 国产日韩欧美视频在线| 亚洲欧洲在线播放| 国产精品激情电影| 亚洲国产成人在线视频| 欧美日韩在线精品| 久久精品视频在线免费观看| 欧美日韩国产首页| 久久成人综合网| 欧美三级乱人伦电影| 久久精品123| 国产精品家庭影院| 亚洲精品免费一二三区| 国产精品亚洲综合| 日韩视频―中文字幕| 国产日韩欧美一区二区三区四区| 亚洲日本理论电影| 国产区在线观看成人精品| 99成人精品| 狠狠色综合日日| 亚洲午夜影视影院在线观看| 国外成人在线视频| 亚洲影视在线播放| 亚洲第一在线综合在线| 亚洲伦理在线| 午夜精品福利一区二区三区av| 久久综合一区二区三区| 一区二区欧美精品| 欧美插天视频在线播放| 亚洲欧美激情在线视频| 欧美理论大片| 久久精品视频免费观看|