• Nenhum resultado encontrado

Software de Telecomunicações. Teoria dos números

N/A
N/A
Protected

Academic year: 2021

Share "Software de Telecomunicações. Teoria dos números"

Copied!
19
0
0

Texto

(1)

Software de Telecomunicações

Prof RG Crespo Software de Telecomunicações Teoria números : 1/37

Teoria dos números

Números primos (1)

O conjunto dos inteiros {...,-2,-1,0,1,2,...} é representado por ℤ.

Definição: A divisão de a por b (b≥1), a/b, é um par (q,r) tal que a = q.b+r (q é designado por quociente, r por resto). b é divisível por a, a|b, sse o resto de a/b for 0 (ex: 3|9) b é divisível por a, a|b, sse o resto de a/b for 0 (ex: 3|9)

Nota: A soma e a subtração de dois inteiros é O(log n), o produto e a divisão de dois inteiros é O(log2n).

Definição: um número p é primo sse existirem apenas dois divisores (1|p e p|p).

(2)

Números primos (2)

Teorema fundamental da aritmética: Qualquer número n pode ser representado por um produto de números primos. Ex: 4200 = 23.3.52.7, 10780=22.5.72

2113 - 1= 3391.23279.65993.1868569.1066818132868207

Prof RG Crespo Software de Telecomunicações Teoria números : 3/37 Definição: O maior divisor comum de dois números a b,

gcd(a,b) é o maior inteiro d tal que d|a e d|b.

Basta factorizar os dois números e tomar os primos comuns com o menor dos expoentes.

Ex: gcd(4200,10780) = 22.5.7 = 140

Números primos (3)

Nota1: gcd(a,b)=gcd(b,a).

Nota2: factorização de números é operação custosa

– 1994: a aplicação do QS-Quadratic Sieve distribuída por 1600 computadores conseguiu factorizar número RSA-129 em 8 meses.

– 2005: factorizado número RSA-560.

Definição: Dois números a b são primos entre si, sse gcd(a,b)=1. Afirma-se que a é co-primo de b.

(3)

Números primos (4)

Algoritmo de Euclides(determina gcd(a,b) sem cálculo da factorização)

1. Para calcular gcd(a,b), calcular a divisão do maior número pelo menor: a = q.b+r

2. Se r≠0, voltar ao passo 1 e calcular gcd(r,b). Se r=0, gcd(a,b) = b

Algoritmo de Euclides é O(log3n)- log n divisões * O(log2n) cada divisão

Prof RG Crespo Software de Telecomunicações Teoria números : 5/37

Algoritmo de Euclides é O(log3n)- log n divisões * O(log2n) cada divisão Ex: Determinar gcd(1547,560) 1547 = 2.560 + 427 calcular gcd(427,560) 560 = 1.427 + 133 calcular gcd(427,133) 427 = 3.133 + 28 calcular gcd(28,133) 133 = 4.28 + 21 calcular gcd(28,21) 28 = 1.21 + 7 calcular gcd(7,21) 21 = 3.7 + 0 gcd(1547,560)=7 por multiplicação russa

Números primos (5)

Proposição: Se d = gcd(a,b), existem dois números u e v tais que d=ua+vb: para calcular u,v basta inverter o algoritmo de Euclides, substituindo os restos pelas igualdades anteriores.

Ex:7 = 28 – 1.21 = 28 –1.(133-4.28) ↔ 5.28 - 1.133 = 5.(427 – 3.133) – 1.133 ↔ 5. 427 – 16.133 = 5.(427 – 3.133) – 1.133 ↔ 5. 427 – 16.133 = 5. 427 – 16.(560 – 1.427) ↔ 21.427 – 16.560 = 21.(1547 – 2.560) – 16.560 ↔ 21. 1547 – 58.560

Nota: a proposição permite facilmente calcular o inverso de um número módulo M, se M for primo.

(4)

Números primos (6)

Algoritmo estendido de Euclides:determina triplo (d,x,y) tal

que ax+My=d: se d=1, então x=a-1mod M.

Função Euclides-estendido(a,b) se b=0 retornar (a,1,0);

Prof RG Crespo Software de Telecomunicações Teoria números : 7/37 se b=0 retornar (a,1,0); k := a/b; r := a mod b; (d,x,y) := Euclides-estendido(b,r); retornar (d,y,x-ky);

Números primos (7)

Exemplo: determinar 123-1mod 1003

a b k r Retorna 1003 123 8 19 (1,13,-106) 123 19 6 9 (1,-2,13) 123 19 6 9 (1,-2,13) 19 9 2 1 (1,1,-2) 9 1 9 0 (1,0,1) 1 0 - - (1,1,0) • 123-1mod 1003 ≡ -106 ≡ 897

(5)

Números primos (8)

Definição: A função Euler totient, ϕ(n) = #{0≤b<n | gcd(b,n)=1} indica o número de todos os valores co-primos de n.

– ϕ(1) = 1

– ϕ(p) = p-1, para todos os primos de p

Prof RG Crespo Software de Telecomunicações Teoria números : 9/37

– ϕ(p) = p-1, para todos os primos de p

– se n=pq (p,q primos), então ϕ(n) = (p-1)(q-1)

Proposição: Se a for primo relativo de n, então aϕ(n)= 1 mod n

Números primos (9)

Definição: A função π(n) indica o número de primos menores que n.

Os primos até 25 são: 2, 3, 5, 7, 11, 13, 17, 19 e 23. Logo, π(3) = 2, π(10) = 4, π(25) = 9.

Teorema números primos: π(n) é da ordem de n/(ln n – a), com a ≅ 1.

Nota: há zonas em que os primos estão mais concentrados (ex: 1_000_000_000_061, 1_000_000_000_063) e noutras mais

(6)

Números primos (10)

Consequência 1: há muitos números primos por onde escolher!

Ex: π(1020) ∈ O(1020 /19) ≅ 5.2 *1018 (na realidade,

π(1020) = 2 220 819 602 560 918 840 ≅ 2.2 *1018 ) .

Consequência 2: a procura de um primo não é muito pesada.

Prof RG Crespo Software de Telecomunicações Teoria números : 11/37 Consequência 2: a procura de um primo não é muito pesada.

Em média, os números primos estão afastados O(ln n): como os pares e múltiplos de 5 não contam, a procura é 0.4 * ln n

Ex: para procurar um primo à volta de 2200 (200 dígitos

binários), devem ser necessários 0.4(ln 2200)=55 testes.

Números primos (11)

• Computação distribuída permite determinar números primos cada vez maiores.

• O maior número primo, • O maior número primo, identificado em Agosto 2008, é 243,112,609-1 com

12_978_189 dígitos decimais.

Nota: Os primos Mersenne possuem a forma 2n-1, sendo

