Salt e Pepper em Hashes

Definição

Salt e Pepper são técnicas usadas para fortalecer a segurança de funções de hash, principalmente no armazenamento de senhas.

  • Salt: é um valor aleatório gerado individualmente para cada senha e concatenado a ela antes da aplicação da função de hash.
  • Pepper: é um valor secreto adicional (geralmente comum a todas as senhas) que também é concatenado à senha antes do hash, mas mantido fora do banco de dados.

O objetivo de usar salt e pepper é proteger contra ataques de dicionário, ataques de rainbow tables e dificultar tentativas de quebra de hashes.

Objetivos de Salt e Pepper

  • Evitar ataques de rainbow table: o salt torna impraticável o uso de tabelas pré-computadas de hashes.
  • Garantir unicidade dos hashes: mesmo que dois usuários tenham a mesma senha, seus hashes serão diferentes por causa do salt.
  • Adicionar uma camada secreta: o pepper dificulta ainda mais ataques, já que o atacante precisaria conhecer o valor secreto.
  • Reforçar a segurança de senhas armazenadas: deixando os ataques de força bruta mais lentos e custosos.

Exemplo prático (Python) — Uso de Salt e Pepper

import hashlib
import os

# Pepper (deve ser armazenado de forma segura e fora do banco de dados)
pepper = "pepper_super_secreto"

def gerar_hash_senha(senha):
    # Gerar salt aleatório
    salt = os.urandom(16).hex()

    # Concatenar senha + salt + pepper
    senha_completa = senha + salt + pepper

    # Gerar o hash
    hash_objeto = hashlib.sha256(senha_completa.encode())
    return salt, hash_objeto.hexdigest()

# Exemplo de uso
senha_usuario = "senha123"
salt, hash_gerado = gerar_hash_senha(senha_usuario)

print("Salt:", salt)
print("Hash da senha:", hash_gerado)

(Nota: Em sistemas reais, é recomendado usar funções específicas para hashing de senhas, como bcrypt, scrypt ou Argon2, em vez de SHA-256 direto.)

Saída

Salt: a3f5c67b2d8e9a41f1c29e9b77e2a7e0
Hash da senha: 4e8d3c2a85c9303f5d14e37fa3af8c1dc258c45d94b383b77c2c5e7f3a21ec4f

(Cada vez que a função for chamada, o salt será diferente, produzindo hashes diferentes mesmo para a mesma senha.)

O ciclo de Salt e Pepper

[Senha Original] + [Salt Aleatório] + [Pepper Secreto] --> (Função de Hash) --> [Hash Seguro]
  • Salt individual protege contra ataques de tabelas pré-computadas.

  • Pepper adiciona um segredo extra para proteção adicional.

Relacionados

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com