아마존에서의 데이터 검증 QLDB - 아마존 퀀텀 레저 데이터베이스 (아마존QLDB)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아마존에서의 데이터 검증 QLDB

중요

지원 종료 알림: 기존 고객은 2025년 7월 31일 지원이 종료될 QLDB 때까지 Amazon을 사용할 수 있습니다. 자세한 내용은 아마존 QLDB 원장을 Amazon Aurora SQL Postgre로 마이그레이션을 참조하십시오.

QLDBAmazon을 사용하면 애플리케이션 데이터의 변경 기록이 정확하다는 것을 신뢰할 수 있습니다. QLDB저널이라고 하는 변경 불가능한 트랜잭션 로그를 데이터 저장에 사용합니다. 저널은 커밋된 데이터의 모든 변경 내용을 추적하고 시간이 지나면서 완전하고 확인 가능한 시간대별 변경 기록을 유지합니다.

QLDB머클 트리 기반 모델과 함께 SHA -256 해시 함수를 사용하여 저널의 암호화 표현 (다이제스트) 을 생성합니다. 다이제스트는 특정 시점을 기준으로 데이터의 전체 변경 기록에 대한 고유한 서명 역할을 합니다. 다이제스트를 사용하여 해당 서명과 관련된 문서 수정본의 무결성을 확인할 수 있습니다.

어떤 종류의 데이터로 검증할 수 있나요? QLDB

에서 QLDB 각 원장에는 정확히 하나의 저널이 있습니다. 저널에는 저널의 파티션인 스트랜드가 여러 개 있을 수 있습니다.

참고

QLDB현재는 단일 가닥의 저널만 지원합니다.

블록은 트랜잭션 중에 저널 스트랜드에 커밋되는 객체입니다. 이 블록에는 트랜잭션으로 인한 문서 수정본을 나타내는 항목 객체가 들어 있습니다. 에서 개별 개정 또는 전체 저널 블록을 확인할 수 있습니다. QLDB

다음 다이어그램은 이 저널 구조를 보여줍니다.

스트랜드를 구성하는 해시 체인 블록 세트와 각 블록의 시퀀스 번호 및 해시를 보여주는 Amazon QLDB 저널 구조 다이어그램.

다이어그램은 트랜잭션이 문서 수정본 항목이 포함된 블록 형태로 저널에 커밋됨을 보여줍니다. 또한 각 블록은 후속 블록에 해시 체인으로 연결되며 스트랜드 내에서 해당 주소를 지정하는 시퀀스 번호가 있다는 것을 보여줍니다.

블록의 데이터 내용에 대해 자세히 알아보려면 아마존의 저널 콘텐츠 QLDB 섹션을 참조하세요.

데이터 무결성이란 무엇을 의미하나요?

데이터 무결성이란 원장의 QLDB 저널이 사실상 변경할 수 없음을 의미합니다. 즉, 데이터(특히 각 문서 수정본)는 다음과 같은 상태에 있습니다.

  1. 처음 작성된 저널 내 동일한 위치에 있습니다.

  2. 작성된 이후로 어떤 식으로든 변경되지 않았습니다.

확인은 어떻게 작동하나요?

QLDBAmazon에서 검증이 작동하는 방식을 이해하기 위해 개념을 네 가지 기본 구성 요소로 나눌 수 있습니다.

해싱

QLDBSHA-256 암호화 해시 함수를 사용하여 256비트 해시 값을 생성합니다. 해시는 임의의 양의 입력 데이터에 대해 고정된 길이의 고유한 서명 역할을 합니다. 단일 문자나 비트라도 입력의 일부를 변경하면 출력 해시가 완전히 변경됩니다.

다음 다이어그램은 SHA -256 해시 함수가 두 문서에 대해 한 자릿수만 차이가 나는 완전히 고유한 해시 값을 생성한다는 것을 보여줍니다. QLDB

두 QLDB 문서에 대해 SHA -256 암호화 해시 함수가 한 자릿수만 차이가 나는 완전히 고유한 해시 값을 생성하는 것을 보여주는 다이어그램입니다.

SHA-256 해시 함수는 한 가지 방법입니다. 즉, 출력값이 주어지면 입력값을 계산하는 것이 수학적으로 불가능하다는 뜻입니다. 다음 다이어그램은 출력 해시 값이 주어지면 입력 QLDB 문서를 계산하는 것이 불가능하다는 것을 보여줍니다.

