Normativa algorítmica

Algoritmo de Euclides. Fuente: Wikipedia

En la conferencia VOTEID sobre voto electrónico que tuvo lugar en Suiza en 2015 a la que asistí como miembro de Agora Voting, un matemático contaba cómo el sistema de recuento de votos aplicado en las elecciones generales Australianas funciona con un sistema de Voto Único Transferible, pero que la ley estaba redactada de forma tan ambigua que al final dichas ambigüedades en el algoritmo de recuento eran resueltas por las empresas privadas encargadas del recuento, y que los criterios de resolución de las ambigüedades no eran públicos. Este matemático se había dedicado a formular matemáticamente el sistema de recuento según viene definido en la ley electoral Australiana, e incluso había propuesto una redacción de la ley más concreta atendiendo a estos problemas.

Según la Wikipedia un algoritmo es un «conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.»

Como hemos visto en el ejemplo Australiano, en realidad esas propiedades que se presumen de un algoritmo también son deseables en una normativa de índole jurídica. ¿Y si las leyes se formulasen mediante algoritmos matemáticos?

Imagina un reglamento de circulación de tráfico rodado que dijese: «La velocidad máxima permitida de un vehículo en autovía será de 120km/h. En caso de que se supere más del 50% de la máxima velocidad permitida, la multa será de 600€, en otro caso la multa será de 300€.».

El anterior podría ser un texto legal en vigor, formulado de forma tradicional en el idioma Español. El problema de los lenguajes naturales es que son ambiguos y no unívocamente interpretables; por ello hace falta en última instancia un juez; y a falta de ello, de un buen abogado. A veces los textos legales están mal redactados, con fallos de ortografía o de puntuación, con errores de lógica, casos no contemplados, etc. Por ejemplo en el texto de ejemplo no queda claro que sólo se multará al conductor, y que la multa de 300€ es sólo si se supera el límite máximo. Y créanme si les digo que este tipo de fallos es común en la legislación.

El mismo algoritmo podría formularse por ejemplo así:

def comprobar_velocidad_autovia(nombre_conductor_de_vehiculo, vehiculo_circula_por_autovia, vehiculo_velocidad):
    VelocidadMaximaEnAutovia = 120

    if not circula_por_autovia:
        return SinMulta()

    if vehiculo_velocidad >= VelocidadMaximaEnAutovia * 1.5:
        raise Multa(tipo=Monetaria, euros=500, sujeto=nombre_conductor_de_vehiculo)
    elif vehiculo_velocidad >= VelocidadMaximaEnAutovia:
        raise Multa(tipo=Monetaria, euros=300, sujeto=nombre_conductor_de_vehiculo)

La función anterior es una ley formulada mediante un código ejecutable por ordenador en el lenguaje de programación Python. Esto permite que cualquiera puede comprobar sin la necesidad de un abogado o un juez, tan sólo con un ordenador, qué multa obtendría simplemente ejecutando la función anterior con diferentes valores de entrada. Y sin lugar a dudas, para los mismos valores de entrada la función siempre devolverá el mismo resultado.

Si bien nuestro código legal de ejemplo es ejecutable, no está carente de ambigüedad. Cierto margen interpretativo es necesario en la legislación. Por ello le hemos dotado del nivel de ambigüedad estrictamente necesario, y hemos acotado y definido las tres variables interpretables que es necesario valorar para poder aplicar el algoritmo:

  1. el nombre del conductor del vehículo
  2. establecer si el vehículo circulaba por una autovía
  3. la velocidad a la que circulaba el vehículo

Este cambio es de gran trascendencia. De repente, las leyes dejarían de ser totalmente ambiguas. Sólo algunas variables correctamente acotadas y definidas lo serían.

Estas tres variables serían las que tendría que valorar la policía al establecer la multa. Lo podría hacer mediante información fiable como un radar de tráfico (velocidad del vehículo y tipo de vía por la que circulaba) e identificación visual del conductor a través de su documento de identidad si la policía hubiese parado al infractor. En caso de que se llegase a un juicio, serían de nuevo éstas las variables cuyo contenido debería establecer un juez; el resto de la ley está fuera de toda duda. Idealmente estas variables de entrada tenderían a valorarse de forma imparcial, veraz e independiente, por ejemplo la velocidad mediante un radar de carretera.

Por supuesto que realizar el esfuerzo de formular la ley en forma matemática sería más costoso y requeriría de un aumento sustancial de recursos en un órgano legislativo. Pero ¿Cuántos juicios y por tanto dinero, tiempo, y recursos nos ahorraríamos? ¿Cuántos errores y lagunas legales se corregirían? La formulación de la legislación mediante código ejecutable podría simplificar la labor de los jueces, y por tanto agilizar la justicia. Esto permitiría una justicia más rápida. También permitiría mayor transparencia y por tanto reducir la arbitrariedad en la aplicación de la ley, y en general un imperio de la ley más efectivo.

También podría ayudar a encontrar errores en el código legal antes de ser aprobado. De hecho, podrían aplicarse el mismo tipo de técnicas extensamente conocidas el mundo de la programación, entre otros:

  • Baterías de test unitarios, de forma que se compruebe que cada algoritmo resulta en el valor esperado al ser aplicado sobre valores de entrada de ejemplos de datos conocidos.
  • Baterías de test de integración, de forma que se compruebe que la nueva legislación no sea incompatible con otras normativas vigentes.
  • Pruebas con valores aleatorios para comprobar si el sistema es robusto a combinaciones extrañas.
  • Sistemas de integración continua, de forma que antes de que se proponga una nueva ley, se apliquen las baterías de pruebas se ejecuten automáticamente al escribir borradores de cambios legales.

A veces las leyes son ambiguas, y los políticos intentan convencer de que una nueva ley que se pretende promulgar en realidad dice una cosa cuando realmente dice otra. La normativa algorítmica eliminaría ese tipo debates debido a sus altos niveles de transparencia.

Desde el punto de vista de la legislación computacional:

  • El poder legislativo es el que redacta las leyes. Por tanto son los encargados de desarrollar/programar los algoritmos.
  • Tanto el poder ejecutivo como en general las personas físicas o jurídicas se mueven en un marco jurídico. Todos ellos son usuarios, que realizan acciones que pueden estar descritas en alguno de los algoritmos de la legislación vigente.
  • El poder judicial es quien interpreta las leyes y su correcta ejecución. El poder judicial es la autoridad que establece según la situación cuáles son los valores correctos de entrada en un algoritmo, qué algoritmo es aplicable, y cuál es el resultado de aplicar correctamente dicho algoritmo.
  • Los abogados son equivalentes a consultores que enseñan a utilizar un programa de ordenador.
  • Una de las labores a realizar por los abogados sería intentar «hackear la ley» buscando fallos que les permita ejecutar acciones con resultados no esperados por el legislador.

La legislación algorítmica puede que suene algo muy lejano, pero no lo es tanto. Muchas de las leyes relacionadas con la banca terminan siendo programadas en sistema informáticos. También existe una tendencia en el mundo de bitcoin en el uso de contratos privados llamados smartcontracts que está siendo aplicado por algunas empresas, y son un tipo de normativa algorítmica. Es natural que la normativa algorítmica se aplique primero en entidades pequeñas o privadas y luego vaya poco a poco aplicándose en ámbitos cada vez de mayor relevancia.

Spiderman

El poder de la tecnología humana incrementa a un ratio mayor que nuestro nivel de responsabilidad. Y un gran poder, conlleva una gran responsabilidad, decía Spiderman.

Bajo el prisma de este sencillo postulado pueden explicarse diferentes sucesos y podemos aventurarnos a explicar ciertas tendencias existentes en la actualidad:

Pongamos como ejemplo el espionaje masivo desde las agencias gubernamentales de seguridad como la NSA. En los tiempos de Stalin simplemente la tecnología de espionaje masivo no existía ni era siquiera imaginable. La tecnología no era tan poderosa por entonces, y por tanto conseguir un nivel mucho menor que el actual de espionaje masivo requería de unos recursos y riesgos mucho mayores, por lo que pocos políticos lo permitían.

Pero no sólo es mucho más sencillo, tentador y viable el espionaje masivo gubernamental. Un avión no podría haber impactado contra las torres gemelas si la tecnología no existiese. El peligro de una ataque con una bomba sucia nuclear, un ataque bacteriológico o los ataques cibernéticos a infraestructuras críticas son producto también de la existencia de la tecnología.

La irresponsabilidad de personas atacando a otros grupos enemigos mediante los nuevos medios tecnológicos de que disponen añaden argumentos de peso a los dirigentes de los grupos contrincantes para utilizar contra-medidas tecnológicas, como el espionaje masivo, de forma también muchas veces irresponsable.

El ciudadano de a pie en este contexto utilizará también la tecnología para intentar protegerse el espionaje del gobierno, a la par que sentirá miedo y exigirá un gobierno fuerte que le proteja de los ataques externos.

La evolución biológica del ser humano en los últimos siglos es insignificante, y el nivel de moralidad humana apenas ha variado. Hace siglos, existían igual que hoy muchas personas capaces de realizar actos muy atroces, pero la capacidad de un ciudadano cualquiera de producir daño tenía una notable limitación tecnológica si la comparamos con la actualidad. A día de hoy, nos acercamos a una sociedad donde cada persona tiene acceso a tecnología cada vez más poderosa.

Pongamos un ejemplo numérico:

Ejemplo 1, sociedad del siglo XV: en una ciudad de 100,000 personas, hay 50 personas altamente peligrosas. Cada persona altamente peligrosa puede poner en peligro a 10 personas. Total de personas en peligro: 50*10 = 100 (0.1% de la sociedad).

Ejemplo 2, sociedad del siglo XXI: en una ciudad de 100,000 personas, hay 50 personas altamente peligrosas. Cada persona altamente peligrosa puede poner en peligro a 1,000 personas. Total de personas en peligro: 50*1,000 = 50,000 (50% de la sociedad).

Una sociedad donde la mitad de las personas están en peligro es una sociedad donde las dinámicas del miedo toman especial relevancia. Los lazos de confianza se vuelven importantes. La desconfianza entre desconocidos aumenta los lazos de unión entre los conocidos y genera barreras a terceros.

Si bien evolutivamente no estamos adaptados a los peligros de la tecnología, si que estamos acostumbrados a vivir en sociedad: el hombre es un ser social. Y hay muchos casos de sociedades con desconfianza generalizada: las situaciones de guerra civil o epidemias por poner un ejemplo generan exactamente este tipo de dinámicas de grupo. Por no hablar de lo notablemente más peligroso que era moverse en los caminos en la Edad Media, por poner otro ejemplo. No parece creíble que en general las sociedades altamente tecnológicas se rompan debido a la desconfianza si hemos llegado hasta aquí.

Es interesante ver cómo la tecnología por un lado solventa el problema epidemiológico de ciertas enfermedades, pero por otra parte genera problemas de similar magnitud, e incluso genera epidemias de nuevas enfermedades y además permite que éstas se expandan más rápido, por ejemplo con los aviones o el ántrax.

Una sociedad próspera y altamente tecnológica pero desconfiada se diferencia mucho de una sociedad en guerra civil o bajo una pandemia típica de siglos pasados. Si bien la sociedad continuará funcionando, las nuevas tecnologías serán usadas también para dar rienda suelta a la desconfianza. Es el nacimiento de la corriente de la «trustless society» o «sociedad desconfiada», que en realidad lo que puede generar son estructuras de confianza basadas en lógica formal.

Paradójicamente en una sociedad altamente tecnológica cada vez se pone más énfasis en la enseñanza de la ciencias debido a su utilidad material manifiesta, y se pone menos énfasis en la enseñanza de las letras, lo cual genera un bucle que parece retroalimentarse. Por otra parte, no está de más recalcar cómo muchas veces se echa la culpa a la tecnología cuando claramente la culpa no es del cuchillo que es una mera herramienta, sino de la persona que lo utiliza para apuñalar a otra persona. Caso paradigmático de esta incorrecta asignación de responsabilidades es la manida frase del «error informático».

