Menú principal

Mostrando entradas con la etiqueta swift. Mostrar todas las entradas
Mostrando entradas con la etiqueta swift. Mostrar todas las entradas

miércoles, 16 de octubre de 2019

Safepost actualizado para iOS 13

Hoy podemos anunciar que después de un largo proceso de desarrollo ya tenemos la versión 1.1.0 de Safepost en la Apple Store. Esta versión acompaña a la 1.0.8 con una serie de novedades como el soporte para México, un proceso de login mejorado, nuevas animaciones y un modo oscuro para iOS 13, al igual que fallo de bugs incómodos y una refactorización interna para futuras versiones.

Sin entrar en todo el desarrollo interno de la aplicación, vamos a hablar un poco de todo lo que nos hemos podido beneficiar de iOS 13 adaptando ligeramente la aplicación. Y es que Apple ha añadido bastantes mejoras invisibles que hacen que nuestra app sea sustancialmente mejor con poco esfuerzo. 

Como hemos podido adelantar en otras entradas, en esta nueva versión del sistema operativo móvil de Apple da soporte para que las apps se adapten al nuevo modo oscuro del sistema. El proceso de desarrollo es sencillo, Apple recomienda usar colores semánticos (colores como labelColor o backgroundColor) para unificar la aplicación con el sistema, al igual que colores personalizados en el caso de necesitar colores únicos para la aplicación, de esta manera podemos colocar el color deseado para el aspecto claro y su contrapartida para el modo oscuro e iOS cambiará automáticamente entre ellos sin necesidad de escribir código. 

Figura 1. Storyboard en modo oscuro

Por otro lado, solo con compilar la aplicación para iOS 13, las presentaciones modales de la aplicación se transformarán al nuevo estilo del sistema operativo, aportando nuevas animaciones y la capacidad de descartar la vista con un gesto hacia abajo perfecto para pantallas grandes. Otro detalle a tener en cuenta es la reducción del tamaño de aplicación, gracias a la introducción de la estabilidad del ABI en Swift 5, la reducción del tamaño de algunos Frameworks y la optimización de los recursos de la interfaz la aplicación ha pasado de 15MB a 8MB. Esta es una gran mejora que agradecerán muchos usuarios, ya que verán como ganan bastante espacio en sus dispositivos a medida que se vayan actualizando sus aplicaciones. 

Y hasta aquí el repaso de las novedades de iOS 13 de cara a desarrolladores, hay muchas otras características interesantes como la librería CriptoKit para cifrar las comunicaciones, Sign In With Apple para autenticación y las mejoras en accesibilidad que estamos evaluando en adaptar para continuar mejorando la aplicación. Si tenéis curiosidad de probar la app, aquí tenéis el video y el enlace de descarga

domingo, 13 de enero de 2019

Fue Noticia en seguridad Apple: del 24 de diciembre al 13 de enero

Nos adentramos en 2019 y en Seguridad Apple aprovechamos para brindaros nuestros mejores deseos para el año que entra. A continuación os traemos algunas de las mejores noticias en el ámbito de la seguridad informática relacionadas con el mundo de la manzana. Este es nuestro nuevo Fue Noticia, sección en la que os traemos un breve resumen de las noticias más relevantes de las últimas tres semanas. Todo ello aderezado con el mejor contenido de otros sitios de referencia.

Comenzamos el lunes 24 deseándoos unas felices fiestas y avisándoos de que a pesar de las Navidades la actividad en este blog no cesa para que podáis disfrutar de interesantes artículos durante las vacaciones. 

El martes 25 os contamos como una vulnerabilidad de WebKit afecta a las últimas versiones de Safari permitiendo la ejecución de código arbitrario de manera remota.

El miércoles 26 os explicamos cómo podéis mejorar la seguridad de vuestro iPhone al desactivar Siri cuando la pantalla está bloqueada.

El jueves 27 os enseñamos un Shorcut para el teclado con el que podréis acceder rápidamente al menú de forzar detención en Mac.

