邮件的解密方法和服务器与流程

文档序号:14097158阅读:999来源:国知局

本发明涉及通信技术领域,特别涉及一种邮件的解密方法和服务器。



背景技术:

加密邮件可以指在收信发信双方都拥有电子邮件数字证书的前提下,发件人通过收件人的数字证书对邮件进行加密。在采用安全电子邮件进行收发信的情况下,只有收件人才可以阅读加密的邮件,在internet上传递的电子邮件的加密信息不会被他人窃取。即使邮件被截留或者发错,他人也无法读取邮件内容,从而可以保证用户之间通信的安全性。

目前,可以采用以下几种方式读取加密邮件:

1)通过优盾读取加密邮件:

在读取邮件的过程中,在向客户端的接口中插入优盾之后读取加密邮件。

2)上传文件证书后读取加密邮件:

在读取邮件的过程中,在向服务器上传了相应的文件证书之后读取加密邮件。

3)将加密邮件上传到专门解密的设备上读取:

在读取邮件的过程中,可以先下载加密邮件,再将加密邮件上传至指定的设备或者指定的网站进行阅读。

然而,采用上述方法读取加密邮件时,当优盾丢失、上传至服务器的邮件证书丢失或者被他人窃取等情况发生时,该加密邮件中的信息有可能会被他人读取,从而导致加密邮件丧失其对他人的保密功能。

针对上述问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种邮件的解密方法和服务器,以解决现有技术中加密邮件中的信息可能会被他人窃取的问题。

本发明实施例提供了一种邮件的解密方法,包括:接收来自请求端的邮件接收请求,其中,所述邮件接收请求中携带有密文和第一公钥;根据所述请求端和认证端之间的映射关系,将所述密文和所述第一公钥发送至所述认证端;接收所述认证端发送的基于所述第一公钥生成的第一私钥,并根据所述第一私钥对所述密文进行解密;接收所述认证端发送的第二私钥,并根据所述第二私钥对解密后的密文进行加密;接收所述请求端发送的第二公钥,并利用所述第二公钥对加密后的密文进行解密,如果解密成功,则根据所述请求端和所述认证端之间的映射关系,向所述请求端推送邮件。

在本实施例中,在利用所述第二公钥对加密后的密文进行解密之后,所述方法还包括:如果解密失败,则根据所述请求端和所述认证端之间的映射关系,分别向所述请求端和所述认证端发送错误指示信息。

在本实施例中,接收来自请求端的邮件接收请求,包括:接收来自所述认证端的图像,其中,所述图像是所述认证端从所述请求端扫码得到的;从所述图像中识别出所述请求端的标识信息,并根据所述标识信息建立所述请求端和认证端之间的映射关系;将接收所述图像作为接收到所述请求端的邮件接收请求。

在本实施例中,在接收来自请求端的邮件接收请求之后,所述方法还包括:与所述请求端通过长连接进行数据传输。

在本实施例中,按照以下方式建立所述长连接:接收所述请求端发起的长连接,并为所述长连接设置超时时间,如果在所述超时时间内接收到来自所述认证端的数据,则将接收到的数据发送到所述请求端,并随即关闭所述长连接,如果在所述超时时间内未接收到来自所述认证端的数据,则在到达所述超时时间时,关闭所述长连接。

在本实施例中,在接收所述请求端发起的长连接之前,所述方法还包括:所述请求端检测所述长连接是否被关闭,如果检测到被关闭,则发起所述长连接。

本发明实施例还提供了一种邮件的解密服务器,包括:第一接收模块,用于接收来自请求端的邮件接收请求,其中,所述邮件接收请求中携带有密文和第一公钥;第一发送模块,用于根据所述请求端和认证端之间的映射关系,将所述密文和所述第一公钥发送至所述认证端;第二接收模块,用于接收所述认证端发送的基于所述第一公钥生成的第一私钥,并根据所述第一私钥对所述密文进行解密;第三接收模块,用于接收所述认证端发送的第二私钥,并根据所述第二私钥对解密后的密文进行加密;第四接收模块,用于接收所述请求端发送的第二公钥,并利用所述第二公钥对加密后的密文进行解密,如果解密成功,则根据所述请求端和所述认证端之间的映射关系,向所述请求端推送邮件。

