電子機器及其控制方法
本發明的實施形態係關於電子機器及其控制方法。
[相關申請案]
本申請案係享受以日本專利申請案2019-45133號(申請日:2019年3月12日)為基礎申請案的優先權。本申請案係藉由參照該基礎申請案,包含基礎申請案的所有內容。
有電子機器故障時,製造者分析(稱為除錯(debug))故障的原因的狀況。電子機器係為了除錯用,記憶日誌(稱為除錯日誌)。對於為了除錯來說,製造者需要回收故障的電子機器,從電子機器讀取出除錯日誌。對於為了讀取出除錯日誌來說,需要除錯用介面。除錯用介面係電子機器的出貨前,可使用於為了製造階段的動作檢查,但是,出貨時則無法使用。
例如在組入機器等中,除了通常的韌體之外,準備有可使用除錯用介面之特殊的除錯用韌體。製造者係將回收之電子機器的韌體,更新成除錯用韌體。藉此,變成可使用除錯用介面,可讀取出除錯日誌,執行除錯。再者,除錯用韌體係不僅可使用除錯用介面,並將通常設為停用的功能設為啟用。
除錯用韌體本身或安裝有除錯用韌體的電子機器外流時,會有無法維持電子機器的安全性的問題。
為了防止該狀況,對於為了藉由除錯用韌體來設為可使用除錯用介面來說,考量進行使用者認證。但是,用於認證的密碼係埋入於除錯用韌體,所以,除錯用韌體外流,韌體被破解的話,密碼也會外流,無法解決問題。
本發明的實施形態,係提供可保持安全性進行除錯的電子機器及其控制方法。
實施形態所致之電子機器,係具備第1處理器、非揮發性的第1記憶體、揮發性的第2記憶體、指令執行電路。第1記憶體係記憶第1處理器所執行之程式。第2記憶體係包含記憶從第1記憶體讀取出之程式的第1區域,與記憶程式所參照之資料的第2區域。指令執行電路係認證第2記憶體的改寫指令,改寫指令的認證成功的話,則執行改寫指令。
以下,參照圖面來說明實施形態。以下的說明係例示用以具體化實施形態之技術思想的裝置及方法者,實施形態的技術思想並不限定於以下所說明之構成要素的構造、形狀、配置、材質等。發明所屬技術領域中具有通常知識者可容易想到的變形當然也包含於揭示的範圍。為了更明確說明,於圖面中,也有相對於實際的實施樣態進行變更,模式表示各要素的尺寸、厚度、平面尺寸或形狀等的狀況。於複數圖面中,也有包含相互尺寸的關係及比例不同的要素。於複數圖面中,也有對於對應的要素附加相同參照數字,並省略重複的說明之狀況。有對於幾種要素附加複數稱呼的狀況,但是,該等稱呼的範例僅為例示,並不是否定對該等要素附加其他稱呼。又,關於未附加複數稱呼的要素,也不是否定附加其他稱呼。再者,於以下的說明中,「連接」不僅直接連接,也代表透過其他要素連接。
[第1實施形態]
實施形態所致之電子機器也可適用於任何電子機器,但是,作為第1實施形態,說明由使用快閃記憶體等之非揮發性半導體記憶體的固態硬碟(Solid State Drive:略稱為SSD)所成的儲存裝置20的範例。圖1係揭示包含儲存裝置20與主機裝置10的資訊處理系統之一例。
[機器構造]
儲存裝置20係具備作為記憶媒體的快閃記憶體24與控制器22。快閃記憶體24係例如由NAND型的快閃記憶體所成,但並不限於NAND型的快閃記憶體,使用其他非揮發性半導體記憶體亦可。主機裝置10作為將大量且多樣的資料儲存於儲存裝置20的伺服器(也稱為儲存伺服器)亦可,作為內藏儲存裝置20的個人電腦亦可。儲存裝置20係內藏於主機裝置10亦可,如圖1所示,透過纜線或網路連接於主機裝置10亦可。控制器22係例如由SoC(System-on-chip)所成。控制器22係以將資料寫入快閃記憶體24,並且從快閃記憶體24讀取出資料之方式構成。
控制器22係具備藉由系統匯流排33相互連接的主機I/F電路26、第1CPU28、暫存器28A、第2CPU30、暫存器30A、第1RAM32、第2RAM34、第1ROM36、第2ROM38及NAND I/F電路40。快閃記憶體24係連接於NAND I/F電路40。再者,第1RAM32與第2RAM34係作為並不是系統匯流排33,而是透過區域匯流排或專用匯流排分別連接於第1CPU28與第2CPU30的緊密耦合記憶體TCM(Tightly-Coupled Memory)來實現亦可。
主機/F電路26與主機裝置10之間的介面,係例如可使用Small Computer System Interface(SCSI)(註冊商標)、PCI Express(註冊商標)(也稱為PCIe(註冊商標))、Serial Attached SCSI(SAS)(註冊商標)、Serial Advanced Technology Attachment(SATA)(註冊商標)、Non Volatile Memory Express(NAMe(註冊商標))、Universal Serial Bus(USB)(註冊商標)等的規格,但並不限定於該等。
第1CPU28係控制對快閃記憶體24之使用者資料的寫入,與來自快閃記憶體24之使用者資料的讀取等之儲存裝置20的一般動作。於儲存裝置20,有將使用者資料直接(純文本的狀態)寫入快閃記憶體24的未加密機類型,與將使用者資料在儲存裝置20的內部進行加密後寫入快閃記憶體24的加密機類型的兩種類。實施形態係作為未加密機類型,或加密機類型都可實現,作為一例,設為作為加密機類型來實現。此時,第1CPU28也進行加密處理與解碼處理。
進而,第1CPU28係為了儲存裝置20的除錯,將儲存裝置20的日誌(稱為除錯日誌)也寫入快閃記憶體24。除錯日誌係作為日誌檔而被寫入至快閃記憶體24。除錯日誌係例如包含日誌事件的發生來源、日期、時刻、日誌的種類、註釋等。
第2CPU30係控制第1CPU28用的RAM的改寫。第2CPU30係安全性能比第1CPU28高的CPU。例如,第2CPU30係藉由安全性高的開機(安全開機)來開機,保證安全性。再者,設置被認證之專用的硬體來代替第2CPU30亦可。
第1RAM32係作為第1CPU28的工作區域所使用之揮發性的記憶體。第2RAM34係作為第2CPU30的工作區域所使用之揮發性的記憶體。在此,第1RAM32、第2RAM34係藉由控制器22內的SRAM所構成,但是,藉由設置於控制器22的外部的DRAM構成亦可。第1RAM32、第2RAM34所記憶之資料的一例係參照圖2於後說明。再者,將第1CPU28的工作區域與第2CPU30的工作區域分別藉由不同的第1RAM32與第2RAM34構成,但是,於1個RAM的不同位址區域分派第1CPU28的工作區域與第2CPU30的工作區域亦可。
第1ROM36係記憶第1CPU28所執行之程式即韌體與用於第1CPU28的認證的資訊之非揮發性的記憶體。第2ROM38係記憶第2CPU30所執行之程式即韌體與用於第2CPU30的認證的資訊之非揮發性的記憶體。第1ROM36、第2ROM36係可寫入的ROM,例如由NOR型的序列快閃記憶體、可光學寫入的ROM所構成亦可。第1ROM36由NOR型的序列快閃記憶體所成的狀況中,第1CPU28係代替快閃記憶體24,將除錯日誌寫入第1ROM36亦可。再者,將第1CPU28的ROM與第2CPU30的ROM分別藉由不同的第1ROM36與第2ROM38構成,但是,於1個ROM的不同區域,記憶第1CPU28的韌體及用於認證的資訊,與第2CPU30的韌體及用於認證的資訊亦可。
[功能構造]
圖2係揭示第1實施形態的第2CPU30的功能構造之一例的區塊圖。主機I/F電路26具備指令輸出入部52。第2CPU30係具備資料改寫允許部54、認證處理部56、資料改寫部58。資料改寫允許部54、認證處理部56、資料改寫部58可藉由第2CPU30執行韌體而軟體性實現。但是,資料改寫允許部54、認證處理部56、資料改寫部58藉由個別的硬體來實現亦可。
第1RAM32係具備記憶第1CPU28的韌體的第1區域(也稱為I-SRAM(Instruction SRAM))62、記憶第1CPU28正在執行的韌體所參照之資料的第2區域(也稱為D-SRAM(Data SRAM))64、其他資料的記憶區域。第1CPU28係被開機時,從第1ROM36讀取出韌體,儲存於第1RAM32的第1區域62內,以執行韌體。藉由韌體的執行所生成之資料係儲存於第1RAM32的第2區域64。暫存器28A係如圖3(a)所示,於可從第1CPU28存取的位址空間上,與第1RAM32的第1區域62、第2區域64一起被映射。再者,第1區域62與第2區域64分別設置於不同的RAM亦可。
第2RAM34係具備記憶第2CPU30的韌體的第1區域(也稱為I-SRAM)72、記憶第2CPU30正在執行的韌體所參照之資料的第2區域(也稱為D-SRAM)74、其他資料的記憶區域。第2CPU30係被開機時,從第2ROM38讀取出韌體,儲存於第2RAM34的第1區域72內,以執行韌體。藉由韌體的執行所生成之資料係儲存於第2RAM34的第2區域74。暫存器30A係如圖3(b)所示,於可從第2CPU30存取的位址空間上,與第2RAM34的第1區域72、第2區域74一起被映射。
如圖3(b)所示,於可從第2CPU30存取的位址空間,除了第2RAM34的第1區域72及第2區域74以及暫存器30A,映射第1RAM32的第1區域6及第2區域64以及暫存器28A。因此,第2CPU30係可存取第2RAM34與暫存器30A,並且也可存取第1RAM32與暫存器28A。也就是說,第2CPU30可改寫第1CPU28的韌體、第1CPU28的韌體所參照的資料、暫存器28A的資料。
[開機處理]
參照圖4的流程圖,說明第2CPU30的開機處理之一例。
步驟S12中,藉由以第2CPU30的硬體實現的微程式,從第2ROM38讀取出用於開機的韌體,韌體被儲存於第2RAM34。於該韌體包含認證碼。
步驟S14中,第2CPU30係根據步驟S12中從第2ROM38讀取出之儲存於第2RAM34的韌體,計算認證碼。
步驟S16中,第2CPU30係比較所計算之認證碼與步驟S12中儲存於第2RAM34的韌體所包含之認證碼。
步驟S18中,第2CPU30係判定兩認證碼是否一致。兩認證碼一致時(步驟S18的YES),步驟S20中則執行開機處理。不一致時(步驟S18的NO),步驟S222中則執行錯誤處理。用以計算認證碼之韌體檢證用的加密處理程式係儲存於第2ROM38,所以,難以竄改。因此,第2CPU30係可進行安全性能比第1CPU28高的安全開機。
第1CPU28的開機並不需要認證。
[資料改寫處理]
圖5係揭示第1實施形態所致之資料改寫處理之一例的流程圖。在此,改寫的資料的範例係第1CPU28的韌體所參照的資料。該資料係設為被記憶於第1RAM32的第2區域64或暫存器28A。在實施形態中,第1RAM32的第2區域64內的資料或暫存器28A的資料的改寫並不是藉由第1CPU28,而是藉由第2CPU30進行。因為改寫該等資料,有韌體的處理結果變更的狀況。也就是說,有因為改寫而實質上變更韌體(刪除一部分的功能或追加一部分的功能)的狀況。在第1實施形態中,被改寫的資料係從1位元到數位元的小資料。
第1CPU28及第2CPU30都開機後,步驟S102中,指令輸出入部52係從主機裝置10接收指示第1RAM32之第2區域64內的特定資料或暫存器28A內的特定資料的改寫的資料改寫指令。資料改寫指令係包含「資料改寫」的指令種別、改寫對象的位址、改寫的資料、認證資料。改寫對象的位址係可從第2CPU30存取的圖3(b)所示之位址空間上的第1RAM32的第2區域64內之改寫對象的特定資料或暫存器28A內的特定資料被映射的特定位址。認證資料係儲存裝置20所固有的資訊。
步驟S104中,指令輸出入部52係分析接收指令,辨識出接收指令是資料改寫指令時,則將資料改寫指令發送至第2CPU30的資料改寫允許部54,委託資料改寫允許部54進行資料改寫。
步驟S106中,資料改寫允許部54係委託認證處理部56進行資料改寫指令的認證。
步驟S108中,認證處理部56係依據與資料改寫指令一起被供給的認證資料,使用例如AES等的共享金鑰認證方式或RSA等的公開金鑰認證方式等的認證運算法,對資料改寫指令進行認證。認證資料是儲存裝置20固有的資訊,所以,即使認證資料外流,在其他儲存裝置中認證也不會成功,可防止執行被偽造之資料改寫指令的狀況。
步驟S110中,認證處理部56係判定認證是否成功。認證成功時(步驟S110的YES),步驟S112中,資料改寫允許部54係將資料改寫指令供給至資料改寫部58,委託資料改寫部58進行資料改寫。認證失敗時(步驟S110的NO),則不執行步驟S112、S114,執行步驟S116。
步驟S114中,資料改寫部58係將指令所指定之特定位址的資料,也就是說第1RAM32之第2區域64內的特定資料或暫存器28A內的特定資料,改寫成指令所指定之改寫資料。
改寫的一例,係改寫第1RAM32的第2區域64內之第1CPU28的韌體所參照的特定資料(1位元或數位元)。例如,儲存裝置20故障時,對於第1CPU28為了執行除錯來說,需要使用除錯用介面(也稱為除錯埠(debug port))從快閃記憶體24讀取出除錯日誌。通常,第1CPU28的韌體無法使用除錯埠。對於為了讓第1CPU28的韌體可使用除錯埠來說,只要變更韌體即可,但是,韌體的變更需要時間。第1CPU28的韌體係因應特定控制資料(例如稱為mode),允許/不允許除錯埠的使用。因此,即使不變更韌體,也可藉由改寫韌體所參照之控制資料mode,第1CPU28的韌體可使用除錯埠,第1CPU28的韌體可進行除錯。
除錯埠的範例有JTAG(Joint Test Action group)及UART(Universal Asynchronous Receiver Transmitter)等。例如,控制資料mode為“1”的話,除錯埠JTAG為啟用,可透過除錯埠從快閃記憶體24的讀取出除錯日誌,控制資料mode為“0”的話,除錯埠JTAG為停用,無法透過除錯埠從快閃記憶體24的讀取出除錯日誌。
韌體所參照的控制資料mode係例如儲存於第1RAM32的第2區域64。控制資料mode的初始值(產品出貨時之值)為0。藉由資料改寫指令的執行將控制資料mode改寫成“1”,藉此,可進行第1CPU28所致之除錯。
並不是第1CPU28的韌體改寫第1CPU28的韌體所參照的控制資料,而是讓第2CPU30的韌體進行改寫是由於第2CPU30的安全性能高。第2CPU30係開機時的安全性高,所以,可保證安全性。設為第1CPU28的韌體可改寫第1CPU28的韌體所參照的控制資料mode的話,有不當改寫的可能性。
步驟S116中,資料改寫允許部54係將表示改寫成功/改寫失敗的改寫結果,回送至指令輸出入部52。
步驟S118中,指令輸出入部52將改寫結果回送至主機裝置10。再者,認證失敗時,則回送改寫失敗而正常結束,但是,認證失敗時,作為異常結束亦可。
再者,雖然以藉由改寫第1RAM32之記憶區域64內的控制資料mode而可使用除錯埠之方式構成,但並不限於此,也能以藉由改寫暫存器28A中特定資料而可使用除錯埠之方式構成。
例如,暫存器28A的特定資料為“1”時,可將用於除錯的功能(例如輸出除錯日誌的指令)追加至韌體。又,除錯日誌設為可讀取,但是,暫存器28A的其他特定資料為“0”時,設為僅可輸出除錯日誌的一部分亦可。此種狀況中,藉由將該資料設為“1”,第1CPU28的韌體可讀取出所有除錯日誌。又,其他特定資料為“0”時,無法透過UART讀取出除錯日誌,但是,該資料變更成“1”時,則可透過UART讀取出除錯日誌,執行除錯亦可。
再者,暫存器28A與暫存器30A係安裝於第1CPU28、第2CPU30的外部,但是,內藏於各CPU亦可,具備內藏的暫存器與外部安裝的暫存器兩者亦可。
[除錯處理]
圖6係揭示第1實施形態所致之除錯處理之一例的流程圖。
步驟S122中,第1CPU28係透過指令輸出入部52接收來自主機裝置10的除錯指令。雖未圖示,但第1CPU28也具備認證處理部,認證除錯指令,作為認證已成功。
步驟S124中,第1CPU28係判定記憶於第1RAM32之第2區域64的控制資料mode是否是“1”。控制資料mode是“1”時(步驟S124的YES),步驟S126中則允許除錯埠的使用。
步驟S128中,第1CPU28係藉由使用除錯埠從快閃記憶體24讀取出除錯日誌等,執行除錯指令。
控制資料mode不是“1”時(步驟S124的NO),作為異常結束亦可。再者,接收除錯指令之前並未執行圖5所示的資料改寫處理時,因為控制資料mode是“0”,所以,步驟S124的判定結果成為NO。
[第1實施形態的總結]
依據第1實施形態,第1RAM32的第2區域64或暫存器28A內的資料,第1CPU28的韌體所參照的資料藉由第2CPU30被改寫,藉此,變更韌體的功能的一部分(包含功能的追加、刪除)。被追加的功能之一例係除錯埠的使用允許,藉此,可進行第1CPU28所致之除錯。除錯結束後也維持除錯埠的使用被允許的狀態,但是,儲存裝置20關機的話,第1RAM32及暫存器28A的資料會消失。也就是說,記憶於第1RAM32的第2區域64或暫存器28A之被變更的控制資料mode揮發化,不會永久存續化,所以,允許除錯埠的使用的狀態因為關機而結束。接著,儲存裝置10開機時,控制資料mode的初始值是“0”,所以,不會允許除錯埠的使用。
如此,記憶於第1RAM32的第2區域64或暫存器28A的控制資料mode係在儲存裝置20關機時,回到表示不允許除錯埠的使用的初始值。因此,即使安裝實施形態的韌體,允許除錯埠的使用的儲存裝置20外流,關機的話,則不會允許除錯埠的使用。結果,可維持儲存裝置20的安全性的保護。在不是回收故障品進行除錯,而是在使用者側進行除錯時,從製造者側拿出允許除錯埠的使用的韌體,即使韌體外流,只要安裝韌體的儲存裝置關機的話,就不可能不當讀取資料。
又,藉由可進行安全開機的第2CPU30,改寫第1CPU28的第1RAM32或暫存器28A的資料,所以,相較於藉由第1CPU28,改寫第1RAM32或暫存器28A的資料之狀況,進行不當改寫的可能性低。
[第2實施形態]
[功能構造]
圖7係揭示第2實施形態的第2CPU30的功能構造之一例的區塊圖。僅說明圖7中與圖2所示之第1實施形態不同之處。
在第1實施形態中,改寫對象係第1RAM32的第2區域64或暫存器28A內之第1CPU28的韌體所參照的資料,改寫對象最多也是數位元。在第2實施形態中,改寫對象係第1RAM32的第1區域62內之第1CPU28的韌體的一部分或全部。
第2CPU30係具備FW(韌體)變更允許部82、認證處理部84、修補程式處理部86、FW變更部88。FW變更允許部82、認證處理部84、修補程式處理部86、FW變更部88也可藉由第2CPU30執行韌體來實現。但是,藉由個別硬體來實現FW變更允許部82、認證處理部84、修補程式處理部86、FW變更部88亦可。
[韌體變更(改寫)處理]
圖8係揭示第2實施形態所致之韌體變更處理之一例的流程圖。第2實施形態也可變更韌體整體,但是,如果目的只是可進行除錯的話,僅韌體的一部分的改寫亦可。
步驟S142中,指令輸出入部52係從主機裝置10接收以第1RAM32之第1區域62內的韌體作為對象的FW變更指令。FW變更指令係包含「FW變更」的指令種別、改寫對象的位址、改寫的資料(變更之FW的一部分)、認證資料。位址係可從第2CPU30存取之圖3(b)所示之位址空間上的映射第1RAM32的第1區域62的特定位址。
步驟S144中,指令輸出入部52係分析接收指令,辨識出接收指令是FW變更指令時,將FW變更指令發送至FW變更允許部82,委託FW變更允許部82進行FW變更。
步驟S146中,FW變更允許部82係對認證處理部84委託FW變更指令的認證。
步驟S148中,認證處理部84係依據與FW變更指令一起被供給的認證資料,使用例如AES等的共享金鑰認證方式或RSA等的公開金鑰認證方式等的認證運算法,對FW變更指令進行認證。
步驟S150中,認證處理部84係判定認證是否成功。認證失敗時(步驟S150的NO),則不執行步驟S152、S154、S156,執行步驟S158。認證成功時(步驟S150的YES),步驟S152中,FW變更允許部82係將FW變更指令供給至修補程式處理部86,對修補程式處理部86委託二進位修補程式處理。FW變更指令所包含的改寫資料是表示韌體的變更者,例如表示對韌體的第幾個位元組進行何種變更。
步驟S154中,修補程式處理部86係求出二進位修補程式,對FW變更部88委託FW變更。二進位修補程式係變更前與變更後之韌體的二進位碼的差分。二進位修補程式的求出方式公知有各種手法,例如使用radiff2手法亦可。
步驟S156中,FW變更部88係依據二進位修補程式,變更第1RAM32的第1區域62內之第1CPU28的韌體的一部分或全部。再者,在一般的韌體的更新中,改寫ROM內的韌體,但是,在第2實施形態中,記憶於第1RAM32的第1區域62內之被改寫的韌體不會寫回第1ROM36。
步驟S158中,FW變更允許部82係將表示改寫成功/改寫失敗的改寫結果,回送至指令輸出入部52。
步驟S160中,指令輸出入部52將改寫結果回送至主機裝置10。再者,認證失敗時,則回送改寫失敗而正常結束,但是,認證失敗時,作為異常結束亦可。
韌體的變更之一例係例如進行圖6所示之除錯處理的韌體中,有變更成省略步驟S124所示之控制資料mode的判斷步驟的韌體之狀況。如此,變更韌體的話,步驟S122中接收除錯指令,認證成功的話,無關於控制資料mode,步驟S126中允許除錯埠的使用。藉此,第1CPU28的韌體接收除錯指令的話,可使用除錯埠,無條件進行除錯。再者,不限於韌體的一部分,變更韌體的全部亦可。
[第2實施形態的總結]
依據第2實施形態,第1RAM32的第1區域62內之第1CPU28的韌體的一部分或全部也可藉由第2CPU30改寫,可變更第1CPU28的功能。例如,功能的變更係與第1實施形態相同,是除錯埠的使用允許,藉此,可進行第1CPU28所致之除錯。記憶於第1RAM32的記憶區域62內之被改寫的韌體,不會寫回至第1ROM36,所以,第1ROM36內的韌體是原創的狀態(包含步驟S124所示之控制資料mode的判斷步驟)。藉由韌體的改寫,省略步驟S124的話,除錯結束後還是可以使用除錯埠的狀態,但是,儲存裝置20關機的話,則會失去第1RAM32的資料。也就是說,記憶於第1RAM32的第1區域62之韌體的變更處揮發化,不會永久存續化,所以,允許除錯埠的使用的狀態因為關機而結束。儲存裝置20下次開機時,第1ROM36內的韌體是原創的狀態,所以,會執行圖6的步驟S124所示之控制資料mode的判斷步驟。控制資料mode的初始值是“0”,所以,不會允許除錯埠的使用。
如此,記憶於第1RAM32的第1區域62之變更後的韌體係關機的話會揮發化。因此,即使一度允許除錯埠的使用之韌體或安裝該韌體的儲存裝置20外流,儲存裝置只要關機的話,則不會允許除錯埠的使用。結果,可維持儲存裝置的安全性的保護。
又,藉由可進行安全開機的第2CPU30,改寫第1CPU28的第1RAM32的資料,所以,相較於藉由第1CPU28,改寫第1RAM32的資料之狀況,進行不當改寫的可能性非常低。
依據第2實施形態,僅變更韌體的一部分,即可獲得與更新韌體整體的狀況同等的效果。例如,可容易追加‧變更除錯埠的啟用/停用以外的功能‧碼及指令,也可追加透過UART介面輸出除錯列印的功能。
在一般的韌體更新中,一旦結束動作中的韌體,將更新後的韌體儲存於ROM。下次啟動時,更新後的韌體的複製被寫入至RAM,藉由RAM上的韌體啟動CPU。因此,更新後的韌體不正常動作的話CPU不會啟動,會發生問題。但是,如第2實施形態般,變更RAM上的動作中之韌體的一部分或全部的話,即使更新後的韌體不正常動作而CPU未被啟動的狀況,也可藉由ROM內之原創的韌體來啟動CPU,所以,也可進行變更後之韌體的動作保證。
[第3實施形態]
[整體構造]
在第1、第2實施形態中,設置第1CPU28用的第1RAM32與第1ROM36、第2CPU30用的第2RAM34與第2ROM38,第1CPU28的韌體記憶於第1ROM36,第2CPU30的韌體記憶於第2ROM38。相對於此,在第3實施形態中,以不設置第2CPU30專用的RAM與ROM,第2CPU30可對第1CPU28用的RAM、ROM之一部分的位址區域進行存取之方式構成。第2CPU30存取的RAM、ROM的位址區域,與第1CPU28存取的RAM、ROM的位址區域不同。
如圖9所示,第3實施形態的控制器22係具備主機I/F電路26、第1CPU28、暫存器28A、第2CPU30、暫存器30A、RAM42、ROM44、NAND I/F電路40。
RAM42係作為第1CPU28及第2CPU30的工作區域所使用之揮發性的記憶體。RAM42係藉由控制器22內的SRAM所構成,但是,藉由設置於控制器22的外部的DRAM構成亦可。ROM44係記憶第1CPU28及第2CPU30的韌體與用於認證之資訊的非揮發性的記憶體。ROM44係可寫入的ROM,例如由NOR型的序列快閃記憶體、可光學寫入的ROM所構成亦可。ROM44由NOR型的序列快閃記憶體所成的狀況中,第1CPU28係代替快閃記憶體24,將除錯日誌寫入ROM44亦可。
[功能構造]
圖10係揭示第3實施形態的第2CPU30的功能構造之一例的區塊圖。第3實施形態可包含第1實施形態的變形例與第2實施形態的變形例。圖10係說明第1實施形態的變形例,但是,第2實施形態的變形例也同樣地可作為第3實施形態實現。
主機I/F電路26具備指令輸出入部52。第2CPU30係具備資料改寫允許部54、認證處理部56、資料改寫部58、存取控制部92。資料改寫允許部54、認證處理部56、資料改寫部58、存取控制部92可藉由第2CPU30執行韌體而實現。存取控制部92係由可從第2CPU30存取的位址空間上的特定位址藉由來自主機裝置10的指令被存取時,將錯誤訊號回送至主機裝置10的記憶體保護單元MPU(Memory Protection Unit)所成,可將RAM42的特定區域設定成存取禁止區域。但是,藉由個別的硬體來實現資料改寫允許部54、認證處理部56、資料改寫部58、存取控制部92亦可。
RAM42係具備記憶第1CPU28之韌體的第1區域102、記憶第1CPU28的韌體所參照之資料的第2區域104、記憶第1CPU28之安全性資訊(加密金鑰等)的第3區域122、記憶第2CPU30之韌體的第4區域112、記憶第2CPU30的韌體所參照之資料的第5區域114、其他資料的記憶區域。
第1CPU28係被開機時,從ROM44讀取出韌體,儲存於RAM42的第1區域102內,以執行從RAM42讀取出的韌體。藉由韌體的執行所生成之資料係儲存於RAM42的第2區域104。暫存器28A係如圖11(a)所示,於可從第1CPU28存取的位址空間上,與RAM42的第1區域102、第2區域104、第3區域122一起映射。可從第1CPU28存取的位址空間不包含映射RAM42的第4區域112、第5區域114、暫存器30A的位址。如圖11(b)所示,於可從第2CPU30存取的位址空間,除了RAM42的第4區域112、第5區域114、暫存器30A之外,映射RAM42的第1區域102、第2區域104、暫存器28A。因此,第2CPU30係除了第2CPU30相關的記憶區域112、114、暫存器30A之外,也可對第1CPU28相關的記憶區域102、104、122與暫存器28A進行存取。但是,記憶安全性資訊的第3區域122藉由存取控制部92被設定成存取禁止區域時,第2CPU30係無法對第3區域122進行存取。
[資料改寫處理]
圖12係揭示第3實施形態所致之資料改寫處理之一例的流程圖。圖12係與圖5所示之第1實施形態的流程圖幾乎相同,僅說明不同之處。
步驟S110中認證成功時(步驟S110的YES),步驟S172中資料改寫允許部54係以RAM42內的安全性資訊不被存取之方式對存取控制部92委託第3區域122的存取禁止。
步驟S174中,存取控制部92係將記憶RAM42內之安全性資訊的第3區域122設定成存取禁止區域。之後,第2CPU30對RAM42的第3區域122進行存取時,錯誤訊號會送回主機裝置10。因此,第2CPU30無法從RAM42讀取出加密金鑰等的安全性資訊。
之後,與第1實施形態相同,步驟S112中,資料改寫允許部54係將資料改寫指令供給至資料改寫部58,委託資料改寫部58進行資料改寫。
[第3實施形態的總結]
在第1實施形態中,藉由資料改寫而可使用除錯埠時,也可讀取出加密金鑰等的安全性資訊,除錯負責人以外的使用者讀取出安全性資訊的話,雖然不高但還是會發生無法保證儲存裝置的安全性的可能性。但是,依據第3實施形態,藉由資料改寫可使用除錯埠,但是,記憶安全性資訊的第3區域122是禁止存取(禁止讀取),所以,可確實保證儲存裝置的安全性。即使第2CPU30讀取出快閃記憶體24內的加密資料,也不知道加密金鑰,所以無法解碼,可確保儲存裝置的安全性。
再者,圖12係說明改寫RAM42或暫存器28A內的資料,第1CPU28的韌體所參照之資料的第1實施形態的變形例,但是,變更RAM42內之第1CPU28的韌體的一部分或全部的第2實施形態也可與第1實施形態同樣地進行變形。
再者,本發明並不完全限定於前述實施形態,在實施階段中可在不脫出其要旨的範圍,改變構成要件而具體化。又,可藉由前述實施形態所揭示之複數構成要件的適切組合,形成各種發明。例如,從實施形態所示之整體構成要件刪除幾個構成要件亦可。進而,適切組合涵蓋不同實施形態的構成要件亦可。例如,前述的說明係相關於加密機類型的儲存裝置20,但是,本發明也可適用於未加密機類型的儲存裝置。又,作為電子機器已說明儲存裝置,但是,本發明也可適用於具備資料記憶功能的任何電子機器。
10:主機裝置
20:儲存裝置
22:控制器
24:快閃記憶體
26:主機I/F電路
28:第1CPU
28A:暫存器
30:第2CPU
30A:暫存器
32:第1RAM
33:系統匯流排
34:第2RAM
36:第1ROM
38:第2ROM
40:NAND I/F電路
42:RAM
44:ROM
52:指令輸出入部
54:資料改寫允許部
56:認證處理部
58:資料改寫部
62:第1CPU的韌體記憶區域
64:第1CPU的韌體所參照之資料的記憶區域
66:第1CPU的暫存器之值的記憶區域
72:第1區域
74:第2區域
82:FW變更允許部
84:認證處理部
86:修補程式處理部
88:FW變更部
92:存取控制部
102:第1區域
104:第2區域
112:第4區域
114:第5區域
122:第3區域
[圖1]揭示第1實施形態所致之電子機器的構造之一例的區塊圖。
[圖2]揭示第1實施形態所致之電子機器的第2CPU的功能構造之一例的區塊圖。
[圖3(a)、(b)]揭示第1實施形態所致之電子機器的第1CPU與第2CPU的位址映射之一例的圖。
[圖4]揭示第1實施形態所致之電子機器的第2CPU的開機處理之一例的流程圖。
[圖5]揭示第1實施形態所致之電子機器的資料改寫動作之一例的流程圖。
[圖6]揭示第1實施形態所致之電子機器的除錯動作之一例的流程圖。
[圖7]揭示第2實施形態所致之電子機器的第2CPU的功能構造之一例的區塊圖。
[圖8]揭示第2實施形態所致之電子機器的韌體變更動作之一例的流程圖。
[圖9]揭示第3實施形態所致之電子機器的構造之一例的區塊圖。
[圖10]揭示第3實施形態所致之電子機器的第2CPU的功能構造之一例的區塊圖。
[圖11(a)、(b)]揭示第3實施形態所致之電子機器的第1CPU與第2CPU的位址映射之一例的圖。
[圖12]揭示第3實施形態所致之電子機器的資料改寫動作之一例的流程圖。