这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [转贴]嵌入式系统的网络连接安全策略

共1条 1/1 1 跳转至

[转贴]嵌入式系统的网络连接安全策略

菜鸟
2003-09-17 20:51:36     打赏
嵌入式系统的网络连接安全策略[转帖] 一般而言,互联网安全是指保障数据在网络中安全传输的整套服务。一些在网络中传输的信息,如金融和法律文档具有很强的保密性,不同的产品和应用具有不同的安全性需求。 互联网的安全服务很大程度上决定于服务提供商的可信任度。当节点A需要将信用卡号发送至节点B时,稳妥的方法是验证节点B的真实身份。这时,节点A必须信任节点B,或信任为节点B身份进行担保的第三方。互联网安全的核心就在于推进不同网络节点之间的信任关系。当然,这绝不是盲目信任。例如,节点A可获准请求节点B的特定服务,但不允许请求其它服务,具体能获得的服务取决于节点B对节点A的信任度。 在规定整套互联网安全服务之前,每种产品都必须明确可能存在的安全威胁,并对网络中其它节点所用的安全协议进行评估(大多数HTTP服务器支持SSL协议)。 图1显示了信任等级的金字塔结构。信任金字塔的最底层是完整性,完整性可确保两个网络节点之间的消息流不受到干扰。完整性得到保障的网络通信信道可防止第三方的恶意信息影响节点间的正常通信,或改变信息流的正常顺序,以及插入额外消息或在消息流中删除消息。 完整性还包括鉴权。通过鉴权可以确定某个节点是否真的名副其实,如果节点A的身份得不到证实,那么就不能建立通信。交易的不可否认性与鉴权密切相关,它能确保发送方无法否认成功传送的数字签名信息。 保密性可以保证消息的发送方和预期的接收方是唯一能在某个时间内对消息流内容进行解密的两个网络实体,可以保护通信信道免遭被动攻击,如数据包侦听。实现保密性需要采用加密技术,而保密性的最高保护形式是对节点A与B之间传输的所有信息进行加密。 信任金字塔的最高层是授权。一旦网络客户的身份得到验证,将获准在服务器上请求各种服务,如Telnet或FTP,但每个网络客户在服务器上获得的授予权利不一定相同。初始授权一般归属于系统管理员,而网络协议可以提供基本架构以建立用户身份标识,并在网络节点之间传送授权。 上面概述了互联网安全性的范围,下面将描述安全互联网信道的基本构件模块。这些构件模块包括: 1. 加密和解密;2. 数字签名;3. 消息摘要(message digest);4. 公共密钥架构;5. 证书。 加密和数字签名 网络通信加密可实现保密的信息传输,本文主要介绍两类加密算法。第一类,也是最基本的一类是对称加密。对称加密最常用的加密方法是采用数据加密标准(DES),对称加密方法的概念非常简单,如图2所示。 采用对称加密方法时,节点B发送加密消息至节点A,原始数据均为明文,而加密后的数据则为密文。加密的过程中采用某些共享的保密数据(也称为密钥)将明文转换为密文,再将密文转换为明文。密钥是加密和解密算法都必须采用的一段数据。 采用对称加密方法的一个简单实例就是ROT13。ROT13在加密过程中使ASCII文本的每个字符代码加13,而在解密过程中则使每个字符代码减13。加密后的取值受限于字母表的字母范围,例如A转换为N,P转换为C。 为了采用对称加密,节点B和节点A不仅需要对采用的算法达成一致,而且还必须对密钥达成一致,这也是对称加密的一个缺点。如果为确保安全通信,节点B和节点A必须预先了解算法和密钥,那么如何建立一个安全的通信信道呢?这是一个经典的先有鸡还是先有蛋的问题。这里有两种解决方案: 在安全通信信道建立之前,节点B将密钥(可能还包括算法)发送至节点A。该解决方案一个明显的缺点是任何对数据包进行侦听的人都可以获得密钥,从而能解密随后所发送的任何消息。另一种方法是,密钥(可能还包括算法)以另一种不同方式发送,这种发送过程可能要涉及到硬件设备、单独的网络协议或用作密钥的密钥口令,但不能以不安全的方式分发。 密钥分配是安全系统的一个基本问题。Whitfield Diffie和Martin Hellman在“New Directions in Cryptographyformation Theory”一文中提出了一些改进的方法。这些思想后来被称为公共密钥加密方法。本文将研究不对称加密方法,而公共密钥加密就是基于不对称加密方法。不对称加密方法具有两套截然不同的密钥,一套用于加密而另一套用于解密。发送方采用加密密钥对消息加密,接收方则采用解密密钥对消息解密。 公共密钥加密方法进一步提高了网络的安全性。假定加密密钥是公开的,但解密密钥(私人密钥)则为保密的,该密钥只有接收方知道。消息发送方(节点B)采用公共密钥对消息内容加密,接收方(节点A)则采用私人密钥对消息解密。由于只有节点A知道其私人密钥,因此可以确保节点A是唯一能对消息解密的节点。公共密钥加密方法如图3所示。 某些不对称加密算法也可逆向工作(最常用的是RSA)。在可逆算法中,私人或公共密钥都可用于加密,而另一密钥则用于解密。可逆算法适用于验证身份,假定节点B希望向节点A证明身份,节点B可利用私人密钥对一些众所周知的数据(节点A事先已了解这些数据)进行加密,并将数据传送给节点A。节点A利用节点B的公共密钥对数据解密和比较。如果数据匹配,则表明节点B通过了身份验证,因为只有节点B才能发送原始信息。 数字签名也可基于可逆算法来实现。在这种情形下,节点B将采用私人密钥对数据加密并传送至节点A。之后,节点B不能否认向节点A发送了数据,因为只有节点B才能利用其私人密钥对数据加密。采用公共密钥加密的工作原理如图4所示。 不对称加密方法本身在安全方面与对称加密方法相似,不对称加密方法只是为密钥发送提出了一种更可行的模型。决定加密方法优劣的最主要因素是密钥的长度以及解密密钥的难易程度。只要时间和资金充足,任何加密方法都是可以被解密。能满足下述条件的加密方法通常认为是安全的: 1. 对加密方法解密所需的时间超过加密数据的有效存在期; 2. 解密加密方法的成本超过加密数据的自身价值。 与对称加密方法相比,不对称加密方法的主要缺点是加密所需的处理时间较长。例如,在互联网上应用最广泛的RSA加密算法就需要对两个非常大的质数之积进行因式分解。对称加密方法的处理速率一般比不对称加密方法高一个数量级,从而降低处理器的负荷。 因此,安全协议(如SSL/TLS)提供了密钥安全交换的机制,一般密钥通常采用公共密钥加密策略传送。在上述示例中,节点B生成密钥并利用节点A的公共密钥进行加密,然后再传送给节点A。由于只有节点A能解密该信息,因此在整个线路上发送该密钥并不会降低密钥的安全性。一旦节点A收到该消息,就可采用更快的密钥方法(如DES)进行通信。 消息摘要 消息摘要是将任意长度的位序列和密钥作为输入,输出固定长度位序列的一种算法。输出序列代表了输入序列的内容,而且算法可保证消息的完整性。输入位的改变直接导致输出改变。当输入与只被发送方和接收方所知的密钥相结合时,消息摘要还可验证身份。最常用的两种消息摘要算法是消息摘要5(MD5)和安全散列算法1(SHA-1)。由于SHA-1通常采用的密钥长度较长,因此安全性高于MD5。 摘要算法可用来计算消息载荷的消息验证代码(MAC),MAC可用作安全校验和。只需以共享密钥和消息载荷为输入序列,即可采用上述任意一种摘要算法计算MAC。MAC不仅能为抵御网络主动攻击(如篡改或伪造消息包)提供保护,而且当未采用加密时还可用来保障完整性(而非身份)。像SSL/TLS这些协议则采用了以上两种MAC算法(MD5和SHA-1),这样当一种算法失效时,仍然能采用另一种算法保护消息。 MAC还可用于数字签名。假定发送方和接收方在MAC计算中共享同一密钥,发送方可采用MAC对消息载荷加密,而接收方同样可采用共享密钥计算MAC。只有当两者的MAC值匹配,发送方才能发送这条消息。 公共密钥和证书 公共密钥加密策略推动了三类网络安全服务的发展:加密和解密、数字签名和密钥交换。本文不涉及密钥管理问题,而主要讨论以下问题: 1. 谁生成了这些密钥对?2. 这些密钥对存储在何处?3. 怎样确认密钥产生者的身份? 第一个问题很容易回答,可由身份明确的计算机生成密钥。例如,网络浏览器和一些电子邮件程序就包含生成这些密钥对的软件。这些密钥存储在本地计算机上,一经生成即可公布公共密钥。像SSL/TLS这些协议还包含一些规定网络节点如何传送公共密钥的条款。 公共密钥加密方法并不特别安全,如果任何计算机都能生成密钥对,那么根本就不能进行身份验证。一些不良用户可轻易地生成密钥对,从而假冒第三方进行通信。 上面的身份验证问题可由认证机构(CA)解决。生成密钥对时,将公共密钥提交给CA。认证机构负责验证提交密钥对的个人或组织的身份和证明。验证的级别从只验证姓名和电子邮件地址到通过信用卡或信用报告验证提交者的身份。 一旦CA验证了提交者的身份,就会发给认证证书。在网络交易中,由证书建立单方或双方的身份来建立一种信任关系。证书可由CA以数字方式进行签发。这样,如果CA值得信任,那么就该相信CA颁发的证书,并信任经过认证过的公共密钥。数字证书具有很多种形式,本文主要介绍的互联网安全协议中常采用的X.509。X.509属于ITU规范,此类证书通常包含: 1. 提交者公共密钥;2. 发布证书(CA)的机构名称;3. 证书的有效期限;4. 数字签名算法; 5. 认证机构的数字签名。 SSL和TLS协议 在1995年,Netscape公司开发了安全套接层协议(SSL)并首先应用于Navigator产品中。互联网工程任务组(IETF)接受了该协议并最终发布了RFC 2246协议。SSL和TLS这两个网络协议非常相似,只是一些加密算法和MAC算法略有不同。本文将重点研究该协议,为简化起见,将两者统称为TLS。TLS包含如下内容: 1. 算法协商;2. 加密和解密;3. 通过MAC的消息验证;4. 密钥交换;5. 数字签名。 如图5所示,TLS必须位于某些可靠连接协议的上层,而可靠连接实际上就是指TCP。那些通常直接运行于TCP之上的高层协议,如HTTP和SMTP也可运行于TLS之上。目前已经提出了将TLS与telnet、FTP、Kerberos及其它协议一起使用的互联网草案。 TLS工具包一般用来精确地模拟套接字编程接口,具有套接字特征的API可以简化高层协议(如HTTP)的编程实现。 实际上,TLS采用了两种策略来保障协议安全。第一种采用不同的端口进行安全的数据传输,这时高层协议必须侦听常规端口以及用来传输网络消息的安全端口。第二种策略在高层协议的常用端口必须区分常规传输流和安全传输流。HTTP协议采用第二种策略,当URL以https://开头时,就将在客户端(网络浏览器)和HTTP服务器之间建立安全信道。 TLS连接的会话的发起者总是客户端。一个基于RSA加密算法的TLS会话建立过程如下(见图6,其它的加密算法与该方法相似): 第1步,客户端通过发送“hello”消息建立TLS连接。该消息包含协议版本号(SSL为3.0,TLS为3.1)、客户端支持的加密方法、MAC和压缩规则。客户端还发送一串用以生成主秘(master secret)的随机数; 第2步,服务器发送支持的TLS版本号,并选择第1步中提出的一种加密方法/MAC。服务器也将发送一串用以生成主秘的随机数; 第3步,服务器发送包含服务器公共密钥的认证; 第4步,服务器通知客户端可以开始生成密钥。如前所述,不对称加密的计算量高于对称加密,这就是为什么像SSL/TLS和IPSec这样的协议会对应用数据采用对称加密的原因; 第5步,客户端生成预主秘(premaster secret),这是另一串随机数。预主秘采用服务器的公共密钥进行加密,并在第5步中发送至服务器。这时服务器和客户端都生成主秘,主秘是专门为客户端和服务器加密提供密钥并被客户端和服务器用来计算MAC的一串数据。主秘是根据客户端和服务器上的随机数和预主秘生成,并且不在线路上传输。一旦计算出主秘,就可进行安全通信。 第6步,客户端通知服务器:所有从客户端发出的传输流将采用得到认可的加密序列和独立生成的密钥信息进行加密; 第7步,客户端通知服务器,客户端已完成了最初的握手连接。第7步的完成消息经过了加密; 第8步,允许服务器通知客户端,所有从服务器发出的传输流将进行加密; 第9步,服务器发送“加密已完成”的消息到客户端,这表明服务器完成了最初的握手连接; 在第10和第11步中,加密的应用层传输流将在客户端和服务器之间传输。这时,客户端或服务器都可以请求结束连接。如果出现这种情形,客户端或服务器将发送一条明确的提醒信息。 图7显示了相对简单的TLS消息格式。可能的TLS消息格式有以下四种类型:握手、提醒、更改加密规范和应用数据。 线路上的每次传输均可拆分成一系列单个或多个TLS记录,TLS记录的格式如图8所示。 目前,TLS具有几种公开源代码的商用解决方案。RSA Security、Certicom和SPYRUS均推出了商用C语言实现方案。其中最常用的公开源代码的C语言版本是OpenSSL,目前还存在其它一些版本。为实现与Apache网络服务器集,公开源代码的版本通常都做了适当修改。 HTTP协议 HTTP协议具有两种安全验证方法:基本验证和摘要验证。在这两种方法中,在客户端通过用户名/密码对验证自己的身份之前,服务器均可拒绝服务请求。作为HTTP客户端,网络浏览器可显示一个对话框,以便用户输入用户名/密码对,然后将该请求再次提交给服务器。 基本验证在线路上不对用户名/密码对进行加密,尽管线路在其Base64编码系统中对用户名/密码对进行了编码。在摘要验证中,当服务器拒绝服务请求时,服务器将向客户端提供一个随机数,此随机数是一段一次性使用的数据,一旦客户端获得了用户名/密码对,即对用户名、密钥、随机数、HTTP方法和请求的URL执行Hash处理,而只把Hash值返回给服务器。这样,密钥将永远不会以明文的形式发出。尽管摘要验证已经在多年之前就定义了,但直到现在才逐渐得到广泛应用。



关键词: 转贴     嵌入式     系统     网络     连接     安全     策略     数据         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]