Implementar su propio SSL no es una tarea pequeña. Se necesita un poco de esfuerzo para que funcione; se necesita mucho esfuerzo para hacerlo de forma segura. La criptografía en SSL es sutil, y se sabe que la implementación del cifrado simétrico (con cifrado de bloque) tiene algunas vulnerabilidades si el descifrado y la verificación de MAC no se realizan con el mayor cuidado (funciones de comparación de tiempo fijo, etc.).
Una vez escribí una biblioteca SSL en C pura, para un sistema integrado (ARM7TDMI). Soportó algunas suites de cifrado (con cifrado 3DES y AES). Incluía un sistema de validación de ruta X.509 primitivo (un decodificador ASN.1 optimizable). El tamaño completo del código, una vez compilado, fue de aproximadamente 20 kB; el soporte X.509 representó 6 kB y 5 kB solo para AES (debido a sus tablas internas precomputadas). Más importante aún, la biblioteca no realizó una asignación de memoria dinámica por sí misma; podría ejecutarse con un único búfer de 18 kB provisto por el llamador.
Si realmente necesita encajar en el tamaño de código más pequeño, debe implementar un solo conjunto de cifrado con RC4. RC4 tiene sesgos conocidos por lo que, criptográficamente hablando, apesta. Sin embargo, no requiere relleno, lo que evita muchas de las vulnerabilidades implicadas con el manejo del relleno al descifrar, por lo que usar RC4 en ese caso probablemente no sea una mala idea.
No puedes evitar ninguna forma de intercambio de claves. De lo contrario no tendría sentido usar SSL. Existe una "sesión nula de HTTPS": se llama "HTTP simple" sin SSL. El intercambio de claves basado en RSA es más fácil para el cliente, ya que implica solo operaciones de clave pública, es decir, exponenciación con un exponente muy pequeño. También lo necesitará para validar el certificado del servidor (verificación de firma RSA). Algunos códigos de "enteros grandes" hechos a mano con las pocas operaciones necesarias se pueden construir con pocas líneas de código, pero por supuesto, debe comprender lo que está haciendo.
Lea esta respuesta para obtener una descripción del protocolo SSL / TLS. Además, obtenga el Manual de criptografía aplicada (descarga gratuita!), Especialmente el capítulo 14, que trata (especialmente) del gran número entero aritmética.
Y haz que revisen tu código. No imagines que puedes escribir código sin ninguna vulnerabilidad; prepárate para hacer el trabajo de nuevo. Un proyecto de software debe escribirse tres veces: una vez para comprender el problema, una vez para entender la solución y una vez para hacerlo correctamente. Dado que las vulnerabilidades no aparecen durante las pruebas funcionales, la única forma de detectarlas es enviar su código a varias (muchas) otras personas y dejar que busquen problemas.