Please enable JS

Identidad Digital y blockchain: un modelo a punto para madurar

Identidad Digital y blockchain: un modelo a punto para madurar

Identidad Digital y blockchain: un modelo a punto para madurar

18/03/2020 / María Salgado /Blockchain

El Consorcio Alastria está formado por más de 500 entidades (empresas, instituciones, universidades, etc.) que trabajan juntas bajo un esquema de coopetición, colaboración entre competidores, y que comparten un objetivo común: desplegar casos de uso reales en blockchain. En muchos grupos de trabajo en marcha, estudiando distintos aspectos de la tecnología blockchain. De uno de ellos nos vamos a ocupar aquí: el de identidad.


Y ¿cuál es el estado actual de Alastria ID desde el punto de vista técnico? Eso es lo que queremos explicar, a partir de los avances realizados en 2019 por el equipo core de identidad de Alastria -en el que participamos muy activamente desde IECISA con otras entidades como Banco Santander y Tribalyte entre otros-.

Equipo core de identidad de Alastria

La identidad es un aspecto cross prácticamente en cualquier caso de uso. Si se identifica un caso de uso que necesita blockchain porque requiere descentralización, pero es necesario identificar a los actores, no tiene sentido gestionar a los usuarios de forma centralizada. De hecho, esta ha sido la barrera con la que se han topado varios proyectos blockchain en los que no tenía sentido gestionar a los usuarios de forma centralizada.

En este punto es necesario señalar que el modelo de Alastria ID es el resultado del trabajo de muchas personas que han ido colaborando desde 2017 en Alastria como profesionales de diversas entidades asociadas. Es un modelo muy robusto que garantiza la privacidad de la actividad del sujeto siendo 100% acorde con el cumplimiento normativo de GDPR. El pasado 10 de marzo tuvo lugar una reunión muy importante de la Comisión de Identidad de Alastria en la que se comentaron todos los avances hasta la fecha. Ya está disponible el acta oficial de dicha reunión.

Actualmente ha sido adoptado por el proyecto de la Comisión Europea, European Self Sovereign Identity Framework (ESSIF) que utiliza la European Blockchain System Infrastructure (EBSI). Además, Alastria ID se ha constituido "estándar de facto" por el organismo W3C.

Vamos un poco más en detalle… ¿Cuál es el modelo Alastria ID?

Los actores


Podemos distinguir tres roles:

  1. Sujeto (Subject) - El dueño de la identidad que controla y almacena sus propios datos. Puede referirse tanto a personas físicas como a personas jurídicas (e incluso a procesos, animales o cosas).
  2. Emisor (Issuer) - Aquel que certifica datos de un sujeto.
  3. Proveedor del servicio (Service Provider) - Aquel que solicita datos de un sujeto (normalmente para prestarle un servicio a cambio).

Es frecuente utilizar el término "Entidad" (Entity) para referirnos a las instituciones, organizaciones y empresas que tienen el doble rol de "Emisor" y "Proveedor de Servicios".

 

 

 

Todos los actores tienen:

  • Una clave pública
  • Una clave privada
  • Un DID: un identificador único
  • Una address de wallet: un número hexadecimal que identifica el keystore (par de claves) tipo Ethereum

El último punto no es propio del modelo sino de la implementación que, como se comentará más adelante, se ha realizado para Quorum (Ethereum).

La gestión de los datos


Se utilizan dos conceptos principalmente:

1. Credencial (Credential) - Es el testimonio de un dato del sujeto firmado por un emisor. Dependiendo de quién sea el emisor y de qué dato, se ajusta un "Nivel de confianza" (Level of Assurance) acorde con los niveles eIDAS definidos de acuerdo a un Trust Framework. Puede haber múltiples Trust Frameworks impulsados tanto por administraciones públicas como por consorcios de entidades privadas, lo importante es que se publiquen con un identificador único para poder ser consultados.

