Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...

Página creada Lucas Parienti
 
SEGUIR LEYENDO
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
Sistema de autenticación basado
en blockchain para la gestión de
billetes en un entorno de
transporte inteligente

                  Máster Universitario en Ciberseguridad

Trabajo Fin de Máster
Autor:
ADRIÁN MONTOYA ROS
Tutor/es:
ANTONIO ZAMORA GÓMEZ
Septiembre 2021
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
1
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
Justificación y objetivos
Durante el desarrollo de mi Trabajo de Fin de Grado “Estudio y aplicación de sistemas
de votación basados en tecnologı́a BLOCKCHAIN ” me encontré con un requisito fun-
damental: la identificación de los usuarios que acceden al sistema; para ello realicé una
investigación extensa sobre como poder incorporar este requisito al sistema de votación,
descubriendo que existen redes blockchain orientadas exclusivamente a esta tarea. Por
motivos de simplicidad, implementé este requisito empleando un SaaS (Software as a
Service) de la empresa Trinsic.id que utiliza, por debajo, una red pública blockchain
orientada a la identidad. Todo esto me resultó muy llamativo e interesante, queriendo
investigar y profundizar más acerca del tema.

Este Trabajo de Fin de Máster me ha dado la oportunidad de satisfacer esa curiosidad
que quedó latente con el Trabajo de Fin de Grado, siendo la idea principal profundizar
y ampliar el conocimiento sobre estas redes blockchain orientadas a la identificación;
descubriendo como funcionan, cual es su nivel de seguridad, cuales son los beneficios y
problemas que aportan y cómo pueden ser utilizadas para poder solventar los problemas
que los sistemas de identificación tienen actualmente.

                                            2
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
3
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
Agradecimientos
En primer lugar, me gustarı́a darle las gracias a mi tutor, Antonio Zamora Gómez,
por toda la ayuda a lo largo del desarrollo de este proyecto.

Me gustarı́a también dedicar unas lineas a todos mis compañeros durante estos años,
tanto del Grado de Ingenierı́a Informática como del Máster de Ciberseguridad, en es-
pecial a Eddie Rodrı́guez, Rafael Soria, Manuel Alberola, Silvia Veguillas y Jasmina Rais.

Por último y no menos importante, a mi madre. Por permitirme estudiar aquello que al
principio me gustaba y ahora me apasiona, pero sobre todo por el apoyo incondicional
que ha sido muy útil.

                                            4
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
5
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
Índice
Índice de figuras                                                                        10

1. Introducción                                                                          14

2. Identidad                                                                              16
   2.1. La era de las contraseñas . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
        2.1.1. Problemas de seguridad . . . . . . . . . . . . . . . . . . . . . . . . 19
        2.1.2. Evolución y soluciones . . . . . . . . . . . . . . . . . . . . . . . . . 21
   2.2. Identidad como servicio - IDaaS . . . . . . . . . . . . . . . . . . . . . . . . 26
        2.2.1. OAuth 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
        2.2.2. Token . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
        2.2.3. JSON Web Token - JWT . . . . . . . . . . . . . . . . . . . . . . . 28
        2.2.4. Autoridad Certificadora . . . . . . . . . . . . . . . . . . . . . . . . 30
   2.3. El futuro de la identidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
        2.3.1. Blockchain IDaaS      . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
        2.3.2. Identidad digital y Auto-Soberana . . . . . . . . . . . . . . . . . . 31
        2.3.3. Identificadores descentralizados . . . . . . . . . . . . . . . . . . . . 31
        2.3.4. Credenciales verificables . . . . . . . . . . . . . . . . . . . . . . . . 32

3. Blockchain                                                                             33
   3.1. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
        3.1.1. ¿Qué es una cadena de bloques? . . . . . . . . . . . . . . . . . . . 33
        3.1.2. Criptografı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
        3.1.3. Red descentralizada . . . . . . . . . . . . . . . . . . . . . . . . . . 36
        3.1.4. Wallets o monederos . . . . . . . . . . . . . . . . . . . . . . . . . . 40
        3.1.5. Otras redes Blockchain      . . . . . . . . . . . . . . . . . . . . . . . . 41
        3.1.6. Contratos inteligentes . . . . . . . . . . . . . . . . . . . . . . . . . 44
   3.2. Tipos de Blockchain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
   3.3. Hyperledger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
        3.3.1. Hyperledger Indy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
        3.3.2. Hyperledger Aries . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
        3.3.3. Hyperledger Ursa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
   3.4. La red Sovrin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

                                             6
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
4. Prototipo                                                                             56
   4.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
   4.2. Descripción del prototipo . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
   4.3. WEB1: Gobierno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
        4.3.1. Identificador descentralizado . . . . . . . . . . . . . . . . . . . . . 58
        4.3.2. Configurar la credencial . . . . . . . . . . . . . . . . . . . . . . . . 59
        4.3.3. Emisión de credenciales . . . . . . . . . . . . . . . . . . . . . . . . 60
   4.4. WEB2: Sanidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
        4.4.1. Identificador descentralizado . . . . . . . . . . . . . . . . . . . . . 62
        4.4.2. Configurar la credencial . . . . . . . . . . . . . . . . . . . . . . . . 63
        4.4.3. Emisión de credenciales . . . . . . . . . . . . . . . . . . . . . . . . 64
   4.5. WEB3: Trenfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
        4.5.1. Identificador descentralizado . . . . . . . . . . . . . . . . . . . . . 66
        4.5.2. Rutas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
        4.5.3. Prueba de credencial . . . . . . . . . . . . . . . . . . . . . . . . . . 68
        4.5.4. Configurar la credencial . . . . . . . . . . . . . . . . . . . . . . . . 70
        4.5.5. Emisión de billete . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
        4.5.6. Comprobación del billete . . . . . . . . . . . . . . . . . . . . . . . 72
   4.6. WEB4: Airberia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
        4.6.1. Identificador descentralizado . . . . . . . . . . . . . . . . . . . . . 75
        4.6.2. Rutas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
        4.6.3. Prueba de credencial . . . . . . . . . . . . . . . . . . . . . . . . . . 77
        4.6.4. Configurar la credencial . . . . . . . . . . . . . . . . . . . . . . . . 79
        4.6.5. Emisión de billete . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
        4.6.6. Comprobación del billete . . . . . . . . . . . . . . . . . . . . . . . 81
   4.7. Wallet móvil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

5. Resultados                                                                            86

