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.

Hola Lola. Construyendo un hexápodo sencillo

Araña

Ya hace algún tiempo que no hablábamos de nuestro proyecto de robot. Si no recuerdo mal, la última vez fue con lo de Una pata robótica, donde dábamos cuenta de nuestros avances con las patas del robot. Algo hemos avanzado desde entonces y esta entrada es para contar un poco de esos avances. En este momento tenemos una plataforma con seis patas que puede avanzar en línea (más o menos recta).

En esta entrada hablaremos principalmente de la parte física del hexápodo (construcción y componentes) y en una que publicaremos más adelante hablaremos de los programas. Permanezcan atentos a la etiqueta Lola.

Vamos por partes:

Para la plataforma elegí un panel que compré en una tienda de esas de todo a X que hay por el barrio (y que tanto juego están dando para este proyecto): el tamaño parecía adecuado, y el material se demostró ligero y fácil de trabajar.

Servos en la (proto)montura

A photo posted by Fernando Tricas García (@ftricas) on

Fue sencillo hacer los orificios para albergar los motores y comenzar a hacer las primeras pruebas:

Plataforma y patas #leg

A photo posted by Fernando Tricas García (@ftricas) on

Aún no tenía suficientes motores, así que tuve que conformarme con cuatro patas, que mostraban capacidad suficiente para levantar la plataforma (sin mucha alegría, la verdad):

Cuatro patas #raspi

A video posted by Fernando Tricas García (@ftricas) on

Otro problema que ya se anticipaba era el lío de cables, como puede verse en el vídeo y en esta foto:

Cables y polvo #raspi

A photo posted by Fernando Tricas García (@ftricas) on

Con cuatro patas hacen falta un cable de señal para cada motor (12 motores) más la alimentación para cada uno de ellos. Estas primeras pruebas nos hicieron pensar en un rediseño de las patas, cambiando la forma de unir los servos de la segunda y tercera articulación (la ¿rodilla?). Si los acoplamos de manera secuencial el resultado no es muy robusto (hay movimientos entre ellos que hacen que la posición de la pata no sea predecible del todo).

Para resolver el lío de cables estuve buscando información y encontré que existen controladores de servos que permiten centralizar las conexiones, tanto de señal como de alimentación y descargar al controlador principal de algunas tareas. Además permiten gestionar mejor la velocidad de los movimientos, y también dan la posibilidad de hacer que varios motores se muevan a la vez (esto no había mirado como hacerlo con la Raspberry -ni con Arduino-; puedo imaginar que sea cuestión de enviar las señales una detrás de otra, casi simultáneamente, pero no lo he comprobado). Los controladores más populares parecen ser los de Pololu (por ejemplo Mini Maestro 24-Channel USB Servo Controller (Assembled)) pero no encontré una forma fácil de conseguirlos aquí (para ser exacto, la gente de Cooking Hacks me dijeron que lo traerían pero con un puente enmedio la respuesta llegó cuando ya había encargado otra solución). El otro que encontré (y por el que me decidí) fue el Veyron Servo Driver que también tenía 24 canales y que estaba disponible a través de alguna tienda que hacía envíos aquí con un coste razonable. Hay que tener en cuenta que para las seis patas sería suficiente con tener 18 canales, pero puede ser una buena idea tener algunos libres por si queremos añadir más motores en algún momento.

Se puede conectar por el puerto USB y mediante comunicación serie enviarle las instrucciones. Por ejemplo:

#0 P1490 #3 P1490 #6 P1490 #9 P1490 #12 P1490 #15 P1490 T200

Esta instrucción indicaría al controlador que mueva los motores 0,3,6,9,12 y 15 a la posición 1490 (aproximadamente la mitad de su recorrido) en un tiempo de 200 milisegundos. Como puede verse, se trata de una sintáxis cómoda y sencilla para gestionar desde nuestros programas los motores. El controlador:

Controlador de servos y Alicia

A photo posted by Fernando Tricas García (@ftricas) on

Pueden verse los conectores para los servos (azul la señal, rojo polo positivo, negro tierra). Arriba en verde los conectores de alimentación, abajo el conector USB para recibir los datos (también puede servir de alimentador para el dispositivo; no para los motores). Además pueden añadirse expansiones para hacer conexiones inalámbricas y controlarlo remotamente. Y alguna cosilla más.

Aquí podemos verlo en acción:

Probando el controlador de servos

A video posted by Fernando Tricas García (@ftricas) on

También puede verse la nueva forma de unir los motores de la ‘rodilla’ a la que aludíamos arriba: los acoplamos por la parte más ancha, mediante una brida.

El segundo problema que había que resolver era la alimentación: el controlador tiene prevista una alimentación separada para los motores y para su propio funcionamiento. Se puede hacer mediante una batería (o más, claro) pero de momento nos hemos conformado con re-aprovechar una vieja fuente de alimentación de un PC siguiendo los consejos de un montón de páginas que explican cómo hacerlo. Las hay que dan instrucciones para hacer todos los pasos necesarios Fuente de alimentación casera con fuente ATX (1 de 2) y alimentación casera con fuente ATX (2 de 2) por unos cinco euros. Hace falta, eso sí, cortar cables, compara algunas componentes y hacer algunas soldaduras (y algo de trabajo y habilidad si queremos que quede más o menos ‘presentable’).

También descubrí que se venden adaptadores para conectar a una fuente de alimentacióna lo que simplifica mucho la parte de las conexiones sin tener que trabajar apenas. Justo en esos días Javier Loureiro anunció su placa ATX Board en plan casi crowdfunding: la encargábamos y en unas semanas la tendríamos en nuestras manos. Mi placa:

ATX Board #staticboards

A photo posted by Fernando Tricas García (@ftricas) on

Podemos utilizar el conector que se ve a la derecha, que es compatible con el que tienen las fuentes normales y corrientes, y tenemos disponbibles los bornes de conexión pequeños de la derecha (para 5V y menos) y los más grandes que se ven abajo (para 12v y también más intensindad). Puede verse un análisis en Probando una placa ATX Board de Staticboards así que no comentaré mucho más sobre esto.

Con todo esto hemos ido haciendo las pruebas de movimiento. Nuevamente nos hemos enfrentado con las leyes de la física: el robot se resbalaba. Primero añadimos unos tacos de madera a ver si daban mejor resultado que el plástico (que no fue el caso pero alargó un poco las patas). Posteriormente, y después de varias pruebas, tuvimos que ponerle unos ‘zapatos’ que consistían en unas gotas de silicona que parece que han mejorado el agarre, que en aquel momento no causaba muy buena impresión:

Como que ya quiere andar

A video posted by Fernando Tricas García (@ftricas) on

Sobre el movimiento, decir que me costó bastante dar con el truco: no lo explican demasiado bien en ningún sitio (o yo no lo entendía bien) y algún rato me tuve que pasar viendo vídeos de otros para captar la idea. Por si es de utilidad para alguien guardé una lista de reproducción de hexápodos en YouTube donde pueden verse varios proyectos interesantes.

Con un hexápodo el secreto es que en cada momento hay tres patas en el suelo formando un triángulo que lo sostiene y otras tres en el aire. Para que se produzca el movimiento las que están en el aire avanzan hacia su destino, y las que están en el suelo se mueven hacia atrás, lo que provoca el avance (siempre que el ‘bicho’ esté bien equilibrado y no haya resbalones). Se ve bastante bien (y otros movimientos) en el primer vídeo de la lista y en algunos otros.

También se pueden apreciar las posibilidades que nos dan diversas posiciones relativas de las articulaciones, aunque la que hemos elegido es bastante simple y simplifica la parte mecánica, sin necesidad de construir/obtener piezas más o menos sofisticadas.

En este vídeo:

Pueden verse los movimientos (todavía algo desgarbados) que conseguimos en aquel momento siguiendo estas ideas.

Esta entrada ya ha quedado un poco larga así que dejamos para una próxima la versión actual del movimiento y algo de los programas con los que estamos haciendo las pruebas.

Diez fallos de seguridad que harán que te despidan

Líneas

Traigo una lectura ligerita con una lista de cosas. Se trata de 10 security mistakes that will get you fired.

La lista es:

  • Interrumpir alguna actividad crítica para el negocio
  • Interrumpir el acceso del jefe a alguna cosa
  • Pasar por alto algún suceso importante de seguridad.
  • Leer información confidencial.
  • Invadir la privacidad de nuestros usuarios.
  • Utilizar datos reales en sistemas de prueba.
  • Utilizar una contraseña corporativa en un sitio externo.
  • Abrir algún hueco con permisos para que cualquier persona pueda acceder a todo (ANY ANY)
  • No cambiar las contraseñas
  • Tratar cualquier vulnerabilidad como si fuera la más importante.

Desbordamiento de enteros en YouTube

Psy

