Nunca foi tão difícil ter certeza absoluta de que qualquer mensagem enviada pode ser transmitida ou recebida em absoluto sigilo..

Este santo graal da criptografia há muito tempo frustra os especialistas em segurança, e a maioria das pessoas está disposta a usar programas de criptografia como o gpg, que, embora teoricamente frágil, resistirá a todas as tentativas de cracking depois que você estiver empurrando as margaridas.

E se, no entanto, houvesse uma maneira de ter certeza de que seus e-mails pessoais, fotos de seu gatinho de estimação, backups de suas declarações de imposto de renda na última década, e assim por diante, estavam seguros, mesmo que interceptados? Digite o One Time Pad.

  • Como se manter seguro online

O notório OTP

Em termos mais simples, um One Time Pad é uma série de números aleatórios com os quais você concorda com alguém com quem deseja se comunicar, geralmente se encontrando pessoalmente e trocando pads..

Ao enviar uma mensagem, você primeiro precisa convertê-la em números e, em seguida, adicionar cada um desses números aos números no bloco. Uma vez que o destinatário receba a mensagem, eles podem trabalhar para trás usando sua cópia do bloco, deduzindo os números para recuperar sua mensagem original..

Uma implementação do OTP que codifica a mensagem “O falcão voou.”

Desde que os números sejam realmente aleatórios, ninguém mais vê o bloco, e o mesmo texto não é codificado duas vezes com o mesmo bloco, então até mesmo o supercomputador mais rápido do mundo não conseguiu decodificar a mensagem..

A força da criptografia está na aleatoriedade dos números dos pads. Sem conhecê-los, qualquer um que interceptasse uma mensagem poderia ver a palavra 'LINUX' criptografada como 'OSYAJ', mas não teria como saber que não há outra palavra de cinco letras, como 'CHILE'.

O One Time Pad foi chutando em algum formato ou formulário desde a década de 1880, mas não foi até 1917 que Gilbert Vernam et al formalmente patenteou uma máquina para automatizar o processo..

Neste caso foram usados ​​dois rolos de fita perfurada, um com a mensagem original e outro com o bloco de números aleatórios.

Os agentes da KGB nos EUA foram rápidos em explorar isso durante a Guerra Fria, colocando pequenas almofadas dentro de níquel oco, nozes falsas e qualquer número de esconderijos covardes.

No século 21, computadores como o Raspberry Pi se prestam bem para serem transportados com facilidade e são perfeitos para gerar e processar One Time Pads. Mas, para entender o porquê, é necessário entender as armadilhas do One Time Pad.

  • Ver mais projetos de Raspberry Pi
OTP vai térmica

Para prosseguir, você precisará ter sua Impressora Adafruit configurada e funcionando. Felizmente o site tem um excelente guia para isso.

Primeiro, instale as ferramentas de gravação conforme indicado na Etapa 1 do passo a passo na próxima página. Você também precisará editar o / etc / default / rng-tools em seu editor de texto favorito. Remova o # no início da linha HRNGDEVICE = / dev / hwrng. Salvar e sair.

Use sudo /etc/init.d/rng-tools restart para ter certeza de que o Raspberry Pi está usando apenas o hardware RNG agora.

Em seguida, baixe o software otp-gen:

$ git clone https://github.com/iworkinpixels/otp-gen.git

Nesta fase, se desejar, você pode ir para a pasta opt-gen / e executar um pad de amostra para ver como é:

$ cd otp-gen

$ sudo ./otp.py

$ nano otp.txt

Em seguida, precisamos garantir que o software seja iniciado automaticamente quando a máquina for iniciada:

$ sudo nano /etc/rc.local

Role até o final deste arquivo e insira as três linhas abaixo, acima das palavras 'exit 0':

$ cd / home / pi / otp-gen

$ ./otp.sh

$ python ./otp.py

Se você tiver baixado a pasta otp-gen para qualquer outro lugar além de / home / pi / então altere a primeira linha de acordo.

Use Ctrl + X para sair do editor de texto e pressione Y para salvar as alterações.

