相互认证的制作方法

文档序号:11290902阅读:288来源:国知局
相互认证的制造方法与工艺

伊莉斯雷维尔

共存的相关专利申请

本申请与同一申请人提交并且按照如下标题的申请同时提交。关于各专利申请中的具体问题的细节将被视为并入其他相关专利申请的每一个中。

相关专利申请的标题为:

安全系统中终端的改进安装;

生成对称加密密钥;

通过认证令牌的改进安全;以及

用于建立安全通信信道的改进系统。

本申请涉及一种用于改进的安全和安全性的系统、方法、设备和计算机可读存储介质,并且特别涉及一种用于建立安全通信信道的系统、方法、设备和计算机可读存储介质。



背景技术:

在当今社会中,数字通信日益增多,并且大部分人对使用互联网执行任务感觉到舒适,所述任务诸如管理他们的银行账户、申报他们的收入、或交换其他秘密信息。为了执行这样的任务,同时维持令人满意的安全级别,已经提出了基于加密的许多不同的安全解决方案。大多数这样的解决方案涉及某种类型的公钥和私钥,并且用户必须在可以与另一方建立安全通信之前共享该用户的公钥。在密码术中,密钥可以被看作是确定加密算法的函数输出的一条信息。

通常认为在设计安全系统时,假设攻击者可能已经获得了加密算法的细节是明智的。这个原则被称为柯克霍夫原则,并且因此只有保密的密钥才能提供安全。这个原则是基于这一事实:即很难保密广泛使用的算法的细节。密钥通常比较容易保护,因为与加密算法相比,它通常是一小条信息。然而,保密密钥也可能是困难的。如果攻击者以某种方式获取密钥,则他或她可以从加密数据中恢复原始消息。

使用相同密钥进行加密和解密的加密算法被称为对称加密密钥算法。还有非对称加密密钥算法,所述非对称加密密钥算法使用一对密钥,一个用于加密而一个用于解密。这些非对称加密密钥算法允许将一个密钥公开,同时仅在一个位置保留私钥。非对称加密密钥被设计为使得发现私钥是非常困难的,即使相应的公钥已知。用户在保密私钥的同时可以公布他或她的公钥,允许任何人向他们发送加密的消息。

为了使密钥连同对称加密算法“安全”,一般将80比特的长度视为最小值,并且128比特密钥被通常使用并被认为是非常强大的。公钥密码术中使用的密钥具有某种数学结构。例如,rsa系统中使用的公钥是两个素数的乘积。因此,公钥系统需要比对称系统更长的密钥长度以达到等同的安全级别。对于基于因数分解和整数离散对数的系统,建议密钥长度为3072比特,其目标是具有等同于128比特对称密码的安全性。

如上所述,如果对于基于对称和非对称算法两者的密钥而言都足够长,则有可能生成具有高度安全性的密钥。然而,在密钥分发中可能存在问题。例如,如果双方想使用对称密码术彼此通信,他们首先必须决定使用什么密钥,并且然后将该密钥安全地从一方分发到另一方。此外,双方必须保密该密钥。入侵者可能发现密钥的风险随着密钥使用的时间的增加而增加。因此,密钥通常仅在有限的时间期间有效,例如六或十二个月。此后必须分发新的密钥。

另外,对于非对称密码术加密的密钥分发,当双方想要彼此通信时遇到密钥分发的问题。为了在两个方向上发送信息,他们通常需要彼此交换公钥。同样在这种情况下,密钥通常具有有限的时间段,在该时间段期间密钥是有效的。对于与许多不同方进行通信的一方,管理和分发有效的公钥可能令人烦恼。一个典型的示例是当你需要将某一秘密信息紧急地发送给另一方或者你还没有交换公钥时,密钥的有效性已经过期。

在wo2011/002412中提供了一种解决方案,该解决方案公开了一种用于生成加密/解密密钥的方法,并且特别是用于生成用于对称加密的一次性加密/解密密钥,即其中使用相同的密钥用于加密和解密。为了开始密钥生成,第一终端(a)向中央服务器(2)发送用于建立与第二终端(b)的通信的请求。中央服务器(2)向两个终端(即终端a和b)发送密钥生成文件。每个终端生成不同的中间数据集合,即第一和第二数据集合。由第一终端(a)生成的第一数据集合被发送到第二终端(b),该第二终端基于该数据集合生成发送回第一终端的第三数据集合。终端(a)中的第一加密密钥的生成是基于第三和第一中间数据集合之间的逐比特比较,并且第二加密密钥的生成是基于第一和第二中间数据集合之间的逐比特比较。第一和第二加密密钥是相同的。

尽管这种方式具有许多优点,但是当在具有防火墙或其他类似安全措施的系统中实现时,可能会提出挑战。鉴于上述挑战,发明人已经意识到需要一种方法,利用该方法,双方可以彼此以安全的方式进行通信,而彼此不必事先交换密钥,并且该方法可以用于采用防火墙或其他类似安全措施的系统。

因此,需要加密密钥的改进处理。



技术实现要素:

本申请的教导的目的是通过提供一种包括第一终端和服务器的系统克服上述所列的问题,其中所述第一终端被配置为通过以下步骤认证服务器:生成第一认证令牌,所述令牌是一种数据结构,将用于向第二计算装置认证第一计算装置;并发送第一认证令牌到服务器,其中,所述服务器被配置为接收第一认证令牌并对该第一认证令牌进行认证;生成用于第一终端的第二认证令牌;以及将该第二认证令牌发送到第一终端,借以所述第一终端被配置为接收第二认证令牌并对该第二认证令牌进行认证,从而执行第一终端和服务器的相互认证。

本发明的另一个目的是通过提供一种供在包括第一终端和服务器的系统中使用的方法来克服上述所列的问题,其中所述方法用于通过以下步骤认证服务器:第一终端生成第一认证令牌,所述令牌是一种数据结构,将用于向第二计算装置认证第一计算装置;且第一终端发送第一认证令牌到服务器;服务器接收第一认证令牌并对该第一认证令牌进行认证;服务器生成用于第一终端的第二认证令牌;且服务器发送第二认证令牌到第一终端,第一终端接收第二认证令牌并对该第二认证令牌进行认证,从而执行第一终端和服务器的相互认证。

本申请的教导的目的还在于,通过提供一种计算机可读存储介质以克服上述所列的问题,该计算机可读存储介质编码有当在处理器上执行时执行根据上述的方法的指令。

本文中的教导在用于确保安全连接的系统中使用,诸如银行业务应用程序,但也在其中一个装置需要对其他装置进行认证的系统中使用,诸如连接到计算机的外部存储器。

所公开的实施例的其他特征和优点将从以下详细公开内容、从所附的从属权利要求以及从附图中显现。

通常,权利要求中使用的所有术语均应根据技术领域的术语的普通含义进行解释,除非本文另有明确定义。除非另有明确说明,否则所有对“一/一个/该[元件、装置、组件、部件、步骤等]”的引用被开放地解释为指代元件、装置、组件、部件、步骤等的至少一个实例。除非明确说明,否则本文公开的任何方法的步骤不必以所公开的确切顺序加以执行。

附图说明

将参考附图更详细地描述本发明,其中:

图1是根据本文中的教导的终端的示意图;

图2是根据本文中的教导的终端的组件的示意图;

图3是根据本文中的教导的计算机网络的总体视图的示意图;

图4示出了根据本申请的教导的一个实施例的计算机可读介质的示意图;

图5示出了根据本文中的教导的用于在系统中的第一终端和第二终端之间建立通信信道的方法的流程图;

图6示出了根据本文中的教导的用于在系统中安装终端的方法的流程图;

图7是根据本文中的教导的用于终端和服务器相互认证的一般方法的流程图;

图8是根据本文中的教导在相互认证期间完成的认证传输的示意概图;

图9示出了根据本文中的教导的实施例的元数据字符串和相应的认证令牌的示例;

图10a示出了根据本文中的教导的用于生成认证令牌的一般流程图;

图10b示出了根据本文中的教导的用于认证认证令牌的一般流程图;

图11示出了根据本文中的教导的用于生成对称加密密钥的方法的流程图;

图12是根据本文中的教导的在生成对称加密密钥期间完成的传输的示意概图;

图13是根据本文中的教导的用于根据本文从两个终端的密钥数据生成处理文件的一般方法的流程图;

图14是根据本文中的教导的用于生成对称加密密钥的方式的流程图;以及

图15示出了根据本文中的教导的系统通信的示意概图。

具体实施方式

现在将参考附图在下文中更充分地描述所公开的实施例,在附图中示出了本发明的某些实施例。然而,本发明可以以许多不同的形式实施,并且不应被解释为限于本申请所阐述的实施例;相反地,作为示例提供这些实施例,以使得本公开将详尽和完整,并将向本领域技术人员充分地传达本发明的范围。遍及全文相同的标号指代相同的元件。

图1示出了根据本文中的实施例的通信设备100。在一个实施例中,通信设备100被配置用于无线或有线的网络通信。在一个实施例中,通信设备100被配置用于无线和有线的网络通信。这种通信设备100的示例是:个人计算机、台式或膝上型计算机、互联网平板电脑、移动电话、智能电话、个人数字助理、服务器、电子密钥、机器对机器装置(m2m)和工作站等等。

通信设备100将在下文中将被例示和描述为个人计算机100。个人计算机或终端100包括显示器110和外壳120。外壳包括控制器或cpu(未示出)和一个或多个计算机可读存储介质(未示出),诸如存储单元和内部存储器。存储单元的示例是磁盘驱动器或硬盘驱动器。终端100还包括至少一个数据端口。数据端口可以是有线和/或无线的。数据端口的示例是usb(通用串行总线)端口、以太网端口或wifi(根据ieee标准802.11)端口。数据端口被配置为使得终端100能够与其他终端或服务器连接。

终端100还包括至少一个诸如键盘130的输入单元。输入单元的其他示例是计算机鼠标、触摸板、触摸屏或操纵杆等等。

图2示出了计算装置的一般结构的示意图。计算装置可以是如图1中的通信设备或服务器。在一个实施例中,计算装置是如下将进一步详细讨论的计算设备。在下面的描述中,计算装置将被公开为根据图1的终端。终端100包括控制器210,该控制器负责终端100的整体操作,并且优选地由任何市售cpu(“中央处理单元”)、dsp(“数字信号处理器”)或任何其他电子可编程逻辑装置来实现。控制器210可以使用能够实现硬件功能的指令来实现,例如通过使用在通用或专用处理器中可执行计算机程序指令,这些可执行计算机程序指令可被存储在计算机可读存储介质(磁盘、存储器等)240上以由这样的处理器执行。控制器210被配置为从存储器240读取指令并执行这些指令以控制终端100的操作。存储器240可以使用用于计算机可读存储器的任何公知技术来实现,诸如rom、ram、sram、dram、cmos、flash、ddr、eeprom存储器,闪存,硬盘驱动器,光学存储装置或其任何组合。

