Concevoir un package d'application simple et sécurisé : APPX

Blog des développeurs d'applications Windows 8

Indications sur la conception d'applications de style Metro pour Windows 8, par l'équipe d'ingénierie de Windows 8

Concevoir un package d'application simple et sécurisé : APPX

  • Comments 1

Lorsque nous avons commencé à travailler sur la nouvelle plateforme de développement Windows 8, une des premières questions que nous nous sommes posées a été la suivante : « Comment empaqueter une application dans un format qui soit à la fois simple et sécurisé ? » Avant Windows 8, on comptait deux principales technologies d'installation : Windows Installer et ClickOnce. Comme indiqué dans le billet de blog Concevoir des applications de style Metro fiables et dignes de confiance, de nombreux produits aident les développeurs à gérer les complexités liées à l'installation et à la mise à jour des applications. Pourtant, l'empaquetage, l'installation et la mise à jour des applications demeurent une source de frustration pour le développeur et l'utilisateur final. Un des principaux objectifs de l'empaquetage et du déploiement des applications était d'éliminer les scripts d'installation afin de simplifier le processus.

Les applications du Windows Store ont dû en outre faire face à la prise en charge des deux technologies existantes pour le code natif et le code géré, plus une nouvelle technologie proposée via Windows Runtime. Surtout, nous tenions à ouvrir la conception des applications à un nouveau groupe de développeurs : les développeurs qui avaient de formidables idées innovantes, mais qui apprenaient seulement à créer des applications pour la première fois. Nous avions besoin d'aboutir à quelque chose de simple à utiliser pour les développeurs, quelque chose qui prenne en charge toute une gamme de technologies applicatives, quelque chose d'efficace à empaqueter, à installer et à mettre à jour. Quelque chose en outre qui soit sécurisé, et, dans l'idéal, simple. Une sacrée liste de préférences ! Le résultat est le format de package d'application APPX de Windows 8 (« .appx »).

Simplicité

La simplicité était importante. Avec les technologies d'installation précédentes, il était nécessaire de savoir écrire des scripts d'installation ou d'utiliser des outils spéciaux pour créer l'application dans un format binaire spécialisé. Pour les applications du Windows Store, nous avons pris du recul et envisagé de réutiliser les normes existantes au lieu d'en inventer encore une nouvelle. Nous avons récapitulé toutes les technologies d'empaquetage d'applications existantes que nous avons trouvées, les avons examinées et avons pesé le pour et le contre des différentes fonctionnalités. Après de nombreuses discussions, nous nous sommes arrêtés sur une base de départ à la fois simple et répandue : le format ZIP.

Bien que le format ZIP soit très répandu, il s'agit d'une technologie ancienne qui est utilisée depuis 1989. Ceci est à la fois une bonne et une mauvaise chose. Le côté positif est que le format ZIP est largement connu et pris en charge, mais le côté moins positif est qu'il est également antérieur à de nombreuses améliorations technologiques plus récentes, telles que le format XML et le Web actuel. En outre, la spécification du format ZIP inclut des caractéristiques pour de nombreuses fonctionnalités antérieures (par exemple pour la répartition sur plusieurs disquettes – vous vous souvenez des disquettes ?) qui ne conviennent plus aux technologies actuelles. Un des plus grands défis à relever était pourtant que, bien que le format ZIP soit, de fait, une norme, il ne s'agissait pas véritablement d'une norme internationale ouverte. C'est là qu'OPC entre en scène.

Réutilisation des normes : ZIP + Web + XML = OPC

En 2006, l'équipe Office qui travaillait avec d'autres groupes de Microsoft a proposé une nouvelle norme OPC (Open Packaging Conventions) à commercialiser en tant que norme internationale ouverte. OPC a été initialement commercialisée en 2006 en tant que norme internationale ECMA dans ECMA 376-2 et a été adoptée en 2008 par l'Organisation internationale de normalisation dans ISO/IEC 29500-2.

