クレジットカードBitcoin
AEGIS

SECURITY

一般的なスマートフォンの防御を、超えるために。

Aegis Phoneは、Google Pixelのハードウェアセキュリティと、GrapheneOSの多層的な防御設計を組み合わせたセキュアスマートフォンです。 端末の物理的な奪取、未知の脆弱性、アプリの越権、通信経路の追跡。 解析や侵害の難易度を引き上げる主な設計を、このページで13分野・102項目に分けて説明します。

いかなる攻撃も防げるという保証ではありません。実際の耐性は端末世代、更新状態、認証情報、設定と運用に左右されます。

01

端末を奪われた場合のデータ保護

紛失、盗難、押収。端末が手元を離れる理由を、防御は選びません。奪われた後の時間経過とともに、抽出の難易度を自動的に引き上げ続けます。

Auto Reboot

一定時間ロック解除されなければ、端末を自動的に再起動します。暗号鍵がメモリから失われ、データは認証なしには復号できないat rest状態へ戻ります。初期値は18時間で、10分〜72時間まで調整できます。

initプロセスで実装されており、通常のプロセス停止では回避しにくい設計です。GrapheneOSを象徴する機能です。

ロック中のUSB-Cポート制御

OS上の無効化に留まらず、USBコントローラーのハードウェアレベルとカーネルの二層で遮断します。データラインとDisplayPort等のAlternate Modeも無効化し、最高強度では充電処理まで停止できます。

0時間
ロック中鍵はメモリ上
再起動
暗号鍵 消去at rest

ロックされたまま、時間だけが経過

ロックから18時間(初期値)が経過すると自動で再起動し、認証なしには復号できない状態へ戻ります。

この分野のその他の防御

Duress PIN/Password

事前設定した緊急用PINまたはパスワードを入力すると、端末データとeSIMを不可逆的に消去します。再起動を必要とせず、開始後は中断できません。ロック画面以外の認証画面でも作動します。

誤入力時の損失が大きいため、当店では値を設定せず、リスクを理解したご本人のみが設定します。

解放済みメモリの即時ゼロ化

ユーザー空間とカーネルの双方で、解放されたメモリを即座にゼロで上書きします。パスワード・暗号鍵・認証トークン・通信断片がメモリに残留するリスクを下げます。

ロック時の機密メモリ解放

ロックと同時にSystemUI等へフルコンパクティングGCを実行し、直前に使われたPINや派生鍵の痕跡を、Auto Rebootの発動を待たずに消去しにいきます。

128文字までの端末パスワード

最大128文字のパスフレーズを設定できます。Secure Elementの試行制限に依存せず、暗号強度そのもので守る構成を選べます。

PIN配置のランダム化

ロック画面とSIM PIN入力で数字キーの配置をランダム化します。覗き見・指の軌跡・画面上の痕跡からの推測を難しくします。

指紋+PINの2要素ロック解除

指紋認証の成功後に、さらにPINの入力を要求できます。長いパスフレーズを主認証に、日常は指紋+短いPINという運用が可能です。指紋だけでは開きません。

指紋認証の試行を5回に制限

標準Androidの約20回に対し、合計5回で指紋認証を停止します。別の指を5回当てて、意図的に指紋認証を無効化することもできます。

指紋をアプリ認証専用化

指紋を端末のロック解除には使わず、パスワードマネージャー等のアプリ認証だけに限定する構成を選べます。

02

強力なストレージ暗号化

暗号化は「かかっているか」ではなく「どう設計されているか」が重要です。鍵の置き場所と導出の仕組みまでが防御の一部になります。

Titan M2による総当たり制限(Weaver)

Secure Elementに保存された高エントロピーなWeaver Tokenは、正しい認証情報なしには取り出せません。内部の安全なタイマーが、失敗のたびに待機時間を引き上げます。

公式例:5回目1分、10回目4時間、14回目13日、17回目1年、19回目9年、20回目以降は試行不可。

ファイル単位の鍵導出

