domingo, 26 de septiembre de 2010

Cómo ser un científico de datos (en seguridad informática)?

Si usted ha vivido lo suficiente en este planeta, difícilmente no se ha enfrentado a la siguiente pregunta: qué quieres ser cuando seas grande? Esta pregunta siempre abre una caja de Pandora que en muchos casos nunca se cierra. Yo soy un ejemplo. Aunque hace varios años tome la decisión de ser un profesional en seguridad informática, sigo definiendo que significa esto ya que al menos para mí, es una tarea continua (como el cliché que muchos pregonan en seguridad: "seguridad no es una meta, es un proceso"). Así que he decidido hablar sobre un tema que impacta en gran forma la respuesta a la definición del profesional en seguridad informática, de cara al crecimiento exponencial de los datos a los que tenemos acceso hoy en día y por los próximos años.

La propuesta es sencilla: si usted trabaja en seguridad informática, usted debe ser capaz de manejar/analizar grandes cantidades de datos para hacer apropiadamente su trabajo. Esto significa que debe contar con las herramientas (conocimientos, habilidades) necesarias para lograrlo; de eso se trata este artículo. Cuales son esas herramientas? O usando un término más elegante: cómo me convierto en un científico de datos (en seguridad informática)? Pude haber utilizado el término analista pero científico suena más importante. :)

Científico de datos es un título que he encontrado insistentemente y cada vez con mayor frecuencia. Este profesional utiliza principalmente métodos estadísticos para analizar grandes cantidades de datos y así encontrar patrones de comportamiento, tendencias y/o respuestas, incluso en tiempo real en algunos casos. No es sorpresa entonces que los estadísticos protesten que el término científico de datos está de más, ya que ellos han estado haciendo ese mismo trabajo por siglos. Y aunque tienen razón en gran parte y el término puede ser considerado un oxímoron, es válido en el mundo actual.

En los últimos años, el análisis de datos se ha vuelto mucho más relevante debido a la revolución computacional (poder computacional disponible en cualquier lugar, cantidad de datos recolectados y ancho de banda para transmitirlos) que hemos vivido en las últimas décadas y lo impactante que está ha sido en todas las facetas de nuestras vidas. Ya nadie se sorprende de ver televisión o hacer pagos usando el Internet, encontrar un resumen de nuestra vida en un sitio web o de enterarse que hizo el hijo de mis amigos por medio de mi teléfono celular y Facebook. Realizar muchas de nuestras actividades diarias en el ciberespacio, por medio de computadoras, también ha tenido el impacto directo e indirecto de crear grandes cantidades de metadatos, que ahora necesitan ser estudiados.

Las empresas se han dado cuenta de la posibilidad de trabajar con grandes cantidades de datos y algunas incluso tienen años hablando del tema. IBM es un buen ejemplo de esto, observen el siguiente video:



Microsoft Research publicó en octubre pasado el libro titulado "The Fourth Paradigm: Data-Intensive Scientific Discovery". El libro es un tributo al científico Jim Gray, quien en 2007 compartió su visión del cuarto paradigma en investigación científica, en referencia al mundo descrito arriba. El libro está disponible de forma gratuita por lo que es una excelente oportunidad para conocer las distintas oportunidades que actualmente aparecen en las áreas de ciencias naturales, medicina, infraestructura científica y comunicaciones.

Regresando a la seguridad informática, tampoco escapamos de la necesidad de analizar grandes cantidades de datos. Solamente ver el aumento de velocidad en el enlace de conexión al Internet que poseen nuestras organizaciones para estar de acuerdo. Hace 10 años atrás nadie hablaba de conexiones de 10Mbps, algo mucho más común hoy en día. Cómo se adaptan, por ejemplo, los sistemas de detección de intrusos para analizar el tráfico a esa velocidad? En el área de investigación en seguridad informática también puedo mencionar dos proyectos que me parecen muy apropiados, ambos provenientes del Grupo de Investigaciones en Seguridad Informática de la Universidad de California, San Diego. El primero, Como Detectar URLs Maliciosos, muestra como utilizar algoritmos de lenguaje de máquinas y millones de datos analizados en tiempo real, para determinar si un enlace web (como los que encontramos en las páginas web o en los mensajes de correo electrónico) es malicioso y antes que el usuario haga utilice el enlace. El segundo proyecto lo cubrimos brevemente en otra entrada de este blog, por lo que recomendamos su lectura.

Entonces, cuáles son las áreas que debe conocer un científico de datos, incluyendo para seguridad informática? Sin incluir las obvias (redes, sistemas distribuidos y seguridad) que dan experticia sobre las peculiaridades del problema, hay tres temas importantes:
  1. Estadística: es la base, definiendo la recolección, organización e interpretación de los datos. En otras palabras, es el oxígeno. Sin esta ciencia, no hay vida (para analizar datos).
  2. Lenguaje de Máquinas: diseño y desarrollo de algoritmos para modificar el comportamiento de las computadoras, en base al análisis de datos. Por esta última parte de la definición es que un gran número de algoritmos de este campo utilizan técnicas estadísticas. Lenguaje de máquinas es un área muy interesante y con mucho futuro.
  3. Álgebra Lineal: Trata sobre el estudio de vectores, matrices y campos vectoriales. Uno de sus beneficios es que permite el analisis en paralelo de los datos, lo que ayuda al manejar grandes cantidades de datos. Ademas la arquitectura de computadoras también ya permite este tipo de análisis/cálculos.
Esta lista proviene de la perspectiva de un ingeniero en computación (o ciencias computacionales), aplica a cualquier tema de estudio (no sólo seguridad) y no significa que corresponde directamente a los cursos que hay que tomar. La respuesta podría ser distinta si se le pregunta a un matemático o estadístico. Además, es importante no confundir los requisitos de un analista de datos con los de un administrador de base de datos. Aunque ambas áreas tienen tareas o temas en común, la administración de base de datos posee una definición mucho más limitada y puede ser considerado como un requisito (no indispensable) del analista de datos.

Hace unos años atrás presenté un póster sobre mi tema de investigación, en una conferencia de seguridad informática y como estudiante de ingeniería en computación. A lado mío había un estudiante del departamento de estadística, también presentando un póster. Luego de conversar, concluí que su tema tenía un matiz demasiado teórico y un poco lejos de la realidad vivida en seguridad informática. Pero su propuesta también permitía analizar más datos y más rápido. Y desde entonces me he preguntado (nuevamente) que tengo que hacer para mejorar como profesional en seguridad informática.

domingo, 5 de septiembre de 2010

Implementación del DNSSEC y algunas expectativas falsas sobre el PKI

El 15 de julio pasado se llevó a cabo la ceremonia para implementar las extensiones de seguridad al protocolo DNS, conocidas como DNSSEC, en los servidores . (punto) del Internet. DNSSEC utiliza una infraestructura de llave pública (PKI) para su implementación y operación. El impacto y beneficio de DNSSEC es mundial, lo que también demuestra el valor que posee la tecnología PKI. La razón por la que menciono el rol de esta tecnología es que como profesional de la seguridad informática he participado en proyectos que han utilizado PKIs y observado al mismo tiempo como se ha mal ganado una reputación negativa en el camino. La implementación de DNSSEC es evidencia de como PKI puede ser una excelente solución, siempre que se haya identificado apropiadamente el problema para el cual funcionará.

DNSSEC es un conjunto de especificaciones que ayudan a mejorar la seguridad del protocolo DNS, utilizado para traducir los nombres que escribimos en nuestros navegadores web a las direcciones utilizadas por las computadoras (por ejemplo, www.utp.ac.pa debe ser traducido a 168.77.99.19 para que un navegador web visite el sitio de la Universidad Tecnológica de Panamá o UTP). Esta traducción ocurre luego que el navegador hace la consulta a otros servidores de DNS. El problema es que esta consulta se hace sin ser autenticada, lo que podría resultar en la falsificación de resultados y la eventual visita del navegador a un sitio equivocado (siguiendo el mismo ejemplo, visitar un sitio falso en lugar de la UTP. Imagínese lo que esto significaría para los estudiantes que van a pagar su matrícula en la UTP y terminan enviando el dinero a un sitio falso). Aquí es donde DNSSEC viene al rescate. DNSSEC permite autenticar la fuente de las traducciones de nombres a direcciones (y viceversa) antes de visitar cualquier sitio. Si una fuente no es legítima, de acuerdo al PKI utilizado por DNSSEC, se previene que el navegador visite el sitio malicioso (o no autenticado).

La tecnología PKI ha sufrido de una mal ganada fama durante más de una década, al punto que varias personas cuestionan su utilidad. En lo personal creo que la implementación de DNSSEC es un excelente ejemplo de porque el PKI es un valioso recurso para mejorar la seguridad de los sistemas informáticos, cuando es bien implementado y se tiene una clara imagen del problema a resolver (y por ende del rol del PKI).

La mala fama de la tecnología PKI proviene principalmente de la época de la revolución del .COM. En aquellos tiempos se pensaba que el PKI (o los certificados digitales generados por estos) era todo lo que se necesitaba para garantizar la seguridad de los sitios web. Otra razón de la mala fama es que se pensó que los PKI podían resolver todos los problemas (algo parecido al concepto de "un sólo tamaño para todos" o "one size fits all").

Al reventar la burbuja del .COM también reventó la confianza que se tenía en la tecnología PKI. Realmente no había mucho que se pudiera hacer, excepto darle tiempo al tiempo, ante las altísimas expectativas que habían por la revolución del .COM y consecuentemente por la tecnología PKI. Por otro lado, la idea de utilizar el PKI como una solución"one size fits all" todavía persiste, aunque no tan insistente como hace algunos años. Hace casi una década atrás, existieron leyes sobre el tema en países como Panama y Colombia, que decretaban instituciones a nivel nacional para manejar de forma exclusiva el tema de los certificados digitales (y por ende, de los PKIs). Hoy en ambos países ya se han derogado estas leyes, pero en algunos casos todavía persiste la idea de implementar PKIs nacionales utilizando mecanismos legales inferiores.

Entre 2003 y 2004, tuve la oportunidad de participar en la implementación del primer PKI en la Autoridad del Canal de Panamá (ACP), en el proyecto de recolección de datos para tránsito de naves. El PKI implementado fue diseñado para suplir necesidades específicas de este proyecto, firmar documentos electrónicos y establecer una red de confianza entre todos los participantes del sistema de recolección de datos. Aunque su diseño también incluyó su posible rol como autoridad certificadora raíz para otros proyectos, se mantuvo el diseño e implementación original. Luego de más de seis años, el PKI ha cumplido con su rol inicial y es para mi una muestra del uso de la tecnología para resolver apropiadamente un problema para el cual estaba diseñado y respondiendo a una institución (bajo la misma administración, facilitando su implementación).

