Universidad Pública de Navarra



Año Académico: 2019/2020 | Otros años:  2018/2019  |  2017/2018  |  2016/2017  |  2015/2016 
Graduado o Graduada en Ingeniería Informática por la Universidad Pública de Navarra
Código: 240505 Asignatura: PROGRAMACIÓN SEGURA
Créditos: 6 Tipo: Optativa Curso: Periodo: 1º S
Departamento: Estadística, Informática y Matemáticas
Profesorado:
ALDAZ ZARAGUETA, MIGUEL ANGEL   [Tutorías ] ARDAIZ VILLANUEVA, OSCAR (Resp)   [Tutorías ]

Partes de este texto:

 

Módulo/Materia

Módulo: Ingeniería del Software

Matería: Organización y Gestión de Sistemas Informáticos

Subir

Descripción/Contenidos

En la asignatura se distinguen dos bloques de contenidos.

En un bloque se introducen y aplican algunos de los elementos de seguridad que incorpora la plataforma Java SE para el desarrollo de aplicaciones seguras: criptografía, autenticación y control de ejecución. El objetivo final es desarrollar una sencilla aplicación distribuida a ejecutar sobre una red local; en esa aplicación se habrán incorporado medidas de control de acceso, control de ejecución y elementos que garanticen la integridad y confidencialidad en la información transmitida.

En otro bloque se describen problemas de seguridad que se originan tanto en las fases de analisis y diseño de una aplicación como en la de desarrollo de su código. Se explican las buenas prácticas para realizar un desarrollo fiable y se introducen metodologías de desarrollo seguras. También se presentan los organismos externos que promueven el desarrollo seguro de software y sus recomendaciones y se definen métricas para evaluar la seguridad del software. Se realizara un trabajo de analisis y diseño siguiendo las buenas prácticas y metodologias de desarrollo seguro.

Subir

Descriptores

Seguridad informática. Desarrollo de aplicaciones seguras. Patrones de seguridad. Eliminación de vulnerabilidades.

Subir

Competencias genéricas

G1 - Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.

G3 - Capacidad para diseñar, desarrollar, evaluar y asegurar la accesibilidad, ergonomía, usabilidad y seguridad de los sistemas, servicios y aplicaciones informáticas, así como de la información que gestionan.

G5 - Capacidad para concebir, desarrollar y mantener sistemas, servicios y aplicaciones informáticas empleando los métodos de la ingeniería del software como instrumento para el aseguramiento de su calidad.

G7 - Capacidad para conocer, comprender y aplicar la legislación necesria durante el desarrollo de la profesión de Ingeniero Técnico en Informática y manejar especificaciones, reglamentos y normas de obligado cumplimiento.

G9 - Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.

T1 - Capacidad de análisis y síntesis

T4 - Resolución de problemas

T7 - Razonamiento crítico

T8 - Aprendizaje autónomo

T10 - Motivación por la calidad

 

 

Subir

Competencias específicas

Competencias específicas:

  • IS1 - Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software.
  • IS4 - Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales.
  • IS5 - Capacidad de identificar, evaluar y gestionar los riesgos potenciales asociados que pudieran presentarse.

Competencias adicionales:

  • IS7-A Capacidad de optar a diferentes certificaciones del ámbito de la ingeniería del informática y de la gestión de sistemas de información.

Subir

Resultados aprendizaje

R0 - Detectar e identificar vulnerabilidades en el código de las aplicaciones para diferentes arquitecturas y ser capaz de eliminarlas.
R0a - Incorporar elementos que refuercen la seguridad de una aplicación: metodos criptográficos, autenticación y control de ejecución.
R1 - Conocer las buenas prácticas para realizar desarrollos fiables.
R2 - Conocer buenas prácticas que incorporen la seguridad en la gestión del desarrollo de software.
R3 - Conocer las buenas prácticas que proponen organismos externos como ISACA, SEI, ITIL, ISO, etc. para la gestión del desarrollo integrando aspectos de seguridad.
R4 - Conocer los estándares de métricas de niveles de seguridad del software para su evaluación externa.

Subir

Metodología

Metodología - Actividad
Horas Presenciales
Horas no presenciales
A-1 Clases expositivas/participativas
15 (aula)
0
A-2 Preparación de presentaciones de trabajos, proyectos, etc.
0
5
A-3 Aprendizaje basado en problemas y/o casos en grupos reducidos
15 (aula)
0
A-4 Sesiones prácticas en grupos reducidos
30 (laboratorio)
0
A-5 Tutorías en grupos muy reducidos
4,5 (consultas individuales)
0
A-6 Actividades de evaluación
3 (exámenes)
0
A-7 Estudio autónomo
0
12,5 (repaso y preparación de actividades de evaluación)
A-8 Elaboración de trabajos y/o proyectos y escritura de memorias
0
10
A-9 Programación/experimentación u otros trabajos en ordenador/laboratorio
0 42,5 (para completar tareas de laboratorio)
A-10 Resolución de problemas, ejercicios y otras actividades de aplicación
0 12,5
Total
67,5
82,5

