OpenPGP.js: デフォルトだと復号がストリーミングされない理由と解決策
#OpenPGP.js #OpenPGP #GPG #セキュリティ #ブラウザのJavaScript
Release v4.0.0 - Streaming · openpgpjs/openpgpjsに書かれている。
twissさんに教えてもらった。
解釈ミス回避
暗号化処理はデフォルトでストリーミングされる。復号がストリーミングできない。
オプションを有効化すれば復号でもストリーミング可能にある。
ストリーミングされない理由
認証データがデータの最後にあるため、その認証データを待っている。
解決策
openpgp.config.aead_protect = trueまたは、
openpgp.config.allow_unauthenticated_stream = true
最初のaead_protectはAEADを有効化するもの。AEADはデータをチャンクに分けてそのチャンクごとに認証データを付与することでストリーミングしながらの復号しながら認証も出来る。ただしこのAEADは現段階だとdraftで、破壊的にデータ形式などが変更される可能性があるみたい。
次のallow_unauthenticated_streamは最後の認証データを待たずに途中の(ストリーミング中の)ときは認証せずに復号していくオプション。
AEADのRFC: draft-ietf-openpgp-rfc4880bis-05 - OpenPGP Message Format
日本語の資料: 次期 OpenPGP と AEAD — しっぽのさきっちょ | text.Baldanders.info