Web应用JSON数据保护(密码算法、密钥、数字签名和数据加密)

这篇具有很好参考价值的文章主要介绍了Web应用JSON数据保护(密码算法、密钥、数字签名和数据加密)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.JSON(JavaScript Object Notation)
JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。JSON通过简单的key-value键值对来描述数据,可以被广泛用于网络通信、数据存储等各种应用场景,被广泛应用于互联网前后端数据交互与传输之中。
例如,在web应用中客户端向服务器发送一个HTTP请求并期望返回一些数据时,服务器可以使用JSON作为响应的数据格式,将数据以JSON的形式返回给你。以下是一个实际的JSON数据示例:
{
  "name": "John",
  "age": 30,
  "city": "New York",
  "email": "john@example.com"
}
上面的JSON数据描述了一个人的信息,包括姓名、年龄、所在城市和电子邮件地址。在网络通信中,你可以使用这个JSON数据在客户端和服务器之间传输,以便在你的应用程序中展示或处理这些数据。
目前常见的对JSON数据进行加密保护的方法:
(1)使用HTTPS协议进行数据传输可以提供端到端的加密保护。HTTPS使用SSL/TLS协议对通信数据进行加密,确保数据在传输过程中被加密,并且只有发送方和接收方能够解密和读取传输的数据。
(2)使用加密算法,如AES或RSA等,对JSON数据进行加密。发送方使用公钥加密数据,接收方使用私钥解密数据。这样可以确保只有有权访问私钥的接收方才能解密和读取数据。
(3)使用数字签名来验证JSON数据的完整性和真实性。发送方使用私钥对JSON数据进行签名,接收方使用发送方的公钥验证签名的有效性。这样可以确保接收到的数据没有被篡改,并且是发送方发送的真实数据。

2.国密JSON数据保护相关标准
(1)《GMT 0125.1-2022 JSON Web 密码应用语法规范第1部分 算法标识》
定义JSON web密码应用的算法标识,包括数字签名算法标识、消息鉴别算法标识、密钥加密密钥算法标识、内容加密算法标识。

类别 标识 说明
数字签名算法标识

SGD_SM3_SM2

基于SM3和SM2的数字签名算法
消息鉴别算法标识 SGD_SM3_HMAC 基于SM3的消息鉴别算法
密钥加密密钥算法标识 SGD_SM2_3

SM2公钥加密算法

密钥加密密钥算法标识 SGD_SM9_3 SM9加密算法
内容加密算法标识 SGD_SM4_CCM 基于SM4算法CCM加密算法
内容加密算法标识 SGD_SM4_GCM 基于SM4算法GCM加密算法


(2)《GMT 0125.4-2022 JSON Web 密码应用语法规范第4部分 密钥》

JWK(JSON Web Key)是标识密钥信息的JSON对象,具体参数定义如下。

参数名称 类型 要求 参数取值 说明
kty 字符串 必选 EC ECC密钥类
kty 字符串 必选 oct 对称密钥或字符串类
crv 字符串 kty取值EC sm2p256v1  sm2算法曲线
crv 字符串 kty取值EC sm9curve sm9算法曲线
x 字符串 kty取值EC,crv取sm2p256v1 base64url编码 sm2算法公钥x取值
y 字符串 kty取值EC,crv取sm2p256v1 base64url编码 sm2算法公钥y取值
id 字符串 kty取值EC,crv取sm9curve base64url编码 sm9用户标识
hid 整数 kty取值EC,crv取sm9curve 无符号整数 sm9私钥生成函数标识
x_pub 字符串 kty取值EC,crv取sm9curve base64url编码 sm9主公钥x坐标
y_pub 字符串 kty取值EC,crv取sm9curve base64url编码 sm9主公钥y坐标
k 字符串 kty取值oct base64url编码 对称密钥
use 字符串 key取值EC(可选) sig 公钥用法,签名
use 字符串 key取值EC(可选) enc 公钥用法,加密
key_ops 数组 可选

sign

verigy

encrypt

decrypt

wrapKey

unwrapKey

deriveKey

deriveBits

密钥操作字符串数组
alg 字符串 可选

SGD_SM3_SM2

SGD_SM3_HMAC
SGD_SM2_3
SGD_SM9_3
SGD_SM4_CCM
SGD_SM4_GCM

标识密钥相关参数
kid 字符串 可选 ID 密钥ID
x5u 字符串 可选 URI 证书URL
x5c 数组 可选 JSON字符串数组 证书链
x5t#sm3 字符串 可选 base64url编码 证书sm3杂凑值

最后,参数keys表示一个JWK集合,例如如下JWK集合中包含

(1)SM2签名公钥

(2)SM2加密公钥

(3)对称密钥(用于SM3-HMAC的key)

(4)SM2验签证书

{

"keys":

 [

        {        

                "kty":"EC"

                "crv":"sm2p256v1"

                "usg":"sig"

                "x":"KkiOvc0rfJKjVEDwrSzhPCJiZS0-H32KDeBk3_RZ2PQ"

                "y":"BxAmH6GXCTbD_VMhBDIwHUHJgE5AMGmZguPIus9ve_8"

        },

        {

                "kty":"EC"

                "crv":"sm2p256v1"

                "usg":"enc"

                "x":"1atDIhF_9PQPSjwmx3KUMZcUM9TPrGQ95oakHKpxW_0"

                "y":"cDImanzNUiT_t7lxIvCR6ooYsRlJqSDGW3XGbiQr5Kg"

        },

        {

                "kty":"oct"

                "alg":"SGD_SM3_HMAC"

                "k":"NiWEDbx7DGGMXMkWyePWtd64R8Y10hf4OdA4alcfGPA"

        },

        {

                “kty”:"EC"

                "crv":"sm2p256v1"

                "use":"sig"

                "x5c":

                ["MIIClzCCAjygAwIBAgIQdd/IVUqMA6s1z1nouGE7njAMBggqgRzPVQGDdQUAMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVOUkNBQzEPMA0GA1UEAwwGUk9PVENBMB4XDTEzMDExNjExMDczMVoXDTMzMDExMTExMDczMVowRDELMAkGA1UEBhMCQ04xDTALBgNVBAoMBEJKQ0ExDTALBgNVBAsMBEJKQ0ExFzAVBgNVBAMMDkJlaWppbmcgU00yIENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEioqqRw0qmjPYUF+6SWgWI1JzDHPGO0iTjSa5m0MuR/QB83yLBknccZ3T1qwdgv27e3qqKMdA3U3ipZkz6qxVk6OCASIwggEeMB8GA1UdIwQYMBaAFEwysZfZMxvEpgXBxuWLYlvwl3ZYMA8GA1UdEwEB/wQFMAMBAf8wgboGA1UdHwSBsjCBrzBBoD+gPaQ7MDkxCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVOUkNBQzEMMAoGA1UECwwDQVJMMQwwCgYDVQQDDANhcmwwKqAooCaGJGh0dHA6Ly93d3cucm9vdGNhLmdvdi5jbi9hcmwvYXJsLmNybDA+oDygOoY4bGRhcDovL2xkYXAucm9vdGNhLmdvdi5jbjozODkvQ049YXJsLE9VPUFSTCxPPU5SQ0FDLEM9Q04wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQf5s/Uj8UiKpdKKYoV5xbJkjTEtjAMBggqgRzPVQGDdQUAA0cAMEQCIFiMoH1BR7I3DmlPk5uhui/W2cX6iPAdnXI4LSPUg9T9AiB06XDp+wsPScMBYzRuY5xBC7IiC+nj+ehMDmkLD4mXKg=="]

        }

]        

}

 (3)《GMT 0125.2-2022 JSON Web 密码应用语法规范第2部分 数字签名》

JWS是使用JSON方式来表示对消息数据的数字签名或消息鉴别码的数据结构,JWS由JOSE头、JWS有效载荷和JWS签名组成。

        JOSE头部参数定义

json数据加密,# 密评实践,# 密码应用安全性评估,# 国密标准,json,安全,密码测评

消息数据的紧凑序列化结果形式为:(仅支持一个签名或消息鉴别码)

