對稱加密演算法
1 對稱加密:加密和解密使用同一個密鑰 2 DES:Data Encryption Standard,56bits 3 3DES: 4 AES:Advanced (128, 192, 256bits) 5 Blowfish,Twofish 6 IDEA,RC6,CAST5 7 特性: 8 1、加密、解密使用同一個密鑰,效率高 9 2、將原始資料分割成固定大小的塊,逐個進行加密 10 缺陷: 11 1、密鑰過多 12 2、密鑰分發 13 3、資料來源無法確認
非對稱加密演算法
1 公鑰加密:密鑰是成對出現 2 公鑰:公開給所有人;public key 3 私鑰:自己留存,必須保證其私密性;secret key 4 特點:用公鑰加密資料,只能使用與之配對的私鑰解密;反之亦然 5 功能: 6 數字簽名:主要在于讓接收方確認發送方身份 7 對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰后發送給對方 8 資料加密:適合加密較小資料 9 缺點:密鑰長,加密解密效率低下 10 演算法: 11 RSA(加密,數字簽名) 12 DSA(數字簽名) 13 ELGamal
單向散列(hash演算法)
1 將任意資料縮小成固定大小的“指紋” 2 任意長度輸入 3 固定長度輸出 4 若修改資料,指紋也會改變(“不會產生沖突”) 5 無法從指紋中重新生成資料(“單向”) 6 功能:資料完整性 7 常見演算法 8 md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512 9 常用工具 10 md5sum | sha1sum [ --check ] file 11 openssl、gpg 12 rpm -V 13 hash(data)=digest 摘要,有時候也稱為指紋 只要資料不同摘要必不同,得到摘要推不出原來的資料值 14 不論什么資料,不論資料的大小,只要用的演算法相同,那么輸出長度必定相同 15 只要資料不同,摘要完全不同,哪怕資料之間只相差一個空格字符都會產生巨大的變化也稱雪崩效應 16 常用于對比資料,資料是否被修改過,資料相同,摘要必定相同 17 18 檔案完整性的兩種實施方式 19 被安裝的檔案 20 md5單向hash 21 rpm -V package-name 22 例:修改檔案內容查看hash 23 rpm -qf /etc/issue 24 centos-release-7-6.1810.2.el7.centos.x86_64 25 rpm -V centos-release 26 missing c /etc/yum.repos.d/CentOS-Base.repo 27 missing c /etc/yum.repos.d/CentOS-CR.repo 28 echo 1 >> /etc/issue 29 rpm -V centos-release 30 ..5....T. c /etc/issue :5就表示md5,說明檔案內容變了,T表示檔案的時間變了 31 missing c /etc/yum.repos.d/CentOS-Base.repo 32 missing c /etc/yum.repos.d/CentOS-CR.repo 33 然后將追加的1刪掉,再次比較 34 rpm -V centos-release 35 .......T. c /etc/issue :檔案內容恢復,但是時間改變了 36 missing c /etc/yum.repos.d/CentOS-Base.repo 37 missing c /etc/yum.repos.d/CentOS-CR.repo 38 39 發行的軟體包檔案 40 GPG公鑰簽名 41 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 42 rpm -K tree-1.6.0-10.el7.x86_64.rpm 43 44 如果不匯入公鑰,系統提示沒有公鑰,不能檢查,如果有問題提示NOT OK
CA和證書
1 PKI: Public Key Infrastructure 2 簽證機構:CA(Certificate Authority) 3 注冊機構:RA 4 證書吊銷串列:CRL 5 證書存取庫: 6 X.509:定義了證書的結構以及認證協議標準 7 版本號 主體公鑰 8 序列號 CRL分發點 9 簽名演算法 擴展資訊 10 頒發者 發行者簽名 11 有效期限 12 主體名稱
證書獲取
1 證書型別: 2 證書授權機構的證書 3 服務器 4 用戶證書 5 獲取證書兩種方法: 6 使用證書授權機構 7 生成證書請求(csr) 8 將證書請求csr發送給CA 9 CA簽名頒發證書 10 自簽名的證書 11 自已簽發自己的公鑰
安全協議
1 SSL:Secure Socket Layer,TLS: Transport Layer Security (安全套接層) 2 1995:SSL 2.0 Netscape 3 1996:SSL 3.0 4 1999:TLS 1.0 5 2006:TLS 1.1 IETF(Internet工程任務組) RFC 4346 6 2008:TLS 1.2 當前使用 7 2015:TLS 1.3 8 功能:機密性,認證,完整性,重放保護 9 兩階段協議,分為握手階段和應用階段 10 握手階段(協商階段):客戶端和服務器端認證對方身份(依賴于PKI體系,利用數字 11 證書進行身份認證),并協商通信中使用的安全引數、密碼套件以及主密鑰,后續通信使 12 用的所有密鑰都是通過MasterSecret生成, 13 應用階段:在握手階段完成后進入,在應用階段通信雙方使用握手階段協商好的密 14 鑰進行安全通信
1 SSL/TLS 2 Handshake協議:包括協商安全引數和密碼套件、服務器身份認證(客戶端身 3 份認證可選)、密鑰交換 4 ChangeCipherSpec 協議:一條訊息表明握手協議已經完成 5 Alert 協議:對握手協議中一些例外的錯誤提醒,分為fatal和warning兩個級別, 6 fatal型別錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續, 7 只是會給出錯誤警告 8 Record 協議:包括對訊息的分段、壓縮、訊息認證和完整性保護、加密等 9 HTTPS 協議:就是“HTTP 協議”和“SSL/TLS 協議”的組合,HTTP over 10 SSL”或“HTTP over TLS”,對http協議的文本資料進行加密處理后,成為二 11 進制形式傳輸
OpenSSL
1 OpenSSL:開源專案 2 三個組件: 3 openssl:多用途的命令列工具,包openssl 4 libcrypto:加密演算法庫,包openssl-libs 5 libssl:加密模塊應用庫,實作了ssl及tls,包nss 6 openssl命令: 7 兩種運行模式:互動模式和批處理模式 8 openssl version:程式版本號 9 標準命令、訊息摘要命令、加密命令 10 標準命令:enc, ca, req, ...
openssl命令
1 對稱加密: 2 工具:openssl enc, gpg 3 演算法:3des, aes, blowfish, twofish 4 enc命令: 5 幫助:man enc 6 加密: 7 openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher 8 解密: 9 openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile 10 openssl ?
1 單向加密: 2 工具:md5sum, sha1sum, sha224sum,sha256sum… 3 openssl dgst 4 dgst命令: 5 幫助:man dgst 6 openssl dgst -md5 [-hex默認] /PATH/SOMEFILE 7 openssl dgst -md5 testfile 8 md5sum /PATH/TO/SOMEFILE 9 MAC: Message Authentication Code,單向加密的一種延伸應用,用于實作 10 網路通信中保證所傳輸資料的完整性機制 11 CBC-MAC 12 HMAC:使用md5或sha1演算法
1 生成用戶密碼: 2 passwd命令: 3 幫助:man sslpasswd 4 openssl passwd -1 -salt SALT(最多8位) 5 openssl passwd -1 –salt centos 6 –salt:打亂生成的hash值,正常使用md5生成的hash值只要資料相同 7 hash值就相同添加–salt嚴之后就可以打亂hash值即使資料一樣hash 8 值也是不一樣的 9 生成亂數: 10 幫助:man sslrand 11 openssl rand -base64|-hex NUM 12 NUM: 表示位元組數,使用-hex,每個字符為十六進制,相當于4位二進制,出現的字符數為NUM*2
1 公鑰加密: 2 演算法:RSA, ELGamal 3 工具:gpg, openssl rsautl(man rsautl) 4 數字簽名: 5 演算法:RSA, DSA, ELGamal 6 密鑰交換: 7 演算法:dh 8 DSA:Digital Signature Algorithm 9 DSS:Digital Signature Standard 10 RSA:
1 生成密鑰對兒:man genrsa 2 生成私鑰 3 openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS 4 (umask 077; openssl genrsa –out test.key –des 2048) 5 openssl rsa -in test.key –out test2.key 將加密key解密 6 從私鑰中提取出公鑰 7 openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE 8 openssl rsa –in test.key –pubout –out test.key.pub 9 亂數生成器:偽亂數字 10 鍵盤和滑鼠,塊設備中斷 11 /dev/random:僅從熵池回傳亂數;亂數用盡,阻塞 12 /dev/urandom:從熵池回傳亂數;亂數用盡,會利用軟體生成偽亂數,非阻塞
創建CA和申請證書
1 openssl的組態檔:/etc/pki/tls/openssl.cnf 2 組態檔中有對應的陳述句塊,定義默認CA,也可以添加CA,CA的默認設定 3 檔案中關于CA的選項策略,搭建CA時需要指定的資訊(國家,城市,公司等等) 4 match:要求申請填寫的資訊和CA設定資訊必須一致 5 optional:可有可無,和CA設定資訊可不一致 6 supplied:必須填寫這項申請資訊 7 將來客戶端申請填寫時要注意以上欄位,需要填寫一致,否則報錯 8 1、創建所需要的檔案 9 touch /etc/pki/CA/index.txt :生成證書索引資料庫檔案 10 echo 01 > /etc/pki/CA/serial:指定第一個頒發證書的序列號 11 2、CA自簽證書 12 生成私鑰 13 cd /etc/pki/CA/ 14 (umask 066;openssl genrsa -out private/cakey.pem 2048) :安全 15 3、生成自簽名證書: 16 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem 17 回車后輸入CA的資訊,地區(兩個字符,例CN),公司,CA的域名,郵箱(可選項) 18 選項說明: 19 -new:生成新證書簽署請求 20 -x509:專用于CA生成自簽證書 21 -key:生成請求時用到的私鑰檔案 22 -days n:證書的有效期限 23 -out /path/to/file:證書的保存路徑 24 客戶端創建私鑰申請證書: 25 1、創建私鑰 26 (umask 066;openssl genrsa -out http.key 1024) 27 2、利用私鑰生成證書申請 28 openssl req -new -key /data/http.key -out /data/http.csr 29 回車后輸入相關資訊,默認國家,城市,和公司這三項必須填寫一樣,部門是自定義的,主機名也是自定以,輸入將來你要作為域名的那個名字, 30 3、將生成的申請發送到CA服務器 31 scp http.csr 服務器IP:/tmp/ 32 服務端CA簽署證書,并將證書頒發給請求者 33 1、生成證書 34 openssl ca -in /tmp/http.csr -out /etc/pki/CA/certs/http.crt -days 365 35 回車后輸入資訊,默認要求國家,省,公司三項必須和CA一致 36 2、將證書版發給請求者客戶端 37 scp /etc/pki/CA/certs/http.crt 客戶端IP:/data/ 38 至此證書申請完畢,使用證書是應用軟體中實作,在軟體例如httpd中添加此證書的路徑就可以用了 39 40 查看證書中的資訊 41 openssl x509 -in /path/to/file.crt -noout -test|issuer|subject|serial|dates 42 例:openssl x509 -in /data/http.crt -noout -text 43 openssl ca -status SERIAL :查看指定編號的證書狀態
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/162449.html
標籤:Linux
上一篇:Linux下的基本命令(不定期更新,歡迎指正錯誤、交流學習)
下一篇:文本三劍客之awk
