miércoles, 27 de julio de 2011

Apple y el "sandboxing" - poniendo puertas al campo

En una simple línea de una de las transparencias que usó Steve Jobs cuando presentó por primera ver la versión Lion de su exitoso OS X pude leer la palabra "sandboxing" y los pelillos de mi cogote que se erizan cuando noto peligro simplemente saltaron escapando de mi piel.

¿Qué es el "sandboxing" y por qué activó todas mis alarmas?

Sandbox se utiliza en inglés para referirse a esos parterres que hay en los parques infantiles, llenos de tierra, donde puedes dejar al niño tranquilamente para que juegue con sus cosas sin peligro. Pero por mis severas carencias en la lengua de Shakespeare hace tiempo pensaba que "sandbox" era el nombre que se daba al cajón de arena de los gatos, allí donde dejan sus "regalitos". Eso en realidad se llama en inglés litter box, aunque también se puede usar la palabra sandbox para referirse a esto.

¿Conclusión? ¿Es el "sandboxing" un sitio seguro donde dejar a nuestros niños jugando tranquilos como propone Steve Jobs o es el sitio donde poner al gato a cagar que es lo que se me antoja a mí?

La primera vez que tuve contacto con el concepto de "sandboxing" de Apple fué, como todo el mundo, con el iOS en el iPhone. Según esta filosofía, cada aplicación en iOS es propietaria y tiene confinados en su ser los ficheros que puede usar. Esto quiere decir que si cargo un PDF por ejemplo en iBooks (la aplicación de lectura de libros) ese fichero solo es conocido y usado en el teléfono por esa aplicación. No hay forma de usar ese archivo sino es desde la aplicación donde reside, iBooks en este caso.

Si en el iPhone me pareció chocante no me molestó en exceso. Fue al adquirir el iPad, que por su idiosincrasia estaba más pensado para contener archivos, cuando me dí cuenta del molesto invento.

Si cargaba un PDF para leerlo cómodamente en el iPad en iBooks pero luego si quería accederlo desde GoodReader para subrayar algo... Oops sorpresa, gracias o por culpa del "sandboxing" no podía acceder al archivo desde esa aplicación.

Para hacer más funcional el iOS en este aspecto, los chicos de Cupertino parieron un API que implementaba la facilidad "Open with" o "Open in" de modo que en un programa podíamos indicar un archivo de su sandbox y decir con que aplicación queríamos abrirlo. Pero sorpresa número dos, lo que hacía esta opción era copiar el archivo desde el sandbox del programa A al del programa B con lo que al final te encontrabas con dos copias del archivo en el iPad.

En ocasiones en el día a día con mi iPad en un entorno laboral me he encontrado con hasta tres copias de un fichero. ¿Cual es la buena? En un artículo anterior comenté como vivir sin iTunes y como minimizar el impacto del "sandboxing" usando GoodReader y Dropbox, pero esto no son más que parches.

En serio que si queremos usar el iPad (o el iPhone) para algo serio el "sandboxing" nos terminará pareciendo más un sitio para que el gato haga caca que un sitio para que nuestros niños jueguen seguros.

Y llegamos a ese nefasto día donde ví la palabra "sandboxing" en la presentación del amigo Jobs.

Imaginen que en su Mac el Acrobat Reader es propietario de sus archivos PDF y no puede abrirlos sino es copiándolos a otra aplicación.

En una excelente revisión que hizo Ars Technica sobre OS X Lion y que ya recomendé (este artículo) nos cuentan en profundidad como funcionaría el "sandboxing" en Mac OS X Lion.

Básicamente el funcionamiento sería el mismo que con iOS. Cada aplicación sería propietaria de los archivos que usa. La realidad es que desde Snow Leopard muchos de los procesos del kernel funcionan en modo "snadboxing" y nadie se quejó, pero una cosa es el kernel, que pocos vemos y otra bien distinta una aplicación de usuario.

