(57)【要約】【課題】Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰ以降の制限ユーザがUSBデバイスに有効にアクセスし得る新たなコマンド実行方法、並びに該方法を実行し得るUSBデバイスのコントローラ及び該コントローラを搭載したUSBデバイスを提供。【解決手段】USBデバイスのコントローラに、USBスタンダードデバイスリクエストコマンドで定義されている “bmRequest_type”、“bRequest”、“wValue”、“wIndex”の少なくとも一つに、前記それぞれに規定されているデータ長であって、且つUSBスタンダードデバイスリクエストコマンドで定義されていない所定の値が設定されたものを一のコマンドとして解釈しこれを実行するプログラムを記憶させておき、これによって、USBスタンダードデバイスリクエストコマンドでは実行せしめることのできない処理を前記デバイスに実行させる【選択図】  図１
2007317053.tif 000002
【特許請求の範囲】
【請求項１】
Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰ以降の制限ユーザのホストに接続されているUSBデバイスに対し、前記制限ユーザのホストから前記USBデバイスに有効にその処理を実行させるコマンド実行方法であって、
前記デバイスのコントローラに、USBスタンダードデバイスリクエストコマンドで定義されている “bmRequest_type”、“bRequest”、“wValue”、“wIndex”の少なくとも一つに、前記それぞれに規定されているデータ長であって、且つUSBスタンダードデバイスリクエストコマンドで定義されていない所定の値を設定したものを、一のコマンドとして解釈しこれを実行するプログラムを記憶させておき、
これによって、USBスタンダードデバイスリクエストコマンドでは実行せしめることのできない処理を前記デバイスに実行させることを特徴とするコマンド実行方法。
【請求項２】
前記処理は、当該デバイスに記憶しているパスワード若しくは指紋認証用の登録データを読み出して、これをホストに送出させるものであることを特徴とする請求項１記載のコマンド実行方法。
【請求項３】
前記処理は、既存のコマンドで書き替えられると不都合のあるパスワード若しくは指紋認証用の登録データなど、機密性の高いデータの書き込み若しくは書き替えであることを特徴とする、請求項１に記載のコマンド実行方法。  
【請求項４】
USBスタンダードデバイスリクエストコマンドで定義されている“bmRequest_type”、“bRequest”、“wValue”、“wIndex”の少なくとも一つに、前記それぞれに規定されているデータ長であって、且つUSBスタンダードデバイスリクエストコマンドで定義されていない所定の値が設定されたものを、一のコマンドとして解釈しこれを実行するよう構成されてなることを特徴とするUSBストレージデバイスのコントローラ。
【請求項５】
記憶手段としてのフラッシュメモリと請求項４のコントローラを搭載してなるUSBストレージデバイス。
【請求項６】
パスワード若しくは指紋認証用の登録データが、コントローラに記憶されていることを特徴とする請求項５記載のUSBストレージデバイス。                         
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのオペレーティングシステムであるＷｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰ以降の制限ユーザのＯＳ使用のコンピュータに接続されているUSBストレージデバイスに対して有効なコマンドの実行方法、並びにUSBストレージデバイスのコントローラ及び該コントローラを搭載してなるUSBストレージデバイスに関する。
【背景技術】
【０００２】
従来、コンピュータに接続したUSBデバイスからデバイスのＩＤ情報やパスワードデータ、或いは指紋認証用の登録データなどを取得するには、業界標準のコマンドで実行されるとセキュリティー上問題があるので、当該デバイスへコンピュータよりベンダー固有のコマンド（ベンダーコマンド）を発行していた。
【０００３】
ところが、コンピュータのオペレーティングシステムであるＷｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザ（Administratorとして設定されている以外のユーザ）からは、コンピュータウイルス対策などの観点から、任意のベンダーコマンドを発行できなくなった。ここにベンダーとは、デバイス（製品）の提供者である。  
【０００４】
このUSBデバイスの一つとして、NANDフラッシュメモリなどの半導体記憶媒体を搭載したUSBストレージデバイスがある。USBポートに着脱式に使用されるものであるため、紛失した場合の情報漏洩が問題となっている。このため、最近では情報漏洩対策のため、パスワードの照合や指紋認証を当該デバイスのアクセス条件とするものが販売されている。  
【０００５】
この機能を実行するためには、USBストレージデバイスに、パスワードや指紋情報（以下、本願では「ユニーク情報」という）を登録しておく必要があるが、容易に読み取られることのないよう、ホストからはベンダーコマンドでのみ確認可能にする必要がある。  
【０００６】
しかしながら、上述の通り、Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザは、上述したように、ベンダーコマンドを自由に発行できないようになっている。ベンダーコマンドを発行するには、Administrator権限下で、専用ドライバをインストールする必要がある。この点、USBデバイスは持ち運び可能であり、外出先のＰＣなど、専用ドライバがインストールされていない制限ユーザのＰＣでは全く使用できないといった現状にある。  
【０００７】
【特許文献１】特開２００４−５４８９６
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は斯かる問題に鑑みてなされたものであり、その目的とするところは、Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰ、及びそれ以降の制限ユーザがUSBデバイスに有効にアクセスし得る新たなコマンド実行方法、並びに該方法を実行し得るUSBストレージデバイスのコントローラ及び該コントローラを搭載したUSBストレージデバイスを提供することにある。
【課題を解決するための手段】
【０００９】
本発明は、上記課題の解決にあたり、USBストレージデバイスのコントローラに、USBスタンダードデバイスリクエストコマンドで定義されている“bmRequest_type”、“bRequest”、“wValue”、“wIndex” の少なくとも一つに、前記それぞれに規定されているデータ長であって、且つUSBスタンダードデバイスリクエストコマンドで定義されていない所定の値を設定したものを、一のコマンドとして解釈しこれを実行するコマンド実行手段を設ける。コマンド実行手段は、コマンドを実行するためのプログラム（ソフトウエア）とこれを実行させるCPUを含む概念である。
【００１０】
ここで、bmRequest_type”、“bRequest”には、USBスタンダードデバイスリクエストコマンドで定義されている値を設定し得るが、定義されていない値があればそのうちの任意の値を設定してもよい。“wValue”、“wIndex”のいずれか一方、若しくはその両者には、USBスタンダードデバイスリクエストコマンドで規定されているデータ長であって、かつ、USBスタンダードデバイスリクエストコマンドで定義されていない任意の値が、“wLength”には、ホストがデバイスから取得すべき或いはホストがデバイスに書き込ませるべきデータの長さが、“Data”は実際に書き込ませるべきデータが設定され得る。
【００１１】
これにより、USBスタンダードデバイスリクエストコマンドや制限ユーザ下ではホストが取得できないユニーク情報を読み出し、これをホストに転送するコマンド、或いはユニーク情報をデバイスに書き込むコマンド等として定義し得る（これに限定されるものではない）。
【００１２】
そして、USBデバイスに設けたコントローラは、前記コマンド実行手段により、ホストからのコマンドの指令（実行すべき内容）を解釈し、ユニーク情報を読み出しこれをホストに転送し、或いはホストから指令されたパスワードなどのユニーク情報をデバイスに書き込む。これにより制限ユーザであっても、個人認証を条件としてアクセス可能なセキュリティー性の高いUSBデバイスを提供できる。
【００１３】
前記所定の情報は、幾通りもの値が設定可能であるため、何人（なんぴと）かが不正アクセスを試みてもその成功確率を非常に低いものとすることができる。  
【００１４】
コマンド実行手段（ソフトウエア）の設計をホストに実行させたい命令に適宜適合させることにより、ユニーク情報のホストへの転送の他、制限ユーザがAdministratorの権限下で専用のドライバをインストールすることなくしては実行不可能であった種々のコマンドを実行することができる。  
【００１５】
USBストレージデバイスは、更に第２のパスワード゛の認証成功により始めてアクセス可能な秘匿領域を設けてもよい。  
【００１６】
これは、USBストレージデバイスにおいて、より機密性の高いデータを保存しているような場合に特に有効である。  
【００１７】
また、前記ユニーク情報の実際の記憶領域（物理領域）はフラッシュメモリなどの記憶手段とは別個独立に構成されているコントローラの中に存在させてもよい。
【発明を実施するための最良の形態】
【００１８】
本発明は、現状において、パーソナルコンピュータのＯＳである、Ｗｉｎｄｏｗｓ（登録商標）２０００およびＷｉｎｄｏｗｓ（登録商標）ＸＰの制限ユーザ（その使用環境においてAdministratorとして設定されている以外のユーザ）において有用な方法である。  
【００１９】
以下、本発明方法の実施形態例について図面を用いて説明するが、本発明の実施形態は下記の例に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。  
【００２０】
（実施例）  図１は、USBストレージデバイス１７とホスト１０の概略構成を示すブロック図である。USBストレージデバイス１７は、ホスト１０のＵＳＢポートに接続されて使用されるストレージデバイスである。  
【００２１】
（１）ホスト１０  ホスト１０は、一般に広く知られたパーソナルコンピュータであり、ソフトウエアとして、オペレーティングシステム（特許請求範囲記載のＯＳ）１１、USBスタンダードデバイスリクエストドライバ１２、ディスクドライブドライバ１３、ＵＳＢマスストレージクラスドライバ１４及びデバイスドライバ１５を備え、ハードウェアとしてＵＳＢホストコントローラ１６を少なくとも備える。  
【００２２】
オペレーティングシステム１１は、ホスト１０を統括的に制御するソフトウエアであり、例えばＷｉｎｄｏｗｓ（登録商標）２０００やＷｉｎｄｏｗｓ（登録商標）ＸＰ（それ以降のＯＳを含む）である。  
【００２３】
USBスタンダードデバイスリクエストドライバ１２は、USBストレージデバイス１７に対し、表１に示すUSBスタンダードデバイスリクエスト（そのコマンドの発行）を行なうドライバで、以下に述べるディスクドライブドライバ１３（ＳＣＳＩドライバ）、USBマスストレージクラスドライバ１４の上位に位置するドライバである。〔表１〕
2007317053.tif 000003
【００２４】
当該コマンドでリクエストする“bmRequest_type”、“bRequest”、“wValue”、“wIndex”、“wLength”、“Data”に設定できる各データ長は、以下の表２に示す通りである。    〔表２〕
2007317053.tif 000004
【００２５】
ディスクドライブドライバ１３は、オペレーティングシステム１１から受け取った記憶装置へのアクセス指令等をＳＣＳＩコマンド変換してＵＳＢマスストレージクラスドライバ１４に渡すとともに、ＵＳＢマスストレージクラスドライバ１４から指令等を受け取りオペレーティングシステム１１に渡す。ＵＳＢマスストレージクラスドライバ１４は、ＵＳＢホストコントローラ１６を制御する。デバイスドライバ１５は、本発明USBストレージデバイス１７を駆動する専用のドライバである。ＵＳＢホストコントローラ１６は、図示しないＵＳＢコネクタ（雌）を備え、USBコネクタ（雄）を備えたUSBデバイスと接続されることによって、USB規格に基づいた通信を行うことができるようになっている。  
【００２６】
（２）ＵＳＢストレージデバイス１７  ＵＳＢストレージデバイス１７は、ＵＳＢインターフェース１９とコントローラ２１とフラッシュメモリ２５とを備える。  
【００２７】
ＵＳＢインターフェース１９は、ＵＳＢバス３０を介してホスト１０と通信を行う機能を担う。ＵＳＢインターフェース１９は、パケット送受信部１９ａとシリアルパラレル変換部１９ｂとパケット生成分解部１９ｃとＵＳＢバスパワー制御部１９ｄとを備える。  
【００２８】
パケット送受信部１９ａは、図示しないＵＳＢコネクタと接続され、ＵＳＢ規格に基づいたパケットを送受信する。シリアルパラレル変換部１９ｂは、シリアルデータとパラレルデータとを相互に変換する。パケット生成分解部１９ｃは、ホスト１０と通信を行うためのパケットの生成及びパケットを分解してデータの取り出しを行う。ＵＳＢバスパワー制御部１９ｄは、ホスト１０から供給される電力の管理及びＵＳＢストレージデバイス１７の各部位への電力の配分を行う。  
【００２９】
コントローラ２１は、メモリ制御部２１ａとＵＳＢインターフェース制御部２１ｂとメモリ情報記憶部２１ｃ、コマンドテーブル記憶部２１ｄ、並びに、コマンド実行部２１ｅとを備える。メモリ制御部２１ａは、フラッシュメモリ２５に対してデータの読み出し、書き込み及び削除を実行する。USBインターフェース制御部２１ｂは、前述したＵＳＢインターフェース１９の各部を制御する。メモリ情報記憶部２１ｃは、フラッシュメモリ２５の領域に関する情報を記憶する。以下、図２のデータ例を用いてこの情報について説明する。  
【００３０】
図２に示すように、メモリ情報記憶部２１ｃは、論理ユニット番号３１とフォーマット３３と書き込み削除可否フラグ３５と論理ブロック番号３７と物理ブロック番号３９とを備える。論理ユニット番号３１は論理ユニットを識別するための番号であり、「０」と「１」とが存在する。フォーマット３３は、論理ユニット番号３１に対応し、その論理ユニットのフォーマットを表す。  
【００３１】
データ例では、論理ユニット番号「０」は「ＦＡＴ」フォーマットであり、論理ユニット番号「１」は「ＩＳＯ９６６０」フォーマットである。書き込み削除可否フラグ３５は、論理ユニット番号３１に対応し、その論理ユニットに対して情報の書き込み及び削除の実行可否を表すフラグである。データ例では、論理ユニット番号「０」は「可」であり、論理ユニット番号「１」は「不可」である。論理ブロック番号３７は、ホスト１０によって指定されるブロック番号であり、論理ユニット毎に定義されている。  
【００３２】
このように、フラッシュメモリ２５の実ブロック番号である物理ブロック番号３９と論理ブロック番号３７との対応づけは、メモリ制御部２１ａによって管理されている。このため、物理ブロック番号３９と論理ブロック番号３７とは自由に対応付けを行うことができる。これは、フラッシュメモリの書き込み回数の制限などに対応させるためである。  
【００３３】
また、論理ユニット番号「０」のフォーマットをＩＳＯ９６６０にし、論理ユニット番号「１」のフォーマットをＦＡＴにしてもよい。また、更に論理ユニットを増やし、ユーザやアプリケーションによって使い分けられるようになっていてもよい。  
【００３４】
又、コマンドテーブル記憶部２１ｄには、表３（ａ）、（ｂ）にそれぞれ示すコマンド照合表（テーブル）が記憶されている。     〔表３〕（ａ）
2007317053.tif 000005
（ｂ）
2007317053.tif 000006
【００３５】
表３（ａ）は、デバイスドライバ１５がUSBスタンダードデバイスリクエストドライバ１２によって発行するパスワード取得コマンド（一例）に対応したテーブルである。パスワード取得コマンドは、USBスタンダードデバイスリクエストコマンドで定義されている“wValue”、“wIndex”の各々に、表（ａ）のような、本発明が独自の構成とする値を設定したものである。
【００３６】
“bmRequest_type”に0×08の値が設定されているが、これはUSBスタンダードデバイスリクエストコマンドで設定する値でリクエストタイプがデバイス情報取得タイプであることを示している。また、“bRequest”に0×06の値が設定されているが、これは同じくUSBスタンダードデバイスリクエストコマンドで設定する値で、リクエストがGet Descriptorであることを示している。
【００３７】
“wValue”には、0×AA、0×AAの値が設定されているが、これはUSBスタンダードデバイスリクエストコマンドでは定義されていない、即ちUSBスタンダードデバイスリクエストコマンドとしては意味のない数値である。USBスタンダードデバイスリクエストコマンドでは、“wValue”に２Ｂｙｔｅで任意の値が設定できるからである。
【００３８】
“wIndex”には0x00、0x01の値が設定されているが、これも、USBスタンダードデバイスリクエストコマンドでは、意味のない値である。USBスタンダードデバイスリクエストコマンドでは、“wIndex”に２Ｂｙｔｅで任意の値が設定できるため、“wValue”同様、このようなUSBスタンダードデバイスリクエストコマンドでは意味のない値が設定されている。
【００３９】
本実施例では、 “wValue”或いは“wIndex”、またはその両者を併せて、そこに設定されてなる値を、ホスト１１-デバイス１７間で、パスワード取得コマンドであると定義するものである。よって、後述するように、ホスト１１から、表３（ａ）に示すコマンドが、デバイス１７（より正確にはそのコントローラ２１）に送られると、後述するコマンド実行部２１eは、送られたコマンドを表３（ａ）、表３（ｂ）と対比・照合し、その結果、表３（ａ）と一致すると判断した場合は、パスワード取得コマンドであると解釈して、これを実行する。
【００４０】
更に、“wLength”に、0×08、0×00の値が設定されているが、これはバスワードを８Ｂｙｔｅで読み出せということを意味している。これは、パスワードがデバイス内に８Ｂｙｔｅ以内で記憶されていることに起因するものであり、仮にパスワードが６Ｂｙｔｅであれば、ホスト１０は６Ｂｙｔｅのパスワードを受信すれば足りるので、その場合は0×06、0×00の値が設定される。“Data”には、何の値も設定されていないが、これは、本コマンドの場合は、デバイスに対し付与すべきデータ（例えば書き込ませるべきデータなど）がないためである。
【００４１】
表３（ｂ）は、指紋認証用の元データ（登録データ）の取得コマンド例（そのテーブル）である。表３（ａ）との第１の相違点は、“wValue”が0xAA、0xBB、“wIndex”が0x00、0x02の値に設定されていることである。本発明では、前記（ａ）の場合同様、“wValue”と“wIndex”の両者を併せて、前記設定されてなる値を、ホスト１１-デバイス１７間で、指紋認証用の元データ取得コマンドであると定義している。“wValue”或いは“wIndex” のいずれかの値だけで定義することもできるが、その両者で定義しているので、より不正アクセスを防げる。
【００４２】
第２の相違点は、“wLength”が、0×FF、0×08という値に設定されていることである。これは、指紋認証用の元データが２Ｋｂｙｔｅ（2048Ｂｙｔｅ）の情報量であるため、当該情報量の指紋認証用の元データをホストに送信せよということを意味している。
【００４３】
上記で、“bmRequest_type”、“bRequest”に、USBスタンダードデバイスリクエストコマンドで定義されている値を設定しているが、定義されていない値がある場合は、規定されたデータ長で、任意の値を設定することができる。特に“wValue”、“wIndex”には、ベンダーが、２Ｂｙｔｅのデータ長であれば、USBスタンダードデバイスリクエストコマンドで定義されていない任意の値を設定できるので、その値を、コントローラ２１が実行すべき具体的コマンドとして、ホスト１１-デバス１７間で定義付けして使用することができる。  
【００４４】
コマンド実行部２１ｅは、ホスト１０のUSBスタンダードデバイスリクエストドライバ１２から送出された、USBスタンダードデバイスリクエストコマンドで定義されている“bmRequest_type”、“bRequest”、“wValue”、“wIndex”の各々に設定されているデータを確認し、これと前記コマンド照合表（テーブル）と対比・照合し、その同定確認を行なう。そして、そのいずれかである判断された場合は、そのコマンドで指令されている具体的内容（“wLength” 、“Data”）を判断し、これを実行する。例えば、所定データ長のユニーク情報を記憶場所から読み出して、これをホストに送出する。尚、コマンド実行部２１ｅは、上記の他、USBマスストレージクラスドライバ１４、ディスクドライブドライバ１５からのコマンドも実行するものである。  
【００４５】
フラッシュメモリ２５は、記憶保持動作が不要な半導体メモリ（不揮発性メモリー）である。記憶したデータは、メモリ制御部２１ａによって読み出すことが可能である。また、メモリ制御部２１ａによって書き込み及び削除をすることもできる。  
【００４６】
（ａ）起動処理  ＵＳＢストレージデバイス１７がホスト１０に接続された際に、ＵＳＢストレージデバイス１７のコントローラ２１でプログラムに基づいて実行される起動処理について、図３のフローチャートを用いて説明する。この起動処理は、ＵＳＢストレージデバイス１７がホスト１０に接続されることにより、ＵＳＢバスパワー制御部１９ｄに電力が供給され、さらにホスト１０側でエニュメレーション処理が実行されると開始される。尚、以下の実施例では、USBストレージデバイス１７は、パスワード情報を記憶し、ユーザがキーボードなどから入力したパスワードが、前記記憶されているパスワードと一致したときに、ユーザはホスト１０から、当該USBストレージデバイス１７にアクセス可能になるものとする。  
【００４７】
起動処理を開始すると、ホスト１０のUSBスタンダードデバイスリクエストドライバ１３からの指令に応じて、ディスクリプタと呼ばれるデバイス情報（デフォルトパイプの最大パケットサイズ等）をホスト１０に送信する（Ｓ１１０）。  
【００４８】
次に、同じくホスト１０からのUSBスタンダードリクエストドライバ１２の指令（SET Addressコマンド）に応じて、ＵＳＢストレージデバイス１７のアドレスを設定する（Ｓ１１１）。以降、このアドレス宛のフレームのみを当該ＵＳＢストレージデバイス１７は取得する。  
【００４９】
次に、より詳細なデバイス情報をホスト１０に送信する（Ｓ１１２）。このデバイス情報としては、エンドポイントに関する情報、クラス、サブクラス、プロトコル等である。その結果、ホスト１０ではＵＳＢマスストレージクラスドライバ１４起動され、図示しないアプリケーションソフトウェアからディスクドライブドライバ１３とＵＳＢマスストレージクラスドライバ１４とを介してＵＳＢホストコントローラ１６を制御するアクセスパスができる。  
【００５０】
続いて、ＵＳＢマスストレージクラスドライバ１４が、「Get Max Logical Unit Number API」コマンドによって論理ユニット番号数を要求するため、ＵＳＢストレージデバイス１７は、メモリ情報記憶部２１ｃから論理ユニット番号数が２であるという情報を読み出して、ホスト１０に送信する。  
【００５１】
そして、さらに、ディスクドライブドライバ１３がInquiryマンドを発行するため、ＵＳＢストレージデバイス１７は、メモリ情報記憶部２１ｃから論理ユニットのフォーマットに関する情報を読み出して、ホスト１０に送信する。  
【００５２】
これらの結果、ホスト１０は、ＵＳＢストレージデバイス１７を、ＦＡＴフォーマットから構成される論理ユニット番号「０」の領域とＩＳＯ９６６０フォーマットから構成される論理ユニット番号「１」の領域とを有するデバイスと認識する（Ｓ１１３）。そして、論理ユニット番号「０」の領域がCD-ROMドライブであることを表すアイコン（ドライブレターは例えば“Ｅ”）が、論理ユニット番号「１」の領域がリムーバブルディスクであることを示すアイコン（ドライブレターは例えば“Ｆ”）が、ホストに接続されたモニター（図示せず）に表示される。こうして、ホスト１０とデバイス１７との通信が確立されるが、この段階では、ユーザはまだデバイスの前記各領域にはアクセスできない（アクセスロック）。
【００５３】
次にデバイスドライバ１５は、USBスタンダードデバイスリクエストコマンドとして前述の表３（ａ）に示す値を設定し、USBスタンダードデバイスリクエストドライバ１２に当該コマンドをデバイス１７に発行させる。すると、コントローラ２１は、前述したように、コマンド実行部２１ｅがコマンドテーブル記憶部２１ｃに記憶されているコマンドテーブル（表３（ａ）乃至表３（ｂ））を参照し、コマンド内容を解釈し、これを実行する。即ち、ホスト１０は、当該デバイスの８Ｂｙｔｅのパスワードを取得し、これを図示しないRAMに一時保存する。
【００５４】
次にデバイスドライバ１５は、ホスト１０のモニタ上に、「パスワードを入力してください」と表示する。そしてキーボードなどからホスト１０に入力されたパスワードが、前記一時保存しているパスワードと一致するか判断する。一致していない場合は、「パスワードが一致しないため、アクセスできません」と表示するとともに、ユーザからの当該デバイス１７へのアクセスを実行しない。
【００５５】
パスワードが一致した場合は、当該デバイス１７へのアクセスロックを解除し（Ｓ１１５）、フラッシュメモリ２５を動作可能にし（Ｓ１１６）、起動処理を終了する。以降、ユーザは、ホスト１０のアプリケーションソフトより、フラッシュメモリ２５に対し、データの書き込みや読み出しを実行し得る。
【００５６】
本発明に依れば、制限ユーザはAdministrator権限下に依らず、自身の使用するホスト１０にデバイスドライバ１５をインストールして（例えば、CD-ROMなどによって）、デバイス１７を起動しこれにアクセスできる。  
【００５７】
その他、デバイスライバ１５のホスト１０へのインストール方法として、以下の方法を採ることができる。(１)デバイス１７のCD-ROM領域（論理ユニット番号「０」の領域）にデバイスドライバ１５を予めインストールしておく。(２)デバイスドライバ１５のファイル名を、前記Ｅドライブ（論理ユニット番号「０」のCD-ROM領域）のルートディレクトリのautorun.infに規定しておく。(３)OS１１がＥドライブを認識した際、アクセスロックは掛けない。Ｆドライブのみアクセスロックを掛ける。
【００５８】
以上のように設定すれば、OS１１が論理ユニット番号「０」のCD-ROM領域を認識した際、デバイスドライバ１５のホスト１０へのインストールが自動実行（オートラン）される。但しこれはOS１１の機能に基づくものであるため、例えばＷｉｎｄｏｗｓ （登録商標）Ｖｉｓｔａ以降のOSで、オートランを実行する際、オートラン実行の是非について、OS１１がモニタにその確認を求めてきたときは、「ＹＥＳ」の入力がオートランの条件となる（本願では掛かる場合もオートランと定義する）。このようにすれば、ユーザは外出先で使用するＰＣに、CD-ROM等で一々デバイスドライバをインストールする必要がない。そして、パスワード認証後、Ｆドライブのアクセスロックを解除する。  
【００５９】
（応用例１）上記ではパスワードを一つ用意し、デバイス１７自体へのアクセス可否に使用する例について説明したが、さらに応用展開することもできる。例えば、第２のパスワード（例えば１０Ｂｙｔｅ）を用意し、これを上述したパスワード（第１のパスワード）とは異なる領域に記憶しておく。さらに、フラッシュメモリ２５に、オペレーティングシステム１１が不可視であって、ユーザが使用可能な秘匿領域を設ける。秘匿領域は、管理領域に設けてもよいし、或いは、管理領域や前述のCD-ROM領域、リムーバブルディスク領域以外に他の領域を設けてそこを秘匿領域としてもよい。
【００６０】
そして、デバイスドライバ１５は、第１のパスワードの照合が一致した後に、「秘匿領域にアクセスしますか」と表示し、「Ｙｅｓ」の入力があればその後に、第２のパスワードを入力させ、一致した場合のみ、秘匿領域にアクセス可能に構成してもよい。このようにすれば、より機密性の高い文書へのアクセスは２度のパスワードの照合をクリアーする必要があり、機密性をより高めることができる。
【００６１】
（応用例２）  また、パスワードや指紋認証用の元データのデバイスへの登録（デバイスへの記憶保持）は、セキュリティーの関係上、そのユーザ自身によって行なわれるべきであるが、この書き込みをSCSI標準コマンドなど、一般的に誰でもが容易に入力できるとセキュリティー上極めて問題となる。よって、デバイスドライバ１５によって、デバイス使用開始時に、以下の方法により、パスワードや指紋認証用の元データをデバイスに登録することが有効となる。  
【００６２】
１．パスワード登録例USBスタンダードデバイスリクエストコマンドの一つである、SET Descriptorコマンドの “wValue”或いは“wIndex”のいずれか、若しくはその両者に、SET Descriptorコマンドでは意味をなさない２Ｂｙｔｅのデータをそれぞれ設定する。“wLength”には、前記パスワードのデータ長を、“Data”にはユーザが指示した実際に登録すべきパスワードを設定する。コントローラのコマンドテーブル記憶部２１ｄには、このコマンドが送られたときに対比・照合するためのコマンド照
合テーブルを設けておく。「パスワード登録コマンド」であるか否かは、上記のように、“wValue”、“wIndex”に設定されたSET Descriptorコマンドでは意味をなさないそれぞれ２Ｂｙｔｅのデータが、予めホスト１０とデバイス１７間で取り決めた内容と一致するかどうかによって、コマンド実行部２１ｅが判定する。パスワード登録コマンドであると判定された場合は、フラッシュメモリ２５又は当該コントローラ２１の予め設定されている場所に、そのパスワードが不揮発的に記憶される。
【００６３】
２．指紋認証用の元データの登録例
USBスタンダードデバイスリクエストコマンドの一つである、SET
Descriptorコマンドの“wValue”或いは“wIndex”のいずれか、若しくはその両者に、上記パスワード登録コマンドとは異なり、且つ、SET Descriptorコマンドでは意味をなさないそれぞれ２Ｂｙｔｅのデータを設定する。“Data”には、ユーザのオリジナル指紋データ（イメージデータ若しくはビットマップデータ）を設定する。コントローラのコマンドテーブル記憶部２１ｄには、このコマンドが送られたときに対比・照合するためのコマンド照合テーブルをさらに設けておく。
【００６４】
「指紋認証用の元データの登録コマンド」であるか否かは、上記のように、 “wValue”或いは“wIndex”のいずれか、若しくはその両者に設定されたSET Descriptorコマンドでは意味をなさないそれぞれ２Ｂｙｔｅのデータが、予めホスト１０とデバイス１７間で取り決めた内容（前記パスワード認証の場合とは異なる）と一致するかどうかによって、コマンド実行部２１ｅが判定する。指紋認証用元データの登録コマンドであると判定された場合は、フラッシュメモリ２５又はコントローラ２１の予め設定されている場所に、そのデータが不揮発的に記憶される。尚、指紋認証機能をデバイス１７に搭載する場合は、登録された元データとデバイス１７へのアクセス時に入力される指紋データとを対比して所定のアルゴリズムによりその同定を行なうプログラムをデバイス１７（コントローラ２１を含む）若しくはデバイスドライバ1５に予め組み込んでおけばよい。
【図面の簡単な説明】
【００６５】
【図１】実施例のＵＳＢストレージデバイスの構成を示すブロック図である。
【図２】メモリ情報記憶部に記憶されているデータ例である。
【図３】起動処理を説明するためのフローチャートである。
【符号の説明】
【００６６】
１０…ホスト、１１…オペレーティングシステム、１２…ＵＳＢスタンダードデバイスリクエストドライバ、１３…ディスクドライブドライバ、１４…ＵＳＢマスストレージクラスドライバ、１５…デバイスドライバ、１６…ＵＳＢホストコントローラ、１７…ＵＳＢストレージデバイス、１９…ＵＳＢインターフェース、１９ａ…パケット送受信部、１９ｂ…シリアルパラレル変換部、１９ｃ…パケット生成分解部、１９ｄ…ＵＳＢバスパワー制御部、２１…コントローラ、２１ａ…メモリ制御部、２１ｂ…ＵＳＢインターフェース制御部、２１ｃ…メモリ情報記憶部、２１ｄ…コマンドテーブル記憶部、２１ｅ…コマンド実行部、２５…フラッシュメモリ、３０…ＵＳＢバス
【図３】
2007317053.tif 000007
【図１】
2007317053.tif 000008
【図２】
2007317053.tif 000009