Piping UIのストリーミングダウンロード時のService Workerへのダウンロード情報への受け渡しをより安全にした変更
Piping UIの0.5.0で反映されたストリーミングしながらのダウンロードをより安全にする変更について。 ストリーミングしながらダウンロードして復号化する
URLフラグメントへの鍵情報と従来の問題点
ただし問題点として、ブラウザのダウンロード履歴などにURLフラグメントは残ってしまう。この問題を修正したのが0.5.0になる。問題といってもパスワードレスで暗号化している場合一度しか使われないエフェメラルな鍵で、ダウンロード履歴ぐらいにしか残らないが、パスワードでの暗号化する時に使い回しをしているような人がいればそれがブラウザのダウンロード履歴に残るはよくないと思っていて変更した。 変更前のダウンロード履歴は以下のようになる。URLエンコードされている分かりhttpsやppng.m..などダウンロードに必要な情報がURLフラグメントに載っていることが分かる。 https://gyazo.com/12acf23c685bac9bf86041404db4f942
変更点
変更後は以下ようなダウンロード履歴になる。
https://gyazo.com/47413c7d680acc6c690e807b69c96607
ダンロードまでの流れに関して。
そして/sw-download#${128文字のランダムな文字列}をダウンロードする。Service Workerではそのランダムな文字列とダウンロード情報の紐付けのハッシュマップがあるため適切なPiping Serverの特定のパスからダウンロードし鍵情報があればそれをつかってストリーミングしながら復号できる。