¿Cómo debo éticamente enfoque de la contraseña de usuario de almacenamiento para su posterior texto de la recuperación?

StackOverflow https://stackoverflow.com/questions/2283937

Pregunta

Como puedo continuar a construir más y más sitios web y aplicaciones web a menudo me piden para almacenar contraseñas del usuario en una forma que puedan ser recuperados si/cuando el usuario tiene un problema (ya sea por correo electrónico un enlace "contraseña olvidada", caminar a través de teléfono, etc.) Cuando me puedo luchar contra amargamente en contra de esta práctica y hago un montón de 'extra' de programación para hacer que la contraseña se restablece y la asistencia administrativa posible sin almacenar su contraseña real.

Cuando no puedo luchar contra ella (o no puede ganar) entonces yo siempre codificar la contraseña de alguna manera para que, al menos, no se almacena como texto plano en la base de datos—aunque soy consciente de que si mi DB obtiene hackeado no tardaría mucho para que el culpable para romper las contraseñas, por lo que me hace incómodo.

En un mundo perfecto, la gente iba a actualizar las contraseñas con frecuencia y no duplicar a través de muchos sitios diferentes—por desgracia, conozco a MUCHAS personas que tienen el mismo trabajo/casa/correo electrónico/contraseña banco, e incluso se han dado libremente a mí cuando necesitan asistencia.No quiero ser el responsable financiero de la desaparición de si mi DB procedimientos de seguridad de la falla por alguna razón.

Moral y éticamente yo me siento responsable por la protección de lo que puede ser, para algunos usuarios, sus medios de subsistencia, incluso si están tratando con mucho menos respeto.Estoy seguro de que hay muchos caminos para acercarse y argumentos para la salazón de hash y las diferentes opciones de codificación, pero hay una "mejor práctica" cuando tienes que guardarlos?En casi todos los casos estoy usando PHP y MySQL si hay alguna diferencia en la forma en que deben manejar los detalles.

Información adicional para la Recompensa

Quiero aclarar que sé que esto no es algo que queramos hacer y que en la mayoría de los casos la negativa a hacerlo mejor.Estoy, sin embargo, no en busca de una conferencia sobre los méritos de este enfoque estoy buscando los mejores pasos a seguir si usted toma este enfoque.

En una nota, a continuación hice el punto de que los sitios web orientado en gran medida hacia los ancianos, los enfermos mentales, o es muy joven puede llegar a ser confuso para la gente cuando se le preguntó a realizar una rutina de recuperación de contraseña segura.A pesar de que podemos encontrar es simple y mundano en aquellos casos en los que algunos usuarios necesitan la ayuda adicional de tener un servicio de ayuda técnica en el sistema o ser enviado por correo electrónico/muestra directamente a ellos.

En tales sistemas, la tasa de deserción a partir de estos datos demográficos podía dificultar la aplicación si los usuarios no se han dado este nivel de acceso de la asistencia, por favor conteste con una configuración en la mente.

Gracias a Todos

Este ha sido un divertido pregunta con mucho debate y la he disfrutado.Al final he seleccionado una respuesta que tanto retiene la contraseña de seguridad (no voy a tener que mantener el texto sin formato o se pueden recuperar las contraseñas), pero también hace que sea posible para el usuario de la base de la que se especifica para iniciar sesión en un sistema sin los principales inconvenientes que he encontrado de la normal de recuperación de contraseña.

Como siempre, había alrededor de 5 respuestas que me gustaría tener marcada como correcta por diferentes razones, pero tuve que elegir el mejor, el resto tienes un +1.Gracias a todos!

También, gracias a todos en la Pila de la comunidad que votaron a favor de esta pregunta y/o marcado como favorito.Me tome llegar al 100 votos como un cumplido, y espero que esta discusión ha ayudado a alguien con la misma preocupación que yo tenía.

¿Fue útil?

Solución

¿Qué hay de tomar otro enfoque o ángulo en este problema? Preguntar por qué la contraseña se requiere para estar en texto llano: si se trata de modo que el usuario puede recuperar la contraseña, a continuación, en sentido estricto que realmente no necesita para recuperar la contraseña que se establecen (que no recuerdan lo que es de todos modos), se tienen que ser capaces de darles una contraseña que puede utilizar .

Piense en esto: si el usuario necesita para recuperar la contraseña, es porque se han olvidado de él. En cuyo caso una nueva contraseña es tan bueno como el anterior. Sin embargo, uno de los inconvenientes de los mecanismos de restablecimiento de contraseñas comunes utilizados en la actualidad es que las contraseñas generadas producidos en una operación de restablecimiento son generalmente un grupo de caracteres al azar, por lo que son difíciles para que el usuario simplemente escribe correctamente a menos que copy-n- pegar. Eso puede ser un problema para los usuarios de ordenadores menos experimentados.

Una forma de evitar este problema es proporcionar las contraseñas generadas automáticamente que son más o menos texto en lenguaje natural. Mientras que las cadenas de lenguaje natural que no tenga la entropía que una cadena de caracteres al azar de la misma longitud ha, no hay nada que diga su contraseña generada automáticamente necesita tener sólo 8 (o 10 o 12) caracteres. Obtener una contraseña generada automáticamente de alta entropía por encadenar varias palabras al azar (dejar un espacio entre ellos, por lo que todavía son reconocibles y tipificables por cualquiera que pueda leer). Seis palabras al azar de longitud variable son probablemente más fácil de escribir correctamente y con confianza de 10 caracteres al azar, y que puedan tener una mayor entropía también. Por ejemplo, la entropía de una contraseña de 10 caracteres dibujado aleatoriamente de mayúsculas, minúsculas, dígitos y 10 símbolos de puntuación (por un total de 72 símbolos válidos) tendría una entropía de 61,7 bits. El uso de un diccionario de 7776 palabras (tal como se utiliza Diceware) que podrían ser seleccionados al azar para una palabra de seis frase de contraseña, la contraseña tendría una entropía de 77,4 bits. Vea la Diceware FAQ para obtener más información.

  • una frase de contraseña con cerca de 77 bits de entropía: "admitir tabla llamarada prosa estilo aguda"

  • una contraseña con cerca de 74 bits de entropía: "K: & R $ ^ tt ~ QKD"

Sé que preferiría escribir la frase, y con el copia-n-goma, la frase no es menos fácil de usar que la contraseña sea, por lo que no hay pérdida. Por supuesto, si su sitio web (o cualquiera que sea el bien protegido es) no necesita 77 bits de entropía para una frase de contraseña generada automáticamente, generan un menor número de palabras (que estoy seguro que sus usuarios apreciarían).

