PKI概述
PKI(Public Key Infrastructure,公钥基础设施)
- 作用:通过加密技术和数字签名保证信息的安全
- 组成:公钥加密技术、数字证书、CA、RA
PKI应用
- SSL/HTTPS
- IPsecVPN
- 部分远程访问VPN
信息安全三要素
机密性、完整性、身份验证/操作的不可否认性
公钥加密技术
- 作用:实现对信息加密、数字签名等安全保障
- 加密算法:(1)对称加密算法(加解密的密钥一致) (2)非对称加密算法:通信双方各生产一对公私钥,双方各自交换公钥,公钥和私钥互为加解密关系,且公钥私钥不能相互逆推。
HASH算法
HASH算法(MD5/SHA):不可逆加密算法,不需要密钥,无法进行解密。
网络安全问题概述
计算机网络上的通信面临以下四种威胁:
- 截获:从网络上窃听他人的通信内容
- 中断:有意中断他人在网络上的通信
- 篡改:故意篡改网络上传送的报文
- 伪造:伪造信息在网络上传送
对攻击的分类
截获信息的攻击称为被动攻击,而更改信息和拒绝用户使用资源属于主动攻击
- 在被动攻击中,攻击者只是观察和分析某一个协议数据单元PDU而不干扰信息流
- 主动攻击是指攻击者对某个连接中通过的PDU进行各种处理(更改报文流、拒绝报文服务、伪造连接初始化)
恶意程序
- 计算机病毒:会传染其他程序的程序,传染是通过修改其他程序来把自身或其变种复制进去完成的
- 计算机蠕虫:通过网络的通信功能将自身从一个结点发送到另一个结点并启动运行的程序
- 特洛伊木马:一种程序,它执行的功能超出所声称的功能
- 逻辑炸弹:一种当运行环境满足某种特定条件时执行其他特殊功能的程序
计算机网络安全的内容
- 保密性
- 安全协议的设计
- 访问控制
一般数据加密模型如下图所示:
两类密码体制
对称密钥密码体制
对称密钥系统:加密密钥和解密密钥是相同的密码体制
数据加密标准DES
数据加密标准DES属于常规密钥密码体制,是一种分组密码
- 在加密前,对整个明文进行分组,每一个组长为64位
- 对64位的明文进行IP置换,然后分成左右等长的、各32位的两个分组。
- 在48位子密钥的作用下,进行16轮乘积变换运算(最后一轮左右交换位置)
- 最后将各组密文串接起来,得出整个密文
- 使用的密钥为64位(实际密钥长度为56位,有8位用奇偶校验)
DES的保密性取决于对密钥的保密,而算法是公开的。
AES
AES的密钥长度为:128/192/256,加密时会执行10次轮函数(前9次都是一样的,只有第10次不同)。明文分组用字节为单位的正方向矩阵描述(状态矩阵),
加密过程如下:
- 轮密钥加
- 字节代换:S盒,逆S盒,状态矩阵中的每个元素(含1个字节)将字节的高4位作为行,低4位作为列,取S盒的值作为输出
- 行位移,第一行不动,第二行移动1位,第三行移动2位,以此类推
- 列混合:通过矩阵相乘实现
- 轮密钥加:128位密钥同状态矩阵中的数据进行逐位异或操作
非对称密钥密码体制
RSA
原理:基于一个大因数很难被分解成两个质数相乘
X的欧拉函数:小于X且和X互质的数的个数。
模反元素:如果a与n互质,则一定可以找到一个整数b,使得ab-1被n整除
RSA加/解密过程
- 选取两个大的质数P/Q,PQ=N
- N的欧拉函数=(P-1)(Q-1)
- E:比1大比N的欧拉函数小,且与N的欧拉函数互质
- D:ED-1可被N的欧拉函数整除
- 密文=明文^E mod N ,公钥(E,N)
- 明文=密文^D mod N ,私钥(D,N)
公钥密码体制
公钥密码体制使用不同的加密密钥与解密密钥。是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制
加密密钥和解密密钥
- 在公钥密码体制中,加密密钥(公钥)PK是公开信息,解密密钥(私钥)SK是需要保密的
- 加密算法E和解密算法D也都是公开的
- 虽然密钥SK是由公钥PK决定的,但却不能根据PK计算出SK
公钥算法的特点
- 发送者在发送信息之前先要获取对方的公钥对明文进行加密
- 发送者A用B的公钥对明文加密后,接受者B用自己的私钥解密,即可恢复明文
- 解密密钥是接收者的专用密钥,对其他所有人都保密
- 加密密钥是公开的,但它不能用来解密
- 不可能从公钥推导出私钥
- 加解密算法都是公开的
鉴别
- 对方被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则需要鉴别(authentication)
- 报文鉴别使得通信的接收方能够验证所收到的报文
报文鉴别
许多报文并不需要加密但却需要数字签名,以便于让报文的接收者能够鉴别报文的真伪。然而对很长的报文进行数字签名会使得计算机增加很大的负担(需要进行长时间的运算),当我们传送不需要加密的报文时,可以使用MD来鉴别报文的真伪
报文摘要MD(Message Digest)
报文摘要是指单向哈希函数算法将任意长度的输入报文经计算得出固定位的输出称为报文摘要
实体鉴别
报文鉴别是对每个收到的报文都要鉴别报文的发送者,而实体鉴别是在系统接入的全部持续时间内对和自己通信的对方实体只需验证一次。
摘要升级
将报文摘要H利用A的私钥加密发送给B,B接收到密文摘要后用A的公钥进行解密得到摘要明文。
数字签名
数字签名是由发送者的私钥加密摘要形成的,数字签名必须保证以下三点:
- 报文鉴别:接收者能够核实发送者对报文的签名
- 报文的完整性:发送者事后不能抵赖对报文的签名
- 不可否认:接收者不能伪造对报文的签名
数字签名的实现
- 因为除了A外没有人能具有A的私钥,所以除A外没有别人能产生这个密文。因此B相信报文X是A签名发送的
- 若A要抵赖曾经发送报文给B,B可将明文和对应的密文出示给第三者,第三者很容易用A的公钥去证实A确实发送X给B
- 如B将报文X伪造成X1,则B不能在第三者前出示对应的密文,这样就证明了B伪造报文。
具有保密性的数字签名:
密钥分配
目前常用的密钥分配方式是设立密钥分配中心KDC(Key Distribution),通过KDC来分配密钥。
对称密钥
用户A和B都是KDC的登记用户,并已经在KDC的服务器上安装了各自和KDC进行通信的主密钥(master key)KA和KB。
公钥的分配
认证中心(Certification Authority,CA)将公钥与其对应的实体(人或实体)进行绑定。
- 数字证书的生成:CA收到数字证书申请并认证申请者的真实身份后,把申请者的公钥、身份信息、数字证书的有效期等信息作为消息原文,进行hash生成摘要,并用CA的私钥加密进行签名;数字签名与证书拥有者的公钥、身份信息、证书有效期等其他信息共同组成数字证书。
- 数字证书的验证:接收方收到消息证书后,使用CA公钥对数字签名解密生成消息摘要,对证书内容进行hash生成摘要,两份摘要进行比对可证明证书内容的完整性与真实性。
因特网使用的安全协议
网络层安全协议
IPsec与安全关联SA
网络层保密是指所有在IP数据报中的数据都是加密的。IPsec中最重要的两个部分:
- 鉴别首部AH(Authentication Header):AH鉴别源点和检查数据完整性,但不能保密
- 封装安全有效载荷ESP(Encapsulation Security Payload):ESP比AH复杂得多,它鉴别源点、检查数据完整性和提供保密。
安全关联SA(Security Association)
- 在使用AH或ESP之前,先要从源主机到目的主机建立一条网络层的逻辑连接。此逻辑连接叫做安全关联SA。
- IPsec就把传统的因特网无连接的网络层转换为具有逻辑连接的层
安全关联的特点
安全关联是一个单向连接,它有一个三元组唯一的确定,包括:
- 安全协议(AH或ESP)的标识符
- 此单向连接的源IP地址
- 一个32位的连接标识符,称为安全参数索引SPI(Security Parameter Index)
对于每个给定的安全关联SA,每个IPsec数据报都有一个存放SPI的字段,通过此SA的所有数据报都使用相同的SPI值。
鉴别首部协议AH
- 在使用鉴别首部协议AH时,把AH首部插在原数据报数据部分的前面,同时把IP首部中的协议字段置为51
- 在传输过程中,中间的路由器都不查看AH首部,当数据报到达终点时,目的主机才处理AH字段,以鉴别源点和检查数据报的完整性。
封装安全有效载荷ESP
- 使用ESP时,IP数据报首部的协议字段位置为50,当IP首部检查到协议字段是50时,就知道在IP首部后面紧接着的是ESP首部,同时在原IP数据报后面增加了两个字段,即ESP尾部和ESP数据。
- ESP鉴别和AH中的鉴别数据是一样的,因此,用ESP封装的数据报既有鉴别源站和检查数据报完整性的功能,又能提供保密。
在IP数据报中的ESP的各字段如下所示:
运输层安全协议
安全套接层SSL
- SSL是安全套接层(Secure Socket Layer),可对万维网客户与服务器之间传送的数据进行加密和鉴别。
- SSL在双方的联络阶段协商将使用的加密算法和密钥,以及客户与服务器之间的鉴别。
- 在联络阶段完成之后,所有传送的数据都使用在联络阶段商定的会话密钥
- SSL不仅被所有常用的浏览器和万维网服务器所支持,而且也是运输层安全协议TLS(Transport Layer Secutiry)的基础。
HTTP与HTTPS
HTTPS就是加了SSL的HTTP
- 端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;
- 资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;
- 开销:Https通信需要证书,而证书一般需要向认证机构购买;
https传输过程
- 浏览器将自己支持的一套加密规则发送给网站。
- 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
- 浏览器获得网站证书之后浏览器要做以下工作:
- 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
- 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
- 用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
- 网站接收浏览器发来的数据之后要做以下的操作:
- 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
- 使用浏览器生成的随机数密码加密一段握手消息,发送给浏览器,浏览器使用随机数密码进行解密
注:上述过程中设计两次请求,包括对称加密、非对称加密
SSL的位置
- 在发送方,SSL接收应用层的数据(HTTP报文或IMAP报文),对数据进行加密,然后把加密的数据送往TCP套接字
- 在接收方,SSL从TCP套接字读取数据,解密后把数据交给应用层。
SSL提供以下三个功能
- SSL服务器鉴别:允许用户证实服务器的身份。具有SSL功能的浏览器维持一个表,上面有一些可信赖的CA和它们的公钥
- 加密SSL会话:客户和服务器交互的所有数据都在发送方加密,在接收方解密
- SSL客户鉴别:允许服务器证实客户身份
安全电子交易SET
安全电子交易SET(Secure Electronic Transaction)是专为在因特网上进行安全支付卡交易的协议
SET的主要特点是:
- SET是专门为与支付有关的报文进行加密的
- SET协议涉及到三方,即顾客、商家和商业银行。所有在这三方之间交互的敏感信息都被加密
- SET要求这三方都有证书。在SET交易中,商家看不见顾客传送给商业银行的信用卡号码
应用层的安全协议
PGP(Pretty Good Privacy)
- PGP是一个完整的电子邮件安全软件包,包括加密、鉴别、电子签名和压缩等技术
- PGP并没有使用新的概念,它只是将一些算法如MD5,RSA等综合在一起
PEM(Privacy Enhanced Mail)
PEM是因特网的邮件加密建议标准,由4个RFC文档来描述。PEM的主要特点有:
- PEM与PGP一样都是对基于RFC 822的电子邮件进行加密和鉴别
- PEM 有比PGP更完善的密钥管理机制
链路加密和端到端解密
链路加密
在采用链路加密的网络中,每条通信链路上的加密都是独立实现的,通常对每条链路使用不同的加密密钥。
相邻结点之间具有相同的密钥,因而密钥管理意义实现,链路加密对于用户来说是透明的(用户看不见),因为加密功能由通信子网提供
端到端加密
端到端加密是在源结点和目的结点对传送的PDU进行加密和解密,报文的安全性不会因中间结点的不可靠而受到影响。
在端到端加密的情况下,PDU的控制信息部分(如源结点地址、目的结点地址、路由信息等)不能被加密,否则中间结点就不能正确选择路由。
防火墙(firewall)
- 防火墙是由软件、硬件构成的系统。是一种特殊编程的路由器,用来在两个网络之间实施接入控制策略。
- 防火墙内的网络称为“可信赖的网络”,而外部的因特网称为“不可信赖的网络”
防火墙在互连网络中的位置
防火墙的功能
防火墙的功能有两个:阻止和允许
- 阻止就是阻止某种类型的通信量通过防火墙(外部网络和内部网络双向阻止)
- 允许的功能与阻止恰好相反
防火墙分类
- 网络级防火墙:用来防止整个网络出现外来非法的入侵。具有分组过滤和授权服务器。分组过滤检查
所有流入本网络的信息,然后拒绝不符合实现制定好的一套准则的数据,而后者则是检查用户的登录是否合法 - 应用级防火墙:从应用程序来进行接入控制。通常使用应用网关或代理服务器来区分各种应用。例如,可以只允许通过访问万维网的应用,而阻止FTP应用的通过。
DDos攻击
客户端不断进行请求链接:服务器端会为每个请求创建一个链接,并向其发送确认报文,然后等待客户端进行确认
DDos攻击原理
- 客户端向服务端发送请求链接数据包
- 服务端向客户端发送确认数据包
- 客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认
DDos预防
- 限制同时打开SYN半链接的数目
- 缩短SYN半链接的Time out 时间
- 关闭不必要的服务