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

?

基于高性能國密算法的數(shù)據(jù)庫透明加密技術(shù)研究

2024-10-29 00:00:00李恒
中國新通信 2024年18期

摘要:本文主要研究了基于國密算法的數(shù)據(jù)庫加密技術(shù),該加密技術(shù)采用了中國自主研發(fā)的國密算法,包括SM 2、SM 3和SM4,實(shí)現(xiàn)對數(shù)據(jù)庫中的敏感信息進(jìn)行高效且安全的加密。

關(guān)鍵詞:高性能;國密算法;數(shù)據(jù)庫;透明加密

一、引言

大數(shù)據(jù)已經(jīng)成為社會發(fā)展的重要推力。但大數(shù)據(jù)也包含了很多敏感信息,如個人隱私、商業(yè)機(jī)密,這些信息一旦泄露,將會給個體或組織帶來嚴(yán)重的損失。因此,如何保護(hù)數(shù)據(jù)安全,特別是數(shù)據(jù)庫中的敏感信息,是目前亟需解決的問題。傳統(tǒng)的數(shù)據(jù)庫加密技術(shù)雖然可以在一定程度上保護(hù)數(shù)據(jù)安全,但由于其算法復(fù)雜度高、性能低以及安全性不足等問題,使其在應(yīng)用中受到了限制。為此,提出一種新的數(shù)據(jù)庫加密方案,該方案采用了中國自主研發(fā)的國密算法,以實(shí)現(xiàn)對數(shù)據(jù)庫中的敏感信息進(jìn)行高效且安全地加密。國密算法是中國自主研發(fā)的密碼算法標(biāo)準(zhǔn),包括SM 2、SM 3和SM4,具有良好的安全性和性能。通過將國密算法應(yīng)用于數(shù)據(jù)庫加密,不僅可以防止數(shù)據(jù)泄露,還可以在保證數(shù)據(jù)安全的同時,滿足數(shù)據(jù)庫的高并發(fā)訪問需求。

二、數(shù)據(jù)庫透明加密概述

數(shù)據(jù)庫透明加密技術(shù),也被稱為Transparent Data Encryption(TDE),是一種用于保護(hù)存儲在數(shù)據(jù)庫中的數(shù)據(jù)的安全技術(shù)。它通過對數(shù)據(jù)庫文件進(jìn)行實(shí)時加密和解密,以確保數(shù)據(jù)在存儲、處理和傳輸過程中的安全性。

TDE的優(yōu)點(diǎn)是透明性。對于應(yīng)用程序和用戶而言,數(shù)據(jù)的加密和解密過程是完全透明的,無需進(jìn)行任何修改,簡化了數(shù)據(jù)安全管理的復(fù)雜性,降低了維護(hù)成本。

TDE工作原理包括兩個步驟:首先,當(dāng)數(shù)據(jù)寫入數(shù)據(jù)庫時,TDE會自動對數(shù)據(jù)進(jìn)行加密。然后,當(dāng)用戶或應(yīng)用程序請求訪問數(shù)據(jù)時,TDE會自動對數(shù)據(jù)進(jìn)行解密。這兩個過程是在數(shù)據(jù)庫層面進(jìn)行的,對上層應(yīng)用程序和用戶而言是完全透明的。

盡管TDE可以保護(hù)數(shù)據(jù)安全,但它并不能防止所有類型的攻擊。例如,如果攻擊者能夠獲得數(shù)據(jù)庫的訪問權(quán)限,他們?nèi)匀豢梢宰x取和修改數(shù)據(jù)。因此,TDE通常需要與訪問控制、身份驗(yàn)證等安全措施結(jié)合使用。

總體而言,數(shù)據(jù)庫透明加密技術(shù)是一種重要的數(shù)據(jù)安全保護(hù)手段,它可以防止數(shù)據(jù)在存儲、處理和傳輸過程中的泄露,同時能夠保證數(shù)據(jù)的可用性和訪問性。

三、數(shù)據(jù)庫透明加密技術(shù)

(一)密文格式設(shè)計(jì)

設(shè)計(jì)密文格式時,需要考慮數(shù)據(jù)的安全性、完整性和可用性。因此,將密文分為四個部分:版本標(biāo)識、密文內(nèi)容、校驗(yàn)位和是否是密文標(biāo)識。

1.版本標(biāo)識

這部分用于標(biāo)識加密算法的版本。由于加密算法會隨著時間的推移而更新,因此需要一個版本標(biāo)識確保解密過程可以正確使用對應(yīng)的算法版本進(jìn)行解密,版本標(biāo)識通常包含算法名稱和版本號。

