加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证
加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证
各角色比喻
客户端:通常为请求方,要验证服务器的身份。
服务器:通常为响应方,有时也要验证客户端的身份。
C A :全拼为Certificate Authority,就是第三方验证机构。客户端与服务器只有在CA申请了证书之后才能证明身份合法。
加 密 :客户端或服务器把数据放在箱子里,然后用钥匙(公钥或私钥)将箱子锁上,再放到网络上传输,只有有用钥匙的人才能打开箱子。
根据非对称密码学的原理,每个证书持有人(在CA认证过的人)都有一个公钥和私钥,它们成对出现,这两把密钥可以互相解密。
证 书: 数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。
私 钥: 私有,只能解开本公钥加密的数据(用于解密),用它加密的数据只能被本公钥解密(用于签名)。
公 钥: 公有,只能解开本私钥加密的数据(用于验证),用它加密的数据只能被本私钥解密(用于加密)。
签 名: 用私钥加密,签上自己的名,证明自己合法。
验 证: 用公钥解密,验证别人是否合法。
加密和解密:
发送方利用接收方的公钥对要发送的明文进行加密,接受方利用自己的私钥进行解密,
其中公钥和私钥匙相对的,任何一个作为公钥,则另一个就为私钥.但是因为非对称加密技术的速度比较慢,所以,一般采用对称加密技术加密明文,
然后用非对称加密技术加密对称密钥,即数字信封技术.
签名和验证:
发送方用特殊的hash算法,由明文中产生固定长度的摘要,然后利用自己的私钥对形成的摘要进行加密,这个过程就叫签名。
接受方利用发送方的公钥解密被加密的摘要得到结果A,然后对明文也进行hash操作产生摘要B.最后,把A和B作比较。
此方式既可以保证发送方的身份不可抵赖,又可以保证数据在传输过程中不会被篡改。
公钥私钥加密原理
1,公钥和私钥成对出现
2,公开的密钥叫公钥,只有自己知道的叫私钥
3,用公钥加密的数据只有对应的私钥可以解密
4,用私钥加密的数据只有对应的公钥可以解密
5,如果可以用公钥解密,则必然是对应的私钥加的密
6,如果可以用私钥解密,则必然是对应的公钥加的密
举例
服务器为S,它有1把私钥,4把公钥(因为公开,别人可以获取)
客户端为C1,C2,C3,C4,它们各有一把S的公钥。
C1 用S的公钥加密数据后,若对方能解开,说明通它是S。这样可验证服务器身份(原理2,6)
如果C2想冒充S,它给C1发数据,C1用公钥无法解开,因为C2没有S的私钥,说明C2不合法。(原理4,5)
公钥加密举例
假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。
我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用
数字2,就是我的私钥,来解密。这样我就可以保护数据了。
我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,
只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。
私钥签名举例
如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知
道我的公钥是1,那么这种加密有什么用处呢?防止冒充,如下
我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他
解密看是不是c。他用我的公钥1解密,发现果然是c。
这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。
这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。
总结一下
1,公钥私钥成对出现
2,私钥只有我知道
3,大家可以用我的公钥给我发加密的信了
4,大家用我的公钥解密信的内容,看看能不能解开,能解开,说明是经过我的私钥加密了,就可以确认确实是我发的了。
5,用公钥加密数据,用私钥来解密数据
6,用私钥加密数据(数字签名),用公钥来验证数字签名。
在实际的使用中,公钥不会单独出现,总是以数字证书的方式出现,这样是为了公钥的安全性和有效性。