Implementando el sistema de inicio de sesión de SRP Challenge * con SSL * (usando PHP)

1

Mi pregunta: ¿Alguien sabe cómo implementar la autenticación SRP / Diffie-Hellman en PHP (o si esto ya se ha hecho)?

(Algunos detalles)

  1. Estoy usando CodeIgniter con TankAuth (ambas últimas versiones)
  2. Estoy forzando el acceso SSL a través de .htaccess

Uno de los requisitos de este proyecto es utilizar la autenticación basada en desafíos . Leí mucho al respecto, parece que hacer SRP / Diffie-Hellman trabajar con TankAuth (junto con SSL) es una solución de autenticación segura (siempre que esté correctamente ¡hecho!)

El único problema real es: simplemente no pude traducir especificación de SRP en PHP / mysql (¡Pensé que era bueno en matemáticas pero obviamente no soy no !)

No importa si es php simple, puedo adaptar el código para que funcione con CodeIgniter / TankAuth.

Busqué mucho en Google, lo más cerca que pude encontrar es esto , pero la implementación simplemente no se siente bien .

También entiendo que eventualmente tendré que adaptar esto para que el proceso de autenticación de dos pasos se vea como un formulario de inicio de sesión estándar de un solo paso normal (usando ajax), pero eso es para más adelante, ahora mismo estoy atascado con el lógica.

    
pregunta TheDude 01.10.2012 - 04:24
fuente

2 respuestas

1

Hace un tiempo observé las especificaciones de SRP, y describen muy bien cómo usar algunos bloques criptográficos bien conocidos y configurarlos en un protocolo de conocimiento cero. Sin embargo, los bloques de creación criptográficos en sí no están explicados (se consideran conocimientos comunes para los criptógrafos).

Si entendí correctamente, SRP usa un esquema matemático que se puede demostrar que se reduce al problema Diffie-Hellman (mi terminología es probablemente incorrecta, quiero decir que se puede demostrar que el problema de SRP es al menos tan computacionalmente costoso como el problema Diffie-Hellman) pero no es igual a Diffie-Hellman.

Tenga en cuenta que un esquema de contraseña de conocimiento cero se considera una de las cosas más difíciles de implementar correctamente. . He escrito una respuesta en SRP hace algún tiempo. Como puede ver, es significativamente más complejo que la implementación de 'Creación de contraseñas y sistema de respuesta-desafío modificado' en el artículo que vinculó. (Y tienes razón al no confiar en él, creo que puedo detectar puntos débiles en él, y solo soy un entusiasta de la seguridad, no un criptógrafo o un profesional de la seguridad).

Además de lo anterior, SRP es, por lo que sé, un esquema protegido por derechos de autor.

Por lo tanto, mi consejo sería: seguir con la mejor práctica actual de usar un fuerte algoritmo de hashing (BCrypt) en el lado del servidor, asegurar su canal de comunicación con TLS (SSL), en lugar de implementar un esquema muy complejo como SRP.

    
respondido por el Jacco 01.10.2012 - 12:17
fuente
2

El algoritmo se ha portado a JavaScript para clientes (navegadores) y PHP para servidores: consulte sprlan-6a-demo de Ruslan Zavacky en GitHub.

    
respondido por el simbo1905 05.06.2014 - 15:36
fuente

Lea otras preguntas en las etiquetas