Buscando algún sistema alternativo para encriptar de forma segura el login y password de usuarios, careciendo de certificado SSL, encontré algo bastante interesante en esta dirección (http://pajhome.org.uk/crypt/md5/).
Al margen de los algoritmos para encriptar en el lado cliente según los estándares MD4, MD5 y SHA-1, la idea sobre cómo hacerlo resulta brillante.
La filosofía es generar en el lado servidor un valor aleatorio que se encripta, y es enviado al cliente, junto con el formulario para el nombre de usuario y la clave de entrada.
Ya en el lado cliente, los datos relativos al nombre de usuario y clave que introduce el cliente son encriptados utilizando el mismo algoritmo que se usó en el servidor. A estos valores se les añade el valor aleatorio que se envió al cliente.
Los datos cuando son enviados ya viajan encriptados por la red de forma segura. Una vez llegan al servidor, se comparan el nombre de usuario y la clave que han llegado con los reales, encriptando estos últimos de la misma forma que se hizo en el lado cliente. Si las cadenas que vienen y las que hemos generado en el lado servidor coinciden se permite el paso, en caso contrario, los datos que ha proporcionado el usuario son erróneos.
La ventaja de este sistema es claro: no es necesario tener un certificado instalado en el servidor, aunque ninguno de nostros haría una compra si el sitio no es seguro. Por otro lado, este sistema resulta bastante más seguro que el sistema de authenticatión que usa el servidor.
Los algoritmos para varios lenguajes -además de Javascript- y una explicación más amplia se encuentra en esta dirección: http://pajhome.org.uk/crypt/md5/