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.