1、usb 內(nèi)部包含內(nèi)容
一般的 usbkey炕倘,其內(nèi)部?jī)?nèi)置了一套加密算法,并提供了對(duì)應(yīng)的開發(fā) sdk翰撑,對(duì)于用戶而言罩旋,其內(nèi)部存儲(chǔ)的信息有:
1)usb PIN 碼,用于讀取 usb 信息眶诈;
2)usb 寫密碼涨醋,用于簽發(fā)者往 usbkey 中寫入賬號(hào)和密碼信息;
3)usb encrypt secret 逝撬,用于 usbkey 調(diào)用加密算法的秘鑰东帅;
4)account,簽發(fā)者寫入的賬戶信息球拦;
5)password本昏,簽發(fā)者寫入的密碼信息恕稠。
PIN 碼和 usbkey 組成雙因子認(rèn)證,任意一個(gè)丟失,都無法仿冒用戶身份鹰溜。
2、基于沖擊-響應(yīng)的雙因子認(rèn)證
下面以基于沖擊-響應(yīng)的雙因子認(rèn)證來說明一般軟件加密狗的認(rèn)證方式:
沖擊-響應(yīng)雙因子認(rèn)證流程
下面闡述一下 server 端校驗(yàn)邏輯:
1.通過賬號(hào) id 在數(shù)據(jù)庫中查詢對(duì)應(yīng)的 user行贪;
2.bcrypt(隨機(jī)字符串+salt(數(shù)據(jù)庫中記錄的 user 加密密鑰)== 隨機(jī)字符串加鹽 hash 牵咙?
3.賬戶密碼 == user.password ?
4.sdk加密算法(隨機(jī)字符串萄金,user 加密密鑰) == 隨機(jī)字符串 usb 加密串蟀悦?
user 表中存儲(chǔ)有:
user_read_secret: usb 的讀取 PIN 碼
user_write_secret: 簽發(fā)者對(duì)該用戶 usb 寫密碼
user_entrypt_sercret: 用戶加密密鑰