최근 Button이라는 프로젝트를 시작하면서 영지식증명과 차등 사생활(Differential Privacy)를 합쳐서 개인 정보 보호 및 활용에 사용할 수 있는 솔루션 Confusion-weighted zero-knowledge proof를 기획하게 되었습니다.

뭔지도 잘 모르는걸 도전하게된 계기

개인 정보에서의 차등 사생활 기술은 애플에서도 사용하고 있는 방법으로 실제 개인 정보에 가짜 데이터를 넣어서 개인 정보가 유출되어도 어떤게 정확한 정보인지 알 수 없게만드는 보호장치입니다.

일반적인 개인 정보 저장 사용자 이름: 이호준 → 그대로 서버에 저장

데이터 범위화로 저장 사용자 이름: 이호준 → {김철수, 김미영, 이영철, 이호준, 박혜연} 으로 저장

위 예시처럼 차등 사생활은 데이터가 유출될때 위험성이 굉장히 낮아지는 장점이 있지만 이 데이터로 IT 서비스에 가입하면 이름들 속에 진짜 이름이 있는지를 알 방법이 없기에 일반적으로 활용되는 경우는 드믑니다.

여기에 개인 정보를 드러내지 않고도 해당 값이 참이라는 걸 증명이 가능한 영지식증명을 활용하면 데이터가 진짜인지 증명이 가능해지면서 모바일 앱, 웹사이트 같은 개인 정보가 필요한곳에서도 편하게 사용할 수 있으면서 기존보다 더 강한 개인 정보 보호가 가능할 것 같아서 기획하게 된 것이 Confusion-weighted zero-knowledge proof입니다.

그러나 이런 식으로 해서 만들면 되겠지~라는 안일한 생각은 프로젝트를 망치는 일이라고 생각하였고 제가 기획한 내용이 실현 가능한지, 예상한 대로 작동하는지를 알려면 실제 코드로 개발하여서 검증하는 과정이 필요한데 이걸 위해서 개발자 팀원을 영입하여 업무를 드리는 것은 너무 큰 부담이고 예의가 아니라 생각되어 직접 개발을 도전하게 되었습니다. 무엇보다 직접 개발하면서 더 명확하고 구체적으로 제가 기획한 알고리즘을 이해하고 싶었습니다.

개발한 내용은 아래 링크로 확인할 수 있습니다.

https://button.systems/

새롭게 제안하는 개인정보 시스템

Confusion-weighted zero-knowledge proof process

  1. 유저가 버튼 사이트에 이메일 인증으로 가입하고 아이디, 비밀번호, 닉네임, 가상 나이를 입력한다.
  2. 입력된 정보는 차등 사생활(Differential Privacy) 형태로 저장되는데, 입력한 정보와 비슷하게 생성된 다른 정보를 같이 저장하여 개인을 특정하지 못하게 한다.
  3. 이후 다른 서버와 다른 DB를 가진 테스트 사이트에서 버튼 계정으로 로그인한다.
  4. 입력된 정보가 맞는지 버튼 서버에 인증을 요청하여 결과를 전달받는다.
  5. 로그인 이후 영지식증명 시도 버튼을 누르면 버튼 서버와 테스트 서버가 통신하여 계정 정보가 정확한지 영지식증명을 진행하고 결과가 나타난다.