23.11.2014 Views

CRIPTOGRAFIA - FESP

CRIPTOGRAFIA - FESP

CRIPTOGRAFIA - FESP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

padrão da estatística. Quantas pessoas precisam estar numa sala para que a<br />

chance de uma delas fazer aniversário no mesmo dia que você seja maior do que<br />

50%? A resposta é 253. Agora, se a pergunta for "Quantas pessoas precisam<br />

estar numa sala para que a chance de duas delas comemorarem aniversário no<br />

mesmo dia seja maior do que 50%?", o resultado é surpreendente baixo. Com<br />

apenas 23 pessoas na sala, a chance de que duas façam aniversário no mesmo<br />

dia é maior do que 50%. É que, apesar do número baixo de pessoas, existem<br />

mais de 500 pares diferentes de pessoas na sala. Caso você tenha interesse em<br />

saber como os cálculos são efetuados, visite a seção de curiosidades da Confraria<br />

do Segredo.<br />

Achar alguém com um aniversário específico é análogo ao primeiro ataque;<br />

achar duas pessoas com o mesmo aniversário randômico é análogo a este<br />

segundo ataque, também conhecido como ataque do aniversário.<br />

Imagine que determinada função hash siga todas as propriedades citadas acima<br />

e que a melhor forma de atacá-la seja através da força bruta. Se esta função<br />

criar um resultado hash de m bits, encontrar uma mensagem que resulte no hash<br />

procurado requer 2 m mensagens randômicas. Agora, encontrar duas mensagens<br />

que produzam o mesmo hash requer apenas 2 m/2 mensagens randômicas. Um<br />

computador que seja capaz de processar um milhão de mensagens por segundo<br />

levaria 600.000 anos para encontrar uma segunda mensagem para determinado<br />

hash de 64 bits. A mesma máquina pode achar um par de mensagens que<br />

resultam num hash de 64 bits igual em cerca de uma hora!<br />

Resta saber como um ataque do aniversário pode ser usado para fins escusos.<br />

Imagine que um safado prepare dois contratos, um favorável para o bonzinho e<br />

outro no qual o bonzinho transfere todos os seus bens para o safado. De posse<br />

destes dois documentos, o safado faz várias pequenas alterações nos dois<br />

documentos: troca espaço por espaço-backspace-espaço, insere um ou dois<br />

espaços antes das quebras de linha, etc. Introduzindo (ou não) estas pequenas<br />

alterações em cada uma de 32 linhas de texto, o safado consegue gerar 2 32<br />

documentos diferentes. Depois disto, o safado compara os hashes dos<br />

documentos até encontrar um par, tarefa perfeitamente possível de ser realizada<br />

se o resultado hash tiver apenas 64 bits. Encontrando estes dois documentos, um<br />

do contrato bom e outro do contrato alterado, o safado pede para o bonzinho<br />

assinar o documento bom usando um protocolo no qual ele apenas assina o valor<br />

hash. Quando lhe convier, o safado troca os contratos e não há cristão que possa<br />

provar que não seja o documento original assinado pelo bonzinho<br />

Este cenário não tem nada de surreal, é perfeitamente possível de ocorrer. E<br />

tudo por conta do ataque do aniversário aplicado a funções hash de 64 bits. Por<br />

este motivo, a maioria das funções produzem hashes de pelo menos 128 bits. Isto<br />

força qualquer atacante a utilizar, no mínimo, 2 64 documentos randômicos para<br />

encontrar dois cujos hashes tenham o mesmo valor. Mas como é possível obter<br />

hashes com mais de 64 bits? Dentre os métodos propostos, o seguinte é bastante<br />

eficiente:<br />

1. Gerar o valor hash de uma mensagem, usando uma função hash de via<br />

única.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!