El viernes 28 os avisamos de la llegada de la beta de iOS 12.1.3 para desarrolladores y os contamos cuales son las novedades que incorpora.

El sábado 29 aprovechamos el final del año para hacer una recopilación de las mejores anécdotas y curiosidades de la historia de Apple de las que os hemos hablado este año.

El domingo 30 os hablamos de algunas herramientas de gestión de contraseñas en iOS y de la importancia de los TOTP.

El lunes 31 aprovechamos para despedir el año deseándoos unas felices fiestas y una buena entrada en el 2019.

El martes 1 os alertamos de que algunas aplicaciones comparten nuestra ubicación sin permiso y os contamos como evitarlo en iOS.

El jueves 3 damos comienzo a una serie de dos artículos en la que recopilamos algunas de las mejores herramientas preinstaladas de Mac.

El viernes 4 finalizamos la serie Recopilación navideña de herramientas para Mac, la serie en la que os hablamos de algunas de las mejores aplicaciones preinstaladas de Mac.

El sábado 5 finalizamos nuestra recopilación de las mejores anecdotas y curiosidades de la historia de Apple de las que os hemos hablado.

El lunes 7 os hablamos de la actualización del USB C con USB Type-C Authentication Program permitiendo el uso de criptografía para la autenticación de dispositivos.

El martes 8 os contamos cuales son las novedades del lenguaje de programación Swift 5, uno de los lenguajes predilectos de Apple.

El miércoles 9 os alertamos del perfeccionamiento de las técnicas en los ataques Phishing telefónicos a los dispositivos de Apple.

El jueves 10 os recordamos que el ramsonware sigue siendo una amenaza global y os contamos las predicciones de Bitdefender para este año.

El viernes 11 os hablamos de lo que supondrá la participación de Apple, Tesla y otras grandes empresas de la Nasdaq en el blockchain

El sábado 12 de enero hablamos sobre, seguramente, el huevo de pascua más famoso de la historia de Apple. Os recomendamos su lectura, ya que siempre es interesante conocer la historia de Apple. Sin duda, unas semanas de noticias e interesantes artículos en Seguridad Apple.

martes, 8 de enero de 2019

Novedades de Swift 5

Swift lleva unos cuantos años siendo el lenguaje de programación predilecto de Apple. Desde su aparición en 2014 hemos visto como en cada edición de la WWDC ha ido cobrando más protagonismo, sustituyendo a Objective-C en la mayoría de demos y talleres. Muchas de las grandes deficiencias de este lenguaje se han ido subsanando a lo largo de las distintas iteraciones, hasta llegar a la última versión propuesta, Swift 5.

Esta versión se caracteriza por tener menos cambios en sintaxis y funcionalidad que sus predecesoras, pero cuenta con un gran característica que lleva aquejando a Swift desde sus inicios: la estabilidad de la Application Binary Interface o ABI. ¿Qué es ABI?, pues es una interfaz que permite a los binarios de Swift interactuar con otras librerías y componentes. Básicamente define detalles a muy bajo nivel como las llamadas a funciones, la representación de datos en memoria, donde se encuentran los metadatos o como acceder a ellos.

Actualmente Swift tiene un gran problema, y es que no tiene una ABI estable, esto significa que cada binario compilado (o sea, cada aplicación escrita en Swift), empaqueta su propia versión de la Librería Dinámica de Swift, ya que esta no reside en el propio sistema operativo. Por ello, si una app usa Swift 3.0, contiene la Librería Dinámica con ABI 3.0, mientras que si otra está compilada con Swift 4.2 contiene la Librería Dinámica con ABI 4.2. Por lo tanto si con Swift 5 llegamos a tener una ABI estable, Swift podrá ser integrado en el sistema operativo y su ABI podrá ser compatible con todas las versiones de Swift posteriores a la 5.

Figura 1: App compilada con Swift 4.2

