一种非对称加密密钥的动态生成方法及系统与流程

文档序号:33513474发布日期:2023-03-22 05:30阅读:152来源:国知局
一种非对称加密密钥的动态生成方法及系统与流程

1.本发明属于密钥生成技术领域,具体涉及一种非对称加密密钥的动态生成方法及系统。


背景技术:

2.本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
3.出于网络安全考虑,在web项目的使用过程中,用户通过浏览器与服务器进行数据交互时,为了防止数据传输过程中被截获篡改,应当对数据进行加密处理。目前使用最广泛最安全的加密方式是非对称加密,用户向服务器传输数据时使用公钥进行加密,在服务器使用私钥进行解密,黑客如果不能获取私钥,即使拦截到了用户的数据也无法对数据进行解密和篡改。
4.而在软件开发框架内置了非对称加密的功能(如在登录过程中对密码进行的加密),假使非对称加密所需的公钥、私钥在框架中为固定数值,用开发框架进行开发的项目中如果有一个因为代码泄露或者服务器被入侵导致私钥泄密,则会对使用开发框架的其他项目的安全造成威胁。
5.而现有的解决手段是项目开发人员在项目上线前对密钥进行重新修改,项目上线后,加密使用的密钥对也需要项目开发人员时时变更,以防止私钥泄密导致的潜在危害。私钥维护在代码当中,项目的开发人员、运维人员都有可能将私钥泄露出去,有很大的安全隐患。对密钥对的维护增加了开发人员的工作,也违背人框架开发开箱即用的原则。


技术实现要素:

