MCC Juan Carlos Pérez Arriaga
Licenciado en Informática o carrera afin con grado de maestría, con experiencia comprobable en el desarrollo de sistemas y administración de servicios de red, así como en el desarrollo de software de red. Con experiencia docente en nivel superior.
El estudiante construye programas de cómputo mediante la aplicación de técnicas de escritura de código seguro y análisis amenazas y riesgos, para mitigar amenazas que comprometan el funcionamiento de servicios de red, con honestidad, colaboración, responsabilidad, tolerancia y respeto.
Los estudiantes analizan en un marco de honestidad, responsabilidad, colaboración y respeto (eje axiológico), las principales amenazas y riesgos existentes en entornos de ejecución de software como Internet, o aplicaciones de escritorio (eje teórico); Investigan grupal o individualmente sobre tópicos relacionados con problemas de seguridad comunes en el desarrollo de software; Aplican técnicas para mitigación y prevención de vulnerabilidades de software; Realizan revisiones a los programas desarrollados con el fin de detectar algún tipo de vulnerabilidad existente en el código.(eje heurístico)
La experiencia educativa Programación Segura está ubicada en el área de formación disciplinar, se integra de 3 horas teoría y 2 horas práctica a la semana, contabilizando un total de 8 créditos. El licenciado en Redes y Servicios de Cómputo identifica los principales riesgos y amenazas en la construcción de software y aplica técnicas para la escritura de código seguro en diversos tipos de aplicaciones. La experiencia educativa Programación Segura, hace énfasis en la revisión de temas relacionados con conceptos de seguridad en la escritura de programas, identificación de las principales amenazas y riesgos, así como temas relacionados con la mitigación y prevención de vulnerabilidades de software; del mismo modo, se plantean escenarios reales e hipotécnicos donde la evaluación de los mismos se realizará tomando en cuenta exámenes escritos, prácticas en clase, informes de lectura, participaciones y casos prácticos, utilizando estrategias para fomentar el trabajo colaborativo, la creati...
Con el constante crecimiento de Internet y la evolución de las tecnologías de la información y comunicación, la seguridad de la información ha tomado un papel relevante en el desarrollo de sistemas y en la configuración, administración y mantenimiento de servicios de cómputo. El licenciado en Redes y Servicios de Cómputo requiere conocer las principales amenzas y riesgos existentes en el desarrollo de software, así como conocer e implementar técnicas de escritura de código seguro en el desarrollo de sistemas o aplicaciones. La experiencia educativa Programación Segura, brinda al estudiante los conocimientos necesarios sobre las principales amenazas y riesgos que existen en el desarrollo de software, así como las consecuencias existentes en la omisión de dichas amenazas en la escritura de programas; del mismo modo, el estudiante adquiere las competencias necesarias para escribir programas utilizando técnicas de escritura de código seguro.
*Conceptos de seguridad.
-Sistemas seguros como necesidad
-Tipos de amenazas
-Tipos de ataques
-Principios de seguridad
-Modelado de amenazas
-Procesos de desarrollo con seguridad proactiva
*Problemas comunes de seguridad
-Manejo de entradas
-Manejo de cadenas
-Validación de enteros
-Manejo de memoria
-Manejo de errores y excepciones
-Control de recursos (Memory Leak)
*Arquitecturas de seguridad
-¿Qué es una arquitectura de seguridad?
-Principios de arquitecturas de seguridad.
-Análisis de casos: Java SandBox
*Técnicas para escritura de código seguro
-Control de Buffer Overrun
-Determinación de controles de acceso apropiados
-Control de privilegios
-Seguridad en sockets
-Seguridad en llamadas a procedimientos remotos
-Protección de información confidencial
-Validación de entradas
-Aspectos de seguridad en desarrollo Web e internacionalización
-Aspectos de seguridad en acceso a bases de datos.
-Protección contra ataques de negación de servicios.
-Autenticación, autorización.
-Algoritmos de cifrado
*Programación defensiva
-Minimizar ámbito de variables
-Manejo de dependencias entre componentes de software.
-Escritura de código amigable a la recolección automática de basura.
*Confiabilidad
*Entendimiento de programas
*Revisión de código
-Revisión de información documental sobre incidentes de software.
-Investigación de amenazas y riesgos en el desarrollo y uso de programas.
-Análisis de tipos de amenazas y técnicas de mitigación de las mismas.
-Análisis de técnicas de programación utilizando seguridad proactiva.
-Comprensión de los problemas comunes de seguridad en la escritura de código.
-Implementación de técnicas para la escritura de código seguro.
-Análisis de conceptos de confiabilidad de programas, y revisión de código.
*Responsabilidad en la entrega de trabajos
*Honestidad en el uso de información confidendial
*Respeto hacia los compañeros de clase y profesor
*Apertura para el aprendizaje de tecnologías, modelos y técnicas para escritura de código
*Tolerancia a las opiniones de los compañeros y a la retroalimentación brindada
Prácticas en el aula y centro de cómputo, discusión de conceptos, búsqueda y consulta de información, exposición individual y grupal, lectura de artículos, Solución de problemas.
Demostración de conceptos, dirección de prácticas, organización de grupos colaborativos, revisión individual de actividades, exposición con apoyo tecnológico variado.
Ejercicios y prácticas.
Presentaciones elaboradas por el profesor
Video tutoriales.
Artículos de revistas científicas.
Uso de tecnologías de información para reforzar conocimientos.
Proyector.
Computadora.
Pintarrón.
Marcadores.
Documentación de lenguajes de programación.
Documentación de API¿s.
Software: intérpretes y compiladores de lenguajes de programación, entornos integrados de desarrollo.
2 exámenes parciales(escritos)
Caso práctico
Prácticas
Reportes de investigación y lectura
Pertinencia, suficiencia.
Pertinencia, suficiencia, puntualidad.
Pertinencia, suficiencia.
Pertinencia, suficiencia, coherencia, puntalidad.
Aula en forma individual.
Aula y/o centro de cómputo en forma individual y grupal.
Aula y/o centro de cómputo en forma grupal o individual.
Aula e forma individual.
Asistencia del 80% para ordinario; entregar cada evidencia y cumplir con los criterios de desempeño establecidos. Todas las evidencias de desempeño deben tener una calificación mínima de 6.
Seacord, Robert. Secure Coding in C and C++. Addison-Wesley, 2013
Viega, John. Messier, Matt. Secure Programming Cookbook for C and C++:Recipes for Cryptography, Authentication, Input Validation. O¿Reilly, 2003.
Long, Fred. Mohindra, Dhruv. Seacord, Robert. Sutherland, Dean. Java Coding Guidelines: 75 Recommendations for Reliable and Secure Programs. Addison-Wesley, 2013.
Howard, Michael. LeBlanc, David. Writing Secure Code: Practical Strategies and Proven Techniques for Building Secure Appli...
Chess, Brian. West, Jacob. Secure Programming with Static Analysis. Addison-Wesley, 2007.