ientHello給網(wǎng)絡服務器。
[0083]4.04、網(wǎng)絡服務器發(fā)送服務端問候消息SeverHello給所述安全安全瀏覽器客戶端的加密子進程。
[0084]其中,網(wǎng)絡服務器從ClientHello消息中找到匹配的密碼套件,發(fā)送SeverHello作為回復,若找不到匹配的密碼套件,貝lJ發(fā)送報警消息。該SeverHello中,Sever_vis1n,表示服務器支持的版本號,如1.1 ;Radom服務器端產(chǎn)生的隨機數(shù);SeSS1n_id服務端使用的會話標識;cipher_suites服務端從ClientHello消息中選取的密碼套件;compress1n_methods服務端從ClientHello消息中選取的壓縮算法。
[0085]4.06、網(wǎng)絡服務器發(fā)送服務端證書消息Certificate給加密子進程。
[0086]即SeverCertificate本消息內(nèi)容為簽名證書和加密證書。如服務端的站點簽名證書(X.509序列)
[0087]4.08、網(wǎng)絡服務器發(fā)送證書認證請求消息SeverRequest給加密子進程。
[0088]通過SeverRequest消息要求客戶端提供證書。同時指明了認證類型(EO)SA)
[0089]4.10、網(wǎng)絡服務器發(fā)送服務端密鑰交換消息SeverKeyExchange給加密子進程。
[0090]SeverKeyExchange用于客戶端計算產(chǎn)生48字節(jié)的預主密鑰。公鑰可以直接從服務器端的加密證書中獲取。如客戶端隨機產(chǎn)生預主密鑰pre_master_seceret密鑰,并使用服務器證書的公鑰進行E⑶H運算
[0091]4.12、網(wǎng)絡服務器發(fā)送問候完結(jié)消息SeverHelloDone給加密子進程。
[0092]SeverHelloDone表征握手過程的hello消息階段完成,然后等待客戶端的響應消息。
[0093]4.14、加密子進程發(fā)送客戶密鑰交換消息Certificate給網(wǎng)絡服務器。
[0094]即ClientCertificate消息是hello消息階段完成后的第一條消息,如包括客戶的簽名證書(X.509序列)。
[0095]4.16、加密子進程發(fā)送客戶密鑰交換消息ClientKeyExchange給網(wǎng)絡服務器。
[0096]ClientKeyExchange消息中網(wǎng)絡服務器的公鑰加密預主密鑰。
[0097]4.18、加密子進程發(fā)送證書校驗消息CertificateVerify給網(wǎng)絡服務器。
[0098]CertificateVerify消息用于鑒別客戶端是夠為證書的合法持有者。本實施例中,提示用戶插入USBKey后可以提示用戶輸入保護口令,該保護口令即攜帶在該消息中驗證用戶是否合法。
[0099]如,客戶端使用簽名證書的ECC私鑰對握手信息的摘要進行ESDSA簽名
[0100]4.20、加密子進程發(fā)送客戶端密碼規(guī)格變更消息ChangeCipherSpec給網(wǎng)絡服務器。
[0101]即ClientChangeCipherSpec消息向服務端表明算法及密鑰協(xié)商完成。
[0102]4.22、加密子進程發(fā)送客戶端握手結(jié)束消息Finished給網(wǎng)絡服務器。
[0103]本實施例中,加密子進程根據(jù)客戶端的隨機數(shù)、服務端的隨機數(shù)、pre_master_seceret使用密鑰算法計算master_seceret,然后再使用隨機數(shù)和master_seceret計算真正的數(shù)據(jù)加密密鑰,然后將所有握手消息摘要后加密形成ClientFinished消息向服務端發(fā)送。
[0104]4.24、網(wǎng)絡服務器發(fā)送服務端密碼規(guī)格變更消息ChangeCipherSpec給加密子進程。
[0105]4.26、網(wǎng)絡服務器發(fā)送服務端握手結(jié)束消息Finished給加密子進程。
[0106]服務端驗證客戶端證書,使用客戶端的簽名證書驗證客戶端的簽名。服務使用自身的加密私鑰和進行E⑶H運算,獲得pre_master_seceret,采用客戶端同樣的算法計算master_seceret和數(shù)據(jù)加密密鑰,驗證SeverFinished消息的正確性,向客戶端發(fā)送SeverChangeCipherSpec消息,表示認可算法及密鑰協(xié)商。
[0107]通過上述握手過程完成了瀏覽器客戶端和網(wǎng)絡服務器雙方的認證、密鑰協(xié)商等過程,從而加密子進程和網(wǎng)絡服可以務端分別使用協(xié)商計算出的密鑰加密應用數(shù)據(jù)。
[0108]步驟206,自動識別并連接瀏覽器客戶端所在終端的接口插入的安全密鑰存儲硬件。
[0109]本實施例以所訪問的網(wǎng)站需要進行雙向認證為例進行說明,當瀏覽器客戶端的地址欄接收到用戶輸入的需要雙向認證的網(wǎng)站地址時,瀏覽器客戶端彈出對話框提示用戶插入安全密鑰存儲硬件,即提示用戶插入USBKey,如圖5所示。雙向認證是對所訪問網(wǎng)站的網(wǎng)絡服務器和瀏覽器客戶端彼此均要進行認證,確認訪問的網(wǎng)絡服務器的數(shù)字證書以及瀏覽器客戶端所加載的數(shù)字證書是安全有效的,因此雙向認證時需要認證的證書包括訪問的網(wǎng)站的站點證書以及瀏覽器客戶端所加載的用戶證書。因此,本實施例中所述自動識別并連接瀏覽器客戶端所在終端的接口插入的安全密鑰存儲硬件,具體可以包括以下兩個子步驟:
[0110]子步驟一,在進行數(shù)字證書的雙向認證時,所述加密子進程通過所述安全密鑰存儲硬件的供應方標識和產(chǎn)品編號關(guān)聯(lián)到對應的驅(qū)動位置和驅(qū)動接口。需要說明的是,進行雙向認證時所述數(shù)字證書具體包括訪問的網(wǎng)站的站點證書以及瀏覽器客戶端所加載的存儲在安全密鑰存儲硬件中的用戶證書。瀏覽器的加密子進程可以通過所述安全密鑰存儲硬件的供應方標識和產(chǎn)品編號關(guān)聯(lián)到對應的驅(qū)動位置和驅(qū)動接口。
[0111]子步驟二,通過所述驅(qū)動位置和驅(qū)動接口與所述安全密鑰存儲硬件建立連接通道。獲知所述安全密鑰存儲硬件的驅(qū)動位置和驅(qū)動接口之后,可以根據(jù)所述驅(qū)動位置和驅(qū)動接口與所述安全密鑰存儲硬件建立通信通道。
[0112]需要說明的是,在本發(fā)明實施例的一種可選示例中,所述步驟206自動識別并連接瀏覽器客戶端所在終端的接口插入的安全密鑰存儲硬件之前,還包括:所述加密子進程在握手過程中確定是否接收所述網(wǎng)絡服務器發(fā)送的證書認證請求消息;當接收到所述網(wǎng)絡服務器發(fā)送的證書認證請求消息時,監(jiān)測瀏覽器客戶端所在終端的接口是否有安全密鑰存儲硬件插入;當監(jiān)測到有安全密鑰存儲硬件插入時,執(zhí)行所述步驟206自動識別并連接瀏覽器客戶端所在終端的接口插入的安全密鑰存儲硬件。
[0113]步驟208,瀏覽器客戶端讀取并顯示所述安全密鑰存儲硬件中存儲的用戶證書以供用戶進行選擇。
[0114]本實施例中所述瀏覽器客戶端讀取并顯示所述安全密鑰存儲硬件中存儲的用戶證書以供用戶進行選擇,具體可以通過以下子步驟:
[0115]子步驟一,所述加密子進程通過所述連接通道讀取所述安全密鑰存儲硬件中存儲的用戶證書。所述加密子進程根據(jù)所述驅(qū)動位置和驅(qū)動接口與所述安全密鑰存儲硬件建立了連接通道,可以通過所述連接通道讀取安全密鑰存儲硬件中存儲用戶證書。需要說明的是,此時加密子進程讀取到的只是用戶證書的名稱等不包含用戶證書具體內(nèi)容的信息。在本發(fā)明實施例的一種可選示例中,所述加密子進程通過所述連接通道讀取所述安全密鑰存儲硬件中存儲的用戶證書,具體可以包括:所述加密子進程通過所述連接通道讀取所述安全密鑰存儲硬件中存儲的應用,顯示所述應用以供用戶進行選擇,其中每個應用包括容器和容器中存儲的用戶證書;打開用戶選擇的應用,加載所述用戶選擇的應用下的容器和容器中存儲的用戶證書。
[0116]子步驟二,彈出證書選擇對話框,在所述證書選擇對話框中加載所述用戶證書以提示用戶選擇所述用戶證書。需要說明的是,如圖6所示,本實施例在瀏覽器客戶端中彈窗證書選擇對話框,證書選擇對話框中具體可以包括以下任意一種或幾種:當前設備、應用名稱、容器名稱、證書CN、頒發(fā)者、生效日期、失效時間、用戶證書的名稱等信息,能夠提示用戶選擇所述用戶證書即可,本實施例并非對證書選擇對話框具體形式或具體內(nèi)容的限制。
[0117]本實施例中,為了保證訪問網(wǎng)站和用戶的安全,CA機構(gòu)為不同的網(wǎng)站頒布不同的站點證書,同時為不同網(wǎng)站的不同用戶頒布不同的用戶證書。其中,數(shù)字證書中包括站點或用戶的公鑰,站點或用戶的信息,以及數(shù)字簽名等內(nèi)容。
[0118]因此,在進行數(shù)字證書認證之前,優(yōu)選的,在雙向認證過程中,可以在瀏覽器客戶端中彈出證書選擇框,在該證書選擇框中加載瀏覽器所在終端當前所具有的用戶證書,用戶在對用戶證書進行選擇后,提示用戶輸入保護口令,如圖7所示,輸入個人識別碼(Personal Identificat1n Number,PIN),從而在保護口令通過驗證后說明該用戶對該用戶證書具有權(quán)項。并且,上述用戶證書和保護口令可以作為用戶證書認證過程中的認證數(shù)據(jù)發(fā)送給網(wǎng)絡服務器。
[0119]在本發(fā)明實施例的一種可選示例中,所述子步驟一加密子進程通過所述連接通道讀取所述安全密鑰存儲硬件中存儲的用戶證書之后,還包括:所述加密子進程對所述安全密鑰存儲硬件中存儲的用戶證書進行證書站點識別,以證書站點為單位對所述用戶證書進行分類;相應地,所述子步驟二彈出證書選擇對話框,在所述證書選擇對話框中加載所述用戶證書以提示用戶選擇所述用戶證書,具體可以包括:彈出證書選擇對話框,在所述證書選擇對話框中以證書站點為索引顯示所述用戶證書。需要說明的是,證書站點即該證書對應的銀行站點,證書站點具體可以是:建行、工行、農(nóng)行等。換句話說,在本實施例中,具體可以在證書選擇對話框中顯示用戶證書具體是哪個銀行的,直觀地顯示所述安全密鑰存儲硬件是哪個銀行的,方便用戶根據(jù)銀行判斷是否是需要的用戶證書,即根據(jù)所述證書站點判斷是否是需要的用戶證書。
[0120]步驟210,當瀏覽器客戶端接收到用戶對所述用戶證書的選擇信息時,對用戶進行身份驗證。
[0121]本實施例中所述當瀏覽器客戶端接收到用戶對所述用戶證書的選擇信息時,對用戶進行身份驗證,具體可以通過以下方式來實現(xiàn):當接收到用戶對所述用戶證書的選擇信息時,所述加密子進程彈出口令輸入框,并通過所述口令輸入框接收用戶輸入的保護口令。依據(jù)所述用戶輸入的保護口令對用戶進行身份驗證。需要說明的是,本實施例中選用保護口令作為用戶的身份信息進行身份驗證,具體實現(xiàn)時,也可以采用其他方式進行身份驗證,本實施例并非對身份驗證具體方式的限定。
[0122]在本發(fā)明實施例的一種可選示例中,所述當瀏覽器客戶端接收到用戶對所述用戶證書的選擇信息時,對用戶進行身份驗證,具體還包括:若所述身份驗證未通過,則在所述口令輸入框中顯示口令錯誤并提示用戶重新輸入保護口令,依據(jù)所述重新輸入的保護口令進行身份驗證。由于用戶在輸入保護口令時鍵盤誤操作等原因,用戶存儲輸錯保護口令的情況時有發(fā)生,因此本可選示例在身份驗證未通過時,不是直接斷開與安全密鑰存儲硬件的連接,而是允許用戶重新輸入保護口令,當然不能允許用戶無限次的輸入保護口令,需要對輸入保護口令的次數(shù)進行限制。即在本發(fā)明實施例的一種可選示例中,所述當瀏覽器客戶端接收到用戶對所述用戶證書的選擇信息時,對用戶