各ファイル・ディレクトリにHKDF-SHA512で一意の鍵を導出します。本文はAES-256-XTS、ファイル名はAES-256-CTSで暗号化。ファイル名パディングも16バイトから32バイトへ拡張し、長さから漏れる情報まで抑えます。

総当たりに与えられる時間

5回目1分
10回目4時間
14回目13日
17回目1年
19回目9年
20回目以後、試行不可
Titan M2内部の安全なタイマーが、失敗のたびに待機時間を引き上げます(公式例)。

この分野のその他の防御

ファイルシステムベース暗号化

ファイル本文だけでなく、ファイル名・ディレクトリ名・ファイルシステムのメタデータまで暗号化の対象にします。

プロファイルごとに独立した暗号鍵

Owner・Secondary Userの各プロファイルが独立したランダム鍵を持ちます。Ownerがログイン中でも、他プロファイルのデータへ自動的にはアクセスできません。

外部の高速機材へ総当たりを移せない

SoC内部から取り出せないハードウェア鍵を鍵導出に組み込みます。暗号化データだけをコピーしてGPUクラスタで総当たりする攻撃を、成立しにくくします。

プロファイル終了による鍵の完全排除

Secondary UserのEnd sessionで、暗号鍵をRAMとハードウェアレジスタから消去し、そのプロファイルだけをat rest状態へ戻せます。端末全体の再起動は不要です。

03

未知の脆弱性を悪用する攻撃への耐性

パッチが存在しないゼロデイに対しては、攻撃を「成立しにくくする」設計そのものが防御になります。GrapheneOSが最も深く手を入れている領域です。

hardened_malloc

GrapheneOS独自の強化メモリアロケーターです。メタデータの完全分離、解放時ゼロ化、Write-after-free検出、Guard Region、ランダムCanary、MTE統合など多数の防御を組み合わせ、従来型のヒープ攻撃を成立しにくくします。

Hardware Memory Tagging(MTE)

ARMv9のメモリタグ機能で、Use-after-freeやバッファオーバーフローをハードウェアで検出・停止します。互換性確認済みアプリに標準適用し、全アプリへの拡張も可能です。

アクセスのタグ

タグが一致 — アクセスを許可しています

メモリ領域とポインタにタグを付け、不一致のアクセスをハードウェアが検出して停止します。

この分野のその他の防御

攻撃対象領域の削減

NFC・Bluetooth・UWB・USB・ロック画面カメラ等をオプション化または初期無効化します。脆弱性が存在し得るコードへの到達自体を難しくします。

Secure Application Spawning

アプリの起動方式を強化し、ASLR配置・スタックカナリア等の秘密情報をアプリ間で共有しません。1つのアプリの侵害から、他アプリへの足がかりを与えません。

Pointer Authentication(PAC)

戻り先ポインタ等に暗号学的な認証を付与し、ポインタの書き換えを検出します。ユーザー空間コードへ広く適用しています。

Branch Target Identification(BTI)

間接分岐の着地点をCPU側で制約し、ROP/JOP等の制御フロー乗っ取りを難しくします。

Control Flow Integrity(CFI)

関数の呼び出し先を型情報で制限します。カーネルではBTIとClangのType-based CFIを併用します。

ShadowCallStack

関数の戻り先を保護された別領域にも保存し、スタック破壊による戻り先の改変を検出します。

強化されたASLR

仮想アドレス空間を39ビットから48ビットへ拡張し、ASLRエントロピーを24ビットから33ビットへ増やします。メモリ配置の予測を大幅に難しくします。

カーネルへのMTE適用

ユーザーアプリだけでなく、カーネルの主要メモリアロケーターにもMemory Taggingを適用します。

カーネルヒープCanary

カーネルヒープにもランダムCanaryを配置し、線形オーバーフローを検出します。

カーネルモジュール署名の強制

ビルドごとのRSA 4096+SHA-256署名を要求し、Lockdownを強制Confidentiality Modeで運用します。ユーザー空間が侵害されても、カーネル境界を維持しやすくします。

Android RuntimeのJIT無効化

