计算机网络安全与管理实验(3)

2019-02-17 18:06

令A`表示含N`个“字母”或“字符”的密文字母表,抽象地可用整数集ZN`={0,1,…,N`-1} 来表示。密文单元或组为c=(c0,c1,…,cL`-1)(L`个),cl`∈ZN`, 0≤l`≤L-1。C 是定义在ZN` L`上

地随机变量。密文空间C= ZN` L`。

一般地,明文和密文由同一字母表构成,即A`=A。

加密变换是从明文空间到密文空间地映射f:P→C。加密变换通常是在密钥控制下变化的, 因此,一般记为

c=f(m,k)=Ek(m) k∈K m∈P c∈C (1) K 为密钥空间。

假定f 是一个单射,对固定地k∈K,令Ck={c=f(m,k)=EK(m)|m∈P}∈C,因此对给定的 密文组c∈Ck,有且仅有一个对应的明文组m,也就是说,对于此函数f,存在逆映射f-1: Ck→P,使

f-1(c)=f-1{f(m)}=m m∈P c∈Ck (2) 即f-1 为解密变换。

一个密码系统就是在f 作用下由ZN L到ZN`

L`的映射,在这种意义上,称此种密码为代换

密码(substitution cipher),如图1 所示。L=1 时,称作单字母代换,也称作流密码(stream cipher)。L>1 时,称作多码代换,也称作分组密码(block cipher)。

一般地,选择相同的明文和密文字母表。此时,若L=L`,则映射f 可构造成一对一的映射,密码无数据扩展。若LL`,则明文数据将被压缩,此时映射f 不可能构造成可逆映射,从而从密文有时也就 无法完全恢复出原明文消息,因此保密通信中必须要求L≤L`。但L>L`的映射可以用在认证 系统中。在A=A`,N=N`,和L=1 时,若对所有明文字母,都用一种固定的代换进行加密,则称这种密码为单表代换(monoalphabetic substitute)。若用一个以上的代换表进行加密,这就称作是多表代换(ployalphabetic substitute)。这是古典密码中的两种重要体制,曾被 广泛地使用过。在代换密码中有一种特殊的代换密码,即代换并没有改变明文字母,而只改变了它们的位置,密码学史上把这种代换密码称作置换密码(permutation cipher),又称换位密码(transposition cipher)。下面是置换密码的一个详细描述。

设P=C=ZNL,K 表示所有的{0,1,..,L-1}上的置换构成的集合。对每一个给定的密钥 k=π( 一个置换) , 置换密码的加密变换定义为

Eπ(m0,m1,?,mL-1)=(mπ(0),mπ(1),?,mπ(L-1))=(c0,c1,?,cL-1) 。因而解密变换为 Dπ-1(c0,c1,cL-1)=(cπ-1(0),cπ-1(1),?,cπ-1(L-1)),这里π-1 是π 的逆置换。

单表代换密码单表代换密码是对明文的所有字母都用一个固定的明文字母表到密文字母表的映射,即

f:ZN→ZN。令明文m=m0m1?,则相应的密文为c=E(m)=c0c1?=f(m0)f(m1)?。若明文字母表为 A=ZN={0,1,?,N-1},则相应的明文字母表为A`={f(0),f(1),?,f(N-1)},A`是A 的某种置

换。仿射密码(affine cipher)是一种特殊的代换密码。明文空间P 和密文空间C 均为ZN, 密钥空间为K={k=(k1,k0)|gcd(k1,N)=1,k0,k1∈ZN}。对给定的密钥k=(k1,k0) ∈K,其加密变 换为Ek(i)=(ik1+k0)modN (3)解密变换为Dk(j)=k1-1(j-k0)modN (4)

11

其中gcd(k1,N)表示k1与N 的最大公因子,xmodN 表示x 除以N 所得的余数,密钥空间K 的 大小为Nφ(N)。ZN 是剩余类环和φ(.)是欧拉函数。当k0=0 时,称为乘法密码(multiplicative cipher),又称采样密码(decimationcipher)。当k1=1 时,称为移位密码(shift cipher),又称加法密码(additive cipher)。我们将通过建立英文字母和模26 的剩余之间的对应关系来使用移位密码加密普通的英文消息。

例1 假定移位密码的密钥为k0=11,明文消息为we will meet at midnight。我们首先

