openssl與數(shù)據(jù)傳輸安全

數(shù)據(jù)安全服務(wù)的幾個方面:

公司主營業(yè)務(wù):網(wǎng)站制作、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出肅州免費做網(wǎng)站回饋大家。

    1、認(rèn)證  
          訪問控制 阻止對資源的未授權(quán)訪問
    2、數(shù)據(jù)保密性 
    3、數(shù)據(jù)完整性
         要保證發(fā)送方所發(fā)送的數(shù)據(jù)沒有被修改。。。
    4、不可否認(rèn)性

一、怎么驗證數(shù)據(jù)的完整性。也就怎么知道數(shù)據(jù)在傳輸?shù)倪^程中沒有被修改過。這就要使用到單向加密算法,提取數(shù)據(jù)的指紋(特征碼)。

數(shù)據(jù)的傳輸雙方為:甲、乙

甲:在數(shù)據(jù)傳輸之前,提取該數(shù)據(jù)的“指紋”然后,把數(shù)據(jù)指紋附加在數(shù)據(jù)中一起發(fā)送給乙。

乙:接收到該數(shù)據(jù)以后,再提取數(shù)據(jù)的“指紋”。與附加在數(shù)據(jù)中的數(shù)據(jù)指紋作比較,如果一樣,

    就證明,該數(shù)據(jù)在是完整的,在傳輸?shù)倪^程中沒有被修改過。

例:

1、使用【md5sum】單向加密算法提取文件secure的數(shù)據(jù)指紋

[root@server test]# md5sum secure
1f66b7c25cd47ba8dbe78ee4c28dfd36  secure

2、在secure文件中新增空白行

增加前

[root@server test]# tail -2 secure
Aug  2 09:48:27 stu13 sshd[2231]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Aug  2 09:48:33 stu13 su: pam_unix(su-l:session): session opened for user root by admin(uid=

使用重定向增加空白行

[root@server test]# echo "" >> secure
[root@server test]# tail -2 secure
Aug  2 09:48:33 stu13 su: pam_unix(su-l:session): session opened for user root by admin(uid=502)

3、再提取文件secure的指紋

[root@server test]# md5sum secure
ffc2cd02fa9e936c29302c802131e629  secure

說明:

    從上面的事例可以看出,文件secure新增空白行之后,該文件的數(shù)據(jù)指紋已經(jīng)發(fā)生了翻天腹地的改變了。類似于“蝴蝶效應(yīng)”,在單向加密算法中被稱為:”雪崩效應(yīng)“。這也正是通過數(shù)據(jù)指紋可以檢驗數(shù)據(jù)的完整性的原因。

如果,在甲與乙的數(shù)據(jù)傳輸鏈路中,丙截獲了數(shù)據(jù)包。上面的方法也不能確保數(shù)據(jù)在傳輸?shù)倪^程沒有被篡改過的。

通訊雙方:甲、乙

***: 丙

甲:在發(fā)送數(shù)據(jù)包給乙之前,先提取數(shù)據(jù)指紋并把它附加在數(shù)據(jù)中一起發(fā)送給乙

丙:在數(shù)據(jù)包的傳輸鏈路中,使用某工具截獲了甲發(fā)送給乙的數(shù)據(jù)包。修改數(shù)據(jù)內(nèi)容,并重新生成數(shù)據(jù)

     指紋,再發(fā)送給乙

乙:接收到數(shù)據(jù)包以后,提取數(shù)據(jù)指紋。做數(shù)據(jù)指紋比較,是相同的。乙就認(rèn)為該數(shù)據(jù)在傳輸?shù)倪^程中

    沒有被篡改過。事實上,數(shù)據(jù)已經(jīng)被篡改過。

    原因:接收數(shù)據(jù)方乙,無從考證附加在數(shù)據(jù)包中的數(shù)據(jù)指紋是否是甲提取的。那么,乙怎么樣才可以驗證該數(shù)據(jù)指紋一定是甲提取的呢,還有數(shù)據(jù)指紋在傳輸?shù)倪^程中沒有被修改過。這就使用到非對稱加密的功能了。

非對稱加密的密鑰是成對出現(xiàn)的,分為:公鑰(public key)和私鑰(secret key)。

這種加密方式有個特點:

                   公鑰是公開的,私鑰是自己保留的。
		   公鑰是從私鑰中提取而來的。
		   公鑰加密的數(shù)據(jù),使用私鑰才能解密。
		   私鑰加密的數(shù)據(jù),使用公鑰才能解密。

前提:

通訊雙方為:甲、乙

在數(shù)據(jù)交互之前,通訊雙方都各自生成密鑰對,都把公鑰給對方,私鑰自己保留。

數(shù)據(jù)傳輸:

甲:提取數(shù)據(jù)的指紋,并使用接收者乙的公稱加密數(shù)據(jù)指紋,然后再與數(shù)據(jù)一起發(fā)送給乙。

乙:在接收到數(shù)據(jù)之后,使用自己的私鑰對數(shù)據(jù)指紋進行解密,如果能夠解密成功,

    證明提取數(shù)據(jù)指紋的一定是甲。再提取數(shù)據(jù)的指紋。做數(shù)據(jù)指紋比較,如果它們一樣的話。

    就說明,該數(shù)據(jù)在傳輸?shù)倪^程中沒有被篡改過。

如果,丙在數(shù)據(jù)的傳輸鏈路上截獲了數(shù)據(jù),篡改了數(shù)據(jù),重新提取數(shù)據(jù)的指紋。但是丙沒有數(shù)據(jù)發(fā)送者甲的私鑰,接收者乙使用甲的公鑰做數(shù)據(jù)指紋的制作者身份核實的時候就會發(fā)現(xiàn)數(shù)據(jù)指紋已經(jīng)被修改了。這樣就能檢測數(shù)據(jù)在傳輸?shù)倪^程中是否被修改過。即使某人截獲了數(shù)據(jù),接收者也能正確無誤的判斷數(shù)據(jù)在傳輸?shù)倪^程中是否被人篡改過。也就是數(shù)據(jù)的完整性。

   但是,甲發(fā)送給乙的數(shù)據(jù)是明文傳輸?shù)?,只保證了數(shù)據(jù)的完整性,沒有滿足數(shù)據(jù)的保密性的要求。如果它們傳送的數(shù)據(jù)是機密性的內(nèi)容,在數(shù)據(jù)鏈路上的竊聽者就會截獲到數(shù)據(jù)就可以看到數(shù)據(jù)包中的絕密內(nèi)容。所以,我們的數(shù)據(jù)要加密之后,再傳送的。

二、數(shù)據(jù)的保密性是如何實現(xiàn)的呢?   

數(shù)據(jù)的加密方式有兩種:

1、對稱加密    
2、非對稱加密

     非對稱加密的密鑰非常長,對數(shù)據(jù)加密的速度比對稱加密的速度慢得多。速度最少相差上百倍。如果web服務(wù)器傳輸?shù)臄?shù)據(jù)使用非對稱加密的話,會影響用戶的體驗效果的。所以對稱加密一般是用作數(shù)據(jù)加密的。

     但是,使用單向加密數(shù)據(jù),通訊雙方密鑰交換也是個問題,怎么辦呢?

非對稱加密能夠?qū)崿F(xiàn)密鑰的交換,對稱加密加密數(shù)據(jù)的速度又很快,那么它們聯(lián)合起來就可以解決:數(shù)據(jù)的加密和密鑰的交換了。

甲:使用對稱加密方法,一起加密數(shù)據(jù)和數(shù)據(jù)指紋。再使用乙的公鑰加密對稱加密的密鑰。

     把它們一起發(fā)送給乙。

乙:接收到數(shù)據(jù)包以后:

     使用自己的私鑰解密對稱加密的密鑰(甲使用乙的公鑰加密了密鑰) -----> 獲取到了明文的對稱加

                                                                       密的密鑰

     使用密鑰解密,數(shù)據(jù)與數(shù)據(jù)指紋。 --------------->    分別獲取到使用乙公鑰加密的數(shù)據(jù)指紋

                                                         和明文的數(shù)據(jù)

    使用自己的私鑰解密數(shù)據(jù)指紋 ------------------->      獲取到明文的數(shù)據(jù)指紋

    提取數(shù)據(jù)的數(shù)據(jù)指紋        ------------------->       做數(shù)據(jù)指紋的比較。

前面的甲乙雙方數(shù)據(jù)通訊中:
         數(shù)據(jù)的保密性,使用對稱加密。              密鑰交換是依靠非對稱加密完成的。
         數(shù)據(jù)的完整性,使用單向加密。              加密數(shù)據(jù)指紋、驗證數(shù)據(jù)指紋的制作者的身
                                                    份都是非對稱加密完成的。

    都涉及到了數(shù)據(jù)通訊雙方的公鑰。假如通訊雙方在公鑰交換的過程中,丙在數(shù)據(jù)的鏈路中,截取到了乙發(fā)給甲的公鑰,丙自己生成密鑰對把自己的公鑰發(fā)給了甲。這樣丙就冒充乙與甲進行通訊。也就是所謂”中間人***“。那么甲怎么確保與自己通訊的一定是乙呢?或者說自己獲取到的公鑰一定是乙的呢?這就要使用到數(shù)據(jù)證書了。

三、如何辨別公鑰的真?zhèn)危?/strong>

    這就需要一個第三方機構(gòu),認(rèn)證中心CA。做個證明,這個證明就是所謂的數(shù)據(jù)證書。這個數(shù)據(jù)證書包含了用戶的部分信息(如:主機名稱、郵件地址)和公鑰信息。甲通過查這個數(shù)據(jù)證書,就知道這個公鑰一定是乙的。這樣甲就可以放心地和乙進行數(shù)據(jù)交換了。

    但是,甲怎么知道乙這個這個數(shù)據(jù)證書一定是合法的公證的CA機構(gòu)頒發(fā)的呢?

這就需要身份驗證了,像公安局對***蓋章一樣,CA利用自己的私鑰在乙的數(shù)字證書加上數(shù)據(jù)簽名。甲利用CA的公鑰就可以辨別數(shù)據(jù)證書的真?zhèn)瘟恕?/p>

Linux 中是使用:Openssl 能夠?qū)崿F(xiàn)單向加密、對稱加密、非對稱加密、證書的發(fā)放制作以及簡單構(gòu)建一個PKI(公鑰基礎(chǔ)設(shè)施),是一種開源的實現(xiàn)。

openssl它由三個主件:

1、libcrypto
    這是一個加密庫,專門為其它軟件調(diào)用的加密功能的加密庫。
2、libssl
    用于實現(xiàn)ssl協(xié)議的一個庫。很多網(wǎng)絡(luò)應(yīng)用都可以使用ssl進行加密數(shù)據(jù)。如:web 服務(wù)器 Apache
3、命令行工具:openssl
    可以實現(xiàn)數(shù)據(jù)的完整性校驗、加密、解密、證書的生成,還包括生成證書請求、頒發(fā)證書等等。

查看openssl工具的使用

[root@server ~]# openssl -h
openssl:Error: '-h' is an invalid command.

##openssl  命令的子命令。
## dgst    表示提取數(shù)據(jù)的特征碼(數(shù)據(jù)指紋)。
## enc     表示使用對稱加密算法加密數(shù)據(jù)
## getrsa  生成私鑰
## req     從私鑰中提取公鑰,要求輸入公司的名稱、主機、郵箱、公司地址等。生成證書簽署請求
## ca      CA機構(gòu)審核證書簽署請求后,使用該子命令發(fā)證
## passwd   加密明文的密碼
Standard commands
asn1parse         ca                ciphers           cms
crl               crl2pkcs7         dgst              dh
dhparam           dsa               dsaparam          enc
engine            errstr            gendh             gendsa
genpkey           genrsa            nseq              ocsp
passwd            pkcs12            pkcs7             pkcs8
pkey              pkeyparam         pkeyutl           prime
rand              req               rsa               rsautl
s_client          s_server          s_time            sess_id
smime             speed             spkac             ts
verify            version           x509

##所支持的提取數(shù)據(jù)指紋的算法
Message Digest commands (see the `dgst' command for more details)
md2               md4               md5               rmd160
sha               sha1

##所支持的對稱加密的算法
Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb
aes-256-cbc       aes-256-ecb       base64            bf
bf-cbc            bf-cfb            bf-ecb            bf-ofb
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb
des               des-cbc           des-cfb           des-ecb
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb
des-ofb           des3              desx              rc2
rc2-40-cbc        rc2-64-cbc        rc2-cbc           rc2-cfb
rc2-ecb           rc2-ofb           rc4               rc4-40
seed              seed-cbc          seed-cfb          seed-ecb
seed-ofb          zlib

如果使用openssl進行對稱加密的:

[root@server ~]# openssl enc -des3 -salt -a -in fstab -out fstab.des3
enter des-ede3-cbc encryption password:     -----> 輸入密碼 
Verifying - enter des-ede3-cbc encryption password:

查看加密后的文件類型

[root@server ~]# file fstab.des3 ----> 文件類型跟加密前一樣的。但是打開是亂碼。
fstab.des3: ASCII text

解密fatab.des3

[root@server ~]# openssl enc -d -des3 -salt -a -in fstab.des3 -out fstab
enter des-ede3-cbc decryption password:  --------> 輸入密碼

單向加密 使用命令dgst

[root@server ~]# openssl dgst -md5 fstab
MD5(fstab)= 53b4962a89e6eb77a83cb7592ee7f783

加密明文密碼

[root@server ~]# openssl passwd -1  
Password:    ---> 輸入明文的密碼
Verifying - Password:
$1$CgFeVKbO$8.KGlawM.3vHADcOS1VZT.

網(wǎng)頁名稱:openssl與數(shù)據(jù)傳輸安全
轉(zhuǎn)載來于:http://muchs.cn/article8/ippeop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、域名注冊自適應(yīng)網(wǎng)站、網(wǎng)站制作網(wǎng)站內(nèi)鏈、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)