Yo entiendo los argumentos que no son protegidos por contraseña activos que realmente no tienen un alto nivel de valor, por lo que el incumplimiento de una contraseña podría no ser el fin del mundo. Por ejemplo, probablemente no me importa si el 80% de las contraseñas que utilizo en varios sitios web fue violada: todo lo que podría pasar es que alguien un envío de correo basura o publicar bajo mi nombre por un tiempo. Eso no sería grande, pero no es como ellos estarían rompiendo en mi cuenta bancaria. Sin embargo, dado el hecho de que muchas personas utilizan la misma contraseña para sus sitios de foros de Internet como lo hacen para sus cuentas bancarias (y bases de datos de seguridad probablemente nacionales), creo que sería mejor para manejar incluso las contraseñas de los de bajo valor "como no -recoverable.

Otros consejos

Imagine que alguien ha encargado un gran edificio que se construirá - una barra, digamos - y la siguiente conversación tiene lugar:

Arquitecto:. En un edificio de este tamaño y capacidad, tendrá que sale de fuego aquí, aquí, y aquí
Cliente:. No, eso es demasiado complicado y caro de mantener, no quiero ningún puertas laterales o puertas traseras
Arquitecto:. Sir, no son opcionales, que se requieren salidas de emergencia como por código de bomberos de la ciudad
Cliente: No te pago para discutir. Sólo haz lo que pregunté.

¿El arquitecto luego preguntar cómo construir este edificio éticamente y sin salidas de emergencia?

En el sector de la construcción y la ingeniería, la conversación es más probable que termine de esta manera:

Arquitecto: Este edificio no se puede construir sin salidas de emergencia. Puede ir a cualquier otro profesional con licencia y él te dirá lo mismo. Me voy ahora; llámame cuando esté listo para cooperar.

Programación informática no puede ser un licencia profesión, pero la gente a menudo parecen preguntarse por qué nuestra profesión no recibe el mismo respeto que un ingeniero civil o mecánico - bueno, no busque más. Aquellas profesiones, cuando la basura entregado (o francamente peligroso) requisitos, simplemente rechazar. Ellos saben que no es una excusa para decir: "Bueno, hice lo que pude, pero él insistió, y yo tengo el hacer lo que dice." Ellos podrían perder su licencia para esa excusa.

No sé si usted o sus clientes son parte de cualquier empresa que cotiza en bolsa, pero el almacenamiento de contraseñas en cualquier forma recuperable gustaría hacer que falle varios tipos diferentes de auditorías de seguridad. La cuestión no es lo difícil que sería para algunos "hackers" que consiguió el acceso a su base de datos para recuperar las contraseñas. La gran mayoría de las amenazas a la seguridad son internos. Lo que hay que proteger contra algún empleado descontento es caminar con todas las contraseñas y venderlos al mejor postor. El uso del cifrado asimétrico y almacenar la clave privada en una base de datos independiente no hace absolutamente nada para evitar este escenario; siempre va a ser a alguien con acceso a la base de datos privada, y eso es un grave riesgo de seguridad.

No hay manera ética o responsable de almacenar contraseñas en una forma recuperable. Período.

Se puede cifrar la contraseña + una sal con una clave pública. Para los inicios de sesión sólo comprobar si el valor almacenado es igual al valor calculado a partir de la entrada del usuario + la sal. Si llega un momento, cuando la contraseña necesita ser restaurado en texto plano, puede descifrar de forma manual o semiautomática con la clave privada. La clave privada puede ser almacenada en otro lugar y, además, puede ser encriptada simétricamente (que necesitará una interacción humana para descifrar la contraseña a continuación).

Creo que esto es en realidad algo similar a la forma en que el Agente de recuperación de Windows funciona.

  • Las contraseñas se almacenan cifradas
  • La gente puede acceder sin descifrar de texto plano
  • Las contraseñas pueden ser recuperados a texto plano, pero sólo con una clave privada, que se pueden almacenar fuera del sistema (en una caja fuerte del banco, si se quiere).

No se rinda. El arma que puede utilizar para convencer a sus clientes es no repudio. Si se puede reconstruir las contraseñas de usuario a través de cualquier mecanismo, que ha dado sus clientes un mecanismo de no repudio legal y que pueden repudiar cualquier transacción que depende de esa contraseña, porque no hay forma en que el proveedor puede demostrar que que no reconstruyen la contraseña y ponen la transacción a través de ellos mismos. Si las contraseñas se almacenan correctamente como digiere en lugar de texto cifrado, esto es imposible, ergo, ya sea el cliente final ha realizado la operación a sí violó su deber de cuidado w.r.t. la contraseña. En cualquiera de los casos que deja la responsabilidad de lleno con él. He trabajado en los casos en que equivaldría a cientos de millones de dólares. No es algo que usted quiere conseguir equivocado.

No se puede almacenar contraseñas en texto plano éticamente para la recuperación posterior. Es tan simple como eso. Incluso Jon Skeet no puede almacenar contraseñas en texto plano éticamente para la recuperación posterior. Si los usuarios pueden recuperar las contraseñas en texto plano de algún modo u otro, entonces también lo puede potencialmente un hacker que se encuentra una vulnerabilidad de seguridad en el código. Y eso no es sólo la contraseña de un usuario se vea comprometida, pero todos ellos.

Si sus clientes tienen un problema con eso, les digo que el almacenamiento de contraseñas recuperable es contra la ley. Aquí en el Reino Unido, en todo caso, la Ley de Protección de Datos de 1998 (en particular, el Anexo 1, parte II, párrafo 9) requiere del tratamiento de datos a utilizar las medidas técnicas adecuadas para mantener los datos personales seguros, teniendo en cuenta, entre otras cosas, la daño que pueda ser causado si se vieron comprometidos los datos - lo que podría ser considerable para los usuarios que comparten las contraseñas entre los sitios. Si todavía tienen problemas para Grokking el hecho de que es un problema, apunte a algunos ejemplos del mundo real, tales como éste .

La forma más sencilla para permitir a los usuarios recuperar un inicio de sesión es enviarlas por correo electrónico un enlace de una sola vez que los registra en forma automática y los lleva directamente a una página donde pueden elegir una nueva contraseña. Crear un prototipo y lo muestra en acción a ellos.

Aquí hay un par de entradas de blog que escribí sobre el tema:

Actualización: ahora estamos empezando a ver en procedimientos judiciales contra las empresas que no aseguren a las contraseñas de sus usuarios correctamente. Ejemplo: LinkedIn sancionado con $ 5 millones de la clase de acción demanda ; Sony multado con £ 250.000 sobre PlayStation datos piratear . Si no recuerdo mal, LinkedIn fue realmente Cifrado de contraseñas de sus usuarios, pero el cifrado se utilizaba era demasiado débil para ser eficaz.

Después de leer esta parte:

  

En una nota por debajo de la que he señalado que   sitios web orientada en gran medida hacia el   personas de edad avanzada, con problemas mentales, o muy   joven puede llegar a ser confuso para las personas   cuando se les pide para realizar una   rutina de recuperación de contraseña segura.   Aunque podemos encontrar que sea sencillo y   mundana en aquellos casos en que algunos usuarios necesitan   la ayuda adicional de cualquiera que tenga   un técnico de servicio les ayude en el   sistema o de que éste enviado por correo electrónico / visualizado   directamente a ellos.

     

