566 meneos
2650 clics
Por qué (tal vez) el software de los coches debería ser código abierto
La realidad es que es que cada vez más y más decisiones, incluyendo decisiones relacionadas con la vida y con la muerte, las toma un software (...) pero resulta que no podemos examinar cómo funciona la mayoría del software que utilizamos (...) la ñapa de Volkwagen se habría visto al instante si alguien hubiera podido echar un vistazo al software.
|
comentarios cerrados
Uno es el dirigido a la mecánica. Los que manejan los inyectores, ... Otro es el lúdico, que abarca desde un navegador, radio, videos, ... Y un tercero que está surgiendo ahora dirigido a sustituir al conductor.
Los tres tipos tienen que comunicarse, pero hay que tener muy claro que son sistemas distintos y un fallo en uno no puede propagarse a otro.
Yo lo que veo obligatorio es que las pruebas que se realizan (desde emisiones, consumo... de todo tipo) sean independientes , exhaustivas y rigurosas y que en caso de fraude las multas sean lo suficientemente exhaustivas para que nadie en su sano juicio vuelva a repetirlo.
Mi opinión,ojo.
¿Se utilizan los datos de la centralita por los peritos/GC en los juicios/investigaciones?
Lo mismo que con el resto de modificaciones.
P.D.
Todo el software debería ser código abierto como poco, libre a ser posibe.
Todo el hardware también.
Yo añadiría a lo que ha dicho #2 que una de esas dos ECU controla también abs y frenado regenerativo en los híbridos, por lo que cuanto más blindado esté ese sistema, más seguridad.
En cuanto a las pruebas y multas que comenta #3, yo diría que la prueba debe ser más extensa y realista, pero no entiendo que se considere fraude preparar al coche específicamente para pasar una prueba. Hay algo más <que yo no haya leído> aparte de que las ECU estaban preparadas para rendir al máximo de acuerdo a los parámetros de las pruebas? (Sólo me he leído un par de artículos, la verdad)
#3 Que tu puedas auditar el código es una cosa y que te deje reescribirlo es otra, con algo tan tonto como un gestor de permisos por roles de usuario (el concesionario tiene permiso de lectura y escritura el usuario solo de lectura) sobre el fichero que guarde el soft ya lo tienes, no tengo ni idea de sobre que sistemas va un coche, pero supongo que algo así no debería ser muy difícil de implantar desde el punto de vista téncico.
Es un tema muy delicado, que se tiene que hacer muy bien.
Nada nuevo, se llama "modificar"
Y aunque sea un chip aislado, con las técnicas de soldadura de hoy día no es tan fácil (por no decir imposible) andar desoldando y sustituyendo chips.
Y haciendo una búsqueda rápida, un estudio sobre niveles de NOx y otros contaminantes dados por los sensores de los coches:
www.researchgate.net/publication/257614701_A_new_method_to_calculate_i
Si medimos la complejidad en numero de lineas de codigo.... mal vamos....
El problema son los coches conectados y las medidas contra el acceso fisico al sistema y sobreescritura de los firmwares.
www.meneame.net/c/17377765
www.meneame.net/story/fiat-chrysler-retira-1-4-millones-vehiculos-eeuu
Medidas de seguridad como las que podrian tener los airbus para que no les sobreescriban los firmwares y se la lien.
www.meneame.net/c/16901726
(No se donde, decian que estaban robando los catalizadores de los coches o para piezas o por el platino)
Perdón no recuerdo la guerra que tuvo USA (lo he buscado por internet) pero la primera vez que llevaron camiones el ejercito exigió estandarizar los repuestos de estos, porque antes cada empresa tenia sus medidas para ruedas, correas y demás cosas.
Imaginaros los coches como los móviles (antes de Android) cada uno con su propias medidas, salvo ruedas y poco mas, nada es estándar.
Lo que queda para que Google o Apple saquen un coche en condiciones, teniendo en cuenta que no tienen ninguna experiencia en este campo, por mucho que se diga. Una cosa son las noticias en Internet y otra muy distinta es la realidad.
Son microcontroladores y fpgas en general conectados por un bus can es estúpido pretender poner codigo abierto cuando cada uno es un mundo en si mismo hasta hoy en día las bios de un pc son codigo cerrado por ese mismo problema no son chips estándar lo mas cercano a codigo abierto es busybox y no vale para un fga ni un microcotrolador, arduino solo va en algunos chips atmel y esta en desarrollo en pic pues el mercado hay cientos de microcontroladores y fpgs como que crear un bootloader para cada uno ya nos podemos echar a llorar.
En esencia el problema es el bootloader/bios/firmanware de iniciacion de la cpu con eso te puedes morir.
La propiedad industrial no está comprometida y los chinos no necesitan copiarlo, igual que tampoco copian el resto del vehículo.
De hecho en multitud de talleres hacen trucajes modificando el software de los vehículos lo que significa que tienen acceso al código e incluso capacidad de mejorar el original.
Los fabricantes no van a querer responsabilizarse de un software de terceros que pueda poner la seguridad de los ocupantes del coche en peligro.
Si el razonamiento que planteas fuera sólido (el código abierto implica la posibilidad de reescribir el código de un programa desplegado o compilado), el kernel Linux no estaría en la mayoría de servidores del planeta ni en la mayoría de teléfonos Android del mundo, pues todo el mundo podría hackear los servidores y teléfonos.
Que el código sea libre no quiere decir que puedas modificar un programa compilado, ni que porque hagas un cambio en las fuentes, éste vaya a ser automáticamente aprobado para su implantación en serie.
Y para el caso de que se trate de código sin compilar, para introducir un cambio en la rama de desarrollo y que llegue a implantarse en un dispositivo, tendrías que tener permisos en los repositorios de software de la empresa para introducir cambios, y que éstos fueran validados.
En definitiva, estás confundiendo conceptos...
Edit: Otro tema cercano al que te puedes estar refiriendo es a que al conocer como está hecho el programa, puedes llegar a encontrar vulnerabilidades, pero respecto a eso ya hay amplia literatura en lo que viene a llamarse "seguridad por oscuridad":
es.wikipedia.org/wiki/Seguridad_por_oscuridad
Lo que planteas es que un programa, por ocultar sus fuentes es más seguro. Hay amplia literatura al respecto. Se llama "seguridad por oscuridad", y hay argumentos de peso en contra.
es.wikipedia.org/wiki/Seguridad_por_oscuridad
La seguridad de un determinado programa no tiene nada que ver con la liberación de su código fuente. Bueno, en realidad suele haber una correlación. Cuando un programa es libre, suele ser auditado por más personas, por lo que es más probable que se encuentren vulnerabilidades, y éstas puedan ser corregidas.
Los bits no se pueden robar. Como mucho se podrá suplantar al autor, pero para eso existen las licencias de software.
es.wikipedia.org/wiki/Licencia_de_software
Estoy seguro de que Linus Torvalds, a pesar de que la mayoría de los servidores del mundo usen el SO que él y su equipo desarrolla, no diría que el resto de la industria le roba.
En realidad .NET se liberó después de ser diseñado, más que nada porque se dieron cuenta de que Java (bueno, la máquina virtual) es mucho más utilizado precisamente por ser abierto.
Pero el software para conducción automata (o como se llame) no porque ahora mismo es "el producto". Se gastan millones en él y no van a liberarlo para que la competencia se aproveche.
Es como pedir a Google que libere "su algoritmo".
Microsoft liberó .NET hace relativamente poco, pero desde el principio .NET fue diseñado pensando en ser código abierto. Por defecto, puedes leer cualquier código escrito en esta plataforma.
No soy ningún gurú de la programación, pero estoy seguro que de haberlo querido, podrían haber diseñado las cosas para que no fuera posible ver el código fuente.
Libre y abierto no son lo mismo.
Confundes vulnerabilidades y hackeo con modificación e instalacion de código en tu dispositivo/coche.
No obstante, yo estoy 100% a favor de que el software de los coches sea abierto visto lo que ha pasado con VW.
Si viene otro y lo copia, lo dejan unos añitos y después los demandan y les sacan la mitad de las ganancias que hayan tenido vendiéndolo.
no se como lo hacían porque recuerdo abrirla, ver el chip y pensar que era imposible...
Ahora hay un montón de televisores, lavadoras, etc... que llevan un Linux embebido. ¿Crees que es más fácil cambiarles el firmware porque Linux sea libre?
Hacer que haya la posibilidad de muertos solo por ser abierto no es una buena idea.
La seguridad de los coches está MEGA testeada como para que ahora venga alguien y "recompile su coche"...
Qué va a ser lo próximo del lobby del software de código abierto? Que el software de los aviones también sean de código abierto? Y oo siguiente? Diremos que el cockpit debe estar siempre abierto para que los viajeros puedan modificar a gusto los parámetros?
Hay cosas que deben permanecer cerradas por seguridad, hacerlas código abierto no es el camino para mejorarlas.
Otro tema es que las auditorías sean más duras, lo cual lo veo bien.
Lo mismo hizo Tesla con sus baterías. Si querías un coche más barato te limitaban por software la carga de las baterías que eran de 80Kwh para que sólo cargaran 60Kwh.
Los coches ademas, por cuestiones de seguridad evidentes, deben tener posibilidad de actualizacion del software. Esto supone un acceso "abierto" por el que poder modificar ese software. No será fácil, pero sería posible. Y ya sabes como somos los humanos con los coches, se montaría un negocio sobre esto, con la promesa de sacarle mas potencia. Y a saber quien lo hace, como lo hace, y que cambia.
Yo soy fan del código libre (libre, no solo abierto), y por supuesto me gustaría que el de los coches también lo fueran. Pero eso tiene unas ventajas y en este caso unos riesgos, no cabe duda.
Y reprogramar la ECU para añadirle potencia en el caso de un gasolina a veces no llegan ni a 5Cv extra porque por lo general el fabricante ya tiene mas que probado los límites del motor.
Gracias por una respuesta con razonamiento.
En cualquier caso, te digo lo mismo. Tratas de decirme que la seguridad se basa en la ocultación de la lógica del programa. Esto en general es considerado una mala práctica:
es.wikipedia.org/wiki/Seguridad_por_oscuridad
Es más eficiente buscar otros métodos de seguridad. Desde hacer algoritmos seguros de firma digital del firmware, o hacer memorias no escribibles, pero basar la seguridad en la ocultación no es buena idea.
Me parece que estás mezclando la facilidad de decompilación del bytecode producido por .Net con la liberación del código fuente del propio framework.
Son dos cosas disntintas e independientes.
Mejor que software libre, debería pasar por manos de algunos expertos que lo validen, no que todo el mundo pueda verlo, eso es un caos.
que analizar también el código del vehículo para saber si ha sido modificado para determinar las causas del accidente.
Por otro lado como esta diciendo mucha gente aquí si el software de los coches fuera de código abierto para ver lo que hace el código sin poder codificarlo, pues solo decir que es impensable que en el mundo capitalista en el que vivimos sea así por que las diferentes marcas se copiarían el código entre ellas.
Alucino que aquí la gente habla de modificar el software de un coche como si fuera cualquier cosa, para reprogramar ese software tendrías que tener la gente muy claro el funcionamiento de un coche, por no decir que ese código podría tener miles y miles de lineas de código que cualquiera no lo puede hacer.
Lo que quería decir es que .NET fue diseñado, desde el principio, para generar código abierto. Es trivial acceder al código de las aplicaciones programadas en C# o cualquiera de la plataforma. Salvo ofuscaciones más o menos complejas y siempre a posteriori, el código es legile y por tanto, abierto, que no libre.
Aquí la definición de software libre por la FSF:
www.gnu.org/philosophy/free-sw.es.html
Aquí la de código abierto por la OSI (en inglés):
opensource.org/osd
Distintas palabras y distintas filosofías para lo mismo.
Efectivamente esa es la idea de liberar el código en ciertos sectores. Que todos se copien unos a los otros y la evolución de las tecnologías se produzca más rápido al estar en manos de todos.
Es básicamente lo que ha pasado con las impresoras 3D baratas. Son posibles gracias a las aportaciones a los proyectos Rep-rap. Ahora hay muchas empresas que añaden código a estes proyectos y otras rápidamente lo copian introduciendo versiones más baratas en el mercado. Aunque siempre hay quien intenta cerrar su producto para impedir que esto suceda.
El mudno capitalista en el que vivmos no es del todo liberal, se rige por las leyes del mercado y al mismo timpo por las leyes del estado. Existe un equilibrio.
Si una empresa quiere tener esclavos, el mercado se lo permite, pero los estados no. Del mismo modo los estados son los que ponen las normas con respecto a la propiedad intelectual. Muchas veces, las cosas se peuden cambiar
Ah, y a ser posible, las leyes de los estados deben favorecer la evolución de las tecnologías, y esta sería una muy buena forma. ¿Por qué no se hace? En mi opinión: Ignorancia de ciertos actores clave y grupos de presión.
Ten en cuenta que una persona que le interese atacar un sistema va a invertir mucho tiempo y dinero en buscar una forma. Una vez que la encuentra, tendrá mucho tiempo para aprovecharse de la vulnerabilidad. Posiblemente los desarrolladores del sistema ni se den cuenta, mientras que el atacante se aprovecha.
En el código libre, encontrar una vulnerabilidad para aprovecharte de ella es mucho mas difícil (pues el código ya sido auditado por mucha gente, mucha de ellas mejor profesionales y con mayor experiencia), y una vez que la encuentras, el tiempo que tienes para aprovecharla es minúsculo comparado con un sistema privativo.
Ten en cuenta que muchas de las vulnerabilidades en sistemas privativos es "Descubierta vulnerabilidad que permite a atacantes..." mientras que en vulnerabilidades en sistemas abiertos es "Descubierta vulnerabilidad que podría permitir...". Esto es porque en sistemas privativos, las vulnerabilidades se descubren muchas veces tras haberse realizado un ataque y realizarse una investigación, mientras que en sistemas abiertos es algún usuario que ha descrito un método de ataque (que normalmente es muy difícil y bajo unas circunstancias muy concretas) al auditar el código.
Por otro lado tambien decirte que un coche no es el pc de tu casa fonde instalas el S.O. que quieras aunque si no tienes ni puta idea de coches no me sorprende que pienses asi.
Soy programador, sé algo de hardware y sistemas embebidos, y para bien o para mal conozco el mercado.
Sé perfectamente que hay aquitecturas totalmente diferentes, pero también sé que hay muchas arquitecturas compatibles en el mundo del automovil, ya que son controladas por grupos de marcas que utilizan por ejemplo una misma centralita. Vease el caso VW.
Si no lo son totalmente es precisamente porque no hay estandares abiertos como en otros sectores, en los que existe algún tipo de acuerdo entre marcas o una interacción de los estados.
Hay que abrir un poco la mente a nuevas posibilidades y preguntarse.
- ¿Es factible técnicamente? Sí lo es
- ¿Es factible en las condiciones de mercado actuales? Sí lo es, está demostrado.
- ¿Puede hacerse sin que perjudique a la economía? No lo sé, yo creo que la mejoraría y sobre todo renovaría los aires rancios de ciertas industrias.
#80 no estamos hablando que la gente modifique el software y lo suba a los repositorios de la empresa. Estamos hablando de que alguien por su cuenta realice esas modificaciones y se las instale en su coche. El coche te permitirá instalar esos cambios porque si no tampoco se podrían hacer desde fábrica.
#84 y una vez que la encuentras, el tiempo que tienes para aprovecharla es minúsculo comparado con un sistema privativo. Eso será si los que la deben corregir la encuentran también. Si tu la encuentras y no dices nada el resto del mundo no tiene porque saberlo. En SO los parches a los errores no se hacen en un par de horas. El que salga el parche un par de horas después de publicar el error es solo porque el error no se publica hasta que el parche está listo. Lo cual es lógico.
Lo que es evidente es que esta trampa de VW debería cambiar las cosas en ese sentido. Ademas codigo abierto no es codigo libre. Y si todos estan obligados a publicarlo, no habría problema. Aunque ya puestos, yo preferiría que fuera libre. Y no sería de extrañar que acabara así. Las compañias ya comparten motores, chasis, etc... ¿por que no hacer frente común tambien ahí?
Fuera del debate si el código abierto o cerrado hará un coche más seguro tengo claro que el principal factor de riesgo en accidentes son el estado de la carretera y los conductores peligrosos.
Si puedo busco datos sobre esto.
Las marcas de coches fabrican sin tener en cuenta lo que esta haciendo el otro fabricante, no fabrican para que sus sistemas puedan ser implantados en otros vehículos, incluso entre modelos de una misma marca y tipo de coche pueden variar sustancialmente, por lo que la idea de la normalización de sistemas entre vehículos para hacer compatibles ciertas cosas como las ECUs y demás no deja de ser un sueño, por ejemplo el fabricante aleman Bosh que realiza todo tipo de productos entre ellos sistemas de gestión de motores entre cosas, diseña esos equipos en funcion de lo que precisa cada marca y modelo nunca con una idea de normalización entre marcas.
Por cierto, cuando hablamos de liberar el código, obviametne no es para que cualquiera pueda editarlo en su propia casa sin tener ni idea de lo que hace. También los frenos son manipulables y no te pones a jugar con ellos sin tener ni idea.
Y hablando siempre de componentes homologados y para motores turbo. Los atmosféricos si que permiten mucho menos.
#87 Siempre hablando de tiempo medio, comparado con un sistema privativo es mucho mayor. Como la cantidad de vulnerabilidades descubiertas es mayor, hay muchas mas posibilidades de que una vulnerabilidad de la que se están aprovechando se descubra y se arregle.
Saliendo de la burbuja de la informática en la mucha gente aquí esta inmersa y aunque yo también lo estoy también conozco mucho el mundo de la automoción y te puedo decir que cada coche esta parametrizado de forma lo más optima posible, para consumir lo mínimo, conseguir el máximo rendimiento sin que el coche te dure 3 años y en sistemas de seguridad, etc,...
los fabricantes de coches no son personas malvadas que fabrican los coches mal aposta para que consuman mucho, corran poco, contaminen mucho, si cualquier fabricante pudiera fabricar un coche que consumiera 1l/100Km, tuviera un buen rendimiento y no contaminase nada? no crees que no lo harían, si se convertiría en poco tiempo en el coche más vendido.
Cada coche tiene unas particularidades difícilmente exportables a otros, cada coche tienen una potencia a unas revoluciones determinadas, un indice de calentamiento y rendimiento, unos consumos específicos y esta todo parametrizado en la ECU para conseguir las máximas prestaciones en ese motor especifico
Por ponerte un ejemplo para que lo entiendas, tu te compras una tarjeta gráfica que es la hostia para jugar y la instalas en tu PC, que drivers tienes que instalar para que te funcione? los propios drivers del fabricante de la tarjeta, no? pues es lo mismo.
No soy programador ni ing. electrónico, no se si hay forma de blindar un sistema ante manipulaciones no autorizadas siendo este de código abierto, o si por el contrario siempre se podría buscar la forma de rootearlo. Si es posible blindarlo, no vería ningún problema.