Definitivamente hay problemas en el protocolo, no necesariamente en el esquema de encriptación del que pregunta.
El protocolo permite ataques de repetición, es decir, una entidad R puede capturar los mensajes que A envía a B, y luego los reenvía sin saber qué hay en esos mensajes, aunque A no haya tenido la intención de enviarlos. Luego todo se reduce a lo que contienen esos mensajes. Por ejemplo, vamos a que A y B son computadoras y A envía un mensaje a B para reiniciar, y otra entidad E lo captura. Ahora, solo reproduciendo el mensaje y observando el comportamiento de B, E no solo puede hacer que B se comporte como quiere, sino que también entiende lo que significa el mensaje aunque no pueda ver el contenido.
Un segundo tipo de ataque es que otra entidad M puede falsificar A y comenzar a enviar B con muchos mensajes. Dado que B no sabe si provienen de una fuente confiable, B intentará descifrar esos mensajes y consumir recursos. Puede que M no necesite tantos recursos, ya que todo lo que M debe hacer es crear y enviar datos aleatorios, pero B comenzará a quedarse sin recursos, eso es un ataque de DOS.
Otro ataque involucra a M que captura los mensajes que A envía a B y responde con ACK en nombre de B, que ha capturado en un intercambio anterior. B nunca recibe los mensajes reales y no sabe que no recibió el mensaje. A nunca sabe que no fue B quien recibió el mensaje, sino que fue E.
Hay otros ataques más sofisticados que se pueden construir de esta manera. Los que enumeré aquí son típicamente los ataques introductorios que se observan al diseñar protocolos seguros.
La seguridad viene con toda una plétora de cosas, no solo con cifrado. El cifrado resuelve un aspecto, aunque el más importante, alrededor de la seguridad. Pero en su caso, también está diseñando un protocolo que no es seguro y, por lo tanto, también puede utilizar un protocolo existente.
Ahí es donde entran los protocolos de seguridad en los que se realizan los protocolos apropiados, la autenticación (para garantizar que la otra parte es la correcta), proporciona protección contra los ataques de repetición, etc. Los ataques de intermediarios podrían ser una vulnerabilidad no confíe en la infraestructura de clave pública, es decir, aunque en su caso, puede resolver eso porque A y B tienen un secreto compartido (de hecho, supongo que está comenzando con el secreto compartido principalmente porque A y B sí lo hacen). No confíe en nadie más en el mundo, generalmente es una buena razón para compartir secretos.)
Por cierto, una vez que tenga dichos protocolos de seguridad, dado todos los datos que deben enviarse entre sí, terminará con tokens de seguridad para asegurarse de que todas las partes tengan un entendimiento mutuo de lo que contienen, cómo está codificado, etc. (p. ej., nonce, claves, datos cifrados, firma digital, etc.)
En esencia, IMO, está intentando crear su propio protocolo de seguridad y, como alguien ya lo ha mencionado, es mejor que intente comenzar con un protocolo existente.