2. Presentación (Presentation) - Es la entrega de una credencial de un sujeto a un proveedor del servicio. Se podría ilustrar como un sobre firmado por el sujeto que dentro lleva una o más credenciales firmadas por el emisor del dato. Es interesante tener en cuenta que el receptor de una Presentación, (un Proveedor de Servicios) cuando la recibe puede consultar tanto el nivel como el marco de confianza antes de utilizarla para rechazarla si no le resulta válida en su proceso de negocio.

Tanto las presentaciones como las credenciales se intercambian offchain, es decir, por fuera de la blockchain. Es importante destacar que en la blockchain solo se almacenan hashes. Para proteger la privacidad de la actividad de los sujetos, es decir, para que nadie pueda relacionar un emisor con un sujeto o un sujeto con un proveedor de servicios, se generan dos hashes distintos para cada objeto. Así cada parte utiliza uno para referirse a lo mismo y solamente ambas partes pueden calcularlo. Esto se consigue con la técnica del Personal MultiSharing Hashing (PSMHash).

Tanto las credenciales como las presentaciones técnicamente son JWT (JSON Web Tokens). Se puede encontrar la definición de los mismos aquí. 

Manos a la obra, ¿qué se ha desarrollado?


En el perfil de GitHub de Alastria se encuentra publicado todo el código desarrollado, que es open source.

Desde el equipo core de indentidad de Alastria, diseñamos una arquitectura multicapa que permite abstraer el modelo de la implementación realizada con el objetivo de que el modelo pueda implementarse en múltiples tecnologías. Esta arquitectura está preparada para garantizar que puedan convivir muchas implementaciones que vaya desarrollando la comunidad.

A continuación, se muestra un diagrama que recoge las 4 capas que constituyen esta arquitectura diferenciadas en los 5 repositorios que se explican en detalle a continuación:


1. SMART CONTRACTS

https://github.com/alastria/alastria-identity

 

La implementación actual del modelo de Alastria ID utiliza la Red-T, Quorum (Ethereum). Los Smart Contracts se han desarrollado en Solidity.

El contrato principal se llama "Alastria Identity Manager". Todos los sistemas deben invocarle directamente.

Por cada identidad creada, existe un contrato que la representa. Se llama "AlastriaProxy". El DID de cualquier actor se construye a partir de la dirección de su AlastriaProxy.

Cuando cualquier sistema invoca al Alastria Identity Manager, este a su vez reenvía la llamada al AlastriaProxy correspondiente del actor que llamó.

La blockchain solamente actúa como registro del consentimiento y de la actividad de los datos del sujeto. Para ello existen tres contratos:

  1. Es el repositorio de todas las claves públicas de los actores que todos los intervinientes pueden consultar para verificar firmas.
  2. Es el repositorio de hashes y status de las credenciales.
  3. Es el repositorio de hashes y status de las presentaciones.

En la implementación actual se realiza la gestión y control de roles a través de modifiers tipo onlyIssuer. Para ello existen unos registros de adress de entidades en otros smart contracts:

  1. AlastriaServiceProviders: almacena las direcciones de los AlastriaProxy de los proveedores de servicios.
  2. AlastriaIssuers: almacena las direcciones de los AlastriaProxy de los emisores.
  3. AlastriaEntities: almacena metainformación no clasificada como datos personales de las entidades (personas jurídicas) que actúan como emisores o proveedores de servicios. Algunos de estos datos son: nombre, CIF, url_logo etc. Y se consultan desde los wallets de identidad.

2. LIBRERÍA

https://github.com/alastria/alastria-identity-lib

 

Sobre estos Smart Contracts se ha desarrollado una librería que los recubre. Se ha implementado en TypeScript y se puede exponer como un servicio que corre en Node.js.

Esta librería, publicada en el repositorio alastria-identity-lib. consta de tres partes diferenciadas:

  1. Recubrimiento de los smart contracts. Con el objetivo de abstraer a los desarrolladores de las complejidades de crear transacciones y entender Solidity, basta con invocar una función en TypeScript y se generan arrays de bytes que se pueden enviar después utilizando funciones básicas de Web3.js.
    La librería siempre utiliza las últimas direcciones de Smart Contracts publicadas en el repositorio oficial, los ABIS y bytecode actualizado.
  1. Recubrimiento de la gestión de claves y los keystores. Esta librería permite firmar las transacciones construidas con el módulo anterior antes de enviarlas a la blockchain.
  2. Recubrimiento de los objetos del modelo (credenciales, presentaciones DIDs, Alastria Token) para facilitar la creación y parseo de los diferentes tokens.

