Exercícios MT2

Limpar todos os resolvidos?

Cifras simétricas, hash e MAC

One-time pad em bitsEscolha múltipla

Teste 2, 2024/25

Considere a cifra one-time pad da mensagem 1001110010011100 com a chave 1111000011110000. Qual é o texto cifrado associado?

A tua resposta

Solução

O texto cifrado é 0110110001101100.

No one-time pad, cada bit do texto cifrado é o XOR do bit da mensagem com o bit da chave: 1oplus1=01oplus1=0, 0oplus1=10oplus1=1, 0oplus1=10oplus1=1, 1oplus1=01oplus1=0, 1oplus0=11oplus0=1, 1oplus0=11oplus0=1, 0oplus0=00oplus0=0, 0oplus0=00oplus0=0, obtendo 0110110001101100.

  • 0110110001101100. O one-time pad faz XOR bit a bit: 10011100oplus11110000=0110110010011100 oplus 11110000 = 01101100.
  • 1111110011111100. Esse valor resulta de somar em vez de fazer XOR.
  • 1001000010010000. Esse valor resulta de aplicar AND aos bits.
  • 1001001110010011. Esse valor não corresponde a nenhuma operação bit a bit entre a mensagem e a chave.
Voltar à explicação
Cifra de substituição monoalfabéticaEscolha múltipla

Teste 2, 2024/25

Porque é que as cifras de substituição monoalfabética não garantem confidencialidade segundo os padrões criptográficos modernos?

A tua resposta

Solução

Porque os textos cifrados revelam padrões (por exemplo, frequências de letras) das mensagens originais.

Numa cifra de substituição monoalfabética, cada letra é sempre substituída pela mesma letra do alfabeto, pelo que as frequências relativas se mantêm. Um atacante pode explorar esses padrões com análise de frequências para recuperar a mensagem.

  • Porque a cifra substitui letras por outras, permitindo ler parte da mensagem original. A substituição em si não torna a mensagem legível sem a chave.
  • Porque o espaço de chaves é demasiado pequeno e um computador moderno testa a chave por força bruta. O problema não é o tamanho do espaço de chaves, mas a preservação de padrões estatísticos.
  • Porque um adversário pode adulterar a mensagem subjacente alterando o texto cifrado. Isso descreve um problema de integridade, não de confidencialidade.
  • Porque os textos cifrados resultantes revelam padrões das mensagens cifradas. A substituição preserva frequências de letras, permitindo análise de frequências.
Voltar à explicação
Colisão de uma função de hashEscolha múltipla

Teste 2, 2024/25

Considere uma função de hash HH. O que é uma colisão de HH?

A tua resposta

Solução

Uma colisão ocorre quando m1≠m2m_1 \neq m_2 mas H(m1)=H(m2)H(m_1) = H(m_2).

Uma função de hash não é injetiva em geral: o espaço de entradas é maior que o de saídas. Uma colisão é precisamente um par de mensagens distintas com o mesmo valor de hash, e a resistência a colisões exige que seja computacionalmente inviável encontrar esse par.

  • Se m1≠m2m_1 \neq m_2 e H(m1)H(m_1) produz uma saída com um prefixo semelhante ao de H(m2)H(m_2). Semelhança de prefixos não é o conceito de colisão.
  • Se m1≠m2m_1 \neq m_2 e H(m1)H(m_1) produz a mesma saída que H(m2)H(m_2). É a definição exata de colisão.
  • Acontece quando duas funções de hash percorrem direções opostas. Não tem significado criptográfico.
  • Se m1=m2m_1 = m_2 e H(m1)H(m_1) produz a mesma saída que H(m2)H(m_2). Entradas iguais não são uma colisão.
Garantias da cifragem autenticada simétricaEscolha múltipla

Teste 2, 2024/25

Qual das seguintes garantias NÃO é assegurada por uma cifragem autenticada simétrica?

A tua resposta

Solução

O não repúdio não é assegurado.

A cifragem autenticada simétrica garante confidencialidade (cifra) e integridade/autenticidade de origem (MAC com chave partilhada). Como a mesma chave secreta é conhecida pelas duas partes, nenhuma delas pode negar ter gerado a etiqueta, pelo que o não repúdio exige criptografia de chave pública com assinatura digital.

  • Não repúdio. Como a chave é partilhada, qualquer das partes pode ter produzido o MAC, logo não há não repúdio.
  • Integridade. É precisamente o que o MAC acrescenta à cifra.
  • Correção. A decifra devolve a mensagem original quando a verificação passa.
  • Confidencialidade. É a garantia base da cifra simétrica.
Voltar à explicação

Criptografia de chave pública

RSA simples é determinísticoEscolha múltipla

Teste 2, 2024/25

Considere a cifra RSA simples: chave pública (e,n)(e, n) e chave privada (d,n)(d, n), com c = m^e mod n e m = c^d mod n. Qual das seguintes afirmações é verdadeira?

A tua resposta

Solução

O RSA simples não garante confidencialidade porque é determinístico.

Como c = m^e mod n não usa qualquer valor aleatório, cifrar a mesma mensagem duas vezes produz o mesmo texto cifrado, o que permite detetar repetições e facilita ataques. Na prática usa-se RSA-OAEP, com preenchimento aleatório (padding), que torna a cifra probabilística.

  • Este esquema não garante confidencialidade porque é determinístico. Sem aleatoriedade, cifrar duas vezes a mesma mensagem dá o mesmo texto cifrado.
  • Este esquema não garante confidencialidade porque, dada um texto cifrado, um adversário recupera a mensagem. Recuperar mm a partir de cc sem dd equivale a resolver o problema RSA.
  • Este esquema é seguro contra computadores quânticos. O algoritmo de Shor quebra o RSA com um computador quântico.
  • Este esquema é seguro se a fatorização de inteiros for um problema computacionalmente difícil. Essa é a condição de segurança do RSA, mas não resolve por si a falta de confidencialidade da cifra determinística.
Voltar à explicação
Assinaturas digitais versus MACEscolha múltipla

Teste 2, 2024/25

Que garantia de segurança é assegurada por assinaturas digitais, mas não por códigos de autenticação de mensagem (MAC)?

A tua resposta

Solução

O não repúdio.

Um MAC usa uma chave simétrica partilhada, pelo que qualquer conhecedor da chave pode produzi-lo: não permite atribuir a autoria a uma entidade concreta. Uma assinatura digital usa a chave privada do signatário, pelo que só esse signatário a pode ter gerado, garantindo não repúdio.

  • Unicidade. Não é o conceito em causa.
  • Não repúdio. Só o titular da chave privada pode assinar, logo não pode negar a autoria.
  • Anonimato. As assinaturas não dão anonimato.
  • Integridade. Tanto a assinatura como o MAC garantem integridade.
Voltar à explicação
Cifrar e assinar uma mensagemEscolha múltipla

Teste 2, 2024/25

A Alice tem o par de chaves (pkA,skA)(pk_A, sk_A) e o Bob tem (pkB,skB)(pk_B, sk_B). Ambos conhecem as duas chaves públicas. A Alice quer enviar a mensagem mm ao Bob. Como deve cifrar e assinar a mensagem?

A tua resposta

Solução

Cifra-se com pkBpk_B e assina-se com skAsk_A.

Para confidencialidade, cifra-se com a chave pública do destinatário (pkBpk_B), de modo a que só o Bob, com skBsk_B, decifre. Para autenticidade e não repúdio, assina-se com a própria chave privada (skAsk_A), que só a Alice possui.

  • Cifrar com skBsk_B; assinar com pkApk_A. Usa as chaves no papel errado: cifra com a privada e assina com a pública.
  • Cifrar com pkBpk_B; assinar com skAsk_A. Só o Bob pode decifrar (chave privada skBsk_B) e só a Alice pode ter assinado (skAsk_A).
  • Cifrar com skAsk_A; assinar com pkBpk_B. Usa as chaves no papel errado.
  • Cifrar com pkApk_A; assinar com skBsk_B. A cifra ficaria apenas decifrável pela Alice e a assinatura seria do Bob.
Decifra do paradigma híbridoEscolha múltipla

Teste 2, 2023/24

No paradigma híbrido, a mensagem mm é primeiro cifrada com uma chave simétrica nova: c1←Enc(k,m)c_1 \leftarrow \mathrm{Enc}(k, m). Esse texto cifrado é enviado, bem como a cifra dessa chave com a chave pública do destinatário: c2←Enc(pk,k)c_2 \leftarrow \mathrm{Enc}(pk, k). Como se faz a decifra de tal mensagem?

A tua resposta

Solução

k←Dec(sk,c2)k \leftarrow \mathrm{Dec}(sk, c_2) e depois m←Dec(k,c1)m \leftarrow \mathrm{Dec}(k, c_1).