実行時コンパイルを全面的に無効化し、Ahead-of-Timeコンパイルへ置き換えます。JITという大きな攻撃面を削減します。

動的コード読み込みの原則禁止

ベースOSでは、ネイティブ・Java双方の動的コード読み込みをほぼ全面的に禁止します。ユーザーアプリにも、アプリ単位の禁止設定を提供します。

Native Debugging/ptrace制御

同梱アプリへのptraceを遮断します。ユーザーアプリもアプリ単位で制御でき、遮断時は通知されます。

04

サンドボックスと権限分離

「インストールした」と「すべてを渡した」は別の話です。アプリに見せる世界そのものを、利用者が設計できます。

Sandboxed Google Play

Google Play一式を、特権システムサービスではなく通常アプリとしてサンドボックス内で実行します。権限の付与には同意が必要で、導入したプロファイル内でしか動きません。不要なら入れない選択もできます。

利便性とGoogleの権限縮小を両立する、GrapheneOSの代表機能です。

Storage Scopes

ストレージ権限を「持っているように見せる」互換レイヤーです。実際に読めるのは、アプリ自身が作ったファイルと、利用者が個別に許可した範囲だけです。

一般的なAndroidAegis Phone(GrapheneOS)
アプリサンドボックス

Google Play(特権あり)

連絡先
位置情報
他アプリ

特権を持つPlayサービスは、端末の深くまで届きます

Google Playは特権を持たない一般アプリとして、サンドボックスの内側で動作します。

この分野のその他の防御

SELinuxポリシーの強化

アプリ隔離に使われるSELinuxポリシーをさらに厳格化し、到達できる対象を削減します。

seccomp-bpfポリシーの強化

プロセスが呼び出せるシステムコールを制限し、カーネルの攻撃面を削減します。

ブラウザレンダラーサンドボックスの強化

多数のアプリが内部で使うWebViewのレンダラープロセスまで強化します。端末全体の攻撃耐性に効きます。

Android Autoの権限削減

通常は特権が必要なAndroid Autoを、互換レイヤーの拡張により権限を縮小した状態で動作させます。

Network Permission

アプリごとにネットワークアクセスを完全に遮断できます。直接通信だけでなく、OS API経由・他アプリ経由・localhost経由の間接通信まで制御します。

Sensors Permission

通常は権限なしで読める加速度・ジャイロ・コンパス・気圧計等を一括制御します。拒否時はゼロ値を返し、アプリに拒否を悟らせにくくします。

Contact Scopes

連絡先全体を渡さず、特定の連絡先・グループ・必要な項目だけを開示します。初期状態では、アプリから空の連絡先に見えます。

アプリの完全無効化

Force Stopより強く、データを残したままアプリを実行不能にできます。他アプリやシステムから呼ばれても起動しません。

05

ユーザープロファイルによる分離

一台の中に、互いを知らない複数の環境を作れます。仕事、私生活、金融。混ざらないことが、漏れないことの前提になります。

プロファイルごとの完全分離

アプリ・データ・アカウント・連絡先・写真・暗号鍵・VPN設定・Google Playの有無までがプロファイル単位で分離されます。アプリは他プロファイルの存在を、原則として認識できません。

Private

日常の環境

使用中

Work

仕事の環境

暗号化されたまま

Finance

資産の環境

暗号化されたまま

Privateを開いても、他の環境は暗号化されたまま。存在も見えません

プロファイルごとにアプリ・データ・暗号鍵が分離され、互いの存在を認識できません。

この分野のその他の防御

最大32のプロファイル

標準Androidより多い、最大31のセカンダリユーザー+Guestを作成できます。

アプリ追加の禁止設定

特定プロファイルでの新規インストールをOwnerから禁止できます。必要なアプリだけの固定環境を作れます。

Ownerからのアプリ配布

Ownerで導入済みのアプリを、再ダウンロードなしにセカンダリプロファイルへ追加できます。

通知転送はオプトイン

バックグラウンドプロファイルの通知転送は初期状態で無効です。必要なプロファイルだけ個別に有効化します。

