파일 3/7 · 계층 간 상호 검증 · 이중 서명 · 이중 지출 방지 · 비상시 합의(LPBFT)
Openhash는 평상시 하향식 검증과 상향식 감시를 통해 데이터 무결성을 보장합니다. 핵심 요소는 모든 데이터를 비공개하는 반면, 모든 Hash를 공개하는 것입니다. 즉, PDV에 저장된 데이터는 비공개이지만, PDV의 Hash Chain과 모든 노드의 Hash Chain은 공개합니다. 그러므로, 모두가 모두의 Hash Chain을 검증할 수 있습니다.
예를 들어, 사용자 A가 자신의 어느날 일기를 PDV에 기록하고, 그 Hash(Hash A)를 그의 주소지 읍면동 노드에 전송하였으며, 주소지 노드는 그 상위 시군구로 전송하고(Hash B), 시군구는 광역시도(Hash C), 광역시도는 국가, 국가는 글로벌 노드에 전송하였다면(Hash D), 이들 Hash A, B, C, D는 시간적으로 연속될 뿐 아니라, 그 각각의 진위를 수학적으로 검증할 수 있습니다. 모든 Hash를 공개한다는 것은 누구라도, 언제라도, 어떤 사용자 혹은 노드의 Hash Chain이라도 그 진위 혹은 오염 여부를 검증할 수 있다는 의미입니다.
상위 계층이 하위 계층의 데이터 무결성을 주기적으로 검증합니다.
검증 항목:
| 검증 항목 | 설명 | 성능 |
|---|---|---|
| BLS 서명 검증 | 쌍선형 사상 등식 확인 | 평균 1.3816ms |
| 머클 증명 검증 | 무작위 트랜잭션에 대한 머클 경로 검증 | 평균 0.0654ms |
| 타임스탬프 검증 | 현재 시각 기준 ±5분 범위 확인 | - |
| 잔액 불변성 검증 | 계층별 총액 변동 확인 | - |
| 시퀀스 연속성 검증 | 해시 체인 연결성 확인 | - |
| 해시 체인 검증 | 전체 체인 무결성 확인 | - |
계층별 검증 주기 및 샘플링 비율(예시): 일정 범위 내에서 Random 결정
| 검증 관계 | 주기 | 샘플링 비율 |
|---|---|---|
| 글로벌 → 국가 | 1시간 | 5% |
| 국가 → 광역시도 | 30분 | 10% |
| 광역시도 → 시군구 | 10분 | 15% |
| 시군구 → 읍면동 | 5분 | 20% |
하위 계층이 상위 계층의 비정상 동작을 실시간으로 모니터링합니다.
| 감시 항목 | 이상 징후 기준 |
|---|---|
| 응답 지연 | 평균 응답 시간 대비 3배 이상 지연 |
| 서명 검증 실패율 | 최근 100건 중 5건 이상 실패, 또는 연속 3회 실패 |
| 데이터 불일치 | 동일 시점에 상이한 데이터 전송 (이중 지불 시도) |
| 잔액 불일치 | 보고된 계층별 총액과 실제 합산액 차이 1T 이상 |
| 선택적 거부 | 특정 노드만 지속적으로 거부 |
| 순서 조작 | 타임스탬프 역전 현상 |
이상 징후 대응 절차:
인접하지 않은 계층 간에도 주기적으로 크로스 검증을 수행하여 중간 계층의 담합 공격을 방지합니다.
| 크로스 검증 관계 | 주기 |
|---|---|
| 읍면동 ↔ 광역시도 | 1시간 |
| 광역시도 ↔ 글로벌 | 12시간 |
사용자의 해시 체인을 갱신하려면 두 개의 서명이 필요합니다:
| 서명 주체 | 역할 |
|---|---|
| 사용자 자신의 디지털 서명 | 사용자 동의 없이 노드가 임의로 체인을 변경하는 것을 방지 |
| 사용자가 속한 읍면동 노드의 디지털 서명 | 사용자 혼자 체인을 조작하는 것을 방지 |
이러한 이중 서명 메커니즘은:
모든 사용자와 모든 노드의 해시 체인은 원칙적으로 공개됩니다:
| 특징 | 설명 |
|---|---|
| 투명성 | 누구나 다른 누구의 해시 체인에 접근하여 열람 가능 |
| 검증 가능성 | 해당 해시 체인에 첨부된 디지털 서명의 진위를 누구나 검증 가능 |
| 개인정보 보호 | 해시값만 공개되므로 원본 데이터의 내용은 보호됨 (해시 함수의 역상 저항성) |
| 분산 신뢰 | 특정 사용자나 노드의 부정 행위를 누구나 탐지 가능 |
Openhash는 모든 사용자와 노드의 해시 체인을 실시간으로 공개하여 누구나 언제든지 정합성을 검증할 수 있는 공개 검증 구조를 제공합니다.
노드 해시 체인 공개 영역:
사용자 해시 체인 공개 영역:
교차 검증 경로: 사용자는 노드의 공개 해시값을 검증할 수 있고, 노드도 사용자의 공개 해시값을 검증할 수 있습니다.
| 규칙 | 설명 |
|---|---|
| 노드 체인 규칙 | 노드 체인의 새 해시값 = 해시(기존 최종 해시값 + 사용자로부터 수신한 거래 해시값) |
| 노드 체인 제한 | 사용자로부터 수신한 해시값만 포함 가능, 외부/임의 해시 삽입 불가 |
| 사용자 체인 규칙 | 사용자 체인의 새 해시값 = 해시(기존 최종 해시값 + 노드로부터 수신한 응답 해시값) |
| 사용자 체인 제한 | 노드로부터 수신한 응답 해시값만 포함 가능 |
| 조건 | 설명 |
|---|---|
| 출처 불명 해시 | 노드 체인에 출처가 불명확한 해시값 발견 |
| 무응답 해시 | 사용자 체인에 노드 응답 없이 생성된 해시값 존재 |
| 연결성 위반 | 이전 해시값과 현재 해시값의 연결 관계가 성립하지 않음 |
특정 사용자로부터 거래 데이터의 해시를 접수한 노드는 사용자의 해시 체인과 노드의 해시 체인의 갱신을 완료하는 시점까지 해당 사용자의 계정을 잠금(Lock) 상태로 전환합니다.
방법 1: 연결 상태 기반 판단
방법 2: 읍면동 노드를 통한 계정 잠금 메시지
방법 3: 노드의 해시 체인 제어권
방법 4: 읍면동 노드의 디지털 서명을 통한 잠금 상태 관리
방법 5: 상위 계층에 의한 하위 계층 실시간 모니터링
Openhash는 평상시에는 계층 간 상호 검증만으로 운영되지만, 비상 상황에서만 경량화된 PBFT(Lightweight PBFT) 합의를 발동합니다.
| 조건 | 설명 |
|---|---|
| 노드 오염 감지 | 동일 노드의 2회 이상 검증 실패 |
| 데이터 불일치 | 동일 트랜잭션에 대해 2개 이상의 상이한 버전 존재 |
| 계층 잔액 불일치 | 계층별 총액 합산 불일치 10T 이상 |
| 다수 노드 장애 | 동일 계층 내 30% 이상 노드 응답 없음 |
| 체인 분기 감지 | 동일 높이에서 2개 이상의 블록 존재 |
제1단계: 사전 준비 단계
제2단계: 준비 단계
제3단계: 확정 단계
전체 LPBFT 합의 시간: 평균 16.8689밀리초
| 계층 | 노드 수 | 허용 장애(f) | 합의 임계값(2f+1) |
|---|---|---|---|
| 읍면동 | 4 | 1 | 3 |
| 시군구 | 7 | 2 | 5 |
| 광역시도 | 10 | 3 | 7 |
| 국가 | 13 | 4 | 9 |
| 글로벌 | 19 | 6 | 13 |
| 조건 | 설명 |
|---|---|
| 오염 노드 격리 완료 | 해당 노드 네트워크 차단 완료 |
| 데이터 불일치 해소 | 충돌 데이터 해결 완료 |
| 계층 잔액 정합성 회복 | 계층별 총액 일치 확인 |
| Representative 노드 복귀 | 2/3 이상 정상 복귀 확인 |
| 구분 | 평상시 | 비상시(LPBFT) |
|---|---|---|
| 검증 방식 | 계층 간 상호 검증 | 다수결 합의 |
| 참여 노드 | 인접 계층 노드만 | Representative 노드 전체 |
| 응답 시간 | 평균 1.5ms | 평균 17ms |
| 네트워크 부하 | 낮음 | 일시적 증가 |
| 에너지 소비 | 최소 | 일시적 증가 |
| 목표 최대 발동 빈도 | - | 연간 10회 이하 (0.001% 미만) |
ⓒ Openhash 특허 출원 기반. 이 문서는 요약본이며, 자세한 내용은 특허 명세서를 참조하십시오.