Erstellen eines einfachen und sicheren App-Pakets – APPX

Entwicklerblog für Windows 8-Apps

Ein Einblick in die Entwicklung von Apps im Metro-Stil – präsentiert vom Windows 8-Entwicklerteam

Erstellen eines einfachen und sicheren App-Pakets – APPX

Rate This
  • Comments 0

Bei der Arbeit an der neuen Windows 8-Entwicklungsplattform hat sich die die Frage gestellt, wie ein einfaches, aber dennoch sicheres App-Format aussehen könnte. Vor Windows 8 gab es zwei primäre Installationstechnologien: Windows Installer und ClickOnce. Wie im Blogbeitrag über das Bereitstellen von zuverlässigen und vertrauenswürdigen Apps beschrieben, gibt es viele Produkte, die Entwicklern Hilfe beim Installieren und Aktualisieren von Apps bieten. Das Verpacken von Apps sowie deren Installation und Aktualisierung kann für Entwickler und Endbenutzer dennoch oft frustrierend sein. Eines des Hauptziele für das Verpacken und Bereitstellen von Apps war daher, auf Installationsskripts zu verzichten und den Prozess intuitiver zu gestalten.

Windows Store-Apps müssen außerdem die vorhandenen Technologien für systemeigenen und verwalteten Code sowie die neue Technologie von Windows-Runtime unterstützen. Wichtiger war jedoch, App-Entwicklung neuen Entwicklern zugänglich zu machen – Entwicklern, die großartige neue Ideen haben und zum ersten Mal Apps entwickeln. Daher haben wir eine benutzerfreundliche Lösung benötigt, die verschiedene App-Technologien unterstützt. Eine Technologie, die einfaches Verpacken, Installieren und Aktualisieren ermöglicht. Und das sicher und einfach – eine nicht unerhebliche Herausforderung. Das Ergebnis ist das App-Paketformat für Windows 8: APPX („.appx“).

Einfach

Der Fokus lag auf der Einfachheit. Bei älteren Installationstechnologien war es notwendig, Installationsskripts zu schreiben oder mit besonderen Tools Apps in einem speziellen Binärformat zu erstellen. Bei der Entwicklung von Windows Store-Apps lag es nahe, auf vorhandenen Standards aufzubauen, anstatt noch einen weiteren zu erfinden. Also haben wir Zusammenfassungen aller verbreiteten App-Verpackungstechnologien erstellt und ihre Eigenschaften im Bezug auf verschiedene Funktionen verglichen. Nach langen Diskussionen haben wir uns für eine einfache, aber beliebte Ausgangsbasis entschieden: ZIP.

ZIP ist eine beliebte Technologie, die bereits seit 1989 verwendet wird. Das hat Vor- und Nachteile. Einer der Vorteile ist der hohe Bekanntheitsgrad und die weite Verbreitung von ZIP. Weniger gut ist, dass ZIP vor der Entwicklung vieler neuerer Technologien entstanden ist. Es stammt aus der Zeit vor dem modernen Web und XML. Außerdem enthält die Formatspezifikation für ZIP Anforderungen für veraltete Funktionen (wie für das Schreiben auf mehrere Disketten), die für moderne Technologien nicht mehr relevant sind. Eine der größten Herausforderungen war jedoch, dass – obwohl faktisch ein Standard – ZIP nicht wirklich als offener internationaler Standard bezeichnet werden kann. Hier kommt OPC ins Spiel.

Aufbauen auf Standards: ZIP + Web + XML = OPC

Im Jahr 2006 hat das Office-Team gemeinsam mit anderen Microsoft-Abteilungen den neuen Open Packaging Conventions (OPC)-Standard vorgestellt. Dieser wurde der Öffentlichkeit als offener, internationaler Standard zugänglich gemacht. OPC wurde 2006 als ECMA International-Standard in der Publikation ECMA 376-2 veröffentlicht und im Jahr 2008 von der International Standards Organization in ISO/IEC 29500-2bestätigt.

Aufbauen auf Standards

