En lugar de intentar comprender el código de cada programa, escribí un programa breve para verificar los archivos de datos. En unos minutos había verificado el primer programa y comprobado que recogía correctamente los datos de contabilidad. Ningún problema con el primer programa.
Me costó un poco más descifrar el segundo programa. En una hora había acumulado la cantidad suficiente de códigos provisionales, para demostrar que realmente funcionaba. Se limitaba a sumar los intervalos de tiempo y a multiplicarlos por la tarifa vigente. De modo que el error de setenta y cinco centavos no procedía de este programa.
Y el tercer programa funcionaba a la perfección. Verificaba la lista de usuarios autorizados, localizaba su cuenta en el laboratorio e imprimía la factura. ¿Error de aproximación? Tampoco. Todos los programas controlaban el dinero hasta una centésima parte de un centavo. ¡Curioso! ¿De dónde procedía aquel error de setenta y cinco centavos?
Había pasado un par de horas intentando descifrar un problema superficial y comenzaba a obcecarme. ¡Maldita sea! Me quedaría hasta medianoche si era necesario.
Después de otros tantos programas de verificación, comencé realmente a confiar en la mezcolanza de programas de contabilidad de fabricación casera. Seguían sin cuadrar los saldos, pero los programas, aunque no a prueba de bombas, no perdían un solo centavo. A estas alturas había encontrado las listas de usuarios autorizados y averiguado cómo los programas utilizaban las estructuras de datos, para cargar los gastos en las cuentas de distintos departamentos. A eso de las siete de la tarde, un usuario llamado Hunter me llamó la atención: no disponía de ninguna dirección válida donde cargar sus gastos.
¡Pillado! Hunter había utilizado setenta y cinco centavos de tiempo el mes pasado, pero nadie lo había pagado.
He ahí la causa de nuestra diferencia de saldos. Alguien había metido la pata al introducir un nuevo usuario en nuestro sistema. Un problema superficial causado por un error superficial.
Había llegado el momento de celebrarlo. Cuando escribía este pequeño primer triunfo en las páginas iniciales de mi cuaderno, mi querida Martha pasó por mi despacho y, ya avanzada la noche, decidimos celebrarlo con unos cafés con leche en el café Roma, de Berkeley.
Un verdadero genio habría resuelto el problema en pocos minutos. Para mí era territorio desconocido y no me había resultado fácil abrirme camino en el mismo. Como consuelo, había aprendido algo del sistema de contabilidad y practicado un par de lenguajes obsoletos. Al día siguiente mandé un mensaje electrónico a Dave, señalándole el problema como muestra de mi pericia.
Alrededor del mediodía Dave pasó por mi despacho con un montón de manuales y mencionó, de paso, que no había introducido a ningún usuario llamado Hunter; debe haber sido uno de los otros administradores de sistemas.
—No fui yo.
LEMM
1
—se limitó a responder Wayne.
Casi todas sus frases acababan con algunas siglas, que en este caso significaban «lee el maldito manual».
Pero ya los había leído. Los operadores no estaban autorizados a introducir a ningún nuevo usuario sin una cuenta. En otros centros informáticos bastaba con conectar con una cuenta privilegiada y ordenar al sistema que introdujera a un nuevo usuario. En nuestro caso, puesto que también había que organizar varias entradas de contabilidad, no cabía utilizar aquel atajo. Nuestro sistema era lo suficientemente complejo como para disponer de programas especiales que se ocupaban automáticamente de la administración y coordinación de sistemas.
Me dediqué a formular preguntas y todo el mundo coincidió en que, dada la superioridad del sistema automático, nadie habría introducido manualmente a un nuevo usuario. Y el sistema automático no cometería aquel error.
No lograba averiguar quién era el responsable de aquella metedura de pata. Nadie conocía a Hunter y no había ninguna cuenta prevista para él. De modo que opté por eliminar su nombre del sistema; cuando protestara, lo introduciríamos debidamente en el mismo.
Al día siguiente un enigmático ordenador llamado Dockmaster nos mandó un mensaje electrónico. Su administrador de sistemas alegaba que, durante el fin de semana, alguien había intentado introducirse en su ordenador desde nuestro laboratorio.
Dockmaster podía haber estado situado en cualquier lugar, pero ciertos indicios apuntaban a Maryland. El mensaje electrónico había pasado por una docena de ordenadores y cada uno había dejado su huella.
Dave se había limitado a responder con un comedido: «Lo investigaremos.» Por supuesto. Lo haríamos cuando hubiéramos resuelto todos los demás problemas.
Los ordenadores de nuestro laboratorio están conectados a millares de sistemas mediante una docena de redes. Uno cualquiera de los científicos del laboratorio puede entrar en nuestro ordenador y a continuación establecer contacto con otro ordenador lejano. Una vez conectado, puede introducirse en el ordenador lejano con un nombre de cuenta y una contraseña. En principio, lo único que protege a la red de ordenadores es la contraseña, ya que los nombres de las cuentas son fáciles de averiguar. (¿Cómo se averiguan? Basta consultar el listín telefónico; la mayoría de la gente utiliza su propio nombre en los ordenadores.)
El mensaje electrónico de Dockmaster era una curiosidad y Dave se lo pasó a Wayne, a quien preguntó: «¿Quién es Dockmaster?» Wayne me lo transmitió a mí, con la conjetura: «Probablemente algún banco.»
Por fin Wayne dejó el asunto en mis manos. Sospechaba que Dockmaster debía de ser algún astillero de la Armada. Era un caso sin importancia, pero merecía dedicarle unos minutos.
El mensaje daba la fecha y hora en que alguien desde nuestro ordenador Unix había intentado introducirse en el ordenador de Dockmaster. Puesto que acababa de hurgar en los sistemas de contabilidad, repasé los ficheros en busca de alguna grabación correspondiente a las 08:46 del sábado por la mañana. De nuevo los sistemas de contabilidad no coincidían. El fichero de contabilidad del Unix mostraba la presencia de un usuario, Sventek, que se había introducido a las 08:25, había permanecido media hora sin hacer nada y entonces había desconectado. Ninguna actividad grabada durante dicho período. Nuestros programas caseros también registraban la actividad de Sventek, pero indicaban que había utilizado la red desde las 08:31 hasta las 09:01 de la mañana.
¡Maldita sea, otro problema de contabilidad! Las horas no coincidían. Una cuenta reflejaba actividad, cuando según la otra todo estaba tranquilo.
Parecía haber otras cosas más urgentes y abandoné el problema. Después de perder una tarde intentando aclarar el error de algún operador, no estaba dispuesto a examinar de nuevo el sistema de contabilidad.
Durante el almuerzo comenté a Dave que Sventek era el único conectado al sistema, cuando el presunto intento de penetración en Dockmaster había tenido lugar.
—¿Joe Sventek? —dijo, mirándome fijamente—. Está en Cambridge. Cambridge, Inglaterra. ¿Por qué habrá regresado?
Resultó que Joe Sventek había sido el gran maestro del Unix en el laboratorio, un genio del software que había elaborado una docena de importantes programas a lo largo de la última década. Hacía un año que se había marchado a Inglaterra, dejando tras de sí una gloriosa reputación entre la comunidad informática de California.
Dave no podía creer que Joe hubiera regresado, ya que ninguno de sus amigos había tenido noticias suyas.
—Debe de haber entrado en nuestro ordenador mediante alguna red —dijo.
—¿Entonces crees que Joe es responsable de este problema? —le pregunté.
—De ningún modo —respondió Dave—. Joe es un hacker de la vieja escuela. Es un programador experto, inteligente y rápido. No uno de esos gamberros que han mancillado el término «hacker». En todo caso, Sventek no intentaría introducirse en algún ordenador de Maryland. Y si lo hiciera, lo lograría sin dejar ninguna huella.
Curioso: hace un año que Joe Sventek está en Inglaterra, pero aparece el sábado a primera hora de la mañana, intenta introducirse en un ordenador de Maryland, desconecta y deja una cuenta pendiente en el sistema de contabilidad. En el pasillo se lo comento a Wayne, que tiene entendido que Joe está de vacaciones en Inglaterra, oculto en algún lugar reservado y alejado de los ordenadores.
—Olvida el mensaje de Dockmaster. Sventek tiene prevista una visita a Berkeley
EUFMP
2
y nos lo aclarará.
¿
EUFMP
? En un futuro muy próximo. Ésta era la forma de Wayne de decir: «No sé exactamente cuándo.»
Lo que me preocupaba no era Sventek, sino las cuentas que no cuadraban. ¿Por qué los dos sistemas de contabilidad reflejaban tiempos distintos? ¿Y por qué en un fichero se había grabado cierta actividad, sin que apareciera en el otro?
Otra tarde inmerso en el sistema de contabilidad. Descubrí que la diferencia de cinco minutos procedía de las variaciones de los relojes de nuestros ordenadores a lo largo de los meses. El reloj de uno de nuestros ordenadores retrasaba varios segundos cada día.
Sin embargo, todas las actividades de Sventek debían haber coincidido en ambos archivos. ¿Tendría esto alguna relación con el problema de contabilidad de la semana anterior? ¿Habría cometido algún error manipulando los programas? ¿O había otra explicación?
Pasé la tarde en una conferencia, impresionantemente aburrida, sobre la estructura de las galaxias. No sólo era eminentemente monótona la voz del ilustre catedrático, sino que cubrió la pizarra con un laberinto de ecuaciones matemáticas.
Para no quedarme dormido me dediqué a pensar en los problemas con que me había tropezado. Alguien había metido la pata al abrir una nueva cuenta. Al cabo de una semana Sventek conecta con nuestro ordenador e intenta penetrar en algún ordenador de Maryland. EL archivo de contabilidad de dicho suceso parece confuso. Sventek está en algún lugar inaccesible. Algo no encaja. Da la impresión de que alguien elude el programa de contabilidad.
¿Qué sería preciso, me preguntaba, para utilizar gratis nuestros ordenadores? ¿Habría descubierto alguien la forma de eludir nuestro sistema de contabilidad?
Los grandes ordenadores tienen dos tipos de software: los programas del usuario y el software de los sistemas. Los programas que uno escribe o introduce uno mismo son los programas del usuario, como por ejemplo mis rutinas astronómicas, que analizan la atmósfera de un planeta.
Por sí solos, los programas del usuario no pueden hacer gran cosa. No se comunican directamente con el ordenador, sino que lo hacen mediante el sistema operativo. Cuando mi programa de astronomía quiere escribir algo, la palabra no aparece directamente en la pantalla, sino que la pasa al sistema operativo, que es el que da las instrucciones necesarias al ordenador para que la escriba.
El sistema operativo, junto con los editores, los archivos y los intérpretes de lenguajes, constituyen el software de los sistemas. Uno no escribe dichos programas, sino que ya vienen incorporados en el ordenador y, una vez creados, nadie debería interferir en ellos sin autorización.
El programa de contabilidad pertenece al software de los sistemas. Para modificarlo o eludirlo, uno debe ser administrador del sistema o haber adquirido una posición privilegiada en el sistema operativo.
Pero ¿cómo se adquiere dicha posición privilegiada? La forma más evidente consiste en introducirse en nuestro ordenador con la contraseña del usuario root. No habíamos cambiado la contraseña en varios meses, pero nadie la habría divulgado. Y ningún desconocido adivinaría nuestra contraseña secreta
«wyvern»
. ¿A quién se le ocurriría pensar en un dragón alado mitológico, intentando adivinar nuestra clave?
Pero aunque llegaras a ser administrador del sistema, no jugarías con los programas de contabilidad; son demasiado enigmáticos y no están lo suficientemente bien documentados. Además, había comprobado que funcionaban.
Nuestros programas de fabricación casera funcionaban debidamente. Alguien había introducido una nueva cuenta sin utilizarlos. Tal vez no sabía que existieran. Si alguien se hubiera introducido desde el exterior, no sería consciente de nuestras peculiaridades locales. Nuestros administradores de sistema y operadores lo sabían. Joe Sventek, aunque estuviera en Inglaterra, evidentemente también lo sabía.
Pero ¿y si se trataba de alguien totalmente ajeno, de un hacker?
La palabra
«hacker»
tiene dos significados distintos. Las personas a las que yo conocía que se autodenominaban hackers eran genios del software, capaces de salirse de situaciones difíciles gracias a su creativa programación. Conocían todos los recovecos del sistema operativo. No eran como los insípidos ingenieros de programación que trabajaban cuarenta horas a la semana, sino programadores creativos incapaces de abandonar el ordenador hasta que la máquina estuviera satisfecha. Un hacker se identifica con el ordenador y lo conoce como si de un amigo se tratara.
—Cliff no es un gran astrónomo —solían decir de mí los demás astrónomos—. ¡Pero es un verdadero hacker del ordenador!
(Evidentemente los informáticos tenían otro punto de vista: para ellos no era un gran programador, pero sí un magnífico astrónomo. En el mejor de los casos, en la universidad me habían enseñado a engañar a ambos bandos.)
Sin embargo, en el lenguaje común, un hacker es alguien que irrumpe en ordenadores ajenos. En 1982, después de que un grupo de estudiantes utilizara terminales, modems y líneas telefónicas a larga distancia para irrumpir clandestinamente en los ordenadores de Los Álamos y del Columbia Medical Center, de pronto los informáticos se dieron cuenta de la vulnerabilidad de nuestros sistemas conectados a la red.
¿Cuál es el término que describe a alguien que irrumpe en los ordenadores? A los antiguos genios del software los enorgullece que los denominen hackers y los ofende que los burladores de la ley se hayan apropiado de dicho término. En las redes informáticas, los calificativos que los expertos utilizan para esos golfos de nuestra era electrónica son los de
«crackers»
o
«ciberpunks»
. En Holanda utilizan el término
«computervredebrcuk»
, que significa literalmente trastornar la paz del ordenador. En lo que a mí se refiere, la idea de que algún gamberro irrumpa en mi ordenador me hace pensar en términos como
«asqueroso»
,
«depravado»
y
«cerdo»
.