网络安全 频道

安华金和 数据库加密通用知识

  【IT168 资讯】

  对称算法

  对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加密解密密钥是相同的。这些算法也叫秘密密钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加密解密。只要通信需要保密,密钥就必须保密。通常,对于数据库中的敏感信息加密,采用的都是对称算法进行处理。

  非对称算法

  非对称算法也叫公开密钥加密,它是用两个数学相关的密钥对信息进行编码。在此系统中,其中一个密钥叫公开密钥,可随意发给期望同密钥持有者进行安全通信的人。公开密钥用于对信息加密。第二个密钥是私有密钥,属于密钥持有者,此人要仔细保存私有密钥。密钥持有者用私有密钥对收到的信息进行解密。从数据库安全的角度,非对称算法主要用于秘钥和口令交换等领域。

  国密算法

  国密即国家密码局认定的国产密码算法,即商用密码。商用密码,是指能够实现商用密码算法的加密、解密和认证等功能的技术。(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。随着我国对数据库安全重视程度的提升,越来越多的数据库加密需求,要求采用国密算法进行。

  存储层加密

  由于数据库中的数据是以明文形式存储在硬件设备上的,无论是当前数据库运行的硬件存储设备,还是用于数据备份的磁带,若发生丢失或者维修,都会引起相应的数据丢失风险,而通过专业的工具,更可以直接将存储下来的内容还原。存储层加密是将保存到硬件设备上的敏感信息直接加密存储,无论是运行环境的硬件存储设备,还是数据备份的磁带中,敏感数据是以加密的形态存储的,从而有效地防止了由于硬件丢失或硬件维修等无意识的泄密,即使使用专业工具,也只能看到加密后的内容,防止数据库数据以明文形式暴露,以实现存储层的安全加固。

  多级密钥管理

  在对数据库内数据进行加密的过程中,我们把直接对数据进行加密的密钥称之为数据密钥。数据密钥只有当被使用的时候,才以明文形态出现,在系统运行的其他时期,数据密钥是被加解密设备的设备密钥加密保护,而设备密钥又是被系统根密钥加密保护,这种逐级加密管理密钥,只有当使用的时候才逐级解密的机制称之为多级密钥管理。这种机制可以有效的保护数据密钥的安全性,从而对加密数据提供更安全的保护。

  密钥库

  在对数据库进行加密的时候,通常不会使用同一个密钥对所有数据进行加密,而是提前生成若干密钥,在加密的时候,从这些密钥中随机选择一个对数据加密,这些密钥统称为密钥库。密钥库中的密钥是以密文形态保存在文件或者内存中,只有当被选择使用的时候,才还原为明文态使用。从密钥库中随机选择密钥对数据加密,可以大幅度增加加密强度,增加被破解的难度,提升安全性。

  密钥轮转

  在安全性要求较高的场景下,要求加密后的数据,其密钥必须周期性的发生变更,不能长时间使用同一密钥对数据进行加密保护。这种定期变更密钥的加密方式,称之为密钥轮转。密钥轮转可以人为进行,以手动的方式将数据解密,再用新密钥重新加密。也可以通过加解密软件提供的自动轮转机制进行,在无损安全的前提下,大大提升了效率,降低了操作复杂度。

  数据库安全管理员

  数据库安全管理员(DataBase Security Administrator)简称DSA。与传统的数据库管理员DBA对应,DBA和DSA完全独立,共同实现对敏感字段的强存取控制,实现真正的责权一致。DBA实现对普通字段的一般性访问权限控制,DSA实现对敏感字段的密文访问权限控制和加解密处理。通过引入DSA的身份,限制了传统数据库管理机制中超级用户权限过大的弊病,又不会影响DBA对数据库的设计变更及日常维护工作,使得数据库在安全管理上做到权责分明。

  数据库增强访问控制

  数据库增强访问控制指的利用加密或设立标签等手段,将数据库中敏感信息与普通信息区分开来,并通过独立于数据库超级管理员的权限之外的授权体系,对敏感数据的访问权限加以限制,从而使敏感数据的访问更加安全化的一种控制方式。这种控制方式区别于以往传统的DBA“统管一切”的权限体系,既可以对超级用户的访问权限进行限制,也可以对数据库访问者的其他身份特征如IP、端口、客户端工具、时间等进行限制,是一种数据库访问权限限制的补充和增强。

  应用身份鉴别

  "在某些实际应用场合中,对于数据库中敏感数据的权限控制,除了要做到数据库用户级,还要对使用同一个数据库用户的不同应用加以区分,从而达到受信应用才可以访问数据,非受信应用即使使用同一个数据库账户,也无法访问敏感数据的效果。

  应用身份鉴别即指的是可以区分应用身份,并且针对不同应用,授予不同权限,从而让敏感数据更加安全的一种技术手段。

  在应用和数据库建立连接的过程中,应用程序的若干身份信息会被数据库客户端传递给数据库服务器,服务器端驻留的逻辑将收集到的应用程序身份信息与提前配置好的合法应用程序的身份信息进行比对,从而达到鉴别应用身份的效果。另一种应用身份鉴别技术是使用改造后的数据库驱动(如JDBC)连接数据库,改造后的驱动会将调用者的身份信息发回至服务器,然后再与之前保存的应用身份信息对比,实现应用身份鉴别。

  应用身份鉴别机制可以有效的保护数据库中的敏感信息,可以设定只允许受信应用通过某数据库用户访问敏感信息,即使该户口令泄露,数据窃取者也无法通过其他客户端工具等直连手段登陆数据库获取敏感信息。

  应用用户鉴别

  "在某些实际应用场合中,对于数据库中敏感数据的权限控制,除了要做到数据库用户级,还要对使用数据库的不同应用用户加以区分,从而达到受信应用用户才可以访问数据,非受信应用用户即使使用同一个数据库账户,也无法访问敏感数据的效果。

  应用用户鉴别即指的是可以区分应用用户的身份,并且针对不同应用用户,授予不同权限,从而让敏感数据更加安全的一种技术手段。

  在应用和数据库建立连接的过程中,应用程序的若干身份信息会被数据库客户端传递给数据库服务器,应用用户的身份信息也会在使用或者建立数据库连接的时候被数据库客户端获取,服务器端驻留的逻辑将收集到的应用用户身份信息与提前配置好的应用用户权限进行比对,从而达到区分应用用户权限的效果。另一种应用用户鉴别技术是使用改造后的数据库驱动(如JDBC)连接数据库,改造后的驱动会将调用者的身份信息发回至服务器,然后再与之前保存的应用用户身份信息对比,实现应用用户鉴别。

  应用用户鉴别机制可以有效的保护数据库中的敏感信息,可以设定只允许某应用系统中权限较高的应用用户才可以访问敏感信息,即使使用同一套应用系统,权限较低的用户也无法访问敏感信息,通常这种应用用户鉴别机制会和应用身份鉴别机制一起使用以增加安全性。

  密文水印

  " 密文水印技术指的是向加密后的敏感信息(即密文)中嵌入某些信息,以达到对密文真伪的辨别,密文是否被篡改的区分的目的。另外密文水印还可以实现当数据库加密策略信息丢失,只有密文和密钥库存在的情况下,保证密文仍然可以恢复的功能。

  使用密文水印技术对数据库内敏感信息加密,可以准确的辨别加密后数据是否被篡改,可以最大程度上保证数据的一致性和可还原性,但同时会造成加密后的数据与原数据相比,所占空间会有一定的膨胀。"

  随机盐

  在使用对称加密方式加密的过程中,如果使用相同的算法和密钥,对于相同的明文,加密后的密文结果也相同,这样如果对数据库中某一列进行加密,当该列加密前内容都相同时,加密后的结果也相同,这会给想要猜解明文的攻击者以可乘之机。如果在对同样的明文内容加密的时候,对于每个明文,引入一组不同的数字或者字符参与加密计算,就可以起到扰乱的作用,这样即使是用相同的算法和密钥,相同明文加密后的密文也各不相同,在加密过程中引入的起到扰乱作用的数字和字符,就被称作随机盐。

  三权分立

  "在数据库加密领域,三权分立指的是数据库管理员(DBA),数据库安全管理员(DSA)和数据库审计员(DAA)三种角色互相制约又相互协作共同完成数据库的管理和安全工作。

  数据库管理员主要负责执行数据库日常管理的各种操作和自主存取控制,安全管理员主要负责定义敏感数据,执行数据加解密和密文数据的授权等安全性操作,审计管理员主要负责监督前两类用户的操作,审计数据库的变更以及日常访问、安全策略配置变更等行为。"

  明文混淆

  在对数据库中敏感信息加密的过程中,明文是逐条或者逐批次的被转化为密文存储的,在整个转化过程结束后,数据库中还有若干地方保存着转化前的明文内容,如操作日志等,另外在加密过程中如果涉及数据的复制备份,则也会产生明文内容。这部分内容在数据库中通常是不可见的,并且会随着后续对数据库的使用被覆盖掉,不过由于这个覆盖过程会在一定时间内完成,会给数据窃取者以可趁之机。明文混淆技术是指在加密过程结束后,立刻通过向这部分隐式存在于数据库中的明文填充无意义字符(例如全0),通过这种覆盖原有明文的方式,使得数据库中不再存在明文内容,从而使得数据窃取者无从入手,提升了安全度。

  数据库文件反向解析

  "一种通过直接分析数据库底层存储文件或日志文件,从中获取数据库结构和数据内容,逐步解析还原,最终重建整个数据库表结构和存储内容的技术。利用这种技术,只要突破主机防护,获取到数据库存储在磁盘上的文件,便可以在无需数据库用户密码的情况下得到其中保存的所有数据。目前互联网上也存在提供反向解析数据库存储文件的工具如AUL/MYDUL等。

  为了解决反向解析对数据库造成的威胁,我们要加强对数据库存储文件的保护,不仅要通过合理的技术手段保障主机安全和网络安全,更直接有效的方式是对数据库中的敏感重要信息进行加密存储,这样即使攻击者通过反向解析还原表结构和数据内容,得到的也是加密后的内容,无法解读利用。"

  透明加解密

  " 透明加解密是指对数据库的敏感信息进行加密后,通过多级视图和触发器等技术保证应用系统、SQL语句、数据库维护、部署方式均不受影响。具体体现在以下几个方面。1)应用系统连接数据库的方式和各种开发接口API程序不用进行任何改变。2)原有的SQL语句和事务处理(ACID、读一致性等事务特性)特性没有任何改变。3)DBA等数据库维护人员对数据库的表结构变更、数据导出导入等维护性操作不受影响。4)对原有的数据库高端特性如数据库集群(RAC)等不造成影响。

  透明加解密技术在提供数据密文存储带来的安全性提升的同时,最大程度的降低了由于数据加密造成的各项影响,应用系统无需二次开发,运维人员无需增加工作量。是一种低成本、小代价、高安全的数据库加解密方式。"

  密文索引

  " 索引是对数据库表中一个或多个列的值进行排序的结构,通过这种排序结构,可以加快数据库的查询速度,更快的从表中找到想要的信息。在数据库中敏感信息进行加密后,用户在使用明文作为查询条件检索密文的时候,无法沿用传统的索引机制,只能通过全表检索的方式获取数据,性能大幅度降低。

  密文索引是一种利用数据库扩展接口,采用专门设计的存储结构和算法构建的针对密文的索引方式,该方式突破传统技术对加密列不能使用索引的限制;在保证索引数据高度安全的基础上,提供了对已加密数据为检索条件的索引查询。在加密列上进行的等于、大于、小于和Like操作依然可以使用索引,从而保持了数据库的高效访问能力。

  密文索引支持的数据类型包括varchar2、char、int、number、date等数据库常见数据类型。在这些类型的加密列上面建立密文索引,可以保证以其为条件进行的等于、大于、小于和Like操作,性能相比明文索引下降在3%~5%,做到性能基本无损。并且,储存在索引表中的数据均是以密文形态存在,安全性得到了充分的保障。"

  前置代理加密

  通过在数据库的网络前端串联接入加密设备;对于用户定义的需要加密的列,在插入式对数据加密后再传递给数据库,在读取时解密后再传递给客户端。这种技术路线包括如下三种:(1)通过通讯协议解析和数据包改写的方式进行;(2)对于JDBC或ODBC重构;(3)增加JDBC或ODBC代理转发服务器。无论哪种方式都有应用改造和密文数据无法快速检索的风险。

  关联加密

  关联加密通常在对存在外键的数据列进行加密时进行,为了保证对数据库加密后,原有的表间外键关系不被破坏,需要检查是否存在和该主键列相关联的外键列,并将所有相关联的外键列都加入到待处理的加密列中,进行加密处理。并且对这些外键列采用和主键约束列完全相同的密钥、盐值和加密算法,以保证主键和外键被加密后的数据一致。因此,需要通过一个专门的加密处理接口来对主外键关系的列进行同时的加密处理。并且不能改变该主外键约束关系。在进行加解密处理的时候,需要理清其先后的顺序:首先更改全部主键列的数据,然后更改外键列的数据。

0
相关文章