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

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

  1. Linux中阶—加密库OpenSSL(四)

    在使用OpenSSL命令创建证书前,可查看配置文件/etc/pki/tls/openss.conf文件,查看该文件定义了的证书存放位置及名称. 一.server生成证书文件. 1.生成私钥:opens ...

  2. PHP被浏览器解释成注释,HTML+CSS入门 在HTML中嵌入的php代码会被浏览器注释掉如何解决...

    本篇教程介绍了HTML+CSS入门 在HTML中嵌入的php代码会被浏览器注释掉如何解决,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门. < html中嵌入php代码时,没有输 ...

  3. Linux内核分析--内核中的数据结构双向链表续【转】

    在解释完内核中的链表基本知识以后,下面解释链表的重要接口操作: 1. 声明和初始化 实际上Linux只定义了链表节点,并没有专门定义链表头,那么一个链表结构是如何建立起来的呢?让我们来看看LIST_H ...

  4. Linux 内核中的宏定义

    Linux 内核中的宏定义 rtoax 日期 内核版本:linux-5.10.13 注释版代码:https://github.com/Rtoax/linux-5.10.13 __attribute__ ...

  5. 【小沐学C#】WPF中嵌入web网页控件(WebBrowser、WebView2、CefSharp)

    文章目录 1.简介 1.1 WPF简介 1.2 WPF 体系结构 1.3 WPF入门开发 2.WebBrowser 2.1 WebBrowser特点 2.2 WebBrowser常用的属性.方法和事件 ...

  6. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

  7. 在windows程序中嵌入Lua脚本引擎--编写自己的Lua库

    在<在windows程序中嵌入Lua脚本引擎--建立一个简易的"云命令"执行的系统>一文中,我提到了使用Lua的ffi库,可以让我们像写C代码一样写lua程序.这是个非 ...

  8. 在windows程序中嵌入Lua脚本引擎--使用VS IDE编译Luajit脚本引擎

    前些天听到一个需求:某业务方需要我们帮忙清理用户电脑上的一些废弃文件.同事完成这个逻辑的方案便是在我们程序中加入了一个很"独立"的业务逻辑:检索和删除某个程序产生的废弃文件.试想, ...

  9. Linux内核中锁机制之完成量、互斥量

    在上一篇博文中笔者分析了关于信号量.读写信号量的使用及源码实现,接下来本篇博文将讨论有关完成量和互斥量的使用和一些经典问题. 八.完成量 下面讨论完成量的内容,首先需明确完成量表示为一个执行单元需要等 ...

最新文章

  1. MATLAB【九】————ICP算法实现
  2. Javascript history pushState onpopstate方法做AJAX SEO
  3. WHY YOUR PRIVATE CLOUD COULD LOOK A LOT LIKE PAAS
  4. mesh threejs 属性_threeJS创建mesh,创建平面,设置mesh的平移,旋转、缩放、自传、透明度、拉伸...
  5. P2626 斐波那契数列(升级版)
  6. 数学有多震撼?!我真的没有在开车!
  7. 题目1335:闯迷宫( BFS在求解最短路径或者最短步数上有很多的应用)
  8. LVM逻辑卷管理学习
  9. Plus One @python
  10. 统计年鉴29份3种格式混合
  11. 表白页php制作html静态网页,九款表白网页源码静态HTML5下载
  12. Java二叉树基础操作常见代码例题
  13. java发送邮件连接超时,Java邮件超时和连接超时处理
  14. 计算机在汽车专业中的应用,浅谈计算机技术在汽车行业中的应用.doc
  15. win10注册mysql到windows服务报错:Install/Remove of the Service Denied
  16. win10硬盘锁怎么解除_win10系统中BitLocker加密磁盘无法解锁怎么办?
  17. 学习进度总结————王烁130201218
  18. This page can't be displayed. Contact support for additional information. The incident ID is: xxxxxx
  19. 《企业级大数据平台构建:架构与实现》阅读总结
  20. 快手集福气中国牛 2021快手集福卡活动规则

热门文章

  1. php小偷程序原理分析2
  2. Oracle表分区和索引分区汇总
  3. 阿里用回mysql_回mysql方式
  4. WebRequest 请求被中止: 请求已被取消。 错误解决方法
  5. golang类型断言的使用(Type Assertion)
  6. 常见Json字符串反序列化处理方式总结
  7. iOS 实现不定参数方法
  8. hdu2041 dp
  9. 使用ioctl向linux内核传递参数的方法实例
  10. 泛型(Generic)-反射泛形-Dao