Aunque en una ceremonia mucho más modesta que la realizada para la implementación de DNSSEC, la generación de la llave para proteger el servidor raíz fue realizada por el personal de Seguridad Informática de la ACP (Juan Chong, Eduardo Thomas y yo), el consultor del proyecto Tan Chee Young, y los ingenieros Francisco Loaiza y Edwin Reina (director y sub-director del Departamento de Informatica en aquel momento). Abajos unas fotos del momento (histórico?):

Figura 1. Generación de la llave privada para el servidor raíz del PKI utilizado en ACP, el 15 de enero de 2004. De izquierda a derecha: el autor, Francisco Loaiza, Edwin Reina, Juan Chong, Tan Chee Young y Eduardo Thomas.

Figura 2. Entrega de los "tokens" con parte de la llave privada del servidor raíz, entregadas al director
y sub-director de informática (pero almacenadas en un lugar seguro y secreto :)

El proyecto DNSSEC apenas ha comenzado y junto al PKI utilizado no están libre de dificultades, al igual que el PKI de la ACP. Pero ambos casos (cada uno en su justa dimensión) permiten demostrar claramente los beneficios que ofrece la tecnología PKI.

Hay mucha más información sobre el tema de seguridad en DNS y DNSSEC. Si deseas conocer sobre ataques de seguridad a los protocolos DNS, estos son conocidos como "DNS cache poisoning". Detalles sobre la implementación de DNSSEC y el PKI correspondiente están disponibles en: (1) registro completo (con videos) del proceso de firma de los servidores raiz, (2) arquitectura utilizada en DNSSEC para la generación y protección de llaves criptográficas, (3) compendio de documentos sobre el tema, (4) como participar en el proyecto y (5) el rol en el proyecto DNSSEC del Registro de Direcciones de Internet para América Latina y el Caribe, LACNIC. La antigua y actual leyes sobre PKIs de la República de Panamá están disponibles aquí: Ley 43 de 31 de julio de 2001 y Ley 51 del 22 de julio de 2008. Más información sobre el esfuerzo del Gobierno de Panamá de promover el uso de PKIs y certificados digitales está disponible en el sitio de la Dirección de Comercio Electrónico del Ministerio de Comercio e Industrias.

domingo, 15 de agosto de 2010

Cinco razones de por que asistir a Usenix Security

La semana pasada asistí a la 19ma versión de la conferencia USENIX Security. En la misma se presentaron 30 documentos de investigación (papers), se ofrecieron charlas de especialistas de la industria sobre seguridad y permitió que sus asistentes intercambiaran opiniones y comentarios sobre los problemas más actuales en seguridad informática. También una que otra oportunidad para disfrutar de una buena cerveza... :)


En mi opinión, esta es una de las mejores conferencias de seguridad informática que presenta el estado de arte en varios de los temas más actuales de seguridad informática, desde el punto de vista de un investigador y de la industria. En otras palabras, la conferencia está orientada a investigación aplicada. Además, la conferencia posee dos pistas simultáneas (double track). En una de las pistas se presentan los 30 papers que pasaron exitosamente el proceso de evaluación por terceros (peer review), mientras la otra pista contiene exclusivamente charlas de especialistas de la industria en seguridad informática. Esta última incluyó este año a expertos en seguridad de Microsoft (comparando la seguridad de Unix con Windows), Adobe (seguridad en Flash) , Google (seguridad de ChromeOS) y Mozilla (seguridad en Firefox). Durante mi asistencia a la conferencia, sentí que debía aprovechar cada minuto de la misma debido a la gran cantidad de temas interesantes y bien presentados, así como a la excelente oportunidad de conversar con expertos y colegas.

He aquí cinco razones por las que vale la pena asistir a la conferencia Usenix Security:
  1. Oportunidad de conocer trabajos de investigación con potencial para convertirse en productos de ingeniería. UsenixSec es sobre investigación aplicada por lo que la validez de una idea e investigación depende de su aplicación en la industria. En la conferencia, expertos provenientes de industria y academia dieron su evaluación sobre el trabajo presentado e incluso realizaron comparaciones con otros trabajos/productos similares.
  2. Si eres estudiante o profesor de primer año, oportunidad de conseguir fondos para asistir. Usenix ofrece becas para asistir a sus eventos, incluyendo a UsenixSec. El proceso para aplicar es fácil y se puede realizar en línea. Yo llené toda la información en cuestión de días (ya que debes hacer un ensayo, así que me tomé el tiempo para revisarlo y corregirlo). La beca que me otorgaron cubrió el 70% de mis gastos.
  3. Participar en pista de charlas de la industria. Escuchar a los especialistas que están decidiendo e implementando los mecanismos de seguridad en los productos utilizados hasta por cientos de millones de personas, no tiene precio. En la conferencia de este año habló Crispin Cowan sobre los avances en seguridad de Unix y Windows en los últimos 10 años. Cowan es una de las pocas personas, en mi opinión, que puede hacer una comparación objetiva ya que ha desarrollado varios programas de seguridad para Unix para luego ingresar a Microsoft en 2008.
  4. Oportunidad para conversar con verdaderos expertos de seguridad que asisten anualmente. Este año asistieron expertos como Steven Bellovin, Bill Cheswick, Simson Garfinkel, Farnam Jahanian, Chris Kruegel, Wenke Lee, Peter Neumann, Niels Provos, Avi Rubin, Chris Schuba y Robin Sommer. En cada una de las actividades sociales de la conferencia (breaks, sesiones de poster, cena, etc.) se tiene la oportunidad de conversar con ellos y debo añadir que la gran mayoría siempre está muy dispuesto a conversar. Por ejemplo, hablé con Bellovin sobre la mal ganada fama de los PKI (algo de lo que comentaré después aquí) y con Sommer sobre el futuro del sistema de detección de intrusos Bro. Las opiniones ofrecidas por cada uno, demuestran el conocimiento profundo que tienen en seguridad informática.
  5. Oportunidad para conocer otros colegas de la seguridad informática y darte a conocer. Mientras se es estudiante de investigación (MSc y PhD), resulta muy interesante y divertido conversar y convivir con otras personas que están pasando por la misma experiencia y tienen intereses similares. Esta podría incluso ser la razón más importante por la que un estudiante debe asistir a conferencias como Usenix Security. Las primeras cuatro razones sólo mejoran la experiencia exponencialmente... :)
