Search
Close this search box.
Autenticação de usuários segura: criptografia, hash e salting
Autenticação de usuários segura

Posts Relacionados:

Autenticação de usuários segura é um tema fundamental para quem desenvolve aplicativos. Neste post, abordamos três conceitos essenciais para garantir a segurança de credenciais de usuários: criptografia, hash e salting.

Receba nossa newsletter

Autenticação de usuários segura

Quando se fala em autenticação de usuários, segurança é um tema que vem logo à cabeça. Como armazenar senhas e outros dados importantes de forma segura? Se você desenvolve aplicativos em Python, é provável que essa preocupação esteja entre suas prioridades. Afinal, roubo de senhas e dados de usuários compromete a reputação de qualquer aplicativo. Neste post, abordaremos três conceitos fundamentais para o armazenamento seguro de senhas: criptografia, hash e salting.

Autenticação de usuários com hash

Hashing, salting e criptografia para armazenamento seguro de credenciais

Pode parecer surpreendente para muitos, mas as senhas são o método menos seguro de autenticação de usuários. Mesmo assim, elas ainda são amplamente usadas. Agentes mal-intencionados podem explorar senhas comprometidas para violações de dados, fraudes de controle de contas e outras atividades criminosas. Consequentemente, o uso de senhas para autenticação de usuários precisa ocorrer em combinação com métodos que aumentem suas seguranças.

Criptografia, hash e salting são maneiras de manter os dados seguros. A criptografia de senha é usada quando o texto simples deve ser recuperado por qualquer motivo. O hash de senha é típico no lado do servidor. Ele é comumente usado quando os operadores do servidor não precisam saber a senha, eles só precisam saber que o usuário informou a senha correta. Funções de criptografia e hashing ocorrem em segundo plano, assim como o salting. Ou seja, elas não devem adicionar atritos à experiência dos usuários de um aplicativo. Mas para decidir qual é a melhor ferramenta para o seu aplicativo, primeiro precisamos entender o que elas são.

O que é criptografia?

A criptografia consiste na conversão das senhas, usando uma fórmula matemática, em um texto cifrado. Esse processo é bidirecional. Isso significa que a senha original convertida em texto cifrado pode ser retornada ao texto simples por descriptografia. A codificação de dados com criptografia implica que os mesmos só podem ser acessados por aqueles que possuem a chave de descriptografia correta. Porém, qualquer pessoa com a chave criptográfica correta pode pegar o texto cifrado e revertê-lo para o texto simples original. Portanto, proteger as chaves criptográficas é essencial.

Existem dois tipos principais de criptografia: criptografia de chave simétrica e criptografia de chave pública. Na criptografia de chave simétrica, a mesma chave é usada para criptografia e descriptografia. A criptografia de chave pública usa um par de chaves (uma chave pública para criptografia e uma chave privada para descriptografia).

O que é hash?

Hash é uma função criptográfica unidirecional. Ele usa um algoritmo para transformar uma senha de texto simples em texto cifrado que obscurece a senha real. O hash converte dados de entrada (como uma senha) em uma sequência de caracteres de comprimento fixo, que normalmente é uma sequência de números e letras. Se você pegar uma senha de texto simples arbitrária de qualquer tamanho e transformá-la com um algoritmo de hash, ele exibirá uma string ou número hexadecimal exclusivo do texto fornecido. Veja um exemplo de geração de hashing de senha com Python abaixo:

				
					# exemplo de hash de senha com Python usando hashlib

import hashlib

def hash_senha(senha):
    # Cria um objeto hash
    hash_object = hashlib.sha256()
    
    # Atualiza o objeto de hash com o objeto codificado em bytes (senha)
    hash_object.update(senha.encode('utf-8'))

    # Retorna a senha com hash
    return hash_object.hexdigest()

senha = "minha_senha_segura"
hashed_senha = hash_senha(senha)
print(f"Senha com hash: {hashed_senha}")

# resultado: Senha com hash: 684c75aa577b0986baaffa2aa01d7700816ac90583f320f84a9dcf8762822482
				
			

As funções de hash são projetadas para serem irreversíveis. Ou seja, os hashes de senhas não podem ser transformados de volta na senha original. Isso torna o hash adequado para armazenar senhas com segurança, pois a senha original não é armazenada. O servidor armazena apenas uma versão com hash da senha. Quando o usuário digita uma senha, o sistema calcula o hash e o compara com o hash armazenado. Se os hashes forem iguais, o servidor poderá confirmar a senha e o usuário será autenticado.

O que é salting?

Salting se refere à adição de uma sequência aleatória de caracteres às senhas para aprimorá-las. Ele é comumente usado em conjunto com hashing para aumentar a segurança. Isso garante que, mesmo que dois usuários tenham a mesma senha, seus hashes serão diferentes devido aos sais exclusivos.

O funcionamento do salting é simples de ser entendido. Cada usuário recebe um salt (sal) diferente, que só é conhecido pelo servidor. Isso torna os salts únicos e mais seguros. O salt pode ser colocado em ambos os lados da senha. Por exemplo, adicionar salt à palavra “senha” pode resultar em uma senha salgada como “4(j3La25senha” ou “senha4(j3Ty93”. Depois que o salt é adicionado, a combinação de senha de texto simples e salt é então criptografada com hash, tornando-a mais segura do que apenas uma senha com hash. O salting protege contra ataques de hackers em que tabelas de hash pré-computadas são usadas para fazer engenharia reversa de senhas.

Conclusão

Autenticação de usuários é uma tarefa rotineira em aplicativos Python. Porém, o uso de senhas por si só não é suficiente para o gerenciamento seguro de identificação e autorização de acesso de usuários. Portanto, as senhas precisam ser reforçadas com outros métodos. Entre esses métodos estão o uso de criptografia, hash e salting.

A criptografia é um método reversível de conversão de senhas de texto simples em texto cifrado. Você pode retornar ao texto simples original com uma chave de descriptografia. Hashing é um processo unidirecional que converte uma senha em texto cifrado usando algoritmos de hash. Uma senha com hash não pode ser descriptografada, mas um hacker pode tentar fazer engenharia reversa. Salting de senha adiciona caracteres aleatórios antes ou depois de uma senha antes do hash para ofuscar a senha real. Devido à aleatoriedade do salt adicionado, os hackers têm muita dificuldade em descobrir senhas reais de senhas com salting e hash.

Imagem com IA Generativa – Dia 199

IA generativa img 199

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial