杜巖 溫衛



摘要:隨著互聯網的高速發展,網絡用戶所持有的個人口令越來越多,從而衍生了口令管理的難題,基于Springboot+JavaFX的口令管理器是一個用于安全地存儲用戶口令的程序,它基于第三代口令管理器的設計,采用C/S架構,以一個主密碼來管理與保護全部口令,主密碼通過PBKDF2算法加密,口令通過DES算法以主密碼為密鑰進行加密,在整個客戶端與服務端的信息傳輸過程中不會出現主密碼與口令的明文從而提高其安全性,方便用戶管理所擁有的口令進而保護用戶的重要信息與資產。該口令管理器采用Springboot和JavaFX技術設計,以圖形化界面呈現,易于操作。用戶口令的安全存取,具有抗SQL注入攻擊性、不可抵賴性和數據完整性。
關鍵詞:口令管理;PBKDF2;JavaFX;Springboot
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)27-0040-02
開放科學(資源服務)標識碼(OSID):
1 引言
在當今網絡環境下,各互聯網平臺逐漸完善其用戶管理機制,這就需要用戶在確保密碼安全性的前提下記住各平臺的所有密碼。密碼的復雜度設計要求也根據平臺的重要性變得更加難于記憶,隨著平臺數量增加,需要記憶的密碼也隨之繁雜,而口令管理器解決了因口令的繁雜而導致用戶遺忘的問題,以及口令的存儲安全問題[1-3]。
2 基于Springboot+JavaFX的口令管理器的系統設計
2.1 系統整體設計
基于Springboot+JavaFX[4-8]的口令管理器系統整體架構分為六個模塊:用戶認證模塊、加解密模塊、存儲模塊、通信請求模塊、前端設置模塊、安全模塊,其中前端設置模塊與存儲模塊以客戶端界面形式實現,其余模塊均同時在服務端與客戶端相互配合實現,整體架構如圖1所示。
安全性是口令管理器最重要的要素之一,在加解密模塊中采用了DES算法、RSA算法以及PBKDF2算法來實現用戶登錄驗證、加密通信建立及驗證、口令存儲等功能。
2.2 數據庫設計
數據庫概念結構設計實體與屬性關系見表1。
3 基于Springboot+JavaFX的口令管理器的詳細設計及實現
3.1 軟件目錄結構
在軟件界面設計上,采用標簽導航結構將界面分類為“主頁”“設備管理”“口令管理”“個人中心”“設置”五大標簽頁,其中主頁頁面需實現取口令、存口令和鎖定系統功能;設備管理頁面需實現顯示本用戶登錄過的設備、對設備信息進行增刪改查功能;口令管理頁面需實現顯示用戶存儲的口令、對口令進行增刪改查、口令輸出至第三方輸入框功能;個人中心頁面需實現顯示用戶所有信息以及登錄設備的全部信息、更改用戶個人信息、用戶的退出登錄、管理員的數據管理功能;設置頁面需實現窗體保持懸浮選項、開機自啟選項、顯示作者信息、顯示軟件版本、顯示實時操作日志、復制/清空操作日志信息及設置自動鎖定系統時間功能,軟件目錄結構如圖2所示。
3.2 登錄及加密通信功能實現
基于Springboot+JavaFX的口令管理器采用Socket通信[9]建立服務端與客戶端的通信,其用戶登錄功能實現于登錄界面,登錄界面布局兩個文本框分別為用戶名和密碼,當用戶提交用戶名與密碼后對其進行判空,若為空則重新輸入,通過判空后向服務器發送檢查密碼指令,客戶端請求格式為:
Login #用戶名#(請求獲得Salt)
Check #用戶名# #密碼密文# #系統名# #設備名# #主板序列# #登錄時間#
首先要獲得服務器數據庫中用戶名是否存在,其次獲取服務器數據庫用戶名相應的密碼密文中前綴Salt,將Salt返回至客戶端,客戶端根據Salt利用PBKDF2算法得到與Salt相應的密文,將密文發送至服務器,請求內容為:
EncryptedChannel #PK# #KEY#
服務器進行匹配后返回RSA密鑰對中的公鑰PK,客戶端登錄成功進入主頁,并將用戶名與密碼明文存至本地臨時緩存user.properties,隨之客戶端生成一個隨機密鑰KEY(即加密通信密鑰)存至客戶端本地文件作為臨時緩存KEY.properties,使用PK對其行RSA加密,將密文及設備信息發送至服務器,服務器通過SK解密后得到KEY,具體步驟見圖3。
3.3 鎖定功能實現
鎖定功能分為主動鎖定與自動鎖定兩種,其中主動鎖定是用戶主動對系統進行鎖定,自動鎖定是系統在運行指定時間后自動進行自我保護而鎖定的一種安全機制。主動鎖定功能實現于主頁界面如圖4,以Button的按鈕開啟并進入鎖定界面;自動鎖定功能實現于系統的一個新線程,當setting.properties配置文件中的AutoLockOn值為指定時間時,該線程會自動計時,達到指定時間后自動進入鎖定界面,見圖5。
進入鎖定界面后,系統會刪除user.properties中的用戶密碼明文以做到保護,在用戶輸入了正確的用戶密碼后系統會同登錄功能一樣重新加入系統并重新將密碼明文存至user.properties文件中并顯示主頁界面。
3.4 存取口令及管理口令功能實現
存口令功能實現于主頁界面,當用戶點擊存口令Button后顯示存儲界面,用戶輸入口令信息后點擊存儲按鈕,系統在判空后將口令用主密碼進行DES加密再向服務器發送存儲請求,服務器判斷口令是否存在,若存在返回覆蓋判斷,若不存在則直接存儲并返回存儲成功。
取口令功能主要實現于口令管理界面,在主頁布局取口令按鈕目的是跳轉到口令管理界面。口令管理界面實現了用戶存儲口令的增刪改查以及輸出功能,如圖8所示,該界面會將用戶存儲的口令以表格形式呈現,顯示口令的平臺、平臺用戶名以及更新時間信息和口令的修改、輸出、刪除功能。其中當該頁面進行初始化時客戶端會向服務端發送全部口令信息請求。從服務端得到口令信息后按照數據庫中Password表的游標遍歷順序顯示至界面如圖6。
當用戶對口令進行修改時,客戶端得到用戶輸入的新口令后向服務端發送修改請求。當用戶對口令進行輸出時,客戶端向服務端發送口令請求,服務端向客戶端發來口令的密文后,客戶端通過主密碼對其進行解碼,得到明文后將明文存至粘貼板,通過鍵盤事件切換到用戶指定文本框進行自動粘貼輸出見圖6。
4 結束語
本文對基于Springboot+JavaFX的口令管理器進行了技術介紹、全局設計、具體設計、系統測試等闡述。該口令管理器解決了在數據交互的全過程中對用戶的身份驗證,使得用戶在存取口令時突顯高效性和安全性。
參考文獻:
[1] 藍色空間(廣州)信息科技有限公司.密碼管理器的進化史[Z].InfoQ,2020.
[2] SpringBoot JavaFx 8.0 Support[EB/OL].[2022-02-14].https://springboot-javafx-support.readthedocs.io/.
[3] JavaFX Scene Builder介紹[EB/OL].[2022-03-28].http://www.javafxchina.net/.
[4] Java Language and Virtual Machine Specifications[EB/OL].[2022-03-18].https://docs.oracle.com/.
[5] 于飛,李曉華,蘭天,等.PBKDF2函數的一種快速實現[J].信息安全與通信保密,2013,11(12):100-102.
[6] Visconti A,Gorla F.Exploiting an HMAC-SHA-1 optimization to speed up PBKDF2[J].IEEE Transactions on Dependable and Secure Computing,2020,17(4):775-781.
[7] Josefsson S.PKCS #5:Password-Based Key Derivation Function 2 (PBKDF2) Test Vectors[R].RFC Editor,2011.
[8] 李飛,吳春旺,王敏.信息安全理論與技術:卓越工程師計劃[M].西安:西安電子科技大學出版社,2016.
[9] 王雷.TCP/IP網絡編程基礎教程[M].北京:北京理工大學出版社,2017:4.
【通聯編輯:謝媛媛】