Todos os artigos

Scrypt: por que o algoritmo precisa de tanta memória

Em 2022, o Brasil aprovou o marco legal das criptomoedas (Lei 14.478/2022), consolidando o país como um dos mercados cripto mais ativos da América Latina. O bitcoin usa SHA-256, mas moedas como Litecoin e Dogecoin usam scrypt para sua prova de trabalho — justamente porque seu desenho memory-hard tornou a fabricação de ASICs dedicados muito mais lenta e cara do que para o bitcoin, prolongando por anos a viabilidade da mineração por GPU comum.

O que é uma função memory-hard

Um algoritmo memory-hard é projetado deliberadamente para que calcular um único hash exija manter na memória uma grande quantidade de dados intermediários. Tentar economizar memória à custa de recalcular valores, ao invés disso, aumenta drasticamente o tempo de computação — ou seja, o atacante precisa sacrificar memória ou velocidade.

Por que isso dificulta ataques com hardware especializado

Chips ASIC e GPUs são muito eficientes na execução massivamente paralela de operações aritméticas simples, mas adicionar memória a cada fluxo de computação paralelo custa muito mais e escala pior. O scrypt torna um ataque de força bruta nesse tipo de hardware economicamente menos atraente comparado a funções hash clássicas.

Para que serve

  • Escolher um algoritmo de hashing de senhas resistente a ataques com fazendas de GPU.
  • Entender o conceito de funções memory-hard no contexto da criptografia.
  • Comparar os compromissos entre scrypt, bcrypt e Argon2 para um sistema específico.

Quanta memória é realmente necessária

A quantidade de memória para um único cálculo de scrypt é aproximadamente 128 × N × r bytes. Com parâmetros típicos (N=16384, r=8), isso equivale a cerca de 16 megabytes por hash — insignificante para um único login, mas se o servidor precisa processar milhares de autenticações simultâneas, o volume total de memória rapidamente se torna uma restrição real na escolha dos parâmetros, e não apenas um requisito de segurança abstrato.

Experimentar a ferramenta