具体实施方式
为使本发明实施例的技术方案的优点更加清楚,下面结合附图对本发明的实施例作进一步的详细说明。
如图1所示,本发明数字媒体文件的加密方法包括如下步骤:
S11:将数字媒体文件划分成至少两个分段数字媒体文件;
S12:为所述分段数字媒体文件生成分段加密密钥;
S13:利用所述分段加密密钥对所述分段数字媒体文件进行加密。
通过将所述数字媒体文件进行分段,并分别用与各分段相对应的分段加密密钥进行加密,因而利用本发明所述的方法,可以根据内容发布者的需要,设置对所述数字媒体文件的使用权限,提高了对数字媒体文件进行保护时的灵活性。
如图2所示,为了更好的满足内容发布者的需要,实现对数字媒体文件更加灵活的保护,本发明在步骤S1之前还包括:
S11a:确定分段预处理参数。其中,所述的分段预处理参数可以包括,所述数字媒体文件的总长度,每个分段的起止位置等等。
在对所述数字媒体文件进行分段时,可按照长度分段或者时间进行分段。
(一)对于按照长度进行分段的方式,可适用于各种类型的数字媒体文件。内容发布者可以根据数字媒体文件中视频内容的精彩程度,视频的故事情节等确定每个分段的起止位置。按照所述的分段预处理参数,将所述数字媒体文件分成至少两个分段数字媒体文件,所述的分段数字媒体文件可以长度相同,也可以不同。在将所述的数字媒体文件进行分段后,即可得到各个分段数字媒体文件的分段标识,并将其记录。这里所述的分段标识可以用每个分段的序号表示,也可以用其他的形式表示。
(二)对于按照时间进行分段的方式来讲,只适用于视频流中有准确时间戳(timeStamp)信息的数字媒体文件,比如real、wmv格式数字媒体文件等。
以real文件为例,每个real文件包含头信息(Header Section)、数据信息(data Section)和索引信息(Index Section)三部分。Real文件的数据信息部分由若干个data chunk(数据块)组成,每个data chunk又包含多个datapacket(数据包),并且其中每个data packet都有一个timestamp属性(以ms为单位)来标识该packet的时间戳信息。
wmv文件与real文件相似,它的每个数据包(sample)中也有两个变量标识这个包与时间相关的信息,分别是cnsSampleTime和cnsSampleDuration。其中,cnsSample表示此段视频流开始播放的时间点,cnsSampleDuration表示此段视频流的播放时长,两者都以200ns为单位。
对于这种分段方式,可以根据所述分段预处理参数,得到每个分段数字媒体文件的起止位置所分别对应的时间信息,然后将其体现在对应的文件格式的时间戳上。在将所述的数字媒体文件进行分段后,即可得到各个分段数字媒体文件的分段标识,也即各个分段数字媒体文件的起止时间点,并将其记录。例如,对一个时长120分钟的影片,设定加密时段为第20分钟至第45分钟,第60分钟至第90分钟的内容。这样,影片就被分成了4段,第1段和第4段不加密,其余两段加密。然后,分析文件格式,找到其中的数据部分(如real文件的data section),将每个数据包的timeStamp与设定的加密时段的起止时间进行比较,对处于加密时段的数据进行对称加密。
为了方便加密操作,本发明所述的数字媒体文件的加密方法还可包括:
S12a:为待加密的分段数字媒体文件添加加密标识。在本发明中,可以用“1”表示已加密,用“0”标识未加密。
在对所述数字媒体文件进行分段之后,根据为每个待加密的分段数字媒体文件设置的加密标识,为其生成相应的分段加密密钥。其中,生成分段加密密钥的步骤S12可包括:
S121:根据种子密钥索引和内容发布者标识(ID)生成内容加密密钥。
在具体应用本发明的过程中,需要通过加密机来存储若干组许可密钥种子,而这些许可密钥种子都是事先输入到加密机中的。加密时,由加密机随机分配一个种子密钥索引。然后,通过种子密钥索引,找到其对应的一组预存在加密机里边的一组许可密钥种子。然后使用加密主密钥(MK)、许可密钥种子(Seek)和密钥标识(KeyID)生成一个内容加密密钥(Key)。
例如:预先在加密机里边预存了10组许可密钥种子,那么种子密钥索引就是从0到9,如果当前加密及分配给加密装置的种子密钥索引是5,那么真正的种子密钥就是加密机里边的第6组种子密钥。
S122:查找具有加密标识的分段数字媒体文件,获得其相应的分段标识;
S123:利用所述内容加密密钥,对所述分段数字媒体文件的分段标识进行分散,得到所述分段数字媒体文件的分段加密密钥。
然后,利用得到的分段加密密钥对相应的分段数字媒体文件进行加密。在加密的过程中,可以使用对称加密算法加密,如DES,3DES,AES加密算法等,还可以使用其他的加密算法进行加密。对于按照长度进行分段的方式,由于对称加密算法是以8字节(64bit)数据为单位进行的,所以前n-1个分段,每个分段的长度要为8字节的整数倍,其中,n为分段个数。如果最后一个分段长度不是8字节的整数倍,则最后不满8字节的数据不进行加密。
对于上述不同的分组方式,为每个分段数字媒体文件生成分段加密密钥的原理相同,不同之处在于,在判断当前使用的数字媒体文件是否为具有加密标识的分段数字媒体文件时,按照长度分组的数字媒体文件,是判断当前的数字媒体文件是否处于待加密的分段数字媒体文件的分段长度内;而按照时间分组的数字媒体文件,是判断当前的数字媒体文件是否处于待加密的分段数字媒体文件的分段时间内。
对于不具有加密标识的分段数字媒体文件,则不需要对其进行加密及相关的处理。在为各个待加密的分段数字媒体文件生成分段加密密钥后,将加密后的分段数字媒体文件,以及未作加密处理的分段数字媒体文件形成一个加密后的数字媒体文件,并为所述的数字媒体文件设置加密参数。其中所述加密参数可包括:内容发布者标识,所述数字媒体文件标识(ID),经加密的分段数字媒体文件的分段标识,分段预处理参数,收费策略,购买许可的URL,节目标题,节目简介,节目海报图片,节目版权,种子密钥索引等等。所述的加密参数可以放置在加密后的数字媒体文件的头部,或者尾部,其具体位置不受限制。
设置好加密参数的数字媒体文件,经内容发布者发布后,内容使用者可通过网络等途径下载使用。
因此,为了方便内容使用者的使用,与数字媒体文件的加密方法相对应,本发明还提供了一种数字媒体文件的解密方法。
如图3所示,本发明数字媒体文件的解密方法包括如下步骤:
S31:获取所述数字媒体文件的分段加密参数;其中,所述的分段加密参数可以包括内容发布者标识,所述数字媒体文件标识,经加密的分段数字媒体文件的分段标识,分段预处理参数,收费策略(按次收费或者无限次收费),种子密钥索引,购买许可的URL等等。其中,所述的内容发布者标识用来标识内容发布者的身份,而数字媒体文件标识则是数字媒体文件的唯一标识。
S32:根据所述分段加密参数,分别为每个分段数字媒体文件生成分段解密密钥。
在本发明所述的数字媒体文件的解密方法中,对所述数字媒体文件进行解密的过程可包括获取许可证和解密播放两部分。在许可证服务器下发许可证时,连接到加密机,通过种子密钥索引找到对应的许可密钥种子,再对数字媒体文件标识进行运算,产生内容解密密钥。
其中,所述的分段解密密钥可存储于许可证服务器下发的许可证中,还可以在使用所述数字媒体文件的过程中,由播放软件进行再次解密,获得每个分段的分段解密密钥。下面,分别描述以不同的方式获取分段解密密钥的过程。
在本发明中,内容使用者可以一次获得全部分段数字媒体文件的许可证,也可以分别获得每个分段数字媒体的许可证。
(一)一次获得全部分段数字媒体文件的许可证方式
在这种方式下,首先由播放软件解析所述数字媒体文件,获取在数字媒体文件中携带的分段加密参数。然后由所述播放软件向许可证服务器发送获取许可证的请求。在收到所述请求后,利用所述分段加密参数计算出内容解密密钥。然后,形成许可证文件下发给播放软件。在所述的许可证中可包括:内容发布者ID、数字媒体文件ID、许可证生成时间、许可证ID、许可证的可用状态(包括可用、取消和暂停三种状态)、内容解密密钥、收费策略(按次收费或无限次收费)、可用的观看次数(其中,用255表示可以无限次的观看)、已购买许可的分段数字媒体文件的分段标识等。
播放软件在获得所述许可证后,利用所述内容解密密钥,分别对已购买许可的分段数字媒体文件的分段标识进行分散,得到所述分段数字媒体文件的分段解密密钥,并存储所述分段解密密钥。其中所述的许可证可以存储在本地的硬盘上。为了方便解密操作,在许可证中可将已购买许可的分段数字媒体文件的分段标识,与其相应的分段解密密钥对应存储。
而在使用(例如播放)需要解密的当前使用的数字媒体文件时,可根据当前使用的数字媒体文件的分段标识,查询本地存储的许可证文件中与所述的分段数字媒体文件的分段标识一致的已购买许可的分段数字媒体文件的分段标识,并获得相应的分段解密密钥。
在这种方式下,内容使用者只需要一次性获取全部已购买许可的分段数字媒体文件的许可证即可,在使用过程中只是从本地存储的分段解密密钥中获取相应的分段解密密钥,对当前使用的数字媒体文件进行播放等操作。
(二)分别获得每个分段数字媒体文件的许可证方式
在这种方式下,内容使用者每次只是获得部分加密的分段数字媒体文件的许可证,具体可采用至少以下三种方式。
方式一:首先由播放软件解析所述数字媒体文件的分段加密参数,然后向许可证服务器发送许可证获取请求。在收到所述请求后,利用所述分段加密参数,生成许可证,并将所述许可证下发给播放软件,其中所述的许可证中包括内容解密密钥,已购买许可的分段数字媒体文件的分段标识。
此外,所述的许可证中还可包括内容发布者ID、数字媒体文件ID、许可证生成时间、许可证ID、许可证的可用状态(包括可用、取消和暂停三种状态)、内容解密密钥、收费策略(按次收费或无限次收费)、可用的观看次数(其中,用255表示可以无限次的观看)、已购买许可的分段数字媒体文件的分段标识等。
在使用所述数字媒体文件时,获取当前使用的分段数字媒体文件的分段标识。若所述当前使用的分段数字媒体文件的分段标识,与已购买许可的分段数字媒体文件的分段标识相同,则利用所述内容解密密钥,对当前使用的分段数字媒体文件的分段标识进行分散,得到所述分段数字媒体文件的分段解密密钥。利用所述分段解密密钥,即可对当前使用的数字媒体文件进行播放等操作。
方式二:首先由播放软件解析所述数字媒体文件的分段加密参数,向许可证服务器发送许可证获取请求。在收到所述请求后,利用所述分段加密参数,生成所述数字媒体文件的内容解密密钥。然后,由许可证服务器利用所述内容解密密钥,对已购买许可的分段数字媒体文件的分段标识进行分散,获取其分段解密密钥。最后,由许可证服务器生成许可证,包括所述已购买许可的分段数字媒体文件的分段标识及其对应的分段解密密钥,并将所述许可证下发给播放软件。此外,所述的许可证中还可包括内容发布者ID、数字媒体文件ID、许可证生成时间、许可证ID、许可证的可用状态(包括可用、取消和暂停三种状态)、内容解密密钥、收费策略(按次收费或无限次收费)、可用的观看次数(其中,用255表示可以无限次的观看)、已购买许可的分段数字媒体文件的分段标识等。
在播放软件,使用所述数字媒体文件时,获取当前使用的分段数字媒体文件的分段标识,在所述许可证中查询与当前使用的分段数字媒体文件的分段标识相对应的已购买许可的分段数字媒体文件的分段标识,并获得相应的分段解密密钥,即可对当前使用的数字媒体文件进行播放等操作。
方式三:首先由播放软件解析所述数字媒体文件的分段加密参数,向许可证服务器发送许可证获取请求。在收到所述请求后,利用所述分段加密参数,生成所述数字媒体文件的内容解密密钥。然后,由许可证服务器利用所述内容解密密钥,对已购买许可的分段数字媒体文件的分段标识进行分散,获取其分段解密密钥。最后,由许可证服务器生成许可证,包括所述已购买许可的分段数字媒体文件的分段标识及其对应的分段解密密钥,并将所述许可证下发给播放软件。此外,所述的许可证中还可包括内容发布者ID、数字媒体文件ID、许可证生成时间、许可证ID、许可证的可用状态(包括可用、取消和暂停三种状态)、内容解密密钥、收费策略(按次收费或无限次收费)、可用的观看次数(其中,用255表示可以无限次的观看)、已购买许可的分段数字媒体文件的分段标识等。
为了方便识别,用每个许可证中的已购买许可的分段数字媒体文件的分段标识,作为其对应的许可证的标识。当然,还可用其他的方式作为各个已购买许可的分段数字媒体文件所对应的许可证的标识,只要在使用所述数字媒体文件时,能够找到与当前使用的数字媒体文件相同的分段解密密钥即可。
在使用所述数字媒体文件时,获取当前使用的分段数字媒体文件的分段标识,查询与所述当前使用的分段数字媒体文件的分段标识相对应的许可证,并获取相应的分段解密密钥,即可对当前使用的数字媒体文件进行播放等操作。
方式二与方式三的不同之处在于,在方式二中,各个分段解密密钥是通过一个许可证下发的;而在方式三中,各个分段解密密钥是通过多个许可证下发的。
需要注意的是,上述的几种获取许可证的方式只是本发明的一些实施例,在具体实现本发明的过程中可以不受上述实施例的限制,只要能够获取当前使用的数字媒体文件的分段解密密钥即可。
在具体应用中,根据加密过程中分段方式的不同,在解密播放所述数字媒体文件时,可采用如下的方式实现。
按长度进行分段加密的数字媒体文件,在播放过程中,利用Windows apihook(钩子)技术去解密。首先,api hook检测如下4个api函数:ReadFile、SetFilePointer、GetFileSize、WriteFile。由于,对数字媒体文件的加密段首先需要解密成明文才能正常播放,所以需要对上述的这些api函数进行修改,改变其原有功能。修改的基本方法是:由hook“接触”到要修改的上述4个api函数入口点,然后改变它的地址指针,使其指向新的自定义函数中。在新的自定义函数中,首先判断所述数字媒体文件是否为按照长度进行分段的,若是,则检测当前使用的数字媒体文件中的数据是否为加密数据,若是,则获取相应的分段解密密钥,将当前使用的数字媒体文件解密成明文,进行解码播放。
按时间分段的数字媒体文件,由于只对其视频数据部分进行加密,头信息等参数信息没有加密,因此,对于这类文件,若使用api hook解密,在获取加密参数的基础上,还要分析其视频文件的格式,明晰数据部分所在的位置,然后根据加密参数确定数据是否为加密段数据。这样,整个解密过程会变得非常复杂,效率比较低。
所以本发明中利用微软提供的DirectShow技术,设计播放器链路来播放加密视频。DirectShow的核心是Filter的设计和实现,以及由Filter搭建FilterGraph的过程。从功能上来讲,Filter包含Source Filter、Transform Filter和Render Filter三种。下面分别针对wmv和real两种格式的数字媒体文件进行详细说明。
对wmv文件,可以设计两个Transform Filter,即Audio Encrypt Filter和Video Encrypt Filter。利用这两Filter分别对加密的视频数据和音频数据解密,然后将解密的视频和音频数据分别送到WMAudio Deocde DMO和WMVideoDecoder DMO中进行解码,最后,将解码数据送入Render Filter中进行播放。
对real文件,可以设计一个Source Filter。它的主要功能就是负责文件加载,文件格式分析、对加密数据解密。对数字媒体文件的解密播放,首先由RealMedia Splitter Filter将文件的视频、音频数据分离,接着由RealVideoDecoder Filter和ffdshow Audio Decoder Filter分别对视频和音频数据解密,最后送到Render Filter播放。
上述的播放过程中的解密方式只是一些实施例,在具体应用中并不受上述实现方式的限制。
此外,如图4所示,本发明数字媒体文件的加密装置包括:文件划分单元,分段密钥生成单元,以及加密单元;其中,文件划分单元,用于将数字媒体文件划分成至少两个分段数字媒体文件;分段密钥生成单元,用于为所述分段数字媒体文件生成分段加密密钥;加密单元,用于利用所述分段加密密钥对所述分段数字媒体文件进行加密。
通过将所述数字媒体文件进行分段,并分别用与各分段相对应的分段加密密钥进行加密,因而利用本发明所述的加密装置,可以根据内容发布者的需要,设置对所述数字媒体文件的使用权限,提高了对数字媒体文件进行保护时的灵活性。
为了更好的满足内容发布者的需要,进一步提高对数字媒体文件进行保护时的灵活性,如图5所示,所述的加密装置还包括:参数设置单元,用于设置分段预处理参数;标识添加单元,用于为待加密的分段数字媒体文件添加加密标识;加密参数设置单元,用于为所述数字媒体文件设置加密参数。
其中,所述文件划分单元包括:划分模块,用于根据所述分段预处理参数,将所述数字媒体文件分段;记录模块,用于记录每个分段数字媒体文件的分段标识。所述分段密钥生成单元包括:密钥获取模块,用于获取内容加密密钥;查找模块,用于查找具有加密标识的分段数字媒体文件;分段密钥生成模块,用于利用所述内容加密密钥,对所述分段数字媒体文件的分段标识进行分散,得到所述分段数字媒体文件的分段加密密钥。
为了方便内容使用者使用所述数字媒体文件,所述分段密钥生成单元还包括:存储模块,用于存储所述分段数字媒体文件的分段标识,与其相对应的分段加密密钥的对应关系。
本发明所述的加密装置的工作原理,与加密方法中的原理相同,在此不再赘述。
如图6所示,本发明数字媒体文件的解密装置包括:分段加密参数获取单元,以及分段解密密钥生成单元;其中,分段加密参数获取单元,用于获取所述数字媒体文件的分段加密参数;分段解密密钥生成单元,用于根据所述分段加密参数,分别为每个分段数字媒体文件生成分段解密密钥。
本发明所述的数字媒体文件的解密装置,根据所述数字媒体文件的加密参数,分别为各个分段数字媒体文件进行解密。由于各个分段数字媒体文件可以采用不同的分段解密密钥,而所述分段解密密钥可以灵活设置,因而本发明的数字媒体文件的解密装置,提高了对数字媒体文件进行保护时的灵活性。
分段解密密钥的生成有多种方式,例如,用户可以一次性购买对所有分段加密数字媒体文件的许可证,那么这样,各个分段数字媒体文件的分段解密密钥将会随着许可证一起下发给播放软件,在使用所述数字媒体文件的时候,只要查询到相应的分段解密密钥即可。
或者,用户可分段购买各个分段数字媒体文件的许可证,那么在这种情况下,随许可证下发给播放软件的只是内容解密密钥,那要么在使用数字媒体文件的过程中,需要对已购买许可的分段数字媒体文件的分段标识进行再次分散,得到相应的分段解密密钥;
或者,在分段购买许可时,将所有分段数字媒体文件的分段解密密钥用一个许可证下发给播放软件;或者在分段购买许可时,将各个分段数字媒体文件的分段解密密钥分别随着相应的许可证一起下发给播放软件等等。
当然,上面列举的只是实现获取各个分段数字媒体文件的分段解密密钥的几种方式,在具体实现本发明的过程中,实现方式并不局限于上述所列举的。
相应的,所述的分段解密密钥生成单元可包括不同的组成部分:
如图7所示,所述的分段解密密钥生成单元可包括:
第一许可证获取模块,用于利用所述分段加密参数,生成许可证,其中所述的许可证中包括内容解密密钥,已购买许可的分段数字媒体文件的分段标识;
第一分段解密密钥生成模块,用于利用所述内容解密密钥,分别对已购买许可的分段数字媒体文件的分段标识进行分散,得到所述分段数字媒体文件的分段解密密钥;
第一分段解密密钥获取模块,用于在使用所述数字媒体文件时,若所述当前使用的分段数字媒体文件的分段标识,与已购买许可的分段数字媒体文件的分段标识相同,获取与已购买许可的分段数字媒体文件相对应的分段解密密钥。
如图8所示,所述的分段解密密钥生成单元还可包括:
第二许可证获取模块,用于利用所述分段加密参数,生成许可证,其中所述的许可证中包括内容解密密钥,已购买许可的分段数字媒体文件的分段标识;
第二分段标识获取模块,用于在使用所述数字媒体文件时,获取当前使用的分段数字媒体文件的分段标识;
第二分段解密密钥生成模块,用于在所述当前使用的分段数字媒体文件的分段标识,与已购买许可的分段数字媒体文件的分段标识相同时,则利用所述内容解密密钥,对当前使用的分段数字媒体文件的分段标识进行分散,得到所述分段数字媒体文件的分段解密密钥。
如图9所示,所述的分段解密密钥生成单元还可包括:
第三内容解密密钥生成模块,用于利用所述分段加密参数,生成所述数字媒体文件的内容解密密钥;
第三分段解密密钥生成模块,用于利用所述内容解密密钥,对已购买许可的分段数字媒体文件的分段标识进行分散,获取其分段解密密钥;
第三许可证获取模块,用于为所述数字媒体文件生成许可证,其中所述的许可证中包括已购买许可的各个分段数字媒体文件的分段标识及其对应的分段解密密钥;
第三分段解密密钥查找模块,用于在使用所述数字媒体文件时,根据当前使用的分段数字媒体文件的分段标识,从所述许可证中获得相对应的分段解密密钥。
如图10所示,所述的分段解密密钥生成单元还可包括:
第四内容解密密钥生成模块,用于利用所述分段加密参数,生成所述数字媒体文件的内容解密密钥;
第四分段解密密钥生成模块,用于利用所述内容解密密钥,对已购买许可的分段数字媒体文件的分段标识进行分散,获取其分段解密密钥;
第四许可证获取模块,用于为已购买许可的各个分段数字媒体文件分别生成对应的许可证,其中所述的许可证中包括已购买许可的分段数字媒体文件的分段标识及其对应的分段解密密钥;
第四分段解密密钥查找模块,用于在使用所述数字媒体文件时,根据当前使用的分段数字媒体文件的分段标识确定相对应的许可证,并获取相应的分段解密密钥。
需要注意的是,无论采用何种方式实现分段解密密钥的获取,其原理上是相同的。
综上所述,本发明所述的数字媒体文件的加解密方法及装置,通过对数字媒体文件进行分段加解密的方式,实现了对数字媒体文件的灵活保护。
当然,本发明的实施例还可有很多种,在不背离本发明的实施例精神及其实质的情况下,本领域技术人员当可根据本发明的实施例做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的实施例所附的权利要求的保护范围。