首页 > Web开发 > 详细

php防范时序攻击的办法

时间:2019-09-11 15:42:05      阅读:89      评论:0      收藏:0      [点我收藏+]
什么是时序攻击?

在密码学中,时序攻击是一种侧信道攻击,攻击者试图通过分析加密算法的时间执行来推导出密码。每一个逻辑运算在计算机需要时间来执行,根据输入不同,精确测量执行时间,根据执行时间反推出密码。

如果是用普通的 == 来进行比较,那么两个字符串是从第一位开始逐一进行比较的,发现不同就立即返回 false,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就实现了电影中经常出现的按位破解密码的场景。

所以php中为了应对这种情况,可以使用hash_equals函数。

 

摘抄一段php手册上的信息:

hash_equals ( string $known_string , string $user_string ) : bool

比较两个字符串,无论它们是否相等,本函数的时间消耗是恒定的。

本函数可以用在需要防止时序攻击的字符串比较场景中, 例如,可以用在比较 crypt() 密码哈希值的场景。

 

<?php
$expected  = crypt(‘12345‘, ‘$2a$07$usesomesillystringforsalt$‘);
$correct   = crypt(‘12345‘, ‘$2a$07$usesomesillystringforsalt$‘);
$incorrect = crypt(‘apple‘,  ‘$2a$07$usesomesillystringforsalt$‘);

var_dump(hash_equals($expected, $correct));//true
var_dump(hash_equals($expected, $incorrect));//false
?>

 

php防范时序攻击的办法

原文:https://www.cnblogs.com/tudou1223/p/11506574.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!