blockchain

18-  Inmutar Bases de Datos usando Blockchain

 

 

Autor: Jose Zalate

Fecha: 5 Marzo 2019

 

Resumen

En toda base de datos existen registros que en el eventual caso que sean eliminados se perderían evidencias de transacciones, seguridad o autorizaciones importantes, por lo que siempre ha sido un reto importante para los administradores de base de datos, jefes de seguridad informática o directores de sistemas, evitar que estos datos puedan ser eliminados o modificados.

El uso de hash para evitar que los datos de una fila pueda ser modificados, proporcionan una parte de la solución, estos hash son algoritmos de resumen criptográficos que permiten obtener una secuencia de caracteres que representan a una secuencia de datos pero, los beneficios principales se pierden si una persona realiza la modificación de un registro y re-calcula el hash de validación, por lo que se requiere entrelazar con los siguientes registros, obligando a re-calcular toda la secuencia de datos y registrar cada cierta cantidad de filas el hash entrelazado para evitar que sea modificado.

Pretender hacer un registro por cada fila en una plataforma externa para evitar la modificación de los datos, es una solución que técnicamente podría generar problemas de rendimiento, además generaría un problema de seguridad por lo que se requiere conexión a Internet en forma permanente.

La solución que proponemos es crear link enlazados entre los hash que representan cada registro de a tabla que se desea inmutar (HashLink), y cada “x” filas el valor del hash entrelazado se registra en una red de igual-a-igual (Blockchain), evitando que los datos puedas ser adulterados con el consentimiento del DBA o encargados de entregar credenciales de acceso.

 

https://cdn-images-1.medium.com/max/800/1*IaDrrE6753Y8Oyx91t2LUA.png Ampliar Imagen

 

Introducción

Si resumimos la seguridad de muchas base de datos se centra en ciertas tablas de trazabilidad o auditoria (comúnmente llamadas logs de transacciones), que prácticamente se encuentran en todas las bases de datos corporativas y fungen de ser una tabla con la suficiente autoridad para ser considerada como la verdad absoluta y extrema de las transacciones o registros que un proceso ha realizado.

Es cierto que el sistema funciona suficientemente bien para la mayoría de las transacciones, aún se sufre las debilidades inherentes del modelo basado en la confianza al administrador de la base de datos, eficiencia de los desarrolladores, responsabilidad del encargado de la seguridad informática, entre otros. Si nos fijamos bien, la confianza no se encuentra en las tablas de auditoria sino en las personas que las administran.

El reto de crear registros o transacciones completamente no reversibles (inmutables) no siempre es logrado en la mayoría de las compañías, por más que existan mecanismos de seguridad y privilegios, se cuenta con la posibilidad de reversión, la necesidad de confianza se extiende a tener una tercera entidad que evite que eso suceda con la finalidad de evitar que la historia real de las transacciones, sean registradas tal como sucedió.

Una solución simplista sería enviar toda la tabla de auditoria a un tercero de confianza basada en Blockchain, donde una red de nodos puedan certificar que una secuencia de datos fueron creadas en un momento del tiempo y no han sido adulterados, sin embargo no todas las compañías, por ahora, cuentan con un nodo de Blockchain interconectado con otros nodos para generar la confianza que se necesita para evitar la adulteración.

En caso de utilizar un nodo de confianza en la nube, el reto de evitar el problema de rendimiento por la latencia de conectividad se suma a la complejidad de la solución, para que la solución este completa se requiere evitar que todos los registros sean enviados uno por uno al nodo descentralizado, por lo que se deberá diseñar un mecanismo que entrelace los hash que representan a cada fila de la tabla de transacciones y a través de un algoritmo de resumen criptográfico que se entrelace con el registro anterior, forzando a un intruso que desea realizar un cambio, a realizar una serie cálculos de las nuevos hash para las filas siguientes.

Establecer de un canal de comunicaciones como un tercero de confianza que permita validar que los datos, basado en pruebas criptográficas en lugar de basarse en la confianza a las personas, permitirá que los datos registrados en esas tablas de auditoria sean considerados como pruebas forenses con valor probatorio legal, sin la necesidad de tener que contar con un notario, fedatario o autoridad de sellado de tiempo.

En éste documento, proponemos una solución al problema de inmutación de registros mediante el uso de un servidor de marcas de tiempo distribuido para generar las suficientes prueba matemáticas (computacionales) del orden cronológico de las transacciones. El sistema es seguro dado que todos los nodos de la red son honestos, dado que la red blockchain implementada es permisionada, evitando que cualquier personas sin autorización pueda instalar nodos en nuestra red de alta confianza.

