[发明专利]一种Linux系统内存敏感数据的清除方法及装置有效
申请号: | 201410258526.X | 申请日: | 2014-06-11 |
公开(公告)号: | CN104007993B | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 涂碧波;朱民;孟丹 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京安信方达知识产权代理有限公司11262 | 代理人: | 王丹,栗若木 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 linux 系统 内存 敏感数据 清除 方法 装置 | ||
技术领域
本发明涉及计算机操作系统内存数据安全技术领域,具体涉及一种基于Linux系统的内存敏感数据的清除方法及装置。
背景技术
随着科学技术的发展,内存安全,尤其是被计算机操作系统安全领域会议和IT公司密切关注的用户敏感数据的安全,成为计算机操作系统安全的重要组成部分,这对为了提高系统性能,内存空间不断增大,将越来越多的数据放置到内存这一发展趋势提出了新的挑战。
由于在物理内存中清除一个物理页框中数据的操作的延迟相对较大,因而传统Linux系统的内存管理模块的机制是,物理页框的释放只是解除进程页表项和对应的物理页框的映射关系,只有当物理页框再次被分配时才将其中的数据进行清零或是用进程读写的数据进行覆盖。正是由于这一特性使得传统Linux系统在保护内存中的敏感数据安全方面具有先天性缺陷,使得开机密码、进程打开过的文件、用户输入的账号密码以及查看过的电子邮件和即时聊天信息等用户数据仍存留在进程的地址空间中,这一现象使得用户的个人隐私信息受到严重威胁。
目前针对Linux系统内存中的敏感数据安全这一问题广泛使用的工具是PAX补丁,它在内存敏感数据安全这一问题包含两方面:一、清除内核栈,用于将内核态的所有变量、状态、参数等信息进行清除;二、清除所释放的页框中的数据,随着物理页框的释放,将物理页框中的数据进行清除。主要表现在进程退出时清除进程的用户空间的堆、栈和非共享映射区中的数据,防止用户数据被泄露。
但是,现有的PAX补丁仍存在效率低、无法全面清除敏感数据等不足。
发明内容
本发明要解决的技术问题是更加全面地清除计算机操作系统内存中的敏感数据,保护用户的隐私信息。
为了解决上述问题,本发明提供了一种Linux系统内存敏感数据的清除方法,包括:
当进程调用close系统调用关闭文件时,或当因进程退出而调用exit_files关闭未关闭的文件时,通过文件结构struct file定位到相应的地址空间结构struct address_space,判断所要关闭的文件对应的inode结构是否有脏页,如果有则调用vfs_fsync函数只将该文件中的脏页回写到磁盘中;遍历所定位到的地址空间结构中的基数树,将基数树中的所有页面全部删除、清零后释放到空闲区;
在每个进程中构造读写链表,记录对设备文件读或写数据时在设备缓存中的起始地址address和数据长度length;在read系统调用或write系统调用退出时,通过遍历所述读写链表,对每个节点将从address开始,到address加length为止的地址空间中的数据清零。
可选地,所述的方法还包括:
在进程调用exit系统调用进行退出而释放页表项对应的物理页框时,或是调用brk和unmmap系统调用时,在释放物理页框前将物理页框中的数据清零。
可选地,所述的方法还包括:
定期进行下述操作:
将系统调用过程中遗留在当前内核栈中的数据用预定的四字节标志覆盖;标记所述内核栈中已覆盖的空间。
可选地,所述将系统调用过程中遗留在当前内核栈中的数据用预定的四字节标志覆盖的步骤包括:
当进程第一次系统调用离开内核栈,则找到thread_info的地址;当进程非第一次系统调用离开内核栈,则找到第一个具有连续50个所述预定的四字节标志的地址;如果不存在具有连续50个该所述预定的四字节标志的地址,则找到最后一个具有连续所述预定的四字节标志的地址;将从esp开始到所找到的地址之间的数据用所述预定的四字节标志覆盖。
可选地,所述的方法还包括:
当回收内存时,加密写入交换区的数据;清除被换出到交换区的匿名页中的数据,以及被内存回收机制回收的页中的数据。
本发明还提供了一种Linux系统内存敏感数据的清除装置,包括:
文件数据清除模块,用于当进程调用close系统调用关闭文件时,或当因进程退出而调用exit_files关闭未关闭的文件时,通过文件结构struct file定位到相应的地址空间结构struct address_space,判断所要关闭的文件对应的inode结构是否有脏页,如果有则调用vfs_fsync函数只将该文件中的脏页回写到磁盘中;遍历所定位到的地址空间结构中的基数树,将基数树中的所有页面全部删除、清零后释放到空闲区;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410258526.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:向主机服务质量指标分配权重
- 下一篇:一种硬齿面轴装式减速机