Bibliografı́a                                                                            88

                                             7
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
8
Sistema de autenticación basado en blockchain para la gestión de billetes en un entorno de transporte inteligente - Máster Universitario en ...
9
Índice de figuras
  1.    Estructura ARPANET - Abril 1971 . . . . . . . . . . . . . . . . . . . . . 14
  2.    Relación entre HTTP, HTML y URL . . . . . . . . . . . . . . . . . . . 15
  3.    Evolución del número de páginas web . . . . . . . . . . . . . . . . . . . . 16
  4.    Proceso de registro e inicio de sesión . . . . . . . . . . . . . . . . . . . . . 18
  5.    Nombre de la cookie según la tecnologı́a del servidor . . . . . . . . . . . . 19
  6.    Lista de webs con brechas de seguridad      . . . . . . . . . . . . . . . . . . . 20
  7.    Comparativa entre cifrado y funciones resumen . . . . . . . . . . . . . . . 22
  8.    Ejemplo sistema con conocimiento cero . . . . . . . . . . . . . . . . . . . . 24
  9.    Diagrama TOTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
  10.   Diagrama OAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
  11.   Diagrama JWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
  12.   Esquema DID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
  13.   Esquema Credenciales verificables . . . . . . . . . . . . . . . . . . . . . . . 32
  14.   Estructura de un bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
  15.   La cadena de bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
  16.   Esquema árbol Merkle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
  17.   Esquema red P2P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
  18.   Prueba de trabajo Bitcoin . . . . . . . . . . . . . . . . . . . . . . . . . . 38
  19.   Pasos creación de bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
  20.   Estructura bloque Ethereum . . . . . . . . . . . . . . . . . . . . . . . . . 42
  21.   Funcionamiento contrato inteligente Kickstarter . . . . . . . . . . . . . . 45
  22.   Mapa de proyectos Hyperledger . . . . . . . . . . . . . . . . . . . . . . . 47
  23.   Esquema RBFT de 3 fases . . . . . . . . . . . . . . . . . . . . . . . . . . 48
  24.   Ejemplo esquema de credenciales . . . . . . . . . . . . . . . . . . . . . . . 49
  25.   Ejemplo identificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
  26.   Esquema emitir una credencial . . . . . . . . . . . . . . . . . . . . . . . . 51
  27.   Esquema solicitar una credencial . . . . . . . . . . . . . . . . . . . . . . . 52
  28.   Diagrama relacional Hyperledger Indy, Aries y Ursa . . . . . . . . . 53
  29.   Logotipo Sovrin - Fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
  30.   Diagrama del prototipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
  31.   Identificador DID de la WEB1 en la red Sovrin          . . . . . . . . . . . . . 58
  32.   Schema credencial WEB1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
  33.   credential definition credencial WEB1 . . . . . . . . . . . . . . . . . . . . 59
  34.   Ejemplo QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

                                            10
35.   Aceptar credencial DNI SSI . . . . . . . . . . . . . . . . . . . . . . . . . 61
36.   Identificador DID de la WEB2 en la red Sovrin          . . . . . . . . . . . . . 62
37.   Schema pasaporte COVID . . . . . . . . . . . . . . . . . . . . . . . . . . 63
38.   Credential definition pasaporte COVID . . . . . . . . . . . . . . . . . . . 63
39.   Ejemplo QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
40.   Aceptar pasaporte COVID SSI . . . . . . . . . . . . . . . . . . . . . . . 65
41.   Identificador DID de la WEB3 en la red Sovrin          . . . . . . . . . . . . . 66
42.   ProofRequest para solicitar credencial DNI SSI       . . . . . . . . . . . . . . 68
43.   Aceptar
      presentación DNI SSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
44.   Schema billete Trenfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
45.   Credential definition billete Trenfe . . . . . . . . . . . . . . . . . . . . . . 71
46.   Ejemplo QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
47.   Aceptar billete Trenfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
48.   ProofRequest para solicitar billete Trenfe . . . . . . . . . . . . . . . . . . 73
49.   Aceptar presentación billete Trenfe . . . . . . . . . . . . . . . . . . . . . 74
50.   Identificador DID de la WEB4 en la red Sovrin          . . . . . . . . . . . . . 75
51.   ProofRequest para solicitar credencial DNI SSI       . . . . . . . . . . . . . . 77
52.   Aceptar
      presentación DNI SSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
53.   Schema billete Airberia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
54.   Credential definition billete Airberia . . . . . . . . . . . . . . . . . . . . 80
55.   Ejemplo QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
56.   Aceptar billete Airberia . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
57.   ProofRequest billete Airberia y pasaporte COVID SSI           . . . . . . . . . 82
58.   Aceptar presentación billete Airberia y pasaporte COVID SSI . . . . . 83
59.   Menú principal APP Trinsic.id . . . . . . . . . . . . . . . . . . . . . . . 84
60.   Pestaña credentials APP Trinsic.id . . . . . . . . . . . . . . . . . . . . . 85

                                         11
12
13
1.      Introducción
El estilo de vida de los seres humanos ha sufrido grandes alteraciones a lo largo de la
historia, pero sin duda una de las más importantes se debe a la computación, afectando
a la forma de trabajar, al entretenimiento e incluso a la forma de relacionarse social-
mente. Pero para que esta alteración se produjese y maximizar su impacto, era también
necesario una forma de comunicación entre los dispositivos: Internet.

Esta interconexión de dispositivos provocó que se inventará años más tarde la WEB,
un conjunto de tecnologı́as que permitı́an a determinados dispositivos ofrecer contenido
o información a través de Internet. La irrupción de los dispositivos móviles inteligentes
o smartphones también han contribuido a este cambio de estilo de vida, permitiendo
llevar un ordenador y conexión a Internet en el bolsillo, dando lugar también a un nue-
vo producto software exclusivo denominado APPs. De hecho, y gracias a todo esto,
existe un nuevo mercado económico que se basa precisamente en ofrecer servicios a los
usuarios, dando lugar a plataformas de streaming de vı́deo como Youtube, Twitch o
Netflix, páginas web de tiendas como Mediamarkt o Amazon, páginas web de transpor-
te como Renfe o Iberia, e incluso páginas web gubernamentales como Agencia Tributaria.

Pero, ni internet ni los servidores web fueron desarrollados teniendo en cuenta esta for-
ma de uso. En primer lugar, Advanced Research Projects Agency NETwork, abreviado
como ARPANET, fue la primera red de computadoras construida en 1969 en EEUU,
con el objetivo de enviar datos militares y conectar principales grupos de investigación.
Observando la Figura 1, se trataba de una red de pocos dispositivos bien identificados.

                   Figura 1: Estructura ARPANET - Abril 1971 - Fuente1

  1
      https://www.xataka.com/historia-tecnologica/mapa-arpanet

                                                14
Esta red fue aumentado el número de dispositivos paulatinamente e incorporó nuevas
tecnologı́as, como por ejemplo File Transfer Protocol o FTP en 1971, facilitando el
movimiento de ficheros en ARPANET, o el protocolo TCP/IP en 1983. Gracias a
este último se produjo una estandarización, dando más tarde lugar a la red global que
actualmente se conoce como Internet.

Sin duda alguna, uno de los servicios más caracterı́sticos de internet es World Wi-
de Web, WWW o ((web)). Su origen se remonta a principios de la década de los 90,
cuando el desarrollador Timothy John Berners-Lee se percató que muchos proyectos del
CERN se encontraban dispersos por el planeta, y debı́an iniciar sesión en diferentes dis-
positivos para acceder a ellos. Por esto, él propuso a los gerentes del CERN desarrollar
un sistema de gestión de información, que en primer lugar no fue aceptada, pero que
gracias a la asociación con Robert Cailliau, se perfiló la propuesta y finalmente se le con-
cedió un plazo de desarrollo. El resultado, 3 tecnologı́as: HyperText Markup Language o
HTML, HyperText Transfer Protocol o HTTP y Uniform Resource Locator o URL.

HTML es un lenguaje de marcado que determina la estructura y el contenido de una
página web, siendo interpretado por el navegador web. El protocolo HTTP se encarga
de solicitar y servir este tipo de información. Por último, URL se emplea para la direc-
ción única y especı́fica que se asigna a cada uno de los recursos disponibles de la World
Wide Web, para que puedan ser localizados por el navegador.

                 Figura 2: Relación entre HTTP, HTML y URL - Fuente2

