國內(nèi)首個(gè)同態(tài)加密技術(shù)的商業(yè)化應(yīng)用
為數(shù)據(jù)安全領(lǐng)域提供了新的思路
20世紀(jì)70年代末,就在RSA公鑰密碼體制公布的第二年,Ron Rivest、Len Adleman和Michael Dertouzos 發(fā)表了題為《論數(shù)據(jù)庫與隱私同態(tài)》的報(bào)告。文中詳細(xì)介紹了金融公司如何運(yùn)用云提供商(當(dāng)時(shí)叫做“商用分時(shí)服務(wù)”)存儲(chǔ)和計(jì)算加密數(shù)據(jù),從此,密碼學(xué)里一個(gè)新的名詞術(shù)語“同態(tài)加密”誕生了。直到2009年IBM的Craig Gentry首次提出了一種基于理想格的全同態(tài)算法,同態(tài)加密從概念到理論得到進(jìn)一步完善,也逐漸有了工程實(shí)現(xiàn)。
愛麗絲是一家珠寶店老板,打算讓員工將一塊黃金打造成首飾,但是擔(dān)心工人會(huì)在打造過程中偷取黃金,于是她制造了一個(gè)帶鎖的箱子,用來存放黃金和做好的首飾,鑰匙由她隨身保管。通過手套箱工人可以將手伸入箱子加工首飾,但無法拿到黃金和首飾。而愛麗絲則可以通過鑰匙向手套箱添加原料,并取出加工好的首飾。
簡單來說就是,明文的互操作何以轉(zhuǎn)換成密文的互操作。
比如,上圖中,密文1和密文2分別是明文1和明文2經(jīng)過加密后的對(duì)應(yīng)的密文,明文1和明文2相乘得到明文3,對(duì)密文3解密,得到的結(jié)果等于明文1乘以明文2,如果此加密算法具有這樣的特性,那么就說明此算法具有乘法同態(tài)性。
或乘法同態(tài),“全同態(tài)加密”既能實(shí)現(xiàn)加法同態(tài)又能實(shí)現(xiàn)乘法同態(tài)(其他運(yùn)算都可以通過加法和乘法實(shí)現(xiàn))
RSA是計(jì)算機(jī)通信安全的基石,是一種公鑰加密算法(加密密鑰和解密密鑰不是同一個(gè)),在這里通過例子簡要證明RSA具有乘法同態(tài)性,即兩明文數(shù)字(T1、T2)用公鑰加密后得到的兩個(gè)密文(C1、C2),將密文乘積(C1×C2)用私鑰解密,如果解密結(jié)果等于兩明文之積(T1×T2),則RSA具有乘法同態(tài)性,如下:
p=3
和q=5
(實(shí)際應(yīng)用中,這兩個(gè)質(zhì)數(shù)越大,就越難破解,這里選擇兩個(gè)小數(shù)只是為說明原理)
n=15
( n的長度就是密鑰長度,15二進(jìn)制是1111,一共有4位,所以這個(gè)密鑰就是4位。實(shí)際應(yīng)用中,RSA密鑰一般是1024位,重要場合則為2048位。也就是21024-22048
,約為10308-10616
)φ(n)=(p-1)(q-1)=8
1< e < φ(n),
且e與φ(n)
互質(zhì),在這里選e=3
(實(shí)際應(yīng)用中,常常選擇65537。)計(jì)算e對(duì)于φ(n)的模反元素d=11(所謂“模反元素”就是指有一個(gè)整數(shù)d,可以使得ed被φ(n)除的余數(shù)為1。
ed ≡ 1 (mod φ(n));
這個(gè)式子等價(jià)于
ed - 1 = kφ(n);
于是,找到模反元素d實(shí)質(zhì)上就是對(duì)下面這個(gè)二元一次方程求解。
ex + φ(n)y = 1
已知 e=3, φ(n)=8,
3x + 8y = 1
這個(gè)方程可以用“擴(kuò)展歐幾里得算法”求解,此處省略具體過程,在這里算出一組解(11,-4)即d=11)
隨機(jī)選取兩個(gè)數(shù)字T1=2
和T2=3
進(jìn)行加密運(yùn)算分別得到密文:
(
明文T1、T2必須是整數(shù)(字符串可以取ascii值或unicode值),且必須小于n,所謂“加密”,就是算出下式的c,
te ≡ c (mod n))
C1= 23mod(15)=8
C2= 33mod(15)=12
對(duì)( C1×C2 )
做解密運(yùn)算得(所謂解密即算出cd ≡ t (mod n)
中對(duì)應(yīng)的t
)
t= (C1×C2)d mod(n)= 9611mod(15)=6;
又T1×T2=6;
由此可見RSA具有乘法同態(tài)性,兩個(gè)密文之積的解密結(jié)果等于明文之積即:
decrypt(C1×C2)≡ T1×T2