¿A qué tipo de método de seguridad se llama (si tiene un nombre)?

0

He pensado en una forma de asegurar el acceso a una aplicación interactuando con otra aplicación.

Usando este método

Aplicación 1 - "¿Cuál es la suma de 1 + 1?"

Aplicación 2 - "3"

Aplicación 1 - "Acceso concedido"

¿Se usa mucho este método, tiene una clasificación en el mundo de la programación?

Las ventajas para mí de usar esto es que no tengo que dedicar más esfuerzo a la implementación de claves / certificados de seguridad.

Cualquier máquina no autorizada que intente interpretarla daría el resultado correcto y se identificaría como no confiable.

¿Qué tipo de debilidades hay para hacer esto?

    
pregunta AviD 19.11.2012 - 11:36
fuente

6 respuestas

16

Edit 2 : ya que se ha migrado a Security.SE, probablemente debería comenzar con esto: no soy un criptógrafo profesional, y hay muchas, muchas razones por las que debería < a href="https://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own"> nunca haga rodar su propia seguridad . Dicho esto:

Es una forma de autenticación challenge-response (cada vez se envían diferentes desafíos) . El algoritmo para encontrar la respuesta correcta es esencialmente el "secreto" o la "contraseña". Está abierto a una serie de ataques, pero esencialmente, cualquier persona que pueda descubrir su algoritmo puede romper esta seguridad, y es relativamente trivial invertir los archivos ejecutables.

Editar : para poner esto en perspectiva, considere resumen de Wikipedia de Kerckhoffs Principio y máxima de Shannon:

  

Al diseñar sistemas de seguridad, es prudente suponer que los detalles del algoritmo criptográfico ya están disponibles para el atacante. Este principio se conoce como el principio de Kerckhoffs: "solo el secreto de la clave proporciona seguridad", o, reformulado como la máxima de Shannon, "el enemigo conoce el sistema".

En su caso, ha creado un algoritmo secreto, pero no tiene una "clave" real (no existe un secreto compartido entre los dos puntos finales, aparte del algoritmo). Una vez que alguien descubre el algoritmo, se rompe la seguridad; así que en el mejor de los casos has subido un poco la barra para las personas que intentan resolverlo. Tenga la seguridad de que cualquiera que realmente quiera romperlo, lo hará. En esa situación, también tiene un problema difícil de tener que reemplazar el algoritmo comprometido (en lugar de simplemente cambiar la clave comprometida).

Hay una razón por la cual la criptografía moderna prefiere claves grandes sobre algoritmos complejos, no importa lo complejo que sea el algoritmo, puede (y será) diseñado mediante ingeniería inversa.

    
respondido por el Daniel B 19.11.2012 - 11:56
fuente
11

Esto se conoce comúnmente como " Seguridad por oscuridad ".

Pienso que apuntas a algún tipo de protocolo de desafío-respuesta, pero esto es tan trivialmente débil que es ridículo. Ni siquiera lo llames seguridad ...

El aspecto de "oscuridad" aquí es que la seguridad total de todo el mecanismo se basa en el hecho de que el atacante no tiene idea de qué es este mecanismo. En el momento en que él tiene alguna información, todo se rompe.

Esta es la razón por la cual Security by Obscurity es a menudo rechazado por cualquier persona con experiencia en seguridad (a pesar del hecho de que en ciertos escenarios, Obscurity puede agregar valor limitado. Pero no aquí.)

TL; DR: No hagas esto.

    
respondido por el AviD 19.11.2012 - 13:00
fuente
4

Puede que tenga un nombre más específico, pero es una forma trivial de handshaking :

  

En la tecnología de la información, las telecomunicaciones y los campos relacionados, el intercambio es un proceso automatizado de negociación, que establece dinámicamente los parámetros de un canal de comunicaciones establecido entre dos entidades antes de que comience la comunicación normal a través del canal. Sigue el establecimiento físico del canal y precede a la transferencia de información normal.

Aunque no soy un experto en seguridad, lo que estás describiendo está lejos de ser seguro, es un simple intercambio de tokens y es vulnerable a todo tipo de ataques. "3" es esencialmente su contraseña, y es una contraseña que tiene sentido semánticamente, lo cual es algo malo. Todo lo que debo hacer para frenar su red es lanzar números aleatorios . Por lo menos podrías cambiar eso a "azul", por ejemplo. Todavía entraría, pero probablemente me llevaría un poco más.

Debería pasar un tiempo investigando autenticación de múltiples factores , pronto encontrará una mejor manera de identificando tus aplicaciones.

    
respondido por el user6636 19.11.2012 - 11:43
fuente
2

Aparte del asunto de su nombre, lo consideraría bastante débil. Las razones por las que se describen en las otras respuestas, así como un discurso más general desde aquí.

La seguridad es difícil . Es por eso que los expertos en seguridad reciben enormes paquetes de pago y es por eso que los sistemas operativos modernos se centran tanto en la seguridad, pero a veces aún logran hacerlo mal.

Al implementar su propia seguridad, está demostrando que puede tener un mal caso de "no se ha inventado aquí". Le animo a que deje eso y simplemente use la seguridad incorporada en su plataforma; no importa cuánto piense que puede mejorar, no puede. Además, los administradores de su sistema le agradecerán por usar la seguridad integrada en lugar de darles otra capa innecesaria de seguridad adicional para administrar, y sus usuarios finales le agradecerán por no haber forzado otro combo de nombre de usuario / contraseña en ellos.

    
respondido por el mh. 19.11.2012 - 12:48
fuente
1

