Cashfulness에 대해 이야기할 때 저희가 자주 반복하는 문장이 있어요.
“당신의 문서를 우리는 볼 수 없어요.”
말하기 쉬운 문장이에요. 많은 앱이 이렇게 말하죠.
핵심은 그 문장 뒤에 무엇이 있는가예요. “우리가 보지 않는다”와 “우리가 볼 수 없다”는 아주 다른 두 가지 약속이니까요.
첫 번째는 선의의 약속이에요. 당신이 그렇게 하지 않을 거라 믿는다는 것이죠.
두 번째는 불가능의 약속이에요. 보고 싶어도 볼 수 없다는 것이죠.
Cashfulness에서 당신이 업로드하는 문서에 대해 성립하는 건 두 번째예요. 그리고 이를 사실로 만드는 기술 용어가 바로 종단간 암호화예요.
영어로는 E2EE(종단간 암호화, end-to-end encryption)로 줄여 부르죠. “한쪽 끝에서 다른 쪽 끝까지”의 암호화라는 뜻이에요.
전문 용어처럼 들린다는 거 알아요. 약속할게요, 이 글을 다 읽고 나면 코드 한 줄 써본 적 없어도 이해하게 될 거예요. 그리고 집안 살림 숫자를 담는 앱에서 이 선택이 왜 모든 것을 바꾸는지도 이해하게 될 거예요.
먼저, 정확한 단어부터
동사부터 시작할게요. 파일을 암호화한다는 건 그것을 읽을 수 없는 연속된 값으로 바꾼다는 뜻이에요.
“들여보내 줘”라고 요구하는 비밀번호 뒤에 숨기는 게 아니라, 진짜로 변환하는 거예요. 텍스트와 숫자, 이미지를 가져다가, 올바른 키가 없으면 아무 의미도 없는 문자 덩어리로 바꾸는 거죠.
그 덩어리를 다시 읽을 수 있는 형태로 되돌리는 것을 키라고 불러요. 정보의 한 조각이에요. 컴퓨터가 생성한 아주, 아주 긴 비밀번호라고 생각하시면 돼요. 이게 없으면 파일은 그저 잡음으로 남아요.
키로 암호화해요. 키로 복호화해요. 키가 없으면, 그건 벽이에요.
암호화와 키, 이 두 단어를 기억해 주세요. 앞으로 나올 이야기는 전부 키가 어디에 있는가를 중심으로 돌아가니까요.
은행의 대여금고
모든 걸 명확히 해줄 것 같은 예시를 하나 들어볼게요.
은행 대여금고 아세요? 사람들이 중요한 문서, 보석 몇 점, 집에 두고 싶지 않은 것들을 넣어두는 곳이요.
이렇게 작동해요.
은행은 도난 방지 시설을 갖춘, 감시되는 튼튼한 금고실을 제공해요. 그 안에 당신의 대여금고가 있어요.
하지만 당신 대여금고의 열쇠는 당신이 갖고 있어요. 오직 당신만요.
은행은 금고실을 지켜요. 당신의 대여금고는 열 수 없어요. 열쇠가 없거든요. 만약 내일 부정직한 직원이 몰래 열어보고 싶어도 할 수 없어요. 당신의 열쇠 없이는 자물쇠가 열리지 않으니까요. 만약 도둑이 들어와 금고실 전체를 통째로 가져가더라도, 그들 손에 남는 건 열 수 없는 잠긴 금속 상자뿐이에요.
은행은 서비스를 제공해요. 금고실의 안전이라는 서비스를요. 그 안에 넣은 것에 접근할 권리는 요구하지 않으면서요.
종단간 암호화는 디지털 파일에 적용된 바로 이것과 같아요.
Cashfulness는 은행이에요. 당신에게 금고실, 즉 당신의 문서가 보관되는 저희 서버를 제공하죠.
대여금고의 열쇠를 가진 건 오직 당신뿐이에요.
그리고 저희는 은행처럼, 열 수 없이 지키기만 해요.
문서를 업로드할 때 실제로 일어나는 일
당신이 Cashfulness에 은행 명세서, 전기 요금 고지서, 임대 계약서, 보험 증권을 보관하고 싶다고 해볼게요.
이것들이 바로 Cashfulness에 업로드할 수 있는 문서예요. 명세서, 고지서, 계약서, 증권이요. 당신의 정보로 가득한 것들이죠. 전체 이름, 주소, 계좌번호, 금액, 거래 상대방까지요.
순서는 이래요.
당신은 휴대폰이나 컴퓨터에서 파일을 선택해요.
전송이 시작되기 전에, 아직 당신의 기기에 있는 상태에서, 문서가 암호화돼요. 앞서 말한 그 잡음 덩어리가 되는 거죠.
그 후에야, 이미 암호화된 상태로, 저희 서버를 향해 이동해요.
서버에 도착하는 건 잡음이에요. 서버에 남아 있는 것도 잡음이에요.
당신이 다시 읽고 싶어 할 때, 문서는 여전히 암호화된 채로 당신의 기기로 돌아와요. 그리고 그곳에서만, 오직 그곳에서만, 당신의 키로 다시 읽을 수 있게 돼요.
암호화가 일어나는 순간이 중요한 부분이에요. 당신 쪽에서, 전송 전에 일어나요. “서버에 도착하면 저희가 대신 잠가드릴게요”가 아니에요. 그건 지점장 서랍에 당신 열쇠의 복사본을 보관하는 은행이나 마찬가지죠.
아니에요. 저희는 그 키를 가진 적이 없어요. 당신에게서 태어나 당신 곁에 남아요.
당신의 키는 어디에 있나요
이쯤에서 당연한 질문이죠. 이 소중한 키를 잃어버리면 어떡하죠? 어디에 보관하나요?
당신 문서의 키는 두 가지, 당신의 것에서 만들어져요.
첫 번째는 Cashfulness에 로그인할 때 쓰는 비밀번호예요.
두 번째는 이 보호 기능을 활성화할 때 받는 24개의 단어로 이루어진 문자열이에요. 다른 곳에서도 가장 민감한 키를 보관하는 데 쓰이는 방식이죠. 스물네 개의 흔한 단어를 특정한 순서로 배열해서, 함께 마스터 복구 키 역할을 하게 되는 거예요.
이 두 가지로부터, 당신의 기기에서, 문서를 암호화하고 복호화하는 키가 만들어져요.
그리고 이 글 전체의 핵심이 여기 있어요. 그 키는 절대 당신의 기기를 떠나지 않아요.
저희 서버를 거치지 않아요. 저희는 그것을 어디에도 저장하지 않아요. 그것이 지나가는 걸 보지도 못해요.
마치 대여금고의 열쇠가 당신 집 안에서, 당신 손으로 만들어져, 거기서 한 번도 나가지 않은 것과 같아요. 은행은 그것을 단 한 순간도 본 적이 없어요.
저희 서버 입장에서, 다시 말씀드리지만, 당신의 모든 문서는 언제나 디지털 잡음 덩어리로 남아요.
당신의 문서를 읽을 수 없는 사람들 (즉, 당신을 제외한 모두)
명확하게 말씀드려 볼게요. 보통 프라이버시 약속이 진짜인지 무너지는지가 결정되는 지점이 바로 여기니까요.
Cashfulness를 만든 저희도 당신이 업로드한 문서를 읽을 수 없어요. 저희 기술자가 당신의 보험 증권을 여는 관리자 패널 같은 건 없어요. 기술적으로 존재하지 않아요. 저희에게 키가 없으니까요.
데이터가 돌아가는 서버를 관리하는 사람도 그것을 읽을 수 없어요.
언젠가 공격자가 저희 시스템을 뚫고 모든 것을 가져가더라도, 그것을 읽을 수 없을 거예요. 그들 손에 남는 건 잡음, 쓸모없는 파일뿐이니까요.
어떤 당국이 공식적으로 요청하더라도 저희는 읽을 수 있는 형태로 넘겨드릴 수 없어요. 원문을 갖고 있지 않으니까요. 저희가 넘길 수 있는 건 저희가 보관하는 잡음뿐이에요.
“당신의 문서를 우리는 볼 수 없어요”라는 문장은, 이 지점에서, 더 이상 친절한 안심의 말이 아니게 돼요.
하나의 사실에 대한 기술적 설명이 되는 거죠.
저희가 보지 못하는 건 볼 수 없기 때문이에요. 그건 다른 이야기예요.
동전의 이면 (먼저 말씀드리고 싶어요)
이렇게 촘촘한 보호에는 대가가 있고, 그것을 숨기는 건 정직하지 못한 일이에요.
비밀번호를 잃어버리고, 그리고 24개의 복구 단어까지 잃어버리면, 당신의 문서는 읽을 수 없게 돼요. 영원히요. 저희에게도요.
“다 잊어버렸어요, 파일을 다시 보내주세요” 같은 버튼은 없어요. 뒷문으로 들어와 되찾아줄 수 있는 저희 기술자도 없어요.
다시 은행 대여금고로 돌아가 볼게요. 열쇠를 잃어버리고 다른 누구도 복사본을 갖고 있지 않다면, 대여금고 안의 것들은 그대로 있지만 더 이상 아무도 열 수 없어요.
이렇게 말하면 조금 불안해질 수 있다는 거 이해해요. 하지만 다른 면에서 바라봐 주세요. 그게 저희가 이걸 선택한 이유니까요.
만약 어딘가에 — 저희 서버에, 지점장 서랍 안에 — 당신 키의 “백업”이 존재한다면, 그 백업이 시스템 전체의 약점이 될 거예요. 공격자가 가장 먼저 찾을 대상이 될 거예요. 당국이 저희에게 열라고 요구할 수 있는 문이 될 거예요. 부정직한 직원이 복사해 갈 수 있는 파일이 될 거예요.
오직 당신의 기기에만 존재하는 키, 그 문은 아예 열리지 않아요.
저희는 당신에게 온전한 통제권을 드리는 쪽을 선택했어요. 그것이 지우는 무게까지 함께요. 언젠가 댐의 균열이 되었을 지름길을 저희 손에 남겨두는 대신에요.
대신 당신께 부탁드리는 실천은 딱 하나예요. 그 24개의 단어를, 집 등기부등본을 보관하듯 소중히 지켜주세요. 종이에 적어서, 안전한 곳에, 남의 눈에 띄지 않게요. 자신에게 보내는 이메일 안이 아니라, 휴대폰 메모 안도 아니라요. 그 24개의 단어가 바로 당신 키의 예비 사본이에요. 정말 중요한 것을 지키듯이 지켜주세요.
정직한 설명 하나: 여기서 E2EE는 문서를 다룹니다
여기 있는 것보다 더 많이 팔고 싶지 않아요. 그건 이 글 전체의 취지에 반하는 일이니까요.
지금까지 말씀드린 종단간 암호화는 당신이 업로드하는 문서를 보호해요. 명세서, 고지서, 계약서, 증권이요. 그것들이 가장 민감한 층이고, 저희가 가장 촘촘한 자물쇠를 채운 곳이에요.
반면 당신의 진짜 회계 데이터 — 계정, 잔액, 당신의 포지션, 즉 순자산을 이루는 거래 내역 — 은 다른 논리를 따라요.
이것들은 저희 데이터베이스에, 유럽 서버에 있고, 서버 쪽에서는 평문이에요. 필요한 기술적 선택이에요. 휴대폰과 컴퓨터 사이에서 당신의 회계를 일치시키고, 저희가 보여드리는 지표를 실시간으로 계산하려면 필요하거든요. 문서와 똑같은 방식으로 암호화하면 앱이 극도로 느려지고, 사실상 쓸 수 없게 될 거예요.
하지만 — 여기가 많은 분들이 예상하지 못하는 부분인데요 — 그 숫자들은 당신의 신상 정보 없이 이동해요.
가입할 때 저희가 요청하는 건 닉네임(원하는 대로, 가상의 이름이어도 돼요)과 이메일, 비밀번호뿐이에요. 이름, 성, 주민등록번호, 생년월일, 주소, 전화번호는 요청하지 않아요.
그러니 데이터베이스에 접근할 수 있는 사람이라 해도, 어떤 닉네임에 딸린 계정, 잔액, 거래 내역만 볼 뿐, 그 숫자들을 실제 당신과 연결할 방법은 없어요.
이 두 번째 층이 어떻게 작동하는지, 그리고 저희가 왜 하나가 아니라 두 개의 층으로 이걸 만들었는지에 대해서는 따로 다룬 글이 있어요. 급진적 프라이버시: 두 개의 층, 하나의 약속이요. 오늘의 주제는 대여금고의 열쇠니까 여기서 멈출게요.
제가 짚고 싶었던 핵심은 이거예요. 종단간 암호화가 당신의 문서를 읽을 수 없게 만든다고 말할 때, 저희는 문서를 말하는 거예요. 나머지 부분에는 똑같이 진지한, 다른 보호가 적용돼요. 모든 걸 덮는 마법 같은 암호화가 있다고 믿게 놔두느니, 정확하게 말씀드리는 편이 낫다고 생각해요.
여기까지 이야기한 이유
기술 이야기로 마무리할 수도 있었어요. 하지만 기술 그 자체가 이유는 아니에요.
이유는 개인 재정이 친구에게도 선뜻 말하지 않는 것들을 담아두는 곳이기 때문이에요. 실제로 얼마를 버는지. 얼마를 모아뒀는지, 혹은 얼마나 적게 모아뒀는지. 짓누르는 빚 하나까지도요.
이런 앱을 열자마자 어딘가 누군가가 들여다볼지도 모른다는 의심이 마음 밑바닥에 남아 있다면, 그 앱은 존재 이유였던 것을 절대 주지 못할 거예요.
저희는 그것을 평온함이라고 불러요. The calm side of money, 돈의 평온한 면이요. 그리고 당신의 숫자가 진짜로 안전하지 않다면, 평온함은 그저 웹사이트에 적힌 단어일 뿐이에요.
문서에 걸린 종단간 암호화는 진열장에 놓을 기술적 트로피가 아니에요. 나머지 모든 것이 딛고 서는 바닥이에요. 그것이 없으면 지표와 포지션은 허공에 놓인 가구일 뿐이에요.
그래서 저희는 이것을 나중에 덧붙인 스위치가 아니라, 기초 자체에 새겨 넣었어요.
한 줄로 정리하면
가장 짧은 형태로 남겨드릴게요.
당신은 문서를 대여금고에 잠가둬요. 대여금고의 열쇠는 오직 당신만 갖고 있고, 그것은 절대 당신의 기기를 떠나지 않아요. 저희는 잠긴 대여금고를 지킬 뿐, 열 수는 없어요.
저희가 정직하겠다고 약속했기 때문이 아니에요.
일부러, 정직하지 않을 가능성 자체를 스스로 없앴기 때문이에요.
— Vittorio