Open4
nest: 暗号化ストレージを考える会

nestは基本的に信頼できるソースのコードしか実行しないのであんまりtoken窃取とかのリスクを考える必要は無いと思ってきたけど、さすがにサプライチェーン攻撃が花盛りなのである程度は対策した方が良い気がしている。
というわけで、暗号化ファイルシステムを考えたい。
→ Wasm版SQLite3のOPFS VFSを改造して暗号化機能を付けるのが良いかな https://sqlite.org/src/file/ext/wasm/api/sqlite3-vfs-opfs.js?proof=755170804 。

SQLite3上のファイルシステム
メタデータのデータ構造とか考えるのは面倒なので、SQLite3上のファイルシステム実現を見てみることにした。
S3QL
本格派。まだdeepwikiに載ってなかった。
libsqlfs
メタデータと8KiBごとのブロックはテーブルを分けている。まぁあたりまえか。block numberを増やしたブロックを挿入していく感じになる。

メタデータを暗号化する必要があるか問題
これはめっちゃ微妙な問題だな。。今回のケースだと保護したいのは鍵データだけなので、メタデータを保護するモチベーションが無い。せめてファイル名をハッシュするとか..?
ただ、メタデータを保護しないとファイルの差し替えのような攻撃に安全に対処できないという問題がある。

PQC(量子コンピューター耐性)
暗号鍵は256bits必要。まぁこれは今でもクリアしてるシステムが多い。
ハッシュ長が倍というのはちょっとコストとして正当化しづらい感じがある。この場合、256bitsハッシュは128bitsぶんの複雑さに縮退してしまうが、ファイル名は高価値ターゲットではないので諦めてしまいたいところ。。