国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于JSON的RSA-PKCS#1加密算法的安全性研究*

2018-01-29 01:36:46建,蔣琳,廖清,王
關鍵詞:明文加密算法密文

何 建,蔣 琳,廖 清,王 軒

(哈爾濱工業(yè)大學深圳研究生院 計算機科學與技術學院,廣東 深圳 518055)

0 引言

互聯(lián)網(wǎng)中數(shù)據(jù)的安全性可以分為數(shù)據(jù)在傳輸過程中的安全與數(shù)據(jù)在端點存儲的安全兩類[1]。通常情況下,互聯(lián)網(wǎng)中的數(shù)據(jù)在傳輸過程中是通過SSL/TLS協(xié)議來保證其安全性的。但是,SSL/TLS協(xié)議只能夠保證數(shù)據(jù)在端到端的傳輸過程中的安全性,并不能保證數(shù)據(jù)在端點的存儲是安全的[2]。因為數(shù)據(jù)被傳輸?shù)蕉它c后就要經(jīng)過SSL/TLS協(xié)議解密成明文,然后以明文形式存儲于端點。這樣,如果端點是不可信的,那么,就意味著數(shù)據(jù)完全暴露在危險之下,有極大的可能被惡意的攻擊者利用?;贘SON的加密標準的提出,恰好可以解決上述存在的安全問題?;贘SON的加密標準是針對應用層數(shù)據(jù)進行的加密操作,可以將敏感數(shù)據(jù)的所有權和控制權牢牢地掌握在用戶自己的手中。

基于JSON的RSA-PKCS#1加密算法是基于JSON的加密標準中的一種加密算法,且被作為第一推薦算法使用。它利用JSON的特有結構,對應用層數(shù)據(jù)進行RSA加密運算生成密文,并最終生成符合JSON結構特點的序列。它不依賴任何解析器可以獨立完成數(shù)據(jù)的解析。但因為其在加密明文前需要進行符合公鑰密碼學標準的填充預處理[3],而此填充預處理因為不夠充分的安全考慮,使得攻擊者可以利用選擇密文攻擊破解密文。

目前針對基于JSON的安全算法的研究包括針對JSON結構的簽名繞過攻擊[4]和利用JSON結構漏洞的Web劫持攻擊[5]。另外,還有若干針對SSL/TLS協(xié)議、XML協(xié)議等實施選擇密文攻擊的研究[6-8]。結合國內(nèi)外研究者的研究經(jīng)驗,本文展開針對基于JSON的RSA-PKCS#1加密算法的選擇密文攻擊的研究。由于JSON協(xié)議具有輕量級、自解析等特點,使得它成為了應用開發(fā)者數(shù)據(jù)交換格式的首選,其未來的前景也更加令人期待,所以,針對基于JSON的RSA-PKCS#1加密算法的安全性研究具有重要的現(xiàn)實意義。

1 預備知識

1.1 JSON的基本概念

JavaScript對象標記(JavaScript Object Notation, JSON)是一種輕量級的數(shù)據(jù)交換格式。它采用完全不依賴于計算機程序語言的文本格式來存儲和表示數(shù)據(jù)。簡單的結構使得 JSON 成為數(shù)據(jù)交換類型語言中的首選。JSON方便人們編寫,同時也易于機器的解析,可以有效地提升網(wǎng)絡傳輸效率[9]。

在JSON結構當中,其整體結構需要用大括號“{}”括起來,數(shù)據(jù)結構表示為鍵值對的形式。在數(shù)組結構當中,其整體結構需要用中括號“[]”括起來。

表1為一個使用JSON結構表示的事物,通過屬性-值的方式來對此事物進行描述。

表1 使用JSON結構描述事物

目前,絕大多數(shù)的計算機語言都已經(jīng)支持JSON,包括ASP、C/C++、Java、JavaScript、Python以及Go語言等。同時,目前JSON的應用場景也非常豐富,包括Apache CXF、OpenID Connect等都實現(xiàn)了通過JSON進行數(shù)據(jù)傳輸?shù)墓δ堋?/p>

1.2 基于JSON的RSA-PKCS#1加密算法

針對表1中的內(nèi)容,使用基于JSON的RSA-PKCS#1加密算法對其加密生成密文。同時分別對header、payload以及生成的密文進行base64url編碼,并用“.”進行連接,得到的結果如表2所示。

表2 基于JSON的RSA-PKCS#1加密的結果

結果按照順序依次為:

(1)header:用于標注使用的加密算法,也可能會用于存儲加密密鑰,或其他與加密密鑰相關的信息。

(2)payload:需要加密的內(nèi)容,加密算法由header中的“alg”所指定,本文中為RSA1_5(RSA-PKCS#1)。

(3)ciphertext:加密生成的密文。

1.3 選擇密文攻擊

在針對密碼學安全分析的研究當中,選擇密文攻擊指的是一種攻擊方式。選擇密文攻擊要求攻擊者掌握對解密機的訪問權限,攻擊者具有一定的能力來獲取或者構造一定數(shù)量的密文,然后可以利用解密機對這些密文進行解密,通過一定的運算最終可以在未獲取密鑰的情況下破解出密文所對應的明文,此攻擊被稱為選擇密文攻擊。

與選擇密文攻擊密切相關的一個問題是密文的可延展性。例如,如果一個加密方案擁有這樣一個屬性:給定未知消息m的密文c,可得到未知消息m′的密文c′,其中m′和m具有某種已知的關聯(lián)。例如給定m的密文c,可以構造2m對應的密文c′,c′=X*c,其中X表示利用密文的可延展性所產(chǎn)生的與2有關系的中間變量。我們稱符合上例中的特性為可延展性。RSA加密算法具有此類可延展性。

利用選擇密文攻擊,惡意攻擊者可以通過事先任意搜集或構造一定數(shù)量的密文,讓這些密文透過被攻擊的加密算法進行解密運算,然后利用某些規(guī)則可以在未破解出加密算法私鑰的情況下,獲取到密文對應的明文。

2 基于JSON的RSA-PKCS#1加密算法的選擇密文攻擊

在針對基于JSON的RSA-PKCS#1加密算法的選擇密文攻擊的場景中,攻擊者的目的就是在不知道RSA算法私鑰的情況下,成功破解出由RSA加密的密文c。為了達到這一目的,攻擊者利用選擇密文攻擊原理,通過不斷地調(diào)整中間變量值s來調(diào)整密文c的值,并利用前一次服務器的反饋信息調(diào)整下一次的密文c′,c″,…,再繼續(xù)進行攻擊,如此過程循環(huán),直到破解出密文c的值。

選擇性密文攻擊具體可分為以下兩個步驟:

(1)驗證函數(shù)庫是否存在可攻擊的漏洞

為了驗證本攻擊所針對的漏洞是否存在,構造多個攻擊向量,這些攻擊向量都是密文消息,但是這些密文消息都故意在某一部分不符合PKCS#1填充規(guī)則,比如不加空字節(jié)、在Padding部分中加入空字節(jié)、前兩個字節(jié)不是0x00和0x02等,其具體內(nèi)容如表3所示。

表3 基于JSON的PKCS#1加密算法的攻擊向量

攻擊者利用上述攻擊向量,構造假的密文發(fā)送給服務器,然后通過服務器的返回消息判斷是否存在漏洞。

(2)利用找到的利用點實施選擇密文攻擊

當攻擊者確定服務器存在漏洞后,將會進行選擇密文攻擊。

現(xiàn)假設某攻擊者截獲一條使用RSA-PKCS#1算法加密的數(shù)據(jù)c,并想要破解出其對應明文m。已知m與c的關系為m=cd(modn)。此時,攻擊者隨機生成一個整數(shù)s,使得:

c'=cse(modn)

(1)

由RSA的可延展性,可以得到:

m'=ms(modn)

(2)

攻擊者將此c'發(fā)送至目標服務器。目標服務器先對其進行RSA解密,之后再對解密得到的數(shù)據(jù)進行PKCS#1編碼檢驗。如果服務器向攻擊者返回消息稱c'符合PKCS#1標準,則攻擊者可以獲得到對攻擊有利消息,即ms的頭兩個字節(jié)為00和02。現(xiàn)設輔助變量B:

B=28(k-2)

(3)

其中,k為n的字節(jié)長度。

如果ms符合PKCS#1標準,則可以得到如下關系:

2B≤ms(modn)<3B

(4)

進一步,攻擊者可以通過選取恰當?shù)膕值,不斷地縮小m的取值范圍,最終將范圍縮小至一個區(qū)間,此時即可得出m的值。攻擊的實施過程如圖1所示。

圖1 選擇密文攻擊圖解

攻擊算法為,攻擊者需要按照上述格式構造基于JSON的解密請求,并且通過選擇密文攻擊的方法構造攻擊請求消息,發(fā)送給服務器。具體實施如算法1。

算法1:基于JSON的RSA-PKCS#1加密算法的選擇密文攻擊輸入:給定密文c值、RSA-PKCS#1加密算法公鑰(n,e)輸出:密文c值所對應的明文m值步驟:Step1:盲試。對于給定的密文c值,隨機選取不同的s0,檢查c(s0)e(modn)是否符合PKCS#1標準。知道第一次成功選取到符合要求的s0,此時我們可以得到以下關系式c0←c(s0)e(modn)M0←{[2B,3B-1]}i←1Step2:尋找符合PKCS#1標準的消息。Step2.a(chǎn):初級尋找階段。如果i=1,然后取最小的s1,使得s1?n3B,使得c0(s1)e(modn)符合PKCS#1標準Step2.b:尋找至只剩一個間隔階段。如果i>1,同時Mi-1集合中區(qū)間個數(shù)大于1,則需要重新選取si值,使得si?si-1,同時si使得c0(si)e(modn)符合PKCS#1標準Step2.c:間隔內(nèi)尋找。當Mi集合中區(qū)間個數(shù)為1時(假設Mi-1={[a,b]}),然后選取較小的si,ri值,且滿足以下關系式ri?2bsi-1-2Bn2B+rinb£si<3B+rina根據(jù)上述兩個不等式,知道找到si滿足c0(si)e(modn)符合PKCS#1標準Step3:縮小尋找范圍。有上step2.c找到恰當?shù)膕i值,根據(jù)此si計算Mi集合Mi←∪{[maxa,2B+rnsi(),min(b,3B-1+rnsi]}foralla,b[]∈Mi-1andasi-3B+1n?si

3 結果及加固方案

3.1 結果

利用上述攻擊算法,實現(xiàn)了攻擊程序。本攻擊針對一個提供RSA解密服務的服務器實施攻擊。使用RSA-PKCS#1算法加密一則消息“My666”,生成密文,作為HTTP的Payload值發(fā)送至服務器,然后構造用于測試服務器是否存在漏洞的攻擊向量,并發(fā)送給服務器。

攻擊程序利用攻擊向量測試的結果實施選擇密文攻擊,經(jīng)過多次的服務器訪問,最后可以破解出RSA算法加密的密文,結果如圖2所示。

圖2 針對基于JSON的RSA-PKCS#1加密算法的攻擊結果

通過使用不同長度的RSA密鑰值,計算成功破解一條密文的攻擊實施次數(shù)的最小值與平均值,具體情況如表4所示。

表4 基于JSON的RSA-PKCS#1選擇密文攻擊攻擊結果

由表4可以得出結論:隨著密鑰長度的增加,導致破解一條基于JSON的RSA-PKCS#1加密密文的計算次數(shù)也隨之增加。這是因為密鑰長度決定明文長度,即明文的可能取值的范圍增大,因此導致中間變量s的選取空間增大,增大了訪問服務器所用的次數(shù)。

在本機為Linux操作系統(tǒng),3.2 GHz的Intel i5處理器的計算能力下,破解一條1 024 bit的基于JSON的RSA-PKCS#1密文大概需要10 000 s。

3.2 加固方案

傳統(tǒng)的隨機填充加固方案中[10],攻擊者構造假的密文需要利用前一次攻擊服務器反饋回來的消息,所以,如果可以使得攻擊者得到的反饋消息無差異化,即當服務器檢查出請求消息不符合PKCS#1標準時,也假裝此請求符合PKCS#1標準,正常進行后續(xù)的通信流程。傳統(tǒng)加固流程可以應對的攻擊者攻擊方式如圖3所示。

圖3 隨機填充方案可以阻止的攻擊方式

不同的是,服務器不使用真實明文作為返回值,而是隨機生成一個隨機數(shù)作為替代值返回給攻擊者。這樣來,攻擊者就無法利用構造的假消息進行選擇密文攻擊。

如果攻擊者使用含有相同密文值的攻擊請求再次向服務器發(fā)起訪問,因為每次調(diào)用隨機填充方法時,所產(chǎn)生的隨機數(shù)都不相同,那么通過比對兩次返回的結果,如果值不相同則可斷定服務器識別出了攻擊并使用了隨機數(shù)替代了真實明文。攻擊者由此可知,此次向服務器發(fā)起訪問的攻擊請求中所對應的明文值符合PKCS#1標準,因此獲得了對攻擊有利的反饋消息,即攻擊漏洞。改進的攻擊流程具體如圖4所示,此情況下傳統(tǒng)的基于隨機填充的加固方式不能夠抵抗攻擊。

