개인 정보 보호 프로토콜(Privacy-Preserving Protocols) 디버깅의 복잡성 해소를 위해 CLI 도구 pvcli를 개발함
Oblivious HTTP(OHTTP) 프로토콜의 여러 단계와 바이너리 HTTP 인코딩 처리의 어려움을 해결하는 데 중점
Apache-2.0 라이선스로 오픈 소스화하여 기여를 받고 있으며, 향후 MASQUE, Privacy Pass 등 다양한 프로토콜 지원 확장 계획
Oblivious HTTP(OHTTP)는 두 개의 독립된 서버(릴레이, 게이트웨이)를 거치며 사용자의 요청 정보와 요청 대상을 분리하여 개인 정보 보호를 강화하는 프로토콜임.
다단계 통신: 클라이언트-게이트웨이(키 교환), 클라이언트-릴레이(암호화 요청), 릴레이-게이트웨이(요청 전달), 게이트웨이-타겟(요청 처리), 타겟-게이트웨이(응답), 게이트웨이-릴레이(암호화 응답), 릴레이-클라이언트(응답 전달) 등 복잡한 상호작용 발생
바이너리 HTTP(Binary HTTP): RFC 9292 표준에 따라 HTTP 요청/응답을 바이너리 형태로 인코딩하여 사람이 직접 해석하고 디버깅하기 어려움
RFC 분산: 여러 초안 RFC에 걸쳐 세부 사항이 분산되어 있어 전체적인 이해와 구현에 높은 진입 장벽 존재
pvcli 이전에는 OHTTP 프로토콜 디버깅 시 수동적인 비트(Raw Bits) 분석과 임시 스크립트 제작에 많은 시간과 노력이 소요되었음.
수동 파싱: 게이트웨이에서 받은 공개 키(Public Key)나 바이너리 HTTP 요청을 RFC 문서를 참조하며 직접 해석해야 했음 (예: 길이, 암호화 방식, 페이로드 등)
스크립트 의존성: HTTP 요청을 바이너리 HTTP로 변환하거나, OHTTP 요청을 암호화하는 과정에서 맞춤형 스크립트(Bespoke Scripts)를 작성하고 검증해야 했음
오류 발생 시 추적 난이도: 각 단계별 오류 원인 파악이 어렵고, 고객 시스템과의 연동 문제인지 자체 시스템 문제인지 판별하는 데 시간이 오래 걸렸음
pvcli는 이러한 과정을 단일 명령어로 자동화하여 디버깅 효율성을 극대화함.
pvcli는 `curl`에서 많은 영감을 받아 설계되었으며, 최소 놀라움의 원칙(Principle of Least Surprise)을 따라 사용자 친화적인 인터페이스를 제공함.
단일 명령어로 복잡한 요청 처리: OHTTP 요청 생성, 릴레이 및 게이트웨이 설정, HTTP 메서드, 헤더, 데이터 전송 등을 단일 명령어로 수행 가능
상세 로깅: `-v`, `-vvv` 옵션을 통해 프로토콜 각 단계의 상세 로그를 제공하여 디버깅 지원
확장성: OHTTP 외에도 MASQUE, Privacy Pass 등 다양한 개인 정보 보호 프로토콜을 지원하도록 설계되었으며, 향후 기능 확장이 용이함
다양한 인증 방식 지원: 릴레이에 대한 헤더 전달(`--first-hop-header`), mTLS 인증(`--first-hop-client`, `--first-hop-key`) 등 고급 설정 지원
pvcli는 Rust 언어로 개발되었으며, Apache-2.0 라이선스 하에 오픈 소스로 공개되어 누구나 사용하고 기여할 수 있음.
기존 구현 활용: Martin Thomson의 Rust 구현과 Chris Wood의 Go 구현 등 기존 OHTTP 오픈 소스 프로젝트에서 얻은 경험을 바탕으로 개발됨
통합 도구 지향: OHTTP 외에도 CONNECT 프록시, MASQUE, Privacy Pass 등 여러 개인 정보 보호 기술을 하나의 도구로 통합하려는 목표를 가짐
향후 로드맵: MASQUE의 TCP/UDP 프록시 지원, OHTTP의 양자내성암호(Post-Quantum Cryptography) 지원, 타이밍 정보 추가, 청크 OHTTP 지원, 로깅 개선 등 기능 확장을 계획 중
이는 개인 정보 보호 기술 생태계 발전에 기여하고 개발자들의 프로토콜 이해 및 구현을 돕기 위함임.