2.密文內(nèi)容

這部分是實(shí)際加密數(shù)據(jù),它通過將原始數(shù)據(jù)輸入加密算法得到。密文內(nèi)容的長度取決于加密算法和原始數(shù)據(jù)的大小,采用SM4算法進(jìn)行加密。

3.校驗(yàn)位

這部分用于檢查密文內(nèi)容是否在傳輸或者存儲過程中被篡改。校驗(yàn)位通常是通過對密文內(nèi)容進(jìn)行哈希運(yùn)算得到的,如果密文內(nèi)容被修改,則校驗(yàn)位也會發(fā)生變化,從而可以檢測到數(shù)據(jù)被篡改。

4.是否是密文標(biāo)識

這部分用于標(biāo)識數(shù)據(jù)是否已經(jīng)被加密,對于混合存儲明文和密文的情況非常有用,可以快速判斷數(shù)據(jù)是否需要進(jìn)行解密操作。

通過這種方式設(shè)計(jì)的密文格式,不僅可以保證數(shù)據(jù)的安全性和完整性,還可以提高數(shù)據(jù)處理效率。

(二)透明加密實(shí)現(xiàn)方式

需要對JDBC進(jìn)行封裝以實(shí)現(xiàn)透明加密。創(chuàng)建一個新的數(shù)據(jù)庫連接類,該類在內(nèi)部使用JDBC API與數(shù)據(jù)庫交互,并自動處理加密和解密操作。以下是一種實(shí)現(xiàn)的方法。

1.創(chuàng)建一個新的數(shù)據(jù)庫連接類,例如EncryptedConnection。這個類應(yīng)包含一個私有的java.sql.Connection對象,用于與數(shù)據(jù)庫交互。

2.在EncryptedConnection類中,重寫所有需要處理數(shù)據(jù)的方法,例如prepareStatement()、createStatement()等。在這些方法中,首先使用內(nèi)部的Connection對象創(chuàng)建一個PreparedStatement或Statement對象,然后返回一個新的EncryptedPreparedStatement或EncryptedStatement對象,這些對象在內(nèi)部處理加密和解密操作。

3.創(chuàng)建EncryptedPreparedStatement和EncryptedStatement類,這些類應(yīng)該包含一個私有的PreparedStatement或Statement對象。在這些類中,重寫所有需要處理數(shù)據(jù)的方法,例如setString()、setInt()、executeQuery()等。在這些方法中,首先對輸入的數(shù)據(jù)進(jìn)行加密,然后調(diào)用內(nèi)部的PreparedStatement或Statement對象的相應(yīng)方法來執(zhí)行數(shù)據(jù)庫操作。當(dāng)從數(shù)據(jù)庫獲取數(shù)據(jù)時,再對數(shù)據(jù)進(jìn)行解密。

4.在EncryptedConnection類中,還可以提供額外方法,例如設(shè)置加密密鑰、更改加密算法。

通過以上步驟,可以創(chuàng)建一個新的JDBC封裝,它可以自動處理數(shù)據(jù)庫操作的加密和解密操作,這樣應(yīng)用程序就可以像使用普通JDBC一樣使用新的封裝,而不需要關(guān)心數(shù)據(jù)的加密和解密問題。

(三)針對密文的模糊查詢實(shí)現(xiàn)

將數(shù)據(jù)加密前先使用分詞算法對明文數(shù)據(jù)進(jìn)行分解,將明文數(shù)據(jù)分解為多個關(guān)鍵字或短語。對每個關(guān)鍵字或短語,通過SM 3算法生成一個唯一的標(biāo)識符,并將該標(biāo)識符與原始數(shù)據(jù)位置相關(guān)聯(lián)。然后,將這些標(biāo)識符和位置信息存儲在一個索引表中,并將對分詞后的數(shù)據(jù)和索引表進(jìn)行加密,然后將加密后的數(shù)據(jù)和索引表存儲至數(shù)據(jù)庫中。當(dāng)需要模糊查詢時,首先對查詢條件進(jìn)行同樣的分詞和標(biāo)識符生成處理,然后在加密索引表中查找匹配的標(biāo)識符,得到原始數(shù)據(jù)位置,最后返回相應(yīng)的加密數(shù)據(jù)。這種方法的優(yōu)點(diǎn)是可以在不解密數(shù)據(jù)的情況下進(jìn)行模糊查詢,提高了數(shù)據(jù)的安全性。

四、SM4加密算法性能優(yōu)化

(一)SM4輪密鑰緩存

通過以上方式實(shí)現(xiàn)的透明加密方式,在實(shí)際使用過程中出現(xiàn)的高頻加密與解密操作對性能會產(chǎn)生比較大的影響,例如在對原本有大量數(shù)據(jù)的數(shù)據(jù)庫進(jìn)行全量加密操作時,調(diào)用基礎(chǔ)的SM4算法接口:

cipher=SM4Enc(key, plain)

密碼接口需要對128bit的SM4加密密鑰轉(zhuǎn)換為32個32bit的輪密鑰。如果頻繁調(diào)用該接口使用相同密鑰進(jìn)行加密,將花費(fèi)大量時間通過加密密鑰key重復(fù)生成相同的輪密鑰rk,降低小數(shù)據(jù)包整體加解密吞吐性能。

將密碼接口調(diào)整為:

ctx=SM4SetKey(key)

cipher=SM4Enc(ctx, plain)

應(yīng)用可以預(yù)先調(diào)用SM4SetKey接口將加密密鑰傳入密碼模塊,密碼模塊轉(zhuǎn)換加密密鑰key為輪密鑰并保存于接口上下文ctx中。當(dāng)需要使用相同加密密鑰key進(jìn)行加密時,調(diào)用SM4Enc接口傳入上下文ctx,使用已保存的輪密鑰進(jìn)行加解密,從而跳過反復(fù)重復(fù)生成的輪密鑰步驟,優(yōu)化加密流程,提升SM4-GCM算法性能。

密碼接口優(yōu)化前后調(diào)用示意圖如圖1所示。

(二)指令層優(yōu)化SM4

在標(biāo)準(zhǔn)c代碼實(shí)現(xiàn)的SM4-GCM算法基礎(chǔ)上,可以通過處理器指令對SM4算法實(shí)現(xiàn)進(jìn)行優(yōu)化,下文描述了x86架構(gòu)硬件平臺的兩種優(yōu)化方式。而在信創(chuàng)硬件平臺環(huán)境中,也可以使用信創(chuàng)平臺指令進(jìn)行優(yōu)化,包括兆芯的GMI、鯤鵬的KAE,這些指令以SDK形式提供,信創(chuàng)環(huán)境安全密碼模塊密碼接口可以直接調(diào)用這些SDK優(yōu)化SM4算法性能。

SM4算法的輪函數(shù)包含線性變換和非線性變換,其中非線上變換是基于SM4算法S盒進(jìn)行查表變換,相對線性變換,非線性變換的查表操作耗時是很多的。因此,優(yōu)化SM4算法的S盒查表過程,可以提高SM4算法運(yùn)行效率。

SM4和AES的S盒生成均為基于GF(2^8)構(gòu)造的。其中,GF(2^8)是一個有限域,它的元素是8位二進(jìn)制數(shù)。S盒通過將GF(2^8)上的元素進(jìn)行逆運(yùn)算和仿射變換得到的。具體而言,S盒生成過程中首先通過一個固定的置換將輸入的8位二進(jìn)制數(shù)打亂,然后將結(jié)果代入一個由仿射變換和逆運(yùn)算組成的函數(shù)中,最后得到輸出的8位二進(jìn)制數(shù)。在仿射變換中,變換本身可以表示成邏輯運(yùn)算的形式,如異或、與或等。因此,S盒生成中使用了逆運(yùn)算和邏輯運(yùn)算進(jìn)行數(shù)學(xué)變換,得到最終的S盒。

由于SM4和AES的S盒均基于GF(2^8)一個有限域進(jìn)行構(gòu)造,通過AES和SM4算法的S盒在有限域上不可約多項(xiàng)式轉(zhuǎn)換,可以實(shí)現(xiàn)S盒的變換。

因此,先分別分析AES和SM4的S盒特征。

AES算法的S盒定義如圖3所示。

AES算法的S盒定義在GF(2^8)有限域的不可約多項(xiàng)式為x? + x? + x3 + x + 1,表達(dá)式為S(x)=Ax-1+c,通過矩陣顯示為:

SM4算法的S盒定義如圖4所示。

SM4算法的S盒定義在GF(2^8)有限域的不可約多項(xiàng)式為x8+x7+x6+x5+x4+x2+1,生成方式為S(x)=A(Ax+c)-1+c,其中:

可以看到,SM4算法和AES算法采用的有限域不可約多項(xiàng)式有所不同。

SM4算法采用的有限域不可約多項(xiàng)式為x?+x?+x?+x+1,生成方式為Ss(x)=As·Is(Asx+Cs)+Cs。

AES算法采用的有限域不可約多項(xiàng)式為x?+x?+x3+x+1,生成方式為Sa(x)=Aa·Ia(x)+Ca。

