第8回 USBデバイスの識別IDとは?

皆さんこんにちは。ラネクシー社員Kです。

DeviceLockの基本的なデバイス制御手法に、「USBポートを止めることで一旦すべてのUSBデバイスの使用を禁止しておいて、使わせたいUSBデバイスだけを後からホワイトリストに登録して、個別に使用を許可する」というのがあります。(第3回 「USBを止める」って、どういうこと? 参照)

「登録」って簡単に言いますが、いったいUSBデバイスの何を登録するのでしょうか。

1. USBデバイスのIDとは

皆さんご存知のように、USBで接続するデバイスには、たくさんの種類がありますね。
おなじみのUSBメモリー、外付けハードディスク、光学ドライブ、キーボード、マウス、外付けSDカードリーダー、プリンター、スピーカー、スキャナー、モデムなどなど。

デバイスにもよりますが、多くの場合、これらのデバイスをパソコンに接続すると、何もしなくてもすぐに使えるようになっています。
これは、それぞれのUSBデバイスが、自分がどんなカテゴリー(USBの仕様では「デバイスクラス」と言うようです)に属するデバイスなのか、という情報を持っていて、OS(WindowsやMacOSなど)がそのカテゴリーに対応していれば、OSがあらかじめ持っている標準のドライバー(プログラム)で、そのデバイスを使用できるからです。

さて、DeviceLockがUSBデバイスをホワイトリストに登録する際には、どんな情報を登録しているのでしょうか。
「特別にこれだけは使用を許可する」のですから、意図しない他のデバイスが使えてしまっては意味がありません。

ですから、この場合、上に書いたようなカテゴリー(デバイスクラス)を登録したのでは、そのカテゴリーに属する全てのデバイスが使えてしまうため、都合が悪いことになります。(もちろん、カテゴリーごと許可・禁止する使い方もあります)

ところで、ホワイトリストに登録する情報についてお話しする前に・・、少し脱線しますが、他と重複しない個体識別情報として、皆さんご存知の身近な例があります。

日本に住民票がある人なら全員、「マイナンバー」と呼ばれる個人番号を一人に一つずつ持っています。
この番号は重複しないように決められていますので、マイナンバーで個人識別ができるようになっています。

マイナンバーは12桁の数字で構成されているのですが、まず住民票コードから非公開の計算式で生成される左11桁の数字があって、次にこの11桁を使ってムズカシイ計算をすることで1桁の検査用数字(※)というものを導き出し、これを合わせた12桁をマイナンバーとしています。

  • 検査用数字は左11桁の数字の妥当性を判定するもので、コンピューターにマイナンバーを入力する際のタイプミスの防止などに役立ちます。

このような個体識別情報を、USBデバイスが持っていれば都合がいいですね。

(脱線ついでに調べてみると、マイナンバーのPRキャラクター、シロウサギの妖精マイナちゃんの露出は相変わらずですが、知らない間にマイナンバーカードのICチップ内を守る忠犬「マイキーくん」なるものも出ていたのですね・・。敢えて感想は述べませんが・・。)

実は、ほとんどのUSBデバイスは、マイナンバーのような、デバイスを個体識別できる固定情報をデバイス内部にあらかじめ持っています。それが「ベンダーID」「プロダクトID」「シリアル番号」です。

  • ベンダーID (VID) ・・・ デバイスのメーカーに対して割り振られたID
  • プロダクトID (PID) ・・・ メーカーにより製品に対して割り当てられたID
  • シリアル番号 (Serial Number) ・・・ メーカーにより製品に対して割り当てられた通し番号

ではこれから、この3つの識別情報を使って、あるUSBデバイスを識別することを考えてみます。

2. デバイスモデルとユニークデバイス

ここに、2本のUSBメモリーがあります。同じメーカーの同じ型番の品です。
区別をつけるために番号を振りましたが、それ以外の見た目は全く同じですね。

このUSBメモリー、番号を振ったことで、人間の目には個体識別できるのですが、コンピューターではどのように個体識別するのでしょうか。

DeviceLockは、ホワイトリストによる個体識別を実現するために、コンピューターに接続されたUSBデバイスの実機から、3つの情報「ベンダーID」「プロダクトID」「シリアル番号」を調べます。

なおこの情報は、Windowsのツールを使って調べることもできます。

  1. まずUSBデバイス情報を調べたいデバイスをコンピューターに接続して、「コントロールパネル」から「デバイス マネージャー」を起動、表示されるデバイスリストから「ユニバーサル シリアル バス コントローラー」を展開します。
  2. この中から、USBデバイス情報を調べたいデバイスを探します。リストに機種名が出ているわけではないので、コンピューターにたくさんのUSBデバイスが接続されている場合、目的のデバイスを探すのは難しいかもしれません。
    USBメモリーだと、「USB 大容量記憶装置」などと表記されていることが多いかと思います。
  3. 目的のデバイスの行をマウスで右クリックして、デバイスのプロパティを表示します。
  4. プロパティ画面で「詳細」タブを選んで「デバイス インスタンス パス」を表示します。
    ここで「値」欄に出ている文字列がデバイスのUSBデバイス情報です。
    この例では「USB\VID_14CD&PID_125D\125D20140310」となっています。

    DeviceLockは、このUSBデバイス情報を「USB Devices Database」機能で取得します(下の画面)。
    デバイスマネージャーと同様に「USB\VID_14CD&PID_125D\125D20140310」が表示されているのがわかります。

