Criando um pacote de aplicativos simples e seguro - APPX

Blog do desenvolvedor de aplicativos do Windows 8

Ideias sobre a criação de aplicativos com o estilo Metro para o Windows 8, da equipe de engenharia do Windows 8

Criando um pacote de aplicativos simples e seguro - APPX

  • Comments 1

Quando começamos a trabalhar na nova plataforma de desenvolvimento do Windows 8, uma das primeiras questões que levantamos foi: qual formato é seguro para colocar um pacote de aplicativos?". Antes do Windows 8, havia duas tecnologias de instalação básicas: Windows Installer e ClickOnce. Como vimos na postagem do blog Delivering reliable and trustworthy apps (Fornecendo aplicativos seguros e confiáveis), muitos produtos ajudam os desenvolvedores a gerenciar as complexidades da instalação e atualização de aplicativos. Entretanto, o empacotamento, a instalação e a atualização de aplicativos continuam a frustrar desenvolvedores e usuários finais. A principal meta ao empacotar e implantar aplicativos era eliminar a necessidade de instalar scripts ao mesmo tempo, tornando o processo mais direto.

Os aplicativos da Windows Store ainda tinham o desafio de dar suporte às tecnologias existentes para código nativo e gerenciado, além da nova tecnologia fornecida com o Tempo de Execução do Windows. Acima disso, queríamos abrir a criação de aplicativos para um novo grupo de desenvolvedores, pessoas com ideias boas e inovadoras, mas que ainda estivessem aprendendo a criar aplicativos. Precisávamos de algo fácil para os desenvolvedores usarem, que desse suporte a uma série de tecnologias de aplicativos, que fosse eficiente ao empacotar, instalar e atualizar. Ele ainda precisava ser seguro e, de preferência, simples... uma senhora lista! O resultado foi o formato de pacote de aplicativos APPX (“.appx”) do Windows 8.

Simples

Nosso foco era manter a simplicidade. As tecnologias dos instaladores anteriores exigiam que você aprendesse a escrever scripts de instalação ou usasse ferramentas especiais para compilar o aplicativo em um formato binário especializado. Para os aplicativos da Windows Store, recuamos e procuramos criar usando padrões existentes, em vez de inventar mais um. Criamos resumos de todas as tecnologias conhecidas de empacotamento de aplicativos que encontramos, lapidamos essas tecnologias e avaliamos as vantagens de vários recursos. Depois de muitas discussões, optamos por uma base inicial simples, mas popular: o ZIP.

Por mais popular que seja, ZIP é uma tecnologia antiga que existe desde 1989, o que é bom e ruim. O lado bom no ZIP é ele ser amplamente conhecido e suportado, mas o lado ruim é ele ser anterior aos avanços de tecnologias mais recentes, como as modernas Web e XML. Além disso, a especificação do formato ZIP inclui requisitos para muitos recursos mais antigos (como distribuir para vários disquetes – lembra-se deles?) que não são relevantes para as tecnologias atuais. Um dos maiores desafios, porém, é que, embora ZIP seja de fato um padrão, não é um padrão internacional aberto. É aí que entra o OPC.

Desenvolvendo padrões: ZIP + Web + XML = OPC

Em 2006, a equipe do Office trabalhando com outros grupos da Microsoft propôs um novo padrão, OPC (Open Packaging Conventions), que será lançado ao público como um padrão internacional aberto. O OPC foi lançado pela primeira vez em 2006 como um padrão ECMA internacional no ECMA 376-2 e em 2008 foi adotado pela International Standards Organization no ISO/IEC 29500-2.

Desenvolvendo padrões

Figura 1: Desenvolvendo padrões

Os padrões ECMA 376-2 e ISO 29500-2 OPC baseiam-se na Especificação de Formato de Arquivo APPNOTE.TXT - .ZIP, mas o poder do OPC está nas qualificações específicas incluídas na funcionalidade ZIP. O OPC também integra conceitos de tecnologias da Web (por exemplo, nomes compatíveis com URI) e usa XML como padrão com sua tecnologia declarativa legível por máquina e usuários. Um ponto-chave é que, além de ser um formato de arquivo, o OPC também é uma tecnologia de arquivo contêiner baseada em ZIP para definir e criar novos formatos de arquivo. Além da sua origem para os formatos do Office 10 Word (.docx), Excel (.xlsx) e PowerPoint (.pptx), o OPC está se tornando mais popular com os vários formatos de arquivo novos da Microsoft e de terceiros [Wikipedia: File Formats using OPC (Formatos de arquivo que usam OPC)].

