El diseño, las características que ofreces e incluso la experiencia de usuario no son los aspectos más cruciales del desarrollo de apps iOS. La seguridad en apps iOS es quizás el aspecto más importante del desarrollo de apps para iOS. En el entorno digital actual, el robo de datos es una gran preocupación, y si no me crees, solo mira lo que Mark Zuckerberg ha estado haciendo en Washington los últimos días.
El escándalo de Cambridge Analytica sin duda ha abierto una caja de Pandora en términos de robo de datos y ciberseguridad, y los desarrolladores de iOS ahora deben, más que nunca, reforzar la seguridad de sus aplicaciones.
Así que, hoy, repasaremos las precauciones esenciales de seguridad en apps iOS que todo desarrollador debería tomar para evitar que su app sea blanco de hackers y ponga en peligro a sus clientes. Apple se toma la seguridad extremadamente en serio y, como resultado, proporciona muchas API que utilizan técnicas de hashing criptográfico y el Llavero de iOS para hacer que las apps de iOS sean seguras.
Conozcamos las características de Seguridad en Apps iOS:
Llavero (Keychain)
El Llavero de iOS es una base de datos especializada para almacenar metadatos y datos de usuario sensibles como claves de cifrado, contraseñas, certificados y otras pequeñas piezas de información. Se ha sugerido que el Llavero es el enfoque ideal para guardar pequeños fragmentos de datos esenciales. Cuando una app solicita acceso a un llavero, puede asegurarse de que cualquier otra aplicación en la que no confíe pueda acceder a la información almacenada en su interior. Los llaveros se pueden crear, añadir, eliminar y editar. Si asumías que utilizar métodos más simples como la codificación base-64 de contraseñas de usuario en UserDefaults
es suficiente para asegurar tu app, deberías reconsiderarlo.
Los hackers pueden superar fácilmente ese grado de seguridad y robar datos sensibles. Cuando se trata de la seguridad en apps iOS, es imperativo que emplees las tecnologías iOS más avanzadas disponibles.
Claves criptográficas, cadenas de texto y certificados son todos almacenados en llaveros, además de contraseñas. La contraseña maestra puede ser utilizada para bloquear un llavero completo, haciendo que sea difícil para cualquiera abrirlo sin ella. Esto garantiza que solo las aplicaciones autorizadas, en tu instancia, tú, tienen acceso a la información almacenada allí. Cuando un usuario inicia sesión, se le pide una contraseña del llavero, lo que permite al usuario acceder a los datos guardados en el llavero.
El llavero se desbloquea tan pronto como se abre el dispositivo, haciéndolo más conveniente para los usuarios. Esto implica que el usuario tiene acceso siempre que esté presente. Para hacer las cosas aún más fáciles, cualquier app en un llavero de iCloud conceptualmente diferente puede acceder a un solo llavero. El llavero se limpia después de que un usuario cierra sesión, eliminando cualquier dato que pueda volver a introducirse o recuperarse de un servidor web.
Aunque utilizar llaveros en Swift pueda parecer una tarea laboriosa, Apple, como siempre, hace un excelente trabajo al simplificar las cosas para sus desarrolladores. Al utilizar un wrapper de Swift del código de ejemplo de Apple GenericKeychain
, puedes evitar el uso de API de bajo nivel y frameworks de seguridad escritos en C.
Criptografía
Si bien el llavero proporciona un lugar seguro para almacenar datos críticos, estás lejos de haber terminado con la seguridad de iOS. Incluso al guardar datos en un llavero, deben estar cifrados a fondo. Guardar contraseñas directamente nunca es una buena idea. Si un atacante obtuviera acceso al llavero de Apple, podría descubrir tus contraseñas y otra información crítica expuesta. Por eso necesitas usar un método de cifrado fuerte.
Hay algunas opciones para lograr esto. Para empezar, podrías usar el framework CommonCrypto
de Apple. Admite el cifrado y descifrado a bajo nivel en C. Sin embargo, CommonCrypto
puede ser un poco complicado de manejar, especialmente si estás usando Swift. Los llaveros, sin embargo, ofrecen un grado de complejidad a los desarrolladores de iOS, a pesar de su nivel de seguridad y versatilidad. CryptoSwift
, una biblioteca popular y en crecimiento de métodos criptográficos convencionales y seguros escritos en Swift, es otra opción. CryptoSwift
es gratuita y de código abierto, y cubre la mayoría de los problemas de seguridad en apps iOS.
Hashing
Una función hash criptográfica es un algoritmo y una técnica que convierte todos tus datos en un valor de salida de tamaño fijo. Está diseñada para que sea difícil reconstruir o revertir una buena función hash. También debe ser única, sin que ningún otro valor de entrada produzada el mismo resultado. Existe un protocolo llamado Hashable
en Swift, y exige que cada elemento que cumpla con Hashable
tenga un valor hash. Este valor hash es un número entero que es el mismo que el anterior.
La función hash más utilizada es SHA-1. Es un algoritmo del gobierno de los Estados Unidos. A partir de cualquier dato de hasta 2^64 bits de longitud, SHA-1 genera un hash de 160 bits. También puedes utilizar algoritmos como SHA-2, MD5 o técnicas basadas en curvas elípticas. El otro componente del hashing es el salting (uso de «sal»), que hace que tus datos sean aún más ilegibles si un hacker logra acceder a ellos. La sal son datos aleatorios que se introducen en tus datos, hasheándolos en una «sopa de letras» que nadie puede entender sin la clave. Como resultado, usar una «sal» aumenta la complejidad del hash, lo que dificulta aún más la tarea de un hacker.
El nivel de peligro de Android vs. iOS
El sistema operativo iOS de Apple ha sido considerado durante mucho tiempo como el más seguro de los dos sistemas operativos en algunos sectores. ¿Por qué? El sistema operativo utilizado por Apple es un sistema cerrado. Apple no pone su código fuente a disposición de los desarrolladores de apps, y los propietarios de iPhone y iPad no pueden cambiar el código de sus dispositivos. Los hackers tendrán más dificultades para encontrar vulnerabilidades en los dispositivos iOS como resultado de esto.
Los dispositivos Android, por otro lado, se basan en software de código abierto, lo que permite a los usuarios personalizar los sistemas operativos de sus teléfonos y tabletas. Si los propietarios «juegan» demasiado, corren el riesgo de comprometer la seguridad de sus dispositivos. Luego está el problema de los propios fabricantes. Los hackers descubrirán una debilidad en el código si un fabricante de teléfonos lanza un nuevo dispositivo con un cambio en el sistema operativo Android.
Debido a que Android impulsa tantos dispositivos móviles hoy en día, también es más frecuentemente atacado por hackers. La prominencia mundial del sistema operativo Android lo convierte en un objetivo más atractivo para los hackers. Como resultado, los teléfonos inteligentes Android son más vulnerables al malware y los virus que estos criminales propagan.
Sin embargo, esta no es toda la historia. Si bien se cree que iOS es más seguro, los hackers aún pueden atacar iPhones y iPads. Los propietarios de dispositivos Android y iOS deben ser conscientes del posible spyware y los virus, y deben tener precaución al instalar programas de tiendas de apps de terceros. Descargar programas de sitios confiables como Google Play y la App Store de Apple, que evalúan las apps que ofrecen, es la opción más segura.
Luego están los ataques de ingeniería social, en los que los hackers intentan persuadir a las víctimas para que entreguen credenciales de inicio de sesión, acceso a cuentas bancarias y otra información personal. No importa qué sistema operativo móvil estés usando: tanto iOS como Android son susceptibles a los intentos de phishing.
Actualizaciones y parches de seguridad para Android e iOS disponibles
¿Buscas una forma de mantener seguro tu teléfono o tableta Android? Siempre actualiza tu sistema operativo Android en tus dispositivos móviles a la versión más reciente. Android se actualiza regularmente. Es tentador posponer su instalación, especialmente cuando la vida se vuelve agitada. Estas actualizaciones, sin embargo, están destinadas a ayudar a defender tus dispositivos Android de los riesgos de seguridad más recientes. Ignorar estas actualizaciones puede poner en peligro la seguridad de tu teléfono o tableta. Las actualizaciones de iOS de Apple suelen ser eventos más significativos, que impulsan a los propietarios de iPhone y iPad a instalarlas tan pronto como estén disponibles.
Los propietarios de dispositivos Android y iOS pueden, por supuesto, habilitar las actualizaciones automáticas en sus dispositivos. Cuando las actualizaciones de Android o iOS estén disponibles, sus dispositivos se actualizarán automáticamente a las versiones más recientes de sus sistemas operativos.
Integración de hardware
Gran parte de la seguridad de un dispositivo Android está determinada por su hardware. En pocas palabras, ciertos fabricantes hacen un mejor trabajo para garantizar que las medidas de seguridad incorporadas de Android funcionen correctamente. Samsung es un excelente ejemplo. Todos los teléfonos, tabletas y dispositivos wearables de Samsung vienen con el sistema de seguridad Knox preinstalado. Cuando un usuario enciende un dispositivo móvil Samsung, esta plataforma permite un procedimiento de arranque más seguro, evitando que se inicien aplicaciones ilegales.
¿Cuál es tu mejor apuesta? Quédate con la tienda Google Play para Android. Hay miles de aplicaciones disponibles en Google Play. Simplemente no hay necesidad de obtener aplicaciones de Android de ningún otro lugar. Puedes aumentar tus posibilidades de instalar un programa infectado si te sales de Google Play. Lo mismo puede decirse de iOS. La App Store de Apple es el mejor lugar para buscar.
Android vs. iOS: ¿Cómo afecta el sistema operativo móvil de cada plataforma a la seguridad?
Android es un sistema operativo móvil.
Popularidad
Android es un sistema operativo muy popular. Como resultado, los desarrolladores están creando continuamente nuevas apps para operar en la plataforma. Eso es generalmente beneficioso para los usuarios. Los hackers crean software que infecta tus dispositivos móviles, que es cuando surge el problema. Google Play tiene un sistema de revisión de apps en marcha.
Lamentablemente, el procedimiento es considerablemente menos estricto que el que deben seguir los desarrolladores al enviar programas a la App Store de Apple. Por lo tanto, es más sencillo que las apps maliciosas lleguen a la tienda Google Play, y que los consumidores instalen una sin querer. Una de las principales preocupaciones es que el usuario final puede autorizar la instalación de software de Fuentes Desconocidas en un dispositivo Android. Esto implica que puedes instalar software que no provenga de Google PlayStore en tu dispositivo Android. El programa, o APK, puede descargarse e instalarse directamente desde un sitio web, evitando el proceso de revisión de Google PlayStore.
Los dispositivos Android son de código abierto, lo que significa que su código fuente puede ser modificado por sus propietarios. A los usuarios que desean la libertad de personalizar el funcionamiento de sus dispositivos móviles les gustará esto. Sin embargo, puede hacer que los teléfonos inteligentes Android sean vulnerables a los hackers. Los usuarios pueden crear accidentalmente una oportunidad para los hackers al modificar el código fuente de su dispositivo.
iOS es el sistema operativo móvil de Apple.
Aquí tienes un vistazo al sistema operativo iOS de Apple.
Controles más estrictos
Introducir apps en la App Store es más desafiante para los desarrolladores. Esto se debe al procedimiento de filtrado más severo. Como resultado, es menos probable que un programa malicioso encuentre su camino en la tienda de Apple. Debido a que el sistema operativo iOS es utilizado por menos dispositivos móviles, es un objetivo menos atractivo para los hackers. Esto tiene sentido: al enfocar más sus ataques en el sistema operativo Android, más popular, los hackers y ciberdelincuentes pueden asegurar un mayor número de víctimas.
Conclusión
Hay una gran cantidad de técnicas de seguridad adicionales que puedes usar para mantener el desarrollo de tu app iOS al día con las últimas políticas de seguridad, pero el llavero y el hashing son la base de la seguridad en apps iOS. Este artículo sirve como punto de partida para que tomes conciencia sobre la seguridad en apps iOS. Con la cantidad de información que revelamos sobre nosotros mismos en internet, especialmente a través de las aplicaciones, los desarrolladores ahora tienen un gran desafío. Afortunadamente, hay varias herramientas, algoritmos, API y bibliotecas excelentes disponibles para ayudarte en tu trabajo.