06

Verified Bootと改ざん耐性

起動するたびに、OSそのものが検証されます。すり替えられた端末は、起動の段階で正体を現します。

起動時のOS全体検証

ファームウェアとOSパーティションを、ハードウェアRoot of Trustから毎回検証します。検証されないデータは、OSとして読み込まれません。

Bootloader再ロック

導入後にBootloaderを再ロックして運用します。アンロック状態は不完全なインストールとして警告されます。当店は再ロック状態で納品します。

ハードウェア(Root of Trust)
ブートローダー(再ロック済み)
OS(署名を毎回検証)

起動のたびに、順番に検証しています

信頼はハードウェアから連鎖します。検証されないデータは、OSとして読み込まれません。

この分野のその他の防御

ロールバック防止

ファームウェア・OS・システムアプリ・APEXモジュールのバージョンと署名を確認し、脆弱な旧版へ戻すDowngrade攻撃を防ぎます。

システムAPKの継続検証

OS外から更新されるシステムAPKにも、署名付きfs-verityメタデータを要求します。起動時とファイル読込時にも検証します。

ダウングレード経路の閉鎖

OS同梱アプリを旧バージョンへ戻せる可能性のあった抜け穴を、インストール時と起動時の双方で閉じます。

Verified Bootキーの目視確認

起動時に表示されるSHA-256キー指紋を公式値と照合し、正規署名ビルドであることをご自身の目で確認できます。

07

端末の真正性・改ざん検証

「信頼してください」を口にしないための仕組みです。ハードウェアから信頼を連鎖させ、第三者が検証できます。

Auditorアプリ

ハードウェアKeystoreとSecure Elementを使い、端末が正規のPixelか、GrapheneOSが正規ビルドか、BootloaderとVerified Bootの状態までを検証できます。

検証する端末

ハードウェア鍵で検証中

Aegis Phone

Auditorがハードウェア保護された鍵で、端末とOSが正しい状態にあることを検証します。

この分野のその他の防御

ハードウェアベースのペアリング

端末ごと・検証相手ごとにハードウェア保護された鍵を生成し、同一端末が正しい状態を保っているかを継続的に確認します。

リモートAttestation

Attestation Serviceにより、端末が手元になくても定期的に真正性と整合性を確認できます。

Attestation鍵のプライバシー保護

Remote Key ProvisioningにGrapheneOSのリバースプロキシを標準利用し、アプリごとに分離された鍵のプライバシーを補強します。

08

更新・パッチ管理

防御は導入した日の状態では終わりません。更新の速さと確実さが、防御の実効性を決めます。

Android未修正の脆弱性も先行修正

Android本体で未修正の脆弱性や適用漏れのパッチを、独自に修正します。プロジェクト自身がAndroidやPixelの脆弱性を発見・報告してきた実績があります。

A/Bアップデート

使用していない側のOSスロットへ更新し、初回起動に失敗すれば自動的に元のスロットへ戻ります。更新の失敗で端末が沈黙しません。

スロットA

稼働中

スロットB

更新を書き込み中

使用中のまま、もう片方のスロットへ書き込みます

使用していない側のスロットへ更新し、起動に失敗すれば自動で元へ戻ります。更新で端末は沈黙しません。

この分野のその他の防御

自動バックグラウンド更新

OS更新は自動でダウンロード・適用され、利用を妨げずに最新状態を維持します。

Security Preview Releases

Android Security Bulletinの正式公開前に、将来のパッチを先行導入できる任意チャンネルを提供します。

Vanadiumの迅速更新

攻撃対象として特に重要なブラウザ/WebViewを、OS本体とは別に迅速に更新できます。

09

Vanadiumブラウザ/WebView

最も攻撃されるのは、最も使う場所です。ブラウザとWebViewには、OSと同じ思想の防御を敷きます。

JavaScript JITの標準無効化

JITコンパイラの巨大な攻撃面を、通常の閲覧では使いません。必要なサイトだけ個別に有効化できます。

