信息加密方法及系统与流程

文档序号:21639612发布日期:2020-07-29 02:50阅读:694来源:国知局
信息加密方法及系统与流程

本发明涉及一种信息加密方法及系统。



背景技术:

中间人攻击(man-in-the-middleattack,简称mitm攻击)是一种通过窃取或窜改通信物理、逻辑链路间接完成攻击行为的网络攻击方法。这种攻击模式通过各种攻击手段入侵控制,或者直接以物理接入方式操控两台通信计算机之间的主机,并通过这台主机达到攻击两台通信计算机中任意一方的目的。这个被攻击者控制的通信节点就是所谓的“中间人”。中间人攻击很早就成为了黑客常用的一种攻击手段,其思想可以追溯到上千年前的古代,春秋战国时期窃符救赵的信陵君,窃取兵符控制军队即是针对魏王与军队之间信息传递方式的典型中间人攻击。在网络通信系统最被被设计出来时,安全因素并没有被考虑到,互联网工程任务组(ietf)设计的arp、dns、dhcp等常用协议都没有考虑网络通信被人恶意窜改的情况,即使在局域网中没有攻击者,只要有个别操作人员错误的配置了网络中的一个非关键结点(如多启动一个dhcp服务器),就有可能影响网络中其它结点的正常网络通信。

这些早期的协议更无法对简单的物理连接改变而可能引发的安全问题进行防御。网络标准的向下兼容性决定了现代网络继承了这些问题,大家依然会被这些问题困扰。严格说起来,中间人攻击算是一种“概念”,它有很多实现方式。进行攻击的黑客,首先要找到网络协议的漏洞,对中间的网络设备进行偷天换日,神不知鬼不觉的把自己替换成网络传输过程必经的中间站,再纪录下特定网段内的数据包。中间人攻击难以防御的地方在于:1)黑客在进行窃听时,一般网络链接仍能正常运行不会断线,故而少有人会主动发现。2)使用者电脑上不会被安装木马或恶意软件,也难以被杀毒软件发现。3)黑客在欺骗网络协议时,虽然可能会留下一些蛛丝马迹,但由于网络设备不会保留太多纪录档案,事后难以追踪。4)绝大多数的网络协议,仍然是基于“对方的数据是安全可靠”的假设来运作的,这导致黑客有太多漏洞可以钻,欺骗网络设备、伪装成中间人。一般来说,因特网的数据型态涉及公开领域与私密领域的数据。未进行保护的私密领域的数据(可称为敏感数据)如同公开领域的数据,可以直接显示真实的数据。因此,在私密领域的数据(后称为敏感数据),大多数网站会选择ssl或tls发送敏感数据,例如账户名称和密码。通过上述的安全协议,可以避免客户端利用浏览器将敏感数据发送到网页服务器的过程中,敏感数据遭到窃取或窜改。然而,当ssl或tls所需的凭证授予遭到破解而无法判断凭证的真假、网络钓鱼网站拦截客户端传输的数据、重放或伪造假数据,导致前述行为远远超出了ssl或tls保护的范围,使得加密的敏感数据仍处于危险的状况。例如如果数据是纯文本且仅受ssl保护,则当ssl被破坏时,或是经过proxy/reverseproxy(代理服务器/反向代理服务器)ssl被解开后,敏感数据将还原成本文未受保护,中间人可以直接使用客户端的敏感数据即可登录网站。再例如,利用安全哈希算法(securehashalgorithm,sha)、md5算法或其他算法对数据进行加密,藉以验证例如用户账号或密码。然而,在这种情况下,中间人不必破解真正的账户名称与密码,只需要重新发送经前述加密演算的账户名称或密码,即有可能通过验证。

可见,现有技术在应对中间人攻击的各种方式中,存在缺陷。



技术实现要素:

鉴于现有技术存在的上述问题,本发明的目的在于提供一种信息加密方法及系统,该方法可以应用于保护敏感数据(例如账户、密码)不被拦截和重新提交。

为了实现上述目的,本发明实施例一方面提供的信息加密方法,用于在根据统一资源定位符在浏览器取得服务器的网页时,抵御中间人攻击,该方法包括:

s1、浏览器根据统一资源定位符发出加密的访问请求;

s2、服务器接收需要解密的所述访问请求,从密钥库加密程序取得公钥,并根据所述访问请求,由服务器产生所述网页对应的程序编码文件;

s3、输出所述程序编码文件至所述浏览器,并在所述程序编码文件中嵌入加密程序、所述公钥及用户身份证明,且所述用户身份证明存储于身份标识数据库,其中用户身份证明包括服务器时间、密钥对索引值与密钥存活时间的字段;

s4、所述浏览器在客户端显示解释呈现所述程序编码文件,接收客户端输入一数据;

s5、以所述程序编码文件中嵌入的所述加密程序根据所述公钥加密所述客户端的数据的至少一部分;

s6、传送经加密的所述数据的至少一部分,及所述公钥和所述用户身份证明,以验证所述数据和/或所述用户身份证明的有效性,如果所述数据和所述用户身份证明有效,则执行步骤s7,否则执行s8;

s7、根据所述公钥取出对应的私钥,并利用所述私钥解密经加密的所述数据;

s8、传送解密的所述数据至所述服务器,以将所述网页回传至所述浏览器;

s9、结束访问请求。

作为优选,其中在步骤s1还包括通过反向代理服务器接收所述访问请求,并将所述访问请求传送至所述服务器。

作为优选,其中在步骤s3还包括通过所述加密程序预先指定所述程序编码文件的一特殊字段并执行。

作为优选,其中所述加密程序的选择与所述客户端的所述特殊字段或所述客户端指定的所述特殊字段相关。

作为优选,其中在步骤s3还包括通过安全散列算法计算所述程序编码文件与所述用户身份证明,以加密所述程序编码文件与所述用户身份证明。

作为优选,其中在步骤s6还包括核验在所述身份标识数据库中存在的所述用户身份证明,且所述用户身份证明仅能使用一次或在所述密钥存活时间内使用。

作为优选,其中在步骤s6还包括判断所述数据是否重复传输。

本发明实施例的另一方面还提供一种信息加密系统,包括一信息加密装置,该装置包括:

密钥库,所述密钥库提供多个公钥与多个私钥,其中所述公钥为随机产生且所述公钥与多个所述私钥对应;

身份标识数据库,其具有一存储器,该存储器存储有用户身份证明;

通讯单元,所述通讯单元连接所述密钥库与身份标识数据库,接收来自于客户端的访问请求;

处理器,其与所述通讯单元通讯连接,所述处理器产生所述用户身份证明,所述处理器配置为根据访问请求从所述密钥库取得至少一个所述公钥,且所述处理器自服务器取得网页、该服务器产生网页对应的一程序编码文件,并在网页对应的程序编码文件嵌入加密程序及所述公钥,所述处理器还配置为解密由所述加密程序根据所述公钥加密来自于客户端的数据的至少一部分,传送经加密的所述数据的至少一部分,所述公钥与所述用户身份证明至处理器,以及该处理器验证所述数据与该用户身份证明是否有效,以确定使以所述私钥解密后的所述数据传送至该服务器;其中所述用户身份证明包括服务器时间、密钥对索引值及密钥存活时间的字段。

作为优选,所述处理器配置为执行一安全散列算法计算所述程序编码文件与所述用户身份证明,以形成加密的程序编码文件及用户身份证明。

作为优选,其中所述加密程序预先选择客户端的所述数据的至少一部分进行加密。

与现有技术相比较,本发明的信息加密方法及系统,可以应用于保护敏感数据(例如账户、密码)不被拦截和重新提交。确保客户端在浏览器、应用程序(app)与网页服务器进行数据交换的过程中,不会被硬件或是软件伪造或重复使用。即使中间人可以盗取到资料,但本发明利用用户身份证明(uid)的服务器时间与密钥存活时间,可以确保一次性的数据不会再次被使用。

应当理解,前面的一般描述和以下详细描述都仅是示例性和说明性的,而不是用于限制本公开。

本申请文件提供本公开中描述的技术的各种实现或示例的概述,并不是所公开技术的全部范围或所有特征的全面公开。

附图说明

图1为本发明的信息加密系统的构成框图。

图2为本发明的信息加密方法的流程图。

具体实施方式

为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,还可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

为了保持本公开实施例的以下说明清楚且简明,本公开省略了已知功能和已知部件的详细说明。

