TLS/SSL 和 非对称加密算法 RSA、DSA、ECC

TLS/SSL

SSL:安全套接字层
SSL是一种用于保护互联网连接的标准技术,保护方法是对在网站和浏览器(或两个服务器之间)之间发送的数据进行加密。它能防止黑客查看或窃取传输的任何信息,包括个人或财务数据。

TLS:传输层安全性
TLS是SSL经过更新的更安全的版本。大多情况仍将安全证书称为SSL,因为它是一个更通用的术语,但当您购买证书时,将获得最受信任的、最新的TLS证书。

HTTPS:安全超文本传输协议
当网站受到SSL/TLS证书的保护时,HTTPS会出现在URL中。用户可以通过点击浏览器地址栏中的挂锁标记来查看证书的详细信息,包括颁发机构和网站所有者的公司名称。

TLS/SSL 与 对称加密、非对称加密

在讨论TLS/SSL协议中的对称加密与非对称加密之前,我们需要了解这两种加密方式的基本概念。对称加密是指使用相同的密钥进行加密和解密的操作,而非对称加密则是使用不同的密钥进行加密和解密。这两种加密方式在TLS/SSL协议中都得到了广泛的应用。

对称加密算法的优点在于加密和解密速度快,适合于大量数据的加密。然而,对称加密也存在一些缺点,例如在数据传输过程中,如果密钥被截获,那么整个通信内容都将被破解。此外,由于需要在通信双方之间安全地传输密钥,因此增加了通信的复杂性。

非对称加密算法的优点在于能够实现密钥的安全传输和数字签名等功能。在非对称加密中,一个密钥(公钥)用于加密数据,而另一个密钥(私钥)用于解密数据。公钥可以公开分发,而私钥则必须保密。因此,即使公钥被截获,也无法通过它来解密数据。此外,非对称加密还常常用于数字签名,以确保数据的完整性和来源可信。

在TLS/SSL协议中,这两种加密方式都被广泛使用。在握手阶段,客户端和服务器会协商使用哪种加密算法和密钥。一旦协商成功,它们将使用对称加密算法对数据进行加密和解密,而使用非对称加密算法来安全地传输密钥。这样的设计能够提供更高的安全性,并且能够实现数据的机密性、完整性和身份认证等目标。

值得注意的是,对称加密和非对称加密并不是互斥的,它们可以结合使用以实现更好的安全性。在实际应用中,需要根据具体需求选择适合的加密算法和密钥管理策略。

总之,对称加密和非对称加密各有其优缺点,它们在TLS/SSL协议中都扮演着重要的角色。了解这两种加密方式的基本概念和原理,有助于更好地理解TLS/SSL协议的工作机制,并在实际应用中选择合适的加密算法和策略来保护数据的机密性和完整性。

另外,值得注意的是,虽然对称加密和非对称加密在TLS/SSL协议中都有广泛应用,但它们并不是唯一的加密方式。随着技术的不断发展,新的加密算法和协议也在不断涌现。因此,对于安全领域的研究者和开发者来说,持续关注最新的加密技术和标准是非常重要的。

非对称加密方案简介

非对称加密要比对称加密复杂,有如下几个原因:

  • 使用密钥对进行加解密,导致其算法更为复杂
  • 只能加密/解密很短的消息
    • 在 RSA 系统中,输入消息需要被转换为大整数(例如使用 OAEP 填充),然后才能被加密为密文。(密文实质上就是另一个大整数)
  • 一些非对称密码系统(如 ECC)不直接提供加密能力,需要结合使用更复杂的方案才能实现加解密

此外,非对称密码比对称密码慢非常多。比如 RSA 加密比 AES 慢 1000 倍,跟 ChaCha20 就更没法比了。

为了解决上面提到的这些困难并支持加密任意长度的消息,现代密码学使用「非对称加密方案」来实现消息加解密。又因为「对称加密方案」具有速度快、支持加密任意长度消息等特性,「非对称加密方案」通常直接直接组合使用对称加密算法非对称加密算法。比如「密钥封装机制 KEM(key encapsulation mechanisms))」与「集成加密方案 IES(Integrated Encryption Scheme)」

密钥封装机制 KEM

顾名思义,KEM 就是仅使用非对称加密算法加密另一个密钥,实际数据的加解密由该密钥完成。

密钥封装机制 KEM 的加密流程(使用公钥加密传输对称密钥):

密钥封装机制 KEM 的解密流程(使用私钥解密出对称密钥,然后再使用这个对称密钥解密数据):

RSA-OAEP, RSA-KEM, ECIES-KEM 和 PSEC-KEM. 都是 KEM 加密方案。

密钥封装(Key encapsulation)与密钥包裹(Key wrapping)的区别在于使用的是对称加密算法、还是非对称加密算法:

  • 密钥封装(Key encapsulation)指使用非对称密码算法的公钥加密另一个密钥。
  • 密钥包裹(Key wrapping)指使用对称密码算法加密另一个密钥。

