16/01/2014 15h38 - Atualizado em 16/01/2014 15h38

Bitcoin: encriptação dos dados

B. Piropo
por
Para o TechTudo

Bem, hoje, afinal, como prometido já há duas semanas, vamos discutir – ainda que superficialmente – as técnicas de encriptação de mensagens e dados.

Começando do princípio como convém: o que é “encriptar” o conteúdo de uma mensagem?

A encriptação, ou criptografia, é um meio usado para garantir a segurança das comunicações de modo que, mesmo que interceptadas, o conteúdo da mensagem não seja conhecido por terceiros. Serve para manter a confiabilidade e integridade dos dados, autenticação de conteúdos e garantia de aceitação (“non repudiation”). É empregada amplamente nos cartões usados em “caixas eletrônicos”, senhas empregadas em sistemas de computação e comércio eletrônico.

Em sua forma mais simples (criptografia simétrica) a ideia básica consiste em converter uma informação em algo que não faça qualquer sentido, usando um alvitre conhecido tanto pelo remetente quanto pelo destinatário (chave) de modo que este último possa reconstituir a mensagem original, usando a mesma chave. É coisa antiga. A forma mais simples foi empregada por Júlio César para se comunicar com suas tropas usando mensagens escritas portadas por mensageiros.

A “chave” (meio de cifrar e decifrar a mensagem) consistia simplesmente em deslocar de cada letra três posições no alfabeto. Assim, no lugar do “A” se escrevia “D”, no lugar do “F” entrava o “I” e assim sucessivamente. A palavra “CUIDADO” transformava-se em “FXLGDGR”. Como o destinatário também conhecia a chave, para ele era fácil decifrar a mensagem. E, modernamente, para qualquer pessoa. Quer ver? Consta que Arthur Clarke usou algo parecido para batizar o supercomputador HAL de sua série “Uma odisseia no espaço” referindo-se a uma corporação. Decifre-o.

Este método de encriptação denomina-se de “chave simétrica” porque a mesma chave é usada tanto pelo remetente quanto pelo destinatário.

GPC20140116_1Figura 1: analogia com cadeado (Foto: Reprodução/Internet)

Vamos explicá-lo melhor usando uma analogia que emprega cadeados como o mostrado na Figura 1 e que, na Figura 2, aparece na tampa de uma caixa metálica.

Imagine que este cadeado tenha um segredo que consiste em determinada combinação de números das pequenas peças giratórias situadas na face de uma peça externa, também giratória (repare que, na figura, estes números mostram a combinação “0 – 0 – 0”).

Quando ajustados na posição correspondente ao segredo, a peça externa fica firmemente conectada ao pino, que se vê na figura por detrás dela, de tal forma que o pino se move ao girar a peça externa tanto no sentido horário quanto no anti-horário. Mas quando os números estão em qualquer outra posição, a peça externa só move o pino ao ser girada no sentido horário, de forma semelhante a uma catraca de bicicleta. O pino se situa no interior da caixa, próximo à borda da tampa.

Para trancar a caixa, basta fechar a tampa e, com os números em qualquer posição, girar a peça externa no sentido horário. Isto faz o pino interno girar com ela até se encaixar em uma fenda na borda interna da caixa, travando a tampa na posição fechada. Quem tentar abrir a caixa girando a peça externa no sentido oposto, verá que ela se move livremente, sem afetar a posição do pino.

Para abrir a caixa é preciso ajustar o segredo na combinação correta, o que permite que a peça externa mova o pino em ambos os sentidos. Então, basta movê-lo para fora da fenda girando a parte externa no sentido anti-horário, o que destrava a tampa (curioso: o procedimento acima é muito mais simples de executar do que de descrever).

A criptografia simples, ou simétrica, funciona como se duas pessoas, João e Maria, usassem uma caixa fechada com um cadeado “de segredo”, como a mostrada do lado esquerdo da Figura 2 para trocar mensagens. E, antes da primeira troca, João informasse Maria qual o segredo do cadeado. Para enviar uma mensagem à Maria, João a escreveria e introduziria na caixa que seria entregue a um portador com a tampa travada pelo cadeado. Maria, que também conhece o segredo, abriria o cadeado, leria a mensagem, escreveria a resposta, a fecharia na caixa com o segredo e a devolveria ao portador para que a entregasse a João. Um método funcional, mas com uma fragilidade: qualquer pessoa que saiba o segredo pode interceptar o portador, abrir a caixa e ler a mensagem.

GPC20140116_2Figura 2: tampa de uma caixa metálica com um cadeado de segredo (à esquerda) e com dois cadeados (à direita) (Foto: Reprodução/Internet)

Para contornar esta vulnerabilidade foi concebida a criptografia de chave assimétrica. Usando a mesma analogia dos cadeados, cada missivista possui uma caixa com dois cadeados (um “público”, outro “privado”) como a mostrada do lado direito da Figura 2. Do cadeado “privado”, somente seu dono conhece o segredo (chave privada). Já o segredo do cadeado “público”, além de ser conhecido pelo dono da caixa, é distribuído a todos os seus correspondentes (chave pública).

Quando quiser receber uma mensagem “segura” de Maria, João lhe envia sua (de João) caixa vazia com a tampa travada apenas pelo cadeado de chave pública. O outro, de chave privada, tem os números ajustados em uma combinação aleatória, mas com o pino em uma posição que não trava a tampa. Maria, que conhece o segredo do único cadeado que está mantendo a tampa travada (o de chave pública), abre a caixa, insere nela a mensagem, fecha a tampa e a trava com ambos os pinos (basta girar cada peça externa no sentido horário até que seu pino trave a tampa; não esqueça que no sentido horário a peça externa move o pino independentemente de estar ou não com a combinação correta). E devolve a caixa com a mensagem a João, via portador. Como João – e apenas João – conhece o segredo de ambos os cadeados, pode abrir a caixa e ler a mensagem certo que não foi violada.

