一种引入OTP动态选择端口的单包授权方法及系统与流程

专利2023-09-13  93


一种引入otp动态选择端口的单包授权方法及系统
技术领域
1.本发明涉及单包授权方法技术领域,具体涉及一种引入otp动态选择端口的单包授权方法及系统。


背景技术:

2.软件定义边界(software defined perimeter,sdp)是一个能够为 osi七层协议栈提供安全防护的网络安全架构。sdp 可实现网络隐藏,并在允许连接到隐藏网络资产之前使用单个数据包通过单独的控制和数据平面建立信任连接。企业实施sdp可以改善其所面临的攻击面日益复杂和扩大化的安全困境。
3.单包授权(single packet authorization,spa)是sdp的核心功能,主要作用是通过默认关闭服务端口,使服务实现网络隐身,从网络上无法连接、无法扫描。如果需要使用服务,则通过特定客户端发送认证报文信息给服务器,服务器认证该报文后,授权申请进行认证,成功后放行,将对该ip地址打开相关的服务。
4.但目前市面上的单包授权方法普遍存在以下缺点:1、口令泄露风险:市面上普遍的单包授权方法,使用简单的固定口令或者其他容易泄露的方式进行身份认证,存在泄露风险;2、dos攻击风险:传统的单包授权方法中服务端的监听端口一般都是固定的(或者需提前指定),存在dos攻击风险。
5.cn202011161929.4公布了一种基于网络隐身下高效并发访问的控制方法及系统。服务器端获取客户端发起的授权认证请求,服务器开启非著名端口做服务侦听,并对授权申请进行认证,成功后放行;服务器端部署数据库,服务器对放行规则与数据库进行比较,确保是新的非重复规则,添加到数据库并贴标签;对于重复申请的规则,在数据库更新超时时间;服务器定时查看数据库,从数据库添加新规则到防火墙后删除新规则标签,删除超时规则。
6.但是该专利本质上是通过对称加密及数字签名在传输过程中保证了信息的安全性,但是用户仍然有泄露自身重要信息的风险。此外该专利在侦听阶段,服务器端获取客户端发起的授权认证请求,服务器开启非著名端口做服务侦听,此非著名端口为固定端口,一旦被攻击者发现,即可对该端口发动攻击,从而达到拒绝服务的严重后果。
7.公开号为cn113055357a的专利《单包验证通信链路可信的方法、装置、计算设备及存储介质》中,服务提供者接收网络请求者发送的软件定义边界验证包,该验证包包括使用者网络信息包以及根据所述使用者网络信息包应用hotp算法生成的一次性密码(one time password,otp);服务提供者解析该数据包并对使用者信息及hotp一次性密码进行验证,若校验通过则开启网络服务。这种方式很好的解决了软件定义边界敲门机制现存的安全性问题。但是该发明存在着一种固定目的端口所带来的风险,即上述软件定义边界验证包的目的端口是固定的,该端口一般是由服务端预先设定好的,若攻击者获取到该端口号,可以发送大量无用数据包堵塞该端口,最终造成拒绝服务的结果。本发明在此基础上根据totp的结果进行相应的计算,根据该计算结果从已有的端口白名单中选择一个端口,该操作是周
期性、随机性的,避免了服务端监听端口泄露所带来的安全隐患。


技术实现要素:

