martes, 15 de julio de 2008

Criptografia en el protocolo de MSN



Criptografia En El Protocolo De MSN



Dentro del protocolo de MSN , utiliza metodos de criptografia.


La Encriptacion MD5 De Claves MSN

El algoritmo MD5 no es un sistema de encriptacion, sino una cadena de huellas que indetinfica de forma unica como todos los sistemas de encriptacion un documento en especial, este sistema de encriptacion se esta utilizando principalmente para la encriptacion de huellas digitales,en este sistema incluimos el proceso de envio del nombre de usuario y su clave correspondiente del MSN, este proceso debe encriptar la clave del usuarion para que no pueda ser capturada por un sniffer, nos hariamos la siguiente pregunta ¿como funciona este sistema de encriptacion de firmas digitales como por ejemplo la del MSN?. De la siguiente forma.

- Para empezar debemos conocer el nombre de un usuario y su clave correspondiente, ademas de la cadena de desafios que a enviado el servidor al cliente en el momente de establecer la conexion.

El ejemplo siguiente nos muestra una pequeña ayuda para utilizar las librerías de criptografía:


Código
using System;
using System.Text;
using System.Security.Cryptography;


public class MD5utils
{
public static string ASCII_MD5(string arg)
{
MD5CryptoServiceProvider md5=new MD5CryptoServiceProvider();
byte[] data=Encoding.ASCII.GetBytes(arg);
byte[] result=md5.ComputeHash(data);

string cadena_res="";
for (int i=0; i<16; i++)
{
cadena_res+=result/i/.ToString("x");
}
return cadena_res;
}
}

Esto nos sirve para pasarle una cadena de caracteres y a continuacion procederemos a encriptarla con el algoritmo comentado arriba el MD5. Y claro a la pregunta ¿como hariamos esto? Pues debemos pasar dicha cadena de caracteres a una matriz de bytes y utilizar el metodo estatico ComputeHash claramente de clase que estamos trabajanmdo MD5, de aqui obtenemos un nuevo matriz de bytes que debemos pasarlo a una cadena de caracteres que esta es la que devolvemos como parametro, el ejemplo de esta clase es el siguiente:


Código
SendString (ns, "USR "+TrID.ToString()+" MD5 I "+login+"\r\n");
returnData=ReceiveString (ns,tcp);

char[] separators = { ' ', '\r', '\n' };
string[] parts = returnData.Split (separators);
string hash = parts[4];
//extraemos el hash de la cadena devuelta (parametro 4)

hash = hash + password; //unimos el hash al password

SendString (ns, "USR "+TrID.ToString()+" MD5 S "+MD5utils.ASCII_MD5 (hash)+"\r\n");
returnData=ReceiveString (ns, tcp);

Esto es parte del codigo de la conexion del cliente con el servidor del MSN, entoneces estamos enviando el login y este nos devuelve una cadena de caracteres que debemos unir a la clave, claramente antes de encriptarla con el algoritmo MD5.

Para mas informacion y trabajo con ComputeHash:
http://msdn2.microsoft.com/es-es/library/system.security.cryptography.hashalgorithm.computehash(VS.80).aspx

Desde ahi podran comprobar el ejemplo...


Por: rufiopunkrock, raise

No hay comentarios: