GrapheneOSは、Androidアプリに対応したオープンソースのプライバシーとセキュリティに特化したモバイルOS。サンドボックス化やエクスプロイト緩和、パーミッションモデルの大幅な改善など、プライバシーとセキュリティ技術の研究開発に力を入れている。また、GrapheneOSは、プライバシーとセキュリティに焦点を当てた様々なアプリやサービスを開発している。Vanadiumは、GrapheneOSのために特別に構築されたChromiumブラウザとWebViewの強化版。GrapheneOSには、最小限のセキュリティに焦点を当てたPDFビューア、デバイスのローカルおよびリモート検証を提供するハードウェアベースのAuditorアプリ/認証サービス、外部開発の暗号化バックアップSeedvaultも含まれており、当初はGrapheneOSに組み込むために開発された。

GrapheneOSは企業ではなく、共同で開発したオープンソースプロジェクト。様々な企業や他の組織によって利用され、サポートされている。特定の企業と密接に結びついているわけではない。将来的には非営利のGrapheneOS財団が設立される予定だが、今のところは開発者がプロジェクトを代表している。

GrapheneOSは、OSのプライバシーとセキュリティをボトムアップから改善する。カーネル、libc、malloc、コンパイラツールチェーンを強化し、多くの低レベルの改良を加えている。これらの変更は、深刻な脆弱性のクラス全体を排除したり、悪用に対する意味のある障壁を提供したりするように設計されている。私たちは、明確な理由のない変更を行うことは避け、定期的にこれらの低レベルの改善を単純化して置き換えるように努めている。malloc の実装は、最新のシステムに最先端のセキュリティを提供する私たち独自の hardened_malloc だ。hardened_malloc プロジェクトは他の Linux ベースのオペレーティングシステムに移植可能であり、Whonix のようなセキュリティに重点を置いた他のオペレーティングシステムでも採用されている。hardened_malloc の README には、広範囲にわたるドキュメントがある。私たちの作業は、次世代の musl malloc 実装の設計にも大きな影響を与えた。

また、特にアプリのサンドボックスのための SELinux ポリシーの大幅な改善を含む、より高いレベルでの多くのアンダーザフッドの変更がある。GrapheneOSは、プライバシーとセキュリティ機能でユーザーエクスペリエンスに影響を与えないようにしようとしている。理想的には、ユーザーエクスペリエンスに影響を与えず、設定オプションのような追加の複雑さもなく、常に機能が有効になるように設計することができる。しかし、必ずしも実現可能とは限らず、GrapheneOSは、ネットワークの許可、センサーの許可、デバイスがロックされているときの制限(USBペリフェラル、カメラ、クイックタイル)などのような機能のための様々なトグルを追加している。

GrapheneOSは、Linux カーネル、LLVM、OpenBSD および他のプロジェクトへの貢献とともに、 Android オープンソースプロジェクトのプライバシーとセキュリティに多大な貢献をしてきた。私たちの過去の仕事の多くは、もはや下流の GrapheneOS プロジェクトの一部ではない。私たちは、私たちが望む方向に物事を導くために、 提案をしたり、設計の議論に参加したりすることで、さらに多くの成功を収めてきた。低レベルのプロセス、ネットワーク、タイミング、プロファイリング情報へのアプリからのアクセスを削除するなど、AOSPの上流工程での変更の多くは、GrapheneOSプロジェクトに由来している。上流のプロジェクトのニーズは我々とは異なることが多いので、彼らはより柔軟な方法で機能を再実装することが多い。私たちはほとんどの場合、上流プロジェクトの機能を利用することができるが、それでも独自の実装が必要な場合でも、上流プロジェクトのコンセプトや制限事項を考慮してもらい、それと互換性のあるアプリを提供してもらうことができる。上流の機能を利用することで、ユーザーエクスペリエンスやアプリの互換性が向上することがよくある。

公式リリースはリリースページに、インストール方法はインストールページにある。

GrapheneOSの公式リリースは、Auditorアプリ認証サービスによってサポートされています。Auditorアプリと認証サービスは、デバイス上のファームウェア/ソフトウェアの真正性と完全性をハードウェアベースで強力に検証する。強力なペアリングベースのアプローチが使用され、各ペアリングのために生成されたハードウェア裏付けされたキーに基づいてデバイスのアイデンティティの検証も提供する。ソフトウェアベースのチェックは、ハードウェアからの信頼を安全に連鎖させた上に重ねられています。詳細については、Aboutページチュートリアルを参照してください。これらは他のOSにも対応している。

Googleのアプリやサービスなし

GrapheneOSには、Google Playサービスや、microGのようなGoogleサービスの別の実装が含まれることはない。これらはAndroidオープンソースプロジェクトの一部ではなく、基本的にAndroidとの互換性を保つために必要なものではない。GoogleのアプリやサービスがバンドルされているAndroidだけではなく、Android上で動作するように設計されたアプリは、すでにGrapheneOS上で動作しているので、膨大な数のオープンソースとクローズドソースのアプリがすでに利用可能だ。