En tales sistemas, la tasa de desgaste   a partir de estos datos demográficos podrían entorpecer   la aplicación si los usuarios no eran   dado este nivel de asistencia de acceso,   así que por favor responder con una configuración de este tipo en   mente.

Me quedo preguntando si alguno de estos requisitos imponen una contraseña del sistema recuperable. Por ejemplo: Tía Mabel llama y dice "Su programa de Internet no está funcionando, no sé mi contraseña". "OK" dice que el servicio al cliente avión no tripulado "me dejaron algunos detalles y luego voy a le dará una nueva contraseña . Cuando vuelvas a acceder se le preguntará si desea mantener esa contraseña o cambiarlo a algo que pueda recordar más fácilmente. "

A continuación, el sistema está configurado para saber cuando un restablecimiento de contraseña ha sucedido y mostrar un "le gustaría mantener la nueva contraseña o elegir uno nuevo" mensaje.

¿Cómo es esto peor para el PC-leer y escribir menos que recibir la noticia de su antigua contraseña? Y mientras que el personal de servicio al cliente puede llegar hasta la travesura, la misma base de datos es mucho más seguro en caso de violarse.

comentario Lo que es malo en mi sugerencia y voy a sugerir una solución que realmente hace lo que inicialmente quería.

Michael Brooks ha sido bastante vocal sobre CWE-257 - el hecho de que cualquiera que sea el método que utilice, usted (el administrador) aún puede recuperar la contraseña. Entonces, ¿cómo acerca de estas opciones:

  1. Cifrar con la contraseña clave de otra persona público - alguna autoridad externa. De esa manera no se puede reconstruir como algo personal, y el usuario tendrá que ir a esa autoridad externa y pedir que su contraseña recuperada.
  2. Cifrar la contraseña utilizando una clave generada a partir de una segunda frase de contraseña. Para ello, el lado del cliente de cifrado y nunca transmitirá dentro del claro para el servidor. Entonces, para recuperar, hacer el cliente del lado de descifrado de nuevo al volver a generar la clave de su entrada. Es cierto que este enfoque es básicamente utilizando una segunda contraseña, pero siempre se les puede decir que anotarla, o utilizar el viejo enfoque de seguridad-pregunta.

1. Creo que es la mejor opción, ya que le permite designar a alguien dentro de la empresa del cliente para mantener la clave privada. Asegúrese de que ellos generan la clave a sí mismos, y lo almacenan con instrucciones en una caja fuerte, etc. Incluso se puede agregar seguridad al elegir sólo a cifrar y el suministro de ciertos caracteres de la contraseña a la tercera parte interna de modo que tendrían que romper la clave de adivinar eso. El suministro de estos caracteres para el usuario, es probable que recuerde lo que era!

Ha habido mucha discusión de problemas de seguridad para el usuario en respuesta a esta pregunta, pero me gustaría añadir una mención de los beneficios.Hasta ahora, no he visto un legítimo beneficio mencionado por tener un recuperable de la contraseña almacenada en el sistema.Considere esto:

  • El usuario se benefician de tener su contraseña por correo electrónico a ellos?No.Ellos reciben más se benefician de una sola vez de uso de enlace de restablecimiento de contraseña, que se espera que les permiten elegir una contraseña que se recuerde.
  • El usuario se benefician de tener su contraseña se muestra en la pantalla?No, por la misma razón que el anterior,se debe elegir una nueva contraseña.
  • El usuario se benefician de tener una persona de apoyo a hablar de la contraseña para el usuario?No;de nuevo, si la persona de apoyo que considere la petición del usuario su contraseña como autenticado correctamente, es más para el usuario, el beneficio de recibir una nueva contraseña y la oportunidad de cambiarlo.Además, el soporte telefónico es más costoso que las automatizado de restablecimientos de contraseña, por lo que la compañía también no se benefician.

Parece que los únicos que pueden beneficiarse de la recuperables contraseñas son aquellos con mala intención o partidarios de los pobres de la Api que requieren de terceros contraseña de exchange (por favor no use dijo Api nunca!).Tal vez usted puede ganar un argumento por la verdad diciendo a sus clientes que la compañía gana, sin beneficios, y sólo pasivos por almacenar recuperable contraseñas.

La lectura entre líneas de estos tipos de solicitudes, verás que tus clientes probablemente no entiendan, en realidad ni siquiera importa en absoluto acerca de cómo las contraseñas de los administrados.Lo que realmente quiere es una sistema de autenticación que no es tan difícil para sus usuarios.Por eso, además de que les dije lo que en realidad no quieren recuperable contraseñas, se debe ofrecer los medios para realizar el proceso de autenticación menos doloroso, especialmente si usted no necesita el pesado de los niveles de seguridad de, por ejemplo, un banco:

  • Permitir que el usuario utilice su dirección de correo electrónico su nombre de usuario.He visto innumerables casos donde el usuario olvida su nombre de usuario, pero pocos se olvidan de su dirección de correo electrónico.
  • Oferta de OpenID y dejar que un tercero paga por los costos de usuario olvido.
  • La facilidad en las restricciones de contraseña.Estoy seguro de que todos hemos sido increíblemente molesto cuando un sitio web no permite su preferido contraseña porque de inútil requisitos como "usted no puede utilizar caracteres especiales" o "su contraseña es demasiado largo" o "la contraseña debe comenzar con una letra." También, si la facilidad de uso es una preocupación mayor que la longitud de la contraseña, usted podría aflojar incluso la no-estúpido requisitos permitiendo que las contraseñas cortas o que no requieren una mezcla de clases de personaje.Con aflojar las restricciones, los usuarios estarán más propensos a utilizar una contraseña que no se olvidará.
  • No se vencen las contraseñas.
  • Permiten al usuario la reutilización de una antigua contraseña.
  • Permitir al usuario elegir su propia contraseña de restablecimiento de la pregunta.

Pero si, por alguna razón (y por favor, díganos la razón) realmente, realmente, realmente necesita para ser capaz de tener un recuperable de la contraseña, usted puede proteger al usuario de que potencialmente pone en peligro sus otras cuentas en línea, dándoles un no-autenticación basada en contraseña del sistema.Debido a que las personas ya están familiarizadas con el nombre de usuario/contraseña del sistema y de que son un ejercicio de solución, esto sería un último recurso, pero hay sin duda un montón de alternativas creativas para contraseñas de:

  • Dejar que el usuario elija un pin numérico, de preferencia que no sea de 4 dígitos, y preferiblemente sólo si la fuerza bruta intentos están protegidos contra el.
  • El usuario elija una pregunta con una respuesta corta que sólo ellos saben la respuesta, nunca va a cambiar, van a recordar siempre, y no de la mente de otras personas se enteren.
  • Que el usuario introduzca un nombre de usuario y, a continuación, dibuje una forma fácil de recordar en forma con suficiente permutaciones para proteger en contra de adivinar (ver este ingenioso foto de cómo el G1 no esta para desbloquear el teléfono).
  • Para un sitio web, se podría generar de forma automática una difusa criatura basado en el nombre de usuario (como una especie de identicon) y pedir al usuario a dar a la criatura un nombre secreto.A continuación, pueden pedirá que introduzca la criatura el nombre secreto para iniciar la sesión.

