¿Puede la red con dos diodos de datos (entrante y saliente) seguir siendo segura?

3

Tengo un software que procesa datos numéricos puros y da alguna respuesta.

Para hacerlo seguro, lo puse detrás de dos diodos de datos: uno para los datos entrantes y otro para las respuestas. Los diodos de datos se implementan como hardware específico del cliente.

Punto importante: los diodos de datos tienen un ancho de 4 bits y, por lo tanto, solo permiten palabras de 4 bits. Los datos son puramente numéricos y están codificados así en forma binaria:

0000 = '0'
0001 = '1'
0010 = '2'
0011 = '3'
0100 = '4'
0101 = '5'
0110 = '6'
0111 = '7'
1000 = '8'
1001 = '9'
1010 = '.'
1011 = ';' (separator)

¿Mi software detrás de los diodos de datos todavía está a salvo de los ataques de piratas informáticos?

Creo que sí, porque las palabras de datos de 4 bits no permiten que el pirata informático envíe ningún comando malicioso. Si fueran de 8 bits de ancho, todos los caracteres ASCII aparecerían y el software sería vulnerable.

    
pregunta Pekka Sivonen 18.01.2018 - 11:17
fuente

2 respuestas

6

Hay varios casos de uso para diodos de datos y no está claro cuál es exactamente su caso de uso y si los diodos de datos son la solución para su problema desconocido. Pero mi conjetura es que los diodos de datos no son lo que realmente necesita y que su idea actual de cómo usar los diodos de datos no proporciona la seguridad que prevé:

  • Un caso de uso de diodos de datos es asegurarse de que los datos solo puedan salir de un sistema pero nunca ingresen a un sistema. Esto se usa, por ejemplo, para sacar los datos de registro de los sistemas de la industria pero detener cualquier flujo de datos en los sistemas de la industria para que no puedan ser atacados.
  • El otro caso de uso es asegurarse de que los datos solo puedan ingresar a un sistema, pero nunca dejarlo. Esto se usa, por ejemplo, para alimentar los datos recopilados por un entorno de menor seguridad en un sistema que contiene datos muy confidenciales y garantiza que ningún dato sensible pueda filtrarse nunca en el entorno de menor seguridad, incluso en caso de errores o vulnerabilidades.

Su caso de uso no es ninguno de estos. En su lugar, parece que usted quiere enviar algunos datos del exterior a algún servicio y obtener una respuesta, pero aún así proteger el servicio para que no sea hackeado desde el exterior. Esta comunicación bidireccional no es el caso de uso para el diodo de datos unidireccional. Y al simplemente combinar dos diodos de datos, básicamente permite la comunicación bidireccional (en su mayoría sin restricciones) y, por lo tanto, no protege el servicio.

Lo que probablemente necesitaría es una puerta de enlace de nivel de protocolo de aplicación, es decir, un sistema que permita la comunicación bidireccional restringida . Si se aplica correctamente la sintaxis y la semántica del protocolo de comunicación, dicha pasarela puede asegurarse de que el servicio solo obtenga datos que pueda manejar de manera segura y que solo los datos salgan del servicio que se adhieran a la sintaxis y la semántica definidas del protocolo. - lo que limita gravemente la forma en que el atacante podría comprometer el servicio y cómo podría hacer uso de un compromiso exitoso.

    
respondido por el Steffen Ullrich 18.01.2018 - 13:32
fuente
2

Todavía está en riesgo. Parece que no entiendes cómo funciona un ataque.

Por ejemplo, supongamos que tienes lo siguiente:

int arr[4];
int idx = ReadNumberFromInput();
int val = ReadNumberFromInput();
arr[idx] = val;

No se verificó el idx para asegurarse de que está entre 0-3. Usted está sobrescribiendo una pieza de memoria arbitraria con val. Es posible que idx esté diseñado para apuntar a instrucciones que luego pueden ser invocadas por el usuario.

    
respondido por el Hector 18.01.2018 - 11:30
fuente

Lea otras preguntas en las etiquetas