电信行业目前争执最厉害的问题就是客户的竞争问题,为了及时有效地处理电信客户的投诉问题,以一种形象化的方式显示与管理投诉热点地区,通过对客户投诉行为进行分析和归纳投诉热点地区,我们提出了一种基于混个加密算法的适应于某一地理区域的移动客户投诉预警系统的设计方案。
一、移动客户投诉预警系统中敏感数据的混合加密技术
移动客户投诉预警系统基于SQL Server 2008的数据加密体系,结合MD5的改进算法,提出使用混合加密的设计方案,对移动投诉预警系统中的敏感数据进行保护。
1、MD5安全性论述
MD5 哈希函数将消息以512位为单位进行分组,不足通过填充方法补齐,每组又被分为16个32位子分组,经过加载初始化数据后,经4轮64次循环运算处理,输出4个32位分组,将其级联生成一个128位的散列值。
MD5哈希函数具有单向、不可逆性,被广泛的应用于数字签名、电子商务及许多密码协议中,但其安全性已受到挑战。有资料证明了包括MD5、SHA-1等在内的哈希函数是可以碰撞的。运用模差分和XOR差分相结合的分析方法对Hash函数进行碰撞攻击,获得了强无碰撞的匹配消息对,到目前为止还没有一种有效的方法找到弱无碰撞,但构建两个一样的MD5摘要已经成为可能。
2、三重组合加密基本原理
鉴于MD5的安全性受到挑战,将MD5与一个可逆加密算法结合起来保护数据,已成为研究的热点,混合加密策略在身份认证、数字签名、软件版权保护、路由协议保护等领域得到了广泛地应用。从加强标准MD5的安全性考虑出发,将MD5算法与Base64和Blowfish算法混合使用以增强密码的安全性。将身份认证加密与传统的对称加密进行组合,从而实现身份的认证。
因AES算法具有运算速度快、安全可靠等优点,本系统选择AES加密经MD5加密过的密码,以增强攻击者破解的难度.但AES在加密时采用一次一密的密钥分发模式,使得应用软件难以对密钥进行有效的管理,不利于应用软件的开发.为解决这个问题,在设计预警系统的过程中,利用SQL Server2008的密钥自动管理的优点,使用改进的MD5算法和SQL Server 2008的内置AES算法、TDE混合实现系统的身份认证策略。系统中的其它敏感信息直接使用SQL Server 2008的内置AES算法进行字段级加密,再使用TDE对数据库进行整体加密。TDE使用AES算法可以对数据和日志文件执行实时I/O加密和解密,不会影响软件的执行效率。
MD5算法身份认证三重组合加密策略的流程见图1:首先,加密过程使用MD5算法将密码信息和系统随机配发的动态信息一起压缩为摘要;其次,将摘要经AES算法加密后存入SQL Server 2008数据库;最后,使用透明数据加密对数据库进行整体加密。SQL Server 2008优异的密钥管理功能和透明数据加密不改变应用程序的特性,使得三重组合加密不需要考虑密钥的管理。在第一重加密时,明文除首先满足一定的规则约束外,系统为明文附加了随机动态信息,随机动态信息经AES加密后存放在数据库中。因此,增加了明文的长度和复杂度,提升了攻击者破解的时间和成本。
当进行一致性检验时,根据用户输入的明文,首先将随机动态信息从数据库中读取并用AES解密,然后再与用户输入的明文一起用MD5算法压缩成摘要,并将它与存放在数据库中的摘要进行比对,以检验其身份的合法性。
三重组合加密使用改进的MD5算法有效降低了碰撞攻击的概率,使用SQL Server 2008内置AES算法和TDE,不需要专门实施密钥的秘密分配,降低了软件的开发成本,在不影响软件运行速度的同 时,三重组合加密更有效地保护了数据,增加了攻击者破解的难度。
3、三重组合加密技术实现
身份认证三重组合加密策略的实现方法如下:首先在SQL Server 2008中用Transact-SQL命令为投诉预警系统的后台数据库创建数据库主密钥和用户自签名证书(证书由数据库主密钥保护),其次选择“AES256"算法使用证书加密的方式创建对称密钥,最后使用TDE加密整个数据库,信息插入数据库时的MD5压缩和AES加密的方法与存储过程,用如下的核心代码实现:
public void Adminlnsert(Admin newAdmin){
cmd.CommandText="InsertAdmin";/*存储过程名称*/
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.AddWithValue(" @Name",newAdmin.Name);
cmd.Parameters.AddWithValue(" @Password",MD5.Encrypt(newAdmin.Password+newAdmin.Randinfo,32));
cmd.Parameters.AddWithValue("@Addinfo".newAdmin.Randinfo);
}
在上述代码中Adminlnsert通过调用存储过程InsertAdmin实现把从逻辑层传递来的用户信息插入到数据库的功能,在插入到数据库之前,先将用户输入的密码Password和系统随机分配的动态信息Randinfo-起进行MD5压缩,生成摘要并赋给变量@Password.lnsertAdmin的代码如下:
Create Procedure[dbo].[lnsertAdmin]
@Name nvarchar(50),@Password
nvarchar(50),@Randinfo nvarchar(50)
AS
BEGIN SET NOCOUNT ON;
OPEN SYMMETRIC KEY SymmetricKeyName
/*打开对称密钥*/
DECRYPTION BY CERTIFICATE CertificateName
/*证书保护密钥*/
Insert into Admin_userName,Password,Addinfo)
values(@Name,ENCRYPTBYKEY(KEY GUIDCSymmetncKeyName’),@Password),
ENCRYPTBYKEY(KEY_GUID(’SymmetricKeyName’),@Randinfo))
END
在上述代码中,首先使用证书打开对称密钥,然后使用加密函数ENCRYPTBYKEY()对密码摘要和随机动态信息实施AES加密后插入到数据库,在使用TDE加密整个数据库后就完成了三重加密操作,在用户登录验证时,先用MD5算法把用户输入的信息和己保存在数据库中的随机动态信息,一起压缩成摘要与经AES解密的存储摘要进行比对,随机动态信息需从数据库中读取并经AES解密。
二、移动客户投诉预警系统工作流程和功能划分
移动客户投诉的处理流程为:客户来电投诉;热线前台工作人员使用工单系统记录客户投诉信息;热线投诉处理人员将未处理的问题反馈给职能部门;职能部门根据客户投诉地点和投诉类型将工单派发给处理部门进行处理;处理部门对问题进行处理后使用工单系统回执工单;热线投诉处理人员将处理结果反馈给客户。
基于以上流程,本系统通过对客户投诉问题进行分析,确定投诉地点,然后根据客户对某一区域投诉的数量,确定该地点的预警等级。本系统将预警划分为三个等级:红、橙、蓝,“红”代表特别紧急,“橙”代表紧急,“蓝”代表一般紧急,在地图上显示时,分别使用三种颜色的标注表示。从优化投诉处理过程入手,根据投诉地点,在地图上自动查找附近基站,并调取性能参数进行分析预警。
1、移动客户投诉预警系统工作流程
移动客户投诉预警系统工作流程分4个主要步骤:
(1)接收工单
利用工单系统接口API,读取本地区的投诉工单,根据客户投诉地点,设置投诉热点和将工单入库。
(2)投诉预警
系统默认对当天的投诉工单进行自动预警,获得预警信息和相应基站性能信息,当处理一个投诉工单时,系统自动在地图上找到相应地点,并给出该地区的预警级别和历史投诉信息;同时根据投诉地点定位到相关基站,根据基站性能指标进行投诉处理和预警。
(3)投诉处理
根据系统预警结果,投诉处理人员现场测试处理投诉。当投诉历史库中已有该用户的投诉信息,将信息反馈给投诉处理人员作为处理参考。
(4)工单归档
将工单归入投诉工单库。
2、移动客户投诉预警系统功能划分
移动客户投诉预警系统包括以下主要模块:
(1)工单管理模块
主要实现工单的添加和查询功能,是预警的基础数据;
(2)基站管理模块
实现基站实时数据更新和查询,基站性能参数是处理投诉和实现预警的关键数据;
(3)热点管理模块
管理热点的添加、删除及查询功能;
(4)综合预警模块
实现按时间段、预警等级,投诉热点组合预警;
(5)预警信息地图显示模块
通过百度地图实现基站自动查找定位;
(6)系统维护模块
包括数据备份、管理员管理功能。
系统的基础数据来源于移动的工单处理系统,通过对现有投诉工单添加投诉热点、投诉数量、预警等级等字段构建精细化的预警统计分析模块,运用ASP.NET和百度地图API技术,参考预警软件的设计方法,选择c群作为开发语言,后台数据库使用SQL Server 2008,采用三层体系结构对系统进行开发。
三、移动客户投诉预警系统核心功能模块
1、热点添加模块
该模块通过百度地图实现热点的添加、显示和管理,见图2。通过该模块添加的热点信息存入系统的数据库中,打开该模块页面,根据预警等级,已经添加的热点使用不同颜色进行标注,当需要新增热点时,通过鼠标在页面移动会显示精确的地理坐标,协助管理人员在地图上快速定位、添加热点。
2、综合预警模块
该模块是系统的核心模块,包括按热点预警等级和时间段进行预警,见图3。
管理人员可根据具体情况按单一或多条件组合进行预警,设置好预警条件后,点击预警按钮,系统会跳转到预警详细信息显示页面,即预警信息地图显示模块。
3、预警信息地图显示模块
(1)功能简介
图4中基于百度地图的预警信息显示模块包括热点显示功能、基站自动定位功能、预警信息子模块和基站性能子模块,管理人员通过观察地图界面后,能够快速地了解到投诉热点的投诉数量、预警级别和投诉类型;以投诉热点为关键字查找附近基站,在百度地图上以图形辐射的方式显示,管理人员通过阅读基站实时性能参数,进行原因分析,在派发工单时将基站信息和原因分析信息交与现场测试人员。
①热点显示功能
通过调用百度地图API中的Map类、Control类和Marker类,实现地图的初始化、标注和控件功能.热点标注的颜色由投诉数量及相对应预警等级决定。
②基站自动定位功能
根据热点经纬度坐标与后台数据库中基站坐标匹配。利用百度地图API的Map类的GetDistance()方法计算距离,筛选出符合一定距离条件的基站并调取其实时性能参数。通过地图的放大、缩小、拖拽等功能可以详细查看热点和基站附近的地理信息。通过地图的拖拽、缩放等功能可以详细查看热点和基站附近的地理信息。
③预警信息子模块
显示投诉热点地区的投诉数量、投诉类型、预警等级等信息,因为一个投诉热点区域投诉的件数可能很多。故采用AJAX静态刷新技术对本功能页面进行分页显示,以避免浏览多页时刷新页面而造成地图重新加载。
④基站性能子模块
该模块是基站自动定位功能的显示模块,一方面在地图上显示基站的物理位置信息,另一方面在该模块显示基站的详细性能参数。把热点附近符合一定距离条件的基站性能实时动态数据全部读取并显示,管理人员能在该页面快速阅读基站信息,确定问题基站,并做原因分析。
(2)核心技术实现
为理解方便,对下文代码中调用的类、属性、方法进行约束.热点类命名为Hotspot,位于代码的逻辑层。Hotspot的属性名约束如下:HotName表示热点名称,HotRemark表示热点的备注信息,Longitude表示热点的经度坐标,Latitude表示热点的纬度坐。Hotspot的方法名约束如下:SelectHot为静态公共方法,通过数据层访问数据库。
热点显示功能的关键代码如下:
<%//接收综合预警页面传递的查询条件参数
....
//调用逻辑层的热点类的SelectHot方法查询热点
List Hotlist Hotspot.SelectHot(四参数);
if (Hotlist.Count>O){%>//标注数组
var markerArr 叫<%foreach (Hotspot Hot inHotlist) { if( Hot. tsnum>5&Hot. tsnum <=10) {%>
{title:"<% Response.Write(Hot.HotName);%>
content:"<% Response.Write(Hot.HotRemark ) ;%>",
point:'k% Response.Write(Hot. Longitude) ;%>}
<% Response.Write(Hot. Latitude);%>¨,
isOpen:O,icon: {w:21,h:21,1:23,t:O,x:6,lb:5 } }
<% } else if( Hot. tsnum<=10) {%>
{title:¨<% Response.Write(Hot.HotName) ;%>",
content:”<% Response.Write(Hot.Hot Remark );%>¨,
point: "<% Response.Write(Hot. Longitude) ;%>l
<% Response.Write(Hot. Latitude) ;%>";
isOpen:O,icon: { w:21,h:21,1:69,t:O,x:6,lb:5}}
{title.fl<% Response.Write(Hot.HotName) ;%>".a
content:¨<% Response.Write(Hot.Hot Remark ) ;%>",
point:"<% Response.Write(Hot. Longitude) ;%>l
<% Response.Write(Hot. Latitude) ;%>",
isOpen:O,icon: {w:21,h:21,1:46,t:O,x:6,lb:5} }
function addMarker() { , . .. ...)//创建 marker
function createlnfoWindow(i) { :.,.,, .}//创建
InfoWindow
function createlcon(json){……)//创建一个Icon
initMap();//创建和初始化地图
小知识之SQLSQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。