290 likes | 551 Views
Seguridad informática. Matemática I. Alejandro Silvestri 2008. Presentación basada en el libro de W. Stallings, Cryptography and Network Security, 4º ed. Grupos y campos. Grupo.
E N D
Seguridad informática Matemática I Alejandro Silvestri 2008 Presentación basada en el libro de W. Stallings, Cryptography and Network Security, 4º ed.
Grupo • Es un conjunto discreto y finito de valores, sobre los que se define la adición con las siguientes características • Cerramiento • El resultado de una adición se encuentra dentro del grupo • Asociatividad • Elemento de identidad • 0+a = a+0 = a • Inversa • a+a’ = a’+a = 0 • Grupo Abeliano • Conmutatividad de la adición
Anillos • Es un grupo abeliano en el que se define el producto, con las siguientes características • Cerramiento • Asociatividad • Leyes distributivas con la adición • Anillo conmutativo • Conmutatividad del producto
Campos • Dominio integral es un anillo conmutativo con: • Elemento de identidad del producto • 1.a = a.1 = a • Divisores no cero • a.b = 0 => a=0 v b=0 • Campo • Inversa del producto • Para todos los elementos excepto el cero • b=a-1 => a.b = 1
Artimética módulo n • La aritmética modular es una forma particular de campo o de dominio integral • sobre n enteros entre 0 y n-1 • La operación amod b calcula el resto de a/b • Operaciones módulo n se indican con un (mod n) a la derecha
Adición y producto • La adición se define a partir de la suma aritmética • c=a+b (mod n) : c=(a+b) mod n • El producto se define a partir de la multiplicación aritmética • c=a.b (mod n) : c=(a.b) mod n • a3 mod n = {[(a.a) mod n] . a} mod n • Resta • c=a–b (mod n) : c=(a-b) mod n
División • c=a/b (mod n) ≠>c=(a/b) mod n • c = a.d (mod n) • d = b-1 (mod n) • En álgebra modular no todos los elementos de un dominio tienen inversa • Los valores sin inversas son los que tienen denominadores comunes con n • Si todos los elementos tienen inversa, se trata de un campo • Esto ocurre con n primo • La inversa no se determina a través de un cálculo directo, pero sí iterando con el algoritmo de Euclides extendido
Logaritmo discreto • dloga,n(x)=k => ak=x (mod n) • Sólo existe si a es una raíz primitiva de n • No todos los enteros n tienen raíces primitivas • Los únicos son • 2 • 4 • pb • 2.pb • p es primo >2 y b es entero positivo • No es posible calcular en forma directa el logaritmo discreto • Se deben recorrer los valores buscando el resultado
Algoritmo de Euclides • Para encontrar el máximo divisor común (gcd) de dos valores • Es un algoritmo recursivo de recursividad finita, basado en la siguiente propiedad • gcd(a,b) = gcd(b, a mod b) • para a>b • De esta manera se reducen sucesivamente las magnitudes de a y b • Cuando la iteración devuelve cero, el valor obtenido en la iteración anterior es el gcd.
Código del algoritmo de Euclides EUCLID(a, b) • A = a; B = b • if B = 0 return A = gcd(a, b) • R = A mod B • A = B • B = R • goto 2
Algoritmo de Euclides extendido • Una versión extendida del algoritmo de Euclides permite determinar la inversa módulo n de un número, a través de una serie de aproximaciones sucesivas
Código de Euclides extendido EXTENDED EUCLID[m(x), b(x)] • [A1(x), A2(x), A3(x)] = [1, 0, m(x)]; • [B1(x), B2(x), B3(x)] = [0, 1, b(x)]; • if B3(x) = 0 return A3(x) = gcd[m(x), b(x)]; no • inverse • if B3(x) = 1 return B3(x) = gcd[m(x), b(x)]; • B2(x) = b(x)1 mod m(x) • Q(x) = quotient of A3(x)/B3(x) • [T1(x), T2(x), T3(x)] = [A1(x) Q(x)B1(x), A2(x)Q(x)B2(x), A3(x) QB3(x)] • [A1(x), A2(x), A3(x)] = [B1(x), B2(x), B3(x)] • [B1(x), B2(x), B3(x)] = [T1(x), T2(x), T3(x)] • goto 3
Fast Modular Exponentiation Algorithm • Calcula ab mod n Resultado delFast ModularExponentiationAlgorithm para ab mod n donde a = 7, b = 560 = 1000110000, n = 561
Totiente de Euler • Φ(n) • Es la cantidad de valores entre 1 y n-1 relativamente primos con n (es decir gcd(n, k)=1 • El valor k=1 se considera relativamente primo • Se define Φ(1) = 1 • Propiedad • Sean p y q primos, p≠q • Φ(p) = p-1 • Φ(p.q) = (p-1)(q-1)
Teorema de Euler • Para a y n relativamente primos, y a<n • aΦ(n) = 1 (mod n) • Si p es primo: • a(p-1) = 1 (mod p) • Pequeño teorema de Fermat • an = a (mod n) • Si p es primo: • a(p-1) = 1 (mod p)
Teorema chino del resto (CRT) • Sean • n y k enteros positivos • N el vector de divisores primos de n • K el vector de restos de k mod N • Se verifica que K y k mantienen una relación biyectiva • K contiene la información necesaria para reconstruir k
RSA • Med mod n = M • n = p.q p, q primos • e.d = Φ(n) = (p-1)(q-1) • => e.d mod Φ(n) = 1 • => Mk.Φ(n)+1 mod n = M • => Mk.(p-1)(q-1)+1 mod n = M • Esto requiere que se cumplan • Mk.(p-1)(q-1)+1 mod p = M • Mk.(p-1)(q-1)+1 mod q = M • Por el teorema del resto chino: • X mod p ^ X moq q => X mod (p.q)
RSA • Mk.(p-1)(q-1)+1 mod p = = M.MΦ(p).k(q-1) mod p = = M mod p [MΦ(p) mod p]k(q-1) • Teorema de Euler MΦ(p) mod p = 1 = M mod p [1]k(q-1) = M mod p
Test de primalidad • Test iterativo probabilístico • Miller Rabin (1975) • Determina la primalidad relativa de un dato n a las potencias de un dato a • Probabilidad de primalidad: 75% • Si el algoritmo señala que el dato no es primo, es conclusivo • Si señala que el dato puede ser primo, tiene un 75% de probabilidad de acertar • Test determinístico • Agrawal, Kayal y Saxena (2002)
Distribución de primos • La densidad de números primos entre los números enteros disminuye a medida que aumentan los enteros • Para un entero n, la separación promedio de números primos es ln(n)