“내 데이터는 내가 지킨다” — 동형암호화된 CRDTs가 그리는 로컬-퍼스트 협업의 미래
협업은 쉬워졌지만, 보안은 더 어려워졌다
협업 툴은 점점 편리해졌습니다. 구글 Docs 같은 실시간 공동 편집 도구는 이미 많은 팀이 업무에 활용하고 있죠. 하지만 동시에 이런 툴에선 늘 같은 질문이 뒤따릅니다.
"내 문서, 정말 안전한가?"
"개발자가 내 문서 내용을 볼 수는 없을까?"
이런 고민이 쌓이면서 ‘로컬-퍼스트(Local-first)’ 소프트웨어가 주목받고 있습니다. 로컬-퍼스트란, 모든 데이터가 우선 사용자의 기기에 저장되고, 필요할 때만 서버와 동기화되는 방식입니다. 데이터는 내 손에 있고, 내가 주인이 되는 거죠.
하지만 여기서 문제가 생깁니다. 협업을 하려면 결국 데이터를 병합해야 하는데, 서버가 내용을 모르면 병합이 불가능합니다. 그래서 종단 간 암호화만으로는 협업의 효율을 보장하기 어렵습니다.
오늘 소개할 기술 조합은 바로 이 문제를 정면으로 다룹니다. 동형암호화(Homomorphic Encryption)와 CRDTs(Conflict-free Replicated Data Types)의 결합은 협업과 보안을 동시에 만족시키려는 시도로 주목받고 있습니다.
동형암호화와 CRDTs란 무엇인가?
동형암호화는 암호화된 데이터에 대해 직접 계산을 수행할 수 있는 특수한 암호화 기술입니다. 예를 들어, 서버는 데이터를 해독하지 않고도 덧셈이나 곱셈을 수행할 수 있습니다. 이 기술을 이용하면 서버가 사용자의 데이터 내용을 전혀 알지 못한 채 병합 연산을 수행할 수 있습니다.
CRDTs는 네트워크가 끊기거나 여러 사용자가 동시에 같은 문서를 수정할 때 충돌 없이 데이터를 병합할 수 있게 해주는 분산 자료 구조입니다. 로컬에서 편집한 내용을 서버와 자동으로 동기화하면서도 충돌 없이 일관성을 유지합니다.
이 두 기술이 결합되면, 데이터를 서버에 노출하지 않으면서도 협업의 핵심인 ‘자동 병합’을 가능하게 합니다.
동형암호화가 필요한 이유
종단 간 암호화는 암호화된 상태로 데이터를 전송하고 저장하기 때문에 외부 침입으로부터 데이터를 보호하는 데 효과적입니다. 그러나 문제는 서버가 데이터를 읽을 수 없기 때문에 병합 연산을 수행할 수 없다는 점입니다.
동형암호화를 사용하면 이 문제를 해결할 수 있습니다. 서버는 데이터를 복호화하지 않고도 연산이 가능하기 때문에, 협업 중 발생한 여러 사용자의 변경 내용을 병합할 수 있습니다. 이로써 보안성과 협업 효율성을 동시에 만족시키는 환경이 가능합니다.
실제 구현 사례: TFHE-rs 기반 암호화 CRDT
Rust 기반의 TFHE-rs 라이브러리를 활용해 Last Write Wins Register(LWW-Register)라는 CRDT를 동형암호화된 상태로 구현한 사례가 있습니다. 여기서 중요한 점은 암호화된 상태에서도 기존 로직과 유사하게 작동하되, 외부에서 실행 경로나 조건을 유추할 수 없게 만드는 방식이 적용됐다는 것입니다.
예를 들어 if/else나 match 같은 분기문은 사용하지 않고, 모든 조건을 FheBool 연산자와 select() 메서드로 처리합니다. 이렇게 하면 어떤 조건에서 값이 바뀌었는지 외부에서는 감지할 수 없습니다. 이는 정보 유출을 차단하는 데 핵심적인 방식입니다.
동형암호화의 한계
이론적으로는 매우 강력해 보이지만, 현실적인 제약도 분명 존재합니다.
첫째, 자원 소모가 매우 큽니다. 예시 구현에 따르면, 단 32바이트의 데이터를 처리하기 위해 123MB에 달하는 서버 키가 필요합니다. 압축하더라도 27MB 수준입니다. 병합 연산 속도 또한 평문 연산에 비해 약 20억 배 느립니다.
둘째, 확장성이 떨어집니다. 예를 들어, key-value 데이터가 희소하더라도 암호화된 상태에서는 모든 키 공간을 고정 크기로 유지해야 합니다. 따라서 실제 필요보다 훨씬 많은 자원을 사용하게 됩니다.
셋째, 입력값에 따라 실행 경로나 루프 수가 달라지면 정보가 노출될 수 있기 때문에, 항상 최악의 시나리오 기준으로 연산을 수행해야 합니다. 이 역시 성능 저하의 주요 원인입니다.
현실과 이상 사이: 기술적 가능성과 과제
CRDT와 동형암호화의 조합은 개념적으로 매우 이상적인 방식입니다. 데이터 보안과 협업 효율을 모두 만족시키는 구조이기 때문입니다. 하지만 지금 당장 실용적인 솔루션으로 적용하기엔 성능과 자원 소모 면에서 넘어야 할 과제가 많습니다.
그럼에도 불구하고 이 기술 조합은 연구 가치가 큽니다. CRDT 자체가 아직 상대적으로 젊은 기술이며, 동형암호화 역시 계속 발전 중입니다. 특히 로컬-퍼스트 방식의 협업 툴에선 이 두 기술이 핵심이 될 가능성이 있습니다.
완전하진 않지만, 미래를 바꿀 조합
동형암호화된 CRDT는 아직 완성되지 않았지만, 충분히 주목할 만한 기술입니다. 현실적인 제약이 많은 만큼 지금 당장은 연구 수준에 머물러 있지만, 장기적으로는 개인의 데이터 주권을 보장하는 혁신의 열쇠가 될 수 있습니다.
협업 환경에서 사용성과 보안을 모두 포기하지 않는 솔루션이 필요하다면, 이 기술 조합이 그 가능성의 시작점이 될 수 있습니다.
지금은 조금 느릴지 몰라도, 미래의 협업은 ‘내 데이터를 내가 통제하는 시대’를 열 것입니다.
https://jakelazaroff.com/words/homomorphically-encrypted-crdts/
Homomorphically Encrypting CRDTs | jakelazaroff.com
Homomorphic encryption allows a computer to run programs on encrypted data. Learn how homomorphic encryption works through interactive examples, build a homomorphically encrypted CRDT and see whether it has promise for local-first software.
jakelazaroff.com