Respostas
- SRP - Senha remota segura - Baseia-se no Diffie-Hellman. A ideia é que você possa fazer uma verificação de senha mútua sem nunca transferir a senha ou qualquer informação que possa ser usada para derivá-la. Embora seja seguro, você ainda deve usar hash e alterar suas senhas, pois o servidor nunca deve armazená-las em texto sem formatação .
- A vantagem do SRP é que, uma vez concluído, também fornece uma chave de criptografia negociada mutuamente que um invasor não seria capaz de deduzir, considerando os dados transferidos. Isso significa que você pode usar um algoritmo de criptografia simétrica (como o AES) assim que o usuário for autenticado.
- Supondo que você esteja usando o UDP com sua própria implementação confiável / ordenada (orientada à conexão): criptografe toda a carga de reprodução do UDP - incluindo seu 'número de sequência de pacotes'. Se o seu sistema for projetado corretamente, ele rejeitará automaticamente as mensagens reproduzidas e um invasor não poderá alterar o número da sequência de pacotes porque está criptografado (portanto, é possível uma repetição - mas seria automaticamente ignorada).
Pensamentos
Sua autenticação deve ser segura? Absolutamente. Não faça concessões em termos de segurança quando uma senha estiver em questão. Portanto, você definitivamente deveria considerar a primeira bala na minha resposta.
Seus dados devem estar seguros? Somente se for uma compra / micro transação no jogo - e por que não usar apenas algo testado e verdadeiro como HTTPS. Criptografar o tráfego do jogo provavelmente não é uma solução viável pelos seguintes motivos:
- É paranóia completa.
- Isso aumentará o tempo de CPU em seu servidor, a menos que você possa comprar módulos de criptografia de hardware (caros).
- Não importa quanta segurança você fornece para seus dados por cabo - alguém pode seqüestrar o processo do cliente e interceptar mensagens no momento antes de serem criptografadas e enviadas. Essa não é apenas uma possibilidade, mas é infinitamente mais possível, pois é muito mais fácil injetar código em comparação aos pacotes de interceptação. Se você está fazendo isso para a prevenção de fraudes, está perdendo completamente e totalmente seu tempo.
- Infelizmente, em termos de segurança de senha, não há nada que você possa razoavelmente fazer sobre um sistema seqüestrado; o cliente se tornou hostil. Os dongles Wizz da Blizzards foram projetados para lidar com isso - mas não tenho certeza de quão seguro é (especialmente se você o deixar conectado).
Por favor, se você estiver criptografando para evitar fraudes, abandone-o. Você vai ser breve - eu lhe dei as informações caso você não seja. Lembre-se de que você pode criptografar seletivamente os pacotes pelo primeiro byte do pacote e indicar se o restante está criptografado: embora, mais uma vez, eu continuaria com o HTTPS se precisar fazer coisas como transações com cartão de crédito: elas são extremamente raras e O HTTPS é projetado por especialistas - diferente de algo que você ou eu projetou.
Tudo isso dito, a Blizzard realmente criptografa seu tráfego WoW. A principal razão pela qual isso ocorreu foi porque alguém, provavelmente amador, decidiu que tentaria usar um algoritmo de criptografia caseiro; isso deu muito certo . Mesmo se você usar algoritmos padrão do setor, há uma boa chance de alguém fazer engenharia reversa do seu código e simular o código - depois que o cliente digita sua senha, não há como dizer que um sistema não suportado está conectado.