步驟A5 ; A4、所述中間件將所述會話信息中的登錄狀態(tài)設(shè)置為已登錄,獲取會話句柄、私鑰句柄和簽名機(jī)制,通過所述會話句柄記錄所述私鑰句柄和所述簽名機(jī)制,向所述應(yīng)用進(jìn)程發(fā)送成功消息,并返回步驟SI ; A5、所述中間件向所述應(yīng)用進(jìn)程輸出PIN碼重試次數(shù),并返回步驟A3。
10.如權(quán)利要求1、7或9所述的方法,其特征在于,所述中間件判斷所述驗證結(jié)果為PIN碼錯誤之后,還包括: 所述中間件從令牌信息中獲取PIN碼重試次數(shù),向所述應(yīng)用進(jìn)程輸出所述PIN碼重試次數(shù)。
11.如權(quán)利要求1、7或9所述的方法,其特征在于,所述中間件對所述驗證結(jié)果進(jìn)行判斷之后,還包括: 如果是PIN碼鎖死,所述中間件向所述應(yīng)用進(jìn)程發(fā)送鎖死消息,并返回步驟SI。
12.—種中間件,其特征在于,包括: 第一判斷模塊,用于在(:_6^1'01?51111^0接口被應(yīng)用進(jìn)程調(diào)用時,判斷所述應(yīng)用進(jìn)程是否為預(yù)設(shè)進(jìn)程; 第一處理模塊,用于在所述第一判斷模塊判斷出所述應(yīng)用進(jìn)程為預(yù)設(shè)進(jìn)程時,將令牌內(nèi)的標(biāo)識位的值修改為第二預(yù)設(shè)值,將所述令牌內(nèi)的標(biāo)識位的值輸出給所述應(yīng)用進(jìn)程,向所述應(yīng)用進(jìn)程發(fā)送成功消息; 第二處理模塊,用于在所述第一判斷模塊判斷出所述應(yīng)用進(jìn)程不是預(yù)設(shè)進(jìn)程時,獲取令牌內(nèi)的標(biāo)識位的值,向所述應(yīng)用進(jìn)程輸出所述令牌內(nèi)的標(biāo)識位的值,向所述應(yīng)用進(jìn)程發(fā)送成功消息; 第二判斷模塊,用于在C_Login接口被應(yīng)用進(jìn)程調(diào)用時,判斷所述應(yīng)用進(jìn)程是否為預(yù)設(shè)進(jìn)程; 第三處理模塊,用于在所述第二判斷模塊判斷出所述應(yīng)用進(jìn)程為預(yù)設(shè)進(jìn)程時,將第二預(yù)設(shè)值作為令牌內(nèi)的標(biāo)識位的值輸出給所述應(yīng)用進(jìn)程,彈出PIN碼輸入框,通過所述PIN碼輸入框獲取用戶輸入的PIN碼,將所述PIN碼發(fā)送給硬件設(shè)備,接收所述硬件設(shè)備返回的驗證結(jié)果,對所述驗證結(jié)果進(jìn)行判斷,如果是PIN碼正確,則將會話信息中的登錄狀態(tài)設(shè)置為已登錄,向所述應(yīng)用進(jìn)程發(fā)送成功消息;如果是PIN碼錯誤,則向所述應(yīng)用進(jìn)程發(fā)送失敗消息; 第四處理模塊,用于在所述第二判斷模塊判斷出所述應(yīng)用進(jìn)程不是預(yù)設(shè)進(jìn)程時,獲取用戶輸入的PIN碼,將所述PIN碼發(fā)送給硬件設(shè)備,接收所述硬件設(shè)備返回的驗證結(jié)果,對所述驗證結(jié)果進(jìn)行判斷,如果是PIN碼正確,則將會話信息中的登錄狀態(tài)設(shè)置為已登錄,向所述應(yīng)用進(jìn)程發(fā)送成功消息;如果是PIN碼錯誤,則向所述應(yīng)用進(jìn)程發(fā)送失敗消息。
13.如權(quán)利要求12所述的中間件,其特征在于,還包括: 設(shè)置模塊,用于在所述第一判斷模塊判斷出所述應(yīng)用進(jìn)程為預(yù)設(shè)進(jìn)程之后,將進(jìn)程信息設(shè)置為第一預(yù)設(shè)值; 所述第二判斷模塊,具體用于判斷所述進(jìn)程信息是否為第一預(yù)設(shè)值,如果是,則確定所述應(yīng)用進(jìn)程為預(yù)設(shè)進(jìn)程;否則,確定所述應(yīng)用進(jìn)程不是預(yù)設(shè)進(jìn)程。
14.如權(quán)利要求12所述的中間件,其特征在于,所述第一判斷模塊,包括: 獲取子模塊,用于獲取所述應(yīng)用進(jìn)程的進(jìn)程名; 判斷子模塊,用于根據(jù)所述獲取子模塊獲取到的所述進(jìn)程名,判斷所述應(yīng)用進(jìn)程是否為預(yù)設(shè)進(jìn)程。
15.如權(quán)利要求14所述的中間件,其特征在于, 所述獲取子模塊,具體用于通過調(diào)用GetModuleFileName函數(shù),獲取所述應(yīng)用進(jìn)程的全路徑,從所述全路徑中獲取所述進(jìn)程名。
16.如權(quán)利要求12所述的中間件,其特征在于,還包括: 第五處理模塊,用于在C_Sign接口被應(yīng)用進(jìn)程調(diào)用時,獲取會話句柄和簽名數(shù)據(jù),通過所述會話句柄獲取私鑰句柄和簽名機(jī)制,通過所述私鑰句柄獲取簽名密鑰,使用所述簽名密鑰,按照所述簽名機(jī)制,對所述簽名數(shù)據(jù)進(jìn)行簽名操作,得到簽名結(jié)果,向所述應(yīng)用進(jìn)程輸出所述簽名結(jié)果,向所述應(yīng)用進(jìn)程發(fā)送成功消息。
17.如權(quán)利要求12所述的中間件,其特征在于,還包括: 第六處理模塊,用于在C_OpenSess1n接口被應(yīng)用進(jìn)程調(diào)用時,通過會話句柄打開會話,向所述應(yīng)用進(jìn)程發(fā)送成功消息。
18.如權(quán)利要求12所述的中間件,其特征在于,還包括: 第七處理模塊,用于在(:_?化(1013知(^8111^接口被應(yīng)用進(jìn)程調(diào)用時,判斷所述應(yīng)用進(jìn)程是否為預(yù)設(shè)進(jìn)程,如果不是預(yù)設(shè)進(jìn)程,則獲取會話句柄,通過所述會話句柄對私鑰對象模板進(jìn)行初始化,通過所述會話句柄記錄所述私有對象模板,向所述應(yīng)用進(jìn)程發(fā)送成功消息; 如果是預(yù)設(shè)進(jìn)程,則獲取會話信息中的登錄狀態(tài),判斷所述登錄狀態(tài)是否為已登錄,如果是,則獲取會話句柄,通過所述會話句柄對私鑰對象模板進(jìn)行初始化,通過所述會話句柄記錄所述私有對象模板,向所述應(yīng)用進(jìn)程發(fā)送成功消息;否則,彈出PIN碼輸入框,通過所述PIN碼輸入框獲取用戶輸入的PIN碼,將所述PIN碼發(fā)送給硬件設(shè)備,接收所述硬件設(shè)備返回的驗證結(jié)果,對所述驗證結(jié)果進(jìn)行判斷,如果是PIN碼正確,則將所述會話信息中的登錄狀態(tài)設(shè)置為已登錄,通過會話句柄對私鑰對象模板進(jìn)行初始化,通過會話句柄記錄所述私有對象模板,向所述應(yīng)用進(jìn)程發(fā)送成功消息;如果是PIN碼錯誤,則向所述應(yīng)用進(jìn)程發(fā)送失敗消息。
19.如權(quán)利要求18所述的中間件,其特征在于, 所述第七處理模塊,還用于在判斷出所述驗證結(jié)果為PIN碼錯誤后,從令牌信息中獲取PIN碼重試次數(shù),向所述應(yīng)用進(jìn)程輸出所述PIN碼重試次數(shù)。
20.如權(quán)利要求18所述的中間件,其特征在于, 所述第七處理模塊,還用于在判斷出所述驗證結(jié)果為PIN碼鎖死時,向所述應(yīng)用進(jìn)程發(fā)送鎖死消息。
21.如權(quán)利要求12所述的中間件,其特征在于,還包括: 第八處理模塊,用于在C_FindOb jects接口被應(yīng)用進(jìn)程調(diào)用時,獲取會話句柄,通過所述會話句柄獲取私鑰對象模板,通過所述私鑰對象模板查找私鑰對象,如果查找到,則獲取與查找到的私鑰對象對應(yīng)的私鑰句柄,將所述私鑰句柄的個數(shù)作為私鑰個數(shù)輸出給所述應(yīng)用進(jìn)程,向所述應(yīng)用進(jìn)程發(fā)送成功消息;否則,將私鑰個數(shù)設(shè)置為零,向所述應(yīng)用進(jìn)程輸出所述私鑰個數(shù),向所述應(yīng)用進(jìn)程發(fā)送成功消息。
22.如權(quán)利要求12所述的中間件,其特征在于,還包括: 第九處理模塊,用于在C_SignInit接口被應(yīng)用進(jìn)程調(diào)用時,判斷所述應(yīng)用進(jìn)程是否為預(yù)設(shè)進(jìn)程,如果不是預(yù)設(shè)進(jìn)程,則獲取會話句柄、私鑰句柄和簽名機(jī)制,通過所述會話句柄記錄所述私鑰句柄和所述簽名機(jī)制,向所述應(yīng)用進(jìn)程發(fā)送成功消息; 如果是預(yù)設(shè)進(jìn)程,則執(zhí)行以下操作: Al、獲取會話信息中的登錄狀態(tài),判斷所述登錄狀態(tài)是否為已登錄,如果是,則執(zhí)行步驟A2;否則,執(zhí)行步驟A3; A2、獲取會話句柄、私鑰句柄和簽名機(jī)制,通過所述會話句柄記錄所述私鑰句柄和所述簽名機(jī)制,向所述應(yīng)用進(jìn)程發(fā)送成功消息; A3、彈出PIN碼輸入框,通過所述PIN碼輸入框獲取用戶輸入的PIN碼,將所述PIN碼發(fā)送給硬件設(shè)備,接收所述硬件設(shè)備返回的驗證結(jié)果,對所述驗證結(jié)果進(jìn)行判斷,如果是PIN碼正確,則執(zhí)行步驟A4 ;如果是PIN碼錯誤,則執(zhí)行步驟A5 ; A4、將所述會話信息中的登錄狀態(tài)設(shè)置為已登錄,獲取會話句柄、私鑰句柄和簽名機(jī)制,通過所述會話句柄記錄所述私鑰句柄和所述簽名機(jī)制,向所述應(yīng)用進(jìn)程發(fā)送成功消息; A5、向所述應(yīng)用進(jìn)程輸出PIN碼重試次數(shù),并返回步驟A3。
23.如權(quán)利要求22所述的中間件,其特征在于, 所述第九處理模塊,還用于在判斷出所述驗證結(jié)果為PIN碼錯誤后,從令牌信息中獲取PIN碼重試次數(shù),向所述應(yīng)用進(jìn)程輸出所述PIN碼重試次數(shù)。
24.如權(quán)利要求22所述的中間件,其特征在于, 所述第九處理模塊,還用于在判斷出所述驗證結(jié)果為PIN碼鎖死時,向所述應(yīng)用進(jìn)程發(fā)送鎖死消息。
25.如權(quán)利要求12所述的中間件,其特征在于, 所述第三處理模塊,還用于在判斷出所述驗證結(jié)果為PIN碼錯誤后,從令牌信息中獲取PIN碼重試次數(shù),向所述應(yīng)用進(jìn)程輸出所述PIN碼重試次數(shù)。
26.如權(quán)利要求12所述的中間件,其特征在于, 所述第三處理模塊,還用于在判斷出所述驗證結(jié)果為PIN碼鎖死時,向所述應(yīng)用進(jìn)程發(fā)送鎖死消息。
【專利摘要】本發(fā)明公開一種安全的雙向SSL認(rèn)證方法和中間件,應(yīng)用于包括主機(jī)以及與該主機(jī)連接的硬件設(shè)備的系統(tǒng)中,該主機(jī)中包括中間件和應(yīng)用進(jìn)程,應(yīng)用進(jìn)程通過調(diào)用中間件的接口,進(jìn)行雙向SSL認(rèn)證。本發(fā)明通過修改中間件被預(yù)設(shè)進(jìn)程調(diào)用時的接口處理邏輯,確保建立雙向SSL時彈出的PIN碼輸入框都由中間件控制,進(jìn)而防止用戶在PIN碼輸入框中輸入的Pin碼被竊取,提高雙向SSL認(rèn)證的安全性。
【IPC分類】H04L29-06, H04L9-32
【公開號】CN104539620
【申請?zhí)枴緾N201410848953
【發(fā)明人】陸舟, 于華章
【申請人】飛天誠信科技股份有限公司
【公開日】2015年4月22日
【申請日】2014年12月29日