(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-23
(45)【発行日】2023-03-31
(54)【発明の名称】情報処理装置およびストレージ
(51)【国際特許分類】
G06F 21/51 20130101AFI20230324BHJP
G06F 11/36 20060101ALI20230324BHJP
【FI】
G06F21/51
G06F11/36 160
(21)【出願番号】P 2020040206
(22)【出願日】2020-03-09
【審査請求日】2021-12-03
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(73)【特許権者】
【識別番号】317011920
【氏名又は名称】東芝デバイス&ストレージ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】荒牧 康人
(72)【発明者】
【氏名】安田 進
(72)【発明者】
【氏名】岩田 達明
【審査官】局 成矢
(56)【参考文献】
【文献】特許第4814993(JP,B2)
【文献】特開2018-195329(JP,A)
【文献】特開平10-333939(JP,A)
【文献】特開2015-036847(JP,A)
【文献】国際公開第2012/049750(WO,A1)
【文献】特開2017-033248(JP,A)
【文献】特開2016-038779(JP,A)
【文献】特開2014-048866(JP,A)
【文献】米国特許出願公開第2017/0249456(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/51
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
第1プログラムと、第2プログラムと、前記第2プログラムのデジタル署名と、がロードされる揮発性の第1メモリと、
第3プログラムおよび公開鍵が格納された書き換え不可能な不揮発性の第2メモリと、
前記第1プログラムの実行中に特定の条件が成立した場合に、前記デジタル署名と前記公開鍵とに基づく前記第2プログラムの検証を前記第2メモリに格納された前記第3プログラムに従って実行し、検証結果が合格である場合に、前記第1プログラムの解析を前記第2プログラムに従って実行し、前記検証結果が不合格である場合に、前記第1プログラムの解析を実行しない、プロセッサと、
を備え
、
磁気ディスクをさらに備え、
前記第1プログラムは、ホストからの要求に応じた前記磁気ディスクへのアクセス制御を前記プロセッサに実行させるファームウェアである、
情報処理装置。
【請求項2】
前記第2プログラムと、前記デジタル署名と、が格納された書き換え可能な不揮発性の第3メモリをさらに備え、
前記プロセッサは、前記特定の条件が成立した場合に、前記第2プログラムと、前記デジタル署名と、を前記第3プログラムに従って前記第3メモリから前記第1メモリにロードする、
請求項1に記載の情報処理装置。
【請求項3】
第1プログラムと、第2プログラムと、前記第2プログラムのデジタル署名と、がロードされる揮発性の第1メモリと、
第3プログラムおよび公開鍵が格納された書き換え不可能な不揮発性の第2メモリと、
前記第1プログラムの実行中に特定の条件が成立した場合に、前記デジタル署名と前記公開鍵とに基づく前記第2プログラムの検証を前記第2メモリに格納された前記第3プログラムに従って実行し、検証結果が合格である場合に、前記第1プログラムの解析を前記第2プログラムに従って実行し、前記検証結果が不合格である場合に、前記第1プログラムの解析を実行しない、プロセッサと、
を備え、
ホストが接続される第1インタフェースと、
調査コンピュータが接続される第2インタフェースと、
割り込みコントローラと、
をさらに備え、
前記割り込みコントローラは、前記調査コンピュータが前記第2インタフェースに接続されるに応じて割り込み要求を生成し、
前記特定の条件が成立することは、前記割り込み要求が生成されたことである、
情報処理装置。
【請求項4】
前記第2プログラムと、前記デジタル署名と、が格納された書き換え可能な不揮発性の第3メモリをさらに備え、
前記プロセッサは、前記特定の条件が成立した場合に、前記第2プログラムと、前記デジタル署名と、を前記第3プログラムに従って前記第3メモリから前記第1メモリにロードする、
請求項3に記載の情報処理装置。
【請求項5】
磁気ディスクをさらに備え、
前記第1プログラムは、ホストからの要求に応じた前記磁気ディスクへのアクセス制御を前記プロセッサに実行させるファームウェアである、
請求項
3または4に記載の情報処理装置。
【請求項6】
前記特定の条件は、予め設定された時間周期が経過することである、
請求項1
または2に記載の情報処理装置。
【請求項7】
前記特定の条件は、前記磁気ディスクへのアクセス量に関する条件である、
請求項
1または2に記載の情報処理装置。
【請求項8】
前記第2メモリには、前記第2メモリ内の前記第3プログラムの位置を示すアドレス値が格納され、
前記プロセッサは、前記特定の条件が成立した場合に、前記第2メモリに格納された前記アドレス値を参照することによって前記第3プログラムの位置を特定する、
請求項1から
7の何れか一項に記載の情報処理装置。
【請求項9】
前記第2メモリは、IPL(Initial Program Loader)が先頭位置に格納された第1のバンクと、前記第3プログラムが先頭位置に格納された第2のバンクと、を備え、
前記プロセッサは、前記情報処理装置のパワーオン時には前記第1のバンクの先頭位置に格納された前記IPLに従って前記第1プログラムのロードを実行し、前記特定の条件が成立した場合には前記第2のバンクの先頭位置に格納された前記第3プログラムを実行するように構成されている、
請求項1から
7の何れか一項に記載の情報処理装置。
【請求項10】
請求項1から9の何れか一項に記載の情報処理装置を備えたストレージ。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、情報処理装置に関する。
【背景技術】
【0002】
従来、コンピュータプログラム(以降、プログラムと表記する)に従って動作する情報処理装置において、プログラムが、例えば暴走状態や無限ループ状態などの、正規の動作の実現が困難な状態になる場合がある。この状態を障害状態と表記する。障害状態は、プログラムのバグなどの内的要因によっても起こり得るし、プログラムが格納されたメモリの部分破壊またはハードウェアの障害などの外的要因によっても起こり得る。
【0003】
情報処理装置の主たる動作を司るプログラムが障害状態になった場合、情報処理装置は、専用の解析プログラムを、割り込みに応じて起動する技術がある。情報処理装置は、解析プログラムに従って、情報処理装置の内部に蓄積されたログを収集したり、情報処理装置が具備するメモリの内容を収集したりすることができる。
【0004】
しかしながら、解析プログラムは、改竄されたり、壊れたりしている場合があり得る。また、解析プログラムの位置を指すベクタテーブルの改竄により、解析プログラムの替わりに不正なプログラム(例えば情報処理装置を乗っ取るためのプログラム)が起動されることがあり得る。これらの場合、解析プログラムに期待された本来の動作を実現することは困難である。換言すると、セキュアにプログラムを解析することが困難である。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2009-9372号公報
【文献】特許第5049288号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
一つの実施形態は、可及的にセキュアにプログラムの解析を行うことができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
一つの実施形態によれば、情報処理装置は、揮発性の第1メモリと、書き換え不可能な不揮発性の第2メモリと、プロセッサと、を備える。第1メモリには、第1プログラムと、第2プログラムと、第2プログラムのデジタル署名と、がロードされる。第2メモリには、第3プログラムおよび公開鍵が格納されている。プロセッサは、第1プログラムの実行中に特定の条件が成立した場合に、デジタル署名と公開鍵とに基づく第2プログラムの検証を第2メモリに格納された第3プログラムに従って実行する。検証結果が合格である場合に、プロセッサは、第1プログラムの解析を第2プログラムに従って実行する。検証結果が不合格である場合に、プロセッサは、第1プログラムの解析を実行しない。情報処理装置は、磁気ディスクをさらに備える。第1プログラムは、ホストからの要求に応じた磁気ディスクへのアクセス制御をプロセッサに実行させるファームウェアである。
【図面の簡単な説明】
【0008】
【
図1】実施形態にかかる情報処理装置が適用された磁気ディスク装置のハードウェア構成の一例を示す模式的な図。
【
図2】実施形態にかかる情報処理装置が適用された磁気ディスク装置のいくつかの特徴を説明するための模式的な図。
【
図3】実施形態にかかる情報処理装置が適用された磁気ディスク装置を製造する際の製造者による処理の一例を示すフローチャート。
【
図4】実施形態にかかる情報処理装置が適用された磁気ディスク装置のパワーオン時の動作の一例を示すフローチャート。
【
図5】実施形態にかかる情報処理装置が適用された磁気ディスク装置が割り込み要求を生成する動作の一例を示すフローチャート。
【
図6】実施形態にかかる情報処理装置が適用された磁気ディスク装置の、割り込み要求が生成された際の動作の一例を示すフローチャート。
【
図7】実施形態の変形例1にかかるマスクROMの構成を示す模式的な図。
【
図8】実施形態の変形例2にかかる起動方法を示すフローチャート。
【
図9】実施形態の変形例2にかかる別の起動方法を示すフローチャート。
【発明を実施するための形態】
【0009】
以下では、一例として、実施形態にかかる情報処理装置が適用された磁気ディスク装置について説明する。なお、実施形態にかかる情報処理装置を適用できる装置は磁気ディスク装置だけに限定されない。実施形態にかかる情報処理装置は、コンピュータプログラムが格納されるメモリと、当該コンピュータプログラムを実行するプロセッサと、を備えた任意の装置に適用され得る。以下に添付図面を参照して、実施形態にかかる情報処理装置が適用された磁気ディスク装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0010】
(実施形態)
図1は、実施形態にかかる情報処理装置が適用された磁気ディスク装置のハードウェア構成の一例を示す模式的な図である。磁気ディスク装置1は、例えばサーバであるホスト2と接続されている。磁気ディスク装置1は、ホスト2から送られてくるデータを記憶するストレージとして機能する。なお、ホスト2は、サーバだけに限定されない。
【0011】
ホスト2と磁気ディスク装置1とは、所定の規格のインタフェースによって接続されている。インタフェースは例えば、SAS(Serial Attached Small Computer System Interface)またはSATA(Serial Advanced Technology Attachment)である。接続するインタフェースが準拠する規格はこれらに限定されない。
【0012】
磁気ディスク装置1は、外部I/F(Interface)コントローラ11、CPU(Central Processing Unit)12、RSA(Rivest-Shamir-Adleman cryptosystem)回路13、UART(Universal Asynchronous Receiver/Transmitter)14、割り込みコントローラ15、RAM(Random Access memory)16、マスクROM17、OTP(One Time Programmable)18、デバイスコントローラ19、FROM(Flash Read Only Memory)20、SPI(Serial Peripheral Interface)21、第1バス22、第2バス23、および磁気ディスク24を備えている。
【0013】
磁気ディスク24は、データを記憶することができる磁性体を表面に有しているディスクである。例えば、磁気ディスク24の径方向には同心円の形状の複数のトラックが所定のピッチで設けられている。各トラックの周上には多数のセクタが連続的に形成されている。各セクタは、データの書き換えが自在に構成されている。それぞれ多数のセクタを有する複数のトラックによって、データの記録が可能な記録面が構成される。つまり、磁気ディスク24は、大容量を有する、書き換え可能な不揮発性メモリである。
【0014】
なお、
図1では、磁気ディスク24に対するデータの書き込み/読み出しを行う磁気ヘッド、磁気ヘッドを支持するアクチュエータアーム、アクチュエータアームを駆動するヴォイスコイルモータ、磁気ディスク24を回転させるスピンドルモータ、などの図示が省略されている。
【0015】
外部I/Fコントローラ11、CPU12、RSA回路13、UART14、割り込みコントローラ15、RAM16、マスクROM17、OTP18、デバイスコントローラ19、およびSPI21は、例えば、コントローラ基板10に実装されている。なお、コントローラ基板10に実装される要素はこれらに限定されない。
【0016】
第1バス22は、ホスト2から送られてきたデータ(即ちユーザデータ)の転送に利用される。第2バス23は、ホスト2からの要求に応じた磁気ディスク24へのアクセス制御のためのコマンド、信号、情報、などの転送に利用される。
【0017】
外部I/Fコントローラ11、RAM16、および磁気ディスク24は、第1バス22に接続されている。また、CPU12、UART14、OTP18、RSA回路13、RAM16、マスクROM17、SPI21、およびデバイスコントローラ19は、第2バス23に接続されている。
【0018】
外部I/Fコントローラ11は、ホスト2との通信を行うインタフェース装置である。外部I/Fコントローラ11は、ホスト2から受信した要求をCPU12に転送することができる。外部I/Fコントローラ11は、ホスト2から送られてきたユーザデータを、RAM16にバッファすることができる。外部I/Fコントローラ11は、磁気ディスク24からRAM16に読み出されたユーザデータをホスト2に転送することができる。なお、外部I/Fコントローラ11は、実施形態にかかる第1インタフェースに相当する。
【0019】
CPU12は、種々のプログラムを実行することができるプロセッサである。CPU12は、プログラムに応じた機能を実現する。
RSA回路13は、公開鍵暗号の1つであるRSAによって暗号化されたデータを復号化する。実施形態では、RSA回路13は、デジタル署名を用いた検証に使用される。
UART14は、外部のコンピュータが接続され得るインタフェース装置である。なお、UART14は、実施形態にかかる第2インタフェースに相当する。
【0020】
割り込みコントローラ15は、特定の事象が発生したときに割り込み要求を生成する。割り込みコントローラ15は、割り込み要求をCPU12に通知する。
【0021】
実施形態では、割り込みコントローラ15は、UART14に調査PC(Personal Computer)3が接続されたことを検知すると、割り込み要求を生成する。調査PC3は、プログラムを解析するためのコンピュータである。
【0022】
UART14に調査PC3が接続されたことを割り込みコントローラ15が検知する仕組みは、任意に構成され得る。一例では、割り込みコントローラ15は、調査PC3とUART14とが通電されたことで接続を検知する。別の例では、割り込みコントローラ15は、調査PC3とUART14との間でコマンドの送受信が開始されたことで、接続を検知する。
【0023】
RAM16は、揮発性メモリである。RAM16は、各種プログラムがロードされる領域をCPU12に提供する。その他、RAM16は、ホスト2と磁気ディスク24との間で転送されるユーザデータのバッファとして機能する。なお、RAM16は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成され得る。RAM16を構成するメモリはこれらに限定されない。
【0024】
マスクROM17は、書き換え不可能な不揮発性メモリである。マスクROM17の内容は、工場において磁気ディスク装置1のハードウェアを製造する際に固定される。
【0025】
OTP18は、一度だけデータを書き込むことができ、その後は、データの更新ができない不揮発性メモリである。OTP18の内容は、磁気ディスク装置1のハードウェアが製造された後に固定され得る。
【0026】
デバイスコントローラ19は、磁気ディスク24に対して磁気ヘッドを介したアクセス、即ちデータの書き込みおよび読み出しができるコントローラである。デバイスコントローラ19は、リードライトチャネルとも称され得る。デバイスコントローラ19は、RAM16にバッファされたユーザデータを磁気ディスク24に書き込むことができる。また、デバイスコントローラ19は、磁気ディスク24から読み出されたユーザデータをRAM16に送ることができる。
【0027】
FROM20は、書き換え可能な不揮発性メモリである。
SPI21は、FROM20に対してシリアル通信でアクセスするためのインタフェース装置である。
【0028】
ここで、CPU12およびRSA回路13は、実施形態にかかるプロセッサに相当する。しかしながら、RSA回路13は必ずしもプロセッサに含まれなくてもよい。
また、RAM16は、実施形態にかかる第1メモリに相当する。マスクROM17およびOTP18は、実施形態にかかる第2メモリに相当する。
また、FROM20または磁気ディスク24は、実施形態にかかる第3メモリに相当する。
また、第2メモリのうちのマスクROM17は、実施形態にかかる第4メモリに相当する。第2メモリのうちのOTP18は、実施形態にかかる第5メモリに相当する。
【0029】
図2は、実施形態にかかる情報処理装置が適用された磁気ディスク装置1のいくつかの特徴を説明するための模式的な図である。揮発性メモリ30は、RAM16に相当する。不揮発性メモリ40は、FROM20または磁気ディスク24に相当する。
不揮発性メモリ40には、メインプログラム100と、解析プログラム200と、解析プログラム200のデジタル署名201と、が予め格納されている。
【0030】
メインプログラム100は、磁気ディスク装置1の主たる動作を司るプログラムである。つまり、メインプログラム100は、ホスト2からの要求に応じた磁気ディスク24へのアクセス制御をCPU12に実行させるファームウェアである。
解析プログラム200は、メインプログラム100の解析をCPU12に実行させるプログラムである。
デジタル署名201は、解析プログラム200に対して秘密鍵を用いて符号化(暗号化)することで生成されたデータである。暗号化は、RSA方式による。
【0031】
なお、メインプログラム100、解析プログラム200、およびデジタル署名201は、揮発性メモリ30にロードされる。以下、揮発性メモリ30にロードされた各プログラムおよびデジタル署名を、メインプログラム100a、解析プログラム200a、およびデジタル署名201aと表記する。CPU12は、メインプログラム100aに従ってホスト2からの要求に応じた磁気ディスク24へのアクセス制御を実現する。また、CPU12は、解析プログラム200aに従って、メインプログラム100aの解析を行う。
【0032】
マスクROM17には、IPL(Initial Program Loader)500と、署名チェックプログラム300と、が予め書き込まれている。
IPL500は、磁気ディスク装置1のパワーオン時にメインプログラム100を不揮発性メモリ40から揮発性メモリ30にロードするためのプログラムである。
【0033】
署名チェックプログラム300は、主に2つの処理をCPU12に実行させる。
1つ目の処理は、解析プログラム200とデジタル署名201とを不揮発性メモリ40から揮発性メモリ30にロードする。
2つ目の処理は、解析プログラム200aの真正性(authenticity)を、デジタル署名201aと、公開鍵202とに基づいて検証する。
【0034】
OTP18には、公開鍵202と、署名チェックプログラム300の位置を示すアドレス値400と、が予め書き込まれている。
【0035】
CPU12は、磁気ディスク装置1のパワーオン時にはIPL500に従って、メインプログラム100を不揮発性メモリ40から揮発性メモリ30にロードして、メインプログラム100aを起動する(S1)。
【0036】
なお、CPU12は、メインプログラム100aの実行中に、動作状態を示す情報を適時、ログ600として不揮発性メモリ40に記録することができる。動作状態を示す情報は、例えば、環境温度、磁気ディスク装置1が受けた振動、パワーオン回数、パワーオン時間、エラー発生回数、などを含み得る。
【0037】
CPU12がメインプログラム100aの実行中に、内的要因または外的要因によってメインプログラム100aが障害状態になる場合がある。ユーザは、メインプログラム100aが障害状態になった可能性を認識すると、メインプログラム100aの解析のために、磁気ディスク装置1に調査PC3を接続することができる。調査PC3は、磁気ディスク装置1がホスト2に接続され、かつ通電された状態で、USART14に接続され得る。
【0038】
割り込みコントローラ15は、UART14に調査PC3が接続されたことを検知すると、割り込み要求を生成してCPU12に送る(S2)。割り込み要求を受信したCPU12は、アドレス値400を参照することによって署名チェックプログラム300の位置を特定する(S3)。そして、CPU12は、署名チェックプログラム300を起動する(S4)。
【0039】
S3およびS4では、メインプログラム100aに属する現在実行中の命令の次に実行される命令が格納された位置を示すアドレス値が、スタックポインタが示す位置に退避される。このとき、汎用レジスタの値も退避される。その後、プログラムカウンタにアドレス値400がセットされることで、メインプログラム100aから署名チェックプログラム300に制御が移る。メインプログラム100aは、一時停止された状態のまま維持される。
【0040】
続いて、CPU12は、署名チェックプログラム300に従って、解析プログラム200およびデジタル署名201を不揮発性メモリ40から揮発性メモリ30にロードする(S5)。続いて、CPU12は、署名チェックプログラム300に従って、公開鍵202と、デジタル署名201aと、に基づいて、解析プログラム200aの真正性を検証する(S6)。
【0041】
S6の処理では、CPU12は、RSA回路13に、解析プログラム200aの検証を指示し、RSA回路13は検証を実施する。または、CPU12がS6の処理を全て実行してもよい。
【0042】
デジタル署名201は、解析プログラム200のハッシュ値を秘密鍵を用いて符号化することによって生成されている。S6では、プロセッサ(CPU12またはRSA回路13)は、デジタル署名201aを公開鍵202を用いて復号化することによってハッシュ値を復元するとともに、解析プログラム200aのハッシュ値を演算する。
【0043】
公開鍵202が符号化に用いた秘密鍵と対応し、かつ、解析プログラム200aおよびデジタル署名201aの何れも正常であれば、復号化によって得られたハッシュ値と、解析プログラム200aから得られたハッシュ値と、が一致する。よって、解析プログラム200aは真正であると判断される。つまり、検証結果は合格(pass)とされる。
【0044】
なお、解析プログラム200aが正常とは、解析プログラム200aが改竄も破壊もされていないことをいう。解析プログラム200aが異常とは、解析プログラム200aが改竄または破壊されていることをいう。
【0045】
公開鍵202が当該秘密鍵と対応しないか、解析プログラム200aまたはデジタル署名201aが異常である場合、双方のハッシュ値は互いに異なる。よって、解析プログラム200aは真正ではないと判断される。つまり、検証結果は不合格(fail)とされる。
【0046】
検証結果が合格である場合、CPU12は、解析プログラム200aによる制御の下で解析のための動作を実現する。具体的には、CPU12は、調査PC3からのコマンドに応じて、不揮発性メモリ40からログ600を収集したり、揮発性メモリ30の内容(具体的にはメインプログラム100aの一部または全部)を収集したりすることができる(S7)。
【0047】
解析中、メインプログラム100aは、割り込み発生時から一時停止状態で維持されている。よって、メインプログラム100aに改竄や破壊があれば、CPU12は、そのような箇所の情報を収集することができる。
【0048】
CPU12は、収集した情報を調査PC3からのコマンドに応じて調査PC3に送信したりすることができる。CPU12は、調査PC3からUART14を介して終了コマンドを受信すると、解析プログラム200aに基づいた解析を終了する。
【0049】
解析終了後の処理は、任意に構成され得る。一例では、解析プログラム200aからメインプログラム100aに制御が復帰してもよい。具体的には、先に退避されていたアドレス値が、プログラムカウンタにセットされる。また、退避されていた汎用レジスタの値も復帰される。これによって、解析プログラム200aからメインプログラム100aに制御が復帰する。
別の例では、ユーザは、磁気ディスク装置1への電力の供給を遮断することで、磁気ディスク装置1をパワーオフしてもよい。
【0050】
検証結果が不合格である場合、CPU12は、解析プログラム200aに従った動作を実行しない。一例では、制御が署名チェックプログラム300からメインプログラム100aに復帰する。または、CPU12は、署名チェックプログラム300に従って、調査PC3に解析プログラム200aが異常である旨を通知してもよい。ユーザは、当該通知を認識すると、磁気ディスク装置1への電力の供給を遮断することで、磁気ディスク装置1をパワーオフしてもよい。
【0051】
このように、実施形態によれば、割り込みが発生した場合に、解析プログラム200aに対し、デジタル署名201aを用いた真正性の検証が実施される。検証結果が合格である場合、解析プログラム200aが実行される。検証結果が不合格である場合、解析プログラム200aは実行されない。よって、解析プログラム200aが正常である場合にのみ、メインプログラム100aの解析を進めることが可能となる。
【0052】
さらに、検証を行うための署名チェックプログラム300および公開鍵202は、書き換え不可能なマスクROM17またはOTP18に格納されている。従って、署名チェックプログラム300や公開鍵202の改竄は不可能である。よって、解析プログラム200aの検証をセキュアに実行することが可能である。
【0053】
上記の2つの理由により、実施形態によれば、セキュアにメインプログラム100aの解析を行うことが可能となる。
【0054】
なお、メインプログラム100、101aは、実施形態にかかる第1プログラムに相当する。解析プログラム200、200aは、実施形態にかかる第2プログラムに相当する。署名チェックプログラム300は、実施形態にかかる第3プログラムに相当する。
【0055】
次に、磁気ディスク装置1の実施形態にかかる情報処理装置としての動作を詳細に説明する。
図3は、実施形態にかかる情報処理装置が適用された磁気ディスク装置1を製造する際の製造者による処理の一例を示すフローチャートである。
【0056】
まず、製造者は、マスクROM17にIPL500と署名チェックプログラム300とを書き込む(S101)。続いて、製造者は、解析プログラム200を不揮発性メモリ40に書き込む(S102)。また、製造者は、デジタル署名201を所定の秘密鍵を用いて生成して、当該デジタル署名201を不揮発性メモリ40に書き込む(S103)。
【0057】
続いて、製造者は、署名チェックプログラム300の位置を示すアドレス値400と、所定の秘密鍵に対応した公開鍵202と、をOTP18に書き込む(S104)。
【0058】
なお、IPL500および署名チェックプログラム300はマスクROM17に格納されることとしているので、S101の処理は、磁気ディスク装置1のハードウェアの製造時に実施される。
【0059】
これに対して、アドレス値400および公開鍵202は、OTP18に格納され、解析プログラム200およびデジタル署名201は、不揮発性メモリ40に格納されることとしている。よって、S102~S104の処理は、ハードウェアの製造が終わった後に実施される。
【0060】
つまり、署名チェックプログラム300はハードウェアの製造時に書き込まれ、公開鍵202、解析プログラム200、およびデジタル署名201は、ハードウェアの製造後に書き込まれ得る。したがって、多数の磁気ディスク装置1が製造される場合、署名チェックプログラム300を全ての磁気ディスク装置1で共通化する一方、公開鍵202とデジタル署名201との組み合わせを装置単位で異ならせるといったことが可能となる。なお、公開鍵202とデジタル署名201との組み合わせは、全ての磁気ディスク装置1で共通化され得ることは言うまでもない。
【0061】
図4は、実施形態にかかる情報処理装置が適用された磁気ディスク装置1のパワーオン時の動作の一例を示すフローチャートである。
パワーオン時には、CPU12は、IPL500に従って、メインプログラム100を不揮発性メモリ40から揮発性メモリ30にロードする(S201)。そして、CPU12は、メインプログラム100aに基づく磁気ディスク装置1の制御を開始する(S202)。つまり、CPU12は、ホスト2からの要求に応じた磁気ディスク24へのアクセス制御を開始する。
【0062】
図5は、実施形態にかかる情報処理装置が適用された磁気ディスク装置1が割り込み要求を生成する動作の一例を示すフローチャートである。
ユーザが、磁気ディスク装置1の挙動が通常と異なることを察知するなどによって、メインプログラム100aが障害状態になった可能性を認識すると(S301)、ユーザは、調査PC3をUART14に接続する(S302)。割り込みコントローラ15は、調査PC3がUART14に接続されたことを検知するに応じて、割り込み要求を生成し、CPU12に送信する(S303)。
【0063】
図6は、実施形態にかかる情報処理装置が適用された磁気ディスク装置1の、割り込み要求が生成された際の動作の一例を示すフローチャートである。
CPU12は、割り込み要求を受信すると、メインプログラム100aからアドレス値400が示す位置に格納されている署名チェックプログラム300の実行を開始する(S401)。
【0064】
続いて、CPU12は、署名チェックプログラム300に従って、解析プログラム200とデジタル署名201とを不揮発性メモリ40から揮発性メモリ30にロードする(S402)。
【0065】
続いて、CPU12は、公開鍵202と、デジタル署名201aと、に基づいて、解析プログラム200aの真正性を検証する(S403)。S403では、CPU12が単独で検証してもよいし、CPU12がRSA回路13に検証させてもよい。
【0066】
検証結果が合格である場合(S404:Yes)、CPU12は、解析プログラム200aに従った動作を開始する(S405)。そして、解析プログラム200aに従った動作の一環として、CPU12は、調査PC3からのコマンドに応じて、揮発性メモリ30内の内容(例えばメインプログラム100aの一部または全部)や不揮発性メモリ40内のログを収集して、調査PC3に送信する(S406)。
【0067】
ユーザは、必要な情報を調査PC3によって収集して、解析が終了すると、調査PC3から磁気ディスク装置1に終了コマンドを送信することができる。磁気ディスク装置1が当該終了コマンドを受信すると(S407)、制御が解析プログラム200aからメインプログラム100aに復帰し(S408)、動作が終了する。
【0068】
また、検証結果が不合格である場合(S404:No)、S408の処理が実行される。なお、検証結果が不合格である場合の動作、および終了コマンドを受信した後の動作は、
図6に説明された例に限定されない。例えば、CPU12は、署名チェックプログラム300に従って、調査PC3に解析プログラム200aが異常である旨を通知してもよい。ユーザは、当該通知を認識すると、磁気ディスク装置1への電力の供給を遮断することで、磁気ディスク装置1をパワーオフしてもよい。
【0069】
磁気ディスク装置1のパワーオフによって、メインプログラム100a、解析プログラム200a、およびデジタル署名201aは、揮発性メモリ30から失われる。そして、次に磁気ディスク装置1がパワーオンされた際には、
図4に示された動作が実行される。これにより、不揮発性メモリ40から揮発性メモリ30に再度、メインプログラム100がロードされることになる。
【0070】
また、終了コマンドを調査PC3によって磁気ディスク装置1に送信した後においても、ユーザは、磁気ディスク装置1への電力の供給を遮断することで、磁気ディスク装置1をパワーオフしてもよい。
【0071】
以上述べたように、実施形態によれば、第1メモリである揮発性メモリ30(RAM16)には、メインプログラム100a、解析プログラム200a、およびデジタル署名201aがロードされる。第2メモリであるマスクROM17またはOTP18には、署名チェックプログラム300と、公開鍵202と、が格納されている。CPU12は、メインプログラム100aの実行中に特定の割り込みが発生した場合に、デジタル署名201aと公開鍵202とに基づいて解析プログラム200aの検証を署名チェックプログラム300に従って実行する。検証結果が合格である場合に、CPU12は、メインプログラム100aを解析プログラム200aに従って解析する。検証結果が不合格である場合に、CPU12は、解析しない。したがって、解析プログラム200aの検証かつメインプログラム100aの解析をセキュアに実行することが可能である。
【0072】
この技術と比較される技術(比較例1と称する)として、磁気ディスク装置のパワーオン時に解析プログラムおよびデジタル署名が揮発性メモリにロードされる技術がある。例えば、解析プログラムは、メインプログラムに含まれ、デジタル署名は、解析プログラムを含むメインプログラムから生成され得る。比較例1によれば、解析プログラムおよびデジタル署名が揮発性メモリにロードされてから実際に使用されるまでの期間が長い。したがって、当該期間に、揮発性メモリ内の解析プログラムが改竄されたり、メインプログラムの暴走によって解析プログラムが破壊されたりする可能性がある。
【0073】
これに対し、実施形態によれば、メインプログラム100aの解析が必要となったときに解析プログラム200が第3のメモリである不揮発性メモリ40から揮発性メモリ30にロードされる。よって、比較例1に比べ、よりセキュアな状態で解析プログラム200aを使用することが可能である。
【0074】
さらに、解析プログラム200およびデジタル署名201が書き換え可能な不揮発性メモリ40に格納されている。例えば、磁気ディスク装置1の出荷後、製造者は、新しい解析プログラム200とデジタル署名201との対を作成する。ユーザは、不揮発性メモリ40に格納されている解析プログラム200とデジタル署名201との対を新しく更新させることができる。製造者は、解析プログラム200とデジタル署名201を新しく作成する際、以前に使用された秘密鍵と同じ秘密鍵を使用する。これによって、新しく更新された場合であっても、検証の際に、OTP18内の公開鍵202を用いることが可能である。
【0075】
また、実施形態によれば、CPU12は、第5のメモリであるOTP18に格納されたアドレス値を参照することによって、第4のメモリであるマスクROMに格納された署名チェックプログラム300の位置を特定するように構成されている。
【0076】
書き換え不可能な不揮発性メモリに格納されたアドレス値400に基づいて署名チェックプログラム300の位置が特定されることから、署名チェックプログラム300をセキュアに起動することが可能である。よって、例えば、割り込み要求に応じて不正なプログラムを起動させるなどによって磁気ディスク装置1を乗っ取ることが、非常に困難になる。
【0077】
なお、CPU12は、割り込み要求を受信したとき、OTP18から必ずしも直接にアドレス値400を取得しなくてもよい。例えば、CPU12は、OTP18に格納されたアドレス値400を、所定のタイミングでベクタテーブルとして揮発性メモリ30にロードする。そして、CPU12は、割り込み要求を受信したとき、揮発性メモリ30内のベクタテーブルを参照することで、署名チェックプログラム300の位置を特定してもよい。
【0078】
また、実施形態によれば、署名チェックプログラム300は、マスクROM17に格納される。公開鍵202は、磁気ディスク装置1のハードウェアの製造後にOTP18に格納されている。デジタル署名201は、不揮発性メモリ40に格納されることから、公開鍵202とデジタル署名201との組み合わせを装置単位で異ならせるといったことが容易となる。
【0079】
なお、署名チェックプログラム300および公開鍵202の位置は、上記した例に限定されない。例えば、署名チェックプログラム300および公開鍵202は、ともにマスクROM17に格納されてもよい。
【0080】
また、実施形態によれば、第1プログラムであるメインプログラム100、100aは、ホスト2からの要求に応じた磁気ディスク24へのアクセス制御をCPU12に実行させるファームウェアである。しかしながら、解析の対象はファームウェアに限定されない。任意のコンピュータプログラムが解析プログラム200による解析の対象とされ得る。
【0081】
(変形例1)
以上の説明では、CPU12は、OTP18に格納されたアドレス値400を参照することによって署名チェックプログラム300の位置を特定した。署名チェックプログラム300の位置の特定方法はこれに限定されない。署名チェックプログラム300の位置の特定方法の他の変形例によれば、バンク切り替えによって署名チェックプログラム300の位置が特定される。
【0082】
図7は、実施形態の変形例1にかかるマスクROM17の構成を示す模式的な図である。マスクROM17は、複数のバンク170に分割されている。なお、
図7では、複数のバンク170のうちの、3つのバンク170-1、170-2、170-3が図示されている。バンク170の数は、2つであってもよいし、4以上であってもよい。
第1のバンク170-1の先頭位置には、IPL500が格納されており、第2のバンク170-2の先頭位置には、署名チェックプログラム300が格納されている。
【0083】
CPU12は、磁気ディスク装置1のパワーオン時には、第1のバンク170-1の先頭位置に制御を移すことで、格納されたIPL500に従った動作を開始する。そして、CPU12は、割り込み要求を受信すると、マスクROM17のバンク切り替えを実施する。第2のバンク170-2の先頭位置に制御を移すことで、CPU12は、格納された署名チェックプログラム300に従った動作を開始する。
【0084】
このように、複数のバンクに分割されたマスクROM17のバンク切り替えによって、署名チェックプログラム300を起動することが可能である。マスクROM17を用いる場合、OTP18に署名チェックプログラム300の位置を示すアドレス値400を書き込むことを不要とすることができる。
【0085】
(変形例2)
以上の説明では、割り込みコントローラ15は、調査PC3の接続に応じて割り込み要求を生成し、CPU12は、当該割り込み要求を契機として署名チェックプログラム300の起動を行った。署名チェックプログラム300の起動の契機はこれに限定されない。
【0086】
図8は、実施形態の変形例2にかかる起動方法を示すフローチャートである。CPU12は、磁気ディスク装置1がパワーオンされてからの経過時間または前回に署名チェックプログラム300が実行されてからの経過時間が所定のしきい値に達したか否かを判定する(S501)。経過時間が所定のしきい値に達していない場合(S501:No)、CPU12は、S501の処理を再び実行する。経過時間が所定のしきい値に達した場合(S501:Yes)、CPU12は、署名チェックプログラム300を起動し(S502)、動作を終了する。
【0087】
なお、調査PC3は、UART14に接続されていてもよいし、UART14に接続されていなくてもよい。調査PC3がUART14に接続されている場合には、S502では、
図6に示された一連の動作が実行され得る。
【0088】
調査PC3がUART14に接続されていない場合にも、S502では、
図6に示された一連の動作が実行され得る。ただし、解析プログラム200aの検証結果が合格であった場合、CPU12は、S406において、調査PC3からのコマンドを要することなく解析する。例えば、CPU12は、解析プログラム200aに従って、揮発性メモリ30内の内容や不揮発性メモリ40内のログ600を自動で収集して、収集したこれらの情報に基づいて解析し得る。CPU12は、収集したこれらの情報を調査PC3に送信しない。CPU12は、解析が終了すると、終了コマンドを要することなく、S408の処理を実行し得る。
【0089】
図9は、実施形態の変形例2にかかる別の起動方法を示すフローチャートである。CPU12は、磁気ディスク装置1がパワーオンされてからの磁気ディスク24へのアクセス量、前回に署名チェックプログラム300が実行されてからの磁気ディスク24へのアクセス量が、所定のしきい値に達したか否かを判定する(S601)。
【0090】
アクセス量として、書き込み量だけがカウントされてもよいし、読み出し量だけがカウントされてもよい。あるいは、書き込み量と読み出し量との合計がカウントされてもよい。アクセス量は、データのサイズによって表されるものであってもよいし、コマンド数によって表されるものであってもよい。
【0091】
アクセス量が所定のしきい値に達していない場合(S601:No)、CPU12は、S601の処理を再び実行する。アクセス量が所定のしきい値に達した場合(S601:Yes)、CPU12は、署名チェックプログラム300を起動し(S602)、動作を終了する。S602の処理の具体例は、
図8に係る説明におけるS502の処理と同様である。
【0092】
このように、予め設定された時間周期が経過する毎に署名チェックプログラム300が実行されてもよい。また、磁気ディスク24へのアクセス量が予め設定された量に達する毎に署名チェックプログラム300が実行されてもよい。
【0093】
実施形態およびその変形例によれば、プロセッサは、第1プログラムの実行中に特定の条件が成立した場合に、第1メモリ内のデジタル署名と第2メモリ内の公開鍵とに基づく第1メモリ内の第2プログラムの検証を第3プログラムに従って実行する。検証結果が合格である場合に、プロセッサは、第1メモリ内の第1プログラムの解析を第1メモリ内の第2プログラムに従って実行する。検証結果が不合格である場合に、プロセッサは、第1メモリ内の第2プログラムに従った解析を実行しない。これによって、セキュアに第1プログラムの解析を行うことが可能となる。
【0094】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0095】
1 磁気ディスク装置、2 ホスト、3 調査PC、10 コントローラ基板、11 外部I/Fコントローラ、12 CPU、13 RSA回路、14 UART、15 割り込みコントローラ、16 RAM、17 マスクROM、18 OTP、19 デバイスコントローラ、20 FROM、21 SPI、22 第1バス、23 第2バス、24 磁気ディスク、30 揮発性メモリ、40 不揮発性メモリ、100,100a メインプログラム、170,170-1,170-2,170-3 バンク、200,200a 解析プログラム、201,201a デジタル署名、202 公開鍵、300 署名チェックプログラム、400 アドレス値、500 IPL、600 ログ。