集成加密方案 IES

集成加密方案 (IES) 在密钥封装机制(KEM)的基础上,添加了密钥派生算法 KDF、消息认证算法 MAC 等其他密码学算法以达成更高的安全性。

在 IES 方案中,非对称算法(如 RSA 或 ECC)跟 KEM 一样,都是用于加密或封装对称密钥,然后通过对称密钥(如 AES 或 Chacha20)来加密输入消息。

DLIES(离散对数集成加密方案)和 ECIES(椭圆曲线集成加密方案)都是 IES 方案。

RSA 密码系统

RSA 算法在计算机密码学的早期被广泛使用,至今仍然是数字世界应用最广泛的密码算法。但是随着 ECC 密码学的发展,ECC 正在非对称密码系统中慢慢占据主导地位,因为它比 RSA 具有更高的安全性和更短的密钥长度。

RSA 算法提供如下几种功能:

  • 密钥对生成:生成随机私钥(通常大小为 1024-4096 位)和相应的公钥。
  • 加密解密:使用公钥加密消息(消息要先转换为 [0…key_length] 范围内的整数),然后使用密钥解密。
  • 数字签名:签署消息(使用私钥)和验证消息签名(使用公钥)。
    • 数字签名实际上是通过 Hash 算法 + 加密解密功能实现的。它与一般加解密流程的区别,在于数字签名使用私钥加密,再使用公钥解密。
  • 密钥交换:安全地传输密钥,用于以后的加密通信。

RSA 可以使用不同长度的密钥:1024、2048、3072、4096、8129、16384 甚至更多位。目前 3072 位及以上的密钥长度被认为是安全的,曾经大量使用的 2048 位 RSA 现在被破解的风险在不断提升,已经不推荐使用了。

更长的密钥提供更高的安全性,但会消耗更多的计算时间,同时签名也会变得更长,因此需要在安全性和速度之间进行权衡。非常长的 RSA 密钥(例如 50000 位或 65536 位)对于实际使用可能太慢,例如密钥生成可能需要几分钟到几个小时。

ECC 密码系统

一种基于椭圆曲线数学的非对称加密算法。提供如下几种功能:

  • 密钥对生成
  • 加密解密
  • 数字签名:主要有两种:ECDSA 与 EdDSA,以及 EdDSA 的变体。DSA 是数字签名算法,ECDSA(ECC+DSA) 是椭圆曲线数字签名算法,它们专门用于数字签名。
  • 密钥交换:ECDH

其最大的特点在于相同密码强度下,ECC 的密钥和签名的大小都要显著低于 RSA。256bits ECC 密钥与 3072bits RSA 密钥的安全性相当。

其次 ECC 的密钥对生成、密钥交换与签名算法的速度都要比 RSA 快。

注意:这里提一下SM2算法, 作为ECC椭圆曲线理论的分支,SM2算法是我国基于ECC椭圆曲线密码理论自主研发设计,由国家密码管理局于2010年12月17日发布,在密码行业标准GMT 0003.1-2012 SM2 总则中推荐了一条256位曲线作为标准曲线,数字签名算法、密钥交换协议以及公钥加密算法都根据SM2总则选取的有限域和椭圆曲线生成密钥对;在数字签名、密钥交换方面区别于ECDSA、ECDH等国际算法,而是采取了更为安全的机制,提高了计算量和复杂性。为了方便比较,我们这里把SM2也归于ECC。

ECIES - 集成加密方案

前面已经介绍了集成加密方案 (IES),它在密钥封装机制(KEM)的基础上,添加了密钥派生算法 KDF、消息认证算法 MAC 等其他密码学算法以达成我们对消息的安全性、真实性、完全性的需求。

而 ECIES 也完全类似,是在 ECC + 对称加密算法的基础上,添加了许多其他的密码学算法实现的。

ECIES 是一个加密框架,而不是某种固定的算法。它可以通过插拔不同的算法,形成不同的实现。比如「secp256k1 + Scrypt + AES-GCM + HMAC-SHA512」。

如何选择

如果需要既能用于加密又能用于数字签名的算法,选择 RSA 或 ECC 系统,若兼容则首选 ECC。

如果只需要数字签名功能,并且更关心签名的速度和验证的准确性,选择 DSA 或 ECDSA 等专门用于数字签名的算法。

在线工具

https://www.ssleye.com/ssltool/​
RSA、DSA、ECDSA(ECC) 密钥对生成、公钥提取、公私钥校验、私钥加解密、私钥密码修改、格式转换

https://bkssl.com/ssl/keypair
RSA/ECC/SM2密钥在线生成

https://www.btool.cn/rsa-key-pair-generator
RSA 加密、解密、签名、验签 

参考文章

RSA、ECC 和 DSA 加密有什么区别? - 媒体报告 -

写给开发人员的实用密码学(七)—— 非对称密钥加密算法 RSA/ECC - This Cute World

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值