Como se puede observar en la Figura 2, Internet y la web no incorporan ningún meca-
nismo que tenga en cuenta la identidad del usuario que se encuentra utilizándolo, por
lo que cuando su uso se masificó y las empresas empezaron a vender servicios, tuvieron
estas que implementar por su cuenta una forma de identificar a los usuarios.
  2
      https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/protocolo-http/

                                                   15
2.    Identidad
Un año después de la invención de ((la web)), aparece la primera web de la historia. Se
trata de la página web del CERN la cual todavı́a es accesible3 . El auge de esta tecno-
logı́a fue espectacular, tal y como se aprecia en la Figura 3, y en tan solo un par de años
ya se habı́a alcanzado el millón de páginas webs.

               Figura 3: Evolución del número de páginas web - Fuente4

A finales de la década de los 90 se produjo ((la burbuja punto-com))5 . Algunos gigantes
tecnológicos muy populares en la actualidad comienzan a ofrecer servicios a los usuarios
a través de Internet en esa época, como por ejemplo Google, Paypal o Amazon. Pero
para ofrecer un servicio exclusivo a un cliente es muy importante saber diferenciarlo de
otro, y para ello se recurre al concepto de identidad.

  3
    http://info.cern.ch/hypertext/WWW/TheProject.html
  4
    https://www.internetlivestats.com/total-number-of-websites/
  5
    https://medium.com/the-investors-handbook/the-dot-com-bubble-burst-46cf6b27fd9d

                                              16
- Definición de identidad

Según la Real Academia Española, la palabra identidad tiene diversas acepciones, entre
las que destaca la siguiente:

       “Conjunto de rasgos propios de un individuo o de una colectividad que los carac-
       terizan frente a los demás.”

Esta definición se emplea tanto en el mundo digital como en el mundo real, aunque sus
implementaciones son muy diferentes.

- Proceso de identificación

En el mundo real, si se requiere una identificación frente a un policı́a o en un deter-
minado servicio, se suele recurrir a mostrar el documento de identidad oficial, como por
ejemplo el DNI o Pasaporte. Este documento, ha sido expedido por el Estado, entidad
del que todas las partes confı́an, por lo que se trata de un documento válido.

Sin embargo, el proceso clásico de identificación en la web es completamente distin-
to. La web es la que almacena determinada información del usuario, y el usuario el que
debe demostrar su identidad enviando dicha información. El ejemplo más común es el
uso de contraseñas.

2.1.    La era de las contraseñas
El primer jueves de marzo se celebra el dı́a mundial de la contraseña. Fue declarado
ası́ por el equipo de seguridad de Intel, basándose en las recomendaciones que Mark
Burnett, investigador de seguridad, publicó en su libro Perfect Passwords de 2005, con
el objetivo de que una vez al año los usuarios cambiasen las contraseñas más crı́ticas.

Pero realmente el concepto de contraseña se remonta hace muchos años, incluso se
podrı́a remontar a la antigua Roma. Se considera a Fernando Corbató como el padre
de la contraseña informática moderna, ya que en 1960, cuando trabajaba en el MIT,
la universidad habı́a desarrollado un sistema de almacenamiento de ficheros primitivo,
denominado Compatible Time-Sharing System o CTSS, al que todos los investigadores
tenı́an acceso y compartı́an una unidad de disco. Para añadirle privacidad a los ficheros
y que solo sus dueños pudiesen acceder, se desarrollo el concepto de contraseña.

                                            17
Este método fue y sigue siendo el más extendido en la actualidad, su funcionamiento es
muy sencillo y esta detallado en la Figura 4. En primer lugar el usuario debe registrarse
en el sitio web en cuestión, para ello rellenará un formulario de inscripción indicando un
usuario y contraseña, junto con cualquier otro dato que la web considere imprescindible.
Cabe destacar que normalmente como usuario se hace referencia a una dirección de co-
rreo electrónico. El proceso autenticación es bastante similar, pues el usuario solo tendrá
que indicar el usuario y contraseña. Si estos datos coinciden con los datos almacenados
por la web en su base de datos, el inicio de sesión, y por ende la autenticación, será
exitoso.

                         Figura 4: Proceso de registro e inicio de sesión

El proceso se repite para cada una de las webs en las que el usuario este interesado
apuntarse, y cada web almacenará la información relativa al usuario que considere. Por
ejemplo Facebook, la red social más utilizada en el mundo6 , podrı́a almacenar mucha
información personal, Linkedin, una red social orientada al trabajo, almacenará infor-
mación laboral, mientras que por ejemplo Netflix, una plataforma de vı́deo en streaming,
almacenará poca información personal pero añadirá información sobre un método de pa-
go. Queda en manos de los dueños de la web recopilar la cantidad de información que
ellos consideren para su servicio.

Tras realizar el proceso de verificación de la identidad y que este sea exitoso, se ne-
cesita un mecanismo que indique a la web que el usuario ya ha iniciado sesión, y que
esta pueda vincularlo con la información almacenada en su base de datos.

  6
      https://mkparadise.com/redes-sociales-mas-utilizadas

                                                  18
- Cookies

Las ((cookies)) o galletas en castellano, son un recurso del protocolo HTTP que per-
mite tanto a los navegadores como a los servidores web, enviar información adicional.
Se emplea mediante la cabecera HTTP 7 Cookie y su uso más común es la gestión de
la sesión, almacenando una cadena aleatoria que identifica exclusivamente a un usuario
tras realizar un inicio de sesión. Esta cadena aleatoria es almacenada temporalmente
por el servidor web, de forma que por cada solicitud que el cliente realice, se envı́a dicha
cabecera HTTP y el servidor comprueba si es válida.

Dependiendo de la tecnologı́a empleada para realizar el servidor web, esta cookie re-
cibe un nombre determinado, siendo recomendable cambiarlo por motivos de seguridad.

                               Tecnologı́a             Cookie
                                   PHP                PHPSESSID
                               Microsoft IIS      ASPSESSIONID
                                 ASP.Net        ASP.NET SessionId
                                   Java             JSESSIONID

                Figura 5: Nombre de la cookie según la tecnologı́a del servidor

2.1.1.     Problemas de seguridad

Tanto la estrategia de identificación y como el esquema de almacenamiento de datos
presentan diversos problemas de seguridad, que pueden comprometer gravemente la pri-
vacidad de los usuarios.

En primer lugar, toda la información relativa al usuario va a ser almacenada, gestio-
nada y utilizada por cada web según sus intereses. Conocido es el caso de Facebook,
cuando en 2010 presuntamente compartió, sin consentimiento, los datos de 87 millones
de usuarios con la firma de consultorı́a polı́tica Cambridge Analytica8 .
  7
      https://developer.mozilla.org/es/docs/Web/HTTP/Headers
  8
      https://www.xataka.com/legislacion-y-derechos/facebook-cambridge-analytica

                                                 19
En segundo lugar, cada sitio web es un sistema opaco del que se desconoce el nivel de
seguridad que aplica, estando expuesta dicha información a malos diseños o agujeros de
seguridad. Lamentablemente es muy común que sucedan filtraciones, llegando a existir
webs como haveibeenpwned donde al introducir un email, indica si ha sufrido alguna
de estas filtraciones de datos y que servicio ha sido.

En la Figura 6 se muestra un listado de las webs con el número de veces que han sufrido
una brecha de seguridad, ordenadas de manera descendente por el número de clientes
afectados.

                 Figura 6: Lista de webs con brechas de seguridad - Fuente9

