文章目录
(资料图片)
前言第一章、数据第二章、OSI七层网络模型&TCP/IP四层模型2.1 数据封装与解封2.2 应用层2.3 传输层2.4 网络层2.5 数据链路层2.6 物理层2.7 小结 第三章、数据的保密性与完整性3.1 数据可用性3.2 数据完整性3.3 数据保密性 第四章、为什么说HTTPS能保证数据传输的完整性和保密性呢?4.1 HTTP通信原理4.2 HTTPS通信原理4.3 抓包比较http和https头信息 第五章、总结
前言
在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 数据可用性
定义:指数据可被授权实体按要求访问、正常使用或在非正常情况下能恢复使用的特性。
举个例子,我们常说的DDOS攻击,就是利用目标系统的网络服务功能缺陷或者直接消耗大量系统资源,使目标系统无法提供正常的服务,其实这就是破坏数据的可用性。
现在主要是采用现代信息存储手段对数据进行主动防护,如通过磁盘阵列、数据备份、异地容灾等手段,以规避硬件故障、软件故障、环境风险、人为故障、自然灾害等风险,保证数据的可用性。
3.2 数据完整性
定义:是指信息在传输、存储和处理过程中,保持信息不被破坏或修改、不丢失和信息未经授权不能改变的特性。换句话说,接收到的数据必须与发送的数据相同。
国密算法中,能够提供数据完整性的算法主要是:SM3; 国际算法中,能够提供数据完整性的算法主要是:MD5、SHA256、SHA512。
校验技术指的是类似TCP协议的CRC校验码或者海明校验码等,这是协议层面的,如果按照这要求连接,那么这条指标基本全部符合,所以目前测评难点不是在这里,而是在密码技术如何实现完整性。 传输过程中的完整性主要通过协议(比如TLS、SSH协议)来实现,通过MAC(消息校验码)来实现整个数据报文的完整性和加密性,因此,在测评中,如果采用TLS/SSL协议、SSH协议,默认其实应该是符合传输过程中的完整性要求的。
另外还记得第二章讲数据封装过程吗?在数据链路层需要添加头部MAC子层和尾部FCS,可以用来保证数据的完整性。
数据存储过程中的完整性,主要是核查数据库表(业务数据、审计数据)是否存在哈希字段,在业务数据或审计数据中,数据在前端一般通过json或xml格式进行传输,那么数据在存储过程完整性应该是核查相关数据库表字段中是否包含完整性校验字段。
一般很少有系统能实现数据存储过程的完整性校验,但是如果通过TLS/SSL、SSH等协议,可以通过传输过程中的完整性在一定程度上弥补存储过程中的完整性,所以在测评中,如果传输过程中能保证数据完整性,那么此项一般默认符合。
3.3 数据保密性
定义:是不将有用信息泄漏给非授权用户的特性。换句话说,确保数据信息只能被授权者看到。
可以通过信息加密、身份认证、访问控制、安全通信协议等技术实现,目前保密性主要是通过加密算法来实现。
国密算法中,能够提供数据保密性的算法主要是:SM1和SM2,少数使用祖冲之,无线局域网中使用SM4。 国际算法中,能够提供数据保密性的算法主要是:DES、3DES、RSA、AES、ECC等。
检查数据传输过程中的保密性,主要核查是否采用TLS/SSL、SSH等加密协议。注意:如果使用MD5进行密码加密,很多测评机构会默认不符合。原因是通常情况下客户端拿到原密码进行MD5加密,然后进行存储或者校验,但是如果网站使用http协议,那么传输数据容易被中间人劫持,中间人在得到MD5加密后的密文后可以采用跑大型字典的方法进行爆破,所以MD5也就不太安全了。
数据存储过程中的保密性,这个比较容易理解,主要是核查相关鉴别数据(账户的口令)、业务数据、审计数据是否加密存储(非明文存储)。
在测评中,操作系统鉴别数据一般都会符合,默认都是使用哈希算法;业务系统的鉴别数据,这个一般需要核查下数据库表,查看是否是明文存储;至于业务数据和个人信息等一般系统都明文存储(主要原因是影响系统性能),所以一般不符合。
ps:如果使用有加密功能并且开启加密功能的数据库或者数据库加密设备,默认该项为符合。
第四章、为什么说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协议总是由客户端发起,服务器进行响应。通信过程如下:
DNS解析,域名系统DNS将域名解析成IP地址建立TCP连接,进行TCP的三次握手浏览器发送请求服务器响应浏览器,向浏览器发送数据通信完成,TCP连接关闭
http协议属于明文传输协议,通信双方没有进行认证,存在如下的问题:
窃听风险:第三方可以获知通信内容篡改风险:第三方可以修改通信内冒充风险:第三方可以冒充他人身份参与通信
4.2 HTTPS通信原理
https通信是建立在ssl连接层之上的请求和响应,通信过程如下:
客户端和服务器端通过TCP建立连接,并发送https请求。服务器响应请求,并将数字证书发送给客户端,数字证书包括公共秘钥、域名、申请证书的公司。客户端收到服务器端的数字证书之后,会验证数字证书的合法性。如果公钥合格,那么客户端会生成client key,一个用于进行对称加密的密钥,并用服务器的公钥对客户端密钥进行非对称加密。客户端会再次发起请求,将加密之后的客户端密钥发送给服务器。服务器接收密文后,会用私钥对其进行非对称解密,得到客户端秘钥。并使用客户端秘钥进行对称加密,生成密文并发送。客户端收到密文,并使用客户端秘钥进行解密,获取数据。
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能够保证数据传输过程完整性和保密性的原理。
本文是作者查阅了大量资料和平时工作学习归纳总结的,写的不对的地方欢迎指正。