1 密碼學基礎知識
密碼學算法主要分為兩種:對稱加密和非對稱加密。對稱加密就是使用了一樣的密鑰來加密,需要在只有通信的雙方知道密鑰的情況下才安全。在非對稱加密算法中,有公鑰和私鑰兩種密鑰,其中,公鑰是公開的,不需要保密,私鑰由個人持有,必須妥善保管和注意保密。加密和解密使用兩種不同的密鑰,用公鑰加密,只有私鑰能解密,用私鑰加密,只有公鑰能加密。RSA就是一種常見的、應用很廣的非對稱加密算法。
加密解密過程就是A往B發送消息,A用B的公鑰把消息加密,只有B的私鑰能解密。然后A把加密后的消息發送給B,B用自己的私鑰解密就能看到了,途中沒有別人可以破解消息,因為別人只有B的公鑰。然后B用自己的私鑰加密消息,回復給A,A用B的公鑰解密讀取回復。但是這樣真的安全嗎?如果傳輸過程中消息被人修改了怎么辦?如果A加密使用的公鑰不一定是B的公鑰呢,只是他以為是B的公鑰。
上面的問題可以用數字簽名和數字證書解決。數字簽名可以解決消息被人修改的問題,數字簽名是一個hash算法,A把要發送的消息通過hash算法計算出一個hash值,當做摘要,和消息一起傳送,B把消息hash之后得到另一個摘要,驗證是否和A傳送過來的摘要相同。如果擔心消息和hash摘要都被修改,可以把hash摘要用B的公鑰加密,就不怕別人改了。數字證書可以解決這個公鑰是不是B的公鑰問題,數字證書是通過權威機構-證書管理機構發放的證書,如同現實中的身份證一樣,是證明這個公鑰是某人的,數字證書會把這個人的公鑰,姓名,證書機構名稱,有效期放在一起。這樣A就可以先請求B的公鑰,然后B把數字證書給A看,就證明這個是B的公鑰,A再拿這個B的公鑰去發送消息。但是證書也可以偽造,中途被攔截了,修改成C的公鑰,以及B的名字,這怎么辦呢?所以在證書機構頒發證書的時候,會用數字簽名給證書內容做個摘要,然后用機構的私鑰加密這個摘要,這樣就不怕別人篡改造假證書了。現在https協議就是基於非對稱加密技術的,首先客戶端往服務器發起加密請求,於是服務器會用自己的私鑰加密網頁,然后連同自己的數字證書(這個證書里包含證書頒發機構做的簽名)發送客戶端,客戶端瀏覽器會查看操作系統認證的受信任的證書頒發機構查找公鑰,驗證證書是否被篡改,如果被篡改會發出警告。如果查找不到受信任的證書頒發機構,瀏覽器也會發出警告。
RSA算法公式
①M為明文,C為密文,e為公鑰
②密文解密公式
d為私鑰
RSA算法流程
- 確定n
獨立選取兩個大素數p,q(100~200位十進制數字) 。 - 確定e
計算n的歐拉函數值,在1-
中隨機選取整數e,使得,歐拉函數值和公鑰的最大公因數為1,即為互素數。確定d
- 計算e mod
的乘法逆元,即為d。
2 密鑰共享背景
密鑰管理是為了防止通信雙方在信息交換時密鑰泄露或者被篡改和替換的系列過程,保證通信雙方在通信時密鑰的安全性與可靠性,當一個密鑰對多份信息進行加密時,該密鑰一旦丟失、損壞或者被非法獲得時,多個加密的機密文件就可能會被非法解密,從而造成巨大的損失。為了解決這個問題,將密鑰進行多個備份,並讓不同的人把密鑰保存在不同的地方,而這個方案也出現了一個問題,那就是越多的人知道該密鑰則密鑰泄漏的可能性就越大,越少的人知道了該密鑰,密鑰全部丟失后還原出源文件的可能性越小。為了解決上述問題,1979年,shamir用Blakley分別用不同的方法獨立的提出密鑰共享的概念,其基本思想是將密鑰分成若干部分,並且不同的參與者分別保管,只有當參與者的數是達到一定門限時,他們分別拿出自己的密鑰才能恢復出主密鑰。Shamir的(t,n)門限方案是利用多項式插值法構造出一個(t-1)次多項式,將多項式的常數項當作需要共享的密鑰。Blakley的(t,n)門限方案基於射影幾何理論,其共享密鑰是由t個(t-1)維超平面的空點來構成。另外,Asmuth-Btoom提出了基於中國剩余定理的方案,Kamaa-Creene-Helman提出了基於矩陣的方案。從此,密鑰共享技術的研究與應用獲得了比較快的發展。
基於門限方案僅針對門限訪問結構的局限性,1987年,Ito等人提出了一般存取結構的密鑰共享方案,該方案的本質是Shamir的密鑰分配算法的推廣,但該方案導致每個人掌握的子密鑰信息量大,致使數據擴散很大,因而該方案並不實用。針對同一組人(或共享控制集合)要共享多個密鑰,而且不同的主密鑰對應不同的密鑰控制要求的問題,產生了多密鑰共享控制的概念。例如,在一個導彈發射指揮平台上,發射指令需要進行共享控制,但由於多種型號的導彈,故有多個不同的發射指令,不同權限的人在共享控制中起到的作用也不相同,這就需要研究和設計多密鑰共享體制。至今,多密鑰共享體制的已有研究成果並不多,而多密鑰共享在數字簽名、電子拍賣、密碼圖像共享等方面又具有極其重要的利用價值,因此,對多密鑰共享體制的構造,特別是安全且高效的模型建立,還需要進一步研究。
傳統的密鑰共享方案只能共享密鑰K,但是密鑰K一旦被一些攻擊者破解時,就不能繼續作為密鑰被共享。當前,許多國內外學者提出了許多的密鑰共享方案。如:廣義的多密鑰共享方案、可驗證的多密鑰共享方案、動態的多密鑰共享方案等。為了提高方案的安全性和降低系統的復雜性,可以將這些方案與一些密碼體制相結合如:離散對數算法或RSA從而得到了一些性能更好的方案。在密鑰共享發展的早期,都是假設(t,n)門限密鑰共享方案中的密鑰分發者和參與者是誠實的。然而,在實際運行過程中該假設並不一定成立。為了解決密鑰分發者及參與者不誠實的問題,一些學者經過不斷的研究提出了可驗證的密鑰共享方案。
3 可驗證密鑰共享研究
密鑰共享方案最早是出Shami和Blakley與1979年分別提出的。在早期的研究中都有一個前提,那就是密鑰共享方案中的密鑰分發者(Dealer)都是可信任的。但是在現實中,這樣的假設卻不一定在任何情況下都成立。一旦密鑰分發者將錯誤的子密鑰發送給一個或者多個參與者,那會造成一些訪問結構無法恢復出密鑰。以至於損害到合法參與者的利益。為了解決密鑰分發者的不可信任問題,研究者們提出了可驗證密鑰共享(Verifiable Secret Sharing,簡稱VSS)這-概念。可驗證密鑰共享是一類特殊的密鑰共享,它不僅能過使參與者共享一個密鑰,而且參與者在不泄露子密鑰信息的條件下可以驗證子密鑰的有效性。
3.1可驗證密鑰共享的概念
通常的密鑰共享方案,都假設密鑰分發者是誠實的。這會導致基本密鑰共享中存在--個主要的安全問題:不能防止密鑰分發者的欺騙,即分發者在分發子密鑰時可能會給一個或者多個參與者分發偽造的子密鑰。為了解決這個問題,Chor等人提出了可驗證密鑰共享(VSS)的概念。可驗證密鑰共享就是把一個普通的密鑰共享方案附加上一個允許參與者認證他們收到的子密鑰的交互式算法,參與者可通過認證算法檢驗自己的子密鑰是否有效。
3.2可驗證密鑰共享的研究現狀
目前可驗證密鑰共享的研究方面,主要存在兩點不足之處,一是提出安全高效的門限方案不多,已經提出的可驗證密鑰共享方案主要是門限方案,只有為數不多的幾個非門限方案。而是對--般訪問結構上的可驗證密鑰共享的研究非常薄弱,在已有的文獻中還見不到安全實用的廣義可驗證密鑰共享方案。在關於可驗證密鑰共享的應用研究方面也存在着幾個明顯的缺陷,主要表現在:
(1) 對門限可驗證密鑰共享方案在密碼學中的研究較多,而對其在簽名的門限生成及共享驗證的數字簽名方面的研究涉及的甚少。
(2) 對廣義可驗證密鑰共享在面向群體的密碼學中的應用,如基於--般訪問結構的分布式密鑰生成,分布式簽名的研究幾乎沒有涉及。
(3) 對可驗證密鑰共享在電子商務中的應用研究的不夠深入。可驗證密鑰共享的研究雖然在理論和應用兩方面都取得了一定的成果,但仍然有許多問題值得我們進一步的研究。
3.3 Feldman的研究方案
Feldman在Shamir的密鑰共享方案基礎上提出了一種可驗證的密鑰共享方案。以下為詳細算法:
(1) 初始化階段
設p是一個大素數,q為p-1的一個大素數因子,且為q階元素,三元組(p,q,g)是公開的,k是門限值,n是參與者的數目,s為要共享的密鑰。
(2) 子密鑰分發階段
密鑰分發者(Dealer)選取一個k-1次的隨機多項式,並使得
。即在
任意選取k-1個隨機數
,構造多項式
然后計算並發送子密鑰給參與者
,並且廣播驗證信息,
。
(3) 驗證階段
參與者,i=1,2,…,n在收到子密鑰
之后,可通過檢查等式
是否成立來驗證子密鑰的正確性。若等式成立相等則說明參與者擁有的子密鑰是正確的,否則說明收到的子密鑰是不正確的。
(4) 密鑰恢復階段
當k個參與者,不妨假設為合作恢復密鑰時,每一個參與者
都要公開他的子密鑰份額
。此時任何一個參與者都可以通過驗證上述等式來驗證其他參與者的子密鑰的正確性。若經檢驗,所有公開的子密鑰都是正確的,那么密鑰可以由拉格朗日插值公式來恢復。
4 密鑰共享中的防欺騙問題
Shamir的基於拉格朗日插值多項式的密鑰共享算法是在1979年提出的。1989年,Tompa等人首次提出了一種對Shamir的密鑰共享方案中的攻擊方法。該攻擊方法可以描述如下:假設k個參與者在一起進行密鑰恢復,其中P1,P2,…,Pk-1是k-1個共謀的參與者,他們企圖欺騙誠實的參與者Pk使得Pk在不知情的情況下,得到一個錯誤的密鑰。在公開子密鑰的時候,P1,P2,…,Pk-1分別拿出假的子密鑰,而參與者Pk則拿出正確的子密鑰mt。這樣參與者Pk只能得到一個由
恢復出來的假的密鑰s',而其他共謀的參與者卻可以恢復出正確的密鑰s。與此同時,誠實的參與者Pk無法判斷密鑰s'的真偽。在Shamir的密鑰共享中,即使是一個不誠實的參與者也可以利用上述手段來欺騙其他k-1個參與者,而Shamir的密鑰共享方案本身不具備任何抵抗該欺騙的能力。自此以后,密鑰共享中的防欺騙的研究便成為了密鑰共享中的熱點研究問題。
4.1 抵抗欺騙的密鑰共享研究現狀
目前,對密鑰共享中的防欺詐研究主要是針對門限訪問結構的。在密鑰恢復的過程中,參與者拿出自己的子密鑰來進行密鑰重構。此時,不誠實的參與者會拿出偽造的子密鑰,在這種情況下,誠實的參與者將恢復一個偽造的密鑰,而欺騙者能獲得正確的密鑰。因而,密鑰共享中的防欺詐就是誠實的參與者能夠判斷恢復的密鑰的正確性,從而維護自己的合法利益。早在1989年,McEliece等就利用糾錯碼提出了一種(k,n)門限密鑰共享體制,使得最多含有e個欺騙者的k+2e個參與者可以正確的恢復出密鑰。然而在這個方案中,參與者密鑰恢復的人數是多於k個的。當含有欺騙者的k個參與者進行密鑰共享的時候,誠實的參與者無法判斷恢復的密鑰是否正確。Tompa等人提出了一種防欺騙的密鑰共享方案,能夠在k個參與者進行密鑰共享的時候抵抗欺騙。與Shamir的密鑰共享方案不同的是,在該方案中,子密鑰的取值范圍|Vi|相對密鑰的取值范圍|S|有一定的擴張,它們滿足:
其中表示在該方案中,欺騙者成功的概率。
我們上述的在密鑰共享方案屮的欺騙行為有可以被分為兩種不同的模式。Carpentieri等人提出了一種欺騙模式,在這種模式中,欺騙者是在已經知道密鑰的情況下欺騙其余的誠實的參與者,使他們獲得一個錯誤的密鑰。我們把這種模式叫做“CDV”模式。另外,Ogata等人最近提出一種新的欺騙模式,欺騙者在不知道密鑰的情況下進行欺騙。我們把這種欺騙模式叫做“OKS”模式。Tompa等人提出的方案實際上是屬於“CDV”模式的。Carpentieri等人分析在“CDV”模式下,可抵抗欺騙的密鑰共享中的子密鑰的取值范圍,並且給出了一個取值范圍的下限:
同樣,Ogata等人也分析了在“OKS”模式下,可抵抗欺騙的密鑰共享中子密鑰的取值范圍,並且給出一個下限:
在“OKS”模式中,Ogata等人還提出了一種可抵抗欺騙的密鑰共享方案,在這個方案中,子密鑰的范圍達到了上述表達式中的下限。但是,該方案只有在密鑰是均勻分布的情況下才是安全的。對於“CDV”模式,Cabello等人提出了一個可抵抗欺騙的密鑰共享方案,在該方案中,子密鑰的規模接近理論的下限,並且密鑰可以隨機分布。
以上提到的方案考慮的是參與密鑰恢復的參與者的欺騙行為,因而,他們假設欺騙者的數量不會超過k。Araki提出一種更新的欺騙模式。在這種模式里,不但參與密鑰重構的參與者可能存在欺騙行為,沒有參與密鑰重構的參與者也有可能與參與重構的欺騙者共謀,來欺騙誠實的參與者,欺騙者的數量是會大於K的。在這種假設下,欺騙者可以獲得足夠的子密鑰而獲得正確的密鑰。所以我們把這類新的欺騙模式叫做“CDVn-1”模式。Araki還提出了一個“CDVn-1”模式下的可抵抗欺騙密鑰共享方案。另外,我們指出,Tompa等人的方案也可以抵抗“CDVn-1”模式的欺騙。
在矢量空間訪問結構上的密鑰共享中,對於防止欺騙也有一定的研究,但相對於門限訪問結構上的防欺騙研究還顯得不夠深入。
上述介紹的密鑰共享中的防欺騙手段,主要是使得誠實的參與者可以判斷恢復的密鑰的正確性。但是當判斷出密鑰是偽造的時候,誠實的參與者卻沒有辦法鑒別哪一個子密鑰是偽造的。雖然這樣可以在一定程度上防止欺騙,但是如果僅僅只能判斷密鑰的真偽,而不能鑒別出欺騙者,會使得這些欺騙者在后續的密鑰重構過程中繼續作假。實際上,最早的能夠鑒別欺騙者的密鑰共享方案最多含有e個欺騙者的k+2e個參與者不僅能夠恢復出正確的子密鑰,而且可以將這些不超過e個的欺騙者全部鑒別出來。但是該方案的局限性在於參與密鑰重構的人數要大於門限值k。這樣,在很多密鑰共享的應用場景中,這種鑒別欺騙者的方法並不奏效。1989年,Rabin等人提出了一種新的可鑒別欺騙者密鑰共享方案。該方案可以在k個參與者進行密鑰重構的時候,成功的進行的欺騙者鑒別,只是該方案的效率不是太高。1995年,Kurosawa等人給出了一種效率較高的可鑒別欺騙者密鑰共享方案。該方案能成功的前提條件是欺騙者的數目t要滿足t(k-1)/3。2011年,Obana又提出了一個最新的方案。該方案的前提條件和Kurosawa方案的條件一樣,可是效率卻比之前的方案有了很大程度上的提高。
無論是能夠判斷密鑰的正確性的密鑰共享方案,還是可鑒別欺騙者的密鑰共享方案,為了能夠抵抗欺騙,參與者的子密鑰的取值范圍都相對密鑰有一定程度的擴張。但是,就擴張的程度來說,可鑒別欺騙者的密鑰共享方案中的子密鑰的擴張程度要遠遠大於能夠判斷密鑰的正確性的密鑰共享方案中子密鑰的擴張程度。我們在考慮一個密鑰共享方案的效率的時候,主要的參數就是子密鑰的擴張程度。當子密鑰擴張的越大的時候,方案的效率就越低,反之效率越大。
4.2 可抵抗欺騙密鑰共享的模型
可抵抗欺騙的密鑰共享方案和一般的密鑰共享方案相同,也由一個密鑰分發者D、參與者集合P、訪問結構T、密鑰空間S、密鑰空間M、密鑰分發算法ShareGen和一個密鑰恢復算法Recons組成。可抵抗欺騙的密鑰共享方案分為兩個階段,密鑰分發階段和密鑰恢復階段。其中密鑰分發階段和一般密鑰共享中的密鑰分發階段相同。而在密鑰恢復階段,參與者不僅可以重構密鑰,而且更進一步,可以判斷恢復的密鑰的正確性。
(1)密鑰分發階段
假設參與者們需要共享的密鑰s∈S,密鑰分發者D調用密鑰分發算法ShareGen,將s∈S作為密鑰分發算法的輸入,並且計算出n個子密鑰:
ShareGen(s)={m1,m2,…,mn},mi∈M
之后,密鑰分發者將子密鑰mi發送給參與者Pi ∈P。
(2)密鑰恢復階段
一組屬於訪問結構的參與者計划可以調用密鑰恢復算法Recons來恢復密鑰。這里的密鑰恢復算法與一般密鑰共享中的密鑰恢復算法有所區別,它包含了一個抵抗欺騙的功能。不妨假設{P1,P2,…,PK}∈Γ ,參與者們調用Recons來恢復密鑰。如果Recons沒有檢測到有欺騙行為,那么:
s=Recons(m1,m2,…,mk)
否則:w=Recons(m1,m2,…,mk)。其中wS,它表示密鑰恢復算法Recons檢測到了有欺騙行為的存在。
5 密鑰共享應用
密鑰共享最初是應用在密鑰管理,即將一個密鑰交由多個參與者共同管理保存,使得參與者對密鑰的重構形成了一定制約,在一定程度上解決了密鑰的遺失和信息泄露等問題。經過幾十年的研究發展,密鑰共享自身的理論不斷的自我加強和日趨完善,人們還發現它在構建許多其他密碼協議時起到了關鍵的作用。
(1)在數字簽名中的應用
數字簽名在信息安全領域,尤其是電子商務中起到了至關重要的作用。與一般意義上的手寫簽名不同,數字簽名是對以數字形式存儲的信息進行簽名。一般來講,一個數字簽名方案包括一個簽名函數Sig和一個對應的驗證函數Ver。令m為需要簽名的消息,簽名者計算Sig(m),然后連同消息m,即{m,Sig(m)}—起傳送給接收者。接收者可以利用驗證函數Ver對{m,Sig(m)}進行驗證。一個好的數字簽名方案應該具有簽名不可偽造,不可抵賴,被簽名消息不可更改等性質。在現實中,很多情況下需要多個簽名,文件才能生效。因此數字簽名也就出現了門限數字簽名和多重簽名等方案,還有將這兩者特點相結合的門限多重簽名方案。
在一個(t,n)門限簽名方案中,有n個簽名者都有簽名權,其中任何t個或者t個以上的簽名者利用自己的私鑰對消息進行簽名,生成部分簽名,然后由一個合並人將所有的部分簽名合並成一個有效地代表所有簽名者的簽名,任何少於t個的簽名者都無法偽造群體的有效簽名。
(2)在電子拍賣中的應用
一個電子競拍系統包括注冊中心,拍賣服務器,賣主和競拍者。注冊中心負責給賣主和競拍者分發合法證書,進行投標注冊等,實際上注冊中心是一個有權威的認證機構。拍賣服務器主要負責拍賣的工作,競拍者將自己的標價密封好通過密鑰信道傳送給拍賣服務器,拍賣服務器打開標價后按照一定的規則,如標價最局者中標,然后公布最后中標的標價。
一個簡單的應用是采用n個拍賣服務器,每個競拍者將自己的標價通過一個(t,n)門限密鑰共享方案在n個拍賣服務器中共享,至少有t個拍賣服務器聯合才能獲得每個競拍者的標價信息,而任何少於t個拍賣服務器聯合起來也無法獲得任何標價信息。為了實現匿名性,每個競拍者也可以利用密鑰共享體制將自己的標價分成若干份,不一次性全部交給拍賣服務器,而是分為若干次上交,每次上交后拍賣服務器進重構,直到找出最高標價為止。
(3)在電子選舉中的應用
電子選舉是將生活中實實在在的選舉電子化,選民可以通過互聯網進行投票選舉。電子選舉需要滿足一些最基本的條件,比如選票匿名,唱票的過程以及當選結果的正確性,可以被選民監督,選民的選票的必須合法等等條件,通過相關的密碼協議實現。密碼共享在電子選舉中的應用即利用門限的思想,在選舉中設立n個唱票人,然后給定一個門限值t,使得至少t個唱票人聯合才能得到最終的選舉結果,而任何少於t個唱票人都不能獲得最終的選票結果。
參考文獻
[1] 劉木蘭, 周展飛, 陳小明. 密鑰共享體制[D]. , 2000.
[2] 張歡. 基於門限的密鑰共享方案的研究及應用[D]. 蘭州理工大學, 2013.