linux安全機制與加密工具使用

1、加密須要和安全機制
1.不加密流量的易受***性
密碼/數據嗅探
數據操做
驗證操做
至關於郵寄明信片
2.不安全的傳統協議
telnet、FTP、POP3等等;不安全密碼http、sendmail、NFS等等;不安全信息Ldap、NIS、rsh等等;不安全驗證
3.NIST定義的安全屬性:美國國家標準與技術研究院
1) 保密性:
    數據保密性
    隱私性2)完整性:不可篡改
    數據完整性
    系統完整性3)可用性
4.安全***:STRIDE
Spoofing(假冒)、Tampering(篡改)、Repudiation(否定)、Information Disclosure(信息泄漏)、
Denial of Service(拒絕服務)和Elevation of Privilege(提高權限)
5.安全機制:
加密、數字簽名、訪問控制、數據完整性、認證交換、流量填充、路由控制、公證
6.安全服務
認證
訪問控制
數據保密性
鏈接保密性
無鏈接保密性
選擇域保密性
流量保密性
數據完整性
不能否認性
7.設計基本原則
使用成熟的安全系統
以小人之心度輸入數據
外部系統是不安全的
最小受權
減小外部接口
缺省使用安全模式
安全不是似是而非
從STRIDE思考在入口處檢查
從管理上保護好你的系統
2、安全算法與加密方法概念解析
1.安全算法
經常使用安全技術
    認證
    受權
    安全通訊
    審計
密碼算法和協議:
    對稱加密
    公鑰加密
    單向加密
    認證協議
Linux系統:OpenSSL, gpg(pgp協議的實現)
2.對稱加密算法
1)對稱加密:加密和解密使用同一個密鑰
    DES:Data Encryption Standard,56bits    3DES:
    AES:Advanced (128, 192, 256bits)
    Blowfish,Twofish
    IDEA,RC6,CAST52) 特性:    一、加密、解密使用同一個密鑰,效率高    二、將原始數據分割成固定大小的塊,逐個進行加密3)缺陷:    一、密鑰過多    二、密鑰分發    三、沒法實現數據來源確認
3.非對稱加密算法
1)公鑰加密:密鑰是成對出現
    公鑰:公開給全部人;public key
    私鑰:本身留存,必須保證其私密性;secret key
 2)特色:用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然
功能:
3)數字簽名:主要在於讓接收方確認發送方身份
4)對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰後發送給對方
5)數據加密:適合加密較小數據
6)缺點:密鑰長,加密解密效率低下
7)算法:
    RSA(加密,數字簽名),DSA(數字簽名),ELGamal
8)基於一對公鑰/密鑰對
    用密鑰對中的一個加密,另外一個解密
9)實現加密:
    接收者
        生成公鑰/密鑰對:P和S
        公開公鑰P,保密密鑰S
    發送者
        使用接收者的公鑰來加密消息M
        將P(M)發送給接收者
    接收者
        使用密鑰S來解密:M=S(P(M))
10)實現數字簽名
    發送者
        生成公鑰/密鑰對:P和S
        公開公鑰P,保密密鑰S
        使用密鑰S來加密消息M
        發送給接收者S(M)
  接收者
        使用發送者的公鑰來解密M=P(S(M))
11)結合簽名和加密使用或者分離簽名

wKioL1fnvtujZ7jVAABdWzTda0w576.png

4.單向散列
1)將任意數據縮小成固定大小的「指紋」
    任意長度輸入
    固定長度輸出
    若修改數據,指紋也會改變(「不會產生衝突」)
    沒法從指紋中從新生成數據(「單向」)2)功能:數據完整性3)常見算式
    md5: 128bits、sha1: 160bits、sha224sha25六、sha38四、sha5124)經常使用工具
    md5sum | sha1sum [ --check ] file
    openssl、gpg
    rpm -V5)find ./ -type f -exec md5sum {} \;經常使用來分析兩套文件系統的文件變化狀況
5.密鑰交換
1)密鑰交換:IKE(Internet Key Exchange )
    公鑰加密:
    DH (Deffie-Hellman):2)DH    一、A: a,p協商生成公開的整數a,大素數p
        B: a,p    二、A:生成隱私數據:x (x<p ),計算得出a^x%p,發送給B
        B:生成隱私數據:y,計算得出a^y%p,發送給A    三、A:計算得出(a^y%p)^x = a^xy%p,生成爲密鑰

B:計算得出(ax%p)y = a^xy%p, 生成爲密鑰git