Abbildung 1: Aufbauen auf Standards

Die Standards ECMA 376-2 und ISO 29500-2 OPC beziehen sich auf APPNOTE.TXT, die Spezifikation für das ZIP-Format. Eine Stärken von OPC liegt jedoch in der spezifischen Verwendung der ZIP-Funktion. OPC integriert darüber hinaus auch Konzepte aus Webtechnologien (wie zum Beispiel URI-kompatible Bezeichnungen) und nutzt XML als von Computern und Anwendern lesbares Standardformat. Doch OPC ist nicht nur ein Dateiformat, sondern vor allem eine ZIP-basierte Technologie für Containerdateien, die das Definieren und Erstellen von neuen Dateiformaten ermöglicht. Zusätzlich zu seiner Bedeutung für die Office 10-Formate von Word (.docx), Excel (.xlsx) und PowerPoint (.pptx), erfreut sich OPC einer wachsenden Beliebtheit bei neuen Dateiformaten von Microsoft sowie von Drittanbietern (Wikipedia: File Formats using OPC).

Ein weiterer Vorteil von OPC sind die frei verfügbaren und getesteten OPC-APIs für verwalteten (Sytem.IO.Packaging) und systemeigenen Code (Data Access and Storage | Packaging). Wir haben mit den frei verfügbaren OPC-APIs öffentliche APIs für das Verpacken und Bereitstellen von Apps erstellt, die speziell auf APPX ausgelegt sind. Die APPX-APIs wiederum werden beim Erstellen zugehöriger Tools für die App-Entwicklung verwendet. Alle APPX-Tools und -APIs stehen als Teil des Windows 8 SDK öffentlich zur Verfügung.

Grundlagen der App-Entwicklung

Windows Store-Apps lassen sich unter Verwendung des von Visual Studio Express 2012 bereitgestellten IDE erstellen. Alternativ kann auch ein einfacher Text-Editor zusammen mit dem Verpackungstool MakeAppx.exe verwendet werden, das im Windows 8 SDK enthalten ist. Einfache Web-Apps lassen sich beispielsweise mit einem Text- oder HTML-Editor schreiben und dann mit MakeAppx, ähnlich wie mit einem ZIP-Tool, verpacken.

Eine entscheidende Funktion der APPX-Pakete ist die Verwendung von XML zur Beschreibung der App-spezifischen Systemanforderungen, die zum Bereitstellen, Anzeigen und Aktualisieren einer App erforderlich sind. Das in der Datei „AppxManifest.xml“ definierte Paketmanifest der App gibt die Anforderungen für die von der App verwendeten Identitäten, Abhängigkeiten, Funktionen, grafischen Elemente und Verträge an. So müssen Entwickler keine Binärdatenbanken verwenden, wofür besondere Tools und oftmals spezielles Skripting benötigt werden. Jede Windows Store-App enthält eine Paketmanifestdatei. Dabei können Sie das von Visual Studio automatisch erstellte Paketmanifest verwenden. Alternativ können Sie auch einen Text-Editor Ihrer Wahl nutzen, um manuell ein eigenes Paketmanifest zu erstellen. Das folgende Beispiel zeigt den Code einer typischen „AppxManifest.xml“-Datei.

<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>

Aus Sicherheitsgründen werden alle APPX-Pakete mit einer digitalen Signatur versehen. Um die Sicherheit einer App zu gewährleisten, erstellen Visual Studio 2012 und MakeAppx eine „AppxBlockMap.xml“-Datei und fügen diese in das APPX-ZIP-Paket ein. Die kryptografischen Block-Prüfsummen werden in der Blockmap-Datei der einzelnen Paketdateien gespeichert. Die Blockmap-Datei selbst wird wiederum beim Signieren des Pakets geprüft und mit einer digitalen Signatur versehen. Die Blockmap-Datei ermöglicht das Herunterladen von APPX-Paketen und sorgt für deren inkrementelle Überprüfung. Außerdem unterstützt sie eine differenzielle Aktualisierungen der Dateien nach ihrer Installation.