Perceba as vantagens: quando João recebe a caixa com a mensagem e os dois cadeados travados, tem certeza que a mensagem proveio de Maria (ou de qualquer outro de seus correspondentes que conheça a chave pública; mas como a caixa foi enviada a Maria, o mais provável é que tenha sido devolvida por ela). Isto porque Maria teve que abrir a caixa quando a recebeu vazia usando a chave pública, que somente os correspondentes de João possuem. Mais que isso, João pode ter certeza que a mensagem não foi violada, pois mesmo que tenha sido interceptada por alguém que conheça a chave pública, o outro cadeado não pode ser aberto porque somente João conhece a chave privada. Ou seja: para abrir a caixa é preciso conhecer os dois segredos, e um deles somente João conhece. Como os dois segredos são diferentes, esta técnica é denominada “encriptação por chave assimétrica”.

É claro que com o advento dos computadores tanto a encriptação quanto as técnicas para “quebrar” as cifras, ou decriptação, adquiriram novas dimensões (na verdade, a primeira máquina que pode ser classificada como “computador digital”, o “Colossus”, concebido por uma equipe da qual fazia parte um dos maiores gênios da tecnologia da informação, Alan Turing, foi desenvolvido especificamente para decifrar as mensagens encriptadas trocadas via rádio pelas força alemãs durante a segunda guerra mundial). Técnicas simples como a de Cesar, baseadas na substituição de caracteres, cedo foram abandonadas por serem muito fáceis de “quebrar”.

Hoje em dia a coisa é diferente. Grupos de cientistas especialistas em encriptação desenvolveram poderosos algoritmos capazes de cifrar mensagens usando uma “chave” numérica. Os algoritmos são extraordinariamente complexos e fazem parte de programas de computador cuja função é aplicá-los. Há diversos. Dentre eles merecem menção o DES (Data Encription Standard, desenvolvido pela IBM e tão seguro que se tornou o padrão usado pelo Governo dos EUA, o PGP (“Pretty Good Privacy”), um sistema simples mas seguro disponível para o público em geral, o RSA, cujo nome deriva das iniciais de seus desenvolvedores, R. Rivest, A. Shamir e L. Adleman e o SHA (“Secure Hash Algorithm”) que nos interessa particularmente por ser o empregado para garantir a segurança dos bitcoins. A vantagem deste último sobre os demais, além de seu extremo grau de segurança, é que pode ser usado também em sistemas de “assinatura digital” que dispensam a “autoridade autentificadora”, podendo ser adotado em um sistema de encriptação par-a-par (“peer-to-peer”) como veremos adiante.

Como é que estes esquemas funcionam?

Bem, não dá para entrar em detalhes técnicos mas que estiver interessado encontrará abundante material na Internet. Porém é possível dar uma ideia bem geral.

Considere o algoritmo como um método (um conjunto de procedimentos passo-a-passo) de transformar o conteúdo da mensagem em algo absolutamente ininteligível. Ele pode ser conhecido publicamente sem risco de segurança porque cada um desses passos depende da combinação dos dados da mensagem com a “chave”, um conjunto de caracteres ou símbolos que pode ser simples como uma senha ou complexo como uma longa cadeia de sinais absolutamente desprovida de sentido mas que torna impossível decifrar a mensagem por quem não conheça sua chave.

O algoritmo é executado por um programa. Este programa, que “conhece” o algoritmo, recebe como dados de entrada a mensagem original e a chave (ou as chaves, no caso da criptografia assimétrica), fornecidas pelo usuário. Em seguida esta chave – ou estas chaves – e a mensagem são mescladas de acordo com as regras estabelecidas pelo algoritmo. O resultado é um arquivo cujo aspecto é o de um conjunto de bytes totalmente desprovido de sentido, mas que contém a mensagem devidamente encriptada e que só pode ser decifrada por quem conheça a chave – ou as chaves – usadas para cifrá-la.

Quando o destinatário recebe este arquivo, entra com ele no mesmo programa de encriptação, juntamente com a chave (ou com as duas chaves, no caso de criptografia assimétrica). O programa, então, reverte o procedimento. A saída é a mensagem decifrada.

Agora que já conhecemos os fundamentos da encriptação, já podemos ver como ela é usada para garantir a segurança das transações e de todo o sistema bitcoin.

A partir da próxima coluna, naturalmente.

E, enquanto esperamos, sugiro um pouco de meditação sobre um fato que me parece curioso, se não paradoxal. Depois de toda esta conversa sobre criptografia assimétrica, cuja segurança é garantida pelo fato da chave privada ser conhecida apenas por um dos missivistas, examine novamente a Figura 1 da coluna anterior e note que a carteira bitcoin contém tanto a chave pública quanto a privada. Isso não lhe parece estranho? Pense a respeito e veja se consegue uma explicação para este aparente paradoxo.

E até a próxima semana.

B. Piropo


Seja o primeiro a comentar

Os comentários são de responsabilidade exclusiva de seus autores e não representam a opinião deste site. Se achar algo que viole os termos de uso, denuncie. Leia as perguntas mais frequentes para saber o que é impróprio ou ilegal.

recentes

populares

  • Maria Souza
    2014-01-17T22:02:38

    Como sempre os artigos do Techtudo deixam muito a desejar.

  • Samuel Prates
    2014-01-17T08:32:19  

    Boa questão. Segurança p/ quem? Dinheiro de quem? Acesso a quem?

    recentes

    populares

    • Samuel Prates
      2014-01-17T08:32:19  

      Esta é a terceira coluna de uma série. A resposta à sua pergunta pode ser facilmente obtida nas duas primeiras.