0

0

为你的PHP程序选择合适的密码库

php中文网

php中文网

发布时间:2016-06-23 13:14:34

|

1315人浏览过

|

来源于php中文网

原创

密码学不是魔术。加密一个应用程序并不能保证它在袭击下的安全(特别是在你没有设置验证密文的情况下)。但如果出于商业需求你要确保程序的安全,传统做法会建议你最好 不要尝试设计你自己的密码。你应该使用已有的密码库。

好了,以上我都了解了。那么我应该用哪个PHP密码库呢?

这取决于你的实际需求。让我们来看一下一些好的选择。(我们不会提及任何糟糕的密码库的。)

立即学习PHP免费学习笔记(深入)”;

安全的PHP密码库建议

下面是一个安全信任度较高的可部署在生产环境中的PHP密码库清单。本清单基于以下三项标准进行优先排序。

  1. 若正确使用,此密码库的安全程度如何?
  2. 风险行为的困难度如何?
  3. 一个非密码破译者最大限度使用之的简易度如何?

Halite – 来自 Paragon Initiative Enterprises

我们推荐此密码库不仅是因为它是我们自写的,首推它是因为你可以通过简单直观的接口获取使用libsodium的全部安全保护。这是一款免费软件,并且源码是可以直接获取的。

使用Halite的好处

• 主线

  • 对称密钥认证加密
  • 对称密钥认证(例如:API 消息)
  • 非对称密钥认证加密
  • 非对称密钥匿名加密
  • 非对称密钥数字签名

• 全文件加密(见:所有主线特征)

• 加密cookies

• 密码存储

• 你不需要知道现时值是什么,你也不需要特别关注认证加密。Halite会帮你做好一切。

我们创建Halite以供PHP开发者通过一个更简单的接口获取libsodium拓展的所有安全性优势。查看Halite的相关文件就能知道它的使用是多么简便。(尽管 API 是固定的,Halite帮助文件依然是不完善的。然而它已经足以涵盖入门级的内容。)

唯一的缺陷是你必须 安装PHP的libsodium扩展包才能使用Halite。因此对于很多项目来说,Halite方式是行不通的。

