El mundo web es tentador y la gente tiene sed de internet. Ya sea en sus hogares, donde utilizan Wi-Fi seguro, o en lugares públicos, donde utilizan Wi-Fi no seguro, nunca se preocupan por la seguridad.
Los hackers aprovechan estas situaciones y esperan a que las personas se conecten a redes no seguras. Realizan ataques de phishing para obtener datos sensibles del dispositivo de personas que utilizan estas redes públicas. Tanto los dispositivos iOS como Android siempre han sido y son objetivos de los hackers. L
as estadísticas de ciberdelincuencia indican que el costo promedio de una brecha cibernética fue de $43.5 millones (2022).
Las técnicas de SSL Pinning resultan ser una bendición en situaciones tan devastadoras.
Asegurando Apps iOS con SSL Pinning
¿Qué es SSL Pinning?
SSL Pinning es una técnica de seguridad en la que se adjunta un certificado SSL/TLS (Secure Socket Layers/Transport Layer Security) a un servidor/sitio web para evitar el acceso de intrusos y asegurar el servidor.
El certificado SSL es una solución de seguridad en la que las comunicaciones entre el navegador y el servidor o entre servidores están cifradas con una fuerza de cifrado de 256 bits. Los sitios web que tienen seguridad SSL muestran HTTPS (protocolo de transferencia de hipertexto seguro) en la barra de direcciones y un candado en la URL.
Cuando dos dispositivos intercambian comunicaciones, deben asegurarse de que un tercero no tenga acceso a ellas.
SSL Pinning es la mejor manera de garantizar la privacidad de los datos, ya que ayuda a prevenir ataques de intermediarios (man-in-the-middle) y ataques de phishing que realizan los hackers.
En lo que respecta a las plataformas digitales, SSL Pinning es una solución de seguridad perfecta para dispositivos iPhone y aplicaciones iOS.
Pero esta es solo una capa de seguridad para sus aplicaciones iOS. Para fortalecer su aplicación y su código contra posibles amenazas, el uso de un Code Signing Certificate también es igualmente crítico.
Este blog trata sobre conocer los tipos de SSL Pinning, así como el proceso de instalación en aplicaciones iOS. Así que, sin más preámbulos, comencemos.
Tipos de Métodos de SSL Pinning en iOS
SSL Pinning adjunta diversos certificados confiables a la aplicación. Cuando el servidor solicita una conexión, verifica el certificado del servidor en la lista predefinida.
Con una verificación positiva, establece una conexión segura entre el cliente y el servidor.
Los dos tipos de Métodos de SSL Pinning en iOS son:
Pinning del Certificado
El certificado del servidor se puede descargar y empaquetar en la aplicación. Durante el proceso de ejecución, la aplicación verifica el certificado del servidor con la lista predefinida incrustada en la aplicación.
Pinning de la Clave Pública
Puedes recuperar la clave pública del certificado y agregarla a tu código como una cadena. Durante el proceso de ejecución, la aplicación comparará la clave pública del certificado SSL con la clave pública agregada al código.
Puedes seleccionar cualquier método de SSL Pinning para asegurar tu aplicación iOS, según la configuración de tu servidor.
En la primera opción, debes cargar la aplicación durante el proceso de cambio de certificado del servidor. Mientras que, en la segunda opción, debes pasar por alto la política de intercambio de claves, ya que la clave pública debe verificarse.
Tipos de Certificados Utilizados en el Método de SSL Pinning
Hay tres tipos de certificados utilizados en SSL Pinning. Son:
- End-Entity (Leaf) Certificates: El certificado de entidad final se emite directamente al servidor y lleva la clave pública del servidor. La aplicación iOS se ancla instantáneamente a este certificado.
Sin embargo, en caso de que el certificado anclado caduque o se rompa, el funcionamiento de la aplicación se ve afectado. El certificado debe actualizarse para resolver el problema. Por lo tanto, los certificados de entidad final caducan rápidamente.
- Intermediate Certificates: Un Certificado de Autoridad (CA) de confianza emite estos certificados. Al anclar certificados intermedios, la aplicación confía en el certificado emitido por el mismo proveedor de servicios. Esto significa que la aplicación no se verá afectada por ninguna modificación en el certificado de entidad final.
Los certificados intermedios proporcionan una mayor flexibilidad que el anclaje de certificados de entidad final.
- Root Certificates: Los certificados raíz están ubicados en la posición más alta de la cadena de certificados. Se consideran la autoridad final en la cadena de confianza.
Cuando se utiliza el anclaje de certificados raíz, la aplicación autentica el certificado en función de la cadena de confianza.
En caso de que haya una discrepancia entre el certificado de los clientes y los certificados de la aplicación anclada, la conexión se termina.
Cómo Implementar SSL Pinning en la Aplicación iOS
- SSL Pinning con NSURLSession: Cuando el servidor envía una solicitud de autenticación al cliente, el cliente solicitará las credenciales necesarias. Más tarde, el certificado del servidor se verifica con los certificados almacenados en el paquete de la aplicación. En caso de una coincidencia de certificado, se permite la autenticación.
Se realizan verificaciones manuales para implementar SSL Pinning.
Para crear una aplicación iOS segura con NSURLSession: Los desarrolladores web deben confirmar URLSessionDelegate configurando la clase y luego deben pegar la función que se menciona a continuación en la clase.
URLSession:didReceiveChallenge:completionHandler:delegate.
La función mostrará un mensaje que dice “Request credentials from the delegate in response to an authentication request from the remote server
“.
El desarrollador de la aplicación para iPhone comparará el certificado del servidor con el certificado almacenado en el paquete de la aplicación. Si coinciden de manera idéntica, la autenticación será positiva y se establecerá una conexión segura entre el cliente y el navegador.
- SSL Pinning con Alamofire: El marco de trabajo de Alamofire viene con una buena API (interfaz de programación de aplicaciones), para incorporar SSL Pinning en aplicaciones iOS. Es una famosa biblioteca de redes HTTP escrita en el lenguaje Swift. Sus funciones integradas para SSL Pinning en aplicaciones iOS en Swift son simples y convenientes de usar.
Para crear una aplicación iOS segura con la fijación de certificados de Alamofire, sigue los comandos que se mencionan a continuación.
En el método bundle de ServerTrustPolicy.certificates de Alamofire, todos los certificados se colocan dentro del paquete. Este método ancla solo dominios predefinidos en lugar de todos los dominios.
3. SSL Pinning con AFNetworking: AFNetworking es una biblioteca de redes, al igual que Alamofire, y también está escrita en el lenguaje Swift. Es el predecesor de Alamofire y ambos comparten características comunes.
SSL Pinning con AFNetworking es muy simple y fácil.
Asigna un objeto de política AFSecurityPolicy con la policyWithPinningMode:AFSSLPinningModePublicKey al AFHTTPRequestOperationManager.
AFNetworking escaneará todos los archivos “.cer
” a través de tu paquete y los agregará a manager.securityPolicy.pinnedCertificates.
Esto elimina la necesidad de agregar manualmente los certificados. En caso de que necesites agregar un certificado específico, hazlo escribiendo el código que se muestra a continuación:
SSL Pinning se ha completado con éxito.
Problemas Relacionados con SSL Pinning en iOS
La función principal de los desarrolladores de aplicaciones y otras empresas de desarrollo de aplicaciones es monitorear y probar regularmente las aplicaciones móviles en busca de intrusiones de terceros y vulnerabilidades de seguridad. Sin embargo, algunas empresas de desarrollo de aplicaciones no están dispuestas a implementar la solución de seguridad SSL Pinning en sus aplicaciones iOS.
Las razones incluyen:
- La implementación de SSL Pinning durante la fase de desarrollo de la aplicación iOS es compleja. Esto puede afectar el funcionamiento de la aplicación, ya que los desarrolladores deben reescribir repetidamente el código, lo que hace que el proceso sea más tedioso y complicado.
- Aunque es posible eludir el SSL Pinning, los desarrolladores de aplicaciones deben estudiar el código binario para determinar el lenguaje en el que fue escrito. Luego deben eludirlo utilizando ese mismo lenguaje, lo cual es complicado.
- Cuando se cambian los certificados iOS anclados, también deben actualizarse en el código binario. Esto es una tarea muy tediosa para los desarrolladores de aplicaciones.
- Muchas empresas evitan invertir en recursos de SSL Pinning (certificados SSL) debido a fallas de seguridad y a la falta de conocimiento para manejar las complejidades de la implementación del proceso.
Conclusión
Compra un Certificado de Firma de Código de un proveedor de certificados SSL de renombre para asegurar tu aplicación iOS y su código. Anclar estos certificados de seguridad a la aplicación iOS ayuda a prevenir el espionaje y las explotaciones de malware, garantizando así la seguridad de la aplicación y el código iOS.
SSL Pinning permite la verificación de la identidad del servidor en la parte superior de la cadena de confianza de SSL, ya que este proceso solo permite conexiones con el servidor designado que lleva el mismo certificado SSL que está almacenado en el paquete. La única desventaja de este proceso es que la aplicación con el SSL anclado necesita actualizarse durante la modificación de la clave SSL del servidor, ya que esta puede caducar.
Implementa una estrategia segura de SSL Pinning siguiendo las pautas de este blog y asegura la seguridad de tu aplicación, sus datos y su código.