Você está na página 1de 15

Cdigos de Autenticao de Mensagem e o

padro SHA-3
Marco Antnio Lasmar Almada

Resumo
Cdigos de Autenticao de Mensagem (MACs) so utilizados para garantir a integridade de mensagens enviadas em um canal inseguro. Uma
construo bem difundida de MACs a HMAC, que utiliza funes de resumo para a gerao de cdigos de autenticao. Como o HMAC envolve
o uso de uma chave compartilhada apenas entre as partes da comunicao
como parmetro da funo de resumo, a segurana da construo depende
do hash subjacente.
Uma segunda construo possvel de MACs faz uso do K ECCAK, algoritmo baseado na ideia de funes-esponja e recentemente selecionado pelo
NIST como o padro SHA-3. Pelas propriedades de segurana que foram
verificadas at o momento para o K ECCAK, este se mostra uma boa opo
para autenticao de mensagens baseada em resumo, tanto em uso direto,
quanto combinada com HMAC. Assim, o K ECCAK oferece uma soluo
com perspectivas de validade a longo prazo para a gerao de MACs.
Palavras-chave: Funes criptogrficas de hash, MAC, SHA-3

Introduo

Cdigos de Autenticao de Mensagem so um mecanismo utilizado em comunicaes por um canal inseguro, em que uma chave compartilhada entre as
partes da comunicao empregada para garantir que a mensagem no foi alterada no trajeto. O emissor utiliza algum procedimento para gerar um cdigo de
autenticao de mensagem, que enviado junto com a mensagem a ser transmitida. Ao receber a mensagem, o emissor utiliza o mesmo processo para gerar um
Universidade

Estadual de Campinas. E-mail: ra092208@students.ic.unicamp.br

cdigo de autenticao da mensagem recebida; a mensagem enviada ser considerada ntegra se e somente se o cdigo de autenticao gerado e o cdigo recebido
forem iguais. O presente texto tem por objetivo apresentar duas construes que
podem ser utilizadas para a gerao de cdigos de autenticao de mensagem.
Como um preldio discusso dos mtodos, realizada uma breve discusso
sobre funes de resumo criptogrficas, do ponto de vista de segurana. Tambm so apresentadas as funes-esponja, que surgem como uma generalizao
do conceito de funo de resumo aplicvel a vrios problemas de criptografia,
dentre eles o problema de gerao de cdigos de autenticao de mensagem.
O primeiro mtodo a ser discutido para a gerao de cdigos de autenticao
de mensagem o HMAC, descrito em [3] por Bellare, Canetti e Krawczyk. Dada
uma mensagem e uma chave secreta, a construo proposta em [3] para o HMAC
gera uma etiqueta HMACK (m) a partir de duas aplicaes aninhadas de uma funo criptogrfica de resumo H. A chave secreta transformada e combinada com
o texto e com o resultado do primeiro resumo, fornecendo a entrada para a segunda funo de resumo, cuja sada utilizada como cdigo de autenticao de
mensagem. Com isso, se obtm uma funo de resumo chaveada, isto , cuja sada
dependente da chave utilizada na gerao. A segurana da construo HMAC
depende das propriedades criptogrficas da funo de resumo escolhida. [2][3]
Outra soluo possvel para a gerao de cdigos de autenticao de mensagem o uso do SHA-3, novo padro de algoritmos criptogrficos de resumo. [10]
O algoritmo do SHA-3 foi selecionado em uma competio conduzida em trs
fases entre 2007 e 2012, com o objetivo de fornecer uma soluo de hashing baseada em princpios distintos daqueles subjacentes ao SHA-2, padro atual que,
apesar de ainda seguro na prtica, est sujeito a certas vulnerabilidades tericas.
[8]
O K ECCAK, descrito em [6] para a terceira fase da competio do SHA-3,
um algoritmo baseado no princpio de funes-esponja, uma generalizao da
ideia de funes de resumo capaz de gerar sadas de tamanho arbitrrio a partir de
entradas de tamanho arbitrrio. Alm disso, as especificaes da competio para
a qual o K ECCAK foi construdo visam evitar diversas vulnerabilidades conhecidas em outros algoritmos de criptografia, em particular ataques de extenso. Com
isso, ele pode ser utilizado tanto como ncleo do HMAC quanto de maneira mais
direta para a gerao de cdigos de autenticao de mensagem.
Ao final, so descritas as perspectivas futuras para o uso de ambas as construes na gerao de cdigos de autenticao de mensagem, assim como algumas
possibilidades em aberto para investigao futura.

