一、ota之.加密算法,mcu加密方式
前面一篇文章,講了soc的加密方式,但是soc資源充足,mcu沒有,所以不會用openss生成公私鑰
切計算哈希用rsa256位。
- ECC(橢圓曲線加密) 是一種非對稱加密算法,用于生成公鑰/私鑰對,實現數字簽名、密鑰交換等,特點是密鑰短、效率高,適合手表等資源受限設備。
- SHA(如SHA-256) 是哈希算法,用于計算數據的“指紋”(哈希值),不生成密鑰,僅用于驗證數據完整性(防篡改)。
- MD5 也是哈希算法,但安全性極低(易被碰撞攻擊),已淘汰;SHA-256 是更安全的哈希算法
詳細解釋
- ECC(橢圓曲線加密)的作用:生成公私鑰,實現簽名/加密
ECC是非對稱加密算法的一種(和RSA同屬一類,但更高效),核心功能是:
- 生成公鑰和私鑰對:通過橢圓曲線數學特性,生成一對關聯的密鑰(私鑰是隨機數,公鑰由私鑰計算得出,不可逆)。
- 數字簽名:用私鑰對數據的哈希值加密(生成簽名),接收方用公鑰解密簽名,驗證數據來源和完整性(如手表OTA中,服務器用私鑰簽名,手表用預存公鑰驗簽)。
- 密鑰交換:在需要加密通信時(如手表和服務器傳輸敏感數據),用ECC安全交換對稱加密密鑰(避免密鑰明文傳輸)。
ECC的優勢:相同安全性下,密鑰長度比RSA短(如256位ECC≈2048位RSA),計算速度快、耗電少,特別適合手表等低功耗MCU。
- SHA(如SHA-256)的作用:計算哈希值,驗證數據完整性
SHA(安全散列算法)是哈希算法,和密鑰無關,僅做一件事:
- 對任意長度的數據(如手表的OTA包、文本、文件)計算出固定長度的哈希值(如SHA-256生成256位=32字節的哈希值),相當于數據的“唯一指紋”。
- 特點:數據只要有任何微小改動(哪怕1個比特),哈希值會完全不同;且無法從哈希值反推原始數據(單向性)。
為什么不用MD5?
MD5也是哈希算法,但因“碰撞攻擊”漏洞(不同數據可生成相同MD5值),早已被淘汰,無法用于安全場景(如OTA驗證)。SHA-256安全性高,是目前主流選擇。
- 三者的關系:哈希(SHA)+ 非對稱加密(ECC)配合實現安全驗證
以手表OTA為例,流程是:
- 服務器端:
- 對OTA包用SHA-256計算哈希值(得到“數據指紋”)。
- 用ECC私鑰對哈希值加密,生成數字簽名(相當于“蓋章”)。
- 下發“OTA包 + 簽名”給手表。
- 手表端:
- 對接收到的OTA包用SHA-256計算本地哈希值。
- 用預存的ECC公鑰解密簽名,得到服務器計算的原始哈希值。
- 對比兩個哈希值:一致則包未被篡改,且來自合法服務器(通過ECC公鑰驗證)。
總結:ECC負責“身份認證和簽名加密”(用公私鑰),SHA-256負責“數據完整性校驗”(用哈希值),兩者配合在手表等設備上實現高效、安全的OTA驗證。