请选择 进入手机版 | 继续访问电脑版

专注代码检测 - 阅镜

 找回密码
 立即注册
热搜: 安装 代码
查看: 114|回复: 0

不应该在客户端代码中硬编码对称加密秘钥

[复制链接]

70

主题

70

帖子

232

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
232
发表于 2021-9-10 19:41:15 | 显示全部楼层 |阅读模式

不应该在客户端代码中硬编码对称加密秘钥。例如:不应在客户端代码使用硬编码的 AES/ChaCha20-Poly1305/SM1 密钥,使用固定密钥的程序基本和没有加密一样。

如果业务需求是认证加密数据传输,应优先考虑直接用 HTTPS 协议。

如果是其它业务需求,可考虑由服务器端生成对称秘钥,客户端通过 HTTPS 等认证加密通信渠道从服务器拉取。

或者根据用户特定的会话信息,比如登录认证过程可以根据用户名用户密码业务上下文等信息,使用 HKDF 等算法衍生出对称秘钥。

又或者使用 RSA/ECDSA + ECDHE 等进行认证秘钥协商,生成对称秘钥。

  1. // Bad
  2. char g_aes_key[] = {...};

  3. void Foo() {
  4.   ....
  5.   AES_func(g_aes_key, input_data, output_data);
  6. }
复制代码

可以考虑在线为每个用户获取不同的密钥:

  1. // Good
  2. char* g_aes_key;

  3. void Foo() {
  4.   ....
  5.   AES_encrypt(g_aes_key, input_data, output_data);
  6. }

  7. void Init() {
  8.   g_aes_key = get_key_from_https(user_id, ...);
  9. }
复制代码


关联漏洞:
  1.     中风险-信息泄露
复制代码
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ|Archiver|手机版|小黑屋| 阅镜 ( 京ICP备2020034574号 )|网站地图|网站地图点击这里给我发消息

GMT+8, 2022-1-17 08:18 , Processed in 0.293027 second(s), 70 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表