Title: Introduction to GrapheneOS | |
Author: Solène | |
Date: 12 January 2025 | |
Tags: android security privacy | |
Description: In this blog post, you will learn about the security | |
oriented smartphone operating system GrapheneOS | |
# Introduction | |
This blog post is an introduction to the smartphone and security | |
oriented operating system GrapheneOS. | |
GrapheneOS official project web page | |
Thanks to my patrons support, last week I have been able to replace my | |
6.5 years old BQ Aquaris X which has been successfully running Lineage | |
OS all that time, by a Google Pixel 8a now running GrapheneOS. | |
Introducing GrapheneOS is a daunting task, I will do my best to present | |
you the basics information you need to understand if it might be useful | |
for you, and let a link to the project FAQ which contains a lot of | |
valuable technical explanations I do not want to repeat here. | |
GrapheneOS FAQ | |
# What is GrapheneOS? | |
GrapheneOS (written GOS from now on) is an Android based operating | |
system that focuses security. It is only compatible with Google Pixel | |
devices for multiple reasons: availability of hardware security | |
components, long term support (series 8 and 9 are supported at least 7 | |
years after release) and the hardware has a good quality / price ratio. | |
The goal of GOS is to provide users a lot more control about what their | |
smartphone is doing. A main profile is used by default (the owner | |
profile), but users are encouraged to do all their activities in a | |
separate profile (or multiples profiles). This may remind you about | |
Qubes OS workflow, although it does not translate entirely here. | |
Profiles can not communicate between each others, encryption is done | |
per profile, and some permissions can be assigned per profile | |
(installing apps, running applications in background when a profile is | |
not used, using the SIM...). This is really effective for privacy or | |
security reasons (or both), you can have a different VPN per profile if | |
you want, or use a different Google Play login, different applications | |
sets, whatever! The best feature here in my opinion is the ability to | |
completely stop a profile so you are sure it does not run anything in | |
the background once you exit it. | |
When you make a new profile, it is important to understand it is like | |
booting your phone again, the first log-in with the profile you will be | |
asked questions like if you started the system for the first time. All | |
settings have the defaults values, and any change is limited to the | |
profile only, this includes ringtones, sound, default apps, themes… | |
Switching between profile is a bit painful, you need to get the top to | |
bottom dropdown menu at full size, then tap the bottom right corner | |
icon and choose the profile you want to switch to, and tap the PIN of | |
that profile. Only the owner profile can toggle important settings | |
like 4G/5G network, or do SIM operations and other "lower level" | |
settings. | |
GOS has a focus on privacy, but let the user in charge. Google Play | |
and Google Play Services can be installed in one click from a dedicated | |
GOS app store which is limited to GOS apps only, as you are supposed to | |
install apps from Google Play, F-droid or Accrescent. Applications can | |
be installed in a single profile, but can also be installed in the | |
owner profile which lets you copy it to other profiles. This is | |
actually how I do, I install all apps in the user profile, I always | |
uncheck the "network permission" so they just can't do anything, and | |
then I copy them to profiles where I will use it for real. There is no | |
good or bad approach, this fits your need in terms of usability, | |
privacy and security. | |
Just to make sure it is clear, it is possible to use GOS totally Google | |
free, but if you want to use Google services, it is made super easy to | |
do so. Google Play could be used in a dedicated profile if you ever | |
need it once. | |
# Installation and updates | |
The installation was really simple as it can be done from the web page | |
(from a Linux, Windows or macOS system), by just clicking buttons in | |
the correct order from the installation page. The image integrity | |
check can be done AFTER installation, thanks to the TPM features in the | |
phone which guarantees the boot of valid software only, which will | |
allow you to generate a proof of boot that is basically a post-install | |
checksum. (More explanations in GOS website). The whole process took | |
approximately 15 minutes between plugging the phone to my computer and | |
using the phone. | |
It is possible to install from the command line, I did not test it. | |
Updates are 100% over-the-air (OTA), which mean the system is able to | |
download updates over network. This is rather practical as you never | |
need to do any adb command to push a new image, which have always been | |
a stressful experience for me when using smartphones. GOS | |
automatically download base system updates and offer you to reboot to | |
install it, while GOS apps will just be downloaded and update in place. | |
This is a huge difference from LineageOS which always required to | |
manually download new builds, and applications updates were parts of | |
the big image update. | |
# Permission management | |
A cool thing with GOS is the tight controls offered over applications. | |
First, this is done by profile, so if you use the same app in two | |
profiles, you can give different permissions, and secondly, GOS allows | |
you to define a scope to some permissions. For example, if an | |
application requires storage permission, you can list which paths are | |
allowed, if it requires contacts access, you can give a list of | |
contacts entries (or empty). | |
GOS Google Play installation (which is not installed by default) is | |
sand-boxed to restrict what it can do, they also succeeded at | |
sand-boxing Android Auto. (More details in the FAQ). I have a | |
dedicated Android Auto profile, the setup was easy thanks to the FAQ | |
has a lot of permissions must be manually given for it to work. | |
GOS does not allow you to become root on your phone though, it just | |
gives you more control through permissions and profiles. | |
# Performance | |
I did not try CPU/GPU intensive tasks for now, but there should be | |
almost no visible performance penalty when using GOS. There are many | |
extra security features enabled which may lead to a few percent of | |
extra CPU usage, but there are no benchmark and the few reviews of | |
people who played high demanding video games on their phone did not | |
notice any performance change. | |
# Security | |
GOS website has a long and well detailed list of hardening done over | |
the stock Android code, you can read about them on the following link. | |
GrapheneOS website: Exploitation Protection | |
# My workflow | |
As an example, here is how I configured my device, this is not the only | |
way to proceed, so I just share it to give the readers an idea of what | |
it looks like for me: | |
* my owner profile has Google Play installed used to install most apps. | |
All apps are installed there with no network permission, then I copy | |
them to the profile that will use the applications. | |
* a profile that looks like what I was doing in my previous phone: | |
allowed to phone/SMS, web browser, IM apps, TOTP app. | |
* a profile for multimedia where I store music files, run audio players | |
and use Android Auto. Profile is not allowed to run in background. | |
* a profile for games (local and cloud). Profile is not allowed to run | |
in background. | |
* a "other" profile used to run crappy apps. Profile is not allowed to | |
run in background. | |
* a profile for each of my clients, so I can store any authentication | |
app (TOTP, Microsoft authenticator, whatever), use any app required. | |
Profile is not allowed to run in background. | |
* a guest profile that can be used if I need to lend my phone to | |
someone if they want to do something like look up something on the | |
Internet. This profile always starts freshly reset. | |
After a long week of use, I came up with this. At first, I had a | |
separate profile for TOTP, but having to switch back and forth to it a | |
dozen time a day was creating too much friction. | |
# The device itself | |
I chose to buy a Google Pixel 8a 128 GB as it was the cheapest of the 8 | |
and 9 series which have a 7 years support, but also got a huge CPU | |
upgrade compared to the 7 series. The device could be bought at 300€ | |
on second hand market and 400€ brand new. | |
The 120 Hz OLED screen is a blast! Colors are good, black is truly | |
black (hence dark themes for OLED reduce battery usage and looks really | |
great) and it is super smooth. | |
There is no SD card support, which is pretty sad especially since | |
almost every Android smartphone support this, I guess they just want | |
you to pay more for storage. I am fine with 128 GB though, I do not | |
store much data on my smartphone, but being able to extend it would | |
have been nice. | |
The camera is OK, I am not using it a lot and I have no comparison, | |
from reviews I have read they were saying it is just average. | |
Wi-Fi 6 works really fine (latency, packet loss, range and bandwidth) | |
although I have no way to verify its maximum bandwidth because it is | |
faster than my gigabit wired network. | |
The battery lasts long, I use my smartphone a bit more now, the battery | |
approximately drops by 20% for a day of usage. I did not test charge | |
speed. | |
# Conclusion | |
I am really happy with GrapheneOS, I finally feel in control of my | |
smartphone and I never considered it a safe device before. I never | |
really used an Android ROM from a manufacturer or iOS, I bet they can | |
provide a better user experience, but they can not provide anything | |
like GrapheneOS. | |
LineageOS was actually ok on my former BQ Aquaris X, but there were | |
often regressions, and it did not provide anything special in terms of | |
features, except it was still having updates for my old phone. | |
GrapheneOS on the other hand provides a whole new experience, that may | |
be what you are looking for. | |
This system is not for everyone! If you are happy with your current | |
Android, do not bother buying a Google Pixel to try GOS. | |
# Going further | |
The stock Android version supports profiles (this can be enabled in | |
system -> users -> allow multiple users), but there is no way to | |
restrict what profiles can do, it seems they are all administrators. I | |
have been using this on our Android tablet at home, it is available on | |
every Android phone as well. I am not sure if it can be used as a | |
security feature as this. |