De conformidad con el comentario que hice sobre la cuestión:
Un punto importante ha sido muy paliada por casi todo el mundo...Mi reacción inicial fue muy similar a la de @Michael Brooks, hasta que me di cuenta de que, como @stefanw, que la cuestión aquí es roto requisitos, pero estos son lo que son.
Pero entonces, se me ocurrió que podría incluso no ser el caso!El punto que falta aquí, es la tácita valor de los recursos de la aplicación.Simplemente hablando, para un valor bajo del sistema, el mecanismo de autenticación segura, con todo el proceso involucrado, sería una exageración, y el mal opción de seguridad.
Obviamente, para un banco, el de las "mejores prácticas" son una necesidad, y no hay manera éticamente violar CWE-257.Pero es fácil pensar que de la baja de valor de los sistemas en los que simplemente no vale la pena (pero de una simple contraseña es requerido).

Es importante recordar que, la verdadera experiencia en seguridad está en la búsqueda de adecuados equilibrios, NO en dogmáticamente chorros de las "Mejores Prácticas" que cualquiera puede leer en línea.

Como tal, me sugieren otra solución:
Dependiendo del valor del sistema, y SÓLO SI el sistema está adecuadamente bajo valor, sin "cara" del activo (la propia identidad, incluido), Y no son válidos los requisitos de negocio que hacen que el proceso adecuado imposible (o lo suficientemente difícil/caro), Y el cliente se haga consciente de todas las salvedades...
A continuación, podría ser apropiado simplemente permitir el cifrado reversible, sin aros para saltar a través.
Estoy parando sólo de decir que no se molestara con encriptación de todos, porque es muy sencillo/barato de implementar (incluso teniendo en cuenta passible de administración de claves), y proporciona protección (más que el costo de implementación).También, vale la pena mirar cómo proporcionar al usuario con la contraseña original, ya sea a través de correo electrónico, la visualización en pantalla, etc.
Desde aquí el supuesto es que el valor del robo de su contraseña (incluso en el agregado) es bastante baja, cualquiera de estas soluciones puede ser válida.


Ya hay un animado debate, en realidad, VARIOS debates en vivo, en los diferentes puestos y separar las cadenas de comentarios, voy a añadir algunas aclaraciones, y responder a algunos de los puntos muy buenos que se han planteado en otros lugares aquí.

Para empezar, creo que es claro para todo el mundo aquí que permiten al usuario la contraseña original para ser recuperada, es una Mala Práctica, y generalmente No es Una Buena Idea.Que no es objeto de controversia...
Además, he de destacar que en muchos de ellos, no la MAYORÍA, de las situaciones - es realmente malo, incluso sucio, desagradable Y feo.

Sin embargo, el quid de la cuestión es de alrededor de el principio, ¿Hay alguna situación en la que podría no ser necesario para impedirlo, y si es así, cómo hacerlo en el la mayoría de la correcta forma adecuada a la situación.

Ahora, como @Thomas, @sfussenegger y algunos otros mencionados, la única forma correcta de responder a esa pregunta, es para hacer un buen análisis de riesgo de cualquier (o hipotético) de la situación, para entender lo que está en juego, ¿cuánto es que vale la pena proteger, y qué otros factores atenuantes que están en juego para permitir que la protección.
No, NO es una palabra de moda, este es uno de los básicos, herramientas más importantes para un real live security professional.Las mejores prácticas son buenas hasta cierto punto (por lo general como directrices para los inexpertos y los hacks), después de que el punto reflexivo análisis de riesgo de la toma.

Ya sabes, es gracioso - siempre me he considerado a mí mismo uno de los fanáticos de seguridad, y de alguna manera estoy en el lado opuesto de los llamados "Expertos en Seguridad"...Bueno, la verdad es - porque soy un fanático, y un real de la vida real, el experto en seguridad - yo no creo en los chorros de la "Mejor Práctica" dogma (o CWEs) SIN que lo más importante análisis de riesgo.
"Cuidado con la seguridad de la fanática que es rápido de aplicar todo lo que en su cinturón de herramientas sin saber cuál es el problema real es la que se defienden contra.Más seguridad no equivale necesariamente a la buena de seguridad."
El análisis de riesgos, y la verdadera seguridad de los fanáticos, que apuntan a una forma más inteligente, el valor de riesgo basado en el equilibrio, basada en el riesgo potencial de pérdida, de amenazas, de complementarios mitigaciones, etc.Cualquier "Experto en Seguridad" que no puede apuntar a un profundo análisis de riesgos como base para sus recomendaciones, o soporte lógico de los equilibrios, pero en su lugar prefieren pico de dogma y CWEs aun sin entender cómo realizar un análisis de riesgo, son nada sino la Seguridad de Hacks, y su Experiencia no vale la pena el papel higiénico se imprimió en.

De hecho, así es cómo llegamos a la ridiculez que es la Seguridad del Aeropuerto.

Pero antes de hablar de los adecuados equilibrios para hacer en ESTA SITUACIÓN, vamos a echar un vistazo a los riesgos aparentes (aparente, porque no tenemos toda la información de fondo en esta situación, todos estamos bajo la hipótesis de que - dado que la pregunta es ¿qué hipotética situación podría no ser...)
Vamos a suponer que un BAJO VALOR del sistema, sin embargo, no es tan trivial que es de acceso público - el dueño del sistema quiere evitar casual de suplantación, sin embargo, "alta" la seguridad no es tan primordial como la facilidad de uso.(Sí, es un legítimo de compromiso de ACEPTAR el riesgo de que cualquier competente script-kiddie puede hackear el sitio...Espera, no es conveniente en boga ahora...?)
Por ejemplo, digamos que yo soy la organización de un simple sitio para una reunión familiar grande, lo que permite a todos a reflexionar sobre a dónde queremos ir en nuestro viaje de campamento de este año.Estoy menos preocupado acerca de algunos anónimo de hackers, o incluso Primo Fred apretar en repetidas sugerencias para ir de vuelta al Lago Wantanamanabikiliki, como estoy por la Tía Erma no ser capaz de iniciar sesión cuando ella necesita.Ahora, la Tía de Erma, de ser un físico nuclear, no es muy bueno en recordar las contraseñas, o incluso con el uso de las computadoras en todas...Así que me quiero quitar todos los fricción posible para ella.De nuevo, NO estoy preocupado por los hacks, yo no quiero errores tontos de inicio de sesión incorrecto, quiero saber que ha de venir, y lo que ellos quieren.

