SSL(安全套接字层)是一种标准安全技术,用于在服务器和客户端(通常是Web服务器(网站)和浏览器)之间建立加密链接。或邮件服务器和邮件客户端(例如Outlook)。它允许安全地传输敏感信息,例如信用卡号,社会保险号和登录凭据。要建立此安全连接,浏览器和服务器需要SSL证书。
但是,这是如何完成的呢?如何加密数据,以便包括世界上最大的超级计算机在内的任何人都无法破解它?
本文介绍了SSL加密背后的工作技术。它介绍了非对称和对称密钥,以及它们如何协同工作以创建SSL加密的连接。它还涵盖了用于创建这些密钥的不同类型的算法,包括使它们几乎无法破解的数学方程式。
非对称加密(或公共密钥加密)使用单独的密钥进行加密和解密。任何人都可以使用加密密钥(公共密钥)来加密邮件。但是,解密密钥(私钥)是秘密的。这样,只有预期的接收者才能解密消息。最常见的非对称加密算法是RSA;但是,我们将在本文后面讨论算法。
非对称密钥通常为1024或2048位。但是,小于2048位的密钥不再被认为可以安全使用。2048位密钥具有足够的唯一加密代码,因此我们不会在此处写出该数字(它是617位数字)。尽管可以创建更大的密钥,但是增加的计算负担非常大,以至于很少使用大于2048位的密钥。确切地说,破解2048位证书所需的平均计算机时间超过140亿年。
对称加密(或预共享密钥加密)使用单个密钥来加密和解密数据。发送方和接收方都需要相同的密钥进行通信。
对称密钥大小通常为128或256位-密钥大小越大,密钥破解的难度就越大。例如,一个128位密钥具有340,282,366,920,938,463,463,374,607,431,768,211,456加密代码可能性。可以想象,一次“强力”攻击(攻击者会尝试所有可能的密钥,直到找到正确的密钥为止)将花费相当多的时间来破解128位密钥。
使用128位还是256位密钥取决于服务器和客户端软件的加密功能。SSL证书不规定使用什么密钥大小。
由于非对称密钥大于对称密钥,所以非对称加密的数据比对称加密的数据更难破解。但是,这并不意味着非对称密钥更好。这些密钥应该通过以下属性进行比较,而不是通过大小进行比较:计算负担和分发方便性。
对称密钥小于非对称密钥,因此它们需要较少的计算负担。但是,对称密钥也有一个主要缺点-特别是如果您使用对称密钥来保护数据传输。由于同一密钥用于对称加密和解密,因此您和接收者都需要该密钥。如果您可以走过去告诉您的收件人钥匙,那不是什么大问题。但是,如果您必须将密钥发送给世界各地的用户(更可能的情况),则需要担心数据安全性。
非对称加密不存在此问题。只要您将私钥保密,任何人都无法解密您的消息。您可以分发相应的公共密钥,而不必担心谁会得到它。拥有公钥的任何人都可以加密数据,但是只有拥有私钥的人才能解密数据。
公钥基础结构(PKI)是创建,管理,分发,使用,存储和吊销数字证书所需的一组硬件,软件,人员,策略和过程。PKI也是通过证书颁发机构(CA)将密钥与用户身份绑定的对象。PKI使用混合加密系统,并从使用两种类型的加密中受益。例如,在SSL通信中,服务器的SSL证书包含不对称的公钥和私钥对。服务器和浏览器在SSL握手期间创建的会话密钥是对称的。下图对此进行了进一步说明。
服务器发送其非对称公钥的副本。
浏览器创建一个对称的会话密钥,并使用服务器的非对称公共密钥对其进行加密。然后将其发送到服务器。
服务器使用其非对称私钥解密加密的会话密钥,以获取对称会话密钥。
现在,服务器和浏览器使用对称会话密钥对所有传输的数据进行加密和解密。因为只有浏览器和服务器知道对称的会话密钥,并且该会话密钥仅用于该会话,所以这提供了安全的通道。如果浏览器第二天要连接到同一台服务器,则会创建一个新的会话密钥。
公钥密码术(非对称)使用RSA和椭圆曲线密码术(ECC)等加密算法来创建公钥和私钥。这些算法基于某些数学问题的难点*。
使用非对称加密,生成公钥和私钥,使用公钥加密消息以及使用私钥解密消息在计算上都很容易。但是,任何人都很难(或不可能)仅基于公共密钥来派生私有密钥。
RSA基于假定分解大整数(整数分解)的难度。假设不存在用于整数分解的有效算法,则认为无法完全解密RSA密文。
RSA的用户创建并发布两个大质数的乘积以及一个辅助值作为其公共密钥。主要因素必须保密。任何人都可以使用公共密钥对消息进行加密,但是只有知道主要因素的人才能切实地对消息进行解码。
RSA代表Ron Rivest,Adi Shamir和Leonard Adleman,他们是1977年首次公开描述该算法的人。
椭圆曲线密码术 (ECC)依赖于有限域上椭圆曲线的代数结构。假设发现与已知的基点相关的随机椭圆曲线元素的离散对数是不切实际的。
1985年,Neal Koblitz和Victor S. Miller分别提出在加密中使用椭圆曲线。ECC算法于2004年开始普遍使用。
相对于RSA,ECC算法的优势在于密钥可以更小,从而提高了速度和安全性。缺点在于并非所有服务和应用程序都可以与基于ECC的SSL证书互操作。
预共享密钥加密(对称)使用Twofish,AES或Blowfish之类的算法来创建密钥-AES是目前最受欢迎的密钥。所有这些加密算法都分为两种:流密码和分组密码。流密码将加密密钥和算法应用于数据流中的每个二进制数字,一次一位。分组密码将加密密钥和算法应用于一组数据(例如64个连续位)。分组密码是当前最常见的对称加密算法。
上一条: SSL证书是如何创建安全连接?
下一条: 边缘计算与云计算的主要差异