Open4

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

okuokuokuoku

nestは基本的に信頼できるソースのコードしか実行しないのであんまりtoken窃取とかのリスクを考える必要は無いと思ってきたけど、さすがにサプライチェーン攻撃が花盛りなのである程度は対策した方が良い気がしている。

というわけで、暗号化ファイルシステムを考えたい。

→ Wasm版SQLite3のOPFS VFSを改造して暗号化機能を付けるのが良いかな https://sqlite.org/src/file/ext/wasm/api/sqlite3-vfs-opfs.js?proof=755170804

okuokuokuoku

SQLite3上のファイルシステム

メタデータのデータ構造とか考えるのは面倒なので、SQLite3上のファイルシステム実現を見てみることにした。

S3QL

本格派。まだdeepwikiに載ってなかった。

libsqlfs

メタデータと8KiBごとのブロックはテーブルを分けている。まぁあたりまえか。block numberを増やしたブロックを挿入していく感じになる。

okuokuokuoku

メタデータを暗号化する必要があるか問題

これはめっちゃ微妙な問題だな。。今回のケースだと保護したいのは鍵データだけなので、メタデータを保護するモチベーションが無い。せめてファイル名をハッシュするとか..?

ただ、メタデータを保護しないとファイルの差し替えのような攻撃に安全に対処できないという問題がある。

okuokuokuoku

PQC(量子コンピューター耐性)

https://techblog.lycorp.co.jp/ja/20241114b

暗号鍵は256bits必要。まぁこれは今でもクリアしてるシステムが多い。

ハッシュ長が倍というのはちょっとコストとして正当化しづらい感じがある。この場合、256bitsハッシュは128bitsぶんの複雑さに縮退してしまうが、ファイル名は高価値ターゲットではないので諦めてしまいたいところ。。