安全和加密:
NIST定義的安全屬性:(美國國家標準與技術研究院)
保密性:
數據保密性
隱私性
完整性:不可篡改
數據完整性
系統完整性
高可用性: 五個9
安全攻擊:STRIDE
Spoofing(假冒) Tampering (篡改) Repudiation (否認)
Information Disclosure (信息泄漏) Denial of Service(拒絕服務)
Elevation of Privilege (提升權限 )
安全機制:
加密,數字簽名,訪問控制,數據完整性
認證交換,流量填充,路由控制,公證
安全服務:
認證
訪問控制
數據保密性
連接保密性
無連接保密性 UDP協議
選擇域保密性
流量保密性
數據完整性
不可否認性
常用安全技術:
認證
授權
安全通信
審計
密碼算法和協議:
對稱加密
公鑰加密
單向加密
認證協議
對稱加密:加密和解密使用同一個密鑰 (AES加密算法)
特性:
1 、加密、解密使用同一個密鑰,效率高
2 、將原始數據分割成固定大小的塊,逐個進行加密
缺陷:
1、密鑰過多
2、密鑰分發
3、數據來源無法確認
非對稱加密:
公鑰加密:密鑰是成對出現
公鑰:公開給所有人; public key
私鑰:自己留存,必須保證其私密性; secret key
特點:用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然
功能:
數字簽名:主要在于讓接收方確認發送方身份
對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰后發送給
對方
數據加密:適合加密較小數據
缺點:密鑰長,加密解密效率低下
算法:
RSA (加密,數字簽名),DSA (數字簽名),ELGamal
實現加密:
? 接收者
生成公鑰/ 密鑰對:P 和S
公開公鑰P ,保密密鑰S
? 發送者
使用接收者的公鑰來加密消息M
將P(M) 發送給接收者
? 接收者
使用密鑰S來解密:M=S(P(M))
注意:使用對稱加密文件,非對稱加密公鑰私鑰
因為非對稱加密耗時很長,公鑰和私鑰非常小容易解密
實現數字簽名:
? 發送者
生成公鑰/ 密鑰對:P 和S
公開公鑰P,保密密鑰S
使用密鑰S 來加密消息M
發送給接收者S(M)
? 接收者
使用發送者的公鑰來解密M=P(S(M))
結合簽名和加密
分離簽名
單向散列:
任意數據縮小成固定大小的“指紋”
? 任意長度輸入
? 固定長度輸出
? 若修改數據,指紋也會改變(“不會產生沖突”)
? 無法從指紋中重新生成數據(“單向”)
功能:數據完整性
常見算式
md5: 128bits 、sha1: 160bits 、sha224、sha256 、sha384 、sha512
常用工具
? md5sum | sha1sum [ –check ] file #檢查是否改變
? openssl 、gpg
? rpm -V #校驗
PKI: Public Key Infrastructure 公共的秘鑰加密體系
簽證機構:CA (Certificate Authority) 證書頒發機構CA
注冊機構:RA #申請注冊機構RA
證書吊銷列表:CRL #吊銷列表后綴.crl
證書存取庫 #證書的后綴.cer
X.509 :定義了證書的結構以及認證協議標準
版本號
序列號
簽名算法
頒發者 #CA的名字
有效期限
主體名稱 #用戶名字
主體公鑰
CRL 分發點
擴展信息
發行者簽名
證書類型:
證書授權機構的證書
服務器
用戶證書
獲取證書兩種方法:
? 使用證書授權機構
生成簽名請求 csr 文件的后綴
將 csr 發送給CA
從 CA 處接收簽名
? 自簽名的證書
自已簽發自己的公鑰 #CA給自己簽名頒發證書
安全協議:SSL 和 TLS(這是升級版) #當前使用TLS1.2版本
功能:機密性,認證,完整性,重放保護
兩階段協議;
握手階段(協商階段)
應用階段
OpenSSL :開源項目
三個組件:
openssl : 多用途的命令行工具
libcrypto: 加密算法庫,包openssl-libs提供
libssl : 加密模塊應用庫,實現了ssl 及tls
openssl 命令:
兩種運行模式:交互模式和批處理模式
openssl version :程序版本號
標準命令、消息摘要命令、加密命令
標準命令:
enc, ca, req, …
對稱加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc 命令:man enc # 對稱加密
加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
加密 加密算法 加鹽 加密的文件 加密后輸出的文件
解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
單向加密:
工具:md5sum, sha1sum, sha224sum,sha256sum… openssl dgst
dgst 命令:man dgst #hash運算
openssl dgst -md5 [-hex 默認] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code ,單向加密的一種延伸應用,
用于實現網絡通信中保證所傳輸數據的完整性機制
CBC-MAC
HMAC :使用md5 或sha1
生成用戶密碼:
passwd 命令:man sslpasswd
openssl passwd -1 -salt SALT( 最多8 位) #-1就是md5
openssl passwd -1 –salt centos
生成隨機數:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字節數;-hex 時,每個字符4位,出現的字符數為NUM*2
公鑰加密:
算法:RSA, ELGamal
工具:gpg, openssl rsautl (man rsautl) )
數字簽名:
算法:RSA, DSA, ELGamal
密鑰交換:
算法:dh
DSA : Digital Signature Algorithm
DSS :Digital Signature Standard
RSA :
生成密鑰對兒:man genrsa #rsa算法
生成私鑰: #每次執行生成的私鑰都不相同
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
指定多少字節2048
(umask 077; openssl genrsa -out key.pri –des 2048)
從私鑰中提取出公鑰: #公鑰不能提取私鑰
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
私鑰 指定公鑰名字
隨機數生成器:偽隨機數字 #盡量去客戶端生成,不要在ssh生成
鍵盤和鼠標
塊設備中斷
/dev/random :僅從熵池返回隨機數;隨機數用盡,阻塞
/dev/urandom :從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,
搭建CA:
1.服務器:建立CA
2.客戶端(比如websrv):生成申請csr
3.申請csr發送到CA
4.CA:審核,批準, 生成crt|cer后綴的文件
5.發送到客戶端
6.應用配置 https
PKI :Public Key Infrastructure
CA
RA
CRL
證書存取庫
建立私有CA:
OpenCA
openssl
證書申請及簽署步驟:
1 、生成申請請求
2 、RA 核驗
3 、CA 簽署
4 、獲取證書
vim /etc/pki/tls/openssl.cnf
dir = /etc/pki/CA # Where everything is kept
CA的根目錄
certs = $dir/certs # Where the issued certs are kept
證書文件 頒發證書的目錄,需要手動更新
database = $dir/index.txt # database index file.
數據庫文件,數據會自動生成
serial = $dir/serial # The current serial number
下一個證書編號從幾開始,需要手動指定
certificate = $dir/cacert.pem # The CA certificate
CA自己的證書簽名路徑
注意:index.txt文件和serial文件需要手動創建,否則后面會報錯
搭建CA和申請證書:
創建私有CA:
openssl 的配置文件:/etc/pki/tls/openssl.cnf
三種策略 : 匹配、支持和可選
匹配指要求申請填寫的信息跟CA 設置 信息必須一致,支持
指必須填寫這項申請信息, 可選指可有可無
1 、創建所需要的文件
touch /etc/pki/CA/index.txt 生成證書索引數據庫文件
echo 01 > /etc/pki/CA/serial 指定第一個頒發證書的序列號
2、 CA 自簽證書
生成私鑰 : cd /etc/pki/CA/
(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
3.生成自簽名證書
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 : 證書的保存路徑
頒發證書
? A 在需要使用證書的主機生成證書請求
給web 服務器生成私鑰
(umask 066; openssl genrsa -out /etc/pki/tls/private/app.key 2048)
生成證書申請文件
openssl req -new -key /etc/pki/CA/app.key -out etc/pki/CA/test.csr
? B 將證書請求文件傳輸給CA
scp test.csr 172.18.12.11:/root
? C CA 簽署證書,并將證書頒發給請求者
openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 365
注意:默認國家,省,公司名稱三項必須和CA 一致
簽名完成后sz導入到電腦使用
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
? C 指定第一個吊銷 證書的編號
注意:第一次更新證書吊銷列表前,才需要執行
echo 01 > /etc/pki/CA/crlnumber
D 更新證書吊銷列表
openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
查看crl 文件:
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
文件完整性的兩種實施方式:
被安裝的文件
? MD5 單向散列
? rpm -v package
發行的軟件包文件
? GPG 公鑰簽名
? rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat* #導入公鑰
? rpm –checksig pakage_file_name (or -K) #檢查簽名
使用gpg 實現對稱加密:
對稱加密file 文件
gpg -c file
ls file.gpg
在另一臺主機上解密file
gpg -o file -d file.gpg #-o 指定解密后文件名字
使用gpg 工具實現公鑰加密 #盡量在本機執行
在hostB 主機上用公鑰加密,在hostA 主機上解密
在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 wangxiaochun file #后綴自動生成
file file.gpg
復制加密文件到hostA 主機
scp fstab.gpg hostA:
在hostA 主機解密文件
gpg -d file.gpg
gpg -o file -d file.gpg
刪除公鑰和私鑰
gpg –delete-keys wangxiaochun
gpg –delete-secret-keys wangxiaochun
原創文章,作者:shewei,如若轉載,請注明出處:http://www.www58058.com/73199