【问题标题】:integer factorization and cryptography整数分解和密码学
【发布时间】:2010-12-19 00:49:11
【问题描述】:

我知道公钥加密使用素数, 也知道两个大(例如100位)素数(P,Q)用作私钥, 乘积是公钥 N = P * Q, 并且使用素数是因为 N 的因式分解来获得 P , Q 非常困难并且需要很多时间, 我没问题,但我很困惑 为什么不对 P , Q 使用任何普通的大非素数 所以N的因式分解仍然很困难 因为会有,因为现在,不仅有两个可能的因素,而且更多。

谢谢....

【问题讨论】:

  • 您可以处理您的问题,比如说用于解密或高效散列。无论如何,您希望最大限度地减少碰撞(重复输出)和主要特征,这是一个好的(不完美的)。你可以取一个非常大的非素数,但是一旦计算机知道它与所有的数字相比变得相对较小。比它大。

标签: public-key-encryption


【解决方案1】:

我不是加密专家。

为什么不使用任何普通的大 P , Q 的非质数

因为会有更多的因素。整数分解是对公钥加密的一种攻击。这种攻击正是利用了这种关系。

人们可以更容易地找到具有更多共同因素的关系和可能的值。它归结为代数。

N = P * Q

如果 P 和 Q 都是素数,则 N 有 4 个因数 {N P Q 1}

但是! 如果 P 和 Q 共享因子 2

N / 4 = P / 2 * Q / 2

如果 N 本来可以是 0..2^4096,那么现在是 0..2^4094,因为 2 是一个因数,所以另一个大数也是一个因数。

这意味着我可以找到 P,Q S.T. 的标量倍数 P', Q'。 P',Q'

我自己并不完全理解这个概念,但我相信这表明了我的目标。

你必须搜索一个更小的空间,直到你暴力破解密钥。

【讨论】:

    【解决方案2】:

    完全有可能使用模数 N 由两个以上素数因数 P 和 Q 组成的 RSA,但必须注意两点:

    1. 您必须知道所有这些因素的确切值,否则您将无法在生成密钥时从公钥中导出私钥。二素数 RSA 的等式是 1 = D*E (mod LCM(P-1,Q-1))。如果您确实知道这些主要因素,则可以执行计算。如果您知道您无法执行此计算的主要因素,顺便说一句,这就是为什么公开公钥 E,N 是安全的 - 您无法导出私钥 D如果你只有很容易从公钥中导出的信息,除非你能够分解 N。

    2. RSA 的安全性受到 RSA 模数 N 的第二大素因数的大小的有效限制。找到小于 2^32 的小素因数可以在几分之一秒内完成现代计算机,只需尝试将模数 N 除以每个此类素数并检查余数是否为零(意味着 N 可被该数整除)或不是(意味着该数不是 N 的因数)。如果 N 仅由这样小的素因数乘以单个大素因数 Q 组成,那么也很容易找到 Q,只需将 N 除以所有小因数即可得到 N' 并测试 N' 的素数。如果 N' 是素数,则它是最后一个素数因子 Q。

    【讨论】:

      【解决方案3】:

      我并不是真正的密码学专家(所以如果我错了,请在评论中告诉我,我会立即删除这个答案),但我认为这是因为如果你只是使用随机大数,你可能会得到容易因式分解的(即,您不必达到非常大的素数来获得它们的素因数)。所以只使用非常大的保证素数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多