TinySSH es un pequeño servidor SSH que usa NaCl, TweetNaCl
Alcance y objetivos del proyecto
- TinySSH es un servidor SSH minimalista centrado en un tamaño pequeño, uso de memoria estática y una superficie de ataque reducida.
- Usa NaCl/TweetNaCl para la criptografía e implementa intencionalmente solo un subconjunto de las funciones de SSH.
Comparación con Dropbear y OpenSSH
- En comparación con Dropbear:
- TinySSH es más restringido: solo autenticación basada en claves, un único cifrado AEAD, un único intercambio de claves de curva elíptica, sin RSA, sin autenticación por contraseña, sin reenvío X11/agent/puertos, sin restricciones de claves como en OpenSSH.
- Dropbear aspira a ser pequeño pero aun así “con muchas funciones” y más cercano a un SSH conforme a RFC.
- TinySSH intercambia explícitamente cobertura de estándares y funciones por simplicidad y una superficie de ataque menor.
- Algunos sostienen que OpenSSH ya puede cubrir la mayoría de necesidades y que su tamaño adicional es insignificante para sistemas modernos, incluido initrd.
Propiedades de seguridad y diseño
- TinySSH no usa asignación dinámica de memoria y tiene toda la memoria asignada estáticamente (<1 MB), lo que se afirma que reduce el riesgo.
- Evita “funciones inseguras” como la autenticación por contraseña o basada en host por diseño.
- Existe escepticismo sobre:
- Si ~60–100k “palabras de código” es realmente “fácilmente auditable”.
- El uso por parte del proyecto de su “propia biblioteca criptográfica”.
Casos de uso: initrd, desbloqueo remoto, embebidos
- Varios comentarios destacan TinySSH (y variantes de Dropbear/OpenSSH) para:
- Desbloqueo remoto de discos cifrados durante el arranque temprano (ganchos initramfs/dracut/mkinitcpio).
- Sistemas de usuario estáticos pequeños y dispositivos embebidos.
- Se mencionan múltiples herramientas y enfoques para desbloqueo automatizado o remoto (desbloqueadores basados en Dropbear, Mandos, Clevis+Tang, esquemas basados en TPM), con debate sobre la confianza en la cadena de arranque y los modelos de amenaza.
- La ausencia de reenvío de puertos se ve como una desventaja para algunos escenarios embebidos/remotos.
Contraseñas y provisión de dispositivos
- La falta de autenticación por contraseña plantea preguntas prácticas para dispositivos compartidos o restringidos (impresoras, routers, coches).
- Solución sugerida: claves generadas por el dispositivo mostradas mediante QR o similar, y luego el usuario instala sus propias claves.
Discusión sobre licencias
- TinySSH está licenciado bajo CC0 1.0.
- Varios comentarios dicen que CC0 no es ideal para software debido a la exclusión explícita de derechos de patente/marca registrada.
- Se sugieren alternativas como licencias de software muy permisivas; algunos proponen doble o múltiple licencia.
- Se menciona el problema anterior de “terminación” de Creative Commons, pero los comentaristas dicen que no aplica específicamente a CC0.
Perspectiva más amplia
- Algunos ven TinySSH como una herramienta “pequeña y bonita” y atractiva para nichos específicos.
- Otros sostienen que reemplazar OpenSSH en general es poco probable, dada su madurez, escala de despliegue y trayectoria de seguridad.