本文介绍了WebAssembly (WASM) 如何通过创建独立的沙箱环境、移除不安全的方法和提供内存保护来增强应用程序的安全性。同时,WASM 还能够提升如zkSnarks、HQC和McEliece等高性能要求的密码学算法的运行效率,并提供了相关的集成案例。
开发者的梦想是移植一个应用程序,使其完全在浏览器中运行,然后与下一代密码学集成,从而提供高水平的信任。目前,WebAssembly (WASM) 的发展正在实现这一点。
由此,WASM 在主机上创建了一个独立的沙盒环境,从而隔离了应用程序代码中的故障。这些应用程序随后独立运行,并且只能在沙盒内运行。然后,开发人员可以为其代码的执行编写安全策略(并使用同源策略)。
WASM 的一个关键特性是,它移除了一些使用 C/C++ 等语言的不安全方法,但仍然可以完全兼容各种编程语言。此代码以不可变的方式运行(并且在运行时无法更改),并且在运行时无法观察。这意味着我们可以运行带有密钥和密码的代码。除此之外,它还可以防止 C/C++ 经常遭受的缓冲区溢出。
除了防止缓冲区溢出之外,WASM 还可以防止不安全的指针使用和未定义的行为(例如 NULL 返回)——它通过取消对未分配内存的指针的引用以及自动释放内存分配来实现这一点。所有内存区域都与运行时环境隔离,并且在初始化时默认设置为零。
WASM 是目前使用 JavaScript 实现的一个巨大进步。侧信道分析是一个可能泄露一些敏感数据的领域,但通常很难设置,并且在高度敏感区域中精心设计的代码可以被设计为对侧信道具有鲁棒性。
因此,C 和 C++ 与 Golang 和 Rust 的使用机会一起,在一个可信软件的现代世界中继续存在。
这是一个用于 zkSnarks 的 WASM 集成:
对于 McEliece 签名:
带有 JavaScript 的 McEliece \ \ 在 NIST PQC 竞赛的第三轮中,Kyber 被选择作为密钥封装方法的标准化方法,并且…\ \ asecuritysite.com
对于 HQC:
对于 SPHINCS+:
这是一个使用 WASM 实现同态加密的例子:
由于 SPHINCS+、zk-Snarks、HQC 和 McEliece 都存在高性能问题,因此需要 WASM 才能使它们有效地运行。
- 原文链接: medium.com/asecuritysite...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!