• 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

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

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

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,

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