首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用SSL* (使用PHP)实现SRP挑战登录系统*

用SSL* (使用PHP)实现SRP挑战登录系统*
EN

Security用户
提问于 2012-10-01 02:24:00
回答 2查看 1.6K关注 0票数 1

我的问题是:有人知道如何在PHP中实现SRP / Diffie-Hellman身份验证(或者是否已经这样做了)?

(一些细节)

  1. 我使用CodeIgniter和TankAuth (都是最新版本)
  2. 我强制通过.htaccess进行SSL访问

本项目的要求之一是使用基于挑战的身份验证,我读过很多关于它的文章,似乎使SRP / Diffie-Hellman与TankAuth (以及SSL一起)一起工作是一种安全的身份验证解决方案(只要正确完成!)

唯一真正的问题是:我只是无法将SRP规范转换成PHP/mysql (我以为自己擅长数学,但显然不是!)

如果它是简单的php并不重要,我可以修改代码使其与CodeIgniter/TankAuth一起工作。

我搜索了很多,我能找到的最接近的是,但是实现感觉不太好。

我还了解到,我最终将不得不调整这一点,使两个步骤的身份验证过程看起来像一个普通的一步标准登录表单(使用ajax),但这是以后的事,现在我仍然停留在逻辑上。

EN

回答 2

Security用户

回答已采纳

发布于 2012-10-01 10:17:55

我在一段时间前看过SRP规范,它们很好地描述了如何使用一些众所周知的密码构建块,并将它们塑造成一个零知识协议。然而,加密构建块本身并没有得到解释(它们被认为是密码专家的共同知识)。

如果我正确理解,SRP使用的数学方案可以被证明可以归结为Diffie-Hellman问题(我的术语可能是不正确的,我的意思是SRP问题至少可以证明与Diffie-Hellman问题一样计算昂贵),但它并不等于Diffie-Hellman问题。

请记住,零知识密码方案被认为是最难正确实现的事情之一。我不久前写了对SRP的回答。正如您所看到的,它比您所链接的文章中的“密码咸化和修改的挑战-响应系统”的实现要复杂得多。(你不相信它是对的,我想我能发现其中的弱点,我只是一个安全爱好者,不是密码专家或安全专家)。

此外,据我所知,SRP是一个受版权保护的计划。

因此,我的建议是:坚持当前在服务器端使用强散列算法(BCrypt)的最佳实践,使用TLS (SSL)保护您的通信通道,而不是实现一个非常复杂的方案,比如SRP。

票数 1
EN

Security用户

发布于 2014-06-05 13:36:43

该算法被移植到客户端(浏览器)的JavaScript和服务器的PHP :参见Ruslan Zavacky的spr-6a-演示 on GitHub。

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/20915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档