Estamos acostumbrados a hablar de Apple siempre dentro de su propio entorno o ecosistema. Si es a nivel desarrollo, es normal pensar que los lenguajes de Apple como Swift solo sirven para hacer apps para sus propios entornos, pero estaríamos cometiendo un craso error pensando esto. Swift es un lenguaje de código abierto, tiene soporte oficial de Linux (y muy pronto para Windows, que actualmente está en fase de pruebas) y de forma no oficial (gracias a la extensa comunidad de desarrolladores) podemos usarlo en sistemas tan variados como Raspberry Pi, Arduino e incluso tenemos soporte para servidores en cloud para todas las grandes infraestructuras como AWS, Azure, Heroku o Google Cloud.
En esta línea de soporte para otros sistemas diferentes a los suyos, Apple acaba de anunciar el lanzamiento de Swift Crypto, una librería abierta de criptografía basada en su actual desarrollo para sus propios entornos.
Apple sabe perfectamente que una app no es solo el desarrollo para cualquiera de sus plataformas. Hoy día, cualquier app que sea un poco mas compleja tiene lo que conocemos como lado servidor o server-side: el backend, un servidor en la nube al que nuestra app se conecta para almacenar e intercambiar datos, que luego nuestra app formatea para que podamos ver esa información de una forma fácil de entender.
Cuando hablamos de desarrollo para lado servidor, lo normal es hablar de tecnologías como Node.js, Java y otros, basados en lenguajes que no son los de Apple (obviamente). Pero, ¿y si pudiéramos realizar el desarrollo para el lado servidor en el mismo lenguaje que usamos para las apps? Es la misma premisa que usan muchas librerías híbridas que permiten hacer apps móviles: usar lenguajes como Javascript para el front (nuestra app) y el back (el servidor con los datos).
Apple está apostando fuertemente por esto, y de hecho el equipo del lenguaje de programación Swift tiene un grupo de trabajo llamado SSWG (Server-Side Workgroup) formado por ingenieros de la propia Apple y de la librería Vapor de código abierto. Anteriormente también había miembros de IBM, pero la compañía azul decidió bajarse de este proyecto en una re-estructuración sus equipos como os informamos aquí.
Si la comparas con otras tecnologías de mayor calado, el desarrollo en lado servidor con Swift puede parecer anecdótico, pero poco a poco está despertando y ya hay muchas grandes empresas que están apostando por dar una oportunidad a este. Hay que tener en cuenta que Swift en lado servidor es compilado a nivel binario, algo que muy pocas infraestructuras actuales tienen. Eso le da una mayor velocidad, seguridad, prevención contra errores en el código y que aprovechen los recursos del hardware de una forma mucho más óptima.
Swift Crypto
En uno de esos pasos muy importantes para la comunidad de desarrolladores, Apple acaba de anunciar y liberar Crypto Swift, una muy importante librería que facilitará aún más los desarrollos a la gente que trabaja con otros sistemas diferentes a Apple, con el lenguaje Swift de Apple.
Crypto Swift es una versión de una API que Apple lanzó con iOS 13 y el resto de versiones principales de sus sistemas el pasado septiembre: CryptoKit. Una librería nativa en Swift que pertenece a Cocoa y Cocoa Touch (las librerías cerradas de desarrollo de Apple) pero que ahora ha conseguido una versión abierta en Swift que funciona en sistemas Linux o cualquier de los soportados a partir de Swift 5.1.
Crypto Swift implementa la gran mayoría de la API CryptoKit, en la misma forma en que era usada programando apps. De esta forma, cualquier código o implementación que tengamos hecha, funcionará sin cambios en sistemas Linux y podremos tener un único código de criptografía y cifrado que gestione los datos, aumentando exponencialmente la facilidad y potencia del cifrado de datos y la seguridad.
Hay algunas APIs que se quedan fuera, pero solo aquellas que dependen exclusivamente del hardware de Apple y sus chips Secure Enclave que, por razones obvias, no están presentes en otros sistemas.
Pero toda la parte de cifrado, comprobación de hashes, firma, verificación, criptografía en estándares como el AES-GCM o Cha-Cha Poly y demás, está presente y con una implementación muy fácil e intuitiva. En concreto, Apple habla de intercambio de claves, derivación, cifrado y descifrado, hashing o autenticación de mensajes, entre otros.
Como la parte de cifrado no puede realizarse de forma nativa y dependiente del hardware de Apple, los de Cupertino han hecho una jugada muy interesante: apoyar todo la gestión criptográfica en la librería de código abierto de Google, BoringSSL, fork propia de la gran G de la conocida OpenSSL.
La librería se distribuye a través del gestor de paquetes de Swift, Swift Package Manager, lo que hace que su ciclo de vida e inclusión en nuestros proyectos (o en cualquier librería que quiera usarlo) sea mucho más transparente e integrado para el desarrollador.
Apple ha tenido especial cuidado en las pruebas y en garantizar que el resultado que provee CryptoKit en una app en entornos Apple sea exactamente el mismo que esta nueva librería Swift Crypto, basada en el motor criptográfico de Google. No solo eso, también a nivel de código, para que el mismo código en entornos Apple (usando Swift) devuelva el mismo exacto resultado en Swift Crypto en entornos Linux o cualquier otro soportado.
Además, el equipo de Apple garantiza que Swift Crypto evolucionará de la mano de CryptoKit, de forma que cualquier nuevo cambio en la librería cerrada en futuras versiones de los sistemas Apple, será implementado para tener coherencia también en su versión de código abierto.
Sin duda, un gran paso que demuestra cómo Apple apuesta por el desarrollo más allá de sus propios sistemas para facilitar a los desarrolladores que trabajan en sus plataformas el trabajo.
Ahora solo esperamos que el paso siguiente sea lanzar Combine, la librería de programación asíncrona también lanzada con las últimas versiones del sistema, como código abierto. Para que así podamos usarlo en Linux y otros sistemas. Grandísimo trabajo el de Apple, sinceramente.
Via | Swift.org blog