雜說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
? ? 甲要發(fā)消息M給乙,為了方便乙驗證消息M完整,將M做HASH計算,然后將M+HASH(M)一起發(fā)送給乙。乙收到后,計算、驗證 OK。
? ? 丙知道后,在甲傳給乙時截獲消息M,并篡改為消息N,將N做HASH計算,然后N + HASH(N)發(fā)送給乙。乙收到后,依舊計算、驗證 OK。
2. HMAC
? ? 甲碰到乙,發(fā)現(xiàn)乙收到的并非是自己發(fā)的消息。于是商量X作為雙方消息密鑰。
????甲將消息A與X一起做HASH計算,再將 A + HASH(AX)一起發(fā)送給乙。乙收到后,計算、驗證 OK。
? ? 一開始丙不知道X,截獲后先驗證發(fā)現(xiàn)不對,無法再欺騙乙了。
? ? 可后來,丙撞到了X,又可以繼續(xù)欺騙了。
3. 密鑰交換算法
????甲再次碰到乙,又發(fā)現(xiàn)乙收到的一些驗證OK的消息不是自己發(fā)的。于是商量每隔一段時間換一個密鑰,用密鑰交換算法來通知。
????3.1 RSA用于密鑰交換時
? ? ????甲發(fā)送公鑰Pj給乙,乙生成隨機數(shù)C后使用Pj加密得到M1發(fā)送給甲,甲用對應私鑰解密得到隨機數(shù)C,然后雙方使用隨機數(shù)C作為消息密鑰。
? ? ? ?(可以防中間人攻擊,但為什么不推薦RSA用于密鑰交換,因為不是前向加密,一旦RSA私鑰泄漏,之前的密文都會被解密。)
????
????3.2 DH
? ? ? ? (易被中間人攻擊)
? ? 3.3 DHE
? ? 3.4 ECDHE
? ? ? ? ?(前向加密,私鑰泄漏后之前的密文不能被解密)
TLS協(xié)議的一個協(xié)商結果
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:
密鑰協(xié)商算法 :ECDHE
簽名算法:RSA
通信:AES-256-GCM
摘要算法:SHA384
------------------------------------------------------------------------------------------------
????一年之后的現(xiàn)在(確切說半年,半年前就有了)RK3588中看到了

????
????等RK3588板子來了,看看硬件模塊執(zhí)行SM3/SM4與X86_64 CPU執(zhí)行有多大區(qū)別。
????是時候可以想一想怎么定義自己的加密流傳輸協(xié)議了。
????
密鑰協(xié)商算法 :ECDHE? ? ? ? ? ? ? ? ??
? ? ? ? 簽名算法:RSA?? ? ? ? ? ? ? ? ? SM2
? ? ? ? ? ? ? ?通信:AES-256-GCM? ?SM4
? ? ? ? 摘要算法:SHA384?? ? ? ? ? ? ?SM3