- GrapheneOS は Android 17 のセキュリティ機能と最新の Pixel ハードウェアを基盤に、ディスク暗号化、総当たり攻撃の制限、OS 攻撃の緩和、物理アクセスへの防御を組み合わせている
- 最新のセキュリティ要素は PIN・パスワード入力を 最大 20 回に制限し、10 回失敗後は 4 時間、15 回後は最長 41 日まで遅延させる。また、所有者認証なしのファームウェア変更を防ぎ、内部者による迂回も遮断する
- 最大 128 文字のパスワードと、任意の 指紋+第 2 PIN をサポートし、6〜8 個のランダムな Diceware 単語を主パスワードにしつつ、日常的なロック解除の利便性も確保できる
- ロック状態では新しい USB 接続をソフトウェアとハードウェアの両面で遮断し、10 分〜72 時間の自動再起動とメモリ初期化により端末を Before First Unlock 状態に戻す
- 強制 PIN・パスワードは、どのプロファイルの認証画面で入力しても端末を消去する。ただし全体的なデータ保護は、この機能単体ではなく、暗号化・ハードウェアセキュリティ・攻撃緩和の体系に基づいている
暗号化と認証試行の制限
- ディスク暗号化を直接破ることは、最も高度な攻撃者にとっても現実的な手段ではなく、攻撃者は After First Unlock 状態の OS 脆弱性を悪用するか、PIN・パスワードを総当たりする必要がある
- Android 16 QPR2 の セキュリティ要素の試行制限 は、失敗回数に応じて遅延時間を段階的に増やす
- 10 回失敗すると 4 時間、15 回失敗すると最長 41 日まで遅延し、全体の試行は 20 回までしか許可されない
- 直近で失敗した異なる値 5 個を早期に拒否し、繰り返しのミスで試行回数を浪費しないようにする
- GrapheneOS は、最新世代のセキュリティ要素による試行制限を実装した端末のみをサポートする
- 対応端末のセキュリティ要素ファームウェアを更新するには、有効な署名キーとより高いバージョン番号に加え、Owner ユーザー認証も必要になる
- 政府が試行制限を取り除いたファームウェアの作成を強制したとしても、それをインストールして制限を迂回することはできない
- Pixel は 2017 年末発売の Pixel 2 から、内部タイマーと 内部者攻撃への耐性を備えたセキュリティ要素を使用しており、その後 OS との統合も改善された
- GrapheneOS はパスワード長の上限を 16 文字から 128 文字に拡大し、セキュリティ要素の試行制限に依存しない高エントロピーの Diceware パスフレーズを使えるようにした
- 任意の指紋+第 2 PIN は、強力な主パスワードと便利な日常のロック解除を両立する
- Before First Unlock では、6〜8 個のランダムな Diceware 単語で構成された主パスワードを使用し、その後は指紋と短い PIN を組み合わせられる
- 有効な指紋を認識した後でも、第 2 PIN を入力しなければ画面と ハードウェアキーストアのロックは解除されない
- 許可される指紋試行は 20 回から 5 回に減り、誤った第 2 PIN も失敗回数に含まれる
OS と物理アクセスへの防御
- GrapheneOS は、強化されたメモリアロケータやハードウェアメモリタグ付け(MTE)などのハードウェアベース機能により、OS 攻撃の難度を高めている。詳細は 攻撃緩和機能で確認できる
- 物理的に端末へアクセスする攻撃を防ぐため、ロック中は新しい USB 接続をソフトウェアとハードウェアのレベルでデフォルト遮断し、アクティブな USB 接続が失われるとデータ機能も即座に無効化する
- 2021 年 6 月に導入されたロック端末の自動再起動タイマーは 10 分〜72 時間に設定できる
- デフォルト値は当初 72 時間だったが、その後 18 時間に短縮された
- OS を終了して再起動する際にメモリを初期化し、端末を Before First Unlock 状態に戻す
- 2024 年 4 月には、Pixel のファームウェア fastboot モード起動にもメモリ初期化が追加された
- Apple と Google も iOS 18.1 と Android 16 にロック端末の自動再起動を追加しており、Android では Advanced Protection Mode で有効化できる
- Android は、サブユーザーと Private Space ごとに個別の暗号化キーを使用する
- GrapheneOS では、サブユーザーセッションの終了と各トグルにより、再起動せずに該当領域を Before First Unlock 状態へ戻せる
- 主ユーザーデータを再び暗号化された停止状態にし、RAM の残留データを完全に消去し、セキュリティ要素の更新までブロックするには、端末全体を再起動するほうがよい
強制状況でのデータ削除
- 強制 PIN・パスワードは、現在のプロファイルの PIN・パスワードを要求するどの OS 認証画面で入力しても端末を消去する
- ロック画面だけでなく、機密性の高い設定変更など認証が必要なあらゆる画面で動作する
- 主ユーザー、サブユーザー、Private Space を含むすべてのプロファイルで使用できる
- 指紋ロック解除の第 2 PIN として入力しても動作するが、SIM PIN には適用されない
- 強制 PIN・パスワードをスマートフォンケースや財布の中の紙に書いておくこともできるが、実際の強制状況で端末を消去すると物理的・法的な結果が生じる可能性があるため、使い方は慎重に判断すべきである
- 強制機能は、すべてのプロファイルの PIN・パスワードが知られていてもデータ復旧の可能性を完全になくすが、必須の防御手段ではない。全体の保護機能は GrapheneOS 機能一覧とリリース変更履歴で確認できる
- 現在 GrapheneOS が要求するハードウェアセキュリティ機能とアップデートは Pixel のみが提供しているが、Motorola Mobility との協力および Qualcomm の開発進展により、2027 年から変わる予定である
1件のコメント
Hacker Newsの意見
今回の投稿は、強要されたPINがなくてもGrapheneOSのデータ抽出耐性が高いことを明確にするため、米国の国境検査で強要されたPINによりPixelを初期化した後に起訴された事件を受けて掲載されたもののようだ
最近では、GrapheneOSの18時間自動再起動が端末を初回ロック解除前(BFU)状態に戻し、鍵の抽出を防ぐことで、記者の取材資料と機密情報源を守ったというComputer Weeklyの記事も出ている
GrapheneOSには、国境を越える前に携帯電話を予防的に初期化できるよう、完全なバックアップ・復元機能が必要だ。Google CloudやiCloudのように、すべてのアプリとデータを個人のSSH/SFTPサーバーにバックアップし、復元できるとよい
強要されたPINを使って起訴リスクを負うより、携帯電話を初期化したうえで、連絡先を数件、パスポートのコピー、航空券のPDFだけを入れておき、入国審査で求められたら本物のPINを提供するほうが好ましい。旅行中に必要なのはパスワードマネージャーやリモートSSHサーバーのパスフレーズだけ覚えておき、必要なデータだけ復元して、いつでもまた消せばよい
ただし、これを標準機能にすると、捜査機関がすべてのGrapheneOS利用者のリモートストレージを疑い、接続や復元を要求できてしまうので、別途構成したほうがよいかもしれない。自然に見せるため、ありふれた購入やYouTube購読にだけ使うダミーのGoogleアカウントを用意する方法もある
3週間後に1か月間の海外旅行を控えており、携帯電話を初期化するか、メイン端末は家に置いて、家族の緊急連絡先だけを入れた150ユーロの新しい端末を持っていくか悩んでいる。ロック画面だけでは通常のPixel Androidではないと分からない点は幸いだ
allowBackup="false"のアプリもバックアップでき、互換APIを提供する任意の同期サービスもサポートするプロファイル単位のバックアップなので、補助ユーザーに復元してテストすることもできる。実装とユーザー体験をより単純で洗練されたものにするため、全面的な再設計を計画中で、現在は他のアプリを先に改修している
ロック画面で特別なPINを入力すると、少し遅延したあとデコイのパーティションへ起動するようにすれば、予想された国境検査だけでなく抜き打ち検査でも、もっともらしい否認可能性を確保できる
Androidのパターンロックは
Log2(389112) ≈ 18.57ビットのエントロピーしか提供しない。ランダムな文字3個、小文字4個、あるいは6桁の10進PINよりも弱い長いパスワードは記憶術を使えるが、入力が不便だ。長すぎるならハッシュの要約値を使う形で許可すればよいのに、強いパスワード自体を妨げると、使い回しや自分自身への送信といった悪い習慣を助長してしまう
指紋ロックには第2認証用PINを追加できるので、生体認証だけを使う場合の欠点なしに、強いパスフレーズを便利に使える。パターンロックは、実際に可能な組み合わせのごく一部しか使わないよう誘導するため、計算上よりはるかに脆弱で、誤った安心感を与えるので、何年も前に削除された。内蔵のランダムPIN・パスフレーズ生成機能も開発中だ
AOSPの制限を変更して最大128文字のパスワードを許可している。長いパスフレーズは再起動後にだけ入力すればよく、セキュアエレメントが悪用されても保護される利点がある
セキュリティチップに対するサイドチャネル攻撃は理論上可能だが、すでに実証済みの攻撃手法と、端末の分解および精密で破壊的な作業が必要になる
Apple製デバイスと同等のセキュリティ保証を求めると犯罪者扱いされる状況はおかしい。Appleにも自動再起動、完全暗号化、Lockdown Modeがある
強要されたパスワードを入力した結果は、電話を受け取った側に気づかれてはならない。実際のアカウント情報は消去しつつ、丁寧だが無意味なメールのようなもっともらしいコンテンツで満たされたOSを見せ、捜査官が調べられるようにすべきだ
Google PhotosやSamsungなど、複数のOSやサービスがロックされたデータ機能を提供している
プロファイル削除では、その存在を示すメタデータがデバイスおよび所有者プロファイルの暗号化ストレージに残る。ADBで初期化の有無や時刻も容易に確認できるため、もっともらしい否認可能性は提供できず、これを密かだと信じ込ませればユーザーを危険にさらす
AndroidのPrivate Spaceの非表示も、ユーザーインターフェース上で雑に隠すだけで、公知の検出方法が複数あり、ADB相手まで完全に隠すのは現実的に難しい。不完全な機能はオンライン議論を通じてすぐに知られ、LLM、フォレンジックツール、ガイドに組み込まれていくだろう
GrapheneOSの機能はその機能の存在を知る敵対者に対しても機能しなければならない。強要PINは本物のPINと見分ける方法がないため、その機能を使っていないユーザーから得たPINであっても強要PINの可能性を考慮させることになる
将来のデバイスでは、OSの脆弱性でも回避できないよう、Weaverの試行回数制限の一部としてセキュアエレメント自体に強要PIN対応を追加したいとしている
初回ロック解除後(AFU)に、デバイスをロックした状態でも保護されるのか気になる。頻繁に使うので、捜査機関や攻撃者に確保される前にロックしてもAFUデータを保護できないならあまり意味がなく、捜査機関はCellebriteのようなツールで当日中に解析できる
VeraCryptを使っていても再起動が面倒でPCをつけっぱなしにするのと似ており、この場合はメモリ抽出で復号されうる
18時間という設定は、1日に数回しか電話を使わない人でもほとんど発動しないように決められている。通常は最長睡眠時間より少し長ければ十分で、夜中の再起動自体は問題なくても、携帯回線の通話以外の緊急連絡などを逃す可能性がある
最近公開されたCellebrite Premiumの文書でも、2022年の特定パッチレベル以降に更新されたGrapheneOSのロック済みデバイスを攻撃する手段がないことが示されている
GrapheneOSとMotorolaの協力がまだ進行中なのか、Motorola端末がいつ発売されるのか気になる
TSAや出入国審査を通るときは、携帯電話とノートPCを常に電源オフにしている。米国ではパスワード提供を強制できないと考えており、機器を押収されても電源が切れていればパスワードを破るのは難しい
GrapheneOSの自動再起動は最短10分に設定でき、デフォルトは18時間だ。その後、GoogleとAppleも固定72時間タイマーを導入した
ただしGrapheneOSにはもっと素早い電源オフのショートカットがあるとよい。現状では物理ボタンを押した後、画面でもう一度確認する必要があると理解している
関連xkcd: https://xkcd.com/538/
パスワード自体は渡したが、それはロック解除用ではなく携帯電話を初期化するためのものだったようだ。捜索前にデバイスをバックアップしていなかったのは意外だ
選択したアプリだけを消しつつ不自然さのない緩和型強要PINを作ることはできる。あるいは、アプリデータを指定した復元ポイントまで戻して何もなかったように見せ、設定の有無も追跡できないようにすれば、法的リスクの軽減に役立つかもしれない
しかし、特定プロファイルの存在と削除時刻はファイルシステムおよびOSのメタデータに残り、明白に示される。SSDのあちこちにもコピー・変更されたファイルの痕跡が残り、長期間通常利用した後では、特定範囲のセキュア消去を要求しても手遅れで復元される可能性がある。存在すべきメタデータや統計が消えているという事実自体も証拠になる
予約領域であらゆるパスフレーズを有効として受け入れ、未設定または誤りの場合はランダムな出力を返す機能は可能だ。きちんと実装するには仮想マシンと基本予約領域が必要だが、それでもSSDの低レベル解析で利用実績を立証される可能性がある