JWT&对称加密&非对称加密 您所在的位置:网站首页 jwe解密 JWT&对称加密&非对称加密

JWT&对称加密&非对称加密

2023-12-08 08:48| 来源: 网络整理| 查看: 265

JWT

JWT原理图: 在这里插入图片描述

JWT的数据结构 jwt头:JWT头部分是一个描述JWT元数据的JSON对象 有效载荷:七个默认字段+自定义私有字段 签名=HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload),secret 在这里插入图片描述

JWT由头部(header)载荷(payload)签证(sign)三部分构成 jwt的头部包含两部分信息: 声明类型,这里是jwt 声明加密的算法 通常直接使用 HMAC SHA256 然后将头部进行base64加密(该加密是可以对称解密的),构成了第一部分。

# JWT头部分是一个描述JWT元数据的JSON对象,通常如下所示。 { "alg": "HS256", "type": "JWT" } # 1)alg属性表示签名使用的算法,默认为HMAC SHA256(写为HS256); # 2)type属性表示令牌的类型,JWT令牌统一写为JWT。 # 3)最后,使用Base64 URL算法将上述JSON对象转换为字符串保存。

载荷就是存放有效信息的地方。这些有效信息包含三个部分: 标准中注册声明 私有的声明 公共的声明 : 公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息,因为该部分在客户端可解密。 私有的声明 : 私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息。 有效载荷部分,是JWT的主体内容部分,也是一个JSON对象,包含需要传递的数据。 JWT指定七个默认字段供选择。

''' iss:发行人 exp:到期时间 sub:主题 aud:用户 nbf:在此之前不可用 iat:发布时间 jti:JWT ID用于标识该JWT ''' #2、除以上默认字段外,我们还可以自定义私有字段,如下例: { "sub": "1234567890", "name": "chongchong", "admin": true } #3、注意 默认情况下JWT是未加密的,任何人都可以解读其内容,因此不要构建隐私信息字段,存放保密信息,以防止信息泄露。 JSON对象也使用Base64 URL算法转换为字符串保存。

jwt的第三部分是一个签证信息,这个签证信息由三部分组成 header (base64后的) payload (base64后的) secret·10 将上面的两个编码后的字符串都用句号.连接在一起(头部在前),就形成了:JWT

# 1.签名哈希部分是对上面两部分数据签名,通过指定的算法生成哈希,以确保数据不会被篡改。 # 2.首先,需要指定一个密码(secret),该密码仅仅为保存在服务器中,并且不能向用户公开。 # 3.然后,使用标头中7指定的签名算法(默认情况下为HMAC SHA256)根据以下公式生成签名。 # 4.HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret) # 5.在计算出签名哈希后,JWT头,有效载荷和签名哈希的三个部分组合成一个字符串,每个部分用"."分隔,就构成整个JWT对象。

JWT方案中安全性问题 jwt是存储在客户端的,服务器端不需要存储jwt的,客户端每次发送请求时会携带该token,然后到服务器端会验证token是否正确,是否过期了,然后会通过解码出携带的用户的信息的,但是如果token在传输的过程中被攻击者截取了的话,那么对方就可以伪造请求,利用窃取到的token模拟正常请求,实现用户的正常操作,而服务器端完全不知道,因为JWT在服务器端是无状态的,且服务器端不存储jwt的。其实jwt解决的问题是认证和授权的问题,对于安全性的话,还是建议对外公布的接口使用https.

JSON Web Token 它有如下优点:

可以适用于分布式的单点登录场景。可以使用跨域认证解决方案。jwt实现自动刷新token的方案(待认证)。

jwt核心    1)给用户颁发的token值相当于一把锁,服务器端的秘钥相当于一把钥匙    2)每次客户端请求都会携带这把锁,服务器端用秘钥去开这把锁,如果无法打开就证明是伪造的

无状态登录: 服务器不保存用户的登录信息,由客户端请求携带自己的身份信息。服务器不再保存用户的登录信息,多次请求不用访问回到同一台服务,服务器可以弹性伸缩,减小服务端压力,缺点一旦JWT签发,在有效期内将会一直有效

对称加密:

对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。 常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

对称加密 在这里插入图片描述 在这里插入图片描述 优点: 算法公开、计算量小、加密速度快、加密效率高

缺点: 在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

非对称加密:

非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

非对称加密算法实现机密信息交换的基本过程是: 甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

私钥加密的信息,只有公钥才能解密。 常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

优点: 安全

缺点: 速度较慢

非对称加密 在这里插入图片描述 在这里插入图片描述

对称加密和非对称加密的区别

如果通过md5加密,网关需要每次访问授权中心去通信验证,微服务需要多次访问授权中心去解密jwt,网络请求频率高,授权中心压力过大。而通过非对称加密则不存在这个问题。用公钥即可解密header(头部)与payload(载荷)。

1、加密和解密过程不同

对称加密过程和解密过程使用的同一个密钥,加密过程相当于用原文+密钥可以传输出密文,同时解密过程用密文-密钥可以推导出原文。但非对称加密采用了两个密钥,一般使用公钥进行加密,使用私钥进行解密。

2、加密解密速度不同

对称加密解密的速度比较快,适合数据比较长时的使用。非对称加密和解密花费的时间长、速度相对较慢,只适合对少量数据的使用。

在这里插入图片描述

3、传输的安全性不同

对称加密的过程中无法确保密钥被安全传递,密文在传输过程中是可能被第三方截获的,如果密码本也被第三方截获,则传输的密码信息将被第三方破获,安全性相对较低。

非对称加密算法中私钥是基于不同的算法生成不同的随机数,私钥通过一定的加密算法推导出公钥,但私钥到公钥的推导过程是单向的,也就是说公钥无法反推导出私钥。所以安全性较高。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有