Googleに縛られないオープンAPIは、バックアップアプリのSeedvaultのようなオープンソースプロバイダを使って今後も実装されていく。音声合成、音声合成、非GPSベースの位置情報サービス、ジオコーディング、アクセシビリティサービスなどは、既存のオープンソースプロジェクトをベースにした実装を開発/バンドルする必要がある他のオープンなAndroid APIの例だ。GoogleのAPI/サービスに依存したアプリとの互換性は、Googleが既存を停止してサーバーが利用できないことを装って実装することで改善される。

沿革

GrapheneOSは、2014年後半にセキュリティリサーチャーのダニエル・ミケイ(Daniel Micay)によって設立された。それは、彼の以前のオープンソースのプライバシー/セキュリティの仕事を組み込んだソロプロジェクトとして始まった。このプロジェクトは当初、Android の Bionic libc への OpenBSD の malloc の移植と、サポートされているデバイス用のカーネルへの PaX カーネルパッチの移植を作成した。それはすぐに、プライバシーやセキュリティの改善、特にコンパイラツールチェインや Bionic の低レベルのハード化作業など、 自家製の大規模なセットを持つまでに拡大した。AOSP や他のアップストリームプロジェクトでのコードのアップストリームへの移植作業が始まった。これらの初期の変更のかなりの部分は、上流へのランディングに成功したか、それを置き換える上流の変更に大きな影響を与えた。この頃のプロジェクトは、対応すべき多くの低い垂れ下がりがあったため、非常に迅速に動くことができたが、まだ堅牢で生産品質の高いOSを作ろうとはしていなかった。

2015年後半には、プロジェクトの主要スポンサーとなった会社が法人化された。GrapheneOSは、この会社がスポンサーとなっている間、「CopperheadOS」という別の名称として知られていた。この会社を利用して、GrapheneOSを中心としたビジネスを構築し、サポート、契約作業、およびOSのカスタマイズされたプロプライエタリな亜種を販売することが意図されていた。GrapheneOSは、ダニエル・ミケイが独立して所有し、管理することが明確に合意されていた。

しかし、2018年、スポンサー会社はCEOに乗っ取られ、CEOたちは強制的にプロジェクトを乗っ取ろうとした。彼らはインフラを押収して寄付金を徴収したが、彼らがいなくてもプロジェクトは無事に進み、GrapheneOSは独立したオープンソースソフトウェアとして完全復活を果たした。それ以来、そのCEOらはオープンソースもコントリビューターによる作品の所有権と著作権を主張した。彼らは自分たちの関与の条件を遡って変更し、プロジェクトの歴史を書き換えようとしている、と現GrapheneOS側は主張している。

以前のスポンサーと別れた後、プロジェクトはAndroidHardening、そしてGrapheneOSと名称を変え、独立したオープンソースプロジェクトとしての本来の道を歩み続けてきた。もう二度と特定のスポンサーや企業と密接に結びつくことはない、という。

ロードマップ

長期的には、GrapheneOSはAndroidオープンソースプロジェクトの硬直したフォークを超えることを目指している。目標を達成するためには、OSのコアであり、セキュリティモデルの基盤であるLinuxカーネルに依存していたものから脱却する必要がある、とコミュニティは考えている。そのためには、Linux互換層を持つマイクロカーネルベースのモデルに移行する必要があり、仮想化ベースの分離を採用するなど、その目標に向けた多くの足がかりが必要となる。

現在の基盤からの脱却という長期的なロードマップの最初の段階では、Xenのようなハイパーバイザーを導入して統合し、既存のセキュリティ境界を強化するために活用することになる。この時点では、強化されたサンドボックスの内側と外側で、Linuxは仮想マシンの中で動作していることになる。長期的には、サンドボックス内のLinuxは、gVisorのような互換性のあるレイヤーに置き換えることができるが、これはarm64に移植して、既存のKVMバックエンドと一緒に新しいバックエンドを与える必要がある。

長期的には、つまり今から何年も先の話だが、Linuxは完全にフェードアウトしてしまう可能性があり、仮想化の使用も可能になる。他の多くのプロジェクトがこの種の移行に興味を持っていることが予想され、現在の gVisor プロジェクトやモバイル向けの仮想化デプロイメントに取り組んでいる他の様々なプロジェクトの存在が示すように、 GrapheneOSプロジェクトだけではなくなる。起動検証済みのハイパーバイザーをそのまま使用することで、GrapheneOS ハードウェアがなくても、TEE(Trusted Execution Environment:信頼された実行環境)機能の拡張に基づく目標のいくつかを達成することができる。

ハードウェアとファームウェアのセキュリティはプロジェクトの中心的な部分であるが、現在は研究を行い、提案やバグレポートを上流に提出することに限定されている。長期的には、このプロジェクトはハードウェアの領域に移行する必要があるだろう。

Photo by First GrapheneOS Review / GrapheneOS Reviews

参考文献