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