利用表1 将该明文转化成一列整数:22 4 22 8 11 11 12 4 4 19 0 19 12 8 3 13 8 6 7 19。 其次加3 到每个值,并进行模26 运算得:7 15 7 19 22 22 23 15 15 4 11 4 23 19 14 24 19 17 18 4 。最后, 再利用表1 将这一列整数转化为字母, 从而获得密文:

HPHTWWXPPELEXTOYTRSE。解密过程与加密过程类似,不同的只是进行模26 减3,而不是模26 加3。表1 英文字母和模26 的剩余之间的对应关系 A0 N 13

多表代换密码

多表代换密码是以一系列(两个以上)代换表依次对明文消息的字母进行代换的加密方法。 令明文字母表为ZN,f=(f1,f2,…)为代换序列,明文字母序列m=m1m2…,则相应的密文字母 序列为c=Ek(m)=f(m)=f1(m1)f2(m2)…。若f 是非周期的无限序列,则相应的密码称为非周期 多表代换密码。这类密码,对每个明文字母都采用不同的代换表(或密钥)进行加密,称作 一次一密密码(one-time pad cipher),这是一种在理论上唯一不可破的密码。这种密码可以完 全隐蔽明文的特点,但由于需要的密钥量和明文消息长度相同而难于广泛使用。为了减少密 钥量,在实际应用中多采用周期多表代换密码,即代换表个数有限,重复地使用,此时代换 表序列为f=(f1,f2,…,fd,f1,f2,…) , 相应于明文字母m 的密文为

c=Ek(m)=f(m)=f1(m1)f2(m2)…fd(md)f1(md+1)f2(md+2)…f(m2d)…。

当d=1 时就退化为单表代换,因此可以说多表代换密码是单表代换密码的一种推广。有名的多表代换密码有Vigenere、Beaufort、Running-Key、Vernam 和转轮机(rotor machine)等密码。这里只介绍vegenere 多表代换密码。Vigenere 密码是由法国密码学家Blaise de Vigenere 于1858 年提出的一种密码,它是一种以移位代换(当然也可以用一般的字母代换表)为基础的周期代换密码。d 个代换表f=(f1,f2,…,fd)由d 个字母序列给定的密钥k=(k1,k2,…,kd) ∈ZN

d 决定,其中ki(i=1,2,…,d)确定明文的第i+td 个字母(t 为正整数)的移位次数,即加密公式为Ci+td=Eki(mi+td)=(mi+td+ki) mod N (5) 从而解密公式为

mi+td=Dki(ci+td)=EN-ki(ci+td) =(N-ki+mi+td+ki) mod N =mi+td (6)

称k 为用户密钥(user key)或密钥字(key word)。密钥量为Nd,当N 与d 较大时,密钥 量是很大的。将用户密钥k 周期地延伸就给出了整个明文加密所需地工作密钥(working key)。

例2 假定我们仍使用表1,d=6,k=cipher,明文串是this cryptosystem is not secure。 首先将k 及明文串转化成数字串: k=(2,8,15,7,4,17) ,

m=(19,7,8,18,2,17,24,15,19,14,18,24,18,19,4,12,8,18,13,14,19,18,4,2,20,17,4)。 其次模26“加”密钥字k=(2,8,15,7,4,17)得:

12

最后将所得的密文数字串利用表1 转化成密文字母串即 vpxzgiaxivwpubttmjpwizitwzt

解密过程与加密过程类似,不同的只是进行模26 减,而不是模26 加。

3. 实验内容

(1) 仔细阅读古典密码学的原理,理解如何使用多表代换密码加密明文。

(2) 理解例2 的加密方法,使用c 语言实现该加密算法。要求,明文保存在input.txt, 输入密钥,将密钥输出在文件output.txt。注意明文各个单词之间不要有空格, 一方面便于转化,另一方面也是为了保密,隐藏单词的长度信息。

(3) 使用c 语言实现解密算法解密(2)中的密文output.txt,输入密钥,解出明文。

13

实验3 端口扫描技术原理与实践

1、实验目的

学习端口扫描技术基本原理,理解端口扫描技术在网络攻防中的作用。通过上机实验, 熟练的掌握目前最为常用的网络扫描工具Nmap 的使用。

2、实验原理 2.1 TCP 基本协议

TCP 是面向连接的字节流传输层服务,本地IP 地址,本地端口号,远端IP 地址和远 端端口号构成的4 元组确定一个TCP 连接。在连接建立后,双方便可以传输数据。 TCP 报头中有6 个标志比特,理解它们才能很好的掌握TCP 协议,下面分别介绍其 含义:

SYN:标志位用来建立连接,让连接双方同步序列号。如果SYN=1 而ACK=0,则 表示该数据包为连接请求,如果SYN=1 同时ACK=1 则表示接受连接请求。 FIN: 表示发送端已经没有数据要求传输了,希望释放连接。

RST: 用来复位一个连接。RST 标志置位的数据包称为复位包。一般情况下,如果TCP 收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包。 URG: 为紧急数据标志。如果它为1,表示本数据包中包含紧急数据。此时紧急数据 指针有效。

ACK: 为确认标志位。如果为1,表示包中的确认号时有效的。否则,包中的确认号 无效。

PSH: 如果置位,接收端应尽快把数据传送给应用层。

TCP 是一个面向连接的可靠传输协议。面向连接表示两个应用端在利用TCP 传送数

据前必须先建立TCP 连接。TCP 的可靠性通过校验和,定时器,数据序号和应答来提供。通过给每个发送的字节分配一个序号,接收端接收到数据后发送应答,TCP 协议保证了 数据的可靠传输。数据序号用来保证数据的顺序,剔除重复的数据。在一个TCP 会话中,有两个数据流(每个连接端从另外一端接收数据,同时向对方发送数据),因此在建立连 接时,必须要为每一个数据流分配ISN(初始序号)。为了了解实现过程,我们假设客户 端C 希望跟服务器端S 建立连接,然后分析连接建立的过程(通常称作三次握手过程),见下图1 所示:

SYN

客户端服务器端

ACK SYN ACK

图1 TCP 三次握手过程

1:C 发送一个TCP 包(SYN 请求)给S,其中标记SYN(同步序号)要打开。SYN 请求指明了客户端希望连接的服务器端端口号和客户端的ISN

14

2:服务器端发回应答,包含自己的SYN 信息ISN 和对C 的SYN 应答 3:C 对从S 来的SYN 进行应答,连接建立,并开始发送数据。 大部分TCP/IP 实现遵循以下原则(RFC793):

1:当一个SYN 或者FIN 数据包到达一个关闭的端口,TCP 丢弃数据包同时发送一 个RST 数据包。

2:当一个RST 数据包到达一个监听端口,RST 被丢弃。 3:当一个RST 数据包到达一个关闭的端口,RST 被丢弃。

4:当一个包含ACK 的数据包到达一个监听端口时,数据包被丢弃,同时发送一个 RST 数据包。

5:当一个SYN 位关闭的数据包到达一个监听端口时,数据包被丢弃。

6:当一个SYN 数据包到达一个监听端口时,正常的三阶段握手继续,回答一个 SYN|ACK 数据包。

7:当一个FIN 数据包到达一个监听端口时,数据包被丢弃。\行为\(关闭得端

口返回RST,监听端口丢弃包),在URG 和PSH 标志位置位时同样要发生。所有的URG,PSH 和FIN,或者没有任何标记的TCP 数据包都会引起“FIN 行为”。

通过向端口发送组合各种TCP 标志位的分组,利用以上的原则,在加上各种操作系 统在具体实现上的差异便可以用来扫描端口和做操作系统类型探测。

2.2 端口扫描技术

端口扫描就是通过连接到目标系统的TCP 或UDP 端口,来确定什么服务正在运行。 一般来说端口扫描有三个用途: ", 识别目标系统上正在运行的TCP 和UDP 服务。 ", 识别目标系统的操作系统类型(Windows 9x, Windows NT,或UNIX,等)。 ", 识别某个应用程序或某个特定服务的版本号。 目前的端口扫描技术主要取自下面三种方式: ", 全扫描(open scanning) ", 半开扫描(half-open scanning) ", 秘密扫描(stealth scanning)

对以上三种方式的进一步划分可以参看图2,图2 的基本扫描模型中包括了PING 扫描。 下面对较为常用的方法进行介绍。 扫描类型 Open scan SYN|ACK flags

TCP ACK

half-open stealth sweeps misc TCP connect UDP/ICMP error

SYN flag FIN flag TCP echo

reverse ident IP ID 报头ACK flags UDP echo FTP bounce \

15


计算机网络安全与管理实验(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:其年级上册第四单元教案 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: