软件安全测试基础知识
网络协议基础
一、网络模型
我们把一些过程封装到一起,称为“模型”,如下:把北京中的4个步骤封装到一起,就是1个模型了。
1、网络模型-OSI
OSl(Open System Interconnection 开放系统互联)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型它是一个七层的、抽象的模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。
- 应用层:在客户端接受用户传来的数据,进行打包处理
- 表示层:对应用层传递过来的数据,用某些方式进行处理,如:加密、压缩
- 会话层:是一个过程,相当于我们刚刚说的快递公司,我们把打包好的东西交给快递公司,快递公司就需要接收到后,交给我们的客户,整个过程都需要负责(是一个过程,不是一个具体时间点)
- 传输层:数据到这了进行传输
- 可靠:我们发送数据出去后,最终可以得到反馈
- 不可靠:发出去数据后,就没有下文了,不需要考虑对方是不是已经收到了
- 网络层:负责路由功能,选择一种最佳的网络路径,对于互联网来说,因最初互联网是美国国防部设计出来的,为了传输过程中的安全性,不一定走最佳路径。
- 链路层:通过MAC地址进行访问传输,MAC地址是全球唯一的标识,一般工作在局域网中,通过交换机可以连接在一起,局域网传输数据一般是不发到互联网的(只是在链路层传输)
-
- 物理层:在物理设备之间通过网线传输比特流
2、网络模型-TCP/IP
TCP/IP协议簇(Transmission Control Protocol/lnternet Protocol),译为“传输控制协议/因特网互联协议”,是Internet最基本的协议、国际互联网络的基础。
- TCP/IP 4层模型:主流,属于“OSl 7层模型”的精简版,更适合在实际中落地
- TCP/IP 5层模型
- OSl7层模型:更是理论层次的模型,在实际中并不是很好落地,画的太细了
不管是哪种模型,在实际传输中,都要经历这样几个程序
3、网络模型-对照
- HTTP:超文本的传输协议
- FTP:文件传输协议
- SMTP:主要应用于发送邮件,和邮件相关
- DNS:域名解析协议
- RIP
- SNMP
- TCP:可靠的传输,会反馈回来是否收到的反馈
- UDP:不可靠的传输,发出去就完了,对方有没收到,有没反馈是不管的
- IPV4
- IPV6
4、协议数据的网络传输
- 协议数据的网络传输包括两部分:封装和拆解
发送端:从上往下,对(要发送)数据进行层层封装
接收端:从下往上,对(已收到)数据进行层层拆解
比特流数据通过网线传输
(1)传输层TCP/UDP协议
- TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- 将从应用层接收到的数据进行拆分 -->报文段。
- 为待发送数据进行编号管理 --> 序号
- 通信需要建立双方的连接 --> 三次握手
- 接收端接收数据成功要发回一个已收到的消息 --> 确认(ACK)
- 断开通信需要双方的同意 -- >四次挥手
1)TCP协议:建立连接的方式
- 三次握手作用:确保连接的可靠性(全双工、两方确认)
2)TCP的四次挥手:断开双方的连接
- 作用:双工确认后断开
3)TCP协议
在TCP首部中有6个标志比特:
- URG 紧急指针(urgent pointer)
- ACK确认序号有效
- PSH 尽快交给应用层
- RST 重建连接
- SYN 同步序号用来发起一个连接
- FIN 发端完成发送任务
4)TCP协议-端口
- 端口号是指逻辑意义上用于区分服务的端口编号
- 端口的作用:唯一识别电脑上一个应用的东西
- 端口号的范围从0到65535。(2^16个方)
- 通过“IP地址 +端口号”来区分不同服务
- 其中1024之前的不能随便用,自定义端口的话选择1024之后的
- 查看当前系统端口号命令:netstat(netstat -nao:查看所有本机的TCP、UDP协议的状态)
端口:是用于判断一台电脑上某个应用程序的标识,从一台电脑访问到另外一台电脑上的某个应用。
5)UDP协议
UDP(User Datagram Protocol),是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
TCP/UDP 区别
- UDP报文更简单,只占8个字节;TCP占了20个字节
- UDP只需要源端口+目标端口号(只需要知道我们用哪个程序发到哪个程序就行,不需要知道标志位,是不是可以连接、数据会不会丢失,都不关心)
- TCP:面向连接,是面向字节流的,TCP保证数据的正确性,
- 发送的不完整或丢失丢包,都需要发送端重新发
- 保证传输的顺序,报文段里面是有编号的,在发送到接收端之后,通过编号序号重组,这样保证数据的顺序性
- UDP:面向无连接,UDP数据结构相对TCP要简单,这样在发送起来的时候相对处理的数据量就会更小,速度就会更快。是基于数据报的。
- 会出现丢包的可能性,但不会重发
- 不会保证数据的顺序
5、网络层
(1)IP协议
- IP(Internet Protocol)是TCP/IP协议簇中最为核心的协议。
- IP提供不可靠、无连接的数据报传送服务,所有的TCP、UDP数据都以IP数据报格式传输。
- 不可靠:仅提供传输服务,不能保证IP数据报能成功地到达目的地,其可靠性可以由上层协议来提供
- 无连接:不保存和维护数据报的状态信息,每个数据报的处理和路由选择可以是相互独立的,这样!P数据报的接收顺序不一定和发送顺序是相同的。
(2)IP地址
- IP地址是指互联网协议地址(Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
IPv4: 4个字节,32位(地址危机 ->私有地址)
IPv6:16个字节,128位(下一代地址)
IP地址划分
6、应用层
(1)HTTP协议
- HTTP 超文本传输协议(Hyper Text Transfer Protocol),属于应用层的协议,是一个基于TCP/IP通信协议来传递数据(HTML 文件,图片文件,视频文件等等)。
- 支持客户/服务器(BS)模式,简单快速,灵活
- 无连接:限制每次连接只处理一个请求,之后即断开连接。
- 无状态(无记忆):对于事务处理没有记忆能力,服务器不知道客户端是什么状态
- 默认端口是:80
HTTPS,安全的超文本传输协议,通过CA证书、SSL、保证传输数据的保密性、安全性、完整性。
(2)HTTP协议请求报文
一个HTTP请求报文包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
标准的POST请求:
(3)HTTP协议请求报文-常见请求方式
(4)HTTP协议响应报文
- HTTP响应报文也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
(5)HTTP协议响应报文-响应状态码
- HTTP状态码(HTTP Status Code):职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助于状态码,浏览器(或者说用户)可以知道服务器是正常的处理了请求,还是出现了错误。
7、加密与认证技术
(1) 对称加密和非对称加密
1、数据加密
- 在计算机技术应用中,为有效防止信息被非法窃取,采用数据加密技术可以有效保证信息在网络中的传播安全。
- 对称加密(单密钥加密):
-
- 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密
- 特点:是算法公开、计算量小、加密速度快、加密效率高
- 主要算法: DES(已破解,不再安全)、AES(最常用)
2. 非对称加密算法
- 加密和解密使用的是两个不同的密钥:公钥(publickey)、私钥(private key )
- 私钥自己保存,公钥对外发布
- 私钥加密,公钥解密;公钥加密,私钥解密
- 常见算法:RSA、DHE RSA、ECDHE RSA
数学是加密的基础技术支持。
非对称加密:公钥和私钥分开的,采用一个加密,另外一个用于解密。
任意的三位数,乘以1001,取乘积的后三位即为原数据本身。
(2)消息摘要技术
1)消息摘要概述
- 消息摘要是把输入的原始数据消息,通过摘要算法,产生长度固定的字符串(像不像对一篇文章进行总结并归纳出它的中心思想)。而原始数据中的任何内容发生变化(哪怕是多了一个空格)也会产生不一样的摘要信息。这个特点被用来检测文件内容的完整性和是否被篡改过(是否被人动过手脚)。
- “消息摘要”是通过“散列函数(hash function)”来实现的,即将任意长度的输入转化为定长输出的一种算法散列函数的结果也常被称为“散列(hash)”、“指纹”、“摘要”或者“哈希”
- 它有以下几个特性:
单向性:散列函数是不可逆的,即无法通过一个给定的散列结果,反向找到出生成它的原始信息内容
抗碰撞性:通过计算无法找到两个不同的原始信息具有相同散列的情况
- MD.Message-Digest Algorithm,该系列的代表算法是:
- 能够产生128比特的散列值。
- MD4已经不再安全,基本不再使用。
- MD5仍然在大量使用,但是已经证明可以通过碰撞攻击技术破解
- SHA:Secure Hash Algorithm,译为“安全散列算法”,包括:
- SHA-1(1995年公布),产生一个160位的消息摘要,过时且不安全
- SHA-2系列,包括SHA-224、SHA-256、SHA-384和SHA-512四个算法,已证实存在安全隐患
- SHA-3(使用Keccak算法),至目前为止,至今尚未显示出不安全性。
中国科学院院士、密码学家王小云(女),提出了密码哈希函数的碰撞攻击理论,即模差分比特分析法,提高了破解了包招MD5、SHA-1在内的5个国际通用哈希函数算法的概率;设计了中国哈希函数标准SM3。2019年获得未来科学大奖“数学与计算机科学奖”
2) MD5破解
- MD5是单向,不可逆的,源数据和hash后的数据是-一对应关系,就可以进行反向破解
- 线上海量存储查询:https://md5jiami.bmcx.com/(TB级海量存储)
- 彩虹表破解:将 MD5 哈希后的密文比作一把锁,破解就相当于有很多可以尝试的钥匙,将钥匙按照某种规律进行分组,每组钥匙中只需要带最有特点的一个,当发现某个“特征钥匙”差一点就能开锁了,则当场对该钥匙进行简单的打磨,直到能开锁为止。---(碰撞方法)
(3)数字签名
- 数字签名(digital signature):是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明
- CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。
- CA机构的数字签名使得攻击者不能伪造和篡改证书。
数字签名不仅仅是对hash摘要的加密,还包括:
- 签名者的名字
- 签名时间
-
Hash算法(Md5算法、sha256算法等)
- Hash加密方法(RSA、AES等)
-
加密后的hash值(¥%..%#¥...&*&*)
- 数字证书CA机构:Digicert、GlobalSign、Wosign
(4)会话安全管理
- 案例
知乎、B站账号登录成功后,在后续很长一段时间内,是不需要再次输入用户名和密码的,就可以访问系统的其他的功能页面,这就是状态保持,那它是怎么实现的呢?
1)会话鉴权和认证
- 会话级鉴权及认证技术包括:cookie管理、session会话技术和token令牌技术Cookie管理是浏览器的一种策略,用于解决http协议是无状态连接问题的,Cookie可以记录用户浏览历史辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据。不管是session会话技术还是token令牌技术都是基于cookie管理进行的。
会话安全管理需要授权和鉴权两个步骤:
- 授权:相当于下发一个通行证(通行证保存cookie管理器)
- 鉴权:鉴定是否有权访问(判断有请求是否正确携带通行证)
2)Cookie状态保持
我们登录一个一个网站成功之后,登录的用户名和密码信息直接保存在浏览器的cookie管理器中,用于后续的其他请求,从而保持登录状态。
如何使用cookie技术,来保持登录状态?
3)Cookie+Session技术
session是将数据存储在服务器中,服务器会为每一个用户创建一条session,用户访问服务器的时候需要拿着session去表明自己的身份,session的实现是基于cookie,session需要借助于cookie来存储sessionID。
使用session技术实现状态保持?
session是保存在服务器端
cookie是保存在客户端
4)Token技术
Token:在计算机身份认证中是令牌(临时)的意思,主要用于前后端分离、第三方登录项目中。
- Token 是在服务端产生的
- 前端向服务端请求认证,服务端认证成功,会返回 Token 给前端
- 前端在每次请求的时候带上 Token 证明自己的合法地位
使用token技术进行状态保持的原理:
5)Token技术-jwt
- JWT(JSON Web Token)是一个开放标准(RFC 7519),它利用简洁且自包含的 JSON 对象形式进行信息安全传递。
- JWT 构成简单,且传输的信息中就已经包含了用户信息,JWT标准的Token由三个部分组成:
- 头部
- 负载部
- 签名部
{ "token": "ey10eXAi0iJKV10iLCIhbGci0iJIUzI1NiJ9.
ey11c2VyX21kIjoyLCJ1c2VybmftZSI6ImpvbmFoIiwiZXhW.
ZrKyBIGBuf9j11L0eZAG2487A0MLGCACKOXIXgMcb54" }
6)session会话安全管理
sessionID属性管理
cookie属性管理:
本文来自博客园,作者:他还在坚持嘛,转载请注明原文链接:他还在坚持嘛 https://www.cnblogs.com/brf-test/p/18646282
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2022-01-01 python @classmethod 【转】
2021-01-01 Linux---监测相关&安装