제로 지식 아키텍처이란 무엇인가요?
제로 지식 아키텍처는 모든 암호화·복호화 연산이 클라이언트 측에서 이루어지기 때문에 서비스 제공자가 사용자를 대신해 저장한 데이터를 읽거나 복호화할 능력이 전혀 없는 시스템 설계다.
다른 이름: ZK, zero-knowledge encryption, zero-knowledge proof, ZKA
제로 지식 시스템에서 서버는 순수한 암호화 저장소 역할만 한다. 클라이언트가 이미 암호화한 데이터를 받아 요청 시 반환하지만, 그 데이터를 이해하는 데 필요한 키는 결코 보유하지 않는다. 이는 제공자가 암호화 키를 보유하여 이론적으로 사용자 데이터에 접근할 수 있는 대부분의 클라우드 서비스와 대조된다. 그런 서비스에서는 불량 직원, 정부 명령, 보안 침해를 통해 데이터가 노출될 수 있다.
이 맥락에서 "제로 지식"은 암호학의 영지식 증명(zero-knowledge proof)과는 구별되지만, 엄격히 필요한 것 이상을 공개하지 않는다는 원칙은 공유한다. 제로 지식 서비스는 데이터가 존재함을 알고 만료일이나 조회 횟수 같은 접근 제어를 시행할 수 있지만, 데이터의 실제 내용은 알 수 없다.
제로 지식 아키텍처는 신뢰 모델을 근본적으로 바꾼다. 서비스 운영자가 데이터를 보호하고 정직하게 행동할 것이라 믿는 대신, 브라우저에서 실행되는 클라이언트 측 코드만 신뢰하면 된다. 서버가 저장하는 내용을 진정으로 읽을 수 없다면 서버 측 침해, 내부자 접근, 강제 공개가 모두 무력화되므로 이는 상당한 보안 개선이다.
Vaulted가 제로 지식 아키텍처을 사용하는 방법
Vaulted는 처음부터 제로 지식 시스템으로 구축됐다. 모든 암호화·복호화는 Web Crypto API를 사용해 브라우저에서 이루어진다. 서버는 암호문, 초기화 벡터, 조회 횟수와 만료 시각 같은 메타데이터만 받아 저장한다. AES-256-GCM 암호화 키는 URL 프래그먼트에 들어있으며, RFC 3986에 따라 브라우저는 이를 서버에 전송하지 않는다. Vaulted의 서버나 데이터베이스가 완전히 침해되더라도 공격자는 암호화된 덩어리만 얻을 뿐, 복호화할 방법은 없다.