加密與安全傳輸

1、加密算法

一、對稱加密

概念:加密和解密使用同一個祕鑰算法

算法:DES、3DES、AES、Blowfish、Twofish、IDEA、RC六、CAST5等數據庫

優勢:效率高;將數據分割成固定大小的塊,逐個進行加密centos

缺點:每個通訊就須要一個祕鑰;祕鑰傳遞不安全;沒法肯定數據來源安全

二、非對稱加密

公鑰與私鑰:公鑰是公開給全部人的;私鑰是隻有本身知道;經過私鑰能夠推算出公鑰,可是經過私鑰沒法退出公鑰;使用公鑰加密必須使用私鑰解密,或者使用私鑰加密必須使用公鑰解密;公私鑰必須成對出現服務器

算法:RSA、DSA、ELGamalapp

優缺點:能夠實現數字簽名來驗證數據來源;能夠安全的交換對稱祕鑰;能夠實現時間加密,可是對應大的數據解密時效率過低,適合加密少許數據dom

三、單向散列(hash)

特性:工具

1)雪崩效應:數據不一樣,摘要必定大不一樣學習

2)單向:不可反推數據編碼

3)摘要長度固定大小

算法:md5:12八、sha1:160、sha22四、sha25六、sha38四、sha512

功能:用來驗證數據的完整性

四、祕鑰交換算法(DH)

1)A和B協商生成公開的整數a,大素數p

2)A:生成隱私數據 :x(x<p),計算得出 a^x%p,發送給B;B:生成隱私數據 :y(y<p),計算得出 a^y%p,發送給A

3)A:計算得出 [(a^y%p)^x] %p = a^xy%p,生成爲密鑰;B:計算得出 [(a^x%p)^y] %p = a^xy%p,生成爲密鑰

五、在安全通訊過程當中:

愛麗絲:

1)原數據經過hash算法得出一個摘要;

2)用愛麗絲的私鑰加密摘要;

3)將加密的摘要和原數據一塊使用對稱祕鑰加密;

4)再用鮑勃的公鑰將對稱祕鑰加密;

5)密文數據發送————>

鮑勃:

1)<————接受密文數據;

2)使用鮑勃的私鑰解密對稱祕鑰;

3)使用對稱祕鑰解密原數據和加密後的摘要;

4)使用愛麗絲的公鑰解密摘要;

5)計算原數據的hash摘要並和解密後的摘要進行比較,從而肯定原始數據的完整性。

2、傳輸層安全協議TLS

TLSTransport Layer Security及其前身安全套接層SSL是一種安全協議,目的是爲互聯網通訊,提供安全及數據完整性保障。

特性:能夠保證數據傳輸的機密性、完整性,可實現認證,重放保護(重放:由中間人捕獲到加密的數據再次傳輸到目的服務器,有可能會影響帳戶的安全)等功能。

TLS協議分倆個階段:握手階段(協商階段):客戶端和服務器端認證對方身份(依賴於PKI體系,利用數字證書進行身份認證),並協商通訊中使用的安全參數、密碼套件以及主密鑰。後續通訊使用的全部密鑰都是經過MasterSecret生成。應用階段:在握手階段完成後進入,在應用階段通訊雙方使用握手階段協商好的密鑰進行安全通訊。

  1. Handshake協議:包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)、密鑰交換
  2. ChangeCipherSpec 協議:一條消息代表握手協議已經完成
  3. Alert 協議:對握手協議中一些異常的錯誤提醒,分爲fatal和warning兩個級別,
  4. atal類型錯誤會直接中斷SSL連接,而warning級別的錯誤SSL連接仍可繼續,只是會給出錯誤警告
  5. Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等
  6. HTTPS 協議:就是「HTTP 協議」和「SSL/TLS 協議」的組合。HTTP over SSL」或「HTTP over TLS」,對http協議的文本數據進行加密處理後,成爲二進制形式傳輸

3、CA和證書

數字證書認證機構(Certificate Authority,縮寫爲CA),也稱爲電子商務認證中心、電子商務認證受權機構,是負責發放和管理數字證書的權威機構,並做爲電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。

PKI:公開密鑰基礎建設,包括簽證機構(CA)、註冊機構(RA)、證書吊銷列表(CRL)以及證書存取庫。

X.509:定義了證書的結構以及認證協議標準,包括版本號、序列號、簽名算法、頒發者、有效期限、主體名稱、主體公鑰、CRL分發點、擴展信息、發行者簽名等信息

ca證書頒發機構分根ca和子ca,根ca的證書爲自簽證書,而後再爲子ca頒發證書;用戶只要信任了根ca的證書則就是信任了子ca頒發的證書。

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

####################################################################
[ ca ]
default_ca      = CA_default            #默認CA,在一臺服務器能夠搭建多個CA
[ CA_default ]                #默認CA的配置
dir             = /etc/pki/CA           #工做目錄
certs           = $dir/certs            #存放證書
crl_dir         = $dir/crl              #存放證書吊銷列表
database        = $dir/index.txt        #數據庫索引文件,須要手動建立
new_certs_dir   = $dir/newcerts         #新證書的路徑
certificate     = $dir/cacert.pem       #CA的證書文件
serial          = $dir/serial           #下一個要頒發的證書序列號,16進制
crlnumber       = $dir/crlnumber        #下一個要吊銷的證書序列號
crl             = $dir/crl.pem          #證書吊銷列表
private_key     = $dir/private/cakey.pem#CA的私鑰文件
RANDFILE        = $dir/private/.rand    #生成私鑰須要用到的隨機數文件
default_days = 365 #默認頒發證書的有效期 default_crl_days= 30 #30天發佈一次證書吊銷列表 default_md = sha256 # preserve = no # policy = policy_match      #策略匹配,定義客戶端和服務端申請證書時的信息匹配策略 [ policy_match ] countryName = match      #必須匹配 stateOrProvinceName = match organizationName = match organizationalUnitName = optional   #不要求必須匹配 commonName = supplied    #必須提供 emailAddress = optional

示例:搭建一個私有CA

服務端搭建:

一、生成CA的私鑰

# (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

二、生成自簽證書

# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:test
Organizational Unit Name (eg, section) []:it
Common Name (eg, your name or your server's hostname) []:ca.test.com 
Email Address []:
  • -new: 生成新證書籤署請求
  • -x509: 專用於CA生成自簽證書
  • -key: 生成請求時用到的私鑰文件
  • -days n:證書的有效期限
  • -out /PATH/TO/SOMECERTFILE: 證書的保存路徑

三、建立必要的文件

# touch /etc/pki/CA/index.txt
# echo 01 >/etc/pki/CA/serial
# openssl x509 -in /etc/pki/CA/cacert.pem -noout -text [-subject | -issuer | -dates]  查看證書信息

客戶端生成註冊申請請求:

一、生成私鑰

# (umask 077; openssl genrsa -out app.key 1024)

二、生成簽署請求

# openssl req -new -key app.key -out app.csr
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:test
Organizational Unit Name (eg, section) []:it
Common Name (eg, your name or your server's hostname) []:app.test.com
Email Address []:
A challenge password []:
An optional company name []:

三、將簽署請求發送給CA

# scp app.csr 192.168.0.7:/etc/pki/CA/

服務器端簽署:

一、簽署頒發

# openssl ca -in /etc/pki/CA/app.csr -out /etc/pki/CA/certs/app.crt -days 100

二、將簽署後的證書發回客戶端

# scp /etc/pki/CA/certs/app.crt 192.168.0.6:/root

CA吊銷證書的管理

生成吊銷列表
[root@centos7 CA]# echo 01 >/etc/pki/CA/crlnumber
[root@centos7 CA]# openssl ca -gencrl -out crl.pem

查看吊銷列表
[root@centos7 CA]# openssl crl -in crl.pem -noout -text

查看證書狀態
[root@centos7 CA]# cat index.txt
V(正常證書)       180826054533Z           01      unknown /C=CN/ST=BJ/O=test/OU=it/CN=www.test.com
[root@centos7 CA]# openssl ca -status 01
Using configuration from /etc/pki/tls/openssl.cnf
01=Valid (V)(正常證書)

吊銷證書
[root@centos7 CA]# openssl ca -revoke newcerts/01.pem 
[root@centos7 CA]# cat index.txt
R  (已被吊銷)     180826054533Z   180518060712Z   01      unknown /C=CN/ST=BJ/O=test/OU=it/CN=www.test.com

4、管理工具

md5sum、sha1sum、sha224sum、sha256sum 、sha384sum 、sha512sum:計算散列值

  • --check:檢查md5值是否正確

gpg:GunPG

  • -c file:加密文件
  • -o file -d file.gpg:解密文件
  • --gen-key:生成非對稱祕鑰
  • --list-keys:查看已有公鑰
  • -e -r keyname file:使用指定公鑰加密文件
  • --import filename.pubkey:導入公鑰
  • -a --export -o filename.pubkey:導出公鑰
  • --delete-secret-keys keyname:刪除私鑰
  • --delete-keys keyname:刪除公鑰
# rngd -r /dev/urandom  #提供隨機數來生成祕鑰

openssl多用途的工具集

組件:

openssl: 多用途的命令行工具,包openssl

libcrypto: 加密算法庫,包openssl-libs

libssl:加密模塊應用庫,實現了ssl及tls,包nss

子命令:

enc

# openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher  使用-des3加密算法對稱加密testfile文件
# openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile 解密
  • -e 加密
  • -d 解密
  • -des3 | -des | -des 加密算法
  • -a 表示使用base64編碼
  • 編碼:base64 === a-z A-Z 0-9 / + 64個字符
  • -salt 加鹽

dgst  -md5 | -hex  單向加密

passwd -1 -salt  生成MD5加密密碼

rand -base64 | -hex # 生成隨機數

genrsa:

# (umask 066; openssl genrsa -out test.key -des 2048)  生成私鑰而且使用des加密

rsa:

# openssl rsa -in test.key -out test2.key  將加密的私鑰解密
# openssl rsa -in test2.key -pubout -out test2.key.pub  從私鑰中提取對應的公鑰

 

我的學習筆記  記錄於22:16

相關文章
相關標籤/搜索