8.发明目的:本发明目的在于针对现有技术的不足,提供一种引入otp动态选择端口的单包授权方法及系统,将otp机制引入单包授权系统中,不仅可用于身份验证,其核心技术是通过otp选择由客户端及服务端都信任的动态端口,提高了系统的安全性。
9.技术方案:本发明所述引入otp动态选择端口的单包授权方法,包括如下步骤:将当前时间戳、原始密钥作为otp计算因子进行哈希计算,得到otp密码,根据otp密码选择白名单端口号作为动态端口;客户端获取用户的身份信息,将身份信息与otp密码打包生成spa数据包,将spa数据包发送至动态端口;服务端对动态端口进行监听,在收到客户端发送的spa数据包时执行验证,若验证成功,服务端打开服务端口进行数据传输,若验证失败,则丢弃spa数据包,返回监听状态。该特定服务端口仅用于服务(如http服务80的端口),与监听端口(即本方法通过otp密码计算出的随机动态端口)要区别开来。
10.进一步完善上述技术方案,所述otp密码设有有效时间,若在有效时间内没有验证otp密码,则otp密码失效。
11.进一步地,所述客户端的ip地址需为服务端ip白名单中的合法用户,所述服务端存储有与客户端请求用户相同的原始密钥。原始密钥用于生成otp密码,该otp密码用于生成随机端口。
12.进一步地,所述动态端口的计算过程如下:获取当前时间戳;将当前时间戳与原始密钥进行哈希计算,计算公式为:totp(k,c) = truncate(hmac-sha-1(k,t))其中k为原始密钥,t为当前时间戳;截取计算得到散列结果中的六位十进制数得到otp密码,将otp密码对10进行取模,将取模结果作为白名单端口号中的选择序号。
13.进一步地,所述用户的身份信息包括用户名、固定口令、ip地址。
14.进一步地,所述客户端将用户的身份信息、otp密码进行哈希计算得到散列,将散列、用户名、客户端ip地址组合成列表后打包成spa数据包进行传输;服务端获取spa数据包的源ip地址,判断是否为ip白名单中的合法用户;若为合法用户,服务端对spa数据包进行解码,解码后得到原始信息列表;同时服务端将用户名、固定口令、源ip地址、otp密码进行哈希计算,将计算结果与原始信息列表中的散列比较,若比较结果一致,则验证成功,进入防火墙策略。
15.进一步,所述服务器采用离线散列验证方式进行验证。身份验证阶段,服务端采取离线散列验证的方式,无需用户通过网络直接传输该密码即可完成身份认证(仅需传输包含该密码的散列结果),有效避免了原始密钥在网络中暴露的风险。
16.进一步地,所述otp密码包括原始密钥、动态因子、密钥产生器以及生成的密钥。
17.用于实现上述方法的引入otp动态选择端口的单包授权系统,包括客户端、服务
端,所述客户端包括otp动态端口生成模块一和授权数据包打包模块,所述服务端包括otp动态端口生成模块二、授权数据包验证模块、防火墙策略模块,所述客户端提前在服务端注册为合法用户,所述服务端存储有与来自客户端请求用户相同的原始密钥;所述otp动态端口生成模块一将当前时间戳、原始密钥作为otp计算因子进行哈希计算得到otp密码,采用otp密码选择白名单端口号作为动态端口;所述授权数据包打包模块一获取用户的身份信息,将身份信息、otp密码进行哈希计算并打包得到spa数据包,将spa数据包发送至动态端口;所述otp动态端口生成模块二获取与客户端同步的当前时间戳以及来自客户端请求用户的原始密钥,将当前时间戳、来自客户端请求用户的原始密钥作为otp计算因子进行哈希计算得到otp密码,采用otp密码选择白名单端口号作为动态端口;所述授权数据包验证模块用于监听动态端口,对来自动态端口的spa数据包进行验证;所述防火墙策略模块用于针对验证通过的spa数据包开启临时防火墙策略线程。
18.进一步地,所述授权数据包打包模块包括:将用户的身份信息、otp密码进行哈希计算得到散列,将散列、用户名、客户端ip地址组合成列表后打包成spa数据包进行传输;所述单包授权数据包包括:获取spa数据包的源ip地址,判断是否为ip白名单中的合法用户;若为合法用户,对spa数据包进行解码,解码后得到原始信息列表;同时将用户名、固定口令、源ip地址、otp密码进行哈希计算,将计算结果与原始信息列表中的散列比较,比较结果一致,判定验证成功;所述防火墙策略模块将验证通过的用户ip的流量置为accept,维持时长为30s,若otp密码过期或者超时,则回到初始状态。
19.有益效果:与现有技术相比,本发明的优点在于:在传统的单包授权领域中,由于用户使用的是固定的口令密钥,存在一定泄露风险,一旦泄露则可能产生不可估量的后果,因此采用基于时间戳的动态一次性密码totp作为用户身份信息的一部分,与传统的固定口令结合,在传输前通过哈希计算并打包,大大降低了泄露的风险。
20.此外,传统的单包授权服务端往往是监听某个固定的端口,如果该端口被攻击者所知晓,一旦发动攻击(如dos攻击),则单包授权系统的服务将受到影响,因此利用otp的动态特性、c/s同步特性来计算动态端口以有效避免该风险。
附图说明
21.图1是本发明中单包授权客户端与单包授权服务端交互流程示意图;图2是本发明中otp动态端口选择模块的算法流程图;图3是本发明中单包授权客户端的框架图;图4是本发明中单包授权服务端的框架图;图5是本发明中单包授权客户端的算法流程图;图6是本发明中单包授权服务端的算法流程图。
具体实施方式
22.下面通过附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
23.本发明提供的引入otp动态选择端口的单包授权方法,使用python中的pyotp库产生otp以实现选择动态随机端口的机制,参考图1所示,为本发明中客户端与服务端交互流程示意图,包括otp动态端口生成模块、客户端和服务端。
24.为实现相关操作,需要准备好一下前置工作:客户端和服务端都确保python3及以上环境,并安装pyotp库,客户端服务端需事先商定所使用的otp原始密钥,服务端将客户端的信息录入,并使得客户端成为服务端的合法用户。
25.otp:指一次性密码,可用于实现mfa(multi-factor-authentication),一般分为四个部分:原始密钥initial key、动态因子moving factor、密钥产生器generator、以及生成的密钥key。原始密钥(initial key表述是otp的标准表述),该方法中通过原始密钥计算出otp密码,进而计算出动态端口。
26.在totp中,t指代time-based,其动态因子基于时间。totp的有效时间被称为timestep(时间步长),通常被设定为30、60秒,如果在这个时间窗口内没有验证此密码,则会失效,有效地解决了hotp的泄露的长期风险。
27.此外客户端向服务端的请求的身份信息中还包括一个固定口令(相当于登录密码),该固定口令实际上会与otp六位密码进行结合并哈希计算生成一个口令密码包。因此,所属的用户身份信息包括:用户名、固定口令、otp密码。
28.系统总体框架包含初始化以及交互(验证服务)两个阶段:1、初始化阶段用户的原始密钥是提前在服务端注册;客户端程序初始化步骤为:otp动态端口生成模块根据当前时间以及用户的原始密钥生成otp密码;otp动态端口生成模块使用otp密码计算出需要选择的白名单端口号。
29.服务端程序初始化步骤为:otp动态端口生成模块根据当前时间(此时间与客户端时间一致)生成与客户端同步的otp密码(此otp密码与客户端生成的otp密码一致);otp动态端口生成模块使用otp密码计算出需要选择的白名单端口号,服务端监听该端口号(此端口号与客户端生成的端口号一致)。
30.服务端和客户端依据当前同一时间以及该用户预设的原始密钥生成密码,因此服务端和客户端生成出的密码实际上是一致的。由于服务端和客户端计算出的otp密码是一致的,从而计算出的端口号是一致的。
31.实际操作时,客户端向计算出的端口发出验证信息,服务端在计算出的端口监听该验证信息。
32.2、验证-服务阶段客户端发送请求:客户端向服务端发送spa数据包;建立连接/丢弃数据包:若验证成功,服务端开启后续服务(防火墙策略)。
33.本发明中的otp端口生成模块详细算法流程如图2所示,以客户端为例,启动客户端程序,客户端绑定原始密钥,并获取当前时间戳;客户端程序将当前时间戳、用户的原始密钥作为otp计算因子,进行哈希计算,totp串的计算公式为:totp(k,c) = truncate(hmac-sha-1(k,t))其中k为原始密钥,t为当前时间戳。
34.经过哈希计算得到散列值,之后客户端程序截取散列结果中的六位十进制数得到
otp密码;获得的otp密码对10进行取模运算,得到0-9中的某个数;客户端程序将此取模结果作为选择端口的依据,选择的端口用于接下来发送模块的目的端口;另外所生成的otp有30s的刷新时间,30s后otp过期,返回初始状态。
35.本发明的优选实施例提供了单包授权客户端的功能实现,参考图3所示,包括otp动态端口生成模块、授权数据包打包模块。在授权数据包打包模块中,客户端将服务端所需要的验证信息进行打包,以期望通过单包授权服务端的验证。需要验证的信息包括:用户名、固定口令、ip地址、散列值,散列值是由用户名、固定口令、ip地址、otp密码计算得出的;其具体步骤如为:客户端提示用户输入固定口令(消息1);客户端将消息1与当前用户名、客户端ip地址、otp密码组合成消息2;客户端将消息2进行utf-8编码,并进行哈希计算得到散列1;客户端将散列1及用户名、客户端ip地址组合成列表1;客户端使用json.dumps函数将列表1转换成json对象。
36.关于单包授权客户端的总体流程图可参考图5,其具体步骤为:客户端根据原始密钥产生totp并计算动态端口;客户端等待用户输入固定口令;客户端将用户名、ip地址、固定口令、当前otp密码进行哈希计算,生成spa数据包;客户端将spa数据包发送至由otp计算出的目的端口;如果验证通过,则使用由服务端提供的后续服务,否则返回至初始状态。
37.本发明的优选实施例提供了单包授权服务端的功能实现,参考图4所示,包括以下模块:otp动态端口生成模块2、授权数据包验证模块、防火墙策略模块,其中otp动态端口生成模块2的详细叙述可参考上文中单包授权客户端处描述。在授权数据包验证模块中,服务端对客户端发来的spa数据包进行验证,以验证客户端的身份及数据的完整性。需要验证的信息包括用户名、固定口令、ip地址、散列。散列是由otp密码、用户名、固定口令、ip地址计算得出的。其具体步骤如下:服务端嗅探到由单包授权客户端发来的spa数据包;服务端获取spa数据包的源ip地址,验证是否为ip白名单中的合法用户(查找用户字典);服务端将数据包进行解码并将其中的json对象转换成list,得到客户端发来的原始信息列表1;服务端将用户名、固定口令、客户端ip地址、otp密码进行哈希计算,并将结果与客户端发来的列表1中的散列进行比较,如果验证通过,则进入防火墙策略模块;在防火墙策略模块中,如果上述的散列验证通过,则服务端便开启临时防火墙策略线程,将来自该用户ip的流量置为accept,维持时长为30s,若otp过期或者超时,则防火墙策略回到初始状态。
38.在身份验证阶段,服务端采取离线散列验证的方式,无需用户通过网络直接传输该密码即可完成身份认证(仅需传输包含该密码的散列结果),有效避免了原始密钥在网络中暴露的风险。
39.关于服务端的总体功能实现可参考图6所示,其具体包括以下步骤:服务端根据接收到的产生otp并计算动态端口;服务端监听由otp动态端口生成模块生成的动态端口,监听持续30s;
服务端若未监听到任何spa数据包,则返回到最初状态,重新选择动态端口;若监听到spa数据包,则单包授权服务端对spa数据包进行验证,将用户名、地址、固定口令、当前otp密码进行哈希计算,并与客户端发来的散列进行比较;如果验证通过,则调用防火墙策略模块对来自该客户的流量批准通过,客户端可使用后续服务;若不通过返回初始状态。
40.如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。