Die folgende Abbildung erläutert das Verpacken von App-Dateien zu einem APPX-Paket mithilfe der Programme Visual Studio 11 Express und MakeAppx.exe.

Erstellen von APPX-Paketen mit Visual Studio 11 Express oder MakeAppx

Abbildung 2: Erstellen von APPX-Paketen mit
Visual Studio 11 Express oder MakeAppx

Das Verpacken von Apps so einfach wie möglich zu machen ist eine Sache. Die Sicherheit der Apps zu gewährleisten eine andere.

Sicher

Die Sicherheit von Apps ist ein wichtiges Anliegen, besonders für den Endbenutzer. Wie viele andere Verpackungstechnologien auch, gewährleisten APPX-Pakete die Sicherheit mithilfe von digitalen Signaturen. Digitale Signaturen bewahren die Inhalte der gesicherten App zwar nicht vor Modifizierungen. Werden jedoch einzelne Elemente verändert, wird dies beim Überprüfen der Signatur erkannt.

Entwickler müssen sich beim Erstellen von Apps für den Windows Store über die Signatur keine Sorgen machen – das übernimmt der Store automatisch. Nach der Fertigstellung Ihrer App melden Sie sich beim Windows Store-Entwicklerportal an und laden Ihre APPX-Datei über eine sichere Verbindung (https) auf unseren Server. Danach führt der Windows Store eine Reihe von Überprüfungen durch und versieht Ihre App mit einem Zertifikat. Dieses enthält den Entwicklernamen, unter dem Sie sich bei uns registriert haben. Sobald sie mit einer Signatur versehen ist, wird die App im Windows Store veröffentlicht und kann nun heruntergeladen werden – so einfach ist das.

Bei der Entwicklung von Firmen- oder Testversionen kann der Entwickler das APPX-Paket manuell mit einer Signatur versehen. Visual Studio Express 2012 übernimmt das für Sie. Alternativ können Sie SignTool, das Standardtool von Windows, verwenden, um Ihrem Paket eine Authenticode-Signatur hinzuzufügen. Abbildung 3 veranschaulicht das Signieren von APPX-Paketen mit den Programmen Visual Studio Express und Windows SignTool.

Hinzufügen einer Signatur zu einem APPX-Paket mit Visual Studio 11 Express oder manuell mit SignTool

Abbildung 3: Signieren von APPX-Paketen mit
Visual Studio 11 Express oder manuell mit SignTool

Digitale Signaturen haben zwei Schlüsselfunktionen:

  • Sicheres Identifizieren des Urhebers („wer hat unterschrieben“)
  • Überprüfen, ob der signierte Inhalt verändert wurde

APPX-Pakete erfüllen einen hohen Sicherheitsstandard – alle APPX-Pakete werden mit einer Signatur versehen. Ohne deren Überprüfung kann die App nicht installiert werden. Digitale Signaturen sichern das Vertrauen der Endbenutzer und ermöglichen regelmäßige Überprüfungen der Integrität von App-Dateien. Von böswilligen Benutzern oder Drittanbieter-Software veränderte Dateien werden sofort erkannt. Bevor Endbenutzer Softwarepakete aus dem Windows Store herunterladen können, unterzieht der Windows Store die Apps strengen Qualitäts- und Viruskontrollen. Erst nachdem der Windows Store sie mit einer Signatur versehen hat, werden sie zum Download zur Verfügung gestellt.

App-Sicherheit

Die digitalen Signaturen der APPX-Pakete dienen verschiedenen Zwecken. Das Verständnis folgender Entwurfsaspekte ist wichtig für IT-Administratoren von Unternehmen und Entwickler von Drittanbietern. Windows Store-Apps verwenden ein dreiteiliges Sicherheitsmodell:

  • Sicherheit der App-Pakete
  • Sicherheit bereitgestellter Apps
  • Sicherheit von Apps während der Laufzeit

Sicherheit der App-Pakete

