Viafirma Mobile iOS: Restricción de acceso a los certificados digitales instalados

Hace ya casi dos años que publicamos Viafirma Mobile para iOS, nuestra aplicación nativa de Viafirma Platform para poder realizar autenticación fuerte y firma electrónica avanzada con certificados digitales en formato software (PKCS#12). Esta aplicación hace las funciones de «applet de firma» en un entorno como iOS, donde no se dispone de máquina virtual de Java; por ello, interactúa con los certificados instalados localmente en el dispositivo móvil para poder realizar las operaciones criptográficas necesarias.

Para instalar los certificados, debemos utilizar la capacidad de compartir ficheros con aplicaciones de iOS a través de iTunes, cargando nuestro certificado en formato PKCS#12 (y protegido con PIN) a la aplicación Viafirma instalado en nuestro iPhone, iPad, iPod Touch, etc. Así, Viafirma Mobile puede desplegar dichos certificados en el keystore local de la aplicación.

Algunos clientes nos han preguntado por qué no usamos el sistema de profiles disponible en iOS a nivel de dispositivo, en lugar de usar el repositorio local de la aplicación. Por ejemplo, disponiendo del certificado en formato PKCS#12 en el iPhone o iPad (adjunto en un email por ejemplo), se puede instalar sobre el dispositivo y queda visible en los Profiles (Ajustes -> General -> Perfiles). De hecho, si hacemos esto, podemos tener autenticación con certificado en cualquier aplicación que tenga configurada la autenticación con certificado sobre SSL; al navegar por la aplicación con Safari, el dispositivo iOS nos pide que escojamos qué certificado queremos utilizar (ver figura adjunta). Si existe esto, ¿por qué no interactuamos con los profiles del dispositivo en lugar de utilizar el keystore local? Se debe poder, ya que tanto Safari (para autenticar) como Mail (para firmar un email) pueden utilizar el certificado almacenado en el Profile…

viafirma.com

La respuesta es fácil: porque, desgraciadamente, NO se puede.

Apple restringe a las aplicaciones no firmadas por ellos el acceso a los servicios de keychain que no sean locales de la aplicación. Esto puede ser consultado en Apple Developers.

Y más concretamente, este párrafo que acaba con toda esperanza, de momento:

Keychain Access Controls
iOS: The iOS gives an application access to only its own keychain items. The keychain access controls discussed in this section do not apply to iOS.
Eso deja como opción inicial en iOS el uso del keychain local de la aplicación, siguiendo los dictados del Apple. En todo caso, tal y como publicamos hace unos días, para alcanzar un nivel de firma electrónica reconocida en dispositivos móviles, en Viafirma hemos desarrollado el conector nativo con DNI electrónico en dispositivos iOS. Ello permite interactuar con el DNI electrónico para realizar autenticación y firma electrónica reconocida directamente en los dispositivos móviles, lo cual además mejora enormemente la experiencia de usuario en comparación con las alternativas tradicionales de lectores + drivers en PC’s, Mac, etc. Esta librería es susceptible de poder ser embebida en otras plataformas y desarrollos de terceros como @Firma, etc., de forma que se podría conseguir que cualquier ciudadano pudiese interactuar con la eAdministración en sus smartphones y tablets, con la plena validez legal que otorga la firma electrónica reconocida según la Ley de Firma Electrónica española, y con una mejor experiencia de usuario.

Keychain Access Controls
iOS: The iOS gives an application access to only its own keychain items. The keychain access controls discussed in this section do not apply to iOS.