數據加密和OpenSSL

數據加密:

 

SSL: Secure Socket Layer安全的套接字層

Openssl:sslLinux上實現的一個軟件,開源的

例:使用了ssl協議就不在是原來的協議了

http(80) --> ssl --> https (443)

wKiom1U45cfTjREwAAEm02RYRnQ773.jpg

NIST定義數據安全性的基本法則:

保密性:

數據保密性

隱私性

完整性:

數據完整性

系統完整性

可用性:

 

 

安全***:

被動***:監聽

主動***:僞裝、重放、消息篡改、拒絕服務

安全機制:

加密/解密、數字簽名、訪問控制、數據完整性、認證交換、流量填充、路由控制、公證

安全服務:

認證

訪問控制

數據保密性

連接保密性

無連接保密性

選擇域保密性

流量保密性

數據完整性

不可否認性

 

密碼算法和協議:

對稱加密

公鑰加密[非對稱加密 ]

單向加密

認證協議

 

對稱加密:加密和解密使用同一個密鑰;將一種數據流結合加密祕鑰輸出成另一種數據流;

 

常見算法:

DESData 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、不可逆:

 

算法:

MD5128bits定長輸出;

SHA1160bits定長輸出;

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:

子命令分類:

標準命令

消息摘要命令

加密、解密相關的命令

wKioL1U454GDsJztAAOLWKy9N7M042.jpg

 

 

加密文件(對稱加密):

工具: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 加密後輸出成哪個文件

wKiom1U45kPgj-OiAARzFHDqDns776.jpg

解密:

# 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文件的特徵碼,會輸出到屏幕

wKioL1U458HQ6KoHAABaJY5fGsE182.jpg

 

生成用戶密碼:

# openssl passwd -1 -salt 8位隨機數[做爲雜質]

例:-1 指定MD5算法

wKiom1U45obDnKS9AABb9T3FEY4404.jpg

 

生成隨機數:

# openssl rand -hex[16進制]|-base64[文本格式] NUM

例:openssl rand -hex 4

 

隨機數生成器:

任何隨機數都是從這兩個中取得  

random,urandom

 

熵池:保存硬件中斷產生的隨機數

 

/dev/random:僅從熵池中返回隨機數,當熵池中的隨機數耗盡時,取隨機數的進程將會被阻塞;

/dev/urandom:先從熵池中取隨機數,當熵池中的隨機耗盡時,就通過僞隨機數生成器生成隨機數;

 

生成密鑰對兒:

操作過程:生成私鑰,從私鑰中提取公鑰;

# openssl genrsa -out   生成的私鑰文件  密鑰長度[1024 20484096]

例:

wKioL1U46AfyOVW2AAa5rU5giUo272.jpg

注意:在bash命令行上放在小括號中執行的命令,其實是通過打開一個子shell進程進行的;

因爲私鑰應該僅屬主可以查看,所以權限應爲400600

#(umask277; openssl genrsa -out 生成的私鑰文件密鑰長度[10242048 4096])

例:

    wKioL1U46Cfx-MgiAADUAj7OI70840.jpg 

從私鑰中手動提取公鑰:

# openssl rsa -in  生成的私鑰文件 -pubout

wKiom1U45uaBGvd8AAEyE4BRGQE217.jpg

 

X.509 v3數字證書的格式:

wKioL1U46F6QOrq2AADgPs3GrSA508.jpg

證書撤銷鏈:

wKiom1U45xziz9a1AACk9xttoHQ620.jpg

 

 

獲取證書的方法:

RA註冊申請

建立私有CA

OpenSSL

OpenCA

 

使用OpenSSL構建私有CA

 

1、生成私鑰:私鑰用於簽發證書時,向證書添加數字簽名使用

2、生成自簽署證書:每個通信方都導入此證書至“受信任的證書頒發機構”

 

 

配置文件:/etc/pki/tls/openssl.cnf

wKioL1U46JeTDNHnAAI0mhD_S74434.jpg

wKiom1U451HCgCGoAAFuTx9z_xw847.jpg

工作目錄:/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時才這麼用;

wKioL1U46MiRhofbAALdl6BEQEU429.jpg

 

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 #

 

wKiom1U454ahiy8XAAM5s2BLB6k700.jpg

注意:

(a) 其中的subject信息部分,要與CA的保持一致;

(b) Common Name要使用此主機在通信真實使用名字;

 

(3) 把請求發送給CA

2CA簽發證書

(1) 驗正請求者信息

(2) 簽署證書

# openssl ca -in 請求.csr -out 證書.crt -days N

wKioL1U46QPgqpEtAALynnwRTTQ506.jpg

(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









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章