De todos modos.
Entonces, ¿cuáles son nuestros principales riesgos aquí, si nos simétricamente cifrar las contraseñas, en lugar de utilizar un hash unidireccional?

  • La suplantación de usuarios?No, ya he aceptado que el riesgo, no es interesante.
  • Mal administrador?Bueno, tal vez...Pero de nuevo, no me importa si alguien puede suplantar la identidad de otro usuario, INTERNO o no...y de todos modos un malicioso admin se va a obtener su contraseña no importa lo que - si su administrador ha ido mal, sus más de juego de todos modos.
  • Otra cuestión que se ha planteado, es la identidad es compartido entre varios sistemas.Ah!Esta es una muy interesante riesgo, que requiere una mirada más cercana.
    Permítanme empezar por afirmar que no es el real identidad eso es compartida, en lugar de la prueba, o el de las credenciales de autenticación.Bien, ya que una contraseña compartida efectivamente me permiten la entrada a otro sistema (por ejemplo, en mi cuenta de banco, o gmail), este es, efectivamente, la misma identidad, por lo que es sólo semántica...Excepto que no.La identidad es administrado por separado en cada sistema, en este escenario (aunque podría ser la tercera parte de sistemas de identificación, tales como OAuth - sin embargo, su separación de la identidad en este sistema - más sobre esto más adelante).
    Como tal, el punto esencial de riesgo aquí, es que el usuario voluntariamente su entrada (la misma contraseña en varios sistemas diferentes - y ahora, yo (el admin) o cualquier otro hacker de mi sitio web tendrá acceso a la Tía Erma contraseñas para el misil nuclear sitio.

Hmmm.

¿Hay algo que aquí parece fuera para usted?

Lo que debería.

Vamos a empezar con el hecho de que la protección de los misiles nucleares del sistema es no es mi responsabilidad, Estoy construcción de un frakkin excursión familiar de sitio (de MI familia).Entonces de quién ES la responsabilidad?Umm...¿Qué hay de los misiles nucleares del sistema?Duh.
En segundo lugar, Si me querían robar a alguien de la contraseña (alguien que se sabe que en repetidas ocasiones el uso de la misma contraseña entre sitios seguros, y no tan seguros) - ¿por qué me molesto hackear tu sitio?O luchando con su cifrado simétrico?Goshdarnitall, solo puedo poner para arriba mi propia página web sencilla, tiene a los usuarios registrarse para recibir NOTICIAS IMPORTANTES acerca de lo que quieran...Puffo Presto, me "robó" sus contraseñas.

Sí, la educación de los usuarios siempre vuelve para vengarse de nosotros en el hienie, ¿no?
Y no hay nada que usted puede hacer acerca de eso...Incluso si usted fuera a hash de las contraseñas en su sitio, y hacer todo lo demás de la TSA puede pensar, agregó la protección de su contraseña NI UN ÁPICE, si van a seguir promiscuamente pegue sus contraseñas en todos los sitios que chocar.No te molestes en intentarlo.

Dicho de otra manera, Usted no es dueño de sus contraseñas, así que deja de intentar actuar como lo hace.

Así, mis Queridos Expertos en Seguridad, como una vieja dama utilizada para pedir Wendy, "¿DÓNDE está el riesgo?"

Otro par de puntos, en respuesta a algunas cuestiones planteadas:

  • CWE no es una ley o reglamento, o incluso un estándar.Se trata de una colección de deficiencias comunes, es decir,el inverso de "Mejores Prácticas".
  • La cuestión de la identidad compartida es un problema real, pero mal entendida (o tergiversado) por los detractores aquí.Es una cuestión de compartir la identidad en y de sí mismo(!), NO se trata de cracking de contraseñas en el bajo valor de los sistemas.Si va a compartir una contraseña de entre un valor bajo y un alto valor del sistema, el problema ya está ahí!
  • Por cierto, en el punto anterior, sería en realidad el punto de En CONTRA de el uso de OAuth y similares para ambas bajo sistemas de valor, y el alto valor de los sistemas bancarios.
  • Sé que fue solo un ejemplo, pero (lamentablemente) el FBI sistemas no son realmente el más seguro de todo.No es como tu gato blog servidores, pero ni superar algunas de las más seguras de los bancos.
  • Dividir el conocimiento, o de doble control, de las claves de cifrado NO ocurren sólo en el ejército, en el hecho de PCI-DSS ahora requiere esto básicamente todos los comerciantes, por lo que no es realmente tan lejos de ahí (SI el valor de lo justifica).
  • Para todos aquellos que se quejan de que preguntas como estas son las que hacen que el desarrollador de la profesión se ve tan mal:es respuestas como esas, que hacen de la seguridad profesión aspecto aún peor.De nuevo, enfocada en los negocios, el análisis de riesgo es lo que se requiere, de lo contrario usted se hace inútil.Además de ser malo.
  • Supongo que esta es la razón por la que no es una buena idea tomar sólo un regular desarrollador y una caída de más responsabilidades de seguridad en él, sin formación, a pensar de manera diferente, y para buscar el correcto desventajas.Sin ánimo de ofender, para aquellos de ustedes aquí, yo soy todo para él -, sino más bien de la formación está en orden.

¡Uf.Lo que es un post largo...
Pero para responder a tu pregunta original, @Shane:

  • Explicar al cliente la manera correcta de hacer las cosas.
  • Si él aún insiste en explicar algunos más, insisten en argumentar.Lanzar una rabieta, si es necesario.
  • Explicar el RIESGO del NEGOCIO para él.Los detalles son buenos, las cifras son mejores, una demostración en vivo es lo mejor.
  • SI AÚN así insiste, Y presenta válidas razones de negocios - es el tiempo para usted para hacer un juicio de llamada:
    Es este sitio bajo-a-no-valor?Es realmente un negocio válido caso?Es lo suficientemente buena para ti?No hay otros riesgos que se pueden considerar, que pesarían más que válida razones de negocios?(Y, por supuesto, es que el cliente NO es un sitio malicioso, pero eso es duh).
    Si es así, sólo tiene que ir a la derecha por delante.No vale la pena el esfuerzo, la fricción, y la pérdida de uso (en este caso) para poner el proceso necesario en el lugar.Cualquier otra decisión (de nuevo, en esta situación), es una mala solución de compromiso.

Así, la línea de fondo, y una respuesta efectiva a cifrar con un simple algoritmo simétrico, proteger la clave de cifrado con fuerte Acl y preferiblemente DPAPI o similares, documento y tiene el cliente (alguien categoría suficiente para tomar esa decisión) firmar en él.

¿Qué hay de un centro de rehabilitación?

Guarde las contraseñas con un cifrado fuerte, y no permitir que se restablece.

En lugar de restablecer las contraseñas, permitir el envío de una contraseña de una sola vez (que tiene que ser cambiado tan pronto como se produzca el primer inicio de sesión). Deje que el usuario luego cambiar a cualquier contraseña que quieren (la anterior, si así lo desean).

Puede "vender" como un mecanismo seguro para restablecer las contraseñas.

La única manera de que un usuario pueda recuperar su contraseña original, es cifrarlo con la clave pública propia del usuario. Sólo entonces ese usuario puede descifrar la contraseña.

Así que los pasos serían los siguientes:

  1. Usuario se registre en su sitio (a través de SSL, por supuesto) sin embargo establecer una contraseña. Entrar en forma automática o proporcionar una contraseña temporal.
  2. Usted ofrece para almacenar su clave pública PGP para su futura recuperación de contraseña.
  3. Se cargar su clave pública PGP.
  4. Les preguntas a establecer una nueva contraseña.
  5. Se someten su contraseña.
  6. hash de la contraseña con el mejor algoritmo de hash de contraseñas disponibles (por ejemplo bcrypt). Utilice esta opción cuando la validación de la siguiente inicio de sesión.
  7. encriptar la contraseña con la clave pública, y la tienda que por separado.

Si el usuario entonces pedir su contraseña, responde con la contraseña cifrada (no hash). Si el usuario no desea ser capaz de recuperar su contraseña en el futuro (que sólo sería capaz de restablecer a un servicio generada por uno), los pasos 3 y 7 se pueden saltar.

Creo que la verdadera pregunta que debe hacerse es: '¿Cómo puedo ser mejor en convencer a la gente I'

Tengo el mismo problema. Y en la misma forma que siempre pienso que alguien hackear mi sistema no es una cuestión de "si", sino de "cuándo".

Así, cuando tenga que hacer un sitio web que necesita para almacenar una información confidencial recuperable, como una tarjeta de crédito o una contraseña, lo que hago es:

  • Cifrar con: openssl_encrypt ($ cadena de datos, método de la cuerda $, string $ contraseña)
  • Datos de arg :
    • la información sensible (por ejemplo, la contraseña de usuario)
    • serializar si es necesario, por ejemplo, si la información es una matriz de datos como información sensible múltiple
  • contraseña arg : utilizar una información que sólo el usuario conoce como:
    • la placa de licencia de usuario
    • número de seguridad social
    • el número de teléfono del usuario
    • el nombre de la madre de usuario
    • una cadena aleatoria sended por correo electrónico y / o por SMS en tiempo de registro
  • Método de arg :
    • elegir un método de cifrado, como "AES-256-CBC"
  • nunca almacenar la información utilizada en el argumento de la "contraseña" en la base de datos (o cualquier lugar en el sistema)

Cuando sea necesario retrive estos datos sólo tiene que utilizar el "openssl_decrypt) (" función y preguntar al usuario por la respuesta. Ej .: "Para recibir su contraseña responder a la pregunta: ¿Cuál es su número de teléfono móvil"

PS 1 : No usar como contraseña un dato almacenado en la base de datos. Si necesita almacenar el número de teléfono móvil del usuario, a continuación, nunca utilice esta información para codificar los datos. Siempre use una información que sólo conocen el usuario o que es difícil saber a alguien que no es pariente.

PS 2 : para obtener información de tarjetas de crédito, así como "una compra de clic", lo que hago es usar la contraseña de inicio de sesión. Esta contraseña es ordenado en la base de datos (SHA1, MD5, etc.), pero en el momento de inicio de sesión que almacena la contraseña en texto plano en sesión o en una cookie segura no persistente (es decir, en la memoria). Esta contraseña al descubierto no quedarse en la base de datos, de hecho, que siempre permanecen en la memoria, destruido al final de la sección. Cuando el usuario haga clic en "un clic de compra" botón el sistema utiliza esta contraseña. Si el usuario se registra en un servicio como Facebook, Twitter, etc, entonces me incitan la contraseña de nuevo en la compra de tiempo (bueno, no es un totalmente "al hacer clic") o luego usar algunos datos del servicio que el usuario utiliza para iniciar sesión (como el facebook id).

proteger las credenciales no es una operación binaria: seguro / no seguro. La seguridad es todo acerca de la evaluación de riesgos y se mide en un continuo. fanáticos de seguridad ni pensar de esta manera, pero la cruda realidad es que nada es perfectamente seguro. contraseñas hash con los estrictos requisitos de contraseña, muestras de ADN y escaneos de retina son más seguros, pero a un coste de desarrollo y la experiencia del usuario. contraseñas en texto plano son mucho menos seguros, pero son más baratos de poner en práctica (pero debe ser evitado). Al final del día, todo se reduce a un análisis de costo / beneficio de una violación. Implementar la seguridad basada en el valor de los datos que están siendo asegurado y su valor temporal.

¿Cuál es el costo de la contraseña de alguien para salir en la naturaleza? ¿Cuál es el costo de la representación en el sistema dado? Para las computadoras del FBI, el costo podría ser enorme. Para una sola vez el sitio web de cinco páginas de Bob, el costo podría ser insignificante. Un profesional ofrece opciones a sus clientes y, cuando se trata de seguridad, expone las ventajas y los riesgos de cualquier aplicación. Esto es doblemente así que si el cliente solicita algo que podría poner en riesgo a causa de no cumplir con las normas de la industria. Si un cliente solicita específicamente el cifrado de dos vías, me aseguraría a documentar sus objeciones, pero eso no debe impedir que la implementación de la mejor manera que sabe. Al final del día, es el dinero del cliente. Sí, usted debe empujar para el uso de un solo sentido hashes pero decir que es absolutamente la única opción y cualquier otra cosa no es ético no tiene ningún sentido.

Si va a almacenar contraseñas con cifrado de dos vías, la seguridad todo se reduce a la gestión de claves. Windows proporciona mecanismos para restringir el acceso a las claves privadas de los certificados a cuentas administrativas y con las contraseñas. Si usted es anfitrión de otra plataforma de, lo que se necesita para ver qué opciones tiene disponibles en ellos. Como otros han sugerido, puede utilizar el cifrado asimétrico.

No hay ninguna ley (ni la Ley de Protección de Datos en el Reino Unido) del que soy consciente de que establece específicamente que las contraseñas deben ser almacenados mediante unidireccionales hash. El único requisito en cualquiera de estas leyes es simplemente que razonable medidas se toman para la seguridad. Si el acceso a la base de datos está restringido, incluso las contraseñas en texto plano pueden calificar legalmente bajo una restricción de este tipo.

Sin embargo, esto no sacar a la luz un aspecto más: la precedencia legal. Si la precedencia legal sugiere que debe utilizar una sola dirección hash dado a la industria en la que el sistema se está construyendo, entonces eso es totalmente diferente. Esa es la munición que se utiliza para convencer a su cliente. Aparte de eso, la mejor sugerencia para proporcionar una evaluación del riesgo razonable, documentar sus objeciones e implementar el sistema de la manera más segura posible dado los requerimientos del cliente.

Marca la respuesta a la pregunta de seguridad del usuario una parte de la clave de cifrado, y no almacenar la respuesta la pregunta de seguridad como texto sin formato (hash que en su lugar)

implemento sistemas de autenticación de factor múltiple para la vida, así que para mí es natural pensar que usted puede restaurar o reconstruir la contraseña, mientras que temporalmente utilizando un factor menos para autenticar al usuario por sólo el flujo de trabajo de reposición / recreación. En particular, el uso de OTP (one-time password) como algunos de los factores adicionales, mitiga gran parte del riesgo si la ventana de tiempo es corto para el flujo de trabajo sugerido. Hemos implementado programas generadores de OTP para teléfonos inteligentes (que la mayoría de los usuarios ya llevan con ellos mismos todo el día) con gran éxito. Antes se queja de un enchufe comercial aparecen, lo que digo es que podemos reducir los riesgos inherentes de mantener las contraseñas fácilmente recuperable o puesta a cero cuando no son el único factor que se utiliza para autenticar un usuario. Estoy de acuerdo en que para la reutilización de contraseñas entre los sitios escenarios de la situación todavía no es bastante, ya que el usuario va a insistir para tener la contraseña original, ya que él / ella quiere abrir los otros sitios también, pero se puede tratar de entregar la contraseña reconstruida en la forma más segura posible (htpps y apariencia discreta en el html).

Lo sentimos, pero siempre y cuando usted tiene alguna forma de descifrar la contraseña, no hay manera de que va a ser seguro. Luchar contra ella con amargura, y si pierde, CYA.

Sólo encontré este interesante debate y se calienta. Lo que más me sorprendió era sin embargo, la poca atención que se presta a la siguiente pregunta básica:

  • Q1. ¿Cuáles son las razones reales del usuario insiste en tener acceso a texto sin formato contraseña almacenada? ¿Por qué es de tanto valor?

La información que los usuarios son personas mayores o jóvenes en realidad no responder a esa pregunta. Pero, ¿cómo una decisión de negocios puede hacerse sin la preocupación de adecuada comprensión de los clientes?

Ahora por qué es importante? Porque si la causa real de la petición de los clientes es el sistema que es dolorosamente difícil de usar, entonces tal vez abordar la causa exacta resolvería el problema real?

Como no tengo esta información y no puedo hablar de esos clientes, sólo puedo adivinar:. Se trata de la facilidad de uso, véase más arriba

Otra pregunta que he visto preguntó:

  • Q2. Si el usuario no recuerda la contraseña en primer lugar, ¿por qué importa la antigua contraseña?

Y aquí es posible respuesta. Si has gato llamado "miaumiau" y se utiliza su nombre como contraseña, pero se olvidó que hizo, ¿preferiría que se le recuerde lo que era o bien se envía algo así como "# * zy RW (ew"?

Otra posible razón es que el usuario considera que es un trabajo duro para llegar a una nueva contraseña! Así que tener la contraseña anterior enviado de vuelta da la ilusión de salvarla de que el trabajo doloroso de nuevo.

Estoy tratando de entender la razón. Pero cualquiera que sea la razón es, que es la razón no es la causa de que tiene que ser abordado.

Como usuario, quiero las cosas simples! Yo no quiero trabajar duro!

Si intento acceder a un sitio de noticias para leer periódicos, quiero escribir 1111 como contraseña y ser a través !!!

Sé que es insegura, pero ¿qué me importa acerca de alguien que consigue el acceso a mi "cuenta"? Sí, puede leer las noticias también!

¿La tienda de sitio de mi información "privada"? Las noticias que leer hoy? Entonces es un problema del sitio, no la mía! ¿El sitio muestra la información privada de usuario autenticado? Entonces no mostrarlo en primer lugar!

Esto es sólo para demostrar la actitud del usuario para el problema.

Para resumir, no me siento que es un problema de cómo "segura" almacenar contraseñas de texto sin formato (que sabemos que es imposible), sino más bien la forma de abordar los clientes preocupación real.

Manipulación perdidos / contraseñas olvidadas:

Nadie debería nunca será capaz de recuperar contraseñas.

Si los usuarios se olvidaron de sus contraseñas, al menos deben saber sus nombres de usuario o direcciones de correo electrónico. A petición, generar un GUID en la tabla de usuarios y se envía un correo electrónico con un enlace que contiene el GUID como un parámetro a la dirección de correo electrónico del usuario.

La página detrás de la relación verifica que realmente existe el GUID de parámetros (probablemente con algo de lógica de tiempo de espera), y solicita al usuario una nueva contraseña.

Si es necesario tener los usuarios telefónicos de ayuda, añadir algunos papeles a su modelo de subvenciones y permitir que el papel línea telefónica para acceder temporalmente como usuario identificado. Registrar todas las dichas entradas de línea directa. Por ejemplo, Bugzilla ofrece una característica tan suplantación a los administradores.

¿Qué hay de correo electrónico a la contraseña en texto plano en el registro, antes de conseguir que encripta y se pierde? He visto una gran cantidad de sitios web de hacerlo, y conseguir que la contraseña de correo electrónico del usuario es más seguro que dejarlo todo en su servidor / comp.

Si usted no puede simplemente rechazar la necesidad de almacenar contraseñas recuperables, ¿qué tal esto como su argumento en contra.

Podemos correctamente las contraseñas de hash y construir un mecanismo de reposición para los usuarios, o podemos eliminar toda la información personal identificable del sistema. Se puede utilizar una dirección de correo electrónico para configurar las preferencias del usuario, pero eso es todo. Usar una cookie para extraer automáticamente las preferencias en futuras visitas y tirar los datos de distancia después de un período razonable.

La única opción que se suele pasar por alto la política de contraseñas es si una contraseña es en realidad ni siquiera es necesario. Si la única cosa que su política de contraseñas hace es causa llamadas de servicio al cliente, tal vez usted puede deshacerse de él.

¿Los usuarios realmente necesidad de recuperar (por ejemplo,se dijo) lo que la contraseña se olvidaron, o no hacer, lo que necesita para ser capaz de obtener en el sistema?Si lo que realmente quieren es una contraseña de inicio de sesión, ¿por qué no tener una rutina que simplemente cambia la contraseña antigua (lo que sea) a una nueva contraseña que la persona de apoyo puede dar a la persona que perdió su contraseña?

He trabajado con sistemas que hacer exactamente esto.La persona de apoyo no tiene manera de saber cuál es la contraseña actual, pero puede restablecerlo a un nuevo valor.Por supuesto, todos restablece debe anotarse en algún lugar y una buena práctica sería la de generar un correo electrónico al usuario diciéndole que la contraseña se ha restablecido.

Otra posibilidad es tener dos simultáneo de contraseñas que permite el acceso a una cuenta.Uno es el "normal", la contraseña que el usuario maneja y el otro es como un esqueleto/llave maestra que es conocido por el personal de apoyo sólo y es el mismo para todos los usuarios.De esa manera, cuando un usuario tiene un problema de la persona de apoyo puede acceder a la cuenta con la clave maestra y ayudar al usuario a cambiar su contraseña para lo que sea.Huelga decir que todos los inicios de sesión con la clave maestra debe ser registrado por el sistema.Como una medida adicional, cada vez que se utiliza la clave maestra se pudo validar a las personas de apoyo credenciales.

-EDITAR - En respuesta a los comentarios acerca de no tener una llave maestra:Estoy de acuerdo de que es malo sólo porque creo que es malo a permitir que nadie más que el usuario tenga acceso a la cuenta del usuario.Si usted mira la pregunta, toda la premisa es que el cliente se encomendó a una altamente comprometida entorno de seguridad.

Una clave maestra no necesita ser tan malo como podría parecer a primera vista.Yo solía trabajar en una planta de la defensa donde se percibe la necesidad de que la computadora central del operador para tener "acceso especial" en ciertas ocasiones.Simplemente ponen la contraseña especial en un sobre cerrado y con cinta adhesiva para el operador de la mesa de trabajo.El uso de la contraseña (que el operador no lo sé) que tuvo para abrir el sobre.En cada cambio de turno de uno de los puestos de trabajo de supervisor de turno fue para ver si el sobre había sido abierto y si por lo que de inmediato le cambie la contraseña (por otro departamento) y la nueva contraseña se puso en un sobre nuevo y el proceso se inició de nuevo.El operador tendría que preguntar a los encuestados por qué había abierto y que el incidente sería documentado para el registro.

Si bien este no es un procedimiento que iba a diseño, lo hizo de trabajo y proporciona excelentes para la rendición de cuentas.Todo fue registrado y revisado, además de todos los operadores del departamento de defensa secreto de las autorizaciones y nunca tuvimos ningún tipo de abusos.

Porque de la revisión y de supervisión, todos los operadores sabían que si se abusó del privilegio de la apertura de los sobres que fueron objeto de despido inmediato y posible enjuiciamiento penal.

Así que supongo que la respuesta real es que si uno quiere hacer las cosas bien se contrata a la gente que puede confiar, hacer verificaciones de antecedentes y el ejercicio adecuado de supervisión de la gestión y la rendición de cuentas.

Pero entonces de nuevo, si este pobre hombre del cliente tuvo la buena gestión que no han pedido para una seguridad tal comprimised solución en primer lugar, ahora que?

Por lo poco que entiendo acerca de este tema, creo que si usted está construyendo un sitio web con un inicio de sesión / contraseña, entonces usted no debe ver ni la contraseña en texto plano en el servidor en absoluto. La contraseña debe hash, y probablemente salado, incluso antes de que deja al cliente.

Si usted nunca ve la contraseña en texto plano, entonces la cuestión de la recuperación no se plantea.

Además, tengo entendido (de la web) que (supuestamente) algunos algoritmos como MD5 ya no son considerados seguros. No tengo manera de juzgar que a mí mismo, pero es algo a tener en cuenta.

abrir una base de datos en un servidor independiente y dar una conexión remota cifrada a cada servidor web que requiere esta función.
que no tiene que ser una base de datos relacional, que puede ser un sistema de archivos con acceso FTP, usando las carpetas y los archivos en lugar de tablas y filas.
dar a los servidores web permisos de sólo escritura si es posible.

Almacenar el cifrado no recuperable de la contraseña en el DB del sitio (lo llamaremos "Pass-a") como la gente normal :)
en cada nuevo usuario (o cambio de contraseña) guardar una copia simple de la contraseña en la base de datos remota. utilizar el ID del servidor, el ID del usuario y "pass-A" tal como una clave compuesta para esta contraseña. incluso se puede utilizar un cifrado bidireccional a través de la contraseña a dormir mejor por la noche.

