Introducción a los mecanismos de identidad basados … · Nerea Sainz de la Maza ... La t e c n o...
-
Upload
nguyenkiet -
Category
Documents
-
view
214 -
download
0
Transcript of Introducción a los mecanismos de identidad basados … · Nerea Sainz de la Maza ... La t e c n o...
Introducción a los mecanismos de identidad basados en tecnología blockchain
Dr. Alfonso Muñoz - Head of Cybersecurity Lab (@mindcrypt)
Nerea Sainz de la Maza - Security Researcher i4S Security Lab - Blue Indico - BBVA Group
11/05/2018
ÍNDICE
1. Introducción a los sistemas de identidad basados en tecnología blockchain 2. BlockStack - Gestión de datos personalizados 3. CIVIC - Verificación de identidad basada en blockchain 4. Selfkey - Identidad auto-soberana 5. Conclusión 6. Anexo: Token ERC20 7. Referencias
1. Introducción a los sistemas de identidad basados en blockchain
Actualmente existe mucho revuelo sobre las posibilidades de usar la tecnología blockchain en múltiples servicios. Su naturaleza transparente y descentralizada permite un registro de datos irrefutable e irrompible, característica fundamental de muchas aplicaciones. Recientemente desde nuestro laboratorio de seguridad se ha publicado un mapa con una recopilación de las diferentes “criptomonedas” interesantes en su aplicación a diferentes aspectos del campo de la seguridad informática. En este artículo nos centraremos en su utilidad en el ámbito de la identidad. La tecnología blockchain podría ofrecer una solución de identidad segura sin la necesidad de una autoridad central confiable. Además, permite crear una identidad en la cadena, facilitando el manejo de las personas y dándoles un mayor control sobre quién tiene su información personal y cómo acceden a ella.
Fig 1. Security blockchain ecosystem map by i4slabs
(https://twitter.com/mindcrypt/status/971787573562658817)
El objetivo, por tanto, de este post es intentar dar un poco de luz sobre estas nuevas propuestas y poder llegar a evaluar si tienen el interés suficiente para plantear un estudio más dedicado de las mismas por nuestra parte o por miembros de la comunidad. En la detección de propuestas, criptomonedas/tokens, interesantes en este campo se han observado diversas: Civic, uPort, Trust Stamp, ShoCard, CryptId, Blocknotary, Blockstack,
theKey, SelfKey y Bitrated. Es importante resaltar que en ocasiones la definición de estas monedas/tokens se encuentran en un punto intermedio entre la categoría de autenticación y la de gestión de identidad. No obstante, se asume que tiene más sentido categorizarlas en esta sección.
De todas estas propuestas, y basándonos en un análisis previo, hay más interés en estudiar en mayor detalle las propuestas de Blockstack (gestión de datos personalizados), Civic (verificación de identidad basada en blockchain) y Selfkey (identidad auto-soberana). Esta información permitirá tener una idea más clara de si este tipo de propuestas son realmente interesante como sustituto o complemento a mecanismos tradicionales de gestión de identidades digitales. De las tres propuestas analizadas se destacará en mayor medida el proyecto Civic, por considerarlo significativo como propuesta de mecanismo de verificación de identidad basada en blockchain, facilitando la comprensión y la evaluación de si estos principios e ideas tienen recorrido o no en esquemas de gestión de identidad digital. 2. BlockStack - Gestión de datos personalizados
Desde Blockstack reclaman que Internet, originalmente concebido como una red descentralizada, se ha vuelto dependiente de autoridades centralizadas, como los servidores de dominio (DNS) o autoridades
certificadoras (CA). Un oligopolio que afirman sufren los datos de los usuarios, alojados mayoritariamente en los servidores de las grandes empresas, convirtiéndose en más vulnerables a ataques cibernéticos.
Por ello, el objetivo de BlockStack es cambiar el mercado existente, creando un mercado para los usuarios en el que seamos nosotros los dueños de nuestros datos y tengamos la capacidad de gestionar nuestras propias aplicaciones. Se define como un nuevo Internet para aplicaciones descentralizadas reemplazando los puntos de centralización de la capa de aplicación de Internet. De esta manera, se eliminan los puntos centrales de fallo, como los DNS y las CAs, y permiten el almacenamiento personal para los usuarios [2].
BlockStack implementa un sistema DNS descentralizado apoyado en una blockchain, utiliza cadenas de bloques y registros de datos replicados sincronizados a través de redes de pares para propagar enlaces de datos seguros. BlockStack se lanzó inicialmente en 2014 en la cadena de bloques Namecoin, pero migró a bitcoin a finales de 2015 y tienen en su roadmap que la tecnología funcione con Ethereum y Zcash [1][2]. La red de BlockStack lleva en producción más de tres años y se han registrado más de 75.,000 nombres de dominio en ella. En mayo de 2017, BlockStack presentó un nuevo navegador de Internet, su principal producto [3]. Actualmente, se están desarrollando varias aplicaciones mediante BlockStack: el servicio de hogar compartido Casa [4], el monitor de salud personal Afia [5], la plataforma de blogs Guild [6], la plataforma de almacenamiento de archivos Graphite [7] y el reproductor de música Ongaku Ryoho [8].
La arquitectura de BlockStack consta de tres capas:
Fig 2. Arquitectura BlockStack [1].
Capa 1: Blockchain
Es la capa más baja y combina la blockchain subyacente y la virtualchain. Tiene dos propósitos: proporcionar el medio de almacenamiento para las operaciones y mantener consenso sobre el orden en el que las operaciones fueron escritas.
Por un lado, la cadena de bloques subyacente se trata como un canal de comunicación que lleva las operaciones totalmente ordenadas, mientras que todos los cálculos operativos y la lógica -incluidas las operaciones de minado y el algoritmo de consenso-, son procesados por la cadena virtual, sin requerir cambios en la cadena de bloques.
La virtualchain o cadena virtual solo procesa transacciones con códigos de operación válidos desde la blockchain. Los códigos de operación (op_code) se anuncian en las transacciones de Bitcoin en el campo designado para datos adicionales, llamado OPRETURN. Las transacciones aceptadas se organizan en bloques virtuales unidos por un hash de consenso que refleja el historial previo de la cadena virtual.
Fig 3. Capa blockchain y virtualchain.
La arquitectura de la plataforma puede funcionar con cualquier número de canales de comunicación subyacentes, y cualquier blockchain subyacente puede alojar varias cadenas virtuales de tipos diferentes. Las principales ventajas de la implementación de la virtualchain son una mejor tolerancia a fallos en el caso de un fallo en la blockchain subyacente y mayor escalabilidad y seguridad al permite migrar de una cadena de bloques subyacente a otra con nuevos protocolos blockchain más seguros.
Capa 2: Peer Network Atlas
Los nodos forman una peer network, llamada Atlas que mantiene un registro de las rutas (“zone files”), que apuntan al almacenamiento de datos principal implementado en la capa superior (almacenamiento Gaia).
La red sólo permite escribir archivos si el hash se anunció previamente en la blockchain. Esto incluye una lista blanca de los datos que se pueden almacenar en la peer network. Los registros de datos que representan rutas se pueden verificar y, por lo tanto, no se pueden alterar. En la implementación actual de la red Atlas, los nodos mantienen una copia completa de todos los archivos, ya que el tamaño es relativamente pequeño (4 KB por archivo).
Capa 3: Almacenamiento Gaia
La capa superior almacena los datos. La implementación es similar a otros almacenamientos en la nube, como Google Drive o Dropbox. Todos los valores almacenados están firmados por una clave definida en el plano de control. Además, Blockstack hace posible el uso de diferentes almacenamientos siempre que los punteros a esos almacenamientos estén almacenados por Blockstack, y los proveedores de almacenamiento guarden únicamente datos cifrados.
BNS: Blockchain Name System
Blockstack implementa un sistema de nombres descentralizado, Blockchain Name System (BNS), basado en esta arquitectura. BNS define operaciones en una nueva cadena virtual y almacena el registro de rutas de la información en la red Atlas.
Respaldado por el protocolo de consenso de la cadena de bloques, la cadena virtual procesa las operaciones de registros de nombres, actualizaciones de nombres y transferencias de nombres. Por lo tanto, la cadena virtual refleja el estado global de BNS: "quién posee un nombre particular y qué datos están asociados con un nombre".
En BNS, los nombres son propiedad de las direcciones criptográficas de la blockchain y sus claves privadas asociadas. El registro del nombre se realiza en un proceso en dos fases. El primer usuario en completar las dos fases, obtiene la propiedad del nombre, invalidándose cualquier preorden anterior. Una vez que se registra un nombre, el usuario actualiza el nombre-valor enviando una transacción de actualización y cargando el enlace nombre-valor.
BNS proporciona asociaciones de claves públicas con nombres de dominio y éstos obtienen certificados, evitando trabajar con autoridades certificadoras CA del estilo Let’s encrypt.
Minado
El nuevo sistema de minado de BlockStack, Stack, pretende incentivar el crecimiento del ecosistema de aplicaciones descentralizadas, incentivando el crecimiento de aplicaciones y mantenimiento de la red segura. Consta de tres componentes:
1) Proof-of-burn: para incentivar a las personas a participar en la construcción de una cadena de bloques más larga. Eliminan la conocida proof-of-work y el consiguiente consumo de energía. Consiste en quemar monedas, enviando monedas a una dirección a la que no se tiene acceso, para evitar que se gasten. Los usuarios intentarán quemar la mayor cantidad de monedas para ganar la recompensa del bloque. Estas transacciones también se registran en la cadena de bloques, proporcionando la prueba para que esas monedas no se utilicen en nuevas transacciones.
2) App-rewards: para incentivar a los desarrolladores a desarrollar aplicaciones durante la etapa inicial. Los revisores de aplicaciones, entidades elegidas por período de un año, seleccionan las aplicaciones y les asignan las ponderaciones adecuadas que se utilizan para calcular las recompensas de minado de las aplicaciones.
3) Web-of-trust: para incentivar a los usuarios a participar en un ecosistema de aplicaciones descentralizadas. Inicialmente, en el bloque de génesis se crea un grupo de usuarios de confianza que puede expandirse cuando la red se active.
3. CIVIC - Verificación de identidad basada en blockchain
Civic permite verificar la identidad bajo demanda, de manera segura y con bajo coste a través de blockchain. Introduce la verificación de identidad (IDV) reutilizable cada vez que una institución o servicio lo requiera, permitiendo la autenticación en tiempo real. Los datos de identidad son verificados por Civic o un partner (entidad gubernamental, institución financiera, un empleador…)
Fig 4. Interfaces de la aplicación CIVIC [9].
Civic proporciona una plataforma para que las confirmaciones se compartan entre los proveedores de servicios con el fin de reducir radicalmente los costes, compensar a los participantes en el ecosistema y mantener a los usuarios con un control total de sus datos. En el momento de creación de Civic se utilizaba el token ERC20 aunque actualmente parece que se está migrando a otras plataformas como RSK, primera plataforma de smart contracts para Bitcoin [10][11][12]. Participantes en el ecosistema
* Validadores: institución que tiene la capacidad de certificar la Información de Identificación Personal (PII). Necesidad de participación de proveedores de IDVs confiables (gobiernos, instituciones financieras…) * Solicitante: una institución que requiere una prueba de PII validada. * Usuario: miembro del público que quiere usar un servicio de Solicitante. El usuario controla quién tiene acceso a sus datos. * CVC: el CVC pagado en una transacción se distribuye al validador y al usuario como una recompensa por compartir información.
* Attestation: Root Hash, cada nodo que representa un elemento contiene un hash de su contenido y un hash de los hashes de sus nodos secundarios. El hash raíz se convierte en una dirección de cadena de bloques válida utilizando la propiedad aditiva de criptografía de curva elíptica (ECC):
De manera que resulta imposible determinar el usuario y el validador asociados con la dirección.
Verificación de datos
Una vez que los datos de identidad son proporcionados por el usuario, Civic utiliza múltiples servicios de validación de identidad para verificar los datos enviados en función del teléfono, crédito disponible, redes sociales y otros registros públicos. Combina diferentes fuentes acreditadas con algoritmos de detección de fraude, auditoría y motor de decisión interna de Civic. Civic envía los datos de identidad verificados a la aplicación del usuario y la confirmación a la blockchain. Los datos verificados por Civic se comparten cifrados directamente con el cliente, Civic no ve ni almacena datos confidenciales, sólo recibe hashes de los datos de identidad junto con una dirección blockchain para almacenar el hash.
Fig 5. Esquema simplificado de validación de datos [13].
Modelo de confirmación/atestación El siguiente diagrama muestra un ejemplo de una confirmación inicial por parte de un validador.
Fig 6. Proceso de verificación de un usuario [13].
1. El usuario solicita un producto o servicio al Proveedor de Servicios A (A) y le envía la PII (Personally Identifiable Information) requerida almacenada en la aplicación Civic. 2. A verifica la PII del usuario utilizando sus métodos de verificación. 3. A calcula los hashes de los PII almacenados en el dispositivo del usuario y confirma esa PII en la blockchain. La confirmación puede incluir metadatos como el nivel de verificación o detalles relacionados con el proceso de verificación de A o cualquier norma aplicable (NIST, FIPS). Los detalles de la transacción blockchain de esta confirmación se proporcionan al usuario. 4. Posteriormente, el usuario solicita un producto o servicio al Proveedor de Servicios B (B). 5. B solicita acceso a toda o cierta información de PII, incluyendo las reglas y requisitos que B quiere aceptar. La app Civic determinará si se cumplen estos requisitos. 6. Asumiendo que el usuario tiene y quiere compartir la información requerida, B y el usuario acuerdan un validador mutuo que haya confirmado previamente los datos y las reglas y requisitos en torno a esos datos. En este caso, asumimos que el validador es A, que ofrece un precio (CVC) por su confirmación. Entonces B acepta ese precio. 7. El usuario envía a B un resumen de los tipos de datos confirmados por A, así como la información necesaria para que B localice y vea los detalles de la transacción en la cadena de bloques relacionados con la confirmación de A en el blockchain. B podría recrear los hashes para esa PII y compararlos con la transacción en la cadena de bloques, confirmando así la disponibilidad de los datos solicitados. Si B está conforme con los hashes resultantes, B compra la confirmación y paga la cantidad de CVC acordada, mediante un smart contract.
8. Una vez que B haya pagado el CVC, el usuario, a través de su app Civic puede enviar a B la PII solicitada en texto en plano. 9. Para completar la transacción, el usuario libera el CVC compartido con A (validador original) en la proporción definida por el smart contract.
4. Selfkey - Identidad auto-soberana
Selfkey sostiene que los usuarios deben estar en el centro del proceso de gestión de identidad, un concepto conocido como Identidad Auto-Soberana (Self-Sovereign IDentity, SSID). Se trata de una solución para escapar de los documentos en papel y pasar a una identidad digital con privacidad, seguridad, transparencia y derechos individuales. SelfKey es una implementación de SSID, desarrollada utilizando la tecnología de cadena de
bloques o blockchain, con las claves correspondientes en una “e-wallet” de identidad digital [14].
El token KEY El token KEY (Key to Encrypt Yourself), elemento esencial de la red SelfKey, es un token criptográfico compatible con Ethereum ERC-20. Es un mecanismo de confianza que permite a los participantes intercambiar valores dentro del ecosistema SelfKey. KEY se utilizará como derecho de acceso a productos y servicios en la red, así como unidad de pago y prueba de reputación dentro del sistema de identidad. Por ejemplo, KEY puede ser utilizado, para pagar por las confirmaciones de identidad o recibir declaraciones de identidad. Cada participante del ecosistema tiene un papel valioso a desempeñar para fomentar el uso
del sistema utilizando KEY, así como proporcionar pruebas de identidad y declaraciones atestiguadas.
Ecosistema SELFKEY
Al igual que en Civic, dentro del ecosistema Selfkey, tres partes intercambian valor: dueños de identidad, partes confiantes y entidades certificadoras. Cuando el usuario descarga la SelfKey Identity Wallet, ésta está vacía. Primeramente, necesita almacenar un
par de claves, pública/privada, que se convertirán en la "pluma" digital del usuario para firmar documentos digitalmente. Debido a que la clave privada es conocida únicamente por
el dueño de la identidad, cada vez que se aplica esta firma digital, se autentica y valida la identidad del usuario a terceras partes de forma confidencial, segura y sin necesidad de presencia física.
Tiene un enfoque orientado al usuario, ya que mantiene el control completo de su identidad. El usuario es la última autoridad de su propia identidad, pudiendo hacer referencia a su identidad, actualizarla o incluso ocultarla o hacerla desaparecer. Los usuarios pueden elegir hacerla pública o privada según sus preferencias individuales. Por otro lado, las partes confiantes pueden acceder rápidamente a las solicitudes de identidad validadas y los verificadores o entidades certificadoras pueden recibir el pago por sus contribuciones y certificaciones.
Tecnología SELFKEY
La siguiente figura muestra las diferentes capas de la tecnología y su estado de desarrollo.
Fig 7. Capas de la tecnología Selfkey [15] [16] (Septiembre 2017)
Blockchain: Ethereum
Validación de nodos: utilizan el mecanismo de consenso normal de Ethereum y han realizado pruebas con Monax [17] y el protocolo de consenso Tendermint [18], y cadenas de bloque alternativas.
Almacenamiento: los documentos y datos se alojarán localmente en el dispositivo del usuario hasta que los mueva (con su consentimiento y a su discreción) a otro lugar. Están planteándose desarrollar drivers de almacenamiento controlado por el usuario.
Gestión / Recuperación de claves: para evitar que las verificaciones se pierdan en el caso de que un usuario no pudiera recuperar las claves, planean utilizar Uport, mecanismo de recuperación de claves, mediante el cual un usuario puede delegar la responsabilidad de la recuperación en una o más cuentas de su elección. Uport proveerá interoperabilidad y se cuenta con estándares que la comunidad Ethereum ya reconoce y acepta.
Protocolos: con el fin de que la red SelfKey sea interoperable al máximo, se dedican una serie de estándares y trabajos a la capa de protocolo. Los datos se moverán en un formato estructurado de un lugar a otro (potencialmente de una cadena de bloques a otra). Están trabajando en este ámbito con otros sistemas líderes de identidad para garantizar la interoperabilidad; Sovrin [19], W3C [20], Uport [21], etc.
ID wallet: la Identity Wallet estará disponible en el momento del lanzamiento del ecosistema y es el punto de partida para todas las transacciones de identidad. La ID Wallet también podrá almacenar el token KEY. A través de la ID wallet, el usuario también puede acceder a diferentes apps en la capa de aplicación. Cualquier persona puede desarrollar en esta capa de aplicación y cualquier proveedor de identidad puede hacer interoperable su conjunto de claves o certificados, por ejemplo, varios certificados x509v3, que califican bajo una ordenanza gubernamental de transacciones electrónicas.
Microservicios ID: la capa de microservicios permite en gran medida el cumplimiento de las leyes y normativas internacionales, y será utilizada principalmente por las entidades certificadoras y las partes confiantes. Cualquier compañía puede proporcionar estos microservicios aunque inicialmente se han construido y proporcionado algunos microservicios.
Capa de aplicación: cualquier aplicación puede ser desarrollada en la plataforma SelfKey, ya que tiene API abierta, código fuente abierto, incluyendo la Identity Wallet.
Verificación de datos
Las siguientes figuras muestran los pasos necesarios para crearse una cuenta y autenticarse en Selfkey, y el caso de uso en el que un usuario quiere acceder a múltiples exchanges de criptomonedas compartiendo la misma información de su wallet.
Fig 8. Proceso de autenticación en Selfkey [15] (Septiembre 2017)
Fig 9. Ejemplo de creación de cuentas en diferentes Exchanges [15] (Septiembre 2017)
5. Conclusión Como hemos podido comprobar, se está incrementando el interés por el uso de blockchain para soluciones de identidad seguras descentralizadas, prueba de ello son la cantidad de startups creadas recientemente. Entre las principales ventajas que aportan los sistemas de gestión de identidad basados en cadenas de bloques sobre los sistemas tradicionales, destacan, por un lado, la gestión y control pleno de identidad mediante única clave para el usuario, por otro, la monetización para las entidades certificadoras y por último, el rápido acceso a las solicitudes de identidad validadas para las partes confiantes. Sin embargo, si bien es cierto que blockchain podría resultar de gran acierto para gestionar la identidad digitalmente, las soluciones analizadas se encuentran en una etapa inicial. Queda mucho recorrido para su maduración y en ese punto poder aplicar un análisis de seguridad informática más exhaustivo (protocolos finales, arquitectura, algoritmos implementados, etc.). En cualquier caso su evolución es imparable y es necesario estar atentos a las mejoras propuestas, porque al final, como diría Lao Tse: “Todo viaje, por largo que sea, siempre empieza por un solo paso”. ;) Para cualquier duda, comentario, corrección o para saber dónde enviarnos un café podéis contactar con nosotros en la dirección de email: [email protected] o por twitter en @i4ssecurity
6. Anexo A. Token ERC20 El token ERC20 [22] es un estándar creado por Ethereum para que cualquiera pueda crear su propia criptomoneda. A las criptomonedas creadas a partir del Token ERC20 se las denomina en muchas ocasiones como tokens o fichas. La característica principal de una moneda hablando en términos de criptomonedas es que opera de forma independiente a cualquier otra plataforma, es decir, dispone de su propia blockchain y opera de forma independiente a cualquier otra blockchain existente. Los token, a diferencia de las monedas, no necesitan crear una blockchain desde cero librándose de definir los protocolos, pruebas de esfuerzo, algoritmos, etc., que los nodos de la blockchain deben emplear. Existen diversas plataformas en las que los token pueden existir, las más empleada es Ethereum aunque existen alternativas como Omni, Ardor o NEO entre otras [23]. La aparición de este estándar ha facilitado la creación de diversas criptomonedas que operan directamente sobre la blockchain de Ethereum. ERC20 aporta lo básico para que los tokens sean interoperables entre sí, define con código las funciones que debe tener un token:
● Obtener el suministro total de tokens ● Obtener el saldo de la cuenta ● Transferir token ● Aprobar gastar el token
7. Referencias
[1] Web de BlockStack. https://blockstack.org/
[2] BlockStack Whitepaper. https://blockstack.org/whitepaper.pdf
[3] BlockStack browser announcement. https://blockstack.org/blog/introducing-the-blockstack-browser-a-gateway-to-a-new-decentralized-internet
[4] Casa App. https://casa.cash/
[5] Afia App. http://www.afiabeta.com/
[6] Guild App. http://www.guildblog.com/
[7] Graphite App. https://www.graphitedocs.com/
[8] Ongaku Ryoho App. https://isotach.io/
[9] Web de CIVIC. https://www.civic.com/
[10] Detalles CIVIC en Icorating. https://icorating.com/ico/civic-cvc/
[11] Civic token flying under the radar, Steemit blog. https://steemit.com/cryptocurrency/@xsid/civic-token-flying-under-the-radar [12] Web RSK. https://www.rsk.co/
[13] Whitepaper de CIVIC. https://tokensale.civic.com/CivicTokenSaleWhitePaper.pdf
[14] Web de Selfkey. https://selfkey.org/
[15] Selfkey High-Level Technical Documentation. https://docsend.com/view/7h7guyz
[16] Selfkey Whitepaper. https://selfkey.org/wp-content/uploads/2017/11/selfkey-whitepaper-en.pdf
[17] Web de Monax. https://monax.io/
[18] Web de Tendermint. https://tendermint.com/
[19] Web de Sovrin. https://sovrin.org/
[20] Web de W3C. https://www.w3.org/
[21] Web de Uport. https://www.uport.me/
[22] ERC20 Token Standard. https://theethereum.wiki/w/index.php/ERC20_Token_Standard
[23] Cryptocurrency Market Capitalizations. https://coinmarketcap.com/