API pública + ID sensible / Transmisión de clave a través de HTTP

1

Me he encontrado con un problema ... Estoy desarrollando una aplicación móvil que utiliza un servidor para varias cosas. Una parte es que almacena un par de identificación / clave relacionado con el acceso y el procesamiento de información de transacciones para cuentas específicas. Esta identificación / clave para cuentas específicas se decide de forma dinámica en función de lo que sucede con el cliente y a qué cuenta necesita acceder dentro del código en el lado del cliente. Sin embargo, dado que se accede a toda la información de la aplicación a través de una api a través de HTTP (S), la identificación / clave podría estar disponible públicamente para personas con malas intenciones ..

Soy extremadamente paranoico de las infracciones de seguridad de esta información, pero necesito encontrar una manera de llegar al cliente de forma segura sin la posibilidad de interceptación.

He pensado en algunas maneras, pero no he encontrado nada que parezca completamente comprobado, y no estoy seguro de que haya algo garantizado, ya que incluso un valor cifrado de este par de claves / identificación puede ser adquirido con credenciales API.

¿Mi idea principal fue algún tipo de autenticación dinámica cliente / servidor que se genere e identifique de forma única entre ambas entidades, junto con un cifrado de dos vías de esta ID / clave que se devuelve al cliente? Aunque esto podría ser violado si alguien logró profundizar en el código compilado y ver cómo se genera esta autenticación / sal dinámica.

Obviamente, es 100% mejor no tener que transmitir esta información al cliente, pero desafortunadamente en esta situación específica no hay forma de evitarlo.

Dada la sensibilidad de esta información, la solución aquí debe ser sólida.

    
pregunta Braydon Batungbacal 08.07.2014 - 04:24
fuente

1 respuesta

1

Debería ser posible para usted entregar la clave al cliente sin riesgo de que un atacante con acceso a la conexión de red pueda interceptarla. Eso podría estar abajo con algo como SSL usando certificados de servidor y cliente específicos para autenticar cada extremo de la conexión.

Sin embargo, un atacante con acceso al código del cliente (por ejemplo, la mayoría de las plataformas móviles) siempre podrá (en teoría) obtener acceso a cualquier secreto que tenga sobre el cliente, ya sea el certificado del cliente en uso o la propia clave, y realmente deberías planear tu modelo de seguridad con ese pensamiento en mente.

Una vez que se coloca algo en un sistema sobre el que no tienes control, debes asumir que un atacante que tiene control sobre ese sistema tiene acceso a él.

    
respondido por el Rоry McCune 08.07.2014 - 08:59
fuente

Lea otras preguntas en las etiquetas