我正在斯坦福大学学习密码学课程。我有以下问题。
我有一个问题为什么在G(k)中追加0,即G'(k)= G(k)|| 0是 被认为是不安全的PRG,因为消息中的0被复制了 加密。而在语义上安全的E'(k,m)= 0 || E(k,m)即, 前置0被认为是语义安全的。这里为什么追加0 不会破坏语义安全吗?
请请澄清。
答案 0 :(得分:1)
你正在比较两件不同的事情。一个是PRG(伪随机生成器),另一个是PRP(伪随机排列)。
PRG只有一个输入,键,输出应该足够随机,以便与真正的随机块无法区分。这意味着当对手看到该字符串时,他无法确定输出是来自PRG还是它是一个真正的随机块。但是,当你追加0时,你可以很容易地区分你是使用真正的随机发生器还是G' (因为真正的随机性只在所有情况的一半中以0结尾,而G'总是以0结尾)。
在第二种情况下,对手希望找到有关明文m的一些信息。我们假设E(k,m)是安全的。现在的问题是:E'(k,m)安全吗?前置0是否为您提供了明文m的一些信息?如果是这样,那就意味着你拥有了一个工具"从E'(k,m)中提取有关m的一些信息。如果你有这样的工具,你能用它来打破E(k,m)吗?是的你可以。您可以获得E(k,m)的输出,前置0并将其传递给您的工具。你刚刚打破了E(k,m),但这意味着我们假设E(k,m)是安全的是不正确的。