Brain Dump

sábado, 26 de abril de 2008

A Meta-Assinatura

Como eu já disse antes, eu sou uma criatura que se empolga fácil. Ainda não tinha feito nem duas semanas que eu e o Fábio tínhamos entrado na Poli, e nós já estávamos procurando iniciação científica pra fazer. Depois de alguma procura, achamos uma legal: o Routo Terada estava procurando alunos pra estudar Criptologia.

O nosso medo inicial era que o Routo não quisesse aceitar dois alunos de primeiro ano, mas isso foi mais simples que esperávamos: "Ah, eu posso passar uma tarefa simples pra vocês. O Schneier acabou de publicar um algoritmo novo chamado Blowfish, vocês tem seis meses pra quebrar". É claro que não conseguimos quebrar o Blowfish, mas aprendemos um bocado no processo :)

Assinaturas digitais, por exemplo. O Isaac Newton, quando queria provar que algum manuscrito era dele, podia simplesmente assiná-lo com uma pena; mas o Stephen Hawking não pode fazer isso! Pra ele, o ideal são as assinaturas digitais. Para assinar digitalmente, você precisa de algum tipo de problema que seja difícil de resolver, mas que seja fácil de checar se foi resolvido (como a fatoração de números, ou o problema da sacola).

Um exemplo simples de como isso funciona me veio à mente algum tempo atrás, enquanto eu lia um livro do Hofstadter (se você não conhece o Hofstadter, tem uma entrevista dele para a rede Globo disponível online). Suponha que eu fiz uma grande descoberta e quero divulgar isso para o mundo:

O Ricardo sabe onde está o Bin Laden.

Embora tenha meu nome ali, qualquer um pode alterar e trocar o nome, então não tem como garantir que fui eu que escrevi:

O Wilerson sabe onde está o Bin Laden.

O método que eu bolei, e que na falta de nome melhor eu chamo de Meta-Assinatura, consiste em adicionar informação auto-referente à sua sentença:

O Ricardo afirma que sabe onde esta o Bin Laden, nesta sentenca com dezessete letras a, vinte e sete letras e, seis letras i, sete letras o, quatro letras u e uma letra x.

Confira que a contagem de letras está certinha. Dessa maneira, o Wilerson não pode trocar o nome na frase, pois se ele trocar, a contagem de letras vai mudar. Assim, a frase com meta-assinatura garante quem é o autor. Nesse método, contar as letras é muito simples, mas consertar a frase para o número de letras bater, é bem difícil (quer dizer, só com seis letras e algum esforço, até dá pra consertar a frase, mas se você usar o alfabeto inteiro na sua contagem, aí fica realmente complexo).

Para criar a frase com meta-assinatura, você não pode tentar procurar a solução por força bruta, porque demora demais. Uma solução mais rápida é criar uma função que conte as letras da sentença e troque os números correspondentes, e depois cruzar os dedos e torcer pro ponto fixo dessa função ser um atrator. O script em python abaixo faz isso, tomando o cuidado de detectar loops para não ficar preso:

Meta-Assinatura em python

Eu ainda não consegui assinar uma sentença usando todas as letras do alfabeto (ie, gerando um pangram), porque esse método não garante convergência. Se você conseguir, me avise :)

Marcadores: , , ,

7 Comentários:

  • Oi Ricardo! Passei aqui para dar uma olhada no seu blog! Parabéns!
    Passa no meu tb...
    http://exercitapaciencia.blogspot.com

    Bjs!

    Por Blogger Koma, Às 27 de abril de 2008 12:35  

  • A solução é mais simples do que imaginamos.
    Basta encher o Wilerson de porrada que assim não teremos mais problemas com ele plagiando o material dos outros!

    Por Blogger Tornado, Às 27 de abril de 2008 14:28  

  • nooossa que interessante!!!! depois que lí o código Da Vinci, me apaixonei pelo tema....Mas acho que não tenho inteligência suficiente pra decifra-los....ou paciência....rsrsrsrsrsrs.....
    Os textos estão ótimos. Parabéns!!
    beijos.

    Por Blogger Dalva Gonçalves, Às 28 de abril de 2008 20:09  

  • Bem legal. Mas a meta-assinatura não pode ser realmente usada como assinatura digital, né? A idéia da assinatura digital é que é fácil para qualquer um confirmar que a assinatura é sua, mas extremamente difícil para qualquer um além de você forjar a sua assinatura. Assinar com a meta-assinatura é igualmente difícil para você ou qualquer outra pessoa. :)

    Por Blogger mauro_persano, Às 29 de abril de 2008 10:55  

  • A Meta-Assinatura é mais ilustrativa que útil :)

    Por Blogger ricbit, Às 29 de abril de 2008 11:08  

  • Interessante seu comentario sobre o nome do meu blog....

    Por Blogger Koma, Às 1 de maio de 2008 18:44  

  • Eu ia fazer o mesmo comentário que o Mauro.

    Mas o problema é interessante de qualquer forma, mesmo que não como assinatura.

    Gostei muito dos seus artigos.

    Abraço

    Por Blogger Andre, Às 4 de maio de 2008 14:59  

Postar um comentário



Links para esta postagem:

Criar um link

<< Início