网络安全需要保护数据免受网络传输时的攻击.为了实现这一目标,已经设计了许多实时安全协议.有一些流行的实时网络安全协议标准,如S/MIME,SSL/TLS,SSH和IPsec.如前所述,这些协议适用于不同的网络模型层.
在上一章中,我们讨论了一些旨在提供应用层安全性的流行协议.在本章中,我们将讨论在传输层和相关安全协议上实现网络安全的过程.
对于基于TCP/IP协议的网络,物理和数据链路层通常在用户终端和网卡硬件. TCP和IP层在操作系统中实现. TCP/IP以上的任何内容都是作为用户进程实现的.
需要传输层安全性
让我们讨论典型的基于Internet的业务事务.
Bob访问Alice的网站销售商品.在网站上的表格中,Bob输入所需的商品和数量类型,地址和支付卡详细信息. Bob点击提交并等待从他的帐户中借出价格金额的货物.所有这些听起来都不错,但是在没有网络安全的情况下,鲍勃可能会有一些惊喜.
如果交易没有不使用机密性(加密),攻击者可以获取他的支付卡信息.然后攻击者可以自费购买.
如果没有使用数据完整性措施,攻击者可以根据商品的类型或数量修改Bob的订单.
最后,如果没有使用服务器身份验证,服务器可以显示Alice的着名徽标,但该站点可能是由攻击者维护的恶意站点,伪装成爱丽丝.收到鲍勃的订单后,他可以拿鲍勃的钱逃跑.或者他可以通过收集Bob的姓名和信用卡详细信息来进行身份盗窃.
传输层安全方案可以通过增强来解决这些问题基于TCP/IP的网络通信,具有机密性,数据完整性,服务器身份验证和客户端身份验证.
此层的安全性主要用于保护网络上基于HTTP的Web事务.但是,任何通过TCP运行的应用程序都可以使用它.
TLS设计理念
传输层安全性(TLS)协议在TCP之上运行层.这些协议的设计使用流行的应用程序接口(API)到TCP,称为"套接字",用于与TCP层连接.
应用程序现在直接连接到传输安全层而不是TCP.安全层提供了一个带有套接字的简单API,类似于TCP的API.
在上图中,尽管TLS在技术上位于应用程序和传输层之间,但从通用角度来看,它是一种传输协议,充当通过安全服务增强的TCP层.
TLS旨在通过TCP(可靠的第4层协议(不是UDP协议))进行操作,使TLS的设计更加简单,因为它不必担心"超时"和"重新传输丢失"数据'.TCP层继续照常执行,满足TLS的需要.
为什么T LS很受欢迎?
在传输层使用安全性的普及原因很简单.在该层设计和部署安全性不需要对操作系统中实现的TCP/IP协议进行任何更改.只需要设计/修改用户流程和应用程序,而不是那么复杂.
安全套接字层(SSL)
在本节中,我们将讨论为TLS设计的协议族.该系列包括SSL版本2和3以及TLS协议. SSLv2现已被SSLv3取代,因此我们将重点关注SSL v3和TLS.
SSL简史
1995年,Netscape开发SSLv2并在Netscape Navigator 1.1中使用. SSL版本1从未发布和使用过.后来,微软对SSLv2进行了改进,并引入了另一种名为私有通信技术(PCT)的类似协议.
Netscape在各种安全问题上大大改进了SSLv2,并在1999年部署了SSLv3.互联网工程任务组( IETF随后引入了类似的TLS(传输层安全)协议作为开放标准. TLS协议与SSLv3不可互操作.
TLS修改了加密算法以进行密钥扩展和身份验证.此外,TLS建议使用开放式加密Diffie-Hellman(DH)和数字签名标准(DSS)代替SSL中使用的专利RSA加密.但由于2000年RSA专利到期,用户没有强有力的理由从广泛部署的SSLv3转移到TLS.
SSL的突出特点
SSL协议的显着特征如下:<
SSL通过 :
保密 : 信息以加密形式交换.
身份验证 : 通信实体通过使用数字证书相互识别. Web服务器身份验证是必需的,而客户端身份验证是可选的.
可靠性 : 维护消息完整性检查.
SSL适用于所有TCP应用程序.
几乎所有网络浏览器都支持.
轻松与新的在线实体开展业务.
主要为网络电子商务开发.
架构SSL
SSL特定于TCP,但不适用于UDP. SSL为应用程序提供应用程序编程接口(API). C和Java SSL库/类随时可用.
SSL协议旨在应用程序和传输层之间的互通,如下图所示 :
SSL本身不是单层协议,如图所示;实际上它由两个子层组成.
下层子层包含被称为SSL协议的一个组件作为SSL记录协议.该组件提供完整性和机密性服务.
上层子层由三个与SSL相关的协议组件和一个应用程序协议组成.应用程序组件在客户端/服务器交互之间提供信息传输服务从技术上讲,它也可以在SSL层之上运行.三个与SSL相关的协议组件是 :
SSL握手协议
更改密码规范协议
警报协议.
这三个协议管理所有SSL消息交换,将在本节后面讨论.
SSL协议组件的功能
SSL协议的四个子组件处理客户端计算机与客户端计算机之间安全通信的各种任务.服务器.
记录协议
记录层格式化上层协议消息.
它将数据分段为可管理的块(最大长度为16 KB).它可选择压缩数据.
加密数据.
提供标题每条消息和一个散列(消息认证码(MAC))最后.
将格式化的块移交给TCP层进行传输.
SSL握手协议
这是SSL中最复杂的部分.在传输任何应用程序数据之前调用它.它在客户端和服务器之间创建SSL会话.
会话的建立涉及服务器身份验证,密钥和算法协商,建立密钥和客户端身份验证(可选).
会话由唯一的加密安全参数集标识.
多重安全客户端和服务器之间的TCP连接可以共享同一会话.
通过四个阶段的握手协议操作.这些将在下一节中讨论.
ChangeCipherSpec Protocol
SSL协议的最简单部分.它包含在两个通信实体(客户端和服务器)之间交换的单个消息.
当每个实体发送ChangeCipherSpec消息时,它会改变它的一面按照约定连接到安全状态.
密码参数暂挂状态被复制到当前状态.
此消息的交换表示所有未来的数据交换都已加密且完整性受到保护.
SSL警报协议
此协议用于报告错误 - 例如意外消息,错误记录MAC,安全参数协商失败等等.
它还用于其他目的 - 例如通知关闭TCP连接,通知收到错误或未知证书等.
建立SSL会话
如上所述,SSL有四个阶段会话建立.这些主要由SSL握手协议处理.
阶段1 : 建立安全功能.
此阶段包括交换两条消息 - Client_hello 和 Server_hello .
Client_hello 包含客户端支持的加密算法列表,按优先顺序递减.
Server_hello 包含选定的密码规范(CipherSpec)和新的 session_id .
CipherSpec包含 :
密码算法等字段(DES,3DES,RC2和RC4)
MAC算法(基于MD5,SHA-1)
公钥算法(RSA)
两条消息都有"nonce"以防止重放攻击.
Phas e 2 : 服务器身份验证和密钥交换.
服务器发送证书.客户端软件配置了各种"可信"组织(CA)的公钥以检查证书.
服务器发送选定的密码套件.
服务器可以请求客户端证书.通常它没有完成.
服务器表示 Server_hello 的结束.
阶段3 : 客户端身份验证和密钥交换.
客户端仅在服务器请求时发送证书.
它还发送预主密钥(PMS)使用服务器的公钥加密.
如果证书由他发送以证明他有证据,客户也会发送 Certificate_verify 消息与此证书关联的私钥.基本上,客户签署以前消息的哈希值.
阶段4 : 完成.
客户端和服务器相互发送 Change_cipher_spec 消息,导致挂起的密码状态被复制到当前状态.
从现在开始,所有数据都经过加密和完整性保护.
每端的消息"已完成"验证密钥交换和认证过程是成功的.
上面讨论的所有四个阶段都发生在TCP会话的建立中.在TCP SYN/SYNACK之后SSL会话建立开始并在TCP Fin之前完成.
恢复断开连接的会话
如果客户端使用加密的 session_id向服务器发送 hello_request ,则可以恢复断开连接的会话(通过 Alert 消息) 信息.
然后,服务器确定 session_id 是否有效.如果经过验证,它会与客户端交换ChangeCipherSpec和已完成的消息并恢复安全通信.
这可以避免重新计算会话密码参数和节省服务器和客户端的计算.
SSL会话密钥
我们见过在SSL会话建立的第3阶段期间,客户端将使用服务器的公钥将预主密钥发送到服务器.主密钥和各种会话密钥生成如下:<
生成主密钥(通过伪随机数生成器) )使用 :
预主秘密.
在client_hello和server_hello消息中交换了两个随机数(RA和RB).
然后从这个主密钥中导出六个秘密值为 :
与MAC一起使用的密钥(用于数据)由服务器发送)
与MAC一起使用的密钥(用于客户端发送的数据)
用于加密的密钥和IV(由服务器提供)
用于加密的密钥和IV(由客户端)
TLS协议
为了提供开放作为SSL的Internet标准,IETF于1999年1月发布了传输层安全性(TLS)协议.TLS定义为RFC 5246中建议的Internet标准.
显着特征
TLS协议具有与SSL相同的目标.
它使客户端/服务器应用程序能够通过身份验证,防止窃听和抵制消息修改以安全的方式进行通信.
TLS协议位于网络层堆栈中可靠的面向连接的传输TCP层之上.
TLS协议的体系结构类似于SSLv3协议.它有两个子协议:TLS记录协议和TLS握手协议.
虽然SSLv3和TLS协议具有相似的体系结构,但在体系结构和特别适用于握手协议.
TLS和SSL协议的比较
主要是TLS和SSLv3协议之间的八个差异.这些如下 :
协议版本 : TLS协议段的头部带有版本号3.1,以区分SSL协议段头部携带的3号.
消息认证 : 去; TLS使用密钥哈希消息认证码(H-MAC).好处是H-MAC可以使用任何哈希函数,而不仅仅是MD5或SHA,如SSL协议明确规定的那样.
会话密钥生成 : 用于生成密钥材料的TLS和SSL协议之间存在两个差异.
计算预主和主秘密的方法类似.但在TLS协议中,主密钥的计算使用HMAC标准和伪随机函数(PRF)输出而不是ad-hoc MAC.
计算会话的算法密钥和启动值(IV)在TLS中与SSL协议不同.
警报协议消息 :
TLS协议支持SSL的Alert协议使用的所有消息,除了没有证书警报消息变得冗余.如果不需要客户端身份验证,客户端将发送空证书.
TLS协议中包含许多其他警报消息,用于其他错误情况,例如 record_overflow ,decode_error 等.
支持的密码套件 : SSL支持RSA,Diffie-Hellman和Fortezza密码套件. TLS协议支持除Fortezza以外的所有诉讼.
客户证书类型 : TLS定义要在 certificate_request 消息中请求的证书类型. SSLv3支持所有这些.此外,SSL支持某些其他类型的证书,例如Fortezza.
CertificateVerify和Finished Messages :
在SSL中,复杂消息过程用于 certificate_verify 消息.使用TLS,验证的信息包含在握手消息本身中,从而避免了这个复杂的过程.
在TLS和SSLv3中以不同的方式计算完成的消息./p>
填充数据 : 在SSL协议中,加密前添加到用户数据的填充是使总数据大小等于密码块长度的倍数所需的最小量.在TLS中,填充可以是任何导致数据大小为密码块长度的倍数的量,最多为255个字节.
下表总结了TLS和SSLv3协议之间的上述差异.
安全浏览 - HTTPS
在本节中,我们将讨论使用SSL/TLS协议执行安全的Web浏览.
HTTPS定义
超文本传输协议(HTTP)协议用于Web浏览. HTTPS的功能类似于HTTP.唯一的区别是HTTPS提供"安全"的Web浏览. HTTPS代表HTTP over SSL.此协议用于在客户端Web浏览器和网站服务器之间提供加密和验证的连接.
通过HTTPS进行安全浏览可确保以下内容加密 :
URL请求的网页.
服务器向用户客户端提供的网页内容.
用户填写的表格内容.
双向建立Cookie.
使用HTTPS
HTTPS应用程序协议通常使用两种流行的传输层安全协议之一 - SSL或TLS.以下几点介绍了安全浏览的过程.
您可以通过输入https来请求与网页的HTTPS连接://后跟浏览器地址栏中的URL.
Web浏览器启动与Web服务器的连接.使用https会调用SSL协议.
在这种情况下,应用程序,浏览器使用系统端口443而不是端口80(用于http).
SSL协议通过握手协议建立安全会话,如前面部分所述.
该网站最初将其SSL数字证书发送到您的浏览器.在验证证书时,SSL握手会进行交换会话的共享机密.
当服务器使用受信任的SSL数字证书时,用户会获得在浏览器地址栏中查看挂锁图标.当在网站上安装扩展验证证书时,地址栏变为绿色.
一旦建立,此会话由Web服务器和Web服务器之间的许多安全连接组成.使用HTTPS
当今的Web浏览器和Web服务器都配备了HTTPS支持.但是,在HTTP上使用HTTPS需要在客户端和服务器端具有更强的计算能力来执行加密和SSL握手.
安全外壳协议(SSH)
SSH的显着特征如下:<
SSH定义
SSH被组织为三个子协议.
SSH服务
SSH提供三种主要服务,可提供许多安全解决方案.这些服务简要描述如下:<
优点&限制
在传输层使用通信安全的好处和限制如下:
摘要
过去十年间,互联网上出现了大量的网络应用程序.许多电子政务和电子商务门户已经上线.这些应用程序要求服务器和客户端之间的会话是安全的,以提供会话的机密性,身份验证和完整性.
在用户会话期间减轻潜在攻击的一种方法是使用安全通信协议.本章将讨论两种此类通信协议:安全套接字层(SSL)和传输层安全性(TLS).这两个协议都在传输层运行.
另一种传输层协议,Secure Shell(SSH),旨在取代TELNET,提供安全的远程登录工具.它能够提供各种服务,例如Secure Command Shell和SFTP.
使用传输层安全性有很多好处.但是,在这些层设计的安全协议只能与TCP一起使用.它们不为使用UDP实现的通信提供安全性.
仅适用于基于TCP的应用程序(不是UDP).
TCP/IP标题清晰.
适合直接通讯客户端和服务器.不满足使用服务器链的安全应用程序(例如电子邮件)
SSL不提供不可否认性,因为客户端身份验证是可选的.
如果需要,客户端身份验证需要在SSL之上实现.
传输层安全性对应用程序是透明的.
服务器已通过身份验证.
应用程序层标题已隐藏.
它比第3层(IPsec)的安全机制更精细,因为它在传输连接级别工作.
好处
限制
安全命令外壳(远程登录) : 去;它允许用户编辑文件,查看目录内容,以及访问连接设备上的应用程序.系统管理员可以远程启动/查看/停止服务和进程,创建用户帐户以及更改文件/目录权限等.现在可以使用安全远程登录从远程计算机安全地执行机器命令提示符下可行的所有任务.
安全文件传输 : SSH文件传输协议(SFTP)被设计为SSH-2的扩展,用于安全文件传输.实质上,它是一个独立的协议,分布在Secure Shell协议上以处理文件传输. SFTP加密用户名/密码和正在传输的文件数据.它使用与Secure Shell服务器相同的端口,即系统端口号22.
端口转发(隧道) : 它允许保护来自不安全的基于TCP/IP的应用程序的数据.设置端口转发后,Secure Shell重新路由来自程序(通常是客户端)的流量,并通过加密隧道将其发送到另一端的程序(通常是服务器).多个应用程序可以通过单个多路复用安全通道传输数据,无需在防火墙或路由器上打开多个端口.
服务器认证 : 主机密钥不对称,如公钥/私钥.服务器使用公钥向客户端证明其身份.客户端验证所联系的服务器是否为其维护的数据库中的"已知"主机.一旦服务器通过身份验证,就会生成会话密钥.
会话密钥建立 : 在认证之后,服务器和客户端同意使用密码.会话密钥由客户端和服务器生成.在用户身份验证之前生成会话密钥,以便可以加密发送用户名和密码.这些密钥通常在会话期间定期更换(例如,每小时),并在使用后立即销毁.
数据完整性 : SSH使用消息验证代码(MAC)算法进行数据完整性检查.这是对SSH1使用的32位CRC的改进.
传输层协议 : SSH协议的这一部分提供数据机密性,服务器(主机)身份验证和数据完整性.它也可以选择提供数据压缩.
用户身份验证协议 : SSH的这一部分将用户验证到服务器.服务器验证仅向目标用户授予访问权限.目前使用了许多身份验证方法,如键入密码,Kerberos,公钥身份验证等.
连接协议 : 这在单个底层SSH连接上提供了多个逻辑通道.
SSH是一种运行于的网络协议TCP/IP层的顶部.它旨在取代提供不安全的远程登录工具的TELNET.
SSH提供安全的客户端/服务器通信,可用于诸如文件传输和电子邮件.
SSH2是一种流行的协议,它提供了比早期版本SSH1更好的网络通信安全性.
HTTPS的使用为用户提供机密性,服务器身份验证和消息完整性.它可以在互联网上安全地进行电子商务.
防止数据被窃听并拒绝身份盗用,这是对HTTP的常见攻击.