其中,上述表達(dá)式中計(jì)算Is和Ia求逆是最復(fù)雜、最耗時的運(yùn)算。可以構(gòu)造出同構(gòu)映射T將SM4對應(yīng)的有限域元素映射到AES對應(yīng)的有限域元素中,再借助指令求逆,最后再逆映射。

AES和SM4的S盒同構(gòu)映射運(yùn)算如圖6所示。

記y=Asx+Cs,由SM4有限域映射到AES有限域的函數(shù)為 T(xs)→xa。

則SM4算法有限域求逆為:

Is(y) =T-1Aa-1·{Sa(T(y))+Ca}=T-1Aa-1·Sa(T(y))+T-1Aa-1Ca

將Is(y)代入Ss(x)=As·Is(Asx+Cs)+Cs,那么SM4算法S盒計(jì)算方式為:

Ss(x)=AsT-1Aa-1·Sa(T(y))+AsT-1Aa-1Ca+Cs={AsT-1Aa-1}·Sa({TAs}x+{TCs})+{AsT-1Aa-1Ca+Cs}

通過上述推導(dǎo)分析,SM4算法的S盒運(yùn)算可以通過求逆和映射等方式轉(zhuǎn)換使用AES的S盒計(jì)算方式進(jìn)行運(yùn)算。

在x86架構(gòu)的運(yùn)行環(huán)境的AVX2指令集提供了硬件加速的AES-NI指令,其中包括S盒的計(jì)算。在AES加密中,S盒運(yùn)算是將每個輸入字節(jié)映射到一個對應(yīng)的輸出字節(jié)。這個映射關(guān)系在AES算法中通過一個固定的S盒實(shí)現(xiàn),而在AES-NI指令集中,這個S盒儲存在CPU內(nèi)部的專門寄存器中。對于每個輸入字節(jié),AES-NI指令集都會自動從這個S盒中查找對應(yīng)的輸出字節(jié),并將其作為輸出。該查找過程通過硬件電路實(shí)現(xiàn),可以在單個時鐘周期內(nèi)完成。因此,使用AES-NI指令實(shí)現(xiàn)的SM4算法S盒運(yùn)算的方法,可以提升SM4算法非線性變換部分的執(zhí)行效率。

AES-NI指令中,最適合執(zhí)行S盒運(yùn)算的指令為AESENCLAST指令。AESENCLAST指令執(zhí)行AES加密的最后一輪,功能是對16字節(jié)的AES狀態(tài)數(shù)據(jù)依次做S盒變換、行移位、異或子密鑰這三個操作。因?yàn)镾M4算法執(zhí)行過程只需要AES算法S盒變換,所以使用AESENCLAST指令進(jìn)行S盒變換需要消除行移位和子密鑰異或。其中,行移位可利用調(diào)序指令去除,子密鑰異或可將子密鑰設(shè)置為全0即可。

由于AES-NI指令操作的是128bit的數(shù)據(jù),一組SM4加密的消息每輪需要S盒查表的數(shù)據(jù)僅有32bit,故將4組消息通SMID指令打包至一塊,使處理數(shù)據(jù)內(nèi)容達(dá)到128bit。

打包操作過程如下:

1.將4個32位整數(shù)分別存儲在4個128位寄存器的低位。

2.對于每個寄存器,將其低16位和高16位分別取出來,得到兩個16位的整數(shù)。

3.對于這兩個16位的整數(shù),分別進(jìn)行飽和轉(zhuǎn)換(即將超出16位范圍的值截?cái)啵?/p>

4.將4個飽和轉(zhuǎn)換后的16位整數(shù)組合成一塊128位數(shù)據(jù),并返回該數(shù)據(jù)。

例如,如果輸入的4個32位整數(shù)分別為0x0000FFFF、0x00000000、0x00008000、0x00007FFF,則打包成的128位數(shù)據(jù)就為0xFFFF0000FFFF0000000080007FFF。

SMID打包數(shù)據(jù)可以將多個標(biāo)量數(shù)據(jù)打包成一個更大的向量。而計(jì)算機(jī)處理芯片執(zhí)行一個小向量數(shù)據(jù)與一個大向量數(shù)據(jù)的時間周期是相同。因此,將4組32bit SM4消息轉(zhuǎn)換為SMID向量,還可以提高計(jì)算速度。

結(jié)合S盒轉(zhuǎn)換、AES-NI指令、SMID指令的SM4算法運(yùn)算流程如表2所示。

x86平臺SM4算法性能比較情況如表3所示。

五、結(jié)束語