출력 해시 값이 주어지면 입력 QLDB 문서를 계산하는 것이 불가능하다는 것을 보여주는 다이어그램.

다음 데이터 입력은 확인을 QLDB 위해 해시됩니다.

  • 문서 수정

  • PATIL 문

  • 수정 항목

  • 저널 블록

다이제스트

다이제스트는 특정 시점의 원장 전체 일지를 암호로 표현한 것입니다. 저널은 첨부만 가능하며 저널 블록은 블록체인과 유사하게 시퀀싱되고 해시 체인으로 연결됩니다.

언제든지 원장에 대한 다이제스트를 요청할 수 있습니다. QLDB다이제스트를 생성하여 보안 출력 파일로 반환합니다. 그런 다음 해당 다이제스트를 사용하여 이전 시점에 커밋된 문서 수정본의 무결성을 확인합니다. 수정본으로 시작하여 다이제스트로 끝나는 방식으로 해시를 다시 계산하면 그 사이에 데이터가 변경되지 않았음을 증명할 수 있습니다.

Merkle 트리

원장 규모가 커질수록 확인을 위해 저널의 전체 해시 체인을 다시 계산하는 것은 점점 비효율적입니다. QLDB머클 트리 모델을 사용하여 이러한 비효율성을 해결합니다.

Merkle 트리는 각 리프 노드가 데이터 블록의 해시를 나타내는 트리 데이터 구조입니다. 리프가 아닌 각 노드는 해당 하위 노드의 해시입니다. 블록체인에서 일반적으로 사용되는 Merkle 트리는 감사 증명 메커니즘을 통해 대규모 데이터 세트를 효율적으로 확인하는 데 도움이 됩니다. Merkle 트리에 대한 자세한 내용은 Merkle 트리 Wikipedia 페이지를 참조하세요. Merkle 감사 증명에 대해 자세히 알아보고 인증서 투명성 사이트에서 로그 증명의 작동 방식 섹션을 참조하여 사용 사례 예시에 대해 알아보세요.

머클 트리의 QLDB 구현은 저널의 전체 해시 체인으로 구성됩니다. 이 모델에서 리프 노드는 모든 개별 문서 수정본 해시의 집합입니다. 루트 노드는 특정 시점을 기준으로 한 전체 저널의 다이제스트를 나타냅니다.

Merkle 감사 증명을 사용하면 원장 수정 기록의 일부 하위 집합만 확인하여 수정 내역을 확인할 수 있습니다. 주어진 리프 노드(수정본)에서 루트(다이제스트)까지 트리를 순회하여 이러한 작업을 수행할 수 있습니다. 이 순회 경로를 따라 노드 시블링 쌍을 재귀적으로 해싱하여 다이제스트가 끝날 때까지 상위 해시를 계산합니다. 이 순회는 트리에 있는 log(n) 노드의 시간 복잡도를 초래합니다.

증명

증거는 지정된 다이제스트 및 문서 수정에 대해 QLDB 반환되는 노드 해시의 정렬된 목록입니다. 이는 Merkle 트리 모델이 주어진 리프 노드 해시(수정본)를 루트 해시(다이제스트)에 연결하는 데 필요한 해시로 구성됩니다.

수정본과 다이제스트 사이에 커밋된 데이터를 변경하면 저널의 해시 체인이 손상되어 증명을 생성할 수 없게 됩니다.

확인 예

다음 다이어그램은 Amazon QLDB 해시 트리 모델을 보여줍니다. 최상위 루트 노드로 롤업되는 블록 해시 세트를 보여 주며, 이는 저널 스트랜드의 다이제스트를 나타냅니다. 단일 스트랜드 저널이 있는 원장에서 이 루트 노드는 전체 원장의 다이제스트이기도 합니다.

저널 스트랜드의 블록 QLDB 해시 세트에 대한 Amazon 해시 트리 다이어그램.

노드 A가 해시를 확인하고자 하는 문서 수정본 버전이 들어 있는 블록이라고 가정해 보겠습니다. 다음 노드는 증명에 QLDB 제공되는 순서가 지정된 해시 목록을 나타냅니다: B, E, G. 이러한 해시는 해시 A의 다이제스트를 다시 계산하는 데 필요합니다.

