網絡安全溯源 思路 網絡安全原理

網絡安全背景

? ? ? ? 網絡就是實現不同主機之間的通訊。網絡出現之初利用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 -V3.模擬證書頒發機構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.confserver {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?

                  本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
                  如若轉載,請注明出處:http://www.pswp.cn/news/895213.shtml
                  繁體地址,請注明出處:http://hk.pswp.cn/news/895213.shtml
                  英文地址,請注明出處:http://en.pswp.cn/news/895213.shtml

                  如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

                  相關文章

                  QTreeView和QTableView單元格添加超鏈接

                  QTreeView和QTableView單元格添加超鏈接的方法類似,本文僅以QTreeView為例。 在QTableView仿Excel表頭排序和篩選中已經實現了超鏈接的添加,但是需要借助delegate,這里介紹一種更簡單的方式,無需借助delegate。 一.效果 二.實現 QHTreeView.h #ifndef QHTREEVIEW_H #def…

                  每日一題——缺失的第一個正整數

                  缺失的第一個正整數 題目描述進階:數據范圍: 示例示例 1示例 2示例 3 題解思路代碼實現代碼解釋復雜度分析總結 題目描述 給定一個無重復元素的整數數組 nums,請你找出其中沒有出現的最小的正整數。 進階: 時間復雜度&#xff…

                  2025年日祭

                  本文將同步發表于洛谷(暫無法訪問)、CSDN 與 Github 個人博客(暫未發布) 本蒟自2025.2.8開始半停課。 以下是題目格式: [題目OJ 題號] [來源(選填)] 名稱 …… 題號 - 名稱 題目:……

                  Docker 部署 MySQL-5.7 單機版

                  一、鏡像獲取 # docker hub 鏡像 docker pull farerboy/mysql:5.7 # 國內阿里鏡像 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mysql:5.7 以上兩個鏡像二選一即可 二、運行容器 docker run -dti --name mysql \n --privileged \n --cgroupns private \n --e…

                  迅為RK3568開發板篇OpenHarmony實操HDF驅動配置LED-編譯源碼

                  重新編譯 Openharmony4.1 源碼,如下所示: ./build.sh --product-name rk3568 --ccache 或者單獨編譯部件 ./build.sh --product-name rk3568 --build-target demos --ccache 編譯之后,在源碼 out/rk3568/topeet 目錄下生成編譯產物&#xff0…

                  跨越邊界,大模型如何助推科技與社會的完美結合?

                  點擊藍字 關注我們 AI TIME歡迎每一位AI愛好者的加入! 概述 2024年,大模型技術已成為人工智能領域的焦點。這不僅僅是一項技術進步,更是一次可能深刻影響社會發展方方面面的變革。大模型的交叉能否推動技術與社會的真正融合?2025年…

                  藍橋杯 Java B 組之函數定義與遞歸入門

                  一、Java 函數(方法)基礎 1. 什么是函數? 函數(方法)是 一段可復用的代碼塊,通過 函數調用 執行,并可返回值。在 Java 里,函數也被叫做方法,它是一段具有特定功能的、可…

                  數據倉庫和商務智能:洞察數據,驅動決策

                  在數據管理的眾多領域中,數據倉庫和商務智能(BI)是將數據轉化為洞察力、支持決策制定的關鍵環節。它們通過整合、存儲和分析數據,幫助組織更好地理解業務運營,預測市場趨勢,從而制定出更明智的戰略。今天&a…

                  C++---命名空間

                  目錄 c語言中的問題命名空間的定義注意事項第一點:同名命名空間第二點:命名空間中的全局變量與局部變量 命名空間的使用第一種使用方法第二種使用方法第三種使用方法 注意事項第一點:沒有名字的命名空間第二點:局部優先原則第三點…

                  Prompt逆向工程:如何“騙“大模型吐露其Prompt?

                  提示詞的“逆向工程”,讓AI大語言模型幫你反推提示詞 一、前言 在日常生活中,我們不時會遇到一些令人驚艷的文本,不論是一篇精彩絕倫的小說、一篇深入淺出的科普文章,還是一篇充滿熱情的音樂推薦,它們都能在我們的心…

                  Android studio常量表達式的錯誤

                  case R.id.openSerial485: 異常 在Android Studio中遇到“錯誤: 需要常量表達式”通常是因為在需要編譯時常量的地方使用了變量。以下是常見場景及解決方法: 1. switch 語句中的 case 標簽 Java要求case標簽必須是常量表達式(如字面量或final常量&…

                  【UI設計】可視化大屏原型設計

                  文章目錄 一、墨刀中的幾個可視化大屏框架原型 一、墨刀中的幾個可視化大屏框架原型

                  【推理llm論文精度】DeepSeek-R1:強化學習驅動LLM推理能力飛躍

                  最近deepseek R1模型大火,正好復習一下他家的技驚四座的論文https://arxiv.org/pdf/2501.12948 近年來,大型語言模型(LLM)在推理能力上取得了顯著進展,但如何進一步有效提升仍然是研究熱點。DeepSeek-AI發布了 DeepS…

                  啟明星辰發布MAF大模型應用防火墻產品,提升DeepSeek類企業用戶安全

                  2月7日,啟明星辰面向DeepSeek等企業級大模型業務服務者提供的安全防護產品——天清MAF(Model Application Firewall)大模型應用防火墻產品正式發布。 一個新賽道將被開啟…… DeepSeek的低成本引爆賽道規模 隨著DeepSeek成為當前最熱的現象級…

                  conda將python低版本環境升級到高版本

                  conda將python低版本環境3.7.16升級到高版本3.8 1. 激活你的Conda環境2. 升級Python版本3. 驗證升級4. 處理依賴問題5. 測試環境注意事項 可以將Conda環境中的Python版本從3.7.16升級到3.8。以下是具體步驟: 1. 激活你的Conda環境 首先,你需要激活你想要…

                  day10-字符串

                  目錄 字符串1、API 和 API 幫助文檔2、String概述3、String構造方法代碼實現 和 內存分析3.1 創建String對象的兩種方式3.2 Java的內存模型 4、字符串的比較4.1 號的作用4.2 equals方法的作用 練習5、用戶登錄6、遍歷字符串和統計字符個數7、字符串拼接和翻轉8、較難練習-金額轉…

                  互聯網協議套件中的服務類型(RFC 1349)技術解析與總結

                  1. 背景與核心目標 RFC 1349 是對 IP 協議頭部 服務類型(Type of Service, TOS)字段語義的更新與澄清文檔,發布于 1992 年。其主要目標包括: 重新定義 TOS 字段的用途:明確 TOS 字段的語義,解決歷史標準中的…

                  使用git commit時‘“node“‘ 不是內部或外部命令,也不是可運行的程序

                  第一種: 使用git commit -m "xxx"時會報錯,我看網上的方法是在命令行后面添加--no-verify:git commit -m "主題更新" --no-verify,但是不可能每次都添加。 最后解決辦法是:使用git config --lis…

                  DeepSeek從入門到精通:全面掌握AI大模型的核心能力

                  文章目錄 一、DeepSeek是什么?性能對齊OpenAI-o1正式版 二、Deepseek可以做什么?能力圖譜文本生成自然語言理解與分析編程與代碼相關常規繪圖 三、如何使用DeepSeek?四、DeepSeek從入門到精通推理模型推理大模型非推理大模型 快思慢想&#x…

                  洛谷P3397 地毯(二維差分加暴力法)

                  題目難度:普及一 題目傳送門 地毯 題目描述 在 n n n\times n nn 的格子上有 m m m 個地毯。 給出這些地毯的信息,問每個點被多少個地毯覆蓋。 輸入格式 第一行,兩個正整數 n , m n,m n,m。意義如題所述。 接下來 m m m 行&#…