Debido al gran número de webs que un usuario emplea, es bastante común que la contra-
seña se utilice también en otro sitio web, por lo que ante la filtración de un determinado
sitio, es posible que la información de muchos otros también se vea comprometida. De
hecho, algunos ciberdelincuentes se dedican precisamente a vender10 las credenciales de
acceso, recopiladas en ficheros de gran tamaño, también conocidos como combo-lists,
donde consta el usuario y la contraseña.

Por último, el sistema de contraseñas puede tener un problema de seguridad extra si el
usuario elige contraseñas fáciles de recordar o cortas. Un ciberdelincuente puede recurrir
a técnicas como la fuerza bruta o ataques de diccionarios, como por ejemplo ((rockyou))
incluido en Kali Linux, para averiguar la contraseña, siendo inviable este método en
contraseñas largas o complejas.
  9
      https://www.pcmag.com/news/these-companies-data-breaches-impact-their-users-the-most
 10
      https://gbhackers.com/account-take-over/

                                                20
2.1.2.   Evolución y soluciones

Para garantizar la protección de la información, el mundo de la computación recurre a
la criptografı́a, la cual busca enmascarar o alterar los mensajes para que sean ininteli-
gibles a receptores no autorizados. Existen diversas técnicas que son de vital importancia.

- Cifrado

Dentro de la criptografı́a se encuentran los procedimientos de cifrado, tanto simétri-
co como asimétrico, con el objetivo de enmascarar un mensaje y que solo las personas
que conocen la clave sean capaces de recuperarlo.

· Simétrico
Se trata del procedimiento que emplea la misma clave tanto para cifrar como descifrar.
Una ventaja de este procedimiento es que es más rápido y eficiente, mientras que pre-
senta la desventaja de almacenar y transmitir de forma segura la clave. El algoritmo por
excelencia dentro de esta categorı́a es AES o ((Advanced Encryption Standard)), desa-
rrollado en 1998 por John Daemen y Vincent Rijmen bajo el nombre de ((Rijndael))11

· Asimétrico
Por otro lado existe el procedimiento que emplea dos claves distintas para cifrar y des-
cifrar. Se considera que una clave es pública y puede ser difundida, mientras que la otra
es privada y debe de guardarse en secreto. Este procedimiento facilita la transmisión de
claves, además de que permite implementar la firma digital, mecanismo con el que se
puede garantizar el autor del mensaje y que este no ha sido modificado. Por contra, este
procedimiento es más lento que la clave simétrica. Uno de los algoritmos más conocidos
es RSA12 , nombre que hace referencia a sus desarrolladores Rivest, Shamir y Adleman.

· Hı́brido
Debido a que cada uno presenta sus ventajas y sus desventajas, en ocasiones se emplean
ambos mecanismos al mismo tiempo, como por ejemplo en el protocolo HTTPS13 , donde
se emplea clave asimétrica durante el ((saludo TLS)) o ((TLS handshake)) para establecer
una clave simétrica que cifrará toda la comunicación.

 11
    https://www.password-depot.de/es/know-how/blowfish-y-rijndael.htm
 12
    https://www.educative.io/edpresso/what-is-the-rsa-algorithm
 13
    https://www.cloudflare.com/es-es/learning/ssl/what-is-asymmetric-encryption/

                                               21
- Hashing

Conocido en castellano como ((funciones resumen)), estos algoritmos producen una salida
de tamaño determinado, denominada hash, que es exclusiva respecto a una entrada de
tamaño indeterminado, siendo irreversible el proceso. La ventaja de estos algoritmos es
que son muy rápidos, y permiten validar la integridad de la entrada. Por ejemplo, si se
calcula el hash de un determinado fichero, si algún ciberdelincuente modifica una sola
letra, la salida obtenida al volver a calcularlo seria completamente diferente. La familia
de algoritmos más usados en la actualidad es ((Secure Hash Algorithms)) o SHA.

             Figura 7: Comparativa entre cifrado y funciones resumen - Fuente14

- Buenas prácticas

Para maximizar la seguridad de los usuarios, muchas webs emplean estos principios con
el objetivo de no almacenar información sensible directamente y que pueda ser extraı́da
por ciberdelincuentes. La gran mayorı́a de los problemas citados en el Apartado 2.1.1
se debe principalmente a que las webs almacenan la contraseña de los usuarios en texto
plano, es decir, tal cual.

Una de las opciones más utilizadas para solventar este problema es almacenar el hash
de la contraseña en vez de la contraseña en texto plano, de forma que si un ciberdelin-
cuente accede a esta información, no será capaz de conocer, a priori, la contraseña. Sin
embargo, si dos usuarios utilizan la misma contraseña, su hash será el mismo, lo que
abre la puerta a que los ciberdelincuentes puedan reciclar hashes que ya conozcan. Tam-
bién a estos hashes puede que se les aplique un ataque de fuerza bruta o tablas arcoı́ris 15 .

Para solventar estos nuevos inconvenientes de seguridad, se recurre a los conceptos de
sal, pimienta y funciones de derivación de clave.
  14
       https://aboutssl.org/hashing-vs-encryption/
  15
       https://medium.com/@ayushv.1298/bruteforce-rainbowtables-and-dictionary-attacks

                                                  22
- Función de derivación de clave

En inglés KDF o ((Key Derivation Function)), son un tipo de función que se encarga de
generar una o más claves respecto una entrada. La principal ventaja de estos algoritmos
es que, además de la entrada, admiten parámetros adicionales, como por ejemplo la sal
o el número de iteraciones. Algunos van más allá, y con el objetivo de evitar ataques
de fuerza bruta, sobre todo de GPUs, permiten configurar el tiempo de ejecución, la
memoria requerida o el grado de paralelismo, como por ejemplo el algoritmo Argon216 .

· Sal
La sal es uno de los parámetros que estas funciones admiten, aunque también es frecuen-
te emplearlo con funciones resumen. Su objetivo es que las tablas arcoı́ris no se puedan
emplear, y para ello a la hora de almacenar la contraseña en la base de datos, en vez
de almacenarla el hash, se mezcle la contraseña y la sal, que es una serie de caracteres
aleatorios diferente para cada usuario, de forma que aunque varios usuarios indiquen la
misma contraseña, como la sal será diferente, el resultado del hash también lo será.

· Pimienta
El funcionamiento de la pimienta es algo similar a la sal. Mientras que la sal se almacena
en la base de datos junto con el hash resultante, quedando expuesta si un ciberdelin-
cuente entra en la misma, la pimienta normalmente se implementa en el propio proceso
de inicio de sesión y no se almacena en ningún sitio. El procedimiento habitual es conca-
tenar uno o pocos caracteres aleatorios extra a la contraseña enviada por el usuario, sin
guardar información de estos, aplicando posteriormente funciones resumen o de deriva-
ción de clave, y almacenando el hash resultante en la base de datos. En el momento de
inicio de sesión, el usuario enviará su contraseña, y el sistema probará todas las combi-
naciones posibles. Aunque el proceso se ralentiza debido al número de comprobaciones
que tiene que realizar, si un ciberdelincuente entra en la base de datos no sabrá si se
esta empleando o no pimienta.

Por ejemplo, si se diseña el sistema con un solo dı́gito extra, es decir del 0 al 9, el sistema
de verificación de contraseña tendrá que realizar una comprobación de contraseña por
cada una de las posibilidades, realizando un total de 10.

  16
       https://www.ory.sh/choose-recommended-argon2-parameters-password-hashing/

                                                23