圖4 改進的選擇密文攻擊

針對此種情況,采用以隨機數(shù)替代密鑰值的方式已經(jīng)不能避免選擇密文攻擊,所以提出使用固定值代替隨機數(shù),可以使用服務器的公鑰值作為替代真實明文的數(shù)據(jù)進行返回。此時,攻擊者兩次的攻擊請求因為都使用了相同的固定值代替明文作為返回消息,攻擊者并不能識別出所發(fā)送的請求是否符合PKCS#1標準,因此不能繼續(xù)進行選擇密文攻擊。所以采用固定值而非隨機填充方式的加固方案,在避免攻擊者實施選擇密文攻擊方面更具實用意義,可以抵抗攻擊者更復雜的攻擊手段。

4 結論

為提升基于JSON的RSA-PKCS#1加密算法的安全性,本文通過分析選擇密文攻擊的原理與漏洞存在原因,結合基于JSON結構的加密算法的通信流程,提出基于JSON的RSA-PKCS#1加密算法的選擇密文攻擊,并通過實驗證明漏洞存在。同時針對此漏洞,本文提出了一種改進的加固方案,通過分析傳統(tǒng)的隨機填充加固方案的弊端,提出使用固定值代替隨機數(shù)來作為服務器返回值的改進加固方案,以使得服務器可以無差別地處理攻擊請求,避免了此類攻擊的威脅。

[1] 馮登國, 張敏, 李昊. 大數(shù)據(jù)安全與隱私保護[J]. 計算機學報, 2014, 37(1): 246-258.

[2] DIERKS T. The transport layer security (TLS) protocol version 1.2[J]. Network Working Group, 2008: 17-30.

[3] KALISKI B. PKCS# 1: RSA encryption version 1.5[J]. RSA Laboratories Ease, 1998: 4-20.

[4] ALVARO M, OLEKSANDR M. Friday the 13th: JSON attac-ks [C]. Proceedings of the Black Hat 2017 Conference, New York, 2017: 82-127.

[5] DAVID R. The security risks of Web 2.0[J]. Technical Report, Defcon, 2009: 25-32.

[6] MEYER C. Revisiting SSL/TLS implementations: new bleichenbacher side channels and attacks[C].USENIX Security Symposium, New York, 2014: 733-748.

[7] JAGER T, SCHINZEL S, SOMOROVSKY J. Bleichenbacher’s

attack strikes again: breaking PKCS# 1 v1.5 in XML encryption[J]. Computer Security ESORICS, 2012: 752-769.

[8] BLEICHENBACHER D. Chosen ciphertext attacks against protocols based on the RSA encryption standard PKCS#1[C].Advances in Cryptology CRYPTO'98. Springer Berlin/Heidelberg, 1998: 1-12.

[9] BRAY T. The javascript object notation (JSON) data interchange format[J]. Internet Engineering Task Force, 2014:45-67.

[10] RESCORLA E. Preventing the million message attack on cryptographic message syntax[J]. Network Working Group, 2002: 12-17.

猜你喜歡
明文加密算法密文
一種針對格基后量子密碼的能量側信道分析框架
一種支持動態(tài)更新的可排名密文搜索方案
基于模糊數(shù)學的通信網(wǎng)絡密文信息差錯恢復
奇怪的處罰
奇怪的處罰
基于小波變換和混沌映射的圖像加密算法
四部委明文反對垃圾焚燒低價競爭
云存儲中支持詞頻和用戶喜好的密文模糊檢索
Hill加密算法的改進
屯留县| 东海县| 车致| 博野县| 安龙县| 金川县| 双鸭山市| 玉门市| 新乡市| 雷波县| 临汾市| 云梦县| 西昌市| 陕西省| 观塘区| 漳浦县| 新野县| 衡山县| 万山特区| 临沧市| 察隅县| 遂溪县| 十堰市| 石楼县| 巧家县| 浠水县| 东阳市| 房产| 湘潭市| 农安县| 左贡县| 利津县| 孟村| 桐庐县| 丰顺县| 镇原县| 乌拉特后旗| 韩城市| 荥经县| 潮安县| 从化市|