如图1所示,本发明实施例一方面提供的信息加密系统,包括加密装置10,所述加密装置10包括一密钥库12、一身份标识数据库14、一通讯单元16与一处理器18。为便于说明,图1中还示出可能涉及的其他多个组成部分,例如客户端2、浏览器4、网页服务器6与网页8,这些组成部分可通过符合因特网规范的载体(例如网线、光纤等)进行通讯。其中,客户端2指用户;浏览器4的用户可通过例如计算机、平板计算机、手机开启并用来显示例如html或javascript等语言开发的的程序编码文件,浏览器4可例如ie、chrome、safari、firefox、opera及应用程序app等;网页服务器6为用来执行网页8的主机。

密钥库12提供多个公钥122与多个私钥124,其中密钥库12可为内存、服务器、硬盘、软盘、光盘等。公钥122是随机产生且公钥122相关于私钥124。一般而言,每一公钥122对应每一私钥124,以此形成密钥对。

身份标识数据库14具有一存储器142,其中身份标识数据库14也可为内存、服务器、硬盘、软盘、光盘等。存储器142能够存储用户身份证明,用户身份证明一般以四个字段为例说明,字段分别为服务器时间、密钥对索引值、密钥存活时间(或称超时)、验证。其分别地定义如下:

服务器时间:客户端、浏览器或反向代理服务器访问网页服务器6的时间,其时间可为毫秒级。

密钥对索引值:密钥对索引值对应密钥库12中公钥122或私钥124的索引值。

密钥存活时间:用户身份证明(uid)的存活时间(或称有效时间)。举例而言,当用户身份证明被回传至网页服务器6时,其回传的时间大于或等于服务器时间与密钥存活时间,则整个用户身份证明被视为无效的;反之,回传的时间小于服务器时间与密钥存活时间,则整个用户身份证明被视为有效的。

验证:用来验证整个用户身份证明是未经过变造的或是修改的,例如验证可以通过哈希函数打乱数据以建立哈希值,其中哈希值可由随机字母与数字所组成。

因此,上述服务器时间、密钥对索引值、密钥存活时间,在进一步结合哈希值,更可以用来确保用户身份证明具有独特性、唯一性与不可重复性。

通讯单元16连接密钥库12与身份标识数据库14,例如通讯单元16是符合有线通讯规范或是无线通信规范的单向或是双向的端口。通讯单元16能够接收来自于一客户端2的一访问请求。

处理器18连接通讯单元16。处理器18提供数据处理的职能分别地罗列如下:

(1)处理器18产生用户身份证明。举例而言,处理器18执行一算法依照各字段的需求,建立前述所提及的用户身份证明。

(2)处理器18根据访问请求自密钥库12取得公钥122。在另一实施例中,处理器18可以预先地判断访问请求是否具有加密的功能,若访问请求是为加密的,可以预先进行解码。

(3)处理器18自网页服务器6取得网页8,并在网页8嵌入一加密程序与公钥122。在一些实施例中,加密程序可预先选择客户端2的数据的至少一部分进行加密。其中,数据的至少一部分相关于客户端2的敏感数据。选择特定的字段进行加密可以加快运算的速度,且加密字段通常是客户端2主动提供的数据或是cookie内已被储存的数据。

(4)处理器18解密由加密程序根据公钥122而加密来自于客户端2的数据(例如账户名称、密码等),例如经加密之后的账户名称与密码,并非为明文,而是经由加密方式改变的,即经加密后的账户名称与密码已经不同于原先输入的数据。

(5)处理器18验证数据、用户身份证明是否有效,以决定让数据传送至网页服务器6。

(6)处理器18执行安全散列算法,以计算该程序编码文件与该用户身份证明,以形成加密的程序编码文件与用户身份证明。

在实际过程中,客户端2执行计算机(图未示)的浏览器4,并在浏览器4中键入例如某银行的统一资源定位符(或称网址,url)。浏览器4根据网址对网页服务器6发出访问请求,于本实施例中,访问请求首先会被处理器18接收。

处理器18可能会预先判断访问请求是否经过加密,若访问请求是加密的,处理器18会先进行解密,进而处理器18执行两个步骤,其中一个步骤是根据访问请求连接至访问请求所对应的网页服务器6,另一步骤是处理器18根据访问请求向密钥库12随机地取得公钥122,例如处理器18根据随机函数产生一索引值,以及处理器18根据索引值在密钥库12取得对应的公钥122。因此,处理器18取得索引值对应的公钥122。

