计算机技术必修课:安全、加密、认证、可靠性与性能详解
计算机技术必修课:安全、加密、认证、可靠性与性能详解
- 一、计算机安全概述
-
- 1.1、计算机安全等级
- 1.2、安全威胁
- 1.3、影响数据安全的因素
- 二、加密技术
-
- 2.1、对称加密技术
- 2.2、非对称加密技术
- 2.3、密钥管理
- 三、认证技术
-
- 3.1 Hash 函数与信息摘要
- 3.2 数字签名
- 3.3 SSL/TLS 协议
- 3.4 数字时间戳技术
- 四、计算机可靠性
- 五、性能评估
-
- 5.1、性能评测的常用方法
- 5.2、基准测试程序
- 六、总结
一、计算机安全概述
计算机安全是一个涉及广泛领域的综合性课题,它不仅涵盖硬件、软件和技术层面,还包括安全规划、安全管理和安全监督等方面。具体而言,计算机安全领域涵盖:
- 安全管理: 包括安全策略制定、风险评估、访问控制等。
- 通信与网络安全: 涉及数据传输加密、防火墙配置、入侵检测等。
- 密码学: 提供数据加密、身份认证、数字签名等安全机制。
- 安全体系及模型: 用于设计和评估安全系统,例如访问控制模型。
- 容错与容灾: 确保系统在故障或灾难情况下仍能保持可用性。
- 安全应用与系统开发: 指在应用和系统开发过程中融入安全考虑。
- 法律、犯罪及道德规范: 涉及计算机犯罪的法律法规和信息安全的伦理准则。
安全管理在计算机安全中占据核心地位。 信息系统的管理部门应根据管理原则和系统处理数据的保密性要求,制定相应的管理制度和规范。 这包括:
- 安全等级划分: 根据工作重要性对系统进行安全等级划分。
- 范围确定: 依据安全等级确定安全管理的具体范围。
- 制度制定: 制定机房管理制度、操作规程、系统维护措施等。
- 应急预案: 制定系统遭遇安全事件时的应急处理措施。
1.1、计算机安全等级
计算机系统的安全性可从技术、管理和政策法律三个维度进行考量。但是,安全产品购买者如何判断产品设计是否符合规范,以及能否有效解决计算机网络安全问题?为此,不同组织机构制定了一系列安全评估准则。以下是一些重要的安全评估准则:
- (TCSEC)《可信计算机系统评估准则》: 美国国防部和国家标准局推出。
- (CTCPEC)《可信计算机产品评估准则》: 加拿大制定。
- (FC)《联邦(最低安全要求)评估准则》: 美国制定。
- (ITSEC)《信息技术安全评估准则》: 由欧洲英、法、德、荷四国国防部门信息安全机构联合制定,实际上已成为欧盟各国使用的共同评估标准。
- (CC标准/ISO/IEC 15408)《信息技术安全通用评估准则》: 由美国制定,并于1996年被国际标准组织(ISO)批准,以 ISO/IEC 15408-1999 的名称正式纳入国际标准系列。
其中,美国国防部和国家标准局的《可信计算机系统评估准则》(TCSEC)及其技术解释文档(TDI)将系统划分为四个组,共七个安全等级,如表所示(TCSEC 安全等级划分):
1.2、安全威胁
随着信息交换的日益频繁,安全威胁造成的危害日益凸显。对信息保密的需求也从军事、政治、外交等地方迅速扩展到民用和商用领域。安全威胁是指任何可能对资源的机密性、完整性、可用性或合法性造成损害的个人、事物或事件。攻击则是威胁的具体实现方式。安全威胁可分为两类:
- 故意的安全威胁: 由恶意行为者有意为之,例如黑客入侵、病毒传播等。
- 偶然的安全威胁: 由于意外或疏忽导致,例如信息误发、硬件故障等。
下表列举了一些典型的安全威胁及其说明:
1.3、影响数据安全的因素
影响数据安全的因素可以分为内部因素和外部因素两大类。
(1)内部因素主要指组织内部的管理和技术措施,用于保护数据免受内部威胁和意外事件的影响。可采取以下措施:
- 数据加密: 采用强加密算法对敏感数据进行加密,防止未经授权的访问。
- 数据安全规划: 制定全面的数据安全策略和流程,明确责任人、安全目标、风险评估和应对措施。
- 安全存储体系: 建立可靠的安全存储体系,包括:
- 存储容量规划: 确保存储容量满足数据增长的需求。
- 容错数据保护: 采用 RAID 等技术,防止因硬件故障导致的数据丢失。
- 数据备份与恢复: 建立完善的数据备份策略和恢复机制,定期进行备份,并验证备份的有效性。
- 事故应急响应与容灾: 制定事故应急计划,并在异地建立容灾中心,确保在发生灾难时能够快速恢复数据和服务。
- 安全管理规范: 建立严格的数据安全管理规范,包括访问控制、权限管理、安全审计、培训等,提高员工的安全意识和操作规范。
(2)外部因素主要指来自组织外部的威胁,例如黑客攻击、病毒感染、自然灾害等。可采取以下措施:
- 数据分级与权限控制: 根据数据的敏感程度进行分级,并为外部使用人员分配相应的权限,确保只有授权人员才能访问特定数据。
- 身份认证: 采用多因素身份认证 (MFA) 等技术,包括:
- 密码: 设置复杂度高的密码,并定期更换。
- 口令: 使用一次性口令 (OTP) 或基于时间的口令 (TOTP) 进行身份验证。
- 生物识别: 采用指纹、声纹、笔迹等生物特征进行身份验证。
- 防火墙: 在网络边界部署防火墙,建立一道安全屏障,防止未经授权的外部访问和恶意流量。
- 入侵检测、审计与追踪: 部署入侵检测系统 (IDS) 和安全信息与事件管理 (SIEM) 系统,实时监控网络和系统活动,检测潜在的入侵行为,并进行安全审计和追踪。
- 物理环境保障: 确保计算机物理环境的安全,包括:
- 防辐射: 采取措施减少电磁辐射对设备的影响。
- 防水: 防止水淹等意外事故对设备造成损害。
- 防火: 部署消防设备,防止火灾蔓延。
二、加密技术
加密技术是保障数据安全和保密最常用的手段。其核心在于加密/解密算法和密钥管理。数据加密的基本过程是将明文文件或数据,通过特定的加密算法处理,转换为不可读的密文。密文只有在输入正确的密钥后才能还原成原始的明文,从而防止数据被窃取。
数据加密和解密是互逆的过程。加密过程使用加密算法 E 和加密密钥 K 1 K_1 K1 将明文 P 转换为密文 C,表示为:
C = E K 1( P ) C = E_{K_1}(P) C=EK1(P)
解密过程是加密的逆过程,使用解密算法 D 和解密密钥 K 2 K_2 K2 将密文 C 还原为明文 P,表示为:
P = D K 2( C ) P = D_{K_2}(C) P=DK2(C)
为了确保网络信息通信的安全,需要采用适当的密钥加密技术和有效的密钥管理机制。根据密钥的使用方式,密码体制可以分为对称密钥体制和非对称密钥体制。相应地,数据加密技术也分为对称加密(私钥加密)和非对称加密(公钥加密)两种类型。
2.1、对称加密技术
对称加密采用对称密码编码技术,其特点是加密和解密过程使用相同的密钥。这种加密方式在密码学中被称为对称加密算法。
一些常用的对称加密算法:
(1) 数据加密标准 (DES)。 DES (Digital Encryption Standard) 算法主要采用替换和移位的方法进行加密。它使用 56 位密钥对 64 位二进制数据块进行加密,每次加密过程包含 16 轮编码。每一轮都对 64 位的输入数据进行一系列的替换和移位操作,最终将原始数据转换为完全不同的 64 位输出数据。DES 算法的优势在于运算速度快、密钥生成容易,适用于在大多数计算机上通过软件实现,也适合在专用芯片上实现。
(2) 三重 DES (3DES 或 TDEA)。 三重 DES 是在 DES 的基础上进行改进的算法。它使用两个 56 位的密钥 K1 和 K2,发送方依次进行 K1 加密、K2 解密、K1 加密。接收方则进行 K1 解密、K2 加密、K1 解密。这种方式相当于将密钥长度扩展到 112 位,提高了安全性。
(3) RC5 (Rivest Cipher 5)。 RC5 算法由 Ron Rivest (公钥算法 RSA 的创始人之一) 于 1994 年开发。它在 RFC 2040 中定义,RSA 数据安全公司的许多产品都使用了 RC5 算法。
(4) 国际数据加密算法 (IDEA)。 IDEA (International Data Encryption Algorithm) 是在 DES 算法的基础上发展起来的,在结构上类似于三重 DES。IDEA 使用 128 位密钥,该长度在未来一段时间内被认为是安全的。与 DES 类似,IDEA 也是一种分组密码算法,它设计了一系列加密轮次,每一轮都使用从完整的加密密钥中生成的一个子密钥。IDEA 加密标准被 PGP (Pretty Good Privacy) 系统广泛使用。
(5) 高级加密标准 (AES)。 AES (Advanced Encryption Standard) 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 算法采用多种不同的方法来执行排列和置换运算。
AES 是一种迭代的、对称密钥分组密码。它支持 128 位、192 位和 256 位三种密钥长度,并以 128 位(16 字节)的分组大小来加密和解密数据。
2.2、非对称加密技术
与对称加密算法不同,非对称加密算法需要一对密钥:公钥(Public Key)和私钥(Private Key)。公钥和私钥相互关联,使用公钥加密的数据只能用对应的私钥解密,反之,使用私钥加密的数据只能用对应的公钥解密。 由于加密和解密使用不同的密钥,因此被称为非对称加密算法。
非对称加密有两个关键特性:
- 公钥用于加密,私钥用于解密。
- 私钥用于签名,公钥用于验证签名。
非对称加密算法实现机密信息安全交换的基本过程如下:
- 甲方生成一对密钥(公钥和私钥),并将公钥公开给其他方。
- 乙方获取甲方的公钥,并使用该公钥对机密信息进行加密。
- 乙方将加密后的信息发送给甲方。
- 甲方使用自己的私钥对加密后的信息进行解密,从而获得原始的机密信息。
只有甲方的私钥才能解密由其公钥加密的任何信息。
非对称加密算法的保密性较高,它避免了密钥交换的需求。然而,加密和解密过程通常比对称加密算法慢,计算复杂度高,因此不适合对大量数据进行加密,更适合于对少量数据进行加密,例如密钥交换、数字签名等。
RSA (Rivest-Shamir-Adleman) 算法是一种广泛使用的公钥加密算法。 它的密钥生成过程如下:
- 选择素数: 选择两个大的随机素数 p 和 q (通常大于 1 0 100 10^{100} 10100)。
- 计算 n 和 z:
- 计算 n = p × q。 n 也被称为模数。
- 计算 z = (p - 1) × (q - 1)。 z 也被称为欧拉函数。
- 选择 e (公钥指数): 选择一个整数 e,满足 1 < e < z 且 e 与 z 互质 (即它们的最大公约数为 1)。
- 计算 d (私钥指数): 计算 d,使得 e × d ≡ 1 (mod z)。 这意味着 e × d 除以 z 的余数为 1。可以使用扩展欧几里得算法来计算 d。
假设明文 P 被分成 k 位的块,k 是满足 2 k <n 2^k < n 2k<n 的最大整数,因此 0 ≤ P < n。
加密过程如下:
C = P e ( m o d n ) C = P^e \\pmod{n} C=Pe(modn)
其中,C 是密文。 公钥为 (e, n)。
解密过程如下:
P = C d ( m o d n ) P = C^d \\pmod{n} P=Cd(modn)
其中,P 是明文。 私钥为 (d, n)。
RSA 算法的安全性基于大数分解的困难性。 攻击者如果能够分解已知的 n 得到 p 和 q,就可以计算出 z,然后使用扩展欧几里得算法根据 e 和 z 计算出 d。 然而,分解一个 200 位的数需要大约 40 亿年,分解一个 500 位的数则需要大约 1 0 25 10^{25} 1025 年,这使得 RSA 算法在密钥长度足够长的情况下是安全的。
2.3、密钥管理
密钥具有生命周期,包括密钥和证书的有效期限,以及已撤销密钥和证书的维护期限等。 密钥的安全管理至关重要,管理不当可能导致密钥泄露。 拥有密钥并不意味着一劳永逸,任何保密措施都是相对的,且具有时效性。 密钥管理主要指密钥对的安全管理,包括密钥生成、密钥备份与恢复、密钥更新以及多密钥管理等环节。
(1) 密钥生成
密钥对的生成是证书申请过程中的关键步骤。用户保留生成的私钥,并将公钥和其他信息提交给 CA (Certificate Authority,证书颁发机构) 中心进行签名,从而生成证书。 根据证书类型和应用场景的不同,密钥对的生成方式也有所不同。
- 普通证书和测试证书: 通常由浏览器或终端应用程序生成。 这种方式生成的密钥强度较低,不适合用于高安全要求的网络交易。
- 商家证书和服务器证书: 一般由专用应用程序或 CA 中心直接生成。 这种方式生成的密钥强度较高,适合于重要的应用场合。
此外,签名密钥可能在客户端或 RA (Registration Authority,注册管理机构) 中心生成,而加密密钥则可能需要在 CA 中心直接生成,具体取决于密钥的应用场景。
(2) 密钥备份与恢复
在 PKI (Public Key Infrastructure,公钥基础设施) 系统中,维护密钥对的备份至关重要。 如果没有备份措施,密钥丢失将导致加密数据的完全丢失,这对于关键数据而言是灾难性的。 因此,密钥的备份与恢复是 PKI 密钥管理的重要环节。 即使密钥丢失,使用 PKI 的企业和组织也必须能够验证身份,并且受密钥加密保护的重要信息必须能够恢复。 为了防止单点故障,不能允许个人完全控制最重要的主密钥。
企业级 PKI 产品至少应支持用于加密的安全密钥的存储、备份和恢复。 密钥通常使用口令进行保护,口令丢失是管理员最常见的安全疏漏之一。 因此,PKI 产品应支持密钥备份,并在口令丢失的情况下,允许用户在满足特定条件后恢复密钥,并设置新的口令。
(3) 密钥更新
用户重复使用同一密钥与他人交换信息会降低密钥的安全性。 虽然用户的私钥不会公开,但难以保证私钥长期保密而不被泄露。 如果他人获取了用户的密钥,那么用户曾经与他人交换的所有消息都将不再保密。 此外,使用特定密钥加密的信息越多,攻击者可利用的材料就越多,从而增加了安全风险。
CA 颁发的证书都有有效期,密钥对生命周期的长短由 CA 中心确定,通常为 2-3 年。 当用户的私钥泄露或证书即将过期时,用户应更新密钥。 此时,用户可以撤销证书,生成新的密钥对,并申请新的证书。
(4) 多密钥的管理
考虑这样一种场景:在一个机构中有 100 个人,如果他们之间任意两人可以进行秘密对话,那么总共需要多少密钥? 每个人需要知道多少密钥? 如果任意两人之间需要使用不同的密钥,则总共需要 4950 个密钥,且每个人需要记住 99 个密钥。 如果机构的人数增加到 1000、10000 或更多,这种方法显然是不可行的,密钥管理将变得非常困难。 因此,需要研究并开发用于创建和分发密钥的安全方法。
Kerberos 提供了一种较好的解决方案。 Kerberos 由 MIT 开发,可以简化保密密钥的管理和分发。 Kerberos 通过建立一个安全的、可信任的密钥分发中心 (KDC, Key Distribution Center) 来解决密钥管理问题。 每个用户只需要知道一个与 KDC 进行会话的密钥,而不需要知道成百上千个不同的密钥。
三、认证技术
认证技术主要解决网络通信中双方身份验证的问题。认证过程涉及加密和密钥交换,常用的加密方法包括对称加密、非对称加密以及它们的混合使用。常见的认证方式有:账户名/口令认证、使用摘要算法认证和基于 PKI 的认证。
一个有效的 PKI 系统必须安全且透明,用户在使用加密和数字签名服务时无需深入了解其内部运作机制。 典型的、完整且有效的 PKI 系统,除了具有证书的创建、发布以及撤销功能外,还必须提供相应的密钥管理服务,包括密钥的备份、恢复和更新等。 缺乏完善的密钥管理系统会严重影响 PKI 系统的规模、可伸缩性以及在协同网络中的运行成本。 在企业环境中,PKI 系统必须能够为一个用户管理多个密钥对和证书,并提供安全策略编辑和管理工具,如密钥周期和密钥用途等。
PKI 是一种遵循既定标准的密钥管理平台,为各种网络应用提供加密、数字签名等密码服务以及必要的密钥和证书管理体系。 简而言之,PKI 就是利用公钥理论和技术建立的提供安全服务的基础设施。 PKI 技术是信息安全技术的核心,也是电子商务的关键和基础技术。 PKI 的基础技术包括加密、数字签名、数据完整性机制、数字信封和双重数字签名等。
一个完整的 PKI 系统通常包含以下基本组成部分:
- 认证机构 (CA, Certificate Authority): 数字证书的申请及签发机构,CA 必须具备权威性和公信力。
- 数字证书库: 用于存储已签发的数字证书及公钥,用户可在此获取其他用户的证书及公钥。
- 密钥备份及恢复系统: 如果用户丢失了用于解密数据的密钥,数据将无法解密,导致合法数据丢失。 为避免这种情况,PKI 提供了密钥备份与恢复机制。 需要注意的是,密钥备份与恢复必须由可信机构完成,且只能针对解密密钥,签名私钥为确保其唯一性而不能备份。
- 证书作废系统 (CRL, Certificate Revocation List): 证书在有效期内也可能需要作废,例如密钥介质丢失或用户身份变更等。 证书作废处理系统是 PKI 的一个必备组件,用于实现证书的撤销和管理。
- 应用接口 (API, Application Programming Interface): PKI 的价值在于使用户能够方便地使用加密、数字签名等安全服务。 因此,一个完整的 PKI 必须提供良好的应用接口系统,使各种应用能够以安全、一致、可信的方式与 PKI 交互,确保安全网络环境的完整性和易用性。
PKI 采用证书进行公钥管理,通过第三方可信任机构 (即 CA) 将用户的公钥和用户的其他标识信息 (如用户名和电子邮件地址) 绑定在一起,以便在 Internet 上验证用户身份。 PKI 将公钥密码和对称密码结合起来,在 Internet 上实现密钥的自动管理,保证网上数据的安全传输。
总而言之,所有提供公钥加密和数字签名服务的系统都可以被归结为 PKI 系统的一部分。 PKI 的主要目的是通过自动管理密钥和证书,为用户建立一个安全的网络运行环境,使用户可以在多种应用环境下方便地使用加密和数字签名技术,从而保证网上数据的机密性、完整性和有效性。 其中:
- 机密性: 数据在传输过程中不能被非授权者偷看。
- 完整性: 数据在传输过程中不能被非法篡改。
- 有效性(不可否认性): 数据不能被否认。
PKI 发展的一个重要方面是标准化。 标准化是建立互操作性的基础。 目前,PKI 标准化主要有两个方面:
- RSA 公司的公钥加密标准 (PKCS, Public Key Cryptography Standards): 定义了许多基本 PKI 部件,包括数字签名和证书请求格式等。
- 互联网工程任务组 (IETF, Internet Engineering Task Force) 和 PKI 工作组 (PKIX, Public Key Infrastructure Working Group) 所定义的一组具有互操作性的公钥基础设施协议。
在今后很长一段时间内,PKCS 和 PKIX 将会并存。 大部分的 PKI 产品为保持兼容性,也会对这两种标准进行支持。
3.1 Hash 函数与信息摘要
Hash 函数提供了一种计算过程:输入一个长度不固定的字符串,返回一串固定长度的字符串,又称 Hash 值或摘要。 单向 Hash 函数用于产生信息摘要。 Hash 函数主要用于解决以下两个问题:
- 在特定时间内,无法根据 Hash 值反推出原始报文。
- 难以找到两个不同的报文,经过 Hash 操作后生成相同的 Hash 值 (即抗碰撞性)。
因此,在数字签名中,Hash 函数可以用于验证签名和用户身份,并提供不可否认性。
信息摘要是对一份较长的信息或文件的简要描述,可以被看作长文件的“数字指纹”。 信息摘要用于创建数字签名,对于特定的文件而言,信息摘要是唯一的。 信息摘要可以公开,不会泄露相应文件的任何内容。
MD5 (Message Digest Algorithm 5) 是由 Ron Rivest 设计的专门用于加密处理的 Hash 函数,被广泛使用。 MD5 以 512 位分组来处理输入的信息,每个分组又被划分为 16 个 32 位子分组。 经过一系列处理后,算法的输出由四个 32 位分组组成,将这四个 32 位分组级联后生成一个 128 位散列值。
MD5 算法具有以下特点:
- (1) 压缩性: 任意长度的数据,计算出的 MD5 值长度都是固定的 (128 位)。
- (2) 易于计算: 从原始数据计算出 MD5 值很容易。
- (3) 抗修改性 (雪崩效应): 对原始数据进行任何改动,即使只修改 1 个字节,所得到的 MD5 值都会有很大区别。
- (4) 强抗碰撞性: 已知原始数据及其 MD5 值,想要找到一个具有相同 MD5 值的数据 (即伪造数据) 是非常困难的。 (注意:虽然MD5已经不再被认为是强抗碰撞的,因为已经发现了碰撞方法,但找到碰撞仍然具有一定的难度)
3.2 数字签名
数字签名主要经过以下几个步骤:
- (1) 生成信息摘要: 信息发送者使用单向 Hash 函数对信息生成信息摘要。
- (2) 签名信息摘要: 信息发送者使用自己的私钥对信息摘要进行签名。
- (3) 发送信息和签名: 信息发送者将信息本身和已签名的信息摘要一起发送出去。
- (4) 验证签名: 信息接收者使用与信息发送者相同的单向 Hash 函数对接收到的信息生成新的信息摘要,并使用信息发送者的公钥对接收到的签名进行验证,以确认信息发送者的身份和信息是否被修改过。
数字加密 (使用数字信封) 主要经过以下几个步骤:
- (1) 生成对称密钥并加密报文: 信息发送者首先生成一个对称密钥,并用该对称密钥加密要发送的报文。
- (2) 加密对称密钥: 信息发送者使用信息接收者的公钥加密上述对称密钥。
- (3) 组成数字信封: 信息发送者将第 (1) 步和第 (2) 步的结果结合在一起,形成数字信封,并发送给信息接收者。
- (4) 解密对称密钥和报文: 信息接收者使用自己的私钥解密被加密的对称密钥,再使用此对称密钥解密被发送方加密的密文,得到真正的原文。
数字签名和数字加密的过程虽然都使用公钥体系,但实现的过程正好相反,使用的密钥对也不同。 数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密 (实际上是签名),接收方用发送方的公钥进行解密 (实际上是验证签名),这是一个一对多的关系,任何拥有发送方公钥的人都可以验证数字签名的正确性。 数字加密则使用的是接收方的密钥对,这是一个多对一的关系,任何知道接收方公钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。
另外,数字签名主要保证发送信息的完整性、身份认证和不可否认性;而数字加密主要保证发送信息的保密性。 数字签名通常只采用非对称密钥加密算法 (Hash + 私钥签名),而数字加密则采用对称密钥加密算法和非对称密钥加密算法相结合的方法 (数字信封)。
3.3 SSL/TLS 协议
SSL (Secure Sockets Layer,安全套接层) 协议最初由 Netscape Communication 公司设计开发,主要用于提高应用程序之间数据传输的安全性。 随后发展为 TLS (Transport Layer Security,传输层安全) 协议,现在通常将两者统称为 SSL/TLS 协议。 SSL/TLS 协议的目标是:保证任何安装了安全套接字的客户端和服务器之间的事务安全,它涉及所有 TCP/IP 应用程序。
SSL/TLS 协议主要提供如下三个方面的服务:
- (1) 身份认证: 认证用户和服务器的合法性,确保数据将被发送到正确的客户端和服务器。 客户端和服务器都有各自的识别号,这些识别号由公钥进行编号。 为了验证用户是否合法,SSL/TLS 协议要求在握手交换数据时进行数字认证,以此来确保用户的合法性。
- (2) 加密数据: 加密被传输的数据以隐藏其内容,防止被窃听。 SSL/TLS 协议采用对称密钥技术和公钥技术进行加密。 在客户端与服务器进行数据交换之前,会交换 SSL/TLS 初始握手信息,在握手信息中采用了各种加密技术对其加密,以保证其机密性和数据的完整性,并且用数字证书进行鉴别,防止非法用户进行破译。
- (3) 保护数据完整性: 采用 Hash 函数和机密共享的方法来提供信息的完整性服务,建立客户端与服务器之间的安全通道,使所有经过 SSL/TLS 协议处理的业务在传输过程中能全部完整、准确无误地到达目的地。
SSL/TLS 协议是一个保证计算机通信安全的协议,对通信对话过程进行安全保护,其实现过程主要经过如下几个阶段 (简化描述):
- (1) 握手阶段: 客户端和服务器协商加密算法、密钥交换方法等。
- (2) 密钥交换阶段: 客户端和服务器交换密钥,用于后续的对称加密。 常见的密钥交换算法包括 RSA 和 Diffie-Hellman。
- (3) 数据传输阶段: 客户端和服务器使用协商好的对称密钥加密和解密数据。
- (4) 连接关闭阶段: 客户端和服务器交换结束信息,关闭连接。
在数据传输阶段,信息使用对称密钥加密,对称密钥使用非对称算法加密,然后将两个包绑定在一起传送。 接收的过程与发送正好相反,先打开加密的对称密钥包,再用对称密钥解密数据。
在电子商务交易过程中,由于有银行参与,按照 SSL/TLS 协议,客户的购买信息首先发往商家,商家再将信息转发银行,银行验证客户信息的合法性后,通知商家付款成功,商家再通知客户购买成功,并将商品寄送客户。
3.4 数字时间戳技术
数字时间戳是数字签名技术的一种应用。 在电子商务交易文件中,时间是重要的信息。 在书面合同中,文件签署的日期和签名一样,都是防止文件被伪造和篡改的关键性内容。 数字时间戳服务 (DTS, Digital Timestamp Service) 是一种网上电子商务安全服务,能提供电子文件的日期和时间信息的安全保护。
时间戳是一个经加密后形成的凭证文档,包括以下三个部分:
- (1) 文件摘要: 需要加时间戳的文件的摘要 (Digest),通过 Hash 算法生成。
- (2) 时间信息: DTS 收到文件的日期和时间。
- (3) 数字签名: DTS 的数字签名,用于证明时间戳的权威性。
一般来说,时间戳产生的过程为: 用户首先将需要加时间戳的文件使用 Hash 算法加密形成摘要,然后将该摘要发送到 DTS。 DTS 在加入收到文件摘要的日期和时间信息后,对该信息进行数字签名,然后送回用户。
书面签署文件的时间是由签署人自己写上的,而数字时间戳则是由认证单位 DTS 来加入的,以 DTS 收到文件的时间为依据,具有更高的可信度。
四、计算机可靠性
计算机系统的硬件故障通常源于元器件的失效,元器件的可靠性呈现三个阶段,即所谓的“浴盆曲线”:
- 早期失效期(不稳定期): 元器件工作初期,失效率较高。这通常是由于制造缺陷或设计问题导致的。
- 有效寿命期(正常工作期): 元器件进入稳定工作状态,失效率最低且基本保持恒定。 这是元器件最佳的工作阶段。
- 耗损失效期(老化期): 元器件开始老化,失效率重新升高。 这通常是由于材料老化、磨损等原因导致的。
为了保证计算机的可靠性,应确保在计算机中使用的元器件处于有效寿命期。 在早期失效期,应对元器件进行老化筛选; 而在耗损失效期,则应考虑淘汰该计算机。
计算机系统的可靠性 R(t) 指的是系统从开始运行 (t=0) 到某个时刻 t 能够正常运行的概率。 失效率 λ (lambda) 指的是单位时间内失效的元件数与元件总数的比例。 当失效率 λ 为常数时,可靠性与失效率的关系可以表示为:
R ( t ) = e − λ t R(t) = e^{-λt} R(t)=e−λt
典型的失效率与时间的关系曲线呈现“浴盆曲线”形状,如图所示:
此外,还有其他重要的可靠性指标:
- 平均无故障时间 (MTBF, Mean Time Between Failures): 指两次故障之间系统能够正常工作的时间的平均值。 MTBF 是衡量系统可靠性的重要指标。 M T B F = 1 / λ MTBF=1/λ MTBF=1/λ
- 平均修复时间 (MTTR/MTRF, Mean Time To Repair): 指从故障发生到机器修复平均所需的时间。 MTTR 是衡量计算机可维护性的重要指标。 较短的 MTTR 意味着更高的可维护性。
- 可用性 (Availability, A): 指系统在任意时刻能够正常工作的概率。 可用性反映了计算机的使用效率,是可靠性和可维护性的综合体现。 A = M T B F / ( M T B F + M T R F ) A=MTBF/(MTBF + MTRF) A=MTBF/(MTBF+MTRF)
计算机的 RAS 指标体系通常用于衡量一个计算机系统,它由以下三个指标组成:
- 可靠性 (Reliability, R): 衡量系统无故障运行的能力。
- 可用性 (Availability, A): 衡量系统能够提供服务的时间比例。
- 可维护性 (Serviceability/Maintainability, S): 衡量系统易于诊断、隔离和修复故障的能力。
但在实际应用中,引起计算机故障的原因除了元器件失效外,还包括组装工艺、逻辑设计等因素。 因此,即使采用相同的元器件,不同厂家生产的兼容机其可靠性及 MTBF 也可能相差很大。 这说明了系统设计的整体性以及制造工艺对于计算机可靠性的重要影响。
计算机系统是一个复杂的系统,影响其可靠性的因素众多,难以直接进行可靠性分析。 然而,通过建立适当的数学模型,将复杂系统分解为若干个子系统,可以简化分析过程。
常见的系统可靠性数学模型有以下三种:
(1) 串联系统
假设一个系统由 N 个子系统组成,当且仅当所有子系统都能正常工作时,系统才能正常工作。 这种系统称为串联系统。
设系统中各个子系统的可靠性分别用 R1, R2, …, Rn 来表示,则系统的可靠性 R 可由下式求得:
R = R 1 ∗ R 2 ∗ . . . ∗ R n = ∏ i = 1 nR i R = R_1 * R_2 * ... * R_n = \\prod_{i=1}^{n} R_i R=R1∗R2∗...∗Rn=i=1∏nRi
如果系统的各个子系统的失效率分别用 λ1, λ2, …, λn 来表示,则系统的失效率 λ 可由下式求得:
λ = λ 1 + λ 2 + . . . + λ n = ∑ i = 1 nλ i λ = λ_1 + λ_2 + ... + λ_n = \\sum_{i=1}^{n} λ_i λ=λ1+λ2+...+λn=i=1∑nλi
结论: 串联系统的可靠性等于各个子系统可靠性的乘积;串联系统的失效率等于各个子系统失效率的总和。说明串联系统中,任何一个子系统的失效都会导致整个系统的失效,因此串联系统对可靠性要求很高。
(2) 并联系统
假设一个系统由 N 个子系统组成,只要有一个子系统正常工作,系统就能正常工作。 这样的系统称为并联系统,如图 1-20 所示(图略,需补充)。
设每个子系统的可靠性分别以 R1, R2, …, Rn 表示,整个系统的可靠性 R 可由下式求得:
R = 1 − ( 1 − R 1 ) ∗ ( 1 − R 2 ) ∗ . . . ∗ ( 1 − R n ) = 1 − ∏ i = 1 n ( 1 − R i ) R = 1 - (1 - R_1) * (1 - R_2) * ... * (1 - R_n) = 1 - \\prod_{i=1}^{n} (1 - R_i) R=1−(1−R1)∗(1−R2)∗...∗(1−Rn)=1−i=1∏n(1−Ri)
在并联系统中,只有一个子系统是真正需要的,其余 N-1 个子系统称为冗余子系统。 随着冗余子系统数量的增加,系统的可靠性也随之增加。
结论: 并联系统的可靠性高于其任何一个子系统的可靠性。 并联系统通过冗余的方式提高了系统的整体可靠性,但也会增加系统的成本和复杂性。
(3) N 模冗余系统
N 模冗余系统由 N 个 (N = 2n + 1) 相同的子系统和一个表决器组成。 表决器把 N 个子系统中占多数相同结果的输出作为系统的输出,如图 1-21 所示(图略,需补充)。
在 N 个子系统中,只要有 n+1 个或 n+1 个以上的子系统能够正常工作,系统就能正常工作,输出正确的结果。 假设表决器是完全可靠的,每个子系统的可靠性为 R,则 N 模冗余系统的可靠性 RN 为:
R N = ∑ i = n + 1 N( N i )R i ( 1 − R ) N − i R_N = \\sum_{i=n+1}^{N} \\binom{N}{i} R^i (1-R)^{N-i} RN=i=n+1∑N(iN)Ri(1−R)N−i
其中, $\\binom{N}{i} $表示二项式系数,即从 N 个子系统中选择 i 个子系统进行组合的方案数。
结论: N 模冗余系统通过多数表决的方式,提高了系统的容错能力,增强了系统的可靠性。 N 模冗余系统的可靠性高于单个子系统的可靠性,但低于理想的并联系统。
提高计算机的可靠性一般采取如下两项措施:
- 提高元器件质量: 提高元器件的质量,改进加工工艺与工艺结构,完善电路设计。 这是从根本上提高计算机可靠性的方法。
- 发展容错技术: 发展容错技术,使得在计算机硬件出现故障的情况下,计算机仍能继续运行,得出正确的结果。 例如,使用冗余硬件或软件来检测和纠正错误。
这些数学模型和提高可靠性的方法为设计和评估可靠的计算机系统提供了理论基础。
五、性能评估
无论是计算机制造商还是使用者,都需要某种方法来衡量计算机的性能,以作为设计、生产、购买和使用的依据。但是,由于计算机系统的复杂性,其体系结构、组成及实现策略多种多样,应用领域也各不相同,因此很难找到统一的规则或标准来评测所有计算机。
5.1、性能评测的常用方法
(1) 时钟频率
计算机的时钟频率在一定程度上反映了机器的速度。通常情况下,主频越高,计算速度越快。然而,相同频率下,不同体系结构的计算机性能可能存在显著差异,因此需要结合其他方法来综合评定机器性能。
(2) 指令执行速度
在计算机发展初期,通常用加法指令的运算速度来衡量计算机的速度。加法指令的速度是计算机性能的主要指标之一,因为它可以大致反映乘法、除法等其他运算的速度。此外,逻辑运算和转移指令等简单指令的执行时间往往被设计为与加法指令相同,因此加法指令的执行速度具有一定的代表性。最初,运算速度以 KIPS(每秒千条指令)为单位,随着计算机运算速度的提高,单位逐渐发展为 MIPS(每秒百万条指令)。
另一种描述计算机指令执行速度的指标是每秒执行浮点数的百万次操作数量,即 MFLOPS。
(3) 等效指令速度法
随着计算机指令系统的发展,指令种类大幅增加,单一指令的 MIPS 值已无法全面表征机器的运算速度,因此出现了吉普森(Gibson)混合法或等效指令速度法等改进方法。
等效指令速度法通过统计各类指令在程序中的占比,并进行折算。设某类指令 i 在程序中所占的比例为 ( w_i ),执行时间为 ( t_i ),则等效指令的执行时间可表示为:
T e q= ∑ i = 1 nw it i T_{eq} = \\sum_{i=1}^{n} w_i t_i Teq=i=1∑nwiti
其中,n 为指令的种类数。
(4) 数据处理速率(Processing Data Rate, PDR)法
由于在不同程序中,各类指令的使用频率不同,因此固定比例方法存在很大局限性。同时,数据长度与指令功能的强弱对解题速度影响显著。此外,该方法也无法反映现代计算机中高速缓存、流水线和交叉存储等结构的影响。具有这些结构的计算机性能不仅与指令的执行频率有关,还与指令的执行顺序和地址分布相关。
PDR 法通过计算 PDR 值来衡量机器性能。PDR 值越大,表示机器性能越好。PDR 值与每条指令和每个操作数的平均位数以及每条指令的平均运算速度有关,其计算方法如下:
P D R = L R PDR = \\frac{L}{R} PDR=RL
其中:
L = 0.85 G + 0.15 H + 0.4 J + 0.15 K L = 0.85G + 0.15H + 0.4J + 0.15K L=0.85G+0.15H+0.4J+0.15K
R = 0.85 M + 0.09 N + 0.06 P R = 0.85M + 0.09N + 0.06P R=0.85M+0.09N+0.06P
在此公式中:
- ( G ):每条定点指令的位数;
- ( M ):平均定点加法时间;
- ( H ):每条浮点指令的位数;
- ( N ):平均浮点加法时间;
- ( J ):定点操作数的位数;
- ( P ):平均浮点乘法时间;
- ( K ):浮点操作数的位数。
此外,还规定了以下条件:( G > 20 ) 位,( H > 30 ) 位;从主存取一条指令的时间等于取一个字的时间;指令与操作数存放在主存,无变址或间址操作;允许有并行或先行取指令的功能,此时选择平均取指令时间。PDR 值主要对 CPU 和主存储器的速度进行度量,但不适合衡量机器的整体速度,因为它未考虑缓存、多功能部件等技术对性能的影响。
(5) 核心程序法
上述性能评估方法主要针对 CPU(有时包括主存),未考虑 I/O 结构、操作系统以及编译程序的效率等对系统性能的影响,因此难以准确评价计算机的实际工作能力。
核心程序法是研究较多的一种方法,它将应用程序中使用最频繁的核心程序作为评价计算机性能的标准程序。在不同机器上运行核心程序,测得其执行时间,作为各类机器性能评价的依据。机器软/硬件结构的特点能够在核心程序中得到反映,但核心程序各部分之间的联系较小。
由于程序较短,因此访问存储器的局部性特征明显,以至于缓存的命中率高于一般程序。
5.2、基准测试程序
基准测试程序(Benchmark Programs)是目前广泛认可的计算机性能评估方法。通过运行一套预先定义的程序,可以在不同计算机系统上获得可比较的性能数据。存在多种类型的基准测试程序,例如专注于测试整数性能的程序、测试浮点性能的程序等。
(1) 整数测试程序
Dhrystone 是一款经典的综合性基准测试程序,主要用于评估编译器和 CPU 处理整数指令及控制功能的效率。它通过人为选择并组合一些“典型指令”来模拟系统程序的工作负载。
Dhrystone 的测试结果通常以每秒执行多少个 Dhrystones 来表示机器的性能,数值越大表示性能越好。 例如,VAX 11/780 机器的测试结果约为每秒 1757 Dhrystones。为了便于比较,业界曾约定 1 VAX MIPS 等于每秒 1757 Dhrystones,将被测机器的 Dhrystone 结果除以 1757,即可得到相对于 VAX 11/780 的 MIPS 值,称为 Dhrystone MIPS (DMIPS)。有些厂商在宣称机器性能时会使用 DMIPS 值。
需要注意的是,不同厂商在测试 MIPS 值时可能使用不同的基准程序,或者即使使用 Dhrystone,由于计算机体系结构和实现方法的差异(例如针对科学计算、商业管理或图形处理等不同应用领域), 即使 DMIPS 值相同,实际性能也可能存在很大差异。因此,DMIPS 值在比较不同体系结构的机器时具有局限性。在同一厂商、采用相同体系结构的机器之间,使用相同的基准程序测试,通常 DMIPS 值越大,机器速度越快。此外,Dhrystone 对编译器优化非常敏感,现代编译器能够显著优化其代码,可能导致测试结果更多地反映编译器效率而非纯粹的处理器性能。对于嵌入式系统等地方,CoreMark 等较新的基准测试程序被认为更能反映实际性能。
(2) 浮点测试程序
在科学计算和工程应用领域,浮点计算工作量通常占很大比例,因此机器的浮点性能对这些应用有显著影响。 有些机器只提供单个浮点操作(如浮点加法、乘法)的执行时间,而大多数工作站和高性能计算机则使用 Linpack 和 Whetstone 等基准程序来衡量浮点性能。
-
理论峰值浮点速度: 巨型机和小型巨型机(minisupercomputer)的说明书上经常会给出“理论峰值速度”的 MFLOPS(每秒百万次浮点操作)值。 这并非机器执行实际程序时的速度,而是机器在理论上能达到的最大浮点处理速度。 它不仅与处理器时钟周期有关,还与处理器中能够并行执行浮点操作的流水线功能部件数量以及处理器核心数量有关。 多处理器系统的峰值速度通常是单个处理器峰值速度与处理器个数的乘积。 理论峰值是一个理想值,实际运行性能通常远低于此值。
-
Linpack 基准测试程序: Linpack 基准程序是一个用 FORTRAN 语言编写的子程序软件包,主要用于求解稠密线性方程组 (Ax=b),这是科学计算和工程领域常见的任务。 Linpack 测试通过测量计算机系统运行该程序的时间来评估其浮点性能,结果通常用 MFLOPS 表示。 Linpack 基准测试,特别是其高规模版本(如 HPLinpack),是衡量超级计算机性能并用于 TOP500 排名的重要标准。
当求解 (n) 阶线性代数方程组时,矩阵规模 (n) 越大,程序的向量化程度通常越高。向量化百分比指程序计算量中可以进行向量化处理的部分所占的比例。在同一台机器上,向量化程度越高,机器的运算速度越快,因为求解过程中花费在非向量操作上的时间相对固定。
矩阵规模 100×100 300×300 1000×1000 向量化百分比 95% 98% 80% 注意:上述表格中的向量化百分比数据是示例,实际数值取决于具体的 Linpack 实现和机器架构。
-
Whetstone 基准测试程序: Whetstone 是一个用 FORTRAN 语言编写的综合性测试程序,它包含浮点运算、整数算术运算、函数调用、数组变址、条件转移和超越函数等多种操作,旨在模拟科学计算程序的行为。 Whetstone 的测试结果通常用 KWIPS(每秒千条 Whetstone 指令)或 MWIPS(每秒百万条 Whetstone 指令)表示。Whetstone 是较早的浮点基准测试,虽然仍在使用,但 Linpack 在评估高性能计算系统的浮点能力方面更为流行。
(3) SPEC 基准程序 (SPEC Benchmark)
SPEC(Standard Performance Evaluation Cooperation)是一个由多家知名计算机厂商共同支持的非营利组织,致力于开发和推广标准化的、具有代表性的基准测试程序,以提供客观、可比较的性能评估依据。
SPEC 最初于 1989 年发布了面向处理器性能的基准程序集(SPEC89), 随后不断更新,推出了 SPECCPU92, SPECCPU95, SPECCPU2000, SPECCPU2006, SPECCPU2017 等版本。 SPECCPU 系列主要关注计算密集型性能,包括整数和浮点运算。例如,SPECCPU2006 包含 12 个整数基准程序集 (CINT2006) 和 17 个浮点基准程序集 (CFP2006)。CINT2006 包含 C 语言编译器、量子计算机仿真、国际象棋程序等应用;CFP2006 包含有限元方法、分子动力学、流体动力学等科学计算应用。与早期合成基准测试不同,SPEC 基准程序来源于真实的应用程序,更能反映实际工作负载的性能。
为了简化测试结果的呈现,SPEC 通常使用单一数值来汇总多个基准程序的性能。具体方法是将待测计算机在每个基准程序上的执行时间与一个参考处理器(Reference Machine)的执行时间进行比较,计算出 SPECratio。
SPECratio = 参考处理器的执行时间 待测计算机的执行时间 \\text{SPECratio} = \\frac{\\text{参考处理器的执行时间}}{\\text{待测计算机的执行时间}} SPECratio=待测计算机的执行时间参考处理器的执行时间
SPECratio 值越大,表示待测计算机的性能越好(因为执行时间越短)。对于一个基准程序集(如 CINT2006 或 CFP2006),最终的综合测试结果是该集合中所有基准程序 SPECratio 的几何平均值。使用几何平均值是为了确保性能比较结果的相对性不受参考机器选择的影响。
SPEC 最初主要关注 CPU 性能,但现在已扩展到测试计算机系统的其他方面,如高性能计算系统、网络服务器、虚拟化平台、存储系统等,并开发了相应的基准测试程序集。
(4) TPC 基准程序 (TPC Benchmark)
TPC(Transaction Processing Performance Council,事务处理委员会)是一个非营利组织,专注于开发和发布用于评估计算机系统在事务处理和数据库应用方面性能的基准测试程序。TPC 基准测试程序旨在模拟真实的商业应用场景,如在线事务处理 (OLTP)、决策支持系统等。
TPC 发布了多个系列基准测试,其中:
- TPC-C: 针对在线事务处理 (OLTP) 工作负载,模拟复杂的订单录入和处理环境。其主要性能指标是每分钟处理的新订单事务数量 (tpmC, transactions per minute C),以及相应的性价比指标 (tpmC)。tpmC 值越高越好,tpmC 值越低越好。
- TPC-H: 针对决策支持 (Decision Support) 工作负载,评估系统处理复杂查询和分析大型数据集的能力。
- TPC-E: 较新的 OLTP 基准测试,模拟股票经纪公司的交易处理环境,相比 TPC-C 更具代表性,事务类型更复杂,更能体现现代 OLTP 系统的特点。TPC-E 的主要指标是每秒处理的事务数量 (tpsE, transactions per second E) 和性价比 (tpsE)。
TPC 基准测试程序在商业领域被广泛接受,为衡量计算机系统在事务处理和数据库应用方面的性能及性价比提供了标准化、可信赖的依据。TPC 要求对测试结果进行严格的审计,以确保结果的公正性和可信度。然而,任何基准测试程序都有其特定的适用范围和局限性,TPC 基准测试主要反映系统在特定事务处理负载下的性能,可能无法全面衡量系统在其他类型应用下的表现。
六、总结
计算机安全的核心要素,包括安全管理、通信与网络安全、密码学等关键领域,说明不同安全评估准则及常见的安全威胁。
了解对称与非对称加密技术及其在数据保密中的应用,以及密钥管理的重要性。此外,介绍了认证技术(如 PKI、Hash 函数、数字签名)在确保通信双方身份可信和数据完整性方面的作用,以及 SSL/TLS 协议和数字时间戳技术的应用。
了解计算机可靠性评估指标(如 MTBF、MTTR、可用性)和提升可靠性的方法,以及性能评估的多种方法和基准测试程序(如 SPEC、TPC),为理解和构建高性能、安全、可靠的计算机系统提供了全面的视角。