计算机系统基础知识_安全性

概述

计算机安全涵盖范围非常之广,既有硬件也有软件和技术,还有安全管理监督体系,密码学,容错容灾等领域。

其中安全管理体系非常重要,其中有技术安全性、管理安全性及政策法律安全性等问题。

下面简单了解一下计算机的安全规范、威胁及较为流行的加密及认证技术。


计算机安全等级

计算机软件作为一种产品,也应和其他产品一样有可遵循的规范,以便购买者知道所购买的产品是否符合规范,不同的组织和机构都制定过一些安全评估标准,主要有下面5个:

  1. 美国国防部和国家标准局制定的《可信计算机系统评估准则》(TCSEC)

    该准则将系统划分为4组7个级别,如下表所示:
    计算机系统基础知识_安全性

  2. 加拿大*制定的《可信计算机产品评估准则》(CTCPEC)

  3. 美国*制定的《联邦(最低安全要求)评估准则)(FC)

  4. 欧洲英法美德四国国防部门信息安全机构联合制定的《信息技术安全评估准则》(ITSEC),该准则也是欧盟各国共同使用的标准。

  5. 美国指定的《信息技术安全通用评估住着呢》(CC),国际标准组织在1996年批准该标准以ISO/IEC 15408-1999的名称列入国际标准。

我国也有一个于1999年提出的国家标准GB 17859-1999《计算机信息系统安全保护等级划分准则》。


安全威胁

随着互联网壮大,信息交换的激增,安全威胁造成的危害越来越受到重视。所谓安全威胁,即某个人、物、事件对某一资源的机密性、完整性、可用性或合法性所造成的危害。

安全威胁分为两类,一种是故意(渗透、攻击等);一种则是无意(系统设计错误等)。

典型的威胁如下表:

威胁 说明
授权侵犯 为某一特权使用一个系统的人却将该系统用做未授权目的
拒绝服务 对信息和其他资源的合法访问被无条件的拒绝,或推迟与时间密切相关的操作
窃听 信息从通信过程中泄露出去
信息泄露 信息被泄露给某个未授权的实体
截获/修改 某通信数据项在传输过程中被改变、删除或替代
假冒 一实体假装成另一实体
否认 参与通信交换的一方否认曾发生过的交换
非法使用 资源被未授权的人或以未授权方式使用
人员疏忽 一个有授权的人为了利益或粗心将信息泄露
完整性破坏 对数据进行未授权的创建、修改或破坏,使数据一致性受损
媒体清理 信息从被废弃的媒体中获得
物理入侵 绕过物理控制从而取得系统的控制权或访问
资源耗尽 某一资源被故意超负荷使用,导致其他正常用户的服务被中断

加密技术

加密是最常用的安全手段,其关键就在于加密、解密及**的管理。通常把数据原本的样子叫做明文,加密后的得出的叫做密文。加密的基本过程就是对明文按照某种规则运算,使其变成不可读的密文,只有通过**才能将密文还原为明文。

数据加密和解密是一对逆过程,数据加密是用加密算法EncodeEncode,加***K1K_1,将明文PP加密为密文CC,记为:

C=EncodeK1(P)C = Encode_{K_1}(P)

数据解密则是通过解密算法DecodedDecoded,解***K2K_2,将密文CC解密为明文PP,记为:

$ P = Decoded_{K_2}©$

在安全保密中,主要就是通过合理的运用**加密和管理机制来保证网络信息的通信安全。加密及***又有 对称性加密非对称加密 两种。相应的,数据加密技术也分为对称加密及非对称加密。

对称加密技术

