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

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

▶ マイクロン テクノロジー, インク.の特許一覧

<>
  • 特表-使い捨てパスワードの生成 図1
  • 特表-使い捨てパスワードの生成 図2
  • 特表-使い捨てパスワードの生成 図3A
  • 特表-使い捨てパスワードの生成 図3B
  • 特表-使い捨てパスワードの生成 図4
  • 特表-使い捨てパスワードの生成 図5
  • 特表-使い捨てパスワードの生成 図6
  • 特表-使い捨てパスワードの生成 図7
  • 特表-使い捨てパスワードの生成 図8A
  • 特表-使い捨てパスワードの生成 図8B
  • 特表-使い捨てパスワードの生成 図8C
  • 特表-使い捨てパスワードの生成 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-28
(54)【発明の名称】使い捨てパスワードの生成
(51)【国際特許分類】
   H04L 9/32 20060101AFI20221221BHJP
   G06F 21/62 20130101ALI20221221BHJP
【FI】
H04L9/32 100C
G06F21/62 309
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022525346
(86)(22)【出願日】2020-11-06
(85)【翻訳文提出日】2022-06-27
(86)【国際出願番号】 US2020059508
(87)【国際公開番号】W WO2021092461
(87)【国際公開日】2021-05-14
(31)【優先権主張番号】16/677,270
(32)【優先日】2019-11-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ルアン ジェームズ
(72)【発明者】
【氏名】ストロング ロバート ダブリュー.
(57)【要約】
パスワード生成の要求をホストシステムから受信する。要求を受信することに応答して、パスワード導出鍵が鍵導出シードに基づいて生成される。パスワードがパスワード導出鍵から導出され、このパスワードからラッピング鍵が導出される。ラッピング鍵は、ローカルメモリに格納される認証状態インジケーションをラップするために使用される。暗号化されたデータは、非対称暗号化鍵を使用して、鍵導出シードの暗号化に基づいて生成される。暗号化されたデータは、要求に応答して提供される。