本文探討了數(shù)據(jù)庫透明加密的實(shí)現(xiàn)方法和它對系統(tǒng)性能的影響,雖然透明加密帶來了挑戰(zhàn),如計(jì)算、存儲和網(wǎng)絡(luò)開銷的增加,以及查詢效率的下降,但本文提出和實(shí)現(xiàn)的SM4-GCM算法優(yōu)化方式,通過實(shí)驗(yàn)驗(yàn)證是有效的,減少了加解密算法帶來的性能損耗。總體而言,盡管透明加密在實(shí)施過程中存在一定的挑戰(zhàn),但其在確保數(shù)據(jù)安全和隱私保護(hù)方面的潛力巨大,值得進(jìn)一步探索。

作者單位:李恒 上海 徐匯公安部第三研究所

李恒(1996.08-),男,漢族,湖北咸寧,本科,實(shí)習(xí)員,研究方向:數(shù)據(jù)安全。

參考文獻(xiàn)

[1]張才賢.基于CUDA的并行SM4-GCM設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué),2019.

[2] HU G Y, CHEN R. Improving the performance of multi-mode SM4 block cipher[J]. International Journal of Performability Engineering, 2019, 15(10): 2589–2596.

[3]王德民,陳達(dá).基于CUDA的SM4加密算法高速實(shí)現(xiàn)[J].石家莊鐵路職業(yè)技術(shù)學(xué)院學(xué)報,2017,16(01):59-63.

[4]REBEIRO C, SELVAKUMAR D, DEVI A S L. Bitslice implementation of AES[C]. In: Cryptology and Network Security—CANS 2006. Springer Berlin Heidelberg, 2006: 203-212.

[5]K?SPER E, SCHWABE P. Faster and timing-attack resistant AES-GCM[C]. In: Cryptographic Hardware and Embedded Systems—CHES 2009. Springer Berlin Heidelberg, 2009: 1-17.

[6]LI L, YANG F, PAN Y M, et al. An implementation method for SM4-GCM on FPG&A[C]. In: Proceedings of 2017 IEEE 2nd Advanced Information Technology, Electronic and Automation Control Conference (IAEAC). IEEE, 2017: 1921-1925.

[7]CHENG H, DING Q, HUANG C, et al. Improvements of SM4 algorithm and application in Ethernet encryption system based on FPG&A[J]. Journal of Information Hiding and Multimedia Signal Processing, 2014, 5(3): 518-526.

[8]ABED S, JAFFAL R, MOHD B J, et al. Performance evaluation of the SM4 cipher based on fifield‐programmable G&Ate array implementation[J]. IET Circuits, Devices & Systems, 2021, 15(2): 121-135.

參考文獻(xiàn)

[1]UIPATH, INC.Determining sequences of interactions, process extraction, and robot generation using artificial intelligence / ma-chine learning models,US202017070168[P].2022-04-12.

[2]王建周.胡一川.汪冠春.基于AI的RPA流程的生成方法、裝置、設(shè)備及介質(zhì),CN112070416A[P].2020-12-11.

[3]賴琪,蔡宇輝,夏斯瓊,等.RPA流程標(biāo)準(zhǔn)化定義與設(shè)計(jì)[J].計(jì)算機(jī)科學(xué),2023,50(12):82-88.

[4]陳翼鷹,黃斐.基于序列兩兩對比的軟件行為蹤跡分析[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(04):174-176+260.

[5]辛?xí)杂睿瑒⒄?,慕爽?自動工具輔助用戶行為捕捉與分析方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2021,42(01):287-293.

[6]王繼民,李雷明子,鄭玉鳳.基于日志挖掘的移動搜索用戶行為研究綜述[J].情報理論與實(shí)踐,2014,37(03):134-139.

[7]李多芹,方賢文,王麗麗,等.基于感知成本的流程模型與事件日志有效對齊[J].計(jì)算機(jī)應(yīng)用,2022,42(10):3154-3161.

[8]章瑞,蘇瑩,段金奎等.RPA在自動化辦公數(shù)據(jù)管理中的研究[J].信息系統(tǒng)工程,2023(10):123-126.

新密市| 巍山| 东平县| 临桂县| 晋江市| 静宁县| 忻城县| 乐东| 木兰县| 京山县| 雷山县| 迭部县| 玉田县| 临海市| 广饶县| 岑巩县| 华池县| 峨山| 健康| 大兴区| 木兰县| 房山区| 元阳县| 汨罗市| 库伦旗| 贵州省| 东海县| 哈密市| 泰和县| 城市| 浦北县| 阿克苏市| 陕西省| 瑞金市| 昌吉市| 淮北市| 江安县| 贵阳市| 临澧县| 天长市| 平山县|