Spring事务管理与数据库隔离级别的关系(Spring+mysql)

Timing攻击是一种常见的软件攻击方式。基本的思路就是分析输入数据值的变化引发的软件处理时间变化,从而反推有效数据。

BCTC目前推出的安全测试也包含了对PIN码的Timing攻击。虽然PIN因为重试次数的限制,不具有样本效应,但从安全视角上来看,确实是有隐患。

PIN的处理就是数据和标准值比对的过程,通常的比对方法如下:

BOOL ArrayCompare(U08* src, U08* dst, U16 length)
{
	U16 i;
	for(i=0;i<length;i++)
	{
		if (src[i]!=dst[i])                
		{                       
			return FALSE;                
		}
	}
	return TRUE;
} 

可以看到在这种比对方式下,随着输入数据的不同,退出循环的时间是有区别的,通过大量样本理论上是可以通过时间的区别分析出PIN的所有数据的。为避免Timing攻击,有必要将比对方法做如下修改:

BOOL ArrayCompare(U08* src, U08* dst, U16 length)
{
	U16 i;
	BOOL res;
	res = TRUE;
	for(i=0;i<length;i++)
	{
		res &= (src[i]==dst[i]);
	}
	return res;
} 

经过如下修改,指令周期不受输入数据值的影响,避免了Timing攻击。

Spring事务管理与数据库隔离级别的关系(Spring+mysql),布布扣,bubuko.com

Spring事务管理与数据库隔离级别的关系(Spring+mysql)

上一篇:[已解决]:通过sql for xml查询到的xml字符串,如何存为标准格式的xml文件?


下一篇:golang 连接MongoDB