首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

4.3    加密系统

4.3.1  简介

加密系统是最常见的用来提供安全的方法,它可以用来实现下列4个目标。

●       信息机密性:只有经过确认的接收方才能从加密的信息中提取内容;

●       信息完整性:接收方应能确定信息在传输过程中是否被修改过;

●       发送方确认:接收方能分辨出发送方,并检查出该发送方是否发送过该信息;

●       发送方认可:发送方若确实发送过该消息,那么它不能否认。

显然,并不是所有的加密系统(算法)都实现了或是打算实现上面的4个目标。

4.3.2  对称加密系统

使用对称(传统的加密)加密系统时,数据使用密钥变换(加密),并组合成只能通过对称变换使用相同的密钥来恢复原状(解密)的形式。除了保证数据机密性之外,加密还能保证数据的完整性。必须事先知道密钥才能产生可预知解密结果的密文。这样只要在加密前加上一个校验码,并在解密后检查该校验码,就能发现是否有人修改过该数据。对称密钥加密系统的示意图见图4-1。

图4-1  对称密钥加密

实例:数据加密标准(DES,Date Encryption Standard)

DES包括两个部分:一个算法跟一个密钥。DES算法包含一个简单变换迭代次数的数字,该简单变换交替应用移项和置换技术。DES通常被称作私钥密码,数据的加密和解密使用的是同一个密钥。发送方跟接收方都必须保密该密钥。因为DES算法是对外公开的,知道了密钥任何人都可以知道被加密的内容。

4.3.3  非对称加密系统

在非对称加密系统当中,加密和解密是通过一对密钥来进行的,这样,知道一个密钥并不能推算出另一个密钥。其中一个密钥称为公钥,是对外公开的,另一个被称为私钥,是保密的。非对称系统的优势在于不需要对公钥进行保密,公钥可以像电话号码一样对外公开,但只有拥有私钥的人才能对数据解密。非对称密钥加密系统的示意图见图4-2。

图4-2  非对称密钥加密

实例:RSA

公钥加密系统最显著的例子就是RSA,它是以它的发明者Rivest、Shamir和Adleman的名字命名的。他们三人于1978年在MIT发明了该算法。RSA算法除了加密外还提供了鉴别机制,它使用了两个密钥:一个公钥和一个私钥。在RSA中,公钥和私钥在功能上是没有区别的,一个密钥既可以用作公钥,也可以用作私钥。RSA的密钥都是使用数学方法产生的,有部分密钥就是通过把素数组合起来得到的。RSA(其他算法也类似)算法的安全性是通过很长的密钥来保证的(RSA使用256或512位的密钥)。

不管在对称加密系统还是非对称加密系统中,都要对私钥进行保护。私钥一定要保密,不能告诉其他人,不能存放在别人能使用的系统中。对存放密钥的文件一定要提供密码保护。另一个问题是,对使用密钥的系统而言,它所使用的算法是对外公开的。也就是说,这个算法可能被暴力破解。暴力破解程序通常尝试所有可能的密钥,只需要一定的计算能力就可以了。如果密钥够长,暴力破解所花的时间将非常可观。现在,密钥的长度通常是1024到2048位。尽管如此,由于使用PC机群可以很方便地得到强大的计算能力,而且每18个月PC的计算速度就快一倍,这也就意味着暴力破解在不久的将来会变为现实。

4.3.4  数字签名

在公钥系统中是使用数字签名来保证完整性的。它跟现实中在文件上签名以授权该文件的方式类似,数字签名是一种授权数字信息的方法。数字签名自身是一个符合某种数字标准的比特序列。

绝大多数的数字签名依赖于公钥加密系统工作。假定有这样一个情况:有人要发送一个消息给另一个人并附上了消息的来源,而他并不介意消息的内容被别人看到。在这样的情况下,发送方将原消息连同用私钥(不是公钥)加密过的密文一起发出去。接收方在接收到密文之后就可以使用发送方的公钥解密该密文,将解密得到的消息跟原消息做比较,从而知道这个消息是否真地是发送方发送过来的。如果两者相符,那该消息确实是发送方发出的,因为只有消息源才有加密数据的私钥。通常,使用加密的强哈希函数[4]对信息进行预处理,将处理得到的分类信息而不是原信息进行加密,这样可以使数字签名的长度短很多,并且可以节省很多的时间,因为哈希方法比公钥编码要快得多。

4.3.5  公钥认证

公钥认证是含有一个公钥和一个诸如人名之类身份信息的文件,公钥认证是由一个证书权威(CA,Certification Authority)签发的。CA是一个保证人,它检查公钥是否真地属于注册该认证的实体。

认证需要大量使用公钥加密系统,因为任何用户都可以生成一对公钥、私钥,所以从原理上说,如果数据源发送一个使用接收方的公钥加密的密文,那么攻击者就可以迷惑数据源,让它使用他们的公钥对数据进行加密,从而就可以很方便地访问到信息的内容,因为它们知道相应的私钥。但是,如果数据源只信任权威签署的公钥,那么此类攻击就会被阻止。在大范围内配置使用时,一个用户可能对另一个用户的CA并不熟悉(也许他们各自有自己的CA),所以一个认证中还应该有其CA的公钥,该公钥是由更高层次且被众人认可的CA所签署的。这个过程会产生一个认证的分层和复杂的描述信任关系的图。

