Firefox Send 종단 간 암호화는 얼마나 안전합니까?

Firefox Send 종단 간 암호화는 얼마나 안전합니까?

Firefox는 최근 파일 공유 서비스를 출시했습니다.보내다. 이는 엔드투엔드 암호화를 약속합니다. 공유할 파일은 보낸 사람의 브라우저에서 암호화되고, 공유 URL에 포함된 키를 사용하여 받는 사람의 브라우저에서 해독됩니다.

파일을 공유하기 위한 URL의 형식은 다음과 같습니다.

https://send.firefox.com/download/03837dac3928b1d1/#lIFX1W1S2oXSwJF0QgMe_A

URL의 한 부분은 Mozilla 서버에 있는 파일의 위치를 ​​나타내고 다른 부분은 암호화 키라고 가정합니다. 그러나 유효한 URL에서 어느 부분을 변경하든 "해당 링크가 만료되었습니다"라는 오류가 발생합니다. 그래서 내 추측이 맞는지 알 수가 없었다.

어쨌든 제 질문은 종단 간 암호화에 대해 얼마나 확신할 수 있는지에 관한 것입니다. 그 메커니즘은 똑똑하지만 모든 장치의 Firefox 계정에서 내 공유 링크를 다시 가져올 수 있다는 것을 알았습니다. 이는 전체 링크가 어떻게든 Mozilla 서버의 내 계정에 저장된다는 의미입니다.

그렇다면 Mozilla가 모든 공유 파일을 해독하는 것은 기술적으로 가능합니다. 뭔가 빠졌나요? Firefox Send가 실제로 어떻게 작동하는지 그리고 종단 간 암호화 메커니즘을 사용하는 것이 안전한지에 대해 잘 이해하고 있는 사람이 있습니까?

정말 감사합니다.

답변1

저도 같은 생각이 들어서 이 질문에 이르렀습니다. 아, 글쎄요, 제가 직접 조사해 볼 수도 있겠네요.

Mozilla는 사용된 암호화를 문서화했습니다.여기더 간단한 용어로 설명하면 다음과 같습니다.

