数据安全之剩余信息保护
2019-06-13徐丽娟李杺恬唐刚
徐丽娟 李杺恬 唐刚
摘 要:随着信息化进程的加快,全球信息量呈爆炸式增长。随之而来的数据安全问题也日益增多,侵犯个人隐私、窃取个人信息等违法犯罪行为时有发生,数据安全问题日趋严重,已经成为影响国家公共安全、社会安全的突出问题。数据安全中的一个重要问题是对剩余信息的保护,即对用户使用过的信息,当该用户不再使用或不再存在时,应当采取一定的措施进行保护,防止剩余信息造成用户隐私的泄露。论文从标准要求、保护对象、在等级保护测评中面临的挑战、检测方法等多方面对剩余信息保护进行了分析,为等级保护测评中的剩余信息保护测试提供了全方位的技术支撑。
关键词:网络安全;数据安全;等级保护;剩余信息保护
中图分类号:TP309 文献标识码:B
Abstract: With the acceleration of the information process, the global information volume has exploded. The importance of ensuing data security issues is also increasing. Criminal violations such as personal privacy and theft of personal information have occurred from time to time. Data security issues have become increasingly serious and have become a prominent problem affecting national public security and social security. An important issue in data security is the protection of the residual information, that is, the information used by the user. When the user no longer uses or no longer exists, certain measures should be taken to protect the user from leaking the privacy of the remaining information. This paper analyzes the residual information protection from the requirements of standards, protection objects, challenges in the classified protection assessment, and detection methods, and provides a full range of technical support for the residual information testing in the classified protection assessment.
Key words: cybersecurity; data security; classified protection; residual information protection
1 引言
数据安全是网络安全中的一个重要方向。数据安全中一个重要的问题就是对剩余信息(Residual Information)保护,也就是说对用户使用过的信息,当该用户不再使用或不再存在时,应当采取一定的措施进行保护。在GB/T 22239-2008 《信息技术信息系统安全等级保护基本要求》中,剩余信息保护是对三级以上的系统的要求,而在GB/T 22239-2008的修订版本中,即《信息安全技术网络安全等级保护基本要求》(征求意见稿)(20170813版)中,剩余信息保护变为对二级以上的系统的要求,可见剩余信息保护的重要性逐渐被得到重视。
本文从剩余信息保护的标准要求、剩余信息保护的保护对象、剩余信息保护在等级保护测评中面临的挑战以及剩余信息保护检测方法等方面進行介绍,为等级保护测评中剩余信息保护测试提供技术支撑。
2 剩余信息保护的标准要求
剩余信息保护的概念来源于美国国防部的《可信计算机评估准则》(TCSEC,1985),在该准则的“客体重用”一章中对剩余信息提出了保护要求[1]:“……允许分配给其他的客体,但必须确保重用的客体不能从以前用户所使用的存储介质(磁盘或内存)中恢复信息。”随着数据安全的重要性被世界各国所重视,各国相继出台了针对数据安全保护的法律法规,尤其对剩余信息保护提出了诸多标准要求。
2.1 各国针对数据安全保护的法律法规
针对数据安全各国均出台了法律法规进行约束,2018年5月25日,欧盟正式施行新的网络数据隐私保护条例《通用数据保护条例》[2](General Data Protection Regulation,GDPR),严格限制企业对个人数据的使用权,处罚力度空前加强,全方位地保护上网者的数据安全,要求数据主体在不希望自身数据被利用且无合法必要理由保留时,有权要求删除该数据,这实质上就是对“剩余信息”提出的保护要求。Facebook、微软、Twitter、Apple 等公司纷纷修改其在欧盟境内对用户个人数据的处理方式。微信也于日前发布声明,如欧盟地区微信客户有需求,微信平台公众号运营者会在三周内,从服务器中删除该用户相关的所有信息,包括用户昵称、头像、OpenID及与该用户关联的服务信息。
日本于2003年颁布《个人信息保护法》,2015年颁布实施《个人信息保护法》修正案,规范和限制个人信息持有者和处理者(政府部门、企业)的行为。韩国在2001年颁布《振兴信息与通讯网络的利用与数据保护法》,2011年颁布《个人信息保护法》,规定个人信息保护的基本原则、基准,信息主体的权利保障,个人信息自决权的救济问题。
习近平总书记强调,互联网企业要切实承担起社会责任,保护用户隐私,保障数据安全,维护网民权益。要切实保障国家数据安全,强化国家关键数据资源保护能力,增强数据安全预警和溯源能力。《中华人民共和国网络安全法》于2017年6月1日正式施行,明确加强对个人信息的保护,防止信息泄露、毁损、丢失。《关于做好引导和规范共享经济健康良性发展有关工作的通知》(发改办高技〔2018〕586号)明确提出保护个人信息安全,提高个人信息保护水平,防止信息泄露、损毁和丢失。2018年5月1日实施的GB/T 35273《信息安全技术个人信息安全规范》从国家标准层面,规范了个人信息控制者在收集、保存、使用、共享、转让、公开披露等信息处理环节中的相关行为,旨在遏制个人信息非法收集、滥用、泄露等乱象,最大程度地保障个人的合法权益和社会公共利益。可见,防止信息泄露、保护数据安全已成为时代主题,是法定事项。
2.2 剩余信息保护的标准要求
《信息技术安全性评估准则》(CC准则)进一步将残余信息分成子集残余信息保护(FDP_RIP.1.1)和完全残余信息保护(FDP_RIP.2.1),要求“确保任何资源的任何残余信息内容,在资源分配或释放时,对于所有客体都是不可再利用的[3]。”从安全功能来看,要求新产生的客体不能包含以前客体的信息。从安全机制来看,要求产品或系统具备删除或释放已删除主体的信息的能力。
2008年颁布的GB/T 22239-2008 《信息技术信息系统安全等级保护基本要求》中,剩余信息保护是三级以上的要求,包括两条[4]:一是应保证用户鉴别信息所在的存储空间被释放或再分配给其他用户前得到完全清除,无论这些信息是存放在硬盘上还是在内存中;二是应保证系统内的文件、目录和数据库记录等资源所在的存储空间被释放或重新分配给其他用户前得到完全清除。
GB/T 22239-2008分别针对主机安全和应用安全提出了剩余信息保护要求,保护对象是鉴别信息、用户信息,属于CC准则中“用户数据”的范畴,具体内容是系统内的文件、目录、相关进程等;安全功能的提供者是操作系统、数据库系统和应用软件,操作的对象是用户信息的存储介质,包括内存和磁盘控件。两者相结合,即用户信息(鉴别信息、用户文件、目录)等资源所在的存储空间被释放或重新分配给其他用户前应该得到“完全清除”。
在GB/T 22239-2008的修订版本中,即《信息安全技术网络安全等级保护基本要求》(征求意见稿)[5]的第1部分安全通用要求中,在第二级安全要求中增加了剩余信息保护的要求,应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除。在第三级及第四级安全要求中对剩余信息保护要求:应保证鉴别信息所在的存储空间被释放或重新分配前得到完全清除;应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。
3 剩余信息保护的对象
要对剩余信息进行保护,首先要能识别剩余信息,以及剩余信息的逻辑载体与物理载体。剩余信息的逻辑载体主要是指操作系统、数据库系统、应用系统等;剩余信息的物理载体则是各种类型的存储介质,主要包括机械磁盘和固态存储设备。
3.1 剩余信息的逻辑载体
剩余信息的逻辑载体主要是指操作系统、数据库系统、应用系统[6],接下来具体介绍一下各种逻辑载体中的剩余信息类型。
3.1.1 操作系统
在操作系统层面,用户信息主要包括:鉴别信息、用户拥有的文件或目录、用户操作过程中产生的过程文件等。
鉴别信息:操作系统用户的鉴别信息主要指用户名和密码。Windows操作系统通常保存在C:\WINDOWS\system32\config目录下的sam文件中;Linux操作系统一般保存在/etc/passwd(或者/etc/shadow);AIX系统保存在/etc/security/passwd;HP-UX保存在/etc/passwd(或者/etc/shadow)。
文件或目录:操作系统用户的文件或目录表现为两种方式,一是系统管理员专门为其开辟的空间,如用户的根目录,如Windows下的SystemDrive/Documents and Settings/用户名,Unix下的/home/用户名;二是散落在整个文件系统中,但以该用户作为标记的文件空间,比如用户创建的,属主是用户的文件或目录。
过程文件:操作系统用户在使用过程中产生的信息,如Windows下的Temp文件、Cookies等,Unix下的.sh_history等,这是另一类的用户信息。
3.1.2 数据库系统
在数据库系统层面,用户信息主要包括:鉴别信息、数据表、数据文件等。例如,对Oracle数据库,鉴别信息存放于DBA_USERS视图的Password列中。如果采用口令文件验证,对于Oracle 10.2.0.1,鉴别信息保存在/oracle/app/product/10.2.0.1/dbs目录下的Orapwsid文件(或者ORACLE_HOME/dbs/PWDsid.ora)中。数据文件保存在/oracle/app/oradata/目录下,每个实例都有自己的数据文件,属于dbf文件类型。
從本质上来看,数据库系统的用户信息还是操作系统的文件,但不同的数据类型,由数据库管理系统实现标记、管理和分别存储。
3.1.3 应用软件
对应用软件,用户信息的形式较为多样化。绝大部分是以数据库记录的方式存在,也有以文件方式独立存在的。应用软件的用户,有的就是独立的数据库系统用户;有的不是独立的数据库系统用户,而是由多个登录到应用软件的用户共同使用一个或几个数据库用户登录到数据库。因此,对应用软件中用户信息的标记就相对复杂,也不可能由数据库系统或操作系统独立完成。
除了以上信息类型,剩余信息还包括系统中的敏感数据。
3.2 剩余信息的物理载体
剩余信息的物理载体是各种类型的存储介质,主要包括机械磁盘,固态存储设备(如固态硬盘SSD、SD卡、TF卡、U盘)等。由于各种存储介质的存储原理不同,对剩余信息的安全删除,实现剩余信息的保护措施也不同。基于机械磁盘和基于闪存的固态存储系统的逻辑结构图如图1所示,呈现多层次结构[7]。
存储系统的底层是实际存储数据的物理介质,例如磁盘或闪存存储器。物理存储介质总是通过控制器访问。控制器的基本功能是将物理存储介质上的数据格式(例如,电压)转换成上层可理解的格式(例如,二进制数值),并且提供一个标准化的,定义明确的硬件接口,例如ATA和SCSI接口,它允许从/向物理存储介质读取/写入数据。
机械磁盘采用数据原位更新,因此其控制器通常将逻辑块地址映射到物理存储介质上的某个存储位置。固态存储设备采用非原位更新,通常通过闪存转换层(Flash Translation Layer,FTL)或闪存专用文件系统(如YAFFS文件系统)进行管理。设备驱动程序以软件形式,通过一个简单的通用接口来整合对不同类型硬件的访问。块设备驱动程序接口允许在逻辑地址中读取和写入块,如块设备、内存技术设备(MTD)、及建立在MTD上的未分类的块图像(UBI)设备驱动。
文件系统负责通过设备驱动程序提供的接口在物理存储介质上的可用块之间组织逻辑数据序列。包括建立在块设备之上的块文件系统,例如FAT32、EXT4和NTFS等;构建在MTD设备之上的闪存文件系统,例如YAFFS;建立在UBI设备之上的UBI文件系统。存储系统的最顶层是应用层,为用户提供一个数据操作接口。
4 剩余信息保护面临的挑战
在GB/T 22239-2008中剩余信息保护安全项主要体现在主机安全方面和应用安全方面。具体的要求应保证用户(操作系统和数据库系统用户)鉴别信息所在的存储空间被释放或再分配给其他用户前得到完全清除,无论这些信息是存放在硬盘上还是在内存中,应保证系统内的文件、目录和数据库记录等资源所在的存储空间被释放或重新分配给其他用户前得到完全清除[4]。从剩余信息保护要求项的描述来看,该要求项要保护的“剩余信息”主要是内存或者硬盘的存储空间,要保护的信息是用户鉴别信息,要保护的时间是被释放或重新分配给其他用户后。
4.1 内存中的剩余信息保护
应用程序对用户的身份鉴别流程一般情况下是这样的,应用程序会先将用户输入的用户名和口令存储在两个字符串类型(也可能是数组等)变量中。通常情况下,为了防止攻击者采用自动脚本对应用程序进行攻击,应用系统会要求用户输入校验码,并优先对校验码进行验证。如果用户输入的校验码错误,应用系统应要求用户重新输入校验码。在校验码验证通过后,应用系统应从数据库中读取用户身份信息表,并在其中查找是否存在用户输入的用户名。如果未查找到,则应用系统应返回“用户名不存在”(或者较模糊地返回“用户名不存在或者密码错误”)。如果在用户身份信息表中找到用户名,应用程序一般应采用一种杂凑算法(通常是MD5算法)对用户输入的密码进行运算得到其哈希值,并与数据库用户身份信息表中存储的密码哈希值进行比较。这里需要说明的是,数据库中一般不明文存储用户的密码,而是存储密码的MD5值。通常情况下,应用系统在使用完内存中信息后,是不会对其使用过的内存进行清理的。这些存储着信息的内存在程序的身份认证函数(或者方法)退出后,仍然存储在内存中,如果攻击者对内存进行扫描就会得到存储在其中的信息。
更严重的情况是在涉及到密码运算过程中,由于内存中的剩余信息的不及时清除带来的密钥数据泄露。首先,作为计算机系统进程中的内存数据,密钥也面临各类系统攻击和安全威胁,包括Cold-Boot攻击[8]、DMA攻击[9-11]、计算机系统功能导致的数据扩散和软件漏洞导致的内存信息泄露[12,13](例如,OpenSSL心脏出血)。攻击者可以通过各种各样的攻击获取密钥。因此,针对计算机系统中的内存信息泄露漏洞和攻击,各种原理不同的密钥安全方案近几年也分别被提出,包括基于寄存器的密钥安全方案[14],完全在寄存器中完成密码计算,从而抵抗冷启动攻击、提高内存信息泄露攻击难度;基于TrustZone机制的密钥安全方案[15],利用ARM TrustZone机制,构建隔离的安全计算环境。2014年,Intel公司推出SGX機制,实现了由CPU硬件创建的隔离计算环境,在SGX执行环境中的数据,只在Cache中出现、交换到内存芯片时会自动由CPU加密,可以抵抗恶意操作系统以及恶意进程读取敏感数据、篡改可执行代码。Intel SGX机制利用密码技术在CPU中创建安全的计算环境,也可以在SGX执行环境中实现密码算法、由SGX机制来保护密钥数据。但是,近年来的最新研究成果表明,SGX执行环境仍然面临着多种侧信道攻击获取密钥等敏感数据、控制程序执行流程等安全威胁。2018年,Meltdown漏洞和Spectre漏洞的发现,引起了网络空间安全各界的极大关注。该漏洞影响了不同厂商、不同型号的大量CPU,使得攻击者非授权地读取数据(包括密钥等敏感数据),也可以突破SGX机制的保护。这一事件显示,安全漏洞的发现会逐渐从软件推进到硬件,将来会有更多的硬件相关漏洞被发现。
4.2 硬盘上的剩余信息保护
在物理介质层,由于没有上层文件系统的语义信息,只能通过消磁或者物理破坏的办法将数据销毁。在控制器层,可以通过SCSI和ATA提供的安全擦除命令,擦除存储设备上的所有数据。以上两种方法,显然对连续运行的操作系统是不可行的。
在文件系统层,传统的块设备文件系统,如FAT32、NTFS、EXT2/3/4等,都是通过修改元数据来指示数据被“删除”。如在FAT32文件系统中,只是通过将被删除文件的目录项的第一个字节改为“0xE5”来指示文件被删除,而真正的目标删除文件数据仍然保存在存储介质中。因此,常规的文件系统并不支持剩余信息的保护。
在应用程序层,程序只能与兼容可移植操作系统接口(Posix)的文件系统进行通信。应用层需要通过文件系统层、驱动器层、控制器层的转换,才能对最底层的物理介质进行访问,所以在应用层中实现数据的安全删除是最困难的,而且其达到的安全程度是最低的[7],例如一些文件覆盖工具(Srm 和Wipe等)。
目前,主要有机械磁盘和固态硬盘两种存储设备。机械磁盘基于磁性介质,采用数据的原位更新,也就是说,当文件被更新(或删除)时,旧版本文件可以被新文件(或随机信息)替换。固态存储设备由于寫数据和擦除数据的最小单位不一样,写入数据之前必须执行删除操作。因此,固态存储设备采用数据非原位更新,也就是说,更新数据时,不对原数据进行修改,而是直接在新位置写入新数据。数据非原位更新将会导致在固态存储设备中存在多个版本的剩余信息,有研究表明,针对机械磁盘的剩余信息保护措施(比如用随机数重写、数据覆盖)对固态存储设备都是不适用的[16]。
5 剩余信息保护的解决方案
无论是内存还是硬盘的存储空间,剩余信息保护的重点都是:在释放内存前,将存储的剩余信息删除,也即将存储剩余信息的空间清空或者写入随机的无关信息。
5.1 内存中剩余信息保护的解决方案
针对应用程序在内存中遗留的信息,为了达到对剩余信息进行保护的目的,需要身份认证函数在使用完用户名和密码信息后,对曾经存储过这些信息的内存空间进行重新的写入操作,将无关(或者垃圾)信息写入该内存空间,也可以对该内存空间进行清零操作。
针对密钥数据泄露产生的剩余信息保护问题,关键在于构建隔离的安全计算环境。安全计算环境的构建依赖加密算法,更依赖计算环境物理硬件的安全性。
通过以上介绍我们可以看到,在内存中实现剩余信息的保护的任务是艰巨的,这需要在应用程序设计、开发与使用的各个阶段进行有效的数据保护,而且还要针对各种软件、硬件安全漏洞的攻击提供有效的预防措施,全方位地对剩余信息进行保护。
5.2 硬盘中剩余信息保护的解决方案
对于硬盘上的剩余信息的保护,无论是机械磁盘还是固态硬盘,最有效的方法就是通过对数据进行加密,通过删除对应密钥来对剩余信息进行保护。但是,前提是系统支持加密操作,且加密操作不会对系统带来大的开销,而且需要与内存中的剩余信息保护技术相结合,实现真正的剩余信息保护技术体系。
6 等级测评中剩余信息保护的检查方法
在等级保护测评过程中,对实际的应用系统进行剩余信息保护的检测,主要从访谈、检查和测试三部分分别进行[6]。
6.1 访谈
询问应用系统开发人员,是否对应用系统中的剩余信息进行了保护。首先,询问应用系统开发人员对剩余信息的判断,以及在内存、硬盘中剩余信息保护的具体措施,如果开发人员连剩余信息保护的概念都不清楚,那么也就不可能对剩余信息进行保护。
6.2 检查
查看源代码,重点监测在内存释放或者删除文件前,应用系统是否进行了处理,比如内存空间回收、清零;存储空间是否加密并删除密钥,是否使用特定的剩余数据清除工具。检查应用系统操作手册中是否有相关的描述。
6.3 测试
为了确认内存中是否有剩余信息,可以采用内存扫描软件(或者内存监视软件)进行扫描。对于存储在磁盘中的文件,可以尝试在应用系统删除文件后,用恢复软件恢复文件,并对比恢复文件和原文件。
7 结束语
剩余信息保护在等级保护测试中的重要性逐渐凸显,这是网络安全,尤其是数据安全逐渐被人们所重视的必然要求。但是从国内外标准和信息系统实践来看,等级保护标准中对剩余信息保护的“完全清除”的实现存在一定的技术难度。就目前技术而言,在内存中实现敏感数据的快速消除缺乏验证技术,且会对系统性能带来一定影响;在机械磁盘、固态硬盘等存储设备中实现“消磁”“覆盖”等要求,对绝大部分连续运行的信息系统而言也是不现实的。在应用层面,对用户数据当其不再使用时,应该以“标记后另存”方式实现,既满足系统的安全要求,又符合对用户交易记录的保存要求。对鉴别数据,无论是管理员还是用户,做到当其不再担任这个角色或不再使用时,以删除相应的用户注册、同时修改访问控制策略更有实际意义。
参考文献
[1] Book T O. Department of Defense Trusted Computer System Evaluation Criteria[J]. DoD 5200.28-STD, 1985.
[2] e安全.欧盟《通用数据保护条例》合规指南[OL] https://www.easyaq.com/news/2092730864.shtml, May 29,2018.
[3] GB/T 18336-2008,信息技术 安全技术 信息技术安全性评估准则[S].
[4] GB/T 22239—2008,信息系统安全等级保护基本要求[S].
[5] 信息安全技术 网络安全等级保护基本要求(征求意见稿)[S].
[6] 应力.剩余信息保护——理解与应用[J].Industry Express,2012:37-40.
[7] Reardon J , Basin D , Capkun S . SoK: Secure Data Deletion[C]. Security & Privacy, IEEE, 2013: 301-315.
[8] J. Alex Halderman, Seth D. Schoen, Nadia Heninger, William Clarkson, William Paul, Joseph A. Calandrino, Ariel J. Feldman, Jacob Appelbaum, and Edward W. Felten. Lest We Remember: Cold Boot Attacks on Encryption Keys[C]. Communications of the ACM - Security in the Browser, 2009,52(5):91-98.
[9] Colp P, Zhang J, Gleeson J, et al. Protecting Data on Smartphones and Tablets from Memory Attacks[J]. architectural support for programming languages and operating systems, 2015, 43(1): 177-189.
[10] Stewin P, Bystrov I. Understanding DMA malware[C].International conference on detection of intrusions and malware and vulnerability assessment, 2012: 21-41.
[11] Blass E, Robertson W K. TRESOR-HUNT: attacking CPU-bound encryption[C]. annual computer security applications conference, 2012: 71-78.
[12] Harrison K , Xu S X S . Protecting Cryptographic Keys from Memory Disclosure Attacks[C]. International Conference on Dependable Systems & Networks, IEEE, 2007:137-143.
[13] J. Chow, B. Pfaff, T. Garfinkel, K. Christopher, M. Rosenblum. Understanding Data Lifetime via Whole System Simulation[J]. Proc of Usenix Security Symposium, 2004,l3:321-336.
[14] Muller T, Freiling F C, Dewald A, et al. TRESOR runs encryption securely outside RAM[C]. usenix security symposium, 2011: 17-17.
[15] Zhang N, Sun K, Lou W, et al. CaSE: Cache-Assisted Secure Execution on ARM Processors[C]. ieee symposium on security and privacy, 2016: 72-90.
[16] Wei M Y, Grupp L M, Spada F E, et al. Reliably erasing data from flash-based solid state drives[C]. file and storage technologies, 2011: 8-8.
作者簡介:
徐丽娟(1988-),女,汉族,内蒙古自治区呼和浩特人,北京邮电大学,硕士,中国软件评测中心;主要研究方向和关注领域:网络安全。
李杺恬(1988-),女,蒙古族,吉林白城人,北京理工大学,硕士,中国软件评测中心;主要研究方向和关注领域:关键信息基础设施安全、网络关键设备安全。
唐刚(1981-),男,汉族,北京人,北京航空航天大学,硕士,中国软件评测中心,高级工程师;主要研究方向和关注领域:网络安全检测与评估。