携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情
计算机世界怎么这么复杂,小学英语老师告诉我,如果名词变成多个,就在后面加个s,本身以s结尾的加es, https不是http的复数吗?
对称加密
通过算法f1用密钥key和数据data生成密文x,然后将密文发送到服务器,服务器接收到数据后,通过算法f2根据密钥key和密文x解析出原始数据data
f1(key,data)=x
f2(key,x)=data
因为key是唯一的,并且所有客户端和服务的key都是一样的,坏人可以得到key,和加密算法,就可以通过算法解析出数据,也可以通过算法伪造数据
非对称加密
非对称加密啊,有公钥和私钥,可以通过公钥的加密算法f1用公钥pub_key和数据data生成数据x,可以用私钥解密的算法f2用私钥和密文x得到原文data;
也可以通过私钥加密算法f3用私钥key和原文data得到y,可以用公钥的解密算法f4通过公钥和密文y得到原文数据data
// 公钥加密 私钥解密
f1(pub_key,data)=x;
f2(key,x)=data;
// 私钥加密 公钥解密
f3(key,data)=y;
f4(pub_key,y)=data;
对称加密看着挺完美,但是对于服务器端来说,客户端是平等的,没有肤色的界限,在这土地里,不分你我高低,所以每个客户端都可以得到公钥,有了公钥就可以解密,也可以伪造数据了
先对称加密建立连接,再使用对称加密通讯
客户端随机生成一个key,通过非对称加密,把数据发送到服务器,这个过程是安全的。服务器那到key以后,利用这个key和客户端进行对称加密通讯,因为客户端的key是客户端随机生成的,而且第一次利用非对称加密安全的发送给服务器后,就再也不传输了,保证了这个key不会被其他人拿到,所以非常安全。 但是道高一尺,魔高一丈。黑客会伪造一个中间服务器,冒充客户端要访问的服务器,自己提供一个公钥和私钥,给客户端发一个私钥,再以客户端身份发一个获取私钥的请求给真正的服务器。总是变成中间商,两边获取利润,就跟黑中介租房子一样,租户以为中介是房东,然后要房产证,中介出个假的房产证给客户,客户把钱直接给了黑中介,黑中介再以租户身份去联系房东,房东提供房产证明给黑中介,然后黑中介篡改了一些资费,跟租户多要了30000块,少给了房东20000,
对称加密+非对称加密+hash+第三方ca机构认证
hash加密过程 客户端发送自身能力(支持ssh版本,所有支持非对称加密算法,随机数1)发送给服务器, 服务器收到后,告诉客户端用哪个ssh版本,用哪个算法,加一个随机数 ca证书认证,认证失败就不信任了, 认证成功,发送随机数3,通过hash算法 用前面的交互的内容生成hash xxx 服务器端验证xxx 是不是跟自己用hash算法加交互数据生成的hash相等,相等就是没有被篡改,认证成功后,把三次交互的随机数通过算法生成key 然后服务器用hash算法把交互过程中的随机数发回客户端 客户端通过自己hash和通讯的随机数生成xx验证服务器身份,