本發(fā)明屬于通信技術(shù)領(lǐng)域,涉及一種安全授信方法及系統(tǒng)。
背景技術(shù):
現(xiàn)在貌似大多數(shù)網(wǎng)站用戶認證主要包括兩種方式:
一.基于session的用戶認證
用戶通過服務(wù)器的身份驗證后,在服務(wù)器端生成用戶相關(guān)的session數(shù)據(jù),而將發(fā)給客戶端session_id存放到cookie中。當(dāng)客戶端需要向服務(wù)器請求服務(wù)時,在發(fā)送至服務(wù)器的用戶請求中帶上session_id。服務(wù)器就可以根據(jù)session_id驗證服務(wù)器端是否存在對應(yīng)的session數(shù)據(jù),以此完成用戶認證。
二.基于token的用戶認證
基于token的用戶認證是一種服務(wù)器端無狀態(tài)的認證方式,服務(wù)器端不用存放token數(shù)據(jù)。用戶通過服務(wù)器的身份驗證后,由服務(wù)器生成一個token(hash或encrypt,即哈?;蚣用?發(fā)給客戶端。客戶端可以放到cookie或localstorage中,客戶端在發(fā)送給服務(wù)器的每個用戶請求中附上token作為授信憑證,服務(wù)端在收到token以后進行授信憑證驗證,通過驗證后即可確認用戶的身份。
上述兩種認證方式,主要靠唯一的授信憑證發(fā)給客戶端,客戶端的每次用戶請求都附帶上session或token來保持、識別授信憑證。雖然每一個客戶端上的session或token是唯一的,但是session或token在一定時間內(nèi)也是固定不變的。在開放網(wǎng)絡(luò)上,session或token很可能被惡意第三方截取盜用,并且附在自己的惡意請求上,使得惡意第三方可以冒充真正的用戶向服務(wù)器發(fā)送惡意請求,服務(wù)器難以識別,威脅網(wǎng)絡(luò)完全。
于是現(xiàn)有技術(shù)中,服務(wù)器每次先給客戶端分配一個隨機數(shù),由客戶端根據(jù)這個隨機數(shù)加密或變換session或token信息,來使得客戶端每次用戶請求的授信憑證不一樣。但是,這種技術(shù)方案的實現(xiàn)方式中,首先需要服務(wù)器產(chǎn)生并保持這個隨機數(shù)并且將該隨機數(shù)傳送給客戶端。因此,如果用于傳送這個隨機數(shù)的傳送通道不安全,那么這個隨機數(shù)仍然有可能被惡意的第三方截取盜用。
技術(shù)實現(xiàn)要素:
本發(fā)明為了解決上述技術(shù)問題,提出一種安全授信方法,其特征在于,包括:
步驟s1,客戶端發(fā)送用戶請求至服務(wù)器,所述用戶請求包括請求內(nèi)容和授信憑證,所述授信憑證包括根據(jù)所述請求內(nèi)容加密生成的密文;
步驟s2,所述服務(wù)器接收所述用戶請求,解密所述密文獲得第一信息摘要,根據(jù)所述請求內(nèi)容生成第二信息摘要;
步驟s3,如果所述第一信息摘要與所述第二信息摘要匹配,則所述服務(wù)器響應(yīng)所述用戶請求;如果所述第一信息摘要與所述第二信息摘要不匹配,則所述服務(wù)器拒絕所述用戶請求。
作為優(yōu)選,所述授信憑證包括用戶名;所述步驟s1中,采用所述用戶名對應(yīng)的用戶密碼進行加密;所述步驟s2采用所述用戶名對應(yīng)的用戶密碼進行解密。
作為優(yōu)選,所述步驟s1包括:
步驟s1-1,將所述請求內(nèi)容進行摘要運算生成所述第一信息摘要;
步驟s1-2,將所述第一信息摘要用所述用戶名對應(yīng)的用戶密碼進行加密,得到所述密文;
步驟s1-3,將所述密文和所述用戶名一起作為所述授信憑證;
步驟s1-4,發(fā)送包括所述請求內(nèi)容和所述授信憑證的所述用戶請求至所述服務(wù)器。
作為優(yōu)選,所述步驟s2包括:
步驟s2-1,在所述服務(wù)器查找所述用戶名對應(yīng)的用戶密碼;
步驟s2-2,用所述用戶密碼解密所述密文獲得所述第一信息摘要;將所述請求內(nèi)容進行所述摘要運算生成所述第二信息摘要;
所述步驟s3中,所述第一信息摘要與所述第二信息摘要匹配是指所述第一信息摘要的請求內(nèi)容與所述第二信息摘要的請求內(nèi)容相同;所述第一信息摘要與所述第二信息摘要不匹配是指所述第一信息摘要的請求內(nèi)容與所述第二信息摘要的請求內(nèi)容不同。
作為優(yōu)選,所述步驟s1包括:
步驟s1-1,將所述請求內(nèi)容進行摘要運算生成所述第一信息摘要;
步驟s1-2,將所述第一信息摘要與請求時間合并為第一合并信息;
步驟s1-3,對所述第一合并信息用所述用戶名對應(yīng)的用戶密碼進行加密,得到所述密文;
步驟s1-4,將所述密文和所述用戶名一起作為所述授信憑證;
步驟s1-5,發(fā)送包括所述請求內(nèi)容和所述授信憑證的所述用戶請求至所述服務(wù)器。
作為優(yōu)選,所述步驟s2包括:
步驟s2-1,在所述服務(wù)器查找所述用戶名對應(yīng)的用戶密碼;
步驟s2-2,用所述用戶密碼解密所述密文獲得所述第一合并信息并且提取所述第一合并信息中的所述第一信息摘要;將所述請求內(nèi)容進行所述摘要運算生成所述第二信息摘要;
所述步驟s3中,所述第一信息摘要與所述第二信息摘要匹配是指所述第一信息摘要的請求內(nèi)容與所述第二信息摘要的請求內(nèi)容相同,并且所述接收時間與所述請求時間之間的時間差沒有超出所述授信憑證的時效期;否則,所述第一信息摘要與所述第二信息摘要不匹配。
本發(fā)明還提供了一種安全授信系統(tǒng),包括客戶端和服務(wù)器,包括客戶端和服務(wù)器,所述客戶端發(fā)送附有授信憑證的用戶請求至所述服務(wù)器以請求所述服務(wù)器提供服務(wù);所述服務(wù)器對通過授信憑證驗證的所述客戶端提供服務(wù);其特征在于:所述用戶請求包括請求內(nèi)容和授信憑證;
所述客戶端包括客戶端存儲模塊和授信憑證生成模塊;所述客戶端存儲模塊存儲用戶名及其所述用戶名對應(yīng)的用戶密碼,所述授信憑證生成模塊生成包括根據(jù)所述請求內(nèi)容加密的密文的授信憑證;所述授信憑證生成模塊包括第一信息摘要生成單元、加密單元,所述第一信息摘要生成單元根據(jù)所述請求內(nèi)容生成第一信息摘要,所述加密單元對所述第一信息摘要加密生成所述密文;
所述服務(wù)器包括用于存儲用戶名和用戶密碼對應(yīng)關(guān)系的服務(wù)器存儲模塊、用于驗證所述用戶請求的授信憑證的授信憑證驗證模塊;所述授信憑證驗證模塊包括解密單元、第二信息摘要生成單元、匹配單元,所述解密單元解密所述密文并提取所述第一信息摘要;所述第二信息摘要生成單元根據(jù)所述請求內(nèi)容生成第二信息摘要;所述匹配單元比較所述第一信息摘要和所述第二信息摘要是否匹配。
作為優(yōu)選,所述授信憑證生成模塊生成包括根據(jù)所述請求內(nèi)容加密的密文和所述用戶名的授信憑證;
所述加密單元采用所述用戶名對應(yīng)的用戶密碼對所述第一信息摘要加密生成所述密文;
所述解密單元采用所述用戶名對應(yīng)的用戶密碼對所述密文解密并提取所述第一信息摘要。
作為優(yōu)選,所述加密單元對所述第一信息摘要和請求時間加密生成所述密文;
所述解密單元解密所述密文提取所述第一信息摘要和所述請求時間;
授信憑證驗證模塊包括時效性驗證單元,所述時效性驗證單元判斷所述授信憑證的接收時間和所述請求時間之間的時間差是否超出所述授信憑證的時效期。
作為優(yōu)選,所述授信憑證生成模塊生成包括根據(jù)所述請求內(nèi)容加密的密文和所述用戶名的授信憑證;
所述加密單元采用所述用戶名對應(yīng)的用戶密碼對所述第一信息摘要和請求時間加密生成所述密文;
所述解密單元采用所述用戶名對應(yīng)的用戶密碼解密所述密文提取所述第一信息摘要和所述請求時間。
附圖說明
圖1是本發(fā)明實施例一的授信過程示意圖。
圖2是本發(fā)明實施例二的授信過程示意圖。
具體實施方式
以下具體實施例僅僅是對本發(fā)明的解釋,其并不是對本發(fā)明的限制,本領(lǐng)域技術(shù)人員在閱讀完本說明書后可以根據(jù)需要對本實施例做出沒有創(chuàng)造性貢獻的修改,但只要在本發(fā)明的權(quán)利要求范圍內(nèi)都受到專利法的保護。
實施例一
如圖1所示,一種安全授信系統(tǒng),包括客戶端和服務(wù)器。
客戶端發(fā)送附有授信憑證的用戶請求至服務(wù)器以請求服務(wù)器提供服務(wù);服務(wù)器對通過授信憑證驗證的客戶端提供服務(wù)。
客戶端的形式有多種,例如瀏覽器或者app應(yīng)用,用戶通過客戶端瀏覽器或者客戶端app應(yīng)用進行用戶登錄,發(fā)送用戶名和用戶密碼至服務(wù)器??蛻舳送瑫r將用戶輸入的用戶名和密碼保存起來,客戶端并不需要向服務(wù)器請求身份認證。服務(wù)器端存儲有注冊成功的用戶的信息,該用戶信息包括用戶名和用戶密碼的對應(yīng)關(guān)系。
具體的,客戶端包括客戶端存儲模塊和授信憑證生成模塊。客戶端存儲模塊中存儲有用戶信息,具體包括:用戶名以及用戶名對應(yīng)的用戶密碼。授信憑證生成模塊基于用戶的請求內(nèi)容生成包括根據(jù)用戶的請求內(nèi)容加密的密文的授信憑證。
授信憑證生成模塊包括第一信息摘要生成單元、加密單元,第一信息摘要生成單元將用戶的請求內(nèi)容進行摘要運算以獲得第一信息摘要。作為優(yōu)選,本實施例中的摘要運算采用消息摘要算法(例如,messagedigestalgorithmmd5,消息摘要算法第五版)以獲得固定長度的第一信息摘要,同時還具有容易計算、抗修改性和強抗碰撞的優(yōu)點。加密單元將用戶的用戶密碼作為key對由第一信息摘要生成單元得到的第一信息摘要進行加密得到密文。授信憑證生成模塊將由加密單元生成的密文連同用戶的用戶名一起作為授信憑證??蛻舳藢⒂墒谛艖{證生成模塊得到的授信憑證連同用戶的本次請求的請求內(nèi)容一起作為用戶請求發(fā)送給服務(wù)器。
服務(wù)器包括服務(wù)器存儲模塊和授信憑證驗證模塊。服務(wù)器存儲模塊中存儲有注冊成功的用戶信息,該用戶信息包括:用戶名、以及該用戶名對應(yīng)的用戶密碼。授信憑證驗證模塊用于驗證用戶請求的授信憑證,包括解密單元、第二信息摘要生成單元、以及匹配單元。解密單元根據(jù)用戶的用戶名在服務(wù)器存儲模塊中查找出用戶的用戶密碼,利用該用戶密碼對負載授信憑證中的密文進行解密得到第一信息摘要。第二信息摘要生成單元將服務(wù)器接收到的來自客戶端的用戶請求中的請求內(nèi)容進行摘要運算,此處的摘要運算算法應(yīng)該與客戶端的第一信息摘要生成單元所采用的算法保持一致。例如本實施例中的第二信息摘要生成單元應(yīng)采用與第一信息摘要生成單元一致的消息摘要算法第五版。匹配單元則比較第二信息摘要生成單元獲得的第二信息摘要和由解密單元對附在用戶請求的授信憑證中的密文進行解密得到的第一信息摘要是否相同,如果第一信息摘要和第二信息摘要相同則表示它們是匹配的,服務(wù)器應(yīng)響應(yīng)客戶端的用戶請求;如果第一信息摘要和第二信息摘要不同則表示它們是不匹配的,服務(wù)器不應(yīng)響應(yīng)客戶端的用戶請求。
本實施例中,基于上述授信系統(tǒng)的授信方法如下,包括:
步驟s1,客戶端發(fā)送用戶請求至服務(wù)器,用戶請求包括請求內(nèi)容和授信憑證,授信憑證包括根據(jù)請求內(nèi)容進行加密的密文。具體包括:
步驟s1-1,由客戶端的第一信息摘要生成單元對用戶的請求內(nèi)容進行進行摘要運算(本實施例中為md5運算,即消息摘要算法第五版)生成第一信息摘要;
步驟s1-2,客戶端的授信憑證生成模塊的加密單元將用戶的用戶密碼作為key對步驟s1-1中得到的第一信息摘要進行加密得到與第一信息摘要對應(yīng)的密文;
步驟s1-3,客戶端的授信憑證生成模塊將加密單元在步驟s1-2中得到的密文和用戶的用戶名一起作為授信憑證。
步驟s1-4,客戶端發(fā)送用戶請求至服務(wù)器,該用戶請求包括了用戶本次請求的請求內(nèi)容和由步驟s1-3得到的授信憑證。
步驟s2,服務(wù)器接收來自客戶端的用戶請求,解密用戶請求的授信憑證中的密文獲得第一信息摘要,并且根據(jù)該用戶請求中的請求內(nèi)容生成第二信息摘要。具體包括:
步驟s2-1,服務(wù)器通過授信憑證驗證模塊的解密單元根據(jù)用戶的用戶名在服務(wù)器的服務(wù)器存儲模塊中查找與該用戶名對應(yīng)的用戶密碼。
步驟s2-2,服務(wù)器的授信憑證驗證模塊通過解密單元利用步驟s2-1中得到的用戶密碼對用戶請求的授信憑證中的密文進行解密得到第一信息摘要;服務(wù)器的授信憑證驗證模塊通過第二信息摘要生成單元根據(jù)用戶請求中的請求內(nèi)容進行摘要運算(本實施例中為md5運算,即消息摘要算法第五版)得到第二信息摘要。
步驟s3,服務(wù)器授信憑證驗證模塊的匹配單元比較步驟s2中得到的第一信息摘要和第二信息摘要是否相同。如果兩者相同則表示第一信息摘要與第二信息摘要匹配,服務(wù)器應(yīng)響應(yīng)客戶端的用戶請求;如果兩者不相同則表示第一信息摘要與第二信息摘要不匹配,服務(wù)器應(yīng)拒絕客戶端的用戶請求。
本實施例客戶端的每次用戶請求的授信憑證都不同并且與每次請求的內(nèi)容有密切關(guān)聯(lián)。即使惡意第三方在開放網(wǎng)絡(luò)上得到用戶的授信憑證,也無法用來偽裝自己的請求,安全可靠。
實施例二
如圖2所示,一種安全授信系統(tǒng),包括客戶端和服務(wù)器。
客戶端發(fā)送附有授信憑證的用戶請求至服務(wù)器以請求服務(wù)器提供服務(wù);服務(wù)器對通過授信憑證驗證的客戶端提供服務(wù)。
客戶端的形式有多種,例如瀏覽器或者app應(yīng)用,用戶通過客戶端瀏覽器或者客戶端app應(yīng)用進行用戶登錄,發(fā)送用戶名和用戶密碼至服務(wù)器??蛻舳送瑫r將用戶輸入的用戶名和密碼保存起來,客戶端并不需要向服務(wù)器請求身份認證。服務(wù)器端存儲有注冊成功的用戶的信息,該用戶信息包括用戶名和用戶密碼的對應(yīng)關(guān)系。
具體的,客戶端包括客戶端存儲模塊和授信憑證生成模塊??蛻舳舜鎯δK中存儲有用戶信息,具體包括:用戶名以及用戶名對應(yīng)的用戶密碼。授信憑證生成模塊基于用戶的請求內(nèi)容生成包括根據(jù)用戶的請求內(nèi)容和請求時間加密的密文的授信憑證。
授信憑證生成模塊包括第一信息摘要生成單元、加密單元,第一信息摘要生成單元將用戶的請求內(nèi)容進行摘要運算以獲得第一信息摘要。作為優(yōu)選,本實施例中的摘要運算采用消息摘要算法(例如,messagedigestalgorithmmd5,消息摘要算法第五版)以獲得固定長度的第一信息摘要,同時還具有容易計算、抗修改性和強抗碰撞的優(yōu)點。加密單元將用戶的用戶密碼作為key對由第一信息摘要生成單元得到的第一信息摘要和用戶的請求時間進行加密得到密文。授信憑證生成模塊將由加密單元生成的密文連同用戶的用戶名一起作為授信憑證??蛻舳藢⒂墒谛艖{證生成模塊得到的授信憑證連同用戶的本次請求的請求內(nèi)容一起作為用戶請求發(fā)送給服務(wù)器。
服務(wù)器包括服務(wù)器存儲模塊和授信憑證驗證模塊。服務(wù)器存儲模塊中存儲有注冊成功的用戶信息,該用戶信息包括:用戶名、以及該用戶名對應(yīng)的用戶密碼。授信憑證驗證模塊用于驗證用戶請求的授信憑證,包括解密單元、第二信息摘要生成單元、匹配單元、以及時效性驗證單元。解密單元根據(jù)用戶的用戶名在服務(wù)器存儲模塊中查找出用戶的用戶密碼,利用該用戶密碼對負載授信憑證中的密文進行解密得到第一信息摘要。第二信息摘要生成單元將服務(wù)器接收到的來自客戶端的用戶請求中的請求內(nèi)容進行摘要運算,此處的摘要運算算法應(yīng)該與客戶端的第一信息摘要生成單元所采用的算法保持一致。例如本實施例中的第二信息摘要生成單元應(yīng)采用與第一信息摘要生成單元一致的消息摘要算法第五版。匹配單元則比較第二信息摘要生成單元獲得的第二信息摘要和由解密單元對附在用戶請求的授信憑證中的密文進行解密得到的第一信息摘要是否相同,如果第一信息摘要和第二信息摘要相同則表示它們是匹配的;如果第一信息摘要和第二信息摘要不同則表示它們是不匹配的,服務(wù)器不應(yīng)響應(yīng)客戶端的用戶請求。時效性驗證單元將比較由解密單元解密得到的請求時間與服務(wù)器接受到該用戶請求的接收時間之間的時間差是否大于授信憑證的時效期30分鐘:如果是,則表示該授信憑證已失效,服務(wù)器不應(yīng)響應(yīng)客戶端的用戶請求;如果不是,則表示該授信憑證仍有效,服務(wù)器應(yīng)響應(yīng)客戶端的用戶請求。
本實施例中,基于上述授信系統(tǒng)的授信方法如下,包括:
步驟s1,客戶端發(fā)送用戶請求至服務(wù)器,用戶請求包括請求內(nèi)容和授信憑證,授信憑證包括根據(jù)請求內(nèi)容和用戶的請求時間進行加密的密文。具體包括:
步驟s1-1,由客戶端的第一信息摘要生成單元對用戶的請求內(nèi)容進行進行摘要運算(本實施例中為md5運算,即消息摘要算法第五版)生成第一信息摘要;
步驟s1-2,客戶端的授信憑證生成模塊的加密單元將用戶的用戶密碼作為key對步驟s1-1中得到的第一信息摘要和用戶的請求時間進行加密得到與第一信息摘要對應(yīng)的密文;
步驟s1-3,客戶端的授信憑證生成模塊將加密單元在步驟s1-2中得到的密文和用戶的用戶名一起作為授信憑證。
步驟s1-4,客戶端發(fā)送用戶請求至服務(wù)器,該用戶請求包括了用戶本次請求的請求內(nèi)容和由步驟s1-3得到的授信憑證。
步驟s2,服務(wù)器接收來自客戶端的用戶請求,解密用戶請求的授信憑證中的密文獲得第一信息摘要,并且根據(jù)該用戶請求中的請求內(nèi)容生成第二信息摘要。具體包括:
步驟s2-1,服務(wù)器通過授信憑證驗證模塊的解密單元根據(jù)用戶的用戶名在服務(wù)器的服務(wù)器存儲模塊中查找與該用戶名對應(yīng)的用戶密碼。
步驟s2-2,服務(wù)器的授信憑證驗證模塊通過解密單元利用步驟s2-1中得到的用戶密碼對用戶請求的授信憑證中的密文進行解密得到第一信息摘要;服務(wù)器的授信憑證驗證模塊通過第二信息摘要生成單元根據(jù)用戶請求中的請求內(nèi)容進行摘要運算(本實施例中為md5運算,即消息摘要算法第五版)得到第二信息摘要。
步驟s3,服務(wù)器授信憑證驗證模塊的匹配單元比較步驟s2中得到的第一信息摘要和第二信息摘要是否相同。如果兩者相同則表示第一信息摘要與第二信息摘要匹配,服務(wù)器應(yīng)響應(yīng)客戶端的用戶請求進入步驟s4;如果兩者不相同則表示第一信息摘要與第二信息摘要不匹配,服務(wù)器應(yīng)拒絕客戶端的用戶請求。
步驟s4,時效性驗證單元將比較由解密單元解密得到的請求時間與服務(wù)器接受到該用戶請求的接收時間之間的時間差是否大于授信憑證的時效期30分鐘:如果是,則表示該授信憑證已失效,服務(wù)器不應(yīng)響應(yīng)客戶端的用戶請求;如果不是,則表示該授信憑證仍有效,服務(wù)器應(yīng)響應(yīng)客戶端的用戶請求。
本實施例除了提供與一次性的與請求內(nèi)容相關(guān)的授信憑證以后,還在實施例一的基礎(chǔ)上為授信憑證設(shè)置有時效,服務(wù)器需要進一步對授信憑證的時效性進行驗證,更加安全可靠。
本文中所描述的具體實施例僅僅是對本發(fā)明精神作舉例說明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對所描述的具體實施例做各種各樣的修改或補充或采用類似的方式替代,但并不會偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。