Funes de Resumo

Funes de resumo so primitivas criptogrficas que, a partir de uma mensagem m de tamanho arbitrrio, geram uma sntese d cujo tamanho independe
da mensagem. Esta sntese pode ser empregada como um identificador da mensagem em diversas aplicaes criptogrficas, como armazenamento de senhas e
esquemas de assinaturas digitais. Uma aplicao de particular interesse para os
fins deste texto o uso em esquemas de autenticao de mensagens. [12]
Para lidar com mensagens de tamanho arbitrrio, implementaes de funes
de resumo costumam utilizar uma abordagem iterativa, processando blocos de b
bits a cada iterao. Caso o tamanho da mensagem no seja um mltiplo de b bits,
os blocos de tamanho insuficiente devem ser expandidos, em geral de uma forma
especificada no prprio algoritmo de resumo.

2.1

Funes Criptogrficas de Resumo

Uma funo de resumo adequada para fins criptogrficos deve possuir trs
propriedades: ser unidirecional, possuir resistncia de segunda pr-imagem e resistncia coliso. [12] A unidirecionalidade ou resistncia de pr-imagem de
uma funo consiste na impossibilidade de se obter uma mensagem m a partir de
sua sntese d. Caso a funo de resumo no seja unidirecional, terceiros podem
utilizar a sntese para a reconstituio da mensagem, o que, alm de comprometer o sigilo da mensagem original, pode servir de ponto de partida para outros
ataques.
Como o espao de entradas possveis para uma funo de resumo ilimitado,
ao passo que a sada da funo limitada, existe em teoria um nmero infinito
de mensagens que so mapeadas em uma mesma sntese, graas ao princpio da
casa dos pombos. No caso de cdigos de autenticao de mensagem, tal vulnerabilidade d margem a um ataque conhecido como ataque de extenso de comprimento.
Seja um cdigo de autenticao m = H(K||x) gerado a partir de uma funo de
resumo H aplicada sobre a mensagem x, com a chave secreta K adicionada como
prefixo da mensagem. Uma parte maliciosa que intercepte a mensagem pode, sem
conhecer a chave, gerar uma mensagem cujo contedo seja diferente da mensagem
enviada, e adicionar caracteres semanticamente vazios (como o NUL do ASCII) at
encontrar uma mensagem alterada que gere a mesma sntese m; como o cdigo de
autenticao de mensagens gerado pela mensagem recebida ser igual ao cdigo
transmitido, o receptor da mensagem no ter como verificar que aquela no foi a
3

mensagem enviada pelo emissor.


