本文作者:Miler Shao 可能有人在STM32的選型手冊或相關產品宣全頁上看到加密引擎的介紹,這里一般泛指STM32芯片中的加密處理器【Cryptographic processor】和散列處理器【Hash processor】。雖說二者都跟信息的安全性、有效性相關,在使用上可能有類似的地方,比如信息有效性、身份確認等方面,但二者并非一個東西。 加密處理器的重點是對數據進行加密,對信息做安全保護,不讓信息被非法訪問或對外泄露。信息提供方根據一定的加密算法對原始信息【明文】進行加密后形成【密文】,信息接收方根據相應的解密算法對加密過的【密文】信息進行解密還原為【明文】。

STM32內置的加密處理器一般支持如下幾種加密算法標準: DES: Data Encryption Standard 【數據加密標準】 TDES:Triple Data Encryption Standard【三重數據加密標準】 AES:Advanced Encryption Standard (【高級加密標準】 DES,TDES多應用在數據文件的傳輸,電子資金轉賬,門控門禁的安全性場合。 AES多應用在網絡安全路由,無線通信,數據的加密保存等場合。

哈希處理器的重點是出于數據完整性和有效性的考慮,基于一定算法對數據信息進行計算得出一組哈希值,用于未來對數據信息的完整性和真實性進行比對驗證。 比如要想利用哈希算法查驗文件信息是否被惡意修改或破壞過,可以通過比較傳輸前后數據的哈希值來校驗信息的完整性。 通過檢查信息哈希值的有效真實性,進而確定信息本身的有效真實性。比方說,日常使用的密碼并不是以明文形式存儲,而是以哈希值的形式存儲。通過對用戶輸入的密碼做哈希運算,把所得哈希值和事先預留密碼的哈希值進行比較,從而來確認用戶身份的真實性。
STM32芯片內置的哈希處理器可能支持如下幾種散列算法: SHA-1:Secure Hash Algorithm 【安全散列算法,或說安全哈希算法】 MD5 :Message-Digest Algorithm 5【信息摘要算法5】 HMAC :keyed-Hash Message AuthenticationCode algorithm密鑰散列消息認證碼算法 
簡言之,加密處理器側重保障信息的私密性、安全性,對原有信息直接進行加解密操作,有加密、解密的兩個可逆操作。哈希處理器是側重保障信息的真實性、前后一致性,使用一定的算法結合原有信息計算出固定長度的特征信息值,而且這個過程是不可逆的。
目前STM32家族9大產品線中,具備加密處理器和哈希處理器的芯片主要集中在高性能的產品線中,即STM32F2,STM32F4,STM32F7這三大系列。這里要注意幾點: 上面提到的內置加密處理器和哈希處理器的三大高性能STM32系列中,并非每顆料號都具備,具體要細看各大系列的詳細介紹。曾經有人選擇了一顆并不帶HASH處理器的F4芯片做MD5的應用,快折騰瞎了眼睛也出不來。 即使STM32F2,STM32F4,STM32F7這三大系列中帶加密處理器和哈希處理器,可能個別芯片內部并不完全支持上面提到的所有加密算法和哈希算法,具體查看數據手冊確認。 STM32家族中除了STM32F2,STM32F4,STM32F7這三大系列同時帶加密處理器和哈希處理器外,還有個別STM32系列只帶加密處理器,比如STM32L162系列,STM32L486系列,它們支持AES加解密算法。 在帶加密處理器和哈希處理器的STM32芯片里,二者是兩個獨立的外設模塊。ST官方的固件庫函數里也有提供相關的項目例程。以STM32F4為例,ST官方提供的傳統固件庫或CUBE庫里都有相關項目例程可供參考。 
|