Em seguida, use sudo reboot para reiniciar o seu Raspberry Pi. A impressora deve imprimir uma mensagem dizendo que está conectada à rede junto com seu endereço IP e, em seguida, pausar.

Basta pressionar o botão para gerar seu próprio bloco de tempo. Repita quantas vezes quiser.

Entropia não é o que costumava ser ...

Bruce Schneier uma vez descreveu o One Time Pad como “teoricamente seguro, mas… não seguro em um sentido prático.”

Isso reflete o fato de que houve ocasiões em que as OTPs foram quebradas na prática, apesar de sua segurança teórica. Na década de 1940, por exemplo, o programa de contra-inteligência dos EUA SIGINT, Venona, foi capaz de decifrar uma série de mensagens OTP soviéticas simplesmente porque algumas pastilhas foram reutilizadas..

Este pecado cripto-cardinal foi cometido porque os soviéticos simplesmente não podiam gerar almofadas rápidas o suficiente para as milhares de mensagens diárias enviadas durante a guerra..

Uma fenda similar é encontrada pelos decifradores de códigos alemães no Cryptonomicon de Neal Stephenson. Os britânicos empregam uma jangada de senhoras idosas com pequenas máquinas de bingo para desenhar bolas numeradas para gerar almofadas.

Infelizmente, os velhos queridos nem sempre obedecem às melhores práticas - eles não conseguem desviar o olhar cada vez que desenham uma bola conforme as instruções, o que significa que eles selecionam subconscientemente números previsíveis..

Avançando para o século 21 e a questão não melhorou muito. Livros inteiros foram dedicados a esse assunto, mas é suficiente dizer que os computadores geralmente não são muito bons em gerar aleatoriedade real..

Normalmente, quando é necessário que um site ou programa peça para você mexer o mouse para fornecer um chamado “fonte de ruído” trabalhar de.

Principalmente, entretanto, quando um computador requer maiores quantidades de aleatoriedade, ele forma uma cadeia de dados pseudo-aleatórios do seu conjunto de entropia, que, embora seja ideal para determinar onde o próximo bloco cairá quando você joga o Tetris, é menos que perfeito quando se trata de segurança.

Felizmente, um dos recursos menos conhecidos do Raspberry Pi é que ele tem seu próprio gerador de números aleatórios de hardware integrado, que em combinação com o conjunto de ferramentas de gravação pode gerar exatamente o tipo de aleatoriedade de alta qualidade necessária para um OTP..

O segundo obstáculo enfrentado por aqueles que usam o OTP tem a ver com geração e distribuição de chaves. Os soviéticos eram incapazes de acompanhar as demandas da guerra, e na vida real as máquinas de bingo das velhinhas da Grã-Bretanha provavelmente acabariam fumando com o número de vezes que precisariam ser reviradas..

Uma maneira bastante dramática de ter certos dados foi apagada. Por uma questão de segurança, talvez seja melhor considerar ferramentas de apagamento seguro antes de pegar um maçarico

Felizmente, o hardware RNG incorporado ao Raspberry Pi pode gerar grandes quantidades de dados em um curto período de tempo. Por exemplo, um bloco com 10.000 conjuntos de números aleatórios de cinco dígitos pode ser gerado em segundos, ativando o RNG de hardware (consulte a etapa 1 do nosso guia na próxima página) e, em seguida, digitando:

$ sudo base64 / dev / hwrng | tr-dc '0-9' | dobrar -sw 5 | cabeça -c 10000> bobtoaliceotp.txt
Max out seu MAC

É melhor antes de enviar qualquer informação privada com um OTP para enviar primeiro uma mensagem de resposta de desafio. Tecnicamente, você poderia concordar com duas palavras de código para usar com o seu destinatário: pode-se indicar que é você e você é capaz de falar livremente - por exemplo, “Everest” - e outro poderia revelar que você está falando sob coação - por exemplo, “Pardal”.

Isso significa, entretanto, que o mesmo texto está sendo criptografado a cada vez, tornando as mensagens mais fáceis de decifrar..

