UKEY開發 用戶登錄流程

UKEY版本:UKEY2000D

最近公司接了一個開發項目,需要開發一個使用UKEY進行用戶身份認證的功能,看了一些開發文檔和資料後自己整理了一下用戶登錄的流程。

下面先介紹一下UKEY的內部結構,也就是那個像U盤一樣的東西,通常叫他加密鎖、加密狗。下面就是加密鎖的內部結構:

如圖所示,在加密鎖內部有各種算法,這些算法都是開發商設置在加密鎖內部的固話算法,不同的開發商應該會設置不同的算法。所以這裏我就不會具體的將算法函數列出來了。

雖然算法不同,但是對於身份認證的原理都應該是相同的,我就主要講一下用戶登錄時認證身份的流程吧。

  1. 用戶插入加密狗
  2. 打開指定的登錄網站(需要安裝一個瀏覽器的插件才能夠使用加密狗)
  3. 網站將會識別加密狗是否已經插入,沒有插入的話提示無法登錄。
  4. 網站成功識別並檢測到對應的加密狗已經插入
  5. 用戶輸入用戶名密碼,點擊登錄
  6. 服務器返回一個隨機數
  7. 提示用戶需要輸入pin碼(pin碼爲加密狗的密碼,相當於用戶身份的密碼,只有加密狗和Pin嘛同時在手裏才能確定身份,大大提高了安全性,即使Pin碼泄露,沒有拿到加密狗也無法登錄,或者即使丟了加密狗不知道Pin碼同樣不能登錄)
  8. 客戶端使用Pin碼對服務器返回的隨機數進行簽名,簽名過程會驗證Pin碼的正確性,Pin碼錯誤將無法進行簽名,也就無法登錄,Pin碼正確後將會使用加密鎖內部的私鑰對隨機數進行簽名。這一步驟的所有過程都是在加密鎖內部執行的。
  9. Pin碼驗證正確併成功簽名後,將用戶信息和簽名後的數據傳到服務器。
  10. 服務器收到用戶數據後使用與用戶對應(也可以是與鎖對應的,因爲在邏輯用戶、鎖、密鑰這三者的關係應該是對應的)的公鑰對簽名進行驗證。(密鑰是私鑰和公鑰的合稱,私鑰和公鑰是成對的,私鑰無法在客戶端導出,只能在創建的時候存入數據庫)
  11. 驗證通過即爲合法用戶,允許用戶登錄,驗證失敗爲不合法用戶,可能是用戶使用了其他用戶的加密狗。

當然,既然是開發,那麼加密狗內部是密鑰、用戶身份、Pin碼都是需要進行設置的,一個用戶對應一份密鑰對應一個Pin碼纔是對的。同樣我將會說一下我理解的設置流程:

  1. 在新建用戶的時候,插入一個新的加密狗
  2. 設置該新用戶應該持有的加密狗的Pin碼,設置加密狗密鑰
  3. 有的加密狗還可以添加插入後自動打開指定網址和下載指定控件並運行的功能,具體操作請查閱開發商提供的開發文檔
  4. 將用戶對應的Pin碼和密鑰存入數據庫。

當然,用戶既然有忘記密碼的情況,也會有忘記Pin碼的情況,這時可以聯繫管理員進行查看或者修改Pin碼,因爲修改新Pin碼必須要使用到原來的Pin碼(防止了黑客拿到用戶的加密狗修改Pin碼的情況),所以服務器數據庫保存的Pin碼就很有用了。

我理解的UKEY身份認證流程和設置流程就是這樣的了。

以上如果有不對的地方,請大神指出,感激不盡!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章