La lista no es exclusiva y existen razones adicionales que uno podría también mencionar. Por ejemplo, conocer la ciudad de la conferencia y participar en los workshops que ocurren antes y después de la conferencia. Este año el evento fue en Washington, DC, EEUU, una ciudad con un sistema de metro muy fácil y conveniente de utilizar. Una de las estaciones del metro estaba a lado del hotel de la conferencia. Además, Washington posee un sin numero de museos y lugares a visitar, la mayoría de los cuales son gratuitos. Por otro lado, se realizaron siete workshops en Usenix Security. Incluían temas como voto electrónico, experimentación en seguridad y tecnologias ofensivas. En varios de los workshops, los estudiantes podían también aplicar a becas que cubren parcialmente los costos.

Si no estás convencido del potencial y ventajas que ofrece Usenix Security, es porque no trabajas en seguridad o yo hice un mal trabajo en vender la conferencia. Es una de las mejores conferencias de seguridad a las que he asistido. De seguro la mantendré en mi radar para no perder la oportunidad de asistir en próximos años.

martes, 3 de agosto de 2010

Cómo evaluar/medir las vulnerabilidades y a cuáles debo prestarles atención primero?

Ningún software está libre de fallas o vulnerabilidades de seguridad, es una realidad de la que nadie que administre computadoras se escapa. Recientemente se publicó el documento científico"Beyond Heuristics: Learning to Classify Vulnerabilities and Predict Exploits" en la conferencia KDD 2010 y cuyo autor principal es Mehran Bozorgi. El documento presenta el uso de una técnica de aprendizaje de máquinas llamada Linear SVM para determinar la posibilidad que una vulnerabilidad de seguridad sea implementada (lo que se conoce como crear un exploit). Esta técnica busca ayudar a los administradores de sistemas, quienes tienen que decidir a cuales vulnerabilidades prestarles atención primero debido a la gran cantidad de anuncios que aparecen a diario sobre fallas de seguridad. En los últimos 8 años se han publicado en promedio más de 140 vulnerabilidades por semana. Aun cuando no todas aplican a un sistema informático en particular, el número de publicaciones que debe revisar un administrador de sistema sigue siendo alto debido a la naturaleza heterogénea del sistema (está compuesto de distintos programas, cada uno con sus propias vulnerabilidades).

El documento apunta a una pregunta que ataca a todo profesional de seguridad informática: cuán importante es la experiencia para resolver problemas de seguridad, especialmente en esta área que carece de principios de diseño y modelos matemáticos robustos y que demuestra estar en sus primeras fases de desarrollo? El área de aprendizaje de máquinas por el contrario se basa principalmente en realizar análisis estadístico sobre conjuntos de datos (datasets) que permitan dar respuestas, sin necesidad de depender en la opinión de "expertos" (aunque también existen métodos estadísticos que aprovechan esta información). Los resultados presentados por Bozorgi y sus compañeros son promisorios, comparando su técnica con un método heurístico y popular en la comunidad de seguridad: el métrico CVSS.

En el año 2004, como miembro del equipo de seguridad informática de la Autoridad del Canal de Panama (ACP), nos enfrentamos al tema de como manejar la creciente ola de reportes de vulnerabilidades que recibíamos semanalmente. Nuestra solución fue completamente heurística, basándose en un sistema de puntaje similar al CVSS (antes de que ellos hicieran lo mismo :). Aunque no tan elegante como CVSS, nuestra solución era de fácil implementación y uso.

La parte medular del sistema de ACP era el cuestionario utilizado para evaluar cada nueva vulnerabilidad. Por cada respuesta afirmativa, se asignaba un puntaje a la vulnerabilidad. El puntaje oscilaba entre 0 y 10 puntos y dependiendo del puntaje total se clasificaba la vulnerabilidad como critica (7 a 10 puntos), alta (5 a 6), moderada (3 a 4) y baja (0 a 2). Dependiendo de esta clasificación, se determinaba si debíamos informar a los administradores de sistemas o no. He aquí el cuestionario y puntaje por pregunta afirmativa:
  1. Afecta a recursos de alto valor? 1 punto
  2. Afecta la infraestructura de red (ej. conmutadores, murallas de fuego, DNS)? 1 punto
  3. Afecta a un producto ampliamente usado o instalado en la ACP? 1 punto
  4. Afecta instalaciones por defecto de un producto? 1 punto
  5. Existe código disponible públicamente que aproveche la vulnerabilidad o está siendo ejecutada ampliamente en el Internet? (ej. virus) 1 punto
  6. La vulnerabilidad se puede acceder remotamente? 1 punto
  7. La vulnerabilidad se puede acceder sin credenciales? 1 punto
  8. Se han publicado detalles técnicos de la vulnerabilidad? 0.5 punto
  9. El resultado permite acceso administrativo o con privilegios? 1 punto
  10. Se requiere de ingeniería social (ej. visitar un sitio, hacer clic sobre un enlace web) para aprovechar la vulnerabilidad? 0.5 punto
  11. Existen registros de auditoria en la ACP que demuestran intentos o ataques utilizando la vulnerabilidad? 1 punto
