En general, el intercambio de información de chat encriptado asimétricamente comienza con el intercambio de claves públicas. Idealmente, debería tener algún mecanismo para vincular la clave al propietario (piense en certificados y firmas SSL) para evitar ataques MITM. Es más fácil utilizar un sistema existente (como certificados SSL o claves PGP) para evitar reinventar la rueda. Las firmas en las que decida confiar dependen del tipo de modelo de confianza que le interese mantener. Un buen punto de partida es determinar exactamente qué constituye la identidad de un usuario y qué tipo de acceso tendría que tener un atacante para robar esa identidad.
Luego, por supuesto, use RSA para cifrar las claves de sesión ad-hoc usadas para criptografía simétrica como AES, Twofish, RC4, etc. La eficiencia radica en el hecho de que solo está usando RSA para establecer la identidad del partido. se está comunicando con e inmediatamente cambia a algo más eficiente.
Por otro lado
Si está hablando de usar RSA en un medio de transmisión (piense en IRC en lugar de en Jabber), entonces sí, esto es terriblemente ineficiente. El cifrado es necesariamente punto a punto, en lugar de punto a multipunto. Cada flujo es encriptado individualmente. Por lo tanto, la cantidad de transmisiones encriptadas que genera un determinado cliente es igual a la cantidad de destinos a los que se envía el mensaje. Cada uno se configura independientemente de los demás. Esto es precisamente por lo que los sistemas como IRC no cifran de extremo a extremo entre diferentes clientes. La sobrecarga sería simplemente demasiado. A lo sumo, cifran el cliente al servidor, permitiendo que cada usuario tenga un solo canal seguro, con el servidor que maneja la distribución de mensajes.
Eso no quiere decir que lo que estás haciendo es imposible o poco aconsejable. Si quieres construirlo, entonces adelante.