Réutilisation des normes

Figure 1 : réutilisation des normes

Les normes OPC ECMA 376-2 et ISO 29500-2 font référence à la spécification de format de fichier .ZIP - APPNOTE.TXT, mais un des atouts d'OPC réside dans les qualifications spécifiques qu'il intègre aux fonctionnalités ZIP. OPC inclut par ailleurs les concepts des technologies Web (par exemple des noms URI) et normalise le format XML comme technologie déclarative lisible par l'homme et par la machine. Un des éléments essentiels est qu'OPC n'est pas simplement un format de fichier, c'est également une technologie de fichiers conteneur ZIP qui permet de définir et de créer de nouveaux formats de fichiers. En plus de son origine dans les formats Word (.docx), Excel (.xlsx) et PowerPoint (.pptx) d'Office 10, OPC est de plus en plus utilisé dans de nombreux nouveaux formats de fichiers Microsoft et tiers (Wikipédia : Formats de fichiers avec OPC).

Autre avantage d'OPC : des API OPC publiques existantes étaient déjà disponibles, testées et prêtes à être utilisées à la fois pour le code géré (Sytem.IO.Packaging) et le code natif (Data Access and Storage | Packaging). En nous appuyant sur les API OPC publiques, nous avons créé des API d'empaquetage et de déploiement d'applications publiques propres à APPX. Les API APPX permettent ensuite de créer des outils d'empaquetage d'applications associés. Tous les outils APPX et les API sont accessibles au grand public dans le cadre du SDK de Windows 8.

Principes de base de la conception d'applications

Les applications du Windows Store peuvent être créées à l'aide d'un IDE fourni par Visual Studio Express 2012 ou de manière « autonome » à l'aide d'outils, tels qu'un éditeur de texte simple allié à l'outil d'empaquetage d'applications MakeAppx.exe proposé avec le SDK de Windows 8. Les applications Web simples, par exemple, peuvent être écrites simplement avec un éditeur de texte ou avec votre éditeur HTML favori, puis empaquetées à l'aide de l'utilitaire MakeAppx qui fonctionne comme un outil ZIP.

Une des fonctionnalités principales des packages APPX est le XML déclaratif, qui permet de définir la configuration système requise pour déployer, afficher et mettre à jour une application. Au lieu d'utiliser une base de données binaire qui nécessite des outils spéciaux et souvent des scripts personnalisés, le manifeste du package de l'application, défini dans le fichier « AppxManifest.xml », donne des détails sur l'identité, les dépendances, les fonctionnalités, les éléments visuels et les contrats que l'application utilise. Chaque application du Windows Store renferme un fichier de manifeste du package. Visual Studio en crée un automatiquement pour vous ou alors, vous pouvez utiliser votre éditeur de texte favori pour créer un manifeste du package manuellement. Le code ci-dessous illustre un fichier AppxManifest.xml d'exemple.

<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest">
<Identity Name="MyCompany.MyAppSuite.MyApp" Version="1.0.0.0"
Publisher="CN=C58FDA15-2FCE-4CFB-ACA0-3981ED7222D7" />
<Properties>
<DisplayName>Postcards</DisplayName>
<PublisherDisplayName>MyCompany</PublisherDisplayName>
<Logo>images\MyCompanyLogo.png</Logo>
</Properties>
<Resources>
<Resource Language="en-US" />
</Resources>
<Prerequisites>
<OSMinVersion>6.2</OSMinVersion>
<OSMaxVersionTested>6.2</OSMaxVersionTested>
</Prerequisites>
<Applications>
<Application Id="App" StartPage="default.html">
<VisualElements DisplayName="Postcards App" Description="Postcards App ..."
Logo="images\postcards-logo-lg.png" SmallLogo="images\postcards-logo-sm.png"
ForegroundText="light" BackgroundColor="#0084FF" ToastCapable="true">
<DefaultTile ShowName="true" />
<SplashScreen BackgroundColor="" Image="images\postcards-splash.png" />
</VisualElements>
<Extensions>
<Extension Category="windows.search" StartPage="default.html" />
</Extensions>
</Application>
</Applications>
</Package>