Strict Site Isolation

Webサイトごとにレンダラープロセスを分離し、あるサイトの侵害から他サイトのデータへ到達しにくくします。

JavaScript JIT:標準で無効
サイトA独立プロセス
サイトB独立プロセス
サイトC独立プロセス

サイトごとに、独立したプロセスで実行します

実行時コード生成という巨大な攻撃面を通常閲覧では使わず、サイトごとにプロセスを分離します。

この分野のその他の防御

Hardware Memory Tagging

Vanadiumの主要メモリアロケーターでMTEを有効化しています。

Type-based CFI

ブラウザの制御フロー乗っ取りを難しくします。

Strong Stack Protector

スタック破壊を検知する保護を強化しています。

ローカル変数の自動ゼロ初期化

未初期化メモリ由来の脆弱性と、過去データの漏えいリスクを抑えます。

Sandboxed iframe

埋め込みコンテンツを追加で隔離します。

JITなしのWebAssembly

DrumBrakeインタープリターにより、JITを無効化したままWebAssemblyを動かせます。

動的コード実行のseccomp遮断

JITが無効なプロセスでは、動的コード実行そのものをシステムコールレベルで遮断します。

WebGPUの無効化

大きなGPU攻撃面を削減します。

WebRTC IPポリシー制御

P2P通信によるIPアドレスの露出を制御できます。

Google PlayなしのPasskey/Autofill

ネイティブのCredential Manager実装により、Google Playを入れずにPasskeyや自動入力を使えます。

10

ネットワーク・通信周辺の防御

端末の外へ出ていく電波と経路にも、選択肢を持てます。運び手に委ねきらないための制御です。

LTE-onlyモード

2G・3G・5Gを無効化し、LTEだけを使用できます。古い世代と最新世代の巨大なセルラーコードごと、モデム周辺の攻撃対象を減らします。

接続ごとのWi-Fi MACアドレス変更

同じWi-Fiへの再接続ごとに、異なるMACアドレスを使用できます。標準Androidの「ネットワークごとに固定」より追跡耐性の高い設計です。

同じWi-Fiネットワーク
1回目の接続……
2回目の接続……
3回目の接続……

毎回別のアドレス。同じ端末だとは、外からわかりません

同じWi-Fiでも、接続のたびに異なるMACアドレスを使用します。同一端末としての追跡を難しくします。

この分野のその他の防御

DHCP状態の消去

再接続前にDHCPクライアントの状態を消去し、MACアドレスを変更しても同一端末と紐づく痕跡を残しにくくします。

IPv6プライバシー実装の修正

ネットワークをまたいだ端末識別につながるカーネルの問題を修正しています。

VPNのDNS漏えい防止

VPN停止時のDNS漏えいやトンネル外接続、リゾルバーのRace Conditionを、追加の制御で遮断します。

MulticastによるVPN迂回防止

マルチキャスト通信を使ったVPN外への経路を、eBPFフィルターで遮断します。

mDNSによるVPN迂回防止

VPN Lockdownの有効時は、mDNS経由の接続も制限します。

プロファイル間のVPN漏えい防止

別プロファイルのVPNトンネルへの不正なパケット送出を、Netfilterで遮断します。

インターフェース指定によるVPN回避の修正

特定のネットワークインターフェース指定でVPNを回避できた、eBPFファイアウォールの穴を閉じています。

侵襲的なキャリアアプリを入れない

キャリア固有アプリやOMA Device Managementを搭載せず、対応情報の独自変換で広い互換性を保ちます。

認証付きNetwork Time

時刻更新を認証・暗号化し、端末時刻の改変による証明書有効期限チェックの迂回を防ぎます。

11

プライバシーがセキュリティに寄与する機能

渡さない情報は、漏れようがありません。収集の前提そのものを外すことが、最初の防御になります。

Googleアプリを初期搭載しない

初期状態で常駐する特権的なGoogleサービスを持ちません。必要な方が、必要なプロファイルにだけ明示的に導入します。

GrapheneOSサーバーの標準利用

