本公開涉及用于對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的編碼器以及對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的相應(yīng)方法。此外,本公開涉及用于對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的解碼器以及對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的相應(yīng)方法。此外,本公開涉及包括存儲有計(jì)算機(jī)可讀指令的非暫時性計(jì)算機(jī)可讀存儲介質(zhì)的計(jì)算機(jī)程序產(chǎn)品,計(jì)算機(jī)可讀指令可由包括處理硬件的計(jì)算裝置執(zhí)行以執(zhí)行前述方法。另外,本公開涉及包括至少一個上述編碼器和至少一個上述解碼器的編解碼器。
背景技術(shù):
通常,術(shù)語“加密(encryption)”是指以這樣的方式對消息或信息進(jìn)行編碼的過程,即,只有授權(quán)方可以讀取消息或信息。處理加密的科學(xué)領(lǐng)域稱為密碼學(xué)。對信息進(jìn)行加密在歷史上早已有之,并且眾所周知,每個加密算法具有其自身相關(guān)的弱點(diǎn)。密碼分析是密碼學(xué)的一個分支,用于發(fā)現(xiàn)加密算法的弱點(diǎn)。
加密算法可以分為對稱算法(即對稱密鑰算法)和非對稱算法(即非對稱密鑰算法)。對稱算法和非對稱算法以使用和處理加密密鑰的方式相互不同。對稱加密算法使用共享公共密鑰在發(fā)送端加密數(shù)據(jù),并在相應(yīng)的接收端解密加密數(shù)據(jù)。另一方面,非對稱加密算法使用兩個不同的密鑰,其中一個密鑰是用于加密數(shù)據(jù)的公鑰,而另一個密鑰是用于對加密數(shù)據(jù)進(jìn)行解密的私鑰。只有公鑰在各方之間共享。
此外,存在單向消息摘要函數(shù)(digestfunction),即散列函數(shù)(hashfunction),其不是數(shù)據(jù)加密技術(shù),因?yàn)樗鼈儽硎镜臄?shù)據(jù)難以復(fù)原或無法復(fù)原。然而,單向消息摘要函數(shù)用于驗(yàn)證數(shù)據(jù)和密碼的真實(shí)性,并且還用于生成用于加密算法的加密密鑰。
眾所周知,數(shù)據(jù)加密是需要相當(dāng)多的計(jì)算資源的高技術(shù)要求的操作。因此,為了節(jié)省計(jì)算資源并減少計(jì)算時間,經(jīng)常使用不對稱加密算法和對稱加密算法的混合組合。這種組合提供足夠強(qiáng)的保護(hù),使得未授權(quán)的第三方解密在當(dāng)前計(jì)算資源情況下不能實(shí)時地執(zhí)行。這種類型的方法通常用在各種不同的數(shù)據(jù)傳輸協(xié)議中,例如,諸如安全套接層(ssl)/傳輸層安全(tls)和安全殼(ssh),以及在簽名和加密電子郵件消息的應(yīng)用中,例如,完美隱私(pgp)。
已經(jīng)確定的是:密碼學(xué),即加密和密碼分析的科學(xué)研究,是一個不斷發(fā)展的科學(xué)領(lǐng)域,其中,密碼分析的方法試圖找到加密算法的弱點(diǎn)。為此,必須能夠最大程度地保護(hù)信息,但是相應(yīng)地需要針對實(shí)現(xiàn)加密的計(jì)算資源的使用進(jìn)行折衷。此外,可用的計(jì)算資源通常是有限的,尤其是在最大程度節(jié)省電池電量的移動裝置中。
此外,電子郵件應(yīng)用通常能夠?qū)σ韵马?xiàng)目進(jìn)行加密:
(i)僅電子郵件消息,而不是電子郵件消息的電子郵件附件,或
(ii)僅電子郵件消息的電子郵件附件,而不是電子郵件消息。
這意味著包括電子郵件附件的整個電子郵件未被加密。然而,這種類型的操作的采用是基于使用場景或客戶端軟件之間的不兼容性,而不是作為可用于執(zhí)行加密的適度處理能力的結(jié)果。
在過去幾年中,已經(jīng)對圖像和視頻信息的部分加密進(jìn)行了大量研究,主要是因?yàn)樵诨ヂ?lián)網(wǎng)上的數(shù)據(jù)傳輸量逐年呈指數(shù)增長。常規(guī)地,“部分圖像加密(partialimageencryption)”技術(shù)通常用于基于離散余弦變換(dct)和小波的圖像和視頻編解碼器。然而,該技術(shù)在速度方面效率較低,并且在可實(shí)現(xiàn)的保護(hù)程度方面較弱。
在一種常規(guī)技術(shù)中,給定圖像的像素值被加密。在另一種常規(guī)技術(shù)中,給定圖像塊中的像素的順序通過加密來加擾。在另一種常規(guī)技術(shù)中,對dct編碼的非零ac系數(shù)進(jìn)行加密。在另一種常規(guī)技術(shù)中,圖像的細(xì)節(jié),即亮度、顏色對比度等被加密,而圖像中的圖案的形狀和輪廓被保持未加密并且對于人類觀察者是可見的。
然而,上述常規(guī)技術(shù)不能高效地工作,因?yàn)楫?dāng)前的現(xiàn)有技術(shù)使用這樣的方法來對不固有地產(chǎn)生部分?jǐn)?shù)據(jù)流的圖像進(jìn)行編碼。因此,上述常規(guī)技術(shù)不能在不對速度和加密強(qiáng)度之間進(jìn)行妥協(xié)的情況下,進(jìn)行高效部分圖像加密。
技術(shù)實(shí)現(xiàn)要素:
本公開尋求提供用于對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的改進(jìn)的編碼器。
此外,本公開尋求提供用于對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的改進(jìn)的解碼器。
在第一方面,本公開的實(shí)施方式提供了用于對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的編碼器,其中,該編碼器包括用于處理輸入數(shù)據(jù)(d1)的數(shù)據(jù)處理配置,其特征在于:
(a)數(shù)據(jù)處理配置能夠操作成對輸入數(shù)據(jù)(d1)進(jìn)行編碼,從而生成多個中間編碼數(shù)據(jù)流,其中,多個中間編碼數(shù)據(jù)流包括至少一個關(guān)鍵數(shù)據(jù)流,至少一個關(guān)鍵數(shù)據(jù)流對于多個中間編碼數(shù)據(jù)流的一個或多個其余數(shù)據(jù)流的后續(xù)解碼是關(guān)鍵和必要的,其中,至少一個關(guān)鍵數(shù)據(jù)流僅表示多個中間編碼數(shù)據(jù)流的一部分;
(b)數(shù)據(jù)處理配置能夠操作成使用一個或多個加密算法來對至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密,從而生成至少一個中間加密數(shù)據(jù)流;以及
(c)數(shù)據(jù)處理配置能夠操作成將多個中間編碼數(shù)據(jù)流的未加密部分與至少一個中間加密數(shù)據(jù)流合并在一起以生成編碼和加密數(shù)據(jù)(e2)。
可選地,編碼器的數(shù)據(jù)處理配置能夠操作成對以下列述形式中的至少一種形式提供的輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密:一維數(shù)據(jù)、多維數(shù)據(jù)、文本數(shù)據(jù)、二進(jìn)制數(shù)據(jù)、傳感器數(shù)據(jù)、音頻數(shù)據(jù)、圖像數(shù)據(jù)、視頻數(shù)據(jù)、編碼數(shù)據(jù),但不限于此。
編碼器的數(shù)據(jù)處理配置能夠操作成對輸入數(shù)據(jù)(d1)進(jìn)行編碼,從而生成多個中間編碼數(shù)據(jù)流??蛇x地,為此目的,編碼器的數(shù)據(jù)處理配置能夠操作成采用多個分割操作和/或組合操作來將輸入數(shù)據(jù)(d1)劃分和/或組合成多個數(shù)據(jù)塊和/或數(shù)據(jù)包。
可選地,編碼器的數(shù)據(jù)處理配置能夠操作成對多個數(shù)據(jù)塊和/或數(shù)據(jù)包執(zhí)行統(tǒng)計(jì)分析和/或迭代分析,以確定指示相應(yīng)數(shù)據(jù)塊和/或數(shù)據(jù)包內(nèi)的統(tǒng)計(jì)變化的多個參數(shù)。編碼器的數(shù)據(jù)處理配置然后可選地能夠操作成采用多個參數(shù)來選擇待用于對多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行編碼,從而生成多個中間編碼數(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ù)包進(jìn)行編碼之后執(zhí)行。
多個中間編碼數(shù)據(jù)流包括至少一個關(guān)鍵數(shù)據(jù)流,該至少一個關(guān)鍵數(shù)據(jù)流對于多個中間編碼數(shù)據(jù)流的一個或多個其余數(shù)據(jù)流的后續(xù)解碼是關(guān)鍵的和必要的??蛇x地,該至少一個關(guān)鍵數(shù)據(jù)流包括指示以下各項(xiàng)中的至少一項(xiàng)的信息:
(i)用于將輸入數(shù)據(jù)(d1)劃分和/或組合成多個數(shù)據(jù)塊和/或數(shù)據(jù)包的多個分割操作和/或組合操作,
(ii)用于對多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行編碼的一個或多個編碼方法,
(iii)用于對多個數(shù)據(jù)塊和/或數(shù)據(jù)包進(jìn)行熵編碼的一個或多個熵編碼方法,和/或
(iv)該熵編碼數(shù)據(jù)流中的多個熵編碼數(shù)據(jù)塊和/或數(shù)據(jù)包的長度;可選地,熵編碼前的原始數(shù)據(jù)長度也可以用作待加密到至少一個關(guān)鍵數(shù)據(jù)流中的關(guān)鍵信息;和/或
(v)該多個數(shù)據(jù)塊和/或數(shù)據(jù)包在被熵編碼之前的長度。
因此,至少一個關(guān)鍵數(shù)據(jù)流僅表示多個中間編碼數(shù)據(jù)流的一部分。
此外,編碼器的數(shù)據(jù)處理配置能夠操作成使用一個或多個加密算法來對至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密,從而生成至少一個中間加密數(shù)據(jù)流。
隨后,編碼器的數(shù)據(jù)處理配置能夠操作成將多個中間編碼數(shù)據(jù)流的未加密部分(即被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息)與至少一個中間加密數(shù)據(jù)流合并在一起以生成編碼和加密數(shù)據(jù)(e2)。
此外,可選地,編碼器的數(shù)據(jù)處理配置能夠操作成在對至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密之前將至少一個關(guān)鍵數(shù)據(jù)流壓縮成至少一個壓縮數(shù)據(jù)流??蛇x地,編碼器的數(shù)據(jù)處理配置能夠操作成計(jì)算至少一個壓縮數(shù)據(jù)流的第一字節(jié),該第一字節(jié)描述用于壓縮至少一個關(guān)鍵數(shù)據(jù)流的熵編碼方法。
可選地,指示該至少一個壓縮數(shù)據(jù)流的長度的信息提供在該至少一個壓縮數(shù)據(jù)流的開始處,例如在前述的第一字節(jié)之后。
此外,可選地,編碼器的數(shù)據(jù)處理配置能夠操作成通過使用以下各項(xiàng)中的至少一項(xiàng)來限定加密:在加密數(shù)據(jù)流的開始處寫入的新字節(jié)、在熵編碼方法字節(jié)和/或熵編碼方法字中的最高有效位(msb)、未加密數(shù)據(jù)流和加密數(shù)據(jù)流被包括在編碼和加密數(shù)據(jù)(e2)中的順序、和/或標(biāo)志位。
在第二方面,本公開的實(shí)施方式提供了通過編碼器對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的方法,其中編碼器包括用于處理輸入數(shù)據(jù)(d1)的數(shù)據(jù)處理配置,其特征在于,該方法包括:
(a)操作數(shù)據(jù)處理配置以對輸入數(shù)據(jù)(d1)進(jìn)行編碼,從而生成多個中間編碼數(shù)據(jù)流,其中,多個中間編碼數(shù)據(jù)流包括至少一個關(guān)鍵數(shù)據(jù)流,至少一個關(guān)鍵數(shù)據(jù)流對于多個中間編碼數(shù)據(jù)流的一個或多個其余數(shù)據(jù)流的后續(xù)解碼是關(guān)鍵和必要的,其中,至少一個關(guān)鍵數(shù)據(jù)流僅表示多個中間編碼數(shù)據(jù)流的一部分;
(b)操作數(shù)據(jù)處理配置以使用一個或多個加密算法來對至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密,從而生成至少一個中間加密數(shù)據(jù)流;以及
(c)操作數(shù)據(jù)處理配置以將多個中間編碼數(shù)據(jù)流的未加密部分與至少一個中間加密數(shù)據(jù)流合并在一起以生成編碼和加密數(shù)據(jù)(e2)。
在第三方面,本公開的實(shí)施方式提供了計(jì)算機(jī)程序產(chǎn)品,其包括存儲有計(jì)算機(jī)可讀指令的非暫時性(即非瞬態(tài))計(jì)算機(jī)可讀存儲介質(zhì),該計(jì)算機(jī)可讀指令可由包括處理硬件的計(jì)算裝置執(zhí)行以執(zhí)行前述方法。
在第四方面,本公開的實(shí)施方式提供了用于對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的解碼器,其中解碼器包括用于處理編碼和加密數(shù)據(jù)(e2)的數(shù)據(jù)處理配置,其特征在于:
(i)數(shù)據(jù)處理配置能夠操作成處理編碼和加密數(shù)據(jù)(e2)以確定編碼和加密數(shù)據(jù)(e2)中的一個或多個加密子部分以及一個或多個未加密子部分,其中,編碼和加密數(shù)據(jù)(e2)中的一個或多個未加密子部分包括被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息;
(ii)數(shù)據(jù)處理配置能夠操作成對一個或多個加密子部分進(jìn)行解密,以確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸和/或相對位置和/或一個或多個編碼方法;
(iii)數(shù)據(jù)處理配置能夠操作成將一個或多個編碼方法的逆過程應(yīng)用于被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息以對被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行解碼,從而生成多個解碼數(shù)據(jù)塊和/或數(shù)據(jù)包;以及
(iv)數(shù)據(jù)處理配置能夠操作成基于與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸和/或相對位置來組合多個解碼數(shù)據(jù)塊和/或數(shù)據(jù)包以生成解密和解碼數(shù)據(jù)(d3)。
可選地,解碼器的數(shù)據(jù)處理配置能夠操作成對以下列形式中的至少一種形式提供的編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼:編碼和加密的一維數(shù)據(jù)、編碼和加密的多維數(shù)據(jù)、編碼和加密的文本數(shù)據(jù)、編碼和加密的二進(jìn)制數(shù)據(jù)、編碼和加密的傳感器數(shù)據(jù)、編碼和加密的音頻數(shù)據(jù)、編碼和加密的圖像數(shù)據(jù)、編碼和加密的視頻數(shù)據(jù)、編碼數(shù)據(jù),但不限于此。
解碼器的數(shù)據(jù)處理配置能夠操作成處理編碼和加密數(shù)據(jù)(e2),以確定編碼和加密數(shù)據(jù)(e2)中的一個或多個加密子部分以及一個或多個未加密子部分。編碼和加密數(shù)據(jù)(e2)中的一個或多個未加密子部分包括被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息。
解碼器的數(shù)據(jù)處理配置能夠操作成對一個或多個加密子部分進(jìn)行解密,以確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸、相對位置和/或一個或多個編碼方法??蛇x地,解碼器的數(shù)據(jù)處理配置還能夠操作成確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的一個或多個熵編碼方法。
此外,可選地,以至少一個壓縮數(shù)據(jù)流的形式提供一個或多個加密子部分。在這種情況下,解碼器的數(shù)據(jù)處理配置可選地能夠操作成從至少一個壓縮數(shù)據(jù)流的第一字節(jié)確定與至少一個壓縮數(shù)據(jù)流相關(guān)聯(lián)的熵編碼方法。
可選地,指示該至少一個壓縮數(shù)據(jù)流的長度的信息提供在該至少一個壓縮數(shù)據(jù)流的開始處,例如在前述的第一字節(jié)之后。
此外,可選地,解碼器的數(shù)據(jù)處理配置能夠操作成使用以下各項(xiàng)中的至少一項(xiàng)來確定一個或多個加密子部分以及一個或多個未加密子部分:在加密數(shù)據(jù)流的開始處寫入的新字節(jié)、在熵編碼方法字節(jié)和/或熵編碼方法字中的最高有效位(msb)、未加密數(shù)據(jù)流和加密數(shù)據(jù)流被包括在編碼和加密數(shù)據(jù)(e2)中的順序信息、和/或標(biāo)志位。
隨后,解碼器的數(shù)據(jù)處理配置可選地能夠操作成應(yīng)用熵編碼方法的逆過程,以解壓縮至少一個壓縮流,以確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸、相對位置和/或一個或多個編碼方法。解碼器的數(shù)據(jù)處理配置然后能夠操作成將一個或多個編碼方法的逆過程應(yīng)用于被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息,以對該被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行解碼,從而生成多個解碼數(shù)據(jù)塊和/或數(shù)據(jù)包。可選地,解碼器的數(shù)據(jù)處理配置還能夠操作成在應(yīng)用一個或多個編碼方法的逆過程之前,將一個或多個熵編碼方法的逆過程應(yīng)用于包括在編碼和加密數(shù)據(jù)(e2)的一個或多個未加密子部分中的多個熵編碼數(shù)據(jù)塊和/或數(shù)據(jù)包。
隨后,解碼器的數(shù)據(jù)處理配置能夠操作成基于尺寸和/或相對位置來組合多個解碼數(shù)據(jù)塊和/或數(shù)據(jù)包,從而生成解密和解碼數(shù)據(jù)(d3)。
在第五方面,本公開的實(shí)施方式提供了通過解碼器對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的方法,其中,解碼器包括用于處理編碼和加密數(shù)據(jù)(e2)的數(shù)據(jù)處理配置,其特征在于,該方法包括:
(i)操作數(shù)據(jù)處理配置以處理編碼和加密數(shù)據(jù)(e2)以確定編碼和加密數(shù)據(jù)(e2)中的一個或多個加密子部分以及一個或多個未加密子部分,其中,編碼和加密數(shù)據(jù)(e2)中的一個或多個未加密子部分包括被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息;
(ii)操作數(shù)據(jù)處理配置以對一個或多個加密子部分進(jìn)行解密,以確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸和/或相對位置和/或一個或多個編碼方法;
(iii)操作數(shù)據(jù)處理配置以將一個或多個編碼方法的逆過程應(yīng)用于被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息以對被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行解碼,從而生成多個解碼數(shù)據(jù)塊和/或數(shù)據(jù)包;以及
(iv)操作數(shù)據(jù)處理配置以基于與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸和/或相對位置來組合多個解碼數(shù)據(jù)塊和/或數(shù)據(jù)包以生成解密和解碼數(shù)據(jù)(d3)。
在第六方面,本公開的實(shí)施方式提供了計(jì)算機(jī)程序產(chǎn)品,其包括存儲有計(jì)算機(jī)可讀指令的非暫時性(即非瞬態(tài))計(jì)算機(jī)可讀存儲介質(zhì),該計(jì)算機(jī)可讀指令可由包括處理硬件的計(jì)算裝置執(zhí)行以執(zhí)行前述方法。
在第七方面,本公開的實(shí)施方式提供了包括上述編碼器和上述解碼器的編解碼器。
依據(jù)本公開的實(shí)施方式的前述方法可以利用任何合適的編碼布置來實(shí)現(xiàn),而與使用哪種加密算法無關(guān)。在這種情況下,前述方法不改變加密算法的行為,這意味著由加密算法提供的保護(hù)不會受到妥協(xié)。
前述方法使得可以使用很快速高效的加密算法。在這點(diǎn)上,前述方法可以以高效的方式與加密算法結(jié)合使用,而不會干擾加密算法本身的內(nèi)部操作。適合于用前述方法實(shí)現(xiàn)的加密算法的示例包括但不限于aes、rsa、twofish、blowfish、數(shù)據(jù)加密標(biāo)準(zhǔn)(des)、三重des(3-des)、serpent、國際數(shù)據(jù)加密算法(idea)、mars、rivestcipher6(rc6)、camellia、cast-128、skipjack、擴(kuò)展微型加密算法(xtea)等,這些示例名稱包括注冊商標(biāo)。
根據(jù)本公開的實(shí)施方式的前述方法提供了與已知的現(xiàn)有技術(shù)方法相比很快速并且相當(dāng)高效的保護(hù)數(shù)據(jù)的方式。值得注意的是,僅對編碼數(shù)據(jù)的一個或多個必要和關(guān)鍵部分進(jìn)行加密。例如,當(dāng)使用gurulogic多變量編解碼器
此外,該加密過程的附加優(yōu)點(diǎn)是,編碼和加密數(shù)據(jù)(e2)不需要通過具有受保護(hù)的安全網(wǎng)絡(luò)連接的網(wǎng)絡(luò)(例如采用虛擬專用網(wǎng)絡(luò)(vpn)隧道、安全殼(ssh)或ssl/tls協(xié)議)來傳輸。因此,前述方法提供了用于例如在公共互聯(lián)網(wǎng)網(wǎng)絡(luò)中或在網(wǎng)站服務(wù)和云服務(wù)中傳輸文本、二進(jìn)制、音頻、圖像、視頻和其它類型的數(shù)據(jù)的有利模型。
根據(jù)結(jié)合所附權(quán)利要求解釋的說明性實(shí)施方式的附圖和詳細(xì)描述,本公開的附加方面、有益效果、特征和目的將變得顯而易見。
應(yīng)當(dāng)理解,在不脫離由所附權(quán)利要求限定的本公開的范圍的情況下,本公開的特征易于以各種組合方式進(jìn)行組合。
附圖說明
當(dāng)結(jié)合附圖閱讀時,將更好地理解上面的概述以及說明性實(shí)施方式的以下詳細(xì)描述。為了說明本公開的目的,在附圖中示出了本公開的示例性構(gòu)造。然而,本公開不限于本文公開的特定方法和設(shè)備。此外,本領(lǐng)域技術(shù)人員將理解,附圖不是按比例繪制的。在可行的情況下,相同的元件由相同的附圖標(biāo)記表示。
現(xiàn)在將僅通過示例的方式參考以下附圖來描述本公開的實(shí)施方式,其中:
圖1是根據(jù)本公開的實(shí)施方式的用于對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的編碼器和用于對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的解碼器的示意圖,其中該編碼器和該解碼器共同形成編解碼器;
圖2是描述根據(jù)本公開的實(shí)施方式的對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的第一方法的步驟的流程圖的示意圖;
圖3是根據(jù)本公開的實(shí)施方式的加密過程的步驟的示意圖;
圖4是描述根據(jù)本公開的實(shí)施方式的對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的第二方法的步驟的流程圖的示意圖;以及
圖5是根據(jù)本公開的實(shí)施方式的解密過程的步驟的示意圖。
在附圖中,帶下劃線的附圖標(biāo)記用于表示帶下劃線的附圖標(biāo)記所在的項(xiàng)目或帶下劃線的附圖標(biāo)記相鄰的項(xiàng)目。不帶下劃線的附圖標(biāo)記涉及由將不帶下劃線的附圖標(biāo)記與項(xiàng)目鏈接的線標(biāo)識的項(xiàng)目。
具體實(shí)施方式
在以下詳細(xì)描述中,闡明了本公開的說明性實(shí)施方式及其可以實(shí)現(xiàn)的方式。雖然描述了執(zhí)行本公開的一些模式,但是本領(lǐng)域技術(shù)人員將認(rèn)識到,用于執(zhí)行或?qū)嵺`本公開的其它實(shí)施方式也是可行的。
總而言之,本公開的實(shí)施方式涉及用于部分?jǐn)?shù)據(jù)加密的加密方法以及對應(yīng)的解密方法。前述方法能夠?qū)崿F(xiàn)很快速的加密過程,并且提供很強(qiáng)的保護(hù)以防止未經(jīng)授權(quán)的訪問。
前述方法有利地對已經(jīng)壓縮或以其它方式編碼的一維或多維文本、二進(jìn)制、音頻、圖像、視頻或其它類型的數(shù)據(jù)使用已知的加密算法。然而,該方法還可選地使用迄今未知的加密算法,例如未來設(shè)計(jì)的加密算法,因?yàn)樵摲椒ǖ墓δ苣軌蜻m用于各種加密算法。
本公開中描述的部分?jǐn)?shù)據(jù)加密結(jié)合各種壓縮算法很高效地工作,該壓縮算法基于數(shù)據(jù)的內(nèi)容、屬性和成分對數(shù)據(jù)進(jìn)行編碼。這種壓縮算法通常產(chǎn)生多于一個數(shù)據(jù)流作為輸出,其中至少一個數(shù)據(jù)流就數(shù)據(jù)的內(nèi)容而言是極為重要的。
本公開的實(shí)施方式嘗試通過僅加密數(shù)據(jù)的一個或多個最重要部分來提供用于對數(shù)據(jù)加密的低成本的方式。這節(jié)省了由數(shù)據(jù)處理器消耗的計(jì)算資源和處理能量,并且減少了加密所需的時間,而不削弱對加密所需的保護(hù)程度。這種能量消耗的節(jié)省在便攜式計(jì)算裝置(例如智能電話)上是很有利的,其使得能夠采用更小的可充電電池,或者能夠延長在需要再次對電池充電之前的操作時間。
本公開全文中,未加密信息被稱為“明文(plaintext)”,而相應(yīng)地,加密信息被稱為“密文(ciphertext)”。
參考圖1,本公開的實(shí)施方式涉及:
(i)用于對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的編碼器110以及對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成編碼和加密數(shù)據(jù)(e2)的相應(yīng)方法;
(ii)用于對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的解碼器120以及對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成解密和解碼數(shù)據(jù)(d3)的相應(yīng)方法;以及
(iii)包括至少一個編碼器和至少一個解碼器的組合的編解碼器130,例如編碼器110和解碼器120的組合。
可選地,解密和解碼數(shù)據(jù)(d3)與輸入數(shù)據(jù)(d1)完全相似,如在無損操作模式中。或者,可選地,解密和解碼數(shù)據(jù)(d3)大致類似于輸入數(shù)據(jù)(d1),如在有損操作模式中。或者,可選地,解密和解碼數(shù)據(jù)(d3)與輸入數(shù)據(jù)(d1)不同,例如通過變換,例如在對數(shù)據(jù)進(jìn)行代碼轉(zhuǎn)換時使用,但是保留存在于輸入數(shù)據(jù)(d1)中的基本相似的信息;例如,當(dāng)還需要對解密和解碼數(shù)據(jù)(d3)進(jìn)行重新格式化時,解密和解碼數(shù)據(jù)(d3)與輸入數(shù)據(jù)(d1)不同是有用的,例如以與不同類型的通信平臺、軟件層、通信裝置等兼容。
編碼器110包括用于處理輸入數(shù)據(jù)(d1)以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的數(shù)據(jù)處理配置。可選地,編碼器110的數(shù)據(jù)處理配置通過采用可操作成執(zhí)行程序指令的至少一個精簡指令集計(jì)算(risc)處理器來實(shí)現(xiàn),如下面將詳細(xì)描述的。
可選地,編碼器110的數(shù)據(jù)處理配置可操作成對以下述形式中的至少一種形式提供的輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密:一維數(shù)據(jù)、多維數(shù)據(jù)、文本數(shù)據(jù)、二進(jìn)制數(shù)據(jù)、傳感器數(shù)據(jù)、音頻數(shù)據(jù)、圖像數(shù)據(jù)、視頻數(shù)據(jù)、編碼數(shù)據(jù),但不限于此??蛇x地,輸入數(shù)據(jù)(d1)作為流或文件被接收。
編碼器110的數(shù)據(jù)處理配置可操作成對輸入數(shù)據(jù)(d1)進(jìn)行編碼,從而生成多個中間編碼數(shù)據(jù)流。
可選地,為了對輸入數(shù)據(jù)(d1)進(jìn)行編碼,編碼器110的數(shù)據(jù)處理配置可操作成采用多個分割操作和/或組合操作來將輸入數(shù)據(jù)(d1)劃分和/或組合成多個數(shù)據(jù)塊和/或數(shù)據(jù)包。在第一示例中,輸入數(shù)據(jù)(d1)是一維的,并且可以使用掃描線來分割。在第二示例中,輸入數(shù)據(jù)(d1)是多維的,并且可以根據(jù)數(shù)據(jù)塊具有的維度的數(shù)量被分割為數(shù)據(jù)塊。
在這點(diǎn)上,編碼器110可有利地與其它已知的編碼器一起使用;例如,結(jié)合在授權(quán)的英國專利gb2503295b中描述的塊編碼器,該英國專利通過引用并入本文。塊編碼器可以用于以優(yōu)化的方式將輸入數(shù)據(jù)(d1)分割和/或組合成多個數(shù)據(jù)塊和/或數(shù)據(jù)包。
在輸入數(shù)據(jù)(d1)是一維的第一示例中,通過將輸入流(即字節(jié)串)分割為更短的流來從輸入數(shù)據(jù)(d1)提取數(shù)據(jù)塊。例如,在常規(guī)掃描之后獲得的6×4圖像中的像素的索引,即,首先從左到右掃描然后從上到下掃描,可以表示如下:
010203040506
070809101112
131415161718
192021222324
這些索引當(dāng)以一維形式傳輸以用于編碼時,產(chǎn)生行組合的字節(jié)串,其可以表示如下:
010203040506070809101112131415161718192021222324
字節(jié)串可以例如被分割為四個字節(jié)的較短字節(jié)串,其可以表示如下:
(01020304)
(05060708)
(09101112)
(13141516)
(17181920)
(21222324)
在第二示例中,為了說明的目的,輸入數(shù)據(jù)(d1)是二維(2d)圖像。在該示例中,2d圖像可選地被分割為較小的2×2區(qū)域,并且可以通過在2d圖像的2×2區(qū)域上使用常規(guī)掃描順序來將2d圖像中的像素的索引重新組織為四字節(jié)的字節(jié)串。這些字節(jié)串可以表示如下:
(01020708)
(03040910)
(05061112)
(13141920)
(15162122)
(17182324)
此外,在一些示例中,輸入數(shù)據(jù)(d1)可以是三維(3d)的,例如在3d視頻內(nèi)容中。在其它示例中,在輸入數(shù)據(jù)(d1)中可以存在更多維度,例如,諸如視頻中的時間。
同樣,當(dāng)輸入數(shù)據(jù)(d1)是音頻數(shù)據(jù)時,可以執(zhí)行類似的分割過程。在示例中,音頻數(shù)據(jù)可選地包括來自多個麥克風(fēng)的音頻信號。在這種情況下,音頻數(shù)據(jù)可以以單獨(dú)的音頻信號被分離并且然后被進(jìn)一步分割成數(shù)據(jù)包的方式被分割。
一旦輸入數(shù)據(jù)(d1)被分割成多個數(shù)據(jù)塊和/或數(shù)據(jù)包,則編碼器110的數(shù)據(jù)處理配置可選地可操作成執(zhí)行多個數(shù)據(jù)塊和/或數(shù)據(jù)包的統(tǒng)計(jì)分析和/或迭代分析以確定指示相應(yīng)的數(shù)據(jù)塊和/或數(shù)據(jù)包內(nèi)的統(tǒng)計(jì)變化的多個參數(shù)。編碼器110的數(shù)據(jù)處理配置然后可選地可操作成采用多個參數(shù)來選擇待用于對多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行編碼的一個或多個編碼方法。
隨后,編碼器110的數(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ù)包進(jìn)行編碼之后執(zhí)行。關(guān)于這種壓縮,將理解的是,當(dāng)生成編碼數(shù)據(jù)(e2)時,前述熵編碼方法的目的是壓縮數(shù)據(jù)(d1),并且這些方法在實(shí)現(xiàn)這樣的數(shù)據(jù)壓縮時通常是成功的,但是不總是成功的。在任一情況下,在本公開的實(shí)施方式中應(yīng)用的給定熵編碼方法需要被包括在中間編碼數(shù)據(jù)流中,通常具有被熵編碼的數(shù)據(jù)的長度,并且有時還具有在執(zhí)行其熵編碼之前的數(shù)據(jù)的長度。
應(yīng)當(dāng)理解,多個中間編碼數(shù)據(jù)流中的一個或多個中間編碼數(shù)據(jù)流對于對多個中間編碼數(shù)據(jù)流中的一個或多個其余數(shù)據(jù)流的正確解碼是關(guān)鍵的和必要的。以下將多個中間編碼數(shù)據(jù)流中的關(guān)鍵的和必要的一個或多個中間編碼數(shù)據(jù)流稱為“關(guān)鍵數(shù)據(jù)流”。以下將多個中間編碼數(shù)據(jù)流的一個或多個其余數(shù)據(jù)流稱為“非關(guān)鍵數(shù)據(jù)流”。
可選地,多個中間編碼數(shù)據(jù)流的關(guān)鍵數(shù)據(jù)流包括指示以下各項(xiàng)中的至少一項(xiàng)的信息:
(i)用于將輸入數(shù)據(jù)(d1)劃分和/或組合成多個數(shù)據(jù)塊和/或數(shù)據(jù)包的多個分割操作和/或組合操作,
(ii)用于對多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行編碼的一個或多個編碼方法,
(iii)用于對多個數(shù)據(jù)塊和/或數(shù)據(jù)包進(jìn)行熵編碼的一個或多個熵編碼方法,和/或
(iv)該熵編碼數(shù)據(jù)流中的多個熵編碼數(shù)據(jù)塊和/或數(shù)據(jù)包的長度,和/或
(v)在應(yīng)用熵編碼之前該多個數(shù)據(jù)塊和/或數(shù)據(jù)包的長度。
因此,關(guān)鍵數(shù)據(jù)流僅表示多個中間編碼數(shù)據(jù)流的一部分。關(guān)鍵數(shù)據(jù)流通常占整個中間編碼數(shù)據(jù)流的1/100部分到1/1000部分的范圍內(nèi)。
可選地,非關(guān)鍵數(shù)據(jù)流包括指示以下各項(xiàng)中的至少一項(xiàng)的信息:數(shù)據(jù)庫參考值、離散余弦變換(dct)參數(shù)的值、dc系數(shù)的值、滑動值、行值、比例值、多級值和/或掩碼,但不限于此。
此外,如前所述,關(guān)鍵數(shù)據(jù)流是多個中間編碼數(shù)據(jù)流的必要部分,如果沒有該關(guān)鍵數(shù)據(jù)流,則不可能正確地解碼多個中間編碼數(shù)據(jù)流的非關(guān)鍵數(shù)據(jù)流。因此,為了保護(hù)多個中間編碼數(shù)據(jù)流免受未經(jīng)授權(quán)的訪問,關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流被有利地加密,如下面更詳細(xì)地闡述的。
此外,可選地,編碼器110的數(shù)據(jù)處理配置可操作成生成或接收用于對關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密的至少一個密鑰。
可選地,在一個實(shí)現(xiàn)中,編碼器110的數(shù)據(jù)處理配置在操作中被提供有至少一個密鑰。
或者,在另一實(shí)現(xiàn)中,編碼器110的數(shù)據(jù)處理配置可選地可操作成使用適當(dāng)?shù)拿荑€生成算法來生成至少一個密鑰。為此目的,編碼器110的數(shù)據(jù)處理配置可選地可操作成應(yīng)用密鑰擴(kuò)展來生成至少一個密鑰。可選地,密鑰擴(kuò)展包括通過單向摘要算法(即,散列算法)多次重復(fù)地提供相關(guān)聯(lián)的密碼。
此外,可選地,編碼器110的數(shù)據(jù)處理配置可操作成使用至少一個密鑰利用一個或多個加密算法來對關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密,從而生成至少一個中間加密數(shù)據(jù)流??蛇x地,編碼器110的數(shù)據(jù)處理配置可操作成在對關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密時,結(jié)合至少一個密鑰應(yīng)用至少一個初始化向量(“initvector”;iv)。
隨后,編碼器110的數(shù)據(jù)處理配置可操作成將包括未加密的非關(guān)鍵數(shù)據(jù)流的多個中間編碼數(shù)據(jù)流中的未加密部分與至少一個中間加密數(shù)據(jù)流合并,從而生成編碼和加密數(shù)據(jù)(e2)。
此外,可選地,編碼器110的數(shù)據(jù)處理配置可操作成在加密之前將關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流壓縮為至少一個壓縮數(shù)據(jù)流。同樣,可選地,編碼器110的數(shù)據(jù)處理配置可操作成將非關(guān)鍵數(shù)據(jù)流壓縮成一個或多個其它壓縮數(shù)據(jù)流,以包括在編碼和加密數(shù)據(jù)(e2)中。
可選地,編碼器110的數(shù)據(jù)處理配置可操作成計(jì)算至少一個壓縮數(shù)據(jù)流的第一字節(jié),使得第一字節(jié)描述用于壓縮關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流的熵編碼方法。同樣,可選地,編碼器110的數(shù)據(jù)處理配置可操作成計(jì)算一個或多個其它壓縮數(shù)據(jù)流的第一字節(jié),使得這些第一字節(jié)描述用于壓縮非關(guān)鍵數(shù)據(jù)流的熵編碼方法。
可選地,當(dāng)對關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流(即至少一個壓縮數(shù)據(jù)流)進(jìn)行加密以生成加密數(shù)據(jù)流時,將加密限定為一種熵編碼方法的新字節(jié)被寫入在加密數(shù)據(jù)流的開始處。當(dāng)在解碼器120的隨后的解密和解碼期間讀取新字節(jié)時,解碼器120注意到數(shù)據(jù)流被加密。因此,解碼器120將加密數(shù)據(jù)流解密為至少一個壓縮數(shù)據(jù)流,并從該至少一個壓縮數(shù)據(jù)流的第一字節(jié)讀取實(shí)際熵編碼方法。這使得能夠?qū)χ辽僖粋€壓縮數(shù)據(jù)流進(jìn)行解壓縮。
或者,可選地,代替?zhèn)鬏斚薅用艿男伦止?jié),關(guān)于所采用的加密的信息,例如通過在熵編碼方法字節(jié)和/或熵編碼方法字中使用最高有效位(msb)來將新字節(jié)與關(guān)于所采用的熵編碼方法的信息組合。
或者,可選地,編碼器110可操作成向解碼器120傳送未加密的數(shù)據(jù)流和加密的數(shù)據(jù)流被包括在編碼和加密數(shù)據(jù)(e2)中的順序,以及關(guān)于所加密的關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流的信息。
或者,可選地,使用一個或多個標(biāo)志位來指示哪些數(shù)據(jù)流包含被編碼的信息(即,非關(guān)鍵數(shù)據(jù)流),以及哪些數(shù)據(jù)流不包含被編碼的信息(即,關(guān)鍵數(shù)據(jù)流)。
可選地,在第一字節(jié)之后提供指示至少一個壓縮數(shù)據(jù)流的長度的信息。這使得解碼器120能夠讀取至少一個壓縮數(shù)據(jù)流的長度,可將其內(nèi)容復(fù)制到解碼器120自身的緩沖器,并且跳轉(zhuǎn)到讀取下一個數(shù)據(jù)流。可選地,指示長度的信息保持未加密。或者,可選地,在新字節(jié)之后寫入加密數(shù)據(jù)流的新長度?;蛘?,可選地,第一字節(jié)在編碼器110中加密,并且隨后在解碼器120中解密,并且然后可以在不對整個編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼的情況下在解碼器120中讀取至少一個壓縮數(shù)據(jù)流的長度。
在可替代的實(shí)現(xiàn)中,關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流可以首先被加密,然后被壓縮。然而,應(yīng)當(dāng)理解,在加密之前執(zhí)行對關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流的壓縮是有利的,因?yàn)殛P(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流通常包括相當(dāng)多的冗余數(shù)據(jù)。因此,編碼器110的數(shù)據(jù)處理配置可操作成采用合適的熵編碼方法來壓縮關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流。在這種情況下,編碼和加密數(shù)據(jù)(e2)的熵和數(shù)據(jù)尺寸小于當(dāng)在壓縮之前對關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密時的熵和數(shù)據(jù)尺寸。一個或多個加密算法通常傾向于在編碼和加密數(shù)據(jù)(e2)中產(chǎn)生最大數(shù)據(jù)熵,這在數(shù)學(xué)上意味著存在如理論上可行的數(shù)量的用于對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密的選擇。
作為示例,可從gurulogicmicrosystemsoy獲得的gurulogic多變量編解碼器
此外,當(dāng)對圖像數(shù)據(jù)或視頻數(shù)據(jù)進(jìn)行編碼時,
此外,隨著
可選地,為不同尺寸的數(shù)據(jù)塊和/或數(shù)據(jù)包產(chǎn)生不同的編碼方法數(shù)據(jù)流。
此外,可選地,例如基于輸入數(shù)據(jù)(d1)的內(nèi)容和期望的編碼質(zhì)量,將輸入數(shù)據(jù)(d1)劃分為不同尺寸的數(shù)據(jù)塊和/或數(shù)據(jù)包。通常,為了更好的編碼質(zhì)量,將輸入數(shù)據(jù)(d1)劃分為較小尺寸的數(shù)據(jù)塊和/或數(shù)據(jù)包,反之亦然。
除了分割/組合信息數(shù)據(jù)流和編碼方法數(shù)據(jù)流之外,
因此,分割/組合信息數(shù)據(jù)流和編碼方法數(shù)據(jù)流對于由編碼器110執(zhí)行的編碼處理是關(guān)鍵的和必要的,并且通過加密過程一起或單獨(dú)保護(hù)。因此,當(dāng)與所有數(shù)據(jù)流都將被加密的已知現(xiàn)有技術(shù)解決方案相比時,僅消耗計(jì)算資源和處理能量的從1/100部分到1/1000的部分。因此,加密過程很快,而與是否有可用的專用加密電路無關(guān)。
此外,當(dāng)分割/組合信息數(shù)據(jù)流和/或編碼方法數(shù)據(jù)流被加密時,未經(jīng)授權(quán)的竊聽第三方不能理解如何使用其它數(shù)據(jù)流,以及數(shù)據(jù)塊和/或數(shù)據(jù)包應(yīng)當(dāng)如何定位以及在何處定位。
然而,可能出現(xiàn)數(shù)據(jù)塊和/或數(shù)據(jù)包具有相等尺寸的情況,因此,在對數(shù)據(jù)塊和/或數(shù)據(jù)包進(jìn)行編碼時不使用多種編碼方法。也可能發(fā)生數(shù)據(jù)塊和/或數(shù)據(jù)包根本未分割和/或組合,因?yàn)閿?shù)據(jù)塊和/或數(shù)據(jù)包已經(jīng)具有預(yù)定的最小/最大尺寸,因此不存在要加密的分割/組合信息。在這些類型的情況下,惡意第三方有可能對數(shù)據(jù)塊和/或數(shù)據(jù)包應(yīng)當(dāng)如何定位以及在何處定位進(jìn)行解密。因此,在本公開的實(shí)施方式中可選地采用替代選項(xiàng)。待加密的可選流涉及一個或多個熵編碼方法以及多個熵編碼數(shù)據(jù)塊和/或數(shù)據(jù)包的長度,其長度不同于在應(yīng)用熵編碼之前的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的長度。
實(shí)際上,由于
此外,由于
應(yīng)當(dāng)理解,在熵編碼之前的數(shù)據(jù)長度通常已經(jīng)是已知的,但是有時不是已知的,因而該數(shù)據(jù)長度需要被傳輸?shù)浇獯a器,例如通過將信息包括到待加密的中間編碼數(shù)據(jù)流,使得可以執(zhí)行解碼而與其它數(shù)據(jù)及其內(nèi)容無關(guān)。此外,即使熵編碼數(shù)據(jù)的長度也可以被表示/傳輸為原始數(shù)據(jù)(即,在熵編碼之前)的長度和熵編碼數(shù)據(jù)的長度之間的差,但是這樣做通常不是有利的。相反,為了簡化和保持?jǐn)?shù)據(jù)量低,將該信息作為實(shí)際長度信息傳輸通常是有益的。僅為了說明的目的,現(xiàn)在描述一個例子,其中圖像數(shù)據(jù)(d1)已經(jīng)用前述
惡意第三方理論上可能嘗試以用所有可能的編碼方法嘗試所有可能的分割/組合的方式對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密。然而,在這種情況下,試圖破解加密并對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密所需的計(jì)算資源量和時間將是相當(dāng)大的,并且將對密碼分析器提出新的挑戰(zhàn)。
此外,可選地,編碼器110可操作成將編碼和加密數(shù)據(jù)(e2)傳送到數(shù)據(jù)服務(wù)器和/或數(shù)據(jù)存儲器(圖1中未示出)以存儲在數(shù)據(jù)庫(圖1中未示出)中。數(shù)據(jù)服務(wù)器和/或數(shù)據(jù)存儲器被布置為可由解碼器120訪問,解碼器120有利地與編碼器110兼容,用于隨后對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼。
此外,可選地,編碼器110可操作成將至少一個密鑰和/或iv傳送到數(shù)據(jù)服務(wù)器和/或數(shù)據(jù)存儲器以存儲在數(shù)據(jù)庫中。
在一些示例中,解碼器120可選地可操作成從數(shù)據(jù)服務(wù)器和/或數(shù)據(jù)存儲器訪問編碼和加密數(shù)據(jù)(e2)。另外,可選地,解碼器120可操作成從數(shù)據(jù)服務(wù)器和/或數(shù)據(jù)存儲器和/或另一數(shù)據(jù)服務(wù)器訪問至少一個密鑰和/或iv。
在替代示例中,編碼器110可選地可操作成經(jīng)由通信網(wǎng)絡(luò)或經(jīng)由直接連接將編碼和加密數(shù)據(jù)(e2)流送到解碼器120。此外,應(yīng)注意,配備有基于硬件的編碼器或基于軟件的編碼器的裝置還可以直接與配備有基于硬件的編碼器或基于軟件的解碼器的另一裝置通信。雖然本公開的實(shí)施方式被描述為利用可操作成執(zhí)行計(jì)算指令的計(jì)算硬件,但是可以在專用硬件中實(shí)現(xiàn)本公開的實(shí)施方式,例如經(jīng)由專用集成電路(asic)和/或經(jīng)由使用現(xiàn)場可編程門陣列(fpga)。這樣的硬件實(shí)現(xiàn)方式是有用的,例如,用于在可能受到電離輻射暴露的裝置中實(shí)現(xiàn)很魯棒的加密,例如在諸如衛(wèi)星的基于空間的設(shè)備中。
在其它替換示例中,解碼器120可選地被實(shí)現(xiàn)為從諸如硬盤驅(qū)動器和固態(tài)驅(qū)動器(ssd)之類的非暫時性(即非瞬態(tài))計(jì)算機(jī)可讀存儲介質(zhì)中檢索編碼和加密數(shù)據(jù)(e2)。
此外,可選地,編碼器110的數(shù)據(jù)處理配置可操作成安排將至少一個密鑰從編碼器110傳輸?shù)浇獯a器120,以用于隨后對編碼和加密數(shù)據(jù)(e2)的解密和解碼。可選地,在相應(yīng)用戶之間手動地將至少一個密鑰從編碼器110傳輸?shù)浇獯a器120?;蛘?,可選地,通過加密電子郵件將至少一個密鑰從編碼器110傳輸?shù)浇獯a器120,例如,諸如通過使用完美隱私(pgp)、gnu隱私保護(hù)(gnupg)等加密的電子郵件?;蛘撸蛇x地,通過加密的通信連接將至少一個密鑰從編碼器110傳輸?shù)浇獯a器120??蛇x地,加密通信連接通過安全套接字層(ssl)/傳輸層安全(tls)實(shí)現(xiàn)。
解碼器120包括用于處理編碼和加密數(shù)據(jù)(e2)的數(shù)據(jù)處理配置以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)??蛇x地,解碼器120的數(shù)據(jù)處理配置通過采用至少一個risc處理器來實(shí)現(xiàn),該risc處理器可操作成執(zhí)行將在后面詳細(xì)闡述的程序指令;這樣的risc處理器能夠以很高的速度執(zhí)行相對更簡單的級聯(lián)操作,并且適合于例如實(shí)時地對以流傳輸格式提供的數(shù)據(jù)進(jìn)行解碼。以流傳輸格式提供的這樣的數(shù)據(jù)包括例如視頻信息、遠(yuǎn)程監(jiān)視視頻信息和/或視頻會議信息。
可選地,解碼器120的數(shù)據(jù)處理配置可操作成對以下述形式中的至少一種形式提供的編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼:編碼和加密的一維數(shù)據(jù)、編碼和加密的多維數(shù)據(jù)、編碼和加密的文本數(shù)據(jù)、編碼和加密的二進(jìn)制數(shù)據(jù)、編碼和加密的傳感器數(shù)據(jù)、編碼和加密的音頻數(shù)據(jù)、編碼和加密的圖像數(shù)據(jù)、編碼和加密的視頻數(shù)據(jù),但不限于此。
解碼器120的數(shù)據(jù)處理配置可操作成處理編碼和加密數(shù)據(jù)(e2),以確定一個或多個加密子部分及其一個或多個未加密子部分。編碼和加密數(shù)據(jù)(e2)的一個或多個未加密子部分包括非關(guān)鍵數(shù)據(jù)流,即被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息。
可選地,基于前述第一字節(jié)確定加密子部分。或者,可選地,可以基于在包括與加密和所采用的熵編碼方法有關(guān)的信息的熵編碼方法字節(jié)和/或熵編碼方法字中的前述msb進(jìn)行確定?;蛘?,可選地,基于對未加密的數(shù)據(jù)流和加密的數(shù)據(jù)流包括在編碼和加密數(shù)據(jù)(e2)中的順序進(jìn)行確定。或者,可選地,基于指示哪些數(shù)據(jù)流包含被編碼的信息以及哪些數(shù)據(jù)流不包含被編碼的信息的前述標(biāo)志位進(jìn)行確定。
可選地,解碼器120的數(shù)據(jù)處理配置在操作中被提供有用于生成解密和解碼數(shù)據(jù)(d3)的至少一個密鑰。可選地,使用至少一個密鑰,解碼器120的數(shù)據(jù)處理配置可操作成對一個或多個加密子部分進(jìn)行解密,以確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸、相對位置和/或一個或多個編碼方法。可選地,解碼器120的數(shù)據(jù)處理配置還可操作成確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的一個或多個熵編碼方法。
可選地,解碼器120的數(shù)據(jù)處理配置可操作成使用與至少一個秘鑰組合的至少一個初始化向量(“initvector”;iv)來對一個或多個加密子部分進(jìn)行解密。如前所述,在操作中將至少一個初始化向量提供給解碼器120。
此外,可選地,以至少一個壓縮數(shù)據(jù)流的形式提供一個或多個加密子部分。在這種情況下,解碼器120的數(shù)據(jù)處理配置可選地可操作成從至少一個壓縮數(shù)據(jù)流的第一字節(jié)確定與至少一個壓縮數(shù)據(jù)流相關(guān)聯(lián)的熵編碼方法。
此外,可選地,在至少一個壓縮數(shù)據(jù)流的開始處,例如在其第一字節(jié)之后,提供指示至少一個壓縮數(shù)據(jù)流的長度的信息。因此,解碼器120的數(shù)據(jù)處理通過僅對至少一個壓縮數(shù)據(jù)流的開始進(jìn)行解密來提供與將要解碼的數(shù)據(jù)量有關(guān)的信息,而不必對其進(jìn)行全部解密。這對于并行處理(即數(shù)據(jù)流的并行解碼)尤其有利。
解碼器120的數(shù)據(jù)處理配置然后可選地可操作成應(yīng)用熵編碼方法的逆過程,以解壓縮至少一個壓縮流,以確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的前述尺寸、前述相對位置和一個或多個編碼方法。
解碼器120的數(shù)據(jù)處理配置然后可操作成將一個或多個編碼方法的逆過程應(yīng)用于被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息,以對被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行解碼以生成多個解碼的數(shù)據(jù)塊和/或數(shù)據(jù)包??蛇x地,解碼器120的數(shù)據(jù)處理配置還可操作成在應(yīng)用一個或多個編碼方法的逆過程之前,將一個或多個熵編碼方法的逆過程應(yīng)用于包括在編碼和加密數(shù)據(jù)(e2)的一個或多個未加密子部分中的多個熵編碼數(shù)據(jù)塊和/或數(shù)據(jù)包。
隨后,解碼器120的數(shù)據(jù)處理配置可操作成基于尺寸和/或相對位置來組合多個解碼數(shù)據(jù)塊和/或數(shù)據(jù)包,以生成解密和解碼數(shù)據(jù)(d3)。
應(yīng)當(dāng)理解,指示與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的前述尺寸、前述相對位置和/或一個或多個編碼方法的信息以加密的方式被包括在加密子部分中。因此,對被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行解碼以生成解密和解碼數(shù)據(jù)(d3)需要對編碼和加密數(shù)據(jù)(e2)的加密子部分進(jìn)行正確地解密。
圖1僅僅是示例,其不會不適當(dāng)?shù)叵拗票疚牡臋?quán)利要求的范圍。應(yīng)當(dāng)理解,編解碼器130的具體設(shè)計(jì)作為示例提供,并且不應(yīng)被解釋為將編解碼器130限制為編碼器和解碼器的具體數(shù)字、類型或布置。本領(lǐng)域技術(shù)人員將認(rèn)識到本公開的實(shí)施方式的許多變化、替代和修改。
可選地,編解碼器130在單個裝置內(nèi)實(shí)現(xiàn)?;蛘?,可選地,編解碼器130在多個裝置之間有效地實(shí)現(xiàn)??蛇x地,編解碼器130例如通過使用一個或多個專用集成電路(asic)被實(shí)現(xiàn)為定制設(shè)計(jì)數(shù)字硬件?;蛘呋蛄硗獾?,編解碼器130在可在計(jì)算硬件上執(zhí)行的計(jì)算機(jī)軟件指令中實(shí)現(xiàn)。
編解碼器130可以實(shí)現(xiàn)為數(shù)據(jù)編解碼器、音頻編解碼器、圖像編解碼器和/或視頻編解碼器中的至少一項(xiàng),但不限于此。
此外,編解碼器130可以被實(shí)現(xiàn)為提供發(fā)送方與接收方之間的安全通信,同時顯著地節(jié)省數(shù)據(jù)傳輸所需的網(wǎng)絡(luò)帶寬,并且不需要用于數(shù)據(jù)傳輸?shù)募用芡ㄐ胚B接,諸如ssl/tls。在示例中,編解碼器130可以在基于請求-響應(yīng)類型通信的系統(tǒng)中實(shí)現(xiàn),諸如在網(wǎng)站瀏覽器和萬維網(wǎng)(www)服務(wù)器中用于數(shù)據(jù)傳輸?shù)某谋緜鬏攨f(xié)議(http)。
盡管今天加密的數(shù)據(jù)可能在將來通過使用“暴力攻擊(bruteforceattack)”技術(shù)被破解和解密,但是設(shè)想未來的加密算法將相應(yīng)地生成比當(dāng)前加密算法更強(qiáng)的加密密鑰,從而仍然確保數(shù)據(jù)的強(qiáng)加密。
除了“暴力攻擊”技術(shù)之外,還存在諸如“biclique攻擊”、“相關(guān)密鑰攻擊(related-keyattack)”、“paddingoracle攻擊”、“長度擴(kuò)展攻擊(lengthextensionattack)”技術(shù)等其它公知的攻擊技術(shù),但是這些技術(shù)基本上不能破壞由編碼器110執(zhí)行的加密。
僅僅為了說明的目的,下面提供了在編碼器110內(nèi)執(zhí)行的加密過程的技術(shù)示例。在該示例中,提出了一個通常有效的模型,用于通過使用對稱高級加密標(biāo)準(zhǔn)(aes)加密算法在具有擴(kuò)展的加密密鑰的密碼塊鏈接(cbc)模式中執(zhí)行以下步驟來對未加密的明文數(shù)據(jù)流進(jìn)行加密:
1.獲取或生成兩個加密密鑰,即key1和key2;
2.為aescbc生成加密偽隨機(jī)初始化向量(iv)字節(jié);
3.使用具有key1和iv的aescbc函數(shù)將明文字節(jié)(即,關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流)加密為密文字節(jié)(即,至少一個中間加密數(shù)據(jù)流);
4.合并iv和密文字節(jié);
5.使用具有key2和密文的hmac函數(shù)創(chuàng)建消息認(rèn)證碼(mac)字節(jié);以及
6.將mac和密文字節(jié)寫入數(shù)據(jù)流,即編碼和加密數(shù)據(jù)(e2)的一個或多個加密子部分。
此外,上述算法的偽碼如下:
key1=keystretch(getkey())
key2=keystretch(getkey())
iv=random()
ciphertext=iv+aes(key1,iv,plaintext)
mac=hmac(key2,ciphertext)
data=mac+ciphertext
在上面的示例中,使用“密鑰拉伸(keystretching)”技術(shù)創(chuàng)建了兩個加強(qiáng)的密鑰。“密鑰拉伸”技術(shù)通常通過運(yùn)行用于通過單向摘要算法(即散列算法)加密數(shù)千次的密碼來實(shí)現(xiàn)。這創(chuàng)建了足夠多的排列以保護(hù)密碼免受攻擊,例如,密鑰相關(guān)攻擊。
此后,為cbc模式創(chuàng)建相應(yīng)的隨機(jī)初始化向量(iv)字節(jié)。然后將這些iv字節(jié)加擾并混合到明文字節(jié)的一個或多個第一字節(jié)中,即關(guān)鍵數(shù)據(jù)流中的待加密的至少一個關(guān)鍵數(shù)據(jù)流。然后使用具有乘法擴(kuò)展的密鑰和iv字節(jié)的cbc模式中的對稱aes加密算法來對關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密。
使用iv字節(jié)對于提高由此獲得的加密的保護(hù)程度地目的是特別有利的,例如在關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流包含大量冗余數(shù)據(jù)的情況下。因此,在整個信息序列從開始到結(jié)束被破壞之前,入侵攻擊者不能對關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行解密。
最后,消息認(rèn)證碼(mac)字節(jié)被插入到密文字節(jié)中,即插入到至少一個中間加密數(shù)據(jù)流中。這防止了由在關(guān)鍵數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流中可能出現(xiàn)的冗余明文引起的可能相同的密文,并且還防止加密被通過例如“paddingoracle攻擊”技術(shù)被破解。這還確保了編碼和加密數(shù)據(jù)(e2)的一個或多個加密子部分的完整性是完整的。
現(xiàn)在參考圖2,提供了描述根據(jù)本公開的實(shí)施方式的對輸入數(shù)據(jù)(d1)進(jìn)行編碼和加密以生成相應(yīng)的編碼和加密數(shù)據(jù)(e2)的第一方法的步驟的流程圖。該方法被描述為邏輯流程圖中的步驟的集合,其表示可以在硬件、軟件或其組合(例如,如上所述)中實(shí)現(xiàn)的步驟序列。
僅出于說明的目的,接下來將參考圖1中所描繪的編碼器110來說明第一方法。
在步驟202,編碼器110的數(shù)據(jù)處理配置對輸入數(shù)據(jù)(d1)進(jìn)行編碼,從而生成多個中間編碼數(shù)據(jù)流。
可選地,步驟202包括這樣的子步驟,在該子步驟處編碼器110的數(shù)據(jù)處理配置采用多個分割操作和/或組合操作來將輸入數(shù)據(jù)(d1)劃分和/組合成多個數(shù)據(jù)塊和/或數(shù)據(jù)包,并且采用一個或多個編碼方法將該多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息編碼到該多個中間編碼數(shù)據(jù)流中的至少一個中間編碼數(shù)據(jù)流中。
可選地,步驟202包括這樣的子步驟,在該子步驟處編碼器110的數(shù)據(jù)處理配置采用一個或多個熵編碼方法將多個數(shù)據(jù)塊和/或數(shù)據(jù)包壓縮成多個熵編碼數(shù)據(jù)塊和/或數(shù)據(jù)包,其中指示熵編碼方法的信息或熵編碼方法的實(shí)現(xiàn)與熵編碼數(shù)據(jù)的長度以及(可選地)原始數(shù)據(jù)的長度一起被包括在多個中間編碼數(shù)據(jù)流中的至少一個中間編碼數(shù)據(jù)流中;指示熵編碼方法的信息或熵編碼方法的實(shí)現(xiàn)以及長度信息有利地包括在它們自己的中間數(shù)據(jù)流中。這樣的熵編碼可選地在使用上述編碼方法對一個或多個數(shù)據(jù)塊和/或數(shù)據(jù)包進(jìn)行編碼之后執(zhí)行??蛇x地,在該階段,所生成的中間編碼數(shù)據(jù)流可以在被加密之前被進(jìn)一步壓縮。接下來,在步驟204,編碼器110的數(shù)據(jù)處理配置使用一個或多個加密算法對多個中間編碼數(shù)據(jù)流中的至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密,以生成至少一個中間加密數(shù)據(jù)流。可選地,該至少一個關(guān)鍵數(shù)據(jù)流包括指示以下各項(xiàng)中的至少一項(xiàng)的信息:多個分割操作和/或組合操作、一個或多個編碼方法、一個或多個熵編碼方法和/多個熵編碼數(shù)據(jù)塊和/或數(shù)據(jù)包的長度,和/或在應(yīng)用熵編碼之前的數(shù)據(jù)塊和/或包的長度。
可選地,在步驟204,編碼器110的數(shù)據(jù)處理配置在對至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密時結(jié)合至少一個密鑰應(yīng)用至少一個初始化向量(“initvector”;iv)。
結(jié)合圖3描述了步驟204的加密過程。
隨后,在步驟206,編碼器110的數(shù)據(jù)處理配置將多個中間編碼數(shù)據(jù)流的未加密部分(即被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息)與至少一個中間加密數(shù)據(jù)流合并在一起以生成編碼和加密數(shù)據(jù)(e2)。
步驟202至步驟206僅是說明性的,并且在不脫離本文權(quán)利要求的范圍的情況下還可以提供其它替代方案,其中添加一個或多個步驟、移除一個或多個步驟,或者以不同順序提供一個或多個步驟。例如,可選地,該方法包括這樣的附加步驟,其中編碼器110的數(shù)據(jù)處理配置在加密之前將至少一個關(guān)鍵數(shù)據(jù)流壓縮為至少一個壓縮數(shù)據(jù)流??蛇x地,在附加步驟中,編碼器110的數(shù)據(jù)處理配置計(jì)算至少一個壓縮數(shù)據(jù)流的第一字節(jié),使得第一字節(jié)描述用于壓縮至少一個關(guān)鍵數(shù)據(jù)流的熵編碼方法。
此外,可選地,使用對稱aes加密算法的cbc模式來執(zhí)行步驟204??蛇x地,使用與至少一個密鑰合并的隨機(jī)生成的iv來執(zhí)行步驟204。應(yīng)當(dāng)理解,可以使用其它加密算法來執(zhí)行步驟204,而不管iv是否用于對至少一個關(guān)鍵數(shù)據(jù)流進(jìn)行加密,并且不管是否使用cbc模式。
或者,可選地,輸入數(shù)據(jù)(d1)已經(jīng)被編碼。在這種情況下,該方法開始于這樣的替代步驟,其中至少一個關(guān)鍵數(shù)據(jù)流被識別然后加密??蛇x地,通過逐個流處理輸入數(shù)據(jù)(d1)并識別其中的一個或多個關(guān)鍵數(shù)據(jù)流來執(zhí)行這種識別。當(dāng)輸入數(shù)據(jù)(d1)的每個數(shù)據(jù)流包括所采用的編碼方法的信息以及該數(shù)據(jù)流的長度時,該過程是快速和高效的。
圖3是根據(jù)本公開的實(shí)施方式的加密過程的步驟的示意圖。
在步驟302,編碼器110的數(shù)據(jù)處理配置讀取或接收多個中間編碼數(shù)據(jù)流的內(nèi)容。
在步驟304,編碼器110的數(shù)據(jù)處理配置處理多個中間編碼數(shù)據(jù)流的第一數(shù)據(jù)流或下一數(shù)據(jù)流。
在步驟306,編碼器110的數(shù)據(jù)處理配置確定在步驟304處理的第一數(shù)據(jù)流或下一數(shù)據(jù)流是否需要被加密。
如果在步驟306確定需要對第一數(shù)據(jù)流或下一數(shù)據(jù)流進(jìn)行加密,則執(zhí)行步驟308。否則,如果確定不需要對第一數(shù)據(jù)流或下一數(shù)據(jù)流進(jìn)行加密,則執(zhí)行步驟310。
在步驟308,編碼器110的數(shù)據(jù)處理配置對第一數(shù)據(jù)流或下一數(shù)據(jù)流進(jìn)行加密。根據(jù)步驟308,編碼器110的數(shù)據(jù)處理配置可選地寫入或發(fā)送加密信息,即指示在步驟308處采用的一個或多個加密算法的信息。
此后,在步驟310,編碼器110的數(shù)據(jù)處理配置寫入或發(fā)送加密數(shù)據(jù)流以包括在編碼和加密數(shù)據(jù)(e2)中。
當(dāng)?shù)谝粩?shù)據(jù)流或下一數(shù)據(jù)流未被加密時,編碼器110的數(shù)據(jù)處理配置在步驟310處原樣地寫入或發(fā)送第一數(shù)據(jù)流或下一數(shù)據(jù)流。
接下來,在步驟312,編碼器110的數(shù)據(jù)處理配置確定輸入數(shù)據(jù)(d1)中是否存在下一數(shù)據(jù)流。如果確定存在下一數(shù)據(jù)流,則加密過程在步驟302重新開始。否則,如果確定輸入數(shù)據(jù)(d1)中不存在下一數(shù)據(jù)流,則加密過程結(jié)束。
步驟302至步驟312僅是說明性的,并且在不脫離本文權(quán)利要求的范圍的情況下還可以提供其它替代方案,其中添加一個或多個步驟、移除一個或多個步驟,或者以不同順序提供一個或多個步驟。
本公開的實(shí)施方式提供了計(jì)算機(jī)程序產(chǎn)品,其包括存儲有計(jì)算機(jī)可讀指令的非暫時性(即非瞬態(tài))計(jì)算機(jī)可讀存儲介質(zhì),該計(jì)算機(jī)可讀指令可由包括處理硬件的計(jì)算裝置執(zhí)行以執(zhí)行結(jié)合圖2和圖3描述的第一方法。計(jì)算機(jī)可讀指令可選地可從軟件應(yīng)用商店下載,例如從“appstore”下載到計(jì)算裝置。
圖4是描述根據(jù)本公開的實(shí)施方式的對編碼和加密數(shù)據(jù)(e2)進(jìn)行解密和解碼以生成相應(yīng)的解密和解碼數(shù)據(jù)(d3)的第二方法的步驟的流程圖的示意圖。該方法被描述為邏輯流程圖中的步驟的集合,其表示可以在硬件、軟件或其組合中實(shí)現(xiàn)的步驟序列。
僅出于說明的目的,接下來將參考圖1中所描繪的解碼器120來說明第二方法。
在步驟402,解碼器120的數(shù)據(jù)處理配置處理編碼和加密數(shù)據(jù)(e2)以確定一個或多個加密子部分及一個或多個未加密子部分。編碼和加密數(shù)據(jù)(e2)的一個或多個未加密子部分包括非關(guān)鍵數(shù)據(jù)流,即被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息。
在步驟404,解碼器120的數(shù)據(jù)處理配置對編碼和加密數(shù)據(jù)(e2)的一個或多個加密子部分進(jìn)行解密,以確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸、相對位置和/或一個或多個編碼方法??蛇x地,在步驟404,解碼器120的數(shù)據(jù)處理配置還確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的一個或多個熵編碼方法。
可選地,在步驟404,解碼器120的數(shù)據(jù)處理配置使用至少一個初始化向量(“initvector”;iv)以及至少一個密鑰對一個或多個加密子部分進(jìn)行解密。
可選地,在操作中將至少一個密鑰和/或至少一個初始化向量提供給解碼器120。
結(jié)合圖5描述了步驟404的解密過程。
接下來,在步驟406,解碼器120的數(shù)據(jù)處理配置將在步驟404確定的一個或多個編碼方法的逆過程應(yīng)用于被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息,以對被編碼的多個數(shù)據(jù)塊和/或數(shù)據(jù)包的信息進(jìn)行解碼,從而生成多個解碼的數(shù)據(jù)塊和/或數(shù)據(jù)包??蛇x地,在步驟406,解碼器120的數(shù)據(jù)處理配置還提取應(yīng)用的熵編碼方法的信息以及熵編碼的數(shù)據(jù)塊和/或包的長度信息,并且在應(yīng)用一個或多個編碼方法的逆過程之前,將一個或多個熵編碼方法的逆過程應(yīng)用于包括在編碼和加密數(shù)據(jù)(e2)的一個或多個未加密子部分中的多個熵編碼的數(shù)據(jù)塊和/或數(shù)據(jù)包。在中間編碼數(shù)據(jù)流在采用加密之前被進(jìn)一步壓縮的情況下,解碼器120應(yīng)用一個或多個相應(yīng)的逆過程數(shù)據(jù)解壓縮方法。
隨后,在步驟408,解碼器120的數(shù)據(jù)處理配置基于在步驟404確定的尺寸和/或相對位置組合多個解碼數(shù)據(jù)塊和/或數(shù)據(jù)包,以生成解密和解碼數(shù)據(jù)(d3)。
步驟402至步驟408僅是說明性的,并且在不脫離本文權(quán)利要求的范圍的情況下還可以提供其它替代方案,其中添加一個或多個步驟、移除一個或多個步驟,或者以不同順序提供一個或多個步驟。例如,可選地,該方法包括這樣的附加步驟,在該附加步驟,解碼器120的數(shù)據(jù)處理配置從一個或多個加密子部分的至少一個壓縮數(shù)據(jù)流的第一字節(jié)確定與至少一個壓縮數(shù)據(jù)流相關(guān)聯(lián)的熵編碼方法??蛇x地,在附加步驟中,解碼器120的數(shù)據(jù)處理配置將熵編碼方法的逆過程應(yīng)用于解壓縮至少一個壓縮流以確定與多個數(shù)據(jù)塊和/或數(shù)據(jù)包相關(guān)聯(lián)的尺寸、相對位置和一個或多個編碼方法。
此外,可選地,使用對稱aes加密算法的cbc模式來執(zhí)行步驟404。可選地,使用與至少一個密鑰合并的隨機(jī)生成的iv來執(zhí)行步驟404。應(yīng)當(dāng)理解,可以使用其它解密算法來執(zhí)行步驟404,而不管iv是否用于對一個或多個加密子部分進(jìn)行解密,并且不管是否使用cbc模式。
圖5是根據(jù)本公開的實(shí)施方式的解密過程的步驟的示意圖。
在步驟502,解碼器120的數(shù)據(jù)處理配置讀取或接收編碼和加密數(shù)據(jù)(e2)的內(nèi)容。
在步驟504,解碼器120的數(shù)據(jù)處理配置處理包括在編碼和加密數(shù)據(jù)(e2)內(nèi)的第一數(shù)據(jù)流或下一數(shù)據(jù)流。
在步驟506,解碼器120的數(shù)據(jù)處理配置確定第一數(shù)據(jù)流或下一數(shù)據(jù)流是否被加密??蛇x地,在步驟506,基于以下各項(xiàng)中的至少一項(xiàng)進(jìn)行確定:前述第一字節(jié)、在熵編碼方法字節(jié)和/或熵編碼方法字中的最高有效位(msb)、未加密數(shù)據(jù)流和加密數(shù)據(jù)流的順序,和/或前述標(biāo)志位。
如果在步驟506確定第一數(shù)據(jù)流或下一數(shù)據(jù)流被加密,則執(zhí)行步驟508。否則,如果確定第一數(shù)據(jù)流或下一數(shù)據(jù)流未加密,則執(zhí)行步驟510。
在步驟508,解碼器120的數(shù)據(jù)處理配置對第一數(shù)據(jù)流或下一數(shù)據(jù)流進(jìn)行解密。根據(jù)步驟508,解碼器120的數(shù)據(jù)處理配置可選地讀取或接收加密信息,即指示與第一數(shù)據(jù)流或下一數(shù)據(jù)流相關(guān)聯(lián)的一個或多個加密算法的信息。
此后,在步驟510,解碼器120的數(shù)據(jù)處理配置寫入或發(fā)送解密的數(shù)據(jù)流。
當(dāng)?shù)谝粩?shù)據(jù)流或下一數(shù)據(jù)流未加密時,解碼器120的數(shù)據(jù)處理配置在步驟510處原樣地寫入或發(fā)送第一數(shù)據(jù)流或下一數(shù)據(jù)流。
接下來,在步驟512,解碼器120的數(shù)據(jù)處理配置確定在編碼和加密數(shù)據(jù)(e2)中是否存在下一個數(shù)據(jù)流。如果確定存在下一數(shù)據(jù)流,則解密過程在步驟502重新開始。否則,如果確定在編碼和加密數(shù)據(jù)(e2)中不存在下一數(shù)據(jù)流,則解密過程結(jié)束。
步驟502至512僅是說明性的,并且在不脫離本文權(quán)利要求的范圍的情況下還可以提供其它替代方案,其中添加一個或多個步驟、移除一個或多個步驟,或者以不同順序提供一個或多個步驟。
本公開的實(shí)施方式提供了計(jì)算機(jī)程序產(chǎn)品,其包括存儲有計(jì)算機(jī)可讀指令的非暫時性(即非瞬態(tài))計(jì)算機(jī)可讀存儲介質(zhì),該計(jì)算機(jī)可讀指令可由包括處理硬件的計(jì)算裝置執(zhí)行以執(zhí)行結(jié)合圖4和圖5描述的第二方法。計(jì)算機(jī)可讀指令可選地可從軟件應(yīng)用商店下載,例如從“appstore”下載到計(jì)算裝置。
前述加密方法和加密過程適合于實(shí)現(xiàn)到編碼器或另一相應(yīng)的預(yù)處理器中。類似地,上述解密方法和解密過程適合于實(shí)現(xiàn)到解碼器或另一相應(yīng)的預(yù)處理器中。上述方法可以在軟件中實(shí)現(xiàn)和/或通過使用硬件邏輯(例如asic)來實(shí)現(xiàn)。眾所周知,許多系統(tǒng)具有用于加密的專用微芯片,例如當(dāng)前的aes,其高效地實(shí)現(xiàn)加密,同時比純軟件方法使用更少的電力。與使用具有對抗第三方攻擊的相應(yīng)強(qiáng)度的加密(例如對抗監(jiān)視組織)的現(xiàn)有技術(shù)方法相比,前述方法可以實(shí)現(xiàn)相當(dāng)大的電力和能量節(jié)省。
在根據(jù)本公開的實(shí)施方式的加密方法作為軟件實(shí)現(xiàn)執(zhí)行的情況下,有益的是完全或部分地在受保護(hù)的存儲器空間中執(zhí)行該軟件處理。這樣的預(yù)防有助于嘗試防止可能的惡意軟件讀取待加密的信息或在加密過程中使用的加密密鑰。相應(yīng)地,在這種情況下,解密有利地也在受保護(hù)的存儲器空間中執(zhí)行。即使許多當(dāng)前的裝置包括用于加密的專用微芯片,或者存在可用于加密的單獨(dú)指令集,如在前述aes中,仍然有益的是,根據(jù)本公開的加密解決方案確保加密的明文數(shù)據(jù)完全在受保護(hù)的存儲器空間中或在部分受保護(hù)的存儲器空間中處理;在后一種情況下,如果例如所使用的加密密鑰在受保護(hù)的存儲器空間中被處理,則可以在受保護(hù)的存儲器空間外部處理待加密的明文數(shù)據(jù)。最有益的是,總是僅在受保護(hù)的存儲器中存在未加密的形式的明文信息。然而,如果這不可能,則有利的是確保在加密之后不會在未受保護(hù)的存儲器中就此結(jié)束。例如,有益的是,根據(jù)本公開的實(shí)施方式加密的數(shù)據(jù)的部分總是僅存儲在受保護(hù)的存儲器中。存儲器保護(hù)是可以在大多數(shù)操作系統(tǒng)(例如現(xiàn)有的操作系統(tǒng))中實(shí)現(xiàn)的一種保護(hù),但是技術(shù)和訪問機(jī)制可能有所不同。
根據(jù)本公開的實(shí)施方式的方法可以利用任何合適的編碼解決方案來實(shí)現(xiàn),而不管使用哪種加密算法。在這種情況下,前述方法不改變加密算法的行為,這意味著由加密算法提供的保護(hù)不會受到妥協(xié)。
前述方法使得可以使用很快速高效的加密算法。在這點(diǎn)上,前述方法高效地使用加密算法,而不干擾加密算法本身的內(nèi)部操作。適合于用前述方法實(shí)現(xiàn)的加密算法的示例包括但不限于aes、rsa、twofish、blowfish、數(shù)據(jù)加密標(biāo)準(zhǔn)(des)、三重des(3-des)、serpent、國際數(shù)據(jù)加密算法(idea)、mars、rivestcipher6(rc6)、camellia、cast-128、skipjack、擴(kuò)展微型加密算法(xtea)等,這些示例名稱包括注冊商標(biāo)。
根據(jù)本公開的實(shí)施方式的前述方法提供了與已知的現(xiàn)有技術(shù)方法相比很快速并且相當(dāng)高效的保護(hù)數(shù)據(jù)的方式。值得注意的是,僅對編碼數(shù)據(jù)的一個或多個必要和關(guān)鍵部分進(jìn)行加密。例如,當(dāng)使用漸進(jìn)式
此外,該加密過程的附加優(yōu)點(diǎn)是,編碼和加密數(shù)據(jù)(e2)不需要通過具有受保護(hù)的安全網(wǎng)絡(luò)連接的網(wǎng)絡(luò)(例如采用虛擬專用網(wǎng)絡(luò)(vpn)隧道、安全殼(ssh)或ssl/tls協(xié)議)來傳輸。因此,前述方法提供了用于例如在公共互聯(lián)網(wǎng)網(wǎng)絡(luò)中或在網(wǎng)站服務(wù)和云服務(wù)中傳輸文本、二進(jìn)制、音頻、圖像、視頻和其它類型的數(shù)據(jù)的有利模型。
本公開的實(shí)施方式易于在很大范圍的系統(tǒng)和裝置中使用,例如智能電話、個人計(jì)算機(jī)(pc)、視聽設(shè)備、照相機(jī)、通信網(wǎng)絡(luò)、數(shù)據(jù)存儲裝置、監(jiān)視系統(tǒng)、視頻會議系統(tǒng)、醫(yī)療設(shè)備、地震設(shè)備、測量設(shè)備、“黑盒子”飛行記錄器、使用采樣技術(shù)的數(shù)字樂器,但不限于此。
在不脫離由所附權(quán)利要求限定的本發(fā)明的范圍的情況下,可以對前述的本發(fā)明的實(shí)施方式進(jìn)行修改。用于描述本發(fā)明和對本發(fā)明要求保護(hù)的諸如“包含”、“包括”、“含有”、“涵蓋”、“具有”、“是”的表述旨在以非排他性的方式解釋,即允許未明確描述的項(xiàng)目、組件或元件的存在。對單數(shù)形式的引述也應(yīng)解釋為涉及復(fù)數(shù)形式。所附權(quán)利要求中括號內(nèi)所包括的數(shù)字旨在幫助理解權(quán)利要求,而不應(yīng)以任何方式解釋為限制這些權(quán)利要求所要求保護(hù)的主題。