网络安全

来源:互联网 发布:电视机品牌 知乎 编辑:程序博客网 时间:2024/06/02 15:56

我们先要指明安全通信具有下列所需要的特性:机密性,仅发送方和希望的接收方能够理解传输的报文内容。报文完整性,即时发送方和接收方可以互相鉴别对方,还需要保证传输过程中未被改变,恶意篡改。端点鉴别,发送方和接收方都应该能证实通信过程所涉及的另一方,以确信通信的另一方确实具有他们所声称的身份。运行安全性,因为所有的机构今天都有与公共因特网相连接的网络,这些网络都潜在着网络攻击。

为了网络安全,那么就需要密码学的相关知识来提供帮助,密码学中有对称密钥系统和公钥系统(也叫非对称密钥系统),前者发送方和接收方拥有相同的密钥并且是秘密的,后者是接收方和发送方有一个密钥(实际上,它为全世界所知),而另一个密钥只有接收方或发送方知道。

而关于入侵者所拥有的信息分为三种:唯密文攻击、已知明文攻击和选择明文攻击。

对称密码技术有两种宽泛的类型:流密码和块密码。流密码一般用于无线LAN安全,而块密码用于多种因特网协议的加密,包括PGP、SSL和IPsec等。

公开密钥密码的使用在概念上相当简单。但是有两点要注意。首先应关注的是,尽管入侵者截取到发送方的加密密文看到的只是乱码,但是如果入侵者知道了该公钥(接收方的公钥)和发送方加密所用的算法,那么就可以发起选择明文攻击了。第二值得关注问题是,由于接收方的加密密钥是公开的,任何人都可以向接收方发送一个已加密的报文。

 

关于RSA算法

1)选择两个大素数p和q。那么p和q应该多大呢?该值越大,RSA越难于破解,但是执行加密和解密所用的时间也越长。RSA实验室推荐,公司使用时,p和q的乘积为1024比特的数量级,对于“价值不太高的信息”,p和q的乘积为768比特的数量级。

2)计算n=pq和z=(p-1)(q-1)。

3)选择小于n的一个数e,且使e和z没有公因数。(该e用于加密)

4)找到一个数d,使得ed-1可以被z整除。(该d用于解密)

5)对外公开的公钥K+就是二元组(n,e);其密钥就是二元组(n,d)。

6)加密算法是c=me mod n,解密算法是m=cd mod n。

 

但是RSA算法所要求的指数运算是相当耗费时间的,形成对比的是,DES用软件实现要比RSA快100倍,用硬件实现则要快1000~10000倍。所用在实际的应用中RSA通常和对称密钥密码结合使用。

 

报文完整性

报文完整性也叫报文鉴别,也会讨论数字签名。也将看到报文完整性和数字签名共有部分是密码散列函数。为了确定报文的完整性,需要证实两点:

1)该报文的确源自真正的发送方。

2)该报文在到达前没有被篡改。

如何执行报文的完整性,需要使用报文鉴别码(MAC)的方式。MAC有一个优点就是它不需要加密算法。

关于密码的散列函数,在互联网校验和、CRC、MD5、SHA-1等都满足此定义,不过一个散列函数有一个附加的性质:

找到任意两个不同的报文x和y使得H(x)=H(y),在计算上是不可能的。

数字签名,用于信息发送方不可否认性的一种技术。一般发送方用自己的密钥加密报文信息后得到结果就是数字签名信息。用加密/解密对数字签名是杀鸡用牛刀。因为计算代价太大,需要额外开销。更有效的方法是用一种散列算法取一个任意长度的报文m,计算生成该报文的一个固定长度的数据“指纹”,表示为H(m)。关于数字签名与MAC的比较,两者都以一个报文(或一个文档)开始。前者首先取得该报文的散列,然后用密钥加密该报文。后者为了从该报文中生成一个MAC,我们为该报文附加一个鉴别密钥,然后取得该结果的散列。因此,数字签名是一种“较重的”技术。

 

公钥认证

所谓公钥认证,就是为了证实该公钥与发送实体是否匹配。如何操作呢?必须将公钥与特定实体绑定通常是由认证中(CA)完成的,CA的职责就是验证身份和发行证书,CA具有以下作用:

1)CA证实一个实体(一个人、一台路由器等)的真实身份。

2)一旦CA验证了某个实体的身份,这个CA生成了一个把其身份和实体的公钥绑定起来的证书。

举例说明:在X.509公钥证书中的包含如下字段:版本、序列号、签名、颁发者名称、有效期、主题名、主题公钥等。

 

鉴别

端点鉴别就是向其他人证明一个人的身份过程。人类可以通过多种方式互相鉴别:见面时互相识别对方的面容,打电话时分辨对方的声音,海关的检查官员通过护照上的照片对我们进行鉴别。但是网络的鉴别必须通过某种鉴别协议来完成,接下来介绍鉴别协议(ap)原理。

ap1.0很简单就是发送方直接告诉接收方我是谁,但是这样入侵者很好欺骗接收方。

ap2.0就是发送方在ap1.0的基础上增加一个IP地址信息,不过入侵者也很容易欺骗接收方。

ap3.0就是采用口令方式(明文形式),不过入侵者采用嗅探(sniff)也能窃取到口令。

ap3.1就是采用加密口令方式,不过入侵者也能窃取加了密的口令。

ap4.0采用不重数的方式,所谓不重数就是在一个协议的生存期中只使用一次的一个数,并且使用对称加密密钥来加密这个不重数。

ap5.0对称密钥密码系统和不重数的使用构成了我们成功的鉴别协议ap4.0的基础。一个自然而然的问题就是,我们是否能够可以使用不重数和公钥密码(而不是对称密码)来解决鉴别问题。使用公钥密码可以绕过共享密钥系统的一个难题,即如何使双方一开始知道这个共享的秘密密钥。不过ap5.0仅仅因为公钥分发而不够安全。幸运的是,我们能够使用证书来安全地分发公钥。另外在ap5.0的基础上,会产生一种所谓中间人攻击的例子(有兴趣可以网上搜下)。