智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

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

來源:網絡

點擊:985

A+ A-

所屬頻道:新聞中心

關鍵詞: 閃存,微控制器,代碼發布,代碼保護

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

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

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

      代碼保護

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

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

      簡單密碼

      循環碼(Rolling-code)產生器已在車庫門鎖、安全進出卡等多種設備上應用多年。圖1顯示簡單的循環碼產生器是如何工作的。一組具有相同時鐘信號的雙穩態觸發器串聯連接,其輸出端有各種抽頭。在給出的例子中,Q2端沒有被使用,其余的輸出端連接唯一的OR功能端口,該端口在每個時鐘信號沿得到新的輸入位。可能產生的組合數目取決于觸發器的個數和接到OR函數端口的抽頭個數。

      

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

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

      

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

      傳輸方法

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

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

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

      裝載程序使用數據包,數據包有數據頭和校驗和以驗證傳輸。如果數據包傳輸到了控制器并且校驗和是正確的,則裝載程序把它交給解碼引擎(如果它是加密的)。在加密數據的內部有另外一個密碼校驗和,這給解密引擎一個驗證密碼信息的手段。它將首先應用通用碼并測試校驗和,如果失敗,則利用來自串行數字的唯一密碼重試。如果再次失敗,則告訴裝載程序固件對這個設備無效。這也可防止代碼被未經授權的篡改和意外損壞。

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

      設計實例

      圖3是一個具備解密功能的固件裝載程序的流程圖。裝載程序使用在編程器和系統模擬程序中廣泛使用的修改版Intel HEX數據格式。這將使應用程序現有架構支持標準并易于使用。裝載固件程序用COP8匯編語言編寫,以簡少代碼,并利用器件全部的閃存特性。

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

      表里包括了標準的Intel HEX格式記錄類型。注意該標準只定義了6種記錄類型。為利用現有的結構,裝載程序采用Intel HEX 格式,并指定加密數據為一種新的記錄類型。記錄類型0x10將被用于代表加密數據,這是不能變的。

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

      

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

      如果校檢和失敗,裝載程序將保持控制并不斷地往主機發送信號,用硬件設計實現的任何手段開始裝載。裝載程序也可以控制用戶接口通知這種狀態。在調試系統時,一個表示“固件裝載” 的簡單的LED燈非常有用。

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

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

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 铁盒|铁罐|马口铁盒|马口铁罐|茶叶铁罐|铁盒-麦氏罐业 | 小地磅,钢瓶秤,叉车称,轮椅秤,倒桶秤,畜牧秤,轴重仪,称重模块——上海实干实业有限公司-网站首页 | 文化艺术网-专注文化,服务艺术 温州网络公司_网站建设_网络营销策划_阿里淘宝店铺服务-温州聚欣网络科技有限公司 | 液压油缸生产厂家-常州辰佰液压机械有限公司 | 正拓夏令营官网-中小学生军事夏令营-研学军旅训练拓展夏令营 | 气体检测仪,多功能气体检测仪,四合一检测仪,氯气检测仪,有机挥发气体检测仪,气体报警器-南京诺邦电子科技有限公司 | 家电|想认识品茶妹子?这份攻略手把手教你 | 无轴螺旋输送机_双无轴螺旋输送机_垃圾,污泥无轴螺旋输送机-新乡市大汉振动机械有限公司 | 青州东威机械有限公司,洗沙机,脱水筛、细沙回收机,淘金设备,洗石机,砂石分离机,筛沙机,采沙船,清淤船,破碎制砂机,海沙淡化设备 | 长沙变频器维修,变频器维修,ABB变频器维修,西门子变频器维修,施耐德变频器维修,伺服驱动器维修,工业机器人维修,20年专业工控电气维修,长沙文铖电气设备有限公司_长沙文铖电气设备有限公司 | 深圳喜运达物流官网_东南亚物流|海运|专线|海外仓_泰国菲律宾马来西亚海运|物流专线|海外仓 | 土壤养分测定仪-土壤养分速测仪-生产厂家-托普云农土壤仪器站 | 宁波雷豹机电科技有限公司|雷豹冷风机|雷豹工业大风扇|MFC18000|MFC16000|MFC6000|EF3622|EF4222|EF4822|移动工业蒸发式冷风机空气冷却器|大型工业空调扇|雷豹移动式工业大风扇|雷豹大风扇|生产厂家|公司官网 | 食品甲醛测定仪,啤酒甲醛测定仪,食盐碘测定仪,食品细菌检验仪,水质细菌检验仪-厦门欣锐仪器仪表有限公司 | 石家庄华龙鼎电动门,石家庄电动门电话,石家庄电动门配件,石家庄电动门维修电话,石家庄电动门安装电话,石家庄华龙电动门 | 铅板,防辐射铅板,医用铅板,保定美伦有色金属有限公司 | 卷帘门,防火卷帘,快速门,硬质快速门,提升门,伸缩门,堆积门,车库门维修-烟台捷曼门业有限公司 | 投影仪配件,苏州投影仪维修,B60数显表维修-苏州市加野仪器有限公司 | 找刑事辩护律师_找深圳刑事律师多少钱★王平聚【清华博士/刑法教授】 | 铸造厂-铸铝-铸铜-铝合金铸造-重力铸造-翻砂铸造-[剑锋机械配件]专业东莞|深圳铸造厂 | 饲料设备_饲料加工设备_饲料成套加工设备专业提供商-河南杰昌机械设备有限公司 | 济宁山银煤矿机械有限公司,钻采工具,防爆电器,凿岩机械,风动工具,矿山机械,建筑机械,支护设备,通风防尘,铁路设备,仪器仪表,大型设备,矿用泵,钎具类,消防类,矿车类,配件区类 | 铜陵租车_铜陵租车网_铜陵租车公司_铜陵婚车租赁_铜陵汽车租赁公司-良车汽车租赁 | 淮南网站制作丨淮南做网站丨淮南网络公司丨淮南哪家网络公司好丨淮南智讯网络 | 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 山东中煤建设工程有限公司 | 箱包定制_广州箱包厂_双肩电脑背包_双肩旅行包_拉杆箱包_商务公文包_包包批发,深圳爱自由,礼品箱包定制,电话:400-0061-690 | 芜湖表面处理-涂装-精密加工-阳极氧化-芜湖研历光电科技有限公司 | 小型静音无油空压机价格-医用无油制氧空气压缩机-浙江盛源水润滑空压机制造有限公司 | 太原万通汽车学校[官网]-太原好的汽修培训学校,学新能源汽车技术,学汽修,学汽车检测与维修技术 | 普利卡管|普利卡管接头|普利卡接头-上海闵彬管业有限公司 | 压力蒸汽灭菌器_脉动真空灭菌器_环氧乙烷灭菌器_等离子灭菌器_广州市科洋 | 厌氧培养系统_厌氧工作站_厌氧培养装置_智能厌氧培养_常州普莱实验系统 | 潍坊劲昊磁电科技有限公司-电磁除铁器,永磁除铁器,管道式除铁器,金属探测仪,磁滚筒,输送设备,给料设备,破碎设备 | 文君阁-提供生活百科,日常生活健康小常识,生活小窍门,百科知识大全 | 英格索兰隔膜泵_ARO气动隔膜泵_英格索兰隔膜泵配件【原厂正品】连续五年无投诉_英格索兰隔膜泵代理-苏州瑞晟茂环保设备有限公司 印刷公司,北京印刷厂,宣传画册手册印刷厂-和智印彩页设计 | 混凝土修补-清水混凝土保护剂-仿清水混凝土-混凝土装修-混凝土色差处理-混凝土色差修复剂-德州唐荣建筑装饰工程有限公司 | 金煌家装官网-长沙装饰|长沙装修|长沙装修公司|长沙装饰公司-金煌家装 | 推台锯_多片锯_圆木推台锯_方木多片锯_圆木多片锯-河北茂业机械有限公司 | 秦皇岛市华谊彩印有限公司 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 |