一种基于RESTful的安全登陆认证方法

文档序号:7822546阅读:997来源:国知局
一种基于RESTful的安全登陆认证方法
【专利摘要】本发明涉及一种基于RESTful的安全登陆认证方法,该方法基于RESTful架构,将非对称加密算法和加密算法结合运用在整个通信过程中,对客户端和服务器之间的通信数据进行加密,并在安全连接建立后通过唯一的token进行之后的认证。与现有技术相比,本发明对客户端和服务器之间的通信数据进行加密,保证用户数据不被拦截而被非法用户截获,直接获取token进行认证伪造;保证用户在进行登陆认证时,数据内容全是加密不可见的;维护数据完整性,确保数据在传送过程中不被改变。
【专利说明】一种基于RESTfu I的安全登陆认证方法

【技术领域】
[0001]本发明涉及一种登陆方法,尤其是涉及一种基于RESTful的安全登陆认证方法。

【背景技术】
[0002]REST描述了一种架构样式的网络系统。REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用或设计就是RESTful。Web应用程序最重要的REST原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。在服务器端,Web应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。每个资源都使用URL (Universal ResourceIdentifier)得到一个唯一的地址。所有资源都可以共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的HTTP方法,如GET、PUT、POST、DELETE。另一个重要的REST原则是分层系统,这表示组件无法了解它与交互的中间层以外的组件。通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。当REST架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST简化了客户端和服务端的实现。REST架构因其简单性和便捷性受到越来越多的企业的青睐,特别是无状态请求可以由任何可用服务器回到,这十分适合云计算之类的环境。随着云计算和移动计算的兴起,许多企业构建了许多基于REST架构的Web应用程序,并把这些资源共享在互联网上供大家使用。也有一些互联网企业提供一些公共的服务如云存储供大家存放数据和一些个人信息。由于大都数这种应用程序都是基于无状态标准的HTTP协议,常见的sess1n认证方法已经无法满足现今Web应用复杂场景的需求,随之而来带来了安全性的隐患,也使大家对于使用公共云服务器越来越担忧。如2011年的CSDN账号密码泄露事件和2014的美国苹果公司的icoud账号泄露事件,种种事件表明需要一种安全、可靠的技术方案去防范这些事情的再次发生,从而保护使用者的隐私泄露,从而给企业和用户带来无法估量损失。
[0003]HTTP协议是无状态的,对用户进行认证也可以有多种办法。一是使用存储在客户端本地的cookie认证信息,每次客户端与服务器之间的交互请求,都必须包含所需要的cookie认证信息,服务器在收到其认证信息后,需要验证其cookie信息是否有效才能访问资源。二是每次客户端和服务器之间交互请求前,首先需要用户提供用户和密码,服务器在收到信息后,生成一个唯一的token,以后的每次请求,都要求用户带上这个唯一的token。
[0004]这两种认证方式都很大的安全隐患,cookie和token都能被中间人进行攻击,中间人截获到cookie或token都能够进行replay攻击。如果能在对请求的数据进行加密,并记录其IP信息来源,根据这些信息来保证每次会话的安全性和唯一可靠性,就能有效的提高其安全性,保证用户信息的安全。


【发明内容】

[0005]本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于RESTful的安全登陆认证方法,该方法基于RESTful架构,将非对称加密算法和加密算法结合运用在整个通信过程中,对客户端和服务器之间的通信数据进行加密,并在安全连接建立后通过唯一的token进行之后的认证,防范!■印lay攻击,提高数据安全性,保障用户个人权益。
[0006]本发明的目的可以通过以下技术方案来实现:
[0007]一种基于RESTful的安全登陆认证方法,其特征在于,包括以下步骤
[0008](I)客户端向服务器传送客户端SSL协议的版本号,以及可支持的加密算法的种类;
[0009](2)服务器核对客户端的SSL协议的版本号后选出服务器和客户端均支持的加密算法,并且将选出的加密算法、服务器证书和服务器公钥一起发送给客户端;
[0010](3)客户端利用服务器传来的服务器证书验证服务器的合法性,如非法则断开连接;如合法则进行步骤(4);
[0011](4)客户端随机产生一个用于后续通信的“通信密钥”,然后用服务器的公钥对“通信密钥”进行加密并将加密的“通信密钥”传给服务器;
[0012](5)服务器接到加密的“通信密钥”并用自己的密钥将其解密并获得“通信密钥”;
[0013](6)客户端用“通信密钥”加密一条握手完成消息表明客户端并发送给服务器;
[0014](7)服务器用“通信密钥”解开步骤(6)中的所述的握手完成消息并用“通信密钥”加密一条握手完成消息回复给客户端;
[0015](8)客户端向服务器发送由“通信密钥”加密的用户名和密码;
[0016](9)服务器收到后检查客户端的URL唯一性,并根据传送过来的用户名和密码,生成唯一的token并返回给客户端。
[0017]所述的步骤(3)中客户端利用服务器传来的服务器证书验证服务器的合法性具体为:若以下判断条件中任意一条结果为否则判断其为非法,否则即为合法,其中判断条件具体为:所述证书是否过期,发行服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。
[0018]如果服务器端要对客户端的合法性进行验证,则所述步骤(4)中客户端将加密后的“通信密钥”发送的同时还需一并发送自己的证书,所述步骤(5)中服务器将对客户端证书的合法性进行验证。
[0019]所述的服务器将对客户端证书的合法性进行验证具体为:若以下判断条件中任意一条结果为否则判断其为非法,否则即为合法,其中判断条件具体为:
[0020]客户端的证书使用日期是否有效,为客户端提供证书的CA是否可靠,发行CA的公钥能否正确解开客户端证书的发行CA的数字签名,检查客户端的证书是否在证书废止列表中。
[0021]所述的客户端和服务器之间所有的数据交互,运行在使用可信的CA签名过的证书的HTTP之上。
[0022]与现有技术相比,本发明具有以下效果:
[0023]1.对客户端和服务器之间的通信数据进行加密,保证用户数据不被拦截而被非法用户截获,直接获取token进行认证伪造。
[0024]2.保证用户在进行登陆认证时,数据内容全是加密不可见的。
[0025]3.维护数据完整性,确保数据在传送过程中不被改变。