さて、USBメモリー①のUSBデバイス情報は「USB\VID_0A6B&PID_000A\07950102C78B0007」、USBメモリー ②のUSBデバイス情報は「USB\VID_0A6B&PID_000A\079501027B990001」となっていました。

これを見るとわかるかと思いますが、「VID_0A6B」と「PID_000A」の部分は値が同じです。
「VID」はベンダーID、「PID」はプロダクトIDです。①と②は同じメーカーの同じ型番の品ですから、「VID」と「PID」が同じなのは理解できますね。

右側16桁はシリアル番号になります。同じメーカーの同じ型番でも、違う個体ですから、異なるシリアル番号が割り当てられているということになります。(製品によって桁数が異なる場合があります。また、シリアル番号を持たない製品もあります。)

DeviceLockでは、

  • 「VID」と「PID」の組み合わせを「デバイスモデル」
  • 「VID」と「PID」と「シリアル番号」の組み合わせを「ユニークデバイス」

と呼んでいます。

デバイスモデルとユニークデバイスの違いは何でしょう。

デバイスモデルは「VID」と「PID」の組み合わせになりますので、「このメーカーのこの型番」までの識別です。つまり「同一メーカー・同一型番の製品であれば何でもよい」という、製品(機種)識別になります。(シリアル番号を持たない製品の場合、必然的にデバイスモデルの扱いになります。)

一方、ユニークデバイスは「VID」と「PID」と「シリアル番号」の組み合わせになりますので、「このメーカーのこの型番で、シリアル番号がこれ」という識別ですから、「このメーカー・この型番でこのシリアル番号でなければならない」という、個体識別ができるのです。

DeviceLockのホワイトリストは、デバイスモデルとユニークデバイスの両方に対応しています。

3. SDカードの制御は可能か

最後に、USBメモリーと同じような用途で利用されることもある「SDカード」について、お話ししておきます。

SDカード、ますます大容量で低価格になっていますね。切手みたいな小さくて薄いものに、何GBものデータが記録できるようです。
デジタルカメラに装着して、撮影した写真画像の保存先として使用、さらにカメラから取り出して今度はパソコンに装着、写真データをパソコンに取り込んだりできますよね。

また、ドライブレコーダーの保存先や、スマートフォンの外部ストレージなど、私も常日頃、お世話になっております。

かさばらず持ち運びに便利ですし、最近のノートパソコンにはSDカードリーダーが標準でついているものも多いですから、USBメモリーよりもSDカードを使いたい気持ちもわかりますね。

そのせいか、お客様から「DeviceLockでSDカードの個体識別制御はできますか」といったお問い合わせをいただくことも多くなっています。

私も詳しくは知りませんが、SDカードは、カードごとに個体識別番号(上で説明したUSBデバイスの識別番号とは異なります)を持つことができる仕様のようで、SDカードの出荷時には、既に個体識別番号を持っているものと思われます。

これが利用できればよいのですが、そう簡単にはいかない事情があります。

SDカードを利用するには、「カードリーダー」と呼ばれる読み書き装置が必要です。
カードリーダーには大きく分けて2つのタイプがあるようです。

コンピューター内蔵の、PCI接続SDカードリーダーなどにはSDカードから個体識別番号を取得できるものがあり、この番号をソフトウェアから利用することができれば、個体識別制御ができることになります。

ところがこのところ普及しているUSB接続のSDカードリーダーでは、SDカードとカードリーダーを合わせて「リムーバブルデバイス」と認識し、SDカードが持っている個体識別番号を認識できないものが多いため、この場合、個体識別制御をしたくてもできないことになります。

つまり、世の中に、SDカードの個体識別番号を認識する機器と、認識しない機器があり、認識しない機器がある以上、SDカードの個体識別番号を利用した個体識別制御はソフトウェア上、できないのです。(ソフトウェア的な工夫によりSDカードの個体識別制御を実現する可能性を否定するものではありません。)

DeviceLockは現状、SDカードの個体識別制御には対応していません。

なお、通常、USB接続のカードリーダーはUSBデバイスとして「ベンダーID」「プロダクトID」「シリアル番号」を持っているので、これをUSBホワイトリストに登録し、「このカードリーダーだけは使用できる」といった利用法は可能です。

この場合、使用を許可されたカードリーダーにどのSDカードを装着しても、読み書きができることになります。

ではまた。

投稿日:2020年06月25日

でばいすろっくコラム 記事一覧

国内5800社、40万台の導⼊実績のデバイス制御ソフト︕
内部からの情報漏えいを防ぐDLPソリューション" DeviceLock ( デバイスロック)"

DeviceLock(デバイスロック)はユーザーに負担を強いずに必要なデータだけを守るDLP(Data Loss Prevention)ソリューションです。PCのUSBポート、CD/DVDドライブ、タブレット端末などの外部デバイス制御に加え、インターネットを介したファイルのコピー、送信を制御し、個人情報や情報資産などの不正持ち出しや盗難・紛失による情報漏えいを防止します。


DeviceLockは国内5800社、40万台の導入実績を持ち、外部デバイス制御パッケージの分野でシェアNo.1※のツールです。

  • ミック経済研究所「サイバーセキュリティソリューション市場の現状と将来展望2019 データ保護編」より