CN104753674B - 一种应用身份的验证方法和设备 - Google Patents

一种应用身份的验证方法和设备 Download PDF

Info

Publication number
CN104753674B
CN104753674B CN201310752998.6A CN201310752998A CN104753674B CN 104753674 B CN104753674 B CN 104753674B CN 201310752998 A CN201310752998 A CN 201310752998A CN 104753674 B CN104753674 B CN 104753674B
Authority
CN
China
Prior art keywords
application
information
server
security component
hmac
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310752998.6A
Other languages
English (en)
Other versions
CN104753674A (zh
Inventor
王在方
孙悦
蔡准
赵军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201310752998.6A priority Critical patent/CN104753674B/zh
Publication of CN104753674A publication Critical patent/CN104753674A/zh
Application granted granted Critical
Publication of CN104753674B publication Critical patent/CN104753674B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明实施例公开了一种应用身份的验证方法和设备,通过应用本发明实施例所提出的技术方案,根据应用的程序文件的内容确定HMAC信息,并据此进行认证,并将认证成功的HMAC信息保存在服务器中,从而创建相应的白名单,当需要进行云端服务请求时,则根据当前的HMAC信息向服务器进行服务请求,只有在服务器根据HMAC信息判定该应用合法的情况下,才会为该应用提供相应的云端服务,从而,能够准确的识别到应用内容的变化,防止因为应用篡改而导致服务被恶意使用,并且,由于HMAC信息的传输和存储都是不可见的过程,因此,保证了应用身份识别的准确性和有效性。

Description

一种应用身份的验证方法和设备
技术领域
本发明涉及通信技术领域,尤其涉及一种应用身份的验证方法和设备。
背景技术
面向智能手机应用开发者提供开放服务的平台运营商,对于基于其SDK(SoftwareDevelopment Kit,软件开发工具包)二次开发并发布的手机应用软件,经常需要识别请求服务的应用的身份来源,包括应用的身份和每个应用运行实例的身份。这样一方面可以对自身服务的使用情况进行统计,另一方面也可以通过服务器端访问鉴权,防止高价值或者敏感服务被非授权使用。
一种较为普遍的智能手机应用软件身份识别做法,是要求开发者在服务商处注册应用,获取服务商提供唯一的识别信息(APP ID)。应用将APP ID以及与之对应的密钥保存在手机上,并且在调用服务时提供。服务商根据这些信息判断服务调用请求是否来自授权的应用。如谷歌地图SDK、新浪微博SDK等产品,都采用类似的方法对应用进行授权。
对智能手机应用软件安装/运行实例识别的通常做法,包括:
(1)、采集手机设备的标识信息,如IMEI(International Mobile EquipmentIdentification Number,国际移动设备识别码)。
(2)使用***提供的其他设备唯一性标识,如Windows Phone平台提供的ASHWID(App Specific Hardware ID,应用程序特定硬件标识符),iOS***中的UDID(UniqueDevice ID,唯一设备标识符)。
(3)使用自定义UUID。
在实现本发明的过程中,发明人发现现有技术中至少存在以下问题:
基于APP ID和密钥的应用识别技术,主要缺点在于:
(1)无法识别被破解的应用:应用被破解后,APP ID和密钥都正确,但是逻辑发生变化成为了恶意应用,服务器侧无法识别出这些应用,因而无法避免服务能力被攻击者盗用。
(2)安全性在某些应用场合不够,APP ID和密钥对开发者完全可见,虽然可以通过一定的混淆、加密保护真正的APP ID和密钥,由于其必须显示传递给SDK,导致破解难度不高。
发明内容
本发明实施例的目的在于提供一种应用身份的验证方法和设备,可以基于HMAC信息精确识别应用的合法性。
为了达到上述目的,本发明实施例提供了一种应用身份的验证方法,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述方法包括:
当所述终端设备上的一个应用启动时,所述安全组件根据所述应用的程序文件,确定所述应用所对应的当前HMAC信息;
所述安全组件根据所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息,向所述服务器进行所述应用的认证;
所述安全组件识别认证结果,如果认证成功,所述安全组件为所述应用保存相应的认证参数和认证HMAC信息;
当所述应用需要向所述服务器发起云端服务请求时,所述安全组件判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致;
如果一致,所述安全组件根据所述当前HMAC信息和所述认证参数向所述服务器发送云端服务请求,以使所述服务器在确认所述应用合法的情况下,向所述应用提供相应的云端服务。
另一方面,本发明实施例还提供了一种安全组件,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述安全组件包括:
确定模块,用于在所述终端设备上的一个应用启动时,根据所述应用的程序文件,确定所述应用所对应的当前HMAC信息;
认证模块,用于根据所述确定模块所确定的当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息,向所述服务器进行所述应用的认证;
识别模块,用于识别所述服务器返回的认证结果,如果认证成功,为所述应用保存相应的认证参数和认证HMAC信息;
判断模块,用于在所述应用需要向所述服务器发起云端服务请求时,判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致;
请求模块,用于在所述判断模块的判断结果为一致时,根据所述当前HMAC信息和所述认证参数向所述服务器发送云端服务请求,以使所述服务器在确认所述应用合法的情况下,向所述应用提供相应的云端服务。
另一方面,本发明实施例还提供了一种服务器,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述服务器包括:
存储模块,用于根据认证成功的HMAC信息,及其所对应的应用身份信息,保存HMAC信息的白名单,并记录相应的设备身份信息
认证模块,用于接收所述安全组件发送的携带了当前HMAC信息,终端设备的身份信息,以及应用的身份信息的认证请求,并根据查询所述存储模块所存储的HMAC信息的白名单中是否存在相应的HMAC信息;
处理模块,用于在所述认证模块的查询结果为是时,生成认证参数,并携带在认证成功消息中发送给所述安全组件,或在所述认证模块的查询结果为否时,向所述安全组件发送认证失败消息;
验证模块,用于接收所述安全组件根据当前HMAC信息和认证参数所发送云端服务请求,并根据所述当前HMAC信息和认证参数确认所述应用是否合法,并在所述验证模块验证成功的情况下,向所述应用提供相应的云端服务。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例所提出的技术方案,根据应用的程序文件的内容确定HMAC信息,并据此进行认证,并将认证成功的HMAC信息保存在服务器中,从而创建相应的白名单,当需要进行云端服务请求时,则根据当前的HMAC信息向服务器进行服务请求,只有在服务器根据HMAC信息判定该应用合法的情况下,才会为该应用提供相应的云端服务,从而,能够准确的识别到应用内容的变化,防止因为应用篡改而导致服务被恶意使用,并且,由于HMAC信息的传输和存储都是不可见的过程,因此,保证了应用身份识别的准确性和有效性。
附图说明
图1为本发明实施例所提出的一种应用身份的验证方法的流程示意图;
图2为本发明实施例所提出的一种具体应用场景中的应用身份的验证方法的流程示意图;
图3为本发明实施例所提出的一种面向手机应用云服务商的安全保护***的结构示意图;
图4为本发明实施例所提出的一种安全组件的结构示意图;
图5为本发明实施例所提出的一种服务器的结构示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提出了一种应用身份的验证方法,主要对手机应用的身份进行识别,判断应用是否通过了授权的应用。技术方案主要基于对手机应用软件的程序文件计算HMAC,由于手机应用软件在发布后,程序文件内容保持不变,因而针对所有程序文件内容计算的HMAC内容也是唯一的。一旦程序文件内容被改动,其HMAC值必然发生变化。将计算出的HMAC值加密后和APPID一起传输到服务器端,服务器端根据HMAC值白名单,可以判断出应用是否已经被修改,从而决定是否对应用的服务调用请求进行授权。HMAC值的计算、存储和传输,对于手机应用使用者、手机应用开发者都不可见,从而保证了手机应用身份识别的准确性和有效性。本提案也包括了安全存储、安全传输该HMAC值的方法。
为了达到上述目的,本发明实施例提供了一种应用身份的验证方法,如图1所示,为本发明实施例提供的应用身份的验证方法的流程示意图,该方法应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述方法包括:
步骤S101、当所述终端设备上的一个应用启动时,所述安全组件根据所述应用的程序文件,确定所述应用所对应的当前HMAC信息。
步骤S102、所述安全组件根据所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息,向所述服务器进行所述应用的认证。
在实际的应用场景中,在本步骤具体包括:
所述安全组件判断当前是否存在所述应用所对应的有效的认证参数。
当判断结果为是,并且所述安全组件判断当前没有保存所述应用所对应的认证成功标记时,或者当判断结果为否时,所述安全组件向所述服务器发送所述应用的认证请求,所述认证请求中至少包括所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息。
具体的,本步骤完成之后,所述服务器根据所述应用的身份信息查询本地保存的HMAC信息的白名单,判断是否存在与所述当前HMAC信息,以及所述终端设备的身份信息相一致的信息,如果存在,所述服务器生成认证参数,并携带在认证成功消息中发送给所述安全组件,如果不存在,所述服务器向所述安全组件发送认证失败消息。
当判断结果为是,并且所述安全组件判断当前保存了所述应用所对应的认证成功标记时,所述安全组件判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致,如果一致,则确认本次初始化成功,如果不一致,则用所述当前HMAC信息替换所述认证HMAC信息,并确认本次初始化失败。
步骤S103、所述安全组件识别认证结果。
如果认证成功,则执行步骤S104。
如果认证结果为认证失败,所述安全组件清空本地保存的认证参数和当前HMAC信息以及认证HMAC信息。
步骤S104、所述安全组件为所述应用保存相应的认证参数和认证HMAC信息。
具体的应用场景中,本步骤的处理包括:
所述安全组件为所述应用保存相应的认证参数,将所述当前HMAC消息保存为认证HMAC信息,并添加认证成功的标记
步骤S105、当所述应用需要向所述服务器发起云端服务请求时,所述安全组件判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致。
具体的,在本步骤之前,还包括:
所述安全组件判断本地存储的认证参数是否有效;
如果认证参数无效,或者本地没有保存初始化成功的标记,则确认请求失败;
如果认证参数有效,并且本地保存有初始化成功的标记,所述安全组件判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致。
如果一致,则执行步骤S106;
如果不一致,所述安全组件确认请求失败。
步骤S106、所述安全组件根据所述当前HMAC信息和所述认证参数向所述服务器发送云端服务请求,以使所述服务器在确认所述应用合法的情况下,向所述应用提供相应的云端服务。
具体的,本步骤的处理过程包括:
所述安全组件根据所述当前HMAC信息和所述认证参数生成令牌;
所述安全组件向所述服务器发送携带所述令牌的云端服务请求;
所述安全组件接收所述服务器在根据所述令牌确认所述应用合法的情况下所返回的数据信息,并将所述数据信息发送给所述应用;或,
所述安全组件接收所述服务器在根据所述令牌确认所述应用非法的情况下所返回的请求失败消息,并将请求失败的结果反馈给所述应用。
上述技术方案的描述中提出了在安全组件侧的处理流程,相应的,进一步对服务器侧的处理过程进行说明如下:
所述服务器根据认证成功的HMAC信息,及其所对应的应用身份信息,保存HMAC信息的白名单,并记录相应的设备身份信息;
当所述服务器接收到所述安全组件发送的携带了当前HMAC信息,终端设备的身份信息,以及应用的身份信息的认证请求时,所述服务器根据所述应用的身份信息查询本地保存的HMAC信息的白名单,判断是否存在与所述当前HMAC信息,以及所述终端设备的身份信息相一致的信息;
如果存在,所述服务器生成认证参数,并携带在认证成功消息中发送给所述安全组件,或,如果不存在,所述服务器向所述安全组件发送认证失败消息;
当所述服务器接收到所述安全组件根据当前HMAC信息和认证参数所发送云端服务请求时,所述服务器根据所述当前HMAC信息和认证参数确认所述应用是否合法,如果合法,则向所述应用提供相应的云端服务。
在具体的应用场景中,所述服务器根据所述当前HMAC信息和认证参数确认所述应用是否合法的处理过程,具体包括以下步骤:
所述服务器接收所述安全组件所发送的携带令牌的云端服务请求,其中,所述令牌是由所述安全组件根据所述当前HMAC信息和所述认证参数生成的;
所述服务器根据所述令牌中的信息,结合所存储的HMAC信息的白名单,判断所述应用是否合法;
如果合法,则所述服务器将所述云端服务请求所对应的数据发送给所述安全组件;
如果不合法,则所述服务器向所述安全组件发送请求失败消息。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例所提出的技术方案,根据应用的程序文件的内容确定HMAC信息,并据此进行认证,并将认证成功的HMAC信息保存在服务器中,从而创建相应的白名单,当需要进行云端服务请求时,则根据当前的HMAC信息向服务器进行服务请求,只有在服务器根据HMAC信息判定该应用合法的情况下,才会为该应用提供相应的云端服务,从而,能够准确的识别到应用内容的变化,防止因为应用篡改而导致服务被恶意使用,并且,由于HMAC信息的传输和存储都是不可见的过程,因此,保证了应用身份识别的准确性和有效性。
下面以具体的实施例对上述技术方案的处理过程做详细的阐述,但并不局限于下述实施例。
本发明实施例所提出的技术方案主要确保在开发者开发的手机应用进行服务请求之前,首先进行手机应用身份认证,只有通过了身份认证的手机应用,才可以使用服务器提供的云端服务。
身份认证通过提供给手机应用开发者的终端侧SDK以及服务器端的鉴权模块实现,其流程示意图如图2所示。
为了更加清楚地对本发明实施例所提出的技术方案进行说明,可以将上述的处理过程划分为两个阶段,分别进行说明。
第一阶段、初始化阶段。
在开发者开发的手机应用调用云端服务之前,必须首先进行初始化。
初始化的目的是从服务端获取一个认证参数(seed),用于计算向服务器进行服务请求时所需要的令牌(Token)。
步骤S201、调用SDK的初始化处理接口,对当前的SDK进行初始化。
步骤S202、SDK计算当前的程序文件的HMAC。
在初始化的最初,SDK遍历手机应用软件的安装目录下的程序文件,按字母顺序分别计算各程序文件的HMAC(使用HMAC-SHA-256算法,计算所需要的密钥来自SDK预置),然后将各HMAC拼接起来再次计算得到最终的HMAC,保存到内存中供后续流程使用。在应用软件每次启动后,HMAC只计算一次,将计算结果保存在内存,可避免重复计算的开销。
步骤S203、除计算HMAC外,SDK还要检查认证参数(Seed)的有效性。
如果有效,则执行步骤S204;
如果Seed过期或者不存在,则需要执行步骤S205,向服务器发起网络认证请求。
步骤S204、SDK判断当前是否已经保存了初始化成功的标记。
如果判断结果为否,则需要执行步骤S205,向服务器发起网络认证请求,进行认证;
如果判断结果为是,则执行步骤S208。
步骤S205、SDK发起网络认证请求。
发起网络认证请求的目的是请求服务器认证应用身份并发回Seed。因为认证请求的参数包含设备ID、设备信息、MAC等敏感信息,需要对请求的消息进行带时间戳加密,并对这些参数计算HMAC,防止消息被窃听、篡改或重放。
步骤S206、服务器收到请求后,根据APPID获知其APPKEY,然后校验参数的HMAC值,如果不一致则丢弃请求返回失败,否则,继续检查应用HMAC白名单中,是否存在和APPID、设备信息、MAC一致的条目。
如果不存在则返回失败,否则生成Seed并加密返回。
步骤S207、SDK检查接收到的服务器返回的响应。
如果是接收到标记为成功的认证请求响应,SDK使用APPKEY加密保存Seed,加密保存应用HMAC,并对该HMAC设置初始化成功的标记,并确认本次初始化成功。
如果是接收到标记为失败的认证请求响应,SDK则直接清空本地Seed和HMAC,并确认本次初始化失败。
步骤S208、SDK将本次计算得到的HMAC与标记为初始化成功的HMAC进行比较。
如果比较结果为一致,则确认本次初始化成功。
如果比较结果为不一致,则用本次计算得到的HMAC代替之前保存的标记为初始化成功的HMAC,并确认本次初始化失败。
第二阶段、云端服务请求阶段。
步骤S209、手机应用在请求云端服务时,需要调用SDK提供的云端服务调用接口:
步骤S210、SDK首先检查Seed有效性,确认经过了正确的初始化。
如果Seed无效,或者没有初始化成功的标记,则返回失败,提醒应用程序再次调用初始化处理接口。
如果Seed有效,并且存在初始化成功的标记,则继续执行步骤S211。
步骤S211、SDK检查HMAC值是否和认证成功后保存的数值一致。
如果不一致,说明程序或者本地数据遭到破坏,应用可能遭到攻击,SDK直接向应用反馈请求失败。
如果一致,则执行步骤S212。
步骤S212、SDK发起云端服务请求。
对于Seed和HMAC值都有效的云端服务请求,为其计算令牌(基于Seed,时间戳,请求计数器,应用名称等信息,使用APPKEY加密),向云端服务器发起服务调用请求。
步骤S213、云端服务器校验令牌。
如果校验通过,则为服务请求返回相应的数据。
如果校验不通过,则返回请求失败的处理结果。
步骤S214、SDK接收云端服务器返回的处理结果。
如果处理结果表示云端服务请求成功,则提取相应的数据反馈给应用,当前云端服务请求成功。
如果处理结果表示云端服务请求失败,则向应用反馈当前云端服务请求失败的结果。
基于上述方法,实现了一个面向手机应用云服务商的安全保护***,为其提供的服务提供安全保护,如图3所示,为本发明实施例所提出的一种面向手机应用云服务商的安全保护***的结构示意图。
该安全***包括手机端安全组件(以SDK形式提供),以及云端应用身份认证***。
手机端安全组件以SDK形式提供给开发者,以库形式供开发者开发的应用调用。安全组件实现AES、HMAC等算法,实现数据的安全存储,应用的完整性计算和本地校验,实现和服务器端的安全通信。
服务器端以安全认证模块的形式存在于云端服务器上,可以部署在单独的Web容器内,也可以集成进云端服务提供商的服务器。
安全认证模块主要实现的功能分布包括以下几个方面。
(1)APPKEY管理。
当服务器为应用生成APPID时,生成APPKEY。将APPKEY加密保存到SDK中,以白盒加密算法进行数据加密。
(2)Seed的生命周期管理。
当手机端安全组件发起初始化/应用认证请求时,为应用生成和设备ID唯一对应的Seed,并设定有效期。Seed失效后,基于其计算出的Token自动失效。
(3)Token的生成和校验。
手机端安全组件收到Seed后,依据一定的算法结合设备ID、时间戳、请求计数等信息,为每次请求生成不同的Token,实现一次一密。
(4)手机应用HMAC白名单管理。
为每个调用能力的应用,维护HMAC白名单。允许一个应用拥有多个HMAC。
对于具体的应用场景,在上述的安全***中,手机端安全组件和安全认证模块的通信可以基于HTTP协议来实现。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例所提出的技术方案,根据应用的程序文件的内容确定HMAC信息,并据此进行认证,并将认证成功的HMAC信息保存在服务器中,从而创建相应的白名单,当需要进行云端服务请求时,则根据当前的HMAC信息向服务器进行服务请求,只有在服务器根据HMAC信息判定该应用合法的情况下,才会为该应用提供相应的云端服务,从而,能够准确的识别到应用内容的变化,防止因为应用篡改而导致服务被恶意使用,并且,由于HMAC信息的传输和存储都是不可见的过程,因此,保证了应用身份识别的准确性和有效性。
为了实现上述的技术方案,本发明实施例还提供了一种安全组件,其结构示意图如图4所示,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述安全组件包括:
确定模块41,用于在所述终端设备上的一个应用启动时,根据所述应用的程序文件,确定所述应用所对应的当前HMAC信息;
认证模块42,用于根据所述确定模块41所确定的当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息,向所述服务器进行所述应用的认证;
识别模块43,用于识别所述服务器返回的认证结果,如果认证成功,为所述应用保存相应的认证参数和认证HMAC信息;
判断模块44,用于在所述应用需要向所述服务器发起云端服务请求时,判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致;
请求模块45,用于在所述判断模块44的判断结果为一致时,根据所述当前HMAC信息和所述认证参数向所述服务器发送云端服务请求,以使所述服务器在确认所述应用合法的情况下,向所述应用提供相应的云端服务。
其中,所述认证模块42,还用于:
判断当前是否存在所述应用所对应的有效的认证参数;
当判断结果为是,并且当前没有保存所述应用所对应的认证成功标记时,或者当判断结果为否时,向所述服务器发送所述应用的认证请求,所述认证请求中至少包括所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息;
当判断结果为是,并且当前保存了所述应用所对应的认证成功标记时,判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致,如果一致,则确认本次初始化成功,如果不一致,则用所述当前HMAC信息替换所述认证HMAC信息,并确认本次初始化失败。
进一步的,所述识别模块43,具体用于:
如果认证结果为认证成功,为所述应用保存相应的认证参数,将所述当前HMAC消息保存为认证HMAC信息,并添加认证成功的标记;
如果认证结果为认证失败,清空本地保存的认证参数和当前HMAC信息以及认证HMAC信息。
优选的,所述判断模块44,具体用于:
判断本地存储的认证参数是否有效;
如果认证参数无效,或者本地没有保存初始化成功的标记,则确认请求失败;
如果认证参数有效,并且本地保存有初始化成功的标记,则判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致。
在具体的应用场景中,所述请求模块45,具体用于:
根据所述当前HMAC信息和所述认证参数生成令牌;
向所述服务器发送携带所述令牌的云端服务请求;
接收所述服务器在根据所述令牌确认所述应用合法的情况下所返回的数据信息,并将所述数据信息发送给所述应用;或,
接收所述服务器在根据所述令牌确认所述应用非法的情况下所返回的请求失败消息,并将请求失败的结果反馈给所述应用。
进一步的,本发明实施例还提供了一种服务器,其结构示意图如图5所示,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述服务器包括:
存储模块51,用于根据认证成功的HMAC信息,及其所对应的应用身份信息,保存HMAC信息的白名单,并记录相应的设备身份信息
认证模块52,用于接收所述安全组件发送的携带了当前HMAC信息,终端设备的身份信息,以及应用的身份信息的认证请求,并根据查询所述存储模块所存储的HMAC信息的白名单中是否存在相应的HMAC信息;
处理模块53,用于在所述认证模块52的查询结果为是时,生成认证参数,并携带在认证成功消息中发送给所述安全组件,或在所述认证模块52的查询结果为否时,向所述安全组件发送认证失败消息;
验证模块54,用于接收所述安全组件根据当前HMAC信息和认证参数所发送云端服务请求,并根据所述当前HMAC信息和认证参数确认所述应用是否合法,并在所述验证模块54验证成功的情况下,向所述应用提供相应的云端服务。
其中,所述验证模块54,具体用于:
接收所述安全组件所发送的携带令牌的云端服务请求,其中,所述令牌是由所述安全组件根据所述当前HMAC信息和所述认证参数生成的;
根据所述令牌中的信息,结合所述存储模块所存储的HMAC信息的白名单,判断所述应用是否合法;
如果合法,则将所述云端服务请求所对应的数据发送给所述安全组件;
如果不合法,则向所述安全组件发送请求失败消息。
与现有技术相比,本发明实施例所提出的技术方案具有以下优点:
通过应用本发明实施例所提出的技术方案,根据应用的程序文件的内容确定HMAC信息,并据此进行认证,并将认证成功的HMAC信息保存在服务器中,从而创建相应的白名单,当需要进行云端服务请求时,则根据当前的HMAC信息向服务器进行服务请求,只有在服务器根据HMAC信息判定该应用合法的情况下,才会为该应用提供相应的云端服务,从而,能够准确的识别到应用内容的变化,防止因为应用篡改而导致服务被恶意使用,并且,由于HMAC信息的传输和存储都是不可见的过程,因此,保证了应用身份识别的准确性和有效性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

Claims (16)

1.一种应用身份的验证方法,其特征在于,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述方法包括:
当所述终端设备上的一个应用启动时,所述安全组件根据所述应用的程序文件,确定所述应用所对应的当前HMAC信息;
所述安全组件根据所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息,向所述服务器进行所述应用的认证;
所述安全组件识别认证结果,如果认证成功,所述安全组件为所述应用保存相应的认证参数和认证HMAC信息;
当所述应用需要向所述服务器发起云端服务请求时,所述安全组件判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致;
如果一致,所述安全组件根据所述当前HMAC信息和所述认证参数向所述服务器发送云端服务请求,以使所述服务器在确认所述应用合法的情况下,向所述应用提供相应的云端服务。
2.如权利要求1所述的方法,其特征在于,所述安全组件根据所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息,向所述服务器进行所述应用的认证,具体包括:
所述安全组件判断当前是否存在所述应用所对应的有效的认证参数;
当判断结果为是,并且所述安全组件判断当前没有保存所述应用所对应的认证成功标记时,或者当判断结果为否时,所述安全组件向所述服务器发送所述应用的认证请求,所述认证请求中至少包括所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息;
当判断结果为是,并且所述安全组件判断当前保存了所述应用所对应的认证成功标记时,所述安全组件判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致,如果一致,则确认本次初始化成功,如果不一致,则用所述当前HMAC信息替换所述认证HMAC信息,并确认本次初始化失败。
3.如权利要求2所述的方法,其特征在于,所述安全组件根据所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息,向所述服务器进行所述应用的认证之后,还包括:
所述服务器根据所述应用的身份信息查询本地保存的HMAC信息的白名单,判断是否存在与所述当前HMAC信息,以及所述终端设备的身份信息相一致的信息;
如果存在,所述服务器生成认证参数,并携带在认证成功消息中发送给所述安全组件;
如果不存在,所述服务器向所述安全组件发送认证失败消息。
4.如权利要求3所述的方法,其特征在于,所述安全组件识别认证结果,具体包括:
如果认证结果为认证成功,所述安全组件为所述应用保存相应的认证参数,将所述当前HMAC消息保存为认证HMAC信息,并添加认证成功的标记;
如果认证结果为认证失败,所述安全组件清空本地保存的认证参数和当前HMAC信息以及认证HMAC信息。
5.如权利要求1所述的方法,其特征在于,所述安全组件判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致之前,还包括:
所述安全组件判断本地存储的认证参数是否有效;
如果认证参数无效,或者本地没有保存初始化成功的标记,则确认请求失败;
如果认证参数有效,并且本地保存有初始化成功的标记。
6.如权利要求5所述的方法,其特征在于,所述安全组件判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致之后,还包括:
如果不一致,所述安全组件确认请求失败。
7.如权利要求5所述的方法,其特征在于,所述安全组件根据所述当前HMAC信息和所述认证参数向所述服务器发送云端服务请求,以使所述服务器在确认所述应用合法的情况下,向所述应用提供相应的云端服务,具体包括:
所述安全组件根据所述当前HMAC信息和所述认证参数生成令牌;
所述安全组件向所述服务器发送携带所述令牌的云端服务请求;
所述安全组件接收所述服务器在根据所述令牌确认所述应用合法的情况下所返回的数据信息,并将所述数据信息发送给所述应用;或,
所述安全组件接收所述服务器在根据所述令牌确认所述应用非法的情况下所返回的请求失败消息,并将请求失败的结果反馈给所述应用。
8.一种安全组件,其特征在于,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述安全组件包括:
确定模块,用于在所述终端设备上的一个应用启动时,根据所述应用的程序文件,确定所述应用所对应的当前HMAC信息;
认证模块,用于根据所述确定模块所确定的当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息,向所述服务器进行所述应用的认证;
识别模块,用于识别所述服务器返回的认证结果,如果认证成功,为所述应用保存相应的认证参数和认证HMAC信息;
判断模块,用于在所述应用需要向所述服务器发起云端服务请求时,判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致;
请求模块,用于在所述判断模块的判断结果为一致时,根据所述当前HMAC信息和所述认证参数向所述服务器发送云端服务请求,以使所述服务器在确认所述应用合法的情况下,向所述应用提供相应的云端服务。
9.如权利要求8所述的安全组件,其特征在于,所述认证模块,还用于:
判断当前是否存在所述应用所对应的有效的认证参数;
当判断结果为是,并且当前没有保存所述应用所对应的认证成功标记时,或者当判断结果为否时,向所述服务器发送所述应用的认证请求,所述认证请求中至少包括所述当前HMAC信息,所述终端设备的身份信息,以及所述应用的身份信息;
当判断结果为是,并且当前保存了所述应用所对应的认证成功标记时,判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致,如果一致,则确认本次初始化成功,如果不一致,则用所述当前HMAC信息替换所述认证HMAC信息,并确认本次初始化失败。
10.如权利要求9所述的安全组件,其特征在于,所述识别模块,具体用于:
如果认证结果为认证成功,为所述应用保存相应的认证参数,将所述当前HMAC消息保存为认证HMAC信息,并添加认证成功的标记;
如果认证结果为认证失败,清空本地保存的认证参数和当前HMAC信息以及认证HMAC信息。
11.如权利要求8所述的安全组件,其特征在于,所述判断模块,具体用于:
判断本地存储的认证参数是否有效;
如果认证参数无效,或者本地没有保存初始化成功的标记,则确认请求失败;
如果认证参数有效,并且本地保存有初始化成功的标记,则判断所述应用所对应的所述当前HMAC信息与所述认证HMAC信息是否一致。
12.如权利要求8所述的安全组件,其特征在于,所述请求模块,具体用于:
根据所述当前HMAC信息和所述认证参数生成令牌;
向所述服务器发送携带所述令牌的云端服务请求;
接收所述服务器在根据所述令牌确认所述应用合法的情况下所返回的数据信息,并将所述数据信息发送给所述应用;或,
接收所述服务器在根据所述令牌确认所述应用非法的情况下所返回的请求失败消息,并将请求失败的结果反馈给所述应用。
13.一种应用身份的验证方法,其特征在于,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述方法包括:
所述服务器根据认证成功的HMAC信息,及其所对应的应用身份信息,保存HMAC信息的白名单,并记录相应的设备身份信息;
当所述服务器接收到所述安全组件发送的携带了当前HMAC信息,终端设备的身份信息,以及应用的身份信息的认证请求时,所述服务器根据所述应用的身份信息查询本地保存的HMAC信息的白名单,判断是否存在与所述当前HMAC信息,以及所述终端设备的身份信息相一致的信息;
如果存在,所述服务器生成认证参数,并携带在认证成功消息中发送给所述安全组件,或,如果不存在,所述服务器向所述安全组件发送认证失败消息;
当所述服务器接收到所述安全组件根据当前HMAC信息和认证参数所发送云端服务请求时,所述服务器根据所述当前HMAC信息和认证参数确认所述应用是否合法,如果合法,则向所述应用提供相应的云端服务。
14.如权利要求13所述的方法,其特征在于,所述服务器根据所述当前HMAC信息和认证参数确认所述应用是否合法,具体包括:
所述服务器接收所述安全组件所发送的携带令牌的云端服务请求,其中,所述令牌是由所述安全组件根据所述当前HMAC信息和所述认证参数生成的;
所述服务器根据所述令牌中的信息,结合所存储的HMAC信息的白名单,判断所述应用是否合法;
如果合法,则所述服务器将所述云端服务请求所对应的数据发送给所述安全组件;
如果不合法,则所述服务器向所述安全组件发送请求失败消息。
15.一种服务器,其特征在于,应用于至少包括终端设备和服务器的***中,其中,所述终端设备上包括安全组件以及至少一个应用,所述服务器包括:
存储模块,用于根据认证成功的HMAC信息,及其所对应的应用身份信息,保存HMAC信息的白名单,并记录相应的设备身份信息;
认证模块,用于接收所述安全组件发送的携带了当前HMAC信息,终端设备的身份信息,以及应用的身份信息的认证请求,并查询所述存储模块所存储的HMAC信息的白名单中是否存在相应的HMAC信息;
处理模块,用于在所述认证模块的查询结果为是时,生成认证参数,并携带在认证成功消息中发送给所述安全组件,或在所述认证模块的查询结果为否时,向所述安全组件发送认证失败消息;
验证模块,用于接收所述安全组件根据当前HMAC信息和认证参数所发送云端服务请求,并根据所述当前HMAC信息和认证参数确认所述应用是否合法,并在所述验证模块验证成功的情况下,向所述应用提供相应的云端服务。
16.如权利要求15所述的服务器,其特征在于,所述验证模块,具体用于:
接收所述安全组件所发送的携带令牌的云端服务请求,其中,所述令牌是由所述安全组件根据所述当前HMAC信息和所述认证参数生成的;
根据所述令牌中的信息,结合所述存储模块所存储的HMAC信息的白名单,判断所述应用是否合法;
如果合法,则将所述云端服务请求所对应的数据发送给所述安全组件;
如果不合法,则向所述安全组件发送请求失败消息。
CN201310752998.6A 2013-12-31 2013-12-31 一种应用身份的验证方法和设备 Active CN104753674B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310752998.6A CN104753674B (zh) 2013-12-31 2013-12-31 一种应用身份的验证方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310752998.6A CN104753674B (zh) 2013-12-31 2013-12-31 一种应用身份的验证方法和设备

Publications (2)

Publication Number Publication Date
CN104753674A CN104753674A (zh) 2015-07-01
CN104753674B true CN104753674B (zh) 2018-10-12

Family

ID=53592835

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310752998.6A Active CN104753674B (zh) 2013-12-31 2013-12-31 一种应用身份的验证方法和设备

Country Status (1)

Country Link
CN (1) CN104753674B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105993156B (zh) * 2015-10-23 2020-01-14 深圳市元征科技股份有限公司 服务器访问验证方法以及装置
CN106878233B (zh) * 2015-12-10 2020-11-10 联芯科技有限公司 安全数据的读取方法、安全服务器、终端及***
CN106549957B (zh) * 2016-10-26 2020-01-31 上海众人网络安全技术有限公司 一种终端应用正版的认证方法及***
CN107066380B (zh) * 2017-02-23 2023-05-16 海信视像科技股份有限公司 一种包含冗余功能的应用的认证方法和装置
CN107919960A (zh) * 2017-12-04 2018-04-17 北京深思数盾科技股份有限公司 一种应用程序的认证方法和***
CN110098933B (zh) * 2018-01-29 2021-09-14 卓望数码技术(深圳)有限公司 一种手机应用自动身份认证方法和***
TWI753102B (zh) * 2018-02-09 2022-01-21 劉根田 實名認證服務系統及實名認證服務方法
CN110581833B (zh) * 2018-06-11 2022-08-23 中移(杭州)信息技术有限公司 一种业务安全保护方法及装置
CN110581897A (zh) * 2019-09-30 2019-12-17 山东浪潮通软信息科技有限公司 一种单向网络环境下实现两个***之间数据交互的方法
CN111552928A (zh) * 2020-04-26 2020-08-18 北京学之途网络科技有限公司 一种认证方法及装置
CN112688920B (zh) * 2020-12-09 2021-09-21 北京博瑞彤芸科技股份有限公司 一种判定会面事件真实性的方法及***
CN113542235B (zh) * 2021-06-28 2023-04-07 上海浦东发展银行股份有限公司 一种基于令牌互信机制的安全互访方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101227286A (zh) * 2008-01-31 2008-07-23 北京飞天诚信科技有限公司 一种生成消息认证码的方法
CN102045356A (zh) * 2010-12-14 2011-05-04 中国科学院软件研究所 一种面向云存储的可信存储验证方法和***
CN102378170A (zh) * 2010-08-27 2012-03-14 ***通信有限公司 一种鉴权及业务调用方法、装置和***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325143B2 (en) * 2001-10-15 2008-01-29 Linux Foundation Digital identity creation and coalescence for service authorization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101227286A (zh) * 2008-01-31 2008-07-23 北京飞天诚信科技有限公司 一种生成消息认证码的方法
CN102378170A (zh) * 2010-08-27 2012-03-14 ***通信有限公司 一种鉴权及业务调用方法、装置和***
CN102045356A (zh) * 2010-12-14 2011-05-04 中国科学院软件研究所 一种面向云存储的可信存储验证方法和***

Also Published As

Publication number Publication date
CN104753674A (zh) 2015-07-01

Similar Documents

Publication Publication Date Title
CN104753674B (zh) 一种应用身份的验证方法和设备
CN108064440B (zh) 基于区块链的fido认证方法、装置及***
CN102378170B (zh) 一种鉴权及业务调用方法、装置和***
US20180082050A1 (en) Method and a system for secure login to a computer, computer network, and computer website using biometrics and a mobile computing wireless electronic communication device
CN110401615B (zh) 一种身份认证方法、装置、设备、***及可读存储介质
CN108462710B (zh) 认证授权方法、装置、认证服务器及机器可读存储介质
EP3346660A1 (en) Authentication information update method and device
CN111131416B (zh) 业务服务的提供方法和装置、存储介质、电子装置
CN102572815B (zh) 一种对终端应用请求的处理方法、***及装置
CN112559993B (zh) 身份认证方法、装置、***及电子设备
CN108243176B (zh) 数据传输方法和装置
CN105357186B (zh) 一种基于带外验证和增强otp机制的二次认证方法
CN103685138A (zh) 移动互联网上的Android平台应用软件的认证方法和***
CN110381075B (zh) 基于区块链的设备身份认证方法和装置
CN111800262B (zh) 数字资产的处理方法、装置和电子设备
CN108156601A (zh) 一种锁定sim卡的方法及装置
CN103516524A (zh) 安全验证方法和***
CN102868702A (zh) ***登录装置和***登录方法
CN111130798A (zh) 一种请求鉴权方法及相关设备
CN110944300B (zh) 短信服务***、转发接口装置及防御服务器
CN104901967A (zh) 信任设备的注册方法
KR102053993B1 (ko) 인증서를 이용한 사용자 인증 방법
CN108574657B (zh) 接入服务器的方法、装置、***以及计算设备和服务器
CN103107881A (zh) 智能卡的访问方法、装置及***
KR101221728B1 (ko) 그래픽 otp 인증을 위한 인증처리서버 및 그 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant