Descrever encriptação e hashing

Concluído

Uma forma de mitigar ameaças comuns de cibersegurança é encriptar dados confidenciais ou valiosos. A encriptação é o processo de tornar os dados ilegíveis e inutilizáveis para visualizadores não autorizados. Para utilizar ou ler dados encriptados, tem de ser desencriptado, o que requer a utilização de uma chave secreta.

Existem dois tipos de encriptação de nível superior: simétrica e assimétrica. A encriptação simétrica utiliza a mesma chave para encriptar e desencriptar os dados. A encriptação assimétrica utiliza um par de chaves pública e privada. Qualquer uma das chaves pode encriptar dados, mas a chave utilizada para encriptar não pode ser utilizada para desencriptar dados encriptados. Para desencriptar, precisa de uma chave emparelhada. Por exemplo, se a chave pública for utilizada para encriptar, apenas a chave privada correspondente pode ser utilizada para desencriptar. A encriptação assimétrica é utilizada para coisas como aceder a sites na Internet com o protocolo HTTPS e soluções eletrónicas de assinatura de dados. A encriptação pode proteger os dados inativos ou em trânsito. Para obter informações adicionais sobre os conceitos de criptografia, veja Descrever conceitos de criptografia

Diagrama que mostra o conceito de encriptação simétrica e assimétrica.

Encriptação de dados inativos

Os dados inativos são os dados armazenados num dispositivo físico, como um servidor. Pode ser armazenada numa base de dados ou numa conta de armazenamento, mas, independentemente do local onde estão armazenados, a encriptação de dados inativos garante que os dados são ilegíveis sem as chaves e segredos necessários para os desencriptar.

Se um atacante obtivesse um disco rígido com dados encriptados e não tivesse acesso às chaves de encriptação, não conseguiria ler os dados.

Encriptação para dados em trânsito

Os dados em trânsito são os dados que se movem de uma localização para outra, como através da Internet ou através de uma rede privada. A transferência segura pode ser processada por diversas camadas diferentes. Pode fazê-lo ao encriptar os dados na camada da aplicação antes de os enviar através de uma rede. HTTPS é um exemplo de encriptação em trânsito.

Encriptar dados em trânsito protege-os de observadores externos e fornece um mecanismo para transmitir dados ao mesmo tempo que limita o risco de exposição.

Encriptação para dados em utilização

Um caso de utilização comum para encriptação de dados em utilização envolve proteger dados em armazenamento não existente, como caches de RAM ou CPU. Isto pode ser conseguido através de tecnologias que criam um enclave (pense nisto como um lockbox seguro) que protege os dados e mantém os dados encriptados enquanto a CPU processa os dados.

Hashing

O hashing utiliza um algoritmo para converter texto num valor de comprimento fixo exclusivo chamado hash. Cada vez que o mesmo texto é transformado em hash com o mesmo algoritmo, o mesmo valor hash é produzido. Esse hash pode ser utilizado como um identificador exclusivo dos respetivos dados associados.

O hashing é diferente da encriptação na parte em que não utiliza chaves e o valor hashed não é posteriormente desencriptado novamente para o original.

O hashing é frequentemente utilizado para armazenar palavras-passe. Quando um utilizador introduz a respetiva palavra-passe, o mesmo algoritmo que criou o hash armazenado cria um hash da palavra-passe introduzida. Isto é comparado com a versão de hash armazenada da palavra-passe. Se corresponderem, o utilizador introduziu corretamente a palavra-passe. Isto é mais seguro do que armazenar palavras-passe de texto simples, mas os algoritmos de hash também são conhecidos por hackers. Como as funções hash são deterministas (a mesma entrada produz a mesma saída), os hackers podem utilizar ataques de dicionário de força bruta através de hashing das palavras-passe. Para cada hash correspondido, eles conhecem a palavra-passe real. Para mitigar este risco, as palavras-passe são frequentemente "salgadas". Isto refere-se à adição de um valor aleatório de comprimento fixo à entrada de funções hash para criar hashes exclusivos para a mesma entrada.

Diagrama a mostrar o conceito de hashing.