다이제스트를 다시 계산하려면 다음을 수행합니다.

  1. 해시 A로 시작하여 해시 B와 연결합니다. 그런 다음 결과를 해싱하여 D를 계산합니다.

  2. DE를 사용하여 F를 계산합니다.

  3. FG를 사용하여 다이제스트를 계산합니다.

재계산된 다이제스트가 예상 값과 일치하면 확인이 성공한 것입니다. 수정 해시와 다이제스트를 고려하면 증명의 해시를 리버스 엔지니어링하는 것은 불가능합니다. 따라서 이 연습은 해당 수정본이 다이제스트를 기준으로 이 저널 위치에 실제로 작성되었음을 증명합니다.

데이터 수정은 확인에 어떤 영향을 미치나요?

QLDBAmazon에서 DELETE 명령문은 문서를 삭제된 것으로 표시하는 새 수정 버전을 생성하여 논리적으로만 문서를 삭제합니다. QLDB또한 테이블 기록에서 사용하지 않는 문서 수정 내용을 영구적으로 삭제할 수 있는 데이터 수정 작업도 지원합니다.

수정 작업은 지정된 수정 버전의 사용자 데이터만 삭제하고 저널 시퀀스와 문서 메타데이터는 변경되지 않습니다. 수정이 수정된 후에는 수정본의 사용자 데이터(data 구조로 표시됨)는 새 dataHash 필드로 대체됩니다. 이 필드의 값은 제거된 data 구조의 Amazon Ion 해시입니다. 수정 작업에 대한 자세한 내용과 예제는 문서 개정본 수정하기을 참조하세요.

따라서 원장은 전반적인 데이터 무결성을 유지하고 기존 검증 작업을 통해 암호학적으로 검증 가능한 상태를 유지합니다. API 예상대로 이러한 API 작업을 사용하여 다이제스트 (GetDigest) 를 요청하고 증명 (GetBlock또는 GetRevision) 을 요청한 다음 반환된 객체를 사용하여 검증 알고리즘을 실행할 수 있습니다.

수정 해시 재계산

해시를 다시 계산하여 개별 문서 수정본을 확인하려는 경우, 조건부로 수정본이 수정되었는지 여부를 확인해야 합니다. 수정본이 수정된 경우 dataHash 필드에 제공된 해시 값을 사용할 수 있습니다. 수정되지 않은 경우 data 필드를 사용하여 해시를 다시 계산할 수 있습니다.

이 조건부 검사를 통해 수정된 수정 내용을 식별하고 적절한 조치를 취할 수 있습니다. 예를 들어 모니터링을 위해 데이터 조작 이벤트를 기록할 수 있습니다.

알림 시작하기

데이터를 확인하려면 먼저 원장에서 다이제스트를 요청하고 나중을 위해 저장해야 합니다. 다이제스트에서 다루는 최신 블록 이전에 커밋된 문서 수정본은 해당 다이제스트에 대한 확인을 받을 수 있습니다.

그런 다음 QLDB Amazon에 확인하려는 적격 개정에 대한 증거를 요청합니다. 이 증명을 사용하면 클라이언트 API 측에 전화를 걸어 수정 해시부터 시작하여 다이제스트를 다시 계산합니다. 이전에 저장한 다이제스트를 외부에서 알고 신뢰할 수 있는 한QLDB, 다시 계산된 다이제스트 해시가 저장된 다이제스트 해시와 일치하면 문서의 무결성이 입증됩니다.

중요
  • 이 다이제스트를 저장한 시점과 확인을 실행한 시점 사이에 문서 수정본이 변경되지 않았다는 것을 구체적으로 증명해야 합니다. 나중에 확인하려는 수정본이 저널에 커밋되는 즉시 다이제스트를 요청하고 저장할 수 있습니다.

  • 가장 좋은 방법은 다이제스트를 정기적으로 요청하여 원장과 떨어진 곳에 보관하는 것입니다. 원장의 수정본을 커밋하는 빈도에 따라 다이제스트 요청 빈도를 결정합니다.

    실제 사용 사례의 맥락에서 암호화 검증의 가치를 설명하는 자세한 AWS 블로그 게시물은 Amazon을 통한 실제 암호화 검증을 참조하십시오. QLDB

원장 요약을 요청하고 데이터를 검증하는 방법에 대한 step-by-step 지침은 다음을 참조하십시오.