Verificação de dados no Amazon QLDB - Amazon Quantum Ledger Database (Amazon QLDB)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Verificação de dados no Amazon QLDB

Com o Amazon QLDB, você pode confiar que o histórico de alterações nos dados do seu aplicativo é preciso. O QLDB usa um log transacional imutável, conhecido como diário, para armazenamento de dados. O diário rastreia todas as alterações em seus dados confirmados e mantém um histórico de alterações completo e verificável ao longo do tempo.

O QLDB usa a função hash SHA-256 com um modelo baseado em árvore Merkle para gerar uma representação criptográfica do seu diário, conhecida como resumo. O resumo funciona como uma assinatura exclusiva de todo o histórico de alterações dos seus dados em um determinado momento. Você usa o resumo para verificar a integridade das revisões do documento em relação a essa assinatura.

Que tipo de dados você pode verificar no QLDB?

No QLDB, cada ledger tem exatamente um diário. Um diário pode ter várias vertentes, que são partições do diário.

nota

Atualmente, o QLDB suporta diários com apenas uma única vertente.

Bloco é um objeto que é comprometido com a cadeia do diário durante uma transação. Esse bloco contém objetos de entrada, que representam as revisões do documento que resultaram da transação. Você pode verificar uma revisão individual ou um bloco de diário inteiro no QLDB.

O diagrama a seguir ilustra essa estrutura do diário.

Diagrama da estrutura do diário do Amazon QLDB mostrando um conjunto de blocos encadeados em hash que formam uma cadeia e o número sequencial e o hash de cada bloco.

O diagrama mostra que as transações são confirmadas no diário como blocos que contêm entradas de revisão do documento. Também mostra que cada bloco está encadeado em hash aos blocos subsequentes, e tem um número de sequência para especificar seu endereço na cadeia.

Para obter mais informações sobre o conteúdo de dados em um bloco, consulte Conteúdo do periódico no Amazon QLDB.

O que significa integridade de dados?

A integridade dos dados no QLDB significa que o diário do seu ledger é, de fato, imutável. Em outras palavras, seus dados (especificamente, cada revisão de documento) estão em um estado em que o seguinte é verdadeiro:

  1. Ele existe no mesmo local em seu diário em que foi escrito pela primeira vez.

  2. Não foi alterado de forma alguma desde que foi escrito.

Como a verificação funciona?

Para entender como a verificação funciona no Amazon QLDB, você pode dividir o conceito em quatro componentes básicos.

Hashing

O QLDB usa a função hash criptográfica SHA-256 para criar valores hash de 256 bits. Um hash atua como uma assinatura exclusiva de tamanho fixo de qualquer quantidade arbitrária de dados de entrada. Se você alterar qualquer parte da entrada, mesmo um único caractere ou bit, o hash de saída mudará completamente.

O diagrama a seguir mostra que a função de hash SHA-256 cria valores de hash completamente exclusivos para dois documentos QLDB que diferem em apenas um único dígito.

Diagrama mostrando que a função hash criptográfica SHA-256 cria valores de hash completamente exclusivos para dois documentos QLDB que diferem em apenas um único dígito.

A função hash SHA-256 é unidirecional, o que significa que não é matematicamente viável calcular a entrada quando se recebe uma saída. O diagrama a seguir mostra que não é possível calcular o documento QLDB de entrada quando se recebe um valor de hash de saída.

Diagrama mostrando que não é possível calcular o documento QLDB de entrada quando se recebe um valor de hash de saída.

As seguintes entradas de dados são criptografadas no QLDB para fins de verificação:

  • Revisões do documento

  • Instruções em PartiQL

  • Entradas de revisão

  • Blocos de diário

Resumo

Um resumo é uma representação criptográfica de todo o diário do seu livro em um determinado momento. Um diário é somente para anexar, e os blocos de diário são sequenciados e encadeados em hash de forma semelhante aos blockchains.

Você pode solicitar um resumo para um ledger a qualquer momento. O QLDB gera o resumo e o retorna para você como um arquivo de saída seguro. Em seguida, você usa esse resumo para verificar a integridade das revisões de documentos que foram confirmadas em um momento anterior. Se você recalcular os hashes começando com uma revisão e terminando com o resumo, você prova que seus dados não foram alterados no meio.

Árvore Merkle

À medida que o tamanho do seu ledger aumenta, torna-se cada vez mais ineficiente recalcular toda a cadeia de hash do diário para verificação. O QLDB usa um modelo de árvore Merkle para lidar com essa ineficiência.

Uma árvore Merkle é uma estrutura de dados em árvore na qual cada nó da folha representa um hash de um bloco de dados. Cada nó não foliar é um hash de seus nós secundários. Comumente usada em blockchains, uma árvore Merkle ajuda você a verificar com eficiência grandes conjuntos de dados com um mecanismo à prova de auditoria. Para obter mais informações sobre árvores Merkle, consulte a página da Wikipedia sobre árvores Merkle. Para saber mais sobre as provas de auditoria da Merkle e um exemplo de caso de uso, consulte Como funcionam as provas de log no site Certificate Transparency.

A implementação QLDB da árvore Merkle é construída a partir da cadeia de hash completa de um diário. Nesse modelo, os nós da folha são o conjunto de todos os hashes de revisão de documentos individuais. O nó raiz representa o resumo de todo o diário em um determinado momento.

