IA012:2014 1S:Lista V

De DCA-Wiki

IA012 A - Segurança em Comunicação de Dados

FEEC - UNICAMP

Lista de Exercícios V


SORTEADOS: 9 e 12

(1) Explique em detalhes como podemos determinar com certeza que um número qualquer é primo. Qual é o custo desta técnica para identificar números primos em geral. Esta técnica é viável na prática para identificar qualquer número primo, seja ele grande ou pequeno?


(2) Compare o esquema de troca de chaves proposto por Diffie e Helmann com a versão do mesmo esquema definida sobre curvas elípticas, apresentando pontos fortes e fracos desta nova versão.


(3) No protocolo de transporte fictício XTP são usadas duas funções hash simples de 16 bits cada: uma que faz um XOR bit a bit nos dados de 16 bits e outra chamada RXOR que faz um deslocamento circular de um bit para a direita no resultado parcial da função antes de fazer um XOR com os 16 bits do próximo dado. Os dois resultados são concatenados resultando em um código detetor de erros de 32 bits. Pergunta-se o seguinte sobre este código resultante.

  • (a) Ele é capaz de detetar todos os erros que envolvam um número ímpar de bits? Por que?
  • (b) Ele é capaz de detetar todos os erros que envolvam um número par de bits? Por que?
  • (c) Ele é adequado para ser usado como código de autenticação de mensagens? Por que?


(4) Criptografia e funções hash podem ser usadas para controlar erros na transmissão de uma mensagem. Existe o tipo de controle interno (mensagem e código detetor de erro são concatenados e cifrados) e o externo (mensagem é cifrada antes do código detetor de erros ser calculado e concatenado a ela). Além dos códigos detetores de erros, existem ainda os códigos corretores de erro, os quais não só acusam a ocorrência de algum erro durante a transmissão como também permitem que tais erros sejam corrigidos sem necessidade de uma nova transmissão. Analise a viabilidade de se implantar códigos corretores de erro nos modos interno e externo como descrito acima.


(5) No tópico relativo a assinaturas digitais intermediadas vimos que há duas maneiras de utilizar criptografia simétrica: uma na qual o intermediador pode ler a mensagem e outra na qual ele não pode ler. Mostre como estes 2 protocolos podem ser modificados para que o destinatário possa verificar a autenticidade da mensagem por si só, mas ainda havendo atuação do intermediador.


(6) Em assinaturas digitais intermediadas com criptografia assimétrica temos uma codificação tripla na primeira parte do protocolo. Como o mesmo pode ser modificado de modo a eliminar esta tripla codificação, mas mantendo as mesmas características de segurança?


(7) Considere o seguinte esquema de assinatura digital intermediada baseada em chave pública.

  • Ana --> Autoridade: IDA || EKprA [ IDA || EKpuB { EKprA ( M ) } ]
  • Autoridade --> Beto: EKprAut [ IDA || EKpuB { EKprA ( M ) } ]

Explique que problema pode ocorrer caso o remetente tenha mais de um par de chaves e um dos pares tenha sido comprometido.


(8) Considere o seguinte esquema de assinatura digital intermediada baseada em chave pública.

  • Ana --> Autoridade: IDA || EKprA [ IDA || EKpuB { EKprA ( M ) } ]
  • Autoridade --> Beto: EKprAut [ IDA || EKpuB { EKprA ( M ) } ]

Descreva qual é o tipo de aliança (acordo) entre os envolvidos que poderia surgir a fim de fraudar o sistema. Dica: a fraude se basearia em uma situação tão pouco provável que dificilmente tal aliança teria sucesso.

(9) Existem várias maneiras de se usar funções de hash para autenticar mensagens. Normalmente estas autenticações envolvem o uso de criptografia, seja da mensagem toda ou somente do código hash. Entretanto, o uso de criptografia não é essencial. Mostre como uma função de hash pode ser usada para autenticar e conferir a autenticidade de uma mensagem M sem recorrer aos recursos da criptografia. Considere a função hash como uma caixa preta cujo conteúdo (implementação) é desconhecido.


(10) Os algoritmos de chave assimétrica são úteis na codificação e distribuição de chaves de sessão descartáveis que serão usadas em algoritmos simétricos mais rápidos. Nessa distribuição deve-se ter o cuidado de evitar que repetições de mensagens interceptadas no passado possam ser usadas por invasores para se fazer passar por um usuário legítimo. Uma maneira de se contornar este problema é associar carimbos de tempo à chave de sessão sendo distribuída. Mas esta solução exige que os relógios dos vários sistemas envolvidos estejam sincronizados, o que é uma exigência difícil de ser cumprida sempre. O protocolo abaixo mostra como se pode usar números aleatórios (nonces) para distribuir chaves de sessão de forma confiável e sem recorrer a relógios. Mostre como este protocolo pode ser reduzido de 7 para 5 passos, sem perder suas características e objetivos.

Versão original

  • A --> KDC : IDA || IDB
  • KDC --> A : EKprKDC{IDB || KpuB}
  • A --> B : EKpuB{NA || IDA}
  • B --> KDC : IDA || IDB || EKpuKDC{NA}
  • KDC --> B : EKprKDC{IDA || KpuA} || EKpuB{EKprKDC(NA || IDA || IDB ||KS)}
  • B --> A : EKpuA{NB||EKprKDC(NA || IDA || IDB ||KS

Versão reduzida

  • A --> B :
  • B --> KDC :
  • KDC --> B :
  • B --> A :
  • A --> B : EKs{NB} <-- dica


(11) Explique por que os resultados da adição e multiplicação dos elementos de módulo 8 (Zn) são diferentes dos obtidos em GF(23).

(12) Usando o algoritmo estendido de Euclides, calcule o inverso multiplicativo do polinômio x + 1 em GF(23), considerando o polinômio irredutível x3 + x + 1.


(13) Determine o produto (6x2 + x + 3).(5x2 + 2) com coeficientes em Z10.


(14) Determine todos os polinômios irredutíveis de grau 3 em Z2, justificando sua resposta.


(15) Como o algoritmo AES-128 pode ser usado para se obter o resumo (hash) de 32 bits de um texto de tamanho arbitrário? Liste e explique duas características necessárias para que esta função hash de 32 bits seja considerada de boa qualidade. Qual a ordem de complexidade esperada para que um ataque de força bruta tenha sucesso sobre este hash?

Ferramentas pessoais