Números aleatorios seguros en Javascript

Aleatorio Otra nota sobre números aleatorios seguros. En este caso nos avisaban en V8 Javascript Fixes (Horrible!) Random Number Generator sobre un error en la forma de generar números aleatorios en Javascript que tiene el interés de proporcionar una explicación general bastante buena, como alguien encontró el fallo al encontrar una colisión en un identificador de sesión (tan sólo un mes después de empezar) y cómo los programadores eligieron la versión incorrecta de un método que no estaba mal.

En TIFU by using Math.random() cuentan los detalles sobre la historia en primera persona. Sin olvidar que estaban utilizando un generador de números aleatorios que no era criptográfico.

De paso, podemos probar el generador de nuestro navegador en este generador de imágenes aleatorias.

Obsolescencia de algoritmos criptográficos vs realidad

 Algunos trucos para esconder programas maliciosos En SHA-1 Deprecation: No Browser Left Behind nos hablan sobre la obsolescencia del algoritmo de hash criptográfico SHA1 con algunos datos como lo que costaría hoy en día generar colisiones (recordemos que en un algoritmo de hash el poder genera un mensaje diferente que tenga el mismo ‘resumen’, esto es, encontrar colisiones es uno de los principales problemas de seguridad):

Computers keep getting faster and now SHA-1 is increasingly vulnerable to potential collision attacks. The estimate today is that it would likely cost around USD$700,000 to generate a SHA-1 collision. By 2021, the price is forecast to fall to just USD$43,000.

También hacen algunos cálculos de cuánto se utiliza su sucesor, [SHA2]/(https://en.wikipedia.org/wiki/SHA-2):

To understand the impact, we spent the last few weeks testing browser connections to CloudFlare’s network for SHA-2 support. We see approximately 1 trillion page views for more than 2.2 billion unique visitors every month, which gives us a pretty representative sample of global traffic.

Y la conclusión es que podrían utilizar este algoritmo un 98.1% de los navegadores observados por ellos que puede parecer mucho pero, en sus cuentas, deja fuera a un nada despreciable número de más de 37 millones de personas. En Estados Unidos la cosa sería un poco mejor:

The United States has 99.26% SHA-2 support, making it the 15th most modern browser market (out of more than 190 countries we saw traffic from during our test). In fact, SHA-2 support in Western Europe and North America is universally over 99%.

pero, desde luego, no el mejor de los sitios con acceso a esta tecnología (15 puesto en el ranking de navegadores más modernos).

Lamentablemente, en la cola de esta lista están algunos de los países que probablemente necesitarían tener mejores sistemas de seguridad.

Unfortunately, this list largely overlaps with lists of the poorest, most repressive, and most war torn countries in the world. In other words, after December 31st most of the encrypted web will be cut off from the most vulnerable populations of Internet users who need encryption the most.

Y, claro, esto tiene como consecuencia que sitios como Alibaba o Facebook que quieren tener clientes en esas zonas menos protegidas admitan utilizar los algorimtmos menos seguros (lo que puede afectar a todo el mundo).

For instance, Alibaba, the Chinese Internet commerce giant, supports SHA-1 fallback across many of its sites. That’s not surprising given more than 6% of their Chinese customers could not securely buy from their online store if they only supported SHA-2.

Facebook also supports SHA-1 fallback across many of their sites.

Interesante.

Condiciones de carrera

Carrera Un texto introductorio sobre las condiciones de carrera: cuando varios procesos acceden a un recurso compartido de forma que se pueden producir resultados diferentes según la temporización con que se ejecute el código. Lo cuentan en Practical Race Condition Vulnerabilities in Web Applications y me pareció un texto que valía la pena guardar por las explicaciones, ejemplos y métodos de resolución para evitar el problema.

Compartir la WiFi sin precauciones

WiFi Hace bastante tiempo solía tener mi WiFi casera abierta: pensaba que algún paseante que pudiera necesitarla le vendría bien poder conectarse un rato. La cerré por varios motivos: siempre había alguien que abusaba y se ponía a descargar utilizando mi ancho de banda y provocando molestias. El otro era una cuestión de seguridad: cuando va habiendo más dispositivos conectados en mi red, es más delicado vigilar que todo va bien y que un atacante casual (intencionado o troyanizado) no provoque un desastre.

Hace mucho menos bromeaba sobre cuánto tiempo es ‘prudente’ esperar cuando uno lllega a una casa ajena para pedir la contraseña de la WiFi sin parecer descortés.

Como visitantes, también deberíamos ser cuidadosos a la hora de conectarnos a redes extrañas, que nunca sabemos lo que puede haber entre internet y nosotros.

Por los motivos señalados arriba, me sentí muy reforzdo por No, you can’t join my wifi network Troy Hunt nos explica que no deja utilizar su WiFi a los invitados y sus motivos para ello.

La primera es que, aunque confíes en tus invitados (como personas, se entiende), no puedes confiar en que sus dispositivos sean seguros y que se comportarán adecuadamente.

That might mean as a result of introducing an infected machine into the network or picking up something unsavoury while they’re browsing around behind the confines of your firewall.

También habla de la variedad de dispositivos que tenemos hoy en día conectados a nuestra red y la información que un atacante podría obtener:

Think about what’s discoverable on your own network once a device joins it: all the devices and open ports just for a start. Your NAS, your media server, your security cameras and all manner of IoT things with nothing more than software to protect them. Just as with a corporate environment, you have to work on the assumption that any machine introduced to the network is malicious and frankly, I want to minimise that risk as far as possible.

Además nos recuerda que para visitantes casuales las conexiones móviles han evolucionado mucho y lo normal es tener buena velocidad y una tarifa con suficiente cantidad de datos para no tener que pedir prestado.

En caso de que queramos compartir la WiFi (y también es un consejo que suelo dar para pequeños negocios y sitios donde compartir la WiFi es algo que se espera), deberíamos una red para invitados en la que no haya nada que nos pueda preocupar desde el punto de vista de nuestros datos:

Of course you could always just defer to your wireless access point’s guest network (if you have that capability — and many do not), that’s what it’s designed for, right? The basic premise is that a guest network is a logically isolated network for exactly what the name suggests – giving guests access. This keeps them separated from your primary network which is a good thing, except the implementation can be kind of sucky.