时序攻击

时序攻击时序攻击

大家好,又见面了,我是你们的朋友全栈君。

什么是时序攻击?

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

$expected  = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$correct   = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$incorrect = crypt('apple',  '$2a$07$usesomesillystringforsalt$');

var_dump(hash_equals($expected, $correct));
var_dump(hash_equals($expected, $incorrect));

进行比较,那么两个字符串是从第一位开始逐一进行比较的,发现不同就立即返回 false,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就实现了电影中经常出现的按位破解密码的场景。而使用 hash_equals 比较两个字符串,无论字符串是否相等,函数的时间消耗是恒定的,这样可以有效的防止时序攻击。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105881.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JStorm使用总结

    JStorm使用总结JStorm是一个类似HadoopMapReduce的系统,用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,JStorm将这个任务跑起来,并且按7*24小时运行起来,一旦中间一个Worker发生意外故障,调度器立即分配一个新的Worker替换这个失效的Worker。因此,从应用的角度,JStorm应用是一种遵守某种编程规范的分布式应用。从系统角度,JSto…

    2022年10月23日
  • 圆周率小数点后5000位数值表_输出一位小数C语言

    圆周率小数点后5000位数值表_输出一位小数C语言圆周率2500位圆周率500位3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745…

  • Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you ha

    Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you ha

  • LeetCode 1. 两数之和 Two Sum「建议收藏」

    LeetCode 1. 两数之和 Two Sum「建议收藏」给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1] 解决方案方法一:暴力法暴力法很简单。遍历每个元素xxx,并查找是否…

  • Unity DrawCall优化「建议收藏」

    Unity DrawCall优化「建议收藏」UnityDrawCall优化一MeshRenderer二SkinnedMeshRenderer三合并要求对比四总结五场景制作建议DrawCall优化合并,也叫批处理,即DrawCallBatching.通过减少Drawcall数提高性能。一MeshRenderer分为DynamicBatching和StaticBatching…

  • rinetd小记「建议收藏」

    官网:http://www.boutell.com/rinetd/下载地址:http://www.boutell.com/rinetd/http/rinetd.tar.gz编译安装:对于Windows,包rinetd.tar.gz已包含了编译好的可执行程序文件rinetd.exe,也可以使用VC(如VC6.0)去重新编译。对于Linux,只需要将包rin…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号