终端100还可以连接到诸如外部存储器245的外部装置,可能是u盘(通用串行总线)或外部硬盘驱动器的形式。在将这样的外部装置连接到终端后,然后作为包括终端和外部终端或装置245的设备。需要实现以使得外部装置能够与终端100协同工作的任何驱动程序更新或下载可以通过在控制器中执行的驱动程序应用程序或通过未示出的另一控制器来执行。

终端100还包括一个或多个应用程序250。应用程序是当由控制器210执行时控制终端100的操作的指令集。存储器240通过控制器210用于各种用途,其中一个用途是用于存储用于终端100中的各种软件模块的应用程序数据和程序指令250。软件模块包括实时操作系统、用于人机接口220的驱动程序、应用程序处理程序以及各种应用程序250。应用程序250可以包括消息传递应用程序,诸如电子邮件、浏览应用程序、银行业务应用程序以及各种其他应用程序250。

终端100还可以包括在图1的终端100中的用户接口220,该用户接口由显示器110、小键盘130组成。显示器110可以是触摸显示器,可以在该触摸显示器上虚拟键(未示出)显示和操作。这样的虚拟键可以替代任何或所有的物理键130,如果没有明确地说明,将不会有差异。

用户接口(ui)220还包括一个或多个硬件控制器,该一个或多个硬件控制器与ui驱动程序一起与显示器110、小键盘130以及诸如声音系统、led指示器等的各种其他i/o装置协同工作。众所周知,用户可以通过如此形成的人机接口来操作终端100。

终端100还可以包括射频接口230,该射频接口适于允许终端通过使用不同的射频技术通过无线电频带与其他装置通信。这样的技术的示例有wifi、蓝牙w-cdma、gsm、utran、lte、nmt等等。

终端100还可以包括有线接口235,该有线接口适于允许终端通过使用不同的网络技术与其他装置通信。这样的技术的示例有usb、以太网、局域网、tcp/ip(传输控制协议/互联网协议)等等。

控制器210被配置为使用存储在存储器240中的软件,通过rf接口230和/或有线接口235可操作地执行诸如网页浏览或电子邮件应用程序的应用程序250,该软件包括用来为rf接口230和有线接口235以及可选地用于本地连接的蓝牙接口和/或irda接口提供通信服务(例如传输,网络和连接)的各种模块、协议栈、驱动程序等。rf接口230包括内部或外部天线以及用于建立和维持到基站的无线链路的适当的无线电电路。如本领域技术人员所熟知的,无线电电路包括一系列模拟和数字电子组件,一起形成无线电接收器和发射器。这些组件包括,即,带通滤波器、放大器、混频器、本地振荡器、低通滤波器、ad/da转换器等。

图3示出了根据本文中的实施例的计算机网络300的示意概图。诸如图1或图2的终端100的两个终端100a、100b通过网络或其他连接330连接,在一个示例中经由互联网。两个终端可以通过有线连接或无线连接或已知连接方法的任何组合连接,例如通过专用网络或连接。在图3中,有两个终端100a和100b,其中一个是台式计算机100a,另一个是智能电话100b。应当注意,任何终端都可以连接到互联网,并且图3中的终端100的数目和类型不应被解释为限制。计算机网络300还包括至少一个服务器340。在图3中,仅示出了一个服务器340,但是应当注意,可以在计算机网络300中实现任意数目的服务器340。通常,服务器是专用于运行一个或多个服务(作为主机)的物理计算机(硬件系统),以服务网络300上的其他计算机或终端100a、100b的用户的需要。根据服务器提供的计算服务,服务器可以是数据库服务器、文件服务器、邮件服务器、打印服务器、网络服务器或其他。

在一个实施例中,服务器340是网络服务器340。通常,网络服务器340可以指代帮助递送内容的硬件(计算机)或软件(计算机应用程序),该内容可以通过相互通信网络,诸如互联网330,被访问。

互联网330是使用标准互联网协议组(tcp/ip-传输控制协议/互联网协议)来服务全世界数以亿计的用户的互联计算机网络的全球系统。它是由数以百万计的私人、公共、学术、商业和政府网络组成的网络的网络,本地到全球范围的网络,这些网络通过各种各样的电子、无线和光学联网技术进行链接。互联网承载多种多样的信息资源和服务,诸如万维网(www)相互链接的超文本文件。

如对于本领域的读者将显而易见的,如何连接两个终端的可能性和变化性充满了互联网,并且本文公开的实施例仅单纯出于示例性目的,而不应被理解为限制。

即使本文中的公开内容集中在终端和服务器之间的通信网络上,本文中的教导也可以用在用于在两个装置之间建立安全连接的设备300内,诸如连接到个人计算机的外部存储器。参考图3,然后将第一装置100a连接到第二装置100b。如本领域技术人员已知的,通信将通过数据总线或其他内部通信网络建立。在装置100a和100b中的一个(或两者)中或者可替换地在另一个未示出的装置中,诸如设备30的控制器中运行的服务器应用程序对应于图3的服务器340。参考图2,这样的设备300可以被设想成外部装置245要被连接到的终端100。然后可以通过控制器来实现根据本文中的教导的安全通信信道的建立,该控制器可能通过由控制器210,或由另一个驱动控制器执行的服务器应用程序用作服务器。服务器可能是通过有线或无线通信信道接触的外部安全服务器,用以处理本地总线或其他装置内通信硬件的通信交换地址的建立。

应当注意,在本上下文中的外部装置可以在一个实施例中被理解为要连接到终端的装置。其在此后可能是终端100的或多或少永久性的组件,也可能是在终端100内部。

