説明

ファームウェア更新方法及びハードディスクドライブ

【課題】新規且つ改善された、ファームウェアの安全なダウンロードのための方法及びシステムの提供。
【解決手段】ファームウェアは、情報記憶装置によって生成された暗号化キーを用いて、ホストから情報記憶装置へ安全にダウンロードされる。暗号化キーは、ホストによるファームウェア・ダウンロード・リクエストに応答して生成される。ホストは、暗号化キーでファームウェアイメージを暗号化し(408)、暗号化されたファームウェアイメージを情報記憶装置へダウンロードする(409)。情報記憶装置は、暗号化されたファームウェアイメージを受信し(410)、当該ファームウェアイメージを復号し(411)、当該ファームウェアイメージでこのファームウェアを更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の各実施形態は情報記憶装置一般に関し、より具体的には、情報記憶装置においてファームウェアを更新する方法及びシステムに関する。
【背景技術】
【0002】
コンピューティング(computing)において、ファームウェアは、例えばマイクロコントローラ(microcontroller)等のハードウェア装置に組み込まれたコンピュータプログラムである。ファームウェアはまた、フラッシュROMに備えることも、あるいはホストによって既存のハードウェアにアップロードできる二値画像ファイルとして備えることも可能である。その名が示すとおり、ファームウェアはハードウェアとソフトウェアのおよそ中間、すなわち、プロセッサのための機械語命令から成る、ハードウェア装置のプログラム可能なコンテンツ、あるいは固定機能装置(fixed-function device)、ゲートアレイ又はプログラム可能な論理装置の構成設定である。ソフトウェアと同様に、ファームウェアはマイクロプロセッサ又はマイクロコントローラによって実行されるコンピュータプログラムであるが、ファームウェアはハードウェアの特定の要素に密接に結びつき、当該要素のために書き込まれているため、一般には装置外であるという意味を有する。
【0003】
ファームウェアは一般に、情報記憶装置において用いられ、特にディスクドライブ、光学記憶装置、固体記憶装置や磁気メディア等において用いられる。ファームウェアに共通する特徴は、追加のハードウェアを必要とせずにホストによって製造後に電気的に更新可能であることであり、例えば関連するハードウェアの機能性を向上させること、及び/又はファームウェアの旧バージョンにおける既知のバグのアドレスを指定することである。ファームウェアの更新は対象装置の機能を変更するよう修正できるため、あるいは既知の利用可能な脆弱性を有するバージョンは装置にロード可能であるため、情報記憶装置のファームウェアへのアクセスはしばしば規制される。例えばハードディスクドライブ(HDD)の場合、ファームウェアの更新は、フラッシュメモリチップ内等の、ハードドライブアッセンブリに含まれる電子回路パッケージ内に存する。HDDファームウェアへの不正なアクセスを防ぐために、ファームウェアファイル(firmware file)、すなわちファームウェアイメージ(firmware image)はHDDへダウンロードされる際に暗号化でき、ダウンロードされたファームウェアイメージへのアクセスは、HDDのパスワード保護といったセキュリティ対策(security measures)によって管理することができる。
【0004】
ダウンロード処理では、ホストが、ファームウェアの暗号化されたバージョンをHDDにダウンロードするが、このダウンロード処理の間、ホストとHDDの間に生じる通信トラフィック(communication traffic)を権限のないユーザが「詮索(snoop)」するおそれがある。例えば、ラップトップのユーザによってHDDに送信されるコマンドを監視するため、バスアナライザ(bus analyzer)がラップトップ上で使用されることがあり、ネットワークアナライザ(network analyzer)が、HDDへの遠隔ダウンロードセッション(remote-download session)中のネットワークトラフィックの監視に使用されることがある。このような通信トラフィックは通常、暗号化されたファームウェアファイル、これらのファイルを復号化するために必要な暗号化キー、更にはHDDパスワードといったセキュリティ関係のファイルを含む。このようにセキュリティ関連のファイルは、ダウンロード処理の間、権限のないユーザによって監視され得る。暗号化キーの不正な知識は、暗号化されたファイルが復号される可能性を増大させる。権限のないユーザが暗号化されたファームウェアファイルの復号に成功すれば、同じタイプの全ての装置が潜在的に攻撃可能となる。
【0005】
上述の観点から、情報記憶装置のためのファームウェア及び情報記憶装置への不正なアクセスの可能性を低減する、情報記憶装置のためのファームウェアを更新する方法が必要とされる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、本発明は、新規且つ改善された、ファームウェアの安全なダウンロードのための方法及びシステムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の1又は複数の実施形態は、情報記憶装置のためのファームウェアを更新する方法を提供し、当該ファームウェアは、情報記憶装置によって生成された暗号化キーを用いてホストから情報記憶装置へと安全にダウンロードされる。
【0008】
(1)一実施形態において、情報記憶装置のためのファームウェアを更新する方法は、ホストからファームウェアを更新するリクエストを受信するステップと、暗号化キーを生成することと、当該暗号化キーを当該ホストへ送信するステップと、前記暗号化キーによって暗号化される新たなファームウェアを当該ホストから受信するステップとを備える。
【0009】
(2)前記暗号化キーは暗号化された形式でホストへ送信され、前記暗号化キーを暗号化するのに使用されるキーは前記ホストへ送信される前記暗号化キーとは異なることを特徴とする(1)に記載の方法。
【0010】
(3)前記ホストからユーザ証明を受信するステップと、
前記ユーザ証明が認証されたら、前記暗号化キーを前記ホストへ送信するステップと、
を更に具備することを特徴とする(1)に記載の方法。
【0011】
(4)前記固有のキーは乱数として生成されることを特徴とする(1)に記載の方法。
【0012】
(5)前記ホストから受信された前記新たなファームウェアを、前記暗号化キーを用いて復号するステップと、
前記新たなファームウェアを用いて前記情報記憶装置を再プログラムするステップと、
を更に具備することを特徴とする(1)に記載の方法。
【0013】
(6)他の実施形態において、情報記憶装置のためのファームウェアを更新する方法は、ファームウェアを更新するリクエストを当該情報記憶装置に送信するステップと、当該情報記憶装置から暗号化キーを受信するステップと、当該暗号化キーを用いて新たなファームウェアを暗号化するステップと、暗号化された当該新たなファームウェアを当該情報記憶装置に送信するステップとを備える。
【0014】
(7)前記リクエスト及び前記暗号化された新たなファームウェアはネットワーク上で前記情報記憶装置へ送信されることを特徴とする(6)に記載の方法。
【0015】
(8)前記暗号化キーは暗号化された形式で前記情報記憶装置から受信され、前記暗号化キーを暗号化するのに使用されるキーは前記情報記憶装置から受信される前記暗号化キーとは異なることを特徴とする(6)に記載の方法。
【0016】
(9)前記新たなファームウェアを前記情報記憶装置へ送信するために、標準ダウンロード・マイクロコード・コマンドが用いられることを特徴とする(6)に記載の方法。
【0017】
(10)ファームウェアを更新する別のリクエストを前記情報記憶装置へ送信するステップと、
前記情報記憶装置から前記暗号化キーとは異なる別の暗号化キーを受信するステップと、
を更に具備する(6)に記載の方法。
【0018】
(11)本発明の一実施形態によれば、ハードディスクドライブは、マイクロコントローラと、当該マイクロコントローラのファームウェアを記憶するメモリユニットを備え、当該ファームウェアは、新たなファームウェアを当該マイクロコントローラにダウンロードするリクエストに応答して当該マイクロコントローラに暗号化キーを生成させる命令を含む。
【0019】
(12)新たなファームウェアを前記マイクロコントローラにダウンロードするリクエストが前記マイクロコントローラによって受信される都度、新たな暗号化キーが生成されることを特徴とする(11)に記載のハードディスクドライブ。
【0020】
(13)前記暗号化キーは乱数として生成されることを特徴とする(11)に記載のハードディスクドライブ。
【0021】
(14)前記ファームウェアは、前記マイクロコントローラに前記暗号化キーを暗号化させ前記、暗号化された暗号化キーをホストに送信させる命令を更に含むことを特徴とする(11)に記載のハードディスクドライブ。
【0022】
(15)前記暗号化キーはホストで設定されたセッションキーを用いて暗号化されることを特徴とする(11)に記載のハードディスクドライブ。
【0023】
(16)前記ファームウェアは、前記マイクロコントローラに、前記ホストから受信された暗号化された新たなファームウェアを復号させ、前記新たなファームウェアを前記メモリユニットにロードさせる命令を更に含むことを特徴とする(11)に記載のハードディスクドライブ。
【0024】
(17)前記ファームウェアは、前記暗号化キーを前記ホストへ送信するのに先立って、前記マイクロコントローラに前記ユーザを認証させる命令を更に含むことを特徴とする(11)に記載のハードディスクドライブ。
【発明の効果】
【0025】
本発明によれば、新規且つ改善された、ファームウェアの安全なダウンロードのための方法及びシステムを提供することができる。
【図面の簡単な説明】
【0026】
【図1】暗号化されたファームウェアのダウンロードを実行するよう構成され得る情報記憶装置を示すブロック図。
【図2】図1におけるプリント基板の構成要素を概略的に示すブロック図。
【図3】図2におけるシステムオンチップの構成要素を概略的に示すブロック図。
【図4】本発明の一実施形態に係る、ファームウェアイメージを情報記憶装置に安全にダウンロードする方法を示すフロー図。
【発明を実施するための形態】
【0027】
本発明の各実施形態は、ファームウェアを情報記憶装置に安全にダウンロードする方法及びシステムを意図するものであり、ホストからダウンロードされたファームウェアイメージを符号化するために、情報記憶装置によって生成された暗号化キーが用いられる。より高い安全性のため、ファームウェアのダウンロードを受ける情報記憶装置は、それぞれのファームウェア・ダウンロード・リクエストに対して固有の暗号化キーを生成してもよい。加えて、暗号化キー自体は、情報記憶装置からホストへ送信される前に暗号化されてもよい。
【0028】
図1は、暗号化されたファームウェアのダウンロードを実行するよう構成され得る情報記憶装置、すなわちディスクドライブ100の一実施形態を示すブロック図である。ディスクドライブ100の機械的な構成要素は、スピンドルモータ102によって回転される磁気ディスク101、サスペンションアーム103の一端に配置された読み出し/書き込みヘッド104を含む。アームアクチュエータ105はサスペンションアーム103に連結され、磁気ディスク101の異なるトラックにアクセスするため要求のとおりにアーム103を動かす。ディスクドライブ100の電子的な構成要素は、プリント基板PCB200及びプリアンプ(pre-amplifier)107を含み、後者は読み出し/書き込みヘッド104に電気的に接続されている。プリアンプ107は、読み出し/書き込みヘッド104への信号、及び読み出し/書き込みヘッド104からの信号を調節し増幅する。PCB200は、ディスクドライブ100を動作させるために、システムオンチップ(system-on-chip)(SoC)、RAM、及び他の集積回路を含み、以下では図2及び図3に関連して説明される。図示の通り、PCB200は、電気的接続106を介してプリアンプ107に、電気的接続108を介してスピンドルモータ102に、電気的接続109を介してアームアクチュエータ105に電気的に接続される。PCB200は、ホスト90とケーブル110を介して通信するが、ケーブル110はSATA、PATA、SCSI又は他のインタフェースであってもよい。ホスト90は、ラップトップコンピュータやデスクトップコンピュータであっても、あるいはセットトップボックス、テレヴィジョンやビデオプレーヤのような装置であってもよく、これはLANあるいはWANを通じて記憶装置にアクセスする遠隔コンピューティング装置又はコンピュータに含まれる暗号化可能な記憶装置の1又は複数のセクタへのアクセスを要求する。
【0029】
図2は、図1におけるPCB200の構成要素を概略的に示すブロック図である。PCB200はSoC300、DRAM202、フラッシュメモリ201、及びコンボチップ203を含み、DRAM202はSoC300の内部にあっても外部にあってもよく、コンボチップ203はスピンドルモータ102とアームアクチュエータ105を駆動する。コンボチップ203はまた、SoC300、プリアンプ107及びSoC300に含まれるモーターコントローラのための電圧レギュレータを含む。図示のように、フラッシュメモリ201とDRAM202はSoC300に電気的に連結され、SoC300は、ケーブル110を介してホストと、電気的接続106を介してプリアンプ107と、シリアルバス204を介してコンボチップ203とインタフェースする。実施形態によっては、フラッシュメモリ201はSoC300内に存在する。ディスクドライブ100のファームウェアはフラッシュメモリ201内に存在する。
【0030】
別の構成においては、変更不能なファームウェアのごく一部がSoC300内のリードオンリーメモリ内に存在し、ファームウェアの大部分は磁気ディスク101上に存在し、電源投入直後にロードされる。磁気ディスク101上に存在するファームウェアは、以下に述べる本発明の実施形態に従って、更新され得る。
【0031】
図3は、図2におけるSoC300の構成要素を概略的に示すブロック図である。SoC300は、ディスクドライブ100がファームウェアを安全にダウンロードするのに必要な制御及び暗号化/復号化動作を実行するように構成された、特定用途向け集積回路(application-specific integrated circuit)(ASIC)である。SoC300は特定の機能を実行するよう設計された多数の機能ブロックを含む。プロセッサ301はディスクドライブ100の動作を制御するよう構成されたマイクロコントローラであり、図示のように、SoC300の他の機能ブロックと通信するための入力/出力機能性及びRAMを含む。一実施形態において、プロセッサ301は、PCB200上でフラッシュメモリ201の近くに配置されるよりもむしろ、フラッシュメモリ201を内部に伴って構成されてもよい。SATAブロック302は、ケーブル110を介してホストへ信号を送信しホストから信号を受信するSoC300に含まれる入力/出力ブロックである。コンボチップI/Oブロック309は、シリアルバス204を介したプロセッサ301とコンボチップ203との間の通信専用のI/Oブロックである。プロセッサ301はまた、ディスクドライブ100とホスト間のデータトラフィック、特に暗号化キー等のセキュリティ関係のトラフィックを暗号化及び復号化するよう構成されている。
【0032】
暗号化/復号化ブロック303は、プロセッサ301の制御下にあり、SATAブロック302とSoC300の他の全ての構成要素との間のデータパスに配置され、安全な記憶のため入ってくるデータを暗号化し、ホストによる使用のため出ていくデータを復号する。すなわち、暗号化/復号化ブロック303は、SATAブロック302を介してホストから入力データ(例えば書き込みデータ)を受信して暗号化し、SATAブロック302を介してホストへ出力データ(例えばディスクドライブ100からアクセスされた読み出しデータ)を復号して送信する。暗号化/復号化ブロック303は、暗号化キーを保持しデータトラフィックの暗号化/復号化の間データをバッファするメモリに加えて所望の暗号化アルゴリズムを実施する状態機械(state machine)も含む。動作中、暗号化/復号化ブロック303は、ホストからのデータを暗号化されていない形式で受信する。適切な暗号化キーが、入ってくるデータと共に用いられるために提供されると、当該データは暗号化/復号化ブロック303によって暗号化され、DRAM202又は磁気ディスク101に記憶される。ホストが記憶されたデータを取り出す場合、暗号化されていないデータをホストが受信するよう、暗号化/復号化ブロック303は、SATAブロック302による送信に先立ってデータを復号する。
【0033】
DRAMコントローラ304は、ディスクドライブ100の適切な動作についての必要に応じて、暗号化/復号化ブロック303、プロセッサ301、読み出し/書き込みチャネル305及びエラー訂正及び生成ブロック306からDRAM202へアクセスできるようにして、DRAM202をリフレッシュしDRAM202の使用を調整する。DRAM202は、磁気ディスク101に書き込まれている又は磁気ディスク101から読み出されているデータ、暗号化の後ホストから受信されるデータのDRAMバッファとして機能する。DRAM202は、図示のようにSoC300の外部にあってもよいが、あるいはSoC300内に含まれる機能ブロックの1つを構成してもよい。磁気ディスク101からのエラーの無いデータ取り出しのためには、復号化及びホストへの送信のためにデータがDRAM202にバッファされる前に、エラー訂正ブロック306は磁気ディスク101から読み出されたデータに対してエラー訂正を適用する。加えて、データが磁気ディスク101に書き込みされている時は、エラー訂正ブロック306は、磁気ディスク101からのデータ読み出しについてエラー訂正が可能となるように、当該データに情報を付加する。
【0034】
ホストが磁気ディスク101からデータを読み出すにためは、読み出し/書き込みヘッド104によって磁気ディスク101からデータが読み出され、プリアンプ107によって調整され、電気的接続106Aによってアナログ・デジタル変換器307へアナログ信号として運ばれる。アナログ・デジタル変換器307はアナログ信号をデジタル信号311に変換し、デジタル信号311はスプリッタブロック308に送られる。モータ105を用いるアームアクチュエータ103及びスピンドルモータ102の最適な制御のため、スプリッタブロック308は、デジタル信号311から、適切なサーボ関連のデータをサーボブロック310へ送る。スプリッタブロック308は、ホストによって要求されたデータを読み出し/書き込みチャネル305へ送り、読み出し/書き込みチャネル305はエラー訂正ブロック306を介して当該データをDRAM202に送るが、これは当該データが復号され及びホストに送信され得るまでバッファするためである。
【0035】
ホストによる磁気ディスク101上へのデータの記憶のため、暗号化されたデータは必要に応じてDRAM202にバッファされ、エラー訂正ブロック306を介した後、読み出し/書き込みチャネル305へ送られる。読み出し/書き込みチャネル305はその後電気的接続106Bを介してプリアンプ107へデジタル信号を送り、プリアンプ107は、読み出し/書き込みヘッド104が磁気ディスク101に暗号化されたデータを書き込めるように、デジタル信号を調節及び増幅する。暗号化されたデータはディスクドライブ100に含まれる記憶メディア、たとえばDRAM202や磁気ディスク101内に存在することが、当業者には理解されるだろう。
【0036】
図4は、本発明の一実施形態による、ハードディスクドライブといった情報記憶装置にファームウェアイメージを安全にダウンロードする方法400を示すフロー図である。例えば、方法400は、本明細書中に述べるように、図1におけるディスクドライブ100と構成及び動作が同様のディスクドライブで実行されてもよい。方法400を構成するステップは2列に配列されるが、ホストによって実行されるステップは左の列に配置され、記憶装置によって実行されるステップは右の列に配置される。
【0037】
ステップ401では、ホストと記憶装置の間に通信セッションが設定される。本明細書中に説明される実施形態においては、ネットワーク上のトラフィックを観察する誰もが伝送されるメッセージを読むことができないよう、通信セッションは暗号化される。ホスト及び記憶装置は、ユーザが記憶装置に―ネットワークユーザがネットワーク端末にログインするのとほぼ同じ方法で―ログインすると、通信セッションを設定する。ホストはラップトップ又はデスクトップコンピュータであってよく、ハードディスクドライブといった当該コンピュータに含まれる暗号化可能な記憶装置の1又は複数のセクタへのアクセス、すなわち書き込み/読み出し権限をリクエストする。あるいは、ホストは例えばネットワークコンピュータ又はターミナル等の遠隔コンピューティング装置であってもよく、LAN又はWANを通じて当該記憶装置にアクセスする。権限のないユーザによる記憶装置へのアクセスを防ぐため、記憶装置のためのファームウェアをダウンロードする能力と同様に、記憶装置の一部又は全部はパスワード保護されている。一実施形態において、特定の許諾レベルを設定するため、例えば、ホストは、ユーザID及び関連するアクセスコードといったある種のユーザ証明(user credential)を記憶装置に送信する必要がある。許諾レベルが異なれば、記憶装置の異なる部分へのアクセス及び/又は記憶装置へのファームウェアのダウンロード許可が与えられる。
【0038】
一実施形態においては、ダブルパスワード(double password)スキームがログインの認証に用いられる。このようなアプローチでは、2部パスワード(two part password)及び固有のキー暗号化キー(key encryption key)(KEK)が各“ユーザ”に関連付けられる。パスワードの第1部分P1、パスワードの第2部分P2、及びKEKは固定値の乱数又は英数字の組み合わせであって、ユーザごとに異なり、以下に述べるように暗号化キーとして用いられる。P1、P2及びKEKは、例えば256ビットの大きな数であり、従って、推測し難い。KEKは、例えばAES(advanced encryption standard)キーラップ(key-wrap)プロトコルで用いられてもよく、記憶装置及びホストメモリ双方により既知である、すなわち記憶装置及びホストメモリ双方の内部に存在する。しかしながら、記憶装置において2部パスワードは暗号化されない形式では保持されない。従って、特定のホストログインに要する全ての情報は記憶装置上に存在しない。代わりに、ユーザが記憶装置上で最初に設定されると、P2はP1を暗号化キーとして用いて暗号化され記憶装置に記憶される。暗号化されないP1はその後、ユーザ・セットアップ・プロシージャ(user setup procedure)の一部として記憶装置から消去される。一実施形態において、AES−256を利用しP1を暗号化キーとして用いてP2が暗号化される。
【0039】
ホストと記憶装置の間で安全な通信セッションを設定するには、P1及びP2はホストから記憶装置に第1のパッケージ、すなわちパッケージ1で送られる。パッケージ1を形成するには、P2がホストソフトウェアによって選択された乱数又は英数字の組み合わせR1と混合される。2つの数を混合する技術的に知られた一例は、XOR演算である。P1はその後、P2−R2の組み合わせに連結されるか、そうでなければ当該組み合わせと共にパッケージされる。パッケージ1はその後、ホストに関連するKEKを用いてキーラップされ(key-wrapped)、記憶装置に送られる。記憶装置は、記憶装置内に存在するKEKを用いてパッケージ1をアンラップ(unwrap)する。記憶装置はその後、P1を暗号化キーとして用いて、現在ログインしているホストに関連する記憶装置内に存在するP2の暗号化されたバージョンを復号する。P2が与えられると、記憶装置はP2及びR1の混合を解くことができる。R1はここでホスト及び記憶装置に知られ、固有セッションキー(unique session key)あるいは2部分からなる固有セッションキーの一部として使用され得る。固有セッションキーの使用は、所定のホスト及びKEKと関連する一方向性関数(one-way function)についてKEKの完全な知識があったとしても、権限のない人員には記憶装置とホストの間のデータトラフィックを復号できないことを保証する。
【0040】
より堅固なセッションキーのため、第2の乱数又は英数字の組み合わせR2が記憶装置によって以下の方法で生成される。P1、P2及びR1が決定されると、記憶装置はR2をP2と混合して(例えば、R2及びP2にXOR演算を実行することによって)パッケージ2を形成する。記憶装置はKEKを用いてパッケージ2をキーラップし、暗号化されたパッケージ2をホストへ送信する。ホストはその後、パッケージ2をアンラップしてP2からR2の混合を解き、ホスト及び記憶装置の両方がR1及びR2の値を得て、その結果R1とR2の組み合わせを固有セッションキーとして使用できるようにする。これ以降、ホストと記憶装置との間のデータトラフィックは、R1及びR2で構成される固有セッションキーを用いて暗号化できる。
【0041】
このように、安全性の向上のため、暗号化キーを明白に送信することなく、また記憶装置アクセスを設定するのに要する全ての情報を記憶装置上に記憶することなく、ホスト及び記憶装置の間で固有セッションキーを設定することができる。いったん安全な通信セッションが設定されると、ホストと記憶装置間でのその後のデータトラフィックは詮索から保護されるが、これは全てのデータトラフィックがR1及びR2からなる固有セッションキーを用いて暗号化されるためである。これらの技術の詳細な説明はまた、2008年3月31日に提出された「記憶装置及び暗号化方法」と題された米国特許出願12/060,182に基づく日本出願2009−018593に記載されている。当業者には、ホストと記憶装置の間で安全な通信セッションを設定するのに、他のログインスキームもまたステップ401において用いられてもよいことが理解されるだろう。
【0042】
ステップ402では、ユーザはホストを介して、ファームウェアを記憶装置にダウンロードする許可をリクエストする。このリクエストは、R1及びR2から生成された固有セッションキーによってもたらされる安全なデータ交換を通じて成される。
【0043】
ステップ403では、記憶装置は、固有セッションキーを用いてホストから受信したデータトラフィックを復号することによって、当該リクエストを受信する。
【0044】
ステップ404では、記憶装置はユーザがファームウェアダウンロード権を有するかを確認する。この権利は、ユーザが最初に設定される際に、記憶装置において定義される。例えば、ダウンロード権は通常、管理役を果たすユーザに与えられる。
【0045】
ステップ405では、記憶装置はファームウェアダウンロード権を持たないユーザを決定しており、ユーザがファームウェアを記憶装置にダウンロードするための許可は拒否される。
【0046】
ステップ406では、記憶装置はファームウェアダウンロード権を有するユーザを決定しており、記憶装置は“許可スリップ(permission slip)”を発行する。許可スリップの一例は、暗号化キーである。安全性の向上のため、許可スリップは、記憶装置によって生成された乱数に基づく使い捨ての暗号化キーであってもよく、従って一回のファームウェアダウンロードに対してのみ有効である。ホストが別のファームウェアダウンロードの許可をリクエストすると、ステップ403〜405が記憶装置によって繰り返される。詮索に対する安全のため、許可スリップはKEKを用いてキーラップされ、ラップされた許可スリップを含むデータトラフィックはR1及びR2に基づく固有セッションキーを用いて暗号化される。
【0047】
ステップ407では、ホストはセッションキー及びKEKを用いて記憶装置が提供する暗号化された許可スリップを受信して復号し、2つの暗号化の層をアンラップする。
【0048】
ステップ408では、ホストは許可スリップを暗号化キーとして用いてファームウェアイメージを暗号化する。一実施形態において、許可スリップを得るために用いられたのと同様のトラフィックのスタイルを用いて、暗号化されたファームウェアイメージがディスクドライブに届くと、セッションキーを用いる更なる暗号化の層が使用される。
【0049】
ステップ409では、ホストはファームウェアを記憶装置にダウンロードする。一実施形態においては、これはスタンダードATAダウンロード・マイクロコード・コマンド(standard ATA download microcode command)を用いて行われる。
【0050】
ステップ410では、記憶装置は、暗号化されたファームウェアダウンロードを受信する。
【0051】
ステップ411では、許可スリップを用いて、また、もし更なる暗号化の層が使われていればまずセッションキーを用いて、記憶装置は暗号化されたファームウェアダウンロードを復号する。
【0052】
ステップ412では、記憶装置はファームウェアダウンロードを装置の必須のフラッシュメモリブロックに実装する。ファームウェアの可変部分が磁気ディスク上に存在する実施形態では、このステップは磁気ディスク上に存在するファームウェアを更新する。
【0053】
加えて、スタンダードATAダウンロード・マイクロコード関数呼び出しといった関数呼び出しのため、監査ログ(audit log)が記憶装置によって保持される。この関数呼び出しの開始時に、監査ログでは新しいエントリが生成される。この関数が実行されると、この関数を呼び出した認証されたユーザについてのデータを含んで、この新しいエントリのフィールドが満たされる。この関数が終了すると、その最終状態が満たされる。
【0054】
方法400は、本明細書中で説明されるように、ファームウェアを記憶装置にダウンロードするための当技術分野で既知の方法よりも多くの利点をもたらす。第1に、ホストと記憶装置の間で安全なリンクを設定するために用いられる他の暗号化スキームに加えて、ファームウェアダウンロードは更なる暗号化の層で、すなわち許可スリップで保護される。第2に、ファームウェアダウンロードについて、パスワード強度が保証される。ユーザが選択したパスワードとは異なり、方法400の許可スリップは盗まれたり推測されたりはされ得ないが、このようなことは一般に、例えば日付、名前等の弱いパスワードがユーザによって選択される場合に生じる。これは、許可スリップが、プログラム可能な装置により自動化された方法で選択された乱数に基づくためである。第3に、複数のファームウェアダウンロードセッションは、同じ通信セッション中に同じユーザによって実行されたとしても、記憶装置の安全性をそれほどには損ねないが、これは、個々のファームウェダウンロードリクエストについて、固有の許可スリップがホストに対して発行されるためである。
【0055】
方法400はその上、他の利点も有する。第1に、ファームウェアの更新は現在認証された機能である。装置のためにファームウェアを有することは充分ではない。ユーザは特定の記憶装置について管理者の役割を負う権限を受けなくてはならず、またファームウェアをダウンロードする権利を予め与えられていなくてはならない。第2に、当該更新は既存のホストインタフェース“ダウンロード・マイクロコード”機能及びこれをサポートする何らかの関連するインフラストラクチャを用いる。第3に、許可スリップのリクエスト及び結果としてもたらされるファームウェアイメージは、何者にもコンテンツの詮索が可能となること無しに、ネットワーク上で配信され得る。
【0056】
上記の記載は本発明の各実施形態を対象にしているが、本発明の他の更なる実施形態が本発明の基本的な範囲を逸脱することなく考案されてもよく、本発明の範囲は以下の特許請求の範囲によって決定される。
【符号の説明】
【0057】
90…ホスト、100…ディスクドライブ、101…磁気ディスク、102…スピンドルモータ、103…サスペンションアーム、104A,B…読み出し/書き込みヘッド、105…アクチュエータアーム、106、108、109…電気的接続、107…プリアンプ、110…ケーブル、200…プリント基板

