Verificación de datos en Amazon QLDB - Amazon Quantum Ledger Database (Amazon QLDB)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Verificación de datos en Amazon QLDB

Con Amazon QLDB, puede confiar en que el historial de cambios en los datos de su aplicación es preciso. QLDB utiliza un registro transaccional inmutable, conocido como diario, para el almacenamiento de datos. El diario realiza un seguimiento de cada cambio en los datos confirmados y mantiene un historial de cambios completo y que se pueda verificar con el paso del tiempo.

QLDB utiliza la función hash SHA-256 con un modelo basado en el árbol de Merkle para generar una representación criptográfica de su diario, conocida como resumen. El resumen actúa como una firma única de todo el historial de cambios de sus datos en un momento dado. El resumen se utiliza para comprobar la integridad de las revisiones de los documentos en relación con esa firma.

¿Qué tipo de datos se pueden verificar en QLDB?

En QLDB, cada libro mayor tiene exactamente un diario. Un diario puede tener varias cadenas, que son particiones del diario.

nota

Actualmente, QLDB admite diarios con una sola cadena.

Un bloque es un objeto que se asigna a la cadena del diario durante una transacción. Este bloque contiene objetos de entrada, que representan las revisiones de documentos resultantes de la transacción. Puede verificar una revisión individual o un bloque de diario completo en QLDB.

El siguiente diagrama ilustra la estructura de este diario.


                Diagrama de estructura de secuencia de Amazon QLDB que muestra un conjunto de bloques encadenados que componen una cadena, así como el número de secuencia y el hash de bloque de cada bloque.

El diagrama muestra que las transacciones se registran en el diario como bloques que contienen entradas de revisión de documentos. También muestra que cada bloque está encadenado a los bloques subsiguientes y tiene un número de secuencia para especificar su dirección dentro de la cadena.

Para obtener información sobre el contenido de los datos en un bloque, consulte Contenido del diario en Amazon QLDB.

¿Qué significa integridad de los datos?

La integridad de los datos en QLDB significa que el diario de su libro mayor es, de hecho, inmutable. En otras palabras, sus datos (específicamente, cada revisión de un documento) se encuentran en un estado en el que se cumple lo siguiente:

  1. Se encuentran en el mismo lugar de su diario en el que se escribieron por primera vez.

  2. No se han modificado de ninguna manera desde que se escribieron.

¿Cómo funciona la verificación?

Para entender cómo funciona la verificación en Amazon QLDB, puede dividir el concepto en cuatro componentes básicos.

Hashing

QLDB utiliza la función hash criptográfica SHA-256 para crear valores hash de 256 bits. Un hash actúa como una firma única de longitud fija de cualquier cantidad arbitraria de datos de entrada. Si cambia cualquier parte de la entrada (incluso un solo carácter o un bit), el hash de salida cambia por completo.

El siguiente diagrama muestra que la función hash SHA-256 crea valores hash completamente únicos para dos documentos QLDB que difieren solo en un dígito.


                    Diagrama que muestra que la función hash criptográfica SHA-256 crea valores hash completamente únicos para dos documentos QLDB que difieren solo en un dígito.

La función hash SHA-256 es unidireccional, lo que significa que no es matemáticamente factible calcular la entrada cuando se da una salida. El siguiente diagrama muestra que no es posible calcular el documento QLDB de entrada cuando se le da un valor hash de salida.


                    Diagrama que muestra que no es factible calcular el documento QLDB de entrada cuando se le da un valor hash de salida.

Las siguientes entradas de datos se codifican en QLDB con fines de verificación:

  • Revisiones del documento

  • Instrucciones PartiQL

  • Entradas de revisión

  • Bloques de diario

Resumir

Un resumen es una representación criptográfica de todo el diario de su libro mayor en un momento dado. Un diario es solo apéndice, y los bloques del diario están secuenciados y encadenados de forma similar a las cadenas de bloques.

Puede solicitar un resumen de un libro mayor en cualquier momento. QLDB genera el resumen y se lo devuelve como un archivo de salida seguro. Luego, use ese resumen para verificar la integridad de las revisiones de los documentos que se realizaron en un momento anterior. Si se vuelven a calcular las divisiones empezando por una revisión y finalizando por el resumen, se demuestra que los datos no se han modificado en el transcurso.

Árbol de Merkle

A medida que aumenta el tamaño del libro mayor, resulta cada vez más ineficiente volver a calcular toda la cadena de hash del diario para su verificación. QLDB utiliza un modelo de árbol de Merkle para abordar esta ineficiencia.

Un árbol de Merkle es una estructura de datos de árbol en la que cada nodo de hoja representa un hash de un bloque de datos. Cada nodo que no es hoja es un hash de sus nodos secundarios. Comúnmente utilizado en las cadenas de bloques, un árbol de Merkle ayuda a verificar de manera eficiente grandes conjuntos de datos con un mecanismo a prueba de auditorías. Para obtener más información sobre los árboles de Merkle, consulte la página de Wikipedia sobre los árboles de Merkle. Para obtener más información sobre las pruebas de auditoría de Merkle y ver un ejemplo de caso de uso, consulte Cómo funcionan las pruebas de registro en el sitio sobre transparencia de certificados.

La implementación QLDB del árbol de Merkle se construye a partir de la cadena hash completa de un diario. En este modelo, los nodos de hoja son el conjunto de todos los hashes de revisión de los documentos individuales. El nodo raíz representa el resumen de todo el diario en un momento dado.

