專利名稱:?jiǎn)蜗蛘J(rèn)證的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及加密系統(tǒng)和用于這類系統(tǒng)的協(xié)議。
背景技術(shù):
為了確保在數(shù)據(jù)通信系統(tǒng)中通信對(duì)之間傳輸?shù)南⒌臋C(jī)密性或消息認(rèn)證的安全,通常采用一個(gè)或多個(gè)加密協(xié)議以保證消息的安全。這樣的協(xié)議必須能夠抵抗多種攻擊,所述攻擊可能是由企圖破解協(xié)議的入侵者制造的。一種這樣的攻擊是重演攻擊(replay attack)。“重演攻擊”試圖在后來的時(shí)間通過記錄消息和復(fù)制協(xié)議,重復(fù)早先傳輸中執(zhí)行的行為以獲得關(guān)于通信方的私人信息或用于加密的密鑰。
這樣的攻擊可以通過增加協(xié)議復(fù)雜性為代價(jià)來防止,例如使用時(shí)間隨機(jī)數(shù)(nonce)。然而,在許多情況下,特別是傳統(tǒng)運(yùn)算(legacyoperation),在協(xié)議上增加時(shí)間隨機(jī)數(shù)要求對(duì)協(xié)議和/或消息的數(shù)據(jù)結(jié)構(gòu)的重大改變,有些情況經(jīng)常不能被傳統(tǒng)系統(tǒng)接受。由于這樣的變化要求標(biāo)記的修改和重新配置,這樣的變化在具有大量認(rèn)證標(biāo)記的配置基礎(chǔ)的傳統(tǒng)系統(tǒng)(legacy system)中是有問題的。需要一種不需要改變構(gòu)建基礎(chǔ)的防止重演攻擊的方法。
因此本發(fā)明的目標(biāo)是避免或減輕上述缺陷。
概括地,本發(fā)明利用提供在消息簽名期間生成的用于驗(yàn)證簽名的可辨別的隨機(jī)分量,以驗(yàn)證消息的原創(chuàng)性并且禁止對(duì)協(xié)議的重演攻擊。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)方面應(yīng)用于簽名方案,其中所述簽名包括隨機(jī)分量,即在每次計(jì)算簽名時(shí)從隨機(jī)產(chǎn)生的比特流中得出的分量。為了符合協(xié)議,所述簽名必須包括隨機(jī)分量。所述分量的一部分提供了可以用于禁止重演攻擊的比特模式。
負(fù)責(zé)認(rèn)證的實(shí)體存儲(chǔ)了以前被發(fā)送方使用并從與隨機(jī)分量關(guān)聯(lián)的簽名消息的一部分中提取出來的比特模式列表。如果以前已經(jīng)見過所述比特流,則認(rèn)為所述消息不是原始的并且拒絕所述消息,即所述消息以前收到過;如果以前沒見過所述比特流并且所述簽名是真實(shí)的,則將所述比特模式加入存儲(chǔ)列表并且接受所述消息。
在結(jié)合下列附圖的以下詳細(xì)描述中,本發(fā)明的優(yōu)選實(shí)施例的特征以及其它特征將更加清楚圖1是數(shù)據(jù)通信系統(tǒng)的示意圖;圖2是表示簽名消息的數(shù)據(jù)流的示意圖;圖3是在圖1所示的系統(tǒng)中的信息流的示意圖;圖4是利用ECDSA簽名協(xié)議的實(shí)施例的詳細(xì)示意圖;圖5是類似于圖4、應(yīng)用于RSA簽名方案的實(shí)施例的詳細(xì)示意圖。
具體實(shí)施例方式
參考圖1,通常表示為10的數(shù)據(jù)通信系統(tǒng)包括由數(shù)據(jù)通信鏈路16相互連接的通信對(duì)12、14。通信對(duì)12、14中的每一個(gè)包括執(zhí)行一組程序指令的計(jì)算裝置18和連接在計(jì)算裝置18和通信鏈路16之間的加密模塊20。
很容易理解通信對(duì)12、14可以是通用的計(jì)算機(jī)或在客戶機(jī)/服務(wù)器關(guān)系中的專用設(shè)備,比如通過鏈路16與金融機(jī)構(gòu)連接的銷售點(diǎn)設(shè)備、PDA或移動(dòng)電話。
在運(yùn)行中,計(jì)算裝置18準(zhǔn)備由加密單元20處理并且通過鏈路16作為數(shù)據(jù)流26發(fā)送的消息。通信方14的加密單元20對(duì)數(shù)據(jù)流進(jìn)行處理,從而在傳遞給計(jì)算裝置18之前恢復(fù)和鑒別所接收到的消息。
通信方14包括數(shù)據(jù)庫(kù)22,所述數(shù)據(jù)庫(kù)包括由處理器20接收到的簽名中所選的一部分的比特模式(bit pattern)列表24。數(shù)據(jù)庫(kù)22可以由計(jì)算裝置18訪問并且方便地組成列表24從而為特定初始通信方12進(jìn)行接收消息的比特模式和包含在數(shù)據(jù)庫(kù)中的比特模式之間的比較。
加密裝置20可以執(zhí)行多個(gè)不同的協(xié)議,比如密鑰生成、加密/解密或簽名以及驗(yàn)證。為了說明優(yōu)選實(shí)施方式可以假設(shè)通信方12在計(jì)算裝置18中準(zhǔn)備由加密裝置20簽名的信息包。一旦在通信方14接收到,加密處理器20驗(yàn)證簽名并且將信息傳送到計(jì)算裝置18。
在運(yùn)行中,通信方12在計(jì)算裝置18中生成信息I并且將所述信息轉(zhuǎn)發(fā)到加密處理器20。加密處理器20利用一個(gè)生成隨機(jī)分量r的協(xié)議對(duì)信息I簽名。表示信息I的比特和包含隨機(jī)分量的簽名分量被組合到數(shù)據(jù)流26中以表示簽名消息28。
通過鏈路16以數(shù)據(jù)流發(fā)送簽名消息28,并且在通信方14通過加密單元20接收。根據(jù)簽名表以常規(guī)的方式驗(yàn)證所述簽名。如果所述驗(yàn)證被認(rèn)證為真,則與隨機(jī)分量r對(duì)應(yīng)的簽名消息部分被定位。然后,表示所述部分的比特流與包含在數(shù)據(jù)庫(kù)22中的比特流進(jìn)行比較以保證沒有相同的隨機(jī)分量在之前的簽名消息中使用。如果所述比特流之前沒有使用過,也就是在數(shù)據(jù)庫(kù)22中沒有匹配,由于之前沒有收到過,所以所述簽名被看作原創(chuàng)消息并被接受。如果找到了匹配則簽名消息不被接受。
下面參考圖4利用ECDSA簽名協(xié)議描述了一個(gè)可用于執(zhí)行上述技術(shù)的已建立的簽名協(xié)議的實(shí)例。
信息I應(yīng)當(dāng)通過使用具有公知參數(shù)的橢圓曲線密碼系統(tǒng)(ECC)中的通信方12的長(zhǎng)期私有密鑰d進(jìn)行簽名,所述參數(shù)包括n次的生成點(diǎn)P通信方12隨機(jī)生成臨時(shí)私有密鑰k并且計(jì)算相應(yīng)的表示坐標(biāo)點(diǎn)(x,y)的臨時(shí)公共密鑰kP。
為了計(jì)算簽名的第一分量r,將臨時(shí)公共密鑰kP的第一坐標(biāo)轉(zhuǎn)換為整數(shù)。由于是根據(jù)隨機(jī)私有密鑰k確定的,第一分量本身是隨機(jī)的。
通過求解簽名的第二分量s的簽名等式ks=H(I)+dr(mod n)生成簽名的第二分量s,其中H是適當(dāng)?shù)募用芄:瘮?shù)(hash function),比如SHA1。
將信息和簽名組合為在限定的位置上包含(I,r,s)的數(shù)據(jù)流26,然后通過鏈路16作為簽名消息28發(fā)送。
一旦在通信方14接收到簽名消息28,加密處理器20對(duì)該簽名進(jìn)行認(rèn)證。所述認(rèn)證通常如下進(jìn)行首先,通過計(jì)算s-1(H(I)P+rA)來計(jì)算臨時(shí)公共密鑰kP,其中A是通信方12的長(zhǎng)期公共密鑰。
在kP還原(recovery)后,將kP的第一坐標(biāo)按照與通信方12相同的過程轉(zhuǎn)換為整數(shù)。所獲得的整數(shù)應(yīng)該與包含在傳輸中的數(shù)字r相對(duì)應(yīng),如果是這樣的話就接受所述簽名。如果不是,不驗(yàn)證所述簽名并且拒絕該簽名。
為了禁止重演攻擊,從簽名消息28中提取或?qū)С鰯?shù)字r的子集f(r)。將所述子集f(r)與之前在通信方12的數(shù)據(jù)庫(kù)22中存儲(chǔ)的子集列表24進(jìn)行比較。所述數(shù)據(jù)庫(kù)22適宜由進(jìn)行比較的通信方組建。公知的掩碼和移位技術(shù)可以用于有效地提取和比較比特流。如果只涉及到重演攻擊,則將接收自同一個(gè)通信方的子集進(jìn)行比較就足夠了,但是為更高的安全性可以將之前所有的子集進(jìn)行比較。
如果子集f(r)在所述列表中,則拒絕所述認(rèn)證,表示所述子集在以前使用過。如果子集f(r)不在所述列表24中,該進(jìn)程繼續(xù)進(jìn)行并且利用公知的存-取技術(shù)將子集f(r)以允許后續(xù)有效讀取的方式加入數(shù)據(jù)庫(kù)22。
應(yīng)該理解,優(yōu)選地,可以在子集的比較之后執(zhí)行簽名驗(yàn)證。還應(yīng)該注意到用于檢測(cè)潛在的重演的子集是用于簽名驗(yàn)證的簽名分量r的一部分,并且同樣已經(jīng)存在于簽名消息中。從而,附加的認(rèn)證既不影響帶寬也不影響協(xié)議,因此避免了冗余。
從隨機(jī)分量中選擇的比特?cái)?shù)取決于應(yīng)用所需要的安全等級(jí)和可利用的存儲(chǔ)空間。從隨機(jī)分量中選擇的比特?cái)?shù)還應(yīng)該足夠大以保證抵抗“生日驚喜”(birthday surprise),其中在存儲(chǔ)m+1比特的情況下,計(jì)算出在匹配之前發(fā)生的事件的預(yù)期數(shù)量為趨近 例如,存儲(chǔ)40位,可期望得到不少于130萬個(gè)簽名的匹配;存儲(chǔ)60位,可期望得到不少于13億個(gè)簽名的匹配。
在如圖5所示的第二個(gè)優(yōu)選實(shí)施例中,簽名方案是公知的具有RSA-PSS附件的RSA整數(shù)-因數(shù)分解方案,如PKCS#1 2.1版中所定義的。
信息I按照如下描述進(jìn)行編碼i)對(duì)信息I進(jìn)行哈希處理,所述哈希值根據(jù)預(yù)填充字節(jié)和附加的隨機(jī)字節(jié)r分類(bracket),得出分類哈希值E。
ii)進(jìn)一步對(duì)分類哈希值E進(jìn)行哈希處理,得到比特串H。
iii)比特串H用于掩碼生成函數(shù),并且用于對(duì)附加于信息I的哈希值的隨機(jī)字節(jié)進(jìn)行掩碼的所述函數(shù)的輸出。
iv)編碼后的信息被組合而組成包括來自步驟iii)掩碼輸出、來自步驟ii)的進(jìn)一步哈希值即比特串H、以及填充字節(jié)的串聯(lián)。
然后,將編碼后的信息轉(zhuǎn)換為數(shù)字。在具有通信方12的私有指數(shù)的數(shù)字上進(jìn)行RSA運(yùn)算,并且將結(jié)果轉(zhuǎn)換為用作簽名的信息I的比特串s。
然后將具有簽名(I,s)的消息通過鏈路16作為數(shù)據(jù)流28發(fā)送到通信方14。
一旦通信方14收到所述數(shù)據(jù)流(I,s),驗(yàn)證和認(rèn)證過程如下在通信方14的加密處理器中,將簽名s轉(zhuǎn)換為數(shù)字。
然后在具有通信方12的公共指數(shù)的數(shù)字上進(jìn)行RSA運(yùn)算,生成被轉(zhuǎn)換為所謂分類哈希值E’的另一個(gè)數(shù)字。
所謂分類哈希值E’被哈希處理,并且被分離為所謂掩碼輸出和所謂原始消息的哈希值。
利用所謂掩碼輸出和所謂哈希值,提取出所謂隨機(jī)字節(jié)。
對(duì)適當(dāng)?shù)奶畛?、所謂分類哈希值的哈希值以及所謂隨機(jī)字節(jié)的串聯(lián)進(jìn)行哈希處理,并且與原始消息的所謂哈希值進(jìn)行比較。如果兩者一致,則認(rèn)為所述簽名可被驗(yàn)證和接收。
為了禁止重演攻擊,在驗(yàn)證之前或驗(yàn)證之后,提取數(shù)字s的子集f(s),其中f是預(yù)定的函數(shù)。子集f(s)從相應(yīng)于附加隨機(jī)字節(jié)的簽名中選擇并且與數(shù)據(jù)庫(kù)22中通信方12以前存儲(chǔ)的子集列表24進(jìn)行比較。
如果子集在所述列表中,拒絕認(rèn)證。如果子集不在所述列表中,接受所述簽名并且將所述子集加入列表。因此,通過使用簽名分量的一部分,再次禁止了重演攻擊,所述簽名分量是隨機(jī)的并且在簽名驗(yàn)證中被協(xié)議使用。
以上描述的在簽名驗(yàn)證背景中的實(shí)例也可以用于生成隨機(jī)比特模式的其它協(xié)議。例如,MQV協(xié)議可以用于密鑰協(xié)商協(xié)議以及簽名協(xié)議。
在密鑰協(xié)商協(xié)議中,交換每個(gè)通信方的臨時(shí)公共密鑰并且組成消息的一部分。所述臨時(shí)公共密鑰是隨機(jī)的并且用于認(rèn)證各方。從而,可以提取表示所述密鑰的數(shù)據(jù)的子集,并且與現(xiàn)存的數(shù)據(jù)庫(kù)進(jìn)行比較以驗(yàn)證所述交換消息的原創(chuàng)性。
應(yīng)該理解,盡管在上面的說明書中數(shù)據(jù)庫(kù)22被表示為與通信方14相關(guān)聯(lián),然而在需要免受這種攻擊的系統(tǒng)中類似的數(shù)據(jù)庫(kù)可以與每個(gè)通信方相關(guān)聯(lián)。
權(quán)利要求
1.一種在數(shù)據(jù)通信中一方確認(rèn)由該系統(tǒng)中另一方生成的消息的原創(chuàng)性的方法,所述方法包括如下步驟為了驗(yàn)證所述消息的真實(shí)性,從所述消息中提取包含在所述消息中的隨機(jī)數(shù)據(jù)的比特模式樣本,將所述比特模式和以前提取的比特模式進(jìn)行比較,如果所述比特模式以前提取過,則拒絕所述消息。
2.根據(jù)權(quán)利要求1所述的方法,其中所述比特模式保存在所述通信方的數(shù)據(jù)庫(kù)中。
3.根據(jù)權(quán)利要求2所述的方法,其中構(gòu)建所述數(shù)據(jù)庫(kù)以管理與先前從所述其它通信方獲得的比特模式的比較。
4.根據(jù)權(quán)利要求1-3中任何一項(xiàng)所述的方法,其中所述隨機(jī)數(shù)據(jù)從臨時(shí)公共密鑰中得到。
5.根據(jù)權(quán)利要求4所述的方法,其中所述消息包括在所述通信方之間交換的信息以及在所述信息上的簽名,所述隨機(jī)數(shù)據(jù)是所述簽名的一部分。
6.根據(jù)權(quán)利要求5所述的方法,其中根據(jù)ECDSA執(zhí)行所述簽名。
7.根據(jù)權(quán)利要求5所述的方法,其中所述簽名被作為RSA簽名來執(zhí)行。
8.根據(jù)權(quán)利要求5所述的方法,其中所述隨機(jī)數(shù)據(jù)用于驗(yàn)證所述信息中的所述簽名。
9.根據(jù)權(quán)利要求8所述的方法,其中在確定所述消息的原創(chuàng)性之前,通過比較所述比特模式執(zhí)行所述驗(yàn)證。
10.根據(jù)前面任何一項(xiàng)權(quán)利要求所述的方法,其中如果比較表明提取得到的比特模式先前沒有被提取過,將所述提取得到的比特模式加入所述數(shù)據(jù)庫(kù)。
全文摘要
一種在現(xiàn)有的、易受重演攻擊但是包括隨機(jī)分量的認(rèn)證協(xié)議中無需修改所述協(xié)議而防止這類攻擊的加密系統(tǒng)。負(fù)責(zé)認(rèn)證的實(shí)體存儲(chǔ)以前使用過的、從與隨機(jī)分量關(guān)聯(lián)的認(rèn)證消息的一部分中提取的比特模式的列表。如果以前見過所述比特模式,拒絕所述消息;如果以前沒見過所述比特模式,接受所述消息。
文檔編號(hào)H04L9/32GK1922816SQ200580004862
公開日2007年2月28日 申請(qǐng)日期2005年2月14日 優(yōu)先權(quán)日2004年2月13日
發(fā)明者斯科特·A·萬斯通, 謝里·E·香農(nóng)萬斯通 申請(qǐng)人:塞爾蒂卡姆公司