Enviado por magnus el Mié, 09/10/2019 - 14:14

¿Alguna vez se han preguntado cómo se inició esta especie de carrera armamentística que llamamos “seguridad informática”? Al menos yo, sí. Y la respuesta a la que llegué es que todo comenzó con un español que falleció hace apenas unos meses a la edad de 93 años, el Doctor en Física Fernando Corbató. Hoy voy a contarles qué hizo este señor para que hoy exista la Seguridad Informática y esto que llamamos “hacking”.

 

Llave computadora
Una 486 con llave tubular

Pero antes que nada, hagamos un poco de memoria. ¿Se acuerdan de las viejas CPU que venían con llaves? Hasta mediados de los 90's eran furor, parecía que absolutamente todas las computadoras venían con un botón de Turbo (que tal vez veamos en otro artículo qué hacía ese botón) y una llave tubular.

Pero estos dispositivos eran fácilmente sorteables si uno tenía un destornillador en el bolsillo. Bastaba con abrir el gabinete y desconectar la llave y, si también se deseaba usar la disquetera, teniendo el gabinete ya abierto, bien se podía conectar otra. Luego bastaba con encender la computadora para que iniciara el D.O.S. y uno tendría acceso a todos los archivos en ella.  Por eso, algunas computadoras llegaron al extremo de tener unas barras metálicas reforzadas que cruzaban el gabinete de lado a lado y se cerraban con candados. Esto era tanto para evitar el acceso no autorizado a la terminal como para evitar el robo de componentes, que en esas épocas eran mucho más caros que ahora. Una simple memoria RAM podía valer unos 200 USD a valores de hoy, y cabía en un bolsillo tranquilamente, por lo que el robo de componentes era una seria preocupación.
 

Incluso había dispositivos especiales para bloquear la lectora de diskettes: 

 

Llave Floppy 2
Un floppy lock fuera de la lectora
llave floppy
Un floppy lock colocado

 

 

 

Todo esto parece haber ido desapareciendo lentamente desde mediados de los 90s hasta ser algo muy raro de ver hoy, con excepción quizás de las llaves de los racks de servidores.

 

 

Esto no fue casualidad, sino que se debió principalmente al lanzamiento de Windows 95, que fue el primer sistema operativo de uso hogareño masivo con sistema de múltiples usuarios. Los lectores más veteranos recordarán la pantalla de acceso de Win95, cuya técnica de bypass no era más que apretar la tecla Escape, ya que no era en sí para permitir o denegar el acceso, sino más bien para cargar configuraciones propias de cada usuario. Sin embargo, con el cambio de paradigma que supuso el ver una solicitud de contraseña como primer imagen tras encender una computadora, también surgieron masivamente los programas que permitían limitar el acceso a archivos y carpetas cifrándolos con contraseña. Esto prácticamente reemplazó la llave en las computadoras que hacían un uso real de ellas (Vamos, que la mayoría de los que vivimos en las épocas de estas computadoras en casa, sólo vimos la llave usada como elemento de castigo por nuestros padres, confiscándola para que no pudiéramos jugar). 

 

Pero la historia de las contraseñas para usuarios no comenzó con Windows 95, su historia es mucho mucho más antigua. Unix ya las conocía, los viejos sistemas Multics (en los que se basó Unix) ya las usaban, pero llegaron a ellos de la mano de este señor del que les hablaba al principio: Fernando Corbató (junto con otras muchas creaciones suyas, como la estructura jerárquica de archivos y los vínculos o “links”).

 

El Dr. Corbató nació en España, pero se mudo de niño con su familia a EEUU, donde estudió física en el MIT y se doctoró en el mismo área. Trabajando en física en un instituto de primer nivel a escala global como es el MIT, tenía acceso a las macrocomputadoras IBM 709, dónde pasaba muchas horas remitiendo solicitudes de cálculo que a veces demoraban horas en ser recibidas y procesadas.

Hay que pensar que en esa época la programación se hacía en lápiz y papel, luego se pasaba en limpio en lenguaje máquina en una máquina de escribir y se llevaba impreso a la sala de cómputos, donde había que pedir un turno para sentarse en la terminal de la computadora y transcribir el programa y, en el momento, hacer las correcciones que fueran necesarias y esperar la devolución de la computadora. De esta manera, se perdía mucho tiempo de la computadora cuando el programador tenía que hacer modificaciones y se perdía mucho tiempo del programador cuando la computadora tenía que procesar.

Corbató entendió que esto era un cuello de botella que no sólo demoraba el trabajo de todos los científicos sino que le costaba fortunas al instituto. Consideremos que en esas épocas la hora de cálculo de una IBM 709 rondaba los 4.000 (+/-1000) USD a valores actuales. 

