SemiDrive E3 MCAL 開發系列(13)– Crypto 模塊的使用

關鍵字 :SemiDriveE3MCALCrypto加解密哈希
一、概述

本文將會介紹 SemiDrive E3 MCAL Crypto 模塊的簡介以及基本配置。此外會結合實際操作的介紹,幫助新手快速了解並掌握這個模塊的使用,文中的 MCAL 是基於 PTG3.0 的版本,開發板是官方的 E3640 網關板。

二、   Crypto 模塊簡介

MCAL 的 Crypto 模塊主要實現了加解密相關的功能,給上層模塊提供了標準 API 接口,該模塊的軟體框圖如圖 2.1 所示。E3 提供的 Crypto 模塊支持以下幾類加解密算法:

  • 對稱加密算法,包括 AES、SM4 算法
  • 非對稱加密算法,包括 RSA、ECC、SM2、SM9 等算法
  • 哈希算法,包括 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、SM3等
  • 真隨機數生成
Crypto 模塊框圖

                                                                                    圖 2.1 Crypto 模塊框圖

三、   Crypto 模塊的主要配置

Crypto 模塊的配置比較簡單,用戶一般使用默認的配置即可,其配置主要有兩部分,密鑰和算法。Crypto 模塊配置的主界面如圖 3.1 所示。密鑰的配置包括了以下幾個部分:

  • CryptoKeyElement
  • CryptoKeyType
  • CryptoKey

算法的配置包括:

  • CryptoDriverObject
  • CryptoPrimitives
Crypto 模塊配置主界面

                                                                         圖 3.1 Crypto 模塊配置主界面

CryptoKeyElement 的配置頁面如圖 3.2 所示,CryptoKeyElement 是每個密鑰的基本組成元素,每個 CryptoKey 由一個或多個的 CryptoKeyElement 組成,因此優先配置 CryptoKeyElement。CryptoKeyElement 主要配置秘鑰的格式、長度以及訪問權限等。
CryptoKeyElement 配置頁面

                                                                圖 3.2 CryptoKeyElement 配置頁面

CryptoKeyType 表示一個 Key 的組成結構,它可能包含多個 CryptoKeyElement。具體配置頁面如圖 3.3 所示,我們可以在裡面添加之前配置的 CryptoKeyElement。
CryptoKeyType 配置頁面

                                                                          圖 3.3 CryptoKeyType 配置頁面

最後是配置 CryptoKey,CryptoKey 是 CryptoKeyType 的具體實例,配置頁面如下圖所示。其中 CryptoKeyType 選項配置這個秘鑰的類型,比如 CRYPTO_KEYTYPE_SKE_KEY_256、CRYPTO_KEYTYPE_RSA2048_PUB(RSA2048 公鑰)、CRYPTO_KEYTYPE_RSA2048_PRI(RSA2048 私鑰) 等等。而 CryptoHSMKeyType 選項則表示秘鑰的存儲類型,CMD_KEY_EXTERNAL_CIPHERTEXT(外部密文)、CMD_KEY_EXTERNAL_PLAINTEXT(外部明文)、CMD_KEY_INTERNAL(內部秘鑰)。


CryptoKey 配置頁面

                                                                              圖 3.4 CryptoKey 配置頁面

  • 算法方面的配置包括 CryptoDriverObject 和 CryptoPrimitives 兩個部分,CryptoPrimitives 的配置頁面如圖5 所示。CryptoPrimitives主要用於配置具體的算法,包括 SHA1、SHA2_224、SM3 等等。
CryptoPrimitives 配置頁面

                                                                   圖 3.5 CryptoPrimitives 配置頁面

CryptoDriverObject 是用來運行加密算法的實體,一個 CryptoDriverObject 包含同一系列算法,是一類算法的集合。具體配置界面如圖 3.6 所示。
CryptoDriverObject 配置頁面

                                                                               圖 3.6 CryptoDriverObject 配置頁面

    以上便是關於 Crypto 模塊的相關配置介紹,一般情況下使用 MCAL 默認的配置即可。

四、 實際操作

如圖 4.1 所示為 Crypto 模塊關於哈希算法的測試代碼,該測試代碼為我們演示如何指定對應的哈希算法進行哈希計算,其計算結果會通過串口列印出來。
測試代碼

                                                                                圖 4.1 測試代碼

關於如何調用這個測試代碼,操作如下,板子燒錄好代碼後,接上調試 USB,重新上電運行,通過串口首先輸入“runcase 1700”執行Crypto 模組的初始化,接著輸入 “runcase 1701”執行這段測試代碼,從串口中可以看到運算的哈希結果並且提示測試通過。具體如下圖所示。

串口列印

                                                                                圖 4.2 串口列印

五、 參考資料

1.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論