Los resultados fueron alentadores. En el 2004, sólo enviamos 5 alertas de 54 vulnerabilidades reportadas en productos Microsoft y utilizados en la ACP. Sin embargo, los valores seleccionados para cada pregunta carecían de base científica y se basan exclusivamente en la opinión consensuada del grupo que desarrolló el documento. Además, el documento de Bozorgi sugiere que se pueden obtener mejores resultados si se utiliza técnicas de análisis estadístico.

El área de aprendizaje de máquinas sugiere implícitamente que una persona nunca puede vencer al mundo, en términos del conocimiento que cada uno puede aportar. En otras palabras, no importa cuan inteligente sea un ser humano para resolver un problema, el mundo real puede darnos una mejor solución. En el caso de las vulnerabilidades, las soluciones humanas son la de la ACP y CVSS, mientras que la solución basada en Linear SVM es la del mundo real. La razón por la que esta última es la del mundo real es que utiliza el registro de las características de cada vulnerabilidad reportada desde el anyo 2001 (un largo periodo) y realiza un análisis estadístico sobre este registro. O sea, toma una postura imparcial sobre los datos que se le presentan, a diferencia de la tabla de la ACP en donde a priori se le da mayor peso a cierto tipo de información (por ejemplo, la pregunta 1 tiene mayor valor que la pregunta 8).

Abajo aparece una tabla con algunos de los resultados presentados en el documento:

Fuente: Bozorgi, et al.

La primera columna indica el número de días (t) utilizados para determinar la factibilidad de que una vulnerabilidad sea explotada/implementada luego de t días. La segunda y tercera columna indican el número de casos positivos (|P|) y casos negativos (|P|) utilizados para entrenar el modelo. La cuarta y quinta columna indican los resultados de utilizar el método heurístico CVSS y de Linear SVM respectivamente, para determinar la factibilidad de implementación de la vulnerabilidad. Como puede observarse en cada renglón, los valores de la quinta columna son superiores a los de la cuarta.

Les recomiendo leer el documento de Bozorgi ya que es un excelente documento para aprender más de la técnica propuesta y también un buen ejemplo sobre como presentar resultados en una publicación científica. Al leerlo, uno puede determinar que la técnica propuesta posee limitaciones. Para comenzar, la técnica sólo busca determinar cuan rápido será implementada una vulnerabilidad. Mientras tanto, los métodos de ACP y CVSS buscan determinar cuan peligrosa es una vulnerabilidad (lo que no solo depende de si la vulnerabilidad ha sido implementada o no). Adicionalmente, en el sitio web del proyecto no está disponible (al momento de escribir este artículo) el dataset utilizado para calcular los valores presentados en el documento. Esto impide que uno mismo puede validar los resultados. Al final, los autores del documento sugieren que se utilicen técnicas estadísticas como complemento a las técnicas heurísticas. Esto será más viable a medida que continua nuestra uso y dependencia en sistemas informáticos, lo que generará más y mejores grupos de datos para ser analizados con técnicas como Linear SVM.

sábado, 24 de julio de 2010

Qué lenguaje de programación debo aprender? En julio es Java

Toda persona que trabaja y/o estudia en el área de computación ha evaluado aprender algún lenguaje de programación. Aunque para algunos ha sido fácil la decisión (el proyecto o curso en que trabajabas tomó la decisión por tí), para otros se puede convertir en toda una experiencia religiosa. Algo así como si tuvieras que decidir entre ser cristiano o musulmán (nada malo en escoger uno o el otro, simplemente que hay que escoger). Así que la pregunta es, cuál lenguaje debo escoger si quiero aprender a programar?

La respuesta correcta es cualquiera, pero con una observación importante. Puedes escoger cualquier lenguaje pero debes aprenderlo bien. O sea, a profundidad. Este ha sido uno de los mejores consejos de tecnología que me han dado (gracias Rob!) ya que es muy probable que todo lo que uno quiere o necesita hacer, se puede lograr con cualquiera de los lenguajes más populares. El problema es que no siempre uno aprende todo lo necesario para resolver la mayoría de las tareas que uno enfrenta. Por esta razón es que cuando decidas aprender un lenguaje, explora todas las opciones que te ofrece. En ocasiones esto significa aprender más sobre las librerías o paquetes disponibles o las funciones o estructuras de datos que permite utilizar un lenguaje.

Una buena razón de aprender bien un lenguaje de programación es que varios de los conceptos utilizados (propiedades) al desarrollar el lenguaje, son también utilizados en otros lenguajes. Esto facilita que cuando desees aprender otro lenguaje, la transición sea más sencilla que si no supieras ningún lenguaje. Como ejemplo, tienes los lenguajes orientados a objetos como Java, C++ e incluso lenguajes scripting como Python.