Corbató 1969
Corbató en la época del lanzamiento de Multics (ca. 1969)

Por ello, pensó en algo que llamó “Tiempo compartido” (CTSS en inglés, Compatible Time-Sharing System) y junto con Herbert Teager, modificaron una IBM 7090 (básicamente, una 709 a transistores) para poder cargar un nuevo kernel que pesaba apenas 2.5kb y respondía a 15 comandos, siendo dos de ellos los que nos interesan ahora: Login y Logout. Dos términos desconocidos en informática hasta entonces.

A modo de terminal remoto no conectaron monitores CRT como uno podría esperar hoy en día, sino tres máquinas de escribir eléctricas Friden Flexowriter. Lo que el usuario escribía se registraba y se enviaba al mainframe (la 7090), y la respuesta del proceso literalmente se imprimía en el mismo papel que cumplía las funciones de “pantalla”. 
 

Flexo 1965
Una Flexo de 1965 similar a las utilizadas para el sistema CTSS

El sistema operativo creado por Corbató se llamaba “Supervisor” y su funcionamiento era relativamente sencillo: monitoreaba constantemente las terminales; cuando un nuevo usuario requería su atención, lo atendía inmediatamente. Sino, atendía a los usuarios conectados secuencialmente y a cada uno le dedicaba una “ráfaga” de cómputo considerada “muy breve” en su época: 2 segundos. Si un usuario hacía un pedido muy complejo que no llegaba a resolverse en 2 segundos, la prioridad por atenderlo bajaba, pero al atenderlo, se le concedía algo de tiempo extra.

Esta manera circular de atender a los usuarios le permitía a estos detenerse a analizar la respuesta de la computadora y pensar su siguiente entrada de datos y solicitud de cómputo, y así no se desperdiciaba tiempo de computo de la máquina esperando a que las personas pensaran.

 

Les dejo un video en inglés (click en la foto para ver) de cerca de media hora donde el Dr. explica en sus propias palabras cuál era la situación y cómo funcionaba el sistema que ideó para solucionar el problema:

Documental

¡No me digan que no se parece a Bill Nye!

 

Este sistema creado por Corbató en 1961 lógicamente no alcanzó la masividad y su uso fue exclusivo en laboratorios de universidades con super-computadoras, ya que el concepto de computadora personal aún no existía, pero permeó fuertemente en la cultura popular incluso en su propia época. El poder conectar varias  terminales a una única super-computadora y usarla en lo que parecía simultáneamente parecía algo de ciencia ficción, y tal es así que autores como Isaac Asimov incluyeron en sus cuentos ideas como las las “terminales de cómputo”, una especie de enchufes que estarían en todas las casas del futuro, un servicio que se pagaría igual que el gas, la electricidad o el teléfono, y que permitía a los usuarios conectar una terminal boba (como una máquina de escribir) y hacer uso de una gran capacidad de cómputo provista por una única mega computadora ubicada en una bóveda de máxima seguridad.

Es casi irónico que hoy en día la computación haya evolucionado en la dirección opuesta, como desoyendo los designios de la normalmente profética ciencia ficción: hoy en día, en lugar de un gran procesador funcionando a la mayor frecuencia posible, se ha optado por los múltiples núcleos y el threading para paralelizar lo más posible, y los usuarios no conectan terminales bobas a una gran computadora sino que cuentan con micro-computadoras que llevan consigo a todos lados, como celulares, smart-watches, e-books y demases, e incluso en lugar de tomar capacidad de cómputo de la red, la aportan a través de cosas como granjas de minería de criptomonedas o proyectos como SETI en casa.
 

La IBM 7090 modificada por Teager y programada por Corbató contaba con dos espacios de almacenamiento por cinta magnética, uno donde se almacenaba el sistema operativo y alguna información accesoria y el otro donde se guardaban los programas de los usuarios. Cada uno era de 32Kb.

La universidad también contaba con un banco de memoria para copias de respaldo que contaba con la friolera (para la época) de 18 Mb de almacenamiento. Acceder a esta cinta de gran tamaño era algo lento y engorroso y normalmente era algo que se buscaba evitar. 

 

Mediante la función login, el supervisor asignaba acceso a los usuarios únicamente a ciertos espacios de memoria, por lo que incluso el propio sistema operativo era inaccesible para para los usuarios comunes. Es interesante que este concepto de autenticación por contraseñas, tan innovador para su época, y tan extendido y omnipresente hoy en día, fue renegado por su autor en sus últimas épocas. Consideraba que la sobreabundancia de usuarios y contraseñas de hoy en día era un detrimento para la seguridad y que, considerando la capacidad de las computadoras actuales, había mejores soluciones posibles. ¿Estaba acaso pensando en tokens de autenticación o algún otro sistema de permanencia de identidad? Nunca lo sabremos, pero los invito a dejar sus ideas en los comentarios. 

