영지식 암호화(Zero-Knowledge Encryption)란? – 엄청 쉽게 설명해드려요.
영지식 암호화(Zero-Knowledge Encryption)는 매우 안전하고 강력한 보안 기술 입니다. 사용자의 데이터를 안전하게 보호하면서 서비스를 제공할 수 있습니다. 영지식 암호화의 핵심은 서비스를 제공하는 회사가 사용자가 저장한 데이터를 절대 볼 수 없다는 것입니다. 이것만 알고 넘어가셔도 좋습니다. 어차피 기술적인 부분은 우리가 안다고해서 더 안전하게 사용할 수 있는 것은 아니거든요.
Zero-Knowledge(영지식) 아키텍처
Zero-Knowledge 아키텍처는 서비스를 제공하는 회사가 사용자의 데이터를 알 수 없는 정책과 구조를 의미합니다. 보안을 중시하는 IT 서비스 회사들의 정책에 자주 나오는 용어입니다.
사용자의 마스터 비밀번호나 암호화 키가 서비스 제공자의 서버에 저장되지 않기 때문에 회사는 사용자의 데이터에 접근할 수 없습니다… 이걸 저도 쉽게 설명하려면 저의 머리속에 든게 많아야 하는데.. 저도 어중간한 수준이라 쉽지 않네요 ㅋㅋ
우리가 패스워드 앱이나 클라우드를 이용하려면 ‘나’라는 것을 증명해야 하는데 가장 쉬운 것은 ‘비밀번호 입력’ 입니다. 비번을 pass1234라고 가정합니다. 나의 비번이 pass1234라는 것을 타인이나 서비스 제공회사가 알면 내 데이터에 얼마든지 접근할 수 있게 됩니다. 그래서 이 비번을 그대로 전달하는 것은 위험합니다. 그럼 어떻게 해야 안전하게 전달되면서 나를 증명할 수 있을까요?
간략하고 쉽게 이야기 하면 대충 이런 과정을 거치게 됩니다.
- 내가 로그인을 위해 비밀번호 pass1234를 입력합니다.
- pass1234는 암호화(해시 생성)되어 &3fsdljn##adf0bznl**7로 전달됩니다. 해시값은 단방향성 입니다. 즉 일방통행이라는 뜻이예요. 이것을 다시 역산해서 내 원래 비밀번호를 알 수 없습니다.
- 해시값을 전달받은 서버는 이 해시값을 보낸 사람이 ‘진짜 비밀번호를 알고 있는 사람’인지 증명하는 작업을 합니다.
- 자격을 갖춘 사람만이 토르의 망치 뮬니르를 들어올릴 수 있는 것처럼.. 검증이 끝나면 내가 ‘오리지널 키’를 가진 사람이라는 것을 인정하고 접속을 허용합니다.
- 이 과정에서 나의 실제 비밀번호는 필요치도 않으며 노출되지도 않습니다.
영지식 증명 – 위키백과, 우리 모두의 백과사전 (wikipedia.org) 여기를 보면 ‘비유를 통한 예시’가 있습니다. 이걸 참고해보시는 것도 좋을 것 같아요.
영지식 구조를 위해 대표적으로 두 가지가 필요합니다.
강력한 엔드 투 엔드 암호화
‘End to End’ 말 그대로 끝에서 끝까지 입니다. 종단 간 암호화(E2EE)라고도 부릅니다. 내 디바이스에서부터 데이터가 저장되는 회사 서버까지 ‘처음부터 끝까지’ 암호화 된 상태로 전달되는 것을 이야기 합니다.
자세한 것은 쉬운 종단간 암호화 설명을 읽어주세요.
사용자 키 제어
Zero-Knowledge 암호화의 핵심은 사용자가 암호화 키를 제어하는 것입니다. 여기서 ‘키’는 암호화된 데이터를 다시 복호화하는 키를 이야기 합니다. 이 키는 데이터를 나만 알아 볼수 있도록 암호화 시키는 마법봉이라고 생각하시면 됩니다. 사용자가 키(마법봉)를 소유하고 제어할 수 있다면 회사는 암호화된 데이터에 접근할 수 없으며, 데이터는 사용자의 통제 하에 안전하게 유지됩니다.