业务支撑系统数据安全保障机制研究

2017-11-30 01:30张立成杨敬巍褚尧
中国信息化 2017年3期
关键词:集成商加密算法校验

文|张立成,杨敬巍,褚尧

业务支撑系统数据安全保障机制研究

文|张立成,杨敬巍,褚尧

在电信领域的IT系统中,尤其是业务支撑领域的系统中,客户资料、用户密码、用户敏感数据、系统数据库用户密码等等是系统核心机密数据,此部分数据的安全性、隐秘性必须从根本上得到有效保障,如果保障手段不足、不到位,极大可能会出现客户资料泄露、非授权业务办理、系统大量数据外泄、被非法更新等一系列问题,直接导致大量用户的权益受损、公司经营数据泄露、系统数据遭受破坏等严重后果出现。国家主席习近平在网络安全和信息化工作座谈会上的讲话上指出“网络安全和信息化是相辅相成的。安全是发展的前提,发展是安全的保障,安全和发展要同步推进。”,可见安全的重要性之大、重要层次之高,努力提高业务支撑系统中数据的安全保障能力是我们工作的重点之一。

保障数据安全性、隐秘性的有效手段是使用加密技术。但即使使用了加密技术,一些数据泄露问题仍然没有得到根除,尤其是来自于企业内部或合作伙伴的原因导致的泄露问题并不罕见。

据了解,全国大部分业务支撑领域的系统中使用的加密算法主要是由集成商负责提供、并集成到应用系统中。有些管理者能够意识到加密算法的安全性,能够回收算法密钥的管理权限、并予以定期更新,由具体负责人或专门机构予以保管;有的可能还没有意识到其重要性,还留在集成商手中保留。但不论密钥是保管在公司方手中还是集成商手中,都存在如下问题:

由于多方合作关系,不能有效避免各方人员接触到生产系统、看到加密数据;对企业内部人员、尤其是系统管理人员来说,看到、访问到加密数据更是轻而易举。对有心人来说,这就是一个快捷的突破途径。

每个IT系统势必要使用到解密(如系统数据库登录模块)及密文校验(如工号、用户密码校验)的方法、函数或接口(在某些情况下,加密数据以安全堡垒的形式保存、以接口的方式对外提供),一般的解密、校验程序仍然是由集成商提供,要让集成商提供的解密、校验程序能够正常完成业务操作,必然需提供其能够实现解密的方式,比如:以用加密模块编译出来的链接库文件形式提供其连接、编译程序使用,这样就相当于变相提供了解密算法、密钥信息,集成商开发人员完全可以通过此链接库实现解密。

原有集成商开发的程序包括函数名称、定义、调用方式等信息均已被其掌握并在系统应用程序中应用,仅仅改变密钥信息,函数信息不变化,熟悉的人员可轻易实现函数调用完成解密操作。

提供的链接库文件包含不稳定因素,对程序开发、编译、运行机制熟练掌握者可从链接库中寻找到加密密钥的痕迹。

随着云计算、大数据的兴起,相关技术被逐步引入了业务支撑系统中,更适于云化部署的JAVA技术在被广泛使用,逐步替代了过去的C、C++进行系统程序开发。而JAVA技术对加密技术的保障能力极弱——只要有机会接触到运行时程序,可轻易被反编译、轻易找到解密方法,再如何更换密钥、加干扰码也不能屏蔽。

有途径、有方法,非法解密就可以轻易实现,所以,仅仅管理起密钥还是远远不够的。

通过上述分析我们可以看出,要想从根本上保障加密数据的安全性、杜绝内外部任何非法解密数据问题的产生,一是要通过管理手段加强对数据访问的管控、切断非法解密的快捷途径——尽管管理手段可能会由于各种因素导致不能彻底杜绝问题的产生,但毕竟通过黑客手段窃取加密数据、之后再找到解密方法并进行破解还是十分不易的;二是要寻找到一种安全有效数据加密算法使用及管理机制,让解密方法受到系统程序自动控制及保障、切断人为解密的所有途径,这是最根本、有效的保障手段。

笔者从以下几方面进行了深入研究、设计、开发,并实际应用了到黑龙江移动的业务支撑系统中,取得了不错的效果,主要思路为:

一、加密算法强化

从实际生产过程中看,单一的、静态的加解密算法是存在安全隐患的,一是尽管算法上已经达到了强加密要求,但长时间使用后就可能被熟知的人恶意破解;二是对于重复度极高的数据,加密结果实质上是不安全的,比如:如果用户密码是111111,加密结果是ABCDEFGHIJK,如果采用的是一种静态加密算法,那么所有密码为111111的用户数据加密结果就都是ABCDEFGHIJK,这种情况下,不用解密即可猜测知道这些用户的密码。

