IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

2023-60451情報処理装置、真正性検証方法、及びプログラム
<>
  • -情報処理装置、真正性検証方法、及びプログラム 図1
  • -情報処理装置、真正性検証方法、及びプログラム 図2
  • -情報処理装置、真正性検証方法、及びプログラム 図3
  • -情報処理装置、真正性検証方法、及びプログラム 図4
  • -情報処理装置、真正性検証方法、及びプログラム 図5
  • -情報処理装置、真正性検証方法、及びプログラム 図6
  • -情報処理装置、真正性検証方法、及びプログラム 図7
  • -情報処理装置、真正性検証方法、及びプログラム 図8
  • -情報処理装置、真正性検証方法、及びプログラム 図9
  • -情報処理装置、真正性検証方法、及びプログラム 図10
  • -情報処理装置、真正性検証方法、及びプログラム 図11
  • -情報処理装置、真正性検証方法、及びプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023060451
(43)【公開日】2023-04-28
(54)【発明の名称】情報処理装置、真正性検証方法、及びプログラム
(51)【国際特許分類】
   G06F 21/44 20130101AFI20230421BHJP
   G06F 21/62 20130101ALI20230421BHJP
【FI】
G06F21/44
G06F21/62
【審査請求】有
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021170076
(22)【出願日】2021-10-18
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】小竹 勇己
(72)【発明者】
【氏名】高村 幸良
(57)【要約】      (修正有)
【課題】接続されるドライブがストレージコントローラのメモリにアクセスできるようになる前に、不正なドライブであるか否かを判別する情報処理装置、真正性検証方法及びプログラムを提供する。
【解決手段】情報処理システム10において、ストレージコントローラ1は、記憶デバイスSSD2が接続されると、通信接続が確立されても内蔵メモリ12にアクセス不能な第1のインターフェースによる第1の通信路Side-band6と、通信接続が確立されたときに内蔵メモリにアクセス可能な第2のインターフェースによる第2の通信路In-band5と、を形成する。CPU11は、第2の通信路による通信接続が確立されていない所定のタイミングで、第1の通信路を用いて記憶デバイスから取得する情報に基づいて、記憶デバイスの真正性を検証する真正性検証処理を実行し、それによって真正性が確認された場合に、第2の通信路による通信接続の確立を許可する。
【選択図】図1
【特許請求の範囲】
【請求項1】
複数種類のインターフェースを有する記憶デバイスを接続可能な情報処理装置であって、
プログラムの実行及び通信接続の制御を行うプロセッサと、
前記プログラム及びデータを保持する内蔵メモリと、
を備え、
前記記憶デバイスが接続されると、当該記憶デバイスとの間に前記複数種類のインターフェースによる複数の通信路が形成され、
前記複数の通信路には、通信接続が確立されても前記内蔵メモリにアクセス不能な第1のインターフェースによる第1の通信路と、通信接続が確立されたときに前記内蔵メモリにアクセス可能な第2のインターフェースによる第2の通信路と、が含まれ、
前記第2の通信路による通信接続が確立されていない所定のタイミングで、
前記プロセッサは、
前記第1の通信路を用いて前記記憶デバイスから取得する情報に基づいて、当該記憶デバイスの真正性を検証する真正性検証処理を実行し、
前記真正性検証処理によって真正性が確認された場合に、前記第2の通信路による通信接続の確立を許可する
ことを特徴とする情報処理装置。
【請求項2】
前記真正性検証処理において前記プロセッサは、前記記憶デバイスにおける所定種別のドライブ情報を前記第1の通信路より取得し、当該ドライブ情報と前記内蔵メモリに保持された所定のパターンデータとを比較することにより、前記真正性を検証する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記記憶デバイスには、適正なドライブであることを示す所定の認証情報が事前に書き込まれ、
前記真正性検証処理において前記プロセッサは、前記記憶デバイスにおける前記認証情報を前記第1の通信路より取得し、当該認証情報と前記内蔵メモリに保持された所定のパターンデータとを比較することにより、前記真正性を検証する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記記憶デバイスには、当該記憶デバイスの固有情報を暗号化した暗号認証情報が事前に書き込まれ、
前記真正性検証処理において前記プロセッサは、前記記憶デバイスにおける前記固有情報と前記暗号認証情報とを前記第1の通信路より取得し、当該暗号認証情報を復号した情報と当該固有情報とを比較することにより、前記真正性を検証する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記記憶デバイスには、当該記憶デバイスの固有情報をハッシュ化したハッシュ化認証情報が事前に書き込まれ、
前記真正性検証処理において前記プロセッサは、前記記憶デバイスにおける前記固有情報と前記ハッシュ化認証情報とを前記第1の通信路より取得し、当該固有情報をハッシュ化した情報と当該ハッシュ化認証情報とを比較することにより、前記真正性を検証する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記真正性検証処理において前記プロセッサは、
前記記憶デバイスに対して正規のファームウェアを前記第1の通信路より提供し、
前記記憶デバイスにおけるファームウェアの適用後に、前記記憶デバイスのファームウェア情報を前記第1の通信路より取得し、
前記取得したファームウェア情報に示されるファームウェアのバージョンと前記提供した正規のファームウェアのバージョンとを比較することにより、前記真正性を検証する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記記憶デバイスに給電する電源として、消費電力が異なる少なくとも2種類の電源を有し、
前記真正性検証処理の検証結果が得られるまでは、前記第1のインターフェースを起動できる程度の消費電力の小さい電源だけを用いる
ことを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記第1のインターフェースはSMBusインターフェースであり、前記第2のインターフェースはPCIeインターフェースである
ことを特徴とする請求項1に記載の情報処理装置。
【請求項9】
複数種類のインターフェースを有する記憶デバイスを接続可能な情報処理装置による前記記憶デバイスの真正性検証方法であって、
前記情報処理装置は、
プログラムの実行及び通信接続の制御を行うプロセッサと、
前記プログラム及びデータを保持する内蔵メモリと、
を有し、
前記情報処理装置に前記記憶デバイスが接続されると、当該記憶デバイスとの間に前記複数種類のインターフェースによる複数の通信路が形成され、
前記複数の通信路には、通信接続が確立されても前記内蔵メモリにアクセス不能な第1のインターフェースによる第1の通信路と、通信接続が確立されたときに前記内蔵メモリにアクセス可能な第2のインターフェースによる第2の通信路と、が含まれ、
前記第2の通信路による通信接続が確立されていない所定のタイミングで、前記プロセッサが、前記第1の通信路を用いて前記記憶デバイスから取得する情報に基づいて、当該記憶デバイスの真正性を検証する真正性検証処理を実行し、前記真正性検証処理によって真正性が確認された場合に、前記第2の通信路による通信接続の確立を許可する
ことを特徴とする真正性検証方法。
【請求項10】
複数種類のインターフェースを有する記憶デバイスを接続可能な情報処理装置に実行させるプログラムであって、
前記情報処理装置は、プロセッサと内蔵メモリとを有し、
前記情報処理装置に前記記憶デバイスが接続されると、当該記憶デバイスとの間に前記複数種類のインターフェースによる複数の通信路が形成され、
前記複数の通信路には、通信接続が確立されても前記内蔵メモリにアクセス不能な第1のインターフェースによる第1の通信路と、通信接続が確立されたときに前記内蔵メモリにアクセス可能な第2のインターフェースによる第2の通信路と、が含まれ、
前記第2の通信路による通信接続が確立されていない所定のタイミングで、
前記第1の通信路を用いて前記記憶デバイスから所定の情報を取得する処理と、
前記取得した情報に基づいて、前記記憶デバイスの真正性を検証する処理と、
前記検証によって真正性が確認された場合に、前記第2の通信路による通信接続の確立を許可する処理と、を前記プロセッサに実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、真正性検証方法、及びプログラムに関し、接続されるNVMe(Non-Volatile Memory Express)ドライブの真正性を検証する情報処理装置、真正性検証方法、及びプログラムに適用して好適なものである。
【背景技術】
【0002】
近年、情報機器のセキュリティニーズが高まっており、ソフトウェアだけではなくハードウェアの真正性検証の必要性も高まっている。例えば、マルウェアのような不正なソフトウェアによる不正アクセスやDOS(Denial-of-service attack)攻撃だけではなく、ハードウェアにハードウェアトロイと呼ばれる不正な回路を組み込むことで不正アクセスやDOS攻撃が行われるリスクが指摘されている。このようなハードウェアベースの不正は物流の過程で混入されることもあるため、スタンドアロン環境であってもリスクが存在する。
【0003】
また、ストレージシステムでは、近年、NVMe(Non-Volatile Memory Express)と呼ばれるPCIe(PCI Express)ベースのインターフェース規格が一般的となっており、ストレージでバスとホスト間で高速な通信を実現している。しかし、PCIeは、ホストメモリへ直接アクセスできてしまうため、ハードウェアトロイ等が組み込まれた不正なデバイスがホストに接続されてしまうと、リンクが確立した時点でホストメモリへの不正アクセスやメモリの破壊が可能となってしまう。そのため、PCIeによるリンクが確立する前に、接続するデバイスが正規のものであるか否かを判断する必要があった。
【0004】
例えば特許文献1には、接続されたデバイスからのトリガー信号によってシステムの起動を行う際に、起動信号の前に検証を行う情報処理装置が開示されている。特許文献1に開示された情報処理装置は、検証時に主たる通信路(In-band)が起動していないことから、補助的な通信路(Side-band)を用いてシステムの起動を認証し、認証に失敗した場合はシステムをシャットダウンすることにより、不正なシステムの起動を防止することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008-299417号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、上記特許文献1に開示された技術は、不正なシステムの起動に対する認証技術であり、ストレージシステムに接続されるストレージデバイス(ドライブ)自体の真正性を検証する技術ではない。また、ストレージシステムにおいては、搭載されるドライブが不正なデバイスであった場合でもシステムの動作は継続する必要があり、特許文献1に開示された技術のようにシステムがシャットダウンされることは好ましくない。
【0007】
SSD(Solid State Drive)をはじめとするPCIeベースのストレージデバイスのなかには、セキュリティを意識したSED(Self Encrypting Drive)と呼ばれるデバイスも存在するが、これは保存されるデータの暗号化のみを行うデバイスであって、デバイス自体の真正性を検証するものではなかった。前述したように、PCIeベースのデバイスは、PCIeによるリンクが確立した時点でホストメモリを直接参照できるため、不正デバイスによるホストメモリへの不正アクセスやメモリの破壊のリスクが存在する。したがって、PCIeによるリンクが確立する前に、ストレージデバイス(ドライブ)の真正性を検証し、接続するドライブが正規のものであるか否かを判断することが重要であった。
【0008】
本発明は以上の点を考慮してなされたもので、接続されるドライブがストレージコントローラのメモリにアクセスできるようになる前に、不正なドライブであるか否かを判別することが可能な情報処理装置、真正性検証方法、及びプログラムを提案しようとするものである。
【課題を解決するための手段】
【0009】
かかる課題を解決するため本発明においては、複数種類のインターフェースを有する記憶デバイスを接続可能な情報処理装置であって、プログラムの実行及び通信接続の制御を行うプロセッサと、前記プログラム及びデータを保持する内蔵メモリと、を備え、前記記憶デバイスが接続されると、当該記憶デバイスとの間に前記複数種類のインターフェースによる複数の通信路が形成され、前記複数の通信路には、通信接続が確立されても前記内蔵メモリにアクセス不能な第1のインターフェースによる第1の通信路と、通信接続が確立されたときに前記内蔵メモリにアクセス可能な第2のインターフェースによる第2の通信路と、が含まれ、前記第2の通信路による通信接続が確立されていない所定のタイミングで、前記プロセッサは、前記第1の通信路を用いて前記記憶デバイスから取得する情報に基づいて、当該記憶デバイスの真正性を検証する真正性検証処理を実行し、前記真正性検証処理によって真正性が確認された場合に、前記第2の通信路による通信接続の確立を許可する、情報処理装置が提供される。
【0010】
また、かかる課題を解決するため本発明においては、複数種類のインターフェースを有する記憶デバイスを接続可能な情報処理装置による前記記憶デバイスの真正性検証方法であって、前記情報処理装置は、プログラムの実行及び通信接続の制御を行うプロセッサと、前記プログラム及びデータを保持する内蔵メモリと、を有し、前記情報処理装置に前記記憶デバイスが接続されると、当該記憶デバイスとの間に前記複数種類のインターフェースによる複数の通信路が形成され、前記複数の通信路には、通信接続が確立されても前記内蔵メモリにアクセス不能な第1のインターフェースによる第1の通信路と、通信接続が確立されたときに前記内蔵メモリにアクセス可能な第2のインターフェースによる第2の通信路と、が含まれ、前記第2の通信路による通信接続が確立されていない所定のタイミングで、前記プロセッサが、前記第1の通信路を用いて前記記憶デバイスから取得する情報に基づいて、当該記憶デバイスの真正性を検証する真正性検証処理を実行し、前記真正性検証処理によって真正性が確認された場合に、前記第2の通信路による通信接続の確立を許可する、真正性検証方法が提供される。
【0011】
また、かかる課題を解決するため本発明においては、複数種類のインターフェースを有する記憶デバイスを接続可能な情報処理装置に実行させるプログラムであって、前記情報処理装置は、プロセッサと内蔵メモリとを有し、前記情報処理装置に前記記憶デバイスが接続されると、当該記憶デバイスとの間に前記複数種類のインターフェースによる複数の通信路が形成され、前記複数の通信路には、通信接続が確立されても前記内蔵メモリにアクセス不能な第1のインターフェースによる第1の通信路と、通信接続が確立されたときに前記内蔵メモリにアクセス可能な第2のインターフェースによる第2の通信路と、が含まれ、前記第2の通信路による通信接続が確立されていない所定のタイミングで、前記第1の通信路を用いて前記記憶デバイスから所定の情報を取得する処理と、前記取得した情報に基づいて、前記記憶デバイスの真正性を検証する処理と、前記検証によって真正性が確認された場合に、前記第2の通信路による通信接続の確立を許可する処理と、を前記プロセッサに実行させるプログラムが提供される。
【発明の効果】
【0012】
本発明によれば、接続されるドライブがストレージコントローラのメモリにアクセスできるようになる前に、不正なドライブであるか否かを判別することができる。
【図面の簡単な説明】
【0013】
図1】本発明の実施形態に係る情報処理システム10の構成例を示すブロック図である。
図2】第1の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。
図3】第1の実施形態における真正性検証処理の処理手順例を示すフローチャートである。
図4】第2の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。
図5】第2の実施形態における真正性検証処理の処理手順例を示すフローチャートである。
図6】期待値表110の一例を示す図である。
図7】第3の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。
図8】第3の実施形態における真正性検証処理の処理手順例を示すフローチャートである。
図9】第4の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。
図10】第4の実施形態における真正性検証処理の処理手順例を示すフローチャートである。
図11】第5の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。
図12】第5の実施形態における真正性検証処理の処理手順例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、図面を参照して、本発明の実施形態を詳述する。
【0015】
なお、以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加や変更等を行うことができる。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は複数でも単数でも構わない。
【0016】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、又は、ホストであってもよい。プログラムを実行して行う処理の主体(例えばプロセッサ)は、処理の一部又は全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、又は圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
【0017】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0018】
図1は、本発明の実施形態に係る情報処理システム10の構成例を示すブロック図である。図1に示したストレージコントローラ1は、本発明に係る情報処理装置の一例である。なお、図1に示すストレージコントローラ1の構成は、後述する各実施形態の実現に必要な構成をまとめたものであり、実施形態によっては、必ずしも図1に示した構成を必要としない。具体的には例えば、期待値表110は、第2の実施形態では必須であるが、その他の実施形態では必須ではない。
【0019】
図1に示すように、情報処理システム10は、ストレージコントローラ1、SSD2、及びホストサーバ3を備えて構成される。情報処理システム10においては、ストレージコントローラ1に、ストレージデバイスである1以上のSSD2が接続されることにより、ホストサーバ3にストレージを提供するストレージシステムが実現される。ストレージコントローラ1及びSSD2の詳細な構成は後述する。
【0020】
ホストサーバ3は、ストレージコントローラ1の上位装置であって、任意のネットワーク4によってストレージコントローラ1と通信可能に接続される。SSD2は、NVMeの通信プロトコルを有するドライブであって、ストレージシステムのストレージデバイスとしてストレージコントローラ1に接続される。SSD2とストレージコントローラ1との間は複数種類のインターフェースによって接続され、これらのインターフェースによる通信路として、少なくとも、主要な通信路であるIn-band5と補助的な通信路であるSide-band6とが存在する。
【0021】
In-band5は、具体的には例えばPCIeである。PCIeは、高速な通信を実現するポイント・ツー・ポイントのシリアルバスインターフェースであって、主にCPU11(スイッチ14に置き換えてもよい)とデバイス(例えばSSD2)との間の通信に用いられる。In-band5は、CPU11からメモリ12にも直結していることから、SSD2とストレージコントローラ1との間でIn-band5(PCIe)の接続が確立されたとき、SSD2は、ストレージコントローラ1のCPU11及びメモリ12に直接アクセスすることが可能となる。
【0022】
Side-band6は、具体的には例えばSMBus(System Management Bus)であるが、I2C(Inter-IC bus)でもよい。SMBusは、デバイス間の汎用コミュニケーションパスであって、PCIeより低速な通信を実現する。SMBusは、一般的にはシステム管理や電源管理の用途に用いられる。Side-band6は、CPU11(スイッチ14に置き換えてもよい)とデバイス(例えばSSD2)との間の通信に用いられるが、In-band5との大きな相違点として、メモリ12には直結しない。したがって、SSD2とストレージコントローラ1との間でSide-band6(SMBus)を経路として通信が行われるとき、SSD2は、ストレージコントローラ1のCPU11(あるいはスイッチ14)に対しては直接アクセスすることが可能だが、ストレージコントローラ1(CPU11)が管理するメモリ12に対しては直接アクセスすることが許可されない(メモリアクセス不可)。
【0023】
ストレージコントローラ1は、サーバや汎用計算機等であって、CPU11、メモリ12、ホストI/F13、及びスイッチ14を備える。情報処理システム10においては、ストレージコントローラ1に1以上のストレージデバイス(SSD2)が接続されることにより、ストレージシステムが実現される。
【0024】
CPU11は、ストレージコントローラ1における全体的な制御を司るプロセッサであり、例えばCPU(Central Processing Unit)である。CPU11はメモリ12に格納されたプログラムを実行することにより、各種機能を実現する。
【0025】
メモリ12は、プログラム及びデータを格納する内蔵メモリであり、具体的には例えば、DRAM(Dynamic Random Access Memory)である。図1には、メモリ12に格納されるデータの一例として期待値表110が示され、メモリ12に格納されるプログラムの一例としてストレージ制御プログラム120が示されている。
【0026】
期待値表110は、In-band接続におけるリンクの確立(リンクアップ)を許可するか否かを判断するために用いられるデータであって、ストレージごとに、各認証パターンに対するリンクアップの可否を示す情報が保持される。期待値表110は、予めメモリ12に格納される。
【0027】
ストレージ制御プログラム120は、CPU11がストレージコントローラ1に接続されるドライブ(SSD2)に対する各種制御を行うために実行される各種プログラムであって、接続ドライブ検証プログラム121、Side-band接続制御プログラム122、In-band接続制御プログラム123、及びNVMeドライブ制御プログラム124を有する。
【0028】
接続ドライブ検証プログラム121は、ストレージコントローラ1に接続されるドライブ(SSD2)を検証するために実行するためのプログラムであって、CPU11またはスイッチ14内の各制御部(Side-band制御部141、In-band制御部142)によって実行されることにより、認証情報取得部151、復号/ハッシュ計算部152、検証演算部153、In-band接続許可部154、及び認証失敗通知部155を実現する。
【0029】
認証情報取得部151は、Side-band接続制御プログラム122を呼び出し、Side-band6(SMBus)経由でドライブ情報や認証情報を取得する。復号/ハッシュ計算部152は、SSD2から取得した暗号認証情報を復号したり、SSD2から取得した製品番号をハッシュ化したりする。検証演算部153は、SSD2からSide-band6(SMBus)を経由して取得した情報を用いて、SSD2が適正なドライブであるかを検証し、その検証結果をIn-band接続許可部154または認証失敗通知部155に引き渡す。In-band接続許可部154は、In-band接続制御プログラム123を呼び出して、In-band5による通信接続を確立する。認証失敗通知部155は、SSD2のデバイス認証が失敗した(適正なドライブと確認されなかった)旨をユーザに通知する。
【0030】
Side-band接続制御プログラム122は、Side-band6による接続(Side-band接続)を制御するためのプログラムである。Side-band接続制御プログラム122は、他のコンポーネントの要求に応じて、スイッチ14を通してSide-band6の通信接続及びコマンド発行を実行する。In-band接続制御プログラム123は、In-band5による接続(In-band接続)を制御するためのプログラムである。In-band接続制御プログラム123は、他のコンポーネントの要求に応じて、スイッチ14を通してIn-band5の通信接続(PCIeリンク)を確立する。NVMeドライブ制御プログラム124は、ストレージコントローラ1に接続されたNVMeドライブ(SSD2)を制御するためのプログラムである。NVMeドライブ制御プログラム124は、ホストサーバ3からの要求に応じて、NVMeドライブであるSSD2にリードコマンドやライトコマンドを発行し、データの格納または読出しを行う。
【0031】
ホストI/F13は、ホストサーバ3からのアクセスを受け付けるインターフェースである。
【0032】
スイッチ14は、例えばPCIeスイッチであって、Side-band制御部141とIn-band制御部142とを有する。Side-band制御部141は、ストレージコントローラ1に接続されるNVMeドライブ(SSD2)に対してSide-band(SMBus)接続による制御を行うコントローラであって、Side-band接続制御プログラム122を実行することにより、Side-band6を通信路として、Side-bandコントローラ21との間で制御信号の送受信を行う。In-band制御部142は、ストレージコントローラ1に接続されるNVMeドライブ(SSD2)に対してIn-band(PCIe)接続による制御を行うコントローラであって、In-band接続制御プログラム123を実行することにより、In-band5を通信路として、In-bandコントローラ22との間で制御信号の送受信を行う。
【0033】
なお、図1に示すストレージコントローラ1は、スイッチ14を備えることなく、CPU11が、接続されたNVMeドライブ(SSD2)に対して制御を行うように構成されてもよい。この場合、CPU11内に、Side-bandの通信を制御するための制御部、及びIn-bandの通信を制御するための制御部が存在する。また、以降の説明では簡便のため、ストレージコントローラ1における制御または処理の実行主体として、メモリ12内のプログラムを実行して動作するCPU11またはスイッチ14を総称して「CTL」と称することがある。
【0034】
また、図示は省略したが、ストレージコントローラ1は、SSD2に給電する電源として少なくとも2種類の電源(3.3V電源、12V電源)を有する。このうち、PCIeはSMBusよりも消費電力が大きいため、In-band5による通信を行うためには12V電源が必要となる。一方、SMBusは消費電力が小さいため、3.3V電源だけでもSide-band6による通信を行うことができる。
【0035】
SSD2は、ストレージコントローラ1に接続されるNVMeドライブであって、例えば、NVMe SSDである。SSD2は、Side-bandコントローラ21、In-bandコントローラ22、DRAM23、及びNAND24を有する。NVMeドライブには、PCIe I/FとSMBus I/Fの2つのインターフェースが存在する。PCIe I/Fは、リンクアップした直後から、ストレージコントローラ1のメモリ12へのアクセスが可能となるが、SMBus I/Fは、リンクアップしてもストレージコントローラ1のメモリ12へのアクセスができない。
【0036】
Side-bandコントローラ21は、SSD2のVPD(Vital Product Data)や認証情報を保持し、ホスト(ストレージコントローラ1)からの要求に応じて、Side-band6経由で情報を転送する。In-bandコントローラ22は、PCIeで稼働し、SSD2内部のNAND24に格納されているデータをホスト(ストレージコントローラ1)に転送したり、ホストから受信したデータをNAND24に格納したりする。なお、以降の説明では簡便のため、SSD2における制御または処理の実行主体として、Side-bandコントローラ21及びIn-bandコントローラ22を総称して「メモリCTL」と称することがある。
【0037】
DRAM23は、SSD2を制御するマイクロプログラムが格納されたDRAMである。NAND24は、ストレージコントローラ1からのコマンドに応じて、ユーザデータを格納するNAND型フラッシュメモリである。
【0038】
なお、図1では、ストレージコントローラ1に接続するストレージデバイス(ドライブ)の一例として、NVMe SSDであるSSD2を示しているが、本実施形態におけるストレージデバイスは、これに限定されるものではなく、少なくとも2種類の通信インターフェースを有し、そのうちの1つが、リンクアップしてもストレージコントローラ1のメモリ12へのアクセスができないインターフェース規格(例えばSMBusやI2C)であればよい。具体的には、本実施形態におけるストレージデバイスは、NVMe SSD、NVMe SCM(Storage Class Memory)、またはNVMe HDDの何れであってもよい。
【0039】
以下では、図1に示した情報処理システム10の構成を用いて、本発明の各実施形態について詳しく説明する。なお、以下の各実施形態では、ストレージコントローラ1が、図1に示したように、Side-band制御部141及びIn-band制御部142を有するスイッチ14を備えているとして説明する。
【0040】
(1)第1の実施形態
第1の実施形態に係る情報処理装置(ストレージコントローラ1)は、接続されたドライブ(SSD2)に対する真正性の検証において、ドライブが有するドライブ情報を用いる。
【0041】
図2は、第1の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。なお、図2では、ストレージコントローラ1における処理主体をCTL、SSD2における処理主体をメモリCTLと記載しているが、Side-band6(SMBus)による通信は、Side-band制御部141及びSide-bandコントローラ21によって制御され、In-band5(PCIe)による通信は、In-band制御部142及びIn-bandコントローラ22によって制御される。これは、後述する別の実施形態におけるラダーチャートでも同様である。
【0042】
図2の処理は、ストレージコントローラ1にSSD2が物理的に接続(搭載)されたときに開始される。この時点では、In-band5(PCIe)による接続は確立されておらず、ストレージコントローラ1のCTLとSSD2のメモリCTLとの間の通信は、Side-band6(SMBus)で行われる。
【0043】
図2によればまず、ストレージコントローラ1のCTLが、Side-band6により、接続されたSSD2に対してドライブ情報の提供を要求する(ステップS101)。
【0044】
次に、ステップS101の要求に応じてSSD2のメモリCTLが、Side-bandにより、自ドライブのドライブ情報をストレージコントローラ1に送信する(ステップS102)。このドライブ情報は、自ドライブにおける所定種別の情報であり、例えばVPD(Vital Product Data)である。VPDは、ドライブの重要プロダクトデータであって、ハードウェアまたはソフトウェアの構造や設定に関する情報が含まれる。なお、ステップS102では、VPDに含まれる各種情報のうち、少なくとも後述するステップS103の検証処理で必要とされる所定種別のデータが送信されればよい。この所定種別のデータは、具体的には例えば、ドライブの型名や型番を示すデータでもよいし、ドライブの型名や型番のうち、適正(真正)なドライブで共通するパターンを示す所定部分のデータでもよい。以下では、ドライブの型番の所定部分のデータを「所定項目のデータ」として説明を続ける。
【0045】
次に、CTLは、ステップS102で受信したドライブ情報を用いて、SSD2が適正なドライブであるか否かを検証する(ステップS103)。ステップS103においてSSD2が適正なドライブではないと判断された場合は、ステップS104以降の処理は行われない。
【0046】
ステップS103においてSSD2が適正なドライブであると判断された場合には、In-band5(PCIe)による接続の確立が許可されるため、CTLが、In-band5により、SSD2のIn-bandコントローラ22にリンクの確立を要求する(ステップS104)。
【0047】
そして、In-bandコントローラ22は、ステップS104の要求に応じて、In-band5のリンクアップを行う(ステップS105)。これにより、SSD2のIn-bandコントローラ22は、ストレージコントローラ1のメモリ12に直接アクセスできるようになる。
【0048】
なお、図2では、ステップS101~S102の処理において、検証に用いられる所定項目のデータを含む形式でドライブ情報の取得が行われているが、SSD2のドライブ情報を取得した後に、改めて検証に用いられる所定項目のデータ(例えば、型番の一部など)が取得されるように処理が進められてもよい。
【0049】
図3は、第1の実施形態における真正性検証処理の処理手順例を示すフローチャートである。図3は、図2のラダーチャートに示した処理のうち、ストレージコントローラ1のCTL(スイッチ14またはCPU11)によって実行される処理の処理手順を示したものであり、以下、CTLの実行主体をより明確にして詳細に説明する。
【0050】
図3によれば、Side-band制御部141がSSD2の接続を検出すると(ステップS121)、認証情報取得部151が、Side-band6を用いてSSD2にドライブ情報の提供を要求し(ステップS122)、Side-bandコントローラ21から、Side-band6を経由してSSD2のドライブ情報を受領する(ステップS123)。
【0051】
次に、検証演算部153が、ステップS123で受領したドライブ情報に、期待されるパターンのデータ(すなわち、適正なドライブにおいて共通する型番のパターンを示すデータ)が埋め込まれているか否かを検証する(ステップS124)。ここで「期待されるパターン」は、例えば期待値表110に設定される等により、予めメモリ12に保持されているとする。
【0052】
ステップS124において期待されるパターンのデータの埋め込みが確認された場合(ステップS124のYES)、検証演算部153は、ステップS121で検出したドライブ(SSD2)が適正なドライブであると判断する。このとき、In-band接続許可部154がIn-band接続制御プログラム123を実行して、SSD2のIn-bandコントローラ22にIn-band5のリンクの確立要求を行い、その応答処理が行われることで、In-band5でのリンクアップが開始される(ステップS125)。
【0053】
一方、ステップS124において期待されるパターンのデータの埋め込みが確認できなかった場合(ステップS124のNO)、検証演算部153は、ステップS121で検出したドライブ(SSD2)が適正なドライブではなく、不正アクセスの可能性があると判断する(ステップS126)。この場合、In-band接続許可部154がIn-band接続制御プログラム123を実行して、In-band5によるリンクアップを抑止するとともに、認証失敗通知部155が、非サポートデバイスが挿入されていることをユーザに通知し(ステップS127)、処理を終了する。
【0054】
以上のように、第1の実施形態に係る情報処理装置(ストレージコントローラ1)によれば、接続されるドライブ(SSD2)がストレージコントローラ1のメモリ12にアクセスできるようになる前に、Side-band6(SMBus)を用いて、ドライブ固有のドライブ情報に基づいてドライブの真正性を判別し、適正なドライブであった場合にのみ、メモリ12に直接アクセス可能な通信路(In-band5(PCIe))のリンクアップを許可することができる。
【0055】
(2)第2の実施形態
第2の実施形態に係る情報処理装置(ストレージコントローラ1)は、接続されたドライブ(SSD2)に対する真正性の検証において、ドライブに書き込まれた認証情報を用いる。
【0056】
図4は、第2の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。図4の処理は、ストレージコントローラ1にSSD2が物理的に接続(搭載)されたときに開始される。この時点では、In-band5(PCIe)による接続は確立されておらず、ストレージコントローラ1のCTLとSSD2のメモリCTLとの間の通信は、Side-band6(SMBus)で行われる。
【0057】
図4によればまず、ストレージコントローラ1のCTLが、Side-band6により、接続されたSSD2に対してドライブ情報の提供を要求する(ステップS201)。そして、ステップS201の要求に応じてSSD2のメモリCTLが、自ドライブのドライブ情報をストレージコントローラ1に送信する(ステップS202)。なお、ドライブ情報は、例えばVPDである。
【0058】
次に、CTLは、接続されたSSD2に対して、当該ドライブに格納されている認証情報の提供を要求する(ステップS203)。そして、ステップS203の要求に応じてメモリCTLは、Side-bandコントローラ21が保持する認証情報をストレージコントローラ1に送信する(ステップS204)。
【0059】
ここで、Side-bandコントローラ21が保持する認証情報は、ドライブの製造段階からエンドユーザの手元に届くまでの間の所定のタイミングで書き込まれる。具体的には例えば、SSD2をストレージドライブとして販売するメーカが、装置組み立てや検査工程等において、適正なドライブであることを示す所定の認証情報を書き込む。上記認証情報は、ドライブの型式等(種別)に基づいて複数通りが用意されていてもよい。そして、適正なドライブであることを示す認証情報は、後述する図6に例示するように期待値表110にも格納される。なお、認証情報は、例えばドライブの製造ベンダーごとに統一して定められる、合言葉のような情報であってもよく、また、製造ベンダーによって書き込まれるとしてもよい。
【0060】
次に、ストレージコントローラ1のCTLが、メモリ12に格納されている期待値表110を取得する(ステップS205)。そしてCTLは、ステップS204で受信した認証情報とステップS205で取得した期待値表110とを比較することにより、SSD2が適正なドライブであるか否かを検証する(ステップS206)。ステップS206においてSSD2が適正なドライブではないと判断された場合は、ステップS207以降の処理は行われない。
【0061】
ステップS206においてSSD2が適正なドライブであると判断された場合には、In-band5(PCIe)による接続の確立が許可されるため、CTLが、In-band5により、SSD2のIn-bandコントローラ22にリンクの確立を要求する(ステップS207)。そして、In-bandコントローラ22は、ステップS207の要求に応じて、In-band5のリンクアップを行う(ステップS208)。これにより、SSD2のIn-bandコントローラ22は、ストレージコントローラ1のメモリ12に直接アクセスできるようになる。
【0062】
なお、図4では、ドライブ情報を取得するステップS201~S202の処理と、認証情報を取得するステップS203~S204の処理とが、別々に実行されているが、ドライブ情報と併せて認証情報を取得するようにしてもよい。また、期待値表110を取得するステップS205の処理の実行タイミングは、ステップS206以前であれば、どのタイミングであってもよい。
【0063】
図5は、第2の実施形態における真正性検証処理の処理手順例を示すフローチャートである。図5は、図4のラダーチャートに示した処理のうち、ストレージコントローラ1のCTL(スイッチ14またはCPU11)によって実行される処理の処理手順を示したものであり、以下、CTLの実行主体をより明確にして詳細に説明する。
【0064】
図5によれば、Side-band制御部141がSSD2の接続を検出すると(ステップS221)、認証情報取得部151が、Side-band6を用いてSSD2にドライブ情報の提供を要求し(ステップS222)、Side-bandコントローラ21から、Side-band6を経由してSSD2のドライブ情報を受領する(ステップS223)。
【0065】
次に、認証情報取得部151は、SSD2に認証情報の提供を要求し(ステップS224)、Side-bandコントローラ21からSSD2の認証情報を受領する(ステップS225)。また、認証情報取得部151は、メモリ12から期待値表110を取得する。
【0066】
そして、検証演算部153が、期待値表110をステップS225で受領した認証情報と比較することにより(ステップS226)、期待値表110に上記認証情報が記載されているか否かを判定する(ステップS227)。
【0067】
ステップS227において期待値表110に合致する認証情報が記載されていた場合(ステップS227のYES)、検証演算部153は、ステップS221で検出したドライブ(SSD2)が適正なドライブであると判断する。このとき、In-band接続許可部154がIn-band接続制御プログラム123を実行して、SSD2のIn-bandコントローラ22にIn-band5のリンクの確立要求を行い、その応答処理が行われることで、In-band5でのリンクアップが開始される(ステップS228)。
【0068】
一方、ステップS227において期待値表110に合致する認証情報が記載されていなかった場合(ステップS227のNO)、検証演算部153は、ステップS221で検出したドライブ(SSD2)が適正なドライブではなく、不正アクセスの可能性があると判断する(ステップS229)。この場合、In-band接続許可部154がIn-band接続制御プログラム123を実行して、In-band5によるリンクアップを抑止するとともに、認証失敗通知部155が、非サポートデバイスが挿入されていることをユーザに通知し(ステップS230)、処理を終了する。
【0069】
図6は、期待値表110の一例を示す図である。図6に示す期待値表110は、ドライブの種別の識別子を示すストレージ#1101、ドライブに格納され得る認証情報を示す認証パターン1102、及び、In-bandによる接続に対する許可または不許可の判断を示す許可/不許可1103のデータ項目を有する。
【0070】
図6の期待値表110を用いてステップS227の判定を具体的に説明する。例えば、対象のSSD2が種別「1」のドライブであるとき、SSD2から受領した認証情報が「A」,「B」,「C」の何れかであれば、期待値表110の許可/不許可1103に設定されている通り、In-bandによるリンク(接続)が許可される。すなわち、ステップS227でYESと判定され、ステップS228の処理が実行される。一方、SSD2から受領した認証情報が「A」,「B」,「C」以外であれば、不正デバイスの可能性があると判断され、In-bandによるリンク(接続)が許可されない。すなわち、ステップS227でNOと判定され、ステップS229,S230の処理が実行される。
【0071】
以上のように、第2の実施形態に係る情報処理装置(ストレージコントローラ1)によれば、接続されるドライブ(SSD2)がストレージコントローラ1のメモリ12にアクセスできるようになる前に、Side-band6(SMBus)を用いて、ドライブがエンドユーザに届くまでに書き込まれた認証情報に基づいてドライブの真正性を判別し、適正なドライブであった場合にのみ、メモリ12に直接アクセス可能な通信路(In-band5(PCIe))のリンクアップを許可することができる。
【0072】
(3)第3の実施形態
第3の実施形態に係る情報処理装置(ストレージコントローラ1)は、接続されたドライブ(SSD2)に対する真正性の検証において、ドライブに書き込まれた暗号化された認証情報を用いる。
【0073】
図7は、第3の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。図7の処理は、ストレージコントローラ1にSSD2が物理的に接続(搭載)されたときに開始される。この時点では、In-band5(PCIe)による接続は確立されておらず、ストレージコントローラ1のCTLとSSD2のメモリCTLとの間の通信は、Side-band6(SMBus)で行われる。
【0074】
図7によればまず、ストレージコントローラ1のCTLが、Side-band6により、接続されたSSD2に対してドライブ情報の提供を要求する(ステップS301)。そして、ステップS301の要求に応じてSSD2のメモリCTLが、Side-band6により、自ドライブのドライブ情報をストレージコントローラ1に送信する(ステップS302)。なお、ドライブ情報は例えばVPDであり、本例では、このVPDのなかに、ドライブの製造時に固有の識別番号として付与される製品番号(SN)が含まれているとする。
【0075】
次に、ストレージコントローラ1のCTLは、ステップS302で受信したドライブ情報に含まれているSSD2の製品番号(ドライブSN)をメモリ12に保存する(ステップS303)。
【0076】
次に、CTLは、接続されたSSD2に対して、当該ドライブに格納されている「暗号認証情報」の提供を要求する(ステップS304)。この暗号認証情報は、例えばSide-bandコントローラ21が保持しており、ドライブの製造段階からエンドユーザの手元に届くまでの間の所定のタイミングで書き込まれる、暗号化された情報である。具体的には例えば、SSD2をストレージドライブとして販売するメーカが、装置組み立てや検査工程等において、ドライブ(SSD2)の製品番号を秘密鍵を用いて暗号化した情報(暗号化されたSN)とする。そこで、ステップS304の要求を受けたSSD2のメモリCTLは、Side-bandコントローラ21が保持する暗号認証情報(暗号化されたSN)をストレージコントローラ1に送信する(ステップS305)。
【0077】
次に、ストレージコントローラ1のCTLは、ステップS305で受信した暗号認証情報を、公開鍵を用いて復号することにより、SSD2のドライブSNを得る(ステップS306)。公開鍵は、ストレージコントローラ1のメモリ12に保持されているとしてもよいし、公開鍵認証基盤(PKI:Public Key Infrastructure)から入手するとしてもよい。また、CTLは、ステップS303で保存したドライブSNをメモリ12から取得する(ステップS307)。
【0078】
そして、CTLは、ステップS306で復号化したドライブSNと、ステップS307で取得したドライブSNとを比較することにより、SSD2が適正なドライブであるか否かを検証する(ステップS308)。ステップS308においてSSD2が適正なドライブではないと判断された場合は、ステップS309以降の処理は行われない。
【0079】
ステップS308においてSSD2が適正なドライブであると判断された場合には、In-band5(PCIe)による接続の確立が許可されるため、CTLが、In-band5により、SSD2のIn-bandコントローラ22にリンクの確立を要求する(ステップS309)。そして、In-bandコントローラ22は、ステップS309の要求に応じて、In-band5のリンクアップを行う(ステップS310)。これにより、SSD2のIn-bandコントローラ22は、ストレージコントローラ1のメモリ12に直接アクセスできるようになる。
【0080】
なお、本実施形態では、秘密鍵が第三者に漏れてしまうリスクへの対処として、鍵の定期的な更新を行うようにしてもよい。また、公開鍵ではなく共通鍵を用いてもよい。また、ステップS308の検証処理をスイッチ14が実施するとしてもよく、このとき、検証によってSSD2が適正なドライブであると判断できた場合に、スイッチ14とCPU11との間、もしくはSSD2とスイッチ14との間で、PCIeのパスを接続するようにしてもよい。
【0081】
図8は、第3の実施形態における真正性検証処理の処理手順例を示すフローチャートである。図8は、図7のラダーチャートに示した処理のうち、ストレージコントローラ1のCTL(スイッチ14またはCPU11)によって実行される処理の処理手順を示したものであり、以下、CTLの実行主体をより明確にして詳細に説明する。
【0082】
図8によれば、Side-band制御部141がSSD2の接続を検出すると(ステップS321)、認証情報取得部151が、Side-band6を用いてSSD2にドライブ情報の提供を要求し(ステップS322)、Side-bandコントローラ21から、Side-band6を経由してSSD2のドライブ情報を受領する(ステップS323)。そして、認証情報取得部151は、受領したドライブ情報に含まれているSSD2の製品番号(ドライブSN)をメモリ12に保存する(ステップS324)。
【0083】
次に、認証情報取得部151は、SSD2に暗号認証情報の提供を要求し(ステップS325)、Side-bandコントローラ21からSSD2の暗号認証情報を受領する(ステップS326)。図7でも説明したように、暗号認証情報は、SSD2の製品番号を秘密鍵を用いて暗号化した情報(暗号化されたSN)である。
【0084】
次に、復号/ハッシュ計算部152が、ステップS326で受領した暗号認証情報を公開鍵を用いて復号する(ステップS327)。
【0085】
そして、検証演算部153が、メモリ12からステップS324で保存したドライブSNを取得し(ステップS328)、ステップS327で復号された情報と一致するか否かを判定する(ステップS329)。
【0086】
ステップS329において、復号された情報(暗号化されたSNの復号結果)とドライブ情報に含まれる製品番号(ドライブSN)とが一致した場合(ステップS329のYES)、検証演算部153は、ステップS321で検出したドライブ(SSD2)が、適正なドライブであると判断する。このとき、In-band接続許可部154がIn-band接続制御プログラム123を実行して、SSD2のIn-bandコントローラ22にIn-band5のリンクの確立要求を行い、その応答処理が行われることで、In-band5でのリンクアップが開始される(ステップS330)。
【0087】
一方、ステップS329において、復号された情報(暗号化されたSNの復号結果)とドライブ情報に含まれる製品番号(ドライブSN)とが一致しなかった場合(ステップS329のNO)、検証演算部153は、ステップS321で検出したドライブ(SSD2)が適正なドライブではなく、不正アクセスの可能性があると判断する(ステップS331)。この場合、In-band接続許可部154がIn-band接続制御プログラム123を実行して、In-band5によるリンクアップを抑止するとともに、認証失敗通知部155が、非サポートデバイスが挿入されていることをユーザに通知し(ステップS332)、処理を終了する。
【0088】
以上のように、第3の実施形態に係る情報処理装置(ストレージコントローラ1)によれば、接続されるドライブ(SSD2)がストレージコントローラ1のメモリ12にアクセスできるようになる前に、Side-band6(SMBus)を用いて、ドライブがエンドユーザに届くまでに書き込まれた暗号化された認証情報(例えば製品番号の暗号化情報)に基づいてドライブの真正性を判別し、適正なドライブであった場合にのみ、メモリ12に直接アクセス可能な通信路(In-band5(PCIe))のリンクアップを許可することができる。なお、上記説明ではドライブの製品番号(SN)を暗号化したものを認証情報として用いたが、本実施形態はこれに限定されるものではなく、製品番号以外のドライブの固有情報を暗号化して認証情報としてもよい。
【0089】
(4)第4の実施形態
第4の実施形態に係る情報処理装置(ストレージコントローラ1)は、接続されたドライブ(SSD2)に対する真正性の検証において、ドライブに書き込まれたハッシュ化された認証情報を用いる。
【0090】
図9は、第4の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。図9の処理は、ストレージコントローラ1にSSD2が物理的に接続(搭載)されたときに開始される。図9の説明において、第3の実施形態で示した図7の処理と共通する処理については、詳細な説明を省略する。
【0091】
図9において、ステップS401~S403の処理は、図7のステップS301~S303の処理と同様である。
【0092】
次に、ストレージコントローラ1のCTLは、接続されたSSD2に対して、当該ドライブに格納されている「ハッシュ化認証情報」の提供を要求する(ステップS404)。このハッシュ化認証情報は、例えばSide-bandコントローラ21に保持され、ドライブの製造段階からエンドユーザの手元に届くまでの間の所定のタイミングで書き込まれる。ハッシュ化認証情報は、具体的にはドライブの製品番号(SN)をハッシュ化した情報であり、例えば、SSD2をストレージドライブとして販売するメーカが、装置組み立てや検査工程等において書き込む。そこで、ステップS404の要求を受けたSSD2のメモリCTLは、Side-bandコントローラ21が保持するハッシュ化認証情報(ドライブSNのハッシュ値)をストレージコントローラ1に送信する(ステップS405)。
【0093】
次に、ストレージコントローラ1のCTLは、ステップS403で保存したドライブSNをメモリ12から取得する(ステップS406)。
【0094】
次に、CTLは、ステップS406で取得した平文のドライブSNを、ハッシュ関数によってハッシュ化する(ステップS407)。そしてCTLは、ステップS405で受信したハッシュ化認証情報(ドライブSNのハッシュ値)と、ステップS407でハッシュ化したドライブSNのハッシュ値とを比較することにより、SSD2が適正なドライブであるか否かを検証する(ステップS408)。ステップS408においてSSD2が適正なドライブではないと判断された場合は、ステップS409以降の処理は行われない。
【0095】
ステップS408においてSSD2が適正なドライブであると判断された場合には、図7のステップS309~S310の処理と同様に、In-band5のリンクの確立要求とリンクアップが行われ(ステップS409,S410)、これにより、SSD2のIn-bandコントローラ22は、ストレージコントローラ1のメモリ12に直接アクセスできるようになる。
【0096】
図10は、第4の実施形態における真正性検証処理の処理手順例を示すフローチャートである。図10は、図9のラダーチャートに示した処理のうち、ストレージコントローラ1のCTL(スイッチ14またはCPU11)によって実行される処理の処理手順を示したものであり、以下、CTLの実行主体をより明確にして詳細に説明する。なお、図10の説明において、第3の実施形態で示した図8の処理と共通する処理については、詳細な説明を省略する。
【0097】
図10において、ステップS421~S424の処理は、図8のステップS321~S324の処理と同様である。
【0098】
次に、認証情報取得部151は、SSD2にハッシュ化認証情報の提供を要求し(ステップS425)、Side-bandコントローラ21からSSD2のハッシュ化認証情報を受領する(ステップS426)。図9でも説明したように、ハッシュ化認証情報は、SSD2の製品番号がハッシュ化されて予めSSD2に書き込まれた情報である。
【0099】
次に、復号/ハッシュ計算部152が、ステップS424で保存したSSD2の製品番号(平文のドライブSN)をメモリ12から取得し(ステップS427)、ハッシュ関数によってハッシュ化する(ステップS428)。
【0100】
そして、検証演算部153が、ステップS426で受領したハッシュ化認証情報(ドライブSNのハッシュ値)と、ステップS428でハッシュ化されたドライブSNのハッシュ値とが一致するか否かを判定する(ステップS429)。
【0101】
ステップS429において、ハッシュ化認証情報(ドライブに書き込まれていたSNのハッシュ値)とハッシュ化したドライブSNのハッシュ値(ドライブ情報の製品番号をハッシュ化した値)とが一致した場合(ステップS429のYES)、検証演算部153は、ステップS421で検出したドライブ(SSD2)が、適正なドライブであると判断する。このとき、In-band接続許可部154がIn-band接続制御プログラム123を実行して、SSD2のIn-bandコントローラ22にIn-band5のリンクの確立要求を行い、その応答処理が行われることで、In-band5でのリンクアップが開始される(ステップS430)。
【0102】
一方、ステップS429において、ハッシュ化認証情報(ドライブに書き込まれていたSNのハッシュ値)とハッシュ化したドライブSNのハッシュ値(ドライブ情報の製品番号をハッシュ化した値)とが一致しなかった場合には(ステップS429のNO)、検証演算部153は、ステップS321で検出したドライブ(SSD2)が適正なドライブではなく、不正アクセスの可能性があると判断する(ステップS331)。この場合、In-band接続許可部154がIn-band接続制御プログラム123を実行して、In-band5によるリンクアップを抑止するとともに、認証失敗通知部155が、非サポートデバイスが挿入されていることをユーザに通知し(ステップS332)、処理を終了する。
【0103】
以上のように、第4の実施形態に係る情報処理装置(ストレージコントローラ1)によれば、接続されるドライブ(SSD2)がストレージコントローラ1のメモリ12にアクセスできるようになる前に、Side-band6(SMBus)を用いて、ドライブがエンドユーザに届くまでに書き込まれたハッシュ化認証情報とドライブ情報から抽出してハッシュ化した情報とに基づいてドライブの真正性を判別し、適正なドライブであった場合にのみ、メモリ12に直接アクセス可能な通信路(In-band5(PCIe))のリンクアップを許可することができる。なお、上記説明ではドライブの製品番号(SN)をハッシュ化したものをハッシュ化認証情報として用いたが、本実施形態はこれに限定されるものではなく、製品番号以外のドライブの固有情報をハッシュ化したものをハッシュ化認証情報としてもよい。
【0104】
(5)第5の実施形態
第5の実施形態に係る情報処理装置(ストレージコントローラ1)では、接続されたドライブ(SSD2)に対してドライブ用の正規のファームウェア(FW)を提供し、ドライブにおいて当該ファームウェアが適用されたか否かに基づいて、ドライブの真正性を検証する。
【0105】
図11は、第5の実施形態においてドライブの接続時に実行される処理の処理手順例を示すラダーチャートである。図11の処理は、ストレージコントローラ1にSSD2が物理的に接続(搭載)されたときに開始される。この時点では、In-band5(PCIe)による接続は確立されておらず、ストレージコントローラ1のCTLとSSD2のメモリCTLとの間の通信は、Side-band6(SMBus)で行われる。
【0106】
図11によればまず、ストレージコントローラ1のCTLが、Side-band6により、接続されたSSD2に対してドライブ情報の提供を要求する(ステップS501)。そして、ステップS501の要求に応じてSSD2のメモリCTLが、Side-band6により、自ドライブのドライブ情報をストレージコントローラ1に送信する(ステップS502)。なお、ドライブ情報は、例えばVPDである。
【0107】
次に、ストレージコントローラ1のCTLは、SSD2の型番等に対応するドライブ用の正規のファームウェア(ドライブFW)をSSD2にダウンロードする(ステップS503)。ドライブFWは、ドライブの型番等に応じて複数種類のFWがメモリ12に格納されているとし、これらのうちから、ステップS502で受信したドライブ情報に記載された情報に基づいて、対応するFWが選ばれればよい。なお、ドライブFWをストレージコントローラ1の外部から取得するように構成されてもよい。
【0108】
次に、SSD2のメモリCTLは、ステップS503で受け取ったドライブFWの検証を行い、FW検証に成功した場合にSSD2をセキュアブートする(ステップS504)。FW検証は、例えばドライブFWに付された署名を検証するフォームサイニングであり、署名が有効であれば、SSD2のプロセッサ(メモリCTL)は、ドライブFWをロードするためにセキュアブートを開始する。仮にSSD2のファームウェアにおいてハードウェアベースの不正が行われていた場合には、FW検証が失敗するため、以降のFW適用などの処理は行うことができない。このような場合、FW検証が失敗した旨をストレージコントローラ1に送信し、認証失敗通知部155がエラーを報知するようにしてもよい。FW検証には、既知の様々な方法を利用できるため、詳細な説明を省略する。
【0109】
そして、FW検証が成功してセキュアブートで起動した後、メモリCTLは、ステップS503で受け取ったドライブFWをSSD2に適用することにより、ドライブのファームウェアを更新する(ステップS505)。
【0110】
その後、ストレージコントローラ1のCTLは、SSD2に対して、ドライブのFW情報の提供を要求する(ステップS506)。ステップS506の要求を受けたSSD2のメモリCTLは、FW更新後のドライブのFW情報をストレージコントローラ1に送信する(ステップS507)。本例では、後述するステップS508の検証で用いるために、ステップS506~S507でやり取りされるFW情報には少なくともFWのバージョン(リビジョン)情報が含まれるとする。なお、ステップS508の検証においてバージョン情報以外の情報を用いる場合には、該当する情報をSSD2から取得すればよい。
【0111】
次に、CTLは、ステップS507で受信したドライブのFW情報を、ステップS503でSSD2に送信した正規のファームウェアのFW情報と比較することにより、SSD2が正規のファームウェアに更新されたか否かを検証する(ステップS508)。具体的には、SSD2にダウンロードしたドライブFWのFW情報とSSD2から受信したFW情報との間で、FWのバージョン(リビジョン)が一致する場合に、CTLは、正規のファームウェアに更新されたことを確認できる。そしてSSD2における正規のファームウェアへの更新が確認できた場合、CTLは、当該SSD2が不正ドライブではなく、適正なドライブであると判断することができる。すなわち、ステップS508の検証は、SSD2が適正なドライブであるか否かを検証する処理に相当する。そしてステップS508において正規のファームウェアへの更新が確認できなかった場合は、ステップS509以降の処理は行われない。
【0112】
ステップS508において正規のファームウェアへの更新が確認できた場合(SSD2が適正なドライブであると判断された場合)には、In-band5(PCIe)による接続の確立が許可されるため、CTLが、In-band5により、SSD2のIn-bandコントローラ22にリンクの確立を要求する(ステップS509)。そして、In-bandコントローラ22は、ステップS509の要求に応じて、In-band5のリンクアップを行う(ステップS510)。これにより、SSD2のIn-bandコントローラ22は、ストレージコントローラ1のメモリ12に直接アクセスできるようになる。
【0113】
図12は、第5の実施形態における真正性検証処理の処理手順例を示すフローチャートである。図12は、図11のラダーチャートに示した処理のうち、ストレージコントローラ1のCTL(スイッチ14またはCPU11)によって実行される処理の処理手順を示したものであり、以下、CTLの実行主体をより明確にして詳細に説明する。
【0114】
図12によれば、Side-band制御部141がSSD2の接続を検出すると(ステップS521)、認証情報取得部151が、Side-band6を用いてSSD2にドライブ情報の提供を要求し(ステップS522)、Side-bandコントローラ21から、Side-band6を経由してSSD2のドライブ情報を受領する(ステップS523)。
【0115】
次に、認証情報取得部151は、SSD2に対応するドライブ用の正規のファームウェア(ドライブFW)をSSD2にダウンロードする(ステップS524)。図11で説明したように、このドライブFWの提供を受けて、SSD2ではドライブFWの更新が行われる。
【0116】
SSD2においてドライブFWの更新が完了した後、認証情報取得部151は、SSD2にドライブのFW情報の提供を要求し(ステップS525)、Side-bandコントローラ21からSSD2のドライブのFW情報を受領する(ステップS526)。
【0117】
次に、検証演算部153が、ステップS526で受領したFW情報に示されるドライブのバージョンが、ステップS524でSSD2にダウンロードしたドライブFWのバージョンと一致するか否かを判定する(ステップS527)。
【0118】
ステップS527においてドライブFWのバージョンが一致した場合(ステップS527のYES)、検証演算部153は、ステップS521で検出したドライブ(SSD2)が、適正なドライブであると判断する。このとき、In-band接続許可部154がIn-band接続制御プログラム123を実行して、SSD2のIn-bandコントローラ22にIn-band5のリンクの確立要求を行い、その応答処理が行われることで、In-band5でのリンクアップが開始される(ステップS528)。
【0119】
一方、ステップS527においてドライブFWのバージョンが一致しなかった場合(ステップS527のNO)、検証演算部153は、ステップS521で検出したドライブ(SSD2)が適正なドライブではなく、不正アクセスの可能性があると判断する(ステップS529)。この場合、In-band接続許可部154がIn-band接続制御プログラム123を実行して、In-band5によるリンクアップを抑止するとともに、認証失敗通知部155が、非サポートデバイスが挿入されていることをユーザに通知し(ステップS530)、処理を終了する。
【0120】
以上のように、第5の実施形態に係る情報処理装置(ストレージコントローラ1)によれば、接続されるドライブ(SSD2)がストレージコントローラ1のメモリ12にアクセスできるようになる前に、Side-band6(SMBus)を用いて、ストレージコントローラ1からドライブに対してドライブ用の正規のファームウェアを提供し、この正規のファームウェアがドライブに適用されたかに基づいてドライブの真正性を判別し、適正なドライブであった場合にのみ、メモリ12に直接アクセス可能な通信路(In-band5(PCIe))のリンクアップを許可することができる。
【0121】
(6)変形例
本発明に係る情報処理装置(ストレージコントローラ1)は、上述した各実施形態と組み合わせて、以下のような変形例を採用することができる。
【0122】
第1に、ドライブの真正性を検証する真正性検証処理は、ストレージコントローラ1へのドライブ(SSD2)の搭載時に実行するだけでなく、ストレージコントローラ1が起動されるごとに実行するようにしてもよい。このように構成することで、ストレージシステムの電源がオフになっている間にドライブに対して不正が行われた場合でも、電源オンの際に当該ドライブの真正性が検証されるため、不正なドライブがストレージコントローラ1のメモリ12にアクセスすることを防止できる。
【0123】
第2に、ストレージコントローラ1はSSD2に対する給電として、真正性検証処理によって適正なドライブであると確認されるまでは、2種類の電源(3.3V電源、12V電源)のうち、3.3V電源だけを用いるようにしてもよい。前述した通り、3.3V電源だけでもSide-band6(SMBus)を起動することができる。このように構成することで、ドライブをストレージシステムに搭載する初期段階において、12V電源をオンにすることなく、低電力でドライブの真正性を検証することができ、ドライブ搭載時の電力負荷を抑制することができる。
【0124】
第3に、真正性検証処理において適正なドライブではない(不正なドライブである)と判定された場合には、In-band5(PCIe)のリンクアップを拒否するとしたが、この場合、ストレージコントローラ1における動作は制限を受けないように構成してよい。このように構成することで、不正なドライブが搭載された場合でも、例えば特許文献1に開示された技術のようにシステムがシャットダウンされるといったことがなくなるため、不正なドライブを除いてストレージシステムとしての動作を継続することができる。
【符号の説明】
【0125】
1 ストレージコントローラ
2 SSD
3 ホストサーバ
4 ネットワーク
5 In-band
6 Side-band
10 情報処理システム
11 CPU
12 メモリ
13 ホストI/F
14 スイッチ
21 Side-bandコントローラ
22 In-bandコントローラ
23 DRAM
24 NAND
110 期待値表
120 ストレージ制御プログラム
121 接続ドライブ検証プログラム
122 Side-band接続制御プログラム
123 In-band接続制御プログラム
124 NVMeドライブ制御プログラム
141 Side-band制御部
142 In-band制御部
151 認証情報取得部
152 復号/ハッシュ計算部
153 検証演算部
154 In-band接続許可部
155 認証失敗通知部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12