Depende de la implementación y de los requisitos de seguridad. Hay soluciones que no tienen ningún canal de retorno en cuyo caso nunca puede estar 100% seguro de que los datos se reciben en el otro extremo. Se puede intentar compensar esto enviando los datos con la frecuencia suficiente o con una corrección de errores suficiente, pero al final no se notará si el sistema del receptor simplemente está dañado, porque no hay forma explícita de obtener acuses de recibo.
Y luego hay soluciones que intentan encontrar un compromiso diferente entre la usabilidad y la seguridad al proporcionar un mínimo de canal de retorno. Un producto que conozco más profundamente consta de tres partes: un micro-kernel en el medio y firewalls en ambos lados del micro-kernel. La funcionalidad unidireccional se implementa mediante una tarea de micro kernel que usa solo un código mínimo y, por lo tanto, puede verificarse mejor para verificar la corrección de la funcionalidad y la solidez. Y a ambos lados de este micro-kernel están los firewalls más complejos donde las aplicaciones traducen el tráfico TCP, UDP, FTP o SMTP al protocolo unidireccional personalizado transferido por el micro-kernel y viceversa. El canal posterior mínimo proporcionado por este protocolo puede indicar solo el éxito o el fracaso, lo que es suficiente para proporcionar una retroalimentación temprana, por ejemplo, en caso de que el receptor se bloquee y no pueda recibir más datos o incluso si la transferencia de FTP falló debido a que la contraseña era incorrecta. Las aplicaciones en el firewall implementan el control de flujo TCP y funciones similares, y no viajan por el micro-kernel.
Parece que los firewalls y los servidores proxy harían prácticamente lo mismo?
No es realmente cierto y no está realmente mal. Cuanto más grande sea la base del código, que implementa la funcionalidad esencial de un solo sentido, más difícil será asegurarse de que en realidad solo existe un medio para comunicarse. Lo bueno de los diodos de datos basados en una propiedad unidireccional física (como el emisor de luz y el receptor) es que obviamente son unidireccionales y solo se pueden omitir si el atacante tiene acceso físico al sistema. Pero cuanto más se aleje de la propiedad unidireccional de la obviedad, más difícil será asegurarse de que realmente sea unidireccional.
Por ejemplo: con unidireccional físico, obviamente, uno puede comprometer ambos lados del diodo y aún así estar seguro de que se mantiene la propiedad de un solo sentido. Con las soluciones basadas en micro-kernel, describí que los firewalls en ambos lados también podrían verse comprometidos sin perder la propiedad de un solo sentido. Pero se pondrá malo si el micro-kernel se vea comprometido. Pero eso se considera imposible sin acceso físico en esta solución porque el micro-kernel es justo lo que dice: una base de código mínima, la interacción con el exterior solo a través de la tarea de una sola vía y esta tarea mínima es segura contra ataques. Con una solución de proxy en un único dispositivo de firewall, sería suficiente para comprometer este firewall para trabajar alrededor de la propiedad de un solo sentido. Dado que los firewalls son complejos, esto puede considerarse más probable que explotar un micro-kernel o incluso una separación física.
Por lo tanto: puede lograr una funcionalidad de un solo uso con una solución proxy simple, pero es difícil demostrar que solo lo hace en todos los casos, incluso si es atacado. Y el mercado donde se usan los diodos de datos generalmente tiene altos requisitos de seguridad y, a menudo, requiere que no solo afirme que su solución es segura y resistente contra ataques, sino que también puede demostrarlo más o menos (es decir, certificados, evaluaciones independientes ...) . Y la robustez obvia por diseño realmente ayuda en este caso.