Desenvolvimentos no SHA-3
Ora viva,
Como os leitores deste blog devem certamente lembrar-se, decorre neste momento uma competição para seleccionar uma função de hashing adequada para servir como um novo standard, denominado SHA-3.
As funções restantes neste momento são: BLAKE, Blue Midnight Wish, CubeHash, ECHO, Fugue, Grøstl, Hamsi, JH, Keccak, Luffa, Shabal, SHAvite-3, SIMD e Skein. No próximo dia 24, serão anunciados os 5 finalistas da competição.
Quais destas funções serão escolhidas é impossível de saber ao certo. Das funções listadas, não foram encontrados ataques que reduzissem dramaticamente a segurança de qualquer uma delas. Existem algumas decisões no design destas funções que podem afectar a segurança, no entanto.
A função CubeHash torna mais fácil obter preimages de 512 bits do que o esperado; ao invés de O(2^512) operações, são apenas necessárias O(2^384). A relevância deste problema é bastante discutível — mesmo com computadores quânticos e transformando todos os átomos em qubits, seria difícil encontrar 2^192 no universo inteiro. No entanto, este nível de segurança vai contra as regras da competição, que especificavam um nível de segurança mínimo de 2^512. Isto põe a passagem desta função para o próximo passo em risco.
Outro ponto a considerar é o desempenho das funções. O NIST especificou que qualquer função escolhida terá de ser mais ou igualmente rápida que o SHA-2. Isto deixa-nos com as seguintes funções: BLAKE, Blue Midnight Wish, Shabal, Skein, CubeHash, Keccak, SIMD, Luffa (parcialmente). Algumas destas (i.e., ECHO e SHAvite-3) são extremamente acelerada se existirem instruções específicas de AES no sistema (AES-NI).
Dito isto, é uma decisão difícil escolher as 5 funções finalistas. Um palpite pode ser: BLAKE, Shabal, Skein, Blue Midnight Wish, Keccak. Existe um problema com este palpite, dado que as primeiras 4 funções são todas bastante semelhantes e pode ser vantajoso ter mais variedade, mas vou ignorar esse pequeno detalhe.
6 comentários a “Desenvolvimentos no SHA-3”
Como referes no artigo, devido ao modo como sao desenvolvidas nao poderao ser mais proveitosos numa siutação digamos que para estabelecer um tunel VPN poderá usar-se função X para poder fazer encriptaçao em tempo real e usar se outra funçao para encriptar 3T de dados ?
Grøstl (Knudsen et al.)
JH