[Dudas] Información profundizada sobre Troyanos y Rootkits

Iniciado por xaps, 26 Julio 2015, 12:40 PM

0 Miembros y 1 Visitante están viendo este tema.

engel lex

Cita de: SheKeL_C$ en 29 Julio 2015, 11:06 AM
Se puede "cifrar" con la clave privada y descifrar con la publica??

si... lo unico que distingue la llave privada de la publica es la que te guardas y la que das a conocer...

aquí hace tiempo hice una vaga explicación de rsa y un algoritmo básico en python que hace la operación
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

SheKeL_C$

Esta ya es la ultima pregunta sobre el RSA porque no es el tema del hilo..

Si cifro con mi llave privada y descifro con la llave publica, esto seria firmar y confirmar la autoria de un archivo ???
Si en vez de usar un numero como el objeto de lo que se quiere cifrar/firmar, fuese un mensaje en texto plano, como se deberia de cifrar?? byte por byte de forma independiente?
Ejemplo:
Si el mensaje es "hola" se cifra la "h" y da "a", luego la "o" y da "z"... el mensaje cifrado seria "az.." ??

kub0x

#12
Procura no utilizar el término cifrar junto a la clave privada, ya que el término real es firmar.

Para firmar primero calculas el digest o hash de un mensaje o  de un bloque de de datos. Después firmas dicho digest (m^d (mod N)) y se lo entregas al destinatario junto al mensaje cifrado por AES o en plano. Entonces el destinatario descifra el hash cifrado con tu pública y calcula el hash para el mensaje que le has entregado. Si ambos hashes coinciden el mensaje no ha sido modificado y ha sido enviado por quien dice ser.

Es decir, se respetan los 3 principios clave de la criptografía de clave pública: Integridad (mensaje no modificado), Confidencialidad (aunque capturen el mensaje no podrán hacer nada) y No repudio (sabemos que proviene del emisor y no de otra persona que lo suplante).

Sobre la longitud del mensaje a cifrar, bueno te lo aclaro:

El esquema de cifrado/descifrado en RSA se basa en los grupos multiplicativos de enteros módulo N. La clave pública es un semiprimo llamado N compuesto por dos primos 'p' y 'q'. Al cifrar o descifrar tu utilizas una base 'm' elevada a la 'e' o 'd' como ya dije antes ('e' y 'd' satisfacen la multiplicativa inversa mod phi(N)).

En este caso la base 'm' es una clase de congruencia, es decir, es un número coprimo con N menor que N que genera un conjunto de congruencias coprimas con N.

Básicamente el mensaje tiene que tener longitud N - 1. Te dejo la referencia oficial, está en Inglés, pero su lectura es obligatoria para saber como se implementa RSA en la práctica. La teoría sobre RSA se aprende bien en .pdfs varios, o mismamente KhanAcademy o YouTube. Aunque realmente es aprender sobre teoría de números (number theory).

https://tools.ietf.org/html/rfc3447

Te dejo una pequeña reflexión sobre el cifrado/firma en RSA:

Imagina dos archivos diferentes entre sí pero con hashes casi idénticos. Imagina también que a la hora de firmar firmasemos el hash como tu dices, byte a byte en vez de lo máximo posible.

Si el Hash de ambos dos es de 160bit y son idénticos en los primeros 128bit (16bytes), la firma del mensaje será idéntica en los primeros 16bytes y el problema se reduce a una fuerza bruta de 32bit (4byte), de esta forma consegurías falsificar la firma. Por eso para firmar se firma el hash entero de 160bit o lo que pese ya que N en bits es igual o superior a 1024bits por ende el módulo es superior en tamaño al mensaje.

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


xaps

Muchas gracias por las múltiples respuestas y los enlaces de información.

Me han quedado dudas acerca el SecureBoot:

Cita de: kub0x en 28 Julio 2015, 15:50 PM
A partir de Windows Vista se introdujo la Driver Signature Enforcement Policy la cual hace uso de la Kernel Mode Code Signing Policy.

Te dejo una breve explicación: tanto en x86 y x64 si Secure Boot está activo tu driver debe de estar firmado por una CA perteneciente al programa de certificación de Microsoft. Obviamente si Secure Boot está activo lo tendrás díficil para bypassearlo, a no ser que exista una vulnerabilidad que te permita deshabilitarlo vía UEFI (alterando la Platform Key).

Si Secure Boot está desactivado, en x86 podrás cargar drivers unsigned o sin firmar, es decir, no necesitan firma digital ni certificado alguno. En x64 sin Secure Boot el driver puede ir firmado por cualquier entidad certificadora (CA) en la que confíe el módulo CI (Code Integrity). La lista es la siguiente -> https://msdn.microsoft.com/en-us/library/windows/hardware/dn170454%28v=vs.85%29.aspx

Es decir, que si está el Secure Boot activado solo tengo dos opciones: Firmar digitalmente como una CA de Microsoft o deshabilitarlo via UEFI mediante una vulnerabilidad, cierto?

Muchas gracias de nuevo y saludos :)
"The programmers of tomorrow are the wizards of the future" - Gave Newel