6.为了解决上述问题,本发明提出了一种非对称加密密钥的动态生成方法及系统,本发明中私钥不维护在代码当中,只有登录服务器当中才可能获取到私钥,通常只有项目的运维人员才能接触到,私钥随项目的启动而更换,能降低私钥泄露的可能性与泄露后未被发现所造成的的危害。
7.根据一些实施例,本发明的第一方案提供了一种非对称加密密钥的动态生成方法,采用如下技术方案:
8.一种非对称加密密钥的动态生成方法,应用在服务器端,包括:
9.接收到任务触发请求后生成初始随机公钥和私钥密钥对,并存储在服务器端中多个服务节点上,且多个所述服务节点共用一个密钥对;
10.当接收到用户访问请求时,向客户端发送公钥,使得客户端利用公钥对需要传输的数据进行加密,并将加密数据发送给服务器端;
11.接收到客户端的加密数据,利用私钥对所述加密数据进行解密,得到原文数据。
12.进一步地,所述任务触发请求包括定时任务更新、开发项目启动重启以及手动触发。
13.进一步地,所述当接收到用户访问请求时,向客户端发送公钥,具体为:
14.将用户访问请求均匀分配到各个服务节点上;
15.各个所述服务节点共用一个公钥;
16.所述服务器端将公钥发送给客户端。
17.进一步地,所述接收到客户端的加密数据,利用私钥对所述加密数据进行解密,得到原文数据,包括:
18.将加密数据均匀的分配到各个服务节点上,得到节点加密数据;
19.各个所述服务节点利用同一个私钥,分别对分配后的节点加密数据进行解密,得到节点原文数据;
20.将各个节点原文数据按照分配的顺序进行组合,得到原文数据。
21.根据一些实施例,本发明的第二方案提供了一种非对称加密密钥的动态生成方法,采用如下技术方案:
22.一种非对称加密密钥的动态生成方法,应用在客户端,其特征在于,包括:
23.向服务器端发送用户访问请求以使得服务器端将公钥发送给客户端,获取公钥;
24.利用公钥对需要传输的数据进行加密并发送给服务器端,以使得服务器端对加密数据进行解密,得到原文数据。
25.进一步地,所述向服务器端发送用户访问请求以使得服务器端将公钥发送给客户端,具体为:
26.所述服务器端将用户访问请求均匀分配到各个服务节点上;
27.各个所述服务节点共用一个公钥;
28.所述服务器端将公钥发送给客户端。
29.进一步地,所述服务器端对加密数据进行解密,得到原文数据,包括:
30.所述服务器端将加密数据均匀的分配到各个服务节点上,得到节点加密数据;
31.各个所述服务节点利用同一个私钥,分别对分配后的节点加密数据进行解密,得到节点原文数据;
32.将各个节点原文数据按照分配的顺序进行组合,得到原文数据。
33.根据一些实施例,本发明的第三方案提供了一种非对称加密密钥的动态生成系统,采用如下技术方案:
34.一种非对称加密密钥的动态生成系统,包括服务器端和客户端;
35.所述服务器端接收到任务触发请求后生成初始随机公钥和私钥密钥对,并存储在服务器端,所述服务器端部署多个服务节点,且多个所述服务节点共用一个密钥对;
36.当所述服务器端接收到用户访问请求时,所述服务器端向客户端发送公钥,使得客户端利用公钥对需要传输的数据进行加密,并将加密数据发送给服务器端;
37.所述服务器端收到客户端的加密数据,利用私钥对所述加密数据进行解密,得到原文数据;
38.当所述服务器端再次接收到任务触发请求时更新生成新的公钥和私钥密钥对,并存储在服务器端,所述服务器端基于新的公钥和私钥密钥对与客户端进行交互。
39.根据一些实施例,本发明的第四方案提供了一种计算机可读存储介质。
40.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现
如上述第一个方面所述的一种非对称加密密钥的动态生成方法中的步骤。
41.根据一些实施例,本发明的第五方案提供了一种计算机设备。
42.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一个方面所述的一种非对称加密密钥的动态生成方法中的步骤。
43.与现有技术相比,本发明的有益效果为:
44.本发明中服务器端中多服务节点公用一个密钥对,服务节点生成密钥对时将密钥对存储到到服务器端公共的存储当中,新生成的密钥会替换旧的密钥对,各服务节点都使用最新生成的密钥对;提高了框架的自动化程度,降低了项目开发运维人员对项目的维护管理成本;私钥不维护在代码当中,只有登录服务器当中才可能获取到私钥,通常只有项目的运维人员才能接触到,私钥随项目的启动而更换,能降低私钥泄露的可能性与泄露后未被发现所造成的的危害。
附图说明
45.构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
46.图1是本发明实施例中一种非对称加密密钥的动态生成方法的流程图。
具体实施方式
47.下面结合附图与实施例对本发明作进一步说明。
48.应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
49.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
50.在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
51.术语解释:
52.非对称加密:可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥,公钥是公开的(可能同时多人持有);
53.实施例一
54.如图1所示,本实施例提供了一种非对称加密密钥的动态生成方法,应用在服务器端,本实施例中,该方法包括以下步骤:
55.接收到任务触发请求后生成初始随机公钥和私钥密钥对,并存储在服务器端中多个服务节点上,且多个所述服务节点共用一个密钥对;
56.当接收到用户访问请求时,向客户端发送公钥,使得客户端利用公钥对需要传输
的数据进行加密,并将加密数据发送给服务器端;
57.接收到客户端的加密数据,利用私钥对所述加密数据进行解密,得到原文数据。
58.需要说明的是,当所述服务器再次接收到任务触发请求时更新生成新的公钥和私钥密钥对,并存储在服务器端,所述服务器端基于新的公钥和私钥密钥对重复上述过程。如果没有收到再一次的任务触发请求,则非对称加密密钥生成完成。
59.具体地,所述任务触发请求包括定时任务更新、开发项目启动重启以及手动触发。
60.所述当接收到用户访问请求时,向客户端发送公钥,具体为:
61.所述服务器端将用户访问请求均匀分配到各个服务节点上;
62.各个所述服务节点共用一个公钥;
63.所述服务器端将公钥发送给客户端。
64.接收到客户端的加密数据,利用私钥对所述加密数据进行解密,得到原文数据,包括:
65.将加密数据均匀的分配到各个服务节点上,得到节点加密数据;
66.各个所述服务节点利用同一个私钥,分别对分配后的节点加密数据进行解密,得到节点原文数据;
67.将各个节点原文数据按照分配的顺序进行组合,得到原文数据。
68.服务器端更新密钥对可以有多种触发方式,包括但不限于:项目启动重启,定时任务更新,开发人员手动触发。
69.具体地实施例中,该方法的具体过程为:
70.步骤1:项目启动时,框架生成随机公钥与私钥密钥对,存储到项目服务器中。
71.步骤2:用户访问项目时,从服务器获取公钥。
72.步骤3:客户端与服务器端需要传输加密数据时(如登录时传输密码),使用公钥通过加密算法进行加密并传输到服务器。
73.以传统的密钥对生成方法,是由项目开发人员在项目上线前对密钥进行重新修改,在这种基础上,如果从用户端到服务器端传输的数据被非法截获,因为没有私钥,所以无法通过加密数值获取真实数值。但如果非法攻击者有私钥则能解密获取到对应数值。因此,传统的方式存在一定的数据传输的安全隐患;而本实施例通过将密钥对存储在服务器端,能够防止非项目开发人员窃取到密钥对导致信息泄露的风险。
74.步骤4:服务器通过私钥解密密文获取到真实值。
75.步骤5:项目重启时或定时生成新的公钥与私钥密钥对用于2-4步骤。(一般框架与项目中密钥对固定在代码当中或以文件方式放在服务器当中,变更时需要开发运维人员手动替换,而本实施例所述的方法能解决这种缺陷。
76.步骤6:若后端项目多节点部署,则将公钥私钥放置于redis等内存数据库中存储,多节点一起维护使用密钥对。
77.对项目框架集群部署的适配,这样能保证多个节点使用同一组密钥对,不会出现解密失败的情况,若使用常规方式变更密钥时需要对部署的多节点服务的密钥一个个的更改替换。
78.若服务器端对外提供的服务压力过大,可以部署多个节点,以集群的方式对外提供服务,客户端访问服务器端时请求将被均匀分配到各个节点上,防止某个节点因分配过
多请求导致压力过大,如果节点各自维护管理自己的密钥对,客户端多次请求可能被分配到不同的节点上,导致传输的数据解密失败的问题,因此本发明提供了一个解决方案,多节点公用一个密钥对,节点生成密钥对时将密钥对存储到到公共的存储(如redis)当中,新生成的密钥会替换旧的密钥对,各节点都使用最新生成的密钥对。
79.客户端应在发送加密交互内容前更新公钥数据,如客户端为移动app应用时则可在开启app时获取,客户端为web端时可在登录或进入首页时获取。若密钥对需要以较快时间(小时)更新,则可采用服务器端主动推送密钥更新的方式更新密钥;但不推荐更快的更新频率(分),这样系统的安全没有显著提高,却会对系统造成一定的压力。
80.实施例三
81.本实施例提供了一种非对称加密密钥的动态生成方法,应用在客户端,其特征在于,包括:
82.向服务器端发送用户访问请求以使得服务器端将公钥发送给客户端,获取公钥;
83.利用公钥对需要传输的数据进行加密并发送给服务器端,以使得服务器端对加密数据进行解密,得到原文数据。
84.进一步地,所述向服务器端发送用户访问请求以使得服务器端将公钥发送给客户端,具体为:
85.所述服务器端将用户访问请求均匀分配到各个服务节点上;
86.各个所述服务节点共用一个公钥;
87.所述服务器端将公钥发送给客户端。
88.进一步地,所述服务器端对加密数据进行解密,得到原文数据,包括:
89.所述服务器端将加密数据均匀的分配到各个服务节点上,得到节点加密数据;
90.各个所述服务节点利用同一个私钥,分别对分配后的节点加密数据进行解密,得到节点原文数据;
91.将各个节点原文数据按照分配的顺序进行组合,得到原文数据。
92.实施例三
93.本实施例提供了一种非对称加密密钥的动态生成系统,包括服务器端和客户端;
94.所述服务器端接收到任务触发请求后生成初始随机公钥和私钥密钥对,并存储在服务器端,所述服务器端部署多个服务节点,且多个所述服务节点共用一个密钥对;
95.当所述服务器端接收到用户访问请求时,所述服务器端向客户端发送公钥,使得客户端利用公钥对需要传输的数据进行加密,并将加密数据发送给服务器端;
96.所述服务器端收到客户端的加密数据,利用私钥对所述加密数据进行解密,得到原文数据;
97.当所述服务器再次接收到任务触发请求时更新生成新的公钥和私钥密钥对,并存储在服务器端,所述服务器端基于新的公钥和私钥密钥对与客户端进行交互。
98.上述实施例中对各个实施例的描述各有侧重,某个实施例中没有详述的部分可以参见其他实施例的相关描述。
99.所提出的系统,可以通过其他的方式实现。例如以上所描述的系统实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时,可以有另外的划分方式,例如多个模块可以结合或者可以集成到另外一个系统,或一些特征可以忽略,或不
执行。
100.实施例四
101.本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一或实施例二所述的一种非对称加密密钥的动态生成方法中的步骤。
102.实施例五
103.本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例一或实施例二所述的一种非对称加密密钥的动态生成方法中的步骤。
104.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
105.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
106.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
107.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
108.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
109.上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1