Post on 23-Jan-2016
2
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Autentificación con sistemas asimétricos
Problema:
Los sistemas de cifrado asimétricos son muy lentos y el mensaje podría tener miles o millones de bytes...
Solución:
Se genera un hash del mensaje, representativo del mismo, con una función hash imposible de invertir. La función hash comprime un mensaje de longitud variable a uno de longitud fija y pequeña.
Al existir una clave pública y otra privada que son inversas, se autentica el mensaje y al emisor.
Permite la firma digital, única para cada mensaje
3
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Son condiciones más fuertes que la de una firma manuscrita.
Son condiciones más fuertes que la de una firma manuscrita.
Características de una firma digital
Requisitos de la Firma Digital:
a) Debe ser fácil de generar.
b) Será irrevocable, no rechazable por su propietario.
c) Será única, sólo posible de generar por su propietario.
d) Será fácil de autentificar o reconocer por su propietario y los usuarios receptores.
e) Debe depender del mensaje y del autor.
4
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Clave Pública (nA, eA) Clave Privada (dA)
Rúbrica: rAH(M) = H(M)dA mod nA
Algoritmo:
A envía el mensaje M plano (o cifrado) al destinatario B junto a la rúbrica: {M, rAH(M)}
El destinatario B tiene la clave pública eA,nA de A y descifra rAH(M) {(H(M)dA)eA mod nA} obteniendo así H(M). Como recibe el mensaje M’, calcula la función hash H(M’) y compara: Si H(M’) = H(M) se acepta la firma.
LaSole
Mateico
Firma digital RSA de A hacia B
5
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
LaSoleMateico
Hola. Te envío el documento. Saludos.
Sea H(M) = F3A9 (16 bits)
Claves MateiconB = 65.669
eB = 35, dB = 53.771
Claves LaSolenA = 66.331
eA = 25, dA = 18.377
H (M) = F3A916 = 62.37710
rH(M) = H(M)dB mod nB
rH(M) = 62.37753.771 mod 65.669 = 24.622
Mateico envía el par (M, r) = (M, 24.622)
Firma
Ejemplo de firma digital RSA (B A)
Los primos elegidos por
Mateico y LaSole son (97, 677) y
(113, 587)
216 65.669 217
luego, firmará con bloques de 16 bits
6
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Claves MateiconB = 65.669
eB = 35, dB = 53.771
Claves LaSolenA = 66.331
eA = 25, dA = 18.377
LaSole recibe un mensaje M’ junto con una rúbrica r = 24.622:
• Calcula reB mod nB = 24.62235 mod 65.669 = 62.377.• Calcula el hash de M’ es decir H(M’) y lo compara con H(M).• Si los mensajes M y M’ son iguales, entonces H(M) = H(M’) y se
acepta la firma como válida. • NOTA: No obstante, H(M) = H(M’) no implica que M = M’.
Teníamos que: H (M) = F3A916 = 62.37710
rH(M) = H(M)dB mod nB rH(M) = 62.37753.771 mod 65.669 = 24.622
Mateico había enviado el par (M, r) = (M, 24.622)
Comprobación de firma RSA por A
LaSoleMateico
7
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
ElGamal: El usuario A generaba un número aleatorio a (clave privada) del cuerpo p. La clave pública es a mod p, con generador.
Algoritmo de firma:1º El usuario A genera un número aleatorio h, que será primo
relativo con (p): h / mcd {h, (p)} = 1
2º Calcula h-1 = inv {h, (p)}
3º Calcula r = h mod p
4º Resuelve la siguiente congruencia:
M = ar + hs mod (p) s = (M - ar)inv[h,(p) mod (p)
M = ar + hs mod (p) s = (M - ar)inv[h,(p) mod (p)
Firma: (r, s)Firma: (r, s)
LaSole
Firma digital ElGamal de A hacia B
8
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Algoritmo comprobación de firma:
1º El usuario B recibe el par (r, s) y calcula:
rs mod p y (a)r mod p
2º Calcula k = [(a)r rs] mod p
Como r era igual a h mod p entonces:
k = [(arhs] mod p = (ar + hs) mod p = mod p
3º Como M = (ar + hs) mod (p) y es una raíz primitiva de p se cumple que:
= ssi = mod (p-1)
4º Comprueba que k = M mod p
Mateico
Si k = [(a)r rs] mod p es igual a M mod p ...
Si k = [(a)r rs] mod p es igual a M mod p ...
Se acepta la firmaSe acepta la firma
Comprobación de firma ElGamal por B
Conoce: p y (a) mod p
9
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
LaSoleMateico
¡Hola otra vez! Soy Mateico de nuevo... Salu2.
Sea H(M) = A69B (16 bits)
Claves MateicopB = 79.903 = 10b mod p = 3.631b = 20, h = 31
216 79.903 217
luego, firmará con bloques de 16 bits
Firma
1) h-1 = inv[h, (p)] = inv (31, 79.902) = 5.155
2) r = h mod p = 1031 mod 79.903 = 11.755
3) s = [H(M) - br][inv(h,(p)] mod (p) H(M) = A69B16 = 42.65110
4) s = [42.651-2011.755]5.155 mod 79.902
5) s = 68.539 (r, s) = (11.755, 68.539)(r, s) = (11.755, 68.539)
Ejemplo firma digital ElGamal (B A)
Luego, la firma será
10
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
LaSoleMateico
Claves MateicopB = 79.903 = 10b mod p = 3.631b = 20, h = 31
Comprobación de la firma:1) rs mod p = 11.75568.539 mod 79.903 = 66.404
2) (b)r mod p = 3.63111.755 mod 79.903 = 12.023
3) (b)r rs mod p = (12.023 66.404) mod 79.903 = 64.419 = k
4) H(M) mod p = 1042.651 mod 79.903 = 64.419
Como hay igualdad
se acepta la firma
Comprobación de firma ElGamal por A
LaSole recibe el par (r, s) = (11.755, 68.539)
H(M) = A69B = 42.651
11
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Claves MateicopB = 79.903 = 10b mod p = 3.631b = 20, h = 31
= 10 es un generador del cuerpo p = 79.903 puesto que:
p-1 = 79.902 = 23223193q1 = 2; q2 = 3; q3 = 23; q4 = 193
y se cumple 10(p-1)qi mod p 1
1039.951 mod 79.903 = 79.9021026.634 mod 79.903 = 71.324103.474 mod 79.903 = 2.63110414 mod 79.903 = 41.829
Por ejemplo, si se elige = 11, para el exponente 39.951 se obtiene el valor 1 y entonces no sirve para la firma. Será imposible comprobarla mediante la ecuación k = M mod p.
El generador en la firma de ElGamal
Mateico
12
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
1991: National Institute of Standards and Technology (NIST) propone el DSA, Digital Signature Algorithm, una variante de los algoritmos de ElGamal y Schnoor.
1994: Se establece como estándar el DSA y se conoce como DSS, Digital Signature Standard.
1996: La administración de los Estados Unidos permite la exportación de Clipper 3.11 en donde viene inmerso el DSS, que usa una función hash de tipo SHS, Secure Hash Standard.
El peor inconveniente de la firma propuesta por ElGamal es que duplica el tamaño del mensaje M al enviar un par (r, s) en Zp y (p). No obstante, se solucionará con el algoritmo denominado DSS.
Estándares de firma digital
13
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Parámetros públicos de la firma:
• Un número primo grande p (512 bits)
• Un número primo q (160 bits) divisor de p-1
• Un generador “de orden q” del grupo p
Generador de orden q es aquella raíz en el cuerpo Zp de forma que q es el entero más pequeño que verifica:
q mod p = 1
En este caso se cumple para todo t que:
t = t (mod q) mod p
Digital Signature Standard DSS
¿y eso qué es?
14
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
• Claves públicas de A: primos p, q y el generador • Clave secreta de la firma: a (1 < a < q) aleatorio
• Clave pública de la firma: y = a mod p
• Para firmar un mensaje 1 < M < p, el firmante elige un valor aleatorio 1 < h < q y calcula:
• r = (h mod p) mod q
• s = [(M + ar) inv (h,q)] mod q
• La firma digital de M será el par (r, s)
GENERACIÓN DE LA FIRMA POR PARTE DE A
Generación de firma DSS de A B
15
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
• B recibe el par (r, s)
• Luego calcula:
• w = inv (s, q)
• u = M w mod q
• v = r w mod q
• Comprueba que se cumple la relación:
• r = (u yv mod p) mod q
• Si se cumple, se acepta la firma como válida.
COMPROBACIÓN DE LA FIRMA DE A POR B
La firma tendrá en este caso un tamaño menor que q, es
decir, menos bits que los del módulo de firma p ya que se
elige por diseño p >> q
Comprobación de firma DSS por B
16
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
LaSoleMateico
Hola LaSole, soy Mateico y firmo con DSS.
Sea H(M) = 1101000 = 104 (un elemento de pB)
Claves MateicopB = 223 qB = 37 = 17
y = b mod p = 30b = 25, h = 12
28 pB = 223 27
Luego firmará bloques de 7 bitsFirma
1) inv (h,q) = inv (12, 37) = 34
2) r = (h mod p) mod q = (1712 mod 223) mod 37 = 171 mod 37 = 23
3) s = [H(M)+br][inv (h,q)] mod q = [104+2523]34 mod 37 = 35
4) La firma digital de H(M) = 104 será: (r, s) = (23, 35)
5) Mateico transmite a LaSole el bloque (M, r, s) = (M, 23, 35)
Ejemplo de firma DSS de B A
17
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
LaSoleMateico
Comprobación de firma
1) w = inv (s, q) = inv (35, 37) = 18
2) u = Mw mod q = 10418 mod 37 = 22
3) v = rw mod q = 2318 mod 37 = 7
4) ¿(u yv mod p) mod q = r ?
5) [(1722307) mod 223] mod 37 = 23
Se acepta la firmaY el tamaño será
menor que qB = 37
es decir << PB = 223 que
era el punto débil de ElGamal
Comprobación de firma DSS por A
Claves MateicopB = 223 qB = 37 = 17
y = b mod p = 30b = 25, h = 12
LaSole recibe:
(M, r, s) = (M, 23, 35)
¿igualdad?
18
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
19
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Protección de ProgramasProtección de Programas
La Protección del Software es
FundamentalFundamental en Seguridad en Sistemas.
Los problemas en el software van desde errores de programación hasta código escrito intencionalmente para causar daños.
Todos pueden traer malas consecuencias.
20
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Seguridad en el Mundo RealSeguridad en el Mundo Real
• Presencia en Internet.
• Uso de SW.
• Estabilidad en clientes y servers.
Qué se busca?
• El SW tiene errores.
• Amenazas desde Internet.
• Hay código que atraviesa firewalls.
Problemas
21
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Podemos evitar todos los problemas?Podemos evitar todos los problemas?
NONO
• Es imposible poder asegurar que todo programa (sin pensar todavía en código malicioso) se va a comportar exactamente según su diseño (ni +, ni -).
• Las técnicas de ingeniería de SW evolucionan mucho más rápido que las de técnicas de seguridad. Los expertos en seguridad todavía estan asegurando software de ayer.
22
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Paranoic Flag
Por qué preocuparse?Por qué preocuparse?
El código malicioso puede comportarse de forma inesperada. Puede ser un programa o parte de él.
Un programa tiene millones de bytes… qué sorpresa nos depara el destino cuando ejecutamos INSTALL?
23
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Código MaliciosoCódigo Malicioso
• Puede hacer cualquier cosa: es SW.
• Puede estar “dormido” hasta que se de algo.
• Corre con la autoridad del usuario.
Puede causar (mucho) daño
• Cohen 84.
• Hay referencias anteriores… Anderson 72.
Hace tiempo que está entre nosotros
24
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Tipos de Código MaliciosoTipos de Código Malicioso
Código Malicioso o Rogue Program se denomina en general a programas que intencionalmente causan daño. Errores de programación no entran entonces en esta categoría.
Virus: es un programa que “contagia” código malicioso a programas no infectados previamente. La infección se propaga geométricamente por el sistema actual y por otros sistemas conectados. Suena a Sci-Fi pero es real.
Caballo de Troya: código malicioso que además de su efecto primario, tiene un segundo efecto: sorpresita. Ej: login script.
25
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Tipos de Código MaliciosoTipos de Código Malicioso
Bomba Lógica: este código malicioso “detona” cuando se da cierta condición. Caso especial: Bomba de Tiempo.
Trapdoor o Backdoor: feature especial “escondida” en un programa, generalmente brinda algún privilegio especial. Puede ser intencional, para mantenimiento o para “borrar” registros (acción criminal).
Worm: es un programa que se disemina a través de una red. Pregunta: cuáles son las diferencias entre worm y virus?
Conejo: es un virus o worm que se duplica sin control. Su intención es la de agotar recursos computacionales.
26
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Tipos de Código MaliciosoTipos de Código Malicioso
Los tipos definidos anteriormente son similares pero no iguales!!!! En general para la prensa son todos virus…
Dada la popularidad de los virus nos enfocaremos principalmente en ellos en la clase de hoy.
27
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
VirusVirus
• Una copia impresa de un virus NO HACE NADA!!!! Para que se disemine necesita ser ejecutado.
Ayudenme a diseminar este concepto!!!!!
• Append.
• Surround.
• Reemplazo.
Como se anexan a un archivo?
28
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
VirusVirus
El virus (V) tiene que ser invocado en vez de el target (T).
El virus puede asumir el nombre de T reemplazando el código de T o cambiando links en la file table.
Como gana control un virus?
29
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Características de un “buen” virusCaracterísticas de un “buen” virus
• Difícil de detectar.
• Difícil de destruir/desactivar.
• Que se disemine mundialmente.
• Fácil de crear.
• Independiente de la arquitectura/S.O.
Según los objetivos buscados será la ubicación del virus.
30
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Virus: UbicaciónVirus: Ubicación
• Boot Sector.
• virus residentes.
• Programas de aplicación. Macros…
• Librerías. Buena diseminación.
• Otros buenos “hogares”: compiladores, loaders, linkers, monitores (t.e.), debuggers (t.e.).
31
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Virus: FirmasVirus: Firmas
• Un virus no puede ser completamente invisible. Se almacena en algún lado, se ejecuta de alguna forma, se disemina de cierto modo: Firma.
• Gracias a esta firma funcionan los Anti-Virus.
Patrones
• Patrones de Almacenamiento.
• Patrones de Ejecución. Tabla 5.2 (187), Pfleeger.
Si el virus tiene control de la máquina puede “mostrar” lo que el usuario quiere ver.
32
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Virus: FirmasVirus: Firmas
Patrones (Sigue)
• Patrones de Transmisión.
• virus Polimórficos. Ver algunos ejemplos en pizarrón.
33
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
PrevenciónPrevención
• Uso de software legal.
• Testear todo software nuevo en una máquina aislada.
• Diskette booteable.
• Backup de archivos de sistema.
• Virus scanners frecuentemente actualizados.
• Cuidado con los e-mails/www!!!!
34
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Verdades/Creencias acerca de virusVerdades/Creencias acerca de virus
• Afectan solamente sistemas PC’s/Windows.
• Protección de archivos mediante sus “permisos”.
• Infecciones en archivos de “datos”.
• Diseminación por diskette.
• No pueden permanecer en memoria después de un reboot.
• No pueden infectar hardware.
• virus “benignos”.
35
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Ejemplos de virusEjemplos de virus
• Brain. Página 191, Pfleeger.
• Miles de páginas web.
• La mayoría de los programas Anti-Virus tienen información de virus en sus páginas.
• Buscadores WWW: www.google.com, etc.
36
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Código Malicioso con DestinoCódigo Malicioso con Destino
Hasta ahora solo vimos código anónimo que afecta sistemas indiscriminadamente. Este no siempre es el caso.
Puede afectar:
• Ciertos sistemas.
• Ciertas aplicaciones.
• Cierta persona.
• Propósito particular.
• etc.
37
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Código Malicioso con DestinoCódigo Malicioso con Destino
Trapdoors.
Se puede solucionar el problema?
Es decidible?
Salami Attack
Trocitos de ingredientes que se “agrupan” para hacer un salamín. Ej: sistema de bancos.
Redondeos, truncados… Puede detenerse este tipo de ataques?
38
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Código Malicioso con DestinoCódigo Malicioso con Destino
Covert Channels.
Son programas que “pasan” información sin que el usuario sea conciente de esto a personas que no deberían recibirla.
Más detalles en la sección 5.2 de Pfleeger.
39
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Controles contra Amenazas de SWControles contra Amenazas de SW
Hasta ahora vimos que muchas son las amenazas y problemas que puede causar el SW. Veremos aquí brevemente que se puede hacer al respecto.
Controles de Programación
• Buenas “técnicas” de diseño y programación. Ingeniería del Software (out of the scope).
• Revisión de Pares.
• Modularidad, encapsulamiento y ocultamiento de la información.
• Pruebas de correctitud.
40
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Controles contra Amenazas de SWControles contra Amenazas de SW
Controles del S.O. sobre el uso de programas
Dado que no todos los programas siguen los lineamientos anteriores es útil la ayuda que pueda brindarnos el S.O.
Aquí veremos solo algunas nociones.
Código Confiable
Código rigurosamente desarrollado y analizado (correctitud, integridad, privilegio limitado, nivel de seguridad apropiado).
Próxima Clase
41
Seguridad en Sistemas: Autentificación y Seguridad en SWSeguridad en Sistemas: Autentificación y Seguridad en SW
Controles contra Amenazas de SWControles contra Amenazas de SW
Controles del S.O. sobre el uso de programas (Sigue)
Sospecha Mútua
Usuario Programa
Confinamiento
Logs de Acceso