Um sistema melhor é escolher uma lista de palavras ou frases pré-arranjadas. Uma maneira de fazer isso seria concordar com um livro - diretórios e almanaques são tipos perfeitos de livro para isso - e na sua “desafio” mensagem você poderia enviar uma página e linha arbitrária.

Por exemplo, você pode concordar em usar a edição de 1992 do Almanack do Wisden Cricketer. Bob pode mandar uma mensagem para Alice dizendo, “613-1.” Alice pode responder com a primeira linha da página 613, que é: “Worcestershire foi o único país a conquistar dois troféus em 1991.”

Ela pode adicionar um desafio próprio à mensagem, por exemplo, pedindo a página 582, linha 4.

Se, claro, Alice responder com outra coisa senão as palavras corretas, Bob saberá que não é ela ou está sob coação, e o mesmo se aplica à resposta dele a ela..

Você pode aumentar ainda mais a segurança desse sistema concordando previamente que a resposta ao desafio não deve ser a linha solicitada na mensagem, mas a (digamos) três linhas depois, ou talvez a mesma linha na página seguinte..

O arquivo de texto resultante pode então ser impresso, por exemplo, pela impressora térmica da Adafruit. Esta impressora tem a vantagem de, ao contrário da maioria das impressoras a laser, não gravar o número de série, marca ou modelo em cada folha impressa (neste site, consulte este site)..

Também suporta até 15m de papel, o que será suficiente para gerar mensagens longas. Usando isto em combinação com o excelente programa otp-gen, você pode imprimir seus próprios pads automaticamente com o toque de um botão também (veja a caixa 'OTP vai Térmico' nesta página).

Uma vez que as resmas de papel são impressas e guardadas com segurança, vem em seguida a questão de distribuir fisicamente as almofadas.

Esta é sem dúvida a principal razão pela qual o OTP não tem sido muito difundido. Há rumores de que o telefone vermelho entre Washington e Moscou, por exemplo, é garantido por um OTP, principalmente porque as duas Superpotências são ricas e melodramáticas o suficiente para ter homens com óculos escuros para se algemarem a pastas e trocar pads em intervalos regulares..

É claro que se você tiver blocos de papel impressos, é possível enviá-los para o destinatário, mas, em seguida, o seu OTP não seria mais seguro do que uma carta normal, pois pode ter sido interceptado e copiado ao longo do caminho. O mesmo se aplica ao uso de programas de criptografia regulares como o GnuPG.

A única maneira de ter certeza de que seu pad não pode ser interceptado é entregá-lo pessoalmente. Mais uma vez, o humilde Raspberry Pi vem à tona por ser extremamente pequeno e fácil de transportar. Ao conhecer a pessoa com quem você deseja trocar mensagens, você pode dar a eles uma cópia do cartão MicroSD do seu Raspberry Pi ou do próprio Raspberry Pi..

Para garantir a segurança perfeita de suas mensagens, é necessário excluir os pads que foram usados ​​anteriormente.

Se você imprimiu o seu, um pouco de rasgo e um isqueiro Zippo provavelmente será útil aqui. (Outros isqueiros estão disponíveis.)

Caso contrário, executar o comando shred no pad que você acabou de usar deve ser suficiente para impedir a recuperação. Ambos os cartões SD e Raspberry Pis são baratos também, então se você realmente sentir que tem que destruí-los uma vez que os blocos mudaram de mãos, você pode fazer isso também.

O baixo custo de um PI de framboesa também é uma ótima resposta para outra crítica comum, que é que um OTP é geralmente muito difícil de escalar além de duas pessoas trocando mensagens..

Se você decidir formar uma sociedade secreta, pode ser melhor designar uma pessoa para conhecer cada membro e trocar as almofadas regularmente. Essa pessoa pode, então, sentar-se no centro da web e atuar como uma câmara de compensação de mensagens, encaminhando-as entre os membros, conforme necessário..

Mesmo usando um Raspberry Pi, no entanto, ainda é possível interceptar pads, e a comunicação pode ser incômoda. É por isso que é bom empregar algumas práticas recomendadas para o seu OTP.