您好,登錄后才能下訂單哦!
數據安全服務的幾個方面:
1、認證 訪問控制 阻止對資源的未授權訪問 2、數據保密性 3、數據完整性 要保證發送方所發送的數據沒有被修改。。。 4、不可否認性
一、怎么驗證數據的完整性。也就怎么知道數據在傳輸的過程中沒有被修改過。這就要使用到單向加密算法,提取數據的指紋(特征碼)。
數據的傳輸雙方為:甲、乙
甲:在數據傳輸之前,提取該數據的“指紋”然后,把數據指紋附加在數據中一起發送給乙。
乙:接收到該數據以后,再提取數據的“指紋”。與附加在數據中的數據指紋作比較,如果一樣,
就證明,該數據在是完整的,在傳輸的過程中沒有被修改過。
例:
1、使用【md5sum】單向加密算法提取文件secure的數據指紋
[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新增空白行之后,該文件的數據指紋已經發生了翻天腹地的改變了。類似于“蝴蝶效應”,在單向加密算法中被稱為:”雪崩效應“。這也正是通過數據指紋可以檢驗數據的完整性的原因。
如果,在甲與乙的數據傳輸鏈路中,丙截獲了數據包。上面的方法也不能確保數據在傳輸的過程沒有被篡改過的。
通訊雙方:甲、乙
***: 丙
甲:在發送數據包給乙之前,先提取數據指紋并把它附加在數據中一起發送給乙
丙:在數據包的傳輸鏈路中,使用某工具截獲了甲發送給乙的數據包。修改數據內容,并重新生成數據
指紋,再發送給乙
乙:接收到數據包以后,提取數據指紋。做數據指紋比較,是相同的。乙就認為該數據在傳輸的過程中
沒有被篡改過。事實上,數據已經被篡改過。
原因:接收數據方乙,無從考證附加在數據包中的數據指紋是否是甲提取的。那么,乙怎么樣才可以驗證該數據指紋一定是甲提取的呢,還有數據指紋在傳輸的過程中沒有被修改過。這就使用到非對稱加密的功能了。
非對稱加密的密鑰是成對出現的,分為:公鑰(public key)和私鑰(secret key)。
這種加密方式有個特點:
公鑰是公開的,私鑰是自己保留的。 公鑰是從私鑰中提取而來的。 公鑰加密的數據,使用私鑰才能解密。 私鑰加密的數據,使用公鑰才能解密。
前提:
通訊雙方為:甲、乙
在數據交互之前,通訊雙方都各自生成密鑰對,都把公鑰給對方,私鑰自己保留。
數據傳輸:
甲:提取數據的指紋,并使用接收者乙的公稱加密數據指紋,然后再與數據一起發送給乙。
乙:在接收到數據之后,使用自己的私鑰對數據指紋進行解密,如果能夠解密成功,
證明提取數據指紋的一定是甲。再提取數據的指紋。做數據指紋比較,如果它們一樣的話。
就說明,該數據在傳輸的過程中沒有被篡改過。
如果,丙在數據的傳輸鏈路上截獲了數據,篡改了數據,重新提取數據的指紋。但是丙沒有數據發送者甲的私鑰,接收者乙使用甲的公鑰做數據指紋的制作者身份核實的時候就會發現數據指紋已經被修改了。這樣就能檢測數據在傳輸的過程中是否被修改過。即使某人截獲了數據,接收者也能正確無誤的判斷數據在傳輸的過程中是否被人篡改過。也就是數據的完整性。
但是,甲發送給乙的數據是明文傳輸的,只保證了數據的完整性,沒有滿足數據的保密性的要求。如果它們傳送的數據是機密性的內容,在數據鏈路上的竊聽者就會截獲到數據就可以看到數據包中的絕密內容。所以,我們的數據要加密之后,再傳送的。
二、數據的保密性是如何實現的呢?
數據的加密方式有兩種:
1、對稱加密 2、非對稱加密
非對稱加密的密鑰非常長,對數據加密的速度比對稱加密的速度慢得多。速度最少相差上百倍。如果web服務器傳輸的數據使用非對稱加密的話,會影響用戶的體驗效果的。所以對稱加密一般是用作數據加密的。
但是,使用單向加密數據,通訊雙方密鑰交換也是個問題,怎么辦呢?
非對稱加密能夠實現密鑰的交換,對稱加密加密數據的速度又很快,那么它們聯合起來就可以解決:數據的加密和密鑰的交換了。
甲:使用對稱加密方法,一起加密數據和數據指紋。再使用乙的公鑰加密對稱加密的密鑰。
把它們一起發送給乙。
乙:接收到數據包以后:
使用自己的私鑰解密對稱加密的密鑰(甲使用乙的公鑰加密了密鑰) -----> 獲取到了明文的對稱加
密的密鑰
使用密鑰解密,數據與數據指紋。 ---------------> 分別獲取到使用乙公鑰加密的數據指紋
和明文的數據
使用自己的私鑰解密數據指紋 -------------------> 獲取到明文的數據指紋
提取數據的數據指紋 -------------------> 做數據指紋的比較。
前面的甲乙雙方數據通訊中: 數據的保密性,使用對稱加密。 密鑰交換是依靠非對稱加密完成的。 數據的完整性,使用單向加密。 加密數據指紋、驗證數據指紋的制作者的身 份都是非對稱加密完成的。
都涉及到了數據通訊雙方的公鑰。假如通訊雙方在公鑰交換的過程中,丙在數據的鏈路中,截取到了乙發給甲的公鑰,丙自己生成密鑰對把自己的公鑰發給了甲。這樣丙就冒充乙與甲進行通訊。也就是所謂”中間人***“。那么甲怎么確保與自己通訊的一定是乙呢?或者說自己獲取到的公鑰一定是乙的呢?這就要使用到數據證書了。
三、如何辨別公鑰的真偽?
這就需要一個第三方機構,認證中心CA。做個證明,這個證明就是所謂的數據證書。這個數據證書包含了用戶的部分信息(如:主機名稱、郵件地址)和公鑰信息。甲通過查這個數據證書,就知道這個公鑰一定是乙的。這樣甲就可以放心地和乙進行數據交換了。
但是,甲怎么知道乙這個這個數據證書一定是合法的公證的CA機構頒發的呢?
這就需要身份驗證了,像公安局對***蓋章一樣,CA利用自己的私鑰在乙的數字證書加上數據簽名。甲利用CA的公鑰就可以辨別數據證書的真偽了。
Linux 中是使用:Openssl 能夠實現單向加密、對稱加密、非對稱加密、證書的發放制作以及簡單構建一個PKI(公鑰基礎設施),是一種開源的實現。
openssl它由三個主件:
1、libcrypto 這是一個加密庫,專門為其它軟件調用的加密功能的加密庫。 2、libssl 用于實現ssl協議的一個庫。很多網絡應用都可以使用ssl進行加密數據。如:web 服務器 Apache 3、命令行工具:openssl 可以實現數據的完整性校驗、加密、解密、證書的生成,還包括生成證書請求、頒發證書等等。
查看openssl工具的使用
[root@server ~]# openssl -h openssl:Error: '-h' is an invalid command. ##openssl 命令的子命令。 ## dgst 表示提取數據的特征碼(數據指紋)。 ## enc 表示使用對稱加密算法加密數據 ## getrsa 生成私鑰 ## req 從私鑰中提取公鑰,要求輸入公司的名稱、主機、郵箱、公司地址等。生成證書簽署請求 ## ca CA機構審核證書簽署請求后,使用該子命令發證 ## 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 ##所支持的提取數據指紋的算法 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.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。