220 meneos
1496 clics
GitHub rechaza una petición de retirada de un fork que contiene las claves privadas de un fabricante de drones [ENG]
Un empleado del fabricante de drones DJI se equivocó al crear un repositorio y lo hizo público en lugar de privado. Esto incluía claves AES que permitían descifrar el firmware de control de vuelo, lo que podría permitir a los pilotos de drones con conocimientos técnicos eliminar el "geofencing" del software de control de vuelo. Alguien hizo un fork antes de que DJI corrigiera el error. GitHub se niega a retira el fork alegando que la licencia de uso de GitHub especifica que al hacer un repositorio público se da una licencia irrevocable.
|
comentarios cerrados
¿Por cierto, eso del geofencing es lo que nos protege de ataques a instalaciones seguras?
nakedsecurity.sophos.com/2013/11/04/anatomy-of-a-password-disaster-ado
Ahora van a poder hacerlo con las versiones nuevas de las controladores de vuelo.
Lo subí porque iba a seguir en casa o algo... .
En el repo no deberían estar las claves de nada, incluso aunque sea privado.
Y yo te respondo que ellos ya admiten que eso es un error, que constatas algo que dice la propia noticia. No te digo que no haya más errores...
Todo zonas que puedes ver desde todos los ángulos mientras estés en el suelo, pero por razones de seguridad, no puedes sobrevolar.
"Los gobiernos" no te ocultan nada en ese mapa.
Pero sí, el firmware es mejorable.
Ahora, la postura de github no me parece ni medio normal. Se puede arruinar un proyecto entero con la cantidad de gente que trabaja en el solo por un estúpido error sin mala intención que no quieren enmendar.
Como ya han dicho en otro comentario, gente saltándose el geofencing hay desde mucho antes de la filtración esta. Por suerto, no para bombardear nada.
Además, no hace falta la bomba, puedes joder bastante y matar a muchisima gente simplemente colando drones grandecitos en las turbinas de los aviones de pasajeros.
me parece que Github tendría que haber colaborado un poco más, que si bien las claves se deben haber copiado ya, al menos se intenta minimizar un poco el alcance de la cagada
Este tipo de cosas es lo que me llevan a pensar que la criptografía asimétrica es una patraña (el simétrico algo menos)... Una patraña bajo la que se rige el mundo!
Para empezar, depende de lago tan absurdo como lo que tarda el hardware de calcular; una idea que ya de por sí me parece mala. Un cifrado no debería depender de esa variable. Un cifrado debería ser indescifrable salvo por casualidad.
En segundo lugar, un cifrado debería depender de un código no calculable. Es un idioma calculable? Puede una máquina entender un idioma si no se lo enseñamos? Puede una máquina calcular un idioma? El cifrado no debería ser un algoritmo, debería ser un idioma. De hecho debería ser un idioma aleatorio. Algo así como el Navajo que usaban los yankis en la segunda guerra pero a lo bestia.
Por último, si ya es malo lo anterior, peor idea todavía parece el cifrado de clave pública - clave privada! El colmo ya! Un cifrado no debe depender de algo tan absurdo como perder las claves!!
Ala, ahora, si alguien me ha leído, ya me puede apedrear...
Y si no existe algoritmo ni código calculable, si es un lenguaje que sea imposible de entender, entonces no existe computadora ni persona humana que lo pueda descifrar, con o sin clave. Básicamente es lo mismo que borrar tus datos en vez de encriptarlos
Desde el momento que exista una forma "legal" de desencriptarlo se vuelve vulnerable y por fuerza bruta, con suficiente tiempo, siempre lo vas a poder desencriptar. Es imposible encriptar algo de forma definitiva, simplemente puedes hacer que sea muy dificil de hacer, o cueste varias vidas de duración.
Los alemanes usaban Enigma, y Alan Turing lo descifró. Los americanos usaron indios navajos, y nadie, que no fuera navajo, lo descifraba.
Hubiera descifrado Alan Turing el Navajo sin alguien que supiera Navajo? Permíteme dudarlo.
El lenguaje tiene códigos y normas, pero no siempre son las mismas y son difícilmente interpretables. Con el lenguaje puedes querer decir lo contrario del significado literal y esos mensajes son imposibles de comprender para las máquinas.
Quizá, sólo quizá, palilleramente se me ocurre que las técnicas criptográficas habituales (por ejemplo RSA y la descomposición en factores de pares de primos enormes) no son demasiado buena idea.
Coge toda la información que hace falta para que alguien aprenda Navajo, sus reglas gramáticales, su completa ortografía, etc. Mira a ver cuantos KB de datos ocupa esa información y crea una clave AES con el mismo número de bits que esa información ocupa.
Luego compara las frases en navajo de palabras repetidas y criptoanalizables con el galimatías aleatorio que obtienes como resultado de encriptar con esa clave AES, algoritmo que por cierto no se ha conseguido nunca romper por cryptoanálisis. Cual crees que es más fácil de desencriptar?
Y eso sin tener en cuenta que traducir al Navajo sería mucho más lento, pesado, y más propenso a errores con cosas que no son fácilmente traducibles o que quedan "lost in translation".
Basta ver el traductor de google. Cuántos años lleva funcionando? Cuánta inteligencia artificial tiene detrás? El traductor de Google, a fecha actual, es una absoluta basura. Imagina esta conversación traduciéndola a un idioma "raro", el tagalo, por ejemplo. Si cada uno de nosotros tradujera sus mensajes al tagalo, y de nuevo al español, con el traductor de google no nos entenderíamos en absoluto. Y estamos hablando de dos lenguajes que google conoce.
Evidentemente el lenguaje natural es muchísimo mejor para comunicarnos entre humanos que las codificaciones informáticas. Lo más lógico es que los cifrados se hicieran con lenguajes cifrados conocidos a ambos extremos de la comunicación. En vez de computar pares de números primos, tendríamos que computar lenguajes naturales aleatorios compartidos. Esto no serviría para ssl o similar, claro. Pero serviría para cifrar comunicaciones que quieras que sean secretas. De hecho, no me fío un pelo de ssl, menos aún desde las pifias de Intel o el heartbleed hace unos años.
Imagina esta conversación entre dos camellos a los que pincha el teléfono la policía:
- "Vienen unos nenes a comprar piruletas".
Sin contexto, una máquina muy difílmente descifraría que van a comprar drogas. Los policías lo entienden porque comprenden el contexto, un contexto "cultural", aleatorio. Imposible de adivinar por fuerza bruta salvo que participes de él.
Un mensaje "encriptado de verdad" debería partir de premisas lingüísticas similares, a partir de elementos aleatorios y contextuales, crear un nuevo idioma con el que comunicarse. Por fuerza bruta nunca podría la máquina hacer nada... Además, aplicar un AES256 a dicho lenguaje le añadiría la capa extra :-).
PD: AES es simétrico, ya dije que tengo menos mania a los cifrados simétricos que a los asimétricos...
Además de la clave privada, normalmente hace falta un acceso (físico o no), para proteger mis datos yo tengo mi disco duro encriptado y para que alguien lo lea necesitaría tener acceso físico, por red o como sea.. pero al fin y al cabo es mi disco que está en mi casa y cuando quiera le puedo cambiar la clave. Ahí, en caso de que se filtre, DJI tiene poco que hacer porque los dispositivos no están en su poder. Eso poner una limitación artificial a lo que los clientes han comprado, para protegerlos de ¿ellos mismos? ¿Se trata de mantener una zona aérea segura a través de una clave que si se filtra una vez ya no hay forma de pararlo?
No estoy tan seguro como tú de que Alan Turing no hubiera sido capaz de desencriptar navajo por criptoanálisis. De lo que sí estoy seguro es de que no hubiera sido capaz de desencriptar AES por criptoanálisis, porque nadie, ni siquiera hoy con herramientas más modernas, ha sido capaz de hacerlo.
Yo creo que si interceptas suficientes mensajes de la policía diciendo "Vienen unos nenes a comprar piruletas" y los ves siempre despues mandar patrullas antidroga no hace falta ser Turing para imaginarse lo que esa frase significa, aunque estuviera escrito en Innuit. En cambio con AES, cambias un punto o una coma y el mensaje al completo cambia radicalmente como si fuese un galimatías totalmente distinto. Vamos, ni siquiera puedes saber si el mismo mensaje está encriptado con la misma clave o lo mismo sigue un sistema bajo el que se cambia la clave según la hora y la fecha.
El traductor de Google sólo lleva 11 años funcionando, y es capaz de traducir con un nivel relativamente suficiente como para que un lector con cabeza pueda entender lenguaje natural en una cantidad de idiomas bastante importante (te lo digo yo que en mi trabajo tengo que traducir Koreano con frecuencia para temas técnicos y es uno de los idiomas con peor soporte, Google básicamente hace mi trabajo posible sin tener que aprender Koreano). Y eso sin estar diseñado para lo que propones.
Sabes cuantos años necesitas para desencriptar 256 bits AES por fuerza bruta? Es un "pelín" más de 11 ..y un "pelín" más de poder de procesamiento del que tiene Google.... [échale un vistazo a este post en reddit](www.reddit.com/r/theydidthemath/comments/1x50xl/time_and_energy_requir).
Y eso presuponiendo que la clave es constante y no se encripta cada palabra con una clave distinta.