在一个实施例中,还包括:所述第四接收模块在利用所述第二公钥对加密后的密文进行解密失败的情况下,根据所述请求端和所述认证端之间的映射关系,分别向所述请求端和所述认证端发送错误指示信息。

在一个实施例中,所述第一接收模块包括:第一接收单元,用于接收来自所述认证端的图像,其中,所述图像是所述认证端从所述请求端扫码得到的;第一识别单元,用于从所述图像中识别出所述请求端的标识信息,并根据所述标识信息建立所述请求端和认证端之间的映射关系;第二接收单元,用于将接收所述图像作为接收到所述请求端的邮件接收请求。

在一个实施例中,还包括:所述第一接收模块在接收来自请求端的邮件接收请求之后,与所述请求端通过长连接进行数据传输。

在本发明实施例中,通过两次对邮件进行加密解密的方式来保证加密邮件的安全性。具体来说,接收来自请求端的邮件接收请求,其中,邮件接收请求中携带有密文和第一公钥;根据请求端和认证端之间的映射关系,将密文和第一公钥发送至认证端;接收认证端发送的基于第一公钥生成的第一私钥,并根据第一私钥对密文进行解密;接收认证端发送的第二私钥,并根据第二私钥对解密后的密文进行加密;接收请求端发送的第二公钥,并利用第二公钥对加密后的密文进行解密,如果解密成功,则根据请求端和认证端之间的映射关系,向请求端推送邮件。在第一私钥对密文进行解密的情况下,利用第二私钥对解密后的密文进行加密,并通过第二公钥对再次加密后的密文进行解密的方式,从而可以解决现有技术中加密邮件中的信息可能会被他人窃取的问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:

图1是本发明实施例的邮件的解密方法的一种流程图;

图2是本发明实施例的邮件的解密方法的一种应用场景的示意图;

图3是本发明实施例的服务器的一种结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。

考虑到现有技术中对加密邮件进行解密时,可能会存在加密邮件中的信息被他人窃取的问题,发明人提出了采用两次加密、两次解密的方式来读取加密邮件。

值得注意的是,本申请中的执行主体为服务器。其中,服务器可以包括:具有数据信息处理功能的硬件设备和驱动该硬件设备工作所需必要的软件,其可以对接收到的写请求或者读请求进行分析处理,并将相应的请求处理结果反馈至请求端或者认证端。其中,服务器可以提供预定端口,通过该预定端口可以接收请求端和认证端的读请求或者写请求。例如,服务器可以基于http、tcp/ip或ftp等网络协议以及网络通信模块与请求端或者认证端进行网络数据交互。具体的,在本实施例中,提出了一种邮件的解密方法,如图1所示,可以包括以下步骤:

步骤101:接收来自请求端的邮件接收请求,其中,所述邮件接收请求中携带有密文和第一公钥;

请求端可以是能够基于网络协议接入通信网络的终端设备或者运行于所述终端设备上的应用软件,例如移动智能电话、计算机、邮箱客户端等。其中,该应用软件可以收发邮件。请求端可以检测到来自应用上层的操作,基于该操作可以触发生成读请求或者写请求,此后,请求端可以将读请求或者写请求发送至服务器。密文可以是对待发送邮件进行加密的邮件密码。公钥和私钥相对应,它们可以是通过一种算法得到的一个密钥对。其中,公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常可以用于加密会话密钥、验证数字签名,或者加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对可以保证唯一性。使用密钥对时,如果用其中一个密钥加密一段数据,则必须用另一个密钥解密。例如,如果用公钥加密数据则可以用与该公钥相对应的私钥解密,如果用私钥加密数据也可以用与该私钥相对应的公钥解密。否则,解密将不会成功。

现有技术中,可以按照以下几种方式读取加密邮件:

1)通过优盾读取加密邮件:

在读取邮件的过程中,在向客户端的接口中插入优盾之后,才可以读取加密邮件。

然而,这种方法需要随身携带一个优盾。在更换客户端之后,可能还需要安装驱动、配置软件,可能还会出现客户端浏览器不兼容的问题。

2)上传文件证书后读取加密邮件:

在读取邮件的过程中,在向服务器上传了相应的文件证书之后,才可以读取加密邮件。