Ok, pero que ocurre si alguien quiere una respuesta más sencilla a la presentada arriba? Que tal si la persona que quiere aprender sobre programacion desea que le indiquen un lenguaje y que no tenga que tomar la decisión religiosa por su cuenta? Entonces tengo dos comentarios. Primero, el lenguaje de programación a aprender dependerá del área en donde trabajes o desees trabajar. Por ejemplo, si eres o deseas trabajar en el área de tecnologías Web, entonces te conviene aprender lenguajes como Java, Javascript, C# o PHP. Si eres más un administrador de sistemas, es posible que debas prestarle atención a lenguajes tipo scripting como Perl o Python.

El segundo comentario es que puedes darle una ojeada al índice de programación TIOBE. Este índice está basado en la popularidad de los distintos lenguajes de programación. Para calcularlo, se utiliza los buscadores Web como Google, MSN y Yahoo! y es una manera de medir la popularidad de los lenguajes. Los autores han publicado mensualmente este índice desde el año 2001. Abajo aparece el resultado para este mes, julio 2010.

Fuente: tiobe.com

Aunque los resultados no necesariamente sorprenderán a muchos (Java, C y C++ son los tres más populares), es interesante ver las tendencias y cambios que varios de estos lenguajes reportan en distintos meses. En la tabla de arriba, la columna 5 indica el índice del lenguaje, seguido por el cambio en comparación a un año atrás y la columna 7 indica la categoría del lenguaje. Un lenguaje categoría A es considerado "mainstream" o de uso popular. La definición completa del índice, así como de las categorías, la puedes encontrar aquí.

Al final, el índice TIOBE tampoco responde a la pregunta original sobre el tipo de lenguaje que uno debe aprender. Pero como buenos ingenieros si provee luces sobre cuán populares pueden ser los lenguajes (de acuerdo a lo que indica solamente el Internet, o la parte de él que revisan los buscadores) y nos da números, lo que nos permite pensar y decidir analíticamente. Y eso le puede dar paz a uno... al menos si eres ingeniero. :)

miércoles, 7 de abril de 2010

Qué hace DHS en temas de seguridad informática?

La semana pasada se llevó a cabo el XI Simposio del centro CERIAS de Purdue University. CERIAS son la siglas en inglés de "Center for Education and Research in Information Assurance and Security" y es uno de los principales centros de investigación y educación en seguridad informática, en los EEUU. El evento anual siempre reúne personalidades interesantes e importantes de la seguridad informática en los Estados Unidos. Este año no fue la excepción, ya que contamos con la presencia de:
  • Mike McConnell, ex-Director de NSA (National Security Agency, o como dicen algunos, No Such Agency :)
  • Randy Beers, actual sub-secretario para DHS (Department of Homeland Security) y
  • Dr. David Bell (el mismo del modelo de control de acceso Bell-Lapadula).

Para quienes no pudieron asistir, CERIAS ha publicado las notas del evento en su blog: http://www.cerias.purdue.edu/site/blog/. Además de asistir al evento, participé tomando las notas de la presentación del Sr. Beers, las cuales están disponibles [aquí]. Durante su charla, me pareció interesante escuchar como el gobierno de Estados Unidos, y DHS en particular, está manejando el tema de la seguridad informática para proteger los recursos gubernamentales y los sistemas informáticos relacionados a la infraestructura crítica del país. Fue evidente notar que para EEUU y el éxito futuro de su economía, manejar apropiadamente la seguridad informática es indispensable. El Sr. Beers incluso habló de algunas iniciativas técnicas a nivel nacional como el equipo de respuestas a incidentes US-CERT y el sistema de detección de intrusos (IDS) llamado Einstein.

Para aquellos que nos gusta sumergirnos en temas técnicos, siempre es bueno escuchar el "resto de la historia". Seguridad informática es mucho más que sólo los aspectos de tecnología. El Simposio de CERIAS permitió ver y escuchar sobre aspectos y esfuerzos no-técnicos, que son necesarios para el éxito de cualquier programa de seguridad informática. Especialmente si se trata de proteger los intereses de una nación como los EEUU.

jueves, 25 de marzo de 2010

Se solicita asistente de investigación para estudio del Internet en Panamá

Próximamente estaré participando junto a otros investigadores en el primer estudio (según conocemos) sobre la topología y tráfico del Internet en Panamá. Para ello, estamos buscando un estudiante dinámico e interesado en el área de redes de computadoras para que participe en este emocionante proyecto. Aquellos interesados pueden escribirme (gmhoward@gmail.com) por cualquier pregunta o para enviar su aplicación. Esperamos comenzar en el mes de Julio con el proyecto.

He aquí la información detallada de la posición:

El candidato ideal participará en el desarrollo y administración de la plataforma informática para culminar exitosamente el proyecto. Se espera que el candidato posea conocimientos comprobados (por medio de cursos o trabajos realizados) en instalación de sistema operativo Linux/Unix y lenguajes de programación tipo “scripting”.

Esta pasantía le ofrecerá al candidato la oportunidad de adquirir habilidades técnicas y experiencia de investigación, durante los ocho (8) meses que dura el proyecto. Participará con el resto de los investigadores en producir los entregables del proyecto.