Contra este tipo de ataque, a defesa a resistncia de segunda pr-imagem ou
resistncia fraca a colises: a funo de resumo deve ser tal que, a partir de uma
mensagem x1 e de sua sntese H(x1 ), seja impossvel construir uma mensagem
x2 tal que H(x1 ) = H(x2 ).[12] Caso esta propriedade seja satisfeita, um elemento
malicioso ainda pode tentar encontrar estas colises gerando um grande nmero
de mensagens e computando as snteses destas; porm, caso o tamanho da sada da
funo de resumo seja suficientemente grande, este ataque logo se torna invivel.
A resistncia forte a colises uma condio mais estrita: enquanto a resistncia fraca exige que seja invivel encontrar uma mensagem x2 que gere a mesma
sntese de uma mensagem x1 em especfico, a resistncia forte a colises exige
que seja computacionalmente invivel encontrar quaisquer duas mensagens x1 e
x2 que gerem a mesma sntese.
Uma estratgia de busca de colises baseada no paradoxo dos aniversrios
tem uma probabilidade de 50% de encontrar colises ao gerar os resumos de 20.5h
mensagens, onde h o tamanho em bits da sada da funo de resumo. Isso
oferece um limite superior para a segurana de uma funo de resumo; porm,
ataques mais eficazes podem ser possveis, o que ocorreu com funes de resumo
como o MD5. [12]
Uma funo de resumo deve satisfazer as trs propriedades para que possa
ser considerada segura para usos criptogrficos. Algumas aplicaes, no entanto,
podem realizadas seguramente por funes que no satisfaam todas as trs; por
exemplo, a unidirecionalidade e a resistncia fraca a colises so condies suficiente para que o HMAC seja considerado seguro. [1] Assim, mesmo funes
que no oferecem todas as garantias elencadas acima podem ser utilizadas para a
construo de funes criptogrficas.

2.2

Funes-esponja

Funes-esponja so uma generalizao da ideia de funes de resumo para


a gerao de sadas de tamanho arbitrrio. Para isso, elas fazem uso de uma
construo iterada capaz de receber entradas de tamanho arbitrrio e, a partir de
uma transformao ou permutao de tamanho fixo, gerar a sada do tamanho
desejado. A descrio a seguir apresentada foi proposta originalmente em [4], e
serve como base para o algoritmo K ECCAK.
Uma funo-esponja F tem em seu ncleo uma transformao ou permutao
f que opera sobre b bits, onde b a largura. A largura pode ser expressa como

a soma de duas outras variveis: a taxa de bits r e a capacidade c; ou seja, a


construo de esponja opera com um estado descrito por b = r + c bits.
A inicializao da funo-esponja consiste em inicializar todos os bits do estado com valor zero e em dividir a entrada em blocos de r bits. Caso o tamanho
da entrada no seja mltiplo de r, necessrio usar algum esquema de expanso
(padding) para que ela passe a s-lo.
Aps a inicializao, o algoritmo passa para a fase de absoro. Para cada
bloco de r bits da entrada, o algoritmo:
substitui os r primeiros bits do estado de F pelo ou-exclusivo entre estes
bits e o bloco de entrada;
aplica a funo f ao estado de F.
A fase de absoro termina quando todos os blocos da mensagem forem processados como descrito acima, quando o algoritmo passa para a fase de espremedura
(ou squeezing).
Para cada chamada funo na fase de espremedura, o algoritmo:
retorna os r primeiros bits do estado de F como blocos de sada;
aplica a funo f ao estado de F.
O nmero de blocos de sada definido a critrio do usurio.

3
3.1

Cdigos de Autenticao de Mensagem


Introduo

Um Cdigo de Autenticao de Mensagem tambm conhecido como MAC


(do ingls Message Authentication Code) um esquema de chave simtrica, isto
, envolve o uso de uma chave K compartilhada entre emissor e receptor (e mais
ningum). Dada uma mensagem x, a chave K utilizada com o MAC para gerar
uma etiqueta m = MACK (x) para a mensagem. Esta etiqueta transmitida junto
com a mensagem pelo canal inseguro.[3] [12]
O receptor receber uma mensagem x0 com uma etiqueta m0 . Para fazer a
validao da mensagem recebida, ele gera a etiqueta MACK (x0 ). Como o clculo
de MAC depende da chave K, que s conhecida pelas duas partes legtimas da
comunicao, uma boa funo de autenticao nos garante que qualquer alterao
5

sofrida por x0 para torn-la diferente de x resultaria em MACK (x0 ) 6= m0 . Logo, a


integridade da mensagem garantida. [2]
O uso de um cdigo de autenticao de mensagem garante a autenticidade da
mensagem: o receptor saber que a mensagem veio do emissor, j que apenas os
dois em tese conhecem a chave utilizada para a gerao do MAC. Porm, no
possvel garantir a no-repudiao: como o processo simtrico, no h como
provar para uma terceira parte que a mensagem de fato veio do emissor e no do
prprio receptor. [12]
Outros problemas em potencial no uso de cdigos de autenticao de mensagem esto relacionados ao tamanho da mensagem: por um lado, o tamanho da
mensagem pode variar; por outro, gerar cdigos muito grandes pode tornar invivel o uso do mecanismo. Para solucionar isso, convenciona-se que MACs devem
aceitar mensagens de tamanho arbitrrio, e que as etiquetas geradas devem ter um
tamanho fixo. [12]

3.2

A construo HMAC

Uma primeira abordagem para a construo de cdigos de autenticao de


mensagens fazia uso de cifras de bloco, como o DES. [3] Porm, em meados da
dcada de 1990, fatores polticos e tcnicos despertaram um interesse no uso de
funes de resumo como base para MACs, em especial o desempenho das funes
de resumo em comparao com as cifras de bloco. [2]
3.2.1

Estrutura do HMAC

Para fazer uso de funes de resumo em um em um esquema de autenticao


de mensagens, preciso levar em conta que estas funes no satisfazem naturalmente muitas das propriedades exigidas por um MAC: por exemplo, elas no
fazem uso de uma chave. Ento, essas funes devem ser utilizadas como parte
de uma construo que garanta que o sistema final satisfaa todas as propriedades
de um MAC. [2]
Uma proposta nesse sentido foi o HMAC, proposto por Mihir Bellare, Ran
Canetti e Hugo Krawczyk como uma soluo para autenticao de mensagens na
Internet. O HMAC surgiu como uma variante prtica do NMAC, modelo mais
abstrato para funes de resumo chaveadas que se baseia no aninhamento de funes para a gerao do cdigo de autenticao da mensagem.[2]
A descrio original do HMAC [3] previa o uso de uma funo de resumo H
com blocos de tamanho b bytes, que toma uma entrada de tamanho arbitrrio e
6

produz uma sada de l bits. Sejam, alm disso, x a mensagem a ser autenticada e
K a chave compartilhada pelas partes legtimas da comunicao.
A etiqueta de autenticao gerada pelo HMAC
HMACK (x) = H((K opad)||H((K ipad)||x)),
onde ipad o byte 0x36 repetido b vezes e opad o byte 0x5C repetido b vezes.
A chave no deve ter mais que b bytes, e, caso seja menor que isso, deve ter zeros
adicionados ao seu final, de forma a obter uma chave de b bytes para a realizao
do XOR. As constantes ipad e opad servem para aumentar a segurana no caso
em que a chave tem originalmente menos que b bytes.
Como no caso geral do MAC, a etiqueta computada transmitida com a mensagem e comparada com a etiqueta computada pelo receptor. O uso de uma boa
funo de resumo garantir que a mensagem recebida x0 no ter sido adulterada
se e somente se a etiqueta HMACK (x0 ) obtida a partir dela for condizente com a
etiqueta recebida junto com x0 . [12]
3.2.2

Segurana

Para satisfazer as condies esperadas de um cdigo de autenticao de mensagem, a construo HMAC deve ser segura, o que, para um MAC, significa ser
resistente a falsificao. Em [2], os autores mostram que um terceiro que, sem
conhecer a chave K, consiga determinar a etiqueta HMACK (x) associada a algum
texto x tambm consegue quebrar a funo de espalhamento subjacente com o
mesmo esforo; desta forma, o HMAC seguro se a funo de resumo for uma
funo pseudo-aleatria e livre de colises. [3]
Este resultado foi posteriormente estendido por Bellare [1] para mostrar que
a funo de resumo ser pseudo-aleatria condio suficiente para que o HMAC
seja um MAC seguro, isto , que um terceiro no consiga gerar a etiqueta correspondente a um dado texto sem conhecer a chave secreta entre as partes da
comunicao.
Contra algumas funes de resumo que sabidamente no satisfazem a condio de [1], possvel criar ataques que diferenciem HMAC gerados a partir destas
funes aleatrias ou do HMAC de funes aleatrias, o que pode servir como
ponto de partida para um ataque.[9] Porm, no caso geral, a construo torna impraticveis alguns ataques conhecidos contra funes criptogrficas de espalhal
mento: ataques de aniversrio, para a busca de colises, exigiriam a coleta de 2 2
pares mensagem-MAC para um HMAC de l bits,[3] enquanto ataques de extenso
7

so inviabilizados pelo uso de duas chamadas aninhadas funo de resumo. [2]


A principal vulnerabilidade da construo do HMAC, portanto, reside na escolha
das funes de resumo.

Um novo padro de resumo: SHA-3

Graas importncia das funes de resumo para a implementao do HMAC


e de outras funes criptogrficas, vrios algoritmos e implementaes de resumo
foram propostas. Algumas logo apresentam falhas; outras, por serem resistentes
aos ataques conhecidos, acabam se tornando padres de fato ou de direito.
Um dos padres estabelecidos de funes de resumo o SHA-2 (do ingls
Secure Hash Algorithm), que consiste em uma famlia de seis funes com diferentes tamanhos de sntese. Apesar de o SHA-2 ainda ser considerado seguro,
[12] a existncia de ataques tericos contra o SHA-2 (e que j comprometeram o
uso de seu antecessor, o SHA-1) motivou o NIST1 a dar incio a uma competio em busca de um novo padro para funes de resumo baseado em princpios
diferentes daqueles que nortearam a criao do SHA-1 e do SHA-2. [10]

4.1

Um novo padro: SHA-3

A competio para definir o padro a ser adotado como SHA-3 teve incio em
2007, com uma chamada pblica para a submisso de algoritmos. Das sessenta e
quatro submisses feitas para a competio, o NIST selecionou cinquenta e uma
para uma primeira rodada, das quais catorze foram selecionadas para uma segunda
etapa. A terceira fase iniciou-se em 2011, com a seleo de cinco algoritmos
finalistas; os autores dos finalistas puderam efetuar ajustes em relao s suas
submisses origniais. [8]
O critrio principal considerado na avaliao dos algoritmos foi a segurana:
sob esse prisma, foram avaliadas a segurana dos algoritmos nas aplicaes tpicas
de funo de espalhamento; o suporte dos algoritmos a HMAC, a funes pseudoaleatrias e a resumos aleatorizados; a resistncia a ataques conhecidos contra
funes de espalhamento; dentre outras consideraes de segurana. Tais critrios
foram avaliados a partir do feedback da comunidade criptogrfica ao longo do
processo de seleo. [8]
1 rgo do governo americano responsvel,

dentre outras atribuies, pela definio de padres

tecnolgicos.

Um segundo critrio foi a avaliao de custo e desempenho do algoritmo, tanto


em termos de eficincia computacional quanto dos requisitos de memria, feita
a partir de benchmarks com os algoritmos da competio. A flexibilidade e a
simplicidade dos algoritmos propostos foram critrios tercirios de avaliao, com
o objetivo de valorizar a adaptabilidade e a transparncia nas implementaes.[8]
Ao longo do processo, a comunidade da rea de criptografia teve a oportunidade de submeter comentrios e consideraes sobre os candidatos, seja para o
NIST, seja na lista de e-mails criada para a discusso do concurso, seja em conferncias sobre o tema. [8] Tais mudanas resultaram em propostas de alteraes
para os algoritmos, algumas das quais foram incorporadas pelos candidatos nas
submisses para cada fase da competio.
Aps o fim do processo de avaliao, o K ECCAK foi escolhido pelo NIST
como o algoritmo mais adequado aos requisitos, tendo apresentado desempenho
comparvel ao do SHA-2 em implementaes em software e relao throughput/rea superior nas implementaes em hardware. [8] [6]