Con una prueba de auditoría de Merkle, puede verificar una revisión consultando solo un pequeño subconjunto del historial de revisiones de su libro mayor. Para ello, recorra el árbol desde un nodo de hoja determinado (revisión) hasta su raíz (resumen). A lo largo de esta ruta transversal, se comprimen de forma recursiva pares de nodos hermanos para calcular su hash principal hasta terminar con el resumen. Este recorrido tiene una complejidad temporal de nodos log(n) del árbol.

Prueba

Una prueba es la lista ordenada de hashes de nodos que QLDB devuelve para un resumen y una revisión de documentos determinados. Consiste en los hashes que requiere un modelo de árbol de Merkle para encadenar el hash del nodo de hoja dado (una revisión) al hash raíz (el resumen).

Al cambiar los datos confirmados entre una revisión y un resumen, se rompe la cadena de hash del diario y no se puede generar una prueba.

Ejemplo de verificación

El siguiente diagrama ilustra el modelo de árbol de hash de Amazon QLDB. Muestra un conjunto de hashes de bloques que se acumulan hasta el nodo raíz superior, que representa el resumen de una cadena del diario. En un libro mayor con un diario de cadena única, este nodo raíz también es el resumen de todo el libro mayor.


                Diagrama de árbol de hash de Amazon QLDB para un conjunto de hashes de bloques en una cadena del diario.

Supongamos que el nodo A es el bloque que contiene la revisión del documento cuyo hash desea verificar. Los siguientes nodos representan la lista ordenada de hashes que QLDB ofrece en su prueba: B, E, G. Estos hashes son necesarios para volver a calcular el resumen a partir del hash A.

Para volver a calcular el resumen, haga lo siguiente:

  1. Comience con el hash A y concaténelo con el hash B. Luego, transforme en hash el resultado para calcular D.

  2. Use D y E para calcular F.

  3. Use F y G para calcular el resumen.

La verificación se realiza correctamente si el resumen recalculado coincide con el valor esperado. Con un hash de revisión y un resumen, no es posible aplicar ingeniería inversa a los códigos hash de una prueba. Por lo tanto, este ejercicio demuestra que su revisión se escribió realmente en la ubicación de este diario en relación con el resumen.

¿Cómo afecta la redacción de los datos a la verificación?

En Amazon QLDB, una instrucción DELETE solo elimina un documento de forma lógica al crear una nueva revisión que lo marca como eliminado. QLDB también permite realizar una operación de edición de datos para eliminar permanentemente las revisiones de documentos inactivos del historial de una tabla.

La operación de redacción elimina solo los datos de usuario de la revisión especificada, sin alterar el diario ni los metadatos del documento. Una vez redactada una revisión, los datos de usuario de la revisión (representados por la estructura data) se sustituyen por un campo dataHash nuevo. El valor de este campo es el hash de Amazon Ion de la estructura data eliminada. Para obtener más información y ver un ejemplo de operación de redacción, consulte Editar revisiones de documentos.

Como resultado, el libro mayor mantiene la integridad general de sus datos y sigue siendo verificable criptográficamente mediante las operaciones de la API de verificación existentes. Puedes seguir utilizando estas operaciones de API según lo previsto para solicitar un resumen (GetDigest), solicitar una prueba (GetBlocko GetRevision) y, a continuación, ejecutar tu algoritmo de verificación con los objetos devueltos.

Recalcular un hash de revisión

Si planea verificar una revisión de un documento individual recalculando su hash, debe comprobar condicionalmente si la revisión se ha redactado. Si la revisión se redactó, puede usar el valor hash que se proporciona en el campo dataHash. Si no estaba redactada, puede volver a calcular el hash utilizando el campo data.

Al realizar esta comprobación condicional, puede identificar las revisiones redactadas y tomar las medidas adecuadas. Por ejemplo, puede registrar los eventos de manipulación de datos con fines de supervisión.

Introducción a las verificaciones

Antes de poder verificar los datos, debe solicitar un resumen a su libro mayor y guardarlo para más adelante. Cualquier revisión de un documento que se efectúe antes del último bloque incluido en el resumen podrá ser cotejada con ese resumen.

A continuación, solicita una prueba a Amazon QLDB para una revisión apta que desee verificar. Con esta prueba, llama a una API del cliente para volver a calcular el resumen, empezando por el hash de la revisión. Siempre que el resumen guardado anteriormente sea conocido y confiable fuera de QLDB, la integridad del documento quedará demostrada si el hash del resumen recalculado coincide con el hash del resumen guardado.

importante
  • Lo que está demostrando específicamente es que la revisión del documento no se modificó entre el momento en que guardó este resumen y el momento en que realizó la verificación. Puede solicitar y guardar un resumen tan pronto como se publique en el diario una revisión que desee verificar más adelante.

  • Como práctica recomendada, sugerimos que solicite resúmenes de forma regular y los guarde aparte del libro mayor. Determine la frecuencia con la que solicita resúmenes en función de la frecuencia con la que realiza las revisiones en su libro mayor.

    Para ver una entrada de AWS blog detallada en la que se analiza el valor de la verificación criptográfica en el contexto de un caso de uso realista, consulte Verificación criptográfica en el mundo real con Amazon QLDB.

Para obtener step-by-step guías sobre cómo solicitar un resumen del libro mayor y, a continuación, verificar los datos, consulte lo siguiente: