Debe hacer una distinción entre el protocolo aplicativo y el protocolo de transporte . SSL / TLS es un protocolo de transporte: garantiza algunas garantías relacionadas con la seguridad (confidencialidad, integridad, alguna autenticación) para un flujo de bytes bidireccional. Lo que estos bytes significan es lo que define el "protocolo aplicativo". P.ej. en HTTPS, HTTP es el protocolo aplicativo y SSL es el protocolo de transporte.
Definir tu propio protocolo aplicativo es completamente tuyo. Puede dañar su propia implementación y tener, por ejemplo, desbordamientos de búfer; pero, de lo contrario, no hay nada en la definición de protocolo aplicativo que ponga en peligro las garantías de seguridad ofrecidas por el protocolo de transporte: desde el punto de vista de SSL, los bytes son bytes. Sin embargo, hay una pequeña advertencia: SSL garantiza la confidencialidad para los bytes valores , pero la longitud de las fugas de datos cifrados. La fuga de longitud de datos ha sido una fuente de problemas, por ejemplo, el llamado CRIME attack .
Definir tu propio protocolo de transporte es una mala idea . O bien los datos aplicativos no necesitan ninguna de las propiedades de seguridad de SSL como protocolo de transporte, en cuyo caso el método más simple y eficiente es no usar SSL en absoluto, solo TCP en bruto; O todavía necesita algo de seguridad, y "hacer rodar la suya" es una receta conocida para el desastre. El tono subyacente es que, contrariamente a una creencia generalizada, hay poco espacio para la optimización adicional en SSL: hay muy pocas partes del protocolo que pueden eliminarse sin romper por completo la seguridad.
(Lo que puede hacer, sin embargo, es reducir las funcionalidades: admite solo un conjunto de cifrado en el cliente y el servidor, eliminar las extensiones innecesarias, etc.). Esto sigue siendo un estándar SSL / TLS, y todavía usa las bibliotecas SSL / TLS existentes, que es el punto.)