Base64 != Criptografia

Jovem Sysadmin vou te contar um segredo que será muito útil para a sua carreira, Base64 não é algoritmo de criptografia, vou repetir, Base64 não é algoritmo de criptografia. Lembre-se disso, Base64 não é algoritmo de criptografia. Base64 é um modelo de codificação de texto para binário.

Estava lendo no Estadão sobre o mais recente vazamento de dados de um sistema de pacientes do SUS, dados de pacientes com COVID-19 curados ou não foram expostos. Na reportagem fala que o sistema utiliza encriptação baseado em Base64!!! Não pode ser, não pode ser!! Pode sim, infelizmente pode sim!

Image: Matéria do Estadão sobre roubo de dados por Estadão

Aqui vão três razões para não considerar o Base64 como mecanismo de encriptação ou segurança de dados para qualquer sistema, veja:

Razão 1

Existe uma tabela de referência do mapeamento entre as letras maiúsculas, minúsculas e números, para o seu valor equivalente em binário, essa tabela é pública, não é segredo, está na Internet e esse mapeamento é fixo.

Image: Tabela de mapeamento BASE64

Razão 2

É a coisa mais simples do mundo codificar e decodificar um texto em Base64. Suponha que o sistema do SUS tenha os seguintes dados:

  • usuário: Joao
  • senha: senha_do_joao
  • CPF: 01020304-05

Codificando:

echo "Joao"  |base64
Sm9hbwo=

$ echo "senha_do_joao"  |base64
c2VuaGFfZG9fam9hbwo=

echo "01020304-05 "  |base64
MDEwMjAzMDQtMDUgCg==

Muito bem, esses seriam os resultados da suposta encriptação de dados do sistema dos SUS. Vamos tentar descobrir esses dados “encriptados”.

Decodificando:

echo Sm9hbwo= |base64 -D
Joao

echo c2VuaGFfZG9fam9hbwo= |base64 -D
senha_do_joao

MDEwMjAzMDQtMDUgCg== |base64 -D
01020304-05

É tristemente fácil né?!?

Razão 3

Para ser considerado um tipo de criptografia deveria utilizar algum mecanismo de cifragem por hash criptográfico ou utilizar algum mecanismo de encriptação por meio de chaves simétricas ou assimétricas.

No exemplo mais simples de utilização de criptografia, Alice e Bob teriam duas chaves de criptografia, uma pública e uma privada, e eles trocariam mensagens de forma segura assim:

  • Alice e Bob compartilham suas chaves públicas entre si
  • Bob escreve um documento e encripta esse documento com sua privada
  • Bob manda o documento para Alice
  • Alice recebe o documento e o decripta com a chave pública de Bob

Image: Criptografia básica

Esse seria a forma mais simples de fazer um documento ser transmitido por um meio inseguro e ser lido apenas pelas pessoas interessadas no assunto.

Resumo

São três boas razões para ser convencido. Mas se algum dia, você sentir que as forças da natureza te forçam a encriptar alguma coisa com Base64, lembre-se! “Base64 não é algoritmo de criptografia”.

Abraço! Que a força esteja com você!

DICA RÁPIDA DE LIVRO

Estou lendo atualmente o livro O Projeto Fênix: Um romance sobre TI, DevOps e sobre ajudar o seu negócio a vencer

Referências


Eu adoraria ouvir suas outras histórias e situações semelhantes ao que acabei de escrever neste post, você pode me encontrar em @infraascode_br ou linkedin.com/in/leonardoml/ .

Te convido a ver os outros posts do blog Infra-as-Code garanto que tem coisas legais lá!!


--- --- IMPORTANTE --- ---
As opiniões aqui expressas são pessoais e de responsabilidade única e exclusiva do autor, elas não refletem necessariamente a posição das empresas que eu trabalho(ei) e/ou presto(ei) serviço.