杂说4 —— 加密传输相关, rk3588 SM2 SM3 SM4
(去年4月,将近一年时间)
目前除了几颗SoC之外就只有专用加密芯片集成了SM系列国家商用密码算法体系,任重道远,希望SoC能尽快集成。
某SoC:
1. AES(128/256)
2. HASH(SHA1/SHA256/HMAC_SHA1/HMAC_SHA256)
3. RSA(256/512/1024/2048)
1. HASH
甲要发消息M给乙,为了方便乙验证消息M完整,将M做HASH计算,然后将M+HASH(M)一起发送给乙。乙收到后,计算、验证 OK。
丙知道后,在甲传给乙时截获消息M,并篡改为消息N,将N做HASH计算,然后N + HASH(N)发送给乙。乙收到后,依旧计算、验证 OK。
2. HMAC
甲碰到乙,发现乙收到的并非是自己发的消息。于是商量X作为双方消息密钥。
甲将消息A与X一起做HASH计算,再将 A + HASH(AX)一起发送给乙。乙收到后,计算、验证 OK。
一开始丙不知道X,截获后先验证发现不对,无法再欺骗乙了。
可后来,丙撞到了X,又可以继续欺骗了。
3. 密钥交换算法
甲再次碰到乙,又发现乙收到的一些验证OK的消息不是自己发的。于是商量每隔一段时间换一个密钥,用密钥交换算法来通知。
3.1 RSA用于密钥交换时
甲发送公钥Pj给乙,乙生成随机数C后使用Pj加密得到M1发送给甲,甲用对应私钥解密得到随机数C,然后双方使用随机数C作为消息密钥。
(可以防中间人攻击,但为什么不推荐RSA用于密钥交换,因为不是前向加密,一旦RSA私钥泄漏,之前的密文都会被解密。)
3.2 DH
(易被中间人攻击)
3.3 DHE
3.4 ECDHE
(前向加密,私钥泄漏后之前的密文不能被解密)
TLS协议的一个协商结果
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:
密钥协商算法 :ECDHE
签名算法:RSA
通信:AES-256-GCM
摘要算法:SHA384
------------------------------------------------------------------------------------------------
一年之后的现在(确切说半年,半年前就有了)RK3588中看到了

等RK3588板子来了,看看硬件模块执行SM3/SM4与X86_64 CPU执行有多大区别。
是时候可以想一想怎么定义自己的加密流传输协议了。
密钥协商算法 :ECDHE ?
签名算法:RSA SM2
通信:AES-256-GCM SM4
摘要算法:SHA384 SM3