Hay que diferenciar la confianza generada en la sociedad, que parece que probablemente de forma general continuará existiendo, con el peligro real existente. Existen múltiples casos documentados en los que el planeta ha estado a punto de sufrir una guerra termonuclear por error. Errores producidos en última instancia debido a la unión entre el alto poder de la tecnología con la irresponsabilidad en su uso por el ser humano. Estos casos seguramente sean sólo la punta del iceberg del peligro que presenta la tecnología en las muchas manos inadecuadas que existen.

El peligro que genera la tecnología en las manos inadecuadas y la imposibilidad de evitar que esto ocurra lleva a pensar que es una buena idea establecer de contramedidas que limiten los efectos de un desastre de grandes dimensiones. La descentralización que propugna la colonización auto-sostenida de Marte (y luego otros mundos) es posiblemente la medida más efectiva de evitar un eventual colapso tecnológico.

Efectivamente, parece que la concentración de poder que permite la tecnología aumenta la eficiencia a costa de aumentar los riesgos. Esto no sólo justifica la colonización de otros planetas; es aplicable a muchos otros ámbitos. Por ejemplo, la rudimentaria tecnología de voto en papel imponía debido a sus limitaciones una alta descentralización en los procesos de registro y recuento del voto.

El voto electrónico permite aumentar notablemente la eficiencia, permitiendo que en vez de tener cientos de miles de urnas sólo exista una única urna electrónica en todo un país. No obstante esto concentra tanto el poder que se vuelve peligroso y por tanto conlleva a establecer de forma consciente y deliberada medidas de descentralización del poder una vez se toma esta reflexión que requiere de un cierto grado de madurez en el uso de la tecnología. Pasamos de un escenario de descentralización debida a limitaciones tecnológicas a un escenario donde el nivel de centralización del poder es una decisión consciente que por si fuera poco reduce la eficiencia.

Pongamos otro ejemplo más para demostrar cómo de general y transversal es este razonamiento: la independencia alimentaria. Antaño, el campo era trabajado por una gran parte de la población de un país, y el consumo era interno e incluso local. Hoy en día, de nuevo gracias a la tecnología, en el supermercado encontramos alimentos de todos los lugares del mundo. Un mercado global permite que el consumidor tenga acceso a más variedad de productos y más baratos, incluso si éstos tienen que cruzar medio mundo para llegar al supermercado. No obstante los alimentos básicos son una industria estratégica, y si por ejemplo la leche viniese toda de una serie de países con los que por motivos políticos dejamos de comerciar, correríamos un riesgo innecesario inherente a la concentración de poder. La complejidad y el acoplamiento de un mercado global aumenta el riesgo de que crisis antes locales sean mucho más contagiosas.

La situación antes descrita de interdependencia peligrosa por generar fragilidad se suele calificar de riesgo sistémico y es también posible encontrarla en otros ámbitos, como el financiero. Estos riesgos pueden aminorarse eliminando algunas de esas dependencias, creando cortafuegos, aplicando medidas que aumenten la independencia entre diferentes partes, o lo que es lo mismo, aplicando medidas descentralizadoras.

P2P is liberalism applied to computer networks

Today I was skimming through a large article written by Greece Finance minister Yanis Varufakis. I didn’t find the time to read it all over (there’s too much code yet to be written for Agora Voting), but when reading the following lines, they made me click:

Phil Mirowski has recently highlighted, quite eloquently, the neoliberals’ success in convincing a large array of people that markets are not just a useful means but also an inalienable end in itself. That while collective action and public institutions are never able to ‘get it right’, the unfettered operations of decentralised private interest generates a kind of secular-cum-divine providence […]»

I’ve highlighted the word decentralised, because that’s the word that made me click. This might sound very obvious to many, but this paragraph made me realise the architectonic relation between liberalism and p2p networks: both rely on the same principle of decentralization. Both are based on the idea that different actors following their own self-interests will collectively act together better than in a top-bottom architecture, in the interest of the group as a whole. Both believe that this architecture is more robust and adapts better to changes. Both rely on the invisble hand of the free market. What I always thought was an interesting technical network architecture (decentralised networks), now I can analyze it also as an architecture for society itself, and it enters the field of political science.

Quickly after realizing this, I contacted with a friend of mine (@imdario). I asked him: «do you like decentralised architectures?«. He promptly answered to me: «P2P forevah«. That was not surprising, because he’s a hacker and he’s a pirate. Then I continued: «I mean, do you like that different people act at will, each looking for their own interests, you know, like in a free market?«.

The funny thing is, I know quite a few people that declare themselves on the left side of the political arena that love the idea of P2P networks. They feel attracted to the idea of Internet being free and not having an external entity that can control it. Ain’t it funny? They are secretly in love with the free market and they don’t even know it.

But for me there’s even another twist. After diving into the issues of trying to use decentralized networks architecture like Bitcoin to apply them for secure voting, I really got the idea that these kind of schemes do not scale enough at the moment. Because of that (and because we presently lack the resources to do the research) we continue to apply a distributed approach to apply to this problem at Agora Voting: we apply some decentralization because of the benefits of the security properties involved, but do not have a complete decentralized scheme. I leave to the reader the exercise of analysing this architecture as a political architecture.

Those who have worked on decentralised network architectures know that it’s difficult to make them behave well and not degenerate. You need to create protection mechanisms (rules) that good-faith actors will follow to resolve issues. That’s what networks like Bitcoin use: the whole blockchain actually works on a kind of democratic way to reach to an agreement on which is the valid blockchain. So you need some checks and balances. And of course some common rules. Another problem is, as I mentioned earlier, that the system might not work/scale or need different kind of rules depending on what you’re trying to accomplish, who are the actors and how much do they need to interact or agree, etc. There’s no one-size-fits-all solution that apply to all of them, but nevertheless I thought it was worth to mention all this in my blog, so here lie the proof of my thoughts.

Sobre la coacción y la seguridad del voto electrónico

Sobre la coacción y la seguridad del voto electrónico

