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
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.