中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
OpenSSL之安全通訊基礎
安全特性:
任何一套安全的通訊系統(tǒng)在數(shù)據(jù)傳輸過程中至少具備以下三個特性:
1
2
3
1,驗證來源的合法性
2,保證數(shù)據(jù)的完整性
3,保證數(shù)據(jù)的私密性
對稱加密:
對數(shù)據(jù)的私密性要求,我們可以通過對數(shù)據(jù)進行加解密來完成。如下圖所示:
數(shù)據(jù)加密(encryption):使用一個密鑰(key)并通過一種加密算法將明文(plaintext)
加密成密文(ciphertext)。
數(shù)據(jù)解密(decryption):是數(shù)據(jù)加密的逆向過程。通過密鑰將密文解密成明文。
注:圖中加解密的Key可以是同一個密鑰,也可以是不同的密鑰。
根據(jù)加解密Key的不同將加密體系分為兩種:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1,對稱加密
特點:使用同一個密鑰進行加解密
優(yōu)點: 加密速度快
缺點:秘鑰傳遞問題
常見的對稱加密算法有:DES,3DES,AES等
2,非對稱加密
特點:數(shù)據(jù)傳輸雙方事先都必須產(chǎn)生一對密鑰
一個稱為公鑰
一個稱為私鑰
公鑰加密的數(shù)據(jù),只有對應的私鑰才能解密
私鑰加密的數(shù)據(jù),只有對應的公鑰才能解密
優(yōu)點:解決了秘鑰傳遞問題
缺點:加密速度慢
常見的非對稱加密算法有:RSA,DH等
對稱加密圖例:
圖注: 發(fā)送方利用自己的密鑰(Key)對明文數(shù)據(jù)進行加密;
接收方必須得到發(fā)送方的密鑰(Key);
接收方利用發(fā)送方的密鑰對密文進行解密;
如果密鑰在傳輸過程中被第三方獲悉,那此次加密的私密性得不得保障。
對稱加密openssl實現(xiàn):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
加密數(shù)據(jù):
格式:openssl enc  -ciphername -k password -in file1 -out file2
說明:
enc              加密關鍵字
-ciphername      指定加密算法
-k               指定口令關鍵字
password         口令
-in              指定輸入文件(file1)
-out             指定輸出文件(file2)
解密數(shù)據(jù):
格式:openssl enc -ciphername -k password -d -in file -out file2
說明:-d              解密
其他參數(shù)同上
openssl支持的加密算法:DES,DES3,RC2,RC5,AES256等
實例:
加密:
openssl enc -des3 -k 123456 -in test.txt -out test.bin
解密:
openssl enc -des3 -k 123456 -d -in test.bin -out test1.txt
非對稱加密:
非對稱加密圖例:
圖注:首先通訊雙方都產(chǎn)生一對密鑰;
數(shù)據(jù)發(fā)送方得到數(shù)據(jù)接收方的公鑰;
數(shù)據(jù)發(fā)送方利用數(shù)據(jù)接收方的公鑰對數(shù)據(jù)進行加密;
數(shù)據(jù)接收方利用自己的私鑰對加密數(shù)據(jù)進行解密;
數(shù)據(jù)接收方最終得到明文的數(shù)據(jù)。
任何一方得到接收方的公鑰,也解密不了傳輸中的數(shù)據(jù)。
非對稱加密openssl實現(xiàn):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
產(chǎn)生密鑰對:
格式:openssl genrsa -out file 1024
openssl rsa -in file -pubout
說明:
genrsa         使用rsa算法產(chǎn)生密鑰
-out           指定輸出文件
1024           指定算法強度 單位bit
rsa            使用rsa算法產(chǎn)生密鑰
-in            指定輸入文件
-pubout        從私鑰中提取公鑰
使用公鑰加密數(shù)據(jù):
格式: openssl rsautl -in file -out file -inkey file -pubin -encrypt
說明:
rsautl        使用rsautl對文件進行加密
-in           指定輸入文件(需要被加密的文件)
-inkey        指定輸入密鑰文件
-pubin        指定-inkey輸入的是一個公鑰文件
-encrpt       表示加密
使用私鑰解密:
格式: openssl rsautl -in file -out file -inkey file -decrypt
說明:
-inkey        指定輸入密鑰文件(這里應該是私鑰文件)
-decrypt      表示解密
其他同上
實例:
產(chǎn)生密鑰對:
openssl genrsa -out priv.key 1024             //產(chǎn)生私鑰
openssl rsa -in priv.key -pubout > pub.key    //提取公鑰
使用公鑰加密數(shù)據(jù):
openssl rsautl -in test.txt -out test.bin -inkey pub.key -pubin -encrypt
使用私有解密:
openssl rsautl -in test.bin -out test2.txt -inkey priv.key -decrypt
總結:雖然非對稱加密體系實現(xiàn)了密鑰交換的問題,但其本身算法實現(xiàn)復雜導致其加密速度慢。
于是在使用中,人們一般將對稱加密和非對稱加密二者結合起來使用。
對稱與非對稱結合:
混合使用之加密圖解:
圖注:首先發(fā)送方利用一個隨機數(shù)產(chǎn)生了一個對稱密鑰(session key);
發(fā)送方利用這個session key對數(shù)據(jù)進行加密;
發(fā)送方拿著接收方的公鑰對這個session key進行加密;
發(fā)送方將加密好的數(shù)據(jù)和加密好的session key發(fā)送給接收方;
這種方法既保證了加密速度,又保證了加密密鑰的安全傳送。
混合使用之解密圖解:
圖注:接收方接收到加密的數(shù)據(jù)和加密的session key;
接收方利用自己的私鑰解密加密的session key;
接收方再利用已解密的session key來解密加密的數(shù)據(jù)文件;
接收方最終得到了明文的數(shù)據(jù)。
總結:雖然混合使用對稱加密和非對稱加密之后,既保證了加密速度,又保證了加密密鑰的安全傳送。
但是始終沒辦法保證來源的合法性。這時候就需要用到數(shù)字簽名(Digital Signature)。
數(shù)字簽名:
數(shù)字簽名圖解:
圖注:發(fā)送方使用自己的私鑰加密數(shù)據(jù)文件(數(shù)字簽名);
接收方接收到這個數(shù)字簽名文件;
接收方使用發(fā)送方的公鑰來解密這個數(shù)字簽名文件;
如果能夠解開,則表明這個文件是發(fā)送方發(fā)送過來的;
否則為偽造的第三方發(fā)送過來的。
對于發(fā)送方來講這種簽名有不可否認性。
數(shù)字簽名openssl實現(xiàn):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
產(chǎn)生密鑰對:
格式:openssl genrsa -out file 1024
openssl rsa -in file -pubout
使用私鑰完成簽名:
格式:openssl rsautl -in file -out file -inkey file -sign
說明:
-inkey 后面跟私鑰
-sign  表示簽名
使用公鑰校驗簽名:
格式:openssl rsautl -in file -out file -inkey file -pubin -verify
-inkey  后面跟公鑰
-verify 表示校驗簽名
實例:
簽名:
openssl rsautl -in test.txt -out test.sig -inkey priv.key -sign
校驗簽名:
openssl rsautl -in test.sig -out test3.txt -inkey pub.key -pubin -verify
總結:非對稱加密中,公鑰加密,私鑰解密。主要用來進行數(shù)據(jù)加密。
私鑰加密,公鑰解密。主要用來進行數(shù)字簽名和認證。
到目前為止,解決了數(shù)據(jù)傳輸過程中數(shù)據(jù)私密性和來源合法性的問題。但是數(shù)據(jù)的完整性有靠什么來保障呢?這就要利用散列函數(shù)來實現(xiàn)。
散列函數(shù):
散列函數(shù)的特點:
1,輸入可以是任意長度 但輸出是定長的。MD5 128bits  SHA1 160bits
2,加密過程不可逆,無法根據(jù)特征碼還原原來的數(shù)據(jù)
3,雪崩效應  輸入的一點點改變 會導致結果發(fā)生很大改變
4,輸入一致,輸出必然相同
注:不同的輸入,可能會有同樣的輸出。但是概率很小 并不代表沒有這種可能
常見的散列函數(shù)(Hash函數(shù)):
1,MD5
2,SHA1
散列函數(shù)openssl實現(xiàn):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
產(chǎn)生一個文件的MD5值:
格式: openssl dgst -md5 file
md5sum file
產(chǎn)生一個文件的SHA1值:
openssl dgst -sha1 file
sha1sum file
實例:
openssl dgst -md5 openssl-0.9.8h.tar.gz
md5sum  openssl-0.9.8h.tar.gz
openssl dgst -sha1 openssl-0.9.8h.tar.gz
sha1sum openssl-0.9.8h.tar.gz
總結:散列函數(shù)可以根據(jù)任意長度的輸入,生成定長的摘要信息。這樣可以用來校驗文件的完整性。
防止數(shù)據(jù)在傳輸過程中被第三方篡改。
安全數(shù)字簽名:
安全數(shù)字簽名圖解:
圖注:發(fā)送方利用散列函數(shù)對明文數(shù)據(jù)進行Hash得到摘要信息;
發(fā)送方使用自己的私鑰對摘要信息進行簽名;
接收方利用發(fā)送方的公鑰來驗證來源的合法性;
接收方利用摘要信息來驗證數(shù)據(jù)的完整性;
注:
當源文件很大,如果對源文件進行簽名,就會比較耗費時間。
如果只對摘要信息進行簽名,速度比較快,因為它是定長的且位數(shù)不長。
中間人攻擊:
利用散列函數(shù)我們可以用來保證數(shù)據(jù)的完整性。使用對稱加密和非對稱加密體系來完成數(shù)據(jù)的機密性和驗證來源的合法性。但驗證來源的合法性其實存在一個缺陷,就是怎么保證公鑰的合法性?我們來看下圖中的例子:
圖注:假設Alice想向Bob發(fā)送一個文件。
首先Alice得得到Bob的公鑰;
但是很不幸,Alice得到的是Hacker使用自己的公鑰偽裝成Bob的公鑰;
于是Alice拿著這個偽裝的公鑰對文件進行加密,并發(fā)送給Bob;
但不幸的事情又發(fā)生了,這個加密文件被Hacker截獲;
于是,Hacker得到了文件的內(nèi)容;
Hacker對原文件可能進行篡改/也可能不會篡改;
這樣看Hacker的目的;
于是Hacker利用Bob真正的公鑰對文件進行加密;
然后發(fā)送給Bob;
整個過程對Bob和Alice來說全然無知。
通過上圖,我們看出要想實現(xiàn)對公鑰來源合法性進行驗證。就必須得引入另一個角色。首先數(shù)據(jù)通訊雙方都得信任這個角色。也就是這個角色具有權威性。其次,這個角色可以幫助通訊雙方安全完成公鑰交換。我們通常把這樣一個角色或機構稱為CA。
引入CA:
利用CA完成整個安全通訊過程:
圖注:
1,首先必須保證CA為數(shù)據(jù)通訊雙方都認可的機構;
2,數(shù)據(jù)通訊雙方向CA提交認證申請。里面包含各自的公鑰;
3,CA分別對通訊雙方的合法性進行驗證;
如果驗證通過,CA則利用自己的私鑰分別對兩份申請文件
進行加密(數(shù)字簽名)。最終產(chǎn)生一個由CA完成數(shù)字簽名的文件。
我們把這個文件稱為數(shù)字證書。
4,通訊雙方各自下載由CA簽發(fā)的數(shù)字證書;
5,假設Alice想要發(fā)送一個文件給Bob;
6,首先Alice得向Bob請求得到Bob的數(shù)字證書;
7,Alice利用CA的公鑰完成對Bob數(shù)字證書合法性認證,
并且從證書中得到Bob的公鑰。
8,Alice利用散列函數(shù)對數(shù)據(jù)進行Hash產(chǎn)生摘要信息;
并通過程序隨機生成一個session key,
利用這個session key對數(shù)據(jù)進行加密;
Alice再利用Bob的公鑰對這個session key進行加密;
9,Alice將自己的證書和加密后的文件(包含session key)一并發(fā)送給Bob;
10,Bob接收到Alice發(fā)來的文件后,先用CA的公鑰來驗證文件來源的合法性。
如果合法,則利用自己的私鑰對session key進行解密,
再利用session key對數(shù)據(jù)進行解密,得到明文數(shù)據(jù)。
然后,利用散列函數(shù)對數(shù)據(jù)進行Hash得到摘要信息。
將自己得到的摘要信息和Alice發(fā)過來的摘要信息進行比對,
如果一致,則表明數(shù)據(jù)沒有被篡改。安全通訊完成。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
利用openssl進行RSA加密解密
openssl rsa 加密
App安全與加密
利用openssl對文件進行加密解密
Linux下利用openssl對文件進行加密和解密
如何用 openssl 生成RSA雙密匙;簽名證書;加密文件郵件
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服