Existe uma maneira de restringir a instalação do meu programa a uma determinada fonte web no Windows?

1

Eu tenho um programa HelloWorld, assinado por mim e distribuído do site da minha empresa. Mas alguém o baixou do meu site, envolveu o programa SuperDuperHelloWorld e também adicionou alguns malwares ao instalador. Não quero que meu programa seja instalado corretamente, se não for baixado diretamente do site. Existe uma maneira de colocar essas restrições? - Talvez nem sempre, mas em alguns por cento dos casos, digamos 95%.

    
por abyss.7 27.06.2014 / 06:43

1 resposta

0

Eu tenho pensado a mesma coisa por um longo tempo, mas eu não fui capaz de elaborar mais sobre isso, porque eu não tenho todo o conhecimento necessário, mas isso é apenas uma idéia :

  1. Gerar pares de chaves aleatórias. Gere um hash da versão atual do seu binário. Armazene-os em um banco de dados local.
  2. Agrupe uma chave pública com o download, por exemplo enviá-lo via e-mail para o cliente.
  3. O cliente abre o aplicativo e é recebido por uma janela de verificação. O processo de verificação pede a chave public e gera um hash do binário.
  4. O cliente envia a chave pública e o hash do binário para seus servidores e você verifica a chave segredo e hash para essa versão binária no banco de dados.
  5. A resposta é criptografada usando a chave pública por meio de um algoritmo segredo , portanto, qualquer possível golpista não conseguiria interceptar a conexão e fazer com que seu aplicativo pensasse que ela foi corretamente verificado.
  6. Você pode armazenar a chave pública e a resposta codificada em um arquivo segredo para que você não tenha que repetir o processo validação toda vez . Você acabou de descriptografar a resposta usando o algoritmo segredo e a chave pública para saber se ela foi devidamente validada.

As desvantagens dessa abordagem:

  1. O cliente deve ter uma conexão com a internet, pelo menos uma vez.
  2. O programa do cliente não pôde ser verificado duas vezes (por exemplo, em computadores diferentes), mesmo que seja um cliente legítimo.
  3. Embora o armazenamento do arquivo e da resposta seja criptografado, isso não impedirá que nenhum invasor saiba sua localização e agrupe o par de validação com qualquer binário roubado para ignorar sua segurança.
  4. O processo de hashing do binário pode demorar um pouco se o binário for relativamente grande.

Isso não impedirá que qualquer scammer faça o download do seu aplicativo e o distribua novamente, mas pelo menos eles não poderão injetar nenhum malware nele, por causa do > hash -heck ... eles vão? na verdade eles poderiam; o processo de validação pode ser quebrado se o scammer conseguir modificar seu binário e adicionar instruções apropriadas para contornar a segurança do processo de validação. Algo como…

Alterando isso

if (validate(response) == true) {
    /* The app is validated */
}

Para isso:

if (!validate(response) == true || true) {
    /* 
    * The app would be validated no matter
    * if it was properly validated or not
    */
}

Assim, seu último recurso seria tornar as instruções do processo de validação obscuras o suficiente para não serem facilmente adivinhadas e modificadas e esperar que o scammer não seja inteligente o suficiente para encontrá-los e modificá-los.

    
por 27.06.2014 / 08:38