公钥基础结构(PKI,Public Key Infrastructure)是指在大范围内设置的管理证书的软件。在X.509 PKI系统中,认证的层次一直是个从上而下的树状结构。其根认证在顶部,表示其已经为众人所认可,而不用再被认证了。当知道自己的私钥暴露之后,认证是可以被撤销的。在这种情况下,其他用户需要查看认证撤销列表,它通常放在远程主机上,而且会经常被更新,一个认证通常包括:

●       CA签发的公钥;

●       一个能跟个人、一台电脑或是一个机构联系起来的名字;

●       有效使用期;

●       撤销列表的地址(URL)。

最常用的认证标准是ITU-T X.509[5]。一个X.509认证通常是个普通的文档文件,它包含用特定的语法生成的信息:

●       Subject,用户的名称;

●       Subject’s public key,包括了公钥及其他诸如生成公钥的算法等信息;

●       Issuer’s subject,CA的特征名(表4-1)。

表4-1  CA的特征名

特征名(DN,Distinguished Names)

X.509认证中名字不简单编码为普通名字,比如Mark Baker、Certificate Authority XYZ、System Administrator。名字编码为特征名,它们是名字-值对。下面列出了一个典型的特征名的各项特征值:

OU=Portsmouth,L=DSG,CN=Mark Baker

一个DN可以有几个不同的特征值,最常见的特征值如下:

OU:组织单位(Organizational Unit)

L:地址(Location)

CN:普通名字(Common Name),通常是用户名

●       数字签名(Digital Signature),认证包含了一个认证所有信息的数字签名。这个数字签名是用其CA的私钥生成的。为了检验该数字签名,我们需要知道CA的公钥,可以在CA的认证里找到。

4.3.6 证书权威

CA (Certification Authority)是为了给实体提供一种可信任的数字身份而产生的,该数字身份可用来以一种可靠的方式对资源进行访问。它的主要职能就是授权(产生并签发)认证,并保证合法的认证可以被其他人接受与访问,还有就是在必要的时候撤销认证并定期公布已撤销的认证列表。CA还必须保存其所有的操作记录。

CA可以给用户办理个人认证,做这种认证的目的是把个人用户当作远程实体。个人认证也可以用作数字签名。CA也可以签发主机(服务器)和服务认证。每个连接到网络的主机和服务都必须能够把自己标识起来。

有一些CA能给低层次的CA授权认证,这样就产生了很多低层的CA。不管是上层的还是下层的,CA都要发行一个称为认证策略声明(CPS,Certificate Policy Statement)的文档。该文档详细规定了授权认证的条件,以及该CA所授权的认证的可信度。

CA授权一个公钥认证表明它信任该认证的所有者,而且这些认证所有者的信息属实。为了保证认证所有者的真实身份跟认证当中的信息相符合,CA应该去核实申请者的身份。认证的用户是因为相信CA会对认证所有者的身份做过确认,才相信认证的使用者不是假冒的。

4.3.7  防火墙

防火墙是一种附加到网络当中的硬件或者软件,它的作用是防止由于某些机构的管理政策而产生的禁止通信。常见的防火墙有两种:传统的和个人的。在传统的防火墙中,最具代表性的就是专用网络设备或置于两个或更多网络连接边缘处的电脑。所有进/出与防火墙相连网络的数据,防火墙都会进行过滤。另一方面,个人防火墙是一种软件应用程序,它能够过滤所有进/出单个PC的数据。

传统的防火墙可以分成几个类别跟一些子类。它们共同的基本任务是避免所连接的网络被入侵。它们采用工作于网络中的网络层与/或传输层的不同方式来达成这个任务。

网络层防火墙工作于TCP/IP协议栈的网络层中。只有符合防火墙管理员所设置的规则的数据报才可以通过防火墙,这样就保证了对IP数据报的过滤。至于那些比较宽松的设置,允许不符合一条或多条拒收规则的数据报通过。

应用层防火墙工作于TCP/IP协议栈的应用层中。就拦截来说,对于所有的网络,不管是用Telnet还是Ftp传输,防火墙都会拦截所有发出或是送往应用程序的数据报。这种防火墙会阻塞数据报,通常的做法是在不通知发送方的情况下丢弃该数据报。

从理论上说,防火墙可以阻止所有不想要的传输到达被保护的主机。对所有的数据报进行检查,看其中是否有不合法的内容,这样防火墙就可以防止诸如病毒及特洛伊木马之类恶意代码的传播。但在实际操作当中,实现是非常复杂及困难的。由于应用程序的多样性及内容的差异性,要设计一个包含所有情况的防火墙是不可能的。

在某些情况下,通过硬件或是软件实现代理服务器,以应用程序的方式对传入的数据报(比如连接申请)做出响应,同时阻塞其他的数据报,可以起到一个防火墙的作用。代理服务器使得在外部系统当中损坏内部底层结构更加困难。在服务器保持完整的情况下,即使内部系统操作失误,也不会产生能够被外部利用的安全漏洞。内部地址空间的使用提高了安全性。即使这样,入侵者仍可以采用诸如IP欺骗等方法把数据报发送到内部目标网络。

要正确地设置防火墙是需要技巧的,这需要全面地理解网络通信协议跟计算机安全的原理。对防火墙的错误设置可以使它成为一个完全没有用处的安全设备。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论
     
    同类图书推荐