密钥如何用于加密算法?

时间:2010-03-13 06:21:39

标签: encryption cryptography

我正在浏览并找到有关加密的好文章。但是,它们都没有描述为什么密钥长度很重要,以及密钥用于什么。我的猜测是可以这样工作:

Plaintext:   0101001101010101010
Key:         01010010101010010101   //the longer the key, the longer unique sequence
XOR or smth: //result

至少它是如何运作的还是我错过了什么?

3 个答案:

答案 0 :(得分:5)

密码系统通常比您描述的XOR系统复杂得多。实际上,只有当密钥的位数至少与纯文本消息一样多时,XORing才能真正起作用,并且您只使用密钥来加密一条消息。这称为“一次性密码”加密。

在大多数加密系统中,密钥不直接与纯文本组合。相反,它控制加密算法执行的转换。理想情况下,算法执行的转换过于复杂而无法在不知道或猜测密钥的情况下进行反转。因此,在理想情况下,密钥中的比特数决定了“强力”破解所需的平均猜测数。

然而,在实践中,密码学家可以从密文(即加密的消息)中收集可以减少搜索空间的线索,从而需要使用更多的比特。对于我们通常使用的公钥加密系统尤其如此。这些系统基于难以逆转的数学计算(例如,大质数对的乘法),并且位数确定执行反向计算的“问题”大小(例如,两个大质数的乘积的因式分解)。

您对如何将密钥“应用”到纯文本感兴趣。答案是,它从一个加密系统到另一个加密系统各不相同,并且该过程通常相当复杂。这个问题不适用于一般性答案。

答案 1 :(得分:1)

自我的本科密码学课程以来已经很长时间了(超过25年),但我会尽力帮助。

虽然现代密码学中的事物不是一个完美的例子,但考虑到Vigenere cipher,使用严格按字母顺序排列的纯文本和密钥可能会更容易理解。在这样的密码中,您的密钥将是一系列字母 - 通常是单词或短语 - 并用于旋转一系列Caesar ciphers以加密纯文本。例如,带有“cat”键的“dog”的纯文本将导致加密文本“foz”(假设我已正确完成)。

这个简单的例子 - 理论上 - 是牢不可破的,因为密钥和消息文本的长度相同。但是,当消息很长时,与密钥相比,统计分析将指向可用于计算密钥的模式;对于诸如此类的双向密码,密钥直接破坏加密的消息。这些模式的频率与密钥的长度一致,并且很容易通过计算机发现(这就是为什么现在使用xor和单向数学函数的原因)。因此,更长的密钥使破解密码更加困难。

答案 2 :(得分:1)

让我们考虑对称加密。这是将一些数据转换为不可读的内容的方式,除了那些具有一些能够反转操作的秘密知识的人。这是“对称的”,因为加密所需的知识与解密所需的知识相同。

历史上,“秘密知识”包括描述要对数据进行加扰的步骤。在某些时候,将“加密方法”分为两部分变得很有趣,一部分是算法(方法步骤的一般描述),第二部分是密钥(那个场合使用的精确参数)。在计算机上,算法成为机器运行的程序;键是一个数字参数,一系列零和一个。计算机加剧了对这种分裂的需求:计算机程序很难保密。一个程序很笨重,它被写入硬盘...另一方面,一个密钥足够短,适合人类大脑,在使用时输入,存储在设备中作为便宜的智能卡,等等。

在某种程度上,密钥集中秘密。加密中秘密的一切都在于密钥。

在你的XOR示例中,方法是:“我们用键对数据进行异或”,键是实际的0和0序列。已知加密-XOR方法非常难以正确使用(基本上,密钥必须与要加密的数据一样长,这通常非常不切实际;但使用较短的密钥意味着重用< / em>密钥的某些部分,这会打开许多​​致命的弱点)。通常的对称加密系统要复杂得多,并努力从密钥中提供“你的钱”。

一把钥匙值多少钱?好吧,因为密钥是整个事物中唯一秘密的部分,所以攻击者所要做的就是猜测密钥。最基本的猜测形式是穷举搜索:攻击者只是尝试所有可能的密钥。随着密钥长度,可能的密钥数量增长得非常快。例如,10位密钥具有1024个可能的密钥。使用20位密钥,有1048576个可能的密钥。每个附加位加倍可能的键数。

如果最佳已知攻击是穷举搜索,则算法被视为“健壮”。从这个意义上说,一个强大的算法是一种算法,它没有比残酷的穷举搜索提供更好的攻击路径,这种搜索始终是“可行的”,但可能过于昂贵。如果算法是健壮的,则使用的密钥大到足以阻止穷举搜索,则加密是安全。实际上,“足够大”意味着“一百或更多”。受到穷举搜索攻击的最大密钥是64位密钥。使用现有技术(花费数年和数千台计算机)可以实现组合的数量巨大(18446744073709551616)。计算机速度的不断进步使得穷举搜索变得越来越好,但并不像想象的那么快。基本上,穷举搜索每12到18个月增加1位(这被称为“摩尔定律”)。有很多很好的理由说明为什么摩尔定律不能在2020年左右得到支持(这实际上就是戈登摩尔所预测的那样),在这一点上,给定价格的计算能力将以某种方式停滞不前。然后,一个100位密钥应该保持安全(这就是计算机在10年内能够完成的组合太多)。通常的加密算法使用128位密钥,因为“128”在以二进制编写时看起来很好。

还有非对称加密和数字签名。基本原则保持不变:关键是秘密的部分,而不是每个人都知道的方法(程序)。非对称加密和数字签名试图做复杂的事情,例如,知道如何加密的人没有足够的信息知道如何解密。这需要一些精心设计的数学结构。键是数学对象,在编码时需要更多位。同样,可能的密钥的数量随密钥大小而增长,但不是那么快,因为很少的比特序列将具有所需的数学结构。此外,这种相同的结构允许更快的攻击路径,这意味着再次使用更大的密钥来实现安全性。这就是我们听到“1024位RSA密钥”之类的原因。 RSA密钥由几个整数组成,最重要的是使得将它分解为素数的乘积是不切实际的。一个1024位整数(一个整数,当以二进制写入时,由1024个零和1组成 - 十进制中的位数超过300位)似乎足以阻止因式分解(当前记录是768位)整数)。