网络安全溯源 思路 网络安全原理

网络安全背景

        网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台主机之间可以进行通讯的目的,虽然看似简简单单几句话,就描述了网络概念与网络出现的目的,但是为了真正实现两台主机之间的稳定可靠通讯,其实是一件非常困难的事情了,如果还要再通讯的基础上保证数据传输的安全性,可想而知,绝对是难上加难,因此,网络发明之初,并没有太关注TCP/IP互联协议中的安全问题。

        对于默认的两台主机而言,早期传输数据信息并没有通过加密方式传输数据,设备两端传输的数据本身实际是明文的,只要能截取到传输的数据包,就可以直接看到传输的数据信息,所以根本没有安全性可言。

早期利用明文方式传输的协议有:FTP、HTTP、SMTP、Telnet等。

数据加密算法

网络安全涉及很多方面,而网络数据的安全传输通常会面临以下几方面的威胁:

  1.数据窃听与机密性: 即怎样保证数据不会因为被截获或窃听而暴露。

  2.数据篡改与完整性: 即怎样保证数据不会被恶意篡改。

  3.身份冒充与身份验证: 即怎样保证数据交互双方的身份没有被冒充。

针对以上几个问题,可以用以下几种数据加密方式来解决(每种数据加密方式又有多种不同的算法实现):

数据加密方式

描述

主要解决的问题

常用算法

对称加密

指数据加密和解密使用相同的密钥

数据的机密性

DES,AES

非对称加密

也叫公钥加密,指数据加密和解密使用不同的密钥-密钥对

身份验证

DSA,RSA

单向加密

指只能加密数据,而不能解密数据

数据的完整性

MD5,SHA系列算法

普通算法

网站此时利用普通常见算法,针对密码加密,基本保证数据再传输时候,不是明文
但是黑客可能会有一个庞大的算法本,里面记录了常见的密码和加密后的密文,一一对应,然后可以利用程序大量计算,反解出明文密码

撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。 很多用户在不同网站使用的是相同的帐号密码,因此黑客可以通过获取用户在A网站的账户从而尝试登录B网址,这就可以理解为撞库攻击。

  

网络安全溯源 思路 网络安全原理_linux

对称加密 

网络安全溯源 思路 网络安全原理_网络安全溯源 思路_02

网络安全溯源 思路 网络安全原理_linux_03

网络安全溯源 思路 网络安全原理_nginx_04

对称加密算法,如其名,就是使用同一个秘钥进行加密和解密。

优点是速度较快,适合对数据量比较大的数据进行加密。

缺点是密钥的保存方式需要保证,一旦加密或者解密的哪一方泄漏了密钥,都会导致信息的泄漏。

常用的对称加密算法有:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6、AES。

    非对称加密

    网络安全溯源 思路 网络安全原理_网络安全溯源 思路_05

    简单理解,比喻关系
    公钥---锁
    私钥---开锁钥匙
    
    私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。
    比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。

      常用的非对称假面算法有:RSA,ECC,Diffie-Hellman,El Gamal,DSA(数字签名用)

      虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子:
      1.使用对称加密,速度快
      2.使用非对称加密的方式,针对第一步的秘钥加密传输
      
      
      (1) 超哥需要在银行的网站做一笔交易,他的浏览器首先生成了一个随机数作为对称密钥。
      
      (2) 超哥的浏览器向银行的网站请求公钥(非对称加密的公钥~~)。
      
      (3) 银行将公钥发送给超哥。
      
      (4) 超哥的浏览器使用银行的公钥将自己的对称密钥加密(这里是重点,已经是【对称加密+非对称加密】)。
      
      (5) 超哥的浏览器将加密后的对称密钥发送给银行。
      
      (6) 银行使用私钥解密得到超哥浏览器的对称密钥。
      
      (7) 超哥与银行可以使用对称密钥来对沟通的内容进行加密与解密了。

         总结

        1.对称加密方式,加密解密使用同样的密钥,速度较快,但是密钥需要在网络中传输,因此可能被截获,不安全
        
        2.非对称加密,使用一对密钥,公钥,私钥,因此安全性很高,但是加密和解密速度很慢
        
        3.常用的方式是,结合两种加密方式,效率与安全性都有又了保障。

          如何安全获取公钥

          网络安全溯源 思路 网络安全原理_网络安全溯源 思路_06

           1) A和B端首先生成自己的公钥和私钥的密钥对,为了使对方能相信自己的公钥信息,将自己的公钥信息告知给第三方发证机构,利用第三方机构对自己的公钥进行公证。第三方机构会制作一个数字证书(机构 编号 以及发证机构的戳),并且第三方机构也要给自己设置一个合法的公钥和私钥,并且公钥设置为第三方机构的公钥证书。

          2) 发证机关计算出数字证书数据的特征码,并用自己的私钥进行加密,并将加密的信息附加到特征码后成为数字签名。

          3) A和B两端获得公正过的证书信息,并通过证书信息传递,得到对方的公钥。

          4) A和B两端与第三方机构建立连接,获得第三方证书,通过第三方证书获得第三方公钥,利用第三方公钥只要能解密数字签名即可。

          Openssl软件

          在传输层和应用层之间。ssl层

          网络安全溯源 思路 网络安全原理_网络安全溯源 思路_07

          网络安全溯源 思路 网络安全原理_linux_08

           openssl实践

          openssl由三部分组成:

            1.libcrpto:通用加密库

            2. libssl:TSL/SSL组成库,基于会话实现了身份认证,数据加密和会话完整性。

            3. openssl:提供命令行工具,例如模拟创建证书。

          openssl命令行

          # 检查版本
          [root@chaogelinux ~]# openssl version
          OpenSSL 1.0.2k-fips  26 Jan 2017
          
          # 配置文件
          [root@chaogelinux ~]# cat /etc/pki/tls/openssl.cnf
          
          #获取openssl命令操作
          [root@chaogelinux ~]# openssl -?
          openssl:Error: '-?' is an invalid command.
          
          # 标准命令
          Standard commands
          asn1parse         ca                ciphers           cms
          crl               crl2pkcs7         dgst              dh
          dhparam           dsa               dsaparam          ec
          ...
          
          # 信息摘要命令,单向加密命令
          Message Digest commands (see the `dgst' command for more details)
          md2               md4               md5               rmd160
          sha               sha1
          
          
          # 加密命令
          Cipher commands (see the `enc' command for more details)
          aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb
          aes-256-cbc       aes-256-ecb       base64            bf
          bf-cbc            bf-cfb            bf-ecb            bf-ofb
          
          # 测试机器对openssl支持的加密算法进行速度测试,检测服务器性能
          openssl speed

             

            【openssl加密命令】

            语法
            openssl enc -加密算法  -in filename -out filename  
            
            # 对文件加密
            
            [root@chaogelinux ~]# cat my.pwd
            yu:123
            [root@chaogelinux ~]#
            [root@chaogelinux ~]#
            # 输入密码后加密成功,超哥这里是888888
            [root@chaogelinux ~]# openssl enc -des3 -salt -a -in my.pwd -out my.pwd.des3
            enter des-ede3-cbc encryption password:
            Verifying - enter des-ede3-cbc encryption password:
            
            #解密文件
            [root@chaogelinux ~]# cat my.pwd.des3
            U2FsdGVkX19ZDOFtbdZz3QNu+bxm3DKd
            [root@chaogelinux ~]#
            
            # 输入密码后,解密文件
            [root@chaogelinux ~]# openssl enc -des3 -d -salt -a -in my.pwd.des3 -out my.pwd.src
            enter des-ede3-cbc decryption password:
            [root@chaogelinux ~]#
            [root@chaogelinux ~]# cat my.pwd.src
            yu:123
            
            参数解释:
            enc openssl把众多的对称加密算法,统一集成在了enc指令,用法是 enc -算法名
            -des3 指定算法
            -d    指定解密
            -e  指定加密
            -salt 密码加盐,防止密码被破解
            -a 基于base64位编码,可选参数

              【openssl创建私有证书】

              1.创建私钥和公钥,模拟证书颁发机构生成证书,生成一对密钥

              # 指定私钥长度1024,并且将生成的私钥信息保存在文件里,且利用小括号功能,修改子shell的umask
              [root@chaogelinux ssl_cert]# (umask 077;openssl genrsa -out server1024.key 1024)
              Generating RSA private key, 1024 bit long modulus
              ..........++++++
              ...................++++++
              e is 65537 (0x10001)
              
              # 读取私钥文件,选择非对称加密算法rsa,生成公钥,写入到文件中
              [root@chaogelinux ssl_cert]# openssl rsa -in server1024.key -pubout -out server1024.key.pub
              
              # 检查文件
              [root@chaogelinux ssl_cert]# ls
              server1024.key  server1024.key.pub
              
              
              # 生成自签的证书
              [root@chaogelinux ssl_cert]# openssl req -new -x509 -key server1024.key -out server.crt -days 365
              You are about to be asked to enter information that will be incorporated
              into your certificate request.
              What you are about to enter is what is called a Distinguished Name or a DN.
              There are quite a few fields but you can leave some blank
              For some fields there will be a default value,
              If you enter '.', the field will be left blank.
              -----
              Country Name (2 letter code) [XX]:CN
              State or Province Name (full name) []:BJ
              Locality Name (eg, city) [Default City]:BJ
              Organization Name (eg, company) [Default Company Ltd]:chaoge
              Organizational Unit Name (eg, section) []:it
              Common Name (eg, your name or your server's hostname) []:pythonav.cn

                网络安全溯源 思路 网络安全原理_网络安全溯源 思路_09

                Nginx部署https

                        利用证书实现HTTPS访问Nginx服务,需要nginx使用ssl模块配置HTTPS支持,默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,这些文件并不在同一个软件包中,通常这个文件名类似libssl-dev。 

                        nginx的https协议需要ssl模块的支持,我们在编译nginx时使用--with-http_ssl_module参数加入SSL模块。还需要服务器私钥,服务器证书,如果是公司对外环境,这个证书需要购买第三方的权威证书,否则用户体验得不到保障

                部署https实践

                1.创建Nginx需要的证书文件
                确保机器安装了openssl和openssl-devel,创建证书
                yum install openssl openssl-devel -y 
                
                2.确保nginx支持了ssl模块,查看nginx编译信息即可
                nginx -V
                
                3.模拟证书颁发机构CA创建证书
                进入nginx安装目录,便于管理证书
                [root@chaogelinux ~]# cd /opt/ngx112/
                [root@chaogelinux ngx112]# mkdir key
                [root@chaogelinux ngx112]# cd key/
                
                # 生成私钥文件,利用字shell降低文件权限
                [root@chaogelinux key]# (umask 077;openssl genrsa -out server1024.key 1024)
                Generating RSA private key, 1024 bit long modulus
                .++++++
                ...++++++
                e is 65537 (0x10001)
                
                
                # 自己签发证书,crt证书扩展名
                [root@chaogelinux key]# openssl req -new -x509 -key server1024.key -out server.crt -days 365
                You are about to be asked to enter information that will be incorporated
                into your certificate request.
                What you are about to enter is what is called a Distinguished Name or a DN.
                There are quite a few fields but you can leave some blank
                For some fields there will be a default value,
                If you enter '.', the field will be left blank.
                -----
                Country Name (2 letter code) [XX]:CN
                State or Province Name (full name) []:BJ
                Locality Name (eg, city) [Default City]:BJ
                Organization Name (eg, company) [Default Company Ltd]:chaoge
                Organizational Unit Name (eg, section) []:it
                Common Name (eg, your name or your server's hostname) []:pythonav.cn
                Email Address []:yc_uuu@163.com
                
                # 向机构申请证书,我们这里生成的是证书请求文件,而不是直接生成证书了,运维发送该文件给机构,请求合法证书
                [root@chaogelinux key]# openssl req -new -key server1024.key -out server.csr
                You are about to be asked to enter information that will be incorporated
                into your certificate request.
                What you are about to enter is what is called a Distinguished Name or a DN.
                There are quite a few fields but you can leave some blank
                For some fields there will be a default value,
                If you enter '.', the field will be left blank.
                -----
                Country Name (2 letter code) [XX]:CN
                State or Province Name (full name) []:BJ
                Locality Name (eg, city) [Default City]:BJ
                Organization Name (eg, company) [Default Company Ltd]:chaoge
                Organizational Unit Name (eg, section) []:it
                Common Name (eg, your name or your server's hostname) []:pythonav.cn
                Email Address []:yc_uuu@163.com
                
                # 针对这个请求文件,做一个加密处理,告知办法机构,可以用这个密码解密,了解公司信息,也可以直接回车不写密码
                Please enter the following 'extra' attributes
                to be sent with your certificate request
                A challenge password []:
                
                
                # 一般这个证书颁发,需要等到一周内的时间,因此我们直接使用本地的自己签发的证书即可,进行练习
                
                4.配置Nginx,加载私钥,证书
                修改nginx.conf,添加
                include extra/443.conf;
                
                # 创建https配置文件
                vim 443.conf 写入
                
                [root@web01 extra]# cat 443.conf
                
                server {
                        server_name _;
                        listen 443 ssl;
                        ssl_certificate /opt/nginx/key/server.crt;
                        ssl_certificate_key /opt/nginx/key/server1024.key;
                        charset utf-8;
                    location / {
                
                         root html;
                         index index.html index.htm;
                }
                }
                ~
                
                
                # 修改80端口虚拟主机,进行请求转发给443
                }
                server {
                    listen 80;
                    server_name www.chaoge.com;
                    charset utf-8;
                     rewrite ^(.*)$ https://$host$1 permanent;
                    location / {
                            root html;
                            index index.html index.htm;
                    }
                    }
                include extra/443.conf;
                }
                
                
                # 检测语法,重启nginx
                [root@web01 extra]# nginx -t
                nginx: the configuration file /opt/nginx-1.16.0//conf/nginx.conf syntax is ok
                nginx: configuration file /opt/nginx-1.16.0//conf/nginx.conf test is successful

                  网络安全溯源 思路 网络安全原理_nginx_10

                  本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/968201.html

                  如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

                  相关文章

                  内网ip网段记录

                  1.介绍 常见的内网IP段有: A类: 10.0.0.0/8 大型企业内部网络(如 AWS、阿里云) 10.0.0.0 - 10.255.255.255 B类:172.16.0.0/12 中型企业、学校 172.16.0.0 - 172.31.255.255 C类:192.168.0.0/16 家庭…

                  SQL Server 逻辑查询处理阶段及其处理顺序

                  在 SQL Server 中,查询的执行并不是按照我们编写的 SQL 语句的顺序进行的。相反,SQL Server 有自己的一套逻辑处理顺序,这个顺序决定了查询的执行方式和结果集的生成。了解这些处理阶段和顺序对于优化查询性能和调试复杂查询非常重要。 SQL …

                  四、OSG学习笔记-基础图元

                  前一章节&#xff1a; 三、OSG学习笔记-应用基础-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145514021 代码&#xff1a;CuiQingCheng/OsgStudy - Gitee.com 一、绘制盒子模型 下面一个简单的 demo #include<windows.h> #include<osg/Node&…

                  性格测评小程序03搭建用户管理

                  目录 1 创建数据源2 搭建后台3 开通权限4 搭建启用禁用功能最终效果总结 性格测评小程序我们期望是用户先进行注册&#xff0c;注册之后使用测评功能。这样方便留存用户的联系信息&#xff0c;日后还可以推送对应的相关活动促进应用的活跃。实现这个功能我们要先创建数据源&…

                  Ubuntu 如何安装Snipaste截图软件

                  在Ubuntu上安装Snipaste-2.10.5-x86_64.AppImage的步骤如下&#xff1a; 1. 下载Snipaste AppImage 首先&#xff0c;从Snipaste的官方网站或GitHub Releases页面下载Snipaste-2.10.5-x86_64.AppImage文件。 2. 赋予执行权限 下载完成后&#xff0c;打开终端并导航到文件所在…

                  突破与重塑:逃离Java舒适区,借Go语言复刻Redis的自我突破和成长

                  文章目录 写在文章开头为什么想尝试用go复刻redis复刻redis的心路历程程序员对于舒适区的一点看法关于mini-redis的一些展望结语 写在文章开头 在程序员的技术生涯长河中&#xff0c;我们常常会在熟悉的领域中建立起自己的“舒适区”。于我而言&#xff0c;Java 就是这片承载…

                  【自然语言处理】TextRank 算法提取关键词、短语、句(Python源码实现)

                  文章目录 一、TextRank 算法提取关键词 [工具包]二、TextRank 算法提取关键短语[工具包]三、TextRank 算法提取关键句[工具包]四、TextRank 算法提取关键句&#xff08;Python源码实现&#xff09; 一、TextRank 算法提取关键词 [工具包] 见链接 【自然语言处理】TextRank 算法…

                  展厅为何倾向使用三维数字沙盘进行多媒体互动设计?优势探讨!

                  随着数字技术的迅猛进步&#xff0c;展厅多媒体互动设计正迎来深刻变革。其中&#xff0c;三维数字沙盘作为经典沙盘模型的革新之作&#xff0c;不仅保留了其空间布局直观展示的优点&#xff0c;更巧妙融入光影互动与中控系统&#xff0c;推动展览展示向智能化迈进。今日&#…

                  SDKMAN! 的英文全称是 Software Development Kit Manager(软件开发工具包管理器)

                  文章目录 SDKMAN! 的核心功能SDKMAN! 的常用命令SDKMAN! 的优势总结 SDKMAN! 的英文全称是 Software Development Kit Manager。它是一个用于管理多个软件开发工具&#xff08;如 Java、Groovy、Scala、Kotlin 等&#xff09;版本的工具。SDKMAN! 提供了一个简单的方式来安装、…

                  java配置api,vue网页调用api从oracle数据库读取数据

                  一、主入口文件 1&#xff1a;java后端端口号 2&#xff1a;数据库类型 和 数据库所在服务器ip地址 3&#xff1a;服务器用户名和密码 二、映射数据库表中的数据 resources/mapper/.xml文件 1&#xff1a;column后变量名是数据库中存储的变量名 property的值是column值的…

                  蓝桥杯C语言组:分治问题研究

                  蓝桥杯C语言组分治问题研究 摘要 本文针对蓝桥杯C语言组中的分治问题展开深入研究&#xff0c;详细介绍了分治算法的原理、实现方法及其在解决复杂问题中的应用。通过对经典例题的分析与代码实现&#xff0c;展示了分治算法在提高编程效率和解决实际问题中的重要作用&#xff…

                  Golang GORM系列:GORM CRUM操作实战

                  在数据库管理中&#xff0c;CRUD操作是应用程序的主干&#xff0c;支持数据的创建、检索、更新和删除。强大的Go对象关系映射库GORM通过抽象SQL语句的复杂性&#xff0c;使这些操作变得轻而易举。本文是掌握使用GORM进行CRUD操作的全面指南&#xff0c;提供了在Go应用程序中有效…

                  如何评估云原生GenAI应用开发中的安全风险(下)

                  以上就是如何评估云原生GenAI应用开发中的安全风险系列中的上篇内容&#xff0c;在本篇中我们介绍了在云原生AI应用开发中不同层级的风险&#xff0c;并了解了如何定义AI系统的风险。在本系列下篇中我们会继续探索我们为我们的云原生AI应用评估风险的背景和意义&#xff0c;并且…

                  2025 年 2 月 TIOBE 指数

                  2025 年 2 月 TIOBE 指数 二月头条:快,更快,最快! 现在,世界需要每秒处理越来越多的数字,而硬件的发展速度却不够快,程序的速度变得越来越重要。话虽如此,快速编程语言在 TIOBE 指数中取得进展也就不足为奇了。编程语言 C++ 最近攀升至第 2 位,Go 已稳居前 10 名,Ru…

                  YOLOv11实时目标检测 | 摄像头视频图片文件检测

                  在上篇文章中YOLO11环境部署 || 从检测到训练https://blog.csdn.net/2301_79442295/article/details/145414103#comments_36164492&#xff0c;我们详细探讨了YOLO11的部署以及推理训练&#xff0c;但是评论区的观众老爷就说了&#xff1a;“博主博主&#xff0c;你这个只能推理…

                  Segformer模型的平台部署和项目应用

                  最近因为离职太忙了之前的很多内容没有更新&#xff0c;离开BYD进入新的环境中成长。 本文包含了Segformer的网络结构重构后如何部署到算法平台中方便标注训练推理的过程&#xff0c;以及如何应用到项目中&#xff08;BYD最后一个项目&#xff1a;异物检测系统&#xff09; C做…

                  react redux用法学习

                  参考资料&#xff1a; https://www.bilibili.com/video/BV1ZB4y1Z7o8 https://cn.redux.js.org/tutorials/essentials/part-5-async-logic AI工具&#xff1a;deepseek&#xff0c;通义灵码 第一天 安装相关依赖&#xff1a; 使用redux的中间件&#xff1a; npm i react-redu…

                  【2025 Unity Meta Quest MR 开发教程】透视 Passthrough 模块配置(戴上头显看见现实画面)

                  XR 开发者社区&#xff1a;https://www.spatialxr.tech/ 文章目录 &#x1f4d5;导入透视模块&#x1f4d5;OVRManager&#x1f4d5;OVRPassthroughLayer 脚本&#x1f4d5;相机 教程中使用的 SDK&#xff1a;Meta XR SDK v72&#xff08;可以从 Unity 资源商店添加 Meta XR A…

                  UWB功耗大数据插桩调研

                  一、摘要 UWB功耗点 插桩点 日志关键字 电流 蓝牙持锁 BatteryStats的锁统计 vendor_bluetooth_lock 30~40mA 测距 UwbSessionManager.startRanging UwbSessionManager.stoptRanging 或接入fadiKey Uwb状态广播 "com.fadiui.dkservice.action.uwb.state.change&q…

                  旅游行业内容管理系统CMS提升网站建设效率与体验

                  内容概要 在如今快速发展的互联网时代&#xff0c;旅游行业对网站的要求越来越高&#xff0c;内容管理系统&#xff08;CMS&#xff09;的应用不可或缺。以 Baklib 为代表的先进CMS可显著提高旅游网站的建设效率与用户体验。为了满足不断变化的市场需求&#xff0c;这些系统通…