字节码联盟成立,WebAssembly 生态将完善网络安全性
近日 Mozilla、Fastly、Intel 与 Red Hat 宣布成立联合组织 Bytecode Alliance(字节码联盟),该联盟旨在通过协作实施标准和提出新标准,以完善 WebAssembly 在浏览器之外的生态。
WebAssembly 也叫 Wasm,它是为基于栈的虚拟机设计的二进制指令格式,Wasm 作为可移植目标,用于编译高级语言(如 C/C++/Rust),从而可以在 Web 上部署客户端和服务器应用。
WebAssembly 描述了一种内存安全的沙箱执行环境,该环境甚至可以在现有 JavaScript 虚拟机内部实现。当嵌入到 Web 中时,WebAssembly 将强制执行浏览器的同源和权限安全策略。
目前 1.0 版本的 Wasm 已经支持 Chrome、Firefox、Safari 与 Edge 浏览器。
此次四家公司为什么结成 Bytecode Alliance 呢?Mozilla 官网博客上 Lin Clark 作了介绍。
Lin 表示,当前网络用户身处越来越大的风险中,目前大家在构建大规模的模块化应用,其中 80% 的代码库来自软件包注册中心,例如 npm、PyPI 与 crates.io。这样的方式当然使得生态繁荣,但是安全问题也在极速增加。
破坏这些安全的人利用的正是用户的信任,当用户使用应用时,他们并不清楚背后这些软件依赖关系,它们之中有没有恶意代码用户根本不知道,也无法明确是否可信任。
所以联盟想通过 WebAssembly 技术来推动这一个领域的安全性。Bytecode Alliance 将建立起可靠安全的基础,无论在云中、本地桌面,还是小型 IoT 设备上,都可以安全地使用不受信任的代码。开发人员可以以相同的方式使用开源代码,而不会给用户带来风险,而这些通用的可重用基础集可以单独使用,也可以嵌入其它库和应用中。
具体来说,所有这些因为依赖项而产生的安全问题都是因为不同软件/模块/文件有权限访问到其它内容,而基于 WebAssembly 可以提供某种隔离,这样就可以安全地运行不受信任的代码。
可以设计一个类似于 Unix 的小型进程或容器和微服务的架构,但是这种隔离十分轻量,它们之间的通信也不会比常规函数调用慢很多。
使用这样的模式,可以封装单个 WebAssembly 模块实例,或者封装一小部分想要在它们之间共享内存之类的模块实例。同时也不必放弃强大的编程语言特性,例如函数签名和静态类型检查。
Lin 介绍了目前 WebAssembly 的一些技术方案,包括几个要点:
- 每个 WebAssembly 模块默认都被沙箱化,默认情况下,模块无权访问 API 和系统调用。
内存模型,与直接编译为 x86 之类的普通二进制文件不同,WebAssembly 模块在其进程中无法访问所有内存,而是只能访问已分配给它的内存块。
接口类型,模块可以使用更复杂的值进行通信,比如 strings、sequences、records、variants,以及它们的嵌套组合。这使得两个模块可以轻松地交换数据,并且这种方式安全且快速。
具有权限概念的 API 和系统调用,以便它们可以为不同的模块赋予对不同资源的不同权限,也就是 WASI,WebAssembly 系统接口。它提供了一种方法,可以将不同的模块彼此隔离,并赋予它们对文件系统特定部分和其它资源的细粒度权限,以及对不同系统调用的细粒度权限。
这些是目前已经存在于 WebAssembly 技术中的技术,但目前还没有办法将这些安全控制向下传递给依赖树,这需要一种让父模块有赋予其依赖关系同样的安全控制的方法。
这也就是 Bytecode Alliance 目前在进行的工作,计划采用各个模块虚拟化的细粒度形式,研究人员已经在研究环境,目前正在努力将其引入 WebAssembly。
字节码联盟成立,WebAssembly 生态将完善网络安全性的更多相关文章
- 微软加入字节码联盟,进一步开发支持Blazor 的WebAssembly技术
字节码联盟 (Bytecode Alliance)宣布已正式成为 501(c)(3) 非营利组织,参与组建的企业/组织包括 Fastly.英特尔.Mozilla 和微软,此外还邀请到了 Arm.DFI ...
- Java字节码(.class文件)格式详解(一)
原文链接:http://www.blogjava.net/DLevin/archive/2011/09/05/358033.html 小介:去年在读<深入解析JVM>的时候写的,记得当时还 ...
- Java之字节码(2) - .class文件格式详解
转载来自 小介:去 年在读<深入解析JVM>的时候写的,记得当时还想着用自己的代码解析字节码的,最后只完成了一部分.现在都不知道还有没有保留着,貌似Apache有现 成的BCEL工程可以做 ...
- 《深入理解Java虚拟机》-----第8章 虚拟机字节码执行引擎——Java高级开发必须懂的
概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念 ,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的,而 ...
- JVM(6) 字节码执行引擎
编译器(javac)将Java源文件(.java文件)编译成Java字节码(.class文件). 类加载器负责加载编译后的字节码,并加载到运行时数据区(Runtime Data Area) 通过类加载 ...
- Java finally语句到底是在return之前还是之后执行(JVM字节码分析及内部体系结构)?
之前看了一篇关于"Java finally语句到底是在return之前还是之后执行?"这样的博客,看到兴致处,突然博客里的一个测试用例让我产生了疑惑. 测试用例如下: public ...
- Java虚拟机--字节码指令集
1. 字节码指令集简介: Java虚拟机的指令由一个字节长度的,代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成.虚拟机中许多指 ...
- 从 HelloWorld 看 Java 字节码文件结构
很多时候,我们都是从代码层面去学习如何编程,却很少去看看一个个 Java 代码背后到底是什么.今天就让我们从一个最简单的 Hello World 开始看一看 Java 的类文件结构. 在开始之前,我们 ...
- jvm 字节码执行 (一)方法调用
“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上,而虚拟机的执行引擎是 由自己实现的,因此可以自行制定指令集 ...
随机推荐
- ansible批量管理常见的配置方法
第7章 ansible的管理 7.1 ansible概念的介绍 ansible-playbook –syntax 检查语法 ansible-playbook -C ...
- JavaEE基础(04):会话跟踪技术,Session和Cookie详解
本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操 ...
- solr索引基本原理
solr是一个全局检索引擎,能够快速地从大量的文本数据中选出你所需要的数据,而你只需要提供相应的关键词进行检索.solr的高效率查询靠的是底层强大的索引库,所以solr最关键的技术也是其底层的索引设计 ...
- 【重温基础】instanceof运算符
最近开始在整理ES6/ES7/ES8/ES9的知识点(已经上传到 我的博客 上),碰到一些知识点是自己已经忘记(用得少的知识点),于是也重新复习了一遍. 这篇文章要复习的 instanceof 是我在 ...
- Spring Bean Scope (作用域)
singleton: 单例模式,针对每个spring容器,只有一个该类的实例被管理,每次调用此实例都是同一个对象被返回,所以适用于无状态bean.默认情况下,singleton作为spring容器中b ...
- idea 几个常用的设置
一.主题的背景
- 记录一次创建.net core 项目 并且发布到docekr【完全新手入门】
1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker: Docker for Windows 2]创建.net core项目并且发布 2.0先打开并且运行 ...
- grid行高亮显示
grid var grid = new Ext.RSEGrid({ //数据显示面板 id: 'O005_grid', title: '图纸目录', loadMask: true, autoScrol ...
- 用 Keras 实现单词级的 one-hot 编码 & 使用散列技巧的单词级的 one-hot 编码
from keras.preprocessing.text import Tokenizer samples = ['The cat sat on the mat.', 'The dog ate my ...
- 备份下ESP8266的AT指令集手册和用例手册中文版,准备为V7做几个ESP8266的例子
指令集手册:https://files.cnblogs.com/files/armfly/4a-esp8266_at_instruction_set_cn.rar 用例手册: https://file ...