技术特征:
1.一种引入otp动态选择端口的单包授权方法,其特征在于,包括如下步骤:将当前时间戳、原始密钥作为otp计算因子进行哈希计算,得到otp密码,根据otp密码选择白名单端口号作为动态端口;客户端获取用户的身份信息,将身份信息与otp密码打包生成spa数据包,将spa数据包发送至动态端口;服务端对动态端口进行监听,在收到客户端发送的spa数据包时执行验证,若验证成功,服务端打开服务端口进行数据传输,若验证失败,则丢弃spa数据包,返回监听状态。2.根据权利要求1所述的引入otp动态选择端口的单包授权方法,其特征在于:所述otp密码设有有效时间,若在有效时间内没有验证otp密码,则otp密码失效。3.根据权利要求1或2所述的引入otp动态选择端口的单包授权方法,其特征在于:所述客户端的ip地址需为服务端ip白名单中的合法用户,所述服务端存储有与客户端请求用户相同的原始密钥。4.根据权利要求3所述的引入otp动态选择端口的单包授权方法,其特征在于,所述动态端口的计算过程如下:获取当前时间戳;将当前时间戳与原始密钥进行哈希计算,计算公式为:totp(k,c) = truncate(hmac-sha-1(k,t))其中k为原始密钥,t为当前时间戳;截取计算得到散列结果中的六位十进制数得到otp密码,将otp密码对10进行取模,将取模结果作为白名单端口号中的选择序号。5.根据权利要求4所述的引入otp动态选择端口的单包授权方法,其特征在于:所述用户的身份信息包括用户名、固定口令、ip地址。6.根据权利要求5所述的引入otp动态选择端口的单包授权方法,其特征在于:所述客户端将用户的身份信息、otp密码进行哈希计算得到散列,将散列、用户名、客户端ip地址组合成列表后打包成spa数据包进行传输;服务端获取spa数据包的源ip地址,判断是否为ip白名单中的合法用户;若为合法用户,服务端对spa数据包进行解码,解码后得到原始信息列表;同时服务端将用户名、固定口令、源ip地址、otp密码进行哈希计算,将计算结果与原始信息列表中的散列比较,若比较结果一致,则验证成功,进入防火墙策略。7.根据权利要求6所述的引入otp动态选择端口的单包授权方法,其特征在于:所述服务器采用离线散列验证方式进行验证。8.根据权利要求1所述的引入otp动态选择端口的单包授权方法,其特征在于:所述otp密码包括原始密钥、动态因子、密钥产生器以及生成的密钥。9.一种引入otp动态选择端口的单包授权系统,其特征在于:包括客户端、服务端,所述客户端包括otp动态端口生成模块一和授权数据包打包模块,所述服务端包括otp动态端口生成模块二、授权数据包验证模块、防火墙策略模块,所述客户端提前在服务端注册为合法用户,所述服务端存储有与来自客户端请求用户相同的原始密钥;所述otp动态端口生成模块一将当前时间戳、原始密钥作为otp计算因子进行哈希计算得到otp密码,采用otp密码选择白名单端口号作为动态端口;所述授权数据包打包模块一
获取用户的身份信息,将身份信息、otp密码进行哈希计算并打包得到spa数据包,将spa数据包发送至动态端口;所述otp动态端口生成模块二获取与客户端同步的当前时间戳以及来自客户端请求用户的原始密钥,将当前时间戳、来自客户端请求用户的原始密钥作为otp计算因子进行哈希计算得到otp密码,采用otp密码选择白名单端口号作为动态端口;所述授权数据包验证模块用于监听动态端口,对来自动态端口的spa数据包进行验证;所述防火墙策略模块用于针对验证通过的spa数据包开启临时防火墙策略线程。10.根据权利要求9所述引入otp动态选择端口的单包授权系统,其特征在于,所述授权数据包打包模块包括:将用户的身份信息、otp密码进行哈希计算得到散列,将散列、用户名、客户端ip地址组合成列表后打包成spa数据包进行传输;所述单包授权数据包包括:获取spa数据包的源ip地址,判断是否为ip白名单中的合法用户;若为合法用户,对spa数据包进行解码,解码后得到原始信息列表;同时将用户名、固定口令、源ip地址、otp密码进行哈希计算,将计算结果与原始信息列表中的散列比较,比较结果一致,判定验证成功;所述防火墙策略模块将验证通过的用户ip的流量置为accept,维持时长为30s,若otp密码过期或者超时,则回到初始状态。

技术总结
本发明公开了引入OTP动态选择端口的单包授权方法及系统,包括:将当前时间戳、原始密钥作为OTP计算因子进行哈希计算,得到OTP密码,根据OTP密码选择白名单端口号作为动态端口;客户端获取用户的身份信息,将身份信息与OTP密码打包生成SPA数据包,将SPA数据包发送至动态端口;服务端对动态端口进行监听,在收到客户端发送的SPA数据包时执行验证,若验证成功,服务端打开服务端口进行数据传输,若验证失败,则丢弃SPA数据包,返回监听状态。本发明将OTP机制引入单包授权系统中,不仅用于身份验证,且通过OTP选择由客户端及服务端都信任的动态端口,提高了系统的安全性。提高了系统的安全性。提高了系统的安全性。


技术研发人员:秦益飞 赵越 张玉健 杨正权
受保护的技术使用者:江苏易安联网络技术有限公司
技术研发日:2022.06.20
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-5093.html

最新回复(0)