conhecidos 49 (31= 25-1 é primo, mas 2047 = 211-1 não é

(7)

Primalidade (1)

Como escolher um número primo?

A. Por aproximação Hardly e Wright, procurar nos valores próximos prime(n) ∼ n(log n+log log n –1)

Ex: prime(106) ∼ 15 400 000: na realidade é 15 485 863.

Impraticável: para n elevado a distância entre dois primos é O(log n)

Prof RG Crespo Software de Telecomunicações Teoria números : 13/37

e determinar se número é primo custa!

B. Gerar um número aleatório n ímpar, n≠5 e verificar se é primo com um teste de primalidade (ex, Rabin-Miller). Se não for, procurar à volta de lg N. Se não conseguir encontrar, gerar novo número aleatório e procurar nessa zona.

Esta é a estratégia usada na cifra RSA para gerar números aleatórios de grande dimensão.

Primalidade (2)

Peneira de Eratosthenes (“sieve”)

– Descoberto em 250 AC

– Método determinista, mas pouco eficiente para números de grande dimensão.

1. Escrever todos os números de 2 an-1. 2. Fazer d←2 (primeiro primo).

3. Se n não for divisível por d, eliminar da lista todos os múltiplos de d.

4. Se a lista não estiver vazia, d←primo seguinte e regressar a 3. Se a lista estiver vazia, n é primo

(8)

Primalidade (3)

[Exemplo] Seja n=17

– Lista: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 d←2: 17 não é divisível por 2!

Eliminados múltiplos de 2 (2 4 6 8 10 12 14 16) – Lista: 3 5 7 9 11 13 15

d←3: 17 não é divisível por 3! d←3: 17 não é divisível por 3! Eliminados múltiplos de 3 (3 9) – Lista: 5 7 11 13 15

d←5: 17 não é divisível por 5! Eliminados múltiplos de 5 (5 15) – Lista: 7 11 13

d←7: 17 não é divisível por 7! Eliminados múltiplos de 7 (7) – ...

Prof RG Crespo Software de Telecomunicações Teoria números : 15/37

Primalidade (4)

Teste de Rabin-Miller

1. Calcular k,m (ímpar) tal que n-1= m.2k.

Nota: O cálculo é rápido: deslocar para a direita enquanto a divisão for par, k é o número de deslocamentos, m é a divisão ímpar.

2. Seleccionar base, tal que 1 ≤ b < n. 3. a ← bm mod n

i. Se a=n-1, então n pode ser primo.

ii. Se algum dos valores a2 mod n, a4 mod n, …, a2^(k-1) mod n for igual n-1,

então n pode ser primo.

iii. Se falhar 3.1 e 3.2, então n não é primo.

• Se o número for candidato a primo, efectuar o teste normal

Nota: pode revelar que, afinal, não é primo!

(9)

Primalidade (5)

Exemplo: Vejamos se n=29 é primo

1. 28 = 14.2 = 7 . 22 2. Seleccionar base b=10 3. a ← 107mod 29 ≡ 17

1. a ≠ 28

2. (107 )2mod 29 ≡ 28. Pode ser primo (na realidade é!)

Prof RG Crespo Software de Telecomunicações Teoria números : 17/37

2. (107 )2mod 29 ≡ 28. Pode ser primo (na realidade é!)

Exemplo: Vejamos se n=221 é primo

1. 220 = 110.2 = 55 . 22 2. Seleccionar base b=5 3. a ← 555mod 221 ≡ 112

1. a ≠ 220

2. (555 )2mod 221 ≡ 168≠ 220 (nota: como k=2, não existem mais testes)

3. Conclui-se que 221 não é primo (nota: factorizando, tem-se 221=13*17)

Primalidade (6)

Teorema pequeno de Fermat (“Fermat Little Theorem”): Se p é co-primo de a, então ap-1=1 mod p.

Ex: 7 e 3 são co-primos, pelo que 72=1 mod 3.

Igualmente, 390=1 mod 91 [nota: 91 não é primo]

Os números (a,p) são designados pseudo-primos. Os números (a,p) são designados pseudo-primos.

(10)

Congruência (1)

Definição: a é congruente a b módulo M, ab mod M, sse (a–b)|M. M é designado módulo da congruência.

Ex: 17 ≡ 4 mod 26, porque 13|26.

– Os números ZM={0,1,…,M-1} formam um anel de inteiros módulo M com operadores +,* módulo M.

– Frequentemente, a≡b mod M é representado por a=b modM

Prof RG Crespo Software de Telecomunicações Teoria números : 19/37

– Frequentemente, a≡b mod M é representado por a=b modM

• A aritmética modular foi explorada em primeiro lugar por Gauss.

• A relação de congruência é fundamental na cifra, uma vez que todas as alterações não devem sair do alfabeto a cifrar/ decifrar.

Congruência (2)

• As congruências, com o mesmo módulo, podem ser somadas / subtraídas ou multiplicadas.

Se ab mod M e cd mod M, então a±cb±d mod M e acbd mod M.

Ex: 3 = 3 mod 9, 4 = 4 mod 9, logo 3+4 = 7 mod 9 3 = 3 mod 9, 8 = 8 mod 9, logo 3+8 = 2 mod 9

• O zero é elemento neutro da adição. x+0x mod M 0+x mod M

(11)

Congruência (3)

Tal como em Z, os aneis ZM possuem inversos aditivos.

Definição: Um inverso aditivo módulo M de a é um valor b tal que a+b =1 mod M.

Teorema: para cada elemento de um anel Z , existe um e só

Prof RG Crespo Software de Telecomunicações Teoria números : 21/37 Teorema: para cada elemento de um anel ZM, existe um e só

um inverso aditivo.

Ex: 3+6=0 mod 9, logo 6 é inverso aditivo de 3 módulo 9.

Congruência (4)

Ao contrário de Z, os aneis ZM possuem inversos multiplicativos para alguns elementos (não todos!).

Definição: Um inverso multiplicativo módulo M de a, a-1

mod M, é um valor tal que aa-1 =1 mod M.

• A condição pode ser refeita para aa-1 = 1 + Mk, que tem

uma única solução se a e M forem primos entre si (ou seja, gcd(a,M)=1). Se a M forem primos entre si, para

identificar a-1, basta refazer a igualdade gcd(a,M)=1 1. Determinar os numeros u,v tal que 1 = uM + va

(12)

Congruência (5)

1 = 4–1.3

= 4–1.(39-9.4)↔ 10.4-1.39

= 10.(160-4.39)-1.39 ↔ 10.160-41.39 = 10.160-41.(839-5.160) ↔ 215.160-41.839

Ex: Calcular 160-1 mod 839 839 = 5.160 + 39 160 = 4.39 + 4

39 = 9.4 + 3 4 = 1.3 + 1

Prof RG Crespo Software de Telecomunicações Teoria números : 23/37 Logo, 160-1 mod 839 = 215 Verificação: 160*215 = 35400 = 1 mod 839 = 10.160-41.(839-5.160) ↔ 215.160-41.839 4 = 1.3 + 1 35400 839 41 -35399 1

Congruência (6)

Teorema: Num anel ZP todos os elementos não nulos possuem inverso multiplicativo, sse P for primo.

Prova: pela definição de inverso multiplicativo, aa-1 = 1 + Pk

que tem solução sse a,P forem co-primos. Se todos os que tem solução sse a,P forem co-primos. Se todos os elementos não nulos de ZP forem co-primos, então P é primo.

Corrolário: a/b em ZP é dada por ab-1mod P

Ex: 37/160 mod 839 = 37*160-1= 37*215= 7955 mod 839 =

(13)

Congruência (7)

Definição: a soma módulo 2, a b , resulta 1 sse os operandos forem

distintos.

a b= a+b mod 2

Propriedades: para quaisquer a,k

– a ⊕ a = 0 A B A ⊕ B

Prof RG Crespo Software de Telecomunicações Teoria números : 25/37

– a ⊕ a = 0 – a ⊕ k ⊕ k = a A B A ⊕ B 0 0 0 0 1 1 1 0 1 1 1 0

Eficiência de operações

RSA (1)

A grande dimensão dos blocos RSA levou à criação de bibliotecas de operações.

i. Produto

Pretende-se avaliar x.y, com valores na ordem 2102410308. Cálculo pelo método matricial (proposto pela primeira vez por Fibonnaci) é pelo método matricial (proposto pela primeira vez por Fibonnaci) é muito ineficiente.

Alternativa: multiplicação russa, com “shift” e somas.

1. Enquanto y≠1 executar e colocar lado a lado x=2.x e y=y/2 2. Cortar todos os xipara yipares

(14)

Eficiência de operações

RSA (2)

Exemplo: Cálculo de 52 * 37

52 37 multiplicação

matricial russa

Prof RG Crespo Software de Telecomunicações Teoria números : 27/37 52 37 104 18 208 9 416 4 832 2 1664 1 1924 52 *37 364 156 1924

Eficiência de operações

RSA (3)

ii. Exponenciação módulo M

Cálcular xce só depois calcular xc

mod Ngera valores de dimensão

muito elevada.

Alternativa: em cada multiplicação por x, calcular o módulo para reduzir os valores intermédios. Exponenciação pode ser efectuada da esquerda para a direita (solução adoptada aqui), ou da direita para a esquerda para a direita (solução adoptada aqui), ou da direita para a esquerda.

1. Representar c = bk-1… b0 2. Executar algoritmo

z = 1;

for ( i=k-1; i>=0; i-- ) {

if ( bi=1 ) mult=x else mult=1; z = z2.mult mod N;}

(15)

Eficiência de operações

RSA (4)

Ex: Cálculo de 3037mod 77 (37 = 100101)

1. z = 1

2. i = 5; b5=1 ∴ mult= 30; z = 12 * 30 mod 77 ≡ 30 3. i = 4; b4=0 ∴ mult= 1; z = 302mod 77 ≡ 53 4. i = 3; b3=0 ∴ mult= 1; z = 532mod 77 ≡ 37 5. i = 2; b2=1 ∴ mult= 30; z = 372* 30 mod 77 ≡ 29

Prof RG Crespo Software de Telecomunicações Teoria números : 29/37 5. i = 2; b2=1 mult= 30; z = 37 * 30 mod 77 29

6. i = 1; b1=0 ∴ mult= 1; z = 292mod 77 ≡ 71 7. i = 0; b0=1 ∴ mult= 30; z = 712* 30 mod 77 ≡ 2

ComplexidadeO(lg3n)

Nota: Ataque DPA (“Differential Power Analysis”) baseado na análise das variações no consumo de energia durante o cálculo de mult*z dentro do ciclo for.

Eficiência de operações

RSA (5)

1 z x xcmod N em hardware z x mult mod N Lógica controlo c

(16)

Eficiência de operações

RSA (6)

iii. Decifra RSA

Decifra mais eficiente com auxílio do CRT

Teorema Chinês dos Restos (CRT-Chinese Remainder Theorem): Seja N=n1*n2*…*nr com ni,nj (i≠j)

co-Prof RG Crespo Software de Telecomunicações Teoria números : 31/37 Theorem): Seja N=n1*n2*…*nr com ni,nj (i≠j)

