Via un communiqué de presse, le constructeur de smartphones allemand Volla a annoncé une nouvelle API de vérification d’intégrité pour Android, en collaboration avec un consortium plus large. L’idée est de proposer une alternative à l’API Play Integrity de Google.
Largement saluée sur la scène tech européenne, le projet a pourtant des zones d’ombres, levées entre autres par GrapheneOS, qu’il serait intéressant d’identifier.
La vérification d’intégrité sert à apporter une preuve technique que le code exécuté par un smartphone (système d’exploitation (OS), firmware…) n’a pas été modifié par un attaquant ou par l’utilisateur.
Cette vérification est nécessaire entre autres pour les applications bancaires ou les portefeuilles d’identité numériques, qui doivent pouvoir accorder un certain niveau de confiance à l’appareil de l’utilisateur.
Il y a actuellement 3 API à connaître pour la vérification d’intégrité.
L’API native Android Hardware Attestation s’exécute entièrement sur le smartphone. Elle génère une chaîne de certificats, incluant la clé qui a signé l’OS qui tourne effectivement sur l’appareil.
Pour vérifier l’intégrité, une application doit manuellement comparer :
Exemple : l’application bancaire Yuh vérifie l’intégrité des smartphones sous GrapheneOS en comparant la clé retournée par cette API avec les clés publiées par GrapheneOS. Si elles sont identiques, c’est que l’OS n’a pas été modifié par l’utilisateur ou par un attaquant.
Le problème, c’est que toutes les applications doivent manuellement implémenter la vérification avec tous les constructeurs. C’est complexe et coûteux.
Dans la version Stock Android de Google, il existe une deuxième API plus haut niveau, intégrée aux Google Play Services. C’est l’API Play Integrity, qui utilise l’API Android Hardware Attestation, mais fait aussi appel automatiquement aux services de Google pour vérifier les clés (entre autres choses).
Elle rend la vérification beaucoup plus simple pour les applications : un seul appel à Play Integrity permet de vérifier l’appareil. Mais cette API mélange un grand nombre de fonctions différentes :
appIntegrity)Au niveau de la certification de l’appareil, Play Integrity vérifie surtout que l’appareil tourne sous une version Android validée par Google.
On voit donc les limitations : un téléphone sous GrapheneOS, extrêmement sécurisé, à jour, avec un code intègre, ne passera pas la vérification de Google car ce n’est pas l’Android de Google qui est installé sur l’appareil. Cependant, un appareil qui n’a pas été mis à jour depuis plusieurs années peut passer la certification, pour autant qu’il ait été certifié par Google.
Pourtant, c’est l’API utilisée par la majorité des applications bancaires. C’est ce que Volla appelle le « paradoxe de sécurité » : on développe des OS dégooglisés pour réduire la dépendance américaine, mais la quasi-totalité des applications bancaires utilisent une API de vérification d’intégrité qui exige une validation explicite de Google.
C’est la raison pour laquelle Volla et d’autres entreprises de ce milieu (Murena, Iodé, Apostrophy…) se sont regroupés dans un consortium afin de proposer une nouvelle API haut niveau, appelée UnifiedAttestation.
Il s’agit d’une architecture ouverte, en trois composants :
On voit qu’il y a en réalité deux fonctions distinctes :
Pour la certification des appareils, on parle de certifier un couple appareil + OS. L’idée est que les différentes entreprises membres du consortium, concurrentes, vérifient mutuellement leurs appareils sur différentes ROM, afin de « créer de la transparence » et de « remplacer la confiance par de la traçabilité » (Volla). L’objectif de la certification est de témoigner de la qualité et la sécurité d’un couple appareil / OS.
Le projet GrapheneOS développe une version d’Android extrêmement sécurisée. Les exigences matérielles sont très élevées (seuls les derniers smartphones de Google les passent). Cette ROM est reconnue comme étant la version d’Android la plus sécurisée. Elle met notamment en échec les outils de déchiffrement gouvernementaux (et c’est la seule à le faire).
GrapheneOS a réagi plutôt farouchement sur Mastodon, menaçant de poursuivre le consortium en justice. Leur principal grief : le mélange de la certification des appareils avec la verification d’intégrité est extrêmement dangereux. Le consortium, qu’il appelle « cartel », pourrait être en capacité de ne valider que ses propres appareils. On ne ferait donc que remplacer un monopole par un autre.
Certaines questions n’ont en effet pas de réponse. Typiquement, sera-t-il possible de certifier un appareil si son constructeur ne fait pas partie du consortium ? Qui pourra rejoindre le consortium ? Que signifie « infrastructure décentralisée » ? Quelles seront les exigences de sécurité ?
GrapheneOS considère que l’API Hardware Attestation est suffisante, et que l’établissement d’une API concurrente à Play Integrity n’est pas nécessaire. Par ailleurs, le projet estime que tous ces constructeurs ont des exigences de sécurité beaucoup trop basses.
Volla, Murena et iodé sont toutes des sociétés à but lucratif qui commercialisent des appareils. Aucune d’entre elles n’a appliqué les correctifs de sécurité et les mesures de protection indispensables. Chacune a présenté ses produits comme offrant un niveau de sécurité qu’ils ne fournissent pas. GrapheneOS
Contrairement à GrapheneOS, nous estimons que l’utilisation seule de l’API native Hardware Attestation est trop complexe à implémenter par les applications, surtout dans le marché (théorique) de forte concurrence sur les appareils mobiles et les ROM que nous aimerions voir en Europe.
Nous saluons donc l’initiative de Volla, qui permettrait de proposer une alternative clé en main pour les applications.
Par ailleurs, il est à noter qu’une telle initiative est plus simple à pousser sur la scène politique européenne, notamment via le DMA, que l’API native.
Nous estimons cependant que les deux fonctions (vérification d’intégrité et certification) doivent être strictement séparées dans l’API. La fonction de vérification d’intégrité doit impérativement pouvoir être proposée par les concepteurs de ROM alternatives, sans obligation de faire certifier les couples appareil + OS.
Concrètement, au lieu d’une échelle de validation comme peut le proposer Play Integrity, nous pensons préférable d’afficher deux catégories distinctes pouvant avoir chacune leur propre échelle : intégrité, certification.
Ce consortium pose aussi des questions de gouvernance. Volla a annoncé vouloir « faire de cette initiative sectorielle un format de coopération ouvert, sous l’égide de la Fondation Eclipse ». Reste à voir ce que cela signifie précisément, sachant que le marché est composé à la fois d’industriels, de fondations à but non lucratives, ou de groupes de développeurs indépendants.