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.
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:
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.
Hashlink — Hash
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:
Figura 1.0 -Listado de Transacciones con sus
respectivos HASH — SHA1
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.
Figura 2.0 — Hash
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:
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:
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”
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:
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:
Las evidencias son registradas en los nodos de
stamping.io, la blockchain de Ethereum, Bitcoin y
Litecoin.