3. EJEMPLOS

https://github.com/alastria/alastria-identity-example

 

Se ha desarrollado un conjunto de ejemplos de cómo usar la librería para todas las posibles historias de usuario diseñados.

Esta implementación está realizada en JavaScript para que a través de un sencillo comando se pueda ejecutar cualquiera de los flujos para obtener datos de pruebas. A continuación, se muestra por ejemplo el alta de una nueva entidad.

 


Como muestra de la importancia de seguir estos ejemplos para realizar correctamente los flujos, sirve como demostración el primero de ellos: la creación de un Alastria ID nueva. Para ello, tal y como muestra la figura siguiente, se envían dos transacciones a la blockchain, la primera de ellas firmada por la entidad (prepareAlastriaID) y la segunda de ellas firmada por el wallet del sujeto (createAlastriaID). La confirmación de ambas habilita el despliegue de un nuevo Smart Contract (AlastriaProxy) con cuya dirección se construye el identificador de esa nueva Alastria ID, el DID.

 


4. APP WALLET DEL SUJETO

https://github.com/alastria/alastria-wallet

 

El repositorio de los datos, las claves y la gestión de la identidad se realiza desde una aplicación móvil que hace uso de las librerías mencionadas anteriormente.

Está desarrollada en IONIC. Es una implementación de referencia que se podrá utilizar como base y para demos.

Actualmente se puede descargar la apk para instalarla y probar.

5. DEMO ENTIDAD

https://github.com/alastria/alastria-identity-entity

 

Para poder realizar demos completamente funcionales con la app wallet, se ha desarrollado una web con la que interactuar, que tiene integrados los elementos necesarios para permitir al usuario utilizar su Alastria ID. Recodadamos que se denomina “Entity” o “Entidad” a aquella que juega el doble rol de “Emisor” y “Proveedor de Servicios”, es decir, puede emitir credenciales para el sujeto y solicitarle presentaciones a cambio de servicios.

Se han identificado y descrito múltiples historias de usuario con los casos de uso posibles.

Esta web utiliza unos servicios definidos en un Swagger que pretende ser estándar para todos los proyectos que integran Alastria ID.

Actualmente, esta demo se encuentra disponible para que toda la comunidad pueda probar la funcionalidad. Se ha abierto una línea de trabajo en el equipo core para analizar la experiencia de usuario tanto a nivel diseño de interfaces como a nivel de la propuesta de valor que deben recoger los mensajes.

Y... ¿perspectivas para 2020?


El año 2020 será decisivo. Un punto de inflexión para probar Alastria ID en funcionamiento en distintos proyectos y casos de uso con pilotos funcionales e incluso en producción que próximamente se irán publicando. Será también el año de madurez y mejora de esta primera implementación.

Ya se han abierto las primeras líneas para investigar la interoperabilidad de la identidad entre la Red-T (Quorum), la Red-B (Hyperledger Besu) y la Red-H (Hyperledger Fabric). Esto permitiría que una vez que un usuario dispone de su Alastria ID, esa identidad le valga para todos los proyectos desarrollados en ambas redes.

Además, el proyecto ESSIF-EBSI (European Self Sovereign Identity Framework en la European Blockchain System Infrastructure) ha adoptado el modelo y la implementación propuestaa por Alastria lo cual ciertamente promete ser un impulso para acelerar su adopción en España.

Señoras y señores: estamos a punto de aterrizar en la siguiente generación de identidad digital

IECISA Blockchain

Con la colaboración de los compañeros de IECISA que han formado parte de este potente proyecto en 2019:

Roberto García Álvarez | Víctor Nieves | María Salgado 

Comentarios/0