6.CA和證書
1)PKI: Public Key Infrastructure
    簽證機構:CA(Certificate Authority)
    註冊機構:RA( registry Authority)
    證書吊銷列表:CRL(Certificate   revoke  list)
    證書存取庫:2)X.509:定義了證書的結構以及認證協議標準
    版本號、序列號、簽名算法、頒發者、有效期限、主體名稱、主體公鑰、CRL分發點、擴展信息、發行者簽名 
3)證書類型
    證書受權機構的證書
    服務器
    用戶證書4)獲取證書兩種方法:
    使用證書受權機構
        生成簽名請求(csr)
        將csr發送給CA
        從CA處接收簽名5)自簽名的證書
    自已簽發本身的公鑰
6.安全協議
1)SSL: Secure Socket Layer
    TLS: Transport Layer Security        1995:SSL 2.0 Netscape        1996: SSL 3.0
        1999: TLS 1.0
        2006: TLS 1.1           
        RFC(Request For Comments )4346
        2008:TLS 1.2 當前使用        2015: TLS 1.3
    功能:機密性,認證,完整性,重放保護2)兩階段協議,分爲握手階段和應用階段
    握手階段(協商階段):客戶端和服務器端認證對方身份(依賴於PKI體系,利用數字證書進行身份認證),
    並協商通訊中使用的安全參數、密碼套件以及主密鑰。後續通訊使用的全部密鑰都是經過MasterSecret生成。
    應用階段:在握手階段完成後進入,在應用階段通訊雙方使用握手階段協商好的密鑰進行安全通訊。3)SSL/TLS protocol 安全套接字層/傳輸層安全性協議圖示

wKioL1fnvwTy-uk0AALjtw5tIoI496.png

4)ssl/TLS協議過程
   Handshake協議:包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)、密鑰交換; 
   ChangeCipherSpec 協議:一條消息代表握手協議已經完成
   Alert 協議:對握手協議中一些異常的錯誤提醒,分爲fatal和warning兩個級別,fatal類型錯誤會直接中斷SSL連接,而warning級別的錯誤SSL連接仍可繼續,只是會給出錯誤警告
   Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等。
   HTTPS 協議:就是「HTTP 協議」和「SSL/TLS 協議」的組合。HTTP over SSL」或「HTTP over TLS」,對http協議的文本數據進行加密處理後,成爲二進制形式傳輸5)協議請求與迴應過程圖示

wKiom1fnvxjjG___AAG8qiixLqo254.png

2、經常使用加密工具使用詳解
1.OpenSSL開源項目
1)三個組件:
    openssl: 多用途的命令行工具
    libcrypto: 加密算法庫
    libssl:加密模塊應用庫,實現了ssl及tls
2)openssl命令
    兩種運行模式:交互模式和批處理模式
    opensslversion:程序版本號
    標準命令、消息摘要命令、加密命令
    標準命令:        enc, ca, req, ...        enc查看命令的詳細使用方法
 3)對稱加密
    工具:opensslenc, gpg
    算法:3des, aes, blowfish, twofish
4)enc命令:man enc
    加密:
        openssl enc -e -des3 -a -salt -in /tmp/fstab -out fstab.cipher
    解密:
      openssl enc -d -des3 -a -salt -in fstab.cipher -out fstab  
5)opensl dgst -md5 fstab==md5sum fstab
6)單向加密:
    工具:md5sum, sha1sum, sha224sum,sha256sum…
    openssldgst
7)dgst命令:man dgst
    openssldgst -md5 [-hex] /PATH/TO/SOMEFILE
    openssldgst -md5 fstab 
    md5sum /PATH/TO/SOMEFILE
8)MAC: Message Authentication Code,單向加密的一種延伸應用,用於實現網絡通訊中保證所傳輸數據的完整性機制
    CBC-MAC
    HMAC:使用md5或sha1算法
9)生成用戶密碼:
    passwd命令:man sslpasswd
    opensslpasswd -1 -salt SALT(最多8位)
    opensslpasswd -1 –salt centos
10)生成隨機數:man sslrand
    opensslrand -base64|-hex NUM
    NUM: 表示字節數;-hex時,每一個字符4位,出現的字符數爲NUM*2
11)公鑰加密
    算法:RSA, ELGamal
    工具:gpg, opensslrsautl(man rsautl)
12)數字簽名
    算法:RSA, DSA, ELGamal
13)密鑰交換
    算法:dh
    DSA: Digital Signature             Algorithm
    DSS:Digital Signature  Standard
    RSA:
