介紹
USB Key的中文大名是智能密碼鑰匙,它是一種USB接口的硬件設備,內置芯片,有一定的存儲空間,可以存儲證書和私鑰。凡是使用私鑰進行的運算,都是在USB Key中完成。USB Key可隨身攜帶,在需要使用時才接入電腦,進一步降低了私鑰外泄的風險。再加上通用性強,價格親民(硬件價格一般在幾十元左右),因此是使用最為廣泛的密碼安全工具之一。USB Key最常見的應用場景就是網銀了,前幾年幾大銀行采購的USB Key數量是以億計的,有設備廠商就是因此而上市。
用到USB Key的地方主要是數字簽名和私鑰解密。
- 在需要數字簽名時,業務系統將明文送到USB Key內部,由USB Key中的私鑰對明文的摘要值進行加密;
- 在需要解密時,業務系統將密文送到USB Key內部,由USB Key中的私鑰對密文進行解密。由於USB Key的私鑰還有口令保護,所以在界面上會彈出對話框,要求用戶輸入口令。用戶輸入正確口令后,USB Key的硬件使用私鑰完成運算,並將結果返回給業務系統。
流程如下圖。
從開發的角度講,如果USB Key存儲的是RSA證書,那應用系統可基於CryptoAPI/CSP體系實現設備完全透明,也就是說應用系統不需要調用USB Key的任何接口,甚至不需要知道有沒有USB Key,只需通過標准的CryptoAPI接口,就可以使用Key中的私鑰和證書。
如果應用系統使用的是裝有國密算法證書的USB Key,則無法使用CryptoAPI/CSP體系,而需要調用標准的國密庫接口。不過現在支持國密算法的USB Key都支持標准的國密庫接口,也就是說應用系統只要開發一次,也可以使用多種國密算法USB Key。
當然,由於Windows的CSP體系不支持國密算法,應用系統還必須指明要使用的是哪一種或幾種USB Key,做不到完全透明。
參考資料
包括:林林總總的密碼安全設備、國密SKF庫調用開發指南、
針對支持國密算法USB KEY設備的應用,國家頒布一個行業標准《智能密碼鑰匙應用接口規范》(GM/T0016-2012),市面上銷售的國密算法的USB KEY設備也都(其實也是必須)支持這個接口規范。因此,只要根據這個規范開發的應用程序,就可以兼容使用不同廠家及品牌的USB KEY產品。由於此規范中函數名稱都以SKF開頭,所以我們一般把按照此規范提供的設備開發接口庫叫做SKF庫或SKF接口。
在調用任何接口之前,都需要先加載所使用USBKEY設備的SKF庫文件,這個文件是由KEY廠商提供,
包括概要、飛天Ukey介紹、證書導入、證書生產、證書格式轉換【Java版】
PCI/CA體系下使用USBkey實現認證與加密(一)整體架構