首页 > 其他 > 详细

Timing attck

时间:2020-07-05 17:20:08      阅读:49      评论:0      收藏:0      [点我收藏+]

从耗子叔那看到了篇讲这个的,说实话还是第一次接触这个,当然不细究如何进行这种攻击,大概就是根据大量的时间差来试出密码等信息

// Constant time for same length String comparison, to prevent timing attacks
func safeEqual(a, b string) bool {
	if len(a) != len(b) {
		return false
	}

	var equal uint8
	for i := 0; i < len(a); i++ {
		equal |= a[i]^b[i]
	}

	return equal == 0
}

这里就是用一个异或,如果没有timing attack的前提,这似乎并不高效,因为只要长度一致,即使第一个字符不相等也要跑完整个字符串,所以对于安全性不是很高且对性能要求较高的场景不建议使用。

正常的思路

func unsafeEqual(a, b string) bool {
	if len(a) != len(b) {
		return false
	}

	for i := 0; i < len(a); i++ {
		if a[i] != b[i] {
			return false
		}
	}

	return true
}

各有各的好处。

https://coolshell.cn/articles/21003.html

Timing attck

原文:https://www.cnblogs.com/CherryTab/p/13246307.html

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