Banner Superior

InfoSecurity News
 
Año 2 - N°1 | Enero 2006
Inicio Puntos de Vista Entrevista Hacking bajo la lupa Noticias e-fraude Las Leyes Palabras de CISO Hot vulnerabilities Foro
Contactos Staff Portal InfoSecurity Online Recomiendanos Registrarse
Estadisticas
lo sabias?
Carta de Lectores
Tips para un CISO
Capacitación
Toolbox
Agenda InfoSec
Productos
Bolsa de Trabajo
Links de Interes
Libro de Pases
Números Anteriores
PUNTOS DE VISTA
¿Reutilizar o Reinventar la rueda?
Por Javier Antunez, Especialista en Seguridad Informática - CISSP.
JAVIER ANTUNEZ
JAVIER ANTUNEZ
ESPECIALISTA EN SEGURIDAD INFORMÁTICA - CISSP.

Muchas veces, al participar de proyectos de desarrollo hacemos esfuerzos y los repetimos una y otra vez, definiendo las mismas cuestiones entre una aplicación y otra. Investigando surge una posible opción que puede ayudar a la reutilización de soluciones optimizadas y probadas.

Introducción
En los últimos años, he tenido la oportunidad de participar en varios proyectos de desarrollo interno que, como parte de sus requisitos, debían incorporar aspectos de seguridad.

Al ir pasando el tiempo, fueron dándose varios cambios y avances en lo que respecta a tecnologías y herramientas de desarrollo; sin embargo, hay problemas recurrentes, que repetidamente hicimos el esfuerzo por solucionar del mejor modo posible.

Varias veces me hice la pregunta: ¿habrá una forma de reaprovechar esta solución que adoptamos en el futuro?

Por otro lado, a menudo los desarrolladores tienen la tendencia de querer reinventar la rueda (o complicarse sin sentido). Ese comportamiento los lleva a cometer errores capitales, en la falsa creencia de que su solución frente a la seguridad es la mejor.

Dos ejemplos típicos de este fenómeno:

1. Desarrollar algoritmos de encripción propietarios (seguridad por oscuridad).
2. Desarrollar esquemas de identificación/autenticación propios de la aplicación.

Para el ejemplo 1, por más seguro que uno crea que es su algoritmo, es un hecho que, en realidad, no lo es. Lo más lógico, antes de hacer el esfuerzo de generar un algoritmo, sería aplicar este esfuerzo a entender y utilizar implementaciones de algoritmos estándar, realmente probados por especialistas y que salieron airosos frente al escrutinio de éstos.

Para el ejemplo 2 se está “comprando” la problemática del manejo de userID y passwords por parte de la aplicación, donde en gran parte de los casos las passwords no están debidamente protegidas, o son encriptadas propietariamente, no se protege el canal de autenticación, etc. Lo más conveniente es tratar de integrar con servicios de infraestructura existentes (ejemplo: autenticación vía dominio Windows, Radius).

Hasta aquí dos problemas sencillos, con soluciones casi de sentido común, sin excesivas complicaciones. Cosas que la mayoría de nosotros propondría.

Y aquí vuelve a surgir la pregunta: ¿se podrá reaprovechar esta solución?

Patrones de diseño

En 1994 se editó el libro "Design Patterns: Elements of Reusable Object Oriented Sofware", escrito por los famosos Gang of Four*. Fue luego de la publicación de este libro que empezó a difundirse con más fuerza la idea de patrones de diseño.

Resulta ser que no todos los problemas son tan simples de resolver y, por cada uno que se nos presenta, pensamos formas de resolverlos y tomamos la que consideramos mejor.

Así, a medida que vamos ganando mayor experiencia, nuestro abanico para generar soluciones a problemas crece, aunque siempre habrá una solución que es la que mejor se adapte a la aplicación que estamos desarrollando. Si la solución es lo suficientemente genérica y la documentamos, podemos reutilizarla y compartirla para resolver de la mejor manera un problema específico.

Los patrones de diseño son una abstracción de una solución en un nivel alto (soluciones exitosas a problemas comunes). Las formas de implementar esos patrones son llamadas estrategias.

Los patrones solucionan problemas que existen en muchos niveles de abstracción. Algunos abarcan las distintas etapas del desarrollo: desde el análisis hasta el diseño, y desde la arquitectura hasta la implementación.

Patrones de seguridad

Si extendemos el paradigma de los patrones de diseño, podrían usarse patrones específicos para resolver problemas de seguridad.

Básicamente, los patrones de seguridad describen problemas particulares y recurrentes de seguridad que se dan en contextos específicos, y presentan esquemas genéricos bien definidos para su solución.

En general, una de las cuestiones que existe es que los desarrolladores de software no conocen demasiado de seguridad (o manejan conceptos erróneos), y los patrones podrían ser una forma simple de mejorar su entendimiento de las problemáticas de seguridad.

En la actualidad ya hay varios esfuerzos para la generación de patrones de seguridad disponibles públicamente (ver referencias**). Estos patrones son aplicables a varios contextos o niveles (algunos exceden a los desarrollos de software).

Recientemente se han presentado dos libros sobre esta temática específica, lo cual va marcando una tendencia que puede ser interesante*** .


Conclusiones

Si bien el uso de patrones todavía no es masivo, su aplicación puede llevar a que los equipos de desarrollo comprendan mejor los puntos que deben tener en cuenta al crear nuevas aplicaciones.

Contar con un catálogo de patrones también evitaría que los desarrolladores caigan en la tentación de reinventar cosas que ya existen.

Finalmente, en teoría, usar patrones permitiría evitar el “retrabajo” cada vez que queremos resolver un problema. Si contamos con una solución dentro de nuestro catálogo, sólo habría que concentrarse en la aplicación de ésta. Si no contamos con una solución y se considera que el problema será recurrente, puede aplicarse un esfuerzo mayor y generar un patrón genérico e incorporarlo al catálogo. Al cabo de un tiempo y al ir madurando, tendríamos un catálogo lo suficientemente vasto como para resolver la mayoría de los problemas en forma estandarizada y consistente.

Nota al pie

*Design Patterns: Elements of Reusable Object-Oriented Software"- Addison-Wesley Professional Computing Series - January 15, 1995 - ISBN: 0201633612.

**Ver http://www.securitypatterns.org/, http://www.coresecuritypatterns.com/ y http://www.opengroup.org/security/gsp.htm

***Core Security Patterns : Best Practices and Strategies for J2EE(TM), Web Services, and Identity Management" - Prentice Hall PTR - October 14, 2005.
Security Patterns : Integrating Security and Systems Engineering" (Wiley Software Patterns Series) - John Wiley & Sons - March 13, 2006.

 


Javier Antunez
Especialista en Seguridad Informática - CISSP.
javier.antunez@gmail.com
Recomienda esta Nota a un Amigo:
Tu Nombre y Apellido:
Tu Email:
Email de tu amigo:
Nombre de tu amigo:
Apellido de tu amigo:

 

Banner Partners
Banner ASIar
Banner I-SEC Consulting
Banner HP
Banner Symantec
Banner Empresas
Banner Sun ComWare
Banner I-SEC
Banner Openware
Banner ComPlus
Banner Next VISION
Banner Hynet
Banner GMS
Banner TrendCorp
Banner 3Com

Copyright © 2006 I-Sec. Todos los derechos reservados Política de protección de Datos Personales Powered by