Seguridad por oscuridad. Una pregunta para la cual la respuesta esperada es incorrecta cuando se le da solo la información presentada en el desafío requiere algún conocimiento "secreto" adicional que solo "en" el software tiene. El problema es que el software está en manos de su atacante, que puede descompilarlo para descubrir el secreto. Por lo tanto, esto es muy débil, porque se basa en un secreto estático de baja entropía (el "secreto" es agregar 1 a la respuesta a la pregunta planteada).

Si dos programas deben confiar el uno en el otro, sabiendo que no se puede garantizar al 100% que el otro es quien dice ser y no un impostor, el método habitual es un poco de "verificación independiente"; Si un tercero de confianza dice que este programa es quien dice que es, eso es "evidencia" que puede utilizar para aumentar su confianza.

Los certificados son una forma de esta verificación; un servidor que desee probarse a sí mismo obtiene un certificado de un tercero independiente, cuya información se ha cifrado mediante una clave privada que no se entrega al servidor, pero que puede leer cualquiera que solicite el certificado del servidor, utilizando una clave pública Distribuido de forma independiente por el tercero. Por lo tanto, el servidor (o un atacante que desea imitar esta ubicación) no puede cambiar la información en el certificado, y mientras la información coincida con la ubicación real y los identificadores públicos del servidor, los clientes pueden estar seguros de que el servidor es quien dice que es.

Sin certificados, la mayoría de los sistemas se basan en un modelo de evidencia de "conocimiento cero". Las pruebas de conocimiento cero por lo general todavía requieren algún tipo de tercero, que distribuye las pruebas que los programas utilizan para responder a los desafíos. En el mundo real, este suele ser un servidor de autenticación. La diferencia es que nadie tiene que saber todo sobre el esquema de autenticación, y la información utilizada se puede obtener en tiempo real y, por lo tanto, puede cambiar cada vez que se realiza.

Aquí hay un ejemplo: Alice es saludada por Bob, en quien Alice no confía. Bob dice que conoce a Cindy, y por lo tanto, dice, es confiable. Para probar este hecho, Alice llama a Cindy, que conoce a Alice, y le pide la mitad de un par de claves asimétricas. Luego desafía a Bob a cifrar un mensaje secreto que puede ser descifrado por la clave de Alice. Bob llama a Cindy, que también conoce a Bob, y le da la otra mitad del par de llaves. Bob cifra el mensaje, que Cindy nunca sabe, y se lo da a Alice, que lo descifra con su clave y recibe el mensaje original. Bob no pudo haber cifrado el mensaje correctamente sin saber la otra mitad de la clave, y la única forma en que pudo haberlo obtenido es de Cindy. Cindy, por su parte, nunca sabe el mensaje secreto, por lo que no puede darle el mensaje a Bob para que lo devuelva a menos que Bob le diga (y si Cindy le hubiera preguntado, Bob sospecharía que tal vez Cindy no es quién ella dice que es).

En el mundo real, Alice y Bob serían programas utilizados por los usuarios finales (quizás el mismo usuario final), y Cindy sería un sistema de autenticación central. Los usuarios finales de los dos programas tendrían secretos fuera de línea (nombre de usuario / contraseña) que usarían para autenticarse con el sistema central, y una vez hecho esto, los programas pueden demostrarse que sus usuarios finales son usuarios válidos en el sistema, sin ya sea una aplicación que conoce las credenciales del otro usuario, o el servicio central que conoce el secreto que se pasa entre los dos programas como parte de su saludo.

Para que este tipo de esquema se rompa, un atacante David debe convencer a Cindy de que en realidad es Bob, o también debe tener una cómplice Emily, que debe convencer a Alice de que es Cindy, antes de darle a Bob la otra mitad. de la llave que ella generó para alicia. Cómo sabe Alice que Cindy es realmente Cindy y no Emily, y cómo Cindy sabe que Alice y Bob son quienes dicen, requieren sus propios esquemas con sus propios secretos. Esos esquemas también pueden involucrar a terceros, pero eventualmente te quedas sin terceros; en algún momento, debe confiar en la transferencia de un secreto fuera de línea, como un conjunto de credenciales de usuario, para verificar que alguien es quien dice sin tener que consultar a un tercero.

    
respondido por el KeithS 19.11.2012 - 18:50
fuente
0

Se llama " contraseña ". Es bastante inseguro (un personaje), pero es una forma de secreto compartido, no obstante.

Por otra parte, si la pregunta era "¿Cuál es el área de la superficie de Ohio" y la respuesta fue la última línea de la dirección de Gettysburg codificada en base64? Bueno, entonces tendrías una mejor contraseña y una mejor seguridad.

De hecho, has visto este mismo sistema en su lugar casi en todas partes. Por lo general, la pregunta es "cuál es tu contraseña", a la que respondes con alguna cadena impredecible con la esperanza. Pero extender el sistema para que responda con contraseñas diferentes para diferentes indicaciones es solo una extensión del mismo concepto.

    
respondido por el tylerl 20.11.2012 - 07:06
fuente

Lea otras preguntas en las etiquetas