summaryrefslogtreecommitdiff
path: root/static/index.html
blob: 9ffbf247749031f59c9e78f8ef545c3ac9b8c9ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
<!DOCTYPE html>
<html lang="en" prefix="og: http://ogp.me/ns#">
    <head>
        <meta charset="utf-8"/>
        <title>GrapheneOS</title>
        <meta name="description" content="GrapheneOS is a security and privacy focused mobile OS with Android app compatibility."/>
        <meta name="theme-color" content="#212121"/>
        <meta name="msapplication-TileColor" content="#ffffff"/>
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <meta name="twitter:site" content="@GrapheneOS"/>
        <meta name="twitter:creator" content="@GrapheneOS"/>
        <meta property="og:title" content="GrapheneOS"/>
        <meta property="og:description" content="GrapheneOS is a security and privacy focused mobile OS with Android app compatibility."/>
        <meta property="og:type" content="website"/>
        <meta property="og:image" content="https://grapheneos.org/opengraph.png"/>
        <meta property="og:image:width" content="512"/>
        <meta property="og:image:height" content="512"/>
        <meta property="og:image:alt" content="GrapheneOS logo"/>
        <meta property="og:url" content="https://grapheneos.org/"/>
        <meta property="og:site_name" content="GrapheneOS"/>
        <link rel="icon" type="image/vnd.microsoft.icon" href="/favicon.ico"/>
        <link rel="mask-icon" href="/mask-icon.svg" color="#1a1a1a"/>
        <link rel="stylesheet" href="/grapheneos.css?18"/>
        <link rel="manifest" href="/manifest.webmanifest"/>
        <link rel="canonical" href="https://grapheneos.org/"/>
        <script type="module" src="/redirect.js?6"></script>
    </head>
    <body>
        <nav>
            <ul>
                <li class="active"><a href="/">GrapheneOS</a></li>
                <li><a href="/install">Install</a></li>
                <li><a href="/build">Build</a></li>
                <li><a href="/usage">Usage</a></li>
                <li><a href="/faq">FAQ</a></li>
                <li><a href="/releases">Releases</a></li>
                <li><a href="/source">Source</a></li>
                <li><a href="/donate">Donate</a></li>
                <li><a href="/contact">Contact</a></li>
            </ul>
        </nav>
        <div id="content">
            <h1 id="grapheneos">
                <a href="#grapheneos">GrapheneOS</a>
            </h1>

            <p>GrapheneOS is an <a href="/source">open source</a> privacy and security focused
            mobile OS with Android app compatibility. It's focused on the research and development
            of privacy and security technology including substantial improvements to sandboxing,
            exploit mitigations and the permission model. GrapheneOS also develops various apps
            and services with a focus on privacy and security. Vanadium is a hardened variant of
            the Chromium browser and WebView specifically built for GrapheneOS. We also have a
            minimal security-focused PDF Viewer, our hardware-based Auditor app / attestation
            service providing local and remote verification of devices and the externally
            developed Seedvault encrypted backup which was initially developed for inclusion in
            GrapheneOS is integrated.</p>

            <p>GrapheneOS is a collaborative open source project, not a company. It's used and
            supported by a variety of companies and other organizations. It won't be closely tied
            to any company in particular. There will eventually be a non-profit GrapheneOS
            foundation, but for now the developers represent the project.</p>

            <p>GrapheneOS improves the privacy and security of the OS from the bottom up. It
            has a hardened kernel, libc, malloc and compiler toolchain with many low-level
            improvements. These changes are designed to eliminate whole classes of serious
            vulnerabilities or provide meaningful barriers to exploitation. We avoid making
            changes without a clear rationale and we regularly work towards simplifying and
            replacing these low-level improvements. The malloc implementation is our own <a
            href="https://github.com/GrapheneOS/hardened_malloc/blob/master/README.md">hardened_malloc</a>
            providing cutting edge security for modern systems. The hardened_malloc project is
            portable to other Linux-based operating systems and is being adopted by other
            security-focused operating systems like Whonix. The <a
            href="https://github.com/GrapheneOS/hardened_malloc/blob/master/README.md">hardened_malloc
            README</a> has extensive documentation on it. Our work also heavily influenced the
            design of the <a href="https://www.openwall.com/lists/musl/2020/05/13/1">next-generation
            musl malloc implementation</a> which offers substantially better security than musl's
            previous malloc while still having minimal memory usage and code size.</p>

            <p>There are also many under-the-hood changes at a higher level, including major
            improvements to SELinux policies particularly for the app sandbox. GrapheneOS tries to
            avoid impacting the user experience with the privacy and security features. Ideally,
            the features can be designed so that they're always enabled with no impact on the user
            experience and no additional complexity like configuration options. It's not always
            feasible, and GrapheneOS does add various toggles for features like the Network
            permission, Sensors permission, restrictions when the device is locked (USB
            peripherals, camera, quick tiles), etc. along with more complex user-facing privacy
            and security features with their own UX.</p>

            <p>GrapheneOS has made substantial contributions to the privacy and security of the
            Android Open Source Project, along with contributions to the Linux kernel, LLVM,
            OpenBSD and other projects. Much of our past work is no longer part of the downstream
            GrapheneOS project because we've successfully landed many patches upstream. We've had
            even more success with making suggestions and participating in design discussions to
            steer things in the direction we want. Many upstream changes in AOSP such as removing
            app access to low-level process, network, timing and profiling information originated
            in the GrapheneOS project. The needs of the upstream projects are often different from
            ours, so they'll often reimplement the features in a more flexible way. We've almost
            always been able to move to using the upstream features and even when we still need
            our own implementation it helps to have the concepts/restrictions considered by the
            upstream project and apps needing to be compatible with it. Getting features upstream
            often leads to an improved user experience and app compatibility.</p>

            <p>Official releases are available on the <a href="/releases">releases page</a> and
            installation instructions are on the <a href="/install">install page</a>.</p>

            <p>The official GrapheneOS releases are supported by our
            <a href="https://github.com/GrapheneOS/Auditor/releases">Auditor app</a> and
            <a href="https://attestation.app/">attestation service</a>. The Auditor app and
            attestation service provide strong hardware-based verification of the authenticity and
            integrity of the firmware/software on the device. A strong pairing-based approach is
            used which also provides verification of the device's identity based on the hardware
            backed key generated for each pairing. Software-based checks are layered on top with
            trust securely chained from the hardware. For more details, see the <a
            href="https://attestation.app/about">about page</a> and <a
            href="https://attestation.app/tutorial">tutorial</a>. These also support other
            operating systems.</p>

            <h2 id="never-google-services">
                <a href="#never-google-services">No Google apps or services</a>
            </h2>

            <p>GrapheneOS will never include either Google Play Services or another implementation
            of Google services like microG. Those are not part of the Android Open Source Project
            and are not required for baseline Android compatibility. Apps designed to run on
            Android rather than only Android with bundled Google apps and services already work on
            GrapheneOS, so a huge number of both open and closed source apps are already available
            for it.</p>

            <p>Open APIs not tied to Google will continue to be implemented using open source
            providers like the Seedvault backup app. Text-to-speech, voice-to-text, non-GPS-based
            location services, geocoding, accessibility services, etc. are examples of other open
            Android APIs where we need to develop/bundle an implementation based on existing open
            source projects. Compatibility with apps depending on Google APIs / services will be
            improved by implementing them in a way that pretends Google has stopped existing and
            the servers are unavailable.</p>

            <h2 id="history">
                <a href="#history">History</a>
            </h2>

            <p>GrapheneOS was founded by Daniel Micay in late 2014. It started as a solo project
            incorporating his previous open source privacy/security work. The project initially
            created a port of OpenBSD malloc to Android's Bionic libc and a port of the PaX kernel
            patches to the kernels for the supported devices. It quickly expanded to having a
            large set of homegrown privacy and security improvements, particularly low-level
            hardening work on the compiler toolchain and Bionic. Work began on landing code
            upstream in AOSP and other upstream projects. A substantial portion of these early
            changes were either successfully landed upstream or heavily influenced the upstream
            changes which replaced them. The project was able to move very quickly in these days
            because there was so much low hanging fruit to address and it wasn't yet trying to
            produce a highly robust, production quality OS.</p>

            <p>In late 2015, a company was incorporated which became the primary sponsor of the
            project. GrapheneOS was previously known as CopperheadOS while it was sponsored by
            this company. The intention was to use the company to build a business around
            GrapheneOS selling support, contract work and customized proprietary variants of the
            OS. The company was supposed to serve the needs of the open source project, rather
            than vice versa. It was explicitly agreed that GrapheneOS would remain independently
            owned and controlled by Daniel Micay. This company failed to live up the promises and
            is no longer associated in any way with GrapheneOS. The fact that the company was
            accidentally founded as 'Coppperhead Limited' was just the beginning of a multi-year
            trainwreck holding back and poisoning a successful open source project it ended up
            leeching off rather than supporting.</p>

            <p>In 2018, the company was hijacked by the CEO who attempted to take over the project
            through coercion, but they were rebuked. They seized the infrastructure and stole the
            donations, but the project successfully moved on without them and has been fully
            revived. Since then, they've taken to fraudulently claiming ownership and authorship
            of our work, which has no basis in fact. They've tried to retroactively change the
            terms of their involvement and rewrite the history of the project. These claims are
            easily falsified through the public record and by people involved with the open source
            project and the former sponsor. This former sponsor has engaged in a campaign of
            misinformation and harassment of contributors to the project. Be aware that they are
            actively trying to sabotage GrapheneOS and are engaging in many forms of attacks
            against the project, the developers, contributors and supporters. Meanwhile, they
            continue profiting from our open source work which they falsely claim as their own
            creation.</p>

            <p>After splitting from the former sponsor, the project was rebranded to
            AndroidHardening and then to GrapheneOS and it has continued down the original path of
            being an independent open source project. It will never again be closely tied to any
            particular sponsor or company.</p>

            <h2 id="copyright-and-licensing">
                <a href="#copyright-and-licensing">Copyright and licensing</a>
            </h2>

            <p>The copyright for GrapheneOS code is entirely owned by the GrapheneOS developers
            and is made available under OSI-approved Open Source licenses. The upstream licensing
            is inherited for the modifications to those projects and MIT licensing is used for our
            own standalone projects. GrapheneOS has never had any copyright assignment and the
            developers have always owned their own contributions.</p>

            <p>The tiny portion of the code written by people under contract with the former
            sponsor has not been included in the project since it was ported from Android Oreo to
            Pie in 2018. This code became obsolete and was no longer useful. The vast majority of
            the code from the previous era was owned by Daniel Micay, with very few exceptions. It
            was never written under any contracts or employment agreements, was never assigned to
            any company or organization and was the continuation of the original independent open
            source project. The code was originally published under the same permissive open
            source licenses that are used by GrapheneOS today. Only a small portion of this
            historical code is actually still in use today. Most has become obsolete or has been
            replaced by rewrites taking better approaches than in the past.</p>

            <p>There was an era from September 2016 until the project split from the former
            sponsor in 2018 where non-commercial usage licensing was used for revisions to the
            existing permissively licensed code. This was an attempt to prop up the sponsor that
            was supposed to be supporting the open source project. This did not impact ownership
            of the code and Daniel Micay has relicensed the portions of the code that are used by
            GrapheneOS. GrapheneOS does not contain any code based on code under non-commercial
            usage licensing. Great care was taken to avoid pulling in anything that was not solely
            owned by Daniel Micay, which was the case for nearly everything in the project.</p>

            <h2 id="roadmap">
                <a href="#roadmap">Roadmap</a>
            </h2>

            <p>Details on the roadmap of the project will be posted on the site in the near
            future.</p>
            <p>To get an idea of the near term roadmap, check out the
            <a href="/contact#reporting-issues">issue trackers</a>. The vast majority of the
            issues filed in the trackers are planned enhancements, with care taken to make sure
            all of the issues open in the tracker are concrete and actionable.</p>
            <p>In the long term, GrapheneOS aims to move beyond a hardened fork of the Android
            Open Source Project. Achieving the goals requires moving away from relying the Linux
            kernel as the core of the OS and foundation of the security model. It needs to move
            towards a microkernel-based model with a Linux compatibility layer, with many stepping
            stones leading towards that goal including adopting virtualization-based
            isolation.</p>
            <p>The initial phase for the long-term roadmap of moving away from the current
            foundation will be to deploy and integrate a hypervisor like Xen to leverage it for
            reinforcing existing security boundaries. Linux would be running inside the virtual
            machines at this point, inside and outside of the sandboxes being reinforced. In the
            longer term, Linux inside the sandboxes can be replaced with a compatibility layer
            like gVisor, which would need to be ported to arm64 and given a new backend alongside
            the existing KVM backend. Over the longer term, i.e. many years from now, Linux can
            fade away completely and so can the usage of virtualization. The anticipation is that
            many other projects are going to be interested in this kind of migration, so it's not
            going to be solely a GrapheneOS project, as demonstrated by the current existence of
            the gVisor project and various other projects working on virtualization deployments
            for mobile. Having a hypervisor with verified boot still intact will also provide a
            way to achieve some of the goals based on extensions to Trusted Execution Environment
            (TEE) functionality even without having GrapheneOS hardware.</p>
            <p>Hardware and firmware security are core parts of the project, but it's currently
            limited to research and submitting suggestions and bug reports upstream. In the long
            term, the project will need to move into the hardware space.</p>

            <h2 id="device-support">
                <a href="/faq#device-support">Device support</a>
            </h2>

            <p>See <a href="/faq#device-support">the FAQ section on device support</a>.</p>
        </div>
        <footer>
            <a href="/"><img src="/logo.png" width="512" height="512" alt=""/>GrapheneOS</a>
            <ul id="social">
                <li><a href="https://twitter.com/GrapheneOS">Twitter</a></li>
                <li><a href="https://github.com/GrapheneOS">GitHub</a></li>
                <li><a href="https://reddit.com/r/GrapheneOS">Reddit</a></li>
            </ul>
        </footer>
    </body>
</html>