【问题标题】:How to calculate key size of a security algorithm?如何计算安全算法的密钥大小?
【发布时间】:2016-02-10 15:18:31
【问题描述】:

有很多安全算法。衡量加密算法安全性的方法之一是找出它的密钥大小。单个算法的密钥大小有很多。

ECC(椭圆曲线密码学)有 163、256、384、512 等。

RSA 有 1024、3072、7680、15360。我是从 here 找到的

但是如何计算算法的密钥大小?单个算法如何具有不同的密钥大小?

我正在构建一个简单的加密算法,但我不知道如何计算我的算法的密钥大小。

我的算法是假设通过代码更改纯文本的字母

a=2H, b=3C, c=8S ......, z=6D

如果纯文本是“cb”,那么密文就是“8S3C”。那么这个算法的密钥大小是多少呢?如何计算?

【问题讨论】:

  • 1.这对于 StackExchange 的加密站点或安全站点都是一个问题。 2. 密钥大小是算法本身的一个属性,你没有计算任何东西 3. 你不应该自己开发任何与安全相关的算法,除非你确切地知道你在做什么。 4. 这种方法对玩具有用,但不严重。 5. 算法的密钥大小是设计属性,由您决定。基本上,更有趣的问题是你将如何构建一个双射函数来将每个字符映射到它的替换。
  • 密钥大小是表示密钥所需的位或字节大小。如果您弄清楚如何以紧凑的方式表示密钥(替换映射),您可以将其数起来以获得密钥大小。由于没有标准的方式来表示替代密码的密钥,因此它没有标准的密钥大小。
  • 我投票结束这个问题,因为它属于 crypto.stackexchange.com

标签: algorithm security cryptography elliptic-curve


【解决方案1】:

密钥大小对应于安全强度。安全强度是攻击者破解算法所需的努力程度,它取决于对算法的最佳攻击。

例如,典型的安全强度是 128 位。如果您阅读一些有关椭圆曲线密码学 (ECC) 的知识,您将了解到在一般情况下攻击 ECC 的最佳算法具有平方根运行时间。因此,如果我们使用具有 256 位素数阶子群的椭圆曲线,则曲线上的点数为 2^256 阶,这意味着攻击它需要 sqrt(2^256) = 2^128 的运行时间。因此 256 位 ECC(具有 256 位子组大小和 256 位密钥大小)为您提供 128 位安全强度。

对于 RSA,数学更难,因为破解它的运行时间取决于number field sieve,它的运行时间看起来像 e^[(1.92 + o(1)) (log n)^(1/ 3) * (log log n)^(2/3)],其中 n 是要因式分解的数,log 是自然对数。所以要计算对应于 128 位安全性的密钥大小,我们需要解决 2^128 = e^[(1.92 + o(1)) (log n)^(1/3) * (log log n)^( 2/3)]。我想你会喜欢自己解决这个问题的:-)

注意:当我谈论安全强度时,我只是在谈论破解它的计算能力。有些人认为我们应该在计算中也包括内存。

如果您想进行更彻底的详细讨论,欢迎您阅读Selecting Cryptographic Key Sizes

为了选择密钥大小,您需要了解破解算法的努力,这意味着您应该是一名密码学家。很抱歉告诉你,但你的算法无法通过大密钥保存:替换密码很容易被频率分析破解。

【讨论】:

  • (好答案!主要是评论以检查我的理解)但是说最著名的对 RSA 的攻击取决于筛子的计算复杂性不是更准确吗?即最好的攻击依赖于因子分解,这仍然被认为是一个难题,目前最好用筛子解决。具有给定复杂性的最佳实现
【解决方案2】:

正如您所说,密钥的大小是一方面。您提到的算法(以及许多其他算法)通常在块上运行,或者具有一些内部状态,它是密钥大小的函数,并且由于它是一个输入参数(您指定块的大小或内部状态),因此很自然地对其进行了解释。

对于您的算法,您可以争辩说密钥大小是存储编码所需的位数(在您的示例中为 27*2)。但是,如果有人想争论安全性,他们很可能会针对您在编码文本中重复序列这一事实。因此,如果我得到足够大的英文编码文本(适用于任何语言,但作为示例),我可以轻松找到字符(查找重复序列),然后使用统计方法找出映射(查找字符频率)。因此,您的密钥长度与最可能的攻击方法无关,因此对它的安全性没有影响。也就是说,如果我可以在您使用 1 字节/字符时破解它,那么当您使用 1024 字节/字符时,我可以同样轻松地破解它。

例如,破解 RSA 的最佳方法似乎是尝试所有密钥。因此,通过延长密钥,您会成倍增加尝试所有密钥所需的时间,因此您可以认为它更安全,因为密钥更长。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2011-11-20
    • 2019-08-27
    • 2016-11-03
    相关资源
    最近更新 更多