APK Signature Scheme v3 a été repéré dans le projet Android Open Source et il semble prendre en charge la rotation des clés.
Si vous êtes un développeur ou si vous êtes familier avec la décompilation, la modification et/ou l'installation de fichiers APK modifiés, vous connaissez probablement les signatures d'applications. Pour faire simple, Android exige qu'une application doit être signé avec la même clé pour que le système permette la mise à jour de l'application en question. Android le vérifie en vérifiant la signature APK.
Signature APK sont une mesure de sécurité très basique sur Android, dont nous avons parlé précédemment. Fondamentalement, toutes les signatures sont uniques à un certain développeur ou groupe de développeurs, donc si la signature/certificat dans un APK n'est pas valide ou ne correspond pas à celui de l'application originale, l'installation échouera, empêchant ainsi l'installation de fichiers APK falsifiés ou faux sur votre Android appareil. Les clés de signature doivent également être conservées en toute sécurité par le développeur, car elles sont essentielles à la vérification et, éventuellement, à la diffusion d'une mise à jour de l'application. Heureusement, le système de signature pour signer les APK fait l'objet d'une autre révision, la v3, qui semble ajouter une fonctionnalité pratique tout en maintenant des normes de sécurité élevées.
Schéma de signature APK v1 et v2
Il n'y a pas si longtemps que la version actuelle du schéma de signature APK, v2, a été publié pour les développeurs. Après tout, il nous a à peine été présenté avec le lancement d'Android 7.0 Nougat, fin 2016. L'utilisation du schéma de signature v2 dans les applications Android 7.0+ a été fortement encouragée car il apportait une série de correctifs essentiels et améliorations de sécurité: alors que la v1 n'a signé que le JAR, la v2 prend des mesures supplémentaires pour protéger l'intégrité de l'ensemble déposer. Cependant, les schémas de signature ne sont pas rétrocompatibles et Android Marshmallow et versions antérieures nécessitent des signatures v1 pour les applications.
À moins que vous ne vous adressiez spécifiquement aux utilisateurs de Nougat ou supérieur, le scénario idéal serait d'utiliser les deux schémas de signature côte à côte, en signant d'abord avec la v1, puis en démissionnant avec la v2. De cette façon, Nougat et versions supérieures reconnaîtront la signature v2, tandis que Marshmallow et versions inférieures reconnaîtront la signature v1.
Cependant, l'utilisation de la version 1 uniquement est fortement déconseillée en raison d'une série de vulnérabilités et d'autres problèmes de sécurité, dont le plus notable est la vulnérabilité Janus, qui permet aux attaquants d'attaquer et de modifier directement les APK sans affecter les signatures. Les applications populaires avec des mises à jour peu fréquentes comme Instagram ou Snapchat ne sont signées qu'avec des signatures v1, ce qui signifie qu'elles sont vulnérables à ces problèmes.
Schéma de signature APK v3
La plus grande fonctionnalité phare de la v3, censée être une révision de la v2, sera prise en charge de la rotation des clés. Le schéma de signature v3 introduit l'APK Signer Lineage, qui, selon l'un des commits, "contient un historique de signature de certificats avec chaque ancêtre attestant de la validité de son descendant. Chaque descendant supplémentaire représente une nouvelle identité pouvant être utilisée pour signer un APK. De cette manière, la lignée contient une preuve de rotation par laquelle l'APK la contenant peut démontrer, aux autres parties, sa capacité à faire confiance à son certificat de signature actuel, comme s'il était signé par l'un de ses anciens ceux."
La rotation des clés est une fonctionnalité intéressante pour les développeurs à plusieurs égards. Pour commencer, cela peut être utile pour les développeurs d'équipes travaillant sur une seule application, afin que les développeurs n'aient pas à partager leurs clés de signature avec l'équipe. Étant donné que l'application nécessite exactement la même signature pour la mise à jour, toutes les applications doivent actuellement être compilées par le même développeur ou un groupe de les développeurs travaillant avec la même clé, ce qui diminue la sécurité (il y a plus de chances que la clé soit volée) et ralentit le développement.
De plus, cela peut également être utile dans le cas où un développeur se voit voler/perdre sa clé de signature, ce qui cela signifierait normalement que l'application devrait être à nouveau téléchargée sur le Play Store sous un package différent nom. Ce n'est pas un cas rare, car même Google a apparemment perdu il y a longtemps la clé de signature de l'application Google Authenticator, ce qui les a amenés à la republier sous un nom de package différent. Depuis lors, Google a fourni des moyens de stocker en toute sécurité vos clés de signature dans le cloud avec Signature d'application Google Play, mais la rotation des clés vous permettrait de continuer à mettre à jour votre application en cas de problème hypothétique.
Quand est-il déployé ?
Même si vous êtes peut-être impatient de l'essayer pour plus de commodité, le schéma de signature v3 a été repéré flottant autour de l'AOSP. Gerrit Code Review, et les commits eux-mêmes n'ont pas été fusionnés dans la branche principale pour le moment, donc il n'est pas prêt encore. Nous devrions nous attendre à ce que le schéma de signature v3 vienne entre les mains des développeurs avec la prochaine version d'Android P si la version précédente v2 avec Android Nougat nous dit quelque chose.
Nous devons également noter que la rotation des clés n’est probablement pas la seule différence par rapport à la v2. Le schéma de signature APK v3 est toujours un travail en cours, nous verrons donc les améliorations réelles du schéma de signature v3 lorsque la documentation complète le concernant sera publiée dans le futur.