tessera

端對端加密

伺服器存著但讀不到的分享。預設關

加密的分享在離開上傳者的電腦之前就封好了,所以這台機器存著、送出去的,是它沒有金鑰的位元組。打開它這件事在收件人的電腦上發生。

預設關。打開 features.encryption 才會收。再關掉的話,新的不收,舊的照樣拿得到。

它防的是誰

操作者,以及任何拿到操作者手上東西的人。 資料庫的 dump、bucket 的副本、一個會去讀客戶物件的儲存供應商:他們看到的全部是封起來的位元組。

所以它值得開在一台幫不認識的人跑的機器上。在你只給自己用的機器上,它唯一擋得住的人是你。

擋不住一個說謊的頁面

在瀏覽器裡,負責封裝的程式碼是同一台伺服器剛送來的 JavaScript。想拿到金鑰的操作者可以送一個把金鑰傳回去的頁面,而任何網頁應用都沒辦法從裡面排除這件事。它排除的是存著的資料之後被讀走。指令列沒有這個缺口,因為它的程式碼不是從它在講話的那台伺服器來的。

用金鑰把內容封起來 送出封好的位元組 給連結,金鑰在連結的片段裡 拿封好的位元組 封好的位元組 用金鑰打開 上傳者 伺服器 收件人

金鑰放哪的兩種方式

放在連結裡。 金鑰寫在分享網址的 # 後面。瀏覽器從來不會把那段送給伺服器,所以拿到整條連結的人打得開,只拿到取件碼的人打不開。

從密碼來。 金鑰是從一組密碼推出來的,所以取件碼加密碼就夠了,兩個都能用電話念。

從密碼來的金鑰有兩個代價

拿到存著的位元組的人可以離線猜密碼,所以密碼至少要 12 個字,客戶端在上傳之前就會擋掉更短的。而且因為金鑰是從它來的,這種分享的密碼永遠不能改,也不能拿掉。

藏住的,和沒藏住的

藏住的沒藏住的
內容每個檔案多大
檔名和類型有幾個檔案
標題什麼時候建的、什麼時候過期
文字分享的語言被拿了幾次、從哪裡拿的

右邊那欄是這台機器執行配額、期限和次數限制要用到的。

不一樣的地方

  • 好幾個檔案會一個一個來,不會打包。打包檔要從伺服器讀不到的內容組出來。
  • 連結預覽只寫它是端對端加密的,以及大小。
  • 掃毒會跳過它。 掃毒軟體什麼都讀不到。見掃毒。
  • 文字不能從純文字連結直接開,要先由客戶端解密。

用指令列

tess 也能送出和下載加密的分享。

tess send --encrypt holiday/
tess send --encrypt --password report.pdf
tess get 'https://files.example.com/s/0ZPQ4M7K#…'

只加 --encrypt 時,金鑰放在連結的 # 後面。加上 --password,金鑰改從密碼算出來,密碼至少要 12 個字元,收件人要同時有連結和密碼。tess get 會問密碼,或讀 TESSERA_PASSWORD。

接下來

本頁內容