然而,证书存在个人电脑上,不方便携带。每次读取邮件的时候均需要找到软件证书后再上传,影响用户的使用体验。

3)将加密邮件上传到专门解密的设备上读取:

在读取邮件的过程中,可以先下载加密邮件,再上传至指定的设备或者指定的网站进行阅读。

然而,采用该方法读取加密邮件时,使用要求比上述两种方法更高,相应的,使用操作步骤也更复杂。

针对采用上述三种方式读取加密邮件时,步骤繁琐的问题,发明人提出了可以通过请求邮件所在的url实现接收来自请求端的邮件接收请求的目的。进一步的,所述url可以采用从请求端扫码得到的图片作为接收到来自请求端的邮件接收请求,当然地,也可以采用其他方式接收来自请求端的邮件接收请求,本申请对此不作限定。具体的,可以利用具有摄像功能和数据处理功能的端口作为认证端,如:手机、平板电脑或者认证客户端来执行接收邮件接收请求的操作。在本申请中进行描述时,可以把手机作为所述具有摄像功能的认证端。

其中,url可以指统一资源定位符,它可以表示从互联网上得到的资源位置和访问方法,是互联网上标准资源的地址。互联网上的每个文件都有唯一的一个url,它包含的信息可以指出文件的位置和浏览器应该怎么处理它。基本url包含:模式(或称协议)、服务器名称(或ip地址)、路径和文件名,如“协议://授权/路径?查询”。完整的、带有授权部分的普通统一资源标志符语法看上去如下:协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志即,每封邮件对应一个唯一的url,请求所述url可以打开该邮件接收请求中相应的信息。在本申请中使用的是http协议,它是一个无状态的短连接。当通信双方有数据交互时,就建立一个http连接,数据发送完成后,则断开此http连接。当然,也可以采用ftp协议、https协议等,本申请对此不作限定。

进一步地,从上述描述中可知,认证端通过请求所述url可以获取请求端的邮件信息。进一步地,可以在图片中携带请求端的标识信息,并根据所述标识信息建立请求端和认证端之间的映射关系,从而可以实现将认证端的信息传回给请求端。

在一个实施例中,可以借助于服务器做中转,建立一条请求端和认证端之间的双向通道。这样能保证请求端可以向认证端传送数据,认证端可以向请求端传送数据。一般情况下,我们可以在请求端为所发送的请求存储相应的标记,当请求端向服务器发送请求的时候会携带所述标记,服务器可以根据所述标记识别出是哪个请求端发送的请求。同理,我们可以在认证端为所发送的请求存储相应的标记,当认证端向服务器发送请求的时候会携带所述标记,服务器可以根据所述标记识别出是哪个认证端发送的请求。

下面通过一个具体的应用场景来说明请求端和认证端之间的数据传输。认证端通过扫码识别出的标识信息建立请求端和认证端之间的映射关系。

请求端向服务器发送一个请求,请求中携带有标记ida,服务器可以根据该标记ida计算出需要的页面数据。同样地,认证端从请求端扫码后,请求中携带有标记idc,服务器可以根据该标记idc计算出可以返回的数据。那么,可以在服务器上保存请求端和认证端中ida和idc的映射关系,就能建立请求端和认证端之间的双向通信通道。认证端从请求端扫码,请求中携带有标记idc,根据请求端和认证端中ida和idc的映射关系,请求端通过服务器向认证端发送相应的数据。请求端向服务器发送请求,请求中携带有标记ida,根据请求端和认证端中ida和idc的映射关系,认证端相应的数据发送至请求端。

步骤102:根据所述请求端和认证端之间的映射关系,将所述密文和所述第一公钥发送至所述认证端;

在本实施例中,认证端从请求端扫码后,根据请求端和认证端之间的映射关系,认证端可以得到来自请求端的密文和第一公钥。

步骤103:接收所述认证端发送的基于所述第一公钥生成的第一私钥,并根据所述第一私钥对所述密文进行解密;

在本申请中采用的是ssl加密通道来保证通信的安全。一个有效、可信的ssl数字证书包括一个公钥和一个私钥。其中,公钥用于加密信息,私钥用于解译加密的信息。因此,当浏览器指向一个安全域时,ssl将同步确认服务器和客户端,并创建一种加密方式和一个唯一的会话密钥。