Outro benefício do OPC é que já existiam APIs públicas do OPC disponíveis testadas e prontas para serem usadas com código gerenciado (Sytem.IO.Packaging) e código nativo (Data Access and Storage | Packaging). Usando as APIs do OPC públicas como base, criamos APIs de empacotamento e implantação de aplicativos públicas, específicas para APPX. As APIs APPX por sua vez são usadas para criar ferramentas de empacotamento de aplicativos associadas. Todas as ferramentas APPX e APIs estão disponíveis ao público como parte do Windows 8 SDK.

Noções básicas sobre criação de aplicativos

Os aplicativos da Windows Store podem ser criados usando uma IDE fornecida pelo Visual Studio Express 2012 ou “autônoma” usando ferramentas como um editor de texto simples junto com a ferramenta de empacotamento de aplicativos MakeAppx.exe fornecida com o Windows 8 SDK. Aplicativos da Web simples, por exemplo, podem ser escritos com apenas um editor de texto ou o editor HTML de sua preferência com o utilitário MakeAppx que funciona de forma semelhante à ferramenta ZIP.

Um recurso importante dos pacotes APPX é o XML declarativo usado para definir os requisitos do sistema de aplicativos necessários para implantar, exibir e atualizar um aplicativo. Em vez de usar um banco de dados binário que requer ferramentas especiais e, muitas vezes, scripts personalizados, o manifesto do pacote de aplicativos, definido em “AppxManifest.xml”, especifica os detalhes do aplicativo para identidade, dependências, funcionalidades, elementos visuais e contratos que ele usa. Cada aplicativo da Windows Store contém um arquivo de manifesto do pacote. O Visual Studio criará um para você automaticamente; você também pode usar o editor de texto de sua preferência para criar um manifesto do pacote manualmente. Este código de exemplo mostra um arquivo AppxManifest.xml de exemplo.

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

Por segurança, todos os pacotes APPX devem ser assinados digitalmente. Como primeira etapa para proteger o aplicativo, o Visual Studio 2012 e o utilitário MakeAppx criam e inserem um arquivo AppxBlockMap.xml na criação de cada pacote APPX ZIP. O arquivo de mapa de blocos armazena os hashes de blocos criptográficos para cada arquivo do pacote e o próprio arquivo de mapa de blocos é verificado e protegido com uma assinatura digital quando o pacote é assinado. O arquivo de mapa de blocos permite que os pacotes APPX sejam baixados e validados de forma incremental e também funciona para dar suporte a diferentes atualizações de arquivos de aplicativo depois que eles são instalados.

A imagem a seguir mostra o processo usando o Visual Studio 11 Express ou o utilitário MakeAppx.exe para organizar os arquivos do seu aplicativo em um pacote APPX.

Criando um pacote APPX usando o Visual Studio 11 Express ou o utilitário MakeAppx

Figura 2: Criando um pacote APPX usando o
Visual Studio 11 Express ou o utilitário MakeAppx

Uma das etapas é facilitar o empacotamento do aplicativo. Outra é proteger o aplicativo.

Proteger

Obviamente, a segurança do aplicativo é uma preocupação crítica, especialmente para os consumidores. Assim como várias outras tecnologias de empacotamento, os pacotes APPX usam assinaturas digitais para manter a segurança do aplicativo. Uma assinatura digital não evita que o conteúdo do aplicativo assinado seja alterado, mas a verificação da assinatura falhará se algum item no conteúdo assinado for alterado.

Para os desenvolvedores que criam aplicativos para serem distribuídos pela Windows Store, a assinatura é simples; a loja faz isso para você. Depois de criar o seu aplicativo, você faz logon no portal do desenvolvedor da Windows Store e carrega (https) o seu arquivo .appx. A Windows Store realiza uma série de verificações e assina o seu aplicativo com um certificado contendo seu nome de desenvolvedor registrado. Depois de assinado, o aplicativo é postado na Windows Store e pode ser baixado para implantação – não podia ser mais simples que isso!

Se criar aplicativos para empresas ou uso de teste, você mesmo também poderá assinar o pacote APPX. O Visual Studio Express 2012 pode ajudá-lo a fazer, mas você também pode usar o utilitário Windows SignTool para adicionar uma assinatura Authenticode para o seu pacote. A Figura 3 mostra o processo de assinatura para um pacote APPX usando o Visual Studio Express ou o Windows SignTool.

Assinando um pacote APPX com o Visual Studio 11 Express ou de forma autônoma com o SignTool

Figura 3: Assinando um pacote APPX usando o
Visual Studio 11 Express ou de forma autônoma com o SignTool

As assinaturas digitais fornecem duas funcionalidades principais:

  • Identificam com segurança a origem da assinatura ("quem está assinando")
  • Verificam se o conteúdo assinado não foi alterado