Pour des raisons de sécurité, tous les packages APPX doivent être signés numériquement. Au début de la sécurisation de l'application, Visual Studio 2012 et l'utilitaire MakeAppx créent et insèrent un fichier AppxBlockMap.xml lors de la conception de chaque package ZIP APPX. Le fichier blockmap stocke les hachages de blocs de chiffrement de chaque fichier du package et le fichier blockmap lui-même est vérifié et sécurisé à l'aide d'une signature numérique au moment de la signature du package. Le fichier blockmap permet aux packages APPX d'être téléchargés et validés de façon incrémentielle et permet de prendre en charge les différentes mises à jour appliquées aux fichiers de l'application après leur installation.

L'image suivante illustre le processus avec Visual Studio 11 Express ou l'utilitaire MakeAppx.exe pour organiser les fichiers de votre application dans un package APPX.

Création d'un package APPX avec Visual Studio 11 Express ou l'utilitaire MakeAppx

Figure 2 : création d'un package APPX avec
Visual Studio 11 Express ou l'utilitaire MakeAppx

Faciliter l'empaquetage de votre application constitue une première étape. Faciliter la sécurisation de l'application constitue l'étape suivante.

Sécurisation

La sécurité des applications est évidemment au centre des préoccupations, en particulier pour les clients. Comme avec beaucoup d'autres technologies d'empaquetage, les packages APPX utilisent les signatures numériques pour garantir la sécurité des applications. Une signature numérique n'empêche pas le contenu de l'application signée d'être modifié, mais un contrôle de signature échouera si un des éléments du contenu signé a changé.

Pour les développeurs qui créent des applications à distribuer via le Windows Store, la signature est un processus simple : le Windows Store s'en occupe pour vous. Une fois l'application créée, vous vous connectez au portail des développeurs du Windows Store et téléchargez (https) votre fichier .appx. Le Windows Store réalise une série de contrôles, puis signe votre application avec un certificat contenant votre nom de développeur inscrit. Une fois signée, l'application est publiée sur le Windows Store et peut être téléchargée pour le déploiement : cela ne peut pas être plus simple !

Si vous concevez des applications pour une entreprise ou à des fins de test, vous pouvez également signer votre package APPX vous-même. Visual Studio Express 2012 peut vous aider à le faire ou vous pouvez utiliser l'utilitaire SignTool standard de Windows pour ajouter une signature Authenticode à votre package. La figure 3 illustre le processus de signature d'un package APPX avec Visual Studio Express ou l'utilitaire SignTool de Windows.

Signature d'un package APPX avec Visual Studio 11 Express ou de manière autonome avec SignTool

Figure 3 : signature d'un package APPX avec
Visual Studio 11 Express ou de manière autonome avec SignTool

Les signatures numériques offrent deux fonctions clés :

  • Identifier de manière sécurisée l'auteur de la signature (« la personne qui signe »)
  • Vérifier que le contenu signé n'a pas changé

Les packages APPX placent la barre très haut en matière de sécurité : tous les packages APPX doivent être signés et la signature doit être validée pour qu'ils puissent être installés. Grâce aux signatures, les utilisateurs peuvent faire confiance aux applications qu'ils exécutent. Elles permettent également de vérifier régulièrement que les fichiers d'origine de l'application n'ont pas été modifiés par un logiciel tiers ou un utilisateur malveillant. Pour les clients qui téléchargent les packages du Windows Store, les applications doivent réussir les contrôles antivirus et qualité du Windows Store, puis être signées par le Windows Store avant d'être accessibles par téléchargement.

Sécurité des applications