在认证端得到密文和第一公钥之后,认证端可以根据该密文和第一公钥生成相应的第一私钥来对密文进行解密。

通常情况下,在对密文进行解密的过程中,http请求均是无状态的短连接。当打开http请求后请求端就关闭连接了,请求端如果要及时拿到手机解密后的内容,只能定时刷新,但是,这样会导致所得到的信息不及时。

在本实施例中,可以通过和请求端之间建立长连接的方式来实现数据传输的实时性。具体的,可以通过以下方式建立该长连接:接收请求端发起的长连接,并为该长连接设置超时时间,如:30秒,本申请对此不作限制。如果在超时时间内接收到来自认证端的数据,则将接收到的数据发送到请求端,并随即关闭长连接,如果在超时时间内未接收到来自认证端的数据,则在到达超时时间时,关闭长连接。

进一步的,当请求端检测到长连接被关闭时,则重新发起一个新的长连接,同时,接收请求端发起的这个长连接,从而可以保证请求端可以立马获取到新的数据,从而可以保证信息传递的及时性。

下面通过一个具体的应用场景来说明与请求端的数据传输。在接收来自请求端的邮件接收请求之后,具体来说,在认证端接收到密文和第一公钥之后,请求端向执行主体发起一个超时时间为20s的长连接,在这20s时间之内,请求端一直处于等待接收新的数据的状态。如果在20s之内,请求端没有接收到新的数据,那么当到达超时时间时,关闭长连接。如果在20s之内,执行主体接收到新的数据,那么可以将接收到的数据发送至请求端,并关闭长连接。当请求端检测到长连接被关闭时,则重新建立起与请求端之间的新的长连接。

步骤104:接收所述认证端发送的第二私钥,并根据所述第二私钥对解密后的密文进行加密;

步骤105:接收所述请求端发送的第二公钥,并利用所述第二公钥对加密后的密文进行解密,如果解密成功,则根据所述请求端和所述认证端之间的映射关系,向所述请求端推送邮件。

由于认证端存储了第一私钥,当认证端丢失时,认证端中存储的第一私钥就会被他人窃取,用户虽然可以在邮件设置界面注销掉当前的公私钥对,但是之前已经阅读过的信件用的是旧的公钥,即,第一公钥加密的,用旧的私钥,即第一私钥在正常情况下还是能打开收件箱里的加密邮件的。因此仅仅采用步骤103至步骤104的方法从而无法保证加密邮件的安全性。

在本申请中,采用对解密后的密文进行再次加密和解密的方法来保证加密邮件的安全性。

具体来说,可以利用认证端的第二私钥对解密后的密文进行再次加密,并通过来自请求端的和第二私钥相对应的第二公钥对其进行解密的方法来保证邮件的安全性。

其中,在本实施例中,第二私钥可以是最新版本的私钥,相应的,第二公钥可以是最新版本的公钥。因而,在这种情况下,如果想要打开之前已经阅读过的信件,在利用和该信件相匹配的私钥进行解密后,还需要利用最新版本的私钥对解密后的密文进行再次加密,然后利用请求端发送的最新版本的公钥进行解密,如果解密成功,则可以打开邮件,反之不可以打开邮件。当认证端丢失时,可以采用对公私钥对版本进行升级的方法来保证加密邮件的安全性。

如果解密成功,则根据请求端和认证端之间的映射关系,向请求端推送邮件。如果解密失败,则根据请求端和认证端之间的映射关系,分别向请求端和认证端发送错误指示信息。

下面通过一个具体的应用场景来说明本申请中邮件的解密方法。然而值得注意的是,该具体实施例仅是为了更好地说明本发明,并不构成对本发明的不当限定。

如图2所示,可以包括以下步骤:

1)认证端的app扫描请求端携带的二维码图片,识别出图片中的url。

2)认证端的app通过http协议请求这个url,返回要解密的密文和加密时的公钥版本。

3)认证端的app用存储的对应2中公钥版本的私钥对密文进行解密,解出明文信息。

4)认证端的app用存储的最新版本的私钥对解密的明文和其他信息签名。

5)认证端的app通过http协议把解密的密文和签名信息发回给服务器。

6)服务器用存储的最新版本的公钥验证手机app发来的签名信息。

