¿Qué precauciones puedo tomar para proteger el software contra el usuario?

1

Quiero crear un cliente que se conecte a mi servidor y use la API del servidor. Puede considerar esto como una aplicación bancaria porque la seguridad de los datos es lo más importante. Dado que los usuarios o piratas informáticos intentarán violar la seguridad del software para entrar en el flujo y ver qué está sucediendo, también debemos proteger todo de los usuarios. Simplemente, quiero tomar precauciones contra estas situaciones (pero no limitadas):

  1. Ataques de ingeniería inversa: nadie debe ver mi código fuente. Si alguien lo ve, puede entender el algoritmo y aprender cómo funciona la API. Dado que la API no es pública, nunca debe suceder. ¿Es confuso un proceso irreversible y la mejor manera de ocultar el código fuente real? Además, ¿cómo puedo asegurar mis variables que se pueden descargar de la memoria en el tiempo de ejecución? ¿Cuál es la mejor manera de asegurar la configuración local o los archivos creados en Windows?

  2. Clientes piratas: ¿Cómo puedo evitar que otros softwares utilicen mi API? Si alguien obtiene el código fuente, modifíquelo o cree el suyo, esta será una situación incómoda. ¿Hay una manera de limitar el acceso del servicio a mis propios clientes originales, no modificados? (¿Control de hash? ¿Certificados de cliente? ¿Firma de ensamblaje tal vez?)

  3. Canal de datos & seguridad de los datos: el software debería poder ejecutarse en todas las redes que se conectan a Internet, por lo que parece que tengo que usar solicitudes web y amp; Respuestas para comunicar clientes con servidor. Creo que el canal de datos se puede asegurar con https fácilmente. ¿Debo preferir un certificado pagado (como Verisign) o crear mi propio certificado (firmado por mí) es suficiente? también quiero asegurar los datos en sí, creo que un público y amp; El par de claves privadas para cada cliente será suficiente para la identificación y la comunicación. ¿Es un buen enfoque? También estoy pensando en conectar a esos clientes con un Proxy HTTP, ¿puede aumentar la seguridad?

Sé que mi software está funcionando en suelo enemigo en el que no debo confiar y que no hay nada que un usuario no pueda hacer con él. Pero quiero asegurar esto tanto como pueda. Nadie puede hacerlo completamente seguro, pero quiero hacer todo lo posible para aumentarlo.

    
pregunta Batuhan 04.03.2015 - 16:42
fuente

1 respuesta

3

Todos los esfuerzos de seguridad del lado del cliente están condenados al fracaso.

La ofuscación y ocultar su fuente simplemente no va a funcionar. Cuanto más valiosos sean los datos con los que está trabajando, más rápido será su ingeniería inversa. El único enfoque lógico para considerar todo lo público del lado del cliente.

Su enfoque debe ser enfocar su seguridad en el servidor del lado del servidor, generar un par de claves de autorización para cada cliente y monitorear el abuso y revocar las claves en estos casos. Al igual que Amazon AWS.

  • HMAC para autorización y TLS para encriptación de transporte.
  • No importa si genera su propio certificado (puede confiar en usted más que en verisign) siempre que le diga a cada cliente que confíe en él.

  • Agregar un proxy no aumentará la seguridad, el uso de TLS lo hará.

  • Si tiene sentido para la aplicación, agregue una contraseña para cifrar el HMAC clave y los datos del lado del cliente, para que sea un poco más seguro.
  • en el El lado de la detección considera formas automatizadas de detectar el abuso. Cuántos consultas es demasiado? Tal vez lanzar algunos puntos finales de la API de honeypot jugosa en el código fuente del cliente. Cuando un atacante se conecta a / payment / swissbank / million, usted sabe que la clave ha sido comprometida y debe ser revocada. Cualquier otra cosa que esté fuera del comportamiento normal, incluida la validación, falla.
respondido por el Antonius Bloch 04.03.2015 - 19:55
fuente

Lea otras preguntas en las etiquetas