A veces tenemos coincidencias curiosas: acabo de encontrarme con un desbordamiento de un rango de índices para un vector en Pascal, de la mano de un par de estudiantes que no habían tenido las prevenciones adecuadas (con el compilador de Free Pascal: ponían (por ejemplo) vector[-1] y no saltaba ningún error, así que colocaba datos en otra parte del registro (estamos trabajando estructuras de datos ‘más’ complejas) y el programa funcionaba mal.

La coincidencia es que al ir a mirar qué poner hoy en este sitio me he encontrado con que hace algunos días guardé la historia del desbordamiento de enteros en YouTube, por gentileza de Psy y el número de visualizaciones que ha tenido su vídeo en esa plataforma: Gangnam Style overflows INT_MAX, forces YouTube to go 64-bit

The maximum value of this number type, 2,147,483,647, is well known to C programmers as INT_MAX. Once INT_MAX is reached, attempting to record another view will normally roll over to -2,147,483,648.

YouTube isn’t the only software that this number is a problem for. Unix systems record time values as the number of seconds since 00:00:00 UTC on January 1, 1970. 32-bit systems use a signed 32-bit integer for this, so they will wrap around 2,147,483,647 seconds after that date. Two billion seconds is about 68 years; on January 19, 2038, at 03:14:07 in the morning, 32-bit Unix clocks will roll over.

Son ese tipo de errores en los que se piensa: ¿cómo podría llegar a alcanzarse esta cantidad? Y un buen día se alcanza. El próximo límite, con sus 64 bits, tardará un poco más en ser un prolema (4 mil millones de años, si los cálculos del artículo son correctos).

También lo cuentan en We never thought a video would be watched in numbers greater than a 32-bit integer ….

Si alguien tiene ganas de ver el vídeo:

Gangnam Style

Las primeras contraseñas

Login

Un poco de historia nunca viene mal. En The World’s First Computer Password? It Was Useless Too hablan de los primeros ordenadores de tiempo compartido (ejecutaban los programas de varios usuarios, en lugar de un usuario cada vez, cuando le tocaba) y de la ‘necesidad’ de las primeras contraseñas:

It probably arrived at the Massachusetts Institute of Technology in the mid-1960s, when researchers at the university built a massive time-sharing computer called CTSS. The punchline is that even then, passwords didn’t protect users as well as they could have. Technology changes. But, then again, it doesn’t.

Aunque en realidad en aquella época la seguridad no era una gran preocupación:

The irony is that the MIT researchers who pioneered the passwords didn’t really care much about security.

El primer robo de contraseñas documentado:

In the spring of 1962, Scherr was looking for a way to bump up his usage time on CTSS. He had been allotted four hours per week, but it wasn’t nearly enough time to run the detailed performance simulations he’d designed for the new computer system. So he simply printed out all of the passwords stored on the system.

“There was a way to request files to be printed offline by submitting a punched card,” he remembered in a pamphlet written last year to commemorate the invention of the CTSS. “Late one Friday night, I submitted a request to print the password files and very early Saturday morning went to the file cabinet where printouts were placed and took the listing.”

Desarrollo seguro: las pistas de Adobe

Ordenadores

En The Simplest Form of Secure Coding un articulito introductorio en la bitácora de seguridad de Adobe sobre el tema de desarrollo seguro en las empresas.

Incide en el tema de que los consejos sobre desarrollo seguro suelen tener un solapamiento fuerte con los consejos sobre buenas técnicas de desarrollo (mejores prácticas y esas cosas).

As you can see, regardless of your coding language, security best practices tend to overlap with your developer best practices. Following them will either directly make your code more secure or make it easier to integrate security controls later. In meetings with management, developers and security people can be aligned in requesting adequate time to code properly.

Aunque no es lo único. Como sabemos, un programa puede ser técnicamente correcto y tener fallos de seguridad desde muchos puntos de vista.

Todo lo que necesitas saber de POODLE

Puerta cerrada

El año pasado estuvo bastante animado con fallos muy mediáticos (nombres propios, webs dedicadas, etc.). En Everything you need to know about the POODLE SSL bug Troy Hunt hacía un resumen bastante amplio del tema y que vale la pena conservar después de haberlo leído.

Sobre el nombre:

Enough with the crazy bug names, why Poodle?!

No, not Poodle, POODLE – the Padding Oracle On Downgraded Legacy Encryption. In the modern era of fancy bug names, the guys who names this must have been ecstatic when they realised that the acronym actually made a whole heap of sense! But really, that’s exactly what it is – a protocol downgrade support that then exploits a legacy encryption implementation. Nice one guys!

Naturalmente, también escribió Everything you need to know about the Shellshock Bash bug, que también es interesante.

Algunos detalles sobre simuladores de Fórmula 1

Coche de carreras

Ahora que acaba de empezar la temporada de Fórmula 1 puede ser un buen momento para recordar esta entrada del blog F1Metrics donde explicaban en Building a race simulator algunos parámetros de los simuladores que se utilizan para analizar (y preparar) la estrategia: orden en el uso de las ruedas, número de paradas. Para ello hay que analizar diversos parámetros y alimentar el programa con los datos adecuados para que los resultados tengan sentido.

Muy interesante, si te interesan los temas de simulación o las carreras.

Seguridad en proyectos ágiles

Linotipia

Desde hace algún tiempo tengo rondando por aquí un par de documentos sobre seguridad en proyectos ágiles pero nunca he tenido el tiempo necesario (ni tampoco es un tema que salga tan frecuentemente) para re-visitarlos y escribir aquí. Así que, por si le son de utilidad a alguien los dejo sin mucho comentario:

Además, habíamos hablado de temas relacionados en:

Al final, hay que acordarse de la seguridad independientemente del modelo de desarrollo seguido.