base64url(UTF8(JWS保护头部)||'.'||base64url(JWS有效载荷)||'.'||(JWS签名)

消息数据的JSON序列化有两种形式,通用JSON序列化和扁平JSON序列化,前者可以包含一个签名对象组,后者只能表示一个JWS签名对象。

        通用JSON序列化

        json数据加密,# 密评实践,# 密码应用安全性评估,# 国密标准,json,安全,密码测评

        扁平JSON序列化

        json数据加密,# 密评实践,# 密码应用安全性评估,# 国密标准,json,安全,密码测评

        SM2签名实例

字段 内容
有效载荷(明文) message digest
有效载荷编码(base64url) bWVzc2FnZSBkaWdlc3Q
签名算法(标识) SGD_SM3_SM2
sm2数字证书(base64) 如上(MIIClzCCAjyg......mXKg==)
sm2数字证书sm3杂凑值(base64url) l3n9tvTLguEXRout0wKFp55IGEEMf0DMrCyijdXzcyg
JOSE头部

{

        "alg":"SGD_SM3_SM2",

        "x5t#sm3":"l3n9tvTLguEXRout0wKFp55IGEEMf0DMrCyijdXzcyg"

}

JOSE头部编码(base64url) e8KgImFsZyI6IlNHRF9TTTNfU00yIu-8jCJ4NXQjc20zIjoibDNuOXR2VExndUVYUm91dDB3S0ZwNTVJR0VFTWYwRE1yQ3lpamRYemN5ZyJ9
待签名对象M JOSE头部编码.有效载荷编码
M的签名结果(base64url) pcQI2trgy0Y-nCrl1C1Z5VPCLbNPQcq8ouF3lUANFVQMozHPv5aNHCQzeOv8ysplYSfLLYoVWQxut2eWHtwriA

        SM3消息鉴别码实例

字段 内容
有效载荷(明文) message hmac
有效载荷编码(base64url) bWVzc2FnZSBobWFj
算法标识 SGD_SM3_HMAC
Key(hex) 59276E27D506861A16680F3AD9C02DCCEF3CC1FA3CDBE4CE6D54B80DEAC1BC21
JOSE头部

{

        "alg":"SGD_SM3_HMAC"

}

JOSE头部编码(base64url) eyJhbGciOiJTR0RfU00zX0hNQUMifQ
验证码输入参数M eyJhbGciOiJTR0RfU00zX0hNQUMifQ.bWVzc2FnZSBobWFj
HMAC(base64url) XFLRB4aC6o3zQrh55vfAzswuHVLfuwFhyAonMV24Qss

(4)《GMT 0125.3-2022 JSON Web 密码应用语法规范第3部分 数据加密》

JWE是使用JSON方式来表示数据加密的数据结构,JWE由JOSE头部、JWE密钥密文、JWE初始向量、JWE额外可鉴别数据、JWE密文和JWE鉴别标识组成。

        JWE头部参数定义

json数据加密,# 密评实践,# 密码应用安全性评估,# 国密标准,json,安全,密码测评

        JWE密钥加密算法

        SM2公钥加密算法(SGD_SM2_3)、SM9加密算法(SGD_SM9_3),杂凑算法均指定使用SM3。

        JWE内容加密算法

        使用可鉴别加密机制算法(SGD_SM4_CCM和SGD_SM4_GCM),具体算法要求如下。

json数据加密,# 密评实践,# 密码应用安全性评估,# 国密标准,json,安全,密码测评

        基于SGD_SM2_3(密钥加密算法)和SGD_SM4_CCM(内容加密算法)的数据加密实例

字段 内容
待加密数据M(明文) message encryption
加密密钥算法(标识) SGD_SM2_3
内容加密算法(标识) SGD_SM4_CCM
sm2数字证书(base64) 如上(MIIClzCCAjyg......mXKg==)
sm2数字证书sm3杂凑值(base64url) l3n9tvTLguEXRout0wKFp55IGEEMf0DMrCyijdXzcyg
JOSE头部

{

        "alg":"SGD_SM2_3",

        "enc":"SGD_SM4_CCM",

        "x5t#sm3":"l3n9tvTLguEXRout0wKFp55IGEEMf0DMrCyijdXzcyg"

}

JOSE头部编码(base64url) eyJhbGciOiJTR0RfU00yXzMiLCJlbmMiOiJTR0RfU000X0NDTSIsIng1dCNzbTMiOiJsM245dHZUTGd1RVhSb3V0MHdLRnA1NUlHRUVNZjBETXJDeWlqZFh6Y3lnIn0
信宿SM2密钥

{
    "kty":"EC",
    "crv":"sm2p256v1",
    "x":"h2Mb1HuPNTgNehMLz5IoR3cVhlu-EmFf-cHHml_kZGw",
    "y":"9s4n5s6nZ-fJ4SuVaU-fUkxTIgFvZH4LlJRkstM8iJA",
}

d="AsSpsb0oqEJc1S603kf5l6yW-B2YyS6UZqOg5QhuIjg"文章来源地址https://www.toymoban.com/news/detail-842811.html

CEK内容加密密钥(128位随机数) 719C332571B58835503F8EC25FB81EDA
信宿公钥对CEK加密(base64url) BGOY2r20QSlxvN-UDQbgYKCCFJmKiaHsItrC-pZGsYGhrT_j-dS0t-y7bnPKO3gRSyjvGHXGLYdsVRr2MEzh2s7pPvHRGN-bZ_AuZmRA8pH8M7LI1VJlaUfxif04jcXWTUma8n76fTSxu1Kz3w2ABxk
随机数IV EjRWeJCrze8
额外可鉴别数据A eyJhbGciOiJTR0RfU00yXzMiLCJlbmMiOiJTR0RfU000X0NDTSIsIng1dCNzbTMiOiJsM245dHZUTGd1RVhSb3V0MHdLRnA1NUlHRUVNZjBETXJDeWlqZFh6Y3lnIn0
M加密密文编码Ciphertext(base64url) d5doM5Y7UBUc-WXiJRgERw
M加密标志编码Tag(base64url) RAPO79sKY5hqSQ

到了这里,关于Web应用JSON数据保护(密码算法、密钥、数字签名和数据加密)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 国密算法 SM2 公钥加密 数字签名 密钥交换 全网最高效的开源python代码

    此前发布过SM2、SM3、SM4、ZUC等文章,以及开源的完整python代码。近些天看到一篇电子科大兰同学的硕士毕业论文(兰修文. ECC计算算法的优化及其在SM2实现中的运用[D]. 成都: 电子科技大学, 2019),文中采用预计算加速SM2椭圆曲线基点点乘,将这个思路用python代码实现后,实测

    2024年02月09日
    浏览(47)
  • 商用密码应用与安全性评估要点笔记(SM2密钥交换算法)

    1、SM2算法简介         SM2密码算法是我国2010年发布的商用密码算法,属于公钥密码算法,也成为非对称密钥机制密码算法。SM2基于椭圆曲线离散对数问题,相对于RSA基于大整数因数分解更具优越性。         SM2算法于2012年成为我国密码行业标准,并于2017年被ISO采纳,成为

    2024年02月11日
    浏览(34)
  • 【网络安全】数据加密标准(DES算法)详细介绍( 分组密码、Feistel密码结构、轮函数、子密钥生成算法)

    将被加密明文划分成一个一个的分组,输入n比特明文分组,输出n比特密文分组。 若映射可逆,具有 x n ! x^n! x n ! 种替换可能性。 如以下示例,每个4比特输入唯一映射为另一个4比特输出。 2.1 什么是Feistel密码结构 1973年由 IBM的Horst Feistel首次提出 ,通过将明文分组分成 左右

    2023年04月08日
    浏览(42)
  • 密码学概念科普(加密算法、数字签名、散列函数、HMAC)

    密码散列函数 (Cryptographic hash function),是一个单向函数,输入消息,输出摘要。主要特点是: 只能根据消息计算摘要,很难根据摘要反推消息 改变消息,摘要一定会跟着改变 对于不同的消息,计算出的摘要几乎不可能相同 根据散列函数的上述特点,可以应用在保存密码、数

    2024年02月10日
    浏览(49)
  • 密码学学习笔记(十七 ):Edwards曲线数字签名算法 - edDSA

    Edwards曲线数字签名算法(Edwards-curve Digital Signature Alogorithm, edDSA)由Daniel J. Bernstein等人在2011年提出,它是一种使用基于扭曲爱德华兹曲线的Schnorr签名变体的数字签名方案。 EdDSA的一个特殊之处在于,该方案不要求每次签名都是用全新的随机数,而且该算法是确定性的。 EdDSA不直

    2024年02月16日
    浏览(46)
  • 保护用户数据隐私:Web3 技术在电商行业中的应用

    电商行业一直是全球经济发展的重要推动力。然而,随着电商行业的不断发展,中心化的支付、物流和数据存储方式逐渐暴露出安全隐患和隐私问题。这时,Web3 技术以其去中心化、安全性和透明性等特点,为电商行业带来了新的解决方案和可能性。 一、Web3 技术在电商支付

    2024年02月13日
    浏览(40)
  • 深入解析Ed25519椭圆曲线数字签名算法的C#移植及应用示例

    第一部分:Ed25519算法的简介与重要性 随着数字加密技术的飞速发展,我们不断地探索更安全、更高效的加密算法来保护数据和身份验证。其中,Ed25519已经成为了椭圆曲线数字签名算法(ECDSA)的一个重要分支,其在性能和安全性方面都表现出了卓越的特点。 Ed25519的特点 :

    2024年02月12日
    浏览(61)
  • 密码算法、密钥体系---安全行业基础篇1

    密码算法是一种数学和计算方法,用于保护数据的机密性和安全性。不同的密码算法使用不同的数学原理和技术来加密和解密数据。以下是一些常见的密码算法类型: 1. **对称密码算法:**           特点: 相同的密钥用于加密和解密数据。数据必须是块的整数倍。   

    2024年02月09日
    浏览(39)
  • 【后量子密码】CRYSTALS-KYBER 算法(二):密钥封装 KEM(附源码分析)

    Kyber 算法是一种满足 IND-CCA2 安全的密钥封装机制(key-encapsulation mechanism,KEM),其安全性依赖于MLWE 问题的困难性。Kyber 算法构建采用了两阶段的方法:首先引入了一种IND-CPA 安全的公钥加密方案,用于加密长度为32字节的消息,称之为 Kyber.CPAPKE ;然后使用改进的 Fujisaki-Ok

    2024年01月23日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包