本发明涉及应用系统的数据加密技术领域,一种用于前后端分离数据加密的方法。
背景技术:
随着各类应用系统的发展,数据在互联网上的安全受到了重视,特别是对于数据安全要求程度比较高的一些业务;如银行、军工、证券等行业。数据广泛在互联网上进行传输,随时有可能被截取的可能,如果数据使用明文发送,数据的安全毫无保证。同时有些行业,客户众多、业务需求大,如果使用固定的加密密钥进行相关数据的传送,会存在大量管理各种密钥的问题。需实现一种高效的加密算法,既实现加密的功能,又不影响业务的效率。
技术实现要素:
本发明解决的技术问题在于一种用于前后端分离数据加密的方法,解决数据传输加密和传统加密密钥固定的问题。
本发明解决上述技术问题的技术方案是:
包括以下步骤:
步骤1:后端基于HTTP实现跨域的配置,支持前后端分离的Session验证;
步骤2:对前后端用户操作权限进行验证,验证成功后,进行基于RAS算法的前后端公钥、私钥的生成及互保存,建立安全的加密密钥数据传输通道;
步骤3:在加密密钥传输通道建立后,后端基于此次Session动态随机生成AES加密密钥,并通过RAS算法加密传输到前端;同时在后端保存此Session对应的AES加密密钥;后续数据的接收回复基于此密钥进行加解密;
步骤4:前端在获得AES加密密钥的密文后,基于RAS算法的私钥进行解密,并保存此动态随机生成的密钥,并与此次Session形成密码对,用于后续数据请求接收;
步骤5:基于收到的AES加密密钥,前端通过此密钥实现统一的数据请求发送加密、接收解密的方法,前端的数据请求统一通过此方法进行处理;
步骤6:后端基于Session获得各次数据请求的动态随机AES加密密钥,构建统一的数据接收解密、回复数据加密的方法,后端的数据接收、数据回复统一通过方法进行;
步骤7:前端进行数据请求时,通过调用统一的数据请求方法,对请求的参数进行AES加密,加上Session发送至后端;后端基于此次Session获取解密的AES密钥并对数据进行解密,解密成功进行相关业务数据的获取后,对回复的数据按AES密钥进行加密,并传给前端,前端基于AES进行解密,解密成功后把数据传给具体的业务功能,实现整个前后端分离数据加密传输的过程。
在所述的步骤1中,对于前后端分离的后端,需对所有的请求进行Filter的统一管理,在统一的Filter中实现跨域的配置,配置内容包括response中的Access-Control-Allow-Origin、Access-Control-Allow-Credentials、Access-Control-Allow-Methods、Access-Control-Max-Age、Access-Control-Allow-Headers信息。
在所述的步骤2中,加密密钥数据传输通道的建立通过两次握手实现,具体步骤为:
1)、前端输入用户名与密码后发前至后端;
2)、后端接收到前端的用户名与密码后进行验证,验证通过基于RSA算法生成私钥R与公钥R,并保存此次Session的私钥R,并把公钥R传回前端,实现一次握手;
3)、前端接收后公钥R后,基于此次Session在前端通过RSA算法生成私钥N与公钥N,并使用公钥R对公钥N进行加密后传回后端;
4)、后端接收到使用公钥R进行加密后的公钥N的密文,使用私钥R进行解密,得到公钥N,完成二次握手,建立加密密钥传输通道;
所述的私钥R与公钥R、私钥N与私钥N都是基于Session的建立而生成的基于RSA算法的随机密钥对。
所述的步骤3中,通过公钥R进行RSA算法加密后,传回前端;前端在接收到密文后,通过私钥R进行解密,获得后续进行数据交互中进行数据加解密的AES密钥。
在所述的步骤2、3中,发送的请求需加入特殊的参数,第一次握手时需加参数hands1,二次握手时需加参数hands2,后端接收到这两个参数时,特殊进行相应的两次握手的对应操作及回应。
在所述的步骤5中,前端需实现两次握手的获取AES密钥的方法,及后面进行数据交互数据加解密的方法;两次握手的获取AES密钥的方法,在登录时使用,后续的数据请求调用统一的数据加解密的方法。
在所述的步骤6中,后端实现统一的数据接收与回复的调用方法,如果接收的数据不包括握手的参数,统一获取Session的随机AES密钥进行解密,再把解密后的数据传送到相关的业务单元,业务单元业务逻辑处理完成后,再返回新的数据并进行加密,回复至前端;对于包括握手的请求,对应调用验证及生成AES密钥的相关方法进行。
本发明的有益效果是:
本发明方法基于应用系统前后端分离数据传输的特点,基于HTTP传输中Session为基础,构建统一的动态随机加密密钥的获取方法、统一的前端数据请求加解密方法、统一的后端数据回复加解密方法,安全地实现加密密钥的动态随机获取,确保加密密钥安全的同时,在不影响系统的数据传输效率的情况下,又保证了应用系统数据传输的安全,极大提高了应用系统的安全可靠性。
通过本发明的方法不仅解决了传统数据传输过程中数据传输会被截取,采用加密算法加密密钥固定、可能会被窃取等问题,也提高了应用系统中数据传输过程中的安全性及可靠性,为应用系统的数据传输提供了一种安全可靠的方法。
附图说明
下面结合附图对本发明进一步说明:
附图1是本发明前后端分离数据加密流程图。
具体实施方式
步骤1:后端基于HTTP实现跨域的配置,支持前后端分离的Session验证;配置内容包括response中的Access-Control-Allow-Origin、Access-Control-Allow-Credentials、Access-Control-Allow-Methods、Access-Control-Max-Age、Access-Control-Allow-Headers信息;
步骤2:前端输入用户名与密码后发前至后端;
步骤3:后端接收到前端的用户名与密码后进行验证,验证通过基于RSA算法生成私钥R与公钥R,并保存此次Session的私钥R,并把公钥R传回前端,实现一次握手;
步骤4:前端接收后公钥R后,基于此次Session在前端通过RSA算法生成私钥N与公钥N,并使用公钥R对公钥N进行加密后传回后端;
步骤5:后端接收到使用公钥R进行加密后的公钥N的密文,使用私钥R进行解密,得到公钥N,完成二次握手,建立起安全的加密密钥传输通道;
步骤6:加密密钥传输通道建立后,后端基于此次Session动态随机生成AES加密密钥,并通过RAS算法加密传输到前端,同时在后端保存此Session对应的AES加密密钥,后续数据的接收回复基于此密钥进行加解密;
步骤7:前端在获得AES加密密钥的密文后,基于RAS算法的私钥进行解密,并保存此动态随机生成的密钥,并与此次Session形成密码对,用于后续数据请求接收;
步骤8:基于收到的AES加密密钥,前端通过此密钥实现统一的数据请求发送加密、接收解密的方法,前端的数据请求统一通过此方法进行处理;
步骤9:后端基于Session获得各次数据请求的动态随机AES加密密钥,构建统一的数据接收解密、回复数据加密的方法,后端的数据接收、数据回复统一通过方法进行;
步骤10:前端进行数据请求时,通过调用统一的数据请求方法,对请求的参数进行AES加密,加上Session发送至后端,后端基于此次Session获取解密的AES密钥并对数据进行解密,解密成功进行相关业务数据的获取后,对回复的数据按AES密钥进行加密,并传给前端,前端基于AES进行解密,解密成功后把数据传给具体的业务功能,实现整个前后端分离数据加密传输的过程。
所述的基于前后端分离数据加密的方法,基于HTTP的Session机制,通过生成随机的AES密钥方法,及安全的加密密钥数据传输通道的建立,从而实现一种随着Session的建立而随机进行生成的AES密钥,从而解决了密钥固定、直接使用RSA算法进行加解决密效率低下的问题,从而为前后端分离的数据加密,提供一种可靠安全的方法。
本方法基于RSA算法分别进行私钥解密、公钥加密可实现随机身份认证但效率不高的特点,AES算法加解密效率高的但密钥如果固定会被获取的特点,结合各因素的优缺点,从而解决数据传输的加密问题,又解决传统加密密钥固定的问题。