图4示出了如上所述的计算机可读介质的示意图。计算机可读介质40在本实施例中是数据光盘40。在一个实施例中,数据光盘40是磁数据存储盘。数据光盘40被配置为承载指令41,当指令41被加载到诸如处理器的控制器中时,执行根据上述公开的实施例的方法或过程。数据光盘40被布置成连接到读取装置42或位于读取装置42内并由读取装置42读取,以便将指令加载到控制器中。与一个(或几个)数据光盘40组合的读取装置42的一个这样的示例是硬盘驱动器。应当注意,计算机可读介质也可以是诸如光盘、数字视频盘、闪速存储器或其他通常使用的存储器技术的其他介质。在这样的实施例中,数据光盘40是一类有形计算机可读介质40。

通过在计算机可读信号43中包括指令41,指令41还可以被下载到计算机数据读取装置44,诸如计算机或能够读取计算机可读介质上的计算机编码数据的其他装置,该计算机可读信号43是经由无线(或有线)接口(例如经由互联网)传送到计算机数据读取装置44的,以便将指令41加载到控制器中。在这样的实施例中,计算机可读信号43是一类非有形计算机可读介质40。

指令可以存储在计算机44的存储器(图4中未明确示出,但在图2中被标记为240)中。

对计算机程序、指令、代码等的引用应当被理解为包含用于可编程处理器或固件的软件,诸如例如硬件装置的可编程内容,无论是用于处理器的指令还是用于固定功能装置、门阵列或可编程逻辑装置等的配置设置。

发明人已经意识到,如果以巧妙且有见地的方式修改方式,则可以在使用诸如防火墙的安全措施的系统中使用与wo2011/002412类似的方式。图5示出了用于在两个终端之间建立相互安全连接的这种方式的概述。

图5示出了根据本文中的教导的用于在如图3中的系统300中的第一终端100a和第二终端100b之间建立通信信道的方法的流程图。

在建立连接之前,在相关应用程序的通信网络300中安装或发起诸如图3的第一终端100a和/或第二终端100b的终端510。这样的应用程序可以是银行业务应用程序、安全通信应用程序或需要在通信中的双方被识别的任何其他应用程序。在一个实施例中,这样的应用程序是当一个装置要连接到设备的另一装置时。

安装由将要被安装的请求发送到服务器340的终端100执行。服务器340通过将关于密钥生成的信息或数据发送回接收密钥生成数据的终端100进行响应。这样的密钥生成数据由此被分发515。

将参考图6给出关于将终端100安装到系统300中的更多细节。

当已安装了第一终端100a时,可能需要与另一终端100b建立安全通信。

在其中整体应用程序是银行业务应用程序的一个示例实施例中,第一终端100a表示客户端,而第二终端100b表示银行。服务器340可以由相互银行合作、银行本身或安全连接提供商来托管。

为了建立这样的安全连接,第一终端100a通过向服务器340发送第一会话请求520来发起建立。第一会话请求包括用于第二终端100b的识别符,该第二终端100b是第一终端想要与之建立通信的终端。在一个实施例中,信道数据的识别符可以是互联网协议通信信道的地址(诸如统一资源定位符地址(url)或互联网协议(ip)地址)。

服务器340发起或建立会话信道530,并且以第一会话响应535来响应,第一终端100a接收的第一会话响应535指示会话信道的识别符和用于第二终端100b的密钥数据。然后,第一终端100a向第二终端100b发送第二会话请求。第二会话请求包括第一终端100a的识别和第一终端100a的密钥加密种子。

当第二终端100b从第一终端100a接收到第二会话请求时,第二终端100b向服务器340发送第三会话请求550。第三会话请求包括用于第一终端100a的识别符和/或用于当前会话的识别符。服务器340确定是否允许第一终端100a与第二终端100b连接,如果是,则向第二终端100b发送第二会话响应560,其中第二会话响应包括用于会话信道的识别符以及关于用于第一终端100a的密钥产生的数据。

当第二终端100b接收到第二会话响应时,第二终端100b可以确定第一终端被允许与第二终端100b建立连接。第二终端100b此后向第一终端100a发送第三会话响应570,该第三会话响应包括密钥数据和用于终端100b的密钥加密种子。

因此,第二终端100b和第一终端100a两者都已经从服务器340接收到了密钥数据和彼此的密钥加密种子。基于此,第一终端和第二终端生成用于在发起的会话信道上加密要发送的数据的对称加密密钥580,并且从而建立信道590。

参考图12、13和14给出关于如何生成对称加密密钥的更多细节。

在wo2011/002412的教导中将找到生成这种对称加密密钥的一种替代方式。

以这种方式,由于两个终端已被服务器340认证,所以第一终端100a和第二终端100b都可以确定另一终端的身份和可信性。终端还能够生成对称加密密钥而不必彼此之间交换完整密钥,也不必与服务器340交换完整密钥,诸如对称密钥。

此外,服务器由终端100a和100b两者进行认证。在现有技术示例中只有服务器认证终端,而不是根据本文中的教导的另一方式。

参考图6和图7在相互认证中给出了关于这种相互认证的更多细节。

注意,安全通信信道的整个建立由来自终端的活动提示来执行,响应被提供至该终端,从而使得能够在采用诸如防火墙的安全措施的系统中将使用通信系统建立。

端的安装

为了确保要安装在系统300中的终端被信任,并且为了确保在终端和服务器之间传送的任何安装数据不被第三方滥用,本申请的作者设计出了一种安全的安装方式,其中密钥数据不被全部发送,从而使其对任何拦截通信的第三方是无用的。图6示出了根据本文中的教导的用于将终端100安装在如图3中的系统300中的一般方法的流程图。

由于将在系统中安装终端100,诸如安装在图5中标记为510的终端时,服务器通过生成随机识别数,节点id,511和随机加密密钥,标记为y,512来建立用于终端100的账户。