【专利附图】

【附图说明】
[0026]图1为本发明通信消息流程图。

【具体实施方式】
[0027]下面结合附图和具体实施例对本发明进行详细说明。
[0028]实施例
[0029]在本发明中,需要使用第三方工具生成证书和密钥。
[0030]客户端首先需要获取非对称加密的公钥,服务器端存放私钥。并且在传输数据时,使用公钥对数据进行加密,防止数据被第三方用户截获,修改和截获。如图1所示,本发明具体通信过程如下:
[0031]1.客户端的在请求数据时,首先向服务器传送客户端的SSL协议的版本号以及加密算法的种类和随机数。
[0032]2.服务端向客户端传送SSL协议的版本号以及加密算法的种类和随机数,同时还将向客户端传送自己的证书。
[0033]3.客户端通过服务端传过来的信息,验证服务端的合法性和可靠性,如果验证通过,则执行第4步,否则断开连接。
[0034]4.客户端产生一个后面通讯的“通信密码”,然后用服务器的公钥对其加密,然后将加密的“通信密码”传给服务器。后续的通信,双方都是用这个“通信密码”对SSL协议的安全数据通讯的加密解密通讯。
[0035]5.客户端和服务器使用SSL协议和“通信密码”建立完成后,客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤5的主密码为对称密钥,同时通知服务器客户端的握手过程结束。客户端再请求登陆认证,在请求数据时,需要用户输入用户名和密码,并使用HTTP协议传送数据;服务端收到数据后检查客户端的URL唯一性,并根据传送过来的用户名和密码,生成唯一的token,并返回给客户端。客户端后面的每次请求,都需要带上这个唯一的token。保证客户端的每次请求都能通过。
[0036]客户端向服务器发送一个开始信息“Hello”已便开始一个新的会话连接;服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;客户端根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;服务器恢复该主密钥,并返回给客户端一个用主密钥认证的信息,以此让客户端认证服务器。
[0037]经认证的服务器发送一个提问给客户端,客户端则返回数字签名后的提问和其公开密钥,从而向服务器提供认证。
[0038]客户端和服务器之间所有的数据交互,必须运行在使用可信的CA签名过的证书的HTTP之上。所有客户端与服务端交互之间必须要验证服务端证书。通过使用由可信机构签名的证书,SSL可以保护用户免受“中间人”攻击。中间人攻击的手段是在客户端和服务端之间插入一个代理进而窃听“加密的”通信。如果你不验证服务端的SSL证书,你就无法知道谁在接收你的HTTP查询请求。
【权利要求】
1.一种基于RESTful的安全登陆认证方法,其特征在于,包括以下步骤 (1)客户端向服务器传送客户端SSL协议的版本号,以及可支持的加密算法的种类; (2)服务器核对客户端的SSL协议的版本号后选出服务器和客户端均支持的加密算法,并且将选出的加密算法、服务器证书和服务器公钥一起发送给客户端; (3)客户端利用服务器传来的服务器证书验证服务器的合法性,如非法则断开连接;如合法则进行步骤(4); (4)客户端随机产生一个用于后续通信的“通信密钥”,然后用服务器的公钥对“通信密钥”进行加密并将加密的“通信密钥”传给服务器; (5)服务器接到加密的“通信密钥”并用自己的密钥将其解密并获得“通信密钥”; (6)客户端用“通信密钥”加密一条握手完成消息表明客户端并发送给服务器; (7)服务器用“通信密钥”解开步骤¢)中的所述的握手完成消息并用“通信密钥”加密一条握手完成消息回复给客户端; (8)客户端向服务器发送由“通信密钥”加密的用户名和密码; (9)服务器收到后检查客户端的URL唯一性,并根据传送过来的用户名和密码,生成唯一的token并返回给客户端。
2.根据权利要求1所述的一种基于RESTful的安全登陆认证方法,其特征在于,所述的步骤(3)中客户端利用服务器传来的服务器证书验证服务器的合法性具体为:若以下判断条件中任意一条结果为否则判断其为非法,否则即为合法,其中判断条件具体为:所述证书是否过期,发行服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。
3.根据权利要求1所述的一种基于RESTful的安全登陆认证方法,其特征在于,如果服务器端要对客户端的合法性进行验证,则所述步骤(4)中客户端将加密后的“通信密钥”发送的同时还需一并发送自己的证书,所述步骤(5)中服务器将对客户端证书的合法性进行验证。
4.根据权利要求3所述的一种基于RESTful的安全登陆认证方法,其特征在于,所述的服务器将对客户端证书的合法性进行验证具体为:若以下判断条件中任意一条结果为否则判断其为非法,否则即为合法,其中判断条件具体为: 客户端的证书使用日期是否有效,为客户端提供证书的CA是否可靠,发行CA的公钥能否正确解开客户端证书的发行CA的数字签名,检查客户端的证书是否在证书废止列表中。
5.根据权利要求1所述的一种基于RESTful的安全登陆认证方法,其特征在于,所述的客户端和服务器之间所有的数据交互,运行在使用可信的CA签名过的证书的HTTP之上。
【文档编号】H04L29/06GK104486325SQ201410756523
【公开日】2015年4月1日 申请日期:2014年12月10日 优先权日:2014年12月10日
【发明者】周孟杰 申请人:上海爱数软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1