b"\n_START_ARTICLE_\nAtaque do anivers\xc3\xa1rio\n_START_PARAGRAPH_\nO ataque do anivers\xc3\xa1rio \xc3\xa9 um tipo de ataque criptogr\xc3\xa1fico que explora a matem\xc3\xa1tica por tr\xc3\xa1s do paradoxo do anivers\xc3\xa1rio na teoria da probabilidade. Este ataque pode ser usado para abusar de comunica\xc3\xa7\xc3\xa3o entre duas ou mais partes. O ataque depende da maior probabilidade de colis\xc3\xa3o encontrada entre as tentativas de ataque aleat\xc3\xb3rio e um grau fixo de permuta\xc3\xa7\xc3\xb5es (pigeonholes).\n_START_SECTION_\nEntendendo o problema\n_START_PARAGRAPH_\nComo um exemplo, considere o cen\xc3\xa1rio no qual um professor com uma classe de 30 estudantes pergunta pelo anivers\xc3\xa1rio de todo mundo., para determinar se quaisquer dois estudantes tem o mesmo dia de anivers\xc3\xa1rio (correspondendo a uma colis\xc3\xa3o hash como descrito mais adiante [por simplicidade, ignore 29 de fevereiro]). Intuitivamente, essa chance pode parecer pequena. Se o professor escolheu um dia espec\xc3\xadfico (digamos 16 de Setembro), ent\xc3\xa3o a chance de pelo menos um aluno ter nascido naquele dia especifico \xc3\xa9 , cerca de 7.9%. No entanto, a probabilidade de pelo menos um estudante ter a mesma data de anivers\xc3\xa1rio de ''qualquer'' outro estudante \xc3\xa9 por volta de 70% para n = 30, a partir da f\xc3\xb3rmula.\n_START_SECTION_\nExemplo de c\xc3\xb3digo fonte\n_START_PARAGRAPH_\nH\xc3\xa1 uma fun\xc3\xa7\xc3\xa3o em Python que pode precisamente gerar a tabela acima:_NEWLINE_def birthday(probability_exponent, bits):_NEWLINE_    from math import log1p, sqrt_NEWLINE_    probability = 10. ** probability_exponent_NEWLINE_    outputs     =  2. ** bits_NEWLINE_    return sqrt(2. * outputs * -log1p(-probability))_NEWLINE_Se o c\xc3\xb3digo \xc3\xa9 salvo em um arquivo chamado birthday.py, ele pode ser rodado ele pode ser executado de forma interactiva como no exemplo a seguir:_NEWLINE__NEWLINE_$ python -i birthday.py_NEWLINE_>>> birthday(-15, 128)824963474247.1193_NEWLINE_>>> birthday(-6, 32)92.68192319417072\n_START_SECTION_\nSuscetibilidade da assinatura digital\n_START_PARAGRAPH_\nAssinaturas digitais podem ser suscet\xc3\xadveis a um ataque do anivers\xc3\xa1rio. Uma mensagem  \xc3\xa9 tipicamente assinada computando, primeiro, , onde  \xc3\xa9 uma fun\xc3\xa7\xc3\xa3o hash criptogr\xc3\xa1fica, e em seguida usando alguma chave secreta para assinar . Suponha que Mallory quer enganar Bob assinando um contrato fraudulento. Mallory prepara um contrato honesto  e um fraudulento . Ela ent\xc3\xa3o encontra um n\xc3\xbamero de posi\xc3\xa7\xc3\xb5es onde  pode ser modificado sem alterar o significado, de modo que inserindo v\xc3\xadrgulas, linhas vazias, um versus dois espa\xc3\xa7os ap\xc3\xb3s uma senten\xc3\xa7a, substituindo sin\xc3\xb4nimos, etc. Pela combina\xc3\xa7\xc3\xa3o dessas mudan\xc3\xa7as, ela pode criar um n\xc3\xbamero enorme de varia\xc3\xa7\xc3\xb5es sobre  que s\xc3\xa3o todos os contratos justos._NEWLINE_De um modo semelhante, Mallory tamb\xc3\xa9m cria um enorme n\xc3\xbamero de varia\xc3\xa7\xc3\xb5es sobre o contrato fraudulento . Ela, ent\xc3\xa3o, aplica a fun\xc3\xa7\xc3\xa3o de hash para todas essas varia\xc3\xa7\xc3\xb5es at\xc3\xa9 que ela encontra uma vers\xc3\xa3o do contrato justo e uma vers\xc3\xa3o do contrato fraudulento que t\xc3\xaam o mesmo valor de hash, .Ela apresenta a vers\xc3\xa3o honesta a Bob para assinar. Depois de Bob assinou, Mallory leva a assinatura e a anexa ao contrato fraudulento. Essa assinatura 'comprova' ent\xc3\xa3o que Bob assinou o contrato fraudulento._NEWLINE_As probabilidades diferem ligeiramente do problema do anivers\xc3\xa1rio original, embora Mallory nada ganhe por encontrar dois contratos honestos ou dois contratos fraudulentos com o mesmo hash. A estrat\xc3\xa9gia da Mallory \xc3\xa9 gerar pares de contratos, sendo um justo e um fraudulento. As equa\xc3\xa7\xc3\xb5es do problema do anivers\xc3\xa1rio se aplicam onde  \xc3\xa9 o n\xc3\xbamero de pares. O n\xc3\xbamero de hashes que Mallory realmente gera \xc3\xa9 ._NEWLINE_Para evitar este ataque, o comprimento da fun\xc3\xa7\xc3\xa3o de hash utilizado para um esquema de assinatura de sa\xc3\xadda pode ser escolhido suficientemente grande de modo que o ataque de anivers\xc3\xa1rio se torna computacionalmente invi\xc3\xa1vel,ou seja, cerca de duas vezes quantos bits s\xc3\xa3o necess\xc3\xa1rios para evitar um ataque de ataque de for\xc3\xa7a bruta comum._NEWLINE_O algoritmo rho de Pollard para logaritmos \xc3\xa9 um exemplo para um algoritmo usando um ataque do anivers\xc3\xa1rio para o c\xc3\xa1lculo de logaritmos discretos."