Hashing datos confidenciales en la solicitud [duplicado]

0

Hemos establecido la conexión https, entre el cliente y el servidor. El problema es que los chicos de seguridad nos mostraron que es posible interceptar los datos utilizando un certificado falso no válido (el usuario debe aceptarlo en el navegador).

El problema ahora es que el atacante podría ver en un texto claro todas las solicitudes enviadas al servidor y, sin embargo, ver cuál es la estructura de los datos que estamos enviando (¿es una vulnerabilidad de seguridad?

1) ¿Tiene sentido hacer hash de la información confidencial (del lado del cliente) y enviarla al servidor?

2) Existe un requisito que nos exige que cifremos algunos datos (es decir, el PIN de la tarjeta de crédito) en el lado del cliente y que luego los enviemos al servidor. ¿Tiene sentido? Tendríamos que seguir de alguna manera los mismos pasos que hacemos para SSL, establecer el cifrado de confianza, etc., solo para este campo.

3) ¿Vale la pena ofuscar el código JS? ¿No sería fácilmente reversible?

    
pregunta Remiwaw 29.07.2016 - 00:17
fuente

2 respuestas

0

El término oficial para un atacante espiando su conexión usando un certificado diferente se denomina ataque Man-In-The-Middle en este escenario. La forma de protegerse de esto es pinning . Una explicación demasiado simplista es verificar un certificado con una copia codificada del original. Para más detalles, vea el enlace de arriba. Mi sugerencia es seguir este enfoque siempre que controle los servidores correspondientes.

Sin embargo, para responder específicamente a sus preguntas:

1) Tenga en cuenta que el hash debe ser unidireccional, por lo tanto, dependiendo de lo que quiera hacer con los datos, puede que se vuelva inútil después de haberlos creado.

2) puede agregar otra capa de seguridad cifrando los datos de extremo a extremo. Sugiero la clave pública criptográfica, ya que no necesita enviar una clave compartida, sino solo una clave pública con el cliente.

3) Pregunta completamente sin relación, pero está bien. JS puede ser increíblemente simple si tiene un código de código casi completamente construido entre corchetes y +, por lo que de alguna manera puede defenderse contra la ingeniería inversa. PERO no hay una ofuscación perfecta, esto es una carrera de armamentos

    
respondido por el user3363866 29.07.2016 - 17:11
fuente
0

Es bueno que los "tipos de seguridad" te muestren algunos posibles ataques, es menos bueno que te dejen a ti mismo reflexionando sobre las contramedidas.

Debe evaluar dónde están sus datos en riesgo. Lo tiene en su máquina cliente, de camino al servidor y finalmente en el servidor mismo (durante el procesamiento y en reposo).

TLS lo protegerá solo durante la transferencia de los datos de su cliente al servidor, siempre que los usuarios tengan cuidado con las advertencias de los certificados (como lo muestran los responsables de seguridad) o si utiliza la fijación de certificados (como sugiere @ usuario3363866).

Quedan con la parte del cliente y del servidor.

Si tiene requisitos para proteger los datos en el cliente, debe buscar sistemas bien mantenidos (especialmente parches) y cifrado completo del disco. Ya que menciona los PIN de las tarjetas de crédito en el contexto de un cliente, le insto a profundizar en los requisitos del PCI-DSS porque probablemente no cumpla ellos.

Cuando hash "algo", obtienes datos que no pueden por ingeniería inversa devolverte el "algo". Esto también significa que si desea ocultar datos en forma de, por ejemplo, un Número de Seguro Social de los EE. UU., Será muy fácil pasar del hash al SSN, al intentar todos los 10 ^ 9 hashes (ni siquiera lo hará). Necesito calcularlos, alguien ya lo ha hecho por ti ).

Finalmente, en el servidor se asegurará de que la aplicación que maneja sus datos esté correctamente escrita y de que los datos almacenados estén encriptados (o no, depende de su evaluación de riesgos).

En resumen, sería una buena idea volver con los "tipos de seguridad" y discutir todo esto.

En cuanto a ofuscar a JS, no tiene mucho sentido, si el navegador puede entenderlo, también lo hará un pirata informático.

    
respondido por el WoJ 30.07.2016 - 18:20
fuente

Lea otras preguntas en las etiquetas