Teoría de la aleatoriedad y seguridad

Reloj En seguridad informática suele hablarse de aletoriedad, aunque en los sitios habituales de divulgación no tanto. Por eso vamos recopilando aquí todas las noticias que encontramos sobre el tema que llaman nuestra atención. Con las teorías pasa lo mismo, solo hablamos de las que nos gustan, y el resto del tiempo las teorías son cosas molestas que nos llevan lejos del ‘mundo real’.

Hoy traemos Randomness theory could hold key to internet security

Se habla de criptografía, un esquema común de cifrado que se basa en la descomposición de números en factores primos y la creencia de que no existen métodoso eficientes para realizar esta descomposición.

It is believed that no efficient factoring algorithm exists for large numbers, Pass said, though researchers may not have found the right algorithms yet.

También se habla de la complejidad de Kolmogorov que permite medir la cantidad de aleatoriedad que incluye una cadena de números. La definición mide esa complejidad por el tamaño del programa más corto que puede generar la cadena.

Meanwhile, mathematicians in the 1960s identified what’s known as Kolmogorov Complexity, which refers to quantifying the amount of randomness or pattern of a string of numbers. The Kolmogorov Complexity of a string of numbers is defined as the length of the shortest computer program that can generate the string;

Para aligerar el problema (ese programa podría ser muy costoso) se introdujo el concepto de complejidad de Kolmogorov acotada en tiempo. Esto es, la longitud de un programa que puede generar la secuencia en una cierta cantidad de tiempo.

… researchers in the Soviet Union in the 1960s, as well as Hartmanis and others in the 1980s, developed the time-bounded Kolmogorov Complexity – the length of the shortest program that can output a string of numbers in a certain amount of time.

Las consecuencias de estos trabajos son que si pudiéramos encontrar un programa para resolver el problema de la complejidad de Kolmogorov acotada en tiempo para un número significativo de situaciones, podríamos romper todos los sistemas criptográficos. Si no, podemos estar seguros de que podemos encontrar buenas funciones de cifrado que sean seguras.

“If you can come up with an efficient algorithm to solve the time-bounded Kolmogorov complexity problem for a large fraction of things, then you can break all crypto, all encryption schemes, all digital signatures,” Pass said. “However, if no efficient algorithm exists to solve this problem, you can get a one-way function, and therefore you can get secure encryption and digital signatures and so forth.”

Y eso son cosas que hay que saber.

Abusando de los clientes de correo

Máquina En seguridad informática los ataques pueden venir de las formas más insospechadas (incluso aunque estemos atentos). En este caso traigo Some email clients are vulnerable to attacks via ‘mailto’ links donde nos cuentan un fallo utilizando enlaces del tipo 'mailto' (esos enlaces, como sabemos, abren el cliente de correo con un destinatario preconfigurado).

Mailto refer to special types of links, usually supported by web browsers or email clients. These are links that, when clicked, they open a new email compose/reply window rather than a new web page (website).

Como suele suceder, el estándar permite un montón de opciones, algunas incluso desaconsejadas por el mismo.

However, even the standard itself warns software engineers against supporting all parameters, recommending that apps only support a few “safe” options.

Uno de ellos es el de añadir adjuntos ('attach') que permiten que el destinatario esté precargado y, además, que el correo ya contenga un fichero adjunto.

In particular, researchers looked at the mailto “attach” or “attachment” parameters that allow mailto links to open new email compose/reply windows with a file already attached.

Y, claro, como siempre decimos en las charlas divulgativas, lo que es fácil y rápido se consigue que de manera fácil y rápida alguien pueda fastidiarnos (por ejemplo, añadiendo nuestro fichero de claves, algún fichero de configuración….)

If the user composing the email does not spot the file attachment, attackers could receive sensitive files from the user’s system, such as encryption (PGP) keys, SSH keys, config files, cryptocurrency wallet files, password stores, or important business documents – as long as they’re stored at file paths known by an attacker.

También hablan de otro fallos de seguridad destinados a evitar las tecnologías de cifrado como, sustituir las claves, guardar información sensible en texto plano en sitios controlados por el atacante y divulgar las claves.

Cuidado.

Seguridad al desarrollar para sistemas industriales (Industria 4.0)

Máquina No siempre podemos elegir la tecnología que utilizamos o la que tenemos que gestionar. En Security analysis of legacy programming environments reveals critical flaws lo enmarcarn en el tema de la Industria 4.0, donde este caso puede ser frecuete y ofrecen recomendaciones.

We don’t want to simply point out these challenges, but once again take the lead in securing Industry 4.0 by offering concrete guidance for design, coding, verification, and on-going maintenance, along with tools to scan and block malicious and vulnerable code.”

La lista incluye: tratar la maquinaria como si fueran computadoras, autentificar las comunicaciones (cada comunicación), implantar políticas de control de acceso, realizar validación de los datos de entrada, sanear los datos, gestionar adecuadamente los errores (sin exponer detalles que pueden ser delicados) y, claro, desarrollar y practicar protocolos de configuración y despliegue adecuados.

The essential checklist for writing secure task programs includes the following:

Treat industrial machines as computers and task programs as powerful code

Authenticate every communication

Implement access control policies

Always perform input validation

Always perform output sanitization

Implement proper error handling without exposing details

Put proper configuration and deployment procedures in places

Nada muy nuevo para cualquier persona interesada en la seguridad, pero vale la pena recordarlo.

Algunas estructuras de datos y algoritmos usados en casos reales

Tricas Invaders... En estos tiempos la palabra algoritmo cotiza a la baja: se ha asimilado a decisiones que toma una máquina por nosotros con poca transparencia (ese tufo anti-tecnológico permamente que padecemos). Sin embargo, tan algoritmos es el de la suma como esos otros ‘malvados’. En las clases de algoritmia se explican estrutcturas de datos y algoritmos a los que no siempre se les ve sentido (aunque siempre recordaré a un estudiante que ya tenía su startup y todo y cómo estas clases le abrieron un poco los ojos a lo que era pensar los programas, más allá de resolver su problema). En Data Structures & Algorithms I Used Working at Tech Companies nos habla Gergely Orosz de este tema: estructuras de datos y algoritmos que realmente ha utilizado en empresas tecnológicas.

Habla de los árboles y su recorrido (Trees and tree traversing) que utilizó en Skype y en Uber, por ejemplo. Fundamentalmete, parece, para temas de navegación.

Trees and tree traversing: Skype, Uber and UI frameworks

Grafos con pesos y caminos mínimos (Weighed graphs and shortest paths) en Skyscanner. Al tener que calcular precios de rutas que pasan por distintas ciudades el problema se resulve como un camino mínimo a través de un grafo.

Multi-city was one of the features that took Skyscanner quite a bit of time to build - in all fairness, the difficulty was more on the product side, than anything. The best multi-city deals are calculated by using shortest path algorithms …

Ordenación en Skype. Tenemos una lista de contactos, que además pueden llegar en lotes.

One of the other engineers decided to implement an insertion sort for listing contacts. In 2013, when Skype connected to the network, contacts would arrive in bursts, and it would take some time for all the contacts to arrive. So this engineer thought it’s more performant to build the contact list organized by name, using insertion sort.

Diccionarios (Hashtables and hashing) en muchos sitios. Muy útiles para contar, detectar duplicados…

The most frequent data structure I’ve used regularly was hashtables and the hashing function. It’s such a handy tool from counting, to detecting duplications, to caching, all the way to distributed systems use cases like sharding. After arrays, it’s easily the most common data structure

Pilas y colas (Stacks and queues), de vez en cuando. Se trata de buenas herramientas auxiliares.

Criptografía en Uber. Los usuarios siempre nos proporcionan información que puede ser delicada y que hay que tratar adecuadamente.

User-entered sensitive information coming from mobile or web clients needs to be encrypted before sending through the network, only to be decrypted on a specific service. To do so, a crypto approach needs to be implemented on the client and the backend.

Árboles de decisión en Uber. Cuando nuestra aplicación se hace más compleja, puede ser necesario elegir qué mostrar en función de algunas reglas.

On one of the projects, we had to implement complex business logic in the mobile application. Based on half a dozen rules, we had to display one of several different screens

Mallas hexagonales e índices jerárquicos, también en Uber. Hay que optimizar los precios de los viajes, y el envío de coches, que es algo que se puede resolver con mallas hexagonales y la adecuada jerarquización.

The data - and visualization - structure for this is a hexagonal grid with hierarchical indexes, and a couple of internal visualization tools are built on top of it.

Interesante.

Probando forestry.io

Papeleo. Actualización (2021-02-22): Faltaba una prueba y era editar como texto una entrada para ver qué sucedía. Le hemos añadido la foto de rigor para respetar la homogeneidad del sitio. Este sitio está gestionado con jekyll y GitHub pages. Trabajar con ficheros de texto y git me resulta cómodo. Para otros proyectos he echado de menos un montaje similar pero que también tenga interfaz web.

Decía yo en Twitter:

  • Necesitamos algo como Google Docs pero con markdown o similar.
  • La idea sería poder editar en local o en la web según convenga y tenerlo siempre disponible. Las piezas las tenemos:
    • Markdown como lenguaje de escritura. Puede generar diversos formatos de salida/presentación.
    • git para gestionar la evolución de la información y asegurarnos de que la tenemos bien (actualizada) en donde la usemos.
    • Interfaz web para editar en línea cuando convenga. Tenemos GitHub, gitlab (creo) y otras interfaces que lo permitían pero no están pensadas para eso.

¿Alguien conoce un editor web de texto que pudiera servir? Hace falta que:

  • Genere texto plano (aceptamos WYSIWYG, pero ‘debajo’ hay texto)
  • Permita manejar estos textos con algún API.

He recibido dos respuestas:

Pues eso, he importado el sitio desde GitHub, y me he puesto a editar esta entrada con el móvil.

Estoy impresionado, a falta de darle al botón de publicar.