Questão nº 53
Questão de Tecnologia da Informação · FGV TCE-TO 2022 (nº 53)
As credenciais de acesso dos usuários de um aplicativo são armazenadas em um banco de dados e são utilizadas unicamente para acesso às funcionalidades do aplicativo. A equipe de desenvolvimento definiu como requisito não funcional que o sistema deve evitar que as senhas sejam obtidas por um invasor mesmo que o aplicativo ou banco de dados esteja comprometido.
Para implementar o requisito não funcional, um modo de proteger as senhas dos usuários é:
- Aocultar o algoritmo utilizado para proteção das senhas;
- Barmazenar as senhas cifradas por meio de um algoritmo de chaves assimétricas;
- Cutilizar um algoritmo hash com salt antes de persistir as senhas no banco de dados; (alternativa correta)
- Dcodificar um algoritmo próprio para cifrar as senhas com base em uma chave randômica segura;
- Eusar uma chave randômica gerada pelo aplicativo para cifrar as senhas por meio de um algoritmo de chave simétrica.
Resposta comentada
Gabarito Alternativa C
Para proteger senhas em um banco de dados, a prática segura é transformá-las de forma irreversível antes de armazenar, de modo que, mesmo que os dados sejam roubados, a senha original não possa ser recuperada. Isso é feito usando funções hash combinadas com salt.
- (A) Incorreta: Ocultar o algoritmo (segurança por obscuridade) não é uma prática de segurança eficaz. Algoritmos de segurança devem ser públicos e amplamente testados para serem considerados robustos.
- (B) Incorreta: Cifrar (criptografar) senhas, seja com chaves assimétricas ou simétricas, implica que elas podem ser decifradas (descriptografadas). Se o sistema for comprometido e o invasor obtiver a chave de decifração, todas as senhas poderão ser recuperadas, violando o requisito.
- (C) Correta: Utilizar um algoritmo hash com salt é a abordagem padrão e segura. O hash é uma função unidirecional (não reversível), o que significa que a senha original não pode ser obtida a partir do seu hash. O salt (um valor aleatório único adicionado a cada senha antes do hash) protege contra ataques de tabelas arco-íris e torna cada hash único, mesmo para senhas iguais.
- (D) Incorreta: Criar um algoritmo próprio ("não invente sua própria criptografia") é extremamente perigoso. É muito difícil desenvolver um algoritmo criptográfico seguro que resista a ataques, e a maioria das tentativas resulta em vulnerabilidades.
- (E) Incorreta: Assim como na alternativa B, cifrar (criptografar) senhas com uma chave simétrica significa que elas podem ser decifradas. Se o invasor obtiver a chave simétrica, todas as senhas podem ser recuperadas, falhando em cumprir o requisito de não permitir que as senhas sejam obtidas. A armadilha aqui é que "cifrar" soa seguro, mas para senhas, a necessidade é de uma transformação irreversível (hash), não reversível (cifra).
Fonte: FGV TCE-TO 2022 Analista Técnico - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.