接続確認・GNSS補助・時刻同期等を、GoogleではなくGrapheneOSのサービスで標準処理します。切り替えや無効化も選べます。

接続確認GrapheneOSサーバー
GNSS補助・位置GrapheneOSサーバー
時刻同期GrapheneOSサーバー

Googleのサーバーには、届いていません

OSの基盤通信は、GoogleではなくGrapheneOSのサーバーを標準利用します。無効化も選べます。

この分野のその他の防御

SUPLプロキシ

GNSS補助のSUPL通信をプロキシ経由にできるほか、キャリア標準へ戻す・完全無効化する選択肢があります。

端末内で計算するNetwork Location

位置の計算をサーバーへ送らず、端末内で行います。位置推定のたびに外部へ距離情報を渡す方式を避けています。

スクリーンショットのメタデータ除去

OSビルド・日時・タイムゾーン等のEXIFメタデータを、標準で除去します。

端末識別経路の閉鎖

標準Androidの意図を迂回して端末を一意に識別できた複数の経路を修正しています。旧API向けアプリへのハードウェアID制限も強化しています。

ロック画面の機密通知を標準非表示

機密通知の非表示・パスワード入力文字の非表示・入力履歴による個人化の無効化を、標準設定とします。

位置情報アクセスインジケーター

カメラ・マイクに加え、アプリが位置情報へアクセスした際も画面上に表示します。すべての位置情報APIが対象です。

12

安全な標準アプリ・運用機能

日常の道具にも、同じ思想を通します。防御は特別な操作ではなく、標準の挙動であるべきです。

メモリ破壊検出の通知

hardened_mallocやMTEがメモリ破壊を検出すると、通常のクラッシュではなく「メモリ破壊が検出された」と通知します。単なる不具合か、攻撃の兆候かを判断する材料になります。

この分野のその他の防御

Hardened PDF Viewer

脆弱性の温床になりやすいPDFを、サンドボックス化された専用ビューアで開きます。

GrapheneOS Camera

プライバシーとセキュリティを重視した、独自のカメラアプリを提供します。

セキュリティ重視のSetup Wizard

初期設定時にBootloaderのアンロック状態を明確に警告し、完了時にはOEM Unlockingを標準で無効化します。

暗号化バックアップ(Seedvault)

ローカル・外部ストレージ・対応クラウドへの暗号化バックアップを統合しています。

利用者管理型クラッシュレポート

ログを自動送信せず、利用者が内容を確認して、必要な範囲だけ共有できます。

最小限のプリインストール

商業提携による不要なプリインストールを持たず、常駐アプリと攻撃対象領域を増やしません。

不要なルート証明書の削除

一部のルート認証局を、標準の信頼済みシステムCAから除外しています。

デバッグ状態の警告

試作機やUARTデバッグが有効な状態など、通常より制御の弱い可能性がある端末を警告します。

13

Pixelハードウェアとの組み合わせ

GrapheneOSは、どの端末でも同じ強さになるOSではありません。この防御は、要件を満たすハードウェアの上でだけ完成します。

公式が求めるハードウェア要件

ファームウェア/OSのVerified Boot、ロールバック保護、StrongBox Keystore、Secure Element、Weaverによる試行制限、Hardware-bound Key Derivation、MTE・BTI・PAC、無線・GPU等の分離、A/B更新、USBのハードウェア無効化、ロック状態でのデバッグ無効化、長期のファームウェア更新。GrapheneOSがPixelを選ぶ最大の理由は入手性ではなく、これらの要件を満たすためです。

Titan M2Weaver
Google Pixel 10
MTEUSB制御

認証と暗号鍵を守る、独立したセキュリティチップ

Titan M2、Weaver、MTE、USBのハードウェア制御。要件を満たすのはPixelだけです。

保護性能は、端末モデル、更新状態、認証情報、設定、アプリ、通信回線および利用方法によって異なります。出典はGrapheneOS公式資料に基づく整理です。機能の初期値・対応状況はGrapheneOSの更新により変わることがあります。