Die meisten Installationstechnologien versehen den gesamten Bereitstellungscontainer mit einer Signatur. Die digitalen Signaturen von APPX-Paketen sind so beschaffen, dass sie Dateien sowohl auf Paketebene als auch inkrementell überprüfen lassen.

Überprüfen von Paketen

Das Versehen der APPX-ZIP-Datei mit einer Signatur gewährleistet ein hohes Sicherheitsniveau für das gesamte Paket. Zusätzlich zu den App-Dateien enthält jede ZIP-Datei auch interne Strukturen (wie zum Beispiel lokale Datei-Header, Datendeskriptoren und ein zentrales Verzeichnis), die geschützt werden müssen. Das Versehen des APPX-Pakets mit einer übergeordneten Signatur gewährleistet, dass alle Inhalte, einschließlich der internen Strukturen, auf Änderungen überprüft werden können.

Inkrementelles Überprüfen

Da als Einheit signiert, muss bei der Überprüfung die gesamte Datei vorhanden sein, um den Sicherheitstest bestehen zu können. Soll aber ein Paket über das Web übertragen werden, ist es von Vorteil, Fehler in der Inhaltstruktur schnell und frühzeitig erkennen zu können. Zu diesem Zweck enthält jedes APPX-Paket eine „AppxBlockmap.xml“-Datei, die die kryptografischen Hashes für jeden Block der einzelnen Inhaltsdateien der App spezifiziert. Mithilfe der Hash-Werte, die in der „AppxBlockmap.xml“-Datei enthalten sind, können die Inhalte aller Anwendungsdateien während des Downloads schrittweise überprüft werden.

Sicherheit bereitgestellter Apps

Obwohl frühere Technologien das Versehen einzelner Dateien mit Signaturen ermöglichten (EXE- und DLL-Dateien), war es oft unmöglich, verschiedene Anwendungsdateien auch nach ihrer Installation zu überprüfen. Eine Ausnahme sind Dateitypen, die von sich aus digitale Signaturen unterstützen.

Text, JavaScript, XML und viele andere verbreitete Dateitypen bieten keine systemeigene Unterstützung für digitale Signaturen. Eine der Funktionen der digitalen APPX-Signatur besteht darin, dass sich durch das Bereitstellen der APPX-Signaturdateien („AppxSignature.p7x“ und „AppxBlockmap.xml“) mit den anderen App-Inhaltsdateien an den Client die Möglichkeit bietet, einzelne oder alle Anwendungsdateien zu einem späteren Zeitpunkt erneut zu überprüfen.

Wichtig: Die in APPX-Pakete verwendeten digitalen Signaturen sichern alle im App-Paket enthaltenen Dateien und können auch dazu verwendet werden, App-Dateien zu überprüfen, nachdem diese bereits extrahiert und auf der Festplatte installiert wurden.

APPX-Bereitstellung

Abbildung 4: Bereitstellen von signierten APPX-Paketen

Sicherheit von Apps während der Laufzeit

Windows Store-Apps verfügen über eine verbesserte Sicherheit während der Laufzeit. Dies wird durch eine speziell geschützte App-Container-Umgebung gewährleistet. Solange eine App in ihrem Container ausgeführt wird, kann sie nicht auf direktem Weg mit anderen Apps kommunizieren oder diese beeinflussen. Außerdem haben Apps nur begrenzten Zugriff auf Hardware und Systemressourcen. Der Blogbeitrag über das Bereitstellen von zuverlässigen und vertrauenswürdigen Apps erläutert einige Details der App-Container-Umgebung.

Fazit

Das neue APPX-Paketformat für Windows Store-Apps bietet innovative Technologien, die das Verpacken von Apps noch leichter und sicherer machen. Die App-Pakete profitieren vom OPC-Format und lassen sich mit Visual Studio Express 2012 oder dem eigenständigen MakeAppx einfach erstellen und verpacken. Durch die Verwendung digitaler Signaturen gewährleisten wir die Integrität jedes App-Pakets und die Sicherheit der Endbenutzer.

Viel Spaß beim Erstellen von Apps mit APPX-Paketen!

– Jack Davis, Programmmanager, Windows

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