Archivo de la categoría ‘Sistemas Operativos’

Google I/O 2012

Como todos los años por estas fechas, dentro de unas horas comenzará Google I/O 2012 en San Francisco, algo así como el evento del año en el mundo Google, similar al TechEd de Microsoft o al WWDC de Apple. La importancia de estos eventos es evidente, y más en el caso de Google que tiene una hegemonía (para bien o para mal) en la mayoría de todos los campos tecnológicos que a día de hoy dominan nuestro mundo (para bien y para mal de nuevo): Publicidad online con AdSense, buscador web con Google, servicios empresariales con Google Apps, servicios al usuario con Gmail/YouTube/Blogger/Etc, Redes Sociales con Google+, Dispositivos portátiles (Móviles/Tablets/Televisiones) con Android, Navegador Web con Chrome, Desarrollo Energético… y me dejo un largo ETC. Lejos quedan los tiempos en los que Google “tan solo” era un buscador Web.

Es por tanto que si Google organiza un evento anual para presentar novedades, organizar charlas y talleres…. se reúnan representantes de la mayoría de todos los fabricantes de Hardware, desarrolladores de software y Web de todos los ámbitos, y por supuesto prensa y muchos otros interesados en tecnología.

 

Este año parece más o menos claro por donde van a ir los tiros, aunque por supuesto aun queda mucho a la imaginación, y es posible siempre que aparezca alguna novedad totalmente inesperada. El problema con las novedades es que muchas veces son secretos a voces, que no dejan de ser totalmente importantes e interesantes, pero pierden el cariz de ser sorpresibas, sobre todo cuando se lleva semanas hablando de ellas y la posibilidad de su anuncio en el evento de mañana.

Sea como sea, parece más o menos claro por donde van a ir los tiros y cuales serán muy posiblemente algunas de las sorpresas que se anuncien mañana en el Keynote del Evento:

 

-Nexus 7:

Así se ha bautizado en los círculos la que sería si los rumores son ciertos la primera tablet con el sello de Google. Parece estar prácticamente confirmado que hablaríamos de una Tablet de bajo coste y altas prestaciones, eso sí de 7 pulgadas. Integraría procesador Tegra 3 (4 núcleos), pantalla HD Ready (1280×720), 1GB RAM, cámara de 5-8MP, capacidad de 8-16GB…. y los extras habituales como WIFI, OTG, USB, HDMI, GPS, BT, quizás NFC… y que vendría de la mano de la nueva versión de Android 4.1 (Jelly Bean). El precio se estima en los 150-200€, un precio más que interesante.

 

-Android 4.1 (aka Jelly Bean)

Parece evidente que si aparece el Nexus 7 y su anuncio para su comercialización en Julio, este aparezca con JB (Jelly Bean). Además, hace muy pocos días se filtró por un fallo (queriendo o sin querer) de Google unas imágenes que mostraban claramente que el Galaxy Nexus sería el primer TELEFONO en ver JB, lo cual podría implicar que a la par que apareciese el Nexus 7 apareciese la OTA y la imagen de fábrica de JB para Galaxy Nexus, al menos para la versión maguro (versión GSM, la estándar).

Las novedades en cambio que puedan llegar con JB son totalmente un misterio. Se estima que una mejora sustancial del rendimiento con respecto a Ice Cream Sandwitch (ICS), cambios sutiles en la interfaz, actualización del paquete de aplicaciónes de Google (Gmail, Gtalk, Framework, Maps…), la posible integración de Gtalk con Messenger de Google+… pero posiblemente uno de los rumores que más está sonando también es la posibilidad de que Google diese el pistoletazo a Mejel.

 

-Mejel

Después llamado simplemente “Asistente de Google”. Este Asistente sería una versión mejorada de la ya conocida búsqueda por voz de Google que nos permite desde buscar un contacto, llamarlo directamente simplemente con la voz, escuchar música o redactar un mensaje (todo ello solo con la voz). De este modo se incluirían también algunas de las funciones que actualmente cuenta SIRI (el asistente de Apple), como poder responder a preguntas más o menos concretas.

Personalmente no veo la gran importancia de estos asistentes ni su utilidad, pero bueno, cualquier mejoría siempre es buena. Sobre todo porque cualquier pregunta que pueda responder este tipo de asistentes estará totalmente sesgada a lo que sus creadores quieran. Cualquiera que tenga un iPhone 4s y haya usado SIRI sabrá de lo que hablo, en el que cualquier resultado que aparece es el que desea que aparezca Apple. Hace unas semanas era precisamente uno de los fundadores iniciales de SIRI (que después compró Apple) mostraba su descontento con esto, aclarando que cada día que pasa SIRI está más “politizado” y que los resultados que ofrece son totalmente “manipulados”. No digo que Google metiese la mano hasta ese punto, pero habria que ser muy ingenuo para creer que no iba a añadir alguna variable o resultado o respuesta que le pudiese agradar a ellos.

Por otro lado, sinceramente esto de los asistentes virtuales me parecen un poco antisociales. Ya nos lo mostró el episodio de Big Bam Theory, en el que Rajesh prácticamente se enamora de SIRI como persona virtual. Sinceramente, si quiero charlar con alguien lo hago con mi pareja/mujer/amigos/familia, es mucho más gratificante, y sus opiniones son más inteligentes. Y si lo que quiero es saber el tiempo, una operación matemática o cualquier otra cosa, tengo Google o igualmente a alguien cercano para preguntarle, sin tener que hablarle a un aparato para que me conteste. Por tanto, salga a la luz Mejel o no, aunque cualquier mejoras es buena, lo veo simplemente una solemne gilipollez su uso como asistente personal, y a quien lo use le diría sinceramente: “Tío, date una vuelta, sal un poco más y charla mejor con los que tienes cercas que no con un aparato”

 

-Google Chrome

Parece también más o menos evidente que si JB ve la luz, el navegador que traiga incorporado sea ahora Chrome, dado que ya disponemos de este en fase beta en el Store de Google. Como muchos saben son más de Firefox (el cual tengo instalado por supuesto en Android), pero sin duda alguna Chrome es mejor navegador al que actualmente tenemos por defecto en nuestros terminales.

También es de esperar que Google presente alguna novedad respecto a Chrome dentro de los equipos de escritorio, una mayor compatibilidad HTML5, una orientación cada vez más claras a juegos y aplicaciones Web, aceleración hardware completa al estilo de IE o Firefox…

 

-Glass

No puede decirse que sea ya un proyecto secreto, ya vimos no hace demasiado al mismo Sergey Brin (Padre de Google junto a Larry Page) con las gafas puestas. Y es que literalmente hablamos de unas gafas. Para quien no sepa de que hablamos:

 Evidentemente es un proyecto en desarrollo, pero no podemos saber en que estado de este se encuentra, y es por ello que muchos creen que mañana se harán anuncios al respecto. Sea como sea puede ser una apuesta segura para el futuro, y es que ya son algunos fabricantes los que están comenzando a desarrollar sus propias gafas. La utilidad es como todo… habrá que esperar y ver (nunca mejor dicho)

 

-Servicios en Nube

Se espera que Google haga una serie de anuncios interesante dentro de la computación en nube, sobre todo orientado a las empresas. No parece estar muy claro por donde podrían ir los tiros, pero con la inclusión hace poco de Google Drive parece evidente que se están cociendo muchas novedades en este aspecto. Recordemos que Google ya cuenta con servicios puramente en Nube como Google Drive y su integración con Docs, Google Music e incluso Gmail, el cual podría integrarse completamente con otros servicios para compartir de forma simple incluso adjuntos de correos electrónicos.

Para las grandes empresas esto tiene una importancia mucho mayor, hablamos de aplicaciones en nube que puedan ejecutarse en cualquier dispositivo desde cualquier ubicación, acceso cómodo a datos, mayor número de aplicaciones para sincronizar (además de calendarios, agendas, correo, música, aplicaciones…). Y por descontado que todo ello repercutirá de forma directa en el usuario final, en forma de versiones lite de sus productos o ampliando los servicios que ya disponemos, desde mayor almacenaje en Music, en Drive, en Gmail… a saber.

 

Quitando las posibles novedades o rumores, lo que es cierto es que las charlas y talleres que se van a realizar están todos ya publicados, entre los que tenemos conferencias sobre Chrome, Android (como monetizar las aplicaciones Android, como mejorar la seguridad…), protocolos nuevos, programacion Web, HTML5, nuevas API para Google MAPs… una buena cantidad de charlas sinceramente interesantes, al menos para quien se mueva en el mundillo por supuesto, y sobre todo para fabricantes de software/hardware, diseñadores web o de aplicaciones móviles… todo ello está reflejado ya en la web oficial de Google I/O 2012, con lo que repetirlo aquí sería repetitivo.

Para terminar, recordar que también está disponible la aplicación en Play Store para seguir los eventos, así como la conexión en directo de todos los eventos que pondré mañana.

Un saludo.

Para hacer en casa: Como agotar en minutos, de forma remota, los datos móviles de cualquier usuario de iOS (iPhone o iPad)

Animado por la cantidad de datos manipulados y/o tergiversados que Apple está enseñando estos días en su WWDC (gráficas “falseadas” constantemente) e impresionado una vez más por los 20€ que quiere cobrar a sus usuarios por una actualización de su sistema operativo (recordar que no es un OS nuevo sino actualizaciones, parches), escrito estas palabras a día de hoy, para mostrar una vez más al lector con mucha o poca idea de tecnología, lo bonito y bello que es el mundo fuera de esa secta.

Material necesario:

-Un PC con conexión a Internet
-Seleccionar de forma inteligente el tipo de paquetes a usar (desde un simple Ping a un paquete Sync TCP…)
-Unos minutos/horas (dependiendo diversos factores)
-Un objetivo con el que “experimentar”
-Tener ganas de gastar una graciosa broma “pesada”

Nota: En las pruebas realizadas, se logró un agotamiento de datos aproximados de unos 10MB/minuto sin mucha complicación

 

La idea surgió mientras me daba un relajante baño, y lo cierto es que brilla por su sencillez, no comprendo como a estas alturas no sea algo que haya visto en ningún sitio, y es cuanto menos gracioso. Antes de empezar, y prometo no extenderme “demasiado”, voy a explicar un poco más el título de este pequeño artículo, y es que hoy vamos a prender como cualquier persona detrás de un PC, una línea a Internet y poco más puede agotar en cuestión de minutos u horas (dependiendo de su conexión y del plan de datos del usuario de iPhone/iPad) los datos que tenga contratado dicho usuario. En realidad no puede aplicarse absolutamente a todos, pero sí me arriesgaría a decir que sí es posible a la inmensa mayoría de ellos.

Veamos, la inmensa mayoría de todos los usuarios que tenemos Smartphones tenemos contratado con nuestro operador una tarifa de datos, hasta aquí todo perfecto. Por otro lado, al menos aquí en España, nuestros operadores como sabéis nos asignan un límite mensual en el volumen de datos transferidos, definido por el tipo de tarifa que tengamos con ellos. Cumplido dicho límite pueden suceder dos cosas: Algunos operadores te bajan la velocidad de la transmisión de datos a niveles irrisorios (que valen para leer un correo y poco más) y otros pasado dicho umbral tarifan los MegaBytes transferidos hasta finalizar el mes.

¿Qué consecuencias podría acarrear el agotamiento de estos datos en un usuario que tenga un iPhone o un iPad? Es simple:

-En caso de que su operador le reduzca la velocidad, agotarle sus (por ejemplo) 500MB mensuales, obligándole a trabajar a velocidades bajísimas, haciendo prácticamente inservible dicho dispositivo para cualquier tarea que requiera datos. Llegado a este umbral si se continuase con este método a ahogar al dispositivo, no repercutiría en la tarifa de dicho usuario, pero sí bloquearía totalmente el tráfico de datos del usuario, hasta que el (llamémosle atacante) atacante detuviese el asalto.

-En caso de que su operador le facture el tráfico de más, a dicho usuario le podría llegar una cuantiosa factura al finalizar el mes, el límite tan solo estaría en lo bueno o malo que sea el gracioso que le quiera jugar una mala broma. A efectos prácticos dicho usuario afectado no podría rendir culpa al operador ya que como veremos no ha existido trampa por ningún lado, simplemente alguien se aprovechó del sistema, y el usuario de su dispositivo iOS tendría que pasar por caja.

-De estar el dispositivo en baterías (sin estar cargando), le estaríamos reduciendo su batería de forma drástica!! no puedo conocer de cuando estaríamos hablando, pero posiblemente en unas horas podríamos agotar por completo la carga de un iPhone con la batería al máximo, y eso solo contando el consumo de batería repercutido por el propio bombardeo.

-A corto plazo el propio dispositivo del usuario afectado funcionaría en correcto estado (salvo por el consumo masivo de datos que empezaría a acusar), pero a medio largo plazo podría ver como su dispositivo se bloquearía o comenzase a actuar de forma errática por culpa del efecto de un DoS (Ataque de Denegación de Servicio)

-Si quien realiza el asalto es ingenioso, podría bloquear la capacidad de sincronización del dispositivo de la víctima (el usuario de iPhone/iPad)  de forma simple, impidiendo que este pueda usar servicios como sincronización, iCloud… e incluso Whatapps y otros.

 

Todos sabemos de lo que estoy hablando cuando nombramos el consumo de datos, cualquiera que tenga un Smarphone lo sabe, así como su límite mensual. Lo que no sabe la gran mayoría sin embargo porque quizás nunca se ha hecho dicha pregunta, es como se contabiliza esta transferencia. En la práctica, cualquier dato que sale o llega al dispositivo cuenta, da igual que este tráfico lo haya generado el propio usuario directamente o indirectamente. Es evidente que el usuario siempre puede controlar (los usuarios de iOS no tienen prácticamente control de nada) el tráfico generado por ellos mismos, ¿pero que pasa con el tráfico generado por el exterior?

Muchos pueden pensar que el exterior no genera ningún tipo de tráfico a sus dispositivos cuando estos no lo solicitan, pero esto es totalmente falso. Es cierto que si abrimos un navegador Web estamos iniciando nosotros una comunicación de forma directa y que desde ese momento se abre un canal de comunicación el cual consumirá datos (los enviados por el dispositivo al exterior y los recibidos por parte del servidor), pero ¿qué pasaría si de forma externa intentamos conectar/contactar con otro dispositivo sin que este solicite dicha conexión? A fin de cuentas cualquier dispositivo conectado a Internet es accesible desde otro dispositivo por medio de su dirección IP como muchos saben, y aunque no sea el dispositivo quien inicie la comunicación, sería absurdo pensar que desde fuera esto no puede hacerse.