- Conocimiento cero

También conocido como protocolo o prueba de conocimiento cero, se trata de una fi-
losofı́a y un protocolo criptográfico por el que una de las partes prueba a otra que una
declaración es cierta, sin necesidad de revelar información sensible. Una de las mayores
ventajas y aplicaciones que esta filosofı́a tiene, es que aplicada a los sistemas informáti-
cos, hace que los servidores desconozcan el contenido que almacenan. Mientras que un
cifrado de la información protege la información de personas que desconozcan la clave,
si es el servidor es quien cifra y almacena la clave, este hipotéticamente podrı́a revertir
el proceso y tener acceso.

La Figura 8 representa una comparativa muy sencilla de esta filosofı́a:

                     Figura 8: Ejemplo sistema con conocimiento cero

En un sistema clásico, el usuario envı́a el fichero al servidor sin cifrar (1*), y es el servidor
quien genera una clave y almacena cifrado el fichero (2*). En un sistema con conocimien-
to cero, la información que envı́a el usuario se cifra en relación a algo que lo vincule,
como por ejemplo su contraseña (3*). El servidor puede o no volver a cifrarlo (4*), pero
nunca podrá deshacer el cifrado del usuario y recuperar el fichero original, desconociendo
por tanto el contenido almacenado. Sin embargo, como el usuario ha cifrado el fichero
con su contraseña, el si es capaz de obtener el fichero original.

                                               24
- Múltiples factores de autenticación

En los últimos años ha surgido una corriente de seguridad que busca proteger las opera-
ciones sensibles, como por ejemplo acceder a tu cuenta bancaria online, mediante diversos
factores de autenticación. Esta corriente se basa en que para demostrar la autenticidad
del usuario se van a emplear varios procesos de autenticación distintos, basados en al-
guno de los siguientes principios:

- Algo que el usuario sabe: Ciertos conocimientos que solo el usuario conoce, como una
contraseña o PIN. [Por defecto]
- Algo que tiene el usuario: Cualquier objeto fı́sico en posesión del usuario, como una
tarjeta coordenadas o emplear aplicaciones TOTP... etc.
- Como es el usuario: Alguna caracterı́stica fı́sica del usuario biométrica, como una hue-
lla digital, reconocimiento facial o de voz... etc
- El lugar donde se encuentra el usuario: Analizar alguna conexión a una red informáti-
ca especı́fica o usar el GPS para identificar la ubicación.

Como norma general, todas las webs implementan el principio “algo que el usuario
sabe” mediante el usuario y la contraseña. Cuando una web emplea exclusivamente dos
factores, se le suele denominar como 2FA o ((2-Factor Authentication)), y uno de los
principios más usados para implementar el segundo factor es “algo que tiene el usua-
rio”. Para implementarlo es muy frecuente recurrir a aplicaciones móviles que emplean
el estándar RFC6238 - TOTP: Time-Based One-Time Password Algorithm, como por
ejemplo Google Authenticator.

                             Figura 9: Diagrama TOTP - Fuente17

 17
      https://www.twilio.com/docs/glossary/totp

                                                  25
Como se puede observar en la Figura 9, la idea tras este mecanismo es que usuario y
servidor acuerdan una clave aleatoria en el momento de alta. En el momento de validar el
segundo factor de autenticación, ambos actores calculan el código temporal aplicando un
algoritmo a la clave acordada, el cual que tiene una vida útil aproximada de un minuto.
El usuario envı́a el código y se verifica con el código calculado por el servidor.

2.2.     Identidad como servicio - IDaaS
Con el paso de los años, determinados servicios o empresas se han convertido en gigan-
tes tecnológicos debido al gran volumen de usuarios que los utilizan, como por ejemplo
Google, Microsoft, Facebook o Twitter. Desarrolladores de esta última compañı́a, propu-
sieron en 2007 un estándar de autorización denominado OAuth, que permitiese delegar,
de manera controlada, el acceso a datos de usuarios a terceros. Dicho de otra forma,
gracias a este estándar, los usuarios del sitio A pueden intercambiar los datos alojados
en ese sitio, con el sitio B sin necesidad de registrarse en este último.

2.2.1.    OAuth 2.0

Un ejemplo clásico para entender la utilidad de este estándar es pensar en una web de
impresión de imágenes clásica. En esta web, tradicionalmente se subı́a manualmente las
imágenes, estando estas alojadas en el ordenador o en la cámara de fotos. Pero en la
actualidad esto es diferente, ya que la mayorı́a de imágenes están almacenadas en la
nube. Sin este mecanismo, para que la web de impresión de imágenes pudiera acceder a
las imágenes habrı́a que darle las credenciales de acceso a la nube, dándole control total
de la información y de la cuenta.

Mediante OAuth se puede solventar este problema, tal y como se observa en la Figura 10.
El usuario accede al sitio web de fotos (1º), y este va a solicitar a la nube la información.
La primera vez que se solicite se realizará sin código de autorización (2º), por lo que
el proceso de obtener las imágenes llevará al usuario a la pasarela de autorización (3º),
donde se le indica los permisos que esta solicitando la web de impresión de fotos (4º).
Si el usuario acepta (5º), el servidor de autorización generará el código de autorización
(6º). Ahora la web de impresión de fotos si podrá obtener las fotos alojadas en la nube,
empleando dicho código (7º).

Aunque OAuth esta orientado a la autorización, también se puede emplear como método
de autenticación, obteniendo la información relativa a la cuenta de usuario.

                                             26
Figura 10: Diagrama OAuth - Fuente18

2.2.2.     Token

Para gestionar este acceso delegado se emplea un código o ((token)) de autorización. Por
regla general se emplea un token con un tiempo de validez corto denominado ((access
token)) o código de acceso. Al mismo tiempo, también se suele utilizar un segundo token
orientado a generar de nuevo un access token, el cual recibe el nombre de ((refresh token))
y tiene un tiempo de vida más largo.

Es habitual que el código de acceso almacene la información que el servicio va a uti-
lizar, y para ello se recurre al estándar JWT, el cual define una estructura de datos y
diversas formas de garantizar que no ha sido alterado.

 18
      https://docs.oracle.com/oauth guide/content/oauth intro

                                                  27
2.2.3.      JSON Web Token - JWT

Los estándares RFC 7519 - JWT y RFC 7515 - JWS definen el token conocido como
JWT, aunque realmente se denomina JWS, ya que existen otro tipo y puede dar a
confusión. Tal y como se muestran en la Figura 11, se trata de un conjunto de 3 partes
definidas: header, payload y signature.

                             Figura 11: Diagrama JWT - Fuente19

- Header o cabecera
La cabecera se codifica en base64 y esta formada por un JSON de 2 campos: typ y alg.
El campo “typ” siempre contendrá el valor “jwt” mientras que el campo “alg” indicará
el algoritmo empleado para calcular la firma o signatura, de los definidos por el estándar
RFC 7518 - JWA.

- Payload o carga útil
Esta parte también se trata de un JSON que se codifica en base64. Este JSON puede
llegar a contener una lista de campos muy extensa, dependiendo del estándar en el que se
base20 . Además, se permite añadir cualquier campo propio no definido en dicha lista. Uno
de los campos más importantes es “exp” el cual indica la fecha limite de validez del token.

- Signature o firma
Para añadir una capa de seguridad y asegurar que el token no ha sido alterado, ya que en
las dos partes anteriores la información va codificada y no cifrada, el JWS implementa
un mecanismo de firma mediante el algoritmo indicado en la cabecera. En caso de alterar
el contenido, la firma no será válida y el servidor descartará la solicitud.

  19
       https://javadesde0.com/json-web-tokens-jwt/
  20
       https://www.iana.org/assignments/jwt/jwt.xhtml

                                                 28
El uso de JWT se ha disparado en últimos años debido a que se ha producido un
cambio de filosofı́a en el desarrollo de páginas webs. Tradicionalmente el servidor web
se encargaba de generar la página HTML completa, y esta era enviada al cliente. En
la actualidad, con la irrupción de las APIs web21 y tecnologı́as como ((Single-Page
Application)) o SPA22 , Angular23 o NodeJS24 , se ha separado la generación de la página
web en dos partes: la plantilla HTML y la obtención de la información a mostrar.

Los objetivo de esta separación, empleada por diversas webs de éxito como por ejem-
plo Twitter, son diversos. En primer lugar la web descarga la plantilla sin datos y la
pinta por pantalla, produciendo la sensación de rapidez al usuario. Tras esto obtiene la
información y la coloca en su sitio. El resto de solicitudes solamente van a refrescar la
información, realizando peticiones concretas y de poca información, por lo que se libera
carga del servidor y reducen considerablemente el ancho de banda.

Para que estas webs funcionen correctamente, la identificación de los usuarios se rea-
liza mediante la utilización de JWT, normalmente JWS. Dentro del payload se van a
incluir todos los campos necesarios para el funcionamiento de la web, tanto para la parte
visual como para la autenticación con el servidor, como por ejemplo el id de usuario o
la dirección de correo electrónico.

Uno de los inconvenientes de utilizar este sistema, es que la información que se encuen-
tra dentro del JWT no va cifrada, si no codificada en base64, un proceso fácilmente
reversible, y firmada para asegurar su integridad. Es por esto que, aunque como normal
general siempre deberı́a usarse el protocolo de comunicación HTTPS, en los sistemas
que empleen autenticación o autorización mediante JWT es vital. De caso contrario,
un ciberdelincuente que este escuchando el tráfico, podrı́a obtener el JWT y aparte de
suplantar la identidad del usuario, obtener información acerca del mismo, quedando en
grave riesgo su privacidad.

Existe otra opción para maximizar la seguridad de la información intercambiada me-
diante JWT, y es la utilización de cifrado, definido por el estándar RFC 7516 - JWE y
denominando a estos tokens como JWE.

  21
     https://developer.mozilla.org/es/docs/Learn/JavaScript/Client-side web APIs/Introduction
  22
     https://www.digital55.com/desarrollo-tecnologia/que-son-single-page-application-spa
  23
     https://angular.io/
  24
     https://nodejs.org/es/

                                                29
2.2.4.    Autoridad Certificadora

Retomando el ejemplo de la web de impresión de fotos y la utilización del código de
acceso expedido por la nube para gestionar la autorización, tanto la web de impre-
sión de fotos como el usuario confı́an en la información que aporta la nube, recordando
ligeramente al ejemplo del DNI del proceso de identificación fı́sica comentado en el
Apartado 2 - Proceso de identificación. En este ejemplo, tanto el policı́a como el usua-
rio confı́an en la autoridad que ha certificado dicho documento oficial, en este caso el
Ministerio del Interior.

Otro caso muy similar son los certificados digitales, los cuales también son avalados
por una Autoridad certificadora, la cual actúa como entidad de confianza entre las
partes, y es responsable de emitir y revocar los documentos, y es en la que deben confiar
los usuarios. Estos certificados se utilizan junto con criptografı́a de clave pública-privada
vista en el Apartado 2.1.2 - Cifrado asimétrico. La autoridad certificadora nace debido
a la necesidad de verificar si una clave pública pertenece realmente a un usuario, y el
mecanismo más común para garantizar esto se basa en firmar el certificado digital, de
forma que si el usuario confı́a en dicha autoridad y conoce la clave pública de esta, podrá
verificar si el certificado es correcto y confiar en el otro interviniente.

El esquema en el que los intervinientes confı́an en una tercera entidad y es esta la que
se encarga de almacenar la información y transmitirla, implementando algún método
para que los intervinientes pueden verificar que es correcta esa información, normalmen-
te recibe el nombre IDaaS o ((IDentity as a Service)). El estándar más común para
implementar este esquema es OAuth 2.0, su versión más moderna hasta la fecha, sien-
do usado por el ejemplo de la Figura 10. Además de OAuth, existen otros estándares
para implementarlo, como por ejemplo SAML25 basado en el intercambio de mensajes
XML26 u OpenID27 el cual esta orientado a la autenticación.

2.3.     El futuro de la identidad
En los últimos años se han desarrollado proyectos e ideas orientadas a mejorar los sis-
temas de identificación digital con mucho potencial a largo plazo, y que poco a poco su
impacto y uso de mercado va creciendo.

  25
     https://www.nts-solutions.com/blog/saml-que-es.html
  26
     https://rockcontent.com/es/blog/que-es-xml/
  27
     https://openid.net/connect/

                                                30
2.3.1.   Blockchain IDaaS

Una clara mejora que se puede realizar al sistema de autoridades certificadoras o siste-
mas IDaaS es emplear una red Blockchain para almacenar y controlar la información,
de forma que todas las autoridades certificadores registren los certificados en un libro
descentralizado, aveces llamado por sus siglas en inglés DLT28 o ((Distributed Ledger
Technology)), permitiendo el acceso a todos los actores intervinientes. Mediante la tec-
nologı́a blockchain se logra que la información sea pública y que no este controlada por
ninguna entidad, sino que se controla mediante su mecanismo de consenso29 .

2.3.2.   Identidad digital y Auto-Soberana

Queda patente que el sistema de identidad que se emplea actualmente en Internet tiene
limitaciones, y su funcionamiento es diferente a como se realiza en el mundo real.

Debido a esto, en los últimos años se han promovido conceptos como Identidad di-
gital o Identidad auto-soberana. El primer concepto se encuentra dentro de la lla-
mada teorı́a de web 2.0, y su objetivo es permitir a los usuarios colaborar entre si. La
identidad auto-soberana busca recuperar el control de la información por parte de los
usuarios y no de los sitios. En definitiva, estos dos principios buscan que los procesos de
identificación en Internet sean muy similares a un proceso de identificación en el mundo
real, olvidando las problemáticas credenciales de usuario basadas en nick-contraseñas, y
empleando una nueva forma basada en identificadores y certificados digitales.

2.3.3.   Identificadores descentralizados

Una propuesta para estos nuevos identificadores es el llamado DID o ((Descentralized
Identifiers)). Son propuestos como estándar por la W3C, cuyo fundador es el mismo que
desarrollo la web, y ponen a disposición de todos los usuarios el documento que detalla
que caracterı́sticas debe cumplir30 .

DID es la combinación de dos partes: identificador y documento descriptivo. El identi-
ficador es una cadena de texto de tres partes separadas por “:”. En primer lugar esta el
nombre de esquema, seguido de la especificación y por ultimo el identificador único.

 28
    https://www.bbva.com/es/diferencia-dlt-blockchain/
 29
    https://es.cointelegraph.com/news/cuantos-algoritmos-de-consenso-existen-para-las-blockchain
 30
    https://www.w3.org/TR/did-core/

                                                31