对称加密特点就是文件加密和解密使用相同的**,此之谓对称。常用的对称加密算法有如下几种:

  1. 数据加密标准(DES, Digital Encryption Standard)

    主要使用替换和移位的方法加密,它采用56位的**对64位二进制数据块进行加密,每次加密可对64位输入数据进行16轮的编码,一系列替换和移位后,输入的原始数据将会转换成完全不一的输出数据。DES算法运算速度快,**产生易,适合在任意计算机或专用芯片上实现。

  2. 三重DES(3DES / TDEA)

    在DES的基础上来,即用两个56位**K1,K2K_1, K_2,发送方用K1K_1加密、K2K_2解密,再用K1K_1加密。接收方则是反着来,先用K1K_1解密,再用K2K_2加密,再用K1K_1解密。这就是三重的来由。但其作用实际上等于将**长度加倍。

  3. RC-5(Rivest Cipher 5)

    由公钥算法创始人之一Ron Rivest提出,RSA数据安全公司很多产品都用了RC-5算法,在RCF2040中定义。

  4. 国际数据加密(IDEA, International Data Encryption Adleman)

    在DES基础上发展而来,有点类似于三重DES,其**长度为128位。它设计一系列的加密轮次,每轮加密都使用从完整**中生成的子**。其标准由PGP(Pretty Good Privacy)系统使用。

  5. 高级加密标准(AES, Advanced Encryption Standard)

    基于排列和置换的算法,它使用几种不同方式来排列和置换,其也是一种迭代的算法,可以使用128、192、256位**,并且用128位分组加密和解密数据。

非对称加密技术

非对称加密算法需要两个**:公共**(Public Key)私有**(Private Key),公共**与私有**是成对的,如果用公共**加密,则只能使用私有**解密,反之亦然,由于整个过程中需要使用一对不同的**,这就是非对称的来由。

其实现机密信息交换的基本过程是,A生成一对**并将其中一个(公共**)向其他地方公开;得到该公共**的B使用该**对信息加密再发送给A;A再使用一对**中的私有**对信息进行解密。这样一来,就解决了**本身怕泄露的缺点,因为在非对称加密中,仅有公共**是无法解密由公共**加密的信息的,因此公共**可以在不安全的信道上发送。