安装指南:

  1. 安装PHP的libsodium扩展包
  2. 需要 paragoniehalite`

很显然,如果你不喜欢我们对于Halite所做的决策,那么可以考虑直接使用libsodium。

使用libsodium的优势

• 对称密钥加密认证(同:AEAD)

• 对称密钥认证

• 非对称密钥认证加密

• 非对称密钥匿名加密

• 非对称密钥数字签名

• 加密哈希函数

• 密码存储

• 瑞士军刀式的密码学原语(比如:基于Curve25519的Diffe-Hellman密钥交换协议的椭圆曲线)

• 在PHP中的内存清除(补零)能力

• 还有好多

请向Frank Denis以及创作了NaCl(libsodium由此分生)的小组致敬,因为libsodium一直是世界上最可靠的,跨平台的密码学库。

简灰服装商城整站 For SHOPEX
简灰服装商城整站 For SHOPEX

SHOPEX简灰服装商城整站源码下载。 安装方法:1.解压上传程序至网站根目录.. 访问:域名/bak.(用户名:admin 密码:123456)2.进入帝国备份王后,配置数据库数据库信息.选择-www.taomoban.net目录.还原数据库.3.修改FTP目录下的config/config.phpphp 数据库连接信息.4.登陆网站后台--清空缓存..5.删除bak文件夹 后台:shopadm

下载

安装指南

请参阅相关文件。

PHP Encryption – 来自 Defuse Security

如果你不能从PECL(也就是永远不能安装libsodium)安装PHP拓展包,这个密码库应该是你的备用选择。通常情况下,不论你的框架提供了什么方案,你都应该优先考虑它,因为我们的安全小组经常能发现PHP框架提供的对称密钥加密功能的缺陷。

使用Defuse Security 的 PHP密码库的优势:

• Symmetric-key authenticated encryption

• 对称密钥认证加密

它解决了大多数人都会遇到的一个问题(并且解决得非常棒)。该密码库的第二版(即将发布!)将同样涵盖全文件加密,但是由于它还未发布,因此我们还不能以此为加分项。

Phpseclib - Jim Wigginton, et al. (仅对 RSA 而言)

如果你一定要安装对称密钥加密,请使用上述的Defuse的密码库。Defuse Security的密码库为你提供了认证加密,而phpseclib的AES实施并不会验证密文。因此如果你使用它,你对选择密文攻击的抵抗力将十分脆弱。(他们的交互文件在ECB模式下同样出错严重,是我们提过的最坏分组密码模式。)

尽管phpseclib为通用对称秘钥加密方式提供的 API 等级过低,使得我们不愿向缺乏密码学背景的PHP开发者在这种使用方式下推荐它,但是它相对extopenssl而言提供了一种更好的非对称秘钥加密方式。

如果你坚持必须使用非对称秘钥加密方式(公共秘钥加密,电子签名)并且出于各种原因无法使用libsodium,那么你就应该考虑安装phpseclib,并且严格遵循Colin Percival提出的密码算法的正确解答。

特别注意

  • RSA加密算法:RSA-OAEP(最优不对称加密填充),首先考虑 $rsa-setMGFHash('sha256')
  • RSA 签名加密:RSA-PSS(probabilistic signature scheme),再次明确指定使用MGF1+SHA256

如果你刚好是一位密码学专家,那你可以忽略我们的警示信息,使用phpseclib提供的对称秘钥加密方式。但是对大多数非密码学专家的编程者来说,请最好不要忽略我们的提示。

使用PHPSecLib的优势:

  • 对称秘钥认证(通过HMAC秘钥,PHP同样提供)
  • 非对称秘钥匿名加密(RSA)
  • 非对称秘钥电子签名方式(RSA)

更新内容 (2015-11-19)Easy RSA

在本篇博客发布以后,我们又针对建议开发了插入式安装包,EasyRSA。EasyRSA是一种方向确定且默认安全设置的phpseclib使用。

EasyRSA加密过程

问题:使用RSA加密一段超大字符串,即使RSA本身也不支持加密超大字符串数据。

原始解决方案是将你输入的字符串切分分块并单独分别加密。然而这和 可怕的电码本(ECB)模式十分相似。同样的:它的处理进程也十分缓慢。这是个非常糟糕的解决方案。

我们的解决方案

  • 生成临时秘钥
  • 使用 Defuse Security的PHP对称秘钥加密密码库加密您的消息

  • 使用已有RSA公共秘钥加密临时秘钥(一种对padding oracles攻击方式抵抗效果良好的方式)

  • 基于64位编码,并且使用版本标记前缀来连接密文
  • 附加第四步中的校验和(截取的哈希SHA256加密算法)来增强传输存储错误检测能力。

要解密一段消息

  1. 验证检验和和版本标记
  2. 使用正确RSA私钥来解密临时秘钥
  3. 使用上一步获取的解密秘钥来获取明文

EasyRSA只使用RSAES-OAEP + MGF1-SHA256 with e = 65537来进行公钥加密,已知此种加密方式对任何padding oracle攻击都是有良好抵抗力的。

EasyRSA 签名方式

RSA签名方式是相对直接的:使用RSASS-PSS + MGF1-SHA256 with e = 65537来计算RSA签名,然后校验它是否设定为仅接受此种签名。

但是认真讲,如果你真的想为你的PHP程序找到一种确保安全的加密方式,请尝试寻找能使用libsodium的方式。我们正推动 使libsodium成为PHP7.1中的核心拓展包,因此希望它的使用能够在将来同“更新新版PHP”一样简单。

关于我们提供的PHP加密库建议

那其他密码库呢?

任何未在上文提及的密码库的落选原因都可以由以下三条可能原因解释:

  1. 我们审核了该密码库,但是凭心而论并不足以让我们进行推荐。(有可能我们已经告知创作者其密码库存在缺陷,以便他们加以改进。)
  2. 密码库使用范围太窄(比如Crypt GPG),或者尽管安全,它和加密的广泛使用情况并不相关。
  3. 我们太忙了,还没审核该密码库。(我们可能还不知道有这个密码库的存在。)

如果你对我们认定有缺陷的密码库感兴趣,请查看安全建议页以获取更多信息。

在PHP中,我们应该使用何种方式加密密码?

你不需要加密密码,你只需要用合适的密码散列算法(哈希密码算法)来杂乱密码。当前的最佳密码库之一是PHP内建的: password hash() andpasswordverify()。这种散列算法对99%的编程者或企业来说都是稳定有效的。这个算法就是这么棒。

然而,如果你将数据库中的密码存储在你网页应用的不同服务器中,你可以通过加密散列(而不是加密密码本身)来减轻密码入侵风险。要使用这种方式,请查看Halite密码课程。

重要的安全建议免责声明

尽管我们雇佣了一些PHP开发安全的行业顶尖专家(并且我们精于应用密码学),在不了解你的特定项目要求和风险模型的前提下,他们在写作这篇向导时并不能指引你选取最符合需求的解决方案。

因此如果,比如,你需要使用非对称加密算法,还执意选择使用Defuse Security的对称加密密码库,请不要说“是Paragon Initiative Enterprises让我这么干的!”

如果你想根据自己的特定项目获得我们的安全建议,请考虑 雇用我们进行安全咨询服务。

或者用法律术语说:此文信息不提供任何担保,使用风险自负。

原文地址: Choosing the Right Cryptography Library for your PHP Project: A Guide

本文系OneAPM 工程师编译整理。OneAPM 是应用性能管理领域的新兴领军企业,能帮助企业用户和开发者轻松实现:缓慢的程序代码和 SQL 语句的实时抓取。想阅读更多技术文章,请访问OneAPM 官方博客。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

616

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

194

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

91

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

20

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

54

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

598

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

56

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
手把手实现数据传输编码
手把手实现数据传输编码

共1课时 | 757人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号