【特許請求の範囲】
【請求項1】
情報記憶装置のためのファームウェアを更新する方法であって、
ホストからファームウェアを更新するリクエストを受信するステップと、
暗号化キーを生成するステップと、
前記暗号化キーを前記ホストへ送信するステップと、
前記暗号化キーによって暗号化される新たなファームウェアを前記ホストから受信するステップと、
を具備することを特徴とするファームウェア更新方法。
【請求項2】
前記暗号化キーは暗号化された形式でホストへ送信され、前記暗号化キーを暗号化するのに使用されるキーは前記ホストへ送信される前記暗号化キーとは異なることを特徴とする請求項1に記載のファームウェア更新方法。
【請求項3】
前記ホストからユーザ証明を受信するステップと、
前記ユーザ証明が認証されたら、前記暗号化キーを前記ホストへ送信するステップと、
を更に具備することを特徴とする請求項1に記載のファームウェア更新方法。
【請求項4】
前記固有のキーは乱数として生成されることを特徴とする請求項1に記載のファームウェア更新方法。
【請求項5】
前記ホストから受信された前記新たなファームウェアを、前記暗号化キーを用いて復号するステップと、
前記新たなファームウェアを用いて前記情報記憶装置を再プログラムするステップと、
を更に具備することを特徴とする請求項1に記載のファームウェア更新方法。
【請求項6】
情報記憶装置のためのファームウェアを更新する方法であって、
ファームウェアを更新するリクエストを前記情報記憶装置へ送信するステップと、
前記情報記憶装置から暗号化キーを受信するステップと、
前記暗号化キーを用いて新たなファームウェアを暗号化するステップと、
前記暗号化された新たなファームウェアを前記情報記憶装置へ送信するステップと、
を具備することを特徴とするファームウェア更新方法。
【請求項7】
前記リクエスト及び前記暗号化された新たなファームウェアはネットワーク上で前記情報記憶装置へ送信されることを特徴とする請求項6に記載のファームウェア更新方法。
【請求項8】
前記暗号化キーは暗号化された形式で前記情報記憶装置から受信され、前記暗号化キーを暗号化するのに使用されるキーは前記情報記憶装置から受信される前記暗号化キーとは異なることを特徴とする請求項6に記載のファームウェア更新方法。
【請求項9】
前記新たなファームウェアを前記情報記憶装置へ送信するために、標準ダウンロード・マイクロコード・コマンドが用いられることを特徴とする請求項6に記載のファームウェア更新方法。
【請求項10】
ファームウェアを更新する別のリクエストを前記情報記憶装置へ送信するステップと、
前記情報記憶装置から前記暗号化キーとは異なる別の暗号化キーを受信するステップと、
を更に具備する請求項6に記載のファームウェア更新方法。
【請求項11】
マイクロコントローラと、
前記マイクロコントローラのファームウェアを記憶するメモリユニットと、を具備するハードディスクドライブであって、
前記ファームウェアは、新たなファームウェアを前記マイクロコントローラにダウンロードするリクエストに応答して前記マイクロコントローラに暗号化キーを生成させる命令を含むことを特徴とするハードディスクドライブ。
【請求項12】
新たなファームウェアを前記マイクロコントローラにダウンロードするリクエストが前記マイクロコントローラによって受信される都度、新たな暗号化キーが生成されることを特徴とする請求項11に記載のハードディスクドライブ。
【請求項13】
前記暗号化キーは乱数として生成されることを特徴とする請求項11に記載のハードディスクドライブ。
【請求項14】
前記ファームウェアは、前記マイクロコントローラに前記暗号化キーを暗号化させ前記、暗号化された暗号化キーをホストに送信させる命令を更に含むことを特徴とする請求項11に記載のハードディスクドライブ。
【請求項15】
前記暗号化キーはホストで設定されたセッションキーを用いて暗号化されることを特徴とする請求項11に記載のハードディスクドライブ。
【請求項16】
前記ファームウェアは、前記マイクロコントローラに、前記ホストから受信された暗号化された新たなファームウェアを復号させ、前記新たなファームウェアを前記メモリユニットにロードさせる命令を更に含むことを特徴とする請求項11に記載のハードディスクドライブ。
【請求項17】
前記ファームウェアは、前記暗号化キーを前記ホストへ送信するのに先立って、前記マイクロコントローラに前記ユーザを認証させる命令を更に含むことを特徴とする請求項11に記載のハードディスクドライブ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2010−20750(P2010−20750A)
【公開日】平成22年1月28日(2010.1.28)
【国際特許分類】
【出願番号】特願2009−19736(P2009−19736)
【出願日】平成21年1月30日(2009.1.30)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】