A chave de sessão kk foi cifrada com a chave pública do destinatário, logo só a chave privada correspondente (sksk) a recupera. Com kk recuperada, decifra-se o corpo c1c_1 com a cifra simétrica. Assim, a morosidade da cifra assimétrica aplica-se apenas a uma chave curta.

  • k←Dec(pk,c2)k \leftarrow \mathrm{Dec}(pk, c_2); m←Dec(k,c1)m \leftarrow \mathrm{Dec}(k, c_1). A decifra de c2c_2 exige a chave privada, não a pública.
  • k←Dec(sk,c2)k \leftarrow \mathrm{Dec}(sk, c_2); m←Dec(k,c1)m \leftarrow \mathrm{Dec}(k, c_1). O destinatário usa a sua chave privada para recuperar kk e depois decifra o corpo da mensagem.
  • m←Dec(sk,c1,c2)m \leftarrow \mathrm{Dec}(sk, c_1, c_2). Não existe uma decifra conjunta assim.
  • k←Dec(sk,c1)k \leftarrow \mathrm{Dec}(sk, c_1); m←Dec(c1,c2)m \leftarrow \mathrm{Dec}(c_1, c_2). Troca os papéis de c1c_1 e c2c_2.
Voltar à explicação

Modos de cifra e cifragem autenticada

Alterar bits no modo CTREscolha múltipla

Teste 2, 2024/25

Considere a cifra AES em modo CTR, com blocos de 16 bits. Se alterarmos 3 bits do segundo bloco do texto cifrado, quantos bits da mensagem original são afetados na decifra?

A tua resposta

Solução

3 bits da mensagem original ficam afetados.

No modo CTR, ci=pioplusE(k,N∣i)c_i = p_i oplus E(k, N | i), pelo que a decifra é pi=cioplusE(k,N∣i)p_i = c_i oplus E(k, N | i). Alterar 3 bits de c1c_1 altera apenas os mesmos 3 bits de p1p_1; não há propagação de erro como no CBC.

  • 19 bits. Esse valor não corresponde a nenhum efeito do CTR.
  • 0 bits. Os bits alterados propagam-se para a mensagem.
  • 16 bits. No CTR não há encadeamento de blocos, logo não se perde o bloco inteiro.
  • 3 bits. No modo CTR cada bloco de texto cifrado é XOR com o keystream; alterar 3 bits do bloco afeta exatamente esses 3 bits da mensagem.
Voltar à explicação
EtM, MtE ou EtM na cifragem autenticadaEscolha múltipla

Teste 2, 2024/25

Considere um par de chaves (k1,k2)(k_1, k_2), uma cifra EE e um MAC MM. O esquema de cifragem autenticada funciona assim: t=M(k1,m)t = M(k_1, m); c=E(k2,m∣t)c = E(k_2, m | t); devolve-se cc. Que tipo de cifragem autenticada é esta?

A tua resposta

Solução

É MAC-then-Encrypt (MtE).

A etiqueta tt é calculada sobre a mensagem em claro mm e só depois o conjunto m∣tm | t é cifrado com a chave k2k_2. Essa ordem, MAC sobre o texto em claro seguido de cifra, caracteriza o modo MAC-then-Encrypt.

  • MAC-and-Encrypt. Nesse modo o MAC de mm é enviado ao lado do texto cifrado de mm, não dentro dele.
  • MAC-then-Encrypt. Calcula-se primeiro o MAC sobre mm e depois cifra-se m∣tm | t.
  • Encrypt-and-MAC. Nesse modo cifra-se mm e calcula-se o MAC em paralelo.
  • Encrypt-then-MAC. Nesse modo cifra-se primeiro e calcula-se o MAC sobre o texto cifrado.
Voltar à explicação
Troca de chaves Diffie-HellmanEscolha múltipla

Teste 2, 2023/24

Considere a troca de chaves Diffie-Hellman: a Alice e o Bob geram xx e yy, respetivamente, e enviam X=gxX = g^x e Y=gyY = g^y pela rede. Como podem usar isto para trocar um segredo?

A tua resposta

Solução

A Alice calcula Yx=gxyY^x = g^{xy} e o Bob calcula Xy=gxyX^y = g^{xy}; esse valor comum é o segredo partilhado.

Cada parte eleva o valor recebido à sua chave privada: Yx=(gy)x=gxyY^x = (g^y)^x = g^{xy} e Xy=(gx)y=gxyX^y = (g^x)^y = g^{xy}. Um atacante que só vê gg, gxg^x e gyg^y enfrenta o problema do logaritmo discreto para obter gxyg^{xy}.

  • gxg^x e gyg^y são o mesmo valor e podem ser usados como segredo. Em geral gx≠gyg^x \neq g^y.
  • A Alice calcula YxY^x e o Bob calcula XyX^y, sendo ambos iguais a gxyg^{xy}. (gy)x=gxy=(gx)y(g^y)^x = g^{xy} = (g^x)^y.
  • A Alice calcula gxyg^{xy} e envia-o ao Bob. A Alice não conhece yy, logo não pode calcular gxyg^{xy} diretamente.
  • O segredo é gg dividido por xyx y. Não existe essa operação no protocolo.
