发明内容
本发明实施例提供一种文件共享方法及装置,用以解决现有技术中通过云服务器共享文件需要改动已经保存的文件,而且过程较为繁琐,效率较低的问题。
第一方面,提供一种文件共享方法,包括:
第一终端对一个或多个文件分别使用对应的共享密钥加密得到对应的加密文件;以及
将得到的每个加密文件上传到服务器保存,并接收所述服务器返回的保存每个加密文件的位置分别对应的统一资源定位符URL;
所述第一终端生成待共享文件的密钥包,其中,所述待共享文件来源于所述一个或多个文件,所述密钥包中包含待共享文件对应的共享密钥和URL;并
将所述密钥包提供给第二终端,以便所述第二终端根据所述密钥包中包含的URL从所述服务器中获取相应的加密文件,并使用所述密钥包中包含的共享密钥解密获取到的加密文件,其中,所述第二终端为要获取待共享文件的终端。
结合第一方面,在第一种可能的实现方式中,将所述密钥包提供给第二终端,具体包括:
将所述密钥包进行加密,并将加密后的密钥包传输给第二终端,以便所述第二终端对所述加密后的密钥包进行解密。
结合第一方面,在第二种可能的实现方式中,将所述密钥包提供给第二终端,具体包括:
所述第一终端采用所述第一终端的公钥对所述密钥包进行加密;
获取第二终端的公钥;
根据所述第一终端的私钥以及所述第二终端的公钥生成代理密钥;
将加密后的密钥包以及所述代理密钥上传到所述服务器,使所述服务器采用所述代理密钥对加密后的密钥包进行代理重加密,并将经过代理重加密后的密钥包提供给所述第二终端,以便所述第二终端采用所述第二终端的私钥对经过代理重加密后的密钥包进行解密。
结合第一方面,在第三种可能的实现方式中,所述服务器包括云服务器和用于存储密钥包的可信服务器;
将得到的每个加密文件上传到服务器保存,具体包括:
将得到的每个加密文件上传到所述云服务器保存;
将所述密钥包提供给第二终端,具体包括:
将所述密钥包上传到所述可信服务器,并接收所述可信服务器返回的保存所述密钥包的位置对应的URL,将保存所述密钥包的位置对应的URL发送给所述第二终端,以便所述第二终端根据保存所述密钥包的位置对应的URL从所述可信服务器中获取所述密钥包。
结合第三种可能的实现方式,在第四种可能的实现方式中,将保存所述密钥包的位置对应的URL发送给所述第二终端之前,所述方法还包括:
所述第一终端向所述可信服务器发送针对第二终端的授权消息,用于允许所述第二终端从所述可信服务器中获取所述密钥包。
第二方面,提供一种文件共享方法,包括:
云服务器接收第一终端分别上传的一个或多个加密文件并保存,其中,所述一个或多个加密文件是所述第一终端对一个或多个文件采用对应的共享密钥对加密得到的;
所述云服务器向所述第一终端返回保存所述一个或多个加密文件的位置对应的统一资源定位符URL;以及
接收所述第一终端上传的待共享文件的密钥包,其中,所述待共享文件来源于所述一个或多个文件,所述密钥包中包含待共享文件对应的共享密钥和URL;
所述云服务器将所述密钥包提供给第二终端,以便所述第二终端通过所述密钥包中的URL从所述云服务器中获取相应的加密文件,并采用所述密钥包中的共享密钥解密获取到的加密文件,其中,所述第二终端为要获取待共享文件的终端。
结合第二方面,在第一种可能的实现方式中,接收所述第一终端上传的待共享文件的密钥包,具体包括:
接收所述第一终端上传的采用所述第一终端的公钥加密后的密钥包,并接收所述第一终端上传的代理密钥,所述代理密钥为所述第一终端根据所述第一终端的私钥以及第二终端的公钥生成的;
所述云服务器将所述密钥包提供给所述第二终端,具体包括:
所述云服务器采用所述代理密钥对加密后的密钥包进行代理重加密,并将经过代理重加密后的密钥包提供给所述第二终端,使所述第二终端采用第二终端的私钥对所述经过代理重加密后的密钥包进行解密。
第三方面,提供一种文件共享方法,包括:
用于存储密钥包的可信服务器接收第一终端上传的密钥包,其中,所述密钥包中包含待共享文件对应的共享密钥,以及云服务器保存待共享文件对应的加密文件的位置对应的统一资源定位符URL;
所述可信服务器将所述密钥包提供给第二终端,以便所述第二终端根据所述密钥包中携带的URL从所述云服务器中获取相应的加密文件,并使用所述密钥包中携带的共享密钥解密获取到的加密文件。
结合第三方面,在第一种可能的实现方式中,所述可信服务器将所述密钥包提供给所述第二终端之前,所述方法还包括:
所述可信服务器接收所述第一终端发送的针对第二终端的授权消息,所述授权消息用于允许所述第二终端从所述可信服务器中获取所述密钥包。
第四方面,提供一种文件共享装置,包括:
加密模块,用于对一个或多个文件分别使用对应的共享密钥加密得到对应的加密文件;
传输模块,用于将所述加密模块得到的每个加密文件上传到服务器保存,并接收所述服务器返回的保存每个加密文件的位置分别对应的统一资源定位符URL;
生成模块,用于生成待共享文件的密钥包,其中,所述待共享文件来源于所述一个或多个文件,所述密钥包中包含待共享文件对应的共享密钥和URL;
共享模块,用于将所述生成模块生成的所述密钥包提供给第二终端,以便所述第二终端根据所述密钥包中包含的URL从所述服务器中获取相应的加密文件,并使用所述密钥包中包含的共享密钥解密获取到的加密文件,其中,所述第二终端为要获取待共享文件的终端。
结合第四方面,在第一种可能的实现方式中,所述共享模块具体用于,将所述密钥包进行加密,并将加密后的密钥包传输给第二终端,以便所述第二终端对所述加密后的密钥包进行解密。
结合第四方面,在第二种可能的实现方式中,所述共享模块具体用于,采用所述文件共享装置的公钥对所述密钥包进行加密,获取第二终端的公钥,根据所述文件共享装置的私钥以及所述第二终端的公钥生成代理密钥,将加密后的密钥包以及所述代理密钥上传到所述服务器,使所述服务器采用所述代理密钥对加密后的密钥包进行代理重加密,并将经过代理重加密后的密钥包提供给所述第二终端,以便所述第二终端采用所述第二终端的私钥对经过代理重加密后的密钥包进行解密。
结合第四方面,在第三种可能的实现方式中,所述服务器包括云服务器和用于存储密钥包的可信服务器;
所述传输模块具体用于,将得到的每个加密文件上传到所述云服务器保存;
所述共享模块具体用于,将所述密钥包上传到所述可信服务器,并接收所述可信服务器返回的保存所述密钥包的位置对应的URL,将保存所述密钥包的位置对应的URL发送给所述第二终端,以便所述第二终端根据保存所述密钥包的位置对应的URL从所述可信服务器中获取所述密钥包。
结合第三种可能的实现方式,在第四种可能的实现方式中,所述共享模块还用于,将保存所述密钥包的位置对应的URL发送给所述第二终端之前,向所述可信服务器发送针对第二终端的授权消息,用于允许所述第二终端从所述可信服务器中获取所述密钥包。
第五方面,提供一种终端,包括如第四方面以及第四方面的第一~四种任一可能的实现方式所述的文件共享装置。
第六方面,提供一种文件共享装置,包括:
第一接收模块,用于接收第一终端分别上传的一个或多个加密文件并保存,其中,所述一个或多个加密文件是所述第一终端对一个或多个文件采用对应的共享密钥对加密得到的;
发送模块,用于向所述第一终端返回保存所述一个或多个加密文件的位置对应的统一资源定位符URL;
第二接收模块,用于接收所述第一终端上传的待共享文件的密钥包,其中,所述待共享文件来源于所述一个或多个文件,所述密钥包中包含待共享文件对应的共享密钥和URL;
提供模块,用于将所述密钥包提供给第二终端,以便所述第二终端通过所述密钥包中的URL从所述文件共享装置中获取相应的加密文件,并采用所述密钥包中的共享密钥解密获取到的加密文件,其中,所述第二终端为要获取待共享文件的终端。
结合第六方面,在第一种可能的实现方式中,所述第二接收模块具体用于,接收所述第一终端上传的采用所述第一终端的公钥加密后的密钥包,并接收所述第一终端上传的代理密钥,所述代理密钥为所述第一终端根据所述第一终端的私钥以及第二终端的公钥生成的;
所述提供模块具体用于,采用所述代理密钥对加密后的密钥包进行代理重加密,并将经过代理重加密后的密钥包提供给所述第二终端,使所述第二终端采用第二终端的私钥对所述经过代理重加密后的密钥包进行解密。
第七方面,提供一种云服务器,包括如第六方面或第六方面的第一种可能的实现方式所述的文件共享装置。
第八方面,提供一种文件共享装置,包括:
接收模块,用于接收第一终端上传的密钥包,其中,所述密钥包中包含待共享文件对应的共享密钥,以及云服务器保存待共享文件对应的加密文件的位置对应的统一资源定位符URL;
提供模块,用于将所述接收模块接收到的所述密钥包提供给第二终端,以便所述第二终端根据所述密钥包中携带的URL从所述云服务器中获取相应的加密文件,并使用所述密钥包中携带的共享密钥解密获取到的加密文件。
结合第八方面,在第一种可能的实现方式中,所述接收模块还用于,在所述提供模块将所述密钥包提供给所述第二终端之前,接收所述第一终端发送的针对第二终端的授权消息,所述授权消息用于允许所述第二终端从所述可信服务器中获取所述密钥包。
第九方面,提供一种可信服务器,包括如第八方面或第八方面的第一种可能的实现方式所述的文件共享装置。
本发明实施例提供一种文件共享方法及装置,第一终端分别将每个加密文件上传到服务器保存,并接收服务器返回的保存每个加密文件的位置分别对应的URL,生成包含待共享文件对应的共享密钥和URL的密钥包,并将密钥包提供给第二终端,第二终端通过该密钥包中的URL获取相应的加密文件,并采用密钥包中的共享密钥对获取到的加密文件进行解密。通过上述方法,第一终端在共享文件时无需改动已经保存在服务器中的文件,而且过程简单,可有效提高共享文件的效率。
具体实施方式
本发明实施例提供一种文件共享方法及装置,第一终端分别将每个加密文件上传到服务器保存,并接收服务器返回的保存每个加密文件的位置分别对应的URL,生成包含待共享文件对应的共享密钥和URL的密钥包,并将密钥包提供给第二终端,第二终端通过该密钥包中的URL获取相应的加密文件,并采用密钥包中的共享密钥对获取到的加密文件进行解密。通过上述方法,第一终端在共享文件时无需改动已经保存在服务器中的文件,而且过程简单,可有效提高共享文件的效率。
下面结合说明书附图,对本发明实施例进行详细描述。
图1为本发明实施例提供的文件共享过程,具体包括以下步骤:
S101:第一终端对一个或多个文件分别使用对应的共享密钥加密得到对应的加密文件。
在本发明实施例中,第一终端在将一个或多个文件上传到服务器中保存时,首先要分别对每个文件进行加密。具体的,第一终端可针对每个文件,生成该文件对应的共享密钥,并采用生成的该共享密钥对该文件进行加密,得到对应的加密文件。
也可以预先保存多个共享密钥,并针对每个文件,轮循的或随机的从保存的多个共享密钥中选择一个共享密钥作为该文件对应的共享密钥,采用该文件对应的共享密钥对该文件进行加密,得到对应的加密文件。
S102:第一终端将得到的每个加密文件上传到服务器保存。
S103:服务器接收第一终端分别上传的每个加密文件并保存。
S104:服务器向第一终端返回保存每个加密文件的位置对应的URL。
第一终端将每个文件进行加密得到加密文件后,则分别将得到的每个加密文件上传到服务器保存。服务器则针对接收到的每个加密文件,分配用于保存该加密文件的位置,并将该加密文件保存到分配的位置上,再向第一终端返回该位置对应的URL。第一终端则接收服务器返回的保存每个加密文件的位置对应的URL。
至此,第一终端已将每个文件进行加密并上传到服务器保存。
S105:第一终端生成待共享文件的密钥包,该密钥包中包含待共享文件对应的共享密钥和URL。
其中,待共享文件来源于步骤S101中所述的一个或多个文件,待共享文件对应的URL即为服务器保存该待共享文件对应的加密文件的位置的URL。
S106:第一终端将密钥包提供给第二终端。
其中,第二终端为要获取待共享文件的终端。
在本发明实施例中,当第一终端要将步骤S101中所述的一个或多个文件中的待共享文件共享给第二终端时,则先生成包含待共享文件对应的共享密钥和URL的密钥包,再将密钥包提供给第二终端。其中,具体要将步骤S101中所述的一个或多个文件中的哪个文件作为待共享文件共享给第二终端,可以由使用第一终端的用户进行确定。
例如,第一终端要上传的文件为d1~d5共5个文件,这5个文件对应的共享密钥分别为K1~K5,采用K1~K5分别对d1~d5进行加密后得到加密文件D1~D5,第一终端将D1~D5上传到服务器中保存后,接收到服务器返回的保存D1~D5的位置对应的URL1~URL5。当使用第一终端的用户要将d1~d3共享给第二终端时(此时d1~d3即为待共享文件),第一终端生成包含d1~d3分别对应的共享密钥K1~K3以及D1~D3分别对应的URL1~URL3的密钥包。生成的密钥包的格式可以如表1所示。
加密文件对应的URL |
加密文件对应的共享密钥 |
URL1 |
K1 |
URL2 |
K2 |
URL3 |
K3 |
表1
在表1中,每一行的第一列为一个待共享文件对应的URL,第二列为该共享文件对应的共享密钥。表1所示的密钥包的格式仅是一种实施例,本发明对密钥包的格式并不作限定。
另外,在本发明实施例中,第一终端将生成的密钥包提供给第二终端的方法可以为:第一终端直接将密钥包传输给第二终端,或者,第一终端将密钥包上传给服务器,再由服务器将密钥包发送给第二终端,或者,第一终端将密钥包上传给服务器,并接收服务器返回的保存该密钥包的位置对应的URL,第一终端再将服务器保存该密钥包的位置对应的URL发送给第二终端,第二终端根据服务器保存该密钥包的位置对应的URL从服务器中获取该密钥包。
S107:第二终端根据该密钥包中包含的URL从服务器中获取相应的加密文件,并采用该密钥包中包含的共享密钥解密获取到的加密文件。
第二终端接收到第一终端传输的密钥包后,则可根据该密钥包中的URL,从服务器中获取相应的加密文件,再采用密钥包中的共享密钥对获取到的加密文件进行解密。
继续以表1为例进行说明,第二终端获取到如表1所示的密钥包后,则可通过URL1获取加密文件D1,再采用K1对D1进行解密,获得待共享文件d1,类似的,通过URL2获取加密文件D2,再采用K2对D2进行解密,获得待共享文件d2,通过URL3获取加密文件D3,再采用K3对D3进行解密,获得待共享文件d3。
至此,第一终端已将待共享文件共享给了第二终端。
由图1所示的过程可见,由于第一终端分别将每个文件进行加密并上传到云服务器保存,而并非将各文件打包成一个文件包再加密上传,因此每个加密文件均对应一个URL,第一终端在向第二终端共享文件时,只要将携带待共享文件对应的URL和共享密钥的密钥包通过服务器提供给第二终端,第二终端即可通过该密钥包中的URL和共享密钥获得相应的文件,整个过程无需对第一终端上传到服务器中的文件进行任何改动,而且即使第一终端要向不同的其他终端共享的文件不同,第一终端也无需重复的获取已经上传到服务器中的加密文件并再次上传,因此本发明实施例提供的共享文件的方法过程简单,可有效提高共享文件的效率。
进一步的,在本发明实施例中,在图1所示的步骤S106中,当第一终端直接将密钥包传输给第二终端时,为了保证服务器中保存的待共享文件对应的加密文件的安全性,第一终端可将密钥包进行加密,并将加密后的密钥包传输给第二终端,以便第二终端对加密后的密钥包进行解密,使第二终端根据解密后的密钥包中包含的URL从服务器中获取相应的加密文件,并使用解密后的密钥包中包含的共享密钥解密获取到的加密文件,如图2所示。
图2为本发明实施例提供的第一终端直接将密钥包传输给第二终端时的文件共享过程,具体包括以下步骤:
S201:第一终端对一个或多个文件分别使用对应的共享密钥加密得到加密文件。
S202:第一终端将得到的每个加密文件上传到服务器保存。
S203:服务器接收第一终端分别上传的每个加密文件并保存。
S204:服务器向第一终端返回保存每个加密文件的位置对应的URL。
S205:第一终端生成待共享文件的密钥包。
其中,待共享文件来源于步骤S201中所述的一个或多个文件,密钥包中包含待共享文件对应的共享密钥和URL。
S206:第一终端将密钥包进行加密。
例如,第一终端可以获取第二终端的公钥,并采用第二终端的公钥对密钥包进行加密。
S207:第一终端将加密后的密钥包传输给第二终端。
S208:第二终端对加密后的密钥包进行解密,根据解密后的密钥包中包含的URL从服务器中获取相应的加密文件,并使用解密后的密钥包中包含的共享密钥解密获取到的加密文件。
继续沿用上例,由于第一终端采用第二终端的公钥对密钥包进行加密,因此第二终端可采用第二终端的私钥解密该加密后的密钥包,获取解密后的密钥包中包含的URL和共享密钥,并根据获取的URL从服务器中获取相应的加密文件,再使用获取的共享密钥解密获取到的加密文件。
另外,在本发明实施例中,图1中所述的服务器可以是云服务器,而为了保证第一终端上传到云服务器中待共享文件对应的加密文件的安全性,第一终端生成携带待共享文件对应的URL和共享密钥的密钥包后,还可对该密钥包进行加密,再将加密后的密钥包发送给云服务器。具体的,第一终端生成携带待共享文件对应的URL和共享密钥的密钥包后,可采用自身的公钥对该密钥包进行加密,并获取第二终端的公钥,根据第一终端自身的私钥以及第二终端的公钥,采用代理重加密的方式生成代理密钥,将加密后的密钥包以及该代理密钥上传到云服务器。云服务器则采用该代理密钥对接收到的该加密后的密钥包进行代理重加密,并将经过代理重加密后的密钥包提供给第二终端,如图2所示。
图3为本发明实施例提供的对密钥包进行代理重加密时的文件共享过程,具体包括以下步骤:
S301:第一终端对一个或多个文件分别使用对应的共享密钥加密得到对应的加密文件。
S302:第一终端将得到的每个加密文件上传到云服务器保存。
S303:云服务器接收第一终端分别上传的每个加密文件并保存。
S304:云服务器向第一终端返回保存每个加密文件的位置对应的URL。
S305:第一终端生成待共享文件的密钥包。
其中,待共享文件来源于步骤S301中所述的一个或多个文件,密钥包中携带待共享文件对应的共享密钥和URL。
S306:第一终端采用第一终端的公钥对密钥包进行加密,并获取第二终端的公钥。
其中,第一终端获取第二终端的公钥的方法可以是:从证书管理中心(Certification Authority,CA)中获取第二终端的公钥,或者直接从第二终端中获取第二终端的公钥,本发明实施例对此不作限定。
S307:第一终端根据第一终端的私钥以及第二终端的公钥生成代理密钥。
S308:将加密后的密钥包以及代理密钥上传到云服务器。
S309:云服务器采用该代理密钥对接收到的加密后的密钥包进行代理重加密。
S310:云服务器将经过代理重加密后的密钥包提供给第二终端。
S311:第二终端采用自身的私钥对密钥包进行解密。
由于密钥包是通过代理密钥进行代理重加密的,而该代理密钥是由第一终端的私钥和第二终端的公钥生成的,因此,第二终端接收到云服务器发送的经过代理重加密后的密钥包后,可直接采用该第二终端自身的私钥对该密钥包进行解密,后续则可通过解密后的密钥包中的URL获取相应的加密文件,并采用解密后的密钥包中的共享密钥对获取到的加密文件进行解密。
S312:第二终端通过解密后的密钥包中的URL在云服务器中获取相应的加密文件,并采用解密后的密钥包中的共享密钥对获取到的加密文件进行解密。
通过上述方法,密钥包在经过代理重加密后,除第二终端的私钥以外,任何终端或服务器(包括云服务器在内)均不能对该经过代理重加密后的密钥包进行解密,也就保证了其中携带的共享密钥不会外泄,从而可以保证第一终端上传到云服务器中的加密文件不被解密,可有效提高第一终端上传的加密文件的安全性。
另外,在图3所示的文件共享过程中,服务器(具体可以是云服务器)接收到第一终端发送的密钥包并对其进行代理重加密后,还可以将服务器自身保存该经过代理重加密后的密钥包的位置对应的URL发送给第一终端,第一终端则接收服务器返回的保存该经过代理重加密后的密钥包的位置对应的URL,并将保存该经过代理重加密后的密钥包的位置对应的URL发送给第二终端,第二终端则向云服务器发送携带保存该经过代理重加密后的密钥包的位置对应的URL的请求消息,用以向服务器请求该密钥包。服务器接收到第二终端发送的该请求消息后,则将该经过代理重加密后的密钥包提供给第二终端。
进一步的,为了更进一步保证第一终端上传到服务器中的加密文件的安全性,第一终端在将保存该经过代理重加密后的密钥包的位置对应的URL发送给第二终端之前,还可以向服务器发送针对第二终端的授权消息,该授权消息用于允许第二终端从服务器中获取该经过代理重加密后的密钥包。相应的,服务器在将该经过代理重加密后的密钥包提供给第二终端之前,还要对第二终端进行鉴权,并在确认该第二终端具有获取该经过代理重加密后的密钥包的权限时,将该经过代理重加密后的密钥包提供给第二终端,如果确定该第二终端不具有获取该经过代理重加密后的密钥包的权限,则拒绝向第二终端提供该经过代理重加密后的密钥包。
另外,为了保证上传到云服务器中的加密文件不被解密,除上述图2和图3中对密钥包进行加密的方法以外,第一终端也可以不对密钥包进行加密,但要将密钥包发送给用于存储密钥包的可信服务器(可信服务器不同于云服务器),由可信服务器保存并向第二终端提供密钥包,此时,本发明实施例所述的服务器则包括云服务器和可信服务器共两个服务器,云服务器用于存储加密文件,可信服务器用于存储密钥包,此时的文件共享过程如图4所示。
图4为本发明实施例提供的第一终端将密钥包发送给可信服务器时的文件共享过程,包括以下步骤:
S401:第一终端对一个或多个文件使用对应的共享密钥加密得到对应的加密文件。
S402:第一终端将得到的每个加密文件上传到云服务器保存。
S403:云服务器接收第一终端分别上传的每个加密文件并保存。
S404:云服务器向第一终端返回保存每个加密文件的位置对应的URL。
S405:第一终端生成待共享文件的密钥包。
其中,待共享文件来源于步骤S401中所述的一个或多个文件,密钥包中携带待共享文件对应的共享密钥和URL。
S406:第一终端将密钥包上传到可信服务器。
S407:可信服务器接收该密钥包并保存,将保存该密钥包的位置对应的URL返回给第一终端。
S408:第一终端接收可信服务器保存该密钥包的位置对应的URL,并将保存该密钥包的位置对应的URL发送给第二终端。
S409:第二终端向可信服务器发送携带保存该密钥包的位置对应的URL的请求消息。
S410:可信服务器将该密钥包提供给第二终端。
S411:第二终端通过该密钥包中的URL在云服务器中获取相应的加密文件,并采用该密钥包中的共享密钥对获取到的加密文件进行解密。
可见,与图2和图3所示的文件共享方法不同的是,为了保证第一终端上传到云服务器中的文件的安全性,第二种文件共享方法并非将密钥包进行加密并提供给第二终端,而是直接将密钥包上传到可信服务器中,第二终端从可信服务器中获取密钥包,而无需对密钥包进行加密,可进一步提高文件共享的效率。
当然,在图4所示的过程中,第一终端也可对密钥包进行加密,并将经过加密后的密钥包上传给可信服务器,由可信服务器向第二终端提供加密后的密钥包,第二终端可对加密后的密钥包进行解密,再通过解密的密钥包中的URL在云服务器中获取相应的加密文件,并采用解密的密钥包中的共享密钥对获取到的加密文件进行解密。
进一步的,在图3所示的过程中,第一终端在将可信服务器保存密钥包的位置对应的URL发送给第二终端之前,还可向可信服务器发送针对该第二终端的授权消息,该授权消息用于允许第二终端从可信服务器中获取该密钥包。相应的,可信服务器向第二终端提供该密钥包之前,还要对第二终端进行鉴权,并在确认第二终端具有获取该密钥包的权限时,向第二终端提供该密钥包,如果确认第二终端不具有获取该密钥包的权限,则拒绝向第二终端提供该密钥包。
以上为本发明实施例提供的文件共享方法,基于同样的发明思路,本发明实施例还提供相应的文件共享装置,如图5、图6、图7所示。
图5为本发明实施例提供的第一种文件共享装置结构示意图,具体包括:
加密模块501,用于对一个或多个文件分别使用对应的共享密钥加密得到对应的加密文件;
传输模块502,用于将所述加密模块501得到的每个加密文件上传到服务器保存,并接收所述服务器返回的保存每个加密文件的位置分别对应的统一资源定位符URL;
生成模块503,用于生成待共享文件的密钥包,其中,所述待共享文件来源于所述一个或多个文件,所述密钥包中包含待共享文件对应的共享密钥和URL;
共享模块504,用于将所述生成模块503生成的所述密钥包提供给第二终端,以便所述第二终端根据所述密钥包中包含的URL从所述服务器中获取相应的加密文件,并使用所述密钥包中包含的共享密钥解密获取到的加密文件,其中,所述第二终端为要获取待共享文件的终端。
所述共享模块504具体用于,将所述密钥包进行加密,并将加密后的密钥包传输给第二终端,以便所述第二终端对所述加密后的密钥包进行解密。
所述共享模块504具体用于,采用所述文件共享装置的公钥对所述密钥包进行加密,获取第二终端的公钥,根据所述文件共享装置的私钥以及所述第二终端的公钥生成代理密钥,将加密后的密钥包以及所述代理密钥上传到所述服务器,使所述服务器采用所述代理密钥对加密后的密钥包进行代理重加密,并将经过代理重加密后的密钥包提供给所述第二终端,以便所述第二终端采用所述第二终端的私钥对经过代理重加密后的密钥包进行解密。
所述服务器包括云服务器和用于存储密钥包的可信服务器;
所述传输模块502具体用于,将得到的每个加密文件上传到所述云服务器保存;
所述共享模块504具体用于,将所述密钥包上传到所述可信服务器,并接收所述可信服务器返回的保存所述密钥包的位置对应的URL,将保存所述密钥包的位置对应的URL发送给所述第二终端,以便所述第二终端根据保存所述密钥包的位置对应的URL从所述可信服务器中获取所述密钥包。
所述共享模块504还用于,将保存所述密钥包的位置对应的URL发送给所述第二终端之前,向所述可信服务器发送针对第二终端的授权消息,用于允许所述第二终端从所述可信服务器中获取所述密钥包。
具体的上述如图5所示的文件共享装置可以位于终端中。
图6为本发明实施例提供的第二种文件共享装置结构示意图,具体包括:
第一接收模块601,用于接收第一终端分别上传的一个或多个加密文件并保存,其中,所述一个或多个加密文件是所述第一终端对一个或多个文件采用对应的共享密钥对加密得到的;
发送模块602,用于向所述第一终端返回保存所述一个或多个加密文件的位置对应的统一资源定位符URL;
第二接收模块603,用于接收所述第一终端上传的待共享文件的密钥包,其中,所述待共享文件来源于所述一个或多个文件,所述密钥包中包含待共享文件对应的共享密钥和URL;
提供模块604,用于将所述密钥包提供给第二终端,以便所述第二终端通过所述密钥包中的URL从所述文件共享装置中获取相应的加密文件,并采用所述密钥包中的共享密钥解密获取到的加密文件,其中,所述第二终端为要获取待共享文件的终端。
所述第二接收模块603具体用于,接收所述第一终端上传的采用所述第一终端的公钥加密后的密钥包,并接收所述第一终端上传的代理密钥,所述代理密钥为所述第一终端根据所述第一终端的私钥以及第二终端的公钥生成的;
所述提供模块604具体用于,采用所述代理密钥对加密后的密钥包进行代理重加密,并将经过代理重加密后的密钥包提供给所述第二终端,使所述第二终端采用第二终端的私钥对所述经过代理重加密后的密钥包进行解密。
具体的上述如图6所示的文件共享装置可以位于云服务器中。
图7为本发明实施例提供的第三种文件共享装置结构示意图,具体包括:
接收模块701,用于接收第一终端上传的密钥包,其中,所述密钥包中包含待共享文件对应的共享密钥,以及云服务器保存待共享文件对应的加密文件的位置对应的统一资源定位符URL;
提供模块702,用于将所述接收模块701接收到的所述密钥包提供给第二终端,以便所述第二终端根据所述密钥包中携带的URL从所述云服务器中获取相应的加密文件,并使用所述密钥包中携带的共享密钥解密获取到的加密文件。
所述接收模块701还用于,在所述提供模块将所述密钥包提供给所述第二终端之前,接收所述第一终端发送的针对第二终端的授权消息,所述授权消息用于允许所述第二终端从所述可信服务器中获取所述密钥包。
具体的上述如图7所示的文件共享装置可以位于可信服务器中。
本发明实施例提供一种文件共享方法及装置,第一终端分别将每个加密文件上传到服务器保存,并接收服务器返回的保存每个加密文件的位置分别对应的URL,生成包含待共享文件对应的共享密钥和URL的密钥包,并将密钥包提供给第二终端,第二终端通过该密钥包中的URL获取相应的加密文件,并采用密钥包中的共享密钥对获取到的加密文件进行解密。通过上述方法,第一终端在共享文件时无需改动已经保存在服务器中的文件,而且过程简单,可有效提高共享文件的效率。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。