加密与认证技术
目录
一、对称加密和非对称加密
1. 数据加密
在计算机技术应用中,为有效防止被非法窃取,采用数据加密技术可以有效保证信息在网络中的传播安全。
2. 对称加密(单密钥加密)
· 概念:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密
· 特点:算法公开、计算量小、加密速度快、加密效率高
· 主要算法:DES(已破解,不再安全)、AES(最常用)
3. 非对称加密算法
· 加密和解密使用的是两个不同的密钥:公钥(public key)、私钥(private key)
· 私钥自己保存,公钥对外发布
· 一个加密另一个解密:私钥加密,公钥解密;公钥加密,私钥解密
· 常见算法:RSA、DHE_RSA、ECDHE_RSA
二、消息摘要技术
1. 概念
消息摘要是把输入的原始数据消息,通过摘要算法,产生长度固定的字符串。而原始数据中的任何内容发生变化(哪怕多了一个空格)都会产生不一样的摘要信息。这个特点被用来检测文件内容的完整性和是否被篡改过。
2. 散列函数
消息摘要是通过“散列函数”来实现的,即将任意长度的输入转化为定长输出的一种算法。
散列函数的结果也常被称为“散列”、“指纹”、“摘要”或者“哈希”。
它有以下几个特点:
· 单向性:散列函数是不可逆的,即无法通过一个给定的散列结果,反向找到生成它的原始信息内容
· 抗碰撞性:通过计算无法找到两个不同的原始信息具有相同散列的情况
3. 算法
MD5,仍在大量使用,但是已经证明可以通过碰撞攻击技术破解
SHA-3(使用Keccak算法),至今尚未显示出不安全性
4. MD5破解
MD5是单向不可逆的,源数据和hash后的数据是一一对应关系,就可以进行反向破解。
线上海量存储查询:https://md5jiami.bmcx.com/
线上解密破解:https://www.cmd5.com/
彩虹表破解:将MD5哈希后的密文比作一把锁,破解就相当于有很多可以尝试的钥匙,将钥匙按照某种规律进行分组,每组钥匙中只需要带有最有特点的一个,当发现某个“特征钥匙”差一点就能开锁了,则当场对该钥匙进行简单的打磨,直到能开锁为止,
注:因数据量太大,并不一定能找到源数据
三、数字签名技术
数字签名,是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
数字签名不仅仅是对hash摘要的加密,还包括:签名者的名字、签名时间、Hash算法、Hash加密方法、加密后的hash值、数字机构。
四、会话安全管理
1. 会话鉴权和认证
· 会话鉴权及认证技术包括:cookie管理、session会话技术和token令牌技术
· cookie管理是浏览器的一种策略,用于解决http协议是无状态连接问题的,cookie可以记录用户浏览历史,辨别用户身份、进行session跟踪而存储在用户本地终端上的数据。
· 不管是session会话技术还是token令牌技术都是基于cookie管理进行的。
会话安全管理需要授权和鉴权两个步骤:
授权:相当于下发一个通行证(通行证保存cookie管理器)
鉴权:鉴定是否有权访问(判断有请求是否正确携带通行证)
2. cookie状态保持
· 如何使用cookie技术,来保持登录状态?
3. cookie+session技术
session是将数据存储在服务器中,服务器会为每一个用户创建一条session,用户访问服务器的时候需要拿着session去表明自己的身份,session的实现是基于cookie,session需要借助于cookie来存储sessionID。
session保存在服务器端;cookie保存在客户端
· 如何使用session技术实现状态保持?
4. token技术
token,在计算机身份认证中是令牌(临时)的意思,主要用于前后端分离、第三方登录项目中。
· token是在服务端产生的
· 前端向服务端请求认证,服务端认证成功,会返回token给前端
· 前端在每次请求的时候带上token证明自己的合法地位
· 传输可以不依赖cookie(非浏览器)
· 如何使用token技术进行状态保持?
5.token技术——jwt
JWT(JSON Web Token)是一个开放标准(RFC 7519),它利用简洁且自包含的JSON对象形式进行信息安全传递。
JWT构成简单,且传输的信息中就已经包含了用户信息,JWT标准的token由三部分组成:
JWT在线解密 :https://www.box3.cn/tools/jwt.html