龙空技术网

在大型应用系统的不同位置实施数据存储加密的特点及适用场景分析

老靳聊安全 37

前言:

现时小伙伴们对“oracle数据存储加密”都比较注意,朋友们都需要学习一些“oracle数据存储加密”的相关资讯。那么小编同时在网摘上网罗了一些关于“oracle数据存储加密””的相关资讯,希望朋友们能喜欢,小伙伴们一起来学习一下吧!

随着网络安全法、数据安全法、个人信息保护法等法律法规的出台,对应用系统中的重要敏感数据实施存储加密已成为满足合规要求的必要措施,如在网络等级保护三级中要求“应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等”;在个人信息保护法中,在个人信息处理者的义务要求“采取相应的加密、去标识化等安全技术措施”防止个人信息泄露、篡改、丢失。本文将研究、分析、验证在应用系统的不同层次,对业务数据实施存储加密,能够解决和应对那些安全威胁,不能够解决和应对那些安全威胁,主要的特点以及适用的业务场景等问题。

一、 大型应用系统架构模型及实施数据存储加密的位置分析

一个典型的企业级大型应用系统,如人力资源管理系统(HR)、客户关系管理系统(CRM)等,从技术栈维度看,自上而下通常由应用软件、数据库、操作系统、存储设备(或云存储等存储服务)构成,如下图所示:

图一:大型应用系统架构

在这样一个典型的应用系统中,通常可以在如下四个位置实施数据存储加密:

方案一:利用操作系统或存储设备的特性实现落盘文件加密

主流操作系统或存储设备均支持数据落盘加密,如Linux下的LUKS、Windows下的 BitLocker,华为OceanStor支持的硬盘加密等。使用该方案时,数据的加密和解密操作由操作系统或磁盘驱动器完成,数据在磁盘中为密文状态,在加载到内存时进行解密。

方案二:利用数据库的特性实现落盘文件的全盘加密

Oracle、SQL Server、MySQL、SAP HANA等主流数据库均提供数据落盘加密功能。使用该方案时,数据在由数据库管理系统写入磁盘时进行加密,在从磁盘中调入内存时进行加密,数据范围包括数据库中的表、索引等所有数据。

方案三:利用数据库的特性实现表或字段级数据存储加密

Oracle等数据库提供表或字段级数据加密能力,例如Oracle的TDE (Transparent Data Encryption )功能。该方案和方案二在加解密的实施环节上一致,即数据在由数据库管理系统写入磁盘时进行加密,在从磁盘中调入内存时进行加密,但数据范围更有针对性,可以仅对数据库中的若干表,或表中的若干字段进行加密。

方案四:由应用软件实现字段级数据存储加密

在应用软件中调用商用密码算法等对敏感数据进行加密,加密后将密文存储到数据库中。

在上述四种方案中,数据在系统中加解密操作的位置,以及数据在不同位置时的加密状态如下:

图一:数据加解密位置及数据状态

二、 数据窃取的发生位置及常见方式分析

结合图一所示架构,从系统技术栈的角度看,攻击者实施数据窃取的攻击位置及常见方式如下:

威胁一:通过对存储设备实施物理攻击实现数据窃取。如前所述,应用系统的数据最终将全部保存在存储设备中,当出现如下示例情况时,可能会造成数据外泄:存储数据文件的磁盘阵列或硬盘送外维修;攻击者仿冒厂商运维人员进入机房拷贝数据硬盘文件;云计算环境中,前一个租户的存储设备未妥善进行数据擦除,分配给一个新的租户;云环境管理人员或数据中心管理人员利用职务之便,拷贝存储设备中的数据。

威胁二:通过对操作系统实施网络攻击实现数据窃取。攻击者可以利用各种安全漏洞和远程控制工具,控制运行数据库的操作系统,从而获取数据库的数据文件。

威胁三:通过对数据库实施网络攻击实现数据窃取。数据库具有管理所有数据的能力,攻击者可通过如下方式在数据库层实施数据窃取:攻击者获取了数据库的登录凭证,远程访问数据库;数据库运维管理人员利用职务便利,读取数据库中的敏感数据。

威胁四:通过对应用软件实施网络攻击实现数据窃取。通过应用软件能够读取数据库中的数据,攻击者可通过如下方式在数据库层实施数据窃取:攻击者获取了正常用户的登录凭证,如登录用户名和口令,仿冒用户登录系统获取数据;攻击者利用应用软件的漏洞(如SQL注入漏洞)获取数据。

三、 不同存储加密方案的特点分析

