昨天顺手把站点上了HTTPS,但是为什么要上HTTPS,不能因为你浏览器给我显示‘安全’,我就认为他是安全的,还是要知根知底,不能知其然而不知其所以然,因此抽空了解一下。
本文所涉及的加密算法原理不做详解,具体可Google
先来了解下相关的基本术语
对称加密
symmetric encryption
对称加密所指的是加密和解密使用的相同密钥的加密算法,即使用密钥S加密的数据同时用密钥S解密。这种加密方法通常效率较高,但要求两个交换数据的实体都要持有相同的密钥。对称加密的关键问题是,密钥如何传递。
常见的对称加密算法有DES、AES、RC4等。
对称加密
非对称加密
asymmetric cryptographic
非对称加密与对称加密相反,非对称加密需要2个密钥:私钥(Private Key)和公钥(Public Key),这两者总是成对出现,并且公钥加密的数据只有私钥能够解密,相反,私钥加密的内容只有公钥能够解密;通常公钥是对外公开的,任何人都可以获取到,私钥不对外公开的。由于公钥是对外公开的,因此私钥加密的内容只要获得公钥的任何人都可以解开。
非对称加密与对称加密相比,因为其计算复杂,因此速度较慢。非对称加密对加密内容的长度还有限制,被加密的内容长度不能大于密钥长度。比如现在的密钥长度时2048位,那么被加密的内容长度不能超过256字节。
常见的非对称加密算法有RSA、Elgamal、ECC等。
非对称加密
非对称加密的作用:
防止信息泄露:公钥加密的只有私钥能解
身份验证:利用数字签名
数字摘要/消息摘要
digital digest/message digest
数字摘要是将数据通过单向HASH函数进行计算生成一串固定长度的散列值,不同数据产生的散列值是不同的(应该说是基本不可能相同,但还是存在“碰撞的概率”,比如MD5已经证明可以快速生成相同散列值的不同明文),相同的数据产生的散列值一定是相同的,因此可以通过该散列值用来保证数据防篡改和完整性(因为都会导致数字摘要发生改变)。
常用的数字摘要算法有MD5、SHA1、SHA256等。
消息认证
信息摘要只能用来解决数据的完整性问题,却无法解决消息的认证问题,因为HASH函数是任何人都可以使用的,第三方伪装发送者发送数据和数字摘要也能通过接收者的完整检查,却无法识别第三方的伪装,这是就需要消息认证了。
消息认证码MAC
message authentication code
消息认证码是将对称加密和数字摘要相结合起来的技术,首先将数据通过HASH函数生成数字摘要,然后将摘要通过双方共享的密钥加密生成消息认证码,最后将认证码一起发送给接受者。
接受者在收到消息后,使用相同的方法生成消息认证码,然后与收到的消息认证码进行对比,如果认证码一致,那么数据则通过认证。
存在2个问题:
因为使用的是对称加密算法,那么依然存在密钥如何传输的问题;
无法防止否认,因为密钥是双方共享的,而接收者认为数据是对方传递过来的,而对方可以否认传输过该条信息,并且可以生成该条信息是由接收者自己产生的。
消息认证码
数字签名
Digital Signature
数字签名是将非对称加密和数字摘要相结合起来的技术,首先将数据通过HASH函数生成数字摘要,然后将摘要用私钥进行加密生成数字签名,最后将数据和数字签名一起发送给接收者(私钥进行签名,公钥只能用来验证签名)。
接收者在收到消息后,通过公钥解密数字签名,获得数字摘要,然后对数据用相同的HASH函数计算数字摘要,然后与解密获得的数字摘要进行对比,如果一样证明数据没有被篡改过。
通过非对称加密传递数字摘要,能保证摘要一定是私钥拥有者发送的;
通过数字摘要,能够确数据一定是没有被篡改过的。
数字签名
如何保证数据传输的安全
使用对称加密
对称加密计算简单,速度快,是用来加密数据的好方法,但是对于互联网上节点,要保证数据安全,就必须保证节点与节点之间通信所使用的密钥是不一样的。那么对于互联网上的服务节点,要对其他网络节点提供服务,就需要知道对方所使用的密钥,即服务器需要知道网络所有客户端所使用的密钥;这显然是不现实的。
作者:喵帕斯0_0
链接:https://www.jianshu.com/p/95aaa0030282
共同学习,写下你的评论
评论加载中...
作者其他优质文章