## 6 Evaluation and Analysis
### Experimental Evaluation
\begin{table}
\begin{tabular}{c c} \hline
**Parameter** & **Supported Cases** \\ \hline Hash algorithm (Hash output size in bytes) & SHA3-512 (64), SHA3-256 (32), SHA2-256 (32), SHAKE-256 (32), SHAKE-256 (32), SHAKE-128 (16), SHA1-160 (20), MD5-128 (16), SM3 (256) \\ \hline Number of SWCs & 2 through 128 \\ \hline Non-volatile program flash sizes & 1 MB through 20 MB \\ \hline \multicolumn{3}{c}{Multiple of 16 KB.} \\ Size of software clusters & Max size = Flash size/Number of software clusters \\ \hline \end{tabular}
\end{table} 
Table 3: Parameters used in MT-SOTA scheme study. functions are stronger than 256-bit hash functions, which are stronger than 128-bit hash functions. The main security profiles of computation of hashes [24]:  
* SHA-2: Length: 224, 256, 384, 512
* SHA-3: Length: 224, 256, 384, 512
* BLAKE: Length: 224, 256, 384, 512
* RIPEMD-160: Length: 128, 160, 256, 320
* SM3: Length: 256  
Since the hashing computation can be executed by hardware engines within the security module in AURIX\({}^{(TM)}\), our analysis shows that the usage of different hash algorithms does not have a major impact on execution timing. Thus, we decided to include the results of the work performed with the SHA2-256 hash algorithm in this paper. The number of software clusters and the hash algorithm used have a direct impact on the data flash memory required to save the contents. The larger the size of the hash output is, the more memory it takes to construct and store the Merkle tree. The more software clusters there are, the more levels the Merkle tree has. In order to compare our MT-SOTA concept performance to existing concepts, we study the case when MT-SOTA is not used. Since our concept requires using a single security key pair for each ECU, we have the same requirement for a SOTA study without MT-SOTA. In this case, when any part of the software is modified, added, or removed, the complete software must be hashed, and then the hash value is signed (encrypted by OemR and decrypted by EcuX). We show the hashing time execution for different values of software cluster sizes and numbers in Figure 13. As the software cluster size increases, more time is required to perform hash operations. It is worth noting that there is an inverse correlation between the size and the number of software clusters as the complete software has to fit into the available Pflash memories. Thus, the maximum size of the software cluster becomes limited as the number of software clusters increases. With our MT-SOTA implementation, we measured the time required to create and set up the Merkle tree data. Prior to this, hashing values of all software components had to be calculated and used for the leaf nodes of the tree, followed by creating different levels of hashes until reaching to the root, as explained earlier. The execution times are shown in Figure 14. As shown, the Merkle tree setup is independent of the software cluster size because only the hash values are used. The more nodes used, the more time is required for the tree setup. Once the Merkle tree is built, we study the case of adding new software clusters or updating or removing them. Figure 15 shows the time required to add or update a software component. This includes hashing the added/updated software and updating the Merkle tree with a new hash value. Figure 16 shows the time required to remove a software component entry from the Merkle tree. Because removing a node does not require hashing for the software cluster, the time taken to remove a node is shorter than the time taken to add a node. It only requires updating the Merkle tree to retrieve the root. Employing MT-SOTA for software cluster updates leads to a reduction in timing by as much as 80%, as illustrated in Figure 17. The measurement results in Figure 18, showcasing various Merkle tree sizes, further affirm the significant improvement provided by MT-SOTA. The time required for hashing smaller data blocks (software clusters) is significantly shorter than the time needed for hashing the entire software.