Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — FGV 2024
Algoritmos e Estrutura de Dados›Estrutura de Dados
Código
fg101864
Banca
FGV
Órgão
TRF - 1ª REGIÃO
Ano
2024
Nível
Superior
Cargo
Técnico Judiciário - Área Administrativa - Especialidade: Tecnologia da Informação
Iago trabalha em um banco e pretende encaminhar uma mensagem a Joyce, que trabalha na mesma rede, mas está fisicamente distante. Iago e Joyce compartilham um valor secreto comum que deve ser utilizado no trâmite da mensagem para assegurar sua autenticidade e confidencialidade.Para garantir os critérios da comunicação, Iago deverá aplicar uma:
Afunção de hash à mensagem. Após esse processo, deve efetuar a criptografia no resumo da mensagem e concatenar com a mensagem inicial a ser enviada a Joyce;
Bfunção de hash à mensagem, concatenar com a mensagem a ser enviada e efetuar a criptografia de todo o bloco concatenado para que este seja enviado a Joyce;
Cconcatenação do valor secreto comum com a mensagem para efetuar o cálculo do valor de hash. Após isso, concatena-se o hash com a mensagem para que sejam enviados para Joyce;
Dconcatenação do valor secreto comum com a mensagem para efetuar o cálculo do valor de hash. Em seguida, deve efetuar o cálculo do hash. Após esse processo, concatena-se a mensagem com o resumo e depois efetua-se a criptografia do pacote completo, que será enviado a Joyce;
Ecifração da mensagem e logo depois o cálculo do hash da mensagem cifrada. Após esse processo, faz-se a concatenação do hash com a mensagem cifrada, que será enviada a Joyce.
Revelar gabarito e comentário▾
GabaritoD — concatenação do valor secreto comum com a mensagem para efetuar o cálculo do valor de hash. Em seguida, deve efetuar o cálculo do hash. Após esse processo, concatena-se a mensagem com o resumo e depois efetua-se a criptografia do pacote completo, que será enviado a Joyce;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Autenticação e confidencialidade com criptografia simétrica
Gabarito: letra D. A alternativa D descreve o processo correto para garantir autenticidade (integridade e origem) e confidencialidade quando duas partes compartilham um segredo comum (chave simétrica). Ela utiliza o segredo para calcular um MAC (Message Authentication Code) sobre a mensagem, depois concatena a mensagem com o MAC e, por fim, criptografa todo o pacote. Isso assegura que a mensagem não foi alterada (autenticidade via MAC) e que apenas o destinatário, que possui a chave, pode ler (confidencialidade via criptografia).
A questão exige conhecimento de conceitos fundamentais de segurança da informação: a função hash usada com a chave secreta produz um MAC; sem a chave, é apenas um hash comum, que não autentica a origem. Além disso, a confidencialidade exige que o conteúdo seja criptografado.
Alternativa
Descrição do Processo
Garante Autenticidade?
Garante Confidencialidade?
Motivo da Correção/Incorreção
A
Hash da mensagem → criptografa só o hash → concatena hash criptografado + mensagem em claro
Sim (parcial)
Não
Mensagem não é criptografada; sigilo violado.
B
Hash da mensagem (sem chave) → concatena hash + mensagem → criptografa tudo
Não
Sim
Hash sem chave não autentica a origem (não é MAC).
Hash sobre texto cifrado não autentica a origem (não é MAC).
1Concatenar segredo + mensagem
2Calcular hash (MAC)
3Concatenar mensagem + MAC
4Criptografar pacote completo
5Enviar para Joyce
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Aplica hash à mensagem, criptografa apenas o resumo e concatena com a mensagem original em claro. A mensagem não é criptografada, portanto não há confidencialidade. O hash criptografado até poderia servir como MAC, mas a ausência de criptografia sobre o texto claro viola o sigilo.
Alternativa B — ❌ Incorreta
Calcula o hash apenas da mensagem (sem usar o segredo), concatena hash e mensagem, e criptografa tudo. Falta a chave no cálculo do hash, logo o hash resultante é um mero resumo, não um MAC – qualquer um pode recalculá-lo e detetar alterações, mas não autentica a origem (não prova que foi Iago quem gerou). Sem o vínculo com o segredo, a autenticidade fica comprometida.
Alternativa C — ❌ Incorreta
Concatena o segredo com a mensagem e calcula o hash (correto para MAC), mas não criptografa o pacote. A mensagem e o hash são enviados em claro – não há confidencialidade. A autenticidade estaria garantida, mas o sigilo não.
Alternativa D — ✅ Correta ⟵ GABARITO
Realiza exatamente os passos necessários:
Concatena o valor secreto comum com a mensagem → entrada para o hash (MAC).
Calcula o hash (MAC).
Concatena a mensagem original com o MAC.
Criptografa todo o pacote (mensagem + MAC) com a chave secreta.
Isso produz confidencialidade (criptografia) e autenticidade (MAC baseado no segredo compartilhado). O destinatário descriptografa, recalcula o MAC e verifica a integridade e a origem.
Alternativa E — ❌ Incorreta
Criptografa a mensagem primeiro, depois calcula o hash da mensagem cifrada (sem usar a chave). Novamente, falta a chave no hash – o hash sobre o texto cifrado não é um MAC, pois qualquer pessoa que conheça o algoritmo pode recomputá-lo. Não autentica a origem. Para que o hash fosse um MAC, ele deveria incorporar o segredo (ex.: HMAC). Além disso, a ordem “encrypt-then-MAC” é válida, mas o MAC precisa ser calculado com a chave; sem ela, não há autenticidade.
PEGA ESSA DICA!
Lembre-se: um hash simples sem chave nunca autentica a origem – é apenas um resumo. Para autenticidade com chave simétrica, utilize um MAC (como HMAC). Para confidencialidade, criptografe. A ordem mais comum e segura é MAC-then-encrypt (calcular o MAC sobre o texto claro, depois criptografar) ou encrypt-then-MAC (criptografar, depois calcular o MAC sobre o texto cifrado). Ambas são aceitáveis, desde que o MAC use a chave.