Os pacotes APPX estabelecem um alto padrão de segurança – todos os pacotes APPX devem ser assinados e a assinatura validada antes que eles sejam instalados. A assinatura dá aos usuários segurança para executar o aplicativo e fornece um meio de verificar periodicamente se os arquivos originais do aplicativo foram modificados por um usuário mal-intencionado ou um software de terceiros. Para os consumidores que baixam pacotes da Windows Store, os aplicativos devem passar pelo controle de qualidade da Windows Store e verificações antivírus para, então, receberem sua assinatura antes de serem disponibilizados para download.

Segurança do aplicativo

As assinaturas digitais APPX atendem a vários usuários, e convém que os administradores de TI empresariais e desenvolvedores de terceiros entendam vários aspectos de design. Os aplicativos da Windows Store empregam um modelo de segurança em três partes:

  • Segurança do aplicativo empacotado
  • Segurança do aplicativo implantado
  • Segurança do aplicativo em tempo de execução

Segurança do aplicativo empacotado

Normalmente, a maioria das tecnologias dos instaladores assina o contêiner de implantação como uma unidade. As assinaturas digitais dos pacotes APPX foram criadas para fornecer a validação como uma unidade de pacote ou de maneira incremental.

Validação do pacote

A assinatura de um arquivo APPX ZIP como uma unidade fornece um nível de proteção inicial para o pacote inteiro. Além dos arquivos de conteúdo do aplicativo armazenados no ZIP, um arquivo ZIP também contém estruturas internas (por exemplo, cabeçalhos de arquivos locais, descritores de dados e diretório central) que devem ser protegidos. A assinatura do APPX como uma unidade garante que todo o conteúdo, inclusive as estruturas internas, possa ser validado pela assinatura digital durante a verificação de qualquer alteração.

Validação incremental

Assinado como uma unidade, o arquivo inteiro deve ser apresentado para validar o pacote. Ao transferir um pacote pela Web, porém, é preferível detectar as falhas de conteúdo com rapidez e antecedência. Para isso, todo pacote APPX contém um arquivo AppxBlockmap.xml que especifica os hashes criptográficos para cada bloco contido em cada arquivo de conteúdo do aplicativo. Usando os valores de hash contidos no arquivo AppxBlockmap.xml, o conteúdo de cada arquivo de aplicativo pode ser validado de forma incremental quando é baixado pela Web.

Segurança do aplicativo implantado

Embora as tecnologias anteriores permitissem que alguns arquivos fossem assinados individualmente (.exe e .dll), a menos que um determinado tipo de arquivo em si desse suporte a assinaturas digitais, não havia como validar vários tipos de arquivos de aplicativo depois que eles eram instalados.

Arquivos de texto, JavaScript, XML e muitos outros tipos de arquivo comuns não davam suporte a assinaturas digitais de forma nativa. Um recurso de design de assinatura digital do APPX é que, ao implantar arquivos de assinatura APPX empacotados (AppxSignature.p7x e AppxBlockmap.xml) com arquivos de conteúdo de outro aplicativo copiados para o cliente, todo e qualquer arquivo de aplicativo poderá passar por uma nova validação posteriormente.

Importante: as assinaturas digitais APPX assinam com eficiência todos os arquivos contidos no pacote de aplicativos e também podem ser usadas para validar os arquivos de aplicativo depois que eles são extraídos e instalados no disco!

appx_deployment

Figura 4: Implantando um APPX assinado

Segurança do aplicativo em tempo de execução

A segurança de tempo de execução dos aplicativos da Windows Store já é aprimorada com a execução dentro de um ambiente especial protegido do contêiner de aplicativos. Quando um aplicativo é executado dentro do contêiner, ele não pode interagir diretamente nem afetar outros aplicativos. Além disso, o aplicativo possui acesso limitado com porta para recursos do sistema e de hardware. A postagem do blog Delivering reliable and trustworthy apps destaca os recursos do ambiente do contêiner de aplicativos.

Conclusão

O novo formato APPX para aplicativos da Windows Store emprega tecnologias inovadoras para tornar o empacotamento de aplicativos mais simples e seguro. Esses pacotes aproveitam os padrões baseados no formato OPC e são fáceis de criar usando o Visual Studio Express 2012 ou a ferramenta autônoma MakeAppx para simplificar o empacotamento do seu aplicativo. Usando assinaturas digitais, podemos garantir que cada pacote seja válido e seus usuários estejam protegidos.

Divirta-se criando aplicativos com os pacotes APPX!

--Jack Davis, gerente de programas - Windows

  • Loading...
Leave a Comment
  • Please add 2 and 1 and type the answer here:
  • Post