Ahora bien, para alguien para conseguir tanto la contraseña y su contexto (identificador de sitio + id de usuario + "Pass-a"), tiene que:

  1. piratear DB del sitio web para obtener un (id "Pass-a", el usuario) par o pares.
  2. obtener el ID de la página web de algún archivo de configuración
  3. encontrar y cortar en las contraseñas remotas DB.

se puede controlar la accesibilidad del servicio de recuperación de contraseña (exponerlo sólo como un servicio web seguro, permitir que sólo cierta cantidad de contraseñas recuperaciones por día, lo hace de forma manual, etc.), e incluso cobrar extra por este "especial de seguridad arreglo".
El servidor de base de datos de contraseñas de recuperación es bastante oculto, ya que no sirve a muchas funciones y puede ser mejor asegurada (se puede adaptar permisos, procesos y servicios totalmente).

Con todo, se hace el trabajo más difícil para el usuario remoto. la posibilidad de un fallo de seguridad en cualquier servidor individual sigue siendo el mismo, pero los datos significativos (un partido de la cuenta y la contraseña) será difícil de montar.

Otra opción es posible que no se haya considerado permitiendo acciones vía e-mail. Es un poco engorroso, pero implementado esto por un cliente que necesitaba usuarios "fuera" de su sistema para ver (sólo lectura) ciertas partes del sistema. Por ejemplo:

  1. Una vez que se ha registrado un usuario, tienen acceso completo (como un habitual sitio web). El registro debe incluir un correo electrónico.
  2. Si se necesitan datos o una acción y el usuario no lo hace recordar su contraseña, que todavía puede realizar la acción por clic en un "me correo electrónico para obtener el permiso " botón especial, justo al lado de la normal " Enviar " botón.
  3. La solicitud se envía entonces a cabo al correo electrónico con un enlace que pregunta si quieren que la acción a realizar. Esto es similar a un enlace de correo electrónico de restablecimiento de contraseña, pero en lugar de restablecer la contraseña se realiza la acción de una sola vez .
  4. Luego, el usuario hace clic en "Sí", y confirma que los datos se deben mostrar, o la acción se debe realizar, los datos revelados, etc.

Como se ha mencionado en los comentarios, esto no va a funcionar si se compromete el correo electrónico, pero lo hace comentario de dirección @joachim está sobre el no querer restablecer la contraseña. Con el tiempo, tendrían que utilizar el restablecimiento de la contraseña, pero no podían hacer que en un momento más conveniente, o con ayuda de un administrador o un amigo, según sea necesario.

Una vuelta de tuerca a esta solución sería enviar la petición de acción a un administrador de tercero de confianza. Esto funcionaría mejor de los casos a los usuarios con problemas mentales, ancianos, jóvenes o de otra manera muy confusos. Por supuesto, esto requiere un administrador confiable para estas personas para apoyar sus acciones.

Sal-y-hash de la contraseña del usuario de forma normal. Al iniciar la sesión del usuario en, permitir que tanto la contraseña del usuario (tras el salado / hash), sino también permitir que lo que entró literalmente al usuario para que coincida también.

Esto permite que el usuario introduzca su contraseña secreta, sino que también les permite entrar en la versión / hash con sal de su contraseña, que es lo que alguien podría leer de la base de datos.

Básicamente, hacer la contraseña / hash con sal sea también un "texto sin formato" contraseña.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top