RSA(Rivest, Shamir and Adleman)算法就是一种非对称加密算法,它按照如下流程来实现这个过程:

  1. 选择两个大素数p和q(>10100>10^{100}​
  2. n=p×q,z=(p1)×(q1)n = p \times q, z = (p-1) \times (q-1)​
  3. 选出一个数ddzz互质
  4. 选出一个数ee​,使其符合e×d=1(modz)e \times d = 1(mod z)​

公共**为:(e,n)(e, n)​,私有**为:(d,n)(d, n)​

对明文PP​加密,则要把明文拆分为k位的块,k是满足2k<n2^k < n​的最大整数,于是最终有0P<n0 \leq P < n​

加密时:C=Pe(modn)C = P^e(mod n)​

解密时:P=Cd(modn)P = C^d(mod n)

其数学原理在于大素数分解的困难性,要分解200位的素数需要数十亿年来完成。但由于非对称加密算法复杂,耗时长,不适合对大文件加密,只适用于少量的数据加密。

例如:假设 p=2,q=11,n=22,z=20,d=7,e=3,C=P3(mod22),P=C7(mod22)p=2, q = 11, n = 22, z = 20, d=7, e=3, C=P^3(mod 22), P = C^7(mod 22),则加解密过程如下:

C=23(mod22)=8C = 2^3(mod22) = 8

P=87(mod22)=2097152mod  22=2P = 8^7(mod22) = 2097152 \mod 22 = 2


**管理

**是有生命周期的,包括**和证书的有效期,及已被撤销的**和证书的维护等。并不是有了**就万事大吉,**管理不善同样会存在无意识泄露的问题,世界上任何的保密都是相对的,是有时效的。

**管理主要的就是指对**的安全管理,包括其产生、备份、恢复、更新等。

**产生

**产生是证书申请过程中重要的一步,其中私钥由用户保留,公钥和其他信息则交给CA中心进行签名以产生证书。根据证书类型不同,产生有不同的形式和方法。对于普通证书和测试证书,由浏览器或应用产生,但这种方式一般**强度较低,不适合重要的网络应用。对于重要的证书,如商家证书等,**由专用程序或者CA中心产生,这样可以保证产生的**强度足够大。

**备份及恢复

在一个公开**体系(PKI, Public Key Infrastructure)系统中,维护**的备份至关重要,否则当**丢失后就会导致所有的加密数据丢失。**的备份和恢复就是PKI**管理中重要的一环,要达到使用PKI的企业和组织在**丢失后仍然能得到确认,受**保护的信息也能被恢复。

企业级的PKI产品至少应支持用于加密的**存储、备份、恢复。**会由口令进行保护,而口令丢失就是最常见的安全疏漏之一。所以PKI产品都应有在口令丢失的情况下让用户在一定条件下恢复**的可能性。

**更新

如果**一直都是用同样的一个,很难保证私钥长期保密性,也难保不被泄露。而且一个**加密的信息越多,风险则越大。

因此对于每一个CA颁发的证书都存在有效期,**的生命周期长短由CA中心确认,一般为2~3年。当用户疑似私钥泄露或到期都应该更新私钥。这时应该废除原有的证书,产生新的**对。

多**管理

假设一个机构中有100个用户,它们之间任意两个都要能进行秘密会话,那么每个用户就需要记住99个**,总共需要4950个**。这显然是不现实的,因此有人提出了**分发中心(KDC, Key Distribution Center)的概念,即用户只记住和KDC会话的密码即可,其他的都存放于KDC之中。最近几年流行用于个人的“花密码”,内置于chrome浏览器的花密码就是这一种类型。但它仍然是存在缺陷的,显然,所有鸡蛋都在一个篮子里虽然方便使用,但危险性也会提升,只是避免了网络撞库的风险。


认证技术

认证不同于加密,一般只解决通信双方的身份问题,认证的过程会涉及加密和**。通常认证使用账户名和密码、摘要算法和基于PKI认证。

一个有效的PKI系统必须安全透明,用户在获得加密和数字签名服务时无需了解PKI内部运作机制。在典型有效的KPI系统中,除了创建、发布、撤销,还应提供**管理系统,这极大的影响PKI系统的规模和运行成本。在一个企业中,PKI系统必须有能力为用户管理多对**和证书提供安全策略编辑及管理工具。

PKI是一种遵循既定标准的**管理平台,为所有网络应用提供加密和数字签名等密码服务及所必须的**和证书管理体系。简单而言,PKI就是利用公钥理论和技术建立的安全服务基础设施。PKI技术是信息安全的核心,也是电子商务的关键和基础技术,完整的PKI系统必须具有权威认证机构(CA)、数字证书库、**备份及恢复、证书注销、应用接口(API)等基础构成:

  1. 认证机构,即数字证书申请及签发机关,CA必须具备权威性特征
  2. 数字证书库,用于存储已签发的数字证书及公钥
  3. **备份及恢复,如前文提及
  4. 证书注销,如前文提及,证书必须存在有效期和主动注销的能力,否则安全性就难以得到保障
  5. 应用接口,为了让用户能方便的使用PKI服务,一个完整的PKI系统还需提供应用接口,使得各种服务能够以安全、一致、可信的方式与PKI交互。

PKI发展的一个重要方面就是标准化问题,目前PKI标准主要有两个方面,一是RSA公司公钥加密标准(PKCS, Public Key Cryptography Standards),它定义许多基本的PKI部件和请求格式等;二是由Internet工程任务组(IETF, Internet Engineering Task Force)和PKI工作组(PKIX, Public Key Infrastructure Working Group)所定义的一组具有互操作性的公钥基础设施。在今后很长一段时间内这两个标准都会共存,因此大部分PKI产品为了兼容性也会同时支持两种标准。

哈希函数(Hash)与信息摘要(Message Digest)

哈希函数提供了一种独特的计算过程:输入一个长度不固定的字符串,返回一串固定长度的字符串,又称作HASH值。哈希函数主要解决两个问题:在某一特定时间内,无法查找经哈希操作后生成的特定HASH值的原文;也无法查找两个经HASH操作后生成相同的HASH值的不同原文。哈希函数的特性就是其产生的是“数字指纹”。

信息摘要简要描述了一份较长的信息或者文件,可以看做是文件的“数字指纹”。对于特定文件而言,其摘要应是唯一的。信息摘要可以公开,不会泄露文件中的任何信息。

MD5

MD5是由Ron Rivest设计专门用于加密处理并广泛使用的哈希函数。它以512位为分组处理输入的信息,且每一分组被划分为16个32位子分组,一系列处理后,算法输出由4个32位分组组成,级联后产生128位的散列值。

其有如下特点:

  1. 压缩性:任意长度的数据得出的MD5值都是固定的
  2. 容易计算:计算任意数据的MD5值都很容易
  3. 抗修改性:原数据的任意变动都会使最终的MD5值完全不一
  4. 强抗碰撞:已知原数据和其MD5值的前提下,找到另一个数据能产生同样的MD5值非常困难

最新普遍已经认为MD5的抗碰撞性不足,因此现在都使用SHA256方法来产生信息摘要以做验证。

数字签名与数字加密的区别

数字签名是认证技术中的核心,使用主要经过以下过程:

  1. 信息发送者用单向散列函数(哈希函数)对信息生成摘要。
  2. 信息发送者使用自己的私钥签名信息摘要。
  3. 信息发送者把信息本身和已签名的信息摘要一起发送。
  4. 信息接收者通过使用与发送者同一个的哈希函数对接收信息本身产生新的摘要,再使用发送者的公钥对发来的摘要进行验证,互相比对以确认身份和信息是否被修改。

数字加密主要经过以下过程:

  1. 需要发送信息时,首先生成一对对称**,用对称**加密要发送的原文。
  2. 信息发送者使用接收者提供的公钥加密上述对称**。
  3. 将前面生成的结果组合起来一起发送给接收者,其组合称为“数字信封”。
  4. 接收者使用自己的私钥解密对称**,再用对称**解密密文,得到原文。

虽然加密和签名都使用了公开**体系,但实现的过程是相反的,数字签名使用的是发送方的**对,发送方用私钥加密,接收者用发送方的公钥解密,这是一对多的关系,任何拥有公钥的都可以验证签名的正确性。而加密则使用接收方的**对,这是多对一的关系,任何拥有接收方公钥的人都可以向接收方发送加密信息,只有接收方拥有唯一的私钥,也是唯一可以对信息解密的人。

另外,数字签名只使用非对称加密算法,它能保证信息的完整性、身份认证和不可否认性;而数字加密采用对称加密与非对称加密结合的方法,它保证的是数据的保密性。


SSL协议

安全套接层(SSL, Secure Sockets Layer) 协议目的是提高应用程序之间数据的安全系数,其整个概念可以总结为:一个保证任何安装了SSL的客户和服务器之间事务安全的协议,它涉及所有TCP/IP应用程序。

该协议就是上面介绍的加密技术和认证技术的应用,它主要提供如下三方面服务:

  1. 用户和服务器合法性认证

    为了辨识对应的端,客户端和服务端都有各自的识别号,而这些识别号都由公钥加密。为了验证用户是否合法,SSL要求在握手交换数据时进行数字认证。

  2. 加密数据以隐藏被传送的数据

    握手信息中就已采用了不同的加密手段,保证其机密性和完整性,并且用数字证书鉴别。

  3. 保护数据完整性

    采用哈希函数来提供信息的完整性保护。

SSL协议在通信过程主要有如下几个阶段:

  1. 接通,类似TCP的握手
  2. 密码交换,客户端与服务器互相交换密码,有RSA、Diffie-Hellmanf和Fortezza-KEA算法等
  3. 会谈密码,双方产生彼此的会谈密码
  4. 检验,检验密码合法性
  5. 客户认证,服务端认证客户端的可信度
  6. 结束,客户端服务端之间互相交换结束

当上述阶段完成后,两者就开始加密传送数据,采用的方法即上面的数字加密形式。


数字时间戳技术

这是数字签名的一种变体,在电商交易过程中,时间信息非常重要,为了防止该信息被伪造和篡改,产生了数字时间戳(DTS, Digital Time Stamp Service)技术,它能提供电子文件的日期和时间的安全保护。

时间戳是经加密后形成的文档,包括3个部分:

  1. 需加时间戳文件的信息摘要
  2. DTS收到文件的日期和时间
  3. DTS的数字签名

它产生的过程一般是:用户将需要加时间戳的文件的摘要信息发送给DTS,DTS收到摘要信息后加入收到的日期时间,随后对其进行数字签名发回。

数字时间戳的时间信息是由认证单位来管理的,所以是以DTS收到文件的时间为依据。