wechat-miniprogram / sm-crypto

miniprogram sm crypto library
MIT License
440 stars 88 forks source link

不安全加密 #14

Closed UMU618 closed 4 years ago

UMU618 commented 4 years ago

https://github.com/wechat-miniprogram/sm-crypto/blob/203cb80c7a715cca3c48804c9b891e1c10d6a080/src/sm2/sm2.js#L60

这个加密算法十分不安全,尽量不要使用。

现在假设有人用这个算法去加密 XML 文件,黑客通过社工猜到原文是 XML。(其它能猜到文件前 32 字节的格式也可以)

<?xml version="1.0" encoding="UTF-8"?> 这是 38 字节

黑客根据猜测内容和密文,逆向出第一轮的 XOR 秘钥,然后后面的每一轮都用第一轮和 ct++ 来计算,于是黑客就能解密整个 XML 文件。

希望作者能出个 SM4 加密的版本……第一轮 XOR 秘钥是用 SM2 的方法产生的,这很安全,把这个对称加密的秘钥拿去当 AES 或者 SM4 的秘钥就行了。

UMU618 commented 4 years ago

由于 ct 初始值是 1,第一轮的 sm3keybase 无法逆算出来,所以这个加密是安全的。