您好,登錄后才能下訂單哦!
數據加密:
SSL: Secure Socket Layer安全的套接字層
Openssl:ssl在Linux上實現的一個軟件,開源的
例:使用了ssl協議就不在是原來的協議了
http(80) --> ssl --> https (443)
NIST定義數據安全性的基本法則:
保密性:
數據保密性
隱私性
完整性:
數據完整性
系統完整性
可用性:
安全***:
被動***:監聽
主動***:偽裝、重放、消息篡改、拒絕服務
安全機制:
加密/解密、數字簽名、訪問控制、數據完整性、認證交換、流量填充、路由控制、公證
安全服務:
認證
訪問控制
數據保密性
連接保密性
無連接保密性
選擇域保密性
流量保密性
數據完整性
不可否認性
密碼算法和協議:
對稱加密
公鑰加密[非對稱加密 ]
單向加密
認證協議
對稱加密:加密和解密使用同一個密鑰;將一種數據流結合加密秘鑰輸出成另一種數據流;
常見算法:
DES:Data EncryptionStandard, 56bits
3DES:
AES:Advanced Encrpytion Standard, (128bits, 192, 256, 384, 512bits)
Blowfish
Twofish
IDEA
RC6
CAST5
特性:
1、加密、解密使用同一密鑰;
2、將明文分隔成固定大小的塊,逐個進行加密;
3、依賴于:算法和密鑰;
安全性依賴于密鑰,而非算法;
缺陷:
1、密鑰過多;
2、密鑰分發不便;
非對稱加密:公鑰加密
分為私鑰和公鑰,私鑰僅給個人使用,公鑰是給所有人公開獲取的。常用算法:RSA、DSA(只能實現數據簽名)
私鑰:secret key,僅允許個人使用;
公鑰:public key,公開給所有獲取;
公鑰從私鑰中提取而來;使用公鑰加密的數據,只能使用與此公鑰配對兒的私鑰解密;反之亦然;
用處:
1.身份認證:私鑰擁有者用自己的私鑰加密的數據,只要用其公鑰能解密,即可認證其身份;
2. 密鑰交換:與被通信方通信之前,首先獲取到對方的公鑰,自己生成一個加密密碼,用對方的公鑰加密,并發送給對方;
3. 數據加密:但加密時間長,一般不用于數據加密
特性:
1、密鑰長度較大,例如512bits, 2048bits,4096bits
2、加密解密分別使用密鑰對兒中的密鑰相對進行;
3、常用于數據簽名和密鑰交換;
單向加密:提出數據的特征碼;
用于數據完整性校驗
特性:
1、定長輸出:無論原來的數據是多大級別,其加密結果長度一樣;
2、雪崩效應:原始數據微小改變,將會導致結果巨大變化;
3、不可逆:
算法:
MD5:128bits定長輸出;
SHA1:160bits定長輸出;
SHA256
SHA384
SHA512:
一次加密通信過程
發送者:
1、使用單向加密算法提取生成數據的特征碼;
2、使用自己的私鑰加密特征碼附加在數據后面;
3、生成一個用于對稱加密的臨時密鑰;
4、用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼;
5、使用接收方的公鑰加密此臨時密鑰,附加在對稱加密后的數據后方;
接收方:
1、使用自己的私鑰解密加密的臨時密鑰;從而獲得對稱密鑰;
2、使用對稱密鑰解密對稱加密的數據和私鑰加密的特征碼密文;從而獲得數據和特征碼密文;
3、使用發送方的公鑰解密特征碼密文,從而獲得從計算生成的特征碼;
4、使用與對方同樣的單向加密算法計算數據的特征碼,并與解密而來的進行比較;
數字證書:
CA:簽證機構
功用:保證通信方公鑰信息安全分發;
數字證書的格式(x.509 v3):
版本號(version)
序列號(serial number):CA用于惟一標識此證書;
簽名算法標志(Signature algorithm identifier)
發行者的名稱:即CA自己的名稱;
有效期:兩個日期,起始日期和終止日期;
證書主體名稱:證書擁有者自己的名字
證書主體公鑰信息:證書擁有者自己的公鑰;
發行商的惟一標識:
證書主體的惟一標識:
擴展信息:
簽名:CA對此證書的數字簽名;
證書通常有兩類用途:
用戶證書
主機證書(httpd)
撤消證書:當私鑰丟失時
PKI: Public KeyInfrastructure 公鑰基礎設施
簽證機構:CA
注冊機構:RA
證書吊銷列表:CRL
證書存取庫:
openssl的組成部分:
libcrypto:加密、解密庫文件;
libssl: ssl協議實現
openssl:多用途命令行工具,每種功能都使用專用的子命令來實現
openssl:
子命令分類:
標準命令
消息摘要命令
加密、解密相關的命令
加密文件(對稱加密):
工具:openssl enc, gpg
算法:des, 3des, aes, blowfish, twofish, idea, cast5
enc工具:
加密:
# openssl enc -e -加密算法 -a -salt -in 要加密的文件 -out 加密后輸出的文件
例: -e -des3 表示指定加密方法為des3 -a表示要用ASCII格式輸出你的內容 -salt 加雜質 -in 加密哪個文件 -out 加密后輸出成哪個文件
解密:
# openssl enc -d -解密算法 -a -salt -in要解密的文件 -out 解密后輸出的文件
例:opensslenc -d -des3 -a -salt -in fstab.drs3 -out fstab2
-d -des3 表示用什么算法解密 -a 表示要用ASCII格式輸出你的內容 -salt 加雜質 -in 解密哪個文件 -out 解密后輸出成哪個文件
單向加密:
算法:md5, sha1
工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum,sha512sum
# openssl dgst -加密算法 文件名
例:提取fstab文件的特征碼,會輸出到屏幕
生成用戶密碼:
# openssl passwd -1 -salt 8位隨機數[做為雜質]
例:-1 指定MD5算法
生成隨機數:
# openssl rand -hex[16進制]|-base64[文本格式] NUM
例:openssl rand -hex 4
隨機數生成器:
任何隨機數都是從這兩個中取得
random,urandom
熵池:保存硬件中斷產生的隨機數
/dev/random:僅從熵池中返回隨機數,當熵池中的隨機數耗盡時,取隨機數的進程將會被阻塞;
/dev/urandom:先從熵池中取隨機數,當熵池中的隨機耗盡時,就通過偽隨機數生成器生成隨機數;
生成密鑰對兒:
操作過程:生成私鑰,從私鑰中提取公鑰;
# openssl genrsa -out 生成的私鑰文件 密鑰長度[1024 20484096]
例:
注意:在bash命令行上放在小括號中執行的命令,其實是通過打開一個子shell進程進行的;
因為私鑰應該僅屬主可以查看,所以權限應為400或600
#(umask277; openssl genrsa -out 生成的私鑰文件密鑰長度[10242048 4096])
例:
從私鑰中手動提取公鑰:
# openssl rsa -in 生成的私鑰文件 -pubout
X.509 v3數字證書的格式:
證書撤銷鏈:
獲取證書的方法:
向RA注冊申請
建立私有CA:
OpenSSL
OpenCA
使用OpenSSL構建私有CA:
1、生成私鑰:私鑰用于簽發證書時,向證書添加數字簽名使用
2、生成自簽署證書:每個通信方都導入此證書至“受信任的證書頒發機構”
配置文件:/etc/pki/tls/openssl.cnf
工作目錄:/etc/pki/CA/
建立私有CA:
1、生成私鑰文件:/etc/pki/CA/private/cakey.pem
#(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
2、生成自簽證書
#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days #
-new: 生成新的證書簽署請求;
-key:私鑰文件路徑,用于提取公鑰;
-days N: 證書有效時長,單位為“天”;
-out:輸出文件保存位置;
-x509:直接輸出自簽署的證書文件,通常只有構建CA時才這么用;
3、提供輔助文件
# touch /etc/pki/CA/index.txt [即索引文件]
#echo 01 > /etc/pki/CA/serial
給節點發證書:
1、節點申請證書
在證書申請的主機上進行如下步驟:
(1) 生成私鑰;
# (umask 077; openssl genrsa -out 私鑰位數[1024])
(2) 生成證書簽署請求;openssl req -new key 私鑰 -out 請求.csr
# openssl req -new -key httpd.key -out httpd.csr-days #
注意:
(a) 其中的subject信息部分,要與CA的保持一致;
(b) Common Name要使用此主機在通信真實使用名字;
(3) 把請求發送給CA;
2、CA簽發證書
(1) 驗正請求者信息
(2) 簽署證書
# openssl ca -in 請求.csr -out 證書.crt -days N
(3) 把簽署好的證書發還給請求者
吊銷證書:
1、獲取吊銷證書的序列號;
# openssl x509 -in 證書.crt -noout-serial -subject
2、實現證書吊銷
(0) 確保與index.txt中的序列號一致
(1) 吊銷證書
# openssl ca -revoke 證書.crt
(2) 生成吊銷證書的編號
echo 數字[原有吊銷+1] >/etc/pkie/CA/crlnumber
echo 01 >/etc/pkie/CA/crlnumber
(3) 更新證書吊銷列表
# openssl crl -gencrl -out 正在使用的吊銷鏈文件.crl
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。