*代表仅能够解决部分威胁

1. 在能够应对的安全威胁方面,总体而言,实施的位置越靠近底层,能够应对的威胁越少,越靠近上层,能够应对的威胁越多。例如在采用方案一的情况下,如攻击者获得操作系统的认证凭证或通过提权等方式取得操作系统权限,即可读取所有数据;如果攻击者利用了应用软件层的漏洞,如SQL注入漏洞,也可以读取所有数据。在各个位置实施数据加密能够应对的典型安全威胁情况如下表所示:

1. 在对批量数据读取和查询性能的影响方面,大型企业应用一个显著特点是系统承载的数据量非常大,一个大型企业人力资源系统数据能够达到 TB级别,一些涉及重要敏感数据的单表数据会达到百万级别,在这样的场景下,各种加密方案会对性能产生不同的影响,但由于性能影响会受到包括系统负载、硬件性能、加密方式等多种因素的影响,因此没有官方统一的数据,但总体情况如下:方案一、方案二、方案三是在数据写入或读出磁盘的过程中进行同步加解密,从加解密时机的角度影响最小,但方案一和二由于采用了全库加密,即TB级别的数据均需要加密,对性能影响不大,但是会新增计算资源,而方案三仅对涉及重要敏感数据的各表数据表或字段进行加密,影响相对较小。采用方案四的情况下,由于数据在数据库的内存中为加密状态,在需要进行查询和分析时,需要将数据加载到应用系统中,在应用系统中解密后在进行查询和分析,无法利用数据库本身的查询分析功能,因此对性能影响非常大,在单表数据超过百万行的情况下,对一个加密字段进行一次查询,相比未进行加密情况,一次查询会延迟几秒甚至分钟级别。

2. 在数据管理和使用的影响方面,四种数据加密方案,由于其实施数据加解密的位置不同,因此对数据管理和使用的影响也不相同,总体而言,实施位置越靠近底层,对数据管理和使用的影响越小,越靠近上层,影响越大,其中:

方案一和方案二,数据仅在磁盘存储时是加密状态,一旦数据加载到内存,数据会经过解密转变为明文状态,因此数据的查询、分析等不受任何影响。

方案三,虽然数据在加载到内存中已经自动执行了解密,是明文状态,但由于解密时机的影响,会影响部分数据库的功能,以Oracle的字段加密为例,如下示例功能会受到影响而无法使用:

Ø 基于函数的索引:在加密字段上使用基于函数的索引会受到影响。例如,如果创建了一个将字符串字段转换为大写的索引(例如 CREATE INDEX idx_upper_name ON employees (UPPER(name));),然后将name字段进行了加密,查询该索引就无法返回预期的结果。

Ø Bitmap索引和Bitmap Join索引:如果查询需要将多个Bitmap索引进行AND、OR或者MINUS操作,对于加密的字段,Bitmap索引无法正常工作。

方案四,由于数据在加载到数据库内存时依旧是加密状态,只有到应用软件并解密后才转变为明文状态,因此导致数据库管理系统提供的查询、统计等功能均无法使用,只能在应用系统中对数据解密后进行查询、统计,进而对性能产生严重影响。

一、 适用场景分析

结合前述对每种加密方案能够应对的安全威胁,对性能和功能的影响分析等,在大型应用系统需要实施数据存储加密时,需要根据应用系统建设的情况和特点等进行综合分析,选择合适的加密方案,典型场景可以选取的加密方案如下:

如果系统部署在托管数据中心或第三方公有云中,由于数据存储环境的不可控,因此建议采用方案一或方案二,对所有落盘数据进行加密,避免大规模数据外泄。但如果系统部署在企业可控的数据中心中,考虑到方案一或方案二所带来的性能影响等,可以通过管理和物理访问控制等方式规避威胁一中的物理攻击。

如果系统中有极高价值的数据,且这些数据一般情况下不需要参与查询和分析,或虽然会参与查询分析,但数据量很小,则建议考虑方案四对数据进行加密。

如果系统中存在较大量的重要敏感数据,且这些数据由需要参与查询分析,则可以考虑采用方案三,但需要验证是否对一些功能产生影响,并对数据库账号等进行严格管理。

二、 结束

在大型应用系统中实施数据存储加密是一个复杂的工程,本文仅阐述了笔者的一些实践和思考,在真实环境中,有更多方面的因素需要考虑,才能选择好的加密方案,更好的平衡安全性、可用性、用户体验、成本之间的关系。

标签: #oracle数据存储加密