co-primos.

– Qualquer A∈[0,(N-1)] é representado por (a1=A mod n1, a2=A mod n2, …, ar=A mod nr)

– A calculado, a partir de (a1, a2,…, ar), pela seguinte equação:

r i i i i i i i r i i n n n n n n N N N n N N a A L L 1 1 2 1 1 1 mod ) mod ( + − − = = = =

Eficiência de operações

RSA (7)

Exemplo: Sun-Tsu inicia batalha com 208 soldados e no final pretende determinar rapidamente os sobreviventes.

Verifica que os sobreviventes

– agrupados em 3, sobram 2 (a1= A mod 3 ≡ 2) – agrupados em 5, sobram 3 (a2= A mod 5 ≡ 3) – agrupados em 5, sobram 3 (a2= A mod 5 ≡ 3) – agrupados em 7, sobram 2 (a2= A mod 7 ≡ 2)

a) N1=5.7=35; N2=3.7=21; N3=3.5=15

b)35-1mod 3 = 2, 21-1 mod 5 = 1, 15-1 mod 7 = 1

c) A=2.35.2 + 3.21.1 + 2.15.1 (mod 3.5.7) = 23 mod 105. Sun-Tsu ou tem 23 ou tem 128 soldados.

(17)

Eficiência de operações

RSA (8)

