1.一種基于模運算的全同態(tài)加密處理方法,其特征在于,包括以下步驟:
(1)獲取加密過程中任意數(shù)值數(shù)據(jù)類型的明文,并根據(jù)加密需要將其轉(zhuǎn)換為對應(yīng)的進制位明文;
(2)對步驟(1)中得到的進制位明文中的各個數(shù)進行加密運算,將加密運算得到的密文進行組合,從而得到對應(yīng)的密文組合;
(3)采用基于模加密的密文原碼、密文反碼和密文補碼對步驟(2)得到的密文組合進行密文運算;
(4)利用模除法對步驟(3)獲取的密文運算結(jié)果進行解密,以獲得解密后的明文。
2.根據(jù)權(quán)利要求1所述的基于模運算的全同態(tài)加密處理方法,其特征在于,步驟(2)中加密運算是采用以下公式:
c=(m+s*r+p*r)mod x0
其中c表示密文,m表示明文中的進制位,s表示加密中所采用的進制,r表示隨機數(shù),p為加密密鑰,x0是一個中間變量,其等于加密密鑰p與另一個加密密鑰q的乘積,所述密鑰均不對外公開。
3.根據(jù)權(quán)利要求2所述的基于模運算的全同態(tài)加密處理方法,其特征在于,步驟(4)具體是采用以下公式:(c mod p)mod s。
4.根據(jù)權(quán)利要求3所述的基于模運算的全同態(tài)加密處理方法,其特征在于,步驟(3)中,對于密文加法運算,直接將兩個密文組合進行對位求和運算。
5.根據(jù)權(quán)利要求3所述的基于模運算的全同態(tài)加密處理方法,其特征在于,步驟(3)中,對于密文減法運算,首先獲取減數(shù)的密文組合的反碼,然后根據(jù)該反碼獲取對應(yīng)的補碼,最后將該補碼與被減數(shù)的密文組合的原碼進行對位求和運算。
6.根據(jù)權(quán)利要求3所述的基于模運算的全同態(tài)加密處理方法,其特征在于,步驟(3)中,對于密文乘法運算,首先根據(jù)密文組合c1和c2中元素的個數(shù)n創(chuàng)建一個n*(2n-1)的矩陣,該矩陣的第一行從右至左的元素分別為:c1中最右側(cè)元素與c2中最右側(cè)元素的乘積、c1中右側(cè)倒數(shù)第二個元素與c2中最右側(cè)元素的乘積、以此類推、c1中左側(cè)第一個元素與c2中最右側(cè)元素的乘積;該矩陣的第二行從右至左的元素分別為:1個0、c1中最右側(cè)元素與c2中右側(cè)倒數(shù)第二個元素的乘積、c1中右側(cè)倒數(shù)第二個元素與c2中右側(cè)倒數(shù)第二個元素的乘積、以此類推、c1中左側(cè)第一個元素與c2中右側(cè)倒數(shù)第二個元素的乘積;…該矩陣的第n行從右至左的元素分別為:(n-1)個0,c1中最右側(cè)元素與c2中左側(cè)第一個元素的乘積、c1中右側(cè)倒數(shù)第二個元素與c2中左側(cè)第一個元素的乘積、以此類推、c1中左側(cè)第一個元素與c2中左側(cè)第一個元素的乘積,然后,將構(gòu)建的矩陣的每列進行求和,從而得到一個新的行向量,取該行向量作為密文乘法運算的結(jié)果,最后,取該行向量作為密文乘法運算的結(jié)果。
7.根據(jù)權(quán)利要求3所述的基于模運算的全同態(tài)加密處理方法,其特征在于,步驟(3)中,對于密文除法運算,其包括以下子步驟:
(3-4-1)創(chuàng)建空的除法運算結(jié)果的存儲格式,該存儲格式的總長度為32位、64位或80位,且包括符號位、整數(shù)位和小數(shù)位,并根據(jù)該存儲格式對二進制位明文進行擴展;
(3-4-2)根據(jù)步驟(2)的算法對擴展后的二進制位明文進行加密運算,將加密運算結(jié)果進行組合,從而得到對應(yīng)的密文分別作為被除數(shù)和除數(shù);
(3-4-3)用步驟(2)中得到的1的密文乘以作為除數(shù)的密文;
(3-4-4)設(shè)置小數(shù)位計數(shù)器count的初始值等于存儲格式的長度-L,其中L是存儲格式中整數(shù)位的長度;
(3-4-5)判斷被除數(shù)的密文是否大于除數(shù)的密文,如果大于轉(zhuǎn)步驟(3-4-6),否則轉(zhuǎn)步驟(3-4-7);
(3-4-6)將被除數(shù)的密文與步驟(3-4-3)中的除數(shù)密文的補碼做加法,得到余數(shù)作為新的被除數(shù),并且在整數(shù)位用1的密文做加法,即得到的是密文商,并返回步驟(3-4-5);
(3-4-7)判斷余數(shù)的密文是否全部為零或小數(shù)位計數(shù)器count大于存儲格式的總長度,如果不是,則轉(zhuǎn)步驟(3-4-8);如果是,則密文除法運算結(jié)束,并轉(zhuǎn)入步驟(3-4-13),以獲得密文除法運算結(jié)果;
(3-4-8)在余數(shù)密文的最右邊添加0的密文,得到新的余數(shù)密文,并轉(zhuǎn)步驟(3-4-9);
(3-4-9)判斷步驟(3-4-8)得到新的余數(shù)密文是否大于除數(shù)的密文,如果是大于則轉(zhuǎn)步驟(3-4-10)步驟,否則轉(zhuǎn)(3-4-11);
(3-4-10)將新的余數(shù)密文與除數(shù)的密文補碼做加法,以再次獲得新的余數(shù)密文,同時將第count個小數(shù)位的值設(shè)置為1對應(yīng)的密文值;
(3-4-11)將第count個小數(shù)位的值設(shè)置為0對應(yīng)的密文值,然后轉(zhuǎn)步驟(3-4-12);
(3-4-12)將小數(shù)位計數(shù)器count加1,然后返回步驟(3-4-7);
(3-4-13)根據(jù)得到的密文值獲取商的整數(shù)部分和小數(shù)部分,并按步驟(3-4-1)中的存儲格式進行存放。
8.根據(jù)權(quán)利要求7所述的基于模運算的全同態(tài)加密處理方法,其特征在于,
商的整數(shù)部分等于:
xL*20+xL-1*21+…+x1*2L-1,其中x表示整數(shù)部分中的密文值;
商的小數(shù)部分等于:
y1*2-1+y2*2-2+…+y存儲格式的總長度-L*2存儲格式的總長度-L,其中y表示小數(shù)部分中的密文值。
9.根據(jù)權(quán)利要求7所述的基于模運算的全同態(tài)加密處理方法,其特征在于,步驟(3-4-5)具體為,判斷被除數(shù)的密文是否大于除數(shù)的密文,是從左到右以遍歷的方式判斷被除數(shù)中的每一位是否大于或等于除數(shù)中的對應(yīng)位,如果一旦有其中一位小于除數(shù)中的對應(yīng)位,則表示被除數(shù)的密文不是大于除數(shù)的密文。
10.根據(jù)權(quán)利要求4至7中任意一項所述的基于模運算的全同態(tài)加密處理方法,其特征在于,在密文加法運算中,首先將密文的每一位根據(jù)解密公式(密文mod p)mod s求出對應(yīng)的明文,并將得到的明文按位進行求和相加,接下來判斷每個位求和后得到的值是否等于進制,如果等于,則表示出現(xiàn)了進位,此時返回進位值,并返回密文位求和的結(jié)果,并且在該密文位的上一位求和過程中加1;如果不等于,則表示沒有出現(xiàn)進位,此時返回進位值以及密文位求和的結(jié)果,并且在該密文位的上一位求和過程中加0。