El documento descriptivo esta enlazado a esta identificador, y almacena las claves públi-
cas necesarias para el correcto funcionamiento del sistema, entre otras cosas. El estándar
realizado por el W3C permite a los desarrolles implementar distintas versión y estruc-
turas, destacando Hyperledger Indy como tecnologı́a y Sovrin como red. En la figura
Figura 12 se muestra un ejemplo de un identificador DID.

                                 Figura 12: Esquema DID

Para gestionar estos identificadores existe el concepto de Trust Anchor, definido por
el estándar RFC 6024, y se trata de la representación de una autoridad certificadora.

2.3.4.   Credenciales verificables

Del inglés ((Verifiable Credentials)) o abreviado VC, se trata de otro estándar propuesto
por el W3C con el objetivo de impulsar las credenciales digitales, formando un sistema
que proporciona un mecanismo para expresar credenciales en Internet de manera segura
y verificable, que además busca garantizar la privacidad de los usuarios. Tal y como se
puede observar en la Figura 13, en este sistema se determinan 4 roles: issuer o emisor,
holder o poseedor y verifier o verificador. Para el correcto funcionamiento del sistema,
tanto el emisor como el verificador deben compartir un registro común para la correcta
verificación de las credenciales.

                  Figura 13: Esquema Credenciales verificables - Fuente

                                            32
3.     Blockchain
El 1 de noviembre de 2008, bajo el seudónimo de Satoshi Nakamoto, se publicó un enlace
a un documento técnico en una conocida página web dedicada a criptografı́a acerca de
un sistema P2P de dinero digital. Bautizado como Bitcoin, en dicho documento se
describı́a una nueva estructura de datos: cadena de bloques o Blockchain, ası́ como
todas las caracterı́sticas y pasos que debı́a seguir dicha red distribuida. Aproximadamente
2 meses más tarde, el 3 de Enero de 2009, entró en funcionamiento la primera red P2P
basada en el protocolo Bitcoin.

3.1.     Funcionamiento

3.1.1.    ¿Qué es una cadena de bloques?

Ya que Bitcoin fue la primera red Blockchain, se procede a describirla. Las transaccio-
nes dentro de esta red se agrupan mediante bloques. Cada bloque contiene un número
variable de transacciones, añadiendo además una serie de campos extra para el funcio-
namiento y la validación de la red, como se puede observar en la Figura 14.

                           Figura 14: Estructura de un bloque

Bloque

       Número mágico: Caracteres alfanuméricos que identifican un formato

       Tamaño del bloque: Tamaño en bytes del bloque

       Contador de transacciones: Número de transacciones incluidas en el bloque

       Lista de transacciones: Lista de transacciones incluidas en el bloque

                                            33
Cabecera del bloque

        Versión: Versión del bloque

        Hash bloque anterior: hash que hace de referencia al bloque anterior para poder
        generar una lista ordenada

        Hash árbol Merkle: hash que hace de referencia a la raiz de la estructura de
        tipo árbol Merkle que se produce enlazando todas las transacciones del bloque

        Marca temporal: Momento exacto en el que se crea el bloque

        Dificultad: Requisito de la prueba de esfuerzo para que el bloque sea aprobado

        Número aleatorio: Número aleatorio que es empleado en la prueba de esfuerzo

Estos bloques se organizan en una lista cronológica, añadiendo siempre el último bloque
generado al final. Para realizar esta organización, cada bloque contiene una referencia
única o hash que apunta al bloque anterior. De esta forma, conociendo el último bloque
se puede recorrer toda la lista hasta el primero de todos. Al primer bloque de una red
Blockchain se le denomina bloque génesis 31 .

                                Figura 15: La cadena de bloques

El bloque génesis se utiliza para inicializar la configuración de la red, indicando todas
las caracterı́sticas que el resto de bloques van a heredar. Además de esto, se emplea para
emparejar a todos los nodos de la red siempre y cuando ese bloque sea exactamente
igual, maximizando la seguridad de la red al evitar intrusos potencialmente peligrosos.
Cabe destacar que el bloque génesis no puede hacer referencia a ningún bloque anterior
ya que este es el origen de la red.

 31
      https://academy.bit2me.com/que-es-bloque-genesis/

                                                 34
3.1.2.     Criptografı́a

Uno de los principios más importantes en los que se basan las redes Blockchain es la
criptografı́a. De forma resumida, Bitcoin emplea frecuentemente las funciones resumen
explicadas en el Apartado 2.1.2 - Criptografia. Concretamente Bitcoin emplea el algorit-
mo SHA-256 para obtener hashes, siendo un hash producido por dicho algoritmo una
cadena de texto de 256 bits en formato hexadecimal como resultado de una determinada
entrada.

Gracias a este algoritmo se tiene un identificador exclusivo para cada bloque, utilizando
como entrada la cabecera del bloque (la parte coloreada de azul de la Figura 14). Tam-
bién se aplica para generar el Árbol Merkle, la cual es una estructura de datos de tipo
árbol para la representación jerárquica de la información, partiendo todo de un nodo
principal denominado raı́z. La raı́z puede estar conectada a ramas o a hojas. Las hojas
son los últimos elementos del árbol y son los que no tienen nodos inferiores o nodos hijo,
mientras que los nodos que se encuentran entre la raı́z y las hojas se denominan ramas.

                                Figura 16: Esquema árbol Merkle

La aplicación de esta estructura de datos en la red Bitcoin se realiza de la siguiente
manera. En las hojas de dicho árbol, se va a almacenar el hash de cada una de las tran-
sacciones independientemente del resto. Tras esto, se van a ir formando las ramas del
árbol, almacenando el hash de los dos nodos hijos que tiene. Este proceso se repite hasta
alcanzar la raı́z del árbol.

Esta estructura aporta una serie de caracterı́sticas imprescindibles para el correcto y
descentralizado funcionamiento del sistema.

                                              35
Eficiencia: Permite que sea mucho más sencillo comprobar las transacciones, ya
      que permite que al comparar el hash de la raı́z, se comprueba el resto de tran-
      sacciones, sin que tener que comprobar una a una por una todas las transacciones
      incluidas en el bloque.

      Integridad: Cualquier intento de cambio, aun por muy pequeño que sea, en cual-
      quier transacción modificarı́a los valores hash de todo el árbol merkle, produciendo
      un resultado diferente en el hash de la raı́z

      Ahorro: Evita tener que enviar una gran cantidad de datos, ya que solamente se
      envı́a los hashes asociados a ellos

3.1.3.   Red descentralizada

Una vez ya visto las caracterı́sticas de la cadena de bloques, hay que entender como la
red Blockchain la gestiona. En primer lugar, y tal y como aparece en la introducción, una
red Blockchain es una red P2P o ((Peer-to-Peer)), o red distribuida en castellano. Una
red distribuida es un tipo de estructura en la que no existen ni clientes ni servidores fijos.
Existe pues, ordenadores, que son también llamado nodos, que pueden actuar al mismo
tiempo de cliente y servidor. De esta forma, se rompe el esquema de centralización de
los servidores clásicos, obteniendo las siguiente serie de caracterı́sticas:

      La información se almacena de forma más segura al estar distribuida ya que no
      esta exclusivamente en un único lugar

      Mayor escalabilidad ya que la carga de trabajo se puede dividir por toda la red y
      no solo a una unidad central

                                Figura 17: Esquema red P2P

                                              36
