端對端加密是什麼?
大多數傳輸服務會在傳輸過程中(TLS)和儲存在伺服器上時把檔案加密。這對外部攻擊很有效,但金鑰掌握在服務方手裡,技術上服務方是讀得到檔案的。端對端加密(E2EE)把加密移到兩端:你的瀏覽器在上傳前加密,收件人的瀏覽器在下載後解密,中間伺服器上的資料,沒有那把不在伺服器上的金鑰就無法讀取。
| 一般傳輸 | 端對端加密傳輸 | |
|---|---|---|
| 傳輸加密(TLS) | 有 | 有 |
| 儲存加密 | 有(儲存端) | 有,上傳前用你的金鑰 |
| 金鑰儲存在我們的伺服器 | 由儲存端管理 | 完全不儲存 |
| 伺服器看得到檔名、標題、留言 | 看得到 | 看不到,已加密 |
| 下載頁預覽 | 由伺服器產生 | 瀏覽器解密,單一檔案最大 2GB |
| 在 Transfr 的費用 | 免費 | 免費 |
實際的差別是:用了 E2EE,就算儲存空間被入侵、被誤存取,或服務方收到法律要求,能拿到的也只有加密後的資料。想用白話了解原理,可以讀「白話解說端對端加密」。
傳送端對端加密傳輸的步驟
第 2 步
開啟端對端加密
在傳輸設定裡開啟。瀏覽器會產生一把隨機金鑰,一邊上傳一邊逐一加密檔案。
第 3 步
需要的話再加密碼
密碼會參與產生金鑰,就算拿到完整連結,沒有密碼也無法解密。
第 4 步
分享完整連結
複製包含「#」後面部分的完整連結,或透過 Transfr 寄 Email 給最多 10 人。收件人打開連結後,由他的瀏覽器解密檔案。
幫下一次傳輸加密
端對端加密免費,單次最大 100GB。
技術原理
- 每次傳輸都在瀏覽器裡產生一把新的隨機金鑰。
- 每個檔案用 AES-GCM 加密,並以小區塊串流處理,大檔案也不必整個載入記憶體。這個做法沿用了 Mozilla 開源專案 Send 的設計。
- 金鑰放在網址的片段(「#」後面)裡。 瀏覽器開啟頁面時不會把片段傳給伺服器,所以打開連結時金鑰也不會傳到我們的伺服器。
- 檔名和留言一樣加密: 檔名、檔案類型、傳輸標題和留言沒有金鑰都無法讀取。
- 同時設定密碼時,解密金鑰會在瀏覽器裡由連結中的金鑰和密碼共同產生。伺服器只保存用來驗證密碼的雜湊值。
端對端加密也藏不住的東西
做安全判斷時,清楚了解限制很重要。即使使用 E2EE,伺服器仍然知道傳輸存在、加密檔案的大小和數量、建立時間以及下載時間。另外,任何拿到完整連結的人都能解密。所以搭配密碼和較短的過期時間效果更好。
連結的安全也取決於你把它放在哪裡。含有完整連結的信會像其他信件一樣留在收件人的信箱裡,貼到群組的連結群組成員都看得到。如果擔心,可以自己複製連結、透過信任的管道傳送,再用另一種方式告知密碼。這樣只偷看到一則訊息是打不開檔案的。
開啟前要知道的不便之處
| 功能 | 一般傳輸 | 使用 E2EE 時 |
|---|---|---|
| 資料夾結構 | 保留 | 以檔案清單傳送(資料夾路徑會透露名稱) |
| 關閉頁面後續傳 | 可以(6 天內) | 不行(金鑰只在該頁面中) |
| 預覽 | 所有支援的格式 | 瀏覽器解密,單一檔案最大 2GB |
| 從 Drime 匯入的檔案 | 支援 | 無法使用 |
| 密碼、過期時間、最大下載次數 | 可用 | 可用 |
需要保留結構的資料夾,先壓成 ZIP 再用端對端加密傳送。如果要在不穩定的網路下上傳 100GB,為了能續傳,也可以改用密碼加上較短的過期時間。參考「傳送資料夾」和「傳送 100GB 檔案」。
什麼時候該用端對端加密
- 法律、醫療、財務文件: 合約、病歷、帳單、身分證件影本。詳見「律師事務所的安全檔案傳輸」。
- 尚未公開的作品: 電影、專輯、還沒發布的行銷素材。
- 個人資料: 限制誰能讀取本身就是義務的一部分。處理歐洲個人資料時請看「符合 GDPR 的檔案傳輸」。
- 一旦連結外流就說不清楚的任何東西。
如果只是分享旅遊照片這類日常用途,一般傳輸加上密碼通常就夠了,還能保留資料夾和續傳。各種保護方式的比較見「如何安全地傳送檔案」,兩者怎麼搭配見「檔案設定密碼再傳送」。
從設計上保護隱私
在瀏覽器中加密,金鑰不儲存在我們的伺服器上。免費。