tessera

エンドツーエンド暗号化

サーバーが保存しても読めない共有。デフォルトはオフ

暗号化した共有は、送り手のマシンで封をしてから送られます。インスタンスは鍵を持たないままバイト列を保存し、配るだけです。開くのは受け取る側のマシンです。

デフォルトはオフです。受け付けるには features.encryption を有効にします。あとでオフにすると新しいものは断られ、既存のものは引き続き受け取れます。

誰から守るか

運営者と、運営者の持っているものを手に入れた人。 データベースのダンプ、バケットのコピー、顧客のオブジェクトを読むストレージ事業者。どれに見えるのも封をしたバイト列だけです。

なので、運営者が知らない人のために動かすインスタンスでは持っておく価値があります。自分のためだけに動かすインスタンスでは、締め出す相手は自分だけです。

嘘をつくページからは守れない

ブラウザで封をするコードは、同じサーバーが送ってきた JavaScript です。鍵が欲しい運営者は、鍵を送り返すページを配ることができます。これはどんな Web アプリも内側からは防げません。防げるのは、保存したデータを後から読まれることです。コマンドラインにはこの穴はありません。そのコードは、通信先のサーバーから来たものではないからです。

鍵で中身を封じる 封じたバイト列を送る 鍵をフラグメントに入れたリンクを渡す 封じたバイト列を取得 封じたバイト列 鍵で開く アップロード側 サーバー 受け取り側

鍵の持ち方は二通り

リンクに入れる。 鍵は共有のアドレスの # の後ろに書かれます。ブラウザはこの部分をサーバーに送りません。リンク全体を持っている人は開けますが、受け取りコードだけでは開けません。

パスワードから作る。 鍵をパスワードから導くので、コードとパスワードがあれば足り、どちらも電話で読み上げられます。

パスワードから作る鍵には代償が二つある

保存されたバイト列を持っている人は、オフラインでパスワードを推測できます。そのためパスワードは 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 を読みます。

次に読む

このページの内容