La Regla de “Seis” (Parte 2)

La Ayuda Llegó Desde Praga Hay que decir que los dos núcleos de antivirus (llamados “motores”) estaban operando en un paquete bajo el capó de la versión 4.0. La comprobación

La Ayuda Llegó Desde Praga

Hay que decir que los dos núcleos de antivirus (llamados “motores”) estaban operando en un paquete bajo el capó de la versión 4.0. La comprobación de los archivos era realizado por el viejo, aunque muy capaz (y licenciado masivamente por compañías internacionales como G-Data y F-Secure) motor V 3.0 desarrollado en el año 1996. La nueva tarea de energizar la filtración del trafico web fue sugerida durante una tormenta de ideas que tuvo lugar en una sesión en Praga, en 1998.

El nuevo motor terminó siendo apodado “Praga”, a pesar de que en realidad fue desarrollado en Moscú por Andrey Doukhvalv, quien no había asistido a la tormenta de ideas que tuvo lugar en la capital de la República Checa. Las ideas clave, sin embargo, se originaron en esa ciudad y Andrey se unió a la compañía para tomar esas ideas y llevarlas a la práctica.

Praga tenía la intención de convertirse en un mero núcleo antivirus, pero las metas que se le habían puesto adelante eran tan ambiciosas, que la flexibilidad y el ingenio que tenía este nuevo motor era suficiente como para soportar sistemas más complejos. La pregunta radicaba en si era posible cargar todos los recursos del producto sobre las espaldas de Praga.

Kaspersky recuerda esos momentos:

“Una vez le pregunté a Victor Matyushenko cómo estaba Praga sobrellevando el producto y él me dijo ‘¡Sólido como una roca!’. Ese fue un punto de inflexión. Luego entré en la habitación donde Graf [De-Monderik] y Petrovich [Doukhvalov] estaban trabajando y les hice la pregunta: ¿Por qué no basamos todo el producto sobre Praga? Graf dijo algo como: ‘Es imposible, Praga no está pensado para eso’, pero Petrovich dudó. A la mañana siguiente Petrovich vino a nuestra oficina con una pequeña pila de papeles y me dijo: ‘sabes… yo programé algunos casos de uso en Praga. Graf lo miró y le dijo: ‘tenemos que hablar’. Luego de discutirlo por unos minutos, ambos se acercaron a mí y me dijeron que valía la pena intentarlo”.

La puesta a punto comenzó con un equipo conciso que escribió las primeras líneas del código que luego se convertiría en el “Seis”.

La puesta a punto comenzó con un equipo conciso que escribió las primeras líneas del código que luego se convertiría en el “Seis”.

“Empezamos con la búsqueda de un personal creativo que pudiera contribuir a acrecentar nuestro equipo”, recuerda De-Monderik. “Contratamos a Pavel Mezhuev, un codificador novato, aunque brillante. También estaba Mike Pavlyuschik, con quien veníamos trabajando desde hacía tiempo. Él fue capaz de pensar “por fuera de la caja”. Yo creo que Pavlyuschik era uno de los creadores más talentosos que había”.

Luego de dos meses de suelo abierto y codificación experimental, llegamos a la conclusión de que el proyecto podía llegar a convertirse en una solución comercial. Ahora bien, necesitábamos un Manager del proyecto.

“¿Recuerdas a Nikolay Grebennikov de la oficina de al lado? Lee mucho, es joven y es nuevo en la compañía. ¡Contratémoslo!”, dijo Andrey Doukhvalov, mientras recordaba la conversación que tuvo con De-Monderik. Un tiempo después, Andrey Sobko, un ingeniero de software, se uniría al equipo.

¿Qué es “Praga”?

Esta sección es de interés para ingenieros de software. El resto de nuestra audiencia puede omitirla libremente.

