分布式网络攻击的应用研究
2014-07-20王莉
王莉
(宿州职业技术学院 计算机信息系, 安徽 宿州 234101)
分布式网络攻击的应用研究
王莉
(宿州职业技术学院 计算机信息系, 安徽 宿州 234101)
本文深入讨论了通过分布式计算进行的网络攻击,重点讨论了通过分布式网络进行的暴力破解攻击,同时分析了其他的一些分布式网络的攻击方法,并最终以 DES 和 MD5 为例设计并实现了分布式网络攻击系统,通过该系统模拟出暴力破解的 DES和 MD5的过程.
暴力破解;分布式计算;DES;MD5
1 研究背景
密码分析的一个基本方向就是暴力破解,暴力破解已成为密码学的一个重要分支.随着网络并行计算和分布式计算等新技术的产生,人们开始研究在新计算平台下的暴力破解技术,尤其是对一些目前常用的对称密码的暴力破解技术.新一轮的基于分布式环境的暴力破解热潮逐渐发展起来.与此同时,在新的分布式网络环境中的其他一些分布式网络攻击也相继出现,研究分布式环境下的网络攻击,对于提高我国密码算法的理论研究,改进密码算法有着重要的意义.
2 分布式暴力破解系统的设计及实现
2.1 软件开发与测试环境
系统基于 Socket通信方式,采用 C/S模式进行设计,开发软件为 Microsoft提供的 VisualStudio 2010,开发语言采用C#,开发系统环境选择 Windows XP.测试时,客户端和服务器端安装在不同的计算机上,这些计算机使用的操作系统也是 Windows XP.
2.2 界面设计
服务器端界面如图1所示:
图1 服务器端
服务器主界面主要包括四个部分,DES加密,MD5哈希,客户端反馈信息,破解进度.在破解时,点击界面左上方的“启动服务器”,等待客户端的连接请求,在建立连接后,可以给客户端分配任务,进行密码破解或是 MD5攻击.通信数据右侧的文本框用于向客户端发送响应消息或是分发破解任务,“查看结果”按钮主要用于当鼠标单击客户端反馈信息时,显示详细的破解内容.客户端反馈信息跟破解进度使用 ListBox控件进行显示.
客户端界面如图2所示:
图2 客户端
“服务器地址”用于输入服务器所在主机的 IP,点击“连接”可以跟服务器建立连接.“连接”按钮左边的文本框用于向服务器发送消息,包括连接测试跟破解进度等信息.当连接成功后,服务器 IP地址输入框自动消失,同时“连接”按钮变成“接收 /发送”按钮,实现操作的简洁性.
2.3 系统功能模块实现
系统实现的主要功能有字符串 DES加密,文件加密,生成 MDS哈希,DES分布式破解,MD5分布式破解.其中字符串 DES加密、文件加密、生成 MDS哈希直接采用开发软件提供的内置函数调用,而 DES分布式破解,MD5分布式破解涉及到客户端与服务器端的数据传输、密钥分片,通信处理等.下面将具体介绍每个功能是如何实现的.
2.3.1 DES加密.
DES加密分为对字符串加密和文件加密,在微软的VisualStudio 2010中,提供了许多加密函数,明白其原理后,我们只需要直接调用即可.以下语句为 DES加密字符串的功能函数关键代码及分析,文件加密与其类似,在此不再赘述.
byte[]btKey=Encoding.Default.GetBytes(key);//指定密钥
byte[]btIV=Encoding.Default.GetBytes(iv); //初始化向量
DESCryptoServiceProvider des = new DESCryptoServiceProvider();//DES加密类
MemoryStream ms=new MemoryStream();//内存流
byte[]inData=Encoding.Default.GetBytes(sourceString); //编码需要加密的字符串
CryptoStream cs=new CryptoStream(ms,des. CreateEncryptor(btKey,btIV),CryptoStreamMode.Write)//创建加密流
cs.Write(inData,0,inData.Length);//写入加密数据cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());//返回加密后的字符串
2.3.2 MD5哈希
MD5哈希值的计算方法代码如下,其中 textBox4为输入明文的文本框,textBox5为显示 MD5值的文本框.
byte[]result=Encoding.Default.GetBytes(this.textBox4.Text. Trim());
MD5 md5=new MD5CryptoServiceProvider();//实例化MD5类
byte[]output=md5.ComputeHash(result);//计算 Hash值
this.textBox5.Text=BitConverter.ToString(output).Replace ("-","");//显示结果
2.3.3 DES破解
服务器端的主要任务是将加密后的密文发送给客户端,因此破解 DES的功能主要由客户端实现,由于 DES为对称加密,其破解过程跟加密过程相同,在此不再附上代码.
2.3.4 MD5破解
MD5破解时,服务器端任务主要是将需要破解的哈希值发给客户端,并将数据进行分片,即将要破解的数字从小到大分段发送给不同的客户端进行处理,客户端即时反馈破解情况,接收新的任务处理,直到破解完成.其中客户端的破解程序如下:
start_num=Get_StartNumber();//获取分片开始数字
mm=listBox1.Selected Item.ToString();//mm为需要破解的哈希值
long temp=0;//临时变量
bool Success=false;//布尔变量
end_num=start_num+100; //分片破解范围
for(long t=start_num;t<=end_num;t++)
{
string ss=t.ToString();
byte[]InPut=Encoding.Default.GetBytes(ss);
MD5 md5=new MD5CryptoServiceProvider();
byte[]OutPut=md5.ComputeHash(InPut);//计算 Hash值
end=BitConverter.ToString(OutPut).Replace("-","");
if(end==mm)//与需要破解的哈希值进行比较
{
temp=t;
listBox3.Items.Add(Convert.ToString(DateTime.Now));
listBox3.Items.Add("破解成功,结果为:"+temp. ToString());
textBox1.Text="md5ok"+temp.ToString();//返回成功消息
Success=true;
break;
}
}
If(Success==false)
listBox3.Items.Add("该分片破解完成,请求新的任务 ");
textBox1.Text="任务请求 ";//请求新的分片
3 实验结果分析
在实验过程中,假设明文为:33445566,那么该密钥空间具有 108个数据;将密钥空间分为 10片,那么每片有 107个数据.MD5(16进制)为:
D36C71408784D8123DE29768F24DF75E.
根据不同客户端数量,MD5破解时间的不同,绘制出下表 3-1:
表 3-1 破解时间
从表中可以看出,对于同一个 MD5值,在密钥空间一定,分片数一定的情况下,随着客户端数量的增加,MD5破解时间逐渐减少.如果只有一台客户机,破解时间需要 363秒,当客户端数量增加时,破解时间明显缩短.可见,分布式计算在暴力破解中具有明显的优越性.同时,它使得需要巨大计算量的任务在分解成颗粒度合适的子任务后在时间上具有优越性,能缩短完成任务的时间.
4 结语
本文在充分研究了分布式的基本理论与算法的基础上,以对称密码学算法 DES与消息摘要函数 MD5为切入点,研究了基于分布式网络密钥破解,设计实现了一个适于小密钥空间的密码破解系统.系统软件具有很强的通用性,只要对软件中的数据库模块与解密算法修改之后就可以对另外一种密码学算法进行暴力破解.
〔1〕周宇昌,熊之凡.空间信息站初探[J].空间电子技术,2004 (1):7-15.
〔2〕汪军,丰洪才.高校校园网带宽优化管理的实践与探讨[J].计算机安全,2008(6):78-80.
〔3〕SANGFOR AC4.3 用户手册[EB/OL]2012-09-01.http: //www.sangfor.com/product_doc/manual/SANGFOR_ AC_v4.3_Manual_CN_201 20901_PDF.zipSETI Institute Online,http://www.seti-inst.edu/science/setiathome.htm l.
〔4〕龙崇剑.分布式环境下密码计算平台的研究[D].上海:上海交通大学,2007.
〔5〕Eugene.H.Spafford.The Internet Worm Program:An Analysis[J].ACM Computer Communication Review, 1989.
TP393.08
A
1673-260X(2014)08-0018-02