Login without HTTPS, how to secure?

Para una aplicación web, cuando HTTPS no está disponible como medida de seguridad, ¿es posible hacer que el inicio de sesión sea algo seguro? P.ej.:

¿Tokenizar los inicios de sesión para dificultar la repetición de ataques?¿Encriptar de alguna manera la contraseña enviada desde un campo de contraseña HTML?

En particular, estoy usando CakePHP y una llamada POST AJAX para activar la autenticación (incluye nombre de usuario y contraseña proporcionados).

Actualización sobre el problema:

HTTPS no está disponible. Período. Si no te gusta la situación, considérala una pregunta teórica.No hay requisitos explícitos, tiene todo lo que ofrece HTTP, PHP y un navegador (cookies, JavaScript, etc.) en la vida real (sin binarios mágicos de RSA, complementos de PGP).La pregunta es, ¿cuál es el mejor?esta situación, eso es mejor que enviar las contraseñas de texto sin formato. Conocer los inconvenientes de cada una de estas soluciones es una ventaja.Cualquier mejora mejor que las contraseñas simples es bienvenida. No buscamos una solución 100% l33tG0Dhx0r-proff. Difícil de descifrar es mejor que complicado de hackear, que es mejor que un olfateo trivial que revela la contraseña.

Respuestas a la pregunta(20)

Su respuesta a la pregunta