Please enable JavaScript.
Coggle requires JavaScript to display documents.
Capítulo 5, Algoritmos hash, Assinatura Digital, Salting, Certificado…
Capítulo 5
A integridade assegura que os dados não sejam alterados por alguém ou alguma coisa e que permaneçam confiáveis ao longo de todo o ciclo de vida.
A integridade de dados é um componente crítico para a concepção, implementação e uso de qualquer sistema que armazena, processa ou transmite dados.
Ter um sistema de integridade de dados bem controlado e definido aumenta a estabilidade, o desempenho e a manutençao de um sistema de banco de dados.
Algoritmos hash
Algoritmos de hash
As funções hash são úteis para assegurar que um erro de comunicação ou do usuário altere os dados acidentalmente.
-
-
-
Aplicações
-
Ao escolher um algoritmo de hash, use o SHA-256 ou superior, pois são mais seguros atualmente.
Embora possa detectar alterações acidentais, o hash não pode proteger contra alterações deliberadas. Não há informações de identificação única do retemente no procedimento de hash. Isso significa que qualquer pessoa pode processar um hash para quaisquer dados, desde que tenha a função correta. Portanto, hash é vulnerável a ataques man in the middle e não oferece segurança aos dados transmitidos.
Como decifrar hashes
Para decifrar um hash, um invasor deve adivinhar a senha. O ataque de dicionário e o ataque de força bruta são os dois principais ataques usados para adivinhar senhas.
Um ataque de dicionário usa um arquivo que contém palavras, frases e senhas comuns. O arquivo tem os hashes calculados. Um dicionário compara os hashes no arquivo com os hashes de senha. Se um hash for compatível, o invasor descobrirá um grupo de senhas potencialmente boas.
-
Propriedades de hash
O hash é uma função matemática unidirecional relativamente fácil de calcular, mas bastante difícil de reverter.
-
Senhas de hash
Os algoritmos hash transformam qualquer quantidade de dados em um hash digital ou impressão digital de tamanho fixo. Um criminoso não pode reverter um hash digital para descobrir a entrada original. Se a entrada mudar completamente, o resultado será um hash diferente.
Isso funciona para proteger as senhas. Um sistema precisa armazenar uma senha de modo a protegê-la, mas que ainda possa verificar se a senha do usuário está correta.
Os usuários precisam saber que os dados permanecem inalterados, enquanto estão inativos ou em trânsito. Hash é uma ferramenta que assegura a integridade de dados através da captura de dados binários (a mensagem) para produzir representação de tamanho fixo denominada valor de hash ou message digest.
A ferramenta de hash usa uma função criptográfica de hash para verificar e assegurar a integridade de dados. Também pode verificar a autenticação.
As funções hash substituem a senha de texto simples ou chaves de criptografia porque as funções hash são funções unidirecionais. Isso significa que, se uma senha for confundida com um algoritmo de hash específico, o resultado sempre será o mesmo hash digest. É considerada unidirecional porque, com as funções hash, é computacionalmente inviável que dois conjuntos de dados distintos apresentem o mesmo hash digest ou saída.
Cada vez que os dados são modificados ou alterados, o valor de hash também muda. Por isso, muitas vezes os valores criptofráficos de hash são chamados de impressões digitais. Podem detectar arquivos de dados duplicados, alterações na versão do arquivo e aplicações similares.
Esses valores protegem contra alterações de dados acidentais ou intencionais e corrupção de dados acidental. O hash também é muito eficiente. Um arquivo grande ou o conteúdo de uma unidade de disco inteira resulta em um valor de hash com o mesmo tamanho.
A integridade assegura que os dados e informações estejam completos e inalterados no momento da aquisição. O campo de computação forense digital usa o hash para verificar todas as mídias digitais que contêm arquivos.
O fato de que um conjunto de bits é idêntico ao conjunto original de bits estabelece invariabilidade. A invariabilidade ajuda a responder várias perguntas:
- o avaliador tem os arquivos que ele precisa?
- os dados foram corrompidos ou alterados?
- o avaliador pode comprovar que os arquivos não estão corrompidos?
Assinatura Digital
-
-
-
Não repudio
Repudiar significa negar. O não repúdio é uma forma de assegurar que o remetente de uma mensagem ou documento não pode negar que enviou a mensagem ou documento e que o destinatário não pode negar que recebeu a mensagem ou documento.
Uma assinatura digital assegura que o remetente assinou eletronicamente a mensagem ou documento. Como uma assinatura digital é exclusiva para a pessoa que a criou, essa pessoa não pode posteriormente negar que forneceu a assinatura.
-
As assinaturas de próprio punho e selos carimbados comprovam a autoria do conteúdo de um documento. As assinaturas digitais podem oferecer a mesma funcionalidade que as assinaturas de próprio punho.
Os documentos digitais não protegidos pode ser facilmente alterados por qualquer pessoa. Uma assinatura digital pode determinar se alguém editou um documento após a assinatura do usuário. Uma assinatura digital é um método matemático usado para verificar a autenticidade e a integridade de uma mensagem, documento digital ou software.
Em muitos países, as assinaturas digitais têm a mesma importância jurídica que um documento assinado manualmente. As assinaturas eletrônicas são vinculativas para os contratos, negociações ou qualquer outro documento que requer uma assinatura de próprio punho. Uma trilha de auditoria rastreia o histórico do documento eletrônico para fins de proteção legal e regulatória.
Uma assinatura digital ajuda a estabelecer a autenticidade, a integridade e o não repúdio. As assinaturas digitais têm propriedades específicas que permitem a autenticação de entidade e a integridade de dados. As assinaturas digitais são uma alternativa para o HMAC.
Salting
Como evitar ataques
O salting impede que um invasor use um ataque de dicionário para tentar adivinhar senhas. O salting também torna impossível o uso de tabelas de pesquisa e rainbow tables para decifrar um hash.
Tabelas de pesquisa, armazena os hashes pré-calculados em um dicionário de senha, juntamente com a senha correspondente. Uma tablea de pesquisa é uma estrutura de dados que processa centenas de pesquisas de hash por segundo.
Tabelas de pesquisa reversa, esse ataque permite que o criminoso virtual lance um ataque de dicionário ou um ataque de força bruta em vários hashes, sem a tabela de pesquisa pré-calculada. O criminoso virtual cria uma tabela de pesquisa que traça cada hash de senha a partir do banco de dados da conta violada para uma lista de usuários.
O criminoso virtual executa um hash para cada palpite de senha e usa a tabela de pesquisa para obter uma lista de usuários cuja senha é compatível com o palpite do criminoso virtual, como mostrado na figura. O ataque funciona perfeitamente, pois muitos usuários têm a mesma senha.
Rainbow tables, sacrificam a velocidade de quebra de senha para diminuir o tamanho das tabelas de pesquisa. Uma tabela menor significa que a tabela pode armazenar as soluções para mais hashes na mesma quantidade de espaço.
Implementação de salting
Um Cryptographically Secure Pseudo-Random Number Generator (CSPRNG) é a melhor opção para gerar o salt. CSPRNGs geram um número aleatório que tem um alto nível de aleatoriedade e é completamente imprevisível, portanto, é criptograficamente confiável.
Para implementar o salt com sucesso, siga as seguintes recomendações:
- O salt deve ser exclusivo para cada senha de usuário.
- Nunca reutilize um salt.
- O tamanho do sal deve corresponder ao tamanho da saída da função hash.
- Sempre execute o hash no servidor em um aplicativo da Web.
O uso de uma técnica chamada alongamento de chave também ajudará a proteger contra ataques. O alongamento de chave executa a função hash muito lentamente. Isso impede o hardware de ponta que pode calcular bilhões de hashes por segundo menos eficazes.
Para armazenar uma senha
- use CSPRNG para gerar um salt longo e aleatório
- adicione salt no começo da senha
- execute o hash SHA-256, uma função de hash criptográfica padrão
- salve o salt e o hash como parte do registro do banco de dados do usuário.
Para validar uma senha
- recupere o salt e o hash de um usuário do banco de dados
- adicione salt à senha e faça o hash com a mesma função hash
- compare o hash da senha em questão ao armazenado no bano de dados
- se os hashes não correspondem, a senha está incorreta.
O que é salting?
O salting torna o hash de senhas mais seguro. Se dois usuários têm a mesma senha, eles também terão os mesmos hashes de senha. Um SALT, que é uma cadeia de caracteres aleatória, é uma entrada adicional à senha antes do hash. Isso cria um resultado de hash diferente para as duas senhas. Um banco de dados armazena o hash e o SALT.
Certificado Digital
Um certificado digital é equivalente a um passaporte eletrônico. Permite que usuários, hosts e empresas troquem informações de forma segura através da Internet. Especificamente, um certificado digital autentica e verifica se os usuários que enviam uma mensagem são quem dizem ser.
Os certificados digitais também podem proporcionar a confidencialidade para o destinatário por meio da criptografia de uma resposta.
HMAC
O que é HMAC?
O próximo passo para evitar que um criminoso virtual lance um ataque de dicionário ou um ataque de força bruta em um hash é adicionar uma chave secreta ao hash. Somente a pessoa que tem conhecimento do hash pode validar uma senha. Uma maneira de fazer isso é incluir a chave secreta no hash, usando um algoritmo de hash denominado código de autenticação de mensagem de hash com chave (HMAC ou KHMAC). HMACs usam uma chave secreta adicional como entrada à função hash. O uso do HMAC ultrapassa a garantira de integridade ao adicionar a autenticação. Um HMAC usa um algoritmo específico que combina uma função hash criptográfica com uma chave secreta.
Somente o remetente e o destinatário têm conhecimento da chave secreta e agora a saída da função hash depende dos dados de entrada e da chave secreta. Apenas as partes que têm acesso a essa chave secreta podem calcular o digest de uma função HMAC. Esta característica impede os ataques man in the middle e fornece a autenticação da origem dos dados.