O kernel Linux 6.11 introduziu o suporte ao getrandom()
no vDSO, permitindo a geração de números aleatórios diretamente no espaço de usuário de forma rápida e segura. Inicialmente, esse suporte foi focado na arquitetura x86_64, mas com o lançamento do Linux 6.12, a implementação do getrandom()
vDSO está sendo expandida para outras arquiteturas de CPU.
Com os patches já disponíveis no repositório random.git, mantido por Jason Donenfeld, o suporte ao getrandom()
vDSO será estendido para as arquiteturas LoongArch e ARM64/AArch64, sendo especialmente relevante para dispositivos ARM64, onde essa implementação promete aumentar a eficiência na geração de números aleatórios seguros.
O primeiro patch implementa o suporte ao getrandom()
no vDSO para a arquitetura ARM64/AArch64, utilizando uma implementação do ChaCha20 otimizada com NEON para maior desempenho, evitando gravações na pilha. Isso permite a geração eficiente de números aleatórios diretamente no espaço do usuário. A implementação também inclui testes de desempenho que demonstram melhorias consideráveis em relação ao uso de chamadas de sistema tradicionais. Para mais detalhes, você pode acessar o commit original aqui.
O segundo commit trata da implementação do suporte ao getrandom()
no vDSO para a arquitetura LoongArch. Ele conecta a implementação genérica do vDSO à página de dados do vDSO da LoongArch, fornecendo as funções necessárias para o ChaCha20 sem usar a pilha. Além disso, os self-tests também foram integrados para garantir a funcionalidade correta. Essa implementação visa fornecer uma geração de números aleatórios eficiente no espaço de usuário, reduzindo o tempo de execução em comparação com chamadas de sistema tradicionais. Link para mais detalhes: Commit 96a619dc.
Além disso, o suporte ao getrandom()
no vDSO para PowerPC (POWER), tanto para 32-bit quanto 64-bit, está em fase de revisão, ampliando ainda mais o alcance dessa funcionalidade para diferentes plataformas.
Jason Donenfeld também compartilhou que um novo patch (v4) para a GNU C Library (glibc) está em processo de revisão. Esse patch permitirá que distribuições Linux baseadas na glibc possam utilizar o getrandom()
vDSO em arquiteturas compatíveis, oferecendo uma solução rápida e segura para geração de números aleatórios no espaço de usuário.