Presentación del Curso - Desarrollo Seguro en iOS con Swift
  • 0 - Presentación del Curso
Introducción al Curso
  • Introducción
1.- Introducción teórica a la Seguridad en iOS
  • 1.1.- Darwin, el nucleo
  • 1.2.- ¿Es iOS y los iPhone, iPad o iPod Touch seguros?
2.- Capas de Seguridad en iOS
  • 2.1.- Concepto de firma digital
  • 2.2.- Capa de arranque seguro (Secure Boot)
  • 2.3.- Capa de cifrado de datos (Secure Enclave)
  • 2.4.- Sandboxing de Apps (de terceros y propias)
  • 2.5.- App Transport Security (ATS)
  • 2.6.- Cifrado de Datos
  • 2.7.- Modos del Sistema para Cifrar Datos
  • 2.8.- Firma del código
  • 2.9.- Touch ID
  • 2.10.- Face ID
3.- Ejemplos de inseguridad en iOS y dispositivos
  • 3.1.- Tridente y Pegasus
  • 3.2.- Meltdown y Spectre
4.- Swift, lenguaje seguro
  • 4.1.- Swift, lenguaje seguro
5.- Los peligros de un desarrollo convencional
  • 5.1.- Introducción
  • 5.2.- Grabar datos de forma insegura
  • 5.3.- Insuficiente o inexistente validación de datos de entrada
  • 5.4.- Insuficiente garantía de seguridad en lado servidor
  • 5.5.- Insuficiente control de la persistencia de una sesión remota
  • 5.6.- Mal control de las claves de cifrado de la información
  • 5.7.- Malas prácticas en la grabación o trabajo con datos sensibles
  • 5.8.- No prevenir los cambios de estructuras en el uso de serialización
  • 5.9.- Insuficiente protección en la capa de transporte de comunicaciones
6.- Buenas prácticas en el desarrollo de apps / juegos
  • 6.1.- Generación de números aleatorios seguros criptográficos
  • 6.2.- Controlar la captura de pantalla al dejar en reposo
  • 6.3.- Controlar la captura de la imagen en pantalla
  • 6.4.- Controlar el uso del portapapeles
  • 6.5.- Configurar correctamente los tipos de campos de textos
  • 6.6.- Uso de NSSecureCoding en la serialización en vez de NSCoding
  • 6.7.- Uso de Codable (Swift 4)
  • 6.8.- Evitar copias de seguridad de ficheros clave
  • 6.9.- Inyección de SQL en SQLite3
  • 6.10.- Librerías de terceros: NO
7.- Trabajo con tipos de datos
  • 7.0.- Trabajo con tipos de datos
  • 7.1.- Tipos Data y String, conversión
  • 7.2.- Trabajo con datos en base64
  • 7.3.- Tipo Data y el acceso al array de bytes en Swift 4.2
  • 7.4.- Tipo Data y array de bytes con Swift 5
8.- Implementaciones para trabajo en red
  • 8.0.- Implementaciones para trabajo en red
  • 8.1.- Gestión de excepciones en App Transport Security (ATS)
  • 8.2.- Conexiones de red seguras con JSON en URLSession
  • 8.3.- Descarga de datos con URLSession
  • 8.4.- Envío de datos con URLSession
  • 8.5.- Subida de archivos con URLSession
  • 8.6.- Configuración pasarela OAuth2 en Google Drive
  • 8.7.- Recuperación del código de autorización para OAuth2
  • 8.8.- Recuperando el token de refresco de Google para OAuth2
  • 8.9.- Subiendo ficheros a Google Drive con OAuth2
9.- Tratamiento de datos
  • 9.0.- Tratamiento de datos
  • 9.1.- Control de los campos de texto
  • 9.2.- Filtrado de las cadenas
  • 9.3.- Ejemplo de inseguridad UserDefaults
  • 9.4.- Grabación y carga de archivos en formato plano
  • 9.5.- Modos de cifrado de archivos
  • 9.6.- Grabación en la cartera de certificados
  • 9.7.- Carga desde la cartera de certificados
10.- Cifrado nativo con Swift 4.2 y Xcode 9
  • 10.0.- Cifrado nativo con Swift
  • 10.1.- Instalación de CommonCrypto
  • 10.2.- Generación de números aleatorios criptográficos
  • 10.3.- Cálculo de hash HMAC256
  • 10.4.- Comprobación de hash
  • 10.5.- Vectores de inicialización
  • 10.6.- Cifrado AES
  • 10.7.- Cifrando en AES
  • 10.8.- Cifrado AES/GCM
  • 10.9.- Cifrando en AES/GCM
10b.- Cifrado nativo con Swift 5 y Xcode 10.2 u 11
  • 10b.1 Generación de números aleatorios criptográficos
  • 10b.2 Hash SHA256 de un password (CommonCrypto)
  • 10b.3 Hash HMAC256 con clave (CommonCrypto)
  • 10b.4 Cifrado AES256-CBC (CommonCrypto)
  • 10b.5 Probando el cifrado AES256-CBC (CommonCrypto)
11.- Prácticas de seguridad
  • 11.0.- Prácticas de seguridad
  • 11.1.- Acceso granular de servicios
  • 11.2.- Excluir ficheros de la copia de seguridad
  • 11.3.- Borrado del portapapeles
  • 11.4.- Portapapeles que expira pasado un tiempo
  • 11.5.- Control del portapapeles cuando se usa
  • 11.6.- Ofuscar la vista previa en pantalla de multitarea
  • 11.7.- Depuración segura de una app
13.- Implementaciones
  • 13.0.- Implementaciones
  • 13.1.- Configuración de Touch ID y Face ID
  • 13.2.- Implementando Touch ID y Face ID