PHP成为首个在内核中嵌入加密库的编程语言

PHP团队最近投票一致通过了“将Libsodium库集成到PHP内核中”的决议,使得PHP成为首个使用公认现代加密库的编程语言。

Libsodium是个便捷,可交叉编译,现代化,易于使用的软件库;可用于加密,解密,签名,密码哈希等。和PHP源代码一样,Libsodium是用C编写的。如今,很多公司,如Keybase,数字海洋,Riseup,Yandex,Wire和Zcash,已经他们的服务中部署Libsodium。

提出加入Libsodium建议的的开发者是来自Paragon Initiative公司的首席开发官Scott Arciszewski,他曾在过去的开发会议中提倡在PHP CMS中加入更强大的加密技术。

Libsodium将在PHP 7.2中出现

PHP团队决定在2017年年底推出的PHP 7.2中加入Libsodium。目前最新PHP版本为7.1.2。

Arciszewski解释了他为什么期望在PHP内核中嵌入Libsodium,主要原因就在于WordPress以及共享托管供应商——绝大部分共享主机供应商不允许用户安装自定义PHP扩展,因为许多未经测试或未知的扩展可能对其设备造成危害。

Arciszewski的想法是如果将Libsodium集成到PHP内核中,就可以摆脱对托管提供商的依赖,用户也不用再为PHP扩展的安全性担忧,因为以后的PHP版本将会默认支持加密库。“共享主机提供商还是主要原因,因为VPS供应商(在我印象中,总是)一般是让你在自己虚拟机上以root权限运行的。”

除此之外,Arciszewski表示Libsodium的加入,同样也免去了说服WordPress团队去加强他们的安全建设的过程,因为他们自然会用PHP默认支持的强加密功能。

PHP需要Libsodium的其他原因

相关PHP加入Libsodium,Arciszewski还提出了更多原因,他认为Libsodium嵌入到PHP核心对PHP全局的安全性有很多好处。比如说:

1. 显然Libsodium会让共享网络托管提供商为用户升级到PHP 7.2;

2. 本次升级会告诉操作系统开发人员,“Libsodium是必要的;它是默认安装的一部分”;

3. PHP手册将会列出对libsodium扩展的说明,这意味着开发人员将有官方文档可依;

4. PHP 7.2+内部就能使用libsodium功能,例如PHP Archives(Phar扩展)很快就会有Ed25519签名;

5. 在不对用户产生影响的情况下,那些需要libsodium的开源项目就可方便安装。

Arciszewski在邮件中提到:“我坚信安全应该属于每个人,而不应该只属于那些有能力为安全买单的1%的人。PHP在互联网上的占有率至少有82%,而libsodium又是大多数加密技术人员推荐的应用层加密库。

“在PHP开发者眼中,PHP和libsodium的联手应该是获得更好的安全性最为直接和合理的方式。许多开发者没有时间或加密方面的经验来搭建属于自己安全。”

为什么“第一个”是PHP,而不是Go或Erlang?

Arciszewski解释了使用加密库后的技术优势,以及为什么Libsodium是现在最现代化的加密库之一,详情点击这里可查看。另外他还解释了为什么PHP才是真正意义上“第一个”在其核心中支持“现代”加密库的编程语言——尽管Erlang和Go包含类似的库,但是它们的实施完整性与将来加入到PHP 7.2中的Libsodium不可同日而语。

在加入Libsodium到PHP之前,Arciszewski已经在WordPress之上进行了实践,他在WordPress 4.4中添加了一个强大的CSPRNG(加密安全伪随机数生成器),并发现WordPress更新过程中的几个缺陷,这将允许攻击者劫持互联网上的所有WordPress网站。

作者:bimeover
来源:51CTO

时间: 2024-09-21 13:10:09

PHP成为首个在内核中嵌入加密库的编程语言的相关文章

利用Kprobe探测内核中的变量

今天遇到一个问题,需要探测内核中buffer cache block的大小.我想到了Kprobe这个神奇的工具,并且很好的探测到了内核中的变量值,非常的方便,在此分享一下. 采用dd等工具写设备的时候,是需要经过块设备层的buffer cache,当请求块大小小于buffer cache的block_size时,Linux的策略是首先需要从磁盘load数据至buffer cache,然后再将新写入的"局部数据"写入buffer cache.这一步骤完成之后,会将整个buffer cac

服务器-关于网页中嵌入视频播放插件的问题

