Nuestro objetivo es simple: Ya que telnet y rlogin son inseguros, todos los sistemas operativos deberín salir de fábrica con ssh incluido (ver la imagen al final).
SSH se distribuye en dos variedades.
El protocolo 1 más antiguo tiene dos variantes principales:
protocolo 1.3 y protocolo 1.5.
OpenSSH incluye soporte para ambas.
Las dos usan el algoritmo de criptografía asimétrico
RSA
(cuya patente en los EE.UU. ha caducado, permitiendo así su uso
libre) para la negociación de claves, y luego usan una
pequeña lista de algoritmos simétricos para esconder
datos:
3DES
y
Blowfish
(solía haber otros cuantos, pero tenín problemas de
seguridad).
Algunas implementaciones también incluyen el algoritmo
simétrico IDEA, pero debido a que está
patentado en algunos países y a que los otros dos algoritmos que
se ofrecen son suficientes, no está incluido en OpenSSH.
El protocolo 1 de SSH usa un simple CRC para la integridad de los
datos, que tiene un error de diseño; se sabe que es posible un
ataque de inserción, sin embargo, debido a una cantidad de
ayudas de banda que han sido aplicadas a ssh durante todos estos
años, los ataques contra éste son muy difíciles de
llevar a cabo.
Cuando se usa el algoritmo de cifrado 3DES, no es posible
un ataque de inserción.
La otra variedad es el protocolo 2. El protocolo 2 se inventó
para evitar los problemas de patentes relacionados con RSA
(problemas que ya no existen dado que la patente ha caducado), y para
solucionar el problema de integridad de datos de CRC que tiene SSH1.
Usando los algoritmos asimétricos
DSA y
DH, el
protocolo 2 evita todas las patentes.
El problema con CRC también se ha solucionado usando un
algoritmo real
HMAC.
El código de OpenSSH que contiene soporte completo para los protocolos 1.3 y 1.5 fue lanzado el 1 de septiembre de 1.999.
Para muchas de sus funcionalidades criptográficas, OpenSSH depende de la biblioteca (bajo licencia no GPL) OpenSSL.
Casi inmediatamente después del lanzamiento de nuestra implementación del protocolo 1, varios grupos ajenos a OpenBSD mostraron un gran interés. Damien Miller, Philip Hands, y unos cuantos más comenzaron a portar OpenSSH a Linux y a otros sistemas operativos Unix. Desde que empezamos este esfuerzo pensamos que el código original de ssh era demasiado complejo, tenía demasiadas dependencias de sistemas operativos como para tratar con él. El modo en que lo abordamos para escribir un código completamente seguro y sólido como una roca, evita tener que tratar con diferencias excesivas como ésas. Así pues, para facilitarnos el proceso completo de desarrollo a todos, decidimos separar nuestro esfuerzo de desarrollo central del de desarrollo de portabilidad. Esto nos ha funcionado muy bien (como prueba, compare el número de líneas de código entre la versión base y la portable).
Desde entonces, los miembros del proyecto OpenBSD que trabajan en OpenSSH han estado dándole un empujón para conseguir también soporte para el protocolo 2. Desde el 4 de mayo de 2.000, el protocolo 2 está completamente implementado.
Por lo tanto, desde el 4 de mayo de 2.000, OpenBSD provee soporte total para el protocolo 2. Pero como los clientes y servidores del protocolo 1 todavía son más populares en Internet, también seguimos ofreciendo soporte para el protocolo 1.