El motivo por el que Apple fomenta el "sandboxing" en Mac OS X es para, según ellos, mejorar la seguridad. Si una aplicación es propietaria de sus archivos, y estos se ven comprometidos, pueden llegar a dañar la aplicación, pero no podrán salir de ella y dañar el sistema. Se pone como ejemplo los problemas por buffer overflow de los archivos PDF que permiten ejecutar código arbitrario. Un PDF de estas características al estar encerrado en la aplicación ejecutaría código solo con las autorizaciones de la aplicación y por tanto solo dañaría a la aplicación y a otros archivos controlados por ella, pero no a todo el sistema.

Pero claro, esta forma de trabajar en un PC de sobremesa es inviable. Puede ser tolerada (quien lo tolere, no yo) en un equipo de movilidad y de uso reducido, pero no en un PC. Por ello Apple ha establecido un mecanismo que supone abrir un pequeño agujero en esa caja de arena para que otras aplicaciones puedan usar esos archivos.

Lo que hace Apple es que cada aplicación registre como servicios para otras el abrir esos archivos. Si su programa B quiere usar un archivo en el "sandboxing" del programa A, podrá hacerlo gracias a que A publica servicios sobre ese archivo para que puedan ser usados por B, pero en definitiva el archivo sigue siendo abierto solo por A y es propiedad de A.


¿Lioso? Lo es. En el artículo de Ars Technica lo explican mejor pero en inglés. Hay un proceso en el Lion llamado Powerbox que es el que se encarga de gestionar las peticiones de apertura y salvado de archivos en nombre de las aplicaciones con "sandboxing". Cuando el usuario elige el sitio donde va a grabar el fichero, Powerbox abre un agujero en el sandboxing de la aplicación propietaria del archivo para proceder a realizar la acción.

Además Apple ha copiado las autorizaciones de Android/Honeycomb. Cada aplicación puede registrar varios de los 30 permisos que se definen en Lion de modo que cuando instalamos la aplicación autorizamos a que por ejemplo pueda acceder a una red, o ver los contactos, o cualquier otra acción.

Si es usuario de Android y se baja apliaciones del Market estará acostumbrado a que le muestren las autorizaciones que le concede a la aplicación.

Para terminarlo de rematar Lion exige que las aplicaciones con "sandboxing" vengan firmadas. ¿Averiguan donde lo exige? Si, en la Mac App Store. Si usted desarrollador quiere hacer una aplicación Mac y distribuirla por la Mac App Store deberá hacerla en "sandboxing" y firmarla.

¿Cuanto tardará Apple en que solo se puedan instalar aplicaciones con "sandboxing" y firmadas en el Mac? ¿En la siguiente versión? De verdad ve correcto que en nombre de la seguridad usted no pueda instalar lo que le de la gana en su Mac. Si la respuesta es afirmativa seguramente es usted uno de los pocos que están felices con tenerse que literalmente despelotarse para pasar el control de un aeropuerto antes de subir al avión. Pero a mi me revienta lo uno y lo otro. Mi PC es mio y asumo los riesgos que desee pero quiero poder usar programas que me baje de Internet sin que intervenga en ello Apple y su "negocio" de cobrar al desarrollador el 30% de sus ganancias.

¿De verdad esto es necesario para mejorar la seguridad de los equipos? Windows 7 hoy por hoy es un sistema infinitamente más seguro que lo que era XP, y no ha necesitado de estos artificios. ¿Y Linux?

No, digan que es por seguridad o no la realidad es que Jobs quiere controlar el desarrollo en "sus" máquinas. ¿Sus? ¿No pagué casi 800 euros por mi iPad2? ¿No pagué más de 1000 euros por mi iMac?

Ya estoy usando en el día a día un Samsung Galaxy S2 en vez del iPhone4 y uno de los motivos de más peso es el "sandboxing"; ya estoy mirando cual será el tablet Honeycomb que sustituirá a mi iPad2 y en este caso el principal motivo es el "sandboxing". ¿Me veré en la necesidad de buscar un sistema operativo alternativo para sustituir a mi hasta ahora amado OS X? ¿Ubuntu? Es posible.

Para más información y si saben inglés lean esto.

Querido Jobs tus usuarios, por mucho que te guste pensarlo, no somos niños así que no nos vendas el "sandboxing" como un sitio tranquilo y apacible donde quedarnos sentaditos haciendo castillitos de arena. Creo que mi gato prefiere hacer sus necesidades en esa arena.

Publicar un comentario