專利名稱:一種防重放攻擊的認(rèn)證方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信系統(tǒng)認(rèn)證領(lǐng)域,尤其是一種防重放攻擊的認(rèn)證方法。
背景技術(shù):
重放攻擊(Iteplay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(FreshnessAttacks),是指攻擊者發(fā)送一個(gè)目的主機(jī)已接收過(guò)的包,來(lái)達(dá)到欺騙系統(tǒng)的目的,主要用于身份認(rèn)證過(guò)程,破壞認(rèn)證的正確性。 重放攻擊會(huì)不斷惡意或欺詐性地重復(fù)一個(gè)有效的數(shù)據(jù)傳輸,攻擊者利用網(wǎng)絡(luò)監(jiān)聽(tīng)或者其他方式盜取認(rèn)證憑據(jù),之后再把它重新發(fā)給認(rèn)證服務(wù)器,以破壞認(rèn)證的安全性。例如通過(guò)監(jiān)聽(tīng)http數(shù)據(jù)傳輸或者其他方式截獲cookie并提交cookie就是一種重放攻擊,可以輕松復(fù)制別人的cookie從而獲得相應(yīng)的認(rèn)證權(quán)限。為了避免服務(wù)器遭受重放攻擊,現(xiàn)有技術(shù)中一般采用基于時(shí)間判斷的防御機(jī)制,而為了保證不同服務(wù)器直接能識(shí)別接收到的消息是否過(guò)期,時(shí)間戳在其中扮演一個(gè)重要的角色,由于標(biāo)記時(shí)間戳的一方與接收消息的一方會(huì)存在一定的時(shí)間差問(wèn)題,一般會(huì)采用IEEE1588精確時(shí)間協(xié)議(Precision Time Protocol, PTP),或者松散的時(shí)間同步方式來(lái)進(jìn)行時(shí)間同步。若采用專門的時(shí)間同步協(xié)議,可能會(huì)導(dǎo)致通信協(xié)議或者系統(tǒng)更加復(fù)雜,以增加系統(tǒng)的不穩(wěn)定性;若采用松散的時(shí)間同步方式,即通過(guò)在兩個(gè)服務(wù)之間進(jìn)行三次握手,然后服務(wù)器計(jì)算它們之間的時(shí)間最大差值,則需要系統(tǒng)或協(xié)議能忍受一定時(shí)間的延遲或不同步問(wèn)題,但在有些系統(tǒng)或協(xié)議中這種延遲或不同步是不允許的。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種勿需時(shí)間同步的防重放攻擊的認(rèn)證方法,該方法提高了認(rèn)證系統(tǒng)的安全性。為了解決上述技術(shù)問(wèn)題,本發(fā)明所采用的技術(shù)方案是
一種防重放攻擊的認(rèn)證方法,包括以下步驟
客戶端發(fā)送登錄請(qǐng)求消息到登錄認(rèn)證服務(wù)器;
登錄認(rèn)證服務(wù)器生成包括標(biāo)識(shí)當(dāng)前時(shí)間的第一時(shí)間戳的認(rèn)證憑據(jù)給客戶端;
客戶端發(fā)送服務(wù)請(qǐng)求、來(lái)自登錄認(rèn)證服務(wù)器的認(rèn)證憑據(jù)以及自己生成的單向數(shù)據(jù)鏈值到應(yīng)用服務(wù)器;
應(yīng)用服務(wù)器將包括認(rèn)證憑據(jù)和單向數(shù)據(jù)鏈值的信息發(fā)送到登錄認(rèn)證服務(wù)器;
登錄認(rèn)證服務(wù)器判定所述認(rèn)證憑據(jù)的正確性并計(jì)算當(dāng)前時(shí)間與第一時(shí)間戳的時(shí)間差,將用于證明用戶是否已經(jīng)登錄的認(rèn)證憑據(jù)的正確性的判定結(jié)果、所述時(shí)間差及接收到的單向數(shù)據(jù)鏈值封裝成校驗(yàn)信息發(fā)送給應(yīng)用服務(wù)器;
應(yīng)用服務(wù)器接收校驗(yàn)信息,判斷接收到的單向數(shù)據(jù)鏈值是否為最新的單向數(shù)據(jù)鏈值,若否則判定為重放消息,直接丟棄該校驗(yàn)消息;若是則根據(jù)校驗(yàn)信息對(duì)客戶端的服務(wù)請(qǐng)求進(jìn)行服務(wù)響應(yīng)。進(jìn)一步作為優(yōu)選的實(shí)施方式,所述應(yīng)用服務(wù)器根據(jù)校驗(yàn)信息對(duì)客戶端的服務(wù)請(qǐng)求進(jìn)行服務(wù)響應(yīng)包括以下步驟
將校驗(yàn)信息中的時(shí)間差與設(shè)定的有效時(shí)間比較,判斷時(shí)間差是否大于設(shè)定的有效時(shí)間,若是則丟棄該校驗(yàn)信息;若否則執(zhí)行下一步驟;
判斷判定結(jié)果是否正確,若認(rèn)證憑據(jù)正確則執(zhí)行服務(wù)響應(yīng),若否則丟棄該校驗(yàn)信息。
進(jìn)一步作為優(yōu)選的實(shí)施方式,所述設(shè)定的有效時(shí)間來(lái)自應(yīng)用服務(wù)器端。進(jìn)一步作為優(yōu)選的實(shí)施方式,所述設(shè)定的有效時(shí)間來(lái)自登錄認(rèn)證服務(wù)器端。進(jìn)一步作為優(yōu)選的實(shí)施方式,所述設(shè)定的有效時(shí)間可以人為調(diào)整。本發(fā)明的有益效果是本發(fā)明防重放攻擊的認(rèn)證方法,在對(duì)認(rèn)證憑證有效期的校驗(yàn)時(shí),不是在應(yīng)用服務(wù)器端校驗(yàn)認(rèn)證憑證的時(shí)間差,而是將認(rèn)證憑證有效期的校驗(yàn)轉(zhuǎn)移到登錄認(rèn)證服務(wù)器端,由于認(rèn)證憑證上的第一時(shí)間戳是由登錄認(rèn)證服務(wù)器生產(chǎn)的,在校驗(yàn)認(rèn)證憑證的有效期時(shí)采用登錄認(rèn)證服務(wù)器本地端的時(shí)間與第一時(shí)間戳比較,保證了校驗(yàn)的準(zhǔn)確性,勿需對(duì)應(yīng)用服務(wù)器和登錄認(rèn)證服務(wù)器的時(shí)間進(jìn)行同步;進(jìn)一步通過(guò)單向數(shù)據(jù)鏈保證了用戶的合法服務(wù)請(qǐng)求不被重放攻擊的可能。
下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步說(shuō)明
圖I是本發(fā)明防重放攻擊的認(rèn)證方法的步驟流程 圖2是本發(fā)明防重放攻擊的認(rèn)證方法中應(yīng)用服務(wù)器根據(jù)校驗(yàn)信息對(duì)客戶端的服務(wù)請(qǐng)求進(jìn)行服務(wù)響應(yīng)優(yōu)選實(shí)施例的步驟流程 圖3是本發(fā)明防重放攻擊的認(rèn)證方法應(yīng)用場(chǎng)景的示意 圖4是本發(fā)明單向數(shù)據(jù)鏈的應(yīng)用示意圖。
具體實(shí)施例方式參照?qǐng)D1,一種防重放攻擊的認(rèn)證方法,包括以下步驟
客戶端發(fā)送登錄請(qǐng)求消息到登錄認(rèn)證服務(wù)器;
登錄認(rèn)證服務(wù)器生成包括標(biāo)識(shí)當(dāng)前時(shí)間的第一時(shí)間戳Timesignta的認(rèn)證憑據(jù)給客戶
端;
客戶端發(fā)送服務(wù)請(qǐng)求、來(lái)自登錄認(rèn)證服務(wù)器的認(rèn)證憑據(jù)以及自己生成的單向數(shù)據(jù)鏈值到應(yīng)用服務(wù)器;
應(yīng)用服務(wù)器將包括認(rèn)證憑據(jù)和單向數(shù)據(jù)鏈值的信息發(fā)送到登錄認(rèn)證服務(wù)器;
登錄認(rèn)證服務(wù)器判定所述認(rèn)證憑據(jù)的正確性并計(jì)算當(dāng)前時(shí)間Timecumnt與第一時(shí)間戳Timesignta的時(shí)間差,將用于證明用戶是否已經(jīng)登錄的認(rèn)證憑據(jù)的正確性的判定結(jié)果、所述時(shí)間差及接收到的單向數(shù)據(jù)鏈值封裝成校驗(yàn)信息發(fā)送給應(yīng)用服務(wù)器;
應(yīng)用服務(wù)器接收校驗(yàn)信息,判斷接收到的單向數(shù)據(jù)鏈值是否為最新的單向數(shù)據(jù)鏈值,上述判斷過(guò)程具體為將接收到的單向數(shù)據(jù)鏈值進(jìn)行哈希函數(shù)操作,判斷哈希函數(shù)得出的結(jié)果與應(yīng)用服務(wù)器存儲(chǔ)的單向數(shù)據(jù)鏈值是否一致,若一致則根據(jù)校驗(yàn)信息對(duì)客戶端的服務(wù)請(qǐng)求進(jìn)行服務(wù)響應(yīng),并將接收到的數(shù)據(jù)鏈值保存替換原來(lái)存儲(chǔ)的單向數(shù)據(jù)鏈值;若否則判定為重放消息,直接丟棄該校驗(yàn)消息。在應(yīng)用服務(wù)器首次響應(yīng)客戶端發(fā)出的服務(wù)請(qǐng)求時(shí),接收的單向數(shù)據(jù)鏈值即為最新的單向數(shù)據(jù)鏈值,故直接存儲(chǔ)在應(yīng)用服務(wù)器上,后續(xù)的服務(wù)響應(yīng)中,應(yīng)用服務(wù)器都需將校驗(yàn)信息中的單向數(shù)據(jù)鏈值進(jìn)行哈希函數(shù)操作與存儲(chǔ)的單向數(shù)據(jù)鏈值進(jìn)行比較,判斷接收的單向數(shù)據(jù)鏈值是否為最新的單向數(shù)據(jù)鏈值,以避免客戶端服務(wù)請(qǐng)求的重放攻擊。參照?qǐng)D4,單向數(shù)據(jù)鏈(One-Way Chains),亦稱哈希鏈,是一種在非安全環(huán)境中的密碼保護(hù)方案,但在本發(fā)明中,借用這種機(jī)制來(lái)防止客戶端發(fā)送的服務(wù)請(qǐng)求消息的重放。圖4給出了單向數(shù)據(jù)鏈的構(gòu)成結(jié)構(gòu)和應(yīng)用結(jié)構(gòu),單向數(shù)據(jù)鏈由反復(fù)單向執(zhí)行單向函數(shù)(也稱哈希函數(shù))F生成,并且單向函數(shù)F算法不可逆,這樣可以生成多階的單向數(shù)據(jù)鏈值Si,即F(Si) =Sp1,且Fi (Si)=Sc^由于應(yīng)用時(shí),對(duì)Si值的選取順序剛好與該數(shù)據(jù)鏈生成的順序相反,因此即使第三方竊取了某一已應(yīng)用過(guò)的單向數(shù)據(jù)鏈值,也無(wú)法得知更新后的單向數(shù)據(jù)鏈值,從而無(wú)法對(duì)認(rèn)證消息進(jìn)行重放攻擊。本發(fā)明應(yīng)用服務(wù)器利用單向數(shù)據(jù)鏈可以保證客戶端發(fā)送的服務(wù)請(qǐng)求信息為可靠的,非重放攻擊產(chǎn)生的。 進(jìn)一步作為優(yōu)選的實(shí)施方式,參照?qǐng)D2,所述應(yīng)用服務(wù)器根據(jù)校驗(yàn)信息對(duì)客戶端的服務(wù)請(qǐng)求進(jìn)行服務(wù)響應(yīng)包括以下步驟
將校驗(yàn)信息中的時(shí)間差與設(shè)定的有效時(shí)間比較,判斷時(shí)間差是否大于設(shè)定的有效時(shí)間,若是則丟棄該校驗(yàn)信息;若否則執(zhí)行下一步驟;
判斷判定結(jié)果是否正確,若認(rèn)證憑據(jù)正確則執(zhí)行服務(wù)響應(yīng),若否則丟棄該校驗(yàn)信息。進(jìn)一步作為優(yōu)選的實(shí)施方式,所述設(shè)定的有效時(shí)間來(lái)自應(yīng)用服務(wù)器端,例如該設(shè)定的有效時(shí)間可以從應(yīng)用服務(wù)器的內(nèi)存中讀取。進(jìn)一步作為優(yōu)選的實(shí)施方式,所述設(shè)定的有效時(shí)間來(lái)自登錄認(rèn)證服務(wù)器端,例如該設(shè)定的有效時(shí)間包含在封裝的校驗(yàn)信息中,應(yīng)用服務(wù)器可以從校驗(yàn)信息中讀取,這樣保證了在登錄認(rèn)證服務(wù)器端調(diào)整預(yù)先設(shè)定的有效時(shí)間的值。進(jìn)一步作為優(yōu)選的實(shí)施方式,所述設(shè)定的有效時(shí)間可以人為調(diào)整,以適應(yīng)不同的應(yīng)用場(chǎng)合。圖3是本發(fā)明防重放攻擊的認(rèn)證方法應(yīng)用場(chǎng)景的示意 SI:客戶端向登錄認(rèn)證服務(wù)器發(fā)送登錄請(qǐng)求;
S2:登錄認(rèn)證服務(wù)器發(fā)送登錄響應(yīng)給客戶端,登錄響應(yīng)即為在登錄認(rèn)證服務(wù)器端生成的認(rèn)證憑據(jù),該認(rèn)證憑據(jù)包括標(biāo)識(shí)當(dāng)前時(shí)間的第一時(shí)間戳Timesign0n,還包括用于認(rèn)證的其他信息,例如校驗(yàn)碼等,以標(biāo)識(shí)用戶是否登錄成功;
S3:用戶通過(guò)客戶端發(fā)送服務(wù)請(qǐng)求給應(yīng)用服務(wù)器,該服務(wù)請(qǐng)求同時(shí)包括包含有第一時(shí)間戳Timesignta的認(rèn)證憑據(jù)以及單向數(shù)據(jù)鏈值等;用戶客戶端自身維護(hù)了一個(gè)單向數(shù)據(jù)鏈(One-Way Chains)以及其最新的鏈值,例如最新鏈值S12 ;
S4:應(yīng)用服務(wù)器將認(rèn)證憑據(jù)和單向數(shù)據(jù)鏈值S12等相關(guān)信息等發(fā)送到登錄認(rèn)證服務(wù)器;應(yīng)用服務(wù)器自身保存有上次驗(yàn)證的單向數(shù)據(jù)鏈值S11 ;
S5:登錄認(rèn)證服務(wù)器根據(jù)存儲(chǔ)的認(rèn)證信息對(duì)認(rèn)證憑據(jù)的正確性進(jìn)行判斷生成判定結(jié)果,該判定結(jié)果用于證明用戶是否已經(jīng)登錄,并計(jì)算自身的當(dāng)前時(shí)間Timeaffrait與第一時(shí)間戳Timesignta的時(shí)間差,將判定結(jié)果、時(shí)間差及單向數(shù)據(jù)鏈值S12封裝成校驗(yàn)信息發(fā)送給應(yīng)用服務(wù)器;
S6:應(yīng)用服務(wù)器接收校驗(yàn)信息,判斷接收到的單向數(shù)據(jù)鏈值S12是否為最新的單向數(shù)據(jù)鏈值,即對(duì)單向數(shù)據(jù)鏈值S12進(jìn)行哈希函數(shù)操作,判斷結(jié)果是否與存儲(chǔ)的單向數(shù)據(jù)鏈值S11 —致,若否則直接丟棄該校驗(yàn)消息;若是則繼續(xù)讀取校驗(yàn)信息中的判定結(jié)果和時(shí)間差,若服務(wù)請(qǐng)求在設(shè)定的有效時(shí)間內(nèi)認(rèn)證成功,則應(yīng)用服務(wù)器進(jìn)行服務(wù)響應(yīng)。在應(yīng)用服務(wù)器端存儲(chǔ)的單向數(shù)據(jù)鏈值會(huì)更新為S12。這樣即使竊聽(tīng)者嗅探到單向數(shù)據(jù)鏈值S12,由于無(wú)法推導(dǎo)出最新的單向數(shù)據(jù)鏈值S13,從而避免了重放攻擊。本發(fā)明防重放攻擊的認(rèn)證方法,將認(rèn)證憑據(jù)上的第一時(shí)間戳與生成該第一時(shí)間戳的登錄認(rèn)證服務(wù)器的本地時(shí)間進(jìn)行比較,從而節(jié)省了時(shí)間同步的麻煩,既避免了系統(tǒng)或協(xié)議的復(fù)雜又規(guī)避了時(shí)間同步導(dǎo)致的延遲,通過(guò)應(yīng)用單向數(shù)據(jù)鏈保證用戶的合法服務(wù)請(qǐng)求不被重放攻擊的可能。 以上是對(duì)本發(fā)明的較佳實(shí)施進(jìn)行了具體說(shuō)明,但本發(fā)明創(chuàng)造并不限于所述實(shí)施例,熟悉本領(lǐng)域的技術(shù)人員在不違背本發(fā)明精神的前提下還可以作出種種的等同變形或替換,這些等同的變形或替換均包含在本申請(qǐng)權(quán)利要求所限定的范圍內(nèi)。
權(quán)利要求
1.一種防重放攻擊的認(rèn)證方法,其特征在于,包括以下步驟 客戶端發(fā)送登錄請(qǐng)求消息到登錄認(rèn)證服務(wù)器; 登錄認(rèn)證服務(wù)器生成包括標(biāo)識(shí)當(dāng)前時(shí)間的第一時(shí)間戳的認(rèn)證憑據(jù)給客戶端; 客戶端發(fā)送服務(wù)請(qǐng)求、來(lái)自登錄認(rèn)證服務(wù)器的認(rèn)證憑據(jù)以及自己生成的單向數(shù)據(jù)鏈值到應(yīng)用服務(wù)器; 應(yīng)用服務(wù)器將包括認(rèn)證憑據(jù)及單向數(shù)據(jù)鏈值的信息發(fā)送到登錄認(rèn)證服務(wù)器; 登錄認(rèn)證服務(wù)器判定所述認(rèn)證憑據(jù)的正確性并計(jì)算當(dāng)前時(shí)間與第一時(shí)間戳的時(shí)間差,將判定結(jié)果、所述時(shí)間差及接收到的單向數(shù)據(jù)鏈值封裝成校驗(yàn)信息發(fā)送給應(yīng)用服務(wù)器; 應(yīng)用服務(wù)器接收校驗(yàn)信息,判斷接收到的單向數(shù)據(jù)鏈值是否為最新的單向數(shù)據(jù)鏈值,若否則判定為重放消息,直接丟棄該校驗(yàn)消息;若是則根據(jù)校驗(yàn)信息對(duì)客戶端的服務(wù)請(qǐng)求進(jìn)行服務(wù)響應(yīng)。
2.根據(jù)權(quán)利要求I所述的一種防重放攻擊的認(rèn)證方法,其特征在于所述應(yīng)用服務(wù)器根據(jù)校驗(yàn)信息對(duì)客戶端的服務(wù)請(qǐng)求進(jìn)行服務(wù)響應(yīng)包括以下步驟 將校驗(yàn)信息中的時(shí)間差與設(shè)定的有效時(shí)間比較,判斷時(shí)間差是否大于設(shè)定的有效時(shí)間,若是則丟棄該校驗(yàn)信息;若否則執(zhí)行下一步驟; 判斷判定結(jié)果是否正確,若認(rèn)證憑據(jù)正確則執(zhí)行服務(wù)響應(yīng),若否則丟棄該校驗(yàn)信息。
3.根據(jù)權(quán)利要求2所述的一種防重放攻擊的認(rèn)證方法,其特征在于所述設(shè)定的有效 時(shí)間來(lái)自應(yīng)用服務(wù)器端。
4.根據(jù)權(quán)利要求2所述的一種防重放攻擊的認(rèn)證方法,其特征在于所述設(shè)定的有效時(shí)間來(lái)自登錄認(rèn)證服務(wù)器端。
5.根據(jù)權(quán)利要求3所述的一種防重放攻擊的認(rèn)證方法,其特征在于所述設(shè)定的有效 時(shí)間可以人為調(diào)整。
全文摘要
本發(fā)明公開(kāi)了一種防重放攻擊的認(rèn)證方法,該方法將客戶端從登錄認(rèn)證服務(wù)器端獲取的帶有第一時(shí)間戳的認(rèn)證憑據(jù)同服務(wù)請(qǐng)求傳送到應(yīng)用服務(wù)器,并使用單向數(shù)據(jù)鏈來(lái)標(biāo)識(shí)用戶請(qǐng)求的順序,在登錄認(rèn)證服務(wù)器端計(jì)算當(dāng)前時(shí)間與第一時(shí)間戳的時(shí)間差,并將判定結(jié)果、時(shí)間差及單向數(shù)據(jù)鏈值封裝成校驗(yàn)信息發(fā)送給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器根據(jù)接收到的單向數(shù)據(jù)鏈值判斷該校驗(yàn)信息是否為重放信息,進(jìn)一步還可以根據(jù)時(shí)間差、判定結(jié)果判斷服務(wù)請(qǐng)求是否在有效時(shí)間內(nèi)通過(guò)認(rèn)證。本發(fā)明方法勿需時(shí)間同步,既避免了系統(tǒng)或協(xié)議的復(fù)雜又規(guī)避了時(shí)間同步導(dǎo)致的延遲,通過(guò)應(yīng)用單向數(shù)據(jù)鏈保證用戶請(qǐng)求不被重放攻擊的可能。
文檔編號(hào)H04L29/06GK102739659SQ20121020026
公開(kāi)日2012年10月17日 申請(qǐng)日期2012年6月16日 優(yōu)先權(quán)日2012年6月16日
發(fā)明者巴鐘杰, 李子柳, 李驚生, 趙淦森 申請(qǐng)人:華南師范大學(xué), 廣州杰賽科技股份有限公司