Durante los primeros días del año 1990, cuando la industria antivirus recién comenzaba a emerger, algunos virus eran indetectables por algunas firmas de antivirus. Un ejemplo de esto era un virus polimorfo que encriptaba su código de manera diferente cada vez que infectaba. A medida que los softwares se volvieron cada vez más complejos, en un mundo en donde la penetración de Internet se disparó y los codificadores de malware se alejaron cada vez más de la “diversión” para comenzar a ofrecer sus servicios en el mercado, el malware se convirtió en una amenaza cada vez más sofisticada. Incluso con un motor que incorporaba capacidades adicionales sobre el algoritmo de detección basado en la firma, como lo era Kaspersky, si los desarrolladores se encontraban con un malware que utilizaba nuevos principios para su infección, éstos se veían obligados a actualizar constantemente los antivirus en forma integral y no sólo las bases de datos. Poco a poco, se redujo considerablemente el tiempo de reacción ante los nuevos virus y el éxito que obtuvo Kaspersky Lab por ser el primer antivirus de la industria en curar el infame virus CIH (Chernobyl), demostró que reducir el tiempo de reacción realmente hizo valer la pena todo el esfuerzo.

Con esto en mente, en 1998 Kaspersky sugirió a sus colegas que había llegado el momento de elaborar un nuevo motor anti-virus. ¿Qué se podía hacer?

“La compañía estaba corta de dinero”, dijo Kaspersky. “Tuvimos que encontrar el lugar más barato que estuviera cerca de Moscú. Debíamos abandonar la ciudad y reflexionar sobre el problema, lejos del ruido y el apuro. El lugar tenía que estar completamente desconectado. En aquél entonces no había Wi-Fi. El lugar más barato resultó ser una capital europea: Praga”.

Luego de pensar en grupo la nueva versión del motor antivirus, el equipo de Kaspersky Lab llegó a la conclusión de que el enfoque orientado al objeto era la mejor solución para la capa del motor, es decir, que cada uno de los archivos analizados debían ser diseccionados en función de su estructura y la objetos en su interior debían de ser detectados, analizados y comprobados. La gestión de los objetos, en su totalidad, tenía que ser realizada durante el tiempo de ejecución.

Se analizaron todos los entornos orientados a objetos disponibles y todos fueron rechazados porque eran poco flexibles, utilizaban mucha memoria o eran muy lentos. Durante varias reflexiones surgió una idea: desarrollar un nuevo entorno, capaz de incluir funcionalidades para la gestión de la memoria y otros procedimientos, para que el antivirus pudiera diseccionar y analizar cualquier potencial código malicioso de manera rápida y eficaz.

La idea general fue planteada en Praga por De-Monderik y Andrey Krykov, y recibió el apoyo de las primeras líneas de código proporcionados por Doukhvalov y Kryukov.

Luego, durante más de un año, fue principalmente Doukhvalov el que continuó trabajando en Praga – esta fue la razón por la cual Kaspersky Lab decidió contratarlo, después de todo, contar con la experiencia de un arquitecto como Dukvalov aseguraba que Praga fuera flexible, escalable y fácil de implementar en el producto sin limitaciones arquitectónicas. En definitiva, el objetivo era construir una solución multiplataforma.

La jerarquía de los objeto era un poco difícil de depurar, pero un conveniente sistema de intercambio de mensajes entre objetos y una interfaz de programación minimalista hicieron a Praga una arquitectura integrada fácil de utilizar.

“El motor fue pensado para el enfoque de componentes”, señala con orgullo Doukhvalov. “Eso quiere decir que el componente podía ser adaptado a un programa existente. El sistema era muy abierto, brindaba la oportunidad de agregar elementos y cambiar los patrones de conducta “.

Una arquitectura basada en los componentes, compacta y sin muchos recursos, por común acuerdo, fue la base para incluir una serie de tecnologías radicalmente nuevas en KAV 6.0. Éstas se llevaron a cabo fácilmente. Cuando Praga fue amoldado para servir como base de todo el producto, y no sólo como un motor antivirus, Pavel Mezhuev contribuyó significativamente en el ajuste fino de la arquitectura:

“Implementamos otra solución para la arquitectura, utilizando un modelo con lógica de negocio e interfaz separadas. Además, Doukhvalov y Mezhuev crearon un administrador de tareas capaz de controlar cada proceso del producto, y también la reciprocidad de los procesos era muy sencilla”, nos explica Nikolay Grebennikov, el gestor de proyecto de entonces para KAV 6.0.

Consejos