纯技术帖——几个常用业务场景下的密码技术应用参考流程

纯技术帖——几个常用业务场景下的密码技术应用参考流程_第1张图片
今天总结几个具有代表性的业务场景中的密码技术应用流程,在开发程序时如遇到相似需求可作为参考。

1.用户身份鉴别

用户登录系统过程中的身份鉴别可使用数字证书签名验证的方式。即在鉴别过程中,客户端使用证书进行数字签名并将签名结果发送至服务器,服务器对数字签名进行验证。推荐使用的签名算法为RSA(2048密钥长度)/SM2,摘要算法为SHA256/SM3算法。系统用户身份鉴别过程如下:

  • 用户在登录端提出登录请求;
  • 服务器得到请求,发送一个随机数给登录端,并在后台缓存此随机数;
  • 登录端对随机数进行摘要运算,得到摘要值;
  • 登录端使用登录用户证书私钥对摘要值进行非对称加密,此过程中,如果证书使用了口令保护,则需要用户输入证书私钥保护口令(密文形式),以完成数字签名。
  • 登录端将签名结果、用户证书和用户ID合并得到鉴别信息,发送给系统后台;
  • 服务器得到鉴别信息后,分离得到数字签名、用户证书和用户ID;
  • 服务器验证用户证书有效性,如果无效,则鉴别未通过,鉴别过程结束;
  • 服务器得到用户证书公钥,用公钥对数字签名进行非对称解密。如果解密失败,返回失败信息给登录端,鉴别过程失败并结束。否则得到解密后摘要值;
  • 服务器对缓存的随机数进行摘要运算,得到摘要值;
  • 服务器比较两个摘要值,如果不同则返回失败信息给登录端。鉴别过程失败并结束;
  • 服务器根据用户ID及用户证书在数据库用户表查询,如果没有记录,鉴别失败,否则鉴别成功;
  • 返回鉴别结果至登录端,鉴别过程结束。

2.对业务数据进行数字签名及验证

对业务数据进行数字签名及验证,推荐使用的签名算法为RSA(2048密钥长度)/SM2,摘要算法为SHA256/SM3算法。

数字签名时,系统对业务数据进行摘要运算生成摘要信息,然后获取用户的私钥进行加密,因为私钥只有盖章用户本人可以使用,从而保证签名行为的不可抵赖性。此签名过程在硬件中进行,具体步骤如下:

  • 使用摘要算法对所签名文档与印章信息的组合进行运算,得到摘要值;

  • 使用私钥对摘要值进行非对称加密,得到数字签名数据;

  • 将业务数据、数字签名及证书公钥发送给验证方
    数字签名的验证过程如下:

  • 系统用证书公钥对数字签名进行非对称解密运算,如果解密失败,则验证失败;否则得到待验证摘要数据;

  • 系统对业务数据进行摘要运算,得到一个摘要。

  • 将两个摘要值进行比较,如果相同,则验证通过;否则验证未通过,业务数据被篡改。

3.业务数据对称加密传输

用户在业务系统向服务器提交及下载数据时采用对称加密传输,推荐加解密算法为SM4/AES/3DES,数据加解密过程中的对称密钥是随机生成的做到了一次一密,具体规则(以SM4为例)如下:

加密过程:

  • 客户端提交文档时,首先生成一个16字节的随机数;

  • 客户端将参与当前用户ID组合,取前96字节,如果不够96字节按实际长度取得;

  • 客户端将用户ID组合与随机数合并,并进行摘要运算,得出摘要值;

  • 取其摘要值后16字节作为对称密钥值;

  • 使用密钥对要提交的数据进行SM4加密;

  • 用户输入登录系统的口令,客户端对口令进行摘要运算,得到摘要;

  • 客户端使用口令摘要的后16个字节对第一步生成的随机数进行SM4加密;

  • 客户端将密文,加密随机数及用户ID组合提交至服务器保存。
    解密过程:

  • 用户在客户端向服务器发出对数据的下载请求;

  • 服务器根据请求用户ID取得用户口令的摘要值;

  • 服务器使用提交用户口令摘要的后16个字节对加密随机数进行SM4解密,得到随机数;

  • 服务器根据请求请求用户ID取得请求用户口令的摘要值;

  • 服务器使用请求用户口令摘要的后16个字节对随机数进行SM4加密;

  • 服务器将密文,加密随机数及用户ID组合发送给请求用户客户端;

  • 请求用户输入登录系统的口令,客户端对口令进行摘要运算,得到摘要;

  • 客户端使用口令摘要的后16个字节对加密随机数进行SM4解密。得到随机数明文;

  • 客户端将用户ID组合与随机数合并,并进行摘要运算,得出摘要值;

  • 取其摘要值后16字节作为SM4密钥;

  • 使用SM4密钥对得到的密文文档进行解密;

  • 客户端得到明文。
    注意:在解密过程中,服务器对于存储的加密随机数的操作流程是先解密、再加密,然后把加密后的随机数发送给客户端,而不是直接把加密随机数发送给客户端。这样做是为了确保数据是按指定的方式加解密,防止被中间人截获攻击。

4.业务数据非对称加密传输

用户在业务系统向服务器提交及下载数据时采用非对称加密传输,推荐非对称加解密算法为RSA(2048密钥长度)/SM2,摘要算法为SHA256/SM3算法,对称加解密算法为AES/SM4,具体规则(对称算法以SM4为例)如下:

加密过程:

  • 客户端提交数据时,生成一个16字节的随机数作为对称密钥值;

  • 使用对称密钥对要提交的数据进行SM4加密;

  • 客户端查询返回数据接收方的证书(公钥)集合;

  • 客户端使用接收方和自己(如果需要)的证书(公钥)分别加密对称密钥,生成加密对称密钥集合;

  • 客户端将密文及对称密钥集合组合提交至服务器保存。
    解密过程:

  • 接收用户在客户端向服务器发出对数据的下载请求;

  • 服务器将密文及加密对称密钥集合组合发送给用户客户端;

  • 客户端根据加密对称密钥集合在本机查找对应的证书私钥并解密;

  • 将解密后的数据作为SM4密钥;

  • 使用SM4密钥对得到的密文文档进行解密;

  • 客户端得到明文。

5.用户口令设定及验证

系统管理员或用户可以对用户口令进行设置,设置的口令以摘要值形式存储,过程如下:

  • 管理员为某一用户或用户为自己设置口令;
  • 系统对口令进行摘要运算;
  • 将运算生成的摘要值存储在数据库,并与相应的用户ID对应。相应的。用户登录系统验证口令时。过程如下:
  • 用户输入口令;
  • 客户端对口令进行摘要运算,并发送到服务器;
  • 服务器进行口令摘要值对比验证,并返回结果。
    上面几个场景中的密码应用都是参考,在具体开发中,开发者应该根据实际情况和需求设计具体的应用流程。

你可能感兴趣的:(密码学)