El viajante y su Tesla

Mapas

Una entrada muy chula en Traveling Salesman Problem donde se mezcla un problema clásico, el viajante de comercio (Traveling Salesman Problem) y algo de actualidad, como son los coches con batería, que hay que recargar.

El problema del viajante de comercio es un viejo conocido: dada una lista de ciudades y sus distancias encontrar el recorrido más corto que pase por todas ellas y vuelva a la de inicio TSP en Wikipedia. Es uno de los problemas conocidos como NP difíciles (o NP-duros).

La formulación de esta entrada habla de los puntos de recarga de las baterías del Tesla y ese hipotético recorrido entre ellas, con código, mapas y todo para poder jugar con él. Muy chulo.

Mejorando las prestaciones de la biblioteca matemática en glib

Laplace

En Improving math performance in glibc pudimos leer hace algún tiempo una entrada precisamente sobre eso: mejorar las prestaciones de la biblioteca matemática de glib.

Sobre la forma en que algunas funciones trabajan:

Transcendental functions in glibc are implemented as multiple phases. The first phases of computation use a lookup table of pre-computed values and a polynomial approximation, a combination of which gives an accurate result for a majority of inputs. If it is found that the lookup table may not give an accurate result the next, slower phase is employed. This phase uses a multiple precision representation to compute results to precisions of up to 768 bits before rounding the result to double. As expected, this kills performance; the slowest path for pow for example is a few thousand times slower than the table lookup phase.

Esto es, primero buscan algunos valores precalculados en una tabla y si no se tiene el restultado, se calculan de alguna forma.

Sobre la implementación de números grandes:

The multiple precision number is implemented in glibc as a structure with an integral exponent and an array of numbers for the mantissa.

The exponent e can be any integer value and the array d represents the mantissa. Each number in d is a non-negative integer less than 224. Only 32 of the 40 digits are used (the rest being there for additional precision for rounding), giving a maximum precision of 768 bits. The first question one may have is why the mantissa digits are double and not int if their values are going to be only integral.

Y luego ya se mete en detalles más próximos a las operaciones, por ejemplo con la multiplicación y su efecto en el cálculo de potencias:

As much as 97% of the time in computation of pow is spent in the multiplication function! So it is obvious that the first place to look at to get improvements is the multiplication routine.

Lectura interesante.

Aleatoriedad y seguridad

Azar

No es tan frecuente encontrar textos explicando cosas de las que nos gusta comentar aquí. Por eso me gustó leer Cómo se usa la aleatoriedad en la seguridad que es un tema del que hablamos de vez en cuando por aquí (etiqueta random.

Se muestran algunos ejemplos negativos, como el bug de Debian que me suena que habíamos comentado (pero no lo encuentro) y algunos más. También los sistemas de obtención de números aleatorios en sistemas Linux (/dev/random y /dev/urandom).

Por completar, hace tiempo hablábamos de Números aleatorios y seguridad.

Contraseñas y dispositivos móviles

Escribiendo

En Why passwords should not be stored on a mobile device unas cuantas razones para evitar esa práctica de almacenar contraseñas que se utilizan para conectarse a diversos servicios en nuestro dispositivo móvil.

This often raises the question how to store the username and the password on the device securely. The easy answer to this is: unfortunately not possible.

La solución pasaría por utilizar protocolos de autentificación modernos en los que el dispositivo no almacena una contraseña, sino un token que le identifica y que la concede permisos para determinadas actividades:

The question for an app developer now is: How can you make sure that the customers can use the app with all features without storing the password on the device? The solution: a token-based approach like OAuth 2.0 [4].

La clave está en la limitación para realizar sólo determinadas actividades (para otras se le pediría la contraseña en el momento) de forma que no está almacenada, no tiene que teclearla en cada ocasión que necesita hacer algo y el acceso a las partes más valiosas (pero menos frecuentemente utilizadas) sigue protegido con la contraseña.

Podemos recordar aquí que ya hemos hablado algunas veces de OAuth. En OAUTH y seguridad y allí enlazábamos a algunos programitas que lo utilizan.

Conferencia sobre 16 años de Hispasec

Libro Hispasec

Entre las lecturas que recomiendo para estar al tanto de las cosas que van sucediendo en temas de seguridad está el Una al día de Hispasec. Allí podemos esperar de todo: desde análisis del código de algún fallo de seguridad importante a los boletines mensuales de Microsoft, pasando por casi cualquier tema de seguridad. Acabo de mirar y el Una al día más antiguo que tengo es del año 2002.

Ya nos hicimos eco de la publicación del libro en el 11 años de Hispasec y ‘Libro Una al Día’ y ahora traemos un vídeo.

Dentro de las jornadas TEMAS AVANZADOS EN SEGURIDAD Y SOCIEDAD DE LA INFORMACIÓN TASSI Curso 2014 - 2015 ha habido una serie de conferencias interesantes. Como decía, recomiendo la de Antonio Ropero. Me hubiera encantado asistir pero uno tiene que balancear la vida familiar, el trabajo y las cosas que nos gustan…

Se trata de un repaso de su actividad durante estos años y de un buen recordatorio de como algunas cosas siguen repitiéndose y haciéndose mal y la pequeña historia de estos años en los que han sucedido tantas cosas.