如何理解数据的保密性、完整性、可用性?如何保证数据的保密性、完整性、可用性?

前言

在GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》中对不同级别的信息系统都提出了数据完整性和数据保密性的要求,安全通用要求、云计算安全扩展要求、移动互联安全扩展要求、物联网安全扩展要求、工业控制系统安全扩展要求要五大部分均涉及数据保密性和数据完整性。

很多小伙伴不理解数据保密性(机密性)和数据完整性到底是什么,本文主要解释以下两个问题。

1. 如何理解数据的保密性、完整性、可用性?
2. 如何保证数据的保密性、完整性、可用性?


第一章、数据

这里我们说的数据指的是所有能输入计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字、字母、符号和模拟量等的通称。

第二章、OSI七层网络模型&TCP/IP四层模型

在学习数据的保密性和完整性之前,先了解下数据在OSI七层模型的每一层是如何存在的以及数据在每层之间是如何传输的。
在这里插入图片描述
注意:物理层并不是指具体的物理设备,也不是指用来传输信息的物理媒体,指的是传输原始比特流的物理连接,上图只有物理层是实线连接的。

TCP/IP四层模型是OSI七层模型简化而来的,两种模型对应关系见下图。
在这里插入图片描述
介绍完两种模型,接下来就进入正题了,数据在每层是如何传输的呢?

2.1 数据封装与解封

  • 数据封装:数据的封装是一个自上而下的过程,我们在客户端应用(比如微信)上发送一个“hello”,数据流经每一层时是怎样变化的呢?首先一个用户在发给电脑一个请求,先传给应用层应用将数据处理完,之后交给传输层加好TCP或者UDP的报头,传给网络层再添加一层IP的报头,再交给数据链路层添加mac的头部和尾部,最后送到物理链路层转为比特流进行传出,这就是封装过程。
    在这里插入图片描述

  • 数据解封:数据封装的逆过程,数据的解封是一个自下而上的过程。
    在这里插入图片描述

上图可以看出,每一层数据是由上一层数据+本层首部信息组成的,其中每一层的数据 ,称为本层的协议数据单元 ,即PDU。

2.2 应用层

应用层功能

  • 应用层:为用户的应用提供服务并支持网络访问;
  • 会话层:负责管理网络中计算之间的通信,提供传输层不具备的连接相关功能;
  • 表示层:负责转化数据格式,并处理数据加密和数据压缩。
    即负责一切与应用程序相关的功能

我们在应用软件(如微信、qq等)用户端发出一条消息“hello”,应用层将这条消息处理为一个五层的数据包,这里我们可以认为数据包的内容为我们发出的“hello”应用消息。

2.3 传输层

传输层功能

  • 提供应用程序接口,为网络应用程序提供网络访问的途径;
  • 提供可以从多个应用层序接收消息的功能(多路复用),同时也提供可以把消息分发给应用程序的功能(多路分解);
  • 对数据进行错误检测、流量控制。
    即为上层提供端到端的(一台主机到另一台主机)、透明的、可靠的数据传输服务。所谓透明的传输是指在通信过程中传输层对上层屏蔽了通信传输系统的具体细节。

应用层将消息封装成数据包后,将数据包传递到传输层,传输层会对五层数据包进行进一步的封装,即为该数据包添加一个TCP/UDP头部(TCP或者UDP二者其中一个,具体取决于软件选择那个协议),其中含有源端口号和目的端口号,源端口号即为软件使用的上一层协议的端口号,目的端口号为接收数据方接收该数据的端口号。例如当我们用浏览器访问一个https开头的网页时,实际上我们是在访问对方服务器的443端口。

2.4 网络层

网络层功能

  • 该层解决数据由一个计算机的IP如何路由到目标计算机的过程规范。
    即通过路由算法,为报文或分组通过通信子网选择最适当的路径, 确保数据及时传送。

一个网络里有那么多主机,我们的计算机消息发送出去后,数据包怎么才能成功的传输到我们指定的主机上呢?在发送数据时,网络层会对该数据包添加一个IP包头,其中含有数据包的源IP和目标IP,数据传输的过程中就是根据这层的目标IP找到需要通信的主机。

