JP2015026358A - デバイス、ホスト装置、ホストシステム、及びメモリシステム - Google Patents

デバイス、ホスト装置、ホストシステム、及びメモリシステム Download PDF

Info

Publication number
JP2015026358A
JP2015026358A JP2014019731A JP2014019731A JP2015026358A JP 2015026358 A JP2015026358 A JP 2015026358A JP 2014019731 A JP2014019731 A JP 2014019731A JP 2014019731 A JP2014019731 A JP 2014019731A JP 2015026358 A JP2015026358 A JP 2015026358A
Authority
JP
Japan
Prior art keywords
user key
key
host
memory card
host device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014019731A
Other languages
English (en)
Inventor
曜久 藤本
Teruhisa Fujimoto
曜久 藤本
広幸 坂本
Hiroyuki Sakamoto
広幸 坂本
松川 伸一
Shinichi Matsukawa
伸一 松川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014019731A priority Critical patent/JP2015026358A/ja
Priority to EP14713935.6A priority patent/EP3011460A1/en
Priority to PCT/JP2014/053391 priority patent/WO2014203558A1/en
Priority to KR1020157035943A priority patent/KR20160010605A/ko
Priority to CN201480034597.XA priority patent/CN105339919A/zh
Priority to TW105102390A priority patent/TW201616390A/zh
Priority to TW103106185A priority patent/TW201500963A/zh
Publication of JP2015026358A publication Critical patent/JP2015026358A/ja
Priority to US14/974,665 priority patent/US20160103625A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

【課題】利便性を向上出来るデバイスを提供すること。【解決手段】実施形態のデバイスは、半導体メモリ31と、コントローラ32とを備える。半導体メモリ31は、外部からアクセス可能な第1、第2領域を備える。コントローラ32は、半導体メモリを制御する。デバイスは、第1領域と第2領域からの読み出しが許可されるアンロック状態と、第1領域からの読み出しが許可され、第2領域からの読み出しが禁止されるロック状態とを有する。第1領域はファイルシステム情報(FAT and DIR entry)の少なくとも一部を格納する領域である。ファイルシステム情報の少なくとも一部は、ロック状態において外部から読み出し可能とされる。【選択図】図3

Description

