Design: WASM 模块签名/验证

创建于 2018-02-15  ·  6评论  ·  资料来源: WebAssembly/design

Wasm 模块缺乏安全签名和 Wasm 模块字节码验证的概念。

这种签名将允许验证通过网络传输的 WebAssembly 模块文件的真实性和完整性。

二进制编码(Wasm-module-files)应该包含一个签名。
应该可以在不解析 Wasm 字节码的情况下创建和验证签名。

概念证明已经实施,可在https://github.com/frehberg/wasm-sign 上获得

这里的 Wasm-Module-Signature 是一个 CustomSection (0),使用部分名称“签名”并附加到 Wasm-module-bytecode 的末尾。 总大小/开销为 118 字节。 使用 ECDSA 创建的签名。 支持的曲线是 secp256k1/SHA256。 未来将支持以下曲线 Ed25519 和 secp384r1。

为了互操作性,标准化签名格式会很有用。

最有用的评论

我想更好地了解 Web 当前的签名和验证机制是如何失败的,以及一流的 WebAssembly 支持将如何解决这个问题。 具体来说,Web 具有 HTTPS 和子资源完整性,虽然绝对不完美,但已经为我们做了很多。

您能否详细解释一下您想要修复的内容,以及您的提案如何没有相同的陷阱?

所有6条评论

我相信我们还需要文本格式的等价物,可能类似于: (signature ...)

对于 CSP,是否可以通过 https 检查签名? 或者你认为它应该是默认行为?

嗯,“CSP 和检查”:这在过程中会很早。 我们需要一个(或多个)服务器或任何其他实例的公钥进行验证,并且它必须是使用 EC(黄道曲线)的公钥。

如果它与基于 HTTP(S) 的服务相关,则需要访问相应的公钥(椭圆曲线密钥)。 也许相应的公钥可以作为正在加载 WASM 模块的网页的 HTTP-header-attribute 嵌入。

签署了 WASM 模块后,可以从任何位置获取这些模块并进行验证。

是否会有一个组织(托管商)签署 WASM 文件,或者网页是否会从多个组织/供应商处获取签名模块?

在多个组织的情况下,要么将“组织 ID”添加到签名本身,要么将某种 SignerOrg 定义为附加部分(也是固定大小)。 该过程可能如下所示:首先附加 SignerOrg Seciton,然后对两者进行签名(原始模块字节码和签名者组织部分)

似乎必须首先定义用例和流程;)

我想更好地了解 Web 当前的签名和验证机制是如何失败的,以及一流的 WebAssembly 支持将如何解决这个问题。 具体来说,Web 具有 HTTPS 和子资源完整性,虽然绝对不完美,但已经为我们做了很多。

您能否详细解释一下您想要修复的内容,以及您的提案如何没有相同的陷阱?

嗯,我可以试试

嵌入式签名已用于 PDF、Win 二进制文件、驱动程序、XML 文档等。
签名的 WebAssembly 模块有什么用?

想象一下

  • Web 应用程序执行 WebAssembly 代码来计算银行密码。
  • Rust/C++ 应用程序使用 WebAssembly 作为嵌入式执行引擎,评估加密货币合约
  • HSM-s 使用 WebAssembly 字节码在服务器后端计算 PIN
  • 其固件使用不同 WebAssembly 模块(内容可寻址存储/链接)的特定版本组装的物联网设备

在后一种情况下,物联网设备的固件版本将是使用特定版本的 WebAssembly 模块列表。 IoT 设备可以将其 WebAssembly 模块版本传播到附近的其他设备 (http://www.korhal.io/whitepaper.pdf)。 不需要中央更新服务器。

在所有这些情况下,TSL 传输不足以建立信任,但应签署代码,以便接收者能够验证从开发人员/供应商到网络浏览器或执行的整个供应链中的真实性、完整性引擎。
签名可防止篡改静态数据,并在法律方面防止操作关键代码的不可否认性。

使用分离的签名(与嵌入到 WASM 模块中的签名相比)处理起来会更复杂。 嵌入式签名将简化整个字节码供应链的处理。

我不相信这是在 WASM 本身级别最好解决的问题。 签名可以添加到任何数据。 为什么他们需要成为语言本身的一部分?

此外,在我看来,您可能对HTTP Origin-Signed Responses Standard感兴趣。

很难过。 语言的一部分,因为签名的 wasm 会保留一个有效的 wasm 文件; 所以在解析之前它不会被删除。 好吧,由于 CustomSection 的存在,可以添加这样的结构。 只是,将它从“自定义功能”移动到“标准功能”会很好。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

chicoxyzzy picture chicoxyzzy  ·  5评论

dpw picture dpw  ·  3评论

beriberikix picture beriberikix  ·  7评论

nikhedonia picture nikhedonia  ·  7评论

artem-v-shamsutdinov picture artem-v-shamsutdinov  ·  6评论