Encryption and Decryption

加密是使预期参与者外的仍何人不可知的的信息转换过程。解密是加密的反过程以便让信息可理解。一个加密算法也被称作暗号,是一个数学函数用于加解密。大多数情况使用两个相关联函数,一个用于加密一个用于解密。

凭借大多数现代密码学,保障加密信息的隐秘不是基于加密算法,这是被广泛认知的,而是通过一个被称为密钥的数字它将必须被用到算法过程中去产生一个加密后或解密后的结果。通过正确的密钥解密很简单。没有正确的密钥解密是非常困难的,并且在某些情况下所有的尝试都是不能解密的。

以下部分是对密钥来加密和解密的进一步介绍

对称密钥加密

使用对称密钥加密,加密密钥可以通过加密密钥运算得出,反之亦然。大多数的对称加密算法中,使用的是相同的密钥,如图一所示。

Figure 1. Symmetric-Key Encryption

对称密钥加密的实现可以是非常高效的,以至于使用者不会体验到非常大的延时就得到加密或解密的结果。对称密钥加密还提供了一定程度的认证机制,自从信息被一个对称密钥加密后不可被另一个对称密钥解密。因此,在加密通信中只要对称密钥隐秘的保存在通信双方,并能确认其通信另一方(的真实性)解密后的消息就存在意义。

对称密钥加密仅仅当涉及到的双方秘密的保存对称密钥才是有效的。如果任何人发现了密钥,它会影响保密性和身份验证。拥有未经授权的对称密钥的人(虚假的第三方)不仅可以解密与该密钥一起发送的消息,还可以加密新消息并将它们发送,就好像它们来自最初使用密钥的两方中的一方。

对称密钥加密在SSL协议中具有极其重要的作用,它被用于认证,篡改检测和在TCP/IP网络上的加密。SSL也使用到了公开密钥技术,它将在下一节中描述。

公开密钥加密

最常见实现公开密钥加密是基于RSA Data Security专利的算法。因此,这一节介绍RSA公钥加密方法。

公开密钥加密(也被称作非对称加密)包含一对密 - 公钥和私钥与需要以电子方式验证其身份或签署或加密数据的实体相关联。任何公钥是可以公开的与之对应的私钥需要隐秘保存。使用公钥加密的数据仅能被你的私钥解密。图2 展示了简化的使用公钥加密是如何工作的。

Figure 2. Public-Key Encryption

图2所示的方案可让您自由分发公钥,只有您将能够读取使用此密钥加密的数据。通常,要将加密数据发送给某人,需要使用该人的公钥对数据进行加密,接收加密数据的人员使用相应的私钥对其进行解密。

与对称密钥加密相比,公钥加密需要更多的计算,因此并不总是适用于大量数据。但是,可以使用公钥加密来发送对称密钥,然后可以使用该对称密钥来加密其他数据。这是SSL协议使用的方法。

碰巧,图2所示方案的反面也适用:用您的私钥加密的数据只能用您的公钥解密。然而,这不会是加密敏感数据的理想方式,因为这意味着任何使用公钥定义的公开密钥都可以解密数据。不过,私钥加密很有用,因为这意味着您可以使用私钥对数据签名,这对于电子商务和其他密码学商业应用来说是一个重要要求。客户端软件例如Firefox接着可以使用你的公钥去确认这消息是否是被你的私钥签名和是否在签名之后被篡改。“数字签名”描述了此确认过程的工作原理。

碰巧,图2所示方案的反面也适用:用您的私钥加密的数据只能用您的公钥解密。然而,这不会是加密敏感数据的理想方式,因为这意味着任何使用公钥定义的公开密钥都可以解密数据。不过,私钥加密很有用,因为这意味着您可以使用私钥对数据签名,这对于电子商务和其他密码学商业应用来说是一个重要要求。客户端软件例如Firefox接着可以使用你的公钥去确认这消息是否是被你的私钥签名和是否在签名之后被篡改。 “数字签名” 描述了此确认过程的工作原理。

密钥长度和加密强度

打破加密算法基本上是找到以纯文本访问加密数据的关键。对于对称算法,打破算法通常意味着试图确定用于加密文本的密钥。对于公钥算法,打破算法通常意味着获取两个接收者之间的共享秘密信息。

破坏对称算法的一种方法是简单地尝试整个算法中的每个密钥,直到找到正确的密钥。对于公开密钥算法,由于密钥对的一半是公开的,所以另一半(私钥)可以使用发布的,但复杂的数学计算来导出。手工找到破解算法的关键就是蛮力攻击。

打破算法引入了拦截,甚至模仿和欺骗性验证私人信息的风险。

算法的关键优势在于找到最快的方法来破解算法并将其与蛮力攻击相比较。

对于对称密钥,加密强度通常以用于执行加密的密钥的大小或长度来描述:通常,较长的密钥提供更强的加密。密钥长度以位为单位进行测量。例如,与SSL支持的RC4对称密钥密码一起使用的128位密钥提供比用于相同密码的40位密钥更好的加密保护。大致来讲,128位RC4加密比40位RC4加密强 3 x 1026倍。(有关用于SSL的RC4和其他密码的更多信息,参见“SSL介绍.") 如果最有名的破解密钥的攻击速度不比蛮力试图测试每个关键可能性的速度快,那么加密密钥就被认为是完备性密钥。

不同的密码可能需要不同的密钥长度才能达到相同级别的加密强度。例如,用于公钥加密的RSA密码,由于其所基于的数学问题的性质,对于给定长度的密钥只能使用所有可能值的子集。其他密码,例如那些用于对称密钥加密的密码,可以为给定长度的密钥使用所有可能的值,而不是这些值的子集。

因为破解RSA密钥相对简单,RSA公钥加密密码必须有一个非常长的密钥(至少1024位)被认为是密码强的。另一方面,对于大多数算法,对称密钥密码可以达到与80位密钥大致相同的强度水平。

 

Original Document Information

 

 

文档标签和贡献者

此页面的贡献者: wbamberg, Tommy-White
最后编辑者: wbamberg,