機能一覧
GrapheneOSがAOSP(Androidのオープンソース版)に対して追加・強化している機能を、ジャンルごとにすべて掲載しています。
プライバシー
ネットワーク権限トグル
アプリごとに通信を許可/拒否できます。端末内のローカルホストも権限の対象なので、プロファイル間の通信にも使えません。ファイアウォール型と違い、OSや他アプリのAPI経由の間接的な通信も止まります。拒否時は「通信が落ちている」ように振る舞うため、アプリがクラッシュしにくいのも実用的です。アプリのインストール画面にもトグルが出るので、入れる時点で通信を切れます。
センサー権限トグル
カメラ・マイク・身体センサー・活動認識以外のセンサー(加速度、ジャイロ、コンパス、気圧、温度など)へのアクセスを一括で拒否できます。拒否したアプリにはゼロ化されたデータが渡り、イベントも届きません。アクセスを試みると通知で分かります。新しく入れるアプリを既定で拒否にする設定もあります。
Storage Scopes(ストレージスコープ)
ストレージ権限を与える代わりに「与えたように見せる」方式。アプリは自分が作ったファイルだけを扱え、既定では他のファイルが見えません。必要なファイルやフォルダだけを個別に開示できます。
Contact Scopes(連絡先スコープ)
連絡先権限も同様に、既定では「連絡先が空」として扱います。特定の連絡先やグループだけを、種類ごとに開示できます。
接続ごとのMACランダム化
Wi-Fi接続のたびにMACアドレスを変更します(既定で有効)。標準Androidのネットワークごとに固定する方式より匿名性が高く、再接続前にDHCPの状態も破棄するため同一端末だと推測されにくくなります。IPv6のプライバシーアドレスの実装上の欠陥も修正しています。
端末識別子の漏洩を封鎖
アプリが端末を一意に識別できてしまう既知の抜け道を修正しています。独自のアプリ起動方式により、ASLRなどの内部の秘密値が再起動まで識別子として使われる問題も解消。古いAPIレベルを狙ったハードウェア識別子の取得も制限します。
スクリーンショットのメタデータ削除
OSのビルド情報(機種や版まで分かる)のEXIFタグを完全に削除。撮影日時とタイムゾーンも既定で含めません。画面を共有するだけで環境や居場所が推測される事故を防ぎます。必要なら日時のみ戻す設定もあります。
既定で通信しない・通信先がGoogleではない
Googleのアプリとサービスは既定で含まれません。接続チェック、証明鍵の取得、測位の補助データ(PSDS/XTRA)、SUPL、ネットワーク時刻、ブラウザの構成更新のすべてが、既定でOSプロジェクト自身のサーバーに向きます。個別にGoogleのサーバーへ戻す/無効化するトグルもあります。
既定値をプライバシー側に倒す
キーボードの入力履歴に基づく予測変換は既定で無効。ロック画面では機密性のある通知を隠し、パスワード入力も既定で非表示。無効化された無線機器を既定で露出させないなど、攻撃面の削減がそのままプライバシーの向上にもなっています。
位置情報アクセスの表示
カメラ・マイクと同じ緑のインジケーターを、位置情報にも表示します。標準AndroidがGNSS(衛星測位)の要求時しか出さないのに対し、あらゆるAPI経由の位置取得で表示されます。
ファイル名の暗号化パディング拡大
プロファイルごとの暗号化で、ファイル名のパディングを16バイトから32バイトに拡大。ファイル名の長さから中身が推測される余地を減らしています。
ディレクトリ一覧の隠蔽
ストレージ権限を持たないアプリは、ユーザーが作成したフォルダの一覧を読めません(標準Androidでは読めてしまいます)。
未知の脆弱性への防御
攻撃面の削減
不要なコードを取り除き、機能を任意化して既定で無効にします。NFC・Bluetooth・UWBは既定でオフ。画面ロック中はUSB-C・ポゴピン・カメラへのアクセスを遮断し、Bluetooth・Wi-Fiは一定時間後に自動でオフにもできます。
ネイティブデバッグ(ptrace)の遮断
同梱アプリはすべてptraceアクセスを遮断。ユーザーが入れたアプリも既定で遮断する設定があり、アプリ単位の指定も可能です。遮断されたアプリが使おうとすると通知で分かります。
USB-C/ポゴピン制御
5段階(オフ/充電のみ/ロック中は充電のみ/ロック中は充電のみ・初回解除前を除く/オン)。既定は「ロック中は充電のみ」で、ロック後は新しいUSB接続を即座に遮断し、既存の接続が切れた時点でデータ線をハードウェアとOSの両方で無効化。DisplayPortなどのAlternate Modeも止めます。最高設定では充電自体も遮断できます。
独自の強化メモリアロケータ
メタデータを完全に分離して破壊を防ぎ、不正なfreeを確実に検知。解放時にゼロ化し、再利用を遅らせる隔離、細かなランダム化、確保領域を囲むガード領域、カナリア値、ハードウェアのメモリタグ付けなど、ヒープ破壊を突く攻撃への防御を多層に重ねています。
強化libc・強化アプリ実行環境
メモリ破壊系の脆弱性に対する防御を組み込んだlibcと、アプリ間でアドレス空間の配置などの秘密を共有しない安全なアプリ起動方式を採用しています。
強化カーネル
48ビットのアドレス空間でASLRのエントロピーを大幅に向上。カーネルの主要アロケータにメモリタグ付けとカナリアを導入し、解放されたメモリと起動直後の未使用メモリをゼロ化。カーネルモジュールの署名を強制し、頻繁に狙われるデータ構造の整合性検査を追加しています。
ARMv9の保護機構をOS全体で有効化
分岐先の識別(BTI)とポインタ認証(PAC)を、特定アプリだけでなくOSのユーザー空間コード全体で有効化。制御フロー保全(CFI)とShadowCallStackも併用しています。
JITの無効化と動的コード読み込みの制限
アプリ実行環境のJITコンパイルを完全に無効化し、事前コンパイルに置き換え。OSのほぼ全域で動的なコード読み込みを禁止しています。ユーザーが入れたアプリにも3つのトグル(メモリから/ストレージから/WebViewのJIT)が用意され、遮断時は通知で分かります。
サンドボックスの強化
SELinuxとseccomp-bpfのポリシーを強化し、アプリのサンドボックスを支えるカーネル側も固めています。ブラウザの描画プロセスのサンドボックスも強化対象です。
検証起動と改変の防止
検証起動の性質を改善し、攻撃面を削減。OS内のアプリ(APK)の帯域外更新にも署名付きの継続的な検証を要求し、古い版への差し替えや他機種向けの同名パッケージへの入れ替えを防ぎます。バージョン番号を上げずにOS内コンポーネントを巻き戻す抜け道も封じています。
より完全なパッチ適用
Androidで未修正の多数の脆弱性を修正しています。Linuxカーネルは最新のLTSポイントリリースを迅速に取り込むため、純正OSより数か月先行することもあります。自ら脆弱性を発見して上流に報告することも多数。
メモリ上の機密データの消去
解放されたメモリを即座にゼロ化するため、機密データがメモリに残る時間が短くなります。端末をロックすると主要なシステムプロセスでフルGCを実行し、参照されなくなったデータを消去します。
ファームウェアの状態の可視化
永続的なファームウェアの版と設定を検証し、不整合やデバッグ機能の有効化を報告します。試作機(EVT/PVT/DVT)には警告を表示し、ブートローダー・無線・起動領域の版と指紋の検査も有効化しています。
ロックと認証
緊急消去PIN/パスワード(Duress)
あらかじめ設定した専用のPINまたはパスワードを、認証を求められるあらゆる画面で入力すると、端末とインストール済みのeSIMを不可逆的に消去します。再起動を必要とせず、途中で止めることもできません。2要素指紋解除のPIN欄でも作動します。
自動再起動
ロック状態が続くと自動で再起動し、データを保存時暗号化の状態に戻します。既定18時間、10分〜72時間で設定可能。どのプロファイルの解除でもタイマーは解除されます。init(起動処理)側に実装されているため、システムのクラッシュを使った回避ができません。
2要素指紋ロック解除
指紋認証の後にPIN入力を要求できます。主鍵に長いパスフレーズを使いながら、日常の解除は指紋+短いPINで済ませられます。PINの失敗は通常の試行回数制限に加算されます。
128文字までのパスワード
標準の16文字ではなく128文字まで既定で設定できます。管理者アプリを入れる必要はありません。ダイスウェア方式の長いパスフレーズも使えます。
PINスクランブル
ロック画面とSIMのPIN/PUKで、キー配置をランダム化。肩越しの覗き見や指の動きからの推測を難しくします。
より安全な指紋ロック解除
試行回数を合計5回に制限(標準は5回ごとに30秒待機で計20回)。違う指でわざと5回失敗させれば指紋解除を無効化できます。指紋を「アプリ内の認証と鍵の解除だけ」に限定し、画面の解除には使わない設定も可能です。
機密機能の解除必須化
クイック設定タイルから機密性のある機能を使う際に、ロック解除を要求します。
許可ボタンの誤操作防止
権限の確認ダイアログとADBの承認ダイアログで、許可ボタンを既定で無効にし1秒後に有効化。アプリがボタンの位置を誘導して押させる攻撃を防ぎます。
プロファイル
最大32のユーザープロファイル
標準の4(3+ゲスト)から32(31+ゲスト)へ拡張。プロファイルはそれぞれ独立したアプリ・アプリのデータ・連絡先やメディアを持ち、互いに参照できません。ロック方法に基づく暗号鍵もプロファイルごとに独立しています。
セッションの終了(ログアウト)
管理者アプリなしでプロファイルからログアウトできます。ログアウトするとそのプロファイルのアプリは動かなくなり、暗号鍵はメモリとハードウェアのレジスタから消去されて保存時の状態に戻ります。
アプリ導入の禁止
副プロファイルで新たにアプリを入れられないようにするトグル。必要なアプリを入れた後に固定できます。
既存アプリの導入
所有者プロファイルから、他のプロファイルに既にあるアプリを再ダウンロードせずに導入できます。
通知の転送
バックグラウンドで動いている他のプロファイルの通知を、現在使っているプロファイルへ転送できます(既定は無効、プロファイル単位で有効化)。
ユーザーが入れたアプリも無効化できる
システムアプリだけでなく、自分で入れたアプリも無効化できます。アンインストールしてデータを失うことなく、完全に動かない状態にできます。標準の強制停止より厳格です。
ネットワークと通信
VPN漏れ対策の強化
VPNが落ちた瞬間のDNS漏れ、VPNのDNSサーバーへのトンネル外接続、マルチキャストによるVPN迂回、特定インターフェイス指定による回避、別プロファイルのVPNトンネル経由の送信など、標準Androidに残る抜け道を塞ぎます。「常時接続VPN」と「VPNなしの接続をブロック」は既定で有効です。
国内SIMに広く対応
APN・通信事業者設定・MMS・ビジュアルボイスメールのデータベースを変換して取り込んでいるため、キャリアでも格安SIMでも通話・通信ができます。テザリング制限や2Gを切れない設定といった利用者に不利な構成は取り除き、事業者独自アプリや端末管理(OMA DM)は含めません。
LTEのみモード
2G・3Gの古いコードと5Gの新しいコードをまとめて無効化し、通信部分の攻撃面を大きく削減できます。
ネットワーク位置情報(任意)
周辺のWi-Fiアクセスポイントから端末側で位置を推定する独自実装。屋内や高層ビル街でも測位が速く、取得したデータは最大15分キャッシュされるためオフラインでも機能します。サーバーへ送るのはネットワークの識別子のみで、位置の計算は端末側で行います。基地局は補助的に使用。
ネットワーク時刻の認証付き暗号化
独自サーバー経由で時刻更新を認証付きで暗号化し、時刻を書き換えて証明書の有効期限を迂回する攻撃を防ぎます。時刻更新自体を無効化することもできます。
より正確なシステム時計
時刻更新のしきい値を2000msから50msへ、ずれの警告を2000msから250msへ引き下げ。TOTPのような時刻に依存する仕組みで有利です。
不要な認証局の削除
一部の信頼できないルート認証局をシステムの信頼済みから削除しています。
標準アプリと構成
隔離実行のGoogle Play
Google Playの公式版を、特権をまったく持たない普通のアプリとしてサンドボックス内で動かす互換レイヤー。導入したプロファイル内でのみ使え、他のアプリのデータには触れません。アプリ内課金、Play Asset Delivery、ライセンス確認を含めほぼ完全に動作し、位置情報の要求は既定で独自実装に迂回されます。
Android Auto
公式版のAndroid Autoを、権限を絞った状態で使えるようにする選択肢を用意しています。
Vanadium(強化ブラウザ/WebView)
Chromiumを強化した標準ブラウザ兼WebView。厳格なサイト分離、既定オフのJavaScript JIT(サイト単位で許可)、メモリタグ付け、CFI、WebGPUの無効化、内蔵の高速コンテンツフィルタ、サードパーティCookieの既定拒否、状態の分離、ユーザーエージェントの情報量削減、電池状態の偽装、既定で外部サービスに接続しない構成、パスキー対応、耐量子計算機暗号の既定有効化など。
GrapheneOS Camera
プライバシーとセキュリティを重視した、使いやすいカメラアプリを標準搭載しています。
GrapheneOS PDF Viewer
サンドボックス化・強化されたPDFビューア。高精細表示、ピンチでの拡大、テキスト選択、暗号化PDFの閲覧に対応します。
独自のアプリ配布リポジトリ
最小限で安全性重視の自前アプリストアを同梱。自社製アプリと、隔離実行のGoogle Play用のミラーを配布しています。
セットアップウィザード
初期設定の段階でブートローダーの施錠状態を検出して警告し、タイマー付きで読み飛ばしを防ぎます。完了時にOEMロック解除を既定で無効化し、攻撃面を減らします。
暗号化バックアップ
ローカル保存でも、対応アプリのある任意のクラウドストレージでも、暗号化した状態でバックアップできます。
改変検知(Auditorアプリ)
ハードウェアの証明機能を使い、ファームウェアとOSの真正性と完全性を検証します。ペアリングごとに生成される鍵で端末そのものの同一性も確認できるため、端末が入れ替えられていないかの判定にも使えます。
ログ表示とクラッシュ報告
自動送信のクラッシュ報告は行わず、代わりにOS内でログを閲覧・絞り込み・保存できる機能を用意。何を誰に渡すかは利用者が決めます。メモリ破壊が検知された場合はその旨が示されます。
同梱アプリは最小限
必須のアプリだけをOSに組み込み、提携による抱き合わせは行いません。今日良いアプリが将来も良いとは限らないためです。
緊急速報の任意化
通常は必須の大統領警報を含め、緊急速報の種類ごとにオフにできます。
通話録音
標準の電話アプリで通話録音が可能(地域による制限や録音音の強制なし)。法令の遵守は利用者の責任です。
更新と運用
自動OS更新
バックグラウンドで完結し、作業を止める必要がありません。更新後の初回起動に失敗した場合は自動でロールバックします。
アプリの無効状態を維持
アプリを更新しても、無効にしていた状態が維持されます(標準Androidでは再度有効になります)。
強化されたビルドと署名の環境
ローカルでのビルドと署名の基盤自体も強化しています。
スクリーンショット音の制御
端末をマナーモードにする標準の方法に加え、操作音の設定からシャッター音を切れます。
サービス基盤
ログを残さない運用
不要なログを取らず、OSが使うネットワークサービスのログは4日、その他も10日で自動的に破棄されます。
自社サーバーのみで運用
CDNやSaaS、ミラーなど第三者を介さず、専用サーバーと仮想マシンだけでサービスを運用しています。特定の事業者に依存しない技術構成で、プロプライエタリなサービスは使いません。
通信の保護
すべてのサービスで認証付き暗号化を採用し、SSHやTLSは前方秘匿性のある最新の方式のみ。DNSSEC、CAA、DANE、SSHFPによる鍵の固定も全ドメインで実施しています。
ウェブサイトの方針
第三者のコンテンツを一切含めず、CSPで禁止。リファラを送らず、クロスオリジン分離を有効化し、他サイトへの埋め込みも禁止しています。ログインセッション以外の永続的なCookieはありません。
プロジェクトについて
オープンソースで検証できる
ソースコードは公開され、活発なコミュニティと貢献者によって開発されています。自分でビルドして変更を加えることもできるため、上流の判断に縛られません。
非営利での運営
営利活動と距離を置くことで利益相反を避けています。企業がプロジェクトを支援する形で、特定企業のためにプロジェクトが動くことはありません。
強いプライバシーポリシー
すべてのソフトウェアとサービスに一貫した方針を適用しています。
実績
プロジェクトの独立性を損なおうとする動きに対し、個人的な利益より独立性を優先してきた経緯があります。
これらの機能は、設定済みの状態でお届けします
機種によって世代と価格が異なります。用途に合わせてお選びください。