Descentralizando el mundo con blockchain (I)

(Trobareu la versió en català més avall)

El próximo 17 de mayo, coincidiendo con el Día de Internet y el Día Mundial de las Telecomunicaciones y la Sociedad de la Información, se celebra el Congreso de Ciberseguridad UOC-Con. El congreso se enmarca dentro de las actividades de la Cátedra UOC-IBM de Ciberseguridad y del Máster interuniversitario en Seguridad de las TIC de la UOC, UAB y URV. El propósito del UOC-Con es promover el intercambio de conocimiento entre los miembros de la comunidad de seguridad, dando así a conocer sus trabajos e investigación en un entorno de intercambio de ideas. En esta edición, la temática de la UOC-Con es la Blockchain y la Seguridad cognitiva (podéis encontrar toda la información y el formulario de inscripción en el siguiente enlace: http://uoc-con.uoc.edu/)

Ya hablamos de la seguridad cognitiva en un post anterior. Hoy os queremos introducir la tecnología del blockchain.

El blockchain ha ido ganando popularidad entre los profesionales de las nuevas tecnologías desde su aparición en 2008 como parte de los procesos de gestión de la moneda criptogràfica Bitcoin. Como se aprecia en la figura de abajo, el término “blockchain ya ha superado en popularidad en las búsquedas en Google a otro concepto tan popular como “Machine Learning y está cerca de “IoT. Además, según Techradar, blockchain es una de las 10 tecnologías a tener en cuenta durante 2017.

Tendencias. Fuente: Google Trends

Cuando se habla de blockchain, siempre aparecen las mismas tres preguntas: ¿Qué es blockchain?, ¿Tiene alguna aplicación más allá de Bitcoin?, ¿Es realmente tan seguro como nos lo venden? En esta serie de artículos sobre blockchain vamos a abordar estas tres preguntas. Para empezar vamos a intentar responder de manera sencilla a la primera, ¿Qué es blockchain?

Cuando se habla de blockchain, se suele decir que mediante esta tecnología se crea una especie de libro de contabilidad (ledger en inglés) electrónico. De manera simplificada, este libro de contabilidad se crea con una cadena de bloques como la que se muestra en la figura de abajo. La cadena de ejemplo de la figura se ha construído con información extraída del blockchain de Bitcoin.

Representación básica de una parte del blockchain de Bitcoin. (Fuente de datos: blockexplorer.com)

La manera en cómo se construye la cadena hace que una vez que una transacción se ha registrado dentro de un bloque que se ha incluído en la cadena, la transacción ya no se pueda ni borrar ni modificar. Para ello, la cadena se construye de manera colaborativa entre muchos nodos de una red P2P. Con ello se consigue que no sea necesario tener una entidad centralizada que de fe del registro de datos, sino que este mecanismo se consiga gracias al consenso de los nodos de la red. De esta manera, la cadena actúa como una especie de base de datos distribuida donde sólo se permiten inserciones y lecturas, pero no actualizaciones.   

Para entender cómo se construye la cadena, primero necesitamos entender el concepto de función hash. Una función hash (hash(x) = y) es un algoritmo que devuelve un valor (i.e. y) de tamaño fijo que puede considerarse como un resumen del valor de entrada (i.e. x). La modificación del valor de entrada, incluso el cambio de un solo bit, dará lugar a que la función hash devuelva otro resumen totalmente diferente del resumen anterior. Esto hace que sea imposible predecir el resultado de la ejecución de la función, tan solo observando los datos de entrada, sin ejecutarla. Además, otra propiedad interesante de esta función es que a partir de un resumen y, no existe una función inversa que nos permita conocer el valor x que ha dado resultado y.

Una vez entendemos cómo funciona una función hash, ya podemos ponernos manos a la obra para intentar comprender cómo se construye una cadena de bloques. Para empezar, cuando un usuario desea registrar una transacción en la cadena, éste la envía a algunos de los nodos de la red P2P. Estos nodos, a los que llamamos mineros (miners en inglés), recolectan varias de las transacciones recibidas, comprueban si son válidas, y si lo son, las unen en un bloque como los que se pueden ver en la figura anterior. Entonces cada minero empieza una computación muy costosa compitiendo contra los otros mineros para incluir el bloque que él está computando en la cadena consensuada globalmente por todos los nodos de la red P2P. Esta costosa computación trata de encontrar un valor, que llamamos nonce, que se incluye en la cabecera del bloque que se está computando, juntamente con el hash del bloque anterior y un hash que representa todas las transacciones validadas en el bloque, entre otros datos. La particularidad del nonce que tiene que encontrar el minero es que tiene que ser un valor que al computar el hash de la cabecera del bloque, este hash sea inferior a un valor especificado (por este motivo los hashes que vemos en la figura tienen muchos ceros al inicio). Como las funciones hash no tienen inversa y, por lo tanto, no es posible especificar un valor resultante que cumpla esta característica y usar esta función inversa para computar el nonce, entonces la única opción que queda es computar la función hash probando con muchos nonce diferentes hasta encontrar un valor resultante del hash menor al especificado. El tiempo necesario para este cómputo utilizando un ordenador convencional sería de centenares de años, pero teniendo en cuenta que en la red de Bitcoin hay miles de participantes, muchos de ellos con máquinas especializadas para este tipo de algoritmos, de media, cada nuevo bloque es computado por algún nodo de la red cada 10 minutos. La inclusión del hash anterior en el nuevo bloque es lo que protege a la cadena de cualquier modificación, ya que si se modificara un bloque de la cadena, su hash cambiaría y por lo tanto el cambio sería detectado por los nodos de la red.

Esta inversión en tiempo de procesado que tienen que hacer los mineros es lo que garantiza que los diferentes nodos lleguen a un consenso para decidir qué bloques son aceptados y cuáles son descartados en la cadena, y es a lo que se llama Proof of Work. Como hemos comentado anteriormente, antes de empezar a calcular el nonce para un nuevo bloque, los nodos comprueban que todas las transacciones de ese bloque sean correctas (por ejemplo, comprueban que no haya una transacción que ya se haya gastado en un bloque anteriormente aceptado). Además, el trabajo de validación de los mineros se extiende también a los bloques que han sido computados por otros mineros. Así, si un nodo malicioso intenta incorporar en la cadena de bloques un bloque con una transacción no válida, el resto de nodos no aceptarían el nuevo bloque como válido, y por lo tanto, lo volverían a intentar recomputar, con lo que el bloque no válido crearía una rama de la cadena de bloques que no tendría continuidad. Por el contrario, si los nodos aceptan un nuevo bloque como válido, entonces empezarán a computar un nuevo bloque que sea el siguiente en la cadena, dando validez al bloque ya computado y dando continuidad a esa rama de la cadena. Cada bloque nuevo que se añade a la cadena actúa de confirmación de que los bloques ya añadidos son válidos. Así, contra más adentro de la cadena esté incluido un bloque, más seguridad tendremos que el contenido que hay en él es válido. De forma estándar, se considera una transacción como confirmada si está incluida en un bloque que tiene al menos 6 confirmaciones.  

En este primer artículo sobre blockchain hemos dado un breve repaso técnico de cómo se construye una cadena de bloques como la de Bitcoin. Hemos dejado fuera de este artículo datos muy relevantes para la criptomoneda, como por ejemplo el mecanismo de firmas digitales que hace posible validar a los pagadores y receptores de las transacciones. Este tipo de mecanismos ya existían antes de blockchain, y en este artículo hemos querido centrarnos en la novedad que aporta el mecanismo de la construcción de bloques que hace posible la descentralización de sistemas que hasta el momento estaban fuertemente centralizados. En el siguiente artículo de esta serie intentaremos mirar más allá de Bitcoin y buscar otras aplicaciones que tengan blockchain como base.

 

Víctor Garcia-Font es investigador de la cátedra UOC-IBM en ciberseguridad.

 

Descentralitzant el món amb blockchain (I)

El proper 17 de maig, coincidint amb el Dia d’Internet i el Dia Mundial de les Telecomunicacions i la Societat de la Informació, es celebra el Congrés de Ciberseguretat UOC-Con. El congrés s’emmarca dins de les activitats de la Càtedra UOC-IBM de Ciberseguretat i del Màster Interuniversitari en Seguretat de les TIC de la UOC, UAB y URV. El propòsit del UOC-Con és promoure l’intercanvi de coneixement entre els membres de la comunitat de seguretat, donant així a conèixer els seus treballs i recerca en un entorn d’intercanvi d’idees. En aquesta edició, la temàtica del UOC-Con és el Blockchain i la Seguretat cognitiva (podeu trobar tota la informació i el formulari d’inscripció al següent enllaç: http://uoc-con.uoc.edu/)

En un post anterior, ja vam parlar de seguretat cognitiva. Avui us volem introduir la tecnologia del blockchain.

El blockchain ha anat guanyant popularitat entre els professionals de les noves tecnologies des de la seva aparició al 2008 com a part dels processos de gestió de la moneda criptogràfica Bitcoin. Com s’aprecia a la figura de sota, el terme “blockchain” ja ha superat en popularitat en les cerques a Google a un altre concepte tan popular com “Machine Learning” i està prop de “IoT”. A més, segons Techradar, blockchain és una de les 10 tecnologies a tenir en compte durant 2017.

Tendències. Font: Google Trends

Quan es parla de blockchain, sempre apareixen les mateixes tres preguntes: Què és blockchain?, Té alguna aplicació més enllà de Bitcoin?, És realment tan segur com ens ho venen? En aquesta sèrie d’articles sobre blockchain abordarem aquestes tres preguntes. Per començar intentarem respondre de manera senzilla a la primera, Què és blockchain?

Quan es parla de blockchain, se sol dir que mitjançant aquesta tecnologia es crea una mena de llibre de comptabilitat (ledger en anglès) electrònic. De manera simplificada, aquest llibre de comptabilitat es crea amb una cadena de blocs com la que es mostra a la figura de sota. La cadena d’exemple de la figura s’ha construït amb informació extreta del blockchain de Bitcoin.

Representació bàsica d’una part del blockchain de Bitcoin. (Font de dades: blockexplorer.com)

La manera en com es construeix la cadena fa que una vegada que una transacció s’ha registrat dins d’un bloc que s’ha inclòs a la cadena, la transacció ja no es pugui ni esborrar ni modificar. Per a fer això, la cadena es construeix de manera col·laborativa entre molts nodes d’una xarxa P2P. Amb això s’aconsegueix que no sigui necessari tenir una entitat centralitzada que doni fe del registre de dades, sinó que aquest mecanisme s’aconsegueixi gràcies al consens entre nodes de la xarxa. D’aquesta manera, la cadena actua com una mena de base de dades distribuïda on només es permeten insercions i lectures, però no actualitzacions.

Per entendre com es construeix la cadena, primer necessitem entendre el concepte de funció hash. Una funció hash (hash (x) = y) és un algoritme que retorna un valor (i.e. y) de mida fixa que pot considerar-se com un resum del valor d’entrada (i.e. x). La modificació del valor d’entrada, fins i tot el canvi d’un sol bit, donarà lloc a que la funció hash retorni un altre resum totalment diferent del resum anterior. Això fa que sigui impossible predir el resultat de l’execució de la funció, tan sols observant les dades d’entrada, sense executar-la. A més, una altra propietat interessant d’aquesta funció és que a partir d’un resum y, no existeix una funció inversa que ens permeti conèixer el valor x que ha donat resultat y.

Un cop entenem com funciona una funció hash, ja podem centrar-nos en intentar comprendre com es construeix una cadena de blocs. Per començar, quan un usuari vol registrar una transacció a la cadena, aquest l’envia a alguns dels nodes de la xarxa P2P. Aquests nodes, als que anomenem miners (miners en anglès), recullen diverses de les transaccions rebudes, comproven si són vàlides, i si ho són, les uneixen en un bloc com els que es poden veure a la figura anterior. Llavors cada miner inicia una computació molt costosa competint contra els altres miners per incloure el bloc que ell està computant a la cadena consensuada globalment per tots els nodes de la xarxa P2P. Aquesta costosa computació tracta de trobar un valor, que anomenem nonce, que s’inclou a la capçalera del bloc que s’està computant, juntament amb el hash del bloc anterior i un hash que representa totes les transaccions validades en el bloc, entre d’altres dades. La particularitat del nonce que ha de trobar el miner és que ha de ser un valor que en computar el hash de la capçalera del bloc, aquest hash sigui inferior a un valor especificat (per aquest motiu els hashos que veiem a la figura tenen molts 0s a l’inici). Com les funcions hash no tenen inversa i, per tant, no és possible especificar un valor resultant que compleixi aquesta característica i utilitzar aquesta funció inversa per computar el nonce, llavors l’única opció que queda és computar la funció hash provant amb molts nonce diferents fins a trobar un valor resultant del hash inferior al especificat. El temps necessari per a aquest còmput utilitzant un ordinador convencional seria de centenars d’anys, però tenint en compte que a la xarxa de Bitcoin hi ha milers de participants, molts d’ells amb màquines especialitzades per a aquest tipus d’algoritmes, de mitjana, cada nou bloc és computat per algun node de la xarxa cada 10 minuts. La inclusió del hash anterior en el nou bloc és el que protegeix a la cadena de qualsevol modificació, ja que si es modifiqués un bloc de la cadena, el seu hash canviaria i, per tant, el canvi seria detectat pels nodes de la xarxa.

Aquesta inversió en temps de processament que han de fer els miners és el que garanteix que els diferents nodes arribin a un consens per decidir quins blocs són acceptats i quins són descartats en la cadena, i és al que es coneix com a Proof of Work. Com hem comentat anteriorment, abans de començar a calcular el nonce per a un nou bloc, els nodes comproven que totes les transaccions d’aquest bloc siguin correctes (per exemple, comproven que no hi hagi una transacció que ja s’hagi gastat en un bloc anteriorment acceptat). A més, el treball de validació dels miners s’estén també als blocs que han estat computats per altres miners. Així, si un node maliciós intenta incorporar a la cadena de blocs un bloc amb una transacció no vàlida, la resta de nodes no acceptarien el nou bloc com a vàlid, i per tant, el tornarien a intentar recomputar, de manera que el bloc no vàlid crearia una branca de la cadena de blocs que no tindria continuïtat. Per contra, si els nodes accepten un nou bloc com a vàlid, llavors començaran a computar un nou bloc que sigui el següent en la cadena, donant validesa al bloc ja computat i donant continuïtat a aquesta branca de la cadena. Cada bloc nou que s’afegeix a la cadena actua de confirmació que els blocs ja afegits són vàlids. Així, contra més endins de la cadena estigui inclòs un bloc, més seguretat tindrem que el contingut que hi ha en ell és vàlid. De forma estàndard, es considera una transacció com a confirmada si està inclosa en un bloc que té com a mínim 6 confirmacions.

En aquest primer article sobre blockchain hem donat un breu repàs tècnic de com es construeix una cadena de blocs com la de Bitcoin. Hem deixat fora d’aquest article dades molt rellevants per a la criptomoneda, com ara el mecanisme de signatures digitals que fa possible validar els pagadors i receptors de les transaccions. Aquest tipus de mecanismes ja existien abans de blockchain, i en aquest article hem volgut centrar-nos en la novetat que aporta el mecanisme de la construcció de blocs que fa possible la descentralització de sistemes que fins al moment estaven fortament centralitzats. En el següent article d’aquesta sèrie intentarem veure més enllà de Bitcoin i buscar altres aplicacions que tinguin blockchain com a base.

 

Víctor Garcia-Font és investigador de la càtedra UOC-IBM en ciberseguretat.

La confianza en la gestión de programas y proyectos (y II)

En la primera parte de esta entrada, explorábamos la dificultad de gestionar el cambio y asegurar la implantación y el uso de la informática en proyectos y programas complejos, mientras pedíamos a los espónsores, los líderes y gestores de proyectos reconocer la naturaleza política de esta clase de esfuerzos, emplear tiempo e inteligencia en el análisis y la intervención, establecer relaciones de confianza y utilizar metodologías ágiles.

El Padrino: Keep your friends close, but enemies closer.

Alrededor de los años 2000, diferentes autores, como Kumar y colegas, MarkusWard, Esteves y Pastor, han estudiado esta situación en la implantación de ERPs. En esta clase de proyectos, parece posible establecer una aproximación racional y de arriba abajo en organizaciones jerarquizadas que persiguen objetivos operacionales de mejora del rendimiento bien conocidos. También es posible negociar y llegar a acuerdos si las partes tienen poderes equivalentes y se conocen bien los intereses de cada lado. Cuando todo ésto no ocurre (y muchas veces en las que ocurre), las relaciones personales y la creación de confianza son una mejor estrategia para manejar la incertidumbre, la negociación y el conflicto; aunque es probable, dicen las evidencias, que el alcance y los beneficios deban reducirse: será posible obtener acuerdos sobre menos cosas y de menos impacto.

Más recientemente se han realizado análisis de programas de transformación de IT más complejos. Gregory y otros han acuñado el concepto de ambidexterity, como la combinación de acciones entre el corto y el largo plazo, el enfoque directivo y el colaborativo y la gestión de beneficios locales (sobre cada proyecto) y globales (sobre el programa en conjunto). En los momentos de planificación y diseño, parece preferible una aproximación racional y directiva (“ésto es lo que hay que hacer”), mientras que en el proceso de despliegue e implantación, es imprescindible pactar y tener paciencia (“ésto es lo que se puede hacer ahora”). Esta es la naturaleza del trabajo ejecutivo en la gestión de IT; se gana con la experiencia y la reflexión, pero pocas veces es consciente y analítico.

El análisis convencional de interesados, propio de la gestión canónica de proyecto y que presentábamos en la entrada anterior, suele relacionar dos dimensiones: el nivel de influencia que tiene cada parte sobre el resultado del proyecto y su nivel de adherencia o animadversión hacia el cambio propuesto. Los más favorables y con mayor influencia son nuestros amigos y debemos hacerlos campeones y  modelos del cambio. Es verdad, pero ¿qué pasa si no confían en nosotros? Y, sobre todo, ¿qué podemos hacer con los demás?

La confianza es la base de la formación de alianzas o coaliciones. Es más importante la confianza que el control, que ha sido la obsesión de la gestión de proyectos tradicional.

Tradicionalmente, se ha discutido si debemos tener a los enemigos influyentes cerca o lejos. La verdad es que, como no podemos acabar con ellos, es preferible tenerlos lo más cerca posible, como recomendaba El Padrino. Los mejores aliados son aquellos que fueron enemigos y se han convertido; son también los más activos para convertir a otros (en la investigación de Aronson y colegas). Y, si eso no es posible, los enemigos son, al menos, más previsibles y dan menos trabajo.

En cambio, los estudios (por ejemplo, Uchino y otros) llaman la atención sobre el peligro de los amigos-enemigos, los frenemies o ambivalentes. No son de fiar y producen estrés y una dedicación poco productiva; mantengámoslos lejos.

Las buenas coaliciones no suelen formarse porque se compartan intereses o como resultado de una negociación racional. La gente se une porque comparte un por qué (la necesidad de cambiar), un relato (el famoso frame) y un método (el sentido del cambio, la no menos famosa hoja de ruta); aunque pueda discrepar sobre los objetivos, que, además, frecuentemente son inciertos o imprevisibles para todos. La gente se une porque “se fía” del otro antes o durante o después de todo ésto.

Así ocurre en la dirección de IT  y en la gestión de proyectos y programas. Y en realidad, esta aproximación, enunciada de diferentes maneras, es la que propone la gestión ágil de proyectos o de cualquier cosa y a cualquier escala.

La confianza en la gestión de programas y proyectos (I)

Hemos intentado decir cosas aquí de la gestión del cambio, que sean un poco diferentes de los manuales y la formación de usuario que proponen el saber popular y las consultoras. El objetivo de la gestión del cambio es la adopción por la organización de los beneficios de la tecnología y eso tiene que ver, en buena medida, con el poder, las relaciones y los intereses. La gestión del cambio es más importante en programas y proyectos complejos. Hemos intentado mostrar que no es un contenido opinático, tertuliano o del sentido común, sino que se trata también de una prescripción técnica (aunque no sea de la clase de técnica de un algoritmo): o sea que el cambio se puede analizar y se pueden medir y diseñar y ejecutar intervenciones que tengan sentido y sean evaluables.

GRAFICA: Cédula real borbónica.

Imagen de la exposición de la Hispanic Society en el Museo del Prado tomada por el autor.

Los estándares de gestión de proyectos y programas, como el PMI, han ido concediendo mayor importancia al manejo de los interesados (stakeholders), pero en la práctica continúa siendo mayormente una cuestión de cartografiar los riesgos y comunicar y distribuir información.

La gestión de programas se basa en la realización efectiva de beneficios (benefits management) para la empresa y desde esta perspectiva se puede hilar más fino. Dicen Daniel y Ward: “Mientras que el análisis y la gestión de interesados se puede considerar una parte de la evaluación de riesgos, su valor real reside en anticipar y determinar las acciones necesarias para atender los temas de los interesados tan pronto como sea posible en el proyecto.”

Los proyectos que involucran organizaciones profesionales complejas como la sanidad, los despachos de abogados, las orquestas sinfónicas o la universidad presentan retos especiales de gestión del cambio. Los nuevos proyectos que se desarrollan en entornos globales, que involucran diferentes  organizaciones, los que producen plataformas o iniciativas de comercio electrónico en sus múltiples variantes, las iniciativas de innovación multicéntricas… han puesto otra vez de manifiesto las insuficiencias de los líderes para manejar la complejidad.

La mayor parte de los programas  y proyectos complejos se desenvuelven en la ambigüedad y la incertidumbre. Lo es el resultado, que no se puede visualizar con claridad meridiana y no son “soluciones”, un proyecto complejo no tiene una solución; lo son también los intereses y las relaciones de poder. Pero hay líderes y jefes de proyecto perezosos y renuentes a emplear en este análisis un poco de la atención que le dedican a cualquier otra cosa dentro de los proyectos. Dice Jeffrey Pinto que los jefes de proyecto se resisten a reconocer la naturaleza política de los proyectos complejos.

Tendemos a pensar en las relaciones de poder como un continuo de suma cero: o sea, si yo tengo más poder, el otro tiene menos. Decía Richard Emerson: “El poder de A sobre B es la cantidad de resistencia de B que A puede vencer”. Si es así, el problema es de cálculo casi militar. Los proyectos más exitosos serían aquellos en los que se puede imponer a otros directivos y usuarios una manera de hacer las cosas; los proyectos más exitosos ocurren  entonces en las burocracias jerárquicas. Los informáticos apelan a la “involucración de la alta dirección” como la purga de Benito. Si “involucramos a la alta dirección” todo irá bien. A veces pasa, no diré que no, pero en general las cosas son más complicadas.

La investigación empírica en gestión de proyectos y las contribuciones de la psicología industrial están ayudando a establecer modelos de gestión del cambio más sofisticados. Lo que se viene a decir es que :

  • según la naturaleza del problema o del proyecto, la clase de beneficios que se quiere conseguir y la tipología y la “cultura” de la  organización u organizaciones, tienen sentido diferentes estrategias de intervención
  • que la ahora famosa “gobernanza” es una cuestión de confianza, o sea gente que confía la una en la otra.
  • que las metodologías ágiles funcionan mejor porque manejan mejor esta complejidad y se basan más y mejor en la confianza, en vez de en el control.

No hay soluciones mágicas, pero en la segunda parte de la entrada, veremos algunos criterios y guías de uso.

 

 

 

 

Computación cuántica (III): de los qubits a los computadores cuánticos

La unidad de información en el mundo cuántico es el qubit (del inglés “quantum bit”). Un qubit puede tener los estados 0 y 1, pero a diferencia de los bits clásicos, también puede tener una superposición de estos estados. Siendo poco rigurosos, podemos ver estas superposiciones como estados intermedios entre 0 y 1 (en realidad, son combinaciones de dichos valores).

Qubit de IBM implementado mediante bobinas superconductoras. Fuente: Flickr (IBM Research). Licencia: CC BY ND 2.0

Qubit desarrollado por IBM mediante el uso de bobinas superconductoras. Fuente: Flickr (IBM Research). Licencia: CC BY ND 2.0

Para construir un computador cuántico, es necesario resolver diversos retos técnicos, el primero de los cuales es: ¡cómo “construir” un qubit!. Además, hay que representar los qubits, operar con ellos, definir el valor inicial de los qubits al inicio del cálculo y medir el resultado final. Es decir, el qubit deberá corresponder a alguna propiedad física de una partícula, y todas las manipulaciones sobre los qubits deberán poder realizarse alterando dicha propiedad de alguna forma. Además, deberá ser posible fijar un valor concreto para dicha propiedad (para inicializar los qubits) y medir dicha propiedad para obtener el resultado al final del cálculo.

Fijémonos en la paradoja que todo esto comporta. Por un lado, necesitamos disponer de un control muy preciso sobre las propiedades que se usan para codificar los qubits; pero por otro, también nos interesa que nuestro computador esté lo más aislado posible, para garantizar que dichas propiedades no son alteradas por interferencias externas. Estas interferencias, denominadas ruido cuántico, nunca pueden eliminarse del todo al tratarse de fenómenos a escala subatómica. Por eso, es necesario disponer de mecanismos de redundancia para garantizar la fiabilidad del resultado, igual que se usan códigos correctores de errores para detectar y/o reparar errores de comunicación. Este punto es especialmente importante, ya que la probabilidad intrínseca a la mecánica cuántica hace que el resultado no sea determinista y a menudo se puede leer en algunas revistas científicas que se ha conseguido el resultado correcto en un cierto tanto por ciento de los intentos.

Chip construido por D-Wave Systems, fabricante de computadores cuánticos. Fuente: Wikipedia. Licencia: CC BY 3.0

Chip construido por D-Wave Systems, fabricante de computadores cuánticos. Fuente: Wikipedia. Licencia: CC BY 3.0

Existen diferentes tecnologías que permiten resolver este rompecabezas. Una de ellas es la trampa iónica: usar iones capturados en un tubo al vacío mediante campos eléctricos o magnéticos; otra es el uso de uniones Josephson: bobinas superconductoras con una capa aislante de óxido de aluminio entre ellas, que tienen la característica, dicho burdamente, de crear una corriente cuantizada; pero también las hay más “visibles”, como la que usa la polarización de fotones (esta tiene especial gracia por recordar los computadores ópticos en los que tanto se trabajaba y que tanto prometían a finales del s.XX). Como puede verse, son aproximaciones muy diferentes, cada una con sus ventajas e inconvenientes.

Hoy en día no está claro qué tecnología acabará imponiéndose. Algunos factores que serán determinantes para ello serán el coste de fabricación, la posibilidad de preservar el estado cuántico durante un periodo prolongado de tiempo y la escalabilidad, es decir, la posibilidad de construir computadores que utilicen un número elevado de qubits simultáneamente. Este último aspecto, la escalabilidad, es determinante para poder realizar cálculos complejos y no es trivial: puede volverse mucho más complicado conservar de forma estable (y manipular) el estado cuántico al incrementarse el número de qubits.

Actualmente, los computadores cuánticos que se han desarrollado no han pasado de ser prototipos entre los 5 qubits (IBM, 2016) o los 9 qubits (Google, 2016). Sin embargo, éste parece ser el año de la revolución en la computación cuántica, con empresas como Google y IBM (IBM Q) prometiendo computadores de 50 qubits en 2017. Este número de qubits debería permitir a estos ordenadores alcanzar la “supremacía cuántica”: realizar un cálculo más allá del alcance de cualquier otro ordenador convencional.

Y esto es sólo el principio. Factorizar un número de 768 bits usando el algoritmo de Shor requiere 1.154 qubits, por lo que todavía estamos lejos de “romper” RSA en la práctica. Pero es posible plantearse la existencia de computadores cuánticos de 1 millón de qubits en un plazo de 10 años. La capacidad de cálculo de estos ordenadores podría revolucionar múltiples campos de la ciencia y la ingeniería, así como cambiar el futuro de la informática.

Robert Clarisó es profesor de los Estudios de Informática, Multimedia y Telecomunicación y director del Máster Universitario en Ingeniería Informática. Su actividad docente se centra principalmente en los ámbitos de computación y desarrollo para móviles.

Antoni Pérez Navarro es profesor de los Estudios de Informática, Multimedia y Telecomunicación de la UOC, donde es el responsable de las asignaturas de Física y de las de Sistemas de Información Geográfica.

Computación cuántica (II): un nuevo paradigma

El modelo actual de ordenador no es el único posible. Existen otros paradigmas para diseñar un ordenador que son radicalmente diferentes al modelo “convencional”.

Un potencial cambio de paradigma se refiere a la electrónica digital: los ordenadores representan la información de forma discreta, usualmente con los valores 0 o 1. Para hacerlo, se consideran dos niveles de voltaje: el nivel “tierra” (0) y el voltaje proporcionado por la fuente de alimentación (1), con un cierto margen de tolerancia para cada nivel. A partir de estos valores pueden realizarse operaciones lógicas (las definidas en el álgebra de Boole, como AND, OR o NOT), que en la práctica se implementan como puertas lógicas mediante transistores que transmiten o bloquean el voltaje para reflejar el resultado de la operación.

Pero también hay dispositivos que utilizan un modelo de computación analógica, donde la información se almacena como una magnitud continua: no hay rangos de valores discretos (entre A y B, el valor es X), sino que se utiliza el valor completo de una magnitud. El uso de valores continuos introduce el problema del ruido: fluctuaciones imprevistas que pueden distorsionar este valor y que limitan el rango de valores observables y la precisión. Este problema también aparece en la electrónica digital, pero se resuelve con los márgenes de tolerancia definidos para cada nivel de voltaje. Cabe destacar que esta magnitud puede ser el voltaje en un cable, pero también podrían ser magnitudes mecánicas (p.ej. la contracción de un muelle elástico) o hidráulicas.

MONIAC, una computadora analógica de flujos monetarios que funciona mediante... agua. Fuente: Wikpedia. Licencia: Dominio público

MONIAC, una computadora analógica de flujos monetarios creada en 1949 y que calcula mediante… agua. Fuente: Wikipedia. Licencia: Dominio público

Así pues, no es necesario limitarse a propiedades electrónicas para implementar un ordenador: es posible cambiar a un paradigma basado en otras propiedades físicas. Y aquí es donde entra en juego la física cuántica.

La física cuántica es una rama de la Física que estudia las propiedades de la materia y la energía a escala subatómica. Un tema importante que hay que destacar es que no podemos tomar como referencia la mecánica clásica: a una escala subatómica, las leyes de la física se comportan de forma poco intuitiva. Por ejemplo, resulta difícil de entender que algo pueda describirse simultáneamente como una partícula o como una onda, o que sea imposible “copiar” el estado cuántico de una partícula a otra sin modificar el estado de la primera.

La física cuántica en relación con otros campos de la física. Fuente: Wikipedia. Licencia: CC BY-SA 3.0

La física cuántica en relación con otros campos de la física. Fuente: Wikipedia. Licencia: CC BY-SA 3.0

Entonces, ¿por qué motivo interesa tanto aplicar la cuántica al ámbito de la computación? El motivo es que teóricamente se ha demostrado que la computación cuántica permite resolver de forma eficiente algunos problemas complejos  cuya mejor solución conocida tiene un coste exponencial respecto al tamaño de la entrada. Por ejemplo:

  • El algoritmo de Shor permite descomponer un número entero N en sus factores primos en tiempo polinómico respecto al número de bits de N. Este resultado permitiría romper el criptosistema de clave pública RSA, cuya seguridad se basa en la dificultad de factorizar números enteros grandes.
  • Dada una función (que para nosotros es una caja negra) y una salida para dicha función, el algoritmo de Grover permite calcular cuál es la entrada que produce esa salida determinada. Si hay N entradas posibles, este cálculo se realiza en un tiempo proporcional a raíz cuadrada de N. Es decir, ¡no es necesario probarlas todas!

A parte de resolver este tipo de cálculos, los ordenadores cuánticos permiten simular ciertos procesos físicos de forma muy eficiente. Esta simulación cuántica puede llevar a avances en química, el diseño de nuevos materiales o de nuevos fármacos. Por otro lado, los principios de la física cuántica permiten diseñar nuevos sistemas criptográficos, permitiendo por ejemplo un intercambio de claves seguro. Estos criptosistemas cuánticos tiene la ventaja de no estar basados en la complejidad computacional de un problema (como pasa en criptosistemas como RSA) sino en propiedades físicas, por lo que no son susceptibles de ser “rotos” aunque se utilice para ello un computador cuántico.

Robert Clarisó es profesor de los Estudios de Informática, Multimedia y Telecomunicación y director del Máster Universitario en Ingeniería Informática. Su actividad docente se centra principalmente en los ámbitos de computación y desarrollo para móviles.

Antoni Pérez Navarro es profesor de los Estudios de Informática, Multimedia y Telecomunicación de la UOC, donde es el responsable de las asignaturas de Física y de las de Sistemas de Información Geográfica.