RESPONSABILIDADES

  • Apoyar en la implementación de la plataforma informática del proyecto
  • Apoyar en la recolección de los datos para estudio de topología y tráfico
  • Apoyar en el análisis de los datos recolectados
  • Administrar y mantener la plataforma informática, basada en sistema operativo Linux
  • Desarrollar programas de automatización (scripts) de tareas periódicas
  • Diseñar, administrar y mantener la seguridad del sitio web del proyecto, el cual estará basado en HTML y JavaScript (o un manejador de contenido)
  • Comunicar estado de tareas (por medio de reportes de avance y notificación oportuna a superiores de problemas y riesgos)
  • Realizar respaldos periódicos (diarios y semanales) a plataforma informática y datos del proyecto (relacionados con topología y trafico)
  • Tener disponibilidad para desplazarse a distintos puntos de la ciudad de Panamá para realizar revisiones del equipo utilizado
  • Participar en las reuniones semanales con resto del equipo
Esta posición reportará típicamente al gerente del proyecto y junto a este se definirán las metas (diarias y semanales) y se brindará guía en el trabajo. Se estima que la posición requiere 20 horas de trabajo a la semana

REQUISITOS
  • Ser ciudadano panameño
  • Estar cursando actualmente carreras de licenciatura o maestría en áreas de tecnologías de información y comunicaciones (TIC). Por ejemplo: ingeniería electrónica, sistemas computacionales, ingeniería de software
  • Mantener un índice académico acumulativo de 2.0 o superior (sobre escala de 3.0)
  • Tener experiencia (curso o trabajo realizado) en redes de computadoras basadas en protocolos TCP/IP
  • Tener experiencia (curso o trabajo realizado) en al menos un lenguaje de programación tipo “scripting” (Perl, Python, Shell Scripting)
  • Tener experiencia (curso o trabajo realizado) instalando, configurando y administrando sistemas con sistema operativo Linux
  • Poseer habilidad para cumplir metas en plazos establecidos
  • Poseer habilidad para trabajar independientemente y como parte de un equipo
PREFERIBLE
  • Experiencia en desarrollo de aplicaciones basada en tecnologías Web, basados en HTML y JavaScript
  • Experiencia en al menos un lenguaje de programación de alto nivel (C, C++ o Java)
  • Experiencia en administración de sistemas de respaldo, basados en tecnología RAID
  • Experiencia en administración de dispositivos de red (router) con sistema operativo Cisco-IOS
  • Fuerte habilidad para comunicarse oralmente y por escrito
Aquellos interesados en aplicar, favor enviar: (1) copia de cédula, (2) copia de créditos universitarios y (3) hoja de vida (incluir tres referencias con dirección electrónica y número de teléfono) a las direcciones electrónicas: gmhoward@gmail.com y roberto.barnes@gmail.com. En caso de preguntas, favor escribir a estas direcciones electrónicas.

viernes, 19 de marzo de 2010

XIII Congreso Nacional de Ciencia y Tecnología, 6 al 9 de Octubre 2010

El próximo Congreso Nacional de Ciencia y Tecnología se realizará del 6 al 9 de octubre de 2010 en el Centro de Convenciones de la Ciudad del Saber, en Ciudad de Panamá, Panamá. El congreso es realizado por la Asociacion Panameña para el Avance de la Ciencia, APANAC. El evento representa una excelente oportunidad de participar junto a la comunidad científica panameña en la presentación de trabajos de investigación relacionados a nuestro país. Además, es uno de los eventos anuales que reúne a la comunidad panameña para tratar temas y problemas que afectan nuestra sociedad, desde una perspectiva científica y en busca de soluciones.

El Comité Organizador del congreso invita a participar en las distintas modalidades de publicación (conferencias por Invitación, simposios, comunicaciones libres orales, afiches y mesas redondas) y recibirá los resúmenes de trabajos de investigación hasta el próximo 31 de agosto de 2010. Las áreas temáticas incluyen las distintas ramas de la ciencia y tecnologia, incluyendo: ingenierías y Ciencias Computacionales, tecnología de la información y la comunicación, aspectos éticos y legales de la actividad científica y tecnológica, biotecnología, educación y energía.

El costo por participante (profesional, no miembro de APANAC) es de $60, hasta el 31 de agosto de 2010 y $70 después. Para profesionales miembros hay un descuento de $10 (también aplica el descuento por pagos hechos antes del 1 de septiembre) y estudiantes pagan $30.

Fechas importantes
1 de febrero de 2010: Inicio de recepción de resúmenes
31 de agosto de 2010: Límite para pago anticipado
31 de agosto de 2010: Límite para la entrega de resúmenes
11 de septiembre de 2010: Entrega de evaluaciones de los resúmenes
6-9 de octubre de 2010: XIII Congreso Nacional de Ciencia y Tecnología

Para mayor información, visita la pagina web de APANAC (www.apanac.org.pa) o escribe a la dirección electrónica congreso@apanac.org.pa. No te lo pierdas!

martes, 26 de enero de 2010

Exitosa celebración del evento "ESTUDIANDO COMPUTACIÓN Y TELECOMUNICACIONES EN PAÍSES INDUSTRIALIZADOS"

El pasado 19 de enero realizamos el evento "ESTUDIANDO COMPUTACIÓN Y TELECOMUNICACIONES EN PAÍSES INDUSTRIALIZADOS". Al mismo asistieron 35 personas, entre profesionales y estudiantes interesados en oportunidades de estudio en Europa y EEUU. Debo decir que el evento fue un exito gracias al apoyo por segundo año consecutivo de IEEE Panamá (Muchas gracias a Haydi Gálvez y todo el equipo!) y de todos los expositores, quienes compartieron sus experiencias y reflexiones de la forma mas sincera y clara, para beneficio de quienes asistimos al evento. Adicionalmente, la audiencia mantuvo la discusión interesante gracias a la buena asistencia y preguntas que hicieron a lo largo de la charla.