4.2

O algoritmo vencedor: K ECCAK

Esta sesso apresentar o K ECCAK de acordo com a submisso feita pelos autores do algoritmo para a terceira fase da competio do SHA-3. [6] O algoritmo
consiste em uma famlia de funes-esponja 2 K ECCAK[r, c], em que o estado da
construo descrito por r + c bits, dos quais r so alterados por bits da mensagem entre cada aplicao da funo de permutao K ECCAK- f , cuja largura de
b = r + c bits.
A capacidade c do algoritmo pode ser escolhida independentemente do tamanho do bloco de sada do algoritmo; porm, a definio restringe a soma r + c ao
conjunto {25, 50, 100, 200, 400, 800, 1600}. A escolha do valor de c determina o
nvel de segurana que se pode esperar da funo.
A funo deve ser capaz de lidar com entradas de tamanho arbitrrio. Porm, o
tamanho do bloco da entrada da funo K ECCAK- f determinado pela soma r +c,
o que exige que a entrada seja um mltiplo deste tamanho. Para lidar com entradas
cujo tamanho no mltiplo de b, necessrio definir um de preenchimento (ou
padding) que estenda as entradas a um tamanho adequado.
Na terceira rodada da competio, [6] os autores decidiram adotar a regra
10*1, que consiste em adicionar mensagem dois bits 1, intercalados por pelo
menor nmero de zeros que torne o tamanho da mensagem resultante um mltiplo
2 Ver

subseo 2.2

de b bits.
O acolchoamento adicionar no mnimo dois bits e no mximo um bloco mais
um bit; este ltimo caso ocorre quando o tamanho da entrada uma unidade menor
do que um mltiplo de r + c, situao na qual a adio de dois bits faz com que
a diviso da mensagem em blocos desse tamanho resulte em um bloco a mais do
que antes, bloco este que precisar ser preenchido inteiramente pelos zeros e pelo
1 final.
O K ECCAK possui trs parmetros controlveis: a largura b da permutao
K ECCAK- f , a capacidade c da funo e o nmero nr de rodadas da funo de
permutao. Em [6], os autores propem o K ECCAK [], uma variante da funo
com valores-padro para as variveis: largura de 1600 bits, por motivos que sero discutidos na subseo 4.3; capacidade de 576 bits, para que a complexidade
esperada do ataque genrico seja da ordem de 2288 ; e 24 rodadas de permutao,
como equilbrio entre segurana e desempenho.
A competio do SHA-3 definia que o algoritmo deveria ser capaz de gerar
pelo menos quatro tamanhos de snteses: 224, 256, 384 e 512 bits, com os nveis
de segurana associados. Para gerar tais sadas, a soluo do K ECCAK consiste
em truncar a sada da funo
K ECCAK[r = 1600 2n, c = 2n],
com n {224, 256, 394, 512}, de forma que sejam mantidos os n bits mais significativos da sada. De forma geral, um nvel de segurana de n bits pode ser obtido
definido a capacidade da funo de permutao K ECCAK- f como 2n bits, uma vez
que um ataque genrico (como o do paradoxo do aniversrio) ter complexidade
esperada de 20.5c . [5]
Foi proposta pelos autores de [6] uma implementao de referncia em software utilizando a linguagem C, assim como o uso de K ECCAK T OOLS como uma
referncia para a implementao do algoritmo em C++. Em [7], os autores oferecem um guia para as questes relativas implementao do K ECCAK em software
e hardware, incluindo a discusso de vulnerabilidades contra ataques de canais laterais.

4.3

A funo de permutao K ECCAK- f

A construo esponja faz uso de uma funo de permutao tanto em sua fase
de absoro quanto em sua fase de espremedura, adicionando perturbao aos
dados absorvidos. Para que a funo de esponja seja criptograficamente segura, a
funo de esponja escolhida deve possuir propriedades estatsticas adequadas.
10

