CN104834835A - 一种Windows平台下的通用数字版权保护方法 - Google Patents
一种Windows平台下的通用数字版权保护方法 Download PDFInfo
- Publication number
- CN104834835A CN104834835A CN201510243957.3A CN201510243957A CN104834835A CN 104834835 A CN104834835 A CN 104834835A CN 201510243957 A CN201510243957 A CN 201510243957A CN 104834835 A CN104834835 A CN 104834835A
- Authority
- CN
- China
- Prior art keywords
- file
- content
- irp
- module
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 111
- 238000001914 filtration Methods 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 claims description 82
- 230000006870 function Effects 0.000 claims description 38
- 230000000903 blocking effect Effects 0.000 claims description 13
- 238000012856 packing Methods 0.000 claims description 8
- 238000003197 gene knockdown Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 239000000725 suspension Substances 0.000 claims description 4
- 238000013459 approach Methods 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 11
- 230000008859 change Effects 0.000 abstract description 5
- 238000012544 monitoring process Methods 0.000 abstract description 5
- 238000012545 processing Methods 0.000 abstract description 4
- 238000012795 verification Methods 0.000 abstract description 3
- 230000008676 import Effects 0.000 abstract description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 16
- 238000010586 diagram Methods 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000013065 commercial product Substances 0.000 description 1
- 238000013016 damping Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013404 process transfer Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000010008 shearing Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
Abstract
本发明公开了一种Windows平台下的通用数字版权保护方法,本发明通过硬件指纹验证能实现本地自动解密授权使用受保护文件,当硬件验证不通过时还提供在线认证方式,满足了用户部分自主性,如多台设备共享、硬件变更等。在文件I/O拦截的处理上,采用内核层文件过滤驱动和应用层IAT API Hook技术配合使用,内核层对文件读写内容进行拦截可以忽略应用层任何的文件读写细节,而且更准确和高效;而IAT API HOOK与特定的应用程序紧密联系,相对于通过应用层键鼠钩子实现监控而言,将更具有针对性地在应用层对复制粘贴、另存为等文件操作进行监控和限制。此外通过文件过滤驱动与明文内存区权限设定的方法对内存中明文进行了较好的保护,极大地降低了内存明文被泄露的可能。
Description
技术领域
本发明属于信息安全技术领域,涉及一种数字版权保护方法,具体涉及一种Windows平台下的通用数字版权保护方法。
背景技术
数字版权保护(Digital Rights Management,简称DRM)技术是指对各类数字内容的知识产权进行保护的一系列软硬件技术,现涉及到的技术主要有加密解密技术、数字签名、访问权限控制技术、可信计算技术、过滤驱动技术、双缓存技术、数字水印、数字指纹、透明文件系统研究等。随着多媒体技术和互联网的迅猛发展,数字化产品的使用与传播越来越广泛,非法传播和盗版问题严重侵犯了版权所有者和内容出版社的知识产权和经济利益,数字版权保护显得尤为重要。目前,针对电子文档、电子图书、音视频媒体和软件等数字产品均有对应的成形的商业产品方案及系统,譬如书生的SEP系统和微软的RMS等(针对电子文档)、方正的Apabi和Adobe的PDF保护(针对电子图书)、苹果的FairPlay和微软的Windows Media DRM等(针对音视频媒体)。然而,这些商业方案均都只针对特定的文件格式,均需要下载对应的客户端,而且大多还依赖于联网认证和第三方授权中心,在实际应用上不够便捷且不具备通用性。为此,众多研究人员开始纷纷寻找通用数字版权保护方案,也出现了不少成果;比如,冯海永老师等提出了采用过滤器驱动程序实现通用型DRM系统,王玉林老师等提出了一种基于网络环境的通用数字版权保护方法。但现有提出的方案均还有待验证和完善,尤其在执行效率和安全性上,此外,实际使用上也不够便捷。总的来说,寻找更高效更安全的通用数字版权保护方案的研究仍将是未来的重点研究方向。
发明内容
为了克服现有数字版权保护商业方案的以上缺陷,弥补通用数字版权保护方案现有研究上的不足,本发明提供了一种Window下的通用数字版权保护方法。
本发明所采用的技术方案是:一种Windows平台下的通用数字版权保护方法,其特征在于,包括以下步骤:
步骤1:采用Web浏览器作为内容提供商、保护内容提供商和用户之间业务的交互途径,其核心交互有内容提供商上传原始文件、保护内容提供商对原始文件加密和打包、用户下载受保护文件;
步骤2:用户无需下载任何客户端软件,直接双击下载的.exe文件即可打开受保护内容进行观看;对受保护内容的保护措施主要有文件过滤驱动处理、IATAPI Hook监控、内存访问权限限制;
步骤3:若受保护文件为可编辑文档,则用户直接对受保护文件内容进行编辑并能且只能直接保存于当前文件上;
步骤4:当打开受保护文件的第三方应用程序进程退出时,该.exe文件映射在内存中的所有文件会被清除,其中包括内存中明文;此外,内存中其他用来保护受保护内容的相关模块也会被卸载完全,其中相关模块包括卸载隐藏进程驱动、文件过滤驱动、API拦截模块。
作为优选,步骤1的具体实现包括以下子步骤:
步骤1.1:内容提供商通过文件上传页面上传原始内容至内容服务器上;
步骤1.2:保护内容提供商管理内容服务器,提取用户客户端设备的硬件指纹,然后结合硬件指纹对原始内容进行加密,最后同主控制程序、加解密模块、隐藏驱动模块、文件过滤驱动模块、API拦截模块、内存控制模块一起打包组织成PE格式的.exe文件提供给用户下载;
步骤1.3:用户通过内容购买页面购买并下载PE格式的.exe文件至本地。
作为优选,步骤1.2中所述的结合硬件指纹对原始内容进行加密,加密密钥是基于对用户客户端设备的硬件指纹进行SHA-256得到的256位密钥;以512字节(正好一个扇区的大小)为单位对原始内容进行分组,然后利用AES-256算法对原始内容进行分组加密,得到的密文文件与原始文件后缀名保持一致。
作为优选,步骤2的具体实现包括以下子步骤:
步骤2.1:点击运行.exe文件,首先执行主控制程序,创建主控制进程,用来调用和执行其他模块函数;
步骤2.2:执行驱动加载程序,将隐藏驱动模块、文件过滤驱动模块加载到驱动层;通过隐藏驱动模块隐藏相关进程;然后通过加载文件过滤驱动截获文件访问进程请求读取受保护内容的IRP进行检查,若为MainDRM进程且读取内容为受保护内容,则运行解密程序;否则阻止访问并返回错误代码;
步骤2.3:解密程序的执行过程:自动提取客户端设备的硬件指纹(Mac地址&CPU id),跟之前记录的用户硬件指纹进行对比,若完全相同,则对该硬件指纹进行SHA-256处理得到256位密钥然后对密文进行AES-256解密,在内存中生成脱密的原始内容文件;然后,自动关联相对应的第三方应用程序打开原始内容文件;若不完全相同,则解密失败,返回错误信息提示,并给出在线认证的方式给用户选择,直到服务器响应客户端并进行授权才能继续完成解密工作;
步骤2.4:获取打开原始内容文件的第三方应用程序的进程ID,并对该进程进行监控;主控制进程启动一个远程线程将API拦截模块载入到第三方应用程序的进程内存空间,遍历该进程的导入地址表(IAT),若发现需挂接模块,则修改IAT,挂接相应的API入口地址,指向自己编写的伪API函数;以此方式屏蔽用户通过第三方应用程序对原始内容文件进行的非法操作;
步骤2.5:执行内存控制模块中内存权限设置函数,将明文内容的内存区设置为私有,非该选择的第三方应用程序的进程ID不得读取,防止内存中明文被泄露。
作为优选,步骤3中,采用文件过滤驱动对文件写请求IRP进行拦截和相关处理,主要包括检查该IRP是否为合法访问、检查该IRP中数据内容是否页面对齐、调用加解密函数对受保护内容进行加解密。
作为优选,步骤3中,若过滤驱动检查写请求IRP中的数据内容是页面对齐,直接对修改后的文件页表加密后保存;
若未页面对齐,则进行如下处理:读取该数据在文件中的偏移,计算出IRP中的请求数据分布在哪些页面并记录下来,接着暂时挂起原始IRP并按其数据分布页面将原始IRP分解成相对应数量的大小为512字节的多个IRP,并针对每个页面重新构造数据区大小为512字节的新的读请求IRP;然后,调用解密函数将读请求IRP请求到的页面数据(密文)进行解密,接着用原始请求分解出的IRP中对应的明文数据对解密后的页面进行数据刷新,再重新加密;直到所有新的读请求IRP内容数据刷新且重新解密完成,最后将各加密后的数据区内容合并后保存至磁盘设备卷。
本发明有益效果:本发明在综合运用现有数字版权保护相关技术的基础上,结合现今通用数字版权保护研究中的不足,如必须联网认证进行授权、用户自主性差、内存明文易泄露、抑或执行效率低下等问题,提出了一种相对较高效较安全的Windows下与文件类型无关的通用数字版权保护方法。用户无需下载客户端,本方法通过硬件指纹验证能实现本地自动解密授权使用受保护文件,与此同时,当硬件验证不通过时还提供在线认证方式,满足了用户部分自主性,如多台设备共享、硬件变更等。在文件I/O拦截的处理上,采用内核层文件过滤驱动和应用层IAT API Hook技术配合使用。这样做的好处是,内核层对文件读写内容进行拦截可以忽略应用层任何的文件读写细节,而且更准确和高效;而IAT APIHOOK与特定的应用程序紧密联系,相对于通过应用层键鼠钩子实现监控而言,将更具有针对性地在应用层对复制粘贴、另存为等文件操作进行监控和限制。此外,通过文件过滤驱动与明文内存区权限设定的方法对内存中明文进行了较好的保护,极大地降低了内存明文被泄露的可能。
附图说明
图1:是本发明实施例的基本业务交互过程示意图;
图2:是本发明实施例的服务器上原始内容的加密和打包过程示意图;
图3:是本发明实施例的下载的.exe文件在客户端执行过程的流程图;
图4:是本发明实施例的加入IAT API Hook和文件过滤驱动后系统调用过程示意图;
图5:是本发明实施例的过滤驱动对文件读请求的访问控制及解密流程图;
图6:是本发明实施例的几种Windows文件读写请求方式说明示意图;
图7:是本发明实施例的过滤驱动对文件写请求的访问控制及加密流程图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
本发明提供的一种Windows平台下的通用数字版权保护方法,其特征在于,包括以下步骤:
步骤1:采用Web浏览器作为内容提供商、保护内容提供商和用户之间业务的交互途径,其核心交互有内容提供商上传原始文件、保护内容提供商对原始文件加密和打包、用户下载受保护文件;
请见图1和图2,步骤1的具体实现包括以下子步骤:
步骤1.1:内容提供商通过文件上传页面上传原始内容至内容服务器上;
步骤1.2:保护内容提供商管理内容服务器,提取用户客户端设备的硬件指纹,然后结合硬件指纹对原始内容进行加密,最后同主控制程序、加解密模块、隐藏驱动模块、文件过滤驱动模块、API拦截模块、内存控制模块一起打包组织成PE格式的.exe文件提供给用户下载;其具体实现包括以下子步骤:
步骤1.2.1:当用户通过登录页面登录时,通过运行于客户端的JavaScript脚本提取用户所用客户端设备的硬件指纹(Mac地址&CPU id)并保存到数据库中;
步骤1.2.2:当用户浏览文件内容简介并点击购买时,跳入订单处理页面、填写用户相关信息的同时,运行加密程序,具体加密过程为对客户端设备硬件指纹进行SHA-256得到256位密钥,以512字节(正好一个扇区的大小)为单位对原始内容进行分组,然后利用AES-256算法对原始内容进行分组加密,得到密文文件,密文文件与原始文件后缀名保持一致;(采用分组加密的好处是,如果文件中某个位置的数据被修改,只需对数据所在页面进行重新加密即可,而不需要对整个文件重新加密。)本发明中SHA-256算法采用的是网上现有算法思路实现,AES-256算法是在现有算法思路的基础上进行自定义改编并结合按固定大小为512字节分组实现分组数据加密。这俩种算法都是现今运用比较广泛的较安全高效的加密算法。
步骤1.2.3:将密文同主控制程序、加解密模块(encryption.dll)、隐藏驱动模块(drive_hide.sys)、文件过滤驱动模块(drive_file_filter.sys)、API拦截模块(IAT_API_Hook.dll)、内存控制模块(memory_control.dll)等一起打包组织生成.exe文件并提供给用户下载至本地。主控制程序中含有加载驱动模块、创建远程线程、监控进程、调用其他模块、卸载清除等程序。
生成的.exe文件内部结构如下表所示:
文件头中包含DOS MZ Header、DOS Stub、PE签名、PE文件头、PE可选头,会在PE加载器加载.exe文件时用到;节表是关于下述各个节点的数据表,用来说明各个节点的位置和内容大小等属性、文件偏移量、虚拟偏移量等;文件头、节点还有其他节点(如.idata、.rdata、.edata等),这些都由在VS集成环境中生成.exe文件时自动组织,具体的参见windows官网中PE文件格式说明。主控制程序、加解密模块(encryption.dll)、文件过滤驱动模块(drive_file_filter.sys)、隐藏驱动模块(drive_hide.sys)、API拦截模块(IAT_API_Hook.dll)、内存控制模块(memory_control.dll)存在于代码段。密文存在于数据段。
步骤1.3:用户通过内容购买页面购买并下载PE格式的.exe文件至本地。
步骤2:用户无需下载任何客户端软件,直接双击下载的.exe文件即可打开受保护内容进行观看;对受保护内容的保护措施主要有文件过滤驱动处理、IATAPI Hook监控、内存访问权限限制;
请见图3,步骤2的具体实现包括以下子步骤:
步骤2.1:运行.exe文件,尤其.exe文件是PE格式文件,PE装载器将按Windows操作系统设定的规则加载.exe文件并将其内容按需要映射到内存中。首先执行主控制程序,创建主控制进程(MainDRM进程),用来调用和执行其他模块函数。
步骤2.2:执行驱动加载程序,将隐藏驱动模块(drive_hide.sys)、文件过滤驱动模块(drive_file_filter.sys)加载到驱动层;通过隐藏驱动模块隐藏相关进程;然后通过加载文件过滤驱动截获文件访问进程请求读取受保护内容的IRP进行检查,若为MainDRM进程且读取内容为受保护内容,则运行解密程序;否则阻止访问并返回错误代码。
隐藏进程驱动通过替换Windows进程查看函数ZwQuerySystemInformation函数实现,隐藏的进程将包括MainDRM进程以及后续的过滤驱动进程和加解密进程等。
文件过滤驱动首先绑定所有的文件系统及磁盘卷设备,并附加过滤设备在每个磁盘卷设备上。通过绑定和附加行为,过滤驱动能够拦截所有发往文件系统的IRP,针对访问受保护文件的IRP进行拦截,并对拦截的IRP进行处理。由于驱动对象不能接收IRP,为保证可靠性,驱动程序会生成一个设备对象接收IRP,使得过滤程序再没有生成过滤设备的时候也能接收IRP,并执行相应的操作。接着,注册一系列的回调函数,把它们的函数入口地址加载到内存中,对IRP的处理过程基本都是在回调函数中完成,其中包括动态函数例程,派遣例程,FAST I/O例程等。派遣函数的主要任务是处理发给驱动程序的I/O请求,用户模式下所有I/O请求都由操作系统转化为IRP,不同的IRP由不同的派遣函数进行处理,数据加解密工作就是放在处理特定IRP(IRP_MJ_CREATE)的派遣函数中完成,因为对磁盘文件发起的访问,第一个进行的请求就是IRP_MJ_CREATE。
具体读取控制过程,参见图5,详情如下:①MainDRM进程向I/O管理权发出读取密文的请求;②I/O管理器将其请求转化为IRP_MJ_READ,然后发送给过滤设备的读派遣例程;③读派遣例程只对带有IRP_NOCACHE,IRP_PAGING_IO,IRP_SYNCHRONOUS_PAGING_IO这几种标志的IRP_MJ_READ往后传递继续解密处理。如果读取请求是页面对齐的,即以512字节为最小单位,直接转发给下层设备(文件系统驱动设备及逻辑设备卷)进行处理。否则,先进行如下处理:读取数据在文件中的偏移,计算出IRP中的请求数据分布在哪些页面并记录下来接着,暂时挂起原始IRP,并重新构造数据区大小为512字节的新IRP。如果上层传来的IRP数据区过大,就将其分解成多个新的IRP读取;然后转发给下层设备进行处理。④下层设备将请求的页面数据(即密文)发送给过滤设备,进入处理IRP_MJ_CREATE的派遣函数完成例程,调用解密函数将请求的页面数据进行解密;⑤解密完成后,将IRP传回给过滤驱动,并将IRP控制权转移给读派遣例程;⑥检查所有新的IRP数据是否读取完成,是则将各读取的数据区内容合并起来,否则继续向下层设备索取未读取的新IRP数据,直至读取完成。⑦最后I/O管理器将读取到的解密数据保存到系统内存中并告知给MainDRM进程。
步骤2.3:解密程序的执行过程:自动提取客户端设备的硬件指纹(Mac地址&CPU id),跟之前记录的用户硬件指纹进行对比,若完全相同,则对该硬件指纹进行SHA-256处理得到256位密钥然后对密文进行AES-256解密,在内存中生成脱密的原始内容文件。然后,自动关联相对应的第三方应用程序打开原始内容文件;若不完全相同,则解密失败,返回错误信息提示,并给出在线认证的方式给用户选择,直到服务器响应客户端并进行授权才能继续解密工作。
在线认证的过程,用户在客户端填写用户相关请求信息并连同此时客户端的硬件指纹一起提交给服务器,服务器受到请求后,将信息与购买时用户提供的信息进行核实,如用户身份信息,备用电脑硬件指纹等,若核实通过,则响应客户端进行授权然后继续解密。通过提供在线认证的方式,可以应对用户硬件变更、多机授权等正常用户合理使用权限。
步骤2.4:获取打开原始内容文件的第三方应用程序的进程ID,并对该进程进行监控;主控制进程启动一个远程线程将API拦截模块载入到第三方应用程序的进程内存空间,遍历该进程的导入地址表(IAT),若发现需挂接模块,则修改IAT,挂接相应的API入口地址,指向自己编写的伪API函数;以此方式屏蔽用户通过第三方应用程序对原始内容文件进行的非法操作;参见图4中IATAPI Hook部分。
当相对应的第三方应用程序打开受保护内容时,通过过滤驱动获取到的IRP获取到其进程ID。为确保获取及时准确,可以遍历当前内存中的进程列表,对新加入的进程进行验证。此外,还可以通过全局钩子监听新加进程,但使用全局钩子比较影响运行效率,在此并不采用。
地址导入表(IAT)中存放着程序运行时实际调用的Win32API地址,本发明通过修改IAT中的实际函数地址来实现对API的拦截,运行自定义的处理函数,从而实现在用户模式下对文件I/O操作的拦截。若修改非自己进程内的函数,需要将修改代码注入到其相应的内存空间里,在此通过远程线程的方式在需要挂接的进程载入内存时将API拦截模块(IAT_API_Hook.dll)注入到其内存空间。然后遍历IAT中所有模块,若发现需挂接模块,如复制剪切模块、另存为模块等,则挂接对应的API入口地址,修改对应的入口函数。对应的入口函数指向自定义的伪API函数,伪API函数的最后可以再转入原API函数的调用(参数值可能已变更),也或者可以直接中止该API的继续调用,阻止该操作。针对复制剪切操作,在伪API中调用OpenClipboard()、EmptyClipboard()、CloseClipboard()函数进行处理,使其复制或剪切内容为空。针对另存为操作,伪API函数直接中止该操作调用,并返回错误码。
步骤2.5:执行内存控制模块中内存权限设置函数,将明文内容的内存区设置为私有,非该选择的第三方应用程序的进程ID不得读取,尽可能防止内存中明文被泄露的可能。
参见图6,Windows下常用文件请求方式有缓冲读写请求、分页读写请求,此外还可以通过Fast I/O进行内存映射获取内存中数据。内存中文件以明文存在,易被破解和泄漏,比如通过其他进程调用该文件内存并转移至磁盘等。故而在此将明文的内存区设置为私有,非该选择的第三方应用程序的进程ID不得读取。阻止非法进程用过内存映射的方式访问内存中明文。此外,对受保护文件的缓冲读写请和分页读写请求将产生相应的IRP,会被过滤驱动所截获并进行权限检查,只允许MainDRM进程或者打开受保护内容的第三方应用程序进程对受保护内容的I/O请求,从而阻止非法进程对内存中明文的缓冲读写请求。
步骤3:如果受保护文件设置是可编辑的,如可编辑的word文档,则用户可以对受保护文件内容进行编辑并直接保存于当前文件上。文件过滤驱动将收到该应用程序对文件进行的写请求(IRP),检查当前文件读写请求的文件级参数信息,包括当前进行读写文件的路径,当前进行文件读写的进程信息等,若合法,则对修改内容加密后重新保存密文。
具体写控制及加密过程,参见图7,详情如下:①MainDRM进程向I/O管理权发出向受保护文件内容写入数据(明文)的请求;②I/O管理器将其请求转化为IRP_MJ_WRITE,然后发送给过滤设备的写派遣例程;③写派遣例程只对带有IRP_NOCACHE,IRP_PAGING_IO,IRP_SYNCHRONOUS_PAGING_IO这几种标志的IRP_MJ_READ继续往下传递并作加密处理,否则返回保存文件失败的错误代码。检查该IRP是否页面对齐,即以512字节为最小单位,如果该写请求是页面对齐的,则可以直接加密IRP所指向的内存数据然后发送给下层设备,直接跳转到步骤⑧。否则,先进行如下处理:读取数据在文件中的偏移,计算出IRP中的请求数据分布在哪些页面并记录下来,接着暂时挂起原始IRP并按其数据分布页面将原始IRP分解成相对应数量的大小为512字节的多个IRP,并针对每个页面重新构造数据区大小为512字节的新的读请求IRP;④下层设备将请求的页面数据(即密文)发送给过滤设备,进入处理IRP_MJ_CREATE的派遣函数完成例程,调用解密函数将请求的页面数据进行解密;⑤解密后的页面就是需要更新数据的页面;再用原始请求分解出的IRP中对应的明文数据对页面进行刷新;⑥对刷新后的明文数据再调用加密函数进行加密,然后将重新加密数据后的IRP传回给过滤驱动,并将IRP控制权转移给写派遣例程;⑦检查所有对应页面的IRP数据是否读取完成,是则将各刷新数据并加密后的数据区内容合并起来,否则继续向下层设备索取未读取的新IRP数据,然后重复④⑤⑥,直至全部读取完成;然后将更新后的密文数据发送给下层设备;⑧⑨⑩逻辑卷设备完成I/O操作并返回。
由于多数写请求都是页面对齐的,因此整个写过程将被大大简化。另外,发出写请求IRP时将锁定用户态内存,并将用户态内容的数据拷贝至系统内存中,以此避免加密过程中出现线程上下文切换,导致用户态内存地址发生变化。
步骤4:当打开受保护文件的第三方应用程序进程退出时,该.exe文件映射在内存中的所有文件会被清除,其中包括内存中明文;此外,内存中其他用来保护受保护内容的相关模块也会被卸载完全,其中相关模块包括卸载隐藏进程驱动、文件过滤驱动、API拦截模块。
当MainDRM进程监控到打开受保护内容的第三方应用程序进程退出时,卸载隐藏驱动模块(drive_hide.sys)、文件过滤驱动模块(drive_file_filter.sys)、API拦截模块(IAT_API_Hook.dll)等,然后调用内存控制模块中清除缓冲函数,清除系统内存中的密文数据,这是以效率替代安全的做法;最后清除.exe文件映射在内存中的其他所有代码文件和动态链接库。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (6)
1.一种Windows平台下的通用数字版权保护方法,其特征在于,包括以下步骤:
步骤1:采用Web浏览器作为内容提供商、保护内容提供商和用户之间业务的交互途径,其核心交互有内容提供商上传原始文件、保护内容提供商对原始文件加密和打包、用户下载受保护文件;
步骤2:用户无需下载任何客户端软件,直接双击下载的.exe文件即可打开受保护内容进行观看;对受保护内容的保护措施主要有文件过滤驱动处理、IAT API Hook监控、内存访问权限限制;
步骤3:若受保护文件为可编辑文档,则用户直接对受保护文件内容进行编辑并能且只能直接保存于当前文件上;
步骤4:当打开受保护文件的第三方应用程序进程退出时,该.exe文件映射在内存中的所有文件会被清除,其中包括内存中明文;此外,内存中其他用来保护受保护内容的相关模块也会被卸载完全,其中相关模块包括卸载隐藏进程驱动、文件过滤驱动、API拦截模块。
2.根据权利要求1所述的Windows平台下的通用数字版权保护方法,其特征在于,步骤1的具体实现包括以下子步骤:
步骤1.1:内容提供商通过文件上传页面上传原始内容至内容服务器上;
步骤1.2:保护内容提供商管理内容服务器,提取用户客户端设备的硬件指纹,然后结合硬件指纹对原始内容进行加密,最后同主控制程序、加解密模块、隐藏驱动模块、文件过滤驱动模块、API拦截模块、内存控制模块一起打包组织成PE格式的.exe文件提供给用户下载;
步骤1.3:用户通过内容购买页面购买并下载PE格式的.exe文件至本地。
3.根据权利要求2所述的Windows平台下的通用数字版权保护方法,其特征在于:步骤1.2中所述的结合硬件指纹对原始内容进行加密,加密密钥是基于对用户客户端设备的硬件指纹进行SHA-256得到的256位密钥;以512字节(正好一个扇区的大小)为单位对原始内容进行分组,然后利用AES-256算法对原始内容进行分组加密,得到的密文文件与原始文件后缀名保持一致。
4.根据权利要求1所述的Windows平台下的通用数字版权保护方法,其特征在于,步骤2的具体实现包括以下子步骤:
步骤2.1:点击运行.exe文件,首先执行主控制程序,创建主控制进程,用来调用和执行其他模块函数;
步骤2.2: 执行驱动加载程序,将隐藏驱动模块、文件过滤驱动模块加载到驱动层;通过隐藏驱动模块隐藏相关进程;然后通过加载文件过滤驱动截获文件访问进程请求读取受保护内容的IRP进行检查,若为MainDRM进程且读取内容为受保护内容,则运行解密程序;否则阻止访问并返回错误代码;
步骤2.3:解密程序的执行过程:自动提取客户端设备的硬件指纹(Mac地址&CPU id),跟之前记录的用户硬件指纹进行对比,若完全相同,则对该硬件指纹进行SHA-256处理得到256位密钥然后对密文进行AES-256解密,在内存中生成脱密的原始内容文件;然后,自动关联相对应的第三方应用程序打开原始内容文件;若不完全相同,则解密失败,返回错误信息提示,并给出在线认证的方式给用户选择,直到服务器响应客户端并进行授权才能继续完成解密工作;
步骤2.4 :获取打开原始内容文件的第三方应用程序的进程ID,并对该进程进行监控;主控制进程启动一个远程线程将API拦截模块载入到第三方应用程序的进程内存空间,遍历该进程的导入地址表(IAT),若发现需挂接模块,则修改IAT,挂接相应的API入口地址,指向自己编写的伪API函数;以此方式屏蔽用户通过第三方应用程序对原始内容文件进行的非法操作;
步骤2.5: 执行内存控制模块中内存权限设置函数,将明文内容的内存区设置为私有,非该选择的第三方应用程序的进程ID不得读取,防止内存中明文被泄露。
5.根据权利要求1所述的Windows平台下的通用数字版权保护方法,其特征在于:步骤3中,采用文件过滤驱动对文件写请求IRP进行拦截和相关处理,主要包括检查该IRP是否为合法访问、检查该IRP中数据内容是否页面对齐、调用加解密函数对受保护内容进行加解密。
6.根据权利要求5所述的Windows平台下的通用数字版权保护方法,其特征在于:
若过滤驱动检查写请求IRP中的数据内容是页面对齐,直接对修改后的文件页表加密后保存;
若未页面对齐,则进行如下处理:读取该数据在文件中的偏移,计算出IRP中的请求数据分布在哪些页面并记录下来,接着暂时挂起原始IRP并按其数据分布页面将原始IRP分解成相对应数量的大小为512字节的多个IRP,并针对每个页面重新构造数据区大小为512字节的新的读请求IRP;然后,调用解密函数将读请求IRP请求到的页面数据(密文)进行解密,接着用原始请求分解出的IRP中对应的明文数据对解密后的页面进行数据刷新,再重新加密;直到所有新的读请求IRP内容数据刷新且重新解密完成,最后将各加密后的数据区内容合并后保存至磁盘设备卷。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510243957.3A CN104834835B (zh) | 2015-05-13 | 2015-05-13 | 一种Windows平台下的通用数字版权保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510243957.3A CN104834835B (zh) | 2015-05-13 | 2015-05-13 | 一种Windows平台下的通用数字版权保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104834835A true CN104834835A (zh) | 2015-08-12 |
CN104834835B CN104834835B (zh) | 2017-09-22 |
Family
ID=53812718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510243957.3A Expired - Fee Related CN104834835B (zh) | 2015-05-13 | 2015-05-13 | 一种Windows平台下的通用数字版权保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104834835B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787304A (zh) * | 2016-03-28 | 2016-07-20 | 武汉大学深圳研究院 | 一种基于设备绑定的数字版权保护方法 |
CN107102937A (zh) * | 2016-02-19 | 2017-08-29 | 腾讯科技(深圳)有限公司 | 一种用户界面测试方法和装置 |
CN107133517A (zh) * | 2017-05-08 | 2017-09-05 | 成都德涵信息技术有限公司 | 一种基于内存中数据加密和计算的数据还原方法 |
CN108920946A (zh) * | 2018-07-30 | 2018-11-30 | 美通云动(北京)科技有限公司 | 基于浏览器的数据安全管控方法及装置 |
CN111222152A (zh) * | 2020-01-03 | 2020-06-02 | 上海达梦数据库有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN112464303A (zh) * | 2020-11-27 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种过滤驱动实现方法、系统、设备以及介质 |
WO2021052267A1 (zh) * | 2019-09-17 | 2021-03-25 | 张维加 | 一种数字文件的跨设备编辑系统 |
CN112699086A (zh) * | 2020-12-30 | 2021-04-23 | 北京明朝万达科技股份有限公司 | 一种基于Windows系统的文件操作监控方法和装置 |
CN115618435A (zh) * | 2022-10-28 | 2023-01-17 | 长江量子(武汉)科技有限公司 | 应用于办公设备的文件管控方法及办公设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719210A (zh) * | 2009-12-25 | 2010-06-02 | 武汉大学 | 基于linux平台数字版权管理的文件使用控制方法 |
CN101719209A (zh) * | 2009-12-25 | 2010-06-02 | 武汉大学 | 一种windows平台上的通用数字版权保护方法 |
CN103605930A (zh) * | 2013-11-27 | 2014-02-26 | 湖北民族学院 | 一种基于hook和过滤驱动的双重文件防泄密方法及系统 |
-
2015
- 2015-05-13 CN CN201510243957.3A patent/CN104834835B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719210A (zh) * | 2009-12-25 | 2010-06-02 | 武汉大学 | 基于linux平台数字版权管理的文件使用控制方法 |
CN101719209A (zh) * | 2009-12-25 | 2010-06-02 | 武汉大学 | 一种windows平台上的通用数字版权保护方法 |
CN103605930A (zh) * | 2013-11-27 | 2014-02-26 | 湖北民族学院 | 一种基于hook和过滤驱动的双重文件防泄密方法及系统 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107102937A (zh) * | 2016-02-19 | 2017-08-29 | 腾讯科技(深圳)有限公司 | 一种用户界面测试方法和装置 |
CN107102937B (zh) * | 2016-02-19 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 一种用户界面测试方法和装置 |
CN105787304A (zh) * | 2016-03-28 | 2016-07-20 | 武汉大学深圳研究院 | 一种基于设备绑定的数字版权保护方法 |
CN107133517A (zh) * | 2017-05-08 | 2017-09-05 | 成都德涵信息技术有限公司 | 一种基于内存中数据加密和计算的数据还原方法 |
CN107133517B (zh) * | 2017-05-08 | 2020-01-07 | 成都德涵信息技术有限公司 | 一种基于内存中数据加密和计算的数据还原方法 |
CN108920946A (zh) * | 2018-07-30 | 2018-11-30 | 美通云动(北京)科技有限公司 | 基于浏览器的数据安全管控方法及装置 |
WO2021052267A1 (zh) * | 2019-09-17 | 2021-03-25 | 张维加 | 一种数字文件的跨设备编辑系统 |
CN111222152A (zh) * | 2020-01-03 | 2020-06-02 | 上海达梦数据库有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN112464303A (zh) * | 2020-11-27 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种过滤驱动实现方法、系统、设备以及介质 |
CN112699086A (zh) * | 2020-12-30 | 2021-04-23 | 北京明朝万达科技股份有限公司 | 一种基于Windows系统的文件操作监控方法和装置 |
CN115618435A (zh) * | 2022-10-28 | 2023-01-17 | 长江量子(武汉)科技有限公司 | 应用于办公设备的文件管控方法及办公设备 |
CN115618435B (zh) * | 2022-10-28 | 2023-09-15 | 长江量子(武汉)科技有限公司 | 应用于办公设备的文件管控方法及办公设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104834835B (zh) | 2017-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104834835A (zh) | 一种Windows平台下的通用数字版权保护方法 | |
US7805375B2 (en) | Digital license migration from first platform to second platform | |
US9461819B2 (en) | Information sharing system, computer, project managing server, and information sharing method used in them | |
US8850593B2 (en) | Data management using a virtual machine-data image | |
US10666647B2 (en) | Access to data stored in a cloud | |
CN100592313C (zh) | 一种电子文档防泄密系统及实现方法 | |
CN101729550B (zh) | 基于透明加解密的数字内容安全防护系统及加解密方法 | |
CN103824031B (zh) | 使用电子文件安全标签保证电子文件安全的方法及系统 | |
US20040093505A1 (en) | Open generic tamper resistant CPU and application system thereof | |
US20040039932A1 (en) | Apparatus, system and method for securing digital documents in a digital appliance | |
CN109992987B (zh) | 基于Nginx的脚本文件保护方法、装置及终端设备 | |
CN106650327A (zh) | 基于动态恢复so文件的Android应用加固方法 | |
US20150127936A1 (en) | User terminal device and encryption method for encrypting in cloud computing environment | |
CN201682524U (zh) | 一种基于文件过滤驱动的文件流转权限控制系统 | |
CN103763313A (zh) | 一种文档保护方法和系统 | |
CN105740725A (zh) | 一种文件保护方法与系统 | |
CN102129540A (zh) | 文件动态透明加密解密方法 | |
CN101719209A (zh) | 一种windows平台上的通用数字版权保护方法 | |
CN106326733A (zh) | 管理移动终端中应用的方法和装置 | |
CN101132275B (zh) | 一种实现数字内容使用权利的安全保护系统 | |
CN103379133A (zh) | 一种安全可信的云存储系统 | |
TW201931189A (zh) | 對策制定支援裝置、對策制定支援方法及對策制定支援程式產品 | |
CN106650492B (zh) | 一种基于安全目录的多设备文件保护方法和装置 | |
CN105787304A (zh) | 一种基于设备绑定的数字版权保护方法 | |
KR102615556B1 (ko) | 키 관리 서버를 이용한 데이터의 실시간 암복호화 보안 시스템 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170922 Termination date: 20180513 |
|
CF01 | Termination of patent right due to non-payment of annual fee |