Criptografia Speck está incomodando usuários do Linux

Chegando com suporte nativo no Kernel 4.18, o algoritmo Speck foi desenvolvido pela NSA e não possui respaldo pela ISO nem segurança para uso prático. Entenda o caso!

| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.

Antes de prosseguir com a postagem, gostaria de deixar algo claro:
A cifra Speck NÃO é um backdoor da NSA dentro do kernel Linux!
Portanto não precisam criar alarde com relação a isso.
Porém ainda pode ser um problema de segurança. Vamos entender o porquê!

Criação

As cifras Speck são uma família de cifras de bloco leves lançada publicamente pela Agência de Segurança Nacional dos Estados Unidos (NSA) em junho de 2013. A Speck foi otimizada para desempenho em implementações de criptografia voltadas a Internet das Coisas, enquanto seu algoritmo irmão, Simon, foi otimizado para implementações de hardware. A quem estiver curioso, a Speck é uma cifra do tipo add-rotate-xor (ARX), conforme a imagem abaixo:


Cifra de bloco do Speck: 3 rodadas de Speck com cronograma de 2 palavras

Sob uma outra perspectiva, essa é uma implementação do código Speck feita em linguagem C com uma chave de 128bits onde key = (K[1], K[0])

#include <stdint.h>
#define ROR(x, r) ((x >> r) | (x << (64 - r)))
#define ROL(x, r) ((x << r) | (x >> (64 - r)))
#define R(x, y, k) (x = ROR(x, 8), x += y, x ^= k, y = ROL(y, 3), y ^= x)
#define ROUNDS 32
void encrypt(uint64_t ct[2],
uint64_t const pt[2], 
uint64_t const K[2])
{
uint64_t y = pt[0], x = pt[1], b = K[0], a = K[1];
R(x, y, b);
for (int i = 0; i < ROUNDS - 1; i++) {
R(a, b, i);
R(x, y, b);
}
ct[0] = y;
ct[1] = x;
}

O problema?

De acordo com a International Standards Organization (ISO), a Speck é uma criptografia fraca, insegura, que só causaria problemas de segurança aonde fosse implementada. Sua hash é fácil de ser quebrada comparada ás outras alternativas no mercado. O plano original da NSA é que a cifra dê um mínimo de segurança para sistemas embarcados com pouco poder de processamento, ou seja, é uma criptografia propositalmente fraca. Porém isso deu a entender que a NSA hipoteticamente, possuidora de chaves de quebra do código da criptografia, poderia invadir dispositivos alheios e monitorar os usuários que fizerem uso de sua criptografia.

Embora nenhum pesquisador tenha encontrado qualquer backdoor escondido no Simon e no Speck, os algoritmos foram rejeitados pela ISO porque a NSA nem sequer forneceu um nível normal de detalhes técnicos para os pesquisadores. Isso aumentou a especulação de haver um backdoor nos algoritmos. Aliado, claro, ao histórico: No passado a NSA tentou convencer Linus Torvalds a colocar um backdoor no kernel.

Presente nativamente como um módulo no kernel Linux 4.17, o Speck será um algoritmo suportado nativamente pelo fscrypt no vindouro kernel Linux 4.18 e nem todos estão satisfeitos em saber disso!

Como um algoritmo rejeitado chegou ao kernel Linux?

Resposta curta: Culpa do Google.

Resposta longa: O engenheiro do Google, Eric Biggers, solicitou a inclusão do Speck no Kernel 4.17, porque o Google vai fornecer o Speck como uma opção para o dm-crypt e o fscrypt no Android.

O foco é fornecer criptografia no Android Go, uma versão do Android adaptada para ser executada em smartphones de nível básico. Já a algum tempo que esses dispositivos não são criptografados porque o AES não é rápido o suficiente para operar em baixo nível desses dispositivos.

Comunidade

Já a algum tempo a discussão existe nos fóruns internet afora, desde o lançamento do kernel 4.17

Apesar do Speck estar desativado por padrão no kernel fornecido pelos repositórios oficiais do Kernel.Org, o kernel do Arch trouxe o Speck nativamente habilitado. Por que? Não faço a menor ideia. E isso causou um burburinho na comunidade do ArchLinux.

Devo me preocupar?

Se você é um usuário habitual do Ubuntu, Fedora, Mint ou outra distro não-Rolling Release, dificilmente você estará usando o kernel 4.17, possivelmente estará no 4.14 ou 4.15.

Caso você esteja com o kernel 4.17 ou migrará para o 4.18 quando este sair, você pode adicionar o módulo á lista negra editando o arquivo:

$ sudo nano /etc/modprobe.d/blacklist.conf

E adicionando a seguinte linha:

blacklist CONFIG_CRYPTO_SPECK

Assim o Speck ficará totalmente desativado.

Análise Opinativa

Pessoalmente duvido que a presença do código cause algum dano aos usuários Linux. Uma rápida olhada no código do módulo no kernel e você não vê nada demais: Apenas uma criptografia propositalmente fraca com objetivo de executar em sistemas sem poder de processamento ou de pouca energia.

Mas fica em aberto: A NSA pode se aproveitar dessa “ingenuidade” para invadir dispositivos com mais facilidade, uma vez que ela desenvolveu a cifra, ela pode ter chaves de quebra do código para monitorar indivíduos por razões diversas.

#UrbanCompassPony

Fontes:
ItsFoss
Reddit
SysDFree
BoingBoing
Wikipedia: Speck_Cipher

Deixe um comentário