为什么有些random()函数被认为是“不安全的”
我听到各地的人都被警告,为了安全起见,不要依赖语言的随机函数来生成随机数或字符串序列。Java甚至有一个SecureRandom类。为什么会这样 可以提前确定的伪随机数可能导致易受a攻击的安全漏洞。可以提前确定的伪随机数可能导致易受a攻击的安全漏洞。几乎每个随机数生成器都是“伪随机”的,因为它使用随机数表或a可预测的公式。种子有时用于在特定点启动随机序列,例如种子随机定时器 这在基础编程时代尤其流行,因为它的随机数生成器总是以完全相同的数字序列启动,这使得它无法用于任何类型的GUID生成为什么有些random()函数被认为是“不安全的”,random,Random,我听到各地的人都被警告,为了安全起见,不要依赖语言的随机函数来生成随机数或字符串序列。Java甚至有一个SecureRandom类。为什么会这样 可以提前确定的伪随机数可能导致易受a攻击的安全漏洞。可以提前确定的伪随机数可能导致易受a攻击的安全漏洞。几乎每个随机数生成器都是“伪随机”的,因为它使用随机数表或a可预测的公式。种子有时用于在特定点启动随机序列,例如种子随机定时器 这在基础编程时代尤其流行,因为它的随机数生成器总是以完全相同的数字序列启动,这使得它无法用于任何类型的GUID生成 当时,
当时,Z-80微处理器有一个真正的随机数发生器,尽管它只是一个介于0和127之间的数字。它使用处理器周期函数,不可预测。几乎每个随机数生成器都是“伪随机”的,因为它使用随机数表或可预测公式。种子有时用于在特定点启动随机序列,例如种子随机定时器 这在基础编程时代尤其流行,因为它的随机数生成器总是以完全相同的数字序列启动,这使得它无法用于任何类型的GUID生成
当时,Z-80微处理器有一个真正的随机数发生器,尽管它只是一个介于0和127之间的数字。它使用处理器周期函数,不可预测。随机数的可预测性是一个大问题。大多数随机函数都是从时间中求出它们的值。给定一组正确的条件,您可能会得到两个相同的大值随机数 在windows.NET世界中,可以通过基础win32 API在System.Security.Cryptography.RandomNumberGenerator中找到CPRNG加密安全的伪随机数生成器
在Linux中有一个随机设备随机数的可预测性是一个大问题。大多数随机函数都是从时间中求出它们的值。给定一组正确的条件,您可能会得到两个相同的大值随机数 在windows.NET世界中,可以通过基础win32 API在System.Security.Cryptography.RandomNumberGenerator中找到CPRNG加密安全的伪随机数生成器
在Linux中有一个随机设备当人们谈论预测随机数生成器的输出时,他们甚至不需要获得实际的下一个数字。即使是一些微妙的事情,比如注意到随机数的分布不均匀,或者它们从来不会连续两次产生相同的数字,或者总是设置了第5位,也可以让基于猜测随机数的攻击从耗时数年变为耗时数天 一般来说,也有一个权衡。如果没有特定的硬件,快速生成大量的随机数可能非常困难,因为计算机没有足够的随机性,所以它必须伪造随机数
如果你不是将随机性用于安全加密、密码等,而是用于模拟或数字工作,那么它们是否可预测并不重要,只是它们在统计上是随机的。当人们谈论预测随机数生成器的输出时,他们甚至不需要知道下一个号码。即使是一些微妙的事情,比如注意到随机数的分布不均匀,或者它们从来不会连续两次产生相同的数字,或者总是设置了第5位,也可以让基于猜测随机数的攻击从耗时数年变为耗时数天 一般来说,也有一个权衡。如果没有特定的硬件,快速生成大量的随机数可能非常困难,因为计算机没有足够的随机性,所以它必须伪造随机数
如果你不是将随机性用于安全加密、密码等,而是用于模拟或数字工作,那么它们是否可预测并不重要,只是它们在统计上是随机的。那么像sha256strrandom.randomint*100000000.hexdigest这样的东西只是要求安全威胁?通过生成一个随机字符串salt并将其包含在散列输入中可以缓解这种情况吗?我不太擅长加密,因此不能自信地说,但我认为这取决于特定实现如何生成随机数。例如,我认为默认的python是确定性的。考虑到散列输出,盐类有助于使人们更难猜测输入,但这与
首先,随机数有多好。所以像sha256strrandom.randomint*1000000000.hexdigest这样的东西只是要求安全威胁?通过生成一个随机字符串salt并将其包含在散列输入中可以缓解这种情况吗?我不太擅长加密,因此不能自信地说,但我认为这取决于特定实现如何生成随机数。例如,我认为默认的python是确定性的。考虑到散列输出,盐类有助于让人们更难猜测输入,但这与随机数的好坏有点不同。