¿Es seguro el voto electrónico? No. Siguiente pregunta. Espera un momento, vamos a ver, ¿pero no desarrolláis en Agora Voting un sistema de Votación que pretende ser seguro? Sí y no. ¿cómo? Si con «seguro» te refieres a 100% seguro, la respuesta es no, porque eso es pedir imposibles. Si en cambio cuando dices «seguro» te refieres a que intentamos hacer el sistema más seguro dentro de nuestras capacidades y habilidades, entonces la respuesta es sí.

Ningún sistema de votación es 100% seguro. De hecho, seguro en esta vida hay realmente muy pocas cosas. Hay quien decía que lo único seguro en esta vida es la muerte y los impuestos. Pero incluso hay quien disputa esta afirmación: hay científicos empeñados en burlar al de la guadaña y algunos liberales se resisten a aceptar la mera idea de los impuestos.

Lo mismo da un sistema de voto en papel o electrónico. Quien diga que un sistema electoral es 100% seguro, o falta a la verdad o se engaña a sí mismo. El fraude electoral ha existido desde que existen elecciones. Muchos de los sistemas electorales actuales en países democráticos han ido evolucionando e incorporando toda una suerte de medidas de seguridad. A pesar de ello, aun en el siglo XXI, llegan noticias de irregularidades en procesos electorales de diversas partes del mundo.

El concepto de seguridad también ha evolucionado. Como ejemplo, antes el voto no era secreto, y sin embargo ahora se considera una medida de fundamental para evitar la coacción. Lo que ayer se consideraba como seguro, hoy se considera atrasado. Así es la vida.

Conviene también hacer distinción entre voto electrónico y voto por Internet. Porque no son lo mismo ¿se dan cuenta? En el voto electrónico pueden usarse urnas electrónicas no conectadas a Internet. Y las medidas de seguridad que se pueden implementar en el voto en papel, voto electrónico y el voto por Internet son diferentes.

Por ejemplo cuando votas en papel en España en unas elecciones generales, todo el mundo sabe que el voto es secreto ¿cierto? No tan rápido, forastero. Eso no es del todo cierto. Es cierto que nadie registra oficialmente quien vota a quien, pero por otra parte no se aplican todas las medidas de seguridad necesarias para garantizar realmente el secreto del voto. Nadie te obliga a meterte tú solito en la cabina de votación con papeletas de varios partidos, cerrar la cortinilla y meter la papeleta de tu partido en el sobre sin que nadie pueda observarte.

De hecho, en la inmensa mayoría de los casos, la gente no usa las cabinas de votación, sino que coge la papeleta de la mesa y meten la papeleta en el sobre. Así, sin protección, como si nada. ¡Yo mismo reconozco haberlo hecho! Acompañado de familiares y vecinos. Cualquiera podría estar allí a tu lado, observando atentamente que metes la papeleta correcta en tu sobre. Y es posible que como no metas la papeleta correcta, te caiga una buena. Te eche de casa, te despidan del trabajo, o quizás tu marido maltratador tenga una nueva excusa para pegarte una paliza. Violencia de género lo llaman algunos… no nos vamos a poner a discutir el término: baste con decir que en el contexto de las votaciones, en general a toda ese tipo de situaciones lo llamamos coacción.

Y sintiéndolo mucho por los españoles que estén realizando acciones de “movilidad exterior”, en el voto por correo, la posibilidad de coacción es aún mayor. El acto de meter la papeleta de tu partido en el sobre no has de hacerlo en un lugar público y seguro como el colegio electoral. A lo mejor tu jefe te obliga a hacerlo en la oficina. O quizás en.. mejor me callo para no dar ideas, ya saben. El hecho es que puedes votar desde cualquier lugar del planeta, y por tanto la facilidad de coacción es mayor. Sin embargo, escucho poca gente quejarse de esto, y en general la población asume que el voto es efectivamente secreto en las elecciones en España.

Y todo esto lo cuento porque cuando alguien intenta buscarle «las cosquillas» al voto electrónico, una de las primeras cosas que te suelen decir es «ah, pero es que con el voto electrónico puede haber coacción». Así como lo oyen. En realidad, eso no tiene porqué ser cierto. Recordemos, voto electrónico no es lo mismo que el voto por Internet. ¿ahora véis por qué mencioné antes la diferencia no? Era una trampa. El voto electrónico puede materializarse con urnas electrónicas en los colegios electorales. Urnas que podrían estar dentro de una cabina con una cortinilla, donde sólo se permitiese entrar a una persona cada vez.

Pero miremos el bosque y no el árbol. Es cierto, en el voto por Internet también puede haber coacción. Y eso alarma a la gente, y asume que ya ha encontrado un argumento incontestable. Es el típico fenómeno del alarmismo ante la novedad, de la resistencia al cambio. Viene algo nuevo, la gente se pone a agitar los brazos pegando saltos y llevándoselas manos a la cabeza. Luego resulta que no era para tanto. Luego resulta que, el insalvable problema que parecía plantear el voto electrónico no es un argumento válido en su contra porque de hecho el voto en papel padece exactamente del mismo problema.

Y además resulta que esta novedad, que es el voto electrónico, tiene también ventajas de seguridad. Por ejemplo, en unas elecciones generales la veracidad del recuento depende de unos pocos apoderados e interventores. No es viable que cualquiera fácilmente y a posteriori verifique la validez de un recuento. En cambio, en un sistema de voto electrónico como el de Agora Voting esto sí que es posible: puedes verificar el recuento tranquilamente desde tu casa con un ordenador. Y eso sí que es una clara ventaja.

También es cierto que el voto electrónico no tiene porqué sustituir por completo al voto en papel. ¿te gusta el voto en papel? Pues vota en papel. Vota y deja votar, hakuna matata. El voto en papel no va a desaparecer en elecciones institucionales tan fácilmente ni nadie lo está pidiendo. Normalmente, en todo caso se habilitan ambos sistemas en paralelo.

Obviamente, cuando se valora una nueva tecnología, no sólo hay que valorar las cuestiones de seguridad. También su accesibilidad, por ejemplo. ¿Sabían que Agora Voting ha colaborado con la Fundación ONCE? Resulta que los discapacitados lo tienen claro desde hace tiempo: demandan el voto por Internet. Por ahora, ningún gobierno en España les ha hecho caso en su demanda. Muchos colegios electorales no están adaptados para ciegos, y muchos discapacitados tienen incluso problemas para salir de su casa. En cambio, lo que sí que tienen seguro adaptado y bien configurado es su ordenador. Cosas de la vida.