Casos de usos

Sistema financiero 
Los datos de “originación” de una operación de crédito, que fueron utilizados para calcular el rating y por consecuencia la tasa de interés, se imaginan que pasaría si luego de otorgar el crédito, esos datos se modifican, en el caso de una auditoria el personal de riesgo estaría expuesto en un caso de fraude. Los pagos de amortización de un crédito, imagínese que por error o en forma intencionada estos sean alterados, no cuadraría el saldo de la deuda con los movimientos de las amortizaciones.

Las operaciones o movimiento de una cuenta pasiva, los otorgamientos de privilegios de acceso a un determinado sistema, los logs de operaciones fraudulentas, las operaciones que deben ser reportadas por el oficial de cumplimiento para evitar lavados de activos, los bloqueos de cuentas o tarjetas, los reclamos reportados por los clientes, las atenciones a los pedidos de cobranzas coactivas, etc.

Entidades gubernamentales
Las cobranzas por servicios de procedimientos TUPA, la lista de documentos electrónicos, digitales o digitalizados que han sido recibidos por mesa de partes, las orden de compras, las conformidades de servicios, las vistas de funcionarios, los pagos de viáticos, las denuncias y reclamos, etc.

Laboratorios farmacéuticas o Comercio Mayorista
Pruebas de calidad del lote de producción, pruebas de calidad de insumos, reclamos o denuncias, resultados de estudios clínicos, registro de patentes, registro de items robados, registro de items dados de baja por incumplimiento de calidad esperada, listado de items de muestras médicas, listado de items dados de baja por vencimiento de componente activo, transacciones de ventas, etc.

Retail: Comercio Minorista
Pruebas de calidad del lote de producción, pruebas de calidad de insumos, reclamos o denuncias, resultados de estudios de investigación, registro de patentes, registro de items robados, registro de items dados de baja por incumplimiento de calidad esperada, listado de items de muestras o promoción, transacciones de ventas, etc.

Evidencia digital

Definimos una evidencia digital como una cadena de caracteres conformados por un resumen criptográfico basado en el algoritmo de hashing, por ejemplo para esta secuencia de datos:

https://cdn-images-1.medium.com/max/800/1*aPpdvORRfWsNbQjgYO7sPw.png

Secuencia de datos en Log de Auditoria

Calculando el valor hash de la evidencia digital de los datos expuestos:

SHA1(‘ 143445.507881944443445.5078819444PR013Ok1918r9Gw’) 
Valor:
8b0aa31e88a68c93f3cffe50aeb97fb4f88adee1

Cada empresa podrá transferir las evidencias digitales a la plataforma de registros descentralizada basada en Blockchain, en un punto de inmutación, siendo ideal que cada organización cuente con un nodo instalado en su red local, en ese caso, se puede delegar el registro de cada log que actualmente se encuentra en la base de datos para que sea gestionado por la plataforma de contabilidad distribuida.

Si no se cuenta con un nodo Blockchain dentro de su red local, y se requiere usar un nodo que se encuentra en la nube, el problema, por supuesto, es evitar que las empresas tengan que transferir todos los registros, evitando “relentear” el sistema producto de la latencia de estar enviando constantemente información por internet.

La red de nodos de evidencias digitales, donde cada empresa que utiliza la solución es parte del consorcio, constituye una autoridad central de confianza, que verifica que cada transacción sea registrada correctamente, emitiendo un certificado de evidencia forense cuando se requiera, dando fe de la existencia de una secuencia de datos en un momento determinado del tiempo.

HashlinkHash entrelazados

En este documento se ha demostrado que la mejor forma de evitar la latencia en el registro de la plataforma de registro de evidencias digitales, es manejar una red secuencias de hash entrelazadas entre sí, tal como se plantea en el siguiente gráfico:

https://cdn-images-1.medium.com/max/800/1*Z4oFIPAjCDoHNmI-WObCFg.png

Figura 1.0 -Listado de Transacciones con sus respectivos HASHSHA1

En la figura 1.0 se muestra la lista de transacciones donde se ha calculado el hash de cada registro, utilizando el algoritmo de resumen criptográfico SHA1, pudiéndose utilizar cualquier de los que el cliente desea, incluso SHA256 o SHA512.

Si nos fijamos en el registro 1 ó 2 se tiene 2 hash diferentes, que representan a sus correspondiente filas, sin embargo, en caso que uno de ellos sea adulterado se podría volver a calcular el hash, siempre que este no se encuentre registrado en otro lugar seguro, para evitar que el hash pueda ser modificado se propone crear un sistema de entrelazamiento de hash, donde el segundo registro calcule un hash basado en el hash anterior y el hash de la fila, evitando que las filas puedan ser modificadas sin que se deba calcular todos los hash consecutivos.

