Quoi d'neuf chez GrapheneOS ? Android 12, nouvelle app Camera, Play Store, support du Pixel 6...
Revue des dernières nouveautés et améliorations apportées par GrapheneOS ces derniers mois : Android 12, nouvelle application Camera, Play Store fonctionnel, et support du Pixel 6.
Tout d'abord, je souhaite exprimer ma gratitude envers les nombreux retours sur mes précédents articles au sujet de GrapheneOS. Vous étiez plus nombreux que je ne le pensais à être intéressés par cette solution.
Certains commentaires m'ont notamment fait comprendre que pas tout le monde n'avait le temps de suivre autant le projet que je le fais ; c'est évidemment quelque chose que je vous conseille, mais j'ai compris l'importance d'être un intermédiaire francophone et accessible pour vous partager des informations au sujet du développement de cet OS. Comme vous pouvez le constater, j'ai moi-même manqué de temps et de motivation pour écrire ces derniers mois.
Je propose malgré tout que l'on se retrouve en cette fin d'année pour discuter des dernières évolutions de GrapheneOS à ce jour.
Android 12 : quoi d'neuf ?
La plus grosse évolution est sans doute ce qui se passe côté upstream : Google a enfin publié le code source d'Android 12 (AOSP 12) au moment de sa disponibilité générale en version stable, et s'en est suivi une course contre la montre pour l'équipe de développement de GrapheneOS pour repartir à 0 et porter toutes les améliorations et mesures de renforcement.
Un travail en amont est bien sûr préparé à chaque fois, mais tout ne peut être fait à l'avance non plus. Finalement, cela a pris moins de deux semaines pour qu'une version soit pleinement fonctionnelle et stable.
Qu'est-ce qu'apporte Android 12, finalement ? De nombreuses améliorations aux performances, à la sécurité ainsi qu'à la vie privée. Des améliorations (parfois discutables) de l'interface sont directement appréciables, qui a été revue pour être plus fluide et organique.
Le système de theming de Material You n'est pas encore open-source cependant. Ce sera probablement pour 2022 avec Android 12.1.
Il est cependant dommage de perdre au change comme le toggle "Wi-Fi" qui demande désormais plusieurs appuis en partant du toggle plus général "Internet".
Ce que vous aurez remarqué principalement est la nouvelle permission Nearby devices qui concerne l'accès à un sous-ensemble d'informations sensibles liées à la connectivité d'appareils Bluetooth. Ces informations sont susceptibles de permettre de déterminer votre localisation.
Cette permission visible concerne en réalité l'ajout de nouvelles permissions à plus bas niveau que l'application doit déclarer :
BLUETOOTH_ADVERTISE
: l'app a la permission de faire en sorte que l'appareil soit visible auprès d'autres appareils BluetoothBLUETOOTH_CONNECT
: l'app a la permission de communiquer directement avec des appareils déjà appareillésBLUETOOTH_SCAN
: l'app a la permission de chercher des appareils Bluetooth disponibles
Ces fonctionnalités étaient auparavant gouvernées par la permission Localisation (plus précisément ACCESS_LOCATION_FINE
). Ce n'était donc pas très clair pour l'utilisateur, en plus de manquer de granularité à l'utilisation et de donner des informations dont l'application n'a pas forcément besoin.
L'accès à au moins l'une de ces permissions ci-dessus est contrôlée par la permission de haut-niveau Nearby devices. Il est ainsi nécessaire pour des applications ciblant le niveau d'SDK 31 et ultérieur de l'expliciter. Les développeurs sont également poussés à expliciter le cas échéant le traitement ou non des informations permettant la localisation :
<manifest>
<!-- Include "neverForLocation" only if you can strongly assert that
your app never derives physical location from Bluetooth scan results. -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation" />
<!-- Not needed if you can strongly assert that your app never derives
physical location from Bluetooth scan results and doesn't need location
access for any other purpose. -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
...
</manifest>
Pour les applications ne ciblant pas encore ce niveau, révoquer cette permission (octroyée par défaut) peut ou non engendrer des problèmes.
Une nouvelle application Camera
Les applications fournies par défaut sur GrapheneOS sont majoritairement inchangées d'AOSP. Celles-ci manquent d'attention de la part de Google qui se concentre sur ses propres applications sous sa bannière, si bien que les applications AOSP deviennent des applications "vitrines" d'un autre temps pour certaines (je pense notamment à l'application calendrier d'AOSP).
GrapheneOS se lance donc dans un grand chantier visant à remplacer ces applications par de meilleures alternatives : modernes, simples, sûres. Il faut bien commencer quelque part, et pas n'importe quel endroit : l'appareil photo numérique.
L'application Camera d'AOSP était utilisable, mais c'est tout ce que l'on pouvait dire d'elle : qualité pas vraiment au rendez-vous, peu de fonctionnalités, vieillissante… elle ne pouvait même pas gérer les différents objectifs présents sur les modèles haut de gamme. En conséquence, de nombreux utilisateurs se tournaient vers Open Camera ou encore Google Camera, dont moi-même (car quand même, c'est un Google Pixel).
Désormais, il n'est plus nécessaire de choisir un compromis :
La nouvelle application Camera a été construite à l'initiative d'un membre de la communauté (MHShetty) grâce à la bibliothèque CameraX, qui propose une API incroyablement moderne et facile à utiliser pour créer des applications exploitant l'appareil photo du smartphone. En quelques lignes, vous implémentez un mode portrait, ou un mode HDR grâce aux extensions CameraX qui doivent être fournies par le constructeur.
Fort heureusement, puisqu'on travaille sur les Pixel qui doivent se montrer exemplaires, ces extensions permettent d'obtenir une application fournissant des résultats sensiblement similaires à ce que la référence Google Camera peut produire, du moins en pleine journée pour le moment. L'extension de nuit n'est pas encore présente, mais CameraX ainsi que ses extensions sont encore jeunes et en amélioration constante.
Tout comme Google Camera, cette application utilise par défaut l'auto-focus continu (CAF) ainsi que des contrôles tactiles intuitifs pour les autres modes de focus ainsi que le réglage de l'exposition souhaitée.
Vous remarquerez que cette application dispose également de la fonctionnalité de scan de QR code (et bien d'autres formats similaires). C'est une implémentation robuste portée depuis l'application Auditor, et qui est bien plus sûre que la pléthore d'applications qui utilisent la bibliothèque zxing qui est à peine maintenue à ce jour (en maintenance seulement).
En bref, c'est une très bonne nouvelle car cette application moderne et simple permet de très bons résultats directement sur GrapheneOS/AOSP. L'équipe de GrapheneOS communique d'ailleurs ses retours à l'équipe en charge de CameraX en vue que cette bibliothèque puisse s'améliorer davantage dans le cadre de cette utilisation.
Le Play Store est enfin utilisable
Comme je l'expliquais dans un précédent article, GrapheneOS permet l'installation des Play services en tant qu'application comme une autre. L'installation du Play Store était de toute façon nécessaire puisqu'elle fournit des composantes essentielles, cependant son usage n'était pas directement viable quant à l'installation et à la mise à jour d'applications.
Cela venait du fait que puisque les Play services n'étaient pas plus privilégiés qu'une autre application (contrairement aux distributions classiques d'Android), Play Store n'avait pas le privilège qu'il attendait pour pouvoir installer des applications "sans surveillance" (le prompt qui vous demande si vous voulez vraiment installer une application).
Depuis, c'est chose réglée puisque GrapheneOS a amélioré son système de compatibilité avec les Play services pour que celui-ci "route" les demandes privilégiées du Play Store vers des API standards du système. En d'autres termes, le Play Store est désormais pleinement fonctionnel. Mieux encore, l'API permettant de mettre à jour sans confirmer dans la boîte de dialogue (une nouveauté apportée par Android 12) est utilisée pour que les mises à jour soient bien moins pénibles.
Ce qu'il faut retenir :
- Si vous utilisez les Play services, utilisez simplement le Play Store.
- Sinon, utilisez Aurora Store.
Dans le premier cas de figure, Play Store apporte une plus-value à Aurora Store en matière de sécurité :
- En général, le moins de parties intermédiaires à qui faire confiance, mieux c'est. Aurora est une partie supplémentaire puisque ce client repose de toute façon sur les serveurs de Google.
- Play Store épingle les certificats des services Play, et emploie de bonnes pratiques contrairement à Aurora qui demande la permission d'accès "à tous les fichiers" sans raison valable.
- De plus, Aurora récupère parfois les mauvaises versions des applications que vous souhaitez. Même si vous utilisez Aurora, vous avez de toute façon recours à un compte Google, qu'il soit le vôtre ou "prêté". Il vaut mieux en faire un vous-même avec le minimum d'informations personnelles dans ce cas.
C'est une excellente nouvelle dans l'ensemble car GrapheneOS avec les Play services se rapproche d'une expérience d'Android classique pour n'importe quel utilisateur qui bénéficiera toujours des mesures de renforcement apportées par l'OS. Bien sûr, vous êtes en droit de ne pas vouloir cette expérience ou de la limiter à un seul profil secondaire : l'intérêt réside dans le choix avec le moins de compromission possible.
Pixel 6 : un nouveau standard de la sécurité mobile
Les derniers smartphones de Google sont en voie d'être pleinement supportés par GrapheneOS : c'est déjà le cas (à titre expérimental pour le moment) et il ne manque à ce jour que les mesures de renforcement apportées au kernel. Quant aux smartphones eux-mêmes, ils deviendront de fait la principale recommandation du projet en matière de sécurité en raison de :
- Son support firmware garanti pour 5 ans par Google. Notamment grâce au fait que ce dernier devient son propre fournisseur de SoC Google Tensor, alors qu'il dépendait auparavant de Qualcomm qui limitait à 3 ans (éventuellement 4 ans pour les derniers SoC).
- L'évolution de son élément sécurisé (HSM) : Titan M2, la seconde itération de Titan M qui équipait les Pixel du 3 jusqu'au 5a. Titan M2 est une toute nouvelle puce conçue dans l'architecture RISC-V au lieu d'ARM, promettant un degré supérieur de transparence. Google promet également que Titan M2 est encore plus résistant aux attaques.
- Le processeur de sécurité du SoC (TEE), toujours utilisé pour diverses opérations, bénéficie du nouveau système d'exploitation Trusty.
Pour l'instant Google n'a pas encore partagé beaucoup à ces sujets si ce n'est un petit billet qui annonce la couleur, mais il s'agit clairement d'une amélioration. Je reste toutefois un peu déçu de l'absence des extensions de memory tagging qui devraient faire leur apparition l'année prochaine avec les premiers smartphones équipés de SoC ARMv9.
Je trouve tout de même que ce sont d'excellents smartphones et ce sont clairement mes recommandations à l'heure actuelle. Je me tâte à en prendre un pour remplacer mon Pixel 3a qui vit ses derniers mois de support, ou bien attendre un potentiel 6a moins onéreux. Mais le Pixel 6 a déjà un très bon hardware pour un prix compétitif, de plus, il faut voir les 5 ans de mises à jour comme un investissement d'autant plus rentable !
Pixel 2 obsolète, Pixel 3 legacy
Le Pixel 2 ne dispose plus de mises à jour firmware depuis Décembre 2020. GrapheneOS continuait à fournir des mises à jour strictement de l'OS puisqu'aucune mise à jour firmware n'est fournie par le constructeur. Un appareil ne recevant plus de mises à jour firmware doit être changé au plus vite, et GrapheneOS ne fournit que davantage de mises à jour seulement pour soulager la transition. Le Pixel 2 a été totalement abandonné lors du passage à Android 12 car il ne faisait plus sens de maintenir cet appareil qui ne rentrait plus dans les critères de sécurité du projet.
Le "firmware" est un terme plutôt générique pour désigner ce qui n'est ni OS ni hardware, mais "entre les deux". C'est souvent une façon de désigner le code de bas-niveau qui permet d'exploiter le hardware, et dont des mises à jour peuvent être distribuées aux côtés de l 'OS.
Le support du Pixel 3 touche également à sa fin, mais il a néanmoins bénéficié d'Android 12 donc du passage à GrapheneOS 12 également. Les utilisateurs du Pixel 3 recevront des mises à jour de l'OS pendant quelques mois (et éventuellement une mise à jour finale du firmware par Google), et sont encouragés à envisager l'achat d'un Pixel 6.
Plus le temps passe, plus la probabilité d'être exposé à des vulnérabilités non-corrigées du firmware augmente. C'est la raison pour laquelle il est important d'avoir des mises à jour régulières et rapides, car les vulnérabilités connues et documentées (n-days) sont d'autant plus facilement exploitables pour davantage de cibles.
C'est tout, pour le moment !
Je pense que nous avons effleuré suffisamment de nouvelles concernant GrapheneOS et Android en général ! Mes précédents articles à ce sujet sont toujours valides même si certaines informations deviendront fatalement obsolètes au fil du temps. Il convient donc de garder cela à l'esprit compte tenu du format de ce blog.
Encore une fois, n'hésitez pas à me poser des questions dans les commentaires si je n'y ai pas déjà répondu.