秘密共享
要理解公开密匙加密完全地,人们必须首先理解当代密码学中一个基本工具的本质:秘密共享。只有一种方法可以设计出整体可靠性必须高于某些关键部件的系统,例如飞机、核武器和通信系统,那就是适当地使用冗余因此,即使某些组件出现故障,系统也可以继续运行。对于基于信息的系统也是如此,其中安全功能被实现的概率必须大于某些参与者不会作弊的概率。秘密共享是一种强制手段,它需要每个参与者所持有的信息的组合来破译密钥赞同在几个参与者的预期中,许多人作弊的可能性比一个人小。
下一节所描述的RSA密码算法是一种二选二的秘密共享方案,其中每个密钥单独不提供任何信息。其他安全功能,如数字公证或来源或收据认证,依赖于与隐藏的秘密相关的更复杂的信息共享。
RSA加密
最著名的公钥方案是RSA (Rivest-Shamir-Adleman)加密算法。在这个系统中,用户秘密地选择一对素数p而且问大到可以因式分解乘积n=p问远远超出了投影计算的范围功能密码的生命周期。在21世纪初,美国政府的安全标准要求模量的大小为1024位,即,p而且问每一个都是大约155个十进制数字大小,与n大概是310位数字。然而,在接下来的十年里,随着处理器速度的增长和计算技术的日益复杂,接近这个尺寸的数字被考虑在内,1024位模块可能很快就会不再安全,因此美国政府在2011年建议将模块转移到2048位。
在选择p而且问时,用户选择任意整数e不到n而且相对来说p−1和问−1,也就是说,1是之间唯一的公约数e而乘积(p−1)(问−1).确保有另一个号码d产品的用途ed除以的最小公倍数余数是1吗p−1和问−1。了解p而且问,数字d可以很容易地用欧几里得算法.如果一个人不知道p而且问在美国,两者都同样难以找到e或d给定另一个因子n,这是RSA密码安全的基础算法.
我们将使用标签d而且e表示键所对应的函数,但由于键是完全可互换的,这只是为了便于说明。来实现使用标准双密钥版本的RSA的保密通道密码系统、用户一个将发布e而且n在一个已验证的公共目录,但保留d的秘密。任何想要发送私人信息的人一个会编码成小于的数吗n然后用一个特殊的公式加密e而且n.一个能在知道的基础上解密这样的信息吗d,但目前的假设和证据是,对于几乎所有的密码,除非他也能分解,否则没有人能解密信息n.
类似地,要实现一个身份验证通道,一个将发布d而且n并保持e的秘密。在最简单的身份验证中,B可以验证他在沟通与一个通过在目录中查找一个的解密密钥d然后给他发一条加密的信息。如果他得到了破解他的挑战信息的密码d要解密它,他就会知道它很可能是由知情的人创建的e因此,另一个交流者可能一个.对消息进行数字签名是一项更复杂的操作,需要加密安全的“哈希”函数。这是一个公开的函数,它将任何消息映射为一个更小的消息,称为消化在这种情况下,摘要的每一位都依赖于消息的每一位,即使改变消息中的一位,也容易以加密安全的方式改变摘要中的一半位。通过cryptosecure意味着从计算上讲,任何人都无法找到将产生预先分配的摘要的消息,并且同样难以找到具有与已知摘要相同的另一条消息。为消息签名——这甚至不需要保密——一个用秘密加密摘要e,他将其附加到邮件中。任何人都可以使用公钥解密消息d以恢复摘要,他也可以独立于消息计算摘要。如果两者一致,他必须得出这样的结论一个起源的密码,因为一个知道e因此可以对信息进行加密。
到目前为止,所有提出的双密钥密码系统都要求将隐私或保密通道与身份验证或签名通道分离,并为此付出很高的代价。非对称加密/解密过程中大量增加的计算量大大降低了通道容量(每秒通信的消息信息位数)。因此,双密钥密码主要应用于混合系统。在这样的系统中,双键算法用于身份验证和数字签名,或用于交换随机生成的会话密钥,以用于主通信的高速单键算法。在会话结束时,该密钥将被丢弃。
块和流密码
一般来说,密码系统将固定大小的明文转换为密文。在旧的手工系统中,这些片段通常是单个字母或字符,或者偶尔,如公平联盟密码有向图,因为这是一个可以手工加密和解密的大单元。有人提出并认为基于三元组或更大的字母组操作的系统可能更安全,但事实并非如此实现因为手动加解密有难度。在现代单密钥密码学中,信息的单位通常大到64位,或大约13位1/2而基于RSA算法的双密钥密码学似乎已经确定了1024到2048位,或310到620个字母字符作为加密单位。
分组密码将明文分解为相同大小的块,以便使用公共密钥进行加密:Playfair密码的块大小为两个字母,而对于DES(在小节中描述)密码学历史:数据加密标准和高级加密标准)用于电子码本模式,它是64位二进制编码的明文。虽然一个块可以由单个符号组成,但通常它更大。
流密码还将明文分解为单元,通常为单个字符,然后加密我th的明文的单位我th密钥流的单位。使用一次性密钥的维尔纳姆加密就是这样一个系统的一个例子,转子密码机和用于输出反馈模式的DES(在这种模式下,来自一次加密的密文作为下一个加密的明文被反馈回来)用于生成密钥流。流密码依赖于接收方精确地使用密钥流的同一部分来解密用于加密明文的密码。因此,它们要求发射机和接收机的密钥流发生器是同步的。这意味着它们必须在初始时同步,然后保持同步,否则密码将被解密为乱码形式,直到可以重新建立同步。自同步密码系统的后一个特性会导致所谓的错误传播,一个重要的参数在任何流密码系统中。