暗号化USBの罠:鍵が何も守っていなかった話
Lenovoの「暗号化」指紋認証USBの中身は、ケースに入った暗号化されていないmicroSDカードでした。ハードウェアのセキュリティ偽装を見抜く方法を解説します。

今この瞬間も、どこかの倉庫には「軍用グレードの指紋暗号化」を謳うUSBメモリが山積みになっています。ドライバーを持った12歳の子どもでも90秒で破れるような製品です。Lenovoの指紋認証ドライブ「FU100」も、最新の分解記事で晒されたものの一つです。プラスチックのケースを開けると、中にはごく普通の、まったく暗号化されていないmicroSDカードが入っていました。指紋センサーはデータを解錠していません。何も解錠していないのです。センサーが制御しているのは、カードリーダーをPCから見えるようにするスイッチだけで、データはずっと平文のままフラッシュメモリ上にあります。
これは脆弱性ではありません。脆弱性とは、そもそも誠実に設計されたものに入り込んだバグのことです。今回のケースは、セキュリティの主張が飾りでしかない製品です。そして問題は、こうした製品を買う人こそ、その主張を検証する手段を持たないということです。中小企業の経営者、弁護士、会計士、パスポートのスキャンを保存している親などです。彼らは、実際には設計されていない約束に対して割高な金を払っているのです。
指紋センサーが実際に制御しているもの
この設計がなぜこれほど問題なのかを理解するには、本物の暗号化ドライブが何をしているかを確認するのが早道です。誠実に作られたハードウェア暗号化デバイスには、ホストPCとフラッシュメモリの間に専用のコントローラーチップがあります。そのコントローラーが暗号鍵を保持し、理想的にはPINから導出されるか、指紋で解錠されます。通過するデータブロックはすべて、NANDに書き込まれる前にAESで暗号化されます。基板からフラッシュチップを外してチップオフ・プログラマーで読み出しても、得られるのは暗号文だけです。それこそが設計の要点です。物理メモリと知性は暗号処理によって結合しているので、メモリを取り出しても価値のあるものは何も得られません。
Lenovo FU100はこうした設計をすべて省いています。構成はおおよそ次のとおりです。指紋モジュール、マイコン、USBハブまたはカードリーダーIC、そしてmicroSDスロットです。指紋を登録すると、センサーモジュールがテンプレートを内部に保存します。これは標準的な仕組みで、指紋照合そのものはおそらく問題ありません。認証に成功すると、マイコンがラインを切り替えてカードリーダーをUSBバスに接続します。認証に失敗すると、リーダーは列挙されません。つまり、生体認証の門番がついたリレーにすぎません。
ただし、その門番が守っている建物には壁がありません。microSDカードは取り外し可能な標準部品なので、そもそも攻撃と呼べるほどの手間すらかかりません。はんだ付けも、グリッチも、サイドチャネルも不要です。ケースを開け(プラスチックの爪を外すだけ、接着剤が少し付いている程度)、カードを任意のリーダーに差し込めば、すべて読み出せます。この「暗号化」の影響範囲はゼロでした。
ここで脅威モデルがどう崩れるかを少し立ち止まって見ておく価値があります。これらのメーカーは、マーケティングで脅威モデルを語るのが大好きだからです。暗示されているストーリーは次のようなものです。ドライブをなくしても、拾った人は指紋がなければ何も得られない。たしかにその話は、拾った人が「FU100 分解」とググるか、ケースの継ぎ目に気づくまでの間だけ成り立ちます。紛失したUSBメモリに対する現実的な攻撃者は、X線設備を持つ国家機関ではありません。カッターを持った好奇心旺盛な人間です。そしてその相手に対して、この設計はまったく保護になっていません。指紋センサーは完璧に動作しているのに、何も守っていないのです。守るべきものから切り離された仕組みの、これ以上ない純粋な例です。
攻撃者が記憶媒体を取り外し、市販のツールで読み出せるなら、そのデバイスは暗号化されていなかったのです。それは野原に置かれた錠前にすぎません。
本当に重要な問いは「鍵はどこにあるのか」
暗号化ストレージに関するマーケティングの主張をすべて見抜ける問いが一つあります。アドバイスを求められたら、誰にでもこれを教えてあげてください。鍵はどこにあり、センサーは実際に何を制御しているのか? 答えは次の3つのどれかに分類されます。
- 鍵は暗号コントローラー上にあり、データは保存時に暗号化されている。指紋やPINで専用チップが鍵を解放し、NANDには暗号文が格納されます。Kingston IronKeyシリーズがこの方式で、分解に耐えうる唯一の設計です。
- 鍵はコントローラー上にあるが、保存または導出の仕方がまずい。データは形式上暗号化されていますが、鍵がファームウェアに焼き込まれていたり、シリアル番号から導出されていたり、MCUのフラッシュから復元できたりします。単純な紛失に対しては何もないよりましですが、ロジックアナライザーと週末の時間があれば誰でも破れる程度です。
- そもそも鍵がない。センサーが列挙、電源、またはハブのポートを制御しているだけです。ストレージは平文です。Lenovoの設計がこれにあたり、買い手が思っている以上に多く見られます。
真ん中の分類は少し立ち止まって考える価値があります。有名ブランドでさえつまずいてきた場所だからです。セキュリティ研究者は長年にわたり「安全な」ドライブを分解してきました。その結果わかったのは、コントローラーのフラッシュから鍵が復元できるAES実装、デバッグ用パッドをショートさせるだけで突破できる認証、MCUのファームウェアを書き換えて全部抜き出せるアップデート機構などです。ケンブリッジ大学による初期IronKeyの分解記事は、その代表的な参照例です。注目すべきは、これは単に不正をするのが簡単だという話ではなく、正しく作るのがどれほど難しいかという話だということです。IronKeyは少なくとも努力していました。FU100は、努力すらしていません。
3つの分類の中には、役に立つ経験則が隠れています。最初の分類では、ベンダーが硬くて高コストで検証可能な主張をしなければなりません。たとえばAES-256のXTSモード、ハードウェアRNGによる端末内での鍵生成、10回失敗すると鍵を消去するPINリトライカウンターなどです。これらは、エンジニアが検証したり反証したりできる記述です。残りの2つは「保護済み」「セキュア」「生体認証アクセス」といった曖昧な言葉の陰に隠れています。これらは仕組みではなく体験を描写しています。スペックシートがライフスタイル広告のように読めるなら、そのスペックシートは、あなたがどの分類の製品を買おうとしているかを教えてくれています。
なぜこれが審査を通り続けるのか
居心地の悪い次の問いは組織の問題です。これは深センの露店から出荷された怪しい無名ベンダーではありません。一部の人が指摘するように、FU100は中国のECサイト以外ではほとんど流通していませんでしたが、それでもLenovoです。政府や銀行に支給されるThinkPadにロゴを載せている会社であり、かつてSuperfishで一度信頼を失っている会社です。その組織図のどこかで、この製品は工業デザイン、ファームウェアレビュー、マーケティングの承認、法務を通過したはずです。セキュリティの知識を持つ人がだれも見ていなかったか、誰かが見て、それでも出荷する判断を下したかのどちらかです。
どちらの説明もありえますし、どちらも別の意味で問題です。前者は、セキュリティレビューは形式的なものにすぎないと言っています。後者は、マーケティングが勝つ交渉だと言っています。こうした話をこれだけ追ってきた立場から言うと、たいてい第三の要因があると考えています。製品はODMが設計し、ブランドが付け替えて販売し、そのパッケージの主張に責任を感じる人がサプライチェーンのどこにもいないのです。パッケージに「暗号化」と書いてあるのは、業界最大手の製品ページが「暗号化」と書いているからです。「軍用グレード」と同じように、その言葉は商品掲載ページ全体に広がっていきます。仕様ではなく、雰囲気なのです。
一度仕組みを理解すると、ODMによるリブランディングの流れがよくわかります。白ラベルのメーカーが指紋ゲート付きのカードリーダーを設計します。それ自体はその用途においては良くできた製品で、おそらく「子どもに私のファイルを触らせない」という市場を狙ったものです。メーカーは筐体とロゴのメニューを用意して、各ブランドに提供します。ブランドのプロダクトマネージャーは、競合の文章を切り貼りして商品説明を書きます。この連鎖の中に暗号学者はおらず、「暗号の主張を検証する」ことが職務に含まれている人もいません。法務は商標リスクを確認するのであって、AESが存在するかどうかは確認しません。結果として、データシートから製品ページまでの間に「生体認証アクセス制御」が「指紋暗号化」に変わっていく伝言ゲームになります。そして、虚偽だと認識したうえで嘘を書いた人は誰もいません。ある意味で悪意より厄介です。解雇すべき悪役がいないからです。あるのは、偽のセキュリティを大量に確実に生み出すプロセスだけです。

