Python教程

python爬虫之网络安全方面

本文主要是介绍python爬虫之网络安全方面,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 1 各类密钥区别
  • 2 各类加密
    • 2.1 对称加密
    • 2.2 非对称加密
    • 2.3 HTTPS
      • 2.3.1 证书签名
      • 2.3.2 HTTPS原理

1 各类密钥区别

  1. 密钥对:在非对称加密技术中,有两种密钥,分为公钥私钥
    公钥是密钥对所有者持有,公布给他人的;私钥也是密钥对所有者持有,不可公布
  2. 密钥:指公钥或私钥。
  3. 公钥:公钥用来给数据加密,用公钥加密的数据只能使用私钥解密。
  4. 私钥:如上,用来解密公钥加密的数据。
  5. 摘要:对需要传输的文本,做一个HASH计算,一般采用SHA1SHA2来获得。
  6. 签名:使用私钥对需要传输的文本的摘要进行加密,得到的密文即被称为该次传输过程的签名
  7. 签名验证:数据接收端,拿到传输文本,但是需要确认该文本是否就是发送发出的内容,中途是否曾经被篡改。因此拿自己持有的公钥对签名进行解密(密钥对中的一种密钥加密的数据必定能使用另一种密钥解密),得到了文本的摘要,然后使用与发送方同样的HASH算法计算摘要值,再与解密得到的摘要做对比,发现二者完全一致,则说明文本没有被篡改过。
  8. 总结:公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),将其中的一个向外界公开,称为公钥;另一个自己保留,称为私钥。通过这种算法得到的密钥对能保证在世界范围内是唯一的。
    公钥和私钥是成对的,它们互相解密(密钥指公钥或私钥,密钥对指公钥加私钥)。
    公钥和私钥都可以加密和解密。
    私钥数字签名,公钥验证。

注意:使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功

2 各类加密

2.1 对称加密

加密 encryption 与解密 decryption 使用的是同样的密钥 secret key,对称加密是最快速、最简单的一种加密方式。加密和解密算法是公开的,秘钥必须严格保存,如果秘钥泄露,别人就能够用密文+秘钥还原成你的明文。
对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
对称加密通常使用的是相对较小的密钥,一般小于 256bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果只用 1bit 来做这个密钥,那黑客们可以先试着用 0 来解密,不行的话就再用 1 解;但如果你的密钥有 1MB 大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间
比如常见的 DES/AES 都是属于对称加密算法。
优点:
算法公开、计算量小、加密速度快、加密效率高
缺点:
秘钥的管理和分发非常困难,不够安全。在数据传送前,发送方和接收方必须商定好秘钥,然后双方都必须要保存好秘钥,如果一方的秘钥被泄露,那么加密信息也就不安全了

2.2 非对称加密

非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(简称公钥)和私有密钥(简称私钥),即常说的公钥加密,私钥解密私钥加密,公钥解密
私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人,非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥
RSA 就是最常用的非对称加密算法
虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
优点:
安全性更高,公钥是公开的,秘钥是自己保存的,不需要将私钥给别人
缺点:
加密和解密花费时间长、速度慢,只适合对少量数据进行加密。

2.3 HTTPS

2.3.1 证书签名

由于非对称加密只是把公钥传给客户端,倘若公钥被中间机构给拦截就会有风险隐患,因此才有了证书秘钥加密
证书秘钥加密采用服务器和客户端双方都能够充分信得过第三方证书认证机构,首先服务器端会制定一种加密方式,称为公钥,有了公钥后,服务器先不给客户端,而是提交到第三方证书认证机构,机构先审核,审核通过后,会对公钥进行进行数字签名(签名主要作用就是为了防伪),然后机构把携带了签名的公钥封装到证书中,把证书发给客户端,证书里面就是包含了数字签名的公钥

2.3.2 HTTPS原理

如上所言, HTTPS 协议之所以是安全的是因为采用证书加密会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实:HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段
两个阶段图示:
在这里插入图片描述

证书验证阶段:

  • 浏览器发起 HTTPS 请求,连接到服务器的443端口;
  • 服务端返回 HTTPS 证书;
  • 客户端验证证书是否合法,如果不合法则提示告警。
    数据传输阶段:
  • 当证书验证合法后,在本地生成随机数;
  • 通过公钥加密随机数,并把加密后的随机数传输到服务端;
  • 服务端通过私钥对随机数进行解密;
  • 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输
这篇关于python爬虫之网络安全方面的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!