溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Openssl及加密解密(一)數(shù)據(jù)加密解密及CA原理

發(fā)布時間:2020-06-11 19:13:22 來源:網(wǎng)絡(luò) 閱讀:1452 作者:linuxjavachen 欄目:安全技術(shù)

明文:plaintxt或者cleartext,也就是沒有加密的,直接可以看懂的內(nèi)容。密文就是通過特殊方式處理過的內(nèi)容,無法直接看懂。

常見的加密方式:

  • 對稱加密

  • 公鑰加密

  • 單向加密

加密原理:將原文按固定大小切割成數(shù)據(jù)塊,逐個數(shù)據(jù)塊進(jìn)行加密,因為逐字符加密的速度太慢了。在加密是通常把第一個塊加密,然后再把第二個塊加密,輸出的第二個塊還不是加密以后的第二個塊,而是將第一個塊加密后的結(jié)果和第二個塊加密后的結(jié)果做異或操作作為第二個塊的輸出,所以你每拿到一個塊之后要想還原就必須拿到前一個塊,來做異或操作。


秘鑰交換(IKE):DH算法。也就是在秘鑰交換過程中沒有發(fā)送任何密碼,A經(jīng)過計算生成一些數(shù)據(jù)給了B,B自己再生成一些數(shù)據(jù)傳給A,A和B拿著對方給的數(shù)據(jù)經(jīng)過計算得出口令,而且這個口令是一樣的。


對稱加密:

加密算法+口令,把要轉(zhuǎn)換的數(shù)據(jù)也就是明文數(shù)據(jù),通過加密算法內(nèi)部轉(zhuǎn)換明文變成密文。這個算法可能是公開的,但口令只有你自己知道。為了更加安全,那么加密本身不能過于依賴算法,因為算法固定而且一旦算法遭到破解,那么基于這個算法的所有密文都可以破解,所以算法固然重要,但是最重要的是口令,口令可以變,就算算法破解了,口令不知道也是沒有用的。對稱加密是加密和解密都使用相同的口令。比如DES(56bits)、AES(128bits)、AES(192bits)、AES(256bits)、3DES。

對稱加密有個問題,算法對方可以拿到,但是口令呢?所以這是它最大的問題。如果通信涉及到多個方面而且口令不能使用相同的,那么你需要記錄的密碼就非常多。所以對稱加密無法解決秘鑰交換的問題,還有我給你密碼如何保證收到密碼的就是你也就是認(rèn)證問題,另外就是別人截獲密文然后做了修改收到的人解密后信息不對但是他并不知道這就數(shù)據(jù)完整性問題。

公鑰加密(非對稱加密):

相對于對稱加密而言,公鑰加密是非對稱加密,它會生成公鑰和私鑰,公鑰可以給任何人是公開的,A使用B的公鑰進(jìn)行加密,B使用自己的私鑰進(jìn)行解密。它解決了對稱加密中需要記錄眾多口令的問題。但是公鑰加密的密碼長度很長,早期的512位到現(xiàn)在的2048位,這種加密方式造成加密速度很慢,所以公鑰加密一般不用來加密數(shù)據(jù),而是用來加密口令,數(shù)據(jù)還是用對稱加密。A生成口令加密數(shù)據(jù),然后用B的公鑰加密口令,然后把加密后的口令和數(shù)據(jù)傳遞給A,A用私鑰解密口令,得到口令后再用口令解密數(shù)據(jù)。常用的公鑰加密算法:RSA、DSA、DES、AES

這個過程也實(shí)現(xiàn)了秘鑰交換過程,同時它還可以實(shí)現(xiàn)用戶身份的認(rèn)證即發(fā)信息的人是它聲稱的人,它是這么實(shí)現(xiàn)的,A用自己的私鑰加密,如果要想解密就只能使用A的公鑰,雖然公鑰任何人都能獲得,但是你用A的公鑰一旦解密了信息,就證明這個信息是用A的私鑰加密的,只有A才有A自己的私鑰,所以就證明了發(fā)信息的這個人就是A。這時候你會想到,用自己的私鑰加密數(shù)據(jù)那不等于沒加密一樣么,因為公鑰誰都可以得到。再說公鑰加密算法速度慢,用私鑰加密也一樣。所以通常都在引入另外一種方式,也就是單向加密。

單向加密:

單向加密可以保證數(shù)據(jù)完整性,經(jīng)過加密的數(shù)據(jù)如何保證不被篡改,它本身不是一種加密技術(shù)而是一種不可逆的抽取數(shù)據(jù)指紋的技術(shù),常見的有MD5、SHA1、SHA512、CRC32等。那么如果篡改了如何發(fā)現(xiàn)?A對數(shù)據(jù)抽取一段使用單向加密來獲取特征碼,也叫指紋信息。但是如何保證指紋信息不被篡改和重新生成呢?這就是上面說的和公鑰加密結(jié)合。A抽取數(shù)據(jù)一段進(jìn)行單向加密,生成特征碼,然后用自己的私鑰加密特征碼,發(fā)送給B,這時候C截獲了數(shù)據(jù),然后使用A的公鑰解密了特征碼,然后再篡改了數(shù)據(jù),這時候C再想加密特征碼而他沒有A的私鑰所以C只能用自己的私鑰加密特征碼,當(dāng)B收到數(shù)據(jù)以后,B使用單向加密獲取數(shù)據(jù)的特征碼,然后用A的公鑰來解密發(fā)過來的加密特征碼,顯然無法成功,假設(shè)C沒有篡改特征碼而是修改的數(shù)據(jù),那么B使用單向加密獲取數(shù)據(jù)特征碼,然后用A的公鑰解密加密的特征碼,兩者一對比肯定不一樣。雖然上述過程沒有考慮數(shù)據(jù)本身的加密,但由于可非對稱加密結(jié)合,實(shí)現(xiàn)了秘鑰交換、身份驗證、數(shù)據(jù)完整性,但無法保證數(shù)據(jù)私密性。那如何同時實(shí)現(xiàn)數(shù)據(jù)加密、數(shù)據(jù)完整性和身份認(rèn)證呢


那如何同時實(shí)現(xiàn)數(shù)據(jù)加密、數(shù)據(jù)完整性和身份認(rèn)證呢?

三種方法融合在一起

  1. A生成原始數(shù)據(jù),使用單向加密計算數(shù)據(jù)特征碼(保證數(shù)據(jù)完整性),然后用A自己的私鑰加密特征碼(保證身份驗證)

  2. A再找一個密碼,用對稱加密算法把數(shù)據(jù)、特征碼整體加密(實(shí)現(xiàn)了對數(shù)據(jù)的加密,因為對稱加密算法速度快)

  3. A再使用B的公鑰,第二不中的對稱加密算法中的密碼進(jìn)行加密。

  4. 上述三步完成后,發(fā)送給B。

第三方如果截獲了數(shù)據(jù),它沒有B的私鑰所以無法獲得解密數(shù)據(jù)的密碼,從而無法解密數(shù)據(jù)。下面是B獲得數(shù)據(jù)后的步驟:

  1. B使用自己的私鑰解密獲取密碼(因為只有自己的私鑰才可以解密,證明是發(fā)給自己的,實(shí)現(xiàn)了秘鑰交換)

  2. B使用獲得的對稱加密密碼進(jìn)行解密數(shù)據(jù)(原始數(shù)據(jù)和數(shù)據(jù)特征碼),(實(shí)現(xiàn)了數(shù)據(jù)加密和解密)

  3. B使用A的公鑰解密特征碼,然后使用單向加密算法計算數(shù)據(jù)特征碼(實(shí)現(xiàn)了身份驗證,因為只有A的公鑰才能解密A的私鑰加密的數(shù)據(jù))

  4. 對比解密后的特征碼和計算后的特征碼,如果一致說明數(shù)據(jù)沒有篡改(實(shí)現(xiàn)了數(shù)據(jù)完整性)


上面的過程看似完美,但實(shí)際上還有很大漏洞,A發(fā)送給B之前肯定向B索取B的公鑰,而且A拿到之后必須要相信這個公鑰就是B的,但如果C截取了信息,C把自己的公鑰給了A,并聲稱自己是B,那么A是無法驗證的,同樣C也依然可以冒充A。所以整個過程最薄弱的環(huán)節(jié)就是交換公鑰的環(huán)節(jié)。為了解決這個問題這就是需要第三方機(jī)構(gòu),也就是我們要說的CA。那么申請方向CA提交信息進(jìn)行審核其中最重要的是公鑰,審核通過后CA會把產(chǎn)生一個證書,之后把證書發(fā)給申請方。為了避免證書發(fā)送過程中偽造,則CA會計算申請者提交信息的特征碼,然后用自己的私鑰(CA自己的證書是自己給自己頒發(fā)的)進(jìn)行加密后一起發(fā)送給申請方。申請方用CA的公鑰解密,如果成功就證明是CA發(fā)的。CA對特征碼進(jìn)行加密就是電子簽名。

這時候A要給B通訊,A向B要證書(證書中包含B的公鑰,當(dāng)然也可以同時包含公鑰和私鑰),然后A去CA獲取CA的公鑰,然后用公鑰解密證書的數(shù)字簽名得到特征碼,如果成功就證明證書是CA頒發(fā)的且沒有被篡改。但這里又出現(xiàn)上面的問題,A向CA索要公鑰,萬一有人冒充CA怎么辦?這就是在操作系統(tǒng)中內(nèi)置全球知名CA的公鑰。你只要是通過正規(guī)渠道獲取的正版系統(tǒng),那么所包含的公鑰都是真實(shí)可靠的。


PKI(Public Key Infrastucture):公鑰基礎(chǔ)設(shè)施,公鑰發(fā)放吊銷等機(jī)制。


上面都是概念,而實(shí)現(xiàn)這些概念的軟件常用的就是openssl、gpg.



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI