에라 에포크 기반 중재로 해결하는 그룹 관리 CRDT 관리자 충돌
초록
이 논문은 CRDT 기반 그룹 관리에서 발생하는 ‘두 관리자 동시 박탈’ 문제를 다룬다. 기존의 순위 기반 또는 이벤트 ID 기반 해결책은 백도어(backdating) 공격에 취약해 안전성을 보장하지 못한다. 저자는 ‘파이널리티 노드’를 도입해 epoch 이벤트로 사건을 계층화하고, 각 epoch 안에서 총 순서를 정의함으로써 롤백을 방지하고 안전성(P1)과 가용성(P2)을 동시에 만족시키는 메커니즘을 제시한다.
상세 분석
본 논문은 CRDT가 제공하는 강한 최종 일관성(strong eventual consistency) 하에서 비단조 연산인 ‘demote’(관리자 권한 박탈) 가 동시에 발생할 경우 발생하는 ‘Duelling Admins’ 문제를 심도 있게 분석한다. 기존 시스템인 Keyhive와 Matrix는 해시 DAG와 버전 벡터를 이용해 인과 관계를 표현하지만, 비잔틴 노드가 동일 ID에 서로 다른 내용을 부여하는 equivocation(동일 ID 위조) 혹은 backdating(과거 시점에 사건 삽입) 공격에 취약하다. 특히, 동일 권한을 가진 두 관리자가 서로를 박탈하면 merge 함수가 어떤 순서로 적용할지 결정할 기준이 없으며, 악의적인 관리자는 자신의 권한을 유지하기 위해 사건의 타임스탬프나 해시를 조작해 롤백을 유도한다.
저자는 두 가지 전통적 접근법을 비판한다. 첫 번째는 사용자 기반 순위(시니어티) 방식으로, 깊이와 해시 순으로 승자를 정하지만, 자기 자신을 박탈한 뒤 다시 백도어로 복구할 수 있어 안전성을 깨뜨린다. 두 번째는 사건 기반 순서(타임스탬프·ID) 방식으로, 악의적인 관리자가 낮은 ID를 지속적으로 사용해 무한히 경쟁을 일으킬 수 있다. 합의 기반(PoW, PoS)이나 다수결도 Sybil 공격에 취약하고, CRDT의 무보상 구조와도 맞지 않는다.
이에 저자는 ‘파이널리티 노드’를 도입한다. 파이널리티 노드는 주기적으로 현재 DAG의 source(leaf) 집합을 epoch 이벤트로 방송한다. epoch 이벤트는 변조되지 않는 한계층을 형성하고, 각 epoch 내부에서는 사건들을 epoch 순서대로 고정한다. 아직 epoch에 포함되지 않은 사건은 pending epoch에 머물며, 모든 선행 epoch이 완료된 뒤에만 실행된다. 이렇게 하면 백도어 공격이 기존 epoch에 삽입되는 것을 방지하고, 사건이 한 번 확정되면 롤백이 불가능한 ‘finality’를 제공한다. 결과적으로 관리자의 동시 박탈 상황에서도 어느 한쪽이 부당하게 승리하지 않으며, 안전성(P1)과 가용성(P2)을 동시에 만족한다.
또한 논문은 파이널리티 노드가 그룹 관리 외에도 비단조 연산이 포함된 다양한 CRDT에 적용 가능함을 제시한다. 비동기적 배치 전송을 통해 가용성을 유지하면서도, 필요한 경우(예: demote와 같은 비단조 연산)만 epoch을 트리거함으로써 시스템 부하를 최소화한다.
댓글 및 학술 토론
Loading comments...
의견 남기기