簡要概述代數學在計算機科學中的一個應用——同態加密
利用同態加密保護數據私密性的想法最早在1978年由Ron Rivest, Leonard Adleman, Michael Dertouzos等人提出,它的主要思想是通過具有同態性質的加密函數對數據進行加密,從而可以在不對數據進行解密的條件下對已加密的數據進行任何在可以在明文上進行的運算,也就是說,可以對加密后的信息進行一系列復雜的運算和分析而不影響其保密性。下面首先給出一些定義。
定義
Definition 0:同態映射
設\(<G,*>\)和\(<H,\circ>\)是兩個代數系統,\(f:G\rightarrow H\)是一個映射,如果對於\(\forall a,b\in G\),都有\(f(a*b)=f(a)\circ f(b)\),則稱\(f\)是由\(G\)到\(H\)的一個同態映射。
Definition 1:同態加密
設\(Enc(K,x)\)表示使用加密算法\(Enc\)和密鑰\(K\)對\(x\)進行加密,\(F\)代表一種\(n\)元運算。如果對於該加密算法\(E\)和\(n\)元運算\(F\),有:
則稱:加密算法\(Enc\)對\(n\)元運算\(F\)是同態的
如果上述等式只對\(n\)元運算\(F(x_1,x_2,\cdots,x_n)=\sum_{i=1}^nx_i\)成立,則稱該加密方案為一個加法同態加密方案。
如果上述等式只對\(n\)元運算\(F(x_1,x_2,\cdots,x_n)=\prod_{i=1}^nx_i\)成立,則稱該加密方案為一個乘法同態加密方案。
對於上述只對一種運算具有同態性質的加密方案,我們將其稱為部分同態加密。如果定義中的等式對於加法和乘法的混合運算也成立,那么該加密方案就可稱為一個全同態加密方案。
研究現狀
一種現用的部分同態加密算法——RSA
RSA加密算法是在1977年由 Ronald L. Rivest, Adi Shamir, Leonard Adleman提出的一種公鑰加密系統。RSA加密系統中一個參與者創建公鑰和密鑰的方法如下:
1.隨機選取兩個大素數\(p\)和\(q\),使得\(p\ne q\).(實際運用中的\(p\)和\(q\)通常都具有至少\(1024\)個二進制位)
2.計算\(n=pq\).
3.選擇一個與\(\phi(n)\)互素的小奇數\(e\).(\(\phi(n)\)是歐拉函數,表示小於或等於n的正整數中與n互素的數的數目)
4.計算模\(\phi(n)\)意義下\(e\)的乘法逆元\(d\)的值.(\(d\)一定存在且具有唯一性[1])
5.構造二元組\(P=(e,n)\)並將其公開,\(P\)是參與者的RSA公鑰.
6.構造二元組\(S=(d,n)\)並保密,\(S\)是參與者的RSA密鑰.
設\(P_A\)和\(S_A\)分別是Alice的公鑰和密鑰,Bob要向Alice發送一條加密消息,就要先取得Alice的公鑰\(P_A=(e,n)\),通過如下方式將明文\(M\)轉換為密文\(C\):
而Alice取得密文后利用密鑰\(S_A=(d,n)\)對密文進行解密:
注意到Bob的加密操作滿足對乘法的同態性質:
Alice的解密操作也滿足對乘法的同態性質:
而對於加法,若要滿足以下等式:
當且僅當
而此等式並不保證對任意的明文\(M_1\)和\(M_2\)都能成立,因此RSA不具有加法同態性。故RSA加密算法是一種具有乘法同態性的部分同態加密算法。
全同態加密[2][3]
目前人們還在尋求構造全同態加密算法過程中。已經構造的同時對加法和乘法保持同態的算法有BGN加密算法,電路全同態算法等,但是它們都各自具有自己的局限性。
BGN(Boneh-Goh-Nissim)算法是利用代數系統環的特性進行構造的,可以進行任意次數的同態加法運算,但是只能做一次乘法同態運算,應用范圍有限。
電路全同態由Gentry C.提出,它的加密和解密運算是用電路來表示的,但是將計算機程序轉換成等價的布爾電路是一個復雜的問題,而且轉換后的電路非常復雜。
同態加密的應用
雲服務和雲計算
在現有的雲服務體制下,用戶需要把機密信息以明文形式存儲在雲服務商處,服務商就有可能復制機密信息,導致用戶信息的泄露。理論上同態加密存儲就是一種可行的解決方案,即,不對數據進行解密就可以對其進行任意的運算。
加密搜索
上文提到的電路全同態加密就可以實現加密搜索過程,它使得用戶可以獲得有效的搜索答案,並且不讓搜索引擎知道搜索的真正內容。但現階段如果利用上述電路全同態加密進行搜索,估計的搜索時間將增加\(10^{12}\)倍,顯然這樣的搜索用時並不是可接受的程度。
利用到的課本知識
代數系統的同態與同構