軟件更新裝置及軟件更新程序的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及利用更新數(shù)據(jù)而安全地對(duì)固件等軟件進(jìn)行更新的技術(shù)。
【背景技術(shù)】
[0002]將對(duì)嵌入式設(shè)備(embeddedapparatus)的動(dòng)作進(jìn)行規(guī)定的軟件稱為固件。
[0003]如果更新固件,則能夠在產(chǎn)品出廠后實(shí)現(xiàn)缺陷的修正、功能追加。此時(shí),如果能夠由終端用戶執(zhí)行更新,則不需要進(jìn)行產(chǎn)品回收。因此,通常來(lái)說(shuō),將通過(guò)終端用戶進(jìn)行的固件的更新功能安裝于嵌入式設(shè)備。
[0004]通過(guò)終端用戶進(jìn)行的固件更新的通常的步驟為下面的(I)至(3)。(1)終端用戶從制造者的網(wǎng)站取得更新數(shù)據(jù)。(2)將更新數(shù)據(jù)經(jīng)由有線通信、記錄介質(zhì)向作為對(duì)象的嵌入式設(shè)備輸入。(3)嵌入式設(shè)備根據(jù)更新數(shù)據(jù)對(duì)固件進(jìn)行改寫。
[0005]在將固件的更新功能安裝于嵌入式設(shè)備的情況下,例如,能夠想到懷有惡意的終端用戶以該嵌入式設(shè)備的改造為目的,將改變后的更新數(shù)據(jù)向作為對(duì)象的嵌入式設(shè)備輸入。在實(shí)現(xiàn)了上述改造的情況下,有可能導(dǎo)致繞過(guò)該嵌入式設(shè)備所具備的安全功能。其結(jié)果,該嵌入式設(shè)備制造者有可能受到違法復(fù)制、制造仿制品這樣的損害。
[0006]因此,在能夠?qū)崿F(xiàn)固件的更新的嵌入式設(shè)備中,需要一種阻止任意地改變固件這一行為的技術(shù)。
[0007]在非專利文獻(xiàn)I中記載有一種利用加密技術(shù),阻止任意地改變固件這一行為的技術(shù)。在非專利文獻(xiàn)I中,將通過(guò)數(shù)字簽名、消息認(rèn)證碼實(shí)現(xiàn)的消息篡改檢測(cè)應(yīng)用于固件的保護(hù)。
[0008]非專利文獻(xiàn)1: RFC4108,“Using Cryptographic Message Syntax(CMS) toProtect Firmware Packages,,,http://tools.1etf.0rg/html/rfc4108
[0009]非專利文獻(xiàn)2: E.Fleischmann,C.Forler,S.Lucks,and J.Wenzel, “Me OE: AFamily of Almost Foolproof On-Line Authenticated Encrypt1n Schemes,,,Cryptology ePrint Archive:Report 2011/644
[0010]非專利文獻(xiàn)3:A.J.Menezes,P.C.van Oorschot ,and S.A.Vanstone,“Handbookof Applied Cryptography,,,2001.
[0011]非專利文獻(xiàn)4:G.Bertoni,J.Daemen,M.Peeters,and G.Van Assche , uOn theIndifferentiability of the Sponge Construct1n”,Eurocrypt 2008.
[0012]非專利文獻(xiàn)5:NIST,“Recommendat1nfor Block Cipher Modes of Operat1n:Galois/Counter Mode(GCM)for Confidentiality and Authenticat1n/'Draft SpecialPublicat1n 800—38D,Apr.2006.
【發(fā)明內(nèi)容】
[0013]如非專利文獻(xiàn)I記載所述,在將篡改檢測(cè)技術(shù)應(yīng)用于固件的保護(hù)的情況下,在對(duì)固件進(jìn)行更新的嵌入式設(shè)備中,需要執(zhí)行進(jìn)行篡改檢測(cè)的驗(yàn)證處理。
[0014]為了安全地實(shí)現(xiàn)該驗(yàn)證處理,成為作業(yè)區(qū)域的易失性存儲(chǔ)器需要足夠大。如果是具有高性能CHJ的設(shè)備,則通常滿足該條件。但是,對(duì)于性能較低的嵌入式設(shè)備,有時(shí)沒(méi)有滿足該條件。特別地,對(duì)于內(nèi)置有閃存ROM的CPU(單片機(jī)),通常易失性存儲(chǔ)器的容量小于非易失性存儲(chǔ)器的容量,大多沒(méi)有滿足該條件。
[0015]本發(fā)明的目的在于,在成為作業(yè)區(qū)域的易失性存儲(chǔ)器不足夠大的情況下,能夠安全地實(shí)現(xiàn)固件等軟件的更新。
[0016]本發(fā)明所涉及的軟件更新裝置的特征在于,具備:
[0017]數(shù)據(jù)取得部,其依次取得將更新數(shù)據(jù)分割為多個(gè)而得到的各分割更新數(shù)據(jù),其中,所述更新數(shù)據(jù)用于對(duì)軟件進(jìn)行更新;
[0018]驗(yàn)證部,其針對(duì)所述數(shù)據(jù)取得部取得的分割更新數(shù)據(jù)執(zhí)行驗(yàn)證處理;
[0019]中間值存儲(chǔ)部,其對(duì)在所述驗(yàn)證部執(zhí)行的驗(yàn)證處理中得到的中間值進(jìn)行存儲(chǔ);
[0020]數(shù)據(jù)再取得部,其在針對(duì)所述各分割更新數(shù)據(jù)完成所述驗(yàn)證處理且所述更新數(shù)據(jù)的驗(yàn)證成功的情況下,再次依次取得所述各分割更新數(shù)據(jù);
[0021]再驗(yàn)證部,其針對(duì)所述數(shù)據(jù)再取得部取得的分割更新數(shù)據(jù)執(zhí)行所述驗(yàn)證處理;以及
[0022]更新部,其在所述再驗(yàn)證部執(zhí)行的驗(yàn)證處理中得到的中間值、和所述中間值存儲(chǔ)部所存儲(chǔ)的中間值一致的情況下,利用由所述數(shù)據(jù)再取得部取得的所述分割更新數(shù)據(jù)對(duì)軟件進(jìn)行更新。
[0023]發(fā)明的效果
[0024]在本發(fā)明所涉及的軟件更新裝置中,不是針對(duì)更新數(shù)據(jù)一次性進(jìn)行驗(yàn)證處理,而是針對(duì)將更新數(shù)據(jù)分割為多個(gè)而得到的每個(gè)分割更新數(shù)據(jù)進(jìn)行驗(yàn)證處理。因此,即使成為作業(yè)區(qū)域的易失性存儲(chǔ)器小,也能夠進(jìn)行驗(yàn)證處理。
[0025]另外,在本發(fā)明所涉及的軟件更新裝置中,針對(duì)各分割更新數(shù)據(jù)依次進(jìn)行驗(yàn)證處理,對(duì)沒(méi)有篡改進(jìn)行確認(rèn),并且將在驗(yàn)證處理中得到的中間值進(jìn)行存儲(chǔ)。然后,如果確認(rèn)到?jīng)]有篡改,則再次針對(duì)各分割更新數(shù)據(jù)依次進(jìn)行驗(yàn)證處理,對(duì)所得到的中間值和之前所存儲(chǔ)的中間值相同進(jìn)行確認(rèn),在得到確認(rèn)的情況下對(duì)軟件進(jìn)行更新。因此,也能夠防止下述非法行為,即,在一度完成了驗(yàn)證處理后,利用進(jìn)行了篡改的分割更新數(shù)據(jù)對(duì)軟件進(jìn)行更新。
【附圖說(shuō)明】
[0026]圖1是嵌入式設(shè)備100的硬件結(jié)構(gòu)圖。
[0027]圖2是表示替代方法I的處理的流程圖。
[0028]圖3是表示替代方法2的概略的圖。
[0029]圖4是表示替代方法3的處理的流程圖。
[0030]圖5是表示實(shí)施方式I所涉及的方法的概略的圖。
[0031 ]圖6是實(shí)施方式I所涉及的嵌入式設(shè)備100的功能結(jié)構(gòu)圖。
[0032]圖7是表示實(shí)施方式I所涉及的嵌入式設(shè)備100的固件更新處理的流程圖。
[0033]圖8是表示嵌入式設(shè)備100的硬件結(jié)構(gòu)的其他例子的圖。
[0034]圖9是表示嵌入式設(shè)備100的硬件結(jié)構(gòu)的其他例子的圖。
[0035]圖10是表示嵌入式設(shè)備100的硬件結(jié)構(gòu)的其他例子的圖。
[0036]圖11是表示嵌入式設(shè)備100的硬件結(jié)構(gòu)的其他例子的圖。
[0037]圖12是表示中間值的例子的圖。
[0038]圖13是表不中間值的例子的圖。
[0039]圖14是表不中間值的例子的圖。
【具體實(shí)施方式】
[0040]實(shí)施方式1.
[0041]圖1是嵌入式設(shè)備100(軟件更新裝置)的硬件結(jié)構(gòu)圖。
[0042]嵌入式設(shè)備100具備CPU101、存儲(chǔ)介質(zhì)102、易失性存儲(chǔ)器103、非易失性存儲(chǔ)器104。
[0043]終端用戶經(jīng)由存儲(chǔ)介質(zhì)102,將更新文件105(更新數(shù)據(jù))向嵌入式設(shè)備100供給。嵌入式設(shè)備100利用儲(chǔ)存于存儲(chǔ)介質(zhì)102的更新文件105,對(duì)位于非易失性存儲(chǔ)器104內(nèi)的固件109進(jìn)行更新。
[0044]在將篡改檢測(cè)技術(shù)應(yīng)用于固件的保護(hù)的情況下,終端用戶將驗(yàn)證數(shù)據(jù)106與更新文件105—起向嵌入式設(shè)備100供給,該驗(yàn)證數(shù)據(jù)106用于檢測(cè)更新文件105的篡改。
[0045]在固件109的更新時(shí)CPU 101進(jìn)行如下所述的處理。
[0046]首先,CPU101執(zhí)行處理A,將存在于存儲(chǔ)介質(zhì)102的更新文件105和驗(yàn)證數(shù)據(jù)106向易失性存儲(chǔ)器103復(fù)制。將復(fù)制出的數(shù)據(jù)稱為更新文件107、驗(yàn)證數(shù)據(jù)108。
[0047]然后,CPU 101執(zhí)行處理B,關(guān)于針對(duì)更新文件107進(jìn)行驗(yàn)證處理所得到的驗(yàn)證用的值是否與驗(yàn)證數(shù)據(jù)108—致進(jìn)行驗(yàn)證。驗(yàn)證處理是使用加密處理對(duì)驗(yàn)證用的值進(jìn)行運(yùn)算的處理。
[0048]如果進(jìn)行驗(yàn)證處理所得到的結(jié)果與驗(yàn)證數(shù)據(jù)108不一致,則識(shí)別為檢測(cè)到篡改,在該時(shí)刻中斷并結(jié)束更新處理。另一方面,在驗(yàn)證結(jié)果一致的情況下,CPU 101執(zhí)行處理C,將位于易失性存儲(chǔ)器103的更新文件107向非易失性存儲(chǔ)器104寫入,對(duì)固件109進(jìn)行更新。
[0049]通過(guò)在更新時(shí)