Questão nº 54
Questão de Tecnologia da Informação - Programação · FGV DPE-RS 2023 (nº 54)
Existem diferentes algoritmos de criptografia, com diferentes aplicações, sendo divididos em três grupos principais, que são simétrica, assimétrica e destrutiva. Ao contrário da criptografia, que exige uma chave, a codificação define apenas uma regra de transformação conhecida.
Para guardar a senha do usuário em um campo do tipo texto de uma base de dados, deve-se:
- Acriptografar a senha com Base64 e armazenar no banco de dados;
- Bcriptografar a senha com 3DES e armazená-la junto à chave na forma binária;
- Cutilizar criptografia do tipo SHA-256 e armazenar o hash codificado para Base64; (alternativa correta)
- Dtrabalhar com algoritmo RSA, criptografando a senha com a chave privada e codificando para armazenagem através da chave pública;
- Ecom base no certificado digital do servidor, com algoritmo RSA, utilizar a chave pública para criptografar a senha e armazenar o valor criptografado como Base64.
Resposta comentada
Gabarito Alternativa C
Para guardar senhas de forma segura, nunca se deve armazenar a senha original. Em vez disso, usa-se uma função de hash criptográfico, que transforma a senha em uma sequência de caracteres de tamanho fixo (o "hash"), de forma que seja praticamente impossível reverter o processo e descobrir a senha original.
- (A) Incorreta: Base64 é um método de codificação, não de criptografia. Ele apenas representa dados binários como texto e é facilmente reversível, permitindo que qualquer pessoa com acesso ao banco de dados decodifique a senha original. A armadilha é confundir "codificação" (reversível) com "hashing" (irreversível e seguro para senhas).
- (B) Incorreta: 3DES é um algoritmo de criptografia simétrica. Se a senha for criptografada e a chave de criptografia for armazenada junto no banco de dados, um atacante que obtenha acesso ao banco terá tanto a senha criptografada quanto a chave, podendo facilmente descriptografar todas as senhas. Para senhas, buscamos uma função irreversível (hash), não uma criptografia reversível.
- (C) Correta: SHA-256 é uma função de hash criptográfico. Usá-lo para a senha gera um valor único e irreversível (o hash). Armazenar esse hash (e não a senha original) é a prática recomendada. A codificação para Base64 é apenas uma forma de representar o hash (que é binário) como texto de forma segura para armazenamento em campos de texto, sem adicionar ou remover segurança ao hash em si.
- (D) Incorreta: RSA é um algoritmo de criptografia assimétrica. Criptografar com a chave privada geralmente é para assinaturas digitais, e não para confidencialidade. Além disso, como qualquer criptografia, o objetivo é que possa ser descriptografado, o que é o oposto do que se busca para senhas (que devem ser irreversíveis).
- (E) Incorreta: Novamente, RSA é um algoritmo de criptografia, não de hash. Criptografar a senha com a chave pública do servidor significa que ela poderia ser descriptografada com a chave privada correspondente. Isso torna a senha vulnerável se a chave privada for comprometida, e o servidor nunca precisa da senha original, apenas de seu hash para comparação.
Fonte: FGV DPE-RS 2023 Técnico - Apoio Especializado (Programador) (Caderno Tipo 1). Reproduzida para fins de estudo.