本公开一般涉及计算机技术领域,具体涉及信息处理安全领域,尤其涉及一种非对称白盒密码加密方法和装置。
背景技术:
在数据传输和存储中,为了信息安全考虑,通常需要对数据加密。目前的加密主要假定对数据的攻击者无法接触到加密运行的环境,也不能控制加密数据存储的环境,也无法接触加密时的算法和密钥。即,加密的过程和加密数据的存储作为一个“黑盒”存在,无法被攻击者获知。
然而,实际上,在一些情况下,数据的攻击者是能够接触到加密运行的环境的,甚至能够取得对数据加密、加密数据存储环境的控制。这样,他们很容易通过数据加密、加密数据存储环境中的一些中间数据、环境数据等以反向工程的方式推知加密算法和密钥等,从而攻击数据。因此,提出了在攻击者能够取得对数据加密、加密数据存储环境的控制时如何实现信息安全的需求,即在把加密的过程和加密数据的存储看成“白盒”的情况下,如何实现信息安全。
技术实现要素:
鉴于现有技术中的上述缺陷或不足,期望提供一种在攻击者能够取得对加密数据运行、存储环境的控制时实现信息安全的方案,即在把加密数据的运行和存储看成“白盒”的情况下,实现信息安全的方案。
第一方面,本申请实施例提供了一种非对称白盒密码加密方法,所述方法包括:接收来自消息发送终端的加密消息、加密流水号,其中,加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号;将接收的加密消息与加密流水号对应保存;响应于获取消息内容的请求,将对应保存的加密消息和加密流水号发送到认证中心,以便认证中心对消息接收终端的身份进行认证并认证通过后,根据认证中心向消息发送终端返回消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥,按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;从认证中心接收解密得到的消息内容。
第二方面,本申请实施例提供了一种非对称白盒密码加密方法,所述方法包括:接收来自消息接收终端的加密消息、加密流水号,其中,加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到并发送到消息接收终端的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号,以便消息接收终端将该加密流水号与加密消息一起发给认证中心;对消息接收终端的身份进行认证;如果认证通过,根据向消息发送终端返回的消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥;按照查找到的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;发送解密得到的消息内容到消息接收终端。
第三方面,本申请实施例提供了一种非对称白盒密码加密方法,所述方法包括:向认证中心发送消息分组方案和加密公钥请求;如果认证中心对消息发送终端的身份认证通过,接收来自认证中心的消息分组方案、与每个组对应的加密公钥、以及加密流水号;按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密,得到加密消息;将加密消息连同加密流水号发送到消息接收终端。
第四方面,本申请实施例提供了一种非对称白盒密码加密装置,所述装置包括:第一接收单元,配置用于接收来自消息发送终端的加密消息、加密流水号,其中,加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号;第一保存单元,配置用于将接收的加密消息与加密流水号对应保存;第一发送单元,配置用于响应于获取消息内容的请求,将对应保存的加密消息和加密流水号发送到认证中心,以便认证中心对消息接收终端的身份进行认证并认证通过后,根据认证中心向消息发送终端返回消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥,按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;第二接收单元,配置用于从认证中心接收解密得到的消息内容。
第五方面,本申请实施例提供了一种非对称白盒密码加密装置,所述装置包括:第三接收单元,配置用于接收来自消息接收终端的加密消息、加密流水号,其中,加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到并发送到消息接收终端的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号,以便消息接收终端将该加密流水号与加密消息一起发给认证中心;第一认证单元,配置用于对消息接收终端的身份进行认证;查找单元,配置用于如果认证通过,根据向消息发送终端返回的消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥;解密单元,配置用于按照查找到的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;第二发送单元,配置用于发送解密得到的消息内容到消息接收终端。
第六方面,本申请实施例提供了一种非对称白盒密码加密装置,所述装置包括:第五发送单元,配置用于向认证中心发送消息分组方案和加密公钥请求;第五接收单元,配置用于如果认证中心对消息发送终端的身份认证通过,接收来自认证中心的消息分组方案、与每个组对应的加密公钥、以及加密流水号;加密单元,配置用于按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密,得到加密消息;第六发送单元,配置用于将加密消息连同加密流水号发送到消息接收终端。
第七方面,本申请实施例提供了一种设备,包括处理器、存储器和显示器;所述存储器包含可由所述处理器执行的指令以使得所述处理器执行:接收来自消息发送终端的加密消息、加密流水号,其中,加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号;将接收的加密消息与加密流水号对应保存;响应于获取消息内容的请求,将对应保存的加密消息和加密流水号发送到认证中心,以便认证中心对消息接收终端的身份进行认证并认证通过后,根据认证中心向消息发送终端返回消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥,按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;从认证中心接收解密得到的消息内容。
第八方面,本申请实施例提供了一种设备,包括处理器、存储器和显示器:所述存储器包含可由所述处理器执行的指令以使得所述处理器执行:接收来自消息接收终端的加密消息、加密流水号,其中,加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到并发送到消息接收终端的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号,以便消息接收终端将该加密流水号与加密消息一起发给认证中心;对消息接收终端的身份进行认证;如果认证通过,根据向消息发送终端返回的消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥;按照查找到的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;发送解密得到的消息内容到消息接收终端。
第九方面,本申请实施例提供了一种设备,包括处理器、存储器和显示器;所述存储器包含可由所述处理器执行的指令以使得所述处理器执行:向认证中心发送消息分组方案和加密公钥请求;如果认证中心对消息发送终端的身份认证通过,接收来自认证中心的消息分组方案、与每个组对应的加密公钥、以及加密流水号;按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密,得到加密消息;将加密消息连同加密流水号发送到消息接收终端。
在本申请实施例中,在消息接收终端是不保存加密消息的加密密钥的,甚至消息接收终端也不知道加密密钥,因为解密由认证中心进行。在消息接收终端存储的是接收的加密消息和加密流水号。这样,即使攻击者能够取得对加密数据运行、存储环境的控制,其也无法解密加密数据。另外,加密消息不是用单一密钥加密的,而是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到的,其涉及将消息分成多个组,并针对每个组分别采用各自的加密公钥,如此复杂的加密方法也使得即使攻击者能够取得对加密数据运行、存储环境的控制,也很难通过反向工程破解出分组方案和各加密公钥,进而无法解密加密消息。而在消息接收终端想知道消息的内容时,是可以获得解密后的消息的。此时,消息接收终端将加密消息和对应的加密流水号发送到认证中心。认证中心在为消息发送终端分配消息分组方案和各加密公钥时,是将分组方案、各加密公钥(可能还有加密公钥对应的各加密私钥)以及加密流水号对应记录的。这样,认证中心对消息接收终端的身份进行认证并认证通过后,根据所述对应记录,就可以查找到与接收到的加密流水号对应的消息分组方案、加密公钥,按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密,并向消息接收终端返回解密后的加密消息。解密的关键部分都在认证中心进行。即使攻击者能够取得对加密数据运行、存储环境的控制,其也无法仅凭一个加密流水号来反向工程破解加密消息。如果攻击者得到加密流水号,向认证中心请求解密后的数据也是不可能成功的,因为无法通过认证中心对请求者身份的认证。而消息接收终端却能够通过认证,因此能够请求到解密后的数据。通过这种方式,即使在攻击者能够取得对加密数据运行、存储环境的控制的情况下,仍能实现信息安全。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出了其中可以应用本申请实施例的示例性系统架构;
图2示出了根据本申请一个实施例的在消息接收终端侧的非对称白盒密码加密方法的示例性流程图;
图3示出了根据本申请一个实施例的在认证中心侧的非对称白盒密码加密方法的示例性流程图;
图4示出了根据本申请一个实施例的在消息发送终端侧的非对称白盒密码加密方法的示例性流程图;
图5示出了根据本申请一个实施例的在消息接收终端侧的非对称白盒密码加密装置的示例性结构框图;
图6示出了根据本申请一个实施例的在认证中心侧的非对称白盒密码加密装置的示例性结构框图;
图7示出了根据本申请一个实施例的在消息发送终端侧的非对称白盒密码加密装置的示例性结构框图;
图8示出了适于用来实现本申请实施例的消息接收终端的计算机系统的结构示意图。
图9示出了适于用来实现本申请实施例的认证中心的计算机系统的结构示意图。
图10示出了适于用来实现本申请实施例的消息发送终端的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参考图1,其示出了可以应用本申请实施例的示例性系统架构。
如图1所示,系统架构可以包括消息发送终端102、认证中心101、消息接收终端103。消息发送终端102指发送消息的终端。消息接收终端103指接收消息的终端。终端可以指一个实体的硬件,如车载设备、手机等,也可以指硬件内部的一个元件,如车辆中的ECU。认证中心101指对发送、接收消息的终端的身份进行认证、并为消息的加密分配消息分组方案、与每个组对应的加密公钥、加密私钥、加密流水号的中心。其可以位于服务器侧,如云服务器上,也可以作为硬件的一部分,例如在对车辆中的ECU身份认证的情况下,其可以作为车辆的一部分位于车辆上。
如背景技术中提到的,目前的加密主要假定对数据的攻击者无法接触到加密运行的环境,也不能控制加密数据存储的环境,也无法接触加密时的算法和密钥。即,加密的过程和加密数据的存储作为一个“黑盒”存在,无法被攻击者获知。然而,实际上,在一些情况下,数据的攻击者是能够接触到加密运行的环境的,甚至能够取得对数据加密、加密数据存储环境的控制。这样,他们很容易通过数据加密、加密数据存储环境中的一些中间数据、环境数据等以反向工程的方式推知加密算法和密钥等,从而攻击数据。因此,提出了在攻击者能够取得对数据加密、加密数据存储环境的控制时如何实现信息安全的需求,即在把加密的过程和加密数据的存储看成“白盒”的情况下,如何实现信息安全。
在本申请实施例中,在消息接收终端是不保存加密消息的加密密钥的,甚至消息接收终端也不知道加密密钥,因为解密由认证中心进行。在消息接收终端存储的是接收的加密消息和加密流水号。这样,即使攻击者能够取得对加密数据运行、存储环境的控制,其也无法解密加密数据。另外,加密消息不是用单一密钥加密的,而是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到的,其涉及将消息分成多个组,并针对每个组分别采用各自的加密公钥,如此复杂的加密方法也使得即使攻击者能够取得对加密数据运行、存储环境的控制,也很难通过反向工程破解出分组方案和各加密公钥,进而无法解密加密消息。而在消息接收终端想知道消息的内容时,是可以获得解密后的消息的。此时,消息接收终端将加密消息和对应的加密流水号发送到认证中心。认证中心在为消息发送终端分配消息分组方案和各加密公钥时,是将分组方案、各加密公钥(可能还有加密公钥对应的各加密私钥)以及加密流水号对应记录的。这样,认证中心对消息接收终端的身份进行认证并认证通过后,根据所述对应记录,就可以查找到与接收到的加密流水号对应的消息分组方案、加密公钥,按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密,并向消息接收终端返回解密后的加密消息。解密的关键部分都在认证中心进行。即使攻击者能够取得对加密数据运行、存储环境的控制,其也无法仅凭一个加密流水号来反向工程破解加密消息。如果攻击者得到加密流水号,向认证中心请求解密后的数据也是不可能成功的,因为无法通过认证中心对请求者身份的认证。而消息接收终端却能够通过认证,因此能够请求到解密后的数据。通过这种方式,即使在攻击者能够取得对加密数据运行、存储环境的控制的情况下,仍能实现信息安全。
参考图2,其示出了根据本申请一个实施例的非对称白盒密码加密方法的示例性流程图。图2所示的方法可以在图1中的消息接收终端103执行。“白盒”的概念在上文中已描述。“非对称”是指采用公钥和私钥相配合的加密技术。一般来说,公钥和私钥作为一个密钥对。例如,在用公钥加密的情况下,用对应的私钥解密。
如图2所示,在步骤210中,接收来自消息发送终端的加密消息、加密流水号。
加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号。
消息发送终端要想发送消息,首先要向认证中心发送消息分组方案和加密公钥请求。认证中心首先要认证该消息发送终端的身份,认证通过后才能为其发送消息分组方案和加密公钥。认证消息发送终端的身份可以采取主动查询消息发送终端的标识的方法,因为如果让消息发送终端上报自己的标识,一个未授权的消息发送终端可能知道另一个已授权的消息发送终端的标识而将该另一个已授权的消息发送终端的标识伪装成自己的标识上报给认证中心,通过这种方式“蒙混过关”,通过认证。因此,认证中心要主动查询消息发送终端的标识。一般来说,根据消息发送终端与认证中心的通信协议,消息发送终端在向认证中心发送消息时,消息发送终端的标识是按照通信协议自动装入发送的消息的某个特定字段的,这个字段不能人为修改,专用于表明消息发送者的身份。因此,认证中心可以获取消息发送终端与认证中心之间交换的消息中的特定字段中的消息发送终端标识。该字段中的标识不能被篡改,因此,通过这种方式,准确地查询到了消息发送终端的标识。然后,将该消息发送终端标识与已授权终端标识列表进行比对。可以被信任作为消息的发送方的终端标识事先都登记在认证中心的已授权终端标识列表中。如果该消息发送终端标识在已授权终端标识列表中,则认证通过。如果该消息发送终端标识不在已授权终端标识列表中,则认证失败。
如果认证中心对消息发送终端的身份认证通过,认证中心向消息发送终端分配并发送消息分组方案、与每个组对应的加密公钥、以及加密流水号。消息分组方案即为了给消息加密是如何给消息分成组的。例如,在消息分组方案1中规定,将消息均分成三个组:组A1,组B1,组C2。在消息分组方案2中规定,将消息按照2:1:1的比例分成三个组:组A2,组B2,组C2。分配消息分组方案可以采取事先规定若干消息分组方案,然后在其中随机指定一个的方式。例如,事先规定有10个消息分组方案:消息分组方案1、消息分组方案2……、消息分组方案10。当需要分配消息分组方案时,从中随机指定一个消息分组方案。与每个组对应的加密公钥也可以采用事先规定一个加密公钥集合,然后在其中随机指定一个的方式。例如,在加密公钥集合中有100个公钥(其对应100个私钥)。在上面提到的将消息均分成组A1、组B1、组C2的消息分组方案1中,对于组A1在100个公钥中随机分配一个加密公钥k1,对于组A2在100个公钥中随机分配一个加密公钥k2,对于组A3在100个公钥中随机分配一个加密公钥k3。加密流水号是表示这次加密区别于其它次加密的序号。认证中心每向消息发送终端发送一次消息分组方案、与每个组对应的加密公钥,就分配一个加密流水号。一般来说,每次分配的加密流水号互不相同。这样,在后续根据认证中心向消息发送终端返回消息分组方案、加密公钥和加密流水号的对应记录查找与接收到的加密流水号对应的消息分组方案、加密公钥的过程中,才能找到唯一消息分组方案和加密公钥。
然后,消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密,得到加密消息。然后,消息发送终端将加密消息连同加密流水号发送到消息接收终端。
例如,假设认证中心返回的消息分组方案是消息分组方案1,即将消息均分成组A1、组B1、组C2,与组1对应的加密公钥是k1,与组2对应的加密公钥是k2,与组3对应的加密公钥是k3。消息发送终端先将消息平均分成3组,分别用k1、k2、k3加密后合在一起发送到消息接收终端。
在步骤220中,将接收的加密消息与加密流水号对应保存。
在本申请实施例中,在消息接收终端是不保存加密消息的加密密钥的,甚至消息接收终端也不知道加密密钥,因为解密由认证中心进行。在消息接收终端存储的是接收的加密消息和加密流水号。这样,即使攻击者能够取得对加密数据运行、存储环境的控制,其也无法解密加密数据。另外,加密消息不是用单一密钥加密的,而是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到的,其涉及将消息分成多个组,并针对每个组分别采用各自的加密公钥,如此复杂的加密方法也使得即使攻击者能够取得对加密数据运行、存储环境的控制,也很难通过反向工程破解出分组方案和各加密公钥,进而无法解密加密消息。
在步骤230中,响应于获取消息内容的请求,将对应保存的加密消息和加密流水号发送到认证中心,以便认证中心对消息接收终端的身份进行认证并认证通过后,根据认证中心向消息发送终端返回消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥,按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密。
如前所述,为了信息安全起见,消息在消息接收终端始终是加密存储的。在消息接收终端想知道消息的内容时,响应于获取消息内容的请求,消息接收终端将加密消息和对应的加密流水号发送到认证中心。然后,认证中心对消息接收终端的身份进行认证。认证消息接收终端的身份可以采取主动查询消息接收终端的标识的方法,因为如果让消息接收终端上报自己的标识,一个未授权的消息接收终端(可能是攻击者)可能知道另一个已授权的消息接收终端的标识而将该另一个已授权的消息接收终端的标识伪装成自己的标识上报给认证中心,通过这种方式“蒙混过关”,通过认证。因此,认证中心要主动查询消息接收终端的标识。一般来说,根据消息接收终端与认证中心的通信协议,消息接收终端在向认证中心发送消息时,消息接收终端的标识是按照通信协议自动装入发送的消息的某个特定字段的,这个字段不能人为修改,专用于表明与认证中心通信者的身份。因此,认证中心可以获取消息接收终端与认证中心之间交换的消息中的特定字段中的消息接收终端标识。该字段中的标识不能被篡改,因此,通过这种方式,准确地查询到了消息接收终端的标识。然后,将该消息接收终端标识与已授权终端标识列表进行比对。可以被信任进行安全通信的终端标识事先都登记在认证中心的已授权终端标识列表中。如果该消息接收终端标识在已授权终端标识列表中,则认证通过。如果该消息接收终端标识不在已授权终端标识列表中,则认证失败。
认证中心在向消息发送终端分配并发送消息分组方案和各加密公钥时,是将分组方案、各加密公钥(可能还有加密公钥对应的各加密私钥)以及加密流水号对应记录的。这样,认证中心对消息接收终端的身份进行认证并认证通过后,根据所述对应记录,就可以查找到与接收到的加密流水号对应的消息分组方案、加密公钥。由于加密公钥和加密私钥是成对生成的,在生成加密公钥时实际还生成有对应的加密私钥。也可以将分组方案、各加密公钥、各加密公钥对应的各加密私钥、以及加密流水号对应记录。认证中心按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密。
由于解密的关键部分都在认证中心进行,即使攻击者能够取得对加密数据运行、存储环境的控制,其也无法仅凭一个加密流水号来反向工程破解加密消息。如果攻击者得到加密流水号,向认证中心请求解密后的数据也是不可能成功的,因为无法通过认证中心对请求者身份的认证。而消息接收终端却能够通过认证,因此能够请求到解密后的数据。通过这种方式,即使在攻击者能够取得对加密数据运行、存储环境的控制的情况下,仍能实现信息安全。
在步骤240中,从认证中心接收解密得到的消息内容。
参考图3,其示出了根据本申请一个实施例的非对称白盒密码加密方法的示例性流程图。图3所示的方法可以在图1中的认证中心101执行。“白盒”的概念在上文中已描述。“非对称”是指采用公钥和私钥相配合的加密技术。一般来说,公钥和私钥作为一个密钥对。例如,在用公钥加密的情况下,用对应的私钥解密。
如图3所示,在步骤310中,接收来自消息接收终端的加密消息、加密流水号。
加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到并发送到消息接收终端的。所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号,以便消息接收终端将该加密流水号与加密消息一起发给认证中心。
实际上,在步骤310之前,所述方法还包括:接收来自消息发送终端的消息分组方案和加密公钥请求;对消息发送终端的身份进行认证;如果认证通过,生成消息分组方案、与每个组对应的加密公钥、以及加密流水号;发送所述消息分组方案、与每个组对应的加密公钥、加密流水号到消息发送终端。
具体地,消息发送终端要想发送消息,首先要向认证中心发送消息分组方案和加密公钥请求。认证中心首先要认证该消息发送终端的身份,认证通过后才能为其发送消息分组方案和加密公钥。认证消息发送终端的身份可以采取主动查询消息发送终端的标识的方法,因为如果让消息发送终端上报自己的标识,一个未授权的消息发送终端可能知道另一个已授权的消息发送终端的标识而将该另一个已授权的消息发送终端的标识伪装成自己的标识上报给认证中心,通过这种方式“蒙混过关”,通过认证。因此,认证中心要主动查询消息发送终端的标识。一般来说,根据消息发送终端与认证中心的通信协议,消息发送终端在向认证中心发送消息时,消息发送终端的标识是按照通信协议自动装入发送的消息的某个特定字段的,这个字段不能人为修改,专用于表明消息发送者的身份。因此,认证中心可以获取消息发送终端与认证中心之间交换的消息中的特定字段中的消息发送终端标识。该字段中的标识不能被篡改,因此,通过这种方式,准确地查询到了消息发送终端的标识。然后,将该消息发送终端标识与已授权终端标识列表进行比对。可以被信任作为消息的发送方的终端标识事先都登记在认证中心的已授权终端标识列表中。如果该消息发送终端标识在已授权终端标识列表中,则认证通过。如果该消息发送终端标识不在已授权终端标识列表中,则认证失败。如果认证中心对消息发送终端的身份认证通过,认证中心向消息发送终端分配并发送消息分组方案、与每个组对应的加密公钥、以及加密流水号。消息分组方案即为了给消息加密是如何给消息分成组的。例如,在消息分组方案1中规定,将消息均分成三个组:组A1,组B1,组C2。在消息分组方案2中规定,将消息按照2:1:1的比例分成三个组:组A2,组B2,组C2。分配消息分组方案可以采取事先规定若干消息分组方案,然后在其中随机指定一个的方式。例如,事先规定有10个消息分组方案:消息分组方案1、消息分组方案2……、消息分组方案10。当需要分配消息分组方案时,从中随机指定一个消息分组方案。与每个组对应的加密公钥也可以采用事先规定一个加密公钥集合,然后在其中随机指定一个的方式。例如,在加密公钥集合中有100个公钥(其对应100个私钥)。在上面提到的将消息均分成组A1、组B1、组C2的消息分组方案1中,对于组A1在100个公钥中随机分配一个加密公钥k1,对于组A2在100个公钥中随机分配一个加密公钥k2,对于组A3在100个公钥中随机分配一个加密公钥k3。加密流水号是表示这次加密区别于其它次加密的序号。认证中心每向消息发送终端发送一次消息分组方案、与每个组对应的加密公钥,就分配一个加密流水号。一般来说,每次分配的加密流水号互不相同。这样,在后续根据认证中心向消息发送终端返回消息分组方案、加密公钥和加密流水号的对应记录查找与接收到的加密流水号对应的消息分组方案、加密公钥的过程中,才能找到唯一消息分组方案和加密公钥。
在一个实施例中,所述方法在对消息发送终端的身份进行认证之后还包括:生成所述与每个组对应的加密公钥所对应的加密私钥;将生成的消息分组方案、与每个组对应的加密公钥及所对应的加密私钥、以及加密流水号相对应地保存。
在非对称加密技术中,由于加密公钥和加密私钥是成对生成的,在生成加密公钥时实际还生成有对应的加密私钥。也可以将分组方案、各加密公钥、各加密公钥对应的各加密私钥、以及加密流水号对应记录。在认证中心后续对加密消息解密时,使用的是加密私钥而非加密公钥,因此,要将分组方案、各加密公钥、各加密公钥对应的各加密私钥、以及加密流水号对应记录,在后续过程中,认证中心才能按照与加密流水号对应的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密。
然后,消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密,得到加密消息。然后,消息发送终端将加密消息连同加密流水号发送到消息接收终端。消息接收终端将接收的加密消息与加密流水号对应保存,并在需要获取消息内容时,将对应保存的加密消息和加密流水号发送到认证中心。
在步骤320中,对消息接收终端的身份进行认证。
认证消息接收终端的身份可以采取主动查询消息接收终端的标识的方法,因为如果让消息接收终端上报自己的标识,一个未授权的消息接收终端(可能是攻击者)可能知道另一个已授权的消息接收终端的标识而将该另一个已授权的消息接收终端的标识伪装成自己的标识上报给认证中心,通过这种方式“蒙混过关”,通过认证。因此,认证中心要主动查询消息接收终端的标识。一般来说,根据消息接收终端与认证中心的通信协议,消息接收终端在向认证中心发送消息时,消息接收终端的标识是按照通信协议自动装入发送的消息的某个特定字段的,这个字段不能人为修改,专用于表明与认证中心通信者的身份。因此,认证中心可以获取消息接收终端与认证中心之间交换的消息中的特定字段中的消息接收终端标识。该字段中的标识不能被篡改,因此,通过这种方式,准确地查询到了消息接收终端的标识。然后,将该消息接收终端标识与已授权终端标识列表进行比对。可以被信任进行安全通信的终端标识事先都登记在认证中心的已授权终端标识列表中。如果该消息接收终端标识在已授权终端标识列表中,则认证通过。如果该消息接收终端标识不在已授权终端标识列表中,则认证失败。
在步骤330中,如果认证通过,根据向消息发送终端返回的消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥。
认证中心在向消息发送终端分配并发送消息分组方案和各加密公钥时,是将分组方案、各加密公钥(可能还有加密公钥对应的各加密私钥)以及加密流水号对应记录的。这样,认证中心对消息接收终端的身份进行认证并认证通过后,根据所述对应记录,就可以查找到与接收到的加密流水号对应的消息分组方案、加密公钥。
在步骤340中,按照查找到的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密。
由于加密公钥和加密私钥是成对生成的,在生成加密公钥时实际还生成有对应的加密私钥。也可以将分组方案、各加密公钥、各加密公钥对应的各加密私钥、以及加密流水号对应记录。然后,认证中心按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密。
在另一种实施例中,另外设置加密公钥和加密私钥对照表。认证中心在对照表中按照查找到的加密公钥获得对应的加密私钥,然后,按照查找到的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密。
在步骤350中,发送解密得到的消息内容到消息接收终端。
在一个实施例中,所述方法还包括:如果认证失败,向消息接收终端发送认证失败消息。
参考图4,其示出了根据本申请一个实施例的非对称白盒密码加密方法的示例性流程图。图4所示的方法可以在图1中的消息发送终端102执行。“白盒”的概念在上文中已描述。“非对称”是指采用公钥和私钥相配合的加密技术。一般来说,公钥和私钥作为一个密钥对。例如,在用公钥加密的情况下,用对应的私钥解密。
如图4所示,在步骤410中,向认证中心发送消息分组方案和加密公钥请求。
即,消息发送终端要想发送消息,首先要向认证中心发送消息分组方案和加密公钥请求。
在步骤420中,如果认证中心对消息发送终端的身份认证通过,接收来自认证中心的消息分组方案、与每个组对应的加密公钥、以及加密流水号。
认证中心接收到请求后,首先要认证该消息发送终端的身份,认证通过后才能为其发送消息分组方案和加密公钥。认证消息发送终端的身份可以采取主动查询消息发送终端的标识的方法,因为如果让消息发送终端上报自己的标识,一个未授权的消息发送终端可能知道另一个已授权的消息发送终端的标识而将该另一个已授权的消息发送终端的标识伪装成自己的标识上报给认证中心,通过这种方式“蒙混过关”,通过认证。因此,认证中心要主动查询消息发送终端的标识。一般来说,根据消息发送终端与认证中心的通信协议,消息发送终端在向认证中心发送消息时,消息发送终端的标识是按照通信协议自动装入发送的消息的某个特定字段的。这个字段不能人为修改,专用于表明消息发送者的身份。因此,认证中心可以获取消息发送终端与认证中心之间交换的消息中的特定字段中的消息发送终端标识。该字段中的标识不能被篡改,因此,通过这种方式,准确地查询到了消息发送终端的标识。然后,将该消息发送终端标识与已授权终端标识列表进行比对。可以被信任作为消息的发送方的终端标识事先都登记在认证中心的已授权终端标识列表中。如果该消息发送终端标识在已授权终端标识列表中,则认证通过。如果该消息发送终端标识不在已授权终端标识列表中,则认证失败。如果认证中心对消息发送终端的身份认证通过,认证中心向消息发送终端分配并发送消息分组方案、与每个组对应的加密公钥、以及加密流水号。消息分组方案即为了给消息加密是如何给消息分成组的。加密流水号是表示当前加密区别于其它次加密的序号。认证中心每向消息发送终端发送一次消息分组方案、与每个组对应的加密公钥,就分配一个加密流水号。一般来说,每次分配的加密流水号互不相同。这样,在后续根据认证中心向消息发送终端返回消息分组方案、加密公钥和加密流水号的对应记录查找与接收到的加密流水号对应的消息分组方案、加密公钥的过程中,才能找到唯一消息分组方案和加密公钥。
在非对称加密技术中,由于加密公钥和加密私钥是成对生成的,在生成加密公钥时实际还生成有对应的加密私钥。也可以将分组方案、各加密公钥、各加密公钥对应的各加密私钥、以及加密流水号对应记录。在认证中心后续对加密消息解密时,使用的是加密私钥而非加密公钥,因此,要将分组方案、各加密公钥、各加密公钥对应的各加密私钥、以及加密流水号对应记录,在后续过程中,认证中心才能按照与加密流水号对应的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密。
在步骤430中,按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密,得到加密消息。
在步骤440中,将加密消息连同加密流水号发送到消息接收终端。
消息发送终端将加密消息连同加密流水号发送到消息接收终端。然后,消息接收终端将接收的加密消息与加密流水号对应保存,并在需要获取消息内容时,将对应保存的加密消息和加密流水号发送到认证中心。认证中心对消息接收终端的身份进行认证。
认证消息接收终端的身份可以采取主动查询消息接收终端的标识的方法,因为如果让消息接收终端上报自己的标识,一个未授权的消息接收终端(可能是攻击者)可能知道另一个已授权的消息接收终端的标识而将该另一个已授权的消息接收终端的标识伪装成自己的标识上报给认证中心,通过这种方式“蒙混过关”,通过认证。因此,认证中心要主动查询消息接收终端的标识。一般来说,根据消息接收终端与认证中心的通信协议,消息接收终端在向认证中心发送消息时,消息接收终端的标识是按照通信协议自动装入发送的消息的某个特定字段的,这个字段不能人为修改,专用于表明与认证中心通信者的身份。因此,认证中心可以获取消息接收终端与认证中心之间交换的消息中的特定字段中的消息接收终端标识。该字段中的标识不能被篡改,因此,通过这种方式,准确地查询到了消息接收终端的标识。然后,将该消息接收终端标识与已授权终端标识列表进行比对。可以被信任进行安全通信的终端标识事先都登记在认证中心的已授权终端标识列表中。如果该消息接收终端标识在已授权终端标识列表中,则认证通过。如果该消息接收终端标识不在已授权终端标识列表中,则认证失败。
认证中心在向消息发送终端分配并发送消息分组方案和各加密公钥时,是将分组方案、各加密公钥、各加密公钥对应的各加密私钥、以及加密流水号对应记录的。这样,认证中心对消息接收终端的身份进行认证并认证通过后,根据所述对应记录,就可以查找到与接收到的加密流水号对应的消息分组方案、加密公钥对应的加密私钥,然后按照查找到的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密。然后,认证中心发送解密得到的消息内容到消息接收终端。
应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
进一步参考图5,其示出了根据本申请一个实施例的非对称白盒密码加密装置500的示例性结构框图。
如图5所示,所述非对称白盒密码加密装置500包括:第一接收单元510,配置用于接收来自消息发送终端的加密消息、加密流水号,其中,加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号;第一保存单元520,配置用于将接收的加密消息与加密流水号对应保存;第一发送单元530,配置用于响应于获取消息内容的请求,将对应保存的加密消息和加密流水号发送到认证中心,以便认证中心对消息接收终端的身份进行认证并认证通过后,根据认证中心向消息发送终端返回消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥,按照该消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;第二接收单元540,配置用于从认证中心接收解密得到的消息内容。
可选地,认证中心对消息接收终端的身份进行认证是通过获取消息接收终端与认证中心之间交换的消息中的特定字段中的消息接收终端标识,并将该消息接收终端标识与已授权终端标识列表进行比对进行的。
可选地,如果该消息接收终端标识在已授权终端标识列表中,则认证通过。
进一步参考图6,其示出了根据本申请一个实施例的非对称白盒密码加密装置600的示例性结构框图。
如图6所示,所述非对称白盒密码加密装置600包括:第三接收单元610,配置用于接收来自消息接收终端的加密消息、加密流水号,其中,加密消息是消息发送终端按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密得到并发送到消息接收终端的,所述认证中心在向消息发送终端返回消息分组方案和加密公钥的同时还返回加密流水号,以便消息接收终端将该加密流水号与加密消息一起发给认证中心;第一认证单元620,配置用于对消息接收终端的身份进行认证;查找单元630,配置用于如果认证通过,根据向消息发送终端返回的消息分组方案、加密公钥和加密流水号的对应记录,查找与接收到的加密流水号对应的消息分组方案、加密公钥;解密单元640,配置用于按照查找到的消息分组方案和与各组对应的加密公钥所对应的加密私钥对加密消息解密;第二发送单元650,配置用于发送解密得到的消息内容到消息接收终端。
可选地,所述装置包括:第三发送单元,配置用于如果认证失败,向消息接收终端发送认证失败消息。
可选地,所述装置还包括:第四接收单元,配置用于接收来自消息发送终端的消息分组方案和加密公钥请求;第二认证单元,配置用于对消息发送终端的身份进行认证;第一生成单元,配置用于如果认证通过,生成消息分组方案、与每个组对应的加密公钥、以及加密流水号;第四发送单元,配置用于发送所述消息分组方案、与每个组对应的加密公钥、加密流水号到消息发送终端。
可选地,所述装置还包括:第二生成单元,配置用于生成所述与每个组对应的加密公钥所对应的加密私钥;第二保存单元,配置用于将生成的消息分组方案、与每个组对应的加密公钥及所对应的加密私钥、以及加密流水号相对应地保存。
可选地,所述第一认证单元进一步配置用于:获取消息接收终端与认证中心之间交换的消息中的特定字段中的消息接收终端标识;将该消息接收终端标识与已授权终端标识列表进行比对。
可选地,所述第二认证单元进一步配置用于:获取消息发送终端与认证中心之间交换的消息中的特定字段中的消息发送终端标识;将该消息发送终端标识与已授权终端标识列表进行比对。
进一步参考图7,其示出了根据本申请一个实施例的非对称白盒密码加密装置700的示例性结构框图。
如图7所示,所述非对称白盒密码加密装置700包括:第五发送单元710,配置用于向认证中心发送消息分组方案和加密公钥请求;第五接收单元720,配置用于如果认证中心对消息发送终端的身份认证通过,接收来自认证中心的消息分组方案、与每个组对应的加密公钥、以及加密流水号;加密单元730,配置用于按照认证中心返回的消息分组方案和与每个组对应的加密公钥,将消息分成组并针对每个组用与该组对应的加密公钥加密,得到加密消息;第六发送单元740,配置用于将加密消息连同加密流水号发送到消息接收终端。
应当理解,图5-7中记载的诸子系统或单元与参考图2-图4描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作和特征同样适用于图5-7及其中包含的单元,在此不再赘述。
下面参考图8,其示出了适于用来实现本申请实施例的消息接收终端的计算机系统800的结构示意图。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
下面参考图9,其示出了适于用来实现本申请实施例的认证中心的计算机系统900的结构示意图。
如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
下面参考图10,其示出了适于用来实现本申请实施例的消息接收终端的计算机系统1000的结构示意图。
如图10所示,计算机系统1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有系统1000操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本公开的实施例,上文参考图2-图4描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行图2-图4的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809、909、1009从网络上被下载和安装,和/或从可拆卸介质811、911、1011被安装。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中。这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。