@Karcrack Interesante idea la de los plugins, se me ocurrio hacer algo con dlls cargadas dinamicamente que fuesen las funciones, una para el server y otra para el cliente, pero ya habia empezado a codear y la verdad es que me dio un poco de pereza, aunque lo tengo en mente para otro proyecto o incluirlo mas adelante. Te referias a algo asi para los plugins?
Sí, las librerías DLL son una solución. Creas una DLL para el server que exporte ciertas funciones y tu server se encarga de llamarlas y de ofrecerles un interfaz con el comunicarse de forma segura con el cliente.
Respecto a lo de cifrado por sesion no entiendo muy bien a que te refieres jeje.
Además de asignar un identificador y clave a cada servidor generado, con "por sesión" me refiero a que cuando el servidor y el cliente se conecten deben negociar el uso de una clave.
Yo por ejemplo uso AES128-CBC utilizando un IV(Vector de inicialización de AES) negociado por sesión y una clave por servidor.
Si quieres saber más sobre
MAC te recomiendo leer algún libro de iniciación a la criptografía