密碼/數據嗅探 數據操做 驗證操做 至關於郵寄明信片
telnet、FTP、POP3等等;不安全密碼http、sendmail、NFS等等;不安全信息Ldap、NIS、rsh等等;不安全驗證
1) 保密性: 數據保密性 隱私性2)完整性:不可篡改 數據完整性 系統完整性3)可用性
Spoofing(假冒)、Tampering(篡改)、Repudiation(否定)、Information Disclosure(信息泄漏)、 Denial of Service(拒絕服務)和Elevation of Privilege(提高權限)
加密、數字簽名、訪問控制、數據完整性、認證交換、流量填充、路由控制、公證
認證 訪問控制 數據保密性 鏈接保密性 無鏈接保密性 選擇域保密性 流量保密性 數據完整性 不能否認性
使用成熟的安全系統 以小人之心度輸入數據 外部系統是不安全的 最小受權 減小外部接口 缺省使用安全模式 安全不是似是而非 從STRIDE思考在入口處檢查 從管理上保護好你的系統
經常使用安全技術 認證 受權 安全通訊 審計 密碼算法和協議: 對稱加密 公鑰加密 單向加密 認證協議 Linux系統:OpenSSL, gpg(pgp協議的實現)
1)對稱加密:加密和解密使用同一個密鑰 DES:Data Encryption Standard,56bits 3DES: AES:Advanced (128, 192, 256bits) Blowfish,Twofish IDEA,RC6,CAST52) 特性: 一、加密、解密使用同一個密鑰,效率高 二、將原始數據分割成固定大小的塊,逐個進行加密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)結合簽名和加密使用或者分離簽名
1)將任意數據縮小成固定大小的「指紋」 任意長度輸入 固定長度輸出 若修改數據,指紋也會改變(「不會產生衝突」) 沒法從指紋中從新生成數據(「單向」)2)功能:數據完整性3)常見算式 md5: 128bits、sha1: 160bits、sha224sha25六、sha38四、sha5124)經常使用工具 md5sum | sha1sum [ --check ] file openssl、gpg rpm -V5)find ./ -type f -exec md5sum {} \;經常使用來分析兩套文件系統的文件變化狀況
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
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)自簽名的證書 自已簽發本身的公鑰
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 安全套接字層/傳輸層安全性協議圖示
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)協議請求與迴應過程圖示
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:從熵池返回隨機數;隨機數用盡,會利用軟件生成僞隨機數,非阻塞
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 注:客戶端中配置的有關於證書的吊銷列表從互聯網哪裏下載,以保證證書的有效性
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)
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