Códigos de Autenticação de Mensagens Instituto de Computação - UNICAMP
Agenda
Agenda Códigos de Autenticação de Mensagens
Agenda Códigos de Autenticação de Mensagens Construção (CBC-MAC, CMAC) Funções Hash
Agenda Códigos de Autenticação de Mensagens Construção (CBC-MAC, CMAC) Funções Hash Projeto (Merkle-Damgård)
Agenda Códigos de Autenticação de Mensagens Construção (CBC-MAC, CMAC) Funções Hash Projeto (Merkle-Damgård) Algoritmos: a família SHA (SHA-1, SHA-2)
Agenda Códigos de Autenticação de Mensagens Construção (CBC-MAC, CMAC) Funções Hash Projeto (Merkle-Damgård) Algoritmos: a família SHA (SHA-1, SHA-2) HMAC
Agenda Códigos de Autenticação de Mensagens Construção (CBC-MAC, CMAC) Funções Hash Projeto (Merkle-Damgård) Algoritmos: a família SHA (SHA-1, SHA-2) HMAC Sigilo + Autenticação
Agenda Códigos de Autenticação de Mensagens Construção (CBC-MAC, CMAC) Funções Hash Projeto (Merkle-Damgård) Algoritmos: a família SHA (SHA-1, SHA-2) HMAC Sigilo + Autenticação Padrões NIST: CMAC, SHA e HMAC
Códigos de Autenticação de Mensagens (MACs)
Códigos de Autenticação de Mensagens (MACs) A autenticação de mensagens é um mecanismo ou serviço usado para verificar a integridade de uma mensagem.
Códigos de Autenticação de Mensagens (MACs) 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.
Códigos de Autenticação de Mensagens (MACs) 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 (hash).
Códigos de Autenticação de Mensagens (MACs) 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 (hash).
Códigos de Autenticação de Mensagens (MACs)
Códigos de Autenticação de Mensagens (MACs) Um MAC é um algoritmo que recebe uma mensagem e uma chave secreta como entrada e produz um número de tamanho fixo (autenticador).
Códigos de Autenticação de Mensagens (MACs) 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.
Códigos de Autenticação de Mensagens (MACs) 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. Uma função hash mapeia uma mensagem de tamanho variável em um valor de tamanho fixo (resumo).
Códigos de Autenticação de Mensagens (MACs) 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. Uma função hash mapeia uma mensagem de tamanho variável em um valor de tamanho fixo (resumo). Encriptação não é um mecanismo de autenticação (exemplo: cifras de fluxo, a troca de um bit no texto encriptado resulta numa troca do mesmo bit no texto claro)
Códigos de Autenticação de Mensagens (MACs) 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. Uma função hash mapeia uma mensagem de tamanho variável em um valor de tamanho fixo (resumo). Encriptação não é um mecanismo de autenticação (exemplo: cifras de fluxo, a troca de um bit no texto encriptado resulta numa troca do mesmo bit no texto claro)
Construção de MACs
Construção de MACs MACs podem ser construídos usando o modo de operação CBC.
Construção de MACs MACs podem ser construídos usando o modo de operação CBC. CBC-MAC (mensagem de comprimento fixo): IV=0...0
Construção de MACs MACs podem ser construídos usando o 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)
Construção de MACs MACs podem ser construídos usando o 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)
Construção de MACs MACs podem ser construídos usando o 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) MACs podem ser construídos usando funções hash (ver HMAC)
CBC-MAC
Resumos criptográficos Uma função hash ou função de resumo é uma função que calcula uma representação condensada de uma mensagem ou arquivo. Mais precisamente, uma função de resumo recebe como entrada uma cadeia de bits de comprimento arbitrário e devolve outra cadeia de bits de comprimento fixo, chamado resumo.
Resumos criptográficos Uma função hash ou função de resumo é uma função que calcula uma representação condensada de uma mensagem ou arquivo. Mais precisamente, uma função de resumo recebe como entrada uma cadeia de bits de comprimento arbitrário e devolve outra cadeia de bits de comprimento fixo, chamado resumo. As funções de resumo podem ser utilizadas em aplicações criptográficas, tais como autenticação de mensagems enviadas através de canais inseguros e assinaturas digitais.
Propriedades das Funções de Resumo Uma função de resumo criptográfico (ou função de resumo) é uma função H : {0, 1} {0, 1} n, satisfazendo as seguintes propriedades: Resistência à primeira inversão: Dado um resumo r, é inviável encontrar uma mensagem m tal que r = H(m).
Propriedades das Funções de Resumo Uma função de resumo criptográfico (ou função de resumo) é uma função H : {0, 1} {0, 1} n, satisfazendo as seguintes propriedades: Resistência à primeira inversão: Dado um resumo r, é inviável encontrar uma mensagem m tal que r = H(m). Resistência à segunda inversão: Dado um resumo r e uma mensagem m 1 tal que r = H(m 1 ), é inviável encontrar uma mensagem m 2 m 1 tal que r = H(m 2 ).
Propriedades das Funções de Resumo Uma função de resumo criptográfico (ou função de resumo) é uma função H : {0, 1} {0, 1} n, satisfazendo as seguintes propriedades: Resistência à primeira inversão: Dado um resumo r, é inviável encontrar uma mensagem m tal que r = H(m). Resistência à segunda inversão: Dado um resumo r e uma mensagem m 1 tal que r = H(m 1 ), é inviável encontrar uma mensagem m 2 m 1 tal que r = H(m 2 ). Resistência a colisões: Dado um resumo r, é inviável encontrar mensagens m 1, m 2 tais que H(m 1 ) = H(m 2 ).
Merkle-Damgård h : {0, 1} m+m {0, 1} m H : {0, 1} {0, 1} m 1. B = x /m (número de blocos em x) 2. x = (x 1 x 2...x B 1 x B x B+1); x B+1 = x ; x B = pad(x B) 3. z 0 0 m (IV ) 4. para i = 1,, B + 1 faça 2.1 z i h(z i x i ) 5. devolver z B+1. H(x) = z B+1 Teorema Se h é uma função de comprimento fixo resistente à colisão, então a função H é uma função de resumo resistente à colisão.
O Algoritmo MD5 MD5(x) : {0, 1} 264 {0, 1} 128 Proposto por Ronald Rivest em 1991
O Algoritmo MD5 MD5(x) : {0, 1} 264 {0, 1} 128 Proposto por Ronald Rivest em 1991 MD5 é uma versão melhorada de MD4
O Algoritmo MD5 MD5(x) : {0, 1} 264 {0, 1} 128 Proposto por Ronald Rivest em 1991 MD5 é uma versão melhorada de MD4 Ataques: 1996, 2004, 2005, 2006 (Vlastimil Klima)
O Algoritmo MD5 MD5(x) : {0, 1} 264 {0, 1} 128 Proposto por Ronald Rivest em 1991 MD5 é uma versão melhorada de MD4 Ataques: 1996, 2004, 2005, 2006 (Vlastimil Klima) Operações: a + b mod 2 32, a b, a b, a b, a, a << s (ROTL s (a)).
O Algoritmo MD5
O Algoritmo SHA - The Secure Hash Algorithm SHA(x) : {0, 1} 264 {0, 1} 160 Proposto por NIST em 1993 (FIPS 180-1)
O Algoritmo SHA - The Secure Hash Algorithm SHA(x) : {0, 1} 264 {0, 1} 160 Proposto por NIST em 1993 (FIPS 180-1) SHA 1 é uma versão melhorada de SHA
O Algoritmo SHA - The Secure Hash Algorithm SHA(x) : {0, 1} 264 {0, 1} 160 Proposto por NIST em 1993 (FIPS 180-1) SHA 1 é uma versão melhorada de SHA Novos algoritmos (FIPS 180-2, 2002): SHA 224, SHA 256, SHA 384, SHA 512
O Algoritmo SHA - The Secure Hash Algorithm SHA(x) : {0, 1} 264 {0, 1} 160 Proposto por NIST em 1993 (FIPS 180-1) SHA 1 é uma versão melhorada de SHA Novos algoritmos (FIPS 180-2, 2002): SHA 224, SHA 256, SHA 384, SHA 512 Operações: a + b mod 2 32, a b, a b, a b, a, a << s (ROTL s (a)).
funções e constantes no SHA-1 (B C) (( B) D) se 0 t 19 B C D se 20 t 39 f t (B, C, D) = (B C) (B D) (C D) se 40 t 59 B C D se 60 t 79. 0x5a827999 se 0 t 19 0x6ed9eba1 se 20 t 39 K t = 0x8f 1bbcdc se 40 t 59 0xca62c1d6 se 60 t 79.
Funções de compressão SHA-1 A ROTL(A, 5) + f t (B, C, D) + E + W t + K t H i = (A, B, C, D, E) H 0 = {0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f 0} H 0 H 1 H n = SHA 1(x)
O Algoritmo SHA-1 Entrada: x; Saída: SHA(x) 1. M 1 M n Pad(x); M i = 512 2. H 0, H 1, H 2, H 3, H 4 valores inicias 3. For i = 1 to n do: 3.1 Calcule W 0, W 1,..., W 79 do bloco M i 3.2 A H 0, B H 1, C H 2, D H 3, E H 4 3.3 For i = 0 to 79 do: [A, B, C, D, E] h([a, B, C, D, E], f i, K i, W i ) 3.4 H 0 H 0 + A, H 1 H 1 + B, H 2 H 2 + C, H 3 H 3 + D, H 4 H 4 + E 4. Return (H 0, H 1, H 2, H 3, H 4 )
Funções de compressão SHA-2
O Algoritmo Whirlpool O algoritmo Whirlpool foi desenvolvido por Vicent Rijmen e Paulo Barreto, 2003.
O Algoritmo Whirlpool O algoritmo Whirlpool foi desenvolvido por Vicent Rijmen e Paulo Barreto, 2003. Adotado como o padrão ISO/IEC 10118-3:2004
O Algoritmo Whirlpool O algoritmo Whirlpool foi desenvolvido por Vicent Rijmen e Paulo Barreto, 2003. Adotado como o padrão ISO/IEC 10118-3:2004 O algoritmo Whirlpool é uma função de resumo que processa mensagens de comprimento menor do que 2 256 bits para gerar um resumo de 512 bits.
O Algoritmo Whirlpool O algoritmo Whirlpool foi desenvolvido por Vicent Rijmen e Paulo Barreto, 2003. Adotado como o padrão ISO/IEC 10118-3:2004 O algoritmo Whirlpool é uma função de resumo que processa mensagens de comprimento menor do que 2 256 bits para gerar um resumo de 512 bits. O algoritmo está baseado numa função de compressão W
O Algoritmo Whirlpool O algoritmo Whirlpool foi desenvolvido por Vicent Rijmen e Paulo Barreto, 2003. Adotado como o padrão ISO/IEC 10118-3:2004 O algoritmo Whirlpool é uma função de resumo que processa mensagens de comprimento menor do que 2 256 bits para gerar um resumo de 512 bits. O algoritmo está baseado numa função de compressão W Os autores, em março 2009, recomendaram que o algoritmo não seja utilizado em novas aplicações.
HMAC The keyed-hash Message Authentication Code, FIPS PUB 198, 2002 Entrada: uma mensagem m {0, 1} e uma chave k Saída: um autenticador t 1. Constantes: opac = 0x363636...36 ipad = 0x5c5c5c...5c 2. Gere uma chave k 0 a partir da chave k 3. t := H((k 0 opad)) H((k 0 ipad)) m))
Sigilo e Autenticação Encriptar depois autenticar: c = Enc(m, k 0 ), t = MAC(c, k 1 ), enviar (c, t)
Sigilo e Autenticação Encriptar depois autenticar: c = Enc(m, k 0 ), t = MAC(c, k 1 ), enviar (c, t) Outras opções não necessariamente seguras: Encriptar e Autenticar: c = Enc(m, k 0 ), t = MAC(m, k 1 ), enviar (c, t) Autenticar então encriptar: t = MAC(m, k 1 ), c = Enc(m t, k 0 ), enviar (c)