公钥加解密、数字签名、CA证书简介
本文对信息安全领域中的公钥加密、数字签名、CA证书技术进行初步介绍。
-
公钥加密(RSA)是非对称加密算法,加解密前需要具有一对儿公钥/密钥。
公钥加密中,信息的正确加解密需要:公钥加密,私钥解密;或者私钥加密,公钥解密。
-
数字签名(Signature)是基于公钥加密用于认证,认证前它将信息生成Hash并私钥加密得到签名附加于信息之上。
数字签名技术中,验证与通过需要:用公钥解密签名得到Hash与重新计算Hash匹配。
-
CA证书基于公钥加密与数字签名确保公钥来源可靠,确保前用权威机构的公钥对公钥(可附带其它信息)加密形成证书与签名、信息一并发送。
CA技术中,确保来源可靠需要:用权威机构私钥解密证书得到用户公钥,再用用户公钥与签名进一步认证信息。
公钥加密与数字签名
公钥/私钥
如图:
图片.pngSource:
由图可知,A与B各自持有自己的私钥,并对外发布自己的公钥;导致双方拥有对方的公钥。
公钥加密(RSA):公钥加密,私钥解密
关键在于:发送者是否真的将内容发送给了正确的接收者。
如图:
图片.pngSource:
由图可知:
- 发送者A:使用B的公钥加密信件。
- 接收者B:使用自己的公钥解密。
问题:发送者A需要为整个信件加密,过程缓慢。
数字签名(CA):私钥加密,公钥解密
关键在于:接收者接受的是否真的是发送者是本人发送的信息。
为确保B从正确的来源收到数据A。
如图:
图片.pngSource:
- 发送者A:生成信件的Hash,用A的私钥加密Hash得到信件签名,一同附加至信件上发送给B。
- 接收者B:使用A的公钥解密签名得到Hash,再与计算信件内容得到的Hash匹配,成功则表示是A发送。
问题:发送者A的公钥,可能是伪造的。
从公钥加密、到数字签名、再到CA认证
前面只介绍了公钥加密与数字签名两个基本的技术。而CA才能确保这些技术更为实用,这里将用具体例子的方式,来逐步对它们进行讲述。
方式1,直接发送信件
发送者a:发送信件给b。
接受者b:
- 接收到信件。
- b的顾虑:这信件是不是a发的?
方式2,发送公钥后,直接非对称加密再发送
发送者a:
- a告诉b指纹(公钥)
- a再写信并且每个字都按下指纹(用私钥加密信件)
- a将按满指纹的信件发给b(密文)。
接收者b:
- 接收到的密文每个地方都验证指纹(加密解密)
- 验证后得到信件内容。
- b的顾虑:虽然确认了消息,但是–太慢了(非对称加密效率低下)。
注:信件经过公钥加密得到密文,密文只能通过与公钥配对儿的私钥才能解密还原为信件。
方式3,发送公钥后,附加数字签名再发送
发送者a:
- a告诉b指纹(公钥)
- a直接写信,并且在整个信上按下一个大大的手印(签名)。
- a将按了大大手印的信件发给b。
接收者b:
- 接收到按了大大手印的信件
- 读信前先用a的指纹检测信件的手印,确认是a的手印(由公钥解密签名获取的摘要与自己计算的匹配),进而得到信件内容。
- b的顾虑:嗯,消息确认挺快,但是——告诉我的指纹(公钥)真的是a的吗(第三方劫持篡改消息)?
注:信件通过hash生成摘要,摘要用私钥加密生成签名;签名只能通过与私钥配对儿的公钥才能解密回摘要,再次计算信件摘要与之匹配才算成功。
方式4,使用权威机构提供的证书传递公钥,再附加数字签名发送
发送者a:
- a去大家都信任的国家机构注册(认证机构私钥加密)自己的指纹等信息(证书)。
- a直接写信,并且在整个信上按下一个大大的手印(签名)。
- a将包含大手印的信件附带上身份信息一起发送给b。
接收者b:
- 先获取信件中的身份信息,得到相应指纹(用认证机构的公钥解密得到a的公钥,而非a直接发送公钥)。
- 检查得到的指纹和信件手印一致,确认是国家机构认可的a发送的信件,(由公钥解密签名获取的摘要与自己计算的匹配),进而得到信件内容。
- b的结论:相信这封信是a发的!(证书上其它信息描述具有这个公钥的人是a,将信任基础建立在绝对安全的常识机构上,而非个人)。
注:权威机构用权威私钥将发送者公钥及其它信息加密生成证书;用众所周知的权威机构公钥解密证书得到发送方公钥进而可靠地验证签名。
参考
- 数字签名是什么?: 通俗易懂的介绍了公钥加密、数字签名、数字认证相关的过程。
- What is a Digital Signature?: 前面文章源于此文。