This is a proposal about formally introducing Wasm module digital signatures and verification of Wasm bytecode. There was a number of people who were interested in this and I have an interest in getting this working for Istio/Wasm as well as supporting Wasm types in sigstore (e.g. by supporting it in the transparency log).
Right now, there are people who are signing packages or whole .wasm files (https://bytecodealliance.github.io/lucet/Integrity-and-authentication.html, https://medium.com/wasmer/securing-wapm-packages-with-package-signing-3cf0d12f32f3 container signing). But, embedded signatures could allow implementations to validate and make decisions before instantiating the module. Custom sections are natural places to hold this information (see the linked implementations below) in the module.
There is a starter google doc attempting to capture and collaborate on the requirements/use cases that people may need: https://docs.google.com/document/d/1nTLpJMxKNQ4u03g6-KFGYPR7VVovcLKUX0nq0yVnJcw/edit
Links:
WebAssembly/design#1185
https://github.com/jedisct1/wasmsign
https://github.com/frehberg/wasm-sign
proxy-wasm/proxy-wasm-cpp-host#147
Please feel free to correct, add to, comment on.
This is a proposal about formally introducing Wasm module digital signatures and verification of Wasm bytecode. There was a number of people who were interested in this and I have an interest in getting this working for Istio/Wasm as well as supporting Wasm types in sigstore (e.g. by supporting it in the transparency log).
Right now, there are people who are signing packages or whole .wasm files (https://bytecodealliance.github.io/lucet/Integrity-and-authentication.html, https://medium.com/wasmer/securing-wapm-packages-with-package-signing-3cf0d12f32f3 container signing). But, embedded signatures could allow implementations to validate and make decisions before instantiating the module. Custom sections are natural places to hold this information (see the linked implementations below) in the module.
There is a starter google doc attempting to capture and collaborate on the requirements/use cases that people may need: https://docs.google.com/document/d/1nTLpJMxKNQ4u03g6-KFGYPR7VVovcLKUX0nq0yVnJcw/edit
Links:
WebAssembly/design#1185
https://github.com/jedisct1/wasmsign
https://github.com/frehberg/wasm-sign
proxy-wasm/proxy-wasm-cpp-host#147
Please feel free to correct, add to, comment on.