前三层的数据包很重要,在一个包中称为上三层数据,是最有价值的包,不能被别人篡改,一旦被篡改就有可能造成通信出错或者信息泄露。(例如本来A发给B的数据,上三层数据被篡改后发给了C)

接下来的两层在网络中也是必不可少的,虽然上三层在数据包中指明了传输的路线,但是上三层数据包是无法通过介质进行传播的(例如网线、WiFi、光纤),那如果数据包想过介质进行传播的话怎么办呢,这就需要用到下面的两层了。

2.5 数据链路层

数据链路层功能

  • 为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。
    即通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。

当上三层的数据包到了数据链路层,就意味着这个信息已经成功到达计算机的网卡,下一步就可以通过网线传输了,这时我们的信息就需要一个载体来进行传输,于是在第二层会给上三层数据包加上一个二层头部(MAC子层)和二层尾部(FCS)

2.6 物理层

物理层功能

  • 为数据端设备提供传送数据通路、传输数据。

所谓的物理层,是指光纤、电缆或者电磁波等真实存在的物理媒介。这些媒介可以传送物理信号,比如亮度、电压或者振幅。

在这里插入图片描述
网卡二层数据帧包送到网线上,这时候二层的数据帧包会被转化成一段连续的比特流,然后以电脉冲的形式传输到交换机,最后到达目标主机物理层。(对于数字应用来说,我们只需要两种物理信号来分别表示0和1,比如用高电压表示1,低电压表示0,就构成了简单的物理层协议。针对某种媒介,电脑可以有相应的接口,用来接收物理信号,并解读成为0/1序列。)

2.7 小结

数据封装就是不断的加头,数据解封过程就是不断的去头的过程。
在这里插入图片描述

第三章、数据的保密性、完整性、可用性

上章节介绍完了OSI和TCP/IP模型,我们比较清楚数据在每一层中是如何存在的了,以及数据是如何从主机A层层传输到主机B。要保证数据安全,就要保证数据经过每一层时的安全性。

我们这里说到的数据安全是参照GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》以及国际标准化组织对数据安全的定义,保障数据安全,即保障数据的保密性、完整性、可用性

3.1 数据保密性

定义:是不将有用信息泄漏给非授权用户的特性。换句话说,确保数据信息只能被授权者看到,即“不能看”的特性(这里指的是以明文形态看到)。

可以通过信息加密、身份认证、访问控制、安全通信协议等技术实现,目前保密性主要是通过加密算法来实现。

国密算法中,能够提供数据保密性的算法主要是:SM1和SM2,少数使用祖冲之,无线局域网中使用SM4。
国际算法中,能够提供数据保密性的算法主要是:DES、3DES、RSA、AES、ECC等。

8.1.4.8 数据保密性
本项要求包括:
a)应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息;

检查数据传输过程中的保密性,主要核查是否采用TLS/SSL、SSH等加密协议。

注意:如果使用MD5进行密码加密,很多测评机构会默认不符合。原因是通常情况下客户端拿到原密码进行MD5加密,然后进行存储或者校验,但是如果网站使用http协议,那么传输数据容易被中间人劫持,中间人在得到MD5加密后的密文后可以采用跑大型字典的方法进行爆破,所以MD5也就不太安全了。


b)应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等。

数据存储过程中的保密性,这个比较容易理解,主要是核查相关鉴别数据(账户的口令)、业务数据、审计数据是否加密存储(非明文存储)。

在测评中,操作系统鉴别数据一般都会符合,默认都是使用哈希算法;业务系统的鉴别数据,这个一般需要核查下数据库表,查看是否是明文存储;至于业务数据和个人信息等一般系统都明文存储(主要原因是影响系统性能),所以一般不符合。

ps:如果使用有加密功能并且开启加密功能的数据库或者数据库加密设备,默认该项为符合。



3.2 数据完整性

定义:是指信息在传输、存储和处理过程中,保持信息不被破坏或修改、不丢失和信息未经授权不能改变的特性。换句话说,接收到的数据必须与发送的数据相同,即“不能改”的特性。