14)密鑰生成過程
    生成密鑰對兒:man genrsa
    生成私鑰:
        openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
        (umask077; openssl genrsa -out key.pri –des 2048)
    從私鑰中提取出公鑰:
        openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
        openssl rsa -in aaa.key -pubout -out aaa.pub  
   隨機數生成器:僞隨機數字
        鍵盤和鼠標
        塊設備中斷
        /dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞
        /dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成僞隨機數,非阻塞
2.OpenSSL的CA機制
1)PKI:Public Key Infrastructure
    CA:證書認證
    RA:證書註冊
    CRL:證書吊銷
    證書存取庫2)創建私有CA:
    OpenCA
    openssl3)證書申請及簽署步驟    1.生成申請請求    2.RA覈驗    3.CA簽署    4.獲取證書4)建立CA和申請證書
        openssl的配置文件:/etc/pki/tls/openssl.cnf
    (1) 建立所須要的文件
        touch /etc/pki/CA/index.txt
        echo 01 > /etc/pki/CA/serial
    (2)CA自簽證書
        生成私鑰
        cd /etc/pki/CA/
        (umask066; openssl genrsa -out /etc/pki/CA/private/cakey.pem2048)
        生成自簽名證書
            openssl req -new  -x509 –key /etc/pki/CA/private/cakey.pem -days 7300
                -out /etc/pki/CA/cacert.pem
                -new: 生成新證書籤署請求;
                -x509: 專用於CA生成自簽證書;
                -key: 生成請求時用到的私鑰文件;
                -days n:證書的有效期限;
                -out /PATH/TO/SOMECERTFILE: 證書的保存路徑
    (3)頒發證書
        (a) 在須要使用證書的主機生成證書請求;
             給web服務器生成私鑰
            (umask066; openssl genrsa -out/etc/httpd/ssl/httpd.key 2048)
            生成證書申請文件
            openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
        (b) 將證書請求文件傳輸給CA   
        (c) CA簽署證書,並將證書頒發給請求者;
           opensslca -in /tmp/httpd.csr –out /etc/pki/CA/certs/httpd.crt -days 365 
            注意:證書中國家,省,公司名稱必須和CA一致(配置文件中有定義,若是想要不一致也能夠,則能夠去修改配置文件完成)
        (d) 查看證書中的信息:
            openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|subject|serial|dates
      (4) 吊銷證書
        (a) 在客戶端獲取要吊銷的證書的serial
            openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
        (b) 在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致
            吊銷證書:
            openssl ca -revoke /etc/pki/CA/newcerts/ SERIAL.pem
            注:在index.txt中保存的證書信息前是V爲有效證書,若是是R則爲已吊銷的證書
                在文件/etc/pki/CA/newcerts中有每一個證書對應的序列號
        (c) 生成吊銷證書的編號(第一次吊銷一個證書時才須要執行)
            echo 01 > /etc/pki/CA/crlnumber
         (d) 更新證書吊銷列表
            openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl
            查看crl文件
                openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text
                注:客戶端中配置的有關於證書的吊銷列表從互聯網哪裏下載,以保證證書的有效性
3.應用程序RPM
1)文件完整性的兩種實施方式2)被安裝的文件
    MD5單向散列
    rpm -versify package_name(or -V)3)發行的軟件包文件
    GPG公鑰簽名
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
    rpm --checksig pakage_Pfile_name(or -K)
4.gpg工具的使用
1)使用gpg實現對稱加密
    對稱加密file文件
        gpg -c file
        ls file.gpg
    解密file
        gpg -o file2 -d file.gpg
    注:若是加密和解密在同一臺主機上,解密的時候不須要輸入密碼2)使用gpg工具實現公鑰加密
    在hostA主機上生成公鑰/私鑰對
        gpg --gen-key
    在hostA主機上查看公鑰
        gpg --list-keys
    在hostA主機上導出公鑰wang.pubkey
        gpg -a --export -o wang.pubkey
    從hostA主機上覆制公鑰文件到需加密的B主機上
        scp wang.pubkey hostB
    在需加密數據的hostB主機上生成公鑰/私鑰對
        gpg --list-keys
        gpg --gen-key 
    在hostB主機上導入公鑰
        gpg --import wang.pubkey
        gpg--list-keys
    用從hostA主機導入的公鑰,加密hostB主機的文件file,生成file.gpg
        gpg -e -r wangedu file
         file file.gpg
    複製加密文件到hostA主機
        scp fstab.gpg hostA
    在hostA主機解密文件
        gpg -d file.gpg
        gpg -o file -d file.gpg
    刪除公鑰和私鑰
         gpg --delete-secret-keys wangedu
        gpg --delete-keys wangedu
相關文章
相關標籤/搜索