本發(fā)明涉及數(shù)據(jù)隱私保護(hù)的研究領(lǐng)域,特別涉及一種基于ShadowDOM的Web應(yīng)用加解密方法。
背景技術(shù):
::隨著互聯(lián)網(wǎng)的飛速發(fā)展的同時(shí),用戶(hù)隱私泄露問(wèn)題日益嚴(yán)重。用戶(hù)的隱私數(shù)據(jù)不但可能在服務(wù)器端數(shù)據(jù)庫(kù)中被竊取,也可能在傳輸過(guò)程中泄露,甚至在客戶(hù)端應(yīng)用的代碼也同樣面臨著泄露危險(xiǎn)。因而讓用戶(hù)自己控制隱私數(shù)據(jù)的加密可以避免上述威脅。而傳統(tǒng)加密算法使用所帶來(lái)密文格式的變化不但會(huì)影響應(yīng)用的前臺(tái)驗(yàn)證,同樣破壞了數(shù)據(jù)庫(kù)字段的存儲(chǔ)要求。所以,既能使用戶(hù)隱私得到保護(hù)同時(shí)不破壞應(yīng)用數(shù)據(jù)庫(kù)存儲(chǔ)及主要功能,是一個(gè)亟待解決的問(wèn)題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的主要目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)與不足,提供一種基于ShadowDOM的Web應(yīng)用加解密方法,實(shí)現(xiàn)對(duì)用戶(hù)隱私數(shù)據(jù)的保護(hù)且不破壞應(yīng)用數(shù)據(jù)庫(kù)的存儲(chǔ)和應(yīng)用的主要功能。為了達(dá)到上述目的,本發(fā)明采用以下技術(shù)方案:本發(fā)明基于ShadowDOM的Web應(yīng)用加解密方法,包括下述步驟:(1)web開(kāi)發(fā)人員或者維護(hù)人員標(biāo)記敏感數(shù)據(jù);(2)用戶(hù)在瀏覽器安裝ShadowFPE擴(kuò)展程序,并設(shè)置密鑰;(3)ShadowFPE瀏覽器擴(kuò)展程序鑒別敏感數(shù)據(jù)并在安全的隔離環(huán)境下實(shí)現(xiàn)加解密。作為優(yōu)選的技術(shù)方案,步驟(1)中,標(biāo)記敏感數(shù)據(jù)的方法為:(1.1)為需要渲染的敏感數(shù)據(jù)之間添加自定義標(biāo)簽<myshadowspan>;(1.2)為涉及敏感數(shù)據(jù)的標(biāo)簽添加自定義屬性data-crypt以標(biāo)識(shí)數(shù)據(jù)格式,該屬性取值可為{“AES”,“FPE”,“INT”,“STRING”,“IDNUMBER”,“EMAIL”}集合中的一項(xiàng),“AES”,“FPE”,“INT”,“STRING”,“IDNUMBER”,“EMAIL”分別表示AES加密、未指定格式的FPE、格式為整數(shù)的FPE、格式為字符串的FPE、格式為身份證類(lèi)型的FPE、格式為電子郵件類(lèi)型的FPE。作為優(yōu)選的技術(shù)方案,步驟(3)中,ShadowFPE瀏覽器擴(kuò)展程序鑒別敏感數(shù)據(jù)的方法為:(3.1.1)遍歷應(yīng)用DOM中存在的<myshadowspan>標(biāo)簽與data-crypt屬性;(3.1.2)對(duì)帶有data-crypt屬性的文本輸入元素認(rèn)定為待加密的敏感數(shù)據(jù),如input元素、textarea元素、[contentEditable]等,其數(shù)據(jù)格式為data-crypt的值所指定;(3.1.3)對(duì)<myshadowspan>標(biāo)簽內(nèi)的文本認(rèn)定為待解密的敏感數(shù)據(jù)密文,其數(shù)據(jù)格式為data-crypt的值所指定。作為優(yōu)選的技術(shù)方案,步驟(3.1.2)中,對(duì)待加密元素格式的鑒別依賴(lài)于該元素中屬性的值:A、若data-crypt取值為AES,則認(rèn)為該字段格式不敏感,使用AES加密算法進(jìn)行加密;B、若data-crypt取值為{“INT”,“string”,“IDNUMBER”,“EMAIL”}中一項(xiàng),則認(rèn)為該字段格式敏感,使用FPE算法中的特定格式進(jìn)行處理;C、若data-crypt取值為“FPE”,即該字段格式敏感但沒(méi)有明確給出數(shù)據(jù)格式,此時(shí)ShadowFPE會(huì)對(duì)數(shù)據(jù)格式進(jìn)行自動(dòng)化識(shí)別:ShadowFPE將遍歷該元素的所有屬性,發(fā)現(xiàn)關(guān)鍵字即返回。作為優(yōu)選的技術(shù)方案,步驟(3.1.2)中,所述待解密密文的鑒別方式有兩種:D、通過(guò)對(duì)data-crypt屬性的鑒別;E、通過(guò)正則匹配的方式對(duì)密文進(jìn)行鑒別。作為優(yōu)選的技術(shù)方案,步驟(3)中,所述在安全的隔離環(huán)境下實(shí)現(xiàn)加解密的方法為:(3.2.1)采集用戶(hù)敏感數(shù)據(jù)時(shí),在shadowDOM中生成替換應(yīng)用代碼與用戶(hù)敏感數(shù)據(jù)進(jìn)行交互的元素,監(jiān)聽(tīng)用戶(hù)擊鍵事件,對(duì)用戶(hù)輸入的敏感數(shù)據(jù)進(jìn)行加密,并將密文更新給原應(yīng)用;(3.2.2)為用戶(hù)呈現(xiàn)敏感數(shù)據(jù)時(shí),將密文加密,并將明文封裝在shadowDOM中呈現(xiàn)給用戶(hù)。本發(fā)明涉及的與數(shù)據(jù)加密有關(guān)的一些基本概念:(1)AES:密碼學(xué)中的高級(jí)加密標(biāo)準(zhǔn)(AdvancedEncryptionStandard,AES),是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過(guò)五年的甄選流程,高級(jí)加密標(biāo)準(zhǔn)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)于2001年11月26日發(fā)布于FIPSPUB197,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。2006年,高級(jí)加密標(biāo)準(zhǔn)已然成為對(duì)稱(chēng)密鑰加密中最流行的算法之一。(2)FPE:密碼學(xué)中的保留格式加密(FormatPreservingEncryption,F(xiàn)PE),F(xiàn)PE是一種全新的密碼學(xué)技術(shù),它將特定格式的明文加密成相同格式的密文,即密文的長(zhǎng)度和類(lèi)型與明文相同。(3)shadowDOM:ShadowDOM是W3C提出的一個(gè)HTML的新規(guī)范,其允許開(kāi)發(fā)者封裝自己的HTML標(biāo)簽、CSS樣式和JavaScript代碼。本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)和有益效果:1.本發(fā)明可實(shí)現(xiàn)用戶(hù)對(duì)敏感數(shù)據(jù)的控制權(quán),避免了客戶(hù)端應(yīng)用代碼、傳輸過(guò)程中以及服務(wù)器端對(duì)用戶(hù)隱私的泄露。2.本發(fā)明使用保留格式加密算法使得密文格式不發(fā)生變化,不會(huì)破壞應(yīng)用的前臺(tái)驗(yàn)證以及數(shù)據(jù)庫(kù)存儲(chǔ)的字段格式。3.本發(fā)明應(yīng)用的開(kāi)發(fā)者或維護(hù)人員可以自行選擇敏感字段并添加標(biāo)簽,避免了加密對(duì)應(yīng)用功能造成的影響。附圖說(shuō)明圖1是本發(fā)明裝置的方法流程圖;圖2是本發(fā)明輸入隔離原理圖;圖3是本發(fā)明輸出隔離原理圖。具體實(shí)施方式下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限于此。實(shí)施例用戶(hù)敏感數(shù)據(jù)涉及姓名、電話、身份證號(hào)碼、電子郵件、地址等,本發(fā)明以電子郵件作為實(shí)例進(jìn)行細(xì)節(jié)描述。如圖1所示,本實(shí)施例基于ShadowDOM的Web應(yīng)用加解密方法,其具體的實(shí)現(xiàn)方式如下:1、web開(kāi)發(fā)人員或者維護(hù)人員標(biāo)記敏感數(shù)據(jù);1.1、當(dāng)應(yīng)用需要對(duì)用戶(hù)敏感信息進(jìn)行采集時(shí),應(yīng)對(duì)涉及敏感數(shù)據(jù)的元素添加data-crypt屬性。如對(duì)<inputtype=”text”name=”email”/>添加data-crypt以標(biāo)識(shí)該電子郵件字段需要進(jìn)行加密處理,并選擇對(duì)應(yīng)的格式為data-crypt賦值。可將其修改為<inputtype=”text”name=”email”data-crypt=”FPE”/>或<inputtype=”text”name=”email”data-crypt=”email”/>。二者的區(qū)別在于是否明確指出數(shù)據(jù)格式,對(duì)于未明確指出數(shù)據(jù)格式的字段,shadowFPE將對(duì)其進(jìn)行自動(dòng)化識(shí)別。1.2、當(dāng)應(yīng)用需要為用戶(hù)呈現(xiàn)敏感信息時(shí),應(yīng)對(duì)敏感字段密文用<myshadowspan>標(biāo)識(shí),用data-crypt進(jìn)行數(shù)據(jù)格式標(biāo)識(shí)。例如,若huxtdg@gmail.com表示nankai@gmail.com加密后的密文,則可標(biāo)注為<myshadowspandata-crypt=”FPE”>huxtdg@gmail.com<myshadowspan>或<myshadowspandata-crypt=”email”>huxtdg@gmail.com<myshadowspan>。此二者區(qū)別在于是否指定保留格式加密的具體數(shù)據(jù)格式,對(duì)于未明確指出數(shù)據(jù)格式的字段,shadowFPE將對(duì)其進(jìn)行自動(dòng)化識(shí)別。2、鑒別機(jī)制;2.1、鑒別待加密的輸入。ShadowFPE會(huì)遍歷應(yīng)用DOM中的各個(gè)節(jié)點(diǎn),對(duì)文本輸入元素(例如,input,textarea,[contenEditable])遍歷其屬性。對(duì)于存在data-crypt屬性的textinputelement認(rèn)定為待加密元素。對(duì)待加密元素格式的鑒別依賴(lài)于該元素中屬性的值:(1)若data-crypt取值為AES,則認(rèn)為該字段格式不敏感,使用AES加密算法進(jìn)行加密;(2)若data-crypt取值為{“INT”,“string”,“IDNUMBER”,“EMAIL”}中一項(xiàng),則認(rèn)為該字段格式敏感,使用FPE算法中的特定格式進(jìn)行處理;(3)若data-crypt取值為“FPE”,即該字段格式敏感但沒(méi)有明確給出數(shù)據(jù)格式,此時(shí)ShadowFPE會(huì)對(duì)數(shù)據(jù)格式進(jìn)行自動(dòng)化識(shí)別:ShadowFPE將遍歷該元素的所有屬性,發(fā)現(xiàn)關(guān)鍵字即返回。此過(guò)程的偽代碼如下述所示:2.2、鑒別待解密的輸入。ShadowFPE會(huì)遍歷應(yīng)用DOM中的各個(gè)節(jié)點(diǎn),對(duì)<myshadowspan>標(biāo)簽進(jìn)行識(shí)別,<myshadowspan>標(biāo)簽內(nèi)的文本即為待解密的輸出。對(duì)密文格式的鑒別有兩種方式:(1)通過(guò)對(duì)data-crypt屬性的鑒別,此時(shí)與上述方案相同;(2)通過(guò)正則匹配的方式對(duì)密文進(jìn)行鑒別,判斷其格式,shadowFPE提供了具有一定準(zhǔn)確度的自動(dòng)識(shí)別算法,在下述代碼中以函數(shù)IdentifyDecFormat表示。此過(guò)程的偽代碼如下述所示:3、生成安全的隔離環(huán)境并實(shí)現(xiàn)加解密使用shadowDOM隔離應(yīng)用DOM以生成安全的輸入輸出環(huán)境。在ShadowFPE中,有輸入隔離和輸出隔離兩種操作。3.1、輸入隔離。在具有隔離性的shadowDOM中的文本輸入元素獲取用戶(hù)輸入,并以鑒別模塊的鑒別結(jié)果為參數(shù)調(diào)用算法庫(kù)中合適的加密算法,對(duì)明文信息進(jìn)行加密,并將密文更新給應(yīng)用。根據(jù)鑒別結(jié)果,對(duì)涉及敏感數(shù)據(jù)的元素進(jìn)行處理。以input元素為例,在其前插入新節(jié)點(diǎn)myspan用來(lái)作為影子宿主掛載影子樹(shù),在影子樹(shù)內(nèi),生成一個(gè)新的input元素。然后,將應(yīng)用中的原input元素通過(guò)添加屬性值為”display:none”的屬性”style”設(shè)置為不顯示。對(duì)影子樹(shù)內(nèi)的input元素進(jìn)行監(jiān)聽(tīng),對(duì)用戶(hù)每次擊鍵事件,shadowFPE對(duì)用戶(hù)輸入以對(duì)應(yīng)格式進(jìn)行加密處理,此后將密文更新給應(yīng)用原input元素。此過(guò)程如圖2所示,其核心代碼如下所示:3.2、輸出隔離。對(duì)鑒別模塊識(shí)別出的密文及格式調(diào)用算法庫(kù)中合適的解密算法,對(duì)密文數(shù)據(jù)進(jìn)行解密,并將明文在具有隔離性的shadowDOM中呈現(xiàn)給用戶(hù)。根據(jù)鑒別結(jié)果,調(diào)用算法庫(kù)中相應(yīng)的解密算法,對(duì)密文按照相應(yīng)格式進(jìn)行解密。之后以密文標(biāo)識(shí)標(biāo)簽<myshadowspan>為影子宿主生成影子樹(shù),并將敏感數(shù)據(jù)明文置于影子樹(shù)中。此過(guò)程如圖3所示,其核心代碼如下所示:本實(shí)施例中,通過(guò)應(yīng)用開(kāi)發(fā)人員或維護(hù)人員在應(yīng)用代碼中對(duì)敏感字段進(jìn)行標(biāo)識(shí),用戶(hù)在客戶(hù)端瀏覽器安裝本發(fā)明的瀏覽器擴(kuò)展并設(shè)置秘鑰后,將應(yīng)用中涉及用戶(hù)敏感信息的數(shù)據(jù)封裝在安全的、與應(yīng)用DOM相隔離的shadowDOM中,并進(jìn)行保留格式加解密處理。上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)1 2 3 當(dāng)前第1頁(yè)1 2 3