summaryrefslogtreecommitdiff
path: root/static/features.html
blob: 92c680580973329e99708e26aa4fc765fc97e5b0 (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
<!DOCTYPE html>
<html lang="en" prefix="og: https://ogp.me/ns#">
    <head>
        <meta charset="utf-8"/>
        <title>Features | GrapheneOS</title>
        <meta name="description" content="Overview of GrapheneOS features."/>
        <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 feature overview"/>
        <meta property="og:description" content="Overview of GrapheneOS features."/>
        <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/features"/>
        <meta property="og:site_name" content="GrapheneOS"/>
        <link rel="icon" sizes="16x16 24x24 32x32 48x48 64x64" type="image/vnd.microsoft.icon" href="/favicon.ico"/>
        <link rel="icon" sizes="any" type="image/svg+xml" href="/mask-icon.svg"/>
        <link rel="mask-icon" href="/mask-icon.svg" color="#1a1a1a"/>
        <link rel="stylesheet" href="/grapheneos.css?27"/>
        <link rel="manifest" href="/manifest.webmanifest"/>
        <link rel="canonical" href="https://grapheneos.org/features"/>
        <link rel="license" href="/LICENSE.txt"/>
    </head>
    <body>
        <header>
            <nav id="site-menu">
                <ul>
                    <li><a href="/">GrapheneOS</a></li>
                    <li aria-current="page"><a href="/features">Features</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="/articles/">Articles</a></li>
                    <li><a href="/donate">Donate</a></li>
                    <li><a href="/contact">Contact</a></li>
                </ul>
            </nav>
        </header>
        <main id="features">
            <h1><a href="#features">GrapheneOS feature overview</a></h1>

            <p>This is an overview of the current set of features differentiating GrapheneOS from
            the Android Open Source Project (AOSP). This page does not currently cover any of our
            historical features that are either not yet reimplemented or which became obsolete due
            to improvements in AOSP. Each major release of AOSP brings substantial privacy and
            security improvements, some of which have been based on our research and development
            work.</p>

            <p>GrapheneOS is based on the Android 11 release of the Android Open Source Project
            which provides a strong baseline for privacy and security. GrapheneOS takes great care
            to preserve the baseline privacy and security, including taking full advantage of all
            of the standard hardware features. The privacy and security features inherited from
            AOSP and the hardware are not covered here. Documentation on that will be gradually
            added elsewhere on our site.</p>

            <nav id="table-of-contents">
                <h2><a href="#table-of-contents">Table of contents</a></h2>

                <ul>
                    <li><a href="#grapheneos">GrapheneOS</a></li>
                    <li><a href="#services">Services</a></li>
                    <li><a href="#project">Project</a></li>
                </ul>
            </nav>

            <section id="grapheneos">
                <h2><a href="#grapheneos">GrapheneOS</a></h2>

                <p>Partial list of GrapheneOS features beyond what AOSP 11 provides:</p>

                <ul>
                    <li>Hardened app runtime</li>
                    <li>Stronger app sandbox</li>
                    <li>Hardened libc providing defenses against the most common classes of
                    vulnerabilities (memory corruption)</li>
                    <li>Our own <a href="https://github.com/GrapheneOS/hardened_malloc">hardened malloc (memory allocator)</a>
                    leveraging modern hardware capabilities to provide substantial defenses against
                    the most common classes of vulnerabilities (heap memory corruption) along with
                    reducing the lifetime of sensitive data in memory. The
                    <a href="https://github.com/GrapheneOS/hardened_malloc/blob/master/README.md">hardened_malloc
                    README</a> has extensive documentation on it. The hardened_malloc project is
                    portable to other Linux-based operating systems and is being adopted by other
                    security-focused operating systems like Whonix.  Our allocator 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.</li>
                    <li>Hardened compiler toolchain</li>
                    <li>Hardened kernel</li>
                    <li>Prevention of dynamic native code execution in-memory or via the filesystem
                    for the base OS without going via the package manager, etc.</li>
                    <li>Filesystem access hardening</li>
                    <li>Enhanced verified boot with better security properties and reduced attack surface</li>
                    <li>Enhanced hardware-based attestation with more precise version information</li>
                    <li>Eliminates remaining holes for apps to access hardware-based identifiers</li>
                    <li>Greatly reduced remote, local and proximity-based attack surface by
                    stripping out unnecessary code, making more features optional and disabling
                    optional features by default (NFC, Bluetooth, etc.) or when the screen is
                    locked (connecting new USB peripherals, camera access)</li>
                    <li>Low-level improvements to the filesystem-based full disk encryption used on
                    modern Android</li>
                    <li>Support for logging out of user profiles without needing a device manager:
                    makes them inactive so that they can't continue running code while using
                    another profile and purges the disk encryption keys (which are per-profile)
                    from memory and hardware registers</li>
                    <li>Support longer passwords by default without a device manager</li>
                    <li>Stricter implementation of the optional fingerprint unlock feature permitting
                    only 5 attempts rather than 20 before permanent lockout (our recommendation is
                    still keeping sensitive data in user profiles without fingerprint unlock)</li>
                    <li>PIN scrambling option</li>
                    <li><a href="/usage#lte-only-mode">LTE-only mode</a> to reduce cellular radio
                    attack surface by disabling enormous amounts of legacy code</li>
                    <li><a href="/usage#wifi-privacy-associated">Default enabled per-connection MAC randomization</a>
                    as an improvement over Android's default per-network MAC randomization reusing
                    the same MAC address until the DHCP lease with that network expires (can still
                    use the standard implementation or fully disable it)</li>
                    <li>Vanadium: hardened WebView and default browser - the WebView is what most
                    other apps use to handle web content, so you benefit from Vanadium in many apps
                    even if you choose another browser</li>
                    <li>Hardware-based security verification and monitoring: the
                    <a href="https://github.com/GrapheneOS/Auditor/releases">Auditor app</a> app and
                    <a href="https://attestation.app/">attestation service</a> 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>.</li>
                    <li><a href="https://github.com/GrapheneOS/PdfViewer">PDF Viewer</a>: sandboxed,
                    hardened PDF viewer using HiDPI rendering with pinch to zoom, text selection,
                    etc.</li>
                    <li>Encrypted backups via integration of the
                    <a href="https://github.com/seedvault-app/seedvault">Seedvault app</a> with
                    support for local backups and any cloud storage provider with a storage provider
                    app</li>
                    <li><a href="/usage#exec-spawning">Secure application spawning system</a> avoiding
                    sharing address space layout and other secrets across applications</li>
                    <li>Network permission toggle disallowing both direct and indirect network access,
                    superior to a purely firewall-based implementation only disallowing direct
                    access to the network without covering inter-process communication (enabled by
                    default for compatibility)</li>
                    <li>Sensors permission toggle: disallow access to all other sensors not covered by
                    existing Android permissions (enabled by default for compatibility)</li>
                    <li>Authenticated encryption for network time updates via a first party server to
                    prevent attackers from changing the time and enabling attacks based on bypassing
                    certificate / key expiry, etc.</li>
                    <li>Proper support for disabling network time updates rather than just not using
                    the results</li>
                    <li>Connectivity checks via a first party server with the option to revert to the
                    standard checks</li>
                    <li>Hardened local build / signing infrastructure</li>
                    <li><a href="/usage#updates">Seamless automatic OS update system</a> that just
                    works and stays out of the way in the background without disrupting device
                    usage, with full support for the standard automatic rollback if the first boot
                    of the updated OS fails</li> <li>Require unlocking to access sensitive function
                    via quick tiles</li>
                    <li>Minor changes to default settings to prefer privacy over small conveniences:
                    personalized keyboard suggestions based on gathering input history are disabled by
                    default, sensitive notifications are hidden on the lockscreen by default and
                    passwords are hidden during entry by default</li>
                </ul>
            </section>

            <section id="services">
                <h2><a href="#services">Services</a></h2>

                <p>Service infrastructure features:</p>

                <ul>
                    <li>Strict privacy and security practices for our infrastructure</li>
                    <li>Unnecessary logging is avoided and logs are automatically purged after 10 days</li>
                    <li>Services hosted on OVH without involving any additional parties for CDNs,
                    mirrors or other services - we don't outsource to others</li>
                    <li>Our services are built with open technology stacks to avoid being locked in to
                    any particular hosting provider or vendor</li>
                    <li>Open documentation on our infrastructure including listing out all of our
                    services, guides on making similar setups, published configurations for each
                    of our web services, etc.</li>
                    <li>No proprietary services</li>
                    <li>Authenticated encryption for all of our services</li>
                    <li>Strong cipher configurations for all of our services (SSH, TLS, etc.) with
                    only modern AEAD ciphers providing forward secrecy</li>
                    <li>Our web services use OCSP stapling with Must-Staple</li>
                    <li>DNSSEC implemented for all of our domains, which is particularly important
                    for securing email due to it relying on DNS records</li>
                    <li>DANE TLSA records for pinning keys for all our TLS services (mostly helps
                    to secure email due to lack of browser support)</li>
                    <li>SSHFP across all domains for pinning SSH keys</li>
                    <li>Static key pinning for our services in apps like Auditor</li>
                    <li>No cookies or similar client-side state for anything other than login sessions,
                    which are set up via SameSite=strict cookies and have server-side session tracking
                    with the ability to log out of other sessions</li>
                    <li>scrypt-based password hashing (likely Argon2 when the available implementations
                    are more mature)</li>
                </ul>
            </section>

            <section id="project">
                <h2><a href="#project">Project</a></h2>

                <p>Beyond the technical features of the OS:</p>

                <ul>
                    <li>Collaborative, open source project with a very active community and contributors</li>
                    <li>Can make your own builds and make desired changes, so you aren't stuck with
                    the decisions made by the upstream project</li>
                    <li>Non-profit project avoiding conflicts of interest by keeping commercialization
                    at a distance. Companies support the project
                    <a href="/faq#company">rather than the project serving the needs of any
                    particular company</a></li>
                    <li><a href="/faq#privacy-policy">Strong privacy policies</a></li>
                </ul>
            </section>
        </main>
        <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>