非对称加密是什么?
非对称加密是一种密码学技术,它使用一对密钥进行加密和解密。这对密钥包括一个公开密钥(Public Key)和一个私有密钥(Private Key)。这两个密钥在数学上是相关的,但有一个非常重要的性质:用其中一个密钥加密的数据,只有另一个密钥才能解密。
密钥生成
在非对称加密中,首先生成一对密钥:公钥和私钥。公钥可以公开给任何人,而私钥必须保密。
公钥可以公开给任何人
加密和解密过程:
使用公开密钥加密:当某人想要向你发送加密信息时,他们使用你的公开密钥对信息进行加密。加密后的信息只有与之对应的私有密钥才能解密,因此即使加密数据被截获,也无法解密内容。
接收方接收到文件后,用私钥解密,就能得到文件内容,只要接收方的私钥不泄露,这文件就是安全的
使用私有密钥加密:你也可以用自己的私有密钥加密信息。这样加密的内容只有使用你的公开密钥才能解密,这个过程可以用来证明信息的确来自你本人,因为只有你拥有私有密钥。
数字签名是什么?
数字签名是一种特殊的电子“签字”,它通过数学算法来生成,能够验证一段数据是否被修改过,并确认发送者的身份。
生成摘要
使用hash算法对文件进行生成固定长度的摘要,只要原始数据稍微改动一下,生成摘要也会完全不同
生成摘要案例
这里我们发现只要有一个变更生成的摘要大不相同
生成签名
接下来,发送者会用自己的“私钥”对这个摘要进行加密,生成一个独特的数字签名。
发送文件的时候,把签名附加在文件下方一起发送给接收方
签名验证
接收者收到数据后,会用发送者公开的“公钥”解密这个数字签名,得到一个摘要,之后把接收的原文进行hash生成摘要。之后对比2个摘要是否一致,如果一致那就证明文件没有被修改
存在的问题
中间人攻击,攻击者拦截并替换通信中的公钥,使受害者与攻击者之间进行通信。攻击者可以用自己的私钥解密受害者加密的信息,并伪装成另一方进行响应。
小蓝知道小红期望获取小白的公钥。小蓝成功地替换了小白的公钥,给小红提供了自己的公钥,而不是小白的公钥。
小红收到的是小蓝的公钥,误以为这是小白的公钥。小蓝就可以冒充小白,用自己的私钥做成"数字签名",写信给小红,让小红用假的小白公钥进行解密
数字证书
在前面我们说到数字签名可以帮助我们确认一个公钥的持有者是否真的拥有对应的私钥。就像我们用密码锁来验证身份一样,公钥就是锁的标识,私钥就是钥匙。如果有人用这个钥匙(私钥)签了名,我们就能确认这个人拥有这把钥匙,也就是拥有这个公钥。这样,公钥就成了这个人的数字身份标识。
当前还存在一个问题,我们无法进行验证当前公钥的所有者,我们还需要证明公钥拥有者的真实身份,例如姓名,地址,电子邮件等,因此会将这些信息随着公钥一起发布,这就是数字证书。
数字证书的组成
一个数字证书通常包含以下几个部分:
- 公钥:用来加密信息或验证签名的密钥。
- 证书持有者的信息:包括姓名、组织、电子邮件等。
- 证书颁发机构(CA)的信息:负责颁发和管理证书的机构。
- 有效期:证书的有效开始和结束时间。
- 数字签名:证书颁发机构用自己的私钥对证书进行签名,确保证书的真实性和完整性。
生成数字证书的过程
委托一个权威机构证书中心(CA)用自己的私钥,对小白的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。
生成签名
生成数字证书
发送文件的时候,把签名和数字证书附加在文件下方一起发送给接收方
验证数字证书
使用 CA 的公钥验证证书上的数字签名。先拿到数字证书的数字签名,并使用CA的公钥进行解密,解密后得到digest(摘要),之后对小白的公钥和证书信息、个人信息进行生成摘要对比,如果计算出来的相等,就证明当前的数字证书没问题,没有被修改
预安装的根证书
操作系统和浏览器:大多数操作系统(如Windows、macOS、Linux)和浏览器(如Chrome、Firefox、Safari)会预装一组受信任的根证书。这些根证书来自一些主要的、广泛信任的证书颁发机构,如DigiCert、GlobalSign、Let’s Encrypt等。
以我这台mac为例,系统默认装了根CA
证书链
真正的证书机构不会使用根证书来直接签发用户证书。原因是根证书非常重要,如果根证书的秘钥泄露了,会影响该根证书签发的所有用户证书,导致非常严重的安全风险。为了避免根证书的安全风险,证书机构会采用根证书签发中间证书(intermediate certificate),然后使用中间证书来签发用户证书,这样如果一个中间证书出现了安全问题,可以废弃掉该中间证书而不影响根证书,影响的用户证书范围也小一些。所以一般我们签发的证书都是由中间证书机构进行签发的。
中间CA证书的获取
中间CA证书是由根CA或其他中间CA签发的。它们用于建立一个完整的证书链,从而使得最终的服务器证书能够被信任。以下是中间CA证书的获取和处理过程:
证书链的提供:当你访问一个安全网站时,服务器通常会提供一个证书链,其中包括服务器证书和中间证书(如果有)。这个证书链的目的是使得浏览器能够建立从服务器证书到根证书的完整链条。服务器证书是由中间CA签发的,而中间CA证书本身可能由更高级的中间CA或根CA签发。
总结
之前在学习数字签名和数字签名的时候,很多细节搞不清楚,通过这次能更加清晰的理解数字签名的具体过程
参考
哔哩哔哩技术蛋老师
https://space.bilibili.com/327247876?spm_id_from=333.337.sear...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。