首页 > Linux操作系统 > Linux操作系统 > 加密技术解决数据被窃取
加密技术解决数据被窃取
灾难描述:
2013年4月28日,接到客户的一个电话,说网络部发现有黑客进入到财政资产系统,由于发现的比较及时,黑客对数据库的文件拷贝没有完成。由于资产系统可以反映一些比较敏感信息,需要加强保护。客户对此十分担心,需要网络部门和系统开发商提出相关技术来解决信息被窃取。
环境描述:
该系统采用java开发,后台采用的数据库为oracle 11Gr2,操作系统为linux x86-64。
案例分析:
对于数据库的数据进行加密,可以防止文件被窃取后恢复数据。Oracle和第三方公司提供了一些可以抽取数据文件内容的工具,这些工具的设计初衷是为解决一些故障案例,但也很容易被一些人用在窃取数据信息方面。
在oracle数据库中,除去数据文件本身,redo,undo也可以恢复一些数据,因此这些文件都需要进行加密。在这个过程中,我们可以自己通过手工的方式对数据进行加密,把加密的过程写在应用中,不要把加密的信息放在数据库的表中。在应用中进行加密,需要对代码进行保护,防止代码被窃取从而密钥被破解,代码封装要进行严格设计。
Oracle在加密技术上引入了wallet的技术,加密后需要数据文件和密码同时具备才可以访问数据库。在一些比较敏感的列上,可以采用列加密的技术保护数据,一旦被加密列上的数据块被访问时,这个列就会被加密,与这个列相关的redo,undo,temp数据也会加密。这个技术在数据库中非常容易实现,建立好wallet后,在建立表的过程中添加ENCRYPT就可以,如下:
Create table test
(id number(10),
Name varchar2(10) ENCRYPT)
一旦我们的数据库文件被窃取,在访问的时候就会有ORA-28365 wallet is not open的错误。如果直接去抽取数据文件,这个过程可以通过简单的一个命令strings来查看收到的也是有些加密过后的乱码信息,通过列加密,可以很好的保护我们的数据,当然也会带来一些性能影响,需要综合来考虑。
除列级的加密技术之外,oracle也提供了在表空间级别进行透明加密。一旦表空间被加密,存储在表空间中的各个数据块都将加密,每一个数据块中的每一个数据字节都会被加密,这样就可以很好的保护数据。表空间加密的技术实现是在创建表空间的语句后面添加上ENCRYPTION DEFAULT STORAGE(ENCRYPT)来实现,实现非常简单。而且在性能问题上带来的负面效果也比列加密要小。
CREATE TABLESPACE buptdream
DATAFILE '/u01/app/oracle/oradata/CHANGE/buptdream.dbf' SIZE 1024K
AUTOEXTEND ON NEXT 100K
ENCRYPTION DEFAULT STORAGE(ENCRYPT);
视图DBA_TABLESPACES和USER_TABLESPACES中的ENCRYPTED列指出了表空间加密情况,显示为YES表示表空间被加密。
SELECT tablespace_name, encrypted FROM dba_tablespaces;
TABLESPACE_NAME ENC
------------------------------ ---
SYSTEM NO
SYSAUX NO
UNDOTBS1 NO
TEMP NO
USERS NO
BUPTDREAM YES
6 rows
selected.
在数据库级别做一些加密技术手段,在网络方面也需要严加控制,防止黑客的入侵,oracle也提供了一些防火墙的技术来解决安全问题。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10701850/viewspace-760872/ ,如需转载,请注明出处,否则将追究法律责任。