Voltar à explicação

TLS e segurança de redes

Função do handshake TLSEscolha múltipla

Teste 2, 2024/25

Qual é o papel do protocolo de handshake no TLS?

A tua resposta

Solução

Estabelecer o material criptográfico e os parâmetros para a comunicação.

Durante o handshake, cliente e servidor autenticam-se (tipicamente o servidor via certificado), concordam cifras e parâmetros e derivam as chaves de sessão que o protocolo de registo usa depois para cifrar e autenticar os dados.

  • Divulgar a identidade dos participantes no canal. A identidade não é o objetivo central do handshake.
  • Notificar regularmente a vitalidade do canal. Isso não é função do handshake.
  • Estabelecer o material criptográfico e os parâmetros da comunicação. É o que o handshake negoceia antes da troca de dados.
  • Cifrar e decifrar as mensagens trocadas no canal. Isso é papel do protocolo de registo, não do handshake.
Voltar à explicação
TLS, PKI e cifras assimétrica e simétricaEscolha múltipla

Teste 2, 2024/25

Qual é a relação entre TLS, PKI e a criptografia de chave pública e simétrica?

A tua resposta

Solução

O TLS valida as chaves públicas através de certificados da PKI e usa-as para estabelecer uma chave simétrica de sessão.

Numa sessão HTTPS habitual, o servidor apresenta um certificado X.509 emitido por uma autoridade de certificação; o cliente valida a assinatura desse certificado (confiando na raiz da PKI) e usa a chave pública autenticada do servidor para estabelecer, por exemplo via (EC)DHE, uma chave simétrica de sessão.

  • A Alice e o Bob usam canais TLS para trocar chaves simétricas, que depois cifram as chaves públicas. As chaves públicas não são cifradas com chaves de sessão.
  • As PKI usam canais TLS para comunicar certificados, que transportam chaves simétricas. Os certificados transportam chaves públicas, não simétricas.
  • As assinaturas digitais autenticam chaves simétricas, que depois autenticam os utilizadores no protocolo TLS. Confunde o papel das assinaturas no handshake.
  • O TLS usa certificados de uma PKI para validar chaves públicas, que são depois usadas para estabelecer uma chave simétrica e criar um canal seguro. Descreve corretamente a cadeia de confiança e a derivação da chave de sessão.
Voltar à explicação
IPsec e falsificação de IPEscolha múltipla

Teste 2, 2024/25

Porque é que o IPsec é resiliente à falsificação de endereços IP (IP spoofing), ao contrário do TLS?

A tua resposta

Solução

Porque o IPsec opera na camada de rede e autentica o conteúdo dos cabeçalhos IP.

Com o Authentication Header (AH), o IPsec calcula um MAC sobre o cabeçalho IP (incluindo os endereços de origem e destino), pelo que pacotes com endereços forjados falham a verificação. O TLS opera acima da camada de rede e não protege o cabeçalho IP.

  • Porque o IPsec usa mecanismos de cifra mais fortes que o TLS. A força da cifra não é o que impede o spoofing.
  • Porque o IPsec existe na camada de rede e pode validar o conteúdo dos cabeçalhos IP. O AH/ESP autenticam o cabeçalho IP, detetando endereços forjados.
  • Porque o IPsec é usado em firewalls, que validam origem e destino dos pacotes. Isso descreve a filtragem da firewall, não o IPsec.
  • Devido ao protocolo de acordo de algoritmos usado no IPsec. O acordo de algoritmos não impede o spoofing.
Voltar à explicação
Ataque de Rogue DHCPAutoavaliação

Exame final, 2021/22

Descreva um ataque de Rogue DHCP e explique porque pode ser útil no contexto do lançamento de ataques man-in-the-middle.

Solução

Um Rogue DHCP é um servidor DHCP falso na rede local que responde aos pedidos dos clientes antes do servidor legítimo, distribuindo como gateway ou servidor DNS uma máquina do atacante. Assim, o tráfego da vítima passa pela máquina do atacante, que pode intercetá-lo ou modificá-lo (man-in-the-middle).

O DHCP não autentica as respostas: o cliente aceita o primeiro servidor que responder. Se o atacante colocar um servidor falso na rede, consegue indicar-se a si próprio como gateway padrão ou como DNS, fazendo passar por si todo o tráfego da vítima, que pode então ler ou alterar antes de reencaminhar.

