背景技术
当前,随着信息容量的爆炸式增长和互联网技术的迅速发展,人们依靠互联网来获取自身需要的各种信息的趋势越来越明显。人们从互联网上寻找到自身需要的信息资源后,虽然一部分可以多次重复的在线使用,但仍有大部分的信息人们仍然需要下载到本地计算机上进行使用,而下载这些信息资源时通常使用专门的下载软件进行,由于下载软件能够提供较高的下载速度,因此,下载软件作为一个专门的应用软件类型得到了快速的发展。
当前的下载软件大都采用了多资源下载技术,所述多资源下载技术,是指下载软件客户端将某个用户需要下载的信息资源的统一资源定位器(Uniform Resource Locator,URL)链接--比如用户需要下载的信息资源所对应的互联网URL链接--提交到下载软件运营商服务器端的资源信息数据库中,并在所述数据库中查询出所述用户需要下载的信息资源的URL链接所对应的多个URL链接,查询成功完成后同时从所述多个URL链接指向的位置进行下载,从而可以大大提高下载速度。下文中为了叙述方便,将所述用户需要下载的信息资源的URL链接简称为原始地址,而将查询后得到的多个URL简称为其他可下载地址,以示区别。
下载软件运营商为了向使用者提供更好的使用体验,会不断对其资源信息数据库进行更新,以保证客户端提交的原始地址能够在所述资源信息数据库中查询到足够多的其他可下载地址,以保证良好的下载速度和下载成功率。因此,经过长时间的更新和积累,各下载软件运营商所拥有的资源信息数据库已经在事实上成为其所在行业的竞争壁垒--即,一个下载软件优秀与否,很大程度上取决于该下载软件运营商所拥有的资源信息数据库的完备程度。因此,如何有效防止自身的资源信息数据库被竞争对手或第三方非法窃取就成为各下载软件运营商保持自身竞争力的一个非常重要的课题。
为了解决上述问题,大部分下载软件运营商采用对客户端与服务器端交互时的来往信息进行加密的方法,实现对资源信息数据库中信息的保护。目前广泛使用的是对称加密的方法,包括DES(Data Encryption Standard,数据加密标准)、AES(Advanced Encryption Standard,先进加密标准)和IDEA(International Data Encryption Algorithm,国际数据加密方法)等。在信息交互过程中,发送方选用上述某种方法对待发送的明文进行加密得到密文并将该密文发送给接收方;发送方和接收方预先约定一个解密的密钥,称为共享密钥(下文简称密钥),接收方利用这个密钥对接收到的密文进行解密,即可得到初始的明文。由于密钥仅为信息交流双方所知,具有良好的安全性,因此对称加密方法和得到了广泛的采用。
图1示出了下载软件客户端与服务器端进行交互时的组成结构:
其中,下载软件的客户端110安装在本地计算机中,所述客户端110与下载软件运营商服务器端中的资源信息数据库120通过互联网相连接,其工作流程如图2所示,其中包括:
步骤201:客户端将原始地址的信息通过互联网提交给服务器端中的资源信息数据库;
步骤202:资源信息数据库查询与所述原始地址对应的所有其他可下载地址,对这些其他可下载地址链接的信息加密后,将其包含在资源回复消息中返回给客户端;
步骤203:客户端接收资源回复消息,采用与服务器端相同的密钥进行解密得到所述的其他可下载地址,然后同时从所述多个其他可下载地址链接指向的位置进行下载。
但是,上述方法的安全性完全建立在密钥的基础上,而密钥本身并无自动更新的机制,一般都会长期采用同一个密钥进行信息交流,这无疑会增大密钥本身泄露的可能性;同时,信息窃取者或黑客还可以通过拦截数量足够多的加密密文,利用计算或密码学规则推测出所采用的密钥。例如,曾经普遍使用的64位共享密钥由于被黑客破解,现在已经无法继续使用。
由上述可见,由于现有的对称加密方法完全公开,其安全性完全依赖于信息交互双方约定的密钥,而该密钥又无法进行自动更新。因此,如果密钥一旦丢失、泄漏或被破解,信息窃取者将可以伪装成客户端,利用所述密钥窃取资源信息数据库中的信息资源,从而使得所述资源信息数据库中的信息安全和运营商利益面临严重威胁。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明实施例中提供一种网络资源查询方法,其流程如图3所示,其中客户端启动后与服务器端通过网络建立连接,客户端与服务器端中预设有相同的安全策略,所述安全策略是整个身份认证过程所使用的算法,所述方法包括:
步骤301:客户端将原始地址的信息包含在资源查询请求中发送给服务器端;
步骤302:服务器端接收所述请求,要求客户端进行身份认证;
步骤303:客户端随机生成母文,根据所述安全策略,由所述母文计算得到客户端标识并对客户端标识和母文进行数字签名,将得到的客户端数字签名与母文共同发送给服务器端;
所述客户端安全策略包括加密算法和哈希算法,客户端由所述母文计算得到客户端标识的方法包括:
按照所述加密算法对随机生成的母文进行加密得到密文,再使用所述哈希算法对密文进行处理得到客户端标识。
其中,随机生成的母文的位宽可以自由设定,对母文进行加密处理所采用的加密算法可以从现有技术的各种加密方法中任意选择一个,或任意选择多个进行多重加密处理,由于现有的加密方法种类繁多,因此所述进行加密的具体方法限于篇幅无法一一列举,仅举以下两例说明:
例如:随机生成一个128位的母文,对该母文使用预设的AES加密方法进行加密得到密文,再对该密文使用Hash算法--比如常用的信息-摘要算法(Message-Digest Algorithm5,MD5),或SHA-1算法--处理后得到客户端标识;或者,随机生成一个128位的母文,按设定规则进行移位后,再使用IDEA算法进行加密得到密文,对该密文使用Hash算法处理得到客户端标识。然后用客户端标识对母文进行数字签名,在本实施例中,使用hash算法来实现(即SIG=HASH(母文+ID))。在实际应用中,可以根据服务器端及客户端的运算速度和资源条件自由选择合适的方法进行加密处理,本发明实施例不做限定。
步骤304:服务器端接收客户端数字签名和母文,根据所述安全策略,由接收的母文得到比对标识并对比对标识和接收的母文进行数字签名;
由于服务器端的安全策略与客户端的安全策略相同,同样包括加密算法和哈希算法,因此所述服务器端由接收的母文得到比对标识的方法包括:
按照所述加密算法对接收的母文进行加密得到密文,再使用所述哈希算法对密文进行处理得到比对标识。
同时,步骤303中对客户端标识和母文进行数字签名得到客户端数字签名的方法,与步骤304中对比对标识和接收的母文进行数字签名得到服务器端数字签名的方法相同,均为使用安全策略中的哈希算法进行数字签名,因此本发明实施例中不再详细叙述。
步骤305:服务器端将得到的服务器端数字签名与客户端数字签名比对,所述数字签名相同时,则判定身份认证通过。
容易理解,由于所述服务器端设定的安全策略与合法客户端中设定的安全策略相同,因此步骤304中得到的比对标识与客户端标识必定相同,从而服务器端数字签名与客户端数字签名也一定相同。如果为非法客户端发出的资源查询请求,由于其不具有与服务器端相同的安全策略,则该非法客户端就无法通过身份认证,因此能够防止信息窃取者或黑客等伪装成合法的客户端并窃取资源信息数据库中的资源。
步骤306:身份认证通过后,服务器端进行资源查询得到资源查询结果,并将所述资源查询结果返回给客户端。
较佳地,为了进一步提高安全性,步骤306中所述服务器端进行资源查询得到资源查询结果,并将所述资源查询结果返回给客户端的方法还可以包括:
服务器端以比对标识为密钥对所述查询结果进行加密后返回给客户端;
客户端接收服务器端返回的加密后的查询结果,以所述客户端标识为密钥,解密得到查询结果的明文。
由于所述客户端标识与服务器端的比对标识相同,因此以他们作为客户端和服务器端之间的共享密钥,能够保证客户端标识顺利对服务器端发送的加密后的查询结果进行解密,从而得到需要的资源查询结果。
容易理解,如果身份认证通过的客户端的可靠性较高或传输环境安全性较高,也可以不执行对查询结果的加密,而直接将查询结果使用明文方式返回给客户端。
上述流程描述的是客户端启动后第一次进行资源查询的流程,在实际应用中,客户端随时可能发起下一次的资源查询请求,根据使用者的使用习惯,既可能在一次使用后,使用者退出客户端并在下次需要进行资源查询时再次启动客户端;也有可能在一次使用后,使用者并不退出客户端而只是暂时将其挂起,待需要进行下次资源查询时再继续使用。
为了使在第一次进行资源查询时已经通过了身份认证的客户端在后续进行资源查询时能够迅速获取资源查询结果,本发明实施例进一步提供了优化的多次查询机制:
当步骤305中所述服务器端判定身份认证通过之后,该方法进一步包括:服务器端为所述比对标识和接收到的母文建立对应关系,将所述对应关系,连同所述比对标识和母文一起保存到服务器端的内存当中;
当客户端再次发起资源查询请求时,客户端将母文发送给服务器端,服务器端根据所述母文在内存中搜索与该母文对应的比对标识;
若存在与该母文对应的比对标识,则身份认证通过;否则身份认证不通过。
在实际应用中,由于服务器的内存资源都是有限的,为了进一步提高服务器上的资源的利用率,上述方法还可以为:
服务器端为所述比对标识和接收到的母文建立对应关系,将所述对应关系,连同所述比对标识和母文一起保存到服务器端的内存当中;经过设定的时间间隔后,再将内存中保存的对应关系,连同所述比对标识和母文一起清除;如果在所述设定的时间间隔内,客户端未退出,且再次发起资源查询请求,则客户端将所述母文发送给服务器端,服务器端根据所述母文在内存中搜索与该母文对应的比对标识;
若存在与该母文对应的比对标识,则身份认证通过;否则身份认证不通过。
容易理解,通过上述方法可以使得客户端在通过身份认证后,不必每次都重复进行身份认证,或者是在通过身份认证后的一段时间内,不必每次都重复进行身份认证。因此,客户端可以一次认证多次查询,提高了资源查询的速度和效率;同时,由于身份认证通过后,所述母文及比对标识的信息保存在服务器端的内存中,黑客或竞争对手有可能通过非法手段窃取服务器端中保存的母文及比对标识的信息,而窃取这些信息需要一定的时间,为了杜绝这种潜在威胁,需要合理设置所述母文和比对标识在内存中保存的时间长度,避免出现保存时间过长,导致信息窃取者利用合法客户端进行身份认证后,窃取服务器端中保存的母文及比对标识的信息,并利用这些信息窃取资源信息数据库中的资源查询结果。
因此,也就容易理解,上述多次查询的机制是在保证合法客户端的查询速度和效率与保证资源信息数据库中的信息安全之间进行的折衷。因此,如果为了获得更高的信息安全强度,也可以不采用所述的多次查询机制,而是对客户端的每次资源查询均要求进行身份认证(即每次资源查询均执行步骤301~306);或者当能够保证客户端的安全性时,也可以只对客户端进行一次认证;具体采用何种方式,运营商可以根据自身需要的安全策略选择,本发明实施例中只提供相应的实施方式,而不对应用条件进行限制。
可见,本发明实施例中提供的这种网络资源查询方法,通过在客户端和服务器端设置相同的安全策略,对由客户端随机生成的母文分别求出客户端标识和比对标识,再通过数字签名运算分别得到客户端数字签名和服务器端数字签名,通过比对所述数字签名是否相同实现对客户端的身份认证。由于非法客户端不具备运营商提供的安全策略,使得这些非法客户端无法通过服务器端的身份认证,从而无法窃取资源查询结果,因此该方法保证了合法的客户端能够顺利通过身份认证并正常获取资源查询结果,避免了资源信息数据库中的信息被非法窃取,从而大大提高了资源信息数据库中的信息安全强度,保护了运营商的商业利益。
较佳地,当身份认证通过后,进一步使用比对标识作为共享密钥,对查询结果进行加密后再返回给客户端,客户端最终通过客户端标识进行解密得到查询结果的明文,进一步提高了信息安全性。此外,运营商还可以定期更新所述的安全策略,以避免由于所述安全策略长期固定不变而被黑客或竞争对手破解,从而威胁资源信息数据库的信息安全。相应地,此时引入版本信息的概念,每次运营商对服务器端的安全策略进行更新时,同时为其设置更新的版本号。每次客户端启动后,在其向服务器端发送资源查询请求之前,客户端首先向服务器端发送版本查询请求,若服务器端返回的版本信息与客户端的版本信息不同,则说明服务器端的安全策略已经更新,因此,客户端发起安全策略更新过程,将自身保存的安全策略同步为与服务器端的安全策略相同。
可见,本发明较佳实施例进一步通过定期更新服务器端的安全策略,并在客户端进行资源查询前执行同步更新,可以更进一步提高资源信息数据库的信息安全强度。比如经过测算,每次更新安全策略后,黑客或竞争对手平均需要一周时间破解该策略,则运营商可以将对所述安全策略的更新频率保持在每周一次,就可以有效抵御资源信息数据库面临的威胁并保证信息安全。
本发明实施例还同时提供一种网络资源查询系统,其组成结构如图4所示,其中包括:下载软件客户端410和软件运营商服务器端420,下载软件客户端410启动后与软件运营商服务器端420通过网络建立连接;
客户端410,用于向服务器端420发送资源查询请求并接收返回的进行身份认证的指示;随机生成母文,由所述母文根据客户端安全策略计算得到客户端标识,以及根据客户端安全策略对客户端标识和母文进行数字签名,将得到的客户端数字签名与母文共同发送给服务器端420进行身份认证;并在身份认证通过后,接收服务器端420返回的资源查询结果;
服务器端420,用于根据客户端410的资源查询请求,指示客户端410进行身份认证;接收客户端410发送的母文,根据服务器端安全策略得到比对标识,以及根据服务器端安全策略对比对标识和接收的母文进行数字签名,所述服务器端安全策略与客户端安全策略相同;将得到的服务器端数字签名与客户端数字签名比对,所述数字签名相同则判定身份认证通过;身份认证通过后,进行资源查询得到资源查询结果,并将所述资源查询结果返回给客户端410。
其中,所述客户端410包括:请求模块411,第一SP模块412和接收模块413;
请求模块411,用于向服务器端420发送资源查询请求,接收服务器端420返回的进行身份认证的指示;
第一SP模块412,用于随机生成母文,根据所述安全策略,由所述母文得到客户端标识并对客户端标识和母文进行数字签名运算,将得到的客户端数字签名与母文共同发送给服务器端420进行身份认证;
接收模块413,用于在身份认证通过后,接收服务器端420返回的资源查询结果。
同时,服务器端420包括:指令模块421,第二SP模块422,比对模块423和发送模块424;
所述指令模块421,用于接收客户端410发送的资源查询请求,指示客户端410进行身份认证;
所述第二SP模块422,用于接收客户端410发送的母文,根据安全策略,由所述母文得到比对标识并对比对标识和接收的母文进行数字签名运算得到服务器端数字签名;
所述比对模块423,用于接收客户端410发送的客户端数字签名,将服务器端数字签名与客户端数字签名进行比对,所述数字签名相同时判定身份认证通过;
发送模块424,用于在身份认证通过后进行资源查询得到资源查询结果后将所述资源查询结果返回给客户端410。
为了使在第一次进行资源查询时已经通过了身份认证的客户端410在后续进行资源查询时能够迅速获取资源查询结果,所述服务器端420中还可以进一步包括:对应关系建立保存模块425和对应关系搜索模块426;
所述对应关系建立保存模块425,用于当比对模块423判定身份认证通过时,为所述比对标识和接收到的母文建立对应关系,并将所述对应关系,连同所述比对标识和母文一起保存到服务器端420的内存当中;
所述第一SP模块412,进一步用于当客户端410再次发起资源查询请求时,将所述随机生成的母文发送给对应关系搜索模块426;
所述对应关系搜索模块426,用于接收第一SP模块412发送的母文,在内存中搜索与该母文对应的比对标识;若存在与该母文对应的比对标识,则认证通过;否则认证不通过。
或者,在实际应用中,由于服务器的内存资源都是有限的,为了进一步提高服务器上的资源的利用率:
所述对应关系建立保存模块425,进一步用于若在设定的时间间隔内,客户端410未发起资源查询请求,则将内存中保存的对应关系,连同所述比对标识和母文一起清除;
此时,所述第一SP模块412,进一步用于当设定的时间间隔内容户端410未退出,并再次发起资源查询请求时,将所述随机生成的母文发送给对应关系搜索模块426;
所述对应关系搜索模块426,用于接收第一SP模块412发送的母文,在内存中搜索与该母文对应的比对标识;若存在与该母文对应的比对标识,则身份认证通过;否则身份认证不通过。
较佳地,运营商还可以定期更新第一及第二SP模块中的安全策略,以避免由于所述安全策略长期固定不变而被黑客或竞争对手破解,从而威胁资源信息数据库的信息安全。因此,所述客户端410中还进一步包括:
更新同步模块414,用于在每次客户端410启动后获取第二SP模块422的版本信息,若所述第二SP模块422的版本信息与客户端410中的第一SP模块412的版本信息不同,则将客户端的安全策略同步为与服务器端的安全策略相同。
由上述可见,本发明实施例提供的这种网络资源查询系统中,通过在客户端和服务器端设置相同的安全策略,对由客户端随机生成的母文分别求出客户端标识和比对标识,再通过数字签名运算分别得到客户端数字签名和服务器端数字签名,比对所述数字签名是否相同实现了对客户端的身份认证,该系统保证了合法的客户端能够顺利通过身份认证并正常获取资源查询结果,避免了资源信息数据库中的信息被非法窃取,从而大大提高了资源信息数据库中的信息安全强度,保护了运营商的商业利益。
此外,本发明的较佳实施例在当身份认证通过后,进一步使用比对标识作为共享密钥,对查询结果进行加密后再返回给客户端,客户端最终通过客户端标识进行解密得到查询结果的明文,进一步提高了信息安全。此外,还进一步通过定期更新服务器端的第二SP模块,并在客户端进行资源查询前执行第一SP模块与第二SP模块的同步更新,可以更进一步提高所述资源信息数据库的信息安全强度。
最后需要指出,以上所述仅为本发明的较佳实施例,并非用于限定本发明的精神和保护范围,任何熟悉本领域的技术人员所做出的等同变化或替换,都应视为涵盖在本发明的保护范围之内。