本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體地說是一種基于功能級超時配置的防止重放攻擊方法。
背景技術(shù):
在互聯(lián)網(wǎng)應(yīng)用領(lǐng)域,企業(yè)對其信息系統(tǒng)的安全性越來越重視,尤其像注入攻擊漏洞、可重放攻擊漏洞等,正在不斷引起企業(yè)的重視,并對信息系統(tǒng)的開發(fā)提出了越來越高的要求。目前流行的防重放攻擊的方式基本上是在客戶端將當(dāng)前的時間戳進行加密后作為客戶端訪問指紋傳輸?shù)椒?wù)端進行時間有效性判斷的方式,此方式有兩個主要弊端:首先,客戶端不同服務(wù)的加密機制完全相同;其次,在服務(wù)端還原出請求時間戳后使用全局統(tǒng)一的、相對較長的超時時間進行訪問的時間有效性判斷。這些弊端,導(dǎo)致了攻擊者可以實時截取訪問請求后進行即時攻擊、或者使用實時截取的客戶端訪問指紋替換計劃要進行重放攻擊的請求指紋的方式,繞過重放攻擊檢查機制,達(dá)到重放攻擊的目的。
因此,提高防可重放攻擊算法的安全性,是現(xiàn)在互聯(lián)網(wǎng)應(yīng)用開發(fā)領(lǐng)域亟需解決的問題?;诖?,本發(fā)明提供一種基于功能級超時配置的防止重放攻擊方法,采用了一套更加安全的指紋生成和服務(wù)端比對方式對原有算法進行加固,較大程度的提高了防重放攻擊方法的安全性。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種高性能、有一定容錯能力,且資源得到有效利用的基于功能級超時配置的防止重放攻擊方法。
一種基于功能級超時配置的防止重放攻擊方法,其實現(xiàn)過程為:
首先進行功能級超時配置,定義每一個遠(yuǎn)程服務(wù)的服務(wù)名稱及其遠(yuǎn)程訪問超時時間;
然后進行客戶端請求加密,加入定義的服務(wù)名稱進行加鹽加密;
在服務(wù)端對上述加密的請求解密后,依據(jù)定義的遠(yuǎn)程服務(wù)的超時時間進行訪問時間有效性判斷;
服務(wù)端記錄通過有效性判斷的遠(yuǎn)程服務(wù)的歷史指紋,該歷史指紋包括服務(wù)名稱、指紋內(nèi)容。
所述遠(yuǎn)程訪問超時時間是指從客戶端發(fā)起的HTTP請求,在收到響應(yīng)前允許的最大等待時間,如果超過該等待時間后,還未從服務(wù)端接收到請求,則認(rèn)為本次請求因存在網(wǎng)絡(luò)連接的問題而導(dǎo)致請求失效。
客戶端請求加密是指將服務(wù)名稱參與到客戶端的請求水印加密,該加密為加鹽加密,其中加鹽是指根據(jù)遠(yuǎn)程服務(wù)定義的名稱,在客戶端請求水印的生成過程中,都加入當(dāng)前訪問服務(wù)的服務(wù)名稱,參與加密計算。
所述加密計算是指對客戶端計算出的服務(wù)端當(dāng)前時間的時間戳,將時間戳與鹽值進行組合之后再在服務(wù)端進行加密計算,所述鹽值是指在客戶端請求水印生成過程中當(dāng)前訪問服務(wù)的服務(wù)名稱。
所述時間戳的計算過程為:當(dāng)用戶登錄時,客戶端計算并記錄當(dāng)前客戶端和服務(wù)端的時間差,在之后的訪問時,基于此時間差,在客戶端計算出當(dāng)前服務(wù)端的時間戳,然后將該時間戳結(jié)合加鹽操作,進行加密。
在進行加密前,首先校驗請求水印中的服務(wù)名稱是否正確,當(dāng)服務(wù)名稱校驗通過后,再獲取時間戳和加鹽操作;如果一個新請求的服務(wù)名稱校驗出錯,則定位本次請求是重放攻擊,此時拒絕服務(wù)并啟動預(yù)警機制。
在進行加鹽加密時,需要判斷是否使用證書加密,如果使用證書加密,則通過非對稱加密生成客戶端訪問指紋;如果不使用證書加密,則通過對稱加密生成客戶端訪問指紋。
在服務(wù)端進行訪問時間有效性判斷的過程為:首先對客戶端請求指紋進行解密,得到服務(wù)名稱和時間戳;其次校驗該請求指紋中服務(wù)名稱的正確性;然后,自動將該指紋中的時間戳與該功能指定的超時時間相加,判斷其合計時間是否小于服務(wù)端當(dāng)前時間,如果該合計時間大于服務(wù)端當(dāng)前時間,則認(rèn)為本次請求無效,否則有效。
服務(wù)端記錄通過有效性判斷的遠(yuǎn)程服務(wù)的歷史指紋時,需要先對請求的水印進行唯一性校驗,然后記錄:當(dāng)服務(wù)端通過時間有效性校驗后,繼續(xù)與服務(wù)有效期內(nèi)的歷史指紋進行比對,以進行客戶端請求水印進行唯一性校驗,如果一個新請求的指紋與緩存的歷史指紋相同,則定位本次請求是重放攻擊,此時需要拒絕服務(wù)并啟動預(yù)警機制;當(dāng)客戶端訪問指紋通過驗證后,服務(wù)端將本次通過的客戶端指紋進行緩存。
當(dāng)客戶端訪問指紋通過驗證后,服務(wù)端將本次通過的客戶端指紋按功能進行緩存:根據(jù)服務(wù)名稱,每一個服務(wù)都設(shè)置一個獨立的緩存列表,用來記錄該功能的有效歷史訪問水??;該緩存的水印根據(jù)服務(wù)設(shè)定的超時時間進行定期清理,將超過服務(wù)超時時間的水印清理掉,只保留有效期內(nèi)的緩存,作為唯一性對比的依據(jù)。
本發(fā)明的一種基于功能級超時配置的防止重放攻擊方法和現(xiàn)有技術(shù)相比,具有以下有益效果:
本發(fā)明的一種基于功能級超時配置的防止重放攻擊方法,使得用戶可以通過配置不同功能的功能名稱及其超時時間的方式,對客戶端發(fā)起的每一次訪問所生成的客戶端訪問指紋進行加鹽加密、并在服務(wù)端進行服務(wù)名稱校驗、依據(jù)該服務(wù)的功能級超時間隔進行時間有效性校驗、指紋唯一性校驗等,從而使得攻擊者通過實時截取訪問請求后進行即時攻擊、或者截取其他訪問請求的水印替換預(yù)先截取的待重放請求水印后進行重放攻擊的方式失效,進一步增加了防重放攻擊方法的安全性,實用性強,適用范圍廣泛,易于推廣。
附圖說明
附圖1為本發(fā)明的客戶端請求指紋加密實現(xiàn)流程圖。
附圖2為本發(fā)明的服務(wù)端指紋校驗流程圖。
具體實施方式
下面結(jié)合附圖及具體實施例對本發(fā)明作進一步說明。
本發(fā)明涉及到的一種基于功能級超時配置的防止重放攻擊方法,尤其適用于具有較高安全要求的企業(yè)級互聯(lián)網(wǎng)應(yīng)用開發(fā)領(lǐng)域。該方法主要以提高防重放攻擊方法的安全性為出發(fā)點,提供了一種更加安全、有效的防重放攻擊方法,通過增加功能級專有超時時間配置、功能標(biāo)識參與客戶端訪問指紋生成、以及在服務(wù)端緩存比對有效期內(nèi)的訪問指紋記錄的方式,改良出一套更加安全、可靠的防重放攻擊方法。
實施例1:
本發(fā)明采用了一套更加安全的指紋生成和服務(wù)端比對方式對現(xiàn)有方法進行加固,較大程度的提高了防重放攻擊方法的安全性。
其實現(xiàn)過程為:
一、功能級超時配置:
用于定義每一個遠(yuǎn)程服務(wù)的服務(wù)名稱及其特有的遠(yuǎn)程訪問超時時間,可以精確定義每一個服務(wù)的響應(yīng)超時時間。
遠(yuǎn)程訪問超時時間:即從客戶端發(fā)起的HTTP請求,在收到響應(yīng)前允許的最大等待時間。如果超過該等待時間后,還未從服務(wù)端接收到請求,則可以認(rèn)為本次請求因存在網(wǎng)絡(luò)連接的相關(guān)問題而導(dǎo)致請求失效。
一般來說,一個互聯(lián)網(wǎng)應(yīng)用的大部分請求都是輕量級的、能夠快速返回的,即超時時間一般都可以設(shè)置的較短。但總有一些特殊請求,因服務(wù)端計算較復(fù)雜等原因使得服務(wù)端耗時較長,此時,為了避免因服務(wù)端正常運行未結(jié)束而導(dǎo)致客戶端認(rèn)為服務(wù)端超時的情況發(fā)生,這幾個特殊請求都需要設(shè)置較長的超時時間。
現(xiàn)有系統(tǒng),一般都是根據(jù)最長服務(wù)的請求超時時間確定全局統(tǒng)一的超時時間,這樣就會導(dǎo)致該超時時間遠(yuǎn)超過大部分服務(wù)所需要的真實超時時間。
服務(wù)端的每一個遠(yuǎn)程服務(wù),都應(yīng)該定義其服務(wù)名稱和專用的遠(yuǎn)程訪問超時時間,這樣才可以精確定義每一個服務(wù)的遠(yuǎn)程訪問超時時間,避免了一個系統(tǒng)內(nèi)部因存在少量的需要設(shè)置較長超時時間的服務(wù)而導(dǎo)致設(shè)定的全局超時時間較長的弊端。
二、服務(wù)名稱參與客戶端請求水印加密。
每一個遠(yuǎn)程服務(wù)都有自己的名稱,在客戶端請求水印的生成過程中,將當(dāng)前訪問服務(wù)的服務(wù)名稱作為鹽值,加入當(dāng)前訪問服務(wù)的服務(wù)名稱作為加鹽,對客戶端計算出的服務(wù)端當(dāng)前時間的時間戳進行組合之后再進行加密計算。
客戶端請求指紋的加密過程如附圖1客戶端請求指紋加密過程所示。
在進行加密時,需要判斷是否使用證書加密,如果使用證書加密,則通過非對稱加密生成客戶端訪問指紋;如果不使用證書加密,則通過對稱加密生成客戶端訪問指紋。
三、服務(wù)端依據(jù)特定功能的超時時間進行訪問時間有效性判斷。
服務(wù)端對每一個請求進行時間有效性判斷時,首先會對客戶端請求指紋進行解密,其次,校驗該請求指紋中服務(wù)名稱的正確性;然后,自動將該指紋中的時間戳與該功能指定的超時時間相加,判斷其合計時間是否小于服務(wù)端當(dāng)前時間。如果該合計時間大于服務(wù)端當(dāng)前時間,則認(rèn)為本次請求無效。此時的計算依據(jù)是該功能指定的特定超時時間,而不是現(xiàn)有方式采用的全局統(tǒng)一的超時時間。
通過步驟一的定義,我們可以為每一個服務(wù)精確設(shè)置其超時時間,使得大部分客戶端訪問指紋都有一個合理的、相對較短的有效期。當(dāng)服務(wù)請求到來時,可以從其客戶端訪問指紋中提取所對應(yīng)服務(wù)的服務(wù)名稱并進行校驗,校驗通過后,服務(wù)端可以通過步驟一的配置獲取到該服務(wù)的特定超時時間。并以此為依據(jù)進行時間有效性校驗,大幅減少了攻擊者在截獲到請求后立即重放的有效時間。
四、服務(wù)端記錄有效期內(nèi)的歷史請求水印并對新請求進行唯一性校驗,服務(wù)端在每一個請求合法性校驗通過后,都會將該指紋進行記錄,以備后繼請求進行唯一性校驗。
當(dāng)服務(wù)端收到一個新請求時,會首先進行服務(wù)名稱校驗、請求時間有效性校驗,對于服務(wù)名稱正確且在有效期內(nèi)的請求,服務(wù)端還會再次根據(jù)所請求服務(wù)的有效期內(nèi)的歷史指紋進行指紋唯一性校驗,以確保該指紋未被使用過。如果一個新請求的指紋與緩存的歷史指紋相同,則可以確定本次請求是重放攻擊請求,此時服務(wù)端會拒絕本次請求,并發(fā)送安全警報、記錄審計日志等。
實施例2:
一、功能級超時配置:
用于定義每一個遠(yuǎn)程服務(wù)的服務(wù)名稱及其特有的遠(yuǎn)程訪問超時時間,可以精確定義每一個服務(wù)的響應(yīng)超時時間。
遠(yuǎn)程訪問超時時間:即從客戶端發(fā)起的HTTP請求,在收到響應(yīng)前允許的最大等待時間。如果超過該等待時間后,還未從服務(wù)端接收到請求,則可以認(rèn)為本次請求因存在網(wǎng)絡(luò)連接的相關(guān)問題而導(dǎo)致請求失效。
一般來說,一個互聯(lián)網(wǎng)應(yīng)用的大部分請求都是輕量級的、能夠快速返回的,即超時時間一般都可以設(shè)置的較短。但總有一些特殊請求,因服務(wù)端計算較復(fù)雜等原因使得服務(wù)端耗時較長,此時,為了避免因服務(wù)端正常運行未結(jié)束而導(dǎo)致客戶端認(rèn)為服務(wù)端超時的情況發(fā)生,這幾個特殊請求都需要設(shè)置較長的超時時間。
現(xiàn)有系統(tǒng),一般都是根據(jù)最長服務(wù)的請求超時時間確定全局統(tǒng)一的超時時間,這樣就會導(dǎo)致該超時時間遠(yuǎn)超過大部分服務(wù)所需要的真實超時時間。
服務(wù)端的每一個遠(yuǎn)程服務(wù),都應(yīng)該定義其服務(wù)名稱和專用的遠(yuǎn)程訪問超時時間,這樣才可以精確定義每一個服務(wù)的遠(yuǎn)程訪問超時時間,避免了一個系統(tǒng)內(nèi)部因存在少量的需要設(shè)置較長超時時間的服務(wù)而導(dǎo)致設(shè)定的全局超時時間較長的弊端。
具體的,可以采用下述腳本代碼進行配置:
<!—網(wǎng)絡(luò)超時配置,DefaultValue為全局默認(rèn)值-->
<RequestTimeout DefaultValue="120">
<!--功能級遠(yuǎn)程訪問超時時間配置-->
<Services>
<!--用戶配置服務(wù)的專用遠(yuǎn)程訪問超時時間配置-->
<Service name="UserConfigService" value="90"/>
<!--用戶保存服務(wù)的專用遠(yuǎn)程訪問超時時間配置-->
<Service name="UserSaveService" value="160"/>
<!--用戶啟用服務(wù)的專用遠(yuǎn)程訪問超時時間配置-->
<Service name="UserEnableService" value="60"/>
<!—授權(quán)數(shù)據(jù)保存服務(wù)的專用遠(yuǎn)程訪問超時時間配置,請求時間較長-->
<Service name="AuthenSaveService" value="1200"/>
</excluds>
</RequestTimeout>
二、服務(wù)名稱參與客戶端請求水印加密和服務(wù)端校驗。
每一個遠(yuǎn)程服務(wù)都有自己的名稱,在客戶端請求水印的生成過程中,將當(dāng)前訪問服務(wù)的服務(wù)名稱作為鹽值,加入當(dāng)前訪問服務(wù)的服務(wù)名稱作為加鹽,對客戶端計算出的服務(wù)端當(dāng)前時間的時間戳進行組合之后再進行加密計算。
在服務(wù)端進行請求校驗時,會首先校驗請求水印中的服務(wù)名稱是否正確,只有服務(wù)名稱校驗通過后,才會進一步進行其他校驗和功能訪問。如果一個新請求指紋中的服務(wù)名稱校驗出錯,則可以定位本次請求是重放攻擊,此時需要拒絕服務(wù)并啟動預(yù)警機制。
為了減少服務(wù)端的壓力,服務(wù)端的時間戳計算是在客戶端進行的,不需要向服務(wù)端請求。當(dāng)用戶登錄時,客戶端會計算并記錄當(dāng)前客戶端和服務(wù)端的時間差,在之后的訪問時,就可以基于此時間差,在客戶端計算出當(dāng)前服務(wù)端的時間戳。
在服務(wù)端進行請求校驗時,也會首先校驗請求水印中的服務(wù)名稱是否正確,只有服務(wù)名稱校驗通過后,才會進一步進行其他校驗和功能訪問。如果一個新請求指紋中的服務(wù)名稱校驗出錯,則可以定位本次請求是重放攻擊,此時需要拒絕服務(wù)并啟動預(yù)警機制。
這樣就使得即使時間戳相同,不同服務(wù)間的客戶端請求指紋也互不相同,使得不同服務(wù)的客戶端請求水印互相不能通用,這就大幅度降低了攻擊者通過攔截最新請求的客戶端請求水印替換待攻擊請求水印后進行攻擊的可能性。
客戶端請求指紋的加密過程如附圖1客戶端請求指紋加密過程所示。
在進行加密時,需要判斷是否使用證書加密,如果使用證書加密,則通過非對稱加密生成客戶端訪問指紋;如果不使用證書加密,則通過對稱加密生成客戶端訪問指紋,其中非對稱加密可以采用RSA算法,對稱加密可以采用AES128算法。
三、服務(wù)端依據(jù)特定功能的超時時間進行訪問時間有效性判斷。
服務(wù)端對每一個請求進行時間有效性校驗時,首先會對客戶端請求指紋進行解密,其次,校驗該請求指紋中服務(wù)名稱的正確性;然后,自動將該指紋中的時間戳與該功能指定的超時時間相加,判斷其合計時間是否小于服務(wù)端當(dāng)前時間。如果該合計時間大于服務(wù)端當(dāng)前時間,則認(rèn)為本次請求無效。此時的計算依據(jù)是該功能指定的特定超時時間,而不是現(xiàn)有方式采用的全局統(tǒng)一的超時時間。
通過步驟一的定義,我們可以為每一個服務(wù)精確設(shè)置其超時時間,使得大部分客戶端訪問指紋都有一個合理的、相對較短的有效期。當(dāng)服務(wù)請求到來時,可以從其客戶端訪問指紋中提取所對應(yīng)服務(wù)的服務(wù)名稱并進行校驗,校驗通過后,服務(wù)端可以通過步驟一的配置獲取到該服務(wù)的特定超時時間。并以此為依據(jù)進行時間有效性校驗,大幅減少了攻擊者在截獲到請求后立即重放的有效時間。
四、服務(wù)端記錄有效期內(nèi)的歷史請求水印并對新請求進行唯一性校驗,服務(wù)端在每一個請求合法性校驗通過后,都會將該指紋進行記錄,以備后繼請求進行唯一性校驗。
當(dāng)服務(wù)端收到一個新請求時,會首先進行服務(wù)名稱校驗、請求時間有效性校驗,對于服務(wù)名稱正確且在有效期內(nèi)的請求,服務(wù)端還會再次根據(jù)所請求服務(wù)的有效期內(nèi)的歷史指紋進行指紋唯一性校驗,以確保該指紋未被使用過。如果一個新請求的指紋與緩存的歷史指紋相同,則可以確定本次請求是重放攻擊請求,此時服務(wù)端會拒絕本次請求,并發(fā)送安全警報、記錄審計日志等。
當(dāng)客戶端訪問指紋通過驗證后,服務(wù)端會將本次通過的客戶端指紋按功能進行緩存:根據(jù)服務(wù)名稱,每一個服務(wù)都有一個獨立的緩存列表,用來記錄該功能的有效歷史訪問水印。這些緩存的水印會根據(jù)該服務(wù)設(shè)定的超時時間進行定期清理,將超過該服務(wù)超時時間的水印清理掉,只保留有效期內(nèi)的緩存,作為唯一性對比的依據(jù),這樣即保證了唯一性校驗的正確性,又保證了較小的緩存數(shù)據(jù)量和較高的唯一性校驗性能。
本發(fā)明提供的一種基于功能級超時配置的防止重放攻擊方法,聚焦互聯(lián)網(wǎng)應(yīng)用開發(fā)的安全領(lǐng)域,提供了一種更加安全高效的防重放攻擊的方法。
通過上面具體實施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實現(xiàn)本發(fā)明。但是應(yīng)當(dāng)理解,本發(fā)明并不限于上述的具體實施方式。在公開的實施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實現(xiàn)不同的技術(shù)方案。
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。