Bueno pues en esta ocasión la teoría es casi tan simple como la práctica. ¿Qué sucede si bombardeásemos cualquier dispositivo conectado directamente a Internet con paquetes de datos arbitrarios (o no tan arbitrarios)? Dado que el operador de dicho usuario contabiliza los datos que llegan al terminal (con total indiferencia de si son datos útiles o no), por cada Kb que le enviásemos le estaríamos comiendo otro Kb de datos que tiene. El concepto no es nada nuevo, y los que viven en estos lares desde hace años, quizás les suene los viejos Flood de texto del IRC, o incluso los Sync Flood. El concepto es el mismo, bombardear un dispositivo con paquetes de datos.

Esto por supuesto es algo que puede hacerse con absolutamente cualquier dispositivo conectado directamente a Internet, ¿pero que hace de este sistema realmente interesante aquí? Son dos las peculiaridades que hacen que este sistema de extenuación de datos obtenga un éxito abrumador: Tarifas de datos limitadas y la facilidad de detección de un dispositivo con iOS (ya sea iPhone o iPad). Estas dos peculiaridades hace que resulte realmente sencillo acabar en un rato con todo el consumo mensual de cualquier usuario estos dispositivos. Gracioso cuanto menos, ¿verdad?

 

Manos a la obra. Al comenzar expuse el material necesario, y lo cierto es que prácticamente cualquier usuario puede probarlo. Ni que decir tiene que no comparto la idea de fastidiar por el mero echo de fastidiar, yo expongo simplemente echos y vulnerabilidades que creo que son de gran interés, sobre todo a los propios usuarios expuestos. Tan solo hay dos puntos en todo el proceso que merece la pena deteneros, que sería el tipo de datos a enviar (y como hacerlo) y el objetivo.

 

Paquetes a usar

Podríamos enviar de forma arbitraria cualquier dato a un dispositivo por medio de multitud de herramientas existentes, pero lo cierto es que pensando un poco podemos idear/fabricar paquetes que sean más efectivos que otros.

Bien, la idea es agotar en el menor tiempo posible la mayor cantidad posible de Bytes. Si lográsemos un agotamiento de 1Byte por segundo tardaríamos más de 12 días en consumirle a ese usuario 1MB… lo cual no es viable desde luego. Y si enviamos cada segundo paquetes de 1KB? y si son de 16KB? A un consumo de 16KB por segundo, consumiríamos 1MB en tan solo 64 segundos, 10MB en 10 minutos aproximadamente… en 9 horas se abrían consumido de ese usuario 500MB.

Cual es el mejor sistema? Aquí cada cual puede optar por el sistema que crea mejor, pero si tenemos en cuenta que nuestros operadores cuentan como datos cualquier dato tanto recibido como ENVIADO, en mi cabeza solo suena una palabra: Ping. Una de las herramientas más viejas que existen y una de los más famosos. No voy a extenderme minutos u horas explicando las bondades de nuestro amigo el Ping, pero lo mínimo para entender la gran utilidad de este amigo. El Ping no es más que una herramienta que permite enviar un tipo especial de paquetes de datos ICMP llamado “Echo Request”, un tipo de paquete usado en el protocolo IP que no usa los protocolos de transportes TCP o UDP. Al igual que todos de los paquetes ICMP, se creó con el propósito de garantizar el buen funcionamiento de la red por medio de dos tipo de paquetes concretos, el Echo Request y el Echo Reply (pregunta y respuesta). La idea era simple, cuando a cualquier dispositivo de internet le llagase un Echo request, este respondería con un Echo Reply. Esto tenía dos funciones fundamentales: Saber el estado de un dispositivo de red (si está en línea o no) y conocer incluso la calidad de la red midiendo el tiempo transcurrido desde que se realiza el request hasta que se recibe el reply, puesto que cuanto menor sea el tiempo es de suponer que la red es más rápida o está menos congestionada o sufre de menor retraso.

A día de hoy, excluyendo algunos Routers o puertas de enlace residenciales, cualquier dispositivo está configurado por defecto para contestar los ICMP Echo Request, lo cual es lógico puesto que como digo estos paquetes juegan una importante labor en el mantenimiento y correcto funcionamiento de Internet. Pues bien, dicho todo esto tendríamos en nuestras manos una herramienta que no solo nos permite enviar datos a un determinado objetivo (consumiéndole la cantidad de datos que sea) por medio de un paquete Echo Request, sino que además dicho objetivo nos responderá con otro paquete Echo Reply!! eso quiere decir que sus datos se verán consumido tanto por nuestro paquete de datos enviado como por el paquete de contestación que se ha visto forzado a enviarnos de vuelta sin que él lo sepa.

Pero es que además, prácticamente todas las herramientas de Ping para generar este tipo de paquetes nos permiten especificar el payload (datos) a enviar dentro del propio Echo Request!! sin contar que el Echo Reply de vuelta contendrá también exactamente los mismos datos. Dicho de otro modo, si hacemos Ping a un iPhone especificando usar un payload de 16KB y este paquete llega a su destino, el destino nos responderá con un paquete de respuesta a nuestro Ping con el mismo Payload enviado por nosotros, co lo que en total estaríamos consumiendo al usuario 16*2=32KB simplemente enviando un Ping de 16KB. Un dos por uno, no está nada mal. Recordar que el tamaño máximo del Payload son los 64KB. Lanzar este tipo de ping es trivial en cualquier plataforma, voy a poner dos ejemplos, uno en Windows usando Ping y otro en Debian usando nPing. La única desventaja que posee Ping en Windows es que este no envía otro Ping hasta que no ha recibido el Eco de respuesta, y esto hace que se ralentice mucho el ataque. Podríamos usar nPing en Windows, pero no permite por desgracia la fragmentación de paquetes y tendríamos que usar un payload máximo que rondaría los 1500KB. De cualquier manera, ya sea usando Ping o nPing el resultado es impresionante. Por supuesto esto no es más que un pequeño ejemplo:

Debian:

nping -c 0 –icmp –icmp-type 8 –data-length 4096 –mtu 1448 –delay 50ms IP_Destino

Se estaría enviando un paquete de 4KB de datos fragmentados (dado que el MTU de las líneas DSL/cable no es más de 1500 máximo y es necesario fragmentar) cada 50 milisegundos al destino especificado, y continuaría así hasta que el usuario cancelase el asalto.

Windows:

ping -t -l 4096 IP_Destino

En este caso se enviaría un paquete de 4KB fragmentado, pero no se puede controlar con que velocidad, el sistema enviará un nuevo paquete en cuanto reciba la respuesta por parte del destino.

 

Por descontado que la primera opción es mucho más eficaz. Con la primera opción, se lograrían estar generando 20 paquetes por segundo de más de 4KB, que así mismo en teoría generarían otros tantos paquetes por parte del cliente, duplicando la tasa de datos consumida. Es decir, en este caso concreto serían 20 paquetes enviados en un segundo a 4KB = 80KB/seg, y se generarían otros tantos el otro extremo, lo que resultaría de un total de 160KB/s, 1MB cada 6 segundos y medio, 100MB cada 10 minutos aproximadamente. Esto quiere decir que en menos de una hora habríamos consumido (posiblemente mucho antes) todos los datos del mes del usuario!

En las pruebas que he realizado, en el caso de iPhone/iPad el tamaño más adecuado para el ping sería de 4KB, es capaz de devolver prácticamente todos los Echo Request a una buena velocidad. Por supuesto dependerá de la buena o mala cobertura que el dispositivo tenga. Por supuesto el tiempo que tardará el sistema en consumir al totalidad de los datos del usuario dependerá también del plan contratado, si el usuario tan solo dispone de 100MB le podríamos consumir el primer día del mes todos los datos en tan solo 10 minutos.

 

 

Que objetivo especificar

Hasta aquí ha sido todo fácil, pero prácticamente el sistema explicado anteriormente puede usarse no solo en iPhone, sino en cualquier dispositivo conectado por datos a Internet. ¿Porque hace este sistema un arma terrible contra los dispositivos de Apple? Porque como vimos en otros artículos publicados como por ejemplo el de búsqueda y captura de iPhone, Apple nos deja la puerta abierta de poder localizar de forma simple y trivial cualquier iPhone o iPad que deseemos. Por supuesto que podemos utilizar lo anteriormente dicho de forma indiscriminada, pero sería un gasto de tiempo no asumible sin conocer de antemano que dispositivo se encuentra detrás de ese objetivo. Es decir, incluso con fines experimentales podríamos estar atacando un dispositivo que es un PC, o un dispositivo Android cofigurado para no contestar paquetes Ping (con lo que se ahorraría la mitad del tráfico), o simplemente un router. En cambio, sí podemos saber con total antelación si ese dispositivo es o no es un iPhone sin posibilidad de error. El truco ya lo he explicado otras veces en el Blog, y parece que Apple no se ha enterado aun del peligro de dejar un puerto abierto a sus dispositivos, en concreto el puerto TCP 62078. Ese puerto se encuentra abierto en absolutamente TODOS los dispositivos con iOS, tanto iPhone como iPad!! Es decir, que si nos encontramos dicho puerto abierto, podemos afirmar que al otro lado tenemos un pobre usuario que no sabe la que le espera.

Aquí se abren dos posibilidades:

-Buscar indiscriminadamente iPhone e iPad escaneando Internet gracias al puerto 62078 como vimso en el artículo de búsqueda y captura
-Conocer la IP del dispositivo de nuestra víctima, y de antemanos saber si es un iPhone/iPad o verificarlo mediante el puerto abierto

 

La primera opción sería muy sencillo, para encontrar cualquier infeliz de forma rápida e indiscriminada tan solo nos bastaría comenzando a escanear el segmento de subred /24 de nuestra propio operador. Casi con toda seguridad en dicho segmento (que sería un total de 256 host) habrá al menos algún iPhone/iPad conectado a la red. Ejemplo:

A) Supongamos que la IP de nuestro teléfono es 32.104.119.125
B) Realizamos un escaneo del puerto 62078 en el segmento /24: 32.104.119.0 – 32.104.119.255

C:\Users\Theliel>nmap -Pn -p62078 -vvv 32.104.119.0-255