seL4, el primer sistema operativo que demuestra matemáticamente su seguridad

Hoy 29 de Julio, es un día para la historia de la informática. La empresa General Dynamics C4 Systems y el NICTA (Centro de Excelencia Australiano) han publicado bajo licencia de software libre el primer kernel de un sistema operativo conjunto con pruebas matemáticas «punto a punto» que demuestra su corrección y seguridad. Se llama seL4 y tiene pinta que va a dar mucho que hablar.

Y no es para menos. Hasta ahora, pocas piezas de software habían publicado pruebas matemáticas verificables acerca de sus propiedades de seguridad. Esto se considera muy complejo poder realizar afirmaciones de forma matemáticamente verificable acerca de la seguridad de todas las casuísticas a las que se debe enfrentar un programa de ordenador.

aa

E incluso si se pueden hacer afirmaciones sobre un programa concreto, hay que tener en cuenta que hasta el programa más sencillo tiene muchas dependencias del entorno en el que se ejecuta. Hasta un programa que sólo imprime un «hola mundo!» depende de un compilador o intérprete, que ya de por si suele tener millones de líneas de código, y del sistema operativo y las librerías para por ejemplo pintar en pantalla, que tienen en su conjunto normalmente otros tantos millones de líneas de código.

Y es por eso que resulta novedoso y relevante que el kernel de un sistema operativo sea verificable: ahora será posible verificar matemáticamente en su conjunto no sólo ciertos programas de ordenador, sino incluso el sistema operativo donde se ejecutan dichos programas. Pensad esto por un momento: cuando normalmente los informáticos hablamos de la seguridad de un sistema, hacemos afirmaciones del tipo «se han hecho 3 auditorías del código y no han encontrado ninguna vulnerabilidad». Es decir, son opiniones. Pero cuando hablamos de pruebas matemáticamente verificables, ya dejan de ser opiniones, son hechos contrastables e incontestables. Es un nivel de seguridad mucho mayor. Es comparable a pasar de la alquimia y las brujas al método científico.

Es mucho aventurarse y puede que sea más las ganas que la realidad, pero este hito puede aportar cierta relevancia pública sobre los programas matemáticamente verificables, y marcar una tendencia en cuestiones de seguridad, hacia un camino donde cada vez más librerías y programas sean verificables.

Es importante destacar que pese a que haya una serie de pruebas matemáticas e incontestables sobre la seguridad de un software, eso no significa que sea 100% seguro. La razón es sencilla: esas pruebas demuestran ciertas afirmaciones acerca de la seguridad del sistema. Por ejemplo, afirman cosas como «no se puede hacer un ataque de buffer overflow». Pero continuamente se están descubriendo nuevas técnicas de ataque. Incluso si se tomasen en cuenta todos los vectores de ataque conocidos hasta el momento y fuesen capaces de aportar pruebas matemáticamente verificables de que cierto software no es vulnerable a ninguna de ellas, mañana podría descubrirse un nuevo vector de ataque, desconocido hasta la fecha.

Además, un sistema operativo y en general cualquier programa de ordenador necesitan un soporte material donde grabarse y ejecutarse: un disco duro, una placa base, una CPU. El hardware es y será siempre otro vector de ataque del que ninguna prueba matemática sobre el software podrá zafarse. El firmware, la BIOS, etc son también piezas de software, que convendría que viniesen con pruebas matemáticas verificables de buen funcionamiento, pero que por ahora pueden ser altamente inseguras.

En criptografía, otro vector de ataque muy importante son los Side channel attacks (ataques de canal secundario/alternativo). Un algoritmo como por ejemplo AES puede ser muy seguro. Puedes incluso tener pruebas matemáticas acerca de su seguridad, pero es posible que un atacante pueda obtener información que no debiera por un canal alternativo, de una forma que no esperas. Por ejemplo, quizás si pongo un micrófono al lado de tu teclado, puedo escuchar cómo tecleas, y según el sonido de cada tecla, averiguar tu contraseña. El algoritmo de cifrado quizás sea muy bueno, pero de nada te va a servir si tengo acceso al secreto (la contraseña) en base al cual se supone que es seguro.

El fin de toda predicción

Nadie conoce cómo será el futuro, pero sospecho que se avecinan curvas. En muy poco tiempo, el proceso de automatización está siendo automatizado, lo que significa que crece de manera exponencial. Ese proceso generará una tasa cada vez mayor de desempleo. A su vez, la automatización permite hacer economía de escala, lo que en la práctica significa que las pequeñas empresas tenderán a desaparecer por dejar de ser competitivas.

Por un lado habrá un numero cada vez mayor de personas sin trabajo ni expectativas de conseguirlo. Eso se une además a la geriatrización de nuestras sociedades occidentales. Todo ello redunda en un aumento del número de personas pobres. Por otra parte, habrá un segundo grupo decreciente, de asalariados, que trabajarán en los trabajos más precarios que aun no han sido automatizados, y muchas veces en competencia con las máquinas.

Los pobres estarán obligados a comprar los productos y servicios más automatizados pues serán los  más baratos, por economía de escala, o bien serán baratos porque serán productos generados con intervención humana en condiciones inhumanas. Lo cual, dicho sea de paso, ahondará en esa situación.

Por otra parte, habrá un reducido grupo de privilegiados con salarios mucho más altos que el resto: la élite de ingenieros/hackers que trabajan en el proceso de automatización, además de las profesiones liberales aun no automatizadas. Más allá de eso, estarán los propietarios y accionistas de las grandes empresas automatizadoras, que se harán inmensamente ricos de forma «automatizada».

Será una sociedad verde, porque la tecnología hará que las energías renovables sean las más eficientes, las más baratas. Por otra parte, la tecnología también entrará en lidia con la economía. Todos estos cambios conllevan un empobrecimiento de la mayor parte de la gente, y por tanto la economía se resentirá.

Ante este expolio, habrá reacciones políticas, indudablemente. Habrá gobiernos que explorarán la idea de una renta básica. Con una economía resentida, una renta básica en todo caso permitirá un salario muy bajo e igualitario, que servirá para asomar la cabeza y no ahogarse, pero no mucho más. Otros gobiernos expropiarán parcial o totalmente grandes empresas de automatización para que trabajen directamente al servicio de la ciudadanía y sus beneficios económicos recaigan en ella. Ahí la lógica será «Cuando una empresa es demasiado grande para caer, debe pasar a ser propiedad de todos». En otros casos, simplemente se dividirá el negocio de esas empresas para fomentar la competencia.

Al final se tratará de una cuestión simple: vivir bien, dignamente. Es una era post-trabajo, donde el trabajo es ya minoritario. Donde no existe jubilación, únicamente renta básica. Donde ni hará falta que todo el mundo trabaje, ni habrá trabajo para todos, ni todo el mundo trabajará. Un mundo donde cada vez menos personas controlarán cada vez más aspectos de nuestras vidas.

El dinero y la economía no van a desaparecer, porque son necesarios – pero tendrá otros matices. será un mundo donde donde se fomentará la iniciativa privada, pero lo común será usar nuestro tiempo libre en actividades sin ánimo de lucro, y donde la actividad económica vivirá más entrelazada con la actividad no remunerada, igual que ocurre en las comunidades de software libre.

Por otra parte, las máquinas controlarán cada vez más aspectos de nuestras vidas. En muchos casos dependeremos de sistemas altamente informatizados: desde medios de transporte hasta marcapasos pasando por sistemas de información y robots asesinos. Sistemas con medidas de seguridad no-infranqueables por hackers.

Surgirán sistemas de inteligencia artificial que escaparán a nuestro control, y que tendrá capacidad de controlarlo todo. De manera que justo cuando la mayor parte de nuestros quehaceres diarios dependerán de una máquina, de repente esos automatismos estarán a merced de una inteligencia artificial superior a la nuestra a la par que totalmente nueva y diferente, e impredecible. Aquí es donde debo acabar mis predicciones, y es por eso que a ese momento se le llama singularidad. Y siento defraudar: no me estoy pringando mucho a decir verdad; todo lo que he contado ya está ocurriendo o en proceso.

La ética de los asesinos coches sin volante

Imagínate dentro de 10 años. Vas en coche por una carretera nacional a 100km/h, volviendo del trabajo y viendo una película. Eres pasajero del coche «sin-volante» que Google te alquila mensualmente mediante una tarifa ondulada a un buen precio. De repente, justo en una curva, se cae en la carretera un ciclista a 20 metros en frente de tu coche ¿y ahora qué ocurre?

prototipo de coche de Google

prototipo de coche de Google

Si en vez de ser un coche sin volante estuvieses tú a los mandos del mismo, la decisión de qué hacer dependería de tí. Ni tú sabes a ciencia cierta cómo resolverías la situación. Dependiendo de tu decisión y pericia, podrían ocurrir múltiples desenlaces; quizás..

    • te bloqueas y atropellas al pobre ciclista por inacción.
    • lo atropellas porque en ese instante decides que si lo esquivas te vas a estrellar tú. Valoras más tu vida en ese momento, pero a lo mejor te arrepientes el resto de tu vida.
    • intentas esquivar al ciclista, el coche se descontrola y terminas estrellándote tú, sufriendo un accidente grave pero salvas la vida.
    • misma situación que la anterior, con la mala suerte de que el coche que venía detrás de tí termina atropellando al ciclista
    • intentas esquivar al ciclista, el coche se descontrola con la mala suerte de que al final no os salváis ni tú ni el ciclista

Podemos concluir que en general si el coche lo conduces tú (o cualquier persona), la decisión se toma en el momento y por tanto es impredecible saber qué es lo que realmente ocurrirá.

Volvamos ahora al coche de Google. Con un coche autónomo el caso es diferente: es un software el que toma las decisiones. Mucho antes de llegar el coche al mercado, hubo una persona, un programador, que se vio en la tesitura de escribir el código que tomará finalmente la decisión para casos como el anteriormente expuesto. Un software que decide atropellar o estrellarse. Vida o muerte. O peor: esta muerte o aquella.

¿Qué decidirá el coche autónomo, priorizar la vida de quien pagó por usar el coche, o intentar salvar la vida de la persona más indefensa? Los que están en el coche tienen más posibilidades de sobrevivir, pero ¿y si hay varias personas en el coche incluido un bebé y únicamente un ciclista tirado en la carretera? ¿en qué momento se inclina la balanza a un lado u a otro?

Siendo del gremio, lo primero que hago es empatizar con ese programador, igual que empatizamos con esos médicos que hacen delicadas operaciones a corazón abierto. Su tarea es muy delicada, y alguien tenía que hacerla. En el caso del programador, es un software que se ejecutará en millones de coches, y por tanto millones vidas en juego.

El programador lo intentará hacer lo mejor posible, sabiendo como nadie las grandes implicaciones éticas de su tarea. De hecho, lo más lógico y probable es que delegue la tarea final de priorizar unas vidas sobre otras delegando esa tarea a otro. Hará esa tarea parametrizable y configurable, y en todo caso dejará que sea otro quien decida: él sólo hará el software que actuará en base a las reglas que se establezcan.

Y la cosa va más allá: como hemos visto, es impredecible el comportamiento de un conductor cualquiera, pero dadas unas reglas de actuación, es de esperar que en situaciones similares los mismos coches actúen de forma similar. Y pongo dos ejemplos contrapuestos:

Si se programa que el coche intente salvar siempre a la persona más indefensa que suele ser la que está fuera del coche, entonces quizás yo me pensaría dos veces antes de montar en un coche de ese estilo: buscaría uno de la competencia. Así de duro es el mercado: quien paga manda. Además un coche de este tipo podría ser peligroso porque podría usarse como método de asesinato: me tiro delante del coche de mi jefe, porque sé que yo saldré ileso y el coche de mi jefe será el que se estrelle.

Si por el contrario se programa el coche para, en caso de duda, preferir salvar a sus ocupantes, muchos posiblemente lo verían como un comportamiento poco ético. Por cada nuevo ciclista atropellado aumentaría aun más la alarma social, incluso si estadísticamente baja el número de ciclistas atropellados gracias a la buena conducción de los coches sin volante. No es lo mismo que te mate un conductor que que lo haga una máquina/robot.

Probablemente lo mejor sería que desde luego no sea el programador de turno, el fabricante de coches, ni «el mercado» de automóviles quien tome esta decisión. Para evitar que se ponga el foco en los fabricantes de coches autónomos y así lavarse las manos, hay quien podría argumentar que deberían ser ellos mismos quienes promovieran una legislación de coches autónomos donde se especifique de alguna forma cual es el método de resolver  las decisiones difíciles en casos de accidente. El problema es que por otro lado la tecnología avanza mucho más rápido que las leyes, y por tanto esa legislación quedaría obsoleta antes incluso de nacer: generaría más problemas que soluciones.

Para evitar suspicacias, mi propuesta para casos de indecisión sería usar un procedimiento aleatorio. Es lo que más se asemeja a lo que pasaría si fuese una persona quien condujese el coche: impredecible. Unas veces saldrá una cosa, y otras veces otra. Cuando no hay solución buena, lo más ecuánime es escoger al azar.

Todas estas consideraciones no son nada nuevo. Pero se avecina una revolución tecnológica en la automatización del automóvil, y este tipo de consideraciones éticas podrían afectarnos a todos. Cuando los coches automáticos empiecen a atropellar ciclistas y matar gente en accidentes de tráfico (aunque no sean culpa suya), inevitablemente la gente empezará a plantearse estas cuestiones. Ya lo planteaba Isaac Asimov en sus novelas y sus tres leyes de la robótica, por ejemplo. Y es más, los pilotos automáticos de los aviones ya plantean retos similares.

La era post-trabajo

Hoy que Google anuncia su coche que se conduce sólo, no queda más remedio que pensar en el reparto del trabajo y la renta básica.

Los coches que se conducen solos son simplemente siguiente ola de automatización del trabajo, y parece que van a llegar esta década y se generalizarán la siguiente. Ya tenemos una alta automatización en la agricultura y nadie se rasga las vestiduras, está asumido y ni pensamos en ello. Es a lo que nos dedicamos los ingenieros: a eliminar vuestros puestos de trabajo. Y deberíais agradecérnoslo porque ¿para qué trabajar si lo puede hacer una máquina? Va a ser el cataclismo para la industria automovilística, donde muchos fabricantes actuales probablemente entrarán finalmente en bancarrota por no llegar a tiempo y surgirán nuevos gigantes, quizás Google mismo.

La automatización permitirá que grandes empresas como Google (o el estado) puedan entrar en el mercado del transporte, tirarán para abajo los precios y los pequeños empresarios, taxistas y autónomos se irán a la bancarrota. Gracias a la automatización de la conducción se destruirán millones de puestos de trabajo de taxistas, de conductores de autobuses, de camiones. Habrá menos accidentes y se salvarán millones de vidas al año, habrá menos trabajo para las aseguradoras, autoescuelas e incluso para los hospitales. Habrá menos parkings, se gastará menos dinero en gasolina por atascos y los nuevos coches automáticos serán eléctricos.

Luego vendrá la automatización al sector de la construcción, la hostelería, en la medicina.. Nuestra sociedad no está preparada para esto, pero no le quedará más remedio. Ni el trabajo ni los coches manuales desaparecerán, desde luego, igual que con el peak oil la gasolina no desaparecerá: pero se convierte en un bien preciado y cada vez más reducido. Lo que hace falta es construir una sociedad donde no tener trabajo no sea una tragedia (para ello, garantizar una Renta Básica Universal) y donde se reduzca la jornada laboral para repartir el trabajo, de manera que haya una sana competencia y no un puesto de trabajo por cada 10 trabajadores, donde hay una carrera hacia el fondo.

Esas son las principales medidas que se me ocurren ahora mismo para que no nos convirtamos en meros esclavos, pero seguramente surjan otras que puedan ser incluso mejores en el futuro. Nos acercamos a la «era post-trabajo».

Anonymous y The Pirate Bay promocionan a los Partidos Pirata para el Parlamento Europeo

En un impulso de visibilidad esta última semana de campaña, Anonymous y The Pirate Bay están promocionando a los partidos piratas europeos para esta elecciones al Parlamento Europeo. Mientras que anonymous lo ha twiteado desde su cuenta con más seguidores, The Pirate Bay proporciona un doodle personalizado para cada país que se presenta a las europeas. Es el apoyo de Anonymous y The Pirate Bay a un movimiento global del que forman parte.

A la Confederación Pirata no nos menciona ni el tato estas elecciones. Sólo hemos salido en el telediario de la Sexta cuando anunciamos la iniciativa de quiensoy.org y en algunos programas locales. Ninguna encuesta nos da un escaño, y en la mayoría de las encuestas ni se dignan a meternos como opción a elegir.

Pero para quien lo dude, los piratas también nos presentamos a las elecciones en España y en Europa, con un programa consensuado paneuropeo (ya quisieran poder decir eso los otros partidos) y vamos a pelear nuestro escaño. No abogamos por el voto útil, no contamos con líderes mesiánicos salvadores (es lo que tiene ser horizontales) ni con maletines cargados de dinero para financiar nuestras campañas (es lo que tiene ir contra el status-quo). Casi no salimos ni en los medios alternativos, porque es más fácil apoyar al líder mediático de turno. Somos más «15M» que esos nuevos partidos de líderes mediáticos y sufrimos las consecuencias.

No nos va la vida en sacar un escaño porque no somos un partido nacido para unas elecciones concretas. Aspiramos a algo más que eso. Somos gente seria y trabajadora. Hormiguitas de la democracia, que es nuestro método y fiel compañera. Fieles a nuestros principios, desde que nació el movimiento pirata en 2006 hemos venido para quedarnos luchando con la gente.

Tenemos ya dos eurodiputados piratas y aspiramos a multiplicar ese número estas elecciones. Estamos en la última semana de campaña, y ahora la cuenta de Anonymous con más seguidores (más de un millón) twitea apoyando nuestras candidaturas:

Además de esto, The Pirate Bay está mostrando su apoyo a las candidaturas de cada partido pirata que se presenta a las elecciones al Parlamento Europeo este fin de semana, como podéis ver en su web, donde sale la promoción en nuestro caso a la Confederación Pirata:

No es casual este apoyo de Anonymous y The Pirate Bay, así como otros movimientos de Internet, porque los piratas somos el movimiento político organizado a nivel internacional (con presencia en más de 60 países) que más y mejor ha defendido a los ciudadanos conectados, y a los que quedan por conectarse.  Es el apoyo de Anonymous y The Pirate Bay a un movimiento global del que forman parte.

Así que estas elecciones no te quedas en casa. Acúerdate de Julian Assange y Snowden pidiendo la transparencia radical que practicamos los piratas. De esa mugre corrupta que esconde la alfombra roja de los Borbones. Acuérdate de todos esos torrents que descargaste estos últimos cuatro años. De ese Internet neutral que usan tus hijos para entrar en la Wikipedia. Acuérdate de esa democracia real que no tenemos y tanto queremos. Piensa en tu futuro, mueve tu cucú, hazte un favor y vota a la Confederación Pirata, por coherencia, ya que te estarás votando a tí mismo.

Rick Falkvinge tiene en su blog más información sobre la campaña de los piratas en The Pirate Bay.

La abstención perpetúa el bipartidismo

La época dorada del bipartidismo parece haber acabado, y sin embargo pese a que los grandes partidos pierden millones de votantes en intención de voto, siguen copando un porcentaje de voto demasiado alto en los resultados ¿cómo puede ser? se preguntarán muchos. Las matemáticas no mienten, como veremos: en un escenario bipartidista, un partido puede perder el 50% de sus votos y sólo bajar del 52% al 50% de escaños. Aun más: veremos que puedes perder votos y ganar escaños, tranquilamente, y que es un escenario muy real: es lo que le pasaría hoy al PSOE si se hiciesen unas elecciones generales.

Supongamos unas elecciones inventadas, donde el Partido Azul saca 1000 votos, el Partido Rojo saca 800 votos, y el Partido Verde obtiene 100 votos. En total, son 1900 votos, y el reparto queda así:

Partido Número de votos Porcentaje de voto
Partido Azul 1000 votos 52.63% votos
Partido Rojo 800 votos 42.10% votos
Partido Verde 100 votos 5.26% votos

Como veis, es una situación donde reina el bipartidismo, como antaño en España. Ahora imaginemos que la gente deja de votar en masa a los dos grandes partidos, pero en vez de cambiar el sentido del voto, simplemente se cabrean y se quedan en casa; es decir, no votan. Pongamos que por ejemplo el Partido Azul recibe la mitad de votos (500 votos), y el Partido Rojo también (400 votos), pero el Partido Verde se mantiene (100 votos). ¿qué pasará? Aquí tenéis los resultados:

Partido Número de votos Porcentaje de voto
Partido Azul 500 votos 50.00% votos
Partido Rojo 400 votos 40.00% votos
Partido Verde 100 votos 10.00% votos

Resulta sorprendente: pese a perder la mitad de su masa de votantes, el Partido Azul sólo pasa de tener el 52.63% de los votos al 50%, y el Partido Rojo también pasa sólo del 42.10% al 40%. Ambos siguen siendo los partidos mayoritarios por goleada. El Partido Verde multiplica casi por dos el porcentaje de votos, aunque sigue siendo claramente minoritario.

Si estas fuesen elecciones al Congreso, significaría que a lo mejor el Partido Azul, pese a perder el 50% de sus votantes, pasaría de 182 a 175 escaños, es decir sólo perdería un 3% de sus escaños. Creo que esto deja bastante claro porqué la abstención es nociva.

Este caso que he puesto además se asemeja en gran medida a la realidad actual española. El Partido Popular consiguió 10.8 millones de votos en las elecciones generales de 2011, pero según encuestas recientes, perdería más de 4 millones de votos. Según ese artículo, al PSOE le pasaría lo mismo, pero como pierde menos votos que el PP, conseguiría a día de hoy más escaños que en 2011 incluso perdiendo varios millones de votos ¿mola eh?

Todo esto se explica de forma sencilla: a la hora de la verdad, la abstención no cuenta. El número de votos que hayas perdido o ganado es irrelevante. Lo que realmente importa es cuantos votos tienes con respecto al resto, o, en otras palabras: lo que cuenta es el porcentaje de voto. Que la abstención es irrelevante se demostró en las elecciones generales de Jamaica en 1983, donde la oposición protestó generando un 97,3% de abstención. Como era de esperar, de nada sirvió: el entonces ya primer ministro consiguió holgadamente ser reelegido, consiguiendo el 100% de los escaños.

Como ejercicio, pongamos ahora que en vez de abstenerse, todos los votos que pierden el Partido Azul o el Partido Rojo van a parar al Partido Verde (podrían ir a parar a un cuarto partido minoritario o de nueva creación, pero tanto da). ¿cuál sería el resultado?

Partido Número de votos Porcentaje de voto
Partido Azul 500 votos 26.32% votos
Partido Rojo 400 votos 21.05% votos
Partido Verde 1000 votos 52.63% votos

El resultado como podemos ver es que el Partido Azul, al perder la mitad de sus votantes, pierde la mitad de sus escaños (pasa de tener el 52.64% a tener el 26.32%), y al partido Rojo le pasa lo mismo (del 42.10% al 21.05%). Es decir, la pérdida de votantes se traduce de forma proporcional en pérdida de escaños/porcentaje de voto, lo cual es lógico y deseable. Por otra parte, el Partido Verde pasa a ser el partido mayoritario, multiplicando por 10 su base de votantes y también por 10 su porcentaje de votos.

Es decir, cuando el número total de votos no varía (sigue sumando 1900), no se producen aberraciones y las variaciones en número de votos a cada partido se traduce de forma proporcional y por igual en variaciones en porcentaje de votos sobre el total, que es lo que se utiliza para calcular el número de escaños en un parlamento. Y por eso, estas elecciones europeas, votes a quien votes, por favor, vota.