Esta mejora supone ciertas ventajas, como que el tamaño de las aplicaciones se reducirá, los cambios en la sintaxis de Swift serán menos drásticos, habrá menos migraciones y se podrán crear Frameworks pre-compilados en Swift. También acarrea ciertas desventajas, como que se limita los cambios en las Interfaces Públicas y los Símbolos, al igual que restringe el crecimiento y la evolución de Swift como estábamos acostumbrados. Aunque esto último, viendo el grado de madurez actual del lenguaje, ya no es tan problemático como en sus inicios.

Figura 2: Raw Strings y @unknown default

Por otro lado, se han introducido pequeñas mejoras, como la habilidad de crear “raw strings” mediante el símbolo # entre la cadena de texto. Esto es bastante útil en textos que tienen que escapar comillas o en expresiones regulares. También se han añadido “Dynamically callable types”, que permiten marcar un tipo como directamente invocable, esto permite a Swift funcionar mejor con lenguajes dinámicos como Python y Javascript. Junto a esto, también se ha introducido el atributo @unknown para diferenciar entre los casos por defecto en un switch de un enumerado y los casos no contemplados.

Así que, quitando de lado unas pequeñas mejoras de sintaxis y otras pocas incorporaciones, estas serían las principales novedades de Swift 5, un lenguaje de programación en alza, con sus grandes ventajas pero también con múltiples inconvenientes. La comunidad en torno a este lenguaje no hace más que crecer, teniendo un repositorio muy activo y una página donde poder informarte de todas las mejoras que animo a que consultéis.

domingo, 30 de diciembre de 2018

Herramientas de gestión de contraseñas en iOS 12

Uno de los grandes problemas que concierne a la seguridad de nuestras identidades online año tras año es la pésima política de contraseñas que los usuarios solemos tener en nuestras diferentes cuentas. Repetir contraseñas en múltiples servicios, usar contraseñas genéricas, no tener activado un segundo factor de autenticación o simplemente tener nuestras credenciales apuntadas en texto plano son algunos de los ejemplos que ponen cada día en riesgo la seguridad de nuestros servicios.

A lo largo de los años han sido ya muchas empresas las que han propuesto soluciones a estos problemas: gestores de contraseñas, diferentes métodos de autenticación con segundo factor o fortificación de contraseña en base a unas reglas predeterminadas. Medidas que grandes empresas como Google, Microsoft y Apple han sabido implementar en sus productos.

Así, como comentamos anteriormente en este blog Apple ha ampliado las herramientas de gestión de contraseñas en iOS 12, añadiendo funcionalidades como la generación de contraseñas automáticas, la identificación de contraseñas ya usadas y el relleno automático de códigos TOTP mediante Siri. Esto se suma a características ya existentes como la integración de iCloud Keychain en apps nativas o la gestión de contraseñas en todo el ecosistema de dispositivos Apple. Además de todo esto, iOS 12 ha habilitado el soporte de gestores de contraseñas de terceros, como 1Password o Lastpass.

Figura 1: iCloud Keychain, Autofill Password y Sugerencias de Contraseñas en iOS 12
Todas estas novedades se han puesto a disposición de los desarrolladores, para hacer que nuestras aplicaciones sean lo más seguras posibles. Algunas de las características son soportadas nativamente por el sistema, como el relleno automático del sistema o la sugerencia de códigos TOTP, que infieren en los cuadros de texto, detectando si pertenecen a una inserción de contraseña o de código TOTP para aplicar las sugerencias. Aún así desde Apple recomiendan añadir las líneas de código precisas para hacer que estas funcionalidades sean soportadas al 100% de forma nativa, así que pasamos a describir como adaptar tu app para que soporte las nuevas medidas de seguridad en iOS 12.

Para poder implementar todo lo que vamos a explicar en la siguiente parte del artículo, es necesario pertenecer al Programa de desarrolladores de Apple. En este ejemplo nos basaremos en el código descrito en los artículos de Lyndsey Scott y Vineet Choudhary, donde explican en profundidad como montar un servicio web para sincronizar la autenticación de la aplicación móvil mediante el apple-app-site-association. Nosotros nos centraremos en la parte que concierne a iOS.

Lo primero sería acceder al portal de desarrolladores de Apple. Allí, nos dirigiremos a la sección de Certificates, Identifiers & Profiles, para crear un nuevo App ID pinchando en en el botón de Add. Allí añadiremos nuestro Bundle ID, que se corresponderá con el de la aplicación, para posteriormente dentro de Application Services añadir las opciones de Associated Domains y AutoFill Credential Provider, que como sus nombres indican, permiten asociar un dominio existente a nuestra aplicación y permiten rellenar las credenciales de nuestra app a través de iCloud Keychain. Una vez registrada la app, habría que añadir el Team ID y App ID al fichero apple-app-site-association de nuestro servicio.

Figura 2: App ID de la aplicación

Ya en Xcode, iremos al fondo de la pestaña General. Allí, deberemos añadir AuthenticationServices.framework dentro de la sección Linked Frameworks and Libraries para habilitar el framework de gestión de autenticación en nuestra aplicación. Posteriormente en Capabilities habilitaremos Associated Domains, añadiendo el dominio de nuestro servidor y AutoFill Credential Provider para dejar habilitadas las funciones en nuestra app.

Una vez hecho eso, solo tendremos que implementar el mecanismo de autenticación contra nuestro servidor y editar el tipo de Text Field que queremos en cada parte del registro. Para el nombre de usuario pondremos Username en el tipo de contenido. Dentro de la pantalla de acceso pondremos Password en el tipo de Text Field, mientras que en la pantalla de registro pondremos New Password, para habilitar la función de sugerencia de contraseña. Por último pondremos el  tipo .oneTimeCode al textfield que se encargará de introducir el TOTP enviado por SMS.

Por último, solo tendremos que implementar las reglas de validación de contraseñas que queramos implementar en nuestro servicio. Para ello, Apple tiene habilitada una página donde probar las reglas y generar los patrones para nuestra app. Una vez tengamos las reglas que nos interesen, las introduciremos en la casilla Password Rule  del Text Field del tipo New Password para que dentro de la sugerencia de nueva contraseña se adapte a nuestros requisitos.


Así, dejamos un video de un prototipo funcional de una aplicación que hemos creado siguiendo los pasos anteriores siguiendo el código fuente del artículo de Lyndsey Scott, allí podréis descargar el código fuente de la aplicación con todo lo necesario para implementarlo en vuestras apps.

viernes, 7 de septiembre de 2018

Integración de Latch en la TouchBar del MacBook Pro

En este blog hemos hablado en varias ocasiones sobre Latch y las distintas implementaciones y servicios que ofrece para nuestros dispositivos Apple. En esta ocasión vamos a presentaros la integración de Latch en la Touchbar de los nuevos MacBook Pro. Esta pequeña aplicación hace uso de la librería de Latch para Swift creada para el modulo de Exfiltración multiplataforma, que recoge una serie de métodos para controlar la sincronización, consulta y modificación de cerrojos. Así que en este post explicaremos como configurar el proyecto para hacerlo funcionar en cualquier Mac con TouchBar

Creación de cuenta de Latch

En primer lugar tenemos que crear una cuenta en el Developer Area de Latch. Una vez hecho, nos dirigiremos al apartado de Mis aplicaciones para añadir una nueva aplicación. Procederemos a rellenar los datos y guardaremos el ID de aplicación y el Secreto. Todos estos pasos están detallados la entrada del blog sobre como instalar y configurar Latch para proteger macOS 



Figura 1: Aplicación de Latch del Area de Desarrolladores

Descarga e instalación

Con la aplicación Latch creada, tendremos ahora que descargar el proyecto de Github y abrirlo en XCode. A grandes rasgos el proyecto consta de dos partes:
  • El controlador de la ventana principal, con un SegmentedControl sincronizado a una variable para controlar el estado y una ventana para realizar el proceso de enlace con Latch. 
  •  El delegado de la Touchbar con un SegmentedControl sincronizado a la misma variable del segmento de arriba. Con esto conseguiremos que ambas interfaces estén sincronizadas en todo momento.
