(57)【要約】【課題】安全かつ高速なユニバーサルシリアルバスデバイスのデータ伝送技術を提供する。【解決手段】ホストコンピュータがデバイスにコマンドを送信するステップにおいて、ホストコンピュータはコマンドをSCSIプロトコルによりSCSIコマンドに変換し、USBコマンドパッケージにパッケージされ、USBプロトコルによりデータを伝送する。デバイスとホストコンピュータが通信するUSBプロトコルと、デバイスが上層へデバイスドライバとインタラクティブを行うSCSIプロトコルとで構成するUSBバスによる高速伝送技術。【選択図】        図１
2006344206.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータとユニバーサルシリアルバスデバイスとの間で、
１）前記ホストコンピュータが前記デバイスに対して初期化を行うステップと、
２）前記ホストコンピュータが前記デバイスにコマンドを送信するステップと、
３）前記デバイスがコマンドに対する解析と処理を行うステップと、
４）前記デバイスが前記ホストコンピュータのアプリケーションプログラムに応答するステップとでもって、データ通信を行うユニバーサルシリアルバスデータ伝送方法であって、
前記ホストコンピュータが前記デバイスにコマンドを送信するステップにおいて、前記ホストコンピュータはコマンドをSCSIプロトコルによりSCSIコマンドに変換し、ユニバーサルシリアルバスコマンドパッケージにパッケージされ、ユニバーサルシリアルバスプロトコルによりデータを伝送することを特徴とするユニバーサルシリアルバスデータ伝送方法。
【請求項２】
前記ホストコンピュータのオペレーティングシステムは、前記ホストコンピュータと前記デバイスとの間のデータの直接交換を制御することを特徴とする請求項１に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項３】
前記シリアルバスプロトコルは、高速なユニバーサルシリアルバスバルク転送プロトコルであることを特徴とする請求項１または２に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項４】
前記SCSIプロトコルは、INQUIRY、READCAPSを含んでいることを特徴とする請求項１または２に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項５】
前記ホストコンピュータが前記デバイスにコマンドを送信する前記ステップは、
ａ）ホストコンピュータアプリケーションプログラムがデバイスオブジェクトによってコマンドを送信し、データの入力と出力とを行うステップと、
ｂ）オペレーティングシステムデバイスドライバが基本コマンドをSCSIコマンドに変換するステップと、
ｃ）オペレーティングシステムデバイスドライバが、SCSIコマンドをユニバーサルシリアルバスデータパッケージに変換するステップと、
を含んでいることを特徴とする請求項１または２に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項６】
前記デバイスがコマンドに対する解析と処理を行う前記ステップは、
i) 前記デバイスが、SCSIコマンドが含まれているユニバーサルシリアルバスデータパッケージを処理するステップと、
ii)前記デバイスが、ユニバーサルシリアルバスデータパッケージにより逐次にそれをユーザデータパッケージに解析し、ユーザデータパッケージにより関連コマンドを実行するステップと、
を含んでいることを特徴とする請求項１または２に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項７】
関連コマンドを実行する前記ステップの中で、前記コマンドの機能はデータのセキュア保存、アクセス制御、データ処理のステップを含んでいることを特徴とする請求項６に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項８】
前記データ処理のステップにおいて、データに対するアルゴリズム処理は自己定義ステップ及びセキュリティ処理ステップを含み、前記セキュリティ処理ステップはRSAと、DESと、3DESと、MD5と、SHA-1と、SSF33と、AESと、楕円曲線アルゴリズムのいずれか又は全てを含んでいることを特徴とする請求項7に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項９】
前記デバイスと前記ホストコンピュータとのバルク転送プロトコルは、
Ａ．デバイス識別子を送信するステップと、
Ｂ．配置識別子を送信するステップと、
Ｃ．文字列識別子を送信するステップと、
Ｄ．デバイスとデータ通信を行うステップと、
を含んでいることを特徴とする請求項３に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項１０】
情報セキュリティ或いはソフトウェア保護の分野に適用されることを特徴とする請求項１または２に記載のユニバーサルシリアルバスデータ伝送方法。
【請求項１１】
ファームウェアプログラムとユーザプログラムとを実行するためのCPUと、デバイスとホストコンピュータの通信のためのユニバーサルシリアルバスインターフェースチップと、前記ファームウェアプログラム及びユーザデータ、アルゴリズム及び各種情報を記憶するメモリとを備え、前記CPUは前記ユニバーサルシリアルバスインターフェースチップとメモリとそれぞれ接続していることを特徴とするユニバーサルシリアルバス伝送デバイス。
【請求項１２】
集積した前記CPUと、前記ユニバーサルシリアルバスインターフェースチップと、前記メモリとを有する１つの集積MCUチップを備えていることを特徴とする請求項１１に記載のユニバーサルシリアルバス伝送デバイス。
【請求項１３】
集積した前記CPUとメモリとを有する１つの集積MCUチップと、前記ユニバーサルシリアルバスインターフェースチップとを備えていることを特徴とする請求項１１に記載のユニバーサルシリアルバス伝送デバイス。
【請求項１４】
前記MCUチップはセキュリティ設計したチップであり、スマートカードチップを含むことを特徴とする請求項１２または１３に記載のユニバーサルシリアルバス伝送デバイス。
【請求項１５】
前記CPUはシングルチッププロセッサーであり、前記メモリはRAMと、ROMと、EPROMと、EEPROMと、FLASHとを備えていることを特徴とする請求項１１〜１３のいずれかに一項に記載のユニバーサルシリアルバス伝送デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ伝送技術に関するものであり、具体的に言えば、ユニバーサルシリアルバスデータ伝送方法及びその方法を実施するデバイスに関するものである。
【背景技術】
【０００２】
従来のユニバーサルシリアルバス（ＵＳＢ）技術は、ユニバーサルシリアルバス伝送プロトコルを用い、よい利用性を提供する技術であり、この技術を利用するデバイスは一般的に下記のようなものがある。
【０００３】
ドライバなし（ドライバインストールなし）デバイス：これはオペレーティングシステムにあるドライバを利用してデバイスをインストールするものである。
ドライバ付きデバイス：それはメーカーからドライバを提供することによって、初めてそのデバイスが使用できるようになるものである。
【０００４】
従来、情報セキュリティデバイスについては、いつもそのドライバがメーカーからユーザに提供されるものであり、つまりドライバ付きデバイスと呼ばれるものである。このようなデバイスは、普通、ベンダーが自己定義デバイスとして開発設計したものである。その後、ドライバなしに使用できるソフトセキュリティ製品が現れ、つまりそのドライバがオペレーティングシステムから直接に提供され、即ちドライバなしデバイスと呼ばれ、われわれがよく使用しているものである。例えば、飛天ソフトセキュリティ製品であるROCKEY2、即ち、低速なHIDをその通信プロトコルとするものである。デバイスタイプの情報セキュリティデバイスは、そのスピードが他のドライバ情報セキュリティデバイスより大分遅い。デバイスタイプのこのようなプロトコル、例えばHIDは、普通、システムとのデータインタラクティブの少ないマウスやキーボート等入力デバイスに使用するものである。
【０００５】
ドライバ付きタイプの情報セキュリティデバイスの最大な欠点は使用上不便であることで、つまりソフト暗号化保護装置或いは他の情報セキュリティデバイスの特殊性によって、最終ユーザに提供するドライバは複数の同様の或いは異なったバージョンのものであり、場合によって、ベンダーのバージョンが複数ある。複数のベンダーからそれぞれのドライバを同一ユーザに提供した場合、ユーザが複数の同種類のデバイスにおける複数の異なったバージョンのドライバに対応する必要があり、かつそれぞれのドライバが衝突してしまい、ユーザのインストール失敗あるいはシステムダウンを引き起こす可能性がある。それだけではなく、ドライバのインストール自体がオペレーティングシステムに対する潜在的なトラブルの要因となる。
【０００６】
現在広く使われているデバイスタイプのソフト保護（セキュリティ）デバイスの最大な欠点はそのスピードが遅いことである。従来のHIDデバイスの使用は現在の情報セキュリティデバイスの要望を満たすことができない。
【０００７】
ドライバなしユニバーサルシリアルバスデバイスの主な問題は、PCとの通信が、ユニバーサルシリアルバスプロトコルと呼ばれ、その全てがPCにより定義されるプロトコルによって決定されることである。従って、伝送スピードを高めるためには、伝送プロトコルの上で行わなければならなく、及び高速なかつこの情報セキュリティデバイスに適すプロトコルを選ばなければならない。
【０００８】
ソフト保護製品等のような情報セキュリティデバイスの特徴については、前記二種類のデバイスの欠点が明らかであり、まずその主な性能指標が実行スピードと通信スピードであるが、その実行スピードとは、コマンドがデバイスにおいて実行される速度であり、主にアルゴリズムとCPUによるものであり、改善の余地が少ない。重要なのは通信スピードである。ドライバなし低速デバイスの伝送スピードはデバイス動作の最適状況に達しないため、ユーザプログラムの実行効率を低下させてしまい、そしてベンダーのドライバが多数あるため、もしドライバのある自己定義デバイスを使用すれば、最終ユーザがプログラムを使用するコンピュータ毎にドライバをそれぞれインストールしなければならないから、ベンダーのプログラムの使用は不便である。最後に、ベンダーのドライバが小さいプログラムと仮定しても、ドライバという特殊なソフトがユーザのコンピュータに存在するため、それ自身がユーザコンピュータシステムに対して潜在的な脅威（システムの不安定等）及び資源の浪費が存在する。
【０００９】
また、２００２年に市場で広く流行したUSBフラッシュメモリにおいて、それはユニバーサルシリアルバスに基づく高速なドライバレスデバイスを実現したものであるが、主にデータSTORAGEとして使用するもので、内部CPUと自己定義アルゴリズムが情報セキュリティやソフト保護分野のセキュリティデバイスとなることは不可能である。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の解決しようとする課題は前記の欠点を克服し、安全かつ高速なユニバーサルシリアルバスデバイスのデータ伝送方法及びその方法を実施するデバイスを提供することである。
【課題を解決するための手段】
【００１１】
前記課題を解決するために、本発明では、ホストコンピュータとユニバーサルシリアルバスデバイスとの間で、
１）前記ホストコンピュータが前記デバイスに対して初期化を行うステップと、
２）前記ホストコンピュータが前記デバイスにコマンドを送信するステップと、
３）前記デバイスがコマンドに対する解析と処理を行うステップと、
４）前記デバイスが前記ホストコンピュータのアプリケーションプログラムに応答するステップとでもって、データ通信を行う際、前記ホストコンピュータが前記デバイスにコマンドを送信するステップにおいて、前記ホストコンピュータはコマンドをSCSIプロトコルによりSCSIコマンドに変換し、ユニバーサルシリアルバスコマンドパッケージにパッケージされ、ユニバーサルシリアルバスプロトコルによりデータを伝送する。
【００１２】
前記ホストコンピュータ内のオペレーティングシステムは、ホストコンピュータを制御し、デバイスと直接にデータを交換することができる。
【００１３】
前記シリアルバスプロトコルは、高速なユニバーサルシリアルバスバルク転送プロトコルとすることができる。
【００１４】
前記SCSIプロトコルは、INQUIRY、READCAPSを含むことができる。
【００１５】
前述したステップ２）すなわち、ホストコンピュータがデバイスにコマンドを送信するステップは、
ａ）ホストコンピュータアプリケーションプログラムがデバイスオブジェクトによってコマンドを送信し、データの入力と出力とを行うステップと、
ｂ）オペレーティングシステムデバイスドライバが基本コマンドをSCSIコマンドに変換するステップと、
ｃ）オペレーティングシステムデバイスドライバが、SCSIコマンドをユニバーサルシリアルバスデータパッケージに変換するステップと、
を備えることができる。
【００１６】
前述したステップ３）すなわち、前記デバイスがコマンドに対する解析と処理を行うステップは、
i) デバイスが、SCSIコマンドが含まれているユニバーサルシリアルバスデータパッケージを処理するステップと、
ii)デバイスが、ユニバーサルシリアルバスデータパッケージを逐次にユーザデータパッケージへ変換し、ユーザデータパッケージにより関連コマンドを実行するステップと、
を備えることができる。
【００１７】
前記ステップii)すなわち、関連コマンドを実行するステップにおいて、前記コマンドの機能はデータの安全記憶、アクセス制御、データ処理のステップを含んでいる。このデータ処理のステップにおいて、データに対するアルゴリズム処理は自己定義ステップ及びセキュリティ処理ステップを含み、このセキュリティ処理ステップはRSAと、DESと、３DESと、MD5と、SHA-1と、SSF33と、AESと、楕円曲線アルゴリズムのいずれか又は全てを含んでいる。
【００１８】
前記デバイスとユニバーサルシリアルバスとのバルク転送プロトコルには、
Ａ．デバイス識別子を送信するステップと、
Ｂ．配置識別子を送信するステップと、
Ｃ．文字列識別子を送信するステップと、
Ｄ．デバイスと通信を行うステップと、
が含まれている。
【００１９】
上述したユニバーサルシリアルバス伝送方法は情報セキュリティあるいはソフト保護の分野に好適に適用することができる。
【００２０】
上述したユニバーサルシリアルバス伝送方法に用いられる、本発明によるユニバーサルシリアルバス伝送デバイスは、ファームウェアプログラムとユーザプログラムとを実行するためのCPUと、デバイスとホストコンピュータの通信のためのユニバーサルシリアルバスインターフェースチップと、ファームウェアプログラム及びユーザデータ、アルゴリズム及び各種情報を記憶するメモリとを備え、前記CPUは前記ユニバーサルシリアルバスインターフェースチップとメモリとそれぞれ接続している。
【００２１】
本発明のユニバーサルシリアルバス伝送デバイスは、集積した前記CPUと、ユニバーサルシリアルバスインターフェースチップとメモリを有する１つの集積MCUチップとを備えて構成することができる。
【００２２】
また、本発明のユニバーサルシリアルバス伝送デバイスは、集積した前記CPUとメモリを有する１つの集積MCUチップと、ユニバーサルシリアルバスインターフェースチップとを備えて構成することができる。
【００２３】
前記MCUチップはスマートカードチップとすることができる。
前記CPUはシングルチッププロセッサーとし、前記メモリはRAMと、ROMと、EPROMと、EEPROMと、FLASHとを備えていることができる。
【００２４】
前述したユニバーサルシリアルバスデータ伝送技術（ユニバーサルシリアルバスデータ伝送方法とユニバーサルシリアルバス伝送デバイス）における本発明の構成では、
デバイスとホストコンピュータが通信するユニバーサルシリアルバスプロトコルと、デバイスが上層へディスクドライバとインタラクティブを行うSCSIプロトコルでデータを伝送しているため、このようなユニバーサルシリアルバスによる高速記憶技術がより高速な伝送スピードを持ち、良好な利用性を提供する。本発明はユニバーサルシリアルバスでデータ伝送を行い、オペレーティングシステムに既存するデバイスドライバを利用するだけで、その自身のインストールと初期化ができる。本発明は普及しているオペレーティングシステムにおいては、他のドライバの提供は不要である。その普及しているオペレーティングシステムとしては、Microsoft  Windows  ME、2000、XP、2003（いずれもマイクロソフト社の登録商標または商標）及びLinux（Linus Torvalds の米国およびその他の国における登録商標または商標）とMac OS（アップル社の登録商標または商標）が挙げられる。当該ドライバを提供しないオペレーティングシステム、例えばWindows98（マイクロソフト社の登録商標または商標）においても、オペレーティングシステムベンダーが本デバイスを駆動するために、ドライバを添付しているのは普通である。このドライバは通常のドライバデバイスの使用するドライバと比べれば、下記の利点がある。
１．互換性は良好である。そのドライバはオペレーティングシステムメーカーから提供されたもので、そのオペレーティングシステムにおいては、安定的に実行できると同時に、より多くのデバイスをサポートすることができ、つまりこの種類のデバイスの全てをサポートすることができる。
２．安定性は良好である。そのドライバはオペレーティングシステムメーカーから提供されたもので、完全に測定され、かつ電子署名情報が含まれている。
【００２５】
また、本発明はファイルシステムサポートを提供せず、つまりドライブ名を生成することはない。それは情報セキュリティ製品の要望に適し、即ちプログラムが直接にディスクドライブデバイスとインタラクティブを行い、カードのオペレーティングシステムにより制御するが、直接にファイルシステムを通してデバイス内のファイルを操作しない。従って良好なセキュリティが確保できた。
【発明を実施するための最良の形態】
【００２６】
本発明の実施形態は、ユニバーサルシリアルバスデータ伝送プロトコルとSCSIプロトコルとからなるユニバーサルシリアルバスに基づく高速記憶技術である。
【００２７】
そのユニバーサルシリアルバスに基づく伝送方法は、使用するオペレーティングシステムに既存するデバイスドライバを利用して、それ自身のインストールと初期化ができる。本発明は普及しているオペレーティングシステムにおいて、他のドライバの提供は不要である。その普及しているオペレーティングシステムは、Microsoft  Windows  ME、2000、XP、2003及びLinuxとMac OSを含んでいる。当該ドライバを提供しないオペレーティングシステム（例えばWindows98）においても、オペレーティングシステムベンダーは本デバイスを駆動するの、ドライバを添付するのは普通である。このドライバは通常のドライバデバイスの使用するドライバと比べれば、次の利点がある。
１．互換性は良好である。そのドライバはオペレーティングシステムメーカーより提供されるもので、そのオペレーティングシステムにおいて安定的に実行できると同時に、より多くのデバイスをサポートすることができ、つまりこの種類のデバイスの全てをサポートすることができる。
２．安定性は良好である。そのドライバはオペレーティングシステムメーカーより提供されるもので、完全に測定され、かつ電子署名情報が含まれている。
【００２８】
ユニバーサルシリアルバスデバイスは、その通信方式が通信速度により主に下記のように分類できる。
１．低速：主にインタラクティブデバイス（キーボート、マウス、ジョイスティック）として使用される。その伝送スピードは10〜20kb/sである。このようなデバイスの特徴はホットプラグができ、利用性が良好かつ安価なことである。
２．中速：主に電話、オーディオ、圧縮ビデオ等として使用される。その伝送スピードは500 kb/s〜10Mb/sである。主な特徴は安価かつ利用性が良好であり、動的なプラグ、帯域幅と遅延の制限ができることである。
３．高速：主にオーディオ、ディスクとして使用される。その伝送スピードは25〜500Mb/sである。主な特徴は帯域幅が広く、遅延が限定でき、使用しやすいことである。
【００２９】
ユニバーサルシリアルバスデバイスの通信方式は、ユニバーサルシリアルバスプロトコルにより下記のように分類できる。
１．制御データ転送：デバイスを接続する際に、デバイスに対する設定を行う。またデバイスを指定して制御することができる。例えばチャンネル制御。
２．バルクデータ転送：大量に生じ、かつ使用されるデータは、伝送拘束の下で、広いダイナミック範囲を有する。
３．割り込みデータ転送：人の感覚を記述またはマッチするか、あるいは特徴反応をフィードバックする。
４．アイソクロナスデータ転送：予め確定した転送遅延によって予定したユニバーサルシリアルバスの帯域を占める。
【００３０】
本発明において、デバイスとホストコンピュータの通信は、ユニバーサルシリアルバスバルクデータ転送プロトコルを使用し、デバイスが上層へデバイスドライバとオペレーティングシステムとのインタラクティブを行う時に、SCSIプロトコルを使用する。
【００３１】
本発明におけるユニバーサルシリアルバス伝送デバイスは、ホストコンピュータにwindowsシステムをインストールするのを例として、ユニバーサルシリアルバスによってデータを伝送する方法は、下記の過程により実現される。
【００３２】
１．ホストコンピュータアプリケーションプログラムはディスクデバイスを介してINQUIRY  SCSIコマンドを送信し、本デバイスを識別する。デバイスがコンピュータに接続される場合、オペレーティングシステムは、デバイスに対して、そのハードウェアメーカー、製品及びシリアルナンバー等の情報を獲得するための識別子を取るコマンドを送信する。インストールする際に、オペレーティングシステムはまずそれにINQUIRYコマンドパッケージを一つ送信し、その中で、重要なのはDeviceType要素をDIRECT_ACCESS_DEVICEに設定することである。それでデバイスがディスクデバイスと表現されると同時に、その中にメーカーと製品の文字列を付けることで、将来、プログラムの中で、その二つの標識によってそのデバイスの識別ができる。ここで、主に idVerdor 、idProduct、iManufacturer、iSerialNumber要素でメーカー、製品IDとハードウェアシリアルナンバーを定義する。そのとき、iManufacturer、iSerialNumberはある文字列のインデックスを指し、その文字列とは下記のような文字列識別子を取るコマンドである。
【００３３】
２．オペレーティングシステムはデバイスの識別子を処理した後に、主に配置識別子、インターフェース識別子、ポート識別子及び文字列識別子を含む配置識別子を取るコマンドを送信する。本発明において、ディスクデバイスを実現するキーポイントはインターフェース識別子の処理にあり、その中の重要要素はbInterfaceClass及びbInterfaceProtocolである。本発明では、bInterfaceClass要素の値は08Hであり、デバイスの類別がMESS  STORAGEであることを示し、bInterfaceProtocol要素の値は50Hであり、デバイスの通信プロトコルとしてBULK-ONLYプロトコルを選択すると示す。その識別子を処理した後に、オペレーティングシステムは自動的にドライバをインストールし、MESS  STORAGEにより、ディスク物理デバイスオブジェクトを生成してから、ディスクドライバによりディスクデバイスとしてインストールする。文字列識別子は主に第1ステップのデバイス識別子を取る際に必要な文字列を提供するのであり、iManufacturer要素とiSerialNumber要素等はインデックスだけであり、そのインデックスは今回の文字列識別子の中で送信した文字列を指すものである。その三つの要素はそれぞれ文字列のバイト数、識別子の種類と文字列である。前記のステップを踏んで、デバイスの初期化が完成される。
それと同時に、READCAPSによりデバイス能力を獲得する。そのSCSIコマンドは、主にオペレーティングシステムがそれを通して本デバイス容量等の情報を獲得するものであり、SCSIコマンドパッケージのDataBuf要素にREAD_CAPACITY_DATA構造であるデータを填めることだけで、デバイス能力の処理が完成される。
LogicalBlockAddress要素はロジックモジュールの数を表し、BytesPerBlock要素はモジュールのサイズを表し、このモジュールのサイズは一回分の通信最小データ量であり、ソフト保護製品の特徴によって、その値を256、128或いはそれ以下に設定でき、デバイスの総容量はその二つの数値の相乗積である。
【００３４】
３．デバイス通信：デバイスが初期化を完了した後、アプリケーションプログラムはAPIを通してデバイスと通信できるようになる。プログラムはデバイスと通信する時、デバイスが受け取ったCBWデータパッケージの中で、SCSIデータパッケージを解析して出す。
READ10要素は、上層アプリケーションプログラムがReadfileを通して本デバイスからデータを読み取る時、システムディスクドライバはそのコマンドを関連するSCSIコマンドであるREAD10に変換し、下層に転送する。このコマンドの処理は標準ディスクと異なり、部分的なプロトコルを実現するだけで、オフセットや長さ等の情報を考慮する必要がなく、DataBuf要素だけを考慮すればよい。DataBuf要素は、本デバイスにコマンドを送信する時にそのデバイスからフィードバックしたユーザデータである自己定義の通信プロトコルを含んでいる。その具体的過程は下記の通りである。
１）ホストコンピュータアプリケーションプログラムはディスクデバイスを通して、ReadFileとWriteFile等ドキュメントI/Oコマンドを送信し、データの入出力を行う。
２）オペレーティングシステムディスクデバイスドライバは基本ドキュメントI/Oコマンド（ReadFile、WriteFile）をSCSIコマンドに変換する。
３）オペレーティングシステムディスクデバイスドライバはSCSIコマンドをユニバーサルシリアルバスSTORAGEに転送する。
４）ユニバーサルシリアルバSTORAGEはSCSIコマンドをユニバーサルシリアルバスコマンド、即ちユニバーサルシリアルバスデータパッケージにパッケージされる。
【００３５】
４．デバイスはSCSIコマンドによって処理を行い、最後に状態パッケージCSWをアプリケーションプログラムに返信し、これでアプリケーションプログラムとそのデバイスとの一回分の通信は完成する。その具体的な過程は下記の通りである。
１）デバイスは、SCSIコマンドを含むユニバーサルシリアルバスデータパッケージを処理する。
２）デバイスは、ユニバーサルシリアルバスデータパッケージによりユーザデータパッケージに逐次に解析し、ユーザデータパッケージにより、関連コマンドを実行し、データアルゴリズム処理については、自己定義処理過程及び標準処理過程を含む。標準処理過程はRSA、DES、3DES、MD5、SHA-1、SSF33、AES、楕円曲線アルゴリズム等を含んでいる。
この過程において、データパッケージ内のコマンドとデータを解析することにより、デバイスに対する認証と認可(authorization)を行い、デバイス内のデータの読み取りと書き込みの権限を確定する。
【００３６】
５．上層のアプリケーションプログラムはWriteFileを通して本デバイスにデータを書き込む際に、システムディスクドライバはそのコマンドを関連するSCSIコマンドWRITE10に変換し下層に転送する。このコマンドの処理は標準ディスクと異なり、部分的なプロトコルを実現するだけで、オフセットや長さ等の情報を考慮する必要がなく、DataBuf要素だけを考慮すればよい。DataBuf要素は、このデバイスにコマンドを送信する時のユーザデータである自己定義の通信プロトコルを含んでいる。
【００３７】
また、本発明において、ホストコンピュータプログラムはデバイスと直接にインタラクティブを行い、デバイス内のオペレーティングシステムを通して制御し、ファイルシステムを通して直接にデバイス内のファイルを操作せず、つまりファイルシステムのサポートを提供しない。従って、ユーザの計算機システムにドライブ名を生成しないため、情報セキュリティ製品のニーズに適応できる。
【００３８】
図１に示すように、本発明の各通信モジュールがシステムにおける位置を示している。
【００３９】
Applicationsはユーザプログラム、ユーザに提供する本発明のインターフェースリポジトリ Aを含み、ユーザプログラムは本発明の提供するインターフェースリポジトリ を利用して本デバイスへのアクセスができる。
【００４０】
Win32APIは主にWindowsの提供するAPIインターフェース関数Cを指している。関数CはCreateFile、Readfile、WriteFile、DeviceIoControl等を含み、これらの関数は本発明を実現するユーザインターフェースリポジトリ の基礎であり、そのインターフェースリポジトリは、主にこれらのAPIを通して、下層のディスクドライバとインタラクティブを行うものである。
【００４１】
User-mode driversはユーザモードドライバBであり、カーネルモードドライバにアクセスするインターフェースを提供し、本発明において、APIインターフェース関数Cがこのシステムで位置している層を説明するのに用いる。
【００４２】
Other  kernel-mode driversはシステムの他のカーネルモードドライバDであり、ユーザモードドライバがハードウェアにアクセスし、システム機能を提供するサービスに用いる本発明において、下記のE1、E2、E3がシステムにおける機能する層を説明するのに用いる。
【００４３】
Disk DriversディスクドライバE1は、オペレーティングシステムにより定義される。それは上層の読み取りと書き込みのリクエストをSCSIプロトコルに変換し、下層のデバイスに送信する。
【００４４】
SCSI  Drivers  SCSIデバイスドライバE2は、主にSCSIアダプターを指し、オペレーティングシステムにより定義される。それは上層のSCSIプロトコルをパッケージされ、下層のデバイスに送信する。
【００４５】
ユニバーサルシリアルバスドライバE3は、主にユニバーサルシリアルバスSTORAGEドライバを指し、オペレーティングシステムにより定義される。それは上層のパッケージされたSCSIプロトコルをユニバーサルシリアルバスデータパッケージにパッケージし、下層のハードウェア抽象層Gに送信する。
【００４６】
File  system driversはファイルシステムドライバFであり、システムのファイルシステム管理を提供するのに用いる。例えばFAT32。
【００４７】
HAL：ハードウェア抽象層Gはオペレーティングシステムにより定義され、実現される。主にハードウェアをアクセスするサービスを提供し、上層から転送されたハードウェアリクエストによりハードウェアとインタラクティブを行う。
【００４８】
シリアルバスデバイスHは、シリアルバスデバイス内のファームウェアプログラムプログラムであり、ユニバーサルシリアルバスデータパッケージの解釈処理をし、本発明において、本発明のデバイスを説明するのに用いる。
【００４９】
本発明はまたシリアルバスデータ伝送通信インターフェースをも提供する。その通信インターフェースは少なくとも一つの情報セキュリティ製品の機能を実現する。そのインターフェースはユーザのリクエストを本デバイスに送信する。本発明において実現するSCSIプロトコルは、本デバイスのサポートをオペレーティングシステムのディスク層に上げることができ、つまり、オペレーティングシステムの中で、ディスクとして表現するが、そのファイルシステムを実現しないため、ファイルに基づくアクセスインターフェースを提供しない。Windowsオペレーティングシステムを例として、アプリケーション層のプログラムは直接にSetupAPIを通してディスク層デバイスを列挙し、各デバイス毎にInquiryで問い合わせし、自己デバイスに属するかどうかを判断し、最後にCreateFile  APIを通して、デバイスハンドルをオープンして通信を行う。その通信インターフェースはオペレーティングシステムの提供するAPI関数を利用して、ディスク層を通して、直接に読み取りと書き込みをすることにより通信する。
【００５０】
本発明の上記技術内容によって、ここで好ましい実施例二つを提供する。
（実施例１）
実施例１は下記のようなソフト保護デバイス４を提供する。
図２に示すように、ソフト保護デバイス４は、CPU８と、CPU８にそれぞれ接続されるユニバーサルシリアルバスインターフェースチップ７とメモリとを集積した集積MCUチップ５を有す。本実施例において、CPU８は、例えばIntel  8051やPhilips  80C31等のような任意なマイクロプロセッサーであり、ユニバーサルシリアルバスインターフェースチップ７はUSBインターフェースチップであり、メモリはFLASH9、RAM10、ROM11、EPROM12等である。上記USBインターフェースチップ７はユニバーサルシリアルバスプロトコル、即ち本実施例のUSBプロトコル３とSCSIプロトコル２によって、ホストコンピュータオペレーティングシステムのI/Oコマンド１とインタラクティブを行う。上記MCUは普通のシングルチッププロセッサー、例えば80C51等とすることができるが、専用なスマートチップ、例えばATMEL6464C-Uとすることもできる。スマートチップを利用する長所は、デバイスが認証していない場合、内部プログラムと普通データを読み取ることができないように保証することである。
【００５１】
上記メモリは主にファームウェアプログラム、標準アルゴリズム及びユーザプログラムの記憶に用いる。標準アルゴリズムは、浮動小数点アルゴリズム、及び標準暗号化/復号化アルゴリズムを含んでいる。上記標準暗号化/復号化アルゴリズムはDES、RSA、AES、TDES等を含んでいる。ユーザプログラムは、ユーザがデバイスを使用する際に自分の需要に応じて、自主的に設定した任意プログラムの実行ロジックである。
【００５２】
上記メモリはまたユーザソフトの部分断片を保存し、その部分断片の安全を保証し、読み取られないようにし、そして内部での実行及び外部ソフトウェアとのインタラクティブを行わせることにより、ソフトウェアを制御し正当な実行を保証する。この実施例の特徴は外部プログラムとのインタラクティブが頻繁であり、計算スピードと通信スピードは主な速度性能指標である。
【００５３】
実施例の機能により、下記のソフト保護機能を実現できる。
１．デバイス情報の取り出し：その情報は主に本ソフト保護デバイスの情報であり、内部メモリに記憶され、主にユーザに提供する記憶及び自己デバイスを識別する機能である。
２．フォーマット：ユーザは本デバイスに対してフォーマットができ、フォーマットすることによって、全ての設定とデータは出荷時の状態に復元させることができる。
３．書き込みファイル：この種のファイルは、ユーザのコード断片、或いはその断片を実行する際に必要とするデータを含んでいる。
４．読み取りファイル：この種のファイルは、コード断片を実行する際のデータファイルであるが、コード断片そのものではない。
５．実行ファイル：この種のファイルは、ユーザの書き込んだコード断片であり、これらのコード断片が本デバイスで実行され、その実行している全てのデータとメモリ情報がデバイス内に保留し、結果だけをフィードバックさせるように確保する。
６．暗号化/復号化：ハードウェア内部でユーザデータRSA、DES、3DES等の暗号化/復号化を行い、その暗号化/復号化の結果をユーザにフィードバックさせる。
７．リモートアップデート：ユーザはソフトを配布した後に、再びその顧客からデバイスを取り寄せなくても、ネットワーク等を通して、顧客のデバイスに対してアップデートすることができる。
【００５４】
ソフト保護API（SDK）：
ソフト保護APIはソフト保護デバイスと第三者アプリケーションとのインターフェースである。このAPIはベンダーが使用するものである。
このAPIは主に下記の機能を提供する。
１．デバイスのオープン：デバイスのハンドルをオープンし、そのデバイスとの通信チャンネルを設立する。
２．デバイスのクローズ：デバイスを使用しない場合、このデバイスのハンドルとデバイス状態の情報を削除する。
３．コマンドの送信：これはソフト保護製品の核心部分であり、本デバイスに対する全ての設定を実現し、つまり全てのソフト保護機能を実現する。
【００５５】
ソフト保護デバイスの主な役割は、プログラムがPCのメモリに表示されないように保護することであり、このようにすれば、下記のメリットがある。
１．プログラムの違法コピーが防止できる。PC内のプログラムは、ソフト保護デバイスを離れると、不完全となり、ソフトの配布に当たっては、必ずソフト保護デバイスが存在しなければならない。
２．プログラムが違法的にトラッキング或いはデバッギングされることは防止できる。ソフトの重要部分のコードはPCで実行することなく、あらゆるデバッガはそのプログラムの実行状況を得ることができない。
３．ダンプされることは防止できる。ソフトが一番クラックされやすいのは、そのソフトが実行される際に、従来のエンベロープで保護されたソフトは、メモリダンプされる場合に、そのコードが還元されてしまうのである。
４．逆コンパイルが防止できる。逆コンパイルの技術がいくら高くても、本実施例のデバイス内部のコード断片を取ることができないため、そのソフト自身の完全な機能を実現することができない。
【００５６】
（実施例２）
実施例２は身分検証デバイス４を提供する。
図３に示すように、そのデバイス４は、CPU８及びCPUに接続されるメモリを集積した集積MCUチップ６と、集積MCUチップ中のCPU８に接続されるユニバーサルシリアルバスインターフェースチップ７とを備えている。CPU８は、例えばIntel  8051、Philips  80C31等のような任意のマイクロプロセッサーである。ユニバーサルシリアルバスインターフェースチップ７は、PCのユニバーサルシリアルバスインターフェースと通信できる任意なインターフェースチップであり、本実施例においては、USBインターフェースチップである。メモリはFLASH9、RAM10、ROM11とEPROM12等である。上記USBインターフェースチップ７はユニバーサルシリアルバスプロトコル、つまり本実施例の中のUSBプロトコル３とSCSIプロトコル２を通して、ホストコンピュータオペレーティングシステムのI/Oコマンドとインタラクティブを行う。上記MCUは普通のシングルチッププロセッサー、例えば80C51等とすることができるが、専用なスマートチップ、例えばATMEL6464C-Uとすることもできる。スマートチップを利用する長所は、デバイスが認証していない場合、内部プログラムと普通データを読み取ることができないように保証する。
【００５７】
上記メモリは主にファームウェアプログラム、標準アルゴリズム及びユーザプログラムの記憶に用いる。標準アルゴリズムは、浮動小数点アルゴリズム、及び標準暗号化/復号化アルゴリズムを含んでいる。上記標準暗号化/復号化アルゴリズムはDES、RSA、AES、TDES等を含んでいる。ユーザプログラムは、ユーザがデバイスを使用する際に自分の需要に応じて、自主的に設定した任意プログラムの実行ロジックである。
【００５８】
本実施例に係る身分検証デバイスは、主にパスワードやディジタル証書等のようなユーザの敏感データの保存を担当する。本実施例の実施はスマートカードに基づくものであり、下記のスマートカード機能を有す。
１．ネットワークアクセスを制御する。この実施例の有するスマートカード機能は、ネットワークに登録するためのID情報とユーザ検証情報を含んでいる。
２．ファイルの送信者身分を検証識別する電子署名或いは証明に用い、途中で歪曲されることを防止するのに用いる。
３．計算機への登録を制御し、今のオペレーティングシステムは普通、スマートカード登録をサポートし、手動でパスワードを入力する際に監視され、或いは他人に見られることが防止できる。
４．保護されたウェブページに登録し、銀行のウェブサイドは電子署名情報を利用してユーザの正当性を識別することができる。
５．ファイルアクセスを制御する。それらのファイルにアクセス制御情報を入れ、スマートカードのない場合の違法アクセスと実行を防止することができる。
６．特定なアプリケーションシステムへの登録を制御する。ベンダーは、その機能を自分の製品に使用することができ、その製品は本実施例のデバイスを利用して登録することができる。
【００５９】
電子署名デバイスAPI（SDK）
電子署名デバイスAPIは電子署名デバイスと第三者アプリケーションとのインターフェースである。このAPIは主にベンダーが使用するものである。
このAPIは下記の機能を提供する。
１．デバイスのオープン：デバイスのハンドルをオープンし、そのデバイスとの通信チャンネルを設立する。
２．デバイスのクローズ：デバイスをもう使用しない場合、このデバイスのハンドルとデバイス状態の情報を削除する。
３．コマンドの送信：これは電子署名デバイスの核心部分であり、本デバイスに対する全ての設定を実現し、つまり全ての電子署名デバイスのスマートカードの機能を実現する。
【００６０】
電子署名デバイスの主な役割については、重要かつ敏感なデータが永遠的にデバイス以外の箇所、例えばPCのメモリまで読み取られないように保護することであり、このようにするメリットは下記の通りである。
１．ユーザは冗長なパスワードを記憶する必要がない。安全なパスワードは必ずアルファベットと数字で構成する十分複雑な文字列であり、常に更新するため、スマートカードでパスワード情報を保存すれば、ユーザの煩わしいことが避けられる。
２．ダブルセキュリティ措置を提供する。すなわち、ユーザのパスワード或いは電子署名デバイスの何れか一方を紛失した場合、ユーザにはリスクをもたらすことがない。
【００６１】
本発明において、デバイスとホストコンピュータが通信するユニバーサルシリアルバスプロトコルと、デバイスが上層へデバイスドライバとインタラクティブを行うSCSIプロトコルとで構成するユニバーサルシリアルバスによる高速伝送技術を使用し、データを伝送しているため、このようなユニバーサルシリアルバスによるデータ伝送については、オペレーティングシステムに既存するクラスデバイスドライバプログラムによって、デバイス自身のインストールと初期化ができ、その伝送スピードも高く、便利性に優れている。
【００６２】
上記のように、本発明の提供するユニバーサルシリアルバスデバイスのデータ伝送方法及びその方法を実施するデバイスについて、詳細に説明した。本文には、具体的な例を挙げ、本発明の原理と実施形態を説明したが、以上の実施例の説明は、本発明の方法と核心思想に対する理解を助けるのみであると同時に、所属分野の技術者にとって、本発明の思想に従って、具体的な実施方法と応用範囲において、変更することがある。従って、本明細書の内容が本発明に対する制限ではないように理解すべきである。
【図面の簡単な説明】
【００６３】
【図１】本発明に係る各通信モジュールのシステムにおける機能関係を表す説明図
【図２】本発明の実施例１に係るデバイスのブロック図
【図３】本発明の実施例2に係るデバイスのブロック図
【符号の説明】
【００６４】
２：  SCSIプロトコル
３：  USBプロトコル
４：  デバイス（ソフト保護デバイス、身分検証デバイス）
７：  USBインターフェースチップ
８：  CPU
【図１】
2006344206.tif 000003
【図２】
2006344206.tif 000004
【図３】
2006344206.tif 000005