문서로 건너뛰기
지식 베이스

저장 데이터 암호화

메시지의 모든 필드(본문, 제목, 주소, 첨부 파일 바이트)를 기록하기 전에 봉인하므로, 데이터베이스 사본은 메일이 아니라 암호문입니다.

아직 미구현

오늘 이 방식으로 봉인되는 것은 사용자가 맡긴 자격 증명뿐입니다. 본문, 제목, 첨부 파일은 도착한 그대로 저장되며, 이를 봉인할 봉투는 만들어져 있지만 의도적으로 아무 곳에도 연결되어 있지 않습니다.

세부 사항

  • 출시되지 않았습니다. 기록되기 전에 봉인되는 것은 딱 하나, 웹훅 서명 시크릿뿐입니다. 한 테이블에서 빼낸 암호문을 다른 테이블의 것으로 열 수 없도록 각자의 파생 키로 봉인되며, 코드베이스에서 무언가가 봉인되는 곳은 그곳이 전부입니다. 본문, 제목, 연락처, 메모, 캘린더 항목, 첨부 파일은 어느 것도 이 경로를 거치지 않습니다.
  • 이는 양옆의 두 가지 주장과는 다른 주장이며, 차이는 키를 누가 가지고 있느냐입니다. 종단 간 암호화는 키가 사용자의 것이고 메일을 여기서 읽을 수 없다는 뜻입니다. 저장 데이터 암호화는 이 서버가 파생한 키로 저장소에 들어가는 길목에서 메일을 봉인한다는 뜻이므로, 데이터베이스 덤프나 잘못 흘러간 백업, 실행되지 말았어야 할 쿼리는 암호문을 보게 되는 반면 서버 자체는 스레드 구성, 검색, 요약을 위해 여전히 열어 볼 수 있습니다. 앞의 것은 저희로부터 사용자를 보호합니다. 뒤의 것은 그 외의 모든 사람으로부터 보호하며, 다른 회사들에게 계속 일어나고 있는 일이 바로 그것입니다.
  • 오늘의 사실은 추론하게 두지 말고 분명히 말하는 편이 낫습니다. 메일은 자체 디스크를 암호화하는 인프라에 저장되고, 그 위에 저희 자체 계층은 없으며, 키는 저희가 가지고 있습니다. 따라서 서버는 저장한 내용을 읽을 수 있고, 메일을 검색하고 요약하는 기능은 정확히 그 일을 합니다. 개인정보 처리방침 페이지는 작성된 이래로 그 표현 그대로 밝혀 왔고, 이 기능이 출시될 때까지 계속 그렇게 밝힐 것입니다.
  • 모든 필드는 본문 이상을 뜻합니다. 제목, 발신자와 수신자 목록, 목록 화면이 렌더링하는 미리보기 문구는 일반적인 색인 컬럼에 들어 있고, 메시지에서 생성된 요약, 스레드에 붙인 메모, 연락처 이름, 캘린더 제목과 장소, 모든 파일의 이름과 형식도 마찬가지입니다. 제목 줄이 평문으로 남아 있는데 카드에 암호화되었다고 적는다면, 그것은 이 제품이 다른 어디에서도 그리기를 거부하는 바로 그 자물쇠가 될 것입니다.
  • 비용이 얼마인지가 미해결 질문이었는데, 그중 검색 쪽은 이제 논쟁이 아니라 수치를 갖게 되었습니다. 오늘의 검색은 각 스레드의 최신 메시지 앞 4,000자를 평문으로 보관해 두고 그 위에서 실행하는 쿼리입니다. 봉인하면 이미 키를 가진 메일함 저장소 안에서 복호화한 뒤 스캔하는 방식이 되며, 한 행씩이 아니라 청크 단위로 처리합니다. 합성 코퍼스 기준으로 대화 50,000개에서 대략 100~400밀리초이고, 200,000개를 넘어서면 결과를 한꺼번에가 아니라 점진적으로 내보내야 합니다. 이는 실제 메일함이 아니라 개발용 머신에서 생성된 메일을 대상으로 측정한 값이므로, 사용자 환경에 대한 약속이 아니라 비용의 대략적인 형태입니다. 그래서 단어의 어느 조각으로든 매칭하는 동작은 지금과 똑같이 유지되고, 나중에 누군가 빼내 갈 수 있는 단어 해시 색인을 디스크에 쓸 필요도 없습니다. 요약기, 피싱 점수 산정의 본문 단계, AI 작성 검사, 단어를 매칭하는 규칙이 읽는 텍스트도 모두 같은 텍스트이고, 각각이 같은 방식으로 그것을 열게 됩니다. 이것이 이 주장의 정직한 형태입니다. 데이터베이스 사본에 대해서는 봉인되지만, 서버에 대해서는 결코 봉인되지 않습니다.
  • 대체 불가능한 것을 봉인하기 전에, 봉투는 자체 버전과 자체 키 id를 지니고 있어야 합니다. 현재 모든 파생 키는 하나의 시크릿에 매달려 있고, 그것을 교체하면 웹훅 서명 시크릿을 잃게 됩니다. 본문까지 같은 방식으로 봉인된 뒤라면 교체 비용은 메일이 됩니다. 그 부분은 만들어져 있고, 아직 그것으로 봉인된 것은 없습니다. 그것이 만드는 모든 봉투는 자체 버전과 그것을 만든 키의 id를 지니며, 열어 보기 전에 읽을 수 있고, 자신이 속한 정확한 행에 스스로를 묶습니다. 한 행에서 빼내 다른 행에 넣은 값은 열리지 않으며, 잘못된 키처럼 실패하는 대신 옮겨졌다고 알립니다. 아직 아무것도 그것을 호출하지 않으며, 먼저 만들어 둔 이유가 바로 그것입니다. 형식이 약속이고, 한 번에 한 필드씩 채택하는 일은 되돌릴 수 있는 부분입니다.
  • 무엇을 봉인할지는 한 문장으로 정해집니다. 아직 아무도 생각하지 못한 컬럼에도 적용할 수 있도록 말입니다. 사람이 쓰거나 고른 것은 봉인하고, 기계가 고른 것은 남겨 둡니다. 제목, 본문, 스레드 메모, 연락처 이름, 캘린더 제목, 파일 이름, 직접 입력한 규칙은 사용자에게서 온 것입니다. 메시지 id, 큐 상태, 재시도 횟수, 행 id는 여기서 생성된 것이며, 봉인해도 얻는 것은 없고 그것을 읽는 모든 쿼리에 비용만 듭니다. 그 위에 예외가 두 가지 있습니다. 해시나 토큰 다이제스트처럼 이미 되돌릴 수 없는 값은 봉인한다고 더 안전해지지 않습니다. 의도적으로 공개하는 값은 읽을 수 있게 둡니다. 봉인하면 그 값이 존재하는 이유인 배포 자체를 막게 되기 때문입니다.
  • 그 규칙 아래에서 읽을 수 있게 남는 것은 세 가지이며, 각각은 마무리하지 못한 구석이 아니라 메일함이 딛고 선 토대입니다. 타임스탬프는 정렬 키이자 페이지네이션 커서이며, 날짜순으로 정렬할 수 없는 메일함은 메일함이 아닙니다. 도메인은 그것을 읽는 쿼리가 수신 메시지를 어느 테넌트에 속하는지 찾아 주는 경로이기 때문입니다. 아직 아무도 로그인하지 않았고 어떤 키도 손에 없는 시점에 필요합니다. 공개 키는 발신자가 조회하기 때문입니다. 이들 각각은 계정의 형태에 관해 무언가를 말해 주지만, 어느 것도 메일의 내용은 아닙니다.
  • 서버가 파생한 키로 봉인하는 것이 첫 단계이며 지금 만들고 있는 단계입니다. 두 번째 단계, 즉 메일이 도착할 때 사용자의 키로 봉인해 이곳의 어떤 키로도 열 수 없게 하는 것은 더 큰 변화이자 다른 제품입니다. 본문이 검색과 AI 기능에서 영구히 빠지고, 키 보관과 복구 문구의 책임이 사용자와 사용자의 메일 사이로 옮겨 갑니다. 그것은 스위치를 켜는 일이 아니라 신중하게 내려야 할 선택이며, 이 카드는 둘을 뭉뚱그리지 않고 어느 쪽이 출시되었는지 밝힐 것입니다.