Algoritmos para Códigos de Autenticação de Mensagens

Documentos relacionados
Códigos de Autenticação de Mensagens. Instituto de Computação - UNICAMP

UTILIZAÇÃO DE HASH CRIPTOGRAFADA PARA TRANSPORTE DE MENSAGENS (MAC), NO USO DO HMAC

Aula 5 - Integridade e Criptografia autenticada. 10 de Maio de 2016

Aula 5 - Integridade e Criptografia autenticada. 9 de Maio de 2016

Exercícios de Revisão Redes de Computadores Edgard Jamhour. SSL, VPN PPTP e IPsec

Prof. M.Sc. Charles Christian Miers

Criptografia. Aula 4: Autenticação de mensagens e canais seguros. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Segurança Informática em Redes e Sistemas

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

CAMPUS DE GUARATINGUETÁ FACULDADE DE ENGENHARIA. Introdução à Programação em C. Algoritmos: Estruturas de Repetição. Prof. Dr. Galeno.J.

Segurança a em Redes. Aula 6. Autenticação e Função Hash. Conceitos básicos MAC Hash MD5 SHA-1 HMAC. Luiz Fernando Rust. INMETRO Tel.

INE5680 SEGURANÇA DA INFORMAÇÃO E DE REDES Prova 1 04/10/2013 Turmas A e B Prova A NOME : MATRÍCULA :

Criptografia. Aula 4: Autenticação de mensagens e canais seguros. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Matriz de Compatibilidade de Segurança da Camada 2 e Camada 3 do Controller de LAN Wireless

Criptografia Assimétrica e Funções de Síntese

Introdução à Aritmética Modular. George Darmiton da Cunha Cavalcanti CIn - UFPE

Integridade. Segurança Engenharia de Software Ricardo Couto A. da Rocha

Estruturas de Repetição

Arquitetura de Computadores I

Virtual Private Network (VPN)

Bacharelado em Ciência e Tecnologia Processamento da Informação. Módulos Parte III

Presidência da República Casa Civil da Presidência da República. PARTE II-1 DECLARAÇÃO DE REGRAS OPERACIONAIS DA AC-Raiz INTEGRANTE DA ICP-Brasil

Autenticação por par de. chaves assimétricas. Bruno Follmann

Autenticação Arbitrada Newman-Stubblebine. Autenticação Arbitrada. Autenticação Arbitrada Woo-Lam. Autenticação Arbitrada Needham-Schroeder

Auxilio a Resolução da Lista de Exercícios

Matemática Discreta. Leandro Colombi Resendo. Matemática Discreta Bacharel em Sistemas de Informações

Modelos de Probabilidade e Inferência Estatística

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Com Pseudo-OTP é possível superar a primeira limitação Mas ainda tem a segunda, como evitá-la?

Eng.º Domingos Salvador dos Santos.

Introdução à Algoritmos. Aula 11

Advanced Encryption Standard

SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS TECNÓLOGO EM REDES. Professor Eduardo Maroñas Monks

Técnicas de criptografia. Funções Hash Criptografia com chave secreta Criptografia com chave pública Assinatura digital Protocolos

PTC Aula Autenticação do ponto final 5.5 Exemplo de aplicação: tornando o seguro. (Kurose, p ) (Peterson, p.

TECNOLOGIA DE CONTROLE NUMÉRICO PROGRAMAÇÃO CNC

Algoritmos & Programação

Segurança da Informação Aula 6 Principais Algoritmos Simétricos. Criptografia Assimétrica.

Avaliação e Desempenho Aula 1 - Simulação

CONCEITUAÇÃO CONCEITOS

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações

Sistemas Distribuídos Capítulo 4 - Aula 5

2. O arquivo conterá as NFS-e emitidas em determinado período, a critério do contribuinte.

Ficheiros binários 1. Ficheiros binários

Kerberos. Lucas C. Ferreira. Jun

Lista 4 Introdução à Programação Entregar até 07/05/2012

Controle de Fluxo Comandos de repetição: while e do-while

Equação e Inequação do 2 Grau Teoria

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Mecanismos Criptográficos Esquemas

Calculando seno(x)/x com o interpretador Hall.

Geração de um certificado SSL (Secure Socket Layer) em RV120W e em RV220W

GGI026 - Árvore balanceada

4. Álgebra Booleana e Simplificação Lógica. 4. Álgebra Booleana e Simplificação Lógica 1. Operações e Expressões Booleanas. Objetivos.

Exercícios de Fixação Aulas 05 e 06

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Matemática Básica Intervalos

Introdução à Segurança e Primitivas Criptográficas

Configurando o RAIO do funk para autenticar clientes do Cisco Wireless com PULO

Circuitos Aritméticos

Comandos de Desvio 1

Universidade Federal do ABC Disciplina: Natureza da Informação Lista de Exercícios 02 Códigos e conversão A/D Prof. João Henrique Kleinschmidt

5. O Mapa de Karnaugh

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

MC Teste de Mesa e Comandos Repetitivos

Auditoria e Segurança da Informação GSI536. Prof. Rodrigo Sanches Miani FACOM/UFU

Segurança da Informação

Segurança Informática em Redes e Sistemas

Guia de configuração para acesso à rede sem fios EDUROAM. Windows 7

Montadores e Compiladores

III-2 Cyclic Redundancy Check

TRANSDUTOR DE ENERGIA ELÉTRICA

Funções para limitação de velocidade do veículo

Perguntas e Respostas Nota Fiscal Avulsa eletrônica (NFAe)

Exercícios: Vetores e Matrizes

SEGURANÇA CRIPTOGRAFIA E SEGURANÇA DE DADOS. As funções de cifra são consideradas totalmente seguras se:

Padrão aberto baseado em RFC (IETF). Dois modos de funcionamento: Dois Protocolos (Mecanismos) Autenticação, Integridade e Confidencialidade

Segurança da Informação Aula 5 Criptografia. Objetivos e Tipos. Cifras de Bloco e Fluxo

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

INTERNET GROUP MANAGEMENT PROTOCOL - IGMP

INE 5323 Banco de Dados I

Criptografia Aplicada LESI / LMCC Exame de Recurso Fevereiro de 2008

Capítulo 8. Segurança de redes

Transcrição:

Algoritmos para Códigos de Autenticação de Mensagens 03/2010 Instituto de Computação - UNICAMP

Roteiro Códigos de Autenticação de Mensagens Construção baseada em cifras (CBC-MAC, CMAC) Construção baseada em hash (NMAC, HMAC) Autenticação e Sigilo

Introdução A autenticação de mensagens é um mecanismo ou serviço usado para verificar a integridade de uma mensagem. A autenticação garante que os dados recebidos sejam exatamente iguais aos enviados (ou seja, não contêm modificação, inserção, exclusão ou repetição) e que a identidade afirmada pelo emissor é válida. a criptografia simétrica oferece dois mecanismos criptográficos para autenticação: códigos de autenticação de mensagens (MACs) e funções de resumo.

Códigos de Autenticação de Mensagens (MACs) Encriptação não é um mecanismo de autenticação! Exemplo: em cifras de fluxo, a troca de um bit no texto encriptado resulta numa troca do mesmo bit no texto claro. 10010000 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 00010000 Um MAC é um algoritmo que recebe uma mensagem e uma chave secreta como entrada e produz um número de tamanho fixo (autenticador). Suponha que Alice e Beto compartilhem uma chave secreta k. Alice pode agora enviar uma mensagem m e um autenticador t = MAC k (m) para Beto, que pode autenticar a origem e o conteúdo de m recalculando t.

Construção de Códigos de Autenticação de Mensagens (MACs) Um MAC pode ser construído usando uma cifra de bloco no modo de operação CBC: CBC-MAC (mensagem de comprimento fixo): IV = 0...0. CBC-MAC (variante que usa o comprimento da mensagem ou duas chaves) CMAC (padrão NIST) Um MAC pode ser construído usando funções de resumo: NMAC, HMAC.

Construção de MACs (tentativas) Seja F (b, k) um cifrador de bloco. Dada uma mensagem m = (m 1, m 2,..., m n ) e uma chave k, queremos construir um algoritmo MAC(m, k): MAC(m, k) := F (m 1 m 1 m n, k) ataques: Se m = (m n,..., m 2, m 1 ), então MAC(m, k) = MAC(m, k). Se m = (m 1, m 1, m 2,..., m n, m 1 ), então MAC(m, k) = MAC(m, k). MAC(m, k) := F (m 1, k) F (m 2, k) F (m n, k) ataques: Se m = (m 1, m 1, m 2,..., m n, m 1 ), então MAC(m, k) = MAC(m, k). Se m = m m m então MAC(m, k) = MAC(m, k).

Construção de MACs (CBC) Entrada: F (b, k) um cifrador de bloco, k uma chave e m = m 1 m 2 m 3 m n uma mensagem. Saída: MAC(m, k). c 1 = F (m 1, k) c 2 = F (c 1 m 2, k) c 3 = F (c 2 m 3, k) c 4 = F (c 3 m 4, k). c n = F (c n 1 m n, k) MAC-CBC(m, k) := c n

MAC-CBC Ataque para mensagens de comprimento variável m A = a 1 a 2 a p m B = b 1 b 2 b q t a = MAC-CBC(m A ) t b = MAC-CBC(m B ) Ataque: m := a 1 a 2 a p t a b 1 b 2 b q MAC-CBC(m, k) = t b = MAC-CBC(m B, k)

MAC-CBC: comprimento variável m = m 1 m 2 m n n: comprimento em bits da mensagem m Algoritmo 1: 1. k n := F (n, k) (encriptar o comprimento da chave) 2. MAC(m, k) := MAC-CBC(m, k n ) Algoritmo 2: 1. m p := (n) 2 m 1 m 2 m n (acrescentar no início o comprimento da mensagem) 2. MAC(m, k) := MAC-CBC(m p, k) Algoritmo 3: 1. Gerar duas chaves k 1 e k 2 da chave k (Por exemplo: k 1 = F (1, k), k 2 = F (2, k)) 2. t = MAC-CBC(m, k 1 ) 3. MAC(m, k) := F (t, k 2 )

Códigos de Autenticação de Mensagen CMAC Algoritmo para geração de chaves Entrada: cifrador de bloco F (bloco, chave), tamanho do bloco b (64 ou 128), chave k, constantes R 64, R 128, onde R 128 = 0 120 10000111 e R 64 = 0 59 11011. Saída: chaves k 1 e k 2. 1. L = F (0 b, k) 2. Se msb(l) = 0 então k 1 = L 1 senão k 1 = (L 1) R b 3. Se msb(k 1 ) = 0 então k 2 = k 1 1 senão k 2 = (k 1 1) R b msb: o bit mais significativo

Códigos de Autenticação de Mensagen CMAC Algoritmo para calcular o autenticador Entrada: cifrador de bloco F (bloco, chave), tamanho do bloco b (64 ou 128), chave k, constantes R 64, R 128, onde R 128 = 0 120 10000111 e R 64 = 0 59 11011, mensagem m. Saída: t = MAC(m, k). 1. Aplique o algoritmo de geracão de chaves a k para produzir k 1 e k 2. 2. l = m (comprimento em bits da mensagem m) 3. Se l = 0 então n = 1 senão n = l/b 4. Escreva m = m 1 m 2 m n 1 m n; m i = b 5. Se m n é um bloco completo, seja m n = k 1 m n; senão m n = k 2 (m n 10 j ), onde j = nb l 1.

Códigos de Autenticação de Mensagem CMAC... /* Calculando t = MAC-CBC(m,k) */ 6. c 0 = 0 b 7. para i = 1 até n faça c i = F (c i 1 m i, k) 8. t = c n 9. devolver (t)

Código de Autenticação de Mensagem CMAC

CMAC: exemplo Cifrador: AES-128 chave: k = 2b7e1516 28aed2a6 abf71588 09cf4f3c chave k 1 = fbeed618 35713366 7c85e08f 7236a8de chave k 2 = f7ddac30 6ae266cc f90bc11e e46d513b mensagem m = 6bc1bee2 2e409f96 e93d7e11 7393172a ae2d8a57 1e03ac9c 9eb76fac 45af8e51 30c81c46 a35ce411 CMAC(m, k) = dfa66747 de9ae630 30ca3261 1497c827

Código de Autenticação de Mensagem: NMAC NMAC: Nested MAC Baseado na construção Merkle-Damgård Geração: use um algoritmo de geração de chaves G, que dado um parâmetro de nível de segurança s produz uma chave k. Escolha duas chaves k 1, k 2 {0, 1}. MAC: dada a mensagem m {0, 1} e chaves k, k 1, k 2, calcule o autenticador: t = MAC(m, k, k 1, k 2 ) = h(h k2 (m), k 1 ). Verificação: dada as chaves k, k 1, k 2, a mensagem m e o autenticador t, devolva 1 se e somente se t =? MAC(m, k, k 1, k 2 ).

Código de Autenticação de Mensagem: HMAC HMAC: Keyed-Hash Message Authentication Code Geração: use um algoritmo de geração de chaves G, que dado um parâmetro de nível de segurança s produz uma chave k. MAC: dada a mensagem m {0, 1} e chave k calcule: o autenticador t = MAC(m, k): MAC(m, k) = H IV ((k opad) H IV ((k ipad) m)). Verificação: dada a chave k, a mensagem m e o autenticador t, devolva 1 se e somente se t =? MAC(m, k).

HMAC: FIPS PUB 198 H : {0, 1} 264 {0, 1} m, 1. Se k = B, K 0 = k. Ir para passo 4 h : {0, 1} 8B {0, 1} m {0, 1} m 2. Se k > B, K 0 = H(k) 00 0. ( K 0 = B) 3. Se k < B, K 0 = k 00 0. ( K 0 = B) 4. Calcule s 0 = K 0 ipad (ipad = 0x36 B bytes) 5. Calcule s 1 = s 0 mensagem 6. Calcule h 1 = H(s 1 ) 7. Calcule s 2 = K 0 opad (opad = 0x5c B bytes) 8. Calcule s 3 = s 2 h 1 9. Calcule h 2 = H(s 3 ) 10. MAC(m, k) = os t bytes mais à esquerda de h 2.

Autenticacão e Sigilo Encriptar e Autenticar: 1. Calcular c = ENC(m, k 1 ), t = MAC(m, k 2 ) 2. Enviar: (c, t) Autenticar então encriptar: 1. Calcular t = MAC(m, k 2 ), c = ENC(m t, k 1 ) 2. Enviar: c Encriptar então Autenticar: (prova de segurança) 1. Calcular c = ENC(m, k 1 ), t = MAC(c, k 2 ) 2. Enviar: (c, t)