国密算法中,能够提供数据完整性的算法主要是:SM3;
国际算法中,能够提供数据完整性的算法主要是:MD5、SHA256、SHA512。

8.1.4.7 数据完整性
本项要求包括:
a)应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审 计数据、重要配置数据、重要视频数据和重要个人信息等;

校验技术指的是类似TCP协议的CRC校验码或者海明校验码等,这是协议层面的,如果按照这要求连接,那么这条指标基本全部符合,所以目前测评难点不是在这里,而是在密码技术如何实现完整性。
传输过程中的完整性主要通过协议(比如TLS、SSH协议)来实现,通过MAC(消息校验码)来实现整个数据报文的完整性和加密性,因此,在测评中,如果采用TLS/SSL协议、SSH协议,默认其实应该是符合传输过程中的完整性要求的。

另外还记得第二章讲数据封装过程吗?在数据链路层需要添加头部MAC子层和尾部FCS,可以用来保证数据的完整性。
在这里插入图片描述

b)应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息

数据存储过程中的完整性,主要是核查数据库表(业务数据、审计数据)是否存在哈希字段,在业务数据或审计数据中,数据在前端一般通过json或xml格式进行传输,那么数据在存储过程完整性应该是核查相关数据库表字段中是否包含完整性校验字段

一般很少有系统能实现数据存储过程的完整性校验,但是如果通过TLS/SSL、SSH等协议,可以通过传输过程中的完整性在一定程度上弥补存储过程中的完整性,所以在测评中,如果传输过程中能保证数据完整性,那么此项一般默认符合。

3.3 数据可用性

定义:指数据可被授权实体按要求访问、正常使用或在非正常情况下能恢复使用的特性。 “一直用”的特性。

举个例子,我们常说的DDOS攻击,就是利用目标系统的网络服务功能缺陷或者直接消耗大量系统资源,使目标系统无法提供正常的服务,其实这就是破坏数据的可用性。
此外破坏可用性的威胁还有设备故障、软件错误、不可抗力因素(如洪水、火灾等),以及人为错误或疏忽造成的如意外删除文件、私自分配资源、安全策略配置错误等。

现在主要是采用现代信息存储手段对数据进行主动防护,如通过磁盘阵列、数据备份、异地容灾等手段,以规避硬件故障、软件故障、环境风险、人为故障、自然灾害等风险,保证数据的可用性。

第四章、为什么说HTTPS能保证数据传输的完整性和保密性呢?

上文分析我们可以看出,要想保证数据在传输过程的完整性和保密性,需要检查是否采用了TLS/SSL协议。我们知道HTTPS是在HTTP基础上加了SSL(Secure Socket Layer,安全套接字层),TLS是SSL的升级版。那么为什么说HTTP不能保证数据传输安全,而HTTPS可以保证数据传输过程的完整性和保密性呢?
在这里插入图片描述

注意:https并非是应用层的一种新协议,只是http通信接口部分用SSL/TLS协议代替而已。通常,http是直接和tcp通信的,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。SSL是独立于HTTP协议的,所以不光是http协议,其他运行在应用层的协议,如smtp和telnet协议,也可配合ssl协议使用。

4.1 HTTP通信原理

作为标准的C/S模型,http协议总是由客户端发起,服务器进行响应。通信过程如下:

  1. DNS解析,域名系统DNS将域名解析成IP地址
  2. 建立TCP连接,进行TCP的三次握手
  3. 浏览器发送请求
  4. 服务器响应浏览器,向浏览器发送数据
  5. 通信完成,TCP连接关闭

http协议属于明文传输协议,通信双方没有进行认证,存在如下的问题:

  • 窃听风险:第三方可以获知通信内容
  • 篡改风险:第三方可以修改通信内
  • 冒充风险:第三方可以冒充他人身份参与通信

4.2 HTTPS通信原理

