Tengo varios procesos que se ejecutan en un sistema que interactúan entre sí mediante TCP (por ejemplo, con el protocolo de mensajería asíncrono mediante trenzado).
process1 <=====> broker <=====> process2
Hay una instancia de servidor (agente) ejecutándose en un host de Linux, que escucha un socket TCP localhost: puerto . También hay algunos otros procesos, que se ejecutan en el mismo host, que consultan la instancia del agente utilizando el socket a través de TCP (dado por trenzado). El agente tiene acceso a un módulo de seguridad de hardware (HSM).
Actualmente estoy pensando en los aspectos de seguridad de este diseño. ¿Sería posible que un intruso, que tiene acceso físico directo al host, escuche el tráfico TCP entre los clientes y el intermediario en este host? Como a veces se transfieren datos confidenciales, quiero asegurar la comunicación entre los procesos y el intermediario en el host.
¿Cómo se puede hacer esto? Siempre existe el problema de almacenar un secreto privado. Para el intermediario no es un problema porque tiene acceso a HSM, pero para los procesos cliente que interactúan con el intermediario. Es difícil ocultar un secreto para un atacante que tiene acceso físico al host. ¿Cómo se puede realizar la autenticación / encriptación entre los procesos y el intermediario?
¡Espero que entiendas mi problema y puedas ayudarme!
EDIT: SSL / TLS no sería un buen enfoque, ya que conlleva una gran sobrecarga y también existe el problema del almacenamiento seguro para secreto privado.