I am currently designing a communication protocol for an embedded system. I’ve decided that authentication (but not encryption) is important, so I decided to add 4 bytes of truncated HMAC signature to every packet. At the same time, I also want to be able to do data verification to ensure that the data arrives correctly and hasn’t been corrupted in transit. So I was thinking of appending a CRC32 to every packet. However, wouldn’t the HMAC signature also be good enough for verifying the integrity of the packet?
Is there any point in adding both an HMAC signature and a CRC32? Or is an HMAC enough?