OK, então você escreveu algo brilhante, a próxima grande coisa. Você está usando a abordagem moderna. Você leu – ou assistiu – nossa série sobre IU Fluent e talvez até aplicou algumas coisas visuais como neo skeuomorfismo que aprendemos na conferência Desktop First . Talvez você tenha aplicado alguns temas VCL ao seu aplicativo e integrado a capacidade de detectar o modo escuro / modo claro do Windows 10 em seu aplicativo Delphi? Tudo está indo bem … até que os usuários tentem usar seus aplicativos.
Você começa a receber reclamações de seus usuários de que eles não podem baixar seu aplicativo. Ou, quando eles finalmente conseguem lutar contra a paranóia do navegador da web moderno, seu aplicativo é bloqueado pelo Windows 10 ou, mais misteriosamente, simplesmente desaparece completamente em uma nuvem azul de fumaça de gênio da política de grupo corporativo.
Você não deu o último passo: assinar seu código para provar que seu aplicativo maravilhosamente criado veio de você, e somente você, e não foi infectado por um vírus de computador ou trojan cryptolocker.
No recente TCoffeeAndCode com tema de segurança , pretendíamos falar sobre assinatura de código, mas meio que nos distraímos com muitas outras coisas de segurança que surgiram. Para ser justo, dissemos que não tem script!
Table of Contents
O que é assinatura de código?
A assinatura de código é um processo manual que você pode fazer acontecer logo após ou no momento da construção final de seu aplicativo. Ele adiciona um pequeno recurso ao seu exe contendo uma assinatura digital. A assinatura identifica quem, pelo menos em teoria, escreveu o código e adiciona informações que fazem uma soma de verificação do arquivo exe do seu aplicativo. Essas informações – a assinatura do código – quando tomadas em conjunto, significam que qualquer usuário executando seus aplicativos pode ter certeza de que o arquivo exe não foi modificado desde que você o criou em seu computador ou servidor de compilação. Quaisquer alterações no exe, por exemplo, por um vírus, quebrarão a soma de verificação criptográfica para que os usuários possam saber que algo deu errado.
Entregar aplicativos por meio de um link da web exige bastante assinatura de código
A assinatura de código não apenas ajuda a identificar o desenvolvedor original, mas também desempenha um papel quando seus programas são baixados de um site ou mecanismo de entrega online semelhante. A maioria dos navegadores (provavelmente todos) irá avisá-lo sobre o download de exes de um site da Web, especialmente um que não use HTTPS. O Microsoft Edge e o Windows combinados vão um pouco além e gritarão ativamente com você se o exe não tiver uma assinatura digital (outra maneira de dizer que não é assinado por código).
Aplicativos não assinados parecem vírus de computador
Se seus usuários finalmente conseguirem pular através de todos os vários obstáculos e realmente fazer o download do exe em seu computador, alguns deles podem descobrir que o arquivo baixado desapareceu magicamente. Isso ocorre porque é bastante comum que redes corporativas apliquem uma regra que diz que os usuários podem executar apenas alguns aplicativos confiáveis. Nenhuma assinatura de código geralmente significa que seu aplicativo não é confiável. Alguns vão ainda mais longe, embora isso seja menos comum e insista que todos os aplicativos do usuário devem ser de 64 bits, especialmente os aplicativos do lado do servidor e serviços do Windows. Os administradores de rede corporativa e a equipe de ITSec podem estar um pouco sobrecarregados quando se trata de aplicar políticas e obrigar um grupo de usuários a se comportar, evitando que façam coisas óbvias, como streaming de torrents,abrir anexos questionáveis e executar malware acidentalmente.
Seu aplicativo não assinado por código? Parece o pior tipo de ladrão de senha de criptolocking para eles – e não, eles não querem colocar de lado seu magro extra de amêndoa com leite macachoolie com spirella extra para executá-lo para “dar uma olhada”, muito obrigado.
A assinatura de código é apenas para empresas de primeira linha?
A assinatura do código é OBRIGATÓRIA se você deseja obter uma receita com o seu código. Mas mesmo se você for um projeto de código-fonte aberto ou freeware, a assinatura de código ajuda seus usuários a se ajudarem.
Os dias felizes de simplesmente criar um exe, compactá-lo e colocá-lo em um servidor da web já se foram. Se é assim que você entrega seu software, odeio ser o portador de más notícias: você está desatualizado e é hora de se modernizar. Em breve, haverá um monte de mudanças na forma como o Windows opera e muitos dos aprimoramentos de segurança como UAC, HTTPS e proteção de diretório forçada vão acontecer unilateralmente e, na maioria dos casos, já aconteceram.
Das perguntas que me perguntam, a assinatura de código é provavelmente o tópico mais quente, então eu * sei * que há uma multidão de desenvolvedores que estão percebendo que a assinatura de código não é realmente uma atividade opcional.
Mais recursos sobre assinatura de código
Para ler mais sobre os prós e os contras da assinatura de código como assunto, experimente os seguintes recursos:
- Minha própria postagem de blog sobre assinatura de código, que detalha para descrever os vários tipos de assinatura de código e onde obter certificados de assinatura de código muito econômicos, juntamente com exemplos de telas: https://www.codedotshow.com/blog/delphi -10-3-rio-code-signature-provisioning-and-the-microsoft-app-store /
- O excelente artigo da Wikipedia contém uma boa visão de nível superior dos benefícios da assinatura de código: https://en.wikipedia.org/wiki/Code_signing
- Um artigo com mais detalhes sobre os benefícios da assinatura de código pode ser encontrado neste link: https://www.encryptionconsulting.com/code-signing-top-5-benefits/ e aqui https://www.globalsign.com / pt-br / blog / a-importância-da-assinatura-do-código-redux NOTA que ambos os links têm algo a vender, então tenha isso em mente, mas suas descrições e premissas são sólidas o suficiente.
Não desperdice seu trabalho duro para um guardião de segurança draconiano – é hora de modernizar e assinar por código seus aplicativos.