问题描述 关于网页中嵌入视频播放插件的问题 我想知道,在网页中打开别人上传到服务器的资源是直接用本地的播放器打开好,还是在网页中用插件打开好,我上网看了一些插件但是只支持很少的格式,而我又不会转码,谁知道应该怎么解决? 解决方案 可以尝试用html5 转码的话用转码软件 解决方案二: 既然是网页,当然是用网页插件来播放比较好了,调用用户的本地浏览器就有损web开发的优势了,至于转码,推荐用ffmpeg,网上相关资料很多,最好建立一个带转换列表,xml或者数据库都行,写个服务程序调用ffmpeg进

如何在程序中嵌入FOP

FOP使用方式 FOP有3种使用方式,分别为命令行,程序嵌入,XT 嵌入,这里将主要介绍如何在程序中嵌入FOP功能.将XML文件转换为PDF实际上分为2步,第1步是利用XSLT将XML转换为XSL-FO,第2步是将XSL-FO转换为PDF.这里不想讲述XSLT和XSL-FO有关的知识(这方面的文档相当多),而只将讲述如何进行第2步的转换编程. 在程序中嵌入FOP 1. 范例simple.fo文件 上述是一个很简单的fo文件,将显示两块文字,具体的fo语法请读者自己查看相应资料. 2. 简单调用F

WPF中嵌入WinForm中的webbrowser控件

原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能使用.决定还是使用WinForm中的webbrowser.要想在WPF中使用WinForm控件,查看MSDN,需经过以下步骤. 创建名为 HostingWfInWpf 的 WPF 应用程序项目. 在解决方案资源管理器中,添加一个对名为 WindowsFormsIntegration.dll 的 Wi

Linux内核中常见内存分配函数(一)

linux内核中采 用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表. * 页全局目录(Page Global Directory) * 页上级目录(Page Upper Directory) * 页中间目录(Page Middle Directory) * 页表(Page Table) 页全局目录包含若干页上级目录的地址,页上级目录又依次包含若干页中间目录的地址 ,而页中间目录又包含若干页表的地址,每一个页表项指

Linux内核中的递归漏洞利用

背景知识 在Linux系统中,用户态的栈空间通常大约是8MB.如果有程序发生了栈溢出的话(比如无限递归),栈所在的内存保护页一般会捕捉到. Linux内核栈(可以用来处理系统调用)和用户态的栈很不一样.内核栈相对来说更短:32位x86架构平台为4096byte , 64位系统则有16384byte(内核栈大小由THREAD_SIZE_ORDER 和 THREAD_SIZE 确定).它们是由内核的伙伴内存分配器分配,伙伴内存分配器是内核常用来分配页大小(以及页大小倍数)内存的分配器,它不创建内存保

C++中嵌入ie浏览器总结 .

C++中嵌入ie浏览器总结(1) - ie边框 及上下文菜单      最近项目中用html 来做界面,也就折腾了一下在wxwidget中嵌入浏览器的若干细节工作,mfc也基本是类似的,由于wxwidget中已经做了一个封装wxie,但是开发过程中也遇到了不少问题,在此做一下总结:  ie边框 及上下文菜单   普通嵌入到程序里面的浏览器页面都会有一个灰色的边框,这样放到程序里面就很难看.目前网上流行的办法添加css: body{  border:0;}        但是这个方法的缺点是,必须

在RFID中嵌入FRAM 打破传统RFID标签的一系列限制

开车的朋友可能会有这样的经历,当您经过高速公里收费站时,您的交通收费卡在进站和出站时偶尔会无法读取,原因是您的交通卡使用的频率比较高,超过了它的读写次数.目前,这些交通卡大部分是采用内嵌EEPROM的RFID制作的,而如果将智能交通卡中的EEPROM换成FRAM,问题就迎刃而解了. "采用FRAM 的RFID的读写次数可以达到1012,而采用EEPROM 的RFID的读写次数最多只有一百万次,这就是为何高速收费处偶尔会出现数据读不出的问题."富士通半导体(上海)有限公司市场部高级经理蔡

Linux内核中的内存管理浅谈

 [十月往昔]--Linux内核中的内存管理浅谈 为什么要叫做"十月往昔"呢?是为了纪念我的原博客. 不知道为什么,突然想来一个新的开始--而那个博客存活至今刚好十个月,也有十个月里的文档. 十月往昔,总有一些觉得珍贵的,所以搬迁到这里来. 而这篇文章是在09.04.20-09.04.21里写的. Jason Lee   ------------–cut-line   1.基本框架(此处主要谈页式内存管理) 4G是一个比较敏感的字眼,早些日子,大多数机器(或者说操作系统)支持的内存上限