TESTES DE PRIMALIDADE - Matemática UFMGisrael/Ensino/AlgA/2016/apresentacoes/GuilhermeS… ·...

Post on 30-Sep-2018

218 views 0 download

Transcript of TESTES DE PRIMALIDADE - Matemática UFMGisrael/Ensino/AlgA/2016/apresentacoes/GuilhermeS… ·...

TESTES DE PRIMALIDADE

MOTIVACAOTestes de primalidade são ingredientes essenciais em sistemas de segurança computadorizados.Há uma série de sistemas de segurança que contam com a suposição que é difícil fatorar números, ou seja, dado um número composto, encontrar seus fatores primos é uma tarefa complicada.

AS TRANCAS MATEMÁTICASFunções UnidirecionaisTrancas matemáticas ou funções unidirecionais são procedimentos matemáticos faceis de realizar e difíceis de se reverter.

Porquê são importantes ?São a base de toda e qualquer criptografia. São estes procedimentos que possibilitam que uma mensagem possa ser enviada em um meio de comunicação público, de forma segura.

POR EXEMPLO:Se pegamos aleatoriamente dois números primos tais como P1 = 709 e P2 = 733 e multiplicá-los para obtermos: N = P1 * P2.

N = 709 * 733 = 519697 (isso é fácil de calcular)

Temos duas coisas: um número grande (519697) e a fatoração prima deste número grande (709 * 733).Agora, imagine que eu esconda a fatoração prima e forneça apenas o seguinte: 519697 = ? * ? (isso é difícil de calcular)

É REALMENTE DIFÍCILSe eu te pedir para encontrar a fatoração primária, por ondevocê começaria? Para encontrar a solução, é necessáriofazer um monte de testes de tentativa e erro.

A multiplicação é rápida (fácil) de calcular, enquanto afatoração primária é lenta (difícil). Este simples fato forma abase do esquema de criptografia RSA.

É FÁCIL PEGAR DOIS PRIMOS GRANDES QUAISQUER ?Escolher dois primos grandes e aleatorios é uma tarefa fácil ?Se pensarmos um pouco, é importante saber se um número, por exemplo, 99194853094755497, é primo ou composto.

P x NPP = Um problema pode ser RESOLVIDO em tempo polinomial.NP = Um problema pode ser VERIFICADO em tempo polinomial

∎“P = NP” De modo simplificado, o problema pergunta se existem problemas matemáticos cuja resposta pode ser verificada em tempo polinomial, que não possam ser resolvidos (diretamente, sem se ter um candidato à solução) em tempo polinomial. Ilustrando: se alguém lhe disser que o número 13.717.421 pode ser escrito como o produto de dois outros inteiros, você provavelmente demorará para provar isso; contudo, se lhe assoprarem que ele é o produto de 3.607 por 3.803, você seria capaz de muito rapidamente verificar tal fato.

DIVISAO POR TENTATIVAVamos começar com o teste mais simples e menos eficiente.

TESTANDO …Para verificarmos se um número é primo usando o TESTE DADIVISAO POR TENTATIVA, temos que dividir o número atéencontrarmos o primeiro (ou menor) divisor.Sabendo que qualquer número composto é formado por doisou mais primos, no pior caso teremos que testar para a raizquadrada do número em questão (arredondada para cima).

EXEMPLO:Por exemplo, vamos tentar determinar se 103 é primo ou não.A raiz quadrada de 103 arredondada para cima é 11.Os números primos entre 2 e 11 são 3, 5 e 7 e 11.Já os números 4, 6, 8 e 10 são pares e o 9 é um múltiplo de 3,que é um número primo, então podemos omiti-los.

EXEMPLO:Ao fazer isso, nos diminuímos a lista de fatores que precisam ser testados para apenas 4 números!

Nenhum dos números 3, 5, 7 ou 11 divide o 103 de forma inteira, então sabemos que o 103 é primo.

CRIVO DE ERASTOSTENESUma outra abordagem …

ENCONTRANDOCOMPOSTOSResolver o problema de econtrar números primos é o mesmoproblema de encontrar números compostos.Como todo primo é não composto, encontrar os compostos nosdá os primos. É uma abordagem bem mais custosa, mas quefunciona pra casos pequenos.

NA PRÁTICA∎ Definimos um limite similar ao procedimento de DIVISÃO

POR TENTATIVA.∎ Criamos uma lista de números que esteja entre 2 até o

valor limite.∎ Encontramos o primeiro primo da lista. Ele é um primo, 2.∎ Removemos da lista os múltiplos de 2.∎ Repitimos o procedimento.