Les signatures numériques APPX répondent à plusieurs objectifs et il est utile que les administrateurs informatiques et les développeurs tiers comprennent certains aspects de la conception. Le modèle de sécurité des applications du Windows Store s'articule en trois points :

  • Sécurité des applications empaquetées
  • Sécurité des applications déployées
  • Sécurité des applications au moment de l'exécution

Sécurité des applications empaquetées

En règle générale, la plupart des technologies d'installation signent le conteneur de déploiement en tant qu'unité. Les signatures numériques des packages APPX sont conçues pour procurer une validation en tant qu'unité de package ou de façon incrémentielle.

Validation du package

Signer le fichier ZIP APPX en tant qu'unité donne un niveau de protection initial au package entier. Outre les fichiers de contenu de l'application stockés au sein du ZIP, un fichier ZIP comporte également les structures internes (par exemple, les en-têtes des fichiers locaux, les descripteurs de données et le répertoire central) qui doivent être protégées. Le fait de signer le package APPX en tant qu'unité garantit que l'intégralité du contenu, y compris les structures internes, peuvent être validées par la signature numérique lors de la recherche d'altérations potentielles.

Validation incrémentielle

Signé en tant qu'unité, le fichier dans son intégralité doit être présent pour valider le package. Lors du transfert d'un package via le Web, il est toutefois préférable de détecter les défaillances liées au contenu rapidement et tôt dans le processus. Pour ce faire, chaque package APPX contient un fichier AppxBlockmap.xml qui indique les hachages de chiffrement de chaque bloc contenu dans chaque fichier de contenu de l'application. Grâce aux valeurs de hachage renfermées dans le fichier AppxBlockmap.xml, le contenu de chaque fichier de l'application peut être validé de façon incrémentielle lors du téléchargement via le Web.

Sécurité des applications déployées

Bien que les technologies précédentes permettaient de signer individuellement certains fichiers (fichiers .exe et .dll), sauf si un type de fichier en particulier prenait en charge les signatures numériques, il n'était pas possible de valider de nombreux types de fichiers d'application après leur installation.

Les types de fichiers texte, JavaScript, XML et bien d'autres ne prennent pas en charge de façon native les signatures numériques. Une des caractéristiques de la conception des signatures numériques APPX est qu'en déployant les fichiers de signature APPX empaquetés (AppxSignature.p7x et AppxBlockmap.xml) ensemble avec les autres fichiers de contenu de l'application copiés sur le client, certains ou tous les fichiers d'application peuvent être revalidés ultérieurement.

Important : les signatures numériques APPX signent en réalité chaque fichier du package de l'application et peuvent également servir à valider les fichiers de l'application après leur extraction et leur installation sur le disque !

Déploiement APPX

Figure 4 : déploiement d'un package APPX signé

Sécurité des applications au moment de l'exécution

Les applications du Windows Store ont déjà renforcé la sécurité de l'exécution en s'exécutant au sein d'un environnement de conteneur d'application protégé spécial. Si une application s'exécute au sein de son conteneur, elle ne peut pas interagir directement ou affecter d'autres applications. De même, l'application dispose d'un accès contrôlé restreint aux ressources matérielles et système. Le billet de blog Concevoir des applications de style Metro fiables et dignes de confiance présente les fonctionnalités de l'environnement de conteneur d'application.

Conclusion

Le nouveau format du package APPX pour les applications du Windows Store fait appel à des technologies innovantes pour simplifier et sécuriser l'empaquetage des applications. Ces packages tirent parti du format OPC normalisé et sont faciles à créer à l'aide de Visual Studio Express 2012 ou de l'outil MakeAppx autonome, ce qui simplifie l'empaquetage de votre application. Grâce aux signatures numériques, nous pouvons garantir la validité de chaque package et la sécurité de l'utilisateur final.

Amusez-vous en créant des applications avec les packages APPX !

--Jack Davis, chef de projet - Windows

  • Loading...
Leave a Comment
  • Please add 7 and 8 and type the answer here:
  • Post