处理器18等待网页服务器6的网页8的取得网页服务器6之网页8的程序编码文件。在处理器18接收到程序编码文件之后,处理器18进一步在程序编码文件加入加密程序加密程序与公钥122。此外,处理器18又根据程序编码文件、加密程序加密程序、公钥122产生一用户身份证明,以及程序编码文件、加密程序、公钥122、用户身份证明都被传送至浏览器4。值得注意的是,加密程序预先设定有针对客户端2的账户名称与密码进行加密的设定。用户身份证明被储存至身份标识数据库14。

客户端2可以通过浏览器4查看银行的网页8,例如网页8显示一对话框,使客户端2可以输入欲登录的账户名称、密码、验证码、身份证号码等。其中,网页8除了上述的内容之外,还可包含加密程序、公钥122、用户身份证明等内容。

客户端2在浏览器4键入对应的账户名称与密码等的数据。此时,浏览器4根据客户端2的数据,执行加密程序,加密程序是基于公钥122而进行演算的。再者,由于加密程序预先设定仅会对账户名称与密码进行加密,因此,客户端2输入的账户名称与密码都经过加密,而非明文,其不同于客户端2输入的内容。

此时,加密的数据、公钥、用户身份证明等由浏览器4传送至处理器18。处理器18首先确认,用户身份证明是否存在于身份标识数据库14,若身份标识数据库14不存在相同的用户身份证明,则结束传送数据至网页服务器6;反之,若身份标识数据库14确实存在相同的用户身份证明,则处理器18可能进一步判断客户端2是否曾经有发送过相同的用户身份证明。

若未发送过用户身份证明,则表示用户身份证明是第一次发送。处理器18进一步判断网页服务器6接收到用户身份证明的时间是否小于服务器时间与密钥存活时间的总和,则用户身份证明应被视为有效的,可当做是客户端2登录;反之,用户身份证明的时间大于服务器时间与密钥存活时间的总和,则用户身份证明被视为无效的,其有可能被中间人拦截,则这个用户身份证明很有可能是中间人进行重放的动作,则用户身份证明被视为无效的。于本实施例中,若用户身份证明属于无效的,则在浏览器4显示错误页面。

若用户身份证明属于有效的,处理器18解析公钥122,以及自密钥库12根据公钥122取得私钥124,处理器18进一步根据私钥124解密数据,并将数据传送至网页服务器6,此时的账户名称与密码解密成客户端2输入的明文。网页服务器6根据明码的账户名称与密码,取得对应的账户资料。最终,账户数据通过程序编码文件的形式输出在浏览器4。

如图2所示,本发明另一实施例提供的信息加密方法,包括:步骤s1,浏览器根据统一资源定位符发出一访问请求。于另一实施例中,本步骤可包含一反向代理服务器(reverseproxy)接收访问请求以及向代理服务器将访问请求传送至服务器。

步骤s2,服务器接收需要解密的访问请求,从密钥库取得公钥,以及根据访问请求,服务器输出网页对应的一程序编码文件。

步骤s3,在程序编码文件嵌入一加密程序与公钥,并产生一用户身份证明,且用户身份证明储存在一身份标识数据库。其中,用户身份证明至少包含一服务器时间与一密钥存活时间的字段。于另一实施例中,加密程序可预先指定程序编码文件的一特殊字段执行。其中,加密程序选择相关于客户端的特殊字段或客户端指定的特殊字段。

于另外一实施例中,还可以利用一安全散列算法计算程序编码文件与用户身份证明,以加密程序编码文件与用户身份证明。

步骤s4,浏览器在客户端显示程序编码文件,以供客户端输入一数据。

步骤s5,加密程序根据公钥加密客户端的数据的至少一部分。

步骤s6,验证数据与用户身份证明的有效性,若数据与用户身份证明是有效的,则执行步骤s7,若数据与用户身份证明是无效的,则执行步骤s9。举例而言,在身份标识数据库存在用户身份证明,且用户身份证明仅能使用一次、在密钥存活时间内使用或判断数据是否重复传输。

步骤s7,根据公钥取出对应的一私钥,并利用私钥解密经加密的数据。

步骤s8,传送解密的数据至服务器,以将网页回传至浏览器。

步骤s9,结束访问请求。

当然,以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1