Subir

Evaluación

 

Resultado de aprendizaje Sistema de evaluación Peso (%) Carácter recuperable
 R0, R0a, R1, R2  Desarrollo de una aplicación segura  10%    Nota mínima para que pondere en calificación final: 5 sobre 10.  No recuperable
R0, R0a, R3, R4  Analisis de riesgos de una aplicación segura  10%    Nota mínima para que pondere en calificación final: 5 sobre 10.  No recuperable
 R0, R0a, R1, R2, R3, R4  Asistencia y participación activa en clase  20%  No recuperable
 R0, R0a, R1, R2  Supuestos prácticos que apliquen una parte de la materia  15%   Nota mínima para que pondere en calificación final: 5 sobre 10 en cada supuesto práctico.   Nota mínima para poder optar a recuperación: 4 sobre 10  en cada supuesto práctico.  Recuperable entregando el trabajo corregido según indicaciones y fechas establecidas por el profesor
R0, R0a, R1, R2  Ejercicios y presentaciones de evaluación continua sobre buenas prácticas y metodologías  15%   Nota mínima para que pondere en calificación final: 5 sobre 10 en cada tarea.   Nota mínima para poder optar a recuperación: 4 sobre 10  en cada tarea.  Recuperable entregando la tarea corregida según indicaciones y fechas establecidas por el profesor
 R0, R2, R3, R4  Prueba escrita sobre contenidos de teoría  15%    Nota mínima para poder superar la asignatura: 5 sobre 10.  Recuperable mediante prueba escrita
 R0, R0a, R1, R2  Prueba de laboratorio sobre contenidos aplicados  15%    Nota mínima para poder superar la asignatura: 5 sobre 10.  Recuperable mediante prueba de laboratorio

 

 

 

 

Subir

Temario

Tema 1: Conceptos generales de seguridad informática

  • Fiabilidad del software
  • Seguridad del software
  • Principios básicos de seguridad
  • Control de acceso
  • Control de ejecución
  • Revisión de vulnerabilidades más frecuentes
  • Seguridad para la web

Tema 2: Desarrollo de software seguro

  • Buenas prácticas de desarrollo
  • Métodos formales
  • Patrones de seguridad

Tema 3: Integración de la seguridad en el desarrollo de software

  • Gestión del desarrollo de software fiable
  • Revisiones
  • Métricas de seguridad

Tema 4: Normas y certificaciones

  • Organismos
  • Normas
  • Certificaciones

Tema 5: Programación segura en plataformas comerciales

  • Seguridad en plataforma Java SE 8
  • Extensión JCE
  • Control de ejecución
    • Gestor de seguridad
    • Políticas de permisos
    • Ejecución privilegiada
  • Servicio JAAS
    • Infraestructura Kerberos
  • Interfaz JGSS

El tema 5 se desarrolla enteramente en laboratorio a lo largo del semestre.

Subir

Bibliografía

Acceda a la bibliografía que el profesorado de la asignatura ha solicitado a la Biblioteca.


  • Bibliografía básica
    • M. G. Graff, K. R. van Wyk. Secure Coding. Principles and Practices. O'Reilly, 2003.
    • F. Long, D. Mohindra, R. C. Seacord, D. F. Sutherland, D. Svoboda. The CERT Oracle Secure Coding Standard for Java. Addison-Wesley, 2012. URL: https://www.securecoding.cert.org/confluence/display/java/SEI+CERT+Oracle+Coding+Standard+for+Java
  • Bibliografía complementaria
    • David A. Wheeler ¿Secure Programming for Linux and Unix HOWTO¿ (http://www.dwheeler.com/secure-programs/) 2003.
    • C. Dougherty, K. Sayre, R. C. Seacord, D. Svoboda, K. Togashi. Secure Design Patterns. Technical report, Software Engineering Institute, Carnegie Mellon, October 2009. URL: http://www.sei.cmu.edu/reports/09tr010.pdf.
    • Microsoft Corp, "Microsoft Security Development Lifecycle (SDL) Process Guidance - Version 5.2", http://www.microsoft.com/en-us/download/details.aspx?id=29884, 2012.
    • Pravir Chandra, "Software Assurance Maturity Model: A guide to building security into software development", http://www.opensamm.org, 2013.
  • URL
    • Documentacion API de Java SE 8: http://docs.oracle.com/javase/8/docs/api
    • Guía de Oracle Corporation sobre buenas prácticas en codificación de seguridad para Java: http://www.oracle.com/technetwork/java/seccodeguide-139067.html
    • Open Web Application Security Project (OWASP): https://www.owasp.org
    • Common Weakness Enumeration: cwe.mitre.org
    • Microsoft Security Development Lifecicle: http://www.microsoft.com/security/sdl

Subir

Idiomas

Castellano; buena parte de la documentación en inglés.

Subir

Lugar de impartición

Aula asignada por la ETSIIT; laboratorio de informática asignado por el servicio informático de la Universidad.

Subir