図面 (/)
課題
解決手段
本発明の実施形態による格納装置は、 第1メモリと、前記第1メモリのパーティションを識別するメモリパーティション識別子、第1メモリのパーティションでメモリ領域のための論理ブロックアドレスを表示する開始アドレス情報、及び第1メモリのパーティションでメモリ領域の大きさを表示する大きさ情報を格納する第2メモリと、を含み、第2メモリは、開始アドレス情報及び大きさ情報に関連された書込み可能情報を格納し、前記書込み可能情報は、前記メモリ領域に書込み防止を適用するか否かを表示する。
概要
背景
ストレージシステム(storage system)はホスト(host)と格納装置(storage device)とで構成され、UFS(universal flash storage)、SATA(serial ATA)、SCSI(small computer small interface)、SAS(serial attached SCSI)、eMMC(embedded MMC)等のような多様なインターフェイス標準を介して連結される。
従来の格納装置はホストから予め定められたコマンドを使用すれば、誰でも書込み防止を設定し、解除することができる。また、書込み防止属性も該当コマンドを使用して、ストレージの全体、パーティション(partition)の全体、又はパーティションを一定の大きさに分けたグループ(group)別に指定することができる。いずれも、書込み防止を設定しても誰でも書込み防止を解除するか、或いは書込み防止の構成を変更することができる。
また、従来は最初に特定パーティションを書込み防止属性適用を目的に分けて使用すると、以後のパーティションの大きさ変更が動的に不可能であるので、柔軟な書込み防止適用が難しかった。パーティションを定まった大きさに分けたグループ(group)毎に属性を指定して使用すれば、動的な運営は可能であるが、格納装置の格納空間を浪費することになる。
例えば、アンドロイドシステムでは、ブートローダ(boot loader)やカーネルイメージ(kernel image)に書込み防止を設定することができる。しかし、誰でも書込み防止設定を解除し、構成を変更できるので、ルート化(rooting)のような許可されない変更に曝される危険が存在する。
概要
コマンドの認証手続を通じて書込み防止を設定又は解除するか、或いは書込み防止属性を変更できるストレージシステムを提供する。 本発明の実施形態による格納装置は、 第1メモリと、前記第1メモリのパーティションを識別するメモリパーティション識別子、第1メモリのパーティションでメモリ領域のための論理ブロックアドレスを表示する開始アドレス情報、及び第1メモリのパーティションでメモリ領域の大きさを表示する大きさ情報を格納する第2メモリと、を含み、第2メモリは、開始アドレス情報及び大きさ情報に関連された書込み可能情報を格納し、前記書込み可能情報は、前記メモリ領域に書込み防止を適用するか否かを表示する。
目的
本発明は上述した技術的問題点を解決するために提案されたものであって、本発明の目的はコマンドの認証手続を通じて書込み防止を設定又は解除するか、或いは書込み防止属性を変更できるストレージシステムを提供する
効果
実績
- 技術文献被引用数
- 0件
- 牽制数
- 0件
この技術が所属する分野
請求項1
第1メモリと、前記第1メモリのパーティションを識別するメモリパーティション識別子、前記第1メモリのパーティションでメモリ領域のための論理ブロックアドレスを表示する開始アドレス情報、及び前記第1メモリのパーティションで前記メモリ領域の大きさを表示する大きさ情報を格納する第2メモリと、を含み、前記第2メモリは、前記開始アドレス情報及び前記大きさ情報に関連された書込み可能情報を格納し、前記書込み可能情報は、前記メモリ領域に書込み防止を適用するか否かを表示する格納装置。
請求項2
前記第2メモリは、前記開始アドレス情報及び前記大きさ情報に関連されたタイプ情報を格納し、前記タイプ情報は、前記メモリ領域を提供するために書込み防止のタイプを表示する請求項1に記載の格納装置。
請求項3
格納装置の動作方法において、要請メッセージ認証コード及び書込み防止情報を含む要請を受信する段階と、開始アドレス情報と大きさ情報との中で少なくとも1つ及び前記格納装置に格納されたキー(Key)に基づいてメッセージ認証コードを生成する段階と、前記生成されたメッセージ認証コード及び前記要請メッセージ認証コードに基づいて前記要請を認証する段階と、前記要請を認証する段階の結果に基づいて前記要請を処理する段階と、を含み、前記書込み防止情報は、開始アドレス情報と前記大きさ情報との中で少なくとも1つを含み、前記開始アドレス情報は、前記格納装置の不揮発性メモリでメモリ領域の開始に対応する論理ブロックアドレスを表示し、前記大きさ情報は、前記メモリ領域の大きさを表示する動作方法。
請求項4
前記書込み防止情報は、前記開始アドレス情報及び前記大きさ情報を全て含み、前記メッセージ認証コードを生成する段階は、前記開始アドレス情報、前記大きさ情報、及び前記キー(Key)に基づいて前記メッセージ認証コードを生成する請求項3に記載の動作方法。
請求項5
前記書込み防止情報は、前記アドレス情報、前記大きさ情報、及び前記不揮発性メモリでパーティションを識別するパーティション識別子を含み、前記メッセージ認証コードを生成する段階で、前記メッセージ認証コードが前記開始アドレス情報、前記大きさ情報、及び前記パーティション識別子に基づいて生成される請求項3に記載の動作方法。
請求項6
前記書込み防止情報は、前記開始アドレス情報、前記大きさ情報、前記パーティション識別子、及び前記メモリ領域に書込み防止を適用するか否かを表示する書込み可能情報を含み、前記メッセージ認証コードを生成する段階で、前記メッセージ認証コードが前記開始アドレス情報、前記大きさ情報、前記パーティション識別子、前記書込み可能情報及び前記キー(Key)に基づいて生成される請求項5に記載の動作方法。
請求項7
前記書込み防止情報は、前記開始アドレス情報、前記大きさ情報、前記パーティション識別子、前記書込み可能情報、及び前記メモリ領域を提供するために書込み防止のタイプを表示するタイプ情報を含み、前記メッセージ認証コードを生成する段階で、前記メッセージ認証コードが前記開始アドレス情報、前記大きさ情報、前記パーティション識別子、前記書込み可能情報、前記タイプ情報、及び前記キー(Key)に基づいて生成される請求項6に記載の動作方法。
請求項8
前記タイプ情報は、少なくとも第1タイプを含むグループから選択されたタイプを表示し、前記第1タイプは、前記書込み可能情報が前記不揮発性メモリのパワーオン(Poweron)の後に1回変更されることと、前記書込み可能情報が前記不揮発性メモリのパワーオン(Poweron)の時に書込み防止を適用するように表示することと、を表示する請求項7に記載の動作方法。
請求項9
前記グループは、前記第1タイプ、第2タイプ、及び第3タイプを含み、前記第2タイプは、前記書込み可能情報の変更の可否と、前記書込み可能情報が前記不揮発性メモリ装置のパワーオン(Poweron)の後に書込み防止の非適用と、を表示することを表示し、前記第3タイプは、前記書込み可能情報の変更の可否を表示する請求項8に記載の動作方法。
請求項10
前記メッセージ認証コードを生成する段階は、HMAC(Hash−basedMessageAuthenticationCode)を生成する請求項3に記載の動作方法。
請求項11
前記要請を認証する段階は、前記メッセージ認証コードを前記要請メッセージ認証コードにはマッチングされる場合に前記要請を認証し、前記要請を処理する段階は、前記要請が認証される場合に前記要請を処理する請求項3に記載の動作方法。
請求項12
前記要請は、前記要請に含まれた情報と共に前記書込み防止情報をアップデートするように前記格納装置に要請する請求項3に記載の動作方法。
請求項13
前記要請を処理する段階は、前記要請が処理される場合、アップデートカウンタを増加させる段階と、前記要請が処理される場合、前記アップデートカウンタのカウント値を含む応答メッセージを伝送する段階と、を含む請求項12に記載の動作方法。
請求項14
前記要請を処理する段階は、前記要請が処理される場合に前記要請に応答して応答メッセージを伝送する段階を含む請求項3に記載の動作方法。
請求項15
前記要請を処理する段階は、前記書込み防止情報を格納する段階を含む請求項3に記載の動作方法。
請求項16
格納装置の動作方法において、前記格納装置内の不揮発性メモリの第1領域にデータを書き込むようにする書込みコマンドを受信する段階と、前記第1領域によってカバーされる1つ以上のメモリ領域に対する格納された書込み防止情報に基づいて、各メモリ領域で前記書込みコマンドの処理の可否を決定する段階と、を含み、前記書込み防止情報は、前記各メモリ領域の開始に対応する論理ブロックアドレスを表示する開始アドレス情報、前記各メモリ領域の大きさを表示する大きさ情報、及び前記各メモリ領域に対する書込み防止の適用の可否を表示する書込み可能情報を含む動作方法。
請求項17
前記書込みコマンドの処理の可否を決定する段階で、前記第1領域が書込み防止を適用することを表示する書込み可能情報と連関された前記メモリ領域の中で1つと重なる場合、前記書込みコマンドは、処理されないように決定される請求項16に記載の動作方法。
請求項18
前記書込みコマンドの処理の可否を決定する段階で、前記書込みコマンドと連関されたアドレスが前記メモリ領域の中で1つ内に属する場合、前記第1領域は、前記メモリ領域の中で1つと重なるように決定される請求項16に記載の動作方法。
請求項19
前記書込み防止情報は、前記各メモリ領域に対して、前記不揮発性メモリで前記各メモリ領域を含むパーティションを識別するパーティション識別子をさらに含み、前記大きさ情報が基準値で設定される場合、前記大きさ情報は、書込み防止されるように識別されたパーティションの全体を表示し、前記書込みコマンドの処理の可否を決定する段階で、前記第1領域が前記基準値で設定された大きさ情報と連関された前記メモリ領域の中で1つと重なる場合、前記書込みコマンドは、処理されないように決定される請求項16に記載の動作方法。
請求項20
不揮発性メモリと、要請メッセージ認証コード及び書込み防止情報を含む要請を受信するコントローラと、を含み、前記書込み防止情報は、開始アドレス情報と前記大きさ情報との中で少なくとも1つを含み、前記開始アドレス情報は、前記不揮発性メモリのメモリ領域の開始に対応する論理ブロックアドレスを表示し、前記大きさ情報は、前記メモリ領域の大きさを表示し、前記コントローラは、前記開始アドレス情報と前記大きさ情報との中で少なくとも1つ及び前記格納装置に格納されたキー(Key)に基づいてメッセージ認証コードを生成し、前記コントローラは、前記生成されたメッセージ認証コード及び前記要請メッセージ認証コードには基づいて前記要請を認証し、前記コントローラは、前記認証結果に基づいて前記要請を処理する格納装置。
請求項21
不揮発性メモリと、前記不揮発性メモリの第1領域にデータを書き込むようにする書込みコマンドを受信し、前記第1領域によってカバーされる1つ以上のメモリ領域に対する格納された書込み防止情報に基づいて各メモリ領域で前記書込みコマンドの処理の可否を決定するコントローラと、を含み、前記書込み防止情報は、前記各メモリ領域の開始に対応する論理ブロックアドレスを表示する開始アドレス情報、前記各メモリ領域の大きさを表示する大きさ情報、及び前記各メモリ領域に対する書込み防止の適用の可否を表示する書込み可能情報を含む格納装置。
技術分野
背景技術
0002
ストレージシステム(storage system)はホスト(host)と格納装置(storage device)とで構成され、UFS(universal flash storage)、SATA(serial ATA)、SCSI(small computer small interface)、SAS(serial attached SCSI)、eMMC(embedded MMC)等のような多様なインターフェイス標準を介して連結される。
0003
従来の格納装置はホストから予め定められたコマンドを使用すれば、誰でも書込み防止を設定し、解除することができる。また、書込み防止属性も該当コマンドを使用して、ストレージの全体、パーティション(partition)の全体、又はパーティションを一定の大きさに分けたグループ(group)別に指定することができる。いずれも、書込み防止を設定しても誰でも書込み防止を解除するか、或いは書込み防止の構成を変更することができる。
0004
また、従来は最初に特定パーティションを書込み防止属性適用を目的に分けて使用すると、以後のパーティションの大きさ変更が動的に不可能であるので、柔軟な書込み防止適用が難しかった。パーティションを定まった大きさに分けたグループ(group)毎に属性を指定して使用すれば、動的な運営は可能であるが、格納装置の格納空間を浪費することになる。
例えば、アンドロイドシステムでは、ブートローダ(boot loader)やカーネルイメージ(kernel image)に書込み防止を設定することができる。しかし、誰でも書込み防止設定を解除し、構成を変更できるので、ルート化(rooting)のような許可されない変更に曝される危険が存在する。
先行技術
0005
米国特許第8,296,467号公報
米国特許第8,392,683号公報
米国特許第8,621,620号公報
米国特許公開第2012/0255017号明細書
米国特許公開第2013/0268778号明細書
発明が解決しようとする課題
0006
本発明は上述した技術的問題点を解決するために提案されたものであって、本発明の目的はコマンドの認証手続を通じて書込み防止を設定又は解除するか、或いは書込み防止属性を変更できるストレージシステムを提供することにある。
本発明の他の目的は書込み防止領域をパーティションの全体又はパーティションを定められた大きさに分けたグループ単位に指定せず、ホストのLBA単位に指定するストレージシステムの動作方法を提供することにある。
課題を解決するための手段
0007
本発明の実施形態による格納装置は、第1メモリと、前記第1メモリのパーティションを識別するメモリパーティション識別子、前記第1メモリのパーティションでメモリ領域のための論理ブロックアドレスを表示する開始アドレス情報、及び前記第1メモリのパーティションで前記メモリ領域の大きさを表示する大きさ情報を格納する第2メモリと、を含み、前記第2メモリは、前記開始アドレス情報及び前記大きさ情報に関連された書込み可能情報を格納し、前記書込み可能情報は、前記メモリ領域に書込み防止を適用するか否かを表示する。
実施形態として、前記第2メモリは、前記開始アドレス情報及び前記大きさ情報に関連されたタイプ情報を格納し、前記タイプ情報は、前記メモリ領域を提供するために書込み防止のタイプを表示する。
0008
本発明の実施形態による格納装置の動作方法は、要請メッセージ認証コード及び書込み防止情報を含む要請を受信する段階と、開始アドレス情報と大きさ情報との中で少なくとも1つ及び前記格納装置に格納されたキー(Key)に基づいてメッセージ認証コードを生成する段階と、前記生成されたメッセージ認証コード及び前記要請メッセージ認証コードに基づいて前記要請を認証する段階と、前記要請を認証する段階の結果に基づいて前記要請を処理する段階と、を含み、前記書込み防止情報は、開始アドレス情報と前記大きさ情報との中で少なくとも1つを含み、前記開始アドレス情報は、前記格納装置の不揮発性メモリでメモリ領域の開始に対応する論理ブロックアドレスを表示し、前記大きさ情報は、前記メモリ領域の大きさを表示する。
0009
実施形態として、前記書込み防止情報は、前記開始アドレス情報及び前記大きさ情報を全て含み、前記メッセージ認証コードを生成する段階は、前記開始アドレス情報、前記大きさ情報、及び前記キー(Key)に基づいて前記メッセージ認証コードを生成する。
実施形態として、前記書込み防止情報は、前記アドレス情報、前記大きさ情報、及び前記不揮発性メモリでパーティションを識別するパーティション識別子を含み、前記メッセージ認証コードを生成する段階で、前記メッセージ認証コードが前記開始アドレス情報、前記大きさ情報、及び前記パーティション識別子に基づいて生成される。
0010
実施形態として、前記書込み防止情報は、前記開始アドレス情報、前記大きさ情報、前記パーティション識別子、及び前記メモリ領域に書込み防止を適用するか否かを表示する書込み可能情報を含み、前記メッセージ認証コードを生成する段階で、前記メッセージ認証コードが前記開始アドレス情報、前記大きさ情報、前記パーティション識別子、前記書込み可能情報及び前記キー(Key)に基づいて生成される。
0011
実施形態として、前記書込み防止情報は、前記開始アドレス情報、前記大きさ情報、前記パーティション識別子、前記書込み可能情報、及び前記メモリ領域を提供するために書込み防止のタイプを表示するタイプ情報を含み、前記メッセージ認証コードを生成する段階で、前記メッセージ認証コードが前記開始アドレス情報、前記大きさ情報、前記パーティション識別子、前記書込み可能情報、前記タイプ情報、及び前記キー(Key)に基づいて生成される。
0012
実施形態として、前記タイプ情報は、少なくとも第1タイプを含むグループから選択されたタイプを表示し、前記第1タイプは、前記書込み可能情報が前記不揮発性メモリのパワーオン(Power on)の後に1回変更されることと、前記書込み可能情報が前記不揮発性メモリのパワーオン(Power on)の時に書込み防止を適用するように表示することと、を表示する。
実施形態として、前記グループは、前記第1タイプ、第2タイプ、及び第3タイプを含み、前記第2タイプは、前記書込み可能情報の変更の可否と、前記書込み可能情報が前記不揮発性メモリ装置のパワーオン(Power on)の後に書込み防止の非適用と、を表示することを表示し、前記第3タイプは、前記書込み可能情報の変更の可否を表示する。
0013
実施形態として、前記メッセージ認証コードを生成する段階は、HMAC(Hash−based Message Authentication Code)を生成する。
実施形態として、前記要請を認証する段階は、前記メッセージ認証コードを前記要請メッセージ認証コードにはマッチングされる場合に前記要請を認証し、前記要請を処理する段階は、前記要請が認証される場合に前記要請を処理する。
実施形態として、前記要請は、前記要請に含まれた情報と共に前記書込み防止情報をアップデートするように前記格納装置に要請する。
0014
実施形態として、前記要請を処理する段階は、前記要請が処理される場合、アップデートカウンタを増加させる段階と、前記要請が処理される場合、前記アップデートカウンタのカウント値を含む応答メッセージを伝送する段階と、を含む。
実施形態として、前記要請を処理する段階は、前記要請が処理される場合に前記要請に応答して応答メッセージを伝送する段階を含む。
実施形態として、前記要請を処理する段階は、前記書込み防止情報を格納する段階を含む。
0015
本発明の実施形態による格納装置の動作方法は、前記格納装置内の不揮発性メモリの第1領域にデータを書き込むようにする書込みコマンドを受信する段階と、前記第1領域によってカバーされる1つ以上のメモリ領域に対する格納された書込み防止情報に基づいて、各メモリ領域で前記書込みコマンドの処理の可否を決定する段階と、を含み、前記書込み防止情報は、前記各メモリ領域の開始に対応する論理ブロックアドレスを表示する開始アドレス情報、前記各メモリ領域の大きさを表示する大きさ情報、及び前記各メモリ領域に対する書込み防止の適用の可否を表示する書込み可能情報を含む。
0016
実施形態として、前記書込みコマンドの処理の可否を決定する段階で、前記第1領域が書込み防止を適用することを表示する書込み可能情報と連関された前記メモリ領域の中で1つと重なる場合、前記書込みコマンドは、処理されないように決定される。
実施形態として、前記書込みコマンドの処理の可否を決定する段階で、前記書込みコマンドと連関されたアドレスが前記メモリ領域の中で1つ内に属する場合、前記第1領域は、前記メモリ領域の中で1つと重なるように決定される。
0017
実施形態として、前記書込み防止情報は、前記各メモリ領域に対して、前記不揮発性メモリで前記各メモリ領域を含むパーティションを識別するパーティション識別子をさらに含み、前記大きさ情報が基準値で設定される場合、前記大きさ情報は、書込み防止されるように識別されたパーティションの全体を表示し、前記書込みコマンドの処理の可否を決定する段階で、前記第1領域が前記基準値で設定された大きさ情報と連関された前記メモリ領域の中で1つと重なる場合、前記書込みコマンドは、処理されないように決定される。
0018
本発明の実施形態による格納装置は、不揮発性メモリと、要請メッセージ認証コード及び書込み防止情報を含む要請を受信するコントローラと、を含み、前記書込み防止情報は、開始アドレス情報と前記大きさ情報との中で少なくとも1つを含み、前記開始アドレス情報は、前記不揮発性メモリのメモリ領域の開始に対応する論理ブロックアドレスを表示し、前記大きさ情報は、前記メモリ領域の大きさを表示し、前記コントローラは、前記開始アドレス情報と前記大きさ情報との中で少なくとも1つ及び前記格納装置に格納されたキー(Key)に基づいてメッセージ認証コードを生成し、前記コントローラは、前記生成されたメッセージ認証コード及び前記要請メッセージ認証コードには基づいて前記要請を認証し、前記コントローラは、前記認証結果に基づいて前記要請を処理する。
0019
本発明の実施形態による格納装置は不揮発性メモリ、及び前記不揮発性メモリの第1領域にデータを書き込むようにする書込みコマンドを受信し、前記第1領域によってカバーされる1つ以上のメモリ領域に対する格納された書込み防止情報に基づいて各メモリ領域で前記書込みコマンドの処理の可否を決定するコントローラを含み、
前記書込み防止情報は、不揮発性メモリと、前記不揮発性メモリの第1領域にデータを書き込むようにする書込みコマンドを受信し、前記第1領域によってカバーされる1つ以上のメモリ領域に対する格納された書込み防止情報に基づいて各メモリ領域で前記書込みコマンドの処理の可否を決定するコントローラと、を含み、前記書込み防止情報は、前記各メモリ領域の開始に対応する論理ブロックアドレスを表示する開始アドレス情報、前記各メモリ領域の大きさを表示する大きさ情報、及び前記各メモリ領域に対する書込み防止の適用の可否を表示する書込み可能情報を含む。
発明の効果
0020
本発明は、Key−ed Crypto Hash、秘密キー、及びRequest Count等を利用する認証を通じて書込み防止を設定し、ホストのLBA単位に書込み防止領域を設定する。本発明は認証されないホストの書込み防止設定を制限して意図しなかったデータの変更を防ぐことができる。また、本発明はLBA単位に書込み防止領域を変更することによって、ホストから動的に、かつ柔軟な書込み防止動作を遂行することができる。
図面の簡単な説明
0021
ストレージシステムを示すブロック図。
フラッシュメモリに基づくUFSシステムを示すブロック図。
本発明の実施形態によるメモリシステムを示すブロック図。
ホストの論理的ブロックアドレス(LBA)単位に書込み防止領域を指定する例を示す概念図。
パーティションの全体に対して書込み防止が適用された例を示す概念図。
WPデスクリプタがNV−Pタイプに設定された例を示す概念図。
本発明の実施形態によるストレージシステムの書込み防止を設定するか、或いは解除するための要請(request)と応答(response)とを示すタイミング図。
HMACを計算する方法を説明するための概念図。
図3に図示されたストレージシステムのHMAC認証方法を例示的に示す順序図。
図3に図示されたストレージシステムの書込み防止遂行方法を説明するための順序図。
本発明の実施形態によるストレージシステムに1つ又はそれ以上の書込み防止領域が設定された例を示す概念図。
図3のフラッシュメモリ基盤のUFSシステムに基づいた格納装置のハードウェア構成を示すブロック図。
格納装置のメモリコントローラで中央処理装置によって実行されるソフトウェア階層構造を示すブロック図。
本発明の実施形態による格納装置をソリッドステートドライブ(SSD)に適用した例を示すブロック図。
図14に図示されたSSDコントローラ4210の構成を例示的に示すブロック図。
本発明の実施形態による格納装置を電子装置で具現した例を示すブロック図。
本発明の実施形態による使用者装置の格納装置をメモリカードに適用した例を示す図。
実施例
0022
以下で、本発明が属する技術分野で通常の知識を有する者が本発明の技術的思想を容易に実施できるよう詳細に説明するために、本発明の実施形態を添付した図面を参照して説明する。
図1はストレージシステムを示すブロック図である。図1を参照すれば、ストレージシステム1000はホスト1100と格納装置1200とを含む。ホスト1100と格納装置1200とはUFS(universal flash storage)、SATA(serial ATA)、SCSI(small computer small interface)、SAS(serial attached SCSI)、eMMC(embedded MMC)等のような標準インターフェイスを介して連結することができる。
0023
図1を参照すれば、ホストインターフェイス1101と装置インターフェイス1201とはデータや信号を通信するためのデータライン(DIN、DOUT)と電源を提供するための電源ラインPWRとに連結される。ホスト1100はプロセッサ1105、ホストコントローラ1130、及びバッファメモリ1140を含む。プロセッサ1105はアプリケーションプログラム1110及び装置ドライバ1120を含む。アプリケーションプログラム1110はホスト1100で実行される多様な応用プログラムの中の1つである。装置ドライバ1120はホスト1100に連結されて使用される周辺装置を駆動するためのものであって、図1では格納装置1200を駆動する。アプリケーションプログラム1110や装置ドライバ1120はバッファメモリ1140に格納されるか、或いはローディングされる分離されたソフトウェアモジュール(software module)である。
0024
他の実施形態において、アプリケーションプログラム1110によって構成されたハードウェアロジック回路及びファームウェアとして装置ドライバ1120はプロセッサに1105に代替されてもよい。その他の実施形態として、プロセッサ及びハードウェアロジック回路の組合わせを使用してもよい。その他の実施形態として、プロセッサ1105又はハードウェアロジック回路はホストコントローラ1130に内装されてもよい。ホストコントローラ1130はホストインターフェイス1101を介して、データを格納装置1200に提供するか、或いは格納装置1200からデータを受信する。例えば、ホストコントローラ1130は1つ以上のプロセシングユニットCPUを含んでもよい。他の例として、ホストコントローラ1130はファームウェアによって構成されるハードウェアロジック回路を含んでもよい。その他の例として、ホストコントローラ1130はCPU及びハードウェアロジック回路の組合わせであってもよい。
0025
バッファメモリ1140はホスト1100のメインメモリ(main memory)又はキャッシュメモリとして使用される。また、バッファメモリ1140はアプリケーションプログラム1110や装置ドライバ1120のようなソフトウェアを駆動するための駆動メモリ(driving memory)として使用されてもよい。
格納装置1200は装置インターフェイス1201を介してホスト1100と連結される。格納装置1200は不揮発性メモリ1210、装置コントローラ1230、及びバッファメモリ1240を含む。不揮発性メモリ1210としてはフラッシュメモリ、MRAM、PRAM、FeRAM等が含まれる。装置コントローラ1230は不揮発性メモリ1210の書込み、読出し、消去等のような全般的な動作を制御する。装置コントローラ1230は1つ以上のプログラムされたCPU、構成されたハードウェアロジック回路、又はこれらの結合を含む。装置コントローラ1230はアドレス又はデータバスを介して不揮発性メモリ1210又はバッファメモリ1240とデータを送受信する。
0026
バッファメモリ1240は不揮発性メモリ1210に格納される又は不揮発性メモリ1210から読み出したデータを一時的に格納するのに使用される。バッファメモリ1240は揮発性メモリ又は不揮発性メモリで具現されてもよい。バッファメモリ1240は装置コントローラ1230内に含まれるか、或いは装置コントローラ1230と1つのチップで具現されてもよい。
0027
図1に図示されたストレージシステム1000はフラッシュメモリ(flash memory)に基づくモバイル装置又は他の電子装置に適用することができる。以下ではUFS(Universal Flash Storage)を例として、図1に図示されたストレージシステム1000の構成や動作方法をさらに詳細に説明する。
0028
図2はフラッシュメモリに基づくUFSシステムを示すブロック図である。図2を参照すれば、UFSシステム2000はUFSホスト2100とUFS装置2200とを含む。
UFSホスト2100はプロセッサ2105、ホストコントローラ2130、及びバッファRAM2140を含む。プロセッサ2105はアプリケーションプログラム2110及び装置ドライバ2120を実行する。アプリケーションプログラム2110はホスト2100で実行される多様な応用プログラムの中の1つである。装置ドライバ2120はホスト2100に連結されて使用される周辺装置を駆動するためのものであって、例えば、UFS装置2200を駆動する。アプリケーションプログラム2110や装置ドライバ2120はバッファRAM2140に格納されるか、或いはローディングされる分離されたソフトウェアモジュール(software module)である。
0029
他の実施形態として、アプリケーションプログラム2110によって構成されたハードウェアロジック回路及びファームウェアとして装置ドライバ2120はプロセッサ2105に代替されてもよい。その他の実施形態として、プロセッサ及びハードウェアロジック回路の組合わせを使用してもよい。その他の実施形態として、プロセッサ2105又はハードウェアロジック回路はホストコントローラ2130に内装されてもよい。ホストコントローラ2130はホストインターフェイス2101を介して、データをUFS装置2200に提供するか、或いはUFS装置2200からデータを受信する。ホストコントローラ2130は、図1のホストコントローラ1130のように、1つ以上のCPU、ハードウェアロジック回路、又はこれらの組合わせを含む。図2に示したように、ホストコントローラ2130はコマンドキュー(CMD queue、2131)、ホストDMA2132、及び電源マネージャ2133を含む。
0030
アプリケーションプログラム2110と装置ドライバ2120とを実行するホストコントローラ2130で生成されたコマンド(例えば、書込みコマンド)はホストコントローラ2130のコマンドキュー2131に入力される。コマンドキュー2131はUFS装置2200に提供されるコマンドを順に格納する。コマンドキュー2131に格納されたコマンドはホストDMA2132に提供される。ホストDMA2132はコマンドをホストインターフェイス2101を介してUFS装置2200へ送る。
0031
続いて、図2を参照すれば、UFS装置2200はフラッシュメモリ2210、装置コントローラ2230、及びバッファRAM2240を含む。そして、装置コントローラ2230は1つ以上のプログラムされたCPU、構成されたハードウェアロジック回路又はこれらの組合わせを含む。装置コントローラ2230はコマンドマネージャ(CMD manager、2232)、フラッシュDMA2233、保安マネージャ(security manager、2234)、バッファマネージャ2235、フラッシュ変換階層(FTL;Flash Translation Layer、2236)、及びフラッシュマネージャ2237を含む。
0032
UFSホスト2100からUFS装置2200に入力されたコマンドは装置インターフェイス2201を介してコマンドマネージャ2232に提供される。コマンドマネージャ2232はUFSホスト2100から提供されたコマンドを解釈し、保安マネージャ2234を利用して入力されたコマンドを認証する。コマンドマネージャ2232はバッファマネージャ2235を介してデータが入力されるようにバッファRAM2240を割当する。コマンドマネージャ2232はデータ伝送準備が完了されれば、UFSホスト2100へRTT(READY_TO_TRANSFER) UPIUを送る。UFS標準(standard)に基づいたパケット(packet)はUPIUに参照される。
0033
UFSホスト2100はRTT UPIUに応答してデータをUFS装置2200へ伝送する。データはホストDMA2132とホストインターフェイス2101とを介してUFS装置2200へ伝送される。UFS装置2200は提供されたデータをバッファマネージャ2235を介してバッファRAM2240に格納する。バッファRAM2240に格納されたデータはフラッシュDMA2233を介してフラッシュマネージャ2237に提供される。フラッシュマネージャ2237はフラッシュ変換階層2236のアドレスマッピング情報を参照して、フラッシュメモリ2210の選択されたアドレスにデータを格納する。
0034
UFS装置2200はコマンドに必要であるデータ伝送とプログラムとが完了すれば、インターフェイスを介してUFSホスト2100に応答信号(response)を送り、コマンド完了を通知する。UFSホスト2100は応答信号を伝送されたコマンドに対する完了の可否をホストコントローラ2130で実行する装置ドライバ2120とアプリケーションプログラム2110とに通知し、該当コマンドに対する動作を終了する。
UFSシステム2000がモバイル装置で使用される場合、信頼性及び保安性を提供することは書込み防止データを設定及び解除することを含む。本発明の実施形態によるUFSシステム2000はKey−ed Crypto Hash、秘密キー(private key)、及び要請カウント(request count)を使用してコマンドの認証手続を遂行する。
0035
本発明は認証手続を通じて書込み防止(write protect)を設定又は解除するか、或いは書込み防止属性を変更することができる。また、本発明はホスト2100の論理的ブロックアドレスLBA単位に書込み防止領域を指定することができる。
0036
I.WP(Write Protect)デスクリプタ(Descriptor)構造
図3は本発明の他の実施形態を示すブロック図である。例えば、ホスト3100は図2のUFSホスト2100と同一である。格納装置3200は図2のUFS装置と同一である。他の例として、格納装置3200は図12に図示されたハードウェア構成を有してもよい。
図12は図3のフラッシュメモリ基盤のUFSシステムに基づいた格納装置のハードウェア構成を示すブロック図である。図13は格納装置3200のメモリコントローラ3200bで中央処理装置3210によって実行されるソフトウェア階層構造を示すブロック図である。
0037
図12を参照すれば、格納装置3200はフラッシュメモリ3200a及びメモリコントローラ3200bを含む。メモリコントローラ3200bはホストインターフェイスコントローラ3201を介してホスト3100と連結され、フラッシュインターフェイスコントローラ3202を介してフラッシュメモリ3200aと連結される。メモリコントローラ3200bは中央処理装置3210、コードRAM3221、データRAM3222、バッファRAM3223、ROM3230、メモリを直接アクセスするためのDMA(Direct Memory Access、3240)、データ保安のためのHMAC(Hash−based Message Authentication Code、3250)とAES(Advanced Encryption Standard、3260)、及びデータエラー訂正のためのECC3270を含む。DMA3240、HMAC3250、AES3260、及びECC3270はハードウェアロジック回路であってもよい。
0038
中央処理装置3210はメモリコントローラ3200bの諸般動作を制御する。例えば、中央処理装置3210はブーティング動作の時にフラッシュメモリ3200a又はROM3230に格納されたブートコードをコードRAM3221にローディングすることによって、格納装置3200のブーティング動作を制御する。
0039
図13を参照すれば、格納装置3200のソフトウェア階層構造はホストインターフェイスレイヤ(HIL;host interface layer、110)、保安レイヤ(SEL;security layer、115)、フラッシュ変換レイヤ(FTL;flash translation layer、120)、フラッシュインターフェイスレイヤ(FIL;flash interface layer、130)、及びフラッシュリカバリレイヤ(FRL;flash recovery layer、140)を含む。
0040
中央処理装置3210はホストインターフェイスレイヤ(HIL、110)を利用して、ホストインターフェイスコントローラ3201を介してホストからデータを受信し、データRAM3221に格納する動作を制御する。ホストインターフェイスレイヤ(HIL、110)はコマンドマネージャ3232を含む。中央処理装置3210はホストとデータを送受信する時、保安レイヤ(SEL、115)を利用して、ホストのコマンドを認証し、書込み防止領域を設定する。保安レイヤ(SEL、115)は保安マネージャ3234を含む。
0041
中央処理装置3210はフラッシュインターフェイスレイヤ(FIL、130)を利用してデータRAM3222又はバッファRAM3223に格納されたデータをフラッシュインターフェイスコントローラ3202を介してフラッシュメモリ3200aに提供する。また、中央処理装置3210はフラッシュ変換レイヤ(FTL、120)を利用して、フラッシュメモリ3200aのアドレスマッピング動作を管理する。そして、中央処理装置3210はフラッシュリカバリレイヤ(FRL、140)を利用して、フラッシュメモリ3200aのリカバリ動作を管理する。
0042
WPデスクリプタはフラッシュメモリ2210又は3200a又はROM(図示せず)等のような不揮発性メモリに格納されており、パワーオン(power on)の時にDRAM又はSRAM等(例えばバッファRAM、2240又は3223)のような揮発性メモリにアップロードされる。WPデスクリプタは書込み防止を設定又は解除するか、或いは書込み防止属性を変更するのに使用される。
表1はWPデスクリプタの構造及び説明を例示的に示す。
0043
0044
表1を参照すれば、WPデスクリプタはパーティションID(PID)、開始LBA、大きさ(Length)、書込み可能(writable)、及びタイプ(type)で構成される。パーティションID(PID)は書込み防止を適用するフラッシュメモリのパーティションを識別(identification)するためのものである。開始LBAは書込み防止を適用する論理的ブロックの開始アドレスを意味する。大きさ(length)は書込み防止を適用する大きさを意味する。
0045
図4はホストの論理的ブロックアドレスLBA単位に書込み防止領域を指定した例を示す概念図である。図4を参照すれば、パーティションIDは1である。即ち、第1パーティション(partition 1)が識別される。WPデスクリプタの開始LBAは100であり、大きさ(length)は900である。したがって、書込み防止領域はLBA100で開始し、LBA1000で終了する。即ち、開始LBA及び長さは、書込み防止される、パーティションのメモリ領域を定義する。
0046
図5はパーティションの全体に対して書込み防止が適用された例を示す概念図である。表1を参照すれば、WPデスクリプタの長さが0に設定されていれば、パーティションの全体に対して書込み防止(write protect)が適用される。図5の例で、WPデスクリプタのパーティションIDは1であり、大きさ(length)は0に設定されている。したがって、書込み防止は第1パーティション(partition 1)の全体に適用される。
0047
続いて、表1を参照すれば、書込み可能(writable)は書込み防止を適用するか否かを示す。書込み可能(writable)はTrue又はFalseに設定される。書込み可能がTrueに設定されていれば、該当領域に書き込むことができる。即ち、書込み防止が適用されない。Falseに設定されていれば、該当領域に書き込むことができない。即ち該当領域に書込み防止が適用される。
0048
続いて、表1を参照すれば、書込み防止は3つのタイプに区分される。Pタイプはパワーオフ(power off)又はハードウェアリセット(HW reset)の前までのみに書込み防止が維持される。パワーオン(power on)の後には、書込み可能が常にTrueに変更される。書込み可能がFalseに設定されれば、パワーオフ又はハードウェアリセットの前まで変更することができない。NVタイプはホスト2100又は3100の要請によってのみ書込み可能を変更することができる。NV−Pタイプはホスト3100の要請によって書込み可能を変更することができる。しかし、WPデスクリプタがNV−Pタイプに設定された場合には、パワーオフ又はハードウェアリセットの後に書込み可能は常にFalseに変更される。
0049
図6はWPデスクリプタがNV−Pタイプに設定された例を示す概念図である。図6を参照すれば、WPデスクリプタのパーティションIDは1であり、開始LBAは100であり、大きさ(length)は900であり、書込み可能はTrueであり、タイプはNV−Pに設定されている。ストレージシステム2000又は3000がパワーオフされるか、或いはハードウェアがリセットされれば、WPデスクリプタがNV−Pタイプに設定されて存在するので、書込み可能はFalseに変更される。即ち、書込み防止が適用されるので、該当領域LBA100〜LBA1000に書き込むことができなくなる。
表2は図3に図示されたWPデスクリプタの初期値を例示的に示す。WPデスクリプタには表2のような値がデフォルト(default)として設定される。
0050
0051
表2を参照すれば、格納装置3200の格納領域はn個のパーティション(partition)に区分される。第1乃至第nパーティションPID1〜PIDnの開始LBAと大きさとは0に設定されている。書込み防止の大きさ(length)が0に設定されているので、全体のパーティションに対して書込み防止が適用される。書込み可能は全てTrueに設定されており、書込み防止タイプは全てPに設定されている。
表3はストレージシステム2000又は3000が動作しているいずれかの始点のWPデスクリプタの構成を例示的に示す。
0052
0053
表3を参照すれば、第1パーティションPID1の開始LBAは0であり、大きさは5000である。書込み可能はFalseに設定されており、書込み防止タイプはPである。第2パーティションPID2の開始LBAは0であり、大きさは4000である。書込み可能はTrueに設定されており、書込み防止タイプはNV−Pである。即ち、第2パーティションPID2の書込み防止領域LBA0〜LBA4000はホスト3100の要請によって書込み可能を変更することができ、パワーオフ又はハードウェアリセットの後には書込み可能は常にFalseに変更される。
0054
第3パーティションPID3の開始LBAは9000であり、大きさは10000である。書込み可能はTrueに設定されており、書込み防止タイプはPである。第nパーティションPIDnの開始LBAは0であり、大きさは2000である。書込み可能はFalseに設定されており、書込み防止タイプはNVである。第nパーティションPIDnの書込み可能(writable)はホスト3100の要請によってのみ変更される。
表4はパワーオフ(power off)又はハードウェアリセット(HW reset)の後にWPデスクリプタが変更された例を示す。
0055
0056
表4を参照すれば、第1パーティションPID1の書込み可能は、表3と比較して、FalseからTrueに変更される。表3で、第2パーティションPID2は書込み可能がTrueに設定されている。書込み防止タイプがNV−Pであるので、パワーオフ又はハードウェアのリセットが発生すれば、WPデスクリプタの書込み可能(writable)はTrueからFalseに変更される。第3パーティションPID3の書込み可能はTrueを維持する。第nパーティションPIDnの書込み防止タイプはNVであるので、書込み可能(writable)はホスト3100の要請によって変更することができる。
0057
II.書込み防止を構成するための要請(Request)と応答(Response)
本発明でホスト3100と格納装置3200とは秘密キー(private key)を安全な方法で互いに共有していると仮定する。
図7は本発明の実施形態によるストレージシステムの書込み防止を設定するか、或いは解除するための要請(request)と応答(response)とを示すタイミング図である。図7を参照すれば、ホスト3100は格納装置3200へ書込み防止の設定と解除のための要請(request)を提供する。格納装置3200はホスト3100の要請(request)を受けて、要請(request)にしたがう応答(response)を提供する。
0058
図7を参照すれば、ホスト3100は書込み防止(write protect)を設定と解除するために、4つのタイプの要請(request)を格納装置3200へ提供する。即ち、ホスト3100は格納装置3200にWPデスクリプタアップデートカウンタ読出し要請、WPデスクリプタ読出し要請、WPデスクリプタアップデート要請、及び結果読出し要請を提供する。
0059
格納装置3200はホスト3100の要請に応答して、3つのタイプの応答(response)をホスト3100へ提供する。即ち、格納装置3200はWPデスクリプタアップデートカウンタ読出し応答、WPデスクリプタ読出し応答、及び結果読出し応答をホスト3100へ提供する。ホスト3100はWPデスクリプタアップデート要請を除外したすべての要請に対して格納装置3200から応答(response)を受ける。
表5は各々の要請及び応答を処理するためのData Frame構造を示す。
0060
0061
ホスト3100は表5のようなデータフレーム(data frame)を格納装置3200に提供することによって、各々の要請(request)にしたがう動作を遂行する。ここで、WPデスクリプタアップデートカウンタ読出し要請とWPデスクリプタ読出し要請とは各々該当応答(response)を通じて結果を確認することができる。一方、WPデスクリプタアップデート要請は結果読出し要請を通じて結果を確認することができる。
0062
表5を参照すれば、WPデスクリプタアップデートカウンタは現在まで要請されたカウンタ値を意味する。Nonceはリプレイ攻撃(replay attack)を防止するための乱数である。WPデスクリプタは適用しようとする又は適用されているWPデスクリプタを意味する。結果は要請に対する結果として、要請の成功又は失敗の可否と失敗の原因を提供する。ハッシュ基盤メッセージ認証コード(HMAC:Hash−based Message Authentication Code)は要請(request)を認証するためのものである。ホスト3100はWPデスクリプタアップデート要請のためのHMACをキー(key)とメッセージ(message)とを利用して計算する。
0063
図8はHMACを計算する方法を説明するための概念図である。HMACは図12に図示された保安マネージャ3250によって計算される。図8を参照すれば、保安マネージャ3234は秘密キー(private key)とメッセージ(message)とを利用してHMACを計算する。メッセージ(message)には要請タイプ、WPデスクリプタアップデートカウンタ、Nonce、WPデスクリプタ、結果を含む。保安マネージャ3234はMD5、SHA1、SHA256等を利用してHMACを計算する。
以下では図7に図示された各々の要請(request)と応答(response)とが詳細に説明される。
0064
1.WPデスクリプタアップデートカウンタ読出し要請/応答
ホスト3100は書込み防止を設定するために、現在まで要請されたWPデスクリプタアップデートカウンタを要請する。ホスト3100はWPデスクリプタのアップデート回数を要請するために、WPデスクリプタアップデートカウンタ読出し要請を格納装置3200へ提供する。
表6はWPデスクリプタアップデートカウンタ読出し要請のデータフレーム(data frame)を例示的に示す。
0065
0066
表6を参照すれば、要請タイプ(request type)は0x1であり、WPデスクリプタアップデートカウンタは0x0であり、Nonceはホストが生成した乱数であり、WPデスクリプタは0x0であり、結果は0x0であり、HMACは0x0である。ホストの中央処理装置は乱数発生器を含む。
表6の要請に応答して、格納装置3200は表7の応答(response)をホスト3100へ提供する。即ち、ホスト3100は表7に図示されたデータフレームを読み出し、現在のWPデスクリプタアップデートカウンタを確認する。
0067
0068
表7を参照すれば、応答タイプ(response type)は0x5であり、WPデスクリプタアップデートカウンタは格納装置3200がWPデスクリプタが現在までアップデートされた回数である。保安マネージャ3234はWPデスクリプタがアップデートされる時ごとに増加されるカウンタを含む。Nonceはホストが生成した乱数であり、要請によって受信される。WPデスクリプタは0x0であり、結果は要請を遂行した結果であり、HMACは保安マネージャ3234によって計算された値である。
格納装置3200は表7に図示されたデータフレーム(date frame)を生成する時、HMAC計算のために表8の値を使用する。
0069
0070
表8を参照すれば、秘密キー(private key)はホスト3100と格納装置3200とが共有したキーであり(即ち、製造過程でROM3230に予め格納される)、応答タイプは0x5であり、WPデスクリプタアップデートカウンタは格納装置3200がWPデスクリプタを現在までアップデートした回数であり、Nonceはホストが生成した乱数であり、WPデスクリプタは0x0であり、結果は要請を遂行した結果である。ホスト3100はデータフレーム(data frame)を読み出した後、HMACを計算する。ホスト3100はHMACを利用して応答(response)を認証し、リプレイ攻撃(replay attack)を防止するためにNonce値を確認する。
0071
2.WPデスクリプタ読出し要請
ホスト3100は書込み防止を設定するために、現在適用されているWPデスクリプタを読み出し、現在の設定と構成を確認する。ホスト3100はWPデスクリプタ読出し要請を格納装置3200へ提供する。表9はWPデスクリプタ読出し要請のデータフレームを示す。
0072
0073
表9を参照すれば、要請タイプは0x2であり、WPデスクリプタアップデートカウンタは0x0であり、Nonceはホストが生成した乱数であり、WPデスクリプタは0x0であり、結果は0x0であり、HMACは0x0である。
表9に図示された要請に応答して、格納装置3200は表10に図示された応答(response)をホスト3100へ提供する。ホスト3100は表10に図示されたデータフレームを読み出し、WPデスクリプタを確認する。
0074
0075
表10を参照すれば、応答タイプは0x6であり、WPデスクリプタアップデートカウンタは0x0であり、Nonceはホストが生成した乱数であり、WPデスクリプタは格納装置3200の現在WPデスクリプタ値であり、結果は要請を遂行した結果であり、HMACは保安マネージャ3234又は3250が計算した値である。
格納装置3200は表10に図示されたデータフレーム(date frame)を生成する時、HMAC計算のために表11の値を使用する。
0076
0077
表11を参照すれば、秘密キー(private key)はホスト3100と格納装置3200とが共有したキーであり、応答タイプは0x6であり、WPデスクリプタアップデートカウンタは0x0であり、Nonceはホストが生成した乱数であり、WPデスクリプタは格納装置3200の現在WPデスクリプタ値であり、結果は要請を遂行した結果である。保安マネージャ3234又は3250は表11のデータフレーム(data frame)を読み出し、HMACを計算する。
0078
3.WPデスクリプタアップデート要請
ホスト3100は新しい書込み防止設定を下記のために、適用しようとするWPデスクリプタを新しく構成し、これを利用して格納装置3200にアップデートを要請する。ホスト3100はWPデスクリプタのアップデートを要請するために、表12のような入力値(input value)を使用してHMACを生成する。
0079
0080
表12を参照すれば、秘密キー(private key)はホスト3100と格納装置3200とが共有したキーであり、要請タイプは0x3であり、WPデスクリプタアップデートカウンタは格納装置3200がWPデスクリプタを現在までアップデートした回数であり、Nonceは0x0であり、WPデスクリプタは変更しようとするWPデスクリプタ値であり、結果は0x0である。
表13はWPデスクリプタアップデート要請のデータフレームを示す。ホスト3100は表13のようなデータフレームを格納装置3200へ提供する。
0081
0082
表13を参照すれば、要請タイプは0x3であり、WPデスクリプタアップデートカウンタは格納装置3200がWPデスクリプタを現在までアップデートした回数であり、Nonceは0x0であり、WPデスクリプタは変更しようするWPデスクリプタ値であり、結果は0x0であり、HMACは表12のデータフレームを利用して、ホスト3100が計算した値である。
0083
ホスト3100は表13のデータフレーム(data frame)を格納装置3200へ提供することによって、WPデスクリプタをアップデートする。格納装置3200はWPデスクリプタアップデート要請を受けて、正常的にRequestを完了した後に、WPデスクリプタアップデートカウンタを増加する。
0084
4.結果読出し要請/応答
ホスト3100はWPデスクリプタアップデートを要請した後に、その結果を確認するために、結果読出し要請を使用する。ホスト3100は結果読出し要請のために、表14のようなデータフレームを構成し、格納装置3200へ提供する。
0085
0086
表14を参照すれば、要請タイプは0x4であり、WPデスクリプタアップデートカウンタは0x0であり、Nonceは0x0であり、WPデスクリプタは0x0であり、結果は0x0であり、HMACは0x0である。表14に図示された要請に応答して、格納装置3200は表15に図示された応答(response)をホスト3210へ提供する。ホスト3100は表15に図示されたデータフレームを読み出し、WPデスクリプタアップデートを遂行した結果を確認する。
0087
0088
表15を参照すれば、応答タイプは0x7であり、WPデスクリプタアップデートカウンタは格納装置3200がWPデスクリプタを現在までアップデートした回数であり、Nonceは0x0であり、WPデスクリプタは0x0であり、結果は要請を遂行した結果であり、HMACは保安マネージャ3234が計算した値である。保安マネージャ3234又は3250は表15に図示されたデータフレーム(date frame)を生成する時、HMAC計算のために表16の値を使用する。
0089
0090
表16を参照すれば、秘密キー(private key)はホスト3100と格納装置3200とが共有したキーであり、応答タイプは0x7であり、WPデスクリプタアップデートカウンタは格納装置3200がWPデスクリプタを現在までアップデートした回数であり、Nonceは0x0であり、WPデスクリプタは0x0であり、結果は要請を遂行した結果である。 ホスト3100は表16のデータフレーム(data frame)を読み出し、HMACを計算する。
0091
III.WPデスクリプタアップデート要請認証方法
図9は図3に図示されたストレージシステムのHMAC認証方法を例示的に示す順序図である。例として、図9は格納装置3200がWPデスクリプタアップデート要請を認証する方法を示す。
S110段階で、格納装置3200のコマンドマネージャ3232はホスト3100からWPデスクリプタアップデート要請を受信する。格納装置3200はWPデスクリプタアップデート要請を受信し、書込み防止設定をアップデートする。即ち、格納装置3200は適用しようとするWPデスクリプタを新しく構成する。
0092
S120段階で、コマンドマネージャ3232はWPデスクリプタアップデート要請のデータフレームを解釈する。表13はWPデスクリプタアップデート要請のデータフレームを例示的に示す。表13を参照すれば、データフレームはrequest type、WPデスクリプタアップデートカウンタ、WPデスクリプタ、Nonce、結果、及びHMACを含む。
0093
S130段階で、格納装置3200の保安マネージャ3234は共有された秘密キーを利用してHMACを計算する。HMACを計算する方法は図8で説明した通りである。即ち、保安マネージャ3234は秘密キー(private key)とメッセージ(message)とを利用してHMACとを計算する。メッセージ(message)には要請タイプ、WPデスクリプタアップデートカウンタ、Nonce、WPデスクリプタ、結果を含む。保安マネージャ3234はMD5、SHA1、SHA256等を利用してHMACを計算する。また、HMAC3250はHMACを計算し、その結果を保安マネージャ3234へ提供する。
0094
S140段階で、保安マネージャ3234はWPデスクリプタアップデート要請のデータフレームから得られたHMACとS130段階で計算したHMACとを比較する。表13に示したように、ホスト3100から提供されたデータフレーム(data frame)はHMACを含む。保安マネージャ3234はホスト3100から提供されたHMACと格納装置3200内で計算したHMACを比較することによって、WPデスクリプタアップデート要請を認証する。
0095
S150段階で、保安マネージャ3234はS140段階での比較結果を基づいて、WPデスクリプタアップデート要請が有効であるか否かを判断する。保安マネージャ3234はホスト3100から提供されたHMACと格納装置3200内で計算したHMACとが一致すれば、WPデスクリプタアップデート要請が有効(valid)であると判断する。一致しなければ、WPデスクリプタアップデート要請が有効でないと判断する。
0096
S160段階で、WPデスクリプタアップデート要請が有効な場合に、保安マネージャ3234はWPデスクリプタアップデート要請にしたがってWPデスクリプタをアップデートする。S165段階で、WPデスクリプタアップデート要請が有効でない場合に、保安マネージャ3234はWPデスクリプタアップデート要請を拒絶(reject)する。
0097
IV.書込み防止遂行方法
図10は図3に図示されたストレージシステムの書込み防止遂行方法を説明するための順序図である。ホスト3100から書込みコマンド(write command)又は消去コマンド(erase command)を受信した場合に、格納装置3200は書込み防止機能の遂行の可否にしたがって該当アドレス領域にデータを書き込むか、或いは書込みを防止する。
0098
S210段階で、格納装置3200のコマンドマネージャ3232はホスト3100から書込みコマンドを受信する。S220段階で、コマンドマネージャ3232は書込みコマンドのパラメータを解釈する。書込みコマンドのパラメータには開始LBA、大きさ(Length)、及びパーティションID(PID)が含まれる。S230段階で、格納装置3200の保安マネージャ3234はWPデスクリプタからENTRYを獲得する。
0099
S240段階で、保安マネージャ3234は書込みコマンドのパーティションID(PID_h)とWPデスクリプタのパーティションID(PID_d)とを比較する。PID_hはホスト3100から起因したものであり、PID_dは格納装置3200から起因したものである。保安マネージャ3234は書込みコマンドのPID_hがWPデスクリプタのPID_dと一致するか否かを判断する。
0100
PID_hがPID_dと一致しない場合に、S245段階で、WPデスクリプタが最後のWPデスクリプタであるか否かを判断する。最後のWPデスクリプタではない場合にはS230段階が再び遂行され、次のWPデスクリプタが獲得される。最後のWPデスクリプタである場合には書込みコマンドが実行される(S295)。
S250段階で、PID_hがPID_dと一致する場合に、保安マネージャ3234はWPデスクリプタの書込み可能(writable)を確認する。例えば、保安マネージャ3234はWPデスクリプタの書込み可能がFalseに設定されているか否かを判断する。WPデスクリプタの書込み可能(writable)がFalseに設定されていない場合にS245段階が遂行される。
0101
S260段階で、WPデスクリプタの書込み可能(writable)がFalseに設定されている場合に、格納装置3200はWPデスクリプタの大きさ(length)を確認する。格納装置3200はWPデスクリプタの大きさが0に設定されているか否かを判断する。WPデスクリプタの大きさが0に設定されている場合に、格納装置3200は書込みコマンドを拒絶(reject)する(S290)。表1で説明したように、WPデスクリプタの大きさ(length)が0に設定された場合にはパーティションの全体に対して書込み防止が適用される。
0102
S270段階で、WPデスクリプタの大きさ(length)が0に設定されていない場合に、保安マネージャ3234は開始LBA及びWPデスクリプタの大きさによって表示される書込み防止範囲(WP range)を調査する。
S280段階で、保安マネージャ3234は書込みコマンドで論理的ブロックアドレスLBAが書込み防止範囲に含まれるか否かを判断する。書込みコマンドでLBAが書込み防止範囲に含まれなかった場合に、S245段階が遂行される。
S290段階で、書込みコマンドのLBAが書込み防止範囲に含まれる場合に、格納装置3200は書込みコマンドを拒絶(reject)する。即ち、格納装置3200はLBA及びWPデスクリプタの大きさに対応するメモリ領域に対して書込み防止(write protect)を遂行する。
0103
図11は本発明の実施形態によるストレージシステムに1つ又はそれ以上の書込み防止領域が設定された例を示す概念図である。図3に図示されたストレージシステム3000は1つのパーティションに1つ又はそれ以上の書込み防止領域が設定されてもよい。又は複数のパーティションに複数の書込み防止領域が設定されてもよい。図11を参照すれば、第1パーティションPID1には2つの書込み防止領域が設定されている。第1書込み防止領域WP1はLBA500〜1000であり、第2書込み防止領域WP2はLBA2000〜3000である。第2パーティションPID2には1つの書込み防止領域が設定されている。第3書込み防止領域WP3はLBA1100〜2200である。第3パーティションPID3には3つの書込み防止領域が設定されている。第4書込み防止領域WP1はLBA100〜600であり、第5書込み防止領域WP5はLBA1300〜2000であり、第6書込み防止領域WP6はLBA2900〜3300である。第nパーティションPIDnはパーティションの全体に対して書込み防止領域が設定されている。1つのパーティションに複数の書込み防止領域が設定されるために、WPデスクリプタでLBA指定方式を変更することができる。
0104
本発明の実施形態によるストレージシステムはKey−ed Crypto Hashを利用する書込み防止方法に関する。例えば、HMACはKey−ed Crypto Hashから生成される。Key−ed Crypto Hashを利用してコマンドが認証されれば、格納装置と共有する秘密キー(private key)を知っているホストのみが書込み防止設定を変更することができる。したがって、本発明は認証されないホストからのデータ変更を防ぐことができる。また、本発明の実施形態によるストレージシステムはコマンド認証と同時に、書込み防止領域をホストのLBA(Logical Block Address)単位に設定することができる。
0105
本発明はKey−ed Crypto Hash、秘密キー、及びRequest Count等を利用する認証を通じて書込み防止を設定し、ホストのLBA単位に書込み防止領域を設定する。本発明は認証されないホストの書込み防止設定を制限して意図しなかったデータ変更を防ぐことができる。また、本発明はLBA単位に書込み防止領域を変更することによって、ホストから動的に、かつ柔軟な書込み防止動作を遂行することができる。
0106
一方、本発明の実施形態によるストレージシステムは様々な製品に適用又は応用することができる。本発明の実施形態によるストレージシステムはパーソナルコンピュータ、デジタルカメラ、カムコーダ、携帯電話、MP3、PMP、PSP、PDA等のような電子装置で具現することができる。そして、ストレージシステムの格納媒体はメモリカード、USBメモリ、ソリッドステートドライブ(Solid State Drive、以下、SSDと称する)等のような格納装置で具現することができる。
0107
図14は本発明の実施形態による格納装置をソリッドステートドライブ(SSD)に適用した例を示すブロック図である。図14を参照すれば、SSDシステム4000はホスト4100とSSD4200とを含む。
SSD4200は信号コネクタ(signal connector、4211)を介してホスト4100と信号を送受信し、電源コネクタ(power connector、4221)を介して電源が入力される。SSD4200は複数のフラッシュメモリ4201〜420n、SSDコントローラ4210、及び補助電源装置4220を含む。
0108
複数のフラッシュメモリ4201〜420nはSSD4200の格納媒体として使用される。SSD4200はフラッシュメモリ以外にもPRAM、MRAM、ReRAM、FRAM(登録商標)等の不揮発性メモリ装置を使用してもよい。複数のフラッシュメモリ4201〜420nは複数のチャンネルCH1〜CHnを介してSSDコントローラ4210と連結される。1つのチャンネルには1つ又はそれ以上のフラッシュメモリが連結される。1つのチャンネルに連結されるフラッシュメモリは同一のデータバスに連結される。
0109
SSDコントローラ4210は信号コネクタ4211を介してホスト4100と信号SGLとを送受信する。ここで、信号SGLにはコマンド、アドレス、データ等を含んでもよい。SSDコントローラ4210はホスト4100のコマンドにしたがって該当フラッシュメモリにデータを書き込むか、或いは該当フラッシュメモリからデータを読出す。SSDコントローラ4210の内部構成は図15を参照して詳細に説明される。
補助電源装置4220は電源コネクタ4221を介してホスト4100に連結される。補助電源装置4220はホスト4100から電源PWRを受信し、充電する。一方、補助電源装置4220はSSD4200の内に位置してもよく、SSD4200の外に位置してもよい。例えば、補助電源装置4220はメインボードに位置し、SSD4200へ補助電源を提供してもよい。
0110
図15は図14に図示されたSSDコントローラ4210の構成を例示的に示すブロック図である。図15を参照すれば、SSDコントローラ4210はNVMインターフェイス4211、ホストインターフェイス4212、ECC回路4213、中央処理装置(CPU、4214)、及びバッファメモリ4215を含む。
NVMインターフェイス4211はバッファメモリ4215から伝達されたデータを各々のチャンネルCH1〜CHnにスキャタリング(Scattering)する。そして、NVMインターフェイス4211はフラッシュメモリ4201〜420nから読み出したデータをバッファメモリ4215へ伝達する。ここで、NVMインターフェイス4211はフラッシュメモリのインターフェイス方式を使用する。即ち、SSDコントローラ4210はフラッシュメモリインターフェイス方式にしたがってプログラム、読出し、又は消去動作等を遂行する。
0111
ホストインターフェイス4212はホスト4100のプロトコルに対応してSSD4200とのインターフェイシングを提供する。ホストインターフェイス4212はUSB(Universal Serial Bus)、SCSI(Small Computer System Interface)、PCIexpress、ATA、PATA(Parallel ATA)、SATA(Serial ATA)、SAS(Serial Attached SCSI)等を利用してホスト4100と通信できる。また、ホストインターフェイス4212はホスト4100がSSD4200をハードディスクドライブ(HDD)として認識するように支援するディスクエミュレーション(Disk Emulation)機能を遂行することができる。
0112
ECC回路4213はフラッシュメモリ4201〜420nへ伝送されるデータを利用して、エラー訂正コード(ECC)を生成する。このように生成されたエラー訂正コード(ECC)はフラッシュメモリ4201〜420nのスペア領域(spare area)に格納される。ECC回路4213はフラッシュメモリ4201〜420nから読み出したデータのエラーを検出する。仮に検出されたエラーが訂正容量内であれば、ECC回路4213は検出されたエラーを訂正する。
0113
中央処理装置4214はホスト4100(図14参照)から入力された信号SGLを分析し、処理する。中央処理装置4214はホストインターフェイス4212やNVMインターフェイス4211を介してホスト4100やフラッシュメモリ4201〜420nを制御する。中央処理装置4214はSSD4200を駆動するためのファームウェアにしたがってフラッシュメモリ4201〜420nの動作を制御する。
0114
バッファメモリ4215はホスト4100から提供される書込みデータ又はフラッシュメモリから読み出したデータを一時的に格納する。また、バッファメモリ4215はフラッシュメモリ4201〜420nに格納されるメタデータやキャッシュデータを格納する。急なパワーオフ動作の時に、バッファメモリ4215に格納されたメタデータやキャッシュデータはフラッシュメモリ4201〜420nに格納される。バッファメモリ4215にはDRAM、SRAM等が含まれる。
0115
図16は本発明の実施形態による格納装置を電子装置で具現した例を示すブロック図である。ここで、電子装置5000はパーソナルコンピュータ(PC)で具現されるか、或いはノート型コンピューターコンピュータ、携帯電話、PDA(Personal Digital Assistant)、及びカメラ等のような携帯用電子装置で具現される。
図16を参照すれば、電子装置5000はメモリシステム5100、電源装置5200、補助電源装置5250、中央処理装置5300、DRAM5400、及び使用者インターフェイス5500を含む。メモリシステム5100はフラッシュメモリ5110及びメモリコントローラ5120を含む。
0116
図17は本発明の実施形態による使用者装置の格納装置をメモリカードに適用した例を示す。メモリカードシステム6000はホスト6100とメモリカード6200とを具備する。ホスト6100はホストコントローラ6110及びホスト接続ユニット6120を含む。メモリカード6200はカード接続ユニット6210、カードコントローラ6220、及びフラッシュメモリ6230を含む。
0117
ホスト6100はメモリカード6200にデータを書き込むか、或いはメモリカード6200に格納されたデータを読み出す。ホストコントローラ6110はコマンド(例えば、書込みコマンド)、ホスト6100内のクロック発生器(図示せず)で発生したクロック信号CLK及びデータDATをホスト接続ユニット6120を介してメモリカード6200へ伝送する。
0118
カードコントローラ6220はカード接続ユニット6210を介して受信された書込みコマンドに応答して、カードコントローラ6220内に在るクロック発生器(図示せず)で発生したクロック信号に同期してデータをフラッシュメモリ6230に格納する。フラッシュメモリ6230はホスト6100から伝送されたデータを格納する。例えば、ホスト6100がデジタルカメラである場合には映像データを格納する。
0119
なお、本発明の詳細な説明では具体的な実施形態に関して説明したが、本発明の範囲を逸脱しない限度内で様々な変形が可能であるのは勿論である。例えば、本発明の範囲はフラッシュメモリ装置に限定されない。本発明は変換階層によるアドレス変換が使用されるすべての格納装置に適用することができる。したがって、本発明の範囲は上述した実施形態に限定されて定めてはならないし、後述する特許請求の範囲のみでなく、この発明の特許請求の範囲と均等なものによって定められる。
0120
1000、2000、3000ストレージシステム
1100、2100、3100 ホスト
1200、2200、3200 格納装置