Starting Nmap 6.00 ( http://nmap.org ) at 2012-06-12 03:45 Hora de verano romance
Initiating Parallel DNS resolution of 256 hosts. at 03:45
Completed Parallel DNS resolution of 256 hosts. at 03:45, 4.36s elapsed
DNS resolution of 256 IPs took 4.38s. Mode: Async [#: 2, OK: 0, NX: 256, DR: 0, SF: 0, TR: 321, CN: 0]
Initiating SYN Stealth Scan at 03:45
Scanning 256 hosts [1 port/host]
Discovered open port 62078/tcp on 77.208.119.7
Discovered open port 62078/tcp on 77.208.119.25
Discovered open port 62078/tcp on 77.208.119.42
Discovered open port 62078/tcp on 77.208.119.41

C) Como es de esperar casi de inmediato tenemos a nuestras víctimas, ya solo queda comenzar el bombardeo que estimemos oportuno

 

Aunque el primer método es gracioso y podemos ir aniquilando usuario a usuario (sería igualmente simple crear un script en Linux para automatizar todo el proceso, en una noche habríamos dejado sin datos a unos cuantos usuarios de iPhone/iPad), no sería un ataque dirigido. ¿Sería posible posible realizar este bombardeo o Flood contra un objetivo específico? Bueno, aquí el problema estaría en conocer la IP de dicho usuario, si disponemos de ella sí, de lo contrario no. ¿Y es posible conocer la IP de un usuario de iPhone sin que evidentemente nos la de? Aquí ya entra el ingenio de cada uno, y como se dice cada maestrillo tiene su librillo. Si se sabe buscar sí es posible, amen de poder usar diferentes técnicas y/o engaños para obtenerla.

Dejo simplemente algunas ideas al aire que usar sin especificar demasiado, a fin de no darle al posible “Lamer” que lea esto lo necesario para apretar un botón y listo, al menos que pierda el tiempo en buscarse las habichuelas:

-Engaños de cualquier tipo, desde un: “Tio dame el número que sale en la web www.cualesmiip.com”, pasando por entra en esta web (que es mía y registra laIP) y terminando por quiero enseñarte algo dame este dato. Os sorprendería lo incautos que son algunos, sobretodos los usuarios de Apple que precisamente por creerse eso de que sus dispositivos son segurosson los que comenten más irresponsabilidades.
-La mensajería instantánea y programas de videollamadas como Whatapps, Gtalk, Skype, Windows Live Messenger, iMeenseger/FaceTime, Viber… no es complicado gracias a estas herramientas conocer la IP del incauto usuario de iPhone, sin que este jamás sepa por supuesto que fuimos nosotros.
-Cualquier comunicación que se nos ocurra que pueda ser directa entre dispositivo-dispositivo
-En los correos electrónicos siempre hay más información de la que aparentemente hay
-…

Como siempre en la imaginación está el límite.

 

 

Como evitar en lo posible  este tipo de Floods

En primer lugar hay que tener en cuenta que no existe una solución totalmente eficaz con este problema, el propio diseño de Internet hace posible esta técnica. No quiere decir que no podamos hacer cosas para evitarlo en lo posible, pero además de no existir algo eficaz hay que sumarle que cualquier cosa que hagamos nos repercutirá casi siempre en una u otra cosa.

En primer lugar tenemos el dispositivo en sí. La mejor defensa es sin duda alguna tener un buen sistema que pueda protegernos. En este sentido vuelvo a recalcar la cutrería e inexplicable seguridad de los dispositivos de Apple dejando ya no solo el puerto anteriormente nombrado, sino otros!! A los ingenieros de Apple alguien tendría que explicarle el peligro que concierne el tener un puerto abierto al exterior. Esto muchos pueden leerlo y decir: Buaj, que más da… y a esas personas yo les diría. ¿Tu dejas la puerta de tu casa abierta? Pues esto es lo mismo. No quiere decir que un puerto abierto equivale a una muerte anunciada, pero un puerto abierto que de antemano sabemos que existe, para que se usa, expuesto al exterior y que además tan solo usa Apple para sus dispositivos portátiles, es como poner una etiqueta a sus dispositivos que ponga: “Por favor, atáquemen/Piratéemen por aquí”. Eso sin contar que Apple en cualquier momento puede conectarse a dicho puerto para lo que ellos estimen, ya que aunque sabemos que ese puerto se usa para sincronizaciones, quien nos dice que no se usa para algo más. En la práctica, Apple podría estar usándolo para lo que quisiese , y al estar abierto al exterior tendría acceso remoto siempre. En comparación, Android por defecto no posee absolutamente ningún puerto ni TCP ni UDP expuesto, del mismo modo que ningún router lo posee, ni Windows, ni Linux…

En segundo lugar, la mejor forma de acotar el problema sería que nuestro operador de datos nos proporcionase acceso a la red por medio de su red interna, es decir por medio de una IP privada. Este servicio lo usan por ejemplo a día de hoy en España Yoigo o Pepephone (este último ofrece las dos posibilidades). Si nuestro operador nos asigna una IP privada cuando estamos conectados a su red, quiere decir que TODO el tráfico que enviamos y que podría llegarnos pasa antes por sus dispositivos NAT/Firewall. Es decir, sería imposible alcanzar a los dispositivos que se encuentren dentro de esa red privada desde fuera, tan solo obtendríamos en el mejor de los casos la IP pública, y esta nos dejaría a la puerta del Firewall de la compaññía, nuestros intentos serían totalmente ineficaces. No obstante, aun cuando el usuario se encontrase en este escenario no sería invulnerable, ya que podría ser atacado desde dentro de la propia red. Cualquier usuario de su mismo proveedor podría alcanzarlo. Es decir, un usuario iPhone de Yoigo protegido por una IP Privada podría ser totalmente atacado y asaltado por otro usuario de Yoigo, pueseto que estaría conectado a la misma red privada que él, aunque en este caso el asalto tendría que realizarlo desde el propio dispositivo, y por consiguiente tb repercutiría en su propio consumo de datos. Pero el principal problema del segundo método y por el cual tan solo lo usan Yoigo y Pepehone, es que cualquier usuario dentro dentro de una red privada para su acceso a internet tendrá sus servicios muy limitados, sin contar que estarán totalmente controlados por parte de su operador. El usuario detrás de esta red no podrá usar/utilizar una gran cantidad de servicios, comenzando por cualquiera que requiera ejercer de servidor: servidores web/ftp/ssh/samba… también se saben de problemas los usuarios de iPhone detrás de estas redes en sincronizaciones con iCloud, problemas, cortes y retrasos a la hora de usar programaspor VoIP como Skype, Viber… retrasos en programas de mensajería instantánea tipo Whatapp… este es el motivo principal por el cual tan solo Yoigo y Pepephone (que yo sepa ahora mismo) proveen el acceso a Internet por medio de su red privada. El caso de Pepephone no obstante es de señalar y sinceramente de alabar, puesto que permite a sus usuarios por medio de dos APN diferentes el acceso a Internet tanto por IP ública como IP privada, es decir que es el usuario quien puede optar en cualquier momento por cualquiera de estos dos sistemas, estando la elección en manos del usuario a golpe de golpe en la pantalla para cambiar de APN. Bien por el tío Pepe!!

En tercer lugar, aquellos usuarios que disponemos de dispositivos Android podríamos sin mucha dificultad configurar el sistema para evitar al menos conexiones salientes que no deseemos, es decir en el caso de los paquetes Echo Reply, denegar su uso, impedir responder a las peticiones Ping. No se evitaría el problema, pero reduciríamos a la mitad el gasto de datos.

 

 

La fiabilidad de las encuestas, votaciones… realizadas en la red, y lo fácil que puede resultar manipularlas

 

 

Inicio Fin (10 minutos después)
Opción 1º: 43.6%  20.7%
Opción 2º: 10.1%  4.8%
Opción 3º: 17.4%  8.2%
Opción 4º: 17.5%  8.3%
Opción 5º: 11.4%  58.1%
Número de Votos: 2506  5462

 

Raro es el día que nada más abrir Thunderbird no recibo en las suscripciones RSS algún resultado nuevo de alguna encuesta, votación o gráfica basada en las supuestas respuestas de los cientos y miles de usuarios que supuestamente votan en ellas para dejar su opinión: Cuestiones políticas, preferencias de consumo, concursos, sondeos… raro es el periódico o site más o menos conocido que no tiene una encuesta o recoge datos semanalmente, para luego exhibirlos igualmente en los periódicos, o en publicaciones de toda índole.

La pregunta que uno debería de hacerse es simple: ¿Como de fiables son estos datos? Y la respuesta es aun más simple: No lo son, y eso es lo gracioso. Esto no quiere decir que cualquier gráfica, resultado de encuentras o votaciones sea mentira o los datos no seas ciertos, significa que a día de hoy tomar por cierto esos datos simplemente porque cualquiera los exponga sería poco inteligente.

En este caso me he cebado/centrado en particular con un servicio de encuestas llamado tusencuestas.com que usan no pocas webs, que usan simplemente para plasmar unos resultados, confeccionar estadísticas y otros. Al igual que este sistema, existen muchos similares, algunos más seguros, otros menos. Esto no quiere decir que TODOS los sistemas sean susceptibles de manipular, aunque tampoco quiere decir lo contrario. Primero un poco de literatura y después veamos el caso práctico… quien quiera saltarse el bla bla bla puede irse más abajo directamente y ver lo que sucedió con tusencuestas.com

 

Lo peor de todo, además, es que detrás de esos datos muchas veces se puede encontrar no solo una duda sobre su fiabilidad, sino que son múltiples las cuestiones que nos pueden llegar a pensar que eso datos dictan mucho de ser ciertos. Hay que tener cuidado cuando se habla de manipulación de datos, dado que muchas veces no son manipulados directamente, pero hay muchas formas de manipular la información. Veamos algunos ejemplos:

 -“Lugar” en que se recogen los datos: Esto es simple, si por ejemplo aparece una encuesta o una gráfica aparece en un diario con fuertes tendencias políticas, los datos recogidos serán en su inmensa mayoría provenientes de lectores con la misma ideología política, y por tanto los resultados serían evidentes. Si la misma encuesta o los mismos datos fuesen recogidos en otro diario con fuerte tendencia política contraria, los resultados serían totalmente opuestos. Este sistema se usa de forma extensiva todos los días.  Personalmente, creo que cualquier encuesta o recogida de datos realizada por cualquier medio partidista o a fin a cualquier tipo ideología (religiosa, política, clase social…) carece totalmente de valor por lo mismo. Extrapolado a la tecnología sucede exactamente lo mismo, si entras en un foro a fin a Microsoft y pusieses una encuesta sobre lo bueno o malo que es Windows saldría que es bueno por una amplia mayoría, si lo haces en un site fin a Apple dirá que MAC OS.

-Confianza en el autor de dichos datos: Más simple aun, damos por echo que dicha recogida de datos tiene detrás a una persona de la cual hay que fiarse, que no haya modificado los datos ni vaya a hacerlo. Por supuesto no digo que lo haga, digo que podría hacerlo.

-Manipulación por parte de los propios usuarios: Incluso cuando se pongan las mejores intenciones en la fiabilidad de dichos datos, si no se usa un sistema decente para la recogida de dichos datos estos de nuevo no pueden tener ningún tipo de validez, y esto es culpa tanto de los propios usuarios como quien está detrás de todo ello.

 

Aquí no podemos señalar con el dedo o asegurar sin pruebas quienes inventan resultados o los manipulan, pero sí podemos ver lo simple que puede resultar para un usuario la modificación de estos, y si cualquier usuario muchas veces puede hacerlo, prueba irrefutable de la validez cero de este tipo de sistemas, sobretodo repito cuando no se es nada riguroso.

El principal problema, quitando por supuesto la honradez del equipo/persona que esté detrás de esa recogida de datos, son los sistemas usados para tales recogidas de datos. Muchas veces los propios equipos/personas encargadas en esa recogida de datos usan métodos consabidamente “manipulables” a fin de que los resultados sean aun más impactantes cuando son mostrados. Y es gracioso, puesto que lo único que debe de hacer un buen sistema de recogida de datos de este tipo es: Un solo submit/voto/estadística/comentario… por persona física. Y señores, uno es uno, no son dos ni tres, es uno ¿Es que acaso en las elecciones generales nos permiten votar más de una vez?

El mundo de la informática está sujeto de la picaresca humana, y seamos franco, en España tenemos mucha de esa. Y es que he llegado a encontrar encuestas incluso en periódicos (en sus ediciones digitales evidentemente) de primera línea en las que con tan solo seleccionar la opción indicada y darle a enviar se contabilizaba automáticamente un voto, sin importar cuantas veces lo hicieses. Es decir, un solo usuario podría en 3 minutos realizar cuantas… 100 votaciones? 300? Y eso sucede (al menos ha sucedido) como digo en medios principales de nuestro país, que días más tarde salen en portadas, noticiarios, radio… jactándose unos y otros de los resultados tan dispares que aparecen.

Existen muy variados sistemas para impedir este comportamiento por parte del usuario (impedir hacer trampas):

-Uso del DNI-e: Sería un sistema viable, seguro y riguroso, casi totalmente imposible de manipular. El problema es que el usuario tendría que molestarse más de lo debido para enviar la información (tener el DNI-e, un lector…)

-Introducción del DNI: Podríamos sortearlo introduciendo un DNI falso, en el mejor de los casos el site verifica el número frente a la letra, y para ello tan solo tendríamos que introducir cualquier número de 8 cifras y calcular la letra de este. Este sistema no sirve.

-El uso de Cookies: La mayoría sabemos que es una Cookie en el navegador, una práctica muy habitual es marcar el equipo del usuario con una cookie que registra la introducción de los datos e impide volver a repetirlo… el problema es que una cookie se puede borrar en lo que se tarda contar 3 misisipis. Este sistema es inútil.

-El registro de la IP: Muchos otros usan la premisa que si tenemos asignada una IP por nuestro ISP, si se registra esta IP se lograría un solo “voto por persona”. El problema es que detrás de un dispositivo NAT (un router por ejemplo) puede existir desde una familia ha una empresa con muchos empleados, y este sistema estaría denegando el acceso a dichos usuarios desde ese lugar, sin contar por supuesto que sería posible saltarse el sistema poxeando o tuneleando la conexión sin mayores problemas. Incluso es relativamente simple el uso de programas o scripts para automatizar el proceso para ir saltando de proxy en proxy constantemente. Este sistema es inútil.

-El registro del User-Agent: Todos los navegadores tienen por así decirlo un identificador propio y único en teoría que los identifica. Muchos sitios usan la combinación entre User-Agent+IP+Coockie para de este modo permitir tan solo “un voto por persona”, permitiendo solo desde la misma IP múltiples accesos siempre que fuesen con diferentes User-Agent, de este modo en teoría se estaría permitiendo a otro usuario diferente detrás de la misma IP pública poder realizar su aportación. El problema es que si cambiar la IP momentaneamente es fácil, modificar el User Agent es aun más simple. En Firefox es tan simple como cambiar la opción: “general.useragent.override”, o por supuesto por medio de scripts y wget en linux.Evidentemente este sistema es inútil.

 

Dado que el único sistema viable y seguro es molestar al usuario, esto no es viable, por tanto es lógico usar un sistema alternativo, que aunque sea posible de saltarse al menos sea lo suficientemente “lento” o farragoso para un usuario mal intencionado de sortear. Y ante esto hay dos aproximaciones que he visto de forma extensa: Los que usan JavaScript para realizar las comprobaciones pertinentes y lanzar o no así las peticiones, y los que usan PHP para lo mismo. JavaScript es un lenguaje que se ejecuta en los equipos de los usuarios, PHP se ejecuta en los servidores… por tanto cualquier programador que use JavaScript para este tipo de cuestiones, y sin ánimo de ofender a nadie, es idiota. Si se ejecuta en el equipo del cliente, el cliente puede modificar el código como quiera, y por tanto puede evitar prácticamente cualquier medida preventiva que hubiese añadido, por no decir que tendría acceso al código JavaScript y ver por donde pillarlo. Con PHP por otro lado no es posible saber que se está realizando en el otro lado, ese código no nos llega, tan solo podemos saber que datos enviamos nosotros, pero no como se tratarán esos datos.

En este caso concreto de tusencuestas.com, ni que decir queda que usan JavaScript para sus sistemas, algo realmente absurdo por lo simple que resultará como veremos modificar cualquier votación/encuesta que usa su plataforma en unos pocos minutos.

Tomemos de ejemplo una web cualquiera que use este servicio, en este caso concreto he tomado la web de un programa televisivo bastante conocido en España, y que por deferencia a ellos me abstengo de decir. En este portal aparecen encuestan semanales cuyos resultados son al final presentados en el propio programa de televisión. La votación semanal en esta ocasión cuenta con 5 opciones posible, que por motivos obvios no pongo que se vota ni cuales son las opciones… de lo contrario cualquiera podría saber a que estábamos refiriendo. Actualmente la distribución es la siguiente:

1º Opción: 43.6%
2º Opción: 10.1%
3º Opción: 17.4%
4º Opción: 17.5%
5º Opción: 11.4%

Con un total de 2506 votos.

El problema reside como he dicho en que este proveedor de encuestas/votaciones, tusencuestas.com, usa JavaScript para registrar las votaciones, y para peor males tan solo prohíbe la votación por una simple verificación de Cookie. Aun así, como veremos más adelante, el echo de usar una cookie o no para verificar si el usuario ya votó o no es totalmente irrelevante. 

Lo primero es echar un vistazo al código HTML del formulario de envío de la votación:.

<div id=”tusencuestas_identificador”><div width=”100%”><div width=”100%”>Nombre de la Encuesta</div><div width=”100%”>
<input type=”radio” value=”287603″ name=”tusencuestas_respuesta_resultados_name”> Opcion 1º<br>
<input type=”radio” value=”287604″ name=”tusencuestas_respuesta_resultados_name”> Opcion 2º<br>
<input type=”radio” value=”287605″ name=”tusencuestas_respuesta_resultados_name”> Opcion 3º<br>
<input type=”radio” value=”287606″ name=”tusencuestas_respuesta_resultados_name”> Opcion 4º<br>
<input type=”radio” value=”287607″ name=”tusencuestas_respuesta_resultados_name”> Opcion 5º<br>
</div><div width=”100%”><span align=”center”>
<input type=”button” onclick=”tusencuestas_votar();” value=”Votar”></span><br>
</div></div></div>

 Por comodidad he eliminado algunos hash que continuaban a cada propiedad name. El caso es que se trata de un formulario muy simple, 5 opciones posibles a las que se asigna dependiendo de cual esté seleccionada un valor diferente. Cando el usuario quiere enviar su voto tan solo tiene que presionar el botón “Votar” que aparece en la encuesta, en cuyo caso el formulario invoca la función “tusencuestas_votar()”.

Del mismo modo, podemos echar un ojo al código JS de la web dicha función:

function tusencuestas_votar()

{
if (cookieHabilitada())
{
var accion_argumento = tusencuestas_recogeValor();
tusencuestas_accion(2, accion_argumento);
if (accion_argumento != “-1”)
{
var expira = new Date();
expira.setSeconds(expira.getSeconds() + 604800);
setCookie(“P_Id” + P_Id_hash, “1”, expira, “/”);
}
else
alert(‘��Escoge  una opcion!!’);
}
else
alert(‘No puedes votar porque no tienes las cookies habilitadas’);
}
 En realidad antes de pasar a esta función, si nuestro navegador envía una Cookie anteriormente seteada, el sistema no nos permitirá realizar la votación, y en vez de eso nos mostrará el resultado que pusimos anteriormente. La función mostrada tan solo tendremos acceso a ella si nuestro navegador no posee aun la cookie en cuestión. La función es bien simple. Si tenemos las cookies habilitadas, recoge el valor de nuestra opción marcada y lo almacena en la variable accion_argumento, y después invoca otra función que supuestamente será la que registre la votación. El resto de la función simplemente setea la cookie para que el sistema detecte al visitante que ya ha votado o muestre uan advertencia si tenemos las cookies deshabilitadas.
 
En otras circunstancias más complejas tendríamos que continuar con un seguimiento de las funciones que se van llamando, así como verificar efectivamente que la funcion recogeValor efectivamente captura el valor de la opción marcada (mostrado anteriormente en el código HTML). Pero lo cierto es que los amigos de tusencuestas.com lo han dejado francamente sencillo. Simplemente usando la consola del navegador (Ctr+Shift+k en Firefox) podemos introducir insitu el código JS que deseemos inyectar en la web que queramos, a fin de cuenta como hemos dicho el código JS es ejecutado en nuestro equipo. Así pues, podemos de forma directa introducir la función que suponemos es relevante para el caso:
 
tusencuestas_accion(2, 287607);
 
El valor 287607 no es arbitrario evidentemente, corresponde a la opción 5º del código HTML anteriormente tomado. Es decir, si todo es correcto simplemente invocando esa función en dicha web, se estaría enviado un voto a la 5º opción, sin preocuparse nadie ni nada de cookies o historias. siempre quedaría la opción de que el servidor denegar multiples conexiones desde la misma IP, pero este no es el caso.
 
Interesantemente, el servidor al introducir esa función por consola nos responde con:
 
GET http://www.tusencuestas.com/acciones/tusencuestas.aspx?44905… [HTTP/1.1 200 OK 1231ms]
Está acortado por comodidad, es a fin de cuenta una URL compuesta entre otras cosas con el ID de la encuesta (que he suprimido desde el comienzo, el valor de la opción y algunos datos más.
 
Llegados a este punto, cada vez que introducimos la función por la consola y le damos a enter, automáticamente si lo comprobamos el sistema registra un voto!! Simplemente presionando cursor arriba y enter introducimos en el sistema un nuevo voto… 10, 100, 1000… pero seamos sinceros, eso un poco farragoso y un trabajo manual de narices si deseamos por ejemplo darle la vuelta a la encuesta, o suponer en una encuesta que hayan miles o decenas de miles de votos… nos llevaría un ratito. Por suerte el voto se registra simplemente con una petición GET al servidor, como vemos en la propia consola. De echo si copiamos la URL y la pegamos directamente en la barra de dirección se registra también el voto. Por tanto, nada más sencillo que automatizar el proceso:
#!/bin/sh
X=0
while [ $X=0 ]
do
wget -O- –timeout=1 “http://www.tusencuestas.com/acciones/tusencuestas.aspx?44905…”
done
exit 0
Un simple script que realiza de forma indefinida peticiones HTTP que registrarán el voto por medio de wget, especificando que no se desea un arcivo de salida y un timeout de 1 segundo (ahora mismo lo necesito por cuestiones de retrasos de la línea en la que estoy). Y con eso el negocio quedaría terminado.
 
Para ver si funciona tan solo hay que invocar el script y ver que pasa al cabo de un ratito, pongamos 10 minutos:
 
 1º Opción: 20.7%
2º Opción: 4.8%
3º Opción: 8.2%
4º Opción: 8.3%
5º Opción: 58.1%

Con un total de 5462 votos.

 
En realidad, poca importancia tendría que tener esto, a fin de cuenta que importancia puede tener si en un periódico hacen una encuesta sobre cual es político mejor valorado o el peor… No porque la encuesta o la votación en sí carezca de sentido, sino que se usan la mayoría de las veces con fines demagogos. La importancia radica de nuevo, como en la mayoría de las veces, en lo que el usuario cree o quiere creer, dejándose casi siempre influenciar por lo que leen/escriben otros, sin pensar generalmente un poco por ellos mismos. ¿Cuantas gráficas vemos con datos tan contradictorios a lo largo de la semana? Si accedes a cierto tipo de sitios las estadísticas son unas, si entras en otros las estadísticas son diferentes… a veces explican con pelos y señales las condiciones en las que los datos fueron recogidos, otras veces son tan absurdas que comparan manzanas con platanos tan solo para que los defensores salten a la red en cualquier lugar: Blog, foros… defendiendo a ultranza a veces con total fanatismo ideas de otros con datos tergiversados y muchas veces manipulados.
 
Ahí queda eso señores. Solo espero que aquel que lea estas letras, la próxima vez que vea una encuesta, votación, gráfica… se pregunte aunque solo sea por un segundo de donde salieron esos datos, que sistemas usaron y que intereses o no puede existir detrás.
 
Un saludo.

Comparativa Navegadores 2012/Q1: Internet Explorer 10, Firefox 14.0, Chrome 19.0, Safari 5.2, Opera 12

Índice

  • Navegadores
  • Condiciones de las pruebas
  • Benchmarks (Nuevo: Inicio en caliente, Tiempo de cierre, Consumo, Caché…)
  • Conclusiones

 

Versiones de los navegadores

 

Navegadores:

 

Continuando con la tónica de las otras dos comparativas, y teniendo en cuenta que durante estos 6 meses ningún fabricante ha modificado de forma sustancial sus ciclos de actualizaciones, hoy volvemos de nuevo a la mesa de pruebas para enfrentar de nuevo a los navegadores que aun están por llegar. En alguna ocasión me han preguntado el motivo por el cual suelo hacer comparativas de navegadores que aun se encuentran en fase de desarrollo en vez de hacer comparaciones de las versiones oficiales. Esto lo he explicado en alguna otra ocasión, y son varias las razones:

a) Debido a los ciclos rápidos de Chrome y de Firefox, estos siempre tendrían grandes ventajas sobre Opera, IE o Safari, ya que estos últimos tan solo lanzan versiones oficiales cada bastante más tiempo. Comparar las últimas builds de cada navegador nos permite ser más imparciales (exceptuando Internet Explorer, ya que Microsoft no da acceso a las nightly Builds.

b) Los amantes del software (geeks y nerds entre otros) siempre deseamos probar y tener a mano lo último que se está cociendo, cambios que verán la luz de forma oficial para todo el público dentro de quizás unas semanas, unos meses o incluso un año.

Tanto para Firefox como para Safari se han tomado sus respectivas versiones nightly, ambos publican versiones nightly diadiamente. Para Chrome se ha tomado Chrome Canary, que aunque no se actualizan todos todos los días, sí prácticamente todos. Opera no publica versiones nightly tampoco, pero su versión de Opera en desarrollo es actualizado cada muy pocos días.

Internet Explorer no obstante es el único que se queda un poco atrás, ya que no podemos obtener versiones diarias ni muy actualizadas del desarrollo de Internet Explorer 10, y nos tenemos que conformar con la última versión de IE 10 que Microsoft sacó para Windows 7. Hay que tener en cuenta que esta versión de IE 10 no es un navegador completo, y por tanto los resultados obtenidos por él son cuanto menos discutibles. Esto hace además que no sea  posible realizar algunos test sobre él, por lo que se ha usado junto a él Internet Explorer 9. Cuando IE 10 no pueda ser usado en las pruebas, será usado IE9 y así quedará indicado.

Como en otras ocasiones, las versiones de 64 bits NO CONTARÁN en el tanteo final en modo alguno, y tan solo tendrán un valor presencial para comparar, puesto que ni todos los navegadores poseen versiones de 64 bits, ni ningún navegador posee una versión de 64 bits que real0mente funcione bien. No obstante, tenemos que añadir en esta ocasión Opera a los navegadores de 64 bits, siendo tan solo Safari y chrome los que por ahora no han abrazado esta arquitectura.

 Por cuarta vez, , la versión de Safari instalada está exenta de QuickTime como ya se ha explicado otras veces. En esta ocasión Apple no obliga instalarlo (un buen paso por su parte). Las razones son las de siempre, QT actúa de plugin para Safari para dotarlo de mayores prestaciones, y la idea es probar los navegadores no sus complementos. Sería igualmente injusto si no, instalar extensiones a otros navegadores para obtener mejores resultados.

Fue necesario deshabilitar DEP (en Windows) para los 3 procesos implicados en Safari, de lo contrario el navegador era bloqueado por este por motivos de seguridad.

 

Condiciones de las Pruebas

 

Sistema:

  • OS: Windows 7 Ultimate x64 SP1
  • CPU: Intel Core i7 920
  • RAM: 12GB DDR3 Triple canal
  • Video: nVidia GTX460 (Driver 296.10)
  • Resolución: 1920 x 1080 (navegador siempre maximizado)
  • Flash Player: 11,2,300,130 y 11,2,202,197

 

 Todos los navegadores son instalados de forma limpia en el mismo equipo, usando perfiles nuevos para todos ellos. El único complemento de partida que se instaló en todos los navegadores fue Adobe Flash Player, y en uno de los test para Firefox se instaló Firebug (para medir con precisión tiempos de carga, el resto usaron sus herramientas nativas).

Cada prueba en esta ocasión se ha ejecutado 5 veces en cada navegador, despreciando de ellos el mejor y el peor ciclo y haciendo media de los otros 3 resultantes. Esto se ha convertido en algo esencial debido a que muchos de los test son muy sensibles a cualquier cambio del equipo, desde un lectura en el disco duro o a algún proceso en segundo plano que pudiese interferir. Suprimiendo la mejor y la peor vuelta, se intenta evitar en lo posible estas deficiencias, sobre todo como digo en los test más sensibles.

Cada prueba puntuará de 1 a 5 (1 el peor resultado, 5 el mejor), reservando el cero para aquellas pruebas en las que el navegador no pueda realizarlas por deficiencias de este o simplemente produzca un fallo del navegador y sea incapaz de terminar la prueba. En caso de que dos navegadores obtengan el mismo resultado, a los dos se le asignará la misma puntuación, dejando la puntuación restante simplemente sin asignar. Como última prueba se hará simplemente una pequeña tabla a modo de “prueba de estabilidad” con los problemas experimentados con los navegadores a lo largo de las pruebas, y se puntuará cada navegador en función a esa estabilidad.

 

 Benchmarks

He reestructurado un poco mejor todos los test, se han modificado, añadido y eliminado otros. Hay que tener en cuenta que incluso muchos de los test que repiten, no pueden compararse con otras comparativas ni siquiera para ver las mejoras de una versión a otra, dado que los propios test sufren modificaciones por sus creadores, las web que se cargan cambian… etc etc etc.

Para ampliar cualquier imagen hacer clic en cualquiera de ellas.

Las Webs usadas para el consumo de RAM , así como los tiempos de inicio en frío/caliente y cierre son: Bandeja de Gmail, Bandeja de Mail Live (Hotmail), Muro de Facebook, YouTube (“http://www.youtube.com/watch?v=nAHyGbOXoF4” en 360p), “MARCA”, portada de “El País”, la NASA, DevianArt, Play Store, Wikipedia (https://en.wikipedia.org/wiki/History_of_the_web_browser). Para los test de 20 pestañas, simplemente se han duplicado las 10 anteriores.

Test:

  • Rendimiento
    • Tiempo de Inicio en frío (1, 10 y 20 pestañas) – Mejorado
    • Tiempo de Inicio en caliente (1, 10 y 20 pestañas – Nuevo
    • Tiempo de Cierre (20 pestañas) – Nuevo
    • Velocidad de carga de Webs con/sin Caché – Nuevo
    • RAM (10 y 20 páginas)
    • CPU/GPU reproduciendo contenido 1080p (Flash y WebM) – Mejorado

 

 

 

 

 

 

 

 

Tiempo de Inicio en Frío y en Caliente

Comenzamos con los tiempos de inicio del navegador para 1, 10 y 20 pestañas, siempre a caché vacío. No se trata de medir la velocidad de carga de las páginas (que se verá más adelante), sino el tiempo de arranque y carga del navegador ante los 3 supuestos anteriores. Inicio en fío significa que el PC no tiene cacheado en RAM nada, el equipo es reiniciado por completo, se esperan 3 minutos para que se estabilice el sistema entero y se abre el navegador pertinente, restaurando la sesión de forma automática (de 1, 10 o 20 pestañas). Inicio en caliente implica que el sistema ya ha abierto anteriormente el navegador y ha estado trabajando con él, y por tanto mantiene en RAM mucha de la carga anterior. El tiempo es medido desde que se ejecuta el navegador hasta que todas las pestañas han terminado de cargarse (que no quiere decir que todo el contenido en ellas se haya descargado):

 [singlepic id=7 w=350 h=229 float=left][singlepic id=3 w=350 h=229 float=center]

  • Opera: Falló en la carga de algunas pestañas, siendo necesario refrescarlas posteriormente (no se contabilizó ese tiempo extra)
  • Safari: Muy inestable, constantes cierres del espacio de trabajo del navegador (proceso webkit2webprocess.exe).
  • Safari: Picos constantes de la CPU de hasta 30%

 

Tiempo de Cierre

En esta ocasión se ha medido también el tiempo de respuesta del navegador a cerrar. En teoría podríamos pensar que estos tiempos son prácticamente inmediatos, pero no lo son. En muchas ocasiones el navegador se mantiene como proceso de fondo durante un largo período de tiempo incluso, lo cual evidentemente no es deseable. Los tiempos medidos son con 20 pestañas cargadas en los navegadores, contabilizando desde el momento en el que se envía la señal kill al proceso padre hasta que el árbol de procesos de este es totalmente finalizado, incluyendo el proceso padre evidentemente. Esto es importante sobre todo en Chrome o Internet Explorer, que al ser navegadores multiprocesos tienen unas dependencias mucho mayores al resto:

[singlepic id=5 w=700 h=458 float=center]

 

Velocidad de Carga de la Web con y sin caché

 Este test posee un doble propósito. Por un lado medir la velocidad con la que los navegadores son capaces de descargar por completo la Web desde los servidores externos, y por otro lado medir la eficiencia del Caché de estos, realizando el test con la caché del navegador activada y deshabilitada. Hay que tener en cuenta que lo que se mide no es el tiempo que tarda el navegador en comenzar a mostrar las páginas o cargarlas por completo, sino el tiempo que tarda el navegador en descargar y preparar TODOS los recursos de las web solicitadas. Es de esperar por tanto que los tiempos en las páginas con el contenido cacheado sea mucho menor. Cada Web fue abierta de forma aislada y se sumaron los tiempos de todas ellas:

[singlepic id=12 w=700 h=458 float=center]

  • Internet Explorer 10: Los resultados que aparecen con caché pertenecen a IE9, la Preview 2 de IE 10 parece tener la caché deshabilitada

 

Consumo de RAM

Aunque a día de hoy la gran mayoría de los sistemas actuales cuentan con cantidades más que suficientes de RAM, continúa siendo un recuro que siempre hay que vigilar y que optimizar al máximo. Además, hay que entender que cada dato que es cargado en la RAM o procede del mismo proceso que lo genera o ha sido cargado desde el disco duro anteriormente, y teniendo en cuenta que el disco duro continúa siendo a día de hoy el elemento más lento del equipo, es algo a tener en cuenta. Los datos mostrados corresponden a la memoria Privada usada por el/los procesos, eso quiere decir que no es exactamente el 100% de la memoria RAM ocupada, ya que no se incluyen pequeños “pedazos” adicionales como por ejemplo el mapeo de archivos adicionales como puedan ser las fuentes, archivos de configuración… No obstante, esta “Memoria Privada” supone una precisión de más del 95%, haciendo que sea más que suficiente para nuestros propósitos:

[singlepic id=16 w=700 h=458 float=center]

  • Safari: Como ya se ha dicho, el proceso “webkit2webprocess.exe” produce una carga de la CPU de un 30% aproximadamente
  • Opera: No logró “estabilizar” (dentro de lo normal) la RAM ocupada, provocando un crecimiento lineal en el consumo de esta mientras transcurría el tiempo. Sin duda alguna un leak de memoria ocasionado por alguna de las pestañas abiertas.

 

Reproducción a 1080p

Es evidente que la reproducción de vídeo es crucial en los tiempos que corren en la web, un mundo que busca cada vez más el máximo rendimiento con el mínimo consumo posible (lo que alarga las baterías de los dispositivos portátiles). La reproducción de Vídeo continúa a día de hoy siendo uno de los mayores “comecome” de baterías. De nuevo, en esta ocasión la comparativa es doble, ya que no solo compararemos la eficiencia en la reproducción de un vídeo Full HD a través de Flash, sino que haremos lo mismo a través de WebM gracias a HTML5, así podremos comparar a grandes rasgos la eficiencia de un sistema o de otro. En la comparativa de hace seis meses los únicos navegadores con soporte WebM eran Chrome y Firefox, en cambio a día de hoy tanto Opera como Internet Explorer (por medio de un complemento) soportan también WebM, con lo que sí me parece correcto comenzar a medir cada navegador frente a WebM, y como ya he dicho este ante Flash. El vídeo reproducido es el mismo que el de hace seis mese: “We Are The World – Haiti”

[singlepic id=24 w=700 h=458 float=center]

  • Internet Explorer: Permite la reproducción de WebM gracias a un complemento externo. Se pone por referencia, pero a efectos de conteo general se tratará como un “no soportado”
  • Un error por mi parte en el código de colores. Cada columna de cada navegador representa (en orden) lo que muestra la leyenda, aunque los colores para representar WebM sean los mismos que  para Flash

 

SunSpider, V8 y Kraken

Posiblemente los 3 benchmarks más utilizados para medir el rendimiento de los motores JavaScript de los navegadores. Como ya he dicho en muchas ocasiones no soy fan de test sintéticos, y mucho menos tests que han sido optimizados al máximo por todos los navegadores para obtener buenas puntuaciones. Quiero decir que TODOS los navegadores hacen algo así como “trampas” para aparentar ser veloces, cuando a lo mejor no lo son tantos. No quiere decir que sean totalmente inútiles, ya que muchas optimizaciones son llevadas después a los entornos reales, pero por regla general no son demasiado fiables. Esto lo veremos más adelante cuando analicemos el rendimiento en Canvas, que a fin de cuenta son muy dependientes de JavaScript, y veremos como los resultados obtenidos aquí no siempre ejemplifican aplicaciones web con alta carga JavaScript:

[singlepic id=20 w=359 h=235 float=left][singlepic id=23 w=359 h=235 float=center]

[singlepic id=9 w=359 h=235 float=center]

 

 Normal Mapped, Canvas Performance, VII y Asteroids

HTML5 permite integrar dentro del navegador de forma simple contenidos complejos a través de canvas. Básicamente Canvas define un marco de ejecución de cierto contenido (generado principalmente por JavaScript). Es por ello que en realidad podría verse Canvas como la aplicación práctica del uso pesado de JavaScript. Esto ha permitido suprimir la necesidad de complementos para un gran sin fin de necesidades, con lo que tan solo con disponer de un navegador compatible podemos hacer correr la aplicación sin importar nada más.

Normal Mapped es un test que aunque es claramente gráfico posee una carga gráfica mínima, siendo el mayor aporte JS, y por ello queda relegado a este grupo de test. Por otro lado, Canvas Performance, es un benchmark muy interesante de cara a que trata de medir el rendimiento no de JavaScript en realidad, sino del contenido ejecutado en Canvas de forma sintética, al más puro estilo de los test sintéticos JavaScript. VII es una demo de un juego creado a modo de test para los navegadores que hace un uso bastante extenso no solo de JavaScript, en este caso de CSS, SVG y de la composición de capas. Asteroids por otro lado es un test ya conocido, con fuerte dependencia JavaScript y gráfica:

[singlepic id=11 w=359 h=235 float=left][singlepic id=4 w=359 h=235 float=center]

[singlepic id=25 w=359 h=235 float=left][singlepic id=2 w=359 h=235 float=center]

  • Opera:Graves problemas cuando VII superpone diferentes capas de texto, el framerate baja a la mitad de golpe

 

Tanque de peces (3.000 peces), Pecera (2.000 Peces)

En esta entrega los peces vuelven al ataque, pero gracias a Opera ha sido necesario incrementar el número de Peces en ellos, ya que en ambos test Opera era capaz de llegar al tope de los 60 fps. Dos Test similares pero diferentes, orientados ambos al rendimiento gráfico de Canvas puro y duro. Los dos fueron diseñados para aprovecharse al máximo de la aceleración hardware de contenido, y es por ello que Chrome y Safari fracasan estrepitosamente. Anteriormente vimos como Opera no disponía de esta cualidad, que ahora ha implementando con sus pros (gran rendimiento) y contras (uso extensivo de la GPU y el consiguiente consumo energético), los cuales veremos en las conclusiones en detalle.

Todos los test con fuerte contenido gráfico acompañan igualmente la carga en la CPU y en la GPU, lo cual servirá además para comparar el consumo energético de cada navegador

[singlepic id=21 w=359 h=235 float=left][singlepic id=27 w=359 h=235 float=center]

  • Safari: No posee Aceleración por Hardware
  • Chrome: Google tiene implementada a medio gas la aceleración por Hardware, pero además de ser muy inestable aun, es necesario activarla por medio de about:flags actualmente, con lo que en esta ocasión queda fuera.

 

“Come-Cocos” (Browse Hunt)

Una vez más, este test creado por Microsoft logra poner los pelos de punta al resto de los navegadores, siendo 6 meses después imposible de acercarse a los 60 fps que logra Internet Explorer. Aun siendo un test fuertemente gráfico, tanto Firefox como Opera estan lejos de alcanzarlo:

[singlepic id=6 w=700 h=458 float=center]

 

“Letras” (SpeedReading)

Uno de los mejores test para comprender la importancia de la aceleración gráfica dentro de los navegadores. Pasamos de los 6 segundos en finalizar el test a más de 2500 en el caso de Safari:

[singlepic id=18 w=700 h=458 float=center]

 

 Psicodélico

Otro test que se ha hecho muy extendido y famoso en toda la red por demostrar el potencial gráfico actual de los navegadores. Existen varias versiones de este test, pero al final siempre es lo mismo: Una imagen que gira sobre si misma a la máxima velocidad posible:

[singlepic id=15 w=700 h=458 float=center]

 

Webvizbench

Aunque no deja de ser un benchmark, es uno de los mejores ejemplos de canvas compuesto, con una alta carga JavaScript, gráfica, CSS… explota al máximo desde transiciones, composición de capas, animaciones… es de los test más completos que veremos por aqui, y orientado siempre a aplicaciones prácticas que podrían/pueden crearse y que antes eran totalmente impensables. Uno de mis test favoritos sin duda:

[singlepic id=26 w=700 h=458 float=]

 

Tanque de Peces (50.000) y Sistema Solar, ambos para WebGL

Aunque en la entrega anterior WebGL no llegó a puntuar realmente, en esta ocasión dado que Opera da soporte de forma oficial también, es coherente añadirlo. Aun se quedan fuera tanto Internet Explorer como Safari. Microsoft no está claro que vaya a implementarlo por ahora, no obstante para Safari es posible activarlo de forma experimental y tan solo en MAC OS. Ambos obtendrán por tanto un “no soportado”.

Es interesante como los chicos de Mozilla tomaron el test original de Microsoft del tanque de peces (usado anteriormente con 3000 peces) y lo adaptaron a WebGL. Comprobamos como tenemos que elevar a la friolera de 50.000 peces para no alcanzar los 60 fps de tope. Si bajo la aceleración por Hardware por contenido y capas 3.000 peces parecían ser el tope por ahora, el rendimiento por WebGL frente al test anterior es sorprendente:

[singlepic id=22 w=359 h=235 float=left][singlepic id=17 w=359 h=235 float=center]

 

Peacekeeper

Test sintético que mezcla varios elementos para medir el rendimiento de los navegadores. Personalmente me gustaba más la versión anterior pero ya no es posible hacerla andar. Mezcla parte JS, trabajo con cadenas, gráficos… y sobre todo objetos DOM. Como ya dijimos también, ha sido un test muy criticado por explotar con fines mediáticos la fortaleza y debilidades de los navegadores, un test muy parcial. Pero de nuevo, no deja de ser un buen indicador, muchas veces es necesario conocer los puntos fuertes y débiles de cada navegador para poder mejorarlos. Lo único que no queda claro del todo es si el echo de que el navegador pase o no pase más test puntúa más. Más que nada porque el test en un momento dado intenta reproducir vídeo en diferentes codec por medio de html5, y si no lo logra no lo puntúa correctamente. Recordemos que el codec usado para el tag <video> de html5 no es una especificación, que eso queda a discreción del navegador. El test de niels pra HTML5 es mucho más riguroso en este tipo de cuestiones, Peacekeeper no tendría incluir en sus test este apartado

[singlepic id=13 w=700 h=458 float=center]

 

Spinnig Balls

Cualquier programa informático generalmente requiere un buen gestor de memoria que esté de forma asidua buscando y liberando cualquier trozo de RAM que ya no use. Esto es útil por dos razones principalmente: Primero porque de lo contrario el consumo de RAM subiría constantemente y terminaría con consumir toda la existente, y segundo porque la ejecución del programa sería cada vez más lenta y los datos en RAM más fraccionados. Esto como digo se evita “reciclando” la RAM cada cortos períodos de tiempo. Los navegadores pueden producir en cortos períodos de tiempo muchos objetos nuevos que se destruyen igualmente rápidos alguno de ellos, lo cual genera constantemente muchos trozos de RAM “basura” que es bueno ir liberando. La alternativa de no usar GC (Garbage Collection) no es viable. El problema de los recicladores es que dependiendo del sistema GC que estén usando pueden detener la ejecución del proceso hasta que el reciclado se ha terminado. Esto en un navegador se traduce por ejemplo con una extraña pausa en un momento dado, un salto en u juego, un drop de FPS momentáneo… cuestiones que realmente no implican que el proceso se ejecute más rápido o menos rápido, sino que se ejecute de forma fluida o no. Esto lo hemos visto en muchos test en los que algunos navegadores no es que obtengan bajos FPS, sino que aplicaciones que aun obteniendo altos FPS son totalmente imposibles de manejar dada las continuadas pausas.

Este test mide este comportamiento. Genera muchos objetos constantemente y mide las pausas que se registran. Este test es muy muy sensible a cualquier otro proceso que se esté ejecutando, así que ojo. Cada pausa que registra el programa la anota, y la mejor puntuación es para aquel navegador que realiza menos pausas o pausas más cortas. Es decir que un navegador que a lo mejor tienen 10 pausas de 5 ms y otro que posee 5 de 10 ms, el primero obtendrá mejor resultado ya que la implicación es menor y la ejecución mucho más fluida.

[singlepic id=19 w=700 h=458 float=center]

  • Internet Explorer 9: No es compatible con el test
  • Firefox: El GC actual de Firefox no es todo lo estable que se podría esperar,  aunque cuando funciona correctamente es el mejor de los navegadores.

 

Test de compatibilidad HTML5 de Niels

A día de hoy pun buen navegador no solo es aquel que es el más rápido, sino que también está en continuo desarrollo para adaptarse a los nuevos tiempos y a los nuevos estándares. El test de Niels es uno de los mejores identificativos para medir la compatibilidad con el futuro estandard HTML5. Repito, el test de Niels TAN SOLO mide especificaciones HTML5, no mide ningún otro estándar, y son muchos otros los que a día de hoy disponemos:

[singlepic id=10 w=700 h=458 float=center]

  • El test de Niels se basa actualmente sobre 500 puntos máximos.

 

Test de compatibilidad WebGL de Khronos

Exactamente igual que testeamos poco a poco las especificaciones HTML5 que van formándose, hacemos lo mismo con las especificaciones de WebGL. WebGL es un estándar para permitir que el navegador pueda ejecutar gráficos avanzados en él, es llevar la API OpenGL a los navegadores. Dos navegadores pueden ser compatibles con WebGL, pero si uno no es compatible en algunas cuestiones de WebGL el resultado puede ser simplemente que el contenido no se visualice o se visualice mal. Mientras buscaba algunos test WebGL interesantes, en muchos casos no todos los navegadores con soporte WebGL podrían ejecutarlos correctamente

[singlepic id=1 w=700 h=458 float=]

  • Internet Explorer y Safari: No son compatibles
  • Chrome: Varios test de la suite producían un comportamiento totalmente anómalo de este, obligando a reiniciar Chrome. El resultado mostrado es eliminando los test que impedían su funcionamiento
  • Firefox: Aunque pudo completar el test totalmente, uno de los test en particular (que también afectaba a Chrome) producía paralizaciones de todo el navegador en diferentes momentos. Al final no impidió en cambio terminar con todos los test sin producir un cierre forzado

 

IE Center Testing

Microsoft posee desde hace ya tiempo un site con una tabla que muestra la compatibilidad de los diferentes navegadores frente a los nuevos estándares. Los test son los mismos solo que yo los aplico a mis versiones de los navegadores, mientras que Microsoft la aplica a su navegador en desarrollo y las versiones oficiales de la competencia (lo cual es injusto evidentemente).

También hay que entender que aunque la suite de test que expone Microsoft es bastante completa (siendo a mi gusto el test de compatibilidad mas completo que hay), es totalmente parcial y engañosa. Es decir, la suite de test creados por Microsoft para probar la compatibilidad de los navegadores se basa en exponer TODAS las compatibilidades que Microsoft sabe que Internet Explorer 10 será compatible, con lo que cabe esperar que posiblemente Internet Explorer 10 cuando sea oficial obtenga un 100% en todos los test. En cambio, para muchas otras especificaciones y partes de especificaciones en las que Internet Explorer no es capaz de dar la talla, Microsoft simplemente no crea test para ellos. Es el caso de muchas especificaciones de HTML5 (que es mucho mejor identificativo el test de niels) o para WebGL. A esto habría que sumarle además errores de los propios tests, es decir que Microsoft interpreta las especificaciones de un modo y la competencia de otro… comportamiento que se ha visto en muchas ocasiones verificado.

Todo esto se resume con que esta suite es crucial a día de hoy y un excelente trabajo por parte de Microsoft sin duda, pero que quizás tan solo cubre un 60% de un todo, siendo el 60% que cubre el que precisamente interesa a Microsoft por ser compatible con su navegador. Aun así el soporte para CSS, SVG y otras tecnologías es hasta bonito:

[singlepic id=8 w=700 h=458 float=center]

  • Mis test están actualizados con la última versión del IE Center de Microsoft, actualizada a 29/02/2012

 

 

Conclusiones

Si valoramos cada navegador como se dijo al comienzo, los resultados serían por tanto los siguientes:

Resultados Firefox 14 x86 Chrome 19 IE 10/9 x86
Opera 12
Safari 5.1
Rendimiento 56 48 34 19 35
JavaScript 12 12 7 9 5
Canvas 14 17 16 6 7
Gráficos 25 14 24 22 7
WebGL 10 8 0 6 0
Otros 8 9 2 7 4
Compatibilidad 12 11 6 10 3
Estabilidad 5 5 3 2 1
           
Total 134 115 90 74 58

 

  • Rendimiento

    El rendimiento de un navegador no sólo se resume en lo rápido que pueda ejecutar un código en JavaScript o los fps que sea capaz de mostrar en cualquier aplicación/juego. De echo, desde mi punto de vista posee un peso más que importante a la hora de escoger uno u otro. ¿Cuantas horas a la semana pasamos delante de un PC/dispositivo con el navegador abierto? Cada vez disponemos de dispositivos más potentes, pero las páginas Web, las aplicaciones Web… cada vez son más complejas igualmente y requieren de esa potencia extra. Por tanto es de extrema importancia que el navegador no solo sea capaz de ejecutar una tarea lo más rápida posible, sino que el propio navegador se comporte de forma ágil y veloz en el sistema. Eso implica que tenga excelentes gestores de memorias propios, que pueda gestionar inteligentemente la carga de nuevos contenidos, reducir en la medida los accesos a disco, innovar en nuevos sistemas de almacenaje de datos para su rápido acceso… y sinceramente esto es una tarea muy complicada.

    En cuanto a tiempos de inicio se refiere, sin duda alguna Chrome reina sobre la competencia siempre y cuando se estén abriendo al mismo tiempo múltiples pestañas. Este comportamiento evidencia la necesidad de que el navegadores sean poco a poco multiprocesados. Recordemos que aunque todos los navegadores a día de hoy sin multihilos, tan solo Internet Explorer y Chrome son multiprocesos. Esto les otorga entre otras cosas ser (al menos teóricamente hablando) más veloces y eficaces a la hora de manejar múltiples pestañas. El problema es que esto no es tan simple de realizar, sobre todo cuando el proyecto es de grandes proporciones. Eventualmente, Mozilla separará los procesos de las pestañas y llegará a ser una realidad el proyecto Electrolysis. Igualmente, antes o después Opera y Safari tomarán caminos similares.

    El principal problema de abrir múltiples pestañas a la par es la sobrecarga en el navegador, independientemente de la velocidad con la que se cargue el navegador. En los navegadores no multiprocesados como Firefox, Opera o Safari la apertura múltiple de muchas pestañas podría provocar al usuario la sensación de paralización/congelación de este hasta que prácticamente todas las pestañas estuviesen cargadas, ya que desde el punto de vista del navegador tan solo estaría llevando a cabo una misma tarea. Para Internet Explorer o Chrome este problema no lo tienen, cada pestaña tiene su propio espacio y sería el propio sistema operativo quien gestionaría por medio de su planificador (Scheduler). Para tratar con ello, tanto Opera como Firefox usan por defecto la carga selectiva de pestañas, es decir, por defecto cuando se abren múltiples pestañas a la par tan solo se cargan aquella que esté en primer plano. El efecto es inmediato, de poder tener el navegador paralizado durante múltiples segundos la navegación es instantánea, y mientras se pueden ir cargando de fondo el resto de las pestañas. Por supuesto a la hora de medir los tiempos, este comportamiento se deshabilitó para que todos los navegadores estuviesen en igualdad de condiciones.

    Todo tiene pros y contras, y que una aplicación sea multiprocesos implica inevitablemente otros efectos secundarios cuando no se cuidan demasiado, y que se evidencia en una sobrecarga adicional en la memoria RAM y en el tiempo necesario para finalizar por completo la aplicación. De esta forma, efectivamente tanto Chrome como Internet Explorer son los que poseen un tiempo sensiblemente superior en cuanto a tiempo de cierre, siendo sus consumos de RAM significamente superiores que si los comparamos con el consumo de RAM de Firefox. Safari por su lado mostró un comportamiento más intermedio y como sorpresa, Opera mostró un resultado terrible.

    En otro orden de cosas encontraríamos sorpresivamente que Firefox es el mejor navegador a la hora de descargar una web no cacheada, y el segundo cuando sí la tiene. Chrome le rozaría los pies de cualquier modo siendo las diferencias mínimas, e Internet Explorer mostró un comportamiento bastante decente.

    Por último, hay que destacar el rendimiento en la reproducción de contenido en 1080p de los navegadores y de la mitificación que otrora intentó Steve Jobs en que Flash es la lacra para el rendimiento, la seguridad y el pasado. Para empezar Flash es mucho más que un simple reproductor de vídeos, y para terminar es evidente que a día de hoy es de lejos la mejor opción a la hora de reproducir cualquier contenido en HD. Si miramos los recursos usados por el equipo en la reproducción de contenidos en Flash y contenidos en WebM, vemos que las diferencias son sorprendentes. Evidentemente estas grandes diferencias son principalmente por la aceleración por Hardware con la que cuenta Flash y no WebM, pero es una cuestión de números. Mientras que reproducir en el equipo de pruebas un vídeo 1080p en flash consumía en el peor de los navegadores un 13% de la CPU (menos de un 1% en los mejores casos) y un 8% la GPU (en el peor de los casos), WebM llegó a a necesitar en el mejor de los escenarios un 8% CPU/18% GPU, elevando la carga de la CPU en el caso de Opera hasta el 21% (y un 16% la GPU). Sea como sea a día de hoy la mejor opción para la reproducción de vídeos es Flash gracias al gran soporte que esta tecnología posee en cuanto a aceleración de hardware se refiere.

    Por supuesto, se podría usar otros codec como H264 para la reproducción de vídeo por HTML5, y este poseería mejor soporte para aceleración por hardware que WebM (y mayor calidad), pero h264 está fuertemente patentado. Aun así, el rendimiento sería inferior al mostrado por Flash.

    No estoy diciendo que el futuro del vídeo sea Flash, el que los navegadores posean capacidad para reproducir vídeo y audio a través de ellos mismos es algo importantísimo y una herramienta muy potente. Pero todo requiere tiempo… a veces mucho tiempo. El proyecto WebM no será posible mientras que el soporte para este sea el que estamos viendo. Por otro lado, la imposición de h264 como codec  de vídeo junto a AAC como codec de audio tampoco parece ser una respuesta a corto plazo, aunque personalmente desearía que esta última opción fuese la que se impusiese con el tiempo y que la MPEG LA abriese el codec para su uso en la Web. Seamos sensatos, soy defensor de los formatos libres y abiertos, pero el codec de vídeo VP8 (el usado en WebM)  no es rival de h264, y además este último posee mucho mejor soporte Hardware. Veremos en el futuro como termina la cosa… mientras tanto podemos más que conformarnos y ser felices por el extraordinario rendimiento de Flash.

     

  • JavaScript

    Los test sintéticos JavaScript que ya conocen todos siguen siendo punto de referencia para muchos. Como ya dije me parece que son test tramposos que tan solo buscan la buena prensa de los medios. Seamos sensatos, cualquiera que eche un vistazo a los números y luego a los entornos reales ve que existen diferencias cuanto menos graciosas. Así por ejemplo supuestamente Internet Explorer mantiene el liderazgo en SunSpider, y en cambio posee la peor puntuación en los otros dos benchmarks!! cuando además se supone que Kraken es un derivado de SunSpider. O al revés, mientras que Chrome obtiene una puntuación totalmente disparatada en su propio test V8 (el de Google), obtiene la penúltima posición en SunSpider.

    No hay que ser un genio para darse cuenta que todos los navegadores (sin excepción) optimizan partes de su código a sabiendas de estos test, con la inclusión de Fast Path y otros. Por supuesto que muchas de estas optimizaciones pueden ser llevadas a entornos reales, pero es evidente que la mayoría no, la mayoría tan solo tienen utilidad en estos test, y por tanto su fiabilidad es más que dudosa.

    De nuevo no quiere decir que sean totalmente inútiles este tipo de test, y se aprende mucho de los motores JS de cada navegador, se pueden detectar puntos calientes en ellos, mejorar… eso por supuesto!! pero estos test tienen sentido realmente cuando se comparan  no navegadores Vs navegadores de la competencia, sino en todo caso las mejoras existentes en JavaScript entre las diversas versiones del mismo navegador.

    Respecto a la comparativa anterior, los resultados para SunSpider y Kraken son muy similares, pequeños cambios. En cuanto a V8 si hay cambios más significativos, pero hay que tener en cuenta que V8 fue actualizado a su versión 7, mientras que el test anterior era la V6.

 

  • Canvas

    He querido separar este apartado del de JavaScript, aunque en realidad están muy relacionados uno con otros. En la comparativa anterior se usaban dos juegos de ejemplo que en esta ocasión han sido sustituidos por otros dos test. Canvas es una de la infinidad de especificaciones que poseerá el estándar HTML5 y que se están empezando a usar muy poco a poco. Como ya he dicho, Canvas define algo así como un espacio de trabajo en el que se ejecutará un código principalmente en JavaScript, CSS…  con lo que es posible la creación de aplicaciones Web complejas, y por supuesto juegos como Angry Bird y tantos otros. El rendimiento de estos “marcos” está ligado íntimamente con JavaScript, pero como veremos en el apartado gráfico también de otros muchos factores.

    Es complicado medir este apartado dado que se puede crear un Canvas con el contenido más vario pinto posible, y es más que posible que en algunas aplicaciones domine un navegador y en otras domine otro. No obstante, cuando valoramos de forma general todos ellos (y siempre que no hagamos un uso relativamente extensivo gráfico), Chrome e Internet Explorer son los líderes, estando Firefox relegado a una tercera posición. Más sorprendente es el caso de Opera, que aun cuando exhibe un buen comportamiento JavaScript (y como veremos más adelante gráfico) obtuvo la peor calificación. Esto nos hace ver que un entorno real como una aplicación o un juego HTML5 no es un test sintético, y que un buen competidor como Opera que sobrepasaba tanto a Internet Explorer como a Safari en JavaScript y a Chrome y Safari en el apartado gráfico, fracasa estrepitosamente aquí. Safari por su parte logra a duras penas quedar por encima de Opera.

 

  • Gráficos

    Hay que tener en cuenta antes de empezar, que aunque esta sección se llame “gráficos” no tiene nada que ver con la elavoración de gráficos complejos 3D ni nada por el estilo, sino test que pueden sacar un provecho enorme de la aceleración hardware. Así por ejemplo tenemos el test de SpeedReading que tan solo se vasa en un marcador veloz de letras, o psicodélico, que no deja de ser una imagen girando sobre sí misma.

    En la comparativa anterior, el soporte de Chrome para aceleración de vídeo estaba habilitado por defecto, y ya antes era inestable. En esta ocasión vemos que estando deshabilitado (que es como está por defecto) Chrome cae a posiciones inferiores. Aun así, aun de estar habilitado habría obtenido la misma puntuación casi con toda seguridad, ya que en esta ocasión ha sido Opera quien por fin ha activado de forma oficial el soporte hardware de este. El otro gran avance que hay que citar es sin duda alguna los Drivers del sistema de nVidia y las actualizaciones de Microsoft de DirectWrite y Direct2D, los cuales han hecho que de forma generalizada se haya experimentado un incremento sustancial en el rendimiento.

    Ha sido muy interesante comprobar el rendimiento de Opera en esta comparativa gráficamente hablando. Dado el comportamiento que mostró tanto en el test del Tanque de 3000 peces como en la pecera con 1500 peces, fue necesario incrementar el número de peces de estos para que Opera no fuese capaz de llegar a los 60 fps. Aunque al final terminase en la tercera posición, en realidad en los test en los que estuvo por debajo de Firefox o Internet Explorer no fue por demasiado.

    Opera sin duda alguna ha hecho un gran trabajo con el soporte hardware de su navegador, pero su visión fue totalmente diferente a la de Internet Explorer o Firefox. Tanto Internet Explorer como Firefox usan la API DirectWrite y Direct2D para la aceleración hardware de contenido y de capas, mientras que Opera usa OpenGL para ambos. Como ya hemos dicho todo tiene sus pros y sus contras, y esto lo vemos muy bien reflejado además en los consumos de CPU/GPU de dichos test.

    El adaptador de vídeo no se comporta igual si está ejecutando código en DirectWrite que código en OpenGL. Evidentemente (y como veremos más adelante en WebGL) OpenGL está clasificado como una API completa de alto nivel, como pueda ser Direct3D, mientras que DirectWrite y Direct2D es una API 2D tan solo. orientada al bajo consumo y eficiencia. Esto tiene una repercusión directa en el adaptador de vídeo, y es que este junto a los Drivers otorgan siempre más recursos a contenido que supuestamente es 3D. Es decir, la API DirectWrite/Direct2D está diseñada precisamente para sobrecargar en lo menos posible al adaptador de vídeo, ya que se supone que el contenido que se va a visualizar o tratar es en 2D, y por tanto no requiere de unos recursos demasiado altos!! esta asunción es totalmente sensata y es lógica: “Si se requiere de unos recursos muy elevados será porque se estará manejando gráficos complejos en 3D, de lo contrario podemos trabajar a medio gas porque el contenido 2D es infinitamente menos exigente. Y si requerimos contenido 3D complejo para ello tenemos OpenGL/Direct3D”

    Todo ello se resume en que Opera, que usa OpenGL como Backend, obtenga resultados superiores en algunos test, a expensas siempre de un consumo bastante superior tanto de CPU como especialmente de GPU. Así en el test del tanque de 3000 peces la GPU eleva su uso al 61% en Opera, mientras que Firefox con la segunda mejor marca alcanza el 38%. Mucho más exagerado lo vemos en el test de la Pecera con 2000 peces!! Opera logra la friolera de 52 fps, a expensas de requerir un 20% de CPU y poner a trabajar el adaptador de vídeo al máximo, a un 97%!! Firefox de nuevo con la segunda mejor marca logra los 31 fps, pero usando “tan solo” un 41% de la GPU.

    Tanto Internet Explorer como Firefox usan el mismo Backend usado de forma muy similar, aunque Firefox lo usa por regla general algo mejor (no demasiado). Chrome por su parte con el soporte experimental hace algo similar que Opera (y todos esperamos ver dentro de 6 meses que ya se encuentra activado). Safari por contrapartida se desconoce si en algún momento incorporará soporte hardware en su navegador… cosa dudosa teniendo en cuenta la mala imagen que podría dar en la prensa que el navegador Safari tuviese un rendimiento superior en Windows que en MAC OS.

    Por último decir que la ventaja de que Opera use OpenGL de backend, es que en teoría debería de ser totalmente compatible con cualquier OS compatible con OpenGL (Linux, Windows XP, MAC OS), mientras que el camino tomado ahora mismo por Firefox e Internet Explorer requieren de DirectX 9+ (recomendando DirectX 10) y Windows Vista/7.

    El futuro parece más o menos evidente. Firefox no solo tiene creado el backend de Direct2D/DirectDraw, sino que posee también un Backend OpenGL para Linux/MAC OS. Así mismo con el tiempo Mozilla abandonará Direc2D/DirecDraw e implementará un Backend en Windows basado en Direc3D, con lo que se obtendrá no solo un rendimiento superior, sino que será más compatible dentro de los diferentes adaptadores de vídeo y versiones de Windows.

 

  • WebGL

    Dado que Opera se ha sumado por fin al carro de WebGL y que Safari posee en MAC OS soporte experimental para ello, me parece sensato comenzar a puntuar también WebGL.

    Aunque en el apartado anterior se ha hablado de forma extensa sobre la aceleración de hardware y de contenido gráfico, hay que saber diferenciar totalmente WebGL de ello. En el apartado anterior se mostraba la capacidad de los navegadores para acelerar gran parte del contenido en muchas aplicaciones Web y juegos a través de diferentes APIs, como por ejemplo una imagen girando velozmente sobre ella misma, transiciones rápidas… aplicaciones o juegos que podemos encontrar cada vez más en cualquier lado. No hablamos de apartado gráfico anteriormente porque manejásemos gráficos complejos, sino para especificar que son test que hacen uso extensivo del adaptador de vídeo.

    Pero WebGL es totalmente diferente, con WebGL sí asumimos que vamos a trabajar (o al menos que podemos trabajar) con gráficos complejos. WebGL se crea como iniciativa de poder renderizar en Canvas contenido 2D/3D complejo a través de OpenGL. De prosperar y ser realmente eficiente (que es discutible dado la gran sobrecarga de JavaScript) podríamos encontrar a medio plazo juegos con bastante potencial gráfico ejecutado directamente en nuestro navegador. Como lado negativo se encuentra en que WebGL se basa evidentemente en JavaScript, y la sobrecarga de este lenguajes es muy alta. No podremos por tanto comparar jamás una aplicación/juego programada en C++ y OpenGL que programada en JavaScript y WebGL. Esta tecnología jamás será un sustituto ojo, WebGL no llega para desbancar nada, sino para añadir algo que antes era imposible.

    Gracias a WebGL vimos el increíble trabajo por parte de Google y Zigote con “Body Browser”, que es una aplicación totalmente práctica, útil y funcional. Realizar algo así sin WebGL sería imposible a día de hoy, se debería de instalar algún complemento en el navegador.

    No obstante aquí encontramos un escenario muy interesante si comparamos los datos obtenidos. Opera que obtenía unos resultados increíbles en algunos test anteriores, cuando se trata de usar WebGL no es capaz de alcanzar ni a Firefox ni a Chrome. Esto parece tener clara la explicación: Opera usa OpenGL como backend también en WebGL, pero tanto Firefox como Chrome usan ANGLE. ANGLE es un proyecto impulsado/creado/mantenido por Chrome que básicamente es una capa de software encima de DirectX 9.0c que traduce OpenGL 2.0. Dicho de otro modo, cuando Firefox o Chrome usan ANGLE todo el código ejecutado en OpenGL a través de WebGL es transformado a llamadas en Directx 9.0c.

    Soy defensor de OpenGL, sobre todo por su facilidad a la hora de programar con él, pero la API DirectX es sencillamente mejor y más rápida. Incluso con ANGLE que tiene que hacer de “traductor”, el rendimiento a través de este es superior. En Firefox existe la posibilidad no obstante de usar el soporte nativo OpenGL, pero cuando se opta por este modo, el rendimiento es algo inferior.

    Aun así, no se usa ANGLE por su rendimiento, ya que al final cuando se optimizase WebGL y el soporte nativo es de esperar que el rendimiento de este fuese superior. Se usa ANGLE porque el soporte para OpenGL varía mucho entre diferentes fabricantes. Así por ejemplo, nVidia ofrece el mejor soporte para OpenGL disponible, siendo compatible desde su serie GX 400 con OpenGL 4.2.0. Pero este escenario es totalmente desastroso cuando miramos adaptadores de vídeo Intel, que poseen un soporte para OpenGL mucho más pobre. ANGLE es una solución muy eficaz ya que asegura que sea cual sea el fabricante o el adaptador de vídeo que se tenga instalado, mientras que este sea compatible con DirectX 9.0c podrá ejecutar a la perfección contenido WebGL, y en muchos casos como vemos con un rendimiento superior. Por suerte, Intel está empezando a aplicarse el cuento y entregando controladores decentes para OpenGLen la actualidad, ahora mismo creo que ya soporta en Windows 7 hasta OpenGL 3.0. Recordar que estamos hablando en todo momento de Windows, en Linux o MAC OS no es posible bajo ningún pretexto el uso de la API DirectX, y OpenGL forma parte intrínseca de él. En el caso de Linux es posible usar OpenGL 4.2.0 (la especificación más alta actualmente) siempre y cuando el adaptador de vídeo lo permita, en el caso de MAC OS, este tan solo soporta OpenGL 2.0 y con algunas carencias.

    El test que más nos llama la atención es inmediatamente el tanque de 50.000 peces. Recordemos que realizamos el mismo test bajo HTML5 con 3000 peces, obteniendo Opera en el mejor de los casos cerca de 50 fps. En este caso tenemos el mismo tanque pero usando WebGL, y vemos que es necesario elevar a 50.000 peces para que Firefox no alcance los 60fps. Cualquiera podría decir que si disponemos de WebGL que sentido tiene el test anterior en el que el navegador no podía con 3000. Y volvemos a lo mismo, las peras se parecen a las manzanas en que las dos son frutas, pero nada más. Es más que evidente que si cualquier test html5 se puede pasar a WebGL (con lo que debe de tener un fuerte componente gráfico evidentemente) su rendimiento será infinitamente superior. En parte es la misma explicación por el cual Opera obtenía tan buenos resultados anteriormente. En este caso Firefox y Chrome no hacen uso de Direc2D o DirectDraw, sino de Direct3D (recordemos que usa ANGLE). Aun cuando usasen OpenGL puro y duro, el rendimiento sería muy superior. Pero es lógico, son APIs totalmente diferentes orientadas a funciones totalmente diferentes. Direct2D/DirectDraw no están pensadas para proporcionar un rendimiento de vértigo exprimiendo la GPU.

 

  • Estándares

    Actualmente parece que existen dos grandes frentes abiertos a la prensa. Si uno es el rendimiento en los test sintéticos, el otro es el proclamar que su navegador es compatible con HTML5, o mejor dicho, pelearse por cual es más compatible en este campo. Señores, HTML5 es muy importante en el futuro, pero de nuevo no es el único estándar emergente estos días. Es más, actualmente es infinitamente más usado CSS 3.0 como estándar emergente que HTML5. Tan importante es lo uno como lo otro.

    De nuevo y como era de esperar, todos los navegadores han mejorado su compatibilidad con los estándares existentes, sobre todo en HTML5 como podemos ver en el test de Niels (no podemos compararlo con la comparativa anterior dado que el test de Niels está en constante cambio). Aun así, y pese que Microsoft asegura que en sus test Internet Explorer 10 es el más compatible de cara a HTML5, es Chrome quien posee cierto liderazgo aquí. El problema de Chrome es que aunque es cierto que es más compatible a efectos generales en HTML5 que el resto de los navegadores, no a efectos concretos. Es decir, Chrome implementa la mayoría de funciones de HTML, pero de una forma básica, y lo mismo le pasa con CSS y otras tecnologías. Opera en contrapartida se centra en menos variedad pero de una forma mucho más profunda, intentando cumplri a rajatabla todas las especificaciones de cada sección. Esto hace que en test generalistas como el de Niels Chrome obtenga muy buenos resultados y en otros más específicos como la suite de IE obtenga resultados algo inferiores.

    Sobre la Suite de Microsoft poco podemos añadir, evidentemente es una suite totalmente engañosa para mostrar que Internet Explorer es el navegador más compatible, y en cambio en el test de niels el resultado es deprimente. No obstante Microsoft sigue avanzando a pasos agigantados en cuanto a compatibilidad se refiere, su eterna lacra desde luego… aun a día de hoy muchso webmaster necesitamos crear código redundante y hacer “trampas” para que las web se visualicen correctamente en Internet Explorer, precisamente por no ceñirse a los estándares.

    Sobre WebGL, tanto Firefox como Chrome continúan aumentando su compatibilidad, aunque desde que Khronos publicase la nueva versión de sus test, ambos han tenido algunos problemas con algunos de ellos. Opera se ha subido al carro y no ha empezado con mal pie desde luego, es agradable ver como poco a poco los navegadores van sumándose a los estándares y apoyando lo que sin duda alguna podrá ser de muchísima utilidad en el futuro. Y es evidente, hasta que no hay en el mercado un buen soporte los programadores y diseñadores no pueden pillarse los dedos creando maravillas en la web que tan solo podrán ver dos o tres personas porque sus navegadores no son compatibles. Las cosas tienen que llegar poco a poco por las dos partes..

    Aun se desconoce de forma clara si Microsoft implementará WebGL, parece más o menos claro que antes o después lo implementará, pero cada día que pasa se duda más de que Internet Explorer 10 salga a la luz con soporte para ello. Microsoft ya dijo hace tiempo que su postura era dudosa dado a los posibles problemas de seguridad que podrían derivar de WebGL, en cambio como hemos visto en Firefox o Chrome ambos fueron actualizados con las últimas especificaciones para evitar este tipo de problemas y hasta la fecha no se ha detectado ningún fallo de seguridad producido por ello. Sería bueno ver que al final Internet Explorer 10 viese la luz con WebGL, y de echo estoy totalmente seguro que los chicos de Microsoft disponen en sus laboratorio versiones de Internet Explorer 10 con soporte para WebGL. Apple por su parte mantiene la misma política, las últimas builds de WebKit poseen soporte, pero experimenta, deshabilitado por defecto y tan solo compatible con  MAC OS.

 

  • Compilaciones x64

    Sobre Internet Explorer 10 no podemos decir nada ya que aun no está disponible ninguna versión para Windows 7 nativa en 64 bits, aunque es evidente que cuando Internet Explorer 10 salga a la luz estará disponible tanto para Windows 7 como para Windows 8, tanto en 32 como en 64 bits. Esperemos que Microsoft por fin pueda habilitar sus mejoras en su motor JS en la versión de 64 bits, que como hemos visto siempre en Internet Explorer 9, está muy por atrás del resto.

    Firefox continúa ofreciendo versiones diarias de 64 bits con un rendimiento muy similar a las versionese de 32 bits, manteniendo la estabilidad. De echo si miramos todos los test realizados, la versión de 32bits y la de 64 bits de Firefox están casi siempre cara a cara. Aun así la versión de 64 bits no es oficial aun, y no parece que lo vaya a ser a corto plazo. Esto no quiere decir que no sea una versión totalmente funcional, en la que muchas veces su rendimiento es superior a las versiones de 32 bits, y más seguras.

    Opera irrumpe con su versión de 64 bits. En el caso de Opera no son tan estables como las versiones de 64 bits de Firefox y están menos optimizadas, pero parten desde una buena posición. Sin duda alguna Opera ha dado un gran salto en esta ocasión en muchos aspectos, desde la salida de su versión de 64 bits, soporte para aceleración hardware, soporte para WebGL… no está mal en estos 6 meses desde luego, y aunque no es capaz de alcanzar a Chrome, Firefox o Internet Explorer, sin duda alguna están haciendo un gran trabajo.

    Sobre Chrome y Safari por otro lado no hay indicio alguno de que una versión de 64 bits pueda ver la luz a corto plazo… habrá que esperar. Es de suponer que eventualmente Chrome sacará una, pero…

 

  • Consumo energético

    ¿Como puede influir un navegador en el consumo energético de un dispositivo? Pues es fácil, dependiendo en gran medida delos recursos que tenga que hacer uso de él. Para ello tan solo tenemos q observar la carga en la CPU/GPU del sistema para hacernos una idea.

    Cuanto menor sea la carga en ambos menor es el consumo, es evidente, pero no está tan claro cuando tenemos que pensar si es la GPU o la CPU quien prima sobre el consumo. Es decir, es mejor tener un consumo de un 10% CPU y 2% GPU o un 2 CPU y 7% GPU. Sería muy complicado llegar a una decisión unánime sin acudir a un tester de potencia y medirlo directamente, pero si más o menos imaginarlo.

    Mirando las gráficas, parece claro que el navegador más eficiente energéticamente hablando dependería dependiendo del contenido. En un escenario normal, el mejor resultado sería para Internet Explorer o Firefox, en cambio cuando se entrase en test más complejos el ganador sería Safari (por la sencilla razón de que no usaría la GPU y que no sería capaz de ejecutar correctamente el test). Opera en cambio obtendría el peor consumo de forma general, aunque puede obtener unos resultados increíbles, elevar al 97% el uso de la GPU en el test de la pecera es demasiado.

Pwn2Own 2012: Chrome averguenza, IE y Firefox KO

Para quien no lo sepa, el Pwn2Own es un concurso anual sobre seguridad informática en el que se ponen a prueba los navegadores Web y los sistemas operativos más comunes. El concurso, no solo supone cuantiosos premios en metálico para los concursantes, sino que además está orientado a mejorar la seguridad de los navegadores y los SO en cuestión, ya que los concursantes están obligados a compartir con los programadores de los respectivos productos TODA la información relevante sobre los métodos usados, las vulnerabilidades encontradas y cualquier otro por menor.

Cada año, las bases del concurso suelen ser ligeramente diferente, los objetivos suelen variar a sí como los premios percibidos. Si bien el año pasado participaron en el concurso navegadores y sistemas operativos de terminales portátiles, este año se han quedado fuera. Las normas de este año son muy simples:

-Navegadores Usados: Mozilla Firefox 10, Microsoft Internet Explorer 9, Google Chrome 17 y  Apple Safari

-Sistemas Operativos: Windows 7 y MAC OS Lion

-Objetivo: Lograr un exploit de ejecución remota haciendo que cualquiera de los navegadores instalados en cualquiera de los sistemas visite un enlace proporcionado por el concursante. El código arbitrario invocado será siempre la ejecución de la calculadora del sistema.

 

Existen dos categorías:

-Exploit Zero-Day: Es decir, el concursante tiene que ser capaz de realizar una ejecución remota en uno de los sistemas TOTALMENTE parcheado y actualizado hasta la fecha del comienzo del concurso.

-Exploits publicados: En esta categoría, se han preparado sistemas XP (para Chrome, Firefox e Internet Explorer 8) y MAC OS Snow Leopard (para Safari)  dejando 2 vulnerabilidades de cada navegador abiertas (sin parchear), es decir se han dejado “abiertas” dos vulnerabilidades de Firefox, de Chrome/Safari (los dos usan el mismo motor) y de Internet Explorer. La idea en este caso es ser capaz de crear el exploit en el tiempo que dure el evento para esas vulnerabilidades en esos sistemas.

Para la primera categoría, se asignarán 32 puntos por cada éxito que se obtenga sin importar el día en el que se logre, para la segunda 10 puntos si se realiza en el primer día, 9 en el segundo y 8 si se realiza el último día.

 

Hay que tener en cuenta algo igual de importante, y es de nuevo la preparación o no preparación que los fabricantes acuden al concurso. En el concurso se entregan sistemas totalmente parcheados hasta el mismo día en el que comienzan. Es decir que los fabricantes de software (Mozilla, Google, Apple o Microsoft) tienen en teoría hasta ese mismo día para parchear sus sistemas. Esto es de suma importancia dado que un concursante podría llevar semanas preparando un exploit y el fabricante aprovechar el último día para tapar el agujero de seguridad. Luego es justo ver que es lo que ha hecho cada desarrllador con sus productos en estas últimas semanas en tanto a actualización de vulnerabilidades se refiere:

Mozilla Firefox Apple Safari Microsoft Internet Explorer Google Chrome Apple MAC OS X Microsoft Windows 7
2 2 4 34 49 7

 

Mozilla Firefox:

En lo que vamos de año, Mozilla tan solo ha tenido que enfrentarse a dos vulnerabilidades, parcheadas en dos entregas diferentes, el 13 y el 17 de Febrero. Ambas fueron subsanadas prácticamente al momento de conocerse. Desde entonces no ha sacado ningún otro parche de seguridad. El año pasado días antes del Pwn2Own sí respondió con la corrección de varios fallos de seguridad, este año tan solo lleva en su cuenta dos boletines, y por ello le damos la corona de oro en esta ocasión. Podemos decir que este año ha participado sin hacer “trampas”

 

Apple Safari:

En lo que lleva de año tan solo han sido publicado dos boletines de seguridad (todo un record para Safari), no obstante Apple de nuevo ha sido un chico malo, y aprovechó hasta el último minuto de que comenzase el concurso para publicarlos, el 7 de Marzo, es decir el mismo día que comenzó el concurso. Este mismo comportamiento lo vimos realizar el año pasado a gran escala, de nuevo apuró hasta el último momento para lanzar una macro actualización. De cara a Safari no ha sido mucho, pero sin duda han aprovechado hasta el último momento. Aun así no ha sido el peor parado ni mucho menos, este año como hemos dicho Safari se ha comportado.

 

Microsoft Internet Explorer:

Microsoft ha continuado con la tónica del año anterior. Cada fabricante tiene su propia política de actualizaciones, así por ejemplo Google y Mozilla suelen tener respuestas casi inmediatas, Apple responde de manera muy muy tardía, y Microsoft desde hace años y años como ya hemos dicho publica mensualmente (si no se detecta un error grave) el segundo martes de cada mes sus boletines y actualizaciones. Si miramos lo que ha hecho Microsoft en lo que llevamos de año con Internet Explorer, coincide a la perfección, y es que Microsoft pese a todo tan solo ha tenido que lidiar con 4 Boletines de seguridad, todos ellos publicados en su ciclo estándar de febrero, el día 14.

 

 Google Chrome:

Google es hoy nuestra primera oveja negra y se llevará el primer tirón fuerte de orejas. Ya el año pasado recompensó con fuertes sumas de dinero a cualquiera que lograse encontrar fallos de seguridad en su navegador (curiosamente justo antes del Pwn2Own), con la idea evidente de intentar por todos los medios que su navegador no fuese asaltado en el Pwn2Own de 2011. Además, aprovechó hasta el último minuto para actualizar su navegador al igual que hizo Apple. Este año ha realizado exactamente lo mismo. Durante unas semanas Google ha estado pagando a cualquiera que lograse descubrir fallos de seguridad en su navegador. Esta medida me parece sinceramente respetable y muy inteligente, pero recordemos que no por ello no es jugar con “trampas” en un concurso. Podríamos pensar que Google lo hace en post de la seguridad pero en cambio lo hace justo antes del Pwn2Own por segundo año consecutivo… ergo le importa más la mala prensa que la seguridad en sí. Además, no hay que olvidar ni obviar que Chrome ha cerrado lo que llevamos el año con la friolera de 34 boletines de seguridad!! Y tiene aun más delito si vemos que Google ha realizado al entrega de sus actualizaciones en dos entregas: La primera y más pequeña el 16 de febrero, y la más gorda hace exactamente 4 días, dos días antes de que comenzase curiosamente el Pwn2Own. Google… eres un tramposo.

 

Microsoft Windows 7:

Después de analizar los navegadores hay que analizar los parches de seguridad que se han aplicado a los sistemas, ya que para lograr un acceso remoto la primera barrera a superar es el navegador pero la segunda es el sistema operativo. Microsoft se salta una cuenta total de 7 vulnerabilidades en lo que va de año, entregadas de forma rigurosa con sus ciclos estándar al igual que las actualizaciones de Internet explorer. En este caso fueron dos entregas, una en el ciclo de enero (el martes 10 de Enero) y la segunda en el ciclo de febrero (el 14 de febrero). En términos generales le daría la medalla de plata en cuanto a navegadores y la de oro en cuanto a sistema operativo. Este año de nuevo participa con las manos limpias y con un historial bastante decente en cuanto a vulnerabilidades se refiere.

 

Apple MAC OS X:

Apple es la segunda oveja negra del día, pero contra todo pronóstico este año no lo es por Safari, sino por MAC OS. Apple este año no ha aprovechado en actualizar MAC OS hasta el último minuto como si hizo el año pasado o este año con Safari, pero sí que lanzó una macro actualización con la friolera de 49 fallos de seguridad, todos ellos entregados tan solo en una misma entrega el 3 de Febrero. No esperó hasta el último momento así que no podemos decir que su comportamiento fue el mismo que el de Google ni mucho menos, pero tan solo un mes antes parchear hasta 49 fallos (recordemos que Windows 7 tan solo ha tenido que hacer frente a 7) no es que sea jugar tampoco muy limpio, por no decir la inseguridad hacia sus usuarios. Es decir, lo de Google no tiene nombre pero al menos actúa con prontitud, al igual que Mozilla con Firefox. Microsoft posee ciclos totalmente regulares y es muy fial a ellos, pero Apple simplemente publica cuando cree que tiene que hacerlo.

 

Una vez que sabemos las condiciones del concurso y las condiciones en las que cada compañía acudió al concurso, sí podemos decir ya los resultados de este año:

 

Chrome

Después de todos los esfuerzos de Google, fue en vano. Vupen logró destrozar por completo Chrome en MAC OS X por medio de un Zero-Day exploit (la máxima pena para un navegador/sistema), dejando en bastante evidencia a Google. Hay que entender algo, cuando juegas limpio y pierdes, al menos puedes retirarte con la cabeza alta y entender que han sido unos buenos concursantes… pero en el caso de Google ver como Chrome sucumbía después de estar durante semanas pagando a expertos de seguridad e incluso lanzando grandes parches de seguridad hasta dos días antes…  eso señores es cuanto menos humillante, según mi modo de ver las cosas por supuesto. Eso sí, hay que destacar que Google ya ha parcheado Chrome y corregido el meritoso éxito de Vupen.

 

Internet Explorer

Despúes de que Vupen pulverizase Chrome, cambió de objetivo, y si su desayuno fue Chrome, su comida fue Internet Explorer. De nuevo imponiendo el máximo castigo con un otro exploit Zero-Day logró sacar la calculadora de Windows en este caso. Sin duda alguna otros merecidos 32 puntos en su cuenta.

Internet Explorer no solo cayó con la pena máxima, sino que Vupen fue capaz también de crear dos exploits más para cada una de las vulnerabilidades que se habían dejado abiertas en IE para tal efecto, y dado que todo fue el primer día, logro otros 20 puntos adicionales (10 por cada vulnerabilidad explotada)

Más tarde, la pareja Willen y Vincenzo lograrían también explotar una de las vulnerabilidades abiertas, los que les daría sus primeros 10 puntos.

 

Safari

Vupen no ha dejado títere con cabeza, y asaltó con éxito también las dos vulnerabilidades dejadas abiertas en Webkit, logrando otros 20 puntos por Safari. Lo mismo para el equipo formado por Willen y Vincenzo, que fueron capaces de realizar exactamente lo mismo.

Pese a todo no se ha logrado un exploit Zero-Day en Safari

 

Firefox

En esta ocasión fue el equipo de Willen y Vicenzo quienes lograron tumbar después de bastante sudor Firefox con un exploit Zero-Day en MAC OS Lion, cosa que no se logró el año pasado (asaltar Firefox), Para terminar, vulpen logró también con Firefox su éxito frente a las 2 vulnerabilidades abiertas, robando otros 20 puntos más. Willen y Vincenzo lograrían explotar tan solo una de ellas.

 

 

En esta ocasión es Google quien a defraudado, no porque haya caído, sino por jugar un tanto “sucio” y aun así caer pese al ingente número de vulnerabilidades parcheadas en el último momento. Por otro lado Apple se ha salvado en esta ocasión por pelos con Safari, aunque no con MAC OS, pese al macro parche de seguridad que lanzó en Febrero. Mozilla este año calló en el último momento pese a quedar invicto el año pasado, pero no será hasta la semana que viene en la que se darán a conocer todos los datos. Por último Microsoft, que junto con Mozilla son los dos únicos que pueden irse con la cabeza bien alta por acudir al concurso sin “trampas” algunas y sin cambiar sus ciclos de actualizaciones….

Un saludo amigos.

Volver a arriba

Sobre Mí

Alma Oscura por Theliel is licensed under a Creative Commons Reconocimiento-No comercial-Sin obras derivadas 3.0 Unported License.
Política de Privacidad.
Para otros permisos que puedan exceder el ámbito de esta licencia, contactar en blog.theliel.es/about/contactar.