Verificação de dados na Amazon QLDB - Banco de dados Amazon Quantum Ledger (AmazonQLDB)

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 na Amazon QLDB

Importante

Aviso de fim do suporte: os clientes existentes poderão usar a Amazon QLDB até o final do suporte em 31/07/2025. Para obter mais detalhes, consulte Migrar um Amazon QLDB Ledger para o Amazon Aurora Postgre. SQL

Com a AmazonQLDB, você pode confiar que o histórico de alterações nos dados do seu aplicativo é preciso. QLDBusa um registro 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.

QLDBusa a função de 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.

Em que tipo de dados você pode verificarQLDB?

EmQLDB, cada livro contábil tem exatamente um diário. Um diário pode ter várias vertentes, que são partições do diário.

nota

QLDBatualmente suporta periódicos 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 inteiro do diárioQLDB.

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

Diagrama da estrutura do QLDB diário da Amazon mostrando um conjunto de blocos encadeados em hash que formam uma cadeia e o número de sequência 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 na Amazon QLDB.

O que significa integridade de dados?

A integridade dos dados QLDB significa que o diário do seu livro é 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 na AmazonQLDB, você pode dividir o conceito em quatro componentes básicos.

Hashing

QLDBusa a função hash criptográfica SHA -256 para criar valores de 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 QLDB documentos 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 QLDB documentos 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 recebe uma saída. O diagrama a seguir mostra que não é possível calcular o QLDB documento de entrada quando se recebe um valor de hash de saída.

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

As seguintes entradas de dados são inseridas 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. QLDBgera 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. QLDBusa 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 QLDB implementação 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 QLDB retorna para um determinado resumo e revisão do 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 QLDB hash da Amazon. 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 QLDB hash da Amazon 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 QLDB fornecida 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 diário em relação ao resumo.

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

Na AmazonQLDB, uma DELETE declaração só exclui logicamente um documento criando uma nova revisão que o marca como excluído. QLDBtambé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 de Amazon Ion da estrutura data removida. Para obter mais informações e um exemplo de uma operação de redação, consulte Redigir revisões de documentos.

Como resultado, o livro mantém a integridade geral dos dados e permanece criptograficamente verificável por meio das operações de verificação existentes. API Você ainda pode usar essas API operações 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.

Como recalcular 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 um comprovante da Amazon QLDB para uma revisão qualificada que deseja verificar. Usando essa prova, você chama um cliente API para recalcular o resumo, começando com o hash da revisão. Desde que o resumo salvo anteriormente seja conhecido e confiável externamenteQLDB, 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 a 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: