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

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

成都創(chuàng)新互聯(lián)公司從2013年開始,先為崇信等服務(wù)建站,崇信等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為崇信企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

常見的加密方式:

  • 對(duì)稱加密

  • 公鑰加密

  • 單向加密

加密原理:將原文按固定大小切割成數(shù)據(jù)塊,逐個(gè)數(shù)據(jù)塊進(jìn)行加密,因?yàn)橹鹱址用艿乃俣忍?。在加密是通常把第一個(gè)塊加密,然后再把第二個(gè)塊加密,輸出的第二個(gè)塊還不是加密以后的第二個(gè)塊,而是將第一個(gè)塊加密后的結(jié)果和第二個(gè)塊加密后的結(jié)果做異或操作作為第二個(gè)塊的輸出,所以你每拿到一個(gè)塊之后要想還原就必須拿到前一個(gè)塊,來做異或操作。


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


對(duì)稱加密:

加密算法+口令,把要轉(zhuǎn)換的數(shù)據(jù)也就是明文數(shù)據(jù),通過加密算法內(nèi)部轉(zhuǎn)換明文變成密文。這個(gè)算法可能是公開的,但口令只有你自己知道。為了更加安全,那么加密本身不能過于依賴算法,因?yàn)樗惴ü潭ǘ乙坏┧惴ㄔ獾狡平猓敲椿谶@個(gè)算法的所有密文都可以破解,所以算法固然重要,但是最重要的是口令,口令可以變,就算算法破解了,口令不知道也是沒有用的。對(duì)稱加密是加密和解密都使用相同的口令。比如DES(56bits)、AES(128bits)、AES(192bits)、AES(256bits)、3DES。

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

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

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

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

單向加密:

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

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

三種方法融合在一起

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

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

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

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

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

  1. B使用自己的私鑰解密獲取密碼(因?yàn)橹挥凶约旱乃借€才可以解密,證明是發(fā)給自己的,實(shí)現(xiàn)了秘鑰交換)

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

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

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

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

這時(shí)候A要給B通訊,A向B要證書(證書中包含B的公鑰,當(dāng)然也可以同時(shí)包含公鑰和私鑰),然后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.

當(dāng)前標(biāo)題:Openssl及加密解密(一)數(shù)據(jù)加密解密及CA原理
本文URL:http://muchs.cn/article44/gedohe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站維護(hù)、自適應(yīng)網(wǎng)站用戶體驗(yàn)、電子商務(wù)

廣告

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

網(wǎng)站托管運(yùn)營