https通信是建立在ssl连接层之上的请求和响应,通信过程如下:

  1. 客户端和服务器端通过TCP建立连接,并发送https请求。
  2. 服务器响应请求,并将数字证书发送给客户端,数字证书包括公共秘钥、域名、申请证书的公司。
  3. 客户端收到服务器端的数字证书之后,会验证数字证书的合法性。
  4. 如果公钥合格,那么客户端会生成client key,一个用于进行对称加密的密钥,并用服务器的公钥对客户端密钥进行非对称加密。
  5. 客户端会再次发起请求,将加密之后的客户端密钥发送给服务器。
  6. 服务器接收密文后,会用私钥对其进行非对称解密,得到客户端秘钥。并使用客户端秘钥进行对称加密,生成密文并发送。
  7. 客户端收到密文,并使用客户端秘钥进行解密,获取数据。
    在这里插入图片描述

HTTPS是在HTTP基础上加了SSL(Secure Socket Layer,安全套接字层),具有如下优势:

  • 所有信息都是加密传播,第三方无法窃听
  • 具有校验机制,一旦被篡改,通信双方会立刻发现
  • 配备身份证书,防止身份被冒充

4.3 抓包比较http和https头信息

查看http中的 request 与 response,可以看出是明文传输的。
在这里插入图片描述
查看https网站,可以看到内容全部加密。
在这里插入图片描述

那么https是不是就是没有风险的呢?当然不是,任何安全措施或安全协议都不可能保证绝对安全,比如SSL 2.0就被爆出有很多安全漏洞,如同一加密密钥用于消息身份验证和加密、弱消息认证代码结构和只支持不安全的MD5哈希函数、SSL握手过程没有采取任何防护等等漏洞。攻击者就可以利用该漏洞对发起网络攻击。

关于http是如何一步一步演变成https的,可以看下https://blog.csdn.net/csdnlijingran/article/details/88922340?,介绍的很详细。

第五章、总结

本文主要围绕数据完整性和数据保密性,在第二章介绍了OSI模型和TCP/IP模型,以及数据封装和解封的过程,在第三章介绍了数据完整性和保密性的具体含义,以及具体测评过程中的检查方法,第四章则介绍了HTTP与HTTPS的通信原理,以及HTTPS能够保证数据传输过程完整性和保密性的原理。


本文是作者查阅了大量资料和平时工作学习归纳总结的,写的不对的地方欢迎指正。

  • 31
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
1. 背景 4 2. 编码安全 4 2.1. 输入验证 4 2.1.1. 概述 5 2.1.2. 白名单 5 2.1.3. 黑名单 5 2.1.4. 规范化 5 2.1.5. 净化 5 2.1.6. 合法性校验 6 2.1.7. 防范SQL注入 6 2.1.8. 文件校验 6 2.1.9. 访问控制 6 2.2. 输出验证 6 2.2.1. 概述 6 2.2.2. 编码场景 6 2.2.3. 净化场景 7 2.3. SQL注入 7 2.3.1. 概述 7 2.3.2. 参数化处理 7 2.3.3. 最小化授权 7 2.3.4. 敏感数据加密 7 2.3.5. 禁止错误回显 8 2.4. XSS跨站 8 2.4.1. 输入校验 8 2.4.2. 输出编码 8 2.5. XML注入 8 2.5.1. 输入校验 8 2.5.2. 输出编码 8 2.6. CSRF跨站请求伪造 8 2.6.1. Token使用 9 2.6.2. 二次验证 9 2.6.3. Referer验证 9 3. 逻辑安全 9 3.1. 身份验证 9 3.1.1. 概述 9 3.1.2. 提交凭证 9 3.1.3. 错误提示 9 3.1.4. 异常处理 10 3.1.5. 二次验证 10 3.1.6. 多因子验证 10 3.2. 短信验证 10 3.2.1. 验证码生成 10 3.2.2. 验证码限制 10 3.2.3. 安全提示 11 3.2.4. 凭证校验 11 3.3. 图灵测试 11 3.3.1. 验证码生成 11 3.3.2. 验证码使用 11 3.3.3. 验证码校验 11 3.4. 密码管理 12 3.4.1. 密码设置 12 3.4.2. 密码存储 12 3.4.3. 密码修改 12 3.4.4. 密码找回 12 3.4.5. 密码使用 12 3.5. 会话安全 13 3.5.1. 防止会话劫持 13 3.5.2. 会话标识符安全 13 3.5.3. Cookie安全设置 13 3.5.4. 防止CSRF攻击 13 3.5.5. 会话有效期 14 3.5.6. 会话注销 14 3.6. 访问控制 14 3.6.1. 跨权访问 14 3.6.2. 控制方法 14 3.6.3. 控制管理 14 3.6.4. 接口管理 15 3.6.5. 权限变更 15 3.7. 文件上传安全 15 3.7.1. 身份校验 15 3.7.2. 合法性校验 15 3.7.3. 存储环境设置 15 3.7.4. 隐藏文件路径 16 3.7.5. 文件访问设置 16 3.8. 接口安全 16 3.8.1. 网络限制 16 3.8.2. 身份认证 16 3.8.3. 完整性校验 16 3.8.4. 合法性校验 16 3.8.5. 可用性要求 17 3.8.6. 异常处理 17 4. 数据安全 17 4.1. 敏感信息 17 4.1.1. 敏感信息传输 17 4.1.2. 客户端保存 17 4.1.3. 服务端保存 17 4.1.4. 敏感信息维护 18 4.1.5. 敏感信息展示 18 4.2. 日志规范 18 4.2.1. 记录原则 18 4.2.2. 事件类型 18 4.2.3. 事件要求 18 4.2.4. 日志保护 19 4.3. 异常处理 19 4.3.1. 容错机制 19 4.3.2. 自定义错误信息 19 4.3.3. 隐藏用户信息 19 4.3.4. 隐藏系统信息 19 4.3.5. 异常状态恢复 20 4.3.6. 通信安全 20
短信平台建设方案 作者:沈言炎 本方案未经许可,不得转载;违者必究! 目录 一、前言 4 二、平台总体规划 5 2.1、平台总体设计 5 2.2、系统总体框架 5 2.3、系统设计要求 6 2.4、系统设计原则 7 三、项目概况 8 3.1、项目的核心及开发目的 8 3.2、服务对象 8 3.3、项目开发环境 8 四、功能模块 9 3.1开机自启动 9 3.2短信发送功能 9 五、我们的优势和特色 10 六、技术保证和建议运行环境 12 6.1、技术保证 12 6.2、运行环境 12 七、网站运营周期 12 八、开发项目报价 13 一、前言 传统的短信群发平台是基于中国移动、联通、电信直接提 供的短信端口与互联网连接实现与客户指定号码进行短信批量 发送和自定义发送的,短信平台主要分为两种:一种是要下载 安装到本地的软件版,一种是通过浏览器登录的网页版短信平 台。据"短信营销研究中心"介绍,从两种短信平台的功能实 现来看,基本是一致的,都是通过客户端直接向运营商服务器 发送群发请求。 如果从短信平台的特殊要求来看,短信平台可以是通用短 信平台和定制开发的短信平台。有的行业和部门因为长期使用 短信发送,按照其正规性的要求,会要求短信公司为其定制开 发满足其特定要求的短信平台。 一般对定制短信平台有需要的用户短信发送量偏大,周期 稳定,多用于大型企业、商家。随着店铺管理机制在中国发展 和完善,个体店主也开始管理会员并寻求开展短信营销的方 法,像生意专家这样专门面向小店开发的店铺管理软件应运而 生,软件内内置短信平台,解决了小店主无法与会员建立信息 传递的问题。 短信群发的宗旨是为企业发展、节约开支、提高效益。短 信群发为企业树立品牌形象或占有市场创造了无限商机,也能 为企业大幅降低广告开支。 该平台是针对物理隔离的状态下,通过短信平台将短信发 送到指定的手机上,使用户及时收到最及时的消息。 二、平台总体规划 2.1、平台总体设计 根据短信平台建设的总体要求,结合目前应用系统状况,系统建设的 技术路线应坚持"需求为导向、应用促发展,统筹规划、科技支撑,分 工负责、持续发展"的指导思想,建立安全与业务支撑环境,形成上下 关联、信息共享的应用系统。 在系统的设计、开发和运行过程中,采用下列的技术路线: 1、采用架构是C/S结构。 2.1.1 C/S结构 为充分保证系统在安全性、跨平台性、易扩展性、易维护性等方面的 要求,建议采用C/S架构。在这种结构下,用户界面通过客户端和服务 器端实现,一部分事务逻辑在客户端端实现,但是主要事务逻辑在服务 器端实现。用客户端和服务器端实现短信发送强大功能,并是过程更加 安全方便。这种结构已成为当今应短信平台用软件的首选体系结构。 2.1.2 面向对象或面向过程的设计与开发 根据不同的应用类型,采用面向对象或面向过程的系统分析与设计方 法。 传统的软件工程以软件的工程化为目标,强调方法论,工具与环境, 质量保证体系,项目管理,配置管理,但基本理念是基于具体需求、从 零开始的开发。这种开发模式显然已经不适合于现代软件系统开发的要 求。而面向对象的设计以软件的组装式生产为目标,强调各种粒度的软 件重用、接口与表示和实现分离、统一对象模型,继承和发展了传统软 件工程。面向对象技术将计算看成是一个系统的演变过程,系统由对象 组成,通过一系列的状态变化来完成计算。对象具有保持能力和自主计 算能力。面向对象设计和实现的重点是多个对象的网状组织结构和协同 计算,而不是过程调用的层次结构,这样就在本质上适应了并发、分布 系统及互联网的计算特征。 2.2、系统总体框架 在整个系统的设计上,在保证系统效率的前提下,将突出系统的开放 式、标准化、模块化、易用实用、性能优化、可靠稳定等特点。 根据"一个数据中心、一个基础平台、一套标准体系,多个业务应 用"的原则,平台建设读取原系统中发送短信功能,存放在数据库中没 有发送的短信,该平台将没有发送的短信的接收方、短信内容获取并发 送给你指定短信接收方。与原来的系统是独立的,不影响原系统的正常 工作。 其中: 标准和规范支撑体系 标准与规范支撑体系是保障整个系统实施成功的关键因素,也是成功 实施最重要的一环,系统建设需要符合国家信息化建设的相关标准和规 范。 l 网络基础设施层 网络基础设施层为系统提供了必要的网络基础环境,提供了可靠、有 效的信息传输服务通道,是各类信息系统的最终承载者。在门户网站建 设中,利用公司已有的软硬件平台资源来进行系统部署,建立完善的安 全保障措施来保障系统安全。 l 数据数据层为系统提供数据存储功能,是信息系统的信息资源中心。门户 网站系统的信息库主要包括资源数据库、备份数据库和文件数据库等。 l 应用层 应用层提供一个应用程序负责读取数据库中为未发
1、PGP概述 PGP(Pretty Good Privacy)的创始人是美国的Phil Zimmermann(菲利普•齐默曼),他在1991年把 RSA 公钥体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计。因此 PGP 成为几乎最流行的公匙加密软件包。PGP有不同的实现,如GnuPG和Gpg4win,其中GnuPG(Gnu Private Guard,简写为GPG)的核心算法是PGP,GnuPG本身是为Linux等开源操作系统设计的;而Gpg4win是windows下GnuGPG及图形前端的合集安装包,其核心为GnuPG,包括:(1)Kleopatra和GPA:GPG的密钥管理器,用于生成、导入和导出GPG密钥(包括公钥和私钥);(2)GpgOL:Outlook 的GPG支持插件;(3)GpgEX:资源管理器的GPG支持插件;(4)Claws Mail:内置GPG支持的邮件客户端。 PGP是一个基于RSA公钥加密体系的加密软件,是开源且免费的,后经互联网志愿者发展完善并广泛应用,具有如下特点:(1)选择最可用的加密算法作为系统的构造模块,所用算法已被广泛检验过,相当安全;并将这些算法集成到一个通用的应用程序中,该程序独立于操作系统和处理器,并且基于一个使用方便的小命令集;(2)是一个开源项目,程序、文档在Internet上公开;(3)可以免费得到运行于多种平台上的PGP版本,具有广泛的可用性;(4)不由任一政府或标准化组织所控制,使得PGP得到了广泛信任;(5)与商业公司(Network Associates)合作,提供一个全面兼容的、低价位的商业版本PGP。2010年6月被赛门铁克公司收购。由于这些特点,使得PGP得到了广泛的应用。 PGP常用的版本是PGP Desktop Professional,它可以用来加密文件,可以用来对邮件保密以防止非授权者阅读,还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。同时,通过使用公钥密码算法,可以提供一种事先并不需要任何保密的渠道用来传递密匙的安全通讯方式。PGP功能强大,而且具有很快的速度,PGP提供的主要功能如表1.7.1所示。 表1.7.1 PGP的功能概述 功能 使用的算法 描述 消息加密 IDEA、CAST、3DES、TwoFish、ElGamal、RSA 发信人产生一次性会话密钥加密,用IDEA或CAST-128或3DES算法对消息进行加密;采用ElGamal或RSA算法用接收方的公钥加密会话密钥 数字签名 DSS/SHA-1、RSA/MD5 采用SHA-1或MD5消息摘要算法计算消息的摘要值(散列码),用发送者的私钥按DSS或RSA算法加密消息摘要 压缩 PKZIP 消息在传送和存储时可使用PKZIP压缩 E-mail兼容性 Radix-64 对E-mail应用提供透明性,采用基数64编码将加密后的消息(二进制流)转换为ASCII字符串 数据分段 - 为了适应最大消息长度限制,PGP执行分段和重新组装 2、PGP的密钥管理 PGP是一种混合密码系统,应用了多个密码算法,包括对称密码算法、非对称密码算法、消息摘要算法、数字签名等经典的密码学算法。为用户生成密钥对之后,可以进行邮件的加密、签名、解密和认证。在PGP中使用的加密算法和用途如表1.7.2所示。 表1.7.2 PGP中采用的各种密码算法及用途 密钥名 加密算法 用途 会话密钥 IDEA、AES 对传送消息的加解密,随机生成,一次性使用 公钥 RSA、Diffie-Hellman 对会话密钥加密,收信人和发信人共用 私钥 DSS/SHA、RSA/SHA 对消息的杂凑值加密以形成签名,发信人专用 口令 IDEA 对私钥加密以存储于发送端 从上表可以看出,PGP使用了四种类型的密钥:一次性会话传统密钥、公钥、私钥和基于口令短语的传统密钥/通行字短语。 会话密钥按ANSI X9.17标准,采用IDEA算法,以密文反馈模式(CFB)生成。当PGP用RSA算法为用户生成一个新的公钥/私钥对时,PGP会要求用户提供一个口令短语,对该短语使用MD5/SHA-1消息摘要算法生成一个散列码后,销毁该短语,从而把用户输入的口令短语转化为IDEA/CAST-128密钥,再使用这个密钥加密私钥,然后销毁这个散列码,并将加密后的私钥存储到私钥环中。当用户要访问私钥环中的私钥时,必须提供口令短语。PGP将取出加密后的私钥,生成散列码,解密私钥。 一个用户可能拥有多个公钥/私钥对,正确识别加密会话密钥和签名所用的特定公钥/私钥对的一个最简单的解决方案是将公钥和消息一起传送。但这种方式浪费了不必要的空间。PGP采用的解决方案是给每个公钥分配一个密钥标识(KeyID),并以极大的概率与用户标识(UserID)一一对应,即UserID和KeyID标识一个密钥。密钥标识至少为64位,因而密钥标识重复的可能性非常小。 PGP提供一种系统化的密钥管理方案来存储和组织这些密钥以保证有效使用这些密钥,它为每个节点(用户机器)提供一对数据结构,一个用于存放本节点自身的公钥/私钥对(即私钥环),另一个用于存放本节点知道的其他用户的公钥(即公钥环)。私钥环信息:时间戳、KeyID、公钥、私钥、UserID,其中UserID通常是用户的邮件地址。也可以是一个名字,可以重名;公钥环信息:时间戳、KeyID、公钥、对所有者信任度、用户ID、密钥合法度、签名、对签名者信任度,其中UserID为公钥的拥有者。多个UserID可以对应一个公钥。公钥环可以用UserID或KeyID索引。 如何保证用户公钥环上的公钥确实是指定实体的合法公钥,这是一个至关重要的问题。PGP提供几种可选的方案以减少用户公钥环中包含错误公钥的可能性:(1)物理上得到对方的公钥。这种方式最可靠,但有一定局限性;(2)通过电话验证公钥;(3)从双方都信任的第三方(个体或CA)处获得对方的公钥。 此外,PGP支持密钥管理服务器,用户可以将公钥发布在集中的密钥服务器上,供他人访问。 3、PGP的消息处理过程 PGP消息分成原始消息、签名部分和会话密钥部分三个部分。 PGP发送方处理消息的过程为:(1)签名:利用UserID作为索引,从私钥环中得到私钥;PGP提示输入口令短语,恢复私钥;构造签名部分;(2)加密:PGP产生一个会话密钥,并加密消息;PGP用接收者UserID从公钥环中获取其公钥;构造消息的会话密钥部分。 PGP接收方处理消息的过程为:(1)解密消息:PGP用消息的会话密钥部分中的KeyID作为索引,从私钥环中获取私钥;PGP提示输入口令短语,恢复私钥;PGP恢复会话密钥,并解密消息;(2)验证消息:PGP用消息的签名部分中的KeyID作为索引,从公钥环中获取发送者的公钥;PGP恢复被传输过来的消息摘要;PGP对于接收到的消息计算摘要,并与上一步的结果作比较。 4、PGP的信任模型 由于PGP重在广泛地在正式或非正式环境下的应用,所以它没有建立严格的公钥管理模式。尽管PGP没有包含任何建立认证权威机构或建立信任体系的规范,但它提供了一个利用信任关系的方法,将信任关系与公钥联系起来。PGP定义了与基于X.509真实的公钥基础设施(PKI)不同的证书模型,即所谓“信任网(Web of Trust)”模型。传统PKI模型依赖于CA层次体系验证证书和其中的密钥。而PGP模型则允许多重地、独立地而非特殊可信个体签署的“名字/密钥”关联来证明证书的有效性,其理论是认为“只要有足够的签名,<名字/密钥>关联就是可信的,因为不会所有的签名者都是‘坏’的”。PGP的信任网就像人际关系网一样,通过下述方式让使用公钥的人相信公钥是其所声称的持有者:(1)直接来自所信任人的公钥;(2)由所信赖的人为某个自己并不认识的人签署的公钥。因此,在PGP中得到一个公钥后,检验其签名,如果签名人自己认识并信赖他,就认为此公钥可用或合法。这样,通过所认识并信赖的人,就可以和总多不认识的人实现PGP的安全E-mail通信。 具体而言,在PGP中是通过在公钥环中的下述3个字段来实现Web of Trust信任模型的:(1)密钥合法性字段(key legitimacy field):指示用户公钥合法性的可信等级。信任级别越高,则用户标识UserID与密钥间的绑定关系就越强。这个字段是由PGP计算的;(2)签名信任字段(signature trust field):每一个公钥项都有一个或者多个签名,这是公钥环主人收集到的、能够认证该公钥项的签名。每一个签名与一个signature trust field关联,指示PGP用户信任签名者对此公钥证明的程度。key legitimacy field 是由多个signeture trust field 导出的;(3)所有者信任字段(owner trust field):指示此公钥对其他公钥证书进行签名的信任程度。这个信任程度是由用户给出的。 PGP使用以个人为中心的信任模型,采取一种“社会信任链”的方式进行公钥分发。在这种方式下,用户可以自行决定对周围的联系人是否信任,并可以决定信任度的高低。用户只接收信任的朋友传送来的公钥,并且这些公钥都带有签名。这种方式反映了社会交往的本质,比较适合一般场合下的安全通信。 本实验通过实际操作,了解PGP/GPG4Win软件的常用功能,利用PGP/GPG4Win软件实现密钥管理、对文件和电子邮件的签名与加密等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放点花椒~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值