TESTE DE PRIMALIDADE DE FERMATOferece um teste simples e eficiente para ignorar números não-primos.

SOBRE O TESTETecnicamente, o teste é para os números compostos, nãoprimos. Isso acontece porque o teste pode determinar comsegurança se um numero dado é composto ou não, mas podedizer apenas com certa precisão de esse número é primo.Esse teorema é útil quando a divisão por tentativa for inviável equando uma lista dos números que são exceções do teoremaestiver disponível.

TEOREMASeja mdc(a,b) o Máximo Divisor comum de a e b.

Se b é primo, então para qualquer a cujo mdc(a,b) = 1, temos:

𝒂𝒃−𝟏 = 𝟏 (𝒎𝒐𝒅 𝒃)

EXEMPLO:Escolhemos um número n = 100;Escolhemos outro número no intervalo [2, n-1];Vamos escolher o 3 neste exemplo:Calculamos 𝒂𝒏 𝒎𝒐𝒅 𝒏 → 𝟑𝟏𝟎𝟎 𝒎𝒐𝒅 𝟏𝟎𝟎 = 𝟏;Verificamos se 𝒂𝒏 𝒎𝒐𝒅 𝒏 = 𝒂 𝒎𝒐𝒅 𝒏 .

Se sim, n é composto ! Se não, n pode ser primo ...No nosso exemplo, 3100 (mod 100) = 1 e 100 (mod 100) = 0. Podemos dizer que 100 é composto.

PORQUE “PODE SER ?”Infelizmente existem números que passam o teste de Fermatpara todas as bases para as quais são relativamente primosSão os chamados números de Carmichael, e são infinitos.

52633Pseudoprimo

TESTE DE MILLER-RABINO teste de Miller-Rabin é parecido com o Pequeno Teorema de Fermat, mas ele funciona melhor com exceções, como os números de Carmichael.

NA PRÁTICAEscolhemos um número n ímpar.Vamos escolher n = 321Expressamos n-1 como 2𝑠x d, onde d é ímpar.Podemos expressar n como 26 x 5.Escolhemos um número aleatório a entre 2 e n.Vamos escolher 100.

NA PRÁTICACalculamos 𝑎𝑑 𝑚𝑜𝑑 𝑛 . Se o resultado for 1 ou -1 , o número npassa no teste e provavelmente é primo.Pra nosso exemplo:

𝑎𝑑 𝑚𝑜𝑑 𝑛 = 1005(𝑚𝑜𝑑 321) = 313

Como nós ainda não obtivemos 1 ou -1, não podemos dizerque n é provavelmente primo ainda. Entretanto, ainda há oque fazer,

NA PRÁTICASe o resultado não for 1 ou -1, calculamos a2d, a4d, ... e assimpor diante até a2s-1d.Ou seja, calculamos a elevado a d vezes potências de 2 até 2s-1.

Se um desses números for 1 ou -1 (mod n), então n passa noteste de Miller-Rabin e é provavelmente um número primo.Se n não passar em nenhum desses testes, ele é composto.

VOLTANDO AO EXEMPLONo nosso exemplo, o valor do a é 100, o de s é 6 e o valor de d é 5.Nós continuaríamos o teste da seguinte forma:

1002d = 10 = 1 × 1020. 1 × 1020 (mod 321) = 64. Então continuamos.1004d = 20 = 1 × 1040. 1 × 1040 (mod 321) = 244. 244 =/= 1 or -1.

Aqui podemos parar. s - 1 = 6 - 1 = 5. Nós chegamos em 4d = 22 e nãoexistem mais potências de 2 vezes d abaixo de 5d. Como nenhum dosnossos cálculos deu 1 ou -1, podemos dizer com segurança que n =321 é composto.

CONFIABILIDADESe você descobrir que o seu valor de n é primo, tente de novo com umoutro valor aleatório para a para melhorar a confiabilidade doresultado do teste. Se n é realmente primo, ele vai passar no testepara qualquer outro valor de a. Se n for composto, ele não vai passarem pelo menos três quartos dos valores de a. Isso dá a esse métodouma confiabilidade maior que o Pequeno Teorema de Fermat oferece,onde certos números compostos (os números de Carmichael) podempassar para qualquer valor de a.

PROBLEMAS CONHECIDOS COM PRIMOS

∎Densidade Quantos primos existem entre {1 ...... n}?∎ Listagem Liste todos os primos entre {1 ...... n} .∎Teste Dado um inteiro n, este n é primo?∎Aleatório Escolha um primo aleatório entre {1 ...... n}.

Obrigado