Aplicativos assinados digitalmente

terça-feira, 06 de março de 2012

Assinatura de código é uma técnica utilizada para garantir a integridade de um aplicativo, permite identificar o desenvolvedor do código e também determinar e garantir o fim ao qual o aplicativo foi desenvolvido.

Quando o código de um aplicativo é assinado, é possível determinar com segurança se o código original foi modificado por alguém que não seja o desenvolvedor, não importando se a modificação foi intencional (por um hacker) ou acidental (um arquivo corrompido). Além disso, caso o desenvolvedor utilize a mesma assinatura, o sistema irá identificar as novas versões (updates) como sendo o mesmo aplicativo assinado e autorizado anteriormente. Esta técnica de assinatura permite que o sistema identifique o aplicativo mesmo que ele seja renomeado, alterado o caminho ou a sua versão.

Assinatura de app - Renato Ribeiro

Todos os tipos de código podem ser assinados, incluindo ferramentas, aplicativos, scripts, bibliotecas, plugins, e “code-like” dados.

Uma assinatura de código consiste em três partes:

  1. Um identificador único, que será utilizado para identificar ou determinar a que grupo ou categoria o aplicativo pertence (ex: com.empresa.Programa).
  2. Uma coleção de checksums, hashes das várias partes do aplicativos, tais como identificador, Info.plist, executável principal, arquivos de recursos e assim por diante. Estes checksums são utilizados para detectar as alterações do código ou no identificador do programa.
  3. A assinatura digital, responsável pela assinatura da coleção de checksums, garantindo a integridade das informações.

Alguns recursos do sistema — como por exemplo Parental Controls, Managed Preferences, Keychain Access e o Firewall — utilizam assinaturas de código para verificar se a aplicação que está em execução está íntegra, se não houve algum tipo de modificação. No caso do Parental Controls e do Firewall, aplicativos que não possuem o código assinado, após inclusão do usuário são assinados pelo sistema e colocados em uma base para identificá-los e verificar se eles permanecem inalterados.

Muitos recursos do OS X não se preocupam com a identidade do assinante, apenas se ele foi modificado desde a última verificação; o Parental Controls e o Keychain são exemplos deste tipo de validação. Já outros recursos, como por exemplo o Firewall de aplicação, reconhece apenas assinaturas validadas por uma Autoridade Certificadora a qual o sistema confia, salvo ocasiões em que você tenha definido que o sistema confie na assinatura.

Algumas informações importantes sobre a assinatura de código:

  • Não garante que o programa esteja livre de vulnerabilidades de segurança.
  • Não garante que o programa carregue um código externo inseguro ou alterado — exemplo: plugins não assinados ou carregados durante a execução.
  • Não é uma forma de proteção de direitos autorais (DRM). Embora você possa identificar cópias do seu programa que não foram assinadas por você ou que o seu programa tenha sido modificado, não há nada para impedir que usuários executem o seu programa.
  • A validação da assinatura do código é realizada somente quando o sistema ou algum outro programa precisa determinar se o código está íntegro. O Finder, por exemplo, pode executar um programa que tenha um identificador inválido, pois ele não tem nenhuma razão para validar o identificador (em breve falaremos sobre Sandbox e Gatekeeper).

Para verificar se um aplicativo foi assinado digitalmente, utilize o utilitário codesign disponível na linha de comando. Abra o Terminal e digite:

[code lang=”cpp”]codesign -dvvv /Applications/Mail.app[/code]

Aplicativos nativos do OS X são assinados pela Apple (Mail, Safari, iTunes…), desenvolvedores independentes também podem assinar seus apps para Mac. Mais informações sobre como desenvolver para Mac ou como assinar o seu aplicativo digitalmente podem ser encontradas no portal mantido pela Apple aos desenvolvedores.

Publicado em: https://macmagazine.uol.com.br/post/2012/03/06/seguranca-no-mundo-apple-aplicativos-assinados-digitalmente/

Conteúdos recentes

Aplicativos assinados digitalmente

por Renato Ribeiro Tempo para ler: 3 min
Share This