7)如果签名信息不一致,则丢弃掉该明文信息,直接返回错误信息给读信页面和认证端的app。

8)如果签名信息一致,则接收该明文信息,并把相应结果返回给读信页面和认证端的app。

上述步骤成功保护了认证端丢失后加密邮件的安全性,只要发现认证端丢了,我们可以将认证端app中的的私钥版本升级,因为解密之前认证端的app与服务器之间会先进行一次版本认证,若认证端中携带的私钥版本与服务器中的公钥版本不同,则不能通过认证,因此捡到认证端的客户无法读取解密邮件,从而可以保证邮件的安全性。

基于同一发明构思,本发明实施例中还提供了一种邮件的解密服务器,如下面的实施例所述。由于邮件的解密服务器解决问题的原理与邮件的解密方法相似,因此邮件的解密服务器的实施可以参见邮件的解密方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3是本发明实施例的邮件的解密服务器的一种结构框图,如图3所示,可以包括:第一接收模块301、第一发送模块302、第二接收模块303、第三接收模块304、第四接收模块305,下面对该结构进行说明。

第一接收模块301,可以用于接收来自请求端的邮件接收请求,其中,所述邮件接收请求中携带有密文和第一公钥;

第一发送模块302,可以用于根据所述请求端和认证端之间的映射关系,将所述密文和所述第一公钥发送至所述认证端;

第二接收模块303,可以用于接收所述认证端发送的基于所述第一公钥生成的第一私钥,并根据所述第一私钥对所述密文进行解密;

第三接收模块304,可以用于接收所述认证端发送的第二私钥,并根据所述第二私钥对解密后的密文进行加密;

第四接收模块305,可以用于接收所述请求端发送的第二公钥,并利用所述第二公钥对加密后的密文进行解密,如果解密成功,则根据所述请求端和所述认证端之间的映射关系,向所述请求端推送邮件。

在一个实施例中,所述第四接收模块可以在利用所述第二公钥对加密后的密文进行解密失败的情况下,根据所述请求端和所述认证端之间的映射关系,分别向所述请求端和所述认证端发送错误指示信息。

在一个实施例中,所述第一接收模块可以包括:第一接收单元,可以用于接收来自所述认证端的图像,其中,所述图像是所述认证端从所述请求端扫码得到的;第一识别单元,可以用于从所述图像中识别出所述请求端的标识信息,并根据所述标识信息建立所述请求端和认证端之间的映射关系;第二接收单元,可以用于将接收所述图像作为接收到所述请求端的邮件接收请求。

在一个实施例中,所述第一接收模块可以在接收来自请求端的邮件接收请求之后,与所述请求端通过长连接进行数据传输。

在一个实施例中,所述第一接收模块可以用于按照以下方式建立所述长连接:接收所述请求端发起的长连接,并为所述长连接设置超时时间,如果在所述超时时间内接收到来自所述认证端的数据,则将接收到的数据发送到所述请求端,并随即关闭所述长连接,如果在所述超时时间内未接收到来自所述认证端的数据,则在到达所述超时时间时,关闭所述长连接。

在一个实施例中,所述第一接收模块还可以包括:在接收所述请求端发起的长连接之前,所述请求端检测所述长连接是否被关闭,如果检测到被关闭,则发起所述长连接。

从以上的描述中,可以看出,本发明实施例实现了如下技术效果:通过两次对邮件进行加密解密的方式来保证加密邮件的安全性。具体来说,接收来自请求端的邮件接收请求,其中,邮件接收请求中携带有密文和第一公钥;根据请求端和认证端之间的映射关系,将密文和第一公钥发送至认证端;接收认证端发送的基于第一公钥生成的第一私钥,并根据第一私钥对密文进行解密;接收认证端发送的第二私钥,并根据第二私钥对解密后的密文进行加密;接收请求端发送的第二公钥,并利用第二公钥对加密后的密文进行解密,如果解密成功,则根据请求端和认证端之间的映射关系,向请求端推送邮件。在第一私钥对密文进行解密的情况下,利用第二私钥对解密后的密文进行加密,并通过第二公钥对再次加密后的密文进行解密的方式,从而可以解决现有技术中加密邮件中的信息可能会被他人窃取的问题。

显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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