信息安全技术实验报告
——创建信息加解密系统
一:实验内容:
用AES算法实现对文件的加解密,创建一个简单的文件加解密系统。
二:实验要求:
写出基本的实验步骤,如何实现,主要代码,以及实验结果。要求结构清晰,步骤完整,思路明确。
掌握AES算法的基本原理,了解文件加解密流程。
三:详细实验步骤:
1.AES算法简介:
AES(The Advanced Encryption Standard)是美国国家标准与技术研究所用于加密电子数据的规范。它被预期能成为人们公认的加密包括金融、电信和政府数字信息的方法。本文展示了 AES的概貌并解析了它使用的算法。包括一个完整的C#实现和加密.NET数据的举例。在读完本文后你将能用AES加密、测试基于AES的软件并能在你的 系统中使用AES加密。
美国国家标准与技术研究所(NIST)在20##年5月26日建立了新的高级数据加密标准(AES)规范。本文中我将提供一个用C#编写 的的能运行的 AES 实现,并详细解释到底什么是 AES 以及编码是如何工作的。我将向您展示如何用 AES 加密数据并扩展本文给出的代码来开发一个商业级质量的 AES 类。我 还将解释怎样把 AES 结合到你的软件系统中去和为什么要这么做,以及如何测试基于 AES 的软件。
注意本文提供的代码和基于本文的任何其它的实现都在联邦加密模块出口控制的适用范围之内(详情请参看 Commercial Encryption Export Controls )。
AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入 数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。Figure 1 显示了 AES 用192位密钥对一个16位字节数据块进行加密和解密的情形。
2.算法描述:
1.1.传统的AES;
AES算法属于分组密码算法,它的输入分组、输出分组以及加/ 解密过程中的中间分组都是128比特。密钥的长度K为128,192 或256 比特。用Nk=4,6,8 代表密钥串的字数(1 字=32 比特) ,在本文编制的程序中由用户选定。用Nr 表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系见表1) 。每一轮都需要一个和输入分组具有同样长度(128 比特) 的扩展密钥Ke的参与。由于外部输入的加密密钥K长度有限,所以在AES中要用一个密钥扩展程序( KeyExpansion) 把外部密钥K扩展成更长的比特串,以生成各轮的加密密钥。
1.2.本系统采用的算法:
简单来说,我是用AES的方式加解密,唯一不同点,我将原本AES的解密方式改成加密,因此,把原本加密的方式自然变成解密方式。
加密流程 解密流程
(1)位元组代换(ByteSub transformation):
位元组代换是一个以位元组为单位的非线性的代换运算它是可逆的(invertable)。
SubByte:
InvSubByte:
实现代码:
int subboxs[256]=
{
99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118,
202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192,
183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21,
4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117,
9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132,
83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207,
208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168,
81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210,
205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115,
96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219,
224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121,
231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8,
186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138,
112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158,
225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223,
140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22
};
void Sbox(int *p,int n)
{
for(int i=0;i<n;i++)
p[i]=subboxs[p[i]];
}
(2)移列转换( ShiftRow transformation ):
在这个转换中,State的每一列以不同的偏移量做环状位移,第0列不动,第一列位移C1个位元组,第二列位移C2个位元组,第三列位移C3个位元组。位移的偏移量C1,C2,C3取决于区块的数目(Nb)。
Shift Rows:
InvSifft Rows:
实现代码:
void shift(int *p)
{
int n=4,temp;
for(int i=0;i<4;i++){
for(int k=0;k<i;k++){
for(int j=0;j<4-1;j++){
temp=p[i*n+j];
p[i*n+j]=p[i*n+j+1];
p[i*n+j+1]=temp;
}
}
}
}
(3)混行转换(MixColumn transformation):
在这个转换中,把State当作一个在GF(28)中的多项式并且对一个固定的多项式
c(x)作乘法,如果发生溢位,则再模余x4+1。
MixColumn:
InvMixColumn:
实现代码:
void mixcolum(int *p)
{
int *q;
q=new int[4*4];
for(int k=0;k<4;k++){
for(int i=0;i<4;i++){
bitset<8> temp;
for(int j=0;j<4;j++){
bitset<8> bit(p[j*4+k]);
bitset<9> test(p[j*4+k]);
bitset<8> conf(0x1b);
bitset<8> self(p[j*4+k]);
if(mix[i*4+j]==1){
temp^=bit;
}
else if(mix[i*4+j]==2)
{
bit<<=1;
test<<=1;
if(test.test(8))
bit^=conf;
temp^=bit;
}
else
{
bit<<=1;
test<<=1;
if(test.test(8))
bit^=conf;
bit^=self;
temp^=bit;
}
}
q[i*4+k]=temp.to_ulong();
}
}
for(int l=0;l<16;l++)
p[l]=q[l];
}
(4)回合密钥相加( Round Key Addition):
这个运算主要是把每一个回合密钥(Round Key)透过简单的bitwise EXOR加入到每一个运算中所产生的中间值。
In the AddRoundKey() transformation, a Round Key is added to the State by a simple bitwise XOR operation. Each Round Key consists of Nb words from the key schedule. Those Nb words are each added into the columns of the State, such that
实现代码:
int aroundkeys[12]=
{
0x01,0x02,0x04,0x08,
0x10,0x20,0x40,0x80,
0x1b,0x36,0x6c,0x6c
};
void updatekey(int *p)
{
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
bitset<8> temp1(p[i+j*4]);
bitset<8> temp2(mixkeys[j]);
temp1^=temp2;
mixkeys[j]=temp1.to_ulong();
p[i+j*4]=temp1.to_ulong();
}
}
}
void copy(int n,int *key){
for(int i=0;i<16;i++)
aroundkeytalbes[n][i]=key[i];
}
void createaroundkeytables(int *key){
for(int i=0;i<11;i++){
copy(i,key);
getmixkey(key);
rotword(mixkeys);
Sbox(mixkeys,4);
xorrcon(mixkeys,i);
updatekey(key);
}
}
四:运行结果:
在message处输入明文,key处输入密钥,点击encryption
在chipertext处得到密文
把密文放在下面的message处,点击decryption得到明文
五:实验总结:
本实验用相反的方法实现AES算法,实现简单的文字加密程序,处理简单,但求另一种思路。
xxxx大学
计算机科学与工程学院
专业实习报告
学生姓名:
学 号:
专 业:
班 级:
指导教师:
实习时间: 2015.6.27-2015.7.1
完成日期: 20##年7月1日
病毒木马攻击原理研究与简单实践
实习时间:2015年6月27日至2015年7月1日
实习地点:软件实验室
实验环境:装有win8系统计算机一台 vmware虚拟机 C++软件
学习目的:了解木马病毒的原理、特征、种类、伪装、挂马及其防范等,利用已学的专业课程,探究木马病毒的原理和方式,为毕业设计中实现模拟病毒木马的攻击与防范流程的心得体会打基础。
实习进程及具体内容:
实习的过程中我听从指导老师的建议由木马和病毒的定义和基本原理入手,通过上网查阅资料、虚拟机模拟操作等手段逐步拨开迷雾,对木马病毒的运作、传播、隐藏等行为进行了深度的研究与总结,从而理解了从病毒入侵到病毒清除和防御的每个步骤及原理,并能够对整体过程进行剖析。
具体内容如下:
1 木马病毒的概述及概述
1.1木马的的定义
木马的全称是“特洛伊木马”,是一种新型的计算机网络病毒程序,是一种基于远程控制的黑客工具,它利用自身具有的植入功能,或依附具有传播功能的病毒,进驻目标机器监听、修改。窃取文件。
1.2木马的基本特征
1、隐蔽性是其首要的特征
当用户执行正常程序时,在难以察觉的情况下,完成危害影虎的操作,具有隐蔽性。它的隐蔽性主要体现在6个方面:1.不产生图标、2.文件隐藏、3.在专用文件夹中隐藏、4.自动在任务管理其中隐形、5.无声无息的启动、6.伪装成驱动程序及动态链接库
2、它具有自动运行性
它是一个当你系统启动时即自动运行的程序,所以它必需潜入在你的启动配置文件中,如win.ini、system.ini、winstart.bat以及启动组等文件之中。
3、木马程序具有欺骗性
木马程序要达到其长期隐蔽的目的,就必需借助系统中已有的文件,以防被你发现,它经常使用的是常见的文件名或扩展名,如“dll\win\sys\explorer等字样,或者仿制一些不易被人区别的文件名,如字母“l”与数字“1”、字母“o”与数字“0”,常修改基本文件中的这些难以分辨的字符,更有甚者干脆就借用系统文件中已有的文件名,只不过它保存在不同路径之中。还有的木马程序为了隐藏自己,也常把自己设置成一个ZIP文件式图标,当你一不小心打开它时,它就马上运行。等等这些手段那些编制木马程序的人还在不断地研究、发掘,总之是越来越隐蔽,越来越专业,所以有人称木马程序为“骗子程序”。
4、具备自动恢复功能
现在很多的木马程序中的功能模块已不再是由单一的文件组成,而是具有多重备份,可以相互恢复。
5、能自动打开端口
应服务器客户端的通信手段,利用TCP/IP协议不常用端口自动进行连接,开方便之“门”
6、功能的特殊性
通常的木马的功能都是十分特殊的,除了普通的文件操作以外,还有些木马具有搜索cache中的口令、设置口令、扫描目标机器人的IP地址、进行键盘记录、远程注册表的操作、以及锁定鼠标等功能,上面所讲的远程控制软件的功能当然不会有的,毕竟远程控制软件是用来控制远程机器,方便自己操作而已,而不是用来黑对方的机器的。
1.3木马的传播途径
1.利用操作系统和浏览器漏洞传播。
2.利用移动存储设备(U盘)等来传播。
3.利用第三方软件(如realplayer,迅雷,暴风影音等)漏洞传播
4.利用ARP欺骗方式来传播
5利用电子邮件,QQ,MSN等通讯软件传播
6.利用网页挂马,嵌入恶意代码来传播
1.4木马病毒的危害
1.利用通讯软件盗取用户个人信息。
黑客可以利用木马病毒盗取用户的如QQ,MSN等账号进行盗取用户好友个人信息等。
2.盗取网游账号,威胁我们的虚拟财产安全
黑客利用木马病毒盗取用户游戏账户密码,并将用户游戏中的装备或游戏币转移,照成损失。
3.盗取用户的网银信息,威胁我们的真是财产安全
黑客利用木马,采用键盘记录等方法盗取用户的个人银行信息,直接到市用户的经济损失
4.给电脑打开后门,使电脑可能被黑客控制
2木马病毒的现状
目前,木马病毒结合了传统病毒的破坏性,产生了更有危害性的混合型木马病毒。有关报告显示:截止20##年上半年,所截获的新增病毒总计有111474种,而木马病毒占总数的64.1%。其中,盗号木马占总木马数的70%,从数据上可以看出,木马数量的成倍增长,变种称出不穷,使得计算机用户的处境更加危险。
下表为木马病毒的种类与特性:
3 木马病毒的基本原理
木马病毒通常包含两个部分:服务器和客户端。服务端植入危害主机,而施种者利用客户端侵入运行了服务端的主机。木马的服务端一旦启动,受害主机的一个或几个端口即对施种者敞开,使得 施种者可以利用这些端口受害主机,开始执行入侵操作。如图:
图表 1 木马病毒传播基本原理
1、配置、传播木马
一般来说一个设计成熟的木马都有木马配置程序,从具体的配置内容看,主要是为了实现伪装和信息反馈两方面的功能。
传播方式:
木马的传播方式主要有两种:一种是通过E-MAIL,控制端将木马程序以附件的形式夹在邮件中发送出 去, 收信人只要打开附件系统就会感染木马;另一种是软件下载,一些非正规的网站以提供软件下载为 名义, 将木马捆绑在软件安装程序上,下载后,只要一运行这些程序,木马就会自动安装。
2、运行木马
服务端用户运行木马或捆绑木马的程序后,木马就会自动进行安装。首先将自身拷贝到WINDOWS的 系统文件夹中(C:\WINDOWS或C:\WINDOWS\SYSTEM目录下),然后在注册表,启动组,非启动组中设置好木马的触发条件,这样木马的安装就完成了。
木马被激活后,进入内存,并开启事先定义的木马端口,准备与控制端建立连接。这时服务端用 户可以在MS-DOS方式下,键入NETSTAT -AN查看端口状态,一般个人电脑在脱机状态下是不会有端口 开放的,如果有端口开放,你就要注意是否感染木马了。
3、信息反馈
木马配置程序将就信息反馈的方式或地址进行设置,如设置信息反馈的邮件地址,IRC号 ,ICO号等等。
4、建立连接
一个木马连接的建立首先必须满足两个条件:一是服务端已安装了木马程序;二是控制端,服务端都要在线。在此基础上控制端可以通过木马端口与服务端建立连接值得一提的要扫描整个IP地址段显然费时费力,一般来说控制端都是先通过信息反馈获得服务端的IP地址,由于拨号上网的IP是动态的,即用户每次上网的IP都是不同的。
5、远程控制
木马连接建立后,控制端端口和木马端口之间将会出现一条通道,控制端上的控制端程序可藉这条通道与服务端上的木马程序取得联系,并通过木马程序对服务端进行远程控制。
6、木马病毒的传播及植入
由于木马病毒是一种非自我复制的恶意代码,因此她需要依靠用户向其他人发送其拷贝。木马病毒可以作为电子邮件附件或者隐藏在用户与其他用户进行交互的文档或者其他文件中。他们还可以被其他恶意代码所携带,如蠕虫。木马病毒有时也会隐藏在从互联网上下载的捆绑软件中。当用户安装此软件是,病毒就会在后台秘密安装。木马植入技术主要是指木马病毒利用各自途径进入到目标机器的具体方法。
7、木马病毒植入技术
木马病毒植入技术,主要是指木马病毒利用各种途径进入目标机器的具体实现方法。
(1)利用电子邮件进行传播:攻击者将木马程序伪装成E-mail附件的形式发送过去,收信方只要查看邮件附件就会使木马程序得到运行并安装进入系统。
(2)利用网络下载进行传播:一些非正规的网站以提供软件下载为名,将木马捆绑在软件安装程序上,下载后,只要运行这些程序,木马就会自动安装。
(3)利用网页浏览传播:这种方法利用Java Applet编写出一个HTML网页,当我们浏览该页面时,JavaApplet会在后台将木马程序下载到计算机缓存中,然后修改注册表,使指向木马程序。
(4)利用一些漏洞进行传播:如微软著名的IIS服务器溢出漏洞,通过一个IISHACK攻击程序即可把IIS服务器崩溃,并且同时在受控服务器执行木马程序。由于微软的浏览器在执行Script脚本上存在一些漏洞,攻击者可以利用这些漏洞传播病毒和木马,甚至直接对浏览者主机进行文件操作等控制。
(5)远程入侵进行传播:黑客通过破解密码和建立IPC远程连接后登陆到目标主机,将木马服务端程序拷贝到计算机中的文件夹(一般在C:\WINDOWS\system32或者C:\WINNT\sys-tem32)中,然后通过远程操作让木马程序在某一个时间运行。
(6)基于DLL和远程线程插入的木马植入:这种传播技术是以DLL的形式实现木马程序,然后在目标主机中选择特定目标进程(如系统文件或某个正常运行程序),由该进程将木马DLL植入到本系统中。
(7)利用蠕虫病毒传播木马:网络蠕虫病毒具有很强的传染性和自我复制能力,将木马和蠕虫病毒结合在一起就可以大大地提高木马的传播能力。结合了蠕虫病毒的木马利用病毒的特性,在网络上进行传播、复制,这就加快了木马的传播速度。
4木马病毒的防范
计算机病毒的防范措施针对病毒的发展趋势, 从上面的讨论知道木马程序是非常危险的,计算机一旦感染病毒是非常危险的,所以在前人研究的基础上我认为以下几种方法也有助于病毒的防范。如:
(1)不随意打开来历不明的邮件,阻塞可疑邮件。
(2)不随意下载来历不明的软件。
(3)及时修补漏洞和关闭可疑的端口。
(4)尽量少用共享文件夹。
(5)运行实时监控系统。
(6)经常升级系统和更新杀毒软件。
(7)限制不必要的具有传输能力的文件。
(8)关闭不常使用端口。
我国计算机网络安全形势十分严峻, 采用有效的病毒防范措施显得尤其重要。计算机网络中最主要的软硬件实体就是服务器和工作站, 防治病毒首先要考虑这两部分。
实习感想:我能够凭借自己微薄的能力完成这次实习,主要归功于来自导师的耐心教导与资料提供,在此感谢我的导师!此次实习让我意识到了我知识的欠缺以及团队协作的重要性,日后定会着重关注这两方面的培养!
参考文献
[1]张小磊.计算机病毒诊断与防治[M].北京:中国环境科学出版社.2007.
[2]张又生 .计算机病毒与木马程序剖析[M].北京:科海电子出版社.2007.
[3]王文寿,王珂 编著.网管必备宝典-网络安全[M].北京:人民邮电出版社.2007.
[4]李匀 编著.网络渗透[M].北京:电子工业出版社.2007.
信息安全技术实验报告创建信息加解密系统一实验内容用AES算法实现对文件的加解密创建一个简单的文件加解密系统二实验要求写出基本的实验…
信息安全基础实习报告姓名班级学号指导老师1问题描述通信系统模型反映了各种通信系统的共同特性对通信系统模型的研究有助于找出信息传输过…
中国地质大学江城学院信息安全实验报告姓名专业班级学号指导教师1目录实验1RAR文件密码破解3实验2用C语言编程实现凯撒密码加密4实…
西安航空职业技术学院课程设计任务书课题名称网络与信息安全实训设计内容1文档的加密2网络服务器的安全配置3数据备份与恢复4网络安全防…
《浙江大学优秀实习总结汇编》信息安全技术岗位工作实习期总结转眼之间,两个月的实习期即将结束,回顾这两个月的实习工作,感触很深,收获…
《浙江大学优秀实习总结汇编》信息网络安全监察岗位工作实习期总结转眼之间,两个月的实习期即将结束,回顾这两个月的实习工作,感触很深,…
实习报告姓名学号学院系环境科学与安全工程专业安全工程班级指导教师等实习名称认识实习实习时间20xx111220xx1126实习单位…
西安航空职业技术学院课程设计任务书课题名称网络与信息安全实训设计内容1文档的加密2网络服务器的安全配置3数据备份与恢复4网络安全防…