Cabe destacar que el sistema operativo que creó también permitía a los usuarios dejar mensajes grabados para que otros usuarios los lean cuando se conectaran al sistema, lo cual es algo que quizás podríamos considerar como los inicios del correo electrónico.

 

“Corby”, como lo llamaban sus amigos, también formuló la “Ley de Corbató”, que estipula que la cantidad de líneas de código que puede escribir por hora un programador es constante independientemente del lenguaje utilizado. Esto, que para algunos es debatible y a otros les parece trivial, fue el disparador de la creación de los lenguajes de alto nivel, que permitieron -en una época en la que cada segundo de cómputo y cada hora de programador valía fortunas- acelerar la producción de software enormemente, pasando del lenguaje máquina a lenguajes más naturales como los que usamos hoy en día. 

 

Basta con ver algunos ejemplos de distintos lenguajes para comprender el fuerte impacto que tuvo esto en la evolución de la programación:

 

Un “Hola Mundo” en Código máquina: 

b8    21 0a 00 00   
a3    0c 10 00 06   
b8    6f 72 6c 64   
a3    08 10 00 06   
b8    6f 2c 20 57   
a3    04 10 00 06  
b8    48 65 6c 6c  
a3    00 10 00 06 
b9    00 10 00 06 
ba    10 00 00 00 
bb    01 00 00 00 
b8    04 00 00 00 
cd    80         
b8    01 00 00 00 
cd    80         

Un “Hola Mundo” en ASM: 

section     .text
global      _start
_start:               
    mov     edx,len 
    mov     ecx,msg 
    mov     ebx,1      
    mov     eax,4      
    int     0x80          
    mov     eax,1      
    int     0x80          
section     .data
msg     db 'Hello, world!',0xa                
len     equ $ - msg                      

 

Un “Hola Mundo” en visual basic: 

Module HelloWorld
      Sub Main( )
         System.Console.WriteLine("Hello World")
      End Sub
End Module

 

Un fragmento de un juego de rol en Inform:

"Midsummer Day"

East of the Garden is the Gazebo. Above is the Treehouse. A billiards table is in the Gazebo. On it is a trophy cup. A starting pistol is in the cup. In the Treehouse is a container called a cardboard box.

Test me with "up / x box / d / e / x table / x cup / x pistol / get cup".

 

Un bucle en Lolcode:

HAI
    CAN HAS STDIO?
    I HAS A VAR
    IM IN YR LOOP
        UP VAR!!1
        VISIBLE VAR
        IZ VAR BIGGER THAN 10? KTHXBYE
    IM OUTTA YR LOOP
KTHXBYE

 

Corbató y señora
Fernando Corbató junto a su segunda esposa, Emily. 

En resumen, es indudable el impacto que tuvo este hombre, no solo en la vida de nosotros, los informáticos, sino de todos los usuarios de computadoras, y no son pocos los legados que nos ha dejado el Dr. Fernando José "Corby" Corbató en sus más de 60 años como académico de las ciencias de la computación.

Tuvo una fructífera vida como profesor en el MIT hasta que en Julio de este año, 2019, apenas unos días después de su cumpleaños número 93 murió a causa de complicaciones relacionadas con la diabetes.

Sin embargo, su importancia jamás pasó desapercibida. En 1990, por ejemplo, recibió el premio Alan Turing de la ACM (Asociación de Maquinaria de Computación), uno de los más prestigiosos reconocimientos por aportes a la ciencia informática, "por su trabajo organizando los conceptos y liderando el desarrollo de las computadoras de tiempo y recursos compartidos, a gran escala y para propósito general".

Por eso, de parte de toda la comunidad hacker queremos decirle: Descansa en paz, Corby. Gracias por habernos regalado el password, el email, las carpetas de archivos, los accesos directos, el multiproceso, los lenguajes de alto nivel y tantas otras cosas. ¡Nunca te olvidaremos!

 

No olviden que pueden seguirnos en Facebook y Twitter, y si quieren charlar e intercambiar ideas con otros hacklabbers, está el Foro y Discord. ¡Esperamos verlos allí!

 

 

Acerca del autor

Administrador de sistemas Linux.
Administrador de redes.
Programador en los ratos libres.
Técnico electrónico.

...me gusta desarmar cosas...