敏感文件在线添加水印的方法、装置、设备及存储介质

文档序号:36333988发布日期:2023-12-12 23:25阅读:73来源:国知局
敏感文件在线添加水印的方法、装置、设备及存储介质

本技术属于通信安全,特别涉及一种敏感文件在线添加水印的方法、装置、设备以及存储介质。


背景技术:

1、敏感数据文件安全地共享到合法的共享对象手中后,共享对象需要保护文件被合理地使用、合法地流转,每一个过程必须留下保护的痕迹,不能出现失密或泄密的环节。

2、数字水印是一个简单有效的方法,它通过某种算法将文件所有者、版权所有者、文件流转信息等标识信息嵌入到文件中。嵌入的数字水印要求不能破坏文件本身有价值的信息,并且在受到无意或恶意攻击之后不能轻易被去除,同时能通过某种手段检测出水印。通过数字水印可以保护数据私有性和数据流转路径,在发生版权纠纷或数据泄露时都能够作为有力的证据或能够追溯到泄露源头,及时减少泄露扩散。然而,现有的数字水印技术都是静态水印,都必须在用户访问之前提前完成,管理员需要针对不同用户提前设计好不同的水印文件并进行存储,因此需要占用大量额外的磁盘空间,且实时性差,灵活度弱,会导致管理混乱、磁盘攻击等安全问题。


技术实现思路

1、本技术提供了一种敏感文件在线添加水印的方法、装置、设备以及存储介质,旨在至少在一定程度上解决现有技术中的上述技术问题之一。

2、为了解决上述问题,本技术提供了如下技术方案:

3、一种敏感文件在线添加水印的方法,包括:

4、获取下载进程中的文件下载请求,根据待下载文件的文件路径在suf文件系统的路径装载点目录中搜索待下载文件,并执行open()函数向下载进程返回一个文件对象,所述文件对象为一个包含所述待下载文件的文件描述信息的结构体;

5、下载进程通过所述文件对象的read()函数向内核空间发起读调用,并通过守护进程将所述文件对象发送给水印触发器脚本;

6、所述水印触发器脚本根据文件对象读取对应的待下载文件,利用水印算法为所述待下载文件执行添加水印操作,并将添加水印后的待下载文件写入共享内存中;

7、通过下载进程从所述共享内存中读出添加水印后的待下载文件并传输。

8、本技术实施例采取的技术方案还包括:所述suf文件系统是在内核空间中设计的一个与虚拟文件系统连接的基于脚本的可加载模块,所述suf文件系统中包含有对文件系统的open()、read()、write()函数的文件操作表;所述根据待下载文件的文件路径在suf文件系统的路径装载点目录中搜索待下载文件具体为:

9、假设待下载文件为/usr/suf/data/myfile.c文件,则所述虚拟文件系统从/usr/suf开始,在所述suf文件系统的路径装载点目录中查找目录data,在目录data的条目中搜索文件myfile.c,如果文件存在,则调用suf文件系统中文件操作表的open()函数检查信号量emptycount的值,如果信号量emptycount的值为0或负数,则阻塞内核空间的操作;如果信号量emptycount的值为正整数,则将所述待下载文件的文件描述信息、下载用户信息以及用户空间的共享内存地址和所在队列位置组成一个文件对象并填充到所述suf文件系统的文件对象数组队列中,同时阻塞该位置对应的open操作并修改信号量emptycount和fullcount的值;其中,所述文件描述信息中至少包括文件名。

10、本技术实施例采取的技术方案还包括:所述下载进程通过所述文件对象的read()函数向内核空间发起读调用之后,还包括:

11、将所述文件对象拷贝到环状缓冲区;所述环状缓冲区为数组表示的循环队列,所述环状缓冲区利用一个互斥锁usequeue和emptycount、fullcount两个信号量进行管理,其中,所述互斥锁usequeue用于限制环状缓冲区的互斥访问,所述信号量emptycount和fullcount分别表示可用的空闲缓冲区个数和已填满缓冲区个数。

12、本技术实施例采取的技术方案还包括:所述守护进程是水印触发器脚本和proc文件系统之间的双向通信通道,所述通过守护进程将所述文件对象发送给水印触发器脚本具体为:

13、所述守护进程通过文件对象的read()函数调用proc文件系统的/proc/suf伪文件读操作从所述环状缓冲区中复制文件对象,并通过标准输入将所述文件对象发送给水印触发器脚本;其中,所述proc文件系统是一个虚拟文件系统,所述proc文件系统的目录中包含suf文件系统对应的/proc/suf伪文件;所述水印触发器脚本是用户在suf文件系统目录下编写的为所述待下载文件添加水印的脚本。

