基于Springboot+JavaFX的口令管理器的设计

2022-05-30 08:08杜岩温卫
电脑知识与技术 2022年27期

杜岩 温卫

摘要:随着互联网的高速发展,网络用户所持有的个人口令越来越多,从而衍生了口令管理的难题,基于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.

【通联编辑:谢媛媛】