「Android」のフルディスク暗号化は、少し時間をかければ総当たり攻撃で破ることができる。そして、現在利用されている端末では、この問題への十分な対応策は存在しないかもしれない。
セキュリティ研究者のGal Beniamini氏は先週、Qualcommの「Snapdragon」プロセッサを使用しているスマートフォンの暗号を破ることが可能だとする記事をブログに掲載した。これは、膨大な数のモバイルデバイスが脆弱性を抱えることを意味している。
Androidのフルディスク暗号化機能(FDE)は、「Android 5.0」で初めて実装されたもので、ユーザーデータを守るための128ビットのマスター鍵と128ビットのソルト値をランダムに生成する。このマスター鍵はデバイス暗号化鍵(DEK)とも呼ばれており、ユーザーの認証情報(PIN、パスワード、タッチスクリーンパターンなど)に基づいて暗号化され、保護されている。
暗号化されたDEKは、デバイス上に保存されている。
Androidでは、このプロセスに対する総当たり攻撃を防ぐために、復号しようとする際、試行が定められた回数失敗するごとに、処理に待機時間が発生するようになっている。デバイス外での総当たり攻撃を防ぐために、鍵はデバイスのハードウェアから取り出せないようになっている。これが、Qualcommのシステムにセキュリティ上の問題が発見された部分だ。
鍵の取り出しを防ぐ機能は、Androidのハードウェアによるキーストア(KeyMasterと呼ばれる)で提供されている。このモジュールは、「安全な領域」だと見なされているTEE(Trusted Execution Environment)内で実行される。これに対し、Android OSは「安全ではない領域」だとみなされている。
この考え方は、KeyMasterが暗号鍵の生成と暗号処理を、これらの情報をメインOSに漏らさずに実行できることを前提としている。
鍵が生成されると、生成された鍵は暗号化されてメインOSに返される。これらの鍵が必要な処理を行う場合には、暗号化された鍵データのブロック(鍵ブロブ)をKeyMasterに送る必要がある。この鍵ブロブには、デバイスのプロセッサの安全な領域内で使用される、暗号処理に必要な2048ビットのRSAキーが収められている。
「この処理は、鍵ブロブを保護するために使用される暗号鍵を、外部に一切漏らさずに実行される。このことは、鍵ブロブを用いて実行されるすべての暗号学的操作は、KeyMasterモジュールによって、デバイスが直接処理する必要があることを意味している」と同氏は言う。
ただし、KeyMasterの実装はハードウェアメーカーに任されている。QualcommのKeyMasterモジュールはSnapdragonの「TrustZone」内で実行されている。これは生体情報スキャンや暗号化などの秘密を要する機能を保護するための機能だが、Beniamini氏はAndroidのセキュリティホールを攻撃に利用することで、TrustZoneから鍵を取り出せることを発見した。
QualcommはQSEE(Qualcomm Secure Execution Environment)と呼ばれるTEEを提供しており、Android OSからは隔離されたこの安全な環境内で「Trustlet」と呼ばれる小さなアプリを実行できる仕組みを設けている。KeyMasterはこのQSEEアプリの1つだ。
しかし、Androidの脆弱性を悪用すると、独自のQSEEアプリをTrustZone内にロードさせ、特権の昇格と領域全体の乗っ取りを行うことができる。また、フルディスク暗号化のために生成された鍵が収められている、暗号化されていないブロブを盗むこともできる。
この手順に成功すれば、あとは総当たり攻撃を行うだけで、ユーザーパスワードや、PIN、ロックパターンを入手することができる。これでAndroidのフルディスク暗号化を復号するのに必要な情報がすべて手に入ったことになる。
攻撃コードの完全なソースは、GitHubで公開されている。
Beniamini氏はこの問題に関してQualcommと連絡を取ったと述べているが、この問題の修正は簡単ではなく、ハードウェアの変更が必要になる可能性があると指摘している。これはつまり、スマートフォンがアップグレードされるか、新しいモデルに買い換えない限り、問題は解消されないということだ。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。