暗号化ドライブを実際に検証する方法
これらの製品の多くは、ラボがなくても簡単に確認できます。購入前にいくつか質問すれば、最悪の製品の大半は除外できます。
まず確認すべきは、NISTのCMVPデータベースで検索できる実際の証明書番号付きのFIPS 140-2または140-3の認証です。「FIPS準拠」という言葉は何の意味もありません。ベンダーがその言葉を使うのは、本物らしく聞こえる一方で、何も保証しなくて済むからです。確認すべきなのは、特定の製品とファームウェアのバージョンを記載した証明書です。実際の暗号モジュールの認証には、ベンダーにとって数万ドルと数か月のラボ作業という現実的なコストがかかります。だからこそ、本物の暗号と相関があるのです。偽装は安上がりですが、認証は安くありません。
次に、ベンダーがアーキテクチャについて何か公開しているかを確認します。誠実なメーカーは、暗号エンジンがコントローラー上にあること、鍵は端末内で生成されること、ホストが鍵を見ることはないことを明言します。AESや鍵導出、端末内暗号処理に言及せず、「生体認証による保護」や「セキュアなアクセス」といった曖昧な言葉だけが並んでいるなら、危険信号です。それは暗号化ではなく、アクセスゲートを説明しているのです。
3つ目は最終手段です。分解記事を探しましょう。セキュリティコミュニティは、みんなのためにと言って高価なガジェットを壊すことをいとわないのが素晴らしいところです。もし90ドルの「暗号化」ドライブが2年間市場にあるのに、ダイ写真や基板のトレース写真が一枚も投稿されていないなら、その沈黙自体が情報です。たいていの場合、セキュリティ研究者の誰も、購入価格に見合う価値があると考えなかったという意味です。
もっと粗いものの、驚くほど効果的な4つ目のチェックがあります。価格と主張の釣り合いです。本物のハードウェア暗号化ドライブには、実際の部品コストがかかります。安全なMCU、検証済みのファームウェア、チップオフ攻撃に耐えるためのエポキシ封止された筐体などです。128GBの「軍用グレード暗号化」指紋ドライブが、有名ブランドの普通の128GBドライブより安く売られているなら、計算がそのまま教えてくれています。暗号化はタダだったのです。そしてタダの暗号化は、まさにタダの価値しかありません。怪しいほど安い「純正」Appleの充電器に向けるのと同じ警戒心を、セキュリティの主張にも向けるべきです。重要な部品は、彼らが省いたものなのです。
そもそもハードウェアを信用しないという立場
私の本当の立場を示し、そのトレードオフについても認めておきます。ほとんどの人にとって、ハードウェア暗号化ドライブはそもそも選ぶべきカテゴリーではありません。正解は安価な汎用ストレージへのソフトウェア暗号化です。15ドルのUSBメモリにVeraCryptを使うか、LinuxならLUKSコンテナ、あるいはシンプルなage暗号化アーカイブを使う。そうすれば、公開されて検証可能で、数千人が読んでいるコードに実装された暗号保証が得られます。しかも、あるODMのマイコンが箱に書いてあることを本当に実行しているかどうかに依存しません。
反論はいつも使いやすさについてです。そしてそれは妥当な指摘です。VeraCryptのコンテナは人を混乱させます。弁護士や会計士は確実には使いこなせず、だからこそ機密性の高い顧客ファイルが暗号化されていないスティックに入ってしまうのです。これはツール側の本当の失敗であり、私も以前UXのアンチパターンがいかに静かにセキュリティを損なうかについて書きました。しかし「良い暗号は使いにくい」への答えは、「使いやすい偽物の暗号を買え」ではありません。より良いデフォルトを求めることです。パスワードでマウントできるOSレベルの暗号化コンテナ、右クリックから暗号化できるファイルマネージャー、ドライブを適切に事前設定するIT部門などです。
見落とされがちな保守性の論点もあります。汎用ハードウェア上のソフトウェア暗号化コンテナは、いつまでも交換可能です。ドライブをなくしたら、別のものを買ってバックアップから復元すれば終わりです。一方、ハードウェア暗号化ドライブは替えのきかない単一品です。コントローラーが壊れたとき、ベンダーがアンロックツールを見捨てたとき(たいていWindowsでしか動かず、しかもサポートするバージョンもベンダーの気まぐれ次第)、あるいは会社が潰れたとき、データにアクセスできるかどうかは自分がコントロールできないサプライチェーンに左右されます。私たちは不透明なプラットフォーム部品が動き続けると信じることの代償を、すでに痛い目を見て学んできました。独自仕様の暗号アプライアンスも、同じ形で、もっと静かに壊れていきます。
それでもハードウェアデバイスが必要なら、たとえばエアギャップ環境でのファイル転送や、コンプライアンス上FIPS認証済みモジュールが求められる場合です。その場合は、独立した検証に耐えてきた少数のベンダーの製品を選び、証明書は自分で確認してください。その購入も、スタック内の他の信頼判断と同じように扱ってください。ファームウェア、サプライチェーン、そしてエディタのマーケットプレイス拡張機能に対して(ようやく)向けるようになった懐疑心を、暗号処理を目に見えないところで行うと主張するブラックボックスには二倍向けるべきです。
セキュリティ偽装が信頼に与える代償
「セキュリティ演劇(security theater)」という言葉はたいてい空港の保安検査に向けられますが、これはその最も純粋な形です。実際には何も守らないのに、ユーザーに守られていると感じさせるための仕組みです。そして演劇は、何もないよりたちが悪いことすらあります。何もないなら、少なくとも真実は伝わるからです。ドライブが暗号化されていないと知っている人は、ファイルにパスワードをかけるかもしれませんし、タクシーに置き忘れないよう気をつけるかもしれませんし、そこに何が入っているかをもう一度考えるかもしれません。一方、「暗号化された」ドライブを持っている人は安心してしまいます。その製品はリスクを減らさないだけでなく、行動を変えることで積極的にリスクを増やしてしまうのです。
こうした話の本当のコストはそこにあります。悪いSKUが一つ存在することではありません。市場には昔から悪いSKUがありました。問題は、暴かれた偽物の一つひとつが、「暗号化」が単なるマーケティング用語だと買い手に教えてしまうことです。それによって、本当にエンジニアリングをしているベンダーへのシグナルが薄れていきます。Kingston IronKeyと指紋ゲート付きのSDカードリーダーが、同じような価格で検索結果に並び、同じ形容詞をまとっているとき、本物の製品は、商品ページからは反証できない嘘と競争させられているのです。
規制当局がこの問題の一部を解決できる可能性はあり、実際にときどきそうしています。消費者保護機関は、ソフトウェアの欺瞞的なセキュリティ主張を取り締まってきました。平文のストレージを入れた箱に「暗号化」と書くのは、虚偽表示として非常に明白な例です。しかし取り締まりは遅く、管轄も絡みます。一方で、掲載ページは新しいストアフロントに、苦情が動くよりずっと速くコピーされてしまいます。より速く機能している免疫システムは、すでに動いています。ドライバーを持った研究者たちと、形容詞を信じる前に分解記事を待つことを覚えた買い手たちです。

つまり結論は「Lenovoはダメだ」というだけではありません。ただし、Lenovoは評判の打撃と、そのあとに続くべきリコールを受けて当然です。本当に言いたいのは、ハードウェアセキュリティでは分解結果こそがスペックシートだということです。デバイスが開けられ、トレースされ、販売で利益を得ていない誰かによって中身を読み出されるまで、「暗号化」は性質ではなく主張にすぎません。だから慎重に選んでください。あるいはもっと良いのは、自分で暗号化して、プラスチックを信用するのをやめることです。