Compartimos con ustedes las presentaciones que utilizaron los expositores el día del evento:
  • Jesús Alvarado / Beneficios de Pertenecer a IEEE Panamá [presentación]
  • Gaspar Modelo Howard / Como Aplicar y Oportunidades de Financiamiento para Panameños [presentación]
  • Juan Pablo Espino / Experiencia de estudios en el Royal Institute of Technology, Suecia [presentación]
  • Ramsés Morales / Aprovechando el Primer Semestre [presentación]

Adicionalmente participe como moderador de la mesa redonda Oportunidades y retos para quien estudia computación o telecomunicaciones en un país industrializado. En la misma participaron Min Chen, Karla Arosemana, Rolando Armuelles, Roberto Barnes e Iván Armuelles. Aquí encontrarán las conclusiones de la mesa y que compartimos ese día: [presentación]

En conclusión fue un evento en donde múltiples profesionales compartieron sus experiencias y recomendaciones para cursar estudios en el extranjero y los asistentes tuvieron la oportunidad de conocer distintas opciones de estudio, compartir sus inquietudes y aclarar dudas sobre los aspectos que involucra estudiar en EEUU y Europa. Agradecemos nuevamente a todos los que hicieron de este evento una realidad. Esperamos que sea de provecho (incluso para quienes no pudieron asistir pero nos visitan en esta página) y tengamos la oportunidad de repetir el evento en un futuro. Saludos!

lunes, 11 de enero de 2010

Seminario de IEEE Panama: Estudiando Computación y Telecomunicaciones en Países Industrializados

Por segundo año consecutivo, estaremos realizando el seminario "ESTUDIANDO COMPUTACIÓN Y TELECOMUNICACIONES EN PAÍSES INDUSTRIALIZADOS". El evento se realiza gracias al esfuerzo y decidido apoyo de la IEEE Sección Panamá. Para este año contaremos con la participación de varios expositores, quienes compartirán sus experiencias de estudio en Estados Unidos y Europa. Si estás considerando o planificando realizar estudios avanzados (maestría y/o doctorado) en estas áreas, este evento es para tí!

FECHA: Martes 19 de enero de 2010
HORA: 6:30PM - 9:00PM

LUGAR: Hotel Crown Plaza

COSTO: Miembros IEEE: gratis / No miembros (estudiantes): $5


He aquí la agenda del evento:
  • Como aplicar y oportunidades de financiamiento para panameños
    Gaspar Modelo Howard


    Abstracto: Ofreceremos una descripción del proceso para aplicar desde Panamá a universidades en países industrializados (EEUU y Europa), para estudiantes interesados en carreras relacionadas con computación (maestrías y doctorados). Adicionalmente se presentarán algunas opciones de ayuda financiera disponibles a estudiantes panameños.

  • De Panamá a Suecia, Experiencia de Estudios en el Royal Institute of Technology
    Juan Pablo Espino

    Abstracto: La presentación abordará las experiencias como estudiante de maestría (Ing. Eléctrica) en Suecia. Se expondrá la estructura del sistema de educación superior sueco, información real sobre costo de vida, opciones de becas en Suecia y compañías líderes en tecnología, particularmente en ingeniería eléctrica y computación. Finalizaré con comentarios sobre las ventajas y desventajas de estudiar en Suecia de acuerdo a nuestra experiencia.

  • Aprovechando el Primer Semestre
    Ramsés Morales


    Abstracto: El
 primer
 semestre
 es
 de
 gran
 importancia:
 las
 decisiones
 que
 tomes
 pueden 
acelerar
 o
 retrasar
 tu
 programa,
 pueden
 aumentar
 o
 disminuir
 cuanto vas 
a 
disfrutar 
tus 
estudios 
y 
definitivamente
 influenciarán
 el 
área 
de 
investigación
 que
 elijas.
 En
 esta
 charla
 presentaré
 ideas
 que
 me
 habría
 gustado
 conocer
 antes de 
iniciar 
mi 
primer 
semestre. 
Considero 
la 
situación 
actual 
de 
estudiantes
 Panameños en
 áreas
 afines
 a
 computación—por
 ejemplo,
 investigación
 naciente
 en 
universidades
 Panameñas—y
 presento
 un
 mini‐manual
 que
 espero
 les
 sirva
 para
 referencia 
futura.

  • Mesa Redonda: Oportunidades y retos para quien estudia computación o telecomunicaciones en un país industrializado
    Iván Armuelles, Rolando Armuelles, Roberto Barnes, Min Chen

    Abstracto: Los panelistas discutirán las ventajas y desventajas de realizar estudios tecnológicos en un país industrializado, ¿Es una buena inversión de tiempo y dinero? ¿Existe mercado en Panamá para personas con estudios avanzados en tecnología? ¿Qué preguntas claves debe responder un individuo antes de tomar la decisión de irse a estudiar?
Al final del evento, tendremos un refrigerio para que los asistentes puedan compartir sus inquietudes y comentarios con los expositores. Ademas contaremos con la presencia de varios profesionales que también han realizado estudios en países industrializados y quienes gentilmente compartirán sus experiencias.

Por favor comparte esta información con personas interesadas. Te esperamos!