本發(fā)明涉及嵌入式通信系統(tǒng)的安全升級技術,特別涉及一種安全高效的升級文件傳輸方法。
背景技術:嵌入式遠程通信設備在運行過程當中,由于程序運行故障、功能需求增加、性能更新改進等原因,需要對遠程的設備進行軟件升級。在升級的過程當中,首先需要實現(xiàn)文件從服務端到嵌入式設備的遠程傳輸。在復雜的網(wǎng)絡通信環(huán)境下,存在著重要文件傳輸內(nèi)容泄密、通信過程被監(jiān)聽、核心技術被竊取的可能性,也可能會出現(xiàn)對嵌入式網(wǎng)絡設備的惡意攻擊,因此保證升級文件傳輸?shù)陌踩灾陵P重要。由于遠程網(wǎng)絡傳輸存在速度不穩(wěn)定、傳送延遲等因素,也需要特別考慮文件傳輸?shù)目煽啃?,并提高升級文件傳輸效率。目前大多?shù)嵌入式遠程升級技術,沒有對升級文件傳輸?shù)陌踩砸l(fā)足夠的重視,現(xiàn)有嵌入式升級文件傳輸?shù)陌踩珯C制大多數(shù)只是對升級文件進行加密或者編碼,文件傳輸只涉及服務端與客戶端,缺乏完善的身份認證機制,對升級文件信息泄露也沒有防范機制。對于處于網(wǎng)絡核心地位的嵌入式通信設備,特別需要實現(xiàn)一套完善的升級文件傳輸方式。
技術實現(xiàn)要素:本發(fā)明的目的在于提供一種基于差分文件編碼、可靠校驗機制及安全身份驗證的升級文件傳輸方法。為了達到上述目的,本發(fā)明的技術方案為:一種嵌入式升級文件傳輸方法,其步驟包括:1)升級服務器生成升級文件信息和加密密鑰同時向第三方網(wǎng)絡管理服務器發(fā)送解密公鑰;2)所述第三方網(wǎng)絡管理服務器與所述升級客戶端建立連接,將所述客戶端升級文件信息、升級服務器地址以及解密公鑰發(fā)送到所述升級客戶端;3)所述升級客戶端發(fā)送升級請求到升級服務器,根據(jù)所述升級服務器地址與所述升級服務器建立連接,根據(jù)所述客戶端升級文件信息獲取升級服務器上的差異文件,根據(jù)所述解密公鑰解密出校驗值,校驗成功后傳輸文件完成升級。更進一步,所述升級客戶端用接收到的差異文件與本地版本按照如下方法還原出更新版本文件:所述升級客戶端首先讀取差異文件的起始塊的版本信息,如果是當前版本,則根據(jù)塊的首地址和塊長度從當前版本文件復制數(shù)據(jù)到還原文件;其次,如果是更新版本,則根據(jù)其塊長度,從差異文件中復制數(shù)據(jù)到還原文件;最后,依次還原每一個塊,直到差異文件結束。更進一步,按照如下方法比對所述還原文件的校驗碼和解密后的校驗碼:1)客戶端利用公鑰解密接收到的加密校驗碼,并選擇散列函數(shù)計算還原文件的散列值;2)比對解密后的校驗碼與散列值是否一致,若相同,則文件傳輸信息完整,文件發(fā)送方身份為安全;3)如果不相同,說明文件傳輸有錯誤,文件重新傳輸。更進一步,所述散列函數(shù)為MD5、SHA。更進一步,所述差異文件的生成方法是:在升級服務器中將升級文件信息中更新版本文件以若干個字節(jié)為一塊等分為若干塊,并逐塊與當前版本文件比較。更進一步,所述比對方法為:1)計算各個塊的弱Hash值和強Hash值,并分別存為Hash表;2)比對當前版本字符塊與更新版本字符塊的前幾個字符,如果匹配,則依次比對其弱Hash值和強Hash值,如果都匹配,則保存當前版本字符塊在當前版本文件的首地址、塊長度和版本標記到差異文件中;3)如果更新版本字符塊找不到匹配的塊,則保存更新版本字符塊的長度、版本標記和該塊的內(nèi)容到差異文件中。更進一步,所述加密和/或解密密鑰是通過隨機方式產(chǎn)生的RSA或ECC私鑰和/或公鑰。更進一步,所述升級服務器地址與所述升級服務器建立TCP連接。更進一步,所述第三方網(wǎng)絡管理服務器與所述升級客戶端根據(jù)通過安全身份認證的網(wǎng)絡管理系統(tǒng)建立通信連接并發(fā)送信息。更進一步,所述發(fā)送信息經(jīng)過DES、AES加密算法加密。有益效果:本發(fā)明公開的嵌入式升級文件傳輸方法,解決了現(xiàn)有的嵌入式升級文件傳輸安全度低,容易受攻擊,缺乏文件信息泄露防范等缺點,具有傳輸效率高,傳輸安全系數(shù)高,信息保密,身份認證機制較完善等優(yōu)點。附圖說明圖1是本發(fā)明安全的嵌入式升級文件傳輸方法一實施例中流程示意圖;圖2是本發(fā)明安全的嵌入式升級文件傳輸方法一實施例中文件傳輸流程示意圖。具體實施方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,可以理解的是,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。如圖1所示是本發(fā)明安全的嵌入式升級文件傳輸方法一實施例中流程示意圖;本發(fā)明的技術方案為一種安全傳輸方式涉及第三方網(wǎng)絡管理服務器、升級主機服務器和升級客戶端。本發(fā)明中,第三方網(wǎng)絡管理服務器負責通知升級客戶端所升級的文件信息、升級服務器地址信息和解密的公鑰,方法如下:第三方網(wǎng)絡管理服務器(凡是與客戶端能進行安全身份認證的具有網(wǎng)絡管理功能的服務器)與客戶端之間通過具有安全身份認證的網(wǎng)絡管理系統(tǒng)建立安全的通信渠道,所發(fā)送的信息需經(jīng)過高安全級別加密算法加密,可以包括DES、AES加密算法。網(wǎng)絡管理系統(tǒng)是一個軟硬件結合以軟件為主的分布式網(wǎng)絡應用系統(tǒng),其目的是管理網(wǎng)絡,使網(wǎng)絡高效正常運行。網(wǎng)絡管理功能一般分為性能管理,配置管理,安全管理,計費管理和故障管理等五大管理功能。網(wǎng)絡管理對象一般包括路由器,交換機,HUB等。近年來,網(wǎng)絡管理對象有擴大化的趨勢,即把網(wǎng)絡中幾乎所有的實體:網(wǎng)絡設備,應用程序,服務器系統(tǒng),輔助設備如UPS電源等都作為被管對象。給網(wǎng)絡系統(tǒng)管理員提供一個全面系統(tǒng)的網(wǎng)絡視圖。升級服務器與第三方網(wǎng)絡管理服務器同屬管理中心,管理中心負責嵌入式客戶端的網(wǎng)絡管理和升級工作,管理中心工作人員可以同時管理升級服務器與第三方網(wǎng)絡管理服務器,所發(fā)放的公鑰由升級服務器生成并告知第三方網(wǎng)絡管理服務器。本發(fā)明一實施例中,升級服務器收到客戶端升級請求后,向其傳輸所升級文件的客戶端當前版本與更新版本之間的差異部分文件,以及加密后的校驗信息,其中需要將升級文件轉換成二進制文件形式。本發(fā)明一實施例中,差異文件的生成方法是:在升級服務器中將更新版本文件以若干個字節(jié)為一塊等分為若干塊,并逐塊與當前版本文件比較。所述比較方法如下:首先計算各個塊的弱Hash值和強Hash值,并分別存為Hash表;弱Hash值指兩個字符 塊哈希值的碰撞概率較高,但計算速度較快。強Hash值指兩個字符塊哈希值的碰撞概率很低,但計算速度較慢。本發(fā)明一實施例中,比對當前版本字符塊與更新版本字符塊的前幾個字符,如果匹配,依次比對其弱Hash值和強Hash值,如果都匹配,則保存當前版本字符塊在當前版本文件的首地址、塊長度和版本標記到差異文件中。如果更新版本字符塊找不到匹配的塊,則保存更新版本字符塊的長度、版本標記和該塊的內(nèi)容到差異文件中。如此則生成了差異文件。本發(fā)明一實施例中,所述加密和解密密鑰分別是通過隨機方式產(chǎn)生的RSA或ECC(橢圓曲線加密算法)私鑰和公鑰,在升級服務器中用RSA或ECC私鑰加密校驗信息,并向第三方網(wǎng)絡管理服務器發(fā)送RSA或ECC公鑰。本發(fā)明一實施例中,校驗信息是利用MD5、SHA等散列函數(shù)對更新版本文件計算其散列值,具體算法選擇根據(jù)客戶端計算速度而定。本發(fā)明一實施例中,客戶端用接收到的差異文件與本地版本還原出更新版本文件,比對其校驗碼和解密后的校驗碼。本發(fā)明一實施例中,還原方法是客戶端首先讀取差異文件的起始塊的版本信息,如果是當前版本,則根據(jù)塊的首地址和塊長度從當前版本文件復制數(shù)據(jù)到還原文件;如果是更新版本,則根據(jù)其塊長度,從差異文件中復制數(shù)據(jù)到還原文件。如此依次還原每一個塊,直到差異文件結束。本發(fā)明一實施例中,比對校驗碼方法是首先客戶端利用公鑰解密接收到的加密校驗碼,然后用所選擇的散列函數(shù)計算還原文件的散列值,比對解密后的校驗碼與散列值是否一致。如果相同,則文件傳輸信息是完整的,文件發(fā)送方身份是安全的;如果不相同,說明文件傳輸有錯誤,需重新傳輸。實施例:圖2是本發(fā)明安全的嵌入式升級文件傳輸方法一實施例中文件傳輸流程示意圖。升級系統(tǒng)需要升級客戶端的內(nèi)核映像文件,升級服務器給第三方snmp網(wǎng)管系統(tǒng)服務器發(fā)送RSA公鑰,以及內(nèi)核映像文件信息;第三方snmp網(wǎng)管系統(tǒng)服務器調用客戶端的snmp代理,通過snmp代理調用升級客戶端程序,向其發(fā)送內(nèi)核映像的更新文件名kernel_new,更新文件版本1,升級服務器IP地址,及RSA公鑰,snmp協(xié)議會對其發(fā)送的信息進行安全加密。升級客戶端被調用后,保存接收到的升級文件信息和RSA公鑰,向升級服務器建立TCP連接,發(fā)出請求信息,包括升級的文件名kernel_new和升級文件版本1,當前文件版本0。服務器收到請求信息,找到該文件,獲取其更新版本1和當前版本0的差異文件,計算更新版本內(nèi)核的MD5散列函數(shù)值,并用RSA私鑰加密,然后向客戶端發(fā)送內(nèi)核差異文件和加密后 的散列值(即校驗碼)。升級服務器在升級前就隨機產(chǎn)生RSA密鑰,并一直運行升級服務程序,其內(nèi)核差異文件也可以在升級之前就預先生成??蛻舳私邮盏絻?nèi)核差異文件和加密校驗碼,首先還原出內(nèi)核更新文件,計算其MD5散列值;然后客戶端用RSA公鑰,對收到的校驗碼解密,將解密后的校驗碼與本地計算的MD5散列值比較。如果相同,則向第三方網(wǎng)絡管理服務器返回升級成功信號;如果不同,則重新傳輸內(nèi)核文件,傳輸N次后仍然失敗,則向第三方網(wǎng)絡管理服務器返回升級失敗信號。