Por ser o único com acesso a p,q o proprietário pode calcular mais rapidamente M=Cdmod N,

1. Na construção da cifra RSA tem-se N=pq. Calcular

p C

Cp = mod C C q

q = mod

Prof RG Crespo Software de Telecomunicações Teoria números : 33/37 p C M p d d p d p p p mod ) 1 mod( = − = q C M q d d q d q q q q mod ) 1 mod( = − =

2. Decifrar mensagem a partir dos resíduos

N q q p q R N p p q p R N R M R M M p q q p p q q p mod ) mod ( mod ) mod ( mod ) ( 1 1 1 1 − − − − = ⋅ = = ⋅ = + =

Números aleatórios (1)

Definição: O período de uma sequência é valor mínimo de τ, tal que s(i+τ)=s(i), para todos 0≤ i<N-τ

Ex: a sequência 010 010 01, de comprimento p=8, possui período 3.

Definição: Um bloco (“block”) é uma sequência contínua de Definição: Um bloco (“block”) é uma sequência contínua de

1’s e um salto (“gap”) é uma sequência contínua de 0’s. Uma corrida (“run”) é um bloco ou um salto.

Existem diversos métodos para determinar o grau de confinação de uma sequência binária pseudo-aleatória

– Princípio de Golomb

(18)

Números aleatórios (2)

Testes estatísticos

– Teste série: as frequências das transições 00, 01, 10, 11 são iguais. – Teste “poker”: dividir sequência por subsequências com mesmo

número de bits (m≥3)-denominados “poker hands”, e comparar a distribuição dos valores com o teste χ2.

Prof RG Crespo Software de Telecomunicações Teoria números : 35/37 Princípios de Golomb: primeira tentativa para identificar as

condições necessárias, mas não suficientes!

1. A diferença entre o número de 0’s e 1’s deve ser tão pequena quanto possível.

Nota: na sequência 101010101010101010101010101010101010, diferença entre 0’s e 1’s é nula, mas não é aleatória (tal será detectado pelo terceiro princípio de Golomb).

Números aleatórios (3)

2. Em todas as subsequências, metade das corridas são blocos e a outra metade são saltos.

A frequência de corridas de comprimento i é, pelo menos, (½)ise o número de corridas for superior a 1; metade das corridas tem comprimento 1, um quarto das corridas tem comprimento 2,… Ex: seja 00001100001110001111100001110001101110000100. Ex: seja 00001100001110001111100001110001101110000100. À primeira vista a sequência parece ser aleatória, mas não obedece aos critérios de Golomb.

Comprimento Blocos Saltos Corridas 1 19 25 44 (46%) 2 12 17 29 (30%) 3 6 10 16 (17%) 4 2 4 6 (6%) 5 1 0 1 (1%) Falha!

(19)

Números aleatórios (3)

3. Autocorrelação é de 2 valores 1 0 ), 1 2 )( 1 2 ( 1 ) ( 1 -N t 1 se , 0 t se , ) ( . 1 0

{

− ≤ ≤ − − ∑ = ≤ ≤ = = + − = N t s s N t C K N t C N t i N i i

Prof RG Crespo Software de Telecomunicações Teoria números : 37/37

0 =

N i

Ex: 011001000111101, gerada pelo LFSR de polinómio conectivo x4+x3+1, satisfaz os critérios de Golomb.

1. Número de 0’s é 7, número de 1’s é 8. 2. Existem 8 corridas:

• 4 corridas de comprimento 1 (2 saltos, 2 blocos). • 2 corridas de comprimento 2 (1 salto, 1 bloco). • 1 salto de comprimento 3, 1 bloco de comprimento 4.

3. C(0)=1, C(t)=-1/15 for 1 ≤ t ≤ 14

Referências

Documentos relacionados

De acordo com este estudo pode-se afirmar que os participantes com alterações na marcha secundária o AVC, com baixos valores na velocidade e consequentemente, na sua cadência,

Qual a percepção do usuário em relação à qualidade dos serviços de testes de software, quando adotada fábrica de testes no ciclo de desenvolvimento1. Para tanto, foi delineado

1. Etnografia Concorrente: São realizados estudos curtos e interativos antes do inicio do desenvolvimento, para que sejam colhidos os requisitos iniciais e a geração dos

PROPOSTA DE VALOR SEGUIMENTO DE CLIENTE CANAIS DE DISTRIBUIÇÃO RELACIONAMENTO COM CLIENTE FONTES DE RECEITAS RECURSOS CHAVES ATIVIDADES PARCEIROS ESTRUTURA DE CUSTOS.. PARA

Prof RG Crespo Software de Telecomunicações Virus-II : 9/48 – Duas pilhas, uma para o modo núcleo (“kernel”) outra para modo..

• Spam de nível superior a 15 : média diária 37 (desvio padrão 13.0) Curiosidade, não faz parte da avaliação. Prof RG Crespo Software de Telecomunicações Protecção AV e AS

Prof RG Crespo Criptografia e Segurança das Comunicações Teoria números : 37/40. Números

Assim, é necessário primeiro efetuar divisões sucessivas por 2 até obter um número ímpar e de seguida aplicar o método