我在许多地方都看到,随机性对于生成对称和非对称密码学的密钥以及使用密钥加密消息非常重要。
有人能解释一下,如果没有足够的随机性,安全性如何会受到损害吗?
发布于 2009-01-31 19:48:08
随机性意味着不可猜测的输入。如果输入是可猜测的,那么可以很容易地计算输出。那是很糟糕的。
例如,Debian在其SSL实现中有一个长期存在的错误,在创建密钥时无法收集足够的随机性。这导致软件生成仅有32k个可能密钥中的一个。因此,很容易通过尝试所有32k的可能性来解密用这样的密钥加密的任何东西,考虑到今天的处理器速度,这是非常快的。
发布于 2009-01-31 20:07:57
大多数加密操作的重要特征是,如果你有正确的信息(例如密钥),它们很容易执行,而如果你没有这些信息,执行起来就不可行。
例如,对称加密:如果您有密钥,加密和解密就很容易。如果你没有密钥(并且对它的构造一无所知),那么你必须着手做一些昂贵的事情,比如详尽地搜索密钥空间,或者对密码进行更有效的密码分析,这仍然需要一些非常大量的样本。
另一方面,如果您有关于密钥的可能值的任何信息,则对密钥空间的详尽搜索要容易得多(或者您的密码分析所需的样本数量要少得多)。例如,(目前)不可能通过执行2^128次试验解密来发现128位密钥的实际含义。如果您知道密钥材料来自您知道的时间值,而您知道的时间值不超过10亿个刻度,那么您的搜索就变得简单了340282366920938463463374607431倍。
发布于 2009-01-31 19:59:49
要解密消息,您需要知道正确的密钥。
您必须尝试的密钥越多,解密消息的难度就越大。
举个极端的例子,假设根本没有随机性。当我生成一个用来加密我的消息的密钥时,我最终总是得到完全相同的密钥。无论我何时何地运行keygen程序,它都会给我相同的密钥。
这意味着任何人只要有权访问我用来生成密钥的程序,就可以轻松地解密我的消息。毕竟,他们只需要要求它也生成一个密钥,他们就会得到一个与我使用的密钥完全相同的密钥。
因此,我们需要一些随机性,使它无法预测您最终会使用哪个密钥。正如David Schmitt提到的,Debian有一个bug,使得它只生成少量的唯一密钥,这意味着要解密Debian上默认的OpenSSL实现加密的消息,我只需要尝试这个较小数量的可能密钥。我可以忽略大量的其他有效密钥,因为Debian的SSL实现永远不会生成这些密钥。
另一方面,如果在密钥生成中有足够的随机性,就不可能猜测关于密钥的任何事情。你必须尝试每种可能的位模式。(对于128位密钥,有很多组合。)
https://stackoverflow.com/questions/499418
复制相似问题