Confere a tua resposta:

  • A resposta descreve um servidor DHCP falso que responde antes do servidor legítimo.
  • A resposta indica que o atacante distribui endereços IP e o endereço do gateway/DNS próprio.
  • A justificação liga o controlo do gateway/DNS ao redirecionamento do tráfego da vítima (MITM).
Voltar à explicação

Segurança Web e autenticação

Vulnerabilidade de injeção SQLAutoavaliação

Exame final, 2021/22

Considere o código seguinte, que prepara uma consulta SQL. Identifique a vulnerabilidade que contém.

uName = getRequestString("username");
uPass = getRequestString("userpassword");

sql = 'SELECT * FROM Users WHERE Name ="' +
      uName + '" AND Pass ="' + uPass + '"';

Solução

O código é vulnerável a injeção SQL: os valores de username e userpassword são concatenados diretamente no texto da consulta, sem qualquer escapagem ou consulta parametrizada.

Se o utilizador introduzir " OR "1"="1 no campo do nome, a consulta torna-se SELECT * FROM Users WHERE Name ="" OR "1"="1" AND Pass ="...", que é verdadeira para todas as linhas, permitindo autenticação sem palavra-passe. A correção passa por consultas parametrizadas (prepared statements), que tratam os dados como dados e nunca como código SQL.

Confere a tua resposta:

  • A resposta identifica injeção SQL (SQL injection).
  • A justificação explica que os parâmetros do utilizador são concatenados diretamente na consulta.
  • A resposta indica um exemplo de entrada maliciosa que altera a condição (por exemplo, " OR "1"="1).
Voltar à explicação
XSS refletido versus XSS armazenadoAutoavaliação

Exame final, 2021/22

Qual é a diferença entre um ataque reflected XSS e um ataque stored XSS?

Solução

No XSS refletido, o script malicioso é injetado num pedido da vítima (por exemplo, num parâmetro do URL) e o servidor devolve-o na resposta, sem o validar. No XSS armazenado, o script é guardado permanentemente no servidor (por exemplo, num comentário ou perfil) e é servido a todas as vítimas que acedem à página afetada.

Em ambos os casos o navegador da vítima executa código JavaScript do atacante no contexto da origem legítima. A diferença está na persistência: o refletido exige enganar a vítima para seguir um link especial, enquanto o armazenado persiste no servidor e atinge automaticamente todos os visitantes, sendo potencialmente muito mais grave. A defesa comum é a sanitização/validação de todas as entradas e a codificação das saídas consoante o contexto.

Confere a tua resposta:

  • A resposta explica que no XSS refletido o script malicioso vem no próprio pedido (por exemplo, num parâmetro do URL).
  • A resposta indica que o servidor reflete esse script na resposta sem o sanitizar.
  • A resposta explica que no XSS armazenado o script fica guardado no servidor (por exemplo, numa base de dados) e é servido a todos os visitantes.
Voltar à explicação
Armazenamento de palavras-passe com saltAutoavaliação

Exame final, 2021/22

Considere três servidores que guardam credenciais de utilizadores: o servidor A guarda (username,password)(username, password) em claro; o servidor B guarda (username,H(password))(username, H(password)); e o servidor C guarda (username,salt,H(salt,password))(username, salt, H(salt, password)), em que o salt é gerado independentemente para cada utilizador. Explique porque é que as garantias de segurança, em caso de fuga da base de dados (data breach), são superiores no servidor C.

Solução

No servidor A, uma fuga expõe diretamente as palavras-passe. No servidor B, os hashes sem salt podem ser atacados com tabelas rainbow ou dicionários pré-computados, e utilizadores com a mesma palavra-passe têm o mesmo hash. No servidor C, o salt aleatório e único por utilizador inviabiliza as tabelas pré-computadas e obriga a um ataque de força bruta individual por conta, aumentando muito o custo do ataque.

O salt não torna o hash mais forte por si só, mas elimina os atalhos coletivos: sem salt, um atacante calcula H(p)H(p) para milhões de palavras-passe uma única vez e compara com todos os hashes da base de dados. Com salt único por utilizador, cada hash exige um ataque separado, pelo que a fuga de credenciais fica contida.

Confere a tua resposta:

  • A resposta compara os três esquemas: texto em claro, hash sem salt e hash com salt.
  • A justificação menciona ataques de dicionário e tabelas rainbow contra hashes sem salt.
  • A resposta explica que o salt único por utilizador impede o uso de tabelas pré-computadas e obriga a atacar cada hash individualmente.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.