Pergunta

Cenário:

A publicamente disponíveis Serviço Web que eu tenho total controle sobre. Mas eu só quero que este aplicativo de desktop específico (meu aplicativo publicado) para ter acesso ao serviço Web. Eu poderia armazenar uma senha secreta no cliente desktop, mas isso seria fácil de crack.

Existe alguma aplicação conhecido que reforça esta? PKI, chaves assimétricos?

Foi útil?

Solução

Se o público terá acesso a cópias deste desktop App, qualquer bom reverser será capaz de quebrá-la e "imitar" as suas transações com o servidor. Ele doens't importa o quão seguro é o seu criptografia, tudo o que você aplicativo precisa para criptografar dados / descriptografar está incluído nos binários, então o cracker precisa apenas dig it out of it.

O objetivo da criptografia é proteger os dados enquanto ele está sendo transferido, de hackers "meio-homem", mas se você tem acesso a qualquer um dos pares, você pode facilmente quebrá-la.

O seu servidor nunca deve confiar no que vem do lado do cliente.

[editar retomar]

Apesar de você não pode garantir 100% de um suposto cliente para o servidor é ou não é a sua App ou algum "emulador" feita por thirdies, pode complicar as coisas para eles. É uma prática comum no jogo anti-fraudes para, às vezes, aleatoriamente, fazer o cliente App uma pergunta capciosa como "o que é o hash do seu main.exe a partir de offset A para compensar B?" ou "a partir de agora de pacotes tipo 0x07 swaps com tipo de pacote 0x5F". Uma vez que um falso é detectado, o servidor entra em um "modo de bobo", atuar malfunctional, e lista negra sua conta / IP para este modo por várias horas para que eles não podem ter certeza de que seu programa está fazendo errado.

Se você detectar alguém está construindo um emulador, fazê-los começar tudo de novo: acamadas o tipo de pacote mesas, mesas de criptografia, alterar alguns formatos de pacotes e forçar seus clientes a atualização. Você não verá biscoitos incomodando há algum tempo ... LOL

Outras dicas

WS-Security prevê criptografia X509.

Parte dessa aplicação inclui a possibilidade de apenas dando clientes específicos a chave pública gerada. Dessa forma, somente os vossos clientes selecionados podem se conectar ao serviço.

A maneira mais fácil é a segurança de mensagens usando certificados de cliente e servidor. A melhor maneira é para importar os certificados de cliente em suas máquinas do servidor e código rígido o cert impressão digital do cliente no arquivo app.config. A outra forma é a negociação de certificados que eu não tenha experimentado antes.

Se você estiver usando o IIS para hospedar o serviço, em seguida, certificados de cliente usando SSL é outra opção.

link MSDN on WCF segurança .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top