Encontré un sitio que está tomando cartas de contraseña de sus usuarios, no toda la contraseña.
¿Esto es seguro? ¿O han guardado la contraseña como hash con sal (MD5)?
Esto es realmente terrible. La única forma en que esto puede funcionar es si cifran su contraseña en lugar de hacerla. O incluso peor, simplemente almacenarlo como texto plano. Nunca me registraría para ese servicio nunca. <update>
Como @lynks dijo, lo anterior probablemente no sea cierto cuando se usa HMS. Sin embargo, si solo se solicita un nombre de usuario antes de este paso. Y la contraseña es una contraseña fija del usuario, el resto de mi respuesta aún debería estar vigente. </update>
También el hecho de que solo tengas que adivinar 4 caracteres (en lugar de una contraseña completa) es simplemente estúpido. También esos bloques pueden indicar la longitud de la contraseña, que también es realmente una mierda (si ese es el caso).
No solo eso, sino que también te muestran en qué lugar se deben agregar los caracteres, lo que es aún más estúpido, porque ahora puedes hacer una mejor adivinación de los caracteres que se usan en función de la distribución de los caracteres en palabras / oraciones.
En general, todo lo que tienes es mega basura y no se debe utilizar ... nunca. Iría tan lejos como para decir que la persona que pensó que esto sería una buena idea debería dejar de hacer cosas como esta y comenzar a buscar otro trabajo.
De hecho, es tan malo que no me sorprendería si los caracteres reales que están ocultos por esos bloques azules simplemente estén ocultos y almacenados en la fuente de la página ;-)
Como nota adicional basada en el último párrafo de su pregunta:
¿o han guardado la contraseña en hash salado (MD5)?
MD5 nunca debe usarse para las contraseñas de hash. Es demasiado rápido para ese propósito.
Como han señalado otros usuarios que utilizan un mecanismo de "tipo de carácter xey de su contraseña", se requiere que las contraseñas se almacenen en el servidor ya sea en forma clara o en un formato cifrado reversiblemente (existe la otra opción de hashing cada par de personajes, pero eso sería una idea estúpida).
El hecho de que este mecanismo mejore o disminuya la seguridad general de la solución depende de la prevalencia y la gravedad de los ataques en los que cada enfoque funciona bien y también de los controles de seguridad establecidos en el almacenamiento del lado del servidor de las contraseñas.
Es probable que haya más instancias de software de registro de teclas (esto es muy común en troyanos bancarios, por ejemplo) que instancias de hackeo de bases de datos de contraseñas, pero esto deja de lado el concepto de impacto donde una violación de la base de datos de contraseñas es mucho más serio que una instancia individual de registro de teclas en un cliente.
Eso lleva a los controles. Varias de las respuestas y los comentarios de los asistentes han señalado el HSM . Donde este tipo de escenario se usa en un banco del Reino Unido, creo que es extremadamente probable que un HSM esté en uso y, con suerte, esté bien administrado.
Es desafortunado que el hecho de la seguridad "solo almacene las contraseñas en formatos de hash, el cifrado reversible sea malo" a menudo se pierde el complemento "y se pueden almacenar en formato reversible, pero la administración de claves es un problema".
Es posible hacer esto de manera segura y, de hecho, la red de cajeros automáticos en el Reino Unido solía usar (y aún supongo) el cifrado simétrico para todas sus transferencias de datos, pero la ronda de administración de claves fue extensa (al menos en los casos). Miré) e involucré cosas como el doble control de las teclas.
así que la respuesta a la pregunta es, como muchas cosas en seguridad, de lo que depende. Puede ser seguro y, de hecho, este enfoque es mejor en algunos escenarios que incluyen hash y piden la contraseña completa, pero depende de una serie de factores que no pueden evaluarse sin más información.
First Direct: utiliza esta forma de solicitar una contraseña. En algunos otros casos, Halifax, Lloyds, después de presentar la solicitud de contraseña, se solicitan cartas a través del menú desplegable. Además de ese inicio de sesión, se han agregado 5 dígitos aleatorios.
Verificado por Visa - enlace - también utiliza esta forma de confirmación al pagar con tarjeta en línea.
Creo que esto es para evitar que los registradores de claves obtengan la contraseña completa . Creo que los bancos y Visa tienen sus propias políticas muy estrictas que hacen que todo el sistema sea razonablemente seguro.
(al final del día, somos nosotros los que pagamos por todas sus violaciones de seguridad)
El comentario de @ Hyp es correcto (actualicé mi respuesta). Lloyds y Halifax después de la contraseña tienen esto:
¿Esto es seguro?
No, esto no es seguro. Esto es mucho más fácil de forzar brutalmente que la contraseña completa. Sin embargo, tenga en cuenta que, por lo general, hay bloqueos de IP en forzados brutos, por lo que generalmente no es la mejor manera de acceder a la cuenta de alguien.
Esto está en su lugar para evitar el registro de teclas, que en realidad es una amenaza mucho mayor que la fuerza bruta . Es una situación similar a esta:
Inclusolaaplicaciónbrutadeforzarunsubconjuntode4caracteresdeunacontraseñaesdifícil(supongoquebarajanlascasillasalactualizar,estoagregaalgomásdecomplejidad).Todavíahayalmenos26^4contraseñasquesepuedenprobar(yconunCAPTCHAytodo,podríaserdifícil).Porsupuesto,dadoquelalongitudtotalestáexpuesta,losataquesdediccionariopuedenllegaraserviables.Perotodavíahaymuchasfrasesqueintentar,ysuponemosquelaIPnosebloqueaenesemomento.Otroataquequesepodríarealizarenestesistemaesregistrarelfragmentodecontraseñade4teclasqueseingresayluegoactualizarlapáginahastaqueserecibaelmismoordendecuadro.Osimplementepuedenhacercoincidirelfragmentodecontraseñaconundiccionario,obtendríaunconjuntomuypequeñodepalabras.
Elproblemamásserioaquíesqueestánalmacenandocontraseñasentextoplano.Noseríademasiadodifícilparaunadministradordelsistemaoalguienconaccesoalabasededatosdesololectura(deberíahabersuficientegente)extraerlacontraseñayusarlaparahaceralgoquesepareceaunatransferencialegítimaenlínea.Unsistemaseguroeliminaríalascontraseñas(SHA-256oSHA-512esbueno1,nouseMD5)conunasal,yolvidarárápidamenteloscaracteresdelacolumna.Debencompararloshashesalrecibirunacontraseña.Porsupuesto,enestecasonopuedeshacergimnasiaconelformulariodecontraseña.
Haymanerasmuchomássensatasdepreveniraloskeyloggers.Muchosbancosimplementanun"teclado virtual", que tiene teclas distribuidas al azar en él. Eventualmente, esto también puede ser "registrado" (se puede hacer algo parecido a un screencap), sin embargo, los keyloggers de texto son bastante indefensos aquí ya que el usuario no escribe. (Por lo general, se proporciona la opción para escribir, pero el usuario puede usar el teclado virtual si desea ingresar su contraseña en un cibercafé u otra computadora pública). Como se mencionó en los comentarios, esto no es una buena inversión de tiempo por muchas razones, en su lugar, use autenticación de 2 factores:
La autenticación de 2 factores es probablemente una de las formas más seguras de superar a los keyloggers. Esos llaveros basados en el tiempo o el "código de confirmación que se te ha enviado por SMS" serían bastante efectivos ya que la contraseña casi no tiene valor (aunque es útil para la recuperación de la cuenta) sin el dispositivo asociado.
1. Una mejor idea sería utilizar un HSM con RSA y cifrar las contraseñas. O utilice bcrypt o un algoritmo lento similar.
Existe una forma de hacer / cifrar contraseñas que se denomina cifrado de ocultación. Eso es cuando tienes un mensaje dentro de un mensaje. Pero esto no es. Creo que está destinado a ser seguro en términos de privacidad, por lo que no hay nadie mirando detrás de ti o no hay ningún robot que intente forzar la contraseña de forma bruta ... porque los lugares de las letras de la contraseña siempre cambiarían ... hmm. . Necesita una imagen más completa de lo fácil que es la fuerza bruta de esa contraseña.
¿El desafío, las colocaciones de letras, cambian a menudo, qué tan aleatorio es el desafío?
¿El mecanismo de contraseña requiere una contraseña segura? con letras alfanuméricas / no alfanuméricas, lo suficientemente largas y no contienen una palabra del diccionario?
¿El mecanismo de contraseña permite tiempos máximos de intentos?
Esa es una buena forma de contraseña para estar más seguro en mi opinión, ya que si es lo suficientemente aleatorio con sus desafíos y permite tiempos mínimos de intentos por un tiempo determinado, entonces debería considerarse como más seguro en comparación con la contraseña normal. campo que vemos hoy en todos los demás sitios!
¿Esto es seguro?
Probablemente no. O mejor dicho, lo más probable es que no. Parece que algunas personas han ido a la ciudad para hacerlo muy seguro (tm) esta vez. Y como sucede a menudo cuando ejecuta su propio shoppe solo: falla.
¿O han guardado la contraseña en hash salado (MD5)?
Bueno, no puedo ver su código, pero por el nivel de "inteligencia" (intención de ironía) que muestran con su interfaz de usuario, lo más probable es que hayan creado un hash MD5 de cada carácter de la contraseña. Sí, buen chiste por la mañana, ¿verdad?
Pero lo que más me intriga es que estás realmente preocupado por la seguridad aquí. Mira esa interfaz de usuario. ¿No es totalmente incómodo para un usuario tratar con él? ¿Derecha? Así que ahora piénselo dos veces: en qué estado de ánimo deben estar esas personas para: a) sugerir eso yb) hacerlo a través de todo el procesamiento hasta la producción. Tenga la seguridad de que cuando su UI tiene grandes deficiencias, lo más probable es que la seguridad también sea una broma.
Bien, ¿qué está mal aquí? El beneficio que el creador de esa forma cree que es que nunca se transfiere la contraseña completa a través del cable. En su lugar, solo se transfiere una parte de la contraseña. Entonces, cuando un atacante escucha a escondidas la transferencia de la contraseña, el atacante no puede obtener toda la contraseña a la vez, pero tendrá que recopilar muchos inicios de sesión con la misma contraseña para luego construir la completa.
El problema con esto es que no es el método correcto para protegerse contra el espionaje. En su lugar, debe utilizarse una conexión segura.
Si ahora el banco ha introducido esto porque piensan que su conexión ya no es segura, entonces deben cerrar el inicio de sesión hasta que lo hayan arreglado.
Además, muestra un error muy común acerca de la seguridad. Debe ser utilizable de lo contrario dispararás en tu pie. Aquí, los clientes de ese banco están capacitados para usar contraseñas que pueden leer en voz alta para que puedan decir qué letra está en qué posición.
Tomar la longitud de esa contraseña y saber un poco acerca del usuario mientras tiene un buen diccionario debería hacer que sea realmente fácil de adivinar las 4 letras solicitadas porque la longitud de la contraseña ya se ha proporcionado a un atacante de forma gratuita.
Además de este patrón para que funcione, se debe haber proporcionado un nombre de usuario ya antes se puede mostrar el formulario de contraseña. Esto significa que un sistema de este tipo puede ser fácilmente explotado para probar los nombres de usuario primero.
¿Por qué no se comunica con las autoridades responsables de regular esta banca bancaria por la cual tiene buenas razones para creer que este banco realiza un manejo frívolo de los datos y el dinero de los clientes en transacciones electrónicas a través de Internet?
No entiendo por qué pedir solo ciertas letras de una contraseña es una mala práctica.
Claro, si un pirata informático solo tiene que conocer 3 de las 10 letras de su contraseña, un enfoque de "fuerza bruta" tiene más posibilidades de éxito. Pero ese puede ser un pequeño precio para pagar otros beneficios.
Por lo que sé, todos los sistemas de banca telefónica del Reino Unido hacen esto. Y me parece bastante obvio que el personal del teléfono del banco nunca ve la contraseña completa. Supongo que eso significa que el servidor que tiene esa contraseña se puede configurar de forma más segura, ya que nunca tiene que revelar la contraseña completa a cualquiera .
Lea otras preguntas en las etiquetas passwords authentication