信息安全综合实践

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录实验一网络通信安全

1.1实验目的

1.2实验内容

1.3相关知识

1.4实验成果

1.5实验小结

实验二网络攻防

2.1实验目的

2.2实验内容

2.3实验原理

2.4实验步骤

2.5实验小结

实验三Web服务器配置

3.1实验目的

3.2实验要求

3.3实验内容

3.4实验小结

实验四信息系统安全

4.1实验目的

4.2实验内容

4.3开发环境

4.4系统实现

4.5实验小结

实验一网络通信安全

1.1实验目的

通过本章的学习,使学生掌握密码学在通信安全中的具体应用。基本要求能够实现客户服务器通信,能够使用AES算法实现消息的加密与解密,对优秀的学生要求能够实现数字签名的生成与验证

1.2实验内容

(1)实现客户服务器之间的通信;

(2)发送方传输的消息使用AES加密,接收方对消息解密获取明文;(3)发送方传输的消息使用HMAC处理,接收方验证消息的完整性;(4)发送方对传输的消息使用RSA进行签名,接收方验证数字签名。

1.3相关知识

1.3.1对称密码AES

1997年美国国家标准和技术委员会NIST宣布征集一个新的对称密钥分组密码算法,以取代DES作为新的加密标准,新的算法被命名为高级加密标准AES。经过角逐,由比利时密码学家Daemen和Rijment共同设计的Rijndael算法成为最后赢家。

目前的AES算法是一个迭代型分组密码,其分组长度和密钥长度都可变,各自支持128比特、192比特、256比特。

与DES相同,AES也是由最基本的变换单位——“轮”多次迭代而成的,当分组长度和密钥分组长度均为128bit时,轮数为N=10。AES的轮(除最后一轮)变换由四个不同的变换组成,这些变化被称之为内部轮函数,可以表示成如下形式:

Round(State,RoundKey){

SubBytes(State);

ShiftRows(State);

MixColumns(State);

AddRoundKey(State,RoundKey);}

State表示消息矩阵;RoundKey表示轮密钥矩阵;SubBytes(State)为字节代替变换、ShiftRows(State)为行移位变换、MixColumns(State)为列混合变换、AddRoundKey(State,RoundKey)为与子密钥异或。

最后一轮略微不同,将其记为FinalRoundKey(State,RoundKey),相当于前面的Round(State,RoundKey)去掉MixColumns(State)。

对于加密来说,输入到第一轮的State就是明文消息矩阵,最后一轮输出的State就是对应的密文消息矩阵。

AES的解密变换和加密变换时互逆的,轮函数也分为4层,分别为

InvShiftRow(State)逆行移位变换、InvByteSub(State)逆字节代替变换、AddRoundKey(State,RoundKey)与子密钥位异或和InvMixColumn(State)逆列混合变换,可表示为:

InvRound(State,RoundKey){

InvShiftRow(State);

InvByteSub(State);

AddRoundKey(State,RoundKey);

InvMixColumn(State);}

AES加密过程

1.3.2公钥密码RSA

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和

LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

算法描述:

(1)密钥的产生

选择两个保密的大素数p和q;计算n=p*q,φ(n)=(p-1)(q-1),其中,φ(n)是n的欧拉函数值;选一整数e,满足1

(2)加密

加密时首先将明文比特串分组,是的每个分组对应的十进制数小于n,然后对每个明文分组m,做加密运算:c=m mod n。

(3)解密

对密文分组的解密运算为:m=c mod n。

RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

1.4实验成果

我们使用JA V A语言(eciple工具)完成实验。

1.4.1代码分析

思路分析:首先完成客户服务器通信模块,然后插入加密模块

下面贴出部分代码以供分析

发送部分:

package kehuduan; //客户端的程序代码

import java.awt.BorderLayout;

import .*;

import javax.crypto.Cipher;

import javax.crypto.spec.SecretKeySpec;

import javax.swing.JPanel;

import javax.swing.JFrame;

import java.awt.Panel;

import java.awt.Rectangle;

import java.awt.GridBagLayout;

import javax.swing.JLabel;

import javax.swing.JTextField;

import javax.swing.JButton;

import .DatagramPacket;

import .DatagramSocket;

import .InetAddress;

import java.security.Key;

public class Kehuduan extends JFrame {

private static final long serialVersionUID = 1L;

private JPanel jContentPane = null;

private JLabel jLabel = null;

private JTextField jTextField = null;

private JTextField jTextField1 = null;

private JButton jButton = null;

private JLabel jLabel1 = null;

public Kehuduan() {

super();

initialize();

}

private void initialize() {

this.setSize(398, 258);

this.setContentPane(getJContentPane());

this.setTitle("客户端");

}

private JPanel getJContentPane() {

if (jContentPane == null) {

jLabel1 = new JLabel();

jLabel1.setBounds(new Rectangle(21, 61, 116, 21));

相关文档
最新文档