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

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

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステム 図1
  • 特開-メモリシステム 図2
  • 特開-メモリシステム 図3
  • 特開-メモリシステム 図4
  • 特開-メモリシステム 図5
  • 特開-メモリシステム 図6
  • 特開-メモリシステム 図7
  • 特開-メモリシステム 図8
  • 特開-メモリシステム 図9
  • 特開-メモリシステム 図10
  • 特開-メモリシステム 図11
  • 特開-メモリシステム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023161883
(43)【公開日】2023-11-08
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 21/78 20130101AFI20231031BHJP
   H04L 9/08 20060101ALI20231031BHJP
   H04L 9/14 20060101ALI20231031BHJP
   G06F 21/60 20130101ALI20231031BHJP
   H04L 9/32 20060101ALI20231031BHJP
   G06F 21/64 20130101ALI20231031BHJP
   G06F 21/31 20130101ALI20231031BHJP
【FI】
G06F21/78
H04L9/08 B
H04L9/14
G06F21/60 320
H04L9/32 200B
G06F21/64
G06F21/31
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022072505
(22)【出願日】2022-04-26
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】神戸 友樹
(57)【要約】
【課題】自己暗号ストレージの暗復号機能を活用し、暗号鍵を安全に管理する機能の導入コストを抑えること等を実現するメモリシステムを提供する。
【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。コントローラは、ホストと通信可能であり、不揮発性メモリを制御する。コントローラは、ホストから鍵生成コマンドを受信した場合、暗復号機能部によって、暗号鍵を生成し、かつ、不揮発性メモリに暗号鍵を格納し、暗号鍵の識別子をホストへ送信する。また、コントローラは、自己暗号ストレージの暗復号機能部を有する。暗復号機能部は、暗号鍵を生成し、不揮発性メモリを用いて暗号鍵を管理し、暗号鍵を用いて、不揮発性メモリに書き込まれるデータを暗号化し、または、暗号化されている状態で不揮発性メモリから読み出されたデータを復号する。
【選択図】図1
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
ホストと通信可能であり、前記不揮発性メモリを制御するコントローラと、
を具備し、
前記コントローラは、
前記ホストから鍵生成コマンドを受信した場合、暗復号機能部によって、暗号鍵を生成し、かつ、前記不揮発性メモリに前記暗号鍵を格納し、前記暗号鍵の識別子を前記ホストへ送信する、
メモリシステム。
【請求項2】
前記コントローラは、暗号鍵を生成し、前記不揮発性メモリを用いて前記暗号鍵を管理し、前記暗号鍵を用いて、前記不揮発性メモリに書き込まれるデータを暗号化し、または、暗号化されている状態で前記不揮発性メモリから読み出されたデータを復号する、自己暗号ストレージの暗復号機能部を有する、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
前記識別子と、暗号化対象のデータとを含む暗号コマンドを前記ホストから受信した場合、前記暗復号機能部によって、前記識別子で識別される暗号鍵を用いて前記データを暗号化し、暗号化されたデータを前記ホストへ送信する、
請求項1に記載のメモリシステム。
【請求項4】
前記コントローラは、
前記識別子と、復号対象の暗号化されているデータとを含む復号コマンドを前記ホストから受信した場合、前記暗復号機能部によって、前記識別子で示される暗号鍵を用いて前記暗号化されているデータを復号し、復号されたデータを前記ホストへ送信する、
請求項1または2に記載のメモリシステム。
【請求項5】
前記コントローラは、
前記鍵生成コマンドが非対称鍵の生成を要求するコマンドであった場合、前記暗復号機能部によって、公開鍵および秘密鍵を生成し、かつ、前記不揮発性メモリを用いて前記公開鍵および前記秘密鍵を管理し、前記公開鍵および前記秘密鍵の識別子と、前記公開鍵とを前記ホストへ送信する、
請求項1に記載のメモリシステム。
【請求項6】
前記コントローラは、
公開鍵および秘密鍵を示す識別子と、署名付与対象のデータとを含む署名コマンドを前記ホストから受信した場合、前記秘密鍵と前記データに基づいて、前記データに対応する電子署名を前記暗復号機能部によって生成し、前記電子署名を前記ホストへ送信する、
請求項5に記載のメモリシステム。
【請求項7】
前記コントローラは、
公開鍵および秘密鍵を示す識別子を含む公開鍵取得コマンドを前記ホストから受信した場合、前記暗復号機能部によって前記不揮発性メモリに格納されている、前記公開鍵および前記秘密鍵のうちの前記公開鍵を前記ホストへ送信する、
請求項5または6に記載のメモリシステム。
【請求項8】
前記コントローラは、
公開鍵および秘密鍵を示す識別子と、復号対象の暗号化されているデータとを含む復号コマンドを前記ホストから受信した場合、前記公開鍵および前記秘密鍵のうちの前記秘密鍵を用いて前記暗号化されているデータを復号し、復号されたデータを前記ホストへ送信する、
請求項6に記載のメモリシステム。
【請求項9】
前記暗復号機能部は、複数の暗号アルゴリズムに対応可能であり、
前記鍵生成コマンドは、暗号アルゴリズムを指定し、
前記コントローラは、指定されている暗号アルゴリズムに基づき、非対称鍵または対称鍵のいずれの生成を要求する鍵生成コマンドであるかを判定する、
請求項1に記載のメモリシステム。
【請求項10】
前記コントローラは、
前記ホストの操作者の識別情報に基づいて前記ホストの操作者を認証する認証処理部をさらに有し、
前記認証処理部による認証の結果に応じて、前記暗復号機能部が関係する処理を要求する前記ホストからのコマンドの受付が可能かどうかを判定する、
請求項1に記載のメモリシステム。
【請求項11】
前記認証処理部は、TCG(trusted computing group)仕様に準拠する認証を行う請求項10に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
近年、電子署名などの暗号技術が広く利用されている。この電子署名などの暗号技術を利用するにあたっては、たとえば、電子署名の生成に用いられる暗号鍵(秘密鍵)を送信者側において安全に管理することが重要である。
【0003】
このようなことから、機密データを扱う情報処理システムでは、HSM(hardware security module)などと称される、暗号鍵を安全に管理するための機能を有する専用ハードウェアを導入する場合がある。
【0004】
しかし、専用ハードウェアの導入は大幅なコストアップを招く。また、専用ハードウェアで管理できる暗号鍵の数が比較的少ない数に限定される。さらに、専用ハードウェアへのアクセス権を管理する仕組みが必要となる。
【0005】
一方、情報処理システムの必須デバイスであるストレージの中には、ホストから受信したデータを暗号化して記憶媒体に書き込み、また、暗号化されている状態で記憶媒体から読み出されたデータを復号してホストへ送信する暗復号機能を有する、自己暗号ストレージなどと称されるストレージが存在する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許第9665501号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の1つの実施形態は、自己暗号ストレージの暗復号機能を活用し、暗号鍵を安全に管理する機能の導入コストを抑えること等を実現するメモリシステムを提供する。
【課題を解決するための手段】
【0008】
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。コントローラは、ホストと通信可能であり、不揮発性メモリを制御する。コントローラは、ホストから鍵生成コマンドを受信した場合、暗復号機能部によって、暗号鍵を生成し、かつ、不揮発性メモリに暗号鍵を格納し、暗号鍵の識別子をホストへ送信する。
【図面の簡単な説明】
【0009】
図1】実施形態のメモリシステムの一構成例を示す図。
図2】実施形態のメモリシステムにおいてコントローラが不揮発性メモリの領域を分割して管理する一例を示す図。
図3】実施形態のメモリシステムにおいてコントローラが複数の暗号鍵を使い分ける一例を示す図。
図4】実施形態のメモリシステムが受け付け可能な拡張コマンドの一例を示す図。
図5】実施形態のメモリシステムを含む情報処理システムにおける電子署名の付与に関する動作の流れを示すシーケンス図。
図6】実施形態のメモリシステムで用いられる拡張コマンドの中の鍵生成コマンド(非対称鍵)およびその応答のフォーマットの一例を示す図。
図7】実施形態のメモリシステムで用いられる拡張コマンドの中の署名コマンドおよびその応答のフォーマットの一例を示す図。
図8】実施形態のメモリシステムを含む情報処理システムにおけるデータの暗号化および復号に関する動作の流れを示すシーケンス図。
図9】実施形態のメモリシステムで用いられる拡張コマンドの中の鍵生成コマンド(対称鍵)およびその応答のフォーマットの一例を示す図。
図10】実施形態のメモリシステムで用いられる拡張コマンドの中の暗号コマンドおよびその応答のフォーマットの一例を示す図。
図11】実施形態のメモリシステムにおける拡張コマンドの発行権限の管理に用いられるテーブルの一例を示す図。
図12】実施形態のメモリシステムにおける拡張コマンドの発行権限の管理に用いられる別のテーブルの一例を示す図。
【発明を実施するための形態】
【0010】
以下、実施の形態について、図面を参照して説明する。
【0011】
図1は、実施形態のメモリシステム1の一構成例を示す図である。図1には、メモリシステム1と、メモリシステム1と接続されるホスト2とを含む情報処理システムの一構成例が併せて示されている。メモリシステム1とホスト2とは、たとえばPCIeTM仕様に準拠するインターフェースで接続される。
【0012】
メモリシステム1は、SSD(solid state drive)やHDD(hard disk drive)のようなストレージ装置である。ここでは、メモリシステム1が、不揮発性メモリ30としてNAND型フラッシュメモリ(NAND)を有するSSDとして実現されている場合を例示する。以下、不揮発性メモリ30をNAND30と称する。SSD1は、たとえばNVMeTM仕様に準拠するプロトコルでホスト2と通信する。SSD1は、ホスト2から受信したデータを暗号化してNAND30に書き込み、また、暗号化されている状態でNAND30から読み出されたデータを復号してホスト2へ送信する、いわゆる自己暗号ストレージである。
【0013】
ホスト2は、パーソナルコンピュータやサーバのような情報処理装置である。ホスト2は、たとえば他のホスト2との間で各種データを送受信する。ホスト2は、他のホスト2へデータを送信する場合、正当な相手から送られたこと、改ざんされていないことを受信者が確認するための電子署名を生成してデータに付与することがある。電子署名では、一般的に、公開鍵暗号方式が利用されている。ホスト2は、ホスト2の秘密鍵を用いて、送信対象のデータに対応する電子署名を生成する。公開鍵は、データの受信者とホスト2の間で共有される。共有の方法は任意である。受信者は、送信者から渡された公開鍵を用いて、付与されている電子署名が受信データに対応していること、つまり、正当な相手から送られたこと、改ざんされていないことを確認する。
【0014】
あるいは、ホスト2がデータの受信者となる場合、ホスト2宛のデータは、送信者によってホスト2の公開鍵を用いて暗号化され、送信される。ホスト2は、暗号化されているデータを、ホスト2の秘密鍵を用いて復号する。ホスト2の公開鍵で暗号化された暗号データは、ホスト2の秘密鍵でしか復号できないので、通信経路上でのデータの漏洩を防ぐことができる。
【0015】
また、ホスト2は、たとえばクラウド上のファイルサーバにデータをアップロードして保存する場合、そのデータを暗号化する。このような場合におけるデータの暗号化では、一般的に、共通鍵暗号方式が利用されている。前述の公開鍵暗号方式の秘密鍵および公開鍵は、暗号化と復号とで異なる鍵が用いられることから、非対称鍵などと称される。これに対して、共通鍵暗号方式の暗号鍵は、暗号化と復号とで同じ鍵(共通鍵)が用いられるので、対称鍵などと称される。
【0016】
秘密鍵や共通鍵といった暗号鍵は、安全に管理することが重要である。暗号鍵を安全に管理するために、HSMなどと称される専用ハードウェアを導入することは、大幅なコストアップを招く等、前述の様々な問題がある。実施形態のSSD1は、自己暗号ストレージの暗復号機能を活用し、暗号鍵を安全に管理する機能をホスト2に提供する。情報処理システムにおいて、ストレージは必須デバイスであるため、SSD1が暗号鍵を安全に管理する機能をホスト2に提供することは、暗号鍵を安全に管理する機能の導入コストを抑えることを実現する。
【0017】
図1に示すように、SSD1は、コントローラ10と、揮発性メモリ20と、NAND30とを有する。揮発性メモリ20は、たとえばDRAM(dynamic RAM[random access memory])である。
【0018】
コントローラ10は、ホスト2からのコマンドに応じて、DRAM20を作業領域として使用しながらコマンドに対応する処理を実行し、その結果をホスト2へ送信する。コントローラ10は、たとえばSoC(system on a chip)として構成されている。コントローラ10は、外部接続されるDRAM20を作業領域として使用することに代えて、たとえばSRAM(static RAM)を内蔵し、コントローラ10内のSRAMを作業領域として使用してもよい。つまり、SSD1の構成として、DRAM20が存在しない構成も考えられる。
【0019】
NAND30にはホスト2から送信されてくるユーザデータが格納される。コントローラ10は、たとえば図2に示すように、NAND30の領域を、システムデータ領域31と、ユーザデータ領域32とに分けて管理する。システムデータ領域31は、ホスト2に対しては秘匿される領域である。つまり、ホスト2からはアクセスできない領域である。
【0020】
コントローラ10は、ユーザデータを暗号化するための暗号鍵を生成する。ユーザデータをNAND30のユーザデータ領域32に書き込む場合、コントローラ10は、生成した暗号鍵を使ってユーザデータを暗号化し、NAND30のユーザデータ領域32に書き込む。
【0021】
一方、NAND30のユーザデータ領域32からユーザデータを読み出す場合も、コントローラ10は、暗号鍵を生成する。コントローラ10は、生成した暗号鍵を使って、暗号化されている状態でNAND30のユーザデータ領域32から読み出されるユーザデータを復号する。
【0022】
また、自己暗号ストレージである実施形態のSSD1は、複数の暗号鍵を生成および管理し、たとえば図3に示すように、ユーザデータ領域32内に設けられた区画毎に暗号鍵を使い分けて、ユーザデータの暗号化および復号を行うことができる。たとえばストレージ向けに策定されたTCG(trusted computing group)仕様に準拠する認証機能を適用することで、コントローラ10は、識別情報(ID)と区画とを対応づけることができる。この対応づけは、管理者用IDで認証が成立している場合のホスト2からのコマンドに応じて行われる。コントローラ10は、たとえばホスト2の操作者に割り当てられる一般ユーザ用IDの設定も、管理者用IDで認証が成立している場合のホスト2からのコマンドに応じて行う。たとえば一般ユーザ用IDが設定されると、その一般ユーザ用IDで認証を成立させるためのパスワードとして、初期パスワードが設定される。このパスワードの変更は、初期パスワードを使って一般ユーザ用IDで認証が成立している場合のホスト2からのコマンドに応じて行われる。なお、一般ユーザ用IDのパスワードは、管理者用IDで認証を成立させても、更新はおろか参照すら行うことができない。
【0023】
なお、管理者用IDは、あらかじめ用意されており、管理者用IDで認証を成立させるためのパスワードとして初期パスワードが設定されている。このパスワードの変更は、初期パスワードを使って管理者用IDで認証が成立した場合のホスト2からのコマンドに応じて行われる。管理者用IDの初期パスワードは、たとえばSSD1毎に割り当てられる値であり、ユーザ用IDの初期パスワードは、たとえば全ユーザ用IDに共通の所定値である。
【0024】
たとえば、あるIDが区画Aと区画Bとに対応づけられている状況下において、ホスト2の操作者が、そのIDを使って認証を成立させた場合、コントローラ10は、ユーザデータ領域32内の区画Aと区画Bとに対するアクセスのみを許可する。この場合、コントローラ10は、区画Aに対するデータの書き込みが要求された場合、区画A用の鍵Aによってデータを暗号化し、区画Bに対するデータの書き込みが要求された場合は、区画B用の鍵Bによってデータを暗号化する。同様に、コントローラ10は、区画Aからのデータの読み出し時には区画A用の鍵Aによって復号を行い、区画Bからのデータの読み出し時には区画B用の鍵Bによって復号を行う。
【0025】
コントローラ10は、1つの区画に対して複数のIDを対応づけることができる。たとえば、コントローラ10は、前述のIDとは別のIDを、区画Bと区画Cとに対応づけることができる。この場合、2つのIDのうちのいずれで認証が成立しても、コントローラ10は、区画Bへのアクセスを許可する。区画Bに書き込まれるデータの暗号化および復号に用いられる鍵は、認証に使われたIDに関わらず、区画B用の鍵Bである。なお、コントローラ10は、データの暗号化を行わない区画を設けることもできる。各区画についての暗号化有無の設定も、管理者用IDで認証が成立した場合のホスト2からのコマンドに応じて行われる。
【0026】
コントローラ10は、暗号鍵を安全に管理する機能をホスト2へ提供することに関係する要素として、CPU(central processing unit)11と、インターフェース12と、暗号エンジン13と、暗復号ハードウェア14とを有する。
【0027】
CPU11は、ファームウェアなどと称されるプログラムを実行して、図1に示されている、鍵管理コマンド処理部101、認証処理部102、暗号制御部103、鍵管理部104などの各種処理部を実現する。これらの各種処理部は、電気回路などのハードウェアとして実現されてもよい。これらの各種処理部についての詳細は後述する。
【0028】
インターフェース12は、ホスト2からのデータの受信およびホスト2へのデータの送信を制御する。暗号エンジン13は、CPU11の制御の下、暗号鍵を生成したり、指定された暗号鍵を用いて指定されたデータの電子署名を生成したり、指定された暗号鍵を用いて指定されたデータを暗号化または復号したりする。暗号エンジン13は、RSA、ECDSA、AESなどの複数の暗号アルゴリズムに対応可能である。
【0029】
図1に戻り、HSM機能について説明する。コントローラ10は、ホスト2の要求に応じて、ホストから送られたデータを暗号化してホストに送信する。また、ホスト2の要求に応じて、ホストから送られた暗号化されたデータを復号して、ホストに送信する。また、ホストからの要求に応じて、秘密鍵や共通鍵といった暗号鍵を生成してホストに送信する。
【0030】
コントローラ10は、暗号エンジン13が用いる秘密鍵や共通鍵といった暗号鍵をNAND30に格納する。この暗号鍵をSSD1内において安全に管理するために、暗復号ハードウェア14は、NAND30へ格納される暗号鍵の暗号化を行う。また、暗復号ハードウェア14は、暗号化されている状態でNAND30から読み出された暗号鍵の復号を行う。暗号鍵を暗号化および復号するための暗号鍵は、暗号エンジン13によって生成され、鍵管理部104によって管理され、暗復号ハードウェア14に設定される。
【0031】
鍵管理コマンド処理部101は、実施形態のSSD1をHSMなどのハードウェアのように動作させるための拡張コマンドをホスト2から受け付ける。拡張コマンドに対応する処理を制御し、処理結果をホスト2へ送信する。拡張コマンドについては後述する。
【0032】
認証処理部102は、ホスト2の操作者を認証する。認証処理部102は、たとえばTCG仕様に準拠する認証機能を提供する。認証処理部102は、IDおよびパスワードの入力をホスト2の操作者に要求し、入力されたIDおよびパスワードを照合して、認証の成立可否を判定する。認証処理部102は、操作者のIDの設定なども行う。認証処理部102による認証は、本来、ホスト2からNAND30の各区画に対するアクセス権限の有無を判定するために行われる。実施形態のSSD1は、認証処理部102による認証を、拡張コマンドの発行権限の有無を判定することにも活用する。
【0033】
暗号制御部103は、ホスト2から送られてきたデータと、後述する鍵管理部104から送られてきた暗号鍵を暗号エンジン13に送信する。暗号エンジン13は、暗号制御部103から受け取った暗号鍵を用いてデータを暗号化する。暗号エンジン13は、暗号化したデータを暗号制御部103に送信する。暗号制御部103は、暗号化したデータを鍵管理コマンド処理部101に転送する。鍵管理コマンド処理部101は、暗号化したデータをホストに返送する。この場合の暗号鍵は、たとえば、共通鍵暗号方式における共通鍵である。公開鍵暗号方式における公開鍵を用いたデータの暗号化は、たとえば、SSD1から公開鍵を取得したホスト2上で実行される。
【0034】
また、暗号制御部103は、ホスト2から送られてきた暗号化されたデータを暗号エンジン13に送信する。暗号制御部103は、ホスト2から指定された暗号鍵を鍵管理部104から受け取り、この暗号鍵を暗号エンジン13に送信する。暗号エンジン13は、暗号制御部103から受け取った暗号鍵を用いて、暗号化されたデータを復号し、暗号制御部103に送信する。暗号制御部103は、復号したデータを鍵管理コマンド処理部101に転送する。鍵管理コマンド処理部101は、復号したデータをホストに返送する。この場合の暗号鍵は、たとえば、共通鍵暗号方式における共通鍵または公開鍵暗号方式における秘密鍵である。
【0035】
鍵管理部104は、ホスト2から指定された暗号鍵を管理する。鍵管理部104は、たとえば、暗号鍵と識別コードを対応させた暗号鍵管理テーブルを保持していてもよい。鍵管理部104は、鍵管理処理部101から暗号鍵を生成するための指示を受け取ると、暗号鍵を生成し、暗号鍵管理テーブルを参照して、識別コードと暗号鍵を対応させる。鍵管理部104は、生成した暗号鍵を暗号制御部103に送信する。また、鍵管理部104は、鍵管理処理部101から鍵IDを送られると、暗号鍵管理テーブルを参照して、鍵IDに対応する暗号鍵をNAND30から読み出し、暗号制御部103に送信する。なお、鍵IDとは、種々の暗号鍵を識別するIDのことである。
【0036】
つまり、実施形態のSSD1は、暗号制御部103、鍵管理部104、暗号エンジン13および暗復号ハードウェア14で構成される、ホスト2から送られたデータを暗号化および復号する自己暗号ストレージの暗復号機能部150を、たとえば電子署名の生成に使用する秘密鍵や、データの暗号化または復号に使用する共通鍵といった暗号鍵を安全に管理するための機能部として活用する。
【0037】
図4は、拡張コマンドの一例を示す図である。
拡張コマンドは、大きく分けて、暗号鍵の管理に関するコマンド(HSM相当)と、ユーザの認証に関するコマンド(TCG相当)との2種類が存在する。
【0038】
鍵生成コマンドは、電子署名のための秘密鍵および公開鍵(非対称鍵)や、暗号化または復号のための暗号鍵(対称鍵)の生成を要求するコマンドである。署名コマンドは、電子署名の生成を要求するコマンドである。暗号コマンドは、データの暗号化を要求するコマンドである。復号コマンドは、暗号化されているデータの復号を要求するコマンドである。公開鍵取得コマンドは、生成済みの秘密鍵および公開鍵のうちの公開鍵の転送を要求するコマンドである。
【0039】
ユーザ設定コマンドは、一般ユーザ用IDの設定を要求するコマンドである。ユーザ設定コマンドは、管理者用IDで認証が成立している場合に受け付け可能なコマンドである。一般ユーザ用IDは、暗号鍵の管理に関するコマンドが発行された際、そのコマンドの受け付けの可否を判定するために用いられる。権限設定コマンドは、ある一般ユーザ用IDに関してHSM相当の各種コマンドの発行権限有無の設定を要求するコマンドである。権限設定コマンドも、管理者用IDで認証が成立している場合に受け付け可能なコマンドである。パスワード変更コマンドは、管理者用IDや一般ユーザ用IDのパスワードの変更を要求するコマンドである。パスワード変更コマンドでのパスワードの変更は、認証を成立させたIDのパスワードについてのみ有効である。
【0040】
図5を参照して、電子署名の付与に関するホスト2およびSSD1の動作の流れについて説明する。ここでは、鍵生成コマンドの発行権限が与えられている一般ユーザ用IDで認証が成立していることを想定する。電子署名の付与に関しては、大きく分けて、秘密鍵および公開鍵を生成するフェーズ(a1)と、秘密鍵を用いて電子署名を生成するフェーズ(a2)とが存在する。
【0041】
ホスト2は、SSD1に鍵生成コマンドを発行する(a11)。鍵生成コマンドが非対称鍵または対称鍵のいずれの生成を要求するものであるかは、たとえばパラメータで指定される暗号アルゴリズムによって判別することができる。ここでは、非対称鍵を示す暗号アルゴリズムをパラメータで指定する鍵生成コマンドが発行されたことを想定する。
【0042】
ホスト2から発行された鍵生成コマンドは、インターフェース12を介して鍵管理コマンド処理部101に供給される。鍵管理コマンド処理部101は、鍵生成コマンドの受け付け可否を認証処理部102に問い合わせる。ここでは、鍵生成コマンドの発行権限が与えられている一般ユーザ用IDで認証が成立している場合を想定しているので、認証処理部102から鍵管理コマンド処理部101へは、鍵生成コマンドは受け付け可能であることが通知される。
【0043】
鍵生成コマンドが受け付け可能である場合、鍵管理コマンド処理部101は、秘密鍵および公開鍵の生成を鍵管理部104に指示する。この指示を受けて、鍵管理部104は、秘密鍵および公開鍵を生成する(a12)。鍵管理部104は、生成した秘密鍵および公開鍵を暗復号ハードウェア14経由でNAND30のシステムデータ領域31に格納する(a13)。このとき、暗復号ハードウェア14は、秘密鍵および公開鍵を暗号化する。鍵管理部104は、生成した鍵IDと、秘密鍵および公開鍵のうちの公開鍵とを鍵管理コマンド処理部101に転送する。
【0044】
鍵管理コマンド処理部101は、鍵生成コマンドの応答として、鍵管理部104から受け取った鍵IDおよび公開鍵を、インターフェース12を介してホスト2に送信する(a14)。ホスト2は、鍵IDを保管する一方で、自身が送信するデータの受信者と公開鍵を共有する。共有の方法は任意である。ホスト2は、この公開鍵を保持していてもよいし、公開鍵取得コマンドを発行することによってSSD1から適宜取得してもよい。
【0045】
電子署名用の秘密鍵および公開鍵を生成した後、他のホスト2へデータを送信するにあたり、そのデータに電子署名を付与する場合、ホスト2は、鍵IDと、送信対象のデータとを含む署名コマンドを発行する(a21)。
【0046】
ホスト2から発行された署名コマンドは、インターフェース12を介して鍵管理コマンド処理部101に供給される。鍵管理コマンド処理部101は、署名コマンドに含まれる鍵IDを取り出し、その鍵IDで示される秘密鍵の読み出しを鍵管理部104に指示する。鍵管理部104は、指定された秘密鍵を暗復号ハードウェア14経由でNAND30のシステムデータ領域31から読み出す(a22)。このとき、暗復号ハードウェア14は、暗号化されている秘密鍵を復号する。鍵管理部104は、この秘密鍵を暗号制御部103へ転送する。
【0047】
鍵管理コマンド処理部101は、鍵管理部104に対する秘密鍵の読み出しの指示と並行して、署名コマンドから取り出したデータに対応する署名の生成を暗号制御部103に指示する。暗号制御部103は、鍵管理部104から受け取った秘密鍵と、鍵管理コマンド処理部101から受け取ったデータとを暗号エンジン13に供給し、電子署名の生成を暗号エンジン13に行わせる(a23)。
【0048】
暗号制御部103は、暗号エンジン13によって生成された電子署名を鍵管理コマンド処理部101に転送する。鍵管理コマンド処理部101は、この電子署名を、インターフェース12を介してホスト2へ送信する(a24)。
【0049】
図6は、非対称鍵の生成を要求する鍵生成コマンドおよびその応答のフォーマットの一例を示している。
【0050】
図6(A)に示すように、鍵生成コマンドは、コマンド識別子フィールドと、暗号アルゴリズムフィールドとを有する。鍵生成コマンドの場合、鍵生成コマンドを示す値がコマンド識別子フィールドに格納される。暗号アルゴリズムフィールドは、鍵生成に用いられるアルゴリズムを示す値が格納される。暗号アルゴリズムフィールドの値は、鍵生成コマンドが非対称鍵または対称鍵のいずれの生成を要求するものであるかを判別するための情報としても用いられる。ここでは、暗号アルゴリズムとして、RSA 2048bitが指定されている。RSA 2048bitは、非対称鍵を用いる暗号アルゴリズムである。
【0051】
一方、図6(B)に示すように、非対称鍵の鍵生成コマンドの応答は、コマンド識別子フィールドと、実行結果フィールドと、鍵識別子フィールドと、鍵データ長(L)フィールドと、鍵データフィールドとを有する。コマンド識別子フィールドには、複数の鍵生成コマンドを互いに区別できるような値が格納される。実行結果フィールドには、コマンドに対応する処理の成否を示す値が格納される。鍵識別子フィールドには、生成された暗号鍵(秘密鍵および公開鍵)の識別子(鍵ID)が格納される。鍵データ長(L)フィールドには、鍵生成コマンドの発行元へ転送される公開鍵のサイズが格納される。鍵データフィールドには、生成された秘密鍵および公開鍵のうちの公開鍵が格納される。秘密鍵は、SSD1の外部に出力されることはない。
【0052】
また、図7は、署名コマンドおよびその応答のフォーマットの一例を示している。
図7(A)に示すように、署名コマンドは、コマンド識別子フィールドと、暗号アルゴリズムフィールドと、鍵識別子フィールドと、データ長(L)フィールドと、要求データフィールドとを有する。コマンド識別子フィールドには複数の署名コマンドを互いに区別できるような値が格納される。暗号アルゴリズムフィールドには、署名の生成に用いられる暗号アルゴリズムを示す値が格納される。ここでは、RSA 2048+SHA256が指定されている。鍵識別子フィールドには、署名の生成に用いる鍵の識別子(鍵ID)が格納される。データ長(L)フィールドには、署名を付与するデータのサイズが格納される。要求データフィールドには、署名を付与するデータが格納される。
【0053】
署名コマンドの応答は、図7(B)に示すように、コマンド識別子フィールドと、実行結果フィールドと、データ長フィールドと、応答データフィールドとを有する。コマンド識別子フィールドには、複数の署名コマンドを互いに区別できるような値が格納される。実行結果フィールドには、コマンドに対応する処理の成否を示す値が格納される。データ長フィールドには、生成された電子署名のサイズが格納される。応答データフィールドには、生成された電子署名が格納される。
【0054】
このように、実施形態のSSD1は、自己暗号ストレージとして、ホスト2のデータを暗号化してNAND30に格納することに加えて、この自己暗号ストレージの機能を活用して、電子署名用の秘密鍵および公開鍵を生成し、かつ、秘密鍵を安全に管理する機能を提供する。実施形態のSSD1が備える自己暗号ストレージの機能は、HSMなどと称される専用ハードウェアに代わることが可能である。実施形態のSSD1が暗号鍵を安全に管理する機能をホスト2に提供することで、暗号鍵を安全に管理する機能の導入コストを抑えることができる。
【0055】
また、NAND30のシステムデータ領域31で暗号鍵を管理する実施形態のSSD1は、HSMなどと称される専用ハードウェアで管理できる暗号鍵の数と比較して、管理できる暗号鍵の数を大幅に増加させることができる。さらに、たとえばストレージ向けに策定されたTCG仕様に準拠する認証機能を適用することで、非対称鍵の生成を要求する鍵生成コマンドや公開鍵取得コマンドを発行する権限を管理する仕組みを構築することができる。これにより、従来のメモリシステムを含んだ情報処理システムよりも、データを安全に管理することができる。
【0056】
続いて、図8を参照して、データの暗号化および復号に関するホスト2およびSSD1の動作の流れについて説明する。ここでも、鍵生成コマンドの発行権限が与えられている一般ユーザ用IDで認証が成立していることを想定する。データの暗号化および復号に関しては、大きく分けて、暗号鍵を生成するフェーズ(b1)と、暗号鍵を用いてデータを暗号化または復号するフェーズ(b2、b3)とが存在する。
【0057】
ホスト2は、SSD1に鍵生成コマンドを発行する(b11)。鍵生成コマンドが非対称鍵または対称鍵のいずれの生成を要求するものであるかは、前述のように、たとえばパラメータで指定される暗号アルゴリズムによって判別することができる。ここでは、対称鍵を示す暗号アルゴリズムをパラメータで指定する鍵生成コマンドが発行されたことを想定する。
【0058】
ホスト2から発行された鍵生成コマンドは、インターフェース12を介して鍵管理コマンド処理部101に供給される。鍵管理コマンド処理部101は、鍵生成コマンドの受け付け可否を認証処理部102に問い合わせる。ここでは、鍵生成コマンドの発行権限が与えられている一般ユーザ用IDで認証が成立している場合を想定しているので、認証処理部102から鍵管理コマンド処理部101へは、鍵生成コマンドは受け付け可能であることが通知される。
【0059】
鍵生成コマンドが受け付け可能である場合、鍵管理コマンド処理部101は、鍵管理部104に共通鍵の生成を指示する。この指示を受けて、鍵管理部104は、共通鍵を生成する(b12)。鍵管理部104は、生成した共通鍵を暗復号ハードウェア14経由でNAND30のシステムデータ領域31に格納する(b13)。このとき、暗復号ハードウェア14は、共通鍵を暗号化する。鍵管理部104は、生成した共通鍵のID(鍵ID)を鍵管理コマンド処理部101に転送する。
【0060】
鍵管理コマンド処理部101は、鍵生成コマンドの応答として、鍵管理部104から受け取った鍵IDを、インターフェース12を介してホスト2に送信する(b14)。ホスト2は、この鍵IDを保管する。
【0061】
暗号化用の共通鍵を生成した後、たとえばクラウド上のファイルサーバへデータをアップロードして保存する場合、ホスト2はデータを暗号化する。ホスト2は、鍵IDと、暗号化対象のデータとを含む暗号コマンドを発行する(b21)。ホスト2から発行された暗号コマンドは、インターフェース12を介して鍵管理コマンド処理部101に供給される。鍵管理コマンド処理部101は、暗号コマンドに含まれる鍵IDを取り出し、その鍵IDで示される共通鍵の読み出しを鍵管理部104に指示する。鍵管理部104は、指定された共通鍵を暗復号ハードウェア14経由でNAND30のシステムデータ領域31から読み出す(b22)。このとき、暗復号ハードウェア14は、暗号化されている共通鍵を復号する。鍵管理部104は、この共通鍵を暗号制御部103へ転送する。
【0062】
鍵管理コマンド処理部101は、鍵管理部104に対する共通鍵の読み出しの指示と並行して、暗号コマンドから取り出したデータの暗号化を暗号制御部103に指示する。暗号制御部103は、鍵管理部104から受け取った共通鍵と、鍵管理コマンド処理部101から受け取ったデータとを暗号エンジン13に供給し、データの暗号化を暗号エンジン13に行わせる(b23)。
【0063】
暗号制御部103は、暗号エンジン13によって暗号化されたデータ(暗号データ)を鍵管理コマンド処理部101に転送する。鍵管理コマンド処理部101は、この暗号データを、インターフェース12を介してホスト2へ送信する(b24)。
【0064】
また、たとえばクラウド上のファイルサーバに保存した暗号データをダウンロードして利用するにあたり、その暗号データを復号する場合、ホスト2は、鍵IDと、復号対象のデータとを含む復号コマンドを発行する(b31)。ホスト2から発行された復号コマンドは、インターフェース12を介して鍵管理コマンド処理部101に供給される。鍵管理コマンド処理部101は、復号コマンドに含まれる鍵IDを取り出し、その鍵IDで示される共通鍵の読み出しを鍵管理部104に指示する。鍵管理部104は、指定された共通鍵を暗復号ハードウェア14経由でNAND30のシステムデータ領域31から読み出す(b32)。このとき、暗復号ハードウェア14は、暗号化されている共通鍵を復号する。鍵管理部104は、この共通鍵を暗号制御部103へ転送する。
【0065】
鍵管理コマンド処理部101は、鍵管理部104に対する共通鍵の読み出しの指示と並行して、暗号コマンドから取り出した暗号データの復号を暗号制御部103に指示する。暗号制御部103は、鍵管理部104から受け取った共通鍵と、鍵管理コマンド処理部101から受け取ったデータとを暗号エンジン13に供給し、暗号データの復号を暗号エンジン13に行わせる(b33)。
【0066】
暗号制御部103は、暗号エンジン13によって復号されたデータを鍵管理コマンド処理部101に転送する。鍵管理コマンド処理部101は、このデータを、インターフェース12を介してホスト2へ送信する(b34)。
【0067】
図9は、対称鍵の生成を要求する鍵生成コマンドおよびその応答のフォーマットの一例を示している。
【0068】
図9(A)に示すように、鍵生成コマンドは、コマンド識別子フィールドと、暗号アルゴリズムフィールドとを有する。コマンド識別子フィールドには複数の鍵生成コマンドを互いに区別できるような値が格納される。暗号アルゴリズムフィールドは、鍵生成に用いられるアルゴリズムを示す値が格納される。前述したように、暗号アルゴリズムフィールドの値は、鍵生成コマンドが非対称鍵または対称鍵のいずれの生成を要求するものであるかを判別するための情報としても用いられる。ここでは、暗号アルゴリズムとして、AES 256bitが指定されている。AES 256bitは、対称鍵を用いる暗号アルゴリズムである。
【0069】
一方、図9(B)に示すように、対称鍵の鍵生成コマンドの応答は、コマンド識別子フィールドと、実行結果フィールドと、鍵識別子フィールドと、鍵データ長(L)フィールドとを有する。前述の非対称鍵の鍵生成コマンドの応答との違いは、鍵データ長(L)フィールドの値が常に0であることと、鍵データフィールドを有しないこととである。共通鍵は、SSD1の外部に出力されることはない。
【0070】
また、図10は、暗号コマンドおよびその応答のフォーマットの一例を示している。
図10(A)に示すように、暗号コマンドは、コマンド識別子フィールドと、暗号アルゴリズムフィールドと、鍵識別子フィールドと、データ長(L)フィールドと、要求データフィールドとを有する。コマンド識別子フィールドには複数の暗号コマンドを互いに区別できるような値が格納される。暗号アルゴリズムフィールドには、データの暗号化に用いる暗号アルゴリズムを示す値が格納される。ここでは、AES 256bit CBCが指定されている。鍵識別子フィールドには、データの暗号化に用いる鍵の識別子(鍵ID)が格納される。データ長(L)フィールドには、暗号化するデータのサイズが格納される。要求データフィールドには、暗号化するデータが格納される。
【0071】
暗号コマンドの応答は、図10(B)に示すように、コマンド識別子フィールドと、実行結果フィールドと、データ長フィールドと、応答データフィールドとを有する。コマンド識別子フィールドには、複数の暗号コマンドを互いに区別できるような値が格納される。実行結果フィールドには、コマンドに対応する処理の成否を示す値が格納される。データ長フィールドには、暗号化されたデータ(暗号データ)のサイズが格納される。応答データフィールドには、暗号データが格納される。
【0072】
なお、復号コマンドおよびその応答のフォーマットは、暗号コマンドおよびその応答のフォーマットと同様であり、暗号コマンドおよびその応答とは逆に、要求データフィールドに暗号化されているデータが格納され、応答データフィールドには暗号化されていないデータが格納される。
【0073】
このように、実施形態のSSD1は、自己暗号ストレージとして、ホスト2のデータを暗号化してNAND30に格納することに加えて、この自己暗号ストレージの機能を活用して、暗号化用の共通鍵を生成し、かつ、共通鍵を安全に管理する機能を提供する。実施形態のSSD1が備える自己暗号ストレージの機能は、HSMなどと称される専用ハードウェアに代わることが可能である。前述したように、実施形態のSSD1が暗号鍵を安全に管理する機能をホスト2に提供することで、暗号鍵を安全に管理する機能の導入コストを抑えることができる。
【0074】
また、NAND30のシステムデータ領域31で暗号鍵を管理する実施形態のSSD1は、HSMなどと称される専用ハードウェアで管理できる暗号鍵の数と比較して、管理できる暗号鍵の数を大幅に増加させることができる。さらに、たとえばストレージ向けに策定されたTCG仕様に準拠する認証機能を適用することで、対称鍵の生成を要求する鍵生成コマンドを発行する権限を管理する仕組みを構築することができる。これにより、従来のメモリシステムを含んだ情報処理システムよりも、データを安全に管理することができる。
【0075】
次に、図11を参照して、実施形態のSSD1が、HSM相当の各種コマンドの発行権限を管理する一例を説明する。この管理方法では、たとえばストレージ向けに策定されたTCG仕様に準拠する認証機能が適用されるため、実施形態のSSD1は、TCG相当のコマンド(拡張コマンド)として、ユーザ設定コマンド、権限設定コマンド、パスワード変更コマンドを受け付け可能である。
【0076】
管理者用IDで認証を成立させたホスト2の操作者(管理者)は、ユーザ設定コマンドを用いて、一般ユーザ用IDを設定することができる。また、管理者は、設定した一般ユーザ用IDに関して、権限設定コマンドを用いて、鍵生成コマンドなどのHSM相当の各種コマンドの発行権限有無を設定することができる。管理者は、一般ユーザ用IDをユーザ設定コマンドによって設定する際、暗号鍵の最大保有可能数を設定することができる。
【0077】
一般ユーザ用IDで認証を成立させたホスト2の操作者(一般ユーザ)は、パスワード変更コマンドを用いて、その一般ユーザ用IDによる認証に用いられるパスワードを変更することができる。なお、管理者も、このパスワード変更コマンドを用いて、管理者用IDによる認証に用いられるパスワードを変更することができる。
【0078】
ホスト2から発行されたユーザ設定コマンド、権限設定コマンドまたはパスワード変更コマンドは、インターフェース12を介して鍵管理コマンド処理部101に供給される。鍵管理コマンド処理部101は、ユーザの設定、コマンドの発行権限の設定またはパスワードの変更を認証処理部102に指示する。認証処理部102は、鍵管理コマンド処理部101からの指示に対応する処理を行い、その結果を、たとえば図11に示すようなテーブルとして管理する。このテーブルも、NAND30のシステムデータ領域31に格納される。
【0079】
図11に示すテーブルには、管理者によって、少なくとも3つの一般ユーザ用ID(ユーザ1、ユーザ2、ユーザ3)が設定されている状態が示されている。また、ユーザ1は鍵生成コマンド、署名コマンド、暗号コマンド、復号コマンド、公開鍵取得コマンドのいずれについても発行権限を有し、ユーザ2は、暗号コマンドおよび復号コマンドについて発行権限を有し、ユーザ3は暗号コマンドのみ発行権限を有する設定状態が示されている。管理者用IDと3つの一般ユーザ用IDとのそれぞれについてパスワードが管理されることも示されている。
【0080】
この場合、ユーザ1は、たとえば非対称鍵の生成を要求する鍵生成コマンドを発行して鍵IDと公開鍵とを取得し、この鍵IDとデータとを含む署名コマンドを発行する。これにより、ユーザ1は、その公開鍵でのみ正当性を確認することが可能な、データに対応する署名を生成することができる。また、ユーザ1は、たとえば対称鍵の生成を要求する鍵生成コマンドを発行して鍵IDを取得し、この鍵IDとデータとを含む暗号コマンドを発行することでデータを暗号化することができる。ユーザ1は、その鍵IDと暗号データとを含む復号コマンドを発行することで暗号データを復号することができる。前述したように、署名用の秘密鍵や暗号用の共通鍵はSSD1の外に出力されることはない。
【0081】
鍵生成コマンドの発行権限を持っていないユーザ2は、たとえばユーザ1が生成した対称鍵(共通鍵)の鍵IDを使って、発行権限を有する暗号コマンドや復号コマンドを発行することで、データの暗号化や暗号データの復号を行うことができる。しかし、ユーザ2は署名コマンドの発行権限は持っていないので、ユーザ1が生成した非対称鍵(秘密鍵)を使って署名を生成することはできない。
【0082】
なお、認証処理部102は、たとえば図12に示すようなテーブルをさらに管理してもよい。このテーブルは、鍵ごとに、各ユーザに付与された発行権限が及ぶか否かを示す。このようなテーブルを管理することで、たとえば、ユーザ2に付与されている暗号コマンドや復号コマンドの発行権限を、前述のユーザ1が生成した鍵(KEY)のみに限定するといったことが可能となる。つまり、ユーザ2がKEYやKEYを使ってデータの暗号化や暗号データの復号を行うことは禁止することができる。
【0083】
ユーザ3は、復号コマンドの発行権限を持っていないので、たとえばユーザ1が生成した対称鍵(共通鍵)を使って、データを暗号化することはできるが、暗号データを復号することはできない。
【0084】
なお、ある一般ユーザ用IDについて、いずれのコマンドの発行権限も持たない設定を行うことも可能である。この一般ユーザ用IDで認証が成立した場合、SSD1は、自己暗号ストレージとしてのみ機能する。
【0085】
このように、たとえばTCG仕様に準拠する認証機能を適用することで、実施形態のSSD1は、HSM相当の各種コマンドの発行権限を管理する仕組みを構築することができる。
【0086】
以上のように、実施形態のSSD1は、自己暗号ストレージとして有する既存の暗復号機能を活用することで、暗号鍵を安全に管理する機能の導入コストを抑えることを実現する。また、HSMなどと称される専用ハードウェアと比較して、管理できる暗号鍵の数を大幅に増加させることができる。さらに、たとえばストレージ向けに策定されたTCG仕様に準拠する認証機能を適用することで、HSM相当の各種コマンドの発行権限を管理する仕組みを構築することができる。
【0087】
なお、以上では、データの暗号化および復号について共通鍵暗号方式が利用されることを想定して説明を行ったが、データの復号について公開鍵暗号方式が利用されることも可能である。たとえば、ホスト2は非対称鍵の生成を要求する鍵生成コマンドを発行する。SSD1は秘密鍵および公開鍵を生成する。ホストは、ホスト2宛てにデータを送信する送信者とホスト2の間で、公開鍵を共有する。共有の方法は任意である。データは、送信者によってホスト2の公開鍵を用いて暗号化され、ホスト2宛に送信される。暗号化されているデータを受信したら、秘密鍵の鍵IDと暗号データとを含む復号コマンドを発行することで、暗号データを復号する。この場合も、秘密鍵はSSD1の外に出力されることなく安全に管理される。
【0088】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0089】
1…メモリシステム(SSD)、2…ホスト、10…コントローラ、11…CPU、12…インターフェース、13…暗号エンジン、14…暗復号ハードウェア、20…揮発性メモリ(DRAM)、30…不揮発性メモリ(NAND)、31…システムデータ領域、32…ユーザデータ領域、101…鍵管理コマンド処理部、102…認証処理部、103…暗号制御部、104…鍵管理部、150…暗復号機能部。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12