发明内容
鉴于此,本发明提供了一种新的设备认证方案,以力图解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种设备认证方法,该方法包括:第一设备上的第一客户端从服务器获取公共公钥,并生成第一公钥和第一私钥,利用公共公钥将账户名和第一公钥加密后上传至服务器,以便服务器利用公共私钥解密,生成与账户名关联的密钥,根据密钥生成第一认证信息后,返回利用第一公钥加密的密钥至第一客户端,以便第一客户端利用第一私钥解密;第一客户端根据密钥生成第二认证信息;第二设备上的第二客户端从服务器获取公共公钥,并生成第二公钥和第二私钥,利用公共公钥将第二公钥和第一客户端的账户名、第二认证信息加密后上传至服务器,以便服务器利用公共私钥解密,获取该账户名关联的密钥及第一认证信息,将第一认证信息与第二认证信息比对一致后,返回利用第二公钥加密的密钥至第二客户端,以便第二客户端利用第二私钥解密。
可选地,在根据本发明的设备认证方法中,该方法还包括:第二客户端根据密钥生成第三认证信息。
可选地,在根据本发明的设备认证方法中,将账户名和第一公钥加密后上传至服务器的步骤包括:利用公共公钥将账户名、第一公钥和账户信息加密后上传至服务器,以便服务器利用公共私钥解密,将账户信息与账户名关联后存储。
可选地,在根据本发明的设备认证方法中,其中账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。
可选地,在根据本发明的设备认证方法中,该方法包括:第二客户端从服务器获取账户名关联的账户信息。
可选地,在根据本发明的设备认证方法中,第一认证信息、第二认证信息以及第三认证信息均为每隔同一预定时间按照同一预定规则根据密钥生成的六位数字。
可选地,在根据本发明的设备认证方法中,其中预定时间为30秒。
根据本发明的另一个方面,提供了一种第一客户端,驻留在第一设备上,包括:第一通信模块,适于从服务器获取公共公钥,还适于将加密后的账户名和第一公钥上传至服务器,以便服务器利用公共私钥解密,生成与账户名关联的密钥,并根据密钥生成第一认证信息后,返回利用第一公钥加密的密钥至第一客户端;还适于接收服务器返回的加密后的密钥;第一控制模块,适于生成第一公钥和第一私钥,还适于利用公共公钥将账户名和第一公钥加密;还适于利用第一私钥解密加密后的密钥,并根据密钥生成第二认证信息。
可选地,在根据本发明的第一客户端中,第一控制单元还适于利用公共公钥将账户名、第一公钥以及账户信息加密,第一通信单元还适于将加密后的账户信息上传至服务器,以便服务器利用公共私钥解密,将账户信息与账户名关联后存储。
可选地,在根据本发明的第一客户端中,其中账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。
可选地,在根据本发明的第一客户端中,其中第一认证信息和第二认证信息均为每隔同一预定时间按照同一预定规则根据所述密钥生成的六位数字。
可选地,在根据本发明的第一客户端中,其中预定时间为30秒。
根据本发明的还有一个方面,提供了一种第二客户端,驻留在第一设备上,适于与第一客户端、服务器交互来通过认证,包括:第二通信模块,适于从服务器获取公共公钥,还适于将加密后的第一客户端的账户名、第二认证信息和第二公钥上传至服务器,以便服务器利用公共私钥解密,获取账户名关联的密钥及第一认证信息,将第一认证信息与第二认证信息比对一致后,返回利用第二公钥加密的密钥至第二客户端,还适于接收服务器返回的加密后的密钥;第二控制模块,适于生成第二公钥和第二私钥,还适于利用公共公钥将第一客户端的账户名、第二认证信息和第二公钥加密。
可选地,在根据本发明的第二客户端中,第二控制模块还适于利用第一私钥解密加密后的密钥,并根据密钥生成第三认证信息。
可选地,在根据本发明的第二客户端中,第二通信模块还适于从服务器获取所述账户名关联的账户信息。
可选地,在根据本发明的第二客户端中,其中账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。
可选地,在根据本发明的第二客户端中,其中第一认证信息、第二认证信息以及第三认证信息均为每隔同一预定时间按照同一预定规则根据所述密钥生成的六位数字。
可选地,在根据本发明的第二客户端中,其中预定时间为30秒。
根据本发明的还有一个方面,提供了一种服务器,包括:存储模块,适于存储公共公钥和公共私钥;第三通信模块,适于发送公共公钥至第一客户端,还适于接收来自第一客户端的、利用公共公钥加密后的账户名和第一公钥;第三控制模块,适于利用公共私钥解密第三通信模块接收的来自第一客户端的数据后,生成与账户名唯一关联的密钥,根据密钥生成第一认证信息;其中存储模块还适于存储第一公钥、账户名及其关联的密钥,第三控制模块还适于利用第一公钥加密密钥,第三通信模块还适于返回加密后的密钥至第一客户端,以便第一客户端利用第一私钥解密后根据密钥生成第二认证信息。
可选地,在根据本发明的服务器中,第三通信模块还适于发送公共公钥至第二客户端,还适于接收来自第二客户端的、利用公共公钥加密后的第一客户端的账户名、第二认证信息以及第二公钥;所述第三控制模块还适于利用公共私钥解密所述第三通信模块接收的来自第二客户端的数据,获取所述账户名关联的密钥及其生成的第一认证信息。
可选地,在根据本发明的服务器中,还包括认证模块,认证模块适于比对第一认证信息与第二认证信息,若比对一致,则认证通过,否则认证不通过;认证通过后第三控制模块利用所述第二公钥加密密钥,第三通信模块返回加密后的密钥至第二客户端,以便第二客户端利用第二私钥解密后根据密钥生成第三认证信息。
可选地,在根据本发明的服务器中,第三通信模块还适于接收来自第一客户端的、利用公共公钥加密后的账户名、第一公钥以及账户信息,第三控制模块还适于利用公共私钥解密加密后的账户名、第一公钥以及账户信息,将账户信息与账户名关联后存储至存储模块。
可选地,在根据本发明的服务器中,其中账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。
可选地,在根据本发明的服务器中,第三通信模块还适于将所述账户名关联的账户信息发送至第二客户端。
可选地,在根据本发明的服务器中,其中第一认证信息、第二认证信息以及第三认证信息均为每隔同一预定时间按照同一预定规则根据密钥生成的六位数字。
可选地,在根据本发明的服务器中,其中预定时间为30秒。
根据本发明的还有一个方面,提供了一种设备认证系统,包括根据本发明的第一客户端,根据本发明的第二客户端,以及根据本发明的服务器。
根据本发明的系统,通过利用已认证通过的设备的认证信息来认证下一个设备这种链条式的设备认证策略,解决了单独利用账户密码认证方式可能导致的个人信息泄漏的问题,极大地提高了账户安全性,确保用户信息不会被非可信设备获取。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个示例性实施例的设备认证系统100的结构框图。如图1所示,设备认证系统100可以包括第一客户端110、第二客户端120以及服务器130,第一客户端110和第二客户端120均通过网络与服务器130连接。其中第一客户端110驻留在第一设备上,第二客户端120驻留在第二设备上,这里第一设备和第二设备可以是移动终端,也可以是计算设备,本发明对此不做限制。第二客户端120可以通过与第一客户端110和服务器130交互,来进行认证,认证通过后,第二客户端120可利用第一客户端110和第二客户端共有的账户名登录服务器130,进行该账户下账户信息(如解锁手势等信息)的下载同步,认证过程安全等级高。
图2示出了根据本发明一个示例性实施例的第一客户端110的结构框图,第一客户端110可以包括第一通信模块111和与之相连的第二控制模块112。
图4示出了根据本发明一个示例性实施例的服务器130的结构框图,服务器130可以包括存储模块131、第三通信模块132和第三控制模块133,还可以包括认证模块134。
服务器130中存储模块131存储有公共公钥(pub)和公共私钥(pri),公共公钥用于对所传输的数据加密,公共私钥用于对所接收的公共公钥加密的数据进行解密。
第一客户端110在第一设备上安装初始化时,其第一通信模块111从服务器130获取公共公钥,例如可调用函数initevenhanded(),而后服务器130中第三通信模块132发送其存储模块131存储的公共公钥至第一客户端110。其中服务器130可以是响应第一客户端110的请求发送公共公钥至客户端,也可以是自动下发公共公钥至第一客户端110,本发明对此不作限制。
第一客户端110中第一控制模块112从第一通信模块110接收公共公钥,生成与第一客户端110唯一关联的第一公钥(pub1)和第一私钥(pri1),利用公共公钥将账户名和第一公钥加密后,上传至服务器130。账户名为用户在第一客户端及服务器上的唯一ID帐号,例如用户手机号等,加密原理通常为RSA加密。
根据本发明的一个实施方式,第一客户端110第一控制模块112还可以利用公共公钥将账户名、第一公钥以及账户信息一并加密后由第一通信模块111上传至服务器130。其中账户信息可以包括开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。通常地,开关设置键值为第一客户端110中的设置开关量,代表某项设置是开启还是关闭,开启则该项开关设置键值为1,关闭则为0;用户解锁手势为用户进入第一客户端之前需要输入的手势密码,由用户自定义;Google应用信息为第一客户端中用户绑定的支持Google Authenticator的网站和应用;客户端绑定信息为第一客户端中用户绑定的其他网站和应用。
服务器130中第三通信模块132适于接收来自第一客户端110、利用公共公钥加密后的账户名和第一公钥,与第三通信模块132相连的第三控制模块133利用服务器130的公共私钥解密上述第三通信模块132接收到的、来自第一客户端110的数据,得到账户名和第一公钥。
可选地,第三通信模块132还适于接收来自第一客户端110、利用公共公钥加密后的账户名、第一公钥以及上述账户信息,与第三通信模块132相连的第三控制模块133利用服务器130的公共私钥解密上述第三通信模块132接收到的、来自第一客户端110的数据,得到账户名、第一公钥以及账户信息,而后将账户信息与账户名关联后存储至存储模块131。
第三控制模块133生成与该账户名唯一关联的密钥,生成方式可以是随机的,也可以是根据一定规律生成,本发明对此不做限制。而后第三控制模块133还适于根据该密钥生成第一认证信息,该第一认证信息同样与账户名唯一关联。可选地,在第三控制模块133生成密钥之前,第三控制模块133可以在存储模块131中查找账户名是否已存在,若该账户名及其关联的密钥、根据该密钥生成的第一认证信息已存在,则第三通信模块132向第一客户端110返回消息提示用户输入该认证信息;若账户名不存在,存储模块131则存储第一公钥、账户名以及账户名关联的密钥,还可以存储根据该密钥生成的第一认证信息。
第三控制模块133利用接收到的第一客户端110的第一公钥将密钥加密后返回至第一客户端110。
第一客户端110中第一通信模块111接收服务器130返回的利用第一公钥加密后的密钥,第一控制模块112利用第一私钥将其解密,得到与账户名关联的唯一密钥,并根据该密钥生成第二认证信息。可选地,其中第一认证信息和第二认证信息均为每隔同一预定时间按照同一预定规则根据密钥生成的六位数字(如865743),该预定时间通常为30秒,预定规则一般为HOTP算法(An HMAC-Based One-Time Password Algorithm),HOTP算法是本领域技术人员公知的,因此本发明对此不进行说明。
以上过程可以通俗地理解为第一设备中第一客户端注册并认证通过,服务器130发送至第一客户端110的数据均利用第一公钥加密,第一客户端110接收后利用第一私钥解密。第一客户端110发送至服务器130的数据均利用公共公钥加密,服务器130接收后利用公共私钥解密。而接下来其他设备中客户端需要利用第一客户端来进行认证。以下以驻留在第二设备中的第二客户端为例说明:
图3示出了根据本发明一个示例性实施例的第二客户端120的结构框图,第二客户端120可以包括第一通信模块121和与之相连的第二控制模块122。
第二客户端120在第二设备上安装初始化时,其第二通信模块121从服务器130获取公共公钥,例如可调用函数initevenhanded(),而后服务器130中第三通信模块132发送其存储模块131存储的公共公钥至第一客户端110。其中服务器130可以是响应第二客户端120的请求发送公共公钥至第二客户端120,也可以是自动下发公共公钥至第二客户端120,本发明对此不作限制。
第二客户端120中第二控制模块122从第二通信模块121接收公共公钥,生成与第二客户端120唯一关联的第一公钥(pub2)和第一私钥(pri2)。用户可以在第二客户端120中输入已经注册过的、需要在第二客户端120使用并同步的账户名(即第一客户端110的账户名),以及第一客户端110当前生成的第二认证信息,第二控制模块122利用公共公钥将第一客户端110的账户名、第二认证信息和第二公钥加密后,由第二通信模块121上传至服务器130。其中加密原理通常为RSA加密。
服务器130中第三通信模块132接收来自第二客户端120的、利用公共公钥加密后的数据,第三控制模块133利用公共私钥将其解密,得到第一客户端110的账户名、第二认证信息和第二公钥,而后第三控制模块133可以在存储模块131中查找账户名是否已存在,若该账户名已存在,则获取账户名关联的密钥及其生成的第一认证信息;可选地,若账户名不存在,第三通信模块132向第二客户端120返回消息提示用户该账户名不存在。
与第三控制模块133相连的认证模块134比对来自第二客户端120的第二认证信息与服务器130生成的第一认证信息,若二者比对一致,则认证通过,否则认证不通过,第三通信模块132可以给第二客户端返回认证失败消息。
认证通过后,第三控制模块133利用接收到的第二客户端120的第二公钥加密上述账户名关联的密钥,第三通信模块132将加密后的密钥返回至第二客户端120。
根据本发明的另一个实施方式,第三通信模块132还适于将上述账户名关联的账户信息发送至第二客户端120,这里可以是响应第二客户端120的请求发送,也可以是自动下发。
第二客户端120中第二通信模块121接收服务器130返回的加密后的密钥,第二控制模块122利用第一私钥解密该加密后的密钥,得到密钥并根据密钥生成第三认证信息。生成原理同第一认证信息、第二认证信息。
可选地,第二通信模块121还适于从服务器130获取上述账户名关联的账户信息。
服务器130发送至第二客户端120的数据均利用第二公钥加密,第二客户端120接收后利用第二私钥解密。第二客户端120发送至服务器130的数据均利用公共公钥加密,服务器130接收后利用公共私钥解密。
以上过程可以通俗地理解为第二设备中第二客户端认证通过,服务器130发送至第二客户端120的数据均利用第二公钥加密,第二客户端120接收后利用第二私钥解密。第二客户端120发送至服务器130的数据均利用公共公钥加密,服务器130接收后利用公共私钥解密。接下来其他设备中客户端均需要利用第一客户端或第二客户端中的认证信息来进行认证,以及同步账户信息,解决了因单独认证设备(账户密码认证)而带来的安全隐患,避免了账户密码泄漏而导致的账户信息、个人隐私泄漏问题。其中第一认证信息、第二认证信息、第三认证信息时间均与服务器130同步。
图5示出了根据本发明一个实施例的设备认证方法500的流程图。
如图5所示,设备认证方法500在第一设备上的第一客户端110中执行,始于步骤S510,在步骤S510中,第一设备上的第一客户端110从服务器获取公共公钥。公共公钥用于对所传输的数据加密,公共私钥用于对所接收的公共公钥加密的数据进行解密。
接下来在步骤S520中,生成第一公钥和第一私钥,该第一公钥、第一私钥与第一客户端110唯一关联。而后在步骤S530中,利用公共公钥将账户名和第一公钥加密后上传至服务器,以便服务器利用公共私钥解密,生成与账户名关联的密钥,根据密钥生成第一认证信息后,返回利用第一公钥加密的密钥至第一客户端,以便第一客户端利用第一私钥解密。
可选地,将账户名和第一公钥加密后上传至服务器的步骤包括:利用公共公钥将账户名、第一公钥和账户信息加密后上传至服务器,以便服务器利用公共私钥解密,将账户信息与账户名关联后存储。其中账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。
第一客户端110获取密钥后,在步骤S540中,根据密钥生成第二认证信息。
图6示出了根据本发明一个实施例的设备认证方法600的流程图。
如图5所示,设备认证方法600在第二设备上的第二客户端120中执行,始于步骤S610,在步骤S610中,从服务器获取公共公钥。接下来在步骤S620中,生成第二公钥和第二私钥,该第二公钥、第二私钥与第二客户端120唯一关联。
而后在步骤S630中,利用该公共公钥将第二公钥和第一客户端的账户名、第二认证信息加密后上传至服务器,以便服务器利用公共私钥解密,获取账户名关联的密钥及第一认证信息,将第一认证信息与第二认证信息比对一致后,返回利用第二公钥加密的密钥至第二客户端,以便第二客户端利用第二私钥解密。可选地,第二客户端120接收加密后密钥同时,还可以从服务器130获取账户名关联的账户信息。
可选地,设备认证方法600还包括S640,在步骤S640中,第二客户端120可以根据密钥生成第三认证信息。
根据本发明的还有一个实施方式,设备认证方法500和600中,第一认证信息、第二认证信息以及第三认证信息均为每隔同一预定时间按照同一预定规则根据密钥生成的六位数字,预定时间通常为30秒。
以上在结合图1、图2和图3说明二维码登录系统100的具体描述中已经对各步骤中的相应处理进行了详细解释,这里不再对重复内容进行赘述。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
本发明还包括:A3、如A1所述的方法,将账户名和第一公钥加密后上传至服务器的步骤包括:利用公共公钥将账户名、第一公钥和账户信息加密后上传至服务器,以便服务器利用公共私钥解密,将账户信息与账户名关联后存储。A4、如A3所述的方法,其中账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。A5、如A3或4所述的方法,该方法包括:第二客户端从服务器获取所述账户名关联的账户信息。A6、如A1-5中任一项所述的方法,所述第一认证信息、第二认证信息以及第三认证信息均为每隔同一预定时间按照同一预定规则根据所述密钥生成的六位数字。A7、如A5所述的方法,其中所述预定时间为30秒。
B10、如B9所述的第一客户端,其中所述账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。B11、如B8-10中任一项所述的第一客户端,其中所述第一认证信息和第二认证信息均为每隔同一预定时间按照同一预定规则根据所述密钥生成的六位数字。B12、如B11所述的第一客户端,其中所述预定时间为30秒。
C15、如C13所述的第二客户端,所述第二通信模块还适于从服务器获取所述账户名关联的账户信息。C16、如C15所述的第二客户端,其中所述账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。17、如C13-16中任一项所述的第二客户端,其中所述第一认证信息、第二认证信息以及第三认证信息均为每隔同一预定时间按照同一预定规则根据所述密钥生成的六位数字。C18、如C17所述的第二客户端,其中所述预定时间为30秒。
D22、如D19-21中任一项所述的服务器,所述第三通信模块还适于接收来自第一客户端的、利用公共公钥加密后的账户名、第一公钥以及账户信息,所述第三控制模块还适于利用公共私钥解密加密后的账户名、第一公钥以及账户信息,将所述账户信息与所述账户名关联后存储至所述存储模块。D23、如D22所述的服务器,其中所述账户信息包括:开关设置键值、用户解锁手势、Google应用信息、客户端绑定信息以及日志中的一个或多个。D24、如D22或23所述的服务器,所述第三通信模块还适于将所述账户名关联的账户信息发送至第二客户端。D25、如D19-24中任一项所述的服务器,其中所述第一认证信息、第二认证信息以及第三认证信息均为每隔同一预定时间按照同一预定规则根据所述密钥生成的六位数字。D26、如D25所述的服务器,其中所述预定时间为30秒。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。