笔者在研究过程中,在原有的des加密算法基础之上,对称加密算法的实现过程通过下述多重加密方案进行了强化:

(一)密钥安全性保障能力提升:在加密算法中,对密钥的引用处增加一层加密算法,其目的主要是进行干扰、防止真实密钥被直观获取,为密钥分离管理做准备;

(二)算法关键过程加入“引用密钥”:在算法的加、解密关键环节处,增加程序(过程)的引用授权机制,授权以密钥形式管理,同样是在加密算法保护之下,其目的是杜绝关键解密环节被直接引用、调度;

(三)实现动态、二次加密:使用动态加密算法对原始数据进行一次加密,实现数据加密结果的动态变换;后使用静态加密算法,结合上述机制进行二次加密,最终实现动态、多层、多次加解密。

二、按需封装:

根据不同的业务需要,选择不同类别的加密算法有助于提升安全性,比如:不需解密、仅用于认证的数据关键用于与输入信息进行吻合性校验、认证,故不需要明文信息,此时采用rsa等非对称加密算法进行加密就十分适合,一是安全度足够,二是不需、也不提供解密,确保了明文内容不被任何人获取。

加解密算法只是安全工作的基础之一,选择何种算法并不十分重要,国际主流加密算法(标准)种类繁多(如des、3des、aes等等),安全性是可以满足电信行业使用需要的,我们要考虑的不是从种类繁多的主流加密算法中找到一个加密最强的算法,真正决定安全质量的是这些加密算法的使用以及保护手段是否完善——如果算法被很多的人所掌握、可随时使用,那么就等于是没有加密。在过去,这些算法掌握在集成商手中,系统中的数据对集成商来说是没有秘密的,企业因集成商人员窃密、获取高权限而蒙受损失的情况并不罕见。

为达到安全的目的,笔者的做法是将算法拿回到企业自己手中、私有化:在完成上述加密算法强化后,重点对算法的使用方法进行了调整、封装。

首先是根据已有业务的需要对加解密算法模块和应用进行分类,明确各类加密数据的使用方法,如:不需解密、仅用于认证(用户密码等),需解密、不展示类(如提供给操作系统进行认证的主机口令、数据库口令),需解密、需展示(如客户姓名信息数据)。后根据不同分类分别封装不同的应用程序库供业务程序调度使用,主要包含以下方法:

(一)不需解密、仅用于认证:将加密算法、解密算法(如果使用非对称加密算法则不需要解密算法)、一致性校验逻辑封装在一起,对外提供加密功能、校验功能,不提供解密功能;

(二)需解密、不展示类:将加密算法、解密算法、认证过程逻辑封装在一起,对外提供加密功能、数据库或主机的连接通信功能,不提供解密功能;

(三)需解密、需展示:将加密算法、解密算法封装在一起,同时增加功能调度认证逻辑(即调度解密算法时,程序自动识别调度来源,如果来源在授权范围内,则允许调度,否则拒绝),对外提供加、解密功能。

(四)所有封装程序在编译时隐藏描述符、不规则变量命名等各种防反编译、防调试手段,增强程序的安全性;

(五)如果是JAVA程序,设计防泄露体系结构(由于涉及专利权事宜,在此不予详细说明)。

通过上述“私有化”、“封装”的手段,可有效解决算法被滥用、不可控等问题,可大幅提升企业数据的安全性。

三、使用管理强化:

如果管理不善,技术手段再如何强大也起不到应有作用。常见、安全有效的保护方法是将加密数据、加密算法、功能包放在有限的、不同的人的手中,人与人之间、人与数据之间、人与加密算法的使用之间形成制约关系——能看到数据的人不能掌握解密功能和算法,掌握解密功能和算法的人不能看到数据,必须多人合作方可解密等等。相关流程、方法在安全防控工作中是成熟的,在此不予赘述。

数据安全问题是各行各业都面临的难题,严格讲是不能实现彻底根除风险的,但通过加密算法强化、算法使用方法的安全保障、管理手段的加强等手段的联动,可相信数据安全可以得到大幅提升,数据泄露的风险将可降到最低。

作者单位:中国移动通信集团黑龙江有限公司

猜你喜欢
集成商加密算法校验
复杂多耦合仿真模型校验工具研究
使用Excel朗读功能校验工作表中的数据
加密文档排序中保序加密算法的最优化选取
客群维护,集成商都在怎么做?
电能表在线不停电校验技术
集成商如何为客厅影院设计方案
精通文件校验的“门道”
教育云平台的敏感信息保护技术研究
一种改进的加密算法在空调群控系统中的研究与实现
AES加密算法的实现及应用