Por otro lado tenemos un objeto de la librería de Latch en Swift con el que controlaremos nuestra aplicación Latch y podremos realizar el proceso de enlace. Ya solo queda colocar el Application ID y el Secret en las constantes APP_ID y APP_SECRET, ejecutar la aplicación desde XCode e introducir el token generado en Latch para sincronizar el proyecto y poder tener operativo Latch en la TouchBar.
Figura 2: Proyecto en XCode

PoC: Jugando con la Touchbar

Por último vamos a mostrar una prueba de como funciona el proyecto. En el video podemos ver la aplicación Latch para iOS ejecutándose en un iPhone junto a el emulador de la TouchBar. Al haber introducido previamente el token de sincronización el cuadro de dialogo para introducirlo estará oculto. Al iniciar la aplicación, el estado del SegmentedControl se sincroniza con el estado de Latch y a partir de ese momento, al cambiar de estado en los botones de la TouchBar cambiará también el estado del cerrojo de nuestra aplicación.










jueves, 5 de junio de 2014

iOS 8: Domótica, Salud, Swift y los riesgos de privacidad

Esta semana Apple ha anunciado iOS 8, la nueva versión de su sistema operativo móvil. Una de las novedades, sin duda la más esperada, es que será más abierto. La propia compañía planea poner 4000 nuevas APIs a disposición de desarrolladores que deseen programar sus propias herramientas.

Además de incluir frameworks nuevos, como HealthKit, que permite la comunicación entre apps de salud, y HomeKit, diseñado para gestionar el hogar vía domótica, en iOS 8 ofrece una gran personalización de la experiencia de usuario. Será posible añadir widgets propios al centro de notificaciones, así como programar acciones para Siri como por ejemplo ajustar la calefacción.

Sin duda alguna, esto es un paso adelante para Apple, que de esta manera entra de lleno en el mercado del Internet de las Cosas (IoT). Meterse en un mercado como IoT es complejo, a la vez que presenta algunos problemas relacionados con el mundo de la seguridad, tal y como comentan en ZDNet. Las nuevas posibilidades, que incluyen comunicaciones entre aplicaciones con redes externas, añadir funcionalidad a la pantalla de bloqueo, abren nuevas vías de acceso para potenciales atacantes, aumentando la superficie de exposición de los dispositivos. Uno de los principios de la defensa en profundidad (DiD) es exactamente lo contrario, mínima exposición posible.

Apple deberá pues hacer frente a dos nuevos problemas de seguridad. Por un lado, el boom de desarrolladores que derivará de la salida al mercado de iOS 8, llenando la App Store de nuevas aplicaciones que no en todos los casos estarán programadas de una manera segura.

Figura 1: El entorno del lenguaje Swift para desarrollo de apps

Por otra parte, la gran cantidad de información personal sensible que capturarán los dispositivos que hagan uso de HealthKit y HomeKit, que deberá ser correctamente protegida.

Para anticiparse parcialmente a estas situaciones, Apple ha liberado también Swift, su nuevo lenguaje de programación, que automatiza comprobaciones de seguridad para prevenir el desarrollo de código vulnerable (por ejemplo, comprobando posibles desbordamientos, gestión automática de memoria, etcétera). Aunque no pretende sustituir a Objective-C, es de esperar que Swift se vuelva bastante popular en los próximos meses. Una cosa está clara: si Apple quiere que sus novedades tengan buena acogida, deberá proporcionar a los usuarios una sensación de seguridad y confianza suficiente frente a las nuevas amenazas.

Entrada destacada

Proteger tu cuenta de Google y de Gmail con Latch Cloud TOTP #Latch #Gmail #Google

La semana pasada se liberó la nueva versión de Latch y nuestro compañero Chema Alonso hizo un repaso de todo ello en su artículo Latch...

Otras historias relacionadas

Entradas populares