匿名化用户数据时,伪随机是否足够好?

时间:2014-04-29 17:00:37

标签: php security

我正在构建一个保存学生记录的系统。为了尽量减少潜在数据泄露的影响,并减少信息自由请求所需的工作,我们会在一段时间后对所有用户帐户进行匿名处理。

我要对匿名用户帐户采取的其中一个步骤是将用户名替换为__anon__ + 12个随机字符。

从安全角度来看,我可以只使用PHP的*_rand()函数,还是必须使用更加加密的东西?

我不认为*_rand()函数可以创建一个匿名随机字符串,可以某种方式用于识别原始用户名的帐户信息 - 但我想我会问SO以防万一我错过了什么。

1 个答案:

答案 0 :(得分:2)

随机rand或其他任何函数的确无关紧要。关键是你要用另一个名称替换实际名称,这个新名称是通过一个与原始名称完全无关的方法派生的。换句话说,您没有使用原始名称作为rand函数的输入,因此没有任何东西将原始名称与新的伪随机名称相关联。您可能正在为每个用户使用递增计数器,它会将原始名称与新替换符断开。

您当然应该使用系统上可用的最佳PRNG,在* NIX系统上通常为/dev/random。但是为了让任何人连接一个严重随机生成的字符串与任何其他数据,必须有一些连接。比方说,如果攻击者知道你的匿名方法和时间,你匿名了什么数据和什么顺序,攻击者也知道你是匿名的原始数据,理论上可以将随机生成的名称与原始已知数据连接起来。但这非常理论化,可能在实践中无关紧要。