今使っている暗号化機能付きUSBメモリは本当に安全で、保存したデータが抜き出されることはない。皆さんはそう言い切れるでしょうか?Googleのセキュリティリサーチャーであるエリ・ブルツテイン(Elie Bursztein)氏、ジャン・ミシェル・ピコ(Jean-Michel Picod)氏、レミ・オードベール(Rémi Audebert)氏が、先日開催されたBlack Hat USA 2017での講演『Attacking encrypted USB keys the hard(ware) way』(暗号化USBメモリをハード(ウェア)な方法で攻撃する)で投げ掛けたのが、まさにそんな質問でした。
この三氏によると、暗号化機能付きUSBメモリのメーカーは現状、FIPS 140に準拠しています。FIPS140は、ハードウェアとソフトウェアを含め、あらゆる暗号モジュールのセキュリティ要件をNIST(National Institute of Standards and Technology:米国立標準技術研究所)が定めた認定規格です。FIPS 140には、暗号化セキュリティの情報公開や検証プロセスなどが規定されています。
ブルツテイン氏らが指摘するように、公開された情報から潜在的な問題が洗い出せるため、認定を更新し続けることが重要です。しかし、それだけでは不十分です。FIPS 140は、あらゆる攻撃媒介を網羅しているわけではありません。後述するように、暗号化機能付きUSBメモリの中には、認定を受けているにもかかわらず攻撃に対して脆弱なものがあり、単純な攻撃にすら耐えられない場合があります。
そこで彼らが提案したのは、暗号化機能付きUSBメモリのセキュリティ評価に特化した監査方法を新たに考案することです。彼らはまず、セキュリティ上の問題を3つのカテゴリに分類しました。
- Weaknesses(セキュリティの弱化):ハッキングを進めやすくしてしまう問題点
- Single-drive break(USBメモリ 1個のハッキング):特定のUSBメモリ1個だけに対するハッキングを許す可能性のある脆弱性
- Full break(USBメモリの全ハッキング):同一モデルの全USBメモリの情報にアクセスを許す可能性のある脆弱性
脆弱性を悪用するには、その脆弱性に応じて特定のスキルやリソースが必要です。スキルのない攻撃者でも悪用可能な脆弱性もあれば、国家による支援を受けたハッカーのレベルでないと利用できないほど大量のリソースを必要とする脆弱性もあります。そこで、攻撃者を3つのタイプに分類します。
- Serendipitous(成り行き型):成り行きで機に乗じる、わずかなリソースしか持たない攻撃者。このレベルの攻撃者は、基本的にUSBメモリを発見したか盗んだ人で、中に入っている(かもしれない)情報にアクセスしたいと考えています。
- Professional(プロフェッショナル型):限りはあるものの、ある程度のリソースを持つ攻撃者。このレベルの攻撃者は、情報の大量収集に関心がある場合がほとんどです。
- State-sponsored(国家支援型):膨大なリソースを持つ攻撃者。通常、こうした攻撃者は特定のデータを追っていたり、莫大な投資の価値がある重要情報を探していたりする人々です。
監査基準としては、暗号化機能付きUSBメモリに特有の脅威として考えられうる攻撃媒介を、USBメモリのコンポーネントごとにカテゴリ分けします。具体的には、USBメモリの機能の設計と製造、認証要素(簡単に言うと、入力情報)、USB/暗号化コントローラー、暗号化アルゴリズム、フラッシュメモリです。ここからは、彼らの提示する各監査基準を駆け足で見ていくことにしましょう。
設計と製造に関する基準
改竄の痕跡が残るようになっているか
第一に、暗号化機能付きUSBメモリは、一定の保護レベルを定めた上で設計、製造されなければなりません。まずは、改竄の痕跡が残るようになっていると良いでしょう。重要なファイルの入ったUSBメモリを誰かが勝手にいじった場合に、改竄のあったことがわかるようになっていなければなりません。
エポキシ樹脂加工されているか
電子コンポーネントへのアクセスが簡単であるほど、ハードウェアを調べて脆弱性をあれこれ見つけ出すのも簡単になります。これを防ぐには、回路基板をエポキシ樹脂でコーティングする必要があります。
代替品ではなく本物のエポキシ樹脂を使わねばならない、という点も付け加えるべきでしょう。この調査では、メーカーが「エポキシ樹脂使用」と主張していても、実際は耐久性の劣るポリマー樹脂を使っているものも見つかりました。これでは、アセトンで簡単にコーティングを落とすことができ、ハードウェアにフルアクセスできるようになります。
ハードウェアコンポーネント情報が消去されているか
ハードウェアのハッキングの場合、攻撃者が電子コンポーネントに侵入して最初に探すのは、コンポーネントの刻印です。マニュアルや仕様書を検索し、さらなる攻撃の可能性を探る上で、刻印は重要な情報です。モデル名、シリアル番号などの情報がすべてチップからきちんと消されていれば、攻撃者は手掛かりを得ることができません。どの手を使えばUSBメモリをハッキングできるのか突き止めるには、込み入った調査が必要になるでしょう。
メーカーがチップから刻印を消そうとする場合もあるようですが、正しく消えていませんでした。
ファームウェアが適切に署名され、読み取り専用となっているか
保護機能をすり抜けられるように改造したバージョンのファームウェアに置き換える作業は、そう簡単にはいきません。しかし、膨大なリソースがあり、スキルの高い攻撃者であれば、チャレンジするかもしれません。悪いことに、このタイプの攻撃は複製可能です。ファームウェアをリバースエンジニアリングして改造に必要な情報を得られれば、同一モデルのUSBをすべてハッキングできてしまいます。
TEMPEST攻撃対策として銅箔シールドされているか
USBメモリから漏れ出る電磁波から内部の情報を覗き見する、TEMPESTという攻撃があります。複雑な攻撃であるがゆえに、そうそう発生するものではなく、少なくとも一般の人や企業の身にふりかかることはめったにないでしょう。とはいえ、国家の支援を受けたハッカーから確実に秘密を守りたい場合は、USBメモリを銅箔で覆う方法があります。信頼性が高く、比較的安上がりなTEMPEST対策です。
ハードウェアの偽造防止機能があるか
USBメモリの偽造という手段は、ハッカーなら誰でも手を出すものではありませんが、国家の支援を受けたハッカーならば、やりかねません。高度なスパイ活動から秘密を守りたいのであれば、偽造防止対策を施した暗号化機能付きUSBメモリが選択肢となるでしょう。
入力情報に関する基準
続いての問題は、正規の利用者を認証してUSBメモリをロック解除する部分の保護レベルに関係しています。そもそも認証部分のハッキングは、ハードウェアレベルでフラッシュメモリをハッキングするとか、暗号化アルゴリズムをハッキングするといった作業よりもはるかに容易です。また、メーカーが認証メカニズムを開発する際に何らかのミスを犯す可能性は十分にあります。したがって、認証が攻撃者にとって(USBメモリの調査が済んだ後に)注目すべきポイントであるのは、ほぼ確実でしょう。
利用者を認証する方法は4つあります。テンキー入力、ワイヤレスタグ、指紋、ソフトウェアによる暗証番号入力です。
Black Hatの講演では、4つの方法のデモが披露されました。
暗証番号がソフトウェアに保存されていないか
メーカーが犯しがちな間違いは、ソフトウェアに暗証番号を保存することです。これでは、スキルの低い攻撃者でも、暗証番号を抜き出す方法を突き止め、特定の1個のUSBメモリだけでなく同一モデルの全USBメモリをハッキングできてしまう可能性があります。リプレイ攻撃に利用されかねない脆弱性が、ソフトウェアに存在している場合もあります。2009年にドイツのSySSのリサーチャーが調べたFIPS認定デバイスが、このケースに当てはまります(英語資料)。
テンキーの摩耗や傷がないか
テンキーも、簡単に悪用される可能性があります。特定のキーがすり減っていると、USBのロックを解除するための組み合わせがわかってしまいます。
タグや指紋などのインプット情報がクローン可能ではないか
ワイヤレスタグ(RFID/NFC)は、ごく単純なデバイスを使って、タグのコピーを作成可能です。コピーしたタグを使えば一瞬でUSBのロックを解除でき、何の痕跡も残さないため、誰かがアクセスしたことすらわかりません。
指紋は強力な認証要素に見えて、現実にはとても完璧とは言えません。指紋の複製にはさまざまな方法がありますが、物理的な接触を一切必要としないやり方もあります。デジタル一眼レフカメラを使うと、かなり良い状態で指紋を撮影でき、あとは、標準仕様のインクジェットプリンターで導電性インクを使ってコピーを印刷するだけです。さらに悪いことに、指紋はパスワードと違って変更できません。
デバッグポートが無効化されているか
もっとも、偽の指紋すら必要ない場合もあります。デモで紹介されたように、指紋認証付きUSBメモリを、もっと簡単にロック解除する方法がありました。
調査では、調査対象の指紋認証付きUSBメモリのうち、少なくとも1つのモデルがリプレイ攻撃に対して脆弱であることが判明しました。そのUSBメモリのセンサーは、正しい指紋をスキャンすると、コントローラーへロック解除のコマンドを単純に送信していました。
このメーカーが犯したもう1つのミスは、動作可能なデバッグポートを回路基板に残してしまったことです。ブルツテイン氏らはこのポートでロック解除のコマンドを傍受し、傍受したコマンドを使って、同モデルのUSBメモリであればどれでもロック解除することができました。
ここまで紹介してきたハッキング手法は、複雑そうに見えますが確実です。スキルの高い攻撃者なら、これらの手法を駆使して重要なファイルへとたどり着くことでしょう。さらにスキルの高い攻撃者や、潤沢なリソースを抱える国家支援型の攻撃者から重要情報を守りたいのであれば、ここまでに述べた脆弱性をすべて考慮する必要があります。
コントローラーに関する基準
条件に応じ、USBメモリのロック機能が発動するか
USBメモリのデバイス/暗号化コントローラーについて考えてみましょう。第一に、総当たり攻撃でハッキングされないようにする必要があります。一部のUSBメモリは、総当たり攻撃が可能です。たとえば、ブルツテイン氏らはデモの中でワイヤレスタグのコピーを作成した攻撃を披露していましたが、ワイヤレスタグを使っているUSBメモリは総当たり攻撃にも弱いことがわかりました。
総当たり攻撃から守るには、一定の回数を超えて認証に失敗したらデバイスが使えないようにする必要があります。デバイスが使用できなくなったときに、フラッシュメモリ内の暗号化キーとデータも安全に消去されると理想的でしょう。
USBメモリがUSBポートから抜かれた場合、一定時間使われなかった場合、リセットされた場合にただちにUSBメモリが自己ロックする機能も、あった方がいいでしょう。
パスワードやAESキーを要求できないようになっているか
また、パスワード(または暗証番号)と暗号化キーをUSBメモリデバイスのコントローラーから要求できないようにする必要もあります。当たり前に思えるかもしれませんが、ブルツテイン氏、ピコ氏、オードベール氏が調査したUSBメモリでは、要求することができました。彼らは、あるUSBメモリのコントローラーからマスターパスワードを要求して入手に成功し、そのマスターパスワードを使って新規ユーザーをあっさりと作成し、USBメモリ内の全ファイルにアクセスすることができています。
あまりスキルが高くなく、わずかなリソースしか持たないハッカーでも、この攻撃によって該当モデルのUSBメモリのロックを解除することができます。
暗号化に関する基準
暗号化は、安全なUSBメモリの中核です。明るいニュースとしては、十分なリソースを持たない成り行き型の攻撃者がこの攻撃媒介を使う可能性はほぼないこと、最新の暗号化機能付きUSBメモリは解読されにくい強力な暗号化アルゴリズムを実装していることが挙げられます(あまりうまく実装されていないものもありますが)。
一方、USBメモリのメーカーがきちんと暗号化を施しているかどうかわかりづらい点は残念なところです。
AESまたはそれより新しい暗号化規格でデータが守られているか
まず、USBメモリの安全性を高めるには、AESなどのより新しい暗号化規格を実装する必要があるのですが、この要件に必ずしも沿っていないUSBメモリもあります。ブルツテイン氏らが調査を進める中で、RC4やRSA-512という時代遅れの暗号化方式を採用しているUSBメモリがいくつか見つかりました。これらの暗号化方式は、脆弱であることが実証されています(解読には膨大なリソースが必要ですが)。
暗号化キーの安全性は十分か
このほか、暗号化キーがランダム生成されているか、キー生成には安全なランダムジェネレーターが使われているか、初期化ベクトルは適切にランダム化されているか、暗号チェーンのアルゴリズムは安全か、といった基準が挙げられています。ただし、これらは主に、国家支援レベルのスパイ活動から身を守りたい人向けです。
ブルツテイン氏らが強調しているように、暗号化はハードウェア内で実行されるため、USBメモリの暗号化の実態や脆弱性の有無を調査するのはかなり難しい作業です。暗号化に関してさらに詳しい情報が公開されれば、参考になるでしょう。
フラッシュメモリに関する基準
想定される攻撃媒介リストの最後は、フラッシュメモリからの直接読み取りです。これは一筋縄ではいかなそうです。USBメモリの回路基板からメモリチップを慎重に取り外し、読み取り装置に差し込まねばなりません。はんだ付けされたチップの代わりにmicroSDが使われていることもあり、その場合は作業が簡単です。
難しくなるのはこの次、フラッシュメモリチップから情報を抜き取る作業です。ハードウェアレベルでは、使いやすく整理されたファイルの形でデータが保存されていないため、メモリダンプから有益な情報を取り出すのには相当な労力を要します。
メモリチップに、あるべきではない情報が格納されていないか
ただし、メーカーが致命的なミスを犯していることもあります。たとえば、暗証番号をメモリチップ内に平文で保存するなどです。他にも、暗号化キー、ハッシュ化された暗証番号、ファームウェアの署名キーがメモリチップに保存されている可能性が考えられます。もっとも、こうした可能性を心配する必要があるのは、高度なスパイ活動の危険に晒されている人です。
ブルツテイン氏らは、この部分の調査はまだ始まったばかりで、他のリサーチャーと協力して取り組みたいと述べています。このプロジェクト全体についても同様で、暗号化機能付きUSBメモリの優れた監査方法を確立し、その枠組みの中でできるだけ多くのモデルをテストするために、力を貸してほしいと呼びかけています。
では、USBメモリが本当に「安全」なのか誰にもわからないことを踏まえたうえで、監査方法が確立されるまでの当面、USBメモリ内の情報を守るにはどうすればよいのでしょうか?一番良いのは、データをUSBメモリへ預ける前に自分で暗号化することです。
たとえば、Kaspersky Endpoint Security for Businessでは、データをAES-256アルゴリズムで暗号化します。機密情報を送信する場合、パスワードで保護され、暗号化された自己解凍型パッケージに簡単に変換できます。ファイルレベルでの暗号化向けのポータブルモードを利用すれば、カスペルスキーのセキュリティ製品が動作していないコンピューター上でもファイルを読み取り可能です。