JP7065578B2 - 情報処理装置、その制御方法、及びプログラム - Google Patents

情報処理装置、その制御方法、及びプログラム Download PDF

Info

Publication number
JP7065578B2
JP7065578B2 JP2017181474A JP2017181474A JP7065578B2 JP 7065578 B2 JP7065578 B2 JP 7065578B2 JP 2017181474 A JP2017181474 A JP 2017181474A JP 2017181474 A JP2017181474 A JP 2017181474A JP 7065578 B2 JP7065578 B2 JP 7065578B2
Authority
JP
Japan
Prior art keywords
area
information processing
information
chip
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017181474A
Other languages
English (en)
Other versions
JP2019057156A5 (ja
JP2019057156A (ja
Inventor
昭浩 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017181474A priority Critical patent/JP7065578B2/ja
Priority to US16/131,474 priority patent/US10720225B2/en
Publication of JP2019057156A publication Critical patent/JP2019057156A/ja
Publication of JP2019057156A5 publication Critical patent/JP2019057156A5/ja
Application granted granted Critical
Publication of JP7065578B2 publication Critical patent/JP7065578B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0407Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals on power on
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Description

本発明は、情報処理装置、その制御方法、及びプログラムに関するものである。
近年、フラッシュメモリ(Flash Memory)の大容量化、低価格化、及び高速化が進み、書き換え可能な不揮発性メモリの利点から情報処理装置である印刷装置などの組み込み機器に広く利用されている。例えば、フラッシュメモリは、各種メモリカード類やeMMC(組み込み型マルチメディアカード)、SSD(ソリッドステートドライブ)などの汎用デバイス形態、ASIC(カスタムチップ)に内蔵されたマルチチップ形態や組み込み形態として利用されている。特に、後者のASIC内蔵タイプは、フラッシュメモリに格納されたプログラムや秘密情報が盗聴や改ざんに強いことからセキュリティチップに用いられ、各種セキュリティ認証を取得したチップも徐々に増えつつある。
一方でフラッシュメモリの欠点としては、寿命やデータ保持期間の制約などフラッシュメモリ特有の性格に起因する事象や瞬断や静電ノイズなど自然災害・人為的な事象に起因するセクタ不良やデータ欠損や化けの可能性が挙げられる。ここで、格納データの一部欠損や化けについては、それが人工的な改ざんなのか否かを判定することは難しい。別途判定プログラムを組み込み解析する必要があり、一般的なセキュリティレベルにおいてこれらは混在された形で判定されるのが通常である。
特許文献1には、システムの起動時にプログラムの正真性(完全性)を確認し、改ざん(故障時も含まれる)検知を行う方法が提案されている。具体的には、起動時においてフラッシュメモリに格納されたプログラム領域のハッシュ値が計算され、予め保持している値と比較されることで正真性の判定が行われている。判定の結果、改ざん(故障)ありと判定されると別デバイスであるROM(リード・オンリー・メモリ)から起動される仕組みである。これによりプログラムの改ざんや故障があってもシステムは通常起動が可能であり、安全性とユーザの利便性の両立を図ることができる。
特開2015-69403号公報
しかしながら、上記従来技術には以下に記載する課題がある。例えば、上記従来技術では、記憶デバイスを冗長化して搭載する必要がある。これは、ASICにフラッシュメモリを内蔵したチップである場合、チップ内部にフラッシュメモリとマスクROM(MaskROM)を搭載する必要があり、チップ単価が増大してしまう。また、ASIC内部に組み込まれるマスクROMのサイズは小規模であり、サイズの大きい複雑なプログラムを搭載することが一般的に困難である。さらに、市場トラブル等で既存プログラムの改善や修復がなされた場合にデグレードして不整合が生じるなどの課題がある。また、ASICがセキュリティチップの場合、個体別にユニークな秘密情報をフラッシュメモリ内に保持しており、当該秘密情報が無い状態で起動した場合にはHDD(ハードディスクドライブ)やSSDに格納された既存データを正常に読み取ることができない。
本発明は、上述の問題に鑑みて成されたものであり、フラッシュメモリに関連した自己診断の結果がNGとなった場合であっても、フラッシュメモリに格納されたプログラムや秘密情報をセキュアな状態で好適に自動修復し、安全性とユーザの利便性を両立したより堅牢な仕組みを提供することを目的とする。
本発明は、情報処理装置であって、情報処理装置であって、前記情報処理装置の固有の秘密情報が格納された秘密領域を含む複数の領域を有するフラッシュメモリと、前記フラッシュメモリが内蔵された第1チップと、前記第1チップと異なるチップであり、前記秘密情報を記憶する第2チップと、少なくとも前記秘密領域に記憶されたデータのエラーを、領域に対応する手法で検知する検知手段と、前記検知手段によって検知されたエラーを、領域に対応する手法で修復する修復手段と、を有し、前記修復手段は、前記第2チップに保持された秘密情報を認証して用いることによって、前記第1チップの前記秘密領域に記憶された認証情報を修復することを特徴とする。
また、本発明は、情報処理装置であって、第1制御回路と、前記第1制御回路によって制御されるとともに、格納する情報の特徴に応じて複数の領域に分割した内蔵フラッシュメモリを備える第2制御回路と、前記内蔵フラッシュメモリの各領域に格納されたデータのエラーを、領域に対応する手法で検知する検知手段と、前記検知手段によって検知されたエラーを、領域に対応する手法で修復する修復手段とを備え、前記検知手段及び前記修復手段は、前記内蔵フラッシュメモリの領域に応じて、前記第2制御回路のみで実現されるか、又は、前記第1制御回路及び前記第2制御回路で実現されるかが切り替えられることを特徴とする。
本発明によれば、フラッシュメモリに関連した自己診断の結果がNGとなった場合であっても、フラッシュメモリに格納されたプログラムや秘密情報をセキュアな状態で好適に自動修復し、安全性とユーザの利便性を両立したより堅牢な仕組みを提供することができる。
一実施形態に係るメインコントローラのシステム構成例を示す図。 一実施形態に係るSATAブリッジ構成の接続例を示す図。 一実施形態に係るSATAホスト制御部及びブリッジ制御部の内部構成例を示す図。 一実施形態に係る内蔵フラッシュメモリの領域構成例と各領域での検証手法を示す図。 一実施形態に係るSATAブリッジ制御部との拡張コマンド例を示す図。 一実施形態に係るSATAブリッジ制御部内部のセキュリティに関係するFSMを示す図。 一実施形態に係るSATAホスト制御部のインストールと起動シーケンス処理を示す図。 一実施形態に係るSATAブリッジ制御部の起動シーケンスを示す図。 一実施形態に係る秘密情報のバックアップ処理フローを示す図。 一実施形態に係るパラメータ書込み不良時の自己修復処理フローを示す図。 一実施形態に係る秘密情報不良検知時の自己修復フローを示す図。 一実施形態に係る秘密情報及びプログラム更新処理フローを示す図。 一実施形態に係るコントロールボード故障交換時の自動修復処理フローを示す図。
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確立されるのであって、以下の個別の実施形態によって限定されるわけではない。
<第1の実施形態>
<情報処理装置の構成>
以下では、本発明の第1の実施形態について説明する。まず、図1を参照して、本実施形態に係る情報処理装置の一例として印刷装置の構成について説明する。ここでは、主に当該印刷装置に設けられるメインコントローラ120のシステム構成例について説明する。図1に示すように、メインコントローラ120は、メインCPU101、メモリ制御部102、フラッシュメモリ103、DRAM104、LAN-IF制御部105、及びReader-IF部108を備える。さらに、メインコントローラ120は、画像処理部110、SATAホスト制御部111、SATAブリッジ制御部112、パネルIF部115、及びビデオ出力IF部117を備える。
メインCPU(中央処理演算器)101は、システム制御や各種演算処理を行う。メモリ制御部102は、各種メモリデバイスへの入出力制御やDMA(ダイレクト・メモリ・アクセス)制御を行う。フラッシュメモリ103は、書き換え可能な不揮発性メモリであり、システム全体の制御プログラムや制御パラメータ等が格納される。DRAM(ダイナミック・ランダム・アクセス・メモリ)104は、DDR(Double-Data-Rate)メモリに代表される揮発性の書き換え専用メモリである。プログラムの作業領域や印刷データの格納領域、各種テーブル情報の格納領域等に用いられる。
ここで、メモリ制御部102と各種メモリデバイスとの関係は、簡略化して表現したものであって、一般的には独立に制御される。また、そのIF(インタフェース)はメモリデバイスが搭載されるストレージデバイスとしての各種IFを有していることを想定しているのであって特定のIFに限定しているわけではない。例えば、eMMC、SATA(Serial Advanced Technology Attachment)、SPI(Serial Peripheral Interface)などであっても構わない。
LAN-IF制御部105は、印刷装置に接続されるローカル・エリア・ネットワーク106との入出力制御を行う。一般的にはTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコルに対応する。ネットワークケーブルを介して外部HOSTコンピュータ107などのネットワーク対応機器と接続され、ネットワーク経由でのプリントを行うことができる。Reader-IF制御部108は、スキャナ装置109との通信制御を行う。スキャナ装置109によってスキャンした入力画像データを印字させることでコピー機能を実現する。画像処理部110は、LAN-IF制御部105、Reader-IF制御部108を介して取り込んだ画像データに対して各種画像処理を行う。
SATAホスト制御部111は、SATA規格に準拠したIFを有するデバイスとのデータ入出力制御を行う。SATAブリッジ制御部112は、上流側としてSATAホスト制御部111にデバイスとして接続され、下流側としては複数のHost-IFを有し、外部記憶装置としてのHDD又はSSD113、114と接続される。SATAブリッジ制御部112では、RAID制御やデータ暗号化など付加価値としての機能が搭載されている。本実施形態では、SATAホスト制御部111とSATAブリッジ制御部112は、それぞれ独立したASIC(特定用途向け集積回路)としてメインコントローラ120に搭載されていることを前提として説明を行う。
パネルIF部115は、パネル装置116との通信制御を行う。ここでは図示しないがUI(ユーザ・インタフェース)として、パネル装置116上の液晶画面表示やボタン等を操作することにより印刷装置の各種設定及び状態の確認を行うことができる。
ビデオ出力IF部117は、印字部118とのコマンド/ステータスの通信制御や印刷データの転送を行う。印字部118は、ここでは図示しないが印刷装置本体と給紙系及び排紙系から構成され、主にビデオ出力IF部117からのコマンド情報に従い、印刷データを記録媒体(紙、シート等)に印刷する。
メインバス119はバスコントローラを含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。代表例としてPCIe(PCI Express)やASICの内部バスなども含まれる。
<接続構成>
次に、図2を参照して、SATAブリッジ構成としての接続例について説明する。メインASIC(第1制御回路)201は、SATAホスト制御部111を含むメインコントローラ120のシステム全体を制御する中心的なASICである。SATAホスト制御部111は、SATA-IP(Intellectual Property)202をホストIFとして有する。サブASIC(第2制御回路)は、SATAブリッジ制御部112そのものであり、メインコントローラ120上に独立したIC(Integrated Circuit)として実装されている。
SATAブリッジ制御部112は3個のSATA-IP203~205を持つ。ブリッジ構成での上流側はSATA-IP(Host)202がH-Host-IF206を介してSATA-IP(Device)203と接続される。一方、下流側はSATA-IP(Host1)204がB-Host1-IF207を介してHDD/SSD113と接続され、SATA-IP(Host2)205がB-Host2-IF208を介してHDD/SSD114と接続されている。ここで、SATA-IP202~205とは、SATAリンク層及び物理層から構成される。また、SATA-IP202~205は、各種SATAレジスタの設定に応じてSATA-IF206~208で接続されるSATAデバイスに対して物理的な(電気信号としての)SATA規格のコマンド発行やステータス受信を行う。
また、メインASIC201やSATAブリッジ制御部112(サブASIC)はコントローラボード上で接続され、さらにメインASIC201には、フラッシュメモリ103が接続されている。ここで、フラッシュメモリ103のデバイスとしては、eMMCやSATA-Flash(SATA-IFを有するメモリデバイス)、SSDなどのようなものを想定している。本実施形態では、一例として、フラッシュメモリ103にeMMCを利用するものとして説明を行う。なお、本実施形態ではSATAホスト制御部111とブリッジ制御部112との間のIFを1個、SATAブリッジ制御部112とHDD/SSD113、114との間のIFを2個として説明するが、各IFの数は任意の個数の接続形態であっても構わない。
<内部構成>
次に、図3を参照して、SATAホスト制御部111及びSATAブリッジ制御部112の内部構成例について説明する。SATAホスト制御部111は、図2に示した構成に加えて、HCPU301、メモリ制御部302、フラッシュメモリ303、SRAM304、割り込み制御部305、レジスタH306、DAMC307、及びバスブリッジ回路309を備える。各部はHバス308を介して接続される。
HCPU301は、SATAコマンド発行処理、送受信データの転送処理及びステータス受信処理等、SATAコントローラとしての全般的な制御を行う。メモリ制御部302は、フラッシュメモリ303やSRAM(スタティック・ランダム・アクセス・メモリ)304との入出力制御を行う。フラッシュメモリ303には、ブートプログラムやSATAコントローラとしての制御プログラムが格納されている。
SRAM304にはHCPU301の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファなどに使用される。ここで、SRAM304は1ポートRAM、2ポートRAM、FIFO(First-IN First-OUT)メモリ等の制御を簡略化して記載しているのであって、それぞれ独立に制御され複数個所にSRAMが存在しても構わない。
割り込み制御部305は、HCPU301に対する割り込み信号の入力や出力処理、割り込み信号に対するマスク処理などを行う。レジスタH306は、各種制御パラメータを一時的に記憶するためのレジスタである。DMAC(ダイレクト・メモリ・アクセス・コントローラ)307は、ここでは図示しないがHCPU301によって所定のレジスタに転送元及び転送先の先頭アドレス及びサイズが設定され、起動が掛けられると所定のメモリ間でデータ転送を行う。
Hバス308はバスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。バスブリッジ回路309は、メインバス119とHバス308間のバスプロトコルを相互に変換するバスブリッジ回路である。HCPU301は、メインバス119を介してフラッシュメモリ(eMMC)103にアクセスすることが可能である。
SATAブリッジ制御部112は、図2に示した構成に加えて、BCPU310、メモリ制御部311、内蔵フラッシュメモリ312、SRAM313、レジスタB314、及び他の機能ブロックを備える。BCPU310は、SATAコマンド発行処理、送受信データの転送処理及びステータス受信処理等SATAコントローラとしての全般的な制御を行う。メモリ制御部311は、フラッシュメモリ312やSRAM313との入出力制御を行う。内蔵フラッシュメモリ312には、ブートプログラムやSATAコントローラとしての制御プログラム及び制御パラメータなど各種制御データなどが格納されている。例えば、本実施形態ではSATAブリッジ制御部はセキュリティチップを想定しており、フラッシュメモリはチップに内蔵されており、暗号鍵生成の元データや認証IDなど秘密情報も格納されている。
SRAM313にはBCPU310の作業領域、各種制御テーブルやパラメータ格納領域及びデータバッファなどに使用される。ここで、SRAM313は1ポートRAM、2ポートRAM、FIFOメモリ等の制御を簡略化して記載しているのであって、それぞれ独立に制御され複数個所にSRAMが存在しても構わない。レジスタB314は、各種制御パラメータなどを一時的に記憶するためのレジスタである。
他の機能ブロック315は、SATAブリッジ制御部112としての他の機能ブロック、例えばRAID処理やデータ暗号化処理等をまとめて示したものであるが、本発明の本質とは関係しないので説明を省略する。Bバス317はバスコントローラ含み、制御バス、データバス及び任意ブロック間のローカルバスを便宜的にまとめて表現したものである。また、図2で説明したようにSATAホスト制御部111のSATA-IP(Host)202とSATAブリッジ制御部112のSATA-IP(Device)203とは、H-Host-IF206を介して接続される。さらに、SATA-IP(Host1/2)204及び205は、B-Host1/2-IF207及び208を介して、HDD/SSD113、114に接続されている。
<内蔵フラッシュメモリ>
次に、図4を参照して、内蔵フラッシュメモリ312におけるデータ領域の構成例について説明する。本実施形態によれば、内蔵フラッシュメモリ312の領域を、当該領域に格納する情報の特徴、例えばその性質や重要度に応じて領域分割し、領域ごとに(格納する情報の特徴ごとに)適したセキュリティレベルを実現する暗号化や認証方法を適用する。図4(a)に示すように、内蔵フラッシュメモリ312は、データ構成として、ローダー領域401、プログラム領域402、秘密情報領域403、及びパラメータ領域404を含んで構成される。
ローダー領域401は、フラッシュメモリに格納されるプログラムの一部をSRAM313にロードするためのブート用プログラムの格納領域である。プログラム領域402は、ブート用プログラムを除く他のプログラムの格納領域であり、自己テスト(自己診断)や認証などセキュリティに関連する関数群、SATA制御やその他機能制御(例えばRAIDなど)関数群などのプログラムが格納されている。また、プログラム領域402は、更新用として領域1(405)と領域2(406)との2つの領域を含んで構成される。
秘密情報領域403は、暗号鍵を生成する元データや各種セキュリティに関係するデータ格納領域である。秘密情報領域403に格納されるデータは、チップ個体別にユニークな情報であり、本データの喪失は、既存データの復号が不可能になることを意味するものであり、重要な情報である。本実施形態では、秘密情報領域403もプログラム領域402と同様に2つの領域407、408が更新用に確保されている。
パラメータ領域404は、システムをシャットダウンする際に次回起動後の状態を確定するためのステート情報等が格納される領域である。例えば、2台のHDDでミラーリング処理を実施していた場合のステート位置やどちらのドライブがマスターとなっていたかなどの情報が保存されているので、次回起動時には前回の状態から制御を開始することができる。パラメータ領域404の内部構成は、409に示すように小さな領域に分割(図ではN等分された例を示す。)され、リングバッファ形式で順次利用される。
本実施形態では、上記分割された各領域のセキュリティレベルについて、その格納される情報の特徴に応じて、異なる暗号化や認証方法が適用される。また、分割された各領域に格納される情報の特徴や種別に応じて、各領域に適切な内部自己テストの手法や更新(修復)の検証方法が適用される。図4(b)は、各領域に応じたチップ内部自己テストや更新(修復)時の検証方法を示した表410である。プログラム領域401に格納されるプログラムは、プログラムのハッシュ値を計算し、作成者の持つ秘密鍵で暗号化して署名するデジタル署名を付与したものを、検証者のもつ公開鍵で復号して正真性が検証される。秘密鍵の暗号化では、例えば、素因数分解の困難性を利用した公開鍵暗号方式であるRSA暗号が用いられてもよい。
秘密情報領域403に格納される秘密情報は、通常運用時の内部自己テストではEDC(誤り検出符号)で故障の有無が検証される。一方、更新(修復)時には、秘密情報のハッシュ値が計算され、作成者の持つ共通鍵で符号化されるメッセージ認証コードで正真性が検証される。メッセージ認証コードには、例えば、対象ファイルのハッシュ値を共通鍵で符号化して改ざんを検知する方式であるHMACが用いられてもよい。
パラメータ領域404は、N等分された各部分領域にパラメータを記録する際に、記録開始を示す開始フラグを先頭の所定領域に、記録完了を示す終了フラグを末尾の所定領域に書込むことで対象部分領域へのパラメータ書込みが正常に実施されたかが検証される。例えば、フラッシュメモリは初期化するとデフォルト値はオールFhであるが、開始フラグと終了フラグが正常に書込み完了したならば、各フラグの領域(例えば、サイズ4バイト)にオール0hを書き込むようにするとよい。次回起動時にこれらのフラグを読み取ることで前回の書込み処理が正常実施されたかを判断することができる。さらに、各フラグのサイズを1ビットではなく、多ビット化しておけば、書込み処理時の瞬断や静電ノイズ等の不測の事態が発生しても、次回起動時に誤判断する可能性を低く(ほぼゼロ)抑えることができる。
このように、本実施形態によれば、内蔵フラッシュメモリ312の領域を、格納する情報の特徴に応じて分割するとともに、各領域において、最適な自己テスト(自己診断)、修復、暗号化、及び認証、などの手法を適用する。これにより、プログラムや秘密情報の盗聴や改ざんに強くするとともに、瞬断や静電ノイズなどに起因するセクタ不良やデータ欠損などが発生した場合にも、チップコストを抑えた状態で好適に情報を修復することができる。
<コマンド>
次に、図5を参照して、SATAブリッジ制御部112を上位であるSATAホスト制御部111から制御するためのコマンド群の一例を説明する。いずれのコマンドもSATA規格で提供されているベンダーユニークコマンドを利用したSATA規格コマンド外のコマンドである。以下、これらのコマンドを拡張コマンドと称する。
SATAブリッジ制御部112は、SATA-IFを介して全てインバンドにて制御される。図5(a)の表501に示す拡張コマンド群は、SATAブリッジ制御部112の初期インストール時及び各サブASICでユニークに生成される秘密情報領域403をチップ外に出力するために使用される拡張コマンドである。図5(b)の表511に示す拡張コマンド群は、サブASIC内の自己テストでNGとなりエラーステートに遷移した場合で、秘密情報領域403の自己修復時に使用される拡張コマンド及びプログラム領域402の自動修復時に使用される拡張コマンドである。表501及び表511の拡張コマンド処理の詳細については、他の図を参照しながら説明するので、ここでは省略する。
<状態遷移>
次に、図6を参照して、SATAブリッジ制御部112(サブASIC)内のFSM(Finite State Machine:有限ステートマシン)について説明する。セキュリティに関係するFSMであるという意味で、以下ではSFSMと称する。
SATAブリッジ制御部112のSFSMは、初期インストール以前は電源が投入された後に、状態1の電源オフステート601から状態2の電源オンステート602に遷移する。ここで、初期インストールとは、初回起動時において、認証情報や暗号情報に関わる情報をSATAブリッジ制御部112にインストールする処理を示す。状態2までの遷移において、エラーがなければ、続いて状態3の起動時自己テストステート603に遷移する。起動時自己テストで問題がなければ状態0のノンセキュアステート604に遷移する。この時点では、まだ初期インストールが完了していないことが前提なのでノンセキュアな状態であり、この状態ではHDDへの保存データに暗号化は掛らない。
次に、状態0のノンセキュアステート604から状態8の秘密情報入力ステート605に遷移し、各種認証処理に用いられる認証IDなどの秘密情報のインストール及び暗号鍵生成の元データとなるチップ個体別にユニークな秘密情報の生成が行われる。それらの生成が完了すると、状態5のConfigステート607に遷移する。この時点でノンセキュアな状態からセキュアな状態へモードが切り替わる。
初期インストール完了後に状態5のステートで再起動を掛けると、再び状態1の電源オフステート601から状態2の電源オンステート602を経て、起動時自己テストステート603に遷移する。起動時自己テスト結果が正常ならば状態4の暗号鍵生成ステートに遷移し、秘密情報領域403から暗号鍵の生成を実行した後、状態5のConfigステート607に遷移する。
その後、状態5から状態6の認証ステート608に遷移し、SATAブリッジ制御部112(サブASIC)によるSATAホスト制御部111(メインASIC)の認証及びその逆のメインASICによるサブASICの認証が実行される。相互認証が成功すると状態7のUserステート609に遷移することができる。この状態7の時点で、HDD(又はSSD)へのデータ書込み・読み出しが可能となり、HDD(又はSSD)に格納されるデータは暗号化され、読み出し時は復号化される。また、状態7まで辿り着く資格がある者のみが、状態6の認証ステート608を経て状態11の秘密情報出力ステート610に遷移することで秘密情報領域403の出力が可能となる。
また、状態5のConfigステート607において、状態6の認証ステートを経て状態12のプログラム更新ステート616に遷移することでプログラムの更新処理を実行可能となる。ここで、状態4、状態8、状態6、状態11、状態12のそれぞれの状態において以下の状態9A~状態9Eの条件自己テストA~Eに遷移して、認証処理で使用される秘密情報領域403の正真性検証及び乱数器とハッシュ関数の機能検証が実施される。状態9Aは条件自己テストステートA611を示し、状態9Bは条件自己テストステートB612を示し、状態9Cは条件自己テストステートC613を示し、状態9Dは条件自己テストステートD614を示し、状態9Eは条件自己テストステートE615を示す。条件自己テストA~E(611~615)において検証に失敗すると状態10のErrorステート617に落ち込んでしまう。
ここで、例えばセキュリティ認証としてFIPS認証(Federal Infomation Processing Standardization:暗号モジュール試験)を取得する場合を想定する。この場合、一端、状態10のErrorステート617に遷移すると、その不具合(故障なら修理後)の解消後でない限り、HDD(又はSSD)への既存保管データのアクセスを禁止する認証要件が課せられることになる。
<SATAホスト制御部の処理手順>
次に、図7を参照して、SATAブリッジ制御部112に対して初回起動時におけるインストール処理及び起動処理を行わせる際のSATAホスト制御部111の処理手順について説明する。
S701で、初回の電源投入が行われる。ここで、各コントローラボードに実装されたSATAブリッジ制御部112(サブASIC)は、初回電源ON時にはまだノンセキュアな状態である。S702で、SATAホスト制御部111のHCPU301は、図5(a)の表501のInstall-Secret-Infoコマンド502をH-Host-IF206を介してSATAブリッジ制御部112に対して発行し、インストール処理を開始する。
このインストール処理では、SATAホスト制御部111とSATAブリッジ制御部112との間の各種認証ID情報やサブASIC個体別にユニークな暗号鍵生成の元データとなる秘密情報領域403が生成される。ここでは図示しないが、秘密情報領域403は、他の機能ブロック315に含まれる真正乱数発生器により擬似乱数器に与えられるシード値を秘密情報として生成する。従って、秘密情報の一部が欠損してしまうと同一サブASICでも同一秘密情報を生成することはできない。
次に、S703で、HCPU301は、表501のGet-Statusコマンド503を発行し、SATAブリッジ制御部112の内部ステータスを取得する。S704で、HCPU301は、S703で取得した内部ステータスに基づいて、S702のインストール処理が成功したかどうかを判定する。ここで、S703とS704との間をループする矢印は、Get-Statusコマンド503を定期的に発行するポーリング処理を実施していることを表現している。本実施形態では、Get-Statusコマンド503を用いたポーリング方式でSATAブリッジ制御部(サブASIC)112の内部スタータスを取得する方法で説明するが、ステータスの取得方法をポーリング方式に限定するものではない。他の方法としてSATA-IF以外にサイドバンド信号として割り込み信号を設け、チェックポイントとなるタイミングで、BCPU310からHCPU301やメインCPU101に割り込みを発行する方法でも構わない。
S704での判定が成功(YES)の場合にはS705に進み、HCPU301は、SATAブリッジ制御部112の内部ステートを確認し、図6で示した状態5のConfigステート607に遷移し、セキュアな状態に移行する。続いて、S706で、HCPU301は、一連の相互認証コマンドをSATAブリッジ制御部112に対して発行する。具体的には、表501の拡張コマンド番号のC0h~C4h(504~508)を発行し、一般的な認証方法であるチャレンジ・レスポンス方式によって、SATAホスト制御部111とSATAブリッジ制御部112との間でお互いの相手に対する認証を実施する。但し、SATA規格では、基本的にホストからの一方向通信であるので、コマンド発行は必ずHCPU301から発行しなければならない。
相互認証のコマンド発行後、S707で、HCPU301は、Get-Statusコマンド503のポーリング処理で逐次SATAブリッジ制御部112のステータスを取得し、S708で、相互認証が成功したかどうかを判定する。S703及びS704と同様に、S707とS708との間をループする矢印は、Get-Statusコマンド503を定期的に発行するポーリング処理を実施していることを表現している。
S708での判定が成功(YES)の場合には、S709に進み、HCPU301は、SATAブリッジ制御部112の内部ステートがUserステートであることを確認する。即ち、図6の状態7のUserステート609に遷移したことを意味する。前述したように、状態7のUserステート609のときのみ、HDD(又はSSD)へのデータアクセス(書込み・読み出し)が可能となる。
次に、S710で、HCPU301は、メインCPU101にSATA系が起動完了してアクセス可能となったことを通知し、通常運用を開始する。ここで、S704及びS708の判定で失敗(NO)した場合には、S711に進む。S711で、HCPU301は、エラー処理を実施する。エラー処理の内容として自己修復可能な範囲か否かを判断し、可能な範囲で通常運用まで復帰できる努力を行うが、それらの詳細は他の図で説明するので、ここでは概要のみの説明に留めて置くことにする。また、以下の本実施形態でのHCPU301側の起動シーケンスについては、S703~S711までのフロー処理を意味するものとして説明を省略することにする。
<SATAブリッジ制御部の処理手順>
次に、図8を参照して、SATAブリッジ制御部112の2回目以降の起動時における処理手順について説明する。但し、既に初期インストール処理は完了し、セキュアに運用可能な状態での起動シーケンスであることを前提とする。
S801で、SATAブリッジ制御部112(サブASIC)が電源ONされ、BCPU310自身のブート処理が完了すると、BCPU310は、図6の状態3の起動時自己テストステート603に状態を遷移させ、検証を実施する。ここでの検証内容は、パラメータ領域404で前回分のフラッシュメモリへの書込み開始・完了フラグ状態の検証が実施される。また、プログラム領域402の領域1(405)のデジタル署名検証、暗号機能検証として暗号エンジン(例えばAES:Advanced Eyncryption Standard)や乱数器、ハッシュ関数の機能的テスト(既知解テスト)が実施される。
S802の判定結果が成功(YES)の場合には、S805に進み、BCPU310は、暗号鍵の生成処理を実行する。また、図6の状態4の暗号鍵生成ステート606で説明したように、BCPU310は条件自己テストA611を実行する。ここで、条件自己テストとは、暗号関連機能を利用する場合、その直前にそれらの機能が正常であるかどうかを検証するものであり、秘密情報領域403の領域1(407)のEDC検証、乱数器、及びハッシュ関数の機能的テスト(既知解テスト)が実施される。
S806の判定で暗号鍵の生成に成功(YES)すると、S807に進み、BCPU310は、Configステートに遷移してSATAホスト制御部111からの認証要求が受付可能な状態となる。SATAブリッジ制御部112の内部的には、図6で説明した状態5のConfigステート607に遷移し、ノンセキュアな状態からセキュアな状態へモードが切り替わる。続いて、S808で、BCPU310は、HCPU301からの相互認証系コマンド(表501の拡張コマンド番号のC0h~C4h(504~508))を受信すると相互認証処理を実行する。図7で説明したようにチャレンジ&レスポンス認証であるが詳細説明は本発明には関係しないので省略する。また、その過程は図6の状態6の認証ステート608に遷移し、条件自己テストC613が実行される。
S809で、BCPU310は、相互認証処理が成功したか否かを判定し、成功すると、S810に進む。S810で、BCPU310は、通常運用を開始し、本フローチャートを終了する。具体的には、図6の状態7のUserステート609に遷移し、HDD(又はSSD)への書込み及び読み出し処理の受付を開始する。
一方、S802において起動時の自己テストが失敗(NO)したと判定した場合には、S803に進み、BCPU310は、内部修復可能かを判断し、その判断結果が修復可能(YES)ならばS804に進む。S804で、BCPU310は、内部自動修復処理を実行し、S805に進む。なお、S804についての詳細な内容説明は、図10を用いて後述するので省略する。一方、S803において内部修復不能(NO)と判断された場合には、S813に進む。S806において暗号鍵の生成に失敗(NO)した場合には条件自己テストA611の検証に失敗したとして、S813に進む。また、S809において相互認証に失敗(NO)の場合には、S811に進む。さらに、S811で、BCPU310は、(条件)自己テストエラーによるものか否かの判定を行う。S811の判定が自己テストエラーではない(NO)場合には、S812に進み、BCPU310は、エラー処理を実行して、処理をS807に戻す。エラー処理としては発生要因コードの設定とConfigステートへ遷移する。その後、エラー発生要因コードは、Get-Statusコマンド503によるステータス取得時の判定に利用され、その判定結果からリトライを継続するか、タイムアップで諦めるかなどの判断は上位HCPU301の処理に依存する。S811で自己テストエラー(YES)であれば、S813に進む。
S813で、BCPU310は、自己テストエラーとしてのエラー処理を実行する。エラー処理としては発生要因コードの設定と図6で説明した状態10のErrorステート617に遷移する。その後、Get-Statusコマンド503によるステータス取得から上位HCPU301が自動修復するか、タイムアップで諦めるかなどの判断は、上位HCPU301の処理に依存する。
<バックアップ処理>
次に、図9を参照して、SATAホスト制御部111における内蔵フラッシュメモリ312の秘密情報領域403の格納された情報のバックアップ処理の処理手順について説明する。図7で説明したS703~S711までの起動シーケンスを経て、HCPU301は通常運用開始状態に移行し、ここまで正常起動(S901)したことを前提とする。
S902で、HCPU301は、秘密情報取得に対する認証処理を実行する。具体的には、HCPU301は、図5(a)で示したRequest-CHA-C3コマンド508及びSend-RES-C3コマンド509をSATAブリッジ制御部112に送信してチャレンジ&レスポンス形式で認証処理を実施する。
S903で、HCPU301は、Get-Statusコマンド503を用いて秘密情報取得認証の結果ステータスを取得し、S904で認証に成功したか否かの判断を行う。ここで、S903とS904との間をループする矢印は、Get-Statusコマンド503を定期的に発行するポーリング処理を実施していることを表現している。S904での判定結果が成功(YES)した場合、S905に進み、HCPU301は、Export-CSPコマンド510を発行して秘密情報の要求を行い、そのステータスを待つ。
次に、S907で、HCPU301は、BCPU310からのステータスが成功(YES)で取得完了した場合、S908に進む。S908で、HCPU301は、SATAブリッジ制御部112から取得した秘密情報のハッシュ値を計算し、取得したメッセージ認証コードを復号した値と比較することで正真性の確認を行う。ここで、メッセージ認証コードを用いる場合には、予めインストール処理時に共通鍵を共有していることを前提としている。さらに、HCPU301は、取得した秘密情報を所定位置にバックアップする処理を実行する。本実施形態では、フラッシュメモリ(eMMC)103に格納することにするが、特にバックアップ先を限定するものではない。
一方、S904で秘密情報取得の認証に失敗(NO)した場合には、S911に進む。S911で、HCPU301は、エラー処理を実行する。エラー処理内容としてはリトライ処理などが考えられるが本発明の本質とは関係しないので説明を省略する。ここで、取得した秘密情報には、秘密情報本体データとそれのメッセージ認証コード(HMAC)が含まれる。本実施形態では、秘密情報の検証方法としてメッセージ認証コードを前提として説明するが、これに限定されるわけではなく別の手法(ハッシュ値のみやデジタル署名など)でも構わない。一般的に信頼性が高い(セキュリティレベルが高い)方法であると検証や更新処理にはそれなりの時間を要する。つまり、これらの処理は、信頼性と処理に必要とする時間とがトレードオフの関係にあり、適用する製品又は適用する格納情報に付加したい各領域に格納する情報へ付与するセキュリティレベルに応じて決定すべき内容である。
<自己修復処理(パラメータ領域)>
次に、図10を参照して、内蔵フラッシュメモリ312のパラメータ領域404への書込み不良検知時の自己修復処理フローについて説明する。図8で説明したS804のBCPU310側の処理にあたる。
S1001で、BCPU310は、電源ON時の起動時自己テストを実行する。S1002で、BCPU310は、自己テストの実行結果が成功(YES)したか否かを判断し、成功した場合には、S1006に進む。S1006で、BCPU310は、図8で説明した起動シーケンス(S805に遷移)を経て通常運用状態まで処理を進めて、上位HCPU301からのアクセス待ちに入る。
一方、S1002で自己テストに失敗(NO)したと判断するとS1003に進み、BCPU310は、その失敗原因がフラッシュメモリへの書込み不良であるか否かを判断する。具体的には、図4(b)で説明したパラメータ領域404での書込み開始及び完了フラグを確認し、カレント(対象領域)の開始及び完了フラグの片方又は両方が未書込み状態を検知した場合には、書込み不良であると判断してS1004に進む。
S1004で、BCPU310は、パラメータ領域404のリングバッファ409をカレントに最も近い順に遡り、開始及び完了フラグが書込み完了状態(両フラグがオールFh)の過去のパラメータ領域を探索する。続いて、S1005で、BCPU310は、代替となるパラメータ領域の発見に成功(YES)したか否かを判断し、成功するとS1006に進み、それらのパラメータ領域の情報を用いて起動する。
一方、S1003の判定で起動時自己テストの失敗原因が書込み不良ではない場合(NO)やS1005での過去パラメータ領域の探索に失敗(NO)した場合には、S1007に進む。S1007で、BCPU310は、エラー処理を実行する。ここでも、具体的にはエラー要因のセットとエラーステートへの遷移を行う。実際の製品運用では、上位HCPU301がGet-Statusコマンド503で取得したステータス内容でどのようなエラーハンドリングをするかという問題であり、本発明の本質とは関係ないので詳細な説明は省略する。
<自己修復処理(秘密情報領域)>
次に、図11を参照して、秘密情報不良検知時の自己修復フローについて説明する。
任意のタイミングであるS1101で、HCPU301は、サブASIC内部のステータスを取得し、S1102で正常かどうかを判定する。S1102で異常(NO)であった場合には、S1103に進み、HCPU301は、修復可能かの判定を行う。S1103での判定において修復可能(YES)の場合には、S1104に進む。S1104で、HCPU301は、エラー要因コードから条件自己テストX(X:A~E(611~616))での秘密情報領域のEDC検出エラーとして判断し、修復作業の準備を開始する。まず、S1105で、HCPU301は、図5(b)のChange-To-NoSecureコマンド512を発行する。これにより、SATAブリッジ制御部(サブASIC)112の内部状態を状態10のErrorステート617から状態0のノンセキュアステート604に一時的に離脱させる。
次に、S1106で、HCPU301は、図5(b)のErase-Secret-Infoコマンド512を発行して、SATAブリッジ制御部(サブASIC)112内にインストールされた秘密情報領域403に格納された認証IDや秘密情報を破棄させる。続いて、S1107で、HCPU301は、再インストール処理を実行する。インストール処理については図7のインストール処理S702と同じ処理であるので説明を省略する。
次に、S1108で、HCPU301は、SATAブリッジ制御部(サブASIC)112に更新したい秘密情報の準備を行う。具体的には、フラッシュメモリ(eMMC)103に格納した秘密情報+メッセージ認証コードを読み出して、メインメモリであるDRAM104に格納する。続いて、S1109で、HCPU301は、図5(b)のRequest-CHA-C4コマンド514とSend-RES-C4コマンド515を発行して、チャレンジ&レスポンス認証方式にて秘密情報取得のための認証を行う。この場合、BCPU310がHCPU301側を認証する意味である。その後、S1110で、HCPU301は、ステータスを取得し、S1111でその結果が成功(YES)であるか否かを判断し、成功であるならば、S1112に進む。
S1112で、HCPU301は、図5(b)のImport-CSPコマンド516を発行して、付随データとして準備した秘密情報+メッセージ認証コードをSATAブリッジ制御部(サブASIC)112へ渡す。これを受け取ったBCPU310側の処理は図12を用いて後述する。続いて、S1113で、HCPU301は、ステータスを取得し、その確認結果、S1114で修復成功(YES)ならば、S1115に進む。S1115で、HCPU301はステータスを確認し、その結果S1116において起動OK(YES)ならば、S1117から通常運用を開始する。
一方、S1102のステータス確認で、正常(YES)であれば、S1115に進む。以後は、説明した内容と同じなので省略する。また、S1102のステータス確認が異常(NO)で、且つS1103での判定で修復不可(NO)である場合とS1111で秘密情報の受け入れ認証に失敗(NO)した場合には、S1118に進む。さらに、S1114での修復処理に失敗(NO)した場合や、S1116でのステータス確認で起動OKとならなかった(NO)場合には、S1118に進む。S1118で、HCPU301は、エラー処理を実行し、本フローチャートの処理を終了する。エラー処理については、本発明の本質とは関係ないので説明を省略する。
<自己修復処理(プログラム領域)>
プログラム領域402の更新処理フローは、図11を用いて説明した秘密情報領域403の自己修復処理と使用する拡張コマンドが異なるだけで、処理フローは基本的に同じであるため図示しない。但し、プログラム更新の場合、そのバックアップデータはフラッシュメモリ(eMMC)103にデジタル署名を付与して保存されていることを前提としている。
<更新処理(秘密情報領域及びプログラム領域)>
次に、図12を参照して、秘密情報領域403及びプログラム領域402に格納された情報の更新処理フローについて説明する。
S1201で、BCPU310は、データ更新系(秘密情報とプログラム)の認証コマンドのいずれかを受信する。具体的には、チャレンジ&レスポンス認証方式のチャレンジ乱数を要求するRequest-CHA-C*コマンドである。図5(b)のRequest-CHA-C4コマンド514、Request-CHA-C6コマンド517がこれにあたる。さらに、これらのチャレンジ乱数値に対するレスポンス応答の拡張コマンドは、Send-RES-C4コマンド515、Send-RES-C6コマンド518である。
次に、S1202で、BCPU310は、チャレンジ乱数を生成し、S1203でRequest-CHA-C*コマンドのステータス応答として生成したチャレンジ乱数値を送信する。その後、S1204で、BCPU310は、HCPU301からのレスポンスであるSend-RES-C*コマンドを受信すると、S1205で、レスポンス値を検証して認証成功かどうかの判定を行う。S1205での判定が成功(YES)した場合には、S1206に進み、それが秘密情報の更新なのかの判定を行う。
S1206での判定結果が秘密情報更新であった場合には、S1207に進む。S1207で、BCPU310は、秘密情報の更新コマンドの受信を待つ。その後、秘密情報の更新コマンドである図5(b)のImport-CSPコマンド516を受信した場合には、S1208においてメッセージ認証コード(HMAC)による受け入れ検証を実行する。ここで、秘密情報の受信データは、秘密情報領域403の領域2(408)に格納される。S1209において受け入れ検証に成功(YES)すると、S1210に進む。
一方、S1206でプログラムの更新である場合(NO)には、秘密情報の更新と同様にS1211でプログラム更新のコマンドを待つ。その後、プログラムの更新コマンドである図5(b)のUpdate-Proguramコマンド519である場合には、S1212においてデジタル署名(RSA+Hash)による受け入れ検証を実行する。ここで、更新プログラムの受信データは、プログラム領域402の領域2(408)に格納される。S1213で受け入れ検証に成功(YES)すると、S1210に進む。
S1210で、BCPU310は、更新処理を実行する。次回からの秘密情報やプログラムの利用時は各領域2のものが使用されることになる。ここで、S1205での更新許可認証に失敗(NO)した場合と、S1209で秘密情報の更新受け入れ検証に失敗(NO)した場合、S1213でプログラムの更新受け入れ検証に失敗(NO)した場合のいずれかでは、S1214に進む。S1214で、BCPU310は、エラー処理を実行する。具体的にはエラー要因のセットとエラーステートへの遷移を行う。ここでも、実際の製品運用では、上位HCPU301がGet-Statusコマンド503で取得したステータス内容でどのようなエラーハンドリングをするかという問題であり、本発明の本質とは関係ないので詳細な説明は省略する。
以上説明したように、本実施形態に係る情報処理装置は、格納する情報の特徴に応じて複数の領域に分割したフラッシュメモリを備える。本情報処理装置は、各領域に格納されたデータの不具合を、各領域ごとに異なる手法で検知し、検知した不具合を、各領域ごとに異なる手法で修復する。また、一形態として、本情報処理装置は、第1制御回路(メインASIC)と、第1制御回路によって制御されるとともに、格納する情報の特徴に応じて複数の領域に分割した内蔵フラッシュメモリを備える第2制御回路(サブASIC)とを備える。これにより、フラッシュメモリに関連した自己診断の結果がNGとなった場合であっても、フラッシュメモリに格納されたプログラムや秘密情報をセキュアな状態で好適に自動修復し、安全性とユーザの利便性を両立したより堅牢なシステムを提供することができる。また、自己修復する際には、フラッシュメモリの格納情報の重要度に応じて分割された領域ごとに、そのセキュリティレベルに応じて最適な自己修復処理を切り替えて実行することができる。
<第2の実施形態>
以下では、本発明を実施するための第2の実施形態について図面を用いて説明する。上記第1の実施形態で記載したようにSATAホスト制御部111を含むメインASICとSATAブリッジ制御部112のサブASICは共にコントローラボードに実装されていることを想定している。この場合、SATAブリッジ制御部(サブASIC)112は正常でもコントローラボード上のメインASICやその他の部品が出荷後に故障してしまうと、基本的にボード交換となってしまう。交換されたサブASICは物理的に異なるものであって、このチップの初期インストールの有無には関わらず個体別にユニークな秘密情報は異なる。従って、その場合既にHDD又はSSD113、114に格納してある既存データを正常に読み取ることができなくなってしまうことを意味する。本発明は、サブASICの故障以外にも故障ボード交換時に秘密情報の更新(自動修復機能)により、既存のHDD又はSSD113、114のユーザデータを守る用途にも利用できる。
<自己修復処理(ボード故障交換時)>
以下では、図13を参照して、本実施形態に係るコントロールボード故障交換時の自動修復処理フローについて説明する。図13を説明する前に、ここでは図示しないが幾つかの前提条件を記載する。まず、フラッシュメモリ(eMMC)103に秘密情報を格納する際に書込みを示すフラグを設ける。Get-Statusコマンド503によるポーリング処理時にSATAブリッジ制御部(サブASIC)112の内部状態(例えば、RAID情報など)を同じくフラッシュメモリ(eMMC)103に保存しておく。フラッシュメモリ(eMMC)103は、コントローラボードにソケット化や子ボード化されて分離できる。初期インストール時にHDD(又はSSD)の一部のアドレスにマジックナンバーを記録しておく。個体別にユニークな秘密情報から生成された暗号鍵で暗号化されたマジックナンバーは、同一暗号鍵でない限り復号して正常に読み取ることはできない。以上のことを前提とした上で図13のフローチャートの説明を実施する。
S1301で、HCPU301は、起動後にステータスを取得し、S1302でセキュアな状態か否かを判定する。セキュアな状態とは、図6で説明した状態5のConfigステート607に遷移している場合であり、インストールが完了し、起動時自己テストを経て秘密情報から暗号鍵を生成した後に遷移するステートである。S1302での判定でセキュアな状態ならば、S1303に進み、HCPU301は、相互認証処理を実施し、S1304での認証判定により成功(YES)ならば、S1305に進む。ここで、S1304の自身に戻るループはステータスをポーリングしていることを簡略化して表現している。
S1305で、HCPU301は、HDD(又はSSD)から初期インストール時に書き込んだマジックナンバーを読み出す。続いて、S1306で、HCPU301は、例えばフラッシュメモリ(eMMC)103に予め保存してあるマジックナンバーと上記読み取り値とを比較することで正規の暗号鍵とペアのHDD(又はSSD)かの判定をすることができる。S1306の判定が成功(YES)ならば、HCPU301はS1307で起動シーケンス処理を実施し、S1308にて通常運用を開始する。
一方、S1302の判定でNOの場合は、ノンセキュアな状態と判断し、S1309に進み、HCPU301は、インストール処理を実行する。S1310で取得したステータスがセキュアな状態に遷移(YES)すると、次にS1311に進む。S1311で、HCPU301は、フラッシュメモリ(eMMC)103に秘密情報がバックアップされているかの判定を行う。ここでは図示しないが、前提条件で記載したようにバックアップ領域に秘密情報の書込み有りを示すフラグ値を確認する。
S1311での判定結果がバックアップ有り(YES)ならば、S1312に進む。S1312で、HCPU301は、前提条件で記載した予めバックアップしている内部状態を、ここでは図示しないがSATAブリッジ制御部(サブASIC)112へのセットアップ系拡張コマンドにより再設定処理を行う。続いて、S1313で、HCPU301は、秘密情報の認証及び更新処理を実行する。秘密情報の認証・更新については、既に図11及び図12で説明した処理を簡略化して表している。
その後、S1313でのステータスによる更新判定により、成功(YES)ならばS1315に進む。S1315で、HCPU301は、相互認証処理を実行する。相互認証処理も既に図7及び図8で説明したので内容は省略する。S1316において相互認証が成功(YES)したならば、S1317に進む。S1317で、HCPU301は、初期インストール時にHDD又はSSDの所定の位置に格納してあるマジックナンバーを読み出す。S1318で、HCPU301は、読み取り値と予め保存してあるマジックナンバーとを比較することで正規の暗号鍵とペアのHDD(又はSSD)かどうかの判定を行う。S1318の判定でマジックナンバー読み取りに成功(YES)すると、既に説明したS1307、S1308へと進み、通常運用を開始する。
一方、S1306でのマジックナンバー読み取り判定で失敗(NO)である場合には、S1311に進み、HCPU301は、パラメータの再設定や秘密情報の認証・更新処理を実施する。S1311以降は既に説明したので省略する。また、S1310、S1311、S1314、S1316、及びS1318の判定において失敗(NO)である場合には、S1319に進む。S1319で、HCPU301は、エラー処理を実行する。エラー処理については、一連の処理のリトライ処理など製品運用上のエラーハンドリングをどうするかの問題であり、本発明の本質と関係しないので詳細説明は省略する。
以上説明したように、本実施形態によれば、SATAブリッジ制御部112(サブASIC)以外の部品や回路が故障してボード交換となった場合でも、交換ボードに搭載されるサブASICのインストール処理の有無に関わらず自動修復できる。これによって、故障前に接続されていたHDD又はSSDに保存されている既存データを救済可能となる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101:メインCPU、102:メモリ制御部、103:フラッシュメモリ、104:DRAM、105:LAN-IF部、106:ネットワーク、107:外部HOSTコンピュータ、108:Readaer-IF部、110:画像処理部、111SATAホスト制御部、112:SATAブリッジ制御部、113、114:HDD/SDD、115:パネルIF部、116:パネル装置、117:ビデオ出力IF部、118:印字部、119:メインバス、120:メインコントローラ

Claims (18)

  1. 情報処理装置であって、
    前記情報処理装置の固有の秘密情報が格納された秘密領域を含む複数の領域を有するフラッシュメモリと、
    前記フラッシュメモリが内蔵された第1チップと、
    前記第1チップと異なるチップであり、前記秘密情報を記憶する第2チップと、
    少なくとも前記秘密領域に記憶されたデータのエラーを、領域に対応する手法で検知する検知手段と、
    前記検知手段によって検知されたエラーを、領域に対応する手法で修復する修復手段と、を有し、
    前記修復手段は、前記第2チップに保持された秘密情報を認証して用いることによって、前記第1チップの前記秘密領域に記憶された認証情報を修復する
    ことを特徴とする情報処理装置。
  2. 前記複数の領域は、前記情報処理装置の状態を示す複数の履歴情報が格納される状態領域を含み、
    前記検知手段によって検知されたエラーを、前記第1チップの内部で修復可能か否かを判定する判定手段をさらに備え、
    前記修復手段は、前記判定手段によって前記エラーを前記第1チップの内部で修復可能と判定されると、前記フラッシュメモリの対応する領域における過去に格納された情報を用いて、該領域の情報を修復することを特徴とする請求項1に記載の情報処理装置。
  3. 前記判定手段によって前記エラーを前記チップの内部で修復可能と判定される、前記フラッシュメモリの領域は、リングバッファであることを特徴とする請求項2に記載の情報処理装置。
  4. 前記リングバッファには、情報の書込みを開始する位置に開始フラグが書き込まれ、情報の書込みが終了した位置に終了フラグが書込まれ、
    前記検知手段は、前記開始フラグ及び前記終了フラグが正常に書き込まれているか否かを判断することによって、前記フラッシュメモリのうち、前記リングバッファの領域のエラーを検知することを特徴とする請求項3に記載の情報処理装置。
  5. 前記フラッシュメモリの分割された領域には、前記リングバッファとして、前記情報処理装置がシャットダウンする際に、次回起動後の状態を確定するために必要なパラメータが格納されるパラメータ領域が含まれることを特徴とする請求項3又は4に記載の情報処理装置。
  6. 記検知手段は、誤り検出符号を用いて前記秘密領域のエラーを検知することを特徴とする請求項1乃至5の何れか1項に記載の情報処理装置。
  7. 前記修復手段は、前記第2チップに保持された秘密情報を認証して用いることによって、前記第1チップの前記秘密領域に記憶された前記認証情報を更新することを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記秘密領域は、前記秘密情報を格納する第1領域と、該第1領域の情報を修復すべく前記第2チップから受信した秘密情報を格納する第2領域とを含むことを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
  9. 前記秘密領域に格納された秘密情報を、認証情報とともに前記第2チップに格納するバックアップ手段をさらに備えることを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. 前記フラッシュメモリの分割された領域には、前記検知手段及び前記修復手段の処理に関連するプログラムがデジタル署名を付与して格納されるプログラム領域が含まれ、
    前記検知手段は、前記デジタル署名を用いて前記プログラム領域のエラーを検知することを特徴とする請求項1乃至9の何れか1項に記載の情報処理装置。
  11. 前記修復手段は、前記プログラム領域のエラーを修復する際に、前記第2チップに保持されたプログラムを、デジタル署名を用いて認証しつつ利用することによって、該プログラム領域に格納されたプログラムを修復することを特徴とする請求項10に記載の情報処理装置。
  12. 前記プログラム領域は、前記プログラムを格納する第3領域と、該第3領域のプログラムを修復すべく前記第2チップから受信したプログラムを格納する第4領域とを含むことを特徴とする請求項11に記載の情報処理装置。
  13. 情報処理装置であって、
    第1制御回路と、
    前記第1制御回路によって制御されるとともに、格納する情報の特徴に応じて複数の領域に分割した内蔵フラッシュメモリを備える第2制御回路と、
    前記内蔵フラッシュメモリの各領域に格納されたデータのエラーを、領域に対応する手法で検知する検知手段と、
    前記検知手段によって検知されたエラーを、領域に対応する手法で修復する修復手段と
    を備え
    前記検知手段及び前記修復手段は、前記内蔵フラッシュメモリの領域に応じて、前記第2制御回路のみで実現されるか、又は、前記第1制御回路及び前記第2制御回路で実現されるかが切り替えられることを特徴とする情報処理装置。
  14. 前記第1制御回路及び前記第2制御回路は、同一のボードに実装され、
    前記ボードと接続された外部記憶装置に、個体別にユニークな秘密情報から生成された暗号鍵で暗号化されたマジックナンバーを格納する手段をさらに備え、
    前記検知手段及び前記修復手段は、前記ボードの故障により交換されると、前記外部記憶装置に格納された前記マジックナンバーを用いて処理を実行することを特徴とする請求項13に記載の情報処理装置。
  15. 情報処理装置の固有の秘密情報が格納された秘密領域を含む複数の領域を有するフラッシュメモリと、前記フラッシュメモリが内蔵された第1チップと、前記第1チップと異なるチップであり、前記秘密情報を記憶する第2チップと、を備える情報処理装置の制御方法であって、
    前記制御方法は、
    前記情報処理装置の検知手段が、少なくとも前記秘密領域に記憶されたデータエラーを、領域に対応する手法で検知する検知工程と、
    前記情報処理装置の修復手段が、前記検知工程で検知されたエラーを、領域に対応する手法で修復する修復工程と
    を含み、
    前記修復工程では、前記第2チップに保持された秘密情報を認証して用いることによって、前記第1チップの前記秘密領域に記憶された認証情報を修復することを特徴とする情報処理装置の制御方法。
  16. 第1制御回路と、前記第1制御回路によって制御されるとともに、格納する情報の特徴に応じて複数の領域に分割した内蔵フラッシュメモリを備える第2制御回路と、を備える情報処理装置の制御方法であって、
    前記制御方法は、
    前記情報処理装置の検知手段が、前記内蔵フラッシュメモリの各領域に格納されたデータのエラーを、領域に対応する手法で検知する検知工程と、
    前記情報処理装置の修復手段が、前記検知工程で検知されたエラーを、領域に対応する手法で修復する修復工程と
    を含み、
    前記検知工程及び前記修復工程は、前記内蔵フラッシュメモリの領域に応じて、前記第2制御回路のみで実行されるか、又は、前記第1制御回路及び前記第2制御回路で実行されるかが切り替えられることを特徴とする情報処理装置の制御方法。
  17. 情報処理装置の固有の秘密情報が格納された秘密領域を含む複数の領域を有するフラッシュメモリと、前記フラッシュメモリが内蔵された第1チップと、前記第1チップと異なるチップであり、前記秘密情報を記憶する第2チップと、を備える情報処理装置の制御方法における各工程をコンピュータに実行させるためのプログラムであって、
    前記制御方法は、
    前記情報処理装置の検知手段が、少なくとも前記秘密領域に記憶されたデータエラーを、領域に対応する手法で検知する検知工程と、
    前記情報処理装置の修復手段が、前記検知工程で検知されたエラーを、領域に対応する手法で修復する修復工程と
    を含み、
    前記修復工程では、前記第2チップに保持された秘密情報を認証して用いることによって、前記第1チップの前記秘密領域に記憶された認証情報を修復することを特徴とするプログラム。
  18. 第1制御回路と、前記第1制御回路によって制御されるとともに、格納する情報の特徴に応じて複数の領域に分割した内蔵フラッシュメモリを備える第2制御回路と、を備える情報処理装置の制御方法における各工程をコンピュータに実行させるためのプログラムであって、
    前記制御方法は、
    前記情報処理装置の検知手段が、前記内蔵フラッシュメモリの各領域に格納されたデータのエラーを、領域に対応する手法で検知する検知工程と、
    前記情報処理装置の修復手段が、前記検知工程で検知されたエラーを、領域に対応する手法で修復する修復工程と
    を含み、
    前記検知工程及び前記修復工程は、前記内蔵フラッシュメモリの領域に応じて、前記第2制御回路のみで実行されるか、又は、前記第1制御回路及び前記第2制御回路で実行されるかが切り替えられることを特徴とするプログラム。
JP2017181474A 2017-09-21 2017-09-21 情報処理装置、その制御方法、及びプログラム Active JP7065578B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017181474A JP7065578B2 (ja) 2017-09-21 2017-09-21 情報処理装置、その制御方法、及びプログラム
US16/131,474 US10720225B2 (en) 2017-09-21 2018-09-14 Information processing apparatus, control method thereof, and storage mediumMD

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017181474A JP7065578B2 (ja) 2017-09-21 2017-09-21 情報処理装置、その制御方法、及びプログラム

Publications (3)

Publication Number Publication Date
JP2019057156A JP2019057156A (ja) 2019-04-11
JP2019057156A5 JP2019057156A5 (ja) 2020-10-22
JP7065578B2 true JP7065578B2 (ja) 2022-05-12

Family

ID=65721497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017181474A Active JP7065578B2 (ja) 2017-09-21 2017-09-21 情報処理装置、その制御方法、及びプログラム

Country Status (2)

Country Link
US (1) US10720225B2 (ja)
JP (1) JP7065578B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019159716A1 (ja) * 2018-02-14 2019-08-22 日立オートモティブシステムズ株式会社 電子制御装置
JP7018864B2 (ja) * 2018-10-15 2022-02-14 ルネサスエレクトロニクス株式会社 半導体装置及びその制御方法
CN111511109B (zh) * 2019-01-30 2021-11-23 京东方科技集团股份有限公司 柔性电路板及制作方法、电子装置模组及电子装置
US11500489B2 (en) 2019-01-30 2022-11-15 Chengdu Boe Optoelectronics Technology Co., Ltd. Flexible circuit board and manufacturing method, display device, circuit board structure and display panel thereof
JP7307883B2 (ja) * 2019-08-26 2023-07-13 大日本印刷株式会社 基板セット及びセキュアエレメント
US20230015273A1 (en) * 2019-12-17 2023-01-19 Nippon Telegraph And Telephone Corporation Verification information revising device, verification information revising method, and verification information revising program
US11869539B2 (en) 2020-05-11 2024-01-09 Sony Group Corporation Information processing device and information processing method
CN112053737B (zh) * 2020-08-21 2022-08-26 国电南瑞科技股份有限公司 一种在线并行处理的软错误实时检错与恢复方法及系统
JP2022135443A (ja) * 2021-03-05 2022-09-15 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140210A (ja) 2000-10-31 2002-05-17 Ricoh Co Ltd 画像形成システムとそのログ記憶方法及び出力方法ならびに記録媒体
JP2004280284A (ja) 2003-03-13 2004-10-07 Sony Corp 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法
JP2007122640A (ja) 2005-10-31 2007-05-17 Renesas Technology Corp 記憶装置
JP2010128697A (ja) 2008-11-26 2010-06-10 Toshiba Corp メモリシステム
JP2010182270A (ja) 2009-02-09 2010-08-19 Toshiba Corp 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法
JP2011070675A (ja) 2009-09-28 2011-04-07 Samsung Sdi Co Ltd バッテリーパック、及びデータフラッシュの動作の制御方法
JP2014096771A (ja) 2012-11-12 2014-05-22 Renesas Electronics Corp 半導体装置及び情報処理システム
JP2014194682A (ja) 2013-03-29 2014-10-09 Oki Electric Ind Co Ltd 情報処理装置およびその処理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8873318B2 (en) * 2011-07-20 2014-10-28 Taiwan Semiconductor Manufacturing Company, Ltd. Mechanisms for built-in self repair of memory devices using failed bit maps and obvious repairs
JP6266289B2 (ja) 2013-09-30 2018-01-24 クラリオン株式会社 プログラム実行制御システム
JPWO2015174062A1 (ja) * 2014-05-16 2017-04-20 日本電気株式会社 情報処理装置、情報処理方法およびコンピュータ・プログラム
US10210089B2 (en) * 2015-06-18 2019-02-19 Nxp Usa, Inc. Shared buffer management for variable length encoded data
JP6432490B2 (ja) * 2015-11-20 2018-12-05 トヨタ自動車株式会社 車載制御装置、及び、車載記録システム
US9900310B2 (en) * 2016-02-24 2018-02-20 Intel Corporation Local verification of code authentication

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140210A (ja) 2000-10-31 2002-05-17 Ricoh Co Ltd 画像形成システムとそのログ記憶方法及び出力方法ならびに記録媒体
JP2004280284A (ja) 2003-03-13 2004-10-07 Sony Corp 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法
JP2007122640A (ja) 2005-10-31 2007-05-17 Renesas Technology Corp 記憶装置
JP2010128697A (ja) 2008-11-26 2010-06-10 Toshiba Corp メモリシステム
JP2010182270A (ja) 2009-02-09 2010-08-19 Toshiba Corp 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法
JP2011070675A (ja) 2009-09-28 2011-04-07 Samsung Sdi Co Ltd バッテリーパック、及びデータフラッシュの動作の制御方法
JP2014096771A (ja) 2012-11-12 2014-05-22 Renesas Electronics Corp 半導体装置及び情報処理システム
JP2014194682A (ja) 2013-03-29 2014-10-09 Oki Electric Ind Co Ltd 情報処理装置およびその処理方法

Also Published As

Publication number Publication date
JP2019057156A (ja) 2019-04-11
US10720225B2 (en) 2020-07-21
US20190088350A1 (en) 2019-03-21

Similar Documents

Publication Publication Date Title
JP7065578B2 (ja) 情報処理装置、その制御方法、及びプログラム
RU2628325C2 (ru) Система на кристалле для выполнения безопасной начальной загрузки, использующее ее устройство формирования изображения и способ ее использования
US8789137B2 (en) Data processing device
US8310698B2 (en) Image forming apparatus and activating method thereof
CN102262721B (zh) 用于独立代理的数据加密转换
US10628333B2 (en) Information processing apparatus, method of controlling the same, and storage medium
WO2005124505A1 (en) Enhancing trusted platform module performance
WO2015087426A1 (ja) ストレージ装置及びストレージ装置の制御方法
JP2006252451A (ja) ストレージシステム
JP2020177539A (ja) 情報処理装置、及びその制御方法
JP6719894B2 (ja) 機能デバイス、制御装置
US10216595B2 (en) Information processing apparatus, control method for the information processing apparatus, and recording medium
US8429423B1 (en) Trusted platform modules
JP2007282064A (ja) データ処理装置、データ処理方法、記憶媒体、プログラム
WO2007059701A1 (fr) Procede de cryptage systeme par micro-ordinateur mono-circuit polyvalent d'appoint
US11182483B2 (en) Information processing apparatus and non-transitory computer readable medium
US10402346B2 (en) Information processing apparatus capable of backing up and restoring key for data encryption and method for controlling the same
JP2008017119A (ja) 記録データ処理装置
US20120054501A1 (en) Image processing apparatus
CN107368743B (zh) 信息处理设备和信息处理方法
JP2022182837A (ja) 情報処理装置、及びその制御方法
US20230103698A1 (en) Information processing apparatus and control method therefor
JP2010122717A (ja) サーバ管理システム
JP3971754B2 (ja) 数値制御装置
JP2023032874A (ja) 情報処理装置、及びその制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200910

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200910

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220426

R151 Written notification of patent or utility model registration

Ref document number: 7065578

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151