업로드 중

  1. 앱/브라우저가 암호화 키를 생성합니다.
  2. 이 키는 3개의 추가 키를 생성하는 데 사용됩니다. 하나는 파일 암호화 자체용, 하나는 메타데이터용, 다른 하나는 서명 키용입니다.
    • 비밀번호를 설정하면 비밀번호와 암호화 키가 안전하게 결합되어 대신 서명 키가 생성됩니다.
  3. 파일과 메타데이터가 암호화됩니다.
  4. 암호화된 데이터와 서명 키가 Mozilla로 전송됩니다.
    • 서명 키가 생성되는 방식으로 인해 키를 생성하는 데 사용된 원래 암호화 키를 다시 계산하는 것은 불가능합니다.
  5. Mozilla는 파일의 URL(# 다음 부분 제외)과 토큰을 보냅니다. 이 토큰을 사용하여 파일을 삭제할 수 있습니다.
  6. 앱에 # 기호와 암호화 키를 추가하세요.

다운로드 중

  1. 다운로드 페이지로 들어갑니다. 모든 브라우저는 # 이후의 부분을 서버에 제출하지 않습니다. (보통 같은 페이지의 다른 섹션으로 연결되는 앵커 링크에 사용됩니다.)
  2. Mozilla는 앱에 "nonce"(한 번만 사용되는 숫자) 또는 기본적으로 임의의 가비지 데이터를 보냅니다.
  3. # 뒤에 암호화 키가 있으므로 앱은 업로드 2단계에서와 같이 3개의 키를 모두 생성합니다. 업로더와 정확히 동일한 키를 얻게 됩니다.
  4. 앱은 서명 키를 사용하여 서버에서 제공한 nonce에 서명합니다.
  5. 앱이 서명된 nonce를 Mozilla로 보냅니다.
  6. Mozilla도 동일한 서명 키를 갖고 있으므로 Mozilla도 4단계를 수행하고 귀하가 보낸 키와 일치할 것으로 기대합니다. 이 단계에서는 다음 중 하나를 보장합니다.
    • 올바른 암호화 키를 알고 있습니다.
    • 또는 파일이 비밀번호로 보호되어 있으면 비밀번호를 알고 있어야 합니다.
  7. 귀하가 키를 알고 있음을 확인하면(서버에 키를 공개하지 않고도) Mozilla는 귀하에게 암호화된 메타데이터를 보냅니다.
  8. 앱은 컴퓨터에서 이 메타데이터를 해독하고 세부정보를 표시합니다.
  9. 다운로드를 클릭하면
  10. 앱이 암호화된 파일을 다운로드하고 컴퓨터에서 해독합니다.

따라서 귀하의 질문에 대답하려면 다음을 수행하십시오.

URL의 한 부분은 Mozilla 서버에 있는 파일의 위치를 ​​나타내고 다른 부분은 암호화 키라고 가정합니다. 그러나 유효한 URL에서 어느 부분을 변경하든 "해당 링크가 만료되었습니다"라는 오류가 발생합니다. 그래서 내 추측이 맞는지 알 수가 없었다.

6단계 다운로드에서 올바른 암호화 키를 알고 있음을 증명할 수 없는 경우 Mozilla는 파일 전송을 거부합니다.

어쨌든 제 질문은 종단 간 암호화에 대해 얼마나 확신할 수 있는지에 관한 것입니다. 그 메커니즘은 똑똑하지만 모든 장치의 Firefox 계정에서 내 공유 링크를 다시 가져올 수 있다는 것을 알았습니다. 이는 전체 링크가 어떻게든 Mozilla 서버의 내 계정에 저장된다는 의미입니다.

제가 링크한 문서에는 이 부분이 적혀있지 않습니다. 나는 주위를 둘러 본다출처업로드된 파일 목록을 귀하의 계정에 업로드하는 것을 발견했습니다. 이 데이터는 파일 암호화와 유사한 프로세스로 암호화됩니다.

주위를 둘러보니 암호화 키가 로컬에서 생성된 것 같습니다. 하지만 키가 어떻게 동기화되는지 잘 모르겠습니다.

그렇다면 Mozilla가 모든 공유 파일을 해독하는 것은 기술적으로 가능합니다. 뭔가 빠졌나요? Firefox Send가 실제로 어떻게 작동하는지 그리고 종단 간 암호화 메커니즘을 사용하는 것이 안전한지에 대해 잘 이해하고 있는 사람이 있습니까?

여기서 중요한 면책사항은 제가 암호화 전문가가 아니므로 다음과 같이 물어보고 싶을 수도 있다는 것입니다.crypto.se이에 대한 님의 의견입니다.

저에게 묻는다면 여기의 암호화 프로세스는 꽤 견고하고 사용된 알고리즘은 업계 표준이라고 생각합니다. Mozilla가 사용된 모든 키를 파일당 하나씩 무차별 대입하지 않고 모든 단일 파일을 해독할 수 있는 방법은 없습니다.

그러나 Mozilla가 해당 작업을 수행하고 있다고 신뢰해야 하는 추가 기능에 대해 알고 있어야 합니다.

  • 비밀번호는 서버에서만 확인됩니다. 암호화된 파일과 암호화 키를 얻으면 비밀번호를 몰라도 데이터를 해독할 수 있습니다. 일반적으로 귀하가 비밀번호를 알고 있다는 것을 입증하지 않는 한 서버는 암호화된 파일을 보내지 않으므로 이는 문제가 되지 않습니다. 그러나 Mozilla 자체는 암호화된 파일에 액세스할 수 있으므로 여기서는 암호화 키가 유일한 보호 수단입니다.
    • 대부분의 사용자가 제공한 비밀번호는 취약하다는 점을 고려하면, 비밀번호를 사용하여 데이터를 직접 암호화하는 것보다 무작위로 강력한 암호화 키를 생성하는 것이 더 좋습니다.
  • 수학 함수에서는 실제 현재 시간을 얻을 수 없기 때문에 만료는 암호학적으로 안전한 방식으로 구현할 수 없습니다. 따라서 Mozilla가 만료된 파일을 제거한다고 믿어야 합니다.

Firefox Send 오픈 소스 서버는 스토리지 백엔드로 AWS를 지원합니다. Firefox가 공공 서비스에서 무엇을 사용했는지는 잘 모르겠지만 AWS라면 위의 두 가지 문제에서도 AWS를 신뢰해야 합니다.

관련 정보