随机识别数和随机加密密钥然后以安全的方式分发到要安装的终端100。它们可以通过普通邮件、电子邮件、文本消息(诸如短消息服务(sms)消息传递,或其他安全信道分发。

随机识别数和随机加密密钥可能由用户或者由(另一个)安全应用程序输入513到终端100中,在该终端中100可能通过使用作为随机识别数和随机加密密钥一部分的校验和来检查随机识别符和随机加密密钥以查看它们是否正确。

终端100然后通过随机识别符,节点id向服务器300识别514该终端本身,并因此由服务器340识别。

然后,服务器生成两个随机加密密钥种子,密钥数据种子和元数据种子,通常称为数据种子。

密钥数据种子可以具有例如128或256比特长度。元数据种子可以具有例如128或256比特长度。

使用这些种子,服务器生成密钥数据和元数据。密钥数据是被用于生成对称加密密钥的数据,并且元数据与密钥数据一起使用或不与密钥数据一起使用以生成认证令牌,这将在下面进一步描述。

密钥数据可以是128、256、512或1024比特长度。元数据可以是8192比特长度。

为了防止窃取,服务器340仅将密钥生成种子分发515到终端100,也就是说,仅将密钥数据种子和元数据种子分发到终端100。这确保了实际的密钥数据和元数据被保密在服务器340中。

密钥数据和元数据在被分发到终端100之前使用随机加密密钥来对所述密钥数据和元数据进行加密。并且终端100使用随机加密密钥来解密密钥数据和元数据。

然后,终端100通过使用与服务器340所使用的函数相同的函数来生成密钥数据和元数据。该函数可以与随机识别符和随机加密密钥一起分发,或者可以单独分发,其中随机识别符和/或随机加密密钥是函数的参数,和/或该函数可以在终端和/或服务器中实现。在一个实施例中,该函数是密码散列函数,诸如feistel网络。

已知用于生成数字的数个函数,将不在本文进一步详细讨论。对于函数重要的唯一特征在于终端100使用与由服务器340使用的函数相同的函数。

种子与要生成的相应数据相比要小得多,并且服务器340仅需要将更小的种子传送到终端,由此节省带宽并且增加安全性,因为在没有函数的情况下种子是无价值的。

因此,服务器340和终端100两者都生成密钥数据和元数据516。

由终端100基于密钥数据和/或元数据生成认证令牌517,并且将认证令牌发送到服务器340,服务器340对认证令牌进行认证518,服务器可以访问认证令牌所基于的密钥数据和元数据。

下面将参考图10a和图10b给出关于如何生成并且认证认证令牌的更多细节。

如果认证令牌被认证,则终端100的身份(诸如识别)被存储在服务器340中。在一个实施例中,终端100的识别是节点id。在一个实施例中,终端100的识别是终端100的imsi(国际移动用户识别)、imei(国际移动设备识别符)和/或(一个或多个)序列号。在一个实施例中,终端100的识别是应用程序识别符,该应用程序识别符被提供有利用如本文中的教导所教导的安全通信信道的应用程序。

对于其中终端是外部装置的实施例,用于外部装置的节点id可以与外部装置一起提供,或者在外部装置245注册时被发送给用户或外部装置。

相互认证

由于已经安装了终端100a并且尝试与诸如银行应用程序服务器的第二终端100b建立通信信道,其中通信信道由安全服务器340管理,可能是相同银行服务器的一部分或者实现在相同银行服务器中,待认证的终端100a将由安全服务器340进行认证,在下文中和上文中安全服务器340被称为服务器340。在终端100a被服务器340认证之后,向终端100a提供建立与第二终端100b的安全通信所需的密钥数据。

然而,在现今社会,许多诈骗都是通过互联网运行的,这是需要安全通信信道的原因。然而,本发明人已经意识到,所有这样的安全通信系统都固有存在一个潜在的问题,因为使用当今的先进技术,第一终端100a(或第二终端100b)两者都不能确定服务器340实际上是被信任的。服务器340的地址实际上可能已被恶意的诈骗操作者所劫持,恶意的诈骗操作者可提供导致加密的密钥数据,诈骗操作者然后可以对该加密进行解密。

意识到这个问题存在,并且通过深刻的推理和创造性思考,本申请的发明人已经设计了一种方式,其中也认证服务器340。

对于在诸如终端100的设备300中安装外部装置245的实施例,这样的认证用于保护敏感数据不被另一装置或替换的操作软件所读取,所述另一装置是设备300的一部分或后来被连接至设备300。因此,相互认证用于防止通过简单地替换一些组件(承载软件代码的存储器)或其他装置来获得对受保护装置的访问。

图7是根据本文中的教导的终端100和服务器340的相互认证的一般方法的流程图,而图8是在这样的相互认证期间完成的认证传输的示意概图。以下将同时参考图7和图8给出这样的认证的详细描述。

第一终端100a通过生成认证令牌at1-s(此标记指示它是从终端1到服务器s的认证令牌),且可能与会话请求一起发送710到服务器340来发起认证。或者,在认证已成功完成后发送会话请求。应当注意,终端100a、100b中的任何一个都可以发起认证。服务器340也可以发起认证。服务器可以通过提示第一终端100a(或第二终端)提供认证令牌来发起认证。

服务器340接收认证令牌at1-s并认证该认证令牌715。

认证令牌可以是用于终端的识别符(诸如节点id),该识别符可能用先前接收的随机加密数字进行加密,该随机加密数字仅对第一终端100a和服务器340已知。认证令牌也可以是仅对服务器340和终端100a已知的另一字符串或数字,该另一字符串或数字可能通过已知协议或算法确定,并且也可以用随机加密数字进行加密。

为确保认证是安全的,使用大的字符串是有益的,因为这样的字符串比较难以猜中。这样的字符串是仅对服务器340和终端100已知的元数据。这样的问题在于,每次进行认证时都必须发送大文件,并且如下面将公开的那样,元数据也将与第二终端共享,从而将元数据泄漏给第二终端,该第二终端不应该具有第一终端100a的元数据知识。然而,使用元数据将是有益的,因为它是难以恶意获得的大字符串,并且仅对服务器340和终端100已知。

因此,发明人已设计了从元数据设计认证令牌的巧妙且简单的方式,其中从该元数据中随机选择多个块或部分。

认证令牌

图9示出了元数据字符串mts和对应的认证令牌at的示例。在图9的示例中,元数据字符串仅包括40个字符,然而应当注意,元数据字符串mts的实际长度优选地更长。在一个实施例中,长度为8192比特。此外,在该示例中使用的部分的数目是四个,并且每个部分的长度是2,但在实际的实施方式中一个部分的长度应该是64-128比特,并且在一个实施例中该部分的长度是96比特。应当注意,在认证令牌内部分的长度也可以变化,部分的数目也可以变化。在其中部分的数目变化的实施例中,认证令牌的头部(header)可以用于指示部分的数目。在其中一个或多个部分的长度变化的实施例中,认证令牌的头部可以用于指示部分的长度,或者每个部分可以由该部分的长度发起。

所述四个部分通过索引来参考。索引可以随机地或通过已知函数来选择,诸如随机数生成器,例如,使用种子。上面已经在如何在系统中安装终端的公开内容中给出了这样的函数的示例。

在其中种子被用于函数来生成索引的这样的实施例中,只有种子可能是必要在认证令牌中传送的。

索引应该具有足以充分地寻址较大数据集合的长度,所述较大数据集合即元数据字符串(mts)。对于8192比特的元数据,索引必须具有13比特的长度。也可以作为下一部分的若干步骤数来给出索引,其中假设下一部分至少在元数据的下一半内,索引长度可以减少一个比特。

可以在认证令牌的头部中给出索引或种子。索引也可以作为每个部分的头部给出。图9示出了这样的认证令牌的三个示例,其中在头部中给出种子,在头部中给出四个索引,并且其中四个索引作为每个部分的头部给出。在所有三个示例中,种子为24,并且索引为3、7、13和16,并且相应的部分分别为“as”,“or”,“lp”和“it”。

应当注意,如上所述,将示例索引和部分长度以及元数据字符串mts的长度缩短以更容易地说明本文中的教导。

通过仅发送元数据的部分,确保终端100和服务器340可以被认证而不浪费带宽,并且不泄漏敏感信息,因为只有元数据的部分被传送。

然后可以通过简单地将所述部分与元数据中的对应部分进行比较来对认证令牌at进行认证。通过索引来检索对应的部分,所述索引是作为认证令牌的一部分被接收的或作为认证令牌的一部分的种子的函数被检索的。

索引也可以基于定时函数给出,诸如当日时间或计数器。计数器必须以认证令牌可以被生成、发送和接收的速度递增。

图10a示出了根据本文中的教导的用于生成认证令牌的一般流程图,并且图10b示出了根据本文中的教导的用于认证认证令牌的一般流程图。

通过生成至少一个索引1010来生成认证令牌at。如上文已经讨论的,索引的数目可以在实施方式内以及实施方式之间变化。在一个实施例中,索引的数目是4。

索引可以被生成为随机选择的数字,或者通过随机选择的种子与函数一起使用。

此后,从诸如元数据(图9中的mts)的较大数据集合中检索1020至少一个部分,并将该部分连同索引(或种子)一起打包到诸如图9中所示的数据结构1030中。

当接收到认证令牌1040时,索引被检索1050(从认证令牌中或通过使用基于种子的函数),并且从本地存储的数据集合,诸如元数据中检索(一个或多个)对应的部分。然后将该(一个或多个)对应的部分与接收到的(一个或多个)部分进行比较1080,并且如果它们匹配则认证令牌被认证。

可以逐比特或通过任何其他已知的比较进行比较。逐比特比较的益处是执行快速。

如果索引被选择太靠近数据集合的结尾,使得没有剩下足够的字符或比特来完成部分,则可以从数据集合的开始获取其他的或缺少的字符或比特,即,数据集合是循环的。

在上文中,在包含字符的数据集合和包含比特的数据集合之间没有区别。如技术人员将理解的,可以在本文中的教导的范围内容易地替换这样的实体。

对于8192比特并且具有每个96比特的四个部分或块的元数据集合,认证令牌为4×96+4×13(索引需要至少为13比特,以正确地寻址8192比特)=436比特。因此,不仅在元数据保密的情况下单独发送认证令牌比发送元数据更安全,而且所需的带宽也减少了大约95%。

在一个实施例中,该索引被选择为能够寻址多于该元数据,并且然后通过在元数据大小的索引模块(modula)处寻址该元数据可以容易地找到对应的部分。因此在具有8192比特的元数据的示例中,在索引模块8192处将找到用以检索部分的地址。

根据上面的描述可以清楚,可以由终端和服务器两者生成并认证认证令牌。事实上,认证令牌可以由任何计算装置生成,图1和图2的终端和图3的服务器是这样的计算装置的示例。外部装置也可以是这样的计算装置。

返回到图7和图8以及相互认证,当服务器340已对从第一终端100a接收到的认证令牌at1-s进行认证时,服务器生成720一个针对第一终端100a的认证令牌ats-1和一个针对第二终端100b认证令牌ats-2,并将两个认证令牌ats-1,ats-2都发送725到第一终端100a。

在一个实施例中,服务器340加密针对第二终端100b的认证令牌ats-2。可以使用用于第二终端100b的元数据的一部分来加密认证令牌,并且在这样的实施例中,认证令牌可以被配置为包括指示加密索引的另外的字段,该另外的字段指示将在元数据中何处找到用于加密认证令牌的加密密钥。因此,加密索引是不加密传送的。这避免任何恶意攻击者伪装成第二终端100b解密认证令牌ats-2。

当第一终端100a接收到730该两个认证令牌ats-1和ats-2时,第一终端100a认证735从服务器340接收到的第一认证令牌ats-1。

由于第一终端100a不能访问第二终端100b的元数据,所以它不能对从服务器340接收到的第二认证令牌ats-2进行认证。然而,通过服务器340将目的在于第二终端100b的认证令牌发送到第一终端100a,通过第二终端100b实现服务器340的附加认证。

如果从服务器340接收到的第一认证令牌ats-1认证成功,则第一终端100b继续进行由第二终端100b实现的附加认证。为此,第一终端将从服务器340接收到的第二认证令牌ats-2发送740到第二终端100b。第二终端100b接收并认证745认证令牌ats-2。如果认证成功,则已通过第一终端100a和第二终端100b两者认证服务器340。因此实现了高度安全性的相互认证。

然而,由于认识到,如果恶意的诈骗操作者已经能够劫持第一终端100a和服务器340之间的通信信道,则用于第二终端2的认证令牌也可能潜在地被泄露。为了更进一步提高认证的安全性,第二终端100b有利地被配置为也对服务器340进行认证。

当第二终端100b已认证了通过第一终端100a从服务器340接收到的并且目的在于第二终端100b的认证令牌ats-2时,该第二终端继续使用其自身到服务器340的通信信道认证服务器340。

因此,第二终端为服务器340生成认证令牌at2-s,并将其发送750到服务器340。服务器340接收认证令牌at2-s并对其进行认证755。如果认证成功,则第二终端100b被服务器340认证,并且服务器340生成760针对第一终端100a的一个认证令牌ats-1和针对第二终端100b的一个认证令牌ats-2,并发送765认证令牌ats-1、ats-2两者到第二终端100b。

当第二终端100b接收到770两个认证令牌ats-1和ats-2时,第二终端100b认证从服务器340接收到的第二认证令牌ats-2,如果成功则向第一终端100a发送第二认证令牌ats-1,第一终端100a认证780通过第二终端100b从服务器340接收到的目的在于该第一终端100a的认证令牌ats-1。

因此服务器340不仅由第一终端100a认证,而且还由第二终端100b代表第一终端100a认证。因此,两个终端彼此协助认证服务器340。此外,第二终端100b通过经由第二终端100b从服务器340接收到的认证令牌被第一终端100隐含地认证。而且,使用两个不同的通信信道对服务器340进行认证,从而使得诈骗操作者非常难以恶意地将自身识别为安全服务器340。

对称加密密钥的生成

当两个终端100和服务器340已被认证时,生成对称加密密钥。参考图5,终端100在被安装时接收515密钥生成数据,并且基于该密钥生成数据生成516密钥数据。密钥数据将用于生成将在下文中公开的对称加密密钥。对称加密密钥将用于加密第一终端100a和第二终端100b之间的通信。如上所述,第一终端100a可以是安全服务的客户端,并且第二终端100b可以是服务的提供商。

或者,第一终端100a可以是要连接到设备300的外部装置245,其中第二终端100b表示设备300。

生成的密钥数据仅对第一终端100a和服务器340已知,并且第二终端100b不知道该密钥数据。这样使得能够在建立通信连接而不交换相应终端的密钥数据的情况下提高安全性,从而使恶意的诈骗操作者难以拦截任何密钥数据。

为此,发明人已设计了一种简单且巧妙地从相应终端的密钥数据产生对称加密密钥而不实际共享密钥数据的方法。

图11示出了生成这样的对称加密密钥的方法的流程图,并且图12是根据本文中的教导在生成对称加密密钥期间完成的传输的示意概图。

第一终端100a通过发送针对待生成的对称加密密钥580的请求开始。该请求可以根据图5作为会话建立请求的一部分被发送,或者可以独自被发送。该请求也可以在之前的请求中隐含。然后,服务器340继续生成581返回582到第一终端100a的第一处理文件pf1。

然后,第一终端100a从第一处理文件pf1提取583组合的密钥数据。然后,第一终端100a生成第一随机密钥种子,该第一随机密钥种子被加密并发送到第二终端584。第二终端100b还向服务器340发送580用于生成对称加密密钥的请求,而服务器340生成并发送585第二处理文件pf2到第二终端100b。

第二终端100b然后从第二处理文件pf2中提取586组合的密钥数据,并生成第二随机密钥种子,该第二随机密钥种子被发送587到第一终端100a。然后第一和第二终端100两者都各自生成588、589对称加密密钥。

图13是根据本文的一般方法的流程图,用于从两个终端的密钥数据生成处理文件pf。用于第一个终端的密钥数据将被标记为kd1,并且用于第二个终端的密钥数据将被标记为kd2。

当将要生成581处理文件时,在用于每个终端的密钥数据上进行逐比特and操作而生成组合的密钥数据5811(被标记为ckd),即:

ckd=kd1andkd2。

然后生成用于相关终端的密钥数据的相反数5812,即,生成~kd,且将~kd经过函数f5813,其中每1比特以例如10%、25%、50%的概率变化为0比特,或者以10-80%、20-70%或25-50%范围内任意一个的概率变化为0比特。所得到的经变化的比特串可以被标记为f(~kd)。然后,作为组合的密钥数据和所得到的经变化的比特串之间的逻辑or,生成处理文件5814。即:

pf1=ckdorf(~kd1)=(kd1andkd2)orf(~kd1),以及

pf2=ckdorf(~kd2)=(kd1andkd2)orf(~kd2)

所生成的处理文件pf因此完全不同于密钥数据,并且也与组合的密钥数据完全不同,因此相应的密钥数据对另一个终端保密,并且组合的密钥数据和相应的密钥数据两者都对外界保密。

当已接收到处理文件时,通过简单地执行处理文件与相应的终端的密钥数据的逻辑或逐比特and来提取组合的密钥数据(图11中的583/586),即:

ckd=pf1andkd1以及

ckd=pf2andkd2。

为了说明以上内容,下面给出了一个示例。应当注意,出于说明的目的,该示例被限制为8比特,而在现实生活实施方式中,应当使用更长的串,例如128比特、256、512、1024比特,因为更多比特提供更高的安全性。

示例

kd110001110

kd201111101

ckd=kd1andkd200001100

~kd101110001

f(~kd1)01010000

pf1=ckdorf(~kd1)01011100

提取

ckd=pf1andkd100001100

当已提取组合的密钥数据时,在传输期间保持该组合的密钥数据安全地隐藏在处理文件中的同时,将生成对称加密密钥。图14是根据本文中的教导的用于生成对称加密密钥的示例方式的流程图。

通过将先前为每个终端生成的组合的密钥数据和随机密钥种子(第一终端为584,第二终端为587)作为种子为每个终端100输入到函数,诸如加密散列函数或异或函数(xor)5801中,由两个终端100最终生成对称加密密钥588/589。在一个实施例中,该函数用以重复随机密钥种子8次以成为例如512比特的扩展随机密钥种子,并对组合的密钥数据和扩展随机密钥种子执行异或函数。可能使用模函数从经异或(xor)的值获取128比特,从而产生半个对称密钥。该步骤由先前已经接收到另一终端的随机密钥种子的两个终端100执行。在一个实施例中,结果是对于每个终端例如128比特的比特串,并且两个比特串连接到由此生成的对称加密密钥中。

对称加密密钥是会话建立的结果,并且该对称加密密钥将在第一终端100a和第二终端100b之间的通信期间使用,以用于对通信进行编码和解码。

应当注意,尽管用于相互认证的流程和用于生成对称加密密钥的流程已经被公开为单独的流程,但它们可以是相同流程的部分,并且在任一流程的传输中要发送的数据可以被组合成公共传输以减少带宽并且使认证流程并行化。

密钥数据的变异(mutation)

为了防止恶意攻击者试图劫持密钥数据或其他加密数据,本申请的发明人提出了一种变异或改变密钥数据的简单解决方案。应当注意,元数据、密钥数据和对称加密密钥可以单独地或集体地变异。

在一个实施例中,该元数据一天变异一次,因为其主要用于认证目的。

在一个实施例中,密钥数据在会话期间在每个会话建立时变异或每隔一定时间变异或当有来自第一终端的提示时变异。

在一个实施例中,该对称加密密钥在会话期间每隔一定时间变异或当有来自第一终端的提示时变异。

用以变异该对称加密密钥的一个方式是建立新的会话。在该会话建立期间将变异密钥数据,并且因此对称加密密钥也被变异。然而,这消耗计算机资源和时间两者来执行完整的会话建立。一种更快的方式是仅变异该对称加密密钥。这仅在终端处完成;未涉及服务器。

这取决于安全应用程序决定何时完成变异。例如在聊天应用程序中,可能针对每个被发送至另一终端的消息来变异该对称加密密钥是适当的。在时间关键的应用程序中,例如,每十个包(package)就进行变异可能是较佳的,或者甚至完全不进行变异。

这取决于发起终端(发送者)来控制新的包是否应该具有经变异的对称加密密钥。这通过对每个通信包添加一个版本号,对称加密密钥版本,来完成。如果发起终端想要使用此特征,则它必须对每个发送的包增加该变量。

在服务器设置时,该对称加密密钥版本初始被设为0。如果该发送者从未改变这个值,则将不会发生变异。另一方面,如果发送者,例如,在头四个包中使用值3、7、13、14,则响应终端需要对相应的包变异3、4、6、1次。

接收第一终端始终检查其接收到的每个通信包的版本号。如果版本号已经改变,则该接收终端必须在解密该消息之前相应地变异该对称加密密钥。如果该值大于先前的包,则该接收终端只要变异适当的次数。如果该值较小,则该接收终端必须使用具有对称加密密钥版本=0的对称加密密钥并重新开始。

对称加密密钥的变异可使用512比特的加密散列函数并使用当前对称加密密钥作为输入来完成。

系统概述

图15示出了根据本文中的教导的系统通信的示意概图。图15中所示的系统300可以是如上所述的系统300或设备300。

第一终端100a发起与服务器340和作为响应终端的第二终端100b的建立,如上面参考图5、6、7、8、9、10a、10b、11、12、13和14已公开的那样。

当已经生成对称加密密钥时,第一终端100a和第二终端100b能够通过建立的通信信道安全地通信。

本文中的教导的一个益处在于可以由两个通信终端生成对称加密密钥,而不必在终端或其他装置之间共享该对称加密密钥。

以上已经参考几个实施例主要描述了本发明。然而,如本领域技术人员容易理解的那样,除以上所公开的实施例以外的其它实施例同样可能落入本发明的范围内,本发明的范围由所附的专利权利要求所限定。

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