XCBLOG
On octubre 31, 2021 by adminiOS Code Signing Tutorials
Esta es la primera parte de la serie de tutoriales de iOS Code Signing. Esta serie cubre los fundamentos del proceso de firma de código de iOS. Puedes encontrar todos los posts de la serie enlazados a continuación
- Firma de código de iOS: 1. Primeros pasos
- Firma de código de iOS: 2. Solicitudes de firma de certificados
- Firma de código de iOS: 3. Certificados
- Firma de código de iOS: 4. Perfiles de aprovisionamiento
- Firma de código de iOS: 5. Firma de aplicaciones de iOS
*******************************************************
En realidad, los dispositivos iOS sólo ejecutan aplicaciones que han sido firmadas por desarrolladores de confianza, a no ser que tengas dispositivos iOS con jailbreak. Si usted es un ingeniero de iOS, debe haber luchado con la firma de código en algún momento. Como la firma de código es una de las tareas dolorosas y engorrosas para los desarrolladores de iOS, pero no pueden huir de las actividades de firma de código. La firma de código y los perfiles de aprovisionamiento han sido una molestia continua y seguirán estando ahí hasta que los desarrolladores entiendan completamente los fundamentos de la firma de código. Este es un post introductorio que explica el proceso de firma de código con sus beneficios y limitaciones.
Acerca de esta serie
La firma de código de las aplicaciones iOS es uno de los temas candentes para todo desarrollador iOS. Aunque hay múltiples recursos disponibles en línea, así como Apple tiene una documentación limpia sobre el proceso de firma de código, sigue siendo un misterio. En esta serie, vamos a tratar de entender el proceso de firma de código desde el principio, incluyendo lo que se necesita para la firma de código para el proceso de firma de código en sí. También exploraremos la interfaz gráfica de usuario, así como las formas de hacer las cosas desde la línea de comandos, siempre que sea posible. Comenzaremos con las solicitudes de firma de certificados para obtener el certificado de desarrollo de iOS, luego cubriremos el certificado y sus partes internas. Después de entender los certificados, vamos a hacer una inmersión profunda en los perfiles de aprovisionamiento y, finalmente, vamos a entender el proceso de firma de código.
Estas series están escritas en mis propias palabras o lenguaje haciendo algunas investigaciones en la web y la documentación de Apple. He cubierto todo este material de referencia en el post final. También he adjuntado algunas capturas de pantalla de Apple Developer portal y Xcode para que los lectores puedan entender los conceptos. He intentado ocultar todo el contenido sensible, pero si hay algo expuesto por error, por favor no me hackeen 🙂
Firma de código
Antes de saltar a la forma de Apple de firmar el código de las apps de iOS, vamos a explorar qué es la firma de código en general. En la vida real, firmamos diferentes contratos, acuerdos para varias cosas. ¿Por qué firmamos esos contratos? ¿Qué significa la firma para nosotros y por qué es importante? Es sencillo, porque la firma de los contratos nos protege legalmente y confiamos en que los términos y condiciones de los contratos no pueden ser alterados mientras el contrato esté en vigor. La firma también garantiza la seguridad de que el contrato procede de autoridades de confianza y no de estafadores. Significa que la firma de los contratos nos da seguridad, protección y confianza.
De manera similar, la firma de código es el proceso de firmar digitalmente cualquier forma de código para confirmar que quién escribió el código y garantizar que el código no ha sido cambiado o corrompido cuando fue firmado. La firma de código utiliza un hash criptográfico para verificar la autenticidad e integridad del código del software. En el mundo del software, la firma de código garantiza la identidad del autor, la integridad del código, el sistema de construcción y el control de versiones para que los usuarios del software se sientan seguros al utilizarlo. La firma de código utiliza varios términos de seguridad como clave pública, clave privada, certificados, firmas digitales, etc. Hay diferentes enfoques para la firma de código utilizados en las diferentes plataformas, por ejemplo, Linux, Windows, macOS.
Firma de código de iOS
Apple supuestamente tiene un mecanismo de seguridad muy potente, aparte de algunos fallos recientes que puede haber leído en las noticias. Es muy difícil para los hackers de sombrero negro romper este mecanismo. Apple también utiliza un fuerte mecanismo de firma de código para proporcionar la seguridad, la integridad y la seguridad de las aplicaciones de iOS descargadas de Apple App Store. La mayoría de las veces, la firma de código de iOS parece ser una magia que ocurre bajo el capó. Si funciona todo el mundo está contento y si no lo hace todo el mundo entra en pánico. La mayoría de los ingenieros de iOS no tienen ni idea de lo que sucede bajo el capó cuando las aplicaciones que escribieron están siendo firmadas. En los últimos días, Apple trató de hacer la firma de código menos dolorosa mediante la introducción de la función de firma automática en Xcode para que la actividad de firma de código no interrumpa el flujo de desarrollo principal. La firma de código en la plataforma de Apple se basa en la criptografía de clave pública en el estándar X.509. Discutiremos todas estas herramientas y técnicas más adelante en esta serie.
¿Por qué aprender sobre la firma de código de iOS
Como la mayoría de las tareas de firma de código están siendo manejadas por Xcode en estos días, entonces por qué debemos preocuparnos por la firma de código y por qué debemos invertir nuestro tiempo para aprender sobre ella?
Aquí están algunas de las razones para aprender sobre los internos de la firma de código:
- Atrás quedaron los días en que los ingenieros de iOS solían desplegar aplicaciones de iOS desde Xcode instalado en la máquina local. Las empresas están adoptando DevOps y CI/CD para desplegar el software tan pronto como se construya, por lo que todas las construcciones deben ser automatizadas sin ninguna interacción humana o de la interfaz gráfica de usuario.
- Hay miles de horas de desarrollador desperdiciadas porque la firma de código de Xcode falló y el desarrollador trata de arreglar los problemas de firma de código mediante la regeneración y la reparación de los certificados y los perfiles de aprovisionamiento.
- Las herramientas de terceros como Fastlane han hecho la construcción de secuencias de comandos mucho más fácil para los desarrolladores de iOS. Sin embargo, cuando Apple hizo cambios en las tecnologías subyacentes, Fastlane sigue rompiendo y los desarrolladores pasan horas, días y semanas arreglando los scripts de despliegue rotos. En algunos casos, los ingenieros tienen que esperar hasta que los nuevos cambios que se implementan en el Fastlane.
- Si usted es desarrollador de iOS / ingeniero y quiere ser un ingeniero de iOS para toda su vida, entonces usted no tiene que aprender acerca de estas cosas. Sin embargo, si quieres crecer en tu carrera entonces debes conocer las herramientas subyacentes, las tecnologías y todo el ecosistema iOS en detalles. No llegarás a Jefe Técnico de iOS o Arquitecto Técnico de iOS o funciones similares si no conoces estas tecnologías subyacentes, independientemente de lo bueno que seas en tus habilidades de desarrollo de iOS. Como arquitecto técnico, deberías ser capaz de arreglar problemas relacionados con la firma de código o infraestructuras similares de forma rápida y sin depender de Xcode u otras herramientas de terceros.
Espero que sea suficiente para convencer de lo importante que es la firma de código. Depende de ti si lo aprendes o lo dejas.
Prequisitos
Vamos a sumergirnos en el mundo de la firma de código de iOS. Vamos a cubrir todo desde cero en términos de lo que se necesita y lo que hace bajo el capó. Para empezar, necesitamos las siguientes cosas que creo que todo el mundo ya tiene si está leyendo este post.
- macOS
- Membresía de Desarrollador de Apple
- Xcode 9+
Una vez que tienes todo esto, estás listo para profundizar en las cosas de la firma de código de iOS.
Beneficios de la firma de código
Apple quiere que pasemos por el complejo proceso de firma de código porque tiene algunos beneficios para los usuarios reales. Los usuarios de aplicaciones iOS se sienten seguros cuando descargan las aplicaciones de la tienda de aplicaciones de Apple. La firma de código asegura que
- El desarrollador legítimo ha escrito este código y tiene una identidad del firmante o autor de las apps.
- La firma de código asegura que el código no ha sido alterado por alguien desde que fue escrito por el autor. Garantiza que el código producido por el autor es original y no hay nada inyectado en el código desde que es firmado por el autor.
- Los usuarios pueden descargar las apps de los desarrolladores en los que confían sin preocuparse demasiado por la seguridad.
La firma de código es para la seguridad de los usuarios de iOS para que se sientan seguros usando las aplicaciones que descargan de la tienda de aplicaciones.
Limitaciones de la firma de código
Aunque la firma de código es para la seguridad de los usuarios, hay algunos aspectos que no abordan los problemas de seguridad todo el tiempo.
- La firma de código garantiza que el código proviene de un desarrollador legítimo que es miembro del programa de desarrolladores de Apple, pero no garantiza que el código en sí mismo esté libre de vulnerabilidades de seguridad.
- La firma de código no garantiza que los plugins de las aplicaciones que se cargan dinámicamente durante la ejecución de las mismas sean seguros.
- No existe una tecnología de gestión de derechos digitales o de protección anticopia para el código firmado.
Ahora que, hemos cubierto la importancia de aprender sobre la firma de código y los beneficios y la limitación. En el siguiente post, vamos a ir a través del concepto importante donde el proceso de firma de código comienza i.e Certificate Signing Requests.
Continue reading Part 2-: Solicitudes de Firma de Certificados
Deja una respuesta