当前位置:文档之家› 201641843222-李烁-网络安全实验报告

201641843222-李烁-网络安全实验报告

1实验一1.1实验目的、要求1、掌握及理解常用的对称分组加密算法的基本流程,如置换、异或、代替操作。

2、深入分析常见对称分组加密算法包括DES、AES。

1.2实验原理DES 使用一个56 位的密钥以及附加的8 位奇偶校验位(每组的第8位作为奇偶校验位),产生最大64 位的分组大小。

这是一个迭代的分组密码,使用称为Feistel 的技术,其中将加密的文本块分成两半。

使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。

DES 使用16 轮循环,使用异或,置换,代换,移位操作四种基本运算。

三重DES(3DES),使用168 (56*3)位的密钥对资料进行三次加密(3次使用DES)的一种机制;它通常(但非始终)提供极其强大的安全性。

如果三个56 位的子元素都相同,则三重DES 向后兼容DES。

AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。

(Rijndael 加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:AddRoundKey —矩阵中的每一个字节都与该次轮秘钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。

SubBytes —通过个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

ShiftRows —将矩阵中的每个横列进行循环式移位。

MixColumns —为了充分混合矩阵中各个直行的操作。

这个步骤使用线性转换来混合每列的四个字节。

最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。

1.3主要设备、器材硬件环境:Intel i7/4GRAM/500G HDD软件环境:Windows 7/Visual C++ 6 1.4实验步骤及原始数据记录2实验二2.1实验目的、要求1、理解流密码对数据加解密处理模式与分组密码的差异,理解其关键技术原理。

2、编程实现RC4算法。

2.2实验原理序列密码也称为流密码(Stream Cipher),它是对称密码算法的一种。

序列密码具有实现简单、便于硬件实施、加解密处理速度快、没有或只有有限的错误传播等特点,因此在实际应用中,特别是专用或机密机构中保持着优势,典型的应用领域包括无线通信、外交通信。

1949年Shannon证明了只有一次一密的密码体制是绝对安全的,这给序列密码技术的研究以强大的支持,序列密码方案的发展是模仿一次一密系统的尝试,或者说“一次一密”的密码方案是序列密码的雏形。

如果序列密码所使用的是真正随机方式的、与消息流长度相同的密钥流,则此时的序列密码就是一次一密的密码体制。

若能以一种方式产生一随机序列(密钥流),这一序列由密钥所确定,则利用这样的序列就可以进行加密,即将密钥、明文表示成连续的符号或二进制,对应地进行加密,加解密时一次处理明文中的一个或几个比特。

在序列密码中,密钥流由密钥流发生器f产生:zi=f(k,si),这里的si是加密器中存储器(记忆元件)在i时刻的状态。

根据加密器中的记忆元件si的存贮状态是否依赖于明文字符,序列密码可进一步分成同步和自同步两种。

如果si独立于明文字符则称为同步流密码,否则称为自同步流密码。

分组密码以一定大小作为每次处理的基本单元,而序列密码则是以一个元素(一个字母或一个比特)作为基本的处理单元。

序列密码是一个随时间变化的加密变换,具有转换速度快、低错误传播的优点,硬件实现电路更简单;其缺点是:低扩散(意味着混乱不够)、插入及修改的不敏感性。

分组密码使用的是一个不随时间变化的固定变换,具有扩散性好、插入敏感等优点;其缺点是:加解密处理速度慢、存在错误传播。

序列密码涉及到大量的理论知识,提出了众多的设计原理,也得到了广泛的分析,但许多研究成果并没有完全公开,这也许是因为序列密码目前主要应用于军事和外交等机密部门的缘故。

目前,公开的序列密码算法主要有RC4、SEAL等。

RC4加密算法的计算公式RC4算法的原理很简单,包括初始化算法和伪随机子密码生成算法两大部分。

在初始化的过程中,密钥的主要功能是将S-box搅乱,i确保S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。

而不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,并且,该序列是随机的得到的子密码sub_k用以和明文进行xor运算,得到密文,解密过程也完全相同。

2.3主要设备、器材硬件环境:Intel i7/4GRAM/500G HDD软件环境:Windows 7/Visual C++ 62.4实验步骤及原始数据记录3实验三3.1实验目的、要求1、掌握及理解消息认证机制对网络安全的重要性。

2、掌握消息认证机制的一般原理与方法。

3、掌握常见的安全散列函数用法。

4、深入分析常见的安全散列函数SHA、MD5。

3.2实验原理消息认证(message authentication)就是验证消息的完整性,当接收方收到发送方的报文时,接收方能够验证收到的报文是真实的和未被篡改的。

它包含两层含义:一是验证信息的发送者是真正的而不是冒充的,即数据起源认证;二是验证信息在传送过程中未被篡改、重放或延迟等。

消息认证是指通过对消息或者消息有关的信息进行加密或签名变换进行的认证,目的是为了防止传输和存储的消息被有意无意的篡改,包括消息内容认证(即消息完整性认证)、消息的源和宿认证(即身份认证0)、及消息的序号和操作时间认证等。

它在票据防伪中具有重要应用(如税务的金税系统和银行的支付密码器)。

消息认证所用的摘要算法与一般的对称或非对称加密算法不同,它并不用于防止信息被窃取,而是用于证明原文的完整性和准确性,也就是说,消息认证主要用于防止信息被篡改。

消息内容认证常用的方法:消息发送者在消息中加入一个鉴别码(MAC、MDC等)并经加密后发送给接受者(有时只需加密鉴别码即可)。

接受者利用约定的算法对解密后的消息进行鉴别运算,将得到的鉴别码与收到的鉴别码进行比较,若二者相等,则接收,否则拒绝接收。

相对于密码系统,认证系统更强调的是完整性。

消息由发送者发出后,经由密钥控制或无密钥控制的认证编码器变换,加入认证码,将消息连同认证码一起在公开的无扰信道进行传输,有密钥控制时还需要将密钥通过一个安全信道传输至接收方。

接收方在收到所有数据后,经由密钥控制或无密钥控制的认证译码器进行认证,判定消息是否完整。

消息在整个过程中以明文形式或某种变形方式进行传输,但并不一定要求加密,也不一定要求内容对第三方保密。

攻击者能够截获和分析信道中传送的消息内容,而且可能伪造消息送给接收者进行欺诈。

攻击者不再像保密系统中的密码分析者那样始终处于消极被动地位,而是主动攻击者。

认证编码器和认证译码器可以抽象为认证方法。

一个安全的消息认证系统,必须选择合适的认证函数,该函数产生一个鉴别标志,然后在此基础上建立合理的认证协议,使接收者完成消息的认证。

在消息认证中,消息源和宿的常用认证方法有两种。

一种是通信双方事先约定发送消息的数据加密密匙,接收者只需要证实发送来的消息是否能用该密匙还原成明文就能鉴别发送者。

如果双方使用同一个数据加密密匙,那么只需在消息中嵌入发送者识别符即可。

另一种是通信双方实现约定各自发送消息所使用的通行字,发送消息中含有此通行字并进行加密,接收者只需判别消息中解密的通行字是否等于约定的通行字就能鉴别发送者。

为了安全起见,通行字应该是可变的。

消息的序号和时间性的认证主要是阻止消息的重放攻击。

常用的方法有消息的流水作业、链接认证符随机树认证和时间戳等。

消息认证中常见的攻击和对策:①重放攻击:截获以前协议执行时传输的信息,然后在某个时候再次使用。

对付这种攻击的一种措施是在认证消息中包含一个非重复值,如序列号、时戳、随机数或嵌入目标身份的标志符等。

②冒充攻击:攻击者冒充合法用户发布虚假消息。

为避免这种攻击可采用身份认证技术。

③重组攻击:把以前协议执行时一次或多次传输的信息重新组合进行攻击。

为了避免这类攻击,把协议运行中的所有消息都连接在一起。

④篡改攻击:修改、删除、添加或替换真实的消息。

为避免这种攻击可采用消息认证码MAC或hash函数等技术。

【SHA算法描述】SHA算法,即安全散列算法(Secure Hash Algorithm)是一种与MD5同源的数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。

SHA算法能计算出一个数位信息所对应到的,长度固定的字串,又称信息摘要。

而且如果输入信息有任何的不同,输出的对应摘要不同的机率非常高。

因此SHA 算法也是FIPS所认证的五种安全杂凑算法之一。

SHA实际上是一系列算法的统称,分别包括:SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。

后面4中统称为SHA-2,事实上SHA-224是SHA-256的缩减版,SHA-384是SHA-512的缩减版。

【MD5算法描述】一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

MD5由美国密码学家罗纳德·李维斯特设计,于1992年公开,用以取代MD4算法。

对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

3.3主要设备、器材硬件环境:Intel i7/4GRAM/500G HDD软件环境:Windows 7/Visual C++ 6 3.4实验步骤及原始数据记录4实验四4.1实验目的、要求1、掌握及理解公钥加密算法的基本原理、应用场景。

2、掌握及理解常见的公钥加密算法,如RSA、Diffie-Hellman。

2、编程实现RSA公钥加密算法。

4.2实验原理RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。

1987年首次公布,当时他们三人都在麻省理工学院工作。

RSA就是他们三人姓氏开头字母拼在一起组成的。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

今天只有短的RSA钥匙才可能被强力方式解破。

到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。

相关主题