隨著電子產品更新換代速度的加快,系統升級或功能維護的頻率也隨之加快。由于網絡安全問題,在對設備性能進行升級的時候不得不面對網絡安全的挑戰。
1、MCU的ISP和IAP功能
現在MCU已經普遍采用Flash型的EEPROM作為程序存儲器,Flash結構的存儲器寫入時可以按字節操作把1寫成0,擦除時都是按扇區操作,把0寫成1。它的流行與普及為ISP/IAP功能的實現提供了技術基礎。
ISP,In System Programming,它的意思是“在系統編程”,即MCU不需要從電路板上取下就可以編程寫人最終用戶代碼,已經編程的器件也可以用ISP方式擦除或再編程,從而改變了單片機系統的固化程序升級需拔插單片機芯片、使用專用編程器進行燒錄的麻煩方式,輕松實現在單片機系統電路板上對單片機芯片內固化的程序進行升級。
IAP,In Application Programming,它的意思是“在應用編程”,即MCU在運行時程序存儲器可由程序自身進行擦寫。也就是說程序自己可以往程序存儲器里寫數據或修改程序。這種方式的典型應用就是程序運行中的數據存儲。ISP/IAP的區別是:ISP通常是在手工操作下整片擦除、編程,需要簡單的硬件資源;而IAP卻是在某段程序的控制下對另外一段程序Flash進行讀寫,可以控制對特定地址的讀寫操作。實際上單片機的ISP功能就是通過IAP技術來實現的,即芯片在出廠前就已經有一段芯片制造商的boot程序在芯片里面,片子上電后,開始運行這段程序,當檢測到上位機有下載要求時,便和上位機通信,然后下載數據到存儲區。其實在系統編程是通過廠商的boot程序對片內Flash存儲器進行擦除/編程的方法,而在應用編程是用戶的應用代碼對片內Flash存儲器進行擦除/編程的方法。正是因為有了IAP,從而使得MCU可以將數據寫入到程序存儲器中,數據如同燒入的程序一樣,掉電不丟失。IAP技術的普及對于高檔儀器儀表的智能化意義重大,使得儀器的程序可以根據實際情況進行改變和調整。
2、數據加密
加密就是把明文變成別人看不懂的密文,然后發送給自己想要的人,接收方用配套的解密算法又把密文解開成明文,這樣就不怕在傳送的路上被別人截獲而泄密,以此來防止非授權用戶使用該數據。
數據加密中的明文是指原始的或未加密的數據,需要通過加密算法對其進行加密,加密算法的輸入信息為明文和密鑰;密文,即明文加密后的格式,是加密算法的輸出信息。加密算法是公開的,而密鑰則是不公開的。密文,不應為無密鑰的用戶理解,用于數據的存儲以及傳輸。傳統的加密方法有兩種,替換和置換。替換是使用密鑰將明文中的每一個字符轉換為密文中的一個字符。而置換僅將明文的字符按不同的順序重新排列。單獨使用這兩種方法的任意一種都是不夠安全的,但是將這兩種方法結合起來就能提供比較高的安全程度。
加密方式分為對稱加密和不對稱加密。對稱,就是采用這種加密方法的雙方使用同樣的密鑰進行加密和解密。在對稱加密算法中,數據發送方將明文和加密密鑰一起經過特殊加密算法處理后,使其變成復雜的加密密文發送出去。接收方收到密文后,若想解讀原文,則需要使用與加密相同的密鑰及相同算法的逆運算對密文進行解密,才能使其恢復成可讀明文。這就要求加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。而在大多數的對稱算法中,加密密鑰和解密密鑰是相同的,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求發送方和接收方在安全通信之前,商定一個密鑰。對稱算法的安全性依賴于密鑰,泄漏密鑰就意味著任何人都可以對他們發送或接收的消息解密,所以密鑰的保密性對通信安全至關重要。由于其計算量小、加密速度快、加密效率高,對稱性加密通常在消息發送方需要加密大量數據時使用。如果用戶每次使用對稱加密算法時,都使用其他人不知道的惟一密鑰,安全性是可以得到保證的。
不對稱加密算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發送方必須首先知道接收方的公鑰,然后利用接收方的公鑰來加密原文;接收方收到加密密文后,使用自己的私鑰才能解密密文。顯然,采用不對稱加密算法,收發雙方在通信之前,接收方必須將自己早已隨機生成的公鑰送給發送方,而自己保留私鑰。由于不對稱算法擁有兩個密鑰,因而特別適用于分布式系統中的數據加密。非對稱加密算法的保密性比較好,它消除了最終用戶交換密鑰的需要,但加密和解密花費時間長、速度慢,它不適合于對文件加密而只適用于對少量數據進行加密。廣泛應用的不對稱加密算法有RSA算法和美國國家標準局提出的DSA。以不對稱加密算法為基礎的加密技術應用非常廣泛。
3、常用加密算法
由于受限于MCU的運算能力,并非所有的加密算法都適用于嵌入式系統。TEA(Tiny Encryption Algorithm)是一種小型的對稱加密解密算法,由劍橋大學計算機實驗室的David Wheeler和Roger Needham于1994年發明。它以加密解密速度快、效率高、實現簡單著稱。該算法的可靠性是通過加密輪數而不是算法的復雜度來保證的,TEA算法主要運用了移位和異或運算,密鑰在加密過程中始終不變。它是一種分組密碼算法,其明文密文塊為64比特,密鑰長度為128比特。TEA算法利用不斷增加的Delta(黃金分割率)值作為變化,使得每輪的加密不相同,有很強的抗差分分析能力。
DES算法又被稱為美國數據加密標準,是上世紀七十年代美國IBM公司研制的對稱密碼體制加密算法,并在1977年成為美國官方加密標準。DES的工作原理為:明文按64位進行分組,每個塊用64位密鑰進行加密,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位,使得每個密鑰都有奇數個1),分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組。每塊先用初始置換方法進行加密,再連續進行16次復雜的替換,最后再對其使用初始置換的逆。第i步的替換并不是直接利用原始的密鑰K,而是由K與i計算出的密鑰Ki。其入口參數有三個:key、data、mode。key為加密解密使用的密鑰,data為加密解密的數據,mode為其工作模式。當模式為加密模式時,明文按照64位進行分組,形成明文組,key用于對數據加密,當模式為解密模式時,key用于對數據解密。攻擊DES的主要形式被稱為蠻力或徹底密鑰搜索,即重復嘗試各種密鑰直到有一個符合為止。如果DES使用56位的密鑰,則可能的密鑰數量是2的56次方個。隨著計算機系統能力的不斷發展,DES的安全性比它剛出現時會弱得多,然而從非關鍵性質的實際出發,仍可以認為它是足夠的。不過在實際使用中更多地選擇新的加密標準一高級加密標準。
密碼學中的高級加密標準(Advanced Encryption Standard,AES),是美國聯邦政府采用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標準由美國國家標準與技術研究院(NIST)于2001年11月26日發布于FIPS PUB 197,并在2002年5月26日成為有效的標準。2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一。AES的區塊長度固定為128比特,密鑰長度則可以是128,192或256比特,分別稱為AES—128,AES—192,AES—256,如果數據塊及密鑰長度不足時,則補齊之。AES算法是基于置換和代替的,置換是數據的重新排列,而代替是用一個單元數據替換另一個。AES算法使用了多重循環實現置換和替換,在規范中被稱為Bytes Sub(字節替換)——對數據的每個字節應用非線性變換;Shift Rows(行位移變換)——對每一行字節循環重新排序;Mix Columns(列混合變換)——對矩陣的列應用線性變換;Add Round Key——對狀態和每輪的子密鑰進行異或操作。該算法對內存的需求非常低,使得它很適應于資源受限制的環境。
4、加解密在升級中的應用
“在線升級”實際上是Flash數據存儲的一個特例。完成這樣的功能首先要求芯片提供的EEPROM的地址與程序空間是連續的,一致的,在用戶應用程序中可以對另外一部分程序區進行擦除寫入操作;再者芯片內部Flash程序存儲器容量必須足夠大,使之可以分為幾個區域相互獨立。第一部分是用戶的boot程序,完成上電初始化和解密,并將接收的數據寫入指定地址。第二部分是程序標識區,標記當前用戶程序的運行地址。第三部分是應用程序區1和應用程序區2,當程序運行在程序區1時可以對程序區2進行升級,反之亦然。這兩個區域的大小必須不小于用戶的目標代碼。
在用戶程序區可以存放幾組密鑰信息,與PC下傳的隨機數按照一定的規則生成解密所需的密鑰以保證每次加解密的密鑰信息有差異,只要保證每次密鑰是唯一的,數據的安全性是可以保證的。需要升級芯片中的程序時,PC機按照通信協議的格式下傳指令,用戶boot程序接收到指令后初始化各個變量和寄存器,關閉不需要的中斷,下傳的數據包交叉使用兩種加密算法,包號是奇數時用TEA算法加密并同時下傳兩組隨機數共16個字節,一組是本次解密所用,另一組是下一包解密所用,下傳的數據包號是偶數時用AES算法加密。為提高運算速度,對AES算法的字節替換過程采用查表的方法。只要保證每次下傳的有效數據長度相同,足以達到欺騙性,即使所有數據被截獲,由于芯片內部的密鑰無法讀出,截獲者也無法得到正確的明文。同時考慮到程序中數據容易處理,每次下傳的有效字節數選擇16的整數倍。boot程序將數據正確寫入存儲器后應向上位機返回正確狀態,否則應返回出錯信息以便處理。程序升級完成后上位機發出結束命令并下傳校驗字符,boot程序核對正確后擦除程序標志區并重新寫入標識。
圖1 流程圖
用戶程序升級成功之后,可以通過函數指針的方式調用該程序。函數在編譯時都會被分配一個入口地址,該地址就是函數的指針。只要用一個指針變量指向這個函數的入口地址,就可以通過指針變量調用這個函數。函數指針的本質是指針變量,只不過該指針變量指向函數,讀出程序標志區的運行地址就可以通過指針變量調用新寫入的程序。
5、結束語
為應對網絡安全,有效保護知識產權,本文提出了固件升級的數據加密方案,對于具有IAP功能的芯片具有普遍意義,不僅適用于網絡遠程升級,同樣適用于本地升級。至于加密算法可以根據MCU的能力進行靈活選擇。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:數據加密在嵌入式系統升級中的應用
本文網址:http://www.guhuozai8.cn/html/consultation/10839514728.html