![]() | Foram assinalados vários problemas nesta página ou se(c)ção: |
Em criptografia, alongamento de chave (do inglês, key stretching), refere-se às técnicas usadas para fazer chaves inseguras, tipicamente uma senha ou algo semelhante, mais seguras contra contra ataque de força bruta ao aumentar o tempo que leva-se para testar cada possibilidade de chave. Senhas criadas por humanos costumam ser pequenas e previsíveis o suficiente para permitir a quebra de senha (do inglês, password cracking). Alongamento de chave torna este ataque mais difícil.
Alongamento de chave algumas vezes são referenciadas como "fortalecimento de chave (do inglês, key strengthening)", embora este último termo se refira à outra técnica com significantes diferenças nas propriedades de segurança e performance. (Veja sessão 6 do [1] para uma comparação).
As técnicas de alongamento de chave geralmente funcionam da seguinte forma: a chave inicial serve de entrada para um algoritmo que tem como saída uma uma chave reforçada. A chave reforçada deverá ter tamanho o suficiente para tornar impossível de ser quebrada através da força bruta (pelo menos 128 bits por exemplo). Este algoritmo em sua forma geral deve ser capaz de ser seguro de maneira que não seja possível descobrir outra maneira de calcular a chave reforçada em menos tempo (menos trabalho de processador) que ele próprio.
O processo de alongamento de chave deixa o ataque com duas opções: ou ele tenta todas as possíveis combinações de chaves reforçadas (o que é impossível se a chave reforçada for grande o suficiente), ou então ele tenta todas as combinações da chave inicial. Neste último caso, se a chave inicial for uma senha, então o atacante poderá tentar usar primeiro o ataque de dicionário, e caso não for bem sucedido, tentar todas as combinações de caracteres para a senha. O alongamento de senha não evita este caso, mas faz o atacante perder muito mais tempo em cada tentativa.
Se o atacante usa a mesma classe de hardware que o usuário, cada tentativa irá tomar o mesmo período de tempo de processo que o usuário ao entrar com sua senha (por exemplo, um segundo). Mesmo se um atacante tiver maiores recursos computacionais que o usuário, o alongamento de chave ainda irá atrasar o atacante, isto porque o usuário apenas computa a função de alongamento de chave uma vez, ao entrar com sua senha, enquanto que o atacante terá que fazer esta computação para cada palpite do seu ataque (de dicionário ou força bruta).
Existem muitas formas de fazer o alongamento de chave. Uma função de hash criptográfica ou um bloco de cifra podem ser repetidamente aplicados em um looping. Em aplicações onde a chave é usada para uma cifragem, o esquema de chaves (do inglês, key schedule ou key set-up) em uma cifra de modo que leve um segundo para ser executada.
Uma técnica relacionada, a adição de sal (criptografia), que protege contra ataques de balanceamento de tempo-memória (do inglês, time-memory tradoff), é usado frequentemente combinado com o alongamento de chave.