【特許請求の範囲】
【請求項1】
メモリコンポーネント、及び
前記メモリコンポーネントと動作可能に結合される処理デバイス、
を含むシステムであって、
前記処理デバイスは、
ホストシステムから、パスワード生成の要求を受信することと、
前記要求を受信することに応答して、鍵導出シードに基づいてパスワード導出鍵を生成することと、
前記パスワード導出鍵からパスワードを導出することと、
前記パスワードに基づいてラッピング鍵を生成することと、
前記ラッピング鍵を使用して認証状態インジケーションをラップすることと、
前記ラップされた認証状態インジケーションを前記メモリコンポーネントに格納することと、
非対称暗号化鍵を使用して、前記鍵導出シードの暗号化に基づいて暗号化されたデータを生成することと、
前記暗号化されたデータを含む前記要求への応答を提供することと、
を含む操作を実行する、前記システム。
【請求項2】
前記操作は、
前記パスワードを含む認証要求を受信することと、
前記パスワードからアンラッピング鍵を導出することと、
前記アンラッピング鍵を使用して、前記ラップされた認証状態インジケーションをアンラップすることと、
前記認証要求に応答して、前記アンラッピングに基づいて前記認証状態インジケーションを提供することと、
をさらに含む、請求項1に記載のシステム。
【請求項3】
前記操作は、前記暗号化されたデータに基づいてパスワードオブジェクトを生成することをさらに含み、
前記パスワードオブジェクトは、オブジェクトヘッダ及び前記暗号化されたデータを含み、
前記応答は、前記パスワードオブジェクトを含む、請求項1に記載のシステム。
【請求項4】
前記パスワードオブジェクトの前記生成は、
前記オブジェクトヘッダを構築することと、
前記暗号化されたデータ及び前記オブジェクトヘッダを連結して、前記パスワードオブジェクトを形成することと、
を含む、請求項3に記載のシステム。
【請求項5】
前記操作は、
乱数生成器または擬似乱数生成器を使用してスクランブル鍵を生成することと、
前記スクランブル鍵を使用して、前記パスワードオブジェクトの1つ以上のフィールドをスクランブルすることと、
をさらに含む、請求項3に記載のシステム。
【請求項6】
前記操作は、
前記応答に前記パスワードオブジェクトを提供する前に、バイナリからテキストへの符号化スキームを使用して前記パスワードオブジェクトを符号化することをさらに含む、請求項3に記載のシステム。
【請求項7】
前記暗号化されたデータの前記生成は、バイナリデータ及び前記バイナリデータのハッシュを暗号化することを含み、
前記バイナリデータは、1つ以上の非乱数データフィールド、及び前記鍵導出シードを含む、請求項1に記載のシステム。
【請求項8】
前記処理デバイスは、鍵導出関数を使用して前記パスワード導出鍵を生成し、
前記処理デバイスは、パスワード導出関数を使用して前記パスワードを導出し、
前記処理デバイスは、パスワードベースの鍵導出関数を使用して前記ラッピング鍵を生成する、請求項1に記載のシステム。
【請求項9】
前記鍵導出シードは、乱数生成器または擬似乱数生成器によって生成される乱数または擬似乱数を含む、請求項1に記載のシステム。
【請求項10】
前記処理デバイスはメモリサブシステムコントローラを含む、請求項1に記載のシステム。
【請求項11】
ホストシステムから、パスワード生成の要求を受信することと、
前記要求を受信することに応答して、メモリサブシステムコントローラの少なくとも1つのプロセッサによって、鍵導出シードに基づいてパスワード導出鍵を生成することと、
前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、前記パスワード導出鍵からパスワードを導出することと、
前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、前記パスワードに基づいてラッピング鍵を生成することと、
前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、前記ラッピング鍵を使用して認証状態インジケーションをラップすることと、
前記ラップされた認証状態インジケーションを前記メモリサブシステムコントローラのメモリに格納することと、
前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、非対称暗号化鍵を使用して、前記鍵導出シードの暗号化に基づいて暗号化されたデータを生成することと、
前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、前記ホストシステムへの前記要求への応答を提供することであって、前記要求は前記暗号化されたデータを含む、前記提供することと、
を含む、方法。
【請求項12】
前記パスワードを含む認証要求を受信することと、
前記パスワードからアンラッピング鍵を導出することと、
前記アンラッピング鍵を使用して、前記ラップされた認証状態インジケーションをアンラップすることと、
前記認証要求に応答して、前記アンラッピングに基づいて前記認証状態インジケーションを提供することと、
をさらに含む、請求項11に記載の方法。
【請求項13】
前記方法は、前記暗号化されたデータに基づいてパスワードオブジェクトを生成することをさらに含み、
前記パスワードオブジェクトは、オブジェクトヘッダ及び前記暗号化されたデータを含み、
前記応答は、前記パスワードオブジェクトを含む、請求項11に記載の方法。
【請求項14】
前記パスワードオブジェクトの前記生成は、
前記オブジェクトヘッダを構築することと、
前記暗号化されたデータ及び前記オブジェクトヘッダを連結して、前記パスワードオブジェクトを形成することと、
を含む、請求項13に記載の方法。
【請求項15】
前記パスワード導出鍵の前記生成は、鍵導出関数を使用して前記パスワード導出鍵を生成することを含み、
前記パスワードの前記導出は、パスワード導出関数を使用して前記パスワードを導出することを含み、
前記ラッピング鍵の前記生成は、パスワードベースの鍵導出関数を使用して前記ラッピング鍵を生成することを含む、請求項11に記載の方法。
【請求項16】
前記応答に前記パスワードオブジェクトを提供する前に、バイナリからテキストへの符号化スキームを使用して前記パスワードオブジェクトを符号化することをさらに含む、請求項13に記載の方法。
【請求項17】
前記暗号化されたデータの前記生成は、バイナリデータ及び前記バイナリデータのハッシュを暗号化することを含み、
前記バイナリデータは、1つ以上の非乱数データフィールド、及び前記鍵導出シードを含む、請求項11に記載の方法。
【請求項18】
暗号学的ハッシュ関数を使用して前記バイナリデータの前記ハッシュを生成すること、
をさらに含む、請求項17に記載の方法。
【請求項19】
前記鍵導出シードは、乱数生成器または擬似乱数生成器によって生成される乱数または擬似乱数を含む、請求項11に記載の方法。
【請求項20】
命令を含む非一時的なコンピュータ可読記憶媒体であって、前記命令は、処理デバイスによって実行されると、
ホストシステムから、パスワード生成の要求を受信することと、
前記要求を受信することに応答して、鍵導出シードに基づいてパスワード導出鍵を生成することと、
前記パスワード導出鍵からパスワードを導出することと、
前記パスワードに基づいてラッピング鍵を生成することと、
前記ラッピング鍵を使用して認証状態インジケーションをラップすることと、
前記ラップされた認証状態インジケーションをローカルメモリに格納することと、
非対称暗号化鍵を使用して、前記鍵導出シードの暗号化に基づいて暗号化されたデータを生成することと、
前記暗号化されたデータを含む前記要求への応答を提供することと、
を含む操作を実行するように前記処理デバイスを設定する、前記非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
優先権出願
本出願は、2019年11月7日に出願された米国出願第16/677,270号に対する優先権の利益を主張するものであり、参照によりその全体が本明細書に援用されている。
【0002】
本開示の実施形態は、一般に、メモリサブシステムに関し、より具体的には、メモリサブシステムで使用するための使い捨てパスワードの生成に関する。
【背景技術】
【0003】
メモリサブシステムは、ソリッドステートドライブ(SSD)などのストレージシステムであることができ、データを格納する1つ以上のメモリコンポーネントを含むことができる。メモリコンポーネントは、例えば、不揮発性メモリコンポーネント及び揮発性メモリコンポーネントであり得る。一般に、ホストシステムは、メモリサブシステムを利用して、メモリコンポーネントにデータを格納し、メモリコンポーネントからデータを取得することができる。
【0004】
本開示は、以下に示す詳細な説明及び本開示のさまざまな実施形態の添付図面から、より十分に理解される。
【図面の簡単な説明】
【0005】
図1】本開示のいくつかの実施形態による、メモリサブシステムを含む例示的なコンピューティング環境を示す。
図2】本開示のいくつかの実施形態による、使い捨てパスワードの生成及び使用のための例示的な方法を実行する際のセキュアな通信環境におけるコンポーネント間のインタラクションを示すデータフロー図である。
図3A】本開示のいくつかの実施形態による、使い捨てパスワード生成及び認証のための例示的な方法を実行する際のセキュアな通信環境におけるコンポーネント間のインタラクションを示すスイムレーン図である。
図3B】本開示のいくつかの実施形態による、使い捨てパスワード生成及び認証のための例示的な方法を実行する際のセキュアな通信環境におけるコンポーネント間のインタラクションを示すスイムレーン図である。
図4】本開示のいくつかの実施形態による、生成されるパスワードオブジェクトのコンポーネントを示すブロック図である。
図5】本開示のいくつかの実施形態による、メモリサブシステムにおける使い捨てパスワード生成及び認証のための例示的な方法を示す流れ図である。
図6】本開示のいくつかの実施形態による、メモリサブシステムにおける使い捨てパスワード生成及び認証のための例示的な方法を示す流れ図である。
図7】本開示のいくつかの実施形態による、メモリサブシステムにおける使い捨てパスワード生成及び認証のための例示的な方法を示す流れ図である。
図8A】本開示のいくつかの実施形態による、例示的な認証セッションプロセスを示す流れ図である。
図8B】本開示のいくつかの実施形態による、例示的な認証セッションプロセスを示す流れ図である。
図8C】本開示のいくつかの実施形態による、例示的な認証セッションプロセスを示す流れ図である。
図9】本開示の実施形態が操作することができる例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0006】
本開示の態様は、メモリサブシステムにおける使い捨てパスワードの生成及び認証を対象とする。メモリサブシステムは、以降本明細書では、「メモリデバイス」とも称される。メモリサブシステムの一例は、SSDなどのストレージシステムである。いくつかの実施形態では、メモリサブシステムは、ハイブリッドメモリ/ストレージサブシステムである。一般に、ホストシステムは、1つ以上のメモリコンポーネントを含むメモリサブシステムを利用することができる。ホストシステムは、メモリサブシステムに格納されるデータを提供することができ、メモリサブシステムから取得されるデータを要求することができる。通常、メモリサブシステムコントローラは、ホストシステムからコマンドまたは操作を受信し、コマンドまたは操作を、メモリサブシステムのメモリコンポーネントへの所望のアクセスを達成するための命令または適切なコマンドに変換する。
【0007】
メモリサブシステムは、フィールドエンジニアなどの特別に認証されたユーザのみがアクセスできる機密情報、専有情報、または他のセンシティブ情報を格納してもよい。そのような情報の一例として、メモリサブシステムは、デバッグログを維持し、格納することができ、このデバッグログは、メモリサブシステム上で発生する問題を診断し、訂正するために使用されることができるメモリサブシステムの操作に関する情報を含む。多くの場合、このタイプのセンシティブ情報は、情報にアクセスすることが認証されている担当者が操作する外部コンピューティングマシン(例えば、サーバ)に通信される必要がある。従来のメモリサブシステムでは、メモリサブシステムからの情報の取得と、外部コンピューティングマシンへの情報の通信との両方は、セキュリティプロトコルの欠如のためにスヌーピングに対して脆弱である。従来のメモリサブシステムのこれらのセキュリティの脆弱性により、そこに含まれるセンシティブ情報への不正アクセスが発生する可能性がある。
【0008】
多くの場合、これらの通信には、公開鍵インフラストラクチャ(PKI)を使用して、暗号で署名し、センシティブ情報を検証する。このようにして、発信元の信頼性、及び不正な変更を検出する機能が導出されることができる。
【0009】
PKIの使用例には、ファームウェアの署名及び検証だけでなく、メモリサブシステムのセキュリティを危殆化する可能性のあるコマンドの認証が含まれる。ある特定の実施態様では、メモリサブシステムの外部にあり、メモリサブシステムから独立しているセキュアシステムのハードウェアセキュリティモジュール(HSM)によって秘密鍵がセキュアにされている間に、メモリサブシステムが検証プロセスを実行することによって、非対称暗号化鍵ペアの公開鍵が保護される。
【0010】
Rivest‐Shamir‐Adleman(RSA)PKI操作により、暗号化操作及び復号操作ができる。公開鍵で暗号化されたデータは、対応する秘密鍵でのみ復号されることができる。この秘密鍵が外部セキュアシステムでセキュアにされている場合、メモリサブシステムは、センシティブ情報を暗号化することができ、このセンシティブ情報は、メモリサブシステムからエクスポートされ、セキュアでないチャネルを介してセキュアシステムに転送されることにより、セキュアシステムで復号されることができる。暗号化されたセンシティブ情報のこの通信を容易にするために、ユーザ(多くの場合、フィールドアプリケーションエンジニア(FAE))は、セキュアシステムと通信するために、直接か、仮想プライベートネットワークを介してかいずれかで、専用ネットワークにアクセスする必要がある。ただし、メモリサブシステムが展開されている、ある特定の環境では、外部ネットワークにアクセスすることができない。これらの環境のネットワークアクセス制限により、メモリサブシステムをセキュアにロック解除して、それらに問い合わせする(デバッグのために)際に困難な課題が提示される。
【0011】
本開示の態様は、メモリサブシステムで使い捨てパスワードを生成するためにセキュアなメカニズムを実装することによって、上記かつ他の不具合に対処する。パスワード自体がメモリサブシステムに格納されていないが、パスワードが導出されることができる情報は、パスワードを再生成するためにセキュアサーバにセキュアに転送される。このセキュアサーバによって情報からパスワードが再生成されると、パスワードは要求しているユーザ(例えば、FAE)に返され、ユーザはパスワードを使用して、メモリサブシステムをロック解除してもよい、または特権コマンドを実行してもよい。
【0012】
いくつかの実施形態と一貫して、公開鍵及び秘密鍵を含む非対称鍵ペアが生成され、メモリサブシステムコントローラに公開鍵がプロビジョニングされることにより、センシティブ情報が暗号化される。セキュアサーバに秘密鍵がプロビジョニングされることにより、センシティブ情報が復号される。ホストシステムは、メモリサブシステムからのパスワードの生成を要求することができ、メモリサブシステムは、鍵導出シードを有する暗号化されたデータを含むパスワード再生成オブジェクトで応答することにより、この鍵導出シードからパスワードが導出されることができる。メモリサブシステムのセキュリティコンポーネントは、公開鍵を使用して暗号化されたデータを生成する。セキュアサーバのみが秘密鍵を有することから、セキュアサーバのみが鍵導出シードにアクセスし、そこからパスワードを導出することができる。したがって、ホストシステムのユーザは、パスワード再生成要求の一部としてパスワードオブジェクトをセキュアサーバに転送することができ、今度は、セキュアサーバは、秘密鍵を使用して暗号化されたデータを復号し、鍵導出シードを使用してパスワードを導出し、このパスワードが要求に応答して返される。
【0013】
いくつかの実施形態では、メモリサブシステムのセキュリティコンポーネントは、乱数生成器または擬似乱数生成器を使用して鍵導出シードを生成し、鍵導出関数(KDF)を使用して鍵導出シードからパスワード導出鍵を導出する。セキュリティコンポーネントは、パスワード導出関数(PDF)を使用して、パスワード導出鍵からパスワードを導出する。セキュリティコンポーネントは、パスワードベースの鍵導出関数(PBKDF)を使用して、パスワードからラッピング鍵を導出し、認証/ロック解除状態インジケーションをラップする。セキュリティコンポーネントは、パスワード自体ではなく、ラップされた認証/ロック解除状態インジケーションをローカルメモリに格納する。セキュリティコンポーネントは、公開鍵を使用して、鍵導出シードを含む暗号化されたデータを生成し、暗号化されたデータを含むパスワード導出オブジェクトを生成する。パスワードオブジェクトは、要求に応答して提供される。
【0014】
要求に応答してパスワードオブジェクトを受信すると、ホストシステムのユーザは、パスワードオブジェクトを含むパスワード再生成要求をセキュアサーバにサブミットすることができる。セキュアサーバは、対応する秘密鍵を使用して、パスワードオブジェクト内の暗号化されたデータを復号する。セキュアサーバは、KDFを使用して、復号されたデータに含まれる鍵導出シードからパスワード導出鍵を導出し、セキュアサーバは、PDFを使用して、パスワード導出鍵からパスワードを導出する。セキュアサーバは、パスワード再生成要求に応答してパスワードを提供する。パスワードを受信すると、ユーザはパスワードを使用してメモリサブシステムをロック解除することができる。メモリサブシステムをロック解除するために使用された後、パスワードは二度と使用されることができない。したがって、パスワードは1回だけ使用されることができる。
【0015】
上記のセキュリティプロトコルを利用して、認証されていない当事者によるセンシティブ情報へのアクセスを防ぐことにより、従来のメモリサブシステムに存在するセンシティブ情報の通信における脆弱性が低下する。例えば、最悪の場合、生データではなく暗号化されたデータのみが、スヌーピングを介してアクセスされることができる。さらに、セキュリティプロトコルは、認証された担当者がメモリサブシステムからセンシティブ情報にセキュアにアクセスするためのセキュアなメカニズムを提供する。
【0016】
図1は、本開示のいくつかの実施形態による、メモリサブシステム110を含む例示的なコンピューティング環境100を示す。メモリサブシステム110は、メモリコンポーネント112-1~112-Nなどの媒体を含むことができる。メモリコンポーネント112-1~112-Nは、揮発性メモリコンポーネント、不揮発性メモリコンポーネント、またはそれらの組み合わせであり得る。いくつかの実施形態では、メモリサブシステム110は、ストレージシステムである。ストレージシステムの一例は、SSDである。いくつかの実施形態では、メモリサブシステム110は、ハイブリッドメモリ/ストレージサブシステムである。一般に、コンピューティング環境100は、メモリサブシステム110を使用するホストシステム120を含むことができる。例えば、ホストシステム120は、メモリサブシステム110にデータを書き込み、メモリサブシステム110からデータを読み出すことができる。
【0017】
ホストシステム120は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイスなどのコンピューティングデバイス、またはメモリ及び処理デバイスを含むそのようなコンピューティングデバイスであり得る。ホストシステム120がメモリサブシステム110からデータを読み出す、またはこのメモリサブシステムにデータを書き込むことができるように、ホストシステム120はメモリサブシステム110を含むことができる、またはこのメモリサブシステムに結合されることができる。ホストシステム120は、物理ホストインタフェースを介してメモリサブシステム110に結合されることができる。本明細書で使用される場合、「~に結合される」は、一般に、電気、光、磁気などの接続を含む、有線または無線を問わず、間接通信接続または直接通信接続(例えば、介在するコンポーネントなし)であり得るコンポーネント間の接続を指す。物理ホストインタフェースの例は、シリアルアドバンスドテクノロジーアタッチメント(SATA)インタフェース、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)インタフェース、ユニバーサルシリアルバス(USB)インタフェース、ファイバチャネルインタフェース、シリアルアタッチドSCSI(SAS)などを含むが、これらに限定されない。物理ホストインタフェースを使用して、ホストシステム120とメモリサブシステム110との間でデータを伝送することができる。メモリサブシステム110がPCIeインタフェースによってホストシステム120と結合されているときに、ホストシステム120は、NVM Express(NVMe)インタフェースをさらに利用して、メモリコンポーネント112-1~112-Nにアクセスすることができる。物理ホストインタフェースは、メモリサブシステム110とホストシステム120との間で制御信号、アドレス信号、データ信号、及び他の信号を渡すためのインタフェースを提供することができる。
【0018】
メモリコンポーネント112-1~112-Nは、さまざまなタイプの不揮発性メモリコンポーネント及び/または揮発性メモリコンポーネントの任意の組み合わせを含むことができる。不揮発性メモリコンポーネントの一例は、否定論理積(NAND)型フラッシュメモリを含む。メモリコンポーネント112-1~112-Nのそれぞれは、シングルレベルセル(SLC)またはマルチレベルセル(MLC)(例えば、トリプルレベルセル(TLC)またはクアッドレベルセル(QLC))などのメモリセルの1つ以上のアレイを含むことができる。いくつかの実施形態では、特定のメモリコンポーネントは、メモリセルのSLC部分及びMLC部分の両方を含むことができる。メモリセルのそれぞれは、ホストシステム120によって使用される1ビット以上のデータ(例えば、データブロック)を格納することができる。NAND型フラッシュメモリなどの不揮発性メモリコンポーネントが説明されているが、メモリコンポーネント112-1~112-Nは、揮発性メモリなどの他の任意のタイプのメモリに基づく場合がある。いくつかの実施形態では、メモリコンポーネント112-1~112-Nは、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、同期ダイナミックランダムアクセスメモリ(SDRAM)、相変化メモリ(PCM)、磁気ランダムアクセスメモリ(MRAM)、否定論理和(NOR)フラッシュメモリ、電気的に消去可能でプログラム可能な読み出し専用メモリ(EEPROM)、及び不揮発性メモリセルのクロスポイントアレイであることができるが、これらに限定されない。不揮発性メモリセルのクロスポイントアレイは、積層可能なクロスグリッドデータアクセスアレイと組み合わせて、バルク抵抗の変化に基づいてビットストレージを実行することができる。さらに、多くのフラッシュベースのメモリとは対照的に、クロスポイント不揮発性メモリは、不揮発性メモリセルを事前に消去せずに不揮発性メモリセルをプログラムできるインプレース書き込み操作を実行できる。さらに、上記のように、メモリコンポーネント112-1~112-Nのメモリセルは、データを格納するために使用されるメモリコンポーネントのユニットを参照することができるデータブロックとしてグループ化されることができる。
【0019】
メモリサブシステムコントローラ115(以降本明細書では、「コントローラ」と称される)は、メモリコンポーネント112-1~112-Nと通信して、メモリコンポーネント112-1~112-Nでのデータの読み出し、データの書き込み、またはデータの消去などの操作及び他のそれらのような操作を実行することができる。コントローラ115は、1つ以上の集積回路及び/または個別のコンポーネント、バッファメモリ、またはそれらの組み合わせなどのハードウェアを含むことができる。コントローラ115は、マイクロコントローラ、専用論理回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、または別の適切なプロセッサであり得る。コントローラ115は、ローカルメモリ119に格納された命令を実行するように構成されたプロセッサ(処理デバイス)117を含むことができる。図示の例では、コントローラ115のローカルメモリ119は、さまざまなプロセス、操作、論理フロー、及びメモリサブシステム110とホストシステム120との間の通信の処理を含む、メモリサブシステム110の動作を制御するルーチンを実行するための命令を格納するように構成された埋め込みメモリを含む。いくつかの実施形態では、ローカルメモリ119は、メモリポインタ、フェッチされたデータなどを格納するメモリレジスタを含むことができる。ローカルメモリ119はまた、マイクロコードを格納するためのROMを含むことができる。図1の例示的なメモリサブシステム110は、コントローラ115を含むものとして示され、本開示の別の実施形態では、メモリサブシステム110は、コントローラ115を含まなくてもよく、代わりに、外部制御(例えば、外部ホストによって、またはメモリサブシステムとは別のプロセッサもしくはコントローラによって提供される)に依拠し得る。
【0020】
一般に、コントローラ115は、ホストシステム120からコマンドまたは操作を受信することができ、コマンドまたは操作を、メモリコンポーネント112-1~112-Nへの所望のアクセスを達成するための命令または適切なコマンドに変換することができる。コントローラ115は、ウェアレベリング操作、ガベージコレクション操作、エラー検出及びエラー訂正コード(ECC)操作、暗号化操作、キャッシング操作、及び論理ブロックアドレスと物理ブロックアドレスとの間のアドレス変換などの他の操作を担うことができ、これらは、メモリコンポーネント112-1~112-Nに関連付けられている。コントローラ115は、物理ホストインタフェースを介してホストシステム120と通信するためのホストインタフェース回路をさらに含むことができる。ホストインタフェース回路は、ホストシステム120から受信したコマンドをメモリコンポーネント112-1~112-Nにアクセスするコマンド命令に変換し、メモリコンポーネント112-1~112-Nに関連付けられた応答をホストシステム120のための情報に変換することができる。
【0021】
メモリサブシステム110はまた、図示されていない追加の回路またはコンポーネントを含むことができる。いくつかの実施形態では、メモリサブシステム110は、キャッシュまたはバッファ(例えば、DRAM)、及びコントローラ115からアドレスを受信し、アドレスをデコードしてメモリコンポーネント112-1~112-Nにアクセスできるアドレス回路(例えば、ロウデコーダとカラムデコーダ)を含むことができる。
【0022】
また、メモリサブシステム110は、メモリサブシステム110とのセキュアな通信を容易にするセキュリティコンポーネント113を含む。セキュリティコンポーネント113は、コントローラ115、またはメモリコンポーネント112-1~112-Nのうちのいずれか1つ以上に含まれてもよい。いくつかの実施形態では、コントローラ115は、セキュリティコンポーネント113の少なくとも一部を含む。例えば、コントローラ115は、本明細書に記載の操作を実行するために、ローカルメモリ119に格納される命令を実行するように設定されるプロセッサ(処理デバイス)117を含むことができる。いくつかの実施形態では、セキュリティコンポーネント113は、ホストシステム120、アプリケーション、またはオペレーティングシステムの一部である。
【0023】
セキュリティコンポーネント113は、パスワードオブジェクトを生成し、そこから導出されたパスワードに基づいて、メモリサブシステム110が格納するデータへのアクセスを認証することに応答可能である。より具体的には、セキュリティコンポーネント113は、使い捨てパスワードを導出することができるパスワードオブジェクトを生成する。各使い捨てパスワードは、メモリサブシステム110をロック解除するために1回だけ使用されることができる。パスワード自体は、セキュリティコンポーネント113、またはメモリサブシステム110のいかなる他のコンポーネントによっても格納されない。むしろ、セキュリティコンポーネント113がデータを生成して格納し、このデータとパスワードが比較されることにより、正しいパスワードが使用されていることが検証されることができる。パスワードを使用してメモリサブシステム110をロック解除した後、パスワードを検証するために使用された基礎となるデータは破棄される。
【0024】
セキュリティコンポーネント113は、ホストシステム120からパスワード生成の要求を受信し、それに応答してホストシステム120にパスワードオブジェクトを提供する。パスワードオブジェクトは、鍵導出シードを含む暗号化されたデータを含み、この鍵導出シードからパスワード導出鍵は、導出され、パスワードを導出するために使用されることができる。セキュリティコンポーネント113は、1つ以上の暗号化鍵を格納する鍵ストア109をさらに含むことができ、セキュリティコンポーネント113は、これら1つ以上の暗号化鍵を使用して、情報を暗号化することができる。いくつかの実施形態では、鍵ストア109は、メモリサブシステムコントローラ115のローカルメモリ(例えば、ローカルメモリ119)内に実装される。いくつかの実施形態では、鍵ストア109は、メモリコンポーネント112-1~112-Nのうちの1つ以上の内に実装される。
【0025】
また、セキュリティコンポーネント113は、メモリサブシステム110にアクセスするための認証要求を受信する。各認証要求は、パスワードを含み、このパスワードは、セキュリティコンポーネント113によって生成されるパスワードオブジェクトからパスワードを導出することに応答可能であるセキュアサーバによって、ホストシステム120のユーザ(例えば、フィールドエンジニア)に提供されてもよい。セキュリティコンポーネント113は、このパスワードを、格納された情報と比較して、パスワードが正しいかどうかを判定し、正しい場合、セキュリティコンポーネント113は、ロック解除/認証インジケーションを提供し、メモリサブシステム110をロック解除し、パスワードが正しいかどうかを判定するために使用された、格納された情報を破棄する。
【0026】
セキュリティコンポーネント113は、物理ホストインタフェースを介して、または診断ポートもしくはメンテナンスポートとして特別に構成されることができるネイティブ側波帯通信ポート(例えば、ユニバーサル非同期受信器/送信器(UART)ポート、または双方向通信をサポートする他のシリアル通信ポート)を介してホストシステム120と通信してもよい。
【0027】
図2は、本開示のいくつかの実施形態による、使い捨てパスワードの生成及び使用のための例示的な方法を実行する際のセキュアな通信環境におけるコンポーネント間のインタラクションを示すデータフロー図である。図2に照らして、非対称暗号化鍵ペア(公開鍵及び秘密鍵)は予め生成されることができ、公開鍵がセキュリティコンポーネント113にプロビジョニングされると、データが暗号化されることができ、秘密鍵がセキュアサーバ200にプロビジョニングされると、データが復号される。
【0028】
示されるように、202では、ホストシステム120は、パスワード生成の要求を送信する。この要求に応答して、コントローラ115のセキュリティコンポーネント113は、パスワードオブジェクトを生成する。パスワードオブジェクト自体がパスワードを含まず、セキュリティコンポーネント113もまたパスワード自体を格納しない。代替に、パスワードオブジェクトは、公開鍵を使用して生成される、暗号化されたデータを含み、この暗号化されたデータは鍵導出シードを含み、この鍵導出シードからパスワード導出鍵は、導出され、パスワードを導出するために使用されることができる。
【0029】
204では、コントローラ115は、パスワードオブジェクトを用いてホストシステム120からの要求に応答し、今度は206では、ホストシステム120のユーザ201(例えば、FAE)は、パスワード再生成要求の一部としてパスワードオブジェクトをセキュアサーバ200に提供することにより、このセキュアサーバは、暗号化されたデータを復号することができる。次に、セキュアサーバ200は、暗号化されたデータを復号し、鍵導出シードからパスワード導出鍵を導出する。次に、セキュアサーバ200は、パスワード導出鍵からパスワード210を導出し、208では、セキュアサーバ200は、パスワード210(例えば、ホストシステム120、またはホストシステム120のユーザ201に返す)を、パスワード再生成要求に応答して提供する。
【0030】
以下でさらに議論されるように、ホストシステム120のユーザ201は、メモリサブシステム110をロック解除するためにパスワードを1回だけ使用することができる。上記のように、セキュリティコンポーネント113は、パスワード自体を格納しない。代替に、セキュリティコンポーネント113は、パスワードからラッピング鍵をも導出し、このラッピング鍵を使用して認証インジケーションをラップする。ラップされた認証インジケーションは、セキュリティコンポーネント113によって格納され(例えば、ローカルメモリ119に)、セキュリティコンポーネント113が認証要求中にパスワードを受信すると、このパスワードから導出されるアンラッピング鍵でアンラップされてもよい。セキュリティコンポーネント113によって最初に導出されたパスワードが認証要求中に提供されたパスワードにマッチングする場合、アンラッピング鍵はラッピング鍵と同一であるため、ラップされた認証インジケーションをアンラップすることができる。セキュリティコンポーネント113がラップされた認証インジケーションを正常にアンラップすると、認証インジケーションが提供され、メモリサブシステム110がロック解除状態に入る。パスワードを使用してメモリサブシステム110をロック解除した後、パスワードに対応するラップされたデータは破棄される。
【0031】
図3A及び3Bは、いくつかの実施形態による、使い捨てパスワード生成及び認証のための例示的な方法300を実行する際のセキュアな通信環境におけるコンポーネント間のインタラクションを示すスイムレーン図である。図3Aに示されるように、方法300は、ホストシステム120がパスワード生成の要求をコントローラ115のセキュリティコンポーネント113に送信する操作302で開始する。この要求を受信することに応答して、セキュリティコンポーネント113は、操作304では、鍵導出関数(KDF)(例えば、ハッシュベースのメッセージ認証コード(HMAC)導出)を使用してパスワード導出鍵を生成する。KDFは、決定論的乱数生成器(DRBG)機能を使用して、鍵導出シードからパスワード導出鍵を導出する。鍵導出シードは、乱数生成器または擬似乱数生成器を使用して生成される、乱数または擬似乱数の値を含む。
【0032】
操作306では、セキュリティコンポーネント113は、パスワード導出関数(PDF)を使用して、パスワード導出鍵からパスワードを導出する。操作308では、セキュリティコンポーネント113は、パスワードベースの鍵導出関数(PBKDF)(例えば、PBKDF1またはPBKDF2)を使用して、パスワードに基づいてラッピング鍵を生成する。操作310では、セキュリティコンポーネント113は、ラッピング鍵を使用して、コントローラ115のローカルメモリ(例えば、内部SRAM)に格納される認証状態インジケーションをラップする。セキュリティコンポーネント113は、ラッピング鍵を使用して認証状態インジケーションをラップする、多くの既知のラッピングメカニズムのうちの1つを使用してもよい。格納されているラップされたデータは、認証が成功した後に破棄され、メモリサブシステム110のリブートまたはリセットの後に存続しない。
【0033】
操作312では、セキュリティコンポーネント113は、公開鍵(例えば、RSAアルゴリズムを使用して鍵ペアの一部として生成され、鍵ストア109に格納される非対称暗号化鍵)を使用して暗号化されたデータを生成する。暗号化されたデータは、他のデータの中でも鍵導出シードを含み、これは、以下でさらに議論される。操作314では、セキュリティコンポーネント113は、暗号化されたデータに基づいてパスワードオブジェクトを生成する。セキュリティコンポーネント113は、暗号化されたデータをオブジェクトヘッダと連結することによってパスワードオブジェクトを生成することができる。操作316では、セキュリティコンポーネント113は、パスワードオブジェクトを用いてホストシステム120からの要求に応答する。パスワードオブジェクトをホストシステム120に提供する前に、セキュリティコンポーネント113は、例えば、BASE64などのバイナリからテキストへの符号化スキームを使用して、パスワードオブジェクトまたはその一部を符号化することができる。
【0034】
ホストシステム120に、対応する秘密鍵をプロビジョニングしていないため、ホストシステム120は、パスワードオブジェクト内の暗号化されたデータを復号することができない。したがって、パスワードオブジェクトを受信すると、操作318では、ホストシステム120、またはホストシステム120のユーザ(例えば、FAE)は、パスワード再生成要求の一部として、パスワードオブジェクトをセキュアサーバ200に送信する。
【0035】
セキュアサーバ200は、パスワードオブジェクトに含まれる暗号化されたデータを生成するために使用される公開鍵に対応する秘密鍵を維持する。したがって、セキュアサーバ200は、暗号化されたデータを復号することができる。その結果、パスワードオブジェクトを受信すると、セキュアサーバ200は、操作320では、秘密鍵を使用して、暗号化されたデータを復号する。公開鍵は、パスワードオブジェクトに含まれてもよく、適切な秘密鍵表現を識別するハンドルとして使用されてもよい。パスワードオブジェクトまたはその一部が符号化される実施形態では、セキュアサーバ200は、秘密鍵を使用して復号する前に、パスワードオブジェクトまたはその一部を復号することができる。
【0036】
暗号化データを復号すると、セキュアサーバ200は、操作322では、KDFを使用して、鍵導出シードからパスワード導出鍵を導出する。操作324では、セキュアサーバ200は、PDFを使用して、パスワード導出鍵からパスワードを導出する。操作326では、セキュアサーバ200は、パスワード再生成要求に応答して、ホストシステム120にパスワードを提供する。次に、FAEまたは他の担当者は、パスワードを使用して、メモリサブシステム110をロック解除することができる。
【0037】
例えば、図3Bに示されるように、操作328では、ホストシステム120は、認証要求をセキュリティコンポーネント113に提供する。操作326では、認証要求は、ホストシステム120に提供されるパスワードを含む。パスワードを受信すると、セキュリティコンポーネント113は、操作330では、PBKDFを使用して、パスワードからアンラッピング鍵を導出する。パスワードが正しい場合、アンラッピング鍵は、認証状態インジケーションをラップするために使用されるラッピング鍵と同一である(操作310では)。操作332では、セキュリティコンポーネント113は、アンラッピング鍵を使用して、ローカルメモリに格納されている、ラップされた認証状態インジケーションをアンラップする。操作334では、セキュリティコンポーネント113は、認証状態インジケーションの成功したアンラッピングに基づいて認証状態インジケーションを提供し、操作336では、セキュリティコンポーネント113は、メモリサブシステム110をロック解除する。操作338では、セキュリティコンポーネント113は、パスワードの使用に基づいて、ラップされたデータを破棄する。このようにして、パスワードは、メモリサブシステム110をロック解除するためにもう一度使用されることができない。
【0038】
図4は、本開示のいくつかの実施形態による、生成されるパスワードオブジェクト400のコンポーネントを示すブロック図である。示されるように、パスワードオブジェクト400は、オブジェクトヘッダ402及び暗号化されたデータ404を含む。オブジェクトヘッダ402は、複数のフィールドを含み、これらのフィールドは、識別子、サイズ、バージョン、保護スキーム、パスワード鍵属性、パスワード鍵長、及び公開鍵などのパスワードオブジェクト400に関する情報を含む。
【0039】
暗号化されたデータ404は、最適非対称暗号化パディング(OAEP)406、バイナリデータ408、及びこのバイナリデータ408のハッシュ410を含む。ハッシュ410は、セキュアハッシュアルゴリズム256(SHA256)などの暗号学的ハッシュ関数への入力としてバイナリデータ408を提供することによって生成される。
【0040】
バイナリデータ408は、バージョン412、ラップタイプ414、オプション416、パスワード長418、タイムスタンプ420、デバイス情報422、鍵導出シード424、及びスクランブル鍵426などの複数のフィールドを含む。バージョン412、ラップタイプ414、オプション416、パスワード長418、タイムスタンプ420、及びデバイス情報422のフィールドは、これらのフィールドが非乱数値で埋められるので、本明細書では「非乱数フィールド」と総称されることがある。逆に、鍵導出シード424及びスクランブル鍵426は、これらのフィールドが乱数値で埋められるので、「乱数フィールド」と総称されることがある。
【0041】
バージョン412のフィールドは、使用されているパスワードオブジェクト構造のバージョンを指定するために使用される。バージョン412のフィールドは、オブジェクトプロデューサとコンシューマとの間の互換性を決定するために使用されることがある。ラップタイプ414のフィールドは、ラップされたオブジェクトタイプを指定するために使用され、異なるラップされたオブジェクトの間の区別をするために使用される。
【0042】
オプション416のフィールドは、パスワードオブジェクト400内のオプションのコンフィグレーション情報を指定するために使用され、処理についての要件を黙示的に定義することができる。例えば、オプション416のフィールドは、タイムスタンプ420のフィールドが設定されることを示すために使用されることができ、このタイムスタンプのフィールドは、パスワードオブジェクト400に関する有効期限を実装するために使用されることができる。別の例として、オプション416のフィールドは、追加のオプションのシードデータがパスワード導出鍵の導出プロセスの一部として使用されることを示すために使用されることができる。さらに別の例として、オプション416のフィールドは、KDFが単一のHMAC導出であることを示すために使用されることができる。
【0043】
パスワード長418のフィールドは、使用されているパスワードの長さ(例えば、バイト単位)を指定するために使用される。この長さは、プログラムごとに設定されてもよい、またはメモリサブシステム110によってランダムに決定される範囲であってもよい。タイムスタンプ420のフィールドは、パスワードオブジェクト400が作成された時間に関する情報を含む。デバイス情報422のフィールドは、パスワードオブジェクト400を作成したメモリサブシステム110を識別するために使用されることができるデバイス固有の情報を含む。
【0044】
鍵導出シード424は、パスワード導出鍵を導出するために使用される。鍵導出シード424は、DRBG機能を使用して、メモリサブシステム110によって生成される。スクランブル鍵426は、データに対する既知のアンサーアタックからさらに保護するために、非乱数フィールド内の値だけでなく鍵導出シード424を難読化するために使用されることができる。また、セキュリティコンポーネント113は、鍵導出シード424を生成するために使用されるDRBG機能を使用してスクランブル鍵426を生成する。
【0045】
図4に示されるように、鍵導出シード424は、パスワード導出鍵430を生成するためのKDF428への入力として提供される。図4に示されるように、いくつかの実施形態では、オプションの補足テキスト432(例えば、ユーザ201によって提供される)は、パスワード導出鍵430を生成するためのKDF428への入力として鍵導出シード424に加えて提供されてもよい。セキュリティコンポーネント113は、PDF434を使用して、パスワード導出鍵430からパスワード436を導出する。
【0046】
図5~7は、本開示のいくつかの実施形態による、メモリサブシステムにおける使い捨てパスワード生成及び認証のための例示的な方法500を示す流れ図である。方法500は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行することができる。いくつかの実施形態では、方法500は、図1のセキュリティコンポーネント113によって実行される。プロセスが特定のシーケンスまたは順序で示されているが、別段に指定されない限り、プロセスの順序は変更されることができる。したがって、図示された実施形態は例としてのみ理解されるべきであり、図示されたプロセスは異なる順序で実行されることができ、いくつかのプロセスは並行して実行されることができる。さらに、さまざまな実施形態では、1つ以上のプロセスを省略することができる。したがって、すべての実施形態ですべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
【0047】
操作505では、処理デバイスは、パスワード生成の要求を受信する。この要求は、ホストシステム120から受信されてもよい。いくつかの実施形態では、この要求を受信することは、ホストシステムインタフェースを介してホストシステムから1つ以上のコマンドを受信することを含む。いくつかの実施形態では、この要求を受信することは、通信ポート(例えば、UARTポートまたは双方向通信をサポートする他のシリアル通信ポート)を介してホストシステムから要求を受信することを含む。通信ポートは、診断またはメンテナンスのために特別に構成されるネイティブポートであってもよい。
【0048】
操作510では、処理デバイスは、鍵導出シードに基づいてパスワード導出鍵を生成する。処理デバイスは、KDFを使用して、少なくとも鍵導出シードからパスワード導出鍵を導出する。例えば、処理デバイスは、HMAC導出関数を利用して、パスワード導出鍵を導出することができる。鍵導出シードは、例えばDRBG機能を使用して、処理デバイスによって生成される乱数または擬似乱数の値である。いくつかの実施形態と一貫して、KDFの出力は、パスワード導出鍵に対応する、256ビットの対称鍵である。パスワード導出鍵がメモリサブシステム110によって格納されないことに留意されたい。パスワード導出鍵は、鍵導出シードから、メモリサブシステム110またはセキュアサーバ200によってのみ導出される。
【0049】
いくつかの実施形態では、ホストシステム120によって提供されるオプションの補足データは、それを鍵導出シードにアペンドすることによって、パスワード導出鍵の導出プロセスに組み込まれることができる。ホストシステム120によって提供されるオプションの補足データは、例えば、ユーザによって生成されるテキストを含んでもよい。これらの実施形態と一貫して、処理デバイスは、KDFを使用して、鍵導出シードと補足データとの組み合わせからパスワード導出鍵を導出することができる。
【0050】
操作515では、処理デバイスは、パスワード導出鍵からパスワードを導出する。例えば、処理デバイスは、パスワード導出鍵からパスワードを導出する際にPDFを利用してもよい。パスワード導出鍵と同様に、導出されたパスワード自体は、メモリサブシステム110によって格納されない。
【0051】
処理デバイスは、操作520に示されるように、PBKDF(例えば、PBKDF1またはPBKDF2)を使用して、パスワードに基づいてラッピング鍵を生成する。例えば、処理デバイスはPBKDFにパスワードを提供してもよく、PBKDFの出力はラッピング鍵であってもよい。操作525では、処理デバイスは、ラッピング鍵を使用して、認証状態インジケーションをラップする。処理デバイスは、認証状態インジケーションをラップする(例えば、AES鍵ラップ仕様またはAmerican Standards Committee ANSX9.102仕様に基づいて)、多くの既知のラッピング技法のうちの1つを利用してもよい。セキュリティコンポーネント113は、認証要求中にパスワードを受信すると、認証状態インジケーションを提供してもよい。認証状態インジケーションの正確な定義及び使用は、プログラム固有であってもよく、メモリサブシステム110の機能に依存してもよい。認証状態インジケーションは、操作505でパスワード生成要求をサブミットするために使用されたインタフェースに関する情報(例えば、UART、ホストインタフェース、またはマルチポート対応システムのポート番号)を含む。いくつかの実施形態では、認証状態インジケーションは、認証機能が同じインタフェース上で許可される実装において、厳密なパスワード生成及び認証インタフェースの一貫性を実施するために使用されることができる。
【0052】
操作530に示されるように、処理デバイスは、ラップされた認証状態インジケーションをローカルメモリ(例えば、ローカルメモリ119)に格納する。例えば、処理デバイスは、ラップされた認証状態インジケーションをSRAMに格納することができる。
【0053】
その後、処理デバイスは、非対称暗号化鍵を使用した鍵導出シードの暗号化に基づいて、暗号化されたデータを生成する(操作535を参照)。暗号化されたデータの生成は、バイナリデータ(例えば、バイナリデータ408)、及びこのバイナリデータのハッシュ(例えば、ハッシュ410)を暗号化することを含み、ここでは、バイナリデータは、情報の中でも特に鍵導出シードを含む。非対称暗号化鍵は、公開鍵であり、この公開鍵は、RSAアルゴリズムを使用して鍵ペアの一部として生成され、処理デバイスにプロビジョニングされる。したがって、処理デバイスは、RSA暗号化を使用して、バイナリデータ、及びこのバイナリデータのハッシュを暗号化することができる。
【0054】
操作540では、処理デバイスは、暗号化されたデータに基づいて、パスワードオブジェクト(例えば、パスワードオブジェクト400)を生成する。パスワードオブジェクトの生成は、暗号化されたデータをオブジェクトヘッダと連結することを含んでもよい。例示的なパスワードオブジェクトに関するさらなる詳細は、図4を参照して上述される。
【0055】
処理デバイスは、操作545では、要求に応答してパスワードオブジェクトを提供する。例えば、処理デバイスは、ホストシステム120から受信した要求に応答して、パスワードオブジェクトをホストシステム120に返すことができる。
【0056】
図6に示されるように、方法500は、いくつかの実施形態では、操作605、610、615、620、625、630、635、及び640のうちのいずれか1つ以上を含んでもよい。これらの実施形態と一貫して、操作605、610、及び615は、処理デバイスがパスワード生成の要求を受信する操作505の後に実行されてもよい。
【0057】
示されるように、操作605では、処理デバイスは、パスワードオブジェクトにオブジェクトヘッダ(例えば、オブジェクトヘッダ402)を構築する。オブジェクトヘッダは、複数のフィールドを含み、これらのフィールドは、暗号化されたデータを生成するために使用される、識別子、サイズ、バージョン、保護スキーム、パスワード鍵属性、パスワード鍵長、及び公開非対称暗号化鍵などのパスワードオブジェクトに関する情報を含む。
【0058】
処理デバイスは、鍵導出シードを生成する(操作610を参照)。鍵導出シードは、DRBG機能を使用して、処理デバイスによって生成される乱数または擬似乱数の値である。
【0059】
操作615に示されるように、処理デバイスはスクランブル鍵を生成する。スクランブル鍵もまた、DRBG機能を使用して、処理デバイスによって生成される乱数または擬似乱数の値である。
【0060】
これらの実施形態と一貫して、操作620、625、630、及び635は、処理デバイスがパスワードオブジェクトを生成する540の一部(例えば、副操作)として実行されてもよい。操作620では、処理デバイスは、パスワードオブジェクトの1つ以上の非乱数データフィールド内に値を設定する。上記のように、非乱数データフィールドは、バージョンフィールド(例えば、412)、ラップタイプフィールド(例えば、414)、オプションフィールド(例えば、416)、パスワード長フィールド(例えば、418)、タイムスタンプフィールド(例えば、420)、及びデバイス情報フィールド(例えば、422)を含んでもよい。
【0061】
処理デバイスは、操作625では、スクランブル鍵を使用して、パスワードオブジェクトの1つ以上のデータフィールドをスクランブルする。例えば、処理デバイスは、データに対する既知のアンサーアタックから保護するために、非乱数フィールド内の非乱数値、及び/または鍵導出シードをスクランブルしてもよい。処理デバイスは、スクランブル鍵及びデータを入力として用いた排他的OR(XOR)ロジックを使用してデータをスクランブルすることができる。
【0062】
処理デバイスは、鍵導出シード、スクランブル鍵、及び非乱数データフィールドの値のハッシュを生成する(操作630を参照)。処理デバイスは、暗号学的ハッシュ関数を使用してハッシュを生成する。例えば、処理デバイスはSHA-256を使用してハッシュを生成してもよい。操作635では、処理デバイスは、暗号化されたデータをオブジェクトヘッダと連結する。いくつかの実施形態では、操作625は省略されてもよい。すなわち、非乱数データフィールドは、ハッシュを生成する前にスクランブルされていなくてもよい。これらの実施形態と一貫して、処理デバイスは、鍵導出シード、及び非乱数フィールドのスクランブル解除された値のハッシュを生成する。
【0063】
これらの実施形態と一貫して、操作640は、処理デバイスがパスワードオブジェクトを生成する操作540の後に実行されてもよい。操作640では、処理デバイスは、バイナリからテキストへの符号化スキーム(例えば、BASE64)を使用してパスワードオブジェクトを符号化する。符号化されたフォーマットは、複数のインタフェース(例えば、UART)を介したバイナリデータの取得を容易にすることを意図するものである。符号化は、必要なトランスポートのタイプに基づいて、実装固有及び/またはプログラム固有であってもよい。本質的に、パスワードオブジェクトの符号化は、パスワードオブジェクトを、外部処理のためのメモリサブシステム110からのエクスポートに適しており、電子メールを含むさまざまなメカニズムを介したトランスポートに適しているフォーマットに変換する。いくつかの実施形態では、符号化されたデータは、記述的表記が符号化されたデータの開始及び終了を示している、括弧で囲まれてもよい。
【0064】
図7に示されるように、方法500は、いくつかの実施形態では、操作705、710、715、720、及び725を含んでもよい。これらの実施形態と一貫して、操作705、710、715、720、及び725は、パスワード生成要求に応答して処理デバイスがパスワードオブジェクトを提供する操作545の後に実行されてもよい。より具体的には、操作705、710、715、720、及び725は、操作545ではホストシステム120に提供されるパスワードオブジェクトを、パスワード再生成要求の一部としてセキュアサーバ(例えば、セキュアサーバ200)にユーザがサブミットし、パスワードを含む応答をセキュアサーバから受信した後に実行されてもよい。
【0065】
操作705に示されるように、処理デバイスは、パスワードを含む認証要求を受信する。この要求は、ホストシステム120から受信されてもよい。いくつかの実施形態では、この要求を受信することは、ホストシステムインタフェースを介してホストシステムから1つ以上のコマンドを受信することを含む。いくつかの実施形態では、この要求を受信することは、通信ポート(例えば、UARTポートまたは双方向通信をサポートする他のシリアル通信ポート)を介してホストシステムから要求を受信することを含む。上記のように、パスワードは、パスワード再生成要求に応答して、セキュアサーバからホストシステム120のユーザによって受信されてもよい。
【0066】
処理デバイスは、PBKDFを使用してパスワードからアンラッピング鍵を導出する(操作710を参照)。認証要求の一部として提供されたパスワードが操作515で導出されたものと同じパスワードである場合、アンラッピング鍵は、認証状態インジケーションをラップするために使用されるラッピング鍵と同一である。それ以外の場合、認証要求は失敗する。
【0067】
操作715では、処理デバイスは、アンラッピング鍵を使用して、認証状態インジケーションをアンラップする。操作720では、処理デバイスは、認証状態インジケーションのアンラッピングに基づいて、認証状態インジケーションを提供する。
【0068】
処理デバイスは、操作725では、成功したアンラッピングに基づいて、ラップされたデータを破棄する。このようにして、パスワードは、メモリサブシステム110をロック解除するために二度と使用されることができない。
【0069】
図8A~8Cは、本開示のいくつかの実施形態による、例示的な認証セッションプロセス800を示す流れ図である。プロセス800は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラム可能な論理、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(例えば、処理デバイスで実行される命令)、またはそれらの組み合わせを含むことができる処理論理によって実行されることができる。いくつかの実施形態では、プロセス800は、図1のセキュリティコンポーネント113によって実行される。プロセスが特定のシーケンスまたは順序で示されているが、別段に指定されない限り、プロセスの順序は変更されることができる。したがって、図示された実施形態は例としてのみ理解されるべきであり、図示されたプロセスは異なる順序で実行されることができ、いくつかのプロセスは並行して実行されることができる。さらに、さまざまな実施形態では、1つ以上のプロセスを省略することができる。したがって、すべての実施形態ですべてのプロセスが必要とされるわけではない。他のプロセスフローも可能である。
【0070】
操作802では、処理デバイスは、メモリサブシステム110をロック解除するために認証が必要であるかどうかを示す変数(「AUTH REQUIRED」)にアクセスする。この変数は、「TRUE」、「FALSE」、及び「PENDING」の3つの可能な値を有する。変数が「FALSE」に設定されている場合、認証は不要であり、操作804では、処理デバイスは正常な認証状態に入る。
【0071】
それ以外の場合、操作806では、処理デバイスは、変数が「PENDING」に設定されているかどうかを判定する。変数が「PENDING」に設定されている場合、操作808では、処理デバイスはパスワード再試行カウンタをインクリメントする。パスワード再試行カウンタは、認証セッション中に試行されたパスワードの使用カウントを含む。パスワード再試行カウンタをインクリメントすると、処理デバイスは、操作810では、パスワード再試行カウンタが所定の最大許容値(「Max」)に達したかどうかを判定する。パスワード再試行カウンタが所定の最大許容値に達した場合、処理デバイスは、操作812では、認証セッションタイマーをクリアする。認証セッションタイマーは、アクティブな認証セッションが期限切れになる前のタイムアウト値(例えば、秒単位)を示すプログラム固有のカウンタを含む。タイマーをクリアすると、処理デバイスは変数を「TRUE」に設定し(操作814で)、認証状態インジケーションを含むラップされたデータを破棄する(操作816で)。その後、処理デバイスは、操作818で失敗した認証状態に入る。パスワード再試行カウンタが操作810で最大許容可能値に達していない場合、処理デバイスは、以下で議論される操作830を実行する。
【0072】
操作806での決定に戻ると、変数が「PENDING」に設定されていない場合、処理デバイスは、操作820では、認証再試行カウンタが所定の最大許容値(「Max」)に達したかどうかを判定する。認証再試行カウンタは、認証セッション中の認証試行のカウントを含む。認証再試行カウンタが所定の最大許容値に達した場合、処理デバイスは、操作818で失敗した認証状態に入る。
【0073】
それ以外の場合、操作822では、処理デバイスは、認証再試行カウンタをインクリメントし、変数を「PENDING」に設定する。操作824では、処理デバイスは、認証セッションタイマーを初期化する。操作826では、処理デバイスは、パスワードオブジェクトを生成し、上記に議論された方法で、ラップされたロック解除/認証状態インジケーションをローカルメモリに格納する。操作828では、処理デバイスは、パスワード再試行カウンタをクリアし、パスワードオブジェクトをホストシステム120に出力する。
【0074】
操作830に示されるように、処理デバイスは、応答がホストシステム120から受信されたかどうかをチェックする。具体的には、処理デバイスは、操作832では、パスワードがホストシステム120から受信されたかどうかを判定する。パスワードが受信されていない場合、処理デバイスは、操作834では、ホストシステム120から別のコマンドが受信されたかどうかをチェックする。コマンドが受信された場合、処理デバイスは、操作812では認証セッションタイマーをクリアし、操作814などを続行する。コマンドが受信されていない場合、処理デバイスは、操作836では、認証セッションタイマーが期限切れになったかどうかを判定する。タイマーが期限切れになっていない場合、処理デバイスは操作830を実行する。タイマーが期限切れになった場合、処理デバイスは、操作814で変数を「TRUE」に設定する。
【0075】
操作832でパスワードが受信される場合、操作838では、処理デバイスは、PBKDFを使用して、パスワードからアンラッピング鍵を導出する。操作840では、処理デバイスは、アンラッピング鍵を使用して、ラップされた認証インジケーションをアンラップしようとする。アンラッピングが成功していない場合、処理デバイスは、操作808でパスワード再試行カウンタをインクリメントし、上記に示され、説明されたように進める。アンラッピングが成功していないと、操作832では正しくないパスワードを受信したことが示される。アンラッピングが成功する場合、処理デバイスは認証状態インジケーションを出力し、変数を「FALSE」に設定する(操作842で)。その後、処理デバイスは成功した認証状態に入る(操作804で)。
【0076】
実施例
実施例1は、メモリコンポーネント、及び前記メモリコンポーネントと動作可能に結合される処理デバイスを含むシステムであり、前記処理デバイスは、ホストシステムから、パスワード生成の要求を受信することと、前記要求を受信することに応答して、鍵導出シードに基づいてパスワード導出鍵を生成することと、前記パスワード導出鍵からパスワードを導出することと、前記パスワードに基づいてラッピング鍵を生成することと、前記ラッピング鍵を使用して認証状態インジケーションをラップすることと、前記ラップされた認証状態インジケーションを前記メモリコンポーネントに格納することと、非対称暗号化鍵を使用して、前記鍵導出シードの暗号化に基づいて暗号化されたデータを生成することと、前記暗号化されたデータを含む前記要求への応答を提供することと、を含む操作を実行する。
【0077】
実施例2では、実施例1に記載の前記操作は、前記パスワードを含む認証要求を受信することと、前記パスワードからアンラッピング鍵を導出することと、前記アンラッピング鍵を使用して、前記ラップされた認証状態インジケーションをアンラップすることと、前記認証要求に応答して、前記アンラッピングに基づいて前記認証状態インジケーションを提供することと、を任意選択でさらに含む。
【0078】
実施例3では、実施例1または2に記載の前記操作は、前記暗号化されたデータに基づいてパスワードオブジェクトを生成することであって、前記パスワードオブジェクトはオブジェクトヘッダ及び前記暗号化されたデータを含む、前記生成することと、前記要求に応答して前記パスワードオブジェクトを提供することと、を任意選択でさらに含む。
【0079】
実施例4では、実施例1~3のいずれか1つに記載の前記操作は、オブジェクトヘッダを構築することと、前記暗号化されたデータ及び前記オブジェクトヘッダを連結して、前記パスワードオブジェクトを形成することと、を任意選択で含む。
【0080】
実施例5では、実施例1~4のいずれか1つに記載の前記操作は、乱数生成器または擬似乱数生成器を使用してスクランブル鍵を生成することと、前記スクランブル鍵を使用して、前記パスワードオブジェクトの1つ以上のフィールドをスクランブルすることと、を任意選択でさらに含む。
【0081】
実施例6では、実施例1~5のいずれか1つに記載の前記操作は、前記応答に前記パスワードオブジェクトを提供する前に、バイナリからテキストへの符号化スキームを使用して前記パスワードオブジェクトを符号化することを任意選択でさらに含む。
【0082】
実施例7では、実施例1~6のいずれか1つに記載の前記操作は、バイナリデータ、及び前記バイナリデータのハッシュを暗号化することを任意選択で含み、前記バイナリデータは1つ以上の非乱数データフィールド、前記鍵導出シード、及び前記スクランブル鍵を含む。
【0083】
実施例8では、実施例1~7のいずれか1つに記載の前記操作は、鍵導出関数を使用して前記パスワード導出鍵を生成することと、パスワード導出関数を使用して前記パスワードを導出することと、パスワードベースの鍵導出関数を使用して前記ラッピング鍵を生成することと、を任意選択でさらに含む。
【0084】
実施例9では、実施例1~8のいずれか1つに記載の発明の主題は、乱数生成器または擬似乱数生成器によって生成される乱数または擬似乱数を含む鍵導出シードを任意選択で含む。
【0085】
実施例10では、実施例1~9のいずれか1つに記載の前記操作は、前記ホストシステムによって提供される補足データに基づいて前記パスワード導出鍵を生成することを任意選択でさらに含む。
【0086】
実施例11は、ホストシステムから、パスワード生成の要求を受信することと、前記要求を受信することに応答して、メモリサブシステムコントローラの少なくとも1つのプロセッサによって、鍵導出シードに基づいてパスワード導出鍵を生成することと、前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、前記パスワード導出鍵からパスワードを導出することと、前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、前記パスワードに基づいてラッピング鍵を生成することと、前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、前記ラッピング鍵を使用して認証状態インジケーションをラップすることと、前記ラップされた認証状態インジケーションを前記メモリサブシステムコントローラのメモリに格納することと、前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、非対称暗号化鍵を使用して前記鍵導出シードの暗号化に基づいて暗号化されたデータを生成することと、前記メモリサブシステムコントローラの少なくとも1つのプロセッサによって、前記ホストシステムへの前記要求への応答を提供することであって、前記要求は前記暗号化されたデータを含む、前記提供することと、を含む方法である。
【0087】
実施例12では、実施例11に記載の発明の主題は、前記パスワードを含む認証要求を受信することと、前記パスワードからアンラッピング鍵を導出することと、前記アンラッピング鍵を使用して、前記ラップされた認証状態インジケーションをアンラップすることと、前記認証要求に応答して、前記アンラッピングに基づいて前記認証状態インジケーションを提供することと、を任意選択で含む。
【0088】
実施例13では、実施例11または12のいずれか1つに記載の発明の主題は、前記暗号化されたデータに基づいてパスワードオブジェクトを生成することであって、前記パスワードオブジェクトはオブジェクトヘッダ及び前記暗号化されたデータを含む、前記生成することと、前記要求に応答して前記パスワードオブジェクトを提供することと、を任意選択で含む。
【0089】
実施例14では、実施例11~13のいずれか1つに記載の発明の主題は、オブジェクトヘッダを構築することと、前記暗号化されたデータ及び前記オブジェクトヘッダを連結して、前記パスワードオブジェクトを形成することと、を任意選択で含む。
【0090】
実施例15では、実施例11~14のいずれか1つに記載の発明の主題は、鍵導出関数を使用して前記パスワード導出鍵を生成することと、パスワード導出関数を使用して前記パスワードを導出することと、パスワードベースの鍵導出関数を使用して前記ラッピング鍵を生成することと、を任意選択で含む。
【0091】
実施例16では、実施例11~15のいずれか1つに記載の発明の主題は、前記応答に前記パスワードオブジェクトを提供する前に、バイナリからテキストへの符号化スキームを使用して前記パスワードオブジェクトを符号化することを任意選択で含む。
【0092】
実施例17では、実施例11~16のいずれか1つに記載の発明の主題は、バイナリデータ、及び前記バイナリデータのハッシュを暗号化することを任意選択で含み、前記バイナリデータは1つ以上の非乱数データフィールド及び前記鍵導出シードを含む。
【0093】
実施例18では、実施例11~17のいずれか1つに記載の発明の主題は、暗号学的ハッシュ関数を使用してバイナリデータのハッシュを生成することを任意選択で含む。
【0094】
実施例19では、実施例11~18のいずれか1つに記載の発明の主題は、乱数生成器または擬似乱数生成器によって生成される乱数または擬似乱数を含む前記鍵導出シードを任意選択で含む。
【0095】
実施例20は、命令を含む非一時的なコンピュータ可読記憶媒体であり、前記命令は、処理デバイスによって実行されると、ホストシステムから、パスワード生成の要求を受信することと、前記要求を受信することに応答して、鍵導出シードに基づいてパスワード導出鍵を生成することと、前記パスワード導出鍵からパスワードを導出することと、前記パスワードに基づいてラッピング鍵を生成することと、前記ラッピング鍵を使用して認証状態インジケーションをラップすることと、前記ラップされた認証状態インジケーションをローカルメモリに格納することと、非対称暗号化鍵を使用して、前記鍵導出シードの暗号化に基づいて暗号化されたデータを生成することと、前記暗号化されたデータを含む前記要求への応答を提供することと、を含む操作を実行するように前記処理デバイスを設定する。
【0096】
マシンアーキテクチャ
図9は、コンピュータシステム900の形式で例示的なマシンを示しており、その中で、マシンに、本明細書で説明される方法のいずれか1つ以上を実行させるための命令のセットを実行することができる。いくつかの実施形態では、コンピュータシステム900は、メモリサブシステム(例えば、図1のメモリサブシステム110)を含む、それに結合される、もしくはそれを利用するホストシステム(例えば、図1のホストシステム120)に対応することができる、またはコントローラの操作を実行するために(例えば、図1のセキュリティコンポーネント113に対応する操作を実行するためのオペレーティングシステムを実行するために)使用されることができる。代替の実施形態では、マシンを、ローカルエリアネットワーク(LAN)、イントラネット、エクストラネット、及び/またはインターネット内の他のマシンに接続する(例えば、ネットワーク接続する)ことができる。マシンは、クライアントサーバネットワーク環境内のサーバまたはクライアントマシンの資格で、ピアツーピア(または分散)ネットワーク環境内のピアマシンとして、またはクラウドコンピューティングインフラストラクチャまたは環境内のサーバまたはクライアントマシンとして動作することができる。
【0097】
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンによって講じられる処置を指定する命令のセットを(連続してまたは別の方法で)実行できる任意のマシンである場合がある。さらに、単一のマシンが示されているが、用語「マシン」はまた、本明細書で説明される方法の任意の1つまたは複数を実行するために、個々でまたは共同して命令の1つのセット(または複数のセット)を実行するマシンの任意の集まりを含むと解釈されるものとする。
【0098】
例示的なコンピュータシステム900は、バス930を介して互いに通信する、処理デバイス902、メインメモリ904(例えば、ROM、フラッシュメモリ、SDRAMまたはRambus DRAM(RDRAM)のようなDRAMなど)、スタティックメモリ906(例えば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、及びデータストレージシステム918を含む。
【0099】
処理デバイス902は、マイクロプロセッサ、中央処理装置など、1つ以上の汎用処理デバイスを表す。より具体的には、処理デバイス902は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、他の命令セットを実装するプロセッサ、または命令セットの組み合わせを実装するプロセッサであることができる。また、処理デバイス902は、ASIC、FPGA、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサなど、1つ以上の特定用途処理デバイスであることができる。処理デバイス902は、本明細書で説明される動作及びステップを実行するための命令926を実行するように構成される。コンピュータシステム900は、ネットワーク920を介して通信するためのネットワークインタフェースデバイス908をさらに含むことができる。
【0100】
データストレージシステム918は、本明細書で説明される方法または機能のうちの任意の1つまたは複数を具体化する命令926またはソフトウェアの1つまたは複数のセットが記憶されるマシン可読記憶媒体924(コンピュータ可読媒体としても知られる)を含むことができる。命令926はまた、マシン可読記憶媒体をまた構成するコンピュータシステム900、メインメモリ904及び処理デバイス902がそれを実行する間に、メインメモリ904内及び/または処理デバイス902内に完全にまたは少なくとも部分的に存在することができる。マシン可読記憶媒体924、データストレージシステム918、及び/またはメインメモリ904は、図1のメモリサブシステム110に対応することができる。
【0101】
一実施形態では、命令926は、セキュリティコンポーネント(例えば、図1のセキュリティコンポーネント113)に対応する機能を実装するための命令を含む。マシン可読記憶媒体924は、単一の媒体であると例示的な実施形態で示されているが、用語「マシン可読記憶媒体」は、1つまたは複数の命令のセットを格納する単一の媒体または複数の媒体を含むと解釈されるべきである。「マシン可読記憶媒体」という用語はまた、マシンによって実行するための命令のセットを記憶または符号化することが可能であり、マシンに本開示の方法論のうちの任意の1つ以上を実行させる任意の媒体を含むと解釈されるべきである。したがって、用語「マシン可読記憶媒体」は、限定されないが、ソリッドステートメモリ、光学媒体、及び磁気媒体を含むと解釈されるものとする。
【0102】
先行する詳細な説明の一部は、アルゴリズム及びコンピュータメモリ内のデータビットに対する操作の記号表現の観点から提示されている。このようなアルゴリズムの説明及び表現は、その働きの趣旨を当業者に最も効果的に伝えるためにデータ処理技術において当業者が用いる方法である。アルゴリズムはここでは、及び全般的に、望ましい結果に至る自己矛盾のない動作順序であると考えられる。動作は、物理量の物理的な操作を必要とするものである。通常、必ずしもではないが、これらの量は格納し、組み合わせ、比較し、及び他の方法で操作することができる電気または磁気信号という形を取る。主に共通使用の理由により、これらの信号をビット、値、要素、シンボル、文字、用語、数などと称することが、時によって好都合であることが分かっている。
【0103】
しかし、これら及び同様の用語はすべて、適切な物理量に対応付けられるべきであり、これらの量に適用される好都合な標示にすぎないことを認識しておくべきである。本開示は、コンピュータシステムのレジスタ及びメモリ内で物理(電子的)量として表されるデータを操作し、コンピュータシステムのメモリまたはレジスタまたはそのような情報ストレージシステム内で同様に物理量として表される他のデータに変換する、コンピュータシステム、または類似した電子コンピューティングデバイスの動作及びプロセスを参照することができる。
【0104】
本開示はまた、本明細書の操作を実行するための装置に関する。この装置は、意図された目的のために専用に構築されることができる、またはコンピュータに格納されたコンピュータプログラムによって選択的にアクティブにされる、または再構成される汎用コンピュータを含むことができる。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROM、及び光磁気ディスク、ROM、RAM、消去可能でプログラム可能な読み出し専用メモリ(EPROM)、EEPROM、磁気もしくは光カードを含む任意のタイプのディスク、またはそれぞれがコンピュータシステムバスに結合される電子命令の格納に適した任意のタイプの媒体であるが、これらに限定されないコンピュータ可読記憶媒体に格納されることができる。
【0105】
本明細書で示したアルゴリズム及び表示は、何らかの特定のコンピュータまたは他の装置に本来的に関するものではない。さまざまな汎用システムを、本明細書での教示に従ってプログラムによって用いることもできるし、または本方法を行うためにより専用の装置を構築することが好都合であることが分かる可能性もある。種々のこれらのシステムの構造は、上記の説明で述べるように現れる。加えて、本開示は何らかの特定のプログラミング言語に関して説明されていない。本明細書で説明したような本開示の教示を実施するために、種々のプログラミング言語を使用できることを理解されたい。
【0106】
本開示を、本開示に従ってプロセスを実行するようにコンピュータシステム(または他の電子装置)をプログラミングするために使用できる命令が格納されたマシン可読媒体を含むことができる、コンピュータプログラム製品またはソフトウェアとして示すことができる。マシン可読媒体は、マシン(例えば、コンピュータ)によって可読な形式で情報を格納するための任意のメカニズムを含む。いくつかの実施形態では、マシン可読(例えば、コンピュータ可読)媒体は、ROM、RAM、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリコンポーネントなどのマシン可読(例えば、コンピュータ可読)記憶媒体を含む。
【0107】
前述の明細書では、本開示の実施形態は、その特定の例示的な実施形態を参照して説明されてきた。以下の特許請求の範囲に述べる本開示の実施形態のより広い趣旨及び範囲から逸脱することなく、さまざまな変更を加えることができることが明らかである。したがって、明細書及び図面は限定的な意味ではなく例示的な意味で考慮されるべきである。

図1
図2
図3A
図3B
図4
図5
図6
図7
図8A
図8B
図8C
図9
【国際調査報告】