https://cdn-images-1.medium.com/max/800/1*OIIVpEew1lA0lCTL9i6UAg.png

Figura 2.0Hash Entrelazado del registro 1 y registro 2

En la Figura 2.0 nótese que el hash entrelazado es calculado utilizando el resumen criptográfico SHA1 del resultado de concatenar el hash del primer registro con el segundo registro, retornando un nuevo hash con el valor ca6fd34c29b131f03944a0697ed1a899db1c0f39.

Si hacemos éste calculo en todas las filas de la tabla de transacciones nos daría como resultado la siguiente tabla:

Hash Entrelazados

Figura 3.0 Hash Entrelazados de toda la tabla de transacciones

La solución contempla que cada vez que se registre un nuevo registro en la tabla se calcule el nuevo hash entrelazado, de tal manera que cualquier alteración de un registro anterior, toda la cadena de hash entrelazadas deberá ser modificada, el siguiente ejemplo pretende hacer un cambio en el cuarto registro donde se procede a cambiar el precio de 12 a 14, el resultado de del hash del registro 4 va a ser cambiado, pero deberá “recalcularse” todos los registros siguientes por están entrelazados entre si, si se realizará ese proceso la tabla y las evidencias digitales se modificaría de la siguiente forma:

Hash Entrelazados

Figura 4.0 Hash Entrelazados que han sido alterados en el registro 4.

Al cambiar el registro #4, los datos de los hash de evidencias se modifican a partir de esa fila, alterando también la cadena de hash entrelazados, alertando que un dato fue modificado, para evitar que alguien pueda volver a cambiar toda la cadena de transacciones, es importante que cada x filas o x tiempo, los datos puedan ser enviados a un nodo de Blockchain, en nuestro ejemplo vamos a utilizar stamping.io, como centro de registro de evidencias digitales que registra en la red de nodos permisionados, al que cualquier empresa puede unirse, además se registra en las Blockchain públicas de Bitcoin, Ethereum y Litecoin (próximamente en IOTA y CORDA).

Registros de evidencias

Para registrar un punto de la cadena de hash entrelazados en algún bloque de la Blockchain de stamping.io, se necesita crear un data wallet, para obtenerlo solo deberá ingresar a https://www.stamping.io/login/sign-up.html, llenar el formulario y hacer clic en el botón que dice “Crear data Wallet”

https://cdn-images-1.medium.com/max/800/1*ybLgvsUV9BHtwx8X3-3Epg.png Ampliar Imagen

Stamping.io Crear Data Wallet

El data wallet integrado de stamping.io, le permitirá registrar evidencias digitales en la red de nodos hyperledger Fabric que han sido montados en una red computacional, además de registrarse en Blockchain públicos sin necesidad de contar con billeteras en cada una de ellas y sin necesitar criptomonedas.

Una vez que haya creado su billetera de datos, se abrirá un panel de configuración donde usted deberá obtener un token de acceso, ingrese a panel/Data wallet y en la parte inferior de la pantalla podrá generar su token de acceso para uso del API:

https://cdn-images-1.medium.com/max/800/1*1v0FAaWiJkPDdNKtBXWs4A.png Ampliar Imagen

Token de Acceso.

Para registras las evidencias en stamping.io deberá realizar un POST a el siguiente servicio REST:

https://api.stamping.io/stamp/?
Authorization: Basic <Token de Acceso>

JSON a postear:
{
  evidence: <sha256>,
  data: <datos asociados>
}

Retorna:
{"code":"200", "message":"ok", "trxid":"","timestamp":1542261154000}

Los datos serán recibidos en la Blockchain de Stamping.io y podrán ser consultadas a través del servicio REST:

Buscar por hash registrado como evidencia digital:
https://api.stamping.io/getstamp/?byHash=<hash registrado>
Authorization: Basic <Token de Acceso>

Buscar por trxId que retorna stamping.io cuando se registra una evidencia digital:
https://api.stamping.io/getstamp/?byTrxid=<Trxid registrado>
Authorization: Basic <Token de Acceso>

Existen otras formas de validación, por ejemplo, usando el panel de stamping.io:

https://cdn-images-1.medium.com/max/800/1*JxBM3WbiegWUGLt8g_ySvA.png Ampliar Imagen

Las evidencias son registradas en los nodos de stamping.io, la blockchain de Ethereum, Bitcoin y Litecoin.

 

[Atrás]