Universidad Pública de Navarra



Año Académico: 2020/2021 | Otros años:  2019/2020 
Graduado o Graduada en Ingeniería Informática por la Universidad Pública de Navarra (Programa Internacional)
Código: 250505 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: Mención Ingeniería del Software

Materia: 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

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

Idiomas

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

Subir

Evaluación

Resultado de aprendizaje Sistema de evaluación Peso (%) Carácter recuperable
 R0, R0a, R1, R2, R3, R4 Proyecto final de análisis de riesgos y desarrollo de una aplicación segura  20%    Nota mínima para que pondere en calificación final: 4,5 sobre 10.  No recuperable
 R0, R0a, R1, R2, R3, R4 Asistencia y participación activa en clase  10%  No recuperable
R0, R0a, R1, R2 Evaluación continua de ejercicios, supuestos prácticos y presentaciones sobre metodología, técnicas y buenas prácticas  40%   Nota mínima para que pondere en calificación final: 4,5 sobre 10 en cada tarea. Recuperable realizando un examen de laboratorio de contenidos aplicados.
R0, R0a, R1, R2, R3, R4  Prueba escrita sobre contenidos de la materia  30%    Nota mínima para poder superar la asignatura: 4,5 sobre 10.  Recuperable mediante prueba escrita

La nota final que corresponde a la evaluación continua de la asignatura es el resultado de calcular la media aritmética de las notas obtenidas en los diferentes ejercicios y supuestos prácticos propuestos; al calcular esa media se tendrá en cuenta la condición individual de nota mínima para ponderación de cada ejercicio.

Cuando la nota final de la evaluación continua así calculada no alcance los 4,5 puntos, el estudiante podrá realizar un examen de contenidos aplicados en el periodo de recuperación para superar esa parte de evaluación de la asignatura.

La nota final de la parte práctica se calcula sumando de manera ponderada la parte de evaluación continua (66,66%) con la nota obtenida en el proyecto final no recuperable ponderada (33,34%); al calcular esa suma se tendrá en cuenta la condición de nota mínima para ponderación del proyecto no recuperable.

Sobre la puntuación que se traslada al acta de la asignatura:

  • Tanto la parte práctica (evaluación continua de ejercicios y supuestos prácticos, y proyecto final) como el examen de teoría se consideran superados cuando se ha conseguido una puntuación de 4,5 sobre 10.
  • En el caso de haber superado tanto el examen de teoría como la parte práctica, la nota final de la asignatura será la suma ponderada de la nota de la parte práctica (60%), del examen (30%) y de la nota conseguida por asistencia y participación (10%).
  • En el caso de que no haber superado ni el examen, ni la parte práctica, la nota final de la asignatura será la media aritmética de las notas obtenidas en ambos ítems de evaluación.
  • En el caso de haber superado únicamente el examen o únicamente la parte práctica, la nota que se traslade al acta será la obtenida en la ítem no superado.

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

Lugar de impartición

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

Subir