Pinning de SSL
El SSL Pinning, también conocido como Certificate Pinning, es una técnica de seguridad implementada para asegurar que una aplicación establezca conexiones seguras solo con servidores previamente autorizados. Esta verificación se realiza durante la negociación SSL/TLS, validando el certificado digital o, en el caso de iOS, la clave pública asociada al certificado presentado por el servidor.
El pinning de SSL actúa como un mecanismo adicional de validación, garantizando que solo se acepte el certificado legítimo o su clave pública previamente configurada, independientemente de las configuraciones de confianza del sistema operativo. Con ello, la técnica frena intentos de interceptación, captura o modificación de las solicitudes intercambiadas con el backend, reduciendo significativamente el riesgo de ataques del tipo Man-in-the Middle (MITM).
En el entorno iOS, el MAD utiliza Public Key Pinning, validando el hash de la clave pública del certificado (SPKI – Subject Public Key Info) presentado por el servidor. Durante el establecimiento de la conexión, la clave pública recibida se compara con los valores previamente configurados en la aplicación. La comunicación solo se considera válida cuando hay coincidencia con uno de los pins configurados.
Para que el mecanismo funcione correctamente, es necesario identificar previamente todos los dominios utilizados por las APIs de la aplicación, listarlos y configurarlos explícitamente en la política de pinning, garantizando que todas las comunicaciones sensibles estén debidamente protegidas.
El Public Key Pinning es el método recomendado y estándar en iOS. En este modelo:
• Se fija el hash de la clave pública (SPKI) del certificado. • Este enfoque permite la renovación del certificado sin la necesidad de actualizar la aplicación, siempre que se mantenga el mismo par de claves pública y privada.
Para la configuración Public Key Pinning:
<key>ssl-pinning</key>
<true.>
<dict>
<key>*.example.comr</key>
<string>4d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM>
</dict>
<key>ssl-pinning-fallback<key>
<true/>
Última actualización