Usando uma prova de auditoria Merkle, você pode verificar uma revisão verificando apenas um pequeno subconjunto do histórico de revisões do seu ledger. Você faz isso atravessando a árvore de um determinado nó da folha (revisão) até sua raiz (resumo). Ao longo desse caminho de travessia, você faz o hash recursivo de pares de nós irmãos para calcular o hash principal até terminar com o resumo. Essa travessia tem uma complexidade temporal de nós log(n) na árvore.

Prova

Uma prova é a lista ordenada de hashes de nós que o QLDB retorna para um determinado resumo e revisão de documento. Ele consiste nos hashes exigidos por um modelo de árvore Merkle para encadear o hash do nó foliar fornecido (uma revisão) ao hash raiz (o resumo).

Alterar qualquer dado confirmado entre uma revisão e um resumo quebra a cadeia de hash do seu diário e impossibilita a geração de uma prova.

Exemplo de verificação

O diagrama a seguir ilustra o modelo de árvore de hash do Amazon QLDB. Ele mostra um conjunto de hashes de blocos que se acumulam até o nó raiz superior, que representa o resumo de uma sequência do diário. Em um ledger com um diário de fita única, esse nó raiz também é o resumo de todo o ledger.

Diagrama de árvore de hash do Amazon QLDB para um conjunto de hashes de blocos em uma cadeia de diário.

Suponha que o nó A seja o bloco que contém a revisão do documento cujo hash você deseja verificar. Os nós a seguir representam a lista ordenada de hashes que o QLDB fornece em sua prova: B, E, G. Esses hashes são necessários para recalcular o resumo do hash A.

Para recalcular o resumo, faça o seguinte:

  1. Comece com o hash A e concatene-o com o hash B. Em seguida, faça o hash do resultado para calcular D.

  2. Use D e E para calcular F.

  3. Use F e G para calcular o resumo.

A verificação será bem-sucedida se o resumo recalculado corresponder ao valor esperado. Com um hash de revisão e um resumo, não é possível fazer engenharia reversa dos hashes em uma prova. Portanto, este exercício prova que sua revisão foi realmente escrita neste local do periódico em relação ao resumo.

Como a redação de dados afeta a verificação?

No Amazon QLDB, uma instrução DELETE só exclui logicamente um documento criando uma nova revisão que o marca como excluído. O QLDB também oferece suporte a uma operação de redação de dados que permite excluir permanentemente revisões de documentos inativas no histórico de uma tabela.

A operação de redação exclui somente os dados do usuário na revisão especificada e deixa a sequência do diário e os metadados do documento inalterados. Depois que uma revisão é redigida, os dados do usuário na revisão (representados pela estrutura data) são substituídos por um novo campo dataHash. O valor desse campo é o hash Amazon Ion da data estrutura removida. Para obter mais informações e um exemplo de uma operação de redação, consulte Redigindo revisões de documentos.

Como resultado, o ledger mantém a integridade geral dos dados e permanece criptograficamente verificável por meio das operações existentes da API de verificação. Você ainda pode usar essas operações de API conforme o esperado para solicitar um resumo (GetDigest), solicitar uma prova (GetBlockou GetRevision) e, em seguida, executar seu algoritmo de verificação usando os objetos retornados.

Recalculando um hash de revisão

Se você planeja verificar uma revisão de documento individual recalculando seu hash, você deve verificar condicionalmente se a revisão foi editada. Se a revisão foi redigida, você pode usar o valor de hash fornecido no campo dataHash. Se não tiver sido editado, você pode recalcular o hash usando o campo data.

Ao fazer essa verificação condicional, você pode identificar as revisões editadas e tomar as medidas apropriadas. Por exemplo, você pode registrar eventos de manipulação de dados para fins de monitoramento.

Introdução à verificação

Antes de verificar os dados, você deve solicitar um resumo do seu ledger e salvá-lo para mais tarde. Qualquer revisão de documento que seja confirmada antes do último bloco coberto pelo resumo é elegível para verificação em relação a esse resumo.

Em seguida, você solicita uma prova do Amazon QLDB para uma revisão qualificada que você deseja verificar. Usando essa prova, você chama uma API do lado do cliente para recalcular o resumo, começando com o hash da revisão. Desde que o resumo salvo anteriormente seja conhecido e confiável fora do QLDB, a integridade do seu documento será comprovada se o hash do resumo recalculado corresponder ao hash do resumo salvo.

Importante
  • O que você está provando especificamente é que a revisão do documento não foi alterada entre o momento em que você salvou esse resumo e o momento em que executou a verificação. Você pode solicitar e salvar um resumo assim que uma revisão que você deseja verificar posteriormente for enviada para o diário.

  • Como prática recomendada, recomendamos que você solicite resumos regularmente e guarde-os fora do ledger. Determine a frequência com que você solicita resumos com base na frequência com que você confirma as revisões em seu ledger.

    Para uma postagem detalhada AWS no blog que discute o valor da verificação criptográfica no contexto de um caso de uso realista, consulte Verificação criptográfica no mundo real com o Amazon QLDB.

Para obter step-by-step guias sobre como solicitar um resumo do seu livro contábil e depois verificar seus dados, consulte o seguinte: