nunojob:~ dscape/08$ echo The Black Sheep

Na criptografia clássica o One Time Pad é o mais famoso algoritmo de encriptação simétrica. O principio é simples. Um simples XOR entre a chave e o texto que quer deseja encriptar, sendo que a chave deve ser do mesmo tamanho que o texto e aleatória. Não compreenderam? Passo a explicar com uma história ilustrativa:

Imaginemos que a Alice convidou o Manel – o Bob foi fazer séries televisivas para crianças sobre construção civil – para sair mas assume que a Eva – provavelmente a ex-namorada – recebe todas as mensagens que são enviadas pelo Manel (mania da perseguição ou principio de Kerckhoff , eis a questão.). Então quando o convidou para sair disse ao Manel para usar como chave um simples ‘1’ e para responder ‘0’ caso não tivesse disponibilidade e ‘1’ caso tivesse.

O Manel quer e responde sim e supõe-se que a Eva viu a mensagem resultante – 0. Como a chave foi gerada aleatoriamente pela Alice e é partilhada apenas pelos dois a Eva apenas sabe que existe a probabilidade de 50% de ele ter aceite, e outros 50% de ele ter recusado. Mas bem isto já ela sabia sem ter que recorrer a métodos de cryptanalysis.  E mesmo se as probabilidade forem diferentes a analise vai sempre mostrar apenas aquilo que já se sabia. A probabilidade de cada digito acontecer.

Esta conclusão é generalizável a um qualquer número de bits, como foi provado por Claude Shannon.

Parece perfeito mas é impraticavel. Como é obvio é preciso de uma chave do tamanho do texto que precisamos de enviar, todas as vezes. E essa chave tem que ser do conhecimento dos dois interlocutores. Se quiserem saber o que aconteceu depois para resolver o assunto vão ter que aprender muita criptografia pelo meio. Mas não é isto que me levou a escrever este artigo.

O que me levou a escrever este artigo foi uma pergunta – de um exame antigo de criptografia – na qual se perguntava como era possível que, num banco que conseguia usar este método (apesar de ser impossível, mas ok!), tivesse havido uma transacção na qual teria sido depositada 500 euros em vez de 100 que tinham sido ordenados pelo titular da conta. Teria forçosamente que existir um man-in-the-middle mas como podia ele romper este algoritmo.

Apesar de não ter a certeza penso que a resposta seria: Ou o bandido tem a chave ou então ele sabe onde está o ‘1’, fez XOR com um dos 256 dígitos disponíveis e teve a sorte do input ser aceite pela entidade bancária como 500 euros. Por outras palavras o OTP protege a confidencialidade mas não garante a preservação do seu conteúdo (acho que normalmente se refere a isto como integridade dos dados :|).

Alguma ideia que não estas?

Comments on: "Introducação a Criptografia: One Time Pad" (3)

  1. Olhá lá… em português o termo correcto não é cifração? Pelo menos foi assim que aprendi na faculdade!

  2. olá nuno.

    parece-me (embora sem certezas) que a resposta a essa pergunta é: o OTP não promove a difusão da informação do texto-limpo pelo criptograma. O que poderá ter acontecido é que o intruso conhecia a estrutura do documento “transferência”. Assim, sabia precisamente quais os bits que podia alterar no criptograma (os bits respectivos à quantia)

    um abraço e até breve!

  3. @ramigs: então é exactamente o que pensei. Porreiro :D Já agora fui ao adium ver se te encontrava para ver como estas mas parece k nao tas por lá. Mais uma noitada? ;)

    @JM: Não faço a mínima ideia e, muito provavelmente, isso vai-se notar na minha nota de criptografia.

Leave a comment