I'm developing an experimental Amateur Radio digital protocol for over-the-air data exchange. A part of any protocol over fallible transport layers is of course some kind of error control (ECC, FEC, CRC, etc). My original intention was to use a simple 16 bit CRC to checksum each individual packet.
An additional concern is the potential spoofing of packets. With a simple CRC this is pretty trivial, as the protocol and implementation will be open-source, it would be easy to construct packets that appear to be from any station.
The protocol may also be used over error-free transport layers as well, in which case the CRC, used purely for error checking, would become redundant.
What I'd like to explore is replacing a simple 16-bit CRC with what amounts to a digital signature. Thus it would serve the purpose of providing at least 16-bit quality CRC, along with a unique CRC that cannot be trivially generated to spoof packets from a station.
I realize that, cryptographically speaking, a signature as small as 16 bits can be easily brute forced. However, similarly, a 16-bit CRC also has a fairly high probability of collisions. Unfortunately that is the limitation when dealing with data transfer at rates as potentially low as 300 baud, and typically at 1200 - 9600 baud. There is no luxury to transmit large signatures and checksums.
For critical information, such as an OTA software update, that data would be properly signed using standard methods with appropriate length bit lengths. Of course the higher level data can also be signed as well. My question is pertaining to the lower-levels of data exchange at the individual packet level, and adding at least some level of anti-spoofing that would also serve the same purpose as basic CRC.
The public and private keys can be pretty much any size, as the public keys would only need to be exchanged once for each pair of stations that wish to communicate. It is the individual packet signing I would like recommendations on.
Note that the entire payload cannot be encrypted, as that would be in violation of FCC regulations for Amateur Radio.
A method such as encrypting just the CRC using an asymmetrical encryption would not suffice, because not all packets are intended for consumption by a single station. Beacons and other broadcast packets are intended to be received by all listening stations. So encrypting the CRC so it can only be decoded by a single receiving station would only solve the issue for direct station-to-station communication and not more generally.