徐 峰,劉萬鎖
(空軍工程大學(xué)航空機務(wù)士官學(xué)校 維修管理工程系, 河南 信陽 464000)
隨著云計算、移動計算等技術(shù)的普及與廣泛應(yīng)用,一對多乃至多對多的通信方式日漸成為互聯(lián)網(wǎng)通信技術(shù)的應(yīng)用中的典型模式。此前,Dan Boneh[1]提出關(guān)鍵字檢索的公鑰加密方案(PKEKS) 。D.J.Park[2][3]提出多關(guān)鍵字可檢索的公鑰加密方案(PKEMKS)。Waters,Baek,徐群群等學(xué)者[4]-[11]在這領(lǐng)域做出了許多創(chuàng)新性的工作。
本文將主要研究關(guān)鍵字安全的可檢索加密技術(shù),為其引入多用戶相關(guān)的特性和功能。這種技術(shù)命名為關(guān)鍵字安全的多用戶可檢索加密技術(shù)(Searchable Encryption Based on Safe Keywords with Multi-Client,簡稱 SESKM)。
關(guān)鍵字安全可檢索加密技術(shù)(SEBSK)旨在解決現(xiàn)有的PKEKS中潛在的關(guān)鍵字猜測攻擊的問題。具體的解決方法是通過添加一個可信的安全中心,并在安全中心生成可信參數(shù)與私鑰、公鑰一起參數(shù)與加密解密過程中的方式,幫助系統(tǒng)在信息加密和生成檢索參數(shù)的過程中提高安全性。這種方法在一對一傳輸?shù)膽?yīng)用情境下當(dāng)然是簡單有效的。如果要將這種方式直接使用到存在多個用戶的系統(tǒng)中,隨著用戶的加入或者離開,對可信參數(shù)與私鑰、公鑰的管理就會成為一件很困難的事情,一旦可信參數(shù)θ與私鑰、公鑰泄露,系統(tǒng)的安全性就無法保證。
針對上述問題,對SEBSK進(jìn)行了改進(jìn),為其引入了多用戶的特性,為加密系統(tǒng)中的每個用戶都生成獨有的可信參數(shù)θ,并利用安全中心對參數(shù)進(jìn)行動態(tài)、實時的管理。
SESKM的根本思想在于引入獨立的安全中心,安全中心可以檢測整個系統(tǒng)中用戶的加入和離開的情況。通過這些用戶的為每個用戶生成一個不同的可信參數(shù)θID,安全中心也會根據(jù)用戶的加入和離開的情況,實時的對這些可信參數(shù)ID進(jìn)行更新。
SESKM方案中遇到的符號、公式如下:
定義 1:
函數(shù)fx=fθ(x)基本功能是將參數(shù)x轉(zhuǎn)換為一個定長的隨機串fx.
定義 2:
函數(shù)fx=Fθ(x)是一個隨機函數(shù),θ是隨機函數(shù)的密鑰。
定義 3:
函數(shù)hx=H(k,x)是HMAC函數(shù),以k作為密鑰。
定義4:
函數(shù)r=R(n)是隨機函數(shù),長度為n.
定義5:
函數(shù)emsg=EK(msg)是加密函數(shù),秘鑰為k.
定義6:
函數(shù)θx=S(x)輸出一個正整數(shù)。
SESKM方案主要包括以下算法:
(1)加密密鑰的生成——KeyGen.
(2)密文信息的生成——Enc.
(3)檢索參數(shù)的生成——TwGen.
(4)參數(shù)與密文的匹配——Comp.
(5)可信參數(shù)與密文關(guān)鍵字的更新——TwUpdate.
在系統(tǒng)初始化之時,安全中心將獲取每個用戶的標(biāo)識符i,并按照以下步驟進(jìn)行處理:
3.2.1 使用函數(shù)θx=S(x)對用戶的標(biāo)識符進(jìn)行計算,生成對應(yīng)的可信參數(shù)θi,并將計算出的所有可信參數(shù)保存為一個數(shù)組,記為[θ0,θ1,…,θi]:
θi=S(x)=S(i)
(1)
3.2.2 安全中心隨機選擇Kpri作為系統(tǒng)的私鑰,利用本根g,生成公鑰Kpub:
Kpub=gKprimodpKpub=gKprimodp
(2)
其中p是安全的素數(shù)??尚艆?shù)θi生成后,將其發(fā)送至對應(yīng)的客戶端;可信參數(shù)數(shù)組[θ0,θ1,…,θi]生成后,保存在安全中心。
Enc算法主要步驟如下:
3.3.1 利用Kpub對消息msg進(jìn)行加密:
emsg=EK(msg)=EKpub(msg)
(3)
3.3.2 計算關(guān)鍵字w的消息認(rèn)證碼hw:
hw=H(k,x)=H(Kpub,w)
(4)
3.3.3 發(fā)送端向安全中心申請可信參數(shù)數(shù)組[θ0,θ1,…,θi],對每一個θi,為關(guān)鍵字的hw進(jìn)行隨機化:
fhi=fθ(x)=fθi(hw)
(5)
3.3.4 利用函數(shù)r=R(n)生成n-m位隨機串rm-n。利用函數(shù)Fx=Fθ(x)生成Fhi,其中m=|Fji|:
Fhi=Fθ(x)=Fθi(fhi
(6)
3.3.5 令Ti=
CTi=Ti⊕emsg
(7)
將密文信息emsg與密文關(guān)鍵字CTi的集合[CT0,CT1,…,CTi]一起傳輸至服務(wù)器。
利用emsg與[CT0,CT1,…,CTi],使用其對應(yīng)的可信參數(shù)θi、私鑰Kpri、公鑰Kpub生成檢索參數(shù):
3.4.1 計算關(guān)鍵字w的認(rèn)證碼:
hw=H(k,x)=H(Kpub,w)
(8)
3.4.2 利用θi和hw生成隨機串fhi:
fhi=fθ(x)=fθi(hw)
(9)
3.4.3 計算檢索參數(shù)Twi:
Twi=
(10)
將檢索參數(shù)Twi發(fā)送至服務(wù)器進(jìn)行檢索。
服務(wù)器接收到檢索請求,執(zhí)行Comp算法:
x=|hw⊕CTi|n-m
y=|hw⊕CTi|m
Fx=Fθ(x)
foreach([CT0,CT1,…,CTi])
{if(y==Fx)
returnCTi
}
return “檢索失敗!”
在實際工程中,系統(tǒng)需要支持新用戶加入和老用戶離開。這兩種情況涉及到前向安全性(Forward Security)和后向安全性(Backward Security)。
3.6.1 前向安全性
現(xiàn)有一個用戶User1是系統(tǒng)中的一個合法的用戶,其具備可信參數(shù)θi、私鑰Kpri、公鑰Kpub等信息。假設(shè)用戶User1因為某種原因,需要離開該系統(tǒng)。系統(tǒng)中的可信的安全中心應(yīng)該得到實時的通知,并獲取用戶User1的用戶標(biāo)識符i=1.安全中心應(yīng)找到可信參數(shù)數(shù)組[θ0,θ1,…,θi]中對應(yīng)的可信參數(shù)θ1,并將可信參數(shù)θ1從可信參數(shù)數(shù)組[θ0,θ1,…,θi]中移除,即可信參數(shù)θ1不再是系統(tǒng)中的一個有效的可信參數(shù)。同時,安全中心會通過可信參數(shù)θ1、私鑰Kpri、公鑰Kpub,使用TwGen算法,為關(guān)鍵字w生成Tw1=
3.6.2 后向安全性
假設(shè)用戶User2因為某種原因,現(xiàn)在需要加入該系統(tǒng)。系統(tǒng)中可信參數(shù)數(shù)組[θ0,θ1,θ3,…,θi]中并不包括用戶User2的用戶標(biāo)識符i=2所對應(yīng)的可信參數(shù)θ2,用戶User2就無法生成有效的檢索參數(shù)Tw1=
在用戶User2加入系統(tǒng)時,安全中心獲取用戶User2的用戶標(biāo)識符i=2。安全中心應(yīng)該Enc算法通過用戶標(biāo)識符i=2生成對應(yīng)的可信參數(shù)θ2,并將θ2加入到可信參數(shù)組[θ0,θ1,…,θi]中,即θ2將會成為系統(tǒng)中一個有效的可信參數(shù)。安全中心會通過可信參數(shù)θ2、私鑰Kpri、公鑰Kpub以及在更新前系統(tǒng)中已有的可信參數(shù),使用檢索參數(shù)的生成方法,針對目標(biāo)關(guān)鍵字w生成對應(yīng)的檢索參數(shù):
Tw1=
服務(wù)器端存放的是密文信息,服務(wù)器無法恢復(fù)出任何明文信息。檢索參數(shù)Twi與密文關(guān)鍵字CTi也是加密的,在沒有安全參數(shù)θi的情況下,服務(wù)器無法獲取任何檢索請求信息。系統(tǒng)的機密性得到保證。
本文提出的SESKM方案在服務(wù)器端保存密文信息,對關(guān)鍵字也是加密存放的,在空間開銷上主要依賴所選擇的加密算法,與同類方案在空間性能上是一致的。
本文的SESKM方案在進(jìn)行密文檢索時主要進(jìn)行:哈希運算,隨機函數(shù)運算,取子串運算,異或運算。對于m個用戶的n條密文信息的密文查詢,一次密文查詢主要有:n×m+5次哈希運算、3次隨機函數(shù)運算,2次取子串運算,1次異或運算。
本文分析了常見的SEBSK方案,為其引入多用戶相關(guān)的特性和功能。使得這種原本僅可以一對一傳輸?shù)男畔⒓用芗夹g(shù)方案,擴展到多用戶的系統(tǒng)中。整個系統(tǒng)中任意一個客戶端都可以向服務(wù)器端傳輸系統(tǒng)中所有客戶端都可以檢索和解密的信息。針對SESKM方案中存在的前向安全性和后向安全性問題進(jìn)行了討論。最后分析了本文中提出的方案的安全和性能表現(xiàn)。