O K ECCAK tem em seu cerne a famlia de funes de permutao K ECCAKf [b], descrita em [5], em que a largura da permutao dada por
b = r + c {25, 50, 100, 200, 400, 800, 1600}.
O valor da largura define o parmetro ` por b = 25 2` , que por sua vez define
o nmero nr de rodadas necessrias para o algoritmo a partir da equao nr =
12 + 2`.
O estado a do algoritmo representado como uma array tridimensional 5
5 w de elementos do corpo finito GF(2), com w = 2` ; um bit do estado ser denotado por a[x][y][z], com x, y Z5 e z Zw . Convencionaram-se nomes especficos para as partes unidimensionais do estado: uma linha possui y e z constantes
(tendo, portanto, cinco elementos com diferentes valores de x); uma coluna de
cinco elementos possui x e z constantes; e uma faixa de w elementos possui x e y
constantes. As partes bidimensionais tambm possuem nomes especficos: uma
folha um subconjunto 5w com x constante; um plano 5w possui y constante;
e uma fatia 5 5 possui z constante. A figura 1, originalmente apresentada em
[5], mostra as partes do estado do K ECCAK.
A execuo da funo de permutao consiste na aplicao de nr rodadas R.
Cada rodada pode ser descrita como uma composio de cinco funes aplicadas
sobre os parmetros de entrada:
R = ,
em que as duas primeiras operaes e so aplicadas sobre cada elemento do
estado, um rearranjo das faixas do estado, aplicada nas folhas do estado, e
a soma do estado com uma constante de rodada. A descrio mais precisa das
operaes pode ser vista em [5]; porm, a viso de alto nvel apresentada acima
mostra o carter bottom-up das transformaes no estado, isto , as mudanas
ocorrem dos elementos de menor dimensionalidade para os de maior dimensionalidade.
Na submisso final do K ECCAK, os autores propuseram o uso da funo K EC CAK - f [1600], uma vez que esta verso da funo de permutao pode ser utilizada
para gerar todas as variantes de K ECCAK- f alm de K ECCAK []: o usurio pode
definir a capacidade da funo conforme as necessidades do uso, uma vez que
valores menores de c resultam em um nvel de segurana menor, mas resultam em
ganho de desempenho. As sadas de tamanhos n < 1600bits podem ser geradas
truncando a sada de K ECCAK- f [1600] aos primeiros n bits. [6]
11

Figura 1: Partes do estado do K ECCAK.

12

Concluses e Desdobramentos Futuros

O HMAC oferece uma construo simples e verstil para a gerao de cdigos


de autenticao de mensagem. Como a construo no depende de nenhuma cifra
ou funo de resumo especficos, ela pode ser empregada em qualquer situao
em que se faa uso de criptografia de chave simtrica, e a implementao pode ser
facilmente adaptada para as necessidades especficas de um dado cenrio.
A segurana do HMAC est intimamente relacionada s propriedades estatsticas da funo de resumo escolhida. Embora o esquema em si seja seguro, a
adoo de uma funo sujeita a colises ou outras vulnerabilidades pode resultar
em um esquema de autenticao inseguro. Porm, o sistema demonstradamente
seguro para funes pseudo-aleatrias, o que inclui as funes seguras de resumo
criptogrfico. Ento, escolher uma funo de resumo segura o bastante para
garantir uma funo de autenticao segura pela construo HMAC.
Caso a funo de resumo em uso no possua as propriedades criptogrficas
necessrias para garantir a segurana do HMAC, a soluo tima seria abandonla por uma construo mais segura de resumos. Isso nem sempre possvel, no
entanto: por exemplo, em um contexto em que se utiliza hardware ultrapassado
ou software legado para a gerao de resumos e a substituio invivel.
Uma vez que os ataques conhecidos contra implementaes do HMAC baseadas em funes inseguras de resumo se baseiam na identificao destas funes,
[9] uma forma de estender a vida til destas funes seria modificar a construo
para tentar a funo de resumo subjacente a uma dada implementao. Parece
pouco provvel, no entanto, que a adio de operaes adicionais ou termos de
padding consiga compensar a previsibilidade advinda do uso de funes inseguras de resumo.
O processo de seleo que levou definio do K ECCAK como padro para o
SHA-3 foi feito de forma a identificar potenciais vulnerabilidades contra ataques
conhecidos. O uso da funo de permutao tanto no processamento da entrada
quanto na gerao dos blocos de sada ajuda a garantir as propriedades criptogrficas das funes-esponja, e a possibilidade de gerao de sadas de tamanho
arbitrrio permite o uso da mesma construo para a gerao de vrios nveis de
segurana. Com a publicao do padro do SHA-3, do qual uma verso preliminar j foi lanada, [11] o K ECCAK deve ganhar espao, embora o fato de o SHA-2
ainda ser considerado seguro [10] elimine a urgncia na adoo do novo padro.
Como o K ECCAK possui boa resistncia a ataques de extenso de comprimento, [11] possvel gerar de maneira segura um cdigo de autenticao de
mensagem apenas adicionando a chave como prefixo da mensagem e aplicando a
13