本発明の実施形態は、デバイス、ホスト装置、ホストシステム、及びメモリシステムに関する。
記録メディアとして、NAND型フラッシュメモリを用いたメモリデバイスが広く普及している。
このようなメモリデバイスとして、メモリカードが知られている。そしてメモリカードには、該カードへのアクセスを禁止するロック機能を有するものが知られている。しかし、従来のロック機能は、ロック状態でメモリ領域がまったく読み出せないため、ロック機能をサポートしないホスト機器からは、メモリカードとして認識されない、という問題があった。また、ロック機能をサポートしたホスト機器であっても、ロック状態を解除するまでメモリカードにアクセスができないため、ロック状態のためにメモリがアクセスできないのか、エラーによりアクセスできないのか区別がつかなかった。ロック状態を管理するためには、特別なユーティリティが必要となる。そのためホスト装置では、ロック状態にあるカードの取り扱いを管理するのが難しかった。
SD Specifications part 1 Physical layer Simplified Specification Ver.2.00, Sep. 25, 2006, SD Card Association, インターネット<https://www.sdcard.org/downloads/pls/simplified_specs/archive>
利便性を向上出来るデバイス、ホスト装置、ホストシステム、及びメモリシステムを提供する。
実施形態に係るデバイスは、半導体メモリとコントローラとを備える。半導体メモリは、外部からアクセス可能な第1、第2領域を有する。コントローラは、半導体メモリを制御する。デバイスは、第1領域と第2領域からの読み出しが許可されるアンロック状態と、第1領域からの読み出しが許可され、第2領域からの読み出しが禁止されるロック状態とを有する。第1領域は、ファイルシステム情報の少なくとも一部を格納する領域である。ロック状態において、ファイルシステム情報の少なくとも一部は、外部から読み出し可能とされる。
図1は、一実施形態に係るメモリシステムのブロック図。 図2は、一実施形態に係るメモリシステムのメモリ空間の概念図。 図3は、一実施形態に係るメモリカードの状態遷移図。 図4は、一実施形態に係るメモリカードの状態遷移図。 図5は、一実施形態に係るメモリシステムのブロック図。 図6は、一実施形態に係るメモリカードの動作を示すフローチャート。 図7は、一実施形態に係るコンフィギュレーション・モードの機能を示すダイアグラム。 図8は、一実施形態に係る“Set User Key”機能実行時のホスト装置の動作を示すフローチャート。 図9は、一実施形態に係る“Set User Key”機能実行時のメモリカードの動作を示すフローチャート。 図10は、一実施形態に係る“Set User Key”機能実行時の動作を示すフローチャート。 図11は、一実施形態に係る“Set User Key”機能実行時の動作を示すフローチャート。 図12は、一実施形態に係る“Clear/Verify User Key”機能及び“Enable/Disable Key Ciphering”実行時のホスト装置の動作を示すフローチャート。 図13は、一実施形態に係る“Clear/Verify User Key”機能実行時のメモリカードの動作を示すフローチャート。 図14は、一実施形態に係る“Clear User Key”機能実行時の動作を示すフローチャート。 図15は、一実施形態に係る“Clear User Key”機能実行時の動作を示すフローチャート。 図16は、一実施形態に係る“Enable/Disable Key Ciphering”実行時のメモリカードの動作を示すフローチャート。 図17は、一実施形態に係る“Enable/Disable Config.Mode”実行時のメモリカードの動作を示すフローチャート。 図18は、一実施形態に係るアンロック動作のフローチャート。 図19は、一実施形態に係るホスト装置におけるアンロック動作のフローチャート。 図20は、一実施形態に係るメモリカードにおけるアンロック動作のフローチャート。 図21は、一実施形態に係るアンロック動作のフローチャート。 図22は、一実施形態に係るアンロック動作のフローチャート。 図23は、一実施形態に係るアンロック動作のフローチャート。 図24は、一実施形態に係るアンロック動作のフローチャート。 図25は、一実施形態に係るホスト装置におけるロック動作のフローチャート。 図26は、一実施形態に係るメモリカードにおけるロック動作のフローチャート。 図27は、一実施形態に係るメモリシステムの模式図。 図28は、一実施形態に係るメモリシステムの模式図。 図29は、一実施形態に係るメモリシステムの模式図。 図30は、一実施形態に係るメモリシステムの模式図。 図31は、一実施形態に係るメモリシステムの模式図。 図32は、一実施形態に係るメモリシステムの模式図。 図33は、一実施形態に係るメモリシステムの模式図。 図34は、一実施形態の変形例に係るメモリシステムのブロック図。 図35は、一実施形態の変形例に係るメモリカードの一部領域のブロック図。 図36は、一実施形態の変形例に係るメモリカードの動作を示すフローチャート。
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
一実施形態に係るデバイス、ホスト装置、ホストシステム、及びメモリシステムについて説明する。以下では、メモリカードと、このメモリカードにアクセスするホスト装置とを含むメモリシステムを例に挙げて説明する。また本明細書では、メモリカードがSDメモリカードである場合を例に説明する。
1.構成について
まず、ホスト装置及びメモリカードの構成について、図1を用いて説明する。図1は、本実施形態に係るメモリシステムのハードウェア構成を示すブロック図である。
1.1 ホスト装置の構成について
まず、図1を参照してホスト装置の構成について説明する。図示するようにホスト装置1は、MPU(micro processing unit)11、ホストインターフェース(例えばSDTMインターフェース)回路12、ROM(read only memory)14、及びRAM(random access memory)13等を備えている。ROM14は、ハードディスクのような一般的な書き込みが可能なストーレジデバイスも含み、特にハードウェアの種類で限定はされるものではない。
MPU11は、ホスト装置1全体の動作を司る。ホスト装置1が電源供給を受けた際、ROM14に格納されているファームウェア(制御プログラム(命令))がRAM13上に読み出される。そしてMPU11は、このファームウェア(命令)に従って所定の処理を実行する。またMPU11は、RAM13及びROM14に保持されるプログラム15を実行することにより、種々の機能を実現する。このプログラム15には、種々のアプリケーションソフトウェア、オペレーティングシステム、ファイルシステム等が含まれる。またこのプログラム15には、後述するユーザ・キー(user key)を生成するための管理ユーティリティが含まれる。
ホストインターフェース回路12は、メモリカード2との間の通信プロトコルを司る。ホストインターフェース回路12は、ホスト装置1とメモリカード2とが通信するのに必要な様々な取り決めに従って動作し、後述のメモリカード2のホストインターフェース41と相互に通信可能な各種のコマンドの組を備えている。
1.2 メモリカードの構成について
次に、引き続き図1を用いてメモリカード2の構成について説明する。図示するようにメモリカード2は、NAND型フラッシュメモリ31及びコントローラ32を備える。
NAND型フラッシュメモリ31は、データを不揮発に記憶する。NAND型フラッシュメモリ31は、複数のメモリセルを含むページと呼ばれる単位でデータを書き込み、また読み出す。各ページには、固有の物理アドレスが割り当てられている。更にNAND型フラッシュメモリ31は、複数のページを含むブロックと呼ばれる単位でデータを消去する。なお、ブロック単位で物理アドレスが割り当てられていても良い。
コントローラ32は、ホスト装置1からの要求に応じて、NAND型フラッシュメモリ31に対してデータの書き込み、読み出し、及び消去を命令する。またコントローラ32は、NAND型フラッシュメモリ31によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(またはブロック)が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ(またはブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。
図1に示すようにコントローラ32は、ホストインターフェース回路41、MPU42、RAM44、ROM43、及びNANDインターフェース回路45を備えている。
ホストインターフェース回路41は、メモリカード2とホスト装置1との間の通信を司る。より具体的には、ホストインターフェース回路41は、ホスト装置1のホストインターフェース回路12との間で、種々のコマンドやデータの授受を制御する。またホストインターフェース回路41はレジスタ46を備える。レジスタ46は、種々の情報を格納することにより、ホスト装置1に対してメモリカード2の状態を通知出来る。この情報は、例えばMPU42によってセットされる。またレジスタ46は、ホスト装置1から受信した種々の情報を格納する。
MPU42は、メモリカード2全体の動作を司る。メモリカード2が電源供給を受けた際、ROM43に格納されているファームウェア(制御プログラム(命令))がRAM44上に読み出される。そして、MPU42は、このファームウェア(命令)に従って所定の処理を実行する。MPU42は、制御プログラムに従って各種のテーブルをRAM44上で作成したり、ホスト装置1から受けたコマンドに従ってNAND型フラッシュメモリ31に対する所定の処理を実行したりする。
ROM43は、MPU42により制御される制御プログラムなどを格納する。RAM44は、MPU42の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、データに割り当てられた論理アドレスと、当該データを格納しているページの物理アドレスとの変換テーブル(論理アドレス/物理アドレス変換テーブル)が含まれる。NANDインターフェース回路45は、コントローラ32とNAND型フラッシュメモリ31との間のインターフェース処理を行う。
1.3 メモリシステムのメモリ空間について
次に、上記構成のメモリシステムのメモリ空間について説明する。図2は、メモリカード2の外部からアクセス可能なメモリ空間を示すメモリマップであり、FAT(file allocation table)ファイルシステムによりメモリ空間が管理される例について示している。
図示するようにメモリ空間は、大まかにはファイルシステム管理領域50とファイルシステムデータ領域51とに分けられる。各領域は、クラスタという単位に分割されて管理される。このファイルシステム管理領域50とファイルシステムデータ領域51とをあわせて、データ領域と呼ぶ。
管理領域50は、NAND型フラッシュメモリ31に記録されているファイル(データ)を管理するために設けられており、ファイルの管理情報を保持する。このように、メモリに記録されているファイル(データ)を管理する方式をファイルシステムと呼ぶ。ファイルシステムにおいては、ファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。
管理領域50は、例えばブートセクタ、FAT1、FAT2、及びルートディレクトリエントリを含んでいる。ブートセクタは、ブート情報を記憶する領域である。ブートセクタは、例えばマスターブートレコード(MBR:Master Boot Record)及びBIOSパラメータブロック(BPB:BIOS Parameter Block)を含む。MBR及びBPBは、例えばそれぞれ512バイトの領域である。FAT1及びFAT2は、データがいずれのクラスタに記憶されているかを記憶する。メモリ空間は、クラスタと呼ばれるある一定のサイズの空間の集合である。そして、書き込まれるデータがクラスタサイズより大きい場合、クラスタ単位に分割されて記憶される。この際FATは、データがどのクラスタに分割されて書き込まれたかを示すクラスタチェーン(cluster chain)を作成し、これによってデータを管理する。なお、FAT1及びFAT2の両者が同じ値を保持しておくことで、一方が壊れた場合でもFATの復旧を可能にしている。以下ではFAT1、FAT2をまとめてFATと呼ぶ。ルートディレクトリエントリは、ルートディレクトリ上にあるファイルの情報を記憶する。より具体的には、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、どのクラスタがファイルの先頭クラスタであるかを記憶する。先頭クラスタが分かれば、FATチェーンから、全データがアクセス可能となる。
ファイルシステムデータ領域51は管理領域50以外の領域であり、メモリカードに格納することができるデータ容量は、この領域の大きさで決まる。そして、正味のユーザ・データやディレクトリエントリを保持する。
1.4 ロック状態とアンロック状態について
次に、本実施形態に係るメモリカード2の取り得るロック状態とアンロック状態とについて、図3を用いて説明する。図3は、メモリカード2の状態遷移図であり、特に電源投入直後の状態と、ロック状態とアンロック状態との間の遷移とについて示している。
ユーザ・キーは、メモリカードがロック状態になるためには登録されている必要があり、ロック状態からアンロック状態の間を遷移するために必要な鍵である。キーは、ホスト装置1からユーザが直接入力する「パスワード」として使用する場合と、ユーザが入力するには適さないほど長い鍵を扱うことも対象としているため、ユーザの入力によらずにホスト装置1の管理ユーティリティによって管理される場合とがある。
図3に示すように、メモリカード2がホスト装置1に接続されてホスト装置1からメモリカード2に電源が供給されると、ユーザ・キーの設定の有無によって、メモリカード2はロック状態(locked state)とアンロック状態(unlocked state)とのいずれかの状態を取る。ユーザ・キーが設定されていなければ、メモリカード2はアンロック状態となる。アンロック状態では、メモリカード2のメモリ空間に対する書き込みアクセス及び読み出しアクセスは制限なく行うことが出来る(ただし、ROMカードなどの用途によってライトは制限される場合がある)。メモリカードの制御は、コマンドで行われ、メモリアクセスコマンドとしては、書き込みコマンド、読み出しコマンドがあり、また本提案のロック機能を制御する制御コマンドがある。ホスト装置1は、制御コマンドを用いてメモリカード2にユーザ・キーを登録することが出来る。制御コマンドは、ロック状態、アンロック状態に関わらず実行可能なコマンドとして制御される。
他方で、メモリカード2にユーザ・キーが設定されていれば、メモリカード2はロック状態となる。ロック状態では、メモリカード2に対する書き込みアクセスは禁止され、読み出しアクセスは制限される。例えば、図2で説明した管理領域50、より具体的にはファイルシステムに関する情報(例えば図2におけるFAT1、FAT2、及びルートディレクトリエントリ、以下、これをファイルシステム情報と呼ぶ)の読み出しは可能とされるが、管理領域50以外の領域への読み出しコマンドを受信した際には、そのコマンドの実行を拒絶する。書き込みコマンドを受信した際は、領域によらず、そのコマンドの実行を拒絶する。
ホスト装置1は、メモリカード2がロック状態であってもファイルシステム情報の少なくとも一部の読み出しが可能であるため、この情報を読み出すことによって、メモリカード2がフォーマット済みのメモリデバイスであることを認識出来、更にこのメモリカード2にドライブレターを割り当てることが出来る。
例えばホスト装置1は、後述する図35に示すMBR(Master Boot Record)に記載された情報を読み出すだけでも、メモリカード2をマウントすることは可能である。この場合、ホスト装置1は、カードがロック状態の場合は、マウント先(ドライブなど)からはメモリカード2を空のドライブとして見せておき、ロックが解除されると、ディレクトリやファイル名が見えるようになる。
ファイルシステム管理領域50とファイルシステムデータ領域51の境界はファイルシステムのフォーマットパラメータで決定されるため、メモリカード2としては、境界を厳密に区別する必要はない。メモリ容量から、おおよそ必要な管理領域50の大きさが予測できるので、ロック状態においては、例えばMBRやBPBぐらいまでを読み出せるようにしても良いし、管理領域50を含む少し大きめの領域に対して読めるようにしても良い。したがってメモリカード2が、ファイルシステムのフォーマットを認識する必要はない。
一般的に、デバイスをマウントする場合、デバイスの識別とパーティション情報が必要となる。従って、ロック状態において最低限、MBRを読み出すことが出来れば、メモリード2をマウントすることは可能な場合が多い。デバイス情報は、メモリカード2を初期化した後、MIDを読み出すことで識別出来る。MIDとは、メモリカード2内に含まれるCID(Card Identification)レジスタに保持される、カード識別情報の一種である。また、MBRは、メモリカード2のパーティション情報を得るためにも必要な情報である。しかし、メモリカード2が第1パーティションのみ有効である、というルールを予め定めておけば、MBRを読み出すことなくマウントが可能となる。マウント処理のためにロック状態のメモリカード2から読み出し可能なホスト装置1の実装としては、一例として、図35のメモリ空間の場合に以下のようなケースが考えられる。すなわちホスト装置1は、
(a) MBRだけ読み出せる、
(b) MBRとBPBだけ読み出せる、
(c) MBRからFATまでを読み出せる、または
(d) MBRからルートディレクトリエントリまでを読み出せる。
アンロック状態にあるメモリカード2は、制御コマンドを用いてロック動作を実行すると、ユーザ・キーが登録されていればロック状態に遷移出来る。またロック状態にあるメモリカード2は、制御コマンドを用いてアンロック動作を実行し、指定したキーと登録済みのキーが一致すればアンロック状態に遷移出来る。アンロック動作には、ユーザ・キーを用いたアンロック動作と、後述するマスター・キーを用いたアンロック動作とがある。またロック状態からアンロック状態への遷移は、ユーザ・キーを含む一部のデータを制御コマンドで消去することによっても可能である。これらの動作の詳細も後述する。
またメモリカード2は、制御コマンドを用いてユーザ・キーに関する種々の設定(コンフィギュレーション動作)を実行可能である。通常このコンフィギュレーション動作は、アンロック状態において実行可能であるが、ロック状態でもコンフィギュレーション動作を許可することができるコンフィギュレーション・モード(Config.Mode)を有している。すなわち、コンフィギュレーション・モードがオンされているメモリカード2は、ロック状態であってもコンフィギュレーション動作を実行出来る。他方、コンフィギュレーション・モードがオフされていれば、ロック状態のメモリカード2はコンフィギュレーション動作を実行出来ない。コンフィギュレーション動作の詳細については、後述する。
図4は、ロック状態とアンロック状態の更に詳細な内部状態を示す図である。前述のように、電源オン時にユーザ・キーが登録されていなければ、メモリカード2はアンロック状態にある。アンロック状態では(図4右側)、コンフィギュレーション・モードはデフォルトでオンされている。そして、ホスト装置1は制御コマンドを用いてコンフィギュレーション動作を実行してユーザ・キーを登録することが出来る。一方、電源オン時にユーザ・キーが登録されていれば、メモリカード2はロック状態にある(図4左側)。コンフィギュレーション・モードがオンかオフかの2状態がある。コンフィギュレーション・モードをオフにしないと、アンロック動作を実行することができない。
例えば、あるホスト装置1(ホスト装置1−1)によってユーザ・キーが登録されたメモリカード2が、別のホスト装置1(ホスト装置1−2)に接続された際には、メモリカード2はロック状態となる。但し、ホスト装置1−1でコンフィギュレーション・モードがオンに設定されていた場合には、ロック状態のメモリカード2に対してホスト装置1−2はユーザ・キーを設定出来る。その後、ホスト装置1−2がコンフィギュレーション・モードをオフに設定すると、コンフィギュレーション動作は実行出来なくなる。ユーザ・キーは複数登録することができ、最大登録可能数まで複数のホスト装置のユーザ・キーを登録することができる。アンロック動作で、どれか1つのユーザ・キーが一致すればロック状態を解除することができる。
1.5 メモリカードの機能ブロック構成について
次に、メモリカード2の特にコンフィギュレーション動作に着目した機能ブロック構成について、図5を用いて説明する。図5は、メモリシステムの機能ブロック図である。
1.5.1 シンボル定義について
機能ブロック構成について説明する前に、本明細書で使用するシンボルについて以下のように定義する。
(i)一般的なキーシンボルの定義
・Ku (User Key) : ユーザによって設定されるキー
・Km (Master Key) : 出荷時に設定されている優先度が高いキー
・Kcp(Card Public Key):カードRSA暗号の公開鍵
・Kcs(Card Secret Key):カードRSA暗号の秘密鍵
・Ccx(Cipher Code, x=g or h):使用する暗号方式とアルゴリズムを示すコード
・Nr:乱数。
(ii)変換関数の種類と表記
・F():フラッシュメモリに保存しておくための暗号関数
エンコード:Kuf=F(Ku, “Enc”)
デコード:Ku=F(Kuf, “Dec”)
なお、変換関数F()は、変換を行わないという場合も含む(Kuf=Ku)。ホストとカードで共通の表記とするが、関数自体は同一である必要はなく個別の関数を実装してもよい。
・Gh()、Gc():RSA暗号を用いた暗号関数と復号関数
Kcpホストエンコード:Kut=Gh(Kcp, Ku)
Kcsカードデコード:Ku=Gc(Kcs, Kut)
Gh()、Gc()が複数ある場合、Ccgにより、使用するGh()及びGc()の種類が示される。
・H():ユーザ・キー登録用の変換関数
圧縮関数を用いて長いキーを短いキーに変換することで、キーの比較を容易にすることもできる。
Nt=H(Nr, Ku)。
(iii)キーの種類と表記
・Kx or Kxy:キーの表記
x=m:マスター・キー、x=u:ユーザ・キー
y=f:フラッシュメモリに保持するためにF()で暗号化されている、
y=t:ホストカード間の送受信時、y=v:検証(verification)時
マスター・キーの種類:Km, Kmf
ユーザ・キーの種類:Ku, Kut, Kuf, Kuv
・Nx:チャレンジに用いる乱数表記
x=r:乱数シード、
x=t:ホストカード間の送受信時に用いるキーを埋め込んだ乱数、
x=e:カードが計算した期待値
チャレンジ番号の種類:Nr, Nt, Ne。
1.5.2 ホスト装置1について
図5に示すように、ホスト装置1は、CPU60、変換関数Gc()、H()、F()ファームウェア61、レジスタ62、キー保存領域63、ワークメモリ64。並びにホストコントローラ65を備えている。
CPU60は、ホスト装置1全体の制御を行い、図1で説明したMPU11に相当する。そして、変換関数Gh()、H()、ファームウェア61、レジスタ62、キー保存領域63、ワークメモリ64、並びにホストコントローラ65にアクセス可能とされている。
変換関数Gh()は、ユーザ・キー登録時に用いる暗号関数である。変換関数Gh()には、例えばメモリカード2から読み出した公開鍵によってユーザ・キーを暗号化するRSA暗号方式が用いられる。変換関数Gh()は、ソフトウェアにより構成しても良いが (例えば図1で説明したROM14に格納される)、高速化を図るために、ハードウェアで構成しても良い。この変換関数Gh()が複数ある場合は、メモリカード2のステータス情報に含まれるGh()リストから選ばれる(図5のレジスタ72に保持される)。すなわち、Gh()リストは、メモリカード2がサポートしている、ユーザ・キー登録用の変換関数の一覧である。ホスト装置1は、ホスト装置1がサポートしている関数を、このGh()リストから選択する。選択された関数を示すコードCcgは、ワークメモリ64に保持される。Gh()が1種類しかない場合は、Gh()リストの実装は必須ではない。
変換関数H()は、ユーザ・キー認証時に用いる暗号関数である。ユーザ・キーは、メモリカード2から読み出された乱数を用いて、変換関数H()により暗号化される。変換関数H()もまた、ソフトウェアにより構成しても良いが(例えば図1で説明したROM14に格納される)、高速化の観点ではハードウェアで構成することが好ましい。この変換関数H()は、メモリカード2のステータス情報のH()リストから選ばれる(図5のレジスタ72に保持される)。すなわち、H()リストは、メモリカード2がサポートしている、ユーザ・キー認証用の変換関数の一覧である。ホスト装置1は、ホスト装置1がサポートしている関数を、このH()リストから選択する。選択された関数を示すコードCchは、ワークメモリ64に保持される。H()が1種類しかない場合は、H()リストの実装は必須ではない。変換関数H()にはハッシュ関数を用いることが出来、これによりキー長を短いキーに変換することで、キーの比較を容易にすることができる。H()の一例は、MD5(Nr||Ku)である。H()は逆関数を持っても良いが、本提案においてはH()は逆関数を持たない実装例を示している((F()は、"Dec", "Enc")で逆関数が定義されている)。
ホストコントローラ65は、メモリカード2との間でインターフェース処理を行う。ホストコントローラ65は、図1におけるホストインターフェース回路12に相当する。各種コマンドをカードに発行し、その応答によってコマンド実行を制御する。
CPU60は、ファームウェア61を実行することで動作し、ホスト装置1を制御する。またファームウェア61は、先述の管理ユーティリティを含む。管理ユーティリティは、乱数または、ホスト装置1固有の情報に基づいて、ユーザからの例えばパスワード入力を受け付けることなくユーザ・キーを生成する。ユーザ・キーの生成方法は、公知の種々の方法を用いることが出来、ホスト装置1固有の情報としては、例えば乱数発生、ホスト装置1の製造番号やシリアル番号等が挙げられる。あるいはユーザ・キーは、ホスト装置1固有の情報と、メモリカード2固有の情報とを用いて演算した結果に基づいても良い。ファームウェア61は、図1における例えばROM14に格納される。
レジスタ62は、メモリカード2から読み出したステータス情報を保持する。このステータス情報の一例は、乱数Nr及びRSA暗号の秘密鍵Kcp等である。レジスタ62としては、例えば揮発性メモリを使用でき、図1における例えばRAM13が相当する。
キー保存領域63は、管理ユーティリティによって生成されたユーザ・キーKu、またはユーザからの入力を受け付けたユーザ・キーKuをF()で暗号化してKufとして保持する。キー保存領域63は、例えば図1では図示せぬ不揮発性半導体メモリ(ホストメモリと呼ぶことがある)に相当する。キー保存領域63内の情報は、外部からは容易に読み出せないように管理されている。
ワークメモリ64は、CPU60がユーザ・キーに関する処理等、種々の処理を実行する際のワークエリアとして使用され、図1における例えばRAM13に相当する。そしてワークメモリ64は、使用するコードCcg、Cchや、CPU60で計算されたキーKut、Nt等を保持する。
1.5.3 メモリカード2について
CPU70は、メモリカード2全体の制御を行い、図1で説明したMPU42に相当する。そして、変換関数Gc()、H()、F()、ファームウェア71、レジスタ72及び73、ワークメモリ74、並びに不揮発性メモリ75にアクセス可能とされている。
変換関数Gc()は、ユーザ・キー登録時に用いる暗号関数である。そして変換関数Gc()には、例えば秘密鍵によってユーザ・キーを復号するRSA暗号方式が用いられる。変換関数Gc()は、ソフトウェアにより構成しても良いが(例えば図1で説明したROM14に格納される)、高速化を図るためにハードウェアで構成しても良い。この変換関数Gc()は、ホスト装置1の変換関数Gh()と対応している。そして変換関数Gc()は、メモリカード2がサポートしている、ユーザ・キー登録用の関数の一覧であるGh()リストに含まれるいずれかの関数である。
変換関数H()は、ユーザ・キー認証時に用いる暗号関数である。ユーザ・キーは、不揮発性メモリ75から読み出された乱数を用いて、変換関数H()により暗号化される。変換関数H()もまた、ソフトウェアにより構成しても良いが(例えば図1で説明したROM14に格納される)、高速化の観点ではハードウェアで構成することが好ましい。この変換関数H()は、ホスト装置1の変換関数H()と対応している。そして変換関数H()は、メモリカード2がサポートしている、ユーザ・キー認証用の関数の一覧であるH()リストに含まれるいずれかの関数である。前述の通り、変換関数H()にはハッシュ関数を用いることが出来、これによりキー長を短くして比較を容易にすることが出来る。
ホストインターフェース76は、ホスト装置1との間でインターフェース処理を行う。ホストインターフェース76は、図1におけるホストインターフェース41に相当する。
ファームウェア71は、CPU70によって実行される。そしてCPU70は、ファームウェア71を実行することで動作し、メモリカード2を制御する。ファームウェア71は、図1における例えばROM43に格納され、またホスト装置1からは見えずアクセスすることはできない。
レジスタ72は、メモリカード2の状態を示すステータス情報を保持可能である。ホスト装置1は、制御コマンドを用いてレジスタ72からステータス情報を読み出し、メモリカード2の状態を把握出来る。乱数Nrは、アンロック動作、並びにユーザ・キーの消去動作及び確認動作が行われる度に、例えばCPU70によって異なる値に更新される。秘密鍵Kcsは、ホストには見せないのでレジスタ72には保持されない。
レジスタ73は、ホスト装置1によって書き込み可能なレジスタである。そしてレジスタ73は、ホスト装置1から送信される各種のキー情報(例えばKu、Kut、Km、Ccg、Cch、及びNtなど)を保持する。
レジスタ72およびレジスタ73をハードウェアで構成する場合は、これらは図1における例えばレジスタ46に相当するが、RAM44上に仮想的なレジスタをファームウェア71で作ることが可能である。ステータスの初期値はメモリカード2が初期化される際、CPU70は不揮発性メモリ75から必要な情報をレジスタ72にコピーする。この情報の一例としては、Gh()リスト、H()リスト、乱数Nr、及び公開鍵Kcpが挙げられる。
ワークメモリ74は、CPU70がユーザ・キーに関する処理等、種々の処理を実行する際のワークエリアとして使用され、図1における例えばRAM44に相当する。そしてワークメモリ74は、計算された比較値Kuv、Kmvや期待値Ne等を保持する。ワークメモリ74は、ホスト装置1によって直接アクセスすることは出来ない。
不揮発性メモリ75は、図1におけるNAND型フラッシュメモリ31に相当する。ホスト装置1は、不揮発性メモリ75に対して直接にはアクセス出来ず、ホストインターフェース76やCPU70(図1におけるコントローラ32)を介してアクセスする。不揮発性メモリ75は、メモリカード2に記録しておくべき種々の情報(例えば、Kuf、Kmf、Nr、Kcp、Kcs、Gh()リスト、及びH()リストなど)を不揮発に保持する。これらの情報は、ホスト装置1からは見えない領域に保持され、ホスト装置1によって直接アクセスすることは出来ない。すなわち、これらの情報は、図2に図示しない領域に保持される。そして、これらの情報は基本的には固定値である。しかし前述の通り、乱数のシード(seed)であるNrは、CPU70によって更新される。この際CPU70は、更新後のNrが過去の値と同一とならないようにする。また不揮発性メモリ75は、メモリカード2の固有情報、例えばシリアルナンバーを不揮発に保持する。シリアルナンバーは、ホスト装置1によって読み出されることが出来る。
2.動作について
次に、上記構成のメモリシステムの動作について説明する。以下では、コンフィギュレーション動作と、ロック/アンロック動作につき、順次説明する。
2.1 電源投入直後のメモリカードの動作について
まず、メモリカード2がホスト装置1に接続されて電源が投入された直後の動作につき、図6を用いて説明する。図6は、メモリカード2の動作を示すフローチャートである。なお、図6における処理は、CPU70が主体となって実行される。
メモリカード2がホスト装置1に接続されると、ホスト装置1はメモリカード2に電源を供給する。そして、ホスト装置1のCPU60は初期化コマンドを発行して、メモリカード2を初期化する。このコマンドに応答して、メモリカード2のCPU70は初期化動作を実行する(ステップS11)。初期化とは、メモリカード2のメモリ空間がホスト装置1からアクセス可能な状態にする処理であり、より具体的にはホスト装置1からリードコマンドを受け付け可能な状態とされる処理である。この状態を、トランスファー状態( “tran” state)と呼ぶ。また初期化処理の過程では、必要な情報が不揮発性メモリ75からレジスタ73に読み出される。更に初期化処理の過程において、ホスト装置1とメモリカード2との間のバスの転送モードが選択される。例えば、バスには複数の転送モードが用意され、転送モードによってデータの転送速度が異なる。この複数の転送モードのうちの任意のいずれかが、初期化処理において選択される。
トランスファー状態に遷移したメモリカード2のCPU70は、当該メモリカード2に少なくとも1つのユーザ・キーが設定されているか否かを判断する(ステップS12)。この判断は、CPU70が不揮発性メモリ75を参照することによって実行可能である。より具体的には、CPU70は、暗号化されたユーザ・キーKufが不揮発性メモリ75に保持されているか否かによって判断出来る。あるいは、ユーザ・キーが設定されているかの情報が、ステータス情報の一部としてレジスタ72に保持されていても良い。
ユーザ・キーが設定されていなければ(ステップS12、NO)、CPU70は、メモリカードをアンロック状態とする(ステップS13)。すなわちホスト装置1は、メモリカードのファイルシステム管理領域50及びファイルシステムデータ領域51の双方に読み出しアクセス及び書き込みアクセスを実行出来る。
アンロック状態では、コンフィギュレーション動作の全てが実行可能とされている(ステップS14)。ユーザ・キーの登録・消去・確認などを行うことができる。またメモリカード2は、デフォルトではコンフィギュレーション・モードをオフされている。従って、例えば別のホスト装置1(第2のホスト装置1)についてユーザ・キーを設定する際には、コンフィギュレーション動作を実行することにより、コンフィギュレーション・モードがオンされる。この場合の処理の流れを次に説明する。
第1のホスト装置1により、ステップS14でユーザ・キーが設定され、コンフィギュレーション・モードをオンにしたメモリカード2が、第2のホスト装置1に接続された際、メモリカード2のCPU70は、不揮発性メモリ75に暗号化されたユーザ・キーKufが保持されていること等に基づき、何らかのユーザ・キーが登録されていることを認識する(ステップS12、YES)。
引き続きCPU70は、コンフィギュレーション・モードがオンされているか否かを判断する(ステップS15)。この判断は、例えばメモリカード2内の例えばレジスタ72に設定されたステータス情報を参照することによって実行可能である。
コンフィギュレーション・モードがオンされていれば(ステップS15、ON)、メモリカード2はロック状態で、且つコンフィギュレーション動作が実行可能な状態である(ステップS16)。第2ホスト装置1はユーザ・キーの設定を行う(ステップS17)。そして、コンフィギュレーション・モードをオフしない限り、ステップS16にとどまる。
ステップS16において、第2のホスト装置1がコンフィギュレーション・モードをオフすると(ステップS18)、メモリカード2はロック状態を維持したまま、コンフィギュレーション動作の実行が禁止される(ステップS19)。
ステップS19では、ホスト装置はアンロック動作を実行出来る(ステップS20)。アンロック動作では、第2ホスト装置1が登録したユーザ・キーを用いてメモリカード2が認証されれば、メモリカード2はアンロック状態に遷移する(ステップS13)。この結果、ホスト装置1はメモリカード2のファイルシステムデータ領域51へのアクセスが可能となる。ファイルシステム管理領域50からのデータの読み出しを禁止するかどうかは実装による。
またアンロック状態では、ホスト装置1はロック動作を実行することにより、メモリカード2をロック状態に遷移させることが出来る。このときユーザ・キーで一致を確認して一致した場合にロック状態にしても良いし、ユーザ・キーの登録があるかどうかだけでロック状態にしても良い。
2.2 コンフィギュレーション動作について
上記コンフィギュレーション動作の詳細について、図7を用いて説明する。図7は、コンフィギュレーション動作の内容を示す表である。
コンフィギュレーション動作は、以下の7つの機能を含む。
(1)“Set User Key”:ユーザ・キーを設定(登録)する機能
(2)“Clear User Key”:登録済みのユーザ・キーを消去する機能
(3)“Verify User Key”:登録済みのユーザ・キーを確認する機能
(4)“Enable Key Ciphering”:キーの暗号化を有効化する機能
(5)“Disable Key Ciphering”:キーの暗号化を無効化する機能
(6)“Enable Config.Mode”:ロック状態でコンフィギュレーション・モードをオンさせるための機能
(7)“Disable Config.Mode”:ロック状態でコンフィギュレーション・モードをオフさせるための機能
ここでは、7つの基本機能を挙げているが、コンフィギュレーション機能の拡張は可能であり、例えば特定のユーザ・キーでアンロック状態にした場合は、メモリ空間のリードのみ許可し、ライトは許可しないというような特別な動作を行う設定を追加することができる。機能の種類について制限はされない。
以下、コンフィギュレーション動作の詳細につき順次説明する。
2.3 “Set User Key”機能について
まず、“Set User Key”機能について説明する。前述の通り、ユーザ・キーはホスト装置毎に固有のユーザ・キーが設定可能である。そして複数のユーザ・キーが設定された後は、何れかの登録されたユーザ・キーを入力することによって、メモリカードを使用可能な状態(アンロック状態)とすることが出来る。長いキーを用いることで、異なるホスト装置で同一キーになる確率はかなり低くなる。
2.3.1 ホスト装置1の動作について
はじめに、“Set User Key機能”実行時におけるホスト装置1の動作につき、図8を用いて説明する。図8はホスト装置1の処理の流れを示すフローチャートであり、これらの処理は、例えばCPU60が主体となって行われる。
図示するように、ホスト装置1のCPU60は、メモリカード2のレジスタ72に対する読み出し命令を発行し、メモリカード2のステータス情報を読み出す(ステップS31)。引き続きCPU60は、キー暗号化が有効か無効かを確認する(ステップS32)。キー暗号化が有効であるか無効であるかの情報は、ステップS31においてステータス情報の一部として読み出される。またキー暗号化の有効化及び無効化は、ユーザ・キーが全く登録されていない状態で設定出来、いったんユーザ・キーが登録されると変更出来ない。但し、ユーザ・キーを全て消去すれば、再び設定可能となる。なお、デフォルトでは無効とされている。
キー暗号化を使用する場合(ステップS33、YES)、ホスト装置1は“Enable Key Ciphering”機能を実行して、キー暗号化を有効にする(ステップS34)。
キー暗号化を使用しない場合(ステップS33、NO)、ホスト装置1は、ユーザ・キーKuを平文のまま、ホストコントローラ65からメモリカード2へ送信する(ステップS35)。このユーザ・キーKuは、管理ユーティリティによってCPU60によって自動的に生成されたものであっても良いし、あるいはユーザからの入力を受け付けたものであっても良い。送信されたユーザ・キーKuは、メモリカード2のレジスタ73にF()で暗号化して保持される(Kuf)。
キー暗号化を使用する場合(ステップS32、YES、ステップS34)、ステップS31で読み出したステータス情報に基づき、使用する変換関数Gh()を決定し、またそれに対応するコードCcgを決定する。カードがサポートする複数のGc()、Gh()対の中からホストが使用可能なものをひとつ選ぶ。そして、変換関数Gh()を用いてユーザ・キーKuを暗号化する(ステップS36)。暗号化ユーザ・キーKutは、Kut = Gh(Kcp, Ku)によって算出される。
引き続きホスト装置1は、決定されたコードCcgと、暗号化ユーザ・キーKutとを、ホストコントローラ65からメモリカード2へ送信する(ステップS37)。これらの情報は、メモリカード2のレジスタ73に保持される。
その後、ホスト装置1は、“Set User Key”機能の実行命令をメモリカード2に発行する。これに応答して、メモリカード2において“Set User Key”機能が実行される(ステップS38)。メモリカード2における処理については、図9を用いて後述する。
その後、メモリカード2のビジー状態が解除されると、ホスト装置1はメモリカード2における処理が完了したことを認識する。ビジー状態とは、メモリカード2がコマンドを受け付け不可能な状態であり、ビジー状態が解除されてレディ状態になると、メモリカード2はコマンドを受け付け可能となる。この情報は、レディ/ビジー信号(またはカードからホストに送られるパケット情報)として、メモリカード2からホスト装置1へ送られる。
引き続きホスト装置1は、メモリカード2の例えばレジスタ72からステータス情報を読み出す(ステップS39)。そしてホスト装置1は、メモリカード2での実行結果を確認する(ステップS40)。その結果、メモリカード2におけるコンフィギュレーション動作が成功していれば(ステップS40、Success)、ホスト装置1は、“Set User Key”機能が正常に完了したことを認識する。他方、失敗していれば(ステップS40、Fail)、ホスト装置1は、“Set User Key”機能が失敗したことを認識する。
2.3.2 メモリカード2の動作について
次に、上記ステップS38におけるメモリカード2の動作につき図9を用いて説明する。図9は、メモリカードの処理を示すフローチャートである。
図示するように、ホスト装置1から“Set User Key”機能の実行命令を受信すると、メモリカード2の例えばCPU70は、キー暗号化が有効か否かを判断する(ステップS51)。キー暗号化が有効であれば(ステップS51、YES)、CPU70は、レジスタ73に設定されている情報を読みだして処理する。ホスト装置1から受信したコードCcgに対応する変換関数Gc()を決定し、更に変換関数F()を用いて、受信した暗号化ユーザ・キーKutから、不揮発性メモリ75に記憶するための暗号化ユーザ・キーKufを算出する(ステップS52)。より具体的には、暗号化ユーザ・キーKufは、Kuf = F(Gc(Kcs, Kut), “Enc”)によって算出される。Kutは、RSA暗号Gcの秘密鍵であるKcsによってKuに復号される。従って、Gc(Kcs, Kut) = Kuである。フラッシュメモリにキーを保存する場合に平文で見えないようにしておく。Kuを変換関数F()により暗号化したKufを算出する。
他方で、キー暗号化が無効であれば(ステップS51、NO)、CPU70は、変換関数F()を用いて、受信した平文のユーザ・キーKuを暗号化してKufを算出する(ステップS53)。より具体的には、暗号化ユーザ・キーKufは、Kuf = F(Ku, “Enc”)によって算出される。
ステップS52またはS53の後、CPU70は、算出した暗号化ユーザ・キーKufを、不揮発性メモリ75に書き込む(ステップS54)。そしてCPU70は、暗号化ユーザ・キーKufの不揮発性メモリ75への書き込みが成功したか否かを確認する(ステップS55)。
成功していれば(ステップS55、YES)、CPU70は、コンフィギュレーション動作が成功したことを示すステータス情報を、例えばレジスタ72に格納する(ステップS56)。他方で失敗していれば(ステップS55、NO)、CPU70は、コンフィギュレーション動作が失敗したことを示すステータス情報をレジスタ72に格納する(ステップS57)。
その後、CPU70はビジー状態を解除して、コンフィギュレーション動作を終了する。
2.3.3 “Set User Key”シーケンスについて
次に、上記“Set User Key”機能実行時のシーケンスについて説明する。本説明は、上記2.3.1及び2.3.2の説明を簡略化してまとめたものである。
図10は、キー暗号化が有効とされている場合の“Set User key”シーケンスを示す。
図示するように、まずホスト装置1がユーザ・キーKuを決定する。前述の通り、ユーザ・キーKuは管理ユーティリティによって生成されるか、あるいはユーザからの入力を受け付けたものである。そしてホスト装置1は、ユーザ・キーKuを変換関数F()で暗号化することにより、暗号化ユーザ・キーKufを生成し、これをキー保存領域63に保持させる。なおホスト装置1は、キー保存領域63から暗号化ユーザ・キーを読み出し、これを変換関数F()で復号すれば、平文のユーザ・キーKuを得ることが出来る。
引き続きホスト装置1は、カード情報(暗号化のプロトコル/アルゴリズム(Gh()リスト)や公開鍵Kcp)をメモリカード2から読み出す。そしてホスト装置1は、利用可能な変換関数Gh()をGh()リストから選択し、ユーザ・キーKuを暗号化して、暗号化ユーザ・キーKut(=Gh(Kcp, Ku))を算出する。更にホスト機器1は、選択したGh()を示すコードCcgと暗号化ユーザ・キーKutとをメモリカード2に送信すると共に(レジスタ73に設定する)、生成したユーザ・キーKuの登録をメモリカード2に命令する。
メモリカード2は、レジスタ73に受信したコードCcgに基づいて変換関数Gc()を選択し、対応する秘密鍵Kcsで暗号化ユーザ・キーKutを解読(復号)して、平文のユーザ・キーKuを得る。引き続きメモリカード2は、キー変換関数F()を用いて、暗号化ユーザ・キーKuf(=F(Ku, “Enc”))を生成し、不揮発性メモリ75に記憶する。そしてメモリカード2は、登録完了または登録失敗をホスト装置1に通知する。
以上によって、ホスト装置1とメモリカード2との間で、ユーザ・キーKuが登録される。なお、暗号関数Ghとしては例えばRSA2048の暗号化が使用され、Gcとしては例えばRSA2048の復号化が使用される。
図11は、キー暗号化が無効とされている場合の“Set User key”シーケンスを示す。暗号化が無効であるというステータス情報は、ステータスレジスタ72にあるが、すでにホスト装置1はこのレジスタを読んでいると想定しているため、図11では省略されている。
図示するように、まずホスト装置1がユーザ・キーKuを決定する。前述の通り、ユーザ・キーKuは、管理ユーティリティによって生成されるか、あるいはユーザからの入力を受け付けたものである。そしてホスト装置1は、ユーザ・キーKuを変換関数F()で暗号化することにより、暗号化ユーザ・キーKufを生成し、これをキー保存領域63に保持させる。
引き続きホスト装置1は、平文のユーザ・キーKuをメモリカード2に送信すると共に、生成したユーザ・キーKuの登録をメモリカード2に命令する。
メモリカード2は、キー変換関数F()を用いて、暗号化ユーザ・キーKuf(=F(Ku, “Enc”))を生成し、不揮発性メモリ75に記憶する。そしてメモリカード2は、登録完了または登録失敗をホスト装置1に通知する。
2.4 “Clear/Verify User Key”、“Enable/Disable Key Ciphering”、及び“Enable/Disable Config.Mode”機能について
次に、“Clear User Key”機能、“Verify User Key”機能、“Enable Key Ciphering”機能、“Disable Key Ciphering”機能、“Enable Key Config.Mode”機能、及び“Disable Config.Mode”機能について説明する。“Clear User Key”機能は、登録されたユーザ・キーをメモリカード2から消去する機能である。“Verify User Key”機能は、登録されたユーザ・キーが有効か否か(正しいか否か)を確認する機能である。“Enable Key Ciphering”及び“Disable Key Ciphering”機能はそれぞれ、キー暗号化を有効及び無効にする機能である。“Enable Config.Mode”及び“Disable Config.Mode”機能はそれぞれ、コンフィギュレーション・モードをオン及びオフする機能である。
2.4.1 ホスト装置1の動作について
上記“Clear/Verify User Key”、“Enable/Disable Key Ciphering”機能、及び“Enable/Disable Config.Mode”機能実行時におけるホスト装置1の動作につき、図12を用いて説明する。図12はホスト装置1の処理の流れを示すフローチャートであり、これらの処理は、例えばCPU60が主体となって行われる。
図示するように、ホスト装置1のCPU60は、メモリカード2のレジスタ72に対する読み出し命令を発行し、メモリカード2のステータス情報を読み出す(ステップS61)。実行すべき機能が“Clear User Key”または“Verify User Key”である場合(ステップS62、“Clear User Key” or “Verify User Key”)、ステップS63の処理に進む。そしてCPU60は、キー暗号化が有効か無効かを確認する(ステップS63)。キー暗号化が無効であれば(ステップS63、NO)、ホスト装置1は、ユーザ・キーKuを平文のまま、ホストコントローラ65からメモリカード2へ送信する(ステップS64)。送信されたユーザ・キーKuは、メモリカード2のレジスタ73に保持される。
キー暗号化が有効であれば(ステップS63、NO)、ステップS61で読み出したステータス情報(H()リスト)に基づき、使用する変換関数H()を決定し、またそれに対応するコードCchを決定する。そして、変換関数H()を用いてユーザ・キーKuを暗号化して、チャレンジ番号Ntを算出する(ステップS65)。チャレンジ番号Ntは、Nt = H(Nr, Ku)によって算出される。乱数Nrもまた、ステータス情報としてメモリカード2から読み出された情報である。そしてホスト装置1は、決定されたコードCchと、チャレンジ番号Ntとを、ホストコントローラ65からメモリカード2へ送信する(ステップS66)。これらの情報は、メモリカード2のレジスタ73に保持される。
その後、ホスト装置1は、“Clear User Key”機能または“Verify User Key”機能の実行命令をメモリカード2に発行する。これに応答して、メモリカード2において“Clear User Key”機能または“Verify User Key”機能が実行される(ステップS70)。メモリカード2における処理については、図13を用いて後述する。
メモリカード2のビジー状態が解除されると、ホスト装置1はメモリカード2における処理が完了したことを認識する。そしてホスト装置1は、メモリカード2の例えばレジスタ72からステータス情報を読み出す(ステップS71)。そしてホスト装置1は、メモリカード2での実行結果を確認する(ステップS72)。その結果、メモリカード2におけるコンフィギュレーション動作が成功していれば(ステップS72、Success)、ホスト装置1は、“Clear User Key”または“Verify User Key”が正常に完了したことを認識する。すなわち、“Clear User Key”機能実行時であれば、ステップS64で送信されたユーザ・キーKuが消去されたことを認識する。他方で、“Verify User Key”機能実行時であれば、ステップS64またはステップS66で送信されたユーザ・キーKuは正しいユーザ・キーであることを認識する。
他方で、ステップS70においてコンフィギュレーション動作が失敗していれば(ステップS72、Fail)、ホスト装置1は、“Clear User Key”または“Verify User Key”が失敗したことを認識する。すなわち、“Clear User Key”機能実行時であれば、ステップS64で送信されたユーザ・キーKuは消去されなかったことを認識する。他方で、“Verify User Key”機能実行時であれば、ステップS64またはステップS66で送信されたユーザ・キーKuは誤ったユーザ・キーであることを認識する。
実行すべき機能が“Enable Key Ciphering”、“Disable Key Ciphering”、“Enable Config.Mode”、または“Disable Config.Mode”である場合(ステップS62、Others)、ユーザ・キーKuは不要であるので、ステップS64〜S66の処理は省略される。そして、“Enable Key Ciphering”機能または“Disable Key Ciphering”機能が実行される場合には、CPU60は、キー暗号化のイネーブル命令またはディセーブル命令を発行し、メモリカード2に送信する(ステップS68)。他方で、“Enable Config.Mode”機能または“Disable Config.Mode”機能が実行される場合には、CPU60は、Config.Modeのイネーブル命令またはディセーブル命令を発行し、メモリカード2に送信する(ステップS69)。
これらの命令に応答してメモリカード2では、“Enable Key Ciphering”、“Disable Key Ciphering”、“Enable Config.Mode”、または“Disable Config.Mode”動作が実行される(ステップS70)。これらの詳細は、図16及び図17で後述する。
その後はステップS71に進む。なお、前述の通り、キー暗号化の設定が可能なのはユーザ・キーが登録されていない場合である。よって、ユーザ・キーが登録されている場合に“Enable/Disable Key Ciphering”機能を実行しようとした場合には、その動作は失敗したものとしてメモリカード2からホスト装置1に通知される。
2.4.2 “Clear/Verify User Key”のカードの動作について
次に、上記ステップS70における、“Clear/Verify User Key”機能実行時のカードの動作につき、図13を用いて説明する。図13は、メモリカード2の処理を示すフローチャートである。
図示するように、ホスト装置1から“Clear/Verify User Key”機能の実行命令を受信すると、メモリカード2の例えばCPU70は、キー暗号化が有効か否かを判断する(ステップS81)。キー暗号化が有効であれば(ステップS81、YES)、CPU70は、ホスト装置1から受信したコードCchに対応する変換関数H()を決定し、更に変換関数F()、不揮発性メモリ75に保持されている暗号化ユーザ・キーKuf、及びレジスタ72にステータス情報として保持されている乱数Nrを用いて、期待値Neを算出する(ステップS82)。より具体的には、期待値Neは、Ne = H(Nr, F(Kuf, “Dec”))によって算出される。引き続きCPU70は、ホスト装置1から受信したチャレンジ番号Ntと、算出した期待値Neとを比較する(ステップS83)。
キー暗号化が無効であれば(ステップS81、NO)、CPU70は、変換関数F()を用いて、受信した平文のユーザ・キーKuを暗号化して比較値Kuvを算出する(ステップS84)。より具体的には、比較値Kuvは、Kuv = F(Ku, “Enc”)によって算出される。引き続きCPU70は、不揮発性メモリ75から読み出した暗号化ユーザ・キーKufと、算出した比較値Kuvとを比較する(ステップS85)。
比較の結果、両者が不一致であった場合(ステップS86、NO)、CPU70は、コンフィギュレーション動作が失敗したことを示すステータス情報を、例えばレジスタ72に格納する(ステップS91)。
比較の結果、両者が一致した場合(ステップS86、YES)、ステップS87の処理に進む。すなわち、実行すべき機能が“Clear User Key”であった場合(ステップS87、Clear)、ステップS83またはS85で一致した暗号化ユーザ・キーKufを、不揮発性メモリ75から消去する(ステップS88)。消去に失敗した場合には(ステップS89、YES)、ステップS91に進む。消去に成功した場合には(ステップS89、NO)、CPU70は、コンフィギュレーション動作が成功したことを示すステータス情報をレジスタ72に格納する(ステップS90)。実行すべき機能が“Verify User Key”であった場合には(ステップS87、Verify)、ステップS90に進む。
その後、CPU70はビジー状態を解除して、コンフィギュレーション動作を終了する。
2.4.3 “Clear User Key”シーケンスについて
次に、上記“Clear User Key”機能実行時のシーケンスについて説明する。本説明は、上記2.4.1及び2.4.2における“Clear User Key”機能の説明を簡略化してまとめたものである。
図14は、キー暗号化が有効とされている場合の“Clear User key”シーケンスを示す。
図示するように、まずホスト装置1は、カード情報(暗号化のプロトコル/アルゴリズム(H()リスト)や乱数Nr)をメモリカード2から読み出す。そしてホスト装置1は、利用可能な変換関数H()をH()リストから選択し、乱数Nrを用いてユーザ・キーKuを暗号化して、チャレンジ番号Nt(=H(Nr, Ku))を算出する。ここで、暗号化されるユーザ・キーKuは、ホスト装置1が消去を望むユーザ・キーである。更にホスト装置1は、選択したH()を示すコードCcgと、算出したチャレンジ番号Ntとをメモリカード2に送信すると共に、ユーザ・キーKuの消去をメモリカード2に命令する。
メモリカード2は、不揮発性メモリ75に記憶されている暗号化ユーザ・キーKufを読み出し、変換関数F()によって解読(復号)して、平文のユーザ・キーKuを得る。引き続きメモリカード2は、受信したコードCcgに基づいて変換関数H()を選択し、期待値Ne(=H(Nr, F(Kuf, “Dec”)))を算出する。
引き続きメモリカード2は、チャレンジ番号Ntと期待値Neとを比較し、対応する暗号化ユーザ・キーKufを不揮発性メモリ75から消去する。なお、不揮発性メモリ75に複数の暗号化ユーザ・キーKufが記憶されている場合には、それぞれにつき期待値Neを算出し、各期待値Neとチャレンジ番号Ntとを比較する。そして、複数の期待値Neのうちで、チャレンジ番号Ntと一致したものに対応する暗号化ユーザ・キーKufを消去する。そしてメモリカード2は、ユーザ・キーの消去完了または消去失敗をホスト装置1に通知する。
以上によって、ホスト装置1はメモリカード2に登録されているユーザ・キーを消去出来る。
図15は、キー暗号化が無効とされている場合の“Clear User key”シーケンスを示す。暗号化が無効であるというステータス情報は、ステータスレジスタ72にあるが、すでにホスト装置1はこのレジスタを読んでいると想定しているため、図15では省略されている。
図示するように、まずホスト装置1は、平文のユーザ・キーKuをメモリカード2に送信すると共に、ユーザ・キーKuの消去をメモリカード2に命令する。
するとメモリカード2は、受信した平文のユーザ・キーKuを、変換関数F()を用いて暗号化して、比較値Kuvを得る。引き続きメモリカード2は、比較値Kuvと、不揮発性メモリ75に保持される暗号化ユーザ・キーKufとを比較し、暗号化ユーザ・キーKufを不揮発性メモリ75から消去する。そしてメモリカード2は、ユーザ・キーの消去完了または消去失敗をホスト装置1に通知する。
なお、図示はしていないが、Kuv=F(Kuf, "Dec")として計算して、KuvとKuとを比較する方法もある。
なお、“Verify User Key”機能実行の際のシーケンスは、図14及び図15においてKufの消去処理を省略したものに相当するので、詳細な説明は省略する。
2.4.4 “Enable/Disable Key Ciphering”のカードの動作について
次に、図12のステップS70における“Enable/Disable Key Ciphering”機能実行時のカードの動作につき、図16を用いて説明する。図16はメモリカード2の処理を示すフローチャートである。
図示するように、ホスト装置1から“Enable Key Ciphering”機能または“Disable Key Ciphering”機能の実行命令を受信すると、メモリカード2の例えばCPU70は、ユーザ・キーが登録されているか否かを判断する(ステップS101)。既にいずれかのホスト装置1によってユーザ・キーが登録されている場合(ステップS101、NO)、キー暗号化のオン/オフは変更出来ないため、処理はステップS106に進み、当該機能の実行は不成功となる。すなわちCPU70は、コンフィギュレーション動作が失敗したことを示すステータス情報を、例えばレジスタ72に格納する。
ユーザ・キーが登録されていない場合(ステップS101、YES)、“Enable/Disable Key Ciphering”機能が実行可能である。“Enable Key Ciphering”機能の実行命令を受信した場合(ステップS102、Set Enable mode)、CPU70はキー暗号化を有効に設定し、その旨の情報をレジスタ72にステータス情報として格納する(ステップS103)。“Disable Key Ciphering”機能の実行命令を受信した場合(ステップS102、Set Disable mode)、CPU70はキー暗号化を無効に設定し、その旨の情報をレジスタ72にステータス情報として格納する(ステップS104)。
引き続きCPU70は、コンフィギュレーション動作が成功したことを示すステータス情報を、例えばレジスタ72に格納する(ステップS105)。その後、CPU70はビジー状態を解除して、コンフィギュレーション動作を終了する。
2.4.5 “Enable/Disable Config.Mode”のカードの動作について
次に、図12のステップS70における“Enable/Disable Config.Mode”機能実行時のカードの動作につき、図17を用いて説明する。図17はメモリカード2の処理を示すフローチャートである。
図示するように、ホスト装置1から“Enable Config.Mode”機能または“Disable Config.Mode”機能の実行命令を受信すると、メモリカード2の例えばCPU70は、ユーザ・キーが登録されているか否かを判断する(ステップS111)。ユーザ・キーが登録されていない場合(ステップS111、NO)、メモリカード2はアンロック状態にある。従ってホスト装置1は、当該メモリカード2との間で自由にコンフィギュレーション動作を実行出来る。よって、コンフィギュレーション・モードを設定する必要が無いため、処理はステップS116に進み、当該機能の実行は不成功となる。すなわちCPU70は、コンフィギュレーション動作が失敗したことを示すステータス情報を、例えばレジスタ72に格納する。
ユーザ・キーが登録されている場合(ステップS111、YES)、“Enable/Disable Config.Mode”機能が実行可能である。“Enable Config.Mode”機能の実行命令を受信した場合(ステップS112、Set Enable mode)、CPU70は、コンフィギュレーション・モードをオンに設定する(ステップS113)。“Disable Config.Mode”機能の実行命令を受信した場合(ステップS112、Set Disable mode)、CPU70は、コンフィギュレーション・モードをオフに設定する(ステップS114)。
ステップS113またはS114の後、CPU70は、コンフィギュレーション動作が成功したことを示すステータス情報を、例えばレジスタ72に格納する(ステップS115)。その後、CPU70はビジー状態を解除して、コンフィギュレーション動作を終了する。
2.5 アンロック動作について
次に、本実施形態に係るメモリシステムにおいて、ロック状態のメモリカード2をアンロック状態に遷移させるためのアンロック動作について説明する。
2.5.1 アンロック動作の種類について
本実施形態では、3種類のアンロック動作が用意されている。この点につき、図18を用いて説明する。図18は、3種類のアンロック動作が如何にして選択されるかを示すフローチャートである。
図示するように、ユーザ・キーを知っている場合には(ステップS121、YES)、ユーザ・キーを用いたアンロック動作(UNLOCK(U)動作)が実行される(ステップS123)。ユーザ・キーを知っている場合とは、管理ユーティリティによって生成されたユーザ・キーKuがホスト装置1に正しく保持されている場合、またはユーザによって入力された正しいユーザ・キーを受け付けた場合等である。
ユーザ・キーを忘れた場合であっても(ステップS121、NO)、ユーザがマスター・キーを知っていれば(ステップS122、NO)、それを用いたアンロック動作(UNLOCK(M)動作)が可能である(ステップS124)。すなわち、ユーザから正しいマスター・キーの入力を受け付けることで、UNLOCK(M)動作が実行され、メモリカード2をアンロック状態に遷移させることが出来る。但し、UNLOCK(M)動作を実行した場合には、UNLOCK(U)動作と異なり、メモリカード2に登録された全てのユーザ・キーが消去される。但し、ファイルシステム管理領域50とファイルシステムデータ領域51は消去されない。
マスター・キーを紛失した場合(ステップS122、YES)、消去動作を行うことで、メモリカード2をロック状態からアンロック状態に遷移させることが可能である(ステップS125)。この場合、全てのユーザ・キーが消去されるだけでなく、管理領域50の少なくとも一部の情報も消去される。メモリ領域51のすべてを消去するとかなりの時間がかかってしまうため、ユーザ・データ領域の一部を消去するか、コントローラ32が例えば論理アドレスから物理アドレスを変換するテーブルをシャッフルする方法で、データを読み出したとしても意味のないデータにすることで、データ無効化の時間を短縮する。
2.5.2 ホスト装置1の動作について
次に、上記アンロック動作の詳細につき説明する。図19は、ユーザ・キーまたはマスター・キーを用いたアンロック動作時(UNLOCK(U)及びUNLOCK(M)動作時)におけるホスト装置1の処理を示すフローチャートである。このアンロック動作は、メモリカード2がロック状態にあり、且つコンフィギュレーション・モードがオフされている場合に実行可能である。
図示するように、ホスト装置1のCPU60は、メモリカード2のレジスタ72に対する読み出し命令を発行し、メモリカード2のステータス情報を読み出す(ステップS131)。ステータス情報は、キー暗号化が有効か否か、また有効な場合には使用可能な暗号方式の種類を示す情報(H()リスト)、公開鍵(Kcp)、及び乱数(Nr)を含む。引き続きCPU60は、読み出したステータス情報に基づいて、キー暗号化が有効か無効かを確認する(ステップS132)。
キー暗号化が無効な場合(ステップS132、Not Used)、ホスト装置1は、ユーザ・キーKuまたはマスター・キーKmを平文のまま、ホストコントローラ65からメモリカード2へ送信する(ステップS133)。
キー暗号化が有効な場合(ステップS132、Used)、ホスト装置1のCPU60は、ステップS131で読み出したH()リストに基づき、使用する変換関数H()を決定し、またそれに対応するコードCchを決定する。そして、変換関数H()を用いて、ユーザ・キーKuを乱数Nrで暗号化して、チャレンジ番号Ntを算出する(ステップS134)。すなわち、チャレンジ番号Ntは、Nt = H(Nr, Ku)によって算出される。
引き続きホスト装置1は、決定されたコードCchと、算出されたチャレンジ番号Ntとを、ホストコントローラ65からメモリカード2へ送信する(ステップS133)。これらの情報は、メモリカード2のレジスタ73に保持される。
なお、使用可能な暗号方式が1種類で確定している場合には、それを識別する必要が無いので、コードCchを必ずしも送る必要は無い。また、キー暗号化が有効な場合であっても、マスター・キーの暗号化は行わないようにすることも出来る。この場合には、マスター・キーは暗号化しないことを、例えばホスト装置1とメモリカード2との間で予め取り決めをしておけば良い。この場合、実装を容易に出来るメリットがある。
その後、ホスト装置1は、アンロック動作(UNLOCK(U), UNLOCK(M))の実行命令をメモリカード2に発行する。これに応答して、メモリカード2においてアンロック動作が実行される(ステップS136)。メモリカード2における処理については、図20を用いて後述する。
メモリカード2のビジー状態が解除されると、ホスト装置1はメモリカード2における処理が完了したことを認識する。そしてホスト装置1は、メモリカード2のレジスタ72からステータス情報を読み出す(ステップS137)。ステータス情報に含まれるステート情報が、メモリカード2はアンロック状態にあることを示していれば(ステップS138、Unlocked)、ホスト装置1はアンロック動作に成功したことを認識する。他方で、ステート情報が、メモリカード2はロック状態にあることを示していれば(ステップS138、Locked)、ホスト装置1はアンロック動作に失敗したことを認識する。
2.5.3 メモリカード2の動作について
次に、上記ステップS136におけるメモリカード2の動作につき図20を用いて説明する。図20は、メモリカード2における処理を示すフローチャートである。
図示するように、ホスト装置1からアンロック動作(UNLOCK(U), UNLOCK(M))の実行命令を受信すると、メモリカード2の例えばCPU70は、当該アンロック動作がユーザ・キーを用いたアンロック動作であるか、それともマスター・キーを用いたアンロック動作であるかを判断する(ステップS141)。
ユーザ・キーを用いたアンロック動作の場合(ステップS141、No: Ku or Nt)、CPU70は、キー暗号化が有効か否かを判断する(ステップS142)。キー暗号化が有効であれば(ステップS142、Enabled: Nt)、CPU70は、ホスト装置1から受信したコードCchに対応する変換関数H()を決定し、更に変換関数F()、不揮発性メモリ75に保持されている暗号化ユーザ・キーKuf、及びレジスタ72にステータス情報として保持されている乱数Nrを用いて、期待値Neを算出する(ステップS143)。より具体的には、期待値Neは、Ne = H(Nr, F(Kuf, “Dec”))によって算出される。引き続きCPU70は、ホスト装置1から受信したチャレンジ番号Ntと、算出した期待値Neとを比較する(ステップS144)。
比較の結果、両者が一致した場合(ステップS147、YES)、CPU70は、メモリカード2のロック状態を解除してアンロック状態にする(ステップS148)。そしてCPU70は、その旨の情報をレジスタ72にステータス情報として格納すると共に、ビジー状態を解除してアンロック動作を終了する。複数のユーザ・キーが登録されている場合、複数のKufがあるので、複数のNeを計算する必要がある。この場合、Ntと一致したNeが対象のユーザ・キーとなる。あるキーの一致を検出したら、残りのキーについては計算・比較は省略しても良い。
ステップS144の比較の結果、(すべてのNeについて)両者が不一致であった場合(ステップS147、NO)、CPU70は、メモリカード2をロック状態のまま維持させる(ステップS149)。そしてCPU70は、ビジー状態を解除してアンロック動作を終了する。
ステップS142においてキー暗号化が無効であれば(ステップS142、Disabled: Ku)、CPU70は、変換関数F()を用いて、受信した平文のユーザ・キーKuを暗号化して期待値Kuvを算出する(ステップS145)。より具体的には、期待値Kuvは、Kuv = F(Ku, “Enc”)によって算出される。引き続きCPU70は、不揮発性メモリ75から読み出した暗号化ユーザ・キーKufと、算出した期待値Kuvとを比較する(ステップS146)。両者が一致すれば(ステップS147、YES)、ステップS148に進み、不一致であれば(ステップS147、NO)、ステップS149に進む。複数のユーザ・キーが登録されている場合、複数のKufが存在するため、これらの複数のKufと、算出したKuvとが比較される。いずれかのKufがKuvと一致したら、残りのキー(Kuf)については計算・比較は省略しても良い。
ステップS141において、受信したキーがマスター・キーであった場合(ステップS141、YES:Km)、CPU70は、変換関数F()を用いて、受信した平文のマスター・キーKmを変換して比較値Kmvを算出する(ステップS150)。より具体的には、比較値Kmvは、Kmv = F(Km, “Enc”)によって算出される。引き続きCPU70は、不揮発性メモリ75から読み出したマスター・キーの期待値Kmfと、算出した比較値Kmvとを比較する(ステップS151)。両者が一致すれば(ステップS152、YES)、CPU70は、不揮発性メモリ75に記録されている全てのユーザ・キーKufを消去して(ステップS153)、ステップS148に進む。不一致であれば(ステップS152、NO)、ステップS149に進む。
2.5.4 “UNLOCK(U)”及び“UNLOCK(M)”シーケンスについて
次に、上記“UNLOCK(U)”及び“UNLOCK(M)”動作実行時のシーケンスについて説明する。
図21は、キー暗号化が有効とされている場合の“UNLOCK(U)”シーケンスを示す。
図示するように、まずホスト装置1は、カード情報(暗号化のプロトコル/アルゴリズム(H()リスト)や乱数Nr)をメモリカード2の例えばレジスタ72から読み出す。そしてホスト装置1は、利用可能な変換関数H()をH()リストから選択し、乱数Nrを用いてユーザ・キーKuを暗号化して、チャレンジ番号Nt(=H(Nr, Ku))を算出する。更にホスト機器1は、UNLOCK(U)コマンドを発行する。そしてホスト機器1は、選択したH()を示すコードCcgとチャレンジ番号Ntとをメモリカード2に送信すると共に、UNLOCK(U)コマンドをメモリカード2に送信する。
メモリカード2は、不揮発性メモリ75に記憶されている暗号化ユーザ・キーKufを読み出し、変換関数Fによって解読(復号)して、平文のユーザ・キーKuを得る。引き続きメモリカード2は、受信したコードCchに基づいて変換関数H()を選択し、期待値Ne(=H(Nr, F(Kuf, “Dec”)))を算出する。
引き続きメモリカード2は、チャレンジ番号Ntと期待値Neとを比較する。“Clear User Key”シーケンスの際にも説明した通り、不揮発性メモリ75に複数の暗号化ユーザ・キーKufが記憶されている場合には、それぞれにつき期待値Neを算出し、各期待値Neとチャレンジ番号Ntとを比較する。そして、いずれかの期待値Neがチャレンジ番号Ntと一致すれば、メモリカード2は当該ホスト装置1を認証する。そしてメモリカード2は、ロック状態からアンロック状態に遷移する。そしてメモリカード2は、アンロック状態への遷移完了をホスト装置1に通知する。
図22は、キー暗号化が無効とされている場合の“UNLOCK(U)”シーケンスを示す。
暗号化が無効であるというステータス情報は、ステータスレジスタ72にあるが、すでにホスト装置1はこのレジスタを読んでいると想定しているため、図22では省略されている。図示するように、まずホスト装置1はUNLOCK(U)コマンドを発行する。そして平文のユーザ・キーKuと共に、UNLOCK(U)コマンドをメモリカード2に送信する。
するとメモリカード2は、受信した平文のユーザ・キーKuを、変換関数F()を用いて暗号化して、比較値Kuvを得る。引き続きメモリカード2は、比較値Kuvと、不揮発性メモリ75に保持される暗号化ユーザ・キーKufとを比較する。そして、いずれかのKufがKuvと一致すれば、メモリカード2は当該ホスト装置1を認証する。そしてメモリカード2は、ロック状態からアンロック状態に遷移する。そしてメモリカード2は、アンロック状態への遷移完了をホスト装置1に通知する。
なお、図示はしていないが、Kuv=F(Kuf, "Dec")として計算して、KuvとKuとを比較する方法もある。
図23は、“UNLOCK(M)”シーケンスであり、特にマスター・キーKmが暗号化されない場合について示している。
図示するように、まずホスト装置1はUNLOCK(M)コマンドを発行する。そして平文のマスター・キーKmと共に、UNLOCK(M)コマンドをメモリカード2に送信する。
するとメモリカード2は、受信したマスター・キーKmを変換関数F()により変換して、比較値Kmvを得る。引き続きメモリカード2は、不揮発性メモリ75に記憶されている期待値Kmfと、算出した比較値Kmvとを比較する。そして、期待値KmfがKmvと一致すれば、メモリカード2は当該ホスト装置1を認証する。そしてメモリカード2は、不揮発性メモリ75内に保持されている全てのユーザ・キーKufを消去すると共に、ロック状態からアンロック状態に遷移する。そしてメモリカード2は、アンロック状態への遷移完了をホスト装置1に通知する。
なお、図示はしていないが、Kmv=F(Kmf, "Dec")として計算して、KmvとKmとを比較する方法もある。
2.5.5 マスター・キーを紛失した場合のアンロック動作について
次に、図18のステップS125、すなわちマスター・キーKmを紛失した場合のアンロック動作について説明する。
前述の通り、ユーザ・キーKu及びマスター・キーKmの両方を紛失した場合、ユーザは、メモリカード2におけるデータの初期化を行うことで、メモリカード2をアンロック状態に遷移させることが出来る。図24は、その際のホスト装置1及びメモリカード2における処理のシーケンスを示している。
データの初期化と共にメモリカード2をアンロックする命令をユーザから受け付けたホスト装置1は、消去コマンドをメモリカード2に対して発行する。この消去コマンドは、通常のメモリデータ消去コマンドとは別に用意された、アンロックコマンドの一種である。
するとメモリカード2は、不揮発性メモリ75に記憶されている全てのユーザ・キーKufを消去する。更に、管理領域50内のファイルシステム情報の一部を消去する。ユーザ・データ領域は、一部を消去するかデータをシャッフルするなどしてデータ無効化の時間を短縮する。重要なデータはホストがファイルを個別に暗号化しておくことで、データの漏洩は回避できる。そして、メモリカード2は、ロック状態からアンロック状態に遷移する。その後メモリカード2は、アンロック状態への遷移完了をホスト装置1に通知する。
消去コマンドを受信したメモリカードは、図2のFAT1、FAT2付近のデータを消去することで、ホスト装置1からメモリカード2のデータを読めなくする。ホスト装置1は通常このカードを「未フォーマットカード」とし識別し、カードは再フォーマットすると再び使用可能になる。メモリカード2は、あまり厳密にファイルシステム領域50の消去を行う必要はなく、メモリ容量から、おおよそ必要な管理領域50の大きさが予測できるので、少なくともFAT1、FAT2を含む領域のデータを消去するか、未使用を示すFATコードを上書きすれば良い。したがってメモリカード2が、ファイルシステムのフォーマットを認識する必要はない。ファイルシステムは、FATだけでなくビットマップで構成される場合もある。
2.6 ロック動作について
次に、本実施形態に係るメモリシステムにおいて、アンロック状態のメモリカード2をロック状態に遷移させるためのロック動作について説明する。
2.6.1 ホスト装置1の動作について
本実施形態に係るロック動作につき、まずホスト装置1における処理につき図25を用いて説明する。図25は、ロック動作時におけるホスト装置1の処理を示すフローチャートである。なおロック動作は、メモリカード2がアンロック状態にある際に実行可能である。
まず、ホスト装置1のCPU60は、メモリカード2のレジスタ72のステータス情報を読み出し、メモリカード2がアンロック状態であることを確認する。その後、CPU60はロック命令を発行し、このロック命令をホストコントローラ65からメモリカード2へ送信する。
すると、メモリカード2においてロック動作が実行される(ステップS161)。そして、ビジー信号が解除されて、メモリカード2でのロック動作の終了が通知されると、ホスト装置1のCPU60は、メモリカード2からステータス情報を再度読み出し(ステップS162)、ロック動作が成功したか否かを確認する(ステップS163)。
ステータス情報に含まれるステート情報が、メモリカード2がロック状態にあることを示していれば、ロック動作は成功であり、そうでなければロック動作は失敗となる。
2.6.2 メモリカード2の動作について
次に、メモリカード2の動作につき説明する。図26はメモリカード2における処理を示すフローチャートであり、図25におけるステップS161で実行される処理内容に相当する。
図示するように、メモリカード2のCPU70は、まずユーザ・キーが登録されているか否かを判断する(ステップS171)。この判断は、不揮発性メモリ75にユーザ・キーKufが保持されているか否かを確認することによって実行しても良いし、あるいはレジスタ72のステータス情報から確認することによって実行しても良い。
ユーザ・キーが登録されていれば(ステップS171、YES)、CPU70はメモリカード2をロック状態に遷移させる(ステップS172)。ユーザ・キーが登録されていなければ(ステップS171、NO)、CPU70はメモリカード2をアンロック状態に維持させる(ステップS173)。
その後、レジスタ72のステータス情報を更新すると共に、ビジー状態を解除して、ロック動作の終了をホスト装置1に通知する。
3.動作の具体例について
上記メモリシステムのユーザ・キーの登録動作の具体例につき、図27乃至図32を用いて説明する。図27乃至図32はメモリシステムの模式図であり、2つのホスト装置1−1及び1−2でユーザ・キーを登録し、その後ホスト装置1−1でアンロック動作が行われるまでの様子を順次示している。
図27に示すように、ユーザ・キーの登録されていない第1メモリカード2−1が、第1ホスト装置1−1に接続される。すると図28に示すように、メモリカード2−1はアンロック状態にある。よってメモリカード2−1は、アンロック状態で初期化を実行し、トランスファー状態に遷移する。次に第1ホスト装置1−1は、コンフィギュレーション動作の“Set User Key”機能を実行して、第1ユーザ・キーKu1を登録する。第1ホスト装置1−1は登録した第1ユーザ・キーKu1を暗号化し、暗号化第1ユーザ・キーKuf1(=F(Ku1, "Enc"))を第1ホスト装置1−1のレジスタ63に保持し、またメモリカード2−1が暗号化した暗号化第1ユーザ・キーKuf1が、メモリカード2−1の不揮発性メモリ75に保持される。引き続き第1ホスト装置1−1は、第2ホスト装置1−2でユーザ・キーを登録するため、コンフィギュレーション動作の“Enable Config.Mode”機能を実行して、コンフィギュレーション・モードをオンにする。
次に図29に示すように、メモリカード2−1が第2ホスト装置1−2に接続される。すると図30に示すように、メモリカード2−1にはユーザ・キーKu1が登録されているので、メモリカード2−1はロック状態にある。よってメモリカード2−1は、ロック状態で初期化を実行し、トランスファー状態に遷移する。メモリカード2−1がトランスファー状態に遷移することで、ロック状態にあるにも関わらず、第2ホスト装置1−2はファイルシステム情報の少なくとも一部を読み出すことが出来る。そのため、第2ホスト装置1−2はメモリカード2−1を認識することができ、ドライブとしてドライブレターを割り当てることが出来る。またメモリカード2−1はコンフィギュレーション・モードがオンとされているので、第2ホスト装置1−2はコンフィギュレーション動作を実行することが出来る。従って第2ホスト装置1−2は、コンフィギュレーション動作の“Set User Key”機能を実行して、第2ユーザ・キーKu2を登録する。第2ホスト装置1−2は、登録した第2ユーザ・キーKu2を暗号化し、暗号化第2ユーザ・キーKuf2(=F (Ku2, "Enc"))を第2ホスト装置1−2のレジスタ63に保持し、またメモリカード2−1によって暗号化した暗号化第2ユーザ・キーKuf2が、メモリカード2−1の不揮発性メモリ75に保持される。第2ユーザ・キーKu2は、第1ユーザ・キーKu1と同じでも異なっていても良い。通常第1ホスト装置1−1と第2ホスト装置1−2の間で情報交換ができない場合、異なるキーが用いられる(同じキーにするのが難しい)。引き続き第2ホスト装置1−2は、コンフィギュレーション動作の“Disable Config.Mode”機能を実行して、コンフィギュレーション・モードをオフにする。
次に図31に示すように、メモリカード2−1が第1ホスト装置1−1に接続される。すると図32に示すように、ユーザ・キーKu1及びKu2が登録されているので、メモリカード2−1はロック状態にある。但し、第2ホスト装置1−2と同様に、第1ホスト装置1−1は、ロック状態にあるメモリカード2−1をドライブとして認識することが出来る。そして第1ホスト装置1−1は、レジスタ63に保持したユーザ・キーKu1を用いてアンロック動作を行い、メモリカード2−1をロック状態からアンロック状態に遷移させる。メモリカード2−1は、登録されている2つのユーザ・キーと比較し、どちらか一方が一致した場合(この場合はKu1)にアンロック状態にする。この結果、ユーザはメモリカード2−1に自由にアクセス出来るようになる。
図32において、もしユーザ・キーKu1がレジスタ63から失われており、ユーザ・キーKu1を用いたアンロック動作が実行できない場合には、マスター・キーKmを用いたアンロック動作が実行可能である。この場合、メモリカード2−1に保持されている2つのユーザ・キーKuf1及びKuf2は、いずれも消去される。
図33は、第2のメモリカード2−2を第1ホスト装置1−1で登録する場合を示す。第1ホスト装置1−1は、メモリカード2−2の固有情報を用いて(例えばシリアルナンバーなどを用いる。メモリカードにはシリアルナンバーを読むコマンドが用意されている)、カードを識別することができる。したがって第1ホスト装置1−1は、第1のメモリカード2−1と、第2のメモリカード2−2の識別が可能であり、それぞれに対して異なるユーザ・キーKuを割り当てることができる。またホスト装置は、メモリカードの固有情報で識別すれば、どちらのキーを使ってアンロック状態にすれば良いかが識別できる。
4 本実施形態に係る効果
本実施形態に係るメモリシステムであると、メモリカードの利便性を向上させ、またセキュリティレベルを向上させることが出来る。本効果につき、以下に詳細に説明する。
4.1 ロック状態でもメモリカードをドライブとしてマウント出来る。
本実施形態に係るメモリカードであると、上記1.4の項で説明したように、ロック状態であっても、ファイルシステム情報の読み出しが可能とされている。従ってホスト装置1は、ロック状態のメモリカード2を認識することができ、ドライブとしてドライブレターを割り当てることが出来る。すなわち、ドライブとして認識するためにわざわざアンロック動作を実行する必要が無い。よって、メモリカード2をドライブとしてマウントする手順を簡略化出来、ユーザの利便性を向上出来る。
4.2 初期化シーケンスの共通化
また本実施形態に係るメモリシステムであると、上記2.1の項で述べたように、メモリカード2の初期化シーケンスが完了して、メモリカード2がトランスファー状態に遷移した後に、ロック動作またはアンロック動作が実行される。つまり、初期化シーケンスと、ロック/アンロック動作とが完全に分離され、先に初期化シーケンスが実行される。例えば、従来はロック状態でバス幅を1-bitから4-bitに切り替えることができないため、アンロック状態になるまで転送モードを設定できないという問題があったが、このような問題が解決される。さらに本実施形態では、制御コマンドはロック状態かアンロック状態にあるかに関わらず実行可能にしておく。
従って、ロック/アンロック機能を備えたメモリシステムと、そうでないメモリシステムとで、初期化シーケンスを共通化することが出来る。従って、メモリシステムの設計が容易となる。更に、ユーザは、メモリカード2がロック/アンロック機能を備えているか否かを考慮することなく、あらゆるホスト装置1でメモリカード2を使用出来るようになり、ユーザの利便性を向上出来る。
また、図10を用いて説明したように、ユーザ・キーの登録処理は、大まかには3ステップで完了する。すなわち、メモリカード2から各種情報を読み出すこと、メモリカード2にユーザ・キーを送信すること、及び登録完了をホスト装置1に通知すること、の3ステップである。よって、処理を非常に簡便にすることが出来る。
4.3 セキュリティレベルの高度化
更に本実施形態に係るメモリシステムであると、ユーザ・キーは、暗号化された状態でホスト装置1とメモリカード2との間で送受信されることが出来る。更に、使用される関数に関する情報は、関数そのものを示す情報では無く、いずれの関数が選択されたかを示すコードCch及びCcgである。従って、これらの情報が漏洩したとしても、不正なホスト装置によるなりすましを防止し、耐タンパー性を向上してセキュリティレベルを向上出来る。
また、ユーザ・キーKuは、上記1.5.2の項で説明したように、管理ユーティリティによって生成出来る。管理ユーティリティは、CPU60によって実行されることで、ユーザ・キー生成手段として機能する。そして管理ユーティリティは、ホスト装置1に固有であり且つ人間が手入力では入力不可能なレベルのパスワード長で、ユーザ・キーを生成出来る。基本的に、パスワードのセキュリティレベルは、そのパスワード長に大きく依存する。従って、管理ユーティリティを用いることで、従来に比べて格段にセキュリティレベルを向上出来る。
更に、ユーザ・キーは、ホスト装置毎、及びメモリカード毎に個別に設定することが出来る。この点も、セキュリティレベルの向上に資する。
また、管理ユーティリティを用いることで、メモリカード2がホスト装置1に接続される度にユーザにパスワード入力を求める必要が無い。すなわち、ホスト装置1とメモリカード2との間で自動認証が行われ、ロック状態のメモリカード2は、それが認証されれば自動的にアンロック状態となる。よって、ユーザは、メモリカード2がロック状態であったことを認識することなく、メモリカード2をホスト装置1に接続した直後から、自由にメモリカード2にアクセスすることが出来る。この点でも、ユーザの利便性は向上出来る。また、ひとつのホスト装置で複数のカードのユーザ・キーを管理することもできる。この場合、メモリカードの固有情報、例えばシリアルナンバーを読みだしてカードを識別し、シリアルナンバーとユーザ・キーを対応させて管理する。
4.4 パスワード喪失対策
本実施形態に係るメモリシステムによれば、まずユーザ・キーKuが用意されている。そしてユーザ・キーを登録することで、メモリカード2のロック動作が可能となる。更に、複数のユーザ・キーの登録を可能とすることで、複数のホスト装置1に使用権を設定出来る。そして、ロック状態のメモリカード2をアンロック状態に遷移させるためにも、ユーザ・キーは使用される。
そして、ユーザ・キーが失われてしまった場合に備えて、本実施形態では、マスター・キーKmが用意されている。マスター・キーKmは、例えばメモリカード2の出荷時に設定され、ユーザによって変更することが禁止されている。そしてマスター・キーを用いることで、それまでに登録されていた全てのユーザ・キーを消去しつつ、メモリカード2をアンロック状態に遷移させることが出来る。例えば、メモリ出荷時にマスター・キーはプログラムされ、印刷された状態で販売される。ユーザは、マスター・キーは持ち歩かずに家に保管しておけば、通常の使用環境においてセキュリティ的な問題はない。
4.5 フォースイレーズ期間の短縮
更に、上記2.5.5の項で説明したように、ユーザ・キーもマスター・キーも失われてしまった場合には、消去動作を実行することによって、メモリカード2をアンロック状態に遷移させることが出来る。
この際メモリカード2は、ユーザ・キーの全てと、ファイルシステム情報の一部とを不揮発性メモリ75から消去する。ユーザ・データ領域の一部を消去するか、データをシャッフルすることにより、ユーザ・データ領域の無効化時間を短縮化し、ホスト装置1が長時間にわたってフリーズ状態となることを防止出来る。なお、この場合にメモリカード2を利用可能とするにはフォーマットが必要である。ユーザ・データ領域は完全に消去されない状態で残っているが、個々のデータは、例えばユーザによる個別の暗号化によって保護され得る。
4.6 コンフィギュレーション動作の拡張
コンフィギュレーション動作コマンドを拡張することで、例えば特定のユーザ・キーでアンロック状態にした場合は、リードのみ許可し、ライトはできないという設定を追加することができる。
5.変形例等
以上のように、上記実施形態に係るデバイス、ホスト装置、ホストシステム、及びメモリシステムによれば、ユーザの利便性を向上出来る。
なお、上記実施形態は唯一の実施形態では無く、種々の変形が可能である。すなわち、上記一実施形態は複数の態様を含んでおり、その一部のみが実施されても良い。
5.1 第1の変形例
まず、第1の変形例について説明する。図34は、本変形例に従ったメモリシステムのブロック図である。図示するように、本変形例に係る構成は、図5に対して、ファームウェアが有効フラグ(Valid flag)を備える。有効フラグとは、不揮発性メモリ75の中のユーザ・データ領域(外部からアクセス可能な領域)のデータが有効であるか無効であるかを示す情報である。
有効フラグについて、図35を用いて説明する。図35は、メモリカード2におけるファームウェア71及び不揮発性メモリ75の中のユーザ・データ領域の模式図である。図35では、ブートセクタとして、前述したMBR及びBPBを図示している。
図示するように、不揮発性メモリ75において、外部からアクセス可能なユーザ・データ領域(ファイルシステム管理領域50及びファイルシステムデータ領域51)は、複数の管理ユニット(management unit)MU(MU1〜MUn)に分割されて管理される。nは2以上の自然数である。データの読み出し及び書き込みは、この管理ユニット単位で行われる。1つの管理ユニットは、1つまたは複数の物理ユニットに対応する。
そしてメモリカード2は、管理ユニットMU毎に有効フラグVF(VF1〜VFn)を備える。有効フラグVFは、例えば不揮発性メモリ等、電源が切断されてもデータが保持される領域に保存される。そして有効フラグVFは、対応する管理ユニットMUが、有効な値を保持しているか否か、換言すれば、対応する管理ユニットMUに保持されているデータが、ホスト装置1によって消去対象とされたか否かを示す。
図36は、ホスト装置1から消去、書き込み、または読み出しアクセスを受信した際のメモリカード2の動作を示すフローチャートである。これらの動作は、主としてCPU70の制御によって実行される。
図示するように、ホスト装置1からのアクセスがデータの消去命令であった場合(ステップS180、YES)、CPU70は、マスター・キーの認証動作を実行する(ステップS181)。この認証処理は、例えば図23で説明した処理と同様である。すなわち、例えばメモリカード2はホスト装置1に対してマスター・キーの入力を求める。これに応答してホスト装置1は、平文のマスター・キーKmをメモリカード2に送信する。するとメモリカード2は、受信したマスター・キーKmを変換関数F()により変換して、比較値Kmvを得る。引き続きメモリカード2は、不揮発性メモリ75に記憶されている期待値Kmfと、算出した比較値Kmvとを比較する。そして、期待値KmfがKmvと一致すれば、メモリカード2は当該マスター・キーKmを認証する。
マスター・キーが認証されれば(ステップS182、YES)、CPU70は、有効フラグVFの全てを“0”にセットする(ステップS183)。但し、不揮発性メモリ75の管理ユニットMUに保持されている実際のデータそのものは消去されない。なお、ここで述べられる「消去」は、以前に記録されたユーザ・データの消去に対するものであり、不揮発性メモリの消去コマンドを実行するかどうかにつき述べているわけではない。
マスター・キーの認証に失敗すれば(ステップS182、NO)、消去は行われず(ステップS184)、例えばステータスエラーがホスト装置1に送信される。
次に、ホスト装置1からのアクセスが書き込み命令であった場合について説明する(ステップS180、NO、ステップS185、YES)。この場合、CPU70は、アクセス対象とされた管理ユニットMUに対応する有効フラグVFを確認する(ステップS186)。有効フラグVFが“0”であれば、当該管理ユニットMUは、ホスト装置1から見た場合、データが消去済みであることを意味する(実際には、管理ユニットMU内にデータは残っている)。従ってCPU70は、この管理ユニットMU内のデータを実際に消去する(ステップS187)。そしてCPU70は、ホスト装置1から受信した書き込みデータを、当該管理ユニットMUに書き込み(ステップS188)、対応する有効フラグVFを“1”に設定する(ステップS189)。
ステップS186において、有効フラグVFが“1”であれば、消去は不要であり、対応する管理ユニットMU内にデータを書き込む(ステップS190)。有効フラグVFは“1”のままである。
次に、ホスト装置1からのアクセスが読み出し命令であった場合について説明する(ステップS180、NO、ステップS185、NO)。この場合、CPU70は、アクセス対象とされた管理ユニットMUに対応する有効フラグVFを確認する(ステップS191)。有効フラグVFが“0”であれば(ステップS191、YES)、CPU70は不揮発性メモリ75からデータを読み出すことなく、所定の固定データ(全ビットが“1”であるデータ、または全ビットが“0”であるデータ)をホスト装置1に出力する(ステップS192)。
他方、有効フラグVFが“1”であれば(ステップS191、NO)、CPU70は不揮発性メモリ75の対応する管理ユニットMUからデータを読み出し、これをホスト装置1へ出力する(ステップS193)。
以上の構成によれば、消去動作を行うには、マスター・キーの認証にパスしなければならない。これにより、メモリカード2の所有者では無い人間によってメモリカード2が初期化されることを防止出来る。(図18のフローチャートでは、マスター・キーを忘れた場合に、Erase Operationにより、消去できるという実施形態であるが、本変形例は、消去の許可にマスター・キーを使っているところが異なる。)
また本変形例によれば、データの消去命令を受信した場合、不揮発性メモリ75内に保持されている実際のデータを消去しない。その代わりCPU70は、有効フラグVFによって、消去対象とされたデータを管理する。このように、実際のデータの消去動作が不要となるため、メモリカード2の動作速度を向上出来る。また、データの読み出し要求を受けた際には、CPU70はまず有効フラグVFを参照する。そして、VF=“0”であった場合には、不揮発性メモリ75からデータを読み出すことなく、固定データを出力する。従って、実際のデータが不揮発性メモリ75に残っていたとしても、このデータが誤って読み出されることを防止出来る。
また例外的に、MBRやBPBは有効フラグVFの値に関わらず、データが読める実装とすることが好ましい。この場合、ファイルシステム管理領域50の先頭部分あるいは一部領域についての有効フラグは、常に“1”とするか、または有効フラグによる管理対象外とする。
5.2 その他の変形例
変形例は、上記に限られるものでも無い。例えば、ロック状態でファイルシステム情報の一部を読みだし可能な態様のみが実施されても良い。また、コンフィギュレーション動作には7つの機能が含まれる場合を例に説明したが、それらのうちの一部のみが実施される場合であっても良い。
また、ホスト装置1とメモリカード2との間で、使用される暗号化方式が1種類に予め決められていれば、コードCchやCcgを送信する必要は無く、またメモリカードがGh()リスト及びH()リストを保持する必要も無い。更に、暗号化方式は上記実施形態で説明したものに限らず、その他の種々の方式を適用することが出来る。
更に、メモリカード2が各種動作の終了をホスト装置1に通知する手段はビジー信号に限られず、その他の信号を用いても良い。ビジーが完了したタイミングで、カードからホストにパケットを送ることで通知することもできる。
また、コンフィギュレーション動作におけるユーザ・キーの扱いに関しては、登録・消去・確認の3種類を例に挙げたが、ユーザ・キーの変更機能が含まれても良い。この場合、ホスト装置1が、変更対象となるユーザ・キーを用いて認証動作を行った後、ホスト装置1が新たなユーザ・キーと共に変更命令を発行すれば良い。新たなユーザ・キーは、管理ユーティリティによって生成されても良いし、ユーザによって入力されても良く、また暗号化される場合であっても良いし、暗号化されない場合であっても良い。
また、上記実施形態ではメモリデバイスとしてSDメモリカードを例に挙げて説明した。しかし、メモリデバイスはSDメモリカードに限らず、あらゆる記憶媒体であって良い。そして、ホスト装置1に接続されるデバイスは1つでは無く、同時に2つ以上のデバイスが接続可能な場合であっても良い。この場合、ホスト装置1は、各デバイスと個別にユーザ・キーの登録動作を行う。更に、ファイルシステムもFATファイルシステムに限定されるものでは無い。メモリカード2は、ファイルシステムを識別する必要はなく、ロック状態で限定的に読み出せる領域や、消去コマンドで消去する領域は、メモリ容量から予測した領域を用いることができる。領域の決定にあまり厳密さは要求されない。
更に、上記実施形態で説明したフローチャート及びシーケンス図は、可能な限り順番を入れ替えることが出来、また複数の処理を同時に実行することが出来る。また、ホスト装置1及びメモリカード2の取りうる構成は、図1及び図5の構成に限らず、上記実施形態で説明した機能を実現出来る構成であれば、ハードウェアとソフトウェアとを限らず、限定されるものでは無い。
上記実施形態は、以下の態様を含む。
[1]外部からアクセス可能な第1、第2領域を有する半導体メモリ(31 in 図1)と、
前記半導体メモリを制御するコントローラ(32 in 図1)と
を具備し、前記第1領域と第2領域からの読み出しが許可されるアンロック状態と、前記第1領域からの読み出しが許可され、第2領域からの読み出しが禁止されるロック状態とを有するデバイスであって、
前記第1領域は、ファイルシステム情報(FAT and DIR entry in 図2)の少なくとも一部を格納する領域であり、
前記ロック状態において、前記ファイルシステム情報の少なくとも一部は、外部から読み出し可能とされる(図3)デバイス。
[2]前記半導体メモリは、該デバイスに登録されたユーザ・キーが第1暗号関数(F() in図9)によって暗号化されて生成された少なくとも1つの暗号化ユーザ・キー(Kuf in 図5, 9)を保持可能とされ、
前記ユーザ・キーが登録されている場合、前記コントローラは、電源投入直後において前記ロック状態で初期化を行い(図30)、
前記ユーザ・キーが登録されていない場合、前記コントローラは、電源投入直後において前記アンロック状態で初期化を行い(図28)、
前記初期化は、前記ユーザ・キーが登録されている場合とされていない場合とで、同一のシーケンスにより実行され(図6)、
前記初期化は、ホストとカードを接続する複数のバス転送モードの任意のひとつを選択し、
前記ロック状態において前記ファイルシステム情報の少なくとも一部は、前記デバイスの初期化の後に、外部からアクセス可能とされる(図3)[1]記載のデバイス。
[3]前記アンロック状態では、コンフィギュレーション動作により、ユーザ・キーの登録、変更、及び消去が可能とされ、且つ前記第1、第2領域の両方への読み出しが許可され (図3)、
前記ロック状態は第1モード(Config.Mode On)と第2モード(Config.Mode Off)とを備え、前記第1モードではコンフィギュレーション動作により、前記ユーザ・キーの登録、変更、及び消去が許可され、前記アンロック状態への移行は禁止され、前記第2モードでは、前記ユーザ・キーの登録、変更、及び消去が禁止され、前記アンロック状態への移行が可能となる(図4)[1]または[2]記載のデバイス。
[4]前記コントローラは、外部から受信したキーと、該デバイスに登録されたユーザ・キーとを比較し(S144, S146 in 図20)、
前記比較結果が一致した際に、前記デバイスは前記ロック状態から前記アンロック状態に移行する(S148 in 図20)[1]乃至[3]記載のデバイス。
[5]前記半導体メモリは、予め登録されると共に前記コンフィギュレーション動作では変更されないマスター・キー(Kmf in 図5)を保持し、
前記コントローラは、外部から受信したキーと、前記マスター・キーとを比較し(S151 in 図20)、前記比較結果が一致した際に、前記ユーザ・データ領域を消去することなく、前記登録されたユーザ・キーを消去し(S153 in 図20)、前記デバイスは前記ロック状態から前記アンロック状態に移行する(S148 in 図20)[4]記載のデバイス。
[6]前記デバイスには、前記ロック状態と前記アンロック状態との間を遷移する際に用いられるユーザ・キーが登録可能とされ、
前記ユーザ・キーが登録されていない場合、前記コントローラは、キー暗号化の有効/無効を設定する機能を有し、前記ユーザ・キーが登録されると、前記設定が固定され(図16)、
前記コントローラは、前記キー暗号化に使用可能な第2暗号関数(Gc()in 図8)と第3暗号関数(H() in 図20)とを有し、
前記第2暗号関数(Gc()in 図8)は前記ユーザ・キーの登録に使用され、前記第3暗号関数(H() in 図20)は前記ユーザ・キーの認証に使用され、
前記ユーザ・キーは、前記第2または第3暗号関数で暗号化されて、外部から前記デバイスに送信される(図10, 14)[1]または[2]記載のデバイス。
[7]前記デバイスには、前記ユーザ・キーを消去する際に認識に用いられるマスター・キーが登録可能とされ、
前記キー暗号化が有効に設定されている場合であっても、前記マスター・キーは暗号化されることなく前記デバイスに送信される(図23)[6]記載のデバイス。
[8]ロック状態とアンロック状態を有するデバイスにアクセス可能なホスト装置であって、
ユーザ・キーを保持可能なホストメモリ(63 in 図5)と、
前記デバイスを制御するホストコントローラ(60, 65 in 図5)と
を具備し、前記ホストコントローラは、前記デバイスを初期化した後、前記デバイスがロック状態であるかアンロック状態であるかに関わらず、前記デバイスからファイルシステム情報の少なくとも一部を読み出すことにより、該デバイスがフォーマット済みのメモリデバイスであることを認識し、
前記ホストコントローラは、前記デバイスを初期化した後、前記デバイスが前記ロック状態であるかアンロック状態であるかを確認し、
前記ロック状態である場合、前記ユーザ・キーを前記デバイスに送信することにより、前記デバイスを前記アンロック状態に遷移させるホスト装置。
[9]前記ファイルシステム情報の少なくとも一部が読み出され、且つ前記デバイスがフォーマットされたメモリデバイスとして認識された場合、
前記デバイスに対して、ドライブとしてドライブ番号が割り当られることにより、ドライブとして前記デバイスをアクセスするアプリケーションからのアクセスが可能とされる [8]記載のホスト装置。
[10]前記ホストコントローラは、前記ユーザ・キーを前記デバイスに送信する際、前記デバイスがサポートする第3暗号関数のいずれかを選択し、該暗号関数(H() in 図19)を用いて暗号化して送信する(S134-135 in 図19)[8]または[9]記載のホスト装置。
[11]前記ホストコントローラは、前記ユーザ・キーを生成し、該生成したユーザ・キーを変換関数(F() in 図10)により暗号化することにより得られた暗号化ユーザ・キー(Kuf in 図5)を、前記ホストメモリ(63 in 図5)に不揮発に保持させ、
前記暗号化ユーザ・キーを前記ホストメモリに保持させた後、前記ユーザ・キーを前記デバイスに送信する(図6)[10]記載のホスト装置。
[12]前記ホストコントローラは、前記第1及び第2領域を、複数の単位領域の集合として管理し、前記単位領域毎にフラグによって領域管理し、
外部からデータの消去命令を受信した際、前記コントローラは、前記第2領域内のデータを消去することなく、前記フラグを、データが消去されたことを示す旨の値にセットする[1]のデバイス。
[13]前記コントローラは、前記消去命令を受信した際、前記外部に対してマスター・キーの認証を要求し、
前記マスター・キーが認証された場合に、前記フラグをセットする[12]のデバイス。
[14]前記コントローラは、外部からデータの書き込み命令を受信した際、前記フラグを確認し、前記フラグがセットされている場合には、前記第2領域において、対応する領域内のデータを消去した後に、データを該領域に書き込む[12]のデバイス。
[15]前記コントローラは、外部からデータ読み出し命令を受信した際、前記フラグを確認し、前記フラグがセットされている場合には、固定データを外部に出力する[12]のデバイス。
[16]上記[8]記載のホスト装置を含む第1ホスト装置(1-1 in 図27)と、
上記[8]記載のホスト装置を含む第2ホスト装置(1-2 in 図27)と
を具備するホストシステムであって、
前記第1ホスト装置は、前記デバイスに第1ユーザ・キーを設定すると共に、前記ロック状態でも前記ユーザ・キーを登録可能なモード(Config.Mode in 図27)をイネーブルに設定し(図28)、
前記第2ホスト装置は、前記第1ホスト装置によって前記モードをイネーブルとされた前記デバイスを初期化すると共に、第2ユーザ・キーを設定し、更に前記モードをディセーブルとし(図30)、
前記デバイスは、前記モードがディセーブルとされることで、前記ロック状態から前記アンロック状態への遷移が可能とされる(図32)ホストシステム。
[17]前記第1、第2ユーザ・キーが設定されたデバイスは、該第1、第2ユーザ・キーを用いた認証動作によって、それぞれ前記第1、第2ホスト装置によって使用可能とされる[16]記載のホストシステム。
[18]上記[1]記載のデバイス(2 in 図5)と、
上記[8]記載のホスト装置(1 in 図5)と
を具備するシステムであって、前記ユーザ・キーが登録される際、
前記ホスト装置は、前記ユーザ・キーを生成し、該ホスト装置の第1暗号関数F()で暗号化して前記ホスト装置の前記ホストメモリに保存し、且つ前記ユーザ・キーを、第2暗号関数(Gh() in 図10)と公開鍵(Kcp in 図10)とを用いて暗号化し、
前記デバイスは、前記第2暗号関数と公開鍵とを用いて暗号化されたユーザ・キーを、復号関数(Gc in 図10)と秘密鍵(Kcs in 図10)を用いて復号し、前記復号化されたユーザ・キーを、前記デバイスの第1暗号関数(F() in 図10)で暗号化して、前記半導体メモリに保存するメモリシステム。
[19]前記ホスト装置は、該ホスト装置の前記ホストメモリに保持された暗号化ユーザ・キー(Kuf in 図5)を、変換関数(F() in 図5)を用いて復号することにより前記ユーザ・キーを得、
前記デバイスは、該デバイスの前記半導体メモリに保持された暗号化ユーザ・キー(Kuf in 図5)を、該デバイスの第1暗号関数F()を用いて復号することによりユーザ・キーを得る(Ku=F(Kuf, Dec” in 図21)[18]記載のメモリシステム。
[20]上記[1]記載のデバイス(2 in 図5)と、
上記[8]記載のホスト装置(1 in 図5)と
を具備するシステムであって、前記ユーザ・キーが認証される際、
前記ホスト装置は、前記ユーザ・キーを、第3暗号関数(H() in 図21)と、前記デバイスが提供する(Nr in 図21)乱数とを用いて暗号化し、
前記デバイスは、前記第3暗号関数(H() in 図21)と、前記乱数(Nr in 図21)と、前記半導体メモリに保持された暗号化ユーザ・キー(Kuf in 図21)とを用いて、前記ホスト装置によって暗号化されたユーザ・キー(Nt in 図21)を認証し、
前記認証に成功した場合に、前記デバイスは前記ロック状態から前記アンロック状態に遷移する(図21)メモリシステム。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1、1−1、1−2…ホスト装置、2…メモリカード、11…MPU、12、41、76…ホストインターフェース回路、13…RAM、14…ROM、31、75…NAND型フラッシュメモリ、32…コントローラ、42…MPU、43…ROM、44…RAM、45…NANDインターフェース回路、46、63、72、73…レジスタ、50…ファイルシステム管理領域、51…ファイルシステムユーザ領域、60、70…CPU、61、71…ファームウェア、62、64、74…ワークエリア、65…ホストコントローラ

Claims (20)

  1. 外部からアクセス可能な第1、第2領域を有する半導体メモリと、
    前記半導体メモリを制御するコントローラと
    を具備するデバイスであって、前記デバイスは、前記第1領域と第2領域からの読み出しが許可されるアンロック状態と、前記第1領域からの読み出しが許可され、前記第2領域からの読み出しが禁止されるロック状態とを有し、
    前記第1領域は、ファイルシステム情報の少なくとも一部を格納する領域であり、
    前記ロック状態において、前記ファイルシステム情報の少なくとも一部は、外部から読み出し可能とされる、デバイス。
  2. 前記半導体メモリは、該デバイスに登録されたユーザ・キーが第1暗号関数によって暗号化されて生成された少なくとも1つの暗号化ユーザ・キーを保持可能とされ、
    前記ユーザ・キーが登録されている場合、前記コントローラは、電源投入直後において前記ロック状態で初期化を行い、
    前記ユーザ・キーが登録されていない場合、前記コントローラは、電源投入直後において前記アンロック状態で初期化を行い、
    前記初期化は、前記ユーザ・キーが登録されている場合とされていない場合とで、同一のシーケンスにより実行され、
    前記初期化は、ホストとカードを接続する複数のバス転送モードの任意のひとつを選択し、
    前記ロック状態において前記ファイルシステム情報の少なくとも一部は、前記デバイスの初期化の後に、外部からアクセス可能とされる、請求項1のデバイス。
  3. 前記アンロック状態では、コンフィギュレーション動作により、ユーザ・キーの登録、変更、及び消去が可能とされ、且つ前記第1、第2領域の両方への読み出しが許可され、
    前記ロック状態は第1モードと第2モードとを備え、前記第1モードではコンフィギュレーション動作により、前記ユーザ・キーの登録、変更、及び消去が許可され、前記アンロック状態への移行は禁止され、前記第2モードでは、前記ユーザ・キーの登録、変更、及び消去が禁止され、前記アンロック状態への移行が可能となる、請求項1のデバイス。
  4. 前記コントローラは、外部から受信したキーと、該デバイスに登録されたユーザ・キーとを比較し、
    前記比較結果が一致した際に、前記デバイスは前記ロック状態から前記アンロック状態に移行する、請求項1のデバイス。
  5. 前記半導体メモリは、予め登録されると共に前記コンフィギュレーション動作では変更されないマスター・キーを保持し、
    前記コントローラは、前記外部から受信したキーと、前記マスター・キーとを比較し、前記比較結果が一致した際に、前記ユーザ・データ領域を消去することなく、前記登録されたユーザ・キーを消去し、前記デバイスは前記ロック状態から前記アンロック状態に移行する、請求項4のデバイス。
  6. 前記デバイスには、前記ロック状態と前記アンロック状態との間を遷移する際に用いられるユーザ・キーが登録可能とされ、
    前記ユーザ・キーが登録されていない場合、前記コントローラは、キー暗号化の有効/無効を設定する機能を有し、前記ユーザ・キーが登録されると、前記設定が固定され、
    前記コントローラは、前記キー暗号化に使用可能な第2暗号関数と第3暗号関数とを有し、
    前記第2暗号関数は前記ユーザ・キーの登録に使用され、前記第3暗号関数は前記ユーザ・キーの認証に使用され、
    前記ユーザ・キーは、前記第2または第3暗号関数で暗号化されて、外部から前記デバイスに送信される、請求項1のデバイス。
  7. 前記デバイスには、前記ユーザ・キーを消去する際に認識に用いられるマスター・キーが登録可能とされ、
    前記キー暗号化が有効に設定されている場合であっても、前記マスター・キーは暗号化されることなく前記デバイスに送信される、請求項6のデバイス。
  8. ロック状態とアンロック状態を有するデバイスにアクセス可能なホスト装置であって、
    ユーザ・キーを保持可能なホストメモリと、
    前記デバイスを制御するホストコントローラと
    を具備し、前記ホストコントローラは、前記デバイスを初期化した後、前記デバイスが前記ロック状態であるか前記アンロック状態であるかに関わらず、前記デバイスからファイルシステム情報の少なくとも一部を読み出すことにより、該デバイスがフォーマット済みのメモリデバイスであることを認識し、
    前記ホストコントローラは、前記デバイスを初期化した後、前記デバイスが前記ロック状態であるかアンロック状態であるかを確認し、
    前記ロック状態である場合、前記ユーザ・キーを前記デバイスに送信することにより、前記デバイスを前記アンロック状態に遷移させる、ホスト装置。
  9. 前記ファイルシステム情報の少なくとも一部が読み出され、且つ前記デバイスがフォーマットされたメモリデバイスとして認識された場合、
    前記デバイスに対して、ドライブとしてドライブ番号が割り当られることにより、ドライブとして前記デバイスをアクセスするアプリケーションからのアクセスが可能とされる、請求項8のホスト装置。
  10. 前記ホストコントローラは、前記ユーザ・キーを前記デバイスに送信する際、前記デバイスがサポートする第3暗号関数のいずれかを選択し、該暗号関数を用いて暗号化して送信する、請求項8のホスト装置。
  11. 前記ホストコントローラは、前記ユーザ・キーを生成し、該生成したユーザ・キーを変換関数により暗号化することにより得られた暗号化ユーザ・キーを、前記ホストメモリに不揮発に保持させ、
    前記暗号化ユーザ・キーを前記ホストメモリに保持させた後、前記ユーザ・キーを前記デバイスに送信する、請求項10のホスト装置。
  12. 前記コントローラは、前記第1及び第2領域を、複数の単位領域の集合として管理し、且つ前記第1領域における先頭アドレス領域を除く領域と前記第2領域とを、前記単位領域毎にフラグによって領域管理し、
    外部からデータの消去命令を受信した際、前記コントローラは、前記第2領域内のデータを消去することなく、前記フラグを、データが消去されたことを示す旨の値にセットする、請求項1のデバイス。
  13. 前記コントローラは、前記消去命令を受信した際、前記外部に対してマスター・キーの認証を要求し、
    前記マスター・キーが認証された場合に、前記フラグをセットする、請求項12のデバイス。
  14. 前記コントローラは、外部からデータの書き込み命令を受信した際、前記フラグを確認し、前記フラグがセットされている場合には、前記第2領域において、対応する領域内のデータを消去した後に、データを該領域に書き込む、請求項12のデバイス。
  15. 前記コントローラは、外部からデータ読み出し命令を受信した際、前記フラグを確認し、前記フラグがセットされている場合には、固定データを外部に出力する、請求項12のデバイス。
  16. 請求項8のホスト装置を含む第1ホスト装置と、
    請求項8のホスト装置を含む第2ホスト装置と
    を具備するホストシステムであって、
    前記第1ホスト装置は、前記デバイスに第1ユーザ・キーを設定すると共に、前記ロック状態でも前記ユーザ・キーを登録可能なモードをイネーブルに設定し、
    前記第2ホスト装置は、前記第1ホスト装置によって前記モードをイネーブルとされた前記デバイスを初期化すると共に、第2ユーザ・キーを設定し、更に前記モードをディセーブルとし、
    前記デバイスは、前記モードがディセーブルとされることで、前記ロック状態から前記アンロック状態への遷移が可能とされる、ホストシステム。
  17. 前記第1、第2ユーザ・キーが設定されたデバイスは、該第1、第2ユーザ・キーを用いた認証動作によって、それぞれ前記第1、第2ホスト装置によって使用可能とされる、請求項16のホストシステム。
  18. 請求項1のデバイスと、
    請求項8のホスト装置と
    を具備するシステムであって、前記ユーザ・キーが登録される際、
    前記ホスト装置は、前記ユーザ・キーを生成し、該ホスト装置の第1暗号関数で暗号化して前記ホスト装置の前記ホストメモリに保存し、且つ前記ユーザ・キーを、第2暗号関数と公開鍵とを用いて暗号化し、
    前記デバイスは、前記第2暗号関数と公開鍵とを用いて暗号化されたユーザ・キーを、復号関数と秘密鍵を用いて復号し、前記復号化されたユーザ・キーを、前記デバイスの第1暗号関数で暗号化して、前記半導体メモリに保存する、メモリシステム。
  19. 前記ホスト装置は、該ホスト装置の前記ホストメモリに保持された暗号化ユーザ・キーを、変換関数を用いて復号することにより前記ユーザ・キーを得、
    前記デバイスは、該デバイスの前記半導体メモリに保持された暗号化ユーザ・キーを、該デバイスの第1暗号関数を用いて復号することによりユーザ・キーを得る、請求項18のメモリシステム。
  20. 請求項1のデバイスと、
    請求項8のホスト装置と
    を具備するシステムであって、前記ユーザ・キーが認証される際、
    前記ホスト装置は、前記ユーザ・キーを、第3暗号関数と、前記デバイスが提供する乱数とを用いて暗号化し、
    前記デバイスは、前記第3暗号関数と、前記乱数と、前記半導体メモリに保持された暗号化ユーザ・キーとを用いて、前記ホスト装置によって暗号化されたユーザ・キーを認証し、
    前記認証に成功した場合に、前記デバイスは前記ロック状態から前記アンロック状態に遷移する、メモリシステム。
JP2014019731A 2013-06-20 2014-02-04 デバイス、ホスト装置、ホストシステム、及びメモリシステム Pending JP2015026358A (ja)

Priority Applications (8)

Application Number Priority Date Filing Date Title
JP2014019731A JP2015026358A (ja) 2013-06-20 2014-02-04 デバイス、ホスト装置、ホストシステム、及びメモリシステム
EP14713935.6A EP3011460A1 (en) 2013-06-20 2014-02-06 Device, host apparatus, host system, and memory system
PCT/JP2014/053391 WO2014203558A1 (en) 2013-06-20 2014-02-06 Device and memory system
KR1020157035943A KR20160010605A (ko) 2013-06-20 2014-02-06 디바이스 및 메모리 시스템
CN201480034597.XA CN105339919A (zh) 2013-06-20 2014-02-06 设备和存储系统
TW105102390A TW201616390A (zh) 2013-06-20 2014-02-24 元件、主機裝置、主機系統及記憶體系統
TW103106185A TW201500963A (zh) 2013-06-20 2014-02-24 記憶體元件、主機裝置、主機系統及記憶體系統
US14/974,665 US20160103625A1 (en) 2013-06-20 2015-12-18 Device, host apparatus, host system, and memory system

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013129832 2013-06-20
JP2013129832 2013-06-20
JP2014019731A JP2015026358A (ja) 2013-06-20 2014-02-04 デバイス、ホスト装置、ホストシステム、及びメモリシステム

Publications (1)

Publication Number Publication Date
JP2015026358A true JP2015026358A (ja) 2015-02-05

Family

ID=50391331

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014019731A Pending JP2015026358A (ja) 2013-06-20 2014-02-04 デバイス、ホスト装置、ホストシステム、及びメモリシステム

Country Status (7)

Country Link
US (1) US20160103625A1 (ja)
EP (1) EP3011460A1 (ja)
JP (1) JP2015026358A (ja)
KR (1) KR20160010605A (ja)
CN (1) CN105339919A (ja)
TW (2) TW201616390A (ja)
WO (1) WO2014203558A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020170560A (ja) * 2016-04-25 2020-10-15 横河電機株式会社 消去方法及び消去システム
US11435945B2 (en) 2019-03-20 2022-09-06 Kioxia Corporation Memory apparatus and control method for command queue based allocation and management of FIFO memories

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421589B2 (en) * 2004-07-21 2008-09-02 Beachhead Solutions, Inc. System and method for lost data destruction of electronic data stored on a portable electronic device using a security interval
WO2017061153A1 (ja) * 2015-10-09 2017-04-13 ソニー株式会社 メモリ、メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
CN107122309A (zh) * 2016-02-25 2017-09-01 瑞昱半导体股份有限公司 电子装置及其控制方法
US11258599B2 (en) 2016-08-04 2022-02-22 Macronix International Co., Ltd. Stable physically unclonable function
US10855477B2 (en) 2016-08-04 2020-12-01 Macronix International Co., Ltd. Non-volatile memory with physical unclonable function and random number generator
US10911229B2 (en) 2016-08-04 2021-02-02 Macronix International Co., Ltd. Unchangeable physical unclonable function in non-volatile memory
US10404478B2 (en) 2016-08-04 2019-09-03 Macronix International Co., Ltd. Physical unclonable function using divided threshold distributions in non-volatile memory
US10680809B2 (en) 2016-08-04 2020-06-09 Macronix International Co., Ltd. Physical unclonable function for security key
CN108108120B (zh) * 2016-11-25 2021-03-09 上海川源信息科技有限公司 数据储存系统及其数据储存方法
JP2018156696A (ja) 2017-03-15 2018-10-04 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
CN110781532B (zh) 2018-07-12 2023-12-15 慧荣科技股份有限公司 开卡装置及利用开卡装置验证并启用数据储存装置的方法
TWI690805B (zh) * 2018-07-12 2020-04-11 慧榮科技股份有限公司 開卡裝置及利用開卡裝置驗證並且啟用一資料儲存裝置之方法
US11030346B2 (en) * 2018-07-13 2021-06-08 Ememory Technology Inc. Integrated circuit and data processing method for enhancing security of the integrated circuit
JP2020119298A (ja) * 2019-01-24 2020-08-06 キオクシア株式会社 メモリシステム
US10963592B2 (en) * 2019-02-05 2021-03-30 Western Digital Technologies, Inc. Method to unlock a secure digital memory device locked in a secure digital operational mode
CN110851887A (zh) * 2019-10-18 2020-02-28 浙江大华技术股份有限公司 多媒体存储卡的数据保护方法、装置、设备和存储介质
US10656854B1 (en) * 2019-10-22 2020-05-19 Apricorn Method and portable storage device with internal controller that can self-verify the device and self-convert the device from current mode to renewed mode without communicating with host
CN111128195A (zh) * 2019-11-29 2020-05-08 合肥讯飞读写科技有限公司 智能演示器的声纹控制方法、智能演示器和设备
KR20210078109A (ko) * 2019-12-18 2021-06-28 삼성전자주식회사 스토리지 장치 및 이를 포함하는 시스템
US11380379B2 (en) 2020-11-02 2022-07-05 Macronix International Co., Ltd. PUF applications in memories
CN112580115A (zh) * 2020-12-23 2021-03-30 湖南国科微电子股份有限公司 Nvme设备的安全管理方法、装置、设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234331A (ja) * 2003-01-30 2004-08-19 Toshiba Corp 情報処理装置および同装置で使用されるユーザ操作制限方法
JP2005293774A (ja) * 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
JP2010225000A (ja) * 2009-03-25 2010-10-07 Nec Corp 着脱可能記録媒体のパスワード設定方式

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440631A (en) * 1992-04-24 1995-08-08 Fijitsu Limited Information distribution system wherein storage medium storing ciphered information is distributed
KR100505106B1 (ko) * 2002-05-29 2005-07-29 삼성전자주식회사 강화된 보안 기능을 갖춘 스마트 카드
JP2004030102A (ja) * 2002-06-25 2004-01-29 Sony Corp 情報記憶装置、およびメモリアクセス制御システム、および方法、並びにコンピュータ・プログラム
JP2008129744A (ja) * 2006-11-20 2008-06-05 Hitachi Ltd 外部記憶装置
KR20120069954A (ko) * 2010-12-21 2012-06-29 에스케이하이닉스 주식회사 블럭 보호 기능을 갖는 비휘발성 메모리 시스템 및 블럭 상태 제어 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004234331A (ja) * 2003-01-30 2004-08-19 Toshiba Corp 情報処理装置および同装置で使用されるユーザ操作制限方法
JP2005293774A (ja) * 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
JP2010225000A (ja) * 2009-03-25 2010-10-07 Nec Corp 着脱可能記録媒体のパスワード設定方式

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SD SPECIFICATIONS PART1 PHYSICAL LAYER SMPLIFIED SPECIFICATION VERSION 4.10, JPN6016046141, 22 January 2013 (2013-01-22), pages 24 - 45 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020170560A (ja) * 2016-04-25 2020-10-15 横河電機株式会社 消去方法及び消去システム
JP7319951B2 (ja) 2016-04-25 2023-08-02 横河電機株式会社 消去方法及び消去システム
US11435945B2 (en) 2019-03-20 2022-09-06 Kioxia Corporation Memory apparatus and control method for command queue based allocation and management of FIFO memories

Also Published As

Publication number Publication date
US20160103625A1 (en) 2016-04-14
TW201500963A (zh) 2015-01-01
WO2014203558A1 (en) 2014-12-24
TW201616390A (zh) 2016-05-01
KR20160010605A (ko) 2016-01-27
CN105339919A (zh) 2016-02-17
EP3011460A1 (en) 2016-04-27

Similar Documents

Publication Publication Date Title
JP2015026358A (ja) デバイス、ホスト装置、ホストシステム、及びメモリシステム
US9529735B2 (en) Secure data encryption in shared storage using namespaces
KR102254256B1 (ko) 보안형 메모리 칩의 롤백 방지 버전 업그레이드
US20100058073A1 (en) Storage system, controller, and data protection method thereof
TWI716023B (zh) 記憶體系統
KR101960036B1 (ko) 비휘발성 저장 장치의 인증 방법 및 장치
US6834333B2 (en) Data processing device, data storage device, data processing method, and program providing medium for storing content protected under high security management
US11507284B2 (en) Storage device and control method
JP4598857B2 (ja) Icカード、およびそのアクセス制御方法
CN114830595B (zh) 将密码密钥委托给存储器子系统
JP4463320B1 (ja) 暗号化記憶装置、情報機器、暗号化記憶装置のセキュリティ方法
US20130191636A1 (en) Storage device, host device, and information processing method
KR100614064B1 (ko) 휴대 가능한 전자 장치
CN110489959B (zh) 烧录文件的保护方法、烧录方法、装置、存储介质及设备
TW202407563A (zh) 基於裝置所有者產生金鑰之sram物理上不可複製的功能記憶體
US20210103653A1 (en) Memory system
US20230179418A1 (en) Storage controller and method of operating electronic system
CN115391844A (zh) 安全密钥存储装置
US20210243035A1 (en) Multi-factor authentication enabled memory sub-system
KR101648262B1 (ko) Ssd에 적합한 보안 삭제 기능을 가진 패스워드 기반의 암호화 파일 관리 방법 및 이들을 이용한 암호화 파일 관리 시스템
JP2000250818A (ja) 記憶システム、記憶装置及び記憶データ保護方法
JP7508531B2 (ja) ストレージ装置及び制御方法
EP4254855A1 (en) A device and a method for controlling use of a cryptographic key
CN118282630A (zh) 避免使用不完整密钥的密钥管理装置、处理器芯片及方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161206

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170606