14、本技术实施例采取的技术方案还包括:所述水印触发器脚本根据文件对象读取对应的待下载文件,利用水印算法为所述待下载文件执行添加水印操作,并将添加水印后的待下载文件写入共享内存中具体为:

15、通过水印触发器脚本从所述文件对象中获取文件名,根据文件名读取对应的待下载文件,利用水印算法为待下载文件执行添加水印操作,并将添加水印后的待下载文件写入共享内存中;其中,所述水印算法具体为:利用create_watermark()函数设置水印的内容、大小、字体、颜色和透明度,并通过canvas画布生成一个水印文件;利用add_watermark()参数打开待下载文件,创建输入流,初始化一个pdffilereader对象,并从pdffilereader对象中分别获取待下载文件的每一页,将每一页分别与所述水印文件进行合并压缩,完成待下载文件的添加水印操作,然后将添加水印后的待下载文件添加到pdffilewriter对象中,由pdffilewriter对象将将添加水印后的待下载文件写入共享内存中。

16、本技术实施例采取的技术方案还包括:所述水印触发器脚本根据文件对象读取对应的待下载文件,利用水印算法为所述待下载文件执行添加水印操作,并将添加水印后的待下载文件写入共享内存中之后,还包括:

17、在添加水印操作执行结束后,通过所述虚拟文件系统向下载进程返回一个文件描述符。

18、本技术实施例采取的技术方案还包括:所述通过下载进程从所述共享内存中读出添加水印后的待下载文件并传输具体为:

19、通过下载进程根据所述文件描述符从共享内存中读出添加水印后的待下载文件,调用send()函数将所述待下载文件拷贝到网卡进行传输;

20、在所述待下载文件传输完毕后销毁共享内存,并执行close()函数关闭待下载文件。

21、本技术实施例采取的另一技术方案为:一种敏感文件在线添加水印的方法装置,包括:

22、文件搜索模块:用于获取下载进程中的文件下载请求,根据待下载文件的文件路径在suf文件系统的路径装载点目录中搜索待下载文件,并执行open()函数向下载进程返回一个文件对象,所述文件对象为一个包含所述待下载文件的文件描述信息的结构体;

23、数据发送模块:用于通过下载进程根据所述文件对象的read()函数向内核空间发起读调用,并通过守护进程将所述文件对象发送给水印触发器脚本;

24、水印添加模块:用于通过水印触发器脚本根据文件对象读取对应的待下载文件,利用水印算法为所述待下载文件执行添加水印操作,并将添加水印后的待下载文件写入共享内存中;

25、文件传输模块:用于通过下载进程从所述共享内存中读出添加水印后的待下载文件并传输。

26、本技术实施例采取的又一技术方案为:一种设备,所述设备包括处理器、与所述处理器耦接的存储器,其中,

27、所述存储器存储有用于实现所述敏感文件在线添加水印的方法的程序指令;

28、所述处理器用于执行所述存储器存储的所述程序指令以控制敏感文件在线添加水印的方法。

29、本技术实施例采取的又一技术方案为:一种存储介质,存储有处理器可运行的程序指令,所述程序指令用于执行所述敏感文件在线添加水印的方法。

30、相对于现有技术,本技术实施例产生的有益效果在于:本技术实施例的敏感文件在线添加水印的方法、装置、设备以及存储介质通过在内核空间中设计一个全新的用户级suf文件系统,并在用户空间引入一个水印触发器脚本,当下载进程请求下载文件时,通过suf文件系统拦截内核空间的open操作,使文件在被打开之前执行用户空间的水印触发器脚本,完成文件的添加水印操作,并将添加水印后的文件存放在共享内存,在用户空间执行read操作时,下载进程直接从共享内存中读出添加水印后的文件,并调用send()函数将文件拷贝到网卡进行传输。本技术实施例在保持原有的内核文件系统保护机制的同时,通过引入水印触发器脚本在用户空间实现了一种可扩展文件系统的机制,高效有序地完成用户空间的水印触发器脚本的执行,增强了水印添加方案的灵活性和实时性,具有模块化、简单性、灵活性和对应用程序的兼容性等优点,而添加的suf文件系统可以在保持原有内核文件系统性能的同时又增加了系统的活跃性,并提供了更高级别的水印功能。

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