funo K ECCAK [] na mensagem resultante. [5] Assim, o uso de uma abordagem


de funes aninhadas de resumo se torna redundante, ainda que a tcnica continue
sendo considerada segura.
O HMAC e a proposta do SHA-3 fornecem duas solues distintas entre si
para o problema da gerao de cdigos de automao de mensagem. Uma vez
que a segurana do HMAC basicamente a segurana da funo de resumo subjacente, a construo deve perder espao medida em que o SHA-3 ganhar espao, j que este possui um mtodo mais simples para a gerao de cdigos de
autenticao. Porm, em situaes que exigem retrocompatibilidade com padres
existentes, o HMAC continua sendo uma opo utilizvel, e o K ECCAK pode atuar
como a funo de resumo no cerne da construo.

Referncias
[1] Mihir Bellare. New proofs for NMAC and HMAC: Security without
collision-resistance. pages 602619. Springer-Verlag, 2006.
[2] Mihir Bellare, Ran Canetti, and Hugo Krawczyk. Keying hash functions for
message authentication. pages 115. Springer-Verlag, 1996.
[3] Mihir Bellare, Ran Canetti, and Hugo Krawczyk. Message authentication
using hash functions the HMAC construction. CryptoBytes, 2, 1996.
[4] Guido Bertoni, Joan Daemen, Michal Peeters, and Giles van Assche. Cryptographic sponge functions. Technical report, 2011.
[5] Guido Bertoni, Joan Daemen, Michal Peeters, and Giles van Assche. The
Keccac reference. Technical report, 2011.
[6] Guido Bertoni, Joan Daemen, Michal Peeters, and Giles van Assche. The
Keccac SHA-3 submission. Technical report, 2011.
[7] Guido Bertoni, Joan Daemen, Michal Peeters, and Giles van Assche. Keccac implementation overview. Technical report, 2012.
[8] Shu-Jen Chang, Ray Perlner, William E. Burr, Meltem Snmez Turan,
John M. Kelsey, Souradyuti Paul, and Lawrence E. Bassham. Third-round
report of the SHA-3 cryptographic hash algorithm competition, 2012.

14

[9] Jongsung Kim, Alex Biryukov, Bart Preneel, and Seokhie Hong. On the
security of HMAC and NMAC based on HAVAL, MD4, MD5, SHA-0 and
SHA-1. Springer-Verlag, 2006.
[10] National Institute of Standards and Technology. SHA-3 selection announcement, 2012.
[11] National Institute of Standards and Technology.
SHA-3 standard:
Permutation-based hash and extendable-output functions. Technical report,
2014.
[12] C. Paar and J. Pelzl. Understanding Cryptography: A Textbook for Students
and Practitioners. Springer-Verlag New York Inc, 2010.

15