Estos nodos se conectan en pares, intercambiando la información necesaria, teniendo
una instancia de la información cada nodo de la red. Esto significa que en cada nodo
de la red va a existir una copia del estado actualizado de la blockchain. Un ejemplo de
sistema P2P muy conocido es BitTorrent. Este protocolo fue creado en 2001, con el ob-
jetivo de que los usuarios pudiesen intercambiar archivos de una manera descentralizada.

Aunque ambos sean sistemas P2P, en la tecnologı́a blockchain los nodos van un pa-
so más allá en cuanto a las tareas que realizan. Existen 4 tipos de nodos dentro de una
red Blockchain y cada tipo tiene asociado unas tareas que puede realizar.

        Nodo completo: Son capaces de validar todas las transacciones desde la más
        reciente del último bloque hasta la primera del bloque génesis.

        Super-nodo: Son los nodos que ayudan a otros nodos a conectarse entre ellos,
        dispersando en ellos y verificando el estado actualizado de la blockchain

        Nodo ligero: Son nodos capaces de validar un número concreto y limitado de
        transacciones. Esta orientado a dispositivos de bajo rendimiento y para el IoT32

        Nodo minero: Son los nodos encargados de crear nuevos bloques. Su papel es
        fundamental en el crecimiento de la blockchain

La validación de transacciones y la creación de bloques presenta varias fases.

Paso 1: Transacción

Para poder generar un nuevo bloque, los usuario deben realizar transacciones. Estas
transacciones se realizan empleando el monedero personal del usuario, indicando la can-
tidad de Bitcoins a enviar y la dirección destino. Para verificar que el usuario es quien
ha realizado la transacción, se concatena una firma digital empleando la clave privada.
Esta transacción es comunicada por la red blockchain.

Paso 2: Compilación

Los nodos mineros se encargan de agrupar estas transacciones, formando ası́ cada nodo
su propio bloque de máximo 1 MB. Es posible que una transacción este presente en
varios de estos bloques temporales.
 32
      https://www2.deloitte.com/es/es/pages/technology/articles/IoT-internet-of-things

                                                  37
Paso 3: Formación

Cada transacción puede tener asociado un incentivo para los nodos mineros. Con esto
se pueden priorizar transacciones importantes, ya que todos los nodos mineros estarán
interesados en esa comisión. En esta fase, los nodos mineros además, filtraran los bloques
con las transacciones que ya hayan sido validadas, excluyéndolas del bloque. El bloque
pasará a ser candidato de ser validado.

Paso 4: Prueba de trabajo

Una vez un nodo minero tiene un bloque candidato asociado, deberá realizar una prueba
de trabajo al mismo. Este proceso se realiza debido a que debe existir un sistema de
consenso que se encarga de determinar los bloques que son válidos, teniendo esta prueba
un coste computacional muy alto. Consiste en obtener un hash del bloque que cumpla
los requisitos de dificultad que indica el bloque en la cabecera.

                         Figura 18: Prueba de trabajo Bitcoin

Para obtener ese hash, se utiliza un contador aleatorio que se va incrementando y que se
combina con la información del bloque, aplicando a todo esto el algoritmo SHA-256. De
esta forma, cada vez que se incrementa el contador, el hash resultante de la operación es
diferente. El resultado de esta operación se vuelve a pasar por la función resumen. Tras
este ‘doble hash’ se obtiene una cadena hexadecimal a la que se le denomina firma. Para
que la firma, y por ende el bloque, sean válidos, tiene que cumplir con las restricciones
que impone el concepto de dificultad. La dificultad es una representación directa e in-
versa de otro concepto llamado objetivo. Para que un bloque sea válido, el valor de la
firma debe de ser inferior al valor del objetivo. Cuanto mayor sea la dificultad, menor
será el valor asociado al objetivo y por lo tanto más complicado de calcular.

                                            38
El valor de la dificultad de los bloques se gestiona por la red Blockchain cada 2016
bloques, comprobando las marcas temporales de todos los bloques. Si los bloques tienen
menos de dos semanas de vida, la dificultad aumentará. En caso contrario, si tienen
más de dos semanas de vida, la dificultad se reducirá. Estos cambios son globales en
la red Blockchain, y se emplea para mantener un ritmo constante en la validación de
bloques, evitando ası́ periodos demasiado largos o demasiado cortos de validación de
transacciones. De media, un bloque se valida cada 10 minutos33 , aunque es posible que
se produzcan 2 bloques en un minuto o 1 cada hora.

Paso 5: Transmisión

Tras encontrar una firma válida, el nodo minero comunica el bloque con toda la red.
En este también en este momento en el que se ponen en circulación nuevas monedas,
siendo asignadas, como recompensa, al monedero del nodo minero que ha superado la
prueba de esfuerzo, junto con la comisión asociada a todas las transacciones.

Paso 6: Verificación

Obtener el número aleatorio que valida un bloque es un proceso muy costoso, tanto
computacional como enérgicamente hablando. Sin embargo, verificar ese bloque es un
proceso sencillo. Una vez el nodo minero lo comunica al resto de la red, es el resto de
nodos los que se encargan de realizar la verificación, comprobando no solo que el que
hash coincide con los requisitos de dificultad y se produce con dicho número aleatorio,
sino que todo el contenido del bloque es correcto.

Paso 7: Confirmación

El último paso es continuar la evolución de la cadena de bloques. Una vez el bloque
ha sido validado, es añadido a continuación del último bloque. A partir de este mo-
mento, todos los nodos mineros comenzarán a repetir el proceso y añadirán el siguiente
bloque justo detrás de este. Las transacciones que no han sido incluidas a la blockchain
con este bloque, quedan a la espera de que sean incluidas en un próximo bloque.

En la Figura 19 se detalla gráficamente los pasos del proceso de generación de un bloque.

 33
      https://www.investopedia.com/terms/b/block-time-cryptocurrency.asp

                                                39
Figura 19: Pasos creación de bloques

3.1.4.   Wallets o monederos

Es importante precisar como se generan estas transacciones. En primer lugar, una tran-
sacción es un intercambio de información entre dos usuarios, identificados mediante
direcciones. Una dirección es un identificador único que se obtiene mediante el uso de
criptografı́a asimétrica. Mediante este método criptográfico, se obtiene un par de claves
seguras, que el usuario utiliza para comunicarse con la red blockchain, que reciben el
nombre de clave pública y de clave privada.

La clave pública puede ser compartida sin ningún tipo de riesgo, y la dirección que
utiliza la red blockchain para hacer referencia a los usuarios es un hash de dicha clave.
Por contra, la clave privada debe ser tratada muy cautelosamente, y se emplea para
verificar la propiedad de la clave pública. Estas claves se utilizan mediante el concepto
wallet o monedero. Un monedero es un software o hardware que se utiliza para crear y
consultar transacciones dentro de una red Blockchain. Existen diversos tipos de monede-
ros, como por ejemplo versiones web, de escritorio, para dispositivos móviles, entre otros.

Para realizar cualquier transacción es imprescindible disponer de un monedero y no
existe ninguna restricción para su creación, por lo cual cualquier usuario puede crear
cuantos monederos quiera. En una red blockchain no existe ningún tipo registro de los
monederos creados, solo se almacenan los intercambios de divisas entre ellos, por lo que
no hay constancia de la existencia de un monedero en la red hasta que haya recibido una
transacción, siendo posible enviar transacciones a direcciones que no existen.

                                            40
También puede leer